diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 991ac37df..edb5f2c4e 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -6,8 +6,8 @@
- [ ] The pull request is done against the latest development branch
- [ ] Only relevant files were touched
- [ ] Only one feature/fix was added per PR and the code change compiles without warnings
- - [ ] The code change is tested and works with Tasmota core ESP8266 V.2.7.6
- - [ ] The code change is tested and works with Tasmota core ESP32 V.3.0.0
+ - [ ] The code change is tested and works with Tasmota core ESP8266 V.2.7.7
+ - [ ] The code change is tested and works with Tasmota core ESP32 V.3.0.4
- [ ] I accept the [CLA](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md#contributor-license-agreement-cla).
_NOTE: The code change must pass CI tests. **Your PR cannot be merged unless tests pass**_
diff --git a/BUILDS.md b/BUILDS.md
index 4ba198ea5..db4a723ca 100644
--- a/BUILDS.md
+++ b/BUILDS.md
@@ -8,7 +8,7 @@ Note: the `minimal` variant is not listed as it shouldn't be used outside of the
| ------------------------- | ----- | ----- | ----- | ----- | ----- | ----- | --------------------------- |
| MY_LANGUAGE en_GB | x | x / x | x | x | x | x |
| USE_IMPROV | x | x / x | x | x | x | x |
-| USE_UFILESYS | - | - / x | - | - | - | - |
+| USE_UFILESYS | - | - / x | - | - | - | - | Every ESP8266 > 1MB |
| USE_ARDUINO_OTA | - | - / - | - | - | - | - |
| USE_DOMOTICZ | - | x / x | x | x | x | - |
| USE_HOME_ASSISTANT | - | - / - | - | - | - | - |
@@ -30,11 +30,14 @@ Note: the `minimal` variant is not listed as it shouldn't be used outside of the
| USE_SUNRISE | x | x / x | x | x | x | x |
| USE_RULES | x | x / x | x | x | x | x |
| USE_SCRIPT | - | - / - | - | - | - | - |
-| USE_EXPRESSION | - | - / x | - | - | - | - | Every ESP32 + ESP8266 > 1MB |
-| SUPPORT_IF_STATEMENT | - | - / x | - | - | - | - | Every ESP32 + ESP8266 > 1MB |
+| USE_EXPRESSION | - | x / x | - | - | - | - |
+| SUPPORT_IF_STATEMENT | - | x / x | - | - | - | - |
| USE_HOTPLUG | - | - / - | - | - | - | - |
| USE_PROMETHEUS | - | - / - | - | - | - | - |
| USE_PING | - | - / - | - | - | - | - |
+| USE_HDMI_CEC | - | - / - | - | - | - | - |
+| USE_MAGIC_SWITCH | - | - / x | - | - | - | - |
+| USE_GPIO_VIEWER | - | - / x | - | - | - | - |
| | | | | | | |
| **Feature or Sensor** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** |
| ROTARY_V1 | - | x / x | - | x | - | - |
@@ -105,6 +108,9 @@ Note: the `minimal` variant is not listed as it shouldn't be used outside of the
| USE_HTU | - | - / x | - | x | - | - |
| USE_BMP | - | - / x | - | x | - | - |
| USE_BME68X | - | - / x | - | x | - | - |
+| USE_AMSX915 | - | - / - | - | - | - | - |
+| USE_SPL06_007 | - | - / - | - | - | - | - |
+| USE_QMP6988 | - | - / - | - | - | - | - |
| USE_BH1750 | - | - / x | - | x | - | - |
| USE_VEML6070 | - | - / x | - | x | - | - |
| USE_ADS1115 | - | - / x | - | x | - | - |
@@ -192,11 +198,13 @@ Note: the `minimal` variant is not listed as it shouldn't be used outside of the
| USE_LUXV30B | - | - / - | - | - | - | - |
| USE_HMC5883L | - | - / - | - | - | - | - |
| USE_QMC5883L | - | - / - | - | - | - | - |
+| USE_MAX17043 | - | - / - | - | - | - | - |
| | | | | | | |
| **Feature or Sensor** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** |
-| USE_SPI | - | - / - | - | - | - | x |
+| USE_SPI | - | - / x | - | - | - | x |
| USE_RC522 | - | - / - | - | - | - | - |
| USE_CANSNIFFER | - | - / - | - | - | - | - |
+| USE_SPI_LORA | - | - / x | - | - | - | - |
| USE_MHZ19 | - | - / x | - | x | - | - |
| USE_SENSEAIR | - | - / x | - | x | - | - |
| USE_PMS5003 | - | - / x | - | x | - | - |
@@ -220,6 +228,9 @@ Note: the `minimal` variant is not listed as it shouldn't be used outside of the
| USE_LD2410 | - | - / - | - | - | - | - |
| USE_GM861 | - | - / - | - | - | - | - |
| USE_TCP_BRIDGE | - | - / - | - | - | - | - | zbbridge / zbbrdgpro |
+| USE_HC8 | - | - / - | - | - | - | - |
+| USE_PIPSOLAR | - | - / - | - | - | - | - |
+| USE_WOOLIIS | - | - / - | - | - | - | - |
| | | | | | | |
| USE_NRF24 | - | - / - | - | - | - | - |
| USE_MIBLE | - | - / - | - | - | - | - |
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7ef78cfd8..58f6e0d74 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,134 @@ All notable changes to this project will be documented in this file.
## [Released]
+## [14.2.0] 20240814
+- Release Rita
+
+## [14.1.0.4] 20240814
+### Added
+- Support for Sonoff iFan04-H using template (#16402)
+- Matter improve internal `inspect`for superclasses (#21824)
+- Matter support for split lights (`SetOption68 1` and `SetOption37 128`) (#21834)
+- Berry `webserver_async` (#21836)
+- NeoPool command `NPSetOption` to enabled/disable data validation/connection statistics (#21850)
+- Analog GPIO ``ADC Input`` with ``AdcGpio ,,,1`` provide direct light control
+- Analog GPIO ``ADC Voltage`` with ``AdcGpio ,,,`` provide energy monitoring with dc voltage
+- Analog GPIO ``ADC Current`` with ``AdcGpio ,,,`` provide energy monitoring with dc voltage
+- Berry new type "addr" to ctypes mapping (#21883)
+- Berry `file.savecode()` (#21884)
+- Berry `solidify.nocompact()` and reduce size of Matter UI (#21885)
+- Berry `zigbee.find()` (#21889)
+- Berry `zigbee.started()` (#21895)
+- Command ``AdcGpio `` to better support ADC configuration
+- Rule and Scripter xdrv sensor polling
+
+### Breaking Changed
+- Berry `energy` module support for 8 phases and move to pseudo-arrays (#21887)
+
+### Changed
+- Berry consolidated constants for solidified classes reduces Flash size (#2185)
+- Berry updated precompiled Windows binary (#21858)
+- Matter improve encoding of attributes to reduce flash size (#21864)
+- ESP32 platform update from 2024.07.11 to 2024.08.10 (#21893)
+- ESP32 Framework (Arduino Core) from v3.0.2 to v3.0.4 (#21893)
+- Refactored Analog driver to better support multiple channels
+- Zigbee loads device data early before MCU startup (#21917)
+- Rule and Scripter sensor polling
+- GUI name of Analog to ADC
+
+### Fixed
+- Berry `light.get` for separate RGB/CT (#21818)
+- Berry `bytes` setters and getters with negative offsets (#21835)
+- Berry `file.write()` raises an exception on failure (ex: disk full) (#21849)
+- Filesystem SD MMC free space display (#21869)
+
+### Removed
+- Berry internal: remove class from closure to simplify code (#21839)
+
+## [14.1.0.3] 20240722
+### Added
+- ESP32 support for power and energy limit checks, like ``MaxEnergy2`` per phase (#21695)
+- Berry `tasmota.rtc("config_time")` (#21698)
+- Berry `math.min()` and `math.max()` (#21705)
+- Berry `FUNC_ANY_KEY` event calling `any_key()` (#21708)
+- Berry `FUNC_BUTTON_MULTI_PRESSED` event and make `FUNC_BUTTON_PRESSED` called only on state changes and once per second (#21711)
+- Support for Sonoff POWCT Ring (#21131)
+- NeoPool data validation and communication statistics default enabled for ESP32 only (#21721)
+- `FUNC_BUTTON_PRESSED` now contains `press_counter` encoded in `XdrvMailbox.command_code` (#21724)
+- Berry `int64` added `low32()` and `high32()` methods, used in Matter (#21728)
+- Matter support for 'Generic Switch' based on Tasmota Buttons (#21731)
+- Berry cam module and img class (#21743)
+- Skip MQTT response if command is prefixed with underscore (#21740)
+- Skip MQTT response if commands are executed prefixed with ``Backlog2`` (no delay) or ``Backlog3`` (#21740)
+- Support for Wooliis Hall Effect Coulometer or Battery capacity monitor (#21732)
+
+### Changed
+- ESP32 support for energy margin checks, like ``MaxPower2`` per phase (#21695)
+- ESP32 TM1621 number overflow from "9999" to "12E3" (#21131)
+- ESP32 platform update from 2024.06.11 to 2024.07.10 (#21745)
+- ESP32 platform update from 2024.07.10 to 2024.07.11 (#21765)
+- Berry simplified `module persist` (#21812)
+
+### Fixed
+- Berry `bytes.resize()` for large sizes (#21716)
+- On universal display remove default backlight power if a single PWM channel is used for backlight. Regression from 14.0.0.1 (#21726)
+- ESP32 I2S fixes (#21770)
+- ESP32 Resistive Touch xpt for 2 spi busses (#21814)
+
+## [14.1.0.2] 20240627
+### Added
+- Support for Sonoff WTS01 temperature sensor using SerialBridge in ``SSerialMode 3``
+- Berry `classof` extended to class methods (#21615)
+- Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages (#21574)
+- Matter support for Rain sensor (#21633)
+- Matter internal debug option (#21634)
+- Matter Fan support (virtual only) (#21637)
+- Matter show event name in logs (#21649)
+- Matter full support of events (#21698)
+
+### Changed
+- SerialBridge command ``SSerialSend9`` replaced by ``SSerialMode``
+- SML replace vars in descriptor and line (#21622)
+- NeoPool using temperature as only frequently changing value for NPTeleperiod (#21628)
+- NeoPool make compiler setting available by `user_config_override.h` (#21645)
+- ESP32 MI32 improve parser (#21648)
+- ESP8266 platform update from 2024.01.01 to 2024.06.00 (#21668)
+- ESP8266 Framework (Arduino Core) from v2.7.6 to v2.7.7 (#21668)
+- Matter refactor reading of multiple attributes to reduce memory pressure (#21675)
+- ESP32 platform update from 2024.06.10 to 2024.06.11 (#21694)
+- ESP32 Framework (Arduino Core) from v3.0.1 to v3.0.2 (#21694)
+
+### Fixed
+- Matter interverted attributes 0xFFF9 and 0xFFFB (#21636)
+- Matter CASE Sigma1 resumption mode for faster reconnection (#21644)
+- Shutter MQTT on inverted shutter (#21663)
+- Scripter TCP server (#21660)
+- Matter TLV.U8 unsigned encoding (#21672)
+- Matter resumption final ack (#21673)
+- ESP32 allow use of UART0 with enabled USB_CDC_CONSOLE (#21496)
+
+## [14.1.0.1] 20240611
+### Added
+- Berry solidification of `bytes` instances (#21558)
+- Matter support for Air Quality sensors (#21559)
+- Matter support for bridged Air Quality (#21597)
+- HASPmota rounds to nearest int values passed as 'real' (#21599)
+- Berry automatic rounding of float to int when calling C mapped functions (#21601)
+- Berry add `math.round` (#21602)
+- Support for QMP6988 temperature and pressure sensor
+
+### Changed
+- Matter refactoring of bridged devices (#21575)
+- ESP32 Core3 platform update from 2024.05.13 to 2024.06.10 (#21569)
+- Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain``
+- Matter filter suffix automatically added for sensors (#21589)
+- Display timing splash screen with display modes 1 to 5
+- ESP32 MI32 refactoring, bugfixes, generic device scanning (#21603)
+- Allow receive or send using SerialBridge
+
+### Fixed
+- Berry `input()` returns empty string and does not crash (#21565)
+
## [14.1.0] 20240603
- Release Rachel
diff --git a/CODE_OWNERS.md b/CODE_OWNERS.md
index 98bb523aa..c6b33cdf6 100644
--- a/CODE_OWNERS.md
+++ b/CODE_OWNERS.md
@@ -139,7 +139,7 @@ In addition to @arendst the following code is mainly owned by:
| xsns_25_spl06-007_sensor | @rai68
| xsns_26_lm75ad | Andre Thomas
| xsns_27_apds9960 | Shawn Hymel
-| xsns_28 |
+| xsns_28_qmp6988 | @arendst
| xsns_29_mcp230xx | Andre Thomas
| xsns_30_mpr121 | Rene 'Renne' Bartsch
| xsns_31_ccs811 | Gerhard Mutz
@@ -229,6 +229,7 @@ In addition to @arendst the following code is mainly owned by:
| xsns_112_ens210 | Christoph Friese
| xsns_113_hc8 | Daniel Maier
| xsns_114_amsx915 | Bastian Urschel
+| xsns_115_wooliis | Luca Melette
| |
| xsns_127_esp32_sensors | @arendst
| |
diff --git a/I2CDEVICES.md b/I2CDEVICES.md
index afd853929..53167f88f 100644
--- a/I2CDEVICES.md
+++ b/I2CDEVICES.md
@@ -32,7 +32,7 @@ Index | Define | Driver | Device | Address(es) | Bus2 | Descrip
13 | USE_ADS1115 | xsns_12 | ADS1115 | 0x48 - 0x4B | Yes | 4-channel 16-bit A/D converter
14 | USE_INA219 | xsns_13 | INA219 | 0x40 - 0x41, 0x44 - 0x45 | | Low voltage current sensor
15 | USE_SHT3X | xsns_14 | SHT3X | 0x44 - 0x45 | Yes | Temperature and Humidity sensor
- 15 | USE_SHT3X | xsns_14 | SHT4X | 0x44 - 0x45 | Yes | Temperature and Humidity sensor
+ 15 | USE_SHT3X | xsns_14 | SHT4X | 0x44 - 0x46 | Yes | Temperature and Humidity sensor
15 | USE_SHT3X | xsns_14 | SHTCX | 0x70 | Yes | Temperature and Humidity sensor
16 | USE_TSL2561 | xsns_16 | TSL2561 | 0x29, 0x39, 0x49 | | Light intensity sensor
17 | USE_MGS | xsns_19 | Grove | 0x04 | | Multichannel gas sensor
@@ -123,7 +123,7 @@ Index | Define | Driver | Device | Address(es) | Bus2 | Descrip
83 | USE_MAX17043 | xsns_110 | MAX17043 | 0x36 | | Fuel-gauge for 3.7 Volt Lipo battery
84 | USE_ENS16x | xsns_111 | ENS16x | 0x52 - 0x53 | | Gas (TVOC, eCO2) and air quality sensor
85 | USE_ENS210 | xsns_112 | ENS210 | 0x43 - 0x44 | | Temperature and humidity sensor
- 86 | USE_AMSX915 | xsns_114 | AMS5915 | 0x28 | | Pressure (absolute/differential) and temperature sensor
86 | USE_AMSX915 | xsns_114 | AMS6915 | 0x28 | | Pressure (absolute/differential) and temperature sensor
- 87 | USE_SPL06_007 | xsns_25 | SPL06-007 | 0x76 | | Pressure and temperature sensor
+ 87 | USE_SPL06_007 | xsns_25 | SPL06-007 | 0x76 | | Pressure and temperature sensor
+ 88 | USE_QMP6988 | xsns_28 | QMP6988 | 0x56, 0x70 | Yes | Pressure and temperature sensor
NOTE: Bus2 supported on ESP32 only.
diff --git a/RELEASENOTES.md b/RELEASENOTES.md
index d2588d274..f0f395004 100644
--- a/RELEASENOTES.md
+++ b/RELEASENOTES.md
@@ -34,13 +34,13 @@ While fallback or downgrading is common practice it was never supported due to S
## Supported Core versions
-This release will be supported from ESP8266/Arduino library Core version **2.7.6** due to reported security and stability issues on previous Core version. This will also support gzipped binaries.
+This release will be supported from ESP8266/Arduino library Core version **2.7.7** due to reported security and stability issues on previous Core version. This will also support gzipped binaries.
-This release will be supported from ESP32/Arduino library Core version **3.0.0**.
+This release will be supported from ESP32/Arduino library Core version **3.0.4**.
-Support of ESP8266 Core versions before 2.7.6 and ESP32 Core versions before 3.0.0 have been removed.
+Support of ESP8266 Core versions before 2.7.7 and ESP32 Core versions before 3.0.4 have been removed.
-### Known issues with v14.1.0
+### Known issues with v14.2.0
Due to the change from ESP32 Arduino Core2/IDF4 to Arduino Core3/IDF5 not all functionality has been restored. The following features are known not to work on ESP32:
- Wifi Range Extender [#21200](https://github.com/arendst/Tasmota/issues/21200)
@@ -60,7 +60,7 @@ Easy initial installation of Tasmota can be performed using the [Tasmota WebInst
## Provided Binary Downloads
### ESP8266 or ESP8285 based
-The following binary downloads have been compiled with ESP8266/Arduino library core version **2.7.6**.
+The following binary downloads have been compiled with ESP8266/Arduino library core version **2.7.7**.
- **tasmota.bin** = The Tasmota version with most drivers for 1M+ flash. **RECOMMENDED RELEASE BINARY**
- **tasmota-4M.bin** = The Tasmota version with most drivers and filesystem for 4M+ flash.
@@ -80,12 +80,12 @@ Latest released binaries can be downloaded from
- http://ota.tasmota.com/tasmota/release
Historical binaries can be downloaded from
-- http://ota.tasmota.com/tasmota/release-14.1.0
+- http://ota.tasmota.com/tasmota/release-14.2.0
The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota/release/tasmota.bin.gz``
### ESP32, ESP32-C2, ESP32-C3, ESP32-C6, ESP32-S2 and ESP32-S3 based
-The following binary downloads have been compiled with ESP32/Arduino library core version **3.0.0**.
+The following binary downloads have been compiled with ESP32/Arduino library core version **3.0.4**.
- **tasmota32.bin** = The Tasmota version with most drivers including additional sensors and KNX for 4M+ flash. **RECOMMENDED RELEASE BINARY**
- **tasmota32solo1.bin** = The Tasmota version with most drivers including additional sensors and KNX for single core ESP32 and 4M+ flash.
@@ -109,7 +109,7 @@ Latest released binaries can be downloaded from
- https://ota.tasmota.com/tasmota32/release
Historical binaries can be downloaded from
-- https://ota.tasmota.com/tasmota32/release-14.1.0
+- https://ota.tasmota.com/tasmota32/release-14.2.0
The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasmota.com/tasmota32/release/tasmota32.bin``
@@ -119,47 +119,100 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm
[Complete list](BUILDS.md) of available feature and sensors.
-## Changelog v14.1.0 Rachel
+## Changelog v14.2.0 Rita
### Added
-- Optional command ``WebRun`` (as WebQuery extension) [#21364](https://github.com/arendst/Tasmota/issues/21364)
-- Support for Knx dimmer and color [#21434](https://github.com/arendst/Tasmota/issues/21434)
-- SML FastExit for binary SML parsing [#21497](https://github.com/arendst/Tasmota/issues/21497)
-- Berry add reuse of methods for interface-like code reuse [#21500](https://github.com/arendst/Tasmota/issues/21500)
-- Support for Matter 1.3 Water leak detectors [#21456](https://github.com/arendst/Tasmota/issues/21456)
+- Command ``AdcGpio `` to better support ADC configuration
+- Support for QMP6988 temperature and pressure sensor
+- Support for Sonoff WTS01 temperature sensor using SerialBridge in ``SSerialMode 3``
+- Support for Sonoff iFan04-H using template [#16402](https://github.com/arendst/Tasmota/issues/16402)
+- Support for Sonoff POWCT Ring [#21131](https://github.com/arendst/Tasmota/issues/21131)
+- Support for Wooliis Hall Effect Coulometer or Battery capacity monitor [#21732](https://github.com/arendst/Tasmota/issues/21732)
+- Analog GPIO ``ADC Input`` with ``AdcGpio ,,,1`` provide direct light control
+- Analog GPIO ``ADC Voltage`` with ``AdcGpio ,,,`` provide energy monitoring with dc voltage
+- Analog GPIO ``ADC Current`` with ``AdcGpio ,,,`` provide energy monitoring with dc voltage
+- Rule and Scripter xdrv sensor polling
+- Skip MQTT response if command is prefixed with underscore [#21740](https://github.com/arendst/Tasmota/issues/21740)
+- Skip MQTT response if commands are executed prefixed with ``Backlog2`` (no delay) or ``Backlog3`` [#21740](https://github.com/arendst/Tasmota/issues/21740)
+- Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages [#21574](https://github.com/arendst/Tasmota/issues/21574)
+- NeoPool command `NPSetOption` to enabled/disable data validation/connection statistics [#21850](https://github.com/arendst/Tasmota/issues/21850)
+- NeoPool data validation and communication statistics default enabled for ESP32 only [#21721](https://github.com/arendst/Tasmota/issues/21721)
+- ESP32 support for power and energy limit checks, like ``MaxEnergy2`` per phase [#21695](https://github.com/arendst/Tasmota/issues/21695)
+- Berry solidification of `bytes` instances [#21558](https://github.com/arendst/Tasmota/issues/21558)
+- Berry automatic rounding of float to int when calling C mapped functions [#21601](https://github.com/arendst/Tasmota/issues/21601)
+- Berry `math.round` [#21602](https://github.com/arendst/Tasmota/issues/21602)
+- Berry `classof` extended to class methods [#21615](https://github.com/arendst/Tasmota/issues/21615)
+- Berry `tasmota.rtc("config_time")` [#21698](https://github.com/arendst/Tasmota/issues/21698)
+- Berry `math.min()` and `math.max()` [#21705](https://github.com/arendst/Tasmota/issues/21705)
+- Berry `FUNC_ANY_KEY` event calling `any_key()` [#21708](https://github.com/arendst/Tasmota/issues/21708)
+- Berry `FUNC_BUTTON_MULTI_PRESSED` event and make `FUNC_BUTTON_PRESSED` called only on state changes and once per second [#21711](https://github.com/arendst/Tasmota/issues/21711)
+- Berry `int64` added `low32()` and `high32()` methods, used in Matter [#21728](https://github.com/arendst/Tasmota/issues/21728)
+- Berry `webserver_async` [#21836](https://github.com/arendst/Tasmota/issues/21836)
+- Berry cam module and img class [#21743](https://github.com/arendst/Tasmota/issues/21743)
+- Berry new type "addr" to ctypes mapping [#21883](https://github.com/arendst/Tasmota/issues/21883)
+- Berry `file.savecode()` [#21884](https://github.com/arendst/Tasmota/issues/21884)
+- Berry `solidify.nocompact()` and reduce size of Matter UI [#21885](https://github.com/arendst/Tasmota/issues/21885)
+- Berry `zigbee.find()` [#21889](https://github.com/arendst/Tasmota/issues/21889)
+- Berry `zigbee.started()` [#21895](https://github.com/arendst/Tasmota/issues/21895)
+- HASPmota rounds to nearest int values passed as 'real' [#21599](https://github.com/arendst/Tasmota/issues/21599)
+- Matter support for Air Quality sensors [#21559](https://github.com/arendst/Tasmota/issues/21559)
+- Matter support for bridged Air Quality [#21597](https://github.com/arendst/Tasmota/issues/21597)
+- Matter internal debug option [#21634](https://github.com/arendst/Tasmota/issues/21634)
+- Matter Fan support (virtual only) [#21637](https://github.com/arendst/Tasmota/issues/21637)
+- Matter show event name in logs [#21649](https://github.com/arendst/Tasmota/issues/21649)
+- Matter full support of events [#21698](https://github.com/arendst/Tasmota/issues/21698)
+- Matter support for 'Generic Switch' based on Tasmota Buttons [#21731](https://github.com/arendst/Tasmota/issues/21731)
+- Matter improve internal `inspect`for superclasses [#21824](https://github.com/arendst/Tasmota/issues/21824)
+- Matter support for split lights (`SetOption68 1` and `SetOption37 128`) [#21834](https://github.com/arendst/Tasmota/issues/21834)
+
+### Breaking Changed
+- Berry `energy` module support for 8 phases and move to pseudo-arrays [#21887](https://github.com/arendst/Tasmota/issues/21887)
### Changed
-- ESP32 Core3 platform update from 2024.05.11 to 2024.05.13 [#21524](https://github.com/arendst/Tasmota/issues/21524)
-- GPIOViewer from v1.5.2 to v1.5.4
-- On universal display remove default backlight power if a PWM channel is used for backlight
-- TCP bridge increased baudrate selection [#21528](https://github.com/arendst/Tasmota/issues/21528)
-- Support W5500 SPI ethernet using four SPI GPIOs only without IRQ and RESET
-- ESP32 compiler option from `target-align` to `no-target-align` [#21407](https://github.com/arendst/Tasmota/issues/21407)
-- ESP32 I2S audio improvements [#21433](https://github.com/arendst/Tasmota/issues/21433)
-- Berry binary compiled with gcc [#21426](https://github.com/arendst/Tasmota/issues/21426)
-- Berry allow easy solidification of external Berry [#21430](https://github.com/arendst/Tasmota/issues/21430)
-- Berry change internal storage of parent class for methods [#21490](https://github.com/arendst/Tasmota/issues/21490)
-- Berry coc parser keeps order of variables [#21542](https://github.com/arendst/Tasmota/issues/21542)
+- ESP8266 platform update from 2024.01.01 to 2024.06.00 [#21668](https://github.com/arendst/Tasmota/issues/21668)
+- ESP8266 Framework (Arduino Core) from v2.7.6 to v2.7.7 [#21668](https://github.com/arendst/Tasmota/issues/21668)
+- ESP32 platform update from 2024.05.13 to 2024.08.10 [#21893](https://github.com/arendst/Tasmota/issues/21893)
+- ESP32 Framework (Arduino Core) from v3.0.0 to v3.0.4 [#21893](https://github.com/arendst/Tasmota/issues/21893)
+- Rule and Scripter sensor polling
+- Refactored Analog driver to better support multiple channels
+- GUI name of Analog to ADC
+- Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain``
+- Display timing splash screen with display modes 1 to 5
+- Allow receive or send using SerialBridge
+- SerialBridge command ``SSerialSend9`` replaced by ``SSerialMode``
+- SML replace vars in descriptor and line [#21622](https://github.com/arendst/Tasmota/issues/21622)
+- NeoPool using temperature as only frequently changing value for NPTeleperiod [#21628](https://github.com/arendst/Tasmota/issues/21628)
+- NeoPool make compiler setting available by `user_config_override.h` [#21645](https://github.com/arendst/Tasmota/issues/21645)
+- ESP32 support for energy margin checks, like ``MaxPower2`` per phase [#21695](https://github.com/arendst/Tasmota/issues/21695)
+- ESP32 MI32 refactoring, bugfixes, generic device scanning [#21603](https://github.com/arendst/Tasmota/issues/21603)
+- ESP32 MI32 improve parser [#21648](https://github.com/arendst/Tasmota/issues/21648)
+- ESP32 TM1621 number overflow from "9999" to "12E3" [#21131](https://github.com/arendst/Tasmota/issues/21131)
+- Zigbee loads device data early before MCU startup [#21917](https://github.com/arendst/Tasmota/issues/21917)
+- Berry updated precompiled Windows binary [#21858](https://github.com/arendst/Tasmota/issues/21858)
+- Berry simplified `module persist` [#21812](https://github.com/arendst/Tasmota/issues/21812)
+- Berry consolidated constants for solidified classes reduces Flash size [#2185](https://github.com/arendst/Tasmota/issues/2185)
+- Matter refactoring of bridged devices [#21575](https://github.com/arendst/Tasmota/issues/21575)
+- Matter filter suffix automatically added for sensors [#21589](https://github.com/arendst/Tasmota/issues/21589)
+- Matter support for Rain sensor [#21633](https://github.com/arendst/Tasmota/issues/21633)
+- Matter refactor reading of multiple attributes to reduce memory pressure [#21675](https://github.com/arendst/Tasmota/issues/21675)
+- Matter improve encoding of attributes to reduce flash size [#21864](https://github.com/arendst/Tasmota/issues/21864)
### Fixed
-- Domoticz re-subscribe on MQTT reconnect. Regression from v13.4.0.3 [#21281](https://github.com/arendst/Tasmota/issues/21281)
-- Watchdog restart or freeze if ``displaytext`` is more than 128 characters [#21401](https://github.com/arendst/Tasmota/issues/21401)
-- Wrong timeout in `WebQuery` and `webclient` since Core3 [#21442](https://github.com/arendst/Tasmota/issues/21442)
-- uDisplay Parallel display on Core3 [#21529](https://github.com/arendst/Tasmota/issues/21529)
-- UfsServe watchdog on large folder [#21486](https://github.com/arendst/Tasmota/issues/21486)
-- SML compile error when median-filter is disabled [#21495](https://github.com/arendst/Tasmota/issues/21495)
-- Hydreon RG15 malformed JSON string [#21508](https://github.com/arendst/Tasmota/issues/21508)
-- Telegram TLS fingerprint, remove CA validation [#21514](https://github.com/arendst/Tasmota/issues/21514)
-- Zigbee crash when removing `ZbName` [#21449](https://github.com/arendst/Tasmota/issues/21449)
-- Avoid connection errors when switching to safeboot to upload OTA firmware [#21428](https://github.com/arendst/Tasmota/issues/21428)
-- ESP32 slow response when using UDP as in emulation [#21470](https://github.com/arendst/Tasmota/issues/21470)
-- ESP32 BLE fix scanning [#21451](https://github.com/arendst/Tasmota/issues/21451)
-- ESP32 I2S multiple fixes [#21511](https://github.com/arendst/Tasmota/issues/21511)
-- I2S APLL not supported on all SOCs [#21483](https://github.com/arendst/Tasmota/issues/21483)
-- Webradio crash with invalid url [#21446](https://github.com/arendst/Tasmota/issues/21446)
-- Berry Leds matrix alternate more and error about 'bri' attribute [#21431](https://github.com/arendst/Tasmota/issues/21431)
-- LVGL exception when using tjpegd [#21544](https://github.com/arendst/Tasmota/issues/21544)
-- Matter auto-fix IPv6 link-local zone id when network reconnects [#21494](https://github.com/arendst/Tasmota/issues/21494)
+- On universal display remove default backlight power if a single PWM channel is used for backlight. Regression from 14.0.0.1 [#21726](https://github.com/arendst/Tasmota/issues/21726)
+- Shutter MQTT on inverted shutter [#21663](https://github.com/arendst/Tasmota/issues/21663)
+- Scripter TCP server [#21660](https://github.com/arendst/Tasmota/issues/21660)
+- Filesystem SD MMC free space display [#21869](https://github.com/arendst/Tasmota/issues/21869)
+- ESP32 allow use of UART0 with enabled USB_CDC_CONSOLE [#21496](https://github.com/arendst/Tasmota/issues/21496)
+- ESP32 I2S fixes [#21770](https://github.com/arendst/Tasmota/issues/21770)
+- ESP32 Resistive Touch xpt for 2 spi busses [#21814](https://github.com/arendst/Tasmota/issues/21814)
+- Berry `input()` returns empty string and does not crash [#21565](https://github.com/arendst/Tasmota/issues/21565)
+- Berry `bytes.resize()` for large sizes [#21716](https://github.com/arendst/Tasmota/issues/21716)
+- Berry `light.get` for separate RGB/CT [#21818](https://github.com/arendst/Tasmota/issues/21818)
+- Berry `bytes` setters and getters with negative offsets [#21835](https://github.com/arendst/Tasmota/issues/21835)
+- Berry `file.write()` raises an exception on failure (ex: disk full) [#21849](https://github.com/arendst/Tasmota/issues/21849)
+- Matter interverted attributes 0xFFF9 and 0xFFFB [#21636](https://github.com/arendst/Tasmota/issues/21636)
+- Matter CASE Sigma1 resumption mode for faster reconnection [#21644](https://github.com/arendst/Tasmota/issues/21644)
+- Matter TLV.U8 unsigned encoding [#21672](https://github.com/arendst/Tasmota/issues/21672)
+- Matter resumption final ack [#21673](https://github.com/arendst/Tasmota/issues/21673)
### Removed
-- Support of old insecure fingerprint algorithm. Deprecated since v8.4.0 [#21417](https://github.com/arendst/Tasmota/issues/21417)
-- Deprecated code from drivers, `USE_TTGO_WATCH` and `USE_M5STACK_CORE2` [#21533](https://github.com/arendst/Tasmota/issues/21533)
+- Berry internal: remove class from closure to simplify code [#21839](https://github.com/arendst/Tasmota/issues/21839)
diff --git a/boards/esp32c3.json b/boards/esp32c3.json
index 5f77c6990..0dd61b4f9 100644
--- a/boards/esp32c3.json
+++ b/boards/esp32c3.json
@@ -14,10 +14,6 @@
"bluetooth"
],
"debug": {
- "default_tool": "esp-builtin",
- "onboard_tools": [
- "esp-builtin"
- ],
"openocd_target": "esp32c3.cfg"
},
"frameworks": [
diff --git a/boards/esp32c6.json b/boards/esp32c6.json
index dd5515743..c87d992a8 100644
--- a/boards/esp32c6.json
+++ b/boards/esp32c6.json
@@ -14,10 +14,6 @@
"bluetooth"
],
"debug": {
- "default_tool": "esp-builtin",
- "onboard_tools": [
- "esp-builtin"
- ],
"openocd_target": "esp32c6.cfg"
},
"frameworks": [
diff --git a/boards/esp32s3-opi_opi.json b/boards/esp32s3-opi_opi.json
index 25541b95d..f8f99cc82 100644
--- a/boards/esp32s3-opi_opi.json
+++ b/boards/esp32s3-opi_opi.json
@@ -8,12 +8,6 @@
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "dout",
- "hwids": [
- [
- "0x303A",
- "0x1001"
- ]
- ],
"mcu": "esp32s3",
"variant": "esp32s3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
@@ -24,10 +18,6 @@
"ethernet"
],
"debug": {
- "default_tool": "esp-builtin",
- "onboard_tools": [
- "esp-builtin"
- ],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
diff --git a/boards/esp32s3-opi_opi_120.json b/boards/esp32s3-opi_opi_120.json
index ab9ef01fb..771dc90c0 100644
--- a/boards/esp32s3-opi_opi_120.json
+++ b/boards/esp32s3-opi_opi_120.json
@@ -20,10 +20,6 @@
"ethernet"
],
"debug": {
- "default_tool": "esp-builtin",
- "onboard_tools": [
- "esp-builtin"
- ],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
diff --git a/boards/esp32s3-qio_opi.json b/boards/esp32s3-qio_opi.json
index c005158db..6f4754ead 100644
--- a/boards/esp32s3-qio_opi.json
+++ b/boards/esp32s3-qio_opi.json
@@ -8,12 +8,6 @@
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
- "hwids": [
- [
- "0x303A",
- "0x1001"
- ]
- ],
"mcu": "esp32s3",
"variant": "esp32s3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
@@ -24,10 +18,6 @@
"ethernet"
],
"debug": {
- "default_tool": "esp-builtin",
- "onboard_tools": [
- "esp-builtin"
- ],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
diff --git a/boards/esp32s3-qio_opi_120.json b/boards/esp32s3-qio_opi_120.json
index 42589ce05..0a4704a92 100644
--- a/boards/esp32s3-qio_opi_120.json
+++ b/boards/esp32s3-qio_opi_120.json
@@ -20,10 +20,6 @@
"ethernet"
],
"debug": {
- "default_tool": "esp-builtin",
- "onboard_tools": [
- "esp-builtin"
- ],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
diff --git a/boards/esp32s3-qio_qspi.json b/boards/esp32s3-qio_qspi.json
index eb834f0c2..6a1e38906 100644
--- a/boards/esp32s3-qio_qspi.json
+++ b/boards/esp32s3-qio_qspi.json
@@ -8,12 +8,6 @@
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
- "hwids": [
- [
- "0x303A",
- "0x1001"
- ]
- ],
"mcu": "esp32s3",
"variant": "esp32s3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
@@ -24,10 +18,6 @@
"ethernet"
],
"debug": {
- "default_tool": "esp-builtin",
- "onboard_tools": [
- "esp-builtin"
- ],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
diff --git a/boards/esp32s3-qio_qspi_120.json b/boards/esp32s3-qio_qspi_120.json
index b1d89db91..1c1968916 100644
--- a/boards/esp32s3-qio_qspi_120.json
+++ b/boards/esp32s3-qio_qspi_120.json
@@ -20,10 +20,6 @@
"ethernet"
],
"debug": {
- "default_tool": "esp-builtin",
- "onboard_tools": [
- "esp-builtin"
- ],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
diff --git a/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp
index 3871fc33b..2200e06ba 100644
--- a/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp
+++ b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.cpp
@@ -150,9 +150,9 @@ void TasmotaSerial::setTransmitEnablePin(int tx_enable_pin) {
#ifdef ESP32
bool TasmotaSerial::freeUart(void) {
- for (uint32_t i = SOC_UART_NUM -1; i >= 0; i--) {
+ for (uint32_t i = SOC_UART_HP_NUM -1; i >= 0; i--) {
if (0 == bitRead(tasmota_serial_uart_bitmap, i)) {
- m_uart = i;
+ m_uart = uart_port_t(i);
bitSet(tasmota_serial_uart_bitmap, m_uart);
return true;
}
diff --git a/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.h b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.h
index 230dd36ff..b380bec69 100644
--- a/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.h
+++ b/lib/default/TasmotaSerial-3.6.0/src/TasmotaSerial.h
@@ -33,6 +33,12 @@
#ifdef ESP32
#include
+
+// IDF 5.2 has changed counting UART channels, SOC_UART_NUM includes now LP UARTS too for ESP32-C6 and -P4
+#ifndef SOC_UART_HP_NUM
+#define SOC_UART_HP_NUM SOC_UART_NUM // Set new define SOC_UART_HP_NUM in pre IDF 5.2 to SOC_UART_NUM
+#endif
+
#endif
class TasmotaSerial : public Stream {
@@ -109,7 +115,7 @@ class TasmotaSerial : public Stream {
uint32_t m_speed;
uint32_t m_config;
HardwareSerial *TSerial;
- int m_uart = 0;
+ uart_port_t m_uart = uart_port_t(0);
#endif
};
diff --git a/lib/default/headers/camera_pins.h b/lib/default/headers/camera_pins.h
index 6640b0905..d274e664c 100644
--- a/lib/default/headers/camera_pins.h
+++ b/lib/default/headers/camera_pins.h
@@ -1,4 +1,3 @@
-
#if defined(CAMERA_MODEL_WROVER_KIT)
#define PWDN_GPIO_NUM -1
#define RESET_GPIO_NUM -1
@@ -14,6 +13,7 @@
#define Y4_GPIO_NUM 18
#define Y3_GPIO_NUM 5
#define Y2_GPIO_NUM 4
+
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 23
#define PCLK_GPIO_NUM 22
@@ -33,12 +33,12 @@
#define Y4_GPIO_NUM 14
#define Y3_GPIO_NUM 13
#define Y2_GPIO_NUM 34
+
#define VSYNC_GPIO_NUM 5
#define HREF_GPIO_NUM 27
#define PCLK_GPIO_NUM 25
#elif defined(CAMERA_MODEL_ESP32S3_EYE)
-
#define PWDN_GPIO_NUM -1
#define RESET_GPIO_NUM -1
#define XCLK_GPIO_NUM 15
@@ -73,6 +73,7 @@
#define Y4_GPIO_NUM 34
#define Y3_GPIO_NUM 35
#define Y2_GPIO_NUM 32
+
#define VSYNC_GPIO_NUM 22
#define HREF_GPIO_NUM 26
#define PCLK_GPIO_NUM 21
@@ -92,6 +93,7 @@
#define Y4_GPIO_NUM 34
#define Y3_GPIO_NUM 35
#define Y2_GPIO_NUM 32
+
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 26
#define PCLK_GPIO_NUM 21
@@ -111,6 +113,7 @@
#define Y4_GPIO_NUM 34
#define Y3_GPIO_NUM 35
#define Y2_GPIO_NUM 32
+
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 26
#define PCLK_GPIO_NUM 21
@@ -130,6 +133,7 @@
#define Y4_GPIO_NUM 34
#define Y3_GPIO_NUM 35
#define Y2_GPIO_NUM 17
+
#define VSYNC_GPIO_NUM 22
#define HREF_GPIO_NUM 26
#define PCLK_GPIO_NUM 21
@@ -149,6 +153,7 @@
#define Y4_GPIO_NUM 34
#define Y3_GPIO_NUM 35
#define Y2_GPIO_NUM 32
+
#define VSYNC_GPIO_NUM 22
#define HREF_GPIO_NUM 26
#define PCLK_GPIO_NUM 21
@@ -168,6 +173,7 @@
#define Y4_GPIO_NUM 19
#define Y3_GPIO_NUM 18
#define Y2_GPIO_NUM 5
+
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 23
#define PCLK_GPIO_NUM 22
@@ -187,6 +193,7 @@
#define Y4_GPIO_NUM 4
#define Y3_GPIO_NUM 14
#define Y2_GPIO_NUM 5
+
#define VSYNC_GPIO_NUM 27
#define HREF_GPIO_NUM 25
#define PCLK_GPIO_NUM 19
@@ -206,6 +213,7 @@
#define Y4_GPIO_NUM 14
#define Y3_GPIO_NUM 13
#define Y2_GPIO_NUM 34
+
#define VSYNC_GPIO_NUM 5
#define HREF_GPIO_NUM 27
#define PCLK_GPIO_NUM 25
@@ -225,6 +233,7 @@
#define Y4_GPIO_NUM 14
#define Y3_GPIO_NUM 13
#define Y2_GPIO_NUM 34
+
#define VSYNC_GPIO_NUM 5
#define HREF_GPIO_NUM 27
#define PCLK_GPIO_NUM 25
@@ -244,6 +253,7 @@
#define Y4_GPIO_NUM 4
#define Y3_GPIO_NUM 14
#define Y2_GPIO_NUM 5
+
#define VSYNC_GPIO_NUM 27
#define HREF_GPIO_NUM 25
#define PCLK_GPIO_NUM 19
@@ -263,6 +273,7 @@
#define Y4_GPIO_NUM 4
#define Y3_GPIO_NUM 14
#define Y2_GPIO_NUM 5
+
#define VSYNC_GPIO_NUM 27
#define HREF_GPIO_NUM 25
#define PCLK_GPIO_NUM 19
@@ -282,6 +293,7 @@
#define Y4_GPIO_NUM 26
#define Y3_GPIO_NUM 13
#define Y2_GPIO_NUM 34
+
#define VSYNC_GPIO_NUM 5
#define HREF_GPIO_NUM 27
#define PCLK_GPIO_NUM 25
@@ -302,12 +314,12 @@
#define Y4_GPIO_NUM 8
#define Y3_GPIO_NUM 9
#define Y2_GPIO_NUM 11
+
#define VSYNC_GPIO_NUM 6
#define HREF_GPIO_NUM 7
#define PCLK_GPIO_NUM 13
#elif defined(CAMERA_MODEL_TTGO_T_CAM_SIM)
-
#define PWDN_GPIO_NUM -1
#define RESET_GPIO_NUM 18
#define XCLK_GPIO_NUM 14
@@ -322,6 +334,7 @@
#define Y4_GPIO_NUM 8
#define Y3_GPIO_NUM 9
#define Y2_GPIO_NUM 11
+
#define VSYNC_GPIO_NUM 6
#define HREF_GPIO_NUM 7
#define PCLK_GPIO_NUM 13
@@ -332,6 +345,27 @@
#define PCIE_TX_PIN 45
#define PCIE_RX_PIN 46
#define PCIE_LED_PIN 21
+
+#elif defined(CAMERA_MODEL_XIAO_ESP32S3_SENSE)
+#define PWDN_GPIO_NUM -1
+#define RESET_GPIO_NUM -1
+#define XCLK_GPIO_NUM 10
+#define SIOD_GPIO_NUM 40
+#define SIOC_GPIO_NUM 39
+
+#define Y9_GPIO_NUM 48
+#define Y8_GPIO_NUM 11
+#define Y7_GPIO_NUM 12
+#define Y6_GPIO_NUM 14
+#define Y5_GPIO_NUM 16
+#define Y4_GPIO_NUM 18
+#define Y3_GPIO_NUM 17
+#define Y2_GPIO_NUM 15
+
+#define VSYNC_GPIO_NUM 38
+#define HREF_GPIO_NUM 47
+#define PCLK_GPIO_NUM 13
+
#else
#define PWDN_GPIO_NUM -1
#define RESET_GPIO_NUM -1
@@ -347,6 +381,7 @@
#define Y4_GPIO_NUM -1
#define Y3_GPIO_NUM -1
#define Y2_GPIO_NUM -1
+
#define VSYNC_GPIO_NUM -1
#define HREF_GPIO_NUM -1
#define PCLK_GPIO_NUM -1
diff --git a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h
index 3abe7800b..a40e28f9f 100644
--- a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h
+++ b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h
@@ -36,7 +36,7 @@ typedef struct LVGL_PARAMS {
uint8_t swap_color : 1;
uint8_t async_dma : 1; // force DMA completion before returning, avoid conflict with other devices on same bus. If set you should make sure the display is the only device on the bus
uint8_t busy_invert : 1;
- uint8_t resvd_2 : 1;
+ uint8_t invert_bw : 1;
uint8_t resvd_3 : 1;
uint8_t resvd_4 : 1;
uint8_t resvd_5 : 1;
diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp
index e24b0ab42..194d85afe 100755
--- a/lib/lib_display/UDisplay/uDisplay.cpp
+++ b/lib/lib_display/UDisplay/uDisplay.cpp
@@ -30,6 +30,7 @@
#include "tasmota_options.h"
+
extern int Cache_WriteBack_Addr(uint32_t addr, uint32_t size);
@@ -290,6 +291,10 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) {
col_type = uCOLOR_BW;
} else {
col_type = uCOLOR_COLOR;
+ if (bpp == 16) {
+ fg_col = GetColorFromIndex(fg_col);
+ bg_col = GetColorFromIndex(bg_col);
+ }
}
str2c(&lp1, ibuff, sizeof(ibuff));
if (!strncmp(ibuff, "I2C", 3)) {
@@ -368,11 +373,9 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) {
splash_font = next_val(&lp1);
splash_size = next_val(&lp1);
fg_col = next_val(&lp1);
- if (bpp == 16) {
- fg_col = GetColorFromIndex(fg_col);
- }
bg_col = next_val(&lp1);
if (bpp == 16) {
+ fg_col = GetColorFromIndex(fg_col);
bg_col = GetColorFromIndex(bg_col);
}
splash_xp = next_val(&lp1);
@@ -705,6 +708,11 @@ void UfsCheckSDCardInit(void);
}
#endif
+ if ((epcoffs_full || epcoffs_part) && !(lutfsize || lutpsize)) {
+ // no lutfsize or lutpsize, but epcoffs_full or epcoffs_part
+ ep_mode = 3;
+ }
+
#ifdef UDSP_DEBUG
Serial.printf("Device : %s\n", dname);
Serial.printf("xs : %d\n", gxs);
@@ -905,7 +913,7 @@ uint16_t index = 0;
SPI_CS_LOW
iob = dsp_cmds[cmd_offset++];
index++;
- if (ep_mode == 1 && iob >= EP_RESET) {
+ if ((ep_mode == 1 || ep_mode == 3) && iob >= EP_RESET) {
// epaper pseudo opcodes
uint8_t args = dsp_cmds[cmd_offset++];
index++;
@@ -1067,8 +1075,11 @@ Renderer *uDisplay::Init(void) {
wire = &Wire1;
}
#endif // ESP32
- wire->begin(i2c_sda, i2c_scl); // TODO: aren't I2C buses already initialized? Shouldn't this be moved to display driver?
-
+/*
+ if (i2c_sda != i2c_scl) {
+ wire->begin(i2c_sda, i2c_scl); // TODO: aren't I2C buses already initialized? Shouldn't this be moved to display driver?
+ }
+*/
#ifdef UDSP_DEBUG
Serial.printf("I2C cmds: %d\n", dsp_ncmds);
#endif
@@ -2010,11 +2021,15 @@ bool uDisplay::utouch_Init(char **name) {
attachInterrupt(ut_irq, ut_touch_irq, FALLING);
}
+extern SPIClass *SpiBegin(uint32 bus);
+
if (ut_spi_nr == spi_nr) {
+ // same as display
ut_spi = uspi;
} else {
- // not yet
- ut_spi = nullptr;
+#ifdef ESP32
+ ut_spi = SpiBegin(ut_spi_nr);
+#endif
}
return ut_execute(ut_init_code);
}
@@ -2181,12 +2196,23 @@ void uDisplay::pushColorsMono(uint16_t *data, uint16_t len, bool rgb16_swap) {
uint16_t rgb16_to_mono_mask = rgb16_swap ? RGB16_SWAP_TO_MONO : RGB16_TO_MONO;
for (uint32_t y = seta_yp1; y < seta_yp2; y++) {
- for (uint32_t x = seta_xp1; x < seta_xp2; x++) {
- uint16_t color = *data++;
- if (bpp == 1) color = (color & rgb16_to_mono_mask) ? 1 : 0;
- drawPixel(x, y, color); // todo - inline the method to save speed
- len--;
- if (!len) return; // failsafe - exist if len (pixel number) is exhausted
+ seta_yp1++;
+ if (lvgl_param.invert_bw) {
+ for (uint32_t x = seta_xp1; x < seta_xp2; x++) {
+ uint16_t color = *data++;
+ if (bpp == 1) color = (color & rgb16_to_mono_mask) ? 0 : 1;
+ drawPixel(x, y, color); // todo - inline the method to save speed
+ len--;
+ if (!len) return; // failsafe - exist if len (pixel number) is exhausted
+ }
+ } else {
+ for (uint32_t x = seta_xp1; x < seta_xp2; x++) {
+ uint16_t color = *data++;
+ if (bpp == 1) color = (color & rgb16_to_mono_mask) ? 1 : 0;
+ drawPixel(x, y, color); // todo - inline the method to save speed
+ len--;
+ if (!len) return; // failsafe - exist if len (pixel number) is exhausted
+ }
}
}
}
@@ -2203,7 +2229,7 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) {
//Serial.printf("push %x - %d - %d - %d\n", (uint32_t)data, len, not_swapped, lvgl_param.data);
- // Isolating _UDPS_RGB to increase code sharing
+ // Isolating _UDSP_RGB to increase code sharing
//
// LVGL documentation suggest to call the following:
// lv_draw_sw_rgb565_swap() to invert bytes
@@ -2219,6 +2245,8 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) {
// check that bytes count matches the size of area, and remove from inner loop
if ((seta_yp2 - seta_yp1) * (seta_xp2 - seta_xp2) > len) { return; }
+ uint16_t lenc = len;
+
if (cur_rot > 0) {
for (uint32_t y = seta_yp1; y < seta_yp2; y++) {
seta_yp1++;
@@ -2226,8 +2254,8 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) {
uint16_t color = *data++;
if (!not_swapped) { color = color << 8 | color >> 8; }
drawPixel_RGB(x, y, color);
- len--;
- if (!len) return; // failsafe - exist if len (pixel number) is exhausted
+ lenc--;
+ if (!lenc) return; // failsafe - exist if len (pixel number) is exhausted
}
}
} else {
@@ -2240,6 +2268,8 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) {
uint16_t color = *data++;
*fb_xy = color;
fb_xy++;
+ lenc--;
+ if (!lenc) break; // failsafe - exist if len (pixel number) is exhausted
}
} else {
for (uint32_t x = seta_xp1; x < seta_xp2; x++) {
@@ -2247,14 +2277,19 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) {
color = color << 8 | color >> 8;
*fb_xy = color;
fb_xy++;
+ lenc--;
+ if (!lenc) break; // failsafe - exist if len (pixel number) is exhausted
}
}
+ uint16_t * flush_ptr = rgb_fb + (int32_t)seta_yp1 * _width + seta_xp1;
+ esp_cache_msync(flush_ptr, (seta_xp2 - seta_xp1) * 2, 0);
fb_y += _width;
+ seta_yp1++;
+ if (!lenc) break;
}
// using esp_cache_msync() to flush the PSRAM cache and ensure that all data is actually written to PSRAM
// from https://github.com/espressif/esp-idf/blob/636ff35b52f10e1a804a3760a5bd94e68f4b1b71/components/esp_lcd/rgb/esp_lcd_panel_rgb.c#L159
- uint16_t * flush_ptr = rgb_fb + (int32_t)seta_yp1 * _width;
- esp_cache_msync(flush_ptr, (seta_yp2 - seta_yp1) * _width * 2, 0);
+
}
#endif
return;
@@ -3427,6 +3462,9 @@ void uDisplay::Init_EPD(int8_t p) {
if (ep_mode == 1) {
ClearFrameMemory(0xFF);
Updateframe_EPD();
+ } else if (ep_mode == 3) {
+ ClearFrameMemory(0xFF);
+ Updateframe_EPD();
} else {
ClearFrame_42();
}
@@ -3516,7 +3554,7 @@ void uDisplay::SetLut(const unsigned char* lut) {
}
void uDisplay::Updateframe_EPD(void) {
- if (ep_mode == 1) {
+ if (ep_mode == 1 || ep_mode == 3) {
switch (ep_update_mode) {
case DISPLAY_INIT_PARTIAL:
if (epc_part_cnt) {
@@ -3545,15 +3583,33 @@ void uDisplay::DisplayFrame_29(void) {
}
void uDisplay::SetMemoryArea(int x_start, int y_start, int x_end, int y_end) {
- spi_command_EPD(SET_RAM_X_ADDRESS_START_END_POSITION);
+ int x_start1 = (x_start >> 3) & 0xFF;
+ int x_end1 = (x_end >> 3) & 0xFF;
+ int y_start1 = y_start & 0xFF;
+ int y_start2 = (y_start >> 8) & 0xFF;
+ int y_end1 = y_end & 0xFF;
+ int y_end2 = (y_end >> 8) & 0xFF;
/* x point must be the multiple of 8 or the last 3 bits will be ignored */
- spi_data8_EPD((x_start >> 3) & 0xFF);
- spi_data8_EPD((x_end >> 3) & 0xFF);
- spi_command_EPD(SET_RAM_Y_ADDRESS_START_END_POSITION);
- spi_data8_EPD(y_start & 0xFF);
- spi_data8_EPD((y_start >> 8) & 0xFF);
- spi_data8_EPD(y_end & 0xFF);
- spi_data8_EPD((y_end >> 8) & 0xFF);
+
+ if (ep_mode == 3) {
+ spi_command_EPD(SET_RAM_X_ADDRESS_START_END_POSITION);
+ spi_data8_EPD(x_start1);
+ spi_data8_EPD(x_end1);
+ spi_command_EPD(SET_RAM_Y_ADDRESS_START_END_POSITION);
+ spi_data8_EPD(y_end1);
+ spi_data8_EPD(y_end2);
+ spi_data8_EPD(y_start1);
+ spi_data8_EPD(y_start2);
+ } else {
+ spi_command_EPD(SET_RAM_X_ADDRESS_START_END_POSITION);
+ spi_data8_EPD(x_start1);
+ spi_data8_EPD(x_end1);
+ spi_command_EPD(SET_RAM_Y_ADDRESS_START_END_POSITION);
+ spi_data8_EPD(y_start1);
+ spi_data8_EPD(y_start2);
+ spi_data8_EPD(y_end1);
+ spi_data8_EPD(y_end2);
+ }
}
void uDisplay::SetFrameMemory(const unsigned char* image_buffer) {
@@ -3567,12 +3623,27 @@ void uDisplay::SetFrameMemory(const unsigned char* image_buffer) {
}
void uDisplay::SetMemoryPointer(int x, int y) {
+ int x1;
+ int y1;
+ int y2;
+
+ if (ep_mode == 3) {
+ x1 = (x >> 3) & 0xFF;
+ y--;
+ y1 = y & 0xFF;
+ y2 = (y >> 8) & 0xFF;
+ } else {
+ x1 = (x >> 3) & 0xFF;
+ y1 = y & 0xFF;
+ y2 = (y >> 8) & 0xFF;
+ }
+
spi_command_EPD(SET_RAM_X_ADDRESS_COUNTER);
/* x point must be the multiple of 8 or the last 3 bits will be ignored */
- spi_data8_EPD((x >> 3) & 0xFF);
+ spi_data8_EPD(x1);
spi_command_EPD(SET_RAM_Y_ADDRESS_COUNTER);
- spi_data8_EPD(y & 0xFF);
- spi_data8_EPD((y >> 8) & 0xFF);
+ spi_data8_EPD(y1);
+ spi_data8_EPD(y2);
}
#if 0
diff --git a/lib/lib_div/ArduinoNTPd/NTPServer.cpp b/lib/lib_div/ArduinoNTPd/NTPServer.cpp
index 860ccc79d..689923271 100644
--- a/lib/lib_div/ArduinoNTPd/NTPServer.cpp
+++ b/lib/lib_div/ArduinoNTPd/NTPServer.cpp
@@ -23,7 +23,7 @@ bool NtpServer::beginListening()
return false;
}
-bool NtpServer::processOneRequest(uint32_t utc, uint32_t millisecs)
+bool NtpServer::processOneRequest(uint32_t utc, uint32_t millisecs)
{
// millisecs is millis() at the time of the last iTOW reception, where iTOW%1000 == 0
uint32_t refMillis = millis()-millisecs;
@@ -33,7 +33,7 @@ bool NtpServer::processOneRequest(uint32_t utc, uint32_t millisecs)
}
bool processed = false;
-
+
int packetDataSize = timeServerPort_.parsePacket();
if (packetDataSize && packetDataSize >= NtpPacket::PACKET_SIZE)
{
@@ -54,7 +54,7 @@ bool NtpServer::processOneRequest(uint32_t utc, uint32_t millisecs)
// TODO: verify packet.
// Populate response.
- packet.swapEndian();
+ packet.swapEndian();
packet.leapIndicator(0);
packet.versionNumber(4);
packet.mode(4);
@@ -73,16 +73,17 @@ bool NtpServer::processOneRequest(uint32_t utc, uint32_t millisecs)
packet.originTimestampFraction = packet.transmitTimestampFraction;
packet.receiveTimestampSeconds = recvSecs;
packet.receiveTimestampFraction = recvFract;
-
+
// ...and the transmit time.
- // the latency has been between 135 and 175 microseconds in internal testing, so we harcode 150
- uint32_t transFract = recvFract+(150*(10^3)/(2^32)); // microsec/((10^3)/(2^32))
+ // the latency has been between 135 and 175 microseconds in internal testing, so we hardcode 150
+ constexpr uint32_t latency = (150*1000) / (1LL << 32);
+ uint32_t transFract = recvFract + latency;
if (recvFract>transFract){
recvSecs++; //overflow
}
packet.transmitTimestampSeconds = recvSecs;
- packet.transmitTimestampFraction = transFract;
-
+ packet.transmitTimestampFraction = transFract;
+
// Now transmit the response to the client.
packet.swapEndian();
@@ -91,7 +92,7 @@ bool NtpServer::processOneRequest(uint32_t utc, uint32_t millisecs)
timeServerPort_.endPacket();
processed = true;
- }
-
+ }
+
return processed;
}
\ No newline at end of file
diff --git a/lib/libesp32/ESP-Mail-Client/src/SSLClient/client/BSSL_SSL_Client.h b/lib/libesp32/ESP-Mail-Client/src/SSLClient/client/BSSL_SSL_Client.h
index 98a42685d..b1ecaf693 100644
--- a/lib/libesp32/ESP-Mail-Client/src/SSLClient/client/BSSL_SSL_Client.h
+++ b/lib/libesp32/ESP-Mail-Client/src/SSLClient/client/BSSL_SSL_Client.h
@@ -96,6 +96,10 @@ public:
int connect(const char *host, uint16_t port) override;
+ int connect(IPAddress ip, uint16_t port, int32_t timeout) { return connect(ip, port, 0);}
+
+ int connect(const char *host, uint16_t port, int32_t timeout) { return connect(host, port, 0);}
+
uint8_t connected() override;
void validate(const char *host, uint16_t port);
diff --git a/lib/libesp32/ESP-Mail-Client/src/extras/Networks_Provider.h b/lib/libesp32/ESP-Mail-Client/src/extras/Networks_Provider.h
index fd523be67..8e55a735d 100644
--- a/lib/libesp32/ESP-Mail-Client/src/extras/Networks_Provider.h
+++ b/lib/libesp32/ESP-Mail-Client/src/extras/Networks_Provider.h
@@ -75,7 +75,7 @@
#if !defined(ESP_MAIL_DISABLE_NATIVE_ETHERNET)
-#if defined(ESP32) && __has_include()
+#if defined(ESP32) && __has_include()
#include
#define ESP_MAIL_ETH_IS_AVAILABLE
#elif defined(ESP8266) && defined(ESP8266_CORE_SDK_V3_X_X)
diff --git a/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.h b/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.h
index 0a5f99a3b..99a4b1b30 100644
--- a/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.h
+++ b/lib/libesp32/ESP32-to-ESP8266-compat/src/esp8266toEsp32.h
@@ -183,5 +183,13 @@ typedef int SerConfu8;
#define STATION_IF 0
+
+// ESP32 needed define to support IDF 5.2 based Arduino builds
+
+// Name has changed
+#ifdef LCD_CAM_LCD_UPDATE_M
+#define LCD_CAM_LCD_UPDATE_REG LCD_CAM_LCD_UPDATE_M
+#endif // LCD_CAM_LCD_UPDATE_M
+
#endif // ESP32
#endif // __ESP8266TOESP32_H__
diff --git a/lib/libesp32/JPEGDEC/.github/ISSUE_TEMPLATE/bug_report.md b/lib/libesp32/JPEGDEC/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 000000000..802914060
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,30 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**Before you create this issue**
+This library takes compressed JPEG data and outputs pixels to your callback functions. If your problem is related to LCD displays, SD cards, or any other issue that has nothing to do with this library, please stop here. If you need help with your private or commercial project, please email me (bitbank@pobox.com) to ask about paid consulting. Github issues are for submitting actual bugs.
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**To Reproduce**
+Steps to reproduce the behavior:
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Image file you're having trouble with**
+If applicable, add images to help explain your problem.
+
+**Additional context**
+Add any other context about the problem here.
diff --git a/lib/libesp32/JPEGDEC/CMakeLists.txt b/lib/libesp32/JPEGDEC/CMakeLists.txt
new file mode 100644
index 000000000..041313837
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/CMakeLists.txt
@@ -0,0 +1,8 @@
+set(srcs
+ "src/JPEGDEC.cpp"
+ "src/jpeg.inl"
+)
+idf_component_register(SRCS ${srcs}
+ REQUIRES "jpegdec"
+ INCLUDE_DIRS "src"
+)
diff --git a/lib/libesp32/JPEGDEC/LICENSE b/lib/libesp32/JPEGDEC/LICENSE
new file mode 100644
index 000000000..326e04a2c
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/LICENSE
@@ -0,0 +1,204 @@
+Copyright 2020 BitBank Software, Inc. All rights reserved.
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright 2020 BitBank Software, Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
diff --git a/lib/libesp32/JPEGDEC/Makefile b/lib/libesp32/JPEGDEC/Makefile
new file mode 100755
index 000000000..7629f12f2
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/Makefile
@@ -0,0 +1,17 @@
+CFLAGS=-D__LINUX__ -c -Wall -O2
+LIBS =
+CXX = g++
+
+all: demo
+
+demo: main.o JPEGDEC.o
+ $(CXX) main.o JPEGDEC.o $(LIBS) -o demo
+
+main.o: main.cpp
+ $(CXX) $(CFLAGS) main.cpp
+
+JPEGDEC.o: JPEGDEC.cpp
+ $(CXX) $(CFLAGS) JPEGDEC.cpp
+
+clean:
+ rm -rf *.o demo
diff --git a/lib/libesp32/JPEGDEC/README.md b/lib/libesp32/JPEGDEC/README.md
new file mode 100644
index 000000000..573d7b1f8
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/README.md
@@ -0,0 +1,63 @@
+JPEGDEC
+-----------------------------------
+Copyright (c) 2020 BitBank Software, Inc.
+Written by Larry Bank
+larry@bitbanksoftware.com
+
+**I optimize other people's code for a living. This library is a good example of the kind of work I do for my commercial clients; it contains many unique and clever optimizations that allows it to perform better than anything else available. I'm happy to contribute optimized libraries to the open source community in addition to working on commercial projects. Whatever platform you're using, I can make significant improvements to your native code. Please contact me so that I can show you how.**
+
+
+
+I started working with image and video files around 1989 and soon turned my interest into a Document Imaging product based on my own imaging library. Over the years I added support for more and more formats until I had supported all of the standard ones, including DICOM. I sold my Document Imaging business in 1997. I started over with a new library design in 2000 and added even more formats. Over the years, I found uses for my imaging code in projects such as retro gaming. I recently went looking to see if there was a good JPEG viewer for Arduino and only found ones which sacrificed speed to work on MCUs with almost no RAM. I thought it would be possible to create an optimized JPEG decoder that could run on any MCU with at least 20K of RAM, so I started modifying my old JPEG code for this purpose. There are a lot of clever optimizations contained in the code that I kept as trade secrets for many years. I decided that it's time to share the code with the community. This code doesn't look like other JPEG libraries because I wrote it from a "blank sheet". It took many hundreds of hours of work to get it working correctly and find all of the optimizations. If you appreciate my work, please consider sponsoring me.
+
+
+
+Features:
+---------
+- Supports any MCU with at least 20K of RAM (Cortex-M0+ is the simplest I've tested)
+- Optimized for speed; the main limitation will be how fast you can copy the pixels to the display. You can use DMA assisted SPI to help.
+- JPEG image data can come from memory (FLASH/RAM), SDCard or any media you provide.
+- Simple class and callback design allows you to easily add JPEG support to any application.
+- The C code doing the heavy lifting is completely portable and has no external dependencies.
+- Includes fast downscaling options (1/2, 1/4, 1/8).
+- Includes option to detect and decode the embedded Exif thumbnail
+- Supports Baseline Huffman images (grayscale or YCbCr)
+- Includes optional Floyd-Steinberg dithering to 1, 2 or 4-bpp grayscale output; useful for e-paper displays
+
+
+
+
+
+
+
+**A note about performance**
+The chart above gives you an idea of how the code performs on various MCUs with the different scaling options. The test image used is both large in dimension and large in terms of the compressed data size. The two factors that have the most influence on performance are the compressed data size and the output scaling options. This is because the time to decode JPEG data scales mostly linearly with the amount of data to decode. To get the fastest decode speed, choose the lowest acceptable quality for your image; this will produce the smallest compressed data size. When you must use an image that is too large, the scaling options allow you to display it at a lower resolution than the original.
+
+
+
+
+
+
+
+**Floyd-Steinberg dithering**
+I added the option to dither the output to 1, 2 or 4-bit per pixel grayscale using the FS error diffusion algorithm. It creates a pleasant output without visible blocking nor repeating patterns. This seemed useful for generating output suitable for high resolution e-paper displays. The image above was decoded from a 800x600 color JPEG and rendered as 2-bits per pixels (4 gray levels) on a 400x300 4.2" e-paper display. See the Wiki for info on how to use this option.
+
+Acquiring JPEG files to play:
+----------------------------
+You'll notice that the images provided in the test_images folder have been turned into C code. Each byte is now in the form 0xAB so that it can be compiled into your program and stored in FLASH memory alongside your other code. You can use a command line tool I wrote called image_to_c (https://github.com/bitbank2/image_to_c) or an older Linux tool called xxd to convert a binary file into this type of text. Make sure to add a const/PROGMEM modifier in front of the JPEG data array to ensure that it gets written to FLASH and not RAM by your build environment.
+
+The Callback functions:
+-----------------------
+One of the ways to allow this code to run on any embedded platform was to define a set of callback functions. These isolate the JPEG decoding logic from the display and file I/O. This allows the core code to run on any system, but you need to help it a little. At a minimum, your code must provide a function to draw (or store) each block of image pixels emitted by the library. If you're displaying a JPEG file from memory (RAM or FLASH), this is the only function you need to provide. In the examples folder there are multiple sketches to show how this is done on various display libraries. For reading from SD cards, 4 other functions must be provided: open, close, read, seek. There is an example for implementing these in the examples folder as well.
+Note:
+If you're using the ESP32 or ESP8266 (or another MCU which uses the Harvard Architecture) and decoding JPEG images stored in RAM or FLASH, you'll need to use the correct open function (openRAM or openFLASH). For MCUs based on the ARM Cortex-M, they are interchangeable.
+
+The API:
+--------
+Please consult the Wiki for detailed info about each method exposed by the JPEGDEC class.
+
+
+If you find this code useful, please consider becoming a sponsor or sending a donation.
+
+[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=SR4F44J2UR8S4)
+
diff --git a/lib/libesp32/JPEGDEC/demo.jpg b/lib/libesp32/JPEGDEC/demo.jpg
new file mode 100644
index 000000000..30506b07c
Binary files /dev/null and b/lib/libesp32/JPEGDEC/demo.jpg differ
diff --git a/lib/libesp32/JPEGDEC/examples/ILI9431_t3_slideshow/ILI9431_t3_slideshow.ino b/lib/libesp32/JPEGDEC/examples/ILI9431_t3_slideshow/ILI9431_t3_slideshow.ino
new file mode 100644
index 000000000..950702f4f
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/ILI9431_t3_slideshow/ILI9431_t3_slideshow.ino
@@ -0,0 +1,104 @@
+// A simple image slideshow which reads all the .JPG files from the root
+// directory of a SD card and shows each for 1 second on an ILI9341 display.
+
+#include
+#include
+#include
+#include
+
+#define TFT_DC 9
+#define TFT_CS 10
+
+ILI9341_t3 tft = ILI9341_t3(TFT_CS, TFT_DC);
+JPEGDEC jpeg;
+
+// Setup - initialize ILI9341 display, wait for serial monitor, open SD card
+void setup() {
+ pinMode(34, INPUT_PULLDOWN);
+ pinMode(33, OUTPUT);
+ digitalWrite(33, HIGH); // pushbuttons short pins 33 & 34 together
+ Serial.begin(115200);
+ tft.begin();
+ tft.setRotation(3);
+ tft.fillScreen(ILI9341_BLACK);
+ tft.setTextColor(ILI9341_YELLOW);
+ tft.setTextSize(2);
+ tft.println("Waiting for Arduino Serial Monitor...");
+
+ while (!Serial && millis() < 3000); // wait up to 3 seconds for Arduino Serial Monitor
+ Serial.println("ILI9341 Slideshow");
+ tft.fillScreen(ILI9341_BLACK);
+ tft.setCursor(0, 0);
+
+ while (!SD.begin(BUILTIN_SDCARD)) {
+ Serial.println("Unable to access SD Card");
+ tft.println("Unable to access SD Card");
+ delay(1000);
+ }
+}
+
+// Functions to access a file on the SD card
+File myfile;
+
+void * myOpen(const char *filename, int32_t *size) {
+ myfile = SD.open(filename);
+ *size = myfile.size();
+ return &myfile;
+}
+void myClose(void *handle) {
+ if (myfile) myfile.close();
+}
+int32_t myRead(JPEGFILE *handle, uint8_t *buffer, int32_t length) {
+ if (!myfile) return 0;
+ return myfile.read(buffer, length);
+}
+int32_t mySeek(JPEGFILE *handle, int32_t position) {
+ if (!myfile) return 0;
+ return myfile.seek(position);
+}
+
+// Function to draw pixels to the display
+int JPEGDraw(JPEGDRAW *pDraw) {
+ //Serial.printf("jpeg draw: x,y=%d,%d, cx,cy = %d,%d\n",
+ //pDraw->x, pDraw->y, pDraw->iWidth, pDraw->iHeight);
+// for (int i=0; iiWidth*pDraw->iHeight; i++) {
+// pDraw->pPixels[i] = __builtin_bswap16(pDraw->pPixels[i]);
+// }
+ tft.writeRect(pDraw->x, pDraw->y, pDraw->iWidth, pDraw->iHeight, pDraw->pPixels);
+ return 1;
+}
+
+// Main loop, scan for all .JPG files on the card and display them
+void loop() {
+ int filecount = 0;
+ tft.setCursor(0, 0);
+ File dir = SD.open("/");
+ while (true) {
+ File entry = dir.openNextFile();
+ if (!entry) break;
+ if (entry.isDirectory() == false) {
+ const char *name = entry.name();
+ const int len = strlen(name);
+ if (len > 3 && strcasecmp(name + len - 3, "JPG") == 0) {
+ Serial.print("File: ");
+ Serial.println(name);
+ tft.print("File: ");
+ tft.println(name);
+ jpeg.open((const char *)name, myOpen, myClose, myRead, mySeek, JPEGDraw);
+ jpeg.decode(0,0,0);
+ jpeg.close();
+ filecount = filecount + 1;
+ if (digitalRead(34) == LOW) {
+ // skip delay between images when pushbutton is pressed
+ delay(1000);
+ }
+ }
+ }
+ entry.close();
+ }
+ if (filecount == 0) {
+ Serial.println("No .JPG files found");
+ tft.println("No .JPG files found");
+ delay(2000);
+ }
+}
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/M5Core2.ino b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/M5Core2.ino
new file mode 100644
index 000000000..ab187fa0f
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/M5Core2.ino
@@ -0,0 +1,61 @@
+// JPEGDEC example for Adafruit GFX displays
+
+#include "JPEGDEC.h"
+// Sample image (truncated) containing a 320x240 Exif thumbnail
+// if an image doesn't display, it may have been created using progressive, open gimp, export as a jpg, remove progressive.
+
+#include "thumb_test.h"
+//#include "ncc1701.h" //http://clipart-library.com/clip-art/uss-enterprise-silhouette-11.htm
+//#include "batman.h" //http://clipart-library.com/clipart/batman-clip-art_19.htm
+
+#include
+
+#define DISPLAY_WIDTH 320
+#define DISPLAY_HEIGHT 240
+
+
+JPEGDEC jpeg;
+
+int JPEGDraw(JPEGDRAW *pDraw)
+{
+
+ M5.Lcd.drawBitmap((int16_t)pDraw->x, (int16_t)pDraw->y, (int16_t)pDraw->iWidth, (int16_t)pDraw->iHeight, pDraw->pPixels);
+ return 1;
+} /* JPEGDraw() */
+
+void setup() {
+ Serial.begin(115200);
+
+ Serial.println("Starting...");
+
+M5.begin(true, true, true, true);
+M5.Lcd.fillScreen(TFT_BLACK);
+} /* setup() */
+
+void loop() {
+int i;
+long lTime;
+int iOption[4] = {0, JPEG_SCALE_HALF, JPEG_SCALE_QUARTER, JPEG_SCALE_EIGHTH};
+int iCenterX[4] = {0,80,120,140};
+int iCenterY[4] = {0,60,90,105};
+
+ for (i=0; i<4; i++)
+ {
+ M5.Lcd.fillScreen(TFT_BLACK);
+ M5.Lcd.startWrite(); // Not sharing TFT bus on PyPortal, just CS once and leave it
+ if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), JPEGDraw))
+ //if (jpeg.openFLASH((uint8_t *)ncc1701, sizeof(ncc1701), JPEGDraw))
+ //if (jpeg.openFLASH((uint8_t *)batman, sizeof(batman), JPEGDraw))
+
+ {
+ lTime = micros();
+ if (jpeg.hasThumb()) {jpeg.decode(iCenterX[i],iCenterY[i],JPEG_EXIF_THUMBNAIL | iOption[i]); } else { jpeg.decode(iCenterX[i],iCenterY[i], iOption[i]); }
+ {
+ lTime = micros() - lTime;
+ Serial.printf("%d x %d image, decode time = %d us\n", jpeg.getWidth() >> i, jpeg.getHeight() >> i, (int)lTime);
+ }
+ jpeg.close();
+ }
+ delay(2000); // pause between images
+ } // for i
+} /* loop() */
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/batman.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/batman.h
new file mode 100644
index 000000000..4aeccde5a
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/batman.h
@@ -0,0 +1,845 @@
+//
+// batman-5
+// Data size = 13342 bytes
+//
+// JFIF, Compression=JPEG, Size: 240 x 240, 24-Bpp
+//
+// for non-Arduino builds...
+#ifndef PROGMEM
+#define PROGMEM
+#endif
+const uint8_t batman[] PROGMEM = {
+ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x47,
+ 0x00,0x47,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
+ 0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,
+ 0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,
+ 0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,
+ 0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,
+ 0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,
+ 0x00,0x11,0x08,0x00,0xf0,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
+ 0x01,0xff,0xc4,0x00,0x1e,0x00,0x01,0x00,0x02,0x02,0x03,0x01,0x01,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x09,0x06,0x07,0x04,0x05,0x0a,0x03,0x01,
+ 0x02,0xff,0xc4,0x00,0x49,0x10,0x00,0x01,0x03,0x03,0x03,0x02,0x04,0x03,0x05,0x04,
+ 0x05,0x0a,0x04,0x07,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x06,0x07,0x08,0x11,
+ 0x12,0x21,0x09,0x13,0x31,0x41,0x14,0x22,0x51,0x15,0x23,0x61,0x71,0x81,0x32,0x42,
+ 0x52,0x62,0x24,0x33,0x82,0x91,0x92,0x16,0x17,0x18,0x53,0x63,0x72,0xa1,0xb1,0xb2,
+ 0xc1,0x73,0x93,0xa2,0xc2,0x19,0x34,0x43,0x44,0x83,0x84,0xc3,0xff,0xc4,0x00,0x1c,
+ 0x01,0x01,0x00,0x01,0x05,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x03,0x01,0x04,0x05,0x06,0x07,0x02,0x08,0xff,0xc4,0x00,0x38,0x11,0x00,
+ 0x01,0x03,0x02,0x05,0x01,0x06,0x03,0x06,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x01,
+ 0x00,0x02,0x03,0x04,0x11,0x05,0x06,0x12,0x21,0x31,0x51,0x13,0x22,0x41,0x61,0x71,
+ 0x81,0x07,0x32,0x91,0x15,0x42,0x62,0x92,0xa1,0xb1,0x14,0x23,0x52,0x72,0x82,0xa2,
+ 0x33,0xb2,0xc1,0xf0,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,
+ 0x3f,0x00,0xb5,0x3a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,
+ 0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,
+ 0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,
+ 0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,
+ 0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,
+ 0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,
+ 0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,
+ 0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,
+ 0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,
+ 0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,
+ 0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0xa2,0xae,0xf8,
+ 0x37,0xe7,0x8d,0x6d,0x27,0x1e,0x36,0xd8,0x69,0x66,0xff,0x00,0xa8,0xd3,0xd8,0x2b,
+ 0xb7,0xd9,0x4a,0x8f,0x97,0x1d,0x27,0x90,0x24,0x49,0x20,0x82,0x96,0xc1,0x1d,0x92,
+ 0x08,0x52,0xc8,0xe0,0x70,0x3a,0x94,0x92,0x29,0x55,0x4a,0xf3,0xf3,0xa5,0x5e,0x23,
+ 0xba,0xd3,0xa6,0xda,0xbb,0x71,0xce,0x66,0xe4,0x6f,0xe5,0x48,0xbb,0xbc,0x17,0x75,
+ 0xb2,0x5d,0x1c,0x26,0x1c,0x84,0x03,0xd9,0x2d,0x20,0x76,0x8e,0x52,0x3b,0x25,0x4d,
+ 0x81,0xc7,0x60,0x42,0x87,0x29,0x37,0x13,0xb5,0xfd,0xec,0xe9,0xa6,0xea,0xad,0x4d,
+ 0x8c,0x6e,0xe8,0x2d,0xb9,0x3a,0x1a,0x2e,0x4b,0xc6,0x6e,0x4a,0x4a,0x26,0xb3,0xc1,
+ 0xe1,0x4a,0x48,0xe7,0x87,0x5b,0xf4,0x3d,0x68,0x27,0x80,0xa1,0xd4,0x12,0x4f,0x48,
+ 0x22,0xdf,0xb4,0xa5,0x28,0x89,0x4a,0x56,0xa2,0xdc,0xd6,0xe0,0xa0,0xed,0xab,0x0a,
+ 0xb2,0xe5,0xd7,0x68,0xe1,0xfb,0x23,0xb7,0xc8,0x96,0xdb,0x82,0x81,0x3d,0x4c,0xb0,
+ 0xf7,0x52,0x54,0xf2,0x78,0xe7,0x92,0x8e,0x02,0xf8,0xe3,0xe6,0x09,0x29,0xec,0x48,
+ 0x20,0x8b,0x6e,0xd2,0xb5,0xde,0x79,0xb8,0x9d,0x2f,0xd3,0x06,0x63,0x39,0x95,0xea,
+ 0x06,0x39,0x62,0x32,0x99,0x4c,0x88,0xed,0x4b,0xb9,0x34,0x97,0x5f,0x69,0x43,0x94,
+ 0xb8,0xdb,0x7d,0x5d,0x4b,0x49,0x1f,0xbc,0x90,0x47,0x7a,0xc5,0xac,0x7b,0xdb,0xd0,
+ 0x4c,0x86,0x40,0x62,0x26,0xad,0xe2,0x69,0x70,0x9e,0x00,0x97,0x72,0x6e,0x30,0x27,
+ 0xe8,0x0b,0xa5,0x22,0x88,0xb7,0x6d,0x2b,0x52,0xe8,0xc6,0xe2,0xf1,0xfd,0x72,0xcd,
+ 0x75,0x22,0xcb,0x8e,0x2d,0xb9,0x50,0xf0,0xdb,0x83,0x36,0xc5,0xcf,0x69,0xd0,0xe2,
+ 0x25,0x3a,0xa6,0xca,0x96,0xb4,0x11,0xdb,0xa5,0x2b,0x0a,0x6c,0x7a,0xf2,0x5b,0x51,
+ 0xe7,0x82,0x2b,0x6d,0x51,0x12,0x94,0xa5,0x11,0x29,0x51,0xd3,0x74,0xdb,0xec,0xd3,
+ 0x3d,0xab,0x5b,0xdf,0x8f,0x79,0xb8,0x0b,0xee,0x5f,0xd0,0x15,0x1f,0x17,0xb6,0x38,
+ 0x15,0x29,0x44,0x8e,0x52,0x5e,0x3d,0xc3,0x08,0x3c,0x83,0xd4,0xbe,0xe4,0x77,0x4a,
+ 0x55,0xe9,0x55,0x05,0x9d,0x78,0x8f,0xeb,0x7e,0x67,0xac,0xb0,0x35,0x05,0x8c,0x9d,
+ 0xcb,0x12,0xed,0xab,0xe2,0x05,0x86,0xde,0xa5,0x26,0xda,0xd3,0x24,0x82,0xa6,0x9c,
+ 0x68,0x9f,0xbe,0xeb,0xe3,0xe6,0x52,0xf9,0x51,0xed,0xc1,0x48,0x4a,0x42,0x48,0xbd,
+ 0x04,0x52,0xa3,0x3e,0xca,0xf7,0xc7,0x8a,0x6e,0xef,0x15,0x2d,0x37,0xe5,0x58,0xf3,
+ 0xdb,0x73,0x21,0x77,0x5c,0x79,0x4b,0xe4,0xf4,0x8e,0x01,0x91,0x1c,0x9f,0xdb,0x64,
+ 0xa9,0x40,0x7f,0x12,0x09,0x01,0x5e,0xa9,0x52,0xe4,0xc5,0x11,0x29,0x4a,0x51,0x12,
+ 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xad,
+ 0x05,0xbc,0xed,0xd9,0xd9,0x36,0x91,0xa5,0x0e,0xdf,0xa5,0xa5,0xa9,0xf9,0x35,0xc7,
+ 0xae,0x35,0x8a,0xd0,0xb5,0x11,0xf1,0x52,0x00,0x1c,0xad,0x5c,0x77,0x0d,0x36,0x14,
+ 0x95,0x2c,0xf6,0xf5,0x4a,0x41,0x05,0x69,0xa2,0x2c,0x1b,0x7f,0x1b,0xec,0xb4,0xed,
+ 0x3f,0x11,0xfb,0x22,0xcc,0xa6,0x2e,0x9a,0x95,0x76,0x60,0x9b,0x7d,0xbd,0x47,0xa9,
+ 0x10,0x9b,0x3c,0x8f,0x8a,0x7c,0x7f,0x08,0x23,0xe5,0x41,0xee,0xb2,0x0f,0xb0,0x51,
+ 0x14,0xdb,0x61,0xd1,0xad,0x69,0xdc,0xee,0x55,0x3b,0x22,0x83,0x8c,0x5f,0xf2,0xeb,
+ 0x9d,0xdd,0xe5,0x4a,0x93,0x7b,0x90,0xc9,0x6d,0x87,0x5c,0x57,0x72,0x4c,0x87,0x3a,
+ 0x5a,0x1f,0x82,0x7a,0x87,0x00,0x70,0x07,0x02,0xb9,0x38,0x46,0xb8,0x67,0x39,0x56,
+ 0xb3,0x4f,0xc8,0x95,0x61,0xb3,0xea,0x26,0xa4,0x65,0x33,0x1b,0x6e,0x34,0xbc,0x82,
+ 0x07,0xc6,0xb8,0xd4,0x85,0x2b,0x84,0x79,0x0c,0xa9,0x41,0x94,0x9f,0xd8,0x4a,0x7a,
+ 0x90,0x42,0x12,0x84,0x84,0xf4,0x00,0x79,0xbc,0x7d,0x2d,0xb4,0xe5,0x36,0x4d,0x3f,
+ 0xb2,0x43,0xcd,0xaf,0x8d,0xe4,0x59,0x5a,0x18,0xea,0xb8,0xdc,0x19,0x61,0xb6,0x1a,
+ 0x5b,0xca,0x25,0x45,0x28,0x42,0x12,0x91,0xd0,0x8e,0x7a,0x01,0xe9,0x04,0x84,0x82,
+ 0x7b,0x93,0x5c,0xb7,0x39,0xe6,0xfa,0x8c,0xb2,0xd6,0x36,0x18,0x9a,0xe7,0x3f,0x8d,
+ 0x4e,0x37,0xf3,0x3a,0x40,0xe0,0x71,0x72,0xe0,0x6f,0xc0,0x22,0xe4,0x5c,0x45,0x10,
+ 0x93,0x92,0xa9,0xd1,0xdf,0x0c,0xcd,0xc1,0x37,0x13,0xce,0x18,0x8c,0x47,0x17,0xc7,
+ 0x3e,0x42,0x6f,0x11,0x3a,0xff,0x00,0xe2,0xe0,0x1f,0xf1,0xad,0x0b,0x95,0xe1,0x99,
+ 0x9e,0x8b,0x65,0xe9,0x83,0x7d,0xb6,0x5d,0x71,0x1c,0x8a,0x12,0xc3,0xad,0x79,0xc9,
+ 0x5c,0x77,0x90,0x41,0xec,0xe3,0x4b,0x1c,0x72,0x39,0x1d,0x96,0x82,0x41,0xf6,0x35,
+ 0xe8,0xbe,0xa3,0xbe,0xfd,0x34,0x72,0xc9,0xab,0x5b,0x6d,0xcb,0x9e,0xb8,0x45,0x42,
+ 0xae,0xb8,0xe4,0x07,0xef,0x56,0xc9,0xc1,0x3f,0x7b,0x1d,0xc6,0x51,0xe6,0x38,0x90,
+ 0x7f,0x85,0xc4,0x20,0xa5,0x43,0xd0,0xf6,0x3c,0x72,0x94,0x91,0xcf,0xb0,0x3f,0x8a,
+ 0x35,0xb3,0xd7,0x47,0x4f,0x89,0x44,0xcd,0x0f,0x20,0x5d,0xa0,0x82,0xdb,0x9b,0x5f,
+ 0x72,0x6e,0x3a,0xf0,0x7f,0x65,0x33,0xe9,0xc0,0x17,0x69,0x50,0x8f,0x6f,0x3e,0x2f,
+ 0x7a,0x9d,0xa6,0x2c,0x47,0xb5,0x67,0xf0,0xda,0xd4,0x9b,0x2b,0x69,0x4b,0x68,0x94,
+ 0xfb,0xa2,0x35,0xc9,0xa4,0x8e,0x07,0x77,0x82,0x48,0x77,0xb0,0x3f,0xd6,0x24,0xa9,
+ 0x47,0xd5,0x75,0x62,0xda,0x35,0xe2,0x3d,0xa0,0xda,0xd2,0xa6,0x63,0x43,0xcc,0x5a,
+ 0xc6,0x2e,0xce,0x27,0xab,0xec,0xcc,0xa1,0x22,0x03,0x80,0xf3,0xc7,0x48,0x71,0x44,
+ 0xb2,0xa5,0x7f,0x2a,0x1c,0x51,0x3f,0x4a,0xa0,0xf9,0x98,0x65,0xd2,0x0e,0x15,0x6a,
+ 0xca,0x9e,0x64,0x26,0xd1,0x72,0x9d,0x2a,0xdf,0x1d,0xce,0x7b,0x97,0x63,0xa1,0x85,
+ 0xb9,0xc8,0xfa,0x71,0x25,0xbe,0x0f,0xb9,0x0a,0xfa,0x57,0x47,0x5f,0x48,0x31,0xed,
+ 0x90,0x5d,0x86,0xfc,0x8f,0x70,0x6c,0x7e,0x85,0x58,0xaf,0x54,0x51,0x25,0xb1,0x3e,
+ 0x33,0x72,0x23,0x3c,0xdc,0x98,0xee,0x0e,0xa4,0x3a,0xd2,0xc2,0x90,0xa1,0xf5,0x04,
+ 0x76,0x22,0xa0,0xc7,0x8c,0xac,0xaf,0x87,0xda,0x4c,0x06,0xf9,0xe3,0xcf,0xca,0x21,
+ 0xb7,0xf9,0xfd,0xcc,0x95,0x7f,0xed,0xaa,0x78,0xd3,0xdd,0x6b,0xcf,0xf4,0x99,0x6e,
+ 0x1c,0x33,0x34,0xbf,0x62,0xe9,0x75,0x41,0x6e,0xb5,0x6a,0xb8,0x3a,0xc3,0x6e,0x91,
+ 0xe8,0x56,0x84,0xa8,0x25,0x5f,0xa8,0x35,0x98,0xea,0xc6,0xf0,0xb5,0x77,0x5c,0xf0,
+ 0x48,0x98,0x7e,0x77,0x98,0x3b,0x91,0xd8,0xa2,0x4d,0x6e,0xe0,0xc3,0x52,0x22,0x47,
+ 0x43,0x89,0x79,0x08,0x71,0x01,0x45,0xd4,0x36,0x95,0xab,0xe5,0x75,0x7d,0x94,0x48,
+ 0xf4,0xfa,0x57,0xb4,0x5a,0x6d,0x4b,0x52,0xcf,0x2a,0x25,0x47,0x80,0x39,0x27,0xd8,
+ 0x76,0x15,0xf9,0x5d,0xd5,0xa3,0x09,0xc8,0x2f,0xf6,0x1b,0xb5,0xee,0xd9,0x64,0xb8,
+ 0x5c,0x6d,0x16,0x8f,0x2f,0xed,0x19,0xd1,0x23,0x2d,0xd6,0x61,0xf9,0x9d,0x5e,0x59,
+ 0x79,0x49,0x04,0x36,0x15,0xd0,0xbe,0x0a,0xb8,0x07,0xa4,0xfd,0x2b,0x8f,0x8e,0xe3,
+ 0x37,0x8c,0xc2,0xf1,0x1e,0xd3,0x61,0xb5,0x4d,0xbd,0xdd,0x24,0x1e,0x96,0x60,0xdb,
+ 0xa3,0xae,0x43,0xee,0x1f,0xa2,0x50,0x80,0x54,0x7f,0x41,0x44,0x56,0x51,0xe0,0x7b,
+ 0x95,0xb7,0x17,0x33,0xd5,0x5c,0x65,0x47,0x97,0x67,0x5b,0xe0,0xdc,0x5b,0x04,0xfa,
+ 0x06,0x1c,0x75,0xb5,0xf0,0x3f,0xfd,0x94,0x73,0xf9,0x0a,0xb6,0x79,0xd3,0xa3,0x5b,
+ 0x22,0x3b,0x2a,0x64,0x86,0xa2,0x45,0x69,0x3d,0x4e,0x3e,0xfa,0xc2,0x10,0x81,0xf5,
+ 0x2a,0x3d,0x80,0xaf,0x35,0x18,0x7e,0xa1,0x6a,0x66,0xd6,0x33,0xab,0xdb,0x76,0x1b,
+ 0x8c,0xfc,0x1b,0x2b,0xf8,0x75,0x5a,0xee,0x28,0x0d,0x20,0x48,0x6d,0xb5,0x29,0x0e,
+ 0x29,0xa5,0x05,0xa4,0xf4,0x2b,0xa9,0x08,0x27,0x8e,0x14,0x08,0xe3,0xb7,0x71,0x5d,
+ 0x26,0xa0,0x6b,0x0e,0x75,0xaa,0xef,0xb4,0xee,0x67,0x98,0xdf,0x32,0x95,0x34,0x4a,
+ 0x9a,0x17,0x6b,0x83,0xb2,0x12,0xd1,0xfe,0x44,0xad,0x44,0x23,0xfb,0x20,0x51,0x15,
+ 0xea,0x6b,0x3f,0x89,0x5e,0x83,0x68,0xd2,0xa4,0xc5,0x73,0x2c,0x4e,0x5d,0x78,0x65,
+ 0x3c,0xfd,0x9d,0x8b,0x24,0x4d,0x24,0xff,0x00,0x09,0x78,0x10,0xca,0x48,0x3e,0xa0,
+ 0xb9,0xc8,0xfa,0x7b,0x55,0x72,0xee,0x1f,0xc5,0xc3,0x55,0x35,0x61,0x99,0x16,0xac,
+ 0x25,0x96,0xf4,0xce,0xc2,0xea,0x14,0xda,0xdc,0x80,0xf1,0x7a,0xe4,0xe0,0x3d,0x89,
+ 0xf8,0x92,0x13,0xe5,0xf6,0xe3,0x8f,0x29,0x29,0x50,0x3c,0xfc,0xe7,0xb7,0x10,0x5a,
+ 0x94,0x45,0xf5,0x99,0x31,0xfb,0x84,0xa7,0xa5,0x4a,0x7d,0xc9,0x32,0x5e,0x59,0x71,
+ 0xc7,0x9e,0x59,0x5a,0xd6,0xa2,0x79,0x25,0x44,0xf7,0x24,0xfd,0x4d,0x7c,0xab,0xed,
+ 0x0a,0x2a,0xe7,0x4c,0x62,0x32,0x3b,0xad,0xe7,0x12,0xda,0x7f,0x32,0x78,0x1f,0xf3,
+ 0xac,0x9b,0x57,0x30,0xe4,0xe9,0xe6,0xaa,0xe6,0x38,0xba,0x09,0x2d,0x59,0x6f,0x12,
+ 0xed,0xe8,0x51,0x24,0xf5,0x21,0xa7,0x96,0x84,0x9e,0xff,0x00,0x50,0x90,0x6a,0x13,
+ 0x2b,0x04,0xa2,0x1b,0xf7,0x88,0x27,0xd8,0x58,0x1f,0xdc,0x2a,0xdb,0xc5,0x7f,0x78,
+ 0x2d,0xdf,0x35,0xd3,0x19,0xd6,0x9d,0x47,0xc5,0xcd,0xd2,0xca,0xab,0x6d,0xc3,0xc9,
+ 0x87,0x90,0x46,0x65,0x61,0x84,0x4a,0x4a,0x42,0xd4,0xcf,0x99,0xc7,0x42,0x89,0x42,
+ 0x87,0x53,0x67,0x9e,0xa4,0x2f,0x85,0x02,0x95,0x77,0xbd,0x7d,0x8b,0x6f,0x7e,0xc7,
+ 0xbb,0xac,0x1d,0x4c,0xcb,0x11,0xec,0xfa,0x87,0x69,0x69,0x3f,0x6b,0xd9,0x90,0xae,
+ 0x10,0xe8,0xf4,0xf8,0xa8,0xc0,0x92,0xa5,0x34,0xa3,0xc7,0x23,0xb9,0x6d,0x44,0x25,
+ 0x44,0x82,0x85,0x2f,0x45,0x6c,0x47,0x43,0xf4,0xda,0xfd,0xb4,0xb9,0x96,0x98,0xd7,
+ 0x57,0x73,0xac,0x67,0x2d,0x77,0xcf,0xbb,0x5b,0xee,0x4d,0x25,0xb1,0x0e,0x58,0x69,
+ 0xb4,0x3a,0xc8,0x42,0x4f,0x28,0x5a,0x14,0x84,0x90,0xbe,0x79,0x3c,0x36,0xb4,0x9e,
+ 0x3a,0x49,0x83,0x3a,0xe5,0xa3,0x99,0xdf,0x87,0x9e,0xbe,0xd9,0xf2,0x7c,0x4a,0xe7,
+ 0x24,0x5b,0x04,0x85,0x4a,0xb0,0x5e,0xf8,0xe4,0x38,0x80,0x7e,0x78,0xb2,0x40,0xe0,
+ 0x15,0x74,0x9e,0x95,0xa7,0xd1,0x69,0x57,0x23,0x8e,0x4a,0x53,0xa3,0x61,0x19,0xc2,
+ 0x8f,0x13,0xc4,0xe7,0xc2,0x5c,0x34,0x48,0xc2,0x43,0x6f,0x71,0xa8,0x0e,0x76,0x36,
+ 0x21,0xc3,0x7b,0x8e,0x9b,0x8f,0x1b,0x4a,0xe8,0x8b,0x5a,0x1c,0xaf,0xf6,0x95,0xa4,
+ 0x76,0x8d,0xba,0x6c,0x7b,0x76,0x1a,0x51,0x13,0x27,0xb4,0x94,0x43,0xbc,0xc7,0xe9,
+ 0x8f,0x7a,0xb3,0x95,0x82,0xe4,0x19,0x3c,0x77,0x1c,0x73,0xc9,0x6d,0x7c,0x15,0x21,
+ 0x7e,0xe3,0xb1,0xe1,0x49,0x50,0x1b,0xba,0xb7,0xf5,0x0a,0x52,0x94,0xa2,0x25,0x29,
+ 0x4a,0x22,0x52,0x94,0xa2,0x25,0x29,0x4a,0x22,0xc6,0x35,0x37,0x52,0x2c,0x3a,0x43,
+ 0x80,0xdf,0x33,0x2c,0x9e,0x62,0x60,0x58,0xac,0xd1,0x95,0x26,0x4b,0xc7,0x8e,0x48,
+ 0x1d,0x92,0x84,0x82,0x47,0x52,0xd4,0xa2,0x94,0x25,0x3e,0xea,0x52,0x47,0xbd,0x79,
+ 0xd8,0xdd,0x0e,0xe3,0xb2,0x2d,0xd1,0x6a,0xe5,0xd3,0x34,0xbf,0x28,0xb2,0xca,0xc9,
+ 0x8f,0x6c,0xb6,0xa5,0x5c,0xb7,0x02,0x22,0x54,0x4b,0x6d,0x27,0xea,0x7b,0x95,0x29,
+ 0x5f,0xbc,0xa5,0x28,0xf0,0x01,0x00,0x4a,0xaf,0x16,0x6d,0xdd,0xab,0x55,0x35,0x14,
+ 0x69,0x46,0x35,0x31,0x47,0x14,0xc5,0x24,0xab,0xed,0x37,0x1b,0xe3,0xa6,0x6d,0xcd,
+ 0x3c,0xa5,0x43,0x9f,0x52,0x86,0x41,0x52,0x07,0xa7,0xce,0x5c,0xe4,0x10,0x94,0x1a,
+ 0xd5,0xbe,0x1e,0x9b,0x50,0xff,0x00,0x48,0x4d,0x4c,0x37,0xec,0x82,0x19,0x73,0x04,
+ 0xc7,0x1c,0x43,0xb3,0x12,0xe2,0x0f,0x97,0x3e,0x47,0xab,0x71,0x41,0xf4,0x23,0xd1,
+ 0x6b,0xf5,0xf9,0x78,0x07,0x8f,0x30,0x1a,0xc5,0x62,0x98,0x95,0x3e,0x11,0x47,0x25,
+ 0x75,0x51,0xb3,0x18,0x2f,0xeb,0xd0,0x0f,0x32,0x76,0x0b,0xd3,0x5a,0x5c,0x6c,0x14,
+ 0xae,0xf0,0xc8,0xda,0x18,0xc0,0xb1,0xd6,0x35,0x67,0x2b,0x87,0xd3,0x91,0xdd,0xd8,
+ 0x3f,0x62,0xc5,0x75,0x24,0x2a,0x14,0x35,0x8e,0x0b,0xc4,0x1f,0x47,0x1d,0x07,0xb7,
+ 0xd1,0xb2,0x3b,0xfc,0xea,0x02,0x46,0xee,0xdf,0x73,0x56,0xad,0xaf,0x69,0x6b,0xf7,
+ 0xe7,0xd0,0xd4,0xdc,0x86,0x69,0x54,0x5b,0x2d,0xb1,0xc2,0x78,0x91,0x23,0x8e,0x7a,
+ 0x97,0xc7,0x07,0xcb,0x40,0x21,0x4a,0x20,0x8f,0x64,0x82,0x0a,0x85,0x6e,0x69,0x93,
+ 0x22,0xda,0x60,0x3f,0x2e,0x53,0xcd,0x43,0x85,0x19,0xa5,0x3a,0xeb,0xce,0xa8,0x21,
+ 0xb6,0x9b,0x48,0xe5,0x4a,0x24,0xf6,0x00,0x00,0x4f,0x3e,0xc0,0x55,0x13,0x6e,0xa7,
+ 0x5c,0x2f,0x5b,0xb6,0xd7,0xe9,0x13,0x6d,0x31,0xa5,0xcf,0x81,0xe7,0x0b,0x56,0x39,
+ 0x6b,0x8e,0xd2,0x96,0xe2,0x98,0x0a,0x21,0x1c,0x36,0x07,0x25,0xc7,0x14,0x4a,0xc8,
+ 0xe3,0x9e,0x54,0x13,0xe8,0x91,0x5f,0x2f,0xe0,0x74,0x53,0xe7,0xec,0x7a,0x4c,0x43,
+ 0x11,0xff,0x00,0x85,0x9b,0xbb,0xa0,0x1f,0x75,0x80,0xf8,0x0e,0x6e,0x7a,0x02,0x79,
+ 0x2b,0x20,0xf2,0x21,0x65,0x9b,0xca,0xb2,0xff,0x00,0x0f,0x5d,0xd3,0x65,0x9b,0x9a,
+ 0xc2,0xb2,0x97,0x33,0x08,0x91,0x05,0xca,0xc9,0x35,0xa6,0xd1,0x3e,0x0b,0x45,0x96,
+ 0xe4,0x36,0xea,0x14,0xa0,0x92,0x8e,0x48,0xeb,0x41,0x41,0xe4,0x8e,0x01,0x0b,0x47,
+ 0x6e,0x41,0x2a,0xd8,0x5b,0xd9,0xcd,0xe1,0xe0,0x3b,0x57,0xd4,0x79,0xd2,0xdd,0x4b,
+ 0x66,0x5d,0xa5,0xdb,0x5b,0x08,0x24,0x75,0x38,0xec,0x91,0xe4,0x25,0x29,0x1e,0xff,
+ 0x00,0xd6,0x15,0x1e,0x3d,0x92,0xa3,0xed,0x5f,0xce,0xcc,0xf6,0xfd,0xfe,0x8d,0xfa,
+ 0x15,0x68,0xc6,0xa5,0x86,0xd5,0x7f,0x94,0xb5,0x5c,0xaf,0x0e,0x34,0x79,0x06,0x53,
+ 0x81,0x3c,0xa0,0x1e,0x4f,0x21,0x08,0x4a,0x1b,0xe4,0x76,0x3d,0x05,0x5f,0xbd,0x51,
+ 0x5f,0x76,0xfa,0x84,0xce,0xea,0xf7,0x5b,0x80,0x6d,0xfa,0xc6,0xe1,0x9d,0x8d,0x5a,
+ 0xae,0xe1,0xfc,0x89,0x6c,0x2b,0x80,0xeb,0xcd,0xa5,0x4a,0x7d,0x01,0x7e,0xde,0x4b,
+ 0x29,0x75,0x3c,0x8f,0xdf,0x5a,0x87,0x72,0x91,0x58,0xc8,0x28,0xe8,0xb1,0x4c,0xd1,
+ 0x2c,0xd4,0x2d,0xd3,0x49,0x13,0x8c,0x84,0x8e,0x03,0x23,0xdc,0x91,0xd3,0x51,0x1b,
+ 0x7a,0xf9,0x2f,0x44,0x96,0xc7,0x63,0xc9,0x59,0x4d,0x83,0x62,0x09,0xd5,0x1d,0x8a,
+ 0xe9,0xb6,0x10,0xed,0xd1,0x8b,0x16,0x44,0x87,0x91,0x92,0x2a,0xe2,0xe4,0x62,0xef,
+ 0x42,0xa4,0xa5,0x6b,0x5b,0x2a,0x4f,0x20,0xf6,0x6d,0xd6,0xd2,0x7b,0xfe,0xd3,0x20,
+ 0xfa,0x56,0x9f,0xb3,0x78,0x45,0x65,0x96,0xcd,0x4c,0xc7,0x5b,0xba,0x64,0xd6,0x9b,
+ 0xd6,0x0e,0xa9,0x49,0x55,0xce,0x44,0x5f,0x31,0x89,0x69,0x65,0x20,0xa9,0x48,0x0d,
+ 0x91,0xc7,0xcf,0xc0,0x40,0x52,0x56,0x48,0x2a,0xe4,0x8e,0x05,0x5a,0x24,0xfb,0x95,
+ 0xbb,0x1e,0x80,0x1f,0x9b,0x2a,0x2d,0xb2,0x0b,0x65,0x0d,0x07,0x1f,0x71,0x2c,0xb4,
+ 0x92,0x48,0x4a,0x13,0xc9,0x20,0x0e,0x49,0x00,0x0f,0xa9,0x00,0x57,0x34,0x0e,0x48,
+ 0x15,0x69,0x06,0x7b,0xc7,0x69,0x3b,0x6e,0xc2,0x4b,0x32,0x47,0x3d,0xd6,0x20,0x1b,
+ 0x17,0x6e,0x6c,0x6d,0x7d,0xaf,0x71,0xbd,0x87,0x45,0x53,0x13,0x0d,0xae,0x17,0x9e,
+ 0x6d,0xc4,0xc5,0x89,0x07,0x5f,0x35,0x1e,0x2c,0x08,0xcd,0x43,0x82,0xc6,0x45,0x3d,
+ 0x96,0x23,0xb0,0x90,0x96,0xda,0x6d,0x32,0x16,0x94,0xa1,0x20,0x7a,0x00,0x00,0x00,
+ 0x7e,0x15,0xaf,0x6b,0x2f,0xd6,0x2b,0xa2,0x6f,0x7a,0xb9,0x9b,0xdc,0x50,0x79,0x44,
+ 0xbb,0xe4,0xe9,0x09,0x20,0xf3,0xd9,0x52,0x16,0xa1,0xff,0x00,0x3a,0xc4,0x2b,0xec,
+ 0x6a,0x16,0x96,0xd2,0xc4,0xd7,0x72,0x1a,0xdf,0xd8,0x2c,0x59,0xe4,0xab,0x65,0xdb,
+ 0xfe,0xcf,0x6f,0x98,0xbd,0x82,0xdf,0xa8,0x7a,0x0b,0xaa,0xb7,0x6d,0x32,0xba,0x5f,
+ 0x6d,0x4d,0x33,0x75,0xb2,0xde,0x60,0x31,0x74,0x6d,0x2e,0x29,0x29,0x5f,0x48,0x2a,
+ 0x00,0x74,0x82,0x42,0x9b,0x59,0x42,0x89,0x42,0xd2,0xb4,0xab,0xa5,0x7d,0xf5,0x46,
+ 0x8e,0x78,0x78,0x6e,0x1f,0x01,0xd6,0xab,0x85,0xdd,0x8c,0xea,0x3e,0x0d,0xe4,0xa1,
+ 0x7d,0x59,0x9d,0xbe,0x59,0x92,0xa9,0xc1,0xd3,0xf3,0x25,0x2d,0x12,0x95,0xa8,0x93,
+ 0xc1,0x50,0x77,0xa0,0x72,0x01,0x04,0x90,0x2b,0xbb,0xf0,0xfc,0xde,0xae,0x35,0x3b,
+ 0x0d,0x46,0x8e,0x6a,0xe4,0xc8,0x4c,0xc3,0x65,0x01,0xab,0x35,0xd2,0xee,0x52,0x22,
+ 0xba,0xc2,0x7b,0x88,0x8f,0xad,0x5d,0x90,0x51,0xd2,0x0b,0x6b,0x51,0xe0,0x8e,0x13,
+ 0xc8,0x29,0x40,0x54,0x97,0xb9,0xce,0xd1,0x7d,0x14,0x7e,0xf9,0x9a,0xe4,0x19,0x46,
+ 0x19,0x77,0x89,0x6e,0x6d,0x57,0x0b,0x4d,0xbc,0x79,0x6f,0xcf,0x61,0x69,0x3d,0x6d,
+ 0x86,0x54,0xb7,0xdc,0x2b,0x73,0x90,0x12,0x85,0x36,0x86,0xcf,0x7e,0x49,0x3e,0xa2,
+ 0xd9,0xd2,0xcd,0x1b,0x8b,0x09,0xf4,0xd9,0x65,0x1b,0x14,0x32,0x34,0x3c,0x7b,0xee,
+ 0xaa,0x7b,0x75,0xfa,0x5e,0xbd,0x21,0xd7,0x0b,0xfe,0x3e,0xed,0xd6,0xe1,0x7c,0x90,
+ 0x92,0x99,0x0f,0x5d,0x2e,0xce,0xa5,0x52,0xe6,0x3a,0xb1,0xcb,0x92,0x1c,0x00,0x92,
+ 0x9f,0x31,0x7d,0x4e,0x24,0x29,0x4a,0x51,0x42,0xd0,0xa2,0xa3,0xd5,0xcd,0x6a,0x0a,
+ 0xcb,0xb5,0x5b,0x51,0x2e,0xfa,0xc7,0xa8,0xd9,0x36,0x6d,0x77,0x47,0xf4,0xeb,0xbc,
+ 0xc5,0xcb,0x79,0x0d,0xf2,0x50,0xc2,0x54,0x78,0x43,0x69,0x27,0xbf,0x4a,0x12,0x12,
+ 0x81,0xcf,0x7e,0x12,0x2b,0x11,0xac,0x9b,0x2f,0xa4,0x03,0xca,0xc6,0x3a,0xc5,0xc6,
+ 0xdc,0x2c,0x92,0xdb,0x87,0xb9,0x71,0xd3,0xbb,0xfe,0x4c,0x8e,0xb2,0x8b,0x55,0xc6,
+ 0x04,0x15,0x81,0xfb,0x3c,0x48,0x6e,0x52,0x81,0x3f,0x8f,0x31,0x87,0x1f,0x99,0xae,
+ 0x8a,0x4d,0xbe,0x4c,0x36,0x22,0x3c,0xfb,0x0e,0x32,0xd4,0xb6,0xcb,0xd1,0xd6,0xb4,
+ 0x90,0x1d,0x40,0x5a,0x90,0x54,0x93,0xee,0x3a,0x90,0xb4,0xf3,0xf5,0x49,0x1e,0xd5,
+ 0x28,0x74,0xff,0x00,0x4d,0x5e,0xff,0x00,0xe1,0xe1,0xaa,0xd9,0x83,0x8c,0xa9,0x28,
+ 0x7b,0x27,0xb6,0x21,0xa5,0x29,0x3c,0x75,0x25,0x82,0x1b,0xea,0x1f,0x51,0xd5,0x39,
+ 0x49,0xe7,0xea,0x08,0xf6,0xa9,0x39,0xb0,0xcd,0xbe,0x60,0x3b,0x8b,0xdb,0x36,0x2e,
+ 0xf6,0x6f,0x66,0x17,0x55,0xe2,0x99,0x24,0xff,0x00,0x85,0x48,0x70,0xa0,0x3a,0x85,
+ 0xa1,0x0b,0x2c,0xba,0x47,0x75,0x35,0xd6,0xe2,0x57,0xd2,0x08,0xf9,0x90,0x3d,0x8a,
+ 0x92,0xad,0x13,0x11,0xcd,0x50,0xe1,0x50,0xcf,0x57,0x33,0x4b,0xa3,0x8e,0x5e,0xcc,
+ 0xdb,0x91,0xfc,0xb0,0x76,0xff,0x00,0x23,0x6e,0x47,0x2a,0x46,0xc6,0x5c,0x40,0xf2,
+ 0x55,0xcd,0xa4,0x96,0xcf,0xb6,0xf5,0x57,0x0c,0xb7,0x71,0xd5,0xf1,0x77,0xa8,0x51,
+ 0xf8,0xfa,0xf5,0xbe,0x84,0xff,0x00,0xde,0xb7,0x27,0x88,0x76,0x1a,0xbc,0x33,0x77,
+ 0x59,0xdb,0x7e,0x52,0x9b,0x8d,0x72,0x75,0x8b,0xa3,0x0b,0x50,0xfe,0xb0,0x3c,0xca,
+ 0x14,0xb2,0x3f,0x0f,0x37,0xcd,0x4f,0xf6,0x4d,0x5d,0x76,0x3b,0x81,0x63,0x18,0x7c,
+ 0x66,0xe3,0xd8,0x71,0xcb,0x4d,0x92,0x3b,0x60,0x04,0x35,0x6e,0x82,0xd4,0x74,0xa4,
+ 0x0f,0x4e,0x02,0x12,0x38,0xaa,0xca,0xf1,0x87,0xc2,0xdc,0x85,0xa8,0xd8,0x06,0x58,
+ 0x13,0xcb,0x17,0x1b,0x5b,0xd6,0xd5,0x28,0x0f,0x45,0xc7,0x77,0xcc,0xee,0x7f,0x11,
+ 0x27,0xb7,0xfb,0xa7,0xe9,0x5a,0x36,0x03,0x9e,0x1b,0x98,0x73,0x24,0x31,0xb6,0x2e,
+ 0xcd,0xa5,0x8f,0x68,0xb9,0xbd,0xce,0xcf,0xbf,0x02,0xdb,0x33,0xcd,0x4c,0xf8,0xb4,
+ 0x46,0x56,0x82,0xd9,0x26,0xeb,0x67,0x6d,0x8f,0x53,0x9b,0x5c,0xc7,0x5c,0x7f,0x08,
+ 0xbc,0x2d,0x0c,0x5e,0xa1,0x24,0x75,0x74,0x27,0xd1,0x32,0x5b,0x1f,0xc6,0xdf,0x24,
+ 0xf1,0xfb,0xc9,0x2a,0x4f,0xaf,0x49,0x17,0x17,0xac,0x3a,0x51,0x8a,0xee,0x4f,0x49,
+ 0x66,0xe3,0x57,0x75,0x33,0x3a,0xcd,0x76,0x61,0x12,0x21,0x5c,0x63,0x10,0xe1,0x61,
+ 0xce,0x9e,0xa6,0x64,0xb2,0xa0,0x78,0x24,0x72,0x08,0x20,0xf0,0xa4,0x92,0x93,0xca,
+ 0x54,0x41,0xf3,0xfd,0x03,0x15,0xbc,0x5d,0x6c,0x17,0x5b,0xe4,0x3b,0x74,0x89,0x56,
+ 0x9b,0x52,0xd9,0x44,0xe9,0x6d,0x20,0xa9,0x11,0x8b,0xa5,0x41,0xa2,0xbe,0x3f,0x64,
+ 0x28,0xa0,0x80,0x4f,0x6e,0x78,0x1c,0xf2,0x40,0x36,0x77,0xe1,0x55,0xb9,0xb3,0x93,
+ 0x63,0x92,0x34,0x86,0xff,0x00,0x28,0xae,0xe7,0x68,0x6d,0x52,0xec,0x6e,0x39,0xea,
+ 0xec,0x4e,0x79,0x71,0x8e,0x7d,0xcb,0x6a,0x57,0x52,0x47,0xaf,0x42,0x88,0xf4,0x6e,
+ 0xa9,0xf1,0x13,0x01,0x3b,0x66,0x0c,0x34,0xda,0x68,0x48,0xd7,0xa7,0x9d,0xac,0x43,
+ 0xbd,0x5b,0xb5,0xff,0x00,0x09,0x07,0x80,0x90,0x3f,0xee,0x3b,0x82,0xa2,0x8e,0x96,
+ 0xea,0x16,0x7b,0xe1,0xbb,0xba,0x59,0x4c,0x5c,0x18,0x71,0xf6,0x22,0xb8,0x22,0x5d,
+ 0xed,0xe8,0x3c,0x33,0x77,0xb7,0xa8,0x85,0x25,0xc6,0xc9,0xed,0xcf,0x1c,0x2d,0x0a,
+ 0xf5,0x4a,0x81,0x4a,0xbf,0x7d,0x26,0xfa,0x30,0x3c,0xe6,0xc9,0xa9,0x98,0x6d,0x9f,
+ 0x2a,0xc6,0xe7,0xb5,0x74,0xb1,0x5d,0xa3,0x22,0x5c,0x49,0x4d,0x1e,0xcb,0x42,0x87,
+ 0xa1,0x1e,0xa9,0x50,0x3c,0x85,0x24,0xf7,0x49,0x04,0x10,0x08,0x22,0xa0,0xcf,0x88,
+ 0x86,0xd4,0xd1,0xaf,0xba,0x60,0xbc,0x8e,0xc3,0x0b,0xcc,0xce,0xf1,0xa6,0x56,0xf4,
+ 0x50,0xcb,0x7c,0xbb,0x3e,0x28,0xf9,0x9c,0x8a,0x78,0xee,0xa2,0x3b,0xad,0xb1,0xdf,
+ 0xe6,0xe5,0x20,0x7d,0xe1,0x35,0x1e,0xbc,0x23,0xb7,0x7a,0xbc,0x1b,0x32,0xff,0x00,
+ 0x33,0x19,0x54,0xf2,0x9c,0x7e,0xfa,0xf1,0x72,0xc2,0xf4,0x97,0x78,0x4c,0x39,0xe7,
+ 0xd6,0x38,0xea,0xf4,0x4b,0xfe,0xc0,0x1f,0xeb,0x40,0x00,0x12,0xe9,0x35,0xd0,0x72,
+ 0x8e,0x63,0x8f,0x32,0x61,0xc2,0x73,0xb4,0xad,0xd9,0xe3,0xa1,0xea,0x3c,0x9d,0xc8,
+ 0xf7,0x1e,0x0a,0x09,0x63,0xec,0xdd,0x6f,0x05,0x71,0x34,0xa5,0x2b,0x77,0x51,0x25,
+ 0x29,0x4a,0x22,0x52,0x94,0xa2,0x25,0x46,0x0f,0x10,0xbd,0xd2,0x0d,0xb0,0x68,0x24,
+ 0xe9,0x56,0xa9,0x48,0x67,0x35,0xbf,0xf5,0x5b,0x6c,0x68,0x3d,0xd4,0xda,0xc8,0xfb,
+ 0xd9,0x20,0x7f,0xb2,0x41,0xe4,0x1e,0xe3,0xad,0x4d,0x82,0x08,0x35,0x27,0xeb,0xcf,
+ 0x9f,0x88,0x76,0xe5,0x17,0xb9,0x1d,0xc5,0xde,0x26,0x40,0x96,0xe3,0xd8,0x95,0x80,
+ 0xaa,0xd1,0x65,0x6c,0xab,0xee,0xd4,0xda,0x14,0x43,0xb2,0x12,0x07,0x6f,0xbd,0x70,
+ 0x29,0x41,0x5e,0xa5,0x01,0xb0,0x7f,0x64,0x00,0x45,0xa1,0x30,0x1c,0x1e,0xf3,0xaa,
+ 0x39,0xc5,0x9b,0x16,0xb1,0xb0,0x65,0xde,0xaf,0x12,0xd1,0x16,0x3a,0x54,0x4f,0x1d,
+ 0x4a,0x3d,0xd4,0xb2,0x01,0xe1,0x29,0x1c,0xa9,0x4a,0xf6,0x00,0x9f,0x6a,0xbf,0x9d,
+ 0x06,0xd1,0x9b,0x2e,0x81,0x69,0x5d,0x8f,0x0a,0xb2,0x24,0x29,0x88,0x0d,0x73,0x22,
+ 0x57,0x4f,0x0b,0x97,0x21,0x5d,0xdd,0x79,0x5d,0xcf,0x75,0x2b,0x9e,0x07,0x3f,0x28,
+ 0xe9,0x48,0xec,0x91,0x50,0x97,0xc2,0x6f,0x6e,0x7f,0x66,0xda,0x2e,0x5a,0xc1,0x7a,
+ 0x8a,0xa1,0x26,0x77,0x5d,0xba,0xc2,0x97,0x12,0x38,0x4b,0x00,0xf0,0xfc,0x81,0xf8,
+ 0xa9,0x43,0xcb,0x07,0xb7,0x01,0x0e,0x7a,0x85,0x0a,0xb1,0x95,0xad,0x2d,0x21,0x4b,
+ 0x5a,0x82,0x10,0x90,0x4a,0x94,0xa3,0xc0,0x03,0xdc,0x9a,0xf9,0x4b,0xe2,0x5e,0x63,
+ 0x38,0x85,0x77,0xd9,0x54,0xee,0xfe,0x5c,0x27,0xbd,0xe6,0xff,0x00,0x1f,0xcb,0xc7,
+ 0xad,0xd6,0x46,0x06,0x69,0x1a,0x8f,0x8a,0xe8,0xb3,0xec,0x2e,0x06,0xa3,0xe1,0x77,
+ 0xac,0x5e,0xea,0xe4,0x96,0xad,0x97,0x78,0xab,0x87,0x28,0xc3,0x74,0xb4,0xe9,0x69,
+ 0x63,0x85,0x80,0xa1,0xe9,0xc8,0xe4,0x1f,0xc0,0x9a,0xd6,0xfa,0x57,0xb5,0xed,0x24,
+ 0xdb,0x5c,0x29,0x77,0x9c,0x67,0x16,0x62,0x14,0xc8,0xcc,0x38,0xf3,0xf7,0x89,0x01,
+ 0xc9,0xb3,0x42,0x02,0x0f,0x5f,0x42,0x95,0xd4,0xa4,0xf2,0x9e,0x41,0x43,0x40,0x75,
+ 0x7d,0x09,0xae,0xbf,0x6e,0xdb,0xc1,0xc3,0xb7,0x29,0x96,0x66,0xd6,0x2c,0x71,0x0e,
+ 0xb2,0xe6,0x3b,0x20,0x06,0x1e,0x7d,0x63,0x8b,0x94,0x52,0x7a,0x7e,0x25,0xb4,0xf6,
+ 0x29,0x4f,0x58,0x23,0x83,0xdc,0x05,0x36,0x4f,0x05,0x65,0x29,0xde,0xd5,0xcc,0x67,
+ 0x38,0x9e,0x11,0xaf,0x0d,0xa8,0x2f,0x8c,0x1b,0x17,0x32,0xe4,0x5e,0xe0,0x11,0x71,
+ 0xc1,0xdb,0xad,0xed,0xd2,0xea,0x71,0xa5,0xdd,0xe0,0xab,0x73,0x77,0x1e,0x28,0x96,
+ 0xd7,0x6c,0x93,0x71,0x4d,0x1a,0x7d,0xf9,0x13,0x24,0xa0,0xb5,0x23,0x2c,0x5b,0x6a,
+ 0x65,0x2c,0x20,0x8f,0x98,0x45,0x42,0xc0,0x59,0x5f,0x7e,0x3c,0xc5,0x04,0xf4,0xf0,
+ 0x4a,0x42,0x89,0x0a,0x4f,0x55,0xe1,0x05,0xa5,0x0b,0x99,0x78,0xcd,0x75,0x36,0x68,
+ 0x2a,0x4b,0x08,0x4d,0x8e,0x12,0x95,0xdf,0xa9,0xc5,0xf4,0xbd,0x21,0x47,0xe8,0x40,
+ 0x0c,0x80,0x7d,0xfc,0xc5,0x7d,0x2a,0x18,0xee,0x87,0x00,0x6b,0x4e,0x77,0x1b,0xa8,
+ 0x38,0xc4,0x06,0xba,0x62,0x45,0xbd,0x3f,0xf0,0x6c,0x36,0x3f,0x61,0x97,0x15,0xe6,
+ 0x34,0x80,0x3d,0xf8,0x42,0xd2,0x3f,0x4a,0xba,0x5d,0xa2,0xe8,0xea,0xb4,0x2b,0x6f,
+ 0x78,0x86,0x2b,0x26,0x32,0x63,0x5d,0xd1,0x1b,0xe3,0x2e,0x89,0x1c,0x15,0x7c,0x5b,
+ 0xc7,0xcc,0x74,0x28,0x8e,0xca,0x28,0xe4,0x37,0xcf,0xd1,0xb1,0x5d,0xc7,0x33,0x33,
+ 0x0d,0xcb,0x39,0x59,0x94,0xb8,0x58,0xb1,0xaa,0xd3,0xb9,0xdd,0xce,0x6d,0x83,0x89,
+ 0x27,0xd2,0xc2,0xc0,0x00,0x35,0x6c,0x37,0x56,0xb1,0xea,0x92,0x4b,0xbb,0xc1,0x44,
+ 0x6f,0x18,0x0d,0x57,0x10,0xec,0x18,0x5e,0x9c,0x44,0x96,0x03,0xd3,0x1e,0x5d,0xee,
+ 0xe0,0xc2,0x09,0x0a,0x0d,0x23,0xa9,0xa8,0xfd,0x5f,0x54,0xa9,0x4a,0x7c,0xf1,0xf5,
+ 0x68,0x1f,0x61,0x53,0xd7,0x18,0x74,0xe2,0xba,0x6d,0x68,0x72,0xe0,0xb5,0x28,0xdb,
+ 0x6d,0x0c,0xaa,0x42,0xdc,0x3f,0x31,0xf2,0xd9,0x1d,0x64,0x93,0xef,0xf2,0x9a,0xa4,
+ 0x0d,0xcf,0x6a,0x7a,0xf7,0x23,0xba,0x7b,0xdd,0xd6,0x17,0xf4,0x8b,0x7c,0xcb,0x9b,
+ 0x56,0x9b,0x4a,0x1b,0x57,0x50,0x5c,0x66,0xd4,0x19,0x69,0x49,0xff,0x00,0xc4,0xe0,
+ 0xb9,0xc7,0xd5,0xc3,0x57,0x3f,0xb8,0x5b,0x81,0xc7,0xf6,0xf7,0xa8,0xf2,0xd2,0xae,
+ 0x83,0x17,0x1a,0xb8,0x29,0x2a,0x1e,0xc4,0x46,0x5f,0x15,0xab,0xe6,0x6c,0x23,0xec,
+ 0xdc,0x2f,0x06,0xc2,0xdc,0x2c,0xf7,0x6a,0x73,0xba,0xea,0x79,0x67,0xed,0x7b,0x7b,
+ 0x29,0x23,0x7d,0xdc,0xe7,0x2a,0xaa,0xc6,0xb6,0x5f,0x97,0xeb,0xbe,0xd7,0x74,0xff,
+ 0x00,0x2f,0xc1,0xac,0xad,0xdd,0xb2,0x49,0x17,0x7b,0x9b,0x77,0x15,0x39,0x29,0x98,
+ 0xe5,0xc8,0xc5,0xc0,0x1b,0x59,0x53,0xab,0x48,0x21,0x0e,0x34,0xe8,0xe0,0x72,0x7e,
+ 0xf7,0xd3,0x81,0xdb,0xfb,0xb7,0xf8,0x54,0x6b,0xa4,0xc4,0xa4,0xbc,0xce,0x3b,0x00,
+ 0x9f,0x51,0x22,0xe9,0xc9,0x1f,0xe0,0x42,0xaa,0xca,0xb6,0x4f,0x88,0x7f,0x90,0xbb,
+ 0x50,0xd3,0x4b,0x62,0xb9,0x05,0x56,0x94,0xdc,0x17,0xd5,0xfb,0xa6,0x4a,0xd7,0x24,
+ 0x83,0xf9,0x17,0x88,0xfd,0x2b,0x76,0x25,0x41,0x69,0x0a,0x49,0x0a,0x49,0x1c,0x82,
+ 0x3d,0x08,0xa9,0xab,0xbe,0x23,0xe2,0xf4,0x35,0x75,0x14,0xd4,0x9a,0x0c,0x6d,0x91,
+ 0xfa,0x49,0x04,0x9b,0x6a,0x36,0xf1,0xb7,0xa6,0xdc,0x2a,0x08,0x1a,0x40,0x25,0x53,
+ 0x3d,0xdb,0xc2,0xaf,0x5d,0x6d,0xcc,0xa9,0x71,0xe2,0xe3,0xf7,0x55,0x01,0xc8,0x6e,
+ 0x25,0xd4,0x25,0x47,0xf0,0x1e,0x6a,0x50,0x3f,0xbc,0xd6,0x00,0xf6,0xc1,0x35,0xee,
+ 0x26,0x43,0x6d,0xb4,0x49,0xd3,0xbb,0x83,0x2e,0xce,0x7d,0x2c,0x26,0x52,0x1d,0x69,
+ 0xf8,0xac,0xf3,0xfb,0xee,0xba,0xd2,0xd6,0x96,0xd0,0x07,0x72,0xa5,0x1f,0xcb,0x93,
+ 0xc0,0xab,0xcc,0xba,0x5e,0x6d,0xf6,0x38,0xe9,0x7e,0xe5,0x3a,0x35,0xbd,0x85,0x28,
+ 0x20,0x3b,0x29,0xe4,0xb4,0x92,0xa3,0xe8,0x39,0x51,0x03,0x9e,0xc7,0xb5,0x75,0x12,
+ 0xf5,0x23,0x13,0x83,0x02,0x54,0xd7,0xf2,0x6b,0x4b,0x71,0x22,0xb4,0xa7,0x9e,0x77,
+ 0xe3,0x5b,0x21,0xb4,0x24,0x12,0xa5,0x1e,0x15,0xe8,0x00,0x27,0xf4,0xa5,0x3f,0xc5,
+ 0x0c,0x7e,0xdb,0xc2,0xc7,0xdf,0xf0,0xbb,0x9f,0x67,0x5b,0xf4,0x43,0x4e,0xc5,0x50,
+ 0x5b,0xc4,0xd2,0xcb,0x56,0x82,0xc1,0xc0,0x34,0x27,0x11,0x22,0xef,0x7e,0x7c,0x22,
+ 0xf3,0x90,0x4d,0x69,0x20,0xbd,0x72,0xb8,0xba,0x4b,0x31,0x9b,0xe3,0xb9,0x42,0x5b,
+ 0x4f,0x9b,0xd0,0xdf,0x3e,0x8f,0xf5,0x1e,0x4a,0x8a,0x8c,0x59,0xc9,0xb1,0xd9,0x58,
+ 0xb6,0x51,0x75,0xb0,0xca,0xe9,0x5c,0xdb,0x74,0xc7,0x60,0xbb,0xe5,0x72,0x52,0x5c,
+ 0x6d,0x65,0x0a,0xe9,0xfa,0x8e,0x41,0xe2,0xa6,0x16,0xda,0x10,0xf6,0xef,0xbc,0x42,
+ 0xe4,0x66,0xf3,0x1a,0x71,0x16,0xc8,0xb3,0xdd,0xc9,0x14,0xd3,0x87,0x95,0xb5,0x1e,
+ 0x39,0x4a,0x21,0xb6,0x4f,0xa1,0x29,0x57,0xc3,0x24,0xfd,0x42,0x55,0xc5,0x70,0xb4,
+ 0xc3,0x45,0x86,0xa4,0xf8,0x95,0xdf,0xec,0x12,0xa1,0x99,0x16,0x9b,0x56,0x5b,0x72,
+ 0xbb,0xce,0x41,0x48,0x28,0xf8,0x76,0x24,0x2d,0xc4,0x75,0x8f,0xe0,0x5a,0xfc,0x94,
+ 0x11,0xef,0xe6,0x71,0xef,0x5d,0x92,0x87,0x16,0xfb,0x22,0x37,0xd2,0xd6,0xbb,0x54,
+ 0x91,0x43,0xdb,0x4a,0x7c,0x4b,0x9c,0x49,0x23,0xdb,0x80,0x3a,0x69,0x03,0x6b,0x05,
+ 0x6c,0xe6,0xea,0xdc,0x78,0x9b,0x29,0x93,0xa8,0x3a,0x10,0xbd,0x3e,0xf0,0xc9,0xbc,
+ 0x60,0x6f,0xa0,0x19,0xd6,0xdc,0x6c,0x5c,0xa6,0xa5,0x3d,0xc0,0x92,0x87,0x93,0x35,
+ 0xe0,0x08,0xf5,0x09,0x5a,0x54,0x01,0xf7,0x09,0x15,0xd4,0xf8,0x46,0x3f,0xe6,0xed,
+ 0xb2,0xfa,0xdf,0xfa,0xbc,0x9a,0x40,0xfe,0xf8,0xd1,0x8f,0xfd,0xea,0x4f,0xee,0x12,
+ 0x0f,0xda,0x9a,0x09,0xa9,0x30,0xf8,0xea,0xf3,0xf1,0xbb,0x93,0x7c,0x7d,0x79,0x8a,
+ 0xe0,0xa8,0x9b,0xe0,0xfd,0x2c,0x2f,0x42,0x73,0x18,0xbf,0xbc,0xd6,0x48,0xa7,0x0f,
+ 0xe4,0xa8,0xac,0x0f,0xfd,0x86,0xb8,0x24,0x75,0x92,0xd7,0xe5,0x4c,0x42,0x49,0x4d,
+ 0xdc,0x67,0x6b,0xcf,0xab,0xf9,0xfd,0x95,0xd9,0x16,0x91,0xa0,0x74,0x53,0xc6,0xa1,
+ 0xcf,0x8a,0xa6,0x04,0xee,0x59,0xb6,0x05,0x5e,0x23,0xb6,0x16,0xee,0x37,0x76,0x8d,
+ 0x3d,0xc3,0xc7,0x2a,0xf2,0x57,0xd5,0x1d,0x5c,0x7f,0x69,0xe6,0xc9,0xfc,0x12,0x4f,
+ 0xb5,0x6b,0x1f,0x10,0xfd,0x6e,0xcc,0xb4,0x2b,0x73,0x9a,0x57,0x7d,0xb3,0x64,0x97,
+ 0x78,0x36,0x06,0xe0,0xb4,0xfc,0xcb,0x3c,0x79,0xae,0x26,0x1c,0xb0,0xdc,0xb7,0x3c,
+ 0xe0,0xe3,0x21,0x5d,0x0a,0x2b,0x6d,0x41,0x24,0x91,0xcf,0x01,0x3d,0xfe,0x51,0xc4,
+ 0xe1,0xd5,0x6c,0x32,0x36,0xb0,0x69,0x0e,0x51,0x8c,0xb3,0x21,0x95,0x33,0x90,0x5a,
+ 0x1f,0x8b,0x1e,0x57,0x3d,0x6d,0x85,0x3a,0xd1,0xf2,0x9c,0xe4,0x7a,0x80,0xa2,0x95,
+ 0x76,0xfa,0x56,0x22,0x8a,0x92,0x5c,0xb9,0x3e,0x19,0x8d,0x3d,0xc0,0xc7,0x21,0xd5,
+ 0xe8,0x1a,0xeb,0x38,0x1f,0x62,0xbd,0x92,0x1e,0x1c,0xc5,0x1b,0xfc,0x38,0xf4,0x47,
+ 0x05,0xb4,0xed,0x75,0xab,0xa4,0x50,0xde,0x4a,0xe6,0x6e,0xd2,0x95,0x7c,0x33,0xe3,
+ 0x8f,0x2d,0x5d,0x05,0x6d,0x18,0x65,0xa2,0x48,0x2d,0xb6,0x7c,0xd1,0xc9,0xee,0xbe,
+ 0xb2,0xae,0xc0,0xa5,0x29,0x8a,0x9b,0xa1,0xda,0x56,0x4f,0xb2,0xcd,0x49,0xb6,0x6a,
+ 0xfe,0x96,0x17,0xe4,0xe2,0x10,0x27,0x22,0x5a,0x01,0x2a,0x5b,0x96,0x85,0xf5,0x01,
+ 0xe4,0x3e,0x41,0xea,0x5c,0x77,0x3a,0x8a,0x02,0xc9,0xf4,0x51,0x42,0xcf,0x24,0x29,
+ 0x7b,0x93,0xc2,0x33,0x52,0x25,0x2b,0x1a,0xce,0xb4,0xce,0xe6,0x3c,0xa9,0x56,0x49,
+ 0x89,0xb9,0x46,0x69,0xc3,0xf7,0x89,0x4b,0x9f,0x76,0xfa,0x38,0xf6,0x08,0x5b,0x68,
+ 0x3f,0x9b,0xa7,0xf0,0xab,0x03,0xb8,0x5b,0xe2,0xdd,0xa0,0x49,0x83,0x3a,0x33,0x33,
+ 0x61,0x49,0x6d,0x4c,0xbf,0x1a,0x43,0x61,0xc6,0xdd,0x6d,0x43,0x85,0x21,0x49,0x3c,
+ 0x85,0x24,0x82,0x41,0x07,0xb1,0x06,0xb6,0x3c,0x47,0x1c,0xc4,0x32,0xc6,0x66,0xac,
+ 0xed,0x5d,0xda,0xc7,0x23,0xbb,0xcd,0x77,0x0f,0x63,0x87,0x77,0xc8,0x10,0xd2,0x00,
+ 0x20,0x6d,0xc5,0xad,0x70,0xa3,0x6b,0x1b,0x24,0x63,0xc1,0x62,0x9a,0x3b,0xaa,0x76,
+ 0x8d,0x6a,0xd3,0x3c,0x7f,0x35,0xb1,0xac,0x7c,0x05,0xda,0x32,0x5e,0xf2,0xba,0xfa,
+ 0x94,0xc3,0x83,0xe5,0x71,0x95,0x1e,0x07,0xcc,0x85,0x85,0x24,0xf6,0xef,0xd3,0xcf,
+ 0xa1,0xaa,0xa2,0xf1,0x1f,0xdb,0x83,0xba,0x0d,0xac,0x71,0xf3,0x8c,0x61,0xa5,0xdb,
+ 0xf1,0xac,0x95,0xf5,0x4c,0x8e,0xa8,0x61,0x4d,0x8b,0x7d,0xc1,0x24,0x29,0xc4,0x25,
+ 0x43,0xf6,0x3a,0x8f,0xde,0xa3,0x82,0x38,0xe5,0x61,0x20,0x06,0xea,0xc4,0xb4,0x53,
+ 0x43,0xe5,0x6d,0xa7,0x3d,0xbc,0xd9,0x71,0xa2,0xf4,0xbd,0x2c,0xc9,0x1d,0x54,0xe8,
+ 0xb0,0x55,0xf3,0xb9,0x61,0xb8,0x00,0x3a,0xd0,0x0f,0xaa,0xa3,0xba,0x80,0x38,0x51,
+ 0x27,0xa1,0x4d,0xa5,0x27,0xf6,0xfa,0x8e,0x59,0xb9,0x8d,0x11,0x83,0xb8,0x4d,0x18,
+ 0xc8,0xb0,0xc9,0x41,0x28,0x97,0x25,0x9f,0x3e,0xdd,0x25,0x5d,0xbe,0x1e,0x62,0x39,
+ 0x53,0x2b,0xe7,0xe9,0xd5,0xf2,0xab,0xea,0x95,0x28,0x76,0xe6,0xb1,0x78,0x0e,0x35,
+ 0x06,0x59,0xc7,0x84,0xf4,0xaf,0xbd,0x2c,0x9b,0x1e,0xba,0x0f,0x51,0xfd,0x4c,0x3c,
+ 0xf5,0xb1,0xb6,0xce,0xb9,0xf4,0xf6,0x19,0x19,0x63,0xca,0xee,0x36,0x27,0xb9,0xb6,
+ 0xf7,0x49,0xa0,0x56,0xac,0x82,0x5b,0xa9,0x39,0x4d,0xb4,0x8b,0x65,0xf5,0xa4,0xa4,
+ 0x27,0x99,0x48,0x48,0x3e,0x68,0x48,0xe0,0x04,0xba,0x92,0x95,0x8e,0x00,0x00,0xa9,
+ 0x49,0x1f,0xb3,0x52,0x1e,0xa8,0x67,0xc3,0x97,0x5e,0xe7,0x6d,0x77,0x74,0x88,0xc7,
+ 0xb2,0x4e,0xbb,0x5d,0x93,0x21,0x7c,0x63,0xb7,0xc8,0xd2,0xd5,0xe5,0x88,0x92,0x43,
+ 0x85,0x2c,0xba,0xb0,0x48,0x00,0xb6,0xe9,0x28,0x25,0x5d,0x92,0x87,0x1c,0x35,0x7c,
+ 0xd5,0xf6,0x50,0x21,0xc0,0x39,0xa6,0xe0,0xac,0x5a,0x52,0x94,0xaa,0xa2,0x52,0x94,
+ 0xa2,0x28,0xb1,0xe2,0x4b,0xb8,0x03,0xa0,0x7b,0x5f,0xbf,0x39,0x01,0xf7,0x18,0xc8,
+ 0xb2,0x52,0x6c,0x36,0xc5,0xb2,0xae,0x95,0xb4,0xa7,0x50,0xaf,0x35,0xd0,0x79,0x05,
+ 0x3d,0x0d,0x07,0x38,0x50,0xee,0x16,0x51,0xf5,0xe4,0x51,0x6e,0x90,0x69,0x9d,0xcf,
+ 0x58,0xf5,0x37,0x1b,0xc2,0xec,0xe8,0x26,0x75,0xe2,0x62,0x23,0x05,0xf1,0xc8,0x65,
+ 0xbf,0x57,0x1d,0x57,0xf2,0xa1,0x01,0x4b,0x3f,0x82,0x4d,0x4b,0x9f,0x17,0xad,0x6f,
+ 0x1a,0x91,0xb9,0x16,0x70,0xf8,0x32,0x54,0xed,0xa3,0x0a,0x88,0x21,0xa9,0x00,0x82,
+ 0x83,0x35,0xde,0x1c,0x90,0xa1,0xf9,0x27,0xc9,0x6c,0xf3,0xe8,0x5a,0x57,0xeb,0x9b,
+ 0x78,0x44,0x68,0x98,0x9b,0x76,0xca,0x35,0x4a,0xe3,0x13,0xa9,0xb8,0x43,0xec,0x6b,
+ 0x4b,0xab,0xe3,0x8f,0x35,0x40,0x2e,0x4a,0xd2,0x3d,0x79,0x4a,0x0b,0x68,0x07,0xd3,
+ 0x87,0x56,0x3e,0xbc,0x6b,0x19,0x97,0x17,0x6e,0x07,0x85,0x4f,0x5d,0xf7,0x9a,0x2c,
+ 0xdf,0x37,0x1d,0x9b,0xfa,0xee,0x7c,0x81,0x52,0x46,0xdd,0x6e,0x01,0x59,0x1e,0x15,
+ 0x87,0xda,0xf4,0xff,0x00,0x11,0xb3,0x63,0x36,0x48,0xe2,0x2d,0xa2,0xd3,0x11,0xa8,
+ 0x51,0x5a,0xe7,0x92,0x96,0xd0,0x90,0x91,0xc9,0xf7,0x27,0x8e,0x49,0x3d,0xc9,0x24,
+ 0x9f,0x5a,0x88,0x9e,0x27,0xfb,0x8e,0x3a,0x57,0xa4,0xad,0xe0,0xb6,0x69,0x41,0xbc,
+ 0x93,0x2f,0x6d,0x6d,0x3c,0x5b,0x73,0x87,0x23,0xdb,0xc7,0x67,0x54,0x40,0xee,0x3c,
+ 0xc3,0xf7,0x43,0x9e,0xc4,0x79,0xbc,0x77,0x4d,0x4d,0x37,0x1c,0x43,0x4d,0xa9,0x6e,
+ 0x29,0x28,0x42,0x41,0x52,0x94,0xa3,0xc0,0x48,0x1e,0xa4,0x9f,0x61,0x54,0x07,0xba,
+ 0xfd,0x6c,0x7f,0x5f,0xf5,0xdf,0x27,0xcb,0x0b,0xbd,0x76,0xc5,0x3e,0x62,0x5a,0xd0,
+ 0x39,0x01,0x10,0x9a,0x25,0x2d,0x70,0x0f,0x70,0x54,0x39,0x59,0xfe,0x65,0xab,0xd3,
+ 0xd2,0xbe,0x65,0xf8,0x7b,0x82,0x1c,0x73,0x19,0x35,0x55,0x3d,0xe6,0x43,0xdf,0x75,
+ 0xfc,0x5c,0x4f,0x74,0x1f,0x7b,0xb8,0xf5,0xb7,0x9a,0xbf,0x99,0xfa,0x1b,0x61,0xe2,
+ 0xb7,0x1f,0x85,0x65,0xd5,0xeb,0x76,0xec,0x22,0x47,0x6c,0x90,0x89,0xf6,0x69,0xb1,
+ 0x9d,0x03,0xdd,0x20,0x25,0xde,0xff,0x00,0xda,0x69,0x35,0x73,0x55,0x53,0x5e,0x11,
+ 0x9a,0x5d,0x3a,0xf5,0xab,0xd9,0x0e,0x76,0xe3,0x5d,0x36,0x8b,0x1d,0xb9,0x50,0x50,
+ 0xe9,0xf5,0x5c,0xa7,0xd4,0x9e,0x12,0x9f,0xaf,0x4b,0x68,0x70,0x9f,0xa7,0x52,0x3e,
+ 0xb5,0x63,0xfb,0x8a,0xd5,0x96,0x74,0x3f,0x45,0x72,0xcc,0xcd,0x7d,0x0a,0x93,0x6e,
+ 0x86,0xaf,0x82,0x69,0xcf,0x47,0x65,0x2f,0x84,0x30,0x8e,0x3d,0x48,0x2e,0x29,0x1c,
+ 0xf1,0xdf,0x8e,0x4f,0xb5,0x5d,0xfc,0x46,0x68,0xaf,0xcc,0xcd,0xa5,0xa6,0xdd,0xe5,
+ 0xac,0x65,0xbf,0x11,0x26,0xc3,0xe8,0x42,0xa4,0x1b,0x47,0x72,0xab,0xd7,0x46,0xb4,
+ 0xb1,0xbd,0xcf,0xf8,0x8c,0xea,0x06,0x59,0x2e,0x3a,0x65,0xe2,0x38,0xad,0xf1,0xd9,
+ 0xaf,0x38,0x4f,0xdd,0xbe,0xe3,0x0e,0x79,0x30,0xd1,0xf8,0x85,0x29,0xa0,0xe7,0x07,
+ 0xb1,0x4b,0x6a,0x07,0xd4,0x03,0x64,0x7a,0xb7,0x85,0xdc,0x75,0x1b,0x4d,0x32,0x4c,
+ 0x5e,0xd5,0x7d,0xff,0x00,0x26,0xa6,0xde,0x21,0x2e,0x12,0x6e,0xa2,0x31,0x90,0x63,
+ 0xa1,0x7f,0x2b,0x84,0x36,0x16,0x8e,0x54,0x50,0x54,0x01,0xea,0x1c,0x12,0x0f,0x7e,
+ 0x38,0x3a,0xc7,0x65,0x1a,0x06,0xad,0x01,0xd0,0xeb,0x65,0xbe,0xe4,0xd2,0x46,0x57,
+ 0x78,0x57,0xda,0xd7,0xc7,0x88,0xe5,0xc3,0x25,0xc0,0x08,0x69,0x47,0xfd,0x9a,0x7a,
+ 0x51,0xc0,0xed,0xd4,0x16,0x47,0xed,0x12,0x79,0x5a,0xa3,0xbd,0x7d,0x1c,0xd1,0xbc,
+ 0xc5,0xfc,0x5b,0x29,0xcb,0x93,0x0e,0xf9,0x1d,0x28,0x54,0x88,0xac,0x43,0x7e,0x47,
+ 0x91,0xd4,0x02,0x92,0x16,0xa6,0xd0,0xa0,0x0f,0x04,0x1e,0x9e,0x79,0xe0,0x8e,0xdd,
+ 0xc5,0x61,0x71,0xca,0xda,0xbc,0x6f,0x16,0x64,0x58,0x4b,0x1d,0x23,0x69,0x83,0x5b,
+ 0x18,0x6b,0x75,0x6c,0xcb,0x0d,0x56,0xb1,0x04,0x13,0xd4,0x5a,0xd6,0x05,0x7b,0x60,
+ 0x0c,0x6d,0xdd,0xe2,0xb4,0x66,0x8b,0x78,0x54,0x62,0x5a,0x5d,0x9c,0x58,0x32,0x9b,
+ 0xbe,0x6b,0x73,0xc9,0xa7,0x59,0x66,0xb5,0x70,0x8f,0x1d,0xb8,0x4d,0xc3,0x8e,0xb7,
+ 0x5a,0x58,0x5a,0x3a,0xd3,0xd4,0xe2,0x8a,0x42,0x80,0x3c,0x05,0x0e,0x78,0xef,0xdb,
+ 0xb5,0x6d,0x2f,0x11,0x4c,0xac,0xe2,0x9b,0x41,0xce,0xd4,0xdb,0xbe,0x5c,0x9b,0x82,
+ 0x23,0x5b,0x9a,0xe7,0xf7,0xbc,0xd9,0x0d,0x87,0x07,0xfe,0x50,0x72,0xb7,0x9e,0x07,
+ 0x9f,0xe3,0xba,0x9f,0x8b,0x42,0xc8,0xf1,0x5b,0xbc,0x6b,0xe5,0x92,0x62,0x4a,0x99,
+ 0x99,0x15,0x5c,0xa4,0xf0,0x78,0x29,0x20,0xf0,0x52,0xa0,0x7b,0x14,0xa8,0x02,0x0f,
+ 0x62,0x05,0x42,0x2f,0x18,0x0c,0xe9,0x8b,0x66,0x92,0x61,0x78,0x92,0x54,0x7e,0x32,
+ 0xef,0x77,0x5c,0xf3,0xc1,0xec,0x19,0x8c,0xd1,0x4a,0x81,0xfc,0xd5,0x21,0xbe,0x3f,
+ 0xdd,0x35,0x2e,0x15,0x57,0x8a,0x66,0x2c,0xcd,0x46,0xcc,0x51,0xe5,0xef,0x63,0xc6,
+ 0xc4,0x01,0x60,0xd3,0xa8,0x8b,0x00,0x00,0xe3,0x7d,0x95,0x1c,0x1a,0xc8,0xce,0x95,
+ 0x5a,0x79,0x46,0xb3,0xe7,0xb9,0xb5,0x92,0x35,0x9a,0xfd,0x99,0x5f,0x2e,0xd6,0x78,
+ 0xc8,0x43,0x6c,0xdb,0xa5,0xcf,0x75,0x71,0xd0,0x94,0x00,0x10,0x03,0x65,0x5d,0x3d,
+ 0x80,0x1c,0x76,0xab,0xda,0xdb,0x06,0x28,0xee,0x13,0xb7,0x5d,0x37,0xb2,0xbe,0x16,
+ 0x99,0x31,0xac,0x10,0xcb,0xe8,0x73,0xd5,0x0e,0xad,0xa4,0xad,0x69,0xfd,0x14,0xa5,
+ 0x0f,0xd2,0xa8,0x63,0x4c,0x70,0xc7,0xf5,0x17,0x51,0xf1,0x6c,0x56,0x31,0xe8,0x7e,
+ 0xf5,0x74,0x8d,0x6f,0x4a,0xf8,0xe4,0x23,0xcd,0x75,0x28,0xea,0x3f,0x80,0xea,0xe4,
+ 0xfe,0x02,0xbd,0x19,0x32,0xc2,0x23,0x32,0xdb,0x2d,0x27,0xa5,0xb6,0xd2,0x10,0x94,
+ 0x8f,0x60,0x3b,0x01,0x5b,0xf7,0xc5,0x79,0x62,0xa7,0x86,0x92,0x86,0x16,0x86,0x82,
+ 0x5c,0xf2,0x00,0xb7,0x40,0x0e,0xdd,0x6e,0x7e,0x8a,0x1a,0x70,0x4d,0xc9,0x55,0x27,
+ 0xe2,0xe7,0x9f,0x39,0x7b,0xd7,0x2c,0x7b,0x15,0x6a,0x61,0x76,0x15,0x8a,0xce,0x97,
+ 0x9c,0x8c,0x15,0xf2,0xb5,0x25,0xf5,0xa9,0x4a,0x24,0x7f,0x11,0x6d,0x0c,0x1f,0xcb,
+ 0x8f,0xad,0x41,0x4a,0xdc,0x5b,0xc3,0xcb,0xd7,0x9c,0xee,0x87,0x53,0x2e,0xcb,0x74,
+ 0x3e,0x3e,0xda,0x7e,0x1b,0x6e,0x03,0xc8,0x2d,0xc7,0x3f,0x0e,0xdf,0x07,0xdc,0x74,
+ 0x34,0x9a,0xfb,0xed,0x13,0x6f,0x12,0xf7,0x29,0xad,0x16,0xac,0x67,0x87,0x5a,0xb1,
+ 0x47,0xfe,0x9b,0x79,0x96,0xd8,0xfe,0xa6,0x22,0x08,0xea,0x48,0x3e,0xca,0x59,0x21,
+ 0xb4,0x9f,0x62,0xbe,0x78,0x21,0x26,0xba,0xd6,0x0a,0xd8,0x32,0xfe,0x5d,0x80,0xd4,
+ 0x1d,0x2d,0x8e,0x30,0xe7,0x7a,0x91,0xa9,0xdf,0xa9,0x36,0xf1,0x2a,0xd9,0xf7,0x7c,
+ 0x86,0xca,0xc6,0x3c,0x2b,0x74,0x31,0xcd,0x3c,0xd1,0x49,0x99,0xb5,0xca,0x3a,0x5b,
+ 0xbb,0x66,0x0e,0xa5,0xe6,0x39,0x07,0xad,0x10,0x5a,0xea,0x4b,0x5c,0xf2,0x3b,0x75,
+ 0xa8,0xb8,0xbe,0xdd,0x8a,0x4b,0x67,0xf0,0x19,0xd6,0xdf,0x74,0x87,0xec,0x0d,0xdc,
+ 0x6e,0x23,0x35,0x5b,0x48,0xf2,0x64,0x4d,0x81,0x6d,0x88,0xe8,0xf5,0xea,0x72,0x1b,
+ 0x12,0xe4,0x8f,0xcb,0x97,0x63,0xfe,0xa0,0xfd,0x2a,0x4b,0xdb,0xad,0xd1,0x6c,0xf6,
+ 0xf8,0xb0,0x20,0xc6,0x6a,0x1c,0x18,0xad,0x21,0x86,0x23,0x30,0x80,0x86,0xda,0x6d,
+ 0x20,0x25,0x28,0x4a,0x47,0x60,0x90,0x00,0x00,0x0f,0x40,0x2b,0xe5,0x06,0xd3,0x16,
+ 0xd9,0x2a,0xe7,0x29,0x94,0x04,0x39,0x3d,0xf1,0x2a,0x42,0xbf,0x89,0x61,0xa6,0xda,
+ 0x07,0xfc,0x0d,0x20,0x7e,0x95,0xf2,0x4d,0x76,0x62,0xa8,0xae,0xaa,0xae,0xa9,0x76,
+ 0xdf,0xc4,0x0d,0x36,0xe8,0x03,0xda,0x40,0xf6,0x6b,0x6c,0xb2,0x41,0x80,0x00,0x3a,
+ 0x2f,0x8e,0x51,0x69,0x17,0xec,0x66,0xef,0x6c,0x23,0xa8,0x4d,0x86,0xf4,0x62,0x0f,
+ 0xbf,0x5a,0x0a,0x7f,0xef,0x50,0x0b,0xc1,0xc2,0x6f,0x99,0x83,0xea,0x5c,0x3e,0x7f,
+ 0xaa,0xb8,0xc3,0x77,0x8f,0xf7,0xda,0x70,0x7f,0xfc,0xea,0xc4,0x90,0x78,0x5a,0x7f,
+ 0x3a,0xae,0x9f,0x09,0x3b,0x7f,0xd8,0x59,0x26,0xbc,0x59,0xf8,0x29,0x4c,0x19,0xf6,
+ 0xe6,0x52,0x93,0xed,0xd2,0xb9,0xc8,0x3f,0xf4,0x8a,0xc9,0xe0,0xce,0xd5,0x96,0x71,
+ 0x68,0xcf,0x87,0x60,0x47,0xe7,0x20,0xfe,0xe1,0x51,0xdf,0x3b,0x4f,0xaf,0xec,0xb1,
+ 0x9f,0x19,0x38,0x41,0x37,0xad,0x2c,0x96,0x13,0xf3,0x2e,0x3d,0xc5,0xa2,0xaf,0xa8,
+ 0x0a,0x8e,0x40,0xff,0x00,0xd4,0x7f,0xbe,0xa6,0x16,0xc5,0xb3,0x71,0x9f,0x6d,0x3f,
+ 0x4e,0x67,0x97,0x3a,0xde,0x89,0x6e,0x16,0xb7,0x41,0x57,0x2a,0x4a,0xa3,0x2d,0x4c,
+ 0x00,0x7f,0x12,0x96,0xd2,0xaf,0xc9,0x42,0xb9,0xbb,0x92,0xda,0x46,0x1b,0xba,0x6f,
+ 0xf2,0x6c,0x65,0xd3,0x6f,0x31,0x13,0x62,0x5b,0xea,0x8e,0x9b,0x43,0xed,0x35,0xe6,
+ 0xf9,0xbe,0x5f,0x50,0x70,0xad,0xa5,0x92,0x3e,0xe9,0x3c,0x74,0xf1,0xea,0x7f,0x0e,
+ 0x32,0x7d,0x09,0xd0,0x6c,0x63,0x6e,0x98,0x4b,0x98,0xae,0x25,0xf1,0xdf,0x65,0xae,
+ 0x5a,0xe6,0xab,0xed,0x09,0x1e,0x73,0x9e,0x62,0xd2,0x84,0xab,0x83,0xc0,0x00,0x70,
+ 0x84,0xf6,0x03,0xd7,0x93,0xef,0x52,0xd7,0xe3,0x74,0x15,0x79,0x56,0x93,0x0b,0xdf,
+ 0xb7,0x89,0xc4,0xf1,0xb5,0x89,0x7e,0xd7,0xbf,0x42,0x0f,0xb2,0xa0,0x61,0x12,0x17,
+ 0x78,0x15,0x5f,0x71,0x10,0x9d,0xac,0x78,0xa8,0x2d,0xa4,0xbc,0xe4,0x3c,0x7b,0x30,
+ 0x94,0x47,0x71,0xc2,0x56,0xdd,0xc3,0xe6,0x09,0x3f,0x44,0x26,0x60,0x00,0x7d,0x03,
+ 0x60,0x9f,0x43,0x56,0x91,0x55,0xf1,0xe2,0xdf,0xa6,0x12,0x1e,0xc5,0xb0,0xad,0x4f,
+ 0xb5,0xb3,0xd1,0x36,0xc5,0x2f,0xec,0xe9,0x92,0x5a,0x4f,0xde,0x25,0xa7,0x0f,0x5b,
+ 0x0b,0x51,0xf6,0x4a,0x1d,0x4a,0x80,0xfe,0x67,0xc7,0xd6,0xa6,0xb6,0x8e,0x6a,0x24,
+ 0x6d,0x5a,0xd2,0xac,0x4f,0x31,0x8a,0x12,0x86,0xef,0x56,0xd6,0x65,0xad,0xa4,0x9e,
+ 0x43,0x4e,0x29,0x03,0xcc,0x6f,0x9f,0x7e,0x95,0xf5,0x27,0xfb,0x35,0x26,0x66,0x77,
+ 0xda,0x78,0x56,0x1d,0x8c,0x0d,0xdd,0xa4,0xc4,0xff,0x00,0xee,0x8f,0x82,0x7c,0xdc,
+ 0x0d,0xfd,0x15,0x19,0xdd,0x73,0x9b,0xee,0xb3,0x1a,0x54,0x54,0xcb,0x77,0x90,0x8d,
+ 0x00,0xdc,0x4c,0x9d,0x39,0xd5,0x3e,0x96,0xb1,0xbb,0xba,0x53,0x70,0xb0,0x65,0x6d,
+ 0x36,0x10,0x96,0x59,0x75,0x44,0x79,0x12,0xd0,0x3b,0x00,0x87,0x12,0xe2,0x03,0xa9,
+ 0xfd,0xd0,0xd9,0x5a,0x7b,0xa9,0x62,0x54,0x30,0xfb,0x52,0x98,0x6d,0xf6,0x1c,0x43,
+ 0xcc,0xba,0x90,0xb6,0xdc,0x6d,0x41,0x49,0x5a,0x48,0xe4,0x10,0x47,0x62,0x08,0xef,
+ 0xcd,0x69,0x15,0xb8,0x65,0x55,0x03,0x63,0x92,0x66,0xf7,0x24,0x1a,0x9a,0xe1,0xc3,
+ 0x87,0x91,0xea,0x3c,0x41,0xdc,0x78,0x85,0x28,0x70,0x3c,0x2a,0x85,0xf1,0x52,0xd0,
+ 0x71,0xa7,0xda,0xc9,0x13,0x3b,0xb6,0x44,0x2d,0x59,0x72,0xe6,0xca,0xa4,0x29,0xb1,
+ 0xf2,0x37,0x70,0x6c,0x00,0xef,0xa0,0xf9,0x7c,0xc4,0x14,0x2f,0xbf,0x75,0x2b,0xcd,
+ 0x3e,0xc7,0x8b,0x3f,0xd8,0x0e,0xbf,0x2f,0x71,0x3b,0x63,0xc6,0x6f,0xb3,0x9e,0x4b,
+ 0xd9,0x0d,0xb0,0x1b,0x35,0xdc,0x85,0x12,0xa5,0x49,0x60,0x24,0x07,0x15,0xcf,0xef,
+ 0x38,0xd9,0x69,0xc3,0xed,0xcb,0x84,0x0f,0x4a,0xc2,0x37,0xaf,0xa2,0x23,0x5e,0x76,
+ 0xef,0x93,0x58,0xe3,0xc4,0x32,0xef,0xb0,0x9b,0xfb,0x56,0xd0,0x94,0x0e,0x57,0xf1,
+ 0x4c,0x82,0x42,0x12,0x3d,0xcb,0x88,0x2e,0x37,0xc1,0xed,0xf7,0x9c,0xfa,0x80,0x6a,
+ 0x0f,0x78,0x36,0xeb,0x59,0xc2,0xf5,0xe2,0xf1,0xa7,0xd2,0xd6,0x7e,0xcf,0xcc,0x61,
+ 0x15,0xc7,0x1c,0xfe,0xcc,0xc8,0xc9,0x5b,0x89,0xf7,0xec,0x14,0xd1,0x7f,0x9f,0x7e,
+ 0x52,0x8a,0xfa,0xcb,0xe1,0xd6,0x35,0xf6,0xb6,0x0c,0xd8,0x64,0x37,0x92,0x1e,0xe1,
+ 0xf4,0xfb,0xa7,0xe9,0xb7,0xab,0x4a,0xc7,0x4e,0xdd,0x2e,0xbf,0x55,0x74,0x94,0xa5,
+ 0x2b,0xa9,0x2b,0x74,0xae,0x8f,0x3a,0xcb,0xa1,0xe0,0x18,0x46,0x43,0x94,0x5c,0x39,
+ 0xf8,0x0b,0x25,0xba,0x45,0xca,0x47,0x07,0x8f,0xbb,0x65,0xb5,0x38,0xae,0xff,0x00,
+ 0x92,0x4d,0x77,0x95,0x0e,0x3c,0x58,0xf5,0x15,0x78,0x1e,0xce,0xaf,0x90,0x98,0x7d,
+ 0x51,0xe5,0x64,0xb7,0x08,0xb6,0x54,0x29,0xb3,0xc2,0xba,0x4a,0x8b,0xee,0x8f,0xc9,
+ 0x4d,0xb0,0xb4,0x9f,0xc1,0x44,0x7b,0xd1,0x15,0x1c,0x66,0x99,0x6d,0xcf,0x50,0xb3,
+ 0x2b,0xe6,0x4d,0x77,0x70,0x3f,0x77,0xbd,0x4e,0x7a,0xe1,0x29,0x68,0x4f,0x01,0x4e,
+ 0xba,0xb2,0xb5,0x70,0x3d,0x87,0x2a,0x3c,0x0f,0x61,0x57,0xdb,0xb5,0xed,0x23,0x6f,
+ 0x43,0x74,0x1b,0x0f,0xc4,0x02,0x14,0x99,0x91,0x21,0x25,0xe9,0xe5,0x5e,0xa6,0x5b,
+ 0xa4,0xb8,0xff,0x00,0xe8,0x16,0xb5,0x24,0x7f,0x2a,0x52,0x2a,0x9f,0x76,0x11,0xa4,
+ 0xeb,0xd5,0xcd,0xd0,0xe2,0x10,0xdc,0x60,0x3d,0x6c,0xb3,0xbd,0xf6,0xe4,0xfe,0xa0,
+ 0x0a,0x43,0x51,0xc8,0x52,0x02,0x81,0xf5,0x0a,0x77,0xca,0x41,0x1f,0xcf,0xf4,0xab,
+ 0xb1,0xc2,0xb5,0x23,0x17,0xd4,0x76,0xee,0xae,0x63,0x37,0xc8,0x77,0xb4,0xda,0xe6,
+ 0xb9,0x6e,0x9a,0x62,0x39,0xd7,0xe4,0x48,0x6c,0xf0,0xa4,0x2b,0xfe,0xc7,0xd0,0x8e,
+ 0xe0,0x91,0x5f,0x38,0xfc,0x57,0xc4,0x64,0x90,0xc3,0x87,0x44,0x09,0x6b,0x3b,0xef,
+ 0xb7,0x00,0x9b,0xb5,0x97,0xe9,0xf7,0xb9,0xe6,0xea,0xfa,0x9d,0xbc,0xb9,0x6b,0xad,
+ 0xe8,0xe5,0x4f,0xe1,0x9b,0x56,0xd4,0xcb,0x9c,0x64,0xa8,0xbf,0xf6,0x42,0xe2,0x24,
+ 0xa3,0xd5,0x3e,0x7a,0x92,0xc1,0x57,0xe8,0x1d,0x27,0xf4,0xaa,0x3a,0xd2,0xcd,0x2d,
+ 0xc8,0xf5,0x97,0x39,0xb6,0x62,0x78,0xad,0xbd,0x77,0x0b,0xbc,0xf7,0x3a,0x52,0x91,
+ 0xd9,0x0d,0x23,0xf7,0x9d,0x71,0x5f,0xba,0x84,0x8e,0xe5,0x47,0xfe,0x7c,0x0a,0xf4,
+ 0x3d,0x91,0x63,0xd6,0xdc,0xb6,0xc3,0x70,0xb2,0xde,0x61,0x33,0x72,0xb5,0x4f,0x61,
+ 0x71,0xa5,0x44,0x90,0x9e,0xa4,0x3a,0xda,0x87,0x0a,0x49,0x1f,0x88,0x35,0x87,0x69,
+ 0x1e,0xdf,0xf4,0xf3,0x42,0x20,0x48,0x89,0x82,0x62,0xd0,0xf1,0xf4,0xc9,0x3c,0xbe,
+ 0xf3,0x65,0x6f,0x48,0x77,0xbf,0x20,0x2d,0xe7,0x54,0xa7,0x14,0x90,0x7d,0x12,0x55,
+ 0xc0,0xf6,0x02,0xb4,0xcc,0xab,0x9d,0x21,0xcb,0x18,0x65,0x45,0x3b,0x21,0x2e,0x9d,
+ 0xee,0xbb,0x4e,0xda,0x78,0x03,0xbd,0xbd,0xf6,0x3b,0xd8,0x0d,0xef,0xc8,0x52,0xc9,
+ 0x17,0x68,0xe0,0x6f,0xb2,0xe3,0xed,0xdf,0x43,0x6c,0xdb,0x76,0xd2,0x7b,0x3e,0x17,
+ 0x67,0x21,0xff,0x00,0x86,0x05,0xe9,0xb3,0xbc,0xb0,0x85,0xcd,0x94,0xbe,0x3c,0xd7,
+ 0x94,0x07,0xd7,0x80,0x90,0x09,0x24,0x21,0x28,0x4f,0x27,0xa7,0x9a,0xd3,0xd9,0x1c,
+ 0xe6,0xb7,0x3d,0xba,0xcb,0x76,0x2b,0x19,0x49,0x93,0x80,0xe9,0x43,0xe8,0xbb,0xdd,
+ 0x9d,0x4a,0x7a,0x9b,0x99,0x7c,0x21,0x49,0x8f,0x1f,0x9f,0x4e,0x19,0x1d,0x6a,0x3c,
+ 0x73,0xf3,0x05,0xa4,0x8f,0x43,0x5c,0x5d,0xf8,0x6f,0x46,0x06,0xdd,0xf0,0xf9,0x38,
+ 0xde,0x39,0x31,0x99,0x3a,0x91,0x74,0x67,0xa2,0x3b,0x48,0x3d,0x5f,0x66,0x34,0xa1,
+ 0xc1,0x92,0xe0,0xf6,0x57,0x1f,0xd5,0xa4,0xfa,0x9e,0x14,0x41,0x48,0xe0,0xff,0x00,
+ 0x7e,0x18,0x62,0xd0,0xf6,0xd4,0xad,0x93,0x60,0xbc,0x64,0x5e,0x66,0xdd,0x67,0xbf,
+ 0x7c,0x79,0x6b,0x2b,0x71,0x73,0x0b,0xc4,0x02,0xb2,0x7b,0xf2,0x58,0x11,0xcf,0xeb,
+ 0xcf,0xa9,0x35,0x8e,0x8e,0x92,0xba,0x9b,0x0d,0x9b,0x33,0x56,0x02,0x5f,0x2b,0xb4,
+ 0x30,0x9e,0x6e,0xf0,0x75,0x49,0xe9,0x60,0x5a,0xdf,0xc4,0x6e,0x38,0x0b,0xd5,0xc1,
+ 0x70,0x60,0xf0,0x5b,0x97,0x71,0xfa,0xdd,0x6e,0xdb,0xd6,0x8f,0x5f,0xf3,0x59,0xe9,
+ 0x4b,0xef,0x44,0x6b,0xca,0x83,0x11,0x47,0xff,0x00,0x9a,0x96,0xbf,0x95,0x96,0xfd,
+ 0x47,0x6e,0xae,0xea,0x23,0xb8,0x4a,0x54,0x78,0x3c,0x71,0x54,0x07,0x93,0x64,0x97,
+ 0x3c,0xc7,0x21,0xb9,0x5f,0x6f,0x53,0x1c,0xb8,0x5d,0xae,0x52,0x1c,0x97,0x2e,0x53,
+ 0xbc,0x75,0x3a,0xea,0xd4,0x54,0xa5,0x1e,0x3b,0x0e,0x49,0x3d,0x80,0x00,0x7b,0x54,
+ 0xbe,0xf1,0x39,0xdc,0x90,0xd5,0xad,0x59,0x46,0x11,0x64,0x96,0x1d,0xc5,0xf1,0x15,
+ 0xad,0x97,0x14,0xd2,0xc9,0x44,0xab,0x81,0xec,0xf2,0xfe,0x84,0x37,0xc7,0x96,0x9e,
+ 0xdd,0x88,0x70,0x82,0x42,0xea,0x31,0xe8,0xb6,0x9b,0x48,0xd6,0x0d,0x58,0xc5,0x30,
+ 0xc8,0xca,0x71,0xb5,0x5e,0x6e,0x0d,0x45,0x71,0xd6,0x93,0xd4,0xa6,0x9a,0x2a,0xe5,
+ 0xd7,0x00,0xfe,0x44,0x05,0xab,0xfb,0x35,0xdd,0x72,0x0e,0x06,0xcc,0xbf,0x83,0xbb,
+ 0x10,0xab,0x1a,0x64,0x90,0x6b,0x71,0x3f,0x75,0x80,0x5c,0x0f,0xa7,0x78,0xfa,0xd8,
+ 0xf0,0xac,0xe6,0x7e,0xb7,0x69,0x0a,0xe6,0xfc,0x3e,0x30,0x09,0x5a,0x7b,0xb4,0xcc,
+ 0x22,0x34,0xe6,0xc3,0x53,0x6e,0x6d,0x3b,0x77,0x71,0x00,0xf3,0xc2,0x24,0x38,0xa7,
+ 0x1a,0xfd,0x4b,0x45,0xa2,0x47,0xb1,0x24,0x7b,0x55,0x7c,0x78,0xa9,0xea,0x40,0xcc,
+ 0xb7,0x30,0x6c,0x0c,0x15,0x7c,0x2e,0x2d,0x6d,0x62,0x09,0xef,0xca,0x54,0xfb,0x83,
+ 0xcf,0x71,0x43,0xf4,0x75,0xb4,0x1f,0xc5,0xb3,0x57,0x11,0x02,0x0c,0x3b,0x15,0xae,
+ 0x3c,0x38,0xad,0x22,0x24,0x08,0x6c,0xa5,0x96,0x9b,0x4f,0x64,0xb4,0xda,0x13,0xc2,
+ 0x40,0xfc,0x00,0x03,0xfb,0xab,0xcf,0x1e,0xb5,0x67,0xcb,0xd5,0x2d,0x5d,0xcc,0xb2,
+ 0xd5,0x85,0xa5,0x37,0x9b,0xb4,0x99,0x8d,0x21,0x67,0x92,0xdb,0x4a,0x70,0x96,0xd1,
+ 0xfd,0x94,0x74,0xa7,0xf4,0xad,0x13,0xe1,0xd3,0x1d,0x8c,0x66,0x1a,0xcc,0x62,0x41,
+ 0xc5,0xcf,0xa1,0x91,0xdb,0x7f,0xa8,0x70,0x53,0x4f,0xdd,0x60,0x6a,0xde,0x1e,0x1a,
+ 0x98,0x2b,0xd9,0xa6,0xed,0xb1,0x99,0x01,0xb0,0xe4,0x4b,0x0c,0x79,0x37,0x79,0x3c,
+ 0xfe,0xea,0x52,0xd9,0x6d,0xb2,0x3f,0xfc,0xaf,0x35,0x57,0x3f,0x98,0xe4,0x28,0xc4,
+ 0x71,0x1b,0xe5,0xf5,0xc0,0x0b,0x76,0xb8,0x2f,0xcd,0x50,0x3e,0x9c,0x36,0xda,0x96,
+ 0x7f,0xe9,0xaa,0xe1,0xf0,0x73,0xc2,0x1c,0x5d,0xc3,0x51,0xf3,0x07,0x59,0x29,0x69,
+ 0xb6,0xa2,0xda,0x63,0x3c,0x47,0x65,0x15,0x15,0x3a,0xf2,0x47,0xe5,0xd2,0xc1,0xfe,
+ 0xd0,0xa9,0xa1,0xbc,0xbc,0x88,0xe2,0xdb,0x56,0xd5,0x19,0xc9,0x07,0xa9,0x76,0x37,
+ 0xe1,0x82,0x3d,0x8b,0xe3,0xc8,0xe7,0xf4,0xf3,0x79,0xac,0x2e,0x7d,0x97,0xed,0x5c,
+ 0xd6,0xca,0x21,0xb8,0x6f,0x67,0x1f,0xe6,0x37,0x3f,0xf6,0xb2,0xf7,0x08,0xd3,0x1d,
+ 0xd5,0x07,0x49,0x92,0xec,0xc9,0x2e,0xc8,0x7d,0xc5,0x3a,0xfb,0xab,0x2e,0x38,0xe2,
+ 0xcf,0x2a,0x52,0x89,0xe4,0x92,0x7e,0xa4,0xd5,0xde,0xec,0x0b,0x6d,0x23,0x6f,0x3a,
+ 0x2b,0x19,0x77,0x48,0xa1,0xac,0xcb,0x23,0x08,0xb8,0x5d,0x89,0xfd,0xb6,0x07,0x1f,
+ 0x73,0x1b,0xd0,0x71,0xe5,0xa5,0x47,0xa8,0x7f,0x1a,0xdc,0xee,0x40,0x15,0x5f,0x5e,
+ 0x1a,0xdb,0x72,0xff,0x00,0x3c,0xda,0xd4,0x8c,0x96,0xed,0x18,0xb9,0x8b,0x62,0x0a,
+ 0x6e,0x6b,0xc1,0x68,0xe5,0x12,0x26,0x12,0x4c,0x76,0x7b,0xfa,0x80,0x52,0x5c,0x57,
+ 0xaf,0x66,0xc0,0x3f,0xb6,0x0d,0x59,0x4e,0xf6,0xb5,0xb0,0xe8,0x46,0xdd,0x32,0x6b,
+ 0xf4,0x57,0x92,0xcd,0xee,0x6a,0x05,0xaa,0xd4,0x54,0xae,0x0f,0xc4,0xbc,0x08,0x0b,
+ 0x4f,0xe2,0x84,0x07,0x1c,0x03,0xfd,0x9d,0x6d,0xff,0x00,0x11,0x31,0x59,0x71,0x1a,
+ 0xb8,0x32,0xc5,0x01,0xef,0x38,0xb7,0x5f,0xa9,0xf9,0x5a,0x7c,0x87,0xcc,0x7d,0xba,
+ 0x28,0xa0,0x68,0x68,0x32,0x39,0x64,0x5a,0x0d,0xaf,0x96,0x8d,0x79,0x19,0xbb,0xb6,
+ 0x72,0xd2,0xa2,0xe3,0xb9,0x0b,0xf6,0x56,0xde,0x69,0xc0,0xb4,0xc9,0x6d,0xb4,0x36,
+ 0x52,0xfa,0x48,0xed,0xd2,0xb2,0xa5,0xf0,0x47,0xa8,0x4f,0x35,0xa3,0xfc,0x4d,0xb5,
+ 0xd2,0x4e,0x95,0xe8,0xd5,0xb3,0x1a,0xb5,0x3c,0xa8,0xf7,0x8c,0xbe,0x6f,0xc2,0x97,
+ 0x50,0xa2,0x95,0x37,0x0d,0xa2,0x85,0xc8,0x29,0x23,0xdd,0x45,0x4d,0x36,0x47,0xa1,
+ 0x4b,0x8b,0xfc,0x2a,0x2c,0x78,0x47,0x6a,0x91,0xc7,0x35,0x93,0x21,0xc1,0xe4,0xc8,
+ 0x42,0x22,0x64,0xb6,0xff,0x00,0x88,0x8e,0xda,0xcf,0x75,0x4a,0x8d,0xca,0x80,0x4f,
+ 0xe6,0xd2,0xdf,0x27,0xeb,0xe5,0x8f,0xa5,0x61,0xbe,0x25,0x5a,0x94,0x9d,0x42,0xdd,
+ 0xa4,0x8b,0x4c,0x69,0x3f,0x11,0x6f,0xc6,0x58,0x8d,0x67,0x40,0x42,0xf9,0x6c,0x3d,
+ 0xcf,0x9a,0xff,0x00,0x03,0xd9,0x41,0x6e,0x96,0xd5,0xef,0xcb,0x5c,0x7b,0x0a,0xc2,
+ 0xe1,0xf9,0x3a,0x3a,0x4c,0xe4,0x28,0xf4,0xde,0x18,0x9a,0x24,0x17,0xf1,0x00,0x00,
+ 0x3f,0xdf,0xeb,0x62,0xbd,0xba,0x4b,0xc5,0x7f,0x15,0x73,0x2c,0x38,0x5d,0x65,0xb5,
+ 0x9f,0x55,0x24,0x2b,0xfe,0x15,0x01,0x7c,0x3a,0xd2,0x9b,0x7e,0xe5,0x37,0x3b,0x01,
+ 0x09,0xe9,0x42,0x6f,0x9f,0x28,0xe3,0xd0,0x26,0x64,0xd0,0x3f,0xea,0xa9,0xf4,0xca,
+ 0x3c,0xb6,0x50,0x8f,0xe1,0x48,0x15,0x5f,0xdb,0x0d,0x7d,0x2c,0x6f,0x3f,0x72,0xb0,
+ 0xca,0x90,0x16,0xe5,0xca,0x4b,0xa1,0x1c,0xfc,0xc4,0x26,0x7b,0xc0,0x90,0x3e,0x83,
+ 0xac,0x73,0xf9,0x8a,0xd0,0x70,0x21,0xab,0x07,0xc5,0x9a,0x3f,0xa2,0x33,0xf4,0x90,
+ 0x29,0x5f,0xf3,0x35,0x6d,0x0f,0x13,0xe9,0xb7,0xcb,0x66,0xd6,0x65,0xcd,0xb1,0xdd,
+ 0x66,0xda,0x94,0xc5,0xda,0x21,0x96,0xb8,0x4f,0xa9,0x95,0x3a,0xc2,0xba,0xd0,0x5b,
+ 0x51,0x49,0x04,0xa4,0xad,0x6d,0x92,0x3d,0x39,0x48,0xa8,0xdb,0xe1,0x3d,0xaf,0x17,
+ 0xf9,0x7a,0x8d,0x7e,0xd3,0xcb,0xe5,0xf2,0x5d,0xca,0xd7,0x32,0xda,0x67,0x5b,0x99,
+ 0x9f,0x25,0x6e,0xf9,0x0f,0x32,0xb1,0xd6,0x86,0x42,0x89,0xe9,0x0a,0x43,0x8a,0x52,
+ 0x80,0xff,0x00,0x54,0x0f,0xb1,0xa9,0x99,0xbe,0xfc,0x49,0xcc,0xcf,0x69,0x1a,0x93,
+ 0x09,0xa1,0xcb,0xb1,0xad,0xc2,0xe4,0x0f,0x1e,0x82,0x33,0xa8,0x90,0xbf,0xfd,0x0d,
+ 0x2b,0xfb,0xea,0x9f,0xf6,0x81,0x9b,0x2b,0x4f,0x77,0x39,0xa6,0xd7,0xa0,0xf2,0x63,
+ 0xb6,0x9b,0xcb,0x31,0x1e,0x75,0x67,0x84,0xa5,0x99,0x1c,0xb0,0xe1,0x27,0xd8,0x74,
+ 0x3a,0xaa,0xe8,0xf9,0x4a,0x8a,0x1c,0x63,0x26,0xd7,0x51,0x96,0x82,0xf6,0x97,0x11,
+ 0xb6,0xf7,0x0d,0x6b,0x9b,0xfa,0x82,0x3d,0x14,0x32,0x12,0xd9,0x5a,0x55,0xdf,0xeb,
+ 0xae,0x96,0xc4,0xd6,0xad,0x21,0xca,0xf0,0xa9,0x9c,0x25,0x37,0x78,0x2b,0x65,0x97,
+ 0x4f,0xff,0x00,0x49,0xf1,0xf3,0x32,0xe7,0xf6,0x5c,0x4a,0x15,0xc7,0xbf,0x1c,0x7b,
+ 0xd4,0x65,0xf0,0xad,0xce,0xe7,0xdc,0x74,0x5b,0x21,0xc0,0x6f,0x08,0x53,0x17,0x6c,
+ 0x26,0xf0,0xe4,0x53,0x15,0xd4,0xf4,0xb8,0xc3,0x2f,0x15,0x2c,0x21,0x60,0xf7,0xe4,
+ 0x3c,0x99,0x23,0xbf,0xd0,0x0f,0x6a,0x9a,0xde,0x95,0x0b,0xe0,0xd8,0x9b,0xd0,0x1f,
+ 0x11,0xdf,0x31,0x89,0x21,0x8c,0x7b,0x56,0xec,0xef,0xb9,0xf0,0xfc,0x84,0x36,0x8b,
+ 0x93,0x1c,0x2d,0x7c,0x8f,0x72,0xae,0x85,0x28,0x13,0xea,0xa9,0x2a,0x15,0xcc,0xf0,
+ 0x79,0xbf,0x8c,0xc2,0xab,0x70,0x97,0xf3,0x6e,0xd9,0x9f,0xdd,0x1f,0xcf,0x6f,0x33,
+ 0x1d,0xff,0x00,0x2a,0x9d,0xc2,0xce,0x0e,0xf6,0x5d,0x5f,0x8b,0x46,0x95,0x2b,0x2c,
+ 0xd0,0xcb,0x46,0x67,0x15,0x94,0xae,0x5e,0x29,0x70,0x01,0xf5,0x7a,0x11,0x12,0x4f,
+ 0x4b,0x6b,0x23,0xeb,0xc3,0xa2,0x3f,0x6f,0xa1,0x51,0xa8,0xff,0x00,0xe1,0xd7,0xbe,
+ 0x37,0x34,0xea,0xeb,0x03,0x4b,0xf3,0xcb,0x81,0x38,0x94,0xc7,0x03,0x36,0x8b,0x9c,
+ 0x85,0x73,0xf6,0x63,0xca,0x3d,0x9a,0x59,0xff,0x00,0x52,0xb5,0x1e,0x01,0x3d,0x9b,
+ 0x51,0xe4,0xf0,0x92,0x4a,0x6c,0x2f,0x75,0x91,0xf1,0xcb,0x86,0xdd,0xf3,0xeb,0x76,
+ 0x51,0x78,0x81,0x62,0xb6,0xce,0xb4,0xc8,0x8e,0xdc,0xdb,0x8b,0xa1,0xb6,0x91,0x20,
+ 0xa0,0x96,0x0f,0x7f,0xda,0x3e,0x60,0x41,0x09,0x1d,0xc9,0x1c,0x0e,0xf5,0xe7,0xf6,
+ 0xba,0xe6,0x45,0xa4,0x83,0x32,0xe5,0xa9,0xb0,0x9a,0xe6,0xdd,0xac,0x71,0xd2,0x6d,
+ 0xf2,0xdc,0x5c,0x16,0x9e,0xa1,0xd7,0xf6,0x36,0x3b,0x1d,0xed,0xa6,0x26,0x37,0x87,
+ 0x05,0xe9,0x6f,0xd2,0xa9,0x23,0x73,0x38,0xbc,0xcd,0xa0,0x6f,0x71,0x77,0x9b,0x0a,
+ 0x5c,0x8d,0x16,0x2d,0xd6,0x3e,0x53,0x68,0x00,0x74,0x82,0xca,0xdd,0xf3,0x14,0xd0,
+ 0xe3,0xd5,0xb0,0xe2,0x5e,0x67,0x8f,0x74,0xa3,0x83,0xea,0x6a,0x6c,0x78,0x67,0xee,
+ 0xc5,0xdd,0x5d,0xc2,0x1d,0xd3,0xdc,0x9e,0x61,0x7b,0x2d,0xc6,0xe3,0xa5,0x51,0x24,
+ 0xbb,0xfb,0x53,0xad,0xe3,0x84,0x82,0xa3,0xcf,0x75,0xb4,0x4a,0x50,0xa2,0x78,0xe5,
+ 0x2a,0x6c,0xfc,0xc7,0xac,0xd6,0x15,0xe2,0xb1,0x89,0x59,0x75,0x23,0x4c,0x2c,0x3a,
+ 0x85,0x8c,0xdd,0x2d,0xb7,0xa7,0xb1,0x5b,0x8a,0xad,0x37,0x45,0xdb,0x64,0x36,0xf9,
+ 0x65,0xa7,0xf8,0xe9,0x0e,0x29,0x0a,0x3d,0x25,0x0e,0xa1,0x29,0xe9,0x3d,0xf9,0x78,
+ 0xfa,0x77,0xad,0x77,0x27,0x36,0xaf,0x2a,0x66,0x87,0xe1,0x75,0x63,0xba,0xfe,0xe1,
+ 0x3e,0x06,0xfb,0xb1,0xde,0xfc,0x0f,0xee,0x23,0x90,0xbd,0xcb,0x69,0x23,0xd4,0x15,
+ 0xa8,0x63,0x99,0x04,0x0c,0xb3,0x1e,0xb5,0xdf,0x2d,0x52,0x51,0x32,0xd7,0x73,0x8a,
+ 0xd4,0xd8,0x92,0x5b,0x3c,0xa5,0xd6,0x5c,0x40,0x5a,0x16,0x3f,0x02,0x95,0x03,0xfa,
+ 0xd7,0x63,0x51,0x47,0xc3,0x03,0x53,0x9b,0xd4,0xad,0x9c,0x61,0xc8,0x2f,0x17,0xa7,
+ 0xe3,0xaa,0x7a,0xc1,0x2c,0x1f,0xdc,0x2c,0xab,0xa9,0x94,0x8f,0xc3,0xc8,0x71,0x8f,
+ 0xf8,0xfd,0x2a,0x57,0x57,0xd4,0xcb,0x1e,0x95,0x53,0xde,0x38,0x39,0x8a,0x9c,0xbc,
+ 0xe9,0x5e,0x28,0xdb,0xe4,0x25,0x98,0xf3,0x6e,0x8f,0xb0,0x0f,0x62,0x56,0xa6,0x9b,
+ 0x69,0x44,0x7e,0x1e,0x5b,0xa0,0x7e,0x66,0xad,0x86,0xb4,0x06,0x7f,0xb3,0x2c,0x1b,
+ 0x58,0x37,0x00,0xce,0xa8,0x67,0xf1,0x1b,0xca,0x15,0x6d,0xb5,0xb1,0x6a,0xb4,0xd8,
+ 0xa5,0x36,0x0c,0x26,0x52,0x85,0xba,0xe2,0x9d,0x79,0x07,0xb3,0xcb,0x2a,0x79,0x40,
+ 0x25,0x43,0xa4,0x00,0x09,0x0a,0x3c,0x74,0x91,0x52,0x06,0xdf,0x62,0xeb,0x85,0xaa,
+ 0x36,0x41,0x2f,0x49,0x71,0x9c,0x96,0x70,0xbe,0x40,0x5d,0xa2,0x5d,0xca,0xc7,0x67,
+ 0x7a,0x4a,0x92,0xca,0x96,0x92,0xb4,0xb6,0xf2,0x50,0x7c,0xb5,0x72,0x90,0x3a,0x81,
+ 0x04,0x7b,0x10,0x78,0x23,0xbc,0xc2,0xf4,0xfb,0x72,0xdb,0x5f,0xbe,0xaf,0x28,0xb1,
+ 0x61,0x59,0xc6,0x26,0xf3,0x6d,0x7f,0x48,0x93,0xf6,0x2b,0xeb,0x8a,0xe3,0x5e,0xa5,
+ 0x2f,0x02,0x82,0xda,0xd2,0x3d,0x78,0x57,0x3c,0x11,0xcf,0x62,0x39,0xaf,0x43,0x90,
+ 0xe1,0xc7,0xb7,0x44,0x62,0x24,0x46,0x1b,0x8b,0x15,0x84,0x25,0xa6,0x98,0x65,0x01,
+ 0x08,0x6d,0x09,0x1c,0x25,0x29,0x48,0xec,0x00,0x00,0x00,0x07,0xa5,0x7d,0xaa,0xce,
+ 0x4a,0x2a,0x69,0x44,0x82,0x48,0xda,0x7b,0x4f,0x9a,0xe0,0x1d,0x56,0xd8,0x5f,0xad,
+ 0xbc,0xd5,0x6e,0x47,0x8a,0xa5,0xcb,0x1f,0x8c,0x46,0x69,0x1a,0xdc,0x86,0xee,0xf8,
+ 0x05,0x8e,0xe1,0x38,0x0e,0x0c,0x88,0x92,0xde,0x8c,0x85,0x1f,0xaf,0x42,0xba,0xff,
+ 0x00,0xea,0xac,0x1f,0x51,0xfc,0x56,0x35,0x8b,0x32,0x80,0xe4,0x2b,0x1b,0x16,0x5c,
+ 0x2d,0x95,0xff,0x00,0xf7,0x36,0xd8,0xea,0x7a,0x57,0x1e,0xe3,0xad,0xe5,0x29,0x23,
+ 0xf3,0x4a,0x01,0x1f,0x5a,0xb0,0xfd,0xf0,0x78,0x75,0x62,0x3b,0x8d,0xc7,0x6e,0x99,
+ 0x1e,0x29,0x6d,0x8b,0x8e,0xea,0x7b,0x48,0x5c,0x86,0x65,0xc5,0x4a,0x59,0x66,0xea,
+ 0xe7,0xed,0x16,0xa5,0x0e,0xc0,0xa9,0x5d,0xc0,0x77,0xb2,0x81,0x20,0xa8,0xa9,0x23,
+ 0x8a,0xa2,0xdb,0xad,0xa6,0x6d,0x8e,0xeb,0x32,0xd9,0x70,0x8a,0xec,0x3b,0x84,0x37,
+ 0x97,0x1e,0x44,0x57,0x90,0x52,0xe3,0x4e,0xa1,0x45,0x2a,0x42,0x81,0xee,0x08,0x20,
+ 0x82,0x3f,0x0a,0xd5,0x62,0xc9,0x59,0x7a,0x09,0x7b,0x56,0x51,0xb6,0xfe,0x77,0x23,
+ 0xe8,0x49,0x1f,0xa2,0x93,0xb5,0x79,0xf1,0x4b,0xb5,0xda,0x75,0xfa,0xe7,0x2a,0xe3,
+ 0x73,0x9b,0x22,0xe3,0x70,0x94,0xe2,0x9e,0x91,0x2e,0x5b,0xaa,0x75,0xd7,0x96,0xa3,
+ 0xca,0x94,0xb5,0xa8,0x92,0xa5,0x13,0xdc,0x92,0x79,0xac,0xff,0x00,0x49,0xb7,0x1d,
+ 0xa8,0xfa,0x1b,0x6f,0xbc,0xc1,0xc1,0xf2,0x99,0x56,0x18,0x97,0x74,0x74,0x4b,0x65,
+ 0xa4,0x36,0xe2,0x49,0xe0,0xa4,0x2d,0x1d,0x69,0x57,0x96,0xe0,0x07,0x8e,0xb4,0x70,
+ 0xaf,0x4e,0xfd,0x85,0x62,0xb2,0xf4,0xfb,0x29,0xb7,0xda,0x45,0xd6,0x56,0x35,0x78,
+ 0x8d,0x6c,0x23,0x91,0x35,0xe8,0x0e,0xa1,0x92,0x3e,0xbd,0x65,0x3d,0x3e,0xe3,0xde,
+ 0xba,0x0a,0xdb,0x27,0xa5,0xa7,0xa9,0x8b,0xb0,0x9e,0x30,0xe6,0x6d,0xb1,0x00,0x8d,
+ 0xb8,0xd8,0xed,0xb7,0x82,0x8c,0x12,0x0d,0xc2,0xfd,0x5a,0xd4,0xe2,0xd4,0xa5,0x28,
+ 0xa9,0x4a,0x3c,0x95,0x13,0xc9,0x26,0xac,0x0b,0xc2,0x23,0x48,0xd5,0x7b,0xd4,0x5c,
+ 0x9f,0x51,0x25,0xb0,0x95,0x44,0xb1,0x45,0x16,0xd8,0x2b,0x5a,0x79,0x3f,0x14,0xff,
+ 0x00,0x75,0xa9,0x07,0xd8,0xa5,0xa4,0x94,0x9f,0xc1,0xf1,0xf8,0xd5,0x7e,0x54,0xd4,
+ 0xda,0xc7,0x88,0x55,0x9b,0x6b,0xda,0x57,0x03,0x0e,0x85,0xa7,0x0f,0x5f,0x1f,0x72,
+ 0x5b,0xb3,0xae,0x97,0x45,0x5e,0x44,0x72,0xf3,0xcb,0x57,0x48,0xe8,0x6b,0xc8,0x5f,
+ 0x01,0x2d,0x21,0xa4,0xf7,0x57,0x72,0x92,0x7b,0x73,0x5a,0x96,0x72,0xa7,0xc4,0x6b,
+ 0x30,0x69,0x69,0x30,0xc8,0xf5,0xc9,0x25,0x9b,0xc8,0x16,0x6f,0x2e,0xdd,0xc4,0x0d,
+ 0xc0,0xb7,0x5d,0xd4,0xb1,0x16,0x87,0x5d,0xc5,0x59,0xb6,0xe8,0x73,0xbf,0xf3,0x69,
+ 0xb7,0x7d,0x43,0xc8,0x92,0xe9,0x66,0x44,0x5b,0x34,0x84,0x46,0x70,0x7e,0xec,0x87,
+ 0x13,0xe5,0x32,0x7f,0xf3,0x16,0x8a,0xf3,0xeb,0x56,0x8b,0xbc,0x9d,0xe1,0xe1,0xba,
+ 0xe7,0xb2,0x09,0x53,0x71,0x39,0x0b,0x44,0x9b,0xbd,0xea,0x1d,0xa6,0x7d,0xaa,0x59,
+ 0x4a,0x65,0xc0,0x50,0x2b,0x93,0xca,0xd2,0x09,0xe5,0x2a,0xf8,0x6f,0x95,0x60,0x90,
+ 0x41,0xf6,0x21,0x40,0x55,0xd5,0x6a,0x9f,0x0c,0xb0,0xa9,0xb0,0xdc,0x3e,0xa0,0xd5,
+ 0x30,0xb2,0x43,0x21,0x04,0x1e,0x6c,0xd0,0x2d,0xfa,0x93,0xff,0x00,0x8a,0x49,0xdc,
+ 0x1c,0x45,0x95,0x9a,0xed,0x97,0x5d,0xec,0x1b,0x32,0xd8,0x8d,0xa7,0x26,0xbb,0x32,
+ 0x2e,0x19,0x06,0x5b,0x74,0x9d,0x36,0xd3,0x65,0x4a,0xfa,0x1c,0x94,0xb4,0x28,0x47,
+ 0xeb,0x51,0xe0,0xf4,0xb6,0x90,0xc2,0x49,0x57,0x1e,0x8a,0x48,0x1c,0x95,0x0a,0x84,
+ 0xda,0xcf,0xba,0xdd,0x50,0xd7,0x99,0xd3,0x17,0x94,0xe5,0x73,0x55,0x6c,0x90,0xa2,
+ 0x45,0x8e,0x0b,0xaa,0x8f,0x6f,0x6d,0x3d,0x5c,0xa5,0x21,0x94,0x9e,0x15,0xd3,0xdb,
+ 0x85,0x2f,0xa9,0x5d,0x87,0x2a,0x27,0xbd,0x61,0x19,0xd6,0x7f,0x72,0xcf,0xa4,0x59,
+ 0xd5,0x3d,0x49,0x44,0x6b,0x3d,0xae,0x35,0x9e,0x04,0x66,0xc7,0x08,0x62,0x3b,0x28,
+ 0xe0,0x01,0xf8,0xa9,0x45,0x6e,0x28,0xfb,0xad,0xc5,0x1e,0xdc,0xf0,0x31,0xaa,0xdb,
+ 0xf0,0xac,0xb5,0x4b,0x47,0x53,0x36,0x25,0x3b,0x03,0xaa,0x25,0x71,0x71,0x27,0x7d,
+ 0x20,0x9d,0x9a,0xde,0x96,0x16,0x04,0x8d,0xc9,0xf2,0xb0,0x11,0x3a,0x42,0x40,0x68,
+ 0xe1,0x5d,0xd7,0x86,0xbe,0x27,0x69,0xc6,0xf6,0x8b,0x89,0x4c,0xb6,0xa5,0x2a,0x7e,
+ 0xf2,0xec,0xbb,0x84,0xe7,0x81,0xfe,0xb1,0xff,0x00,0x88,0x5b,0x3f,0xa7,0x4a,0x19,
+ 0x42,0x38,0xfe,0x42,0x7d,0xcd,0x42,0x9f,0x15,0xed,0x6b,0xff,0x00,0x2d,0x75,0x96,
+ 0xdd,0x81,0x41,0x70,0x2a,0xd9,0x89,0x31,0xcc,0x82,0x85,0x73,0xd7,0x35,0xf4,0xa5,
+ 0x6b,0xe7,0xbf,0x1f,0x23,0x61,0xb4,0x8f,0x70,0xa2,0xe0,0xae,0x9b,0x65,0x9e,0x20,
+ 0x49,0xdb,0x36,0x09,0x7d,0xc4,0xb2,0x1b,0x1c,0xbc,0x86,0xd4,0x56,0xb9,0xd6,0x8f,
+ 0x83,0x75,0x29,0x5b,0x12,0x14,0x9e,0x14,0xd2,0xfa,0x8f,0x01,0xa5,0x10,0x95,0x72,
+ 0x9e,0xe9,0x3d,0x67,0xa5,0x7d,0x5d,0xa2,0x36,0x4b,0x90,0xce,0xcb,0xb2,0x3b,0xad,
+ 0xf6,0xe8,0xf1,0x93,0x73,0xba,0x4b,0x76,0x6c,0xa7,0x8f,0xab,0x8e,0xb8,0xb2,0xb5,
+ 0xab,0xf5,0x52,0x89,0xad,0x2f,0x01,0xca,0x75,0x54,0xf9,0xa6,0xb3,0x16,0xae,0x17,
+ 0x68,0x2e,0x31,0x9e,0xba,0xef,0xbf,0xf8,0xb7,0xbb,0xbf,0x5d,0xb8,0x52,0xbe,0x40,
+ 0x63,0x0d,0x0b,0x97,0x81,0xe6,0xf7,0x7d,0x36,0xcc,0xac,0xd9,0x4d,0x86,0x4f,0xc2,
+ 0x5e,0x2d,0x32,0x91,0x2e,0x33,0xbc,0x72,0x02,0xd2,0x79,0xe1,0x43,0xdd,0x27,0xb8,
+ 0x23,0xdc,0x12,0x3d,0xeb,0x97,0x02,0xed,0x37,0x39,0xd4,0xf8,0xd7,0x3b,0xb4,0x83,
+ 0x2a,0xe3,0x78,0xbc,0x26,0x44,0xb7,0xd4,0x38,0xf3,0x1d,0x75,0xe0,0xa5,0xa8,0x81,
+ 0xc7,0xa9,0x51,0x3d,0xab,0x17,0xae,0xdf,0x0e,0x94,0x98,0x39,0x7d,0x8e,0x4a,0xfb,
+ 0xa1,0x99,0xcc,0x38,0x7f,0x20,0xe2,0x4f,0xfd,0xab,0xae,0x4b,0x13,0x3b,0xf3,0x35,
+ 0xa3,0x5e,0x9b,0x5f,0xc6,0xdb,0x9b,0x5f,0xa5,0xd5,0xb0,0xe8,0xbd,0x22,0x1f,0x53,
+ 0x5e,0x7e,0x77,0x01,0x7f,0xb8,0x59,0x77,0x35,0xa9,0x77,0x1b,0x54,0xf9,0x36,0xe9,
+ 0xad,0xe4,0xf7,0x22,0xdc,0xa8,0x6f,0x29,0xa7,0x10,0x7e,0x25,0xc1,0xd9,0x49,0x20,
+ 0x8a,0x9f,0xbb,0x85,0xf1,0x58,0x6b,0x4e,0xf5,0x42,0x6e,0x33,0x83,0x63,0x30,0x32,
+ 0x6b,0x65,0xa6,0x42,0xa3,0xce,0xba,0xcc,0x94,0xb4,0xa6,0x4b,0x89,0x3c,0x2d,0x11,
+ 0xfa,0x07,0x01,0x29,0x20,0x8f,0x30,0xf5,0x05,0x1e,0x78,0x4f,0x1c,0x15,0x56,0x46,
+ 0x73,0x94,0x39,0x9c,0x66,0xd9,0x06,0x46,0xf3,0x3f,0x0e,0xf5,0xe2,0xe1,0x22,0xe0,
+ 0xb6,0x82,0xba,0xba,0x14,0xeb,0x8a,0x70,0xa7,0x9e,0x07,0x3c,0x15,0x71,0xcf,0x02,
+ 0xb8,0x87,0xc3,0x6c,0xb9,0x88,0x61,0x6e,0x96,0xaa,0xba,0x2d,0x2c,0x95,0x82,0xd7,
+ 0x22,0xfc,0xdf,0x71,0xc8,0xdb,0xaa,0xbb,0x9d,0xed,0x76,0xc0,0xa9,0x3b,0xa4,0xfe,
+ 0x21,0xf9,0x95,0x93,0x00,0xcb,0x70,0x5d,0x45,0x91,0x3b,0x39,0xc7,0xef,0x56,0x69,
+ 0x96,0xf6,0x26,0xc9,0x74,0x39,0x3e,0x1b,0x8e,0xb0,0xe2,0x12,0x4b,0x8b,0x3c,0xba,
+ 0x82,0xa5,0x00,0xa0,0xb2,0x54,0x07,0x74,0x9e,0xdd,0x2a,0x89,0x08,0x5a,0x9a,0x5a,
+ 0x56,0x85,0x14,0x2d,0x27,0x90,0xa4,0x9e,0x08,0x3f,0x51,0x5f,0x94,0xae,0xcb,0x47,
+ 0x85,0x51,0xe1,0xf2,0x4b,0x25,0x24,0x61,0x86,0x42,0x0b,0x80,0xd8,0x12,0x3c,0x6d,
+ 0xc0,0x3d,0x6d,0xcf,0xaa,0xb5,0x2e,0x2e,0xe5,0x5e,0x86,0xb0,0x6e,0xc6,0x36,0x93,
+ 0xed,0x32,0xcd,0xaa,0xc5,0x96,0x27,0xdd,0x6f,0x76,0xd8,0x2a,0xb6,0x43,0x75,0x45,
+ 0x2d,0xbf,0x32,0x4b,0x21,0xc0,0x15,0xc7,0x7e,0x94,0x0f,0x31,0x6a,0x03,0x82,0x43,
+ 0x64,0x72,0x09,0xe6,0xaa,0x06,0xe1,0xb9,0x1c,0xe7,0x28,0xd6,0x7c,0x7f,0x52,0xb2,
+ 0x9b,0xd4,0x9c,0x86,0xf9,0x67,0x9f,0x1e,0x6b,0x01,0xf5,0xf4,0x36,0xda,0x5a,0x74,
+ 0x38,0x1a,0x6d,0x09,0x01,0x2d,0xa0,0x90,0x7b,0x24,0x01,0xca,0x89,0xf5,0x24,0xd6,
+ 0x57,0xaa,0x1a,0xd2,0xc6,0x67,0xb4,0xcd,0x1c,0xc2,0x13,0x70,0x2f,0xdc,0xb1,0xcb,
+ 0x85,0xd9,0x13,0x22,0xa9,0x44,0xa9,0x2d,0x95,0xb6,0xb8,0xcb,0x23,0xe9,0xd2,0xf3,
+ 0x88,0x4f,0xfe,0x1a,0x87,0xb5,0x6a,0x16,0x74,0xf7,0x29,0x91,0x66,0x37,0x76,0xb1,
+ 0xab,0xc3,0xb6,0x90,0x9e,0xa3,0x3d,0x10,0x1d,0x2c,0x01,0xf5,0xf3,0x3a,0x7a,0x78,
+ 0xfd,0x6b,0x46,0xca,0x39,0x52,0x97,0x08,0x82,0x77,0x4b,0x18,0x32,0x3d,0xf2,0x36,
+ 0xe4,0x6f,0xa0,0x38,0xb4,0x01,0xd0,0x10,0x2f,0xb7,0x37,0xf2,0x0a,0x69,0x64,0x2e,
+ 0x22,0xcb,0x67,0xee,0xff,0x00,0x70,0xf7,0x3d,0xc5,0x6b,0x3d,0xf2,0xf2,0xbb,0x8b,
+ 0xb2,0x31,0x98,0x92,0x1c,0x8b,0x62,0x89,0xf3,0x25,0xa6,0x62,0x25,0x5d,0x29,0x58,
+ 0x41,0xf4,0x5b,0x80,0x05,0xa8,0x9e,0xfc,0xab,0x8e,0xc1,0x29,0x03,0x48,0x80,0x49,
+ 0x00,0x0e,0x49,0xf6,0x15,0xd8,0x63,0xd8,0xf5,0xcb,0x2c,0xc8,0x2d,0xb6,0x3b,0x3c,
+ 0x27,0x6e,0x17,0x6b,0x8c,0x96,0xe2,0x44,0x86,0xc2,0x79,0x71,0xe7,0x96,0xa0,0x94,
+ 0x21,0x23,0xea,0x49,0x03,0xf5,0xab,0xe1,0xd9,0x67,0x87,0xb6,0x17,0xb6,0x3c,0x72,
+ 0xdf,0x77,0xbd,0x41,0x87,0x93,0x6a,0x5b,0x88,0x4b,0xd2,0xaf,0x32,0x1a,0x0e,0x22,
+ 0x0b,0x9c,0x7f,0x57,0x10,0x28,0x7c,0x81,0x3c,0xf1,0xe6,0x76,0x5a,0xcf,0x27,0xb0,
+ 0x21,0x29,0xe8,0x34,0x54,0x70,0xe1,0xf4,0xd1,0xd2,0xd3,0xb6,0xcc,0x60,0x00,0x0f,
+ 0x4f,0xfd,0xeb,0xd4,0xa8,0x09,0x2e,0x37,0x2a,0x9b,0x70,0xdd,0xb4,0xeb,0xac,0xde,
+ 0x2e,0x58,0xd6,0x9b,0x67,0x29,0x0e,0xb0,0xeb,0x62,0x6c,0x3b,0x44,0xa6,0x92,0xb6,
+ 0x9c,0x6d,0x48,0x71,0x21,0xce,0x90,0x0a,0x56,0x85,0x29,0x24,0x73,0xf3,0x05,0x11,
+ 0xdc,0x1a,0xc7,0x32,0xbd,0x30,0xd4,0xdd,0x24,0xb7,0xcb,0x6f,0x23,0xc5,0x72,0xac,
+ 0x3e,0x05,0xc1,0x29,0x8f,0x24,0x5c,0x60,0x49,0x86,0xcc,0x94,0x85,0x85,0xa5,0x0b,
+ 0xea,0x4a,0x52,0xb1,0xd4,0x84,0xa8,0x03,0xcf,0x74,0x83,0xec,0x2b,0xd3,0x65,0x71,
+ 0xae,0x76,0xc8,0x77,0xab,0x7c,0x98,0x17,0x08,0x8c,0x4f,0x83,0x25,0xb2,0xd3,0xf1,
+ 0x64,0xb6,0x1c,0x69,0xd4,0x11,0xc1,0x4a,0x92,0xa0,0x42,0x81,0x1e,0xa0,0xd5,0xd1,
+ 0x63,0x49,0xb9,0x1f,0xfc,0x38,0xfa,0x2a,0x2a,0xc4,0xf0,0x3f,0xcd,0xc3,0xd8,0xf6,
+ 0xa9,0x61,0xee,0xba,0x94,0x98,0xd2,0xa1,0xdd,0xa3,0xb6,0x4f,0x75,0x79,0x88,0x71,
+ 0xa7,0x48,0x1f,0x87,0x94,0xcf,0xf8,0x85,0x5a,0x25,0x68,0x0d,0x2e,0xd9,0x86,0x0b,
+ 0xa2,0x1a,0xf1,0x74,0xd4,0x8c,0x09,0x93,0x8e,0x33,0x78,0xb5,0x3d,0x6d,0xb8,0xe3,
+ 0xac,0x27,0xfa,0x12,0x96,0xa7,0x59,0x75,0x0f,0x32,0x39,0xfb,0xa2,0x0b,0x4a,0x05,
+ 0x03,0x94,0x9e,0xb1,0xd2,0x11,0xc1,0x0a,0xdf,0xf5,0xed,0x12,0x94,0xa5,0x11,0x29,
+ 0x4a,0x51,0x12,0xb5,0xde,0x33,0xb7,0xad,0x38,0xc3,0xf5,0x03,0x21,0xce,0x2d,0x38,
+ 0x7d,0xae,0x36,0x5b,0x7e,0x91,0xf1,0x53,0xae,0xc5,0x80,0xb7,0xd4,0xe7,0x48,0x04,
+ 0xa1,0x4a,0xe7,0xcb,0x0a,0x23,0xa9,0x41,0x1d,0x3d,0x4a,0x25,0x4a,0xe4,0xf7,0xad,
+ 0x89,0x4a,0x22,0xfc,0x23,0x91,0x51,0xc3,0x72,0x9b,0x06,0xd2,0x6d,0xca,0x5a,0xa5,
+ 0xae,0xe3,0x62,0x8f,0x8e,0xe5,0x4a,0x6d,0x42,0x3e,0x49,0x66,0x65,0x2c,0xc8,0x43,
+ 0x9d,0xb8,0x2e,0xa5,0x3c,0x25,0xf4,0xf6,0x00,0x85,0x82,0x78,0xe4,0x25,0x48,0x27,
+ 0x9a,0x92,0x14,0xa2,0x2f,0x34,0xfb,0x8d,0xdb,0xbe,0x57,0xb6,0x3d,0x4d,0x9d,0x86,
+ 0x65,0x6c,0x0f,0x39,0xb1,0xe7,0x43,0x9e,0xc8,0x3e,0x44,0xf8,0xe4,0x90,0x87,0x9b,
+ 0x27,0xd8,0xf0,0x41,0x1e,0xa9,0x50,0x20,0xfa,0x56,0x35,0xa7,0x1a,0x53,0x98,0xea,
+ 0xfe,0x40,0xdd,0x93,0x0b,0xc6,0xae,0x59,0x35,0xcd,0x45,0x20,0xb1,0x6e,0x8e,0xa7,
+ 0x3c,0xb0,0x4f,0x01,0x4e,0x28,0x7c,0xad,0xa7,0xf9,0x94,0x42,0x47,0xb9,0xaf,0x40,
+ 0xbb,0xad,0xd9,0xe6,0x1d,0xbb,0x9b,0x5e,0x2f,0x0f,0x29,0x7e,0x55,0xbd,0x56,0x2b,
+ 0x87,0xc5,0x22,0x65,0xbf,0xa4,0x48,0x71,0x85,0x20,0x87,0x63,0x05,0x28,0x10,0x94,
+ 0xac,0x86,0xd4,0x55,0xc1,0x20,0xb6,0x38,0xf5,0x35,0xb3,0x74,0xcf,0x4a,0xb1,0x1d,
+ 0x1a,0xc5,0x23,0xe3,0x78,0x4e,0x3f,0x0b,0x1c,0xb2,0xb0,0x7a,0x84,0x58,0x4d,0xf1,
+ 0xd6,0xae,0x00,0x2b,0x71,0x47,0x95,0x38,0xb2,0x00,0xe5,0x6b,0x25,0x47,0x81,0xc9,
+ 0x34,0x45,0x4e,0x58,0x17,0x83,0x9e,0xb9,0xe4,0xb1,0x52,0xe5,0xf6,0x7e,0x37,0x87,
+ 0x30,0xa5,0x02,0xe4,0x69,0x93,0xd7,0x25,0xfe,0x40,0x3c,0x1e,0x96,0x10,0xb6,0xcf,
+ 0x1c,0x91,0xdd,0xc1,0xeb,0x59,0xbd,0xdb,0xc1,0x0f,0x3a,0x66,0x12,0x95,0x6c,0xd4,
+ 0x9c,0x7a,0x64,0xbe,0x3e,0x56,0xa5,0xc3,0x7d,0x86,0xc9,0xfc,0x56,0x9e,0xb2,0x3f,
+ 0xc3,0x57,0x03,0x4a,0x22,0xf3,0xf1,0xac,0x3e,0x1a,0xda,0xf7,0xa3,0x50,0x64,0xdc,
+ 0x65,0xe2,0x43,0x26,0xb4,0x47,0x3f,0x79,0x3f,0x18,0x7b,0xe3,0x40,0x1f,0xc5,0xe4,
+ 0x80,0x1e,0x09,0x1d,0xc9,0x51,0x6f,0x80,0x07,0x72,0x2a,0x2f,0xad,0x0a,0x6d,0x6a,
+ 0x42,0xd2,0x52,0xb4,0x9e,0x0a,0x54,0x38,0x20,0xfd,0x2b,0xd5,0x3d,0x44,0x3d,0xe5,
+ 0x78,0x73,0xe0,0xfb,0x9e,0xb7,0xce,0xbe,0x59,0x9a,0x8d,0x88,0x6a,0x3f,0x4a,0x9c,
+ 0x6a,0xf3,0x1d,0xae,0x19,0x9e,0xe7,0x1d,0x91,0x31,0x09,0x1f,0x30,0x3c,0x71,0xe6,
+ 0x8f,0x9d,0x3d,0x8f,0xce,0x07,0x41,0x22,0xa1,0x3a,0x56,0x4b,0xa9,0x1a,0x71,0x91,
+ 0xe9,0x1e,0x6f,0x76,0xc4,0x72,0xdb,0x5b,0xd6,0x6c,0x82,0xd6,0xf7,0x93,0x26,0x23,
+ 0xdc,0x12,0x93,0xc0,0x29,0x52,0x48,0xec,0xa4,0xa9,0x24,0x29,0x2a,0x04,0x85,0x24,
+ 0x82,0x09,0x06,0xb9,0x3a,0x51,0xa5,0x39,0x3e,0xb6,0x67,0xb6,0xac,0x3b,0x10,0xb6,
+ 0xae,0xe9,0x7c,0xb9,0x39,0xd0,0xd3,0x49,0xec,0x94,0x24,0x77,0x53,0x8e,0x2b,0xd1,
+ 0x28,0x48,0xe4,0x95,0x1f,0x40,0x28,0x8b,0x14,0x65,0x97,0x24,0xbc,0x86,0x9a,0x42,
+ 0x9d,0x75,0xc5,0x04,0xa1,0x08,0x1c,0xa9,0x44,0xf6,0x00,0x01,0xea,0x6a,0x53,0xe9,
+ 0x07,0x86,0x56,0xbf,0x6a,0xec,0x18,0xb7,0x16,0x71,0x66,0xf1,0x3b,0x5c,0x8e,0xed,
+ 0xcc,0xca,0x1f,0xf8,0x23,0xc7,0xf1,0x16,0x42,0x54,0xf8,0x1e,0xe0,0xf9,0x7c,0x11,
+ 0xdc,0x72,0x2a,0xd4,0xf6,0x75,0xe1,0xf1,0x81,0xed,0x6a,0xd5,0x0e,0xeb,0x2a,0x34,
+ 0x7c,0xa7,0x51,0x14,0x80,0xa9,0x19,0x04,0xa6,0x82,0x84,0x55,0x94,0xf0,0xa4,0x44,
+ 0x4a,0x87,0xdd,0x24,0x72,0xa1,0xd7,0xfb,0x6a,0x04,0xf2,0x40,0x21,0x29,0x95,0x74,
+ 0x45,0x50,0x16,0xef,0x04,0x3c,0xe1,0xd8,0x69,0x5c,0xfd,0x4b,0xc7,0xe3,0x4c,0x23,
+ 0x95,0x35,0x1e,0x13,0xef,0x36,0x0f,0xfb,0xe7,0xa0,0x9f,0xf0,0xd6,0xbe,0xcf,0x7c,
+ 0x1d,0x75,0xd7,0x16,0x69,0x6f,0x58,0xde,0xc6,0xf3,0x26,0xc1,0x3d,0x2c,0xdb,0xee,
+ 0x06,0x3b,0xe4,0x7d,0x4a,0x64,0x21,0xb4,0x0f,0xd1,0x66,0xaf,0x02,0x94,0x45,0xe5,
+ 0xf3,0x3f,0xd3,0x4c,0xb3,0x4a,0xef,0xee,0xd9,0x33,0x0c,0x72,0xe7,0x8d,0x5d,0x5b,
+ 0x27,0x98,0xd7,0x38,0xcb,0x65,0x4a,0x00,0xf1,0xd4,0x9e,0xa1,0xc2,0xd2,0x7d,0x94,
+ 0x9e,0x41,0xf5,0x04,0x8a,0xce,0x76,0xbd,0xb6,0x4c,0xaf,0x75,0x5a,0x9b,0x1b,0x12,
+ 0xc6,0x52,0x98,0xcc,0x36,0x91,0x22,0xe7,0x76,0x7d,0x3c,0xb3,0x6f,0x8d,0xd4,0x02,
+ 0x9c,0x50,0xe4,0x75,0x28,0xf3,0xc2,0x50,0x0f,0x2a,0x3f,0x40,0x14,0xa4,0xfa,0x18,
+ 0xd5,0x6d,0x1d,0xc3,0x35,0xc3,0x13,0x7f,0x1b,0xce,0x71,0xe8,0x59,0x15,0xa5,0xce,
+ 0x4a,0x5a,0x94,0x8f,0x9d,0x95,0xf0,0x47,0x98,0xd3,0x83,0x85,0x36,0xb0,0x09,0x01,
+ 0x68,0x20,0xf7,0x3d,0xfb,0xd6,0xbf,0xda,0x6e,0xd2,0x31,0x6d,0xa2,0xe2,0x17,0xbb,
+ 0x16,0x37,0x2e,0x4d,0xd1,0x57,0x5b,0x92,0xe7,0x3d,0x70,0x9e,0x84,0x09,0x05,0xbe,
+ 0x3a,0x59,0x65,0x4a,0x48,0x01,0x41,0xb4,0xf3,0xdf,0x81,0xca,0x96,0xb5,0x00,0x9e,
+ 0xae,0x01,0x17,0x5d,0xb7,0x2d,0x8b,0xe9,0x36,0xda,0xed,0x71,0xfe,0xc3,0xc7,0x63,
+ 0xdd,0xf2,0x30,0x84,0x89,0x19,0x1d,0xe1,0xa4,0xbf,0x31,0xc5,0x8e,0x79,0x28,0x2a,
+ 0x1c,0x32,0x93,0xcf,0xec,0xb6,0x13,0xc8,0x03,0xa8,0xa8,0x8e,0x6a,0x41,0xd2,0x94,
+ 0x45,0xae,0xef,0x1b,0x7b,0xd3,0xab,0xee,0xa5,0xd8,0x75,0x0a,0x56,0x23,0x6d,0x19,
+ 0x9d,0x91,0xc7,0x1c,0x89,0x78,0x65,0x90,0xd3,0xc4,0xad,0xb5,0x36,0x7c,0xc2,0x9e,
+ 0x03,0xbc,0x05,0x12,0x9e,0xbe,0xae,0x93,0xdd,0x3c,0x1a,0xd8,0x94,0xa5,0x11,0x29,
+ 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
+ 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x14,0x2e,
+ 0xf1,0x31,0xd9,0xbb,0x3b,0x8c,0xd2,0xc7,0x72,0xcc,0x76,0x08,0x5e,0xa2,0x62,0xf1,
+ 0xd6,0xf4,0x5f,0x21,0xa2,0xa7,0x6e,0x51,0x07,0x2a,0x72,0x21,0xe3,0xba,0x95,0xea,
+ 0xb6,0xfb,0x13,0xd5,0xca,0x40,0x1e,0x61,0x23,0xb8,0xf0,0xe7,0xd9,0xd4,0x5d,0xb0,
+ 0xe9,0x2b,0x17,0x6b,0xd4,0x44,0x1d,0x45,0xc9,0x18,0x6e,0x45,0xd5,0xe5,0x77,0x54,
+ 0x36,0x8f,0xcc,0xdc,0x34,0x9e,0x3b,0x74,0x72,0x0a,0xf8,0xf5,0x73,0x9e,0xea,0x4a,
+ 0x51,0xc4,0xb9,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,
+ 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,
+ 0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,
+ 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
+ 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,
+ 0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,
+ 0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,
+ 0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,
+ 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,
+ 0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,
+ 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
+ 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x7f,0xff,0xd9};
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/ncc1701.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/ncc1701.h
new file mode 100644
index 000000000..d10383d16
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/ncc1701.h
@@ -0,0 +1,318 @@
+//
+// ncc1701
+// Data size = 4912 bytes
+//
+// JFIF, Compression=JPEG, Size: 240 x 77, 24-Bpp
+//
+// for non-Arduino builds...
+#ifndef PROGMEM
+#define PROGMEM
+#endif
+const uint8_t ncc1701[] PROGMEM = {
+ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x48,
+ 0x00,0x48,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
+ 0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,
+ 0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,
+ 0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,
+ 0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,
+ 0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,
+ 0x00,0x11,0x08,0x00,0x4d,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
+ 0x01,0xff,0xc4,0x00,0x1d,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x06,0x07,0x08,0x09,0x04,0x03,0x02,0x0a,
+ 0xff,0xc4,0x00,0x40,0x10,0x00,0x01,0x03,0x03,0x02,0x03,0x06,0x03,0x05,0x04,0x09,
+ 0x05,0x01,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x11,0x06,0x07,0x12,0x21,
+ 0x31,0x08,0x13,0x41,0x51,0x61,0x71,0x09,0x22,0x81,0x14,0x32,0x91,0xa1,0xb1,0x15,
+ 0x42,0x52,0x62,0x16,0x23,0x24,0x53,0x63,0x72,0x73,0x82,0xb2,0x17,0x33,0x92,0xa2,
+ 0xd1,0xf0,0xff,0xc4,0x00,0x1a,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0xff,0xc4,
+ 0x00,0x23,0x11,0x00,0x02,0x02,0x01,0x05,0x01,0x00,0x02,0x03,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x02,0x11,0x12,0x03,0x21,0x31,0x41,0x51,0x04,0x05,0x13,
+ 0x22,0x32,0x61,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,
+ 0x00,0xd5,0x3a,0x2b,0x2c,0xb5,0xcf,0x6f,0x7d,0xd3,0xb4,0x6f,0x56,0xa3,0x65,0x1a,
+ 0xa2,0xd5,0x67,0xb0,0x5b,0xae,0x92,0x21,0x26,0xcf,0x22,0x02,0x56,0xa8,0xe1,0xb5,
+ 0x94,0x29,0x0e,0x2f,0xf7,0xd4,0x38,0x4e,0x4e,0x71,0x9e,0x94,0xa9,0x74,0xed,0xfb,
+ 0x3e,0xee,0xdb,0xc1,0x1a,0xd1,0x49,0xe2,0xf9,0x55,0xf6,0x76,0x92,0xd8,0x48,0xf4,
+ 0xc5,0x5a,0x8d,0x91,0x97,0xf8,0x69,0xc1,0x21,0x23,0x24,0xe0,0x79,0x9a,0x4e,0xb8,
+ 0x6a,0x5b,0x4d,0xa5,0x95,0x3b,0x36,0xe7,0x12,0x2b,0x69,0xea,0xa7,0x9f,0x4a,0x40,
+ 0xe7,0x8f,0x13,0x59,0x3d,0x74,0xed,0x71,0x2a,0xf8,0x15,0x19,0x7a,0xaa,0xe1,0x29,
+ 0xb0,0x4a,0x80,0x0f,0x9c,0x67,0xd8,0x54,0x69,0x72,0xdc,0xa9,0xbb,0x85,0xaa,0x58,
+ 0xb6,0x37,0x71,0x90,0xa8,0xe9,0x52,0x78,0xbb,0xd7,0x4f,0xcd,0x9c,0xa9,0xc5,0x7b,
+ 0xf0,0x80,0x91,0xea,0xb2,0x7c,0x05,0x0e,0x2a,0x2a,0xdb,0x1c,0x5c,0xa5,0x25,0x14,
+ 0xb7,0x66,0xd0,0x23,0x5d,0x58,0x1e,0x68,0xba,0xcd,0xd2,0x3c,0x96,0x87,0x55,0xb0,
+ 0xae,0xf0,0x0f,0x72,0x33,0x4a,0xb0,0x6e,0x71,0x2e,0x6d,0x97,0x22,0x49,0x6a,0x4a,
+ 0x07,0x52,0xd2,0xc2,0xb1,0xef,0xe5,0x59,0x85,0x62,0xd7,0x57,0x6d,0x31,0x6f,0x61,
+ 0x88,0xb3,0x1c,0x8c,0xd0,0x48,0x09,0x6a,0x2b,0x9c,0x28,0x23,0xa6,0x08,0x14,0xbb,
+ 0xa1,0xb7,0x73,0x50,0x6d,0xfe,0xa9,0x62,0xfb,0x0e,0x5a,0xd6,0x90,0xa1,0xf6,0xa8,
+ 0xae,0x2f,0xfa,0xb9,0x0d,0xe7,0xe6,0x0a,0xf5,0xc7,0x43,0xd4,0x57,0x04,0x3e,0x87,
+ 0x39,0xe3,0x8e,0xde,0x9e,0xcc,0xff,0x00,0x1e,0xe3,0x06,0xf2,0xdd,0x75,0x46,0x94,
+ 0xd4,0x4d,0xbe,0x1d,0xa7,0x74,0x46,0xc1,0x47,0x57,0xf4,0x8e,0x54,0x97,0xe7,0xf7,
+ 0x1f,0x69,0x16,0xeb,0x7b,0x05,0xe7,0xcb,0x5c,0x5c,0x3c,0x64,0x0e,0x41,0x39,0xe5,
+ 0x92,0x6a,0x4e,0xb4,0x5c,0x9b,0xbc,0xda,0xa1,0x4f,0x64,0x29,0x2c,0xca,0x61,0x0f,
+ 0xa0,0x2f,0xa8,0x4a,0x92,0x14,0x33,0xeb,0x83,0x55,0xb3,0xb6,0x8f,0x64,0x16,0xfb,
+ 0x43,0x69,0xe5,0x5d,0x74,0xf3,0xa9,0xb6,0xeb,0x78,0xcd,0xa1,0x94,0x48,0x2e,0x14,
+ 0x22,0x5c,0x74,0x92,0xae,0xe1,0x67,0xa0,0xe6,0x72,0x0e,0x3a,0xfa,0x1a,0xed,0x47,
+ 0x8e,0xef,0xa2,0x3c,0x87,0xf1,0x5d,0xd0,0x37,0x1b,0xdc,0x78,0x4c,0x69,0x2d,0x42,
+ 0x86,0x1d,0x59,0x4f,0xda,0x5f,0x4b,0x48,0x03,0xc8,0xf0,0xf1,0x13,0x52,0x2a,0x7b,
+ 0x76,0xe8,0x76,0x16,0x15,0x36,0xf1,0x62,0x8a,0xc9,0x03,0x90,0xb8,0x95,0x2c,0x79,
+ 0xe4,0x70,0x01,0xf9,0xd6,0x7c,0x5c,0x3e,0x17,0xbb,0xbd,0x76,0x9a,0xa9,0x32,0x74,
+ 0xeb,0xfc,0x44,0xf3,0x4a,0x2e,0xd1,0x42,0x4f,0xfe,0xf5,0xf2,0x9f,0x85,0x8e,0xe7,
+ 0x05,0x64,0xe8,0xf5,0xaf,0x3f,0xc5,0x79,0x8c,0x3f,0x45,0xd5,0xac,0x48,0xdc,0xbe,
+ 0x37,0x0f,0x88,0xee,0xd5,0x5b,0xd4,0xb4,0x1d,0x49,0x09,0xf5,0x85,0x72,0xee,0x3e,
+ 0x6e,0x5e,0x5f,0x7b,0xf3,0xa6,0xfb,0x7f,0x12,0x8d,0x03,0x32,0x52,0x1a,0x8d,0x70,
+ 0x95,0x21,0xd5,0xa4,0x84,0xa1,0xa6,0x40,0x41,0xc7,0x89,0x51,0x49,0xc7,0xe3,0x55,
+ 0x1d,0x9f,0x87,0x06,0xf3,0x45,0x42,0x5a,0x6b,0x4b,0x0e,0xe9,0x09,0x09,0x40,0xfd,
+ 0xb1,0x1c,0x60,0x0f,0xf7,0xd3,0x23,0x78,0x3b,0x2d,0xee,0x3e,0xc8,0x59,0x61,0xcf,
+ 0xd4,0x56,0x25,0x43,0x8f,0x31,0xd3,0x1d,0x90,0xdd,0xd1,0x32,0x14,0x55,0x8e,0x25,
+ 0x7c,0x89,0x59,0xe5,0x81,0xcc,0xe3,0x1d,0x3c,0xc5,0x52,0x51,0x25,0xe4,0x5e,0xb9,
+ 0x5d,0xbe,0x6c,0xf7,0x04,0xb4,0x44,0x47,0xca,0x51,0xf3,0x25,0x62,0x62,0x9b,0xe2,
+ 0xf7,0xe0,0xc6,0x7e,0xb5,0x0e,0xeb,0x8e,0xda,0x2b,0xd7,0x9b,0x8b,0x21,0xa4,0x5b,
+ 0xdb,0x72,0xdf,0x67,0x8a,0xca,0x61,0x43,0x7d,0xe5,0x29,0x0f,0x4e,0x7d,0x44,0x77,
+ 0xce,0xf5,0xe2,0x4b,0x68,0x4f,0xca,0x8e,0x9c,0x4a,0xc9,0x04,0xa4,0x62,0xb3,0xed,
+ 0xa7,0x67,0xdd,0xd2,0xde,0x0d,0x38,0xab,0xc6,0x8d,0xd2,0x53,0x6f,0x36,0xa6,0x9e,
+ 0x54,0x55,0x4b,0x44,0x86,0x5b,0x47,0x7a,0x8f,0xbc,0x91,0xc6,0xe2,0x49,0xc6,0x7c,
+ 0x05,0x3a,0xae,0x7d,0x8d,0x77,0x77,0x44,0xc0,0x73,0x53,0x5c,0xf4,0xa3,0x36,0x70,
+ 0x90,0x95,0x2c,0x4a,0xbc,0xc6,0xef,0x57,0xc1,0x92,0x02,0x51,0xde,0x7c,0xca,0xeb,
+ 0x80,0x32,0x4d,0x14,0xba,0x1a,0x6d,0x34,0xe4,0x4d,0x32,0x37,0x09,0xf9,0x17,0x98,
+ 0xd3,0xad,0x89,0x5d,0xa2,0x60,0x56,0x59,0x76,0x1b,0x84,0x38,0x95,0x79,0xf1,0x0e,
+ 0x64,0x9f,0x1f,0x3a,0xb8,0x9b,0x5f,0xda,0x21,0x2e,0x6d,0x4a,0xae,0x5a,0xb0,0x3d,
+ 0xfb,0x7e,0x0a,0x9c,0x60,0xb2,0xdc,0x65,0x87,0x26,0xf0,0xa4,0x14,0x2d,0x29,0xc7,
+ 0xef,0x03,0x83,0xe1,0x90,0x6b,0x3d,0xf4,0x9e,0xe0,0xea,0x7d,0x1f,0x2a,0x35,0xd2,
+ 0x26,0x9c,0x96,0xd4,0xb0,0x8e,0x5c,0x6c,0xa5,0x4a,0x46,0x7a,0x8c,0x78,0x7e,0x19,
+ 0xa5,0xbd,0x6b,0xda,0xf3,0x77,0xae,0x31,0x5e,0x8f,0x06,0xcf,0x2d,0xb0,0xe8,0x21,
+ 0x45,0x0c,0x84,0xf5,0xf5,0x3e,0xc2,0xb0,0xd3,0xd0,0x92,0x79,0x49,0xf3,0xd1,0xea,
+ 0x7d,0x9f,0x6e,0x9e,0xb2,0x5a,0x70,0x82,0x55,0xd9,0xe1,0xda,0xb3,0xb5,0xe6,0xe5,
+ 0x6b,0x2b,0xf1,0x6f,0x4d,0xdb,0xee,0x96,0x48,0x2c,0x8e,0x14,0xa2,0x52,0xd2,0x86,
+ 0xc1,0x1e,0x21,0x23,0x1f,0x89,0xc9,0xa8,0x0b,0x47,0x76,0xbb,0xdf,0xad,0xb3,0xd4,
+ 0x0c,0x5c,0xe2,0x6b,0x34,0x84,0x21,0xde,0xf1,0xdb,0x6c,0xb7,0x9b,0x5c,0x47,0xc7,
+ 0x8a,0x56,0xdf,0xaf,0x98,0xc1,0xf5,0xa6,0xce,0xb0,0xb5,0xee,0x7e,0xb8,0x94,0xeb,
+ 0xb3,0xad,0xf2,0xd6,0x56,0x4a,0x88,0x53,0xcd,0xa0,0x7f,0xca,0x9a,0xe7,0x63,0xf5,
+ 0x8c,0x97,0x56,0xa7,0x2d,0xcc,0x45,0x49,0x51,0x20,0x3d,0x2d,0x2a,0xe1,0x19,0xe4,
+ 0x39,0x12,0x6b,0xa1,0xa5,0xc2,0x3c,0xa4,0xfd,0x35,0xbb,0x63,0xbe,0x27,0xdb,0x69,
+ 0xb8,0x8c,0xd9,0xad,0x9a,0xad,0xd3,0xa4,0xb5,0x34,0xc2,0x86,0x1c,0x4a,0xb2,0xe4,
+ 0x12,0xe9,0x38,0xf9,0x5e,0xc0,0xc2,0x49,0xfe,0x20,0x31,0x9a,0xb9,0x48,0x5a,0x5d,
+ 0x42,0x56,0x85,0x05,0xa1,0x43,0x21,0x49,0x39,0x04,0x79,0x8a,0xfc,0xe9,0x7f,0xd0,
+ 0x8b,0xe1,0x6b,0x8a,0x7d,0xce,0x04,0x56,0x5b,0x19,0x21,0x2b,0x5b,0x9c,0x3f,0x4e,
+ 0x11,0xe7,0x56,0xf7,0x6a,0x7b,0x6d,0xee,0x26,0xd6,0xe8,0x4b,0x46,0x91,0x6f,0x53,
+ 0x37,0xa8,0x51,0x6d,0x68,0x47,0x8d,0x21,0x56,0xd0,0xe3,0x81,0xb1,0xf7,0x52,0xa5,
+ 0xa8,0x92,0xae,0x11,0xcb,0x9f,0x30,0x00,0x15,0x38,0x37,0xc1,0x59,0xa3,0x5c,0xa8,
+ 0xac,0xd7,0x8b,0xf1,0x26,0xdc,0x88,0x6e,0x23,0xbc,0xd3,0x16,0x8b,0x82,0x70,0x12,
+ 0x43,0xa5,0x4d,0x0c,0xff,0x00,0x17,0x25,0x79,0x53,0xd2,0xd5,0xf1,0x34,0xb8,0x96,
+ 0x12,0x2e,0x1b,0x7f,0x1c,0xba,0x4f,0x35,0x47,0xba,0x10,0x91,0xf4,0x2d,0x9f,0xd6,
+ 0xa7,0x09,0x0f,0x34,0x5f,0x4a,0x2a,0x87,0x5c,0xbe,0x23,0xd7,0x79,0x89,0x79,0x36,
+ 0xcd,0x2f,0x02,0x0a,0xd4,0x9c,0x36,0x66,0x3a,0xb7,0x78,0x4f,0x99,0xe1,0x23,0x3f,
+ 0x80,0xaf,0x58,0x3f,0x11,0xab,0x83,0xa9,0xee,0x9c,0xb3,0x59,0x97,0x25,0xbc,0x25,
+ 0xd0,0x97,0xdc,0x4f,0xcd,0xec,0x7a,0x51,0x84,0xbc,0x1e,0x51,0xf4,0xbd,0x94,0x55,
+ 0x2a,0x8f,0xdb,0xf6,0xed,0x24,0x9e,0x0d,0x39,0x6b,0x5e,0x3a,0xf0,0xc9,0x59,0xae,
+ 0x94,0xf6,0xf0,0xbc,0xf1,0x27,0x3a,0x6a,0xdf,0x8f,0x1c,0x3c,0xba,0x7f,0xae,0x5e,
+ 0x13,0x9c,0x4b,0x99,0x45,0x54,0xf8,0xbd,0xb9,0xdc,0x9a,0xf2,0x1a,0x6b,0x48,0x27,
+ 0x8d,0x47,0x1f,0x3d,0xc5,0x28,0x1f,0x8a,0x92,0x00,0xfa,0xd2,0xa0,0xed,0xc7,0x69,
+ 0x8f,0x29,0x6c,0xcc,0xd2,0xd2,0xd8,0xe1,0x1f,0x79,0x99,0x8d,0xbb,0xcf,0xcb,0x90,
+ 0x03,0x1e,0xa0,0xd2,0xc2,0x5e,0x0f,0x38,0x96,0x72,0x8a,0x80,0xed,0xbd,0xb4,0xf6,
+ 0xfe,0x67,0x00,0x92,0xdd,0xd6,0x02,0x8e,0x02,0x8b,0xb1,0x92,0xa4,0x8c,0xf5,0xe6,
+ 0x95,0x13,0x81,0xed,0x52,0x86,0x90,0xdd,0x7d,0x21,0xaf,0x55,0xc1,0x61,0xbf,0xc3,
+ 0xb8,0x3d,0x8c,0xf7,0x09,0x5f,0x03,0xb8,0xff,0x00,0x22,0xb0,0xaf,0xca,0x93,0x8b,
+ 0x5c,0xa2,0x93,0x4f,0x82,0xa9,0xf6,0x87,0xf8,0x68,0xe9,0xfd,0xd4,0xd6,0x37,0x3d,
+ 0x53,0xa5,0xee,0x31,0xec,0x57,0x0b,0xa3,0xcb,0x95,0x36,0x14,0xd6,0x4b,0xac,0x38,
+ 0xfa,0xce,0x56,0xea,0x54,0x0e,0x50,0x54,0x79,0x90,0x01,0x19,0xe7,0xca,0xab,0xad,
+ 0xfb,0xe1,0x55,0xb8,0x36,0xe0,0xe7,0xd9,0x53,0x62,0xbd,0x80,0x0f,0x09,0x62,0x62,
+ 0x9b,0x51,0xc7,0x41,0xfd,0x60,0x4e,0x0f,0xd6,0xb5,0x8a,0x8a,0x2f,0xa1,0xa6,0xd3,
+ 0x4e,0x2d,0xa6,0x8c,0x4d,0xba,0x76,0x16,0xdd,0x1d,0x21,0x24,0xba,0x8d,0xbd,0xba,
+ 0x2d,0x64,0x60,0x2e,0x08,0xfb,0x42,0x79,0xf2,0xe7,0xc2,0xa3,0x8a,0x61,0xc4,0xd2,
+ 0x3a,0xa3,0x6e,0x35,0x93,0x73,0x2f,0x7a,0x76,0xe1,0x6b,0x0c,0xab,0x81,0xc6,0xe6,
+ 0xc6,0x5b,0x7c,0xf0,0x46,0x32,0x46,0x39,0xa4,0x9f,0xc0,0x56,0xf7,0x57,0x2d,0xc2,
+ 0xd7,0x0e,0xec,0xc8,0x66,0x74,0x46,0x26,0x34,0x0e,0x7b,0xb9,0x0d,0xa5,0x69,0xcf,
+ 0xb1,0x14,0x95,0x25,0x55,0xb0,0xdc,0xa7,0x29,0x29,0xb9,0x36,0xd7,0xbb,0x99,0x3f,
+ 0x66,0xb8,0xc2,0xd4,0x76,0xc6,0x54,0xc3,0x8c,0x92,0x47,0xca,0x19,0x1c,0xc7,0xf9,
+ 0xbc,0xa9,0xd5,0xa4,0x34,0x74,0x9d,0x6f,0xa9,0xed,0xda,0x66,0xd6,0xeb,0x6e,0xdc,
+ 0xa7,0x28,0xf0,0x24,0x91,0xf2,0xb6,0x92,0x38,0xdc,0x50,0xeb,0xc2,0x07,0x3a,0x92,
+ 0x3b,0x54,0xfc,0x3b,0xd7,0x74,0x5c,0xfd,0x55,0xb4,0x6f,0xae,0xcf,0x70,0x73,0x89,
+ 0xe9,0x56,0x16,0x5d,0x2d,0xb6,0xe9,0xea,0x54,0xc1,0xe8,0x95,0x1f,0xe0,0x3c,0x8f,
+ 0x86,0x2a,0x95,0xec,0x47,0x66,0x6d,0xe6,0xbc,0xeb,0xbf,0xdb,0xf6,0x19,0x57,0x2d,
+ 0x33,0x78,0xb5,0xc8,0x52,0x11,0x7e,0xbb,0x3c,0xb6,0x92,0xca,0x81,0xc2,0x90,0x94,
+ 0x9f,0x9d,0x44,0x10,0x41,0x00,0x11,0xe0,0x48,0xae,0x58,0xfc,0xdf,0xca,0xd3,0xb5,
+ 0xe1,0xef,0x4b,0xf3,0x2f,0xf5,0xe2,0xe0,0x94,0xaa,0xac,0xdc,0x0b,0x3d,0xb5,0x16,
+ 0x6b,0x44,0x1b,0x7b,0x6a,0x2b,0x6e,0x2b,0x08,0x61,0x2a,0x57,0x52,0x12,0x90,0x90,
+ 0x7f,0x2a,0xeb,0x52,0x82,0x41,0x24,0x80,0x07,0x52,0x6a,0x09,0xb5,0x6a,0x5d,0x64,
+ 0x34,0x75,0xae,0xd9,0x7a,0xd4,0x31,0x9d,0xbb,0x30,0xc2,0x1b,0x99,0x73,0xb7,0xb1,
+ 0xdd,0x2a,0x4a,0xc0,0xe6,0xac,0x12,0x78,0x73,0xe9,0x49,0x93,0xe3,0x5c,0xae,0x4b,
+ 0xef,0x24,0xce,0x97,0x2d,0x58,0xe1,0x0b,0x5b,0xe5,0x39,0x1e,0xc2,0xbb,0xd6,0x93,
+ 0x7c,0x9f,0x36,0xf5,0x11,0x36,0xdd,0x75,0xd6,0x9e,0xb2,0x8c,0xcd,0xbc,0x43,0x63,
+ 0xd0,0xba,0x09,0xfc,0x05,0x34,0x6e,0x5d,0xa1,0x34,0x8c,0x0e,0x30,0xd3,0xf2,0xa6,
+ 0xad,0x3d,0x03,0x11,0xd5,0x85,0x7b,0x28,0xe0,0x54,0x50,0xe5,0x85,0xb6,0x1c,0x19,
+ 0x86,0xda,0x41,0xf1,0x48,0xfd,0x4d,0x76,0x31,0xa7,0xe1,0x05,0x25,0x6f,0xa5,0xa0,
+ 0x8f,0xe1,0x51,0xe5,0x8f,0xa5,0x68,0xb4,0x57,0x6c,0x87,0xa8,0xfa,0x16,0xa7,0x76,
+ 0xa5,0xef,0x90,0xeb,0x76,0xbd,0x33,0x29,0xd9,0x05,0x24,0x37,0xdf,0x38,0x30,0x15,
+ 0xfb,0xa4,0x84,0xe7,0x97,0xa6,0x6a,0xad,0xee,0x26,0xc5,0x6b,0x0d,0xfa,0xd4,0xcd,
+ 0xdd,0xf5,0x6d,0xd5,0x57,0x15,0xb4,0xf2,0xdd,0x8a,0xc4,0xf6,0xdd,0xee,0xa2,0x71,
+ 0x63,0x21,0x96,0x92,0xe8,0x08,0x18,0x03,0xdf,0x1c,0xce,0x6a,0xd1,0x31,0x36,0xc7,
+ 0x68,0xc0,0x8e,0xdb,0x09,0x23,0xc7,0x19,0x35,0xe8,0xf6,0xb6,0xb4,0x32,0x14,0xa2,
+ 0xf2,0x42,0xfc,0xea,0xd4,0x12,0xe1,0x12,0xe6,0xd9,0x18,0xed,0x46,0xd6,0xcd,0xd9,
+ 0x2d,0x22,0x2c,0x76,0x1b,0xc4,0xcb,0x45,0xb5,0x4a,0x5b,0xce,0xc5,0x8e,0xea,0x92,
+ 0xd2,0x9d,0x51,0xca,0xd6,0x02,0x8a,0x94,0x92,0x7d,0x15,0x49,0x1a,0xa6,0xd9,0x1d,
+ 0xc7,0x9c,0x71,0xf5,0xb9,0x31,0xf5,0x73,0x5b,0xaf,0x2c,0xa8,0x9f,0x52,0x4d,0x3c,
+ 0xf5,0x16,0xbb,0x87,0x27,0x88,0x21,0xf4,0x91,0x51,0xd5,0xe6,0xf4,0xdc,0xc2,0xae,
+ 0xed,0xc0,0xa1,0xe7,0x4d,0x40,0x97,0x21,0x87,0x7c,0x8e,0xc3,0x3c,0x5c,0x08,0x09,
+ 0x1e,0x43,0xa5,0x31,0xee,0x6f,0x36,0xd8,0x21,0x29,0x19,0xf1,0xe5,0x4f,0x6b,0xcb,
+ 0x0e,0x49,0x51,0x3c,0x49,0x03,0xde,0x9a,0x33,0xac,0xea,0x71,0x44,0x95,0xa7,0x1e,
+ 0xf4,0xe8,0x56,0x32,0x2e,0xb3,0x9c,0x42,0x95,0xc0,0x9e,0x25,0x63,0x09,0x40,0x20,
+ 0x64,0xf9,0x53,0x26,0xe1,0x71,0xbb,0xcd,0x9c,0x88,0xd8,0x10,0xf8,0x82,0xb0,0x09,
+ 0x07,0x8b,0xeb,0xed,0xfc,0x39,0xa7,0x3e,0xbe,0xdb,0x39,0xba,0x9e,0xf5,0x64,0x53,
+ 0x72,0x12,0xd5,0xba,0x3a,0xdc,0x54,0xa2,0x97,0x8b,0x6b,0xc1,0x03,0x87,0x87,0x1d,
+ 0x4e,0x45,0x23,0xbb,0xb5,0x37,0x5f,0xe9,0x55,0x9e,0x7b,0x97,0xa6,0xa7,0x43,0xb7,
+ 0x95,0xe0,0xba,0xde,0x1f,0x29,0x50,0xfb,0xa4,0x8e,0x4a,0xe9,0xd7,0x95,0x4d,0x31,
+ 0xec,0x21,0xbd,0x6e,0x6a,0xc7,0x0d,0x72,0xa6,0x4a,0x71,0xb6,0x9a,0x1c,0x4e,0x2b,
+ 0xbd,0x52,0x5b,0x03,0xa6,0x4f,0x32,0x6b,0x88,0xdf,0x2d,0xe5,0x02,0x42,0x1c,0x52,
+ 0x9a,0x73,0x07,0xbf,0x43,0x2a,0x29,0x20,0xf4,0xca,0xb1,0x52,0xc4,0xab,0x03,0x0e,
+ 0xa1,0x6d,0x38,0xd2,0x56,0xda,0xc7,0x09,0x0b,0x19,0x04,0x79,0x1a,0x6e,0x5b,0x74,
+ 0x13,0x36,0x10,0xf3,0x10,0x6e,0x12,0x23,0xc5,0x5a,0xb8,0x93,0x14,0x84,0xb8,0x86,
+ 0xfd,0x11,0xc4,0x09,0x03,0xd2,0x96,0x3b,0x8d,0x31,0xb5,0x3d,0x52,0xe1,0xc2,0x5b,
+ 0xcc,0xc4,0x5c,0xe5,0x80,0x08,0x65,0xb2,0x02,0x95,0xed,0x9e,0x54,0x8d,0x6d,0xd4,
+ 0x12,0x6e,0x0f,0x04,0x2a,0x13,0x71,0x95,0x9c,0x29,0xb7,0x1f,0xe1,0x75,0x1e,0xe9,
+ 0x20,0x7e,0x44,0xd4,0x93,0x6f,0xb0,0x45,0xb5,0xf7,0xc3,0xbe,0x93,0x20,0xba,0xae,
+ 0x35,0x17,0xd6,0x55,0x83,0xfc,0xa3,0xc0,0x7a,0x57,0xa4,0x88,0xf6,0xd7,0x14,0x92,
+ 0xf4,0x56,0xde,0x52,0x7a,0x17,0x10,0x0e,0x3d,0xa8,0x61,0x63,0x37,0xbc,0x4d,0xd1,
+ 0x2e,0xc5,0x85,0x21,0x0e,0x4c,0x68,0x82,0xb4,0x21,0xdc,0x60,0x7a,0x9c,0x1f,0xd2,
+ 0x95,0x2d,0x5a,0x14,0x45,0x8e,0x1a,0x69,0xa8,0xe9,0x6c,0xfc,0xca,0x41,0x6b,0x04,
+ 0xa8,0xf5,0xf9,0x93,0x8f,0xd2,0x9c,0x91,0xdc,0x84,0xc8,0xc3,0x30,0xd9,0x68,0xff,
+ 0x00,0x2a,0x42,0x6b,0xb1,0x2f,0x36,0xae,0x7c,0x21,0x20,0x78,0xf1,0x60,0x53,0xb1,
+ 0x1c,0x10,0x34,0xb3,0x4d,0xa9,0xb5,0xc8,0xc3,0x65,0xa5,0x85,0xa5,0x0d,0xa8,0x29,
+ 0x3c,0xbd,0x70,0x0d,0x3a,0x59,0x9e,0xdb,0x43,0x09,0xe2,0x5f,0xb8,0xe5,0x4d,0xb9,
+ 0x7a,0xae,0xcb,0x6e,0x04,0x49,0xba,0xc3,0x60,0x8e,0xa8,0x5b,0xe9,0xe2,0xfc,0x33,
+ 0x9a,0x48,0x97,0xbc,0xda,0x62,0x08,0xf9,0x25,0x3b,0x2d,0x63,0xf7,0x63,0xc7,0x51,
+ 0xfc,0xd5,0x81,0xf9,0xd5,0x58,0x89,0x05,0x13,0x14,0x47,0xdd,0x56,0x3d,0xab,0xec,
+ 0xc8,0x56,0x32,0x52,0xa3,0xee,0x2a,0x1a,0xb9,0xf6,0x89,0x4b,0x43,0x86,0x05,0x99,
+ 0xd5,0xf9,0x2e,0x4b,0xa1,0x03,0xff,0x00,0x14,0xe7,0xf5,0xa6,0x8d,0xd3,0x7d,0x35,
+ 0x75,0xcd,0xc0,0xdc,0x47,0x58,0x82,0x5c,0x3c,0x09,0x6e,0x33,0x3c,0x4a,0x24,0xf4,
+ 0x00,0xab,0x27,0x3e,0xd4,0xc2,0x8b,0x11,0x32,0xe0,0xcc,0x46,0x94,0xe4,0x82,0x19,
+ 0x6c,0x75,0x5b,0x98,0x4a,0x7f,0x13,0x5c,0x7b,0x75,0xaa,0xae,0x3a,0xff,0x00,0x72,
+ 0x6d,0x5a,0x6f,0x6e,0xa3,0x3d,0x7b,0xd4,0xaa,0x79,0x2b,0x0f,0xc6,0x25,0x2c,0x42,
+ 0x4a,0x48,0x2a,0x79,0xd7,0x47,0x24,0xa5,0x3e,0x9c,0xc9,0xe4,0x3a,0xd4,0x17,0xa2,
+ 0xf6,0x77,0x72,0xb7,0xff,0x00,0x51,0xa2,0xd1,0x69,0x6a,0x5d,0xf6,0xe4,0xb5,0x61,
+ 0xc4,0x38,0xe9,0x53,0x71,0xd3,0xc7,0xc2,0x56,0xea,0x87,0xca,0xda,0x41,0x0a,0xeb,
+ 0xcc,0xf0,0xf2,0x07,0x23,0x3a,0xf5,0xd8,0xfb,0xb2,0x9d,0xab,0xb2,0xde,0xdf,0x2a,
+ 0xdc,0x97,0x5b,0xb9,0x6a,0x5b,0x82,0x83,0xd7,0x4b,0x9a,0x51,0x8e,0xf1,0x5e,0x0d,
+ 0xa3,0xc4,0x36,0x9f,0x0f,0x3e,0xa6,0xb3,0x9c,0xf1,0x5b,0x1a,0x46,0x17,0xc9,0x3e,
+ 0x51,0x45,0x15,0xc6,0x74,0x85,0x14,0x51,0x40,0x05,0x55,0xfe,0xd0,0xba,0xf9,0xce,
+ 0xcf,0x97,0x01,0x7c,0xbc,0x69,0x89,0xd7,0xbd,0x1d,0x35,0xc2,0x57,0x76,0xb5,0x94,
+ 0x95,0xc2,0x75,0x47,0xee,0x3c,0xd9,0xc7,0xca,0x7c,0x16,0x0f,0x3e,0x98,0xcf,0x5b,
+ 0x41,0x5c,0x37,0xcb,0x24,0x0d,0x4b,0x68,0x97,0x6b,0xba,0x44,0x6a,0x7d,0xba,0x5b,
+ 0x6a,0x65,0xf8,0xcf,0xa4,0x29,0x0e,0x20,0x8c,0x10,0x41,0xaa,0x8c,0xb1,0x76,0x4c,
+ 0x96,0x48,0xa5,0x56,0xee,0xd9,0x3b,0x59,0xa9,0xec,0xb2,0x58,0x6f,0x50,0x0d,0x2d,
+ 0x74,0x79,0xa5,0xa1,0xa7,0x2e,0x30,0x96,0x52,0xc2,0x88,0x21,0x0b,0x3c,0x40,0x05,
+ 0x63,0x92,0xb1,0x9c,0x78,0x52,0x96,0xda,0x6e,0x76,0x90,0xb6,0xda,0xdd,0x8d,0x2b,
+ 0x77,0xad,0x5a,0xad,0xe7,0x5c,0xef,0x10,0xfc,0x97,0x1b,0x65,0x4d,0x8e,0x10,0x0a,
+ 0x40,0x07,0x98,0xc8,0x27,0x9f,0x4c,0xe3,0xa5,0x32,0x77,0xa7,0xe1,0x76,0x65,0x4b,
+ 0x95,0x73,0xdb,0x6b,0xf2,0x18,0x4a,0xfe,0x64,0xd9,0x6f,0x0a,0x51,0x4a,0x7f,0x95,
+ 0x0f,0x0c,0x90,0x3c,0x82,0x81,0xf7,0xaa,0x21,0xaa,0xf6,0xf2,0xf9,0xa4,0x2e,0x37,
+ 0x08,0x17,0x6b,0x7f,0x03,0xb0,0x5e,0x5c,0x77,0xd4,0x82,0x1c,0x42,0x56,0x95,0x70,
+ 0xab,0x98,0xf0,0xc8,0xeb,0x5d,0x29,0xa9,0x3b,0x39,0x9c,0x69,0xee,0x6a,0x45,0xcf,
+ 0x77,0xf4,0x4c,0x56,0xcf,0x1e,0xad,0xb4,0xab,0x87,0xf8,0x25,0x20,0x9f,0xc8,0xd3,
+ 0x06,0xe7,0xda,0x0f,0x44,0x7d,0xa1,0x48,0x4d,0xcd,0x0e,0x0c,0xff,0x00,0xdc,0x4f,
+ 0x43,0xf5,0xac,0xcc,0x30,0x1b,0xea,0x1b,0x4e,0x09,0xea,0x12,0x2b,0xe5,0x71,0x50,
+ 0x79,0x84,0x0e,0x5e,0x95,0xa5,0x3e,0x84,0x69,0x2a,0xf7,0xcf,0x44,0xbc,0x33,0xfb,
+ 0x4e,0x3a,0x4f,0xf3,0xba,0x69,0x12,0xe5,0xbc,0xfa,0x31,0xc2,0x4a,0x6e,0x70,0xb0,
+ 0x7a,0x9e,0xfb,0x15,0x9f,0x08,0x8e,0x85,0x27,0x9a,0x46,0x7d,0x2b,0xe7,0xec,0x8d,
+ 0x92,0x07,0x00,0x3f,0x4a,0x6a,0xc5,0x45,0xf3,0x7f,0x72,0xf4,0xb4,0xb1,0xf2,0x5d,
+ 0xe0,0xe0,0xf9,0xc8,0x02,0x93,0xe4,0xeb,0xab,0x09,0x4f,0xcb,0x78,0x82,0x07,0xa4,
+ 0x94,0xff,0x00,0xf6,0xa8,0xda,0xa1,0x35,0xfd,0xd2,0x4f,0xfb,0x6b,0xc9,0x70,0x9a,
+ 0x07,0x3d,0xca,0x39,0x7f,0x28,0xa7,0xb8,0x51,0x73,0x26,0xee,0x16,0x9b,0x64,0x10,
+ 0xe5,0xee,0x02,0x47,0x8f,0xf6,0x81,0xff,0x00,0xda,0x6d,0xcf,0xdc,0xed,0x1a,0xa5,
+ 0x80,0xe6,0xa0,0x82,0x02,0x7f,0x75,0x2e,0xe6,0xaa,0xc3,0x30,0x92,0xe8,0x77,0x87,
+ 0xba,0x6f,0xbb,0x47,0x1f,0xce,0x40,0xe2,0xe6,0x06,0x07,0x99,0xe7,0xf9,0x1a,0xf7,
+ 0xb4,0xbf,0x1a,0x04,0xf4,0xbd,0x32,0x02,0x2e,0x4c,0x00,0x41,0x8e,0xb5,0xa9,0x00,
+ 0x9f,0x03,0x94,0xf3,0xe5,0x49,0x95,0x45,0x96,0x67,0x7b,0xf4,0x55,0xac,0xb9,0xc3,
+ 0x32,0x24,0xd2,0xac,0x60,0xa9,0x95,0xb9,0xc3,0xec,0x07,0x2f,0xc7,0x35,0xc7,0x73,
+ 0xed,0x1f,0xa6,0x9f,0x8e,0xa6,0x12,0x94,0x94,0x1f,0x06,0x2d,0x49,0x42,0xbe,0x8b,
+ 0xe0,0x07,0xf3,0xa8,0x16,0x05,0xfe,0x1d,0xbe,0xe1,0x36,0x48,0xd3,0xd6,0xf9,0x2c,
+ 0xbe,0x41,0x6e,0x3c,0x9e,0x35,0xa1,0x8c,0x67,0x92,0x79,0xe4,0xf5,0xf1,0xf2,0xae,
+ 0x58,0x17,0x75,0x5b,0x98,0x98,0xd2,0x21,0xc3,0x73,0xed,0x23,0x05,0x6f,0x34,0x16,
+ 0xa6,0xc7,0xf2,0x13,0xf7,0x69,0x6f,0xe0,0x52,0x25,0xd9,0x9b,0xfb,0x64,0x57,0x10,
+ 0x6a,0xdd,0x39,0xe3,0xfe,0x54,0x27,0xf5,0x55,0x23,0x48,0xde,0xe5,0x38,0x4f,0xd9,
+ 0xac,0xc4,0x8f,0xf1,0xdf,0x03,0xf4,0x06,0x9b,0x36,0xd6,0xf5,0x36,0xa2,0xb3,0x47,
+ 0xb5,0xb3,0x66,0x99,0x3a,0xd4,0xd2,0xd2,0x95,0x18,0x16,0xe2,0xb7,0x3a,0xe7,0x1c,
+ 0x69,0x49,0x39,0xf7,0xa7,0x23,0x1d,0x9c,0x37,0x2e,0xf2,0xf8,0xfd,0x8d,0xb6,0xba,
+ 0xc1,0x4c,0x72,0x41,0xfb,0x5d,0xb1,0xd4,0x9e,0x23,0xea,0x50,0x90,0x07,0xff,0x00,
+ 0xb3,0x45,0xfa,0x15,0xe0,0x9d,0x3b,0x77,0x6f,0x0a,0x51,0x42,0x2d,0xd0,0xe3,0x2b,
+ 0xc7,0x8c,0xad,0x64,0x7f,0xc6,0x92,0x9f,0xdc,0x4d,0x41,0x27,0xac,0xa8,0xec,0x7f,
+ 0xa1,0x1c,0x0f,0xf9,0x15,0x54,0xb3,0x66,0xec,0x25,0xbe,0xd7,0xe7,0x12,0xb5,0x68,
+ 0x59,0x11,0x92,0xb5,0xf0,0x97,0x27,0x4d,0x8e,0xde,0x3d,0x48,0x2e,0x71,0x63,0xe8,
+ 0x6a,0x43,0xb1,0x7c,0x2f,0xf7,0x6e,0xe8,0xd2,0x1c,0x9f,0x37,0x4e,0xd9,0xc1,0x23,
+ 0x2d,0xbb,0x2d,0xc7,0x56,0x91,0xe3,0xf7,0x5b,0xc6,0x7d,0x33,0xf5,0xa9,0xb8,0x2e,
+ 0x58,0xd4,0x59,0x53,0x65,0x6a,0x1b,0xc4,0xac,0xf7,0xb7,0x69,0x58,0xff,0x00,0x0d,
+ 0x61,0xbf,0xf8,0x01,0x49,0x52,0x0a,0xe5,0x1c,0x3e,0xf3,0xd2,0x3f,0xd6,0x75,0x4b,
+ 0xfd,0x49,0xad,0x12,0xd3,0xff,0x00,0x09,0x77,0x16,0x84,0x1b,0xf6,0xe1,0xe0,0x92,
+ 0x0a,0xdb,0xb6,0xdb,0xf1,0x81,0xe2,0x02,0x96,0xa3,0x9f,0x7c,0x54,0xa7,0xa5,0xfe,
+ 0x17,0x7b,0x49,0x66,0x09,0x55,0xd2,0x4d,0xf2,0xfe,0xe0,0xe6,0x7b,0xf9,0x9d,0xca,
+ 0x49,0xf6,0x6c,0x0e,0x55,0x2f,0x52,0x0b,0x82,0xb0,0x66,0x4a,0x70,0x36,0xdf,0x2c,
+ 0x25,0x23,0xa7,0x95,0x38,0x74,0xbe,0xdb,0xea,0xbd,0x6f,0x25,0x2c,0x69,0xfd,0x35,
+ 0x74,0xbc,0x3a,0xa3,0x84,0x88,0x71,0x16,0xbc,0x9f,0x70,0x31,0x5b,0x61,0xa4,0xbb,
+ 0x26,0x6d,0x0e,0x89,0x71,0xa7,0x6d,0x5a,0x06,0xcc,0x87,0xdb,0xe6,0x97,0xdf,0x60,
+ 0x3c,0xbc,0xf9,0x92,0xbc,0xd4,0xa7,0x06,0xdb,0x12,0xd6,0xc7,0x73,0x0a,0x2b,0x31,
+ 0x19,0xfe,0xed,0x86,0xc2,0x13,0xf8,0x01,0x52,0xf5,0xbc,0x45,0x2d,0x3f,0x59,0x8f,
+ 0x9b,0x73,0xf0,0xda,0xde,0x2d,0x7e,0x94,0x48,0xb8,0xc1,0x87,0xa3,0xe1,0xab,0x18,
+ 0x37,0x97,0x48,0x77,0x1f,0xe9,0xa0,0x29,0x40,0xfb,0x81,0x56,0xa7,0x68,0xfe,0x15,
+ 0x3a,0x13,0x4b,0x38,0xd4,0xdd,0x71,0x78,0x99,0xab,0xe6,0xa0,0x85,0x08,0x91,0xc9,
+ 0x87,0x10,0x7a,0x1e,0x13,0xde,0x2b,0xdf,0x89,0x3e,0xd5,0x78,0xe8,0xac,0x9e,0xa4,
+ 0x99,0x6a,0x09,0x08,0x9a,0x47,0x44,0xe9,0xfd,0x03,0x67,0x6a,0xd5,0xa6,0xec,0xb0,
+ 0x6c,0x76,0xe6,0xc7,0xcb,0x1a,0x03,0x09,0x69,0x1e,0xe4,0x24,0x73,0x3e,0xa7,0x9d,
+ 0x2d,0xd1,0x45,0x66,0x58,0x51,0x45,0x14,0x00,0x51,0x45,0x14,0x00,0x51,0x45,0x14,
+ 0x00,0x56,0x4f,0xf6,0xd5,0xec,0xeb,0xaf,0xb6,0xd3,0x57,0xea,0x7d,0x4c,0xd2,0x15,
+ 0x77,0xd0,0xf7,0x99,0x8f,0xc9,0x12,0x98,0x1c,0x46,0x27,0x7c,0xa2,0xa2,0xdb,0xc3,
+ 0x19,0x00,0x15,0x10,0x15,0xd0,0xfe,0x55,0xac,0x15,0xcd,0x71,0xb7,0x45,0xbb,0xc1,
+ 0x7e,0x14,0xd8,0xed,0x4b,0x88,0xfa,0x0b,0x6e,0xb0,0xf2,0x02,0x90,0xb4,0x9e,0xa0,
+ 0x83,0xc8,0x8a,0x69,0xd1,0x2d,0x59,0x83,0xfb,0x7b,0x7f,0x46,0x95,0xb7,0x2e,0x23,
+ 0xe8,0x6f,0x84,0xba,0xa3,0xc0,0xac,0x12,0x72,0x07,0x3c,0x53,0xe0,0xdd,0x2c,0xb2,
+ 0x59,0x43,0xaf,0x42,0x85,0x21,0x2a,0xe6,0x4f,0x74,0x9c,0x8e,0x59,0xc1,0xe5,0xd7,
+ 0xad,0x5c,0x9e,0xd1,0x7f,0x0d,0x6b,0x56,0xa6,0x6a,0x75,0xe3,0x6c,0xe4,0x22,0xcd,
+ 0x71,0x70,0x97,0x15,0x63,0x94,0xaf,0xec,0x6e,0x9f,0x10,0xda,0xba,0xb6,0x7f,0x11,
+ 0xed,0x59,0xe7,0xb8,0x3a,0x23,0x59,0xed,0x05,0xe9,0xcb,0x15,0xde,0xcf,0x2e,0xd3,
+ 0x73,0x8e,0x38,0x97,0x12,0x6a,0x72,0x1c,0x18,0xe6,0xa6,0xd6,0x39,0x29,0x27,0x00,
+ 0xe4,0x12,0x3a,0xd6,0xb9,0x78,0x65,0x85,0xbd,0xc7,0x55,0xcd,0x16,0x37,0x50,0x54,
+ 0xdd,0xba,0x33,0x5c,0xce,0x0a,0x46,0x29,0x8b,0xaa,0xef,0x56,0xbb,0x0c,0x17,0x1c,
+ 0x10,0xdb,0x53,0xbd,0x10,0x90,0x4f,0x33,0xf8,0xd3,0x73,0xfa,0x7c,0xb4,0xa9,0x09,
+ 0x9c,0xc2,0xd8,0x56,0x70,0x49,0x1c,0x89,0xf4,0x22,0x91,0xf5,0x5b,0x12,0x75,0x0b,
+ 0x46,0x6b,0x2e,0xb0,0x22,0x36,0x33,0xfd,0x63,0xc1,0x27,0x1e,0x60,0x78,0xd2,0x53,
+ 0xbe,0x19,0x52,0xd2,0x94,0x3f,0xb2,0x17,0x74,0x74,0x88,0x97,0x16,0x1c,0x76,0xf5,
+ 0x71,0x54,0x75,0xac,0x15,0x21,0x09,0x01,0x28,0x6c,0x7b,0xe3,0x34,0xc0,0xd5,0x5a,
+ 0xd5,0xe8,0x17,0x75,0x33,0x6d,0x9a,0xf4,0x98,0xe9,0x56,0x12,0xa5,0x21,0x23,0x8c,
+ 0x67,0xc0,0x63,0x3c,0xeb,0xc3,0x58,0x4e,0x0c,0xd9,0x22,0x77,0x04,0x84,0xb8,0x03,
+ 0x79,0x1d,0x30,0x2b,0xc7,0x4c,0x14,0xaa,0x0f,0xda,0xcb,0x48,0x32,0x16,0x4b,0x69,
+ 0x59,0x4f,0x34,0x24,0x63,0x24,0x7a,0x9c,0xe3,0x3e,0x94,0xa5,0x27,0xc2,0x2a,0x31,
+ 0x4f,0x73,0x58,0xfb,0x1c,0x5d,0xbb,0x29,0xf6,0x83,0xb5,0xc4,0xb3,0x44,0xd0,0xb0,
+ 0xed,0x3a,0xd9,0x2c,0x20,0xc9,0xb4,0xdf,0x54,0xea,0xdd,0x7d,0x69,0x4f,0xce,0xb6,
+ 0x14,0xb5,0x90,0xb1,0xc8,0x9c,0x27,0x04,0x78,0x8a,0xb6,0x96,0xee,0xca,0x3b,0x3b,
+ 0x6a,0x5a,0xd4,0xc6,0xdb,0x69,0xc5,0x95,0x8c,0x11,0x22,0x02,0x1e,0x1f,0x40,0xb0,
+ 0x40,0xfa,0x56,0x1e,0x6d,0x3e,0xb3,0xb9,0xed,0x3e,0xe0,0xe9,0x9d,0x55,0x09,0xb7,
+ 0x13,0x3a,0xd7,0x31,0xb9,0x8d,0x26,0x40,0xe4,0xb0,0x0f,0x3e,0xbe,0x0a,0x49,0x52,
+ 0x7e,0xb5,0xfa,0x18,0x42,0xb8,0xd0,0x95,0x74,0xc8,0xcd,0x4d,0xbf,0x4a,0xa4,0x30,
+ 0xad,0xfd,0x9f,0x76,0xc2,0xd4,0xea,0x9d,0x87,0xb7,0x7a,0x56,0x3b,0x8a,0x1c,0x25,
+ 0x4d,0xd9,0xa3,0x82,0x47,0x97,0xdc,0xa7,0x0c,0x0d,0x05,0xa6,0x2d,0x51,0xc4,0x78,
+ 0x5a,0x72,0xd3,0x0d,0x80,0x4a,0x83,0x4c,0x41,0x69,0x09,0x04,0xf5,0x38,0x09,0xc5,
+ 0x2f,0x51,0x4a,0xc6,0x7c,0xa1,0xb4,0x34,0x90,0x94,0x24,0x21,0x20,0x60,0x04,0x8c,
+ 0x01,0x5f,0x54,0x51,0x48,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,
+ 0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,
+ 0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x9a,0xbb,0x8d,0xb5,0xba,0x57,
+ 0x76,0xb4,0xfb,0x96,0x6d,0x59,0x64,0x8b,0x79,0x82,0xa0,0x78,0x43,0xe8,0xf9,0xda,
+ 0x51,0x18,0xe2,0x6d,0x63,0xe6,0x42,0xbd,0x52,0x45,0x3a,0xa8,0xa0,0x0c,0xbf,0xed,
+ 0x0d,0xf0,0xca,0xbd,0xe9,0x61,0x2a,0xef,0xb7,0x4f,0x2f,0x52,0xd9,0xf9,0xad,0x56,
+ 0x99,0x18,0x13,0x19,0x1e,0x49,0x3d,0x1d,0xfc,0x8f,0xa1,0xaa,0x3d,0xaa,0xb4,0xd4,
+ 0xbb,0x0b,0x13,0x2d,0xb3,0x60,0x3b,0x0a,0x4b,0x20,0xb6,0xb8,0xef,0x34,0x5b,0x71,
+ 0x18,0xe5,0x8c,0x1f,0x2a,0xfd,0x10,0xd4,0x7d,0xb9,0x7b,0x05,0xa0,0x37,0x79,0xa2,
+ 0x35,0x56,0x98,0x83,0x73,0x7b,0x84,0xa5,0x32,0x8b,0x7c,0x0f,0xa7,0x3e,0x4b,0x4e,
+ 0x0d,0x5a,0x95,0x72,0x43,0x8f,0x87,0xe7,0x93,0x54,0x58,0xbe,0xd3,0xa3,0xa3,0xbb,
+ 0x1c,0x97,0x97,0x19,0x5c,0x4b,0x09,0x1d,0x12,0x7a,0xfe,0x1c,0xa9,0x17,0x4a,0x4b,
+ 0x47,0xd8,0x8b,0x7c,0x40,0x38,0xda,0x8e,0x53,0x9e,0x7c,0x27,0x9e,0x47,0xd6,0xb6,
+ 0x3f,0x5b,0x7c,0x27,0x36,0xce,0x7f,0xda,0xa5,0xd8,0xb5,0x1e,0xa2,0xd3,0x8a,0x21,
+ 0x4a,0x0c,0xb4,0xea,0x1f,0x6f,0xd8,0x85,0xa7,0x24,0x7d,0x6a,0x06,0xec,0xd9,0xf0,
+ 0xea,0xd2,0xba,0x87,0x7b,0xae,0x0a,0xbf,0xde,0xd5,0x73,0xb6,0x69,0xa9,0x8d,0xa9,
+ 0x56,0xf4,0x40,0x0d,0x26,0x69,0x1f,0x36,0x16,0x7b,0xc5,0x61,0x27,0x1c,0xc0,0x1c,
+ 0xfc,0xe8,0x74,0xf7,0x43,0x8d,0xad,0x99,0x07,0xf6,0x3c,0xec,0xfd,0xa9,0x7b,0x47,
+ 0xee,0x15,0x9e,0xdc,0x96,0x26,0x23,0x46,0xc0,0x90,0x89,0x57,0x49,0xef,0xa5,0x45,
+ 0x80,0xda,0x54,0x09,0x6d,0x24,0xf2,0x2b,0x5e,0x38,0x40,0x1e,0x79,0x3d,0x2b,0x73,
+ 0xc0,0x09,0x00,0x0e,0x40,0x57,0x15,0x96,0xc5,0x6d,0xd3,0x76,0xe6,0xa0,0x5a,0x60,
+ 0x46,0xb6,0x41,0x6b,0x92,0x23,0x44,0x65,0x2d,0x36,0x9f,0x64,0xa4,0x01,0x5d,0xd5,
+ 0x05,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,
+ 0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x1f,0xff,0xd9};
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/thumb_test.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/thumb_test.h
new file mode 100644
index 000000000..0b43b0074
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Core2/thumb_test.h
@@ -0,0 +1,1286 @@
+//
+// thumb_test
+//
+const uint8_t thumb_test[] PROGMEM = { 0xff,0xd8,0xff,0xe1,0x1e,0x28,0x45,0x78,0x69,0x66,0x00,0x00,0x4d,0x4d,0x00,0x2a,
+ 0x00,0x00,0x00,0x08,0x00,0x0d,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x0f,0xc0,
+ 0x00,0x00,0x01,0x01,0x00,0x03,0x00,0x00,0x00,0x01,0x0b,0xd0,0x00,0x00,0x01,0x0f,
+ 0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xaa,0x01,0x10,0x00,0x02,0x00,0x00,
+ 0x00,0x0a,0x00,0x00,0x00,0xb2,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x06,
+ 0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xbc,0x01,0x1b,
+ 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xc4,0x01,0x28,0x00,0x03,0x00,0x00,
+ 0x00,0x01,0x00,0x02,0x00,0x00,0x01,0x31,0x00,0x02,0x00,0x00,0x00,0x0f,0x00,0x00,
+ 0x00,0xcc,0x01,0x32,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xdc,0x02,0x13,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x87,0x69,0x00,0x04,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x00,0xf0,0x88,0x25,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x03,0x20,0x00,0x00,0x03,0x26,0x73,0x61,0x6d,0x73,0x75,0x6e,0x67,0x00,0x53,0x4d,
+ 0x2d,0x47,0x39,0x36,0x35,0x55,0x31,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,
+ 0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x47,0x39,0x36,0x35,0x55,0x31,0x55,0x45,
+ 0x53,0x37,0x44,0x54,0x45,0x31,0x00,0x00,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a,
+ 0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x1f,0x82,0x9a,
+ 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x6a,0x82,0x9d,0x00,0x05,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x02,0x72,0x88,0x22,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x02,
+ 0x00,0x00,0x88,0x27,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0xfa,0x00,0x00,0x90,0x00,
+ 0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x32,0x32,0x30,0x90,0x03,0x00,0x02,0x00,0x00,
+ 0x00,0x14,0x00,0x00,0x02,0x7a,0x90,0x04,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00,
+ 0x02,0x8e,0x91,0x01,0x00,0x07,0x00,0x00,0x00,0x04,0x01,0x02,0x03,0x00,0x92,0x01,
+ 0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xa2,0x92,0x02,0x00,0x05,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x02,0xaa,0x92,0x03,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x02,0xb2,0x92,0x04,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xba,0x92,0x05,
+ 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xc2,0x92,0x07,0x00,0x03,0x00,0x00,
+ 0x00,0x01,0x00,0x02,0x00,0x00,0x92,0x09,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0x92,0x0a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xca,0x92,0x90,
+ 0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,0x02,0xd2,0x92,0x91,0x00,0x02,0x00,0x00,
+ 0x00,0x07,0x00,0x00,0x02,0xda,0x92,0x92,0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,
+ 0x02,0xe2,0xa0,0x00,0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0xa0,0x01,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa0,0x02,0x00,0x04,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x0f,0xc0,0xa0,0x03,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x0b,0xd0,0xa0,0x05,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x02,0xa2,0x17,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa3,0x01,0x00,0x01,0x00,0x00,
+ 0x00,0x01,0x01,0x00,0x00,0x00,0xa4,0x02,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0xa4,0x03,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x05,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x1a,0x00,0x00,0xa4,0x06,0x00,0x03,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x20,0x00,0x02,0x00,0x00,0x00,0x18,0x00,0x00,
+ 0x02,0xea,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3c,0x00,0x00,
+ 0x00,0xf0,0x00,0x00,0x00,0x64,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a,0x30,0x39,
+ 0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x32,0x30,0x32,0x30,0x3a,0x30,
+ 0x38,0x3a,0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x00,
+ 0x17,0x12,0x00,0x00,0x03,0xe8,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x64,0x00,0x00,
+ 0x00,0xa6,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,
+ 0x00,0x74,0x00,0x00,0x00,0x64,0x00,0x00,0x10,0xcc,0x00,0x00,0x03,0xe8,0x38,0x37,
+ 0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37,0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37,
+ 0x35,0x37,0x31,0x39,0x00,0x00,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56,
+ 0x4d,0x20,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31,0x56,0x41,0x00,0x00,0x02,
+ 0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x04,0x52,0x39,0x38,0x00,0x00,0x02,0x00,0x07,
+ 0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x09,0x01,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x40,
+ 0x01,0x01,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x03,
+ 0x00,0x00,0x00,0x01,0x00,0x06,0x00,0x00,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01,
+ 0x00,0x06,0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x98,
+ 0x01,0x1b,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0xa0,0x01,0x28,0x00,0x03,
+ 0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x02,0x01,0x00,0x04,0x00,0x00,0x00,0x01,
+ 0x00,0x00,0x03,0xa8,0x02,0x02,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x1a,0x78,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x48,
+ 0x00,0x00,0x00,0x01,0xff,0xd8,0xff,0xdb,0x00,0x84,0x00,0x17,0x10,0x11,0x14,0x11,
+ 0x0e,0x17,0x14,0x13,0x14,0x1a,0x18,0x17,0x1b,0x22,0x39,0x25,0x22,0x1f,0x1f,0x22,
+ 0x46,0x32,0x35,0x29,0x39,0x53,0x49,0x57,0x56,0x51,0x49,0x50,0x4f,0x5b,0x67,0x83,
+ 0x6f,0x5b,0x61,0x7c,0x63,0x4f,0x50,0x72,0x9c,0x74,0x7c,0x88,0x8c,0x93,0x95,0x93,
+ 0x59,0x6e,0xa1,0xad,0xa0,0x8f,0xab,0x83,0x90,0x93,0x8d,0x01,0x18,0x1a,0x1a,0x22,
+ 0x1e,0x22,0x43,0x25,0x25,0x43,0x8d,0x5e,0x50,0x5e,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0xff,0xc0,0x00,0x11,
+ 0x08,0x00,0xf0,0x01,0x40,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff,
+ 0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,
+ 0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01,
+ 0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,
+ 0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,
+ 0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,
+ 0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,
+ 0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,
+ 0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,
+ 0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,
+ 0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,
+ 0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,
+ 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,
+ 0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,
+ 0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02,
+ 0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,
+ 0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,
+ 0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,
+ 0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,
+ 0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,
+ 0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,
+ 0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,
+ 0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,
+ 0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,
+ 0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,
+ 0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,
+ 0x00,0xe4,0xe8,0xa0,0x0c,0xf4,0xa9,0xa3,0x87,0x72,0x96,0x3d,0xa8,0x02,0x20,0x09,
+ 0x35,0x32,0x42,0x4f,0xde,0x38,0xa7,0x46,0xb8,0xed,0x53,0xaa,0xd2,0x00,0x8e,0x35,
+ 0x5e,0x82,0xa6,0x51,0x48,0xab,0x52,0xaa,0xd0,0x00,0xa2,0xa3,0x9d,0x70,0x41,0x20,
+ 0x91,0x8e,0x82,0xac,0x2a,0xd2,0xc9,0x19,0x29,0xf2,0xfd,0xe1,0xc8,0xa1,0x3b,0x31,
+ 0x34,0x67,0x32,0x81,0x27,0x00,0x81,0x8e,0x86,0x96,0x9f,0x26,0xe2,0xe4,0xc9,0x9d,
+ 0xc7,0xae,0x69,0x95,0xd7,0x15,0x64,0x73,0xb7,0x76,0x32,0x53,0x85,0x3e,0xf5,0x00,
+ 0x5f,0x5a,0x7c,0xc4,0xee,0xc5,0x47,0x5c,0xf3,0x77,0x67,0x44,0x55,0x90,0xed,0xc0,
+ 0x74,0xa4,0x27,0x34,0x94,0x54,0x0c,0x28,0xa2,0x8a,0x00,0x2a,0x68,0x46,0xd1,0xb8,
+ 0xd4,0x20,0x64,0xe2,0xae,0x42,0x22,0xda,0x44,0x85,0x87,0xa6,0x06,0x6a,0x92,0x6f,
+ 0x61,0x37,0x61,0x73,0x91,0xc7,0x35,0x13,0xf5,0xdc,0xc3,0x1f,0xad,0x5a,0xf2,0xa3,
+ 0xc0,0x11,0xce,0xbc,0x76,0x3c,0x7f,0x3e,0x29,0xaf,0x6d,0x29,0x19,0x1c,0x81,0xdc,
+ 0x00,0x47,0xe9,0x51,0x66,0xb7,0x1d,0xd3,0x21,0x8c,0x82,0x38,0x39,0xc7,0xbe,0x6a,
+ 0xb4,0xed,0xba,0x53,0xe8,0x38,0xab,0x25,0x7c,0x88,0xd8,0x9e,0xbd,0x6a,0x90,0xe4,
+ 0xd3,0x40,0x4b,0x08,0xe6,0xad,0x2d,0x41,0x18,0xc0,0xa9,0x94,0xd0,0xc0,0x94,0x1a,
+ 0x5c,0xd3,0x01,0xa3,0x34,0x80,0x76,0x68,0xcd,0x37,0x34,0x99,0xa0,0x07,0xe6,0x93,
+ 0x34,0xdc,0xd2,0x66,0x80,0x1d,0x9a,0x4c,0xd2,0x66,0x93,0x34,0x00,0xec,0xd2,0x66,
+ 0x9b,0x9a,0x33,0x40,0xc5,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xec,0xd2,0x66,0x9b,
+ 0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xc5,0x50,0x3a,0x54,0xe3,
+ 0xe5,0xb7,0x3e,0xe6,0xa3,0x41,0x52,0xb8,0xc4,0x6a,0x29,0x88,0x48,0xd7,0x8a,0x99,
+ 0x45,0x35,0x05,0x4a,0xa2,0x81,0x8e,0x51,0x52,0xa8,0xa6,0xad,0x48,0xb4,0x80,0x7a,
+ 0x8a,0x76,0x29,0x05,0x2d,0x02,0x22,0x92,0x14,0x72,0x0b,0x0e,0x47,0x43,0x50,0x3c,
+ 0xa1,0x3e,0x59,0x6d,0x91,0xc0,0xee,0x38,0x3f,0xa5,0x5b,0x34,0xc2,0xa1,0xba,0x8c,
+ 0xd3,0x4d,0xa1,0x35,0x72,0x91,0x6b,0x57,0xed,0x2c,0x7f,0x5e,0x45,0x30,0xdb,0x46,
+ 0xfc,0xa4,0x88,0x7e,0xbc,0x55,0xa7,0x81,0x0f,0x6c,0x54,0x1e,0x57,0x96,0x18,0x2e,
+ 0x30,0xdd,0x73,0x4e,0xe1,0xa9,0x03,0x59,0xb8,0xe4,0x29,0x23,0xd5,0x79,0xa8,0x8c,
+ 0x24,0x77,0xfc,0xea,0x42,0x25,0x43,0x90,0xd9,0xa3,0xed,0x33,0x0e,0x1f,0xe6,0xfa,
+ 0xd0,0x17,0x64,0x25,0x18,0x76,0xa6,0xd4,0xfe,0x7a,0x1f,0xbd,0x1e,0x3e,0x94,0x6e,
+ 0x8d,0xba,0x31,0x1f,0x5a,0x02,0xe4,0x51,0x8f,0x9b,0x35,0x2e,0x68,0xda,0x07,0x42,
+ 0x0d,0x37,0x70,0x3d,0x0d,0x6b,0x0d,0x11,0x9c,0xb5,0x1d,0x9a,0x37,0x32,0xe0,0xf2,
+ 0x3d,0xe8,0x52,0x37,0x0c,0xf4,0xa5,0x76,0xf9,0x58,0x33,0x03,0x9e,0x94,0xe5,0x2b,
+ 0x3b,0x02,0x88,0xdb,0x89,0x9d,0xe3,0x08,0xce,0xcc,0x09,0xee,0x73,0x55,0xd4,0x64,
+ 0xd2,0xb9,0xc9,0xfa,0x52,0xa0,0xac,0xa4,0xf5,0x2d,0x6c,0x4c,0xb5,0x20,0xa8,0xd6,
+ 0x9d,0x50,0x50,0xfc,0xd1,0x9a,0x6d,0x2d,0x00,0x2e,0x68,0xcd,0x25,0x14,0x00,0x66,
+ 0x8c,0xd1,0x82,0x7a,0x0a,0x70,0x8d,0xcf,0x45,0x34,0x00,0xcc,0xd1,0x52,0x8b,0x79,
+ 0x0f,0x6a,0x78,0xb2,0x90,0xf6,0xfd,0x28,0x02,0xb5,0x15,0x75,0x74,0xf6,0x3d,0x73,
+ 0x52,0x2e,0x9e,0x3b,0x91,0x40,0x19,0xb4,0x60,0x9e,0x80,0xd6,0xb2,0xd9,0x46,0x3a,
+ 0xfe,0x94,0xf1,0x6f,0x1a,0xf6,0xfc,0x69,0x85,0xcc,0x81,0x1b,0x9f,0xe1,0x34,0xe1,
+ 0x03,0x9e,0xd5,0xad,0xe5,0xa0,0xfe,0x11,0x4a,0x00,0xec,0x00,0xa0,0x2e,0x65,0x0b,
+ 0x49,0x0f,0x6a,0x91,0x2c,0x58,0xf5,0xfe,0x75,0xa2,0x69,0xa7,0x27,0xa9,0x3f,0x4a,
+ 0x02,0xe6,0x30,0x38,0x35,0x2c,0x87,0xe6,0x0b,0xe8,0x2a,0x1c,0xa9,0x20,0xd2,0x97,
+ 0x05,0xc9,0xcf,0x5a,0x00,0xb0,0xb5,0x2a,0xd5,0x55,0x71,0xeb,0x52,0x2c,0x9e,0xf4,
+ 0x01,0x65,0x6a,0x45,0x35,0x59,0x64,0xa9,0x16,0x5a,0x40,0x59,0x06,0x97,0x35,0x5c,
+ 0x4a,0x29,0x7c,0xd1,0xeb,0x40,0x12,0x93,0x40,0xa8,0x7c,0xd0,0x6a,0x45,0x39,0x5a,
+ 0x00,0x47,0x3c,0x54,0x0d,0x52,0x48,0xd5,0x0b,0x1a,0x00,0x6b,0x54,0x4c,0x33,0x4f,
+ 0x26,0x9a,0x68,0x02,0x26,0x8c,0x1e,0xd4,0xcd,0x85,0x4e,0x54,0xd4,0xd4,0x6c,0x27,
+ 0xa0,0x26,0x98,0x15,0x4a,0xb0,0x39,0x14,0xd2,0x08,0xab,0xc2,0xda,0x46,0xe8,0x86,
+ 0xa4,0x5d,0x36,0x66,0xfe,0x1c,0x0a,0x00,0xcd,0x0c,0xc3,0xbd,0x1b,0xc9,0xad,0x65,
+ 0xd1,0xd8,0xfd,0xe6,0xa9,0x57,0x47,0x84,0x7d,0xe3,0x9f,0xc6,0x9d,0xc4,0x61,0xf7,
+ 0xa9,0x91,0x4e,0x38,0x15,0xba,0x9a,0x75,0xb2,0x7f,0x08,0xfa,0xe2,0xa6,0x5b,0x78,
+ 0x97,0x8d,0x9d,0x29,0x01,0x84,0xb1,0x39,0xe8,0xa6,0xa5,0x5b,0x59,0x5b,0xf8,0x6b,
+ 0x68,0x22,0x8e,0x40,0x1f,0x5c,0x53,0xbe,0x9d,0x7d,0xe8,0x03,0x21,0x6c,0x25,0x35,
+ 0x2a,0xe9,0xad,0xfc,0x47,0x15,0xa4,0x08,0x6e,0x0f,0x06,0x9b,0x9c,0x70,0x68,0x02,
+ 0xa2,0xe9,0xc8,0x3a,0x9a,0x91,0x6c,0xa2,0x1f,0x5a,0xb0,0x0f,0xaf,0xe6,0x28,0x34,
+ 0x01,0x18,0x82,0x31,0xfc,0x34,0xed,0x88,0x3f,0x84,0x52,0xe6,0x9a,0xc7,0x8e,0x28,
+ 0x10,0xa4,0xe3,0x8e,0x28,0x07,0xeb,0xf4,0xa8,0x3c,0xd0,0x4e,0x2a,0x45,0xe4,0x71,
+ 0x40,0xc7,0x73,0xcf,0xa7,0xa5,0x07,0xa6,0x7a,0x8f,0x5a,0x06,0x09,0xc6,0xfc,0x1f,
+ 0x7a,0x4c,0x95,0x3d,0x28,0x00,0x3e,0xa4,0x63,0xde,0x93,0xa0,0xe3,0xf5,0xa3,0x9e,
+ 0xdc,0x7b,0x50,0x06,0x3a,0x1e,0x68,0x00,0xce,0x3a,0x7c,0xa7,0xd0,0xd2,0x12,0x0f,
+ 0x4a,0x31,0xea,0x29,0x0f,0xb7,0x5a,0x00,0x4c,0x60,0xf3,0x4b,0xd4,0x62,0x8f,0xaf,
+ 0x22,0x93,0xe9,0x92,0x28,0x03,0x9f,0x2d,0x4d,0xcd,0x3c,0xc6,0x47,0x26,0x90,0x29,
+ 0x3d,0xa9,0x8c,0x4c,0xd3,0x83,0x53,0x4f,0x06,0x81,0x40,0x8b,0x2b,0x9c,0x53,0xb2,
+ 0x6a,0x21,0x27,0xb5,0x28,0x93,0x27,0x81,0x48,0x09,0x77,0x1f,0x5a,0x4d,0xc6,0xaf,
+ 0x43,0xa6,0x3b,0xa0,0x67,0x60,0xb9,0xe7,0x15,0x3a,0x69,0x90,0x8f,0xbc,0xc4,0xd0,
+ 0x06,0x6c,0x44,0x96,0xab,0xa0,0xe1,0x6a,0xe2,0x5a,0x40,0x9d,0x13,0xf3,0xa9,0x02,
+ 0x22,0xf0,0x11,0x47,0xe1,0x40,0x19,0x66,0x37,0x73,0xf2,0xa9,0xa5,0x5b,0x19,0x9f,
+ 0xb6,0x2b,0x57,0x24,0x0c,0x8f,0xca,0x94,0x1d,0xe3,0x23,0xa8,0xed,0x45,0x87,0x73,
+ 0x35,0x74,0xc6,0xfe,0x26,0x02,0xa4,0x5d,0x3a,0x25,0xfb,0xc4,0x9a,0xba,0x47,0xff,
+ 0x00,0xaa,0x90,0x9c,0x0e,0x7f,0x03,0x40,0x88,0x16,0xd6,0x05,0xe8,0x99,0xa9,0x04,
+ 0x48,0xbd,0x10,0x52,0x6f,0xf9,0xb0,0x3f,0x2a,0x90,0x7f,0x9f,0x6a,0x00,0x40,0x00,
+ 0xe4,0x74,0xf6,0xe2,0x8e,0x73,0xd6,0x97,0x1d,0xe8,0xc6,0x69,0x80,0xd2,0x71,0x48,
+ 0x0e,0x6a,0xb5,0xc5,0xca,0x47,0x2e,0xc0,0xe3,0x77,0x71,0x9a,0x9e,0x16,0x0c,0x01,
+ 0xe7,0x9e,0x86,0x90,0x0f,0xc7,0x6a,0x5f,0xf2,0x29,0x70,0x7d,0x31,0xf5,0xa3,0x1e,
+ 0xf4,0xc0,0x6e,0x3f,0x0a,0x0f,0xbd,0x2f,0x43,0xc8,0xfc,0x69,0x0e,0x00,0xc9,0x3f,
+ 0x8d,0x00,0x43,0x70,0xe1,0x13,0x73,0x1c,0x7b,0xd4,0x31,0x4f,0xe6,0x1f,0x5a,0xcd,
+ 0xd5,0x99,0xde,0xeb,0x68,0x3b,0x95,0x47,0x18,0xa9,0x74,0x72,0xde,0x63,0x2e,0x38,
+ 0x1c,0xd2,0x03,0x5d,0x41,0xc7,0x50,0x05,0x38,0x0f,0x6f,0xc2,0x98,0x5b,0x61,0xce,
+ 0xc0,0x45,0x28,0x64,0x3d,0x10,0x50,0x02,0x90,0x3b,0x11,0x54,0x35,0x1b,0xcf,0xb3,
+ 0xc5,0x84,0x1f,0x31,0x38,0x19,0xed,0x57,0xb7,0xec,0x3b,0x5a,0x35,0xc7,0xa8,0xaa,
+ 0x57,0xd6,0x8b,0x70,0x41,0x24,0xa1,0x1c,0x02,0x46,0x41,0xfa,0xd3,0x03,0x36,0xd2,
+ 0xe1,0xe4,0xb8,0x0a,0xe7,0x3b,0xab,0x6d,0x71,0xc0,0x3f,0x9d,0x67,0x5a,0xe9,0xc6,
+ 0x29,0x83,0xb9,0x0d,0x83,0xc0,0x4e,0x95,0xa5,0x8e,0x06,0x40,0x3c,0x74,0xa0,0x00,
+ 0xaf,0xa8,0xa0,0x64,0x0c,0x67,0x23,0xde,0x80,0x48,0x1e,0xab,0xef,0x4a,0x46,0x79,
+ 0x1c,0x8f,0xe5,0x48,0x04,0xa4,0x34,0xa7,0x81,0xde,0x93,0xaf,0x7a,0x00,0x4e,0xbd,
+ 0xe8,0xa5,0xc5,0x21,0xa0,0x02,0x93,0xa7,0x3c,0xfd,0x45,0x2f,0xf9,0xff,0x00,0x3e,
+ 0xb4,0x87,0x9a,0x00,0xc3,0x77,0x14,0xdd,0xf8,0x07,0x15,0x16,0xe3,0x49,0x92,0x69,
+ 0x8c,0x52,0x79,0xa2,0x95,0x63,0x77,0xce,0xd5,0x24,0x0e,0xb4,0xe1,0x18,0xc7,0x27,
+ 0x14,0x00,0x8b,0x92,0x70,0x2a,0x78,0x53,0x32,0xa2,0xf5,0x24,0x81,0x4d,0x1c,0x0c,
+ 0x0f,0xce,0xac,0x59,0x2e,0x6f,0x21,0x1f,0xed,0x8a,0x40,0x74,0x2c,0xbc,0x9a,0x4c,
+ 0x7e,0x74,0xa4,0xf3,0x49,0x9a,0x04,0x28,0xc6,0x3d,0xbf,0x95,0x27,0x5f,0xf0,0xa4,
+ 0xef,0xef,0xfc,0xe9,0x0f,0x34,0x00,0xbc,0x8e,0x47,0x4f,0x4a,0x69,0x1c,0xe4,0x64,
+ 0x1f,0x5a,0x5c,0xff,0x00,0x9f,0x5a,0x3a,0x8c,0x8a,0x00,0x50,0x77,0x7a,0x06,0xf4,
+ 0xaa,0x9a,0x85,0xe0,0xb3,0x8b,0x3b,0x77,0x33,0x1c,0x00,0x6a,0xc9,0xe4,0x8a,0xa7,
+ 0xa9,0x5a,0x9b,0x98,0xc6,0xde,0x59,0x4e,0x70,0x69,0x81,0x52,0xc2,0xed,0xae,0x2e,
+ 0x36,0x9e,0x0f,0x5a,0xd9,0x5f,0xbb,0xc6,0x3f,0x3a,0xcd,0xd3,0x2c,0x0d,0xbb,0xb4,
+ 0x92,0xe3,0x71,0x18,0x00,0x76,0x15,0xa1,0x81,0xd8,0xd0,0x03,0x87,0x1e,0x98,0xa8,
+ 0xee,0x49,0x11,0x31,0x8c,0xf3,0x8e,0xd4,0xe0,0x40,0xe3,0x6f,0x3e,0xf4,0xbb,0xc9,
+ 0x04,0x64,0x8f,0x61,0xc5,0x00,0x72,0x9b,0x1f,0x7f,0xab,0x13,0xeb,0xc9,0x35,0xd2,
+ 0xc2,0x36,0x40,0x81,0xfa,0x80,0x01,0x23,0xd6,0x9f,0xe4,0x44,0xcf,0xbb,0x0b,0xbf,
+ 0xd7,0x60,0xcf,0xe7,0x4e,0x23,0x03,0x03,0x8c,0x50,0x03,0x4a,0x81,0xd4,0xb6,0x3d,
+ 0x45,0x18,0x00,0xe0,0xee,0xfc,0x4d,0x03,0x23,0xfc,0x29,0x78,0xc7,0x1c,0xaf,0xa7,
+ 0xa5,0x20,0x10,0x8c,0x75,0x1f,0x91,0xa4,0xe0,0x73,0xc7,0xd7,0x14,0xec,0x52,0x63,
+ 0xd3,0xf2,0xf5,0xa6,0x05,0x79,0x6d,0x23,0x9c,0x8f,0x35,0x50,0x91,0xd3,0xb7,0x1f,
+ 0x51,0x52,0x45,0x02,0xc0,0x81,0x10,0x2a,0x01,0xc8,0x51,0xc8,0x34,0xfe,0xdc,0x74,
+ 0xf4,0x3d,0xa8,0xe8,0x3a,0x64,0x50,0x01,0x9c,0xf6,0xc1,0xa6,0x91,0xea,0x3f,0x11,
+ 0x4f,0xed,0x91,0xcd,0x20,0xa0,0x04,0x04,0xff,0x00,0xbc,0x3f,0x5a,0x00,0xc0,0xca,
+ 0xf2,0x3b,0xad,0x29,0x5f,0x4f,0xd2,0x93,0x9e,0xe0,0x9f,0x71,0xd6,0x90,0x0b,0x9d,
+ 0xc3,0x20,0xe7,0xf9,0x8a,0x6e,0x73,0xf5,0xfe,0x74,0xa5,0x4e,0x72,0x3a,0xfa,0xd1,
+ 0xd7,0x20,0xf0,0xde,0x9e,0xb4,0x00,0x9c,0x73,0xeb,0xde,0x9b,0x8c,0x72,0xbc,0x53,
+ 0x8f,0xbf,0x6a,0x4f,0xf3,0xfe,0x7d,0x28,0x00,0x52,0x09,0xc7,0x46,0xf4,0xa0,0x8c,
+ 0x7e,0x14,0x84,0x03,0xfe,0x71,0x8f,0xf0,0xa0,0x31,0x1c,0x37,0x20,0x77,0xee,0x28,
+ 0x00,0xa4,0x34,0xe2,0x3b,0x8e,0x9f,0xe7,0xf2,0xa6,0xff,0x00,0x4f,0xf3,0xf8,0x50,
+ 0x00,0x69,0x3f,0xad,0x2d,0x21,0x00,0xf0,0x7f,0x2a,0x00,0xc2,0x74,0xd8,0xd8,0xc7,
+ 0xe9,0x4d,0x15,0x79,0xa2,0x57,0x1b,0x76,0xfd,0x08,0xaa,0xf3,0x40,0xd0,0xb0,0x0c,
+ 0x31,0x9a,0x0b,0x68,0x8c,0x12,0x07,0x14,0xaa,0x41,0xeb,0x40,0x14,0xa0,0x0a,0x09,
+ 0x0c,0xf3,0xc5,0x5b,0xd3,0x06,0xeb,0xf8,0xbd,0x89,0x3f,0xa5,0x55,0x15,0x77,0x48,
+ 0x5c,0xde,0x83,0xe8,0xa4,0xd0,0x06,0xcb,0x52,0x70,0x7f,0x1a,0x53,0x49,0xef,0xd8,
+ 0xd0,0x20,0x34,0x75,0xfa,0xd1,0x49,0xd6,0x80,0x0c,0x51,0xdf,0xfc,0xf3,0x40,0x39,
+ 0xe0,0xf5,0xa3,0x93,0xf2,0x9e,0xbd,0x8f,0xad,0x00,0x06,0x80,0x48,0xe9,0x47,0xb1,
+ 0xeb,0x46,0xd6,0x3d,0x06,0x7e,0x94,0x00,0xbd,0xbd,0xe9,0xa7,0xae,0x45,0x4a,0xb1,
+ 0x39,0xf4,0x1f,0x8d,0x3c,0x5b,0xb1,0xff,0x00,0xf5,0x1a,0x60,0x57,0xeb,0xdb,0xea,
+ 0x29,0x4a,0xd5,0x91,0x6a,0xde,0x8d,0xf9,0x52,0xfd,0x9d,0x47,0x52,0x3f,0x16,0x14,
+ 0x01,0x50,0xaf,0xff,0x00,0x58,0xd2,0x83,0xeb,0xd6,0xad,0x08,0xa3,0x1f,0xc4,0xbf,
+ 0x9e,0x69,0xac,0xd6,0xa9,0xf7,0xa5,0x41,0xfa,0x7f,0x3a,0x00,0xaf,0x8a,0x36,0x1c,
+ 0xe4,0x53,0xda,0xfa,0xc5,0x3a,0xcc,0x0f,0xd3,0x15,0x13,0xeb,0x36,0x29,0xd0,0xb3,
+ 0x7e,0x26,0x80,0x1f,0xe5,0xb7,0xf7,0x4f,0xd2,0x97,0xc9,0x3e,0xd5,0x51,0xfc,0x41,
+ 0x6c,0x3e,0xe4,0x39,0xfa,0x8a,0x85,0xfc,0x48,0xdf,0xf2,0xce,0x10,0xb4,0x01,0xa4,
+ 0x20,0x27,0xff,0x00,0xac,0x29,0xe2,0xd9,0x8f,0x66,0xfc,0xab,0x09,0xfc,0x43,0x74,
+ 0xdd,0x36,0xaf,0xd0,0x54,0x0f,0xac,0x5e,0xbf,0x59,0x4f,0xe5,0x40,0x1d,0x2f,0xd9,
+ 0x71,0xd4,0x63,0xea,0x68,0x30,0xa2,0xf2,0xce,0x83,0xea,0x6b,0x93,0x6b,0xdb,0xa7,
+ 0xeb,0x2b,0xff,0x00,0xdf,0x46,0xa2,0x69,0x24,0x27,0x25,0xbf,0x5a,0x2c,0x07,0x5c,
+ 0x65,0xb4,0x4f,0xbd,0x73,0x18,0xf6,0x15,0x13,0x6a,0x1a,0x7a,0x75,0x99,0x8f,0xd1,
+ 0x6b,0x94,0x3b,0x8f,0x7a,0x4e,0x7d,0x69,0xd8,0x0e,0x9d,0xb5,0x9b,0x15,0x38,0x0b,
+ 0x2b,0x7d,0x0f,0xff,0x00,0x5e,0xa5,0x9b,0x6c,0xaa,0x92,0x21,0x38,0x61,0x95,0xfa,
+ 0x1a,0xe4,0xeb,0xa6,0xb4,0x60,0xfa,0x6c,0x04,0xe3,0x84,0x03,0x9f,0x6e,0x29,0x00,
+ 0xe0,0xdd,0x03,0x75,0xec,0x68,0x23,0x14,0x1e,0x9e,0xab,0x49,0x9c,0x7b,0x8f,0xf3,
+ 0xd6,0x90,0x09,0xfe,0x7f,0xcf,0xf8,0x52,0x1f,0xf3,0xfe,0x7f,0xa5,0x38,0x8f,0x4f,
+ 0xf3,0xfe,0x34,0x9d,0x7f,0x1a,0x00,0x68,0xca,0xf2,0xbf,0x95,0x28,0x21,0xba,0x70,
+ 0x47,0x6a,0x29,0xa4,0x67,0xfa,0x63,0xfc,0xfe,0x94,0x00,0xa7,0x8f,0xf3,0x8f,0xff,
+ 0x00,0x55,0x21,0x19,0x1f,0xe7,0xfc,0x8a,0x04,0x9d,0x03,0xfd,0x03,0x0a,0x71,0x18,
+ 0xc7,0xe8,0x45,0x00,0x50,0x69,0x41,0x18,0x55,0x0b,0x50,0xcc,0x73,0xb7,0x3c,0xd4,
+ 0xa1,0x41,0x15,0x0c,0xc9,0xf3,0x50,0x8d,0xa5,0xb0,0xcc,0x52,0x62,0x8c,0x95,0xa7,
+ 0x2b,0x03,0x4c,0xc8,0x69,0xab,0xfa,0x30,0xff,0x00,0x49,0x73,0xe8,0x87,0xf9,0x8a,
+ 0xa4,0xc2,0xb4,0x34,0x65,0xc3,0x4c,0x7f,0xd9,0x02,0x80,0x34,0x8d,0x20,0xeb,0xc7,
+ 0x5f,0xe7,0x4a,0x69,0x0f,0x23,0xe9,0x48,0x41,0xd3,0xe9,0xdc,0x7a,0x50,0x48,0xfc,
+ 0xfb,0xd0,0x0e,0x7a,0x7d,0xee,0xfe,0xf4,0x9d,0xb8,0xe9,0xfc,0xa8,0x00,0xc0,0xe9,
+ 0xfe,0x45,0x1d,0x78,0x34,0x99,0xc7,0x04,0xfd,0x0f,0xa5,0x2f,0xd7,0x83,0x40,0x0b,
+ 0x9e,0xcd,0xf8,0x1f,0x5a,0x64,0xae,0xd1,0xae,0xe1,0xd4,0x7b,0x53,0xb1,0xeb,0xd2,
+ 0xa2,0xb9,0xff,0x00,0x55,0xfd,0x68,0x02,0x84,0x9a,0xed,0xdc,0x6d,0x80,0xc3,0xf2,
+ 0xa8,0x9b,0x5e,0xbc,0x6f,0xe2,0xac,0xf9,0x8e,0xe6,0x53,0xed,0x49,0x4c,0x0b,0xaf,
+ 0xac,0x5e,0x3f,0xf1,0x81,0xf4,0x51,0x51,0x36,0xa1,0x76,0xdf,0xf2,0xd9,0xc7,0xd1,
+ 0xb1,0x55,0xe8,0xa6,0x03,0x9a,0x69,0x9f,0xef,0x48,0xc7,0xea,0x69,0xb9,0x63,0xd5,
+ 0x8d,0x2d,0x2e,0x29,0xd8,0x06,0x6d,0xf7,0xa3,0x6d,0x3f,0x14,0x62,0x9d,0x80,0x66,
+ 0xd1,0x4b,0x8a,0x76,0xda,0x36,0x9f,0x4a,0x2c,0x03,0x71,0x45,0x4a,0xb6,0xf3,0x3f,
+ 0xdc,0x89,0xdb,0xe8,0xa4,0xd3,0x24,0x8d,0xa3,0x72,0x8e,0xa5,0x58,0x75,0x04,0x60,
+ 0x8a,0x00,0x65,0x14,0xb4,0x94,0x08,0x29,0x29,0x69,0x28,0x01,0xa6,0xba,0x3d,0x2d,
+ 0xb3,0xa6,0x47,0xea,0x09,0x1f,0xad,0x73,0xad,0x5b,0xfa,0x2b,0x6e,0xd3,0xd8,0x7a,
+ 0x39,0xfe,0x42,0xa5,0x8c,0xb3,0xdf,0x8c,0x83,0xdc,0x51,0x9f,0x4e,0x94,0x11,0x9f,
+ 0xf1,0x14,0x67,0xd4,0xf3,0xeb,0x52,0x02,0x63,0x00,0xfa,0x7a,0x50,0x46,0x79,0x1f,
+ 0xe7,0xfc,0xfa,0xd2,0xe0,0xf5,0xa4,0xe9,0xfe,0x71,0xff,0x00,0xea,0xa0,0x06,0x9f,
+ 0xf3,0xfe,0x7b,0xd2,0x1f,0xf3,0xfe,0x7b,0xd3,0xb8,0x3c,0x74,0xfd,0x3f,0xfd,0x54,
+ 0x84,0x11,0xfe,0x7f,0xce,0x28,0x01,0xa4,0x7a,0xf7,0xfc,0x7f,0xfd,0x74,0x83,0x29,
+ 0xd3,0x95,0x3d,0xa9,0x79,0x5f,0x71,0xe8,0x7b,0x51,0xdb,0x8e,0x47,0x70,0x68,0x02,
+ 0x90,0x5e,0x7a,0xd4,0x6e,0x39,0xeb,0x52,0x6e,0xc0,0xf7,0xa8,0xf9,0x26,0x9a,0x35,
+ 0x90,0xdd,0xa0,0xd3,0x1e,0x32,0x3a,0x54,0xb8,0xa5,0xc5,0x33,0x32,0xb8,0x6c,0x75,
+ 0xad,0x6d,0x23,0xee,0x4c,0x7e,0x83,0xf9,0xd6,0x73,0x46,0x0d,0x69,0xe9,0x08,0x56,
+ 0xda,0x4f,0x77,0xfe,0x94,0x98,0x8b,0x86,0x90,0xe4,0x1e,0x94,0xa7,0xff,0x00,0xd6,
+ 0x29,0x3b,0x71,0xfa,0xd2,0x01,0x3a,0xf2,0xbd,0x68,0x1c,0xf3,0xdf,0xb8,0xa3,0x83,
+ 0xce,0x71,0x48,0x7a,0xe4,0x70,0x47,0x51,0x40,0x0b,0xc1,0x19,0xed,0x40,0xf4,0x34,
+ 0x03,0x9f,0x99,0x7a,0xf7,0x14,0xa3,0x91,0x91,0xf9,0x50,0x02,0x63,0x15,0x0d,0xd7,
+ 0xfa,0xa3,0x56,0x2a,0xbd,0xdf,0xfa,0xa3,0x40,0x1c,0xdc,0x83,0x05,0x7e,0x9f,0xd6,
+ 0x96,0x89,0xbe,0xfa,0x7f,0xba,0x28,0xaa,0x00,0xa2,0x8a,0x5a,0x60,0x15,0xd1,0xe8,
+ 0x7a,0x15,0xb6,0xa1,0x65,0xe7,0xcc,0xf2,0x86,0xdc,0x57,0x0a,0x40,0x1f,0xca,0xb9,
+ 0xd1,0x5d,0xaf,0x85,0x3f,0xe4,0x12,0x7f,0xeb,0xa9,0xfe,0x42,0x98,0x02,0xf8,0x7f,
+ 0x4a,0x4c,0xe5,0x59,0xf1,0xd7,0xe7,0xff,0x00,0x0a,0x7f,0xf6,0x6e,0x95,0x0e,0x3f,
+ 0xd1,0x13,0xfe,0x04,0xc7,0xfa,0x9a,0x86,0xf5,0xe0,0x5b,0xf9,0x0c,0xe8,0xc5,0x7f,
+ 0xba,0x3b,0xfe,0xb4,0xd7,0xbc,0xb3,0xdc,0x36,0xda,0x97,0x03,0xa1,0x69,0x38,0xed,
+ 0xfe,0x15,0x56,0x15,0xd1,0x75,0x60,0xb1,0x8c,0x02,0xb6,0x76,0xe0,0x1e,0x87,0x68,
+ 0xa1,0xef,0x60,0x83,0x0a,0xa9,0x1a,0x93,0xd3,0x67,0xff,0x00,0x5a,0xa9,0xfd,0xb2,
+ 0xdf,0xaa,0xda,0x40,0x31,0xcf,0x20,0x9f,0xe4,0xb5,0x1c,0xd7,0xb1,0x60,0x79,0x16,
+ 0xab,0xe6,0x64,0xb1,0x65,0x53,0xc1,0xc1,0xc7,0xa5,0x3e,0x51,0x29,0xa3,0x62,0xca,
+ 0x65,0xbb,0x81,0x67,0x08,0x54,0x37,0x4c,0xf7,0xae,0x33,0xc4,0x89,0xb7,0x5b,0xb8,
+ 0xf7,0xc1,0xfd,0x05,0x76,0x1a,0x3a,0xba,0xe9,0xd1,0xab,0xf5,0x1e,0xd5,0xca,0xf8,
+ 0xa9,0x71,0xac,0x31,0xf5,0x45,0x3f,0xa5,0x67,0xd4,0xbb,0xdd,0x18,0x94,0x94,0xa6,
+ 0x8a,0x64,0x89,0x45,0x14,0x50,0x03,0x5b,0xa5,0x6d,0xe8,0x27,0x36,0xf3,0x2f,0xa1,
+ 0x07,0xf4,0xff,0x00,0xeb,0x56,0x2b,0x74,0xad,0x6f,0x0f,0xb7,0xcd,0x3a,0xfa,0x80,
+ 0x7f,0x9f,0xf8,0xd4,0xb1,0x9a,0x4d,0x9c,0xf7,0xcd,0x27,0xeb,0x4a,0x71,0xd0,0x51,
+ 0xc5,0x48,0x00,0x19,0xe4,0x7e,0x54,0xdf,0xf3,0xfe,0x7f,0xc2,0x82,0x49,0xe9,0x41,
+ 0xe7,0xaf,0x5e,0xf4,0x00,0x87,0x9f,0xe9,0x8f,0xf3,0xfa,0x52,0x06,0x20,0xff,0x00,
+ 0x9f,0xf3,0xf8,0x52,0x9e,0x7a,0xff,0x00,0x9f,0xf1,0xa4,0x3e,0xff,0x00,0xe3,0xff,
+ 0x00,0xeb,0xa0,0x03,0x83,0xca,0xfe,0x5f,0xe1,0x4c,0x23,0x1c,0x83,0x83,0xfe,0x7f,
+ 0x2a,0x71,0xe3,0x9f,0xf3,0xff,0x00,0xd7,0xa3,0x83,0xfe,0x7f,0xce,0x68,0x02,0x93,
+ 0x2e,0xe2,0x70,0x2a,0x3a,0x99,0xf0,0xa3,0x03,0xbd,0x31,0x57,0x34,0xd1,0xac,0xf7,
+ 0x1a,0x05,0x18,0xe6,0xa4,0x0b,0x49,0x8a,0x66,0x63,0x42,0xd6,0xa5,0x80,0xc5,0xa7,
+ 0x5c,0x12,0xc6,0xb3,0xb1,0x5a,0x76,0xa3,0x16,0x69,0xc7,0x52,0x7f,0x9d,0x26,0x22,
+ 0x4c,0xf7,0xfc,0x08,0xa3,0x19,0xfa,0xd1,0x8f,0xc7,0xd3,0xdc,0x52,0x73,0xd4,0x75,
+ 0x1f,0xad,0x20,0x02,0x4e,0x79,0x1c,0x8e,0xbe,0xe2,0x90,0x73,0xdf,0x91,0xd2,0x94,
+ 0xf3,0xfd,0x0d,0x21,0x19,0xf6,0x34,0x00,0x9c,0x83,0x91,0xc1,0x1d,0x45,0x3b,0xaf,
+ 0x23,0xaf,0x71,0x48,0x3e,0x6f,0xad,0x1d,0x39,0x14,0x00,0xee,0xa2,0xab,0xdd,0xff,
+ 0x00,0xaa,0x35,0x3d,0x57,0xbd,0x3f,0xba,0x3f,0x4a,0x00,0xe7,0x65,0xfb,0xeb,0xfe,
+ 0xea,0xff,0x00,0x2a,0x5a,0x49,0x7f,0xd6,0x8f,0xa0,0xfe,0x54,0xb4,0xc6,0x14,0x51,
+ 0x45,0x31,0x0a,0x2b,0xb4,0xf0,0x9f,0xfc,0x82,0x9f,0xfe,0xba,0x9f,0xe4,0x2b,0x8c,
+ 0x15,0xd9,0x78,0x4b,0xfe,0x41,0x72,0x7f,0xd7,0x53,0xfc,0x85,0x37,0xb0,0x0f,0xd4,
+ 0x24,0x56,0xb8,0x97,0x04,0x12,0xa3,0xf5,0xaa,0x3b,0x9d,0x42,0xb9,0x72,0x09,0xce,
+ 0x07,0xe3,0x8f,0xe9,0x56,0xae,0xd1,0xe3,0xb9,0x96,0x4c,0x15,0x3b,0x89,0xf4,0xc8,
+ 0xaa,0xe5,0x5a,0x79,0xf0,0xb9,0x66,0x6e,0xe7,0x8c,0xd5,0xbd,0x11,0xc1,0x55,0xea,
+ 0xfb,0x8b,0x3c,0xdb,0x94,0x2a,0xb1,0xe9,0xcf,0x02,0xb3,0x5a,0x66,0x59,0xb8,0x6c,
+ 0xe3,0xd6,0xb4,0x9a,0xd2,0x40,0x8c,0xd9,0x52,0x17,0xae,0x18,0x1a,0xac,0x65,0xb6,
+ 0x8c,0x8c,0x88,0xcb,0xf5,0x39,0x5c,0xd2,0x4f,0x52,0x29,0xb6,0xa5,0xef,0x23,0xa0,
+ 0xd2,0x5c,0xbe,0x9f,0x1b,0x1e,0xf9,0xae,0x6b,0xc5,0xeb,0x8d,0x4d,0x0f,0xac,0x43,
+ 0xf9,0x9a,0xe9,0x74,0x96,0x0d,0x62,0xa5,0x71,0x8c,0x9c,0x62,0xb9,0xff,0x00,0x18,
+ 0xaf,0xfa,0x5c,0x0d,0xeb,0x19,0x1f,0xad,0x4f,0x53,0xbe,0x9f,0xc0,0x8e,0x6c,0xd2,
+ 0x52,0x9a,0x4a,0x65,0x09,0x45,0x2d,0x25,0x00,0x21,0xe9,0x5a,0x3a,0x01,0xff,0x00,
+ 0x4b,0x71,0xea,0x87,0xf9,0x8a,0xce,0x3d,0x2a,0xee,0x88,0xd8,0xd4,0x14,0x7a,0xa9,
+ 0x1f,0xa5,0x26,0x33,0x71,0xf3,0x9f,0xe4,0x4d,0x37,0x9f,0x41,0xfe,0x34,0xf7,0xc0,
+ 0x63,0xd2,0x99,0x8c,0xf4,0xfc,0xaa,0x00,0x5c,0x86,0xf6,0x3e,0x94,0xdf,0xf3,0xe9,
+ 0xff,0x00,0xea,0xa0,0x8c,0xe3,0xfa,0x7f,0x9f,0xd2,0x8f,0xf3,0xfe,0x7f,0xc2,0x80,
+ 0x03,0xfe,0x7b,0x7f,0xfa,0xa9,0xbf,0xe7,0xd3,0xff,0x00,0xd5,0x4b,0xfe,0x7f,0xcf,
+ 0xad,0x14,0x00,0xd3,0xfe,0x7f,0xcf,0x6a,0x43,0x4e,0xff,0x00,0x23,0xfc,0xff,0x00,
+ 0x4a,0x4f,0xa7,0xe1,0x8f,0xf3,0xfa,0x50,0x05,0x32,0x39,0xa5,0x15,0x69,0x2d,0xd5,
+ 0xc1,0x27,0x23,0x9e,0x31,0x41,0xb4,0xf4,0x6f,0xcc,0x53,0x34,0x96,0xe5,0x62,0x0d,
+ 0x26,0x39,0xab,0x0d,0x6c,0xe3,0xa6,0x0f,0xe3,0x51,0x18,0x9c,0x75,0x53,0x41,0x0c,
+ 0x65,0x6a,0x5b,0xf1,0x6b,0x10,0xf6,0xfe,0xb5,0x96,0x6b,0x56,0x2e,0x2d,0xa2,0xff,
+ 0x00,0x74,0x50,0xc4,0x03,0xe5,0x38,0x61,0xf2,0x9e,0x94,0xac,0x0a,0x9f,0xf3,0xcd,
+ 0x19,0x19,0xd9,0x27,0x43,0xd0,0xd0,0xa4,0xa9,0xf2,0xdc,0xff,0x00,0xba,0x69,0x00,
+ 0x9f,0xc8,0xf5,0xa4,0xfe,0x7f,0xce,0x94,0x82,0xa4,0x9c,0x7d,0x45,0x04,0x64,0x64,
+ 0x1a,0x00,0x43,0xc8,0xc8,0xa5,0x07,0x3f,0x5a,0x40,0x7b,0xf7,0xee,0x29,0x71,0xdc,
+ 0x50,0x02,0xd5,0x4b,0xf3,0xfb,0x86,0xfa,0x7a,0xd5,0xac,0x7f,0x9f,0x5a,0xa9,0xa8,
+ 0xf1,0x6e,0xff,0x00,0x4a,0x00,0xc0,0x9b,0xfd,0x77,0xe0,0x3f,0x95,0x2d,0x24,0xdf,
+ 0xeb,0xcd,0x2d,0x31,0x85,0x14,0x51,0x4c,0x43,0x85,0x76,0x3e,0x12,0xff,0x00,0x90,
+ 0x6c,0xbf,0xf5,0xd4,0xff,0x00,0x21,0x5c,0x70,0xae,0xc3,0xc2,0x3f,0xf1,0xe1,0x37,
+ 0xfd,0x74,0xfe,0x82,0x9f,0x40,0x24,0xd5,0x03,0x35,0xd1,0x22,0x40,0x9c,0x85,0xea,
+ 0x33,0xfa,0xd3,0x0d,0xa2,0x88,0xb9,0x90,0x99,0x43,0x05,0xcf,0xb1,0xef,0x8a,0xd2,
+ 0xbc,0x86,0x2b,0x86,0x55,0x62,0x81,0x93,0x9c,0xb5,0x66,0xc8,0x5d,0xa6,0x0e,0xdb,
+ 0x43,0x28,0x1c,0x8e,0x71,0x55,0xba,0xb1,0xcd,0x55,0x42,0x1e,0xf3,0x43,0x1e,0xd0,
+ 0x41,0x6b,0x21,0x3c,0x31,0x7e,0x3e,0x94,0xdb,0x38,0x99,0xa2,0x53,0xb4,0x91,0x93,
+ 0x9e,0x3d,0xea,0x5b,0x89,0xde,0x48,0xf6,0x99,0x03,0x03,0xd7,0xe5,0x22,0xab,0x7c,
+ 0xc7,0x6a,0xee,0xe3,0xea,0x70,0x2a,0x69,0xc5,0xc0,0xc6,0x75,0xe3,0xcf,0x74,0x6d,
+ 0x69,0x99,0x10,0xc8,0xb8,0xc6,0x24,0x35,0x87,0xe3,0x24,0xf9,0xad,0x5f,0xd9,0x87,
+ 0xf2,0xad,0xad,0x2d,0x3c,0x8b,0x62,0x19,0x89,0xdc,0xe4,0xfd,0xdc,0x62,0xb2,0x7c,
+ 0x61,0xb5,0xad,0x6d,0xd8,0x10,0x70,0xc4,0x7e,0x94,0x75,0x3b,0x60,0x9f,0x2e,0xa7,
+ 0x24,0x69,0x29,0x4d,0x25,0x31,0x85,0x25,0x14,0x50,0x01,0x56,0x34,0x96,0xdb,0xa9,
+ 0x45,0xf5,0x23,0xf4,0xaa,0xf5,0x25,0x8b,0x6d,0xbf,0x84,0xff,0x00,0xd3,0x41,0xfc,
+ 0xe9,0x31,0x9d,0x34,0x84,0x67,0x9c,0xe2,0xa3,0x20,0x83,0xea,0x3d,0x6a,0x59,0x07,
+ 0x35,0x1f,0xb7,0x4a,0x80,0x17,0xaf,0x5e,0xfd,0xfb,0x1a,0x69,0xef,0x9f,0xc7,0x3f,
+ 0xe7,0xf5,0xa3,0x07,0xa0,0xfc,0x47,0xad,0x1e,0x9c,0xe7,0xd3,0xfc,0xff,0x00,0x4a,
+ 0x00,0x69,0xef,0x9f,0xd7,0xfc,0xfe,0xb4,0x87,0xdf,0xf5,0xff,0x00,0x3f,0xad,0x3b,
+ 0xe9,0xfa,0x7f,0x4f,0xf0,0xa4,0xf4,0xfe,0x9f,0xe7,0xf4,0xa0,0x04,0xf5,0xcf,0xe3,
+ 0x9f,0xeb,0xfe,0x34,0x87,0xbf,0xeb,0x9f,0xeb,0xfe,0x34,0xbf,0xe4,0x63,0xfa,0x7f,
+ 0x85,0x27,0xa7,0xe9,0x8f,0xe9,0xfe,0x14,0x01,0x24,0x6c,0x3a,0x73,0x9a,0x92,0xa0,
+ 0x40,0x7d,0x31,0x53,0x03,0x48,0xd2,0x5b,0x8b,0x49,0x4b,0x9a,0x43,0x41,0x22,0x10,
+ 0x0f,0x51,0x9f,0xa8,0xab,0x04,0x7c,0xaa,0xa3,0x81,0xb4,0x7e,0x15,0x5f,0x3c,0xd5,
+ 0x97,0xeb,0x8c,0xe3,0x8a,0x62,0x64,0x58,0x07,0xf7,0x72,0x77,0xfb,0xa6,0x8c,0x12,
+ 0x36,0xbf,0x55,0xe8,0x69,0x58,0x03,0xf2,0xb7,0xd4,0x1f,0x4a,0x39,0x3c,0x37,0xde,
+ 0x1f,0xa8,0xa0,0x40,0x1b,0x3c,0x77,0xe9,0xf5,0xa6,0xfd,0xd3,0xea,0x0d,0x04,0x66,
+ 0x94,0x12,0xc3,0xa6,0x7d,0x68,0x01,0x3d,0x30,0x7e,0x86,0x94,0x50,0x72,0x28,0xa0,
+ 0x05,0xf6,0xaa,0x3a,0x9f,0xfc,0x7b,0xbf,0xfb,0xa6,0xae,0xd5,0x0d,0x50,0xff,0x00,
+ 0xa3,0x3f,0xfb,0xbe,0xb9,0xa0,0x0c,0x49,0xbf,0xe3,0xe5,0xbe,0xb4,0xb4,0x93,0xff,
+ 0x00,0xc7,0xd3,0xfd,0x69,0x69,0x8c,0x28,0xa2,0x8a,0x60,0x38,0x57,0x5f,0xe1,0x0f,
+ 0xf8,0xf2,0x9b,0xfe,0xba,0x7f,0x4a,0xe3,0xc5,0x75,0xde,0x10,0x3f,0xe8,0x93,0xff,
+ 0x00,0xbe,0x3f,0x95,0x02,0x37,0x7c,0x84,0xf3,0x19,0xc8,0xc9,0x6c,0x75,0xf6,0xa8,
+ 0xd6,0xca,0x35,0x89,0x50,0x76,0x18,0xcf,0xad,0x58,0xa2,0x8b,0xb1,0x4a,0x2a,0x4a,
+ 0xcd,0x10,0x2d,0xaa,0x0c,0xe7,0x04,0x9e,0xf8,0xa8,0x64,0xd3,0x91,0xd4,0xfc,0xc7,
+ 0x3d,0xb8,0x15,0x76,0x8a,0x2e,0xc8,0x74,0x60,0xd5,0x9a,0x32,0x61,0xd2,0xe7,0x03,
+ 0x12,0x4f,0xf2,0xe7,0x21,0x47,0x18,0xac,0xff,0x00,0x14,0x5a,0x08,0x74,0xe8,0x9c,
+ 0x12,0x48,0x93,0x1d,0x7d,0x8d,0x74,0xd5,0x8d,0xe2,0xa5,0xdd,0xa3,0x13,0xfd,0xd7,
+ 0x53,0x4e,0xed,0x9a,0xad,0x15,0x91,0xc3,0x9a,0x4a,0x53,0x4d,0xa6,0x48,0x51,0x45,
+ 0x25,0x00,0x2d,0x10,0xb6,0xdb,0x84,0x3e,0x8c,0x0d,0x25,0x34,0xf0,0xd4,0x98,0xd1,
+ 0xd7,0x4a,0x39,0xed,0xf8,0xd4,0x7d,0xb1,0x9a,0x91,0x8e,0xe4,0x04,0x1e,0xa3,0xd2,
+ 0xa3,0xef,0xef,0xe9,0x50,0x02,0x63,0x1d,0x69,0x0f,0x7f,0xd7,0x3f,0xe7,0xf5,0xa7,
+ 0x73,0xdb,0xa8,0xed,0x48,0x7d,0xa8,0x01,0x0d,0x21,0xf7,0xfd,0x68,0xff,0x00,0x3e,
+ 0xbf,0xfe,0xb1,0x48,0x7a,0xff,0x00,0x9f,0xf3,0x8a,0x00,0x3d,0x7f,0xaf,0xf9,0xfd,
+ 0x69,0x0f,0x7f,0xd7,0x3f,0xd7,0xfc,0x69,0x69,0x3f,0xcf,0x1f,0xd2,0x80,0x24,0x06,
+ 0x9c,0x3d,0xea,0x31,0x52,0x03,0xc5,0x22,0x85,0xa4,0x26,0x8a,0x42,0x71,0x40,0x06,
+ 0x6a,0xcc,0x98,0xdd,0xc9,0xe2,0xa9,0x83,0xf3,0x0a,0xbb,0x27,0xde,0x3d,0xe9,0x88,
+ 0x60,0xe7,0xe5,0x07,0x9e,0xa0,0xd2,0x11,0xcf,0x3d,0x68,0x24,0x95,0xc8,0xe0,0x8a,
+ 0x5f,0xbe,0xb9,0x07,0x9a,0x04,0x27,0x51,0x9c,0x7d,0x69,0xbc,0x8e,0x47,0x5a,0x50,
+ 0x70,0x72,0x0f,0x1d,0xc5,0x07,0x8f,0xa5,0x00,0x2f,0x50,0x0f,0xaf,0xe9,0x45,0x34,
+ 0x1d,0xbd,0x79,0x53,0xde,0x9c,0x7e,0xf6,0x3f,0xc9,0xa0,0x04,0xac,0xfd,0x54,0xe2,
+ 0xdd,0xfe,0x95,0xa1,0xfe,0x45,0x66,0xea,0xc7,0xfd,0x1d,0xb1,0x40,0x18,0xd2,0x9c,
+ 0xdc,0xbf,0xfb,0xc6,0x9d,0x4c,0x7f,0xf5,0xc7,0xeb,0x4f,0xa6,0x30,0xa2,0x92,0x8a,
+ 0x00,0x70,0xad,0x4d,0x27,0x5a,0x93,0x4c,0x8e,0x44,0x48,0x95,0xf7,0x90,0x7e,0x63,
+ 0xd2,0xb2,0xa8,0xa6,0x07,0x48,0x7c,0x5b,0x71,0xda,0xde,0x2f,0xd7,0xfc,0x69,0xa7,
+ 0xc5,0x97,0x5d,0xa1,0x87,0xf2,0x3f,0xe3,0x5c,0xf6,0x68,0xcd,0x16,0x41,0x73,0xa0,
+ 0x3e,0x2c,0xbc,0xff,0x00,0x9e,0x50,0x7e,0x47,0xfc,0x69,0xa7,0xc5,0x77,0xbf,0xdc,
+ 0x87,0xfe,0xf9,0x3f,0xe3,0x58,0x39,0xa4,0xa7,0x64,0x17,0x37,0x4f,0x8a,0xaf,0xff,
+ 0x00,0xbb,0x0f,0xfd,0xf3,0xff,0x00,0xd7,0xaa,0xd7,0xda,0xf5,0xdd,0xf5,0xb3,0x41,
+ 0x2f,0x97,0xb1,0x88,0x27,0x0b,0x8a,0xcb,0xa4,0xa2,0xc2,0xb8,0x1a,0x4a,0x29,0x29,
+ 0x88,0x29,0x29,0x69,0x28,0x00,0xa6,0xb7,0x5a,0x75,0x35,0xba,0xd2,0x63,0x47,0x57,
+ 0x11,0xdf,0x6b,0x11,0xe7,0x94,0x1d,0x3e,0x94,0xdc,0xe7,0xe5,0x6e,0xbd,0x88,0xa6,
+ 0x59,0x9d,0xda,0x7c,0x1d,0xfe,0x40,0x3a,0xd4,0x9c,0x36,0x47,0xf3,0xa9,0x00,0xcf,
+ 0x66,0xea,0x3a,0x11,0x48,0x4e,0x68,0x07,0xb1,0xe4,0x7a,0xff,0x00,0x8d,0x0d,0xc7,
+ 0xd2,0x90,0x09,0xfe,0x7d,0x3f,0xfd,0x46,0x93,0xfc,0xfa,0x7f,0xfa,0x8d,0x2d,0x21,
+ 0xa0,0x04,0xff,0x00,0x3f,0xe7,0xd0,0xd0,0x7f,0xcf,0xf9,0xec,0x68,0xc7,0xf9,0xff,
+ 0x00,0x3d,0xa8,0xff,0x00,0x3f,0xe7,0xda,0x80,0x05,0x34,0xfc,0x8a,0x80,0xb8,0x55,
+ 0xe4,0x8e,0x29,0x8d,0x70,0x00,0x3e,0xd4,0x8a,0x2c,0x96,0xc5,0x31,0xe4,0xaa,0x92,
+ 0x5c,0x1f,0x9b,0xdb,0x15,0x0b,0xcc,0x72,0xdc,0xf4,0xe9,0x40,0x17,0x92,0x41,0xe6,
+ 0x2f,0xd4,0x56,0xa3,0x8e,0x6b,0x9f,0xb7,0x62,0xf7,0x48,0xa0,0xf5,0x75,0xfe,0x75,
+ 0xd1,0x95,0x34,0x21,0x32,0xbe,0x30,0xd9,0x14,0x83,0x28,0x4e,0x3a,0x54,0xe5,0x29,
+ 0xa5,0x46,0x3d,0xe9,0x81,0x11,0x19,0x39,0x1d,0x7b,0xfb,0xd0,0x31,0xfe,0x34,0xf2,
+ 0xa3,0x1e,0xf4,0xd2,0xb9,0xeb,0xd7,0xd6,0x81,0x0d,0xc6,0x09,0x1e,0xbd,0xbd,0x68,
+ 0xed,0x8f,0xca,0x9d,0x8c,0x70,0x7f,0x0a,0x4d,0xbe,0xc6,0x80,0x13,0x39,0x1e,0xfd,
+ 0xeb,0x33,0x56,0xcf,0x94,0x47,0x3d,0x45,0x6a,0x6d,0x3e,0xf9,0xf5,0xc5,0x46,0xf1,
+ 0x24,0xa3,0x0c,0x8b,0xee,0x0d,0x00,0x72,0xae,0x7f,0x7a,0xc7,0xdf,0x34,0xbb,0xfd,
+ 0xab,0xa4,0x36,0x36,0xe7,0xfe,0x59,0x27,0xe7,0x4d,0xfb,0x05,0xb7,0xfc,0xf1,0x5f,
+ 0xfb,0xe8,0x53,0x19,0xce,0xef,0xf6,0xa3,0x7f,0xb5,0x74,0x5f,0xd9,0xf6,0xdf,0xf3,
+ 0xc1,0x7f,0x31,0x47,0xf6,0x75,0xbf,0xfc,0xfb,0x8f,0xc0,0x8f,0xf0,0xa0,0x0e,0x77,
+ 0x7f,0xb5,0x1b,0xfd,0xab,0xa1,0x3a,0x7d,0xae,0x71,0xe4,0x7f,0x2a,0x3f,0xb3,0x6d,
+ 0xbf,0xe7,0x88,0x14,0x5c,0x0e,0x7f,0x7f,0xb5,0x1b,0xfd,0xab,0xa0,0xfe,0xcc,0xb6,
+ 0xff,0x00,0x9e,0x60,0x52,0x7f,0x65,0xdb,0x7f,0x70,0x51,0x70,0x30,0x37,0xfb,0x52,
+ 0x6f,0xf6,0xad,0xff,0x00,0xec,0xbb,0x6f,0xee,0x8a,0x3f,0xb2,0xed,0xff,0x00,0xba,
+ 0x28,0xb8,0x8c,0x0d,0xfe,0xd4,0x9b,0xfd,0xab,0x7f,0xfb,0x2a,0xdf,0xfb,0xa2,0x8f,
+ 0xec,0xab,0x7f,0xee,0x8a,0x2e,0x07,0x3f,0xbf,0xda,0x8d,0xfe,0xd5,0xd0,0x7f,0x65,
+ 0x5b,0xff,0x00,0x74,0x51,0xfd,0x97,0x6f,0xfd,0xd1,0xf9,0x51,0x70,0x39,0xfd,0xfe,
+ 0xd4,0x9b,0xbd,0xab,0xa1,0xfe,0xcb,0x80,0x7f,0x00,0xfc,0xa8,0xfe,0xcc,0x83,0xfb,
+ 0x8b,0xf9,0x51,0x70,0x39,0xed,0xde,0xd4,0x84,0xe6,0xba,0x3f,0xec,0xd8,0x07,0xf0,
+ 0xaf,0xe5,0x47,0xf6,0x7c,0x03,0xf8,0x16,0x8b,0x8c,0x4d,0x31,0xf7,0x69,0xf1,0x8e,
+ 0x38,0x1d,0xfe,0xb5,0x60,0x8c,0xfb,0x11,0x48,0x90,0x88,0xc6,0x13,0x81,0xe8,0x29,
+ 0xd8,0xa4,0x21,0x07,0x3f,0x5f,0x4a,0x3a,0x76,0xa0,0x8a,0x42,0x7d,0x68,0x00,0xe8,
+ 0x32,0xbc,0x8f,0x4a,0x33,0xdc,0x74,0xed,0xed,0x49,0x82,0x0e,0x47,0xff,0x00,0xae,
+ 0x97,0xef,0x72,0x3a,0xf7,0x14,0x00,0x80,0x9f,0xf0,0xf6,0xa0,0xf3,0xdb,0xe9,0x8a,
+ 0x5e,0x0f,0xd6,0x97,0x3e,0xbc,0x83,0xde,0x81,0x99,0xf3,0x1f,0x98,0xfb,0xa5,0x56,
+ 0x32,0x64,0x7d,0x56,0xb4,0x85,0xac,0x52,0x04,0x77,0x62,0x32,0x0f,0x7c,0x53,0x64,
+ 0xfb,0x2c,0x16,0x6e,0x23,0x40,0xec,0x00,0x61,0x8e,0x70,0x47,0xaf,0xb6,0x09,0xa9,
+ 0x19,0x9c,0x59,0x98,0x13,0x83,0x83,0xc1,0xe3,0xbd,0x29,0x86,0x63,0xb8,0xf9,0x6c,
+ 0x36,0xf0,0xd9,0xed,0x53,0xc9,0x77,0x34,0xaf,0x36,0x2d,0x94,0x09,0xa2,0x0c,0x57,
+ 0x70,0xfb,0xc3,0xf8,0x87,0xe3,0xdb,0xdc,0xd2,0x0b,0x8b,0xb9,0x24,0x53,0xfb,0xac,
+ 0xcd,0x06,0xc3,0x9c,0xe1,0xf0,0x3f,0x9f,0x4f,0xca,0x9d,0x82,0xe3,0x63,0xb4,0xb8,
+ 0x0e,0x4e,0x30,0xd1,0xa8,0x90,0xfa,0xe3,0x8e,0x7f,0x5a,0xe9,0xe0,0xb8,0x82,0x51,
+ 0x0e,0xe6,0x0b,0x24,0xcb,0xb9,0x57,0xd7,0xd7,0x1f,0x91,0xae,0x66,0x26,0xba,0x26,
+ 0xd6,0x4f,0xb4,0x6d,0xc2,0x98,0x83,0x05,0xc9,0x1d,0x78,0x3e,0xbd,0x4d,0x35,0x61,
+ 0x99,0x63,0x87,0x74,0xb2,0x8f,0x26,0x42,0x76,0x83,0x82,0xbe,0xac,0xbe,0xdc,0x53,
+ 0xb0,0xae,0x75,0x5f,0x6a,0xb3,0xf2,0xc4,0x9e,0x7a,0x6c,0x66,0xd8,0x1b,0x3c,0x67,
+ 0xd2,0x86,0x9e,0xcc,0x33,0xab,0x5c,0x46,0xa6,0x33,0x87,0x05,0xc0,0xda,0x7d,0xeb,
+ 0x91,0x78,0x22,0x09,0x22,0x99,0x37,0x30,0x7d,0xcb,0x97,0xe1,0xc7,0xf8,0xd2,0x98,
+ 0xad,0x08,0x90,0xa9,0x5d,0x8e,0x00,0x53,0xce,0x55,0xbd,0x29,0x88,0xeb,0x03,0xda,
+ 0x3f,0xdd,0xb9,0x8c,0xfd,0x24,0x06,0x9e,0x20,0x8d,0xbe,0xeb,0x83,0xf4,0x35,0xcb,
+ 0xaa,0xc0,0xac,0xd2,0x1f,0x28,0x79,0x6b,0xb5,0xd0,0x0f,0xbd,0x9e,0xeb,0x56,0xad,
+ 0xec,0x83,0xbd,0xbc,0x49,0x30,0x2d,0xb3,0xcc,0x89,0xc0,0xfb,0xdc,0x7d,0xd3,0xef,
+ 0xda,0x80,0x37,0x8d,0xa0,0xfe,0xf1,0xa6,0x9b,0x3f,0xf6,0xab,0x1d,0x6d,0x56,0x38,
+ 0xc5,0xdc,0x4c,0xdf,0x3b,0x10,0xcb,0xfd,0xc3,0xff,0x00,0xd7,0xab,0x50,0x48,0xfb,
+ 0x41,0xde,0xdf,0x9d,0x21,0x97,0x0d,0x99,0xec,0xd4,0x86,0xd1,0xf3,0x90,0xdc,0xfd,
+ 0x6a,0x31,0x34,0x9f,0xdf,0x6f,0xce,0x94,0x5c,0x49,0xfd,0xf3,0x40,0x0e,0x36,0x92,
+ 0x7f,0x78,0xfe,0x74,0x7d,0x95,0xfd,0x4f,0xe7,0x49,0xf6,0x89,0x7f,0xbf,0xfa,0x0a,
+ 0x5f,0xb4,0xcb,0xfd,0xef,0xd0,0x50,0x02,0x7d,0x9a,0x4f,0x53,0xf9,0xd3,0x4d,0xab,
+ 0xfb,0x9a,0x7f,0xda,0xa4,0x1d,0x48,0xfc,0xa9,0x1a,0xf1,0xd5,0x4b,0x1d,0xb8,0x1e,
+ 0xd4,0xc0,0x6f,0xd9,0xdc,0x0e,0xf4,0x9e,0x43,0x7a,0x56,0x5b,0x6b,0xf7,0xca,0xc7,
+ 0x10,0xc0,0xc3,0xe8,0x7f,0xc6,0x81,0xe2,0x1b,0xbe,0xf6,0xb1,0x7e,0x04,0xd1,0x61,
+ 0x1a,0x7e,0x43,0x0f,0xe1,0xe2,0x93,0xc9,0x6f,0x43,0x54,0x07,0x88,0x67,0x18,0xcd,
+ 0xa2,0x7e,0x0f,0x4f,0xff,0x00,0x84,0x80,0x96,0x21,0x6d,0x43,0x60,0x67,0xef,0xff,
+ 0x00,0xf5,0xa9,0xa8,0xb6,0x17,0x2e,0x79,0x2d,0xfd,0xde,0x28,0xf2,0x4f,0xa1,0xaa,
+ 0x3f,0xf0,0x92,0x60,0xf3,0x69,0xff,0x00,0x8f,0xff,0x00,0xf5,0xaa,0x55,0xf1,0x02,
+ 0x3f,0xfc,0xbb,0xff,0x00,0xe3,0xff,0x00,0xfd,0x6a,0x1c,0x5a,0xdc,0x2e,0x58,0xf2,
+ 0x58,0x7f,0x0f,0x14,0x79,0x27,0x3d,0x2a,0x21,0xad,0xa1,0xff,0x00,0x97,0x73,0xff,
+ 0x00,0x7d,0xff,0x00,0xf5,0xa9,0xe3,0x58,0x8c,0xff,0x00,0xcb,0x13,0xff,0x00,0x7d,
+ 0x52,0x01,0xde,0x49,0xf4,0xa4,0x30,0x9e,0xc3,0x9a,0x51,0xaa,0x46,0x7f,0xe5,0x91,
+ 0xfc,0xe9,0xc3,0x52,0x8c,0xff,0x00,0xcb,0x33,0xf9,0xd2,0x01,0x9e,0x51,0xf4,0xa0,
+ 0xc4,0x7d,0x2a,0x4f,0xed,0x08,0xbf,0xe7,0x9b,0x52,0xfd,0xbe,0x2f,0xee,0x35,0x00,
+ 0x43,0xe5,0x9f,0x4a,0x4f,0x2c,0xe3,0xa5,0x4f,0xf6,0xf8,0x7f,0xb8,0xff,0x00,0xa5,
+ 0x1f,0x6d,0x83,0xfb,0xaf,0xf9,0x50,0x05,0x7d,0x84,0x76,0xc8,0xa3,0xcb,0x3e,0x86,
+ 0xa7,0xfb,0x64,0x1e,0x8d,0xf9,0x51,0xf6,0xb8,0x7f,0xda,0xfc,0xa8,0x19,0x07,0x96,
+ 0x7d,0x29,0x3c,0xb3,0xdc,0x55,0x8f,0xb5,0xc1,0xfe,0xd7,0xe5,0x47,0xda,0xe0,0xf7,
+ 0xfc,0xa8,0x02,0xb1,0x8c,0xe6,0x8f,0x2c,0x9c,0x1c,0x60,0xd5,0x9f,0xb5,0x41,0xea,
+ 0x7f,0x2a,0x3e,0xd3,0x07,0xf7,0xbf,0x4a,0x00,0xad,0xb0,0x91,0xc8,0xc1,0xa4,0xf2,
+ 0xbd,0xb1,0x56,0xbe,0xd3,0x07,0xf7,0xbf,0x4a,0x4f,0xb4,0xc1,0xfd,0xef,0xd2,0x80,
+ 0x30,0x25,0x6e,0x41,0xcf,0xdd,0x38,0xfc,0xea,0x21,0x30,0x8b,0x95,0x3c,0xa9,0xc7,
+ 0x3d,0xc5,0x2d,0xc7,0xdc,0x90,0xff,0x00,0xb4,0x05,0x53,0x90,0x90,0x5c,0x7a,0x62,
+ 0x90,0xcb,0x2f,0x7a,0x54,0x91,0x1a,0x2a,0x05,0x5c,0x2f,0x19,0xdb,0xd3,0xa1,0xff,
+ 0x00,0x3d,0x6a,0x36,0xbb,0x90,0xe4,0x03,0xb4,0x05,0x1c,0x28,0x03,0x1d,0x39,0x1e,
+ 0x86,0xab,0xb7,0x56,0xfc,0xa9,0x09,0x1f,0x35,0x31,0x13,0x35,0xc4,0xac,0x7e,0x69,
+ 0x18,0xfc,0x98,0x3c,0xf5,0x14,0xc0,0xc4,0x95,0xcf,0x65,0xa6,0x12,0x32,0x7e,0x98,
+ 0xa3,0x77,0xf2,0xc5,0x00,0x39,0x5b,0x98,0xfe,0xb4,0xd0,0xfd,0x3d,0x8e,0x69,0x01,
+ 0xc1,0x1e,0xd4,0x2f,0xde,0x1f,0x5a,0x60,0x38,0x39,0x39,0x1e,0xf9,0xad,0x4b,0x49,
+ 0x1f,0x64,0x60,0x1c,0x6c,0x6d,0xca,0x47,0x50,0x7f,0xc8,0xac,0xe4,0x52,0x52,0x4c,
+ 0x2e,0x48,0x23,0x1c,0x56,0x85,0xba,0xed,0x8c,0x7a,0xd2,0x03,0x5a,0x19,0x06,0xc9,
+ 0x90,0x8c,0xac,0xb8,0x3f,0x46,0xf5,0xfe,0x75,0x22,0x70,0x31,0x55,0x61,0x6c,0x8a,
+ 0xb2,0xb9,0x22,0x90,0x0f,0xa5,0xcd,0x32,0x97,0x24,0x53,0x01,0xd9,0xa3,0x34,0xdc,
+ 0xd1,0x40,0x0e,0xeb,0x50,0x5e,0xf3,0x67,0x2f,0xfb,0xa6,0xa5,0xcd,0x43,0x77,0xcd,
+ 0xa4,0xbf,0xee,0x1f,0xe5,0x42,0xdc,0x47,0x3b,0x45,0x25,0x15,0xd4,0x66,0x0d,0xf7,
+ 0x4d,0x58,0xd2,0xf0,0xd7,0x04,0x1e,0xe8,0x6a,0xb3,0x7d,0xd3,0x56,0x34,0x93,0xfe,
+ 0x96,0x3f,0xdd,0x35,0x12,0x65,0x22,0xe5,0xc5,0x98,0x6c,0xb2,0xf5,0xac,0xf9,0x23,
+ 0x78,0x8f,0xf5,0xad,0xd2,0x2a,0x19,0x61,0x57,0x18,0x22,0x85,0x3b,0xe9,0x21,0x38,
+ 0xdb,0x63,0x2e,0x39,0xbb,0x37,0xe7,0x56,0x15,0xea,0x2b,0x8b,0x52,0x87,0x22,0xa0,
+ 0x57,0x68,0xce,0x0e,0x7e,0x86,0x94,0xa1,0xd8,0x6a,0x46,0x82,0xc9,0x52,0xab,0xd5,
+ 0x24,0x90,0x38,0xc8,0x35,0x28,0x62,0x2b,0x1b,0x16,0x5b,0x0d,0x4b,0xba,0xab,0x07,
+ 0xa7,0x86,0xa0,0x09,0xf3,0x46,0xea,0x88,0x35,0x2e,0xea,0x40,0x49,0x9a,0x33,0x4c,
+ 0xdd,0x46,0x68,0x02,0x4c,0xd2,0x66,0x9b,0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6,
+ 0x8c,0xd0,0x03,0xb3,0x45,0x37,0x34,0xb9,0xa0,0x0f,0xff,0xd9,0xff,0xe4,0x13,0x4b,
+ 0x51,0x54,0x49,0x20,0x44,0x65,0x62,0x75,0x67,0x20,0x4d,0x65,0x74,0x61,0x64,0x61,
+ 0x74,0x61,0x00,0x49,0x13,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x52,0x43,0xae,0xae,0xae,0xae,0x86,0x02,0x00,0x00,0xe8,0x05,0x00,
+ 0x00,0x7b,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0xaa,0x01,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x06,0x11,0xa5,0x88,0x03,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x4c,0x09,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x25,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x34,0x00,0x00,0x00,0xab,0x06,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x50,0x00,0x00,
+ 0x00,0x50,0x09,0x00,0x00,0x0b,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x73,0x02,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
+ 0x00,0x40,0x01,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xaa,0x01,0x00,0x00,0xe8,0x05,0x00,0x00,0xee,0xee,0xee,
+ 0xee,0x15,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x01,0x00,
+ 0x00,0x22,0x41,0x00,0x00,0x94,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x22,0x41,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0xf7,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xe6,0x0b,0x00,
+ 0x00,0x2f,0x08,0x00,0x00,0xe6,0x0b,0x00,0x00,0x10,0x00,0x00,0x00,0x31,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x94,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x68,0x00,0x00,
+ 0x00,0x26,0x09,0x00,0x00,0x87,0x08,0x00,0x00,0x0b,0x09,0x00,0x00,0xc6,0x08,0x00,
+ 0x00,0x25,0x09,0x00,0x00,0x09,0x09,0x00,0x00,0x1b,0x09,0x00,0x00,0x1d,0x09,0x00,
+ 0x00,0x21,0x09,0x00,0x00,0x3e,0x09,0x00,0x00,0x43,0x09,0x00,0x00,0x12,0x09,0x00,
+ 0x00,0x29,0x09,0x00,0x00,0x12,0x09,0x00,0x00,0x04,0x09,0x00,0x00,0xc7,0x08,0x00,
+ 0x00,0x56,0x08,0x00,0x00,0x69,0x07,0x00,0x00,0xc8,0x05,0x00,0x00,0x52,0x05,0x00,
+ 0x00,0x2b,0x09,0x00,0x00,0x27,0x09,0x00,0x00,0x67,0x08,0x00,0x00,0xc8,0x05,0x00,
+ 0x00,0x5f,0x08,0x00,0x00,0x32,0x0a,0x00,0x00,0x67,0x0a,0x00,0x00,0xa1,0x07,0x00,
+ 0x00,0x6d,0x05,0x00,0x00,0x04,0x08,0x00,0x00,0x2f,0x09,0x00,0x00,0x31,0x09,0x00,
+ 0x00,0x66,0x08,0x00,0x00,0xe8,0x05,0x00,0x00,0xf9,0x09,0x00,0x00,0xab,0x0a,0x00,
+ 0x00,0xe9,0x0a,0x00,0x00,0xf2,0x08,0x00,0x00,0x7e,0x05,0x00,0x00,0xdc,0x07,0x00,
+ 0x00,0x31,0x09,0x00,0x00,0x5a,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xee,0x09,0x00,
+ 0x00,0x73,0x0a,0x00,0x00,0xc5,0x0a,0x00,0x00,0x50,0x09,0x00,0x00,0x86,0x05,0x00,
+ 0x00,0x31,0x09,0x00,0x00,0x4e,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xe2,0x09,0x00,
+ 0x00,0x2b,0x0b,0x00,0x00,0xdc,0x0a,0x00,0x00,0x5c,0x09,0x00,0x00,0x86,0x05,0x00,
+ 0x00,0x38,0x09,0x00,0x00,0x3e,0x08,0x00,0x00,0xee,0x05,0x00,0x00,0xcf,0x09,0x00,
+ 0x00,0xe6,0x0b,0x00,0x00,0xd4,0x0b,0x00,0x00,0xdd,0x09,0x00,0x00,0x76,0x05,0x00,
+ 0x00,0xe8,0x05,0x00,0x00,0x06,0x06,0x00,0x00,0x3b,0x06,0x00,0x00,0x1c,0x06,0x00,
+ 0x00,0x33,0x08,0x00,0x00,0x1e,0x08,0x00,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xfe,0xff,0xff,0xff,0xbc,0x08,0x00,
+ 0x00,0x44,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x29,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x96,0x09,0x00,
+ 0x00,0xf9,0x0b,0x00,0x00,0xba,0x05,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0d,0x00,
+ 0x00,0x00,0x1d,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x8b,0xfe,0xff,
+ 0xff,0xdc,0xfe,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xad,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x06,0x00,
+ 0x00,0x7c,0x00,0x00,0x00,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0x0a,0x00,0x00,0x86,0x09,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xde,0x00,0x00,0x00,0xbb,0x00,0x00,
+ 0x00,0x17,0x00,0x00,0x00,0x1d,0x00,0x00,0x00,0xb6,0x00,0x00,0x00,0xa5,0x00,0x00,
+ 0x00,0xc1,0xff,0xff,0xff,0x3c,0x00,0x00,0x00,0xef,0xff,0xff,0xff,0xed,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,
+ 0x00,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x10,0x00,
+ 0x00,0x00,0x13,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x26,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0b,0x00,0x00,0xdf,0xff,0xff,
+ 0xff,0x64,0x08,0x00,0x00,0xa4,0x0a,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x0a,0x1e,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x6c,0x97,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xa5,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x92,0x02,0x00,0x00,0x8a,0x04,0x00,0x00,0xe4,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x5d,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,
+ 0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00,
+ 0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x4a,0x4b,0x4a,0x4b,0x21,0x07,0x0a,
+ 0x9c,0x24,0xfa,0x00,0x00,0xac,0xfa,0x00,0x00,0x2e,0x77,0x00,0x00,0x2c,0x7e,0x00,
+ 0x00,0xd6,0xea,0x01,0x00,0x50,0xb1,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0xaa,0x01,
+ 0x00,0x00,0xaa,0x01,0x00,0x02,0x00,0x35,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x02,
+ 0x00,0x00,0x00,0x76,0x00,0x75,0x18,0x7e,0x5b,0x02,0x00,0x00,0x00,0x01,0x00,0x87,
+ 0xb3,0x01,0x00,0x17,0x92,0x01,0x00,0xbb,0x6b,0xff,0xff,0x2d,0x02,0x00,0x00,0x69,
+ 0xdd,0xff,0xff,0x26,0x46,0x01,0x00,0x71,0xdc,0xff,0xff,0x70,0x0f,0x00,0x00,0x19,
+ 0x4f,0xff,0xff,0x76,0xa1,0x01,0x00,0xff,0xff,0x40,0x30,0x00,0x00,0x18,0x00,0x00,
+ 0x12,0x12,0x00,0x08,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x10,0x12,
+ 0x12,0x12,0x12,0x13,0x13,0x00,0x00,0x00,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x13,0x00,0x13,0x12,0x13,0x13,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x01,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x07,0x08,0x12,0x12,0x12,0x12,0x01,
+ 0x06,0x12,0x12,0x12,0x12,0x08,0x15,0x00,0x00,0x14,0x15,0x06,0x12,0x12,0x12,0x01,
+ 0x06,0x12,0x12,0x12,0x12,0x08,0x08,0x15,0x00,0x15,0x15,0x06,0x12,0x12,0x12,0x01,
+ 0x06,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x15,0x15,0x07,0x12,0x12,0x12,0x06,
+ 0x12,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x14,0x15,0x08,0x12,0x12,0x12,0x06,
+ 0x06,0x12,0x12,0x12,0x12,0x06,0x07,0x16,0x08,0x00,0x08,0x08,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x06,0x07,0x01,0x01,0x07,0x08,0x08,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x08,0x15,0x15,0x12,0x12,0x12,0x12,0x12,0x12,0x00,
+ 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xf9,0x0d,0x00,0x10,0x00,
+ 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xc3,
+ 0x0a,0x00,0x10,0xca,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x02,
+ 0x08,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x1b,
+ 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x25,0x4c,0x00,0x00,0x00,0x0e,
+ 0x18,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88,
+ 0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,
+ 0x1e,0x08,0x1b,0xfc,0x21,0xa8,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4c,0x24,0x38,0x1f,0x42,
+ 0x23,0x2f,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c,
+ 0x27,0x09,0x1e,0xf0,0x27,0xec,0x1b,0x2b,0x28,0x67,0x1c,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x67,0x2a,0x04,0x18,0x00,0x27,0x5d,0x19,0x7b,0x25,0x3d,0x16,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x2e,0x2d,0x15,0xd3,0x2b,0x56,0x16,0xa2,
+ 0x29,0x12,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xab,
+ 0x1c,0x9c,0x1a,0x7b,0x25,0x77,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x5d,0x1d,0x93,0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa1,0x26,0x42,0x20,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c,
+ 0x27,0x57,0x1e,0x75,0x27,0xc0,0x1d,0x83,0x28,0x72,0x1c,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x80,0x27,0x12,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf2,0x1f,0x1d,0x15,0xd2,
+ 0x24,0x83,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88,
+ 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,
+ 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x04,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x55,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x12,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x0f,0x00,0x1c,0x01,0xe8,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x13,
+ 0x01,0x07,0x00,0x00,0x00,0x00,0x00,0x2f,0x00,0x71,0x00,0x13,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0xc8,0x00,0x9b,
+ 0x01,0x00,0x00,0x00,0x00,0x04,0x00,0x5a,0x00,0xe8,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x0c,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x16,0x00,0x0b,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xf7,0x1f,0xfe,0xb7,0x15,0xfe,0xb7,0x15,
+ 0xe2,0x17,0x10,0xe2,0x17,0x10,0x00,0x88,0x20,0x00,0x10,0xe6,0x1d,0x06,0x00,0x00,
+ 0x00,0x5a,0x50,0x64,0x55,0x64,0x2d,0x64,0x10,0x64,0x10,0x64,0x10,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x67,0x00,0x00,0x00,0x01,0x00,0x0c,0x00,0x13,
+ 0x00,0x09,0x00,0x06,0x00,0x67,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x65,0x26,0xba,0x1b,0x65,
+ 0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x84,0x25,0x27,0x1b,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x59,0x00,0x00,0x00,0xda,0x02,0x83,
+ 0x03,0x00,0x00,0x75,0x19,0x00,0x00,0x60,0x3d,0x00,0x00,0x00,0xaa,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x05,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x4e,0x00,0xa4,0x00,0x8d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x03,0x00,0x9d,0x00,0x6a,0x01,0x4b,
+ 0x04,0x01,0x00,0x57,0x01,0x28,0x00,0x01,0x00,0xd6,0xc9,0x33,0x01,0x00,0x00,0x00,
+ 0x00,0x46,0x41,0x46,0x41,0x28,0x00,0x66,0x01,0x32,0x00,0xad,0xff,0xda,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0x93,0x59,0x01,0x9c,0x04,0x32,0x00,0xad,0xff,0xda,0xff,0xa8,
+ 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0x59,0x01,0x14,0x00,0xc2,0xff,0xd7,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0x93,0x58,0x01,0x58,0x01,0xc2,0xff,0x00,0x00,0xec,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x58,0x01,0xd0,0xff,0xe3,0xff,0xf1,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x57,0x01,0xf7,0xff,0x03,0x00,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xe3,0x56,0x01,0x9c,0x04,0xf7,0xff,0x03,0x00,0xff,0xff,0xa8,
+ 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0xe8,0x03,0xf7,0xff,0x03,0x00,0xff,0xff,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x57,0x01,0xd4,0xff,0x10,0x00,0xf7,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x2c,0x00,0x14,0x00,0xfc,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe1,0xff,0x15,0x00,0x02,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd8,0xff,0xf0,0xff,0xf3,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x23,0x00,0x23,0x00,0x0e,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd2,0xff,0x1f,0x00,0x0c,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc5,0xff,0xd6,0xff,0xf4,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x25,0x00,0x1c,0x00,0x00,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x18,0x00,0xf5,0xff,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc2,0xff,0xe8,0xff,0x03,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0c,0x00,0x28,0x00,0xfe,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x03,0x00,0xe1,0xff,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf8,0xff,0xe9,0xff,0xf9,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd0,0xff,0x1d,0x00,0x05,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf6,0xff,0xe1,0xff,0xf8,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x1d,0x00,0xed,0xff,0xeb,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xde,0xff,0xf3,0xff,0x06,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0d,0x00,0x02,0x00,0xf0,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xfe,0xff,0xea,0xff,0x01,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe6,0xff,0xf8,0xff,0x04,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xfa,0xff,0xf2,0xff,0xf7,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x11,0x00,0x08,0x00,0x08,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xc2,0xff,0xeb,0xff,0x02,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x27,0x00,0x05,0x00,0x00,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x19,0x00,0x0c,0x00,0xfc,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd3,0xff,0xe9,0xff,0xfe,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x06,0x00,0x07,0x00,0xf2,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd5,0xff,0x1a,0x00,0x03,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x09,0x00,0x18,0x00,0x03,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xef,0xff,0x23,0x00,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x01,0x00,0xf7,0xff,0xf3,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0xaa,0x01,0x00,0x00,0xb8,0x00,0x05,0xd0,0x0a,
+ 0x00,0x01,0x00,0x00,0x00,0x60,0x07,0x00,0x04,0x70,0x08,0x40,0x05,0x18,0x00,0x01,
+ 0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xe5,0x00,0xa2,0x00,0x73,0x73,
+ 0x6f,0x69,0x73,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c,
+ 0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x30,0x20,0x32,0x73,0x73,
+ 0x6d,0x74,0x66,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x53,0x53,0x43,0x41,0x4c,
+ 0x20,0x50,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56,0x4d,0x30,0x30,0x33,
+ 0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0x4d,0x38,0x44,0x30,0x31,0x44,0x30,0x31,
+ 0x53,0x31,0x34,0x53,0x41,0x33,0x2f,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31,
+ 0x56,0x4d,0x30,0x30,0x33,0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0xff,0xdb,0x00,
+ 0x84,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x02,0x03,0x02,0x02,0x02,0x02,0x02,0x04,0x03,0x03,0x02,0x03,0x05,0x04,0x05,0x05,
+ 0x05,0x04,0x04,0x04,0x05,0x06,0x07,0x06,0x05,0x05,0x07,0x06,0x04,0x04,0x06,0x09,
+ 0x06,0x07,0x08,0x08,0x08,0x08,0x08,0x05,0x06,0x09,0x0a,0x09,0x08,0x0a,0x07,0x08,
+ 0x08,0x08,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x04,0x02,0x02,0x04,0x08,0x05,0x04,
+ 0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0xff,0xc0,0x00,0x11,0x08,0x0b,0xd0,0x0f,0xc0,0x03,0x01,0x22,0x00,
+ 0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,
+ 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,
+ 0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,
+ 0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,
+ 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,
+ 0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,
+ 0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,
+ 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,
+ 0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,
+ 0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,
+ 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,
+ 0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,
+ 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,
+ 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,
+ 0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,
+ 0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,
+ 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,
+ 0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,
+ 0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,
+ 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,
+ 0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,
+ 0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,
+ 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,
+ 0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,
+ 0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,
+ 0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xfe,0x15,0xec,0x27,0x9b,0x03,0x68,0x86,
+ 0x7b,0x88,0xd4,0xc8,0x79,0x3c,0xaf,0xa0,0xf5,0xa5,0xd4,0xee,0xa7,0x96,0x66,0x79,
+ 0x84,0x31,0x16,0x0a,0x56,0x35,0xe7,0x23,0x03,0x05,0x4f,0x73,0x4c,0x64,0x68,0x55,
+ 0xa4,0x8d,0x19,0xe4,0x60,0xc5,0x59,0x57,0xf7,0x80,0x0e,0xad,0x8f,0x4a,0xa5,0x78,
+ 0xd3,0xac,0x7e,0x73,0xfc,0xb7,0x48,0xd9,0xd9,0x13,0x75,0x4c,0x0e,0x40,0xec,0x6b,
+ 0x5a,0x56,0x8b,0x76,0xd8,0xa7,0xb6,0xe5,0x5b,0xcb,0x91,0x72,0x8b,0x10,0x49,0x9a,
+ 0xe2,0x32,0x59,0x97,0x1c,0x36,0x7a,0x67,0xdc,0x7f,0x5a,0xc6,0x69,0x84,0x51,0x29,
+ 0x96,0x24,0x17,0x2e,0x08,0x90,0x96,0xe8,0x33,0xd4,0x0f,0x6a,0x7d,0xdd,0xfb,0x99,
+ 0x66,0x91,0x96,0x74,0x47,0x60,0xe1,0x07,0xf0,0xf1,0xfe,0x26,0xb3,0x1f,0xf7,0xa5,
+ 0x5a,0x42,0x17,0x92,0xcc,0x1b,0xa6,0x08,0xcf,0x5a,0xd9,0x69,0xea,0x38,0xbe,0xdb,
+ 0x8b,0x31,0x4d,0xea,0xe2,0x32,0x8c,0x7e,0x63,0xf3,0x7b,0x53,0x99,0xd9,0xc2,0x48,
+ 0xb2,0x14,0xc8,0xc7,0xb1,0x3e,0x87,0xf5,0xa8,0xc7,0xef,0x44,0x86,0x42,0x25,0x7c,
+ 0x64,0x16,0x24,0x02,0x3d,0xa9,0xc1,0x62,0x88,0xb1,0x07,0xcc,0x21,0x70,0x14,0x8e,
+ 0x09,0xc7,0x5f,0xd6,0xb3,0xb5,0xda,0x46,0xb1,0x6e,0xde,0x45,0x9b,0x74,0x2d,0x29,
+ 0x8e,0x4d,0xe7,0x9c,0x20,0x03,0xe5,0x07,0xbf,0xcd,0x57,0x62,0xb8,0x8d,0x54,0x5a,
+ 0x95,0x77,0x53,0x21,0x90,0x10,0x00,0x39,0x1e,0xe7,0xa8,0xe0,0xd6,0x51,0x21,0xc3,
+ 0x29,0x2a,0x50,0x90,0x48,0x50,0x7b,0x0e,0xbe,0xd5,0x0a,0xca,0x70,0x14,0x64,0xe4,
+ 0x6d,0x04,0x73,0xf4,0xa6,0xe7,0x74,0x6a,0xa5,0x65,0x66,0x69,0xb6,0xa5,0x2b,0x26,
+ 0xf5,0x48,0xe0,0x07,0xe5,0x11,0x8f,0x98,0x15,0x07,0xee,0xf3,0xda,0xb3,0x6e,0x6e,
+ 0x24,0xb8,0x9c,0xca,0xe4,0x8c,0x03,0x81,0x8e,0xf4,0xc1,0xf7,0x31,0x8c,0x91,0x91,
+ 0x80,0x69,0xa4,0x8d,0xa3,0xe7,0x79,0x30,0x70,0x73,0xc6,0x6b,0x36,0xee,0x65,0x29,
+ 0x5d,0x0e,0x21,0x4e,0xc5,0x00,0xbb,0x91,0x92,0x48,0xc6,0x29,0x1b,0x18,0xdc,0x0f,
+ 0x07,0x92,0xa4,0xd3,0xbe,0xeb,0x85,0x0a,0x4e,0x46,0x5c,0x16,0xe0,0xd3,0x24,0x3b,
+ 0x8e,0x55,0x36,0x8e,0x80,0x9e,0x70,0x3d,0x2a,0x6e,0xaf,0x70,0x77,0xb6,0xa3,0xfe,
+ 0x53,0x86,0xd8,0x23,0x5c,0xe5,0x80,0x27,0xe5,0xc7,0xf8,0xd3,0x3e,0x67,0xc0,0xcf,
+ 0x3d,0x17,0x8e,0xb4,0xe5,0xf2,0xc3,0xfd,0xe2,0x40,0x18,0xe4,0x75,0xa6,0xee,0x57,
+ 0x2a,0x4e,0xd5,0xc9,0xc6,0x73,0xd2,0x9a,0xf2,0x13,0xdb,0x50,0x07,0x24,0x00,0x01,
+ 0x5f,0xe2,0xcf,0x7f,0x6a,0x92,0x45,0x28,0xa8,0x81,0x48,0x56,0xf9,0x81,0x6e,0xf8,
+ 0xeb,0x4c,0x2c,0x79,0x51,0xb1,0x80,0x38,0x0d,0x8c,0x64,0x53,0xb7,0xf9,0x8c,0xa6,
+ 0x4c,0xb9,0x55,0xc2,0xfb,0x7e,0x14,0xac,0x17,0x5b,0x75,0x00,0x33,0xe5,0x39,0x01,
+ 0x01,0x38,0xce,0x38,0x1f,0x5f,0xca,0x85,0x8c,0xb9,0xf2,0xf2,0x23,0xc8,0xc3,0x36,
+ 0x3a,0x73,0xff,0x00,0xea,0xa9,0x0e,0x76,0xaa,0xb1,0xf3,0x3e,0x52,0x00,0x66,0xfb,
+ 0xbf,0x41,0x50,0xee,0x0d,0xb4,0xc8,0xbb,0xbd,0xb3,0xd7,0x9e,0xd4,0xed,0xd1,0x15,
+ 0x64,0x9e,0xa4,0x8d,0x9c,0xe0,0x47,0xc2,0xae,0xc3,0x93,0xd7,0xde,0x83,0xe5,0x85,
+ 0xe3,0x73,0xa9,0x20,0xe0,0xf1,0xcd,0x26,0x64,0xd9,0x86,0xc6,0x47,0x20,0xe7,0xef,
+ 0x0f,0x42,0x29,0x8c,0x40,0x6c,0x01,0x9c,0x9c,0x92,0x3b,0x52,0xb8,0x9b,0xb2,0xbb,
+ 0x1c,0x0b,0x49,0x8d,0xc4,0x28,0x04,0xf2,0x4f,0x27,0xd8,0x52,0x86,0x5d,0xa8,0x54,
+ 0x67,0xae,0x09,0x1d,0x29,0x8a,0x03,0x07,0xcb,0x28,0x5e,0xa4,0x9e,0xd4,0xae,0xe5,
+ 0xd0,0x0c,0x15,0x8d,0x4e,0x40,0x03,0xa5,0x17,0xbe,0xe1,0x7d,0x2e,0x3f,0xe6,0x90,
+ 0x9c,0x97,0xda,0x48,0xdc,0x47,0x6f,0x4a,0x8b,0xa9,0xce,0xdd,0xa0,0x73,0xc9,0x3f,
+ 0x35,0x48,0xac,0x8d,0xbf,0x71,0x65,0x24,0x64,0x11,0xd6,0x9b,0x82,0xc0,0x05,0x0c,
+ 0x79,0xce,0x0f,0x6f,0x6a,0x1e,0x81,0x7d,0x04,0xf9,0x9c,0xaf,0x4c,0x93,0xc0,0x14,
+ 0xec,0xb4,0x85,0x54,0x16,0x2d,0x93,0x80,0x47,0x5a,0x06,0x41,0x2e,0xa4,0x8c,0x8c,
+ 0xe4,0x0e,0x83,0xd0,0xd1,0x9d,0xe0,0xc8,0xcc,0x01,0x3d,0x40,0xa5,0xd7,0x52,0x55,
+ 0xed,0xa8,0xbf,0xbc,0x8c,0xe6,0x37,0x2a,0x40,0xc1,0x1d,0x87,0x14,0xd4,0x0a,0x10,
+ 0xe5,0x72,0xac,0x38,0x70,0x3a,0x73,0x4f,0x45,0x52,0x15,0xc6,0x36,0x9e,0xcc,0x79,
+ 0xe2,0x98,0x5d,0xc0,0x2e,0x1f,0x60,0x03,0x21,0x40,0xe8,0x3d,0x05,0x3e,0x81,0xe6,
+ 0xc7,0xb2,0x92,0x54,0x1d,0xa3,0xe5,0xe4,0x7a,0x8f,0x7f,0xd2,0x90,0x30,0x63,0x1a,
+ 0x94,0x43,0x8e,0x4e,0x49,0xf9,0xbe,0xb4,0x63,0x77,0xcc,0x18,0x73,0xc6,0x09,0xf9,
+ 0x89,0xfa,0x53,0x57,0x69,0x47,0x3c,0x96,0x18,0x03,0x1e,0x94,0x5f,0xb0,0xef,0xad,
+ 0xd1,0x20,0xdb,0x87,0x00,0x17,0x19,0x00,0x00,0x39,0xfc,0x0d,0x1b,0x54,0x71,0x11,
+ 0x63,0xb5,0xb9,0x0d,0xc1,0x14,0xd5,0x3c,0xe7,0x83,0x96,0xe7,0xb6,0x29,0x15,0x24,
+ 0x32,0x32,0xae,0x43,0xfd,0xe5,0xc9,0x03,0x23,0x3e,0xb4,0x3d,0x5d,0xc2,0xfb,0x0e,
+ 0x72,0x09,0x03,0x2c,0xbb,0x41,0x1c,0xf6,0xa5,0x68,0x1f,0xe4,0x72,0x8b,0x86,0x19,
+ 0x52,0x0f,0xde,0xa5,0x62,0xa1,0xbf,0x78,0xae,0x24,0x27,0x70,0x6c,0xf2,0x0f,0xb8,
+ 0xee,0x2a,0x47,0x92,0x69,0x7c,0xb5,0x57,0x2a,0x8a,0x70,0xa8,0xa3,0xee,0xd3,0x69,
+ 0x12,0xd5,0xc7,0x47,0x85,0x0f,0x1c,0xc9,0xfb,0x89,0x14,0x3a,0xae,0x30,0x48,0xcf,
+ 0x7e,0xf5,0x66,0x0b,0xd9,0xa3,0x9a,0xdb,0x71,0x59,0x46,0x4a,0xa6,0x1b,0x1b,0x47,
+ 0x40,0x6a,0xa9,0x2c,0x42,0xac,0xef,0xe6,0x72,0x63,0x50,0xc7,0x86,0x1e,0xa4,0xf6,
+ 0xa8,0xa4,0xc1,0x90,0x00,0xaa,0x13,0x1b,0x71,0x8e,0xc0,0x74,0x5f,0x7a,0x4a,0xef,
+ 0x51,0xe8,0x8e,0xdc,0xbc,0x33,0xda,0xc8,0xca,0xb1,0x73,0x21,0x80,0xc4,0xf9,0xc0,
+ 0x39,0xce,0x57,0xf5,0xe9,0x5c,0xc4,0x8d,0x0c,0x72,0x3b,0xc5,0x2a,0xa4,0xc9,0x23,
+ 0x2b,0x46,0xe7,0xef,0x9f,0x51,0xec,0x79,0xc5,0x6e,0xd9,0x18,0xf1,0xb3,0xfd,0x25,
+ 0xa6,0x03,0x2b,0x95,0xce,0xd1,0x8f,0xbc,0x7d,0x3f,0xfa,0xf5,0x8f,0x7c,0xb6,0xd0,
+ 0x48,0xcc,0xd6,0xed,0x35,0xe0,0x38,0x62,0x41,0x0a,0x33,0xdf,0xeb,0xc8,0xa7,0x77,
+ 0xaa,0x7b,0x99,0xa7,0x77,0x66,0x55,0x77,0x61,0x12,0x4a,0x98,0x18,0x93,0x25,0x07,
+ 0x04,0x0f,0x6a,0x0a,0x87,0x4c,0x83,0x20,0x85,0x8e,0x1d,0x40,0xe4,0x73,0x50,0x2c,
+ 0x4f,0x2c,0x71,0xc2,0x5d,0x41,0x27,0xe6,0x52,0x4e,0x57,0x9e,0xa0,0x7a,0x55,0x9b,
+ 0x86,0x8d,0xa4,0x8d,0x62,0x66,0x8a,0x75,0x52,0x03,0x38,0xe0,0x8f,0x4f,0xf3,0xeb,
+ 0x49,0xf9,0x6e,0x17,0x4f,0x61,0x53,0x74,0x67,0x0e,0x9f,0x28,0x3f,0x2a,0xae,0x32,
+ 0x3e,0xa6,0x9a,0xd7,0x06,0x59,0x63,0x0d,0x18,0x87,0xf8,0x94,0xe7,0x9c,0xe7,0xbf,
+ 0xa5,0x31,0x58,0x3b,0x85,0x74,0x29,0x91,0x87,0x20,0x7d,0xdf,0x43,0xc7,0x5e,0x94,
+ 0x2b,0xec,0xdc,0xe8,0xa6,0x50,0xc7,0x00,0xb7,0x7f,0x72,0x2a,0x5e,0xe1,0xab,0x5a,
+ 0x16,0x04,0x4a,0x65,0x70,0xc2,0x4c,0x96,0x24,0x9e,0xb9,0xf7,0x22,0x88,0xb7,0xda,
+ 0xaa,0x38,0x71,0x1e,0x09,0x0a,0xc7,0xa9,0x51,0xc9,0x1e,0xd4,0x92,0x43,0x24,0x0d,
+ 0x14,0x8c,0xa2,0x30,0x64,0x05,0xd4,0x3e,0x30,0x31,0xc7,0xf9,0x35,0x34,0x33,0x99,
+ 0xa7,0xf2,0xfc,0xd6,0x9e,0x4d,0xc2,0x4d,0xa4,0x0e,0x83,0xb5,0x2f,0x24,0x2b,0xb7,
+ 0xb0,0xcf,0x2a,0xdc,0xf9,0x53,0x30,0x95,0x56,0x40,0xc4,0x44,0x8d,0x92,0xa3,0xd4,
+ 0x8a,0x96,0x39,0x7c,0xdb,0x99,0x23,0x01,0xfe,0x45,0x2e,0x18,0x0f,0x6a,0x58,0xde,
+ 0x39,0x66,0x5b,0x7b,0x68,0x9c,0xdc,0x33,0xf9,0x8c,0xc4,0x60,0xa7,0xb7,0x34,0x93,
+ 0x5b,0x5f,0x2a,0x32,0x49,0xba,0xd5,0x43,0x15,0xda,0xbf,0x79,0x81,0x39,0x04,0x0e,
+ 0xd4,0xf4,0xb8,0xf4,0xd9,0x16,0xa0,0x92,0xdc,0x84,0xcc,0x52,0xcb,0x74,0xc3,0x00,
+ 0x6d,0x23,0x8f,0x6f,0xa5,0x0b,0x05,0xcc,0xb7,0x50,0x42,0x92,0xe5,0x5f,0x0a,0xcc,
+ 0xe7,0x86,0x6f,0xad,0x58,0xb5,0xd3,0x75,0x2d,0x46,0xee,0x0d,0xb1,0x38,0x8c,0xa9,
+ 0x53,0x29,0x60,0x0a,0x26,0x3d,0x7b,0x9e,0x7a,0x57,0x57,0x6f,0x65,0x67,0xa5,0x5a,
+ 0x40,0xb2,0x34,0xb7,0xae,0xe5,0xe4,0x50,0xc7,0x04,0x10,0x78,0x19,0xef,0x9f,0x4e,
+ 0xd4,0x45,0x5d,0xe8,0x24,0xef,0xa2,0x30,0xf4,0x9f,0x0f,0xea,0x17,0x3a,0x88,0x16,
+ 0xf1,0xaa,0x07,0x61,0xe6,0xb4,0xad,0xb7,0x68,0xe8,0x70,0x07,0x7e,0x6b,0xa4,0xd3,
+ 0xfc,0x31,0x6f,0x61,0x24,0xf6,0x77,0xb1,0xc7,0x75,0x2c,0x92,0x09,0x0b,0x4a,0xc5,
+ 0x55,0x54,0x02,0x57,0x68,0xef,0xdb,0x35,0x1b,0x6a,0xb6,0xdb,0xae,0x3e,0xcf,0x23,
+ 0xad,0xe0,0x8c,0x31,0x07,0x80,0xdc,0xf7,0xf7,0xeb,0x58,0x57,0x9a,0xd5,0xcd,0xcc,
+ 0x83,0xed,0x2a,0xeb,0x1b,0xa1,0x50,0xc5,0xf8,0x04,0x63,0xe6,0x1e,0x86,0xa2,0x2d,
+ 0xbd,0xc7,0x66,0xec,0x96,0xe7,0x5c,0x35,0x6b,0x6f,0xb4,0xfd,0xa5,0xd1,0xe3,0x98,
+ 0x2e,0x52,0x40,0xa7,0x8c,0x00,0x36,0xe4,0xf5,0x1f,0xca,0xb9,0x0d,0x43,0x5e,0x9a,
+ 0x70,0xb6,0xd6,0x10,0x18,0xe2,0x70,0xcc,0x54,0x00,0x4a,0x8c,0xfa,0xf7,0xe7,0xf9,
+ 0xd6,0x50,0x13,0x39,0x91,0x56,0x58,0xa5,0xf2,0xd0,0xb0,0x77,0x3c,0x36,0x7f,0xaf,
+ 0x4a,0xd1,0x86,0x35,0xcd,0xbb,0x3c,0x66,0xdd,0x59,0x48,0x56,0x88,0xe3,0x67,0xf8,
+ 0x0e,0x2a,0xb6,0xb1,0x32,0x76,0x10,0x79,0x79,0xb7,0x22,0x22,0xa3,0x76,0x19,0xc7,
+ 0x6e,0x32,0x78,0xad,0x9d,0x36,0xd9,0xe7,0x0d,0xe7,0xcd,0x30,0x00,0x92,0x11,0x9c,
+ 0x8d,0xab,0xd0,0x7f,0x3e,0x95,0x4e,0x29,0xa0,0x82,0x48,0xe4,0x4f,0xde,0xc6,0x8d,
+ 0xb3,0x32,0x0e,0x65,0x38,0xe7,0x1e,0xd5,0x5e,0x4b,0x99,0x2f,0x6e,0x26,0xde,0x8f,
+ 0x1c,0x6c,0xc0,0xb9,0x88,0x10,0xff,0x00,0x40,0x3f,0xcf,0x41,0x54,0xda,0x4a,0xec,
+ 0x97,0x25,0x77,0x62,0xed,0xcd,0xec,0x5a,0x6b,0xcf,0x6b,0x68,0x3c,0xe4,0x99,0xc2,
+ 0xbc,0x6b,0x1e,0xed,0xa3,0x8c,0x12,0x3b,0x1a,0x8e,0x4d,0x46,0x4b,0x7b,0x88,0x61,
+ 0x9a,0x39,0xa6,0x8c,0x21,0x76,0x8c,0x9d,0x9b,0xc1,0x1e,0xbe,0x94,0xfd,0x3e,0xc2,
+ 0x69,0xad,0x1e,0xee,0x14,0xbc,0x59,0x4b,0x31,0x40,0xb1,0x90,0xcd,0x83,0x8c,0x32,
+ 0xd7,0xa8,0x78,0x27,0xe1,0x86,0xa3,0xae,0xde,0x5b,0xdd,0xcb,0x71,0x3c,0xd1,0xaa,
+ 0xed,0x05,0xa3,0x18,0x0b,0xdb,0x23,0xd7,0xde,0x93,0x9c,0x52,0xe6,0x93,0x45,0xc6,
+ 0x17,0x69,0x27,0xad,0xcf,0x1e,0xb7,0x5d,0x42,0xe9,0x64,0xfb,0x3d,0x92,0x4b,0xb8,
+ 0x8c,0xa8,0x3c,0xc4,0x01,0xfe,0x13,0xf4,0xeb,0x5e,0xa1,0xe0,0xbf,0x00,0x6a,0x1a,
+ 0xc4,0x52,0x35,0xee,0x85,0x85,0x59,0x03,0x19,0x6e,0x98,0xa6,0xf5,0x23,0x82,0x07,
+ 0x7e,0xb5,0xf4,0x3f,0x86,0x3e,0x12,0x68,0x9a,0x2c,0xcb,0xaa,0x5f,0x5a,0x23,0xea,
+ 0x88,0x58,0xb3,0xa8,0xdc,0xb8,0x07,0x90,0x46,0x70,0x7b,0x76,0xaf,0x58,0x58,0x61,
+ 0x78,0x9a,0x31,0x68,0x2c,0xec,0x43,0x2b,0x18,0xd8,0x1c,0x13,0xd4,0x00,0x3a,0x81,
+ 0xde,0xb8,0x6a,0xd4,0xbb,0xb4,0x7a,0x19,0xce,0x0d,0x2b,0x23,0xcd,0xbc,0x31,0xf0,
+ 0x8b,0x45,0xb3,0x4b,0xc9,0xf5,0x2d,0x3a,0x3b,0xbb,0x56,0x11,0xb4,0x05,0x80,0x5f,
+ 0xb2,0xb8,0xeb,0x8c,0x1f,0xbb,0xef,0xeb,0x5e,0xb9,0x67,0x63,0x00,0x48,0x12,0x11,
+ 0xb6,0x55,0x24,0x29,0x74,0x03,0x6f,0x61,0x83,0xe9,0xc5,0x5c,0xb3,0x37,0xa8,0xb3,
+ 0xc3,0x1c,0xa4,0x70,0x1b,0x3e,0x83,0x3d,0x3d,0xc5,0x5e,0x88,0x91,0x28,0x2d,0x1a,
+ 0xed,0x03,0xc9,0xda,0x46,0x33,0xee,0x00,0xe9,0x59,0x36,0xde,0xa9,0xff,0x00,0x5e,
+ 0x85,0xc6,0xc9,0xde,0x3f,0xd7,0xa0,0xb8,0x97,0xce,0x26,0xe0,0xa4,0x51,0x48,0xc1,
+ 0x09,0xc6,0x76,0x01,0xe9,0x8a,0x59,0x50,0xf9,0xe9,0xfb,0xa6,0x8e,0x35,0x1b,0x43,
+ 0x81,0x96,0x38,0xf7,0xa8,0x56,0x40,0xd0,0x47,0x0a,0x2c,0x92,0x66,0x4c,0xb3,0x10,
+ 0x46,0xd1,0x9e,0xc4,0xfd,0x0d,0x5e,0x51,0xe5,0xaf,0xdb,0x18,0x42,0x57,0x19,0x0a,
+ 0x09,0xc8,0x1f,0x4e,0xf4,0x6a,0x95,0xec,0x16,0xd6,0xef,0x64,0x32,0x19,0x87,0x98,
+ 0xf3,0x2b,0x8d,0xca,0xa1,0x76,0x3c,0x78,0x52,0x47,0x62,0x7f,0xad,0x6a,0x71,0x38,
+ 0x12,0x05,0x03,0xcc,0x00,0x30,0x00,0x9d,0xbe,0xa7,0x27,0xd3,0x34,0xb6,0x76,0x71,
+ 0x4b,0x03,0x79,0xd2,0xee,0x04,0x16,0x25,0x81,0x24,0x7b,0x81,0xd4,0xd3,0xe6,0x8a,
+ 0x3b,0x93,0x6e,0x6d,0x75,0x03,0x02,0xa1,0x2c,0xea,0x23,0x38,0x6c,0x7a,0x7d,0x78,
+ 0xa4,0xfb,0xbd,0xc3,0x56,0x90,0xfb,0x78,0xc8,0xf3,0x65,0x69,0xee,0x65,0x70,0x32,
+ 0x08,0x40,0xd8,0x03,0xbf,0xd3,0x8a,0xb2,0x18,0xc8,0x8a,0x77,0x95,0x66,0x19,0x06,
+ 0x38,0xf0,0x7e,0xa0,0x0e,0x29,0x63,0x89,0x23,0x64,0x6b,0x42,0xe9,0x70,0xc3,0xac,
+ 0x83,0x3b,0x7d,0x82,0xfa,0x53,0xfc,0xc9,0x62,0x46,0x04,0xa1,0x81,0x50,0x33,0x61,
+ 0x7e,0x60,0xb9,0xea,0xa3,0xf5,0xac,0x6c,0xad,0x6d,0x02,0x4e,0xda,0xbd,0x8d,0x4b,
+ 0x74,0x72,0xdf,0xba,0x26,0x49,0x62,0x19,0x0f,0x9c,0x97,0xe0,0x75,0x23,0xf9,0x54,
+ 0xe9,0x3f,0x96,0x24,0x68,0xf7,0xa4,0x6e,0x30,0xa7,0x1c,0x1f,0x50,0x4d,0x67,0xaa,
+ 0x83,0x19,0x9a,0x09,0xe4,0x5d,0x8d,0x84,0x84,0x28,0x05,0x81,0xee,0x7e,0xb5,0x6d,
+ 0x70,0x89,0x0c,0xf7,0x4e,0xbe,0x56,0xe0,0xcf,0x18,0x1c,0x37,0xf8,0x74,0xeb,0x54,
+ 0xae,0xde,0xf7,0x1b,0xd1,0xb4,0xd7,0xcc,0x58,0xee,0x66,0x95,0xfc,0x87,0x7c,0x32,
+ 0x28,0x0c,0xe4,0x7d,0xff,0x00,0x6c,0x7e,0x55,0x65,0x0a,0xf9,0x8e,0x1d,0xbe,0xd8,
+ 0x80,0x6d,0x46,0xc6,0x4a,0xf1,0xc8,0xf6,0x1c,0xd5,0x29,0x0c,0x32,0xcb,0xbe,0x68,
+ 0xbc,0x98,0x54,0x92,0xdb,0x57,0x27,0x9e,0x80,0x55,0xad,0x90,0xee,0x40,0xff,0x00,
+ 0x69,0x40,0x06,0xd0,0x43,0x61,0x4f,0xd5,0x47,0xf8,0xd4,0xe8,0xd6,0xaf,0xfe,0x09,
+ 0x31,0x7a,0x3b,0x34,0xd1,0x20,0x8d,0xbe,0xca,0x18,0x34,0xd1,0x5d,0x96,0x3b,0x42,
+ 0x63,0x2e,0x07,0xad,0x53,0x69,0xac,0x45,0xd1,0x8a,0xe6,0x63,0x3c,0xee,0xdb,0x52,
+ 0x43,0x90,0x48,0x03,0x38,0x23,0xb6,0x29,0xaa,0x91,0x34,0xf1,0xc9,0x09,0xbc,0x68,
+ 0xa2,0x20,0x2e,0xe4,0x2a,0x54,0x93,0xce,0x3d,0x47,0x5a,0xb4,0xc9,0x15,0xcb,0x19,
+ 0x77,0x5b,0x24,0x6e,0xce,0x50,0x0f,0xbc,0x47,0xb8,0xed,0xd3,0x8c,0xd3,0xbb,0x7b,
+ 0x83,0xb3,0x56,0x44,0xfb,0xdf,0x1b,0xcb,0x90,0x48,0x0b,0x19,0x07,0xe6,0x20,0xf1,
+ 0x82,0x07,0xe3,0x53,0x44,0x2d,0xe2,0x97,0x6b,0x96,0x98,0x9e,0x58,0x4a,0x84,0x80,
+ 0x71,0xd8,0xfe,0x55,0x25,0x9b,0x18,0x49,0x40,0xca,0x51,0x41,0x20,0x30,0x3f,0x37,
+ 0xf8,0xd3,0xd5,0x58,0x98,0x21,0x32,0xfe,0xf5,0xb2,0x57,0x2a,0x46,0xe2,0x79,0xe4,
+ 0xd6,0x5a,0xad,0xcd,0x6d,0xd5,0x12,0x45,0x05,0xc2,0x4a,0x9e,0x7b,0xca,0x24,0xc8,
+ 0x90,0x01,0xce,0xe5,0xf7,0xfd,0x2a,0x47,0xb6,0x92,0x69,0x59,0x2c,0xed,0xf1,0x8e,
+ 0x46,0x0e,0x00,0xf7,0x19,0xef,0xd6,0x9e,0x66,0x85,0xd2,0x4b,0x9b,0x97,0x73,0x6d,
+ 0x1a,0x9d,0x9b,0x46,0x19,0x8f,0xf5,0xad,0x08,0x6c,0xcd,0xc2,0x45,0x24,0xcd,0x21,
+ 0x02,0x30,0xf9,0x56,0x2a,0x5c,0x9f,0x51,0xed,0xcd,0x3b,0x59,0xdc,0x69,0xdd,0xe9,
+ 0xa9,0x96,0xe1,0x43,0x4f,0x0c,0x52,0x38,0x90,0x20,0x70,0xc1,0x0a,0x8e,0x9d,0x30,
+ 0x6a,0x58,0x04,0x4c,0xb1,0xf9,0x13,0x94,0x62,0xe1,0xca,0x67,0x24,0x9f,0x5c,0x1e,
+ 0xf5,0xb0,0xd1,0xac,0x0f,0x1c,0x2c,0xad,0x32,0x95,0xdd,0xb1,0x81,0xe3,0xd4,0x66,
+ 0xaa,0xc3,0x11,0x9a,0xec,0x4a,0x55,0x8c,0x4a,0x33,0x93,0xf2,0xed,0xe3,0xa6,0x3b,
+ 0xd0,0xae,0xb7,0x12,0x77,0x76,0x4f,0x52,0xd9,0x64,0x9c,0xdc,0xdc,0x46,0x85,0x7e,
+ 0x65,0x2d,0x1b,0xf5,0x93,0xdf,0x1e,0xb5,0x35,0xb4,0x8f,0xb6,0x56,0x04,0xc7,0xe6,
+ 0x86,0x50,0x1c,0x10,0x10,0x67,0xa7,0xd6,0xa0,0x33,0xc9,0x20,0x32,0x46,0x6e,0x1d,
+ 0x90,0x9c,0xb0,0x4c,0x02,0x3a,0x62,0xa2,0x86,0x49,0x64,0x64,0x96,0x26,0x26,0x31,
+ 0xc2,0xaa,0x0c,0x14,0x3e,0xa4,0x1e,0xf5,0x3d,0x3b,0x06,0xb7,0xba,0xd4,0x0a,0xcc,
+ 0xb1,0x3b,0xbc,0x52,0xb9,0x51,0xb5,0x19,0x46,0x77,0x73,0xd0,0x9f,0x4e,0x2b,0x5a,
+ 0xda,0xdb,0xcd,0x02,0x43,0x19,0x2a,0xa7,0x20,0x16,0xc6,0x78,0xe8,0x05,0x40,0x91,
+ 0x32,0xc7,0x11,0x57,0x31,0x6d,0x62,0xc5,0xbc,0xdc,0x93,0x9f,0x5f,0xd6,0xb6,0x7c,
+ 0xa0,0x86,0x38,0x87,0xde,0x03,0x71,0x75,0x5e,0x06,0x7a,0x80,0x6a,0x1b,0x57,0xb2,
+ 0x60,0xf4,0x6f,0xb6,0x83,0x1d,0x84,0x65,0x43,0xc8,0x0a,0xa9,0xf9,0x16,0x43,0x92,
+ 0x3d,0x87,0xa5,0x49,0x13,0x12,0x03,0xc3,0x1c,0x6b,0x1b,0x95,0xc1,0x27,0x1c,0x63,
+ 0x9c,0x8f,0xce,0xa7,0x68,0x8c,0x71,0x34,0x4a,0x16,0x42,0x41,0x21,0x08,0xf9,0x9f,
+ 0x8e,0xb9,0xf6,0xa6,0x44,0xa6,0xdc,0xc6,0xaf,0xe6,0x3c,0xb8,0x20,0x06,0x00,0x67,
+ 0xdc,0xd4,0xad,0x37,0x1a,0xbd,0xda,0x5b,0x0e,0x40,0x51,0x23,0x58,0x83,0x95,0x2e,
+ 0x59,0x25,0xd9,0xc0,0x18,0xe4,0x1a,0x6a,0x5a,0x5b,0xee,0x73,0x25,0xcb,0x21,0x07,
+ 0x7a,0xa4,0x40,0x8f,0x34,0xe7,0xa1,0x3e,0xde,0xd4,0xbe,0x60,0x62,0x12,0x5d,0xe6,
+ 0x47,0x24,0x04,0x50,0x76,0xa8,0x15,0x64,0x24,0x4c,0xd1,0x31,0xdf,0x34,0xaa,0x0b,
+ 0x21,0x04,0x8c,0x7d,0x07,0xa7,0x34,0xaf,0x6d,0xc4,0x9a,0x76,0x4b,0x61,0x66,0xb7,
+ 0x61,0x27,0xda,0x21,0x51,0x24,0x2c,0x32,0x11,0x46,0x08,0x6f,0x7f,0x7a,0x8e,0x18,
+ 0xaf,0x1d,0xe2,0x87,0x6a,0x99,0x08,0x3b,0x41,0xc6,0x19,0x7d,0x2b,0x46,0xdd,0x7e,
+ 0x6f,0x24,0xc8,0x50,0x48,0x01,0x5c,0x1e,0x5b,0xfd,0x9c,0x76,0xab,0xcf,0x04,0x8f,
+ 0x19,0x8f,0x6c,0xa2,0x3d,0xc4,0xb0,0x55,0xc0,0x03,0xbf,0x34,0xd7,0x92,0x06,0xf4,
+ 0xb5,0x8c,0x3b,0x98,0x5f,0xc9,0x05,0x98,0x46,0x77,0x63,0x69,0x41,0xf2,0xf1,0xd8,
+ 0xfa,0x55,0x24,0xb0,0x9a,0xe7,0xcb,0xc4,0xad,0x96,0x62,0x08,0x20,0x2b,0x37,0xb8,
+ 0x3d,0xeb,0xa9,0x96,0x03,0xe4,0x34,0x6f,0x14,0x6b,0x1b,0x2e,0xd8,0xcb,0x92,0x0f,
+ 0x5e,0x32,0x69,0x2d,0xed,0x84,0x09,0x9d,0xd2,0x48,0xe5,0x71,0x2b,0x81,0xfe,0xa9,
+ 0xc7,0x65,0xf6,0xe9,0x43,0xbb,0x57,0x46,0x4e,0xc9,0x9c,0xab,0xe9,0x91,0xa5,0xc8,
+ 0x99,0xa0,0x95,0x95,0x57,0x12,0x12,0x39,0x71,0xed,0xed,0x55,0xe7,0xb1,0x49,0x6d,
+ 0xef,0x3c,0x88,0xfc,0xc6,0xf9,0x70,0xa1,0x70,0x47,0xbe,0x3b,0x62,0xbb,0x06,0x80,
+ 0x4c,0xa1,0x56,0x59,0x95,0x88,0x3b,0x5c,0x2e,0x48,0x3e,0xf4,0xe1,0x6f,0x1c,0x4e,
+ 0xad,0x34,0xd2,0xc0,0xcc,0xbc,0xca,0x0f,0x41,0xec,0x3d,0xea,0xe3,0x7b,0x5d,0x82,
+ 0x4d,0x6a,0x70,0x56,0x3a,0x0c,0xc7,0xed,0x6c,0xd1,0xcb,0x3e,0x79,0x8d,0x33,0xd7,
+ 0xb6,0x0f,0xa7,0x4a,0xe4,0x75,0xbd,0x13,0x4f,0xb5,0x84,0x5c,0xbb,0xb3,0xba,0x80,
+ 0xa2,0x24,0x5f,0xbc,0x7b,0x86,0x35,0xed,0xf1,0x89,0x04,0x2b,0x6d,0xe4,0xc8,0x1a,
+ 0x42,0x50,0x3c,0x68,0x77,0x20,0xec,0x4f,0xe7,0x5e,0x63,0xe3,0x0b,0x35,0xb7,0xd3,
+ 0x2f,0xd9,0x10,0x5b,0xf9,0x2b,0xb8,0x31,0x7c,0xb3,0x1c,0xf7,0x1e,0xf9,0xaf,0xb6,
+ 0xe1,0x28,0x73,0xe2,0xa1,0x1b,0xea,0xdd,0x8f,0x9a,0xe2,0x1a,0xce,0x96,0x1a,0x53,
+ 0x4b,0x64,0xd9,0xf2,0xaf,0x89,0x2e,0x61,0xb9,0x9a,0x25,0x8a,0x05,0x81,0x2d,0xe4,
+ 0x25,0x63,0x50,0x06,0x38,0xe7,0x35,0xcc,0xb2,0x31,0x55,0xb9,0x1e,0x60,0x57,0x25,
+ 0x55,0x00,0xe0,0x0f,0x5c,0x56,0x97,0xdb,0x56,0x27,0x95,0xaf,0x1e,0x21,0x79,0x2b,
+ 0xef,0x78,0x99,0x0f,0xee,0xfd,0x85,0x56,0xb6,0xd8,0x43,0x34,0x2d,0x22,0x96,0xea,
+ 0x4b,0x67,0x3e,0xc3,0xd0,0x73,0x5f,0xdc,0xd9,0x75,0x38,0xd3,0xa3,0x1a,0x71,0x7a,
+ 0x24,0x7f,0x20,0xe3,0xaa,0xca,0x75,0x5d,0x49,0xbd,0x58,0xb1,0x46,0x52,0x16,0x95,
+ 0x0c,0x41,0xcf,0x47,0x55,0xc6,0x0f,0x61,0x9a,0x8f,0xfd,0x60,0x39,0x8f,0x0e,0x83,
+ 0x00,0xb3,0x60,0x63,0xb9,0x35,0x79,0x23,0x90,0x85,0x8c,0x2c,0x6a,0xca,0x4b,0xa9,
+ 0x23,0x21,0xbd,0x8d,0x56,0xc4,0x85,0x55,0xa6,0x89,0x1c,0x4c,0x19,0x98,0x29,0xca,
+ 0x81,0xe9,0x5e,0x82,0xd3,0x46,0x79,0xb7,0xd6,0xec,0xad,0x2c,0x71,0x43,0xb9,0x6e,
+ 0x5b,0xef,0x36,0xe2,0x4a,0xe7,0x77,0xbe,0x7d,0x29,0xb1,0xbf,0x97,0x2c,0xd1,0x42,
+ 0x60,0x94,0x0c,0x15,0xc8,0xe4,0x91,0xd8,0x03,0xf8,0x54,0xf2,0xc4,0xd2,0xed,0x46,
+ 0x78,0xd0,0x07,0x00,0x10,0x00,0x03,0x9e,0xf5,0x4a,0x79,0x5a,0x07,0xfb,0x43,0xca,
+ 0x7c,0xdd,0xc5,0x87,0x00,0xf7,0xe8,0x2a,0x2a,0xcd,0x25,0xa9,0xb5,0x3b,0xc9,0xd8,
+ 0xa9,0x73,0x71,0xb0,0xba,0xc7,0x19,0xf2,0xc2,0x92,0xe4,0x8e,0x5b,0x3d,0x4e,0x3b,
+ 0x0a,0xe4,0x6e,0x89,0x80,0x30,0x81,0xcc,0xae,0x18,0x2a,0xbc,0x87,0x84,0x5c,0xf2,
+ 0x6b,0x6e,0xfe,0x48,0xcc,0xb7,0x0b,0x14,0xc6,0x62,0xca,0x37,0x6e,0xc8,0x31,0x82,
+ 0x7d,0x3d,0x6b,0x9e,0x9c,0xc6,0x8c,0xd0,0x22,0xc9,0x33,0x91,0x9f,0x90,0xf2,0x4e,
+ 0x3b,0x9a,0xf2,0xab,0xe2,0x22,0xde,0x87,0xbf,0x81,0xa3,0x6e,0x86,0x14,0x92,0x49,
+ 0x34,0xf2,0x62,0xe1,0x99,0x09,0x2c,0x02,0x81,0x83,0xcf,0x51,0x51,0x35,0xd4,0x50,
+ 0xc4,0x89,0x71,0x26,0xc8,0x99,0x4b,0x02,0x14,0x6d,0x53,0xfd,0xd3,0xdf,0x9a,0x1d,
+ 0xfe,0x79,0x22,0x8d,0x23,0x24,0x10,0x36,0xa8,0xc9,0x8f,0xf1,0xf4,0xe6,0xb0,0xae,
+ 0x15,0x71,0x38,0xfb,0x9d,0x94,0x96,0xc8,0x18,0xf6,0xf4,0xed,0x5e,0x3d,0x5a,0xd6,
+ 0x7a,0x6c,0x7d,0x4d,0x0a,0x2a,0x4a,0xdd,0x0d,0xcf,0xed,0x0b,0x67,0x89,0x52,0x38,
+ 0xf6,0x4c,0x79,0x67,0x2b,0xc1,0x20,0xf6,0xa7,0x25,0xc2,0x4b,0x16,0x51,0x97,0xcb,
+ 0x2c,0x18,0x02,0x39,0x2b,0x9e,0x40,0xae,0x59,0x8e,0xc8,0xfc,0xe8,0xf2,0xcd,0x90,
+ 0x58,0x32,0x1d,0xcb,0xce,0x3f,0x2a,0xb5,0xe6,0x4b,0x1c,0x91,0xf9,0x1b,0x38,0x00,
+ 0x31,0x75,0x1f,0x2f,0x1d,0xbd,0xab,0x9d,0x57,0x77,0xd8,0xe9,0x96,0x0d,0x25,0xa1,
+ 0xd0,0x3d,0xc2,0x22,0xa3,0x79,0x42,0x71,0x9e,0x40,0x53,0x8c,0xf5,0xe7,0xf0,0xa9,
+ 0xad,0x9a,0xde,0x46,0x3e,0x74,0x72,0xec,0x60,0x64,0x20,0x92,0x18,0x8e,0xa3,0x8a,
+ 0xc3,0x17,0x8f,0xb4,0xf9,0xb2,0x61,0x49,0xc0,0x2a,0xb8,0x0a,0x7e,0x9f,0xd6,0xb5,
+ 0x61,0xb9,0x53,0x1b,0x48,0x64,0x96,0xe1,0x11,0xb0,0xca,0x0f,0xce,0x47,0xfb,0x27,
+ 0xf1,0x15,0xdb,0x4e,0x69,0xbb,0xdc,0xe4,0xa9,0x45,0xa4,0x5f,0x4f,0x2c,0xc6,0xe5,
+ 0x81,0xde,0xee,0x1d,0x57,0x39,0x2b,0xef,0x5b,0x88,0xa8,0x16,0x36,0x69,0x43,0x86,
+ 0x60,0xc5,0x81,0x3f,0x37,0x6e,0x07,0x63,0x59,0x6b,0x25,0xbf,0x99,0x6b,0xb1,0x64,
+ 0x89,0x9d,0x19,0xd8,0xe3,0x88,0xf9,0xe8,0x4d,0x6c,0xc4,0x1d,0x84,0x46,0x23,0x10,
+ 0x66,0x04,0x72,0xa4,0xee,0x39,0xee,0x7d,0x79,0xaf,0x4e,0x8e,0xbb,0x9e,0x4e,0x2a,
+ 0x4d,0x2b,0x33,0x4e,0x06,0xc4,0x9b,0x80,0x2c,0x19,0x48,0xdc,0x0f,0x2a,0x0f,0x62,
+ 0x2a,0xc4,0x7e,0x5a,0x02,0x92,0xc7,0x1c,0x51,0x2e,0x46,0x58,0x72,0x78,0xf4,0xa6,
+ 0xc1,0x6e,0xcf,0x98,0xa4,0x91,0x43,0x2a,0x86,0x63,0x8c,0x63,0xdf,0x3f,0x81,0xab,
+ 0x70,0x46,0x50,0xa7,0x96,0x18,0x2b,0x36,0x00,0x60,0x09,0x7f,0xf3,0x9a,0xf5,0x69,
+ 0xed,0xcc,0x8f,0x0e,0xac,0x92,0xd8,0x8f,0x7f,0x9b,0xb2,0x64,0x6c,0x42,0xe3,0xe4,
+ 0x52,0x0f,0xc8,0x07,0xa8,0xfc,0xaa,0x78,0xa0,0x67,0x69,0x11,0x01,0x91,0x80,0xc8,
+ 0x52,0xa7,0xe5,0x1d,0x73,0x9a,0x91,0x6d,0xe0,0x42,0xad,0x82,0x58,0x12,0xd9,0x07,
+ 0x18,0xe7,0xa0,0x14,0xf9,0x0f,0x98,0x10,0x99,0xa5,0xb7,0x42,0xc0,0x15,0x66,0xc8,
+ 0x61,0x9e,0x87,0x1d,0xeb,0xa5,0x6a,0xb4,0x38,0xe5,0x34,0xf4,0x43,0x7c,0xa8,0x58,
+ 0x2e,0xd7,0x99,0xc3,0xf3,0x80,0xd8,0xcb,0x75,0xc9,0xa1,0x11,0x5c,0x07,0x2f,0xb4,
+ 0x29,0xdb,0x21,0x23,0x18,0xe3,0xd2,0x9c,0x30,0x8a,0xec,0x77,0x37,0xca,0x43,0x48,
+ 0xbd,0xbe,0xa0,0x54,0xab,0xe5,0x2c,0x4a,0x1c,0xa8,0x4d,0xd8,0x2b,0xbb,0x39,0xcf,
+ 0xf5,0xaa,0xb5,0xcc,0x5c,0x99,0x54,0x05,0x2b,0xbc,0x33,0xc8,0xa0,0x65,0x50,0x8e,
+ 0x87,0xd4,0x9a,0x0c,0x32,0xce,0x63,0x48,0xc3,0xc5,0x32,0x92,0x4a,0xa3,0x00,0x1b,
+ 0x8e,0xbe,0xe7,0xad,0x4a,0x58,0x49,0x0b,0x34,0x78,0xda,0xac,0x15,0x8b,0x1e,0x83,
+ 0xfc,0xe6,0x9e,0xe3,0xe7,0x67,0x3b,0x63,0x40,0xdb,0x95,0x76,0xe7,0x8f,0xc3,0xf1,
+ 0xaa,0x5a,0x3b,0xfa,0x87,0x33,0x5a,0x91,0xac,0x03,0xcc,0x01,0x63,0x81,0xa4,0x75,
+ 0x19,0x3e,0x84,0x7b,0x74,0xcf,0x4a,0x8e,0x34,0x76,0x94,0x01,0x12,0xec,0x04,0xe0,
+ 0x8c,0x02,0xc3,0xb8,0x14,0xbb,0xa3,0x2e,0x5e,0x34,0x96,0x58,0x40,0xc9,0x20,0x60,
+ 0xa8,0xf5,0xc5,0x3d,0x18,0x7c,0x87,0x63,0xa3,0x02,0x19,0x0a,0x9e,0xb9,0x1e,0xff,
+ 0x00,0x5a,0x2d,0x6d,0x3a,0x8d,0xb7,0xd4,0x8a,0xe0,0x19,0x9a,0x1c,0x08,0xe2,0x65,
+ 0x24,0x92,0x17,0xee,0xaf,0xa6,0x3b,0x9e,0xb4,0x60,0x22,0xbb,0x4c,0xa8,0xc0,0x80,
+ 0x76,0x97,0x3c,0x0e,0xdc,0xfa,0xd5,0x97,0xb9,0x56,0x05,0x4b,0x15,0x0a,0xd9,0x6d,
+ 0xcb,0x8c,0x1f,0x4c,0xfb,0xd0,0x52,0x20,0xa1,0x23,0x5f,0x33,0x7f,0x24,0x8e,0x8a,
+ 0x7a,0xf1,0x50,0xed,0x60,0xe6,0x76,0x49,0x95,0x11,0x4f,0x9f,0xbc,0x46,0xe0,0x9c,
+ 0xb3,0x33,0x72,0x00,0x23,0xa6,0x2a,0x48,0x95,0x84,0x2b,0x95,0x2c,0x81,0x98,0x30,
+ 0xc7,0x1c,0x74,0x6c,0x55,0x81,0x39,0x28,0xc2,0x28,0xd9,0xca,0x7c,0xae,0x49,0x23,
+ 0x03,0xfb,0xc7,0xf3,0xa6,0x48,0x91,0xed,0x63,0x0c,0xa5,0xa0,0x27,0x6a,0x93,0xfc,
+ 0x27,0xbf,0xe7,0x4f,0x96,0xca,0xe0,0xe4,0xdb,0xd4,0xaf,0x3a,0xb9,0x91,0x8c,0x6e,
+ 0x25,0x84,0xf2,0x59,0x46,0x02,0x8f,0x42,0x29,0xca,0xaf,0x1a,0x2c,0x0c,0x18,0xf3,
+ 0xf3,0x33,0x8c,0xe5,0x7d,0xaa,0x79,0x3f,0xe5,0xbd,0xc3,0xa1,0x57,0x2a,0x0e,0xc8,
+ 0xc8,0xda,0x38,0xc0,0xcf,0xbd,0x43,0x8f,0x2d,0x08,0x4f,0x94,0x90,0x36,0x86,0x27,
+ 0x29,0x9e,0xd9,0xac,0x5a,0x6b,0x46,0x3e,0x66,0xd5,0x81,0xd8,0x9d,0xb1,0xab,0x80,
+ 0xaa,0x70,0x48,0x51,0x93,0xef,0x50,0x94,0x32,0xb5,0xc3,0x86,0x45,0x8c,0x31,0x08,
+ 0xb9,0x3d,0x31,0x4a,0xdb,0x64,0x91,0x4f,0x98,0xe8,0x89,0xc1,0xe7,0x2c,0xc7,0x1d,
+ 0xcf,0xa7,0xf8,0xd4,0xd2,0x33,0x81,0x2b,0x31,0x8c,0x60,0x85,0x52,0x46,0xde,0x4f,
+ 0xa6,0x2a,0x24,0xb4,0xb0,0xd6,0x9b,0x10,0xbe,0xd4,0x89,0x26,0x21,0x5e,0x3c,0x6d,
+ 0x27,0xae,0x46,0x31,0xd2,0x9e,0x21,0x8e,0x48,0xd1,0x58,0xfe,0xf0,0x49,0x94,0x60,
+ 0x00,0x18,0xc7,0x43,0xf9,0xd4,0x65,0xe4,0x85,0xdc,0x3a,0x3b,0x28,0x20,0x31,0x55,
+ 0xeb,0xcd,0x58,0x78,0xe4,0xd8,0x89,0x16,0xd3,0x03,0x12,0x49,0x51,0xca,0x9c,0xfa,
+ 0xd4,0xc9,0x36,0x92,0x29,0xbb,0x34,0x54,0x71,0x1f,0x99,0x20,0x50,0x59,0xd0,0x82,
+ 0x1b,0x04,0xee,0xf5,0x18,0xfc,0x2a,0x10,0x8c,0xd8,0x71,0x1b,0x27,0x19,0x55,0x00,
+ 0x63,0x6f,0xf9,0x35,0x61,0xd8,0xab,0xf9,0x3b,0x40,0x51,0xc8,0x7d,0xc7,0x0d,0xfe,
+ 0xce,0x7f,0x2a,0x4f,0xb3,0xa4,0x99,0x0d,0x33,0xab,0xa0,0xda,0x06,0xe1,0x84,0xff,
+ 0x00,0x1a,0xe5,0x95,0xbe,0x24,0x6a,0x9e,0x80,0xa9,0x84,0x90,0x4a,0x16,0x04,0x58,
+ 0x7c,0xc0,0xe4,0x83,0xb3,0x27,0xb5,0x42,0xc1,0xc8,0xc3,0x32,0xe7,0xd8,0x0f,0x9b,
+ 0x8f,0x4f,0xeb,0x53,0x15,0x9a,0x2f,0x2d,0x8c,0x42,0x58,0x9b,0x81,0x23,0x01,0xf3,
+ 0x63,0xb6,0x3d,0x2a,0x32,0xeb,0x87,0x7d,0x87,0x7b,0x0c,0x12,0x4e,0x00,0xe7,0xa0,
+ 0xa9,0xa8,0x92,0xdc,0xa8,0xbb,0xbd,0x08,0x27,0x8c,0x7e,0xed,0x80,0xf3,0x10,0xaf,
+ 0x00,0x8f,0x9b,0x77,0xa5,0x66,0xc5,0x2c,0x57,0x38,0x00,0xc6,0xcc,0x8f,0x90,0x54,
+ 0x8c,0x9f,0x62,0x2b,0x42,0xee,0x45,0xf2,0xb6,0x3c,0x92,0x44,0x8a,0x01,0x2a,0xa4,
+ 0x9d,0xa7,0x3f,0xc2,0x7f,0x0a,0xa5,0xa6,0x23,0xb5,0xc8,0x22,0x05,0x46,0x70,0x5c,
+ 0x30,0x00,0x17,0x6f,0x56,0x3d,0xb1,0x5f,0x95,0xf8,0x93,0x8f,0x86,0x1f,0x01,0x39,
+ 0xc9,0xea,0x8f,0xd2,0xbc,0x34,0xcb,0xe5,0x8a,0xcc,0xa1,0x4f,0xa7,0x52,0xc2,0x16,
+ 0x17,0xc5,0xe0,0x3b,0xae,0x18,0xec,0x74,0x2b,0x8d,0xe7,0xb0,0xc7,0x4c,0x57,0x98,
+ 0x7c,0x50,0x96,0x08,0x73,0x69,0x3a,0xf9,0xa4,0x7f,0xad,0x68,0xdb,0x25,0x1b,0x1f,
+ 0x70,0x11,0xdb,0x91,0x5e,0xb2,0xb7,0x71,0xda,0xcb,0x3c,0xf7,0x8c,0x2d,0x22,0x45,
+ 0x20,0x3b,0x60,0x2b,0x49,0x8e,0x09,0x3f,0x95,0x7c,0xa7,0xe3,0x1d,0x5a,0xea,0xeb,
+ 0x5b,0xd4,0xb4,0xf9,0x5a,0x4d,0xe6,0x40,0x23,0x9d,0x48,0x29,0x23,0x60,0x1c,0x81,
+ 0xd3,0xd6,0xbf,0x88,0x70,0x3f,0xbd,0xae,0xe6,0xdf,0x99,0xfd,0xc9,0x99,0x35,0x47,
+ 0x0c,0xa9,0xbd,0xb6,0x38,0x0f,0x3a,0x25,0x92,0x65,0x89,0x84,0xea,0xcf,0xb9,0x5d,
+ 0xc1,0x04,0x2f,0xf7,0x4f,0xd2,0x89,0x1e,0x36,0x45,0xde,0xce,0x54,0x13,0x93,0x8e,
+ 0x57,0xdb,0x3e,0x9c,0xd4,0xb3,0xc3,0x1e,0x43,0x2c,0x2d,0x14,0xe3,0x3b,0xc1,0x38,
+ 0xc8,0x3d,0x0f,0xf3,0xa8,0x4c,0x22,0x38,0x1c,0x12,0x77,0x13,0xb4,0x64,0x7d,0xff,
+ 0x00,0x6c,0xfb,0x57,0xd2,0xd9,0x2b,0x24,0x7c,0x17,0xc2,0xec,0x3c,0xcd,0x24,0x61,
+ 0x24,0xb7,0xb7,0x4f,0x38,0x9c,0x00,0xdd,0x09,0xed,0x9a,0xa0,0x3c,0xd0,0x5b,0xcd,
+ 0x55,0x0e,0x41,0x06,0x35,0xfb,0xbf,0x85,0x58,0x69,0x23,0x58,0x41,0x7b,0x96,0xde,
+ 0xaa,0x40,0x56,0xec,0xa7,0xd0,0xfa,0xe6,0xa1,0x82,0x21,0x6d,0x08,0x66,0x7b,0xab,
+ 0xc0,0x48,0x90,0x4e,0xe7,0xe6,0x45,0xc6,0x36,0xf3,0xef,0x8a,0x13,0x56,0x2a,0x4d,
+ 0xdc,0x8a,0x72,0xc1,0xbc,0xc0,0x16,0x67,0x11,0x80,0x14,0x0c,0x79,0x7e,0xe4,0xd5,
+ 0x95,0x99,0x15,0x00,0x86,0x35,0x91,0xdc,0xe2,0x32,0x0f,0x04,0xf7,0xa6,0xec,0x01,
+ 0xd5,0x54,0xb1,0x04,0x16,0xce,0x0f,0x4f,0xf6,0xaa,0x05,0x22,0x68,0xce,0xd8,0xde,
+ 0x68,0xce,0x43,0x32,0x1c,0x6d,0x1e,0xdf,0xe3,0x55,0xa6,0xc4,0x4a,0xe9,0xde,0xe6,
+ 0x94,0x91,0xf0,0x24,0x90,0xbb,0x31,0x5d,0xcd,0xb4,0x63,0x77,0xae,0x69,0x77,0xa1,
+ 0xfb,0x0c,0x91,0xbf,0x93,0x21,0x7d,0x9b,0x31,0x93,0x27,0xb0,0xa8,0x7f,0xd1,0xe2,
+ 0x8a,0x01,0xbd,0xd6,0xe4,0x00,0x42,0x64,0x9c,0x8f,0x73,0x52,0xdb,0x30,0x56,0xdf,
+ 0x11,0x67,0x85,0x8e,0x63,0x95,0x9b,0x07,0x77,0x5e,0x3d,0x29,0xe9,0xbb,0x33,0x6d,
+ 0x26,0xd2,0x64,0x87,0xc9,0x32,0xc9,0x07,0xce,0x42,0xbe,0x11,0x40,0xc6,0x70,0x7f,
+ 0x8b,0xd3,0xbd,0x3a,0x1f,0x35,0x65,0x3e,0x6e,0x50,0x6f,0x3b,0x4a,0x81,0xc7,0xa0,
+ 0x02,0x9b,0x29,0xb9,0x31,0xc9,0x00,0x78,0x83,0x74,0x46,0x50,0x01,0x1f,0x5c,0xd4,
+ 0x51,0x4b,0x22,0x85,0xb3,0x04,0x24,0x9b,0x77,0x49,0x23,0x0f,0xbb,0xeb,0xc9,0xa4,
+ 0xae,0xd6,0xa3,0x4e,0xd2,0x44,0x97,0x11,0x5c,0x16,0x7b,0x8f,0x2b,0xe4,0x38,0x65,
+ 0x2c,0xf9,0x04,0x7a,0x11,0xeb,0xcd,0x3d,0x67,0xb7,0x51,0xe6,0x0c,0x25,0xa1,0x3b,
+ 0xd9,0x19,0x39,0xdc,0x3f,0xfd,0x54,0xe4,0x8e,0xcc,0x25,0xb7,0x94,0x26,0xf2,0xcb,
+ 0x13,0xb9,0xd8,0x92,0x4f,0xb0,0x35,0x04,0xb2,0x49,0x88,0x0c,0x33,0x08,0x95,0x9c,
+ 0xa1,0xca,0x83,0x90,0x7b,0x1f,0xd6,0xb2,0xde,0xe9,0x93,0x76,0x95,0xdd,0xae,0x68,
+ 0xb5,0xea,0xcc,0x24,0x36,0xf0,0xc7,0x24,0x45,0x43,0xc8,0xa4,0x6d,0xe3,0xb1,0xaa,
+ 0xd2,0x9d,0xf7,0x2c,0xd8,0x2c,0x5d,0x41,0x85,0x40,0x23,0xaf,0x50,0x05,0x2c,0x51,
+ 0x96,0x6d,0xf1,0x2a,0x2f,0x99,0xf2,0x8c,0x31,0x6d,0xd8,0xed,0xed,0x4d,0x8e,0x06,
+ 0x2d,0x6f,0x1a,0xbc,0x92,0x30,0x39,0x0e,0x3f,0x80,0x0e,0xe6,0xa5,0xd9,0xbb,0x83,
+ 0xba,0x63,0xe1,0x46,0x69,0xe5,0x9a,0x78,0xda,0x06,0x0c,0x32,0x8a,0x32,0x08,0xe9,
+ 0x91,0xed,0x56,0xad,0x63,0x94,0xf9,0xb3,0xc6,0x72,0x44,0xa0,0x81,0x90,0x0b,0x0a,
+ 0x7a,0xa4,0x39,0x96,0x45,0x99,0xb6,0xc8,0x32,0x58,0x2f,0xe8,0x7d,0x0d,0x48,0xf0,
+ 0xa6,0x03,0x16,0x22,0x00,0x01,0x27,0x6f,0x47,0xec,0x09,0xfc,0xeb,0x16,0xd0,0xd7,
+ 0x46,0x87,0xfd,0x94,0x47,0x6f,0x77,0x71,0x1c,0x91,0xc5,0xe6,0xb6,0xf5,0x8d,0xdc,
+ 0xb1,0x42,0x0e,0x2a,0x78,0x62,0x90,0x96,0x86,0xed,0x0a,0x66,0x3f,0x33,0x70,0x18,
+ 0xe9,0xd0,0xd4,0x42,0xce,0xea,0x5b,0x81,0x31,0x36,0xf3,0xdb,0xc6,0x40,0x08,0x10,
+ 0x92,0xe7,0xdc,0xf3,0xc5,0x74,0x32,0x24,0x89,0x14,0x6d,0x24,0x61,0xe7,0x41,0xe5,
+ 0xa3,0x60,0x00,0xd9,0xf5,0x03,0xb8,0xcd,0x28,0xdd,0x26,0x9e,0xac,0xcd,0xeb,0xae,
+ 0xc6,0x65,0xba,0x5b,0x42,0x19,0x9a,0x44,0x46,0x72,0x24,0x91,0x51,0x72,0x1d,0x80,
+ 0xe9,0xc7,0x4c,0x8a,0xd9,0x8a,0xd9,0xa4,0x32,0x4e,0xb1,0x85,0x24,0xee,0x11,0x81,
+ 0x80,0xca,0x7a,0xfc,0xdd,0xa9,0x91,0x59,0x5c,0xc9,0x3d,0xb0,0xb4,0x16,0xf1,0x95,
+ 0x04,0xc9,0x1c,0x83,0xa9,0xf5,0x1f,0xe1,0x5b,0x16,0xb1,0x5c,0x25,0xb8,0xb6,0x95,
+ 0x5c,0xc6,0x37,0x10,0x50,0x83,0x93,0x9e,0xa6,0xa9,0x35,0xab,0x47,0x3c,0x93,0x7d,
+ 0x35,0x26,0x8e,0xdd,0x21,0x87,0xcb,0x57,0xdd,0xe6,0x2e,0x47,0x6d,0xbe,0xd9,0xfc,
+ 0xaa,0xe4,0x20,0x45,0x6d,0x6b,0x04,0xa5,0xa7,0xdb,0xd4,0xe0,0x1c,0x8c,0xf0,0x29,
+ 0x0a,0x04,0x31,0xc3,0x02,0x03,0x0a,0xae,0xec,0x93,0xf7,0x8e,0x2a,0x78,0x36,0x2b,
+ 0x2a,0xc4,0xb9,0x68,0xc7,0xcc,0x48,0xe7,0xf2,0xad,0xe3,0xbe,0xda,0x09,0x6a,0x4e,
+ 0xd6,0xf2,0xc7,0xf6,0x97,0xf3,0x67,0x95,0x37,0xe6,0x31,0x8c,0x28,0xc8,0xe9,0x8a,
+ 0xa3,0x26,0xc6,0x50,0xcf,0x1c,0xa1,0x49,0xce,0xd2,0x00,0x0b,0xee,0x6a,0xca,0xc9,
+ 0x21,0x25,0x8b,0x48,0xc1,0x38,0x40,0x73,0xb4,0x9a,0x89,0xd9,0x8a,0xe2,0x48,0x56,
+ 0x71,0x8e,0x65,0x63,0x85,0x1e,0xbc,0x56,0x91,0xb5,0xcc,0x56,0xd6,0x65,0x6f,0xdc,
+ 0x90,0x92,0xa2,0x9d,0xbb,0xb1,0xf2,0x9f,0xbc,0x3d,0x45,0x4a,0x84,0xc6,0xca,0xfb,
+ 0x0a,0xa9,0x6c,0x90,0xe3,0x9f,0x4e,0x0f,0xe5,0x40,0xb3,0x44,0x75,0x96,0x39,0xd9,
+ 0x6d,0x99,0x37,0x15,0x23,0x2a,0xa4,0x0e,0xd5,0x2b,0xda,0x99,0x00,0x43,0x77,0xbc,
+ 0xb0,0xcb,0x48,0xc0,0xe7,0x23,0xa0,0x51,0xd3,0x15,0xa2,0x5d,0xcd,0x55,0xd2,0xd4,
+ 0xaa,0x65,0x96,0x4b,0xbd,0x87,0x60,0x66,0xf9,0x40,0x04,0x0c,0x83,0xdf,0x35,0x78,
+ 0x40,0xbc,0x34,0xcd,0x1c,0x4e,0xa7,0x6a,0x92,0x79,0x23,0xfd,0x91,0xf8,0x0a,0xb1,
+ 0x65,0x60,0x8d,0x12,0x4e,0xb1,0xfc,0xce,0xa0,0xab,0x33,0x0c,0x9e,0x7a,0x81,0xf8,
+ 0x1a,0x97,0xec,0xd1,0x97,0x71,0x00,0x69,0x25,0x2b,0x97,0x66,0x03,0x93,0xeb,0x9e,
+ 0xdd,0x2a,0xd4,0x93,0x76,0x44,0x36,0xd9,0x5b,0x2e,0xe9,0x03,0xba,0x94,0x50,0x48,
+ 0xc2,0x8e,0x01,0x3e,0xa7,0xd6,0x9d,0x1a,0xa2,0xc5,0x2b,0x06,0x59,0x58,0x0c,0x15,
+ 0x61,0xc9,0x3f,0xec,0x9e,0xd4,0xcb,0x99,0x26,0xb5,0x8c,0xab,0x8f,0xdc,0xed,0x0f,
+ 0x21,0x2f,0xf2,0x9f,0xfe,0xbd,0x62,0x0d,0x59,0x27,0x45,0x9d,0x10,0xa9,0x04,0x90,
+ 0x58,0xf2,0x4f,0x6a,0x7d,0x35,0x13,0x76,0x76,0x7b,0x97,0x67,0x76,0xdc,0x54,0xc8,
+ 0x64,0x98,0x00,0x00,0x03,0x38,0xf5,0xe3,0xbd,0x50,0xbb,0xba,0xf2,0x24,0xde,0x44,
+ 0x91,0xae,0x15,0x91,0x82,0x74,0x3d,0xc0,0xa8,0x2e,0x59,0xed,0xdd,0xa5,0x0c,0x8c,
+ 0x76,0x83,0x80,0x4e,0x14,0xd6,0x65,0xce,0xa8,0x24,0x84,0xc9,0x24,0xed,0x3b,0x29,
+ 0x04,0xa2,0x13,0x83,0x83,0xcf,0xe1,0x59,0x37,0x61,0x68,0x9e,0xba,0x15,0xaf,0x35,
+ 0x49,0xe7,0xf3,0xad,0xde,0x36,0x85,0x96,0x5d,0xcc,0xcc,0x06,0x5c,0x1c,0x72,0x3d,
+ 0xbe,0xb5,0x89,0x71,0xe7,0xa3,0x98,0x5a,0x7d,0xca,0x49,0x25,0x88,0x00,0x01,0xe8,
+ 0x00,0xa7,0xdc,0xcb,0x25,0xc3,0x17,0x57,0x31,0xa1,0x6d,0xfb,0x1b,0xab,0x8e,0xc0,
+ 0x54,0x11,0xb1,0x11,0x83,0xfe,0xa7,0x73,0x6d,0x55,0x24,0x1d,0xbd,0xf1,0x49,0x34,
+ 0xb5,0x63,0xd5,0xbd,0x0a,0xf7,0x11,0xc2,0x8a,0xd2,0x4d,0xfb,0xb9,0xe4,0x1b,0x30,
+ 0x0e,0x03,0x7a,0x60,0x76,0x3c,0xd4,0x12,0xc0,0x8b,0x34,0x68,0xfe,0x6e,0x59,0x44,
+ 0x8c,0xb1,0x9c,0x83,0x8e,0xa3,0x77,0x6a,0xb3,0x33,0x29,0x02,0x25,0x73,0xb8,0x36,
+ 0xe7,0x2c,0xbf,0x78,0x7a,0xe4,0xfd,0x2a,0xb0,0x8c,0x80,0x17,0xf7,0x92,0x31,0x7c,
+ 0x17,0x5c,0x7c,0xc0,0xf4,0x18,0xed,0x4e,0xcb,0x4b,0x6e,0x68,0xec,0xba,0x12,0x44,
+ 0xc9,0x00,0x9e,0x45,0x66,0x50,0xf2,0x86,0xda,0xa4,0x10,0xa0,0xf6,0x04,0xfa,0xd2,
+ 0xbc,0x49,0x83,0x22,0x4d,0x80,0x5f,0x6c,0x79,0x6c,0x10,0x3b,0x91,0xed,0xd6,0x96,
+ 0x3f,0x2a,0x25,0x4f,0x2d,0x8a,0x80,0xdb,0x55,0x58,0x70,0x4e,0x3a,0x91,0xe9,0xcd,
+ 0x32,0x68,0xf6,0x42,0x1b,0xf7,0x7d,0x76,0xb1,0xc1,0x25,0x89,0xa5,0xb3,0xb0,0x35,
+ 0xa6,0xa5,0x84,0x0d,0x75,0x23,0x24,0x92,0xb4,0xa4,0x28,0x25,0x98,0x6d,0x04,0x8e,
+ 0xc7,0xd6,0xa3,0xf3,0x21,0x91,0xd1,0x04,0xc2,0x1b,0x86,0x23,0x2c,0x46,0x01,0xfa,
+ 0x0f,0x4e,0xb4,0x05,0xf3,0xad,0xed,0x5a,0x45,0x24,0x97,0xf9,0x40,0x6c,0x63,0x1d,
+ 0xf1,0x53,0x00,0x26,0x12,0x6d,0x30,0xc8,0x8a,0x31,0xf3,0x2f,0xdc,0xfa,0x1e,0xf9,
+ 0xc0,0xa1,0x19,0xbd,0x75,0xe8,0x4f,0x04,0x32,0x36,0xd6,0xb8,0x48,0x8d,0xb8,0x62,
+ 0x7c,0xc6,0x07,0x73,0x0c,0xf4,0xcd,0x58,0xdb,0xf6,0x89,0x54,0x5a,0xc7,0x21,0xf3,
+ 0x01,0x91,0x83,0x11,0x94,0x3d,0x87,0xd6,0xaa,0x2d,0xd2,0x98,0xbe,0xfe,0x55,0x53,
+ 0x74,0x7b,0xf3,0x8c,0x77,0x03,0xde,0xb4,0xa1,0xd4,0xa3,0x96,0xd5,0x25,0x68,0xe2,
+ 0x32,0xf9,0x7e,0x66,0xd5,0xf9,0x5f,0x3d,0x32,0x69,0x5f,0xaa,0x07,0xb5,0xd3,0x32,
+ 0x27,0x8d,0x96,0x1d,0x8a,0xac,0x8c,0x55,0x89,0x62,0x37,0x64,0x7f,0x43,0x59,0xd6,
+ 0xec,0x9b,0x06,0x0c,0x9f,0x3b,0x01,0xe6,0xe7,0x86,0xcf,0x18,0xc7,0xb5,0x5f,0x92,
+ 0xe6,0x43,0x12,0x3d,0xbb,0xb4,0x77,0x04,0x12,0xa0,0x10,0x46,0xd2,0x3a,0xe3,0xe9,
+ 0x9a,0xaf,0x10,0x84,0x79,0x51,0x43,0x2e,0xe6,0x61,0xe6,0x04,0xce,0x00,0x03,0xad,
+ 0x36,0xf5,0x6e,0xc4,0xea,0xf4,0x8f,0x62,0xb5,0xca,0xc8,0xf6,0xe2,0xe1,0x23,0x99,
+ 0xd9,0x72,0xb3,0x39,0x38,0xf2,0xc0,0x3d,0x73,0xef,0x53,0x79,0x93,0x1f,0x20,0x6e,
+ 0x06,0x39,0x41,0x20,0x85,0xce,0x17,0xdc,0xf5,0xcf,0x02,0x97,0xe5,0x25,0x21,0x45,
+ 0x61,0x10,0x70,0xcc,0x15,0xb2,0xa7,0xda,0xa6,0x89,0x03,0x3b,0x48,0x91,0xca,0x96,
+ 0xc8,0x4a,0xa6,0xf6,0xe5,0xce,0x3a,0x00,0x3a,0x51,0x7b,0x59,0x31,0xb6,0x9b,0xd3,
+ 0xcb,0xfe,0x09,0x55,0xa6,0xb5,0x99,0xe3,0x8b,0x63,0x6c,0xdd,0x96,0x2a,0x39,0x60,
+ 0x07,0x7c,0x74,0xef,0x42,0x08,0x19,0x03,0xa3,0xcf,0xb0,0x92,0xc0,0xc8,0x3a,0x7d,
+ 0x6a,0x41,0x33,0x47,0x34,0x51,0xc7,0x69,0x6c,0x9b,0xc1,0x62,0xca,0xdd,0x0e,0x3b,
+ 0xfb,0xd4,0x6a,0x7f,0x73,0xe6,0x4d,0x91,0x2b,0x36,0x0e,0x07,0xde,0xc7,0x6c,0x76,
+ 0xa3,0x44,0x0e,0xca,0xf7,0xb0,0xa5,0xa2,0x59,0x63,0x97,0xcd,0x56,0x97,0x70,0xca,
+ 0xa9,0xe5,0x97,0xdf,0xf2,0xa6,0xee,0x8a,0x58,0xc3,0x09,0x95,0x22,0x47,0xdc,0x14,
+ 0x75,0x45,0x27,0xaf,0xbd,0x24,0x5f,0xe9,0x12,0xf9,0x8f,0x6d,0x10,0x86,0x3c,0xb6,
+ 0xd5,0x60,0x0b,0x9f,0x5c,0xfe,0x26,0x88,0x08,0x75,0x69,0xd1,0x4f,0x96,0xe4,0x01,
+ 0x12,0xae,0x72,0x33,0xcf,0x26,0x85,0x65,0xa2,0x0d,0x5a,0x4a,0xfa,0x0f,0x0e,0x67,
+ 0xca,0x98,0x88,0x55,0x18,0x32,0x84,0xf9,0x40,0xf4,0x35,0x3a,0x3d,0xc2,0x4b,0x0c,
+ 0x51,0x24,0x72,0x92,0xa4,0xe7,0x83,0xb4,0x7a,0x81,0x50,0x2a,0x48,0xb1,0xcf,0x09,
+ 0x69,0x56,0xdd,0xa4,0xca,0x8c,0xf2,0xfc,0x74,0x2c,0x3a,0x63,0xf2,0xa6,0x6d,0x90,
+ 0x48,0xd2,0x24,0x8e,0xee,0x06,0xc6,0xca,0xf5,0x1f,0xe3,0x43,0xba,0xd1,0x82,0xbb,
+ 0xd5,0xad,0x42,0xe5,0x25,0x26,0x2b,0x79,0xa4,0x67,0x0c,0x0b,0x87,0x2a,0x42,0x8c,
+ 0x7f,0x08,0x35,0x2d,0xb7,0x9a,0x11,0x67,0x55,0x65,0x50,0xe5,0x52,0x22,0xbb,0xb2,
+ 0xb5,0x18,0x68,0x67,0x5f,0x29,0x9d,0xd8,0xc4,0xc4,0x22,0xb1,0xc0,0x43,0xf4,0xa7,
+ 0x20,0x94,0x22,0xb9,0x93,0x64,0x4e,0x76,0x07,0xdb,0x90,0x00,0xe3,0xad,0x0f,0x55,
+ 0xa0,0x2b,0x37,0x74,0xf4,0x1a,0xac,0xc7,0x6b,0x66,0xdd,0x4a,0x92,0xc5,0x72,0x73,
+ 0xf4,0xc5,0x43,0x2c,0x8a,0xec,0xd2,0x59,0xa8,0x90,0x13,0x87,0x3b,0x49,0x23,0xe9,
+ 0x57,0x66,0x60,0x21,0x40,0x22,0x57,0xc0,0xc0,0x75,0x19,0x2d,0xcf,0x4f,0xfe,0xbd,
+ 0x54,0x8d,0x02,0x4a,0x90,0x81,0x24,0x40,0xb6,0xd0,0x43,0x60,0x0c,0xff,0x00,0x78,
+ 0x51,0xe6,0x0d,0xbb,0xea,0x2a,0x79,0x5b,0xf0,0xd2,0x63,0xe5,0x23,0x68,0x1f,0x77,
+ 0xdb,0x8f,0xad,0x35,0x83,0x11,0x94,0x94,0x21,0x1f,0x38,0x0e,0xd8,0x0a,0x71,0x8e,
+ 0x2a,0x49,0xad,0xe3,0x90,0xbc,0x0b,0xb8,0xa2,0xf0,0xa5,0x49,0x39,0x6f,0x7f,0x5a,
+ 0x8e,0x50,0xd2,0x24,0x47,0x70,0xf3,0x46,0x3e,0x52,0xbf,0x73,0x07,0xa0,0xa5,0x16,
+ 0xba,0xb0,0x6b,0xb8,0xf8,0x98,0x22,0xc1,0xe5,0x4a,0x53,0x19,0x66,0x7c,0xf4,0x3d,
+ 0xf2,0x69,0x81,0xcc,0xb1,0xef,0x52,0x24,0x99,0xdc,0xa2,0xaf,0x96,0x09,0x41,0xea,
+ 0x4f,0xe7,0x4f,0x13,0x2a,0x48,0x87,0xf7,0x8c,0xa7,0x90,0xaa,0xb9,0xc3,0x51,0x13,
+ 0x3b,0x4d,0x0a,0x3e,0xc3,0x2b,0x6e,0x24,0x2f,0x46,0xfa,0x0e,0xd4,0xfa,0x05,0xde,
+ 0x8d,0xbb,0xa0,0x49,0x62,0x8d,0xcc,0x6a,0x90,0xbc,0xc9,0xd3,0x04,0xfe,0xf3,0xd7,
+ 0x1e,0x94,0x4b,0x22,0xf9,0x6b,0x13,0xac,0x29,0x83,0xe6,0x7c,0xc3,0x87,0x27,0x1d,
+ 0x08,0xeb,0xd4,0xd5,0xd8,0x96,0xdd,0x81,0xda,0xe8,0xcc,0x48,0x09,0x18,0xfb,0xdd,
+ 0x7b,0xd5,0x18,0xe0,0x7b,0x48,0xe3,0x0a,0x0b,0x2a,0xb9,0xc0,0x00,0x12,0xbc,0xf4,
+ 0xcd,0x1a,0x27,0xa8,0x3b,0xa5,0x77,0xb0,0xfc,0x19,0x21,0xf3,0x87,0x33,0x3b,0x95,
+ 0x64,0x03,0x05,0x31,0xfe,0x35,0x18,0x68,0xe2,0x94,0xcd,0x02,0xc1,0x24,0x85,0x72,
+ 0xc4,0xb1,0xc6,0x07,0x40,0x3d,0xf9,0xa7,0xae,0x6d,0xf6,0x3e,0xff,0x00,0xb1,0x93,
+ 0x23,0x79,0x8b,0x27,0x40,0x71,0xc6,0x33,0x51,0xac,0x62,0x40,0xee,0x8a,0x81,0x1a,
+ 0x5c,0x82,0xca,0x40,0x63,0x8e,0x83,0xf2,0xa2,0xf6,0xdc,0x7a,0xb7,0x74,0x04,0x87,
+ 0x59,0xca,0xf9,0x6b,0x38,0x01,0xca,0xbb,0x1e,0x7d,0x87,0xbd,0x33,0x31,0xca,0xed,
+ 0xbe,0x31,0x80,0xca,0x3e,0x62,0x78,0x24,0xe3,0x9f,0x5a,0x4d,0x81,0x5c,0x16,0x10,
+ 0xa0,0x20,0x86,0x2a,0x09,0x1b,0xb3,0xd6,0x9d,0xc3,0xb4,0x78,0x54,0x13,0x28,0x20,
+ 0x85,0xcf,0x3f,0x53,0x4d,0xe9,0xb0,0xae,0xd2,0xbb,0x7a,0x93,0x4b,0x1e,0x47,0x98,
+ 0x8c,0xab,0x29,0x7d,0xa4,0xf6,0x2b,0xeb,0x9f,0x4f,0xc2,0x95,0x76,0x79,0xf1,0xaa,
+ 0x31,0x85,0x50,0xe0,0xab,0xa0,0xc1,0xf7,0x07,0xf3,0xa8,0x50,0x18,0x03,0x34,0xea,
+ 0x64,0x79,0x86,0x54,0x80,0x48,0x5e,0x7a,0x8a,0x7a,0xb2,0x42,0xb1,0x79,0xe4,0xf0,
+ 0x09,0x60,0x72,0xd9,0xe3,0xb1,0xa2,0xcf,0xa0,0x24,0xaf,0x76,0x58,0xdc,0xab,0x23,
+ 0xe0,0x91,0x19,0x24,0xb2,0xed,0xc6,0x38,0xe2,0xaa,0x47,0x13,0xc5,0x14,0x09,0x22,
+ 0x89,0x26,0x29,0xf3,0x80,0x33,0x95,0xce,0x79,0xa1,0x5c,0xcd,0x13,0xee,0x8c,0x24,
+ 0x81,0x49,0x76,0x66,0xe0,0x7d,0x29,0x76,0xc8,0xe2,0x19,0x63,0x18,0x91,0x87,0xc8,
+ 0x08,0xe4,0xfa,0x81,0x49,0x3b,0x0f,0x56,0xee,0xf6,0x0f,0x2f,0xcf,0xd9,0xe5,0xbc};
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/M5Fire.ino b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/M5Fire.ino
new file mode 100644
index 000000000..f599728bf
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/M5Fire.ino
@@ -0,0 +1,61 @@
+// JPEGDEC example for Adafruit GFX displays
+
+#include "JPEGDEC.h"
+// Sample image (truncated) containing a 320x240 Exif thumbnail
+// if an image doesn't display, it may have been created using progressive, open gimp, export as a jpg, remove progressive.
+
+#include "thumb_test.h"
+//#include "ncc1701.h" //http://clipart-library.com/clip-art/uss-enterprise-silhouette-11.htm
+//#include "batman.h" //http://clipart-library.com/clipart/batman-clip-art_19.htm
+
+#include
+
+#define DISPLAY_WIDTH 320
+#define DISPLAY_HEIGHT 240
+
+
+JPEGDEC jpeg;
+
+int JPEGDraw(JPEGDRAW *pDraw)
+{
+
+ M5.Lcd.drawBitmap((int16_t)pDraw->x, (int16_t)pDraw->y, (int16_t)pDraw->iWidth, (int16_t)pDraw->iHeight, pDraw->pPixels);
+ return 1;
+} /* JPEGDraw() */
+
+void setup() {
+ Serial.begin(115200);
+
+ Serial.println("Starting...");
+
+M5.Lcd.begin();
+M5.Lcd.fillScreen(TFT_BLACK);
+} /* setup() */
+
+void loop() {
+int i;
+long lTime;
+int iOption[4] = {0, JPEG_SCALE_HALF, JPEG_SCALE_QUARTER, JPEG_SCALE_EIGHTH};
+int iCenterX[4] = {0,80,120,140};
+int iCenterY[4] = {0,60,90,105};
+
+ for (i=0; i<4; i++)
+ {
+ M5.Lcd.fillScreen(TFT_BLACK);
+ M5.Lcd.startWrite(); // Not sharing TFT bus on PyPortal, just CS once and leave it
+ if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), JPEGDraw))
+ //if (jpeg.openFLASH((uint8_t *)ncc1701, sizeof(ncc1701), JPEGDraw))
+ //if (jpeg.openFLASH((uint8_t *)batman, sizeof(batman), JPEGDraw))
+
+ {
+ lTime = micros();
+ if (jpeg.hasThumb()) {jpeg.decode(iCenterX[i],iCenterY[i],JPEG_EXIF_THUMBNAIL | iOption[i]); } else { jpeg.decode(iCenterX[i],iCenterY[i], iOption[i]); }
+ {
+ lTime = micros() - lTime;
+ Serial.printf("%d x %d image, decode time = %d us\n", jpeg.getWidth() >> i, jpeg.getHeight() >> i, (int)lTime);
+ }
+ jpeg.close();
+ }
+ delay(2000); // pause between images
+ } // for i
+} /* loop() */
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/batman.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/batman.h
new file mode 100644
index 000000000..4aeccde5a
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/batman.h
@@ -0,0 +1,845 @@
+//
+// batman-5
+// Data size = 13342 bytes
+//
+// JFIF, Compression=JPEG, Size: 240 x 240, 24-Bpp
+//
+// for non-Arduino builds...
+#ifndef PROGMEM
+#define PROGMEM
+#endif
+const uint8_t batman[] PROGMEM = {
+ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x47,
+ 0x00,0x47,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
+ 0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,
+ 0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,
+ 0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,
+ 0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,
+ 0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,
+ 0x00,0x11,0x08,0x00,0xf0,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
+ 0x01,0xff,0xc4,0x00,0x1e,0x00,0x01,0x00,0x02,0x02,0x03,0x01,0x01,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x09,0x06,0x07,0x04,0x05,0x0a,0x03,0x01,
+ 0x02,0xff,0xc4,0x00,0x49,0x10,0x00,0x01,0x03,0x03,0x03,0x02,0x04,0x03,0x05,0x04,
+ 0x05,0x0a,0x04,0x07,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x06,0x07,0x08,0x11,
+ 0x12,0x21,0x09,0x13,0x31,0x41,0x14,0x22,0x51,0x15,0x23,0x61,0x71,0x81,0x32,0x42,
+ 0x52,0x62,0x24,0x33,0x82,0x91,0x92,0x16,0x17,0x18,0x53,0x63,0x72,0xa1,0xb1,0xb2,
+ 0xc1,0x73,0x93,0xa2,0xc2,0x19,0x34,0x43,0x44,0x83,0x84,0xc3,0xff,0xc4,0x00,0x1c,
+ 0x01,0x01,0x00,0x01,0x05,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x03,0x01,0x04,0x05,0x06,0x07,0x02,0x08,0xff,0xc4,0x00,0x38,0x11,0x00,
+ 0x01,0x03,0x02,0x05,0x01,0x06,0x03,0x06,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x01,
+ 0x00,0x02,0x03,0x04,0x11,0x05,0x06,0x12,0x21,0x31,0x51,0x13,0x22,0x41,0x61,0x71,
+ 0x81,0x07,0x32,0x91,0x15,0x42,0x62,0x92,0xa1,0xb1,0x14,0x23,0x52,0x72,0x82,0xa2,
+ 0x33,0xb2,0xc1,0xf0,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,
+ 0x3f,0x00,0xb5,0x3a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,
+ 0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,
+ 0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,
+ 0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,
+ 0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,
+ 0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,
+ 0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,
+ 0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,
+ 0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,
+ 0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,
+ 0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0xa2,0xae,0xf8,
+ 0x37,0xe7,0x8d,0x6d,0x27,0x1e,0x36,0xd8,0x69,0x66,0xff,0x00,0xa8,0xd3,0xd8,0x2b,
+ 0xb7,0xd9,0x4a,0x8f,0x97,0x1d,0x27,0x90,0x24,0x49,0x20,0x82,0x96,0xc1,0x1d,0x92,
+ 0x08,0x52,0xc8,0xe0,0x70,0x3a,0x94,0x92,0x29,0x55,0x4a,0xf3,0xf3,0xa5,0x5e,0x23,
+ 0xba,0xd3,0xa6,0xda,0xbb,0x71,0xce,0x66,0xe4,0x6f,0xe5,0x48,0xbb,0xbc,0x17,0x75,
+ 0xb2,0x5d,0x1c,0x26,0x1c,0x84,0x03,0xd9,0x2d,0x20,0x76,0x8e,0x52,0x3b,0x25,0x4d,
+ 0x81,0xc7,0x60,0x42,0x87,0x29,0x37,0x13,0xb5,0xfd,0xec,0xe9,0xa6,0xea,0xad,0x4d,
+ 0x8c,0x6e,0xe8,0x2d,0xb9,0x3a,0x1a,0x2e,0x4b,0xc6,0x6e,0x4a,0x4a,0x26,0xb3,0xc1,
+ 0xe1,0x4a,0x48,0xe7,0x87,0x5b,0xf4,0x3d,0x68,0x27,0x80,0xa1,0xd4,0x12,0x4f,0x48,
+ 0x22,0xdf,0xb4,0xa5,0x28,0x89,0x4a,0x56,0xa2,0xdc,0xd6,0xe0,0xa0,0xed,0xab,0x0a,
+ 0xb2,0xe5,0xd7,0x68,0xe1,0xfb,0x23,0xb7,0xc8,0x96,0xdb,0x82,0x81,0x3d,0x4c,0xb0,
+ 0xf7,0x52,0x54,0xf2,0x78,0xe7,0x92,0x8e,0x02,0xf8,0xe3,0xe6,0x09,0x29,0xec,0x48,
+ 0x20,0x8b,0x6e,0xd2,0xb5,0xde,0x79,0xb8,0x9d,0x2f,0xd3,0x06,0x63,0x39,0x95,0xea,
+ 0x06,0x39,0x62,0x32,0x99,0x4c,0x88,0xed,0x4b,0xb9,0x34,0x97,0x5f,0x69,0x43,0x94,
+ 0xb8,0xdb,0x7d,0x5d,0x4b,0x49,0x1f,0xbc,0x90,0x47,0x7a,0xc5,0xac,0x7b,0xdb,0xd0,
+ 0x4c,0x86,0x40,0x62,0x26,0xad,0xe2,0x69,0x70,0x9e,0x00,0x97,0x72,0x6e,0x30,0x27,
+ 0xe8,0x0b,0xa5,0x22,0x88,0xb7,0x6d,0x2b,0x52,0xe8,0xc6,0xe2,0xf1,0xfd,0x72,0xcd,
+ 0x75,0x22,0xcb,0x8e,0x2d,0xb9,0x50,0xf0,0xdb,0x83,0x36,0xc5,0xcf,0x69,0xd0,0xe2,
+ 0x25,0x3a,0xa6,0xca,0x96,0xb4,0x11,0xdb,0xa5,0x2b,0x0a,0x6c,0x7a,0xf2,0x5b,0x51,
+ 0xe7,0x82,0x2b,0x6d,0x51,0x12,0x94,0xa5,0x11,0x29,0x51,0xd3,0x74,0xdb,0xec,0xd3,
+ 0x3d,0xab,0x5b,0xdf,0x8f,0x79,0xb8,0x0b,0xee,0x5f,0xd0,0x15,0x1f,0x17,0xb6,0x38,
+ 0x15,0x29,0x44,0x8e,0x52,0x5e,0x3d,0xc3,0x08,0x3c,0x83,0xd4,0xbe,0xe4,0x77,0x4a,
+ 0x55,0xe9,0x55,0x05,0x9d,0x78,0x8f,0xeb,0x7e,0x67,0xac,0xb0,0x35,0x05,0x8c,0x9d,
+ 0xcb,0x12,0xed,0xab,0xe2,0x05,0x86,0xde,0xa5,0x26,0xda,0xd3,0x24,0x82,0xa6,0x9c,
+ 0x68,0x9f,0xbe,0xeb,0xe3,0xe6,0x52,0xf9,0x51,0xed,0xc1,0x48,0x4a,0x42,0x48,0xbd,
+ 0x04,0x52,0xa3,0x3e,0xca,0xf7,0xc7,0x8a,0x6e,0xef,0x15,0x2d,0x37,0xe5,0x58,0xf3,
+ 0xdb,0x73,0x21,0x77,0x5c,0x79,0x4b,0xe4,0xf4,0x8e,0x01,0x91,0x1c,0x9f,0xdb,0x64,
+ 0xa9,0x40,0x7f,0x12,0x09,0x01,0x5e,0xa9,0x52,0xe4,0xc5,0x11,0x29,0x4a,0x51,0x12,
+ 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xad,
+ 0x05,0xbc,0xed,0xd9,0xd9,0x36,0x91,0xa5,0x0e,0xdf,0xa5,0xa5,0xa9,0xf9,0x35,0xc7,
+ 0xae,0x35,0x8a,0xd0,0xb5,0x11,0xf1,0x52,0x00,0x1c,0xad,0x5c,0x77,0x0d,0x36,0x14,
+ 0x95,0x2c,0xf6,0xf5,0x4a,0x41,0x05,0x69,0xa2,0x2c,0x1b,0x7f,0x1b,0xec,0xb4,0xed,
+ 0x3f,0x11,0xfb,0x22,0xcc,0xa6,0x2e,0x9a,0x95,0x76,0x60,0x9b,0x7d,0xbd,0x47,0xa9,
+ 0x10,0x9b,0x3c,0x8f,0x8a,0x7c,0x7f,0x08,0x23,0xe5,0x41,0xee,0xb2,0x0f,0xb0,0x51,
+ 0x14,0xdb,0x61,0xd1,0xad,0x69,0xdc,0xee,0x55,0x3b,0x22,0x83,0x8c,0x5f,0xf2,0xeb,
+ 0x9d,0xdd,0xe5,0x4a,0x93,0x7b,0x90,0xc9,0x6d,0x87,0x5c,0x57,0x72,0x4c,0x87,0x3a,
+ 0x5a,0x1f,0x82,0x7a,0x87,0x00,0x70,0x07,0x02,0xb9,0x38,0x46,0xb8,0x67,0x39,0x56,
+ 0xb3,0x4f,0xc8,0x95,0x61,0xb3,0xea,0x26,0xa4,0x65,0x33,0x1b,0x6e,0x34,0xbc,0x82,
+ 0x07,0xc6,0xb8,0xd4,0x85,0x2b,0x84,0x79,0x0c,0xa9,0x41,0x94,0x9f,0xd8,0x4a,0x7a,
+ 0x90,0x42,0x12,0x84,0x84,0xf4,0x00,0x79,0xbc,0x7d,0x2d,0xb4,0xe5,0x36,0x4d,0x3f,
+ 0xb2,0x43,0xcd,0xaf,0x8d,0xe4,0x59,0x5a,0x18,0xea,0xb8,0xdc,0x19,0x61,0xb6,0x1a,
+ 0x5b,0xca,0x25,0x45,0x28,0x42,0x12,0x91,0xd0,0x8e,0x7a,0x01,0xe9,0x04,0x84,0x82,
+ 0x7b,0x93,0x5c,0xb7,0x39,0xe6,0xfa,0x8c,0xb2,0xd6,0x36,0x18,0x9a,0xe7,0x3f,0x8d,
+ 0x4e,0x37,0xf3,0x3a,0x40,0xe0,0x71,0x72,0xe0,0x6f,0xc0,0x22,0xe4,0x5c,0x45,0x10,
+ 0x93,0x92,0xa9,0xd1,0xdf,0x0c,0xcd,0xc1,0x37,0x13,0xce,0x18,0x8c,0x47,0x17,0xc7,
+ 0x3e,0x42,0x6f,0x11,0x3a,0xff,0x00,0xe2,0xe0,0x1f,0xf1,0xad,0x0b,0x95,0xe1,0x99,
+ 0x9e,0x8b,0x65,0xe9,0x83,0x7d,0xb6,0x5d,0x71,0x1c,0x8a,0x12,0xc3,0xad,0x79,0xc9,
+ 0x5c,0x77,0x90,0x41,0xec,0xe3,0x4b,0x1c,0x72,0x39,0x1d,0x96,0x82,0x41,0xf6,0x35,
+ 0xe8,0xbe,0xa3,0xbe,0xfd,0x34,0x72,0xc9,0xab,0x5b,0x6d,0xcb,0x9e,0xb8,0x45,0x42,
+ 0xae,0xb8,0xe4,0x07,0xef,0x56,0xc9,0xc1,0x3f,0x7b,0x1d,0xc6,0x51,0xe6,0x38,0x90,
+ 0x7f,0x85,0xc4,0x20,0xa5,0x43,0xd0,0xf6,0x3c,0x72,0x94,0x91,0xcf,0xb0,0x3f,0x8a,
+ 0x35,0xb3,0xd7,0x47,0x4f,0x89,0x44,0xcd,0x0f,0x20,0x5d,0xa0,0x82,0xdb,0x9b,0x5f,
+ 0x72,0x6e,0x3a,0xf0,0x7f,0x65,0x33,0xe9,0xc0,0x17,0x69,0x50,0x8f,0x6f,0x3e,0x2f,
+ 0x7a,0x9d,0xa6,0x2c,0x47,0xb5,0x67,0xf0,0xda,0xd4,0x9b,0x2b,0x69,0x4b,0x68,0x94,
+ 0xfb,0xa2,0x35,0xc9,0xa4,0x8e,0x07,0x77,0x82,0x48,0x77,0xb0,0x3f,0xd6,0x24,0xa9,
+ 0x47,0xd5,0x75,0x62,0xda,0x35,0xe2,0x3d,0xa0,0xda,0xd2,0xa6,0x63,0x43,0xcc,0x5a,
+ 0xc6,0x2e,0xce,0x27,0xab,0xec,0xcc,0xa1,0x22,0x03,0x80,0xf3,0xc7,0x48,0x71,0x44,
+ 0xb2,0xa5,0x7f,0x2a,0x1c,0x51,0x3f,0x4a,0xa0,0xf9,0x98,0x65,0xd2,0x0e,0x15,0x6a,
+ 0xca,0x9e,0x64,0x26,0xd1,0x72,0x9d,0x2a,0xdf,0x1d,0xce,0x7b,0x97,0x63,0xa1,0x85,
+ 0xb9,0xc8,0xfa,0x71,0x25,0xbe,0x0f,0xb9,0x0a,0xfa,0x57,0x47,0x5f,0x48,0x31,0xed,
+ 0x90,0x5d,0x86,0xfc,0x8f,0x70,0x6c,0x7e,0x85,0x58,0xaf,0x54,0x51,0x25,0xb1,0x3e,
+ 0x33,0x72,0x23,0x3c,0xdc,0x98,0xee,0x0e,0xa4,0x3a,0xd2,0xc2,0x90,0xa1,0xf5,0x04,
+ 0x76,0x22,0xa0,0xc7,0x8c,0xac,0xaf,0x87,0xda,0x4c,0x06,0xf9,0xe3,0xcf,0xca,0x21,
+ 0xb7,0xf9,0xfd,0xcc,0x95,0x7f,0xed,0xaa,0x78,0xd3,0xdd,0x6b,0xcf,0xf4,0x99,0x6e,
+ 0x1c,0x33,0x34,0xbf,0x62,0xe9,0x75,0x41,0x6e,0xb5,0x6a,0xb8,0x3a,0xc3,0x6e,0x91,
+ 0xe8,0x56,0x84,0xa8,0x25,0x5f,0xa8,0x35,0x98,0xea,0xc6,0xf0,0xb5,0x77,0x5c,0xf0,
+ 0x48,0x98,0x7e,0x77,0x98,0x3b,0x91,0xd8,0xa2,0x4d,0x6e,0xe0,0xc3,0x52,0x22,0x47,
+ 0x43,0x89,0x79,0x08,0x71,0x01,0x45,0xd4,0x36,0x95,0xab,0xe5,0x75,0x7d,0x94,0x48,
+ 0xf4,0xfa,0x57,0xb4,0x5a,0x6d,0x4b,0x52,0xcf,0x2a,0x25,0x47,0x80,0x39,0x27,0xd8,
+ 0x76,0x15,0xf9,0x5d,0xd5,0xa3,0x09,0xc8,0x2f,0xf6,0x1b,0xb5,0xee,0xd9,0x64,0xb8,
+ 0x5c,0x6d,0x16,0x8f,0x2f,0xed,0x19,0xd1,0x23,0x2d,0xd6,0x61,0xf9,0x9d,0x5e,0x59,
+ 0x79,0x49,0x04,0x36,0x15,0xd0,0xbe,0x0a,0xb8,0x07,0xa4,0xfd,0x2b,0x8f,0x8e,0xe3,
+ 0x37,0x8c,0xc2,0xf1,0x1e,0xd3,0x61,0xb5,0x4d,0xbd,0xdd,0x24,0x1e,0x96,0x60,0xdb,
+ 0xa3,0xae,0x43,0xee,0x1f,0xa2,0x50,0x80,0x54,0x7f,0x41,0x44,0x56,0x51,0xe0,0x7b,
+ 0x95,0xb7,0x17,0x33,0xd5,0x5c,0x65,0x47,0x97,0x67,0x5b,0xe0,0xdc,0x5b,0x04,0xfa,
+ 0x06,0x1c,0x75,0xb5,0xf0,0x3f,0xfd,0x94,0x73,0xf9,0x0a,0xb6,0x79,0xd3,0xa3,0x5b,
+ 0x22,0x3b,0x2a,0x64,0x86,0xa2,0x45,0x69,0x3d,0x4e,0x3e,0xfa,0xc2,0x10,0x81,0xf5,
+ 0x2a,0x3d,0x80,0xaf,0x35,0x18,0x7e,0xa1,0x6a,0x66,0xd6,0x33,0xab,0xdb,0x76,0x1b,
+ 0x8c,0xfc,0x1b,0x2b,0xf8,0x75,0x5a,0xee,0x28,0x0d,0x20,0x48,0x6d,0xb5,0x29,0x0e,
+ 0x29,0xa5,0x05,0xa4,0xf4,0x2b,0xa9,0x08,0x27,0x8e,0x14,0x08,0xe3,0xb7,0x71,0x5d,
+ 0x26,0xa0,0x6b,0x0e,0x75,0xaa,0xef,0xb4,0xee,0x67,0x98,0xdf,0x32,0x95,0x34,0x4a,
+ 0x9a,0x17,0x6b,0x83,0xb2,0x12,0xd1,0xfe,0x44,0xad,0x44,0x23,0xfb,0x20,0x51,0x15,
+ 0xea,0x6b,0x3f,0x89,0x5e,0x83,0x68,0xd2,0xa4,0xc5,0x73,0x2c,0x4e,0x5d,0x78,0x65,
+ 0x3c,0xfd,0x9d,0x8b,0x24,0x4d,0x24,0xff,0x00,0x09,0x78,0x10,0xca,0x48,0x3e,0xa0,
+ 0xb9,0xc8,0xfa,0x7b,0x55,0x72,0xee,0x1f,0xc5,0xc3,0x55,0x35,0x61,0x99,0x16,0xac,
+ 0x25,0x96,0xf4,0xce,0xc2,0xea,0x14,0xda,0xdc,0x80,0xf1,0x7a,0xe4,0xe0,0x3d,0x89,
+ 0xf8,0x92,0x13,0xe5,0xf6,0xe3,0x8f,0x29,0x29,0x50,0x3c,0xfc,0xe7,0xb7,0x10,0x5a,
+ 0x94,0x45,0xf5,0x99,0x31,0xfb,0x84,0xa7,0xa5,0x4a,0x7d,0xc9,0x32,0x5e,0x59,0x71,
+ 0xc7,0x9e,0x59,0x5a,0xd6,0xa2,0x79,0x25,0x44,0xf7,0x24,0xfd,0x4d,0x7c,0xab,0xed,
+ 0x0a,0x2a,0xe7,0x4c,0x62,0x32,0x3b,0xad,0xe7,0x12,0xda,0x7f,0x32,0x78,0x1f,0xf3,
+ 0xac,0x9b,0x57,0x30,0xe4,0xe9,0xe6,0xaa,0xe6,0x38,0xba,0x09,0x2d,0x59,0x6f,0x12,
+ 0xed,0xe8,0x51,0x24,0xf5,0x21,0xa7,0x96,0x84,0x9e,0xff,0x00,0x50,0x90,0x6a,0x13,
+ 0x2b,0x04,0xa2,0x1b,0xf7,0x88,0x27,0xd8,0x58,0x1f,0xdc,0x2a,0xdb,0xc5,0x7f,0x78,
+ 0x2d,0xdf,0x35,0xd3,0x19,0xd6,0x9d,0x47,0xc5,0xcd,0xd2,0xca,0xab,0x6d,0xc3,0xc9,
+ 0x87,0x90,0x46,0x65,0x61,0x84,0x4a,0x4a,0x42,0xd4,0xcf,0x99,0xc7,0x42,0x89,0x42,
+ 0x87,0x53,0x67,0x9e,0xa4,0x2f,0x85,0x02,0x95,0x77,0xbd,0x7d,0x8b,0x6f,0x7e,0xc7,
+ 0xbb,0xac,0x1d,0x4c,0xcb,0x11,0xec,0xfa,0x87,0x69,0x69,0x3f,0x6b,0xd9,0x90,0xae,
+ 0x10,0xe8,0xf4,0xf8,0xa8,0xc0,0x92,0xa5,0x34,0xa3,0xc7,0x23,0xb9,0x6d,0x44,0x25,
+ 0x44,0x82,0x85,0x2f,0x45,0x6c,0x47,0x43,0xf4,0xda,0xfd,0xb4,0xb9,0x96,0x98,0xd7,
+ 0x57,0x73,0xac,0x67,0x2d,0x77,0xcf,0xbb,0x5b,0xee,0x4d,0x25,0xb1,0x0e,0x58,0x69,
+ 0xb4,0x3a,0xc8,0x42,0x4f,0x28,0x5a,0x14,0x84,0x90,0xbe,0x79,0x3c,0x36,0xb4,0x9e,
+ 0x3a,0x49,0x83,0x3a,0xe5,0xa3,0x99,0xdf,0x87,0x9e,0xbe,0xd9,0xf2,0x7c,0x4a,0xe7,
+ 0x24,0x5b,0x04,0x85,0x4a,0xb0,0x5e,0xf8,0xe4,0x38,0x80,0x7e,0x78,0xb2,0x40,0xe0,
+ 0x15,0x74,0x9e,0x95,0xa7,0xd1,0x69,0x57,0x23,0x8e,0x4a,0x53,0xa3,0x61,0x19,0xc2,
+ 0x8f,0x13,0xc4,0xe7,0xc2,0x5c,0x34,0x48,0xc2,0x43,0x6f,0x71,0xa8,0x0e,0x76,0x36,
+ 0x21,0xc3,0x7b,0x8e,0x9b,0x8f,0x1b,0x4a,0xe8,0x8b,0x5a,0x1c,0xaf,0xf6,0x95,0xa4,
+ 0x76,0x8d,0xba,0x6c,0x7b,0x76,0x1a,0x51,0x13,0x27,0xb4,0x94,0x43,0xbc,0xc7,0xe9,
+ 0x8f,0x7a,0xb3,0x95,0x82,0xe4,0x19,0x3c,0x77,0x1c,0x73,0xc9,0x6d,0x7c,0x15,0x21,
+ 0x7e,0xe3,0xb1,0xe1,0x49,0x50,0x1b,0xba,0xb7,0xf5,0x0a,0x52,0x94,0xa2,0x25,0x29,
+ 0x4a,0x22,0x52,0x94,0xa2,0x25,0x29,0x4a,0x22,0xc6,0x35,0x37,0x52,0x2c,0x3a,0x43,
+ 0x80,0xdf,0x33,0x2c,0x9e,0x62,0x60,0x58,0xac,0xd1,0x95,0x26,0x4b,0xc7,0x8e,0x48,
+ 0x1d,0x92,0x84,0x82,0x47,0x52,0xd4,0xa2,0x94,0x25,0x3e,0xea,0x52,0x47,0xbd,0x79,
+ 0xd8,0xdd,0x0e,0xe3,0xb2,0x2d,0xd1,0x6a,0xe5,0xd3,0x34,0xbf,0x28,0xb2,0xca,0xc9,
+ 0x8f,0x6c,0xb6,0xa5,0x5c,0xb7,0x02,0x22,0x54,0x4b,0x6d,0x27,0xea,0x7b,0x95,0x29,
+ 0x5f,0xbc,0xa5,0x28,0xf0,0x01,0x00,0x4a,0xaf,0x16,0x6d,0xdd,0xab,0x55,0x35,0x14,
+ 0x69,0x46,0x35,0x31,0x47,0x14,0xc5,0x24,0xab,0xed,0x37,0x1b,0xe3,0xa6,0x6d,0xcd,
+ 0x3c,0xa5,0x43,0x9f,0x52,0x86,0x41,0x52,0x07,0xa7,0xce,0x5c,0xe4,0x10,0x94,0x1a,
+ 0xd5,0xbe,0x1e,0x9b,0x50,0xff,0x00,0x48,0x4d,0x4c,0x37,0xec,0x82,0x19,0x73,0x04,
+ 0xc7,0x1c,0x43,0xb3,0x12,0xe2,0x0f,0x97,0x3e,0x47,0xab,0x71,0x41,0xf4,0x23,0xd1,
+ 0x6b,0xf5,0xf9,0x78,0x07,0x8f,0x30,0x1a,0xc5,0x62,0x98,0x95,0x3e,0x11,0x47,0x25,
+ 0x75,0x51,0xb3,0x18,0x2f,0xeb,0xd0,0x0f,0x32,0x76,0x0b,0xd3,0x5a,0x5c,0x6c,0x14,
+ 0xae,0xf0,0xc8,0xda,0x18,0xc0,0xb1,0xd6,0x35,0x67,0x2b,0x87,0xd3,0x91,0xdd,0xd8,
+ 0x3f,0x62,0xc5,0x75,0x24,0x2a,0x14,0x35,0x8e,0x0b,0xc4,0x1f,0x47,0x1d,0x07,0xb7,
+ 0xd1,0xb2,0x3b,0xfc,0xea,0x02,0x46,0xee,0xdf,0x73,0x56,0xad,0xaf,0x69,0x6b,0xf7,
+ 0xe7,0xd0,0xd4,0xdc,0x86,0x69,0x54,0x5b,0x2d,0xb1,0xc2,0x78,0x91,0x23,0x8e,0x7a,
+ 0x97,0xc7,0x07,0xcb,0x40,0x21,0x4a,0x20,0x8f,0x64,0x82,0x0a,0x85,0x6e,0x69,0x93,
+ 0x22,0xda,0x60,0x3f,0x2e,0x53,0xcd,0x43,0x85,0x19,0xa5,0x3a,0xeb,0xce,0xa8,0x21,
+ 0xb6,0x9b,0x48,0xe5,0x4a,0x24,0xf6,0x00,0x00,0x4f,0x3e,0xc0,0x55,0x13,0x6e,0xa7,
+ 0x5c,0x2f,0x5b,0xb6,0xd7,0xe9,0x13,0x6d,0x31,0xa5,0xcf,0x81,0xe7,0x0b,0x56,0x39,
+ 0x6b,0x8e,0xd2,0x96,0xe2,0x98,0x0a,0x21,0x1c,0x36,0x07,0x25,0xc7,0x14,0x4a,0xc8,
+ 0xe3,0x9e,0x54,0x13,0xe8,0x91,0x5f,0x2f,0xe0,0x74,0x53,0xe7,0xec,0x7a,0x4c,0x43,
+ 0x11,0xff,0x00,0x85,0x9b,0xbb,0xa0,0x1f,0x75,0x80,0xf8,0x0e,0x6e,0x7a,0x02,0x79,
+ 0x2b,0x20,0xf2,0x21,0x65,0x9b,0xca,0xb2,0xff,0x00,0x0f,0x5d,0xd3,0x65,0x9b,0x9a,
+ 0xc2,0xb2,0x97,0x33,0x08,0x91,0x05,0xca,0xc9,0x35,0xa6,0xd1,0x3e,0x0b,0x45,0x96,
+ 0xe4,0x36,0xea,0x14,0xa0,0x92,0x8e,0x48,0xeb,0x41,0x41,0xe4,0x8e,0x01,0x0b,0x47,
+ 0x6e,0x41,0x2a,0xd8,0x5b,0xd9,0xcd,0xe1,0xe0,0x3b,0x57,0xd4,0x79,0xd2,0xdd,0x4b,
+ 0x66,0x5d,0xa5,0xdb,0x5b,0x08,0x24,0x75,0x38,0xec,0x91,0xe4,0x25,0x29,0x1e,0xff,
+ 0x00,0xd6,0x15,0x1e,0x3d,0x92,0xa3,0xed,0x5f,0xce,0xcc,0xf6,0xfd,0xfe,0x8d,0xfa,
+ 0x15,0x68,0xc6,0xa5,0x86,0xd5,0x7f,0x94,0xb5,0x5c,0xaf,0x0e,0x34,0x79,0x06,0x53,
+ 0x81,0x3c,0xa0,0x1e,0x4f,0x21,0x08,0x4a,0x1b,0xe4,0x76,0x3d,0x05,0x5f,0xbd,0x51,
+ 0x5f,0x76,0xfa,0x84,0xce,0xea,0xf7,0x5b,0x80,0x6d,0xfa,0xc6,0xe1,0x9d,0x8d,0x5a,
+ 0xae,0xe1,0xfc,0x89,0x6c,0x2b,0x80,0xeb,0xcd,0xa5,0x4a,0x7d,0x01,0x7e,0xde,0x4b,
+ 0x29,0x75,0x3c,0x8f,0xdf,0x5a,0x87,0x72,0x91,0x58,0xc8,0x28,0xe8,0xb1,0x4c,0xd1,
+ 0x2c,0xd4,0x2d,0xd3,0x49,0x13,0x8c,0x84,0x8e,0x03,0x23,0xdc,0x91,0xd3,0x51,0x1b,
+ 0x7a,0xf9,0x2f,0x44,0x96,0xc7,0x63,0xc9,0x59,0x4d,0x83,0x62,0x09,0xd5,0x1d,0x8a,
+ 0xe9,0xb6,0x10,0xed,0xd1,0x8b,0x16,0x44,0x87,0x91,0x92,0x2a,0xe2,0xe4,0x62,0xef,
+ 0x42,0xa4,0xa5,0x6b,0x5b,0x2a,0x4f,0x20,0xf6,0x6d,0xd6,0xd2,0x7b,0xfe,0xd3,0x20,
+ 0xfa,0x56,0x9f,0xb3,0x78,0x45,0x65,0x96,0xcd,0x4c,0xc7,0x5b,0xba,0x64,0xd6,0x9b,
+ 0xd6,0x0e,0xa9,0x49,0x55,0xce,0x44,0x5f,0x31,0x89,0x69,0x65,0x20,0xa9,0x48,0x0d,
+ 0x91,0xc7,0xcf,0xc0,0x40,0x52,0x56,0x48,0x2a,0xe4,0x8e,0x05,0x5a,0x24,0xfb,0x95,
+ 0xbb,0x1e,0x80,0x1f,0x9b,0x2a,0x2d,0xb2,0x0b,0x65,0x0d,0x07,0x1f,0x71,0x2c,0xb4,
+ 0x92,0x48,0x4a,0x13,0xc9,0x20,0x0e,0x49,0x00,0x0f,0xa9,0x00,0x57,0x34,0x0e,0x48,
+ 0x15,0x69,0x06,0x7b,0xc7,0x69,0x3b,0x6e,0xc2,0x4b,0x32,0x47,0x3d,0xd6,0x20,0x1b,
+ 0x17,0x6e,0x6c,0x6d,0x7d,0xaf,0x71,0xbd,0x87,0x45,0x53,0x13,0x0d,0xae,0x17,0x9e,
+ 0x6d,0xc4,0xc5,0x89,0x07,0x5f,0x35,0x1e,0x2c,0x08,0xcd,0x43,0x82,0xc6,0x45,0x3d,
+ 0x96,0x23,0xb0,0x90,0x96,0xda,0x6d,0x32,0x16,0x94,0xa1,0x20,0x7a,0x00,0x00,0x00,
+ 0x7e,0x15,0xaf,0x6b,0x2f,0xd6,0x2b,0xa2,0x6f,0x7a,0xb9,0x9b,0xdc,0x50,0x79,0x44,
+ 0xbb,0xe4,0xe9,0x09,0x20,0xf3,0xd9,0x52,0x16,0xa1,0xff,0x00,0x3a,0xc4,0x2b,0xec,
+ 0x6a,0x16,0x96,0xd2,0xc4,0xd7,0x72,0x1a,0xdf,0xd8,0x2c,0x59,0xe4,0xab,0x65,0xdb,
+ 0xfe,0xcf,0x6f,0x98,0xbd,0x82,0xdf,0xa8,0x7a,0x0b,0xaa,0xb7,0x6d,0x32,0xba,0x5f,
+ 0x6d,0x4d,0x33,0x75,0xb2,0xde,0x60,0x31,0x74,0x6d,0x2e,0x29,0x29,0x5f,0x48,0x2a,
+ 0x00,0x74,0x82,0x42,0x9b,0x59,0x42,0x89,0x42,0xd2,0xb4,0xab,0xa5,0x7d,0xf5,0x46,
+ 0x8e,0x78,0x78,0x6e,0x1f,0x01,0xd6,0xab,0x85,0xdd,0x8c,0xea,0x3e,0x0d,0xe4,0xa1,
+ 0x7d,0x59,0x9d,0xbe,0x59,0x92,0xa9,0xc1,0xd3,0xf3,0x25,0x2d,0x12,0x95,0xa8,0x93,
+ 0xc1,0x50,0x77,0xa0,0x72,0x01,0x04,0x90,0x2b,0xbb,0xf0,0xfc,0xde,0xae,0x35,0x3b,
+ 0x0d,0x46,0x8e,0x6a,0xe4,0xc8,0x4c,0xc3,0x65,0x01,0xab,0x35,0xd2,0xee,0x52,0x22,
+ 0xba,0xc2,0x7b,0x88,0x8f,0xad,0x5d,0x90,0x51,0xd2,0x0b,0x6b,0x51,0xe0,0x8e,0x13,
+ 0xc8,0x29,0x40,0x54,0x97,0xb9,0xce,0xd1,0x7d,0x14,0x7e,0xf9,0x9a,0xe4,0x19,0x46,
+ 0x19,0x77,0x89,0x6e,0x6d,0x57,0x0b,0x4d,0xbc,0x79,0x6f,0xcf,0x61,0x69,0x3d,0x6d,
+ 0x86,0x54,0xb7,0xdc,0x2b,0x73,0x90,0x12,0x85,0x36,0x86,0xcf,0x7e,0x49,0x3e,0xa2,
+ 0xd9,0xd2,0xcd,0x1b,0x8b,0x09,0xf4,0xd9,0x65,0x1b,0x14,0x32,0x34,0x3c,0x7b,0xee,
+ 0xaa,0x7b,0x75,0xfa,0x5e,0xbd,0x21,0xd7,0x0b,0xfe,0x3e,0xed,0xd6,0xe1,0x7c,0x90,
+ 0x92,0x99,0x0f,0x5d,0x2e,0xce,0xa5,0x52,0xe6,0x3a,0xb1,0xcb,0x92,0x1c,0x00,0x92,
+ 0x9f,0x31,0x7d,0x4e,0x24,0x29,0x4a,0x51,0x42,0xd0,0xa2,0xa3,0xd5,0xcd,0x6a,0x0a,
+ 0xcb,0xb5,0x5b,0x51,0x2e,0xfa,0xc7,0xa8,0xd9,0x36,0x6d,0x77,0x47,0xf4,0xeb,0xbc,
+ 0xc5,0xcb,0x79,0x0d,0xf2,0x50,0xc2,0x54,0x78,0x43,0x69,0x27,0xbf,0x4a,0x12,0x12,
+ 0x81,0xcf,0x7e,0x12,0x2b,0x11,0xac,0x9b,0x2f,0xa4,0x03,0xca,0xc6,0x3a,0xc5,0xc6,
+ 0xdc,0x2c,0x92,0xdb,0x87,0xb9,0x71,0xd3,0xbb,0xfe,0x4c,0x8e,0xb2,0x8b,0x55,0xc6,
+ 0x04,0x15,0x81,0xfb,0x3c,0x48,0x6e,0x52,0x81,0x3f,0x8f,0x31,0x87,0x1f,0x99,0xae,
+ 0x8a,0x4d,0xbe,0x4c,0x36,0x22,0x3c,0xfb,0x0e,0x32,0xd4,0xb6,0xcb,0xd1,0xd6,0xb4,
+ 0x90,0x1d,0x40,0x5a,0x90,0x54,0x93,0xee,0x3a,0x90,0xb4,0xf3,0xf5,0x49,0x1e,0xd5,
+ 0x28,0x74,0xff,0x00,0x4d,0x5e,0xff,0x00,0xe1,0xe1,0xaa,0xd9,0x83,0x8c,0xa9,0x28,
+ 0x7b,0x27,0xb6,0x21,0xa5,0x29,0x3c,0x75,0x25,0x82,0x1b,0xea,0x1f,0x51,0xd5,0x39,
+ 0x49,0xe7,0xea,0x08,0xf6,0xa9,0x39,0xb0,0xcd,0xbe,0x60,0x3b,0x8b,0xdb,0x36,0x2e,
+ 0xf6,0x6f,0x66,0x17,0x55,0xe2,0x99,0x24,0xff,0x00,0x85,0x48,0x70,0xa0,0x3a,0x85,
+ 0xa1,0x0b,0x2c,0xba,0x47,0x75,0x35,0xd6,0xe2,0x57,0xd2,0x08,0xf9,0x90,0x3d,0x8a,
+ 0x92,0xad,0x13,0x11,0xcd,0x50,0xe1,0x50,0xcf,0x57,0x33,0x4b,0xa3,0x8e,0x5e,0xcc,
+ 0xdb,0x91,0xfc,0xb0,0x76,0xff,0x00,0x23,0x6e,0x47,0x2a,0x46,0xc6,0x5c,0x40,0xf2,
+ 0x55,0xcd,0xa4,0x96,0xcf,0xb6,0xf5,0x57,0x0c,0xb7,0x71,0xd5,0xf1,0x77,0xa8,0x51,
+ 0xf8,0xfa,0xf5,0xbe,0x84,0xff,0x00,0xde,0xb7,0x27,0x88,0x76,0x1a,0xbc,0x33,0x77,
+ 0x59,0xdb,0x7e,0x52,0x9b,0x8d,0x72,0x75,0x8b,0xa3,0x0b,0x50,0xfe,0xb0,0x3c,0xca,
+ 0x14,0xb2,0x3f,0x0f,0x37,0xcd,0x4f,0xf6,0x4d,0x5d,0x76,0x3b,0x81,0x63,0x18,0x7c,
+ 0x66,0xe3,0xd8,0x71,0xcb,0x4d,0x92,0x3b,0x60,0x04,0x35,0x6e,0x82,0xd4,0x74,0xa4,
+ 0x0f,0x4e,0x02,0x12,0x38,0xaa,0xca,0xf1,0x87,0xc2,0xdc,0x85,0xa8,0xd8,0x06,0x58,
+ 0x13,0xcb,0x17,0x1b,0x5b,0xd6,0xd5,0x28,0x0f,0x45,0xc7,0x77,0xcc,0xee,0x7f,0x11,
+ 0x27,0xb7,0xfb,0xa7,0xe9,0x5a,0x36,0x03,0x9e,0x1b,0x98,0x73,0x24,0x31,0xb6,0x2e,
+ 0xcd,0xa5,0x8f,0x68,0xb9,0xbd,0xce,0xcf,0xbf,0x02,0xdb,0x33,0xcd,0x4c,0xf8,0xb4,
+ 0x46,0x56,0x82,0xd9,0x26,0xeb,0x67,0x6d,0x8f,0x53,0x9b,0x5c,0xc7,0x5c,0x7f,0x08,
+ 0xbc,0x2d,0x0c,0x5e,0xa1,0x24,0x75,0x74,0x27,0xd1,0x32,0x5b,0x1f,0xc6,0xdf,0x24,
+ 0xf1,0xfb,0xc9,0x2a,0x4f,0xaf,0x49,0x17,0x17,0xac,0x3a,0x51,0x8a,0xee,0x4f,0x49,
+ 0x66,0xe3,0x57,0x75,0x33,0x3a,0xcd,0x76,0x61,0x12,0x21,0x5c,0x63,0x10,0xe1,0x61,
+ 0xce,0x9e,0xa6,0x64,0xb2,0xa0,0x78,0x24,0x72,0x08,0x20,0xf0,0xa4,0x92,0x93,0xca,
+ 0x54,0x41,0xf3,0xfd,0x03,0x15,0xbc,0x5d,0x6c,0x17,0x5b,0xe4,0x3b,0x74,0x89,0x56,
+ 0x9b,0x52,0xd9,0x44,0xe9,0x6d,0x20,0xa9,0x11,0x8b,0xa5,0x41,0xa2,0xbe,0x3f,0x64,
+ 0x28,0xa0,0x80,0x4f,0x6e,0x78,0x1c,0xf2,0x40,0x36,0x77,0xe1,0x55,0xb9,0xb3,0x93,
+ 0x63,0x92,0x34,0x86,0xff,0x00,0x28,0xae,0xe7,0x68,0x6d,0x52,0xec,0x6e,0x39,0xea,
+ 0xec,0x4e,0x79,0x71,0x8e,0x7d,0xcb,0x6a,0x57,0x52,0x47,0xaf,0x42,0x88,0xf4,0x6e,
+ 0xa9,0xf1,0x13,0x01,0x3b,0x66,0x0c,0x34,0xda,0x68,0x48,0xd7,0xa7,0x9d,0xac,0x43,
+ 0xbd,0x5b,0xb5,0xff,0x00,0x09,0x07,0x80,0x90,0x3f,0xee,0x3b,0x82,0xa2,0x8e,0x96,
+ 0xea,0x16,0x7b,0xe1,0xbb,0xba,0x59,0x4c,0x5c,0x18,0x71,0xf6,0x22,0xb8,0x22,0x5d,
+ 0xed,0xe8,0x3c,0x33,0x77,0xb7,0xa8,0x85,0x25,0xc6,0xc9,0xed,0xcf,0x1c,0x2d,0x0a,
+ 0xf5,0x4a,0x81,0x4a,0xbf,0x7d,0x26,0xfa,0x30,0x3c,0xe6,0xc9,0xa9,0x98,0x6d,0x9f,
+ 0x2a,0xc6,0xe7,0xb5,0x74,0xb1,0x5d,0xa3,0x22,0x5c,0x49,0x4d,0x1e,0xcb,0x42,0x87,
+ 0xa1,0x1e,0xa9,0x50,0x3c,0x85,0x24,0xf7,0x49,0x04,0x10,0x08,0x22,0xa0,0xcf,0x88,
+ 0x86,0xd4,0xd1,0xaf,0xba,0x60,0xbc,0x8e,0xc3,0x0b,0xcc,0xce,0xf1,0xa6,0x56,0xf4,
+ 0x50,0xcb,0x7c,0xbb,0x3e,0x28,0xf9,0x9c,0x8a,0x78,0xee,0xa2,0x3b,0xad,0xb1,0xdf,
+ 0xe6,0xe5,0x20,0x7d,0xe1,0x35,0x1e,0xbc,0x23,0xb7,0x7a,0xbc,0x1b,0x32,0xff,0x00,
+ 0x33,0x19,0x54,0xf2,0x9c,0x7e,0xfa,0xf1,0x72,0xc2,0xf4,0x97,0x78,0x4c,0x39,0xe7,
+ 0xd6,0x38,0xea,0xf4,0x4b,0xfe,0xc0,0x1f,0xeb,0x40,0x00,0x12,0xe9,0x35,0xd0,0x72,
+ 0x8e,0x63,0x8f,0x32,0x61,0xc2,0x73,0xb4,0xad,0xd9,0xe3,0xa1,0xea,0x3c,0x9d,0xc8,
+ 0xf7,0x1e,0x0a,0x09,0x63,0xec,0xdd,0x6f,0x05,0x71,0x34,0xa5,0x2b,0x77,0x51,0x25,
+ 0x29,0x4a,0x22,0x52,0x94,0xa2,0x25,0x46,0x0f,0x10,0xbd,0xd2,0x0d,0xb0,0x68,0x24,
+ 0xe9,0x56,0xa9,0x48,0x67,0x35,0xbf,0xf5,0x5b,0x6c,0x68,0x3d,0xd4,0xda,0xc8,0xfb,
+ 0xd9,0x20,0x7f,0xb2,0x41,0xe4,0x1e,0xe3,0xad,0x4d,0x82,0x08,0x35,0x27,0xeb,0xcf,
+ 0x9f,0x88,0x76,0xe5,0x17,0xb9,0x1d,0xc5,0xde,0x26,0x40,0x96,0xe3,0xd8,0x95,0x80,
+ 0xaa,0xd1,0x65,0x6c,0xab,0xee,0xd4,0xda,0x14,0x43,0xb2,0x12,0x07,0x6f,0xbd,0x70,
+ 0x29,0x41,0x5e,0xa5,0x01,0xb0,0x7f,0x64,0x00,0x45,0xa1,0x30,0x1c,0x1e,0xf3,0xaa,
+ 0x39,0xc5,0x9b,0x16,0xb1,0xb0,0x65,0xde,0xaf,0x12,0xd1,0x16,0x3a,0x54,0x4f,0x1d,
+ 0x4a,0x3d,0xd4,0xb2,0x01,0xe1,0x29,0x1c,0xa9,0x4a,0xf6,0x00,0x9f,0x6a,0xbf,0x9d,
+ 0x06,0xd1,0x9b,0x2e,0x81,0x69,0x5d,0x8f,0x0a,0xb2,0x24,0x29,0x88,0x0d,0x73,0x22,
+ 0x57,0x4f,0x0b,0x97,0x21,0x5d,0xdd,0x79,0x5d,0xcf,0x75,0x2b,0x9e,0x07,0x3f,0x28,
+ 0xe9,0x48,0xec,0x91,0x50,0x97,0xc2,0x6f,0x6e,0x7f,0x66,0xda,0x2e,0x5a,0xc1,0x7a,
+ 0x8a,0xa1,0x26,0x77,0x5d,0xba,0xc2,0x97,0x12,0x38,0x4b,0x00,0xf0,0xfc,0x81,0xf8,
+ 0xa9,0x43,0xcb,0x07,0xb7,0x01,0x0e,0x7a,0x85,0x0a,0xb1,0x95,0xad,0x2d,0x21,0x4b,
+ 0x5a,0x82,0x10,0x90,0x4a,0x94,0xa3,0xc0,0x03,0xdc,0x9a,0xf9,0x4b,0xe2,0x5e,0x63,
+ 0x38,0x85,0x77,0xd9,0x54,0xee,0xfe,0x5c,0x27,0xbd,0xe6,0xff,0x00,0x1f,0xcb,0xc7,
+ 0xad,0xd6,0x46,0x06,0x69,0x1a,0x8f,0x8a,0xe8,0xb3,0xec,0x2e,0x06,0xa3,0xe1,0x77,
+ 0xac,0x5e,0xea,0xe4,0x96,0xad,0x97,0x78,0xab,0x87,0x28,0xc3,0x74,0xb4,0xe9,0x69,
+ 0x63,0x85,0x80,0xa1,0xe9,0xc8,0xe4,0x1f,0xc0,0x9a,0xd6,0xfa,0x57,0xb5,0xed,0x24,
+ 0xdb,0x5c,0x29,0x77,0x9c,0x67,0x16,0x62,0x14,0xc8,0xcc,0x38,0xf3,0xf7,0x89,0x01,
+ 0xc9,0xb3,0x42,0x02,0x0f,0x5f,0x42,0x95,0xd4,0xa4,0xf2,0x9e,0x41,0x43,0x40,0x75,
+ 0x7d,0x09,0xae,0xbf,0x6e,0xdb,0xc1,0xc3,0xb7,0x29,0x96,0x66,0xd6,0x2c,0x71,0x0e,
+ 0xb2,0xe6,0x3b,0x20,0x06,0x1e,0x7d,0x63,0x8b,0x94,0x52,0x7a,0x7e,0x25,0xb4,0xf6,
+ 0x29,0x4f,0x58,0x23,0x83,0xdc,0x05,0x36,0x4f,0x05,0x65,0x29,0xde,0xd5,0xcc,0x67,
+ 0x38,0x9e,0x11,0xaf,0x0d,0xa8,0x2f,0x8c,0x1b,0x17,0x32,0xe4,0x5e,0xe0,0x11,0x71,
+ 0xc1,0xdb,0xad,0xed,0xd2,0xea,0x71,0xa5,0xdd,0xe0,0xab,0x73,0x77,0x1e,0x28,0x96,
+ 0xd7,0x6c,0x93,0x71,0x4d,0x1a,0x7d,0xf9,0x13,0x24,0xa0,0xb5,0x23,0x2c,0x5b,0x6a,
+ 0x65,0x2c,0x20,0x8f,0x98,0x45,0x42,0xc0,0x59,0x5f,0x7e,0x3c,0xc5,0x04,0xf4,0xf0,
+ 0x4a,0x42,0x89,0x0a,0x4f,0x55,0xe1,0x05,0xa5,0x0b,0x99,0x78,0xcd,0x75,0x36,0x68,
+ 0x2a,0x4b,0x08,0x4d,0x8e,0x12,0x95,0xdf,0xa9,0xc5,0xf4,0xbd,0x21,0x47,0xe8,0x40,
+ 0x0c,0x80,0x7d,0xfc,0xc5,0x7d,0x2a,0x18,0xee,0x87,0x00,0x6b,0x4e,0x77,0x1b,0xa8,
+ 0x38,0xc4,0x06,0xba,0x62,0x45,0xbd,0x3f,0xf0,0x6c,0x36,0x3f,0x61,0x97,0x15,0xe6,
+ 0x34,0x80,0x3d,0xf8,0x42,0xd2,0x3f,0x4a,0xba,0x5d,0xa2,0xe8,0xea,0xb4,0x2b,0x6f,
+ 0x78,0x86,0x2b,0x26,0x32,0x63,0x5d,0xd1,0x1b,0xe3,0x2e,0x89,0x1c,0x15,0x7c,0x5b,
+ 0xc7,0xcc,0x74,0x28,0x8e,0xca,0x28,0xe4,0x37,0xcf,0xd1,0xb1,0x5d,0xc7,0x33,0x33,
+ 0x0d,0xcb,0x39,0x59,0x94,0xb8,0x58,0xb1,0xaa,0xd3,0xb9,0xdd,0xce,0x6d,0x83,0x89,
+ 0x27,0xd2,0xc2,0xc0,0x00,0x35,0x6c,0x37,0x56,0xb1,0xea,0x92,0x4b,0xbb,0xc1,0x44,
+ 0x6f,0x18,0x0d,0x57,0x10,0xec,0x18,0x5e,0x9c,0x44,0x96,0x03,0xd3,0x1e,0x5d,0xee,
+ 0xe0,0xc2,0x09,0x0a,0x0d,0x23,0xa9,0xa8,0xfd,0x5f,0x54,0xa9,0x4a,0x7c,0xf1,0xf5,
+ 0x68,0x1f,0x61,0x53,0xd7,0x18,0x74,0xe2,0xba,0x6d,0x68,0x72,0xe0,0xb5,0x28,0xdb,
+ 0x6d,0x0c,0xaa,0x42,0xdc,0x3f,0x31,0xf2,0xd9,0x1d,0x64,0x93,0xef,0xf2,0x9a,0xa4,
+ 0x0d,0xcf,0x6a,0x7a,0xf7,0x23,0xba,0x7b,0xdd,0xd6,0x17,0xf4,0x8b,0x7c,0xcb,0x9b,
+ 0x56,0x9b,0x4a,0x1b,0x57,0x50,0x5c,0x66,0xd4,0x19,0x69,0x49,0xff,0x00,0xc4,0xe0,
+ 0xb9,0xc7,0xd5,0xc3,0x57,0x3f,0xb8,0x5b,0x81,0xc7,0xf6,0xf7,0xa8,0xf2,0xd2,0xae,
+ 0x83,0x17,0x1a,0xb8,0x29,0x2a,0x1e,0xc4,0x46,0x5f,0x15,0xab,0xe6,0x6c,0x23,0xec,
+ 0xdc,0x2f,0x06,0xc2,0xdc,0x2c,0xf7,0x6a,0x73,0xba,0xea,0x79,0x67,0xed,0x7b,0x7b,
+ 0x29,0x23,0x7d,0xdc,0xe7,0x2a,0xaa,0xc6,0xb6,0x5f,0x97,0xeb,0xbe,0xd7,0x74,0xff,
+ 0x00,0x2f,0xc1,0xac,0xad,0xdd,0xb2,0x49,0x17,0x7b,0x9b,0x77,0x15,0x39,0x29,0x98,
+ 0xe5,0xc8,0xc5,0xc0,0x1b,0x59,0x53,0xab,0x48,0x21,0x0e,0x34,0xe8,0xe0,0x72,0x7e,
+ 0xf7,0xd3,0x81,0xdb,0xfb,0xb7,0xf8,0x54,0x6b,0xa4,0xc4,0xa4,0xbc,0xce,0x3b,0x00,
+ 0x9f,0x51,0x22,0xe9,0xc9,0x1f,0xe0,0x42,0xaa,0xca,0xb6,0x4f,0x88,0x7f,0x90,0xbb,
+ 0x50,0xd3,0x4b,0x62,0xb9,0x05,0x56,0x94,0xdc,0x17,0xd5,0xfb,0xa6,0x4a,0xd7,0x24,
+ 0x83,0xf9,0x17,0x88,0xfd,0x2b,0x76,0x25,0x41,0x69,0x0a,0x49,0x0a,0x49,0x1c,0x82,
+ 0x3d,0x08,0xa9,0xab,0xbe,0x23,0xe2,0xf4,0x35,0x75,0x14,0xd4,0x9a,0x0c,0x6d,0x91,
+ 0xfa,0x49,0x04,0x9b,0x6a,0x36,0xf1,0xb7,0xa6,0xdc,0x2a,0x08,0x1a,0x40,0x25,0x53,
+ 0x3d,0xdb,0xc2,0xaf,0x5d,0x6d,0xcc,0xa9,0x71,0xe2,0xe3,0xf7,0x55,0x01,0xc8,0x6e,
+ 0x25,0xd4,0x25,0x47,0xf0,0x1e,0x6a,0x50,0x3f,0xbc,0xd6,0x00,0xf6,0xc1,0x35,0xee,
+ 0x26,0x43,0x6d,0xb4,0x49,0xd3,0xbb,0x83,0x2e,0xce,0x7d,0x2c,0x26,0x52,0x1d,0x69,
+ 0xf8,0xac,0xf3,0xfb,0xee,0xba,0xd2,0xd6,0x96,0xd0,0x07,0x72,0xa5,0x1f,0xcb,0x93,
+ 0xc0,0xab,0xcc,0xba,0x5e,0x6d,0xf6,0x38,0xe9,0x7e,0xe5,0x3a,0x35,0xbd,0x85,0x28,
+ 0x20,0x3b,0x29,0xe4,0xb4,0x92,0xa3,0xe8,0x39,0x51,0x03,0x9e,0xc7,0xb5,0x75,0x12,
+ 0xf5,0x23,0x13,0x83,0x02,0x54,0xd7,0xf2,0x6b,0x4b,0x71,0x22,0xb4,0xa7,0x9e,0x77,
+ 0xe3,0x5b,0x21,0xb4,0x24,0x12,0xa5,0x1e,0x15,0xe8,0x00,0x27,0xf4,0xa5,0x3f,0xc5,
+ 0x0c,0x7e,0xdb,0xc2,0xc7,0xdf,0xf0,0xbb,0x9f,0x67,0x5b,0xf4,0x43,0x4e,0xc5,0x50,
+ 0x5b,0xc4,0xd2,0xcb,0x56,0x82,0xc1,0xc0,0x34,0x27,0x11,0x22,0xef,0x7e,0x7c,0x22,
+ 0xf3,0x90,0x4d,0x69,0x20,0xbd,0x72,0xb8,0xba,0x4b,0x31,0x9b,0xe3,0xb9,0x42,0x5b,
+ 0x4f,0x9b,0xd0,0xdf,0x3e,0x8f,0xf5,0x1e,0x4a,0x8a,0x8c,0x59,0xc9,0xb1,0xd9,0x58,
+ 0xb6,0x51,0x75,0xb0,0xca,0xe9,0x5c,0xdb,0x74,0xc7,0x60,0xbb,0xe5,0x72,0x52,0x5c,
+ 0x6d,0x65,0x0a,0xe9,0xfa,0x8e,0x41,0xe2,0xa6,0x16,0xda,0x10,0xf6,0xef,0xbc,0x42,
+ 0xe4,0x66,0xf3,0x1a,0x71,0x16,0xc8,0xb3,0xdd,0xc9,0x14,0xd3,0x87,0x95,0xb5,0x1e,
+ 0x39,0x4a,0x21,0xb6,0x4f,0xa1,0x29,0x57,0xc3,0x24,0xfd,0x42,0x55,0xc5,0x70,0xb4,
+ 0xc3,0x45,0x86,0xa4,0xf8,0x95,0xdf,0xec,0x12,0xa1,0x99,0x16,0x9b,0x56,0x5b,0x72,
+ 0xbb,0xce,0x41,0x48,0x28,0xf8,0x76,0x24,0x2d,0xc4,0x75,0x8f,0xe0,0x5a,0xfc,0x94,
+ 0x11,0xef,0xe6,0x71,0xef,0x5d,0x92,0x87,0x16,0xfb,0x22,0x37,0xd2,0xd6,0xbb,0x54,
+ 0x91,0x43,0xdb,0x4a,0x7c,0x4b,0x9c,0x49,0x23,0xdb,0x80,0x3a,0x69,0x03,0x6b,0x05,
+ 0x6c,0xe6,0xea,0xdc,0x78,0x9b,0x29,0x93,0xa8,0x3a,0x10,0xbd,0x3e,0xf0,0xc9,0xbc,
+ 0x60,0x6f,0xa0,0x19,0xd6,0xdc,0x6c,0x5c,0xa6,0xa5,0x3d,0xc0,0x92,0x87,0x93,0x35,
+ 0xe0,0x08,0xf5,0x09,0x5a,0x54,0x01,0xf7,0x09,0x15,0xd4,0xf8,0x46,0x3f,0xe6,0xed,
+ 0xb2,0xfa,0xdf,0xfa,0xbc,0x9a,0x40,0xfe,0xf8,0xd1,0x8f,0xfd,0xea,0x4f,0xee,0x12,
+ 0x0f,0xda,0x9a,0x09,0xa9,0x30,0xf8,0xea,0xf3,0xf1,0xbb,0x93,0x7c,0x7d,0x79,0x8a,
+ 0xe0,0xa8,0x9b,0xe0,0xfd,0x2c,0x2f,0x42,0x73,0x18,0xbf,0xbc,0xd6,0x48,0xa7,0x0f,
+ 0xe4,0xa8,0xac,0x0f,0xfd,0x86,0xb8,0x24,0x75,0x92,0xd7,0xe5,0x4c,0x42,0x49,0x4d,
+ 0xdc,0x67,0x6b,0xcf,0xab,0xf9,0xfd,0x95,0xd9,0x16,0x91,0xa0,0x74,0x53,0xc6,0xa1,
+ 0xcf,0x8a,0xa6,0x04,0xee,0x59,0xb6,0x05,0x5e,0x23,0xb6,0x16,0xee,0x37,0x76,0x8d,
+ 0x3d,0xc3,0xc7,0x2a,0xf2,0x57,0xd5,0x1d,0x5c,0x7f,0x69,0xe6,0xc9,0xfc,0x12,0x4f,
+ 0xb5,0x6b,0x1f,0x10,0xfd,0x6e,0xcc,0xb4,0x2b,0x73,0x9a,0x57,0x7d,0xb3,0x64,0x97,
+ 0x78,0x36,0x06,0xe0,0xb4,0xfc,0xcb,0x3c,0x79,0xae,0x26,0x1c,0xb0,0xdc,0xb7,0x3c,
+ 0xe0,0xe3,0x21,0x5d,0x0a,0x2b,0x6d,0x41,0x24,0x91,0xcf,0x01,0x3d,0xfe,0x51,0xc4,
+ 0xe1,0xd5,0x6c,0x32,0x36,0xb0,0x69,0x0e,0x51,0x8c,0xb3,0x21,0x95,0x33,0x90,0x5a,
+ 0x1f,0x8b,0x1e,0x57,0x3d,0x6d,0x85,0x3a,0xd1,0xf2,0x9c,0xe4,0x7a,0x80,0xa2,0x95,
+ 0x76,0xfa,0x56,0x22,0x8a,0x92,0x5c,0xb9,0x3e,0x19,0x8d,0x3d,0xc0,0xc7,0x21,0xd5,
+ 0xe8,0x1a,0xeb,0x38,0x1f,0x62,0xbd,0x92,0x1e,0x1c,0xc5,0x1b,0xfc,0x38,0xf4,0x47,
+ 0x05,0xb4,0xed,0x75,0xab,0xa4,0x50,0xde,0x4a,0xe6,0x6e,0xd2,0x95,0x7c,0x33,0xe3,
+ 0x8f,0x2d,0x5d,0x05,0x6d,0x18,0x65,0xa2,0x48,0x2d,0xb6,0x7c,0xd1,0xc9,0xee,0xbe,
+ 0xb2,0xae,0xc0,0xa5,0x29,0x8a,0x9b,0xa1,0xda,0x56,0x4f,0xb2,0xcd,0x49,0xb6,0x6a,
+ 0xfe,0x96,0x17,0xe4,0xe2,0x10,0x27,0x22,0x5a,0x01,0x2a,0x5b,0x96,0x85,0xf5,0x01,
+ 0xe4,0x3e,0x41,0xea,0x5c,0x77,0x3a,0x8a,0x02,0xc9,0xf4,0x51,0x42,0xcf,0x24,0x29,
+ 0x7b,0x93,0xc2,0x33,0x52,0x25,0x2b,0x1a,0xce,0xb4,0xce,0xe6,0x3c,0xa9,0x56,0x49,
+ 0x89,0xb9,0x46,0x69,0xc3,0xf7,0x89,0x4b,0x9f,0x76,0xfa,0x38,0xf6,0x08,0x5b,0x68,
+ 0x3f,0x9b,0xa7,0xf0,0xab,0x03,0xb8,0x5b,0xe2,0xdd,0xa0,0x49,0x83,0x3a,0x33,0x33,
+ 0x61,0x49,0x6d,0x4c,0xbf,0x1a,0x43,0x61,0xc6,0xdd,0x6d,0x43,0x85,0x21,0x49,0x3c,
+ 0x85,0x24,0x82,0x41,0x07,0xb1,0x06,0xb6,0x3c,0x47,0x1c,0xc4,0x32,0xc6,0x66,0xac,
+ 0xed,0x5d,0xda,0xc7,0x23,0xbb,0xcd,0x77,0x0f,0x63,0x87,0x77,0xc8,0x10,0xd2,0x00,
+ 0x20,0x6d,0xc5,0xad,0x70,0xa3,0x6b,0x1b,0x24,0x63,0xc1,0x62,0x9a,0x3b,0xaa,0x76,
+ 0x8d,0x6a,0xd3,0x3c,0x7f,0x35,0xb1,0xac,0x7c,0x05,0xda,0x32,0x5e,0xf2,0xba,0xfa,
+ 0x94,0xc3,0x83,0xe5,0x71,0x95,0x1e,0x07,0xcc,0x85,0x85,0x24,0xf6,0xef,0xd3,0xcf,
+ 0xa1,0xaa,0xa2,0xf1,0x1f,0xdb,0x83,0xba,0x0d,0xac,0x71,0xf3,0x8c,0x61,0xa5,0xdb,
+ 0xf1,0xac,0x95,0xf5,0x4c,0x8e,0xa8,0x61,0x4d,0x8b,0x7d,0xc1,0x24,0x29,0xc4,0x25,
+ 0x43,0xf6,0x3a,0x8f,0xde,0xa3,0x82,0x38,0xe5,0x61,0x20,0x06,0xea,0xc4,0xb4,0x53,
+ 0x43,0xe5,0x6d,0xa7,0x3d,0xbc,0xd9,0x71,0xa2,0xf4,0xbd,0x2c,0xc9,0x1d,0x54,0xe8,
+ 0xb0,0x55,0xf3,0xb9,0x61,0xb8,0x00,0x3a,0xd0,0x0f,0xaa,0xa3,0xba,0x80,0x38,0x51,
+ 0x27,0xa1,0x4d,0xa5,0x27,0xf6,0xfa,0x8e,0x59,0xb9,0x8d,0x11,0x83,0xb8,0x4d,0x18,
+ 0xc8,0xb0,0xc9,0x41,0x28,0x97,0x25,0x9f,0x3e,0xdd,0x25,0x5d,0xbe,0x1e,0x62,0x39,
+ 0x53,0x2b,0xe7,0xe9,0xd5,0xf2,0xab,0xea,0x95,0x28,0x76,0xe6,0xb1,0x78,0x0e,0x35,
+ 0x06,0x59,0xc7,0x84,0xf4,0xaf,0xbd,0x2c,0x9b,0x1e,0xba,0x0f,0x51,0xfd,0x4c,0x3c,
+ 0xf5,0xb1,0xb6,0xce,0xb9,0xf4,0xf6,0x19,0x19,0x63,0xca,0xee,0x36,0x27,0xb9,0xb6,
+ 0xf7,0x49,0xa0,0x56,0xac,0x82,0x5b,0xa9,0x39,0x4d,0xb4,0x8b,0x65,0xf5,0xa4,0xa4,
+ 0x27,0x99,0x48,0x48,0x3e,0x68,0x48,0xe0,0x04,0xba,0x92,0x95,0x8e,0x00,0x00,0xa9,
+ 0x49,0x1f,0xb3,0x52,0x1e,0xa8,0x67,0xc3,0x97,0x5e,0xe7,0x6d,0x77,0x74,0x88,0xc7,
+ 0xb2,0x4e,0xbb,0x5d,0x93,0x21,0x7c,0x63,0xb7,0xc8,0xd2,0xd5,0xe5,0x88,0x92,0x43,
+ 0x85,0x2c,0xba,0xb0,0x48,0x00,0xb6,0xe9,0x28,0x25,0x5d,0x92,0x87,0x1c,0x35,0x7c,
+ 0xd5,0xf6,0x50,0x21,0xc0,0x39,0xa6,0xe0,0xac,0x5a,0x52,0x94,0xaa,0xa2,0x52,0x94,
+ 0xa2,0x28,0xb1,0xe2,0x4b,0xb8,0x03,0xa0,0x7b,0x5f,0xbf,0x39,0x01,0xf7,0x18,0xc8,
+ 0xb2,0x52,0x6c,0x36,0xc5,0xb2,0xae,0x95,0xb4,0xa7,0x50,0xaf,0x35,0xd0,0x79,0x05,
+ 0x3d,0x0d,0x07,0x38,0x50,0xee,0x16,0x51,0xf5,0xe4,0x51,0x6e,0x90,0x69,0x9d,0xcf,
+ 0x58,0xf5,0x37,0x1b,0xc2,0xec,0xe8,0x26,0x75,0xe2,0x62,0x23,0x05,0xf1,0xc8,0x65,
+ 0xbf,0x57,0x1d,0x57,0xf2,0xa1,0x01,0x4b,0x3f,0x82,0x4d,0x4b,0x9f,0x17,0xad,0x6f,
+ 0x1a,0x91,0xb9,0x16,0x70,0xf8,0x32,0x54,0xed,0xa3,0x0a,0x88,0x21,0xa9,0x00,0x82,
+ 0x83,0x35,0xde,0x1c,0x90,0xa1,0xf9,0x27,0xc9,0x6c,0xf3,0xe8,0x5a,0x57,0xeb,0x9b,
+ 0x78,0x44,0x68,0x98,0x9b,0x76,0xca,0x35,0x4a,0xe3,0x13,0xa9,0xb8,0x43,0xec,0x6b,
+ 0x4b,0xab,0xe3,0x8f,0x35,0x40,0x2e,0x4a,0xd2,0x3d,0x79,0x4a,0x0b,0x68,0x07,0xd3,
+ 0x87,0x56,0x3e,0xbc,0x6b,0x19,0x97,0x17,0x6e,0x07,0x85,0x4f,0x5d,0xf7,0x9a,0x2c,
+ 0xdf,0x37,0x1d,0x9b,0xfa,0xee,0x7c,0x81,0x52,0x46,0xdd,0x6e,0x01,0x59,0x1e,0x15,
+ 0x87,0xda,0xf4,0xff,0x00,0x11,0xb3,0x63,0x36,0x48,0xe2,0x2d,0xa2,0xd3,0x11,0xa8,
+ 0x51,0x5a,0xe7,0x92,0x96,0xd0,0x90,0x91,0xc9,0xf7,0x27,0x8e,0x49,0x3d,0xc9,0x24,
+ 0x9f,0x5a,0x88,0x9e,0x27,0xfb,0x8e,0x3a,0x57,0xa4,0xad,0xe0,0xb6,0x69,0x41,0xbc,
+ 0x93,0x2f,0x6d,0x6d,0x3c,0x5b,0x73,0x87,0x23,0xdb,0xc7,0x67,0x54,0x40,0xee,0x3c,
+ 0xc3,0xf7,0x43,0x9e,0xc4,0x79,0xbc,0x77,0x4d,0x4d,0x37,0x1c,0x43,0x4d,0xa9,0x6e,
+ 0x29,0x28,0x42,0x41,0x52,0x94,0xa3,0xc0,0x48,0x1e,0xa4,0x9f,0x61,0x54,0x07,0xba,
+ 0xfd,0x6c,0x7f,0x5f,0xf5,0xdf,0x27,0xcb,0x0b,0xbd,0x76,0xc5,0x3e,0x62,0x5a,0xd0,
+ 0x39,0x01,0x10,0x9a,0x25,0x2d,0x70,0x0f,0x70,0x54,0x39,0x59,0xfe,0x65,0xab,0xd3,
+ 0xd2,0xbe,0x65,0xf8,0x7b,0x82,0x1c,0x73,0x19,0x35,0x55,0x3d,0xe6,0x43,0xdf,0x75,
+ 0xfc,0x5c,0x4f,0x74,0x1f,0x7b,0xb8,0xf5,0xb7,0x9a,0xbf,0x99,0xfa,0x1b,0x61,0xe2,
+ 0xb7,0x1f,0x85,0x65,0xd5,0xeb,0x76,0xec,0x22,0x47,0x6c,0x90,0x89,0xf6,0x69,0xb1,
+ 0x9d,0x03,0xdd,0x20,0x25,0xde,0xff,0x00,0xda,0x69,0x35,0x73,0x55,0x53,0x5e,0x11,
+ 0x9a,0x5d,0x3a,0xf5,0xab,0xd9,0x0e,0x76,0xe3,0x5d,0x36,0x8b,0x1d,0xb9,0x50,0x50,
+ 0xe9,0xf5,0x5c,0xa7,0xd4,0x9e,0x12,0x9f,0xaf,0x4b,0x68,0x70,0x9f,0xa7,0x52,0x3e,
+ 0xb5,0x63,0xfb,0x8a,0xd5,0x96,0x74,0x3f,0x45,0x72,0xcc,0xcd,0x7d,0x0a,0x93,0x6e,
+ 0x86,0xaf,0x82,0x69,0xcf,0x47,0x65,0x2f,0x84,0x30,0x8e,0x3d,0x48,0x2e,0x29,0x1c,
+ 0xf1,0xdf,0x8e,0x4f,0xb5,0x5d,0xfc,0x46,0x68,0xaf,0xcc,0xcd,0xa5,0xa6,0xdd,0xe5,
+ 0xac,0x65,0xbf,0x11,0x26,0xc3,0xe8,0x42,0xa4,0x1b,0x47,0x72,0xab,0xd7,0x46,0xb4,
+ 0xb1,0xbd,0xcf,0xf8,0x8c,0xea,0x06,0x59,0x2e,0x3a,0x65,0xe2,0x38,0xad,0xf1,0xd9,
+ 0xaf,0x38,0x4f,0xdd,0xbe,0xe3,0x0e,0x79,0x30,0xd1,0xf8,0x85,0x29,0xa0,0xe7,0x07,
+ 0xb1,0x4b,0x6a,0x07,0xd4,0x03,0x64,0x7a,0xb7,0x85,0xdc,0x75,0x1b,0x4d,0x32,0x4c,
+ 0x5e,0xd5,0x7d,0xff,0x00,0x26,0xa6,0xde,0x21,0x2e,0x12,0x6e,0xa2,0x31,0x90,0x63,
+ 0xa1,0x7f,0x2b,0x84,0x36,0x16,0x8e,0x54,0x50,0x54,0x01,0xea,0x1c,0x12,0x0f,0x7e,
+ 0x38,0x3a,0xc7,0x65,0x1a,0x06,0xad,0x01,0xd0,0xeb,0x65,0xbe,0xe4,0xd2,0x46,0x57,
+ 0x78,0x57,0xda,0xd7,0xc7,0x88,0xe5,0xc3,0x25,0xc0,0x08,0x69,0x47,0xfd,0x9a,0x7a,
+ 0x51,0xc0,0xed,0xd4,0x16,0x47,0xed,0x12,0x79,0x5a,0xa3,0xbd,0x7d,0x1c,0xd1,0xbc,
+ 0xc5,0xfc,0x5b,0x29,0xcb,0x93,0x0e,0xf9,0x1d,0x28,0x54,0x88,0xac,0x43,0x7e,0x47,
+ 0x91,0xd4,0x02,0x92,0x16,0xa6,0xd0,0xa0,0x0f,0x04,0x1e,0x9e,0x79,0xe0,0x8e,0xdd,
+ 0xc5,0x61,0x71,0xca,0xda,0xbc,0x6f,0x16,0x64,0x58,0x4b,0x1d,0x23,0x69,0x83,0x5b,
+ 0x18,0x6b,0x75,0x6c,0xcb,0x0d,0x56,0xb1,0x04,0x13,0xd4,0x5a,0xd6,0x05,0x7b,0x60,
+ 0x0c,0x6d,0xdd,0xe2,0xb4,0x66,0x8b,0x78,0x54,0x62,0x5a,0x5d,0x9c,0x58,0x32,0x9b,
+ 0xbe,0x6b,0x73,0xc9,0xa7,0x59,0x66,0xb5,0x70,0x8f,0x1d,0xb8,0x4d,0xc3,0x8e,0xb7,
+ 0x5a,0x58,0x5a,0x3a,0xd3,0xd4,0xe2,0x8a,0x42,0x80,0x3c,0x05,0x0e,0x78,0xef,0xdb,
+ 0xb5,0x6d,0x2f,0x11,0x4c,0xac,0xe2,0x9b,0x41,0xce,0xd4,0xdb,0xbe,0x5c,0x9b,0x82,
+ 0x23,0x5b,0x9a,0xe7,0xf7,0xbc,0xd9,0x0d,0x87,0x07,0xfe,0x50,0x72,0xb7,0x9e,0x07,
+ 0x9f,0xe3,0xba,0x9f,0x8b,0x42,0xc8,0xf1,0x5b,0xbc,0x6b,0xe5,0x92,0x62,0x4a,0x99,
+ 0x99,0x15,0x5c,0xa4,0xf0,0x78,0x29,0x20,0xf0,0x52,0xa0,0x7b,0x14,0xa8,0x02,0x0f,
+ 0x62,0x05,0x42,0x2f,0x18,0x0c,0xe9,0x8b,0x66,0x92,0x61,0x78,0x92,0x54,0x7e,0x32,
+ 0xef,0x77,0x5c,0xf3,0xc1,0xec,0x19,0x8c,0xd1,0x4a,0x81,0xfc,0xd5,0x21,0xbe,0x3f,
+ 0xdd,0x35,0x2e,0x15,0x57,0x8a,0x66,0x2c,0xcd,0x46,0xcc,0x51,0xe5,0xef,0x63,0xc6,
+ 0xc4,0x01,0x60,0xd3,0xa8,0x8b,0x00,0x00,0xe3,0x7d,0x95,0x1c,0x1a,0xc8,0xce,0x95,
+ 0x5a,0x79,0x46,0xb3,0xe7,0xb9,0xb5,0x92,0x35,0x9a,0xfd,0x99,0x5f,0x2e,0xd6,0x78,
+ 0xc8,0x43,0x6c,0xdb,0xa5,0xcf,0x75,0x71,0xd0,0x94,0x00,0x10,0x03,0x65,0x5d,0x3d,
+ 0x80,0x1c,0x76,0xab,0xda,0xdb,0x06,0x28,0xee,0x13,0xb7,0x5d,0x37,0xb2,0xbe,0x16,
+ 0x99,0x31,0xac,0x10,0xcb,0xe8,0x73,0xd5,0x0e,0xad,0xa4,0xad,0x69,0xfd,0x14,0xa5,
+ 0x0f,0xd2,0xa8,0x63,0x4c,0x70,0xc7,0xf5,0x17,0x51,0xf1,0x6c,0x56,0x31,0xe8,0x7e,
+ 0xf5,0x74,0x8d,0x6f,0x4a,0xf8,0xe4,0x23,0xcd,0x75,0x28,0xea,0x3f,0x80,0xea,0xe4,
+ 0xfe,0x02,0xbd,0x19,0x32,0xc2,0x23,0x32,0xdb,0x2d,0x27,0xa5,0xb6,0xd2,0x10,0x94,
+ 0x8f,0x60,0x3b,0x01,0x5b,0xf7,0xc5,0x79,0x62,0xa7,0x86,0x92,0x86,0x16,0x86,0x82,
+ 0x5c,0xf2,0x00,0xb7,0x40,0x0e,0xdd,0x6e,0x7e,0x8a,0x1a,0x70,0x4d,0xc9,0x55,0x27,
+ 0xe2,0xe7,0x9f,0x39,0x7b,0xd7,0x2c,0x7b,0x15,0x6a,0x61,0x76,0x15,0x8a,0xce,0x97,
+ 0x9c,0x8c,0x15,0xf2,0xb5,0x25,0xf5,0xa9,0x4a,0x24,0x7f,0x11,0x6d,0x0c,0x1f,0xcb,
+ 0x8f,0xad,0x41,0x4a,0xdc,0x5b,0xc3,0xcb,0xd7,0x9c,0xee,0x87,0x53,0x2e,0xcb,0x74,
+ 0x3e,0x3e,0xda,0x7e,0x1b,0x6e,0x03,0xc8,0x2d,0xc7,0x3f,0x0e,0xdf,0x07,0xdc,0x74,
+ 0x34,0x9a,0xfb,0xed,0x13,0x6f,0x12,0xf7,0x29,0xad,0x16,0xac,0x67,0x87,0x5a,0xb1,
+ 0x47,0xfe,0x9b,0x79,0x96,0xd8,0xfe,0xa6,0x22,0x08,0xea,0x48,0x3e,0xca,0x59,0x21,
+ 0xb4,0x9f,0x62,0xbe,0x78,0x21,0x26,0xba,0xd6,0x0a,0xd8,0x32,0xfe,0x5d,0x80,0xd4,
+ 0x1d,0x2d,0x8e,0x30,0xe7,0x7a,0x91,0xa9,0xdf,0xa9,0x36,0xf1,0x2a,0xd9,0xf7,0x7c,
+ 0x86,0xca,0xc6,0x3c,0x2b,0x74,0x31,0xcd,0x3c,0xd1,0x49,0x99,0xb5,0xca,0x3a,0x5b,
+ 0xbb,0x66,0x0e,0xa5,0xe6,0x39,0x07,0xad,0x10,0x5a,0xea,0x4b,0x5c,0xf2,0x3b,0x75,
+ 0xa8,0xb8,0xbe,0xdd,0x8a,0x4b,0x67,0xf0,0x19,0xd6,0xdf,0x74,0x87,0xec,0x0d,0xdc,
+ 0x6e,0x23,0x35,0x5b,0x48,0xf2,0x64,0x4d,0x81,0x6d,0x88,0xe8,0xf5,0xea,0x72,0x1b,
+ 0x12,0xe4,0x8f,0xcb,0x97,0x63,0xfe,0xa0,0xfd,0x2a,0x4b,0xdb,0xad,0xd1,0x6c,0xf6,
+ 0xf8,0xb0,0x20,0xc6,0x6a,0x1c,0x18,0xad,0x21,0x86,0x23,0x30,0x80,0x86,0xda,0x6d,
+ 0x20,0x25,0x28,0x4a,0x47,0x60,0x90,0x00,0x00,0x0f,0x40,0x2b,0xe5,0x06,0xd3,0x16,
+ 0xd9,0x2a,0xe7,0x29,0x94,0x04,0x39,0x3d,0xf1,0x2a,0x42,0xbf,0x89,0x61,0xa6,0xda,
+ 0x07,0xfc,0x0d,0x20,0x7e,0x95,0xf2,0x4d,0x76,0x62,0xa8,0xae,0xaa,0xae,0xa9,0x76,
+ 0xdf,0xc4,0x0d,0x36,0xe8,0x03,0xda,0x40,0xf6,0x6b,0x6c,0xb2,0x41,0x80,0x00,0x3a,
+ 0x2f,0x8e,0x51,0x69,0x17,0xec,0x66,0xef,0x6c,0x23,0xa8,0x4d,0x86,0xf4,0x62,0x0f,
+ 0xbf,0x5a,0x0a,0x7f,0xef,0x50,0x0b,0xc1,0xc2,0x6f,0x99,0x83,0xea,0x5c,0x3e,0x7f,
+ 0xaa,0xb8,0xc3,0x77,0x8f,0xf7,0xda,0x70,0x7f,0xfc,0xea,0xc4,0x90,0x78,0x5a,0x7f,
+ 0x3a,0xae,0x9f,0x09,0x3b,0x7f,0xd8,0x59,0x26,0xbc,0x59,0xf8,0x29,0x4c,0x19,0xf6,
+ 0xe6,0x52,0x93,0xed,0xd2,0xb9,0xc8,0x3f,0xf4,0x8a,0xc9,0xe0,0xce,0xd5,0x96,0x71,
+ 0x68,0xcf,0x87,0x60,0x47,0xe7,0x20,0xfe,0xe1,0x51,0xdf,0x3b,0x4f,0xaf,0xec,0xb1,
+ 0x9f,0x19,0x38,0x41,0x37,0xad,0x2c,0x96,0x13,0xf3,0x2e,0x3d,0xc5,0xa2,0xaf,0xa8,
+ 0x0a,0x8e,0x40,0xff,0x00,0xd4,0x7f,0xbe,0xa6,0x16,0xc5,0xb3,0x71,0x9f,0x6d,0x3f,
+ 0x4e,0x67,0x97,0x3a,0xde,0x89,0x6e,0x16,0xb7,0x41,0x57,0x2a,0x4a,0xa3,0x2d,0x4c,
+ 0x00,0x7f,0x12,0x96,0xd2,0xaf,0xc9,0x42,0xb9,0xbb,0x92,0xda,0x46,0x1b,0xba,0x6f,
+ 0xf2,0x6c,0x65,0xd3,0x6f,0x31,0x13,0x62,0x5b,0xea,0x8e,0x9b,0x43,0xed,0x35,0xe6,
+ 0xf9,0xbe,0x5f,0x50,0x70,0xad,0xa5,0x92,0x3e,0xe9,0x3c,0x74,0xf1,0xea,0x7f,0x0e,
+ 0x32,0x7d,0x09,0xd0,0x6c,0x63,0x6e,0x98,0x4b,0x98,0xae,0x25,0xf1,0xdf,0x65,0xae,
+ 0x5a,0xe6,0xab,0xed,0x09,0x1e,0x73,0x9e,0x62,0xd2,0x84,0xab,0x83,0xc0,0x00,0x70,
+ 0x84,0xf6,0x03,0xd7,0x93,0xef,0x52,0xd7,0xe3,0x74,0x15,0x79,0x56,0x93,0x0b,0xdf,
+ 0xb7,0x89,0xc4,0xf1,0xb5,0x89,0x7e,0xd7,0xbf,0x42,0x0f,0xb2,0xa0,0x61,0x12,0x17,
+ 0x78,0x15,0x5f,0x71,0x10,0x9d,0xac,0x78,0xa8,0x2d,0xa4,0xbc,0xe4,0x3c,0x7b,0x30,
+ 0x94,0x47,0x71,0xc2,0x56,0xdd,0xc3,0xe6,0x09,0x3f,0x44,0x26,0x60,0x00,0x7d,0x03,
+ 0x60,0x9f,0x43,0x56,0x91,0x55,0xf1,0xe2,0xdf,0xa6,0x12,0x1e,0xc5,0xb0,0xad,0x4f,
+ 0xb5,0xb3,0xd1,0x36,0xc5,0x2f,0xec,0xe9,0x92,0x5a,0x4f,0xde,0x25,0xa7,0x0f,0x5b,
+ 0x0b,0x51,0xf6,0x4a,0x1d,0x4a,0x80,0xfe,0x67,0xc7,0xd6,0xa6,0xb6,0x8e,0x6a,0x24,
+ 0x6d,0x5a,0xd2,0xac,0x4f,0x31,0x8a,0x12,0x86,0xef,0x56,0xd6,0x65,0xad,0xa4,0x9e,
+ 0x43,0x4e,0x29,0x03,0xcc,0x6f,0x9f,0x7e,0x95,0xf5,0x27,0xfb,0x35,0x26,0x66,0x77,
+ 0xda,0x78,0x56,0x1d,0x8c,0x0d,0xdd,0xa4,0xc4,0xff,0x00,0xee,0x8f,0x82,0x7c,0xdc,
+ 0x0d,0xfd,0x15,0x19,0xdd,0x73,0x9b,0xee,0xb3,0x1a,0x54,0x54,0xcb,0x77,0x90,0x8d,
+ 0x00,0xdc,0x4c,0x9d,0x39,0xd5,0x3e,0x96,0xb1,0xbb,0xba,0x53,0x70,0xb0,0x65,0x6d,
+ 0x36,0x10,0x96,0x59,0x75,0x44,0x79,0x12,0xd0,0x3b,0x00,0x87,0x12,0xe2,0x03,0xa9,
+ 0xfd,0xd0,0xd9,0x5a,0x7b,0xa9,0x62,0x54,0x30,0xfb,0x52,0x98,0x6d,0xf6,0x1c,0x43,
+ 0xcc,0xba,0x90,0xb6,0xdc,0x6d,0x41,0x49,0x5a,0x48,0xe4,0x10,0x47,0x62,0x08,0xef,
+ 0xcd,0x69,0x15,0xb8,0x65,0x55,0x03,0x63,0x92,0x66,0xf7,0x24,0x1a,0x9a,0xe1,0xc3,
+ 0x87,0x91,0xea,0x3c,0x41,0xdc,0x78,0x85,0x28,0x70,0x3c,0x2a,0x85,0xf1,0x52,0xd0,
+ 0x71,0xa7,0xda,0xc9,0x13,0x3b,0xb6,0x44,0x2d,0x59,0x72,0xe6,0xca,0xa4,0x29,0xb1,
+ 0xf2,0x37,0x70,0x6c,0x00,0xef,0xa0,0xf9,0x7c,0xc4,0x14,0x2f,0xbf,0x75,0x2b,0xcd,
+ 0x3e,0xc7,0x8b,0x3f,0xd8,0x0e,0xbf,0x2f,0x71,0x3b,0x63,0xc6,0x6f,0xb3,0x9e,0x4b,
+ 0xd9,0x0d,0xb0,0x1b,0x35,0xdc,0x85,0x12,0xa5,0x49,0x60,0x24,0x07,0x15,0xcf,0xef,
+ 0x38,0xd9,0x69,0xc3,0xed,0xcb,0x84,0x0f,0x4a,0xc2,0x37,0xaf,0xa2,0x23,0x5e,0x76,
+ 0xef,0x93,0x58,0xe3,0xc4,0x32,0xef,0xb0,0x9b,0xfb,0x56,0xd0,0x94,0x0e,0x57,0xf1,
+ 0x4c,0x82,0x42,0x12,0x3d,0xcb,0x88,0x2e,0x37,0xc1,0xed,0xf7,0x9c,0xfa,0x80,0x6a,
+ 0x0f,0x78,0x36,0xeb,0x59,0xc2,0xf5,0xe2,0xf1,0xa7,0xd2,0xd6,0x7e,0xcf,0xcc,0x61,
+ 0x15,0xc7,0x1c,0xfe,0xcc,0xc8,0xc9,0x5b,0x89,0xf7,0xec,0x14,0xd1,0x7f,0x9f,0x7e,
+ 0x52,0x8a,0xfa,0xcb,0xe1,0xd6,0x35,0xf6,0xb6,0x0c,0xd8,0x64,0x37,0x92,0x1e,0xe1,
+ 0xf4,0xfb,0xa7,0xe9,0xb7,0xab,0x4a,0xc7,0x4e,0xdd,0x2e,0xbf,0x55,0x74,0x94,0xa5,
+ 0x2b,0xa9,0x2b,0x74,0xae,0x8f,0x3a,0xcb,0xa1,0xe0,0x18,0x46,0x43,0x94,0x5c,0x39,
+ 0xf8,0x0b,0x25,0xba,0x45,0xca,0x47,0x07,0x8f,0xbb,0x65,0xb5,0x38,0xae,0xff,0x00,
+ 0x92,0x4d,0x77,0x95,0x0e,0x3c,0x58,0xf5,0x15,0x78,0x1e,0xce,0xaf,0x90,0x98,0x7d,
+ 0x51,0xe5,0x64,0xb7,0x08,0xb6,0x54,0x29,0xb3,0xc2,0xba,0x4a,0x8b,0xee,0x8f,0xc9,
+ 0x4d,0xb0,0xb4,0x9f,0xc1,0x44,0x7b,0xd1,0x15,0x1c,0x66,0x99,0x6d,0xcf,0x50,0xb3,
+ 0x2b,0xe6,0x4d,0x77,0x70,0x3f,0x77,0xbd,0x4e,0x7a,0xe1,0x29,0x68,0x4f,0x01,0x4e,
+ 0xba,0xb2,0xb5,0x70,0x3d,0x87,0x2a,0x3c,0x0f,0x61,0x57,0xdb,0xb5,0xed,0x23,0x6f,
+ 0x43,0x74,0x1b,0x0f,0xc4,0x02,0x14,0x99,0x91,0x21,0x25,0xe9,0xe5,0x5e,0xa6,0x5b,
+ 0xa4,0xb8,0xff,0x00,0xe8,0x16,0xb5,0x24,0x7f,0x2a,0x52,0x2a,0x9f,0x76,0x11,0xa4,
+ 0xeb,0xd5,0xcd,0xd0,0xe2,0x10,0xdc,0x60,0x3d,0x6c,0xb3,0xbd,0xf6,0xe4,0xfe,0xa0,
+ 0x0a,0x43,0x51,0xc8,0x52,0x02,0x81,0xf5,0x0a,0x77,0xca,0x41,0x1f,0xcf,0xf4,0xab,
+ 0xb1,0xc2,0xb5,0x23,0x17,0xd4,0x76,0xee,0xae,0x63,0x37,0xc8,0x77,0xb4,0xda,0xe6,
+ 0xb9,0x6e,0x9a,0x62,0x39,0xd7,0xe4,0x48,0x6c,0xf0,0xa4,0x2b,0xfe,0xc7,0xd0,0x8e,
+ 0xe0,0x91,0x5f,0x38,0xfc,0x57,0xc4,0x64,0x90,0xc3,0x87,0x44,0x09,0x6b,0x3b,0xef,
+ 0xb7,0x00,0x9b,0xb5,0x97,0xe9,0xf7,0xb9,0xe6,0xea,0xfa,0x9d,0xbc,0xb9,0x6b,0xad,
+ 0xe8,0xe5,0x4f,0xe1,0x9b,0x56,0xd4,0xcb,0x9c,0x64,0xa8,0xbf,0xf6,0x42,0xe2,0x24,
+ 0xa3,0xd5,0x3e,0x7a,0x92,0xc1,0x57,0xe8,0x1d,0x27,0xf4,0xaa,0x3a,0xd2,0xcd,0x2d,
+ 0xc8,0xf5,0x97,0x39,0xb6,0x62,0x78,0xad,0xbd,0x77,0x0b,0xbc,0xf7,0x3a,0x52,0x91,
+ 0xd9,0x0d,0x23,0xf7,0x9d,0x71,0x5f,0xba,0x84,0x8e,0xe5,0x47,0xfe,0x7c,0x0a,0xf4,
+ 0x3d,0x91,0x63,0xd6,0xdc,0xb6,0xc3,0x70,0xb2,0xde,0x61,0x33,0x72,0xb5,0x4f,0x61,
+ 0x71,0xa5,0x44,0x90,0x9e,0xa4,0x3a,0xda,0x87,0x0a,0x49,0x1f,0x88,0x35,0x87,0x69,
+ 0x1e,0xdf,0xf4,0xf3,0x42,0x20,0x48,0x89,0x82,0x62,0xd0,0xf1,0xf4,0xc9,0x3c,0xbe,
+ 0xf3,0x65,0x6f,0x48,0x77,0xbf,0x20,0x2d,0xe7,0x54,0xa7,0x14,0x90,0x7d,0x12,0x55,
+ 0xc0,0xf6,0x02,0xb4,0xcc,0xab,0x9d,0x21,0xcb,0x18,0x65,0x45,0x3b,0x21,0x2e,0x9d,
+ 0xee,0xbb,0x4e,0xda,0x78,0x03,0xbd,0xbd,0xf6,0x3b,0xd8,0x0d,0xef,0xc8,0x52,0xc9,
+ 0x17,0x68,0xe0,0x6f,0xb2,0xe3,0xed,0xdf,0x43,0x6c,0xdb,0x76,0xd2,0x7b,0x3e,0x17,
+ 0x67,0x21,0xff,0x00,0x86,0x05,0xe9,0xb3,0xbc,0xb0,0x85,0xcd,0x94,0xbe,0x3c,0xd7,
+ 0x94,0x07,0xd7,0x80,0x90,0x09,0x24,0x21,0x28,0x4f,0x27,0xa7,0x9a,0xd3,0xd9,0x1c,
+ 0xe6,0xb7,0x3d,0xba,0xcb,0x76,0x2b,0x19,0x49,0x93,0x80,0xe9,0x43,0xe8,0xbb,0xdd,
+ 0x9d,0x4a,0x7a,0x9b,0x99,0x7c,0x21,0x49,0x8f,0x1f,0x9f,0x4e,0x19,0x1d,0x6a,0x3c,
+ 0x73,0xf3,0x05,0xa4,0x8f,0x43,0x5c,0x5d,0xf8,0x6f,0x46,0x06,0xdd,0xf0,0xf9,0x38,
+ 0xde,0x39,0x31,0x99,0x3a,0x91,0x74,0x67,0xa2,0x3b,0x48,0x3d,0x5f,0x66,0x34,0xa1,
+ 0xc1,0x92,0xe0,0xf6,0x57,0x1f,0xd5,0xa4,0xfa,0x9e,0x14,0x41,0x48,0xe0,0xff,0x00,
+ 0x7e,0x18,0x62,0xd0,0xf6,0xd4,0xad,0x93,0x60,0xbc,0x64,0x5e,0x66,0xdd,0x67,0xbf,
+ 0x7c,0x79,0x6b,0x2b,0x71,0x73,0x0b,0xc4,0x02,0xb2,0x7b,0xf2,0x58,0x11,0xcf,0xeb,
+ 0xcf,0xa9,0x35,0x8e,0x8e,0x92,0xba,0x9b,0x0d,0x9b,0x33,0x56,0x02,0x5f,0x2b,0xb4,
+ 0x30,0x9e,0x6e,0xf0,0x75,0x49,0xe9,0x60,0x5a,0xdf,0xc4,0x6e,0x38,0x0b,0xd5,0xc1,
+ 0x70,0x60,0xf0,0x5b,0x97,0x71,0xfa,0xdd,0x6e,0xdb,0xd6,0x8f,0x5f,0xf3,0x59,0xe9,
+ 0x4b,0xef,0x44,0x6b,0xca,0x83,0x11,0x47,0xff,0x00,0x9a,0x96,0xbf,0x95,0x96,0xfd,
+ 0x47,0x6e,0xae,0xea,0x23,0xb8,0x4a,0x54,0x78,0x3c,0x71,0x54,0x07,0x93,0x64,0x97,
+ 0x3c,0xc7,0x21,0xb9,0x5f,0x6f,0x53,0x1c,0xb8,0x5d,0xae,0x52,0x1c,0x97,0x2e,0x53,
+ 0xbc,0x75,0x3a,0xea,0xd4,0x54,0xa5,0x1e,0x3b,0x0e,0x49,0x3d,0x80,0x00,0x7b,0x54,
+ 0xbe,0xf1,0x39,0xdc,0x90,0xd5,0xad,0x59,0x46,0x11,0x64,0x96,0x1d,0xc5,0xf1,0x15,
+ 0xad,0x97,0x14,0xd2,0xc9,0x44,0xab,0x81,0xec,0xf2,0xfe,0x84,0x37,0xc7,0x96,0x9e,
+ 0xdd,0x88,0x70,0x82,0x42,0xea,0x31,0xe8,0xb6,0x9b,0x48,0xd6,0x0d,0x58,0xc5,0x30,
+ 0xc8,0xca,0x71,0xb5,0x5e,0x6e,0x0d,0x45,0x71,0xd6,0x93,0xd4,0xa6,0x9a,0x2a,0xe5,
+ 0xd7,0x00,0xfe,0x44,0x05,0xab,0xfb,0x35,0xdd,0x72,0x0e,0x06,0xcc,0xbf,0x83,0xbb,
+ 0x10,0xab,0x1a,0x64,0x90,0x6b,0x71,0x3f,0x75,0x80,0x5c,0x0f,0xa7,0x78,0xfa,0xd8,
+ 0xf0,0xac,0xe6,0x7e,0xb7,0x69,0x0a,0xe6,0xfc,0x3e,0x30,0x09,0x5a,0x7b,0xb4,0xcc,
+ 0x22,0x34,0xe6,0xc3,0x53,0x6e,0x6d,0x3b,0x77,0x71,0x00,0xf3,0xc2,0x24,0x38,0xa7,
+ 0x1a,0xfd,0x4b,0x45,0xa2,0x47,0xb1,0x24,0x7b,0x55,0x7c,0x78,0xa9,0xea,0x40,0xcc,
+ 0xb7,0x30,0x6c,0x0c,0x15,0x7c,0x2e,0x2d,0x6d,0x62,0x09,0xef,0xca,0x54,0xfb,0x83,
+ 0xcf,0x71,0x43,0xf4,0x75,0xb4,0x1f,0xc5,0xb3,0x57,0x11,0x02,0x0c,0x3b,0x15,0xae,
+ 0x3c,0x38,0xad,0x22,0x24,0x08,0x6c,0xa5,0x96,0x9b,0x4f,0x64,0xb4,0xda,0x13,0xc2,
+ 0x40,0xfc,0x00,0x03,0xfb,0xab,0xcf,0x1e,0xb5,0x67,0xcb,0xd5,0x2d,0x5d,0xcc,0xb2,
+ 0xd5,0x85,0xa5,0x37,0x9b,0xb4,0x99,0x8d,0x21,0x67,0x92,0xdb,0x4a,0x70,0x96,0xd1,
+ 0xfd,0x94,0x74,0xa7,0xf4,0xad,0x13,0xe1,0xd3,0x1d,0x8c,0x66,0x1a,0xcc,0x62,0x41,
+ 0xc5,0xcf,0xa1,0x91,0xdb,0x7f,0xa8,0x70,0x53,0x4f,0xdd,0x60,0x6a,0xde,0x1e,0x1a,
+ 0x98,0x2b,0xd9,0xa6,0xed,0xb1,0x99,0x01,0xb0,0xe4,0x4b,0x0c,0x79,0x37,0x79,0x3c,
+ 0xfe,0xea,0x52,0xd9,0x6d,0xb2,0x3f,0xfc,0xaf,0x35,0x57,0x3f,0x98,0xe4,0x28,0xc4,
+ 0x71,0x1b,0xe5,0xf5,0xc0,0x0b,0x76,0xb8,0x2f,0xcd,0x50,0x3e,0x9c,0x36,0xda,0x96,
+ 0x7f,0xe9,0xaa,0xe1,0xf0,0x73,0xc2,0x1c,0x5d,0xc3,0x51,0xf3,0x07,0x59,0x29,0x69,
+ 0xb6,0xa2,0xda,0x63,0x3c,0x47,0x65,0x15,0x15,0x3a,0xf2,0x47,0xe5,0xd2,0xc1,0xfe,
+ 0xd0,0xa9,0xa1,0xbc,0xbc,0x88,0xe2,0xdb,0x56,0xd5,0x19,0xc9,0x07,0xa9,0x76,0x37,
+ 0xe1,0x82,0x3d,0x8b,0xe3,0xc8,0xe7,0xf4,0xf3,0x79,0xac,0x2e,0x7d,0x97,0xed,0x5c,
+ 0xd6,0xca,0x21,0xb8,0x6f,0x67,0x1f,0xe6,0x37,0x3f,0xf6,0xb2,0xf7,0x08,0xd3,0x1d,
+ 0xd5,0x07,0x49,0x92,0xec,0xc9,0x2e,0xc8,0x7d,0xc5,0x3a,0xfb,0xab,0x2e,0x38,0xe2,
+ 0xcf,0x2a,0x52,0x89,0xe4,0x92,0x7e,0xa4,0xd5,0xde,0xec,0x0b,0x6d,0x23,0x6f,0x3a,
+ 0x2b,0x19,0x77,0x48,0xa1,0xac,0xcb,0x23,0x08,0xb8,0x5d,0x89,0xfd,0xb6,0x07,0x1f,
+ 0x73,0x1b,0xd0,0x71,0xe5,0xa5,0x47,0xa8,0x7f,0x1a,0xdc,0xee,0x40,0x15,0x5f,0x5e,
+ 0x1a,0xdb,0x72,0xff,0x00,0x3c,0xda,0xd4,0x8c,0x96,0xed,0x18,0xb9,0x8b,0x62,0x0a,
+ 0x6e,0x6b,0xc1,0x68,0xe5,0x12,0x26,0x12,0x4c,0x76,0x7b,0xfa,0x80,0x52,0x5c,0x57,
+ 0xaf,0x66,0xc0,0x3f,0xb6,0x0d,0x59,0x4e,0xf6,0xb5,0xb0,0xe8,0x46,0xdd,0x32,0x6b,
+ 0xf4,0x57,0x92,0xcd,0xee,0x6a,0x05,0xaa,0xd4,0x54,0xae,0x0f,0xc4,0xbc,0x08,0x0b,
+ 0x4f,0xe2,0x84,0x07,0x1c,0x03,0xfd,0x9d,0x6d,0xff,0x00,0x11,0x31,0x59,0x71,0x1a,
+ 0xb8,0x32,0xc5,0x01,0xef,0x38,0xb7,0x5f,0xa9,0xf9,0x5a,0x7c,0x87,0xcc,0x7d,0xba,
+ 0x28,0xa0,0x68,0x68,0x32,0x39,0x64,0x5a,0x0d,0xaf,0x96,0x8d,0x79,0x19,0xbb,0xb6,
+ 0x72,0xd2,0xa2,0xe3,0xb9,0x0b,0xf6,0x56,0xde,0x69,0xc0,0xb4,0xc9,0x6d,0xb4,0x36,
+ 0x52,0xfa,0x48,0xed,0xd2,0xb2,0xa5,0xf0,0x47,0xa8,0x4f,0x35,0xa3,0xfc,0x4d,0xb5,
+ 0xd2,0x4e,0x95,0xe8,0xd5,0xb3,0x1a,0xb5,0x3c,0xa8,0xf7,0x8c,0xbe,0x6f,0xc2,0x97,
+ 0x50,0xa2,0x95,0x37,0x0d,0xa2,0x85,0xc8,0x29,0x23,0xdd,0x45,0x4d,0x36,0x47,0xa1,
+ 0x4b,0x8b,0xfc,0x2a,0x2c,0x78,0x47,0x6a,0x91,0xc7,0x35,0x93,0x21,0xc1,0xe4,0xc8,
+ 0x42,0x22,0x64,0xb6,0xff,0x00,0x88,0x8e,0xda,0xcf,0x75,0x4a,0x8d,0xca,0x80,0x4f,
+ 0xe6,0xd2,0xdf,0x27,0xeb,0xe5,0x8f,0xa5,0x61,0xbe,0x25,0x5a,0x94,0x9d,0x42,0xdd,
+ 0xa4,0x8b,0x4c,0x69,0x3f,0x11,0x6f,0xc6,0x58,0x8d,0x67,0x40,0x42,0xf9,0x6c,0x3d,
+ 0xcf,0x9a,0xff,0x00,0x03,0xd9,0x41,0x6e,0x96,0xd5,0xef,0xcb,0x5c,0x7b,0x0a,0xc2,
+ 0xe1,0xf9,0x3a,0x3a,0x4c,0xe4,0x28,0xf4,0xde,0x18,0x9a,0x24,0x17,0xf1,0x00,0x00,
+ 0x3f,0xdf,0xeb,0x62,0xbd,0xba,0x4b,0xc5,0x7f,0x15,0x73,0x2c,0x38,0x5d,0x65,0xb5,
+ 0x9f,0x55,0x24,0x2b,0xfe,0x15,0x01,0x7c,0x3a,0xd2,0x9b,0x7e,0xe5,0x37,0x3b,0x01,
+ 0x09,0xe9,0x42,0x6f,0x9f,0x28,0xe3,0xd0,0x26,0x64,0xd0,0x3f,0xea,0xa9,0xf4,0xca,
+ 0x3c,0xb6,0x50,0x8f,0xe1,0x48,0x15,0x5f,0xdb,0x0d,0x7d,0x2c,0x6f,0x3f,0x72,0xb0,
+ 0xca,0x90,0x16,0xe5,0xca,0x4b,0xa1,0x1c,0xfc,0xc4,0x26,0x7b,0xc0,0x90,0x3e,0x83,
+ 0xac,0x73,0xf9,0x8a,0xd0,0x70,0x21,0xab,0x07,0xc5,0x9a,0x3f,0xa2,0x33,0xf4,0x90,
+ 0x29,0x5f,0xf3,0x35,0x6d,0x0f,0x13,0xe9,0xb7,0xcb,0x66,0xd6,0x65,0xcd,0xb1,0xdd,
+ 0x66,0xda,0x94,0xc5,0xda,0x21,0x96,0xb8,0x4f,0xa9,0x95,0x3a,0xc2,0xba,0xd0,0x5b,
+ 0x51,0x49,0x04,0xa4,0xad,0x6d,0x92,0x3d,0x39,0x48,0xa8,0xdb,0xe1,0x3d,0xaf,0x17,
+ 0xf9,0x7a,0x8d,0x7e,0xd3,0xcb,0xe5,0xf2,0x5d,0xca,0xd7,0x32,0xda,0x67,0x5b,0x99,
+ 0x9f,0x25,0x6e,0xf9,0x0f,0x32,0xb1,0xd6,0x86,0x42,0x89,0xe9,0x0a,0x43,0x8a,0x52,
+ 0x80,0xff,0x00,0x54,0x0f,0xb1,0xa9,0x99,0xbe,0xfc,0x49,0xcc,0xcf,0x69,0x1a,0x93,
+ 0x09,0xa1,0xcb,0xb1,0xad,0xc2,0xe4,0x0f,0x1e,0x82,0x33,0xa8,0x90,0xbf,0xfd,0x0d,
+ 0x2b,0xfb,0xea,0x9f,0xf6,0x81,0x9b,0x2b,0x4f,0x77,0x39,0xa6,0xd7,0xa0,0xf2,0x63,
+ 0xb6,0x9b,0xcb,0x31,0x1e,0x75,0x67,0x84,0xa5,0x99,0x1c,0xb0,0xe1,0x27,0xd8,0x74,
+ 0x3a,0xaa,0xe8,0xf9,0x4a,0x8a,0x1c,0x63,0x26,0xd7,0x51,0x96,0x82,0xf6,0x97,0x11,
+ 0xb6,0xf7,0x0d,0x6b,0x9b,0xfa,0x82,0x3d,0x14,0x32,0x12,0xd9,0x5a,0x55,0xdf,0xeb,
+ 0xae,0x96,0xc4,0xd6,0xad,0x21,0xca,0xf0,0xa9,0x9c,0x25,0x37,0x78,0x2b,0x65,0x97,
+ 0x4f,0xff,0x00,0x49,0xf1,0xf3,0x32,0xe7,0xf6,0x5c,0x4a,0x15,0xc7,0xbf,0x1c,0x7b,
+ 0xd4,0x65,0xf0,0xad,0xce,0xe7,0xdc,0x74,0x5b,0x21,0xc0,0x6f,0x08,0x53,0x17,0x6c,
+ 0x26,0xf0,0xe4,0x53,0x15,0xd4,0xf4,0xb8,0xc3,0x2f,0x15,0x2c,0x21,0x60,0xf7,0xe4,
+ 0x3c,0x99,0x23,0xbf,0xd0,0x0f,0x6a,0x9a,0xde,0x95,0x0b,0xe0,0xd8,0x9b,0xd0,0x1f,
+ 0x11,0xdf,0x31,0x89,0x21,0x8c,0x7b,0x56,0xec,0xef,0xb9,0xf0,0xfc,0x84,0x36,0x8b,
+ 0x93,0x1c,0x2d,0x7c,0x8f,0x72,0xae,0x85,0x28,0x13,0xea,0xa9,0x2a,0x15,0xcc,0xf0,
+ 0x79,0xbf,0x8c,0xc2,0xab,0x70,0x97,0xf3,0x6e,0xd9,0x9f,0xdd,0x1f,0xcf,0x6f,0x33,
+ 0x1d,0xff,0x00,0x2a,0x9d,0xc2,0xce,0x0e,0xf6,0x5d,0x5f,0x8b,0x46,0x95,0x2b,0x2c,
+ 0xd0,0xcb,0x46,0x67,0x15,0x94,0xae,0x5e,0x29,0x70,0x01,0xf5,0x7a,0x11,0x12,0x4f,
+ 0x4b,0x6b,0x23,0xeb,0xc3,0xa2,0x3f,0x6f,0xa1,0x51,0xa8,0xff,0x00,0xe1,0xd7,0xbe,
+ 0x37,0x34,0xea,0xeb,0x03,0x4b,0xf3,0xcb,0x81,0x38,0x94,0xc7,0x03,0x36,0x8b,0x9c,
+ 0x85,0x73,0xf6,0x63,0xca,0x3d,0x9a,0x59,0xff,0x00,0x52,0xb5,0x1e,0x01,0x3d,0x9b,
+ 0x51,0xe4,0xf0,0x92,0x4a,0x6c,0x2f,0x75,0x91,0xf1,0xcb,0x86,0xdd,0xf3,0xeb,0x76,
+ 0x51,0x78,0x81,0x62,0xb6,0xce,0xb4,0xc8,0x8e,0xdc,0xdb,0x8b,0xa1,0xb6,0x91,0x20,
+ 0xa0,0x96,0x0f,0x7f,0xda,0x3e,0x60,0x41,0x09,0x1d,0xc9,0x1c,0x0e,0xf5,0xe7,0xf6,
+ 0xba,0xe6,0x45,0xa4,0x83,0x32,0xe5,0xa9,0xb0,0x9a,0xe6,0xdd,0xac,0x71,0xd2,0x6d,
+ 0xf2,0xdc,0x5c,0x16,0x9e,0xa1,0xd7,0xf6,0x36,0x3b,0x1d,0xed,0xa6,0x26,0x37,0x87,
+ 0x05,0xe9,0x6f,0xd2,0xa9,0x23,0x73,0x38,0xbc,0xcd,0xa0,0x6f,0x71,0x77,0x9b,0x0a,
+ 0x5c,0x8d,0x16,0x2d,0xd6,0x3e,0x53,0x68,0x00,0x74,0x82,0xca,0xdd,0xf3,0x14,0xd0,
+ 0xe3,0xd5,0xb0,0xe2,0x5e,0x67,0x8f,0x74,0xa3,0x83,0xea,0x6a,0x6c,0x78,0x67,0xee,
+ 0xc5,0xdd,0x5d,0xc2,0x1d,0xd3,0xdc,0x9e,0x61,0x7b,0x2d,0xc6,0xe3,0xa5,0x51,0x24,
+ 0xbb,0xfb,0x53,0xad,0xe3,0x84,0x82,0xa3,0xcf,0x75,0xb4,0x4a,0x50,0xa2,0x78,0xe5,
+ 0x2a,0x6c,0xfc,0xc7,0xac,0xd6,0x15,0xe2,0xb1,0x89,0x59,0x75,0x23,0x4c,0x2c,0x3a,
+ 0x85,0x8c,0xdd,0x2d,0xb7,0xa7,0xb1,0x5b,0x8a,0xad,0x37,0x45,0xdb,0x64,0x36,0xf9,
+ 0x65,0xa7,0xf8,0xe9,0x0e,0x29,0x0a,0x3d,0x25,0x0e,0xa1,0x29,0xe9,0x3d,0xf9,0x78,
+ 0xfa,0x77,0xad,0x77,0x27,0x36,0xaf,0x2a,0x66,0x87,0xe1,0x75,0x63,0xba,0xfe,0xe1,
+ 0x3e,0x06,0xfb,0xb1,0xde,0xfc,0x0f,0xee,0x23,0x90,0xbd,0xcb,0x69,0x23,0xd4,0x15,
+ 0xa8,0x63,0x99,0x04,0x0c,0xb3,0x1e,0xb5,0xdf,0x2d,0x52,0x51,0x32,0xd7,0x73,0x8a,
+ 0xd4,0xd8,0x92,0x5b,0x3c,0xa5,0xd6,0x5c,0x40,0x5a,0x16,0x3f,0x02,0x95,0x03,0xfa,
+ 0xd7,0x63,0x51,0x47,0xc3,0x03,0x53,0x9b,0xd4,0xad,0x9c,0x61,0xc8,0x2f,0x17,0xa7,
+ 0xe3,0xaa,0x7a,0xc1,0x2c,0x1f,0xdc,0x2c,0xab,0xa9,0x94,0x8f,0xc3,0xc8,0x71,0x8f,
+ 0xf8,0xfd,0x2a,0x57,0x57,0xd4,0xcb,0x1e,0x95,0x53,0xde,0x38,0x39,0x8a,0x9c,0xbc,
+ 0xe9,0x5e,0x28,0xdb,0xe4,0x25,0x98,0xf3,0x6e,0x8f,0xb0,0x0f,0x62,0x56,0xa6,0x9b,
+ 0x69,0x44,0x7e,0x1e,0x5b,0xa0,0x7e,0x66,0xad,0x86,0xb4,0x06,0x7f,0xb3,0x2c,0x1b,
+ 0x58,0x37,0x00,0xce,0xa8,0x67,0xf1,0x1b,0xca,0x15,0x6d,0xb5,0xb1,0x6a,0xb4,0xd8,
+ 0xa5,0x36,0x0c,0x26,0x52,0x85,0xba,0xe2,0x9d,0x79,0x07,0xb3,0xcb,0x2a,0x79,0x40,
+ 0x25,0x43,0xa4,0x00,0x09,0x0a,0x3c,0x74,0x91,0x52,0x06,0xdf,0x62,0xeb,0x85,0xaa,
+ 0x36,0x41,0x2f,0x49,0x71,0x9c,0x96,0x70,0xbe,0x40,0x5d,0xa2,0x5d,0xca,0xc7,0x67,
+ 0x7a,0x4a,0x92,0xca,0x96,0x92,0xb4,0xb6,0xf2,0x50,0x7c,0xb5,0x72,0x90,0x3a,0x81,
+ 0x04,0x7b,0x10,0x78,0x23,0xbc,0xc2,0xf4,0xfb,0x72,0xdb,0x5f,0xbe,0xaf,0x28,0xb1,
+ 0x61,0x59,0xc6,0x26,0xf3,0x6d,0x7f,0x48,0x93,0xf6,0x2b,0xeb,0x8a,0xe3,0x5e,0xa5,
+ 0x2f,0x02,0x82,0xda,0xd2,0x3d,0x78,0x57,0x3c,0x11,0xcf,0x62,0x39,0xaf,0x43,0x90,
+ 0xe1,0xc7,0xb7,0x44,0x62,0x24,0x46,0x1b,0x8b,0x15,0x84,0x25,0xa6,0x98,0x65,0x01,
+ 0x08,0x6d,0x09,0x1c,0x25,0x29,0x48,0xec,0x00,0x00,0x00,0x07,0xa5,0x7d,0xaa,0xce,
+ 0x4a,0x2a,0x69,0x44,0x82,0x48,0xda,0x7b,0x4f,0x9a,0xe0,0x1d,0x56,0xd8,0x5f,0xad,
+ 0xbc,0xd5,0x6e,0x47,0x8a,0xa5,0xcb,0x1f,0x8c,0x46,0x69,0x1a,0xdc,0x86,0xee,0xf8,
+ 0x05,0x8e,0xe1,0x38,0x0e,0x0c,0x88,0x92,0xde,0x8c,0x85,0x1f,0xaf,0x42,0xba,0xff,
+ 0x00,0xea,0xac,0x1f,0x51,0xfc,0x56,0x35,0x8b,0x32,0x80,0xe4,0x2b,0x1b,0x16,0x5c,
+ 0x2d,0x95,0xff,0x00,0xf7,0x36,0xd8,0xea,0x7a,0x57,0x1e,0xe3,0xad,0xe5,0x29,0x23,
+ 0xf3,0x4a,0x01,0x1f,0x5a,0xb0,0xfd,0xf0,0x78,0x75,0x62,0x3b,0x8d,0xc7,0x6e,0x99,
+ 0x1e,0x29,0x6d,0x8b,0x8e,0xea,0x7b,0x48,0x5c,0x86,0x65,0xc5,0x4a,0x59,0x66,0xea,
+ 0xe7,0xed,0x16,0xa5,0x0e,0xc0,0xa9,0x5d,0xc0,0x77,0xb2,0x81,0x20,0xa8,0xa9,0x23,
+ 0x8a,0xa2,0xdb,0xad,0xa6,0x6d,0x8e,0xeb,0x32,0xd9,0x70,0x8a,0xec,0x3b,0x84,0x37,
+ 0x97,0x1e,0x44,0x57,0x90,0x52,0xe3,0x4e,0xa1,0x45,0x2a,0x42,0x81,0xee,0x08,0x20,
+ 0x82,0x3f,0x0a,0xd5,0x62,0xc9,0x59,0x7a,0x09,0x7b,0x56,0x51,0xb6,0xfe,0x77,0x23,
+ 0xe8,0x49,0x1f,0xa2,0x93,0xb5,0x79,0xf1,0x4b,0xb5,0xda,0x75,0xfa,0xe7,0x2a,0xe3,
+ 0x73,0x9b,0x22,0xe3,0x70,0x94,0xe2,0x9e,0x91,0x2e,0x5b,0xaa,0x75,0xd7,0x96,0xa3,
+ 0xca,0x94,0xb5,0xa8,0x92,0xa5,0x13,0xdc,0x92,0x79,0xac,0xff,0x00,0x49,0xb7,0x1d,
+ 0xa8,0xfa,0x1b,0x6f,0xbc,0xc1,0xc1,0xf2,0x99,0x56,0x18,0x97,0x74,0x74,0x4b,0x65,
+ 0xa4,0x36,0xe2,0x49,0xe0,0xa4,0x2d,0x1d,0x69,0x57,0x96,0xe0,0x07,0x8e,0xb4,0x70,
+ 0xaf,0x4e,0xfd,0x85,0x62,0xb2,0xf4,0xfb,0x29,0xb7,0xda,0x45,0xd6,0x56,0x35,0x78,
+ 0x8d,0x6c,0x23,0x91,0x35,0xe8,0x0e,0xa1,0x92,0x3e,0xbd,0x65,0x3d,0x3e,0xe3,0xde,
+ 0xba,0x0a,0xdb,0x27,0xa5,0xa7,0xa9,0x8b,0xb0,0x9e,0x30,0xe6,0x6d,0xb1,0x00,0x8d,
+ 0xb8,0xd8,0xed,0xb7,0x82,0x8c,0x12,0x0d,0xc2,0xfd,0x5a,0xd4,0xe2,0xd4,0xa5,0x28,
+ 0xa9,0x4a,0x3c,0x95,0x13,0xc9,0x26,0xac,0x0b,0xc2,0x23,0x48,0xd5,0x7b,0xd4,0x5c,
+ 0x9f,0x51,0x25,0xb0,0x95,0x44,0xb1,0x45,0x16,0xd8,0x2b,0x5a,0x79,0x3f,0x14,0xff,
+ 0x00,0x75,0xa9,0x07,0xd8,0xa5,0xa4,0x94,0x9f,0xc1,0xf1,0xf8,0xd5,0x7e,0x54,0xd4,
+ 0xda,0xc7,0x88,0x55,0x9b,0x6b,0xda,0x57,0x03,0x0e,0x85,0xa7,0x0f,0x5f,0x1f,0x72,
+ 0x5b,0xb3,0xae,0x97,0x45,0x5e,0x44,0x72,0xf3,0xcb,0x57,0x48,0xe8,0x6b,0xc8,0x5f,
+ 0x01,0x2d,0x21,0xa4,0xf7,0x57,0x72,0x92,0x7b,0x73,0x5a,0x96,0x72,0xa7,0xc4,0x6b,
+ 0x30,0x69,0x69,0x30,0xc8,0xf5,0xc9,0x25,0x9b,0xc8,0x16,0x6f,0x2e,0xdd,0xc4,0x0d,
+ 0xc0,0xb7,0x5d,0xd4,0xb1,0x16,0x87,0x5d,0xc5,0x59,0xb6,0xe8,0x73,0xbf,0xf3,0x69,
+ 0xb7,0x7d,0x43,0xc8,0x92,0xe9,0x66,0x44,0x5b,0x34,0x84,0x46,0x70,0x7e,0xec,0x87,
+ 0x13,0xe5,0x32,0x7f,0xf3,0x16,0x8a,0xf3,0xeb,0x56,0x8b,0xbc,0x9d,0xe1,0xe1,0xba,
+ 0xe7,0xb2,0x09,0x53,0x71,0x39,0x0b,0x44,0x9b,0xbd,0xea,0x1d,0xa6,0x7d,0xaa,0x59,
+ 0x4a,0x65,0xc0,0x50,0x2b,0x93,0xca,0xd2,0x09,0xe5,0x2a,0xf8,0x6f,0x95,0x60,0x90,
+ 0x41,0xf6,0x21,0x40,0x55,0xd5,0x6a,0x9f,0x0c,0xb0,0xa9,0xb0,0xdc,0x3e,0xa0,0xd5,
+ 0x30,0xb2,0x43,0x21,0x04,0x1e,0x6c,0xd0,0x2d,0xfa,0x93,0xff,0x00,0x8a,0x49,0xdc,
+ 0x1c,0x45,0x95,0x9a,0xed,0x97,0x5d,0xec,0x1b,0x32,0xd8,0x8d,0xa7,0x26,0xbb,0x32,
+ 0x2e,0x19,0x06,0x5b,0x74,0x9d,0x36,0xd3,0x65,0x4a,0xfa,0x1c,0x94,0xb4,0x28,0x47,
+ 0xeb,0x51,0xe0,0xf4,0xb6,0x90,0xc2,0x49,0x57,0x1e,0x8a,0x48,0x1c,0x95,0x0a,0x84,
+ 0xda,0xcf,0xba,0xdd,0x50,0xd7,0x99,0xd3,0x17,0x94,0xe5,0x73,0x55,0x6c,0x90,0xa2,
+ 0x45,0x8e,0x0b,0xaa,0x8f,0x6f,0x6d,0x3d,0x5c,0xa5,0x21,0x94,0x9e,0x15,0xd3,0xdb,
+ 0x85,0x2f,0xa9,0x5d,0x87,0x2a,0x27,0xbd,0x61,0x19,0xd6,0x7f,0x72,0xcf,0xa4,0x59,
+ 0xd5,0x3d,0x49,0x44,0x6b,0x3d,0xae,0x35,0x9e,0x04,0x66,0xc7,0x08,0x62,0x3b,0x28,
+ 0xe0,0x01,0xf8,0xa9,0x45,0x6e,0x28,0xfb,0xad,0xc5,0x1e,0xdc,0xf0,0x31,0xaa,0xdb,
+ 0xf0,0xac,0xb5,0x4b,0x47,0x53,0x36,0x25,0x3b,0x03,0xaa,0x25,0x71,0x71,0x27,0x7d,
+ 0x20,0x9d,0x9a,0xde,0x96,0x16,0x04,0x8d,0xc9,0xf2,0xb0,0x11,0x3a,0x42,0x40,0x68,
+ 0xe1,0x5d,0xd7,0x86,0xbe,0x27,0x69,0xc6,0xf6,0x8b,0x89,0x4c,0xb6,0xa5,0x2a,0x7e,
+ 0xf2,0xec,0xbb,0x84,0xe7,0x81,0xfe,0xb1,0xff,0x00,0x88,0x5b,0x3f,0xa7,0x4a,0x19,
+ 0x42,0x38,0xfe,0x42,0x7d,0xcd,0x42,0x9f,0x15,0xed,0x6b,0xff,0x00,0x2d,0x75,0x96,
+ 0xdd,0x81,0x41,0x70,0x2a,0xd9,0x89,0x31,0xcc,0x82,0x85,0x73,0xd7,0x35,0xf4,0xa5,
+ 0x6b,0xe7,0xbf,0x1f,0x23,0x61,0xb4,0x8f,0x70,0xa2,0xe0,0xae,0x9b,0x65,0x9e,0x20,
+ 0x49,0xdb,0x36,0x09,0x7d,0xc4,0xb2,0x1b,0x1c,0xbc,0x86,0xd4,0x56,0xb9,0xd6,0x8f,
+ 0x83,0x75,0x29,0x5b,0x12,0x14,0x9e,0x14,0xd2,0xfa,0x8f,0x01,0xa5,0x10,0x95,0x72,
+ 0x9e,0xe9,0x3d,0x67,0xa5,0x7d,0x5d,0xa2,0x36,0x4b,0x90,0xce,0xcb,0xb2,0x3b,0xad,
+ 0xf6,0xe8,0xf1,0x93,0x73,0xba,0x4b,0x76,0x6c,0xa7,0x8f,0xab,0x8e,0xb8,0xb2,0xb5,
+ 0xab,0xf5,0x52,0x89,0xad,0x2f,0x01,0xca,0x75,0x54,0xf9,0xa6,0xb3,0x16,0xae,0x17,
+ 0x68,0x2e,0x31,0x9e,0xba,0xef,0xbf,0xf8,0xb7,0xbb,0xbf,0x5d,0xb8,0x52,0xbe,0x40,
+ 0x63,0x0d,0x0b,0x97,0x81,0xe6,0xf7,0x7d,0x36,0xcc,0xac,0xd9,0x4d,0x86,0x4f,0xc2,
+ 0x5e,0x2d,0x32,0x91,0x2e,0x33,0xbc,0x72,0x02,0xd2,0x79,0xe1,0x43,0xdd,0x27,0xb8,
+ 0x23,0xdc,0x12,0x3d,0xeb,0x97,0x02,0xed,0x37,0x39,0xd4,0xf8,0xd7,0x3b,0xb4,0x83,
+ 0x2a,0xe3,0x78,0xbc,0x26,0x44,0xb7,0xd4,0x38,0xf3,0x1d,0x75,0xe0,0xa5,0xa8,0x81,
+ 0xc7,0xa9,0x51,0x3d,0xab,0x17,0xae,0xdf,0x0e,0x94,0x98,0x39,0x7d,0x8e,0x4a,0xfb,
+ 0xa1,0x99,0xcc,0x38,0x7f,0x20,0xe2,0x4f,0xfd,0xab,0xae,0x4b,0x13,0x3b,0xf3,0x35,
+ 0xa3,0x5e,0x9b,0x5f,0xc6,0xdb,0x9b,0x5f,0xa5,0xd5,0xb0,0xe8,0xbd,0x22,0x1f,0x53,
+ 0x5e,0x7e,0x77,0x01,0x7f,0xb8,0x59,0x77,0x35,0xa9,0x77,0x1b,0x54,0xf9,0x36,0xe9,
+ 0xad,0xe4,0xf7,0x22,0xdc,0xa8,0x6f,0x29,0xa7,0x10,0x7e,0x25,0xc1,0xd9,0x49,0x20,
+ 0x8a,0x9f,0xbb,0x85,0xf1,0x58,0x6b,0x4e,0xf5,0x42,0x6e,0x33,0x83,0x63,0x30,0x32,
+ 0x6b,0x65,0xa6,0x42,0xa3,0xce,0xba,0xcc,0x94,0xb4,0xa6,0x4b,0x89,0x3c,0x2d,0x11,
+ 0xfa,0x07,0x01,0x29,0x20,0x8f,0x30,0xf5,0x05,0x1e,0x78,0x4f,0x1c,0x15,0x56,0x46,
+ 0x73,0x94,0x39,0x9c,0x66,0xd9,0x06,0x46,0xf3,0x3f,0x0e,0xf5,0xe2,0xe1,0x22,0xe0,
+ 0xb6,0x82,0xba,0xba,0x14,0xeb,0x8a,0x70,0xa7,0x9e,0x07,0x3c,0x15,0x71,0xcf,0x02,
+ 0xb8,0x87,0xc3,0x6c,0xb9,0x88,0x61,0x6e,0x96,0xaa,0xba,0x2d,0x2c,0x95,0x82,0xd7,
+ 0x22,0xfc,0xdf,0x71,0xc8,0xdb,0xaa,0xbb,0x9d,0xed,0x76,0xc0,0xa9,0x3b,0xa4,0xfe,
+ 0x21,0xf9,0x95,0x93,0x00,0xcb,0x70,0x5d,0x45,0x91,0x3b,0x39,0xc7,0xef,0x56,0x69,
+ 0x96,0xf6,0x26,0xc9,0x74,0x39,0x3e,0x1b,0x8e,0xb0,0xe2,0x12,0x4b,0x8b,0x3c,0xba,
+ 0x82,0xa5,0x00,0xa0,0xb2,0x54,0x07,0x74,0x9e,0xdd,0x2a,0x89,0x08,0x5a,0x9a,0x5a,
+ 0x56,0x85,0x14,0x2d,0x27,0x90,0xa4,0x9e,0x08,0x3f,0x51,0x5f,0x94,0xae,0xcb,0x47,
+ 0x85,0x51,0xe1,0xf2,0x4b,0x25,0x24,0x61,0x86,0x42,0x0b,0x80,0xd8,0x12,0x3c,0x6d,
+ 0xc0,0x3d,0x6d,0xcf,0xaa,0xb5,0x2e,0x2e,0xe5,0x5e,0x86,0xb0,0x6e,0xc6,0x36,0x93,
+ 0xed,0x32,0xcd,0xaa,0xc5,0x96,0x27,0xdd,0x6f,0x76,0xd8,0x2a,0xb6,0x43,0x75,0x45,
+ 0x2d,0xbf,0x32,0x4b,0x21,0xc0,0x15,0xc7,0x7e,0x94,0x0f,0x31,0x6a,0x03,0x82,0x43,
+ 0x64,0x72,0x09,0xe6,0xaa,0x06,0xe1,0xb9,0x1c,0xe7,0x28,0xd6,0x7c,0x7f,0x52,0xb2,
+ 0x9b,0xd4,0x9c,0x86,0xf9,0x67,0x9f,0x1e,0x6b,0x01,0xf5,0xf4,0x36,0xda,0x5a,0x74,
+ 0x38,0x1a,0x6d,0x09,0x01,0x2d,0xa0,0x90,0x7b,0x24,0x01,0xca,0x89,0xf5,0x24,0xd6,
+ 0x57,0xaa,0x1a,0xd2,0xc6,0x67,0xb4,0xcd,0x1c,0xc2,0x13,0x70,0x2f,0xdc,0xb1,0xcb,
+ 0x85,0xd9,0x13,0x22,0xa9,0x44,0xa9,0x2d,0x95,0xb6,0xb8,0xcb,0x23,0xe9,0xd2,0xf3,
+ 0x88,0x4f,0xfe,0x1a,0x87,0xb5,0x6a,0x16,0x74,0xf7,0x29,0x91,0x66,0x37,0x76,0xb1,
+ 0xab,0xc3,0xb6,0x90,0x9e,0xa3,0x3d,0x10,0x1d,0x2c,0x01,0xf5,0xf3,0x3a,0x7a,0x78,
+ 0xfd,0x6b,0x46,0xca,0x39,0x52,0x97,0x08,0x82,0x77,0x4b,0x18,0x32,0x3d,0xf2,0x36,
+ 0xe4,0x6f,0xa0,0x38,0xb4,0x01,0xd0,0x10,0x2f,0xb7,0x37,0xf2,0x0a,0x69,0x64,0x2e,
+ 0x22,0xcb,0x67,0xee,0xff,0x00,0x70,0xf7,0x3d,0xc5,0x6b,0x3d,0xf2,0xf2,0xbb,0x8b,
+ 0xb2,0x31,0x98,0x92,0x1c,0x8b,0x62,0x89,0xf3,0x25,0xa6,0x62,0x25,0x5d,0x29,0x58,
+ 0x41,0xf4,0x5b,0x80,0x05,0xa8,0x9e,0xfc,0xab,0x8e,0xc1,0x29,0x03,0x48,0x80,0x49,
+ 0x00,0x0e,0x49,0xf6,0x15,0xd8,0x63,0xd8,0xf5,0xcb,0x2c,0xc8,0x2d,0xb6,0x3b,0x3c,
+ 0x27,0x6e,0x17,0x6b,0x8c,0x96,0xe2,0x44,0x86,0xc2,0x79,0x71,0xe7,0x96,0xa0,0x94,
+ 0x21,0x23,0xea,0x49,0x03,0xf5,0xab,0xe1,0xd9,0x67,0x87,0xb6,0x17,0xb6,0x3c,0x72,
+ 0xdf,0x77,0xbd,0x41,0x87,0x93,0x6a,0x5b,0x88,0x4b,0xd2,0xaf,0x32,0x1a,0x0e,0x22,
+ 0x0b,0x9c,0x7f,0x57,0x10,0x28,0x7c,0x81,0x3c,0xf1,0xe6,0x76,0x5a,0xcf,0x27,0xb0,
+ 0x21,0x29,0xe8,0x34,0x54,0x70,0xe1,0xf4,0xd1,0xd2,0xd3,0xb6,0xcc,0x60,0x00,0x0f,
+ 0x4f,0xfd,0xeb,0xd4,0xa8,0x09,0x2e,0x37,0x2a,0x9b,0x70,0xdd,0xb4,0xeb,0xac,0xde,
+ 0x2e,0x58,0xd6,0x9b,0x67,0x29,0x0e,0xb0,0xeb,0x62,0x6c,0x3b,0x44,0xa6,0x92,0xb6,
+ 0x9c,0x6d,0x48,0x71,0x21,0xce,0x90,0x0a,0x56,0x85,0x29,0x24,0x73,0xf3,0x05,0x11,
+ 0xdc,0x1a,0xc7,0x32,0xbd,0x30,0xd4,0xdd,0x24,0xb7,0xcb,0x6f,0x23,0xc5,0x72,0xac,
+ 0x3e,0x05,0xc1,0x29,0x8f,0x24,0x5c,0x60,0x49,0x86,0xcc,0x94,0x85,0x85,0xa5,0x0b,
+ 0xea,0x4a,0x52,0xb1,0xd4,0x84,0xa8,0x03,0xcf,0x74,0x83,0xec,0x2b,0xd3,0x65,0x71,
+ 0xae,0x76,0xc8,0x77,0xab,0x7c,0x98,0x17,0x08,0x8c,0x4f,0x83,0x25,0xb2,0xd3,0xf1,
+ 0x64,0xb6,0x1c,0x69,0xd4,0x11,0xc1,0x4a,0x92,0xa0,0x42,0x81,0x1e,0xa0,0xd5,0xd1,
+ 0x63,0x49,0xb9,0x1f,0xfc,0x38,0xfa,0x2a,0x2a,0xc4,0xf0,0x3f,0xcd,0xc3,0xd8,0xf6,
+ 0xa9,0x61,0xee,0xba,0x94,0x98,0xd2,0xa1,0xdd,0xa3,0xb6,0x4f,0x75,0x79,0x88,0x71,
+ 0xa7,0x48,0x1f,0x87,0x94,0xcf,0xf8,0x85,0x5a,0x25,0x68,0x0d,0x2e,0xd9,0x86,0x0b,
+ 0xa2,0x1a,0xf1,0x74,0xd4,0x8c,0x09,0x93,0x8e,0x33,0x78,0xb5,0x3d,0x6d,0xb8,0xe3,
+ 0xac,0x27,0xfa,0x12,0x96,0xa7,0x59,0x75,0x0f,0x32,0x39,0xfb,0xa2,0x0b,0x4a,0x05,
+ 0x03,0x94,0x9e,0xb1,0xd2,0x11,0xc1,0x0a,0xdf,0xf5,0xed,0x12,0x94,0xa5,0x11,0x29,
+ 0x4a,0x51,0x12,0xb5,0xde,0x33,0xb7,0xad,0x38,0xc3,0xf5,0x03,0x21,0xce,0x2d,0x38,
+ 0x7d,0xae,0x36,0x5b,0x7e,0x91,0xf1,0x53,0xae,0xc5,0x80,0xb7,0xd4,0xe7,0x48,0x04,
+ 0xa1,0x4a,0xe7,0xcb,0x0a,0x23,0xa9,0x41,0x1d,0x3d,0x4a,0x25,0x4a,0xe4,0xf7,0xad,
+ 0x89,0x4a,0x22,0xfc,0x23,0x91,0x51,0xc3,0x72,0x9b,0x06,0xd2,0x6d,0xca,0x5a,0xa5,
+ 0xae,0xe3,0x62,0x8f,0x8e,0xe5,0x4a,0x6d,0x42,0x3e,0x49,0x66,0x65,0x2c,0xc8,0x43,
+ 0x9d,0xb8,0x2e,0xa5,0x3c,0x25,0xf4,0xf6,0x00,0x85,0x82,0x78,0xe4,0x25,0x48,0x27,
+ 0x9a,0x92,0x14,0xa2,0x2f,0x34,0xfb,0x8d,0xdb,0xbe,0x57,0xb6,0x3d,0x4d,0x9d,0x86,
+ 0x65,0x6c,0x0f,0x39,0xb1,0xe7,0x43,0x9e,0xc8,0x3e,0x44,0xf8,0xe4,0x90,0x87,0x9b,
+ 0x27,0xd8,0xf0,0x41,0x1e,0xa9,0x50,0x20,0xfa,0x56,0x35,0xa7,0x1a,0x53,0x98,0xea,
+ 0xfe,0x40,0xdd,0x93,0x0b,0xc6,0xae,0x59,0x35,0xcd,0x45,0x20,0xb1,0x6e,0x8e,0xa7,
+ 0x3c,0xb0,0x4f,0x01,0x4e,0x28,0x7c,0xad,0xa7,0xf9,0x94,0x42,0x47,0xb9,0xaf,0x40,
+ 0xbb,0xad,0xd9,0xe6,0x1d,0xbb,0x9b,0x5e,0x2f,0x0f,0x29,0x7e,0x55,0xbd,0x56,0x2b,
+ 0x87,0xc5,0x22,0x65,0xbf,0xa4,0x48,0x71,0x85,0x20,0x87,0x63,0x05,0x28,0x10,0x94,
+ 0xac,0x86,0xd4,0x55,0xc1,0x20,0xb6,0x38,0xf5,0x35,0xb3,0x74,0xcf,0x4a,0xb1,0x1d,
+ 0x1a,0xc5,0x23,0xe3,0x78,0x4e,0x3f,0x0b,0x1c,0xb2,0xb0,0x7a,0x84,0x58,0x4d,0xf1,
+ 0xd6,0xae,0x00,0x2b,0x71,0x47,0x95,0x38,0xb2,0x00,0xe5,0x6b,0x25,0x47,0x81,0xc9,
+ 0x34,0x45,0x4e,0x58,0x17,0x83,0x9e,0xb9,0xe4,0xb1,0x52,0xe5,0xf6,0x7e,0x37,0x87,
+ 0x30,0xa5,0x02,0xe4,0x69,0x93,0xd7,0x25,0xfe,0x40,0x3c,0x1e,0x96,0x10,0xb6,0xcf,
+ 0x1c,0x91,0xdd,0xc1,0xeb,0x59,0xbd,0xdb,0xc1,0x0f,0x3a,0x66,0x12,0x95,0x6c,0xd4,
+ 0x9c,0x7a,0x64,0xbe,0x3e,0x56,0xa5,0xc3,0x7d,0x86,0xc9,0xfc,0x56,0x9e,0xb2,0x3f,
+ 0xc3,0x57,0x03,0x4a,0x22,0xf3,0xf1,0xac,0x3e,0x1a,0xda,0xf7,0xa3,0x50,0x64,0xdc,
+ 0x65,0xe2,0x43,0x26,0xb4,0x47,0x3f,0x79,0x3f,0x18,0x7b,0xe3,0x40,0x1f,0xc5,0xe4,
+ 0x80,0x1e,0x09,0x1d,0xc9,0x51,0x6f,0x80,0x07,0x72,0x2a,0x2f,0xad,0x0a,0x6d,0x6a,
+ 0x42,0xd2,0x52,0xb4,0x9e,0x0a,0x54,0x38,0x20,0xfd,0x2b,0xd5,0x3d,0x44,0x3d,0xe5,
+ 0x78,0x73,0xe0,0xfb,0x9e,0xb7,0xce,0xbe,0x59,0x9a,0x8d,0x88,0x6a,0x3f,0x4a,0x9c,
+ 0x6a,0xf3,0x1d,0xae,0x19,0x9e,0xe7,0x1d,0x91,0x31,0x09,0x1f,0x30,0x3c,0x71,0xe6,
+ 0x8f,0x9d,0x3d,0x8f,0xce,0x07,0x41,0x22,0xa1,0x3a,0x56,0x4b,0xa9,0x1a,0x71,0x91,
+ 0xe9,0x1e,0x6f,0x76,0xc4,0x72,0xdb,0x5b,0xd6,0x6c,0x82,0xd6,0xf7,0x93,0x26,0x23,
+ 0xdc,0x12,0x93,0xc0,0x29,0x52,0x48,0xec,0xa4,0xa9,0x24,0x29,0x2a,0x04,0x85,0x24,
+ 0x82,0x09,0x06,0xb9,0x3a,0x51,0xa5,0x39,0x3e,0xb6,0x67,0xb6,0xac,0x3b,0x10,0xb6,
+ 0xae,0xe9,0x7c,0xb9,0x39,0xd0,0xd3,0x49,0xec,0x94,0x24,0x77,0x53,0x8e,0x2b,0xd1,
+ 0x28,0x48,0xe4,0x95,0x1f,0x40,0x28,0x8b,0x14,0x65,0x97,0x24,0xbc,0x86,0x9a,0x42,
+ 0x9d,0x75,0xc5,0x04,0xa1,0x08,0x1c,0xa9,0x44,0xf6,0x00,0x01,0xea,0x6a,0x53,0xe9,
+ 0x07,0x86,0x56,0xbf,0x6a,0xec,0x18,0xb7,0x16,0x71,0x66,0xf1,0x3b,0x5c,0x8e,0xed,
+ 0xcc,0xca,0x1f,0xf8,0x23,0xc7,0xf1,0x16,0x42,0x54,0xf8,0x1e,0xe0,0xf9,0x7c,0x11,
+ 0xdc,0x72,0x2a,0xd4,0xf6,0x75,0xe1,0xf1,0x81,0xed,0x6a,0xd5,0x0e,0xeb,0x2a,0x34,
+ 0x7c,0xa7,0x51,0x14,0x80,0xa9,0x19,0x04,0xa6,0x82,0x84,0x55,0x94,0xf0,0xa4,0x44,
+ 0x4a,0x87,0xdd,0x24,0x72,0xa1,0xd7,0xfb,0x6a,0x04,0xf2,0x40,0x21,0x29,0x95,0x74,
+ 0x45,0x50,0x16,0xef,0x04,0x3c,0xe1,0xd8,0x69,0x5c,0xfd,0x4b,0xc7,0xe3,0x4c,0x23,
+ 0x95,0x35,0x1e,0x13,0xef,0x36,0x0f,0xfb,0xe7,0xa0,0x9f,0xf0,0xd6,0xbe,0xcf,0x7c,
+ 0x1d,0x75,0xd7,0x16,0x69,0x6f,0x58,0xde,0xc6,0xf3,0x26,0xc1,0x3d,0x2c,0xdb,0xee,
+ 0x06,0x3b,0xe4,0x7d,0x4a,0x64,0x21,0xb4,0x0f,0xd1,0x66,0xaf,0x02,0x94,0x45,0xe5,
+ 0xf3,0x3f,0xd3,0x4c,0xb3,0x4a,0xef,0xee,0xd9,0x33,0x0c,0x72,0xe7,0x8d,0x5d,0x5b,
+ 0x27,0x98,0xd7,0x38,0xcb,0x65,0x4a,0x00,0xf1,0xd4,0x9e,0xa1,0xc2,0xd2,0x7d,0x94,
+ 0x9e,0x41,0xf5,0x04,0x8a,0xce,0x76,0xbd,0xb6,0x4c,0xaf,0x75,0x5a,0x9b,0x1b,0x12,
+ 0xc6,0x52,0x98,0xcc,0x36,0x91,0x22,0xe7,0x76,0x7d,0x3c,0xb3,0x6f,0x8d,0xd4,0x02,
+ 0x9c,0x50,0xe4,0x75,0x28,0xf3,0xc2,0x50,0x0f,0x2a,0x3f,0x40,0x14,0xa4,0xfa,0x18,
+ 0xd5,0x6d,0x1d,0xc3,0x35,0xc3,0x13,0x7f,0x1b,0xce,0x71,0xe8,0x59,0x15,0xa5,0xce,
+ 0x4a,0x5a,0x94,0x8f,0x9d,0x95,0xf0,0x47,0x98,0xd3,0x83,0x85,0x36,0xb0,0x09,0x01,
+ 0x68,0x20,0xf7,0x3d,0xfb,0xd6,0xbf,0xda,0x6e,0xd2,0x31,0x6d,0xa2,0xe2,0x17,0xbb,
+ 0x16,0x37,0x2e,0x4d,0xd1,0x57,0x5b,0x92,0xe7,0x3d,0x70,0x9e,0x84,0x09,0x05,0xbe,
+ 0x3a,0x59,0x65,0x4a,0x48,0x01,0x41,0xb4,0xf3,0xdf,0x81,0xca,0x96,0xb5,0x00,0x9e,
+ 0xae,0x01,0x17,0x5d,0xb7,0x2d,0x8b,0xe9,0x36,0xda,0xed,0x71,0xfe,0xc3,0xc7,0x63,
+ 0xdd,0xf2,0x30,0x84,0x89,0x19,0x1d,0xe1,0xa4,0xbf,0x31,0xc5,0x8e,0x79,0x28,0x2a,
+ 0x1c,0x32,0x93,0xcf,0xec,0xb6,0x13,0xc8,0x03,0xa8,0xa8,0x8e,0x6a,0x41,0xd2,0x94,
+ 0x45,0xae,0xef,0x1b,0x7b,0xd3,0xab,0xee,0xa5,0xd8,0x75,0x0a,0x56,0x23,0x6d,0x19,
+ 0x9d,0x91,0xc7,0x1c,0x89,0x78,0x65,0x90,0xd3,0xc4,0xad,0xb5,0x36,0x7c,0xc2,0x9e,
+ 0x03,0xbc,0x05,0x12,0x9e,0xbe,0xae,0x93,0xdd,0x3c,0x1a,0xd8,0x94,0xa5,0x11,0x29,
+ 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
+ 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x14,0x2e,
+ 0xf1,0x31,0xd9,0xbb,0x3b,0x8c,0xd2,0xc7,0x72,0xcc,0x76,0x08,0x5e,0xa2,0x62,0xf1,
+ 0xd6,0xf4,0x5f,0x21,0xa2,0xa7,0x6e,0x51,0x07,0x2a,0x72,0x21,0xe3,0xba,0x95,0xea,
+ 0xb6,0xfb,0x13,0xd5,0xca,0x40,0x1e,0x61,0x23,0xb8,0xf0,0xe7,0xd9,0xd4,0x5d,0xb0,
+ 0xe9,0x2b,0x17,0x6b,0xd4,0x44,0x1d,0x45,0xc9,0x18,0x6e,0x45,0xd5,0xe5,0x77,0x54,
+ 0x36,0x8f,0xcc,0xdc,0x34,0x9e,0x3b,0x74,0x72,0x0a,0xf8,0xf5,0x73,0x9e,0xea,0x4a,
+ 0x51,0xc4,0xb9,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,
+ 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,
+ 0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,
+ 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
+ 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,
+ 0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,
+ 0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,
+ 0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,
+ 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,
+ 0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,
+ 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
+ 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x7f,0xff,0xd9};
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/ncc1701.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/ncc1701.h
new file mode 100644
index 000000000..d10383d16
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/ncc1701.h
@@ -0,0 +1,318 @@
+//
+// ncc1701
+// Data size = 4912 bytes
+//
+// JFIF, Compression=JPEG, Size: 240 x 77, 24-Bpp
+//
+// for non-Arduino builds...
+#ifndef PROGMEM
+#define PROGMEM
+#endif
+const uint8_t ncc1701[] PROGMEM = {
+ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x48,
+ 0x00,0x48,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
+ 0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,
+ 0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,
+ 0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,
+ 0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,
+ 0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,
+ 0x00,0x11,0x08,0x00,0x4d,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
+ 0x01,0xff,0xc4,0x00,0x1d,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x06,0x07,0x08,0x09,0x04,0x03,0x02,0x0a,
+ 0xff,0xc4,0x00,0x40,0x10,0x00,0x01,0x03,0x03,0x02,0x03,0x06,0x03,0x05,0x04,0x09,
+ 0x05,0x01,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x11,0x06,0x07,0x12,0x21,
+ 0x31,0x08,0x13,0x41,0x51,0x61,0x71,0x09,0x22,0x81,0x14,0x32,0x91,0xa1,0xb1,0x15,
+ 0x42,0x52,0x62,0x16,0x23,0x24,0x53,0x63,0x72,0x73,0x82,0xb2,0x17,0x33,0x92,0xa2,
+ 0xd1,0xf0,0xff,0xc4,0x00,0x1a,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0xff,0xc4,
+ 0x00,0x23,0x11,0x00,0x02,0x02,0x01,0x05,0x01,0x00,0x02,0x03,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x02,0x11,0x12,0x03,0x21,0x31,0x41,0x51,0x04,0x05,0x13,
+ 0x22,0x32,0x61,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,
+ 0x00,0xd5,0x3a,0x2b,0x2c,0xb5,0xcf,0x6f,0x7d,0xd3,0xb4,0x6f,0x56,0xa3,0x65,0x1a,
+ 0xa2,0xd5,0x67,0xb0,0x5b,0xae,0x92,0x21,0x26,0xcf,0x22,0x02,0x56,0xa8,0xe1,0xb5,
+ 0x94,0x29,0x0e,0x2f,0xf7,0xd4,0x38,0x4e,0x4e,0x71,0x9e,0x94,0xa9,0x74,0xed,0xfb,
+ 0x3e,0xee,0xdb,0xc1,0x1a,0xd1,0x49,0xe2,0xf9,0x55,0xf6,0x76,0x92,0xd8,0x48,0xf4,
+ 0xc5,0x5a,0x8d,0x91,0x97,0xf8,0x69,0xc1,0x21,0x23,0x24,0xe0,0x79,0x9a,0x4e,0xb8,
+ 0x6a,0x5b,0x4d,0xa5,0x95,0x3b,0x36,0xe7,0x12,0x2b,0x69,0xea,0xa7,0x9f,0x4a,0x40,
+ 0xe7,0x8f,0x13,0x59,0x3d,0x74,0xed,0x71,0x2a,0xf8,0x15,0x19,0x7a,0xaa,0xe1,0x29,
+ 0xb0,0x4a,0x80,0x0f,0x9c,0x67,0xd8,0x54,0x69,0x72,0xdc,0xa9,0xbb,0x85,0xaa,0x58,
+ 0xb6,0x37,0x71,0x90,0xa8,0xe9,0x52,0x78,0xbb,0xd7,0x4f,0xcd,0x9c,0xa9,0xc5,0x7b,
+ 0xf0,0x80,0x91,0xea,0xb2,0x7c,0x05,0x0e,0x2a,0x2a,0xdb,0x1c,0x5c,0xa5,0x25,0x14,
+ 0xb7,0x66,0xd0,0x23,0x5d,0x58,0x1e,0x68,0xba,0xcd,0xd2,0x3c,0x96,0x87,0x55,0xb0,
+ 0xae,0xf0,0x0f,0x72,0x33,0x4a,0xb0,0x6e,0x71,0x2e,0x6d,0x97,0x22,0x49,0x6a,0x4a,
+ 0x07,0x52,0xd2,0xc2,0xb1,0xef,0xe5,0x59,0x85,0x62,0xd7,0x57,0x6d,0x31,0x6f,0x61,
+ 0x88,0xb3,0x1c,0x8c,0xd0,0x48,0x09,0x6a,0x2b,0x9c,0x28,0x23,0xa6,0x08,0x14,0xbb,
+ 0xa1,0xb7,0x73,0x50,0x6d,0xfe,0xa9,0x62,0xfb,0x0e,0x5a,0xd6,0x90,0xa1,0xf6,0xa8,
+ 0xae,0x2f,0xfa,0xb9,0x0d,0xe7,0xe6,0x0a,0xf5,0xc7,0x43,0xd4,0x57,0x04,0x3e,0x87,
+ 0x39,0xe3,0x8e,0xde,0x9e,0xcc,0xff,0x00,0x1e,0xe3,0x06,0xf2,0xdd,0x75,0x46,0x94,
+ 0xd4,0x4d,0xbe,0x1d,0xa7,0x74,0x46,0xc1,0x47,0x57,0xf4,0x8e,0x54,0x97,0xe7,0xf7,
+ 0x1f,0x69,0x16,0xeb,0x7b,0x05,0xe7,0xcb,0x5c,0x5c,0x3c,0x64,0x0e,0x41,0x39,0xe5,
+ 0x92,0x6a,0x4e,0xb4,0x5c,0x9b,0xbc,0xda,0xa1,0x4f,0x64,0x29,0x2c,0xca,0x61,0x0f,
+ 0xa0,0x2f,0xa8,0x4a,0x92,0x14,0x33,0xeb,0x83,0x55,0xb3,0xb6,0x8f,0x64,0x16,0xfb,
+ 0x43,0x69,0xe5,0x5d,0x74,0xf3,0xa9,0xb6,0xeb,0x78,0xcd,0xa1,0x94,0x48,0x2e,0x14,
+ 0x22,0x5c,0x74,0x92,0xae,0xe1,0x67,0xa0,0xe6,0x72,0x0e,0x3a,0xfa,0x1a,0xed,0x47,
+ 0x8e,0xef,0xa2,0x3c,0x87,0xf1,0x5d,0xd0,0x37,0x1b,0xdc,0x78,0x4c,0x69,0x2d,0x42,
+ 0x86,0x1d,0x59,0x4f,0xda,0x5f,0x4b,0x48,0x03,0xc8,0xf0,0xf1,0x13,0x52,0x2a,0x7b,
+ 0x76,0xe8,0x76,0x16,0x15,0x36,0xf1,0x62,0x8a,0xc9,0x03,0x90,0xb8,0x95,0x2c,0x79,
+ 0xe4,0x70,0x01,0xf9,0xd6,0x7c,0x5c,0x3e,0x17,0xbb,0xbd,0x76,0x9a,0xa9,0x32,0x74,
+ 0xeb,0xfc,0x44,0xf3,0x4a,0x2e,0xd1,0x42,0x4f,0xfe,0xf5,0xf2,0x9f,0x85,0x8e,0xe7,
+ 0x05,0x64,0xe8,0xf5,0xaf,0x3f,0xc5,0x79,0x8c,0x3f,0x45,0xd5,0xac,0x48,0xdc,0xbe,
+ 0x37,0x0f,0x88,0xee,0xd5,0x5b,0xd4,0xb4,0x1d,0x49,0x09,0xf5,0x85,0x72,0xee,0x3e,
+ 0x6e,0x5e,0x5f,0x7b,0xf3,0xa6,0xfb,0x7f,0x12,0x8d,0x03,0x32,0x52,0x1a,0x8d,0x70,
+ 0x95,0x21,0xd5,0xa4,0x84,0xa1,0xa6,0x40,0x41,0xc7,0x89,0x51,0x49,0xc7,0xe3,0x55,
+ 0x1d,0x9f,0x87,0x06,0xf3,0x45,0x42,0x5a,0x6b,0x4b,0x0e,0xe9,0x09,0x09,0x40,0xfd,
+ 0xb1,0x1c,0x60,0x0f,0xf7,0xd3,0x23,0x78,0x3b,0x2d,0xee,0x3e,0xc8,0x59,0x61,0xcf,
+ 0xd4,0x56,0x25,0x43,0x8f,0x31,0xd3,0x1d,0x90,0xdd,0xd1,0x32,0x14,0x55,0x8e,0x25,
+ 0x7c,0x89,0x59,0xe5,0x81,0xcc,0xe3,0x1d,0x3c,0xc5,0x52,0x51,0x25,0xe4,0x5e,0xb9,
+ 0x5d,0xbe,0x6c,0xf7,0x04,0xb4,0x44,0x47,0xca,0x51,0xf3,0x25,0x62,0x62,0x9b,0xe2,
+ 0xf7,0xe0,0xc6,0x7e,0xb5,0x0e,0xeb,0x8e,0xda,0x2b,0xd7,0x9b,0x8b,0x21,0xa4,0x5b,
+ 0xdb,0x72,0xdf,0x67,0x8a,0xca,0x61,0x43,0x7d,0xe5,0x29,0x0f,0x4e,0x7d,0x44,0x77,
+ 0xce,0xf5,0xe2,0x4b,0x68,0x4f,0xca,0x8e,0x9c,0x4a,0xc9,0x04,0xa4,0x62,0xb3,0xed,
+ 0xa7,0x67,0xdd,0xd2,0xde,0x0d,0x38,0xab,0xc6,0x8d,0xd2,0x53,0x6f,0x36,0xa6,0x9e,
+ 0x54,0x55,0x4b,0x44,0x86,0x5b,0x47,0x7a,0x8f,0xbc,0x91,0xc6,0xe2,0x49,0xc6,0x7c,
+ 0x05,0x3a,0xae,0x7d,0x8d,0x77,0x77,0x44,0xc0,0x73,0x53,0x5c,0xf4,0xa3,0x36,0x70,
+ 0x90,0x95,0x2c,0x4a,0xbc,0xc6,0xef,0x57,0xc1,0x92,0x02,0x51,0xde,0x7c,0xca,0xeb,
+ 0x80,0x32,0x4d,0x14,0xba,0x1a,0x6d,0x34,0xe4,0x4d,0x32,0x37,0x09,0xf9,0x17,0x98,
+ 0xd3,0xad,0x89,0x5d,0xa2,0x60,0x56,0x59,0x76,0x1b,0x84,0x38,0x95,0x79,0xf1,0x0e,
+ 0x64,0x9f,0x1f,0x3a,0xb8,0x9b,0x5f,0xda,0x21,0x2e,0x6d,0x4a,0xae,0x5a,0xb0,0x3d,
+ 0xfb,0x7e,0x0a,0x9c,0x60,0xb2,0xdc,0x65,0x87,0x26,0xf0,0xa4,0x14,0x2d,0x29,0xc7,
+ 0xef,0x03,0x83,0xe1,0x90,0x6b,0x3d,0xf4,0x9e,0xe0,0xea,0x7d,0x1f,0x2a,0x35,0xd2,
+ 0x26,0x9c,0x96,0xd4,0xb0,0x8e,0x5c,0x6c,0xa5,0x4a,0x46,0x7a,0x8c,0x78,0x7e,0x19,
+ 0xa5,0xbd,0x6b,0xda,0xf3,0x77,0xae,0x31,0x5e,0x8f,0x06,0xcf,0x2d,0xb0,0xe8,0x21,
+ 0x45,0x0c,0x84,0xf5,0xf5,0x3e,0xc2,0xb0,0xd3,0xd0,0x92,0x79,0x49,0xf3,0xd1,0xea,
+ 0x7d,0x9f,0x6e,0x9e,0xb2,0x5a,0x70,0x82,0x55,0xd9,0xe1,0xda,0xb3,0xb5,0xe6,0xe5,
+ 0x6b,0x2b,0xf1,0x6f,0x4d,0xdb,0xee,0x96,0x48,0x2c,0x8e,0x14,0xa2,0x52,0xd2,0x86,
+ 0xc1,0x1e,0x21,0x23,0x1f,0x89,0xc9,0xa8,0x0b,0x47,0x76,0xbb,0xdf,0xad,0xb3,0xd4,
+ 0x0c,0x5c,0xe2,0x6b,0x34,0x84,0x21,0xde,0xf1,0xdb,0x6c,0xb7,0x9b,0x5c,0x47,0xc7,
+ 0x8a,0x56,0xdf,0xaf,0x98,0xc1,0xf5,0xa6,0xce,0xb0,0xb5,0xee,0x7e,0xb8,0x94,0xeb,
+ 0xb3,0xad,0xf2,0xd6,0x56,0x4a,0x88,0x53,0xcd,0xa0,0x7f,0xca,0x9a,0xe7,0x63,0xf5,
+ 0x8c,0x97,0x56,0xa7,0x2d,0xcc,0x45,0x49,0x51,0x20,0x3d,0x2d,0x2a,0xe1,0x19,0xe4,
+ 0x39,0x12,0x6b,0xa1,0xa5,0xc2,0x3c,0xa4,0xfd,0x35,0xbb,0x63,0xbe,0x27,0xdb,0x69,
+ 0xb8,0x8c,0xd9,0xad,0x9a,0xad,0xd3,0xa4,0xb5,0x34,0xc2,0x86,0x1c,0x4a,0xb2,0xe4,
+ 0x12,0xe9,0x38,0xf9,0x5e,0xc0,0xc2,0x49,0xfe,0x20,0x31,0x9a,0xb9,0x48,0x5a,0x5d,
+ 0x42,0x56,0x85,0x05,0xa1,0x43,0x21,0x49,0x39,0x04,0x79,0x8a,0xfc,0xe9,0x7f,0xd0,
+ 0x8b,0xe1,0x6b,0x8a,0x7d,0xce,0x04,0x56,0x5b,0x19,0x21,0x2b,0x5b,0x9c,0x3f,0x4e,
+ 0x11,0xe7,0x56,0xf7,0x6a,0x7b,0x6d,0xee,0x26,0xd6,0xe8,0x4b,0x46,0x91,0x6f,0x53,
+ 0x37,0xa8,0x51,0x6d,0x68,0x47,0x8d,0x21,0x56,0xd0,0xe3,0x81,0xb1,0xf7,0x52,0xa5,
+ 0xa8,0x92,0xae,0x11,0xcb,0x9f,0x30,0x00,0x15,0x38,0x37,0xc1,0x59,0xa3,0x5c,0xa8,
+ 0xac,0xd7,0x8b,0xf1,0x26,0xdc,0x88,0x6e,0x23,0xbc,0xd3,0x16,0x8b,0x82,0x70,0x12,
+ 0x43,0xa5,0x4d,0x0c,0xff,0x00,0x17,0x25,0x79,0x53,0xd2,0xd5,0xf1,0x34,0xb8,0x96,
+ 0x12,0x2e,0x1b,0x7f,0x1c,0xba,0x4f,0x35,0x47,0xba,0x10,0x91,0xf4,0x2d,0x9f,0xd6,
+ 0xa7,0x09,0x0f,0x34,0x5f,0x4a,0x2a,0x87,0x5c,0xbe,0x23,0xd7,0x79,0x89,0x79,0x36,
+ 0xcd,0x2f,0x02,0x0a,0xd4,0x9c,0x36,0x66,0x3a,0xb7,0x78,0x4f,0x99,0xe1,0x23,0x3f,
+ 0x80,0xaf,0x58,0x3f,0x11,0xab,0x83,0xa9,0xee,0x9c,0xb3,0x59,0x97,0x25,0xbc,0x25,
+ 0xd0,0x97,0xdc,0x4f,0xcd,0xec,0x7a,0x51,0x84,0xbc,0x1e,0x51,0xf4,0xbd,0x94,0x55,
+ 0x2a,0x8f,0xdb,0xf6,0xed,0x24,0x9e,0x0d,0x39,0x6b,0x5e,0x3a,0xf0,0xc9,0x59,0xae,
+ 0x94,0xf6,0xf0,0xbc,0xf1,0x27,0x3a,0x6a,0xdf,0x8f,0x1c,0x3c,0xba,0x7f,0xae,0x5e,
+ 0x13,0x9c,0x4b,0x99,0x45,0x54,0xf8,0xbd,0xb9,0xdc,0x9a,0xf2,0x1a,0x6b,0x48,0x27,
+ 0x8d,0x47,0x1f,0x3d,0xc5,0x28,0x1f,0x8a,0x92,0x00,0xfa,0xd2,0xa0,0xed,0xc7,0x69,
+ 0x8f,0x29,0x6c,0xcc,0xd2,0xd2,0xd8,0xe1,0x1f,0x79,0x99,0x8d,0xbb,0xcf,0xcb,0x90,
+ 0x03,0x1e,0xa0,0xd2,0xc2,0x5e,0x0f,0x38,0x96,0x72,0x8a,0x80,0xed,0xbd,0xb4,0xf6,
+ 0xfe,0x67,0x00,0x92,0xdd,0xd6,0x02,0x8e,0x02,0x8b,0xb1,0x92,0xa4,0x8c,0xf5,0xe6,
+ 0x95,0x13,0x81,0xed,0x52,0x86,0x90,0xdd,0x7d,0x21,0xaf,0x55,0xc1,0x61,0xbf,0xc3,
+ 0xb8,0x3d,0x8c,0xf7,0x09,0x5f,0x03,0xb8,0xff,0x00,0x22,0xb0,0xaf,0xca,0x93,0x8b,
+ 0x5c,0xa2,0x93,0x4f,0x82,0xa9,0xf6,0x87,0xf8,0x68,0xe9,0xfd,0xd4,0xd6,0x37,0x3d,
+ 0x53,0xa5,0xee,0x31,0xec,0x57,0x0b,0xa3,0xcb,0x95,0x36,0x14,0xd6,0x4b,0xac,0x38,
+ 0xfa,0xce,0x56,0xea,0x54,0x0e,0x50,0x54,0x79,0x90,0x01,0x19,0xe7,0xca,0xab,0xad,
+ 0xfb,0xe1,0x55,0xb8,0x36,0xe0,0xe7,0xd9,0x53,0x62,0xbd,0x80,0x0f,0x09,0x62,0x62,
+ 0x9b,0x51,0xc7,0x41,0xfd,0x60,0x4e,0x0f,0xd6,0xb5,0x8a,0x8a,0x2f,0xa1,0xa6,0xd3,
+ 0x4e,0x2d,0xa6,0x8c,0x4d,0xba,0x76,0x16,0xdd,0x1d,0x21,0x24,0xba,0x8d,0xbd,0xba,
+ 0x2d,0x64,0x60,0x2e,0x08,0xfb,0x42,0x79,0xf2,0xe7,0xc2,0xa3,0x8a,0x61,0xc4,0xd2,
+ 0x3a,0xa3,0x6e,0x35,0x93,0x73,0x2f,0x7a,0x76,0xe1,0x6b,0x0c,0xab,0x81,0xc6,0xe6,
+ 0xc6,0x5b,0x7c,0xf0,0x46,0x32,0x46,0x39,0xa4,0x9f,0xc0,0x56,0xf7,0x57,0x2d,0xc2,
+ 0xd7,0x0e,0xec,0xc8,0x66,0x74,0x46,0x26,0x34,0x0e,0x7b,0xb9,0x0d,0xa5,0x69,0xcf,
+ 0xb1,0x14,0x95,0x25,0x55,0xb0,0xdc,0xa7,0x29,0x29,0xb9,0x36,0xd7,0xbb,0x99,0x3f,
+ 0x66,0xb8,0xc2,0xd4,0x76,0xc6,0x54,0xc3,0x8c,0x92,0x47,0xca,0x19,0x1c,0xc7,0xf9,
+ 0xbc,0xa9,0xd5,0xa4,0x34,0x74,0x9d,0x6f,0xa9,0xed,0xda,0x66,0xd6,0xeb,0x6e,0xdc,
+ 0xa7,0x28,0xf0,0x24,0x91,0xf2,0xb6,0x92,0x38,0xdc,0x50,0xeb,0xc2,0x07,0x3a,0x92,
+ 0x3b,0x54,0xfc,0x3b,0xd7,0x74,0x5c,0xfd,0x55,0xb4,0x6f,0xae,0xcf,0x70,0x73,0x89,
+ 0xe9,0x56,0x16,0x5d,0x2d,0xb6,0xe9,0xea,0x54,0xc1,0xe8,0x95,0x1f,0xe0,0x3c,0x8f,
+ 0x86,0x2a,0x95,0xec,0x47,0x66,0x6d,0xe6,0xbc,0xeb,0xbf,0xdb,0xf6,0x19,0x57,0x2d,
+ 0x33,0x78,0xb5,0xc8,0x52,0x11,0x7e,0xbb,0x3c,0xb6,0x92,0xca,0x81,0xc2,0x90,0x94,
+ 0x9f,0x9d,0x44,0x10,0x41,0x00,0x11,0xe0,0x48,0xae,0x58,0xfc,0xdf,0xca,0xd3,0xb5,
+ 0xe1,0xef,0x4b,0xf3,0x2f,0xf5,0xe2,0xe0,0x94,0xaa,0xac,0xdc,0x0b,0x3d,0xb5,0x16,
+ 0x6b,0x44,0x1b,0x7b,0x6a,0x2b,0x6e,0x2b,0x08,0x61,0x2a,0x57,0x52,0x12,0x90,0x90,
+ 0x7f,0x2a,0xeb,0x52,0x82,0x41,0x24,0x80,0x07,0x52,0x6a,0x09,0xb5,0x6a,0x5d,0x64,
+ 0x34,0x75,0xae,0xd9,0x7a,0xd4,0x31,0x9d,0xbb,0x30,0xc2,0x1b,0x99,0x73,0xb7,0xb1,
+ 0xdd,0x2a,0x4a,0xc0,0xe6,0xac,0x12,0x78,0x73,0xe9,0x49,0x93,0xe3,0x5c,0xae,0x4b,
+ 0xef,0x24,0xce,0x97,0x2d,0x58,0xe1,0x0b,0x5b,0xe5,0x39,0x1e,0xc2,0xbb,0xd6,0x93,
+ 0x7c,0x9f,0x36,0xf5,0x11,0x36,0xdd,0x75,0xd6,0x9e,0xb2,0x8c,0xcd,0xbc,0x43,0x63,
+ 0xd0,0xba,0x09,0xfc,0x05,0x34,0x6e,0x5d,0xa1,0x34,0x8c,0x0e,0x30,0xd3,0xf2,0xa6,
+ 0xad,0x3d,0x03,0x11,0xd5,0x85,0x7b,0x28,0xe0,0x54,0x50,0xe5,0x85,0xb6,0x1c,0x19,
+ 0x86,0xda,0x41,0xf1,0x48,0xfd,0x4d,0x76,0x31,0xa7,0xe1,0x05,0x25,0x6f,0xa5,0xa0,
+ 0x8f,0xe1,0x51,0xe5,0x8f,0xa5,0x68,0xb4,0x57,0x6c,0x87,0xa8,0xfa,0x16,0xa7,0x76,
+ 0xa5,0xef,0x90,0xeb,0x76,0xbd,0x33,0x29,0xd9,0x05,0x24,0x37,0xdf,0x38,0x30,0x15,
+ 0xfb,0xa4,0x84,0xe7,0x97,0xa6,0x6a,0xad,0xee,0x26,0xc5,0x6b,0x0d,0xfa,0xd4,0xcd,
+ 0xdd,0xf5,0x6d,0xd5,0x57,0x15,0xb4,0xf2,0xdd,0x8a,0xc4,0xf6,0xdd,0xee,0xa2,0x71,
+ 0x63,0x21,0x96,0x92,0xe8,0x08,0x18,0x03,0xdf,0x1c,0xce,0x6a,0xd1,0x31,0x36,0xc7,
+ 0x68,0xc0,0x8e,0xdb,0x09,0x23,0xc7,0x19,0x35,0xe8,0xf6,0xb6,0xb4,0x32,0x14,0xa2,
+ 0xf2,0x42,0xfc,0xea,0xd4,0x12,0xe1,0x12,0xe6,0xd9,0x18,0xed,0x46,0xd6,0xcd,0xd9,
+ 0x2d,0x22,0x2c,0x76,0x1b,0xc4,0xcb,0x45,0xb5,0x4a,0x5b,0xce,0xc5,0x8e,0xea,0x92,
+ 0xd2,0x9d,0x51,0xca,0xd6,0x02,0x8a,0x94,0x92,0x7d,0x15,0x49,0x1a,0xa6,0xd9,0x1d,
+ 0xc7,0x9c,0x71,0xf5,0xb9,0x31,0xf5,0x73,0x5b,0xaf,0x2c,0xa8,0x9f,0x52,0x4d,0x3c,
+ 0xf5,0x16,0xbb,0x87,0x27,0x88,0x21,0xf4,0x91,0x51,0xd5,0xe6,0xf4,0xdc,0xc2,0xae,
+ 0xed,0xc0,0xa1,0xe7,0x4d,0x40,0x97,0x21,0x87,0x7c,0x8e,0xc3,0x3c,0x5c,0x08,0x09,
+ 0x1e,0x43,0xa5,0x31,0xee,0x6f,0x36,0xd8,0x21,0x29,0x19,0xf1,0xe5,0x4f,0x6b,0xcb,
+ 0x0e,0x49,0x51,0x3c,0x49,0x03,0xde,0x9a,0x33,0xac,0xea,0x71,0x44,0x95,0xa7,0x1e,
+ 0xf4,0xe8,0x56,0x32,0x2e,0xb3,0x9c,0x42,0x95,0xc0,0x9e,0x25,0x63,0x09,0x40,0x20,
+ 0x64,0xf9,0x53,0x26,0xe1,0x71,0xbb,0xcd,0x9c,0x88,0xd8,0x10,0xf8,0x82,0xb0,0x09,
+ 0x07,0x8b,0xeb,0xed,0xfc,0x39,0xa7,0x3e,0xbe,0xdb,0x39,0xba,0x9e,0xf5,0x64,0x53,
+ 0x72,0x12,0xd5,0xba,0x3a,0xdc,0x54,0xa2,0x97,0x8b,0x6b,0xc1,0x03,0x87,0x87,0x1d,
+ 0x4e,0x45,0x23,0xbb,0xb5,0x37,0x5f,0xe9,0x55,0x9e,0x7b,0x97,0xa6,0xa7,0x43,0xb7,
+ 0x95,0xe0,0xba,0xde,0x1f,0x29,0x50,0xfb,0xa4,0x8e,0x4a,0xe9,0xd7,0x95,0x4d,0x31,
+ 0xec,0x21,0xbd,0x6e,0x6a,0xc7,0x0d,0x72,0xa6,0x4a,0x71,0xb6,0x9a,0x1c,0x4e,0x2b,
+ 0xbd,0x52,0x5b,0x03,0xa6,0x4f,0x32,0x6b,0x88,0xdf,0x2d,0xe5,0x02,0x42,0x1c,0x52,
+ 0x9a,0x73,0x07,0xbf,0x43,0x2a,0x29,0x20,0xf4,0xca,0xb1,0x52,0xc4,0xab,0x03,0x0e,
+ 0xa1,0x6d,0x38,0xd2,0x56,0xda,0xc7,0x09,0x0b,0x19,0x04,0x79,0x1a,0x6e,0x5b,0x74,
+ 0x13,0x36,0x10,0xf3,0x10,0x6e,0x12,0x23,0xc5,0x5a,0xb8,0x93,0x14,0x84,0xb8,0x86,
+ 0xfd,0x11,0xc4,0x09,0x03,0xd2,0x96,0x3b,0x8d,0x31,0xb5,0x3d,0x52,0xe1,0xc2,0x5b,
+ 0xcc,0xc4,0x5c,0xe5,0x80,0x08,0x65,0xb2,0x02,0x95,0xed,0x9e,0x54,0x8d,0x6d,0xd4,
+ 0x12,0x6e,0x0f,0x04,0x2a,0x13,0x71,0x95,0x9c,0x29,0xb7,0x1f,0xe1,0x75,0x1e,0xe9,
+ 0x20,0x7e,0x44,0xd4,0x93,0x6f,0xb0,0x45,0xb5,0xf7,0xc3,0xbe,0x93,0x20,0xba,0xae,
+ 0x35,0x17,0xd6,0x55,0x83,0xfc,0xa3,0xc0,0x7a,0x57,0xa4,0x88,0xf6,0xd7,0x14,0x92,
+ 0xf4,0x56,0xde,0x52,0x7a,0x17,0x10,0x0e,0x3d,0xa8,0x61,0x63,0x37,0xbc,0x4d,0xd1,
+ 0x2e,0xc5,0x85,0x21,0x0e,0x4c,0x68,0x82,0xb4,0x21,0xdc,0x60,0x7a,0x9c,0x1f,0xd2,
+ 0x95,0x2d,0x5a,0x14,0x45,0x8e,0x1a,0x69,0xa8,0xe9,0x6c,0xfc,0xca,0x41,0x6b,0x04,
+ 0xa8,0xf5,0xf9,0x93,0x8f,0xd2,0x9c,0x91,0xdc,0x84,0xc8,0xc3,0x30,0xd9,0x68,0xff,
+ 0x00,0x2a,0x42,0x6b,0xb1,0x2f,0x36,0xae,0x7c,0x21,0x20,0x78,0xf1,0x60,0x53,0xb1,
+ 0x1c,0x10,0x34,0xb3,0x4d,0xa9,0xb5,0xc8,0xc3,0x65,0xa5,0x85,0xa5,0x0d,0xa8,0x29,
+ 0x3c,0xbd,0x70,0x0d,0x3a,0x59,0x9e,0xdb,0x43,0x09,0xe2,0x5f,0xb8,0xe5,0x4d,0xb9,
+ 0x7a,0xae,0xcb,0x6e,0x04,0x49,0xba,0xc3,0x60,0x8e,0xa8,0x5b,0xe9,0xe2,0xfc,0x33,
+ 0x9a,0x48,0x97,0xbc,0xda,0x62,0x08,0xf9,0x25,0x3b,0x2d,0x63,0xf7,0x63,0xc7,0x51,
+ 0xfc,0xd5,0x81,0xf9,0xd5,0x58,0x89,0x05,0x13,0x14,0x47,0xdd,0x56,0x3d,0xab,0xec,
+ 0xc8,0x56,0x32,0x52,0xa3,0xee,0x2a,0x1a,0xb9,0xf6,0x89,0x4b,0x43,0x86,0x05,0x99,
+ 0xd5,0xf9,0x2e,0x4b,0xa1,0x03,0xff,0x00,0x14,0xe7,0xf5,0xa6,0x8d,0xd3,0x7d,0x35,
+ 0x75,0xcd,0xc0,0xdc,0x47,0x58,0x82,0x5c,0x3c,0x09,0x6e,0x33,0x3c,0x4a,0x24,0xf4,
+ 0x00,0xab,0x27,0x3e,0xd4,0xc2,0x8b,0x11,0x32,0xe0,0xcc,0x46,0x94,0xe4,0x82,0x19,
+ 0x6c,0x75,0x5b,0x98,0x4a,0x7f,0x13,0x5c,0x7b,0x75,0xaa,0xae,0x3a,0xff,0x00,0x72,
+ 0x6d,0x5a,0x6f,0x6e,0xa3,0x3d,0x7b,0xd4,0xaa,0x79,0x2b,0x0f,0xc6,0x25,0x2c,0x42,
+ 0x4a,0x48,0x2a,0x79,0xd7,0x47,0x24,0xa5,0x3e,0x9c,0xc9,0xe4,0x3a,0xd4,0x17,0xa2,
+ 0xf6,0x77,0x72,0xb7,0xff,0x00,0x51,0xa2,0xd1,0x69,0x6a,0x5d,0xf6,0xe4,0xb5,0x61,
+ 0xc4,0x38,0xe9,0x53,0x71,0xd3,0xc7,0xc2,0x56,0xea,0x87,0xca,0xda,0x41,0x0a,0xeb,
+ 0xcc,0xf0,0xf2,0x07,0x23,0x3a,0xf5,0xd8,0xfb,0xb2,0x9d,0xab,0xb2,0xde,0xdf,0x2a,
+ 0xdc,0x97,0x5b,0xb9,0x6a,0x5b,0x82,0x83,0xd7,0x4b,0x9a,0x51,0x8e,0xf1,0x5e,0x0d,
+ 0xa3,0xc4,0x36,0x9f,0x0f,0x3e,0xa6,0xb3,0x9c,0xf1,0x5b,0x1a,0x46,0x17,0xc9,0x3e,
+ 0x51,0x45,0x15,0xc6,0x74,0x85,0x14,0x51,0x40,0x05,0x55,0xfe,0xd0,0xba,0xf9,0xce,
+ 0xcf,0x97,0x01,0x7c,0xbc,0x69,0x89,0xd7,0xbd,0x1d,0x35,0xc2,0x57,0x76,0xb5,0x94,
+ 0x95,0xc2,0x75,0x47,0xee,0x3c,0xd9,0xc7,0xca,0x7c,0x16,0x0f,0x3e,0x98,0xcf,0x5b,
+ 0x41,0x5c,0x37,0xcb,0x24,0x0d,0x4b,0x68,0x97,0x6b,0xba,0x44,0x6a,0x7d,0xba,0x5b,
+ 0x6a,0x65,0xf8,0xcf,0xa4,0x29,0x0e,0x20,0x8c,0x10,0x41,0xaa,0x8c,0xb1,0x76,0x4c,
+ 0x96,0x48,0xa5,0x56,0xee,0xd9,0x3b,0x59,0xa9,0xec,0xb2,0x58,0x6f,0x50,0x0d,0x2d,
+ 0x74,0x79,0xa5,0xa1,0xa7,0x2e,0x30,0x96,0x52,0xc2,0x88,0x21,0x0b,0x3c,0x40,0x05,
+ 0x63,0x92,0xb1,0x9c,0x78,0x52,0x96,0xda,0x6e,0x76,0x90,0xb6,0xda,0xdd,0x8d,0x2b,
+ 0x77,0xad,0x5a,0xad,0xe7,0x5c,0xef,0x10,0xfc,0x97,0x1b,0x65,0x4d,0x8e,0x10,0x0a,
+ 0x40,0x07,0x98,0xc8,0x27,0x9f,0x4c,0xe3,0xa5,0x32,0x77,0xa7,0xe1,0x76,0x65,0x4b,
+ 0x95,0x73,0xdb,0x6b,0xf2,0x18,0x4a,0xfe,0x64,0xd9,0x6f,0x0a,0x51,0x4a,0x7f,0x95,
+ 0x0f,0x0c,0x90,0x3c,0x82,0x81,0xf7,0xaa,0x21,0xaa,0xf6,0xf2,0xf9,0xa4,0x2e,0x37,
+ 0x08,0x17,0x6b,0x7f,0x03,0xb0,0x5e,0x5c,0x77,0xd4,0x82,0x1c,0x42,0x56,0x95,0x70,
+ 0xab,0x98,0xf0,0xc8,0xeb,0x5d,0x29,0xa9,0x3b,0x39,0x9c,0x69,0xee,0x6a,0x45,0xcf,
+ 0x77,0xf4,0x4c,0x56,0xcf,0x1e,0xad,0xb4,0xab,0x87,0xf8,0x25,0x20,0x9f,0xc8,0xd3,
+ 0x06,0xe7,0xda,0x0f,0x44,0x7d,0xa1,0x48,0x4d,0xcd,0x0e,0x0c,0xff,0x00,0xdc,0x4f,
+ 0x43,0xf5,0xac,0xcc,0x30,0x1b,0xea,0x1b,0x4e,0x09,0xea,0x12,0x2b,0xe5,0x71,0x50,
+ 0x79,0x84,0x0e,0x5e,0x95,0xa5,0x3e,0x84,0x69,0x2a,0xf7,0xcf,0x44,0xbc,0x33,0xfb,
+ 0x4e,0x3a,0x4f,0xf3,0xba,0x69,0x12,0xe5,0xbc,0xfa,0x31,0xc2,0x4a,0x6e,0x70,0xb0,
+ 0x7a,0x9e,0xfb,0x15,0x9f,0x08,0x8e,0x85,0x27,0x9a,0x46,0x7d,0x2b,0xe7,0xec,0x8d,
+ 0x92,0x07,0x00,0x3f,0x4a,0x6a,0xc5,0x45,0xf3,0x7f,0x72,0xf4,0xb4,0xb1,0xf2,0x5d,
+ 0xe0,0xe0,0xf9,0xc8,0x02,0x93,0xe4,0xeb,0xab,0x09,0x4f,0xcb,0x78,0x82,0x07,0xa4,
+ 0x94,0xff,0x00,0xf6,0xa8,0xda,0xa1,0x35,0xfd,0xd2,0x4f,0xfb,0x6b,0xc9,0x70,0x9a,
+ 0x07,0x3d,0xca,0x39,0x7f,0x28,0xa7,0xb8,0x51,0x73,0x26,0xee,0x16,0x9b,0x64,0x10,
+ 0xe5,0xee,0x02,0x47,0x8f,0xf6,0x81,0xff,0x00,0xda,0x6d,0xcf,0xdc,0xed,0x1a,0xa5,
+ 0x80,0xe6,0xa0,0x82,0x02,0x7f,0x75,0x2e,0xe6,0xaa,0xc3,0x30,0x92,0xe8,0x77,0x87,
+ 0xba,0x6f,0xbb,0x47,0x1f,0xce,0x40,0xe2,0xe6,0x06,0x07,0x99,0xe7,0xf9,0x1a,0xf7,
+ 0xb4,0xbf,0x1a,0x04,0xf4,0xbd,0x32,0x02,0x2e,0x4c,0x00,0x41,0x8e,0xb5,0xa9,0x00,
+ 0x9f,0x03,0x94,0xf3,0xe5,0x49,0x95,0x45,0x96,0x67,0x7b,0xf4,0x55,0xac,0xb9,0xc3,
+ 0x32,0x24,0xd2,0xac,0x60,0xa9,0x95,0xb9,0xc3,0xec,0x07,0x2f,0xc7,0x35,0xc7,0x73,
+ 0xed,0x1f,0xa6,0x9f,0x8e,0xa6,0x12,0x94,0x94,0x1f,0x06,0x2d,0x49,0x42,0xbe,0x8b,
+ 0xe0,0x07,0xf3,0xa8,0x16,0x05,0xfe,0x1d,0xbe,0xe1,0x36,0x48,0xd3,0xd6,0xf9,0x2c,
+ 0xbe,0x41,0x6e,0x3c,0x9e,0x35,0xa1,0x8c,0x67,0x92,0x79,0xe4,0xf5,0xf1,0xf2,0xae,
+ 0x58,0x17,0x75,0x5b,0x98,0x98,0xd2,0x21,0xc3,0x73,0xed,0x23,0x05,0x6f,0x34,0x16,
+ 0xa6,0xc7,0xf2,0x13,0xf7,0x69,0x6f,0xe0,0x52,0x25,0xd9,0x9b,0xfb,0x64,0x57,0x10,
+ 0x6a,0xdd,0x39,0xe3,0xfe,0x54,0x27,0xf5,0x55,0x23,0x48,0xde,0xe5,0x38,0x4f,0xd9,
+ 0xac,0xc4,0x8f,0xf1,0xdf,0x03,0xf4,0x06,0x9b,0x36,0xd6,0xf5,0x36,0xa2,0xb3,0x47,
+ 0xb5,0xb3,0x66,0x99,0x3a,0xd4,0xd2,0xd2,0x95,0x18,0x16,0xe2,0xb7,0x3a,0xe7,0x1c,
+ 0x69,0x49,0x39,0xf7,0xa7,0x23,0x1d,0x9c,0x37,0x2e,0xf2,0xf8,0xfd,0x8d,0xb6,0xba,
+ 0xc1,0x4c,0x72,0x41,0xfb,0x5d,0xb1,0xd4,0x9e,0x23,0xea,0x50,0x90,0x07,0xff,0x00,
+ 0xb3,0x45,0xfa,0x15,0xe0,0x9d,0x3b,0x77,0x6f,0x0a,0x51,0x42,0x2d,0xd0,0xe3,0x2b,
+ 0xc7,0x8c,0xad,0x64,0x7f,0xc6,0x92,0x9f,0xdc,0x4d,0x41,0x27,0xac,0xa8,0xec,0x7f,
+ 0xa1,0x1c,0x0f,0xf9,0x15,0x54,0xb3,0x66,0xec,0x25,0xbe,0xd7,0xe7,0x12,0xb5,0x68,
+ 0x59,0x11,0x92,0xb5,0xf0,0x97,0x27,0x4d,0x8e,0xde,0x3d,0x48,0x2e,0x71,0x63,0xe8,
+ 0x6a,0x43,0xb1,0x7c,0x2f,0xf7,0x6e,0xe8,0xd2,0x1c,0x9f,0x37,0x4e,0xd9,0xc1,0x23,
+ 0x2d,0xbb,0x2d,0xc7,0x56,0x91,0xe3,0xf7,0x5b,0xc6,0x7d,0x33,0xf5,0xa9,0xb8,0x2e,
+ 0x58,0xd4,0x59,0x53,0x65,0x6a,0x1b,0xc4,0xac,0xf7,0xb7,0x69,0x58,0xff,0x00,0x0d,
+ 0x61,0xbf,0xf8,0x01,0x49,0x52,0x0a,0xe5,0x1c,0x3e,0xf3,0xd2,0x3f,0xd6,0x75,0x4b,
+ 0xfd,0x49,0xad,0x12,0xd3,0xff,0x00,0x09,0x77,0x16,0x84,0x1b,0xf6,0xe1,0xe0,0x92,
+ 0x0a,0xdb,0xb6,0xdb,0xf1,0x81,0xe2,0x02,0x96,0xa3,0x9f,0x7c,0x54,0xa7,0xa5,0xfe,
+ 0x17,0x7b,0x49,0x66,0x09,0x55,0xd2,0x4d,0xf2,0xfe,0xe0,0xe6,0x7b,0xf9,0x9d,0xca,
+ 0x49,0xf6,0x6c,0x0e,0x55,0x2f,0x52,0x0b,0x82,0xb0,0x66,0x4a,0x70,0x36,0xdf,0x2c,
+ 0x25,0x23,0xa7,0x95,0x38,0x74,0xbe,0xdb,0xea,0xbd,0x6f,0x25,0x2c,0x69,0xfd,0x35,
+ 0x74,0xbc,0x3a,0xa3,0x84,0x88,0x71,0x16,0xbc,0x9f,0x70,0x31,0x5b,0x61,0xa4,0xbb,
+ 0x26,0x6d,0x0e,0x89,0x71,0xa7,0x6d,0x5a,0x06,0xcc,0x87,0xdb,0xe6,0x97,0xdf,0x60,
+ 0x3c,0xbc,0xf9,0x92,0xbc,0xd4,0xa7,0x06,0xdb,0x12,0xd6,0xc7,0x73,0x0a,0x2b,0x31,
+ 0x19,0xfe,0xed,0x86,0xc2,0x13,0xf8,0x01,0x52,0xf5,0xbc,0x45,0x2d,0x3f,0x59,0x8f,
+ 0x9b,0x73,0xf0,0xda,0xde,0x2d,0x7e,0x94,0x48,0xb8,0xc1,0x87,0xa3,0xe1,0xab,0x18,
+ 0x37,0x97,0x48,0x77,0x1f,0xe9,0xa0,0x29,0x40,0xfb,0x81,0x56,0xa7,0x68,0xfe,0x15,
+ 0x3a,0x13,0x4b,0x38,0xd4,0xdd,0x71,0x78,0x99,0xab,0xe6,0xa0,0x85,0x08,0x91,0xc9,
+ 0x87,0x10,0x7a,0x1e,0x13,0xde,0x2b,0xdf,0x89,0x3e,0xd5,0x78,0xe8,0xac,0x9e,0xa4,
+ 0x99,0x6a,0x09,0x08,0x9a,0x47,0x44,0xe9,0xfd,0x03,0x67,0x6a,0xd5,0xa6,0xec,0xb0,
+ 0x6c,0x76,0xe6,0xc7,0xcb,0x1a,0x03,0x09,0x69,0x1e,0xe4,0x24,0x73,0x3e,0xa7,0x9d,
+ 0x2d,0xd1,0x45,0x66,0x58,0x51,0x45,0x14,0x00,0x51,0x45,0x14,0x00,0x51,0x45,0x14,
+ 0x00,0x56,0x4f,0xf6,0xd5,0xec,0xeb,0xaf,0xb6,0xd3,0x57,0xea,0x7d,0x4c,0xd2,0x15,
+ 0x77,0xd0,0xf7,0x99,0x8f,0xc9,0x12,0x98,0x1c,0x46,0x27,0x7c,0xa2,0xa2,0xdb,0xc3,
+ 0x19,0x00,0x15,0x10,0x15,0xd0,0xfe,0x55,0xac,0x15,0xcd,0x71,0xb7,0x45,0xbb,0xc1,
+ 0x7e,0x14,0xd8,0xed,0x4b,0x88,0xfa,0x0b,0x6e,0xb0,0xf2,0x02,0x90,0xb4,0x9e,0xa0,
+ 0x83,0xc8,0x8a,0x69,0xd1,0x2d,0x59,0x83,0xfb,0x7b,0x7f,0x46,0x95,0xb7,0x2e,0x23,
+ 0xe8,0x6f,0x84,0xba,0xa3,0xc0,0xac,0x12,0x72,0x07,0x3c,0x53,0xe0,0xdd,0x2c,0xb2,
+ 0x59,0x43,0xaf,0x42,0x85,0x21,0x2a,0xe6,0x4f,0x74,0x9c,0x8e,0x59,0xc1,0xe5,0xd7,
+ 0xad,0x5c,0x9e,0xd1,0x7f,0x0d,0x6b,0x56,0xa6,0x6a,0x75,0xe3,0x6c,0xe4,0x22,0xcd,
+ 0x71,0x70,0x97,0x15,0x63,0x94,0xaf,0xec,0x6e,0x9f,0x10,0xda,0xba,0xb6,0x7f,0x11,
+ 0xed,0x59,0xe7,0xb8,0x3a,0x23,0x59,0xed,0x05,0xe9,0xcb,0x15,0xde,0xcf,0x2e,0xd3,
+ 0x73,0x8e,0x38,0x97,0x12,0x6a,0x72,0x1c,0x18,0xe6,0xa6,0xd6,0x39,0x29,0x27,0x00,
+ 0xe4,0x12,0x3a,0xd6,0xb9,0x78,0x65,0x85,0xbd,0xc7,0x55,0xcd,0x16,0x37,0x50,0x54,
+ 0xdd,0xba,0x33,0x5c,0xce,0x0a,0x46,0x29,0x8b,0xaa,0xef,0x56,0xbb,0x0c,0x17,0x1c,
+ 0x10,0xdb,0x53,0xbd,0x10,0x90,0x4f,0x33,0xf8,0xd3,0x73,0xfa,0x7c,0xb4,0xa9,0x09,
+ 0x9c,0xc2,0xd8,0x56,0x70,0x49,0x1c,0x89,0xf4,0x22,0x91,0xf5,0x5b,0x12,0x75,0x0b,
+ 0x46,0x6b,0x2e,0xb0,0x22,0x36,0x33,0xfd,0x63,0xc1,0x27,0x1e,0x60,0x78,0xd2,0x53,
+ 0xbe,0x19,0x52,0xd2,0x94,0x3f,0xb2,0x17,0x74,0x74,0x88,0x97,0x16,0x1c,0x76,0xf5,
+ 0x71,0x54,0x75,0xac,0x15,0x21,0x09,0x01,0x28,0x6c,0x7b,0xe3,0x34,0xc0,0xd5,0x5a,
+ 0xd5,0xe8,0x17,0x75,0x33,0x6d,0x9a,0xf4,0x98,0xe9,0x56,0x12,0xa5,0x21,0x23,0x8c,
+ 0x67,0xc0,0x63,0x3c,0xeb,0xc3,0x58,0x4e,0x0c,0xd9,0x22,0x77,0x04,0x84,0xb8,0x03,
+ 0x79,0x1d,0x30,0x2b,0xc7,0x4c,0x14,0xaa,0x0f,0xda,0xcb,0x48,0x32,0x16,0x4b,0x69,
+ 0x59,0x4f,0x34,0x24,0x63,0x24,0x7a,0x9c,0xe3,0x3e,0x94,0xa5,0x27,0xc2,0x2a,0x31,
+ 0x4f,0x73,0x58,0xfb,0x1c,0x5d,0xbb,0x29,0xf6,0x83,0xb5,0xc4,0xb3,0x44,0xd0,0xb0,
+ 0xed,0x3a,0xd9,0x2c,0x20,0xc9,0xb4,0xdf,0x54,0xea,0xdd,0x7d,0x69,0x4f,0xce,0xb6,
+ 0x14,0xb5,0x90,0xb1,0xc8,0x9c,0x27,0x04,0x78,0x8a,0xb6,0x96,0xee,0xca,0x3b,0x3b,
+ 0x6a,0x5a,0xd4,0xc6,0xdb,0x69,0xc5,0x95,0x8c,0x11,0x22,0x02,0x1e,0x1f,0x40,0xb0,
+ 0x40,0xfa,0x56,0x1e,0x6d,0x3e,0xb3,0xb9,0xed,0x3e,0xe0,0xe9,0x9d,0x55,0x09,0xb7,
+ 0x13,0x3a,0xd7,0x31,0xb9,0x8d,0x26,0x40,0xe4,0xb0,0x0f,0x3e,0xbe,0x0a,0x49,0x52,
+ 0x7e,0xb5,0xfa,0x18,0x42,0xb8,0xd0,0x95,0x74,0xc8,0xcd,0x4d,0xbf,0x4a,0xa4,0x30,
+ 0xad,0xfd,0x9f,0x76,0xc2,0xd4,0xea,0x9d,0x87,0xb7,0x7a,0x56,0x3b,0x8a,0x1c,0x25,
+ 0x4d,0xd9,0xa3,0x82,0x47,0x97,0xdc,0xa7,0x0c,0x0d,0x05,0xa6,0x2d,0x51,0xc4,0x78,
+ 0x5a,0x72,0xd3,0x0d,0x80,0x4a,0x83,0x4c,0x41,0x69,0x09,0x04,0xf5,0x38,0x09,0xc5,
+ 0x2f,0x51,0x4a,0xc6,0x7c,0xa1,0xb4,0x34,0x90,0x94,0x24,0x21,0x20,0x60,0x04,0x8c,
+ 0x01,0x5f,0x54,0x51,0x48,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,
+ 0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,
+ 0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x9a,0xbb,0x8d,0xb5,0xba,0x57,
+ 0x76,0xb4,0xfb,0x96,0x6d,0x59,0x64,0x8b,0x79,0x82,0xa0,0x78,0x43,0xe8,0xf9,0xda,
+ 0x51,0x18,0xe2,0x6d,0x63,0xe6,0x42,0xbd,0x52,0x45,0x3a,0xa8,0xa0,0x0c,0xbf,0xed,
+ 0x0d,0xf0,0xca,0xbd,0xe9,0x61,0x2a,0xef,0xb7,0x4f,0x2f,0x52,0xd9,0xf9,0xad,0x56,
+ 0x99,0x18,0x13,0x19,0x1e,0x49,0x3d,0x1d,0xfc,0x8f,0xa1,0xaa,0x3d,0xaa,0xb4,0xd4,
+ 0xbb,0x0b,0x13,0x2d,0xb3,0x60,0x3b,0x0a,0x4b,0x20,0xb6,0xb8,0xef,0x34,0x5b,0x71,
+ 0x18,0xe5,0x8c,0x1f,0x2a,0xfd,0x10,0xd4,0x7d,0xb9,0x7b,0x05,0xa0,0x37,0x79,0xa2,
+ 0x35,0x56,0x98,0x83,0x73,0x7b,0x84,0xa5,0x32,0x8b,0x7c,0x0f,0xa7,0x3e,0x4b,0x4e,
+ 0x0d,0x5a,0x95,0x72,0x43,0x8f,0x87,0xe7,0x93,0x54,0x58,0xbe,0xd3,0xa3,0xa3,0xbb,
+ 0x1c,0x97,0x97,0x19,0x5c,0x4b,0x09,0x1d,0x12,0x7a,0xfe,0x1c,0xa9,0x17,0x4a,0x4b,
+ 0x47,0xd8,0x8b,0x7c,0x40,0x38,0xda,0x8e,0x53,0x9e,0x7c,0x27,0x9e,0x47,0xd6,0xb6,
+ 0x3f,0x5b,0x7c,0x27,0x36,0xce,0x7f,0xda,0xa5,0xd8,0xb5,0x1e,0xa2,0xd3,0x8a,0x21,
+ 0x4a,0x0c,0xb4,0xea,0x1f,0x6f,0xd8,0x85,0xa7,0x24,0x7d,0x6a,0x06,0xec,0xd9,0xf0,
+ 0xea,0xd2,0xba,0x87,0x7b,0xae,0x0a,0xbf,0xde,0xd5,0x73,0xb6,0x69,0xa9,0x8d,0xa9,
+ 0x56,0xf4,0x40,0x0d,0x26,0x69,0x1f,0x36,0x16,0x7b,0xc5,0x61,0x27,0x1c,0xc0,0x1c,
+ 0xfc,0xe8,0x74,0xf7,0x43,0x8d,0xad,0x99,0x07,0xf6,0x3c,0xec,0xfd,0xa9,0x7b,0x47,
+ 0xee,0x15,0x9e,0xdc,0x96,0x26,0x23,0x46,0xc0,0x90,0x89,0x57,0x49,0xef,0xa5,0x45,
+ 0x80,0xda,0x54,0x09,0x6d,0x24,0xf2,0x2b,0x5e,0x38,0x40,0x1e,0x79,0x3d,0x2b,0x73,
+ 0xc0,0x09,0x00,0x0e,0x40,0x57,0x15,0x96,0xc5,0x6d,0xd3,0x76,0xe6,0xa0,0x5a,0x60,
+ 0x46,0xb6,0x41,0x6b,0x92,0x23,0x44,0x65,0x2d,0x36,0x9f,0x64,0xa4,0x01,0x5d,0xd5,
+ 0x05,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,
+ 0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x1f,0xff,0xd9};
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/thumb_test.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/thumb_test.h
new file mode 100644
index 000000000..0b43b0074
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Fire/thumb_test.h
@@ -0,0 +1,1286 @@
+//
+// thumb_test
+//
+const uint8_t thumb_test[] PROGMEM = { 0xff,0xd8,0xff,0xe1,0x1e,0x28,0x45,0x78,0x69,0x66,0x00,0x00,0x4d,0x4d,0x00,0x2a,
+ 0x00,0x00,0x00,0x08,0x00,0x0d,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x0f,0xc0,
+ 0x00,0x00,0x01,0x01,0x00,0x03,0x00,0x00,0x00,0x01,0x0b,0xd0,0x00,0x00,0x01,0x0f,
+ 0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xaa,0x01,0x10,0x00,0x02,0x00,0x00,
+ 0x00,0x0a,0x00,0x00,0x00,0xb2,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x06,
+ 0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xbc,0x01,0x1b,
+ 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xc4,0x01,0x28,0x00,0x03,0x00,0x00,
+ 0x00,0x01,0x00,0x02,0x00,0x00,0x01,0x31,0x00,0x02,0x00,0x00,0x00,0x0f,0x00,0x00,
+ 0x00,0xcc,0x01,0x32,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xdc,0x02,0x13,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x87,0x69,0x00,0x04,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x00,0xf0,0x88,0x25,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x03,0x20,0x00,0x00,0x03,0x26,0x73,0x61,0x6d,0x73,0x75,0x6e,0x67,0x00,0x53,0x4d,
+ 0x2d,0x47,0x39,0x36,0x35,0x55,0x31,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,
+ 0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x47,0x39,0x36,0x35,0x55,0x31,0x55,0x45,
+ 0x53,0x37,0x44,0x54,0x45,0x31,0x00,0x00,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a,
+ 0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x1f,0x82,0x9a,
+ 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x6a,0x82,0x9d,0x00,0x05,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x02,0x72,0x88,0x22,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x02,
+ 0x00,0x00,0x88,0x27,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0xfa,0x00,0x00,0x90,0x00,
+ 0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x32,0x32,0x30,0x90,0x03,0x00,0x02,0x00,0x00,
+ 0x00,0x14,0x00,0x00,0x02,0x7a,0x90,0x04,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00,
+ 0x02,0x8e,0x91,0x01,0x00,0x07,0x00,0x00,0x00,0x04,0x01,0x02,0x03,0x00,0x92,0x01,
+ 0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xa2,0x92,0x02,0x00,0x05,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x02,0xaa,0x92,0x03,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x02,0xb2,0x92,0x04,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xba,0x92,0x05,
+ 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xc2,0x92,0x07,0x00,0x03,0x00,0x00,
+ 0x00,0x01,0x00,0x02,0x00,0x00,0x92,0x09,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0x92,0x0a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xca,0x92,0x90,
+ 0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,0x02,0xd2,0x92,0x91,0x00,0x02,0x00,0x00,
+ 0x00,0x07,0x00,0x00,0x02,0xda,0x92,0x92,0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,
+ 0x02,0xe2,0xa0,0x00,0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0xa0,0x01,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa0,0x02,0x00,0x04,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x0f,0xc0,0xa0,0x03,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x0b,0xd0,0xa0,0x05,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x02,0xa2,0x17,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa3,0x01,0x00,0x01,0x00,0x00,
+ 0x00,0x01,0x01,0x00,0x00,0x00,0xa4,0x02,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0xa4,0x03,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x05,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x1a,0x00,0x00,0xa4,0x06,0x00,0x03,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x20,0x00,0x02,0x00,0x00,0x00,0x18,0x00,0x00,
+ 0x02,0xea,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3c,0x00,0x00,
+ 0x00,0xf0,0x00,0x00,0x00,0x64,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a,0x30,0x39,
+ 0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x32,0x30,0x32,0x30,0x3a,0x30,
+ 0x38,0x3a,0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x00,
+ 0x17,0x12,0x00,0x00,0x03,0xe8,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x64,0x00,0x00,
+ 0x00,0xa6,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,
+ 0x00,0x74,0x00,0x00,0x00,0x64,0x00,0x00,0x10,0xcc,0x00,0x00,0x03,0xe8,0x38,0x37,
+ 0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37,0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37,
+ 0x35,0x37,0x31,0x39,0x00,0x00,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56,
+ 0x4d,0x20,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31,0x56,0x41,0x00,0x00,0x02,
+ 0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x04,0x52,0x39,0x38,0x00,0x00,0x02,0x00,0x07,
+ 0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x09,0x01,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x40,
+ 0x01,0x01,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x03,
+ 0x00,0x00,0x00,0x01,0x00,0x06,0x00,0x00,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01,
+ 0x00,0x06,0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x98,
+ 0x01,0x1b,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0xa0,0x01,0x28,0x00,0x03,
+ 0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x02,0x01,0x00,0x04,0x00,0x00,0x00,0x01,
+ 0x00,0x00,0x03,0xa8,0x02,0x02,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x1a,0x78,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x48,
+ 0x00,0x00,0x00,0x01,0xff,0xd8,0xff,0xdb,0x00,0x84,0x00,0x17,0x10,0x11,0x14,0x11,
+ 0x0e,0x17,0x14,0x13,0x14,0x1a,0x18,0x17,0x1b,0x22,0x39,0x25,0x22,0x1f,0x1f,0x22,
+ 0x46,0x32,0x35,0x29,0x39,0x53,0x49,0x57,0x56,0x51,0x49,0x50,0x4f,0x5b,0x67,0x83,
+ 0x6f,0x5b,0x61,0x7c,0x63,0x4f,0x50,0x72,0x9c,0x74,0x7c,0x88,0x8c,0x93,0x95,0x93,
+ 0x59,0x6e,0xa1,0xad,0xa0,0x8f,0xab,0x83,0x90,0x93,0x8d,0x01,0x18,0x1a,0x1a,0x22,
+ 0x1e,0x22,0x43,0x25,0x25,0x43,0x8d,0x5e,0x50,0x5e,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0xff,0xc0,0x00,0x11,
+ 0x08,0x00,0xf0,0x01,0x40,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff,
+ 0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,
+ 0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01,
+ 0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,
+ 0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,
+ 0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,
+ 0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,
+ 0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,
+ 0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,
+ 0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,
+ 0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,
+ 0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,
+ 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,
+ 0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,
+ 0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02,
+ 0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,
+ 0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,
+ 0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,
+ 0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,
+ 0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,
+ 0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,
+ 0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,
+ 0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,
+ 0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,
+ 0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,
+ 0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,
+ 0x00,0xe4,0xe8,0xa0,0x0c,0xf4,0xa9,0xa3,0x87,0x72,0x96,0x3d,0xa8,0x02,0x20,0x09,
+ 0x35,0x32,0x42,0x4f,0xde,0x38,0xa7,0x46,0xb8,0xed,0x53,0xaa,0xd2,0x00,0x8e,0x35,
+ 0x5e,0x82,0xa6,0x51,0x48,0xab,0x52,0xaa,0xd0,0x00,0xa2,0xa3,0x9d,0x70,0x41,0x20,
+ 0x91,0x8e,0x82,0xac,0x2a,0xd2,0xc9,0x19,0x29,0xf2,0xfd,0xe1,0xc8,0xa1,0x3b,0x31,
+ 0x34,0x67,0x32,0x81,0x27,0x00,0x81,0x8e,0x86,0x96,0x9f,0x26,0xe2,0xe4,0xc9,0x9d,
+ 0xc7,0xae,0x69,0x95,0xd7,0x15,0x64,0x73,0xb7,0x76,0x32,0x53,0x85,0x3e,0xf5,0x00,
+ 0x5f,0x5a,0x7c,0xc4,0xee,0xc5,0x47,0x5c,0xf3,0x77,0x67,0x44,0x55,0x90,0xed,0xc0,
+ 0x74,0xa4,0x27,0x34,0x94,0x54,0x0c,0x28,0xa2,0x8a,0x00,0x2a,0x68,0x46,0xd1,0xb8,
+ 0xd4,0x20,0x64,0xe2,0xae,0x42,0x22,0xda,0x44,0x85,0x87,0xa6,0x06,0x6a,0x92,0x6f,
+ 0x61,0x37,0x61,0x73,0x91,0xc7,0x35,0x13,0xf5,0xdc,0xc3,0x1f,0xad,0x5a,0xf2,0xa3,
+ 0xc0,0x11,0xce,0xbc,0x76,0x3c,0x7f,0x3e,0x29,0xaf,0x6d,0x29,0x19,0x1c,0x81,0xdc,
+ 0x00,0x47,0xe9,0x51,0x66,0xb7,0x1d,0xd3,0x21,0x8c,0x82,0x38,0x39,0xc7,0xbe,0x6a,
+ 0xb4,0xed,0xba,0x53,0xe8,0x38,0xab,0x25,0x7c,0x88,0xd8,0x9e,0xbd,0x6a,0x90,0xe4,
+ 0xd3,0x40,0x4b,0x08,0xe6,0xad,0x2d,0x41,0x18,0xc0,0xa9,0x94,0xd0,0xc0,0x94,0x1a,
+ 0x5c,0xd3,0x01,0xa3,0x34,0x80,0x76,0x68,0xcd,0x37,0x34,0x99,0xa0,0x07,0xe6,0x93,
+ 0x34,0xdc,0xd2,0x66,0x80,0x1d,0x9a,0x4c,0xd2,0x66,0x93,0x34,0x00,0xec,0xd2,0x66,
+ 0x9b,0x9a,0x33,0x40,0xc5,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xec,0xd2,0x66,0x9b,
+ 0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xc5,0x50,0x3a,0x54,0xe3,
+ 0xe5,0xb7,0x3e,0xe6,0xa3,0x41,0x52,0xb8,0xc4,0x6a,0x29,0x88,0x48,0xd7,0x8a,0x99,
+ 0x45,0x35,0x05,0x4a,0xa2,0x81,0x8e,0x51,0x52,0xa8,0xa6,0xad,0x48,0xb4,0x80,0x7a,
+ 0x8a,0x76,0x29,0x05,0x2d,0x02,0x22,0x92,0x14,0x72,0x0b,0x0e,0x47,0x43,0x50,0x3c,
+ 0xa1,0x3e,0x59,0x6d,0x91,0xc0,0xee,0x38,0x3f,0xa5,0x5b,0x34,0xc2,0xa1,0xba,0x8c,
+ 0xd3,0x4d,0xa1,0x35,0x72,0x91,0x6b,0x57,0xed,0x2c,0x7f,0x5e,0x45,0x30,0xdb,0x46,
+ 0xfc,0xa4,0x88,0x7e,0xbc,0x55,0xa7,0x81,0x0f,0x6c,0x54,0x1e,0x57,0x96,0x18,0x2e,
+ 0x30,0xdd,0x73,0x4e,0xe1,0xa9,0x03,0x59,0xb8,0xe4,0x29,0x23,0xd5,0x79,0xa8,0x8c,
+ 0x24,0x77,0xfc,0xea,0x42,0x25,0x43,0x90,0xd9,0xa3,0xed,0x33,0x0e,0x1f,0xe6,0xfa,
+ 0xd0,0x17,0x64,0x25,0x18,0x76,0xa6,0xd4,0xfe,0x7a,0x1f,0xbd,0x1e,0x3e,0x94,0x6e,
+ 0x8d,0xba,0x31,0x1f,0x5a,0x02,0xe4,0x51,0x8f,0x9b,0x35,0x2e,0x68,0xda,0x07,0x42,
+ 0x0d,0x37,0x70,0x3d,0x0d,0x6b,0x0d,0x11,0x9c,0xb5,0x1d,0x9a,0x37,0x32,0xe0,0xf2,
+ 0x3d,0xe8,0x52,0x37,0x0c,0xf4,0xa5,0x76,0xf9,0x58,0x33,0x03,0x9e,0x94,0xe5,0x2b,
+ 0x3b,0x02,0x88,0xdb,0x89,0x9d,0xe3,0x08,0xce,0xcc,0x09,0xee,0x73,0x55,0xd4,0x64,
+ 0xd2,0xb9,0xc9,0xfa,0x52,0xa0,0xac,0xa4,0xf5,0x2d,0x6c,0x4c,0xb5,0x20,0xa8,0xd6,
+ 0x9d,0x50,0x50,0xfc,0xd1,0x9a,0x6d,0x2d,0x00,0x2e,0x68,0xcd,0x25,0x14,0x00,0x66,
+ 0x8c,0xd1,0x82,0x7a,0x0a,0x70,0x8d,0xcf,0x45,0x34,0x00,0xcc,0xd1,0x52,0x8b,0x79,
+ 0x0f,0x6a,0x78,0xb2,0x90,0xf6,0xfd,0x28,0x02,0xb5,0x15,0x75,0x74,0xf6,0x3d,0x73,
+ 0x52,0x2e,0x9e,0x3b,0x91,0x40,0x19,0xb4,0x60,0x9e,0x80,0xd6,0xb2,0xd9,0x46,0x3a,
+ 0xfe,0x94,0xf1,0x6f,0x1a,0xf6,0xfc,0x69,0x85,0xcc,0x81,0x1b,0x9f,0xe1,0x34,0xe1,
+ 0x03,0x9e,0xd5,0xad,0xe5,0xa0,0xfe,0x11,0x4a,0x00,0xec,0x00,0xa0,0x2e,0x65,0x0b,
+ 0x49,0x0f,0x6a,0x91,0x2c,0x58,0xf5,0xfe,0x75,0xa2,0x69,0xa7,0x27,0xa9,0x3f,0x4a,
+ 0x02,0xe6,0x30,0x38,0x35,0x2c,0x87,0xe6,0x0b,0xe8,0x2a,0x1c,0xa9,0x20,0xd2,0x97,
+ 0x05,0xc9,0xcf,0x5a,0x00,0xb0,0xb5,0x2a,0xd5,0x55,0x71,0xeb,0x52,0x2c,0x9e,0xf4,
+ 0x01,0x65,0x6a,0x45,0x35,0x59,0x64,0xa9,0x16,0x5a,0x40,0x59,0x06,0x97,0x35,0x5c,
+ 0x4a,0x29,0x7c,0xd1,0xeb,0x40,0x12,0x93,0x40,0xa8,0x7c,0xd0,0x6a,0x45,0x39,0x5a,
+ 0x00,0x47,0x3c,0x54,0x0d,0x52,0x48,0xd5,0x0b,0x1a,0x00,0x6b,0x54,0x4c,0x33,0x4f,
+ 0x26,0x9a,0x68,0x02,0x26,0x8c,0x1e,0xd4,0xcd,0x85,0x4e,0x54,0xd4,0xd4,0x6c,0x27,
+ 0xa0,0x26,0x98,0x15,0x4a,0xb0,0x39,0x14,0xd2,0x08,0xab,0xc2,0xda,0x46,0xe8,0x86,
+ 0xa4,0x5d,0x36,0x66,0xfe,0x1c,0x0a,0x00,0xcd,0x0c,0xc3,0xbd,0x1b,0xc9,0xad,0x65,
+ 0xd1,0xd8,0xfd,0xe6,0xa9,0x57,0x47,0x84,0x7d,0xe3,0x9f,0xc6,0x9d,0xc4,0x61,0xf7,
+ 0xa9,0x91,0x4e,0x38,0x15,0xba,0x9a,0x75,0xb2,0x7f,0x08,0xfa,0xe2,0xa6,0x5b,0x78,
+ 0x97,0x8d,0x9d,0x29,0x01,0x84,0xb1,0x39,0xe8,0xa6,0xa5,0x5b,0x59,0x5b,0xf8,0x6b,
+ 0x68,0x22,0x8e,0x40,0x1f,0x5c,0x53,0xbe,0x9d,0x7d,0xe8,0x03,0x21,0x6c,0x25,0x35,
+ 0x2a,0xe9,0xad,0xfc,0x47,0x15,0xa4,0x08,0x6e,0x0f,0x06,0x9b,0x9c,0x70,0x68,0x02,
+ 0xa2,0xe9,0xc8,0x3a,0x9a,0x91,0x6c,0xa2,0x1f,0x5a,0xb0,0x0f,0xaf,0xe6,0x28,0x34,
+ 0x01,0x18,0x82,0x31,0xfc,0x34,0xed,0x88,0x3f,0x84,0x52,0xe6,0x9a,0xc7,0x8e,0x28,
+ 0x10,0xa4,0xe3,0x8e,0x28,0x07,0xeb,0xf4,0xa8,0x3c,0xd0,0x4e,0x2a,0x45,0xe4,0x71,
+ 0x40,0xc7,0x73,0xcf,0xa7,0xa5,0x07,0xa6,0x7a,0x8f,0x5a,0x06,0x09,0xc6,0xfc,0x1f,
+ 0x7a,0x4c,0x95,0x3d,0x28,0x00,0x3e,0xa4,0x63,0xde,0x93,0xa0,0xe3,0xf5,0xa3,0x9e,
+ 0xdc,0x7b,0x50,0x06,0x3a,0x1e,0x68,0x00,0xce,0x3a,0x7c,0xa7,0xd0,0xd2,0x12,0x0f,
+ 0x4a,0x31,0xea,0x29,0x0f,0xb7,0x5a,0x00,0x4c,0x60,0xf3,0x4b,0xd4,0x62,0x8f,0xaf,
+ 0x22,0x93,0xe9,0x92,0x28,0x03,0x9f,0x2d,0x4d,0xcd,0x3c,0xc6,0x47,0x26,0x90,0x29,
+ 0x3d,0xa9,0x8c,0x4c,0xd3,0x83,0x53,0x4f,0x06,0x81,0x40,0x8b,0x2b,0x9c,0x53,0xb2,
+ 0x6a,0x21,0x27,0xb5,0x28,0x93,0x27,0x81,0x48,0x09,0x77,0x1f,0x5a,0x4d,0xc6,0xaf,
+ 0x43,0xa6,0x3b,0xa0,0x67,0x60,0xb9,0xe7,0x15,0x3a,0x69,0x90,0x8f,0xbc,0xc4,0xd0,
+ 0x06,0x6c,0x44,0x96,0xab,0xa0,0xe1,0x6a,0xe2,0x5a,0x40,0x9d,0x13,0xf3,0xa9,0x02,
+ 0x22,0xf0,0x11,0x47,0xe1,0x40,0x19,0x66,0x37,0x73,0xf2,0xa9,0xa5,0x5b,0x19,0x9f,
+ 0xb6,0x2b,0x57,0x24,0x0c,0x8f,0xca,0x94,0x1d,0xe3,0x23,0xa8,0xed,0x45,0x87,0x73,
+ 0x35,0x74,0xc6,0xfe,0x26,0x02,0xa4,0x5d,0x3a,0x25,0xfb,0xc4,0x9a,0xba,0x47,0xff,
+ 0x00,0xaa,0x90,0x9c,0x0e,0x7f,0x03,0x40,0x88,0x16,0xd6,0x05,0xe8,0x99,0xa9,0x04,
+ 0x48,0xbd,0x10,0x52,0x6f,0xf9,0xb0,0x3f,0x2a,0x90,0x7f,0x9f,0x6a,0x00,0x40,0x00,
+ 0xe4,0x74,0xf6,0xe2,0x8e,0x73,0xd6,0x97,0x1d,0xe8,0xc6,0x69,0x80,0xd2,0x71,0x48,
+ 0x0e,0x6a,0xb5,0xc5,0xca,0x47,0x2e,0xc0,0xe3,0x77,0x71,0x9a,0x9e,0x16,0x0c,0x01,
+ 0xe7,0x9e,0x86,0x90,0x0f,0xc7,0x6a,0x5f,0xf2,0x29,0x70,0x7d,0x31,0xf5,0xa3,0x1e,
+ 0xf4,0xc0,0x6e,0x3f,0x0a,0x0f,0xbd,0x2f,0x43,0xc8,0xfc,0x69,0x0e,0x00,0xc9,0x3f,
+ 0x8d,0x00,0x43,0x70,0xe1,0x13,0x73,0x1c,0x7b,0xd4,0x31,0x4f,0xe6,0x1f,0x5a,0xcd,
+ 0xd5,0x99,0xde,0xeb,0x68,0x3b,0x95,0x47,0x18,0xa9,0x74,0x72,0xde,0x63,0x2e,0x38,
+ 0x1c,0xd2,0x03,0x5d,0x41,0xc7,0x50,0x05,0x38,0x0f,0x6f,0xc2,0x98,0x5b,0x61,0xce,
+ 0xc0,0x45,0x28,0x64,0x3d,0x10,0x50,0x02,0x90,0x3b,0x11,0x54,0x35,0x1b,0xcf,0xb3,
+ 0xc5,0x84,0x1f,0x31,0x38,0x19,0xed,0x57,0xb7,0xec,0x3b,0x5a,0x35,0xc7,0xa8,0xaa,
+ 0x57,0xd6,0x8b,0x70,0x41,0x24,0xa1,0x1c,0x02,0x46,0x41,0xfa,0xd3,0x03,0x36,0xd2,
+ 0xe1,0xe4,0xb8,0x0a,0xe7,0x3b,0xab,0x6d,0x71,0xc0,0x3f,0x9d,0x67,0x5a,0xe9,0xc6,
+ 0x29,0x83,0xb9,0x0d,0x83,0xc0,0x4e,0x95,0xa5,0x8e,0x06,0x40,0x3c,0x74,0xa0,0x00,
+ 0xaf,0xa8,0xa0,0x64,0x0c,0x67,0x23,0xde,0x80,0x48,0x1e,0xab,0xef,0x4a,0x46,0x79,
+ 0x1c,0x8f,0xe5,0x48,0x04,0xa4,0x34,0xa7,0x81,0xde,0x93,0xaf,0x7a,0x00,0x4e,0xbd,
+ 0xe8,0xa5,0xc5,0x21,0xa0,0x02,0x93,0xa7,0x3c,0xfd,0x45,0x2f,0xf9,0xff,0x00,0x3e,
+ 0xb4,0x87,0x9a,0x00,0xc3,0x77,0x14,0xdd,0xf8,0x07,0x15,0x16,0xe3,0x49,0x92,0x69,
+ 0x8c,0x52,0x79,0xa2,0x95,0x63,0x77,0xce,0xd5,0x24,0x0e,0xb4,0xe1,0x18,0xc7,0x27,
+ 0x14,0x00,0x8b,0x92,0x70,0x2a,0x78,0x53,0x32,0xa2,0xf5,0x24,0x81,0x4d,0x1c,0x0c,
+ 0x0f,0xce,0xac,0x59,0x2e,0x6f,0x21,0x1f,0xed,0x8a,0x40,0x74,0x2c,0xbc,0x9a,0x4c,
+ 0x7e,0x74,0xa4,0xf3,0x49,0x9a,0x04,0x28,0xc6,0x3d,0xbf,0x95,0x27,0x5f,0xf0,0xa4,
+ 0xef,0xef,0xfc,0xe9,0x0f,0x34,0x00,0xbc,0x8e,0x47,0x4f,0x4a,0x69,0x1c,0xe4,0x64,
+ 0x1f,0x5a,0x5c,0xff,0x00,0x9f,0x5a,0x3a,0x8c,0x8a,0x00,0x50,0x77,0x7a,0x06,0xf4,
+ 0xaa,0x9a,0x85,0xe0,0xb3,0x8b,0x3b,0x77,0x33,0x1c,0x00,0x6a,0xc9,0xe4,0x8a,0xa7,
+ 0xa9,0x5a,0x9b,0x98,0xc6,0xde,0x59,0x4e,0x70,0x69,0x81,0x52,0xc2,0xed,0xae,0x2e,
+ 0x36,0x9e,0x0f,0x5a,0xd9,0x5f,0xbb,0xc6,0x3f,0x3a,0xcd,0xd3,0x2c,0x0d,0xbb,0xb4,
+ 0x92,0xe3,0x71,0x18,0x00,0x76,0x15,0xa1,0x81,0xd8,0xd0,0x03,0x87,0x1e,0x98,0xa8,
+ 0xee,0x49,0x11,0x31,0x8c,0xf3,0x8e,0xd4,0xe0,0x40,0xe3,0x6f,0x3e,0xf4,0xbb,0xc9,
+ 0x04,0x64,0x8f,0x61,0xc5,0x00,0x72,0x9b,0x1f,0x7f,0xab,0x13,0xeb,0xc9,0x35,0xd2,
+ 0xc2,0x36,0x40,0x81,0xfa,0x80,0x01,0x23,0xd6,0x9f,0xe4,0x44,0xcf,0xbb,0x0b,0xbf,
+ 0xd7,0x60,0xcf,0xe7,0x4e,0x23,0x03,0x03,0x8c,0x50,0x03,0x4a,0x81,0xd4,0xb6,0x3d,
+ 0x45,0x18,0x00,0xe0,0xee,0xfc,0x4d,0x03,0x23,0xfc,0x29,0x78,0xc7,0x1c,0xaf,0xa7,
+ 0xa5,0x20,0x10,0x8c,0x75,0x1f,0x91,0xa4,0xe0,0x73,0xc7,0xd7,0x14,0xec,0x52,0x63,
+ 0xd3,0xf2,0xf5,0xa6,0x05,0x79,0x6d,0x23,0x9c,0x8f,0x35,0x50,0x91,0xd3,0xb7,0x1f,
+ 0x51,0x52,0x45,0x02,0xc0,0x81,0x10,0x2a,0x01,0xc8,0x51,0xc8,0x34,0xfe,0xdc,0x74,
+ 0xf4,0x3d,0xa8,0xe8,0x3a,0x64,0x50,0x01,0x9c,0xf6,0xc1,0xa6,0x91,0xea,0x3f,0x11,
+ 0x4f,0xed,0x91,0xcd,0x20,0xa0,0x04,0x04,0xff,0x00,0xbc,0x3f,0x5a,0x00,0xc0,0xca,
+ 0xf2,0x3b,0xad,0x29,0x5f,0x4f,0xd2,0x93,0x9e,0xe0,0x9f,0x71,0xd6,0x90,0x0b,0x9d,
+ 0xc3,0x20,0xe7,0xf9,0x8a,0x6e,0x73,0xf5,0xfe,0x74,0xa5,0x4e,0x72,0x3a,0xfa,0xd1,
+ 0xd7,0x20,0xf0,0xde,0x9e,0xb4,0x00,0x9c,0x73,0xeb,0xde,0x9b,0x8c,0x72,0xbc,0x53,
+ 0x8f,0xbf,0x6a,0x4f,0xf3,0xfe,0x7d,0x28,0x00,0x52,0x09,0xc7,0x46,0xf4,0xa0,0x8c,
+ 0x7e,0x14,0x84,0x03,0xfe,0x71,0x8f,0xf0,0xa0,0x31,0x1c,0x37,0x20,0x77,0xee,0x28,
+ 0x00,0xa4,0x34,0xe2,0x3b,0x8e,0x9f,0xe7,0xf2,0xa6,0xff,0x00,0x4f,0xf3,0xf8,0x50,
+ 0x00,0x69,0x3f,0xad,0x2d,0x21,0x00,0xf0,0x7f,0x2a,0x00,0xc2,0x74,0xd8,0xd8,0xc7,
+ 0xe9,0x4d,0x15,0x79,0xa2,0x57,0x1b,0x76,0xfd,0x08,0xaa,0xf3,0x40,0xd0,0xb0,0x0c,
+ 0x31,0x9a,0x0b,0x68,0x8c,0x12,0x07,0x14,0xaa,0x41,0xeb,0x40,0x14,0xa0,0x0a,0x09,
+ 0x0c,0xf3,0xc5,0x5b,0xd3,0x06,0xeb,0xf8,0xbd,0x89,0x3f,0xa5,0x55,0x15,0x77,0x48,
+ 0x5c,0xde,0x83,0xe8,0xa4,0xd0,0x06,0xcb,0x52,0x70,0x7f,0x1a,0x53,0x49,0xef,0xd8,
+ 0xd0,0x20,0x34,0x75,0xfa,0xd1,0x49,0xd6,0x80,0x0c,0x51,0xdf,0xfc,0xf3,0x40,0x39,
+ 0xe0,0xf5,0xa3,0x93,0xf2,0x9e,0xbd,0x8f,0xad,0x00,0x06,0x80,0x48,0xe9,0x47,0xb1,
+ 0xeb,0x46,0xd6,0x3d,0x06,0x7e,0x94,0x00,0xbd,0xbd,0xe9,0xa7,0xae,0x45,0x4a,0xb1,
+ 0x39,0xf4,0x1f,0x8d,0x3c,0x5b,0xb1,0xff,0x00,0xf5,0x1a,0x60,0x57,0xeb,0xdb,0xea,
+ 0x29,0x4a,0xd5,0x91,0x6a,0xde,0x8d,0xf9,0x52,0xfd,0x9d,0x47,0x52,0x3f,0x16,0x14,
+ 0x01,0x50,0xaf,0xff,0x00,0x58,0xd2,0x83,0xeb,0xd6,0xad,0x08,0xa3,0x1f,0xc4,0xbf,
+ 0x9e,0x69,0xac,0xd6,0xa9,0xf7,0xa5,0x41,0xfa,0x7f,0x3a,0x00,0xaf,0x8a,0x36,0x1c,
+ 0xe4,0x53,0xda,0xfa,0xc5,0x3a,0xcc,0x0f,0xd3,0x15,0x13,0xeb,0x36,0x29,0xd0,0xb3,
+ 0x7e,0x26,0x80,0x1f,0xe5,0xb7,0xf7,0x4f,0xd2,0x97,0xc9,0x3e,0xd5,0x51,0xfc,0x41,
+ 0x6c,0x3e,0xe4,0x39,0xfa,0x8a,0x85,0xfc,0x48,0xdf,0xf2,0xce,0x10,0xb4,0x01,0xa4,
+ 0x20,0x27,0xff,0x00,0xac,0x29,0xe2,0xd9,0x8f,0x66,0xfc,0xab,0x09,0xfc,0x43,0x74,
+ 0xdd,0x36,0xaf,0xd0,0x54,0x0f,0xac,0x5e,0xbf,0x59,0x4f,0xe5,0x40,0x1d,0x2f,0xd9,
+ 0x71,0xd4,0x63,0xea,0x68,0x30,0xa2,0xf2,0xce,0x83,0xea,0x6b,0x93,0x6b,0xdb,0xa7,
+ 0xeb,0x2b,0xff,0x00,0xdf,0x46,0xa2,0x69,0x24,0x27,0x25,0xbf,0x5a,0x2c,0x07,0x5c,
+ 0x65,0xb4,0x4f,0xbd,0x73,0x18,0xf6,0x15,0x13,0x6a,0x1a,0x7a,0x75,0x99,0x8f,0xd1,
+ 0x6b,0x94,0x3b,0x8f,0x7a,0x4e,0x7d,0x69,0xd8,0x0e,0x9d,0xb5,0x9b,0x15,0x38,0x0b,
+ 0x2b,0x7d,0x0f,0xff,0x00,0x5e,0xa5,0x9b,0x6c,0xaa,0x92,0x21,0x38,0x61,0x95,0xfa,
+ 0x1a,0xe4,0xeb,0xa6,0xb4,0x60,0xfa,0x6c,0x04,0xe3,0x84,0x03,0x9f,0x6e,0x29,0x00,
+ 0xe0,0xdd,0x03,0x75,0xec,0x68,0x23,0x14,0x1e,0x9e,0xab,0x49,0x9c,0x7b,0x8f,0xf3,
+ 0xd6,0x90,0x09,0xfe,0x7f,0xcf,0xf8,0x52,0x1f,0xf3,0xfe,0x7f,0xa5,0x38,0x8f,0x4f,
+ 0xf3,0xfe,0x34,0x9d,0x7f,0x1a,0x00,0x68,0xca,0xf2,0xbf,0x95,0x28,0x21,0xba,0x70,
+ 0x47,0x6a,0x29,0xa4,0x67,0xfa,0x63,0xfc,0xfe,0x94,0x00,0xa7,0x8f,0xf3,0x8f,0xff,
+ 0x00,0x55,0x21,0x19,0x1f,0xe7,0xfc,0x8a,0x04,0x9d,0x03,0xfd,0x03,0x0a,0x71,0x18,
+ 0xc7,0xe8,0x45,0x00,0x50,0x69,0x41,0x18,0x55,0x0b,0x50,0xcc,0x73,0xb7,0x3c,0xd4,
+ 0xa1,0x41,0x15,0x0c,0xc9,0xf3,0x50,0x8d,0xa5,0xb0,0xcc,0x52,0x62,0x8c,0x95,0xa7,
+ 0x2b,0x03,0x4c,0xc8,0x69,0xab,0xfa,0x30,0xff,0x00,0x49,0x73,0xe8,0x87,0xf9,0x8a,
+ 0xa4,0xc2,0xb4,0x34,0x65,0xc3,0x4c,0x7f,0xd9,0x02,0x80,0x34,0x8d,0x20,0xeb,0xc7,
+ 0x5f,0xe7,0x4a,0x69,0x0f,0x23,0xe9,0x48,0x41,0xd3,0xe9,0xdc,0x7a,0x50,0x48,0xfc,
+ 0xfb,0xd0,0x0e,0x7a,0x7d,0xee,0xfe,0xf4,0x9d,0xb8,0xe9,0xfc,0xa8,0x00,0xc0,0xe9,
+ 0xfe,0x45,0x1d,0x78,0x34,0x99,0xc7,0x04,0xfd,0x0f,0xa5,0x2f,0xd7,0x83,0x40,0x0b,
+ 0x9e,0xcd,0xf8,0x1f,0x5a,0x64,0xae,0xd1,0xae,0xe1,0xd4,0x7b,0x53,0xb1,0xeb,0xd2,
+ 0xa2,0xb9,0xff,0x00,0x55,0xfd,0x68,0x02,0x84,0x9a,0xed,0xdc,0x6d,0x80,0xc3,0xf2,
+ 0xa8,0x9b,0x5e,0xbc,0x6f,0xe2,0xac,0xf9,0x8e,0xe6,0x53,0xed,0x49,0x4c,0x0b,0xaf,
+ 0xac,0x5e,0x3f,0xf1,0x81,0xf4,0x51,0x51,0x36,0xa1,0x76,0xdf,0xf2,0xd9,0xc7,0xd1,
+ 0xb1,0x55,0xe8,0xa6,0x03,0x9a,0x69,0x9f,0xef,0x48,0xc7,0xea,0x69,0xb9,0x63,0xd5,
+ 0x8d,0x2d,0x2e,0x29,0xd8,0x06,0x6d,0xf7,0xa3,0x6d,0x3f,0x14,0x62,0x9d,0x80,0x66,
+ 0xd1,0x4b,0x8a,0x76,0xda,0x36,0x9f,0x4a,0x2c,0x03,0x71,0x45,0x4a,0xb6,0xf3,0x3f,
+ 0xdc,0x89,0xdb,0xe8,0xa4,0xd3,0x24,0x8d,0xa3,0x72,0x8e,0xa5,0x58,0x75,0x04,0x60,
+ 0x8a,0x00,0x65,0x14,0xb4,0x94,0x08,0x29,0x29,0x69,0x28,0x01,0xa6,0xba,0x3d,0x2d,
+ 0xb3,0xa6,0x47,0xea,0x09,0x1f,0xad,0x73,0xad,0x5b,0xfa,0x2b,0x6e,0xd3,0xd8,0x7a,
+ 0x39,0xfe,0x42,0xa5,0x8c,0xb3,0xdf,0x8c,0x83,0xdc,0x51,0x9f,0x4e,0x94,0x11,0x9f,
+ 0xf1,0x14,0x67,0xd4,0xf3,0xeb,0x52,0x02,0x63,0x00,0xfa,0x7a,0x50,0x46,0x79,0x1f,
+ 0xe7,0xfc,0xfa,0xd2,0xe0,0xf5,0xa4,0xe9,0xfe,0x71,0xff,0x00,0xea,0xa0,0x06,0x9f,
+ 0xf3,0xfe,0x7b,0xd2,0x1f,0xf3,0xfe,0x7b,0xd3,0xb8,0x3c,0x74,0xfd,0x3f,0xfd,0x54,
+ 0x84,0x11,0xfe,0x7f,0xce,0x28,0x01,0xa4,0x7a,0xf7,0xfc,0x7f,0xfd,0x74,0x83,0x29,
+ 0xd3,0x95,0x3d,0xa9,0x79,0x5f,0x71,0xe8,0x7b,0x51,0xdb,0x8e,0x47,0x70,0x68,0x02,
+ 0x90,0x5e,0x7a,0xd4,0x6e,0x39,0xeb,0x52,0x6e,0xc0,0xf7,0xa8,0xf9,0x26,0x9a,0x35,
+ 0x90,0xdd,0xa0,0xd3,0x1e,0x32,0x3a,0x54,0xb8,0xa5,0xc5,0x33,0x32,0xb8,0x6c,0x75,
+ 0xad,0x6d,0x23,0xee,0x4c,0x7e,0x83,0xf9,0xd6,0x73,0x46,0x0d,0x69,0xe9,0x08,0x56,
+ 0xda,0x4f,0x77,0xfe,0x94,0x98,0x8b,0x86,0x90,0xe4,0x1e,0x94,0xa7,0xff,0x00,0xd6,
+ 0x29,0x3b,0x71,0xfa,0xd2,0x01,0x3a,0xf2,0xbd,0x68,0x1c,0xf3,0xdf,0xb8,0xa3,0x83,
+ 0xce,0x71,0x48,0x7a,0xe4,0x70,0x47,0x51,0x40,0x0b,0xc1,0x19,0xed,0x40,0xf4,0x34,
+ 0x03,0x9f,0x99,0x7a,0xf7,0x14,0xa3,0x91,0x91,0xf9,0x50,0x02,0x63,0x15,0x0d,0xd7,
+ 0xfa,0xa3,0x56,0x2a,0xbd,0xdf,0xfa,0xa3,0x40,0x1c,0xdc,0x83,0x05,0x7e,0x9f,0xd6,
+ 0x96,0x89,0xbe,0xfa,0x7f,0xba,0x28,0xaa,0x00,0xa2,0x8a,0x5a,0x60,0x15,0xd1,0xe8,
+ 0x7a,0x15,0xb6,0xa1,0x65,0xe7,0xcc,0xf2,0x86,0xdc,0x57,0x0a,0x40,0x1f,0xca,0xb9,
+ 0xd1,0x5d,0xaf,0x85,0x3f,0xe4,0x12,0x7f,0xeb,0xa9,0xfe,0x42,0x98,0x02,0xf8,0x7f,
+ 0x4a,0x4c,0xe5,0x59,0xf1,0xd7,0xe7,0xff,0x00,0x0a,0x7f,0xf6,0x6e,0x95,0x0e,0x3f,
+ 0xd1,0x13,0xfe,0x04,0xc7,0xfa,0x9a,0x86,0xf5,0xe0,0x5b,0xf9,0x0c,0xe8,0xc5,0x7f,
+ 0xba,0x3b,0xfe,0xb4,0xd7,0xbc,0xb3,0xdc,0x36,0xda,0x97,0x03,0xa1,0x69,0x38,0xed,
+ 0xfe,0x15,0x56,0x15,0xd1,0x75,0x60,0xb1,0x8c,0x02,0xb6,0x76,0xe0,0x1e,0x87,0x68,
+ 0xa1,0xef,0x60,0x83,0x0a,0xa9,0x1a,0x93,0xd3,0x67,0xff,0x00,0x5a,0xa9,0xfd,0xb2,
+ 0xdf,0xaa,0xda,0x40,0x31,0xcf,0x20,0x9f,0xe4,0xb5,0x1c,0xd7,0xb1,0x60,0x79,0x16,
+ 0xab,0xe6,0x64,0xb1,0x65,0x53,0xc1,0xc1,0xc7,0xa5,0x3e,0x51,0x29,0xa3,0x62,0xca,
+ 0x65,0xbb,0x81,0x67,0x08,0x54,0x37,0x4c,0xf7,0xae,0x33,0xc4,0x89,0xb7,0x5b,0xb8,
+ 0xf7,0xc1,0xfd,0x05,0x76,0x1a,0x3a,0xba,0xe9,0xd1,0xab,0xf5,0x1e,0xd5,0xca,0xf8,
+ 0xa9,0x71,0xac,0x31,0xf5,0x45,0x3f,0xa5,0x67,0xd4,0xbb,0xdd,0x18,0x94,0x94,0xa6,
+ 0x8a,0x64,0x89,0x45,0x14,0x50,0x03,0x5b,0xa5,0x6d,0xe8,0x27,0x36,0xf3,0x2f,0xa1,
+ 0x07,0xf4,0xff,0x00,0xeb,0x56,0x2b,0x74,0xad,0x6f,0x0f,0xb7,0xcd,0x3a,0xfa,0x80,
+ 0x7f,0x9f,0xf8,0xd4,0xb1,0x9a,0x4d,0x9c,0xf7,0xcd,0x27,0xeb,0x4a,0x71,0xd0,0x51,
+ 0xc5,0x48,0x00,0x19,0xe4,0x7e,0x54,0xdf,0xf3,0xfe,0x7f,0xc2,0x82,0x49,0xe9,0x41,
+ 0xe7,0xaf,0x5e,0xf4,0x00,0x87,0x9f,0xe9,0x8f,0xf3,0xfa,0x52,0x06,0x20,0xff,0x00,
+ 0x9f,0xf3,0xf8,0x52,0x9e,0x7a,0xff,0x00,0x9f,0xf1,0xa4,0x3e,0xff,0x00,0xe3,0xff,
+ 0x00,0xeb,0xa0,0x03,0x83,0xca,0xfe,0x5f,0xe1,0x4c,0x23,0x1c,0x83,0x83,0xfe,0x7f,
+ 0x2a,0x71,0xe3,0x9f,0xf3,0xff,0x00,0xd7,0xa3,0x83,0xfe,0x7f,0xce,0x68,0x02,0x93,
+ 0x2e,0xe2,0x70,0x2a,0x3a,0x99,0xf0,0xa3,0x03,0xbd,0x31,0x57,0x34,0xd1,0xac,0xf7,
+ 0x1a,0x05,0x18,0xe6,0xa4,0x0b,0x49,0x8a,0x66,0x63,0x42,0xd6,0xa5,0x80,0xc5,0xa7,
+ 0x5c,0x12,0xc6,0xb3,0xb1,0x5a,0x76,0xa3,0x16,0x69,0xc7,0x52,0x7f,0x9d,0x26,0x22,
+ 0x4c,0xf7,0xfc,0x08,0xa3,0x19,0xfa,0xd1,0x8f,0xc7,0xd3,0xdc,0x52,0x73,0xd4,0x75,
+ 0x1f,0xad,0x20,0x02,0x4e,0x79,0x1c,0x8e,0xbe,0xe2,0x90,0x73,0xdf,0x91,0xd2,0x94,
+ 0xf3,0xfd,0x0d,0x21,0x19,0xf6,0x34,0x00,0x9c,0x83,0x91,0xc1,0x1d,0x45,0x3b,0xaf,
+ 0x23,0xaf,0x71,0x48,0x3e,0x6f,0xad,0x1d,0x39,0x14,0x00,0xee,0xa2,0xab,0xdd,0xff,
+ 0x00,0xaa,0x35,0x3d,0x57,0xbd,0x3f,0xba,0x3f,0x4a,0x00,0xe7,0x65,0xfb,0xeb,0xfe,
+ 0xea,0xff,0x00,0x2a,0x5a,0x49,0x7f,0xd6,0x8f,0xa0,0xfe,0x54,0xb4,0xc6,0x14,0x51,
+ 0x45,0x31,0x0a,0x2b,0xb4,0xf0,0x9f,0xfc,0x82,0x9f,0xfe,0xba,0x9f,0xe4,0x2b,0x8c,
+ 0x15,0xd9,0x78,0x4b,0xfe,0x41,0x72,0x7f,0xd7,0x53,0xfc,0x85,0x37,0xb0,0x0f,0xd4,
+ 0x24,0x56,0xb8,0x97,0x04,0x12,0xa3,0xf5,0xaa,0x3b,0x9d,0x42,0xb9,0x72,0x09,0xce,
+ 0x07,0xe3,0x8f,0xe9,0x56,0xae,0xd1,0xe3,0xb9,0x96,0x4c,0x15,0x3b,0x89,0xf4,0xc8,
+ 0xaa,0xe5,0x5a,0x79,0xf0,0xb9,0x66,0x6e,0xe7,0x8c,0xd5,0xbd,0x11,0xc1,0x55,0xea,
+ 0xfb,0x8b,0x3c,0xdb,0x94,0x2a,0xb1,0xe9,0xcf,0x02,0xb3,0x5a,0x66,0x59,0xb8,0x6c,
+ 0xe3,0xd6,0xb4,0x9a,0xd2,0x40,0x8c,0xd9,0x52,0x17,0xae,0x18,0x1a,0xac,0x65,0xb6,
+ 0x8c,0x8c,0x88,0xcb,0xf5,0x39,0x5c,0xd2,0x4f,0x52,0x29,0xb6,0xa5,0xef,0x23,0xa0,
+ 0xd2,0x5c,0xbe,0x9f,0x1b,0x1e,0xf9,0xae,0x6b,0xc5,0xeb,0x8d,0x4d,0x0f,0xac,0x43,
+ 0xf9,0x9a,0xe9,0x74,0x96,0x0d,0x62,0xa5,0x71,0x8c,0x9c,0x62,0xb9,0xff,0x00,0x18,
+ 0xaf,0xfa,0x5c,0x0d,0xeb,0x19,0x1f,0xad,0x4f,0x53,0xbe,0x9f,0xc0,0x8e,0x6c,0xd2,
+ 0x52,0x9a,0x4a,0x65,0x09,0x45,0x2d,0x25,0x00,0x21,0xe9,0x5a,0x3a,0x01,0xff,0x00,
+ 0x4b,0x71,0xea,0x87,0xf9,0x8a,0xce,0x3d,0x2a,0xee,0x88,0xd8,0xd4,0x14,0x7a,0xa9,
+ 0x1f,0xa5,0x26,0x33,0x71,0xf3,0x9f,0xe4,0x4d,0x37,0x9f,0x41,0xfe,0x34,0xf7,0xc0,
+ 0x63,0xd2,0x99,0x8c,0xf4,0xfc,0xaa,0x00,0x5c,0x86,0xf6,0x3e,0x94,0xdf,0xf3,0xe9,
+ 0xff,0x00,0xea,0xa0,0x8c,0xe3,0xfa,0x7f,0x9f,0xd2,0x8f,0xf3,0xfe,0x7f,0xc2,0x80,
+ 0x03,0xfe,0x7b,0x7f,0xfa,0xa9,0xbf,0xe7,0xd3,0xff,0x00,0xd5,0x4b,0xfe,0x7f,0xcf,
+ 0xad,0x14,0x00,0xd3,0xfe,0x7f,0xcf,0x6a,0x43,0x4e,0xff,0x00,0x23,0xfc,0xff,0x00,
+ 0x4a,0x4f,0xa7,0xe1,0x8f,0xf3,0xfa,0x50,0x05,0x32,0x39,0xa5,0x15,0x69,0x2d,0xd5,
+ 0xc1,0x27,0x23,0x9e,0x31,0x41,0xb4,0xf4,0x6f,0xcc,0x53,0x34,0x96,0xe5,0x62,0x0d,
+ 0x26,0x39,0xab,0x0d,0x6c,0xe3,0xa6,0x0f,0xe3,0x51,0x18,0x9c,0x75,0x53,0x41,0x0c,
+ 0x65,0x6a,0x5b,0xf1,0x6b,0x10,0xf6,0xfe,0xb5,0x96,0x6b,0x56,0x2e,0x2d,0xa2,0xff,
+ 0x00,0x74,0x50,0xc4,0x03,0xe5,0x38,0x61,0xf2,0x9e,0x94,0xac,0x0a,0x9f,0xf3,0xcd,
+ 0x19,0x19,0xd9,0x27,0x43,0xd0,0xd0,0xa4,0xa9,0xf2,0xdc,0xff,0x00,0xba,0x69,0x00,
+ 0x9f,0xc8,0xf5,0xa4,0xfe,0x7f,0xce,0x94,0x82,0xa4,0x9c,0x7d,0x45,0x04,0x64,0x64,
+ 0x1a,0x00,0x43,0xc8,0xc8,0xa5,0x07,0x3f,0x5a,0x40,0x7b,0xf7,0xee,0x29,0x71,0xdc,
+ 0x50,0x02,0xd5,0x4b,0xf3,0xfb,0x86,0xfa,0x7a,0xd5,0xac,0x7f,0x9f,0x5a,0xa9,0xa8,
+ 0xf1,0x6e,0xff,0x00,0x4a,0x00,0xc0,0x9b,0xfd,0x77,0xe0,0x3f,0x95,0x2d,0x24,0xdf,
+ 0xeb,0xcd,0x2d,0x31,0x85,0x14,0x51,0x4c,0x43,0x85,0x76,0x3e,0x12,0xff,0x00,0x90,
+ 0x6c,0xbf,0xf5,0xd4,0xff,0x00,0x21,0x5c,0x70,0xae,0xc3,0xc2,0x3f,0xf1,0xe1,0x37,
+ 0xfd,0x74,0xfe,0x82,0x9f,0x40,0x24,0xd5,0x03,0x35,0xd1,0x22,0x40,0x9c,0x85,0xea,
+ 0x33,0xfa,0xd3,0x0d,0xa2,0x88,0xb9,0x90,0x99,0x43,0x05,0xcf,0xb1,0xef,0x8a,0xd2,
+ 0xbc,0x86,0x2b,0x86,0x55,0x62,0x81,0x93,0x9c,0xb5,0x66,0xc8,0x5d,0xa6,0x0e,0xdb,
+ 0x43,0x28,0x1c,0x8e,0x71,0x55,0xba,0xb1,0xcd,0x55,0x42,0x1e,0xf3,0x43,0x1e,0xd0,
+ 0x41,0x6b,0x21,0x3c,0x31,0x7e,0x3e,0x94,0xdb,0x38,0x99,0xa2,0x53,0xb4,0x91,0x93,
+ 0x9e,0x3d,0xea,0x5b,0x89,0xde,0x48,0xf6,0x99,0x03,0x03,0xd7,0xe5,0x22,0xab,0x7c,
+ 0xc7,0x6a,0xee,0xe3,0xea,0x70,0x2a,0x69,0xc5,0xc0,0xc6,0x75,0xe3,0xcf,0x74,0x6d,
+ 0x69,0x99,0x10,0xc8,0xb8,0xc6,0x24,0x35,0x87,0xe3,0x24,0xf9,0xad,0x5f,0xd9,0x87,
+ 0xf2,0xad,0xad,0x2d,0x3c,0x8b,0x62,0x19,0x89,0xdc,0xe4,0xfd,0xdc,0x62,0xb2,0x7c,
+ 0x61,0xb5,0xad,0x6d,0xd8,0x10,0x70,0xc4,0x7e,0x94,0x75,0x3b,0x60,0x9f,0x2e,0xa7,
+ 0x24,0x69,0x29,0x4d,0x25,0x31,0x85,0x25,0x14,0x50,0x01,0x56,0x34,0x96,0xdb,0xa9,
+ 0x45,0xf5,0x23,0xf4,0xaa,0xf5,0x25,0x8b,0x6d,0xbf,0x84,0xff,0x00,0xd3,0x41,0xfc,
+ 0xe9,0x31,0x9d,0x34,0x84,0x67,0x9c,0xe2,0xa3,0x20,0x83,0xea,0x3d,0x6a,0x59,0x07,
+ 0x35,0x1f,0xb7,0x4a,0x80,0x17,0xaf,0x5e,0xfd,0xfb,0x1a,0x69,0xef,0x9f,0xc7,0x3f,
+ 0xe7,0xf5,0xa3,0x07,0xa0,0xfc,0x47,0xad,0x1e,0x9c,0xe7,0xd3,0xfc,0xff,0x00,0x4a,
+ 0x00,0x69,0xef,0x9f,0xd7,0xfc,0xfe,0xb4,0x87,0xdf,0xf5,0xff,0x00,0x3f,0xad,0x3b,
+ 0xe9,0xfa,0x7f,0x4f,0xf0,0xa4,0xf4,0xfe,0x9f,0xe7,0xf4,0xa0,0x04,0xf5,0xcf,0xe3,
+ 0x9f,0xeb,0xfe,0x34,0x87,0xbf,0xeb,0x9f,0xeb,0xfe,0x34,0xbf,0xe4,0x63,0xfa,0x7f,
+ 0x85,0x27,0xa7,0xe9,0x8f,0xe9,0xfe,0x14,0x01,0x24,0x6c,0x3a,0x73,0x9a,0x92,0xa0,
+ 0x40,0x7d,0x31,0x53,0x03,0x48,0xd2,0x5b,0x8b,0x49,0x4b,0x9a,0x43,0x41,0x22,0x10,
+ 0x0f,0x51,0x9f,0xa8,0xab,0x04,0x7c,0xaa,0xa3,0x81,0xb4,0x7e,0x15,0x5f,0x3c,0xd5,
+ 0x97,0xeb,0x8c,0xe3,0x8a,0x62,0x64,0x58,0x07,0xf7,0x72,0x77,0xfb,0xa6,0x8c,0x12,
+ 0x36,0xbf,0x55,0xe8,0x69,0x58,0x03,0xf2,0xb7,0xd4,0x1f,0x4a,0x39,0x3c,0x37,0xde,
+ 0x1f,0xa8,0xa0,0x40,0x1b,0x3c,0x77,0xe9,0xf5,0xa6,0xfd,0xd3,0xea,0x0d,0x04,0x66,
+ 0x94,0x12,0xc3,0xa6,0x7d,0x68,0x01,0x3d,0x30,0x7e,0x86,0x94,0x50,0x72,0x28,0xa0,
+ 0x05,0xf6,0xaa,0x3a,0x9f,0xfc,0x7b,0xbf,0xfb,0xa6,0xae,0xd5,0x0d,0x50,0xff,0x00,
+ 0xa3,0x3f,0xfb,0xbe,0xb9,0xa0,0x0c,0x49,0xbf,0xe3,0xe5,0xbe,0xb4,0xb4,0x93,0xff,
+ 0x00,0xc7,0xd3,0xfd,0x69,0x69,0x8c,0x28,0xa2,0x8a,0x60,0x38,0x57,0x5f,0xe1,0x0f,
+ 0xf8,0xf2,0x9b,0xfe,0xba,0x7f,0x4a,0xe3,0xc5,0x75,0xde,0x10,0x3f,0xe8,0x93,0xff,
+ 0x00,0xbe,0x3f,0x95,0x02,0x37,0x7c,0x84,0xf3,0x19,0xc8,0xc9,0x6c,0x75,0xf6,0xa8,
+ 0xd6,0xca,0x35,0x89,0x50,0x76,0x18,0xcf,0xad,0x58,0xa2,0x8b,0xb1,0x4a,0x2a,0x4a,
+ 0xcd,0x10,0x2d,0xaa,0x0c,0xe7,0x04,0x9e,0xf8,0xa8,0x64,0xd3,0x91,0xd4,0xfc,0xc7,
+ 0x3d,0xb8,0x15,0x76,0x8a,0x2e,0xc8,0x74,0x60,0xd5,0x9a,0x32,0x61,0xd2,0xe7,0x03,
+ 0x12,0x4f,0xf2,0xe7,0x21,0x47,0x18,0xac,0xff,0x00,0x14,0x5a,0x08,0x74,0xe8,0x9c,
+ 0x12,0x48,0x93,0x1d,0x7d,0x8d,0x74,0xd5,0x8d,0xe2,0xa5,0xdd,0xa3,0x13,0xfd,0xd7,
+ 0x53,0x4e,0xed,0x9a,0xad,0x15,0x91,0xc3,0x9a,0x4a,0x53,0x4d,0xa6,0x48,0x51,0x45,
+ 0x25,0x00,0x2d,0x10,0xb6,0xdb,0x84,0x3e,0x8c,0x0d,0x25,0x34,0xf0,0xd4,0x98,0xd1,
+ 0xd7,0x4a,0x39,0xed,0xf8,0xd4,0x7d,0xb1,0x9a,0x91,0x8e,0xe4,0x04,0x1e,0xa3,0xd2,
+ 0xa3,0xef,0xef,0xe9,0x50,0x02,0x63,0x1d,0x69,0x0f,0x7f,0xd7,0x3f,0xe7,0xf5,0xa7,
+ 0x73,0xdb,0xa8,0xed,0x48,0x7d,0xa8,0x01,0x0d,0x21,0xf7,0xfd,0x68,0xff,0x00,0x3e,
+ 0xbf,0xfe,0xb1,0x48,0x7a,0xff,0x00,0x9f,0xf3,0x8a,0x00,0x3d,0x7f,0xaf,0xf9,0xfd,
+ 0x69,0x0f,0x7f,0xd7,0x3f,0xd7,0xfc,0x69,0x69,0x3f,0xcf,0x1f,0xd2,0x80,0x24,0x06,
+ 0x9c,0x3d,0xea,0x31,0x52,0x03,0xc5,0x22,0x85,0xa4,0x26,0x8a,0x42,0x71,0x40,0x06,
+ 0x6a,0xcc,0x98,0xdd,0xc9,0xe2,0xa9,0x83,0xf3,0x0a,0xbb,0x27,0xde,0x3d,0xe9,0x88,
+ 0x60,0xe7,0xe5,0x07,0x9e,0xa0,0xd2,0x11,0xcf,0x3d,0x68,0x24,0x95,0xc8,0xe0,0x8a,
+ 0x5f,0xbe,0xb9,0x07,0x9a,0x04,0x27,0x51,0x9c,0x7d,0x69,0xbc,0x8e,0x47,0x5a,0x50,
+ 0x70,0x72,0x0f,0x1d,0xc5,0x07,0x8f,0xa5,0x00,0x2f,0x50,0x0f,0xaf,0xe9,0x45,0x34,
+ 0x1d,0xbd,0x79,0x53,0xde,0x9c,0x7e,0xf6,0x3f,0xc9,0xa0,0x04,0xac,0xfd,0x54,0xe2,
+ 0xdd,0xfe,0x95,0xa1,0xfe,0x45,0x66,0xea,0xc7,0xfd,0x1d,0xb1,0x40,0x18,0xd2,0x9c,
+ 0xdc,0xbf,0xfb,0xc6,0x9d,0x4c,0x7f,0xf5,0xc7,0xeb,0x4f,0xa6,0x30,0xa2,0x92,0x8a,
+ 0x00,0x70,0xad,0x4d,0x27,0x5a,0x93,0x4c,0x8e,0x44,0x48,0x95,0xf7,0x90,0x7e,0x63,
+ 0xd2,0xb2,0xa8,0xa6,0x07,0x48,0x7c,0x5b,0x71,0xda,0xde,0x2f,0xd7,0xfc,0x69,0xa7,
+ 0xc5,0x97,0x5d,0xa1,0x87,0xf2,0x3f,0xe3,0x5c,0xf6,0x68,0xcd,0x16,0x41,0x73,0xa0,
+ 0x3e,0x2c,0xbc,0xff,0x00,0x9e,0x50,0x7e,0x47,0xfc,0x69,0xa7,0xc5,0x77,0xbf,0xdc,
+ 0x87,0xfe,0xf9,0x3f,0xe3,0x58,0x39,0xa4,0xa7,0x64,0x17,0x37,0x4f,0x8a,0xaf,0xff,
+ 0x00,0xbb,0x0f,0xfd,0xf3,0xff,0x00,0xd7,0xaa,0xd7,0xda,0xf5,0xdd,0xf5,0xb3,0x41,
+ 0x2f,0x97,0xb1,0x88,0x27,0x0b,0x8a,0xcb,0xa4,0xa2,0xc2,0xb8,0x1a,0x4a,0x29,0x29,
+ 0x88,0x29,0x29,0x69,0x28,0x00,0xa6,0xb7,0x5a,0x75,0x35,0xba,0xd2,0x63,0x47,0x57,
+ 0x11,0xdf,0x6b,0x11,0xe7,0x94,0x1d,0x3e,0x94,0xdc,0xe7,0xe5,0x6e,0xbd,0x88,0xa6,
+ 0x59,0x9d,0xda,0x7c,0x1d,0xfe,0x40,0x3a,0xd4,0x9c,0x36,0x47,0xf3,0xa9,0x00,0xcf,
+ 0x66,0xea,0x3a,0x11,0x48,0x4e,0x68,0x07,0xb1,0xe4,0x7a,0xff,0x00,0x8d,0x0d,0xc7,
+ 0xd2,0x90,0x09,0xfe,0x7d,0x3f,0xfd,0x46,0x93,0xfc,0xfa,0x7f,0xfa,0x8d,0x2d,0x21,
+ 0xa0,0x04,0xff,0x00,0x3f,0xe7,0xd0,0xd0,0x7f,0xcf,0xf9,0xec,0x68,0xc7,0xf9,0xff,
+ 0x00,0x3d,0xa8,0xff,0x00,0x3f,0xe7,0xda,0x80,0x05,0x34,0xfc,0x8a,0x80,0xb8,0x55,
+ 0xe4,0x8e,0x29,0x8d,0x70,0x00,0x3e,0xd4,0x8a,0x2c,0x96,0xc5,0x31,0xe4,0xaa,0x92,
+ 0x5c,0x1f,0x9b,0xdb,0x15,0x0b,0xcc,0x72,0xdc,0xf4,0xe9,0x40,0x17,0x92,0x41,0xe6,
+ 0x2f,0xd4,0x56,0xa3,0x8e,0x6b,0x9f,0xb7,0x62,0xf7,0x48,0xa0,0xf5,0x75,0xfe,0x75,
+ 0xd1,0x95,0x34,0x21,0x32,0xbe,0x30,0xd9,0x14,0x83,0x28,0x4e,0x3a,0x54,0xe5,0x29,
+ 0xa5,0x46,0x3d,0xe9,0x81,0x11,0x19,0x39,0x1d,0x7b,0xfb,0xd0,0x31,0xfe,0x34,0xf2,
+ 0xa3,0x1e,0xf4,0xd2,0xb9,0xeb,0xd7,0xd6,0x81,0x0d,0xc6,0x09,0x1e,0xbd,0xbd,0x68,
+ 0xed,0x8f,0xca,0x9d,0x8c,0x70,0x7f,0x0a,0x4d,0xbe,0xc6,0x80,0x13,0x39,0x1e,0xfd,
+ 0xeb,0x33,0x56,0xcf,0x94,0x47,0x3d,0x45,0x6a,0x6d,0x3e,0xf9,0xf5,0xc5,0x46,0xf1,
+ 0x24,0xa3,0x0c,0x8b,0xee,0x0d,0x00,0x72,0xae,0x7f,0x7a,0xc7,0xdf,0x34,0xbb,0xfd,
+ 0xab,0xa4,0x36,0x36,0xe7,0xfe,0x59,0x27,0xe7,0x4d,0xfb,0x05,0xb7,0xfc,0xf1,0x5f,
+ 0xfb,0xe8,0x53,0x19,0xce,0xef,0xf6,0xa3,0x7f,0xb5,0x74,0x5f,0xd9,0xf6,0xdf,0xf3,
+ 0xc1,0x7f,0x31,0x47,0xf6,0x75,0xbf,0xfc,0xfb,0x8f,0xc0,0x8f,0xf0,0xa0,0x0e,0x77,
+ 0x7f,0xb5,0x1b,0xfd,0xab,0xa1,0x3a,0x7d,0xae,0x71,0xe4,0x7f,0x2a,0x3f,0xb3,0x6d,
+ 0xbf,0xe7,0x88,0x14,0x5c,0x0e,0x7f,0x7f,0xb5,0x1b,0xfd,0xab,0xa0,0xfe,0xcc,0xb6,
+ 0xff,0x00,0x9e,0x60,0x52,0x7f,0x65,0xdb,0x7f,0x70,0x51,0x70,0x30,0x37,0xfb,0x52,
+ 0x6f,0xf6,0xad,0xff,0x00,0xec,0xbb,0x6f,0xee,0x8a,0x3f,0xb2,0xed,0xff,0x00,0xba,
+ 0x28,0xb8,0x8c,0x0d,0xfe,0xd4,0x9b,0xfd,0xab,0x7f,0xfb,0x2a,0xdf,0xfb,0xa2,0x8f,
+ 0xec,0xab,0x7f,0xee,0x8a,0x2e,0x07,0x3f,0xbf,0xda,0x8d,0xfe,0xd5,0xd0,0x7f,0x65,
+ 0x5b,0xff,0x00,0x74,0x51,0xfd,0x97,0x6f,0xfd,0xd1,0xf9,0x51,0x70,0x39,0xfd,0xfe,
+ 0xd4,0x9b,0xbd,0xab,0xa1,0xfe,0xcb,0x80,0x7f,0x00,0xfc,0xa8,0xfe,0xcc,0x83,0xfb,
+ 0x8b,0xf9,0x51,0x70,0x39,0xed,0xde,0xd4,0x84,0xe6,0xba,0x3f,0xec,0xd8,0x07,0xf0,
+ 0xaf,0xe5,0x47,0xf6,0x7c,0x03,0xf8,0x16,0x8b,0x8c,0x4d,0x31,0xf7,0x69,0xf1,0x8e,
+ 0x38,0x1d,0xfe,0xb5,0x60,0x8c,0xfb,0x11,0x48,0x90,0x88,0xc6,0x13,0x81,0xe8,0x29,
+ 0xd8,0xa4,0x21,0x07,0x3f,0x5f,0x4a,0x3a,0x76,0xa0,0x8a,0x42,0x7d,0x68,0x00,0xe8,
+ 0x32,0xbc,0x8f,0x4a,0x33,0xdc,0x74,0xed,0xed,0x49,0x82,0x0e,0x47,0xff,0x00,0xae,
+ 0x97,0xef,0x72,0x3a,0xf7,0x14,0x00,0x80,0x9f,0xf0,0xf6,0xa0,0xf3,0xdb,0xe9,0x8a,
+ 0x5e,0x0f,0xd6,0x97,0x3e,0xbc,0x83,0xde,0x81,0x99,0xf3,0x1f,0x98,0xfb,0xa5,0x56,
+ 0x32,0x64,0x7d,0x56,0xb4,0x85,0xac,0x52,0x04,0x77,0x62,0x32,0x0f,0x7c,0x53,0x64,
+ 0xfb,0x2c,0x16,0x6e,0x23,0x40,0xec,0x00,0x61,0x8e,0x70,0x47,0xaf,0xb6,0x09,0xa9,
+ 0x19,0x9c,0x59,0x98,0x13,0x83,0x83,0xc1,0xe3,0xbd,0x29,0x86,0x63,0xb8,0xf9,0x6c,
+ 0x36,0xf0,0xd9,0xed,0x53,0xc9,0x77,0x34,0xaf,0x36,0x2d,0x94,0x09,0xa2,0x0c,0x57,
+ 0x70,0xfb,0xc3,0xf8,0x87,0xe3,0xdb,0xdc,0xd2,0x0b,0x8b,0xb9,0x24,0x53,0xfb,0xac,
+ 0xcd,0x06,0xc3,0x9c,0xe1,0xf0,0x3f,0x9f,0x4f,0xca,0x9d,0x82,0xe3,0x63,0xb4,0xb8,
+ 0x0e,0x4e,0x30,0xd1,0xa8,0x90,0xfa,0xe3,0x8e,0x7f,0x5a,0xe9,0xe0,0xb8,0x82,0x51,
+ 0x0e,0xe6,0x0b,0x24,0xcb,0xb9,0x57,0xd7,0xd7,0x1f,0x91,0xae,0x66,0x26,0xba,0x26,
+ 0xd6,0x4f,0xb4,0x6d,0xc2,0x98,0x83,0x05,0xc9,0x1d,0x78,0x3e,0xbd,0x4d,0x35,0x61,
+ 0x99,0x63,0x87,0x74,0xb2,0x8f,0x26,0x42,0x76,0x83,0x82,0xbe,0xac,0xbe,0xdc,0x53,
+ 0xb0,0xae,0x75,0x5f,0x6a,0xb3,0xf2,0xc4,0x9e,0x7a,0x6c,0x66,0xd8,0x1b,0x3c,0x67,
+ 0xd2,0x86,0x9e,0xcc,0x33,0xab,0x5c,0x46,0xa6,0x33,0x87,0x05,0xc0,0xda,0x7d,0xeb,
+ 0x91,0x78,0x22,0x09,0x22,0x99,0x37,0x30,0x7d,0xcb,0x97,0xe1,0xc7,0xf8,0xd2,0x98,
+ 0xad,0x08,0x90,0xa9,0x5d,0x8e,0x00,0x53,0xce,0x55,0xbd,0x29,0x88,0xeb,0x03,0xda,
+ 0x3f,0xdd,0xb9,0x8c,0xfd,0x24,0x06,0x9e,0x20,0x8d,0xbe,0xeb,0x83,0xf4,0x35,0xcb,
+ 0xaa,0xc0,0xac,0xd2,0x1f,0x28,0x79,0x6b,0xb5,0xd0,0x0f,0xbd,0x9e,0xeb,0x56,0xad,
+ 0xec,0x83,0xbd,0xbc,0x49,0x30,0x2d,0xb3,0xcc,0x89,0xc0,0xfb,0xdc,0x7d,0xd3,0xef,
+ 0xda,0x80,0x37,0x8d,0xa0,0xfe,0xf1,0xa6,0x9b,0x3f,0xf6,0xab,0x1d,0x6d,0x56,0x38,
+ 0xc5,0xdc,0x4c,0xdf,0x3b,0x10,0xcb,0xfd,0xc3,0xff,0x00,0xd7,0xab,0x50,0x48,0xfb,
+ 0x41,0xde,0xdf,0x9d,0x21,0x97,0x0d,0x99,0xec,0xd4,0x86,0xd1,0xf3,0x90,0xdc,0xfd,
+ 0x6a,0x31,0x34,0x9f,0xdf,0x6f,0xce,0x94,0x5c,0x49,0xfd,0xf3,0x40,0x0e,0x36,0x92,
+ 0x7f,0x78,0xfe,0x74,0x7d,0x95,0xfd,0x4f,0xe7,0x49,0xf6,0x89,0x7f,0xbf,0xfa,0x0a,
+ 0x5f,0xb4,0xcb,0xfd,0xef,0xd0,0x50,0x02,0x7d,0x9a,0x4f,0x53,0xf9,0xd3,0x4d,0xab,
+ 0xfb,0x9a,0x7f,0xda,0xa4,0x1d,0x48,0xfc,0xa9,0x1a,0xf1,0xd5,0x4b,0x1d,0xb8,0x1e,
+ 0xd4,0xc0,0x6f,0xd9,0xdc,0x0e,0xf4,0x9e,0x43,0x7a,0x56,0x5b,0x6b,0xf7,0xca,0xc7,
+ 0x10,0xc0,0xc3,0xe8,0x7f,0xc6,0x81,0xe2,0x1b,0xbe,0xf6,0xb1,0x7e,0x04,0xd1,0x61,
+ 0x1a,0x7e,0x43,0x0f,0xe1,0xe2,0x93,0xc9,0x6f,0x43,0x54,0x07,0x88,0x67,0x18,0xcd,
+ 0xa2,0x7e,0x0f,0x4f,0xff,0x00,0x84,0x80,0x96,0x21,0x6d,0x43,0x60,0x67,0xef,0xff,
+ 0x00,0xf5,0xa9,0xa8,0xb6,0x17,0x2e,0x79,0x2d,0xfd,0xde,0x28,0xf2,0x4f,0xa1,0xaa,
+ 0x3f,0xf0,0x92,0x60,0xf3,0x69,0xff,0x00,0x8f,0xff,0x00,0xf5,0xaa,0x55,0xf1,0x02,
+ 0x3f,0xfc,0xbb,0xff,0x00,0xe3,0xff,0x00,0xfd,0x6a,0x1c,0x5a,0xdc,0x2e,0x58,0xf2,
+ 0x58,0x7f,0x0f,0x14,0x79,0x27,0x3d,0x2a,0x21,0xad,0xa1,0xff,0x00,0x97,0x73,0xff,
+ 0x00,0x7d,0xff,0x00,0xf5,0xa9,0xe3,0x58,0x8c,0xff,0x00,0xcb,0x13,0xff,0x00,0x7d,
+ 0x52,0x01,0xde,0x49,0xf4,0xa4,0x30,0x9e,0xc3,0x9a,0x51,0xaa,0x46,0x7f,0xe5,0x91,
+ 0xfc,0xe9,0xc3,0x52,0x8c,0xff,0x00,0xcb,0x33,0xf9,0xd2,0x01,0x9e,0x51,0xf4,0xa0,
+ 0xc4,0x7d,0x2a,0x4f,0xed,0x08,0xbf,0xe7,0x9b,0x52,0xfd,0xbe,0x2f,0xee,0x35,0x00,
+ 0x43,0xe5,0x9f,0x4a,0x4f,0x2c,0xe3,0xa5,0x4f,0xf6,0xf8,0x7f,0xb8,0xff,0x00,0xa5,
+ 0x1f,0x6d,0x83,0xfb,0xaf,0xf9,0x50,0x05,0x7d,0x84,0x76,0xc8,0xa3,0xcb,0x3e,0x86,
+ 0xa7,0xfb,0x64,0x1e,0x8d,0xf9,0x51,0xf6,0xb8,0x7f,0xda,0xfc,0xa8,0x19,0x07,0x96,
+ 0x7d,0x29,0x3c,0xb3,0xdc,0x55,0x8f,0xb5,0xc1,0xfe,0xd7,0xe5,0x47,0xda,0xe0,0xf7,
+ 0xfc,0xa8,0x02,0xb1,0x8c,0xe6,0x8f,0x2c,0x9c,0x1c,0x60,0xd5,0x9f,0xb5,0x41,0xea,
+ 0x7f,0x2a,0x3e,0xd3,0x07,0xf7,0xbf,0x4a,0x00,0xad,0xb0,0x91,0xc8,0xc1,0xa4,0xf2,
+ 0xbd,0xb1,0x56,0xbe,0xd3,0x07,0xf7,0xbf,0x4a,0x4f,0xb4,0xc1,0xfd,0xef,0xd2,0x80,
+ 0x30,0x25,0x6e,0x41,0xcf,0xdd,0x38,0xfc,0xea,0x21,0x30,0x8b,0x95,0x3c,0xa9,0xc7,
+ 0x3d,0xc5,0x2d,0xc7,0xdc,0x90,0xff,0x00,0xb4,0x05,0x53,0x90,0x90,0x5c,0x7a,0x62,
+ 0x90,0xcb,0x2f,0x7a,0x54,0x91,0x1a,0x2a,0x05,0x5c,0x2f,0x19,0xdb,0xd3,0xa1,0xff,
+ 0x00,0x3d,0x6a,0x36,0xbb,0x90,0xe4,0x03,0xb4,0x05,0x1c,0x28,0x03,0x1d,0x39,0x1e,
+ 0x86,0xab,0xb7,0x56,0xfc,0xa9,0x09,0x1f,0x35,0x31,0x13,0x35,0xc4,0xac,0x7e,0x69,
+ 0x18,0xfc,0x98,0x3c,0xf5,0x14,0xc0,0xc4,0x95,0xcf,0x65,0xa6,0x12,0x32,0x7e,0x98,
+ 0xa3,0x77,0xf2,0xc5,0x00,0x39,0x5b,0x98,0xfe,0xb4,0xd0,0xfd,0x3d,0x8e,0x69,0x01,
+ 0xc1,0x1e,0xd4,0x2f,0xde,0x1f,0x5a,0x60,0x38,0x39,0x39,0x1e,0xf9,0xad,0x4b,0x49,
+ 0x1f,0x64,0x60,0x1c,0x6c,0x6d,0xca,0x47,0x50,0x7f,0xc8,0xac,0xe4,0x52,0x52,0x4c,
+ 0x2e,0x48,0x23,0x1c,0x56,0x85,0xba,0xed,0x8c,0x7a,0xd2,0x03,0x5a,0x19,0x06,0xc9,
+ 0x90,0x8c,0xac,0xb8,0x3f,0x46,0xf5,0xfe,0x75,0x22,0x70,0x31,0x55,0x61,0x6c,0x8a,
+ 0xb2,0xb9,0x22,0x90,0x0f,0xa5,0xcd,0x32,0x97,0x24,0x53,0x01,0xd9,0xa3,0x34,0xdc,
+ 0xd1,0x40,0x0e,0xeb,0x50,0x5e,0xf3,0x67,0x2f,0xfb,0xa6,0xa5,0xcd,0x43,0x77,0xcd,
+ 0xa4,0xbf,0xee,0x1f,0xe5,0x42,0xdc,0x47,0x3b,0x45,0x25,0x15,0xd4,0x66,0x0d,0xf7,
+ 0x4d,0x58,0xd2,0xf0,0xd7,0x04,0x1e,0xe8,0x6a,0xb3,0x7d,0xd3,0x56,0x34,0x93,0xfe,
+ 0x96,0x3f,0xdd,0x35,0x12,0x65,0x22,0xe5,0xc5,0x98,0x6c,0xb2,0xf5,0xac,0xf9,0x23,
+ 0x78,0x8f,0xf5,0xad,0xd2,0x2a,0x19,0x61,0x57,0x18,0x22,0x85,0x3b,0xe9,0x21,0x38,
+ 0xdb,0x63,0x2e,0x39,0xbb,0x37,0xe7,0x56,0x15,0xea,0x2b,0x8b,0x52,0x87,0x22,0xa0,
+ 0x57,0x68,0xce,0x0e,0x7e,0x86,0x94,0xa1,0xd8,0x6a,0x46,0x82,0xc9,0x52,0xab,0xd5,
+ 0x24,0x90,0x38,0xc8,0x35,0x28,0x62,0x2b,0x1b,0x16,0x5b,0x0d,0x4b,0xba,0xab,0x07,
+ 0xa7,0x86,0xa0,0x09,0xf3,0x46,0xea,0x88,0x35,0x2e,0xea,0x40,0x49,0x9a,0x33,0x4c,
+ 0xdd,0x46,0x68,0x02,0x4c,0xd2,0x66,0x9b,0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6,
+ 0x8c,0xd0,0x03,0xb3,0x45,0x37,0x34,0xb9,0xa0,0x0f,0xff,0xd9,0xff,0xe4,0x13,0x4b,
+ 0x51,0x54,0x49,0x20,0x44,0x65,0x62,0x75,0x67,0x20,0x4d,0x65,0x74,0x61,0x64,0x61,
+ 0x74,0x61,0x00,0x49,0x13,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x52,0x43,0xae,0xae,0xae,0xae,0x86,0x02,0x00,0x00,0xe8,0x05,0x00,
+ 0x00,0x7b,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0xaa,0x01,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x06,0x11,0xa5,0x88,0x03,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x4c,0x09,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x25,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x34,0x00,0x00,0x00,0xab,0x06,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x50,0x00,0x00,
+ 0x00,0x50,0x09,0x00,0x00,0x0b,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x73,0x02,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
+ 0x00,0x40,0x01,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xaa,0x01,0x00,0x00,0xe8,0x05,0x00,0x00,0xee,0xee,0xee,
+ 0xee,0x15,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x01,0x00,
+ 0x00,0x22,0x41,0x00,0x00,0x94,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x22,0x41,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0xf7,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xe6,0x0b,0x00,
+ 0x00,0x2f,0x08,0x00,0x00,0xe6,0x0b,0x00,0x00,0x10,0x00,0x00,0x00,0x31,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x94,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x68,0x00,0x00,
+ 0x00,0x26,0x09,0x00,0x00,0x87,0x08,0x00,0x00,0x0b,0x09,0x00,0x00,0xc6,0x08,0x00,
+ 0x00,0x25,0x09,0x00,0x00,0x09,0x09,0x00,0x00,0x1b,0x09,0x00,0x00,0x1d,0x09,0x00,
+ 0x00,0x21,0x09,0x00,0x00,0x3e,0x09,0x00,0x00,0x43,0x09,0x00,0x00,0x12,0x09,0x00,
+ 0x00,0x29,0x09,0x00,0x00,0x12,0x09,0x00,0x00,0x04,0x09,0x00,0x00,0xc7,0x08,0x00,
+ 0x00,0x56,0x08,0x00,0x00,0x69,0x07,0x00,0x00,0xc8,0x05,0x00,0x00,0x52,0x05,0x00,
+ 0x00,0x2b,0x09,0x00,0x00,0x27,0x09,0x00,0x00,0x67,0x08,0x00,0x00,0xc8,0x05,0x00,
+ 0x00,0x5f,0x08,0x00,0x00,0x32,0x0a,0x00,0x00,0x67,0x0a,0x00,0x00,0xa1,0x07,0x00,
+ 0x00,0x6d,0x05,0x00,0x00,0x04,0x08,0x00,0x00,0x2f,0x09,0x00,0x00,0x31,0x09,0x00,
+ 0x00,0x66,0x08,0x00,0x00,0xe8,0x05,0x00,0x00,0xf9,0x09,0x00,0x00,0xab,0x0a,0x00,
+ 0x00,0xe9,0x0a,0x00,0x00,0xf2,0x08,0x00,0x00,0x7e,0x05,0x00,0x00,0xdc,0x07,0x00,
+ 0x00,0x31,0x09,0x00,0x00,0x5a,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xee,0x09,0x00,
+ 0x00,0x73,0x0a,0x00,0x00,0xc5,0x0a,0x00,0x00,0x50,0x09,0x00,0x00,0x86,0x05,0x00,
+ 0x00,0x31,0x09,0x00,0x00,0x4e,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xe2,0x09,0x00,
+ 0x00,0x2b,0x0b,0x00,0x00,0xdc,0x0a,0x00,0x00,0x5c,0x09,0x00,0x00,0x86,0x05,0x00,
+ 0x00,0x38,0x09,0x00,0x00,0x3e,0x08,0x00,0x00,0xee,0x05,0x00,0x00,0xcf,0x09,0x00,
+ 0x00,0xe6,0x0b,0x00,0x00,0xd4,0x0b,0x00,0x00,0xdd,0x09,0x00,0x00,0x76,0x05,0x00,
+ 0x00,0xe8,0x05,0x00,0x00,0x06,0x06,0x00,0x00,0x3b,0x06,0x00,0x00,0x1c,0x06,0x00,
+ 0x00,0x33,0x08,0x00,0x00,0x1e,0x08,0x00,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xfe,0xff,0xff,0xff,0xbc,0x08,0x00,
+ 0x00,0x44,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x29,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x96,0x09,0x00,
+ 0x00,0xf9,0x0b,0x00,0x00,0xba,0x05,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0d,0x00,
+ 0x00,0x00,0x1d,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x8b,0xfe,0xff,
+ 0xff,0xdc,0xfe,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xad,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x06,0x00,
+ 0x00,0x7c,0x00,0x00,0x00,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0x0a,0x00,0x00,0x86,0x09,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xde,0x00,0x00,0x00,0xbb,0x00,0x00,
+ 0x00,0x17,0x00,0x00,0x00,0x1d,0x00,0x00,0x00,0xb6,0x00,0x00,0x00,0xa5,0x00,0x00,
+ 0x00,0xc1,0xff,0xff,0xff,0x3c,0x00,0x00,0x00,0xef,0xff,0xff,0xff,0xed,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,
+ 0x00,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x10,0x00,
+ 0x00,0x00,0x13,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x26,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0b,0x00,0x00,0xdf,0xff,0xff,
+ 0xff,0x64,0x08,0x00,0x00,0xa4,0x0a,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x0a,0x1e,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x6c,0x97,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xa5,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x92,0x02,0x00,0x00,0x8a,0x04,0x00,0x00,0xe4,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x5d,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,
+ 0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00,
+ 0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x4a,0x4b,0x4a,0x4b,0x21,0x07,0x0a,
+ 0x9c,0x24,0xfa,0x00,0x00,0xac,0xfa,0x00,0x00,0x2e,0x77,0x00,0x00,0x2c,0x7e,0x00,
+ 0x00,0xd6,0xea,0x01,0x00,0x50,0xb1,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0xaa,0x01,
+ 0x00,0x00,0xaa,0x01,0x00,0x02,0x00,0x35,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x02,
+ 0x00,0x00,0x00,0x76,0x00,0x75,0x18,0x7e,0x5b,0x02,0x00,0x00,0x00,0x01,0x00,0x87,
+ 0xb3,0x01,0x00,0x17,0x92,0x01,0x00,0xbb,0x6b,0xff,0xff,0x2d,0x02,0x00,0x00,0x69,
+ 0xdd,0xff,0xff,0x26,0x46,0x01,0x00,0x71,0xdc,0xff,0xff,0x70,0x0f,0x00,0x00,0x19,
+ 0x4f,0xff,0xff,0x76,0xa1,0x01,0x00,0xff,0xff,0x40,0x30,0x00,0x00,0x18,0x00,0x00,
+ 0x12,0x12,0x00,0x08,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x10,0x12,
+ 0x12,0x12,0x12,0x13,0x13,0x00,0x00,0x00,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x13,0x00,0x13,0x12,0x13,0x13,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x01,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x07,0x08,0x12,0x12,0x12,0x12,0x01,
+ 0x06,0x12,0x12,0x12,0x12,0x08,0x15,0x00,0x00,0x14,0x15,0x06,0x12,0x12,0x12,0x01,
+ 0x06,0x12,0x12,0x12,0x12,0x08,0x08,0x15,0x00,0x15,0x15,0x06,0x12,0x12,0x12,0x01,
+ 0x06,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x15,0x15,0x07,0x12,0x12,0x12,0x06,
+ 0x12,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x14,0x15,0x08,0x12,0x12,0x12,0x06,
+ 0x06,0x12,0x12,0x12,0x12,0x06,0x07,0x16,0x08,0x00,0x08,0x08,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x06,0x07,0x01,0x01,0x07,0x08,0x08,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x08,0x15,0x15,0x12,0x12,0x12,0x12,0x12,0x12,0x00,
+ 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xf9,0x0d,0x00,0x10,0x00,
+ 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xc3,
+ 0x0a,0x00,0x10,0xca,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x02,
+ 0x08,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x1b,
+ 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x25,0x4c,0x00,0x00,0x00,0x0e,
+ 0x18,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88,
+ 0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,
+ 0x1e,0x08,0x1b,0xfc,0x21,0xa8,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4c,0x24,0x38,0x1f,0x42,
+ 0x23,0x2f,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c,
+ 0x27,0x09,0x1e,0xf0,0x27,0xec,0x1b,0x2b,0x28,0x67,0x1c,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x67,0x2a,0x04,0x18,0x00,0x27,0x5d,0x19,0x7b,0x25,0x3d,0x16,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x2e,0x2d,0x15,0xd3,0x2b,0x56,0x16,0xa2,
+ 0x29,0x12,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xab,
+ 0x1c,0x9c,0x1a,0x7b,0x25,0x77,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x5d,0x1d,0x93,0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa1,0x26,0x42,0x20,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c,
+ 0x27,0x57,0x1e,0x75,0x27,0xc0,0x1d,0x83,0x28,0x72,0x1c,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x80,0x27,0x12,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf2,0x1f,0x1d,0x15,0xd2,
+ 0x24,0x83,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88,
+ 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,
+ 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x04,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x55,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x12,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x0f,0x00,0x1c,0x01,0xe8,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x13,
+ 0x01,0x07,0x00,0x00,0x00,0x00,0x00,0x2f,0x00,0x71,0x00,0x13,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0xc8,0x00,0x9b,
+ 0x01,0x00,0x00,0x00,0x00,0x04,0x00,0x5a,0x00,0xe8,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x0c,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x16,0x00,0x0b,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xf7,0x1f,0xfe,0xb7,0x15,0xfe,0xb7,0x15,
+ 0xe2,0x17,0x10,0xe2,0x17,0x10,0x00,0x88,0x20,0x00,0x10,0xe6,0x1d,0x06,0x00,0x00,
+ 0x00,0x5a,0x50,0x64,0x55,0x64,0x2d,0x64,0x10,0x64,0x10,0x64,0x10,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x67,0x00,0x00,0x00,0x01,0x00,0x0c,0x00,0x13,
+ 0x00,0x09,0x00,0x06,0x00,0x67,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x65,0x26,0xba,0x1b,0x65,
+ 0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x84,0x25,0x27,0x1b,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x59,0x00,0x00,0x00,0xda,0x02,0x83,
+ 0x03,0x00,0x00,0x75,0x19,0x00,0x00,0x60,0x3d,0x00,0x00,0x00,0xaa,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x05,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x4e,0x00,0xa4,0x00,0x8d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x03,0x00,0x9d,0x00,0x6a,0x01,0x4b,
+ 0x04,0x01,0x00,0x57,0x01,0x28,0x00,0x01,0x00,0xd6,0xc9,0x33,0x01,0x00,0x00,0x00,
+ 0x00,0x46,0x41,0x46,0x41,0x28,0x00,0x66,0x01,0x32,0x00,0xad,0xff,0xda,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0x93,0x59,0x01,0x9c,0x04,0x32,0x00,0xad,0xff,0xda,0xff,0xa8,
+ 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0x59,0x01,0x14,0x00,0xc2,0xff,0xd7,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0x93,0x58,0x01,0x58,0x01,0xc2,0xff,0x00,0x00,0xec,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x58,0x01,0xd0,0xff,0xe3,0xff,0xf1,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x57,0x01,0xf7,0xff,0x03,0x00,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xe3,0x56,0x01,0x9c,0x04,0xf7,0xff,0x03,0x00,0xff,0xff,0xa8,
+ 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0xe8,0x03,0xf7,0xff,0x03,0x00,0xff,0xff,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x57,0x01,0xd4,0xff,0x10,0x00,0xf7,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x2c,0x00,0x14,0x00,0xfc,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe1,0xff,0x15,0x00,0x02,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd8,0xff,0xf0,0xff,0xf3,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x23,0x00,0x23,0x00,0x0e,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd2,0xff,0x1f,0x00,0x0c,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc5,0xff,0xd6,0xff,0xf4,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x25,0x00,0x1c,0x00,0x00,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x18,0x00,0xf5,0xff,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc2,0xff,0xe8,0xff,0x03,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0c,0x00,0x28,0x00,0xfe,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x03,0x00,0xe1,0xff,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf8,0xff,0xe9,0xff,0xf9,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd0,0xff,0x1d,0x00,0x05,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf6,0xff,0xe1,0xff,0xf8,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x1d,0x00,0xed,0xff,0xeb,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xde,0xff,0xf3,0xff,0x06,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0d,0x00,0x02,0x00,0xf0,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xfe,0xff,0xea,0xff,0x01,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe6,0xff,0xf8,0xff,0x04,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xfa,0xff,0xf2,0xff,0xf7,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x11,0x00,0x08,0x00,0x08,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xc2,0xff,0xeb,0xff,0x02,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x27,0x00,0x05,0x00,0x00,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x19,0x00,0x0c,0x00,0xfc,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd3,0xff,0xe9,0xff,0xfe,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x06,0x00,0x07,0x00,0xf2,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd5,0xff,0x1a,0x00,0x03,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x09,0x00,0x18,0x00,0x03,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xef,0xff,0x23,0x00,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x01,0x00,0xf7,0xff,0xf3,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0xaa,0x01,0x00,0x00,0xb8,0x00,0x05,0xd0,0x0a,
+ 0x00,0x01,0x00,0x00,0x00,0x60,0x07,0x00,0x04,0x70,0x08,0x40,0x05,0x18,0x00,0x01,
+ 0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xe5,0x00,0xa2,0x00,0x73,0x73,
+ 0x6f,0x69,0x73,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c,
+ 0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x30,0x20,0x32,0x73,0x73,
+ 0x6d,0x74,0x66,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x53,0x53,0x43,0x41,0x4c,
+ 0x20,0x50,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56,0x4d,0x30,0x30,0x33,
+ 0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0x4d,0x38,0x44,0x30,0x31,0x44,0x30,0x31,
+ 0x53,0x31,0x34,0x53,0x41,0x33,0x2f,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31,
+ 0x56,0x4d,0x30,0x30,0x33,0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0xff,0xdb,0x00,
+ 0x84,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x02,0x03,0x02,0x02,0x02,0x02,0x02,0x04,0x03,0x03,0x02,0x03,0x05,0x04,0x05,0x05,
+ 0x05,0x04,0x04,0x04,0x05,0x06,0x07,0x06,0x05,0x05,0x07,0x06,0x04,0x04,0x06,0x09,
+ 0x06,0x07,0x08,0x08,0x08,0x08,0x08,0x05,0x06,0x09,0x0a,0x09,0x08,0x0a,0x07,0x08,
+ 0x08,0x08,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x04,0x02,0x02,0x04,0x08,0x05,0x04,
+ 0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0xff,0xc0,0x00,0x11,0x08,0x0b,0xd0,0x0f,0xc0,0x03,0x01,0x22,0x00,
+ 0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,
+ 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,
+ 0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,
+ 0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,
+ 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,
+ 0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,
+ 0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,
+ 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,
+ 0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,
+ 0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,
+ 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,
+ 0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,
+ 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,
+ 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,
+ 0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,
+ 0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,
+ 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,
+ 0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,
+ 0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,
+ 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,
+ 0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,
+ 0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,
+ 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,
+ 0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,
+ 0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,
+ 0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xfe,0x15,0xec,0x27,0x9b,0x03,0x68,0x86,
+ 0x7b,0x88,0xd4,0xc8,0x79,0x3c,0xaf,0xa0,0xf5,0xa5,0xd4,0xee,0xa7,0x96,0x66,0x79,
+ 0x84,0x31,0x16,0x0a,0x56,0x35,0xe7,0x23,0x03,0x05,0x4f,0x73,0x4c,0x64,0x68,0x55,
+ 0xa4,0x8d,0x19,0xe4,0x60,0xc5,0x59,0x57,0xf7,0x80,0x0e,0xad,0x8f,0x4a,0xa5,0x78,
+ 0xd3,0xac,0x7e,0x73,0xfc,0xb7,0x48,0xd9,0xd9,0x13,0x75,0x4c,0x0e,0x40,0xec,0x6b,
+ 0x5a,0x56,0x8b,0x76,0xd8,0xa7,0xb6,0xe5,0x5b,0xcb,0x91,0x72,0x8b,0x10,0x49,0x9a,
+ 0xe2,0x32,0x59,0x97,0x1c,0x36,0x7a,0x67,0xdc,0x7f,0x5a,0xc6,0x69,0x84,0x51,0x29,
+ 0x96,0x24,0x17,0x2e,0x08,0x90,0x96,0xe8,0x33,0xd4,0x0f,0x6a,0x7d,0xdd,0xfb,0x99,
+ 0x66,0x91,0x96,0x74,0x47,0x60,0xe1,0x07,0xf0,0xf1,0xfe,0x26,0xb3,0x1f,0xf7,0xa5,
+ 0x5a,0x42,0x17,0x92,0xcc,0x1b,0xa6,0x08,0xcf,0x5a,0xd9,0x69,0xea,0x38,0xbe,0xdb,
+ 0x8b,0x31,0x4d,0xea,0xe2,0x32,0x8c,0x7e,0x63,0xf3,0x7b,0x53,0x99,0xd9,0xc2,0x48,
+ 0xb2,0x14,0xc8,0xc7,0xb1,0x3e,0x87,0xf5,0xa8,0xc7,0xef,0x44,0x86,0x42,0x25,0x7c,
+ 0x64,0x16,0x24,0x02,0x3d,0xa9,0xc1,0x62,0x88,0xb1,0x07,0xcc,0x21,0x70,0x14,0x8e,
+ 0x09,0xc7,0x5f,0xd6,0xb3,0xb5,0xda,0x46,0xb1,0x6e,0xde,0x45,0x9b,0x74,0x2d,0x29,
+ 0x8e,0x4d,0xe7,0x9c,0x20,0x03,0xe5,0x07,0xbf,0xcd,0x57,0x62,0xb8,0x8d,0x54,0x5a,
+ 0x95,0x77,0x53,0x21,0x90,0x10,0x00,0x39,0x1e,0xe7,0xa8,0xe0,0xd6,0x51,0x21,0xc3,
+ 0x29,0x2a,0x50,0x90,0x48,0x50,0x7b,0x0e,0xbe,0xd5,0x0a,0xca,0x70,0x14,0x64,0xe4,
+ 0x6d,0x04,0x73,0xf4,0xa6,0xe7,0x74,0x6a,0xa5,0x65,0x66,0x69,0xb6,0xa5,0x2b,0x26,
+ 0xf5,0x48,0xe0,0x07,0xe5,0x11,0x8f,0x98,0x15,0x07,0xee,0xf3,0xda,0xb3,0x6e,0x6e,
+ 0x24,0xb8,0x9c,0xca,0xe4,0x8c,0x03,0x81,0x8e,0xf4,0xc1,0xf7,0x31,0x8c,0x91,0x91,
+ 0x80,0x69,0xa4,0x8d,0xa3,0xe7,0x79,0x30,0x70,0x73,0xc6,0x6b,0x36,0xee,0x65,0x29,
+ 0x5d,0x0e,0x21,0x4e,0xc5,0x00,0xbb,0x91,0x92,0x48,0xc6,0x29,0x1b,0x18,0xdc,0x0f,
+ 0x07,0x92,0xa4,0xd3,0xbe,0xeb,0x85,0x0a,0x4e,0x46,0x5c,0x16,0xe0,0xd3,0x24,0x3b,
+ 0x8e,0x55,0x36,0x8e,0x80,0x9e,0x70,0x3d,0x2a,0x6e,0xaf,0x70,0x77,0xb6,0xa3,0xfe,
+ 0x53,0x86,0xd8,0x23,0x5c,0xe5,0x80,0x27,0xe5,0xc7,0xf8,0xd3,0x3e,0x67,0xc0,0xcf,
+ 0x3d,0x17,0x8e,0xb4,0xe5,0xf2,0xc3,0xfd,0xe2,0x40,0x18,0xe4,0x75,0xa6,0xee,0x57,
+ 0x2a,0x4e,0xd5,0xc9,0xc6,0x73,0xd2,0x9a,0xf2,0x13,0xdb,0x50,0x07,0x24,0x00,0x01,
+ 0x5f,0xe2,0xcf,0x7f,0x6a,0x92,0x45,0x28,0xa8,0x81,0x48,0x56,0xf9,0x81,0x6e,0xf8,
+ 0xeb,0x4c,0x2c,0x79,0x51,0xb1,0x80,0x38,0x0d,0x8c,0x64,0x53,0xb7,0xf9,0x8c,0xa6,
+ 0x4c,0xb9,0x55,0xc2,0xfb,0x7e,0x14,0xac,0x17,0x5b,0x75,0x00,0x33,0xe5,0x39,0x01,
+ 0x01,0x38,0xce,0x38,0x1f,0x5f,0xca,0x85,0x8c,0xb9,0xf2,0xf2,0x23,0xc8,0xc3,0x36,
+ 0x3a,0x73,0xff,0x00,0xea,0xa9,0x0e,0x76,0xaa,0xb1,0xf3,0x3e,0x52,0x00,0x66,0xfb,
+ 0xbf,0x41,0x50,0xee,0x0d,0xb4,0xc8,0xbb,0xbd,0xb3,0xd7,0x9e,0xd4,0xed,0xd1,0x15,
+ 0x64,0x9e,0xa4,0x8d,0x9c,0xe0,0x47,0xc2,0xae,0xc3,0x93,0xd7,0xde,0x83,0xe5,0x85,
+ 0xe3,0x73,0xa9,0x20,0xe0,0xf1,0xcd,0x26,0x64,0xd9,0x86,0xc6,0x47,0x20,0xe7,0xef,
+ 0x0f,0x42,0x29,0x8c,0x40,0x6c,0x01,0x9c,0x9c,0x92,0x3b,0x52,0xb8,0x9b,0xb2,0xbb,
+ 0x1c,0x0b,0x49,0x8d,0xc4,0x28,0x04,0xf2,0x4f,0x27,0xd8,0x52,0x86,0x5d,0xa8,0x54,
+ 0x67,0xae,0x09,0x1d,0x29,0x8a,0x03,0x07,0xcb,0x28,0x5e,0xa4,0x9e,0xd4,0xae,0xe5,
+ 0xd0,0x0c,0x15,0x8d,0x4e,0x40,0x03,0xa5,0x17,0xbe,0xe1,0x7d,0x2e,0x3f,0xe6,0x90,
+ 0x9c,0x97,0xda,0x48,0xdc,0x47,0x6f,0x4a,0x8b,0xa9,0xce,0xdd,0xa0,0x73,0xc9,0x3f,
+ 0x35,0x48,0xac,0x8d,0xbf,0x71,0x65,0x24,0x64,0x11,0xd6,0x9b,0x82,0xc0,0x05,0x0c,
+ 0x79,0xce,0x0f,0x6f,0x6a,0x1e,0x81,0x7d,0x04,0xf9,0x9c,0xaf,0x4c,0x93,0xc0,0x14,
+ 0xec,0xb4,0x85,0x54,0x16,0x2d,0x93,0x80,0x47,0x5a,0x06,0x41,0x2e,0xa4,0x8c,0x8c,
+ 0xe4,0x0e,0x83,0xd0,0xd1,0x9d,0xe0,0xc8,0xcc,0x01,0x3d,0x40,0xa5,0xd7,0x52,0x55,
+ 0xed,0xa8,0xbf,0xbc,0x8c,0xe6,0x37,0x2a,0x40,0xc1,0x1d,0x87,0x14,0xd4,0x0a,0x10,
+ 0xe5,0x72,0xac,0x38,0x70,0x3a,0x73,0x4f,0x45,0x52,0x15,0xc6,0x36,0x9e,0xcc,0x79,
+ 0xe2,0x98,0x5d,0xc0,0x2e,0x1f,0x60,0x03,0x21,0x40,0xe8,0x3d,0x05,0x3e,0x81,0xe6,
+ 0xc7,0xb2,0x92,0x54,0x1d,0xa3,0xe5,0xe4,0x7a,0x8f,0x7f,0xd2,0x90,0x30,0x63,0x1a,
+ 0x94,0x43,0x8e,0x4e,0x49,0xf9,0xbe,0xb4,0x63,0x77,0xcc,0x18,0x73,0xc6,0x09,0xf9,
+ 0x89,0xfa,0x53,0x57,0x69,0x47,0x3c,0x96,0x18,0x03,0x1e,0x94,0x5f,0xb0,0xef,0xad,
+ 0xd1,0x20,0xdb,0x87,0x00,0x17,0x19,0x00,0x00,0x39,0xfc,0x0d,0x1b,0x54,0x71,0x11,
+ 0x63,0xb5,0xb9,0x0d,0xc1,0x14,0xd5,0x3c,0xe7,0x83,0x96,0xe7,0xb6,0x29,0x15,0x24,
+ 0x32,0x32,0xae,0x43,0xfd,0xe5,0xc9,0x03,0x23,0x3e,0xb4,0x3d,0x5d,0xc2,0xfb,0x0e,
+ 0x72,0x09,0x03,0x2c,0xbb,0x41,0x1c,0xf6,0xa5,0x68,0x1f,0xe4,0x72,0x8b,0x86,0x19,
+ 0x52,0x0f,0xde,0xa5,0x62,0xa1,0xbf,0x78,0xae,0x24,0x27,0x70,0x6c,0xf2,0x0f,0xb8,
+ 0xee,0x2a,0x47,0x92,0x69,0x7c,0xb5,0x57,0x2a,0x8a,0x70,0xa8,0xa3,0xee,0xd3,0x69,
+ 0x12,0xd5,0xc7,0x47,0x85,0x0f,0x1c,0xc9,0xfb,0x89,0x14,0x3a,0xae,0x30,0x48,0xcf,
+ 0x7e,0xf5,0x66,0x0b,0xd9,0xa3,0x9a,0xdb,0x71,0x59,0x46,0x4a,0xa6,0x1b,0x1b,0x47,
+ 0x40,0x6a,0xa9,0x2c,0x42,0xac,0xef,0xe6,0x72,0x63,0x50,0xc7,0x86,0x1e,0xa4,0xf6,
+ 0xa8,0xa4,0xc1,0x90,0x00,0xaa,0x13,0x1b,0x71,0x8e,0xc0,0x74,0x5f,0x7a,0x4a,0xef,
+ 0x51,0xe8,0x8e,0xdc,0xbc,0x33,0xda,0xc8,0xca,0xb1,0x73,0x21,0x80,0xc4,0xf9,0xc0,
+ 0x39,0xce,0x57,0xf5,0xe9,0x5c,0xc4,0x8d,0x0c,0x72,0x3b,0xc5,0x2a,0xa4,0xc9,0x23,
+ 0x2b,0x46,0xe7,0xef,0x9f,0x51,0xec,0x79,0xc5,0x6e,0xd9,0x18,0xf1,0xb3,0xfd,0x25,
+ 0xa6,0x03,0x2b,0x95,0xce,0xd1,0x8f,0xbc,0x7d,0x3f,0xfa,0xf5,0x8f,0x7c,0xb6,0xd0,
+ 0x48,0xcc,0xd6,0xed,0x35,0xe0,0x38,0x62,0x41,0x0a,0x33,0xdf,0xeb,0xc8,0xa7,0x77,
+ 0xaa,0x7b,0x99,0xa7,0x77,0x66,0x55,0x77,0x61,0x12,0x4a,0x98,0x18,0x93,0x25,0x07,
+ 0x04,0x0f,0x6a,0x0a,0x87,0x4c,0x83,0x20,0x85,0x8e,0x1d,0x40,0xe4,0x73,0x50,0x2c,
+ 0x4f,0x2c,0x71,0xc2,0x5d,0x41,0x27,0xe6,0x52,0x4e,0x57,0x9e,0xa0,0x7a,0x55,0x9b,
+ 0x86,0x8d,0xa4,0x8d,0x62,0x66,0x8a,0x75,0x52,0x03,0x38,0xe0,0x8f,0x4f,0xf3,0xeb,
+ 0x49,0xf9,0x6e,0x17,0x4f,0x61,0x53,0x74,0x67,0x0e,0x9f,0x28,0x3f,0x2a,0xae,0x32,
+ 0x3e,0xa6,0x9a,0xd7,0x06,0x59,0x63,0x0d,0x18,0x87,0xf8,0x94,0xe7,0x9c,0xe7,0xbf,
+ 0xa5,0x31,0x58,0x3b,0x85,0x74,0x29,0x91,0x87,0x20,0x7d,0xdf,0x43,0xc7,0x5e,0x94,
+ 0x2b,0xec,0xdc,0xe8,0xa6,0x50,0xc7,0x00,0xb7,0x7f,0x72,0x2a,0x5e,0xe1,0xab,0x5a,
+ 0x16,0x04,0x4a,0x65,0x70,0xc2,0x4c,0x96,0x24,0x9e,0xb9,0xf7,0x22,0x88,0xb7,0xda,
+ 0xaa,0x38,0x71,0x1e,0x09,0x0a,0xc7,0xa9,0x51,0xc9,0x1e,0xd4,0x92,0x43,0x24,0x0d,
+ 0x14,0x8c,0xa2,0x30,0x64,0x05,0xd4,0x3e,0x30,0x31,0xc7,0xf9,0x35,0x34,0x33,0x99,
+ 0xa7,0xf2,0xfc,0xd6,0x9e,0x4d,0xc2,0x4d,0xa4,0x0e,0x83,0xb5,0x2f,0x24,0x2b,0xb7,
+ 0xb0,0xcf,0x2a,0xdc,0xf9,0x53,0x30,0x95,0x56,0x40,0xc4,0x44,0x8d,0x92,0xa3,0xd4,
+ 0x8a,0x96,0x39,0x7c,0xdb,0x99,0x23,0x01,0xfe,0x45,0x2e,0x18,0x0f,0x6a,0x58,0xde,
+ 0x39,0x66,0x5b,0x7b,0x68,0x9c,0xdc,0x33,0xf9,0x8c,0xc4,0x60,0xa7,0xb7,0x34,0x93,
+ 0x5b,0x5f,0x2a,0x32,0x49,0xba,0xd5,0x43,0x15,0xda,0xbf,0x79,0x81,0x39,0x04,0x0e,
+ 0xd4,0xf4,0xb8,0xf4,0xd9,0x16,0xa0,0x92,0xdc,0x84,0xcc,0x52,0xcb,0x74,0xc3,0x00,
+ 0x6d,0x23,0x8f,0x6f,0xa5,0x0b,0x05,0xcc,0xb7,0x50,0x42,0x92,0xe5,0x5f,0x0a,0xcc,
+ 0xe7,0x86,0x6f,0xad,0x58,0xb5,0xd3,0x75,0x2d,0x46,0xee,0x0d,0xb1,0x38,0x8c,0xa9,
+ 0x53,0x29,0x60,0x0a,0x26,0x3d,0x7b,0x9e,0x7a,0x57,0x57,0x6f,0x65,0x67,0xa5,0x5a,
+ 0x40,0xb2,0x34,0xb7,0xae,0xe5,0xe4,0x50,0xc7,0x04,0x10,0x78,0x19,0xef,0x9f,0x4e,
+ 0xd4,0x45,0x5d,0xe8,0x24,0xef,0xa2,0x30,0xf4,0x9f,0x0f,0xea,0x17,0x3a,0x88,0x16,
+ 0xf1,0xaa,0x07,0x61,0xe6,0xb4,0xad,0xb7,0x68,0xe8,0x70,0x07,0x7e,0x6b,0xa4,0xd3,
+ 0xfc,0x31,0x6f,0x61,0x24,0xf6,0x77,0xb1,0xc7,0x75,0x2c,0x92,0x09,0x0b,0x4a,0xc5,
+ 0x55,0x54,0x02,0x57,0x68,0xef,0xdb,0x35,0x1b,0x6a,0xb6,0xdb,0xae,0x3e,0xcf,0x23,
+ 0xad,0xe0,0x8c,0x31,0x07,0x80,0xdc,0xf7,0xf7,0xeb,0x58,0x57,0x9a,0xd5,0xcd,0xcc,
+ 0x83,0xed,0x2a,0xeb,0x1b,0xa1,0x50,0xc5,0xf8,0x04,0x63,0xe6,0x1e,0x86,0xa2,0x2d,
+ 0xbd,0xc7,0x66,0xec,0x96,0xe7,0x5c,0x35,0x6b,0x6f,0xb4,0xfd,0xa5,0xd1,0xe3,0x98,
+ 0x2e,0x52,0x40,0xa7,0x8c,0x00,0x36,0xe4,0xf5,0x1f,0xca,0xb9,0x0d,0x43,0x5e,0x9a,
+ 0x70,0xb6,0xd6,0x10,0x18,0xe2,0x70,0xcc,0x54,0x00,0x4a,0x8c,0xfa,0xf7,0xe7,0xf9,
+ 0xd6,0x50,0x13,0x39,0x91,0x56,0x58,0xa5,0xf2,0xd0,0xb0,0x77,0x3c,0x36,0x7f,0xaf,
+ 0x4a,0xd1,0x86,0x35,0xcd,0xbb,0x3c,0x66,0xdd,0x59,0x48,0x56,0x88,0xe3,0x67,0xf8,
+ 0x0e,0x2a,0xb6,0xb1,0x32,0x76,0x10,0x79,0x79,0xb7,0x22,0x22,0xa3,0x76,0x19,0xc7,
+ 0x6e,0x32,0x78,0xad,0x9d,0x36,0xd9,0xe7,0x0d,0xe7,0xcd,0x30,0x00,0x92,0x11,0x9c,
+ 0x8d,0xab,0xd0,0x7f,0x3e,0x95,0x4e,0x29,0xa0,0x82,0x48,0xe4,0x4f,0xde,0xc6,0x8d,
+ 0xb3,0x32,0x0e,0x65,0x38,0xe7,0x1e,0xd5,0x5e,0x4b,0x99,0x2f,0x6e,0x26,0xde,0x8f,
+ 0x1c,0x6c,0xc0,0xb9,0x88,0x10,0xff,0x00,0x40,0x3f,0xcf,0x41,0x54,0xda,0x4a,0xec,
+ 0x97,0x25,0x77,0x62,0xed,0xcd,0xec,0x5a,0x6b,0xcf,0x6b,0x68,0x3c,0xe4,0x99,0xc2,
+ 0xbc,0x6b,0x1e,0xed,0xa3,0x8c,0x12,0x3b,0x1a,0x8e,0x4d,0x46,0x4b,0x7b,0x88,0x61,
+ 0x9a,0x39,0xa6,0x8c,0x21,0x76,0x8c,0x9d,0x9b,0xc1,0x1e,0xbe,0x94,0xfd,0x3e,0xc2,
+ 0x69,0xad,0x1e,0xee,0x14,0xbc,0x59,0x4b,0x31,0x40,0xb1,0x90,0xcd,0x83,0x8c,0x32,
+ 0xd7,0xa8,0x78,0x27,0xe1,0x86,0xa3,0xae,0xde,0x5b,0xdd,0xcb,0x71,0x3c,0xd1,0xaa,
+ 0xed,0x05,0xa3,0x18,0x0b,0xdb,0x23,0xd7,0xde,0x93,0x9c,0x52,0xe6,0x93,0x45,0xc6,
+ 0x17,0x69,0x27,0xad,0xcf,0x1e,0xb7,0x5d,0x42,0xe9,0x64,0xfb,0x3d,0x92,0x4b,0xb8,
+ 0x8c,0xa8,0x3c,0xc4,0x01,0xfe,0x13,0xf4,0xeb,0x5e,0xa1,0xe0,0xbf,0x00,0x6a,0x1a,
+ 0xc4,0x52,0x35,0xee,0x85,0x85,0x59,0x03,0x19,0x6e,0x98,0xa6,0xf5,0x23,0x82,0x07,
+ 0x7e,0xb5,0xf4,0x3f,0x86,0x3e,0x12,0x68,0x9a,0x2c,0xcb,0xaa,0x5f,0x5a,0x23,0xea,
+ 0x88,0x58,0xb3,0xa8,0xdc,0xb8,0x07,0x90,0x46,0x70,0x7b,0x76,0xaf,0x58,0x58,0x61,
+ 0x78,0x9a,0x31,0x68,0x2c,0xec,0x43,0x2b,0x18,0xd8,0x1c,0x13,0xd4,0x00,0x3a,0x81,
+ 0xde,0xb8,0x6a,0xd4,0xbb,0xb4,0x7a,0x19,0xce,0x0d,0x2b,0x23,0xcd,0xbc,0x31,0xf0,
+ 0x8b,0x45,0xb3,0x4b,0xc9,0xf5,0x2d,0x3a,0x3b,0xbb,0x56,0x11,0xb4,0x05,0x80,0x5f,
+ 0xb2,0xb8,0xeb,0x8c,0x1f,0xbb,0xef,0xeb,0x5e,0xb9,0x67,0x63,0x00,0x48,0x12,0x11,
+ 0xb6,0x55,0x24,0x29,0x74,0x03,0x6f,0x61,0x83,0xe9,0xc5,0x5c,0xb3,0x37,0xa8,0xb3,
+ 0xc3,0x1c,0xa4,0x70,0x1b,0x3e,0x83,0x3d,0x3d,0xc5,0x5e,0x88,0x91,0x28,0x2d,0x1a,
+ 0xed,0x03,0xc9,0xda,0x46,0x33,0xee,0x00,0xe9,0x59,0x36,0xde,0xa9,0xff,0x00,0x5e,
+ 0x85,0xc6,0xc9,0xde,0x3f,0xd7,0xa0,0xb8,0x97,0xce,0x26,0xe0,0xa4,0x51,0x48,0xc1,
+ 0x09,0xc6,0x76,0x01,0xe9,0x8a,0x59,0x50,0xf9,0xe9,0xfb,0xa6,0x8e,0x35,0x1b,0x43,
+ 0x81,0x96,0x38,0xf7,0xa8,0x56,0x40,0xd0,0x47,0x0a,0x2c,0x92,0x66,0x4c,0xb3,0x10,
+ 0x46,0xd1,0x9e,0xc4,0xfd,0x0d,0x5e,0x51,0xe5,0xaf,0xdb,0x18,0x42,0x57,0x19,0x0a,
+ 0x09,0xc8,0x1f,0x4e,0xf4,0x6a,0x95,0xec,0x16,0xd6,0xef,0x64,0x32,0x19,0x87,0x98,
+ 0xf3,0x2b,0x8d,0xca,0xa1,0x76,0x3c,0x78,0x52,0x47,0x62,0x7f,0xad,0x6a,0x71,0x38,
+ 0x12,0x05,0x03,0xcc,0x00,0x30,0x00,0x9d,0xbe,0xa7,0x27,0xd3,0x34,0xb6,0x76,0x71,
+ 0x4b,0x03,0x79,0xd2,0xee,0x04,0x16,0x25,0x81,0x24,0x7b,0x81,0xd4,0xd3,0xe6,0x8a,
+ 0x3b,0x93,0x6e,0x6d,0x75,0x03,0x02,0xa1,0x2c,0xea,0x23,0x38,0x6c,0x7a,0x7d,0x78,
+ 0xa4,0xfb,0xbd,0xc3,0x56,0x90,0xfb,0x78,0xc8,0xf3,0x65,0x69,0xee,0x65,0x70,0x32,
+ 0x08,0x40,0xd8,0x03,0xbf,0xd3,0x8a,0xb2,0x18,0xc8,0x8a,0x77,0x95,0x66,0x19,0x06,
+ 0x38,0xf0,0x7e,0xa0,0x0e,0x29,0x63,0x89,0x23,0x64,0x6b,0x42,0xe9,0x70,0xc3,0xac,
+ 0x83,0x3b,0x7d,0x82,0xfa,0x53,0xfc,0xc9,0x62,0x46,0x04,0xa1,0x81,0x50,0x33,0x61,
+ 0x7e,0x60,0xb9,0xea,0xa3,0xf5,0xac,0x6c,0xad,0x6d,0x02,0x4e,0xda,0xbd,0x8d,0x4b,
+ 0x74,0x72,0xdf,0xba,0x26,0x49,0x62,0x19,0x0f,0x9c,0x97,0xe0,0x75,0x23,0xf9,0x54,
+ 0xe9,0x3f,0x96,0x24,0x68,0xf7,0xa4,0x6e,0x30,0xa7,0x1c,0x1f,0x50,0x4d,0x67,0xaa,
+ 0x83,0x19,0x9a,0x09,0xe4,0x5d,0x8d,0x84,0x84,0x28,0x05,0x81,0xee,0x7e,0xb5,0x6d,
+ 0x70,0x89,0x0c,0xf7,0x4e,0xbe,0x56,0xe0,0xcf,0x18,0x1c,0x37,0xf8,0x74,0xeb,0x54,
+ 0xae,0xde,0xf7,0x1b,0xd1,0xb4,0xd7,0xcc,0x58,0xee,0x66,0x95,0xfc,0x87,0x7c,0x32,
+ 0x28,0x0c,0xe4,0x7d,0xff,0x00,0x6c,0x7e,0x55,0x65,0x0a,0xf9,0x8e,0x1d,0xbe,0xd8,
+ 0x80,0x6d,0x46,0xc6,0x4a,0xf1,0xc8,0xf6,0x1c,0xd5,0x29,0x0c,0x32,0xcb,0xbe,0x68,
+ 0xbc,0x98,0x54,0x92,0xdb,0x57,0x27,0x9e,0x80,0x55,0xad,0x90,0xee,0x40,0xff,0x00,
+ 0x69,0x40,0x06,0xd0,0x43,0x61,0x4f,0xd5,0x47,0xf8,0xd4,0xe8,0xd6,0xaf,0xfe,0x09,
+ 0x31,0x7a,0x3b,0x34,0xd1,0x20,0x8d,0xbe,0xca,0x18,0x34,0xd1,0x5d,0x96,0x3b,0x42,
+ 0x63,0x2e,0x07,0xad,0x53,0x69,0xac,0x45,0xd1,0x8a,0xe6,0x63,0x3c,0xee,0xdb,0x52,
+ 0x43,0x90,0x48,0x03,0x38,0x23,0xb6,0x29,0xaa,0x91,0x34,0xf1,0xc9,0x09,0xbc,0x68,
+ 0xa2,0x20,0x2e,0xe4,0x2a,0x54,0x93,0xce,0x3d,0x47,0x5a,0xb4,0xc9,0x15,0xcb,0x19,
+ 0x77,0x5b,0x24,0x6e,0xce,0x50,0x0f,0xbc,0x47,0xb8,0xed,0xd3,0x8c,0xd3,0xbb,0x7b,
+ 0x83,0xb3,0x56,0x44,0xfb,0xdf,0x1b,0xcb,0x90,0x48,0x0b,0x19,0x07,0xe6,0x20,0xf1,
+ 0x82,0x07,0xe3,0x53,0x44,0x2d,0xe2,0x97,0x6b,0x96,0x98,0x9e,0x58,0x4a,0x84,0x80,
+ 0x71,0xd8,0xfe,0x55,0x25,0x9b,0x18,0x49,0x40,0xca,0x51,0x41,0x20,0x30,0x3f,0x37,
+ 0xf8,0xd3,0xd5,0x58,0x98,0x21,0x32,0xfe,0xf5,0xb2,0x57,0x2a,0x46,0xe2,0x79,0xe4,
+ 0xd6,0x5a,0xad,0xcd,0x6d,0xd5,0x12,0x45,0x05,0xc2,0x4a,0x9e,0x7b,0xca,0x24,0xc8,
+ 0x90,0x01,0xce,0xe5,0xf7,0xfd,0x2a,0x47,0xb6,0x92,0x69,0x59,0x2c,0xed,0xf1,0x8e,
+ 0x46,0x0e,0x00,0xf7,0x19,0xef,0xd6,0x9e,0x66,0x85,0xd2,0x4b,0x9b,0x97,0x73,0x6d,
+ 0x1a,0x9d,0x9b,0x46,0x19,0x8f,0xf5,0xad,0x08,0x6c,0xcd,0xc2,0x45,0x24,0xcd,0x21,
+ 0x02,0x30,0xf9,0x56,0x2a,0x5c,0x9f,0x51,0xed,0xcd,0x3b,0x59,0xdc,0x69,0xdd,0xe9,
+ 0xa9,0x96,0xe1,0x43,0x4f,0x0c,0x52,0x38,0x90,0x20,0x70,0xc1,0x0a,0x8e,0x9d,0x30,
+ 0x6a,0x58,0x04,0x4c,0xb1,0xf9,0x13,0x94,0x62,0xe1,0xca,0x67,0x24,0x9f,0x5c,0x1e,
+ 0xf5,0xb0,0xd1,0xac,0x0f,0x1c,0x2c,0xad,0x32,0x95,0xdd,0xb1,0x81,0xe3,0xd4,0x66,
+ 0xaa,0xc3,0x11,0x9a,0xec,0x4a,0x55,0x8c,0x4a,0x33,0x93,0xf2,0xed,0xe3,0xa6,0x3b,
+ 0xd0,0xae,0xb7,0x12,0x77,0x76,0x4f,0x52,0xd9,0x64,0x9c,0xdc,0xdc,0x46,0x85,0x7e,
+ 0x65,0x2d,0x1b,0xf5,0x93,0xdf,0x1e,0xb5,0x35,0xb4,0x8f,0xb6,0x56,0x04,0xc7,0xe6,
+ 0x86,0x50,0x1c,0x10,0x10,0x67,0xa7,0xd6,0xa0,0x33,0xc9,0x20,0x32,0x46,0x6e,0x1d,
+ 0x90,0x9c,0xb0,0x4c,0x02,0x3a,0x62,0xa2,0x86,0x49,0x64,0x64,0x96,0x26,0x26,0x31,
+ 0xc2,0xaa,0x0c,0x14,0x3e,0xa4,0x1e,0xf5,0x3d,0x3b,0x06,0xb7,0xba,0xd4,0x0a,0xcc,
+ 0xb1,0x3b,0xbc,0x52,0xb9,0x51,0xb5,0x19,0x46,0x77,0x73,0xd0,0x9f,0x4e,0x2b,0x5a,
+ 0xda,0xdb,0xcd,0x02,0x43,0x19,0x2a,0xa7,0x20,0x16,0xc6,0x78,0xe8,0x05,0x40,0x91,
+ 0x32,0xc7,0x11,0x57,0x31,0x6d,0x62,0xc5,0xbc,0xdc,0x93,0x9f,0x5f,0xd6,0xb6,0x7c,
+ 0xa0,0x86,0x38,0x87,0xde,0x03,0x71,0x75,0x5e,0x06,0x7a,0x80,0x6a,0x1b,0x57,0xb2,
+ 0x60,0xf4,0x6f,0xb6,0x83,0x1d,0x84,0x65,0x43,0xc8,0x0a,0xa9,0xf9,0x16,0x43,0x92,
+ 0x3d,0x87,0xa5,0x49,0x13,0x12,0x03,0xc3,0x1c,0x6b,0x1b,0x95,0xc1,0x27,0x1c,0x63,
+ 0x9c,0x8f,0xce,0xa7,0x68,0x8c,0x71,0x34,0x4a,0x16,0x42,0x41,0x21,0x08,0xf9,0x9f,
+ 0x8e,0xb9,0xf6,0xa6,0x44,0xa6,0xdc,0xc6,0xaf,0xe6,0x3c,0xb8,0x20,0x06,0x00,0x67,
+ 0xdc,0xd4,0xad,0x37,0x1a,0xbd,0xda,0x5b,0x0e,0x40,0x51,0x23,0x58,0x83,0x95,0x2e,
+ 0x59,0x25,0xd9,0xc0,0x18,0xe4,0x1a,0x6a,0x5a,0x5b,0xee,0x73,0x25,0xcb,0x21,0x07,
+ 0x7a,0xa4,0x40,0x8f,0x34,0xe7,0xa1,0x3e,0xde,0xd4,0xbe,0x60,0x62,0x12,0x5d,0xe6,
+ 0x47,0x24,0x04,0x50,0x76,0xa8,0x15,0x64,0x24,0x4c,0xd1,0x31,0xdf,0x34,0xaa,0x0b,
+ 0x21,0x04,0x8c,0x7d,0x07,0xa7,0x34,0xaf,0x6d,0xc4,0x9a,0x76,0x4b,0x61,0x66,0xb7,
+ 0x61,0x27,0xda,0x21,0x51,0x24,0x2c,0x32,0x11,0x46,0x08,0x6f,0x7f,0x7a,0x8e,0x18,
+ 0xaf,0x1d,0xe2,0x87,0x6a,0x99,0x08,0x3b,0x41,0xc6,0x19,0x7d,0x2b,0x46,0xdd,0x7e,
+ 0x6f,0x24,0xc8,0x50,0x48,0x01,0x5c,0x1e,0x5b,0xfd,0x9c,0x76,0xab,0xcf,0x04,0x8f,
+ 0x19,0x8f,0x6c,0xa2,0x3d,0xc4,0xb0,0x55,0xc0,0x03,0xbf,0x34,0xd7,0x92,0x06,0xf4,
+ 0xb5,0x8c,0x3b,0x98,0x5f,0xc9,0x05,0x98,0x46,0x77,0x63,0x69,0x41,0xf2,0xf1,0xd8,
+ 0xfa,0x55,0x24,0xb0,0x9a,0xe7,0xcb,0xc4,0xad,0x96,0x62,0x08,0x20,0x2b,0x37,0xb8,
+ 0x3d,0xeb,0xa9,0x96,0x03,0xe4,0x34,0x6f,0x14,0x6b,0x1b,0x2e,0xd8,0xcb,0x92,0x0f,
+ 0x5e,0x32,0x69,0x2d,0xed,0x84,0x09,0x9d,0xd2,0x48,0xe5,0x71,0x2b,0x81,0xfe,0xa9,
+ 0xc7,0x65,0xf6,0xe9,0x43,0xbb,0x57,0x46,0x4e,0xc9,0x9c,0xab,0xe9,0x91,0xa5,0xc8,
+ 0x99,0xa0,0x95,0x95,0x57,0x12,0x12,0x39,0x71,0xed,0xed,0x55,0xe7,0xb1,0x49,0x6d,
+ 0xef,0x3c,0x88,0xfc,0xc6,0xf9,0x70,0xa1,0x70,0x47,0xbe,0x3b,0x62,0xbb,0x06,0x80,
+ 0x4c,0xa1,0x56,0x59,0x95,0x88,0x3b,0x5c,0x2e,0x48,0x3e,0xf4,0xe1,0x6f,0x1c,0x4e,
+ 0xad,0x34,0xd2,0xc0,0xcc,0xbc,0xca,0x0f,0x41,0xec,0x3d,0xea,0xe3,0x7b,0x5d,0x82,
+ 0x4d,0x6a,0x70,0x56,0x3a,0x0c,0xc7,0xed,0x6c,0xd1,0xcb,0x3e,0x79,0x8d,0x33,0xd7,
+ 0xb6,0x0f,0xa7,0x4a,0xe4,0x75,0xbd,0x13,0x4f,0xb5,0x84,0x5c,0xbb,0xb3,0xba,0x80,
+ 0xa2,0x24,0x5f,0xbc,0x7b,0x86,0x35,0xed,0xf1,0x89,0x04,0x2b,0x6d,0xe4,0xc8,0x1a,
+ 0x42,0x50,0x3c,0x68,0x77,0x20,0xec,0x4f,0xe7,0x5e,0x63,0xe3,0x0b,0x35,0xb7,0xd3,
+ 0x2f,0xd9,0x10,0x5b,0xf9,0x2b,0xb8,0x31,0x7c,0xb3,0x1c,0xf7,0x1e,0xf9,0xaf,0xb6,
+ 0xe1,0x28,0x73,0xe2,0xa1,0x1b,0xea,0xdd,0x8f,0x9a,0xe2,0x1a,0xce,0x96,0x1a,0x53,
+ 0x4b,0x64,0xd9,0xf2,0xaf,0x89,0x2e,0x61,0xb9,0x9a,0x25,0x8a,0x05,0x81,0x2d,0xe4,
+ 0x25,0x63,0x50,0x06,0x38,0xe7,0x35,0xcc,0xb2,0x31,0x55,0xb9,0x1e,0x60,0x57,0x25,
+ 0x55,0x00,0xe0,0x0f,0x5c,0x56,0x97,0xdb,0x56,0x27,0x95,0xaf,0x1e,0x21,0x79,0x2b,
+ 0xef,0x78,0x99,0x0f,0xee,0xfd,0x85,0x56,0xb6,0xd8,0x43,0x34,0x2d,0x22,0x96,0xea,
+ 0x4b,0x67,0x3e,0xc3,0xd0,0x73,0x5f,0xdc,0xd9,0x75,0x38,0xd3,0xa3,0x1a,0x71,0x7a,
+ 0x24,0x7f,0x20,0xe3,0xaa,0xca,0x75,0x5d,0x49,0xbd,0x58,0xb1,0x46,0x52,0x16,0x95,
+ 0x0c,0x41,0xcf,0x47,0x55,0xc6,0x0f,0x61,0x9a,0x8f,0xfd,0x60,0x39,0x8f,0x0e,0x83,
+ 0x00,0xb3,0x60,0x63,0xb9,0x35,0x79,0x23,0x90,0x85,0x8c,0x2c,0x6a,0xca,0x4b,0xa9,
+ 0x23,0x21,0xbd,0x8d,0x56,0xc4,0x85,0x55,0xa6,0x89,0x1c,0x4c,0x19,0x98,0x29,0xca,
+ 0x81,0xe9,0x5e,0x82,0xd3,0x46,0x79,0xb7,0xd6,0xec,0xad,0x2c,0x71,0x43,0xb9,0x6e,
+ 0x5b,0xef,0x36,0xe2,0x4a,0xe7,0x77,0xbe,0x7d,0x29,0xb1,0xbf,0x97,0x2c,0xd1,0x42,
+ 0x60,0x94,0x0c,0x15,0xc8,0xe4,0x91,0xd8,0x03,0xf8,0x54,0xf2,0xc4,0xd2,0xed,0x46,
+ 0x78,0xd0,0x07,0x00,0x10,0x00,0x03,0x9e,0xf5,0x4a,0x79,0x5a,0x07,0xfb,0x43,0xca,
+ 0x7c,0xdd,0xc5,0x87,0x00,0xf7,0xe8,0x2a,0x2a,0xcd,0x25,0xa9,0xb5,0x3b,0xc9,0xd8,
+ 0xa9,0x73,0x71,0xb0,0xba,0xc7,0x19,0xf2,0xc2,0x92,0xe4,0x8e,0x5b,0x3d,0x4e,0x3b,
+ 0x0a,0xe4,0x6e,0x89,0x80,0x30,0x81,0xcc,0xae,0x18,0x2a,0xbc,0x87,0x84,0x5c,0xf2,
+ 0x6b,0x6e,0xfe,0x48,0xcc,0xb7,0x0b,0x14,0xc6,0x62,0xca,0x37,0x6e,0xc8,0x31,0x82,
+ 0x7d,0x3d,0x6b,0x9e,0x9c,0xc6,0x8c,0xd0,0x22,0xc9,0x33,0x91,0x9f,0x90,0xf2,0x4e,
+ 0x3b,0x9a,0xf2,0xab,0xe2,0x22,0xde,0x87,0xbf,0x81,0xa3,0x6e,0x86,0x14,0x92,0x49,
+ 0x34,0xf2,0x62,0xe1,0x99,0x09,0x2c,0x02,0x81,0x83,0xcf,0x51,0x51,0x35,0xd4,0x50,
+ 0xc4,0x89,0x71,0x26,0xc8,0x99,0x4b,0x02,0x14,0x6d,0x53,0xfd,0xd3,0xdf,0x9a,0x1d,
+ 0xfe,0x79,0x22,0x8d,0x23,0x24,0x10,0x36,0xa8,0xc9,0x8f,0xf1,0xf4,0xe6,0xb0,0xae,
+ 0x15,0x71,0x38,0xfb,0x9d,0x94,0x96,0xc8,0x18,0xf6,0xf4,0xed,0x5e,0x3d,0x5a,0xd6,
+ 0x7a,0x6c,0x7d,0x4d,0x0a,0x2a,0x4a,0xdd,0x0d,0xcf,0xed,0x0b,0x67,0x89,0x52,0x38,
+ 0xf6,0x4c,0x79,0x67,0x2b,0xc1,0x20,0xf6,0xa7,0x25,0xc2,0x4b,0x16,0x51,0x97,0xcb,
+ 0x2c,0x18,0x02,0x39,0x2b,0x9e,0x40,0xae,0x59,0x8e,0xc8,0xfc,0xe8,0xf2,0xcd,0x90,
+ 0x58,0x32,0x1d,0xcb,0xce,0x3f,0x2a,0xb5,0xe6,0x4b,0x1c,0x91,0xf9,0x1b,0x38,0x00,
+ 0x31,0x75,0x1f,0x2f,0x1d,0xbd,0xab,0x9d,0x57,0x77,0xd8,0xe9,0x96,0x0d,0x25,0xa1,
+ 0xd0,0x3d,0xc2,0x22,0xa3,0x79,0x42,0x71,0x9e,0x40,0x53,0x8c,0xf5,0xe7,0xf0,0xa9,
+ 0xad,0x9a,0xde,0x46,0x3e,0x74,0x72,0xec,0x60,0x64,0x20,0x92,0x18,0x8e,0xa3,0x8a,
+ 0xc3,0x17,0x8f,0xb4,0xf9,0xb2,0x61,0x49,0xc0,0x2a,0xb8,0x0a,0x7e,0x9f,0xd6,0xb5,
+ 0x61,0xb9,0x53,0x1b,0x48,0x64,0x96,0xe1,0x11,0xb0,0xca,0x0f,0xce,0x47,0xfb,0x27,
+ 0xf1,0x15,0xdb,0x4e,0x69,0xbb,0xdc,0xe4,0xa9,0x45,0xa4,0x5f,0x4f,0x2c,0xc6,0xe5,
+ 0x81,0xde,0xee,0x1d,0x57,0x39,0x2b,0xef,0x5b,0x88,0xa8,0x16,0x36,0x69,0x43,0x86,
+ 0x60,0xc5,0x81,0x3f,0x37,0x6e,0x07,0x63,0x59,0x6b,0x25,0xbf,0x99,0x6b,0xb1,0x64,
+ 0x89,0x9d,0x19,0xd8,0xe3,0x88,0xf9,0xe8,0x4d,0x6c,0xc4,0x1d,0x84,0x46,0x23,0x10,
+ 0x66,0x04,0x72,0xa4,0xee,0x39,0xee,0x7d,0x79,0xaf,0x4e,0x8e,0xbb,0x9e,0x4e,0x2a,
+ 0x4d,0x2b,0x33,0x4e,0x06,0xc4,0x9b,0x80,0x2c,0x19,0x48,0xdc,0x0f,0x2a,0x0f,0x62,
+ 0x2a,0xc4,0x7e,0x5a,0x02,0x92,0xc7,0x1c,0x51,0x2e,0x46,0x58,0x72,0x78,0xf4,0xa6,
+ 0xc1,0x6e,0xcf,0x98,0xa4,0x91,0x43,0x2a,0x86,0x63,0x8c,0x63,0xdf,0x3f,0x81,0xab,
+ 0x70,0x46,0x50,0xa7,0x96,0x18,0x2b,0x36,0x00,0x60,0x09,0x7f,0xf3,0x9a,0xf5,0x69,
+ 0xed,0xcc,0x8f,0x0e,0xac,0x92,0xd8,0x8f,0x7f,0x9b,0xb2,0x64,0x6c,0x42,0xe3,0xe4,
+ 0x52,0x0f,0xc8,0x07,0xa8,0xfc,0xaa,0x78,0xa0,0x67,0x69,0x11,0x01,0x91,0x80,0xc8,
+ 0x52,0xa7,0xe5,0x1d,0x73,0x9a,0x91,0x6d,0xe0,0x42,0xad,0x82,0x58,0x12,0xd9,0x07,
+ 0x18,0xe7,0xa0,0x14,0xf9,0x0f,0x98,0x10,0x99,0xa5,0xb7,0x42,0xc0,0x15,0x66,0xc8,
+ 0x61,0x9e,0x87,0x1d,0xeb,0xa5,0x6a,0xb4,0x38,0xe5,0x34,0xf4,0x43,0x7c,0xa8,0x58,
+ 0x2e,0xd7,0x99,0xc3,0xf3,0x80,0xd8,0xcb,0x75,0xc9,0xa1,0x11,0x5c,0x07,0x2f,0xb4,
+ 0x29,0xdb,0x21,0x23,0x18,0xe3,0xd2,0x9c,0x30,0x8a,0xec,0x77,0x37,0xca,0x43,0x48,
+ 0xbd,0xbe,0xa0,0x54,0xab,0xe5,0x2c,0x4a,0x1c,0xa8,0x4d,0xd8,0x2b,0xbb,0x39,0xcf,
+ 0xf5,0xaa,0xb5,0xcc,0x5c,0x99,0x54,0x05,0x2b,0xbc,0x33,0xc8,0xa0,0x65,0x50,0x8e,
+ 0x87,0xd4,0x9a,0x0c,0x32,0xce,0x63,0x48,0xc3,0xc5,0x32,0x92,0x4a,0xa3,0x00,0x1b,
+ 0x8e,0xbe,0xe7,0xad,0x4a,0x58,0x49,0x0b,0x34,0x78,0xda,0xac,0x15,0x8b,0x1e,0x83,
+ 0xfc,0xe6,0x9e,0xe3,0xe7,0x67,0x3b,0x63,0x40,0xdb,0x95,0x76,0xe7,0x8f,0xc3,0xf1,
+ 0xaa,0x5a,0x3b,0xfa,0x87,0x33,0x5a,0x91,0xac,0x03,0xcc,0x01,0x63,0x81,0xa4,0x75,
+ 0x19,0x3e,0x84,0x7b,0x74,0xcf,0x4a,0x8e,0x34,0x76,0x94,0x01,0x12,0xec,0x04,0xe0,
+ 0x8c,0x02,0xc3,0xb8,0x14,0xbb,0xa3,0x2e,0x5e,0x34,0x96,0x58,0x40,0xc9,0x20,0x60,
+ 0xa8,0xf5,0xc5,0x3d,0x18,0x7c,0x87,0x63,0xa3,0x02,0x19,0x0a,0x9e,0xb9,0x1e,0xff,
+ 0x00,0x5a,0x2d,0x6d,0x3a,0x8d,0xb7,0xd4,0x8a,0xe0,0x19,0x9a,0x1c,0x08,0xe2,0x65,
+ 0x24,0x92,0x17,0xee,0xaf,0xa6,0x3b,0x9e,0xb4,0x60,0x22,0xbb,0x4c,0xa8,0xc0,0x80,
+ 0x76,0x97,0x3c,0x0e,0xdc,0xfa,0xd5,0x97,0xb9,0x56,0x05,0x4b,0x15,0x0a,0xd9,0x6d,
+ 0xcb,0x8c,0x1f,0x4c,0xfb,0xd0,0x52,0x20,0xa1,0x23,0x5f,0x33,0x7f,0x24,0x8e,0x8a,
+ 0x7a,0xf1,0x50,0xed,0x60,0xe6,0x76,0x49,0x95,0x11,0x4f,0x9f,0xbc,0x46,0xe0,0x9c,
+ 0xb3,0x33,0x72,0x00,0x23,0xa6,0x2a,0x48,0x95,0x84,0x2b,0x95,0x2c,0x81,0x98,0x30,
+ 0xc7,0x1c,0x74,0x6c,0x55,0x81,0x39,0x28,0xc2,0x28,0xd9,0xca,0x7c,0xae,0x49,0x23,
+ 0x03,0xfb,0xc7,0xf3,0xa6,0x48,0x91,0xed,0x63,0x0c,0xa5,0xa0,0x27,0x6a,0x93,0xfc,
+ 0x27,0xbf,0xe7,0x4f,0x96,0xca,0xe0,0xe4,0xdb,0xd4,0xaf,0x3a,0xb9,0x91,0x8c,0x6e,
+ 0x25,0x84,0xf2,0x59,0x46,0x02,0x8f,0x42,0x29,0xca,0xaf,0x1a,0x2c,0x0c,0x18,0xf3,
+ 0xf3,0x33,0x8c,0xe5,0x7d,0xaa,0x79,0x3f,0xe5,0xbd,0xc3,0xa1,0x57,0x2a,0x0e,0xc8,
+ 0xc8,0xda,0x38,0xc0,0xcf,0xbd,0x43,0x8f,0x2d,0x08,0x4f,0x94,0x90,0x36,0x86,0x27,
+ 0x29,0x9e,0xd9,0xac,0x5a,0x6b,0x46,0x3e,0x66,0xd5,0x81,0xd8,0x9d,0xb1,0xab,0x80,
+ 0xaa,0x70,0x48,0x51,0x93,0xef,0x50,0x94,0x32,0xb5,0xc3,0x86,0x45,0x8c,0x31,0x08,
+ 0xb9,0x3d,0x31,0x4a,0xdb,0x64,0x91,0x4f,0x98,0xe8,0x89,0xc1,0xe7,0x2c,0xc7,0x1d,
+ 0xcf,0xa7,0xf8,0xd4,0xd2,0x33,0x81,0x2b,0x31,0x8c,0x60,0x85,0x52,0x46,0xde,0x4f,
+ 0xa6,0x2a,0x24,0xb4,0xb0,0xd6,0x9b,0x10,0xbe,0xd4,0x89,0x26,0x21,0x5e,0x3c,0x6d,
+ 0x27,0xae,0x46,0x31,0xd2,0x9e,0x21,0x8e,0x48,0xd1,0x58,0xfe,0xf0,0x49,0x94,0x60,
+ 0x00,0x18,0xc7,0x43,0xf9,0xd4,0x65,0xe4,0x85,0xdc,0x3a,0x3b,0x28,0x20,0x31,0x55,
+ 0xeb,0xcd,0x58,0x78,0xe4,0xd8,0x89,0x16,0xd3,0x03,0x12,0x49,0x51,0xca,0x9c,0xfa,
+ 0xd4,0xc9,0x36,0x92,0x29,0xbb,0x34,0x54,0x71,0x1f,0x99,0x20,0x50,0x59,0xd0,0x82,
+ 0x1b,0x04,0xee,0xf5,0x18,0xfc,0x2a,0x10,0x8c,0xd8,0x71,0x1b,0x27,0x19,0x55,0x00,
+ 0x63,0x6f,0xf9,0x35,0x61,0xd8,0xab,0xf9,0x3b,0x40,0x51,0xc8,0x7d,0xc7,0x0d,0xfe,
+ 0xce,0x7f,0x2a,0x4f,0xb3,0xa4,0x99,0x0d,0x33,0xab,0xa0,0xda,0x06,0xe1,0x84,0xff,
+ 0x00,0x1a,0xe5,0x95,0xbe,0x24,0x6a,0x9e,0x80,0xa9,0x84,0x90,0x4a,0x16,0x04,0x58,
+ 0x7c,0xc0,0xe4,0x83,0xb3,0x27,0xb5,0x42,0xc1,0xc8,0xc3,0x32,0xe7,0xd8,0x0f,0x9b,
+ 0x8f,0x4f,0xeb,0x53,0x15,0x9a,0x2f,0x2d,0x8c,0x42,0x58,0x9b,0x81,0x23,0x01,0xf3,
+ 0x63,0xb6,0x3d,0x2a,0x32,0xeb,0x87,0x7d,0x87,0x7b,0x0c,0x12,0x4e,0x00,0xe7,0xa0,
+ 0xa9,0xa8,0x92,0xdc,0xa8,0xbb,0xbd,0x08,0x27,0x8c,0x7e,0xed,0x80,0xf3,0x10,0xaf,
+ 0x00,0x8f,0x9b,0x77,0xa5,0x66,0xc5,0x2c,0x57,0x38,0x00,0xc6,0xcc,0x8f,0x90,0x54,
+ 0x8c,0x9f,0x62,0x2b,0x42,0xee,0x45,0xf2,0xb6,0x3c,0x92,0x44,0x8a,0x01,0x2a,0xa4,
+ 0x9d,0xa7,0x3f,0xc2,0x7f,0x0a,0xa5,0xa6,0x23,0xb5,0xc8,0x22,0x05,0x46,0x70,0x5c,
+ 0x30,0x00,0x17,0x6f,0x56,0x3d,0xb1,0x5f,0x95,0xf8,0x93,0x8f,0x86,0x1f,0x01,0x39,
+ 0xc9,0xea,0x8f,0xd2,0xbc,0x34,0xcb,0xe5,0x8a,0xcc,0xa1,0x4f,0xa7,0x52,0xc2,0x16,
+ 0x17,0xc5,0xe0,0x3b,0xae,0x18,0xec,0x74,0x2b,0x8d,0xe7,0xb0,0xc7,0x4c,0x57,0x98,
+ 0x7c,0x50,0x96,0x08,0x73,0x69,0x3a,0xf9,0xa4,0x7f,0xad,0x68,0xdb,0x25,0x1b,0x1f,
+ 0x70,0x11,0xdb,0x91,0x5e,0xb2,0xb7,0x71,0xda,0xcb,0x3c,0xf7,0x8c,0x2d,0x22,0x45,
+ 0x20,0x3b,0x60,0x2b,0x49,0x8e,0x09,0x3f,0x95,0x7c,0xa7,0xe3,0x1d,0x5a,0xea,0xeb,
+ 0x5b,0xd4,0xb4,0xf9,0x5a,0x4d,0xe6,0x40,0x23,0x9d,0x48,0x29,0x23,0x60,0x1c,0x81,
+ 0xd3,0xd6,0xbf,0x88,0x70,0x3f,0xbd,0xae,0xe6,0xdf,0x99,0xfd,0xc9,0x99,0x35,0x47,
+ 0x0c,0xa9,0xbd,0xb6,0x38,0x0f,0x3a,0x25,0x92,0x65,0x89,0x84,0xea,0xcf,0xb9,0x5d,
+ 0xc1,0x04,0x2f,0xf7,0x4f,0xd2,0x89,0x1e,0x36,0x45,0xde,0xce,0x54,0x13,0x93,0x8e,
+ 0x57,0xdb,0x3e,0x9c,0xd4,0xb3,0xc3,0x1e,0x43,0x2c,0x2d,0x14,0xe3,0x3b,0xc1,0x38,
+ 0xc8,0x3d,0x0f,0xf3,0xa8,0x4c,0x22,0x38,0x1c,0x12,0x77,0x13,0xb4,0x64,0x7d,0xff,
+ 0x00,0x6c,0xfb,0x57,0xd2,0xd9,0x2b,0x24,0x7c,0x17,0xc2,0xec,0x3c,0xcd,0x24,0x61,
+ 0x24,0xb7,0xb7,0x4f,0x38,0x9c,0x00,0xdd,0x09,0xed,0x9a,0xa0,0x3c,0xd0,0x5b,0xcd,
+ 0x55,0x0e,0x41,0x06,0x35,0xfb,0xbf,0x85,0x58,0x69,0x23,0x58,0x41,0x7b,0x96,0xde,
+ 0xaa,0x40,0x56,0xec,0xa7,0xd0,0xfa,0xe6,0xa1,0x82,0x21,0x6d,0x08,0x66,0x7b,0xab,
+ 0xc0,0x48,0x90,0x4e,0xe7,0xe6,0x45,0xc6,0x36,0xf3,0xef,0x8a,0x13,0x56,0x2a,0x4d,
+ 0xdc,0x8a,0x72,0xc1,0xbc,0xc0,0x16,0x67,0x11,0x80,0x14,0x0c,0x79,0x7e,0xe4,0xd5,
+ 0x95,0x99,0x15,0x00,0x86,0x35,0x91,0xdc,0xe2,0x32,0x0f,0x04,0xf7,0xa6,0xec,0x01,
+ 0xd5,0x54,0xb1,0x04,0x16,0xce,0x0f,0x4f,0xf6,0xaa,0x05,0x22,0x68,0xce,0xd8,0xde,
+ 0x68,0xce,0x43,0x32,0x1c,0x6d,0x1e,0xdf,0xe3,0x55,0xa6,0xc4,0x4a,0xe9,0xde,0xe6,
+ 0x94,0x91,0xf0,0x24,0x90,0xbb,0x31,0x5d,0xcd,0xb4,0x63,0x77,0xae,0x69,0x77,0xa1,
+ 0xfb,0x0c,0x91,0xbf,0x93,0x21,0x7d,0x9b,0x31,0x93,0x27,0xb0,0xa8,0x7f,0xd1,0xe2,
+ 0x8a,0x01,0xbd,0xd6,0xe4,0x00,0x42,0x64,0x9c,0x8f,0x73,0x52,0xdb,0x30,0x56,0xdf,
+ 0x11,0x67,0x85,0x8e,0x63,0x95,0x9b,0x07,0x77,0x5e,0x3d,0x29,0xe9,0xbb,0x33,0x6d,
+ 0x26,0xd2,0x64,0x87,0xc9,0x32,0xc9,0x07,0xce,0x42,0xbe,0x11,0x40,0xc6,0x70,0x7f,
+ 0x8b,0xd3,0xbd,0x3a,0x1f,0x35,0x65,0x3e,0x6e,0x50,0x6f,0x3b,0x4a,0x81,0xc7,0xa0,
+ 0x02,0x9b,0x29,0xb9,0x31,0xc9,0x00,0x78,0x83,0x74,0x46,0x50,0x01,0x1f,0x5c,0xd4,
+ 0x51,0x4b,0x22,0x85,0xb3,0x04,0x24,0x9b,0x77,0x49,0x23,0x0f,0xbb,0xeb,0xc9,0xa4,
+ 0xae,0xd6,0xa3,0x4e,0xd2,0x44,0x97,0x11,0x5c,0x16,0x7b,0x8f,0x2b,0xe4,0x38,0x65,
+ 0x2c,0xf9,0x04,0x7a,0x11,0xeb,0xcd,0x3d,0x67,0xb7,0x51,0xe6,0x0c,0x25,0xa1,0x3b,
+ 0xd9,0x19,0x39,0xdc,0x3f,0xfd,0x54,0xe4,0x8e,0xcc,0x25,0xb7,0x94,0x26,0xf2,0xcb,
+ 0x13,0xb9,0xd8,0x92,0x4f,0xb0,0x35,0x04,0xb2,0x49,0x88,0x0c,0x33,0x08,0x95,0x9c,
+ 0xa1,0xca,0x83,0x90,0x7b,0x1f,0xd6,0xb2,0xde,0xe9,0x93,0x76,0x95,0xdd,0xae,0x68,
+ 0xb5,0xea,0xcc,0x24,0x36,0xf0,0xc7,0x24,0x45,0x43,0xc8,0xa4,0x6d,0xe3,0xb1,0xaa,
+ 0xd2,0x9d,0xf7,0x2c,0xd8,0x2c,0x5d,0x41,0x85,0x40,0x23,0xaf,0x50,0x05,0x2c,0x51,
+ 0x96,0x6d,0xf1,0x2a,0x2f,0x99,0xf2,0x8c,0x31,0x6d,0xd8,0xed,0xed,0x4d,0x8e,0x06,
+ 0x2d,0x6f,0x1a,0xbc,0x92,0x30,0x39,0x0e,0x3f,0x80,0x0e,0xe6,0xa5,0xd9,0xbb,0x83,
+ 0xba,0x63,0xe1,0x46,0x69,0xe5,0x9a,0x78,0xda,0x06,0x0c,0x32,0x8a,0x32,0x08,0xe9,
+ 0x91,0xed,0x56,0xad,0x63,0x94,0xf9,0xb3,0xc6,0x72,0x44,0xa0,0x81,0x90,0x0b,0x0a,
+ 0x7a,0xa4,0x39,0x96,0x45,0x99,0xb6,0xc8,0x32,0x58,0x2f,0xe8,0x7d,0x0d,0x48,0xf0,
+ 0xa6,0x03,0x16,0x22,0x00,0x01,0x27,0x6f,0x47,0xec,0x09,0xfc,0xeb,0x16,0xd0,0xd7,
+ 0x46,0x87,0xfd,0x94,0x47,0x6f,0x77,0x71,0x1c,0x91,0xc5,0xe6,0xb6,0xf5,0x8d,0xdc,
+ 0xb1,0x42,0x0e,0x2a,0x78,0x62,0x90,0x96,0x86,0xed,0x0a,0x66,0x3f,0x33,0x70,0x18,
+ 0xe9,0xd0,0xd4,0x42,0xce,0xea,0x5b,0x81,0x31,0x36,0xf3,0xdb,0xc6,0x40,0x08,0x10,
+ 0x92,0xe7,0xdc,0xf3,0xc5,0x74,0x32,0x24,0x89,0x14,0x6d,0x24,0x61,0xe7,0x41,0xe5,
+ 0xa3,0x60,0x00,0xd9,0xf5,0x03,0xb8,0xcd,0x28,0xdd,0x26,0x9e,0xac,0xcd,0xeb,0xae,
+ 0xc6,0x65,0xba,0x5b,0x42,0x19,0x9a,0x44,0x46,0x72,0x24,0x91,0x51,0x72,0x1d,0x80,
+ 0xe9,0xc7,0x4c,0x8a,0xd9,0x8a,0xd9,0xa4,0x32,0x4e,0xb1,0x85,0x24,0xee,0x11,0x81,
+ 0x80,0xca,0x7a,0xfc,0xdd,0xa9,0x91,0x59,0x5c,0xc9,0x3d,0xb0,0xb4,0x16,0xf1,0x95,
+ 0x04,0xc9,0x1c,0x83,0xa9,0xf5,0x1f,0xe1,0x5b,0x16,0xb1,0x5c,0x25,0xb8,0xb6,0x95,
+ 0x5c,0xc6,0x37,0x10,0x50,0x83,0x93,0x9e,0xa6,0xa9,0x35,0xab,0x47,0x3c,0x93,0x7d,
+ 0x35,0x26,0x8e,0xdd,0x21,0x87,0xcb,0x57,0xdd,0xe6,0x2e,0x47,0x6d,0xbe,0xd9,0xfc,
+ 0xaa,0xe4,0x20,0x45,0x6d,0x6b,0x04,0xa5,0xa7,0xdb,0xd4,0xe0,0x1c,0x8c,0xf0,0x29,
+ 0x0a,0x04,0x31,0xc3,0x02,0x03,0x0a,0xae,0xec,0x93,0xf7,0x8e,0x2a,0x78,0x36,0x2b,
+ 0x2a,0xc4,0xb9,0x68,0xc7,0xcc,0x48,0xe7,0xf2,0xad,0xe3,0xbe,0xda,0x09,0x6a,0x4e,
+ 0xd6,0xf2,0xc7,0xf6,0x97,0xf3,0x67,0x95,0x37,0xe6,0x31,0x8c,0x28,0xc8,0xe9,0x8a,
+ 0xa3,0x26,0xc6,0x50,0xcf,0x1c,0xa1,0x49,0xce,0xd2,0x00,0x0b,0xee,0x6a,0xca,0xc9,
+ 0x21,0x25,0x8b,0x48,0xc1,0x38,0x40,0x73,0xb4,0x9a,0x89,0xd9,0x8a,0xe2,0x48,0x56,
+ 0x71,0x8e,0x65,0x63,0x85,0x1e,0xbc,0x56,0x91,0xb5,0xcc,0x56,0xd6,0x65,0x6f,0xdc,
+ 0x90,0x92,0xa2,0x9d,0xbb,0xb1,0xf2,0x9f,0xbc,0x3d,0x45,0x4a,0x84,0xc6,0xca,0xfb,
+ 0x0a,0xa9,0x6c,0x90,0xe3,0x9f,0x4e,0x0f,0xe5,0x40,0xb3,0x44,0x75,0x96,0x39,0xd9,
+ 0x6d,0x99,0x37,0x15,0x23,0x2a,0xa4,0x0e,0xd5,0x2b,0xda,0x99,0x00,0x43,0x77,0xbc,
+ 0xb0,0xcb,0x48,0xc0,0xe7,0x23,0xa0,0x51,0xd3,0x15,0xa2,0x5d,0xcd,0x55,0xd2,0xd4,
+ 0xaa,0x65,0x96,0x4b,0xbd,0x87,0x60,0x66,0xf9,0x40,0x04,0x0c,0x83,0xdf,0x35,0x78,
+ 0x40,0xbc,0x34,0xcd,0x1c,0x4e,0xa7,0x6a,0x92,0x79,0x23,0xfd,0x91,0xf8,0x0a,0xb1,
+ 0x65,0x60,0x8d,0x12,0x4e,0xb1,0xfc,0xce,0xa0,0xab,0x33,0x0c,0x9e,0x7a,0x81,0xf8,
+ 0x1a,0x97,0xec,0xd1,0x97,0x71,0x00,0x69,0x25,0x2b,0x97,0x66,0x03,0x93,0xeb,0x9e,
+ 0xdd,0x2a,0xd4,0x93,0x76,0x44,0x36,0xd9,0x5b,0x2e,0xe9,0x03,0xba,0x94,0x50,0x48,
+ 0xc2,0x8e,0x01,0x3e,0xa7,0xd6,0x9d,0x1a,0xa2,0xc5,0x2b,0x06,0x59,0x58,0x0c,0x15,
+ 0x61,0xc9,0x3f,0xec,0x9e,0xd4,0xcb,0x99,0x26,0xb5,0x8c,0xab,0x8f,0xdc,0xed,0x0f,
+ 0x21,0x2f,0xf2,0x9f,0xfe,0xbd,0x62,0x0d,0x59,0x27,0x45,0x9d,0x10,0xa9,0x04,0x90,
+ 0x58,0xf2,0x4f,0x6a,0x7d,0x35,0x13,0x76,0x76,0x7b,0x97,0x67,0x76,0xdc,0x54,0xc8,
+ 0x64,0x98,0x00,0x00,0x03,0x38,0xf5,0xe3,0xbd,0x50,0xbb,0xba,0xf2,0x24,0xde,0x44,
+ 0x91,0xae,0x15,0x91,0x82,0x74,0x3d,0xc0,0xa8,0x2e,0x59,0xed,0xdd,0xa5,0x0c,0x8c,
+ 0x76,0x83,0x80,0x4e,0x14,0xd6,0x65,0xce,0xa8,0x24,0x84,0xc9,0x24,0xed,0x3b,0x29,
+ 0x04,0xa2,0x13,0x83,0x83,0xcf,0xe1,0x59,0x37,0x61,0x68,0x9e,0xba,0x15,0xaf,0x35,
+ 0x49,0xe7,0xf3,0xad,0xde,0x36,0x85,0x96,0x5d,0xcc,0xcc,0x06,0x5c,0x1c,0x72,0x3d,
+ 0xbe,0xb5,0x89,0x71,0xe7,0xa3,0x98,0x5a,0x7d,0xca,0x49,0x25,0x88,0x00,0x01,0xe8,
+ 0x00,0xa7,0xdc,0xcb,0x25,0xc3,0x17,0x57,0x31,0xa1,0x6d,0xfb,0x1b,0xab,0x8e,0xc0,
+ 0x54,0x11,0xb1,0x11,0x83,0xfe,0xa7,0x73,0x6d,0x55,0x24,0x1d,0xbd,0xf1,0x49,0x34,
+ 0xb5,0x63,0xd5,0xbd,0x0a,0xf7,0x11,0xc2,0x8a,0xd2,0x4d,0xfb,0xb9,0xe4,0x1b,0x30,
+ 0x0e,0x03,0x7a,0x60,0x76,0x3c,0xd4,0x12,0xc0,0x8b,0x34,0x68,0xfe,0x6e,0x59,0x44,
+ 0x8c,0xb1,0x9c,0x83,0x8e,0xa3,0x77,0x6a,0xb3,0x33,0x29,0x02,0x25,0x73,0xb8,0x36,
+ 0xe7,0x2c,0xbf,0x78,0x7a,0xe4,0xfd,0x2a,0xb0,0x8c,0x80,0x17,0xf7,0x92,0x31,0x7c,
+ 0x17,0x5c,0x7c,0xc0,0xf4,0x18,0xed,0x4e,0xcb,0x4b,0x6e,0x68,0xec,0xba,0x12,0x44,
+ 0xc9,0x00,0x9e,0x45,0x66,0x50,0xf2,0x86,0xda,0xa4,0x10,0xa0,0xf6,0x04,0xfa,0xd2,
+ 0xbc,0x49,0x83,0x22,0x4d,0x80,0x5f,0x6c,0x79,0x6c,0x10,0x3b,0x91,0xed,0xd6,0x96,
+ 0x3f,0x2a,0x25,0x4f,0x2d,0x8a,0x80,0xdb,0x55,0x58,0x70,0x4e,0x3a,0x91,0xe9,0xcd,
+ 0x32,0x68,0xf6,0x42,0x1b,0xf7,0x7d,0x76,0xb1,0xc1,0x25,0x89,0xa5,0xb3,0xb0,0x35,
+ 0xa6,0xa5,0x84,0x0d,0x75,0x23,0x24,0x92,0xb4,0xa4,0x28,0x25,0x98,0x6d,0x04,0x8e,
+ 0xc7,0xd6,0xa3,0xf3,0x21,0x91,0xd1,0x04,0xc2,0x1b,0x86,0x23,0x2c,0x46,0x01,0xfa,
+ 0x0f,0x4e,0xb4,0x05,0xf3,0xad,0xed,0x5a,0x45,0x24,0x97,0xf9,0x40,0x6c,0x63,0x1d,
+ 0xf1,0x53,0x00,0x26,0x12,0x6d,0x30,0xc8,0x8a,0x31,0xf3,0x2f,0xdc,0xfa,0x1e,0xf9,
+ 0xc0,0xa1,0x19,0xbd,0x75,0xe8,0x4f,0x04,0x32,0x36,0xd6,0xb8,0x48,0x8d,0xb8,0x62,
+ 0x7c,0xc6,0x07,0x73,0x0c,0xf4,0xcd,0x58,0xdb,0xf6,0x89,0x54,0x5a,0xc7,0x21,0xf3,
+ 0x01,0x91,0x83,0x11,0x94,0x3d,0x87,0xd6,0xaa,0x2d,0xd2,0x98,0xbe,0xfe,0x55,0x53,
+ 0x74,0x7b,0xf3,0x8c,0x77,0x03,0xde,0xb4,0xa1,0xd4,0xa3,0x96,0xd5,0x25,0x68,0xe2,
+ 0x32,0xf9,0x7e,0x66,0xd5,0xf9,0x5f,0x3d,0x32,0x69,0x5f,0xaa,0x07,0xb5,0xd3,0x32,
+ 0x27,0x8d,0x96,0x1d,0x8a,0xac,0x8c,0x55,0x89,0x62,0x37,0x64,0x7f,0x43,0x59,0xd6,
+ 0xec,0x9b,0x06,0x0c,0x9f,0x3b,0x01,0xe6,0xe7,0x86,0xcf,0x18,0xc7,0xb5,0x5f,0x92,
+ 0xe6,0x43,0x12,0x3d,0xbb,0xb4,0x77,0x04,0x12,0xa0,0x10,0x46,0xd2,0x3a,0xe3,0xe9,
+ 0x9a,0xaf,0x10,0x84,0x79,0x51,0x43,0x2e,0xe6,0x61,0xe6,0x04,0xce,0x00,0x03,0xad,
+ 0x36,0xf5,0x6e,0xc4,0xea,0xf4,0x8f,0x62,0xb5,0xca,0xc8,0xf6,0xe2,0xe1,0x23,0x99,
+ 0xd9,0x72,0xb3,0x39,0x38,0xf2,0xc0,0x3d,0x73,0xef,0x53,0x79,0x93,0x1f,0x20,0x6e,
+ 0x06,0x39,0x41,0x20,0x85,0xce,0x17,0xdc,0xf5,0xcf,0x02,0x97,0xe5,0x25,0x21,0x45,
+ 0x61,0x10,0x70,0xcc,0x15,0xb2,0xa7,0xda,0xa6,0x89,0x03,0x3b,0x48,0x91,0xca,0x96,
+ 0xc8,0x4a,0xa6,0xf6,0xe5,0xce,0x3a,0x00,0x3a,0x51,0x7b,0x59,0x31,0xb6,0x9b,0xd3,
+ 0xcb,0xfe,0x09,0x55,0xa6,0xb5,0x99,0xe3,0x8b,0x63,0x6c,0xdd,0x96,0x2a,0x39,0x60,
+ 0x07,0x7c,0x74,0xef,0x42,0x08,0x19,0x03,0xa3,0xcf,0xb0,0x92,0xc0,0xc8,0x3a,0x7d,
+ 0x6a,0x41,0x33,0x47,0x34,0x51,0xc7,0x69,0x6c,0x9b,0xc1,0x62,0xca,0xdd,0x0e,0x3b,
+ 0xfb,0xd4,0x6a,0x7f,0x73,0xe6,0x4d,0x91,0x2b,0x36,0x0e,0x07,0xde,0xc7,0x6c,0x76,
+ 0xa3,0x44,0x0e,0xca,0xf7,0xb0,0xa5,0xa2,0x59,0x63,0x97,0xcd,0x56,0x97,0x70,0xca,
+ 0xa9,0xe5,0x97,0xdf,0xf2,0xa6,0xee,0x8a,0x58,0xc3,0x09,0x95,0x22,0x47,0xdc,0x14,
+ 0x75,0x45,0x27,0xaf,0xbd,0x24,0x5f,0xe9,0x12,0xf9,0x8f,0x6d,0x10,0x86,0x3c,0xb6,
+ 0xd5,0x60,0x0b,0x9f,0x5c,0xfe,0x26,0x88,0x08,0x75,0x69,0xd1,0x4f,0x96,0xe4,0x01,
+ 0x12,0xae,0x72,0x33,0xcf,0x26,0x85,0x65,0xa2,0x0d,0x5a,0x4a,0xfa,0x0f,0x0e,0x67,
+ 0xca,0x98,0x88,0x55,0x18,0x32,0x84,0xf9,0x40,0xf4,0x35,0x3a,0x3d,0xc2,0x4b,0x0c,
+ 0x51,0x24,0x72,0x92,0xa4,0xe7,0x83,0xb4,0x7a,0x81,0x50,0x2a,0x48,0xb1,0xcf,0x09,
+ 0x69,0x56,0xdd,0xa4,0xca,0x8c,0xf2,0xfc,0x74,0x2c,0x3a,0x63,0xf2,0xa6,0x6d,0x90,
+ 0x48,0xd2,0x24,0x8e,0xee,0x06,0xc6,0xca,0xf5,0x1f,0xe3,0x43,0xba,0xd1,0x82,0xbb,
+ 0xd5,0xad,0x42,0xe5,0x25,0x26,0x2b,0x79,0xa4,0x67,0x0c,0x0b,0x87,0x2a,0x42,0x8c,
+ 0x7f,0x08,0x35,0x2d,0xb7,0x9a,0x11,0x67,0x55,0x65,0x50,0xe5,0x52,0x22,0xbb,0xb2,
+ 0xb5,0x18,0x68,0x67,0x5f,0x29,0x9d,0xd8,0xc4,0xc4,0x22,0xb1,0xc0,0x43,0xf4,0xa7,
+ 0x20,0x94,0x22,0xb9,0x93,0x64,0x4e,0x76,0x07,0xdb,0x90,0x00,0xe3,0xad,0x0f,0x55,
+ 0xa0,0x2b,0x37,0x74,0xf4,0x1a,0xac,0xc7,0x6b,0x66,0xdd,0x4a,0x92,0xc5,0x72,0x73,
+ 0xf4,0xc5,0x43,0x2c,0x8a,0xec,0xd2,0x59,0xa8,0x90,0x13,0x87,0x3b,0x49,0x23,0xe9,
+ 0x57,0x66,0x60,0x21,0x40,0x22,0x57,0xc0,0xc0,0x75,0x19,0x2d,0xcf,0x4f,0xfe,0xbd,
+ 0x54,0x8d,0x02,0x4a,0x90,0x81,0x24,0x40,0xb6,0xd0,0x43,0x60,0x0c,0xff,0x00,0x78,
+ 0x51,0xe6,0x0d,0xbb,0xea,0x2a,0x79,0x5b,0xf0,0xd2,0x63,0xe5,0x23,0x68,0x1f,0x77,
+ 0xdb,0x8f,0xad,0x35,0x83,0x11,0x94,0x94,0x21,0x1f,0x38,0x0e,0xd8,0x0a,0x71,0x8e,
+ 0x2a,0x49,0xad,0xe3,0x90,0xbc,0x0b,0xb8,0xa2,0xf0,0xa5,0x49,0x39,0x6f,0x7f,0x5a,
+ 0x8e,0x50,0xd2,0x24,0x47,0x70,0xf3,0x46,0x3e,0x52,0xbf,0x73,0x07,0xa0,0xa5,0x16,
+ 0xba,0xb0,0x6b,0xb8,0xf8,0x98,0x22,0xc1,0xe5,0x4a,0x53,0x19,0x66,0x7c,0xf4,0x3d,
+ 0xf2,0x69,0x81,0xcc,0xb1,0xef,0x52,0x24,0x99,0xdc,0xa2,0xaf,0x96,0x09,0x41,0xea,
+ 0x4f,0xe7,0x4f,0x13,0x2a,0x48,0x87,0xf7,0x8c,0xa7,0x90,0xaa,0xb9,0xc3,0x51,0x13,
+ 0x3b,0x4d,0x0a,0x3e,0xc3,0x2b,0x6e,0x24,0x2f,0x46,0xfa,0x0e,0xd4,0xfa,0x05,0xde,
+ 0x8d,0xbb,0xa0,0x49,0x62,0x8d,0xcc,0x6a,0x90,0xbc,0xc9,0xd3,0x04,0xfe,0xf3,0xd7,
+ 0x1e,0x94,0x4b,0x22,0xf9,0x6b,0x13,0xac,0x29,0x83,0xe6,0x7c,0xc3,0x87,0x27,0x1d,
+ 0x08,0xeb,0xd4,0xd5,0xd8,0x96,0xdd,0x81,0xda,0xe8,0xcc,0x48,0x09,0x18,0xfb,0xdd,
+ 0x7b,0xd5,0x18,0xe0,0x7b,0x48,0xe3,0x0a,0x0b,0x2a,0xb9,0xc0,0x00,0x12,0xbc,0xf4,
+ 0xcd,0x1a,0x27,0xa8,0x3b,0xa5,0x77,0xb0,0xfc,0x19,0x21,0xf3,0x87,0x33,0x3b,0x95,
+ 0x64,0x03,0x05,0x31,0xfe,0x35,0x18,0x68,0xe2,0x94,0xcd,0x02,0xc1,0x24,0x85,0x72,
+ 0xc4,0xb1,0xc6,0x07,0x40,0x3d,0xf9,0xa7,0xae,0x6d,0xf6,0x3e,0xff,0x00,0xb1,0x93,
+ 0x23,0x79,0x8b,0x27,0x40,0x71,0xc6,0x33,0x51,0xac,0x62,0x40,0xee,0x8a,0x81,0x1a,
+ 0x5c,0x82,0xca,0x40,0x63,0x8e,0x83,0xf2,0xa2,0xf6,0xdc,0x7a,0xb7,0x74,0x04,0x87,
+ 0x59,0xca,0xf9,0x6b,0x38,0x01,0xca,0xbb,0x1e,0x7d,0x87,0xbd,0x33,0x31,0xca,0xed,
+ 0xbe,0x31,0x80,0xca,0x3e,0x62,0x78,0x24,0xe3,0x9f,0x5a,0x4d,0x81,0x5c,0x16,0x10,
+ 0xa0,0x20,0x86,0x2a,0x09,0x1b,0xb3,0xd6,0x9d,0xc3,0xb4,0x78,0x54,0x13,0x28,0x20,
+ 0x85,0xcf,0x3f,0x53,0x4d,0xe9,0xb0,0xae,0xd2,0xbb,0x7a,0x93,0x4b,0x1e,0x47,0x98,
+ 0x8c,0xab,0x29,0x7d,0xa4,0xf6,0x2b,0xeb,0x9f,0x4f,0xc2,0x95,0x76,0x79,0xf1,0xaa,
+ 0x31,0x85,0x50,0xe0,0xab,0xa0,0xc1,0xf7,0x07,0xf3,0xa8,0x50,0x18,0x03,0x34,0xea,
+ 0x64,0x79,0x86,0x54,0x80,0x48,0x5e,0x7a,0x8a,0x7a,0xb2,0x42,0xb1,0x79,0xe4,0xf0,
+ 0x09,0x60,0x72,0xd9,0xe3,0xb1,0xa2,0xcf,0xa0,0x24,0xaf,0x76,0x58,0xdc,0xab,0x23,
+ 0xe0,0x91,0x19,0x24,0xb2,0xed,0xc6,0x38,0xe2,0xaa,0x47,0x13,0xc5,0x14,0x09,0x22,
+ 0x89,0x26,0x29,0xf3,0x80,0x33,0x95,0xce,0x79,0xa1,0x5c,0xcd,0x13,0xee,0x8c,0x24,
+ 0x81,0x49,0x76,0x66,0xe0,0x7d,0x29,0x76,0xc8,0xe2,0x19,0x63,0x18,0x91,0x87,0xc8,
+ 0x08,0xe4,0xfa,0x81,0x49,0x3b,0x0f,0x56,0xee,0xf6,0x0f,0x2f,0xcf,0xd9,0xe5,0xbc};
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/M5Stack.ino b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/M5Stack.ino
new file mode 100644
index 000000000..f27c46f31
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/M5Stack.ino
@@ -0,0 +1,61 @@
+// JPEGDEC example for Adafruit GFX displays
+
+#include "JPEGDEC.h"
+// Sample image (truncated) containing a 320x240 Exif thumbnail
+// if an image doesn't display, it may have been created using progressive, open gimp, export as a jpg, remove progressive.
+
+#include "thumb_test.h"
+//#include "ncc1701.h" //http://clipart-library.com/clip-art/uss-enterprise-silhouette-11.htm
+//#include "batman.h" //http://clipart-library.com/clipart/batman-clip-art_19.htm
+
+#include
+
+#define DISPLAY_WIDTH 320
+#define DISPLAY_HEIGHT 240
+
+
+JPEGDEC jpeg;
+
+int JPEGDraw(JPEGDRAW *pDraw)
+{
+
+ M5.Lcd.drawBitmap((int16_t)pDraw->x, (int16_t)pDraw->y, (int16_t)pDraw->iWidth, (int16_t)pDraw->iHeight, pDraw->pPixels);
+ return 1;
+} /* JPEGDraw() */
+
+void setup() {
+ Serial.begin(115200);
+
+ Serial.println("Starting...");
+
+M5.begin();
+M5.Lcd.fillScreen(TFT_BLACK);
+} /* setup() */
+
+void loop() {
+int i;
+long lTime;
+int iOption[4] = {0, JPEG_SCALE_HALF, JPEG_SCALE_QUARTER, JPEG_SCALE_EIGHTH};
+int iCenterX[4] = {0,80,120,140};
+int iCenterY[4] = {0,60,90,105};
+
+ for (i=0; i<4; i++)
+ {
+ M5.Lcd.fillScreen(TFT_BLACK);
+ M5.Lcd.startWrite(); // Not sharing TFT bus on PyPortal, just CS once and leave it
+ if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), JPEGDraw))
+ //if (jpeg.openFLASH((uint8_t *)ncc1701, sizeof(ncc1701), JPEGDraw))
+ //if (jpeg.openFLASH((uint8_t *)batman, sizeof(batman), JPEGDraw))
+
+ {
+ lTime = micros();
+ if (jpeg.hasThumb()) {jpeg.decode(iCenterX[i],iCenterY[i],JPEG_EXIF_THUMBNAIL | iOption[i]); } else { jpeg.decode(iCenterX[i],iCenterY[i], iOption[i]); }
+ {
+ lTime = micros() - lTime;
+ Serial.printf("%d x %d image, decode time = %d us\n", jpeg.getWidth() >> i, jpeg.getHeight() >> i, (int)lTime);
+ }
+ jpeg.close();
+ }
+ delay(2000); // pause between images
+ } // for i
+} /* loop() */
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/batman.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/batman.h
new file mode 100644
index 000000000..4aeccde5a
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/batman.h
@@ -0,0 +1,845 @@
+//
+// batman-5
+// Data size = 13342 bytes
+//
+// JFIF, Compression=JPEG, Size: 240 x 240, 24-Bpp
+//
+// for non-Arduino builds...
+#ifndef PROGMEM
+#define PROGMEM
+#endif
+const uint8_t batman[] PROGMEM = {
+ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x47,
+ 0x00,0x47,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
+ 0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,
+ 0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,
+ 0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,
+ 0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,
+ 0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,
+ 0x00,0x11,0x08,0x00,0xf0,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
+ 0x01,0xff,0xc4,0x00,0x1e,0x00,0x01,0x00,0x02,0x02,0x03,0x01,0x01,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x09,0x06,0x07,0x04,0x05,0x0a,0x03,0x01,
+ 0x02,0xff,0xc4,0x00,0x49,0x10,0x00,0x01,0x03,0x03,0x03,0x02,0x04,0x03,0x05,0x04,
+ 0x05,0x0a,0x04,0x07,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x06,0x07,0x08,0x11,
+ 0x12,0x21,0x09,0x13,0x31,0x41,0x14,0x22,0x51,0x15,0x23,0x61,0x71,0x81,0x32,0x42,
+ 0x52,0x62,0x24,0x33,0x82,0x91,0x92,0x16,0x17,0x18,0x53,0x63,0x72,0xa1,0xb1,0xb2,
+ 0xc1,0x73,0x93,0xa2,0xc2,0x19,0x34,0x43,0x44,0x83,0x84,0xc3,0xff,0xc4,0x00,0x1c,
+ 0x01,0x01,0x00,0x01,0x05,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x03,0x01,0x04,0x05,0x06,0x07,0x02,0x08,0xff,0xc4,0x00,0x38,0x11,0x00,
+ 0x01,0x03,0x02,0x05,0x01,0x06,0x03,0x06,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x01,
+ 0x00,0x02,0x03,0x04,0x11,0x05,0x06,0x12,0x21,0x31,0x51,0x13,0x22,0x41,0x61,0x71,
+ 0x81,0x07,0x32,0x91,0x15,0x42,0x62,0x92,0xa1,0xb1,0x14,0x23,0x52,0x72,0x82,0xa2,
+ 0x33,0xb2,0xc1,0xf0,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,
+ 0x3f,0x00,0xb5,0x3a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,
+ 0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,
+ 0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,
+ 0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,
+ 0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,
+ 0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,
+ 0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,
+ 0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,
+ 0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,
+ 0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,
+ 0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0xa2,0xae,0xf8,
+ 0x37,0xe7,0x8d,0x6d,0x27,0x1e,0x36,0xd8,0x69,0x66,0xff,0x00,0xa8,0xd3,0xd8,0x2b,
+ 0xb7,0xd9,0x4a,0x8f,0x97,0x1d,0x27,0x90,0x24,0x49,0x20,0x82,0x96,0xc1,0x1d,0x92,
+ 0x08,0x52,0xc8,0xe0,0x70,0x3a,0x94,0x92,0x29,0x55,0x4a,0xf3,0xf3,0xa5,0x5e,0x23,
+ 0xba,0xd3,0xa6,0xda,0xbb,0x71,0xce,0x66,0xe4,0x6f,0xe5,0x48,0xbb,0xbc,0x17,0x75,
+ 0xb2,0x5d,0x1c,0x26,0x1c,0x84,0x03,0xd9,0x2d,0x20,0x76,0x8e,0x52,0x3b,0x25,0x4d,
+ 0x81,0xc7,0x60,0x42,0x87,0x29,0x37,0x13,0xb5,0xfd,0xec,0xe9,0xa6,0xea,0xad,0x4d,
+ 0x8c,0x6e,0xe8,0x2d,0xb9,0x3a,0x1a,0x2e,0x4b,0xc6,0x6e,0x4a,0x4a,0x26,0xb3,0xc1,
+ 0xe1,0x4a,0x48,0xe7,0x87,0x5b,0xf4,0x3d,0x68,0x27,0x80,0xa1,0xd4,0x12,0x4f,0x48,
+ 0x22,0xdf,0xb4,0xa5,0x28,0x89,0x4a,0x56,0xa2,0xdc,0xd6,0xe0,0xa0,0xed,0xab,0x0a,
+ 0xb2,0xe5,0xd7,0x68,0xe1,0xfb,0x23,0xb7,0xc8,0x96,0xdb,0x82,0x81,0x3d,0x4c,0xb0,
+ 0xf7,0x52,0x54,0xf2,0x78,0xe7,0x92,0x8e,0x02,0xf8,0xe3,0xe6,0x09,0x29,0xec,0x48,
+ 0x20,0x8b,0x6e,0xd2,0xb5,0xde,0x79,0xb8,0x9d,0x2f,0xd3,0x06,0x63,0x39,0x95,0xea,
+ 0x06,0x39,0x62,0x32,0x99,0x4c,0x88,0xed,0x4b,0xb9,0x34,0x97,0x5f,0x69,0x43,0x94,
+ 0xb8,0xdb,0x7d,0x5d,0x4b,0x49,0x1f,0xbc,0x90,0x47,0x7a,0xc5,0xac,0x7b,0xdb,0xd0,
+ 0x4c,0x86,0x40,0x62,0x26,0xad,0xe2,0x69,0x70,0x9e,0x00,0x97,0x72,0x6e,0x30,0x27,
+ 0xe8,0x0b,0xa5,0x22,0x88,0xb7,0x6d,0x2b,0x52,0xe8,0xc6,0xe2,0xf1,0xfd,0x72,0xcd,
+ 0x75,0x22,0xcb,0x8e,0x2d,0xb9,0x50,0xf0,0xdb,0x83,0x36,0xc5,0xcf,0x69,0xd0,0xe2,
+ 0x25,0x3a,0xa6,0xca,0x96,0xb4,0x11,0xdb,0xa5,0x2b,0x0a,0x6c,0x7a,0xf2,0x5b,0x51,
+ 0xe7,0x82,0x2b,0x6d,0x51,0x12,0x94,0xa5,0x11,0x29,0x51,0xd3,0x74,0xdb,0xec,0xd3,
+ 0x3d,0xab,0x5b,0xdf,0x8f,0x79,0xb8,0x0b,0xee,0x5f,0xd0,0x15,0x1f,0x17,0xb6,0x38,
+ 0x15,0x29,0x44,0x8e,0x52,0x5e,0x3d,0xc3,0x08,0x3c,0x83,0xd4,0xbe,0xe4,0x77,0x4a,
+ 0x55,0xe9,0x55,0x05,0x9d,0x78,0x8f,0xeb,0x7e,0x67,0xac,0xb0,0x35,0x05,0x8c,0x9d,
+ 0xcb,0x12,0xed,0xab,0xe2,0x05,0x86,0xde,0xa5,0x26,0xda,0xd3,0x24,0x82,0xa6,0x9c,
+ 0x68,0x9f,0xbe,0xeb,0xe3,0xe6,0x52,0xf9,0x51,0xed,0xc1,0x48,0x4a,0x42,0x48,0xbd,
+ 0x04,0x52,0xa3,0x3e,0xca,0xf7,0xc7,0x8a,0x6e,0xef,0x15,0x2d,0x37,0xe5,0x58,0xf3,
+ 0xdb,0x73,0x21,0x77,0x5c,0x79,0x4b,0xe4,0xf4,0x8e,0x01,0x91,0x1c,0x9f,0xdb,0x64,
+ 0xa9,0x40,0x7f,0x12,0x09,0x01,0x5e,0xa9,0x52,0xe4,0xc5,0x11,0x29,0x4a,0x51,0x12,
+ 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xad,
+ 0x05,0xbc,0xed,0xd9,0xd9,0x36,0x91,0xa5,0x0e,0xdf,0xa5,0xa5,0xa9,0xf9,0x35,0xc7,
+ 0xae,0x35,0x8a,0xd0,0xb5,0x11,0xf1,0x52,0x00,0x1c,0xad,0x5c,0x77,0x0d,0x36,0x14,
+ 0x95,0x2c,0xf6,0xf5,0x4a,0x41,0x05,0x69,0xa2,0x2c,0x1b,0x7f,0x1b,0xec,0xb4,0xed,
+ 0x3f,0x11,0xfb,0x22,0xcc,0xa6,0x2e,0x9a,0x95,0x76,0x60,0x9b,0x7d,0xbd,0x47,0xa9,
+ 0x10,0x9b,0x3c,0x8f,0x8a,0x7c,0x7f,0x08,0x23,0xe5,0x41,0xee,0xb2,0x0f,0xb0,0x51,
+ 0x14,0xdb,0x61,0xd1,0xad,0x69,0xdc,0xee,0x55,0x3b,0x22,0x83,0x8c,0x5f,0xf2,0xeb,
+ 0x9d,0xdd,0xe5,0x4a,0x93,0x7b,0x90,0xc9,0x6d,0x87,0x5c,0x57,0x72,0x4c,0x87,0x3a,
+ 0x5a,0x1f,0x82,0x7a,0x87,0x00,0x70,0x07,0x02,0xb9,0x38,0x46,0xb8,0x67,0x39,0x56,
+ 0xb3,0x4f,0xc8,0x95,0x61,0xb3,0xea,0x26,0xa4,0x65,0x33,0x1b,0x6e,0x34,0xbc,0x82,
+ 0x07,0xc6,0xb8,0xd4,0x85,0x2b,0x84,0x79,0x0c,0xa9,0x41,0x94,0x9f,0xd8,0x4a,0x7a,
+ 0x90,0x42,0x12,0x84,0x84,0xf4,0x00,0x79,0xbc,0x7d,0x2d,0xb4,0xe5,0x36,0x4d,0x3f,
+ 0xb2,0x43,0xcd,0xaf,0x8d,0xe4,0x59,0x5a,0x18,0xea,0xb8,0xdc,0x19,0x61,0xb6,0x1a,
+ 0x5b,0xca,0x25,0x45,0x28,0x42,0x12,0x91,0xd0,0x8e,0x7a,0x01,0xe9,0x04,0x84,0x82,
+ 0x7b,0x93,0x5c,0xb7,0x39,0xe6,0xfa,0x8c,0xb2,0xd6,0x36,0x18,0x9a,0xe7,0x3f,0x8d,
+ 0x4e,0x37,0xf3,0x3a,0x40,0xe0,0x71,0x72,0xe0,0x6f,0xc0,0x22,0xe4,0x5c,0x45,0x10,
+ 0x93,0x92,0xa9,0xd1,0xdf,0x0c,0xcd,0xc1,0x37,0x13,0xce,0x18,0x8c,0x47,0x17,0xc7,
+ 0x3e,0x42,0x6f,0x11,0x3a,0xff,0x00,0xe2,0xe0,0x1f,0xf1,0xad,0x0b,0x95,0xe1,0x99,
+ 0x9e,0x8b,0x65,0xe9,0x83,0x7d,0xb6,0x5d,0x71,0x1c,0x8a,0x12,0xc3,0xad,0x79,0xc9,
+ 0x5c,0x77,0x90,0x41,0xec,0xe3,0x4b,0x1c,0x72,0x39,0x1d,0x96,0x82,0x41,0xf6,0x35,
+ 0xe8,0xbe,0xa3,0xbe,0xfd,0x34,0x72,0xc9,0xab,0x5b,0x6d,0xcb,0x9e,0xb8,0x45,0x42,
+ 0xae,0xb8,0xe4,0x07,0xef,0x56,0xc9,0xc1,0x3f,0x7b,0x1d,0xc6,0x51,0xe6,0x38,0x90,
+ 0x7f,0x85,0xc4,0x20,0xa5,0x43,0xd0,0xf6,0x3c,0x72,0x94,0x91,0xcf,0xb0,0x3f,0x8a,
+ 0x35,0xb3,0xd7,0x47,0x4f,0x89,0x44,0xcd,0x0f,0x20,0x5d,0xa0,0x82,0xdb,0x9b,0x5f,
+ 0x72,0x6e,0x3a,0xf0,0x7f,0x65,0x33,0xe9,0xc0,0x17,0x69,0x50,0x8f,0x6f,0x3e,0x2f,
+ 0x7a,0x9d,0xa6,0x2c,0x47,0xb5,0x67,0xf0,0xda,0xd4,0x9b,0x2b,0x69,0x4b,0x68,0x94,
+ 0xfb,0xa2,0x35,0xc9,0xa4,0x8e,0x07,0x77,0x82,0x48,0x77,0xb0,0x3f,0xd6,0x24,0xa9,
+ 0x47,0xd5,0x75,0x62,0xda,0x35,0xe2,0x3d,0xa0,0xda,0xd2,0xa6,0x63,0x43,0xcc,0x5a,
+ 0xc6,0x2e,0xce,0x27,0xab,0xec,0xcc,0xa1,0x22,0x03,0x80,0xf3,0xc7,0x48,0x71,0x44,
+ 0xb2,0xa5,0x7f,0x2a,0x1c,0x51,0x3f,0x4a,0xa0,0xf9,0x98,0x65,0xd2,0x0e,0x15,0x6a,
+ 0xca,0x9e,0x64,0x26,0xd1,0x72,0x9d,0x2a,0xdf,0x1d,0xce,0x7b,0x97,0x63,0xa1,0x85,
+ 0xb9,0xc8,0xfa,0x71,0x25,0xbe,0x0f,0xb9,0x0a,0xfa,0x57,0x47,0x5f,0x48,0x31,0xed,
+ 0x90,0x5d,0x86,0xfc,0x8f,0x70,0x6c,0x7e,0x85,0x58,0xaf,0x54,0x51,0x25,0xb1,0x3e,
+ 0x33,0x72,0x23,0x3c,0xdc,0x98,0xee,0x0e,0xa4,0x3a,0xd2,0xc2,0x90,0xa1,0xf5,0x04,
+ 0x76,0x22,0xa0,0xc7,0x8c,0xac,0xaf,0x87,0xda,0x4c,0x06,0xf9,0xe3,0xcf,0xca,0x21,
+ 0xb7,0xf9,0xfd,0xcc,0x95,0x7f,0xed,0xaa,0x78,0xd3,0xdd,0x6b,0xcf,0xf4,0x99,0x6e,
+ 0x1c,0x33,0x34,0xbf,0x62,0xe9,0x75,0x41,0x6e,0xb5,0x6a,0xb8,0x3a,0xc3,0x6e,0x91,
+ 0xe8,0x56,0x84,0xa8,0x25,0x5f,0xa8,0x35,0x98,0xea,0xc6,0xf0,0xb5,0x77,0x5c,0xf0,
+ 0x48,0x98,0x7e,0x77,0x98,0x3b,0x91,0xd8,0xa2,0x4d,0x6e,0xe0,0xc3,0x52,0x22,0x47,
+ 0x43,0x89,0x79,0x08,0x71,0x01,0x45,0xd4,0x36,0x95,0xab,0xe5,0x75,0x7d,0x94,0x48,
+ 0xf4,0xfa,0x57,0xb4,0x5a,0x6d,0x4b,0x52,0xcf,0x2a,0x25,0x47,0x80,0x39,0x27,0xd8,
+ 0x76,0x15,0xf9,0x5d,0xd5,0xa3,0x09,0xc8,0x2f,0xf6,0x1b,0xb5,0xee,0xd9,0x64,0xb8,
+ 0x5c,0x6d,0x16,0x8f,0x2f,0xed,0x19,0xd1,0x23,0x2d,0xd6,0x61,0xf9,0x9d,0x5e,0x59,
+ 0x79,0x49,0x04,0x36,0x15,0xd0,0xbe,0x0a,0xb8,0x07,0xa4,0xfd,0x2b,0x8f,0x8e,0xe3,
+ 0x37,0x8c,0xc2,0xf1,0x1e,0xd3,0x61,0xb5,0x4d,0xbd,0xdd,0x24,0x1e,0x96,0x60,0xdb,
+ 0xa3,0xae,0x43,0xee,0x1f,0xa2,0x50,0x80,0x54,0x7f,0x41,0x44,0x56,0x51,0xe0,0x7b,
+ 0x95,0xb7,0x17,0x33,0xd5,0x5c,0x65,0x47,0x97,0x67,0x5b,0xe0,0xdc,0x5b,0x04,0xfa,
+ 0x06,0x1c,0x75,0xb5,0xf0,0x3f,0xfd,0x94,0x73,0xf9,0x0a,0xb6,0x79,0xd3,0xa3,0x5b,
+ 0x22,0x3b,0x2a,0x64,0x86,0xa2,0x45,0x69,0x3d,0x4e,0x3e,0xfa,0xc2,0x10,0x81,0xf5,
+ 0x2a,0x3d,0x80,0xaf,0x35,0x18,0x7e,0xa1,0x6a,0x66,0xd6,0x33,0xab,0xdb,0x76,0x1b,
+ 0x8c,0xfc,0x1b,0x2b,0xf8,0x75,0x5a,0xee,0x28,0x0d,0x20,0x48,0x6d,0xb5,0x29,0x0e,
+ 0x29,0xa5,0x05,0xa4,0xf4,0x2b,0xa9,0x08,0x27,0x8e,0x14,0x08,0xe3,0xb7,0x71,0x5d,
+ 0x26,0xa0,0x6b,0x0e,0x75,0xaa,0xef,0xb4,0xee,0x67,0x98,0xdf,0x32,0x95,0x34,0x4a,
+ 0x9a,0x17,0x6b,0x83,0xb2,0x12,0xd1,0xfe,0x44,0xad,0x44,0x23,0xfb,0x20,0x51,0x15,
+ 0xea,0x6b,0x3f,0x89,0x5e,0x83,0x68,0xd2,0xa4,0xc5,0x73,0x2c,0x4e,0x5d,0x78,0x65,
+ 0x3c,0xfd,0x9d,0x8b,0x24,0x4d,0x24,0xff,0x00,0x09,0x78,0x10,0xca,0x48,0x3e,0xa0,
+ 0xb9,0xc8,0xfa,0x7b,0x55,0x72,0xee,0x1f,0xc5,0xc3,0x55,0x35,0x61,0x99,0x16,0xac,
+ 0x25,0x96,0xf4,0xce,0xc2,0xea,0x14,0xda,0xdc,0x80,0xf1,0x7a,0xe4,0xe0,0x3d,0x89,
+ 0xf8,0x92,0x13,0xe5,0xf6,0xe3,0x8f,0x29,0x29,0x50,0x3c,0xfc,0xe7,0xb7,0x10,0x5a,
+ 0x94,0x45,0xf5,0x99,0x31,0xfb,0x84,0xa7,0xa5,0x4a,0x7d,0xc9,0x32,0x5e,0x59,0x71,
+ 0xc7,0x9e,0x59,0x5a,0xd6,0xa2,0x79,0x25,0x44,0xf7,0x24,0xfd,0x4d,0x7c,0xab,0xed,
+ 0x0a,0x2a,0xe7,0x4c,0x62,0x32,0x3b,0xad,0xe7,0x12,0xda,0x7f,0x32,0x78,0x1f,0xf3,
+ 0xac,0x9b,0x57,0x30,0xe4,0xe9,0xe6,0xaa,0xe6,0x38,0xba,0x09,0x2d,0x59,0x6f,0x12,
+ 0xed,0xe8,0x51,0x24,0xf5,0x21,0xa7,0x96,0x84,0x9e,0xff,0x00,0x50,0x90,0x6a,0x13,
+ 0x2b,0x04,0xa2,0x1b,0xf7,0x88,0x27,0xd8,0x58,0x1f,0xdc,0x2a,0xdb,0xc5,0x7f,0x78,
+ 0x2d,0xdf,0x35,0xd3,0x19,0xd6,0x9d,0x47,0xc5,0xcd,0xd2,0xca,0xab,0x6d,0xc3,0xc9,
+ 0x87,0x90,0x46,0x65,0x61,0x84,0x4a,0x4a,0x42,0xd4,0xcf,0x99,0xc7,0x42,0x89,0x42,
+ 0x87,0x53,0x67,0x9e,0xa4,0x2f,0x85,0x02,0x95,0x77,0xbd,0x7d,0x8b,0x6f,0x7e,0xc7,
+ 0xbb,0xac,0x1d,0x4c,0xcb,0x11,0xec,0xfa,0x87,0x69,0x69,0x3f,0x6b,0xd9,0x90,0xae,
+ 0x10,0xe8,0xf4,0xf8,0xa8,0xc0,0x92,0xa5,0x34,0xa3,0xc7,0x23,0xb9,0x6d,0x44,0x25,
+ 0x44,0x82,0x85,0x2f,0x45,0x6c,0x47,0x43,0xf4,0xda,0xfd,0xb4,0xb9,0x96,0x98,0xd7,
+ 0x57,0x73,0xac,0x67,0x2d,0x77,0xcf,0xbb,0x5b,0xee,0x4d,0x25,0xb1,0x0e,0x58,0x69,
+ 0xb4,0x3a,0xc8,0x42,0x4f,0x28,0x5a,0x14,0x84,0x90,0xbe,0x79,0x3c,0x36,0xb4,0x9e,
+ 0x3a,0x49,0x83,0x3a,0xe5,0xa3,0x99,0xdf,0x87,0x9e,0xbe,0xd9,0xf2,0x7c,0x4a,0xe7,
+ 0x24,0x5b,0x04,0x85,0x4a,0xb0,0x5e,0xf8,0xe4,0x38,0x80,0x7e,0x78,0xb2,0x40,0xe0,
+ 0x15,0x74,0x9e,0x95,0xa7,0xd1,0x69,0x57,0x23,0x8e,0x4a,0x53,0xa3,0x61,0x19,0xc2,
+ 0x8f,0x13,0xc4,0xe7,0xc2,0x5c,0x34,0x48,0xc2,0x43,0x6f,0x71,0xa8,0x0e,0x76,0x36,
+ 0x21,0xc3,0x7b,0x8e,0x9b,0x8f,0x1b,0x4a,0xe8,0x8b,0x5a,0x1c,0xaf,0xf6,0x95,0xa4,
+ 0x76,0x8d,0xba,0x6c,0x7b,0x76,0x1a,0x51,0x13,0x27,0xb4,0x94,0x43,0xbc,0xc7,0xe9,
+ 0x8f,0x7a,0xb3,0x95,0x82,0xe4,0x19,0x3c,0x77,0x1c,0x73,0xc9,0x6d,0x7c,0x15,0x21,
+ 0x7e,0xe3,0xb1,0xe1,0x49,0x50,0x1b,0xba,0xb7,0xf5,0x0a,0x52,0x94,0xa2,0x25,0x29,
+ 0x4a,0x22,0x52,0x94,0xa2,0x25,0x29,0x4a,0x22,0xc6,0x35,0x37,0x52,0x2c,0x3a,0x43,
+ 0x80,0xdf,0x33,0x2c,0x9e,0x62,0x60,0x58,0xac,0xd1,0x95,0x26,0x4b,0xc7,0x8e,0x48,
+ 0x1d,0x92,0x84,0x82,0x47,0x52,0xd4,0xa2,0x94,0x25,0x3e,0xea,0x52,0x47,0xbd,0x79,
+ 0xd8,0xdd,0x0e,0xe3,0xb2,0x2d,0xd1,0x6a,0xe5,0xd3,0x34,0xbf,0x28,0xb2,0xca,0xc9,
+ 0x8f,0x6c,0xb6,0xa5,0x5c,0xb7,0x02,0x22,0x54,0x4b,0x6d,0x27,0xea,0x7b,0x95,0x29,
+ 0x5f,0xbc,0xa5,0x28,0xf0,0x01,0x00,0x4a,0xaf,0x16,0x6d,0xdd,0xab,0x55,0x35,0x14,
+ 0x69,0x46,0x35,0x31,0x47,0x14,0xc5,0x24,0xab,0xed,0x37,0x1b,0xe3,0xa6,0x6d,0xcd,
+ 0x3c,0xa5,0x43,0x9f,0x52,0x86,0x41,0x52,0x07,0xa7,0xce,0x5c,0xe4,0x10,0x94,0x1a,
+ 0xd5,0xbe,0x1e,0x9b,0x50,0xff,0x00,0x48,0x4d,0x4c,0x37,0xec,0x82,0x19,0x73,0x04,
+ 0xc7,0x1c,0x43,0xb3,0x12,0xe2,0x0f,0x97,0x3e,0x47,0xab,0x71,0x41,0xf4,0x23,0xd1,
+ 0x6b,0xf5,0xf9,0x78,0x07,0x8f,0x30,0x1a,0xc5,0x62,0x98,0x95,0x3e,0x11,0x47,0x25,
+ 0x75,0x51,0xb3,0x18,0x2f,0xeb,0xd0,0x0f,0x32,0x76,0x0b,0xd3,0x5a,0x5c,0x6c,0x14,
+ 0xae,0xf0,0xc8,0xda,0x18,0xc0,0xb1,0xd6,0x35,0x67,0x2b,0x87,0xd3,0x91,0xdd,0xd8,
+ 0x3f,0x62,0xc5,0x75,0x24,0x2a,0x14,0x35,0x8e,0x0b,0xc4,0x1f,0x47,0x1d,0x07,0xb7,
+ 0xd1,0xb2,0x3b,0xfc,0xea,0x02,0x46,0xee,0xdf,0x73,0x56,0xad,0xaf,0x69,0x6b,0xf7,
+ 0xe7,0xd0,0xd4,0xdc,0x86,0x69,0x54,0x5b,0x2d,0xb1,0xc2,0x78,0x91,0x23,0x8e,0x7a,
+ 0x97,0xc7,0x07,0xcb,0x40,0x21,0x4a,0x20,0x8f,0x64,0x82,0x0a,0x85,0x6e,0x69,0x93,
+ 0x22,0xda,0x60,0x3f,0x2e,0x53,0xcd,0x43,0x85,0x19,0xa5,0x3a,0xeb,0xce,0xa8,0x21,
+ 0xb6,0x9b,0x48,0xe5,0x4a,0x24,0xf6,0x00,0x00,0x4f,0x3e,0xc0,0x55,0x13,0x6e,0xa7,
+ 0x5c,0x2f,0x5b,0xb6,0xd7,0xe9,0x13,0x6d,0x31,0xa5,0xcf,0x81,0xe7,0x0b,0x56,0x39,
+ 0x6b,0x8e,0xd2,0x96,0xe2,0x98,0x0a,0x21,0x1c,0x36,0x07,0x25,0xc7,0x14,0x4a,0xc8,
+ 0xe3,0x9e,0x54,0x13,0xe8,0x91,0x5f,0x2f,0xe0,0x74,0x53,0xe7,0xec,0x7a,0x4c,0x43,
+ 0x11,0xff,0x00,0x85,0x9b,0xbb,0xa0,0x1f,0x75,0x80,0xf8,0x0e,0x6e,0x7a,0x02,0x79,
+ 0x2b,0x20,0xf2,0x21,0x65,0x9b,0xca,0xb2,0xff,0x00,0x0f,0x5d,0xd3,0x65,0x9b,0x9a,
+ 0xc2,0xb2,0x97,0x33,0x08,0x91,0x05,0xca,0xc9,0x35,0xa6,0xd1,0x3e,0x0b,0x45,0x96,
+ 0xe4,0x36,0xea,0x14,0xa0,0x92,0x8e,0x48,0xeb,0x41,0x41,0xe4,0x8e,0x01,0x0b,0x47,
+ 0x6e,0x41,0x2a,0xd8,0x5b,0xd9,0xcd,0xe1,0xe0,0x3b,0x57,0xd4,0x79,0xd2,0xdd,0x4b,
+ 0x66,0x5d,0xa5,0xdb,0x5b,0x08,0x24,0x75,0x38,0xec,0x91,0xe4,0x25,0x29,0x1e,0xff,
+ 0x00,0xd6,0x15,0x1e,0x3d,0x92,0xa3,0xed,0x5f,0xce,0xcc,0xf6,0xfd,0xfe,0x8d,0xfa,
+ 0x15,0x68,0xc6,0xa5,0x86,0xd5,0x7f,0x94,0xb5,0x5c,0xaf,0x0e,0x34,0x79,0x06,0x53,
+ 0x81,0x3c,0xa0,0x1e,0x4f,0x21,0x08,0x4a,0x1b,0xe4,0x76,0x3d,0x05,0x5f,0xbd,0x51,
+ 0x5f,0x76,0xfa,0x84,0xce,0xea,0xf7,0x5b,0x80,0x6d,0xfa,0xc6,0xe1,0x9d,0x8d,0x5a,
+ 0xae,0xe1,0xfc,0x89,0x6c,0x2b,0x80,0xeb,0xcd,0xa5,0x4a,0x7d,0x01,0x7e,0xde,0x4b,
+ 0x29,0x75,0x3c,0x8f,0xdf,0x5a,0x87,0x72,0x91,0x58,0xc8,0x28,0xe8,0xb1,0x4c,0xd1,
+ 0x2c,0xd4,0x2d,0xd3,0x49,0x13,0x8c,0x84,0x8e,0x03,0x23,0xdc,0x91,0xd3,0x51,0x1b,
+ 0x7a,0xf9,0x2f,0x44,0x96,0xc7,0x63,0xc9,0x59,0x4d,0x83,0x62,0x09,0xd5,0x1d,0x8a,
+ 0xe9,0xb6,0x10,0xed,0xd1,0x8b,0x16,0x44,0x87,0x91,0x92,0x2a,0xe2,0xe4,0x62,0xef,
+ 0x42,0xa4,0xa5,0x6b,0x5b,0x2a,0x4f,0x20,0xf6,0x6d,0xd6,0xd2,0x7b,0xfe,0xd3,0x20,
+ 0xfa,0x56,0x9f,0xb3,0x78,0x45,0x65,0x96,0xcd,0x4c,0xc7,0x5b,0xba,0x64,0xd6,0x9b,
+ 0xd6,0x0e,0xa9,0x49,0x55,0xce,0x44,0x5f,0x31,0x89,0x69,0x65,0x20,0xa9,0x48,0x0d,
+ 0x91,0xc7,0xcf,0xc0,0x40,0x52,0x56,0x48,0x2a,0xe4,0x8e,0x05,0x5a,0x24,0xfb,0x95,
+ 0xbb,0x1e,0x80,0x1f,0x9b,0x2a,0x2d,0xb2,0x0b,0x65,0x0d,0x07,0x1f,0x71,0x2c,0xb4,
+ 0x92,0x48,0x4a,0x13,0xc9,0x20,0x0e,0x49,0x00,0x0f,0xa9,0x00,0x57,0x34,0x0e,0x48,
+ 0x15,0x69,0x06,0x7b,0xc7,0x69,0x3b,0x6e,0xc2,0x4b,0x32,0x47,0x3d,0xd6,0x20,0x1b,
+ 0x17,0x6e,0x6c,0x6d,0x7d,0xaf,0x71,0xbd,0x87,0x45,0x53,0x13,0x0d,0xae,0x17,0x9e,
+ 0x6d,0xc4,0xc5,0x89,0x07,0x5f,0x35,0x1e,0x2c,0x08,0xcd,0x43,0x82,0xc6,0x45,0x3d,
+ 0x96,0x23,0xb0,0x90,0x96,0xda,0x6d,0x32,0x16,0x94,0xa1,0x20,0x7a,0x00,0x00,0x00,
+ 0x7e,0x15,0xaf,0x6b,0x2f,0xd6,0x2b,0xa2,0x6f,0x7a,0xb9,0x9b,0xdc,0x50,0x79,0x44,
+ 0xbb,0xe4,0xe9,0x09,0x20,0xf3,0xd9,0x52,0x16,0xa1,0xff,0x00,0x3a,0xc4,0x2b,0xec,
+ 0x6a,0x16,0x96,0xd2,0xc4,0xd7,0x72,0x1a,0xdf,0xd8,0x2c,0x59,0xe4,0xab,0x65,0xdb,
+ 0xfe,0xcf,0x6f,0x98,0xbd,0x82,0xdf,0xa8,0x7a,0x0b,0xaa,0xb7,0x6d,0x32,0xba,0x5f,
+ 0x6d,0x4d,0x33,0x75,0xb2,0xde,0x60,0x31,0x74,0x6d,0x2e,0x29,0x29,0x5f,0x48,0x2a,
+ 0x00,0x74,0x82,0x42,0x9b,0x59,0x42,0x89,0x42,0xd2,0xb4,0xab,0xa5,0x7d,0xf5,0x46,
+ 0x8e,0x78,0x78,0x6e,0x1f,0x01,0xd6,0xab,0x85,0xdd,0x8c,0xea,0x3e,0x0d,0xe4,0xa1,
+ 0x7d,0x59,0x9d,0xbe,0x59,0x92,0xa9,0xc1,0xd3,0xf3,0x25,0x2d,0x12,0x95,0xa8,0x93,
+ 0xc1,0x50,0x77,0xa0,0x72,0x01,0x04,0x90,0x2b,0xbb,0xf0,0xfc,0xde,0xae,0x35,0x3b,
+ 0x0d,0x46,0x8e,0x6a,0xe4,0xc8,0x4c,0xc3,0x65,0x01,0xab,0x35,0xd2,0xee,0x52,0x22,
+ 0xba,0xc2,0x7b,0x88,0x8f,0xad,0x5d,0x90,0x51,0xd2,0x0b,0x6b,0x51,0xe0,0x8e,0x13,
+ 0xc8,0x29,0x40,0x54,0x97,0xb9,0xce,0xd1,0x7d,0x14,0x7e,0xf9,0x9a,0xe4,0x19,0x46,
+ 0x19,0x77,0x89,0x6e,0x6d,0x57,0x0b,0x4d,0xbc,0x79,0x6f,0xcf,0x61,0x69,0x3d,0x6d,
+ 0x86,0x54,0xb7,0xdc,0x2b,0x73,0x90,0x12,0x85,0x36,0x86,0xcf,0x7e,0x49,0x3e,0xa2,
+ 0xd9,0xd2,0xcd,0x1b,0x8b,0x09,0xf4,0xd9,0x65,0x1b,0x14,0x32,0x34,0x3c,0x7b,0xee,
+ 0xaa,0x7b,0x75,0xfa,0x5e,0xbd,0x21,0xd7,0x0b,0xfe,0x3e,0xed,0xd6,0xe1,0x7c,0x90,
+ 0x92,0x99,0x0f,0x5d,0x2e,0xce,0xa5,0x52,0xe6,0x3a,0xb1,0xcb,0x92,0x1c,0x00,0x92,
+ 0x9f,0x31,0x7d,0x4e,0x24,0x29,0x4a,0x51,0x42,0xd0,0xa2,0xa3,0xd5,0xcd,0x6a,0x0a,
+ 0xcb,0xb5,0x5b,0x51,0x2e,0xfa,0xc7,0xa8,0xd9,0x36,0x6d,0x77,0x47,0xf4,0xeb,0xbc,
+ 0xc5,0xcb,0x79,0x0d,0xf2,0x50,0xc2,0x54,0x78,0x43,0x69,0x27,0xbf,0x4a,0x12,0x12,
+ 0x81,0xcf,0x7e,0x12,0x2b,0x11,0xac,0x9b,0x2f,0xa4,0x03,0xca,0xc6,0x3a,0xc5,0xc6,
+ 0xdc,0x2c,0x92,0xdb,0x87,0xb9,0x71,0xd3,0xbb,0xfe,0x4c,0x8e,0xb2,0x8b,0x55,0xc6,
+ 0x04,0x15,0x81,0xfb,0x3c,0x48,0x6e,0x52,0x81,0x3f,0x8f,0x31,0x87,0x1f,0x99,0xae,
+ 0x8a,0x4d,0xbe,0x4c,0x36,0x22,0x3c,0xfb,0x0e,0x32,0xd4,0xb6,0xcb,0xd1,0xd6,0xb4,
+ 0x90,0x1d,0x40,0x5a,0x90,0x54,0x93,0xee,0x3a,0x90,0xb4,0xf3,0xf5,0x49,0x1e,0xd5,
+ 0x28,0x74,0xff,0x00,0x4d,0x5e,0xff,0x00,0xe1,0xe1,0xaa,0xd9,0x83,0x8c,0xa9,0x28,
+ 0x7b,0x27,0xb6,0x21,0xa5,0x29,0x3c,0x75,0x25,0x82,0x1b,0xea,0x1f,0x51,0xd5,0x39,
+ 0x49,0xe7,0xea,0x08,0xf6,0xa9,0x39,0xb0,0xcd,0xbe,0x60,0x3b,0x8b,0xdb,0x36,0x2e,
+ 0xf6,0x6f,0x66,0x17,0x55,0xe2,0x99,0x24,0xff,0x00,0x85,0x48,0x70,0xa0,0x3a,0x85,
+ 0xa1,0x0b,0x2c,0xba,0x47,0x75,0x35,0xd6,0xe2,0x57,0xd2,0x08,0xf9,0x90,0x3d,0x8a,
+ 0x92,0xad,0x13,0x11,0xcd,0x50,0xe1,0x50,0xcf,0x57,0x33,0x4b,0xa3,0x8e,0x5e,0xcc,
+ 0xdb,0x91,0xfc,0xb0,0x76,0xff,0x00,0x23,0x6e,0x47,0x2a,0x46,0xc6,0x5c,0x40,0xf2,
+ 0x55,0xcd,0xa4,0x96,0xcf,0xb6,0xf5,0x57,0x0c,0xb7,0x71,0xd5,0xf1,0x77,0xa8,0x51,
+ 0xf8,0xfa,0xf5,0xbe,0x84,0xff,0x00,0xde,0xb7,0x27,0x88,0x76,0x1a,0xbc,0x33,0x77,
+ 0x59,0xdb,0x7e,0x52,0x9b,0x8d,0x72,0x75,0x8b,0xa3,0x0b,0x50,0xfe,0xb0,0x3c,0xca,
+ 0x14,0xb2,0x3f,0x0f,0x37,0xcd,0x4f,0xf6,0x4d,0x5d,0x76,0x3b,0x81,0x63,0x18,0x7c,
+ 0x66,0xe3,0xd8,0x71,0xcb,0x4d,0x92,0x3b,0x60,0x04,0x35,0x6e,0x82,0xd4,0x74,0xa4,
+ 0x0f,0x4e,0x02,0x12,0x38,0xaa,0xca,0xf1,0x87,0xc2,0xdc,0x85,0xa8,0xd8,0x06,0x58,
+ 0x13,0xcb,0x17,0x1b,0x5b,0xd6,0xd5,0x28,0x0f,0x45,0xc7,0x77,0xcc,0xee,0x7f,0x11,
+ 0x27,0xb7,0xfb,0xa7,0xe9,0x5a,0x36,0x03,0x9e,0x1b,0x98,0x73,0x24,0x31,0xb6,0x2e,
+ 0xcd,0xa5,0x8f,0x68,0xb9,0xbd,0xce,0xcf,0xbf,0x02,0xdb,0x33,0xcd,0x4c,0xf8,0xb4,
+ 0x46,0x56,0x82,0xd9,0x26,0xeb,0x67,0x6d,0x8f,0x53,0x9b,0x5c,0xc7,0x5c,0x7f,0x08,
+ 0xbc,0x2d,0x0c,0x5e,0xa1,0x24,0x75,0x74,0x27,0xd1,0x32,0x5b,0x1f,0xc6,0xdf,0x24,
+ 0xf1,0xfb,0xc9,0x2a,0x4f,0xaf,0x49,0x17,0x17,0xac,0x3a,0x51,0x8a,0xee,0x4f,0x49,
+ 0x66,0xe3,0x57,0x75,0x33,0x3a,0xcd,0x76,0x61,0x12,0x21,0x5c,0x63,0x10,0xe1,0x61,
+ 0xce,0x9e,0xa6,0x64,0xb2,0xa0,0x78,0x24,0x72,0x08,0x20,0xf0,0xa4,0x92,0x93,0xca,
+ 0x54,0x41,0xf3,0xfd,0x03,0x15,0xbc,0x5d,0x6c,0x17,0x5b,0xe4,0x3b,0x74,0x89,0x56,
+ 0x9b,0x52,0xd9,0x44,0xe9,0x6d,0x20,0xa9,0x11,0x8b,0xa5,0x41,0xa2,0xbe,0x3f,0x64,
+ 0x28,0xa0,0x80,0x4f,0x6e,0x78,0x1c,0xf2,0x40,0x36,0x77,0xe1,0x55,0xb9,0xb3,0x93,
+ 0x63,0x92,0x34,0x86,0xff,0x00,0x28,0xae,0xe7,0x68,0x6d,0x52,0xec,0x6e,0x39,0xea,
+ 0xec,0x4e,0x79,0x71,0x8e,0x7d,0xcb,0x6a,0x57,0x52,0x47,0xaf,0x42,0x88,0xf4,0x6e,
+ 0xa9,0xf1,0x13,0x01,0x3b,0x66,0x0c,0x34,0xda,0x68,0x48,0xd7,0xa7,0x9d,0xac,0x43,
+ 0xbd,0x5b,0xb5,0xff,0x00,0x09,0x07,0x80,0x90,0x3f,0xee,0x3b,0x82,0xa2,0x8e,0x96,
+ 0xea,0x16,0x7b,0xe1,0xbb,0xba,0x59,0x4c,0x5c,0x18,0x71,0xf6,0x22,0xb8,0x22,0x5d,
+ 0xed,0xe8,0x3c,0x33,0x77,0xb7,0xa8,0x85,0x25,0xc6,0xc9,0xed,0xcf,0x1c,0x2d,0x0a,
+ 0xf5,0x4a,0x81,0x4a,0xbf,0x7d,0x26,0xfa,0x30,0x3c,0xe6,0xc9,0xa9,0x98,0x6d,0x9f,
+ 0x2a,0xc6,0xe7,0xb5,0x74,0xb1,0x5d,0xa3,0x22,0x5c,0x49,0x4d,0x1e,0xcb,0x42,0x87,
+ 0xa1,0x1e,0xa9,0x50,0x3c,0x85,0x24,0xf7,0x49,0x04,0x10,0x08,0x22,0xa0,0xcf,0x88,
+ 0x86,0xd4,0xd1,0xaf,0xba,0x60,0xbc,0x8e,0xc3,0x0b,0xcc,0xce,0xf1,0xa6,0x56,0xf4,
+ 0x50,0xcb,0x7c,0xbb,0x3e,0x28,0xf9,0x9c,0x8a,0x78,0xee,0xa2,0x3b,0xad,0xb1,0xdf,
+ 0xe6,0xe5,0x20,0x7d,0xe1,0x35,0x1e,0xbc,0x23,0xb7,0x7a,0xbc,0x1b,0x32,0xff,0x00,
+ 0x33,0x19,0x54,0xf2,0x9c,0x7e,0xfa,0xf1,0x72,0xc2,0xf4,0x97,0x78,0x4c,0x39,0xe7,
+ 0xd6,0x38,0xea,0xf4,0x4b,0xfe,0xc0,0x1f,0xeb,0x40,0x00,0x12,0xe9,0x35,0xd0,0x72,
+ 0x8e,0x63,0x8f,0x32,0x61,0xc2,0x73,0xb4,0xad,0xd9,0xe3,0xa1,0xea,0x3c,0x9d,0xc8,
+ 0xf7,0x1e,0x0a,0x09,0x63,0xec,0xdd,0x6f,0x05,0x71,0x34,0xa5,0x2b,0x77,0x51,0x25,
+ 0x29,0x4a,0x22,0x52,0x94,0xa2,0x25,0x46,0x0f,0x10,0xbd,0xd2,0x0d,0xb0,0x68,0x24,
+ 0xe9,0x56,0xa9,0x48,0x67,0x35,0xbf,0xf5,0x5b,0x6c,0x68,0x3d,0xd4,0xda,0xc8,0xfb,
+ 0xd9,0x20,0x7f,0xb2,0x41,0xe4,0x1e,0xe3,0xad,0x4d,0x82,0x08,0x35,0x27,0xeb,0xcf,
+ 0x9f,0x88,0x76,0xe5,0x17,0xb9,0x1d,0xc5,0xde,0x26,0x40,0x96,0xe3,0xd8,0x95,0x80,
+ 0xaa,0xd1,0x65,0x6c,0xab,0xee,0xd4,0xda,0x14,0x43,0xb2,0x12,0x07,0x6f,0xbd,0x70,
+ 0x29,0x41,0x5e,0xa5,0x01,0xb0,0x7f,0x64,0x00,0x45,0xa1,0x30,0x1c,0x1e,0xf3,0xaa,
+ 0x39,0xc5,0x9b,0x16,0xb1,0xb0,0x65,0xde,0xaf,0x12,0xd1,0x16,0x3a,0x54,0x4f,0x1d,
+ 0x4a,0x3d,0xd4,0xb2,0x01,0xe1,0x29,0x1c,0xa9,0x4a,0xf6,0x00,0x9f,0x6a,0xbf,0x9d,
+ 0x06,0xd1,0x9b,0x2e,0x81,0x69,0x5d,0x8f,0x0a,0xb2,0x24,0x29,0x88,0x0d,0x73,0x22,
+ 0x57,0x4f,0x0b,0x97,0x21,0x5d,0xdd,0x79,0x5d,0xcf,0x75,0x2b,0x9e,0x07,0x3f,0x28,
+ 0xe9,0x48,0xec,0x91,0x50,0x97,0xc2,0x6f,0x6e,0x7f,0x66,0xda,0x2e,0x5a,0xc1,0x7a,
+ 0x8a,0xa1,0x26,0x77,0x5d,0xba,0xc2,0x97,0x12,0x38,0x4b,0x00,0xf0,0xfc,0x81,0xf8,
+ 0xa9,0x43,0xcb,0x07,0xb7,0x01,0x0e,0x7a,0x85,0x0a,0xb1,0x95,0xad,0x2d,0x21,0x4b,
+ 0x5a,0x82,0x10,0x90,0x4a,0x94,0xa3,0xc0,0x03,0xdc,0x9a,0xf9,0x4b,0xe2,0x5e,0x63,
+ 0x38,0x85,0x77,0xd9,0x54,0xee,0xfe,0x5c,0x27,0xbd,0xe6,0xff,0x00,0x1f,0xcb,0xc7,
+ 0xad,0xd6,0x46,0x06,0x69,0x1a,0x8f,0x8a,0xe8,0xb3,0xec,0x2e,0x06,0xa3,0xe1,0x77,
+ 0xac,0x5e,0xea,0xe4,0x96,0xad,0x97,0x78,0xab,0x87,0x28,0xc3,0x74,0xb4,0xe9,0x69,
+ 0x63,0x85,0x80,0xa1,0xe9,0xc8,0xe4,0x1f,0xc0,0x9a,0xd6,0xfa,0x57,0xb5,0xed,0x24,
+ 0xdb,0x5c,0x29,0x77,0x9c,0x67,0x16,0x62,0x14,0xc8,0xcc,0x38,0xf3,0xf7,0x89,0x01,
+ 0xc9,0xb3,0x42,0x02,0x0f,0x5f,0x42,0x95,0xd4,0xa4,0xf2,0x9e,0x41,0x43,0x40,0x75,
+ 0x7d,0x09,0xae,0xbf,0x6e,0xdb,0xc1,0xc3,0xb7,0x29,0x96,0x66,0xd6,0x2c,0x71,0x0e,
+ 0xb2,0xe6,0x3b,0x20,0x06,0x1e,0x7d,0x63,0x8b,0x94,0x52,0x7a,0x7e,0x25,0xb4,0xf6,
+ 0x29,0x4f,0x58,0x23,0x83,0xdc,0x05,0x36,0x4f,0x05,0x65,0x29,0xde,0xd5,0xcc,0x67,
+ 0x38,0x9e,0x11,0xaf,0x0d,0xa8,0x2f,0x8c,0x1b,0x17,0x32,0xe4,0x5e,0xe0,0x11,0x71,
+ 0xc1,0xdb,0xad,0xed,0xd2,0xea,0x71,0xa5,0xdd,0xe0,0xab,0x73,0x77,0x1e,0x28,0x96,
+ 0xd7,0x6c,0x93,0x71,0x4d,0x1a,0x7d,0xf9,0x13,0x24,0xa0,0xb5,0x23,0x2c,0x5b,0x6a,
+ 0x65,0x2c,0x20,0x8f,0x98,0x45,0x42,0xc0,0x59,0x5f,0x7e,0x3c,0xc5,0x04,0xf4,0xf0,
+ 0x4a,0x42,0x89,0x0a,0x4f,0x55,0xe1,0x05,0xa5,0x0b,0x99,0x78,0xcd,0x75,0x36,0x68,
+ 0x2a,0x4b,0x08,0x4d,0x8e,0x12,0x95,0xdf,0xa9,0xc5,0xf4,0xbd,0x21,0x47,0xe8,0x40,
+ 0x0c,0x80,0x7d,0xfc,0xc5,0x7d,0x2a,0x18,0xee,0x87,0x00,0x6b,0x4e,0x77,0x1b,0xa8,
+ 0x38,0xc4,0x06,0xba,0x62,0x45,0xbd,0x3f,0xf0,0x6c,0x36,0x3f,0x61,0x97,0x15,0xe6,
+ 0x34,0x80,0x3d,0xf8,0x42,0xd2,0x3f,0x4a,0xba,0x5d,0xa2,0xe8,0xea,0xb4,0x2b,0x6f,
+ 0x78,0x86,0x2b,0x26,0x32,0x63,0x5d,0xd1,0x1b,0xe3,0x2e,0x89,0x1c,0x15,0x7c,0x5b,
+ 0xc7,0xcc,0x74,0x28,0x8e,0xca,0x28,0xe4,0x37,0xcf,0xd1,0xb1,0x5d,0xc7,0x33,0x33,
+ 0x0d,0xcb,0x39,0x59,0x94,0xb8,0x58,0xb1,0xaa,0xd3,0xb9,0xdd,0xce,0x6d,0x83,0x89,
+ 0x27,0xd2,0xc2,0xc0,0x00,0x35,0x6c,0x37,0x56,0xb1,0xea,0x92,0x4b,0xbb,0xc1,0x44,
+ 0x6f,0x18,0x0d,0x57,0x10,0xec,0x18,0x5e,0x9c,0x44,0x96,0x03,0xd3,0x1e,0x5d,0xee,
+ 0xe0,0xc2,0x09,0x0a,0x0d,0x23,0xa9,0xa8,0xfd,0x5f,0x54,0xa9,0x4a,0x7c,0xf1,0xf5,
+ 0x68,0x1f,0x61,0x53,0xd7,0x18,0x74,0xe2,0xba,0x6d,0x68,0x72,0xe0,0xb5,0x28,0xdb,
+ 0x6d,0x0c,0xaa,0x42,0xdc,0x3f,0x31,0xf2,0xd9,0x1d,0x64,0x93,0xef,0xf2,0x9a,0xa4,
+ 0x0d,0xcf,0x6a,0x7a,0xf7,0x23,0xba,0x7b,0xdd,0xd6,0x17,0xf4,0x8b,0x7c,0xcb,0x9b,
+ 0x56,0x9b,0x4a,0x1b,0x57,0x50,0x5c,0x66,0xd4,0x19,0x69,0x49,0xff,0x00,0xc4,0xe0,
+ 0xb9,0xc7,0xd5,0xc3,0x57,0x3f,0xb8,0x5b,0x81,0xc7,0xf6,0xf7,0xa8,0xf2,0xd2,0xae,
+ 0x83,0x17,0x1a,0xb8,0x29,0x2a,0x1e,0xc4,0x46,0x5f,0x15,0xab,0xe6,0x6c,0x23,0xec,
+ 0xdc,0x2f,0x06,0xc2,0xdc,0x2c,0xf7,0x6a,0x73,0xba,0xea,0x79,0x67,0xed,0x7b,0x7b,
+ 0x29,0x23,0x7d,0xdc,0xe7,0x2a,0xaa,0xc6,0xb6,0x5f,0x97,0xeb,0xbe,0xd7,0x74,0xff,
+ 0x00,0x2f,0xc1,0xac,0xad,0xdd,0xb2,0x49,0x17,0x7b,0x9b,0x77,0x15,0x39,0x29,0x98,
+ 0xe5,0xc8,0xc5,0xc0,0x1b,0x59,0x53,0xab,0x48,0x21,0x0e,0x34,0xe8,0xe0,0x72,0x7e,
+ 0xf7,0xd3,0x81,0xdb,0xfb,0xb7,0xf8,0x54,0x6b,0xa4,0xc4,0xa4,0xbc,0xce,0x3b,0x00,
+ 0x9f,0x51,0x22,0xe9,0xc9,0x1f,0xe0,0x42,0xaa,0xca,0xb6,0x4f,0x88,0x7f,0x90,0xbb,
+ 0x50,0xd3,0x4b,0x62,0xb9,0x05,0x56,0x94,0xdc,0x17,0xd5,0xfb,0xa6,0x4a,0xd7,0x24,
+ 0x83,0xf9,0x17,0x88,0xfd,0x2b,0x76,0x25,0x41,0x69,0x0a,0x49,0x0a,0x49,0x1c,0x82,
+ 0x3d,0x08,0xa9,0xab,0xbe,0x23,0xe2,0xf4,0x35,0x75,0x14,0xd4,0x9a,0x0c,0x6d,0x91,
+ 0xfa,0x49,0x04,0x9b,0x6a,0x36,0xf1,0xb7,0xa6,0xdc,0x2a,0x08,0x1a,0x40,0x25,0x53,
+ 0x3d,0xdb,0xc2,0xaf,0x5d,0x6d,0xcc,0xa9,0x71,0xe2,0xe3,0xf7,0x55,0x01,0xc8,0x6e,
+ 0x25,0xd4,0x25,0x47,0xf0,0x1e,0x6a,0x50,0x3f,0xbc,0xd6,0x00,0xf6,0xc1,0x35,0xee,
+ 0x26,0x43,0x6d,0xb4,0x49,0xd3,0xbb,0x83,0x2e,0xce,0x7d,0x2c,0x26,0x52,0x1d,0x69,
+ 0xf8,0xac,0xf3,0xfb,0xee,0xba,0xd2,0xd6,0x96,0xd0,0x07,0x72,0xa5,0x1f,0xcb,0x93,
+ 0xc0,0xab,0xcc,0xba,0x5e,0x6d,0xf6,0x38,0xe9,0x7e,0xe5,0x3a,0x35,0xbd,0x85,0x28,
+ 0x20,0x3b,0x29,0xe4,0xb4,0x92,0xa3,0xe8,0x39,0x51,0x03,0x9e,0xc7,0xb5,0x75,0x12,
+ 0xf5,0x23,0x13,0x83,0x02,0x54,0xd7,0xf2,0x6b,0x4b,0x71,0x22,0xb4,0xa7,0x9e,0x77,
+ 0xe3,0x5b,0x21,0xb4,0x24,0x12,0xa5,0x1e,0x15,0xe8,0x00,0x27,0xf4,0xa5,0x3f,0xc5,
+ 0x0c,0x7e,0xdb,0xc2,0xc7,0xdf,0xf0,0xbb,0x9f,0x67,0x5b,0xf4,0x43,0x4e,0xc5,0x50,
+ 0x5b,0xc4,0xd2,0xcb,0x56,0x82,0xc1,0xc0,0x34,0x27,0x11,0x22,0xef,0x7e,0x7c,0x22,
+ 0xf3,0x90,0x4d,0x69,0x20,0xbd,0x72,0xb8,0xba,0x4b,0x31,0x9b,0xe3,0xb9,0x42,0x5b,
+ 0x4f,0x9b,0xd0,0xdf,0x3e,0x8f,0xf5,0x1e,0x4a,0x8a,0x8c,0x59,0xc9,0xb1,0xd9,0x58,
+ 0xb6,0x51,0x75,0xb0,0xca,0xe9,0x5c,0xdb,0x74,0xc7,0x60,0xbb,0xe5,0x72,0x52,0x5c,
+ 0x6d,0x65,0x0a,0xe9,0xfa,0x8e,0x41,0xe2,0xa6,0x16,0xda,0x10,0xf6,0xef,0xbc,0x42,
+ 0xe4,0x66,0xf3,0x1a,0x71,0x16,0xc8,0xb3,0xdd,0xc9,0x14,0xd3,0x87,0x95,0xb5,0x1e,
+ 0x39,0x4a,0x21,0xb6,0x4f,0xa1,0x29,0x57,0xc3,0x24,0xfd,0x42,0x55,0xc5,0x70,0xb4,
+ 0xc3,0x45,0x86,0xa4,0xf8,0x95,0xdf,0xec,0x12,0xa1,0x99,0x16,0x9b,0x56,0x5b,0x72,
+ 0xbb,0xce,0x41,0x48,0x28,0xf8,0x76,0x24,0x2d,0xc4,0x75,0x8f,0xe0,0x5a,0xfc,0x94,
+ 0x11,0xef,0xe6,0x71,0xef,0x5d,0x92,0x87,0x16,0xfb,0x22,0x37,0xd2,0xd6,0xbb,0x54,
+ 0x91,0x43,0xdb,0x4a,0x7c,0x4b,0x9c,0x49,0x23,0xdb,0x80,0x3a,0x69,0x03,0x6b,0x05,
+ 0x6c,0xe6,0xea,0xdc,0x78,0x9b,0x29,0x93,0xa8,0x3a,0x10,0xbd,0x3e,0xf0,0xc9,0xbc,
+ 0x60,0x6f,0xa0,0x19,0xd6,0xdc,0x6c,0x5c,0xa6,0xa5,0x3d,0xc0,0x92,0x87,0x93,0x35,
+ 0xe0,0x08,0xf5,0x09,0x5a,0x54,0x01,0xf7,0x09,0x15,0xd4,0xf8,0x46,0x3f,0xe6,0xed,
+ 0xb2,0xfa,0xdf,0xfa,0xbc,0x9a,0x40,0xfe,0xf8,0xd1,0x8f,0xfd,0xea,0x4f,0xee,0x12,
+ 0x0f,0xda,0x9a,0x09,0xa9,0x30,0xf8,0xea,0xf3,0xf1,0xbb,0x93,0x7c,0x7d,0x79,0x8a,
+ 0xe0,0xa8,0x9b,0xe0,0xfd,0x2c,0x2f,0x42,0x73,0x18,0xbf,0xbc,0xd6,0x48,0xa7,0x0f,
+ 0xe4,0xa8,0xac,0x0f,0xfd,0x86,0xb8,0x24,0x75,0x92,0xd7,0xe5,0x4c,0x42,0x49,0x4d,
+ 0xdc,0x67,0x6b,0xcf,0xab,0xf9,0xfd,0x95,0xd9,0x16,0x91,0xa0,0x74,0x53,0xc6,0xa1,
+ 0xcf,0x8a,0xa6,0x04,0xee,0x59,0xb6,0x05,0x5e,0x23,0xb6,0x16,0xee,0x37,0x76,0x8d,
+ 0x3d,0xc3,0xc7,0x2a,0xf2,0x57,0xd5,0x1d,0x5c,0x7f,0x69,0xe6,0xc9,0xfc,0x12,0x4f,
+ 0xb5,0x6b,0x1f,0x10,0xfd,0x6e,0xcc,0xb4,0x2b,0x73,0x9a,0x57,0x7d,0xb3,0x64,0x97,
+ 0x78,0x36,0x06,0xe0,0xb4,0xfc,0xcb,0x3c,0x79,0xae,0x26,0x1c,0xb0,0xdc,0xb7,0x3c,
+ 0xe0,0xe3,0x21,0x5d,0x0a,0x2b,0x6d,0x41,0x24,0x91,0xcf,0x01,0x3d,0xfe,0x51,0xc4,
+ 0xe1,0xd5,0x6c,0x32,0x36,0xb0,0x69,0x0e,0x51,0x8c,0xb3,0x21,0x95,0x33,0x90,0x5a,
+ 0x1f,0x8b,0x1e,0x57,0x3d,0x6d,0x85,0x3a,0xd1,0xf2,0x9c,0xe4,0x7a,0x80,0xa2,0x95,
+ 0x76,0xfa,0x56,0x22,0x8a,0x92,0x5c,0xb9,0x3e,0x19,0x8d,0x3d,0xc0,0xc7,0x21,0xd5,
+ 0xe8,0x1a,0xeb,0x38,0x1f,0x62,0xbd,0x92,0x1e,0x1c,0xc5,0x1b,0xfc,0x38,0xf4,0x47,
+ 0x05,0xb4,0xed,0x75,0xab,0xa4,0x50,0xde,0x4a,0xe6,0x6e,0xd2,0x95,0x7c,0x33,0xe3,
+ 0x8f,0x2d,0x5d,0x05,0x6d,0x18,0x65,0xa2,0x48,0x2d,0xb6,0x7c,0xd1,0xc9,0xee,0xbe,
+ 0xb2,0xae,0xc0,0xa5,0x29,0x8a,0x9b,0xa1,0xda,0x56,0x4f,0xb2,0xcd,0x49,0xb6,0x6a,
+ 0xfe,0x96,0x17,0xe4,0xe2,0x10,0x27,0x22,0x5a,0x01,0x2a,0x5b,0x96,0x85,0xf5,0x01,
+ 0xe4,0x3e,0x41,0xea,0x5c,0x77,0x3a,0x8a,0x02,0xc9,0xf4,0x51,0x42,0xcf,0x24,0x29,
+ 0x7b,0x93,0xc2,0x33,0x52,0x25,0x2b,0x1a,0xce,0xb4,0xce,0xe6,0x3c,0xa9,0x56,0x49,
+ 0x89,0xb9,0x46,0x69,0xc3,0xf7,0x89,0x4b,0x9f,0x76,0xfa,0x38,0xf6,0x08,0x5b,0x68,
+ 0x3f,0x9b,0xa7,0xf0,0xab,0x03,0xb8,0x5b,0xe2,0xdd,0xa0,0x49,0x83,0x3a,0x33,0x33,
+ 0x61,0x49,0x6d,0x4c,0xbf,0x1a,0x43,0x61,0xc6,0xdd,0x6d,0x43,0x85,0x21,0x49,0x3c,
+ 0x85,0x24,0x82,0x41,0x07,0xb1,0x06,0xb6,0x3c,0x47,0x1c,0xc4,0x32,0xc6,0x66,0xac,
+ 0xed,0x5d,0xda,0xc7,0x23,0xbb,0xcd,0x77,0x0f,0x63,0x87,0x77,0xc8,0x10,0xd2,0x00,
+ 0x20,0x6d,0xc5,0xad,0x70,0xa3,0x6b,0x1b,0x24,0x63,0xc1,0x62,0x9a,0x3b,0xaa,0x76,
+ 0x8d,0x6a,0xd3,0x3c,0x7f,0x35,0xb1,0xac,0x7c,0x05,0xda,0x32,0x5e,0xf2,0xba,0xfa,
+ 0x94,0xc3,0x83,0xe5,0x71,0x95,0x1e,0x07,0xcc,0x85,0x85,0x24,0xf6,0xef,0xd3,0xcf,
+ 0xa1,0xaa,0xa2,0xf1,0x1f,0xdb,0x83,0xba,0x0d,0xac,0x71,0xf3,0x8c,0x61,0xa5,0xdb,
+ 0xf1,0xac,0x95,0xf5,0x4c,0x8e,0xa8,0x61,0x4d,0x8b,0x7d,0xc1,0x24,0x29,0xc4,0x25,
+ 0x43,0xf6,0x3a,0x8f,0xde,0xa3,0x82,0x38,0xe5,0x61,0x20,0x06,0xea,0xc4,0xb4,0x53,
+ 0x43,0xe5,0x6d,0xa7,0x3d,0xbc,0xd9,0x71,0xa2,0xf4,0xbd,0x2c,0xc9,0x1d,0x54,0xe8,
+ 0xb0,0x55,0xf3,0xb9,0x61,0xb8,0x00,0x3a,0xd0,0x0f,0xaa,0xa3,0xba,0x80,0x38,0x51,
+ 0x27,0xa1,0x4d,0xa5,0x27,0xf6,0xfa,0x8e,0x59,0xb9,0x8d,0x11,0x83,0xb8,0x4d,0x18,
+ 0xc8,0xb0,0xc9,0x41,0x28,0x97,0x25,0x9f,0x3e,0xdd,0x25,0x5d,0xbe,0x1e,0x62,0x39,
+ 0x53,0x2b,0xe7,0xe9,0xd5,0xf2,0xab,0xea,0x95,0x28,0x76,0xe6,0xb1,0x78,0x0e,0x35,
+ 0x06,0x59,0xc7,0x84,0xf4,0xaf,0xbd,0x2c,0x9b,0x1e,0xba,0x0f,0x51,0xfd,0x4c,0x3c,
+ 0xf5,0xb1,0xb6,0xce,0xb9,0xf4,0xf6,0x19,0x19,0x63,0xca,0xee,0x36,0x27,0xb9,0xb6,
+ 0xf7,0x49,0xa0,0x56,0xac,0x82,0x5b,0xa9,0x39,0x4d,0xb4,0x8b,0x65,0xf5,0xa4,0xa4,
+ 0x27,0x99,0x48,0x48,0x3e,0x68,0x48,0xe0,0x04,0xba,0x92,0x95,0x8e,0x00,0x00,0xa9,
+ 0x49,0x1f,0xb3,0x52,0x1e,0xa8,0x67,0xc3,0x97,0x5e,0xe7,0x6d,0x77,0x74,0x88,0xc7,
+ 0xb2,0x4e,0xbb,0x5d,0x93,0x21,0x7c,0x63,0xb7,0xc8,0xd2,0xd5,0xe5,0x88,0x92,0x43,
+ 0x85,0x2c,0xba,0xb0,0x48,0x00,0xb6,0xe9,0x28,0x25,0x5d,0x92,0x87,0x1c,0x35,0x7c,
+ 0xd5,0xf6,0x50,0x21,0xc0,0x39,0xa6,0xe0,0xac,0x5a,0x52,0x94,0xaa,0xa2,0x52,0x94,
+ 0xa2,0x28,0xb1,0xe2,0x4b,0xb8,0x03,0xa0,0x7b,0x5f,0xbf,0x39,0x01,0xf7,0x18,0xc8,
+ 0xb2,0x52,0x6c,0x36,0xc5,0xb2,0xae,0x95,0xb4,0xa7,0x50,0xaf,0x35,0xd0,0x79,0x05,
+ 0x3d,0x0d,0x07,0x38,0x50,0xee,0x16,0x51,0xf5,0xe4,0x51,0x6e,0x90,0x69,0x9d,0xcf,
+ 0x58,0xf5,0x37,0x1b,0xc2,0xec,0xe8,0x26,0x75,0xe2,0x62,0x23,0x05,0xf1,0xc8,0x65,
+ 0xbf,0x57,0x1d,0x57,0xf2,0xa1,0x01,0x4b,0x3f,0x82,0x4d,0x4b,0x9f,0x17,0xad,0x6f,
+ 0x1a,0x91,0xb9,0x16,0x70,0xf8,0x32,0x54,0xed,0xa3,0x0a,0x88,0x21,0xa9,0x00,0x82,
+ 0x83,0x35,0xde,0x1c,0x90,0xa1,0xf9,0x27,0xc9,0x6c,0xf3,0xe8,0x5a,0x57,0xeb,0x9b,
+ 0x78,0x44,0x68,0x98,0x9b,0x76,0xca,0x35,0x4a,0xe3,0x13,0xa9,0xb8,0x43,0xec,0x6b,
+ 0x4b,0xab,0xe3,0x8f,0x35,0x40,0x2e,0x4a,0xd2,0x3d,0x79,0x4a,0x0b,0x68,0x07,0xd3,
+ 0x87,0x56,0x3e,0xbc,0x6b,0x19,0x97,0x17,0x6e,0x07,0x85,0x4f,0x5d,0xf7,0x9a,0x2c,
+ 0xdf,0x37,0x1d,0x9b,0xfa,0xee,0x7c,0x81,0x52,0x46,0xdd,0x6e,0x01,0x59,0x1e,0x15,
+ 0x87,0xda,0xf4,0xff,0x00,0x11,0xb3,0x63,0x36,0x48,0xe2,0x2d,0xa2,0xd3,0x11,0xa8,
+ 0x51,0x5a,0xe7,0x92,0x96,0xd0,0x90,0x91,0xc9,0xf7,0x27,0x8e,0x49,0x3d,0xc9,0x24,
+ 0x9f,0x5a,0x88,0x9e,0x27,0xfb,0x8e,0x3a,0x57,0xa4,0xad,0xe0,0xb6,0x69,0x41,0xbc,
+ 0x93,0x2f,0x6d,0x6d,0x3c,0x5b,0x73,0x87,0x23,0xdb,0xc7,0x67,0x54,0x40,0xee,0x3c,
+ 0xc3,0xf7,0x43,0x9e,0xc4,0x79,0xbc,0x77,0x4d,0x4d,0x37,0x1c,0x43,0x4d,0xa9,0x6e,
+ 0x29,0x28,0x42,0x41,0x52,0x94,0xa3,0xc0,0x48,0x1e,0xa4,0x9f,0x61,0x54,0x07,0xba,
+ 0xfd,0x6c,0x7f,0x5f,0xf5,0xdf,0x27,0xcb,0x0b,0xbd,0x76,0xc5,0x3e,0x62,0x5a,0xd0,
+ 0x39,0x01,0x10,0x9a,0x25,0x2d,0x70,0x0f,0x70,0x54,0x39,0x59,0xfe,0x65,0xab,0xd3,
+ 0xd2,0xbe,0x65,0xf8,0x7b,0x82,0x1c,0x73,0x19,0x35,0x55,0x3d,0xe6,0x43,0xdf,0x75,
+ 0xfc,0x5c,0x4f,0x74,0x1f,0x7b,0xb8,0xf5,0xb7,0x9a,0xbf,0x99,0xfa,0x1b,0x61,0xe2,
+ 0xb7,0x1f,0x85,0x65,0xd5,0xeb,0x76,0xec,0x22,0x47,0x6c,0x90,0x89,0xf6,0x69,0xb1,
+ 0x9d,0x03,0xdd,0x20,0x25,0xde,0xff,0x00,0xda,0x69,0x35,0x73,0x55,0x53,0x5e,0x11,
+ 0x9a,0x5d,0x3a,0xf5,0xab,0xd9,0x0e,0x76,0xe3,0x5d,0x36,0x8b,0x1d,0xb9,0x50,0x50,
+ 0xe9,0xf5,0x5c,0xa7,0xd4,0x9e,0x12,0x9f,0xaf,0x4b,0x68,0x70,0x9f,0xa7,0x52,0x3e,
+ 0xb5,0x63,0xfb,0x8a,0xd5,0x96,0x74,0x3f,0x45,0x72,0xcc,0xcd,0x7d,0x0a,0x93,0x6e,
+ 0x86,0xaf,0x82,0x69,0xcf,0x47,0x65,0x2f,0x84,0x30,0x8e,0x3d,0x48,0x2e,0x29,0x1c,
+ 0xf1,0xdf,0x8e,0x4f,0xb5,0x5d,0xfc,0x46,0x68,0xaf,0xcc,0xcd,0xa5,0xa6,0xdd,0xe5,
+ 0xac,0x65,0xbf,0x11,0x26,0xc3,0xe8,0x42,0xa4,0x1b,0x47,0x72,0xab,0xd7,0x46,0xb4,
+ 0xb1,0xbd,0xcf,0xf8,0x8c,0xea,0x06,0x59,0x2e,0x3a,0x65,0xe2,0x38,0xad,0xf1,0xd9,
+ 0xaf,0x38,0x4f,0xdd,0xbe,0xe3,0x0e,0x79,0x30,0xd1,0xf8,0x85,0x29,0xa0,0xe7,0x07,
+ 0xb1,0x4b,0x6a,0x07,0xd4,0x03,0x64,0x7a,0xb7,0x85,0xdc,0x75,0x1b,0x4d,0x32,0x4c,
+ 0x5e,0xd5,0x7d,0xff,0x00,0x26,0xa6,0xde,0x21,0x2e,0x12,0x6e,0xa2,0x31,0x90,0x63,
+ 0xa1,0x7f,0x2b,0x84,0x36,0x16,0x8e,0x54,0x50,0x54,0x01,0xea,0x1c,0x12,0x0f,0x7e,
+ 0x38,0x3a,0xc7,0x65,0x1a,0x06,0xad,0x01,0xd0,0xeb,0x65,0xbe,0xe4,0xd2,0x46,0x57,
+ 0x78,0x57,0xda,0xd7,0xc7,0x88,0xe5,0xc3,0x25,0xc0,0x08,0x69,0x47,0xfd,0x9a,0x7a,
+ 0x51,0xc0,0xed,0xd4,0x16,0x47,0xed,0x12,0x79,0x5a,0xa3,0xbd,0x7d,0x1c,0xd1,0xbc,
+ 0xc5,0xfc,0x5b,0x29,0xcb,0x93,0x0e,0xf9,0x1d,0x28,0x54,0x88,0xac,0x43,0x7e,0x47,
+ 0x91,0xd4,0x02,0x92,0x16,0xa6,0xd0,0xa0,0x0f,0x04,0x1e,0x9e,0x79,0xe0,0x8e,0xdd,
+ 0xc5,0x61,0x71,0xca,0xda,0xbc,0x6f,0x16,0x64,0x58,0x4b,0x1d,0x23,0x69,0x83,0x5b,
+ 0x18,0x6b,0x75,0x6c,0xcb,0x0d,0x56,0xb1,0x04,0x13,0xd4,0x5a,0xd6,0x05,0x7b,0x60,
+ 0x0c,0x6d,0xdd,0xe2,0xb4,0x66,0x8b,0x78,0x54,0x62,0x5a,0x5d,0x9c,0x58,0x32,0x9b,
+ 0xbe,0x6b,0x73,0xc9,0xa7,0x59,0x66,0xb5,0x70,0x8f,0x1d,0xb8,0x4d,0xc3,0x8e,0xb7,
+ 0x5a,0x58,0x5a,0x3a,0xd3,0xd4,0xe2,0x8a,0x42,0x80,0x3c,0x05,0x0e,0x78,0xef,0xdb,
+ 0xb5,0x6d,0x2f,0x11,0x4c,0xac,0xe2,0x9b,0x41,0xce,0xd4,0xdb,0xbe,0x5c,0x9b,0x82,
+ 0x23,0x5b,0x9a,0xe7,0xf7,0xbc,0xd9,0x0d,0x87,0x07,0xfe,0x50,0x72,0xb7,0x9e,0x07,
+ 0x9f,0xe3,0xba,0x9f,0x8b,0x42,0xc8,0xf1,0x5b,0xbc,0x6b,0xe5,0x92,0x62,0x4a,0x99,
+ 0x99,0x15,0x5c,0xa4,0xf0,0x78,0x29,0x20,0xf0,0x52,0xa0,0x7b,0x14,0xa8,0x02,0x0f,
+ 0x62,0x05,0x42,0x2f,0x18,0x0c,0xe9,0x8b,0x66,0x92,0x61,0x78,0x92,0x54,0x7e,0x32,
+ 0xef,0x77,0x5c,0xf3,0xc1,0xec,0x19,0x8c,0xd1,0x4a,0x81,0xfc,0xd5,0x21,0xbe,0x3f,
+ 0xdd,0x35,0x2e,0x15,0x57,0x8a,0x66,0x2c,0xcd,0x46,0xcc,0x51,0xe5,0xef,0x63,0xc6,
+ 0xc4,0x01,0x60,0xd3,0xa8,0x8b,0x00,0x00,0xe3,0x7d,0x95,0x1c,0x1a,0xc8,0xce,0x95,
+ 0x5a,0x79,0x46,0xb3,0xe7,0xb9,0xb5,0x92,0x35,0x9a,0xfd,0x99,0x5f,0x2e,0xd6,0x78,
+ 0xc8,0x43,0x6c,0xdb,0xa5,0xcf,0x75,0x71,0xd0,0x94,0x00,0x10,0x03,0x65,0x5d,0x3d,
+ 0x80,0x1c,0x76,0xab,0xda,0xdb,0x06,0x28,0xee,0x13,0xb7,0x5d,0x37,0xb2,0xbe,0x16,
+ 0x99,0x31,0xac,0x10,0xcb,0xe8,0x73,0xd5,0x0e,0xad,0xa4,0xad,0x69,0xfd,0x14,0xa5,
+ 0x0f,0xd2,0xa8,0x63,0x4c,0x70,0xc7,0xf5,0x17,0x51,0xf1,0x6c,0x56,0x31,0xe8,0x7e,
+ 0xf5,0x74,0x8d,0x6f,0x4a,0xf8,0xe4,0x23,0xcd,0x75,0x28,0xea,0x3f,0x80,0xea,0xe4,
+ 0xfe,0x02,0xbd,0x19,0x32,0xc2,0x23,0x32,0xdb,0x2d,0x27,0xa5,0xb6,0xd2,0x10,0x94,
+ 0x8f,0x60,0x3b,0x01,0x5b,0xf7,0xc5,0x79,0x62,0xa7,0x86,0x92,0x86,0x16,0x86,0x82,
+ 0x5c,0xf2,0x00,0xb7,0x40,0x0e,0xdd,0x6e,0x7e,0x8a,0x1a,0x70,0x4d,0xc9,0x55,0x27,
+ 0xe2,0xe7,0x9f,0x39,0x7b,0xd7,0x2c,0x7b,0x15,0x6a,0x61,0x76,0x15,0x8a,0xce,0x97,
+ 0x9c,0x8c,0x15,0xf2,0xb5,0x25,0xf5,0xa9,0x4a,0x24,0x7f,0x11,0x6d,0x0c,0x1f,0xcb,
+ 0x8f,0xad,0x41,0x4a,0xdc,0x5b,0xc3,0xcb,0xd7,0x9c,0xee,0x87,0x53,0x2e,0xcb,0x74,
+ 0x3e,0x3e,0xda,0x7e,0x1b,0x6e,0x03,0xc8,0x2d,0xc7,0x3f,0x0e,0xdf,0x07,0xdc,0x74,
+ 0x34,0x9a,0xfb,0xed,0x13,0x6f,0x12,0xf7,0x29,0xad,0x16,0xac,0x67,0x87,0x5a,0xb1,
+ 0x47,0xfe,0x9b,0x79,0x96,0xd8,0xfe,0xa6,0x22,0x08,0xea,0x48,0x3e,0xca,0x59,0x21,
+ 0xb4,0x9f,0x62,0xbe,0x78,0x21,0x26,0xba,0xd6,0x0a,0xd8,0x32,0xfe,0x5d,0x80,0xd4,
+ 0x1d,0x2d,0x8e,0x30,0xe7,0x7a,0x91,0xa9,0xdf,0xa9,0x36,0xf1,0x2a,0xd9,0xf7,0x7c,
+ 0x86,0xca,0xc6,0x3c,0x2b,0x74,0x31,0xcd,0x3c,0xd1,0x49,0x99,0xb5,0xca,0x3a,0x5b,
+ 0xbb,0x66,0x0e,0xa5,0xe6,0x39,0x07,0xad,0x10,0x5a,0xea,0x4b,0x5c,0xf2,0x3b,0x75,
+ 0xa8,0xb8,0xbe,0xdd,0x8a,0x4b,0x67,0xf0,0x19,0xd6,0xdf,0x74,0x87,0xec,0x0d,0xdc,
+ 0x6e,0x23,0x35,0x5b,0x48,0xf2,0x64,0x4d,0x81,0x6d,0x88,0xe8,0xf5,0xea,0x72,0x1b,
+ 0x12,0xe4,0x8f,0xcb,0x97,0x63,0xfe,0xa0,0xfd,0x2a,0x4b,0xdb,0xad,0xd1,0x6c,0xf6,
+ 0xf8,0xb0,0x20,0xc6,0x6a,0x1c,0x18,0xad,0x21,0x86,0x23,0x30,0x80,0x86,0xda,0x6d,
+ 0x20,0x25,0x28,0x4a,0x47,0x60,0x90,0x00,0x00,0x0f,0x40,0x2b,0xe5,0x06,0xd3,0x16,
+ 0xd9,0x2a,0xe7,0x29,0x94,0x04,0x39,0x3d,0xf1,0x2a,0x42,0xbf,0x89,0x61,0xa6,0xda,
+ 0x07,0xfc,0x0d,0x20,0x7e,0x95,0xf2,0x4d,0x76,0x62,0xa8,0xae,0xaa,0xae,0xa9,0x76,
+ 0xdf,0xc4,0x0d,0x36,0xe8,0x03,0xda,0x40,0xf6,0x6b,0x6c,0xb2,0x41,0x80,0x00,0x3a,
+ 0x2f,0x8e,0x51,0x69,0x17,0xec,0x66,0xef,0x6c,0x23,0xa8,0x4d,0x86,0xf4,0x62,0x0f,
+ 0xbf,0x5a,0x0a,0x7f,0xef,0x50,0x0b,0xc1,0xc2,0x6f,0x99,0x83,0xea,0x5c,0x3e,0x7f,
+ 0xaa,0xb8,0xc3,0x77,0x8f,0xf7,0xda,0x70,0x7f,0xfc,0xea,0xc4,0x90,0x78,0x5a,0x7f,
+ 0x3a,0xae,0x9f,0x09,0x3b,0x7f,0xd8,0x59,0x26,0xbc,0x59,0xf8,0x29,0x4c,0x19,0xf6,
+ 0xe6,0x52,0x93,0xed,0xd2,0xb9,0xc8,0x3f,0xf4,0x8a,0xc9,0xe0,0xce,0xd5,0x96,0x71,
+ 0x68,0xcf,0x87,0x60,0x47,0xe7,0x20,0xfe,0xe1,0x51,0xdf,0x3b,0x4f,0xaf,0xec,0xb1,
+ 0x9f,0x19,0x38,0x41,0x37,0xad,0x2c,0x96,0x13,0xf3,0x2e,0x3d,0xc5,0xa2,0xaf,0xa8,
+ 0x0a,0x8e,0x40,0xff,0x00,0xd4,0x7f,0xbe,0xa6,0x16,0xc5,0xb3,0x71,0x9f,0x6d,0x3f,
+ 0x4e,0x67,0x97,0x3a,0xde,0x89,0x6e,0x16,0xb7,0x41,0x57,0x2a,0x4a,0xa3,0x2d,0x4c,
+ 0x00,0x7f,0x12,0x96,0xd2,0xaf,0xc9,0x42,0xb9,0xbb,0x92,0xda,0x46,0x1b,0xba,0x6f,
+ 0xf2,0x6c,0x65,0xd3,0x6f,0x31,0x13,0x62,0x5b,0xea,0x8e,0x9b,0x43,0xed,0x35,0xe6,
+ 0xf9,0xbe,0x5f,0x50,0x70,0xad,0xa5,0x92,0x3e,0xe9,0x3c,0x74,0xf1,0xea,0x7f,0x0e,
+ 0x32,0x7d,0x09,0xd0,0x6c,0x63,0x6e,0x98,0x4b,0x98,0xae,0x25,0xf1,0xdf,0x65,0xae,
+ 0x5a,0xe6,0xab,0xed,0x09,0x1e,0x73,0x9e,0x62,0xd2,0x84,0xab,0x83,0xc0,0x00,0x70,
+ 0x84,0xf6,0x03,0xd7,0x93,0xef,0x52,0xd7,0xe3,0x74,0x15,0x79,0x56,0x93,0x0b,0xdf,
+ 0xb7,0x89,0xc4,0xf1,0xb5,0x89,0x7e,0xd7,0xbf,0x42,0x0f,0xb2,0xa0,0x61,0x12,0x17,
+ 0x78,0x15,0x5f,0x71,0x10,0x9d,0xac,0x78,0xa8,0x2d,0xa4,0xbc,0xe4,0x3c,0x7b,0x30,
+ 0x94,0x47,0x71,0xc2,0x56,0xdd,0xc3,0xe6,0x09,0x3f,0x44,0x26,0x60,0x00,0x7d,0x03,
+ 0x60,0x9f,0x43,0x56,0x91,0x55,0xf1,0xe2,0xdf,0xa6,0x12,0x1e,0xc5,0xb0,0xad,0x4f,
+ 0xb5,0xb3,0xd1,0x36,0xc5,0x2f,0xec,0xe9,0x92,0x5a,0x4f,0xde,0x25,0xa7,0x0f,0x5b,
+ 0x0b,0x51,0xf6,0x4a,0x1d,0x4a,0x80,0xfe,0x67,0xc7,0xd6,0xa6,0xb6,0x8e,0x6a,0x24,
+ 0x6d,0x5a,0xd2,0xac,0x4f,0x31,0x8a,0x12,0x86,0xef,0x56,0xd6,0x65,0xad,0xa4,0x9e,
+ 0x43,0x4e,0x29,0x03,0xcc,0x6f,0x9f,0x7e,0x95,0xf5,0x27,0xfb,0x35,0x26,0x66,0x77,
+ 0xda,0x78,0x56,0x1d,0x8c,0x0d,0xdd,0xa4,0xc4,0xff,0x00,0xee,0x8f,0x82,0x7c,0xdc,
+ 0x0d,0xfd,0x15,0x19,0xdd,0x73,0x9b,0xee,0xb3,0x1a,0x54,0x54,0xcb,0x77,0x90,0x8d,
+ 0x00,0xdc,0x4c,0x9d,0x39,0xd5,0x3e,0x96,0xb1,0xbb,0xba,0x53,0x70,0xb0,0x65,0x6d,
+ 0x36,0x10,0x96,0x59,0x75,0x44,0x79,0x12,0xd0,0x3b,0x00,0x87,0x12,0xe2,0x03,0xa9,
+ 0xfd,0xd0,0xd9,0x5a,0x7b,0xa9,0x62,0x54,0x30,0xfb,0x52,0x98,0x6d,0xf6,0x1c,0x43,
+ 0xcc,0xba,0x90,0xb6,0xdc,0x6d,0x41,0x49,0x5a,0x48,0xe4,0x10,0x47,0x62,0x08,0xef,
+ 0xcd,0x69,0x15,0xb8,0x65,0x55,0x03,0x63,0x92,0x66,0xf7,0x24,0x1a,0x9a,0xe1,0xc3,
+ 0x87,0x91,0xea,0x3c,0x41,0xdc,0x78,0x85,0x28,0x70,0x3c,0x2a,0x85,0xf1,0x52,0xd0,
+ 0x71,0xa7,0xda,0xc9,0x13,0x3b,0xb6,0x44,0x2d,0x59,0x72,0xe6,0xca,0xa4,0x29,0xb1,
+ 0xf2,0x37,0x70,0x6c,0x00,0xef,0xa0,0xf9,0x7c,0xc4,0x14,0x2f,0xbf,0x75,0x2b,0xcd,
+ 0x3e,0xc7,0x8b,0x3f,0xd8,0x0e,0xbf,0x2f,0x71,0x3b,0x63,0xc6,0x6f,0xb3,0x9e,0x4b,
+ 0xd9,0x0d,0xb0,0x1b,0x35,0xdc,0x85,0x12,0xa5,0x49,0x60,0x24,0x07,0x15,0xcf,0xef,
+ 0x38,0xd9,0x69,0xc3,0xed,0xcb,0x84,0x0f,0x4a,0xc2,0x37,0xaf,0xa2,0x23,0x5e,0x76,
+ 0xef,0x93,0x58,0xe3,0xc4,0x32,0xef,0xb0,0x9b,0xfb,0x56,0xd0,0x94,0x0e,0x57,0xf1,
+ 0x4c,0x82,0x42,0x12,0x3d,0xcb,0x88,0x2e,0x37,0xc1,0xed,0xf7,0x9c,0xfa,0x80,0x6a,
+ 0x0f,0x78,0x36,0xeb,0x59,0xc2,0xf5,0xe2,0xf1,0xa7,0xd2,0xd6,0x7e,0xcf,0xcc,0x61,
+ 0x15,0xc7,0x1c,0xfe,0xcc,0xc8,0xc9,0x5b,0x89,0xf7,0xec,0x14,0xd1,0x7f,0x9f,0x7e,
+ 0x52,0x8a,0xfa,0xcb,0xe1,0xd6,0x35,0xf6,0xb6,0x0c,0xd8,0x64,0x37,0x92,0x1e,0xe1,
+ 0xf4,0xfb,0xa7,0xe9,0xb7,0xab,0x4a,0xc7,0x4e,0xdd,0x2e,0xbf,0x55,0x74,0x94,0xa5,
+ 0x2b,0xa9,0x2b,0x74,0xae,0x8f,0x3a,0xcb,0xa1,0xe0,0x18,0x46,0x43,0x94,0x5c,0x39,
+ 0xf8,0x0b,0x25,0xba,0x45,0xca,0x47,0x07,0x8f,0xbb,0x65,0xb5,0x38,0xae,0xff,0x00,
+ 0x92,0x4d,0x77,0x95,0x0e,0x3c,0x58,0xf5,0x15,0x78,0x1e,0xce,0xaf,0x90,0x98,0x7d,
+ 0x51,0xe5,0x64,0xb7,0x08,0xb6,0x54,0x29,0xb3,0xc2,0xba,0x4a,0x8b,0xee,0x8f,0xc9,
+ 0x4d,0xb0,0xb4,0x9f,0xc1,0x44,0x7b,0xd1,0x15,0x1c,0x66,0x99,0x6d,0xcf,0x50,0xb3,
+ 0x2b,0xe6,0x4d,0x77,0x70,0x3f,0x77,0xbd,0x4e,0x7a,0xe1,0x29,0x68,0x4f,0x01,0x4e,
+ 0xba,0xb2,0xb5,0x70,0x3d,0x87,0x2a,0x3c,0x0f,0x61,0x57,0xdb,0xb5,0xed,0x23,0x6f,
+ 0x43,0x74,0x1b,0x0f,0xc4,0x02,0x14,0x99,0x91,0x21,0x25,0xe9,0xe5,0x5e,0xa6,0x5b,
+ 0xa4,0xb8,0xff,0x00,0xe8,0x16,0xb5,0x24,0x7f,0x2a,0x52,0x2a,0x9f,0x76,0x11,0xa4,
+ 0xeb,0xd5,0xcd,0xd0,0xe2,0x10,0xdc,0x60,0x3d,0x6c,0xb3,0xbd,0xf6,0xe4,0xfe,0xa0,
+ 0x0a,0x43,0x51,0xc8,0x52,0x02,0x81,0xf5,0x0a,0x77,0xca,0x41,0x1f,0xcf,0xf4,0xab,
+ 0xb1,0xc2,0xb5,0x23,0x17,0xd4,0x76,0xee,0xae,0x63,0x37,0xc8,0x77,0xb4,0xda,0xe6,
+ 0xb9,0x6e,0x9a,0x62,0x39,0xd7,0xe4,0x48,0x6c,0xf0,0xa4,0x2b,0xfe,0xc7,0xd0,0x8e,
+ 0xe0,0x91,0x5f,0x38,0xfc,0x57,0xc4,0x64,0x90,0xc3,0x87,0x44,0x09,0x6b,0x3b,0xef,
+ 0xb7,0x00,0x9b,0xb5,0x97,0xe9,0xf7,0xb9,0xe6,0xea,0xfa,0x9d,0xbc,0xb9,0x6b,0xad,
+ 0xe8,0xe5,0x4f,0xe1,0x9b,0x56,0xd4,0xcb,0x9c,0x64,0xa8,0xbf,0xf6,0x42,0xe2,0x24,
+ 0xa3,0xd5,0x3e,0x7a,0x92,0xc1,0x57,0xe8,0x1d,0x27,0xf4,0xaa,0x3a,0xd2,0xcd,0x2d,
+ 0xc8,0xf5,0x97,0x39,0xb6,0x62,0x78,0xad,0xbd,0x77,0x0b,0xbc,0xf7,0x3a,0x52,0x91,
+ 0xd9,0x0d,0x23,0xf7,0x9d,0x71,0x5f,0xba,0x84,0x8e,0xe5,0x47,0xfe,0x7c,0x0a,0xf4,
+ 0x3d,0x91,0x63,0xd6,0xdc,0xb6,0xc3,0x70,0xb2,0xde,0x61,0x33,0x72,0xb5,0x4f,0x61,
+ 0x71,0xa5,0x44,0x90,0x9e,0xa4,0x3a,0xda,0x87,0x0a,0x49,0x1f,0x88,0x35,0x87,0x69,
+ 0x1e,0xdf,0xf4,0xf3,0x42,0x20,0x48,0x89,0x82,0x62,0xd0,0xf1,0xf4,0xc9,0x3c,0xbe,
+ 0xf3,0x65,0x6f,0x48,0x77,0xbf,0x20,0x2d,0xe7,0x54,0xa7,0x14,0x90,0x7d,0x12,0x55,
+ 0xc0,0xf6,0x02,0xb4,0xcc,0xab,0x9d,0x21,0xcb,0x18,0x65,0x45,0x3b,0x21,0x2e,0x9d,
+ 0xee,0xbb,0x4e,0xda,0x78,0x03,0xbd,0xbd,0xf6,0x3b,0xd8,0x0d,0xef,0xc8,0x52,0xc9,
+ 0x17,0x68,0xe0,0x6f,0xb2,0xe3,0xed,0xdf,0x43,0x6c,0xdb,0x76,0xd2,0x7b,0x3e,0x17,
+ 0x67,0x21,0xff,0x00,0x86,0x05,0xe9,0xb3,0xbc,0xb0,0x85,0xcd,0x94,0xbe,0x3c,0xd7,
+ 0x94,0x07,0xd7,0x80,0x90,0x09,0x24,0x21,0x28,0x4f,0x27,0xa7,0x9a,0xd3,0xd9,0x1c,
+ 0xe6,0xb7,0x3d,0xba,0xcb,0x76,0x2b,0x19,0x49,0x93,0x80,0xe9,0x43,0xe8,0xbb,0xdd,
+ 0x9d,0x4a,0x7a,0x9b,0x99,0x7c,0x21,0x49,0x8f,0x1f,0x9f,0x4e,0x19,0x1d,0x6a,0x3c,
+ 0x73,0xf3,0x05,0xa4,0x8f,0x43,0x5c,0x5d,0xf8,0x6f,0x46,0x06,0xdd,0xf0,0xf9,0x38,
+ 0xde,0x39,0x31,0x99,0x3a,0x91,0x74,0x67,0xa2,0x3b,0x48,0x3d,0x5f,0x66,0x34,0xa1,
+ 0xc1,0x92,0xe0,0xf6,0x57,0x1f,0xd5,0xa4,0xfa,0x9e,0x14,0x41,0x48,0xe0,0xff,0x00,
+ 0x7e,0x18,0x62,0xd0,0xf6,0xd4,0xad,0x93,0x60,0xbc,0x64,0x5e,0x66,0xdd,0x67,0xbf,
+ 0x7c,0x79,0x6b,0x2b,0x71,0x73,0x0b,0xc4,0x02,0xb2,0x7b,0xf2,0x58,0x11,0xcf,0xeb,
+ 0xcf,0xa9,0x35,0x8e,0x8e,0x92,0xba,0x9b,0x0d,0x9b,0x33,0x56,0x02,0x5f,0x2b,0xb4,
+ 0x30,0x9e,0x6e,0xf0,0x75,0x49,0xe9,0x60,0x5a,0xdf,0xc4,0x6e,0x38,0x0b,0xd5,0xc1,
+ 0x70,0x60,0xf0,0x5b,0x97,0x71,0xfa,0xdd,0x6e,0xdb,0xd6,0x8f,0x5f,0xf3,0x59,0xe9,
+ 0x4b,0xef,0x44,0x6b,0xca,0x83,0x11,0x47,0xff,0x00,0x9a,0x96,0xbf,0x95,0x96,0xfd,
+ 0x47,0x6e,0xae,0xea,0x23,0xb8,0x4a,0x54,0x78,0x3c,0x71,0x54,0x07,0x93,0x64,0x97,
+ 0x3c,0xc7,0x21,0xb9,0x5f,0x6f,0x53,0x1c,0xb8,0x5d,0xae,0x52,0x1c,0x97,0x2e,0x53,
+ 0xbc,0x75,0x3a,0xea,0xd4,0x54,0xa5,0x1e,0x3b,0x0e,0x49,0x3d,0x80,0x00,0x7b,0x54,
+ 0xbe,0xf1,0x39,0xdc,0x90,0xd5,0xad,0x59,0x46,0x11,0x64,0x96,0x1d,0xc5,0xf1,0x15,
+ 0xad,0x97,0x14,0xd2,0xc9,0x44,0xab,0x81,0xec,0xf2,0xfe,0x84,0x37,0xc7,0x96,0x9e,
+ 0xdd,0x88,0x70,0x82,0x42,0xea,0x31,0xe8,0xb6,0x9b,0x48,0xd6,0x0d,0x58,0xc5,0x30,
+ 0xc8,0xca,0x71,0xb5,0x5e,0x6e,0x0d,0x45,0x71,0xd6,0x93,0xd4,0xa6,0x9a,0x2a,0xe5,
+ 0xd7,0x00,0xfe,0x44,0x05,0xab,0xfb,0x35,0xdd,0x72,0x0e,0x06,0xcc,0xbf,0x83,0xbb,
+ 0x10,0xab,0x1a,0x64,0x90,0x6b,0x71,0x3f,0x75,0x80,0x5c,0x0f,0xa7,0x78,0xfa,0xd8,
+ 0xf0,0xac,0xe6,0x7e,0xb7,0x69,0x0a,0xe6,0xfc,0x3e,0x30,0x09,0x5a,0x7b,0xb4,0xcc,
+ 0x22,0x34,0xe6,0xc3,0x53,0x6e,0x6d,0x3b,0x77,0x71,0x00,0xf3,0xc2,0x24,0x38,0xa7,
+ 0x1a,0xfd,0x4b,0x45,0xa2,0x47,0xb1,0x24,0x7b,0x55,0x7c,0x78,0xa9,0xea,0x40,0xcc,
+ 0xb7,0x30,0x6c,0x0c,0x15,0x7c,0x2e,0x2d,0x6d,0x62,0x09,0xef,0xca,0x54,0xfb,0x83,
+ 0xcf,0x71,0x43,0xf4,0x75,0xb4,0x1f,0xc5,0xb3,0x57,0x11,0x02,0x0c,0x3b,0x15,0xae,
+ 0x3c,0x38,0xad,0x22,0x24,0x08,0x6c,0xa5,0x96,0x9b,0x4f,0x64,0xb4,0xda,0x13,0xc2,
+ 0x40,0xfc,0x00,0x03,0xfb,0xab,0xcf,0x1e,0xb5,0x67,0xcb,0xd5,0x2d,0x5d,0xcc,0xb2,
+ 0xd5,0x85,0xa5,0x37,0x9b,0xb4,0x99,0x8d,0x21,0x67,0x92,0xdb,0x4a,0x70,0x96,0xd1,
+ 0xfd,0x94,0x74,0xa7,0xf4,0xad,0x13,0xe1,0xd3,0x1d,0x8c,0x66,0x1a,0xcc,0x62,0x41,
+ 0xc5,0xcf,0xa1,0x91,0xdb,0x7f,0xa8,0x70,0x53,0x4f,0xdd,0x60,0x6a,0xde,0x1e,0x1a,
+ 0x98,0x2b,0xd9,0xa6,0xed,0xb1,0x99,0x01,0xb0,0xe4,0x4b,0x0c,0x79,0x37,0x79,0x3c,
+ 0xfe,0xea,0x52,0xd9,0x6d,0xb2,0x3f,0xfc,0xaf,0x35,0x57,0x3f,0x98,0xe4,0x28,0xc4,
+ 0x71,0x1b,0xe5,0xf5,0xc0,0x0b,0x76,0xb8,0x2f,0xcd,0x50,0x3e,0x9c,0x36,0xda,0x96,
+ 0x7f,0xe9,0xaa,0xe1,0xf0,0x73,0xc2,0x1c,0x5d,0xc3,0x51,0xf3,0x07,0x59,0x29,0x69,
+ 0xb6,0xa2,0xda,0x63,0x3c,0x47,0x65,0x15,0x15,0x3a,0xf2,0x47,0xe5,0xd2,0xc1,0xfe,
+ 0xd0,0xa9,0xa1,0xbc,0xbc,0x88,0xe2,0xdb,0x56,0xd5,0x19,0xc9,0x07,0xa9,0x76,0x37,
+ 0xe1,0x82,0x3d,0x8b,0xe3,0xc8,0xe7,0xf4,0xf3,0x79,0xac,0x2e,0x7d,0x97,0xed,0x5c,
+ 0xd6,0xca,0x21,0xb8,0x6f,0x67,0x1f,0xe6,0x37,0x3f,0xf6,0xb2,0xf7,0x08,0xd3,0x1d,
+ 0xd5,0x07,0x49,0x92,0xec,0xc9,0x2e,0xc8,0x7d,0xc5,0x3a,0xfb,0xab,0x2e,0x38,0xe2,
+ 0xcf,0x2a,0x52,0x89,0xe4,0x92,0x7e,0xa4,0xd5,0xde,0xec,0x0b,0x6d,0x23,0x6f,0x3a,
+ 0x2b,0x19,0x77,0x48,0xa1,0xac,0xcb,0x23,0x08,0xb8,0x5d,0x89,0xfd,0xb6,0x07,0x1f,
+ 0x73,0x1b,0xd0,0x71,0xe5,0xa5,0x47,0xa8,0x7f,0x1a,0xdc,0xee,0x40,0x15,0x5f,0x5e,
+ 0x1a,0xdb,0x72,0xff,0x00,0x3c,0xda,0xd4,0x8c,0x96,0xed,0x18,0xb9,0x8b,0x62,0x0a,
+ 0x6e,0x6b,0xc1,0x68,0xe5,0x12,0x26,0x12,0x4c,0x76,0x7b,0xfa,0x80,0x52,0x5c,0x57,
+ 0xaf,0x66,0xc0,0x3f,0xb6,0x0d,0x59,0x4e,0xf6,0xb5,0xb0,0xe8,0x46,0xdd,0x32,0x6b,
+ 0xf4,0x57,0x92,0xcd,0xee,0x6a,0x05,0xaa,0xd4,0x54,0xae,0x0f,0xc4,0xbc,0x08,0x0b,
+ 0x4f,0xe2,0x84,0x07,0x1c,0x03,0xfd,0x9d,0x6d,0xff,0x00,0x11,0x31,0x59,0x71,0x1a,
+ 0xb8,0x32,0xc5,0x01,0xef,0x38,0xb7,0x5f,0xa9,0xf9,0x5a,0x7c,0x87,0xcc,0x7d,0xba,
+ 0x28,0xa0,0x68,0x68,0x32,0x39,0x64,0x5a,0x0d,0xaf,0x96,0x8d,0x79,0x19,0xbb,0xb6,
+ 0x72,0xd2,0xa2,0xe3,0xb9,0x0b,0xf6,0x56,0xde,0x69,0xc0,0xb4,0xc9,0x6d,0xb4,0x36,
+ 0x52,0xfa,0x48,0xed,0xd2,0xb2,0xa5,0xf0,0x47,0xa8,0x4f,0x35,0xa3,0xfc,0x4d,0xb5,
+ 0xd2,0x4e,0x95,0xe8,0xd5,0xb3,0x1a,0xb5,0x3c,0xa8,0xf7,0x8c,0xbe,0x6f,0xc2,0x97,
+ 0x50,0xa2,0x95,0x37,0x0d,0xa2,0x85,0xc8,0x29,0x23,0xdd,0x45,0x4d,0x36,0x47,0xa1,
+ 0x4b,0x8b,0xfc,0x2a,0x2c,0x78,0x47,0x6a,0x91,0xc7,0x35,0x93,0x21,0xc1,0xe4,0xc8,
+ 0x42,0x22,0x64,0xb6,0xff,0x00,0x88,0x8e,0xda,0xcf,0x75,0x4a,0x8d,0xca,0x80,0x4f,
+ 0xe6,0xd2,0xdf,0x27,0xeb,0xe5,0x8f,0xa5,0x61,0xbe,0x25,0x5a,0x94,0x9d,0x42,0xdd,
+ 0xa4,0x8b,0x4c,0x69,0x3f,0x11,0x6f,0xc6,0x58,0x8d,0x67,0x40,0x42,0xf9,0x6c,0x3d,
+ 0xcf,0x9a,0xff,0x00,0x03,0xd9,0x41,0x6e,0x96,0xd5,0xef,0xcb,0x5c,0x7b,0x0a,0xc2,
+ 0xe1,0xf9,0x3a,0x3a,0x4c,0xe4,0x28,0xf4,0xde,0x18,0x9a,0x24,0x17,0xf1,0x00,0x00,
+ 0x3f,0xdf,0xeb,0x62,0xbd,0xba,0x4b,0xc5,0x7f,0x15,0x73,0x2c,0x38,0x5d,0x65,0xb5,
+ 0x9f,0x55,0x24,0x2b,0xfe,0x15,0x01,0x7c,0x3a,0xd2,0x9b,0x7e,0xe5,0x37,0x3b,0x01,
+ 0x09,0xe9,0x42,0x6f,0x9f,0x28,0xe3,0xd0,0x26,0x64,0xd0,0x3f,0xea,0xa9,0xf4,0xca,
+ 0x3c,0xb6,0x50,0x8f,0xe1,0x48,0x15,0x5f,0xdb,0x0d,0x7d,0x2c,0x6f,0x3f,0x72,0xb0,
+ 0xca,0x90,0x16,0xe5,0xca,0x4b,0xa1,0x1c,0xfc,0xc4,0x26,0x7b,0xc0,0x90,0x3e,0x83,
+ 0xac,0x73,0xf9,0x8a,0xd0,0x70,0x21,0xab,0x07,0xc5,0x9a,0x3f,0xa2,0x33,0xf4,0x90,
+ 0x29,0x5f,0xf3,0x35,0x6d,0x0f,0x13,0xe9,0xb7,0xcb,0x66,0xd6,0x65,0xcd,0xb1,0xdd,
+ 0x66,0xda,0x94,0xc5,0xda,0x21,0x96,0xb8,0x4f,0xa9,0x95,0x3a,0xc2,0xba,0xd0,0x5b,
+ 0x51,0x49,0x04,0xa4,0xad,0x6d,0x92,0x3d,0x39,0x48,0xa8,0xdb,0xe1,0x3d,0xaf,0x17,
+ 0xf9,0x7a,0x8d,0x7e,0xd3,0xcb,0xe5,0xf2,0x5d,0xca,0xd7,0x32,0xda,0x67,0x5b,0x99,
+ 0x9f,0x25,0x6e,0xf9,0x0f,0x32,0xb1,0xd6,0x86,0x42,0x89,0xe9,0x0a,0x43,0x8a,0x52,
+ 0x80,0xff,0x00,0x54,0x0f,0xb1,0xa9,0x99,0xbe,0xfc,0x49,0xcc,0xcf,0x69,0x1a,0x93,
+ 0x09,0xa1,0xcb,0xb1,0xad,0xc2,0xe4,0x0f,0x1e,0x82,0x33,0xa8,0x90,0xbf,0xfd,0x0d,
+ 0x2b,0xfb,0xea,0x9f,0xf6,0x81,0x9b,0x2b,0x4f,0x77,0x39,0xa6,0xd7,0xa0,0xf2,0x63,
+ 0xb6,0x9b,0xcb,0x31,0x1e,0x75,0x67,0x84,0xa5,0x99,0x1c,0xb0,0xe1,0x27,0xd8,0x74,
+ 0x3a,0xaa,0xe8,0xf9,0x4a,0x8a,0x1c,0x63,0x26,0xd7,0x51,0x96,0x82,0xf6,0x97,0x11,
+ 0xb6,0xf7,0x0d,0x6b,0x9b,0xfa,0x82,0x3d,0x14,0x32,0x12,0xd9,0x5a,0x55,0xdf,0xeb,
+ 0xae,0x96,0xc4,0xd6,0xad,0x21,0xca,0xf0,0xa9,0x9c,0x25,0x37,0x78,0x2b,0x65,0x97,
+ 0x4f,0xff,0x00,0x49,0xf1,0xf3,0x32,0xe7,0xf6,0x5c,0x4a,0x15,0xc7,0xbf,0x1c,0x7b,
+ 0xd4,0x65,0xf0,0xad,0xce,0xe7,0xdc,0x74,0x5b,0x21,0xc0,0x6f,0x08,0x53,0x17,0x6c,
+ 0x26,0xf0,0xe4,0x53,0x15,0xd4,0xf4,0xb8,0xc3,0x2f,0x15,0x2c,0x21,0x60,0xf7,0xe4,
+ 0x3c,0x99,0x23,0xbf,0xd0,0x0f,0x6a,0x9a,0xde,0x95,0x0b,0xe0,0xd8,0x9b,0xd0,0x1f,
+ 0x11,0xdf,0x31,0x89,0x21,0x8c,0x7b,0x56,0xec,0xef,0xb9,0xf0,0xfc,0x84,0x36,0x8b,
+ 0x93,0x1c,0x2d,0x7c,0x8f,0x72,0xae,0x85,0x28,0x13,0xea,0xa9,0x2a,0x15,0xcc,0xf0,
+ 0x79,0xbf,0x8c,0xc2,0xab,0x70,0x97,0xf3,0x6e,0xd9,0x9f,0xdd,0x1f,0xcf,0x6f,0x33,
+ 0x1d,0xff,0x00,0x2a,0x9d,0xc2,0xce,0x0e,0xf6,0x5d,0x5f,0x8b,0x46,0x95,0x2b,0x2c,
+ 0xd0,0xcb,0x46,0x67,0x15,0x94,0xae,0x5e,0x29,0x70,0x01,0xf5,0x7a,0x11,0x12,0x4f,
+ 0x4b,0x6b,0x23,0xeb,0xc3,0xa2,0x3f,0x6f,0xa1,0x51,0xa8,0xff,0x00,0xe1,0xd7,0xbe,
+ 0x37,0x34,0xea,0xeb,0x03,0x4b,0xf3,0xcb,0x81,0x38,0x94,0xc7,0x03,0x36,0x8b,0x9c,
+ 0x85,0x73,0xf6,0x63,0xca,0x3d,0x9a,0x59,0xff,0x00,0x52,0xb5,0x1e,0x01,0x3d,0x9b,
+ 0x51,0xe4,0xf0,0x92,0x4a,0x6c,0x2f,0x75,0x91,0xf1,0xcb,0x86,0xdd,0xf3,0xeb,0x76,
+ 0x51,0x78,0x81,0x62,0xb6,0xce,0xb4,0xc8,0x8e,0xdc,0xdb,0x8b,0xa1,0xb6,0x91,0x20,
+ 0xa0,0x96,0x0f,0x7f,0xda,0x3e,0x60,0x41,0x09,0x1d,0xc9,0x1c,0x0e,0xf5,0xe7,0xf6,
+ 0xba,0xe6,0x45,0xa4,0x83,0x32,0xe5,0xa9,0xb0,0x9a,0xe6,0xdd,0xac,0x71,0xd2,0x6d,
+ 0xf2,0xdc,0x5c,0x16,0x9e,0xa1,0xd7,0xf6,0x36,0x3b,0x1d,0xed,0xa6,0x26,0x37,0x87,
+ 0x05,0xe9,0x6f,0xd2,0xa9,0x23,0x73,0x38,0xbc,0xcd,0xa0,0x6f,0x71,0x77,0x9b,0x0a,
+ 0x5c,0x8d,0x16,0x2d,0xd6,0x3e,0x53,0x68,0x00,0x74,0x82,0xca,0xdd,0xf3,0x14,0xd0,
+ 0xe3,0xd5,0xb0,0xe2,0x5e,0x67,0x8f,0x74,0xa3,0x83,0xea,0x6a,0x6c,0x78,0x67,0xee,
+ 0xc5,0xdd,0x5d,0xc2,0x1d,0xd3,0xdc,0x9e,0x61,0x7b,0x2d,0xc6,0xe3,0xa5,0x51,0x24,
+ 0xbb,0xfb,0x53,0xad,0xe3,0x84,0x82,0xa3,0xcf,0x75,0xb4,0x4a,0x50,0xa2,0x78,0xe5,
+ 0x2a,0x6c,0xfc,0xc7,0xac,0xd6,0x15,0xe2,0xb1,0x89,0x59,0x75,0x23,0x4c,0x2c,0x3a,
+ 0x85,0x8c,0xdd,0x2d,0xb7,0xa7,0xb1,0x5b,0x8a,0xad,0x37,0x45,0xdb,0x64,0x36,0xf9,
+ 0x65,0xa7,0xf8,0xe9,0x0e,0x29,0x0a,0x3d,0x25,0x0e,0xa1,0x29,0xe9,0x3d,0xf9,0x78,
+ 0xfa,0x77,0xad,0x77,0x27,0x36,0xaf,0x2a,0x66,0x87,0xe1,0x75,0x63,0xba,0xfe,0xe1,
+ 0x3e,0x06,0xfb,0xb1,0xde,0xfc,0x0f,0xee,0x23,0x90,0xbd,0xcb,0x69,0x23,0xd4,0x15,
+ 0xa8,0x63,0x99,0x04,0x0c,0xb3,0x1e,0xb5,0xdf,0x2d,0x52,0x51,0x32,0xd7,0x73,0x8a,
+ 0xd4,0xd8,0x92,0x5b,0x3c,0xa5,0xd6,0x5c,0x40,0x5a,0x16,0x3f,0x02,0x95,0x03,0xfa,
+ 0xd7,0x63,0x51,0x47,0xc3,0x03,0x53,0x9b,0xd4,0xad,0x9c,0x61,0xc8,0x2f,0x17,0xa7,
+ 0xe3,0xaa,0x7a,0xc1,0x2c,0x1f,0xdc,0x2c,0xab,0xa9,0x94,0x8f,0xc3,0xc8,0x71,0x8f,
+ 0xf8,0xfd,0x2a,0x57,0x57,0xd4,0xcb,0x1e,0x95,0x53,0xde,0x38,0x39,0x8a,0x9c,0xbc,
+ 0xe9,0x5e,0x28,0xdb,0xe4,0x25,0x98,0xf3,0x6e,0x8f,0xb0,0x0f,0x62,0x56,0xa6,0x9b,
+ 0x69,0x44,0x7e,0x1e,0x5b,0xa0,0x7e,0x66,0xad,0x86,0xb4,0x06,0x7f,0xb3,0x2c,0x1b,
+ 0x58,0x37,0x00,0xce,0xa8,0x67,0xf1,0x1b,0xca,0x15,0x6d,0xb5,0xb1,0x6a,0xb4,0xd8,
+ 0xa5,0x36,0x0c,0x26,0x52,0x85,0xba,0xe2,0x9d,0x79,0x07,0xb3,0xcb,0x2a,0x79,0x40,
+ 0x25,0x43,0xa4,0x00,0x09,0x0a,0x3c,0x74,0x91,0x52,0x06,0xdf,0x62,0xeb,0x85,0xaa,
+ 0x36,0x41,0x2f,0x49,0x71,0x9c,0x96,0x70,0xbe,0x40,0x5d,0xa2,0x5d,0xca,0xc7,0x67,
+ 0x7a,0x4a,0x92,0xca,0x96,0x92,0xb4,0xb6,0xf2,0x50,0x7c,0xb5,0x72,0x90,0x3a,0x81,
+ 0x04,0x7b,0x10,0x78,0x23,0xbc,0xc2,0xf4,0xfb,0x72,0xdb,0x5f,0xbe,0xaf,0x28,0xb1,
+ 0x61,0x59,0xc6,0x26,0xf3,0x6d,0x7f,0x48,0x93,0xf6,0x2b,0xeb,0x8a,0xe3,0x5e,0xa5,
+ 0x2f,0x02,0x82,0xda,0xd2,0x3d,0x78,0x57,0x3c,0x11,0xcf,0x62,0x39,0xaf,0x43,0x90,
+ 0xe1,0xc7,0xb7,0x44,0x62,0x24,0x46,0x1b,0x8b,0x15,0x84,0x25,0xa6,0x98,0x65,0x01,
+ 0x08,0x6d,0x09,0x1c,0x25,0x29,0x48,0xec,0x00,0x00,0x00,0x07,0xa5,0x7d,0xaa,0xce,
+ 0x4a,0x2a,0x69,0x44,0x82,0x48,0xda,0x7b,0x4f,0x9a,0xe0,0x1d,0x56,0xd8,0x5f,0xad,
+ 0xbc,0xd5,0x6e,0x47,0x8a,0xa5,0xcb,0x1f,0x8c,0x46,0x69,0x1a,0xdc,0x86,0xee,0xf8,
+ 0x05,0x8e,0xe1,0x38,0x0e,0x0c,0x88,0x92,0xde,0x8c,0x85,0x1f,0xaf,0x42,0xba,0xff,
+ 0x00,0xea,0xac,0x1f,0x51,0xfc,0x56,0x35,0x8b,0x32,0x80,0xe4,0x2b,0x1b,0x16,0x5c,
+ 0x2d,0x95,0xff,0x00,0xf7,0x36,0xd8,0xea,0x7a,0x57,0x1e,0xe3,0xad,0xe5,0x29,0x23,
+ 0xf3,0x4a,0x01,0x1f,0x5a,0xb0,0xfd,0xf0,0x78,0x75,0x62,0x3b,0x8d,0xc7,0x6e,0x99,
+ 0x1e,0x29,0x6d,0x8b,0x8e,0xea,0x7b,0x48,0x5c,0x86,0x65,0xc5,0x4a,0x59,0x66,0xea,
+ 0xe7,0xed,0x16,0xa5,0x0e,0xc0,0xa9,0x5d,0xc0,0x77,0xb2,0x81,0x20,0xa8,0xa9,0x23,
+ 0x8a,0xa2,0xdb,0xad,0xa6,0x6d,0x8e,0xeb,0x32,0xd9,0x70,0x8a,0xec,0x3b,0x84,0x37,
+ 0x97,0x1e,0x44,0x57,0x90,0x52,0xe3,0x4e,0xa1,0x45,0x2a,0x42,0x81,0xee,0x08,0x20,
+ 0x82,0x3f,0x0a,0xd5,0x62,0xc9,0x59,0x7a,0x09,0x7b,0x56,0x51,0xb6,0xfe,0x77,0x23,
+ 0xe8,0x49,0x1f,0xa2,0x93,0xb5,0x79,0xf1,0x4b,0xb5,0xda,0x75,0xfa,0xe7,0x2a,0xe3,
+ 0x73,0x9b,0x22,0xe3,0x70,0x94,0xe2,0x9e,0x91,0x2e,0x5b,0xaa,0x75,0xd7,0x96,0xa3,
+ 0xca,0x94,0xb5,0xa8,0x92,0xa5,0x13,0xdc,0x92,0x79,0xac,0xff,0x00,0x49,0xb7,0x1d,
+ 0xa8,0xfa,0x1b,0x6f,0xbc,0xc1,0xc1,0xf2,0x99,0x56,0x18,0x97,0x74,0x74,0x4b,0x65,
+ 0xa4,0x36,0xe2,0x49,0xe0,0xa4,0x2d,0x1d,0x69,0x57,0x96,0xe0,0x07,0x8e,0xb4,0x70,
+ 0xaf,0x4e,0xfd,0x85,0x62,0xb2,0xf4,0xfb,0x29,0xb7,0xda,0x45,0xd6,0x56,0x35,0x78,
+ 0x8d,0x6c,0x23,0x91,0x35,0xe8,0x0e,0xa1,0x92,0x3e,0xbd,0x65,0x3d,0x3e,0xe3,0xde,
+ 0xba,0x0a,0xdb,0x27,0xa5,0xa7,0xa9,0x8b,0xb0,0x9e,0x30,0xe6,0x6d,0xb1,0x00,0x8d,
+ 0xb8,0xd8,0xed,0xb7,0x82,0x8c,0x12,0x0d,0xc2,0xfd,0x5a,0xd4,0xe2,0xd4,0xa5,0x28,
+ 0xa9,0x4a,0x3c,0x95,0x13,0xc9,0x26,0xac,0x0b,0xc2,0x23,0x48,0xd5,0x7b,0xd4,0x5c,
+ 0x9f,0x51,0x25,0xb0,0x95,0x44,0xb1,0x45,0x16,0xd8,0x2b,0x5a,0x79,0x3f,0x14,0xff,
+ 0x00,0x75,0xa9,0x07,0xd8,0xa5,0xa4,0x94,0x9f,0xc1,0xf1,0xf8,0xd5,0x7e,0x54,0xd4,
+ 0xda,0xc7,0x88,0x55,0x9b,0x6b,0xda,0x57,0x03,0x0e,0x85,0xa7,0x0f,0x5f,0x1f,0x72,
+ 0x5b,0xb3,0xae,0x97,0x45,0x5e,0x44,0x72,0xf3,0xcb,0x57,0x48,0xe8,0x6b,0xc8,0x5f,
+ 0x01,0x2d,0x21,0xa4,0xf7,0x57,0x72,0x92,0x7b,0x73,0x5a,0x96,0x72,0xa7,0xc4,0x6b,
+ 0x30,0x69,0x69,0x30,0xc8,0xf5,0xc9,0x25,0x9b,0xc8,0x16,0x6f,0x2e,0xdd,0xc4,0x0d,
+ 0xc0,0xb7,0x5d,0xd4,0xb1,0x16,0x87,0x5d,0xc5,0x59,0xb6,0xe8,0x73,0xbf,0xf3,0x69,
+ 0xb7,0x7d,0x43,0xc8,0x92,0xe9,0x66,0x44,0x5b,0x34,0x84,0x46,0x70,0x7e,0xec,0x87,
+ 0x13,0xe5,0x32,0x7f,0xf3,0x16,0x8a,0xf3,0xeb,0x56,0x8b,0xbc,0x9d,0xe1,0xe1,0xba,
+ 0xe7,0xb2,0x09,0x53,0x71,0x39,0x0b,0x44,0x9b,0xbd,0xea,0x1d,0xa6,0x7d,0xaa,0x59,
+ 0x4a,0x65,0xc0,0x50,0x2b,0x93,0xca,0xd2,0x09,0xe5,0x2a,0xf8,0x6f,0x95,0x60,0x90,
+ 0x41,0xf6,0x21,0x40,0x55,0xd5,0x6a,0x9f,0x0c,0xb0,0xa9,0xb0,0xdc,0x3e,0xa0,0xd5,
+ 0x30,0xb2,0x43,0x21,0x04,0x1e,0x6c,0xd0,0x2d,0xfa,0x93,0xff,0x00,0x8a,0x49,0xdc,
+ 0x1c,0x45,0x95,0x9a,0xed,0x97,0x5d,0xec,0x1b,0x32,0xd8,0x8d,0xa7,0x26,0xbb,0x32,
+ 0x2e,0x19,0x06,0x5b,0x74,0x9d,0x36,0xd3,0x65,0x4a,0xfa,0x1c,0x94,0xb4,0x28,0x47,
+ 0xeb,0x51,0xe0,0xf4,0xb6,0x90,0xc2,0x49,0x57,0x1e,0x8a,0x48,0x1c,0x95,0x0a,0x84,
+ 0xda,0xcf,0xba,0xdd,0x50,0xd7,0x99,0xd3,0x17,0x94,0xe5,0x73,0x55,0x6c,0x90,0xa2,
+ 0x45,0x8e,0x0b,0xaa,0x8f,0x6f,0x6d,0x3d,0x5c,0xa5,0x21,0x94,0x9e,0x15,0xd3,0xdb,
+ 0x85,0x2f,0xa9,0x5d,0x87,0x2a,0x27,0xbd,0x61,0x19,0xd6,0x7f,0x72,0xcf,0xa4,0x59,
+ 0xd5,0x3d,0x49,0x44,0x6b,0x3d,0xae,0x35,0x9e,0x04,0x66,0xc7,0x08,0x62,0x3b,0x28,
+ 0xe0,0x01,0xf8,0xa9,0x45,0x6e,0x28,0xfb,0xad,0xc5,0x1e,0xdc,0xf0,0x31,0xaa,0xdb,
+ 0xf0,0xac,0xb5,0x4b,0x47,0x53,0x36,0x25,0x3b,0x03,0xaa,0x25,0x71,0x71,0x27,0x7d,
+ 0x20,0x9d,0x9a,0xde,0x96,0x16,0x04,0x8d,0xc9,0xf2,0xb0,0x11,0x3a,0x42,0x40,0x68,
+ 0xe1,0x5d,0xd7,0x86,0xbe,0x27,0x69,0xc6,0xf6,0x8b,0x89,0x4c,0xb6,0xa5,0x2a,0x7e,
+ 0xf2,0xec,0xbb,0x84,0xe7,0x81,0xfe,0xb1,0xff,0x00,0x88,0x5b,0x3f,0xa7,0x4a,0x19,
+ 0x42,0x38,0xfe,0x42,0x7d,0xcd,0x42,0x9f,0x15,0xed,0x6b,0xff,0x00,0x2d,0x75,0x96,
+ 0xdd,0x81,0x41,0x70,0x2a,0xd9,0x89,0x31,0xcc,0x82,0x85,0x73,0xd7,0x35,0xf4,0xa5,
+ 0x6b,0xe7,0xbf,0x1f,0x23,0x61,0xb4,0x8f,0x70,0xa2,0xe0,0xae,0x9b,0x65,0x9e,0x20,
+ 0x49,0xdb,0x36,0x09,0x7d,0xc4,0xb2,0x1b,0x1c,0xbc,0x86,0xd4,0x56,0xb9,0xd6,0x8f,
+ 0x83,0x75,0x29,0x5b,0x12,0x14,0x9e,0x14,0xd2,0xfa,0x8f,0x01,0xa5,0x10,0x95,0x72,
+ 0x9e,0xe9,0x3d,0x67,0xa5,0x7d,0x5d,0xa2,0x36,0x4b,0x90,0xce,0xcb,0xb2,0x3b,0xad,
+ 0xf6,0xe8,0xf1,0x93,0x73,0xba,0x4b,0x76,0x6c,0xa7,0x8f,0xab,0x8e,0xb8,0xb2,0xb5,
+ 0xab,0xf5,0x52,0x89,0xad,0x2f,0x01,0xca,0x75,0x54,0xf9,0xa6,0xb3,0x16,0xae,0x17,
+ 0x68,0x2e,0x31,0x9e,0xba,0xef,0xbf,0xf8,0xb7,0xbb,0xbf,0x5d,0xb8,0x52,0xbe,0x40,
+ 0x63,0x0d,0x0b,0x97,0x81,0xe6,0xf7,0x7d,0x36,0xcc,0xac,0xd9,0x4d,0x86,0x4f,0xc2,
+ 0x5e,0x2d,0x32,0x91,0x2e,0x33,0xbc,0x72,0x02,0xd2,0x79,0xe1,0x43,0xdd,0x27,0xb8,
+ 0x23,0xdc,0x12,0x3d,0xeb,0x97,0x02,0xed,0x37,0x39,0xd4,0xf8,0xd7,0x3b,0xb4,0x83,
+ 0x2a,0xe3,0x78,0xbc,0x26,0x44,0xb7,0xd4,0x38,0xf3,0x1d,0x75,0xe0,0xa5,0xa8,0x81,
+ 0xc7,0xa9,0x51,0x3d,0xab,0x17,0xae,0xdf,0x0e,0x94,0x98,0x39,0x7d,0x8e,0x4a,0xfb,
+ 0xa1,0x99,0xcc,0x38,0x7f,0x20,0xe2,0x4f,0xfd,0xab,0xae,0x4b,0x13,0x3b,0xf3,0x35,
+ 0xa3,0x5e,0x9b,0x5f,0xc6,0xdb,0x9b,0x5f,0xa5,0xd5,0xb0,0xe8,0xbd,0x22,0x1f,0x53,
+ 0x5e,0x7e,0x77,0x01,0x7f,0xb8,0x59,0x77,0x35,0xa9,0x77,0x1b,0x54,0xf9,0x36,0xe9,
+ 0xad,0xe4,0xf7,0x22,0xdc,0xa8,0x6f,0x29,0xa7,0x10,0x7e,0x25,0xc1,0xd9,0x49,0x20,
+ 0x8a,0x9f,0xbb,0x85,0xf1,0x58,0x6b,0x4e,0xf5,0x42,0x6e,0x33,0x83,0x63,0x30,0x32,
+ 0x6b,0x65,0xa6,0x42,0xa3,0xce,0xba,0xcc,0x94,0xb4,0xa6,0x4b,0x89,0x3c,0x2d,0x11,
+ 0xfa,0x07,0x01,0x29,0x20,0x8f,0x30,0xf5,0x05,0x1e,0x78,0x4f,0x1c,0x15,0x56,0x46,
+ 0x73,0x94,0x39,0x9c,0x66,0xd9,0x06,0x46,0xf3,0x3f,0x0e,0xf5,0xe2,0xe1,0x22,0xe0,
+ 0xb6,0x82,0xba,0xba,0x14,0xeb,0x8a,0x70,0xa7,0x9e,0x07,0x3c,0x15,0x71,0xcf,0x02,
+ 0xb8,0x87,0xc3,0x6c,0xb9,0x88,0x61,0x6e,0x96,0xaa,0xba,0x2d,0x2c,0x95,0x82,0xd7,
+ 0x22,0xfc,0xdf,0x71,0xc8,0xdb,0xaa,0xbb,0x9d,0xed,0x76,0xc0,0xa9,0x3b,0xa4,0xfe,
+ 0x21,0xf9,0x95,0x93,0x00,0xcb,0x70,0x5d,0x45,0x91,0x3b,0x39,0xc7,0xef,0x56,0x69,
+ 0x96,0xf6,0x26,0xc9,0x74,0x39,0x3e,0x1b,0x8e,0xb0,0xe2,0x12,0x4b,0x8b,0x3c,0xba,
+ 0x82,0xa5,0x00,0xa0,0xb2,0x54,0x07,0x74,0x9e,0xdd,0x2a,0x89,0x08,0x5a,0x9a,0x5a,
+ 0x56,0x85,0x14,0x2d,0x27,0x90,0xa4,0x9e,0x08,0x3f,0x51,0x5f,0x94,0xae,0xcb,0x47,
+ 0x85,0x51,0xe1,0xf2,0x4b,0x25,0x24,0x61,0x86,0x42,0x0b,0x80,0xd8,0x12,0x3c,0x6d,
+ 0xc0,0x3d,0x6d,0xcf,0xaa,0xb5,0x2e,0x2e,0xe5,0x5e,0x86,0xb0,0x6e,0xc6,0x36,0x93,
+ 0xed,0x32,0xcd,0xaa,0xc5,0x96,0x27,0xdd,0x6f,0x76,0xd8,0x2a,0xb6,0x43,0x75,0x45,
+ 0x2d,0xbf,0x32,0x4b,0x21,0xc0,0x15,0xc7,0x7e,0x94,0x0f,0x31,0x6a,0x03,0x82,0x43,
+ 0x64,0x72,0x09,0xe6,0xaa,0x06,0xe1,0xb9,0x1c,0xe7,0x28,0xd6,0x7c,0x7f,0x52,0xb2,
+ 0x9b,0xd4,0x9c,0x86,0xf9,0x67,0x9f,0x1e,0x6b,0x01,0xf5,0xf4,0x36,0xda,0x5a,0x74,
+ 0x38,0x1a,0x6d,0x09,0x01,0x2d,0xa0,0x90,0x7b,0x24,0x01,0xca,0x89,0xf5,0x24,0xd6,
+ 0x57,0xaa,0x1a,0xd2,0xc6,0x67,0xb4,0xcd,0x1c,0xc2,0x13,0x70,0x2f,0xdc,0xb1,0xcb,
+ 0x85,0xd9,0x13,0x22,0xa9,0x44,0xa9,0x2d,0x95,0xb6,0xb8,0xcb,0x23,0xe9,0xd2,0xf3,
+ 0x88,0x4f,0xfe,0x1a,0x87,0xb5,0x6a,0x16,0x74,0xf7,0x29,0x91,0x66,0x37,0x76,0xb1,
+ 0xab,0xc3,0xb6,0x90,0x9e,0xa3,0x3d,0x10,0x1d,0x2c,0x01,0xf5,0xf3,0x3a,0x7a,0x78,
+ 0xfd,0x6b,0x46,0xca,0x39,0x52,0x97,0x08,0x82,0x77,0x4b,0x18,0x32,0x3d,0xf2,0x36,
+ 0xe4,0x6f,0xa0,0x38,0xb4,0x01,0xd0,0x10,0x2f,0xb7,0x37,0xf2,0x0a,0x69,0x64,0x2e,
+ 0x22,0xcb,0x67,0xee,0xff,0x00,0x70,0xf7,0x3d,0xc5,0x6b,0x3d,0xf2,0xf2,0xbb,0x8b,
+ 0xb2,0x31,0x98,0x92,0x1c,0x8b,0x62,0x89,0xf3,0x25,0xa6,0x62,0x25,0x5d,0x29,0x58,
+ 0x41,0xf4,0x5b,0x80,0x05,0xa8,0x9e,0xfc,0xab,0x8e,0xc1,0x29,0x03,0x48,0x80,0x49,
+ 0x00,0x0e,0x49,0xf6,0x15,0xd8,0x63,0xd8,0xf5,0xcb,0x2c,0xc8,0x2d,0xb6,0x3b,0x3c,
+ 0x27,0x6e,0x17,0x6b,0x8c,0x96,0xe2,0x44,0x86,0xc2,0x79,0x71,0xe7,0x96,0xa0,0x94,
+ 0x21,0x23,0xea,0x49,0x03,0xf5,0xab,0xe1,0xd9,0x67,0x87,0xb6,0x17,0xb6,0x3c,0x72,
+ 0xdf,0x77,0xbd,0x41,0x87,0x93,0x6a,0x5b,0x88,0x4b,0xd2,0xaf,0x32,0x1a,0x0e,0x22,
+ 0x0b,0x9c,0x7f,0x57,0x10,0x28,0x7c,0x81,0x3c,0xf1,0xe6,0x76,0x5a,0xcf,0x27,0xb0,
+ 0x21,0x29,0xe8,0x34,0x54,0x70,0xe1,0xf4,0xd1,0xd2,0xd3,0xb6,0xcc,0x60,0x00,0x0f,
+ 0x4f,0xfd,0xeb,0xd4,0xa8,0x09,0x2e,0x37,0x2a,0x9b,0x70,0xdd,0xb4,0xeb,0xac,0xde,
+ 0x2e,0x58,0xd6,0x9b,0x67,0x29,0x0e,0xb0,0xeb,0x62,0x6c,0x3b,0x44,0xa6,0x92,0xb6,
+ 0x9c,0x6d,0x48,0x71,0x21,0xce,0x90,0x0a,0x56,0x85,0x29,0x24,0x73,0xf3,0x05,0x11,
+ 0xdc,0x1a,0xc7,0x32,0xbd,0x30,0xd4,0xdd,0x24,0xb7,0xcb,0x6f,0x23,0xc5,0x72,0xac,
+ 0x3e,0x05,0xc1,0x29,0x8f,0x24,0x5c,0x60,0x49,0x86,0xcc,0x94,0x85,0x85,0xa5,0x0b,
+ 0xea,0x4a,0x52,0xb1,0xd4,0x84,0xa8,0x03,0xcf,0x74,0x83,0xec,0x2b,0xd3,0x65,0x71,
+ 0xae,0x76,0xc8,0x77,0xab,0x7c,0x98,0x17,0x08,0x8c,0x4f,0x83,0x25,0xb2,0xd3,0xf1,
+ 0x64,0xb6,0x1c,0x69,0xd4,0x11,0xc1,0x4a,0x92,0xa0,0x42,0x81,0x1e,0xa0,0xd5,0xd1,
+ 0x63,0x49,0xb9,0x1f,0xfc,0x38,0xfa,0x2a,0x2a,0xc4,0xf0,0x3f,0xcd,0xc3,0xd8,0xf6,
+ 0xa9,0x61,0xee,0xba,0x94,0x98,0xd2,0xa1,0xdd,0xa3,0xb6,0x4f,0x75,0x79,0x88,0x71,
+ 0xa7,0x48,0x1f,0x87,0x94,0xcf,0xf8,0x85,0x5a,0x25,0x68,0x0d,0x2e,0xd9,0x86,0x0b,
+ 0xa2,0x1a,0xf1,0x74,0xd4,0x8c,0x09,0x93,0x8e,0x33,0x78,0xb5,0x3d,0x6d,0xb8,0xe3,
+ 0xac,0x27,0xfa,0x12,0x96,0xa7,0x59,0x75,0x0f,0x32,0x39,0xfb,0xa2,0x0b,0x4a,0x05,
+ 0x03,0x94,0x9e,0xb1,0xd2,0x11,0xc1,0x0a,0xdf,0xf5,0xed,0x12,0x94,0xa5,0x11,0x29,
+ 0x4a,0x51,0x12,0xb5,0xde,0x33,0xb7,0xad,0x38,0xc3,0xf5,0x03,0x21,0xce,0x2d,0x38,
+ 0x7d,0xae,0x36,0x5b,0x7e,0x91,0xf1,0x53,0xae,0xc5,0x80,0xb7,0xd4,0xe7,0x48,0x04,
+ 0xa1,0x4a,0xe7,0xcb,0x0a,0x23,0xa9,0x41,0x1d,0x3d,0x4a,0x25,0x4a,0xe4,0xf7,0xad,
+ 0x89,0x4a,0x22,0xfc,0x23,0x91,0x51,0xc3,0x72,0x9b,0x06,0xd2,0x6d,0xca,0x5a,0xa5,
+ 0xae,0xe3,0x62,0x8f,0x8e,0xe5,0x4a,0x6d,0x42,0x3e,0x49,0x66,0x65,0x2c,0xc8,0x43,
+ 0x9d,0xb8,0x2e,0xa5,0x3c,0x25,0xf4,0xf6,0x00,0x85,0x82,0x78,0xe4,0x25,0x48,0x27,
+ 0x9a,0x92,0x14,0xa2,0x2f,0x34,0xfb,0x8d,0xdb,0xbe,0x57,0xb6,0x3d,0x4d,0x9d,0x86,
+ 0x65,0x6c,0x0f,0x39,0xb1,0xe7,0x43,0x9e,0xc8,0x3e,0x44,0xf8,0xe4,0x90,0x87,0x9b,
+ 0x27,0xd8,0xf0,0x41,0x1e,0xa9,0x50,0x20,0xfa,0x56,0x35,0xa7,0x1a,0x53,0x98,0xea,
+ 0xfe,0x40,0xdd,0x93,0x0b,0xc6,0xae,0x59,0x35,0xcd,0x45,0x20,0xb1,0x6e,0x8e,0xa7,
+ 0x3c,0xb0,0x4f,0x01,0x4e,0x28,0x7c,0xad,0xa7,0xf9,0x94,0x42,0x47,0xb9,0xaf,0x40,
+ 0xbb,0xad,0xd9,0xe6,0x1d,0xbb,0x9b,0x5e,0x2f,0x0f,0x29,0x7e,0x55,0xbd,0x56,0x2b,
+ 0x87,0xc5,0x22,0x65,0xbf,0xa4,0x48,0x71,0x85,0x20,0x87,0x63,0x05,0x28,0x10,0x94,
+ 0xac,0x86,0xd4,0x55,0xc1,0x20,0xb6,0x38,0xf5,0x35,0xb3,0x74,0xcf,0x4a,0xb1,0x1d,
+ 0x1a,0xc5,0x23,0xe3,0x78,0x4e,0x3f,0x0b,0x1c,0xb2,0xb0,0x7a,0x84,0x58,0x4d,0xf1,
+ 0xd6,0xae,0x00,0x2b,0x71,0x47,0x95,0x38,0xb2,0x00,0xe5,0x6b,0x25,0x47,0x81,0xc9,
+ 0x34,0x45,0x4e,0x58,0x17,0x83,0x9e,0xb9,0xe4,0xb1,0x52,0xe5,0xf6,0x7e,0x37,0x87,
+ 0x30,0xa5,0x02,0xe4,0x69,0x93,0xd7,0x25,0xfe,0x40,0x3c,0x1e,0x96,0x10,0xb6,0xcf,
+ 0x1c,0x91,0xdd,0xc1,0xeb,0x59,0xbd,0xdb,0xc1,0x0f,0x3a,0x66,0x12,0x95,0x6c,0xd4,
+ 0x9c,0x7a,0x64,0xbe,0x3e,0x56,0xa5,0xc3,0x7d,0x86,0xc9,0xfc,0x56,0x9e,0xb2,0x3f,
+ 0xc3,0x57,0x03,0x4a,0x22,0xf3,0xf1,0xac,0x3e,0x1a,0xda,0xf7,0xa3,0x50,0x64,0xdc,
+ 0x65,0xe2,0x43,0x26,0xb4,0x47,0x3f,0x79,0x3f,0x18,0x7b,0xe3,0x40,0x1f,0xc5,0xe4,
+ 0x80,0x1e,0x09,0x1d,0xc9,0x51,0x6f,0x80,0x07,0x72,0x2a,0x2f,0xad,0x0a,0x6d,0x6a,
+ 0x42,0xd2,0x52,0xb4,0x9e,0x0a,0x54,0x38,0x20,0xfd,0x2b,0xd5,0x3d,0x44,0x3d,0xe5,
+ 0x78,0x73,0xe0,0xfb,0x9e,0xb7,0xce,0xbe,0x59,0x9a,0x8d,0x88,0x6a,0x3f,0x4a,0x9c,
+ 0x6a,0xf3,0x1d,0xae,0x19,0x9e,0xe7,0x1d,0x91,0x31,0x09,0x1f,0x30,0x3c,0x71,0xe6,
+ 0x8f,0x9d,0x3d,0x8f,0xce,0x07,0x41,0x22,0xa1,0x3a,0x56,0x4b,0xa9,0x1a,0x71,0x91,
+ 0xe9,0x1e,0x6f,0x76,0xc4,0x72,0xdb,0x5b,0xd6,0x6c,0x82,0xd6,0xf7,0x93,0x26,0x23,
+ 0xdc,0x12,0x93,0xc0,0x29,0x52,0x48,0xec,0xa4,0xa9,0x24,0x29,0x2a,0x04,0x85,0x24,
+ 0x82,0x09,0x06,0xb9,0x3a,0x51,0xa5,0x39,0x3e,0xb6,0x67,0xb6,0xac,0x3b,0x10,0xb6,
+ 0xae,0xe9,0x7c,0xb9,0x39,0xd0,0xd3,0x49,0xec,0x94,0x24,0x77,0x53,0x8e,0x2b,0xd1,
+ 0x28,0x48,0xe4,0x95,0x1f,0x40,0x28,0x8b,0x14,0x65,0x97,0x24,0xbc,0x86,0x9a,0x42,
+ 0x9d,0x75,0xc5,0x04,0xa1,0x08,0x1c,0xa9,0x44,0xf6,0x00,0x01,0xea,0x6a,0x53,0xe9,
+ 0x07,0x86,0x56,0xbf,0x6a,0xec,0x18,0xb7,0x16,0x71,0x66,0xf1,0x3b,0x5c,0x8e,0xed,
+ 0xcc,0xca,0x1f,0xf8,0x23,0xc7,0xf1,0x16,0x42,0x54,0xf8,0x1e,0xe0,0xf9,0x7c,0x11,
+ 0xdc,0x72,0x2a,0xd4,0xf6,0x75,0xe1,0xf1,0x81,0xed,0x6a,0xd5,0x0e,0xeb,0x2a,0x34,
+ 0x7c,0xa7,0x51,0x14,0x80,0xa9,0x19,0x04,0xa6,0x82,0x84,0x55,0x94,0xf0,0xa4,0x44,
+ 0x4a,0x87,0xdd,0x24,0x72,0xa1,0xd7,0xfb,0x6a,0x04,0xf2,0x40,0x21,0x29,0x95,0x74,
+ 0x45,0x50,0x16,0xef,0x04,0x3c,0xe1,0xd8,0x69,0x5c,0xfd,0x4b,0xc7,0xe3,0x4c,0x23,
+ 0x95,0x35,0x1e,0x13,0xef,0x36,0x0f,0xfb,0xe7,0xa0,0x9f,0xf0,0xd6,0xbe,0xcf,0x7c,
+ 0x1d,0x75,0xd7,0x16,0x69,0x6f,0x58,0xde,0xc6,0xf3,0x26,0xc1,0x3d,0x2c,0xdb,0xee,
+ 0x06,0x3b,0xe4,0x7d,0x4a,0x64,0x21,0xb4,0x0f,0xd1,0x66,0xaf,0x02,0x94,0x45,0xe5,
+ 0xf3,0x3f,0xd3,0x4c,0xb3,0x4a,0xef,0xee,0xd9,0x33,0x0c,0x72,0xe7,0x8d,0x5d,0x5b,
+ 0x27,0x98,0xd7,0x38,0xcb,0x65,0x4a,0x00,0xf1,0xd4,0x9e,0xa1,0xc2,0xd2,0x7d,0x94,
+ 0x9e,0x41,0xf5,0x04,0x8a,0xce,0x76,0xbd,0xb6,0x4c,0xaf,0x75,0x5a,0x9b,0x1b,0x12,
+ 0xc6,0x52,0x98,0xcc,0x36,0x91,0x22,0xe7,0x76,0x7d,0x3c,0xb3,0x6f,0x8d,0xd4,0x02,
+ 0x9c,0x50,0xe4,0x75,0x28,0xf3,0xc2,0x50,0x0f,0x2a,0x3f,0x40,0x14,0xa4,0xfa,0x18,
+ 0xd5,0x6d,0x1d,0xc3,0x35,0xc3,0x13,0x7f,0x1b,0xce,0x71,0xe8,0x59,0x15,0xa5,0xce,
+ 0x4a,0x5a,0x94,0x8f,0x9d,0x95,0xf0,0x47,0x98,0xd3,0x83,0x85,0x36,0xb0,0x09,0x01,
+ 0x68,0x20,0xf7,0x3d,0xfb,0xd6,0xbf,0xda,0x6e,0xd2,0x31,0x6d,0xa2,0xe2,0x17,0xbb,
+ 0x16,0x37,0x2e,0x4d,0xd1,0x57,0x5b,0x92,0xe7,0x3d,0x70,0x9e,0x84,0x09,0x05,0xbe,
+ 0x3a,0x59,0x65,0x4a,0x48,0x01,0x41,0xb4,0xf3,0xdf,0x81,0xca,0x96,0xb5,0x00,0x9e,
+ 0xae,0x01,0x17,0x5d,0xb7,0x2d,0x8b,0xe9,0x36,0xda,0xed,0x71,0xfe,0xc3,0xc7,0x63,
+ 0xdd,0xf2,0x30,0x84,0x89,0x19,0x1d,0xe1,0xa4,0xbf,0x31,0xc5,0x8e,0x79,0x28,0x2a,
+ 0x1c,0x32,0x93,0xcf,0xec,0xb6,0x13,0xc8,0x03,0xa8,0xa8,0x8e,0x6a,0x41,0xd2,0x94,
+ 0x45,0xae,0xef,0x1b,0x7b,0xd3,0xab,0xee,0xa5,0xd8,0x75,0x0a,0x56,0x23,0x6d,0x19,
+ 0x9d,0x91,0xc7,0x1c,0x89,0x78,0x65,0x90,0xd3,0xc4,0xad,0xb5,0x36,0x7c,0xc2,0x9e,
+ 0x03,0xbc,0x05,0x12,0x9e,0xbe,0xae,0x93,0xdd,0x3c,0x1a,0xd8,0x94,0xa5,0x11,0x29,
+ 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
+ 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x14,0x2e,
+ 0xf1,0x31,0xd9,0xbb,0x3b,0x8c,0xd2,0xc7,0x72,0xcc,0x76,0x08,0x5e,0xa2,0x62,0xf1,
+ 0xd6,0xf4,0x5f,0x21,0xa2,0xa7,0x6e,0x51,0x07,0x2a,0x72,0x21,0xe3,0xba,0x95,0xea,
+ 0xb6,0xfb,0x13,0xd5,0xca,0x40,0x1e,0x61,0x23,0xb8,0xf0,0xe7,0xd9,0xd4,0x5d,0xb0,
+ 0xe9,0x2b,0x17,0x6b,0xd4,0x44,0x1d,0x45,0xc9,0x18,0x6e,0x45,0xd5,0xe5,0x77,0x54,
+ 0x36,0x8f,0xcc,0xdc,0x34,0x9e,0x3b,0x74,0x72,0x0a,0xf8,0xf5,0x73,0x9e,0xea,0x4a,
+ 0x51,0xc4,0xb9,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,
+ 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,
+ 0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,
+ 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
+ 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,
+ 0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,
+ 0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,
+ 0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,
+ 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,
+ 0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,
+ 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
+ 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x7f,0xff,0xd9};
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/ncc1701.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/ncc1701.h
new file mode 100644
index 000000000..d10383d16
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/ncc1701.h
@@ -0,0 +1,318 @@
+//
+// ncc1701
+// Data size = 4912 bytes
+//
+// JFIF, Compression=JPEG, Size: 240 x 77, 24-Bpp
+//
+// for non-Arduino builds...
+#ifndef PROGMEM
+#define PROGMEM
+#endif
+const uint8_t ncc1701[] PROGMEM = {
+ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x48,
+ 0x00,0x48,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
+ 0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,
+ 0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,
+ 0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,
+ 0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,
+ 0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,
+ 0x00,0x11,0x08,0x00,0x4d,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
+ 0x01,0xff,0xc4,0x00,0x1d,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x06,0x07,0x08,0x09,0x04,0x03,0x02,0x0a,
+ 0xff,0xc4,0x00,0x40,0x10,0x00,0x01,0x03,0x03,0x02,0x03,0x06,0x03,0x05,0x04,0x09,
+ 0x05,0x01,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x11,0x06,0x07,0x12,0x21,
+ 0x31,0x08,0x13,0x41,0x51,0x61,0x71,0x09,0x22,0x81,0x14,0x32,0x91,0xa1,0xb1,0x15,
+ 0x42,0x52,0x62,0x16,0x23,0x24,0x53,0x63,0x72,0x73,0x82,0xb2,0x17,0x33,0x92,0xa2,
+ 0xd1,0xf0,0xff,0xc4,0x00,0x1a,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0xff,0xc4,
+ 0x00,0x23,0x11,0x00,0x02,0x02,0x01,0x05,0x01,0x00,0x02,0x03,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x02,0x11,0x12,0x03,0x21,0x31,0x41,0x51,0x04,0x05,0x13,
+ 0x22,0x32,0x61,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,
+ 0x00,0xd5,0x3a,0x2b,0x2c,0xb5,0xcf,0x6f,0x7d,0xd3,0xb4,0x6f,0x56,0xa3,0x65,0x1a,
+ 0xa2,0xd5,0x67,0xb0,0x5b,0xae,0x92,0x21,0x26,0xcf,0x22,0x02,0x56,0xa8,0xe1,0xb5,
+ 0x94,0x29,0x0e,0x2f,0xf7,0xd4,0x38,0x4e,0x4e,0x71,0x9e,0x94,0xa9,0x74,0xed,0xfb,
+ 0x3e,0xee,0xdb,0xc1,0x1a,0xd1,0x49,0xe2,0xf9,0x55,0xf6,0x76,0x92,0xd8,0x48,0xf4,
+ 0xc5,0x5a,0x8d,0x91,0x97,0xf8,0x69,0xc1,0x21,0x23,0x24,0xe0,0x79,0x9a,0x4e,0xb8,
+ 0x6a,0x5b,0x4d,0xa5,0x95,0x3b,0x36,0xe7,0x12,0x2b,0x69,0xea,0xa7,0x9f,0x4a,0x40,
+ 0xe7,0x8f,0x13,0x59,0x3d,0x74,0xed,0x71,0x2a,0xf8,0x15,0x19,0x7a,0xaa,0xe1,0x29,
+ 0xb0,0x4a,0x80,0x0f,0x9c,0x67,0xd8,0x54,0x69,0x72,0xdc,0xa9,0xbb,0x85,0xaa,0x58,
+ 0xb6,0x37,0x71,0x90,0xa8,0xe9,0x52,0x78,0xbb,0xd7,0x4f,0xcd,0x9c,0xa9,0xc5,0x7b,
+ 0xf0,0x80,0x91,0xea,0xb2,0x7c,0x05,0x0e,0x2a,0x2a,0xdb,0x1c,0x5c,0xa5,0x25,0x14,
+ 0xb7,0x66,0xd0,0x23,0x5d,0x58,0x1e,0x68,0xba,0xcd,0xd2,0x3c,0x96,0x87,0x55,0xb0,
+ 0xae,0xf0,0x0f,0x72,0x33,0x4a,0xb0,0x6e,0x71,0x2e,0x6d,0x97,0x22,0x49,0x6a,0x4a,
+ 0x07,0x52,0xd2,0xc2,0xb1,0xef,0xe5,0x59,0x85,0x62,0xd7,0x57,0x6d,0x31,0x6f,0x61,
+ 0x88,0xb3,0x1c,0x8c,0xd0,0x48,0x09,0x6a,0x2b,0x9c,0x28,0x23,0xa6,0x08,0x14,0xbb,
+ 0xa1,0xb7,0x73,0x50,0x6d,0xfe,0xa9,0x62,0xfb,0x0e,0x5a,0xd6,0x90,0xa1,0xf6,0xa8,
+ 0xae,0x2f,0xfa,0xb9,0x0d,0xe7,0xe6,0x0a,0xf5,0xc7,0x43,0xd4,0x57,0x04,0x3e,0x87,
+ 0x39,0xe3,0x8e,0xde,0x9e,0xcc,0xff,0x00,0x1e,0xe3,0x06,0xf2,0xdd,0x75,0x46,0x94,
+ 0xd4,0x4d,0xbe,0x1d,0xa7,0x74,0x46,0xc1,0x47,0x57,0xf4,0x8e,0x54,0x97,0xe7,0xf7,
+ 0x1f,0x69,0x16,0xeb,0x7b,0x05,0xe7,0xcb,0x5c,0x5c,0x3c,0x64,0x0e,0x41,0x39,0xe5,
+ 0x92,0x6a,0x4e,0xb4,0x5c,0x9b,0xbc,0xda,0xa1,0x4f,0x64,0x29,0x2c,0xca,0x61,0x0f,
+ 0xa0,0x2f,0xa8,0x4a,0x92,0x14,0x33,0xeb,0x83,0x55,0xb3,0xb6,0x8f,0x64,0x16,0xfb,
+ 0x43,0x69,0xe5,0x5d,0x74,0xf3,0xa9,0xb6,0xeb,0x78,0xcd,0xa1,0x94,0x48,0x2e,0x14,
+ 0x22,0x5c,0x74,0x92,0xae,0xe1,0x67,0xa0,0xe6,0x72,0x0e,0x3a,0xfa,0x1a,0xed,0x47,
+ 0x8e,0xef,0xa2,0x3c,0x87,0xf1,0x5d,0xd0,0x37,0x1b,0xdc,0x78,0x4c,0x69,0x2d,0x42,
+ 0x86,0x1d,0x59,0x4f,0xda,0x5f,0x4b,0x48,0x03,0xc8,0xf0,0xf1,0x13,0x52,0x2a,0x7b,
+ 0x76,0xe8,0x76,0x16,0x15,0x36,0xf1,0x62,0x8a,0xc9,0x03,0x90,0xb8,0x95,0x2c,0x79,
+ 0xe4,0x70,0x01,0xf9,0xd6,0x7c,0x5c,0x3e,0x17,0xbb,0xbd,0x76,0x9a,0xa9,0x32,0x74,
+ 0xeb,0xfc,0x44,0xf3,0x4a,0x2e,0xd1,0x42,0x4f,0xfe,0xf5,0xf2,0x9f,0x85,0x8e,0xe7,
+ 0x05,0x64,0xe8,0xf5,0xaf,0x3f,0xc5,0x79,0x8c,0x3f,0x45,0xd5,0xac,0x48,0xdc,0xbe,
+ 0x37,0x0f,0x88,0xee,0xd5,0x5b,0xd4,0xb4,0x1d,0x49,0x09,0xf5,0x85,0x72,0xee,0x3e,
+ 0x6e,0x5e,0x5f,0x7b,0xf3,0xa6,0xfb,0x7f,0x12,0x8d,0x03,0x32,0x52,0x1a,0x8d,0x70,
+ 0x95,0x21,0xd5,0xa4,0x84,0xa1,0xa6,0x40,0x41,0xc7,0x89,0x51,0x49,0xc7,0xe3,0x55,
+ 0x1d,0x9f,0x87,0x06,0xf3,0x45,0x42,0x5a,0x6b,0x4b,0x0e,0xe9,0x09,0x09,0x40,0xfd,
+ 0xb1,0x1c,0x60,0x0f,0xf7,0xd3,0x23,0x78,0x3b,0x2d,0xee,0x3e,0xc8,0x59,0x61,0xcf,
+ 0xd4,0x56,0x25,0x43,0x8f,0x31,0xd3,0x1d,0x90,0xdd,0xd1,0x32,0x14,0x55,0x8e,0x25,
+ 0x7c,0x89,0x59,0xe5,0x81,0xcc,0xe3,0x1d,0x3c,0xc5,0x52,0x51,0x25,0xe4,0x5e,0xb9,
+ 0x5d,0xbe,0x6c,0xf7,0x04,0xb4,0x44,0x47,0xca,0x51,0xf3,0x25,0x62,0x62,0x9b,0xe2,
+ 0xf7,0xe0,0xc6,0x7e,0xb5,0x0e,0xeb,0x8e,0xda,0x2b,0xd7,0x9b,0x8b,0x21,0xa4,0x5b,
+ 0xdb,0x72,0xdf,0x67,0x8a,0xca,0x61,0x43,0x7d,0xe5,0x29,0x0f,0x4e,0x7d,0x44,0x77,
+ 0xce,0xf5,0xe2,0x4b,0x68,0x4f,0xca,0x8e,0x9c,0x4a,0xc9,0x04,0xa4,0x62,0xb3,0xed,
+ 0xa7,0x67,0xdd,0xd2,0xde,0x0d,0x38,0xab,0xc6,0x8d,0xd2,0x53,0x6f,0x36,0xa6,0x9e,
+ 0x54,0x55,0x4b,0x44,0x86,0x5b,0x47,0x7a,0x8f,0xbc,0x91,0xc6,0xe2,0x49,0xc6,0x7c,
+ 0x05,0x3a,0xae,0x7d,0x8d,0x77,0x77,0x44,0xc0,0x73,0x53,0x5c,0xf4,0xa3,0x36,0x70,
+ 0x90,0x95,0x2c,0x4a,0xbc,0xc6,0xef,0x57,0xc1,0x92,0x02,0x51,0xde,0x7c,0xca,0xeb,
+ 0x80,0x32,0x4d,0x14,0xba,0x1a,0x6d,0x34,0xe4,0x4d,0x32,0x37,0x09,0xf9,0x17,0x98,
+ 0xd3,0xad,0x89,0x5d,0xa2,0x60,0x56,0x59,0x76,0x1b,0x84,0x38,0x95,0x79,0xf1,0x0e,
+ 0x64,0x9f,0x1f,0x3a,0xb8,0x9b,0x5f,0xda,0x21,0x2e,0x6d,0x4a,0xae,0x5a,0xb0,0x3d,
+ 0xfb,0x7e,0x0a,0x9c,0x60,0xb2,0xdc,0x65,0x87,0x26,0xf0,0xa4,0x14,0x2d,0x29,0xc7,
+ 0xef,0x03,0x83,0xe1,0x90,0x6b,0x3d,0xf4,0x9e,0xe0,0xea,0x7d,0x1f,0x2a,0x35,0xd2,
+ 0x26,0x9c,0x96,0xd4,0xb0,0x8e,0x5c,0x6c,0xa5,0x4a,0x46,0x7a,0x8c,0x78,0x7e,0x19,
+ 0xa5,0xbd,0x6b,0xda,0xf3,0x77,0xae,0x31,0x5e,0x8f,0x06,0xcf,0x2d,0xb0,0xe8,0x21,
+ 0x45,0x0c,0x84,0xf5,0xf5,0x3e,0xc2,0xb0,0xd3,0xd0,0x92,0x79,0x49,0xf3,0xd1,0xea,
+ 0x7d,0x9f,0x6e,0x9e,0xb2,0x5a,0x70,0x82,0x55,0xd9,0xe1,0xda,0xb3,0xb5,0xe6,0xe5,
+ 0x6b,0x2b,0xf1,0x6f,0x4d,0xdb,0xee,0x96,0x48,0x2c,0x8e,0x14,0xa2,0x52,0xd2,0x86,
+ 0xc1,0x1e,0x21,0x23,0x1f,0x89,0xc9,0xa8,0x0b,0x47,0x76,0xbb,0xdf,0xad,0xb3,0xd4,
+ 0x0c,0x5c,0xe2,0x6b,0x34,0x84,0x21,0xde,0xf1,0xdb,0x6c,0xb7,0x9b,0x5c,0x47,0xc7,
+ 0x8a,0x56,0xdf,0xaf,0x98,0xc1,0xf5,0xa6,0xce,0xb0,0xb5,0xee,0x7e,0xb8,0x94,0xeb,
+ 0xb3,0xad,0xf2,0xd6,0x56,0x4a,0x88,0x53,0xcd,0xa0,0x7f,0xca,0x9a,0xe7,0x63,0xf5,
+ 0x8c,0x97,0x56,0xa7,0x2d,0xcc,0x45,0x49,0x51,0x20,0x3d,0x2d,0x2a,0xe1,0x19,0xe4,
+ 0x39,0x12,0x6b,0xa1,0xa5,0xc2,0x3c,0xa4,0xfd,0x35,0xbb,0x63,0xbe,0x27,0xdb,0x69,
+ 0xb8,0x8c,0xd9,0xad,0x9a,0xad,0xd3,0xa4,0xb5,0x34,0xc2,0x86,0x1c,0x4a,0xb2,0xe4,
+ 0x12,0xe9,0x38,0xf9,0x5e,0xc0,0xc2,0x49,0xfe,0x20,0x31,0x9a,0xb9,0x48,0x5a,0x5d,
+ 0x42,0x56,0x85,0x05,0xa1,0x43,0x21,0x49,0x39,0x04,0x79,0x8a,0xfc,0xe9,0x7f,0xd0,
+ 0x8b,0xe1,0x6b,0x8a,0x7d,0xce,0x04,0x56,0x5b,0x19,0x21,0x2b,0x5b,0x9c,0x3f,0x4e,
+ 0x11,0xe7,0x56,0xf7,0x6a,0x7b,0x6d,0xee,0x26,0xd6,0xe8,0x4b,0x46,0x91,0x6f,0x53,
+ 0x37,0xa8,0x51,0x6d,0x68,0x47,0x8d,0x21,0x56,0xd0,0xe3,0x81,0xb1,0xf7,0x52,0xa5,
+ 0xa8,0x92,0xae,0x11,0xcb,0x9f,0x30,0x00,0x15,0x38,0x37,0xc1,0x59,0xa3,0x5c,0xa8,
+ 0xac,0xd7,0x8b,0xf1,0x26,0xdc,0x88,0x6e,0x23,0xbc,0xd3,0x16,0x8b,0x82,0x70,0x12,
+ 0x43,0xa5,0x4d,0x0c,0xff,0x00,0x17,0x25,0x79,0x53,0xd2,0xd5,0xf1,0x34,0xb8,0x96,
+ 0x12,0x2e,0x1b,0x7f,0x1c,0xba,0x4f,0x35,0x47,0xba,0x10,0x91,0xf4,0x2d,0x9f,0xd6,
+ 0xa7,0x09,0x0f,0x34,0x5f,0x4a,0x2a,0x87,0x5c,0xbe,0x23,0xd7,0x79,0x89,0x79,0x36,
+ 0xcd,0x2f,0x02,0x0a,0xd4,0x9c,0x36,0x66,0x3a,0xb7,0x78,0x4f,0x99,0xe1,0x23,0x3f,
+ 0x80,0xaf,0x58,0x3f,0x11,0xab,0x83,0xa9,0xee,0x9c,0xb3,0x59,0x97,0x25,0xbc,0x25,
+ 0xd0,0x97,0xdc,0x4f,0xcd,0xec,0x7a,0x51,0x84,0xbc,0x1e,0x51,0xf4,0xbd,0x94,0x55,
+ 0x2a,0x8f,0xdb,0xf6,0xed,0x24,0x9e,0x0d,0x39,0x6b,0x5e,0x3a,0xf0,0xc9,0x59,0xae,
+ 0x94,0xf6,0xf0,0xbc,0xf1,0x27,0x3a,0x6a,0xdf,0x8f,0x1c,0x3c,0xba,0x7f,0xae,0x5e,
+ 0x13,0x9c,0x4b,0x99,0x45,0x54,0xf8,0xbd,0xb9,0xdc,0x9a,0xf2,0x1a,0x6b,0x48,0x27,
+ 0x8d,0x47,0x1f,0x3d,0xc5,0x28,0x1f,0x8a,0x92,0x00,0xfa,0xd2,0xa0,0xed,0xc7,0x69,
+ 0x8f,0x29,0x6c,0xcc,0xd2,0xd2,0xd8,0xe1,0x1f,0x79,0x99,0x8d,0xbb,0xcf,0xcb,0x90,
+ 0x03,0x1e,0xa0,0xd2,0xc2,0x5e,0x0f,0x38,0x96,0x72,0x8a,0x80,0xed,0xbd,0xb4,0xf6,
+ 0xfe,0x67,0x00,0x92,0xdd,0xd6,0x02,0x8e,0x02,0x8b,0xb1,0x92,0xa4,0x8c,0xf5,0xe6,
+ 0x95,0x13,0x81,0xed,0x52,0x86,0x90,0xdd,0x7d,0x21,0xaf,0x55,0xc1,0x61,0xbf,0xc3,
+ 0xb8,0x3d,0x8c,0xf7,0x09,0x5f,0x03,0xb8,0xff,0x00,0x22,0xb0,0xaf,0xca,0x93,0x8b,
+ 0x5c,0xa2,0x93,0x4f,0x82,0xa9,0xf6,0x87,0xf8,0x68,0xe9,0xfd,0xd4,0xd6,0x37,0x3d,
+ 0x53,0xa5,0xee,0x31,0xec,0x57,0x0b,0xa3,0xcb,0x95,0x36,0x14,0xd6,0x4b,0xac,0x38,
+ 0xfa,0xce,0x56,0xea,0x54,0x0e,0x50,0x54,0x79,0x90,0x01,0x19,0xe7,0xca,0xab,0xad,
+ 0xfb,0xe1,0x55,0xb8,0x36,0xe0,0xe7,0xd9,0x53,0x62,0xbd,0x80,0x0f,0x09,0x62,0x62,
+ 0x9b,0x51,0xc7,0x41,0xfd,0x60,0x4e,0x0f,0xd6,0xb5,0x8a,0x8a,0x2f,0xa1,0xa6,0xd3,
+ 0x4e,0x2d,0xa6,0x8c,0x4d,0xba,0x76,0x16,0xdd,0x1d,0x21,0x24,0xba,0x8d,0xbd,0xba,
+ 0x2d,0x64,0x60,0x2e,0x08,0xfb,0x42,0x79,0xf2,0xe7,0xc2,0xa3,0x8a,0x61,0xc4,0xd2,
+ 0x3a,0xa3,0x6e,0x35,0x93,0x73,0x2f,0x7a,0x76,0xe1,0x6b,0x0c,0xab,0x81,0xc6,0xe6,
+ 0xc6,0x5b,0x7c,0xf0,0x46,0x32,0x46,0x39,0xa4,0x9f,0xc0,0x56,0xf7,0x57,0x2d,0xc2,
+ 0xd7,0x0e,0xec,0xc8,0x66,0x74,0x46,0x26,0x34,0x0e,0x7b,0xb9,0x0d,0xa5,0x69,0xcf,
+ 0xb1,0x14,0x95,0x25,0x55,0xb0,0xdc,0xa7,0x29,0x29,0xb9,0x36,0xd7,0xbb,0x99,0x3f,
+ 0x66,0xb8,0xc2,0xd4,0x76,0xc6,0x54,0xc3,0x8c,0x92,0x47,0xca,0x19,0x1c,0xc7,0xf9,
+ 0xbc,0xa9,0xd5,0xa4,0x34,0x74,0x9d,0x6f,0xa9,0xed,0xda,0x66,0xd6,0xeb,0x6e,0xdc,
+ 0xa7,0x28,0xf0,0x24,0x91,0xf2,0xb6,0x92,0x38,0xdc,0x50,0xeb,0xc2,0x07,0x3a,0x92,
+ 0x3b,0x54,0xfc,0x3b,0xd7,0x74,0x5c,0xfd,0x55,0xb4,0x6f,0xae,0xcf,0x70,0x73,0x89,
+ 0xe9,0x56,0x16,0x5d,0x2d,0xb6,0xe9,0xea,0x54,0xc1,0xe8,0x95,0x1f,0xe0,0x3c,0x8f,
+ 0x86,0x2a,0x95,0xec,0x47,0x66,0x6d,0xe6,0xbc,0xeb,0xbf,0xdb,0xf6,0x19,0x57,0x2d,
+ 0x33,0x78,0xb5,0xc8,0x52,0x11,0x7e,0xbb,0x3c,0xb6,0x92,0xca,0x81,0xc2,0x90,0x94,
+ 0x9f,0x9d,0x44,0x10,0x41,0x00,0x11,0xe0,0x48,0xae,0x58,0xfc,0xdf,0xca,0xd3,0xb5,
+ 0xe1,0xef,0x4b,0xf3,0x2f,0xf5,0xe2,0xe0,0x94,0xaa,0xac,0xdc,0x0b,0x3d,0xb5,0x16,
+ 0x6b,0x44,0x1b,0x7b,0x6a,0x2b,0x6e,0x2b,0x08,0x61,0x2a,0x57,0x52,0x12,0x90,0x90,
+ 0x7f,0x2a,0xeb,0x52,0x82,0x41,0x24,0x80,0x07,0x52,0x6a,0x09,0xb5,0x6a,0x5d,0x64,
+ 0x34,0x75,0xae,0xd9,0x7a,0xd4,0x31,0x9d,0xbb,0x30,0xc2,0x1b,0x99,0x73,0xb7,0xb1,
+ 0xdd,0x2a,0x4a,0xc0,0xe6,0xac,0x12,0x78,0x73,0xe9,0x49,0x93,0xe3,0x5c,0xae,0x4b,
+ 0xef,0x24,0xce,0x97,0x2d,0x58,0xe1,0x0b,0x5b,0xe5,0x39,0x1e,0xc2,0xbb,0xd6,0x93,
+ 0x7c,0x9f,0x36,0xf5,0x11,0x36,0xdd,0x75,0xd6,0x9e,0xb2,0x8c,0xcd,0xbc,0x43,0x63,
+ 0xd0,0xba,0x09,0xfc,0x05,0x34,0x6e,0x5d,0xa1,0x34,0x8c,0x0e,0x30,0xd3,0xf2,0xa6,
+ 0xad,0x3d,0x03,0x11,0xd5,0x85,0x7b,0x28,0xe0,0x54,0x50,0xe5,0x85,0xb6,0x1c,0x19,
+ 0x86,0xda,0x41,0xf1,0x48,0xfd,0x4d,0x76,0x31,0xa7,0xe1,0x05,0x25,0x6f,0xa5,0xa0,
+ 0x8f,0xe1,0x51,0xe5,0x8f,0xa5,0x68,0xb4,0x57,0x6c,0x87,0xa8,0xfa,0x16,0xa7,0x76,
+ 0xa5,0xef,0x90,0xeb,0x76,0xbd,0x33,0x29,0xd9,0x05,0x24,0x37,0xdf,0x38,0x30,0x15,
+ 0xfb,0xa4,0x84,0xe7,0x97,0xa6,0x6a,0xad,0xee,0x26,0xc5,0x6b,0x0d,0xfa,0xd4,0xcd,
+ 0xdd,0xf5,0x6d,0xd5,0x57,0x15,0xb4,0xf2,0xdd,0x8a,0xc4,0xf6,0xdd,0xee,0xa2,0x71,
+ 0x63,0x21,0x96,0x92,0xe8,0x08,0x18,0x03,0xdf,0x1c,0xce,0x6a,0xd1,0x31,0x36,0xc7,
+ 0x68,0xc0,0x8e,0xdb,0x09,0x23,0xc7,0x19,0x35,0xe8,0xf6,0xb6,0xb4,0x32,0x14,0xa2,
+ 0xf2,0x42,0xfc,0xea,0xd4,0x12,0xe1,0x12,0xe6,0xd9,0x18,0xed,0x46,0xd6,0xcd,0xd9,
+ 0x2d,0x22,0x2c,0x76,0x1b,0xc4,0xcb,0x45,0xb5,0x4a,0x5b,0xce,0xc5,0x8e,0xea,0x92,
+ 0xd2,0x9d,0x51,0xca,0xd6,0x02,0x8a,0x94,0x92,0x7d,0x15,0x49,0x1a,0xa6,0xd9,0x1d,
+ 0xc7,0x9c,0x71,0xf5,0xb9,0x31,0xf5,0x73,0x5b,0xaf,0x2c,0xa8,0x9f,0x52,0x4d,0x3c,
+ 0xf5,0x16,0xbb,0x87,0x27,0x88,0x21,0xf4,0x91,0x51,0xd5,0xe6,0xf4,0xdc,0xc2,0xae,
+ 0xed,0xc0,0xa1,0xe7,0x4d,0x40,0x97,0x21,0x87,0x7c,0x8e,0xc3,0x3c,0x5c,0x08,0x09,
+ 0x1e,0x43,0xa5,0x31,0xee,0x6f,0x36,0xd8,0x21,0x29,0x19,0xf1,0xe5,0x4f,0x6b,0xcb,
+ 0x0e,0x49,0x51,0x3c,0x49,0x03,0xde,0x9a,0x33,0xac,0xea,0x71,0x44,0x95,0xa7,0x1e,
+ 0xf4,0xe8,0x56,0x32,0x2e,0xb3,0x9c,0x42,0x95,0xc0,0x9e,0x25,0x63,0x09,0x40,0x20,
+ 0x64,0xf9,0x53,0x26,0xe1,0x71,0xbb,0xcd,0x9c,0x88,0xd8,0x10,0xf8,0x82,0xb0,0x09,
+ 0x07,0x8b,0xeb,0xed,0xfc,0x39,0xa7,0x3e,0xbe,0xdb,0x39,0xba,0x9e,0xf5,0x64,0x53,
+ 0x72,0x12,0xd5,0xba,0x3a,0xdc,0x54,0xa2,0x97,0x8b,0x6b,0xc1,0x03,0x87,0x87,0x1d,
+ 0x4e,0x45,0x23,0xbb,0xb5,0x37,0x5f,0xe9,0x55,0x9e,0x7b,0x97,0xa6,0xa7,0x43,0xb7,
+ 0x95,0xe0,0xba,0xde,0x1f,0x29,0x50,0xfb,0xa4,0x8e,0x4a,0xe9,0xd7,0x95,0x4d,0x31,
+ 0xec,0x21,0xbd,0x6e,0x6a,0xc7,0x0d,0x72,0xa6,0x4a,0x71,0xb6,0x9a,0x1c,0x4e,0x2b,
+ 0xbd,0x52,0x5b,0x03,0xa6,0x4f,0x32,0x6b,0x88,0xdf,0x2d,0xe5,0x02,0x42,0x1c,0x52,
+ 0x9a,0x73,0x07,0xbf,0x43,0x2a,0x29,0x20,0xf4,0xca,0xb1,0x52,0xc4,0xab,0x03,0x0e,
+ 0xa1,0x6d,0x38,0xd2,0x56,0xda,0xc7,0x09,0x0b,0x19,0x04,0x79,0x1a,0x6e,0x5b,0x74,
+ 0x13,0x36,0x10,0xf3,0x10,0x6e,0x12,0x23,0xc5,0x5a,0xb8,0x93,0x14,0x84,0xb8,0x86,
+ 0xfd,0x11,0xc4,0x09,0x03,0xd2,0x96,0x3b,0x8d,0x31,0xb5,0x3d,0x52,0xe1,0xc2,0x5b,
+ 0xcc,0xc4,0x5c,0xe5,0x80,0x08,0x65,0xb2,0x02,0x95,0xed,0x9e,0x54,0x8d,0x6d,0xd4,
+ 0x12,0x6e,0x0f,0x04,0x2a,0x13,0x71,0x95,0x9c,0x29,0xb7,0x1f,0xe1,0x75,0x1e,0xe9,
+ 0x20,0x7e,0x44,0xd4,0x93,0x6f,0xb0,0x45,0xb5,0xf7,0xc3,0xbe,0x93,0x20,0xba,0xae,
+ 0x35,0x17,0xd6,0x55,0x83,0xfc,0xa3,0xc0,0x7a,0x57,0xa4,0x88,0xf6,0xd7,0x14,0x92,
+ 0xf4,0x56,0xde,0x52,0x7a,0x17,0x10,0x0e,0x3d,0xa8,0x61,0x63,0x37,0xbc,0x4d,0xd1,
+ 0x2e,0xc5,0x85,0x21,0x0e,0x4c,0x68,0x82,0xb4,0x21,0xdc,0x60,0x7a,0x9c,0x1f,0xd2,
+ 0x95,0x2d,0x5a,0x14,0x45,0x8e,0x1a,0x69,0xa8,0xe9,0x6c,0xfc,0xca,0x41,0x6b,0x04,
+ 0xa8,0xf5,0xf9,0x93,0x8f,0xd2,0x9c,0x91,0xdc,0x84,0xc8,0xc3,0x30,0xd9,0x68,0xff,
+ 0x00,0x2a,0x42,0x6b,0xb1,0x2f,0x36,0xae,0x7c,0x21,0x20,0x78,0xf1,0x60,0x53,0xb1,
+ 0x1c,0x10,0x34,0xb3,0x4d,0xa9,0xb5,0xc8,0xc3,0x65,0xa5,0x85,0xa5,0x0d,0xa8,0x29,
+ 0x3c,0xbd,0x70,0x0d,0x3a,0x59,0x9e,0xdb,0x43,0x09,0xe2,0x5f,0xb8,0xe5,0x4d,0xb9,
+ 0x7a,0xae,0xcb,0x6e,0x04,0x49,0xba,0xc3,0x60,0x8e,0xa8,0x5b,0xe9,0xe2,0xfc,0x33,
+ 0x9a,0x48,0x97,0xbc,0xda,0x62,0x08,0xf9,0x25,0x3b,0x2d,0x63,0xf7,0x63,0xc7,0x51,
+ 0xfc,0xd5,0x81,0xf9,0xd5,0x58,0x89,0x05,0x13,0x14,0x47,0xdd,0x56,0x3d,0xab,0xec,
+ 0xc8,0x56,0x32,0x52,0xa3,0xee,0x2a,0x1a,0xb9,0xf6,0x89,0x4b,0x43,0x86,0x05,0x99,
+ 0xd5,0xf9,0x2e,0x4b,0xa1,0x03,0xff,0x00,0x14,0xe7,0xf5,0xa6,0x8d,0xd3,0x7d,0x35,
+ 0x75,0xcd,0xc0,0xdc,0x47,0x58,0x82,0x5c,0x3c,0x09,0x6e,0x33,0x3c,0x4a,0x24,0xf4,
+ 0x00,0xab,0x27,0x3e,0xd4,0xc2,0x8b,0x11,0x32,0xe0,0xcc,0x46,0x94,0xe4,0x82,0x19,
+ 0x6c,0x75,0x5b,0x98,0x4a,0x7f,0x13,0x5c,0x7b,0x75,0xaa,0xae,0x3a,0xff,0x00,0x72,
+ 0x6d,0x5a,0x6f,0x6e,0xa3,0x3d,0x7b,0xd4,0xaa,0x79,0x2b,0x0f,0xc6,0x25,0x2c,0x42,
+ 0x4a,0x48,0x2a,0x79,0xd7,0x47,0x24,0xa5,0x3e,0x9c,0xc9,0xe4,0x3a,0xd4,0x17,0xa2,
+ 0xf6,0x77,0x72,0xb7,0xff,0x00,0x51,0xa2,0xd1,0x69,0x6a,0x5d,0xf6,0xe4,0xb5,0x61,
+ 0xc4,0x38,0xe9,0x53,0x71,0xd3,0xc7,0xc2,0x56,0xea,0x87,0xca,0xda,0x41,0x0a,0xeb,
+ 0xcc,0xf0,0xf2,0x07,0x23,0x3a,0xf5,0xd8,0xfb,0xb2,0x9d,0xab,0xb2,0xde,0xdf,0x2a,
+ 0xdc,0x97,0x5b,0xb9,0x6a,0x5b,0x82,0x83,0xd7,0x4b,0x9a,0x51,0x8e,0xf1,0x5e,0x0d,
+ 0xa3,0xc4,0x36,0x9f,0x0f,0x3e,0xa6,0xb3,0x9c,0xf1,0x5b,0x1a,0x46,0x17,0xc9,0x3e,
+ 0x51,0x45,0x15,0xc6,0x74,0x85,0x14,0x51,0x40,0x05,0x55,0xfe,0xd0,0xba,0xf9,0xce,
+ 0xcf,0x97,0x01,0x7c,0xbc,0x69,0x89,0xd7,0xbd,0x1d,0x35,0xc2,0x57,0x76,0xb5,0x94,
+ 0x95,0xc2,0x75,0x47,0xee,0x3c,0xd9,0xc7,0xca,0x7c,0x16,0x0f,0x3e,0x98,0xcf,0x5b,
+ 0x41,0x5c,0x37,0xcb,0x24,0x0d,0x4b,0x68,0x97,0x6b,0xba,0x44,0x6a,0x7d,0xba,0x5b,
+ 0x6a,0x65,0xf8,0xcf,0xa4,0x29,0x0e,0x20,0x8c,0x10,0x41,0xaa,0x8c,0xb1,0x76,0x4c,
+ 0x96,0x48,0xa5,0x56,0xee,0xd9,0x3b,0x59,0xa9,0xec,0xb2,0x58,0x6f,0x50,0x0d,0x2d,
+ 0x74,0x79,0xa5,0xa1,0xa7,0x2e,0x30,0x96,0x52,0xc2,0x88,0x21,0x0b,0x3c,0x40,0x05,
+ 0x63,0x92,0xb1,0x9c,0x78,0x52,0x96,0xda,0x6e,0x76,0x90,0xb6,0xda,0xdd,0x8d,0x2b,
+ 0x77,0xad,0x5a,0xad,0xe7,0x5c,0xef,0x10,0xfc,0x97,0x1b,0x65,0x4d,0x8e,0x10,0x0a,
+ 0x40,0x07,0x98,0xc8,0x27,0x9f,0x4c,0xe3,0xa5,0x32,0x77,0xa7,0xe1,0x76,0x65,0x4b,
+ 0x95,0x73,0xdb,0x6b,0xf2,0x18,0x4a,0xfe,0x64,0xd9,0x6f,0x0a,0x51,0x4a,0x7f,0x95,
+ 0x0f,0x0c,0x90,0x3c,0x82,0x81,0xf7,0xaa,0x21,0xaa,0xf6,0xf2,0xf9,0xa4,0x2e,0x37,
+ 0x08,0x17,0x6b,0x7f,0x03,0xb0,0x5e,0x5c,0x77,0xd4,0x82,0x1c,0x42,0x56,0x95,0x70,
+ 0xab,0x98,0xf0,0xc8,0xeb,0x5d,0x29,0xa9,0x3b,0x39,0x9c,0x69,0xee,0x6a,0x45,0xcf,
+ 0x77,0xf4,0x4c,0x56,0xcf,0x1e,0xad,0xb4,0xab,0x87,0xf8,0x25,0x20,0x9f,0xc8,0xd3,
+ 0x06,0xe7,0xda,0x0f,0x44,0x7d,0xa1,0x48,0x4d,0xcd,0x0e,0x0c,0xff,0x00,0xdc,0x4f,
+ 0x43,0xf5,0xac,0xcc,0x30,0x1b,0xea,0x1b,0x4e,0x09,0xea,0x12,0x2b,0xe5,0x71,0x50,
+ 0x79,0x84,0x0e,0x5e,0x95,0xa5,0x3e,0x84,0x69,0x2a,0xf7,0xcf,0x44,0xbc,0x33,0xfb,
+ 0x4e,0x3a,0x4f,0xf3,0xba,0x69,0x12,0xe5,0xbc,0xfa,0x31,0xc2,0x4a,0x6e,0x70,0xb0,
+ 0x7a,0x9e,0xfb,0x15,0x9f,0x08,0x8e,0x85,0x27,0x9a,0x46,0x7d,0x2b,0xe7,0xec,0x8d,
+ 0x92,0x07,0x00,0x3f,0x4a,0x6a,0xc5,0x45,0xf3,0x7f,0x72,0xf4,0xb4,0xb1,0xf2,0x5d,
+ 0xe0,0xe0,0xf9,0xc8,0x02,0x93,0xe4,0xeb,0xab,0x09,0x4f,0xcb,0x78,0x82,0x07,0xa4,
+ 0x94,0xff,0x00,0xf6,0xa8,0xda,0xa1,0x35,0xfd,0xd2,0x4f,0xfb,0x6b,0xc9,0x70,0x9a,
+ 0x07,0x3d,0xca,0x39,0x7f,0x28,0xa7,0xb8,0x51,0x73,0x26,0xee,0x16,0x9b,0x64,0x10,
+ 0xe5,0xee,0x02,0x47,0x8f,0xf6,0x81,0xff,0x00,0xda,0x6d,0xcf,0xdc,0xed,0x1a,0xa5,
+ 0x80,0xe6,0xa0,0x82,0x02,0x7f,0x75,0x2e,0xe6,0xaa,0xc3,0x30,0x92,0xe8,0x77,0x87,
+ 0xba,0x6f,0xbb,0x47,0x1f,0xce,0x40,0xe2,0xe6,0x06,0x07,0x99,0xe7,0xf9,0x1a,0xf7,
+ 0xb4,0xbf,0x1a,0x04,0xf4,0xbd,0x32,0x02,0x2e,0x4c,0x00,0x41,0x8e,0xb5,0xa9,0x00,
+ 0x9f,0x03,0x94,0xf3,0xe5,0x49,0x95,0x45,0x96,0x67,0x7b,0xf4,0x55,0xac,0xb9,0xc3,
+ 0x32,0x24,0xd2,0xac,0x60,0xa9,0x95,0xb9,0xc3,0xec,0x07,0x2f,0xc7,0x35,0xc7,0x73,
+ 0xed,0x1f,0xa6,0x9f,0x8e,0xa6,0x12,0x94,0x94,0x1f,0x06,0x2d,0x49,0x42,0xbe,0x8b,
+ 0xe0,0x07,0xf3,0xa8,0x16,0x05,0xfe,0x1d,0xbe,0xe1,0x36,0x48,0xd3,0xd6,0xf9,0x2c,
+ 0xbe,0x41,0x6e,0x3c,0x9e,0x35,0xa1,0x8c,0x67,0x92,0x79,0xe4,0xf5,0xf1,0xf2,0xae,
+ 0x58,0x17,0x75,0x5b,0x98,0x98,0xd2,0x21,0xc3,0x73,0xed,0x23,0x05,0x6f,0x34,0x16,
+ 0xa6,0xc7,0xf2,0x13,0xf7,0x69,0x6f,0xe0,0x52,0x25,0xd9,0x9b,0xfb,0x64,0x57,0x10,
+ 0x6a,0xdd,0x39,0xe3,0xfe,0x54,0x27,0xf5,0x55,0x23,0x48,0xde,0xe5,0x38,0x4f,0xd9,
+ 0xac,0xc4,0x8f,0xf1,0xdf,0x03,0xf4,0x06,0x9b,0x36,0xd6,0xf5,0x36,0xa2,0xb3,0x47,
+ 0xb5,0xb3,0x66,0x99,0x3a,0xd4,0xd2,0xd2,0x95,0x18,0x16,0xe2,0xb7,0x3a,0xe7,0x1c,
+ 0x69,0x49,0x39,0xf7,0xa7,0x23,0x1d,0x9c,0x37,0x2e,0xf2,0xf8,0xfd,0x8d,0xb6,0xba,
+ 0xc1,0x4c,0x72,0x41,0xfb,0x5d,0xb1,0xd4,0x9e,0x23,0xea,0x50,0x90,0x07,0xff,0x00,
+ 0xb3,0x45,0xfa,0x15,0xe0,0x9d,0x3b,0x77,0x6f,0x0a,0x51,0x42,0x2d,0xd0,0xe3,0x2b,
+ 0xc7,0x8c,0xad,0x64,0x7f,0xc6,0x92,0x9f,0xdc,0x4d,0x41,0x27,0xac,0xa8,0xec,0x7f,
+ 0xa1,0x1c,0x0f,0xf9,0x15,0x54,0xb3,0x66,0xec,0x25,0xbe,0xd7,0xe7,0x12,0xb5,0x68,
+ 0x59,0x11,0x92,0xb5,0xf0,0x97,0x27,0x4d,0x8e,0xde,0x3d,0x48,0x2e,0x71,0x63,0xe8,
+ 0x6a,0x43,0xb1,0x7c,0x2f,0xf7,0x6e,0xe8,0xd2,0x1c,0x9f,0x37,0x4e,0xd9,0xc1,0x23,
+ 0x2d,0xbb,0x2d,0xc7,0x56,0x91,0xe3,0xf7,0x5b,0xc6,0x7d,0x33,0xf5,0xa9,0xb8,0x2e,
+ 0x58,0xd4,0x59,0x53,0x65,0x6a,0x1b,0xc4,0xac,0xf7,0xb7,0x69,0x58,0xff,0x00,0x0d,
+ 0x61,0xbf,0xf8,0x01,0x49,0x52,0x0a,0xe5,0x1c,0x3e,0xf3,0xd2,0x3f,0xd6,0x75,0x4b,
+ 0xfd,0x49,0xad,0x12,0xd3,0xff,0x00,0x09,0x77,0x16,0x84,0x1b,0xf6,0xe1,0xe0,0x92,
+ 0x0a,0xdb,0xb6,0xdb,0xf1,0x81,0xe2,0x02,0x96,0xa3,0x9f,0x7c,0x54,0xa7,0xa5,0xfe,
+ 0x17,0x7b,0x49,0x66,0x09,0x55,0xd2,0x4d,0xf2,0xfe,0xe0,0xe6,0x7b,0xf9,0x9d,0xca,
+ 0x49,0xf6,0x6c,0x0e,0x55,0x2f,0x52,0x0b,0x82,0xb0,0x66,0x4a,0x70,0x36,0xdf,0x2c,
+ 0x25,0x23,0xa7,0x95,0x38,0x74,0xbe,0xdb,0xea,0xbd,0x6f,0x25,0x2c,0x69,0xfd,0x35,
+ 0x74,0xbc,0x3a,0xa3,0x84,0x88,0x71,0x16,0xbc,0x9f,0x70,0x31,0x5b,0x61,0xa4,0xbb,
+ 0x26,0x6d,0x0e,0x89,0x71,0xa7,0x6d,0x5a,0x06,0xcc,0x87,0xdb,0xe6,0x97,0xdf,0x60,
+ 0x3c,0xbc,0xf9,0x92,0xbc,0xd4,0xa7,0x06,0xdb,0x12,0xd6,0xc7,0x73,0x0a,0x2b,0x31,
+ 0x19,0xfe,0xed,0x86,0xc2,0x13,0xf8,0x01,0x52,0xf5,0xbc,0x45,0x2d,0x3f,0x59,0x8f,
+ 0x9b,0x73,0xf0,0xda,0xde,0x2d,0x7e,0x94,0x48,0xb8,0xc1,0x87,0xa3,0xe1,0xab,0x18,
+ 0x37,0x97,0x48,0x77,0x1f,0xe9,0xa0,0x29,0x40,0xfb,0x81,0x56,0xa7,0x68,0xfe,0x15,
+ 0x3a,0x13,0x4b,0x38,0xd4,0xdd,0x71,0x78,0x99,0xab,0xe6,0xa0,0x85,0x08,0x91,0xc9,
+ 0x87,0x10,0x7a,0x1e,0x13,0xde,0x2b,0xdf,0x89,0x3e,0xd5,0x78,0xe8,0xac,0x9e,0xa4,
+ 0x99,0x6a,0x09,0x08,0x9a,0x47,0x44,0xe9,0xfd,0x03,0x67,0x6a,0xd5,0xa6,0xec,0xb0,
+ 0x6c,0x76,0xe6,0xc7,0xcb,0x1a,0x03,0x09,0x69,0x1e,0xe4,0x24,0x73,0x3e,0xa7,0x9d,
+ 0x2d,0xd1,0x45,0x66,0x58,0x51,0x45,0x14,0x00,0x51,0x45,0x14,0x00,0x51,0x45,0x14,
+ 0x00,0x56,0x4f,0xf6,0xd5,0xec,0xeb,0xaf,0xb6,0xd3,0x57,0xea,0x7d,0x4c,0xd2,0x15,
+ 0x77,0xd0,0xf7,0x99,0x8f,0xc9,0x12,0x98,0x1c,0x46,0x27,0x7c,0xa2,0xa2,0xdb,0xc3,
+ 0x19,0x00,0x15,0x10,0x15,0xd0,0xfe,0x55,0xac,0x15,0xcd,0x71,0xb7,0x45,0xbb,0xc1,
+ 0x7e,0x14,0xd8,0xed,0x4b,0x88,0xfa,0x0b,0x6e,0xb0,0xf2,0x02,0x90,0xb4,0x9e,0xa0,
+ 0x83,0xc8,0x8a,0x69,0xd1,0x2d,0x59,0x83,0xfb,0x7b,0x7f,0x46,0x95,0xb7,0x2e,0x23,
+ 0xe8,0x6f,0x84,0xba,0xa3,0xc0,0xac,0x12,0x72,0x07,0x3c,0x53,0xe0,0xdd,0x2c,0xb2,
+ 0x59,0x43,0xaf,0x42,0x85,0x21,0x2a,0xe6,0x4f,0x74,0x9c,0x8e,0x59,0xc1,0xe5,0xd7,
+ 0xad,0x5c,0x9e,0xd1,0x7f,0x0d,0x6b,0x56,0xa6,0x6a,0x75,0xe3,0x6c,0xe4,0x22,0xcd,
+ 0x71,0x70,0x97,0x15,0x63,0x94,0xaf,0xec,0x6e,0x9f,0x10,0xda,0xba,0xb6,0x7f,0x11,
+ 0xed,0x59,0xe7,0xb8,0x3a,0x23,0x59,0xed,0x05,0xe9,0xcb,0x15,0xde,0xcf,0x2e,0xd3,
+ 0x73,0x8e,0x38,0x97,0x12,0x6a,0x72,0x1c,0x18,0xe6,0xa6,0xd6,0x39,0x29,0x27,0x00,
+ 0xe4,0x12,0x3a,0xd6,0xb9,0x78,0x65,0x85,0xbd,0xc7,0x55,0xcd,0x16,0x37,0x50,0x54,
+ 0xdd,0xba,0x33,0x5c,0xce,0x0a,0x46,0x29,0x8b,0xaa,0xef,0x56,0xbb,0x0c,0x17,0x1c,
+ 0x10,0xdb,0x53,0xbd,0x10,0x90,0x4f,0x33,0xf8,0xd3,0x73,0xfa,0x7c,0xb4,0xa9,0x09,
+ 0x9c,0xc2,0xd8,0x56,0x70,0x49,0x1c,0x89,0xf4,0x22,0x91,0xf5,0x5b,0x12,0x75,0x0b,
+ 0x46,0x6b,0x2e,0xb0,0x22,0x36,0x33,0xfd,0x63,0xc1,0x27,0x1e,0x60,0x78,0xd2,0x53,
+ 0xbe,0x19,0x52,0xd2,0x94,0x3f,0xb2,0x17,0x74,0x74,0x88,0x97,0x16,0x1c,0x76,0xf5,
+ 0x71,0x54,0x75,0xac,0x15,0x21,0x09,0x01,0x28,0x6c,0x7b,0xe3,0x34,0xc0,0xd5,0x5a,
+ 0xd5,0xe8,0x17,0x75,0x33,0x6d,0x9a,0xf4,0x98,0xe9,0x56,0x12,0xa5,0x21,0x23,0x8c,
+ 0x67,0xc0,0x63,0x3c,0xeb,0xc3,0x58,0x4e,0x0c,0xd9,0x22,0x77,0x04,0x84,0xb8,0x03,
+ 0x79,0x1d,0x30,0x2b,0xc7,0x4c,0x14,0xaa,0x0f,0xda,0xcb,0x48,0x32,0x16,0x4b,0x69,
+ 0x59,0x4f,0x34,0x24,0x63,0x24,0x7a,0x9c,0xe3,0x3e,0x94,0xa5,0x27,0xc2,0x2a,0x31,
+ 0x4f,0x73,0x58,0xfb,0x1c,0x5d,0xbb,0x29,0xf6,0x83,0xb5,0xc4,0xb3,0x44,0xd0,0xb0,
+ 0xed,0x3a,0xd9,0x2c,0x20,0xc9,0xb4,0xdf,0x54,0xea,0xdd,0x7d,0x69,0x4f,0xce,0xb6,
+ 0x14,0xb5,0x90,0xb1,0xc8,0x9c,0x27,0x04,0x78,0x8a,0xb6,0x96,0xee,0xca,0x3b,0x3b,
+ 0x6a,0x5a,0xd4,0xc6,0xdb,0x69,0xc5,0x95,0x8c,0x11,0x22,0x02,0x1e,0x1f,0x40,0xb0,
+ 0x40,0xfa,0x56,0x1e,0x6d,0x3e,0xb3,0xb9,0xed,0x3e,0xe0,0xe9,0x9d,0x55,0x09,0xb7,
+ 0x13,0x3a,0xd7,0x31,0xb9,0x8d,0x26,0x40,0xe4,0xb0,0x0f,0x3e,0xbe,0x0a,0x49,0x52,
+ 0x7e,0xb5,0xfa,0x18,0x42,0xb8,0xd0,0x95,0x74,0xc8,0xcd,0x4d,0xbf,0x4a,0xa4,0x30,
+ 0xad,0xfd,0x9f,0x76,0xc2,0xd4,0xea,0x9d,0x87,0xb7,0x7a,0x56,0x3b,0x8a,0x1c,0x25,
+ 0x4d,0xd9,0xa3,0x82,0x47,0x97,0xdc,0xa7,0x0c,0x0d,0x05,0xa6,0x2d,0x51,0xc4,0x78,
+ 0x5a,0x72,0xd3,0x0d,0x80,0x4a,0x83,0x4c,0x41,0x69,0x09,0x04,0xf5,0x38,0x09,0xc5,
+ 0x2f,0x51,0x4a,0xc6,0x7c,0xa1,0xb4,0x34,0x90,0x94,0x24,0x21,0x20,0x60,0x04,0x8c,
+ 0x01,0x5f,0x54,0x51,0x48,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,
+ 0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,
+ 0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x9a,0xbb,0x8d,0xb5,0xba,0x57,
+ 0x76,0xb4,0xfb,0x96,0x6d,0x59,0x64,0x8b,0x79,0x82,0xa0,0x78,0x43,0xe8,0xf9,0xda,
+ 0x51,0x18,0xe2,0x6d,0x63,0xe6,0x42,0xbd,0x52,0x45,0x3a,0xa8,0xa0,0x0c,0xbf,0xed,
+ 0x0d,0xf0,0xca,0xbd,0xe9,0x61,0x2a,0xef,0xb7,0x4f,0x2f,0x52,0xd9,0xf9,0xad,0x56,
+ 0x99,0x18,0x13,0x19,0x1e,0x49,0x3d,0x1d,0xfc,0x8f,0xa1,0xaa,0x3d,0xaa,0xb4,0xd4,
+ 0xbb,0x0b,0x13,0x2d,0xb3,0x60,0x3b,0x0a,0x4b,0x20,0xb6,0xb8,0xef,0x34,0x5b,0x71,
+ 0x18,0xe5,0x8c,0x1f,0x2a,0xfd,0x10,0xd4,0x7d,0xb9,0x7b,0x05,0xa0,0x37,0x79,0xa2,
+ 0x35,0x56,0x98,0x83,0x73,0x7b,0x84,0xa5,0x32,0x8b,0x7c,0x0f,0xa7,0x3e,0x4b,0x4e,
+ 0x0d,0x5a,0x95,0x72,0x43,0x8f,0x87,0xe7,0x93,0x54,0x58,0xbe,0xd3,0xa3,0xa3,0xbb,
+ 0x1c,0x97,0x97,0x19,0x5c,0x4b,0x09,0x1d,0x12,0x7a,0xfe,0x1c,0xa9,0x17,0x4a,0x4b,
+ 0x47,0xd8,0x8b,0x7c,0x40,0x38,0xda,0x8e,0x53,0x9e,0x7c,0x27,0x9e,0x47,0xd6,0xb6,
+ 0x3f,0x5b,0x7c,0x27,0x36,0xce,0x7f,0xda,0xa5,0xd8,0xb5,0x1e,0xa2,0xd3,0x8a,0x21,
+ 0x4a,0x0c,0xb4,0xea,0x1f,0x6f,0xd8,0x85,0xa7,0x24,0x7d,0x6a,0x06,0xec,0xd9,0xf0,
+ 0xea,0xd2,0xba,0x87,0x7b,0xae,0x0a,0xbf,0xde,0xd5,0x73,0xb6,0x69,0xa9,0x8d,0xa9,
+ 0x56,0xf4,0x40,0x0d,0x26,0x69,0x1f,0x36,0x16,0x7b,0xc5,0x61,0x27,0x1c,0xc0,0x1c,
+ 0xfc,0xe8,0x74,0xf7,0x43,0x8d,0xad,0x99,0x07,0xf6,0x3c,0xec,0xfd,0xa9,0x7b,0x47,
+ 0xee,0x15,0x9e,0xdc,0x96,0x26,0x23,0x46,0xc0,0x90,0x89,0x57,0x49,0xef,0xa5,0x45,
+ 0x80,0xda,0x54,0x09,0x6d,0x24,0xf2,0x2b,0x5e,0x38,0x40,0x1e,0x79,0x3d,0x2b,0x73,
+ 0xc0,0x09,0x00,0x0e,0x40,0x57,0x15,0x96,0xc5,0x6d,0xd3,0x76,0xe6,0xa0,0x5a,0x60,
+ 0x46,0xb6,0x41,0x6b,0x92,0x23,0x44,0x65,0x2d,0x36,0x9f,0x64,0xa4,0x01,0x5d,0xd5,
+ 0x05,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,
+ 0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x1f,0xff,0xd9};
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/thumb_test.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/thumb_test.h
new file mode 100644
index 000000000..0b43b0074
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5Stack/thumb_test.h
@@ -0,0 +1,1286 @@
+//
+// thumb_test
+//
+const uint8_t thumb_test[] PROGMEM = { 0xff,0xd8,0xff,0xe1,0x1e,0x28,0x45,0x78,0x69,0x66,0x00,0x00,0x4d,0x4d,0x00,0x2a,
+ 0x00,0x00,0x00,0x08,0x00,0x0d,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x0f,0xc0,
+ 0x00,0x00,0x01,0x01,0x00,0x03,0x00,0x00,0x00,0x01,0x0b,0xd0,0x00,0x00,0x01,0x0f,
+ 0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xaa,0x01,0x10,0x00,0x02,0x00,0x00,
+ 0x00,0x0a,0x00,0x00,0x00,0xb2,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x06,
+ 0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xbc,0x01,0x1b,
+ 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xc4,0x01,0x28,0x00,0x03,0x00,0x00,
+ 0x00,0x01,0x00,0x02,0x00,0x00,0x01,0x31,0x00,0x02,0x00,0x00,0x00,0x0f,0x00,0x00,
+ 0x00,0xcc,0x01,0x32,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xdc,0x02,0x13,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x87,0x69,0x00,0x04,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x00,0xf0,0x88,0x25,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x03,0x20,0x00,0x00,0x03,0x26,0x73,0x61,0x6d,0x73,0x75,0x6e,0x67,0x00,0x53,0x4d,
+ 0x2d,0x47,0x39,0x36,0x35,0x55,0x31,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,
+ 0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x47,0x39,0x36,0x35,0x55,0x31,0x55,0x45,
+ 0x53,0x37,0x44,0x54,0x45,0x31,0x00,0x00,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a,
+ 0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x1f,0x82,0x9a,
+ 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x6a,0x82,0x9d,0x00,0x05,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x02,0x72,0x88,0x22,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x02,
+ 0x00,0x00,0x88,0x27,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0xfa,0x00,0x00,0x90,0x00,
+ 0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x32,0x32,0x30,0x90,0x03,0x00,0x02,0x00,0x00,
+ 0x00,0x14,0x00,0x00,0x02,0x7a,0x90,0x04,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00,
+ 0x02,0x8e,0x91,0x01,0x00,0x07,0x00,0x00,0x00,0x04,0x01,0x02,0x03,0x00,0x92,0x01,
+ 0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xa2,0x92,0x02,0x00,0x05,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x02,0xaa,0x92,0x03,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x02,0xb2,0x92,0x04,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xba,0x92,0x05,
+ 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xc2,0x92,0x07,0x00,0x03,0x00,0x00,
+ 0x00,0x01,0x00,0x02,0x00,0x00,0x92,0x09,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0x92,0x0a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xca,0x92,0x90,
+ 0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,0x02,0xd2,0x92,0x91,0x00,0x02,0x00,0x00,
+ 0x00,0x07,0x00,0x00,0x02,0xda,0x92,0x92,0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,
+ 0x02,0xe2,0xa0,0x00,0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0xa0,0x01,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa0,0x02,0x00,0x04,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x0f,0xc0,0xa0,0x03,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x0b,0xd0,0xa0,0x05,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x02,0xa2,0x17,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa3,0x01,0x00,0x01,0x00,0x00,
+ 0x00,0x01,0x01,0x00,0x00,0x00,0xa4,0x02,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0xa4,0x03,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x05,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x1a,0x00,0x00,0xa4,0x06,0x00,0x03,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x20,0x00,0x02,0x00,0x00,0x00,0x18,0x00,0x00,
+ 0x02,0xea,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3c,0x00,0x00,
+ 0x00,0xf0,0x00,0x00,0x00,0x64,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a,0x30,0x39,
+ 0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x32,0x30,0x32,0x30,0x3a,0x30,
+ 0x38,0x3a,0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x00,
+ 0x17,0x12,0x00,0x00,0x03,0xe8,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x64,0x00,0x00,
+ 0x00,0xa6,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,
+ 0x00,0x74,0x00,0x00,0x00,0x64,0x00,0x00,0x10,0xcc,0x00,0x00,0x03,0xe8,0x38,0x37,
+ 0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37,0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37,
+ 0x35,0x37,0x31,0x39,0x00,0x00,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56,
+ 0x4d,0x20,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31,0x56,0x41,0x00,0x00,0x02,
+ 0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x04,0x52,0x39,0x38,0x00,0x00,0x02,0x00,0x07,
+ 0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x09,0x01,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x40,
+ 0x01,0x01,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x03,
+ 0x00,0x00,0x00,0x01,0x00,0x06,0x00,0x00,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01,
+ 0x00,0x06,0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x98,
+ 0x01,0x1b,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0xa0,0x01,0x28,0x00,0x03,
+ 0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x02,0x01,0x00,0x04,0x00,0x00,0x00,0x01,
+ 0x00,0x00,0x03,0xa8,0x02,0x02,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x1a,0x78,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x48,
+ 0x00,0x00,0x00,0x01,0xff,0xd8,0xff,0xdb,0x00,0x84,0x00,0x17,0x10,0x11,0x14,0x11,
+ 0x0e,0x17,0x14,0x13,0x14,0x1a,0x18,0x17,0x1b,0x22,0x39,0x25,0x22,0x1f,0x1f,0x22,
+ 0x46,0x32,0x35,0x29,0x39,0x53,0x49,0x57,0x56,0x51,0x49,0x50,0x4f,0x5b,0x67,0x83,
+ 0x6f,0x5b,0x61,0x7c,0x63,0x4f,0x50,0x72,0x9c,0x74,0x7c,0x88,0x8c,0x93,0x95,0x93,
+ 0x59,0x6e,0xa1,0xad,0xa0,0x8f,0xab,0x83,0x90,0x93,0x8d,0x01,0x18,0x1a,0x1a,0x22,
+ 0x1e,0x22,0x43,0x25,0x25,0x43,0x8d,0x5e,0x50,0x5e,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0xff,0xc0,0x00,0x11,
+ 0x08,0x00,0xf0,0x01,0x40,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff,
+ 0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,
+ 0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01,
+ 0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,
+ 0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,
+ 0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,
+ 0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,
+ 0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,
+ 0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,
+ 0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,
+ 0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,
+ 0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,
+ 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,
+ 0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,
+ 0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02,
+ 0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,
+ 0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,
+ 0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,
+ 0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,
+ 0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,
+ 0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,
+ 0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,
+ 0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,
+ 0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,
+ 0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,
+ 0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,
+ 0x00,0xe4,0xe8,0xa0,0x0c,0xf4,0xa9,0xa3,0x87,0x72,0x96,0x3d,0xa8,0x02,0x20,0x09,
+ 0x35,0x32,0x42,0x4f,0xde,0x38,0xa7,0x46,0xb8,0xed,0x53,0xaa,0xd2,0x00,0x8e,0x35,
+ 0x5e,0x82,0xa6,0x51,0x48,0xab,0x52,0xaa,0xd0,0x00,0xa2,0xa3,0x9d,0x70,0x41,0x20,
+ 0x91,0x8e,0x82,0xac,0x2a,0xd2,0xc9,0x19,0x29,0xf2,0xfd,0xe1,0xc8,0xa1,0x3b,0x31,
+ 0x34,0x67,0x32,0x81,0x27,0x00,0x81,0x8e,0x86,0x96,0x9f,0x26,0xe2,0xe4,0xc9,0x9d,
+ 0xc7,0xae,0x69,0x95,0xd7,0x15,0x64,0x73,0xb7,0x76,0x32,0x53,0x85,0x3e,0xf5,0x00,
+ 0x5f,0x5a,0x7c,0xc4,0xee,0xc5,0x47,0x5c,0xf3,0x77,0x67,0x44,0x55,0x90,0xed,0xc0,
+ 0x74,0xa4,0x27,0x34,0x94,0x54,0x0c,0x28,0xa2,0x8a,0x00,0x2a,0x68,0x46,0xd1,0xb8,
+ 0xd4,0x20,0x64,0xe2,0xae,0x42,0x22,0xda,0x44,0x85,0x87,0xa6,0x06,0x6a,0x92,0x6f,
+ 0x61,0x37,0x61,0x73,0x91,0xc7,0x35,0x13,0xf5,0xdc,0xc3,0x1f,0xad,0x5a,0xf2,0xa3,
+ 0xc0,0x11,0xce,0xbc,0x76,0x3c,0x7f,0x3e,0x29,0xaf,0x6d,0x29,0x19,0x1c,0x81,0xdc,
+ 0x00,0x47,0xe9,0x51,0x66,0xb7,0x1d,0xd3,0x21,0x8c,0x82,0x38,0x39,0xc7,0xbe,0x6a,
+ 0xb4,0xed,0xba,0x53,0xe8,0x38,0xab,0x25,0x7c,0x88,0xd8,0x9e,0xbd,0x6a,0x90,0xe4,
+ 0xd3,0x40,0x4b,0x08,0xe6,0xad,0x2d,0x41,0x18,0xc0,0xa9,0x94,0xd0,0xc0,0x94,0x1a,
+ 0x5c,0xd3,0x01,0xa3,0x34,0x80,0x76,0x68,0xcd,0x37,0x34,0x99,0xa0,0x07,0xe6,0x93,
+ 0x34,0xdc,0xd2,0x66,0x80,0x1d,0x9a,0x4c,0xd2,0x66,0x93,0x34,0x00,0xec,0xd2,0x66,
+ 0x9b,0x9a,0x33,0x40,0xc5,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xec,0xd2,0x66,0x9b,
+ 0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xc5,0x50,0x3a,0x54,0xe3,
+ 0xe5,0xb7,0x3e,0xe6,0xa3,0x41,0x52,0xb8,0xc4,0x6a,0x29,0x88,0x48,0xd7,0x8a,0x99,
+ 0x45,0x35,0x05,0x4a,0xa2,0x81,0x8e,0x51,0x52,0xa8,0xa6,0xad,0x48,0xb4,0x80,0x7a,
+ 0x8a,0x76,0x29,0x05,0x2d,0x02,0x22,0x92,0x14,0x72,0x0b,0x0e,0x47,0x43,0x50,0x3c,
+ 0xa1,0x3e,0x59,0x6d,0x91,0xc0,0xee,0x38,0x3f,0xa5,0x5b,0x34,0xc2,0xa1,0xba,0x8c,
+ 0xd3,0x4d,0xa1,0x35,0x72,0x91,0x6b,0x57,0xed,0x2c,0x7f,0x5e,0x45,0x30,0xdb,0x46,
+ 0xfc,0xa4,0x88,0x7e,0xbc,0x55,0xa7,0x81,0x0f,0x6c,0x54,0x1e,0x57,0x96,0x18,0x2e,
+ 0x30,0xdd,0x73,0x4e,0xe1,0xa9,0x03,0x59,0xb8,0xe4,0x29,0x23,0xd5,0x79,0xa8,0x8c,
+ 0x24,0x77,0xfc,0xea,0x42,0x25,0x43,0x90,0xd9,0xa3,0xed,0x33,0x0e,0x1f,0xe6,0xfa,
+ 0xd0,0x17,0x64,0x25,0x18,0x76,0xa6,0xd4,0xfe,0x7a,0x1f,0xbd,0x1e,0x3e,0x94,0x6e,
+ 0x8d,0xba,0x31,0x1f,0x5a,0x02,0xe4,0x51,0x8f,0x9b,0x35,0x2e,0x68,0xda,0x07,0x42,
+ 0x0d,0x37,0x70,0x3d,0x0d,0x6b,0x0d,0x11,0x9c,0xb5,0x1d,0x9a,0x37,0x32,0xe0,0xf2,
+ 0x3d,0xe8,0x52,0x37,0x0c,0xf4,0xa5,0x76,0xf9,0x58,0x33,0x03,0x9e,0x94,0xe5,0x2b,
+ 0x3b,0x02,0x88,0xdb,0x89,0x9d,0xe3,0x08,0xce,0xcc,0x09,0xee,0x73,0x55,0xd4,0x64,
+ 0xd2,0xb9,0xc9,0xfa,0x52,0xa0,0xac,0xa4,0xf5,0x2d,0x6c,0x4c,0xb5,0x20,0xa8,0xd6,
+ 0x9d,0x50,0x50,0xfc,0xd1,0x9a,0x6d,0x2d,0x00,0x2e,0x68,0xcd,0x25,0x14,0x00,0x66,
+ 0x8c,0xd1,0x82,0x7a,0x0a,0x70,0x8d,0xcf,0x45,0x34,0x00,0xcc,0xd1,0x52,0x8b,0x79,
+ 0x0f,0x6a,0x78,0xb2,0x90,0xf6,0xfd,0x28,0x02,0xb5,0x15,0x75,0x74,0xf6,0x3d,0x73,
+ 0x52,0x2e,0x9e,0x3b,0x91,0x40,0x19,0xb4,0x60,0x9e,0x80,0xd6,0xb2,0xd9,0x46,0x3a,
+ 0xfe,0x94,0xf1,0x6f,0x1a,0xf6,0xfc,0x69,0x85,0xcc,0x81,0x1b,0x9f,0xe1,0x34,0xe1,
+ 0x03,0x9e,0xd5,0xad,0xe5,0xa0,0xfe,0x11,0x4a,0x00,0xec,0x00,0xa0,0x2e,0x65,0x0b,
+ 0x49,0x0f,0x6a,0x91,0x2c,0x58,0xf5,0xfe,0x75,0xa2,0x69,0xa7,0x27,0xa9,0x3f,0x4a,
+ 0x02,0xe6,0x30,0x38,0x35,0x2c,0x87,0xe6,0x0b,0xe8,0x2a,0x1c,0xa9,0x20,0xd2,0x97,
+ 0x05,0xc9,0xcf,0x5a,0x00,0xb0,0xb5,0x2a,0xd5,0x55,0x71,0xeb,0x52,0x2c,0x9e,0xf4,
+ 0x01,0x65,0x6a,0x45,0x35,0x59,0x64,0xa9,0x16,0x5a,0x40,0x59,0x06,0x97,0x35,0x5c,
+ 0x4a,0x29,0x7c,0xd1,0xeb,0x40,0x12,0x93,0x40,0xa8,0x7c,0xd0,0x6a,0x45,0x39,0x5a,
+ 0x00,0x47,0x3c,0x54,0x0d,0x52,0x48,0xd5,0x0b,0x1a,0x00,0x6b,0x54,0x4c,0x33,0x4f,
+ 0x26,0x9a,0x68,0x02,0x26,0x8c,0x1e,0xd4,0xcd,0x85,0x4e,0x54,0xd4,0xd4,0x6c,0x27,
+ 0xa0,0x26,0x98,0x15,0x4a,0xb0,0x39,0x14,0xd2,0x08,0xab,0xc2,0xda,0x46,0xe8,0x86,
+ 0xa4,0x5d,0x36,0x66,0xfe,0x1c,0x0a,0x00,0xcd,0x0c,0xc3,0xbd,0x1b,0xc9,0xad,0x65,
+ 0xd1,0xd8,0xfd,0xe6,0xa9,0x57,0x47,0x84,0x7d,0xe3,0x9f,0xc6,0x9d,0xc4,0x61,0xf7,
+ 0xa9,0x91,0x4e,0x38,0x15,0xba,0x9a,0x75,0xb2,0x7f,0x08,0xfa,0xe2,0xa6,0x5b,0x78,
+ 0x97,0x8d,0x9d,0x29,0x01,0x84,0xb1,0x39,0xe8,0xa6,0xa5,0x5b,0x59,0x5b,0xf8,0x6b,
+ 0x68,0x22,0x8e,0x40,0x1f,0x5c,0x53,0xbe,0x9d,0x7d,0xe8,0x03,0x21,0x6c,0x25,0x35,
+ 0x2a,0xe9,0xad,0xfc,0x47,0x15,0xa4,0x08,0x6e,0x0f,0x06,0x9b,0x9c,0x70,0x68,0x02,
+ 0xa2,0xe9,0xc8,0x3a,0x9a,0x91,0x6c,0xa2,0x1f,0x5a,0xb0,0x0f,0xaf,0xe6,0x28,0x34,
+ 0x01,0x18,0x82,0x31,0xfc,0x34,0xed,0x88,0x3f,0x84,0x52,0xe6,0x9a,0xc7,0x8e,0x28,
+ 0x10,0xa4,0xe3,0x8e,0x28,0x07,0xeb,0xf4,0xa8,0x3c,0xd0,0x4e,0x2a,0x45,0xe4,0x71,
+ 0x40,0xc7,0x73,0xcf,0xa7,0xa5,0x07,0xa6,0x7a,0x8f,0x5a,0x06,0x09,0xc6,0xfc,0x1f,
+ 0x7a,0x4c,0x95,0x3d,0x28,0x00,0x3e,0xa4,0x63,0xde,0x93,0xa0,0xe3,0xf5,0xa3,0x9e,
+ 0xdc,0x7b,0x50,0x06,0x3a,0x1e,0x68,0x00,0xce,0x3a,0x7c,0xa7,0xd0,0xd2,0x12,0x0f,
+ 0x4a,0x31,0xea,0x29,0x0f,0xb7,0x5a,0x00,0x4c,0x60,0xf3,0x4b,0xd4,0x62,0x8f,0xaf,
+ 0x22,0x93,0xe9,0x92,0x28,0x03,0x9f,0x2d,0x4d,0xcd,0x3c,0xc6,0x47,0x26,0x90,0x29,
+ 0x3d,0xa9,0x8c,0x4c,0xd3,0x83,0x53,0x4f,0x06,0x81,0x40,0x8b,0x2b,0x9c,0x53,0xb2,
+ 0x6a,0x21,0x27,0xb5,0x28,0x93,0x27,0x81,0x48,0x09,0x77,0x1f,0x5a,0x4d,0xc6,0xaf,
+ 0x43,0xa6,0x3b,0xa0,0x67,0x60,0xb9,0xe7,0x15,0x3a,0x69,0x90,0x8f,0xbc,0xc4,0xd0,
+ 0x06,0x6c,0x44,0x96,0xab,0xa0,0xe1,0x6a,0xe2,0x5a,0x40,0x9d,0x13,0xf3,0xa9,0x02,
+ 0x22,0xf0,0x11,0x47,0xe1,0x40,0x19,0x66,0x37,0x73,0xf2,0xa9,0xa5,0x5b,0x19,0x9f,
+ 0xb6,0x2b,0x57,0x24,0x0c,0x8f,0xca,0x94,0x1d,0xe3,0x23,0xa8,0xed,0x45,0x87,0x73,
+ 0x35,0x74,0xc6,0xfe,0x26,0x02,0xa4,0x5d,0x3a,0x25,0xfb,0xc4,0x9a,0xba,0x47,0xff,
+ 0x00,0xaa,0x90,0x9c,0x0e,0x7f,0x03,0x40,0x88,0x16,0xd6,0x05,0xe8,0x99,0xa9,0x04,
+ 0x48,0xbd,0x10,0x52,0x6f,0xf9,0xb0,0x3f,0x2a,0x90,0x7f,0x9f,0x6a,0x00,0x40,0x00,
+ 0xe4,0x74,0xf6,0xe2,0x8e,0x73,0xd6,0x97,0x1d,0xe8,0xc6,0x69,0x80,0xd2,0x71,0x48,
+ 0x0e,0x6a,0xb5,0xc5,0xca,0x47,0x2e,0xc0,0xe3,0x77,0x71,0x9a,0x9e,0x16,0x0c,0x01,
+ 0xe7,0x9e,0x86,0x90,0x0f,0xc7,0x6a,0x5f,0xf2,0x29,0x70,0x7d,0x31,0xf5,0xa3,0x1e,
+ 0xf4,0xc0,0x6e,0x3f,0x0a,0x0f,0xbd,0x2f,0x43,0xc8,0xfc,0x69,0x0e,0x00,0xc9,0x3f,
+ 0x8d,0x00,0x43,0x70,0xe1,0x13,0x73,0x1c,0x7b,0xd4,0x31,0x4f,0xe6,0x1f,0x5a,0xcd,
+ 0xd5,0x99,0xde,0xeb,0x68,0x3b,0x95,0x47,0x18,0xa9,0x74,0x72,0xde,0x63,0x2e,0x38,
+ 0x1c,0xd2,0x03,0x5d,0x41,0xc7,0x50,0x05,0x38,0x0f,0x6f,0xc2,0x98,0x5b,0x61,0xce,
+ 0xc0,0x45,0x28,0x64,0x3d,0x10,0x50,0x02,0x90,0x3b,0x11,0x54,0x35,0x1b,0xcf,0xb3,
+ 0xc5,0x84,0x1f,0x31,0x38,0x19,0xed,0x57,0xb7,0xec,0x3b,0x5a,0x35,0xc7,0xa8,0xaa,
+ 0x57,0xd6,0x8b,0x70,0x41,0x24,0xa1,0x1c,0x02,0x46,0x41,0xfa,0xd3,0x03,0x36,0xd2,
+ 0xe1,0xe4,0xb8,0x0a,0xe7,0x3b,0xab,0x6d,0x71,0xc0,0x3f,0x9d,0x67,0x5a,0xe9,0xc6,
+ 0x29,0x83,0xb9,0x0d,0x83,0xc0,0x4e,0x95,0xa5,0x8e,0x06,0x40,0x3c,0x74,0xa0,0x00,
+ 0xaf,0xa8,0xa0,0x64,0x0c,0x67,0x23,0xde,0x80,0x48,0x1e,0xab,0xef,0x4a,0x46,0x79,
+ 0x1c,0x8f,0xe5,0x48,0x04,0xa4,0x34,0xa7,0x81,0xde,0x93,0xaf,0x7a,0x00,0x4e,0xbd,
+ 0xe8,0xa5,0xc5,0x21,0xa0,0x02,0x93,0xa7,0x3c,0xfd,0x45,0x2f,0xf9,0xff,0x00,0x3e,
+ 0xb4,0x87,0x9a,0x00,0xc3,0x77,0x14,0xdd,0xf8,0x07,0x15,0x16,0xe3,0x49,0x92,0x69,
+ 0x8c,0x52,0x79,0xa2,0x95,0x63,0x77,0xce,0xd5,0x24,0x0e,0xb4,0xe1,0x18,0xc7,0x27,
+ 0x14,0x00,0x8b,0x92,0x70,0x2a,0x78,0x53,0x32,0xa2,0xf5,0x24,0x81,0x4d,0x1c,0x0c,
+ 0x0f,0xce,0xac,0x59,0x2e,0x6f,0x21,0x1f,0xed,0x8a,0x40,0x74,0x2c,0xbc,0x9a,0x4c,
+ 0x7e,0x74,0xa4,0xf3,0x49,0x9a,0x04,0x28,0xc6,0x3d,0xbf,0x95,0x27,0x5f,0xf0,0xa4,
+ 0xef,0xef,0xfc,0xe9,0x0f,0x34,0x00,0xbc,0x8e,0x47,0x4f,0x4a,0x69,0x1c,0xe4,0x64,
+ 0x1f,0x5a,0x5c,0xff,0x00,0x9f,0x5a,0x3a,0x8c,0x8a,0x00,0x50,0x77,0x7a,0x06,0xf4,
+ 0xaa,0x9a,0x85,0xe0,0xb3,0x8b,0x3b,0x77,0x33,0x1c,0x00,0x6a,0xc9,0xe4,0x8a,0xa7,
+ 0xa9,0x5a,0x9b,0x98,0xc6,0xde,0x59,0x4e,0x70,0x69,0x81,0x52,0xc2,0xed,0xae,0x2e,
+ 0x36,0x9e,0x0f,0x5a,0xd9,0x5f,0xbb,0xc6,0x3f,0x3a,0xcd,0xd3,0x2c,0x0d,0xbb,0xb4,
+ 0x92,0xe3,0x71,0x18,0x00,0x76,0x15,0xa1,0x81,0xd8,0xd0,0x03,0x87,0x1e,0x98,0xa8,
+ 0xee,0x49,0x11,0x31,0x8c,0xf3,0x8e,0xd4,0xe0,0x40,0xe3,0x6f,0x3e,0xf4,0xbb,0xc9,
+ 0x04,0x64,0x8f,0x61,0xc5,0x00,0x72,0x9b,0x1f,0x7f,0xab,0x13,0xeb,0xc9,0x35,0xd2,
+ 0xc2,0x36,0x40,0x81,0xfa,0x80,0x01,0x23,0xd6,0x9f,0xe4,0x44,0xcf,0xbb,0x0b,0xbf,
+ 0xd7,0x60,0xcf,0xe7,0x4e,0x23,0x03,0x03,0x8c,0x50,0x03,0x4a,0x81,0xd4,0xb6,0x3d,
+ 0x45,0x18,0x00,0xe0,0xee,0xfc,0x4d,0x03,0x23,0xfc,0x29,0x78,0xc7,0x1c,0xaf,0xa7,
+ 0xa5,0x20,0x10,0x8c,0x75,0x1f,0x91,0xa4,0xe0,0x73,0xc7,0xd7,0x14,0xec,0x52,0x63,
+ 0xd3,0xf2,0xf5,0xa6,0x05,0x79,0x6d,0x23,0x9c,0x8f,0x35,0x50,0x91,0xd3,0xb7,0x1f,
+ 0x51,0x52,0x45,0x02,0xc0,0x81,0x10,0x2a,0x01,0xc8,0x51,0xc8,0x34,0xfe,0xdc,0x74,
+ 0xf4,0x3d,0xa8,0xe8,0x3a,0x64,0x50,0x01,0x9c,0xf6,0xc1,0xa6,0x91,0xea,0x3f,0x11,
+ 0x4f,0xed,0x91,0xcd,0x20,0xa0,0x04,0x04,0xff,0x00,0xbc,0x3f,0x5a,0x00,0xc0,0xca,
+ 0xf2,0x3b,0xad,0x29,0x5f,0x4f,0xd2,0x93,0x9e,0xe0,0x9f,0x71,0xd6,0x90,0x0b,0x9d,
+ 0xc3,0x20,0xe7,0xf9,0x8a,0x6e,0x73,0xf5,0xfe,0x74,0xa5,0x4e,0x72,0x3a,0xfa,0xd1,
+ 0xd7,0x20,0xf0,0xde,0x9e,0xb4,0x00,0x9c,0x73,0xeb,0xde,0x9b,0x8c,0x72,0xbc,0x53,
+ 0x8f,0xbf,0x6a,0x4f,0xf3,0xfe,0x7d,0x28,0x00,0x52,0x09,0xc7,0x46,0xf4,0xa0,0x8c,
+ 0x7e,0x14,0x84,0x03,0xfe,0x71,0x8f,0xf0,0xa0,0x31,0x1c,0x37,0x20,0x77,0xee,0x28,
+ 0x00,0xa4,0x34,0xe2,0x3b,0x8e,0x9f,0xe7,0xf2,0xa6,0xff,0x00,0x4f,0xf3,0xf8,0x50,
+ 0x00,0x69,0x3f,0xad,0x2d,0x21,0x00,0xf0,0x7f,0x2a,0x00,0xc2,0x74,0xd8,0xd8,0xc7,
+ 0xe9,0x4d,0x15,0x79,0xa2,0x57,0x1b,0x76,0xfd,0x08,0xaa,0xf3,0x40,0xd0,0xb0,0x0c,
+ 0x31,0x9a,0x0b,0x68,0x8c,0x12,0x07,0x14,0xaa,0x41,0xeb,0x40,0x14,0xa0,0x0a,0x09,
+ 0x0c,0xf3,0xc5,0x5b,0xd3,0x06,0xeb,0xf8,0xbd,0x89,0x3f,0xa5,0x55,0x15,0x77,0x48,
+ 0x5c,0xde,0x83,0xe8,0xa4,0xd0,0x06,0xcb,0x52,0x70,0x7f,0x1a,0x53,0x49,0xef,0xd8,
+ 0xd0,0x20,0x34,0x75,0xfa,0xd1,0x49,0xd6,0x80,0x0c,0x51,0xdf,0xfc,0xf3,0x40,0x39,
+ 0xe0,0xf5,0xa3,0x93,0xf2,0x9e,0xbd,0x8f,0xad,0x00,0x06,0x80,0x48,0xe9,0x47,0xb1,
+ 0xeb,0x46,0xd6,0x3d,0x06,0x7e,0x94,0x00,0xbd,0xbd,0xe9,0xa7,0xae,0x45,0x4a,0xb1,
+ 0x39,0xf4,0x1f,0x8d,0x3c,0x5b,0xb1,0xff,0x00,0xf5,0x1a,0x60,0x57,0xeb,0xdb,0xea,
+ 0x29,0x4a,0xd5,0x91,0x6a,0xde,0x8d,0xf9,0x52,0xfd,0x9d,0x47,0x52,0x3f,0x16,0x14,
+ 0x01,0x50,0xaf,0xff,0x00,0x58,0xd2,0x83,0xeb,0xd6,0xad,0x08,0xa3,0x1f,0xc4,0xbf,
+ 0x9e,0x69,0xac,0xd6,0xa9,0xf7,0xa5,0x41,0xfa,0x7f,0x3a,0x00,0xaf,0x8a,0x36,0x1c,
+ 0xe4,0x53,0xda,0xfa,0xc5,0x3a,0xcc,0x0f,0xd3,0x15,0x13,0xeb,0x36,0x29,0xd0,0xb3,
+ 0x7e,0x26,0x80,0x1f,0xe5,0xb7,0xf7,0x4f,0xd2,0x97,0xc9,0x3e,0xd5,0x51,0xfc,0x41,
+ 0x6c,0x3e,0xe4,0x39,0xfa,0x8a,0x85,0xfc,0x48,0xdf,0xf2,0xce,0x10,0xb4,0x01,0xa4,
+ 0x20,0x27,0xff,0x00,0xac,0x29,0xe2,0xd9,0x8f,0x66,0xfc,0xab,0x09,0xfc,0x43,0x74,
+ 0xdd,0x36,0xaf,0xd0,0x54,0x0f,0xac,0x5e,0xbf,0x59,0x4f,0xe5,0x40,0x1d,0x2f,0xd9,
+ 0x71,0xd4,0x63,0xea,0x68,0x30,0xa2,0xf2,0xce,0x83,0xea,0x6b,0x93,0x6b,0xdb,0xa7,
+ 0xeb,0x2b,0xff,0x00,0xdf,0x46,0xa2,0x69,0x24,0x27,0x25,0xbf,0x5a,0x2c,0x07,0x5c,
+ 0x65,0xb4,0x4f,0xbd,0x73,0x18,0xf6,0x15,0x13,0x6a,0x1a,0x7a,0x75,0x99,0x8f,0xd1,
+ 0x6b,0x94,0x3b,0x8f,0x7a,0x4e,0x7d,0x69,0xd8,0x0e,0x9d,0xb5,0x9b,0x15,0x38,0x0b,
+ 0x2b,0x7d,0x0f,0xff,0x00,0x5e,0xa5,0x9b,0x6c,0xaa,0x92,0x21,0x38,0x61,0x95,0xfa,
+ 0x1a,0xe4,0xeb,0xa6,0xb4,0x60,0xfa,0x6c,0x04,0xe3,0x84,0x03,0x9f,0x6e,0x29,0x00,
+ 0xe0,0xdd,0x03,0x75,0xec,0x68,0x23,0x14,0x1e,0x9e,0xab,0x49,0x9c,0x7b,0x8f,0xf3,
+ 0xd6,0x90,0x09,0xfe,0x7f,0xcf,0xf8,0x52,0x1f,0xf3,0xfe,0x7f,0xa5,0x38,0x8f,0x4f,
+ 0xf3,0xfe,0x34,0x9d,0x7f,0x1a,0x00,0x68,0xca,0xf2,0xbf,0x95,0x28,0x21,0xba,0x70,
+ 0x47,0x6a,0x29,0xa4,0x67,0xfa,0x63,0xfc,0xfe,0x94,0x00,0xa7,0x8f,0xf3,0x8f,0xff,
+ 0x00,0x55,0x21,0x19,0x1f,0xe7,0xfc,0x8a,0x04,0x9d,0x03,0xfd,0x03,0x0a,0x71,0x18,
+ 0xc7,0xe8,0x45,0x00,0x50,0x69,0x41,0x18,0x55,0x0b,0x50,0xcc,0x73,0xb7,0x3c,0xd4,
+ 0xa1,0x41,0x15,0x0c,0xc9,0xf3,0x50,0x8d,0xa5,0xb0,0xcc,0x52,0x62,0x8c,0x95,0xa7,
+ 0x2b,0x03,0x4c,0xc8,0x69,0xab,0xfa,0x30,0xff,0x00,0x49,0x73,0xe8,0x87,0xf9,0x8a,
+ 0xa4,0xc2,0xb4,0x34,0x65,0xc3,0x4c,0x7f,0xd9,0x02,0x80,0x34,0x8d,0x20,0xeb,0xc7,
+ 0x5f,0xe7,0x4a,0x69,0x0f,0x23,0xe9,0x48,0x41,0xd3,0xe9,0xdc,0x7a,0x50,0x48,0xfc,
+ 0xfb,0xd0,0x0e,0x7a,0x7d,0xee,0xfe,0xf4,0x9d,0xb8,0xe9,0xfc,0xa8,0x00,0xc0,0xe9,
+ 0xfe,0x45,0x1d,0x78,0x34,0x99,0xc7,0x04,0xfd,0x0f,0xa5,0x2f,0xd7,0x83,0x40,0x0b,
+ 0x9e,0xcd,0xf8,0x1f,0x5a,0x64,0xae,0xd1,0xae,0xe1,0xd4,0x7b,0x53,0xb1,0xeb,0xd2,
+ 0xa2,0xb9,0xff,0x00,0x55,0xfd,0x68,0x02,0x84,0x9a,0xed,0xdc,0x6d,0x80,0xc3,0xf2,
+ 0xa8,0x9b,0x5e,0xbc,0x6f,0xe2,0xac,0xf9,0x8e,0xe6,0x53,0xed,0x49,0x4c,0x0b,0xaf,
+ 0xac,0x5e,0x3f,0xf1,0x81,0xf4,0x51,0x51,0x36,0xa1,0x76,0xdf,0xf2,0xd9,0xc7,0xd1,
+ 0xb1,0x55,0xe8,0xa6,0x03,0x9a,0x69,0x9f,0xef,0x48,0xc7,0xea,0x69,0xb9,0x63,0xd5,
+ 0x8d,0x2d,0x2e,0x29,0xd8,0x06,0x6d,0xf7,0xa3,0x6d,0x3f,0x14,0x62,0x9d,0x80,0x66,
+ 0xd1,0x4b,0x8a,0x76,0xda,0x36,0x9f,0x4a,0x2c,0x03,0x71,0x45,0x4a,0xb6,0xf3,0x3f,
+ 0xdc,0x89,0xdb,0xe8,0xa4,0xd3,0x24,0x8d,0xa3,0x72,0x8e,0xa5,0x58,0x75,0x04,0x60,
+ 0x8a,0x00,0x65,0x14,0xb4,0x94,0x08,0x29,0x29,0x69,0x28,0x01,0xa6,0xba,0x3d,0x2d,
+ 0xb3,0xa6,0x47,0xea,0x09,0x1f,0xad,0x73,0xad,0x5b,0xfa,0x2b,0x6e,0xd3,0xd8,0x7a,
+ 0x39,0xfe,0x42,0xa5,0x8c,0xb3,0xdf,0x8c,0x83,0xdc,0x51,0x9f,0x4e,0x94,0x11,0x9f,
+ 0xf1,0x14,0x67,0xd4,0xf3,0xeb,0x52,0x02,0x63,0x00,0xfa,0x7a,0x50,0x46,0x79,0x1f,
+ 0xe7,0xfc,0xfa,0xd2,0xe0,0xf5,0xa4,0xe9,0xfe,0x71,0xff,0x00,0xea,0xa0,0x06,0x9f,
+ 0xf3,0xfe,0x7b,0xd2,0x1f,0xf3,0xfe,0x7b,0xd3,0xb8,0x3c,0x74,0xfd,0x3f,0xfd,0x54,
+ 0x84,0x11,0xfe,0x7f,0xce,0x28,0x01,0xa4,0x7a,0xf7,0xfc,0x7f,0xfd,0x74,0x83,0x29,
+ 0xd3,0x95,0x3d,0xa9,0x79,0x5f,0x71,0xe8,0x7b,0x51,0xdb,0x8e,0x47,0x70,0x68,0x02,
+ 0x90,0x5e,0x7a,0xd4,0x6e,0x39,0xeb,0x52,0x6e,0xc0,0xf7,0xa8,0xf9,0x26,0x9a,0x35,
+ 0x90,0xdd,0xa0,0xd3,0x1e,0x32,0x3a,0x54,0xb8,0xa5,0xc5,0x33,0x32,0xb8,0x6c,0x75,
+ 0xad,0x6d,0x23,0xee,0x4c,0x7e,0x83,0xf9,0xd6,0x73,0x46,0x0d,0x69,0xe9,0x08,0x56,
+ 0xda,0x4f,0x77,0xfe,0x94,0x98,0x8b,0x86,0x90,0xe4,0x1e,0x94,0xa7,0xff,0x00,0xd6,
+ 0x29,0x3b,0x71,0xfa,0xd2,0x01,0x3a,0xf2,0xbd,0x68,0x1c,0xf3,0xdf,0xb8,0xa3,0x83,
+ 0xce,0x71,0x48,0x7a,0xe4,0x70,0x47,0x51,0x40,0x0b,0xc1,0x19,0xed,0x40,0xf4,0x34,
+ 0x03,0x9f,0x99,0x7a,0xf7,0x14,0xa3,0x91,0x91,0xf9,0x50,0x02,0x63,0x15,0x0d,0xd7,
+ 0xfa,0xa3,0x56,0x2a,0xbd,0xdf,0xfa,0xa3,0x40,0x1c,0xdc,0x83,0x05,0x7e,0x9f,0xd6,
+ 0x96,0x89,0xbe,0xfa,0x7f,0xba,0x28,0xaa,0x00,0xa2,0x8a,0x5a,0x60,0x15,0xd1,0xe8,
+ 0x7a,0x15,0xb6,0xa1,0x65,0xe7,0xcc,0xf2,0x86,0xdc,0x57,0x0a,0x40,0x1f,0xca,0xb9,
+ 0xd1,0x5d,0xaf,0x85,0x3f,0xe4,0x12,0x7f,0xeb,0xa9,0xfe,0x42,0x98,0x02,0xf8,0x7f,
+ 0x4a,0x4c,0xe5,0x59,0xf1,0xd7,0xe7,0xff,0x00,0x0a,0x7f,0xf6,0x6e,0x95,0x0e,0x3f,
+ 0xd1,0x13,0xfe,0x04,0xc7,0xfa,0x9a,0x86,0xf5,0xe0,0x5b,0xf9,0x0c,0xe8,0xc5,0x7f,
+ 0xba,0x3b,0xfe,0xb4,0xd7,0xbc,0xb3,0xdc,0x36,0xda,0x97,0x03,0xa1,0x69,0x38,0xed,
+ 0xfe,0x15,0x56,0x15,0xd1,0x75,0x60,0xb1,0x8c,0x02,0xb6,0x76,0xe0,0x1e,0x87,0x68,
+ 0xa1,0xef,0x60,0x83,0x0a,0xa9,0x1a,0x93,0xd3,0x67,0xff,0x00,0x5a,0xa9,0xfd,0xb2,
+ 0xdf,0xaa,0xda,0x40,0x31,0xcf,0x20,0x9f,0xe4,0xb5,0x1c,0xd7,0xb1,0x60,0x79,0x16,
+ 0xab,0xe6,0x64,0xb1,0x65,0x53,0xc1,0xc1,0xc7,0xa5,0x3e,0x51,0x29,0xa3,0x62,0xca,
+ 0x65,0xbb,0x81,0x67,0x08,0x54,0x37,0x4c,0xf7,0xae,0x33,0xc4,0x89,0xb7,0x5b,0xb8,
+ 0xf7,0xc1,0xfd,0x05,0x76,0x1a,0x3a,0xba,0xe9,0xd1,0xab,0xf5,0x1e,0xd5,0xca,0xf8,
+ 0xa9,0x71,0xac,0x31,0xf5,0x45,0x3f,0xa5,0x67,0xd4,0xbb,0xdd,0x18,0x94,0x94,0xa6,
+ 0x8a,0x64,0x89,0x45,0x14,0x50,0x03,0x5b,0xa5,0x6d,0xe8,0x27,0x36,0xf3,0x2f,0xa1,
+ 0x07,0xf4,0xff,0x00,0xeb,0x56,0x2b,0x74,0xad,0x6f,0x0f,0xb7,0xcd,0x3a,0xfa,0x80,
+ 0x7f,0x9f,0xf8,0xd4,0xb1,0x9a,0x4d,0x9c,0xf7,0xcd,0x27,0xeb,0x4a,0x71,0xd0,0x51,
+ 0xc5,0x48,0x00,0x19,0xe4,0x7e,0x54,0xdf,0xf3,0xfe,0x7f,0xc2,0x82,0x49,0xe9,0x41,
+ 0xe7,0xaf,0x5e,0xf4,0x00,0x87,0x9f,0xe9,0x8f,0xf3,0xfa,0x52,0x06,0x20,0xff,0x00,
+ 0x9f,0xf3,0xf8,0x52,0x9e,0x7a,0xff,0x00,0x9f,0xf1,0xa4,0x3e,0xff,0x00,0xe3,0xff,
+ 0x00,0xeb,0xa0,0x03,0x83,0xca,0xfe,0x5f,0xe1,0x4c,0x23,0x1c,0x83,0x83,0xfe,0x7f,
+ 0x2a,0x71,0xe3,0x9f,0xf3,0xff,0x00,0xd7,0xa3,0x83,0xfe,0x7f,0xce,0x68,0x02,0x93,
+ 0x2e,0xe2,0x70,0x2a,0x3a,0x99,0xf0,0xa3,0x03,0xbd,0x31,0x57,0x34,0xd1,0xac,0xf7,
+ 0x1a,0x05,0x18,0xe6,0xa4,0x0b,0x49,0x8a,0x66,0x63,0x42,0xd6,0xa5,0x80,0xc5,0xa7,
+ 0x5c,0x12,0xc6,0xb3,0xb1,0x5a,0x76,0xa3,0x16,0x69,0xc7,0x52,0x7f,0x9d,0x26,0x22,
+ 0x4c,0xf7,0xfc,0x08,0xa3,0x19,0xfa,0xd1,0x8f,0xc7,0xd3,0xdc,0x52,0x73,0xd4,0x75,
+ 0x1f,0xad,0x20,0x02,0x4e,0x79,0x1c,0x8e,0xbe,0xe2,0x90,0x73,0xdf,0x91,0xd2,0x94,
+ 0xf3,0xfd,0x0d,0x21,0x19,0xf6,0x34,0x00,0x9c,0x83,0x91,0xc1,0x1d,0x45,0x3b,0xaf,
+ 0x23,0xaf,0x71,0x48,0x3e,0x6f,0xad,0x1d,0x39,0x14,0x00,0xee,0xa2,0xab,0xdd,0xff,
+ 0x00,0xaa,0x35,0x3d,0x57,0xbd,0x3f,0xba,0x3f,0x4a,0x00,0xe7,0x65,0xfb,0xeb,0xfe,
+ 0xea,0xff,0x00,0x2a,0x5a,0x49,0x7f,0xd6,0x8f,0xa0,0xfe,0x54,0xb4,0xc6,0x14,0x51,
+ 0x45,0x31,0x0a,0x2b,0xb4,0xf0,0x9f,0xfc,0x82,0x9f,0xfe,0xba,0x9f,0xe4,0x2b,0x8c,
+ 0x15,0xd9,0x78,0x4b,0xfe,0x41,0x72,0x7f,0xd7,0x53,0xfc,0x85,0x37,0xb0,0x0f,0xd4,
+ 0x24,0x56,0xb8,0x97,0x04,0x12,0xa3,0xf5,0xaa,0x3b,0x9d,0x42,0xb9,0x72,0x09,0xce,
+ 0x07,0xe3,0x8f,0xe9,0x56,0xae,0xd1,0xe3,0xb9,0x96,0x4c,0x15,0x3b,0x89,0xf4,0xc8,
+ 0xaa,0xe5,0x5a,0x79,0xf0,0xb9,0x66,0x6e,0xe7,0x8c,0xd5,0xbd,0x11,0xc1,0x55,0xea,
+ 0xfb,0x8b,0x3c,0xdb,0x94,0x2a,0xb1,0xe9,0xcf,0x02,0xb3,0x5a,0x66,0x59,0xb8,0x6c,
+ 0xe3,0xd6,0xb4,0x9a,0xd2,0x40,0x8c,0xd9,0x52,0x17,0xae,0x18,0x1a,0xac,0x65,0xb6,
+ 0x8c,0x8c,0x88,0xcb,0xf5,0x39,0x5c,0xd2,0x4f,0x52,0x29,0xb6,0xa5,0xef,0x23,0xa0,
+ 0xd2,0x5c,0xbe,0x9f,0x1b,0x1e,0xf9,0xae,0x6b,0xc5,0xeb,0x8d,0x4d,0x0f,0xac,0x43,
+ 0xf9,0x9a,0xe9,0x74,0x96,0x0d,0x62,0xa5,0x71,0x8c,0x9c,0x62,0xb9,0xff,0x00,0x18,
+ 0xaf,0xfa,0x5c,0x0d,0xeb,0x19,0x1f,0xad,0x4f,0x53,0xbe,0x9f,0xc0,0x8e,0x6c,0xd2,
+ 0x52,0x9a,0x4a,0x65,0x09,0x45,0x2d,0x25,0x00,0x21,0xe9,0x5a,0x3a,0x01,0xff,0x00,
+ 0x4b,0x71,0xea,0x87,0xf9,0x8a,0xce,0x3d,0x2a,0xee,0x88,0xd8,0xd4,0x14,0x7a,0xa9,
+ 0x1f,0xa5,0x26,0x33,0x71,0xf3,0x9f,0xe4,0x4d,0x37,0x9f,0x41,0xfe,0x34,0xf7,0xc0,
+ 0x63,0xd2,0x99,0x8c,0xf4,0xfc,0xaa,0x00,0x5c,0x86,0xf6,0x3e,0x94,0xdf,0xf3,0xe9,
+ 0xff,0x00,0xea,0xa0,0x8c,0xe3,0xfa,0x7f,0x9f,0xd2,0x8f,0xf3,0xfe,0x7f,0xc2,0x80,
+ 0x03,0xfe,0x7b,0x7f,0xfa,0xa9,0xbf,0xe7,0xd3,0xff,0x00,0xd5,0x4b,0xfe,0x7f,0xcf,
+ 0xad,0x14,0x00,0xd3,0xfe,0x7f,0xcf,0x6a,0x43,0x4e,0xff,0x00,0x23,0xfc,0xff,0x00,
+ 0x4a,0x4f,0xa7,0xe1,0x8f,0xf3,0xfa,0x50,0x05,0x32,0x39,0xa5,0x15,0x69,0x2d,0xd5,
+ 0xc1,0x27,0x23,0x9e,0x31,0x41,0xb4,0xf4,0x6f,0xcc,0x53,0x34,0x96,0xe5,0x62,0x0d,
+ 0x26,0x39,0xab,0x0d,0x6c,0xe3,0xa6,0x0f,0xe3,0x51,0x18,0x9c,0x75,0x53,0x41,0x0c,
+ 0x65,0x6a,0x5b,0xf1,0x6b,0x10,0xf6,0xfe,0xb5,0x96,0x6b,0x56,0x2e,0x2d,0xa2,0xff,
+ 0x00,0x74,0x50,0xc4,0x03,0xe5,0x38,0x61,0xf2,0x9e,0x94,0xac,0x0a,0x9f,0xf3,0xcd,
+ 0x19,0x19,0xd9,0x27,0x43,0xd0,0xd0,0xa4,0xa9,0xf2,0xdc,0xff,0x00,0xba,0x69,0x00,
+ 0x9f,0xc8,0xf5,0xa4,0xfe,0x7f,0xce,0x94,0x82,0xa4,0x9c,0x7d,0x45,0x04,0x64,0x64,
+ 0x1a,0x00,0x43,0xc8,0xc8,0xa5,0x07,0x3f,0x5a,0x40,0x7b,0xf7,0xee,0x29,0x71,0xdc,
+ 0x50,0x02,0xd5,0x4b,0xf3,0xfb,0x86,0xfa,0x7a,0xd5,0xac,0x7f,0x9f,0x5a,0xa9,0xa8,
+ 0xf1,0x6e,0xff,0x00,0x4a,0x00,0xc0,0x9b,0xfd,0x77,0xe0,0x3f,0x95,0x2d,0x24,0xdf,
+ 0xeb,0xcd,0x2d,0x31,0x85,0x14,0x51,0x4c,0x43,0x85,0x76,0x3e,0x12,0xff,0x00,0x90,
+ 0x6c,0xbf,0xf5,0xd4,0xff,0x00,0x21,0x5c,0x70,0xae,0xc3,0xc2,0x3f,0xf1,0xe1,0x37,
+ 0xfd,0x74,0xfe,0x82,0x9f,0x40,0x24,0xd5,0x03,0x35,0xd1,0x22,0x40,0x9c,0x85,0xea,
+ 0x33,0xfa,0xd3,0x0d,0xa2,0x88,0xb9,0x90,0x99,0x43,0x05,0xcf,0xb1,0xef,0x8a,0xd2,
+ 0xbc,0x86,0x2b,0x86,0x55,0x62,0x81,0x93,0x9c,0xb5,0x66,0xc8,0x5d,0xa6,0x0e,0xdb,
+ 0x43,0x28,0x1c,0x8e,0x71,0x55,0xba,0xb1,0xcd,0x55,0x42,0x1e,0xf3,0x43,0x1e,0xd0,
+ 0x41,0x6b,0x21,0x3c,0x31,0x7e,0x3e,0x94,0xdb,0x38,0x99,0xa2,0x53,0xb4,0x91,0x93,
+ 0x9e,0x3d,0xea,0x5b,0x89,0xde,0x48,0xf6,0x99,0x03,0x03,0xd7,0xe5,0x22,0xab,0x7c,
+ 0xc7,0x6a,0xee,0xe3,0xea,0x70,0x2a,0x69,0xc5,0xc0,0xc6,0x75,0xe3,0xcf,0x74,0x6d,
+ 0x69,0x99,0x10,0xc8,0xb8,0xc6,0x24,0x35,0x87,0xe3,0x24,0xf9,0xad,0x5f,0xd9,0x87,
+ 0xf2,0xad,0xad,0x2d,0x3c,0x8b,0x62,0x19,0x89,0xdc,0xe4,0xfd,0xdc,0x62,0xb2,0x7c,
+ 0x61,0xb5,0xad,0x6d,0xd8,0x10,0x70,0xc4,0x7e,0x94,0x75,0x3b,0x60,0x9f,0x2e,0xa7,
+ 0x24,0x69,0x29,0x4d,0x25,0x31,0x85,0x25,0x14,0x50,0x01,0x56,0x34,0x96,0xdb,0xa9,
+ 0x45,0xf5,0x23,0xf4,0xaa,0xf5,0x25,0x8b,0x6d,0xbf,0x84,0xff,0x00,0xd3,0x41,0xfc,
+ 0xe9,0x31,0x9d,0x34,0x84,0x67,0x9c,0xe2,0xa3,0x20,0x83,0xea,0x3d,0x6a,0x59,0x07,
+ 0x35,0x1f,0xb7,0x4a,0x80,0x17,0xaf,0x5e,0xfd,0xfb,0x1a,0x69,0xef,0x9f,0xc7,0x3f,
+ 0xe7,0xf5,0xa3,0x07,0xa0,0xfc,0x47,0xad,0x1e,0x9c,0xe7,0xd3,0xfc,0xff,0x00,0x4a,
+ 0x00,0x69,0xef,0x9f,0xd7,0xfc,0xfe,0xb4,0x87,0xdf,0xf5,0xff,0x00,0x3f,0xad,0x3b,
+ 0xe9,0xfa,0x7f,0x4f,0xf0,0xa4,0xf4,0xfe,0x9f,0xe7,0xf4,0xa0,0x04,0xf5,0xcf,0xe3,
+ 0x9f,0xeb,0xfe,0x34,0x87,0xbf,0xeb,0x9f,0xeb,0xfe,0x34,0xbf,0xe4,0x63,0xfa,0x7f,
+ 0x85,0x27,0xa7,0xe9,0x8f,0xe9,0xfe,0x14,0x01,0x24,0x6c,0x3a,0x73,0x9a,0x92,0xa0,
+ 0x40,0x7d,0x31,0x53,0x03,0x48,0xd2,0x5b,0x8b,0x49,0x4b,0x9a,0x43,0x41,0x22,0x10,
+ 0x0f,0x51,0x9f,0xa8,0xab,0x04,0x7c,0xaa,0xa3,0x81,0xb4,0x7e,0x15,0x5f,0x3c,0xd5,
+ 0x97,0xeb,0x8c,0xe3,0x8a,0x62,0x64,0x58,0x07,0xf7,0x72,0x77,0xfb,0xa6,0x8c,0x12,
+ 0x36,0xbf,0x55,0xe8,0x69,0x58,0x03,0xf2,0xb7,0xd4,0x1f,0x4a,0x39,0x3c,0x37,0xde,
+ 0x1f,0xa8,0xa0,0x40,0x1b,0x3c,0x77,0xe9,0xf5,0xa6,0xfd,0xd3,0xea,0x0d,0x04,0x66,
+ 0x94,0x12,0xc3,0xa6,0x7d,0x68,0x01,0x3d,0x30,0x7e,0x86,0x94,0x50,0x72,0x28,0xa0,
+ 0x05,0xf6,0xaa,0x3a,0x9f,0xfc,0x7b,0xbf,0xfb,0xa6,0xae,0xd5,0x0d,0x50,0xff,0x00,
+ 0xa3,0x3f,0xfb,0xbe,0xb9,0xa0,0x0c,0x49,0xbf,0xe3,0xe5,0xbe,0xb4,0xb4,0x93,0xff,
+ 0x00,0xc7,0xd3,0xfd,0x69,0x69,0x8c,0x28,0xa2,0x8a,0x60,0x38,0x57,0x5f,0xe1,0x0f,
+ 0xf8,0xf2,0x9b,0xfe,0xba,0x7f,0x4a,0xe3,0xc5,0x75,0xde,0x10,0x3f,0xe8,0x93,0xff,
+ 0x00,0xbe,0x3f,0x95,0x02,0x37,0x7c,0x84,0xf3,0x19,0xc8,0xc9,0x6c,0x75,0xf6,0xa8,
+ 0xd6,0xca,0x35,0x89,0x50,0x76,0x18,0xcf,0xad,0x58,0xa2,0x8b,0xb1,0x4a,0x2a,0x4a,
+ 0xcd,0x10,0x2d,0xaa,0x0c,0xe7,0x04,0x9e,0xf8,0xa8,0x64,0xd3,0x91,0xd4,0xfc,0xc7,
+ 0x3d,0xb8,0x15,0x76,0x8a,0x2e,0xc8,0x74,0x60,0xd5,0x9a,0x32,0x61,0xd2,0xe7,0x03,
+ 0x12,0x4f,0xf2,0xe7,0x21,0x47,0x18,0xac,0xff,0x00,0x14,0x5a,0x08,0x74,0xe8,0x9c,
+ 0x12,0x48,0x93,0x1d,0x7d,0x8d,0x74,0xd5,0x8d,0xe2,0xa5,0xdd,0xa3,0x13,0xfd,0xd7,
+ 0x53,0x4e,0xed,0x9a,0xad,0x15,0x91,0xc3,0x9a,0x4a,0x53,0x4d,0xa6,0x48,0x51,0x45,
+ 0x25,0x00,0x2d,0x10,0xb6,0xdb,0x84,0x3e,0x8c,0x0d,0x25,0x34,0xf0,0xd4,0x98,0xd1,
+ 0xd7,0x4a,0x39,0xed,0xf8,0xd4,0x7d,0xb1,0x9a,0x91,0x8e,0xe4,0x04,0x1e,0xa3,0xd2,
+ 0xa3,0xef,0xef,0xe9,0x50,0x02,0x63,0x1d,0x69,0x0f,0x7f,0xd7,0x3f,0xe7,0xf5,0xa7,
+ 0x73,0xdb,0xa8,0xed,0x48,0x7d,0xa8,0x01,0x0d,0x21,0xf7,0xfd,0x68,0xff,0x00,0x3e,
+ 0xbf,0xfe,0xb1,0x48,0x7a,0xff,0x00,0x9f,0xf3,0x8a,0x00,0x3d,0x7f,0xaf,0xf9,0xfd,
+ 0x69,0x0f,0x7f,0xd7,0x3f,0xd7,0xfc,0x69,0x69,0x3f,0xcf,0x1f,0xd2,0x80,0x24,0x06,
+ 0x9c,0x3d,0xea,0x31,0x52,0x03,0xc5,0x22,0x85,0xa4,0x26,0x8a,0x42,0x71,0x40,0x06,
+ 0x6a,0xcc,0x98,0xdd,0xc9,0xe2,0xa9,0x83,0xf3,0x0a,0xbb,0x27,0xde,0x3d,0xe9,0x88,
+ 0x60,0xe7,0xe5,0x07,0x9e,0xa0,0xd2,0x11,0xcf,0x3d,0x68,0x24,0x95,0xc8,0xe0,0x8a,
+ 0x5f,0xbe,0xb9,0x07,0x9a,0x04,0x27,0x51,0x9c,0x7d,0x69,0xbc,0x8e,0x47,0x5a,0x50,
+ 0x70,0x72,0x0f,0x1d,0xc5,0x07,0x8f,0xa5,0x00,0x2f,0x50,0x0f,0xaf,0xe9,0x45,0x34,
+ 0x1d,0xbd,0x79,0x53,0xde,0x9c,0x7e,0xf6,0x3f,0xc9,0xa0,0x04,0xac,0xfd,0x54,0xe2,
+ 0xdd,0xfe,0x95,0xa1,0xfe,0x45,0x66,0xea,0xc7,0xfd,0x1d,0xb1,0x40,0x18,0xd2,0x9c,
+ 0xdc,0xbf,0xfb,0xc6,0x9d,0x4c,0x7f,0xf5,0xc7,0xeb,0x4f,0xa6,0x30,0xa2,0x92,0x8a,
+ 0x00,0x70,0xad,0x4d,0x27,0x5a,0x93,0x4c,0x8e,0x44,0x48,0x95,0xf7,0x90,0x7e,0x63,
+ 0xd2,0xb2,0xa8,0xa6,0x07,0x48,0x7c,0x5b,0x71,0xda,0xde,0x2f,0xd7,0xfc,0x69,0xa7,
+ 0xc5,0x97,0x5d,0xa1,0x87,0xf2,0x3f,0xe3,0x5c,0xf6,0x68,0xcd,0x16,0x41,0x73,0xa0,
+ 0x3e,0x2c,0xbc,0xff,0x00,0x9e,0x50,0x7e,0x47,0xfc,0x69,0xa7,0xc5,0x77,0xbf,0xdc,
+ 0x87,0xfe,0xf9,0x3f,0xe3,0x58,0x39,0xa4,0xa7,0x64,0x17,0x37,0x4f,0x8a,0xaf,0xff,
+ 0x00,0xbb,0x0f,0xfd,0xf3,0xff,0x00,0xd7,0xaa,0xd7,0xda,0xf5,0xdd,0xf5,0xb3,0x41,
+ 0x2f,0x97,0xb1,0x88,0x27,0x0b,0x8a,0xcb,0xa4,0xa2,0xc2,0xb8,0x1a,0x4a,0x29,0x29,
+ 0x88,0x29,0x29,0x69,0x28,0x00,0xa6,0xb7,0x5a,0x75,0x35,0xba,0xd2,0x63,0x47,0x57,
+ 0x11,0xdf,0x6b,0x11,0xe7,0x94,0x1d,0x3e,0x94,0xdc,0xe7,0xe5,0x6e,0xbd,0x88,0xa6,
+ 0x59,0x9d,0xda,0x7c,0x1d,0xfe,0x40,0x3a,0xd4,0x9c,0x36,0x47,0xf3,0xa9,0x00,0xcf,
+ 0x66,0xea,0x3a,0x11,0x48,0x4e,0x68,0x07,0xb1,0xe4,0x7a,0xff,0x00,0x8d,0x0d,0xc7,
+ 0xd2,0x90,0x09,0xfe,0x7d,0x3f,0xfd,0x46,0x93,0xfc,0xfa,0x7f,0xfa,0x8d,0x2d,0x21,
+ 0xa0,0x04,0xff,0x00,0x3f,0xe7,0xd0,0xd0,0x7f,0xcf,0xf9,0xec,0x68,0xc7,0xf9,0xff,
+ 0x00,0x3d,0xa8,0xff,0x00,0x3f,0xe7,0xda,0x80,0x05,0x34,0xfc,0x8a,0x80,0xb8,0x55,
+ 0xe4,0x8e,0x29,0x8d,0x70,0x00,0x3e,0xd4,0x8a,0x2c,0x96,0xc5,0x31,0xe4,0xaa,0x92,
+ 0x5c,0x1f,0x9b,0xdb,0x15,0x0b,0xcc,0x72,0xdc,0xf4,0xe9,0x40,0x17,0x92,0x41,0xe6,
+ 0x2f,0xd4,0x56,0xa3,0x8e,0x6b,0x9f,0xb7,0x62,0xf7,0x48,0xa0,0xf5,0x75,0xfe,0x75,
+ 0xd1,0x95,0x34,0x21,0x32,0xbe,0x30,0xd9,0x14,0x83,0x28,0x4e,0x3a,0x54,0xe5,0x29,
+ 0xa5,0x46,0x3d,0xe9,0x81,0x11,0x19,0x39,0x1d,0x7b,0xfb,0xd0,0x31,0xfe,0x34,0xf2,
+ 0xa3,0x1e,0xf4,0xd2,0xb9,0xeb,0xd7,0xd6,0x81,0x0d,0xc6,0x09,0x1e,0xbd,0xbd,0x68,
+ 0xed,0x8f,0xca,0x9d,0x8c,0x70,0x7f,0x0a,0x4d,0xbe,0xc6,0x80,0x13,0x39,0x1e,0xfd,
+ 0xeb,0x33,0x56,0xcf,0x94,0x47,0x3d,0x45,0x6a,0x6d,0x3e,0xf9,0xf5,0xc5,0x46,0xf1,
+ 0x24,0xa3,0x0c,0x8b,0xee,0x0d,0x00,0x72,0xae,0x7f,0x7a,0xc7,0xdf,0x34,0xbb,0xfd,
+ 0xab,0xa4,0x36,0x36,0xe7,0xfe,0x59,0x27,0xe7,0x4d,0xfb,0x05,0xb7,0xfc,0xf1,0x5f,
+ 0xfb,0xe8,0x53,0x19,0xce,0xef,0xf6,0xa3,0x7f,0xb5,0x74,0x5f,0xd9,0xf6,0xdf,0xf3,
+ 0xc1,0x7f,0x31,0x47,0xf6,0x75,0xbf,0xfc,0xfb,0x8f,0xc0,0x8f,0xf0,0xa0,0x0e,0x77,
+ 0x7f,0xb5,0x1b,0xfd,0xab,0xa1,0x3a,0x7d,0xae,0x71,0xe4,0x7f,0x2a,0x3f,0xb3,0x6d,
+ 0xbf,0xe7,0x88,0x14,0x5c,0x0e,0x7f,0x7f,0xb5,0x1b,0xfd,0xab,0xa0,0xfe,0xcc,0xb6,
+ 0xff,0x00,0x9e,0x60,0x52,0x7f,0x65,0xdb,0x7f,0x70,0x51,0x70,0x30,0x37,0xfb,0x52,
+ 0x6f,0xf6,0xad,0xff,0x00,0xec,0xbb,0x6f,0xee,0x8a,0x3f,0xb2,0xed,0xff,0x00,0xba,
+ 0x28,0xb8,0x8c,0x0d,0xfe,0xd4,0x9b,0xfd,0xab,0x7f,0xfb,0x2a,0xdf,0xfb,0xa2,0x8f,
+ 0xec,0xab,0x7f,0xee,0x8a,0x2e,0x07,0x3f,0xbf,0xda,0x8d,0xfe,0xd5,0xd0,0x7f,0x65,
+ 0x5b,0xff,0x00,0x74,0x51,0xfd,0x97,0x6f,0xfd,0xd1,0xf9,0x51,0x70,0x39,0xfd,0xfe,
+ 0xd4,0x9b,0xbd,0xab,0xa1,0xfe,0xcb,0x80,0x7f,0x00,0xfc,0xa8,0xfe,0xcc,0x83,0xfb,
+ 0x8b,0xf9,0x51,0x70,0x39,0xed,0xde,0xd4,0x84,0xe6,0xba,0x3f,0xec,0xd8,0x07,0xf0,
+ 0xaf,0xe5,0x47,0xf6,0x7c,0x03,0xf8,0x16,0x8b,0x8c,0x4d,0x31,0xf7,0x69,0xf1,0x8e,
+ 0x38,0x1d,0xfe,0xb5,0x60,0x8c,0xfb,0x11,0x48,0x90,0x88,0xc6,0x13,0x81,0xe8,0x29,
+ 0xd8,0xa4,0x21,0x07,0x3f,0x5f,0x4a,0x3a,0x76,0xa0,0x8a,0x42,0x7d,0x68,0x00,0xe8,
+ 0x32,0xbc,0x8f,0x4a,0x33,0xdc,0x74,0xed,0xed,0x49,0x82,0x0e,0x47,0xff,0x00,0xae,
+ 0x97,0xef,0x72,0x3a,0xf7,0x14,0x00,0x80,0x9f,0xf0,0xf6,0xa0,0xf3,0xdb,0xe9,0x8a,
+ 0x5e,0x0f,0xd6,0x97,0x3e,0xbc,0x83,0xde,0x81,0x99,0xf3,0x1f,0x98,0xfb,0xa5,0x56,
+ 0x32,0x64,0x7d,0x56,0xb4,0x85,0xac,0x52,0x04,0x77,0x62,0x32,0x0f,0x7c,0x53,0x64,
+ 0xfb,0x2c,0x16,0x6e,0x23,0x40,0xec,0x00,0x61,0x8e,0x70,0x47,0xaf,0xb6,0x09,0xa9,
+ 0x19,0x9c,0x59,0x98,0x13,0x83,0x83,0xc1,0xe3,0xbd,0x29,0x86,0x63,0xb8,0xf9,0x6c,
+ 0x36,0xf0,0xd9,0xed,0x53,0xc9,0x77,0x34,0xaf,0x36,0x2d,0x94,0x09,0xa2,0x0c,0x57,
+ 0x70,0xfb,0xc3,0xf8,0x87,0xe3,0xdb,0xdc,0xd2,0x0b,0x8b,0xb9,0x24,0x53,0xfb,0xac,
+ 0xcd,0x06,0xc3,0x9c,0xe1,0xf0,0x3f,0x9f,0x4f,0xca,0x9d,0x82,0xe3,0x63,0xb4,0xb8,
+ 0x0e,0x4e,0x30,0xd1,0xa8,0x90,0xfa,0xe3,0x8e,0x7f,0x5a,0xe9,0xe0,0xb8,0x82,0x51,
+ 0x0e,0xe6,0x0b,0x24,0xcb,0xb9,0x57,0xd7,0xd7,0x1f,0x91,0xae,0x66,0x26,0xba,0x26,
+ 0xd6,0x4f,0xb4,0x6d,0xc2,0x98,0x83,0x05,0xc9,0x1d,0x78,0x3e,0xbd,0x4d,0x35,0x61,
+ 0x99,0x63,0x87,0x74,0xb2,0x8f,0x26,0x42,0x76,0x83,0x82,0xbe,0xac,0xbe,0xdc,0x53,
+ 0xb0,0xae,0x75,0x5f,0x6a,0xb3,0xf2,0xc4,0x9e,0x7a,0x6c,0x66,0xd8,0x1b,0x3c,0x67,
+ 0xd2,0x86,0x9e,0xcc,0x33,0xab,0x5c,0x46,0xa6,0x33,0x87,0x05,0xc0,0xda,0x7d,0xeb,
+ 0x91,0x78,0x22,0x09,0x22,0x99,0x37,0x30,0x7d,0xcb,0x97,0xe1,0xc7,0xf8,0xd2,0x98,
+ 0xad,0x08,0x90,0xa9,0x5d,0x8e,0x00,0x53,0xce,0x55,0xbd,0x29,0x88,0xeb,0x03,0xda,
+ 0x3f,0xdd,0xb9,0x8c,0xfd,0x24,0x06,0x9e,0x20,0x8d,0xbe,0xeb,0x83,0xf4,0x35,0xcb,
+ 0xaa,0xc0,0xac,0xd2,0x1f,0x28,0x79,0x6b,0xb5,0xd0,0x0f,0xbd,0x9e,0xeb,0x56,0xad,
+ 0xec,0x83,0xbd,0xbc,0x49,0x30,0x2d,0xb3,0xcc,0x89,0xc0,0xfb,0xdc,0x7d,0xd3,0xef,
+ 0xda,0x80,0x37,0x8d,0xa0,0xfe,0xf1,0xa6,0x9b,0x3f,0xf6,0xab,0x1d,0x6d,0x56,0x38,
+ 0xc5,0xdc,0x4c,0xdf,0x3b,0x10,0xcb,0xfd,0xc3,0xff,0x00,0xd7,0xab,0x50,0x48,0xfb,
+ 0x41,0xde,0xdf,0x9d,0x21,0x97,0x0d,0x99,0xec,0xd4,0x86,0xd1,0xf3,0x90,0xdc,0xfd,
+ 0x6a,0x31,0x34,0x9f,0xdf,0x6f,0xce,0x94,0x5c,0x49,0xfd,0xf3,0x40,0x0e,0x36,0x92,
+ 0x7f,0x78,0xfe,0x74,0x7d,0x95,0xfd,0x4f,0xe7,0x49,0xf6,0x89,0x7f,0xbf,0xfa,0x0a,
+ 0x5f,0xb4,0xcb,0xfd,0xef,0xd0,0x50,0x02,0x7d,0x9a,0x4f,0x53,0xf9,0xd3,0x4d,0xab,
+ 0xfb,0x9a,0x7f,0xda,0xa4,0x1d,0x48,0xfc,0xa9,0x1a,0xf1,0xd5,0x4b,0x1d,0xb8,0x1e,
+ 0xd4,0xc0,0x6f,0xd9,0xdc,0x0e,0xf4,0x9e,0x43,0x7a,0x56,0x5b,0x6b,0xf7,0xca,0xc7,
+ 0x10,0xc0,0xc3,0xe8,0x7f,0xc6,0x81,0xe2,0x1b,0xbe,0xf6,0xb1,0x7e,0x04,0xd1,0x61,
+ 0x1a,0x7e,0x43,0x0f,0xe1,0xe2,0x93,0xc9,0x6f,0x43,0x54,0x07,0x88,0x67,0x18,0xcd,
+ 0xa2,0x7e,0x0f,0x4f,0xff,0x00,0x84,0x80,0x96,0x21,0x6d,0x43,0x60,0x67,0xef,0xff,
+ 0x00,0xf5,0xa9,0xa8,0xb6,0x17,0x2e,0x79,0x2d,0xfd,0xde,0x28,0xf2,0x4f,0xa1,0xaa,
+ 0x3f,0xf0,0x92,0x60,0xf3,0x69,0xff,0x00,0x8f,0xff,0x00,0xf5,0xaa,0x55,0xf1,0x02,
+ 0x3f,0xfc,0xbb,0xff,0x00,0xe3,0xff,0x00,0xfd,0x6a,0x1c,0x5a,0xdc,0x2e,0x58,0xf2,
+ 0x58,0x7f,0x0f,0x14,0x79,0x27,0x3d,0x2a,0x21,0xad,0xa1,0xff,0x00,0x97,0x73,0xff,
+ 0x00,0x7d,0xff,0x00,0xf5,0xa9,0xe3,0x58,0x8c,0xff,0x00,0xcb,0x13,0xff,0x00,0x7d,
+ 0x52,0x01,0xde,0x49,0xf4,0xa4,0x30,0x9e,0xc3,0x9a,0x51,0xaa,0x46,0x7f,0xe5,0x91,
+ 0xfc,0xe9,0xc3,0x52,0x8c,0xff,0x00,0xcb,0x33,0xf9,0xd2,0x01,0x9e,0x51,0xf4,0xa0,
+ 0xc4,0x7d,0x2a,0x4f,0xed,0x08,0xbf,0xe7,0x9b,0x52,0xfd,0xbe,0x2f,0xee,0x35,0x00,
+ 0x43,0xe5,0x9f,0x4a,0x4f,0x2c,0xe3,0xa5,0x4f,0xf6,0xf8,0x7f,0xb8,0xff,0x00,0xa5,
+ 0x1f,0x6d,0x83,0xfb,0xaf,0xf9,0x50,0x05,0x7d,0x84,0x76,0xc8,0xa3,0xcb,0x3e,0x86,
+ 0xa7,0xfb,0x64,0x1e,0x8d,0xf9,0x51,0xf6,0xb8,0x7f,0xda,0xfc,0xa8,0x19,0x07,0x96,
+ 0x7d,0x29,0x3c,0xb3,0xdc,0x55,0x8f,0xb5,0xc1,0xfe,0xd7,0xe5,0x47,0xda,0xe0,0xf7,
+ 0xfc,0xa8,0x02,0xb1,0x8c,0xe6,0x8f,0x2c,0x9c,0x1c,0x60,0xd5,0x9f,0xb5,0x41,0xea,
+ 0x7f,0x2a,0x3e,0xd3,0x07,0xf7,0xbf,0x4a,0x00,0xad,0xb0,0x91,0xc8,0xc1,0xa4,0xf2,
+ 0xbd,0xb1,0x56,0xbe,0xd3,0x07,0xf7,0xbf,0x4a,0x4f,0xb4,0xc1,0xfd,0xef,0xd2,0x80,
+ 0x30,0x25,0x6e,0x41,0xcf,0xdd,0x38,0xfc,0xea,0x21,0x30,0x8b,0x95,0x3c,0xa9,0xc7,
+ 0x3d,0xc5,0x2d,0xc7,0xdc,0x90,0xff,0x00,0xb4,0x05,0x53,0x90,0x90,0x5c,0x7a,0x62,
+ 0x90,0xcb,0x2f,0x7a,0x54,0x91,0x1a,0x2a,0x05,0x5c,0x2f,0x19,0xdb,0xd3,0xa1,0xff,
+ 0x00,0x3d,0x6a,0x36,0xbb,0x90,0xe4,0x03,0xb4,0x05,0x1c,0x28,0x03,0x1d,0x39,0x1e,
+ 0x86,0xab,0xb7,0x56,0xfc,0xa9,0x09,0x1f,0x35,0x31,0x13,0x35,0xc4,0xac,0x7e,0x69,
+ 0x18,0xfc,0x98,0x3c,0xf5,0x14,0xc0,0xc4,0x95,0xcf,0x65,0xa6,0x12,0x32,0x7e,0x98,
+ 0xa3,0x77,0xf2,0xc5,0x00,0x39,0x5b,0x98,0xfe,0xb4,0xd0,0xfd,0x3d,0x8e,0x69,0x01,
+ 0xc1,0x1e,0xd4,0x2f,0xde,0x1f,0x5a,0x60,0x38,0x39,0x39,0x1e,0xf9,0xad,0x4b,0x49,
+ 0x1f,0x64,0x60,0x1c,0x6c,0x6d,0xca,0x47,0x50,0x7f,0xc8,0xac,0xe4,0x52,0x52,0x4c,
+ 0x2e,0x48,0x23,0x1c,0x56,0x85,0xba,0xed,0x8c,0x7a,0xd2,0x03,0x5a,0x19,0x06,0xc9,
+ 0x90,0x8c,0xac,0xb8,0x3f,0x46,0xf5,0xfe,0x75,0x22,0x70,0x31,0x55,0x61,0x6c,0x8a,
+ 0xb2,0xb9,0x22,0x90,0x0f,0xa5,0xcd,0x32,0x97,0x24,0x53,0x01,0xd9,0xa3,0x34,0xdc,
+ 0xd1,0x40,0x0e,0xeb,0x50,0x5e,0xf3,0x67,0x2f,0xfb,0xa6,0xa5,0xcd,0x43,0x77,0xcd,
+ 0xa4,0xbf,0xee,0x1f,0xe5,0x42,0xdc,0x47,0x3b,0x45,0x25,0x15,0xd4,0x66,0x0d,0xf7,
+ 0x4d,0x58,0xd2,0xf0,0xd7,0x04,0x1e,0xe8,0x6a,0xb3,0x7d,0xd3,0x56,0x34,0x93,0xfe,
+ 0x96,0x3f,0xdd,0x35,0x12,0x65,0x22,0xe5,0xc5,0x98,0x6c,0xb2,0xf5,0xac,0xf9,0x23,
+ 0x78,0x8f,0xf5,0xad,0xd2,0x2a,0x19,0x61,0x57,0x18,0x22,0x85,0x3b,0xe9,0x21,0x38,
+ 0xdb,0x63,0x2e,0x39,0xbb,0x37,0xe7,0x56,0x15,0xea,0x2b,0x8b,0x52,0x87,0x22,0xa0,
+ 0x57,0x68,0xce,0x0e,0x7e,0x86,0x94,0xa1,0xd8,0x6a,0x46,0x82,0xc9,0x52,0xab,0xd5,
+ 0x24,0x90,0x38,0xc8,0x35,0x28,0x62,0x2b,0x1b,0x16,0x5b,0x0d,0x4b,0xba,0xab,0x07,
+ 0xa7,0x86,0xa0,0x09,0xf3,0x46,0xea,0x88,0x35,0x2e,0xea,0x40,0x49,0x9a,0x33,0x4c,
+ 0xdd,0x46,0x68,0x02,0x4c,0xd2,0x66,0x9b,0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6,
+ 0x8c,0xd0,0x03,0xb3,0x45,0x37,0x34,0xb9,0xa0,0x0f,0xff,0xd9,0xff,0xe4,0x13,0x4b,
+ 0x51,0x54,0x49,0x20,0x44,0x65,0x62,0x75,0x67,0x20,0x4d,0x65,0x74,0x61,0x64,0x61,
+ 0x74,0x61,0x00,0x49,0x13,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x52,0x43,0xae,0xae,0xae,0xae,0x86,0x02,0x00,0x00,0xe8,0x05,0x00,
+ 0x00,0x7b,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0xaa,0x01,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x06,0x11,0xa5,0x88,0x03,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x4c,0x09,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x25,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x34,0x00,0x00,0x00,0xab,0x06,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x50,0x00,0x00,
+ 0x00,0x50,0x09,0x00,0x00,0x0b,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x73,0x02,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
+ 0x00,0x40,0x01,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xaa,0x01,0x00,0x00,0xe8,0x05,0x00,0x00,0xee,0xee,0xee,
+ 0xee,0x15,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x01,0x00,
+ 0x00,0x22,0x41,0x00,0x00,0x94,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x22,0x41,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0xf7,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xe6,0x0b,0x00,
+ 0x00,0x2f,0x08,0x00,0x00,0xe6,0x0b,0x00,0x00,0x10,0x00,0x00,0x00,0x31,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x94,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x68,0x00,0x00,
+ 0x00,0x26,0x09,0x00,0x00,0x87,0x08,0x00,0x00,0x0b,0x09,0x00,0x00,0xc6,0x08,0x00,
+ 0x00,0x25,0x09,0x00,0x00,0x09,0x09,0x00,0x00,0x1b,0x09,0x00,0x00,0x1d,0x09,0x00,
+ 0x00,0x21,0x09,0x00,0x00,0x3e,0x09,0x00,0x00,0x43,0x09,0x00,0x00,0x12,0x09,0x00,
+ 0x00,0x29,0x09,0x00,0x00,0x12,0x09,0x00,0x00,0x04,0x09,0x00,0x00,0xc7,0x08,0x00,
+ 0x00,0x56,0x08,0x00,0x00,0x69,0x07,0x00,0x00,0xc8,0x05,0x00,0x00,0x52,0x05,0x00,
+ 0x00,0x2b,0x09,0x00,0x00,0x27,0x09,0x00,0x00,0x67,0x08,0x00,0x00,0xc8,0x05,0x00,
+ 0x00,0x5f,0x08,0x00,0x00,0x32,0x0a,0x00,0x00,0x67,0x0a,0x00,0x00,0xa1,0x07,0x00,
+ 0x00,0x6d,0x05,0x00,0x00,0x04,0x08,0x00,0x00,0x2f,0x09,0x00,0x00,0x31,0x09,0x00,
+ 0x00,0x66,0x08,0x00,0x00,0xe8,0x05,0x00,0x00,0xf9,0x09,0x00,0x00,0xab,0x0a,0x00,
+ 0x00,0xe9,0x0a,0x00,0x00,0xf2,0x08,0x00,0x00,0x7e,0x05,0x00,0x00,0xdc,0x07,0x00,
+ 0x00,0x31,0x09,0x00,0x00,0x5a,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xee,0x09,0x00,
+ 0x00,0x73,0x0a,0x00,0x00,0xc5,0x0a,0x00,0x00,0x50,0x09,0x00,0x00,0x86,0x05,0x00,
+ 0x00,0x31,0x09,0x00,0x00,0x4e,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xe2,0x09,0x00,
+ 0x00,0x2b,0x0b,0x00,0x00,0xdc,0x0a,0x00,0x00,0x5c,0x09,0x00,0x00,0x86,0x05,0x00,
+ 0x00,0x38,0x09,0x00,0x00,0x3e,0x08,0x00,0x00,0xee,0x05,0x00,0x00,0xcf,0x09,0x00,
+ 0x00,0xe6,0x0b,0x00,0x00,0xd4,0x0b,0x00,0x00,0xdd,0x09,0x00,0x00,0x76,0x05,0x00,
+ 0x00,0xe8,0x05,0x00,0x00,0x06,0x06,0x00,0x00,0x3b,0x06,0x00,0x00,0x1c,0x06,0x00,
+ 0x00,0x33,0x08,0x00,0x00,0x1e,0x08,0x00,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xfe,0xff,0xff,0xff,0xbc,0x08,0x00,
+ 0x00,0x44,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x29,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x96,0x09,0x00,
+ 0x00,0xf9,0x0b,0x00,0x00,0xba,0x05,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0d,0x00,
+ 0x00,0x00,0x1d,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x8b,0xfe,0xff,
+ 0xff,0xdc,0xfe,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xad,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x06,0x00,
+ 0x00,0x7c,0x00,0x00,0x00,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0x0a,0x00,0x00,0x86,0x09,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xde,0x00,0x00,0x00,0xbb,0x00,0x00,
+ 0x00,0x17,0x00,0x00,0x00,0x1d,0x00,0x00,0x00,0xb6,0x00,0x00,0x00,0xa5,0x00,0x00,
+ 0x00,0xc1,0xff,0xff,0xff,0x3c,0x00,0x00,0x00,0xef,0xff,0xff,0xff,0xed,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,
+ 0x00,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x10,0x00,
+ 0x00,0x00,0x13,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x26,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0b,0x00,0x00,0xdf,0xff,0xff,
+ 0xff,0x64,0x08,0x00,0x00,0xa4,0x0a,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x0a,0x1e,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x6c,0x97,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xa5,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x92,0x02,0x00,0x00,0x8a,0x04,0x00,0x00,0xe4,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x5d,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,
+ 0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00,
+ 0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x4a,0x4b,0x4a,0x4b,0x21,0x07,0x0a,
+ 0x9c,0x24,0xfa,0x00,0x00,0xac,0xfa,0x00,0x00,0x2e,0x77,0x00,0x00,0x2c,0x7e,0x00,
+ 0x00,0xd6,0xea,0x01,0x00,0x50,0xb1,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0xaa,0x01,
+ 0x00,0x00,0xaa,0x01,0x00,0x02,0x00,0x35,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x02,
+ 0x00,0x00,0x00,0x76,0x00,0x75,0x18,0x7e,0x5b,0x02,0x00,0x00,0x00,0x01,0x00,0x87,
+ 0xb3,0x01,0x00,0x17,0x92,0x01,0x00,0xbb,0x6b,0xff,0xff,0x2d,0x02,0x00,0x00,0x69,
+ 0xdd,0xff,0xff,0x26,0x46,0x01,0x00,0x71,0xdc,0xff,0xff,0x70,0x0f,0x00,0x00,0x19,
+ 0x4f,0xff,0xff,0x76,0xa1,0x01,0x00,0xff,0xff,0x40,0x30,0x00,0x00,0x18,0x00,0x00,
+ 0x12,0x12,0x00,0x08,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x10,0x12,
+ 0x12,0x12,0x12,0x13,0x13,0x00,0x00,0x00,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x13,0x00,0x13,0x12,0x13,0x13,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x01,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x07,0x08,0x12,0x12,0x12,0x12,0x01,
+ 0x06,0x12,0x12,0x12,0x12,0x08,0x15,0x00,0x00,0x14,0x15,0x06,0x12,0x12,0x12,0x01,
+ 0x06,0x12,0x12,0x12,0x12,0x08,0x08,0x15,0x00,0x15,0x15,0x06,0x12,0x12,0x12,0x01,
+ 0x06,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x15,0x15,0x07,0x12,0x12,0x12,0x06,
+ 0x12,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x14,0x15,0x08,0x12,0x12,0x12,0x06,
+ 0x06,0x12,0x12,0x12,0x12,0x06,0x07,0x16,0x08,0x00,0x08,0x08,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x06,0x07,0x01,0x01,0x07,0x08,0x08,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x08,0x15,0x15,0x12,0x12,0x12,0x12,0x12,0x12,0x00,
+ 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xf9,0x0d,0x00,0x10,0x00,
+ 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xc3,
+ 0x0a,0x00,0x10,0xca,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x02,
+ 0x08,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x1b,
+ 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x25,0x4c,0x00,0x00,0x00,0x0e,
+ 0x18,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88,
+ 0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,
+ 0x1e,0x08,0x1b,0xfc,0x21,0xa8,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4c,0x24,0x38,0x1f,0x42,
+ 0x23,0x2f,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c,
+ 0x27,0x09,0x1e,0xf0,0x27,0xec,0x1b,0x2b,0x28,0x67,0x1c,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x67,0x2a,0x04,0x18,0x00,0x27,0x5d,0x19,0x7b,0x25,0x3d,0x16,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x2e,0x2d,0x15,0xd3,0x2b,0x56,0x16,0xa2,
+ 0x29,0x12,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xab,
+ 0x1c,0x9c,0x1a,0x7b,0x25,0x77,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x5d,0x1d,0x93,0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa1,0x26,0x42,0x20,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c,
+ 0x27,0x57,0x1e,0x75,0x27,0xc0,0x1d,0x83,0x28,0x72,0x1c,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x80,0x27,0x12,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf2,0x1f,0x1d,0x15,0xd2,
+ 0x24,0x83,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88,
+ 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,
+ 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x04,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x55,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x12,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x0f,0x00,0x1c,0x01,0xe8,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x13,
+ 0x01,0x07,0x00,0x00,0x00,0x00,0x00,0x2f,0x00,0x71,0x00,0x13,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0xc8,0x00,0x9b,
+ 0x01,0x00,0x00,0x00,0x00,0x04,0x00,0x5a,0x00,0xe8,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x0c,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x16,0x00,0x0b,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xf7,0x1f,0xfe,0xb7,0x15,0xfe,0xb7,0x15,
+ 0xe2,0x17,0x10,0xe2,0x17,0x10,0x00,0x88,0x20,0x00,0x10,0xe6,0x1d,0x06,0x00,0x00,
+ 0x00,0x5a,0x50,0x64,0x55,0x64,0x2d,0x64,0x10,0x64,0x10,0x64,0x10,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x67,0x00,0x00,0x00,0x01,0x00,0x0c,0x00,0x13,
+ 0x00,0x09,0x00,0x06,0x00,0x67,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x65,0x26,0xba,0x1b,0x65,
+ 0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x84,0x25,0x27,0x1b,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x59,0x00,0x00,0x00,0xda,0x02,0x83,
+ 0x03,0x00,0x00,0x75,0x19,0x00,0x00,0x60,0x3d,0x00,0x00,0x00,0xaa,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x05,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x4e,0x00,0xa4,0x00,0x8d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x03,0x00,0x9d,0x00,0x6a,0x01,0x4b,
+ 0x04,0x01,0x00,0x57,0x01,0x28,0x00,0x01,0x00,0xd6,0xc9,0x33,0x01,0x00,0x00,0x00,
+ 0x00,0x46,0x41,0x46,0x41,0x28,0x00,0x66,0x01,0x32,0x00,0xad,0xff,0xda,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0x93,0x59,0x01,0x9c,0x04,0x32,0x00,0xad,0xff,0xda,0xff,0xa8,
+ 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0x59,0x01,0x14,0x00,0xc2,0xff,0xd7,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0x93,0x58,0x01,0x58,0x01,0xc2,0xff,0x00,0x00,0xec,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x58,0x01,0xd0,0xff,0xe3,0xff,0xf1,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x57,0x01,0xf7,0xff,0x03,0x00,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xe3,0x56,0x01,0x9c,0x04,0xf7,0xff,0x03,0x00,0xff,0xff,0xa8,
+ 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0xe8,0x03,0xf7,0xff,0x03,0x00,0xff,0xff,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x57,0x01,0xd4,0xff,0x10,0x00,0xf7,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x2c,0x00,0x14,0x00,0xfc,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe1,0xff,0x15,0x00,0x02,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd8,0xff,0xf0,0xff,0xf3,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x23,0x00,0x23,0x00,0x0e,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd2,0xff,0x1f,0x00,0x0c,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc5,0xff,0xd6,0xff,0xf4,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x25,0x00,0x1c,0x00,0x00,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x18,0x00,0xf5,0xff,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc2,0xff,0xe8,0xff,0x03,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0c,0x00,0x28,0x00,0xfe,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x03,0x00,0xe1,0xff,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf8,0xff,0xe9,0xff,0xf9,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd0,0xff,0x1d,0x00,0x05,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf6,0xff,0xe1,0xff,0xf8,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x1d,0x00,0xed,0xff,0xeb,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xde,0xff,0xf3,0xff,0x06,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0d,0x00,0x02,0x00,0xf0,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xfe,0xff,0xea,0xff,0x01,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe6,0xff,0xf8,0xff,0x04,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xfa,0xff,0xf2,0xff,0xf7,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x11,0x00,0x08,0x00,0x08,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xc2,0xff,0xeb,0xff,0x02,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x27,0x00,0x05,0x00,0x00,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x19,0x00,0x0c,0x00,0xfc,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd3,0xff,0xe9,0xff,0xfe,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x06,0x00,0x07,0x00,0xf2,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd5,0xff,0x1a,0x00,0x03,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x09,0x00,0x18,0x00,0x03,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xef,0xff,0x23,0x00,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x01,0x00,0xf7,0xff,0xf3,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0xaa,0x01,0x00,0x00,0xb8,0x00,0x05,0xd0,0x0a,
+ 0x00,0x01,0x00,0x00,0x00,0x60,0x07,0x00,0x04,0x70,0x08,0x40,0x05,0x18,0x00,0x01,
+ 0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xe5,0x00,0xa2,0x00,0x73,0x73,
+ 0x6f,0x69,0x73,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c,
+ 0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x30,0x20,0x32,0x73,0x73,
+ 0x6d,0x74,0x66,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x53,0x53,0x43,0x41,0x4c,
+ 0x20,0x50,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56,0x4d,0x30,0x30,0x33,
+ 0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0x4d,0x38,0x44,0x30,0x31,0x44,0x30,0x31,
+ 0x53,0x31,0x34,0x53,0x41,0x33,0x2f,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31,
+ 0x56,0x4d,0x30,0x30,0x33,0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0xff,0xdb,0x00,
+ 0x84,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x02,0x03,0x02,0x02,0x02,0x02,0x02,0x04,0x03,0x03,0x02,0x03,0x05,0x04,0x05,0x05,
+ 0x05,0x04,0x04,0x04,0x05,0x06,0x07,0x06,0x05,0x05,0x07,0x06,0x04,0x04,0x06,0x09,
+ 0x06,0x07,0x08,0x08,0x08,0x08,0x08,0x05,0x06,0x09,0x0a,0x09,0x08,0x0a,0x07,0x08,
+ 0x08,0x08,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x04,0x02,0x02,0x04,0x08,0x05,0x04,
+ 0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0xff,0xc0,0x00,0x11,0x08,0x0b,0xd0,0x0f,0xc0,0x03,0x01,0x22,0x00,
+ 0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,
+ 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,
+ 0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,
+ 0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,
+ 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,
+ 0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,
+ 0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,
+ 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,
+ 0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,
+ 0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,
+ 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,
+ 0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,
+ 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,
+ 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,
+ 0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,
+ 0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,
+ 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,
+ 0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,
+ 0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,
+ 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,
+ 0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,
+ 0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,
+ 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,
+ 0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,
+ 0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,
+ 0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xfe,0x15,0xec,0x27,0x9b,0x03,0x68,0x86,
+ 0x7b,0x88,0xd4,0xc8,0x79,0x3c,0xaf,0xa0,0xf5,0xa5,0xd4,0xee,0xa7,0x96,0x66,0x79,
+ 0x84,0x31,0x16,0x0a,0x56,0x35,0xe7,0x23,0x03,0x05,0x4f,0x73,0x4c,0x64,0x68,0x55,
+ 0xa4,0x8d,0x19,0xe4,0x60,0xc5,0x59,0x57,0xf7,0x80,0x0e,0xad,0x8f,0x4a,0xa5,0x78,
+ 0xd3,0xac,0x7e,0x73,0xfc,0xb7,0x48,0xd9,0xd9,0x13,0x75,0x4c,0x0e,0x40,0xec,0x6b,
+ 0x5a,0x56,0x8b,0x76,0xd8,0xa7,0xb6,0xe5,0x5b,0xcb,0x91,0x72,0x8b,0x10,0x49,0x9a,
+ 0xe2,0x32,0x59,0x97,0x1c,0x36,0x7a,0x67,0xdc,0x7f,0x5a,0xc6,0x69,0x84,0x51,0x29,
+ 0x96,0x24,0x17,0x2e,0x08,0x90,0x96,0xe8,0x33,0xd4,0x0f,0x6a,0x7d,0xdd,0xfb,0x99,
+ 0x66,0x91,0x96,0x74,0x47,0x60,0xe1,0x07,0xf0,0xf1,0xfe,0x26,0xb3,0x1f,0xf7,0xa5,
+ 0x5a,0x42,0x17,0x92,0xcc,0x1b,0xa6,0x08,0xcf,0x5a,0xd9,0x69,0xea,0x38,0xbe,0xdb,
+ 0x8b,0x31,0x4d,0xea,0xe2,0x32,0x8c,0x7e,0x63,0xf3,0x7b,0x53,0x99,0xd9,0xc2,0x48,
+ 0xb2,0x14,0xc8,0xc7,0xb1,0x3e,0x87,0xf5,0xa8,0xc7,0xef,0x44,0x86,0x42,0x25,0x7c,
+ 0x64,0x16,0x24,0x02,0x3d,0xa9,0xc1,0x62,0x88,0xb1,0x07,0xcc,0x21,0x70,0x14,0x8e,
+ 0x09,0xc7,0x5f,0xd6,0xb3,0xb5,0xda,0x46,0xb1,0x6e,0xde,0x45,0x9b,0x74,0x2d,0x29,
+ 0x8e,0x4d,0xe7,0x9c,0x20,0x03,0xe5,0x07,0xbf,0xcd,0x57,0x62,0xb8,0x8d,0x54,0x5a,
+ 0x95,0x77,0x53,0x21,0x90,0x10,0x00,0x39,0x1e,0xe7,0xa8,0xe0,0xd6,0x51,0x21,0xc3,
+ 0x29,0x2a,0x50,0x90,0x48,0x50,0x7b,0x0e,0xbe,0xd5,0x0a,0xca,0x70,0x14,0x64,0xe4,
+ 0x6d,0x04,0x73,0xf4,0xa6,0xe7,0x74,0x6a,0xa5,0x65,0x66,0x69,0xb6,0xa5,0x2b,0x26,
+ 0xf5,0x48,0xe0,0x07,0xe5,0x11,0x8f,0x98,0x15,0x07,0xee,0xf3,0xda,0xb3,0x6e,0x6e,
+ 0x24,0xb8,0x9c,0xca,0xe4,0x8c,0x03,0x81,0x8e,0xf4,0xc1,0xf7,0x31,0x8c,0x91,0x91,
+ 0x80,0x69,0xa4,0x8d,0xa3,0xe7,0x79,0x30,0x70,0x73,0xc6,0x6b,0x36,0xee,0x65,0x29,
+ 0x5d,0x0e,0x21,0x4e,0xc5,0x00,0xbb,0x91,0x92,0x48,0xc6,0x29,0x1b,0x18,0xdc,0x0f,
+ 0x07,0x92,0xa4,0xd3,0xbe,0xeb,0x85,0x0a,0x4e,0x46,0x5c,0x16,0xe0,0xd3,0x24,0x3b,
+ 0x8e,0x55,0x36,0x8e,0x80,0x9e,0x70,0x3d,0x2a,0x6e,0xaf,0x70,0x77,0xb6,0xa3,0xfe,
+ 0x53,0x86,0xd8,0x23,0x5c,0xe5,0x80,0x27,0xe5,0xc7,0xf8,0xd3,0x3e,0x67,0xc0,0xcf,
+ 0x3d,0x17,0x8e,0xb4,0xe5,0xf2,0xc3,0xfd,0xe2,0x40,0x18,0xe4,0x75,0xa6,0xee,0x57,
+ 0x2a,0x4e,0xd5,0xc9,0xc6,0x73,0xd2,0x9a,0xf2,0x13,0xdb,0x50,0x07,0x24,0x00,0x01,
+ 0x5f,0xe2,0xcf,0x7f,0x6a,0x92,0x45,0x28,0xa8,0x81,0x48,0x56,0xf9,0x81,0x6e,0xf8,
+ 0xeb,0x4c,0x2c,0x79,0x51,0xb1,0x80,0x38,0x0d,0x8c,0x64,0x53,0xb7,0xf9,0x8c,0xa6,
+ 0x4c,0xb9,0x55,0xc2,0xfb,0x7e,0x14,0xac,0x17,0x5b,0x75,0x00,0x33,0xe5,0x39,0x01,
+ 0x01,0x38,0xce,0x38,0x1f,0x5f,0xca,0x85,0x8c,0xb9,0xf2,0xf2,0x23,0xc8,0xc3,0x36,
+ 0x3a,0x73,0xff,0x00,0xea,0xa9,0x0e,0x76,0xaa,0xb1,0xf3,0x3e,0x52,0x00,0x66,0xfb,
+ 0xbf,0x41,0x50,0xee,0x0d,0xb4,0xc8,0xbb,0xbd,0xb3,0xd7,0x9e,0xd4,0xed,0xd1,0x15,
+ 0x64,0x9e,0xa4,0x8d,0x9c,0xe0,0x47,0xc2,0xae,0xc3,0x93,0xd7,0xde,0x83,0xe5,0x85,
+ 0xe3,0x73,0xa9,0x20,0xe0,0xf1,0xcd,0x26,0x64,0xd9,0x86,0xc6,0x47,0x20,0xe7,0xef,
+ 0x0f,0x42,0x29,0x8c,0x40,0x6c,0x01,0x9c,0x9c,0x92,0x3b,0x52,0xb8,0x9b,0xb2,0xbb,
+ 0x1c,0x0b,0x49,0x8d,0xc4,0x28,0x04,0xf2,0x4f,0x27,0xd8,0x52,0x86,0x5d,0xa8,0x54,
+ 0x67,0xae,0x09,0x1d,0x29,0x8a,0x03,0x07,0xcb,0x28,0x5e,0xa4,0x9e,0xd4,0xae,0xe5,
+ 0xd0,0x0c,0x15,0x8d,0x4e,0x40,0x03,0xa5,0x17,0xbe,0xe1,0x7d,0x2e,0x3f,0xe6,0x90,
+ 0x9c,0x97,0xda,0x48,0xdc,0x47,0x6f,0x4a,0x8b,0xa9,0xce,0xdd,0xa0,0x73,0xc9,0x3f,
+ 0x35,0x48,0xac,0x8d,0xbf,0x71,0x65,0x24,0x64,0x11,0xd6,0x9b,0x82,0xc0,0x05,0x0c,
+ 0x79,0xce,0x0f,0x6f,0x6a,0x1e,0x81,0x7d,0x04,0xf9,0x9c,0xaf,0x4c,0x93,0xc0,0x14,
+ 0xec,0xb4,0x85,0x54,0x16,0x2d,0x93,0x80,0x47,0x5a,0x06,0x41,0x2e,0xa4,0x8c,0x8c,
+ 0xe4,0x0e,0x83,0xd0,0xd1,0x9d,0xe0,0xc8,0xcc,0x01,0x3d,0x40,0xa5,0xd7,0x52,0x55,
+ 0xed,0xa8,0xbf,0xbc,0x8c,0xe6,0x37,0x2a,0x40,0xc1,0x1d,0x87,0x14,0xd4,0x0a,0x10,
+ 0xe5,0x72,0xac,0x38,0x70,0x3a,0x73,0x4f,0x45,0x52,0x15,0xc6,0x36,0x9e,0xcc,0x79,
+ 0xe2,0x98,0x5d,0xc0,0x2e,0x1f,0x60,0x03,0x21,0x40,0xe8,0x3d,0x05,0x3e,0x81,0xe6,
+ 0xc7,0xb2,0x92,0x54,0x1d,0xa3,0xe5,0xe4,0x7a,0x8f,0x7f,0xd2,0x90,0x30,0x63,0x1a,
+ 0x94,0x43,0x8e,0x4e,0x49,0xf9,0xbe,0xb4,0x63,0x77,0xcc,0x18,0x73,0xc6,0x09,0xf9,
+ 0x89,0xfa,0x53,0x57,0x69,0x47,0x3c,0x96,0x18,0x03,0x1e,0x94,0x5f,0xb0,0xef,0xad,
+ 0xd1,0x20,0xdb,0x87,0x00,0x17,0x19,0x00,0x00,0x39,0xfc,0x0d,0x1b,0x54,0x71,0x11,
+ 0x63,0xb5,0xb9,0x0d,0xc1,0x14,0xd5,0x3c,0xe7,0x83,0x96,0xe7,0xb6,0x29,0x15,0x24,
+ 0x32,0x32,0xae,0x43,0xfd,0xe5,0xc9,0x03,0x23,0x3e,0xb4,0x3d,0x5d,0xc2,0xfb,0x0e,
+ 0x72,0x09,0x03,0x2c,0xbb,0x41,0x1c,0xf6,0xa5,0x68,0x1f,0xe4,0x72,0x8b,0x86,0x19,
+ 0x52,0x0f,0xde,0xa5,0x62,0xa1,0xbf,0x78,0xae,0x24,0x27,0x70,0x6c,0xf2,0x0f,0xb8,
+ 0xee,0x2a,0x47,0x92,0x69,0x7c,0xb5,0x57,0x2a,0x8a,0x70,0xa8,0xa3,0xee,0xd3,0x69,
+ 0x12,0xd5,0xc7,0x47,0x85,0x0f,0x1c,0xc9,0xfb,0x89,0x14,0x3a,0xae,0x30,0x48,0xcf,
+ 0x7e,0xf5,0x66,0x0b,0xd9,0xa3,0x9a,0xdb,0x71,0x59,0x46,0x4a,0xa6,0x1b,0x1b,0x47,
+ 0x40,0x6a,0xa9,0x2c,0x42,0xac,0xef,0xe6,0x72,0x63,0x50,0xc7,0x86,0x1e,0xa4,0xf6,
+ 0xa8,0xa4,0xc1,0x90,0x00,0xaa,0x13,0x1b,0x71,0x8e,0xc0,0x74,0x5f,0x7a,0x4a,0xef,
+ 0x51,0xe8,0x8e,0xdc,0xbc,0x33,0xda,0xc8,0xca,0xb1,0x73,0x21,0x80,0xc4,0xf9,0xc0,
+ 0x39,0xce,0x57,0xf5,0xe9,0x5c,0xc4,0x8d,0x0c,0x72,0x3b,0xc5,0x2a,0xa4,0xc9,0x23,
+ 0x2b,0x46,0xe7,0xef,0x9f,0x51,0xec,0x79,0xc5,0x6e,0xd9,0x18,0xf1,0xb3,0xfd,0x25,
+ 0xa6,0x03,0x2b,0x95,0xce,0xd1,0x8f,0xbc,0x7d,0x3f,0xfa,0xf5,0x8f,0x7c,0xb6,0xd0,
+ 0x48,0xcc,0xd6,0xed,0x35,0xe0,0x38,0x62,0x41,0x0a,0x33,0xdf,0xeb,0xc8,0xa7,0x77,
+ 0xaa,0x7b,0x99,0xa7,0x77,0x66,0x55,0x77,0x61,0x12,0x4a,0x98,0x18,0x93,0x25,0x07,
+ 0x04,0x0f,0x6a,0x0a,0x87,0x4c,0x83,0x20,0x85,0x8e,0x1d,0x40,0xe4,0x73,0x50,0x2c,
+ 0x4f,0x2c,0x71,0xc2,0x5d,0x41,0x27,0xe6,0x52,0x4e,0x57,0x9e,0xa0,0x7a,0x55,0x9b,
+ 0x86,0x8d,0xa4,0x8d,0x62,0x66,0x8a,0x75,0x52,0x03,0x38,0xe0,0x8f,0x4f,0xf3,0xeb,
+ 0x49,0xf9,0x6e,0x17,0x4f,0x61,0x53,0x74,0x67,0x0e,0x9f,0x28,0x3f,0x2a,0xae,0x32,
+ 0x3e,0xa6,0x9a,0xd7,0x06,0x59,0x63,0x0d,0x18,0x87,0xf8,0x94,0xe7,0x9c,0xe7,0xbf,
+ 0xa5,0x31,0x58,0x3b,0x85,0x74,0x29,0x91,0x87,0x20,0x7d,0xdf,0x43,0xc7,0x5e,0x94,
+ 0x2b,0xec,0xdc,0xe8,0xa6,0x50,0xc7,0x00,0xb7,0x7f,0x72,0x2a,0x5e,0xe1,0xab,0x5a,
+ 0x16,0x04,0x4a,0x65,0x70,0xc2,0x4c,0x96,0x24,0x9e,0xb9,0xf7,0x22,0x88,0xb7,0xda,
+ 0xaa,0x38,0x71,0x1e,0x09,0x0a,0xc7,0xa9,0x51,0xc9,0x1e,0xd4,0x92,0x43,0x24,0x0d,
+ 0x14,0x8c,0xa2,0x30,0x64,0x05,0xd4,0x3e,0x30,0x31,0xc7,0xf9,0x35,0x34,0x33,0x99,
+ 0xa7,0xf2,0xfc,0xd6,0x9e,0x4d,0xc2,0x4d,0xa4,0x0e,0x83,0xb5,0x2f,0x24,0x2b,0xb7,
+ 0xb0,0xcf,0x2a,0xdc,0xf9,0x53,0x30,0x95,0x56,0x40,0xc4,0x44,0x8d,0x92,0xa3,0xd4,
+ 0x8a,0x96,0x39,0x7c,0xdb,0x99,0x23,0x01,0xfe,0x45,0x2e,0x18,0x0f,0x6a,0x58,0xde,
+ 0x39,0x66,0x5b,0x7b,0x68,0x9c,0xdc,0x33,0xf9,0x8c,0xc4,0x60,0xa7,0xb7,0x34,0x93,
+ 0x5b,0x5f,0x2a,0x32,0x49,0xba,0xd5,0x43,0x15,0xda,0xbf,0x79,0x81,0x39,0x04,0x0e,
+ 0xd4,0xf4,0xb8,0xf4,0xd9,0x16,0xa0,0x92,0xdc,0x84,0xcc,0x52,0xcb,0x74,0xc3,0x00,
+ 0x6d,0x23,0x8f,0x6f,0xa5,0x0b,0x05,0xcc,0xb7,0x50,0x42,0x92,0xe5,0x5f,0x0a,0xcc,
+ 0xe7,0x86,0x6f,0xad,0x58,0xb5,0xd3,0x75,0x2d,0x46,0xee,0x0d,0xb1,0x38,0x8c,0xa9,
+ 0x53,0x29,0x60,0x0a,0x26,0x3d,0x7b,0x9e,0x7a,0x57,0x57,0x6f,0x65,0x67,0xa5,0x5a,
+ 0x40,0xb2,0x34,0xb7,0xae,0xe5,0xe4,0x50,0xc7,0x04,0x10,0x78,0x19,0xef,0x9f,0x4e,
+ 0xd4,0x45,0x5d,0xe8,0x24,0xef,0xa2,0x30,0xf4,0x9f,0x0f,0xea,0x17,0x3a,0x88,0x16,
+ 0xf1,0xaa,0x07,0x61,0xe6,0xb4,0xad,0xb7,0x68,0xe8,0x70,0x07,0x7e,0x6b,0xa4,0xd3,
+ 0xfc,0x31,0x6f,0x61,0x24,0xf6,0x77,0xb1,0xc7,0x75,0x2c,0x92,0x09,0x0b,0x4a,0xc5,
+ 0x55,0x54,0x02,0x57,0x68,0xef,0xdb,0x35,0x1b,0x6a,0xb6,0xdb,0xae,0x3e,0xcf,0x23,
+ 0xad,0xe0,0x8c,0x31,0x07,0x80,0xdc,0xf7,0xf7,0xeb,0x58,0x57,0x9a,0xd5,0xcd,0xcc,
+ 0x83,0xed,0x2a,0xeb,0x1b,0xa1,0x50,0xc5,0xf8,0x04,0x63,0xe6,0x1e,0x86,0xa2,0x2d,
+ 0xbd,0xc7,0x66,0xec,0x96,0xe7,0x5c,0x35,0x6b,0x6f,0xb4,0xfd,0xa5,0xd1,0xe3,0x98,
+ 0x2e,0x52,0x40,0xa7,0x8c,0x00,0x36,0xe4,0xf5,0x1f,0xca,0xb9,0x0d,0x43,0x5e,0x9a,
+ 0x70,0xb6,0xd6,0x10,0x18,0xe2,0x70,0xcc,0x54,0x00,0x4a,0x8c,0xfa,0xf7,0xe7,0xf9,
+ 0xd6,0x50,0x13,0x39,0x91,0x56,0x58,0xa5,0xf2,0xd0,0xb0,0x77,0x3c,0x36,0x7f,0xaf,
+ 0x4a,0xd1,0x86,0x35,0xcd,0xbb,0x3c,0x66,0xdd,0x59,0x48,0x56,0x88,0xe3,0x67,0xf8,
+ 0x0e,0x2a,0xb6,0xb1,0x32,0x76,0x10,0x79,0x79,0xb7,0x22,0x22,0xa3,0x76,0x19,0xc7,
+ 0x6e,0x32,0x78,0xad,0x9d,0x36,0xd9,0xe7,0x0d,0xe7,0xcd,0x30,0x00,0x92,0x11,0x9c,
+ 0x8d,0xab,0xd0,0x7f,0x3e,0x95,0x4e,0x29,0xa0,0x82,0x48,0xe4,0x4f,0xde,0xc6,0x8d,
+ 0xb3,0x32,0x0e,0x65,0x38,0xe7,0x1e,0xd5,0x5e,0x4b,0x99,0x2f,0x6e,0x26,0xde,0x8f,
+ 0x1c,0x6c,0xc0,0xb9,0x88,0x10,0xff,0x00,0x40,0x3f,0xcf,0x41,0x54,0xda,0x4a,0xec,
+ 0x97,0x25,0x77,0x62,0xed,0xcd,0xec,0x5a,0x6b,0xcf,0x6b,0x68,0x3c,0xe4,0x99,0xc2,
+ 0xbc,0x6b,0x1e,0xed,0xa3,0x8c,0x12,0x3b,0x1a,0x8e,0x4d,0x46,0x4b,0x7b,0x88,0x61,
+ 0x9a,0x39,0xa6,0x8c,0x21,0x76,0x8c,0x9d,0x9b,0xc1,0x1e,0xbe,0x94,0xfd,0x3e,0xc2,
+ 0x69,0xad,0x1e,0xee,0x14,0xbc,0x59,0x4b,0x31,0x40,0xb1,0x90,0xcd,0x83,0x8c,0x32,
+ 0xd7,0xa8,0x78,0x27,0xe1,0x86,0xa3,0xae,0xde,0x5b,0xdd,0xcb,0x71,0x3c,0xd1,0xaa,
+ 0xed,0x05,0xa3,0x18,0x0b,0xdb,0x23,0xd7,0xde,0x93,0x9c,0x52,0xe6,0x93,0x45,0xc6,
+ 0x17,0x69,0x27,0xad,0xcf,0x1e,0xb7,0x5d,0x42,0xe9,0x64,0xfb,0x3d,0x92,0x4b,0xb8,
+ 0x8c,0xa8,0x3c,0xc4,0x01,0xfe,0x13,0xf4,0xeb,0x5e,0xa1,0xe0,0xbf,0x00,0x6a,0x1a,
+ 0xc4,0x52,0x35,0xee,0x85,0x85,0x59,0x03,0x19,0x6e,0x98,0xa6,0xf5,0x23,0x82,0x07,
+ 0x7e,0xb5,0xf4,0x3f,0x86,0x3e,0x12,0x68,0x9a,0x2c,0xcb,0xaa,0x5f,0x5a,0x23,0xea,
+ 0x88,0x58,0xb3,0xa8,0xdc,0xb8,0x07,0x90,0x46,0x70,0x7b,0x76,0xaf,0x58,0x58,0x61,
+ 0x78,0x9a,0x31,0x68,0x2c,0xec,0x43,0x2b,0x18,0xd8,0x1c,0x13,0xd4,0x00,0x3a,0x81,
+ 0xde,0xb8,0x6a,0xd4,0xbb,0xb4,0x7a,0x19,0xce,0x0d,0x2b,0x23,0xcd,0xbc,0x31,0xf0,
+ 0x8b,0x45,0xb3,0x4b,0xc9,0xf5,0x2d,0x3a,0x3b,0xbb,0x56,0x11,0xb4,0x05,0x80,0x5f,
+ 0xb2,0xb8,0xeb,0x8c,0x1f,0xbb,0xef,0xeb,0x5e,0xb9,0x67,0x63,0x00,0x48,0x12,0x11,
+ 0xb6,0x55,0x24,0x29,0x74,0x03,0x6f,0x61,0x83,0xe9,0xc5,0x5c,0xb3,0x37,0xa8,0xb3,
+ 0xc3,0x1c,0xa4,0x70,0x1b,0x3e,0x83,0x3d,0x3d,0xc5,0x5e,0x88,0x91,0x28,0x2d,0x1a,
+ 0xed,0x03,0xc9,0xda,0x46,0x33,0xee,0x00,0xe9,0x59,0x36,0xde,0xa9,0xff,0x00,0x5e,
+ 0x85,0xc6,0xc9,0xde,0x3f,0xd7,0xa0,0xb8,0x97,0xce,0x26,0xe0,0xa4,0x51,0x48,0xc1,
+ 0x09,0xc6,0x76,0x01,0xe9,0x8a,0x59,0x50,0xf9,0xe9,0xfb,0xa6,0x8e,0x35,0x1b,0x43,
+ 0x81,0x96,0x38,0xf7,0xa8,0x56,0x40,0xd0,0x47,0x0a,0x2c,0x92,0x66,0x4c,0xb3,0x10,
+ 0x46,0xd1,0x9e,0xc4,0xfd,0x0d,0x5e,0x51,0xe5,0xaf,0xdb,0x18,0x42,0x57,0x19,0x0a,
+ 0x09,0xc8,0x1f,0x4e,0xf4,0x6a,0x95,0xec,0x16,0xd6,0xef,0x64,0x32,0x19,0x87,0x98,
+ 0xf3,0x2b,0x8d,0xca,0xa1,0x76,0x3c,0x78,0x52,0x47,0x62,0x7f,0xad,0x6a,0x71,0x38,
+ 0x12,0x05,0x03,0xcc,0x00,0x30,0x00,0x9d,0xbe,0xa7,0x27,0xd3,0x34,0xb6,0x76,0x71,
+ 0x4b,0x03,0x79,0xd2,0xee,0x04,0x16,0x25,0x81,0x24,0x7b,0x81,0xd4,0xd3,0xe6,0x8a,
+ 0x3b,0x93,0x6e,0x6d,0x75,0x03,0x02,0xa1,0x2c,0xea,0x23,0x38,0x6c,0x7a,0x7d,0x78,
+ 0xa4,0xfb,0xbd,0xc3,0x56,0x90,0xfb,0x78,0xc8,0xf3,0x65,0x69,0xee,0x65,0x70,0x32,
+ 0x08,0x40,0xd8,0x03,0xbf,0xd3,0x8a,0xb2,0x18,0xc8,0x8a,0x77,0x95,0x66,0x19,0x06,
+ 0x38,0xf0,0x7e,0xa0,0x0e,0x29,0x63,0x89,0x23,0x64,0x6b,0x42,0xe9,0x70,0xc3,0xac,
+ 0x83,0x3b,0x7d,0x82,0xfa,0x53,0xfc,0xc9,0x62,0x46,0x04,0xa1,0x81,0x50,0x33,0x61,
+ 0x7e,0x60,0xb9,0xea,0xa3,0xf5,0xac,0x6c,0xad,0x6d,0x02,0x4e,0xda,0xbd,0x8d,0x4b,
+ 0x74,0x72,0xdf,0xba,0x26,0x49,0x62,0x19,0x0f,0x9c,0x97,0xe0,0x75,0x23,0xf9,0x54,
+ 0xe9,0x3f,0x96,0x24,0x68,0xf7,0xa4,0x6e,0x30,0xa7,0x1c,0x1f,0x50,0x4d,0x67,0xaa,
+ 0x83,0x19,0x9a,0x09,0xe4,0x5d,0x8d,0x84,0x84,0x28,0x05,0x81,0xee,0x7e,0xb5,0x6d,
+ 0x70,0x89,0x0c,0xf7,0x4e,0xbe,0x56,0xe0,0xcf,0x18,0x1c,0x37,0xf8,0x74,0xeb,0x54,
+ 0xae,0xde,0xf7,0x1b,0xd1,0xb4,0xd7,0xcc,0x58,0xee,0x66,0x95,0xfc,0x87,0x7c,0x32,
+ 0x28,0x0c,0xe4,0x7d,0xff,0x00,0x6c,0x7e,0x55,0x65,0x0a,0xf9,0x8e,0x1d,0xbe,0xd8,
+ 0x80,0x6d,0x46,0xc6,0x4a,0xf1,0xc8,0xf6,0x1c,0xd5,0x29,0x0c,0x32,0xcb,0xbe,0x68,
+ 0xbc,0x98,0x54,0x92,0xdb,0x57,0x27,0x9e,0x80,0x55,0xad,0x90,0xee,0x40,0xff,0x00,
+ 0x69,0x40,0x06,0xd0,0x43,0x61,0x4f,0xd5,0x47,0xf8,0xd4,0xe8,0xd6,0xaf,0xfe,0x09,
+ 0x31,0x7a,0x3b,0x34,0xd1,0x20,0x8d,0xbe,0xca,0x18,0x34,0xd1,0x5d,0x96,0x3b,0x42,
+ 0x63,0x2e,0x07,0xad,0x53,0x69,0xac,0x45,0xd1,0x8a,0xe6,0x63,0x3c,0xee,0xdb,0x52,
+ 0x43,0x90,0x48,0x03,0x38,0x23,0xb6,0x29,0xaa,0x91,0x34,0xf1,0xc9,0x09,0xbc,0x68,
+ 0xa2,0x20,0x2e,0xe4,0x2a,0x54,0x93,0xce,0x3d,0x47,0x5a,0xb4,0xc9,0x15,0xcb,0x19,
+ 0x77,0x5b,0x24,0x6e,0xce,0x50,0x0f,0xbc,0x47,0xb8,0xed,0xd3,0x8c,0xd3,0xbb,0x7b,
+ 0x83,0xb3,0x56,0x44,0xfb,0xdf,0x1b,0xcb,0x90,0x48,0x0b,0x19,0x07,0xe6,0x20,0xf1,
+ 0x82,0x07,0xe3,0x53,0x44,0x2d,0xe2,0x97,0x6b,0x96,0x98,0x9e,0x58,0x4a,0x84,0x80,
+ 0x71,0xd8,0xfe,0x55,0x25,0x9b,0x18,0x49,0x40,0xca,0x51,0x41,0x20,0x30,0x3f,0x37,
+ 0xf8,0xd3,0xd5,0x58,0x98,0x21,0x32,0xfe,0xf5,0xb2,0x57,0x2a,0x46,0xe2,0x79,0xe4,
+ 0xd6,0x5a,0xad,0xcd,0x6d,0xd5,0x12,0x45,0x05,0xc2,0x4a,0x9e,0x7b,0xca,0x24,0xc8,
+ 0x90,0x01,0xce,0xe5,0xf7,0xfd,0x2a,0x47,0xb6,0x92,0x69,0x59,0x2c,0xed,0xf1,0x8e,
+ 0x46,0x0e,0x00,0xf7,0x19,0xef,0xd6,0x9e,0x66,0x85,0xd2,0x4b,0x9b,0x97,0x73,0x6d,
+ 0x1a,0x9d,0x9b,0x46,0x19,0x8f,0xf5,0xad,0x08,0x6c,0xcd,0xc2,0x45,0x24,0xcd,0x21,
+ 0x02,0x30,0xf9,0x56,0x2a,0x5c,0x9f,0x51,0xed,0xcd,0x3b,0x59,0xdc,0x69,0xdd,0xe9,
+ 0xa9,0x96,0xe1,0x43,0x4f,0x0c,0x52,0x38,0x90,0x20,0x70,0xc1,0x0a,0x8e,0x9d,0x30,
+ 0x6a,0x58,0x04,0x4c,0xb1,0xf9,0x13,0x94,0x62,0xe1,0xca,0x67,0x24,0x9f,0x5c,0x1e,
+ 0xf5,0xb0,0xd1,0xac,0x0f,0x1c,0x2c,0xad,0x32,0x95,0xdd,0xb1,0x81,0xe3,0xd4,0x66,
+ 0xaa,0xc3,0x11,0x9a,0xec,0x4a,0x55,0x8c,0x4a,0x33,0x93,0xf2,0xed,0xe3,0xa6,0x3b,
+ 0xd0,0xae,0xb7,0x12,0x77,0x76,0x4f,0x52,0xd9,0x64,0x9c,0xdc,0xdc,0x46,0x85,0x7e,
+ 0x65,0x2d,0x1b,0xf5,0x93,0xdf,0x1e,0xb5,0x35,0xb4,0x8f,0xb6,0x56,0x04,0xc7,0xe6,
+ 0x86,0x50,0x1c,0x10,0x10,0x67,0xa7,0xd6,0xa0,0x33,0xc9,0x20,0x32,0x46,0x6e,0x1d,
+ 0x90,0x9c,0xb0,0x4c,0x02,0x3a,0x62,0xa2,0x86,0x49,0x64,0x64,0x96,0x26,0x26,0x31,
+ 0xc2,0xaa,0x0c,0x14,0x3e,0xa4,0x1e,0xf5,0x3d,0x3b,0x06,0xb7,0xba,0xd4,0x0a,0xcc,
+ 0xb1,0x3b,0xbc,0x52,0xb9,0x51,0xb5,0x19,0x46,0x77,0x73,0xd0,0x9f,0x4e,0x2b,0x5a,
+ 0xda,0xdb,0xcd,0x02,0x43,0x19,0x2a,0xa7,0x20,0x16,0xc6,0x78,0xe8,0x05,0x40,0x91,
+ 0x32,0xc7,0x11,0x57,0x31,0x6d,0x62,0xc5,0xbc,0xdc,0x93,0x9f,0x5f,0xd6,0xb6,0x7c,
+ 0xa0,0x86,0x38,0x87,0xde,0x03,0x71,0x75,0x5e,0x06,0x7a,0x80,0x6a,0x1b,0x57,0xb2,
+ 0x60,0xf4,0x6f,0xb6,0x83,0x1d,0x84,0x65,0x43,0xc8,0x0a,0xa9,0xf9,0x16,0x43,0x92,
+ 0x3d,0x87,0xa5,0x49,0x13,0x12,0x03,0xc3,0x1c,0x6b,0x1b,0x95,0xc1,0x27,0x1c,0x63,
+ 0x9c,0x8f,0xce,0xa7,0x68,0x8c,0x71,0x34,0x4a,0x16,0x42,0x41,0x21,0x08,0xf9,0x9f,
+ 0x8e,0xb9,0xf6,0xa6,0x44,0xa6,0xdc,0xc6,0xaf,0xe6,0x3c,0xb8,0x20,0x06,0x00,0x67,
+ 0xdc,0xd4,0xad,0x37,0x1a,0xbd,0xda,0x5b,0x0e,0x40,0x51,0x23,0x58,0x83,0x95,0x2e,
+ 0x59,0x25,0xd9,0xc0,0x18,0xe4,0x1a,0x6a,0x5a,0x5b,0xee,0x73,0x25,0xcb,0x21,0x07,
+ 0x7a,0xa4,0x40,0x8f,0x34,0xe7,0xa1,0x3e,0xde,0xd4,0xbe,0x60,0x62,0x12,0x5d,0xe6,
+ 0x47,0x24,0x04,0x50,0x76,0xa8,0x15,0x64,0x24,0x4c,0xd1,0x31,0xdf,0x34,0xaa,0x0b,
+ 0x21,0x04,0x8c,0x7d,0x07,0xa7,0x34,0xaf,0x6d,0xc4,0x9a,0x76,0x4b,0x61,0x66,0xb7,
+ 0x61,0x27,0xda,0x21,0x51,0x24,0x2c,0x32,0x11,0x46,0x08,0x6f,0x7f,0x7a,0x8e,0x18,
+ 0xaf,0x1d,0xe2,0x87,0x6a,0x99,0x08,0x3b,0x41,0xc6,0x19,0x7d,0x2b,0x46,0xdd,0x7e,
+ 0x6f,0x24,0xc8,0x50,0x48,0x01,0x5c,0x1e,0x5b,0xfd,0x9c,0x76,0xab,0xcf,0x04,0x8f,
+ 0x19,0x8f,0x6c,0xa2,0x3d,0xc4,0xb0,0x55,0xc0,0x03,0xbf,0x34,0xd7,0x92,0x06,0xf4,
+ 0xb5,0x8c,0x3b,0x98,0x5f,0xc9,0x05,0x98,0x46,0x77,0x63,0x69,0x41,0xf2,0xf1,0xd8,
+ 0xfa,0x55,0x24,0xb0,0x9a,0xe7,0xcb,0xc4,0xad,0x96,0x62,0x08,0x20,0x2b,0x37,0xb8,
+ 0x3d,0xeb,0xa9,0x96,0x03,0xe4,0x34,0x6f,0x14,0x6b,0x1b,0x2e,0xd8,0xcb,0x92,0x0f,
+ 0x5e,0x32,0x69,0x2d,0xed,0x84,0x09,0x9d,0xd2,0x48,0xe5,0x71,0x2b,0x81,0xfe,0xa9,
+ 0xc7,0x65,0xf6,0xe9,0x43,0xbb,0x57,0x46,0x4e,0xc9,0x9c,0xab,0xe9,0x91,0xa5,0xc8,
+ 0x99,0xa0,0x95,0x95,0x57,0x12,0x12,0x39,0x71,0xed,0xed,0x55,0xe7,0xb1,0x49,0x6d,
+ 0xef,0x3c,0x88,0xfc,0xc6,0xf9,0x70,0xa1,0x70,0x47,0xbe,0x3b,0x62,0xbb,0x06,0x80,
+ 0x4c,0xa1,0x56,0x59,0x95,0x88,0x3b,0x5c,0x2e,0x48,0x3e,0xf4,0xe1,0x6f,0x1c,0x4e,
+ 0xad,0x34,0xd2,0xc0,0xcc,0xbc,0xca,0x0f,0x41,0xec,0x3d,0xea,0xe3,0x7b,0x5d,0x82,
+ 0x4d,0x6a,0x70,0x56,0x3a,0x0c,0xc7,0xed,0x6c,0xd1,0xcb,0x3e,0x79,0x8d,0x33,0xd7,
+ 0xb6,0x0f,0xa7,0x4a,0xe4,0x75,0xbd,0x13,0x4f,0xb5,0x84,0x5c,0xbb,0xb3,0xba,0x80,
+ 0xa2,0x24,0x5f,0xbc,0x7b,0x86,0x35,0xed,0xf1,0x89,0x04,0x2b,0x6d,0xe4,0xc8,0x1a,
+ 0x42,0x50,0x3c,0x68,0x77,0x20,0xec,0x4f,0xe7,0x5e,0x63,0xe3,0x0b,0x35,0xb7,0xd3,
+ 0x2f,0xd9,0x10,0x5b,0xf9,0x2b,0xb8,0x31,0x7c,0xb3,0x1c,0xf7,0x1e,0xf9,0xaf,0xb6,
+ 0xe1,0x28,0x73,0xe2,0xa1,0x1b,0xea,0xdd,0x8f,0x9a,0xe2,0x1a,0xce,0x96,0x1a,0x53,
+ 0x4b,0x64,0xd9,0xf2,0xaf,0x89,0x2e,0x61,0xb9,0x9a,0x25,0x8a,0x05,0x81,0x2d,0xe4,
+ 0x25,0x63,0x50,0x06,0x38,0xe7,0x35,0xcc,0xb2,0x31,0x55,0xb9,0x1e,0x60,0x57,0x25,
+ 0x55,0x00,0xe0,0x0f,0x5c,0x56,0x97,0xdb,0x56,0x27,0x95,0xaf,0x1e,0x21,0x79,0x2b,
+ 0xef,0x78,0x99,0x0f,0xee,0xfd,0x85,0x56,0xb6,0xd8,0x43,0x34,0x2d,0x22,0x96,0xea,
+ 0x4b,0x67,0x3e,0xc3,0xd0,0x73,0x5f,0xdc,0xd9,0x75,0x38,0xd3,0xa3,0x1a,0x71,0x7a,
+ 0x24,0x7f,0x20,0xe3,0xaa,0xca,0x75,0x5d,0x49,0xbd,0x58,0xb1,0x46,0x52,0x16,0x95,
+ 0x0c,0x41,0xcf,0x47,0x55,0xc6,0x0f,0x61,0x9a,0x8f,0xfd,0x60,0x39,0x8f,0x0e,0x83,
+ 0x00,0xb3,0x60,0x63,0xb9,0x35,0x79,0x23,0x90,0x85,0x8c,0x2c,0x6a,0xca,0x4b,0xa9,
+ 0x23,0x21,0xbd,0x8d,0x56,0xc4,0x85,0x55,0xa6,0x89,0x1c,0x4c,0x19,0x98,0x29,0xca,
+ 0x81,0xe9,0x5e,0x82,0xd3,0x46,0x79,0xb7,0xd6,0xec,0xad,0x2c,0x71,0x43,0xb9,0x6e,
+ 0x5b,0xef,0x36,0xe2,0x4a,0xe7,0x77,0xbe,0x7d,0x29,0xb1,0xbf,0x97,0x2c,0xd1,0x42,
+ 0x60,0x94,0x0c,0x15,0xc8,0xe4,0x91,0xd8,0x03,0xf8,0x54,0xf2,0xc4,0xd2,0xed,0x46,
+ 0x78,0xd0,0x07,0x00,0x10,0x00,0x03,0x9e,0xf5,0x4a,0x79,0x5a,0x07,0xfb,0x43,0xca,
+ 0x7c,0xdd,0xc5,0x87,0x00,0xf7,0xe8,0x2a,0x2a,0xcd,0x25,0xa9,0xb5,0x3b,0xc9,0xd8,
+ 0xa9,0x73,0x71,0xb0,0xba,0xc7,0x19,0xf2,0xc2,0x92,0xe4,0x8e,0x5b,0x3d,0x4e,0x3b,
+ 0x0a,0xe4,0x6e,0x89,0x80,0x30,0x81,0xcc,0xae,0x18,0x2a,0xbc,0x87,0x84,0x5c,0xf2,
+ 0x6b,0x6e,0xfe,0x48,0xcc,0xb7,0x0b,0x14,0xc6,0x62,0xca,0x37,0x6e,0xc8,0x31,0x82,
+ 0x7d,0x3d,0x6b,0x9e,0x9c,0xc6,0x8c,0xd0,0x22,0xc9,0x33,0x91,0x9f,0x90,0xf2,0x4e,
+ 0x3b,0x9a,0xf2,0xab,0xe2,0x22,0xde,0x87,0xbf,0x81,0xa3,0x6e,0x86,0x14,0x92,0x49,
+ 0x34,0xf2,0x62,0xe1,0x99,0x09,0x2c,0x02,0x81,0x83,0xcf,0x51,0x51,0x35,0xd4,0x50,
+ 0xc4,0x89,0x71,0x26,0xc8,0x99,0x4b,0x02,0x14,0x6d,0x53,0xfd,0xd3,0xdf,0x9a,0x1d,
+ 0xfe,0x79,0x22,0x8d,0x23,0x24,0x10,0x36,0xa8,0xc9,0x8f,0xf1,0xf4,0xe6,0xb0,0xae,
+ 0x15,0x71,0x38,0xfb,0x9d,0x94,0x96,0xc8,0x18,0xf6,0xf4,0xed,0x5e,0x3d,0x5a,0xd6,
+ 0x7a,0x6c,0x7d,0x4d,0x0a,0x2a,0x4a,0xdd,0x0d,0xcf,0xed,0x0b,0x67,0x89,0x52,0x38,
+ 0xf6,0x4c,0x79,0x67,0x2b,0xc1,0x20,0xf6,0xa7,0x25,0xc2,0x4b,0x16,0x51,0x97,0xcb,
+ 0x2c,0x18,0x02,0x39,0x2b,0x9e,0x40,0xae,0x59,0x8e,0xc8,0xfc,0xe8,0xf2,0xcd,0x90,
+ 0x58,0x32,0x1d,0xcb,0xce,0x3f,0x2a,0xb5,0xe6,0x4b,0x1c,0x91,0xf9,0x1b,0x38,0x00,
+ 0x31,0x75,0x1f,0x2f,0x1d,0xbd,0xab,0x9d,0x57,0x77,0xd8,0xe9,0x96,0x0d,0x25,0xa1,
+ 0xd0,0x3d,0xc2,0x22,0xa3,0x79,0x42,0x71,0x9e,0x40,0x53,0x8c,0xf5,0xe7,0xf0,0xa9,
+ 0xad,0x9a,0xde,0x46,0x3e,0x74,0x72,0xec,0x60,0x64,0x20,0x92,0x18,0x8e,0xa3,0x8a,
+ 0xc3,0x17,0x8f,0xb4,0xf9,0xb2,0x61,0x49,0xc0,0x2a,0xb8,0x0a,0x7e,0x9f,0xd6,0xb5,
+ 0x61,0xb9,0x53,0x1b,0x48,0x64,0x96,0xe1,0x11,0xb0,0xca,0x0f,0xce,0x47,0xfb,0x27,
+ 0xf1,0x15,0xdb,0x4e,0x69,0xbb,0xdc,0xe4,0xa9,0x45,0xa4,0x5f,0x4f,0x2c,0xc6,0xe5,
+ 0x81,0xde,0xee,0x1d,0x57,0x39,0x2b,0xef,0x5b,0x88,0xa8,0x16,0x36,0x69,0x43,0x86,
+ 0x60,0xc5,0x81,0x3f,0x37,0x6e,0x07,0x63,0x59,0x6b,0x25,0xbf,0x99,0x6b,0xb1,0x64,
+ 0x89,0x9d,0x19,0xd8,0xe3,0x88,0xf9,0xe8,0x4d,0x6c,0xc4,0x1d,0x84,0x46,0x23,0x10,
+ 0x66,0x04,0x72,0xa4,0xee,0x39,0xee,0x7d,0x79,0xaf,0x4e,0x8e,0xbb,0x9e,0x4e,0x2a,
+ 0x4d,0x2b,0x33,0x4e,0x06,0xc4,0x9b,0x80,0x2c,0x19,0x48,0xdc,0x0f,0x2a,0x0f,0x62,
+ 0x2a,0xc4,0x7e,0x5a,0x02,0x92,0xc7,0x1c,0x51,0x2e,0x46,0x58,0x72,0x78,0xf4,0xa6,
+ 0xc1,0x6e,0xcf,0x98,0xa4,0x91,0x43,0x2a,0x86,0x63,0x8c,0x63,0xdf,0x3f,0x81,0xab,
+ 0x70,0x46,0x50,0xa7,0x96,0x18,0x2b,0x36,0x00,0x60,0x09,0x7f,0xf3,0x9a,0xf5,0x69,
+ 0xed,0xcc,0x8f,0x0e,0xac,0x92,0xd8,0x8f,0x7f,0x9b,0xb2,0x64,0x6c,0x42,0xe3,0xe4,
+ 0x52,0x0f,0xc8,0x07,0xa8,0xfc,0xaa,0x78,0xa0,0x67,0x69,0x11,0x01,0x91,0x80,0xc8,
+ 0x52,0xa7,0xe5,0x1d,0x73,0x9a,0x91,0x6d,0xe0,0x42,0xad,0x82,0x58,0x12,0xd9,0x07,
+ 0x18,0xe7,0xa0,0x14,0xf9,0x0f,0x98,0x10,0x99,0xa5,0xb7,0x42,0xc0,0x15,0x66,0xc8,
+ 0x61,0x9e,0x87,0x1d,0xeb,0xa5,0x6a,0xb4,0x38,0xe5,0x34,0xf4,0x43,0x7c,0xa8,0x58,
+ 0x2e,0xd7,0x99,0xc3,0xf3,0x80,0xd8,0xcb,0x75,0xc9,0xa1,0x11,0x5c,0x07,0x2f,0xb4,
+ 0x29,0xdb,0x21,0x23,0x18,0xe3,0xd2,0x9c,0x30,0x8a,0xec,0x77,0x37,0xca,0x43,0x48,
+ 0xbd,0xbe,0xa0,0x54,0xab,0xe5,0x2c,0x4a,0x1c,0xa8,0x4d,0xd8,0x2b,0xbb,0x39,0xcf,
+ 0xf5,0xaa,0xb5,0xcc,0x5c,0x99,0x54,0x05,0x2b,0xbc,0x33,0xc8,0xa0,0x65,0x50,0x8e,
+ 0x87,0xd4,0x9a,0x0c,0x32,0xce,0x63,0x48,0xc3,0xc5,0x32,0x92,0x4a,0xa3,0x00,0x1b,
+ 0x8e,0xbe,0xe7,0xad,0x4a,0x58,0x49,0x0b,0x34,0x78,0xda,0xac,0x15,0x8b,0x1e,0x83,
+ 0xfc,0xe6,0x9e,0xe3,0xe7,0x67,0x3b,0x63,0x40,0xdb,0x95,0x76,0xe7,0x8f,0xc3,0xf1,
+ 0xaa,0x5a,0x3b,0xfa,0x87,0x33,0x5a,0x91,0xac,0x03,0xcc,0x01,0x63,0x81,0xa4,0x75,
+ 0x19,0x3e,0x84,0x7b,0x74,0xcf,0x4a,0x8e,0x34,0x76,0x94,0x01,0x12,0xec,0x04,0xe0,
+ 0x8c,0x02,0xc3,0xb8,0x14,0xbb,0xa3,0x2e,0x5e,0x34,0x96,0x58,0x40,0xc9,0x20,0x60,
+ 0xa8,0xf5,0xc5,0x3d,0x18,0x7c,0x87,0x63,0xa3,0x02,0x19,0x0a,0x9e,0xb9,0x1e,0xff,
+ 0x00,0x5a,0x2d,0x6d,0x3a,0x8d,0xb7,0xd4,0x8a,0xe0,0x19,0x9a,0x1c,0x08,0xe2,0x65,
+ 0x24,0x92,0x17,0xee,0xaf,0xa6,0x3b,0x9e,0xb4,0x60,0x22,0xbb,0x4c,0xa8,0xc0,0x80,
+ 0x76,0x97,0x3c,0x0e,0xdc,0xfa,0xd5,0x97,0xb9,0x56,0x05,0x4b,0x15,0x0a,0xd9,0x6d,
+ 0xcb,0x8c,0x1f,0x4c,0xfb,0xd0,0x52,0x20,0xa1,0x23,0x5f,0x33,0x7f,0x24,0x8e,0x8a,
+ 0x7a,0xf1,0x50,0xed,0x60,0xe6,0x76,0x49,0x95,0x11,0x4f,0x9f,0xbc,0x46,0xe0,0x9c,
+ 0xb3,0x33,0x72,0x00,0x23,0xa6,0x2a,0x48,0x95,0x84,0x2b,0x95,0x2c,0x81,0x98,0x30,
+ 0xc7,0x1c,0x74,0x6c,0x55,0x81,0x39,0x28,0xc2,0x28,0xd9,0xca,0x7c,0xae,0x49,0x23,
+ 0x03,0xfb,0xc7,0xf3,0xa6,0x48,0x91,0xed,0x63,0x0c,0xa5,0xa0,0x27,0x6a,0x93,0xfc,
+ 0x27,0xbf,0xe7,0x4f,0x96,0xca,0xe0,0xe4,0xdb,0xd4,0xaf,0x3a,0xb9,0x91,0x8c,0x6e,
+ 0x25,0x84,0xf2,0x59,0x46,0x02,0x8f,0x42,0x29,0xca,0xaf,0x1a,0x2c,0x0c,0x18,0xf3,
+ 0xf3,0x33,0x8c,0xe5,0x7d,0xaa,0x79,0x3f,0xe5,0xbd,0xc3,0xa1,0x57,0x2a,0x0e,0xc8,
+ 0xc8,0xda,0x38,0xc0,0xcf,0xbd,0x43,0x8f,0x2d,0x08,0x4f,0x94,0x90,0x36,0x86,0x27,
+ 0x29,0x9e,0xd9,0xac,0x5a,0x6b,0x46,0x3e,0x66,0xd5,0x81,0xd8,0x9d,0xb1,0xab,0x80,
+ 0xaa,0x70,0x48,0x51,0x93,0xef,0x50,0x94,0x32,0xb5,0xc3,0x86,0x45,0x8c,0x31,0x08,
+ 0xb9,0x3d,0x31,0x4a,0xdb,0x64,0x91,0x4f,0x98,0xe8,0x89,0xc1,0xe7,0x2c,0xc7,0x1d,
+ 0xcf,0xa7,0xf8,0xd4,0xd2,0x33,0x81,0x2b,0x31,0x8c,0x60,0x85,0x52,0x46,0xde,0x4f,
+ 0xa6,0x2a,0x24,0xb4,0xb0,0xd6,0x9b,0x10,0xbe,0xd4,0x89,0x26,0x21,0x5e,0x3c,0x6d,
+ 0x27,0xae,0x46,0x31,0xd2,0x9e,0x21,0x8e,0x48,0xd1,0x58,0xfe,0xf0,0x49,0x94,0x60,
+ 0x00,0x18,0xc7,0x43,0xf9,0xd4,0x65,0xe4,0x85,0xdc,0x3a,0x3b,0x28,0x20,0x31,0x55,
+ 0xeb,0xcd,0x58,0x78,0xe4,0xd8,0x89,0x16,0xd3,0x03,0x12,0x49,0x51,0xca,0x9c,0xfa,
+ 0xd4,0xc9,0x36,0x92,0x29,0xbb,0x34,0x54,0x71,0x1f,0x99,0x20,0x50,0x59,0xd0,0x82,
+ 0x1b,0x04,0xee,0xf5,0x18,0xfc,0x2a,0x10,0x8c,0xd8,0x71,0x1b,0x27,0x19,0x55,0x00,
+ 0x63,0x6f,0xf9,0x35,0x61,0xd8,0xab,0xf9,0x3b,0x40,0x51,0xc8,0x7d,0xc7,0x0d,0xfe,
+ 0xce,0x7f,0x2a,0x4f,0xb3,0xa4,0x99,0x0d,0x33,0xab,0xa0,0xda,0x06,0xe1,0x84,0xff,
+ 0x00,0x1a,0xe5,0x95,0xbe,0x24,0x6a,0x9e,0x80,0xa9,0x84,0x90,0x4a,0x16,0x04,0x58,
+ 0x7c,0xc0,0xe4,0x83,0xb3,0x27,0xb5,0x42,0xc1,0xc8,0xc3,0x32,0xe7,0xd8,0x0f,0x9b,
+ 0x8f,0x4f,0xeb,0x53,0x15,0x9a,0x2f,0x2d,0x8c,0x42,0x58,0x9b,0x81,0x23,0x01,0xf3,
+ 0x63,0xb6,0x3d,0x2a,0x32,0xeb,0x87,0x7d,0x87,0x7b,0x0c,0x12,0x4e,0x00,0xe7,0xa0,
+ 0xa9,0xa8,0x92,0xdc,0xa8,0xbb,0xbd,0x08,0x27,0x8c,0x7e,0xed,0x80,0xf3,0x10,0xaf,
+ 0x00,0x8f,0x9b,0x77,0xa5,0x66,0xc5,0x2c,0x57,0x38,0x00,0xc6,0xcc,0x8f,0x90,0x54,
+ 0x8c,0x9f,0x62,0x2b,0x42,0xee,0x45,0xf2,0xb6,0x3c,0x92,0x44,0x8a,0x01,0x2a,0xa4,
+ 0x9d,0xa7,0x3f,0xc2,0x7f,0x0a,0xa5,0xa6,0x23,0xb5,0xc8,0x22,0x05,0x46,0x70,0x5c,
+ 0x30,0x00,0x17,0x6f,0x56,0x3d,0xb1,0x5f,0x95,0xf8,0x93,0x8f,0x86,0x1f,0x01,0x39,
+ 0xc9,0xea,0x8f,0xd2,0xbc,0x34,0xcb,0xe5,0x8a,0xcc,0xa1,0x4f,0xa7,0x52,0xc2,0x16,
+ 0x17,0xc5,0xe0,0x3b,0xae,0x18,0xec,0x74,0x2b,0x8d,0xe7,0xb0,0xc7,0x4c,0x57,0x98,
+ 0x7c,0x50,0x96,0x08,0x73,0x69,0x3a,0xf9,0xa4,0x7f,0xad,0x68,0xdb,0x25,0x1b,0x1f,
+ 0x70,0x11,0xdb,0x91,0x5e,0xb2,0xb7,0x71,0xda,0xcb,0x3c,0xf7,0x8c,0x2d,0x22,0x45,
+ 0x20,0x3b,0x60,0x2b,0x49,0x8e,0x09,0x3f,0x95,0x7c,0xa7,0xe3,0x1d,0x5a,0xea,0xeb,
+ 0x5b,0xd4,0xb4,0xf9,0x5a,0x4d,0xe6,0x40,0x23,0x9d,0x48,0x29,0x23,0x60,0x1c,0x81,
+ 0xd3,0xd6,0xbf,0x88,0x70,0x3f,0xbd,0xae,0xe6,0xdf,0x99,0xfd,0xc9,0x99,0x35,0x47,
+ 0x0c,0xa9,0xbd,0xb6,0x38,0x0f,0x3a,0x25,0x92,0x65,0x89,0x84,0xea,0xcf,0xb9,0x5d,
+ 0xc1,0x04,0x2f,0xf7,0x4f,0xd2,0x89,0x1e,0x36,0x45,0xde,0xce,0x54,0x13,0x93,0x8e,
+ 0x57,0xdb,0x3e,0x9c,0xd4,0xb3,0xc3,0x1e,0x43,0x2c,0x2d,0x14,0xe3,0x3b,0xc1,0x38,
+ 0xc8,0x3d,0x0f,0xf3,0xa8,0x4c,0x22,0x38,0x1c,0x12,0x77,0x13,0xb4,0x64,0x7d,0xff,
+ 0x00,0x6c,0xfb,0x57,0xd2,0xd9,0x2b,0x24,0x7c,0x17,0xc2,0xec,0x3c,0xcd,0x24,0x61,
+ 0x24,0xb7,0xb7,0x4f,0x38,0x9c,0x00,0xdd,0x09,0xed,0x9a,0xa0,0x3c,0xd0,0x5b,0xcd,
+ 0x55,0x0e,0x41,0x06,0x35,0xfb,0xbf,0x85,0x58,0x69,0x23,0x58,0x41,0x7b,0x96,0xde,
+ 0xaa,0x40,0x56,0xec,0xa7,0xd0,0xfa,0xe6,0xa1,0x82,0x21,0x6d,0x08,0x66,0x7b,0xab,
+ 0xc0,0x48,0x90,0x4e,0xe7,0xe6,0x45,0xc6,0x36,0xf3,0xef,0x8a,0x13,0x56,0x2a,0x4d,
+ 0xdc,0x8a,0x72,0xc1,0xbc,0xc0,0x16,0x67,0x11,0x80,0x14,0x0c,0x79,0x7e,0xe4,0xd5,
+ 0x95,0x99,0x15,0x00,0x86,0x35,0x91,0xdc,0xe2,0x32,0x0f,0x04,0xf7,0xa6,0xec,0x01,
+ 0xd5,0x54,0xb1,0x04,0x16,0xce,0x0f,0x4f,0xf6,0xaa,0x05,0x22,0x68,0xce,0xd8,0xde,
+ 0x68,0xce,0x43,0x32,0x1c,0x6d,0x1e,0xdf,0xe3,0x55,0xa6,0xc4,0x4a,0xe9,0xde,0xe6,
+ 0x94,0x91,0xf0,0x24,0x90,0xbb,0x31,0x5d,0xcd,0xb4,0x63,0x77,0xae,0x69,0x77,0xa1,
+ 0xfb,0x0c,0x91,0xbf,0x93,0x21,0x7d,0x9b,0x31,0x93,0x27,0xb0,0xa8,0x7f,0xd1,0xe2,
+ 0x8a,0x01,0xbd,0xd6,0xe4,0x00,0x42,0x64,0x9c,0x8f,0x73,0x52,0xdb,0x30,0x56,0xdf,
+ 0x11,0x67,0x85,0x8e,0x63,0x95,0x9b,0x07,0x77,0x5e,0x3d,0x29,0xe9,0xbb,0x33,0x6d,
+ 0x26,0xd2,0x64,0x87,0xc9,0x32,0xc9,0x07,0xce,0x42,0xbe,0x11,0x40,0xc6,0x70,0x7f,
+ 0x8b,0xd3,0xbd,0x3a,0x1f,0x35,0x65,0x3e,0x6e,0x50,0x6f,0x3b,0x4a,0x81,0xc7,0xa0,
+ 0x02,0x9b,0x29,0xb9,0x31,0xc9,0x00,0x78,0x83,0x74,0x46,0x50,0x01,0x1f,0x5c,0xd4,
+ 0x51,0x4b,0x22,0x85,0xb3,0x04,0x24,0x9b,0x77,0x49,0x23,0x0f,0xbb,0xeb,0xc9,0xa4,
+ 0xae,0xd6,0xa3,0x4e,0xd2,0x44,0x97,0x11,0x5c,0x16,0x7b,0x8f,0x2b,0xe4,0x38,0x65,
+ 0x2c,0xf9,0x04,0x7a,0x11,0xeb,0xcd,0x3d,0x67,0xb7,0x51,0xe6,0x0c,0x25,0xa1,0x3b,
+ 0xd9,0x19,0x39,0xdc,0x3f,0xfd,0x54,0xe4,0x8e,0xcc,0x25,0xb7,0x94,0x26,0xf2,0xcb,
+ 0x13,0xb9,0xd8,0x92,0x4f,0xb0,0x35,0x04,0xb2,0x49,0x88,0x0c,0x33,0x08,0x95,0x9c,
+ 0xa1,0xca,0x83,0x90,0x7b,0x1f,0xd6,0xb2,0xde,0xe9,0x93,0x76,0x95,0xdd,0xae,0x68,
+ 0xb5,0xea,0xcc,0x24,0x36,0xf0,0xc7,0x24,0x45,0x43,0xc8,0xa4,0x6d,0xe3,0xb1,0xaa,
+ 0xd2,0x9d,0xf7,0x2c,0xd8,0x2c,0x5d,0x41,0x85,0x40,0x23,0xaf,0x50,0x05,0x2c,0x51,
+ 0x96,0x6d,0xf1,0x2a,0x2f,0x99,0xf2,0x8c,0x31,0x6d,0xd8,0xed,0xed,0x4d,0x8e,0x06,
+ 0x2d,0x6f,0x1a,0xbc,0x92,0x30,0x39,0x0e,0x3f,0x80,0x0e,0xe6,0xa5,0xd9,0xbb,0x83,
+ 0xba,0x63,0xe1,0x46,0x69,0xe5,0x9a,0x78,0xda,0x06,0x0c,0x32,0x8a,0x32,0x08,0xe9,
+ 0x91,0xed,0x56,0xad,0x63,0x94,0xf9,0xb3,0xc6,0x72,0x44,0xa0,0x81,0x90,0x0b,0x0a,
+ 0x7a,0xa4,0x39,0x96,0x45,0x99,0xb6,0xc8,0x32,0x58,0x2f,0xe8,0x7d,0x0d,0x48,0xf0,
+ 0xa6,0x03,0x16,0x22,0x00,0x01,0x27,0x6f,0x47,0xec,0x09,0xfc,0xeb,0x16,0xd0,0xd7,
+ 0x46,0x87,0xfd,0x94,0x47,0x6f,0x77,0x71,0x1c,0x91,0xc5,0xe6,0xb6,0xf5,0x8d,0xdc,
+ 0xb1,0x42,0x0e,0x2a,0x78,0x62,0x90,0x96,0x86,0xed,0x0a,0x66,0x3f,0x33,0x70,0x18,
+ 0xe9,0xd0,0xd4,0x42,0xce,0xea,0x5b,0x81,0x31,0x36,0xf3,0xdb,0xc6,0x40,0x08,0x10,
+ 0x92,0xe7,0xdc,0xf3,0xc5,0x74,0x32,0x24,0x89,0x14,0x6d,0x24,0x61,0xe7,0x41,0xe5,
+ 0xa3,0x60,0x00,0xd9,0xf5,0x03,0xb8,0xcd,0x28,0xdd,0x26,0x9e,0xac,0xcd,0xeb,0xae,
+ 0xc6,0x65,0xba,0x5b,0x42,0x19,0x9a,0x44,0x46,0x72,0x24,0x91,0x51,0x72,0x1d,0x80,
+ 0xe9,0xc7,0x4c,0x8a,0xd9,0x8a,0xd9,0xa4,0x32,0x4e,0xb1,0x85,0x24,0xee,0x11,0x81,
+ 0x80,0xca,0x7a,0xfc,0xdd,0xa9,0x91,0x59,0x5c,0xc9,0x3d,0xb0,0xb4,0x16,0xf1,0x95,
+ 0x04,0xc9,0x1c,0x83,0xa9,0xf5,0x1f,0xe1,0x5b,0x16,0xb1,0x5c,0x25,0xb8,0xb6,0x95,
+ 0x5c,0xc6,0x37,0x10,0x50,0x83,0x93,0x9e,0xa6,0xa9,0x35,0xab,0x47,0x3c,0x93,0x7d,
+ 0x35,0x26,0x8e,0xdd,0x21,0x87,0xcb,0x57,0xdd,0xe6,0x2e,0x47,0x6d,0xbe,0xd9,0xfc,
+ 0xaa,0xe4,0x20,0x45,0x6d,0x6b,0x04,0xa5,0xa7,0xdb,0xd4,0xe0,0x1c,0x8c,0xf0,0x29,
+ 0x0a,0x04,0x31,0xc3,0x02,0x03,0x0a,0xae,0xec,0x93,0xf7,0x8e,0x2a,0x78,0x36,0x2b,
+ 0x2a,0xc4,0xb9,0x68,0xc7,0xcc,0x48,0xe7,0xf2,0xad,0xe3,0xbe,0xda,0x09,0x6a,0x4e,
+ 0xd6,0xf2,0xc7,0xf6,0x97,0xf3,0x67,0x95,0x37,0xe6,0x31,0x8c,0x28,0xc8,0xe9,0x8a,
+ 0xa3,0x26,0xc6,0x50,0xcf,0x1c,0xa1,0x49,0xce,0xd2,0x00,0x0b,0xee,0x6a,0xca,0xc9,
+ 0x21,0x25,0x8b,0x48,0xc1,0x38,0x40,0x73,0xb4,0x9a,0x89,0xd9,0x8a,0xe2,0x48,0x56,
+ 0x71,0x8e,0x65,0x63,0x85,0x1e,0xbc,0x56,0x91,0xb5,0xcc,0x56,0xd6,0x65,0x6f,0xdc,
+ 0x90,0x92,0xa2,0x9d,0xbb,0xb1,0xf2,0x9f,0xbc,0x3d,0x45,0x4a,0x84,0xc6,0xca,0xfb,
+ 0x0a,0xa9,0x6c,0x90,0xe3,0x9f,0x4e,0x0f,0xe5,0x40,0xb3,0x44,0x75,0x96,0x39,0xd9,
+ 0x6d,0x99,0x37,0x15,0x23,0x2a,0xa4,0x0e,0xd5,0x2b,0xda,0x99,0x00,0x43,0x77,0xbc,
+ 0xb0,0xcb,0x48,0xc0,0xe7,0x23,0xa0,0x51,0xd3,0x15,0xa2,0x5d,0xcd,0x55,0xd2,0xd4,
+ 0xaa,0x65,0x96,0x4b,0xbd,0x87,0x60,0x66,0xf9,0x40,0x04,0x0c,0x83,0xdf,0x35,0x78,
+ 0x40,0xbc,0x34,0xcd,0x1c,0x4e,0xa7,0x6a,0x92,0x79,0x23,0xfd,0x91,0xf8,0x0a,0xb1,
+ 0x65,0x60,0x8d,0x12,0x4e,0xb1,0xfc,0xce,0xa0,0xab,0x33,0x0c,0x9e,0x7a,0x81,0xf8,
+ 0x1a,0x97,0xec,0xd1,0x97,0x71,0x00,0x69,0x25,0x2b,0x97,0x66,0x03,0x93,0xeb,0x9e,
+ 0xdd,0x2a,0xd4,0x93,0x76,0x44,0x36,0xd9,0x5b,0x2e,0xe9,0x03,0xba,0x94,0x50,0x48,
+ 0xc2,0x8e,0x01,0x3e,0xa7,0xd6,0x9d,0x1a,0xa2,0xc5,0x2b,0x06,0x59,0x58,0x0c,0x15,
+ 0x61,0xc9,0x3f,0xec,0x9e,0xd4,0xcb,0x99,0x26,0xb5,0x8c,0xab,0x8f,0xdc,0xed,0x0f,
+ 0x21,0x2f,0xf2,0x9f,0xfe,0xbd,0x62,0x0d,0x59,0x27,0x45,0x9d,0x10,0xa9,0x04,0x90,
+ 0x58,0xf2,0x4f,0x6a,0x7d,0x35,0x13,0x76,0x76,0x7b,0x97,0x67,0x76,0xdc,0x54,0xc8,
+ 0x64,0x98,0x00,0x00,0x03,0x38,0xf5,0xe3,0xbd,0x50,0xbb,0xba,0xf2,0x24,0xde,0x44,
+ 0x91,0xae,0x15,0x91,0x82,0x74,0x3d,0xc0,0xa8,0x2e,0x59,0xed,0xdd,0xa5,0x0c,0x8c,
+ 0x76,0x83,0x80,0x4e,0x14,0xd6,0x65,0xce,0xa8,0x24,0x84,0xc9,0x24,0xed,0x3b,0x29,
+ 0x04,0xa2,0x13,0x83,0x83,0xcf,0xe1,0x59,0x37,0x61,0x68,0x9e,0xba,0x15,0xaf,0x35,
+ 0x49,0xe7,0xf3,0xad,0xde,0x36,0x85,0x96,0x5d,0xcc,0xcc,0x06,0x5c,0x1c,0x72,0x3d,
+ 0xbe,0xb5,0x89,0x71,0xe7,0xa3,0x98,0x5a,0x7d,0xca,0x49,0x25,0x88,0x00,0x01,0xe8,
+ 0x00,0xa7,0xdc,0xcb,0x25,0xc3,0x17,0x57,0x31,0xa1,0x6d,0xfb,0x1b,0xab,0x8e,0xc0,
+ 0x54,0x11,0xb1,0x11,0x83,0xfe,0xa7,0x73,0x6d,0x55,0x24,0x1d,0xbd,0xf1,0x49,0x34,
+ 0xb5,0x63,0xd5,0xbd,0x0a,0xf7,0x11,0xc2,0x8a,0xd2,0x4d,0xfb,0xb9,0xe4,0x1b,0x30,
+ 0x0e,0x03,0x7a,0x60,0x76,0x3c,0xd4,0x12,0xc0,0x8b,0x34,0x68,0xfe,0x6e,0x59,0x44,
+ 0x8c,0xb1,0x9c,0x83,0x8e,0xa3,0x77,0x6a,0xb3,0x33,0x29,0x02,0x25,0x73,0xb8,0x36,
+ 0xe7,0x2c,0xbf,0x78,0x7a,0xe4,0xfd,0x2a,0xb0,0x8c,0x80,0x17,0xf7,0x92,0x31,0x7c,
+ 0x17,0x5c,0x7c,0xc0,0xf4,0x18,0xed,0x4e,0xcb,0x4b,0x6e,0x68,0xec,0xba,0x12,0x44,
+ 0xc9,0x00,0x9e,0x45,0x66,0x50,0xf2,0x86,0xda,0xa4,0x10,0xa0,0xf6,0x04,0xfa,0xd2,
+ 0xbc,0x49,0x83,0x22,0x4d,0x80,0x5f,0x6c,0x79,0x6c,0x10,0x3b,0x91,0xed,0xd6,0x96,
+ 0x3f,0x2a,0x25,0x4f,0x2d,0x8a,0x80,0xdb,0x55,0x58,0x70,0x4e,0x3a,0x91,0xe9,0xcd,
+ 0x32,0x68,0xf6,0x42,0x1b,0xf7,0x7d,0x76,0xb1,0xc1,0x25,0x89,0xa5,0xb3,0xb0,0x35,
+ 0xa6,0xa5,0x84,0x0d,0x75,0x23,0x24,0x92,0xb4,0xa4,0x28,0x25,0x98,0x6d,0x04,0x8e,
+ 0xc7,0xd6,0xa3,0xf3,0x21,0x91,0xd1,0x04,0xc2,0x1b,0x86,0x23,0x2c,0x46,0x01,0xfa,
+ 0x0f,0x4e,0xb4,0x05,0xf3,0xad,0xed,0x5a,0x45,0x24,0x97,0xf9,0x40,0x6c,0x63,0x1d,
+ 0xf1,0x53,0x00,0x26,0x12,0x6d,0x30,0xc8,0x8a,0x31,0xf3,0x2f,0xdc,0xfa,0x1e,0xf9,
+ 0xc0,0xa1,0x19,0xbd,0x75,0xe8,0x4f,0x04,0x32,0x36,0xd6,0xb8,0x48,0x8d,0xb8,0x62,
+ 0x7c,0xc6,0x07,0x73,0x0c,0xf4,0xcd,0x58,0xdb,0xf6,0x89,0x54,0x5a,0xc7,0x21,0xf3,
+ 0x01,0x91,0x83,0x11,0x94,0x3d,0x87,0xd6,0xaa,0x2d,0xd2,0x98,0xbe,0xfe,0x55,0x53,
+ 0x74,0x7b,0xf3,0x8c,0x77,0x03,0xde,0xb4,0xa1,0xd4,0xa3,0x96,0xd5,0x25,0x68,0xe2,
+ 0x32,0xf9,0x7e,0x66,0xd5,0xf9,0x5f,0x3d,0x32,0x69,0x5f,0xaa,0x07,0xb5,0xd3,0x32,
+ 0x27,0x8d,0x96,0x1d,0x8a,0xac,0x8c,0x55,0x89,0x62,0x37,0x64,0x7f,0x43,0x59,0xd6,
+ 0xec,0x9b,0x06,0x0c,0x9f,0x3b,0x01,0xe6,0xe7,0x86,0xcf,0x18,0xc7,0xb5,0x5f,0x92,
+ 0xe6,0x43,0x12,0x3d,0xbb,0xb4,0x77,0x04,0x12,0xa0,0x10,0x46,0xd2,0x3a,0xe3,0xe9,
+ 0x9a,0xaf,0x10,0x84,0x79,0x51,0x43,0x2e,0xe6,0x61,0xe6,0x04,0xce,0x00,0x03,0xad,
+ 0x36,0xf5,0x6e,0xc4,0xea,0xf4,0x8f,0x62,0xb5,0xca,0xc8,0xf6,0xe2,0xe1,0x23,0x99,
+ 0xd9,0x72,0xb3,0x39,0x38,0xf2,0xc0,0x3d,0x73,0xef,0x53,0x79,0x93,0x1f,0x20,0x6e,
+ 0x06,0x39,0x41,0x20,0x85,0xce,0x17,0xdc,0xf5,0xcf,0x02,0x97,0xe5,0x25,0x21,0x45,
+ 0x61,0x10,0x70,0xcc,0x15,0xb2,0xa7,0xda,0xa6,0x89,0x03,0x3b,0x48,0x91,0xca,0x96,
+ 0xc8,0x4a,0xa6,0xf6,0xe5,0xce,0x3a,0x00,0x3a,0x51,0x7b,0x59,0x31,0xb6,0x9b,0xd3,
+ 0xcb,0xfe,0x09,0x55,0xa6,0xb5,0x99,0xe3,0x8b,0x63,0x6c,0xdd,0x96,0x2a,0x39,0x60,
+ 0x07,0x7c,0x74,0xef,0x42,0x08,0x19,0x03,0xa3,0xcf,0xb0,0x92,0xc0,0xc8,0x3a,0x7d,
+ 0x6a,0x41,0x33,0x47,0x34,0x51,0xc7,0x69,0x6c,0x9b,0xc1,0x62,0xca,0xdd,0x0e,0x3b,
+ 0xfb,0xd4,0x6a,0x7f,0x73,0xe6,0x4d,0x91,0x2b,0x36,0x0e,0x07,0xde,0xc7,0x6c,0x76,
+ 0xa3,0x44,0x0e,0xca,0xf7,0xb0,0xa5,0xa2,0x59,0x63,0x97,0xcd,0x56,0x97,0x70,0xca,
+ 0xa9,0xe5,0x97,0xdf,0xf2,0xa6,0xee,0x8a,0x58,0xc3,0x09,0x95,0x22,0x47,0xdc,0x14,
+ 0x75,0x45,0x27,0xaf,0xbd,0x24,0x5f,0xe9,0x12,0xf9,0x8f,0x6d,0x10,0x86,0x3c,0xb6,
+ 0xd5,0x60,0x0b,0x9f,0x5c,0xfe,0x26,0x88,0x08,0x75,0x69,0xd1,0x4f,0x96,0xe4,0x01,
+ 0x12,0xae,0x72,0x33,0xcf,0x26,0x85,0x65,0xa2,0x0d,0x5a,0x4a,0xfa,0x0f,0x0e,0x67,
+ 0xca,0x98,0x88,0x55,0x18,0x32,0x84,0xf9,0x40,0xf4,0x35,0x3a,0x3d,0xc2,0x4b,0x0c,
+ 0x51,0x24,0x72,0x92,0xa4,0xe7,0x83,0xb4,0x7a,0x81,0x50,0x2a,0x48,0xb1,0xcf,0x09,
+ 0x69,0x56,0xdd,0xa4,0xca,0x8c,0xf2,0xfc,0x74,0x2c,0x3a,0x63,0xf2,0xa6,0x6d,0x90,
+ 0x48,0xd2,0x24,0x8e,0xee,0x06,0xc6,0xca,0xf5,0x1f,0xe3,0x43,0xba,0xd1,0x82,0xbb,
+ 0xd5,0xad,0x42,0xe5,0x25,0x26,0x2b,0x79,0xa4,0x67,0x0c,0x0b,0x87,0x2a,0x42,0x8c,
+ 0x7f,0x08,0x35,0x2d,0xb7,0x9a,0x11,0x67,0x55,0x65,0x50,0xe5,0x52,0x22,0xbb,0xb2,
+ 0xb5,0x18,0x68,0x67,0x5f,0x29,0x9d,0xd8,0xc4,0xc4,0x22,0xb1,0xc0,0x43,0xf4,0xa7,
+ 0x20,0x94,0x22,0xb9,0x93,0x64,0x4e,0x76,0x07,0xdb,0x90,0x00,0xe3,0xad,0x0f,0x55,
+ 0xa0,0x2b,0x37,0x74,0xf4,0x1a,0xac,0xc7,0x6b,0x66,0xdd,0x4a,0x92,0xc5,0x72,0x73,
+ 0xf4,0xc5,0x43,0x2c,0x8a,0xec,0xd2,0x59,0xa8,0x90,0x13,0x87,0x3b,0x49,0x23,0xe9,
+ 0x57,0x66,0x60,0x21,0x40,0x22,0x57,0xc0,0xc0,0x75,0x19,0x2d,0xcf,0x4f,0xfe,0xbd,
+ 0x54,0x8d,0x02,0x4a,0x90,0x81,0x24,0x40,0xb6,0xd0,0x43,0x60,0x0c,0xff,0x00,0x78,
+ 0x51,0xe6,0x0d,0xbb,0xea,0x2a,0x79,0x5b,0xf0,0xd2,0x63,0xe5,0x23,0x68,0x1f,0x77,
+ 0xdb,0x8f,0xad,0x35,0x83,0x11,0x94,0x94,0x21,0x1f,0x38,0x0e,0xd8,0x0a,0x71,0x8e,
+ 0x2a,0x49,0xad,0xe3,0x90,0xbc,0x0b,0xb8,0xa2,0xf0,0xa5,0x49,0x39,0x6f,0x7f,0x5a,
+ 0x8e,0x50,0xd2,0x24,0x47,0x70,0xf3,0x46,0x3e,0x52,0xbf,0x73,0x07,0xa0,0xa5,0x16,
+ 0xba,0xb0,0x6b,0xb8,0xf8,0x98,0x22,0xc1,0xe5,0x4a,0x53,0x19,0x66,0x7c,0xf4,0x3d,
+ 0xf2,0x69,0x81,0xcc,0xb1,0xef,0x52,0x24,0x99,0xdc,0xa2,0xaf,0x96,0x09,0x41,0xea,
+ 0x4f,0xe7,0x4f,0x13,0x2a,0x48,0x87,0xf7,0x8c,0xa7,0x90,0xaa,0xb9,0xc3,0x51,0x13,
+ 0x3b,0x4d,0x0a,0x3e,0xc3,0x2b,0x6e,0x24,0x2f,0x46,0xfa,0x0e,0xd4,0xfa,0x05,0xde,
+ 0x8d,0xbb,0xa0,0x49,0x62,0x8d,0xcc,0x6a,0x90,0xbc,0xc9,0xd3,0x04,0xfe,0xf3,0xd7,
+ 0x1e,0x94,0x4b,0x22,0xf9,0x6b,0x13,0xac,0x29,0x83,0xe6,0x7c,0xc3,0x87,0x27,0x1d,
+ 0x08,0xeb,0xd4,0xd5,0xd8,0x96,0xdd,0x81,0xda,0xe8,0xcc,0x48,0x09,0x18,0xfb,0xdd,
+ 0x7b,0xd5,0x18,0xe0,0x7b,0x48,0xe3,0x0a,0x0b,0x2a,0xb9,0xc0,0x00,0x12,0xbc,0xf4,
+ 0xcd,0x1a,0x27,0xa8,0x3b,0xa5,0x77,0xb0,0xfc,0x19,0x21,0xf3,0x87,0x33,0x3b,0x95,
+ 0x64,0x03,0x05,0x31,0xfe,0x35,0x18,0x68,0xe2,0x94,0xcd,0x02,0xc1,0x24,0x85,0x72,
+ 0xc4,0xb1,0xc6,0x07,0x40,0x3d,0xf9,0xa7,0xae,0x6d,0xf6,0x3e,0xff,0x00,0xb1,0x93,
+ 0x23,0x79,0x8b,0x27,0x40,0x71,0xc6,0x33,0x51,0xac,0x62,0x40,0xee,0x8a,0x81,0x1a,
+ 0x5c,0x82,0xca,0x40,0x63,0x8e,0x83,0xf2,0xa2,0xf6,0xdc,0x7a,0xb7,0x74,0x04,0x87,
+ 0x59,0xca,0xf9,0x6b,0x38,0x01,0xca,0xbb,0x1e,0x7d,0x87,0xbd,0x33,0x31,0xca,0xed,
+ 0xbe,0x31,0x80,0xca,0x3e,0x62,0x78,0x24,0xe3,0x9f,0x5a,0x4d,0x81,0x5c,0x16,0x10,
+ 0xa0,0x20,0x86,0x2a,0x09,0x1b,0xb3,0xd6,0x9d,0xc3,0xb4,0x78,0x54,0x13,0x28,0x20,
+ 0x85,0xcf,0x3f,0x53,0x4d,0xe9,0xb0,0xae,0xd2,0xbb,0x7a,0x93,0x4b,0x1e,0x47,0x98,
+ 0x8c,0xab,0x29,0x7d,0xa4,0xf6,0x2b,0xeb,0x9f,0x4f,0xc2,0x95,0x76,0x79,0xf1,0xaa,
+ 0x31,0x85,0x50,0xe0,0xab,0xa0,0xc1,0xf7,0x07,0xf3,0xa8,0x50,0x18,0x03,0x34,0xea,
+ 0x64,0x79,0x86,0x54,0x80,0x48,0x5e,0x7a,0x8a,0x7a,0xb2,0x42,0xb1,0x79,0xe4,0xf0,
+ 0x09,0x60,0x72,0xd9,0xe3,0xb1,0xa2,0xcf,0xa0,0x24,0xaf,0x76,0x58,0xdc,0xab,0x23,
+ 0xe0,0x91,0x19,0x24,0xb2,0xed,0xc6,0x38,0xe2,0xaa,0x47,0x13,0xc5,0x14,0x09,0x22,
+ 0x89,0x26,0x29,0xf3,0x80,0x33,0x95,0xce,0x79,0xa1,0x5c,0xcd,0x13,0xee,0x8c,0x24,
+ 0x81,0x49,0x76,0x66,0xe0,0x7d,0x29,0x76,0xc8,0xe2,0x19,0x63,0x18,0x91,0x87,0xc8,
+ 0x08,0xe4,0xfa,0x81,0x49,0x3b,0x0f,0x56,0xee,0xf6,0x0f,0x2f,0xcf,0xd9,0xe5,0xbc};
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/M5StickC.ino b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/M5StickC.ino
new file mode 100644
index 000000000..839429993
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/M5StickC.ino
@@ -0,0 +1,61 @@
+// JPEGDEC example for Adafruit GFX displays
+
+#include "JPEGDEC.h"
+// Sample image (truncated) containing a 320x240 Exif thumbnail
+// if an image doesn't display, it may have been created using progressive, open gimp, export as a jpg, remove progressive.
+
+#include "thumb_test.h"
+//#include "ncc1701.h" //http://clipart-library.com/clip-art/uss-enterprise-silhouette-11.htm
+//#include "batman.h" //http://clipart-library.com/clipart/batman-clip-art_19.htm
+
+#include
+
+#define DISPLAY_WIDTH 80
+#define DISPLAY_HEIGHT 160
+
+
+JPEGDEC jpeg;
+
+int JPEGDraw(JPEGDRAW *pDraw)
+{
+
+ M5.Lcd.drawBitmap((int16_t)pDraw->x, (int16_t)pDraw->y, (int16_t)pDraw->iWidth, (int16_t)pDraw->iHeight, pDraw->pPixels);
+ return 1;
+} /* JPEGDraw() */
+
+void setup() {
+ Serial.begin(115200);
+
+ Serial.println("Starting...");
+
+M5.begin();
+M5.Lcd.fillScreen(TFT_BLACK);
+} /* setup() */
+
+void loop() {
+int i;
+long lTime;
+int iOption[4] = {0, JPEG_SCALE_HALF, JPEG_SCALE_QUARTER, JPEG_SCALE_EIGHTH};
+int iCenterX[4] = {0,0,0,0};
+int iCenterY[4] = {0,0,0,0};
+
+ for (i=0; i<4; i++)
+ {
+ M5.Lcd.fillScreen(TFT_BLACK);
+ M5.Lcd.startWrite(); // Not sharing TFT bus on PyPortal, just CS once and leave it
+ if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), JPEGDraw))
+ //if (jpeg.openFLASH((uint8_t *)ncc1701, sizeof(ncc1701), JPEGDraw))
+ //if (jpeg.openFLASH((uint8_t *)batman, sizeof(batman), JPEGDraw))
+
+ {
+ lTime = micros();
+ if (jpeg.hasThumb()) {jpeg.decode(iCenterX[i],iCenterY[i],JPEG_EXIF_THUMBNAIL | iOption[i]); } else { jpeg.decode(iCenterX[i],iCenterY[i], iOption[i]); }
+ {
+ lTime = micros() - lTime;
+ Serial.printf("%d x %d image, decode time = %d us\n", jpeg.getWidth() >> i, jpeg.getHeight() >> i, (int)lTime);
+ }
+ jpeg.close();
+ }
+ delay(2000); // pause between images
+ } // for i
+} /* loop() */
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/batman.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/batman.h
new file mode 100644
index 000000000..4aeccde5a
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/batman.h
@@ -0,0 +1,845 @@
+//
+// batman-5
+// Data size = 13342 bytes
+//
+// JFIF, Compression=JPEG, Size: 240 x 240, 24-Bpp
+//
+// for non-Arduino builds...
+#ifndef PROGMEM
+#define PROGMEM
+#endif
+const uint8_t batman[] PROGMEM = {
+ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x47,
+ 0x00,0x47,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
+ 0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,
+ 0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,
+ 0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,
+ 0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,
+ 0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,
+ 0x00,0x11,0x08,0x00,0xf0,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
+ 0x01,0xff,0xc4,0x00,0x1e,0x00,0x01,0x00,0x02,0x02,0x03,0x01,0x01,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x09,0x06,0x07,0x04,0x05,0x0a,0x03,0x01,
+ 0x02,0xff,0xc4,0x00,0x49,0x10,0x00,0x01,0x03,0x03,0x03,0x02,0x04,0x03,0x05,0x04,
+ 0x05,0x0a,0x04,0x07,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x06,0x07,0x08,0x11,
+ 0x12,0x21,0x09,0x13,0x31,0x41,0x14,0x22,0x51,0x15,0x23,0x61,0x71,0x81,0x32,0x42,
+ 0x52,0x62,0x24,0x33,0x82,0x91,0x92,0x16,0x17,0x18,0x53,0x63,0x72,0xa1,0xb1,0xb2,
+ 0xc1,0x73,0x93,0xa2,0xc2,0x19,0x34,0x43,0x44,0x83,0x84,0xc3,0xff,0xc4,0x00,0x1c,
+ 0x01,0x01,0x00,0x01,0x05,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x03,0x01,0x04,0x05,0x06,0x07,0x02,0x08,0xff,0xc4,0x00,0x38,0x11,0x00,
+ 0x01,0x03,0x02,0x05,0x01,0x06,0x03,0x06,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x01,
+ 0x00,0x02,0x03,0x04,0x11,0x05,0x06,0x12,0x21,0x31,0x51,0x13,0x22,0x41,0x61,0x71,
+ 0x81,0x07,0x32,0x91,0x15,0x42,0x62,0x92,0xa1,0xb1,0x14,0x23,0x52,0x72,0x82,0xa2,
+ 0x33,0xb2,0xc1,0xf0,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,
+ 0x3f,0x00,0xb5,0x3a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,
+ 0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,
+ 0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,
+ 0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,
+ 0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,
+ 0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,
+ 0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,
+ 0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,
+ 0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,
+ 0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,
+ 0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0xa2,0xae,0xf8,
+ 0x37,0xe7,0x8d,0x6d,0x27,0x1e,0x36,0xd8,0x69,0x66,0xff,0x00,0xa8,0xd3,0xd8,0x2b,
+ 0xb7,0xd9,0x4a,0x8f,0x97,0x1d,0x27,0x90,0x24,0x49,0x20,0x82,0x96,0xc1,0x1d,0x92,
+ 0x08,0x52,0xc8,0xe0,0x70,0x3a,0x94,0x92,0x29,0x55,0x4a,0xf3,0xf3,0xa5,0x5e,0x23,
+ 0xba,0xd3,0xa6,0xda,0xbb,0x71,0xce,0x66,0xe4,0x6f,0xe5,0x48,0xbb,0xbc,0x17,0x75,
+ 0xb2,0x5d,0x1c,0x26,0x1c,0x84,0x03,0xd9,0x2d,0x20,0x76,0x8e,0x52,0x3b,0x25,0x4d,
+ 0x81,0xc7,0x60,0x42,0x87,0x29,0x37,0x13,0xb5,0xfd,0xec,0xe9,0xa6,0xea,0xad,0x4d,
+ 0x8c,0x6e,0xe8,0x2d,0xb9,0x3a,0x1a,0x2e,0x4b,0xc6,0x6e,0x4a,0x4a,0x26,0xb3,0xc1,
+ 0xe1,0x4a,0x48,0xe7,0x87,0x5b,0xf4,0x3d,0x68,0x27,0x80,0xa1,0xd4,0x12,0x4f,0x48,
+ 0x22,0xdf,0xb4,0xa5,0x28,0x89,0x4a,0x56,0xa2,0xdc,0xd6,0xe0,0xa0,0xed,0xab,0x0a,
+ 0xb2,0xe5,0xd7,0x68,0xe1,0xfb,0x23,0xb7,0xc8,0x96,0xdb,0x82,0x81,0x3d,0x4c,0xb0,
+ 0xf7,0x52,0x54,0xf2,0x78,0xe7,0x92,0x8e,0x02,0xf8,0xe3,0xe6,0x09,0x29,0xec,0x48,
+ 0x20,0x8b,0x6e,0xd2,0xb5,0xde,0x79,0xb8,0x9d,0x2f,0xd3,0x06,0x63,0x39,0x95,0xea,
+ 0x06,0x39,0x62,0x32,0x99,0x4c,0x88,0xed,0x4b,0xb9,0x34,0x97,0x5f,0x69,0x43,0x94,
+ 0xb8,0xdb,0x7d,0x5d,0x4b,0x49,0x1f,0xbc,0x90,0x47,0x7a,0xc5,0xac,0x7b,0xdb,0xd0,
+ 0x4c,0x86,0x40,0x62,0x26,0xad,0xe2,0x69,0x70,0x9e,0x00,0x97,0x72,0x6e,0x30,0x27,
+ 0xe8,0x0b,0xa5,0x22,0x88,0xb7,0x6d,0x2b,0x52,0xe8,0xc6,0xe2,0xf1,0xfd,0x72,0xcd,
+ 0x75,0x22,0xcb,0x8e,0x2d,0xb9,0x50,0xf0,0xdb,0x83,0x36,0xc5,0xcf,0x69,0xd0,0xe2,
+ 0x25,0x3a,0xa6,0xca,0x96,0xb4,0x11,0xdb,0xa5,0x2b,0x0a,0x6c,0x7a,0xf2,0x5b,0x51,
+ 0xe7,0x82,0x2b,0x6d,0x51,0x12,0x94,0xa5,0x11,0x29,0x51,0xd3,0x74,0xdb,0xec,0xd3,
+ 0x3d,0xab,0x5b,0xdf,0x8f,0x79,0xb8,0x0b,0xee,0x5f,0xd0,0x15,0x1f,0x17,0xb6,0x38,
+ 0x15,0x29,0x44,0x8e,0x52,0x5e,0x3d,0xc3,0x08,0x3c,0x83,0xd4,0xbe,0xe4,0x77,0x4a,
+ 0x55,0xe9,0x55,0x05,0x9d,0x78,0x8f,0xeb,0x7e,0x67,0xac,0xb0,0x35,0x05,0x8c,0x9d,
+ 0xcb,0x12,0xed,0xab,0xe2,0x05,0x86,0xde,0xa5,0x26,0xda,0xd3,0x24,0x82,0xa6,0x9c,
+ 0x68,0x9f,0xbe,0xeb,0xe3,0xe6,0x52,0xf9,0x51,0xed,0xc1,0x48,0x4a,0x42,0x48,0xbd,
+ 0x04,0x52,0xa3,0x3e,0xca,0xf7,0xc7,0x8a,0x6e,0xef,0x15,0x2d,0x37,0xe5,0x58,0xf3,
+ 0xdb,0x73,0x21,0x77,0x5c,0x79,0x4b,0xe4,0xf4,0x8e,0x01,0x91,0x1c,0x9f,0xdb,0x64,
+ 0xa9,0x40,0x7f,0x12,0x09,0x01,0x5e,0xa9,0x52,0xe4,0xc5,0x11,0x29,0x4a,0x51,0x12,
+ 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xad,
+ 0x05,0xbc,0xed,0xd9,0xd9,0x36,0x91,0xa5,0x0e,0xdf,0xa5,0xa5,0xa9,0xf9,0x35,0xc7,
+ 0xae,0x35,0x8a,0xd0,0xb5,0x11,0xf1,0x52,0x00,0x1c,0xad,0x5c,0x77,0x0d,0x36,0x14,
+ 0x95,0x2c,0xf6,0xf5,0x4a,0x41,0x05,0x69,0xa2,0x2c,0x1b,0x7f,0x1b,0xec,0xb4,0xed,
+ 0x3f,0x11,0xfb,0x22,0xcc,0xa6,0x2e,0x9a,0x95,0x76,0x60,0x9b,0x7d,0xbd,0x47,0xa9,
+ 0x10,0x9b,0x3c,0x8f,0x8a,0x7c,0x7f,0x08,0x23,0xe5,0x41,0xee,0xb2,0x0f,0xb0,0x51,
+ 0x14,0xdb,0x61,0xd1,0xad,0x69,0xdc,0xee,0x55,0x3b,0x22,0x83,0x8c,0x5f,0xf2,0xeb,
+ 0x9d,0xdd,0xe5,0x4a,0x93,0x7b,0x90,0xc9,0x6d,0x87,0x5c,0x57,0x72,0x4c,0x87,0x3a,
+ 0x5a,0x1f,0x82,0x7a,0x87,0x00,0x70,0x07,0x02,0xb9,0x38,0x46,0xb8,0x67,0x39,0x56,
+ 0xb3,0x4f,0xc8,0x95,0x61,0xb3,0xea,0x26,0xa4,0x65,0x33,0x1b,0x6e,0x34,0xbc,0x82,
+ 0x07,0xc6,0xb8,0xd4,0x85,0x2b,0x84,0x79,0x0c,0xa9,0x41,0x94,0x9f,0xd8,0x4a,0x7a,
+ 0x90,0x42,0x12,0x84,0x84,0xf4,0x00,0x79,0xbc,0x7d,0x2d,0xb4,0xe5,0x36,0x4d,0x3f,
+ 0xb2,0x43,0xcd,0xaf,0x8d,0xe4,0x59,0x5a,0x18,0xea,0xb8,0xdc,0x19,0x61,0xb6,0x1a,
+ 0x5b,0xca,0x25,0x45,0x28,0x42,0x12,0x91,0xd0,0x8e,0x7a,0x01,0xe9,0x04,0x84,0x82,
+ 0x7b,0x93,0x5c,0xb7,0x39,0xe6,0xfa,0x8c,0xb2,0xd6,0x36,0x18,0x9a,0xe7,0x3f,0x8d,
+ 0x4e,0x37,0xf3,0x3a,0x40,0xe0,0x71,0x72,0xe0,0x6f,0xc0,0x22,0xe4,0x5c,0x45,0x10,
+ 0x93,0x92,0xa9,0xd1,0xdf,0x0c,0xcd,0xc1,0x37,0x13,0xce,0x18,0x8c,0x47,0x17,0xc7,
+ 0x3e,0x42,0x6f,0x11,0x3a,0xff,0x00,0xe2,0xe0,0x1f,0xf1,0xad,0x0b,0x95,0xe1,0x99,
+ 0x9e,0x8b,0x65,0xe9,0x83,0x7d,0xb6,0x5d,0x71,0x1c,0x8a,0x12,0xc3,0xad,0x79,0xc9,
+ 0x5c,0x77,0x90,0x41,0xec,0xe3,0x4b,0x1c,0x72,0x39,0x1d,0x96,0x82,0x41,0xf6,0x35,
+ 0xe8,0xbe,0xa3,0xbe,0xfd,0x34,0x72,0xc9,0xab,0x5b,0x6d,0xcb,0x9e,0xb8,0x45,0x42,
+ 0xae,0xb8,0xe4,0x07,0xef,0x56,0xc9,0xc1,0x3f,0x7b,0x1d,0xc6,0x51,0xe6,0x38,0x90,
+ 0x7f,0x85,0xc4,0x20,0xa5,0x43,0xd0,0xf6,0x3c,0x72,0x94,0x91,0xcf,0xb0,0x3f,0x8a,
+ 0x35,0xb3,0xd7,0x47,0x4f,0x89,0x44,0xcd,0x0f,0x20,0x5d,0xa0,0x82,0xdb,0x9b,0x5f,
+ 0x72,0x6e,0x3a,0xf0,0x7f,0x65,0x33,0xe9,0xc0,0x17,0x69,0x50,0x8f,0x6f,0x3e,0x2f,
+ 0x7a,0x9d,0xa6,0x2c,0x47,0xb5,0x67,0xf0,0xda,0xd4,0x9b,0x2b,0x69,0x4b,0x68,0x94,
+ 0xfb,0xa2,0x35,0xc9,0xa4,0x8e,0x07,0x77,0x82,0x48,0x77,0xb0,0x3f,0xd6,0x24,0xa9,
+ 0x47,0xd5,0x75,0x62,0xda,0x35,0xe2,0x3d,0xa0,0xda,0xd2,0xa6,0x63,0x43,0xcc,0x5a,
+ 0xc6,0x2e,0xce,0x27,0xab,0xec,0xcc,0xa1,0x22,0x03,0x80,0xf3,0xc7,0x48,0x71,0x44,
+ 0xb2,0xa5,0x7f,0x2a,0x1c,0x51,0x3f,0x4a,0xa0,0xf9,0x98,0x65,0xd2,0x0e,0x15,0x6a,
+ 0xca,0x9e,0x64,0x26,0xd1,0x72,0x9d,0x2a,0xdf,0x1d,0xce,0x7b,0x97,0x63,0xa1,0x85,
+ 0xb9,0xc8,0xfa,0x71,0x25,0xbe,0x0f,0xb9,0x0a,0xfa,0x57,0x47,0x5f,0x48,0x31,0xed,
+ 0x90,0x5d,0x86,0xfc,0x8f,0x70,0x6c,0x7e,0x85,0x58,0xaf,0x54,0x51,0x25,0xb1,0x3e,
+ 0x33,0x72,0x23,0x3c,0xdc,0x98,0xee,0x0e,0xa4,0x3a,0xd2,0xc2,0x90,0xa1,0xf5,0x04,
+ 0x76,0x22,0xa0,0xc7,0x8c,0xac,0xaf,0x87,0xda,0x4c,0x06,0xf9,0xe3,0xcf,0xca,0x21,
+ 0xb7,0xf9,0xfd,0xcc,0x95,0x7f,0xed,0xaa,0x78,0xd3,0xdd,0x6b,0xcf,0xf4,0x99,0x6e,
+ 0x1c,0x33,0x34,0xbf,0x62,0xe9,0x75,0x41,0x6e,0xb5,0x6a,0xb8,0x3a,0xc3,0x6e,0x91,
+ 0xe8,0x56,0x84,0xa8,0x25,0x5f,0xa8,0x35,0x98,0xea,0xc6,0xf0,0xb5,0x77,0x5c,0xf0,
+ 0x48,0x98,0x7e,0x77,0x98,0x3b,0x91,0xd8,0xa2,0x4d,0x6e,0xe0,0xc3,0x52,0x22,0x47,
+ 0x43,0x89,0x79,0x08,0x71,0x01,0x45,0xd4,0x36,0x95,0xab,0xe5,0x75,0x7d,0x94,0x48,
+ 0xf4,0xfa,0x57,0xb4,0x5a,0x6d,0x4b,0x52,0xcf,0x2a,0x25,0x47,0x80,0x39,0x27,0xd8,
+ 0x76,0x15,0xf9,0x5d,0xd5,0xa3,0x09,0xc8,0x2f,0xf6,0x1b,0xb5,0xee,0xd9,0x64,0xb8,
+ 0x5c,0x6d,0x16,0x8f,0x2f,0xed,0x19,0xd1,0x23,0x2d,0xd6,0x61,0xf9,0x9d,0x5e,0x59,
+ 0x79,0x49,0x04,0x36,0x15,0xd0,0xbe,0x0a,0xb8,0x07,0xa4,0xfd,0x2b,0x8f,0x8e,0xe3,
+ 0x37,0x8c,0xc2,0xf1,0x1e,0xd3,0x61,0xb5,0x4d,0xbd,0xdd,0x24,0x1e,0x96,0x60,0xdb,
+ 0xa3,0xae,0x43,0xee,0x1f,0xa2,0x50,0x80,0x54,0x7f,0x41,0x44,0x56,0x51,0xe0,0x7b,
+ 0x95,0xb7,0x17,0x33,0xd5,0x5c,0x65,0x47,0x97,0x67,0x5b,0xe0,0xdc,0x5b,0x04,0xfa,
+ 0x06,0x1c,0x75,0xb5,0xf0,0x3f,0xfd,0x94,0x73,0xf9,0x0a,0xb6,0x79,0xd3,0xa3,0x5b,
+ 0x22,0x3b,0x2a,0x64,0x86,0xa2,0x45,0x69,0x3d,0x4e,0x3e,0xfa,0xc2,0x10,0x81,0xf5,
+ 0x2a,0x3d,0x80,0xaf,0x35,0x18,0x7e,0xa1,0x6a,0x66,0xd6,0x33,0xab,0xdb,0x76,0x1b,
+ 0x8c,0xfc,0x1b,0x2b,0xf8,0x75,0x5a,0xee,0x28,0x0d,0x20,0x48,0x6d,0xb5,0x29,0x0e,
+ 0x29,0xa5,0x05,0xa4,0xf4,0x2b,0xa9,0x08,0x27,0x8e,0x14,0x08,0xe3,0xb7,0x71,0x5d,
+ 0x26,0xa0,0x6b,0x0e,0x75,0xaa,0xef,0xb4,0xee,0x67,0x98,0xdf,0x32,0x95,0x34,0x4a,
+ 0x9a,0x17,0x6b,0x83,0xb2,0x12,0xd1,0xfe,0x44,0xad,0x44,0x23,0xfb,0x20,0x51,0x15,
+ 0xea,0x6b,0x3f,0x89,0x5e,0x83,0x68,0xd2,0xa4,0xc5,0x73,0x2c,0x4e,0x5d,0x78,0x65,
+ 0x3c,0xfd,0x9d,0x8b,0x24,0x4d,0x24,0xff,0x00,0x09,0x78,0x10,0xca,0x48,0x3e,0xa0,
+ 0xb9,0xc8,0xfa,0x7b,0x55,0x72,0xee,0x1f,0xc5,0xc3,0x55,0x35,0x61,0x99,0x16,0xac,
+ 0x25,0x96,0xf4,0xce,0xc2,0xea,0x14,0xda,0xdc,0x80,0xf1,0x7a,0xe4,0xe0,0x3d,0x89,
+ 0xf8,0x92,0x13,0xe5,0xf6,0xe3,0x8f,0x29,0x29,0x50,0x3c,0xfc,0xe7,0xb7,0x10,0x5a,
+ 0x94,0x45,0xf5,0x99,0x31,0xfb,0x84,0xa7,0xa5,0x4a,0x7d,0xc9,0x32,0x5e,0x59,0x71,
+ 0xc7,0x9e,0x59,0x5a,0xd6,0xa2,0x79,0x25,0x44,0xf7,0x24,0xfd,0x4d,0x7c,0xab,0xed,
+ 0x0a,0x2a,0xe7,0x4c,0x62,0x32,0x3b,0xad,0xe7,0x12,0xda,0x7f,0x32,0x78,0x1f,0xf3,
+ 0xac,0x9b,0x57,0x30,0xe4,0xe9,0xe6,0xaa,0xe6,0x38,0xba,0x09,0x2d,0x59,0x6f,0x12,
+ 0xed,0xe8,0x51,0x24,0xf5,0x21,0xa7,0x96,0x84,0x9e,0xff,0x00,0x50,0x90,0x6a,0x13,
+ 0x2b,0x04,0xa2,0x1b,0xf7,0x88,0x27,0xd8,0x58,0x1f,0xdc,0x2a,0xdb,0xc5,0x7f,0x78,
+ 0x2d,0xdf,0x35,0xd3,0x19,0xd6,0x9d,0x47,0xc5,0xcd,0xd2,0xca,0xab,0x6d,0xc3,0xc9,
+ 0x87,0x90,0x46,0x65,0x61,0x84,0x4a,0x4a,0x42,0xd4,0xcf,0x99,0xc7,0x42,0x89,0x42,
+ 0x87,0x53,0x67,0x9e,0xa4,0x2f,0x85,0x02,0x95,0x77,0xbd,0x7d,0x8b,0x6f,0x7e,0xc7,
+ 0xbb,0xac,0x1d,0x4c,0xcb,0x11,0xec,0xfa,0x87,0x69,0x69,0x3f,0x6b,0xd9,0x90,0xae,
+ 0x10,0xe8,0xf4,0xf8,0xa8,0xc0,0x92,0xa5,0x34,0xa3,0xc7,0x23,0xb9,0x6d,0x44,0x25,
+ 0x44,0x82,0x85,0x2f,0x45,0x6c,0x47,0x43,0xf4,0xda,0xfd,0xb4,0xb9,0x96,0x98,0xd7,
+ 0x57,0x73,0xac,0x67,0x2d,0x77,0xcf,0xbb,0x5b,0xee,0x4d,0x25,0xb1,0x0e,0x58,0x69,
+ 0xb4,0x3a,0xc8,0x42,0x4f,0x28,0x5a,0x14,0x84,0x90,0xbe,0x79,0x3c,0x36,0xb4,0x9e,
+ 0x3a,0x49,0x83,0x3a,0xe5,0xa3,0x99,0xdf,0x87,0x9e,0xbe,0xd9,0xf2,0x7c,0x4a,0xe7,
+ 0x24,0x5b,0x04,0x85,0x4a,0xb0,0x5e,0xf8,0xe4,0x38,0x80,0x7e,0x78,0xb2,0x40,0xe0,
+ 0x15,0x74,0x9e,0x95,0xa7,0xd1,0x69,0x57,0x23,0x8e,0x4a,0x53,0xa3,0x61,0x19,0xc2,
+ 0x8f,0x13,0xc4,0xe7,0xc2,0x5c,0x34,0x48,0xc2,0x43,0x6f,0x71,0xa8,0x0e,0x76,0x36,
+ 0x21,0xc3,0x7b,0x8e,0x9b,0x8f,0x1b,0x4a,0xe8,0x8b,0x5a,0x1c,0xaf,0xf6,0x95,0xa4,
+ 0x76,0x8d,0xba,0x6c,0x7b,0x76,0x1a,0x51,0x13,0x27,0xb4,0x94,0x43,0xbc,0xc7,0xe9,
+ 0x8f,0x7a,0xb3,0x95,0x82,0xe4,0x19,0x3c,0x77,0x1c,0x73,0xc9,0x6d,0x7c,0x15,0x21,
+ 0x7e,0xe3,0xb1,0xe1,0x49,0x50,0x1b,0xba,0xb7,0xf5,0x0a,0x52,0x94,0xa2,0x25,0x29,
+ 0x4a,0x22,0x52,0x94,0xa2,0x25,0x29,0x4a,0x22,0xc6,0x35,0x37,0x52,0x2c,0x3a,0x43,
+ 0x80,0xdf,0x33,0x2c,0x9e,0x62,0x60,0x58,0xac,0xd1,0x95,0x26,0x4b,0xc7,0x8e,0x48,
+ 0x1d,0x92,0x84,0x82,0x47,0x52,0xd4,0xa2,0x94,0x25,0x3e,0xea,0x52,0x47,0xbd,0x79,
+ 0xd8,0xdd,0x0e,0xe3,0xb2,0x2d,0xd1,0x6a,0xe5,0xd3,0x34,0xbf,0x28,0xb2,0xca,0xc9,
+ 0x8f,0x6c,0xb6,0xa5,0x5c,0xb7,0x02,0x22,0x54,0x4b,0x6d,0x27,0xea,0x7b,0x95,0x29,
+ 0x5f,0xbc,0xa5,0x28,0xf0,0x01,0x00,0x4a,0xaf,0x16,0x6d,0xdd,0xab,0x55,0x35,0x14,
+ 0x69,0x46,0x35,0x31,0x47,0x14,0xc5,0x24,0xab,0xed,0x37,0x1b,0xe3,0xa6,0x6d,0xcd,
+ 0x3c,0xa5,0x43,0x9f,0x52,0x86,0x41,0x52,0x07,0xa7,0xce,0x5c,0xe4,0x10,0x94,0x1a,
+ 0xd5,0xbe,0x1e,0x9b,0x50,0xff,0x00,0x48,0x4d,0x4c,0x37,0xec,0x82,0x19,0x73,0x04,
+ 0xc7,0x1c,0x43,0xb3,0x12,0xe2,0x0f,0x97,0x3e,0x47,0xab,0x71,0x41,0xf4,0x23,0xd1,
+ 0x6b,0xf5,0xf9,0x78,0x07,0x8f,0x30,0x1a,0xc5,0x62,0x98,0x95,0x3e,0x11,0x47,0x25,
+ 0x75,0x51,0xb3,0x18,0x2f,0xeb,0xd0,0x0f,0x32,0x76,0x0b,0xd3,0x5a,0x5c,0x6c,0x14,
+ 0xae,0xf0,0xc8,0xda,0x18,0xc0,0xb1,0xd6,0x35,0x67,0x2b,0x87,0xd3,0x91,0xdd,0xd8,
+ 0x3f,0x62,0xc5,0x75,0x24,0x2a,0x14,0x35,0x8e,0x0b,0xc4,0x1f,0x47,0x1d,0x07,0xb7,
+ 0xd1,0xb2,0x3b,0xfc,0xea,0x02,0x46,0xee,0xdf,0x73,0x56,0xad,0xaf,0x69,0x6b,0xf7,
+ 0xe7,0xd0,0xd4,0xdc,0x86,0x69,0x54,0x5b,0x2d,0xb1,0xc2,0x78,0x91,0x23,0x8e,0x7a,
+ 0x97,0xc7,0x07,0xcb,0x40,0x21,0x4a,0x20,0x8f,0x64,0x82,0x0a,0x85,0x6e,0x69,0x93,
+ 0x22,0xda,0x60,0x3f,0x2e,0x53,0xcd,0x43,0x85,0x19,0xa5,0x3a,0xeb,0xce,0xa8,0x21,
+ 0xb6,0x9b,0x48,0xe5,0x4a,0x24,0xf6,0x00,0x00,0x4f,0x3e,0xc0,0x55,0x13,0x6e,0xa7,
+ 0x5c,0x2f,0x5b,0xb6,0xd7,0xe9,0x13,0x6d,0x31,0xa5,0xcf,0x81,0xe7,0x0b,0x56,0x39,
+ 0x6b,0x8e,0xd2,0x96,0xe2,0x98,0x0a,0x21,0x1c,0x36,0x07,0x25,0xc7,0x14,0x4a,0xc8,
+ 0xe3,0x9e,0x54,0x13,0xe8,0x91,0x5f,0x2f,0xe0,0x74,0x53,0xe7,0xec,0x7a,0x4c,0x43,
+ 0x11,0xff,0x00,0x85,0x9b,0xbb,0xa0,0x1f,0x75,0x80,0xf8,0x0e,0x6e,0x7a,0x02,0x79,
+ 0x2b,0x20,0xf2,0x21,0x65,0x9b,0xca,0xb2,0xff,0x00,0x0f,0x5d,0xd3,0x65,0x9b,0x9a,
+ 0xc2,0xb2,0x97,0x33,0x08,0x91,0x05,0xca,0xc9,0x35,0xa6,0xd1,0x3e,0x0b,0x45,0x96,
+ 0xe4,0x36,0xea,0x14,0xa0,0x92,0x8e,0x48,0xeb,0x41,0x41,0xe4,0x8e,0x01,0x0b,0x47,
+ 0x6e,0x41,0x2a,0xd8,0x5b,0xd9,0xcd,0xe1,0xe0,0x3b,0x57,0xd4,0x79,0xd2,0xdd,0x4b,
+ 0x66,0x5d,0xa5,0xdb,0x5b,0x08,0x24,0x75,0x38,0xec,0x91,0xe4,0x25,0x29,0x1e,0xff,
+ 0x00,0xd6,0x15,0x1e,0x3d,0x92,0xa3,0xed,0x5f,0xce,0xcc,0xf6,0xfd,0xfe,0x8d,0xfa,
+ 0x15,0x68,0xc6,0xa5,0x86,0xd5,0x7f,0x94,0xb5,0x5c,0xaf,0x0e,0x34,0x79,0x06,0x53,
+ 0x81,0x3c,0xa0,0x1e,0x4f,0x21,0x08,0x4a,0x1b,0xe4,0x76,0x3d,0x05,0x5f,0xbd,0x51,
+ 0x5f,0x76,0xfa,0x84,0xce,0xea,0xf7,0x5b,0x80,0x6d,0xfa,0xc6,0xe1,0x9d,0x8d,0x5a,
+ 0xae,0xe1,0xfc,0x89,0x6c,0x2b,0x80,0xeb,0xcd,0xa5,0x4a,0x7d,0x01,0x7e,0xde,0x4b,
+ 0x29,0x75,0x3c,0x8f,0xdf,0x5a,0x87,0x72,0x91,0x58,0xc8,0x28,0xe8,0xb1,0x4c,0xd1,
+ 0x2c,0xd4,0x2d,0xd3,0x49,0x13,0x8c,0x84,0x8e,0x03,0x23,0xdc,0x91,0xd3,0x51,0x1b,
+ 0x7a,0xf9,0x2f,0x44,0x96,0xc7,0x63,0xc9,0x59,0x4d,0x83,0x62,0x09,0xd5,0x1d,0x8a,
+ 0xe9,0xb6,0x10,0xed,0xd1,0x8b,0x16,0x44,0x87,0x91,0x92,0x2a,0xe2,0xe4,0x62,0xef,
+ 0x42,0xa4,0xa5,0x6b,0x5b,0x2a,0x4f,0x20,0xf6,0x6d,0xd6,0xd2,0x7b,0xfe,0xd3,0x20,
+ 0xfa,0x56,0x9f,0xb3,0x78,0x45,0x65,0x96,0xcd,0x4c,0xc7,0x5b,0xba,0x64,0xd6,0x9b,
+ 0xd6,0x0e,0xa9,0x49,0x55,0xce,0x44,0x5f,0x31,0x89,0x69,0x65,0x20,0xa9,0x48,0x0d,
+ 0x91,0xc7,0xcf,0xc0,0x40,0x52,0x56,0x48,0x2a,0xe4,0x8e,0x05,0x5a,0x24,0xfb,0x95,
+ 0xbb,0x1e,0x80,0x1f,0x9b,0x2a,0x2d,0xb2,0x0b,0x65,0x0d,0x07,0x1f,0x71,0x2c,0xb4,
+ 0x92,0x48,0x4a,0x13,0xc9,0x20,0x0e,0x49,0x00,0x0f,0xa9,0x00,0x57,0x34,0x0e,0x48,
+ 0x15,0x69,0x06,0x7b,0xc7,0x69,0x3b,0x6e,0xc2,0x4b,0x32,0x47,0x3d,0xd6,0x20,0x1b,
+ 0x17,0x6e,0x6c,0x6d,0x7d,0xaf,0x71,0xbd,0x87,0x45,0x53,0x13,0x0d,0xae,0x17,0x9e,
+ 0x6d,0xc4,0xc5,0x89,0x07,0x5f,0x35,0x1e,0x2c,0x08,0xcd,0x43,0x82,0xc6,0x45,0x3d,
+ 0x96,0x23,0xb0,0x90,0x96,0xda,0x6d,0x32,0x16,0x94,0xa1,0x20,0x7a,0x00,0x00,0x00,
+ 0x7e,0x15,0xaf,0x6b,0x2f,0xd6,0x2b,0xa2,0x6f,0x7a,0xb9,0x9b,0xdc,0x50,0x79,0x44,
+ 0xbb,0xe4,0xe9,0x09,0x20,0xf3,0xd9,0x52,0x16,0xa1,0xff,0x00,0x3a,0xc4,0x2b,0xec,
+ 0x6a,0x16,0x96,0xd2,0xc4,0xd7,0x72,0x1a,0xdf,0xd8,0x2c,0x59,0xe4,0xab,0x65,0xdb,
+ 0xfe,0xcf,0x6f,0x98,0xbd,0x82,0xdf,0xa8,0x7a,0x0b,0xaa,0xb7,0x6d,0x32,0xba,0x5f,
+ 0x6d,0x4d,0x33,0x75,0xb2,0xde,0x60,0x31,0x74,0x6d,0x2e,0x29,0x29,0x5f,0x48,0x2a,
+ 0x00,0x74,0x82,0x42,0x9b,0x59,0x42,0x89,0x42,0xd2,0xb4,0xab,0xa5,0x7d,0xf5,0x46,
+ 0x8e,0x78,0x78,0x6e,0x1f,0x01,0xd6,0xab,0x85,0xdd,0x8c,0xea,0x3e,0x0d,0xe4,0xa1,
+ 0x7d,0x59,0x9d,0xbe,0x59,0x92,0xa9,0xc1,0xd3,0xf3,0x25,0x2d,0x12,0x95,0xa8,0x93,
+ 0xc1,0x50,0x77,0xa0,0x72,0x01,0x04,0x90,0x2b,0xbb,0xf0,0xfc,0xde,0xae,0x35,0x3b,
+ 0x0d,0x46,0x8e,0x6a,0xe4,0xc8,0x4c,0xc3,0x65,0x01,0xab,0x35,0xd2,0xee,0x52,0x22,
+ 0xba,0xc2,0x7b,0x88,0x8f,0xad,0x5d,0x90,0x51,0xd2,0x0b,0x6b,0x51,0xe0,0x8e,0x13,
+ 0xc8,0x29,0x40,0x54,0x97,0xb9,0xce,0xd1,0x7d,0x14,0x7e,0xf9,0x9a,0xe4,0x19,0x46,
+ 0x19,0x77,0x89,0x6e,0x6d,0x57,0x0b,0x4d,0xbc,0x79,0x6f,0xcf,0x61,0x69,0x3d,0x6d,
+ 0x86,0x54,0xb7,0xdc,0x2b,0x73,0x90,0x12,0x85,0x36,0x86,0xcf,0x7e,0x49,0x3e,0xa2,
+ 0xd9,0xd2,0xcd,0x1b,0x8b,0x09,0xf4,0xd9,0x65,0x1b,0x14,0x32,0x34,0x3c,0x7b,0xee,
+ 0xaa,0x7b,0x75,0xfa,0x5e,0xbd,0x21,0xd7,0x0b,0xfe,0x3e,0xed,0xd6,0xe1,0x7c,0x90,
+ 0x92,0x99,0x0f,0x5d,0x2e,0xce,0xa5,0x52,0xe6,0x3a,0xb1,0xcb,0x92,0x1c,0x00,0x92,
+ 0x9f,0x31,0x7d,0x4e,0x24,0x29,0x4a,0x51,0x42,0xd0,0xa2,0xa3,0xd5,0xcd,0x6a,0x0a,
+ 0xcb,0xb5,0x5b,0x51,0x2e,0xfa,0xc7,0xa8,0xd9,0x36,0x6d,0x77,0x47,0xf4,0xeb,0xbc,
+ 0xc5,0xcb,0x79,0x0d,0xf2,0x50,0xc2,0x54,0x78,0x43,0x69,0x27,0xbf,0x4a,0x12,0x12,
+ 0x81,0xcf,0x7e,0x12,0x2b,0x11,0xac,0x9b,0x2f,0xa4,0x03,0xca,0xc6,0x3a,0xc5,0xc6,
+ 0xdc,0x2c,0x92,0xdb,0x87,0xb9,0x71,0xd3,0xbb,0xfe,0x4c,0x8e,0xb2,0x8b,0x55,0xc6,
+ 0x04,0x15,0x81,0xfb,0x3c,0x48,0x6e,0x52,0x81,0x3f,0x8f,0x31,0x87,0x1f,0x99,0xae,
+ 0x8a,0x4d,0xbe,0x4c,0x36,0x22,0x3c,0xfb,0x0e,0x32,0xd4,0xb6,0xcb,0xd1,0xd6,0xb4,
+ 0x90,0x1d,0x40,0x5a,0x90,0x54,0x93,0xee,0x3a,0x90,0xb4,0xf3,0xf5,0x49,0x1e,0xd5,
+ 0x28,0x74,0xff,0x00,0x4d,0x5e,0xff,0x00,0xe1,0xe1,0xaa,0xd9,0x83,0x8c,0xa9,0x28,
+ 0x7b,0x27,0xb6,0x21,0xa5,0x29,0x3c,0x75,0x25,0x82,0x1b,0xea,0x1f,0x51,0xd5,0x39,
+ 0x49,0xe7,0xea,0x08,0xf6,0xa9,0x39,0xb0,0xcd,0xbe,0x60,0x3b,0x8b,0xdb,0x36,0x2e,
+ 0xf6,0x6f,0x66,0x17,0x55,0xe2,0x99,0x24,0xff,0x00,0x85,0x48,0x70,0xa0,0x3a,0x85,
+ 0xa1,0x0b,0x2c,0xba,0x47,0x75,0x35,0xd6,0xe2,0x57,0xd2,0x08,0xf9,0x90,0x3d,0x8a,
+ 0x92,0xad,0x13,0x11,0xcd,0x50,0xe1,0x50,0xcf,0x57,0x33,0x4b,0xa3,0x8e,0x5e,0xcc,
+ 0xdb,0x91,0xfc,0xb0,0x76,0xff,0x00,0x23,0x6e,0x47,0x2a,0x46,0xc6,0x5c,0x40,0xf2,
+ 0x55,0xcd,0xa4,0x96,0xcf,0xb6,0xf5,0x57,0x0c,0xb7,0x71,0xd5,0xf1,0x77,0xa8,0x51,
+ 0xf8,0xfa,0xf5,0xbe,0x84,0xff,0x00,0xde,0xb7,0x27,0x88,0x76,0x1a,0xbc,0x33,0x77,
+ 0x59,0xdb,0x7e,0x52,0x9b,0x8d,0x72,0x75,0x8b,0xa3,0x0b,0x50,0xfe,0xb0,0x3c,0xca,
+ 0x14,0xb2,0x3f,0x0f,0x37,0xcd,0x4f,0xf6,0x4d,0x5d,0x76,0x3b,0x81,0x63,0x18,0x7c,
+ 0x66,0xe3,0xd8,0x71,0xcb,0x4d,0x92,0x3b,0x60,0x04,0x35,0x6e,0x82,0xd4,0x74,0xa4,
+ 0x0f,0x4e,0x02,0x12,0x38,0xaa,0xca,0xf1,0x87,0xc2,0xdc,0x85,0xa8,0xd8,0x06,0x58,
+ 0x13,0xcb,0x17,0x1b,0x5b,0xd6,0xd5,0x28,0x0f,0x45,0xc7,0x77,0xcc,0xee,0x7f,0x11,
+ 0x27,0xb7,0xfb,0xa7,0xe9,0x5a,0x36,0x03,0x9e,0x1b,0x98,0x73,0x24,0x31,0xb6,0x2e,
+ 0xcd,0xa5,0x8f,0x68,0xb9,0xbd,0xce,0xcf,0xbf,0x02,0xdb,0x33,0xcd,0x4c,0xf8,0xb4,
+ 0x46,0x56,0x82,0xd9,0x26,0xeb,0x67,0x6d,0x8f,0x53,0x9b,0x5c,0xc7,0x5c,0x7f,0x08,
+ 0xbc,0x2d,0x0c,0x5e,0xa1,0x24,0x75,0x74,0x27,0xd1,0x32,0x5b,0x1f,0xc6,0xdf,0x24,
+ 0xf1,0xfb,0xc9,0x2a,0x4f,0xaf,0x49,0x17,0x17,0xac,0x3a,0x51,0x8a,0xee,0x4f,0x49,
+ 0x66,0xe3,0x57,0x75,0x33,0x3a,0xcd,0x76,0x61,0x12,0x21,0x5c,0x63,0x10,0xe1,0x61,
+ 0xce,0x9e,0xa6,0x64,0xb2,0xa0,0x78,0x24,0x72,0x08,0x20,0xf0,0xa4,0x92,0x93,0xca,
+ 0x54,0x41,0xf3,0xfd,0x03,0x15,0xbc,0x5d,0x6c,0x17,0x5b,0xe4,0x3b,0x74,0x89,0x56,
+ 0x9b,0x52,0xd9,0x44,0xe9,0x6d,0x20,0xa9,0x11,0x8b,0xa5,0x41,0xa2,0xbe,0x3f,0x64,
+ 0x28,0xa0,0x80,0x4f,0x6e,0x78,0x1c,0xf2,0x40,0x36,0x77,0xe1,0x55,0xb9,0xb3,0x93,
+ 0x63,0x92,0x34,0x86,0xff,0x00,0x28,0xae,0xe7,0x68,0x6d,0x52,0xec,0x6e,0x39,0xea,
+ 0xec,0x4e,0x79,0x71,0x8e,0x7d,0xcb,0x6a,0x57,0x52,0x47,0xaf,0x42,0x88,0xf4,0x6e,
+ 0xa9,0xf1,0x13,0x01,0x3b,0x66,0x0c,0x34,0xda,0x68,0x48,0xd7,0xa7,0x9d,0xac,0x43,
+ 0xbd,0x5b,0xb5,0xff,0x00,0x09,0x07,0x80,0x90,0x3f,0xee,0x3b,0x82,0xa2,0x8e,0x96,
+ 0xea,0x16,0x7b,0xe1,0xbb,0xba,0x59,0x4c,0x5c,0x18,0x71,0xf6,0x22,0xb8,0x22,0x5d,
+ 0xed,0xe8,0x3c,0x33,0x77,0xb7,0xa8,0x85,0x25,0xc6,0xc9,0xed,0xcf,0x1c,0x2d,0x0a,
+ 0xf5,0x4a,0x81,0x4a,0xbf,0x7d,0x26,0xfa,0x30,0x3c,0xe6,0xc9,0xa9,0x98,0x6d,0x9f,
+ 0x2a,0xc6,0xe7,0xb5,0x74,0xb1,0x5d,0xa3,0x22,0x5c,0x49,0x4d,0x1e,0xcb,0x42,0x87,
+ 0xa1,0x1e,0xa9,0x50,0x3c,0x85,0x24,0xf7,0x49,0x04,0x10,0x08,0x22,0xa0,0xcf,0x88,
+ 0x86,0xd4,0xd1,0xaf,0xba,0x60,0xbc,0x8e,0xc3,0x0b,0xcc,0xce,0xf1,0xa6,0x56,0xf4,
+ 0x50,0xcb,0x7c,0xbb,0x3e,0x28,0xf9,0x9c,0x8a,0x78,0xee,0xa2,0x3b,0xad,0xb1,0xdf,
+ 0xe6,0xe5,0x20,0x7d,0xe1,0x35,0x1e,0xbc,0x23,0xb7,0x7a,0xbc,0x1b,0x32,0xff,0x00,
+ 0x33,0x19,0x54,0xf2,0x9c,0x7e,0xfa,0xf1,0x72,0xc2,0xf4,0x97,0x78,0x4c,0x39,0xe7,
+ 0xd6,0x38,0xea,0xf4,0x4b,0xfe,0xc0,0x1f,0xeb,0x40,0x00,0x12,0xe9,0x35,0xd0,0x72,
+ 0x8e,0x63,0x8f,0x32,0x61,0xc2,0x73,0xb4,0xad,0xd9,0xe3,0xa1,0xea,0x3c,0x9d,0xc8,
+ 0xf7,0x1e,0x0a,0x09,0x63,0xec,0xdd,0x6f,0x05,0x71,0x34,0xa5,0x2b,0x77,0x51,0x25,
+ 0x29,0x4a,0x22,0x52,0x94,0xa2,0x25,0x46,0x0f,0x10,0xbd,0xd2,0x0d,0xb0,0x68,0x24,
+ 0xe9,0x56,0xa9,0x48,0x67,0x35,0xbf,0xf5,0x5b,0x6c,0x68,0x3d,0xd4,0xda,0xc8,0xfb,
+ 0xd9,0x20,0x7f,0xb2,0x41,0xe4,0x1e,0xe3,0xad,0x4d,0x82,0x08,0x35,0x27,0xeb,0xcf,
+ 0x9f,0x88,0x76,0xe5,0x17,0xb9,0x1d,0xc5,0xde,0x26,0x40,0x96,0xe3,0xd8,0x95,0x80,
+ 0xaa,0xd1,0x65,0x6c,0xab,0xee,0xd4,0xda,0x14,0x43,0xb2,0x12,0x07,0x6f,0xbd,0x70,
+ 0x29,0x41,0x5e,0xa5,0x01,0xb0,0x7f,0x64,0x00,0x45,0xa1,0x30,0x1c,0x1e,0xf3,0xaa,
+ 0x39,0xc5,0x9b,0x16,0xb1,0xb0,0x65,0xde,0xaf,0x12,0xd1,0x16,0x3a,0x54,0x4f,0x1d,
+ 0x4a,0x3d,0xd4,0xb2,0x01,0xe1,0x29,0x1c,0xa9,0x4a,0xf6,0x00,0x9f,0x6a,0xbf,0x9d,
+ 0x06,0xd1,0x9b,0x2e,0x81,0x69,0x5d,0x8f,0x0a,0xb2,0x24,0x29,0x88,0x0d,0x73,0x22,
+ 0x57,0x4f,0x0b,0x97,0x21,0x5d,0xdd,0x79,0x5d,0xcf,0x75,0x2b,0x9e,0x07,0x3f,0x28,
+ 0xe9,0x48,0xec,0x91,0x50,0x97,0xc2,0x6f,0x6e,0x7f,0x66,0xda,0x2e,0x5a,0xc1,0x7a,
+ 0x8a,0xa1,0x26,0x77,0x5d,0xba,0xc2,0x97,0x12,0x38,0x4b,0x00,0xf0,0xfc,0x81,0xf8,
+ 0xa9,0x43,0xcb,0x07,0xb7,0x01,0x0e,0x7a,0x85,0x0a,0xb1,0x95,0xad,0x2d,0x21,0x4b,
+ 0x5a,0x82,0x10,0x90,0x4a,0x94,0xa3,0xc0,0x03,0xdc,0x9a,0xf9,0x4b,0xe2,0x5e,0x63,
+ 0x38,0x85,0x77,0xd9,0x54,0xee,0xfe,0x5c,0x27,0xbd,0xe6,0xff,0x00,0x1f,0xcb,0xc7,
+ 0xad,0xd6,0x46,0x06,0x69,0x1a,0x8f,0x8a,0xe8,0xb3,0xec,0x2e,0x06,0xa3,0xe1,0x77,
+ 0xac,0x5e,0xea,0xe4,0x96,0xad,0x97,0x78,0xab,0x87,0x28,0xc3,0x74,0xb4,0xe9,0x69,
+ 0x63,0x85,0x80,0xa1,0xe9,0xc8,0xe4,0x1f,0xc0,0x9a,0xd6,0xfa,0x57,0xb5,0xed,0x24,
+ 0xdb,0x5c,0x29,0x77,0x9c,0x67,0x16,0x62,0x14,0xc8,0xcc,0x38,0xf3,0xf7,0x89,0x01,
+ 0xc9,0xb3,0x42,0x02,0x0f,0x5f,0x42,0x95,0xd4,0xa4,0xf2,0x9e,0x41,0x43,0x40,0x75,
+ 0x7d,0x09,0xae,0xbf,0x6e,0xdb,0xc1,0xc3,0xb7,0x29,0x96,0x66,0xd6,0x2c,0x71,0x0e,
+ 0xb2,0xe6,0x3b,0x20,0x06,0x1e,0x7d,0x63,0x8b,0x94,0x52,0x7a,0x7e,0x25,0xb4,0xf6,
+ 0x29,0x4f,0x58,0x23,0x83,0xdc,0x05,0x36,0x4f,0x05,0x65,0x29,0xde,0xd5,0xcc,0x67,
+ 0x38,0x9e,0x11,0xaf,0x0d,0xa8,0x2f,0x8c,0x1b,0x17,0x32,0xe4,0x5e,0xe0,0x11,0x71,
+ 0xc1,0xdb,0xad,0xed,0xd2,0xea,0x71,0xa5,0xdd,0xe0,0xab,0x73,0x77,0x1e,0x28,0x96,
+ 0xd7,0x6c,0x93,0x71,0x4d,0x1a,0x7d,0xf9,0x13,0x24,0xa0,0xb5,0x23,0x2c,0x5b,0x6a,
+ 0x65,0x2c,0x20,0x8f,0x98,0x45,0x42,0xc0,0x59,0x5f,0x7e,0x3c,0xc5,0x04,0xf4,0xf0,
+ 0x4a,0x42,0x89,0x0a,0x4f,0x55,0xe1,0x05,0xa5,0x0b,0x99,0x78,0xcd,0x75,0x36,0x68,
+ 0x2a,0x4b,0x08,0x4d,0x8e,0x12,0x95,0xdf,0xa9,0xc5,0xf4,0xbd,0x21,0x47,0xe8,0x40,
+ 0x0c,0x80,0x7d,0xfc,0xc5,0x7d,0x2a,0x18,0xee,0x87,0x00,0x6b,0x4e,0x77,0x1b,0xa8,
+ 0x38,0xc4,0x06,0xba,0x62,0x45,0xbd,0x3f,0xf0,0x6c,0x36,0x3f,0x61,0x97,0x15,0xe6,
+ 0x34,0x80,0x3d,0xf8,0x42,0xd2,0x3f,0x4a,0xba,0x5d,0xa2,0xe8,0xea,0xb4,0x2b,0x6f,
+ 0x78,0x86,0x2b,0x26,0x32,0x63,0x5d,0xd1,0x1b,0xe3,0x2e,0x89,0x1c,0x15,0x7c,0x5b,
+ 0xc7,0xcc,0x74,0x28,0x8e,0xca,0x28,0xe4,0x37,0xcf,0xd1,0xb1,0x5d,0xc7,0x33,0x33,
+ 0x0d,0xcb,0x39,0x59,0x94,0xb8,0x58,0xb1,0xaa,0xd3,0xb9,0xdd,0xce,0x6d,0x83,0x89,
+ 0x27,0xd2,0xc2,0xc0,0x00,0x35,0x6c,0x37,0x56,0xb1,0xea,0x92,0x4b,0xbb,0xc1,0x44,
+ 0x6f,0x18,0x0d,0x57,0x10,0xec,0x18,0x5e,0x9c,0x44,0x96,0x03,0xd3,0x1e,0x5d,0xee,
+ 0xe0,0xc2,0x09,0x0a,0x0d,0x23,0xa9,0xa8,0xfd,0x5f,0x54,0xa9,0x4a,0x7c,0xf1,0xf5,
+ 0x68,0x1f,0x61,0x53,0xd7,0x18,0x74,0xe2,0xba,0x6d,0x68,0x72,0xe0,0xb5,0x28,0xdb,
+ 0x6d,0x0c,0xaa,0x42,0xdc,0x3f,0x31,0xf2,0xd9,0x1d,0x64,0x93,0xef,0xf2,0x9a,0xa4,
+ 0x0d,0xcf,0x6a,0x7a,0xf7,0x23,0xba,0x7b,0xdd,0xd6,0x17,0xf4,0x8b,0x7c,0xcb,0x9b,
+ 0x56,0x9b,0x4a,0x1b,0x57,0x50,0x5c,0x66,0xd4,0x19,0x69,0x49,0xff,0x00,0xc4,0xe0,
+ 0xb9,0xc7,0xd5,0xc3,0x57,0x3f,0xb8,0x5b,0x81,0xc7,0xf6,0xf7,0xa8,0xf2,0xd2,0xae,
+ 0x83,0x17,0x1a,0xb8,0x29,0x2a,0x1e,0xc4,0x46,0x5f,0x15,0xab,0xe6,0x6c,0x23,0xec,
+ 0xdc,0x2f,0x06,0xc2,0xdc,0x2c,0xf7,0x6a,0x73,0xba,0xea,0x79,0x67,0xed,0x7b,0x7b,
+ 0x29,0x23,0x7d,0xdc,0xe7,0x2a,0xaa,0xc6,0xb6,0x5f,0x97,0xeb,0xbe,0xd7,0x74,0xff,
+ 0x00,0x2f,0xc1,0xac,0xad,0xdd,0xb2,0x49,0x17,0x7b,0x9b,0x77,0x15,0x39,0x29,0x98,
+ 0xe5,0xc8,0xc5,0xc0,0x1b,0x59,0x53,0xab,0x48,0x21,0x0e,0x34,0xe8,0xe0,0x72,0x7e,
+ 0xf7,0xd3,0x81,0xdb,0xfb,0xb7,0xf8,0x54,0x6b,0xa4,0xc4,0xa4,0xbc,0xce,0x3b,0x00,
+ 0x9f,0x51,0x22,0xe9,0xc9,0x1f,0xe0,0x42,0xaa,0xca,0xb6,0x4f,0x88,0x7f,0x90,0xbb,
+ 0x50,0xd3,0x4b,0x62,0xb9,0x05,0x56,0x94,0xdc,0x17,0xd5,0xfb,0xa6,0x4a,0xd7,0x24,
+ 0x83,0xf9,0x17,0x88,0xfd,0x2b,0x76,0x25,0x41,0x69,0x0a,0x49,0x0a,0x49,0x1c,0x82,
+ 0x3d,0x08,0xa9,0xab,0xbe,0x23,0xe2,0xf4,0x35,0x75,0x14,0xd4,0x9a,0x0c,0x6d,0x91,
+ 0xfa,0x49,0x04,0x9b,0x6a,0x36,0xf1,0xb7,0xa6,0xdc,0x2a,0x08,0x1a,0x40,0x25,0x53,
+ 0x3d,0xdb,0xc2,0xaf,0x5d,0x6d,0xcc,0xa9,0x71,0xe2,0xe3,0xf7,0x55,0x01,0xc8,0x6e,
+ 0x25,0xd4,0x25,0x47,0xf0,0x1e,0x6a,0x50,0x3f,0xbc,0xd6,0x00,0xf6,0xc1,0x35,0xee,
+ 0x26,0x43,0x6d,0xb4,0x49,0xd3,0xbb,0x83,0x2e,0xce,0x7d,0x2c,0x26,0x52,0x1d,0x69,
+ 0xf8,0xac,0xf3,0xfb,0xee,0xba,0xd2,0xd6,0x96,0xd0,0x07,0x72,0xa5,0x1f,0xcb,0x93,
+ 0xc0,0xab,0xcc,0xba,0x5e,0x6d,0xf6,0x38,0xe9,0x7e,0xe5,0x3a,0x35,0xbd,0x85,0x28,
+ 0x20,0x3b,0x29,0xe4,0xb4,0x92,0xa3,0xe8,0x39,0x51,0x03,0x9e,0xc7,0xb5,0x75,0x12,
+ 0xf5,0x23,0x13,0x83,0x02,0x54,0xd7,0xf2,0x6b,0x4b,0x71,0x22,0xb4,0xa7,0x9e,0x77,
+ 0xe3,0x5b,0x21,0xb4,0x24,0x12,0xa5,0x1e,0x15,0xe8,0x00,0x27,0xf4,0xa5,0x3f,0xc5,
+ 0x0c,0x7e,0xdb,0xc2,0xc7,0xdf,0xf0,0xbb,0x9f,0x67,0x5b,0xf4,0x43,0x4e,0xc5,0x50,
+ 0x5b,0xc4,0xd2,0xcb,0x56,0x82,0xc1,0xc0,0x34,0x27,0x11,0x22,0xef,0x7e,0x7c,0x22,
+ 0xf3,0x90,0x4d,0x69,0x20,0xbd,0x72,0xb8,0xba,0x4b,0x31,0x9b,0xe3,0xb9,0x42,0x5b,
+ 0x4f,0x9b,0xd0,0xdf,0x3e,0x8f,0xf5,0x1e,0x4a,0x8a,0x8c,0x59,0xc9,0xb1,0xd9,0x58,
+ 0xb6,0x51,0x75,0xb0,0xca,0xe9,0x5c,0xdb,0x74,0xc7,0x60,0xbb,0xe5,0x72,0x52,0x5c,
+ 0x6d,0x65,0x0a,0xe9,0xfa,0x8e,0x41,0xe2,0xa6,0x16,0xda,0x10,0xf6,0xef,0xbc,0x42,
+ 0xe4,0x66,0xf3,0x1a,0x71,0x16,0xc8,0xb3,0xdd,0xc9,0x14,0xd3,0x87,0x95,0xb5,0x1e,
+ 0x39,0x4a,0x21,0xb6,0x4f,0xa1,0x29,0x57,0xc3,0x24,0xfd,0x42,0x55,0xc5,0x70,0xb4,
+ 0xc3,0x45,0x86,0xa4,0xf8,0x95,0xdf,0xec,0x12,0xa1,0x99,0x16,0x9b,0x56,0x5b,0x72,
+ 0xbb,0xce,0x41,0x48,0x28,0xf8,0x76,0x24,0x2d,0xc4,0x75,0x8f,0xe0,0x5a,0xfc,0x94,
+ 0x11,0xef,0xe6,0x71,0xef,0x5d,0x92,0x87,0x16,0xfb,0x22,0x37,0xd2,0xd6,0xbb,0x54,
+ 0x91,0x43,0xdb,0x4a,0x7c,0x4b,0x9c,0x49,0x23,0xdb,0x80,0x3a,0x69,0x03,0x6b,0x05,
+ 0x6c,0xe6,0xea,0xdc,0x78,0x9b,0x29,0x93,0xa8,0x3a,0x10,0xbd,0x3e,0xf0,0xc9,0xbc,
+ 0x60,0x6f,0xa0,0x19,0xd6,0xdc,0x6c,0x5c,0xa6,0xa5,0x3d,0xc0,0x92,0x87,0x93,0x35,
+ 0xe0,0x08,0xf5,0x09,0x5a,0x54,0x01,0xf7,0x09,0x15,0xd4,0xf8,0x46,0x3f,0xe6,0xed,
+ 0xb2,0xfa,0xdf,0xfa,0xbc,0x9a,0x40,0xfe,0xf8,0xd1,0x8f,0xfd,0xea,0x4f,0xee,0x12,
+ 0x0f,0xda,0x9a,0x09,0xa9,0x30,0xf8,0xea,0xf3,0xf1,0xbb,0x93,0x7c,0x7d,0x79,0x8a,
+ 0xe0,0xa8,0x9b,0xe0,0xfd,0x2c,0x2f,0x42,0x73,0x18,0xbf,0xbc,0xd6,0x48,0xa7,0x0f,
+ 0xe4,0xa8,0xac,0x0f,0xfd,0x86,0xb8,0x24,0x75,0x92,0xd7,0xe5,0x4c,0x42,0x49,0x4d,
+ 0xdc,0x67,0x6b,0xcf,0xab,0xf9,0xfd,0x95,0xd9,0x16,0x91,0xa0,0x74,0x53,0xc6,0xa1,
+ 0xcf,0x8a,0xa6,0x04,0xee,0x59,0xb6,0x05,0x5e,0x23,0xb6,0x16,0xee,0x37,0x76,0x8d,
+ 0x3d,0xc3,0xc7,0x2a,0xf2,0x57,0xd5,0x1d,0x5c,0x7f,0x69,0xe6,0xc9,0xfc,0x12,0x4f,
+ 0xb5,0x6b,0x1f,0x10,0xfd,0x6e,0xcc,0xb4,0x2b,0x73,0x9a,0x57,0x7d,0xb3,0x64,0x97,
+ 0x78,0x36,0x06,0xe0,0xb4,0xfc,0xcb,0x3c,0x79,0xae,0x26,0x1c,0xb0,0xdc,0xb7,0x3c,
+ 0xe0,0xe3,0x21,0x5d,0x0a,0x2b,0x6d,0x41,0x24,0x91,0xcf,0x01,0x3d,0xfe,0x51,0xc4,
+ 0xe1,0xd5,0x6c,0x32,0x36,0xb0,0x69,0x0e,0x51,0x8c,0xb3,0x21,0x95,0x33,0x90,0x5a,
+ 0x1f,0x8b,0x1e,0x57,0x3d,0x6d,0x85,0x3a,0xd1,0xf2,0x9c,0xe4,0x7a,0x80,0xa2,0x95,
+ 0x76,0xfa,0x56,0x22,0x8a,0x92,0x5c,0xb9,0x3e,0x19,0x8d,0x3d,0xc0,0xc7,0x21,0xd5,
+ 0xe8,0x1a,0xeb,0x38,0x1f,0x62,0xbd,0x92,0x1e,0x1c,0xc5,0x1b,0xfc,0x38,0xf4,0x47,
+ 0x05,0xb4,0xed,0x75,0xab,0xa4,0x50,0xde,0x4a,0xe6,0x6e,0xd2,0x95,0x7c,0x33,0xe3,
+ 0x8f,0x2d,0x5d,0x05,0x6d,0x18,0x65,0xa2,0x48,0x2d,0xb6,0x7c,0xd1,0xc9,0xee,0xbe,
+ 0xb2,0xae,0xc0,0xa5,0x29,0x8a,0x9b,0xa1,0xda,0x56,0x4f,0xb2,0xcd,0x49,0xb6,0x6a,
+ 0xfe,0x96,0x17,0xe4,0xe2,0x10,0x27,0x22,0x5a,0x01,0x2a,0x5b,0x96,0x85,0xf5,0x01,
+ 0xe4,0x3e,0x41,0xea,0x5c,0x77,0x3a,0x8a,0x02,0xc9,0xf4,0x51,0x42,0xcf,0x24,0x29,
+ 0x7b,0x93,0xc2,0x33,0x52,0x25,0x2b,0x1a,0xce,0xb4,0xce,0xe6,0x3c,0xa9,0x56,0x49,
+ 0x89,0xb9,0x46,0x69,0xc3,0xf7,0x89,0x4b,0x9f,0x76,0xfa,0x38,0xf6,0x08,0x5b,0x68,
+ 0x3f,0x9b,0xa7,0xf0,0xab,0x03,0xb8,0x5b,0xe2,0xdd,0xa0,0x49,0x83,0x3a,0x33,0x33,
+ 0x61,0x49,0x6d,0x4c,0xbf,0x1a,0x43,0x61,0xc6,0xdd,0x6d,0x43,0x85,0x21,0x49,0x3c,
+ 0x85,0x24,0x82,0x41,0x07,0xb1,0x06,0xb6,0x3c,0x47,0x1c,0xc4,0x32,0xc6,0x66,0xac,
+ 0xed,0x5d,0xda,0xc7,0x23,0xbb,0xcd,0x77,0x0f,0x63,0x87,0x77,0xc8,0x10,0xd2,0x00,
+ 0x20,0x6d,0xc5,0xad,0x70,0xa3,0x6b,0x1b,0x24,0x63,0xc1,0x62,0x9a,0x3b,0xaa,0x76,
+ 0x8d,0x6a,0xd3,0x3c,0x7f,0x35,0xb1,0xac,0x7c,0x05,0xda,0x32,0x5e,0xf2,0xba,0xfa,
+ 0x94,0xc3,0x83,0xe5,0x71,0x95,0x1e,0x07,0xcc,0x85,0x85,0x24,0xf6,0xef,0xd3,0xcf,
+ 0xa1,0xaa,0xa2,0xf1,0x1f,0xdb,0x83,0xba,0x0d,0xac,0x71,0xf3,0x8c,0x61,0xa5,0xdb,
+ 0xf1,0xac,0x95,0xf5,0x4c,0x8e,0xa8,0x61,0x4d,0x8b,0x7d,0xc1,0x24,0x29,0xc4,0x25,
+ 0x43,0xf6,0x3a,0x8f,0xde,0xa3,0x82,0x38,0xe5,0x61,0x20,0x06,0xea,0xc4,0xb4,0x53,
+ 0x43,0xe5,0x6d,0xa7,0x3d,0xbc,0xd9,0x71,0xa2,0xf4,0xbd,0x2c,0xc9,0x1d,0x54,0xe8,
+ 0xb0,0x55,0xf3,0xb9,0x61,0xb8,0x00,0x3a,0xd0,0x0f,0xaa,0xa3,0xba,0x80,0x38,0x51,
+ 0x27,0xa1,0x4d,0xa5,0x27,0xf6,0xfa,0x8e,0x59,0xb9,0x8d,0x11,0x83,0xb8,0x4d,0x18,
+ 0xc8,0xb0,0xc9,0x41,0x28,0x97,0x25,0x9f,0x3e,0xdd,0x25,0x5d,0xbe,0x1e,0x62,0x39,
+ 0x53,0x2b,0xe7,0xe9,0xd5,0xf2,0xab,0xea,0x95,0x28,0x76,0xe6,0xb1,0x78,0x0e,0x35,
+ 0x06,0x59,0xc7,0x84,0xf4,0xaf,0xbd,0x2c,0x9b,0x1e,0xba,0x0f,0x51,0xfd,0x4c,0x3c,
+ 0xf5,0xb1,0xb6,0xce,0xb9,0xf4,0xf6,0x19,0x19,0x63,0xca,0xee,0x36,0x27,0xb9,0xb6,
+ 0xf7,0x49,0xa0,0x56,0xac,0x82,0x5b,0xa9,0x39,0x4d,0xb4,0x8b,0x65,0xf5,0xa4,0xa4,
+ 0x27,0x99,0x48,0x48,0x3e,0x68,0x48,0xe0,0x04,0xba,0x92,0x95,0x8e,0x00,0x00,0xa9,
+ 0x49,0x1f,0xb3,0x52,0x1e,0xa8,0x67,0xc3,0x97,0x5e,0xe7,0x6d,0x77,0x74,0x88,0xc7,
+ 0xb2,0x4e,0xbb,0x5d,0x93,0x21,0x7c,0x63,0xb7,0xc8,0xd2,0xd5,0xe5,0x88,0x92,0x43,
+ 0x85,0x2c,0xba,0xb0,0x48,0x00,0xb6,0xe9,0x28,0x25,0x5d,0x92,0x87,0x1c,0x35,0x7c,
+ 0xd5,0xf6,0x50,0x21,0xc0,0x39,0xa6,0xe0,0xac,0x5a,0x52,0x94,0xaa,0xa2,0x52,0x94,
+ 0xa2,0x28,0xb1,0xe2,0x4b,0xb8,0x03,0xa0,0x7b,0x5f,0xbf,0x39,0x01,0xf7,0x18,0xc8,
+ 0xb2,0x52,0x6c,0x36,0xc5,0xb2,0xae,0x95,0xb4,0xa7,0x50,0xaf,0x35,0xd0,0x79,0x05,
+ 0x3d,0x0d,0x07,0x38,0x50,0xee,0x16,0x51,0xf5,0xe4,0x51,0x6e,0x90,0x69,0x9d,0xcf,
+ 0x58,0xf5,0x37,0x1b,0xc2,0xec,0xe8,0x26,0x75,0xe2,0x62,0x23,0x05,0xf1,0xc8,0x65,
+ 0xbf,0x57,0x1d,0x57,0xf2,0xa1,0x01,0x4b,0x3f,0x82,0x4d,0x4b,0x9f,0x17,0xad,0x6f,
+ 0x1a,0x91,0xb9,0x16,0x70,0xf8,0x32,0x54,0xed,0xa3,0x0a,0x88,0x21,0xa9,0x00,0x82,
+ 0x83,0x35,0xde,0x1c,0x90,0xa1,0xf9,0x27,0xc9,0x6c,0xf3,0xe8,0x5a,0x57,0xeb,0x9b,
+ 0x78,0x44,0x68,0x98,0x9b,0x76,0xca,0x35,0x4a,0xe3,0x13,0xa9,0xb8,0x43,0xec,0x6b,
+ 0x4b,0xab,0xe3,0x8f,0x35,0x40,0x2e,0x4a,0xd2,0x3d,0x79,0x4a,0x0b,0x68,0x07,0xd3,
+ 0x87,0x56,0x3e,0xbc,0x6b,0x19,0x97,0x17,0x6e,0x07,0x85,0x4f,0x5d,0xf7,0x9a,0x2c,
+ 0xdf,0x37,0x1d,0x9b,0xfa,0xee,0x7c,0x81,0x52,0x46,0xdd,0x6e,0x01,0x59,0x1e,0x15,
+ 0x87,0xda,0xf4,0xff,0x00,0x11,0xb3,0x63,0x36,0x48,0xe2,0x2d,0xa2,0xd3,0x11,0xa8,
+ 0x51,0x5a,0xe7,0x92,0x96,0xd0,0x90,0x91,0xc9,0xf7,0x27,0x8e,0x49,0x3d,0xc9,0x24,
+ 0x9f,0x5a,0x88,0x9e,0x27,0xfb,0x8e,0x3a,0x57,0xa4,0xad,0xe0,0xb6,0x69,0x41,0xbc,
+ 0x93,0x2f,0x6d,0x6d,0x3c,0x5b,0x73,0x87,0x23,0xdb,0xc7,0x67,0x54,0x40,0xee,0x3c,
+ 0xc3,0xf7,0x43,0x9e,0xc4,0x79,0xbc,0x77,0x4d,0x4d,0x37,0x1c,0x43,0x4d,0xa9,0x6e,
+ 0x29,0x28,0x42,0x41,0x52,0x94,0xa3,0xc0,0x48,0x1e,0xa4,0x9f,0x61,0x54,0x07,0xba,
+ 0xfd,0x6c,0x7f,0x5f,0xf5,0xdf,0x27,0xcb,0x0b,0xbd,0x76,0xc5,0x3e,0x62,0x5a,0xd0,
+ 0x39,0x01,0x10,0x9a,0x25,0x2d,0x70,0x0f,0x70,0x54,0x39,0x59,0xfe,0x65,0xab,0xd3,
+ 0xd2,0xbe,0x65,0xf8,0x7b,0x82,0x1c,0x73,0x19,0x35,0x55,0x3d,0xe6,0x43,0xdf,0x75,
+ 0xfc,0x5c,0x4f,0x74,0x1f,0x7b,0xb8,0xf5,0xb7,0x9a,0xbf,0x99,0xfa,0x1b,0x61,0xe2,
+ 0xb7,0x1f,0x85,0x65,0xd5,0xeb,0x76,0xec,0x22,0x47,0x6c,0x90,0x89,0xf6,0x69,0xb1,
+ 0x9d,0x03,0xdd,0x20,0x25,0xde,0xff,0x00,0xda,0x69,0x35,0x73,0x55,0x53,0x5e,0x11,
+ 0x9a,0x5d,0x3a,0xf5,0xab,0xd9,0x0e,0x76,0xe3,0x5d,0x36,0x8b,0x1d,0xb9,0x50,0x50,
+ 0xe9,0xf5,0x5c,0xa7,0xd4,0x9e,0x12,0x9f,0xaf,0x4b,0x68,0x70,0x9f,0xa7,0x52,0x3e,
+ 0xb5,0x63,0xfb,0x8a,0xd5,0x96,0x74,0x3f,0x45,0x72,0xcc,0xcd,0x7d,0x0a,0x93,0x6e,
+ 0x86,0xaf,0x82,0x69,0xcf,0x47,0x65,0x2f,0x84,0x30,0x8e,0x3d,0x48,0x2e,0x29,0x1c,
+ 0xf1,0xdf,0x8e,0x4f,0xb5,0x5d,0xfc,0x46,0x68,0xaf,0xcc,0xcd,0xa5,0xa6,0xdd,0xe5,
+ 0xac,0x65,0xbf,0x11,0x26,0xc3,0xe8,0x42,0xa4,0x1b,0x47,0x72,0xab,0xd7,0x46,0xb4,
+ 0xb1,0xbd,0xcf,0xf8,0x8c,0xea,0x06,0x59,0x2e,0x3a,0x65,0xe2,0x38,0xad,0xf1,0xd9,
+ 0xaf,0x38,0x4f,0xdd,0xbe,0xe3,0x0e,0x79,0x30,0xd1,0xf8,0x85,0x29,0xa0,0xe7,0x07,
+ 0xb1,0x4b,0x6a,0x07,0xd4,0x03,0x64,0x7a,0xb7,0x85,0xdc,0x75,0x1b,0x4d,0x32,0x4c,
+ 0x5e,0xd5,0x7d,0xff,0x00,0x26,0xa6,0xde,0x21,0x2e,0x12,0x6e,0xa2,0x31,0x90,0x63,
+ 0xa1,0x7f,0x2b,0x84,0x36,0x16,0x8e,0x54,0x50,0x54,0x01,0xea,0x1c,0x12,0x0f,0x7e,
+ 0x38,0x3a,0xc7,0x65,0x1a,0x06,0xad,0x01,0xd0,0xeb,0x65,0xbe,0xe4,0xd2,0x46,0x57,
+ 0x78,0x57,0xda,0xd7,0xc7,0x88,0xe5,0xc3,0x25,0xc0,0x08,0x69,0x47,0xfd,0x9a,0x7a,
+ 0x51,0xc0,0xed,0xd4,0x16,0x47,0xed,0x12,0x79,0x5a,0xa3,0xbd,0x7d,0x1c,0xd1,0xbc,
+ 0xc5,0xfc,0x5b,0x29,0xcb,0x93,0x0e,0xf9,0x1d,0x28,0x54,0x88,0xac,0x43,0x7e,0x47,
+ 0x91,0xd4,0x02,0x92,0x16,0xa6,0xd0,0xa0,0x0f,0x04,0x1e,0x9e,0x79,0xe0,0x8e,0xdd,
+ 0xc5,0x61,0x71,0xca,0xda,0xbc,0x6f,0x16,0x64,0x58,0x4b,0x1d,0x23,0x69,0x83,0x5b,
+ 0x18,0x6b,0x75,0x6c,0xcb,0x0d,0x56,0xb1,0x04,0x13,0xd4,0x5a,0xd6,0x05,0x7b,0x60,
+ 0x0c,0x6d,0xdd,0xe2,0xb4,0x66,0x8b,0x78,0x54,0x62,0x5a,0x5d,0x9c,0x58,0x32,0x9b,
+ 0xbe,0x6b,0x73,0xc9,0xa7,0x59,0x66,0xb5,0x70,0x8f,0x1d,0xb8,0x4d,0xc3,0x8e,0xb7,
+ 0x5a,0x58,0x5a,0x3a,0xd3,0xd4,0xe2,0x8a,0x42,0x80,0x3c,0x05,0x0e,0x78,0xef,0xdb,
+ 0xb5,0x6d,0x2f,0x11,0x4c,0xac,0xe2,0x9b,0x41,0xce,0xd4,0xdb,0xbe,0x5c,0x9b,0x82,
+ 0x23,0x5b,0x9a,0xe7,0xf7,0xbc,0xd9,0x0d,0x87,0x07,0xfe,0x50,0x72,0xb7,0x9e,0x07,
+ 0x9f,0xe3,0xba,0x9f,0x8b,0x42,0xc8,0xf1,0x5b,0xbc,0x6b,0xe5,0x92,0x62,0x4a,0x99,
+ 0x99,0x15,0x5c,0xa4,0xf0,0x78,0x29,0x20,0xf0,0x52,0xa0,0x7b,0x14,0xa8,0x02,0x0f,
+ 0x62,0x05,0x42,0x2f,0x18,0x0c,0xe9,0x8b,0x66,0x92,0x61,0x78,0x92,0x54,0x7e,0x32,
+ 0xef,0x77,0x5c,0xf3,0xc1,0xec,0x19,0x8c,0xd1,0x4a,0x81,0xfc,0xd5,0x21,0xbe,0x3f,
+ 0xdd,0x35,0x2e,0x15,0x57,0x8a,0x66,0x2c,0xcd,0x46,0xcc,0x51,0xe5,0xef,0x63,0xc6,
+ 0xc4,0x01,0x60,0xd3,0xa8,0x8b,0x00,0x00,0xe3,0x7d,0x95,0x1c,0x1a,0xc8,0xce,0x95,
+ 0x5a,0x79,0x46,0xb3,0xe7,0xb9,0xb5,0x92,0x35,0x9a,0xfd,0x99,0x5f,0x2e,0xd6,0x78,
+ 0xc8,0x43,0x6c,0xdb,0xa5,0xcf,0x75,0x71,0xd0,0x94,0x00,0x10,0x03,0x65,0x5d,0x3d,
+ 0x80,0x1c,0x76,0xab,0xda,0xdb,0x06,0x28,0xee,0x13,0xb7,0x5d,0x37,0xb2,0xbe,0x16,
+ 0x99,0x31,0xac,0x10,0xcb,0xe8,0x73,0xd5,0x0e,0xad,0xa4,0xad,0x69,0xfd,0x14,0xa5,
+ 0x0f,0xd2,0xa8,0x63,0x4c,0x70,0xc7,0xf5,0x17,0x51,0xf1,0x6c,0x56,0x31,0xe8,0x7e,
+ 0xf5,0x74,0x8d,0x6f,0x4a,0xf8,0xe4,0x23,0xcd,0x75,0x28,0xea,0x3f,0x80,0xea,0xe4,
+ 0xfe,0x02,0xbd,0x19,0x32,0xc2,0x23,0x32,0xdb,0x2d,0x27,0xa5,0xb6,0xd2,0x10,0x94,
+ 0x8f,0x60,0x3b,0x01,0x5b,0xf7,0xc5,0x79,0x62,0xa7,0x86,0x92,0x86,0x16,0x86,0x82,
+ 0x5c,0xf2,0x00,0xb7,0x40,0x0e,0xdd,0x6e,0x7e,0x8a,0x1a,0x70,0x4d,0xc9,0x55,0x27,
+ 0xe2,0xe7,0x9f,0x39,0x7b,0xd7,0x2c,0x7b,0x15,0x6a,0x61,0x76,0x15,0x8a,0xce,0x97,
+ 0x9c,0x8c,0x15,0xf2,0xb5,0x25,0xf5,0xa9,0x4a,0x24,0x7f,0x11,0x6d,0x0c,0x1f,0xcb,
+ 0x8f,0xad,0x41,0x4a,0xdc,0x5b,0xc3,0xcb,0xd7,0x9c,0xee,0x87,0x53,0x2e,0xcb,0x74,
+ 0x3e,0x3e,0xda,0x7e,0x1b,0x6e,0x03,0xc8,0x2d,0xc7,0x3f,0x0e,0xdf,0x07,0xdc,0x74,
+ 0x34,0x9a,0xfb,0xed,0x13,0x6f,0x12,0xf7,0x29,0xad,0x16,0xac,0x67,0x87,0x5a,0xb1,
+ 0x47,0xfe,0x9b,0x79,0x96,0xd8,0xfe,0xa6,0x22,0x08,0xea,0x48,0x3e,0xca,0x59,0x21,
+ 0xb4,0x9f,0x62,0xbe,0x78,0x21,0x26,0xba,0xd6,0x0a,0xd8,0x32,0xfe,0x5d,0x80,0xd4,
+ 0x1d,0x2d,0x8e,0x30,0xe7,0x7a,0x91,0xa9,0xdf,0xa9,0x36,0xf1,0x2a,0xd9,0xf7,0x7c,
+ 0x86,0xca,0xc6,0x3c,0x2b,0x74,0x31,0xcd,0x3c,0xd1,0x49,0x99,0xb5,0xca,0x3a,0x5b,
+ 0xbb,0x66,0x0e,0xa5,0xe6,0x39,0x07,0xad,0x10,0x5a,0xea,0x4b,0x5c,0xf2,0x3b,0x75,
+ 0xa8,0xb8,0xbe,0xdd,0x8a,0x4b,0x67,0xf0,0x19,0xd6,0xdf,0x74,0x87,0xec,0x0d,0xdc,
+ 0x6e,0x23,0x35,0x5b,0x48,0xf2,0x64,0x4d,0x81,0x6d,0x88,0xe8,0xf5,0xea,0x72,0x1b,
+ 0x12,0xe4,0x8f,0xcb,0x97,0x63,0xfe,0xa0,0xfd,0x2a,0x4b,0xdb,0xad,0xd1,0x6c,0xf6,
+ 0xf8,0xb0,0x20,0xc6,0x6a,0x1c,0x18,0xad,0x21,0x86,0x23,0x30,0x80,0x86,0xda,0x6d,
+ 0x20,0x25,0x28,0x4a,0x47,0x60,0x90,0x00,0x00,0x0f,0x40,0x2b,0xe5,0x06,0xd3,0x16,
+ 0xd9,0x2a,0xe7,0x29,0x94,0x04,0x39,0x3d,0xf1,0x2a,0x42,0xbf,0x89,0x61,0xa6,0xda,
+ 0x07,0xfc,0x0d,0x20,0x7e,0x95,0xf2,0x4d,0x76,0x62,0xa8,0xae,0xaa,0xae,0xa9,0x76,
+ 0xdf,0xc4,0x0d,0x36,0xe8,0x03,0xda,0x40,0xf6,0x6b,0x6c,0xb2,0x41,0x80,0x00,0x3a,
+ 0x2f,0x8e,0x51,0x69,0x17,0xec,0x66,0xef,0x6c,0x23,0xa8,0x4d,0x86,0xf4,0x62,0x0f,
+ 0xbf,0x5a,0x0a,0x7f,0xef,0x50,0x0b,0xc1,0xc2,0x6f,0x99,0x83,0xea,0x5c,0x3e,0x7f,
+ 0xaa,0xb8,0xc3,0x77,0x8f,0xf7,0xda,0x70,0x7f,0xfc,0xea,0xc4,0x90,0x78,0x5a,0x7f,
+ 0x3a,0xae,0x9f,0x09,0x3b,0x7f,0xd8,0x59,0x26,0xbc,0x59,0xf8,0x29,0x4c,0x19,0xf6,
+ 0xe6,0x52,0x93,0xed,0xd2,0xb9,0xc8,0x3f,0xf4,0x8a,0xc9,0xe0,0xce,0xd5,0x96,0x71,
+ 0x68,0xcf,0x87,0x60,0x47,0xe7,0x20,0xfe,0xe1,0x51,0xdf,0x3b,0x4f,0xaf,0xec,0xb1,
+ 0x9f,0x19,0x38,0x41,0x37,0xad,0x2c,0x96,0x13,0xf3,0x2e,0x3d,0xc5,0xa2,0xaf,0xa8,
+ 0x0a,0x8e,0x40,0xff,0x00,0xd4,0x7f,0xbe,0xa6,0x16,0xc5,0xb3,0x71,0x9f,0x6d,0x3f,
+ 0x4e,0x67,0x97,0x3a,0xde,0x89,0x6e,0x16,0xb7,0x41,0x57,0x2a,0x4a,0xa3,0x2d,0x4c,
+ 0x00,0x7f,0x12,0x96,0xd2,0xaf,0xc9,0x42,0xb9,0xbb,0x92,0xda,0x46,0x1b,0xba,0x6f,
+ 0xf2,0x6c,0x65,0xd3,0x6f,0x31,0x13,0x62,0x5b,0xea,0x8e,0x9b,0x43,0xed,0x35,0xe6,
+ 0xf9,0xbe,0x5f,0x50,0x70,0xad,0xa5,0x92,0x3e,0xe9,0x3c,0x74,0xf1,0xea,0x7f,0x0e,
+ 0x32,0x7d,0x09,0xd0,0x6c,0x63,0x6e,0x98,0x4b,0x98,0xae,0x25,0xf1,0xdf,0x65,0xae,
+ 0x5a,0xe6,0xab,0xed,0x09,0x1e,0x73,0x9e,0x62,0xd2,0x84,0xab,0x83,0xc0,0x00,0x70,
+ 0x84,0xf6,0x03,0xd7,0x93,0xef,0x52,0xd7,0xe3,0x74,0x15,0x79,0x56,0x93,0x0b,0xdf,
+ 0xb7,0x89,0xc4,0xf1,0xb5,0x89,0x7e,0xd7,0xbf,0x42,0x0f,0xb2,0xa0,0x61,0x12,0x17,
+ 0x78,0x15,0x5f,0x71,0x10,0x9d,0xac,0x78,0xa8,0x2d,0xa4,0xbc,0xe4,0x3c,0x7b,0x30,
+ 0x94,0x47,0x71,0xc2,0x56,0xdd,0xc3,0xe6,0x09,0x3f,0x44,0x26,0x60,0x00,0x7d,0x03,
+ 0x60,0x9f,0x43,0x56,0x91,0x55,0xf1,0xe2,0xdf,0xa6,0x12,0x1e,0xc5,0xb0,0xad,0x4f,
+ 0xb5,0xb3,0xd1,0x36,0xc5,0x2f,0xec,0xe9,0x92,0x5a,0x4f,0xde,0x25,0xa7,0x0f,0x5b,
+ 0x0b,0x51,0xf6,0x4a,0x1d,0x4a,0x80,0xfe,0x67,0xc7,0xd6,0xa6,0xb6,0x8e,0x6a,0x24,
+ 0x6d,0x5a,0xd2,0xac,0x4f,0x31,0x8a,0x12,0x86,0xef,0x56,0xd6,0x65,0xad,0xa4,0x9e,
+ 0x43,0x4e,0x29,0x03,0xcc,0x6f,0x9f,0x7e,0x95,0xf5,0x27,0xfb,0x35,0x26,0x66,0x77,
+ 0xda,0x78,0x56,0x1d,0x8c,0x0d,0xdd,0xa4,0xc4,0xff,0x00,0xee,0x8f,0x82,0x7c,0xdc,
+ 0x0d,0xfd,0x15,0x19,0xdd,0x73,0x9b,0xee,0xb3,0x1a,0x54,0x54,0xcb,0x77,0x90,0x8d,
+ 0x00,0xdc,0x4c,0x9d,0x39,0xd5,0x3e,0x96,0xb1,0xbb,0xba,0x53,0x70,0xb0,0x65,0x6d,
+ 0x36,0x10,0x96,0x59,0x75,0x44,0x79,0x12,0xd0,0x3b,0x00,0x87,0x12,0xe2,0x03,0xa9,
+ 0xfd,0xd0,0xd9,0x5a,0x7b,0xa9,0x62,0x54,0x30,0xfb,0x52,0x98,0x6d,0xf6,0x1c,0x43,
+ 0xcc,0xba,0x90,0xb6,0xdc,0x6d,0x41,0x49,0x5a,0x48,0xe4,0x10,0x47,0x62,0x08,0xef,
+ 0xcd,0x69,0x15,0xb8,0x65,0x55,0x03,0x63,0x92,0x66,0xf7,0x24,0x1a,0x9a,0xe1,0xc3,
+ 0x87,0x91,0xea,0x3c,0x41,0xdc,0x78,0x85,0x28,0x70,0x3c,0x2a,0x85,0xf1,0x52,0xd0,
+ 0x71,0xa7,0xda,0xc9,0x13,0x3b,0xb6,0x44,0x2d,0x59,0x72,0xe6,0xca,0xa4,0x29,0xb1,
+ 0xf2,0x37,0x70,0x6c,0x00,0xef,0xa0,0xf9,0x7c,0xc4,0x14,0x2f,0xbf,0x75,0x2b,0xcd,
+ 0x3e,0xc7,0x8b,0x3f,0xd8,0x0e,0xbf,0x2f,0x71,0x3b,0x63,0xc6,0x6f,0xb3,0x9e,0x4b,
+ 0xd9,0x0d,0xb0,0x1b,0x35,0xdc,0x85,0x12,0xa5,0x49,0x60,0x24,0x07,0x15,0xcf,0xef,
+ 0x38,0xd9,0x69,0xc3,0xed,0xcb,0x84,0x0f,0x4a,0xc2,0x37,0xaf,0xa2,0x23,0x5e,0x76,
+ 0xef,0x93,0x58,0xe3,0xc4,0x32,0xef,0xb0,0x9b,0xfb,0x56,0xd0,0x94,0x0e,0x57,0xf1,
+ 0x4c,0x82,0x42,0x12,0x3d,0xcb,0x88,0x2e,0x37,0xc1,0xed,0xf7,0x9c,0xfa,0x80,0x6a,
+ 0x0f,0x78,0x36,0xeb,0x59,0xc2,0xf5,0xe2,0xf1,0xa7,0xd2,0xd6,0x7e,0xcf,0xcc,0x61,
+ 0x15,0xc7,0x1c,0xfe,0xcc,0xc8,0xc9,0x5b,0x89,0xf7,0xec,0x14,0xd1,0x7f,0x9f,0x7e,
+ 0x52,0x8a,0xfa,0xcb,0xe1,0xd6,0x35,0xf6,0xb6,0x0c,0xd8,0x64,0x37,0x92,0x1e,0xe1,
+ 0xf4,0xfb,0xa7,0xe9,0xb7,0xab,0x4a,0xc7,0x4e,0xdd,0x2e,0xbf,0x55,0x74,0x94,0xa5,
+ 0x2b,0xa9,0x2b,0x74,0xae,0x8f,0x3a,0xcb,0xa1,0xe0,0x18,0x46,0x43,0x94,0x5c,0x39,
+ 0xf8,0x0b,0x25,0xba,0x45,0xca,0x47,0x07,0x8f,0xbb,0x65,0xb5,0x38,0xae,0xff,0x00,
+ 0x92,0x4d,0x77,0x95,0x0e,0x3c,0x58,0xf5,0x15,0x78,0x1e,0xce,0xaf,0x90,0x98,0x7d,
+ 0x51,0xe5,0x64,0xb7,0x08,0xb6,0x54,0x29,0xb3,0xc2,0xba,0x4a,0x8b,0xee,0x8f,0xc9,
+ 0x4d,0xb0,0xb4,0x9f,0xc1,0x44,0x7b,0xd1,0x15,0x1c,0x66,0x99,0x6d,0xcf,0x50,0xb3,
+ 0x2b,0xe6,0x4d,0x77,0x70,0x3f,0x77,0xbd,0x4e,0x7a,0xe1,0x29,0x68,0x4f,0x01,0x4e,
+ 0xba,0xb2,0xb5,0x70,0x3d,0x87,0x2a,0x3c,0x0f,0x61,0x57,0xdb,0xb5,0xed,0x23,0x6f,
+ 0x43,0x74,0x1b,0x0f,0xc4,0x02,0x14,0x99,0x91,0x21,0x25,0xe9,0xe5,0x5e,0xa6,0x5b,
+ 0xa4,0xb8,0xff,0x00,0xe8,0x16,0xb5,0x24,0x7f,0x2a,0x52,0x2a,0x9f,0x76,0x11,0xa4,
+ 0xeb,0xd5,0xcd,0xd0,0xe2,0x10,0xdc,0x60,0x3d,0x6c,0xb3,0xbd,0xf6,0xe4,0xfe,0xa0,
+ 0x0a,0x43,0x51,0xc8,0x52,0x02,0x81,0xf5,0x0a,0x77,0xca,0x41,0x1f,0xcf,0xf4,0xab,
+ 0xb1,0xc2,0xb5,0x23,0x17,0xd4,0x76,0xee,0xae,0x63,0x37,0xc8,0x77,0xb4,0xda,0xe6,
+ 0xb9,0x6e,0x9a,0x62,0x39,0xd7,0xe4,0x48,0x6c,0xf0,0xa4,0x2b,0xfe,0xc7,0xd0,0x8e,
+ 0xe0,0x91,0x5f,0x38,0xfc,0x57,0xc4,0x64,0x90,0xc3,0x87,0x44,0x09,0x6b,0x3b,0xef,
+ 0xb7,0x00,0x9b,0xb5,0x97,0xe9,0xf7,0xb9,0xe6,0xea,0xfa,0x9d,0xbc,0xb9,0x6b,0xad,
+ 0xe8,0xe5,0x4f,0xe1,0x9b,0x56,0xd4,0xcb,0x9c,0x64,0xa8,0xbf,0xf6,0x42,0xe2,0x24,
+ 0xa3,0xd5,0x3e,0x7a,0x92,0xc1,0x57,0xe8,0x1d,0x27,0xf4,0xaa,0x3a,0xd2,0xcd,0x2d,
+ 0xc8,0xf5,0x97,0x39,0xb6,0x62,0x78,0xad,0xbd,0x77,0x0b,0xbc,0xf7,0x3a,0x52,0x91,
+ 0xd9,0x0d,0x23,0xf7,0x9d,0x71,0x5f,0xba,0x84,0x8e,0xe5,0x47,0xfe,0x7c,0x0a,0xf4,
+ 0x3d,0x91,0x63,0xd6,0xdc,0xb6,0xc3,0x70,0xb2,0xde,0x61,0x33,0x72,0xb5,0x4f,0x61,
+ 0x71,0xa5,0x44,0x90,0x9e,0xa4,0x3a,0xda,0x87,0x0a,0x49,0x1f,0x88,0x35,0x87,0x69,
+ 0x1e,0xdf,0xf4,0xf3,0x42,0x20,0x48,0x89,0x82,0x62,0xd0,0xf1,0xf4,0xc9,0x3c,0xbe,
+ 0xf3,0x65,0x6f,0x48,0x77,0xbf,0x20,0x2d,0xe7,0x54,0xa7,0x14,0x90,0x7d,0x12,0x55,
+ 0xc0,0xf6,0x02,0xb4,0xcc,0xab,0x9d,0x21,0xcb,0x18,0x65,0x45,0x3b,0x21,0x2e,0x9d,
+ 0xee,0xbb,0x4e,0xda,0x78,0x03,0xbd,0xbd,0xf6,0x3b,0xd8,0x0d,0xef,0xc8,0x52,0xc9,
+ 0x17,0x68,0xe0,0x6f,0xb2,0xe3,0xed,0xdf,0x43,0x6c,0xdb,0x76,0xd2,0x7b,0x3e,0x17,
+ 0x67,0x21,0xff,0x00,0x86,0x05,0xe9,0xb3,0xbc,0xb0,0x85,0xcd,0x94,0xbe,0x3c,0xd7,
+ 0x94,0x07,0xd7,0x80,0x90,0x09,0x24,0x21,0x28,0x4f,0x27,0xa7,0x9a,0xd3,0xd9,0x1c,
+ 0xe6,0xb7,0x3d,0xba,0xcb,0x76,0x2b,0x19,0x49,0x93,0x80,0xe9,0x43,0xe8,0xbb,0xdd,
+ 0x9d,0x4a,0x7a,0x9b,0x99,0x7c,0x21,0x49,0x8f,0x1f,0x9f,0x4e,0x19,0x1d,0x6a,0x3c,
+ 0x73,0xf3,0x05,0xa4,0x8f,0x43,0x5c,0x5d,0xf8,0x6f,0x46,0x06,0xdd,0xf0,0xf9,0x38,
+ 0xde,0x39,0x31,0x99,0x3a,0x91,0x74,0x67,0xa2,0x3b,0x48,0x3d,0x5f,0x66,0x34,0xa1,
+ 0xc1,0x92,0xe0,0xf6,0x57,0x1f,0xd5,0xa4,0xfa,0x9e,0x14,0x41,0x48,0xe0,0xff,0x00,
+ 0x7e,0x18,0x62,0xd0,0xf6,0xd4,0xad,0x93,0x60,0xbc,0x64,0x5e,0x66,0xdd,0x67,0xbf,
+ 0x7c,0x79,0x6b,0x2b,0x71,0x73,0x0b,0xc4,0x02,0xb2,0x7b,0xf2,0x58,0x11,0xcf,0xeb,
+ 0xcf,0xa9,0x35,0x8e,0x8e,0x92,0xba,0x9b,0x0d,0x9b,0x33,0x56,0x02,0x5f,0x2b,0xb4,
+ 0x30,0x9e,0x6e,0xf0,0x75,0x49,0xe9,0x60,0x5a,0xdf,0xc4,0x6e,0x38,0x0b,0xd5,0xc1,
+ 0x70,0x60,0xf0,0x5b,0x97,0x71,0xfa,0xdd,0x6e,0xdb,0xd6,0x8f,0x5f,0xf3,0x59,0xe9,
+ 0x4b,0xef,0x44,0x6b,0xca,0x83,0x11,0x47,0xff,0x00,0x9a,0x96,0xbf,0x95,0x96,0xfd,
+ 0x47,0x6e,0xae,0xea,0x23,0xb8,0x4a,0x54,0x78,0x3c,0x71,0x54,0x07,0x93,0x64,0x97,
+ 0x3c,0xc7,0x21,0xb9,0x5f,0x6f,0x53,0x1c,0xb8,0x5d,0xae,0x52,0x1c,0x97,0x2e,0x53,
+ 0xbc,0x75,0x3a,0xea,0xd4,0x54,0xa5,0x1e,0x3b,0x0e,0x49,0x3d,0x80,0x00,0x7b,0x54,
+ 0xbe,0xf1,0x39,0xdc,0x90,0xd5,0xad,0x59,0x46,0x11,0x64,0x96,0x1d,0xc5,0xf1,0x15,
+ 0xad,0x97,0x14,0xd2,0xc9,0x44,0xab,0x81,0xec,0xf2,0xfe,0x84,0x37,0xc7,0x96,0x9e,
+ 0xdd,0x88,0x70,0x82,0x42,0xea,0x31,0xe8,0xb6,0x9b,0x48,0xd6,0x0d,0x58,0xc5,0x30,
+ 0xc8,0xca,0x71,0xb5,0x5e,0x6e,0x0d,0x45,0x71,0xd6,0x93,0xd4,0xa6,0x9a,0x2a,0xe5,
+ 0xd7,0x00,0xfe,0x44,0x05,0xab,0xfb,0x35,0xdd,0x72,0x0e,0x06,0xcc,0xbf,0x83,0xbb,
+ 0x10,0xab,0x1a,0x64,0x90,0x6b,0x71,0x3f,0x75,0x80,0x5c,0x0f,0xa7,0x78,0xfa,0xd8,
+ 0xf0,0xac,0xe6,0x7e,0xb7,0x69,0x0a,0xe6,0xfc,0x3e,0x30,0x09,0x5a,0x7b,0xb4,0xcc,
+ 0x22,0x34,0xe6,0xc3,0x53,0x6e,0x6d,0x3b,0x77,0x71,0x00,0xf3,0xc2,0x24,0x38,0xa7,
+ 0x1a,0xfd,0x4b,0x45,0xa2,0x47,0xb1,0x24,0x7b,0x55,0x7c,0x78,0xa9,0xea,0x40,0xcc,
+ 0xb7,0x30,0x6c,0x0c,0x15,0x7c,0x2e,0x2d,0x6d,0x62,0x09,0xef,0xca,0x54,0xfb,0x83,
+ 0xcf,0x71,0x43,0xf4,0x75,0xb4,0x1f,0xc5,0xb3,0x57,0x11,0x02,0x0c,0x3b,0x15,0xae,
+ 0x3c,0x38,0xad,0x22,0x24,0x08,0x6c,0xa5,0x96,0x9b,0x4f,0x64,0xb4,0xda,0x13,0xc2,
+ 0x40,0xfc,0x00,0x03,0xfb,0xab,0xcf,0x1e,0xb5,0x67,0xcb,0xd5,0x2d,0x5d,0xcc,0xb2,
+ 0xd5,0x85,0xa5,0x37,0x9b,0xb4,0x99,0x8d,0x21,0x67,0x92,0xdb,0x4a,0x70,0x96,0xd1,
+ 0xfd,0x94,0x74,0xa7,0xf4,0xad,0x13,0xe1,0xd3,0x1d,0x8c,0x66,0x1a,0xcc,0x62,0x41,
+ 0xc5,0xcf,0xa1,0x91,0xdb,0x7f,0xa8,0x70,0x53,0x4f,0xdd,0x60,0x6a,0xde,0x1e,0x1a,
+ 0x98,0x2b,0xd9,0xa6,0xed,0xb1,0x99,0x01,0xb0,0xe4,0x4b,0x0c,0x79,0x37,0x79,0x3c,
+ 0xfe,0xea,0x52,0xd9,0x6d,0xb2,0x3f,0xfc,0xaf,0x35,0x57,0x3f,0x98,0xe4,0x28,0xc4,
+ 0x71,0x1b,0xe5,0xf5,0xc0,0x0b,0x76,0xb8,0x2f,0xcd,0x50,0x3e,0x9c,0x36,0xda,0x96,
+ 0x7f,0xe9,0xaa,0xe1,0xf0,0x73,0xc2,0x1c,0x5d,0xc3,0x51,0xf3,0x07,0x59,0x29,0x69,
+ 0xb6,0xa2,0xda,0x63,0x3c,0x47,0x65,0x15,0x15,0x3a,0xf2,0x47,0xe5,0xd2,0xc1,0xfe,
+ 0xd0,0xa9,0xa1,0xbc,0xbc,0x88,0xe2,0xdb,0x56,0xd5,0x19,0xc9,0x07,0xa9,0x76,0x37,
+ 0xe1,0x82,0x3d,0x8b,0xe3,0xc8,0xe7,0xf4,0xf3,0x79,0xac,0x2e,0x7d,0x97,0xed,0x5c,
+ 0xd6,0xca,0x21,0xb8,0x6f,0x67,0x1f,0xe6,0x37,0x3f,0xf6,0xb2,0xf7,0x08,0xd3,0x1d,
+ 0xd5,0x07,0x49,0x92,0xec,0xc9,0x2e,0xc8,0x7d,0xc5,0x3a,0xfb,0xab,0x2e,0x38,0xe2,
+ 0xcf,0x2a,0x52,0x89,0xe4,0x92,0x7e,0xa4,0xd5,0xde,0xec,0x0b,0x6d,0x23,0x6f,0x3a,
+ 0x2b,0x19,0x77,0x48,0xa1,0xac,0xcb,0x23,0x08,0xb8,0x5d,0x89,0xfd,0xb6,0x07,0x1f,
+ 0x73,0x1b,0xd0,0x71,0xe5,0xa5,0x47,0xa8,0x7f,0x1a,0xdc,0xee,0x40,0x15,0x5f,0x5e,
+ 0x1a,0xdb,0x72,0xff,0x00,0x3c,0xda,0xd4,0x8c,0x96,0xed,0x18,0xb9,0x8b,0x62,0x0a,
+ 0x6e,0x6b,0xc1,0x68,0xe5,0x12,0x26,0x12,0x4c,0x76,0x7b,0xfa,0x80,0x52,0x5c,0x57,
+ 0xaf,0x66,0xc0,0x3f,0xb6,0x0d,0x59,0x4e,0xf6,0xb5,0xb0,0xe8,0x46,0xdd,0x32,0x6b,
+ 0xf4,0x57,0x92,0xcd,0xee,0x6a,0x05,0xaa,0xd4,0x54,0xae,0x0f,0xc4,0xbc,0x08,0x0b,
+ 0x4f,0xe2,0x84,0x07,0x1c,0x03,0xfd,0x9d,0x6d,0xff,0x00,0x11,0x31,0x59,0x71,0x1a,
+ 0xb8,0x32,0xc5,0x01,0xef,0x38,0xb7,0x5f,0xa9,0xf9,0x5a,0x7c,0x87,0xcc,0x7d,0xba,
+ 0x28,0xa0,0x68,0x68,0x32,0x39,0x64,0x5a,0x0d,0xaf,0x96,0x8d,0x79,0x19,0xbb,0xb6,
+ 0x72,0xd2,0xa2,0xe3,0xb9,0x0b,0xf6,0x56,0xde,0x69,0xc0,0xb4,0xc9,0x6d,0xb4,0x36,
+ 0x52,0xfa,0x48,0xed,0xd2,0xb2,0xa5,0xf0,0x47,0xa8,0x4f,0x35,0xa3,0xfc,0x4d,0xb5,
+ 0xd2,0x4e,0x95,0xe8,0xd5,0xb3,0x1a,0xb5,0x3c,0xa8,0xf7,0x8c,0xbe,0x6f,0xc2,0x97,
+ 0x50,0xa2,0x95,0x37,0x0d,0xa2,0x85,0xc8,0x29,0x23,0xdd,0x45,0x4d,0x36,0x47,0xa1,
+ 0x4b,0x8b,0xfc,0x2a,0x2c,0x78,0x47,0x6a,0x91,0xc7,0x35,0x93,0x21,0xc1,0xe4,0xc8,
+ 0x42,0x22,0x64,0xb6,0xff,0x00,0x88,0x8e,0xda,0xcf,0x75,0x4a,0x8d,0xca,0x80,0x4f,
+ 0xe6,0xd2,0xdf,0x27,0xeb,0xe5,0x8f,0xa5,0x61,0xbe,0x25,0x5a,0x94,0x9d,0x42,0xdd,
+ 0xa4,0x8b,0x4c,0x69,0x3f,0x11,0x6f,0xc6,0x58,0x8d,0x67,0x40,0x42,0xf9,0x6c,0x3d,
+ 0xcf,0x9a,0xff,0x00,0x03,0xd9,0x41,0x6e,0x96,0xd5,0xef,0xcb,0x5c,0x7b,0x0a,0xc2,
+ 0xe1,0xf9,0x3a,0x3a,0x4c,0xe4,0x28,0xf4,0xde,0x18,0x9a,0x24,0x17,0xf1,0x00,0x00,
+ 0x3f,0xdf,0xeb,0x62,0xbd,0xba,0x4b,0xc5,0x7f,0x15,0x73,0x2c,0x38,0x5d,0x65,0xb5,
+ 0x9f,0x55,0x24,0x2b,0xfe,0x15,0x01,0x7c,0x3a,0xd2,0x9b,0x7e,0xe5,0x37,0x3b,0x01,
+ 0x09,0xe9,0x42,0x6f,0x9f,0x28,0xe3,0xd0,0x26,0x64,0xd0,0x3f,0xea,0xa9,0xf4,0xca,
+ 0x3c,0xb6,0x50,0x8f,0xe1,0x48,0x15,0x5f,0xdb,0x0d,0x7d,0x2c,0x6f,0x3f,0x72,0xb0,
+ 0xca,0x90,0x16,0xe5,0xca,0x4b,0xa1,0x1c,0xfc,0xc4,0x26,0x7b,0xc0,0x90,0x3e,0x83,
+ 0xac,0x73,0xf9,0x8a,0xd0,0x70,0x21,0xab,0x07,0xc5,0x9a,0x3f,0xa2,0x33,0xf4,0x90,
+ 0x29,0x5f,0xf3,0x35,0x6d,0x0f,0x13,0xe9,0xb7,0xcb,0x66,0xd6,0x65,0xcd,0xb1,0xdd,
+ 0x66,0xda,0x94,0xc5,0xda,0x21,0x96,0xb8,0x4f,0xa9,0x95,0x3a,0xc2,0xba,0xd0,0x5b,
+ 0x51,0x49,0x04,0xa4,0xad,0x6d,0x92,0x3d,0x39,0x48,0xa8,0xdb,0xe1,0x3d,0xaf,0x17,
+ 0xf9,0x7a,0x8d,0x7e,0xd3,0xcb,0xe5,0xf2,0x5d,0xca,0xd7,0x32,0xda,0x67,0x5b,0x99,
+ 0x9f,0x25,0x6e,0xf9,0x0f,0x32,0xb1,0xd6,0x86,0x42,0x89,0xe9,0x0a,0x43,0x8a,0x52,
+ 0x80,0xff,0x00,0x54,0x0f,0xb1,0xa9,0x99,0xbe,0xfc,0x49,0xcc,0xcf,0x69,0x1a,0x93,
+ 0x09,0xa1,0xcb,0xb1,0xad,0xc2,0xe4,0x0f,0x1e,0x82,0x33,0xa8,0x90,0xbf,0xfd,0x0d,
+ 0x2b,0xfb,0xea,0x9f,0xf6,0x81,0x9b,0x2b,0x4f,0x77,0x39,0xa6,0xd7,0xa0,0xf2,0x63,
+ 0xb6,0x9b,0xcb,0x31,0x1e,0x75,0x67,0x84,0xa5,0x99,0x1c,0xb0,0xe1,0x27,0xd8,0x74,
+ 0x3a,0xaa,0xe8,0xf9,0x4a,0x8a,0x1c,0x63,0x26,0xd7,0x51,0x96,0x82,0xf6,0x97,0x11,
+ 0xb6,0xf7,0x0d,0x6b,0x9b,0xfa,0x82,0x3d,0x14,0x32,0x12,0xd9,0x5a,0x55,0xdf,0xeb,
+ 0xae,0x96,0xc4,0xd6,0xad,0x21,0xca,0xf0,0xa9,0x9c,0x25,0x37,0x78,0x2b,0x65,0x97,
+ 0x4f,0xff,0x00,0x49,0xf1,0xf3,0x32,0xe7,0xf6,0x5c,0x4a,0x15,0xc7,0xbf,0x1c,0x7b,
+ 0xd4,0x65,0xf0,0xad,0xce,0xe7,0xdc,0x74,0x5b,0x21,0xc0,0x6f,0x08,0x53,0x17,0x6c,
+ 0x26,0xf0,0xe4,0x53,0x15,0xd4,0xf4,0xb8,0xc3,0x2f,0x15,0x2c,0x21,0x60,0xf7,0xe4,
+ 0x3c,0x99,0x23,0xbf,0xd0,0x0f,0x6a,0x9a,0xde,0x95,0x0b,0xe0,0xd8,0x9b,0xd0,0x1f,
+ 0x11,0xdf,0x31,0x89,0x21,0x8c,0x7b,0x56,0xec,0xef,0xb9,0xf0,0xfc,0x84,0x36,0x8b,
+ 0x93,0x1c,0x2d,0x7c,0x8f,0x72,0xae,0x85,0x28,0x13,0xea,0xa9,0x2a,0x15,0xcc,0xf0,
+ 0x79,0xbf,0x8c,0xc2,0xab,0x70,0x97,0xf3,0x6e,0xd9,0x9f,0xdd,0x1f,0xcf,0x6f,0x33,
+ 0x1d,0xff,0x00,0x2a,0x9d,0xc2,0xce,0x0e,0xf6,0x5d,0x5f,0x8b,0x46,0x95,0x2b,0x2c,
+ 0xd0,0xcb,0x46,0x67,0x15,0x94,0xae,0x5e,0x29,0x70,0x01,0xf5,0x7a,0x11,0x12,0x4f,
+ 0x4b,0x6b,0x23,0xeb,0xc3,0xa2,0x3f,0x6f,0xa1,0x51,0xa8,0xff,0x00,0xe1,0xd7,0xbe,
+ 0x37,0x34,0xea,0xeb,0x03,0x4b,0xf3,0xcb,0x81,0x38,0x94,0xc7,0x03,0x36,0x8b,0x9c,
+ 0x85,0x73,0xf6,0x63,0xca,0x3d,0x9a,0x59,0xff,0x00,0x52,0xb5,0x1e,0x01,0x3d,0x9b,
+ 0x51,0xe4,0xf0,0x92,0x4a,0x6c,0x2f,0x75,0x91,0xf1,0xcb,0x86,0xdd,0xf3,0xeb,0x76,
+ 0x51,0x78,0x81,0x62,0xb6,0xce,0xb4,0xc8,0x8e,0xdc,0xdb,0x8b,0xa1,0xb6,0x91,0x20,
+ 0xa0,0x96,0x0f,0x7f,0xda,0x3e,0x60,0x41,0x09,0x1d,0xc9,0x1c,0x0e,0xf5,0xe7,0xf6,
+ 0xba,0xe6,0x45,0xa4,0x83,0x32,0xe5,0xa9,0xb0,0x9a,0xe6,0xdd,0xac,0x71,0xd2,0x6d,
+ 0xf2,0xdc,0x5c,0x16,0x9e,0xa1,0xd7,0xf6,0x36,0x3b,0x1d,0xed,0xa6,0x26,0x37,0x87,
+ 0x05,0xe9,0x6f,0xd2,0xa9,0x23,0x73,0x38,0xbc,0xcd,0xa0,0x6f,0x71,0x77,0x9b,0x0a,
+ 0x5c,0x8d,0x16,0x2d,0xd6,0x3e,0x53,0x68,0x00,0x74,0x82,0xca,0xdd,0xf3,0x14,0xd0,
+ 0xe3,0xd5,0xb0,0xe2,0x5e,0x67,0x8f,0x74,0xa3,0x83,0xea,0x6a,0x6c,0x78,0x67,0xee,
+ 0xc5,0xdd,0x5d,0xc2,0x1d,0xd3,0xdc,0x9e,0x61,0x7b,0x2d,0xc6,0xe3,0xa5,0x51,0x24,
+ 0xbb,0xfb,0x53,0xad,0xe3,0x84,0x82,0xa3,0xcf,0x75,0xb4,0x4a,0x50,0xa2,0x78,0xe5,
+ 0x2a,0x6c,0xfc,0xc7,0xac,0xd6,0x15,0xe2,0xb1,0x89,0x59,0x75,0x23,0x4c,0x2c,0x3a,
+ 0x85,0x8c,0xdd,0x2d,0xb7,0xa7,0xb1,0x5b,0x8a,0xad,0x37,0x45,0xdb,0x64,0x36,0xf9,
+ 0x65,0xa7,0xf8,0xe9,0x0e,0x29,0x0a,0x3d,0x25,0x0e,0xa1,0x29,0xe9,0x3d,0xf9,0x78,
+ 0xfa,0x77,0xad,0x77,0x27,0x36,0xaf,0x2a,0x66,0x87,0xe1,0x75,0x63,0xba,0xfe,0xe1,
+ 0x3e,0x06,0xfb,0xb1,0xde,0xfc,0x0f,0xee,0x23,0x90,0xbd,0xcb,0x69,0x23,0xd4,0x15,
+ 0xa8,0x63,0x99,0x04,0x0c,0xb3,0x1e,0xb5,0xdf,0x2d,0x52,0x51,0x32,0xd7,0x73,0x8a,
+ 0xd4,0xd8,0x92,0x5b,0x3c,0xa5,0xd6,0x5c,0x40,0x5a,0x16,0x3f,0x02,0x95,0x03,0xfa,
+ 0xd7,0x63,0x51,0x47,0xc3,0x03,0x53,0x9b,0xd4,0xad,0x9c,0x61,0xc8,0x2f,0x17,0xa7,
+ 0xe3,0xaa,0x7a,0xc1,0x2c,0x1f,0xdc,0x2c,0xab,0xa9,0x94,0x8f,0xc3,0xc8,0x71,0x8f,
+ 0xf8,0xfd,0x2a,0x57,0x57,0xd4,0xcb,0x1e,0x95,0x53,0xde,0x38,0x39,0x8a,0x9c,0xbc,
+ 0xe9,0x5e,0x28,0xdb,0xe4,0x25,0x98,0xf3,0x6e,0x8f,0xb0,0x0f,0x62,0x56,0xa6,0x9b,
+ 0x69,0x44,0x7e,0x1e,0x5b,0xa0,0x7e,0x66,0xad,0x86,0xb4,0x06,0x7f,0xb3,0x2c,0x1b,
+ 0x58,0x37,0x00,0xce,0xa8,0x67,0xf1,0x1b,0xca,0x15,0x6d,0xb5,0xb1,0x6a,0xb4,0xd8,
+ 0xa5,0x36,0x0c,0x26,0x52,0x85,0xba,0xe2,0x9d,0x79,0x07,0xb3,0xcb,0x2a,0x79,0x40,
+ 0x25,0x43,0xa4,0x00,0x09,0x0a,0x3c,0x74,0x91,0x52,0x06,0xdf,0x62,0xeb,0x85,0xaa,
+ 0x36,0x41,0x2f,0x49,0x71,0x9c,0x96,0x70,0xbe,0x40,0x5d,0xa2,0x5d,0xca,0xc7,0x67,
+ 0x7a,0x4a,0x92,0xca,0x96,0x92,0xb4,0xb6,0xf2,0x50,0x7c,0xb5,0x72,0x90,0x3a,0x81,
+ 0x04,0x7b,0x10,0x78,0x23,0xbc,0xc2,0xf4,0xfb,0x72,0xdb,0x5f,0xbe,0xaf,0x28,0xb1,
+ 0x61,0x59,0xc6,0x26,0xf3,0x6d,0x7f,0x48,0x93,0xf6,0x2b,0xeb,0x8a,0xe3,0x5e,0xa5,
+ 0x2f,0x02,0x82,0xda,0xd2,0x3d,0x78,0x57,0x3c,0x11,0xcf,0x62,0x39,0xaf,0x43,0x90,
+ 0xe1,0xc7,0xb7,0x44,0x62,0x24,0x46,0x1b,0x8b,0x15,0x84,0x25,0xa6,0x98,0x65,0x01,
+ 0x08,0x6d,0x09,0x1c,0x25,0x29,0x48,0xec,0x00,0x00,0x00,0x07,0xa5,0x7d,0xaa,0xce,
+ 0x4a,0x2a,0x69,0x44,0x82,0x48,0xda,0x7b,0x4f,0x9a,0xe0,0x1d,0x56,0xd8,0x5f,0xad,
+ 0xbc,0xd5,0x6e,0x47,0x8a,0xa5,0xcb,0x1f,0x8c,0x46,0x69,0x1a,0xdc,0x86,0xee,0xf8,
+ 0x05,0x8e,0xe1,0x38,0x0e,0x0c,0x88,0x92,0xde,0x8c,0x85,0x1f,0xaf,0x42,0xba,0xff,
+ 0x00,0xea,0xac,0x1f,0x51,0xfc,0x56,0x35,0x8b,0x32,0x80,0xe4,0x2b,0x1b,0x16,0x5c,
+ 0x2d,0x95,0xff,0x00,0xf7,0x36,0xd8,0xea,0x7a,0x57,0x1e,0xe3,0xad,0xe5,0x29,0x23,
+ 0xf3,0x4a,0x01,0x1f,0x5a,0xb0,0xfd,0xf0,0x78,0x75,0x62,0x3b,0x8d,0xc7,0x6e,0x99,
+ 0x1e,0x29,0x6d,0x8b,0x8e,0xea,0x7b,0x48,0x5c,0x86,0x65,0xc5,0x4a,0x59,0x66,0xea,
+ 0xe7,0xed,0x16,0xa5,0x0e,0xc0,0xa9,0x5d,0xc0,0x77,0xb2,0x81,0x20,0xa8,0xa9,0x23,
+ 0x8a,0xa2,0xdb,0xad,0xa6,0x6d,0x8e,0xeb,0x32,0xd9,0x70,0x8a,0xec,0x3b,0x84,0x37,
+ 0x97,0x1e,0x44,0x57,0x90,0x52,0xe3,0x4e,0xa1,0x45,0x2a,0x42,0x81,0xee,0x08,0x20,
+ 0x82,0x3f,0x0a,0xd5,0x62,0xc9,0x59,0x7a,0x09,0x7b,0x56,0x51,0xb6,0xfe,0x77,0x23,
+ 0xe8,0x49,0x1f,0xa2,0x93,0xb5,0x79,0xf1,0x4b,0xb5,0xda,0x75,0xfa,0xe7,0x2a,0xe3,
+ 0x73,0x9b,0x22,0xe3,0x70,0x94,0xe2,0x9e,0x91,0x2e,0x5b,0xaa,0x75,0xd7,0x96,0xa3,
+ 0xca,0x94,0xb5,0xa8,0x92,0xa5,0x13,0xdc,0x92,0x79,0xac,0xff,0x00,0x49,0xb7,0x1d,
+ 0xa8,0xfa,0x1b,0x6f,0xbc,0xc1,0xc1,0xf2,0x99,0x56,0x18,0x97,0x74,0x74,0x4b,0x65,
+ 0xa4,0x36,0xe2,0x49,0xe0,0xa4,0x2d,0x1d,0x69,0x57,0x96,0xe0,0x07,0x8e,0xb4,0x70,
+ 0xaf,0x4e,0xfd,0x85,0x62,0xb2,0xf4,0xfb,0x29,0xb7,0xda,0x45,0xd6,0x56,0x35,0x78,
+ 0x8d,0x6c,0x23,0x91,0x35,0xe8,0x0e,0xa1,0x92,0x3e,0xbd,0x65,0x3d,0x3e,0xe3,0xde,
+ 0xba,0x0a,0xdb,0x27,0xa5,0xa7,0xa9,0x8b,0xb0,0x9e,0x30,0xe6,0x6d,0xb1,0x00,0x8d,
+ 0xb8,0xd8,0xed,0xb7,0x82,0x8c,0x12,0x0d,0xc2,0xfd,0x5a,0xd4,0xe2,0xd4,0xa5,0x28,
+ 0xa9,0x4a,0x3c,0x95,0x13,0xc9,0x26,0xac,0x0b,0xc2,0x23,0x48,0xd5,0x7b,0xd4,0x5c,
+ 0x9f,0x51,0x25,0xb0,0x95,0x44,0xb1,0x45,0x16,0xd8,0x2b,0x5a,0x79,0x3f,0x14,0xff,
+ 0x00,0x75,0xa9,0x07,0xd8,0xa5,0xa4,0x94,0x9f,0xc1,0xf1,0xf8,0xd5,0x7e,0x54,0xd4,
+ 0xda,0xc7,0x88,0x55,0x9b,0x6b,0xda,0x57,0x03,0x0e,0x85,0xa7,0x0f,0x5f,0x1f,0x72,
+ 0x5b,0xb3,0xae,0x97,0x45,0x5e,0x44,0x72,0xf3,0xcb,0x57,0x48,0xe8,0x6b,0xc8,0x5f,
+ 0x01,0x2d,0x21,0xa4,0xf7,0x57,0x72,0x92,0x7b,0x73,0x5a,0x96,0x72,0xa7,0xc4,0x6b,
+ 0x30,0x69,0x69,0x30,0xc8,0xf5,0xc9,0x25,0x9b,0xc8,0x16,0x6f,0x2e,0xdd,0xc4,0x0d,
+ 0xc0,0xb7,0x5d,0xd4,0xb1,0x16,0x87,0x5d,0xc5,0x59,0xb6,0xe8,0x73,0xbf,0xf3,0x69,
+ 0xb7,0x7d,0x43,0xc8,0x92,0xe9,0x66,0x44,0x5b,0x34,0x84,0x46,0x70,0x7e,0xec,0x87,
+ 0x13,0xe5,0x32,0x7f,0xf3,0x16,0x8a,0xf3,0xeb,0x56,0x8b,0xbc,0x9d,0xe1,0xe1,0xba,
+ 0xe7,0xb2,0x09,0x53,0x71,0x39,0x0b,0x44,0x9b,0xbd,0xea,0x1d,0xa6,0x7d,0xaa,0x59,
+ 0x4a,0x65,0xc0,0x50,0x2b,0x93,0xca,0xd2,0x09,0xe5,0x2a,0xf8,0x6f,0x95,0x60,0x90,
+ 0x41,0xf6,0x21,0x40,0x55,0xd5,0x6a,0x9f,0x0c,0xb0,0xa9,0xb0,0xdc,0x3e,0xa0,0xd5,
+ 0x30,0xb2,0x43,0x21,0x04,0x1e,0x6c,0xd0,0x2d,0xfa,0x93,0xff,0x00,0x8a,0x49,0xdc,
+ 0x1c,0x45,0x95,0x9a,0xed,0x97,0x5d,0xec,0x1b,0x32,0xd8,0x8d,0xa7,0x26,0xbb,0x32,
+ 0x2e,0x19,0x06,0x5b,0x74,0x9d,0x36,0xd3,0x65,0x4a,0xfa,0x1c,0x94,0xb4,0x28,0x47,
+ 0xeb,0x51,0xe0,0xf4,0xb6,0x90,0xc2,0x49,0x57,0x1e,0x8a,0x48,0x1c,0x95,0x0a,0x84,
+ 0xda,0xcf,0xba,0xdd,0x50,0xd7,0x99,0xd3,0x17,0x94,0xe5,0x73,0x55,0x6c,0x90,0xa2,
+ 0x45,0x8e,0x0b,0xaa,0x8f,0x6f,0x6d,0x3d,0x5c,0xa5,0x21,0x94,0x9e,0x15,0xd3,0xdb,
+ 0x85,0x2f,0xa9,0x5d,0x87,0x2a,0x27,0xbd,0x61,0x19,0xd6,0x7f,0x72,0xcf,0xa4,0x59,
+ 0xd5,0x3d,0x49,0x44,0x6b,0x3d,0xae,0x35,0x9e,0x04,0x66,0xc7,0x08,0x62,0x3b,0x28,
+ 0xe0,0x01,0xf8,0xa9,0x45,0x6e,0x28,0xfb,0xad,0xc5,0x1e,0xdc,0xf0,0x31,0xaa,0xdb,
+ 0xf0,0xac,0xb5,0x4b,0x47,0x53,0x36,0x25,0x3b,0x03,0xaa,0x25,0x71,0x71,0x27,0x7d,
+ 0x20,0x9d,0x9a,0xde,0x96,0x16,0x04,0x8d,0xc9,0xf2,0xb0,0x11,0x3a,0x42,0x40,0x68,
+ 0xe1,0x5d,0xd7,0x86,0xbe,0x27,0x69,0xc6,0xf6,0x8b,0x89,0x4c,0xb6,0xa5,0x2a,0x7e,
+ 0xf2,0xec,0xbb,0x84,0xe7,0x81,0xfe,0xb1,0xff,0x00,0x88,0x5b,0x3f,0xa7,0x4a,0x19,
+ 0x42,0x38,0xfe,0x42,0x7d,0xcd,0x42,0x9f,0x15,0xed,0x6b,0xff,0x00,0x2d,0x75,0x96,
+ 0xdd,0x81,0x41,0x70,0x2a,0xd9,0x89,0x31,0xcc,0x82,0x85,0x73,0xd7,0x35,0xf4,0xa5,
+ 0x6b,0xe7,0xbf,0x1f,0x23,0x61,0xb4,0x8f,0x70,0xa2,0xe0,0xae,0x9b,0x65,0x9e,0x20,
+ 0x49,0xdb,0x36,0x09,0x7d,0xc4,0xb2,0x1b,0x1c,0xbc,0x86,0xd4,0x56,0xb9,0xd6,0x8f,
+ 0x83,0x75,0x29,0x5b,0x12,0x14,0x9e,0x14,0xd2,0xfa,0x8f,0x01,0xa5,0x10,0x95,0x72,
+ 0x9e,0xe9,0x3d,0x67,0xa5,0x7d,0x5d,0xa2,0x36,0x4b,0x90,0xce,0xcb,0xb2,0x3b,0xad,
+ 0xf6,0xe8,0xf1,0x93,0x73,0xba,0x4b,0x76,0x6c,0xa7,0x8f,0xab,0x8e,0xb8,0xb2,0xb5,
+ 0xab,0xf5,0x52,0x89,0xad,0x2f,0x01,0xca,0x75,0x54,0xf9,0xa6,0xb3,0x16,0xae,0x17,
+ 0x68,0x2e,0x31,0x9e,0xba,0xef,0xbf,0xf8,0xb7,0xbb,0xbf,0x5d,0xb8,0x52,0xbe,0x40,
+ 0x63,0x0d,0x0b,0x97,0x81,0xe6,0xf7,0x7d,0x36,0xcc,0xac,0xd9,0x4d,0x86,0x4f,0xc2,
+ 0x5e,0x2d,0x32,0x91,0x2e,0x33,0xbc,0x72,0x02,0xd2,0x79,0xe1,0x43,0xdd,0x27,0xb8,
+ 0x23,0xdc,0x12,0x3d,0xeb,0x97,0x02,0xed,0x37,0x39,0xd4,0xf8,0xd7,0x3b,0xb4,0x83,
+ 0x2a,0xe3,0x78,0xbc,0x26,0x44,0xb7,0xd4,0x38,0xf3,0x1d,0x75,0xe0,0xa5,0xa8,0x81,
+ 0xc7,0xa9,0x51,0x3d,0xab,0x17,0xae,0xdf,0x0e,0x94,0x98,0x39,0x7d,0x8e,0x4a,0xfb,
+ 0xa1,0x99,0xcc,0x38,0x7f,0x20,0xe2,0x4f,0xfd,0xab,0xae,0x4b,0x13,0x3b,0xf3,0x35,
+ 0xa3,0x5e,0x9b,0x5f,0xc6,0xdb,0x9b,0x5f,0xa5,0xd5,0xb0,0xe8,0xbd,0x22,0x1f,0x53,
+ 0x5e,0x7e,0x77,0x01,0x7f,0xb8,0x59,0x77,0x35,0xa9,0x77,0x1b,0x54,0xf9,0x36,0xe9,
+ 0xad,0xe4,0xf7,0x22,0xdc,0xa8,0x6f,0x29,0xa7,0x10,0x7e,0x25,0xc1,0xd9,0x49,0x20,
+ 0x8a,0x9f,0xbb,0x85,0xf1,0x58,0x6b,0x4e,0xf5,0x42,0x6e,0x33,0x83,0x63,0x30,0x32,
+ 0x6b,0x65,0xa6,0x42,0xa3,0xce,0xba,0xcc,0x94,0xb4,0xa6,0x4b,0x89,0x3c,0x2d,0x11,
+ 0xfa,0x07,0x01,0x29,0x20,0x8f,0x30,0xf5,0x05,0x1e,0x78,0x4f,0x1c,0x15,0x56,0x46,
+ 0x73,0x94,0x39,0x9c,0x66,0xd9,0x06,0x46,0xf3,0x3f,0x0e,0xf5,0xe2,0xe1,0x22,0xe0,
+ 0xb6,0x82,0xba,0xba,0x14,0xeb,0x8a,0x70,0xa7,0x9e,0x07,0x3c,0x15,0x71,0xcf,0x02,
+ 0xb8,0x87,0xc3,0x6c,0xb9,0x88,0x61,0x6e,0x96,0xaa,0xba,0x2d,0x2c,0x95,0x82,0xd7,
+ 0x22,0xfc,0xdf,0x71,0xc8,0xdb,0xaa,0xbb,0x9d,0xed,0x76,0xc0,0xa9,0x3b,0xa4,0xfe,
+ 0x21,0xf9,0x95,0x93,0x00,0xcb,0x70,0x5d,0x45,0x91,0x3b,0x39,0xc7,0xef,0x56,0x69,
+ 0x96,0xf6,0x26,0xc9,0x74,0x39,0x3e,0x1b,0x8e,0xb0,0xe2,0x12,0x4b,0x8b,0x3c,0xba,
+ 0x82,0xa5,0x00,0xa0,0xb2,0x54,0x07,0x74,0x9e,0xdd,0x2a,0x89,0x08,0x5a,0x9a,0x5a,
+ 0x56,0x85,0x14,0x2d,0x27,0x90,0xa4,0x9e,0x08,0x3f,0x51,0x5f,0x94,0xae,0xcb,0x47,
+ 0x85,0x51,0xe1,0xf2,0x4b,0x25,0x24,0x61,0x86,0x42,0x0b,0x80,0xd8,0x12,0x3c,0x6d,
+ 0xc0,0x3d,0x6d,0xcf,0xaa,0xb5,0x2e,0x2e,0xe5,0x5e,0x86,0xb0,0x6e,0xc6,0x36,0x93,
+ 0xed,0x32,0xcd,0xaa,0xc5,0x96,0x27,0xdd,0x6f,0x76,0xd8,0x2a,0xb6,0x43,0x75,0x45,
+ 0x2d,0xbf,0x32,0x4b,0x21,0xc0,0x15,0xc7,0x7e,0x94,0x0f,0x31,0x6a,0x03,0x82,0x43,
+ 0x64,0x72,0x09,0xe6,0xaa,0x06,0xe1,0xb9,0x1c,0xe7,0x28,0xd6,0x7c,0x7f,0x52,0xb2,
+ 0x9b,0xd4,0x9c,0x86,0xf9,0x67,0x9f,0x1e,0x6b,0x01,0xf5,0xf4,0x36,0xda,0x5a,0x74,
+ 0x38,0x1a,0x6d,0x09,0x01,0x2d,0xa0,0x90,0x7b,0x24,0x01,0xca,0x89,0xf5,0x24,0xd6,
+ 0x57,0xaa,0x1a,0xd2,0xc6,0x67,0xb4,0xcd,0x1c,0xc2,0x13,0x70,0x2f,0xdc,0xb1,0xcb,
+ 0x85,0xd9,0x13,0x22,0xa9,0x44,0xa9,0x2d,0x95,0xb6,0xb8,0xcb,0x23,0xe9,0xd2,0xf3,
+ 0x88,0x4f,0xfe,0x1a,0x87,0xb5,0x6a,0x16,0x74,0xf7,0x29,0x91,0x66,0x37,0x76,0xb1,
+ 0xab,0xc3,0xb6,0x90,0x9e,0xa3,0x3d,0x10,0x1d,0x2c,0x01,0xf5,0xf3,0x3a,0x7a,0x78,
+ 0xfd,0x6b,0x46,0xca,0x39,0x52,0x97,0x08,0x82,0x77,0x4b,0x18,0x32,0x3d,0xf2,0x36,
+ 0xe4,0x6f,0xa0,0x38,0xb4,0x01,0xd0,0x10,0x2f,0xb7,0x37,0xf2,0x0a,0x69,0x64,0x2e,
+ 0x22,0xcb,0x67,0xee,0xff,0x00,0x70,0xf7,0x3d,0xc5,0x6b,0x3d,0xf2,0xf2,0xbb,0x8b,
+ 0xb2,0x31,0x98,0x92,0x1c,0x8b,0x62,0x89,0xf3,0x25,0xa6,0x62,0x25,0x5d,0x29,0x58,
+ 0x41,0xf4,0x5b,0x80,0x05,0xa8,0x9e,0xfc,0xab,0x8e,0xc1,0x29,0x03,0x48,0x80,0x49,
+ 0x00,0x0e,0x49,0xf6,0x15,0xd8,0x63,0xd8,0xf5,0xcb,0x2c,0xc8,0x2d,0xb6,0x3b,0x3c,
+ 0x27,0x6e,0x17,0x6b,0x8c,0x96,0xe2,0x44,0x86,0xc2,0x79,0x71,0xe7,0x96,0xa0,0x94,
+ 0x21,0x23,0xea,0x49,0x03,0xf5,0xab,0xe1,0xd9,0x67,0x87,0xb6,0x17,0xb6,0x3c,0x72,
+ 0xdf,0x77,0xbd,0x41,0x87,0x93,0x6a,0x5b,0x88,0x4b,0xd2,0xaf,0x32,0x1a,0x0e,0x22,
+ 0x0b,0x9c,0x7f,0x57,0x10,0x28,0x7c,0x81,0x3c,0xf1,0xe6,0x76,0x5a,0xcf,0x27,0xb0,
+ 0x21,0x29,0xe8,0x34,0x54,0x70,0xe1,0xf4,0xd1,0xd2,0xd3,0xb6,0xcc,0x60,0x00,0x0f,
+ 0x4f,0xfd,0xeb,0xd4,0xa8,0x09,0x2e,0x37,0x2a,0x9b,0x70,0xdd,0xb4,0xeb,0xac,0xde,
+ 0x2e,0x58,0xd6,0x9b,0x67,0x29,0x0e,0xb0,0xeb,0x62,0x6c,0x3b,0x44,0xa6,0x92,0xb6,
+ 0x9c,0x6d,0x48,0x71,0x21,0xce,0x90,0x0a,0x56,0x85,0x29,0x24,0x73,0xf3,0x05,0x11,
+ 0xdc,0x1a,0xc7,0x32,0xbd,0x30,0xd4,0xdd,0x24,0xb7,0xcb,0x6f,0x23,0xc5,0x72,0xac,
+ 0x3e,0x05,0xc1,0x29,0x8f,0x24,0x5c,0x60,0x49,0x86,0xcc,0x94,0x85,0x85,0xa5,0x0b,
+ 0xea,0x4a,0x52,0xb1,0xd4,0x84,0xa8,0x03,0xcf,0x74,0x83,0xec,0x2b,0xd3,0x65,0x71,
+ 0xae,0x76,0xc8,0x77,0xab,0x7c,0x98,0x17,0x08,0x8c,0x4f,0x83,0x25,0xb2,0xd3,0xf1,
+ 0x64,0xb6,0x1c,0x69,0xd4,0x11,0xc1,0x4a,0x92,0xa0,0x42,0x81,0x1e,0xa0,0xd5,0xd1,
+ 0x63,0x49,0xb9,0x1f,0xfc,0x38,0xfa,0x2a,0x2a,0xc4,0xf0,0x3f,0xcd,0xc3,0xd8,0xf6,
+ 0xa9,0x61,0xee,0xba,0x94,0x98,0xd2,0xa1,0xdd,0xa3,0xb6,0x4f,0x75,0x79,0x88,0x71,
+ 0xa7,0x48,0x1f,0x87,0x94,0xcf,0xf8,0x85,0x5a,0x25,0x68,0x0d,0x2e,0xd9,0x86,0x0b,
+ 0xa2,0x1a,0xf1,0x74,0xd4,0x8c,0x09,0x93,0x8e,0x33,0x78,0xb5,0x3d,0x6d,0xb8,0xe3,
+ 0xac,0x27,0xfa,0x12,0x96,0xa7,0x59,0x75,0x0f,0x32,0x39,0xfb,0xa2,0x0b,0x4a,0x05,
+ 0x03,0x94,0x9e,0xb1,0xd2,0x11,0xc1,0x0a,0xdf,0xf5,0xed,0x12,0x94,0xa5,0x11,0x29,
+ 0x4a,0x51,0x12,0xb5,0xde,0x33,0xb7,0xad,0x38,0xc3,0xf5,0x03,0x21,0xce,0x2d,0x38,
+ 0x7d,0xae,0x36,0x5b,0x7e,0x91,0xf1,0x53,0xae,0xc5,0x80,0xb7,0xd4,0xe7,0x48,0x04,
+ 0xa1,0x4a,0xe7,0xcb,0x0a,0x23,0xa9,0x41,0x1d,0x3d,0x4a,0x25,0x4a,0xe4,0xf7,0xad,
+ 0x89,0x4a,0x22,0xfc,0x23,0x91,0x51,0xc3,0x72,0x9b,0x06,0xd2,0x6d,0xca,0x5a,0xa5,
+ 0xae,0xe3,0x62,0x8f,0x8e,0xe5,0x4a,0x6d,0x42,0x3e,0x49,0x66,0x65,0x2c,0xc8,0x43,
+ 0x9d,0xb8,0x2e,0xa5,0x3c,0x25,0xf4,0xf6,0x00,0x85,0x82,0x78,0xe4,0x25,0x48,0x27,
+ 0x9a,0x92,0x14,0xa2,0x2f,0x34,0xfb,0x8d,0xdb,0xbe,0x57,0xb6,0x3d,0x4d,0x9d,0x86,
+ 0x65,0x6c,0x0f,0x39,0xb1,0xe7,0x43,0x9e,0xc8,0x3e,0x44,0xf8,0xe4,0x90,0x87,0x9b,
+ 0x27,0xd8,0xf0,0x41,0x1e,0xa9,0x50,0x20,0xfa,0x56,0x35,0xa7,0x1a,0x53,0x98,0xea,
+ 0xfe,0x40,0xdd,0x93,0x0b,0xc6,0xae,0x59,0x35,0xcd,0x45,0x20,0xb1,0x6e,0x8e,0xa7,
+ 0x3c,0xb0,0x4f,0x01,0x4e,0x28,0x7c,0xad,0xa7,0xf9,0x94,0x42,0x47,0xb9,0xaf,0x40,
+ 0xbb,0xad,0xd9,0xe6,0x1d,0xbb,0x9b,0x5e,0x2f,0x0f,0x29,0x7e,0x55,0xbd,0x56,0x2b,
+ 0x87,0xc5,0x22,0x65,0xbf,0xa4,0x48,0x71,0x85,0x20,0x87,0x63,0x05,0x28,0x10,0x94,
+ 0xac,0x86,0xd4,0x55,0xc1,0x20,0xb6,0x38,0xf5,0x35,0xb3,0x74,0xcf,0x4a,0xb1,0x1d,
+ 0x1a,0xc5,0x23,0xe3,0x78,0x4e,0x3f,0x0b,0x1c,0xb2,0xb0,0x7a,0x84,0x58,0x4d,0xf1,
+ 0xd6,0xae,0x00,0x2b,0x71,0x47,0x95,0x38,0xb2,0x00,0xe5,0x6b,0x25,0x47,0x81,0xc9,
+ 0x34,0x45,0x4e,0x58,0x17,0x83,0x9e,0xb9,0xe4,0xb1,0x52,0xe5,0xf6,0x7e,0x37,0x87,
+ 0x30,0xa5,0x02,0xe4,0x69,0x93,0xd7,0x25,0xfe,0x40,0x3c,0x1e,0x96,0x10,0xb6,0xcf,
+ 0x1c,0x91,0xdd,0xc1,0xeb,0x59,0xbd,0xdb,0xc1,0x0f,0x3a,0x66,0x12,0x95,0x6c,0xd4,
+ 0x9c,0x7a,0x64,0xbe,0x3e,0x56,0xa5,0xc3,0x7d,0x86,0xc9,0xfc,0x56,0x9e,0xb2,0x3f,
+ 0xc3,0x57,0x03,0x4a,0x22,0xf3,0xf1,0xac,0x3e,0x1a,0xda,0xf7,0xa3,0x50,0x64,0xdc,
+ 0x65,0xe2,0x43,0x26,0xb4,0x47,0x3f,0x79,0x3f,0x18,0x7b,0xe3,0x40,0x1f,0xc5,0xe4,
+ 0x80,0x1e,0x09,0x1d,0xc9,0x51,0x6f,0x80,0x07,0x72,0x2a,0x2f,0xad,0x0a,0x6d,0x6a,
+ 0x42,0xd2,0x52,0xb4,0x9e,0x0a,0x54,0x38,0x20,0xfd,0x2b,0xd5,0x3d,0x44,0x3d,0xe5,
+ 0x78,0x73,0xe0,0xfb,0x9e,0xb7,0xce,0xbe,0x59,0x9a,0x8d,0x88,0x6a,0x3f,0x4a,0x9c,
+ 0x6a,0xf3,0x1d,0xae,0x19,0x9e,0xe7,0x1d,0x91,0x31,0x09,0x1f,0x30,0x3c,0x71,0xe6,
+ 0x8f,0x9d,0x3d,0x8f,0xce,0x07,0x41,0x22,0xa1,0x3a,0x56,0x4b,0xa9,0x1a,0x71,0x91,
+ 0xe9,0x1e,0x6f,0x76,0xc4,0x72,0xdb,0x5b,0xd6,0x6c,0x82,0xd6,0xf7,0x93,0x26,0x23,
+ 0xdc,0x12,0x93,0xc0,0x29,0x52,0x48,0xec,0xa4,0xa9,0x24,0x29,0x2a,0x04,0x85,0x24,
+ 0x82,0x09,0x06,0xb9,0x3a,0x51,0xa5,0x39,0x3e,0xb6,0x67,0xb6,0xac,0x3b,0x10,0xb6,
+ 0xae,0xe9,0x7c,0xb9,0x39,0xd0,0xd3,0x49,0xec,0x94,0x24,0x77,0x53,0x8e,0x2b,0xd1,
+ 0x28,0x48,0xe4,0x95,0x1f,0x40,0x28,0x8b,0x14,0x65,0x97,0x24,0xbc,0x86,0x9a,0x42,
+ 0x9d,0x75,0xc5,0x04,0xa1,0x08,0x1c,0xa9,0x44,0xf6,0x00,0x01,0xea,0x6a,0x53,0xe9,
+ 0x07,0x86,0x56,0xbf,0x6a,0xec,0x18,0xb7,0x16,0x71,0x66,0xf1,0x3b,0x5c,0x8e,0xed,
+ 0xcc,0xca,0x1f,0xf8,0x23,0xc7,0xf1,0x16,0x42,0x54,0xf8,0x1e,0xe0,0xf9,0x7c,0x11,
+ 0xdc,0x72,0x2a,0xd4,0xf6,0x75,0xe1,0xf1,0x81,0xed,0x6a,0xd5,0x0e,0xeb,0x2a,0x34,
+ 0x7c,0xa7,0x51,0x14,0x80,0xa9,0x19,0x04,0xa6,0x82,0x84,0x55,0x94,0xf0,0xa4,0x44,
+ 0x4a,0x87,0xdd,0x24,0x72,0xa1,0xd7,0xfb,0x6a,0x04,0xf2,0x40,0x21,0x29,0x95,0x74,
+ 0x45,0x50,0x16,0xef,0x04,0x3c,0xe1,0xd8,0x69,0x5c,0xfd,0x4b,0xc7,0xe3,0x4c,0x23,
+ 0x95,0x35,0x1e,0x13,0xef,0x36,0x0f,0xfb,0xe7,0xa0,0x9f,0xf0,0xd6,0xbe,0xcf,0x7c,
+ 0x1d,0x75,0xd7,0x16,0x69,0x6f,0x58,0xde,0xc6,0xf3,0x26,0xc1,0x3d,0x2c,0xdb,0xee,
+ 0x06,0x3b,0xe4,0x7d,0x4a,0x64,0x21,0xb4,0x0f,0xd1,0x66,0xaf,0x02,0x94,0x45,0xe5,
+ 0xf3,0x3f,0xd3,0x4c,0xb3,0x4a,0xef,0xee,0xd9,0x33,0x0c,0x72,0xe7,0x8d,0x5d,0x5b,
+ 0x27,0x98,0xd7,0x38,0xcb,0x65,0x4a,0x00,0xf1,0xd4,0x9e,0xa1,0xc2,0xd2,0x7d,0x94,
+ 0x9e,0x41,0xf5,0x04,0x8a,0xce,0x76,0xbd,0xb6,0x4c,0xaf,0x75,0x5a,0x9b,0x1b,0x12,
+ 0xc6,0x52,0x98,0xcc,0x36,0x91,0x22,0xe7,0x76,0x7d,0x3c,0xb3,0x6f,0x8d,0xd4,0x02,
+ 0x9c,0x50,0xe4,0x75,0x28,0xf3,0xc2,0x50,0x0f,0x2a,0x3f,0x40,0x14,0xa4,0xfa,0x18,
+ 0xd5,0x6d,0x1d,0xc3,0x35,0xc3,0x13,0x7f,0x1b,0xce,0x71,0xe8,0x59,0x15,0xa5,0xce,
+ 0x4a,0x5a,0x94,0x8f,0x9d,0x95,0xf0,0x47,0x98,0xd3,0x83,0x85,0x36,0xb0,0x09,0x01,
+ 0x68,0x20,0xf7,0x3d,0xfb,0xd6,0xbf,0xda,0x6e,0xd2,0x31,0x6d,0xa2,0xe2,0x17,0xbb,
+ 0x16,0x37,0x2e,0x4d,0xd1,0x57,0x5b,0x92,0xe7,0x3d,0x70,0x9e,0x84,0x09,0x05,0xbe,
+ 0x3a,0x59,0x65,0x4a,0x48,0x01,0x41,0xb4,0xf3,0xdf,0x81,0xca,0x96,0xb5,0x00,0x9e,
+ 0xae,0x01,0x17,0x5d,0xb7,0x2d,0x8b,0xe9,0x36,0xda,0xed,0x71,0xfe,0xc3,0xc7,0x63,
+ 0xdd,0xf2,0x30,0x84,0x89,0x19,0x1d,0xe1,0xa4,0xbf,0x31,0xc5,0x8e,0x79,0x28,0x2a,
+ 0x1c,0x32,0x93,0xcf,0xec,0xb6,0x13,0xc8,0x03,0xa8,0xa8,0x8e,0x6a,0x41,0xd2,0x94,
+ 0x45,0xae,0xef,0x1b,0x7b,0xd3,0xab,0xee,0xa5,0xd8,0x75,0x0a,0x56,0x23,0x6d,0x19,
+ 0x9d,0x91,0xc7,0x1c,0x89,0x78,0x65,0x90,0xd3,0xc4,0xad,0xb5,0x36,0x7c,0xc2,0x9e,
+ 0x03,0xbc,0x05,0x12,0x9e,0xbe,0xae,0x93,0xdd,0x3c,0x1a,0xd8,0x94,0xa5,0x11,0x29,
+ 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
+ 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x14,0x2e,
+ 0xf1,0x31,0xd9,0xbb,0x3b,0x8c,0xd2,0xc7,0x72,0xcc,0x76,0x08,0x5e,0xa2,0x62,0xf1,
+ 0xd6,0xf4,0x5f,0x21,0xa2,0xa7,0x6e,0x51,0x07,0x2a,0x72,0x21,0xe3,0xba,0x95,0xea,
+ 0xb6,0xfb,0x13,0xd5,0xca,0x40,0x1e,0x61,0x23,0xb8,0xf0,0xe7,0xd9,0xd4,0x5d,0xb0,
+ 0xe9,0x2b,0x17,0x6b,0xd4,0x44,0x1d,0x45,0xc9,0x18,0x6e,0x45,0xd5,0xe5,0x77,0x54,
+ 0x36,0x8f,0xcc,0xdc,0x34,0x9e,0x3b,0x74,0x72,0x0a,0xf8,0xf5,0x73,0x9e,0xea,0x4a,
+ 0x51,0xc4,0xb9,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,
+ 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,
+ 0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,
+ 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
+ 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,
+ 0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,
+ 0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,
+ 0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,
+ 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,
+ 0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,
+ 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
+ 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x7f,0xff,0xd9};
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/ncc1701.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/ncc1701.h
new file mode 100644
index 000000000..d10383d16
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/ncc1701.h
@@ -0,0 +1,318 @@
+//
+// ncc1701
+// Data size = 4912 bytes
+//
+// JFIF, Compression=JPEG, Size: 240 x 77, 24-Bpp
+//
+// for non-Arduino builds...
+#ifndef PROGMEM
+#define PROGMEM
+#endif
+const uint8_t ncc1701[] PROGMEM = {
+ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x48,
+ 0x00,0x48,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
+ 0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,
+ 0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,
+ 0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,
+ 0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,
+ 0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,
+ 0x00,0x11,0x08,0x00,0x4d,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
+ 0x01,0xff,0xc4,0x00,0x1d,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x06,0x07,0x08,0x09,0x04,0x03,0x02,0x0a,
+ 0xff,0xc4,0x00,0x40,0x10,0x00,0x01,0x03,0x03,0x02,0x03,0x06,0x03,0x05,0x04,0x09,
+ 0x05,0x01,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x11,0x06,0x07,0x12,0x21,
+ 0x31,0x08,0x13,0x41,0x51,0x61,0x71,0x09,0x22,0x81,0x14,0x32,0x91,0xa1,0xb1,0x15,
+ 0x42,0x52,0x62,0x16,0x23,0x24,0x53,0x63,0x72,0x73,0x82,0xb2,0x17,0x33,0x92,0xa2,
+ 0xd1,0xf0,0xff,0xc4,0x00,0x1a,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0xff,0xc4,
+ 0x00,0x23,0x11,0x00,0x02,0x02,0x01,0x05,0x01,0x00,0x02,0x03,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x02,0x11,0x12,0x03,0x21,0x31,0x41,0x51,0x04,0x05,0x13,
+ 0x22,0x32,0x61,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,
+ 0x00,0xd5,0x3a,0x2b,0x2c,0xb5,0xcf,0x6f,0x7d,0xd3,0xb4,0x6f,0x56,0xa3,0x65,0x1a,
+ 0xa2,0xd5,0x67,0xb0,0x5b,0xae,0x92,0x21,0x26,0xcf,0x22,0x02,0x56,0xa8,0xe1,0xb5,
+ 0x94,0x29,0x0e,0x2f,0xf7,0xd4,0x38,0x4e,0x4e,0x71,0x9e,0x94,0xa9,0x74,0xed,0xfb,
+ 0x3e,0xee,0xdb,0xc1,0x1a,0xd1,0x49,0xe2,0xf9,0x55,0xf6,0x76,0x92,0xd8,0x48,0xf4,
+ 0xc5,0x5a,0x8d,0x91,0x97,0xf8,0x69,0xc1,0x21,0x23,0x24,0xe0,0x79,0x9a,0x4e,0xb8,
+ 0x6a,0x5b,0x4d,0xa5,0x95,0x3b,0x36,0xe7,0x12,0x2b,0x69,0xea,0xa7,0x9f,0x4a,0x40,
+ 0xe7,0x8f,0x13,0x59,0x3d,0x74,0xed,0x71,0x2a,0xf8,0x15,0x19,0x7a,0xaa,0xe1,0x29,
+ 0xb0,0x4a,0x80,0x0f,0x9c,0x67,0xd8,0x54,0x69,0x72,0xdc,0xa9,0xbb,0x85,0xaa,0x58,
+ 0xb6,0x37,0x71,0x90,0xa8,0xe9,0x52,0x78,0xbb,0xd7,0x4f,0xcd,0x9c,0xa9,0xc5,0x7b,
+ 0xf0,0x80,0x91,0xea,0xb2,0x7c,0x05,0x0e,0x2a,0x2a,0xdb,0x1c,0x5c,0xa5,0x25,0x14,
+ 0xb7,0x66,0xd0,0x23,0x5d,0x58,0x1e,0x68,0xba,0xcd,0xd2,0x3c,0x96,0x87,0x55,0xb0,
+ 0xae,0xf0,0x0f,0x72,0x33,0x4a,0xb0,0x6e,0x71,0x2e,0x6d,0x97,0x22,0x49,0x6a,0x4a,
+ 0x07,0x52,0xd2,0xc2,0xb1,0xef,0xe5,0x59,0x85,0x62,0xd7,0x57,0x6d,0x31,0x6f,0x61,
+ 0x88,0xb3,0x1c,0x8c,0xd0,0x48,0x09,0x6a,0x2b,0x9c,0x28,0x23,0xa6,0x08,0x14,0xbb,
+ 0xa1,0xb7,0x73,0x50,0x6d,0xfe,0xa9,0x62,0xfb,0x0e,0x5a,0xd6,0x90,0xa1,0xf6,0xa8,
+ 0xae,0x2f,0xfa,0xb9,0x0d,0xe7,0xe6,0x0a,0xf5,0xc7,0x43,0xd4,0x57,0x04,0x3e,0x87,
+ 0x39,0xe3,0x8e,0xde,0x9e,0xcc,0xff,0x00,0x1e,0xe3,0x06,0xf2,0xdd,0x75,0x46,0x94,
+ 0xd4,0x4d,0xbe,0x1d,0xa7,0x74,0x46,0xc1,0x47,0x57,0xf4,0x8e,0x54,0x97,0xe7,0xf7,
+ 0x1f,0x69,0x16,0xeb,0x7b,0x05,0xe7,0xcb,0x5c,0x5c,0x3c,0x64,0x0e,0x41,0x39,0xe5,
+ 0x92,0x6a,0x4e,0xb4,0x5c,0x9b,0xbc,0xda,0xa1,0x4f,0x64,0x29,0x2c,0xca,0x61,0x0f,
+ 0xa0,0x2f,0xa8,0x4a,0x92,0x14,0x33,0xeb,0x83,0x55,0xb3,0xb6,0x8f,0x64,0x16,0xfb,
+ 0x43,0x69,0xe5,0x5d,0x74,0xf3,0xa9,0xb6,0xeb,0x78,0xcd,0xa1,0x94,0x48,0x2e,0x14,
+ 0x22,0x5c,0x74,0x92,0xae,0xe1,0x67,0xa0,0xe6,0x72,0x0e,0x3a,0xfa,0x1a,0xed,0x47,
+ 0x8e,0xef,0xa2,0x3c,0x87,0xf1,0x5d,0xd0,0x37,0x1b,0xdc,0x78,0x4c,0x69,0x2d,0x42,
+ 0x86,0x1d,0x59,0x4f,0xda,0x5f,0x4b,0x48,0x03,0xc8,0xf0,0xf1,0x13,0x52,0x2a,0x7b,
+ 0x76,0xe8,0x76,0x16,0x15,0x36,0xf1,0x62,0x8a,0xc9,0x03,0x90,0xb8,0x95,0x2c,0x79,
+ 0xe4,0x70,0x01,0xf9,0xd6,0x7c,0x5c,0x3e,0x17,0xbb,0xbd,0x76,0x9a,0xa9,0x32,0x74,
+ 0xeb,0xfc,0x44,0xf3,0x4a,0x2e,0xd1,0x42,0x4f,0xfe,0xf5,0xf2,0x9f,0x85,0x8e,0xe7,
+ 0x05,0x64,0xe8,0xf5,0xaf,0x3f,0xc5,0x79,0x8c,0x3f,0x45,0xd5,0xac,0x48,0xdc,0xbe,
+ 0x37,0x0f,0x88,0xee,0xd5,0x5b,0xd4,0xb4,0x1d,0x49,0x09,0xf5,0x85,0x72,0xee,0x3e,
+ 0x6e,0x5e,0x5f,0x7b,0xf3,0xa6,0xfb,0x7f,0x12,0x8d,0x03,0x32,0x52,0x1a,0x8d,0x70,
+ 0x95,0x21,0xd5,0xa4,0x84,0xa1,0xa6,0x40,0x41,0xc7,0x89,0x51,0x49,0xc7,0xe3,0x55,
+ 0x1d,0x9f,0x87,0x06,0xf3,0x45,0x42,0x5a,0x6b,0x4b,0x0e,0xe9,0x09,0x09,0x40,0xfd,
+ 0xb1,0x1c,0x60,0x0f,0xf7,0xd3,0x23,0x78,0x3b,0x2d,0xee,0x3e,0xc8,0x59,0x61,0xcf,
+ 0xd4,0x56,0x25,0x43,0x8f,0x31,0xd3,0x1d,0x90,0xdd,0xd1,0x32,0x14,0x55,0x8e,0x25,
+ 0x7c,0x89,0x59,0xe5,0x81,0xcc,0xe3,0x1d,0x3c,0xc5,0x52,0x51,0x25,0xe4,0x5e,0xb9,
+ 0x5d,0xbe,0x6c,0xf7,0x04,0xb4,0x44,0x47,0xca,0x51,0xf3,0x25,0x62,0x62,0x9b,0xe2,
+ 0xf7,0xe0,0xc6,0x7e,0xb5,0x0e,0xeb,0x8e,0xda,0x2b,0xd7,0x9b,0x8b,0x21,0xa4,0x5b,
+ 0xdb,0x72,0xdf,0x67,0x8a,0xca,0x61,0x43,0x7d,0xe5,0x29,0x0f,0x4e,0x7d,0x44,0x77,
+ 0xce,0xf5,0xe2,0x4b,0x68,0x4f,0xca,0x8e,0x9c,0x4a,0xc9,0x04,0xa4,0x62,0xb3,0xed,
+ 0xa7,0x67,0xdd,0xd2,0xde,0x0d,0x38,0xab,0xc6,0x8d,0xd2,0x53,0x6f,0x36,0xa6,0x9e,
+ 0x54,0x55,0x4b,0x44,0x86,0x5b,0x47,0x7a,0x8f,0xbc,0x91,0xc6,0xe2,0x49,0xc6,0x7c,
+ 0x05,0x3a,0xae,0x7d,0x8d,0x77,0x77,0x44,0xc0,0x73,0x53,0x5c,0xf4,0xa3,0x36,0x70,
+ 0x90,0x95,0x2c,0x4a,0xbc,0xc6,0xef,0x57,0xc1,0x92,0x02,0x51,0xde,0x7c,0xca,0xeb,
+ 0x80,0x32,0x4d,0x14,0xba,0x1a,0x6d,0x34,0xe4,0x4d,0x32,0x37,0x09,0xf9,0x17,0x98,
+ 0xd3,0xad,0x89,0x5d,0xa2,0x60,0x56,0x59,0x76,0x1b,0x84,0x38,0x95,0x79,0xf1,0x0e,
+ 0x64,0x9f,0x1f,0x3a,0xb8,0x9b,0x5f,0xda,0x21,0x2e,0x6d,0x4a,0xae,0x5a,0xb0,0x3d,
+ 0xfb,0x7e,0x0a,0x9c,0x60,0xb2,0xdc,0x65,0x87,0x26,0xf0,0xa4,0x14,0x2d,0x29,0xc7,
+ 0xef,0x03,0x83,0xe1,0x90,0x6b,0x3d,0xf4,0x9e,0xe0,0xea,0x7d,0x1f,0x2a,0x35,0xd2,
+ 0x26,0x9c,0x96,0xd4,0xb0,0x8e,0x5c,0x6c,0xa5,0x4a,0x46,0x7a,0x8c,0x78,0x7e,0x19,
+ 0xa5,0xbd,0x6b,0xda,0xf3,0x77,0xae,0x31,0x5e,0x8f,0x06,0xcf,0x2d,0xb0,0xe8,0x21,
+ 0x45,0x0c,0x84,0xf5,0xf5,0x3e,0xc2,0xb0,0xd3,0xd0,0x92,0x79,0x49,0xf3,0xd1,0xea,
+ 0x7d,0x9f,0x6e,0x9e,0xb2,0x5a,0x70,0x82,0x55,0xd9,0xe1,0xda,0xb3,0xb5,0xe6,0xe5,
+ 0x6b,0x2b,0xf1,0x6f,0x4d,0xdb,0xee,0x96,0x48,0x2c,0x8e,0x14,0xa2,0x52,0xd2,0x86,
+ 0xc1,0x1e,0x21,0x23,0x1f,0x89,0xc9,0xa8,0x0b,0x47,0x76,0xbb,0xdf,0xad,0xb3,0xd4,
+ 0x0c,0x5c,0xe2,0x6b,0x34,0x84,0x21,0xde,0xf1,0xdb,0x6c,0xb7,0x9b,0x5c,0x47,0xc7,
+ 0x8a,0x56,0xdf,0xaf,0x98,0xc1,0xf5,0xa6,0xce,0xb0,0xb5,0xee,0x7e,0xb8,0x94,0xeb,
+ 0xb3,0xad,0xf2,0xd6,0x56,0x4a,0x88,0x53,0xcd,0xa0,0x7f,0xca,0x9a,0xe7,0x63,0xf5,
+ 0x8c,0x97,0x56,0xa7,0x2d,0xcc,0x45,0x49,0x51,0x20,0x3d,0x2d,0x2a,0xe1,0x19,0xe4,
+ 0x39,0x12,0x6b,0xa1,0xa5,0xc2,0x3c,0xa4,0xfd,0x35,0xbb,0x63,0xbe,0x27,0xdb,0x69,
+ 0xb8,0x8c,0xd9,0xad,0x9a,0xad,0xd3,0xa4,0xb5,0x34,0xc2,0x86,0x1c,0x4a,0xb2,0xe4,
+ 0x12,0xe9,0x38,0xf9,0x5e,0xc0,0xc2,0x49,0xfe,0x20,0x31,0x9a,0xb9,0x48,0x5a,0x5d,
+ 0x42,0x56,0x85,0x05,0xa1,0x43,0x21,0x49,0x39,0x04,0x79,0x8a,0xfc,0xe9,0x7f,0xd0,
+ 0x8b,0xe1,0x6b,0x8a,0x7d,0xce,0x04,0x56,0x5b,0x19,0x21,0x2b,0x5b,0x9c,0x3f,0x4e,
+ 0x11,0xe7,0x56,0xf7,0x6a,0x7b,0x6d,0xee,0x26,0xd6,0xe8,0x4b,0x46,0x91,0x6f,0x53,
+ 0x37,0xa8,0x51,0x6d,0x68,0x47,0x8d,0x21,0x56,0xd0,0xe3,0x81,0xb1,0xf7,0x52,0xa5,
+ 0xa8,0x92,0xae,0x11,0xcb,0x9f,0x30,0x00,0x15,0x38,0x37,0xc1,0x59,0xa3,0x5c,0xa8,
+ 0xac,0xd7,0x8b,0xf1,0x26,0xdc,0x88,0x6e,0x23,0xbc,0xd3,0x16,0x8b,0x82,0x70,0x12,
+ 0x43,0xa5,0x4d,0x0c,0xff,0x00,0x17,0x25,0x79,0x53,0xd2,0xd5,0xf1,0x34,0xb8,0x96,
+ 0x12,0x2e,0x1b,0x7f,0x1c,0xba,0x4f,0x35,0x47,0xba,0x10,0x91,0xf4,0x2d,0x9f,0xd6,
+ 0xa7,0x09,0x0f,0x34,0x5f,0x4a,0x2a,0x87,0x5c,0xbe,0x23,0xd7,0x79,0x89,0x79,0x36,
+ 0xcd,0x2f,0x02,0x0a,0xd4,0x9c,0x36,0x66,0x3a,0xb7,0x78,0x4f,0x99,0xe1,0x23,0x3f,
+ 0x80,0xaf,0x58,0x3f,0x11,0xab,0x83,0xa9,0xee,0x9c,0xb3,0x59,0x97,0x25,0xbc,0x25,
+ 0xd0,0x97,0xdc,0x4f,0xcd,0xec,0x7a,0x51,0x84,0xbc,0x1e,0x51,0xf4,0xbd,0x94,0x55,
+ 0x2a,0x8f,0xdb,0xf6,0xed,0x24,0x9e,0x0d,0x39,0x6b,0x5e,0x3a,0xf0,0xc9,0x59,0xae,
+ 0x94,0xf6,0xf0,0xbc,0xf1,0x27,0x3a,0x6a,0xdf,0x8f,0x1c,0x3c,0xba,0x7f,0xae,0x5e,
+ 0x13,0x9c,0x4b,0x99,0x45,0x54,0xf8,0xbd,0xb9,0xdc,0x9a,0xf2,0x1a,0x6b,0x48,0x27,
+ 0x8d,0x47,0x1f,0x3d,0xc5,0x28,0x1f,0x8a,0x92,0x00,0xfa,0xd2,0xa0,0xed,0xc7,0x69,
+ 0x8f,0x29,0x6c,0xcc,0xd2,0xd2,0xd8,0xe1,0x1f,0x79,0x99,0x8d,0xbb,0xcf,0xcb,0x90,
+ 0x03,0x1e,0xa0,0xd2,0xc2,0x5e,0x0f,0x38,0x96,0x72,0x8a,0x80,0xed,0xbd,0xb4,0xf6,
+ 0xfe,0x67,0x00,0x92,0xdd,0xd6,0x02,0x8e,0x02,0x8b,0xb1,0x92,0xa4,0x8c,0xf5,0xe6,
+ 0x95,0x13,0x81,0xed,0x52,0x86,0x90,0xdd,0x7d,0x21,0xaf,0x55,0xc1,0x61,0xbf,0xc3,
+ 0xb8,0x3d,0x8c,0xf7,0x09,0x5f,0x03,0xb8,0xff,0x00,0x22,0xb0,0xaf,0xca,0x93,0x8b,
+ 0x5c,0xa2,0x93,0x4f,0x82,0xa9,0xf6,0x87,0xf8,0x68,0xe9,0xfd,0xd4,0xd6,0x37,0x3d,
+ 0x53,0xa5,0xee,0x31,0xec,0x57,0x0b,0xa3,0xcb,0x95,0x36,0x14,0xd6,0x4b,0xac,0x38,
+ 0xfa,0xce,0x56,0xea,0x54,0x0e,0x50,0x54,0x79,0x90,0x01,0x19,0xe7,0xca,0xab,0xad,
+ 0xfb,0xe1,0x55,0xb8,0x36,0xe0,0xe7,0xd9,0x53,0x62,0xbd,0x80,0x0f,0x09,0x62,0x62,
+ 0x9b,0x51,0xc7,0x41,0xfd,0x60,0x4e,0x0f,0xd6,0xb5,0x8a,0x8a,0x2f,0xa1,0xa6,0xd3,
+ 0x4e,0x2d,0xa6,0x8c,0x4d,0xba,0x76,0x16,0xdd,0x1d,0x21,0x24,0xba,0x8d,0xbd,0xba,
+ 0x2d,0x64,0x60,0x2e,0x08,0xfb,0x42,0x79,0xf2,0xe7,0xc2,0xa3,0x8a,0x61,0xc4,0xd2,
+ 0x3a,0xa3,0x6e,0x35,0x93,0x73,0x2f,0x7a,0x76,0xe1,0x6b,0x0c,0xab,0x81,0xc6,0xe6,
+ 0xc6,0x5b,0x7c,0xf0,0x46,0x32,0x46,0x39,0xa4,0x9f,0xc0,0x56,0xf7,0x57,0x2d,0xc2,
+ 0xd7,0x0e,0xec,0xc8,0x66,0x74,0x46,0x26,0x34,0x0e,0x7b,0xb9,0x0d,0xa5,0x69,0xcf,
+ 0xb1,0x14,0x95,0x25,0x55,0xb0,0xdc,0xa7,0x29,0x29,0xb9,0x36,0xd7,0xbb,0x99,0x3f,
+ 0x66,0xb8,0xc2,0xd4,0x76,0xc6,0x54,0xc3,0x8c,0x92,0x47,0xca,0x19,0x1c,0xc7,0xf9,
+ 0xbc,0xa9,0xd5,0xa4,0x34,0x74,0x9d,0x6f,0xa9,0xed,0xda,0x66,0xd6,0xeb,0x6e,0xdc,
+ 0xa7,0x28,0xf0,0x24,0x91,0xf2,0xb6,0x92,0x38,0xdc,0x50,0xeb,0xc2,0x07,0x3a,0x92,
+ 0x3b,0x54,0xfc,0x3b,0xd7,0x74,0x5c,0xfd,0x55,0xb4,0x6f,0xae,0xcf,0x70,0x73,0x89,
+ 0xe9,0x56,0x16,0x5d,0x2d,0xb6,0xe9,0xea,0x54,0xc1,0xe8,0x95,0x1f,0xe0,0x3c,0x8f,
+ 0x86,0x2a,0x95,0xec,0x47,0x66,0x6d,0xe6,0xbc,0xeb,0xbf,0xdb,0xf6,0x19,0x57,0x2d,
+ 0x33,0x78,0xb5,0xc8,0x52,0x11,0x7e,0xbb,0x3c,0xb6,0x92,0xca,0x81,0xc2,0x90,0x94,
+ 0x9f,0x9d,0x44,0x10,0x41,0x00,0x11,0xe0,0x48,0xae,0x58,0xfc,0xdf,0xca,0xd3,0xb5,
+ 0xe1,0xef,0x4b,0xf3,0x2f,0xf5,0xe2,0xe0,0x94,0xaa,0xac,0xdc,0x0b,0x3d,0xb5,0x16,
+ 0x6b,0x44,0x1b,0x7b,0x6a,0x2b,0x6e,0x2b,0x08,0x61,0x2a,0x57,0x52,0x12,0x90,0x90,
+ 0x7f,0x2a,0xeb,0x52,0x82,0x41,0x24,0x80,0x07,0x52,0x6a,0x09,0xb5,0x6a,0x5d,0x64,
+ 0x34,0x75,0xae,0xd9,0x7a,0xd4,0x31,0x9d,0xbb,0x30,0xc2,0x1b,0x99,0x73,0xb7,0xb1,
+ 0xdd,0x2a,0x4a,0xc0,0xe6,0xac,0x12,0x78,0x73,0xe9,0x49,0x93,0xe3,0x5c,0xae,0x4b,
+ 0xef,0x24,0xce,0x97,0x2d,0x58,0xe1,0x0b,0x5b,0xe5,0x39,0x1e,0xc2,0xbb,0xd6,0x93,
+ 0x7c,0x9f,0x36,0xf5,0x11,0x36,0xdd,0x75,0xd6,0x9e,0xb2,0x8c,0xcd,0xbc,0x43,0x63,
+ 0xd0,0xba,0x09,0xfc,0x05,0x34,0x6e,0x5d,0xa1,0x34,0x8c,0x0e,0x30,0xd3,0xf2,0xa6,
+ 0xad,0x3d,0x03,0x11,0xd5,0x85,0x7b,0x28,0xe0,0x54,0x50,0xe5,0x85,0xb6,0x1c,0x19,
+ 0x86,0xda,0x41,0xf1,0x48,0xfd,0x4d,0x76,0x31,0xa7,0xe1,0x05,0x25,0x6f,0xa5,0xa0,
+ 0x8f,0xe1,0x51,0xe5,0x8f,0xa5,0x68,0xb4,0x57,0x6c,0x87,0xa8,0xfa,0x16,0xa7,0x76,
+ 0xa5,0xef,0x90,0xeb,0x76,0xbd,0x33,0x29,0xd9,0x05,0x24,0x37,0xdf,0x38,0x30,0x15,
+ 0xfb,0xa4,0x84,0xe7,0x97,0xa6,0x6a,0xad,0xee,0x26,0xc5,0x6b,0x0d,0xfa,0xd4,0xcd,
+ 0xdd,0xf5,0x6d,0xd5,0x57,0x15,0xb4,0xf2,0xdd,0x8a,0xc4,0xf6,0xdd,0xee,0xa2,0x71,
+ 0x63,0x21,0x96,0x92,0xe8,0x08,0x18,0x03,0xdf,0x1c,0xce,0x6a,0xd1,0x31,0x36,0xc7,
+ 0x68,0xc0,0x8e,0xdb,0x09,0x23,0xc7,0x19,0x35,0xe8,0xf6,0xb6,0xb4,0x32,0x14,0xa2,
+ 0xf2,0x42,0xfc,0xea,0xd4,0x12,0xe1,0x12,0xe6,0xd9,0x18,0xed,0x46,0xd6,0xcd,0xd9,
+ 0x2d,0x22,0x2c,0x76,0x1b,0xc4,0xcb,0x45,0xb5,0x4a,0x5b,0xce,0xc5,0x8e,0xea,0x92,
+ 0xd2,0x9d,0x51,0xca,0xd6,0x02,0x8a,0x94,0x92,0x7d,0x15,0x49,0x1a,0xa6,0xd9,0x1d,
+ 0xc7,0x9c,0x71,0xf5,0xb9,0x31,0xf5,0x73,0x5b,0xaf,0x2c,0xa8,0x9f,0x52,0x4d,0x3c,
+ 0xf5,0x16,0xbb,0x87,0x27,0x88,0x21,0xf4,0x91,0x51,0xd5,0xe6,0xf4,0xdc,0xc2,0xae,
+ 0xed,0xc0,0xa1,0xe7,0x4d,0x40,0x97,0x21,0x87,0x7c,0x8e,0xc3,0x3c,0x5c,0x08,0x09,
+ 0x1e,0x43,0xa5,0x31,0xee,0x6f,0x36,0xd8,0x21,0x29,0x19,0xf1,0xe5,0x4f,0x6b,0xcb,
+ 0x0e,0x49,0x51,0x3c,0x49,0x03,0xde,0x9a,0x33,0xac,0xea,0x71,0x44,0x95,0xa7,0x1e,
+ 0xf4,0xe8,0x56,0x32,0x2e,0xb3,0x9c,0x42,0x95,0xc0,0x9e,0x25,0x63,0x09,0x40,0x20,
+ 0x64,0xf9,0x53,0x26,0xe1,0x71,0xbb,0xcd,0x9c,0x88,0xd8,0x10,0xf8,0x82,0xb0,0x09,
+ 0x07,0x8b,0xeb,0xed,0xfc,0x39,0xa7,0x3e,0xbe,0xdb,0x39,0xba,0x9e,0xf5,0x64,0x53,
+ 0x72,0x12,0xd5,0xba,0x3a,0xdc,0x54,0xa2,0x97,0x8b,0x6b,0xc1,0x03,0x87,0x87,0x1d,
+ 0x4e,0x45,0x23,0xbb,0xb5,0x37,0x5f,0xe9,0x55,0x9e,0x7b,0x97,0xa6,0xa7,0x43,0xb7,
+ 0x95,0xe0,0xba,0xde,0x1f,0x29,0x50,0xfb,0xa4,0x8e,0x4a,0xe9,0xd7,0x95,0x4d,0x31,
+ 0xec,0x21,0xbd,0x6e,0x6a,0xc7,0x0d,0x72,0xa6,0x4a,0x71,0xb6,0x9a,0x1c,0x4e,0x2b,
+ 0xbd,0x52,0x5b,0x03,0xa6,0x4f,0x32,0x6b,0x88,0xdf,0x2d,0xe5,0x02,0x42,0x1c,0x52,
+ 0x9a,0x73,0x07,0xbf,0x43,0x2a,0x29,0x20,0xf4,0xca,0xb1,0x52,0xc4,0xab,0x03,0x0e,
+ 0xa1,0x6d,0x38,0xd2,0x56,0xda,0xc7,0x09,0x0b,0x19,0x04,0x79,0x1a,0x6e,0x5b,0x74,
+ 0x13,0x36,0x10,0xf3,0x10,0x6e,0x12,0x23,0xc5,0x5a,0xb8,0x93,0x14,0x84,0xb8,0x86,
+ 0xfd,0x11,0xc4,0x09,0x03,0xd2,0x96,0x3b,0x8d,0x31,0xb5,0x3d,0x52,0xe1,0xc2,0x5b,
+ 0xcc,0xc4,0x5c,0xe5,0x80,0x08,0x65,0xb2,0x02,0x95,0xed,0x9e,0x54,0x8d,0x6d,0xd4,
+ 0x12,0x6e,0x0f,0x04,0x2a,0x13,0x71,0x95,0x9c,0x29,0xb7,0x1f,0xe1,0x75,0x1e,0xe9,
+ 0x20,0x7e,0x44,0xd4,0x93,0x6f,0xb0,0x45,0xb5,0xf7,0xc3,0xbe,0x93,0x20,0xba,0xae,
+ 0x35,0x17,0xd6,0x55,0x83,0xfc,0xa3,0xc0,0x7a,0x57,0xa4,0x88,0xf6,0xd7,0x14,0x92,
+ 0xf4,0x56,0xde,0x52,0x7a,0x17,0x10,0x0e,0x3d,0xa8,0x61,0x63,0x37,0xbc,0x4d,0xd1,
+ 0x2e,0xc5,0x85,0x21,0x0e,0x4c,0x68,0x82,0xb4,0x21,0xdc,0x60,0x7a,0x9c,0x1f,0xd2,
+ 0x95,0x2d,0x5a,0x14,0x45,0x8e,0x1a,0x69,0xa8,0xe9,0x6c,0xfc,0xca,0x41,0x6b,0x04,
+ 0xa8,0xf5,0xf9,0x93,0x8f,0xd2,0x9c,0x91,0xdc,0x84,0xc8,0xc3,0x30,0xd9,0x68,0xff,
+ 0x00,0x2a,0x42,0x6b,0xb1,0x2f,0x36,0xae,0x7c,0x21,0x20,0x78,0xf1,0x60,0x53,0xb1,
+ 0x1c,0x10,0x34,0xb3,0x4d,0xa9,0xb5,0xc8,0xc3,0x65,0xa5,0x85,0xa5,0x0d,0xa8,0x29,
+ 0x3c,0xbd,0x70,0x0d,0x3a,0x59,0x9e,0xdb,0x43,0x09,0xe2,0x5f,0xb8,0xe5,0x4d,0xb9,
+ 0x7a,0xae,0xcb,0x6e,0x04,0x49,0xba,0xc3,0x60,0x8e,0xa8,0x5b,0xe9,0xe2,0xfc,0x33,
+ 0x9a,0x48,0x97,0xbc,0xda,0x62,0x08,0xf9,0x25,0x3b,0x2d,0x63,0xf7,0x63,0xc7,0x51,
+ 0xfc,0xd5,0x81,0xf9,0xd5,0x58,0x89,0x05,0x13,0x14,0x47,0xdd,0x56,0x3d,0xab,0xec,
+ 0xc8,0x56,0x32,0x52,0xa3,0xee,0x2a,0x1a,0xb9,0xf6,0x89,0x4b,0x43,0x86,0x05,0x99,
+ 0xd5,0xf9,0x2e,0x4b,0xa1,0x03,0xff,0x00,0x14,0xe7,0xf5,0xa6,0x8d,0xd3,0x7d,0x35,
+ 0x75,0xcd,0xc0,0xdc,0x47,0x58,0x82,0x5c,0x3c,0x09,0x6e,0x33,0x3c,0x4a,0x24,0xf4,
+ 0x00,0xab,0x27,0x3e,0xd4,0xc2,0x8b,0x11,0x32,0xe0,0xcc,0x46,0x94,0xe4,0x82,0x19,
+ 0x6c,0x75,0x5b,0x98,0x4a,0x7f,0x13,0x5c,0x7b,0x75,0xaa,0xae,0x3a,0xff,0x00,0x72,
+ 0x6d,0x5a,0x6f,0x6e,0xa3,0x3d,0x7b,0xd4,0xaa,0x79,0x2b,0x0f,0xc6,0x25,0x2c,0x42,
+ 0x4a,0x48,0x2a,0x79,0xd7,0x47,0x24,0xa5,0x3e,0x9c,0xc9,0xe4,0x3a,0xd4,0x17,0xa2,
+ 0xf6,0x77,0x72,0xb7,0xff,0x00,0x51,0xa2,0xd1,0x69,0x6a,0x5d,0xf6,0xe4,0xb5,0x61,
+ 0xc4,0x38,0xe9,0x53,0x71,0xd3,0xc7,0xc2,0x56,0xea,0x87,0xca,0xda,0x41,0x0a,0xeb,
+ 0xcc,0xf0,0xf2,0x07,0x23,0x3a,0xf5,0xd8,0xfb,0xb2,0x9d,0xab,0xb2,0xde,0xdf,0x2a,
+ 0xdc,0x97,0x5b,0xb9,0x6a,0x5b,0x82,0x83,0xd7,0x4b,0x9a,0x51,0x8e,0xf1,0x5e,0x0d,
+ 0xa3,0xc4,0x36,0x9f,0x0f,0x3e,0xa6,0xb3,0x9c,0xf1,0x5b,0x1a,0x46,0x17,0xc9,0x3e,
+ 0x51,0x45,0x15,0xc6,0x74,0x85,0x14,0x51,0x40,0x05,0x55,0xfe,0xd0,0xba,0xf9,0xce,
+ 0xcf,0x97,0x01,0x7c,0xbc,0x69,0x89,0xd7,0xbd,0x1d,0x35,0xc2,0x57,0x76,0xb5,0x94,
+ 0x95,0xc2,0x75,0x47,0xee,0x3c,0xd9,0xc7,0xca,0x7c,0x16,0x0f,0x3e,0x98,0xcf,0x5b,
+ 0x41,0x5c,0x37,0xcb,0x24,0x0d,0x4b,0x68,0x97,0x6b,0xba,0x44,0x6a,0x7d,0xba,0x5b,
+ 0x6a,0x65,0xf8,0xcf,0xa4,0x29,0x0e,0x20,0x8c,0x10,0x41,0xaa,0x8c,0xb1,0x76,0x4c,
+ 0x96,0x48,0xa5,0x56,0xee,0xd9,0x3b,0x59,0xa9,0xec,0xb2,0x58,0x6f,0x50,0x0d,0x2d,
+ 0x74,0x79,0xa5,0xa1,0xa7,0x2e,0x30,0x96,0x52,0xc2,0x88,0x21,0x0b,0x3c,0x40,0x05,
+ 0x63,0x92,0xb1,0x9c,0x78,0x52,0x96,0xda,0x6e,0x76,0x90,0xb6,0xda,0xdd,0x8d,0x2b,
+ 0x77,0xad,0x5a,0xad,0xe7,0x5c,0xef,0x10,0xfc,0x97,0x1b,0x65,0x4d,0x8e,0x10,0x0a,
+ 0x40,0x07,0x98,0xc8,0x27,0x9f,0x4c,0xe3,0xa5,0x32,0x77,0xa7,0xe1,0x76,0x65,0x4b,
+ 0x95,0x73,0xdb,0x6b,0xf2,0x18,0x4a,0xfe,0x64,0xd9,0x6f,0x0a,0x51,0x4a,0x7f,0x95,
+ 0x0f,0x0c,0x90,0x3c,0x82,0x81,0xf7,0xaa,0x21,0xaa,0xf6,0xf2,0xf9,0xa4,0x2e,0x37,
+ 0x08,0x17,0x6b,0x7f,0x03,0xb0,0x5e,0x5c,0x77,0xd4,0x82,0x1c,0x42,0x56,0x95,0x70,
+ 0xab,0x98,0xf0,0xc8,0xeb,0x5d,0x29,0xa9,0x3b,0x39,0x9c,0x69,0xee,0x6a,0x45,0xcf,
+ 0x77,0xf4,0x4c,0x56,0xcf,0x1e,0xad,0xb4,0xab,0x87,0xf8,0x25,0x20,0x9f,0xc8,0xd3,
+ 0x06,0xe7,0xda,0x0f,0x44,0x7d,0xa1,0x48,0x4d,0xcd,0x0e,0x0c,0xff,0x00,0xdc,0x4f,
+ 0x43,0xf5,0xac,0xcc,0x30,0x1b,0xea,0x1b,0x4e,0x09,0xea,0x12,0x2b,0xe5,0x71,0x50,
+ 0x79,0x84,0x0e,0x5e,0x95,0xa5,0x3e,0x84,0x69,0x2a,0xf7,0xcf,0x44,0xbc,0x33,0xfb,
+ 0x4e,0x3a,0x4f,0xf3,0xba,0x69,0x12,0xe5,0xbc,0xfa,0x31,0xc2,0x4a,0x6e,0x70,0xb0,
+ 0x7a,0x9e,0xfb,0x15,0x9f,0x08,0x8e,0x85,0x27,0x9a,0x46,0x7d,0x2b,0xe7,0xec,0x8d,
+ 0x92,0x07,0x00,0x3f,0x4a,0x6a,0xc5,0x45,0xf3,0x7f,0x72,0xf4,0xb4,0xb1,0xf2,0x5d,
+ 0xe0,0xe0,0xf9,0xc8,0x02,0x93,0xe4,0xeb,0xab,0x09,0x4f,0xcb,0x78,0x82,0x07,0xa4,
+ 0x94,0xff,0x00,0xf6,0xa8,0xda,0xa1,0x35,0xfd,0xd2,0x4f,0xfb,0x6b,0xc9,0x70,0x9a,
+ 0x07,0x3d,0xca,0x39,0x7f,0x28,0xa7,0xb8,0x51,0x73,0x26,0xee,0x16,0x9b,0x64,0x10,
+ 0xe5,0xee,0x02,0x47,0x8f,0xf6,0x81,0xff,0x00,0xda,0x6d,0xcf,0xdc,0xed,0x1a,0xa5,
+ 0x80,0xe6,0xa0,0x82,0x02,0x7f,0x75,0x2e,0xe6,0xaa,0xc3,0x30,0x92,0xe8,0x77,0x87,
+ 0xba,0x6f,0xbb,0x47,0x1f,0xce,0x40,0xe2,0xe6,0x06,0x07,0x99,0xe7,0xf9,0x1a,0xf7,
+ 0xb4,0xbf,0x1a,0x04,0xf4,0xbd,0x32,0x02,0x2e,0x4c,0x00,0x41,0x8e,0xb5,0xa9,0x00,
+ 0x9f,0x03,0x94,0xf3,0xe5,0x49,0x95,0x45,0x96,0x67,0x7b,0xf4,0x55,0xac,0xb9,0xc3,
+ 0x32,0x24,0xd2,0xac,0x60,0xa9,0x95,0xb9,0xc3,0xec,0x07,0x2f,0xc7,0x35,0xc7,0x73,
+ 0xed,0x1f,0xa6,0x9f,0x8e,0xa6,0x12,0x94,0x94,0x1f,0x06,0x2d,0x49,0x42,0xbe,0x8b,
+ 0xe0,0x07,0xf3,0xa8,0x16,0x05,0xfe,0x1d,0xbe,0xe1,0x36,0x48,0xd3,0xd6,0xf9,0x2c,
+ 0xbe,0x41,0x6e,0x3c,0x9e,0x35,0xa1,0x8c,0x67,0x92,0x79,0xe4,0xf5,0xf1,0xf2,0xae,
+ 0x58,0x17,0x75,0x5b,0x98,0x98,0xd2,0x21,0xc3,0x73,0xed,0x23,0x05,0x6f,0x34,0x16,
+ 0xa6,0xc7,0xf2,0x13,0xf7,0x69,0x6f,0xe0,0x52,0x25,0xd9,0x9b,0xfb,0x64,0x57,0x10,
+ 0x6a,0xdd,0x39,0xe3,0xfe,0x54,0x27,0xf5,0x55,0x23,0x48,0xde,0xe5,0x38,0x4f,0xd9,
+ 0xac,0xc4,0x8f,0xf1,0xdf,0x03,0xf4,0x06,0x9b,0x36,0xd6,0xf5,0x36,0xa2,0xb3,0x47,
+ 0xb5,0xb3,0x66,0x99,0x3a,0xd4,0xd2,0xd2,0x95,0x18,0x16,0xe2,0xb7,0x3a,0xe7,0x1c,
+ 0x69,0x49,0x39,0xf7,0xa7,0x23,0x1d,0x9c,0x37,0x2e,0xf2,0xf8,0xfd,0x8d,0xb6,0xba,
+ 0xc1,0x4c,0x72,0x41,0xfb,0x5d,0xb1,0xd4,0x9e,0x23,0xea,0x50,0x90,0x07,0xff,0x00,
+ 0xb3,0x45,0xfa,0x15,0xe0,0x9d,0x3b,0x77,0x6f,0x0a,0x51,0x42,0x2d,0xd0,0xe3,0x2b,
+ 0xc7,0x8c,0xad,0x64,0x7f,0xc6,0x92,0x9f,0xdc,0x4d,0x41,0x27,0xac,0xa8,0xec,0x7f,
+ 0xa1,0x1c,0x0f,0xf9,0x15,0x54,0xb3,0x66,0xec,0x25,0xbe,0xd7,0xe7,0x12,0xb5,0x68,
+ 0x59,0x11,0x92,0xb5,0xf0,0x97,0x27,0x4d,0x8e,0xde,0x3d,0x48,0x2e,0x71,0x63,0xe8,
+ 0x6a,0x43,0xb1,0x7c,0x2f,0xf7,0x6e,0xe8,0xd2,0x1c,0x9f,0x37,0x4e,0xd9,0xc1,0x23,
+ 0x2d,0xbb,0x2d,0xc7,0x56,0x91,0xe3,0xf7,0x5b,0xc6,0x7d,0x33,0xf5,0xa9,0xb8,0x2e,
+ 0x58,0xd4,0x59,0x53,0x65,0x6a,0x1b,0xc4,0xac,0xf7,0xb7,0x69,0x58,0xff,0x00,0x0d,
+ 0x61,0xbf,0xf8,0x01,0x49,0x52,0x0a,0xe5,0x1c,0x3e,0xf3,0xd2,0x3f,0xd6,0x75,0x4b,
+ 0xfd,0x49,0xad,0x12,0xd3,0xff,0x00,0x09,0x77,0x16,0x84,0x1b,0xf6,0xe1,0xe0,0x92,
+ 0x0a,0xdb,0xb6,0xdb,0xf1,0x81,0xe2,0x02,0x96,0xa3,0x9f,0x7c,0x54,0xa7,0xa5,0xfe,
+ 0x17,0x7b,0x49,0x66,0x09,0x55,0xd2,0x4d,0xf2,0xfe,0xe0,0xe6,0x7b,0xf9,0x9d,0xca,
+ 0x49,0xf6,0x6c,0x0e,0x55,0x2f,0x52,0x0b,0x82,0xb0,0x66,0x4a,0x70,0x36,0xdf,0x2c,
+ 0x25,0x23,0xa7,0x95,0x38,0x74,0xbe,0xdb,0xea,0xbd,0x6f,0x25,0x2c,0x69,0xfd,0x35,
+ 0x74,0xbc,0x3a,0xa3,0x84,0x88,0x71,0x16,0xbc,0x9f,0x70,0x31,0x5b,0x61,0xa4,0xbb,
+ 0x26,0x6d,0x0e,0x89,0x71,0xa7,0x6d,0x5a,0x06,0xcc,0x87,0xdb,0xe6,0x97,0xdf,0x60,
+ 0x3c,0xbc,0xf9,0x92,0xbc,0xd4,0xa7,0x06,0xdb,0x12,0xd6,0xc7,0x73,0x0a,0x2b,0x31,
+ 0x19,0xfe,0xed,0x86,0xc2,0x13,0xf8,0x01,0x52,0xf5,0xbc,0x45,0x2d,0x3f,0x59,0x8f,
+ 0x9b,0x73,0xf0,0xda,0xde,0x2d,0x7e,0x94,0x48,0xb8,0xc1,0x87,0xa3,0xe1,0xab,0x18,
+ 0x37,0x97,0x48,0x77,0x1f,0xe9,0xa0,0x29,0x40,0xfb,0x81,0x56,0xa7,0x68,0xfe,0x15,
+ 0x3a,0x13,0x4b,0x38,0xd4,0xdd,0x71,0x78,0x99,0xab,0xe6,0xa0,0x85,0x08,0x91,0xc9,
+ 0x87,0x10,0x7a,0x1e,0x13,0xde,0x2b,0xdf,0x89,0x3e,0xd5,0x78,0xe8,0xac,0x9e,0xa4,
+ 0x99,0x6a,0x09,0x08,0x9a,0x47,0x44,0xe9,0xfd,0x03,0x67,0x6a,0xd5,0xa6,0xec,0xb0,
+ 0x6c,0x76,0xe6,0xc7,0xcb,0x1a,0x03,0x09,0x69,0x1e,0xe4,0x24,0x73,0x3e,0xa7,0x9d,
+ 0x2d,0xd1,0x45,0x66,0x58,0x51,0x45,0x14,0x00,0x51,0x45,0x14,0x00,0x51,0x45,0x14,
+ 0x00,0x56,0x4f,0xf6,0xd5,0xec,0xeb,0xaf,0xb6,0xd3,0x57,0xea,0x7d,0x4c,0xd2,0x15,
+ 0x77,0xd0,0xf7,0x99,0x8f,0xc9,0x12,0x98,0x1c,0x46,0x27,0x7c,0xa2,0xa2,0xdb,0xc3,
+ 0x19,0x00,0x15,0x10,0x15,0xd0,0xfe,0x55,0xac,0x15,0xcd,0x71,0xb7,0x45,0xbb,0xc1,
+ 0x7e,0x14,0xd8,0xed,0x4b,0x88,0xfa,0x0b,0x6e,0xb0,0xf2,0x02,0x90,0xb4,0x9e,0xa0,
+ 0x83,0xc8,0x8a,0x69,0xd1,0x2d,0x59,0x83,0xfb,0x7b,0x7f,0x46,0x95,0xb7,0x2e,0x23,
+ 0xe8,0x6f,0x84,0xba,0xa3,0xc0,0xac,0x12,0x72,0x07,0x3c,0x53,0xe0,0xdd,0x2c,0xb2,
+ 0x59,0x43,0xaf,0x42,0x85,0x21,0x2a,0xe6,0x4f,0x74,0x9c,0x8e,0x59,0xc1,0xe5,0xd7,
+ 0xad,0x5c,0x9e,0xd1,0x7f,0x0d,0x6b,0x56,0xa6,0x6a,0x75,0xe3,0x6c,0xe4,0x22,0xcd,
+ 0x71,0x70,0x97,0x15,0x63,0x94,0xaf,0xec,0x6e,0x9f,0x10,0xda,0xba,0xb6,0x7f,0x11,
+ 0xed,0x59,0xe7,0xb8,0x3a,0x23,0x59,0xed,0x05,0xe9,0xcb,0x15,0xde,0xcf,0x2e,0xd3,
+ 0x73,0x8e,0x38,0x97,0x12,0x6a,0x72,0x1c,0x18,0xe6,0xa6,0xd6,0x39,0x29,0x27,0x00,
+ 0xe4,0x12,0x3a,0xd6,0xb9,0x78,0x65,0x85,0xbd,0xc7,0x55,0xcd,0x16,0x37,0x50,0x54,
+ 0xdd,0xba,0x33,0x5c,0xce,0x0a,0x46,0x29,0x8b,0xaa,0xef,0x56,0xbb,0x0c,0x17,0x1c,
+ 0x10,0xdb,0x53,0xbd,0x10,0x90,0x4f,0x33,0xf8,0xd3,0x73,0xfa,0x7c,0xb4,0xa9,0x09,
+ 0x9c,0xc2,0xd8,0x56,0x70,0x49,0x1c,0x89,0xf4,0x22,0x91,0xf5,0x5b,0x12,0x75,0x0b,
+ 0x46,0x6b,0x2e,0xb0,0x22,0x36,0x33,0xfd,0x63,0xc1,0x27,0x1e,0x60,0x78,0xd2,0x53,
+ 0xbe,0x19,0x52,0xd2,0x94,0x3f,0xb2,0x17,0x74,0x74,0x88,0x97,0x16,0x1c,0x76,0xf5,
+ 0x71,0x54,0x75,0xac,0x15,0x21,0x09,0x01,0x28,0x6c,0x7b,0xe3,0x34,0xc0,0xd5,0x5a,
+ 0xd5,0xe8,0x17,0x75,0x33,0x6d,0x9a,0xf4,0x98,0xe9,0x56,0x12,0xa5,0x21,0x23,0x8c,
+ 0x67,0xc0,0x63,0x3c,0xeb,0xc3,0x58,0x4e,0x0c,0xd9,0x22,0x77,0x04,0x84,0xb8,0x03,
+ 0x79,0x1d,0x30,0x2b,0xc7,0x4c,0x14,0xaa,0x0f,0xda,0xcb,0x48,0x32,0x16,0x4b,0x69,
+ 0x59,0x4f,0x34,0x24,0x63,0x24,0x7a,0x9c,0xe3,0x3e,0x94,0xa5,0x27,0xc2,0x2a,0x31,
+ 0x4f,0x73,0x58,0xfb,0x1c,0x5d,0xbb,0x29,0xf6,0x83,0xb5,0xc4,0xb3,0x44,0xd0,0xb0,
+ 0xed,0x3a,0xd9,0x2c,0x20,0xc9,0xb4,0xdf,0x54,0xea,0xdd,0x7d,0x69,0x4f,0xce,0xb6,
+ 0x14,0xb5,0x90,0xb1,0xc8,0x9c,0x27,0x04,0x78,0x8a,0xb6,0x96,0xee,0xca,0x3b,0x3b,
+ 0x6a,0x5a,0xd4,0xc6,0xdb,0x69,0xc5,0x95,0x8c,0x11,0x22,0x02,0x1e,0x1f,0x40,0xb0,
+ 0x40,0xfa,0x56,0x1e,0x6d,0x3e,0xb3,0xb9,0xed,0x3e,0xe0,0xe9,0x9d,0x55,0x09,0xb7,
+ 0x13,0x3a,0xd7,0x31,0xb9,0x8d,0x26,0x40,0xe4,0xb0,0x0f,0x3e,0xbe,0x0a,0x49,0x52,
+ 0x7e,0xb5,0xfa,0x18,0x42,0xb8,0xd0,0x95,0x74,0xc8,0xcd,0x4d,0xbf,0x4a,0xa4,0x30,
+ 0xad,0xfd,0x9f,0x76,0xc2,0xd4,0xea,0x9d,0x87,0xb7,0x7a,0x56,0x3b,0x8a,0x1c,0x25,
+ 0x4d,0xd9,0xa3,0x82,0x47,0x97,0xdc,0xa7,0x0c,0x0d,0x05,0xa6,0x2d,0x51,0xc4,0x78,
+ 0x5a,0x72,0xd3,0x0d,0x80,0x4a,0x83,0x4c,0x41,0x69,0x09,0x04,0xf5,0x38,0x09,0xc5,
+ 0x2f,0x51,0x4a,0xc6,0x7c,0xa1,0xb4,0x34,0x90,0x94,0x24,0x21,0x20,0x60,0x04,0x8c,
+ 0x01,0x5f,0x54,0x51,0x48,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,
+ 0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,
+ 0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x9a,0xbb,0x8d,0xb5,0xba,0x57,
+ 0x76,0xb4,0xfb,0x96,0x6d,0x59,0x64,0x8b,0x79,0x82,0xa0,0x78,0x43,0xe8,0xf9,0xda,
+ 0x51,0x18,0xe2,0x6d,0x63,0xe6,0x42,0xbd,0x52,0x45,0x3a,0xa8,0xa0,0x0c,0xbf,0xed,
+ 0x0d,0xf0,0xca,0xbd,0xe9,0x61,0x2a,0xef,0xb7,0x4f,0x2f,0x52,0xd9,0xf9,0xad,0x56,
+ 0x99,0x18,0x13,0x19,0x1e,0x49,0x3d,0x1d,0xfc,0x8f,0xa1,0xaa,0x3d,0xaa,0xb4,0xd4,
+ 0xbb,0x0b,0x13,0x2d,0xb3,0x60,0x3b,0x0a,0x4b,0x20,0xb6,0xb8,0xef,0x34,0x5b,0x71,
+ 0x18,0xe5,0x8c,0x1f,0x2a,0xfd,0x10,0xd4,0x7d,0xb9,0x7b,0x05,0xa0,0x37,0x79,0xa2,
+ 0x35,0x56,0x98,0x83,0x73,0x7b,0x84,0xa5,0x32,0x8b,0x7c,0x0f,0xa7,0x3e,0x4b,0x4e,
+ 0x0d,0x5a,0x95,0x72,0x43,0x8f,0x87,0xe7,0x93,0x54,0x58,0xbe,0xd3,0xa3,0xa3,0xbb,
+ 0x1c,0x97,0x97,0x19,0x5c,0x4b,0x09,0x1d,0x12,0x7a,0xfe,0x1c,0xa9,0x17,0x4a,0x4b,
+ 0x47,0xd8,0x8b,0x7c,0x40,0x38,0xda,0x8e,0x53,0x9e,0x7c,0x27,0x9e,0x47,0xd6,0xb6,
+ 0x3f,0x5b,0x7c,0x27,0x36,0xce,0x7f,0xda,0xa5,0xd8,0xb5,0x1e,0xa2,0xd3,0x8a,0x21,
+ 0x4a,0x0c,0xb4,0xea,0x1f,0x6f,0xd8,0x85,0xa7,0x24,0x7d,0x6a,0x06,0xec,0xd9,0xf0,
+ 0xea,0xd2,0xba,0x87,0x7b,0xae,0x0a,0xbf,0xde,0xd5,0x73,0xb6,0x69,0xa9,0x8d,0xa9,
+ 0x56,0xf4,0x40,0x0d,0x26,0x69,0x1f,0x36,0x16,0x7b,0xc5,0x61,0x27,0x1c,0xc0,0x1c,
+ 0xfc,0xe8,0x74,0xf7,0x43,0x8d,0xad,0x99,0x07,0xf6,0x3c,0xec,0xfd,0xa9,0x7b,0x47,
+ 0xee,0x15,0x9e,0xdc,0x96,0x26,0x23,0x46,0xc0,0x90,0x89,0x57,0x49,0xef,0xa5,0x45,
+ 0x80,0xda,0x54,0x09,0x6d,0x24,0xf2,0x2b,0x5e,0x38,0x40,0x1e,0x79,0x3d,0x2b,0x73,
+ 0xc0,0x09,0x00,0x0e,0x40,0x57,0x15,0x96,0xc5,0x6d,0xd3,0x76,0xe6,0xa0,0x5a,0x60,
+ 0x46,0xb6,0x41,0x6b,0x92,0x23,0x44,0x65,0x2d,0x36,0x9f,0x64,0xa4,0x01,0x5d,0xd5,
+ 0x05,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,
+ 0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x1f,0xff,0xd9};
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/thumb_test.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/thumb_test.h
new file mode 100644
index 000000000..0b43b0074
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickC/thumb_test.h
@@ -0,0 +1,1286 @@
+//
+// thumb_test
+//
+const uint8_t thumb_test[] PROGMEM = { 0xff,0xd8,0xff,0xe1,0x1e,0x28,0x45,0x78,0x69,0x66,0x00,0x00,0x4d,0x4d,0x00,0x2a,
+ 0x00,0x00,0x00,0x08,0x00,0x0d,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x0f,0xc0,
+ 0x00,0x00,0x01,0x01,0x00,0x03,0x00,0x00,0x00,0x01,0x0b,0xd0,0x00,0x00,0x01,0x0f,
+ 0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xaa,0x01,0x10,0x00,0x02,0x00,0x00,
+ 0x00,0x0a,0x00,0x00,0x00,0xb2,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x06,
+ 0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xbc,0x01,0x1b,
+ 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xc4,0x01,0x28,0x00,0x03,0x00,0x00,
+ 0x00,0x01,0x00,0x02,0x00,0x00,0x01,0x31,0x00,0x02,0x00,0x00,0x00,0x0f,0x00,0x00,
+ 0x00,0xcc,0x01,0x32,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xdc,0x02,0x13,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x87,0x69,0x00,0x04,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x00,0xf0,0x88,0x25,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x03,0x20,0x00,0x00,0x03,0x26,0x73,0x61,0x6d,0x73,0x75,0x6e,0x67,0x00,0x53,0x4d,
+ 0x2d,0x47,0x39,0x36,0x35,0x55,0x31,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,
+ 0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x47,0x39,0x36,0x35,0x55,0x31,0x55,0x45,
+ 0x53,0x37,0x44,0x54,0x45,0x31,0x00,0x00,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a,
+ 0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x1f,0x82,0x9a,
+ 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x6a,0x82,0x9d,0x00,0x05,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x02,0x72,0x88,0x22,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x02,
+ 0x00,0x00,0x88,0x27,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0xfa,0x00,0x00,0x90,0x00,
+ 0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x32,0x32,0x30,0x90,0x03,0x00,0x02,0x00,0x00,
+ 0x00,0x14,0x00,0x00,0x02,0x7a,0x90,0x04,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00,
+ 0x02,0x8e,0x91,0x01,0x00,0x07,0x00,0x00,0x00,0x04,0x01,0x02,0x03,0x00,0x92,0x01,
+ 0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xa2,0x92,0x02,0x00,0x05,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x02,0xaa,0x92,0x03,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x02,0xb2,0x92,0x04,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xba,0x92,0x05,
+ 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xc2,0x92,0x07,0x00,0x03,0x00,0x00,
+ 0x00,0x01,0x00,0x02,0x00,0x00,0x92,0x09,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0x92,0x0a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xca,0x92,0x90,
+ 0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,0x02,0xd2,0x92,0x91,0x00,0x02,0x00,0x00,
+ 0x00,0x07,0x00,0x00,0x02,0xda,0x92,0x92,0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,
+ 0x02,0xe2,0xa0,0x00,0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0xa0,0x01,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa0,0x02,0x00,0x04,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x0f,0xc0,0xa0,0x03,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x0b,0xd0,0xa0,0x05,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x02,0xa2,0x17,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa3,0x01,0x00,0x01,0x00,0x00,
+ 0x00,0x01,0x01,0x00,0x00,0x00,0xa4,0x02,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0xa4,0x03,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x05,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x1a,0x00,0x00,0xa4,0x06,0x00,0x03,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x20,0x00,0x02,0x00,0x00,0x00,0x18,0x00,0x00,
+ 0x02,0xea,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3c,0x00,0x00,
+ 0x00,0xf0,0x00,0x00,0x00,0x64,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a,0x30,0x39,
+ 0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x32,0x30,0x32,0x30,0x3a,0x30,
+ 0x38,0x3a,0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x00,
+ 0x17,0x12,0x00,0x00,0x03,0xe8,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x64,0x00,0x00,
+ 0x00,0xa6,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,
+ 0x00,0x74,0x00,0x00,0x00,0x64,0x00,0x00,0x10,0xcc,0x00,0x00,0x03,0xe8,0x38,0x37,
+ 0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37,0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37,
+ 0x35,0x37,0x31,0x39,0x00,0x00,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56,
+ 0x4d,0x20,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31,0x56,0x41,0x00,0x00,0x02,
+ 0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x04,0x52,0x39,0x38,0x00,0x00,0x02,0x00,0x07,
+ 0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x09,0x01,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x40,
+ 0x01,0x01,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x03,
+ 0x00,0x00,0x00,0x01,0x00,0x06,0x00,0x00,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01,
+ 0x00,0x06,0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x98,
+ 0x01,0x1b,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0xa0,0x01,0x28,0x00,0x03,
+ 0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x02,0x01,0x00,0x04,0x00,0x00,0x00,0x01,
+ 0x00,0x00,0x03,0xa8,0x02,0x02,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x1a,0x78,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x48,
+ 0x00,0x00,0x00,0x01,0xff,0xd8,0xff,0xdb,0x00,0x84,0x00,0x17,0x10,0x11,0x14,0x11,
+ 0x0e,0x17,0x14,0x13,0x14,0x1a,0x18,0x17,0x1b,0x22,0x39,0x25,0x22,0x1f,0x1f,0x22,
+ 0x46,0x32,0x35,0x29,0x39,0x53,0x49,0x57,0x56,0x51,0x49,0x50,0x4f,0x5b,0x67,0x83,
+ 0x6f,0x5b,0x61,0x7c,0x63,0x4f,0x50,0x72,0x9c,0x74,0x7c,0x88,0x8c,0x93,0x95,0x93,
+ 0x59,0x6e,0xa1,0xad,0xa0,0x8f,0xab,0x83,0x90,0x93,0x8d,0x01,0x18,0x1a,0x1a,0x22,
+ 0x1e,0x22,0x43,0x25,0x25,0x43,0x8d,0x5e,0x50,0x5e,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0xff,0xc0,0x00,0x11,
+ 0x08,0x00,0xf0,0x01,0x40,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff,
+ 0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,
+ 0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01,
+ 0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,
+ 0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,
+ 0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,
+ 0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,
+ 0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,
+ 0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,
+ 0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,
+ 0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,
+ 0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,
+ 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,
+ 0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,
+ 0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02,
+ 0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,
+ 0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,
+ 0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,
+ 0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,
+ 0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,
+ 0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,
+ 0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,
+ 0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,
+ 0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,
+ 0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,
+ 0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,
+ 0x00,0xe4,0xe8,0xa0,0x0c,0xf4,0xa9,0xa3,0x87,0x72,0x96,0x3d,0xa8,0x02,0x20,0x09,
+ 0x35,0x32,0x42,0x4f,0xde,0x38,0xa7,0x46,0xb8,0xed,0x53,0xaa,0xd2,0x00,0x8e,0x35,
+ 0x5e,0x82,0xa6,0x51,0x48,0xab,0x52,0xaa,0xd0,0x00,0xa2,0xa3,0x9d,0x70,0x41,0x20,
+ 0x91,0x8e,0x82,0xac,0x2a,0xd2,0xc9,0x19,0x29,0xf2,0xfd,0xe1,0xc8,0xa1,0x3b,0x31,
+ 0x34,0x67,0x32,0x81,0x27,0x00,0x81,0x8e,0x86,0x96,0x9f,0x26,0xe2,0xe4,0xc9,0x9d,
+ 0xc7,0xae,0x69,0x95,0xd7,0x15,0x64,0x73,0xb7,0x76,0x32,0x53,0x85,0x3e,0xf5,0x00,
+ 0x5f,0x5a,0x7c,0xc4,0xee,0xc5,0x47,0x5c,0xf3,0x77,0x67,0x44,0x55,0x90,0xed,0xc0,
+ 0x74,0xa4,0x27,0x34,0x94,0x54,0x0c,0x28,0xa2,0x8a,0x00,0x2a,0x68,0x46,0xd1,0xb8,
+ 0xd4,0x20,0x64,0xe2,0xae,0x42,0x22,0xda,0x44,0x85,0x87,0xa6,0x06,0x6a,0x92,0x6f,
+ 0x61,0x37,0x61,0x73,0x91,0xc7,0x35,0x13,0xf5,0xdc,0xc3,0x1f,0xad,0x5a,0xf2,0xa3,
+ 0xc0,0x11,0xce,0xbc,0x76,0x3c,0x7f,0x3e,0x29,0xaf,0x6d,0x29,0x19,0x1c,0x81,0xdc,
+ 0x00,0x47,0xe9,0x51,0x66,0xb7,0x1d,0xd3,0x21,0x8c,0x82,0x38,0x39,0xc7,0xbe,0x6a,
+ 0xb4,0xed,0xba,0x53,0xe8,0x38,0xab,0x25,0x7c,0x88,0xd8,0x9e,0xbd,0x6a,0x90,0xe4,
+ 0xd3,0x40,0x4b,0x08,0xe6,0xad,0x2d,0x41,0x18,0xc0,0xa9,0x94,0xd0,0xc0,0x94,0x1a,
+ 0x5c,0xd3,0x01,0xa3,0x34,0x80,0x76,0x68,0xcd,0x37,0x34,0x99,0xa0,0x07,0xe6,0x93,
+ 0x34,0xdc,0xd2,0x66,0x80,0x1d,0x9a,0x4c,0xd2,0x66,0x93,0x34,0x00,0xec,0xd2,0x66,
+ 0x9b,0x9a,0x33,0x40,0xc5,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xec,0xd2,0x66,0x9b,
+ 0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xc5,0x50,0x3a,0x54,0xe3,
+ 0xe5,0xb7,0x3e,0xe6,0xa3,0x41,0x52,0xb8,0xc4,0x6a,0x29,0x88,0x48,0xd7,0x8a,0x99,
+ 0x45,0x35,0x05,0x4a,0xa2,0x81,0x8e,0x51,0x52,0xa8,0xa6,0xad,0x48,0xb4,0x80,0x7a,
+ 0x8a,0x76,0x29,0x05,0x2d,0x02,0x22,0x92,0x14,0x72,0x0b,0x0e,0x47,0x43,0x50,0x3c,
+ 0xa1,0x3e,0x59,0x6d,0x91,0xc0,0xee,0x38,0x3f,0xa5,0x5b,0x34,0xc2,0xa1,0xba,0x8c,
+ 0xd3,0x4d,0xa1,0x35,0x72,0x91,0x6b,0x57,0xed,0x2c,0x7f,0x5e,0x45,0x30,0xdb,0x46,
+ 0xfc,0xa4,0x88,0x7e,0xbc,0x55,0xa7,0x81,0x0f,0x6c,0x54,0x1e,0x57,0x96,0x18,0x2e,
+ 0x30,0xdd,0x73,0x4e,0xe1,0xa9,0x03,0x59,0xb8,0xe4,0x29,0x23,0xd5,0x79,0xa8,0x8c,
+ 0x24,0x77,0xfc,0xea,0x42,0x25,0x43,0x90,0xd9,0xa3,0xed,0x33,0x0e,0x1f,0xe6,0xfa,
+ 0xd0,0x17,0x64,0x25,0x18,0x76,0xa6,0xd4,0xfe,0x7a,0x1f,0xbd,0x1e,0x3e,0x94,0x6e,
+ 0x8d,0xba,0x31,0x1f,0x5a,0x02,0xe4,0x51,0x8f,0x9b,0x35,0x2e,0x68,0xda,0x07,0x42,
+ 0x0d,0x37,0x70,0x3d,0x0d,0x6b,0x0d,0x11,0x9c,0xb5,0x1d,0x9a,0x37,0x32,0xe0,0xf2,
+ 0x3d,0xe8,0x52,0x37,0x0c,0xf4,0xa5,0x76,0xf9,0x58,0x33,0x03,0x9e,0x94,0xe5,0x2b,
+ 0x3b,0x02,0x88,0xdb,0x89,0x9d,0xe3,0x08,0xce,0xcc,0x09,0xee,0x73,0x55,0xd4,0x64,
+ 0xd2,0xb9,0xc9,0xfa,0x52,0xa0,0xac,0xa4,0xf5,0x2d,0x6c,0x4c,0xb5,0x20,0xa8,0xd6,
+ 0x9d,0x50,0x50,0xfc,0xd1,0x9a,0x6d,0x2d,0x00,0x2e,0x68,0xcd,0x25,0x14,0x00,0x66,
+ 0x8c,0xd1,0x82,0x7a,0x0a,0x70,0x8d,0xcf,0x45,0x34,0x00,0xcc,0xd1,0x52,0x8b,0x79,
+ 0x0f,0x6a,0x78,0xb2,0x90,0xf6,0xfd,0x28,0x02,0xb5,0x15,0x75,0x74,0xf6,0x3d,0x73,
+ 0x52,0x2e,0x9e,0x3b,0x91,0x40,0x19,0xb4,0x60,0x9e,0x80,0xd6,0xb2,0xd9,0x46,0x3a,
+ 0xfe,0x94,0xf1,0x6f,0x1a,0xf6,0xfc,0x69,0x85,0xcc,0x81,0x1b,0x9f,0xe1,0x34,0xe1,
+ 0x03,0x9e,0xd5,0xad,0xe5,0xa0,0xfe,0x11,0x4a,0x00,0xec,0x00,0xa0,0x2e,0x65,0x0b,
+ 0x49,0x0f,0x6a,0x91,0x2c,0x58,0xf5,0xfe,0x75,0xa2,0x69,0xa7,0x27,0xa9,0x3f,0x4a,
+ 0x02,0xe6,0x30,0x38,0x35,0x2c,0x87,0xe6,0x0b,0xe8,0x2a,0x1c,0xa9,0x20,0xd2,0x97,
+ 0x05,0xc9,0xcf,0x5a,0x00,0xb0,0xb5,0x2a,0xd5,0x55,0x71,0xeb,0x52,0x2c,0x9e,0xf4,
+ 0x01,0x65,0x6a,0x45,0x35,0x59,0x64,0xa9,0x16,0x5a,0x40,0x59,0x06,0x97,0x35,0x5c,
+ 0x4a,0x29,0x7c,0xd1,0xeb,0x40,0x12,0x93,0x40,0xa8,0x7c,0xd0,0x6a,0x45,0x39,0x5a,
+ 0x00,0x47,0x3c,0x54,0x0d,0x52,0x48,0xd5,0x0b,0x1a,0x00,0x6b,0x54,0x4c,0x33,0x4f,
+ 0x26,0x9a,0x68,0x02,0x26,0x8c,0x1e,0xd4,0xcd,0x85,0x4e,0x54,0xd4,0xd4,0x6c,0x27,
+ 0xa0,0x26,0x98,0x15,0x4a,0xb0,0x39,0x14,0xd2,0x08,0xab,0xc2,0xda,0x46,0xe8,0x86,
+ 0xa4,0x5d,0x36,0x66,0xfe,0x1c,0x0a,0x00,0xcd,0x0c,0xc3,0xbd,0x1b,0xc9,0xad,0x65,
+ 0xd1,0xd8,0xfd,0xe6,0xa9,0x57,0x47,0x84,0x7d,0xe3,0x9f,0xc6,0x9d,0xc4,0x61,0xf7,
+ 0xa9,0x91,0x4e,0x38,0x15,0xba,0x9a,0x75,0xb2,0x7f,0x08,0xfa,0xe2,0xa6,0x5b,0x78,
+ 0x97,0x8d,0x9d,0x29,0x01,0x84,0xb1,0x39,0xe8,0xa6,0xa5,0x5b,0x59,0x5b,0xf8,0x6b,
+ 0x68,0x22,0x8e,0x40,0x1f,0x5c,0x53,0xbe,0x9d,0x7d,0xe8,0x03,0x21,0x6c,0x25,0x35,
+ 0x2a,0xe9,0xad,0xfc,0x47,0x15,0xa4,0x08,0x6e,0x0f,0x06,0x9b,0x9c,0x70,0x68,0x02,
+ 0xa2,0xe9,0xc8,0x3a,0x9a,0x91,0x6c,0xa2,0x1f,0x5a,0xb0,0x0f,0xaf,0xe6,0x28,0x34,
+ 0x01,0x18,0x82,0x31,0xfc,0x34,0xed,0x88,0x3f,0x84,0x52,0xe6,0x9a,0xc7,0x8e,0x28,
+ 0x10,0xa4,0xe3,0x8e,0x28,0x07,0xeb,0xf4,0xa8,0x3c,0xd0,0x4e,0x2a,0x45,0xe4,0x71,
+ 0x40,0xc7,0x73,0xcf,0xa7,0xa5,0x07,0xa6,0x7a,0x8f,0x5a,0x06,0x09,0xc6,0xfc,0x1f,
+ 0x7a,0x4c,0x95,0x3d,0x28,0x00,0x3e,0xa4,0x63,0xde,0x93,0xa0,0xe3,0xf5,0xa3,0x9e,
+ 0xdc,0x7b,0x50,0x06,0x3a,0x1e,0x68,0x00,0xce,0x3a,0x7c,0xa7,0xd0,0xd2,0x12,0x0f,
+ 0x4a,0x31,0xea,0x29,0x0f,0xb7,0x5a,0x00,0x4c,0x60,0xf3,0x4b,0xd4,0x62,0x8f,0xaf,
+ 0x22,0x93,0xe9,0x92,0x28,0x03,0x9f,0x2d,0x4d,0xcd,0x3c,0xc6,0x47,0x26,0x90,0x29,
+ 0x3d,0xa9,0x8c,0x4c,0xd3,0x83,0x53,0x4f,0x06,0x81,0x40,0x8b,0x2b,0x9c,0x53,0xb2,
+ 0x6a,0x21,0x27,0xb5,0x28,0x93,0x27,0x81,0x48,0x09,0x77,0x1f,0x5a,0x4d,0xc6,0xaf,
+ 0x43,0xa6,0x3b,0xa0,0x67,0x60,0xb9,0xe7,0x15,0x3a,0x69,0x90,0x8f,0xbc,0xc4,0xd0,
+ 0x06,0x6c,0x44,0x96,0xab,0xa0,0xe1,0x6a,0xe2,0x5a,0x40,0x9d,0x13,0xf3,0xa9,0x02,
+ 0x22,0xf0,0x11,0x47,0xe1,0x40,0x19,0x66,0x37,0x73,0xf2,0xa9,0xa5,0x5b,0x19,0x9f,
+ 0xb6,0x2b,0x57,0x24,0x0c,0x8f,0xca,0x94,0x1d,0xe3,0x23,0xa8,0xed,0x45,0x87,0x73,
+ 0x35,0x74,0xc6,0xfe,0x26,0x02,0xa4,0x5d,0x3a,0x25,0xfb,0xc4,0x9a,0xba,0x47,0xff,
+ 0x00,0xaa,0x90,0x9c,0x0e,0x7f,0x03,0x40,0x88,0x16,0xd6,0x05,0xe8,0x99,0xa9,0x04,
+ 0x48,0xbd,0x10,0x52,0x6f,0xf9,0xb0,0x3f,0x2a,0x90,0x7f,0x9f,0x6a,0x00,0x40,0x00,
+ 0xe4,0x74,0xf6,0xe2,0x8e,0x73,0xd6,0x97,0x1d,0xe8,0xc6,0x69,0x80,0xd2,0x71,0x48,
+ 0x0e,0x6a,0xb5,0xc5,0xca,0x47,0x2e,0xc0,0xe3,0x77,0x71,0x9a,0x9e,0x16,0x0c,0x01,
+ 0xe7,0x9e,0x86,0x90,0x0f,0xc7,0x6a,0x5f,0xf2,0x29,0x70,0x7d,0x31,0xf5,0xa3,0x1e,
+ 0xf4,0xc0,0x6e,0x3f,0x0a,0x0f,0xbd,0x2f,0x43,0xc8,0xfc,0x69,0x0e,0x00,0xc9,0x3f,
+ 0x8d,0x00,0x43,0x70,0xe1,0x13,0x73,0x1c,0x7b,0xd4,0x31,0x4f,0xe6,0x1f,0x5a,0xcd,
+ 0xd5,0x99,0xde,0xeb,0x68,0x3b,0x95,0x47,0x18,0xa9,0x74,0x72,0xde,0x63,0x2e,0x38,
+ 0x1c,0xd2,0x03,0x5d,0x41,0xc7,0x50,0x05,0x38,0x0f,0x6f,0xc2,0x98,0x5b,0x61,0xce,
+ 0xc0,0x45,0x28,0x64,0x3d,0x10,0x50,0x02,0x90,0x3b,0x11,0x54,0x35,0x1b,0xcf,0xb3,
+ 0xc5,0x84,0x1f,0x31,0x38,0x19,0xed,0x57,0xb7,0xec,0x3b,0x5a,0x35,0xc7,0xa8,0xaa,
+ 0x57,0xd6,0x8b,0x70,0x41,0x24,0xa1,0x1c,0x02,0x46,0x41,0xfa,0xd3,0x03,0x36,0xd2,
+ 0xe1,0xe4,0xb8,0x0a,0xe7,0x3b,0xab,0x6d,0x71,0xc0,0x3f,0x9d,0x67,0x5a,0xe9,0xc6,
+ 0x29,0x83,0xb9,0x0d,0x83,0xc0,0x4e,0x95,0xa5,0x8e,0x06,0x40,0x3c,0x74,0xa0,0x00,
+ 0xaf,0xa8,0xa0,0x64,0x0c,0x67,0x23,0xde,0x80,0x48,0x1e,0xab,0xef,0x4a,0x46,0x79,
+ 0x1c,0x8f,0xe5,0x48,0x04,0xa4,0x34,0xa7,0x81,0xde,0x93,0xaf,0x7a,0x00,0x4e,0xbd,
+ 0xe8,0xa5,0xc5,0x21,0xa0,0x02,0x93,0xa7,0x3c,0xfd,0x45,0x2f,0xf9,0xff,0x00,0x3e,
+ 0xb4,0x87,0x9a,0x00,0xc3,0x77,0x14,0xdd,0xf8,0x07,0x15,0x16,0xe3,0x49,0x92,0x69,
+ 0x8c,0x52,0x79,0xa2,0x95,0x63,0x77,0xce,0xd5,0x24,0x0e,0xb4,0xe1,0x18,0xc7,0x27,
+ 0x14,0x00,0x8b,0x92,0x70,0x2a,0x78,0x53,0x32,0xa2,0xf5,0x24,0x81,0x4d,0x1c,0x0c,
+ 0x0f,0xce,0xac,0x59,0x2e,0x6f,0x21,0x1f,0xed,0x8a,0x40,0x74,0x2c,0xbc,0x9a,0x4c,
+ 0x7e,0x74,0xa4,0xf3,0x49,0x9a,0x04,0x28,0xc6,0x3d,0xbf,0x95,0x27,0x5f,0xf0,0xa4,
+ 0xef,0xef,0xfc,0xe9,0x0f,0x34,0x00,0xbc,0x8e,0x47,0x4f,0x4a,0x69,0x1c,0xe4,0x64,
+ 0x1f,0x5a,0x5c,0xff,0x00,0x9f,0x5a,0x3a,0x8c,0x8a,0x00,0x50,0x77,0x7a,0x06,0xf4,
+ 0xaa,0x9a,0x85,0xe0,0xb3,0x8b,0x3b,0x77,0x33,0x1c,0x00,0x6a,0xc9,0xe4,0x8a,0xa7,
+ 0xa9,0x5a,0x9b,0x98,0xc6,0xde,0x59,0x4e,0x70,0x69,0x81,0x52,0xc2,0xed,0xae,0x2e,
+ 0x36,0x9e,0x0f,0x5a,0xd9,0x5f,0xbb,0xc6,0x3f,0x3a,0xcd,0xd3,0x2c,0x0d,0xbb,0xb4,
+ 0x92,0xe3,0x71,0x18,0x00,0x76,0x15,0xa1,0x81,0xd8,0xd0,0x03,0x87,0x1e,0x98,0xa8,
+ 0xee,0x49,0x11,0x31,0x8c,0xf3,0x8e,0xd4,0xe0,0x40,0xe3,0x6f,0x3e,0xf4,0xbb,0xc9,
+ 0x04,0x64,0x8f,0x61,0xc5,0x00,0x72,0x9b,0x1f,0x7f,0xab,0x13,0xeb,0xc9,0x35,0xd2,
+ 0xc2,0x36,0x40,0x81,0xfa,0x80,0x01,0x23,0xd6,0x9f,0xe4,0x44,0xcf,0xbb,0x0b,0xbf,
+ 0xd7,0x60,0xcf,0xe7,0x4e,0x23,0x03,0x03,0x8c,0x50,0x03,0x4a,0x81,0xd4,0xb6,0x3d,
+ 0x45,0x18,0x00,0xe0,0xee,0xfc,0x4d,0x03,0x23,0xfc,0x29,0x78,0xc7,0x1c,0xaf,0xa7,
+ 0xa5,0x20,0x10,0x8c,0x75,0x1f,0x91,0xa4,0xe0,0x73,0xc7,0xd7,0x14,0xec,0x52,0x63,
+ 0xd3,0xf2,0xf5,0xa6,0x05,0x79,0x6d,0x23,0x9c,0x8f,0x35,0x50,0x91,0xd3,0xb7,0x1f,
+ 0x51,0x52,0x45,0x02,0xc0,0x81,0x10,0x2a,0x01,0xc8,0x51,0xc8,0x34,0xfe,0xdc,0x74,
+ 0xf4,0x3d,0xa8,0xe8,0x3a,0x64,0x50,0x01,0x9c,0xf6,0xc1,0xa6,0x91,0xea,0x3f,0x11,
+ 0x4f,0xed,0x91,0xcd,0x20,0xa0,0x04,0x04,0xff,0x00,0xbc,0x3f,0x5a,0x00,0xc0,0xca,
+ 0xf2,0x3b,0xad,0x29,0x5f,0x4f,0xd2,0x93,0x9e,0xe0,0x9f,0x71,0xd6,0x90,0x0b,0x9d,
+ 0xc3,0x20,0xe7,0xf9,0x8a,0x6e,0x73,0xf5,0xfe,0x74,0xa5,0x4e,0x72,0x3a,0xfa,0xd1,
+ 0xd7,0x20,0xf0,0xde,0x9e,0xb4,0x00,0x9c,0x73,0xeb,0xde,0x9b,0x8c,0x72,0xbc,0x53,
+ 0x8f,0xbf,0x6a,0x4f,0xf3,0xfe,0x7d,0x28,0x00,0x52,0x09,0xc7,0x46,0xf4,0xa0,0x8c,
+ 0x7e,0x14,0x84,0x03,0xfe,0x71,0x8f,0xf0,0xa0,0x31,0x1c,0x37,0x20,0x77,0xee,0x28,
+ 0x00,0xa4,0x34,0xe2,0x3b,0x8e,0x9f,0xe7,0xf2,0xa6,0xff,0x00,0x4f,0xf3,0xf8,0x50,
+ 0x00,0x69,0x3f,0xad,0x2d,0x21,0x00,0xf0,0x7f,0x2a,0x00,0xc2,0x74,0xd8,0xd8,0xc7,
+ 0xe9,0x4d,0x15,0x79,0xa2,0x57,0x1b,0x76,0xfd,0x08,0xaa,0xf3,0x40,0xd0,0xb0,0x0c,
+ 0x31,0x9a,0x0b,0x68,0x8c,0x12,0x07,0x14,0xaa,0x41,0xeb,0x40,0x14,0xa0,0x0a,0x09,
+ 0x0c,0xf3,0xc5,0x5b,0xd3,0x06,0xeb,0xf8,0xbd,0x89,0x3f,0xa5,0x55,0x15,0x77,0x48,
+ 0x5c,0xde,0x83,0xe8,0xa4,0xd0,0x06,0xcb,0x52,0x70,0x7f,0x1a,0x53,0x49,0xef,0xd8,
+ 0xd0,0x20,0x34,0x75,0xfa,0xd1,0x49,0xd6,0x80,0x0c,0x51,0xdf,0xfc,0xf3,0x40,0x39,
+ 0xe0,0xf5,0xa3,0x93,0xf2,0x9e,0xbd,0x8f,0xad,0x00,0x06,0x80,0x48,0xe9,0x47,0xb1,
+ 0xeb,0x46,0xd6,0x3d,0x06,0x7e,0x94,0x00,0xbd,0xbd,0xe9,0xa7,0xae,0x45,0x4a,0xb1,
+ 0x39,0xf4,0x1f,0x8d,0x3c,0x5b,0xb1,0xff,0x00,0xf5,0x1a,0x60,0x57,0xeb,0xdb,0xea,
+ 0x29,0x4a,0xd5,0x91,0x6a,0xde,0x8d,0xf9,0x52,0xfd,0x9d,0x47,0x52,0x3f,0x16,0x14,
+ 0x01,0x50,0xaf,0xff,0x00,0x58,0xd2,0x83,0xeb,0xd6,0xad,0x08,0xa3,0x1f,0xc4,0xbf,
+ 0x9e,0x69,0xac,0xd6,0xa9,0xf7,0xa5,0x41,0xfa,0x7f,0x3a,0x00,0xaf,0x8a,0x36,0x1c,
+ 0xe4,0x53,0xda,0xfa,0xc5,0x3a,0xcc,0x0f,0xd3,0x15,0x13,0xeb,0x36,0x29,0xd0,0xb3,
+ 0x7e,0x26,0x80,0x1f,0xe5,0xb7,0xf7,0x4f,0xd2,0x97,0xc9,0x3e,0xd5,0x51,0xfc,0x41,
+ 0x6c,0x3e,0xe4,0x39,0xfa,0x8a,0x85,0xfc,0x48,0xdf,0xf2,0xce,0x10,0xb4,0x01,0xa4,
+ 0x20,0x27,0xff,0x00,0xac,0x29,0xe2,0xd9,0x8f,0x66,0xfc,0xab,0x09,0xfc,0x43,0x74,
+ 0xdd,0x36,0xaf,0xd0,0x54,0x0f,0xac,0x5e,0xbf,0x59,0x4f,0xe5,0x40,0x1d,0x2f,0xd9,
+ 0x71,0xd4,0x63,0xea,0x68,0x30,0xa2,0xf2,0xce,0x83,0xea,0x6b,0x93,0x6b,0xdb,0xa7,
+ 0xeb,0x2b,0xff,0x00,0xdf,0x46,0xa2,0x69,0x24,0x27,0x25,0xbf,0x5a,0x2c,0x07,0x5c,
+ 0x65,0xb4,0x4f,0xbd,0x73,0x18,0xf6,0x15,0x13,0x6a,0x1a,0x7a,0x75,0x99,0x8f,0xd1,
+ 0x6b,0x94,0x3b,0x8f,0x7a,0x4e,0x7d,0x69,0xd8,0x0e,0x9d,0xb5,0x9b,0x15,0x38,0x0b,
+ 0x2b,0x7d,0x0f,0xff,0x00,0x5e,0xa5,0x9b,0x6c,0xaa,0x92,0x21,0x38,0x61,0x95,0xfa,
+ 0x1a,0xe4,0xeb,0xa6,0xb4,0x60,0xfa,0x6c,0x04,0xe3,0x84,0x03,0x9f,0x6e,0x29,0x00,
+ 0xe0,0xdd,0x03,0x75,0xec,0x68,0x23,0x14,0x1e,0x9e,0xab,0x49,0x9c,0x7b,0x8f,0xf3,
+ 0xd6,0x90,0x09,0xfe,0x7f,0xcf,0xf8,0x52,0x1f,0xf3,0xfe,0x7f,0xa5,0x38,0x8f,0x4f,
+ 0xf3,0xfe,0x34,0x9d,0x7f,0x1a,0x00,0x68,0xca,0xf2,0xbf,0x95,0x28,0x21,0xba,0x70,
+ 0x47,0x6a,0x29,0xa4,0x67,0xfa,0x63,0xfc,0xfe,0x94,0x00,0xa7,0x8f,0xf3,0x8f,0xff,
+ 0x00,0x55,0x21,0x19,0x1f,0xe7,0xfc,0x8a,0x04,0x9d,0x03,0xfd,0x03,0x0a,0x71,0x18,
+ 0xc7,0xe8,0x45,0x00,0x50,0x69,0x41,0x18,0x55,0x0b,0x50,0xcc,0x73,0xb7,0x3c,0xd4,
+ 0xa1,0x41,0x15,0x0c,0xc9,0xf3,0x50,0x8d,0xa5,0xb0,0xcc,0x52,0x62,0x8c,0x95,0xa7,
+ 0x2b,0x03,0x4c,0xc8,0x69,0xab,0xfa,0x30,0xff,0x00,0x49,0x73,0xe8,0x87,0xf9,0x8a,
+ 0xa4,0xc2,0xb4,0x34,0x65,0xc3,0x4c,0x7f,0xd9,0x02,0x80,0x34,0x8d,0x20,0xeb,0xc7,
+ 0x5f,0xe7,0x4a,0x69,0x0f,0x23,0xe9,0x48,0x41,0xd3,0xe9,0xdc,0x7a,0x50,0x48,0xfc,
+ 0xfb,0xd0,0x0e,0x7a,0x7d,0xee,0xfe,0xf4,0x9d,0xb8,0xe9,0xfc,0xa8,0x00,0xc0,0xe9,
+ 0xfe,0x45,0x1d,0x78,0x34,0x99,0xc7,0x04,0xfd,0x0f,0xa5,0x2f,0xd7,0x83,0x40,0x0b,
+ 0x9e,0xcd,0xf8,0x1f,0x5a,0x64,0xae,0xd1,0xae,0xe1,0xd4,0x7b,0x53,0xb1,0xeb,0xd2,
+ 0xa2,0xb9,0xff,0x00,0x55,0xfd,0x68,0x02,0x84,0x9a,0xed,0xdc,0x6d,0x80,0xc3,0xf2,
+ 0xa8,0x9b,0x5e,0xbc,0x6f,0xe2,0xac,0xf9,0x8e,0xe6,0x53,0xed,0x49,0x4c,0x0b,0xaf,
+ 0xac,0x5e,0x3f,0xf1,0x81,0xf4,0x51,0x51,0x36,0xa1,0x76,0xdf,0xf2,0xd9,0xc7,0xd1,
+ 0xb1,0x55,0xe8,0xa6,0x03,0x9a,0x69,0x9f,0xef,0x48,0xc7,0xea,0x69,0xb9,0x63,0xd5,
+ 0x8d,0x2d,0x2e,0x29,0xd8,0x06,0x6d,0xf7,0xa3,0x6d,0x3f,0x14,0x62,0x9d,0x80,0x66,
+ 0xd1,0x4b,0x8a,0x76,0xda,0x36,0x9f,0x4a,0x2c,0x03,0x71,0x45,0x4a,0xb6,0xf3,0x3f,
+ 0xdc,0x89,0xdb,0xe8,0xa4,0xd3,0x24,0x8d,0xa3,0x72,0x8e,0xa5,0x58,0x75,0x04,0x60,
+ 0x8a,0x00,0x65,0x14,0xb4,0x94,0x08,0x29,0x29,0x69,0x28,0x01,0xa6,0xba,0x3d,0x2d,
+ 0xb3,0xa6,0x47,0xea,0x09,0x1f,0xad,0x73,0xad,0x5b,0xfa,0x2b,0x6e,0xd3,0xd8,0x7a,
+ 0x39,0xfe,0x42,0xa5,0x8c,0xb3,0xdf,0x8c,0x83,0xdc,0x51,0x9f,0x4e,0x94,0x11,0x9f,
+ 0xf1,0x14,0x67,0xd4,0xf3,0xeb,0x52,0x02,0x63,0x00,0xfa,0x7a,0x50,0x46,0x79,0x1f,
+ 0xe7,0xfc,0xfa,0xd2,0xe0,0xf5,0xa4,0xe9,0xfe,0x71,0xff,0x00,0xea,0xa0,0x06,0x9f,
+ 0xf3,0xfe,0x7b,0xd2,0x1f,0xf3,0xfe,0x7b,0xd3,0xb8,0x3c,0x74,0xfd,0x3f,0xfd,0x54,
+ 0x84,0x11,0xfe,0x7f,0xce,0x28,0x01,0xa4,0x7a,0xf7,0xfc,0x7f,0xfd,0x74,0x83,0x29,
+ 0xd3,0x95,0x3d,0xa9,0x79,0x5f,0x71,0xe8,0x7b,0x51,0xdb,0x8e,0x47,0x70,0x68,0x02,
+ 0x90,0x5e,0x7a,0xd4,0x6e,0x39,0xeb,0x52,0x6e,0xc0,0xf7,0xa8,0xf9,0x26,0x9a,0x35,
+ 0x90,0xdd,0xa0,0xd3,0x1e,0x32,0x3a,0x54,0xb8,0xa5,0xc5,0x33,0x32,0xb8,0x6c,0x75,
+ 0xad,0x6d,0x23,0xee,0x4c,0x7e,0x83,0xf9,0xd6,0x73,0x46,0x0d,0x69,0xe9,0x08,0x56,
+ 0xda,0x4f,0x77,0xfe,0x94,0x98,0x8b,0x86,0x90,0xe4,0x1e,0x94,0xa7,0xff,0x00,0xd6,
+ 0x29,0x3b,0x71,0xfa,0xd2,0x01,0x3a,0xf2,0xbd,0x68,0x1c,0xf3,0xdf,0xb8,0xa3,0x83,
+ 0xce,0x71,0x48,0x7a,0xe4,0x70,0x47,0x51,0x40,0x0b,0xc1,0x19,0xed,0x40,0xf4,0x34,
+ 0x03,0x9f,0x99,0x7a,0xf7,0x14,0xa3,0x91,0x91,0xf9,0x50,0x02,0x63,0x15,0x0d,0xd7,
+ 0xfa,0xa3,0x56,0x2a,0xbd,0xdf,0xfa,0xa3,0x40,0x1c,0xdc,0x83,0x05,0x7e,0x9f,0xd6,
+ 0x96,0x89,0xbe,0xfa,0x7f,0xba,0x28,0xaa,0x00,0xa2,0x8a,0x5a,0x60,0x15,0xd1,0xe8,
+ 0x7a,0x15,0xb6,0xa1,0x65,0xe7,0xcc,0xf2,0x86,0xdc,0x57,0x0a,0x40,0x1f,0xca,0xb9,
+ 0xd1,0x5d,0xaf,0x85,0x3f,0xe4,0x12,0x7f,0xeb,0xa9,0xfe,0x42,0x98,0x02,0xf8,0x7f,
+ 0x4a,0x4c,0xe5,0x59,0xf1,0xd7,0xe7,0xff,0x00,0x0a,0x7f,0xf6,0x6e,0x95,0x0e,0x3f,
+ 0xd1,0x13,0xfe,0x04,0xc7,0xfa,0x9a,0x86,0xf5,0xe0,0x5b,0xf9,0x0c,0xe8,0xc5,0x7f,
+ 0xba,0x3b,0xfe,0xb4,0xd7,0xbc,0xb3,0xdc,0x36,0xda,0x97,0x03,0xa1,0x69,0x38,0xed,
+ 0xfe,0x15,0x56,0x15,0xd1,0x75,0x60,0xb1,0x8c,0x02,0xb6,0x76,0xe0,0x1e,0x87,0x68,
+ 0xa1,0xef,0x60,0x83,0x0a,0xa9,0x1a,0x93,0xd3,0x67,0xff,0x00,0x5a,0xa9,0xfd,0xb2,
+ 0xdf,0xaa,0xda,0x40,0x31,0xcf,0x20,0x9f,0xe4,0xb5,0x1c,0xd7,0xb1,0x60,0x79,0x16,
+ 0xab,0xe6,0x64,0xb1,0x65,0x53,0xc1,0xc1,0xc7,0xa5,0x3e,0x51,0x29,0xa3,0x62,0xca,
+ 0x65,0xbb,0x81,0x67,0x08,0x54,0x37,0x4c,0xf7,0xae,0x33,0xc4,0x89,0xb7,0x5b,0xb8,
+ 0xf7,0xc1,0xfd,0x05,0x76,0x1a,0x3a,0xba,0xe9,0xd1,0xab,0xf5,0x1e,0xd5,0xca,0xf8,
+ 0xa9,0x71,0xac,0x31,0xf5,0x45,0x3f,0xa5,0x67,0xd4,0xbb,0xdd,0x18,0x94,0x94,0xa6,
+ 0x8a,0x64,0x89,0x45,0x14,0x50,0x03,0x5b,0xa5,0x6d,0xe8,0x27,0x36,0xf3,0x2f,0xa1,
+ 0x07,0xf4,0xff,0x00,0xeb,0x56,0x2b,0x74,0xad,0x6f,0x0f,0xb7,0xcd,0x3a,0xfa,0x80,
+ 0x7f,0x9f,0xf8,0xd4,0xb1,0x9a,0x4d,0x9c,0xf7,0xcd,0x27,0xeb,0x4a,0x71,0xd0,0x51,
+ 0xc5,0x48,0x00,0x19,0xe4,0x7e,0x54,0xdf,0xf3,0xfe,0x7f,0xc2,0x82,0x49,0xe9,0x41,
+ 0xe7,0xaf,0x5e,0xf4,0x00,0x87,0x9f,0xe9,0x8f,0xf3,0xfa,0x52,0x06,0x20,0xff,0x00,
+ 0x9f,0xf3,0xf8,0x52,0x9e,0x7a,0xff,0x00,0x9f,0xf1,0xa4,0x3e,0xff,0x00,0xe3,0xff,
+ 0x00,0xeb,0xa0,0x03,0x83,0xca,0xfe,0x5f,0xe1,0x4c,0x23,0x1c,0x83,0x83,0xfe,0x7f,
+ 0x2a,0x71,0xe3,0x9f,0xf3,0xff,0x00,0xd7,0xa3,0x83,0xfe,0x7f,0xce,0x68,0x02,0x93,
+ 0x2e,0xe2,0x70,0x2a,0x3a,0x99,0xf0,0xa3,0x03,0xbd,0x31,0x57,0x34,0xd1,0xac,0xf7,
+ 0x1a,0x05,0x18,0xe6,0xa4,0x0b,0x49,0x8a,0x66,0x63,0x42,0xd6,0xa5,0x80,0xc5,0xa7,
+ 0x5c,0x12,0xc6,0xb3,0xb1,0x5a,0x76,0xa3,0x16,0x69,0xc7,0x52,0x7f,0x9d,0x26,0x22,
+ 0x4c,0xf7,0xfc,0x08,0xa3,0x19,0xfa,0xd1,0x8f,0xc7,0xd3,0xdc,0x52,0x73,0xd4,0x75,
+ 0x1f,0xad,0x20,0x02,0x4e,0x79,0x1c,0x8e,0xbe,0xe2,0x90,0x73,0xdf,0x91,0xd2,0x94,
+ 0xf3,0xfd,0x0d,0x21,0x19,0xf6,0x34,0x00,0x9c,0x83,0x91,0xc1,0x1d,0x45,0x3b,0xaf,
+ 0x23,0xaf,0x71,0x48,0x3e,0x6f,0xad,0x1d,0x39,0x14,0x00,0xee,0xa2,0xab,0xdd,0xff,
+ 0x00,0xaa,0x35,0x3d,0x57,0xbd,0x3f,0xba,0x3f,0x4a,0x00,0xe7,0x65,0xfb,0xeb,0xfe,
+ 0xea,0xff,0x00,0x2a,0x5a,0x49,0x7f,0xd6,0x8f,0xa0,0xfe,0x54,0xb4,0xc6,0x14,0x51,
+ 0x45,0x31,0x0a,0x2b,0xb4,0xf0,0x9f,0xfc,0x82,0x9f,0xfe,0xba,0x9f,0xe4,0x2b,0x8c,
+ 0x15,0xd9,0x78,0x4b,0xfe,0x41,0x72,0x7f,0xd7,0x53,0xfc,0x85,0x37,0xb0,0x0f,0xd4,
+ 0x24,0x56,0xb8,0x97,0x04,0x12,0xa3,0xf5,0xaa,0x3b,0x9d,0x42,0xb9,0x72,0x09,0xce,
+ 0x07,0xe3,0x8f,0xe9,0x56,0xae,0xd1,0xe3,0xb9,0x96,0x4c,0x15,0x3b,0x89,0xf4,0xc8,
+ 0xaa,0xe5,0x5a,0x79,0xf0,0xb9,0x66,0x6e,0xe7,0x8c,0xd5,0xbd,0x11,0xc1,0x55,0xea,
+ 0xfb,0x8b,0x3c,0xdb,0x94,0x2a,0xb1,0xe9,0xcf,0x02,0xb3,0x5a,0x66,0x59,0xb8,0x6c,
+ 0xe3,0xd6,0xb4,0x9a,0xd2,0x40,0x8c,0xd9,0x52,0x17,0xae,0x18,0x1a,0xac,0x65,0xb6,
+ 0x8c,0x8c,0x88,0xcb,0xf5,0x39,0x5c,0xd2,0x4f,0x52,0x29,0xb6,0xa5,0xef,0x23,0xa0,
+ 0xd2,0x5c,0xbe,0x9f,0x1b,0x1e,0xf9,0xae,0x6b,0xc5,0xeb,0x8d,0x4d,0x0f,0xac,0x43,
+ 0xf9,0x9a,0xe9,0x74,0x96,0x0d,0x62,0xa5,0x71,0x8c,0x9c,0x62,0xb9,0xff,0x00,0x18,
+ 0xaf,0xfa,0x5c,0x0d,0xeb,0x19,0x1f,0xad,0x4f,0x53,0xbe,0x9f,0xc0,0x8e,0x6c,0xd2,
+ 0x52,0x9a,0x4a,0x65,0x09,0x45,0x2d,0x25,0x00,0x21,0xe9,0x5a,0x3a,0x01,0xff,0x00,
+ 0x4b,0x71,0xea,0x87,0xf9,0x8a,0xce,0x3d,0x2a,0xee,0x88,0xd8,0xd4,0x14,0x7a,0xa9,
+ 0x1f,0xa5,0x26,0x33,0x71,0xf3,0x9f,0xe4,0x4d,0x37,0x9f,0x41,0xfe,0x34,0xf7,0xc0,
+ 0x63,0xd2,0x99,0x8c,0xf4,0xfc,0xaa,0x00,0x5c,0x86,0xf6,0x3e,0x94,0xdf,0xf3,0xe9,
+ 0xff,0x00,0xea,0xa0,0x8c,0xe3,0xfa,0x7f,0x9f,0xd2,0x8f,0xf3,0xfe,0x7f,0xc2,0x80,
+ 0x03,0xfe,0x7b,0x7f,0xfa,0xa9,0xbf,0xe7,0xd3,0xff,0x00,0xd5,0x4b,0xfe,0x7f,0xcf,
+ 0xad,0x14,0x00,0xd3,0xfe,0x7f,0xcf,0x6a,0x43,0x4e,0xff,0x00,0x23,0xfc,0xff,0x00,
+ 0x4a,0x4f,0xa7,0xe1,0x8f,0xf3,0xfa,0x50,0x05,0x32,0x39,0xa5,0x15,0x69,0x2d,0xd5,
+ 0xc1,0x27,0x23,0x9e,0x31,0x41,0xb4,0xf4,0x6f,0xcc,0x53,0x34,0x96,0xe5,0x62,0x0d,
+ 0x26,0x39,0xab,0x0d,0x6c,0xe3,0xa6,0x0f,0xe3,0x51,0x18,0x9c,0x75,0x53,0x41,0x0c,
+ 0x65,0x6a,0x5b,0xf1,0x6b,0x10,0xf6,0xfe,0xb5,0x96,0x6b,0x56,0x2e,0x2d,0xa2,0xff,
+ 0x00,0x74,0x50,0xc4,0x03,0xe5,0x38,0x61,0xf2,0x9e,0x94,0xac,0x0a,0x9f,0xf3,0xcd,
+ 0x19,0x19,0xd9,0x27,0x43,0xd0,0xd0,0xa4,0xa9,0xf2,0xdc,0xff,0x00,0xba,0x69,0x00,
+ 0x9f,0xc8,0xf5,0xa4,0xfe,0x7f,0xce,0x94,0x82,0xa4,0x9c,0x7d,0x45,0x04,0x64,0x64,
+ 0x1a,0x00,0x43,0xc8,0xc8,0xa5,0x07,0x3f,0x5a,0x40,0x7b,0xf7,0xee,0x29,0x71,0xdc,
+ 0x50,0x02,0xd5,0x4b,0xf3,0xfb,0x86,0xfa,0x7a,0xd5,0xac,0x7f,0x9f,0x5a,0xa9,0xa8,
+ 0xf1,0x6e,0xff,0x00,0x4a,0x00,0xc0,0x9b,0xfd,0x77,0xe0,0x3f,0x95,0x2d,0x24,0xdf,
+ 0xeb,0xcd,0x2d,0x31,0x85,0x14,0x51,0x4c,0x43,0x85,0x76,0x3e,0x12,0xff,0x00,0x90,
+ 0x6c,0xbf,0xf5,0xd4,0xff,0x00,0x21,0x5c,0x70,0xae,0xc3,0xc2,0x3f,0xf1,0xe1,0x37,
+ 0xfd,0x74,0xfe,0x82,0x9f,0x40,0x24,0xd5,0x03,0x35,0xd1,0x22,0x40,0x9c,0x85,0xea,
+ 0x33,0xfa,0xd3,0x0d,0xa2,0x88,0xb9,0x90,0x99,0x43,0x05,0xcf,0xb1,0xef,0x8a,0xd2,
+ 0xbc,0x86,0x2b,0x86,0x55,0x62,0x81,0x93,0x9c,0xb5,0x66,0xc8,0x5d,0xa6,0x0e,0xdb,
+ 0x43,0x28,0x1c,0x8e,0x71,0x55,0xba,0xb1,0xcd,0x55,0x42,0x1e,0xf3,0x43,0x1e,0xd0,
+ 0x41,0x6b,0x21,0x3c,0x31,0x7e,0x3e,0x94,0xdb,0x38,0x99,0xa2,0x53,0xb4,0x91,0x93,
+ 0x9e,0x3d,0xea,0x5b,0x89,0xde,0x48,0xf6,0x99,0x03,0x03,0xd7,0xe5,0x22,0xab,0x7c,
+ 0xc7,0x6a,0xee,0xe3,0xea,0x70,0x2a,0x69,0xc5,0xc0,0xc6,0x75,0xe3,0xcf,0x74,0x6d,
+ 0x69,0x99,0x10,0xc8,0xb8,0xc6,0x24,0x35,0x87,0xe3,0x24,0xf9,0xad,0x5f,0xd9,0x87,
+ 0xf2,0xad,0xad,0x2d,0x3c,0x8b,0x62,0x19,0x89,0xdc,0xe4,0xfd,0xdc,0x62,0xb2,0x7c,
+ 0x61,0xb5,0xad,0x6d,0xd8,0x10,0x70,0xc4,0x7e,0x94,0x75,0x3b,0x60,0x9f,0x2e,0xa7,
+ 0x24,0x69,0x29,0x4d,0x25,0x31,0x85,0x25,0x14,0x50,0x01,0x56,0x34,0x96,0xdb,0xa9,
+ 0x45,0xf5,0x23,0xf4,0xaa,0xf5,0x25,0x8b,0x6d,0xbf,0x84,0xff,0x00,0xd3,0x41,0xfc,
+ 0xe9,0x31,0x9d,0x34,0x84,0x67,0x9c,0xe2,0xa3,0x20,0x83,0xea,0x3d,0x6a,0x59,0x07,
+ 0x35,0x1f,0xb7,0x4a,0x80,0x17,0xaf,0x5e,0xfd,0xfb,0x1a,0x69,0xef,0x9f,0xc7,0x3f,
+ 0xe7,0xf5,0xa3,0x07,0xa0,0xfc,0x47,0xad,0x1e,0x9c,0xe7,0xd3,0xfc,0xff,0x00,0x4a,
+ 0x00,0x69,0xef,0x9f,0xd7,0xfc,0xfe,0xb4,0x87,0xdf,0xf5,0xff,0x00,0x3f,0xad,0x3b,
+ 0xe9,0xfa,0x7f,0x4f,0xf0,0xa4,0xf4,0xfe,0x9f,0xe7,0xf4,0xa0,0x04,0xf5,0xcf,0xe3,
+ 0x9f,0xeb,0xfe,0x34,0x87,0xbf,0xeb,0x9f,0xeb,0xfe,0x34,0xbf,0xe4,0x63,0xfa,0x7f,
+ 0x85,0x27,0xa7,0xe9,0x8f,0xe9,0xfe,0x14,0x01,0x24,0x6c,0x3a,0x73,0x9a,0x92,0xa0,
+ 0x40,0x7d,0x31,0x53,0x03,0x48,0xd2,0x5b,0x8b,0x49,0x4b,0x9a,0x43,0x41,0x22,0x10,
+ 0x0f,0x51,0x9f,0xa8,0xab,0x04,0x7c,0xaa,0xa3,0x81,0xb4,0x7e,0x15,0x5f,0x3c,0xd5,
+ 0x97,0xeb,0x8c,0xe3,0x8a,0x62,0x64,0x58,0x07,0xf7,0x72,0x77,0xfb,0xa6,0x8c,0x12,
+ 0x36,0xbf,0x55,0xe8,0x69,0x58,0x03,0xf2,0xb7,0xd4,0x1f,0x4a,0x39,0x3c,0x37,0xde,
+ 0x1f,0xa8,0xa0,0x40,0x1b,0x3c,0x77,0xe9,0xf5,0xa6,0xfd,0xd3,0xea,0x0d,0x04,0x66,
+ 0x94,0x12,0xc3,0xa6,0x7d,0x68,0x01,0x3d,0x30,0x7e,0x86,0x94,0x50,0x72,0x28,0xa0,
+ 0x05,0xf6,0xaa,0x3a,0x9f,0xfc,0x7b,0xbf,0xfb,0xa6,0xae,0xd5,0x0d,0x50,0xff,0x00,
+ 0xa3,0x3f,0xfb,0xbe,0xb9,0xa0,0x0c,0x49,0xbf,0xe3,0xe5,0xbe,0xb4,0xb4,0x93,0xff,
+ 0x00,0xc7,0xd3,0xfd,0x69,0x69,0x8c,0x28,0xa2,0x8a,0x60,0x38,0x57,0x5f,0xe1,0x0f,
+ 0xf8,0xf2,0x9b,0xfe,0xba,0x7f,0x4a,0xe3,0xc5,0x75,0xde,0x10,0x3f,0xe8,0x93,0xff,
+ 0x00,0xbe,0x3f,0x95,0x02,0x37,0x7c,0x84,0xf3,0x19,0xc8,0xc9,0x6c,0x75,0xf6,0xa8,
+ 0xd6,0xca,0x35,0x89,0x50,0x76,0x18,0xcf,0xad,0x58,0xa2,0x8b,0xb1,0x4a,0x2a,0x4a,
+ 0xcd,0x10,0x2d,0xaa,0x0c,0xe7,0x04,0x9e,0xf8,0xa8,0x64,0xd3,0x91,0xd4,0xfc,0xc7,
+ 0x3d,0xb8,0x15,0x76,0x8a,0x2e,0xc8,0x74,0x60,0xd5,0x9a,0x32,0x61,0xd2,0xe7,0x03,
+ 0x12,0x4f,0xf2,0xe7,0x21,0x47,0x18,0xac,0xff,0x00,0x14,0x5a,0x08,0x74,0xe8,0x9c,
+ 0x12,0x48,0x93,0x1d,0x7d,0x8d,0x74,0xd5,0x8d,0xe2,0xa5,0xdd,0xa3,0x13,0xfd,0xd7,
+ 0x53,0x4e,0xed,0x9a,0xad,0x15,0x91,0xc3,0x9a,0x4a,0x53,0x4d,0xa6,0x48,0x51,0x45,
+ 0x25,0x00,0x2d,0x10,0xb6,0xdb,0x84,0x3e,0x8c,0x0d,0x25,0x34,0xf0,0xd4,0x98,0xd1,
+ 0xd7,0x4a,0x39,0xed,0xf8,0xd4,0x7d,0xb1,0x9a,0x91,0x8e,0xe4,0x04,0x1e,0xa3,0xd2,
+ 0xa3,0xef,0xef,0xe9,0x50,0x02,0x63,0x1d,0x69,0x0f,0x7f,0xd7,0x3f,0xe7,0xf5,0xa7,
+ 0x73,0xdb,0xa8,0xed,0x48,0x7d,0xa8,0x01,0x0d,0x21,0xf7,0xfd,0x68,0xff,0x00,0x3e,
+ 0xbf,0xfe,0xb1,0x48,0x7a,0xff,0x00,0x9f,0xf3,0x8a,0x00,0x3d,0x7f,0xaf,0xf9,0xfd,
+ 0x69,0x0f,0x7f,0xd7,0x3f,0xd7,0xfc,0x69,0x69,0x3f,0xcf,0x1f,0xd2,0x80,0x24,0x06,
+ 0x9c,0x3d,0xea,0x31,0x52,0x03,0xc5,0x22,0x85,0xa4,0x26,0x8a,0x42,0x71,0x40,0x06,
+ 0x6a,0xcc,0x98,0xdd,0xc9,0xe2,0xa9,0x83,0xf3,0x0a,0xbb,0x27,0xde,0x3d,0xe9,0x88,
+ 0x60,0xe7,0xe5,0x07,0x9e,0xa0,0xd2,0x11,0xcf,0x3d,0x68,0x24,0x95,0xc8,0xe0,0x8a,
+ 0x5f,0xbe,0xb9,0x07,0x9a,0x04,0x27,0x51,0x9c,0x7d,0x69,0xbc,0x8e,0x47,0x5a,0x50,
+ 0x70,0x72,0x0f,0x1d,0xc5,0x07,0x8f,0xa5,0x00,0x2f,0x50,0x0f,0xaf,0xe9,0x45,0x34,
+ 0x1d,0xbd,0x79,0x53,0xde,0x9c,0x7e,0xf6,0x3f,0xc9,0xa0,0x04,0xac,0xfd,0x54,0xe2,
+ 0xdd,0xfe,0x95,0xa1,0xfe,0x45,0x66,0xea,0xc7,0xfd,0x1d,0xb1,0x40,0x18,0xd2,0x9c,
+ 0xdc,0xbf,0xfb,0xc6,0x9d,0x4c,0x7f,0xf5,0xc7,0xeb,0x4f,0xa6,0x30,0xa2,0x92,0x8a,
+ 0x00,0x70,0xad,0x4d,0x27,0x5a,0x93,0x4c,0x8e,0x44,0x48,0x95,0xf7,0x90,0x7e,0x63,
+ 0xd2,0xb2,0xa8,0xa6,0x07,0x48,0x7c,0x5b,0x71,0xda,0xde,0x2f,0xd7,0xfc,0x69,0xa7,
+ 0xc5,0x97,0x5d,0xa1,0x87,0xf2,0x3f,0xe3,0x5c,0xf6,0x68,0xcd,0x16,0x41,0x73,0xa0,
+ 0x3e,0x2c,0xbc,0xff,0x00,0x9e,0x50,0x7e,0x47,0xfc,0x69,0xa7,0xc5,0x77,0xbf,0xdc,
+ 0x87,0xfe,0xf9,0x3f,0xe3,0x58,0x39,0xa4,0xa7,0x64,0x17,0x37,0x4f,0x8a,0xaf,0xff,
+ 0x00,0xbb,0x0f,0xfd,0xf3,0xff,0x00,0xd7,0xaa,0xd7,0xda,0xf5,0xdd,0xf5,0xb3,0x41,
+ 0x2f,0x97,0xb1,0x88,0x27,0x0b,0x8a,0xcb,0xa4,0xa2,0xc2,0xb8,0x1a,0x4a,0x29,0x29,
+ 0x88,0x29,0x29,0x69,0x28,0x00,0xa6,0xb7,0x5a,0x75,0x35,0xba,0xd2,0x63,0x47,0x57,
+ 0x11,0xdf,0x6b,0x11,0xe7,0x94,0x1d,0x3e,0x94,0xdc,0xe7,0xe5,0x6e,0xbd,0x88,0xa6,
+ 0x59,0x9d,0xda,0x7c,0x1d,0xfe,0x40,0x3a,0xd4,0x9c,0x36,0x47,0xf3,0xa9,0x00,0xcf,
+ 0x66,0xea,0x3a,0x11,0x48,0x4e,0x68,0x07,0xb1,0xe4,0x7a,0xff,0x00,0x8d,0x0d,0xc7,
+ 0xd2,0x90,0x09,0xfe,0x7d,0x3f,0xfd,0x46,0x93,0xfc,0xfa,0x7f,0xfa,0x8d,0x2d,0x21,
+ 0xa0,0x04,0xff,0x00,0x3f,0xe7,0xd0,0xd0,0x7f,0xcf,0xf9,0xec,0x68,0xc7,0xf9,0xff,
+ 0x00,0x3d,0xa8,0xff,0x00,0x3f,0xe7,0xda,0x80,0x05,0x34,0xfc,0x8a,0x80,0xb8,0x55,
+ 0xe4,0x8e,0x29,0x8d,0x70,0x00,0x3e,0xd4,0x8a,0x2c,0x96,0xc5,0x31,0xe4,0xaa,0x92,
+ 0x5c,0x1f,0x9b,0xdb,0x15,0x0b,0xcc,0x72,0xdc,0xf4,0xe9,0x40,0x17,0x92,0x41,0xe6,
+ 0x2f,0xd4,0x56,0xa3,0x8e,0x6b,0x9f,0xb7,0x62,0xf7,0x48,0xa0,0xf5,0x75,0xfe,0x75,
+ 0xd1,0x95,0x34,0x21,0x32,0xbe,0x30,0xd9,0x14,0x83,0x28,0x4e,0x3a,0x54,0xe5,0x29,
+ 0xa5,0x46,0x3d,0xe9,0x81,0x11,0x19,0x39,0x1d,0x7b,0xfb,0xd0,0x31,0xfe,0x34,0xf2,
+ 0xa3,0x1e,0xf4,0xd2,0xb9,0xeb,0xd7,0xd6,0x81,0x0d,0xc6,0x09,0x1e,0xbd,0xbd,0x68,
+ 0xed,0x8f,0xca,0x9d,0x8c,0x70,0x7f,0x0a,0x4d,0xbe,0xc6,0x80,0x13,0x39,0x1e,0xfd,
+ 0xeb,0x33,0x56,0xcf,0x94,0x47,0x3d,0x45,0x6a,0x6d,0x3e,0xf9,0xf5,0xc5,0x46,0xf1,
+ 0x24,0xa3,0x0c,0x8b,0xee,0x0d,0x00,0x72,0xae,0x7f,0x7a,0xc7,0xdf,0x34,0xbb,0xfd,
+ 0xab,0xa4,0x36,0x36,0xe7,0xfe,0x59,0x27,0xe7,0x4d,0xfb,0x05,0xb7,0xfc,0xf1,0x5f,
+ 0xfb,0xe8,0x53,0x19,0xce,0xef,0xf6,0xa3,0x7f,0xb5,0x74,0x5f,0xd9,0xf6,0xdf,0xf3,
+ 0xc1,0x7f,0x31,0x47,0xf6,0x75,0xbf,0xfc,0xfb,0x8f,0xc0,0x8f,0xf0,0xa0,0x0e,0x77,
+ 0x7f,0xb5,0x1b,0xfd,0xab,0xa1,0x3a,0x7d,0xae,0x71,0xe4,0x7f,0x2a,0x3f,0xb3,0x6d,
+ 0xbf,0xe7,0x88,0x14,0x5c,0x0e,0x7f,0x7f,0xb5,0x1b,0xfd,0xab,0xa0,0xfe,0xcc,0xb6,
+ 0xff,0x00,0x9e,0x60,0x52,0x7f,0x65,0xdb,0x7f,0x70,0x51,0x70,0x30,0x37,0xfb,0x52,
+ 0x6f,0xf6,0xad,0xff,0x00,0xec,0xbb,0x6f,0xee,0x8a,0x3f,0xb2,0xed,0xff,0x00,0xba,
+ 0x28,0xb8,0x8c,0x0d,0xfe,0xd4,0x9b,0xfd,0xab,0x7f,0xfb,0x2a,0xdf,0xfb,0xa2,0x8f,
+ 0xec,0xab,0x7f,0xee,0x8a,0x2e,0x07,0x3f,0xbf,0xda,0x8d,0xfe,0xd5,0xd0,0x7f,0x65,
+ 0x5b,0xff,0x00,0x74,0x51,0xfd,0x97,0x6f,0xfd,0xd1,0xf9,0x51,0x70,0x39,0xfd,0xfe,
+ 0xd4,0x9b,0xbd,0xab,0xa1,0xfe,0xcb,0x80,0x7f,0x00,0xfc,0xa8,0xfe,0xcc,0x83,0xfb,
+ 0x8b,0xf9,0x51,0x70,0x39,0xed,0xde,0xd4,0x84,0xe6,0xba,0x3f,0xec,0xd8,0x07,0xf0,
+ 0xaf,0xe5,0x47,0xf6,0x7c,0x03,0xf8,0x16,0x8b,0x8c,0x4d,0x31,0xf7,0x69,0xf1,0x8e,
+ 0x38,0x1d,0xfe,0xb5,0x60,0x8c,0xfb,0x11,0x48,0x90,0x88,0xc6,0x13,0x81,0xe8,0x29,
+ 0xd8,0xa4,0x21,0x07,0x3f,0x5f,0x4a,0x3a,0x76,0xa0,0x8a,0x42,0x7d,0x68,0x00,0xe8,
+ 0x32,0xbc,0x8f,0x4a,0x33,0xdc,0x74,0xed,0xed,0x49,0x82,0x0e,0x47,0xff,0x00,0xae,
+ 0x97,0xef,0x72,0x3a,0xf7,0x14,0x00,0x80,0x9f,0xf0,0xf6,0xa0,0xf3,0xdb,0xe9,0x8a,
+ 0x5e,0x0f,0xd6,0x97,0x3e,0xbc,0x83,0xde,0x81,0x99,0xf3,0x1f,0x98,0xfb,0xa5,0x56,
+ 0x32,0x64,0x7d,0x56,0xb4,0x85,0xac,0x52,0x04,0x77,0x62,0x32,0x0f,0x7c,0x53,0x64,
+ 0xfb,0x2c,0x16,0x6e,0x23,0x40,0xec,0x00,0x61,0x8e,0x70,0x47,0xaf,0xb6,0x09,0xa9,
+ 0x19,0x9c,0x59,0x98,0x13,0x83,0x83,0xc1,0xe3,0xbd,0x29,0x86,0x63,0xb8,0xf9,0x6c,
+ 0x36,0xf0,0xd9,0xed,0x53,0xc9,0x77,0x34,0xaf,0x36,0x2d,0x94,0x09,0xa2,0x0c,0x57,
+ 0x70,0xfb,0xc3,0xf8,0x87,0xe3,0xdb,0xdc,0xd2,0x0b,0x8b,0xb9,0x24,0x53,0xfb,0xac,
+ 0xcd,0x06,0xc3,0x9c,0xe1,0xf0,0x3f,0x9f,0x4f,0xca,0x9d,0x82,0xe3,0x63,0xb4,0xb8,
+ 0x0e,0x4e,0x30,0xd1,0xa8,0x90,0xfa,0xe3,0x8e,0x7f,0x5a,0xe9,0xe0,0xb8,0x82,0x51,
+ 0x0e,0xe6,0x0b,0x24,0xcb,0xb9,0x57,0xd7,0xd7,0x1f,0x91,0xae,0x66,0x26,0xba,0x26,
+ 0xd6,0x4f,0xb4,0x6d,0xc2,0x98,0x83,0x05,0xc9,0x1d,0x78,0x3e,0xbd,0x4d,0x35,0x61,
+ 0x99,0x63,0x87,0x74,0xb2,0x8f,0x26,0x42,0x76,0x83,0x82,0xbe,0xac,0xbe,0xdc,0x53,
+ 0xb0,0xae,0x75,0x5f,0x6a,0xb3,0xf2,0xc4,0x9e,0x7a,0x6c,0x66,0xd8,0x1b,0x3c,0x67,
+ 0xd2,0x86,0x9e,0xcc,0x33,0xab,0x5c,0x46,0xa6,0x33,0x87,0x05,0xc0,0xda,0x7d,0xeb,
+ 0x91,0x78,0x22,0x09,0x22,0x99,0x37,0x30,0x7d,0xcb,0x97,0xe1,0xc7,0xf8,0xd2,0x98,
+ 0xad,0x08,0x90,0xa9,0x5d,0x8e,0x00,0x53,0xce,0x55,0xbd,0x29,0x88,0xeb,0x03,0xda,
+ 0x3f,0xdd,0xb9,0x8c,0xfd,0x24,0x06,0x9e,0x20,0x8d,0xbe,0xeb,0x83,0xf4,0x35,0xcb,
+ 0xaa,0xc0,0xac,0xd2,0x1f,0x28,0x79,0x6b,0xb5,0xd0,0x0f,0xbd,0x9e,0xeb,0x56,0xad,
+ 0xec,0x83,0xbd,0xbc,0x49,0x30,0x2d,0xb3,0xcc,0x89,0xc0,0xfb,0xdc,0x7d,0xd3,0xef,
+ 0xda,0x80,0x37,0x8d,0xa0,0xfe,0xf1,0xa6,0x9b,0x3f,0xf6,0xab,0x1d,0x6d,0x56,0x38,
+ 0xc5,0xdc,0x4c,0xdf,0x3b,0x10,0xcb,0xfd,0xc3,0xff,0x00,0xd7,0xab,0x50,0x48,0xfb,
+ 0x41,0xde,0xdf,0x9d,0x21,0x97,0x0d,0x99,0xec,0xd4,0x86,0xd1,0xf3,0x90,0xdc,0xfd,
+ 0x6a,0x31,0x34,0x9f,0xdf,0x6f,0xce,0x94,0x5c,0x49,0xfd,0xf3,0x40,0x0e,0x36,0x92,
+ 0x7f,0x78,0xfe,0x74,0x7d,0x95,0xfd,0x4f,0xe7,0x49,0xf6,0x89,0x7f,0xbf,0xfa,0x0a,
+ 0x5f,0xb4,0xcb,0xfd,0xef,0xd0,0x50,0x02,0x7d,0x9a,0x4f,0x53,0xf9,0xd3,0x4d,0xab,
+ 0xfb,0x9a,0x7f,0xda,0xa4,0x1d,0x48,0xfc,0xa9,0x1a,0xf1,0xd5,0x4b,0x1d,0xb8,0x1e,
+ 0xd4,0xc0,0x6f,0xd9,0xdc,0x0e,0xf4,0x9e,0x43,0x7a,0x56,0x5b,0x6b,0xf7,0xca,0xc7,
+ 0x10,0xc0,0xc3,0xe8,0x7f,0xc6,0x81,0xe2,0x1b,0xbe,0xf6,0xb1,0x7e,0x04,0xd1,0x61,
+ 0x1a,0x7e,0x43,0x0f,0xe1,0xe2,0x93,0xc9,0x6f,0x43,0x54,0x07,0x88,0x67,0x18,0xcd,
+ 0xa2,0x7e,0x0f,0x4f,0xff,0x00,0x84,0x80,0x96,0x21,0x6d,0x43,0x60,0x67,0xef,0xff,
+ 0x00,0xf5,0xa9,0xa8,0xb6,0x17,0x2e,0x79,0x2d,0xfd,0xde,0x28,0xf2,0x4f,0xa1,0xaa,
+ 0x3f,0xf0,0x92,0x60,0xf3,0x69,0xff,0x00,0x8f,0xff,0x00,0xf5,0xaa,0x55,0xf1,0x02,
+ 0x3f,0xfc,0xbb,0xff,0x00,0xe3,0xff,0x00,0xfd,0x6a,0x1c,0x5a,0xdc,0x2e,0x58,0xf2,
+ 0x58,0x7f,0x0f,0x14,0x79,0x27,0x3d,0x2a,0x21,0xad,0xa1,0xff,0x00,0x97,0x73,0xff,
+ 0x00,0x7d,0xff,0x00,0xf5,0xa9,0xe3,0x58,0x8c,0xff,0x00,0xcb,0x13,0xff,0x00,0x7d,
+ 0x52,0x01,0xde,0x49,0xf4,0xa4,0x30,0x9e,0xc3,0x9a,0x51,0xaa,0x46,0x7f,0xe5,0x91,
+ 0xfc,0xe9,0xc3,0x52,0x8c,0xff,0x00,0xcb,0x33,0xf9,0xd2,0x01,0x9e,0x51,0xf4,0xa0,
+ 0xc4,0x7d,0x2a,0x4f,0xed,0x08,0xbf,0xe7,0x9b,0x52,0xfd,0xbe,0x2f,0xee,0x35,0x00,
+ 0x43,0xe5,0x9f,0x4a,0x4f,0x2c,0xe3,0xa5,0x4f,0xf6,0xf8,0x7f,0xb8,0xff,0x00,0xa5,
+ 0x1f,0x6d,0x83,0xfb,0xaf,0xf9,0x50,0x05,0x7d,0x84,0x76,0xc8,0xa3,0xcb,0x3e,0x86,
+ 0xa7,0xfb,0x64,0x1e,0x8d,0xf9,0x51,0xf6,0xb8,0x7f,0xda,0xfc,0xa8,0x19,0x07,0x96,
+ 0x7d,0x29,0x3c,0xb3,0xdc,0x55,0x8f,0xb5,0xc1,0xfe,0xd7,0xe5,0x47,0xda,0xe0,0xf7,
+ 0xfc,0xa8,0x02,0xb1,0x8c,0xe6,0x8f,0x2c,0x9c,0x1c,0x60,0xd5,0x9f,0xb5,0x41,0xea,
+ 0x7f,0x2a,0x3e,0xd3,0x07,0xf7,0xbf,0x4a,0x00,0xad,0xb0,0x91,0xc8,0xc1,0xa4,0xf2,
+ 0xbd,0xb1,0x56,0xbe,0xd3,0x07,0xf7,0xbf,0x4a,0x4f,0xb4,0xc1,0xfd,0xef,0xd2,0x80,
+ 0x30,0x25,0x6e,0x41,0xcf,0xdd,0x38,0xfc,0xea,0x21,0x30,0x8b,0x95,0x3c,0xa9,0xc7,
+ 0x3d,0xc5,0x2d,0xc7,0xdc,0x90,0xff,0x00,0xb4,0x05,0x53,0x90,0x90,0x5c,0x7a,0x62,
+ 0x90,0xcb,0x2f,0x7a,0x54,0x91,0x1a,0x2a,0x05,0x5c,0x2f,0x19,0xdb,0xd3,0xa1,0xff,
+ 0x00,0x3d,0x6a,0x36,0xbb,0x90,0xe4,0x03,0xb4,0x05,0x1c,0x28,0x03,0x1d,0x39,0x1e,
+ 0x86,0xab,0xb7,0x56,0xfc,0xa9,0x09,0x1f,0x35,0x31,0x13,0x35,0xc4,0xac,0x7e,0x69,
+ 0x18,0xfc,0x98,0x3c,0xf5,0x14,0xc0,0xc4,0x95,0xcf,0x65,0xa6,0x12,0x32,0x7e,0x98,
+ 0xa3,0x77,0xf2,0xc5,0x00,0x39,0x5b,0x98,0xfe,0xb4,0xd0,0xfd,0x3d,0x8e,0x69,0x01,
+ 0xc1,0x1e,0xd4,0x2f,0xde,0x1f,0x5a,0x60,0x38,0x39,0x39,0x1e,0xf9,0xad,0x4b,0x49,
+ 0x1f,0x64,0x60,0x1c,0x6c,0x6d,0xca,0x47,0x50,0x7f,0xc8,0xac,0xe4,0x52,0x52,0x4c,
+ 0x2e,0x48,0x23,0x1c,0x56,0x85,0xba,0xed,0x8c,0x7a,0xd2,0x03,0x5a,0x19,0x06,0xc9,
+ 0x90,0x8c,0xac,0xb8,0x3f,0x46,0xf5,0xfe,0x75,0x22,0x70,0x31,0x55,0x61,0x6c,0x8a,
+ 0xb2,0xb9,0x22,0x90,0x0f,0xa5,0xcd,0x32,0x97,0x24,0x53,0x01,0xd9,0xa3,0x34,0xdc,
+ 0xd1,0x40,0x0e,0xeb,0x50,0x5e,0xf3,0x67,0x2f,0xfb,0xa6,0xa5,0xcd,0x43,0x77,0xcd,
+ 0xa4,0xbf,0xee,0x1f,0xe5,0x42,0xdc,0x47,0x3b,0x45,0x25,0x15,0xd4,0x66,0x0d,0xf7,
+ 0x4d,0x58,0xd2,0xf0,0xd7,0x04,0x1e,0xe8,0x6a,0xb3,0x7d,0xd3,0x56,0x34,0x93,0xfe,
+ 0x96,0x3f,0xdd,0x35,0x12,0x65,0x22,0xe5,0xc5,0x98,0x6c,0xb2,0xf5,0xac,0xf9,0x23,
+ 0x78,0x8f,0xf5,0xad,0xd2,0x2a,0x19,0x61,0x57,0x18,0x22,0x85,0x3b,0xe9,0x21,0x38,
+ 0xdb,0x63,0x2e,0x39,0xbb,0x37,0xe7,0x56,0x15,0xea,0x2b,0x8b,0x52,0x87,0x22,0xa0,
+ 0x57,0x68,0xce,0x0e,0x7e,0x86,0x94,0xa1,0xd8,0x6a,0x46,0x82,0xc9,0x52,0xab,0xd5,
+ 0x24,0x90,0x38,0xc8,0x35,0x28,0x62,0x2b,0x1b,0x16,0x5b,0x0d,0x4b,0xba,0xab,0x07,
+ 0xa7,0x86,0xa0,0x09,0xf3,0x46,0xea,0x88,0x35,0x2e,0xea,0x40,0x49,0x9a,0x33,0x4c,
+ 0xdd,0x46,0x68,0x02,0x4c,0xd2,0x66,0x9b,0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6,
+ 0x8c,0xd0,0x03,0xb3,0x45,0x37,0x34,0xb9,0xa0,0x0f,0xff,0xd9,0xff,0xe4,0x13,0x4b,
+ 0x51,0x54,0x49,0x20,0x44,0x65,0x62,0x75,0x67,0x20,0x4d,0x65,0x74,0x61,0x64,0x61,
+ 0x74,0x61,0x00,0x49,0x13,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x52,0x43,0xae,0xae,0xae,0xae,0x86,0x02,0x00,0x00,0xe8,0x05,0x00,
+ 0x00,0x7b,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0xaa,0x01,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x06,0x11,0xa5,0x88,0x03,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x4c,0x09,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x25,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x34,0x00,0x00,0x00,0xab,0x06,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x50,0x00,0x00,
+ 0x00,0x50,0x09,0x00,0x00,0x0b,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x73,0x02,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
+ 0x00,0x40,0x01,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xaa,0x01,0x00,0x00,0xe8,0x05,0x00,0x00,0xee,0xee,0xee,
+ 0xee,0x15,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x01,0x00,
+ 0x00,0x22,0x41,0x00,0x00,0x94,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x22,0x41,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0xf7,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xe6,0x0b,0x00,
+ 0x00,0x2f,0x08,0x00,0x00,0xe6,0x0b,0x00,0x00,0x10,0x00,0x00,0x00,0x31,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x94,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x68,0x00,0x00,
+ 0x00,0x26,0x09,0x00,0x00,0x87,0x08,0x00,0x00,0x0b,0x09,0x00,0x00,0xc6,0x08,0x00,
+ 0x00,0x25,0x09,0x00,0x00,0x09,0x09,0x00,0x00,0x1b,0x09,0x00,0x00,0x1d,0x09,0x00,
+ 0x00,0x21,0x09,0x00,0x00,0x3e,0x09,0x00,0x00,0x43,0x09,0x00,0x00,0x12,0x09,0x00,
+ 0x00,0x29,0x09,0x00,0x00,0x12,0x09,0x00,0x00,0x04,0x09,0x00,0x00,0xc7,0x08,0x00,
+ 0x00,0x56,0x08,0x00,0x00,0x69,0x07,0x00,0x00,0xc8,0x05,0x00,0x00,0x52,0x05,0x00,
+ 0x00,0x2b,0x09,0x00,0x00,0x27,0x09,0x00,0x00,0x67,0x08,0x00,0x00,0xc8,0x05,0x00,
+ 0x00,0x5f,0x08,0x00,0x00,0x32,0x0a,0x00,0x00,0x67,0x0a,0x00,0x00,0xa1,0x07,0x00,
+ 0x00,0x6d,0x05,0x00,0x00,0x04,0x08,0x00,0x00,0x2f,0x09,0x00,0x00,0x31,0x09,0x00,
+ 0x00,0x66,0x08,0x00,0x00,0xe8,0x05,0x00,0x00,0xf9,0x09,0x00,0x00,0xab,0x0a,0x00,
+ 0x00,0xe9,0x0a,0x00,0x00,0xf2,0x08,0x00,0x00,0x7e,0x05,0x00,0x00,0xdc,0x07,0x00,
+ 0x00,0x31,0x09,0x00,0x00,0x5a,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xee,0x09,0x00,
+ 0x00,0x73,0x0a,0x00,0x00,0xc5,0x0a,0x00,0x00,0x50,0x09,0x00,0x00,0x86,0x05,0x00,
+ 0x00,0x31,0x09,0x00,0x00,0x4e,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xe2,0x09,0x00,
+ 0x00,0x2b,0x0b,0x00,0x00,0xdc,0x0a,0x00,0x00,0x5c,0x09,0x00,0x00,0x86,0x05,0x00,
+ 0x00,0x38,0x09,0x00,0x00,0x3e,0x08,0x00,0x00,0xee,0x05,0x00,0x00,0xcf,0x09,0x00,
+ 0x00,0xe6,0x0b,0x00,0x00,0xd4,0x0b,0x00,0x00,0xdd,0x09,0x00,0x00,0x76,0x05,0x00,
+ 0x00,0xe8,0x05,0x00,0x00,0x06,0x06,0x00,0x00,0x3b,0x06,0x00,0x00,0x1c,0x06,0x00,
+ 0x00,0x33,0x08,0x00,0x00,0x1e,0x08,0x00,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xfe,0xff,0xff,0xff,0xbc,0x08,0x00,
+ 0x00,0x44,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x29,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x96,0x09,0x00,
+ 0x00,0xf9,0x0b,0x00,0x00,0xba,0x05,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0d,0x00,
+ 0x00,0x00,0x1d,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x8b,0xfe,0xff,
+ 0xff,0xdc,0xfe,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xad,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x06,0x00,
+ 0x00,0x7c,0x00,0x00,0x00,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0x0a,0x00,0x00,0x86,0x09,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xde,0x00,0x00,0x00,0xbb,0x00,0x00,
+ 0x00,0x17,0x00,0x00,0x00,0x1d,0x00,0x00,0x00,0xb6,0x00,0x00,0x00,0xa5,0x00,0x00,
+ 0x00,0xc1,0xff,0xff,0xff,0x3c,0x00,0x00,0x00,0xef,0xff,0xff,0xff,0xed,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,
+ 0x00,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x10,0x00,
+ 0x00,0x00,0x13,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x26,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0b,0x00,0x00,0xdf,0xff,0xff,
+ 0xff,0x64,0x08,0x00,0x00,0xa4,0x0a,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x0a,0x1e,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x6c,0x97,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xa5,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x92,0x02,0x00,0x00,0x8a,0x04,0x00,0x00,0xe4,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x5d,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,
+ 0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00,
+ 0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x4a,0x4b,0x4a,0x4b,0x21,0x07,0x0a,
+ 0x9c,0x24,0xfa,0x00,0x00,0xac,0xfa,0x00,0x00,0x2e,0x77,0x00,0x00,0x2c,0x7e,0x00,
+ 0x00,0xd6,0xea,0x01,0x00,0x50,0xb1,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0xaa,0x01,
+ 0x00,0x00,0xaa,0x01,0x00,0x02,0x00,0x35,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x02,
+ 0x00,0x00,0x00,0x76,0x00,0x75,0x18,0x7e,0x5b,0x02,0x00,0x00,0x00,0x01,0x00,0x87,
+ 0xb3,0x01,0x00,0x17,0x92,0x01,0x00,0xbb,0x6b,0xff,0xff,0x2d,0x02,0x00,0x00,0x69,
+ 0xdd,0xff,0xff,0x26,0x46,0x01,0x00,0x71,0xdc,0xff,0xff,0x70,0x0f,0x00,0x00,0x19,
+ 0x4f,0xff,0xff,0x76,0xa1,0x01,0x00,0xff,0xff,0x40,0x30,0x00,0x00,0x18,0x00,0x00,
+ 0x12,0x12,0x00,0x08,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x10,0x12,
+ 0x12,0x12,0x12,0x13,0x13,0x00,0x00,0x00,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x13,0x00,0x13,0x12,0x13,0x13,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x01,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x07,0x08,0x12,0x12,0x12,0x12,0x01,
+ 0x06,0x12,0x12,0x12,0x12,0x08,0x15,0x00,0x00,0x14,0x15,0x06,0x12,0x12,0x12,0x01,
+ 0x06,0x12,0x12,0x12,0x12,0x08,0x08,0x15,0x00,0x15,0x15,0x06,0x12,0x12,0x12,0x01,
+ 0x06,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x15,0x15,0x07,0x12,0x12,0x12,0x06,
+ 0x12,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x14,0x15,0x08,0x12,0x12,0x12,0x06,
+ 0x06,0x12,0x12,0x12,0x12,0x06,0x07,0x16,0x08,0x00,0x08,0x08,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x06,0x07,0x01,0x01,0x07,0x08,0x08,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x08,0x15,0x15,0x12,0x12,0x12,0x12,0x12,0x12,0x00,
+ 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xf9,0x0d,0x00,0x10,0x00,
+ 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xc3,
+ 0x0a,0x00,0x10,0xca,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x02,
+ 0x08,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x1b,
+ 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x25,0x4c,0x00,0x00,0x00,0x0e,
+ 0x18,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88,
+ 0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,
+ 0x1e,0x08,0x1b,0xfc,0x21,0xa8,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4c,0x24,0x38,0x1f,0x42,
+ 0x23,0x2f,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c,
+ 0x27,0x09,0x1e,0xf0,0x27,0xec,0x1b,0x2b,0x28,0x67,0x1c,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x67,0x2a,0x04,0x18,0x00,0x27,0x5d,0x19,0x7b,0x25,0x3d,0x16,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x2e,0x2d,0x15,0xd3,0x2b,0x56,0x16,0xa2,
+ 0x29,0x12,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xab,
+ 0x1c,0x9c,0x1a,0x7b,0x25,0x77,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x5d,0x1d,0x93,0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa1,0x26,0x42,0x20,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c,
+ 0x27,0x57,0x1e,0x75,0x27,0xc0,0x1d,0x83,0x28,0x72,0x1c,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x80,0x27,0x12,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf2,0x1f,0x1d,0x15,0xd2,
+ 0x24,0x83,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88,
+ 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,
+ 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x04,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x55,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x12,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x0f,0x00,0x1c,0x01,0xe8,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x13,
+ 0x01,0x07,0x00,0x00,0x00,0x00,0x00,0x2f,0x00,0x71,0x00,0x13,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0xc8,0x00,0x9b,
+ 0x01,0x00,0x00,0x00,0x00,0x04,0x00,0x5a,0x00,0xe8,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x0c,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x16,0x00,0x0b,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xf7,0x1f,0xfe,0xb7,0x15,0xfe,0xb7,0x15,
+ 0xe2,0x17,0x10,0xe2,0x17,0x10,0x00,0x88,0x20,0x00,0x10,0xe6,0x1d,0x06,0x00,0x00,
+ 0x00,0x5a,0x50,0x64,0x55,0x64,0x2d,0x64,0x10,0x64,0x10,0x64,0x10,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x67,0x00,0x00,0x00,0x01,0x00,0x0c,0x00,0x13,
+ 0x00,0x09,0x00,0x06,0x00,0x67,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x65,0x26,0xba,0x1b,0x65,
+ 0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x84,0x25,0x27,0x1b,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x59,0x00,0x00,0x00,0xda,0x02,0x83,
+ 0x03,0x00,0x00,0x75,0x19,0x00,0x00,0x60,0x3d,0x00,0x00,0x00,0xaa,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x05,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x4e,0x00,0xa4,0x00,0x8d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x03,0x00,0x9d,0x00,0x6a,0x01,0x4b,
+ 0x04,0x01,0x00,0x57,0x01,0x28,0x00,0x01,0x00,0xd6,0xc9,0x33,0x01,0x00,0x00,0x00,
+ 0x00,0x46,0x41,0x46,0x41,0x28,0x00,0x66,0x01,0x32,0x00,0xad,0xff,0xda,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0x93,0x59,0x01,0x9c,0x04,0x32,0x00,0xad,0xff,0xda,0xff,0xa8,
+ 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0x59,0x01,0x14,0x00,0xc2,0xff,0xd7,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0x93,0x58,0x01,0x58,0x01,0xc2,0xff,0x00,0x00,0xec,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x58,0x01,0xd0,0xff,0xe3,0xff,0xf1,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x57,0x01,0xf7,0xff,0x03,0x00,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xe3,0x56,0x01,0x9c,0x04,0xf7,0xff,0x03,0x00,0xff,0xff,0xa8,
+ 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0xe8,0x03,0xf7,0xff,0x03,0x00,0xff,0xff,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x57,0x01,0xd4,0xff,0x10,0x00,0xf7,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x2c,0x00,0x14,0x00,0xfc,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe1,0xff,0x15,0x00,0x02,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd8,0xff,0xf0,0xff,0xf3,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x23,0x00,0x23,0x00,0x0e,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd2,0xff,0x1f,0x00,0x0c,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc5,0xff,0xd6,0xff,0xf4,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x25,0x00,0x1c,0x00,0x00,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x18,0x00,0xf5,0xff,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc2,0xff,0xe8,0xff,0x03,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0c,0x00,0x28,0x00,0xfe,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x03,0x00,0xe1,0xff,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf8,0xff,0xe9,0xff,0xf9,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd0,0xff,0x1d,0x00,0x05,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf6,0xff,0xe1,0xff,0xf8,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x1d,0x00,0xed,0xff,0xeb,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xde,0xff,0xf3,0xff,0x06,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0d,0x00,0x02,0x00,0xf0,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xfe,0xff,0xea,0xff,0x01,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe6,0xff,0xf8,0xff,0x04,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xfa,0xff,0xf2,0xff,0xf7,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x11,0x00,0x08,0x00,0x08,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xc2,0xff,0xeb,0xff,0x02,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x27,0x00,0x05,0x00,0x00,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x19,0x00,0x0c,0x00,0xfc,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd3,0xff,0xe9,0xff,0xfe,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x06,0x00,0x07,0x00,0xf2,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd5,0xff,0x1a,0x00,0x03,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x09,0x00,0x18,0x00,0x03,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xef,0xff,0x23,0x00,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x01,0x00,0xf7,0xff,0xf3,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0xaa,0x01,0x00,0x00,0xb8,0x00,0x05,0xd0,0x0a,
+ 0x00,0x01,0x00,0x00,0x00,0x60,0x07,0x00,0x04,0x70,0x08,0x40,0x05,0x18,0x00,0x01,
+ 0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xe5,0x00,0xa2,0x00,0x73,0x73,
+ 0x6f,0x69,0x73,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c,
+ 0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x30,0x20,0x32,0x73,0x73,
+ 0x6d,0x74,0x66,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x53,0x53,0x43,0x41,0x4c,
+ 0x20,0x50,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56,0x4d,0x30,0x30,0x33,
+ 0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0x4d,0x38,0x44,0x30,0x31,0x44,0x30,0x31,
+ 0x53,0x31,0x34,0x53,0x41,0x33,0x2f,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31,
+ 0x56,0x4d,0x30,0x30,0x33,0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0xff,0xdb,0x00,
+ 0x84,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x02,0x03,0x02,0x02,0x02,0x02,0x02,0x04,0x03,0x03,0x02,0x03,0x05,0x04,0x05,0x05,
+ 0x05,0x04,0x04,0x04,0x05,0x06,0x07,0x06,0x05,0x05,0x07,0x06,0x04,0x04,0x06,0x09,
+ 0x06,0x07,0x08,0x08,0x08,0x08,0x08,0x05,0x06,0x09,0x0a,0x09,0x08,0x0a,0x07,0x08,
+ 0x08,0x08,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x04,0x02,0x02,0x04,0x08,0x05,0x04,
+ 0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0xff,0xc0,0x00,0x11,0x08,0x0b,0xd0,0x0f,0xc0,0x03,0x01,0x22,0x00,
+ 0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,
+ 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,
+ 0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,
+ 0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,
+ 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,
+ 0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,
+ 0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,
+ 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,
+ 0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,
+ 0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,
+ 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,
+ 0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,
+ 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,
+ 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,
+ 0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,
+ 0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,
+ 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,
+ 0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,
+ 0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,
+ 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,
+ 0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,
+ 0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,
+ 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,
+ 0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,
+ 0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,
+ 0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xfe,0x15,0xec,0x27,0x9b,0x03,0x68,0x86,
+ 0x7b,0x88,0xd4,0xc8,0x79,0x3c,0xaf,0xa0,0xf5,0xa5,0xd4,0xee,0xa7,0x96,0x66,0x79,
+ 0x84,0x31,0x16,0x0a,0x56,0x35,0xe7,0x23,0x03,0x05,0x4f,0x73,0x4c,0x64,0x68,0x55,
+ 0xa4,0x8d,0x19,0xe4,0x60,0xc5,0x59,0x57,0xf7,0x80,0x0e,0xad,0x8f,0x4a,0xa5,0x78,
+ 0xd3,0xac,0x7e,0x73,0xfc,0xb7,0x48,0xd9,0xd9,0x13,0x75,0x4c,0x0e,0x40,0xec,0x6b,
+ 0x5a,0x56,0x8b,0x76,0xd8,0xa7,0xb6,0xe5,0x5b,0xcb,0x91,0x72,0x8b,0x10,0x49,0x9a,
+ 0xe2,0x32,0x59,0x97,0x1c,0x36,0x7a,0x67,0xdc,0x7f,0x5a,0xc6,0x69,0x84,0x51,0x29,
+ 0x96,0x24,0x17,0x2e,0x08,0x90,0x96,0xe8,0x33,0xd4,0x0f,0x6a,0x7d,0xdd,0xfb,0x99,
+ 0x66,0x91,0x96,0x74,0x47,0x60,0xe1,0x07,0xf0,0xf1,0xfe,0x26,0xb3,0x1f,0xf7,0xa5,
+ 0x5a,0x42,0x17,0x92,0xcc,0x1b,0xa6,0x08,0xcf,0x5a,0xd9,0x69,0xea,0x38,0xbe,0xdb,
+ 0x8b,0x31,0x4d,0xea,0xe2,0x32,0x8c,0x7e,0x63,0xf3,0x7b,0x53,0x99,0xd9,0xc2,0x48,
+ 0xb2,0x14,0xc8,0xc7,0xb1,0x3e,0x87,0xf5,0xa8,0xc7,0xef,0x44,0x86,0x42,0x25,0x7c,
+ 0x64,0x16,0x24,0x02,0x3d,0xa9,0xc1,0x62,0x88,0xb1,0x07,0xcc,0x21,0x70,0x14,0x8e,
+ 0x09,0xc7,0x5f,0xd6,0xb3,0xb5,0xda,0x46,0xb1,0x6e,0xde,0x45,0x9b,0x74,0x2d,0x29,
+ 0x8e,0x4d,0xe7,0x9c,0x20,0x03,0xe5,0x07,0xbf,0xcd,0x57,0x62,0xb8,0x8d,0x54,0x5a,
+ 0x95,0x77,0x53,0x21,0x90,0x10,0x00,0x39,0x1e,0xe7,0xa8,0xe0,0xd6,0x51,0x21,0xc3,
+ 0x29,0x2a,0x50,0x90,0x48,0x50,0x7b,0x0e,0xbe,0xd5,0x0a,0xca,0x70,0x14,0x64,0xe4,
+ 0x6d,0x04,0x73,0xf4,0xa6,0xe7,0x74,0x6a,0xa5,0x65,0x66,0x69,0xb6,0xa5,0x2b,0x26,
+ 0xf5,0x48,0xe0,0x07,0xe5,0x11,0x8f,0x98,0x15,0x07,0xee,0xf3,0xda,0xb3,0x6e,0x6e,
+ 0x24,0xb8,0x9c,0xca,0xe4,0x8c,0x03,0x81,0x8e,0xf4,0xc1,0xf7,0x31,0x8c,0x91,0x91,
+ 0x80,0x69,0xa4,0x8d,0xa3,0xe7,0x79,0x30,0x70,0x73,0xc6,0x6b,0x36,0xee,0x65,0x29,
+ 0x5d,0x0e,0x21,0x4e,0xc5,0x00,0xbb,0x91,0x92,0x48,0xc6,0x29,0x1b,0x18,0xdc,0x0f,
+ 0x07,0x92,0xa4,0xd3,0xbe,0xeb,0x85,0x0a,0x4e,0x46,0x5c,0x16,0xe0,0xd3,0x24,0x3b,
+ 0x8e,0x55,0x36,0x8e,0x80,0x9e,0x70,0x3d,0x2a,0x6e,0xaf,0x70,0x77,0xb6,0xa3,0xfe,
+ 0x53,0x86,0xd8,0x23,0x5c,0xe5,0x80,0x27,0xe5,0xc7,0xf8,0xd3,0x3e,0x67,0xc0,0xcf,
+ 0x3d,0x17,0x8e,0xb4,0xe5,0xf2,0xc3,0xfd,0xe2,0x40,0x18,0xe4,0x75,0xa6,0xee,0x57,
+ 0x2a,0x4e,0xd5,0xc9,0xc6,0x73,0xd2,0x9a,0xf2,0x13,0xdb,0x50,0x07,0x24,0x00,0x01,
+ 0x5f,0xe2,0xcf,0x7f,0x6a,0x92,0x45,0x28,0xa8,0x81,0x48,0x56,0xf9,0x81,0x6e,0xf8,
+ 0xeb,0x4c,0x2c,0x79,0x51,0xb1,0x80,0x38,0x0d,0x8c,0x64,0x53,0xb7,0xf9,0x8c,0xa6,
+ 0x4c,0xb9,0x55,0xc2,0xfb,0x7e,0x14,0xac,0x17,0x5b,0x75,0x00,0x33,0xe5,0x39,0x01,
+ 0x01,0x38,0xce,0x38,0x1f,0x5f,0xca,0x85,0x8c,0xb9,0xf2,0xf2,0x23,0xc8,0xc3,0x36,
+ 0x3a,0x73,0xff,0x00,0xea,0xa9,0x0e,0x76,0xaa,0xb1,0xf3,0x3e,0x52,0x00,0x66,0xfb,
+ 0xbf,0x41,0x50,0xee,0x0d,0xb4,0xc8,0xbb,0xbd,0xb3,0xd7,0x9e,0xd4,0xed,0xd1,0x15,
+ 0x64,0x9e,0xa4,0x8d,0x9c,0xe0,0x47,0xc2,0xae,0xc3,0x93,0xd7,0xde,0x83,0xe5,0x85,
+ 0xe3,0x73,0xa9,0x20,0xe0,0xf1,0xcd,0x26,0x64,0xd9,0x86,0xc6,0x47,0x20,0xe7,0xef,
+ 0x0f,0x42,0x29,0x8c,0x40,0x6c,0x01,0x9c,0x9c,0x92,0x3b,0x52,0xb8,0x9b,0xb2,0xbb,
+ 0x1c,0x0b,0x49,0x8d,0xc4,0x28,0x04,0xf2,0x4f,0x27,0xd8,0x52,0x86,0x5d,0xa8,0x54,
+ 0x67,0xae,0x09,0x1d,0x29,0x8a,0x03,0x07,0xcb,0x28,0x5e,0xa4,0x9e,0xd4,0xae,0xe5,
+ 0xd0,0x0c,0x15,0x8d,0x4e,0x40,0x03,0xa5,0x17,0xbe,0xe1,0x7d,0x2e,0x3f,0xe6,0x90,
+ 0x9c,0x97,0xda,0x48,0xdc,0x47,0x6f,0x4a,0x8b,0xa9,0xce,0xdd,0xa0,0x73,0xc9,0x3f,
+ 0x35,0x48,0xac,0x8d,0xbf,0x71,0x65,0x24,0x64,0x11,0xd6,0x9b,0x82,0xc0,0x05,0x0c,
+ 0x79,0xce,0x0f,0x6f,0x6a,0x1e,0x81,0x7d,0x04,0xf9,0x9c,0xaf,0x4c,0x93,0xc0,0x14,
+ 0xec,0xb4,0x85,0x54,0x16,0x2d,0x93,0x80,0x47,0x5a,0x06,0x41,0x2e,0xa4,0x8c,0x8c,
+ 0xe4,0x0e,0x83,0xd0,0xd1,0x9d,0xe0,0xc8,0xcc,0x01,0x3d,0x40,0xa5,0xd7,0x52,0x55,
+ 0xed,0xa8,0xbf,0xbc,0x8c,0xe6,0x37,0x2a,0x40,0xc1,0x1d,0x87,0x14,0xd4,0x0a,0x10,
+ 0xe5,0x72,0xac,0x38,0x70,0x3a,0x73,0x4f,0x45,0x52,0x15,0xc6,0x36,0x9e,0xcc,0x79,
+ 0xe2,0x98,0x5d,0xc0,0x2e,0x1f,0x60,0x03,0x21,0x40,0xe8,0x3d,0x05,0x3e,0x81,0xe6,
+ 0xc7,0xb2,0x92,0x54,0x1d,0xa3,0xe5,0xe4,0x7a,0x8f,0x7f,0xd2,0x90,0x30,0x63,0x1a,
+ 0x94,0x43,0x8e,0x4e,0x49,0xf9,0xbe,0xb4,0x63,0x77,0xcc,0x18,0x73,0xc6,0x09,0xf9,
+ 0x89,0xfa,0x53,0x57,0x69,0x47,0x3c,0x96,0x18,0x03,0x1e,0x94,0x5f,0xb0,0xef,0xad,
+ 0xd1,0x20,0xdb,0x87,0x00,0x17,0x19,0x00,0x00,0x39,0xfc,0x0d,0x1b,0x54,0x71,0x11,
+ 0x63,0xb5,0xb9,0x0d,0xc1,0x14,0xd5,0x3c,0xe7,0x83,0x96,0xe7,0xb6,0x29,0x15,0x24,
+ 0x32,0x32,0xae,0x43,0xfd,0xe5,0xc9,0x03,0x23,0x3e,0xb4,0x3d,0x5d,0xc2,0xfb,0x0e,
+ 0x72,0x09,0x03,0x2c,0xbb,0x41,0x1c,0xf6,0xa5,0x68,0x1f,0xe4,0x72,0x8b,0x86,0x19,
+ 0x52,0x0f,0xde,0xa5,0x62,0xa1,0xbf,0x78,0xae,0x24,0x27,0x70,0x6c,0xf2,0x0f,0xb8,
+ 0xee,0x2a,0x47,0x92,0x69,0x7c,0xb5,0x57,0x2a,0x8a,0x70,0xa8,0xa3,0xee,0xd3,0x69,
+ 0x12,0xd5,0xc7,0x47,0x85,0x0f,0x1c,0xc9,0xfb,0x89,0x14,0x3a,0xae,0x30,0x48,0xcf,
+ 0x7e,0xf5,0x66,0x0b,0xd9,0xa3,0x9a,0xdb,0x71,0x59,0x46,0x4a,0xa6,0x1b,0x1b,0x47,
+ 0x40,0x6a,0xa9,0x2c,0x42,0xac,0xef,0xe6,0x72,0x63,0x50,0xc7,0x86,0x1e,0xa4,0xf6,
+ 0xa8,0xa4,0xc1,0x90,0x00,0xaa,0x13,0x1b,0x71,0x8e,0xc0,0x74,0x5f,0x7a,0x4a,0xef,
+ 0x51,0xe8,0x8e,0xdc,0xbc,0x33,0xda,0xc8,0xca,0xb1,0x73,0x21,0x80,0xc4,0xf9,0xc0,
+ 0x39,0xce,0x57,0xf5,0xe9,0x5c,0xc4,0x8d,0x0c,0x72,0x3b,0xc5,0x2a,0xa4,0xc9,0x23,
+ 0x2b,0x46,0xe7,0xef,0x9f,0x51,0xec,0x79,0xc5,0x6e,0xd9,0x18,0xf1,0xb3,0xfd,0x25,
+ 0xa6,0x03,0x2b,0x95,0xce,0xd1,0x8f,0xbc,0x7d,0x3f,0xfa,0xf5,0x8f,0x7c,0xb6,0xd0,
+ 0x48,0xcc,0xd6,0xed,0x35,0xe0,0x38,0x62,0x41,0x0a,0x33,0xdf,0xeb,0xc8,0xa7,0x77,
+ 0xaa,0x7b,0x99,0xa7,0x77,0x66,0x55,0x77,0x61,0x12,0x4a,0x98,0x18,0x93,0x25,0x07,
+ 0x04,0x0f,0x6a,0x0a,0x87,0x4c,0x83,0x20,0x85,0x8e,0x1d,0x40,0xe4,0x73,0x50,0x2c,
+ 0x4f,0x2c,0x71,0xc2,0x5d,0x41,0x27,0xe6,0x52,0x4e,0x57,0x9e,0xa0,0x7a,0x55,0x9b,
+ 0x86,0x8d,0xa4,0x8d,0x62,0x66,0x8a,0x75,0x52,0x03,0x38,0xe0,0x8f,0x4f,0xf3,0xeb,
+ 0x49,0xf9,0x6e,0x17,0x4f,0x61,0x53,0x74,0x67,0x0e,0x9f,0x28,0x3f,0x2a,0xae,0x32,
+ 0x3e,0xa6,0x9a,0xd7,0x06,0x59,0x63,0x0d,0x18,0x87,0xf8,0x94,0xe7,0x9c,0xe7,0xbf,
+ 0xa5,0x31,0x58,0x3b,0x85,0x74,0x29,0x91,0x87,0x20,0x7d,0xdf,0x43,0xc7,0x5e,0x94,
+ 0x2b,0xec,0xdc,0xe8,0xa6,0x50,0xc7,0x00,0xb7,0x7f,0x72,0x2a,0x5e,0xe1,0xab,0x5a,
+ 0x16,0x04,0x4a,0x65,0x70,0xc2,0x4c,0x96,0x24,0x9e,0xb9,0xf7,0x22,0x88,0xb7,0xda,
+ 0xaa,0x38,0x71,0x1e,0x09,0x0a,0xc7,0xa9,0x51,0xc9,0x1e,0xd4,0x92,0x43,0x24,0x0d,
+ 0x14,0x8c,0xa2,0x30,0x64,0x05,0xd4,0x3e,0x30,0x31,0xc7,0xf9,0x35,0x34,0x33,0x99,
+ 0xa7,0xf2,0xfc,0xd6,0x9e,0x4d,0xc2,0x4d,0xa4,0x0e,0x83,0xb5,0x2f,0x24,0x2b,0xb7,
+ 0xb0,0xcf,0x2a,0xdc,0xf9,0x53,0x30,0x95,0x56,0x40,0xc4,0x44,0x8d,0x92,0xa3,0xd4,
+ 0x8a,0x96,0x39,0x7c,0xdb,0x99,0x23,0x01,0xfe,0x45,0x2e,0x18,0x0f,0x6a,0x58,0xde,
+ 0x39,0x66,0x5b,0x7b,0x68,0x9c,0xdc,0x33,0xf9,0x8c,0xc4,0x60,0xa7,0xb7,0x34,0x93,
+ 0x5b,0x5f,0x2a,0x32,0x49,0xba,0xd5,0x43,0x15,0xda,0xbf,0x79,0x81,0x39,0x04,0x0e,
+ 0xd4,0xf4,0xb8,0xf4,0xd9,0x16,0xa0,0x92,0xdc,0x84,0xcc,0x52,0xcb,0x74,0xc3,0x00,
+ 0x6d,0x23,0x8f,0x6f,0xa5,0x0b,0x05,0xcc,0xb7,0x50,0x42,0x92,0xe5,0x5f,0x0a,0xcc,
+ 0xe7,0x86,0x6f,0xad,0x58,0xb5,0xd3,0x75,0x2d,0x46,0xee,0x0d,0xb1,0x38,0x8c,0xa9,
+ 0x53,0x29,0x60,0x0a,0x26,0x3d,0x7b,0x9e,0x7a,0x57,0x57,0x6f,0x65,0x67,0xa5,0x5a,
+ 0x40,0xb2,0x34,0xb7,0xae,0xe5,0xe4,0x50,0xc7,0x04,0x10,0x78,0x19,0xef,0x9f,0x4e,
+ 0xd4,0x45,0x5d,0xe8,0x24,0xef,0xa2,0x30,0xf4,0x9f,0x0f,0xea,0x17,0x3a,0x88,0x16,
+ 0xf1,0xaa,0x07,0x61,0xe6,0xb4,0xad,0xb7,0x68,0xe8,0x70,0x07,0x7e,0x6b,0xa4,0xd3,
+ 0xfc,0x31,0x6f,0x61,0x24,0xf6,0x77,0xb1,0xc7,0x75,0x2c,0x92,0x09,0x0b,0x4a,0xc5,
+ 0x55,0x54,0x02,0x57,0x68,0xef,0xdb,0x35,0x1b,0x6a,0xb6,0xdb,0xae,0x3e,0xcf,0x23,
+ 0xad,0xe0,0x8c,0x31,0x07,0x80,0xdc,0xf7,0xf7,0xeb,0x58,0x57,0x9a,0xd5,0xcd,0xcc,
+ 0x83,0xed,0x2a,0xeb,0x1b,0xa1,0x50,0xc5,0xf8,0x04,0x63,0xe6,0x1e,0x86,0xa2,0x2d,
+ 0xbd,0xc7,0x66,0xec,0x96,0xe7,0x5c,0x35,0x6b,0x6f,0xb4,0xfd,0xa5,0xd1,0xe3,0x98,
+ 0x2e,0x52,0x40,0xa7,0x8c,0x00,0x36,0xe4,0xf5,0x1f,0xca,0xb9,0x0d,0x43,0x5e,0x9a,
+ 0x70,0xb6,0xd6,0x10,0x18,0xe2,0x70,0xcc,0x54,0x00,0x4a,0x8c,0xfa,0xf7,0xe7,0xf9,
+ 0xd6,0x50,0x13,0x39,0x91,0x56,0x58,0xa5,0xf2,0xd0,0xb0,0x77,0x3c,0x36,0x7f,0xaf,
+ 0x4a,0xd1,0x86,0x35,0xcd,0xbb,0x3c,0x66,0xdd,0x59,0x48,0x56,0x88,0xe3,0x67,0xf8,
+ 0x0e,0x2a,0xb6,0xb1,0x32,0x76,0x10,0x79,0x79,0xb7,0x22,0x22,0xa3,0x76,0x19,0xc7,
+ 0x6e,0x32,0x78,0xad,0x9d,0x36,0xd9,0xe7,0x0d,0xe7,0xcd,0x30,0x00,0x92,0x11,0x9c,
+ 0x8d,0xab,0xd0,0x7f,0x3e,0x95,0x4e,0x29,0xa0,0x82,0x48,0xe4,0x4f,0xde,0xc6,0x8d,
+ 0xb3,0x32,0x0e,0x65,0x38,0xe7,0x1e,0xd5,0x5e,0x4b,0x99,0x2f,0x6e,0x26,0xde,0x8f,
+ 0x1c,0x6c,0xc0,0xb9,0x88,0x10,0xff,0x00,0x40,0x3f,0xcf,0x41,0x54,0xda,0x4a,0xec,
+ 0x97,0x25,0x77,0x62,0xed,0xcd,0xec,0x5a,0x6b,0xcf,0x6b,0x68,0x3c,0xe4,0x99,0xc2,
+ 0xbc,0x6b,0x1e,0xed,0xa3,0x8c,0x12,0x3b,0x1a,0x8e,0x4d,0x46,0x4b,0x7b,0x88,0x61,
+ 0x9a,0x39,0xa6,0x8c,0x21,0x76,0x8c,0x9d,0x9b,0xc1,0x1e,0xbe,0x94,0xfd,0x3e,0xc2,
+ 0x69,0xad,0x1e,0xee,0x14,0xbc,0x59,0x4b,0x31,0x40,0xb1,0x90,0xcd,0x83,0x8c,0x32,
+ 0xd7,0xa8,0x78,0x27,0xe1,0x86,0xa3,0xae,0xde,0x5b,0xdd,0xcb,0x71,0x3c,0xd1,0xaa,
+ 0xed,0x05,0xa3,0x18,0x0b,0xdb,0x23,0xd7,0xde,0x93,0x9c,0x52,0xe6,0x93,0x45,0xc6,
+ 0x17,0x69,0x27,0xad,0xcf,0x1e,0xb7,0x5d,0x42,0xe9,0x64,0xfb,0x3d,0x92,0x4b,0xb8,
+ 0x8c,0xa8,0x3c,0xc4,0x01,0xfe,0x13,0xf4,0xeb,0x5e,0xa1,0xe0,0xbf,0x00,0x6a,0x1a,
+ 0xc4,0x52,0x35,0xee,0x85,0x85,0x59,0x03,0x19,0x6e,0x98,0xa6,0xf5,0x23,0x82,0x07,
+ 0x7e,0xb5,0xf4,0x3f,0x86,0x3e,0x12,0x68,0x9a,0x2c,0xcb,0xaa,0x5f,0x5a,0x23,0xea,
+ 0x88,0x58,0xb3,0xa8,0xdc,0xb8,0x07,0x90,0x46,0x70,0x7b,0x76,0xaf,0x58,0x58,0x61,
+ 0x78,0x9a,0x31,0x68,0x2c,0xec,0x43,0x2b,0x18,0xd8,0x1c,0x13,0xd4,0x00,0x3a,0x81,
+ 0xde,0xb8,0x6a,0xd4,0xbb,0xb4,0x7a,0x19,0xce,0x0d,0x2b,0x23,0xcd,0xbc,0x31,0xf0,
+ 0x8b,0x45,0xb3,0x4b,0xc9,0xf5,0x2d,0x3a,0x3b,0xbb,0x56,0x11,0xb4,0x05,0x80,0x5f,
+ 0xb2,0xb8,0xeb,0x8c,0x1f,0xbb,0xef,0xeb,0x5e,0xb9,0x67,0x63,0x00,0x48,0x12,0x11,
+ 0xb6,0x55,0x24,0x29,0x74,0x03,0x6f,0x61,0x83,0xe9,0xc5,0x5c,0xb3,0x37,0xa8,0xb3,
+ 0xc3,0x1c,0xa4,0x70,0x1b,0x3e,0x83,0x3d,0x3d,0xc5,0x5e,0x88,0x91,0x28,0x2d,0x1a,
+ 0xed,0x03,0xc9,0xda,0x46,0x33,0xee,0x00,0xe9,0x59,0x36,0xde,0xa9,0xff,0x00,0x5e,
+ 0x85,0xc6,0xc9,0xde,0x3f,0xd7,0xa0,0xb8,0x97,0xce,0x26,0xe0,0xa4,0x51,0x48,0xc1,
+ 0x09,0xc6,0x76,0x01,0xe9,0x8a,0x59,0x50,0xf9,0xe9,0xfb,0xa6,0x8e,0x35,0x1b,0x43,
+ 0x81,0x96,0x38,0xf7,0xa8,0x56,0x40,0xd0,0x47,0x0a,0x2c,0x92,0x66,0x4c,0xb3,0x10,
+ 0x46,0xd1,0x9e,0xc4,0xfd,0x0d,0x5e,0x51,0xe5,0xaf,0xdb,0x18,0x42,0x57,0x19,0x0a,
+ 0x09,0xc8,0x1f,0x4e,0xf4,0x6a,0x95,0xec,0x16,0xd6,0xef,0x64,0x32,0x19,0x87,0x98,
+ 0xf3,0x2b,0x8d,0xca,0xa1,0x76,0x3c,0x78,0x52,0x47,0x62,0x7f,0xad,0x6a,0x71,0x38,
+ 0x12,0x05,0x03,0xcc,0x00,0x30,0x00,0x9d,0xbe,0xa7,0x27,0xd3,0x34,0xb6,0x76,0x71,
+ 0x4b,0x03,0x79,0xd2,0xee,0x04,0x16,0x25,0x81,0x24,0x7b,0x81,0xd4,0xd3,0xe6,0x8a,
+ 0x3b,0x93,0x6e,0x6d,0x75,0x03,0x02,0xa1,0x2c,0xea,0x23,0x38,0x6c,0x7a,0x7d,0x78,
+ 0xa4,0xfb,0xbd,0xc3,0x56,0x90,0xfb,0x78,0xc8,0xf3,0x65,0x69,0xee,0x65,0x70,0x32,
+ 0x08,0x40,0xd8,0x03,0xbf,0xd3,0x8a,0xb2,0x18,0xc8,0x8a,0x77,0x95,0x66,0x19,0x06,
+ 0x38,0xf0,0x7e,0xa0,0x0e,0x29,0x63,0x89,0x23,0x64,0x6b,0x42,0xe9,0x70,0xc3,0xac,
+ 0x83,0x3b,0x7d,0x82,0xfa,0x53,0xfc,0xc9,0x62,0x46,0x04,0xa1,0x81,0x50,0x33,0x61,
+ 0x7e,0x60,0xb9,0xea,0xa3,0xf5,0xac,0x6c,0xad,0x6d,0x02,0x4e,0xda,0xbd,0x8d,0x4b,
+ 0x74,0x72,0xdf,0xba,0x26,0x49,0x62,0x19,0x0f,0x9c,0x97,0xe0,0x75,0x23,0xf9,0x54,
+ 0xe9,0x3f,0x96,0x24,0x68,0xf7,0xa4,0x6e,0x30,0xa7,0x1c,0x1f,0x50,0x4d,0x67,0xaa,
+ 0x83,0x19,0x9a,0x09,0xe4,0x5d,0x8d,0x84,0x84,0x28,0x05,0x81,0xee,0x7e,0xb5,0x6d,
+ 0x70,0x89,0x0c,0xf7,0x4e,0xbe,0x56,0xe0,0xcf,0x18,0x1c,0x37,0xf8,0x74,0xeb,0x54,
+ 0xae,0xde,0xf7,0x1b,0xd1,0xb4,0xd7,0xcc,0x58,0xee,0x66,0x95,0xfc,0x87,0x7c,0x32,
+ 0x28,0x0c,0xe4,0x7d,0xff,0x00,0x6c,0x7e,0x55,0x65,0x0a,0xf9,0x8e,0x1d,0xbe,0xd8,
+ 0x80,0x6d,0x46,0xc6,0x4a,0xf1,0xc8,0xf6,0x1c,0xd5,0x29,0x0c,0x32,0xcb,0xbe,0x68,
+ 0xbc,0x98,0x54,0x92,0xdb,0x57,0x27,0x9e,0x80,0x55,0xad,0x90,0xee,0x40,0xff,0x00,
+ 0x69,0x40,0x06,0xd0,0x43,0x61,0x4f,0xd5,0x47,0xf8,0xd4,0xe8,0xd6,0xaf,0xfe,0x09,
+ 0x31,0x7a,0x3b,0x34,0xd1,0x20,0x8d,0xbe,0xca,0x18,0x34,0xd1,0x5d,0x96,0x3b,0x42,
+ 0x63,0x2e,0x07,0xad,0x53,0x69,0xac,0x45,0xd1,0x8a,0xe6,0x63,0x3c,0xee,0xdb,0x52,
+ 0x43,0x90,0x48,0x03,0x38,0x23,0xb6,0x29,0xaa,0x91,0x34,0xf1,0xc9,0x09,0xbc,0x68,
+ 0xa2,0x20,0x2e,0xe4,0x2a,0x54,0x93,0xce,0x3d,0x47,0x5a,0xb4,0xc9,0x15,0xcb,0x19,
+ 0x77,0x5b,0x24,0x6e,0xce,0x50,0x0f,0xbc,0x47,0xb8,0xed,0xd3,0x8c,0xd3,0xbb,0x7b,
+ 0x83,0xb3,0x56,0x44,0xfb,0xdf,0x1b,0xcb,0x90,0x48,0x0b,0x19,0x07,0xe6,0x20,0xf1,
+ 0x82,0x07,0xe3,0x53,0x44,0x2d,0xe2,0x97,0x6b,0x96,0x98,0x9e,0x58,0x4a,0x84,0x80,
+ 0x71,0xd8,0xfe,0x55,0x25,0x9b,0x18,0x49,0x40,0xca,0x51,0x41,0x20,0x30,0x3f,0x37,
+ 0xf8,0xd3,0xd5,0x58,0x98,0x21,0x32,0xfe,0xf5,0xb2,0x57,0x2a,0x46,0xe2,0x79,0xe4,
+ 0xd6,0x5a,0xad,0xcd,0x6d,0xd5,0x12,0x45,0x05,0xc2,0x4a,0x9e,0x7b,0xca,0x24,0xc8,
+ 0x90,0x01,0xce,0xe5,0xf7,0xfd,0x2a,0x47,0xb6,0x92,0x69,0x59,0x2c,0xed,0xf1,0x8e,
+ 0x46,0x0e,0x00,0xf7,0x19,0xef,0xd6,0x9e,0x66,0x85,0xd2,0x4b,0x9b,0x97,0x73,0x6d,
+ 0x1a,0x9d,0x9b,0x46,0x19,0x8f,0xf5,0xad,0x08,0x6c,0xcd,0xc2,0x45,0x24,0xcd,0x21,
+ 0x02,0x30,0xf9,0x56,0x2a,0x5c,0x9f,0x51,0xed,0xcd,0x3b,0x59,0xdc,0x69,0xdd,0xe9,
+ 0xa9,0x96,0xe1,0x43,0x4f,0x0c,0x52,0x38,0x90,0x20,0x70,0xc1,0x0a,0x8e,0x9d,0x30,
+ 0x6a,0x58,0x04,0x4c,0xb1,0xf9,0x13,0x94,0x62,0xe1,0xca,0x67,0x24,0x9f,0x5c,0x1e,
+ 0xf5,0xb0,0xd1,0xac,0x0f,0x1c,0x2c,0xad,0x32,0x95,0xdd,0xb1,0x81,0xe3,0xd4,0x66,
+ 0xaa,0xc3,0x11,0x9a,0xec,0x4a,0x55,0x8c,0x4a,0x33,0x93,0xf2,0xed,0xe3,0xa6,0x3b,
+ 0xd0,0xae,0xb7,0x12,0x77,0x76,0x4f,0x52,0xd9,0x64,0x9c,0xdc,0xdc,0x46,0x85,0x7e,
+ 0x65,0x2d,0x1b,0xf5,0x93,0xdf,0x1e,0xb5,0x35,0xb4,0x8f,0xb6,0x56,0x04,0xc7,0xe6,
+ 0x86,0x50,0x1c,0x10,0x10,0x67,0xa7,0xd6,0xa0,0x33,0xc9,0x20,0x32,0x46,0x6e,0x1d,
+ 0x90,0x9c,0xb0,0x4c,0x02,0x3a,0x62,0xa2,0x86,0x49,0x64,0x64,0x96,0x26,0x26,0x31,
+ 0xc2,0xaa,0x0c,0x14,0x3e,0xa4,0x1e,0xf5,0x3d,0x3b,0x06,0xb7,0xba,0xd4,0x0a,0xcc,
+ 0xb1,0x3b,0xbc,0x52,0xb9,0x51,0xb5,0x19,0x46,0x77,0x73,0xd0,0x9f,0x4e,0x2b,0x5a,
+ 0xda,0xdb,0xcd,0x02,0x43,0x19,0x2a,0xa7,0x20,0x16,0xc6,0x78,0xe8,0x05,0x40,0x91,
+ 0x32,0xc7,0x11,0x57,0x31,0x6d,0x62,0xc5,0xbc,0xdc,0x93,0x9f,0x5f,0xd6,0xb6,0x7c,
+ 0xa0,0x86,0x38,0x87,0xde,0x03,0x71,0x75,0x5e,0x06,0x7a,0x80,0x6a,0x1b,0x57,0xb2,
+ 0x60,0xf4,0x6f,0xb6,0x83,0x1d,0x84,0x65,0x43,0xc8,0x0a,0xa9,0xf9,0x16,0x43,0x92,
+ 0x3d,0x87,0xa5,0x49,0x13,0x12,0x03,0xc3,0x1c,0x6b,0x1b,0x95,0xc1,0x27,0x1c,0x63,
+ 0x9c,0x8f,0xce,0xa7,0x68,0x8c,0x71,0x34,0x4a,0x16,0x42,0x41,0x21,0x08,0xf9,0x9f,
+ 0x8e,0xb9,0xf6,0xa6,0x44,0xa6,0xdc,0xc6,0xaf,0xe6,0x3c,0xb8,0x20,0x06,0x00,0x67,
+ 0xdc,0xd4,0xad,0x37,0x1a,0xbd,0xda,0x5b,0x0e,0x40,0x51,0x23,0x58,0x83,0x95,0x2e,
+ 0x59,0x25,0xd9,0xc0,0x18,0xe4,0x1a,0x6a,0x5a,0x5b,0xee,0x73,0x25,0xcb,0x21,0x07,
+ 0x7a,0xa4,0x40,0x8f,0x34,0xe7,0xa1,0x3e,0xde,0xd4,0xbe,0x60,0x62,0x12,0x5d,0xe6,
+ 0x47,0x24,0x04,0x50,0x76,0xa8,0x15,0x64,0x24,0x4c,0xd1,0x31,0xdf,0x34,0xaa,0x0b,
+ 0x21,0x04,0x8c,0x7d,0x07,0xa7,0x34,0xaf,0x6d,0xc4,0x9a,0x76,0x4b,0x61,0x66,0xb7,
+ 0x61,0x27,0xda,0x21,0x51,0x24,0x2c,0x32,0x11,0x46,0x08,0x6f,0x7f,0x7a,0x8e,0x18,
+ 0xaf,0x1d,0xe2,0x87,0x6a,0x99,0x08,0x3b,0x41,0xc6,0x19,0x7d,0x2b,0x46,0xdd,0x7e,
+ 0x6f,0x24,0xc8,0x50,0x48,0x01,0x5c,0x1e,0x5b,0xfd,0x9c,0x76,0xab,0xcf,0x04,0x8f,
+ 0x19,0x8f,0x6c,0xa2,0x3d,0xc4,0xb0,0x55,0xc0,0x03,0xbf,0x34,0xd7,0x92,0x06,0xf4,
+ 0xb5,0x8c,0x3b,0x98,0x5f,0xc9,0x05,0x98,0x46,0x77,0x63,0x69,0x41,0xf2,0xf1,0xd8,
+ 0xfa,0x55,0x24,0xb0,0x9a,0xe7,0xcb,0xc4,0xad,0x96,0x62,0x08,0x20,0x2b,0x37,0xb8,
+ 0x3d,0xeb,0xa9,0x96,0x03,0xe4,0x34,0x6f,0x14,0x6b,0x1b,0x2e,0xd8,0xcb,0x92,0x0f,
+ 0x5e,0x32,0x69,0x2d,0xed,0x84,0x09,0x9d,0xd2,0x48,0xe5,0x71,0x2b,0x81,0xfe,0xa9,
+ 0xc7,0x65,0xf6,0xe9,0x43,0xbb,0x57,0x46,0x4e,0xc9,0x9c,0xab,0xe9,0x91,0xa5,0xc8,
+ 0x99,0xa0,0x95,0x95,0x57,0x12,0x12,0x39,0x71,0xed,0xed,0x55,0xe7,0xb1,0x49,0x6d,
+ 0xef,0x3c,0x88,0xfc,0xc6,0xf9,0x70,0xa1,0x70,0x47,0xbe,0x3b,0x62,0xbb,0x06,0x80,
+ 0x4c,0xa1,0x56,0x59,0x95,0x88,0x3b,0x5c,0x2e,0x48,0x3e,0xf4,0xe1,0x6f,0x1c,0x4e,
+ 0xad,0x34,0xd2,0xc0,0xcc,0xbc,0xca,0x0f,0x41,0xec,0x3d,0xea,0xe3,0x7b,0x5d,0x82,
+ 0x4d,0x6a,0x70,0x56,0x3a,0x0c,0xc7,0xed,0x6c,0xd1,0xcb,0x3e,0x79,0x8d,0x33,0xd7,
+ 0xb6,0x0f,0xa7,0x4a,0xe4,0x75,0xbd,0x13,0x4f,0xb5,0x84,0x5c,0xbb,0xb3,0xba,0x80,
+ 0xa2,0x24,0x5f,0xbc,0x7b,0x86,0x35,0xed,0xf1,0x89,0x04,0x2b,0x6d,0xe4,0xc8,0x1a,
+ 0x42,0x50,0x3c,0x68,0x77,0x20,0xec,0x4f,0xe7,0x5e,0x63,0xe3,0x0b,0x35,0xb7,0xd3,
+ 0x2f,0xd9,0x10,0x5b,0xf9,0x2b,0xb8,0x31,0x7c,0xb3,0x1c,0xf7,0x1e,0xf9,0xaf,0xb6,
+ 0xe1,0x28,0x73,0xe2,0xa1,0x1b,0xea,0xdd,0x8f,0x9a,0xe2,0x1a,0xce,0x96,0x1a,0x53,
+ 0x4b,0x64,0xd9,0xf2,0xaf,0x89,0x2e,0x61,0xb9,0x9a,0x25,0x8a,0x05,0x81,0x2d,0xe4,
+ 0x25,0x63,0x50,0x06,0x38,0xe7,0x35,0xcc,0xb2,0x31,0x55,0xb9,0x1e,0x60,0x57,0x25,
+ 0x55,0x00,0xe0,0x0f,0x5c,0x56,0x97,0xdb,0x56,0x27,0x95,0xaf,0x1e,0x21,0x79,0x2b,
+ 0xef,0x78,0x99,0x0f,0xee,0xfd,0x85,0x56,0xb6,0xd8,0x43,0x34,0x2d,0x22,0x96,0xea,
+ 0x4b,0x67,0x3e,0xc3,0xd0,0x73,0x5f,0xdc,0xd9,0x75,0x38,0xd3,0xa3,0x1a,0x71,0x7a,
+ 0x24,0x7f,0x20,0xe3,0xaa,0xca,0x75,0x5d,0x49,0xbd,0x58,0xb1,0x46,0x52,0x16,0x95,
+ 0x0c,0x41,0xcf,0x47,0x55,0xc6,0x0f,0x61,0x9a,0x8f,0xfd,0x60,0x39,0x8f,0x0e,0x83,
+ 0x00,0xb3,0x60,0x63,0xb9,0x35,0x79,0x23,0x90,0x85,0x8c,0x2c,0x6a,0xca,0x4b,0xa9,
+ 0x23,0x21,0xbd,0x8d,0x56,0xc4,0x85,0x55,0xa6,0x89,0x1c,0x4c,0x19,0x98,0x29,0xca,
+ 0x81,0xe9,0x5e,0x82,0xd3,0x46,0x79,0xb7,0xd6,0xec,0xad,0x2c,0x71,0x43,0xb9,0x6e,
+ 0x5b,0xef,0x36,0xe2,0x4a,0xe7,0x77,0xbe,0x7d,0x29,0xb1,0xbf,0x97,0x2c,0xd1,0x42,
+ 0x60,0x94,0x0c,0x15,0xc8,0xe4,0x91,0xd8,0x03,0xf8,0x54,0xf2,0xc4,0xd2,0xed,0x46,
+ 0x78,0xd0,0x07,0x00,0x10,0x00,0x03,0x9e,0xf5,0x4a,0x79,0x5a,0x07,0xfb,0x43,0xca,
+ 0x7c,0xdd,0xc5,0x87,0x00,0xf7,0xe8,0x2a,0x2a,0xcd,0x25,0xa9,0xb5,0x3b,0xc9,0xd8,
+ 0xa9,0x73,0x71,0xb0,0xba,0xc7,0x19,0xf2,0xc2,0x92,0xe4,0x8e,0x5b,0x3d,0x4e,0x3b,
+ 0x0a,0xe4,0x6e,0x89,0x80,0x30,0x81,0xcc,0xae,0x18,0x2a,0xbc,0x87,0x84,0x5c,0xf2,
+ 0x6b,0x6e,0xfe,0x48,0xcc,0xb7,0x0b,0x14,0xc6,0x62,0xca,0x37,0x6e,0xc8,0x31,0x82,
+ 0x7d,0x3d,0x6b,0x9e,0x9c,0xc6,0x8c,0xd0,0x22,0xc9,0x33,0x91,0x9f,0x90,0xf2,0x4e,
+ 0x3b,0x9a,0xf2,0xab,0xe2,0x22,0xde,0x87,0xbf,0x81,0xa3,0x6e,0x86,0x14,0x92,0x49,
+ 0x34,0xf2,0x62,0xe1,0x99,0x09,0x2c,0x02,0x81,0x83,0xcf,0x51,0x51,0x35,0xd4,0x50,
+ 0xc4,0x89,0x71,0x26,0xc8,0x99,0x4b,0x02,0x14,0x6d,0x53,0xfd,0xd3,0xdf,0x9a,0x1d,
+ 0xfe,0x79,0x22,0x8d,0x23,0x24,0x10,0x36,0xa8,0xc9,0x8f,0xf1,0xf4,0xe6,0xb0,0xae,
+ 0x15,0x71,0x38,0xfb,0x9d,0x94,0x96,0xc8,0x18,0xf6,0xf4,0xed,0x5e,0x3d,0x5a,0xd6,
+ 0x7a,0x6c,0x7d,0x4d,0x0a,0x2a,0x4a,0xdd,0x0d,0xcf,0xed,0x0b,0x67,0x89,0x52,0x38,
+ 0xf6,0x4c,0x79,0x67,0x2b,0xc1,0x20,0xf6,0xa7,0x25,0xc2,0x4b,0x16,0x51,0x97,0xcb,
+ 0x2c,0x18,0x02,0x39,0x2b,0x9e,0x40,0xae,0x59,0x8e,0xc8,0xfc,0xe8,0xf2,0xcd,0x90,
+ 0x58,0x32,0x1d,0xcb,0xce,0x3f,0x2a,0xb5,0xe6,0x4b,0x1c,0x91,0xf9,0x1b,0x38,0x00,
+ 0x31,0x75,0x1f,0x2f,0x1d,0xbd,0xab,0x9d,0x57,0x77,0xd8,0xe9,0x96,0x0d,0x25,0xa1,
+ 0xd0,0x3d,0xc2,0x22,0xa3,0x79,0x42,0x71,0x9e,0x40,0x53,0x8c,0xf5,0xe7,0xf0,0xa9,
+ 0xad,0x9a,0xde,0x46,0x3e,0x74,0x72,0xec,0x60,0x64,0x20,0x92,0x18,0x8e,0xa3,0x8a,
+ 0xc3,0x17,0x8f,0xb4,0xf9,0xb2,0x61,0x49,0xc0,0x2a,0xb8,0x0a,0x7e,0x9f,0xd6,0xb5,
+ 0x61,0xb9,0x53,0x1b,0x48,0x64,0x96,0xe1,0x11,0xb0,0xca,0x0f,0xce,0x47,0xfb,0x27,
+ 0xf1,0x15,0xdb,0x4e,0x69,0xbb,0xdc,0xe4,0xa9,0x45,0xa4,0x5f,0x4f,0x2c,0xc6,0xe5,
+ 0x81,0xde,0xee,0x1d,0x57,0x39,0x2b,0xef,0x5b,0x88,0xa8,0x16,0x36,0x69,0x43,0x86,
+ 0x60,0xc5,0x81,0x3f,0x37,0x6e,0x07,0x63,0x59,0x6b,0x25,0xbf,0x99,0x6b,0xb1,0x64,
+ 0x89,0x9d,0x19,0xd8,0xe3,0x88,0xf9,0xe8,0x4d,0x6c,0xc4,0x1d,0x84,0x46,0x23,0x10,
+ 0x66,0x04,0x72,0xa4,0xee,0x39,0xee,0x7d,0x79,0xaf,0x4e,0x8e,0xbb,0x9e,0x4e,0x2a,
+ 0x4d,0x2b,0x33,0x4e,0x06,0xc4,0x9b,0x80,0x2c,0x19,0x48,0xdc,0x0f,0x2a,0x0f,0x62,
+ 0x2a,0xc4,0x7e,0x5a,0x02,0x92,0xc7,0x1c,0x51,0x2e,0x46,0x58,0x72,0x78,0xf4,0xa6,
+ 0xc1,0x6e,0xcf,0x98,0xa4,0x91,0x43,0x2a,0x86,0x63,0x8c,0x63,0xdf,0x3f,0x81,0xab,
+ 0x70,0x46,0x50,0xa7,0x96,0x18,0x2b,0x36,0x00,0x60,0x09,0x7f,0xf3,0x9a,0xf5,0x69,
+ 0xed,0xcc,0x8f,0x0e,0xac,0x92,0xd8,0x8f,0x7f,0x9b,0xb2,0x64,0x6c,0x42,0xe3,0xe4,
+ 0x52,0x0f,0xc8,0x07,0xa8,0xfc,0xaa,0x78,0xa0,0x67,0x69,0x11,0x01,0x91,0x80,0xc8,
+ 0x52,0xa7,0xe5,0x1d,0x73,0x9a,0x91,0x6d,0xe0,0x42,0xad,0x82,0x58,0x12,0xd9,0x07,
+ 0x18,0xe7,0xa0,0x14,0xf9,0x0f,0x98,0x10,0x99,0xa5,0xb7,0x42,0xc0,0x15,0x66,0xc8,
+ 0x61,0x9e,0x87,0x1d,0xeb,0xa5,0x6a,0xb4,0x38,0xe5,0x34,0xf4,0x43,0x7c,0xa8,0x58,
+ 0x2e,0xd7,0x99,0xc3,0xf3,0x80,0xd8,0xcb,0x75,0xc9,0xa1,0x11,0x5c,0x07,0x2f,0xb4,
+ 0x29,0xdb,0x21,0x23,0x18,0xe3,0xd2,0x9c,0x30,0x8a,0xec,0x77,0x37,0xca,0x43,0x48,
+ 0xbd,0xbe,0xa0,0x54,0xab,0xe5,0x2c,0x4a,0x1c,0xa8,0x4d,0xd8,0x2b,0xbb,0x39,0xcf,
+ 0xf5,0xaa,0xb5,0xcc,0x5c,0x99,0x54,0x05,0x2b,0xbc,0x33,0xc8,0xa0,0x65,0x50,0x8e,
+ 0x87,0xd4,0x9a,0x0c,0x32,0xce,0x63,0x48,0xc3,0xc5,0x32,0x92,0x4a,0xa3,0x00,0x1b,
+ 0x8e,0xbe,0xe7,0xad,0x4a,0x58,0x49,0x0b,0x34,0x78,0xda,0xac,0x15,0x8b,0x1e,0x83,
+ 0xfc,0xe6,0x9e,0xe3,0xe7,0x67,0x3b,0x63,0x40,0xdb,0x95,0x76,0xe7,0x8f,0xc3,0xf1,
+ 0xaa,0x5a,0x3b,0xfa,0x87,0x33,0x5a,0x91,0xac,0x03,0xcc,0x01,0x63,0x81,0xa4,0x75,
+ 0x19,0x3e,0x84,0x7b,0x74,0xcf,0x4a,0x8e,0x34,0x76,0x94,0x01,0x12,0xec,0x04,0xe0,
+ 0x8c,0x02,0xc3,0xb8,0x14,0xbb,0xa3,0x2e,0x5e,0x34,0x96,0x58,0x40,0xc9,0x20,0x60,
+ 0xa8,0xf5,0xc5,0x3d,0x18,0x7c,0x87,0x63,0xa3,0x02,0x19,0x0a,0x9e,0xb9,0x1e,0xff,
+ 0x00,0x5a,0x2d,0x6d,0x3a,0x8d,0xb7,0xd4,0x8a,0xe0,0x19,0x9a,0x1c,0x08,0xe2,0x65,
+ 0x24,0x92,0x17,0xee,0xaf,0xa6,0x3b,0x9e,0xb4,0x60,0x22,0xbb,0x4c,0xa8,0xc0,0x80,
+ 0x76,0x97,0x3c,0x0e,0xdc,0xfa,0xd5,0x97,0xb9,0x56,0x05,0x4b,0x15,0x0a,0xd9,0x6d,
+ 0xcb,0x8c,0x1f,0x4c,0xfb,0xd0,0x52,0x20,0xa1,0x23,0x5f,0x33,0x7f,0x24,0x8e,0x8a,
+ 0x7a,0xf1,0x50,0xed,0x60,0xe6,0x76,0x49,0x95,0x11,0x4f,0x9f,0xbc,0x46,0xe0,0x9c,
+ 0xb3,0x33,0x72,0x00,0x23,0xa6,0x2a,0x48,0x95,0x84,0x2b,0x95,0x2c,0x81,0x98,0x30,
+ 0xc7,0x1c,0x74,0x6c,0x55,0x81,0x39,0x28,0xc2,0x28,0xd9,0xca,0x7c,0xae,0x49,0x23,
+ 0x03,0xfb,0xc7,0xf3,0xa6,0x48,0x91,0xed,0x63,0x0c,0xa5,0xa0,0x27,0x6a,0x93,0xfc,
+ 0x27,0xbf,0xe7,0x4f,0x96,0xca,0xe0,0xe4,0xdb,0xd4,0xaf,0x3a,0xb9,0x91,0x8c,0x6e,
+ 0x25,0x84,0xf2,0x59,0x46,0x02,0x8f,0x42,0x29,0xca,0xaf,0x1a,0x2c,0x0c,0x18,0xf3,
+ 0xf3,0x33,0x8c,0xe5,0x7d,0xaa,0x79,0x3f,0xe5,0xbd,0xc3,0xa1,0x57,0x2a,0x0e,0xc8,
+ 0xc8,0xda,0x38,0xc0,0xcf,0xbd,0x43,0x8f,0x2d,0x08,0x4f,0x94,0x90,0x36,0x86,0x27,
+ 0x29,0x9e,0xd9,0xac,0x5a,0x6b,0x46,0x3e,0x66,0xd5,0x81,0xd8,0x9d,0xb1,0xab,0x80,
+ 0xaa,0x70,0x48,0x51,0x93,0xef,0x50,0x94,0x32,0xb5,0xc3,0x86,0x45,0x8c,0x31,0x08,
+ 0xb9,0x3d,0x31,0x4a,0xdb,0x64,0x91,0x4f,0x98,0xe8,0x89,0xc1,0xe7,0x2c,0xc7,0x1d,
+ 0xcf,0xa7,0xf8,0xd4,0xd2,0x33,0x81,0x2b,0x31,0x8c,0x60,0x85,0x52,0x46,0xde,0x4f,
+ 0xa6,0x2a,0x24,0xb4,0xb0,0xd6,0x9b,0x10,0xbe,0xd4,0x89,0x26,0x21,0x5e,0x3c,0x6d,
+ 0x27,0xae,0x46,0x31,0xd2,0x9e,0x21,0x8e,0x48,0xd1,0x58,0xfe,0xf0,0x49,0x94,0x60,
+ 0x00,0x18,0xc7,0x43,0xf9,0xd4,0x65,0xe4,0x85,0xdc,0x3a,0x3b,0x28,0x20,0x31,0x55,
+ 0xeb,0xcd,0x58,0x78,0xe4,0xd8,0x89,0x16,0xd3,0x03,0x12,0x49,0x51,0xca,0x9c,0xfa,
+ 0xd4,0xc9,0x36,0x92,0x29,0xbb,0x34,0x54,0x71,0x1f,0x99,0x20,0x50,0x59,0xd0,0x82,
+ 0x1b,0x04,0xee,0xf5,0x18,0xfc,0x2a,0x10,0x8c,0xd8,0x71,0x1b,0x27,0x19,0x55,0x00,
+ 0x63,0x6f,0xf9,0x35,0x61,0xd8,0xab,0xf9,0x3b,0x40,0x51,0xc8,0x7d,0xc7,0x0d,0xfe,
+ 0xce,0x7f,0x2a,0x4f,0xb3,0xa4,0x99,0x0d,0x33,0xab,0xa0,0xda,0x06,0xe1,0x84,0xff,
+ 0x00,0x1a,0xe5,0x95,0xbe,0x24,0x6a,0x9e,0x80,0xa9,0x84,0x90,0x4a,0x16,0x04,0x58,
+ 0x7c,0xc0,0xe4,0x83,0xb3,0x27,0xb5,0x42,0xc1,0xc8,0xc3,0x32,0xe7,0xd8,0x0f,0x9b,
+ 0x8f,0x4f,0xeb,0x53,0x15,0x9a,0x2f,0x2d,0x8c,0x42,0x58,0x9b,0x81,0x23,0x01,0xf3,
+ 0x63,0xb6,0x3d,0x2a,0x32,0xeb,0x87,0x7d,0x87,0x7b,0x0c,0x12,0x4e,0x00,0xe7,0xa0,
+ 0xa9,0xa8,0x92,0xdc,0xa8,0xbb,0xbd,0x08,0x27,0x8c,0x7e,0xed,0x80,0xf3,0x10,0xaf,
+ 0x00,0x8f,0x9b,0x77,0xa5,0x66,0xc5,0x2c,0x57,0x38,0x00,0xc6,0xcc,0x8f,0x90,0x54,
+ 0x8c,0x9f,0x62,0x2b,0x42,0xee,0x45,0xf2,0xb6,0x3c,0x92,0x44,0x8a,0x01,0x2a,0xa4,
+ 0x9d,0xa7,0x3f,0xc2,0x7f,0x0a,0xa5,0xa6,0x23,0xb5,0xc8,0x22,0x05,0x46,0x70,0x5c,
+ 0x30,0x00,0x17,0x6f,0x56,0x3d,0xb1,0x5f,0x95,0xf8,0x93,0x8f,0x86,0x1f,0x01,0x39,
+ 0xc9,0xea,0x8f,0xd2,0xbc,0x34,0xcb,0xe5,0x8a,0xcc,0xa1,0x4f,0xa7,0x52,0xc2,0x16,
+ 0x17,0xc5,0xe0,0x3b,0xae,0x18,0xec,0x74,0x2b,0x8d,0xe7,0xb0,0xc7,0x4c,0x57,0x98,
+ 0x7c,0x50,0x96,0x08,0x73,0x69,0x3a,0xf9,0xa4,0x7f,0xad,0x68,0xdb,0x25,0x1b,0x1f,
+ 0x70,0x11,0xdb,0x91,0x5e,0xb2,0xb7,0x71,0xda,0xcb,0x3c,0xf7,0x8c,0x2d,0x22,0x45,
+ 0x20,0x3b,0x60,0x2b,0x49,0x8e,0x09,0x3f,0x95,0x7c,0xa7,0xe3,0x1d,0x5a,0xea,0xeb,
+ 0x5b,0xd4,0xb4,0xf9,0x5a,0x4d,0xe6,0x40,0x23,0x9d,0x48,0x29,0x23,0x60,0x1c,0x81,
+ 0xd3,0xd6,0xbf,0x88,0x70,0x3f,0xbd,0xae,0xe6,0xdf,0x99,0xfd,0xc9,0x99,0x35,0x47,
+ 0x0c,0xa9,0xbd,0xb6,0x38,0x0f,0x3a,0x25,0x92,0x65,0x89,0x84,0xea,0xcf,0xb9,0x5d,
+ 0xc1,0x04,0x2f,0xf7,0x4f,0xd2,0x89,0x1e,0x36,0x45,0xde,0xce,0x54,0x13,0x93,0x8e,
+ 0x57,0xdb,0x3e,0x9c,0xd4,0xb3,0xc3,0x1e,0x43,0x2c,0x2d,0x14,0xe3,0x3b,0xc1,0x38,
+ 0xc8,0x3d,0x0f,0xf3,0xa8,0x4c,0x22,0x38,0x1c,0x12,0x77,0x13,0xb4,0x64,0x7d,0xff,
+ 0x00,0x6c,0xfb,0x57,0xd2,0xd9,0x2b,0x24,0x7c,0x17,0xc2,0xec,0x3c,0xcd,0x24,0x61,
+ 0x24,0xb7,0xb7,0x4f,0x38,0x9c,0x00,0xdd,0x09,0xed,0x9a,0xa0,0x3c,0xd0,0x5b,0xcd,
+ 0x55,0x0e,0x41,0x06,0x35,0xfb,0xbf,0x85,0x58,0x69,0x23,0x58,0x41,0x7b,0x96,0xde,
+ 0xaa,0x40,0x56,0xec,0xa7,0xd0,0xfa,0xe6,0xa1,0x82,0x21,0x6d,0x08,0x66,0x7b,0xab,
+ 0xc0,0x48,0x90,0x4e,0xe7,0xe6,0x45,0xc6,0x36,0xf3,0xef,0x8a,0x13,0x56,0x2a,0x4d,
+ 0xdc,0x8a,0x72,0xc1,0xbc,0xc0,0x16,0x67,0x11,0x80,0x14,0x0c,0x79,0x7e,0xe4,0xd5,
+ 0x95,0x99,0x15,0x00,0x86,0x35,0x91,0xdc,0xe2,0x32,0x0f,0x04,0xf7,0xa6,0xec,0x01,
+ 0xd5,0x54,0xb1,0x04,0x16,0xce,0x0f,0x4f,0xf6,0xaa,0x05,0x22,0x68,0xce,0xd8,0xde,
+ 0x68,0xce,0x43,0x32,0x1c,0x6d,0x1e,0xdf,0xe3,0x55,0xa6,0xc4,0x4a,0xe9,0xde,0xe6,
+ 0x94,0x91,0xf0,0x24,0x90,0xbb,0x31,0x5d,0xcd,0xb4,0x63,0x77,0xae,0x69,0x77,0xa1,
+ 0xfb,0x0c,0x91,0xbf,0x93,0x21,0x7d,0x9b,0x31,0x93,0x27,0xb0,0xa8,0x7f,0xd1,0xe2,
+ 0x8a,0x01,0xbd,0xd6,0xe4,0x00,0x42,0x64,0x9c,0x8f,0x73,0x52,0xdb,0x30,0x56,0xdf,
+ 0x11,0x67,0x85,0x8e,0x63,0x95,0x9b,0x07,0x77,0x5e,0x3d,0x29,0xe9,0xbb,0x33,0x6d,
+ 0x26,0xd2,0x64,0x87,0xc9,0x32,0xc9,0x07,0xce,0x42,0xbe,0x11,0x40,0xc6,0x70,0x7f,
+ 0x8b,0xd3,0xbd,0x3a,0x1f,0x35,0x65,0x3e,0x6e,0x50,0x6f,0x3b,0x4a,0x81,0xc7,0xa0,
+ 0x02,0x9b,0x29,0xb9,0x31,0xc9,0x00,0x78,0x83,0x74,0x46,0x50,0x01,0x1f,0x5c,0xd4,
+ 0x51,0x4b,0x22,0x85,0xb3,0x04,0x24,0x9b,0x77,0x49,0x23,0x0f,0xbb,0xeb,0xc9,0xa4,
+ 0xae,0xd6,0xa3,0x4e,0xd2,0x44,0x97,0x11,0x5c,0x16,0x7b,0x8f,0x2b,0xe4,0x38,0x65,
+ 0x2c,0xf9,0x04,0x7a,0x11,0xeb,0xcd,0x3d,0x67,0xb7,0x51,0xe6,0x0c,0x25,0xa1,0x3b,
+ 0xd9,0x19,0x39,0xdc,0x3f,0xfd,0x54,0xe4,0x8e,0xcc,0x25,0xb7,0x94,0x26,0xf2,0xcb,
+ 0x13,0xb9,0xd8,0x92,0x4f,0xb0,0x35,0x04,0xb2,0x49,0x88,0x0c,0x33,0x08,0x95,0x9c,
+ 0xa1,0xca,0x83,0x90,0x7b,0x1f,0xd6,0xb2,0xde,0xe9,0x93,0x76,0x95,0xdd,0xae,0x68,
+ 0xb5,0xea,0xcc,0x24,0x36,0xf0,0xc7,0x24,0x45,0x43,0xc8,0xa4,0x6d,0xe3,0xb1,0xaa,
+ 0xd2,0x9d,0xf7,0x2c,0xd8,0x2c,0x5d,0x41,0x85,0x40,0x23,0xaf,0x50,0x05,0x2c,0x51,
+ 0x96,0x6d,0xf1,0x2a,0x2f,0x99,0xf2,0x8c,0x31,0x6d,0xd8,0xed,0xed,0x4d,0x8e,0x06,
+ 0x2d,0x6f,0x1a,0xbc,0x92,0x30,0x39,0x0e,0x3f,0x80,0x0e,0xe6,0xa5,0xd9,0xbb,0x83,
+ 0xba,0x63,0xe1,0x46,0x69,0xe5,0x9a,0x78,0xda,0x06,0x0c,0x32,0x8a,0x32,0x08,0xe9,
+ 0x91,0xed,0x56,0xad,0x63,0x94,0xf9,0xb3,0xc6,0x72,0x44,0xa0,0x81,0x90,0x0b,0x0a,
+ 0x7a,0xa4,0x39,0x96,0x45,0x99,0xb6,0xc8,0x32,0x58,0x2f,0xe8,0x7d,0x0d,0x48,0xf0,
+ 0xa6,0x03,0x16,0x22,0x00,0x01,0x27,0x6f,0x47,0xec,0x09,0xfc,0xeb,0x16,0xd0,0xd7,
+ 0x46,0x87,0xfd,0x94,0x47,0x6f,0x77,0x71,0x1c,0x91,0xc5,0xe6,0xb6,0xf5,0x8d,0xdc,
+ 0xb1,0x42,0x0e,0x2a,0x78,0x62,0x90,0x96,0x86,0xed,0x0a,0x66,0x3f,0x33,0x70,0x18,
+ 0xe9,0xd0,0xd4,0x42,0xce,0xea,0x5b,0x81,0x31,0x36,0xf3,0xdb,0xc6,0x40,0x08,0x10,
+ 0x92,0xe7,0xdc,0xf3,0xc5,0x74,0x32,0x24,0x89,0x14,0x6d,0x24,0x61,0xe7,0x41,0xe5,
+ 0xa3,0x60,0x00,0xd9,0xf5,0x03,0xb8,0xcd,0x28,0xdd,0x26,0x9e,0xac,0xcd,0xeb,0xae,
+ 0xc6,0x65,0xba,0x5b,0x42,0x19,0x9a,0x44,0x46,0x72,0x24,0x91,0x51,0x72,0x1d,0x80,
+ 0xe9,0xc7,0x4c,0x8a,0xd9,0x8a,0xd9,0xa4,0x32,0x4e,0xb1,0x85,0x24,0xee,0x11,0x81,
+ 0x80,0xca,0x7a,0xfc,0xdd,0xa9,0x91,0x59,0x5c,0xc9,0x3d,0xb0,0xb4,0x16,0xf1,0x95,
+ 0x04,0xc9,0x1c,0x83,0xa9,0xf5,0x1f,0xe1,0x5b,0x16,0xb1,0x5c,0x25,0xb8,0xb6,0x95,
+ 0x5c,0xc6,0x37,0x10,0x50,0x83,0x93,0x9e,0xa6,0xa9,0x35,0xab,0x47,0x3c,0x93,0x7d,
+ 0x35,0x26,0x8e,0xdd,0x21,0x87,0xcb,0x57,0xdd,0xe6,0x2e,0x47,0x6d,0xbe,0xd9,0xfc,
+ 0xaa,0xe4,0x20,0x45,0x6d,0x6b,0x04,0xa5,0xa7,0xdb,0xd4,0xe0,0x1c,0x8c,0xf0,0x29,
+ 0x0a,0x04,0x31,0xc3,0x02,0x03,0x0a,0xae,0xec,0x93,0xf7,0x8e,0x2a,0x78,0x36,0x2b,
+ 0x2a,0xc4,0xb9,0x68,0xc7,0xcc,0x48,0xe7,0xf2,0xad,0xe3,0xbe,0xda,0x09,0x6a,0x4e,
+ 0xd6,0xf2,0xc7,0xf6,0x97,0xf3,0x67,0x95,0x37,0xe6,0x31,0x8c,0x28,0xc8,0xe9,0x8a,
+ 0xa3,0x26,0xc6,0x50,0xcf,0x1c,0xa1,0x49,0xce,0xd2,0x00,0x0b,0xee,0x6a,0xca,0xc9,
+ 0x21,0x25,0x8b,0x48,0xc1,0x38,0x40,0x73,0xb4,0x9a,0x89,0xd9,0x8a,0xe2,0x48,0x56,
+ 0x71,0x8e,0x65,0x63,0x85,0x1e,0xbc,0x56,0x91,0xb5,0xcc,0x56,0xd6,0x65,0x6f,0xdc,
+ 0x90,0x92,0xa2,0x9d,0xbb,0xb1,0xf2,0x9f,0xbc,0x3d,0x45,0x4a,0x84,0xc6,0xca,0xfb,
+ 0x0a,0xa9,0x6c,0x90,0xe3,0x9f,0x4e,0x0f,0xe5,0x40,0xb3,0x44,0x75,0x96,0x39,0xd9,
+ 0x6d,0x99,0x37,0x15,0x23,0x2a,0xa4,0x0e,0xd5,0x2b,0xda,0x99,0x00,0x43,0x77,0xbc,
+ 0xb0,0xcb,0x48,0xc0,0xe7,0x23,0xa0,0x51,0xd3,0x15,0xa2,0x5d,0xcd,0x55,0xd2,0xd4,
+ 0xaa,0x65,0x96,0x4b,0xbd,0x87,0x60,0x66,0xf9,0x40,0x04,0x0c,0x83,0xdf,0x35,0x78,
+ 0x40,0xbc,0x34,0xcd,0x1c,0x4e,0xa7,0x6a,0x92,0x79,0x23,0xfd,0x91,0xf8,0x0a,0xb1,
+ 0x65,0x60,0x8d,0x12,0x4e,0xb1,0xfc,0xce,0xa0,0xab,0x33,0x0c,0x9e,0x7a,0x81,0xf8,
+ 0x1a,0x97,0xec,0xd1,0x97,0x71,0x00,0x69,0x25,0x2b,0x97,0x66,0x03,0x93,0xeb,0x9e,
+ 0xdd,0x2a,0xd4,0x93,0x76,0x44,0x36,0xd9,0x5b,0x2e,0xe9,0x03,0xba,0x94,0x50,0x48,
+ 0xc2,0x8e,0x01,0x3e,0xa7,0xd6,0x9d,0x1a,0xa2,0xc5,0x2b,0x06,0x59,0x58,0x0c,0x15,
+ 0x61,0xc9,0x3f,0xec,0x9e,0xd4,0xcb,0x99,0x26,0xb5,0x8c,0xab,0x8f,0xdc,0xed,0x0f,
+ 0x21,0x2f,0xf2,0x9f,0xfe,0xbd,0x62,0x0d,0x59,0x27,0x45,0x9d,0x10,0xa9,0x04,0x90,
+ 0x58,0xf2,0x4f,0x6a,0x7d,0x35,0x13,0x76,0x76,0x7b,0x97,0x67,0x76,0xdc,0x54,0xc8,
+ 0x64,0x98,0x00,0x00,0x03,0x38,0xf5,0xe3,0xbd,0x50,0xbb,0xba,0xf2,0x24,0xde,0x44,
+ 0x91,0xae,0x15,0x91,0x82,0x74,0x3d,0xc0,0xa8,0x2e,0x59,0xed,0xdd,0xa5,0x0c,0x8c,
+ 0x76,0x83,0x80,0x4e,0x14,0xd6,0x65,0xce,0xa8,0x24,0x84,0xc9,0x24,0xed,0x3b,0x29,
+ 0x04,0xa2,0x13,0x83,0x83,0xcf,0xe1,0x59,0x37,0x61,0x68,0x9e,0xba,0x15,0xaf,0x35,
+ 0x49,0xe7,0xf3,0xad,0xde,0x36,0x85,0x96,0x5d,0xcc,0xcc,0x06,0x5c,0x1c,0x72,0x3d,
+ 0xbe,0xb5,0x89,0x71,0xe7,0xa3,0x98,0x5a,0x7d,0xca,0x49,0x25,0x88,0x00,0x01,0xe8,
+ 0x00,0xa7,0xdc,0xcb,0x25,0xc3,0x17,0x57,0x31,0xa1,0x6d,0xfb,0x1b,0xab,0x8e,0xc0,
+ 0x54,0x11,0xb1,0x11,0x83,0xfe,0xa7,0x73,0x6d,0x55,0x24,0x1d,0xbd,0xf1,0x49,0x34,
+ 0xb5,0x63,0xd5,0xbd,0x0a,0xf7,0x11,0xc2,0x8a,0xd2,0x4d,0xfb,0xb9,0xe4,0x1b,0x30,
+ 0x0e,0x03,0x7a,0x60,0x76,0x3c,0xd4,0x12,0xc0,0x8b,0x34,0x68,0xfe,0x6e,0x59,0x44,
+ 0x8c,0xb1,0x9c,0x83,0x8e,0xa3,0x77,0x6a,0xb3,0x33,0x29,0x02,0x25,0x73,0xb8,0x36,
+ 0xe7,0x2c,0xbf,0x78,0x7a,0xe4,0xfd,0x2a,0xb0,0x8c,0x80,0x17,0xf7,0x92,0x31,0x7c,
+ 0x17,0x5c,0x7c,0xc0,0xf4,0x18,0xed,0x4e,0xcb,0x4b,0x6e,0x68,0xec,0xba,0x12,0x44,
+ 0xc9,0x00,0x9e,0x45,0x66,0x50,0xf2,0x86,0xda,0xa4,0x10,0xa0,0xf6,0x04,0xfa,0xd2,
+ 0xbc,0x49,0x83,0x22,0x4d,0x80,0x5f,0x6c,0x79,0x6c,0x10,0x3b,0x91,0xed,0xd6,0x96,
+ 0x3f,0x2a,0x25,0x4f,0x2d,0x8a,0x80,0xdb,0x55,0x58,0x70,0x4e,0x3a,0x91,0xe9,0xcd,
+ 0x32,0x68,0xf6,0x42,0x1b,0xf7,0x7d,0x76,0xb1,0xc1,0x25,0x89,0xa5,0xb3,0xb0,0x35,
+ 0xa6,0xa5,0x84,0x0d,0x75,0x23,0x24,0x92,0xb4,0xa4,0x28,0x25,0x98,0x6d,0x04,0x8e,
+ 0xc7,0xd6,0xa3,0xf3,0x21,0x91,0xd1,0x04,0xc2,0x1b,0x86,0x23,0x2c,0x46,0x01,0xfa,
+ 0x0f,0x4e,0xb4,0x05,0xf3,0xad,0xed,0x5a,0x45,0x24,0x97,0xf9,0x40,0x6c,0x63,0x1d,
+ 0xf1,0x53,0x00,0x26,0x12,0x6d,0x30,0xc8,0x8a,0x31,0xf3,0x2f,0xdc,0xfa,0x1e,0xf9,
+ 0xc0,0xa1,0x19,0xbd,0x75,0xe8,0x4f,0x04,0x32,0x36,0xd6,0xb8,0x48,0x8d,0xb8,0x62,
+ 0x7c,0xc6,0x07,0x73,0x0c,0xf4,0xcd,0x58,0xdb,0xf6,0x89,0x54,0x5a,0xc7,0x21,0xf3,
+ 0x01,0x91,0x83,0x11,0x94,0x3d,0x87,0xd6,0xaa,0x2d,0xd2,0x98,0xbe,0xfe,0x55,0x53,
+ 0x74,0x7b,0xf3,0x8c,0x77,0x03,0xde,0xb4,0xa1,0xd4,0xa3,0x96,0xd5,0x25,0x68,0xe2,
+ 0x32,0xf9,0x7e,0x66,0xd5,0xf9,0x5f,0x3d,0x32,0x69,0x5f,0xaa,0x07,0xb5,0xd3,0x32,
+ 0x27,0x8d,0x96,0x1d,0x8a,0xac,0x8c,0x55,0x89,0x62,0x37,0x64,0x7f,0x43,0x59,0xd6,
+ 0xec,0x9b,0x06,0x0c,0x9f,0x3b,0x01,0xe6,0xe7,0x86,0xcf,0x18,0xc7,0xb5,0x5f,0x92,
+ 0xe6,0x43,0x12,0x3d,0xbb,0xb4,0x77,0x04,0x12,0xa0,0x10,0x46,0xd2,0x3a,0xe3,0xe9,
+ 0x9a,0xaf,0x10,0x84,0x79,0x51,0x43,0x2e,0xe6,0x61,0xe6,0x04,0xce,0x00,0x03,0xad,
+ 0x36,0xf5,0x6e,0xc4,0xea,0xf4,0x8f,0x62,0xb5,0xca,0xc8,0xf6,0xe2,0xe1,0x23,0x99,
+ 0xd9,0x72,0xb3,0x39,0x38,0xf2,0xc0,0x3d,0x73,0xef,0x53,0x79,0x93,0x1f,0x20,0x6e,
+ 0x06,0x39,0x41,0x20,0x85,0xce,0x17,0xdc,0xf5,0xcf,0x02,0x97,0xe5,0x25,0x21,0x45,
+ 0x61,0x10,0x70,0xcc,0x15,0xb2,0xa7,0xda,0xa6,0x89,0x03,0x3b,0x48,0x91,0xca,0x96,
+ 0xc8,0x4a,0xa6,0xf6,0xe5,0xce,0x3a,0x00,0x3a,0x51,0x7b,0x59,0x31,0xb6,0x9b,0xd3,
+ 0xcb,0xfe,0x09,0x55,0xa6,0xb5,0x99,0xe3,0x8b,0x63,0x6c,0xdd,0x96,0x2a,0x39,0x60,
+ 0x07,0x7c,0x74,0xef,0x42,0x08,0x19,0x03,0xa3,0xcf,0xb0,0x92,0xc0,0xc8,0x3a,0x7d,
+ 0x6a,0x41,0x33,0x47,0x34,0x51,0xc7,0x69,0x6c,0x9b,0xc1,0x62,0xca,0xdd,0x0e,0x3b,
+ 0xfb,0xd4,0x6a,0x7f,0x73,0xe6,0x4d,0x91,0x2b,0x36,0x0e,0x07,0xde,0xc7,0x6c,0x76,
+ 0xa3,0x44,0x0e,0xca,0xf7,0xb0,0xa5,0xa2,0x59,0x63,0x97,0xcd,0x56,0x97,0x70,0xca,
+ 0xa9,0xe5,0x97,0xdf,0xf2,0xa6,0xee,0x8a,0x58,0xc3,0x09,0x95,0x22,0x47,0xdc,0x14,
+ 0x75,0x45,0x27,0xaf,0xbd,0x24,0x5f,0xe9,0x12,0xf9,0x8f,0x6d,0x10,0x86,0x3c,0xb6,
+ 0xd5,0x60,0x0b,0x9f,0x5c,0xfe,0x26,0x88,0x08,0x75,0x69,0xd1,0x4f,0x96,0xe4,0x01,
+ 0x12,0xae,0x72,0x33,0xcf,0x26,0x85,0x65,0xa2,0x0d,0x5a,0x4a,0xfa,0x0f,0x0e,0x67,
+ 0xca,0x98,0x88,0x55,0x18,0x32,0x84,0xf9,0x40,0xf4,0x35,0x3a,0x3d,0xc2,0x4b,0x0c,
+ 0x51,0x24,0x72,0x92,0xa4,0xe7,0x83,0xb4,0x7a,0x81,0x50,0x2a,0x48,0xb1,0xcf,0x09,
+ 0x69,0x56,0xdd,0xa4,0xca,0x8c,0xf2,0xfc,0x74,0x2c,0x3a,0x63,0xf2,0xa6,0x6d,0x90,
+ 0x48,0xd2,0x24,0x8e,0xee,0x06,0xc6,0xca,0xf5,0x1f,0xe3,0x43,0xba,0xd1,0x82,0xbb,
+ 0xd5,0xad,0x42,0xe5,0x25,0x26,0x2b,0x79,0xa4,0x67,0x0c,0x0b,0x87,0x2a,0x42,0x8c,
+ 0x7f,0x08,0x35,0x2d,0xb7,0x9a,0x11,0x67,0x55,0x65,0x50,0xe5,0x52,0x22,0xbb,0xb2,
+ 0xb5,0x18,0x68,0x67,0x5f,0x29,0x9d,0xd8,0xc4,0xc4,0x22,0xb1,0xc0,0x43,0xf4,0xa7,
+ 0x20,0x94,0x22,0xb9,0x93,0x64,0x4e,0x76,0x07,0xdb,0x90,0x00,0xe3,0xad,0x0f,0x55,
+ 0xa0,0x2b,0x37,0x74,0xf4,0x1a,0xac,0xc7,0x6b,0x66,0xdd,0x4a,0x92,0xc5,0x72,0x73,
+ 0xf4,0xc5,0x43,0x2c,0x8a,0xec,0xd2,0x59,0xa8,0x90,0x13,0x87,0x3b,0x49,0x23,0xe9,
+ 0x57,0x66,0x60,0x21,0x40,0x22,0x57,0xc0,0xc0,0x75,0x19,0x2d,0xcf,0x4f,0xfe,0xbd,
+ 0x54,0x8d,0x02,0x4a,0x90,0x81,0x24,0x40,0xb6,0xd0,0x43,0x60,0x0c,0xff,0x00,0x78,
+ 0x51,0xe6,0x0d,0xbb,0xea,0x2a,0x79,0x5b,0xf0,0xd2,0x63,0xe5,0x23,0x68,0x1f,0x77,
+ 0xdb,0x8f,0xad,0x35,0x83,0x11,0x94,0x94,0x21,0x1f,0x38,0x0e,0xd8,0x0a,0x71,0x8e,
+ 0x2a,0x49,0xad,0xe3,0x90,0xbc,0x0b,0xb8,0xa2,0xf0,0xa5,0x49,0x39,0x6f,0x7f,0x5a,
+ 0x8e,0x50,0xd2,0x24,0x47,0x70,0xf3,0x46,0x3e,0x52,0xbf,0x73,0x07,0xa0,0xa5,0x16,
+ 0xba,0xb0,0x6b,0xb8,0xf8,0x98,0x22,0xc1,0xe5,0x4a,0x53,0x19,0x66,0x7c,0xf4,0x3d,
+ 0xf2,0x69,0x81,0xcc,0xb1,0xef,0x52,0x24,0x99,0xdc,0xa2,0xaf,0x96,0x09,0x41,0xea,
+ 0x4f,0xe7,0x4f,0x13,0x2a,0x48,0x87,0xf7,0x8c,0xa7,0x90,0xaa,0xb9,0xc3,0x51,0x13,
+ 0x3b,0x4d,0x0a,0x3e,0xc3,0x2b,0x6e,0x24,0x2f,0x46,0xfa,0x0e,0xd4,0xfa,0x05,0xde,
+ 0x8d,0xbb,0xa0,0x49,0x62,0x8d,0xcc,0x6a,0x90,0xbc,0xc9,0xd3,0x04,0xfe,0xf3,0xd7,
+ 0x1e,0x94,0x4b,0x22,0xf9,0x6b,0x13,0xac,0x29,0x83,0xe6,0x7c,0xc3,0x87,0x27,0x1d,
+ 0x08,0xeb,0xd4,0xd5,0xd8,0x96,0xdd,0x81,0xda,0xe8,0xcc,0x48,0x09,0x18,0xfb,0xdd,
+ 0x7b,0xd5,0x18,0xe0,0x7b,0x48,0xe3,0x0a,0x0b,0x2a,0xb9,0xc0,0x00,0x12,0xbc,0xf4,
+ 0xcd,0x1a,0x27,0xa8,0x3b,0xa5,0x77,0xb0,0xfc,0x19,0x21,0xf3,0x87,0x33,0x3b,0x95,
+ 0x64,0x03,0x05,0x31,0xfe,0x35,0x18,0x68,0xe2,0x94,0xcd,0x02,0xc1,0x24,0x85,0x72,
+ 0xc4,0xb1,0xc6,0x07,0x40,0x3d,0xf9,0xa7,0xae,0x6d,0xf6,0x3e,0xff,0x00,0xb1,0x93,
+ 0x23,0x79,0x8b,0x27,0x40,0x71,0xc6,0x33,0x51,0xac,0x62,0x40,0xee,0x8a,0x81,0x1a,
+ 0x5c,0x82,0xca,0x40,0x63,0x8e,0x83,0xf2,0xa2,0xf6,0xdc,0x7a,0xb7,0x74,0x04,0x87,
+ 0x59,0xca,0xf9,0x6b,0x38,0x01,0xca,0xbb,0x1e,0x7d,0x87,0xbd,0x33,0x31,0xca,0xed,
+ 0xbe,0x31,0x80,0xca,0x3e,0x62,0x78,0x24,0xe3,0x9f,0x5a,0x4d,0x81,0x5c,0x16,0x10,
+ 0xa0,0x20,0x86,0x2a,0x09,0x1b,0xb3,0xd6,0x9d,0xc3,0xb4,0x78,0x54,0x13,0x28,0x20,
+ 0x85,0xcf,0x3f,0x53,0x4d,0xe9,0xb0,0xae,0xd2,0xbb,0x7a,0x93,0x4b,0x1e,0x47,0x98,
+ 0x8c,0xab,0x29,0x7d,0xa4,0xf6,0x2b,0xeb,0x9f,0x4f,0xc2,0x95,0x76,0x79,0xf1,0xaa,
+ 0x31,0x85,0x50,0xe0,0xab,0xa0,0xc1,0xf7,0x07,0xf3,0xa8,0x50,0x18,0x03,0x34,0xea,
+ 0x64,0x79,0x86,0x54,0x80,0x48,0x5e,0x7a,0x8a,0x7a,0xb2,0x42,0xb1,0x79,0xe4,0xf0,
+ 0x09,0x60,0x72,0xd9,0xe3,0xb1,0xa2,0xcf,0xa0,0x24,0xaf,0x76,0x58,0xdc,0xab,0x23,
+ 0xe0,0x91,0x19,0x24,0xb2,0xed,0xc6,0x38,0xe2,0xaa,0x47,0x13,0xc5,0x14,0x09,0x22,
+ 0x89,0x26,0x29,0xf3,0x80,0x33,0x95,0xce,0x79,0xa1,0x5c,0xcd,0x13,0xee,0x8c,0x24,
+ 0x81,0x49,0x76,0x66,0xe0,0x7d,0x29,0x76,0xc8,0xe2,0x19,0x63,0x18,0x91,0x87,0xc8,
+ 0x08,0xe4,0xfa,0x81,0x49,0x3b,0x0f,0x56,0xee,0xf6,0x0f,0x2f,0xcf,0xd9,0xe5,0xbc};
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/M5StickCPlus.ino b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/M5StickCPlus.ino
new file mode 100644
index 000000000..e6a43dfc4
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/M5StickCPlus.ino
@@ -0,0 +1,61 @@
+// JPEGDEC example for Adafruit GFX displays
+
+#include "JPEGDEC.h"
+// Sample image (truncated) containing a 320x240 Exif thumbnail
+// if an image doesn't display, it may have been created using progressive, open gimp, export as a jpg, remove progressive.
+
+#include "thumb_test.h"
+//#include "ncc1701.h" //http://clipart-library.com/clip-art/uss-enterprise-silhouette-11.htm
+//#include "batman.h" //http://clipart-library.com/clipart/batman-clip-art_19.htm
+
+#include
+
+#define DISPLAY_WIDTH 135
+#define DISPLAY_HEIGHT 240
+
+
+JPEGDEC jpeg;
+
+int JPEGDraw(JPEGDRAW *pDraw)
+{
+
+ M5.Lcd.drawBitmap((int16_t)pDraw->x, (int16_t)pDraw->y, (int16_t)pDraw->iWidth, (int16_t)pDraw->iHeight, pDraw->pPixels);
+ return 1;
+} /* JPEGDraw() */
+
+void setup() {
+ Serial.begin(115200);
+
+ Serial.println("Starting...");
+
+M5.begin();
+M5.Lcd.fillScreen(TFT_BLACK);
+} /* setup() */
+
+void loop() {
+int i;
+long lTime;
+int iOption[4] = {0, JPEG_SCALE_HALF, JPEG_SCALE_QUARTER, JPEG_SCALE_EIGHTH};
+int iCenterX[4] = {0,0,0,0};
+int iCenterY[4] = {0,0,0,0};
+
+ for (i=0; i<4; i++)
+ {
+ M5.Lcd.fillScreen(TFT_BLACK);
+ M5.Lcd.startWrite(); // Not sharing TFT bus on PyPortal, just CS once and leave it
+ if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), JPEGDraw))
+ //if (jpeg.openFLASH((uint8_t *)ncc1701, sizeof(ncc1701), JPEGDraw))
+ //if (jpeg.openFLASH((uint8_t *)batman, sizeof(batman), JPEGDraw))
+
+ {
+ lTime = micros();
+ if (jpeg.hasThumb()) {jpeg.decode(iCenterX[i],iCenterY[i],JPEG_EXIF_THUMBNAIL | iOption[i]); } else { jpeg.decode(iCenterX[i],iCenterY[i], iOption[i]); }
+ {
+ lTime = micros() - lTime;
+ Serial.printf("%d x %d image, decode time = %d us\n", jpeg.getWidth() >> i, jpeg.getHeight() >> i, (int)lTime);
+ }
+ jpeg.close();
+ }
+ delay(2000); // pause between images
+ } // for i
+} /* loop() */
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/batman.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/batman.h
new file mode 100644
index 000000000..4aeccde5a
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/batman.h
@@ -0,0 +1,845 @@
+//
+// batman-5
+// Data size = 13342 bytes
+//
+// JFIF, Compression=JPEG, Size: 240 x 240, 24-Bpp
+//
+// for non-Arduino builds...
+#ifndef PROGMEM
+#define PROGMEM
+#endif
+const uint8_t batman[] PROGMEM = {
+ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x47,
+ 0x00,0x47,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
+ 0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,
+ 0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,
+ 0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,
+ 0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,
+ 0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,
+ 0x00,0x11,0x08,0x00,0xf0,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
+ 0x01,0xff,0xc4,0x00,0x1e,0x00,0x01,0x00,0x02,0x02,0x03,0x01,0x01,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x09,0x06,0x07,0x04,0x05,0x0a,0x03,0x01,
+ 0x02,0xff,0xc4,0x00,0x49,0x10,0x00,0x01,0x03,0x03,0x03,0x02,0x04,0x03,0x05,0x04,
+ 0x05,0x0a,0x04,0x07,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x06,0x07,0x08,0x11,
+ 0x12,0x21,0x09,0x13,0x31,0x41,0x14,0x22,0x51,0x15,0x23,0x61,0x71,0x81,0x32,0x42,
+ 0x52,0x62,0x24,0x33,0x82,0x91,0x92,0x16,0x17,0x18,0x53,0x63,0x72,0xa1,0xb1,0xb2,
+ 0xc1,0x73,0x93,0xa2,0xc2,0x19,0x34,0x43,0x44,0x83,0x84,0xc3,0xff,0xc4,0x00,0x1c,
+ 0x01,0x01,0x00,0x01,0x05,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x03,0x01,0x04,0x05,0x06,0x07,0x02,0x08,0xff,0xc4,0x00,0x38,0x11,0x00,
+ 0x01,0x03,0x02,0x05,0x01,0x06,0x03,0x06,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x01,
+ 0x00,0x02,0x03,0x04,0x11,0x05,0x06,0x12,0x21,0x31,0x51,0x13,0x22,0x41,0x61,0x71,
+ 0x81,0x07,0x32,0x91,0x15,0x42,0x62,0x92,0xa1,0xb1,0x14,0x23,0x52,0x72,0x82,0xa2,
+ 0x33,0xb2,0xc1,0xf0,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,
+ 0x3f,0x00,0xb5,0x3a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,
+ 0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,
+ 0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,
+ 0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,
+ 0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,
+ 0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,
+ 0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,
+ 0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,
+ 0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,
+ 0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,
+ 0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0xa2,0xae,0xf8,
+ 0x37,0xe7,0x8d,0x6d,0x27,0x1e,0x36,0xd8,0x69,0x66,0xff,0x00,0xa8,0xd3,0xd8,0x2b,
+ 0xb7,0xd9,0x4a,0x8f,0x97,0x1d,0x27,0x90,0x24,0x49,0x20,0x82,0x96,0xc1,0x1d,0x92,
+ 0x08,0x52,0xc8,0xe0,0x70,0x3a,0x94,0x92,0x29,0x55,0x4a,0xf3,0xf3,0xa5,0x5e,0x23,
+ 0xba,0xd3,0xa6,0xda,0xbb,0x71,0xce,0x66,0xe4,0x6f,0xe5,0x48,0xbb,0xbc,0x17,0x75,
+ 0xb2,0x5d,0x1c,0x26,0x1c,0x84,0x03,0xd9,0x2d,0x20,0x76,0x8e,0x52,0x3b,0x25,0x4d,
+ 0x81,0xc7,0x60,0x42,0x87,0x29,0x37,0x13,0xb5,0xfd,0xec,0xe9,0xa6,0xea,0xad,0x4d,
+ 0x8c,0x6e,0xe8,0x2d,0xb9,0x3a,0x1a,0x2e,0x4b,0xc6,0x6e,0x4a,0x4a,0x26,0xb3,0xc1,
+ 0xe1,0x4a,0x48,0xe7,0x87,0x5b,0xf4,0x3d,0x68,0x27,0x80,0xa1,0xd4,0x12,0x4f,0x48,
+ 0x22,0xdf,0xb4,0xa5,0x28,0x89,0x4a,0x56,0xa2,0xdc,0xd6,0xe0,0xa0,0xed,0xab,0x0a,
+ 0xb2,0xe5,0xd7,0x68,0xe1,0xfb,0x23,0xb7,0xc8,0x96,0xdb,0x82,0x81,0x3d,0x4c,0xb0,
+ 0xf7,0x52,0x54,0xf2,0x78,0xe7,0x92,0x8e,0x02,0xf8,0xe3,0xe6,0x09,0x29,0xec,0x48,
+ 0x20,0x8b,0x6e,0xd2,0xb5,0xde,0x79,0xb8,0x9d,0x2f,0xd3,0x06,0x63,0x39,0x95,0xea,
+ 0x06,0x39,0x62,0x32,0x99,0x4c,0x88,0xed,0x4b,0xb9,0x34,0x97,0x5f,0x69,0x43,0x94,
+ 0xb8,0xdb,0x7d,0x5d,0x4b,0x49,0x1f,0xbc,0x90,0x47,0x7a,0xc5,0xac,0x7b,0xdb,0xd0,
+ 0x4c,0x86,0x40,0x62,0x26,0xad,0xe2,0x69,0x70,0x9e,0x00,0x97,0x72,0x6e,0x30,0x27,
+ 0xe8,0x0b,0xa5,0x22,0x88,0xb7,0x6d,0x2b,0x52,0xe8,0xc6,0xe2,0xf1,0xfd,0x72,0xcd,
+ 0x75,0x22,0xcb,0x8e,0x2d,0xb9,0x50,0xf0,0xdb,0x83,0x36,0xc5,0xcf,0x69,0xd0,0xe2,
+ 0x25,0x3a,0xa6,0xca,0x96,0xb4,0x11,0xdb,0xa5,0x2b,0x0a,0x6c,0x7a,0xf2,0x5b,0x51,
+ 0xe7,0x82,0x2b,0x6d,0x51,0x12,0x94,0xa5,0x11,0x29,0x51,0xd3,0x74,0xdb,0xec,0xd3,
+ 0x3d,0xab,0x5b,0xdf,0x8f,0x79,0xb8,0x0b,0xee,0x5f,0xd0,0x15,0x1f,0x17,0xb6,0x38,
+ 0x15,0x29,0x44,0x8e,0x52,0x5e,0x3d,0xc3,0x08,0x3c,0x83,0xd4,0xbe,0xe4,0x77,0x4a,
+ 0x55,0xe9,0x55,0x05,0x9d,0x78,0x8f,0xeb,0x7e,0x67,0xac,0xb0,0x35,0x05,0x8c,0x9d,
+ 0xcb,0x12,0xed,0xab,0xe2,0x05,0x86,0xde,0xa5,0x26,0xda,0xd3,0x24,0x82,0xa6,0x9c,
+ 0x68,0x9f,0xbe,0xeb,0xe3,0xe6,0x52,0xf9,0x51,0xed,0xc1,0x48,0x4a,0x42,0x48,0xbd,
+ 0x04,0x52,0xa3,0x3e,0xca,0xf7,0xc7,0x8a,0x6e,0xef,0x15,0x2d,0x37,0xe5,0x58,0xf3,
+ 0xdb,0x73,0x21,0x77,0x5c,0x79,0x4b,0xe4,0xf4,0x8e,0x01,0x91,0x1c,0x9f,0xdb,0x64,
+ 0xa9,0x40,0x7f,0x12,0x09,0x01,0x5e,0xa9,0x52,0xe4,0xc5,0x11,0x29,0x4a,0x51,0x12,
+ 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xad,
+ 0x05,0xbc,0xed,0xd9,0xd9,0x36,0x91,0xa5,0x0e,0xdf,0xa5,0xa5,0xa9,0xf9,0x35,0xc7,
+ 0xae,0x35,0x8a,0xd0,0xb5,0x11,0xf1,0x52,0x00,0x1c,0xad,0x5c,0x77,0x0d,0x36,0x14,
+ 0x95,0x2c,0xf6,0xf5,0x4a,0x41,0x05,0x69,0xa2,0x2c,0x1b,0x7f,0x1b,0xec,0xb4,0xed,
+ 0x3f,0x11,0xfb,0x22,0xcc,0xa6,0x2e,0x9a,0x95,0x76,0x60,0x9b,0x7d,0xbd,0x47,0xa9,
+ 0x10,0x9b,0x3c,0x8f,0x8a,0x7c,0x7f,0x08,0x23,0xe5,0x41,0xee,0xb2,0x0f,0xb0,0x51,
+ 0x14,0xdb,0x61,0xd1,0xad,0x69,0xdc,0xee,0x55,0x3b,0x22,0x83,0x8c,0x5f,0xf2,0xeb,
+ 0x9d,0xdd,0xe5,0x4a,0x93,0x7b,0x90,0xc9,0x6d,0x87,0x5c,0x57,0x72,0x4c,0x87,0x3a,
+ 0x5a,0x1f,0x82,0x7a,0x87,0x00,0x70,0x07,0x02,0xb9,0x38,0x46,0xb8,0x67,0x39,0x56,
+ 0xb3,0x4f,0xc8,0x95,0x61,0xb3,0xea,0x26,0xa4,0x65,0x33,0x1b,0x6e,0x34,0xbc,0x82,
+ 0x07,0xc6,0xb8,0xd4,0x85,0x2b,0x84,0x79,0x0c,0xa9,0x41,0x94,0x9f,0xd8,0x4a,0x7a,
+ 0x90,0x42,0x12,0x84,0x84,0xf4,0x00,0x79,0xbc,0x7d,0x2d,0xb4,0xe5,0x36,0x4d,0x3f,
+ 0xb2,0x43,0xcd,0xaf,0x8d,0xe4,0x59,0x5a,0x18,0xea,0xb8,0xdc,0x19,0x61,0xb6,0x1a,
+ 0x5b,0xca,0x25,0x45,0x28,0x42,0x12,0x91,0xd0,0x8e,0x7a,0x01,0xe9,0x04,0x84,0x82,
+ 0x7b,0x93,0x5c,0xb7,0x39,0xe6,0xfa,0x8c,0xb2,0xd6,0x36,0x18,0x9a,0xe7,0x3f,0x8d,
+ 0x4e,0x37,0xf3,0x3a,0x40,0xe0,0x71,0x72,0xe0,0x6f,0xc0,0x22,0xe4,0x5c,0x45,0x10,
+ 0x93,0x92,0xa9,0xd1,0xdf,0x0c,0xcd,0xc1,0x37,0x13,0xce,0x18,0x8c,0x47,0x17,0xc7,
+ 0x3e,0x42,0x6f,0x11,0x3a,0xff,0x00,0xe2,0xe0,0x1f,0xf1,0xad,0x0b,0x95,0xe1,0x99,
+ 0x9e,0x8b,0x65,0xe9,0x83,0x7d,0xb6,0x5d,0x71,0x1c,0x8a,0x12,0xc3,0xad,0x79,0xc9,
+ 0x5c,0x77,0x90,0x41,0xec,0xe3,0x4b,0x1c,0x72,0x39,0x1d,0x96,0x82,0x41,0xf6,0x35,
+ 0xe8,0xbe,0xa3,0xbe,0xfd,0x34,0x72,0xc9,0xab,0x5b,0x6d,0xcb,0x9e,0xb8,0x45,0x42,
+ 0xae,0xb8,0xe4,0x07,0xef,0x56,0xc9,0xc1,0x3f,0x7b,0x1d,0xc6,0x51,0xe6,0x38,0x90,
+ 0x7f,0x85,0xc4,0x20,0xa5,0x43,0xd0,0xf6,0x3c,0x72,0x94,0x91,0xcf,0xb0,0x3f,0x8a,
+ 0x35,0xb3,0xd7,0x47,0x4f,0x89,0x44,0xcd,0x0f,0x20,0x5d,0xa0,0x82,0xdb,0x9b,0x5f,
+ 0x72,0x6e,0x3a,0xf0,0x7f,0x65,0x33,0xe9,0xc0,0x17,0x69,0x50,0x8f,0x6f,0x3e,0x2f,
+ 0x7a,0x9d,0xa6,0x2c,0x47,0xb5,0x67,0xf0,0xda,0xd4,0x9b,0x2b,0x69,0x4b,0x68,0x94,
+ 0xfb,0xa2,0x35,0xc9,0xa4,0x8e,0x07,0x77,0x82,0x48,0x77,0xb0,0x3f,0xd6,0x24,0xa9,
+ 0x47,0xd5,0x75,0x62,0xda,0x35,0xe2,0x3d,0xa0,0xda,0xd2,0xa6,0x63,0x43,0xcc,0x5a,
+ 0xc6,0x2e,0xce,0x27,0xab,0xec,0xcc,0xa1,0x22,0x03,0x80,0xf3,0xc7,0x48,0x71,0x44,
+ 0xb2,0xa5,0x7f,0x2a,0x1c,0x51,0x3f,0x4a,0xa0,0xf9,0x98,0x65,0xd2,0x0e,0x15,0x6a,
+ 0xca,0x9e,0x64,0x26,0xd1,0x72,0x9d,0x2a,0xdf,0x1d,0xce,0x7b,0x97,0x63,0xa1,0x85,
+ 0xb9,0xc8,0xfa,0x71,0x25,0xbe,0x0f,0xb9,0x0a,0xfa,0x57,0x47,0x5f,0x48,0x31,0xed,
+ 0x90,0x5d,0x86,0xfc,0x8f,0x70,0x6c,0x7e,0x85,0x58,0xaf,0x54,0x51,0x25,0xb1,0x3e,
+ 0x33,0x72,0x23,0x3c,0xdc,0x98,0xee,0x0e,0xa4,0x3a,0xd2,0xc2,0x90,0xa1,0xf5,0x04,
+ 0x76,0x22,0xa0,0xc7,0x8c,0xac,0xaf,0x87,0xda,0x4c,0x06,0xf9,0xe3,0xcf,0xca,0x21,
+ 0xb7,0xf9,0xfd,0xcc,0x95,0x7f,0xed,0xaa,0x78,0xd3,0xdd,0x6b,0xcf,0xf4,0x99,0x6e,
+ 0x1c,0x33,0x34,0xbf,0x62,0xe9,0x75,0x41,0x6e,0xb5,0x6a,0xb8,0x3a,0xc3,0x6e,0x91,
+ 0xe8,0x56,0x84,0xa8,0x25,0x5f,0xa8,0x35,0x98,0xea,0xc6,0xf0,0xb5,0x77,0x5c,0xf0,
+ 0x48,0x98,0x7e,0x77,0x98,0x3b,0x91,0xd8,0xa2,0x4d,0x6e,0xe0,0xc3,0x52,0x22,0x47,
+ 0x43,0x89,0x79,0x08,0x71,0x01,0x45,0xd4,0x36,0x95,0xab,0xe5,0x75,0x7d,0x94,0x48,
+ 0xf4,0xfa,0x57,0xb4,0x5a,0x6d,0x4b,0x52,0xcf,0x2a,0x25,0x47,0x80,0x39,0x27,0xd8,
+ 0x76,0x15,0xf9,0x5d,0xd5,0xa3,0x09,0xc8,0x2f,0xf6,0x1b,0xb5,0xee,0xd9,0x64,0xb8,
+ 0x5c,0x6d,0x16,0x8f,0x2f,0xed,0x19,0xd1,0x23,0x2d,0xd6,0x61,0xf9,0x9d,0x5e,0x59,
+ 0x79,0x49,0x04,0x36,0x15,0xd0,0xbe,0x0a,0xb8,0x07,0xa4,0xfd,0x2b,0x8f,0x8e,0xe3,
+ 0x37,0x8c,0xc2,0xf1,0x1e,0xd3,0x61,0xb5,0x4d,0xbd,0xdd,0x24,0x1e,0x96,0x60,0xdb,
+ 0xa3,0xae,0x43,0xee,0x1f,0xa2,0x50,0x80,0x54,0x7f,0x41,0x44,0x56,0x51,0xe0,0x7b,
+ 0x95,0xb7,0x17,0x33,0xd5,0x5c,0x65,0x47,0x97,0x67,0x5b,0xe0,0xdc,0x5b,0x04,0xfa,
+ 0x06,0x1c,0x75,0xb5,0xf0,0x3f,0xfd,0x94,0x73,0xf9,0x0a,0xb6,0x79,0xd3,0xa3,0x5b,
+ 0x22,0x3b,0x2a,0x64,0x86,0xa2,0x45,0x69,0x3d,0x4e,0x3e,0xfa,0xc2,0x10,0x81,0xf5,
+ 0x2a,0x3d,0x80,0xaf,0x35,0x18,0x7e,0xa1,0x6a,0x66,0xd6,0x33,0xab,0xdb,0x76,0x1b,
+ 0x8c,0xfc,0x1b,0x2b,0xf8,0x75,0x5a,0xee,0x28,0x0d,0x20,0x48,0x6d,0xb5,0x29,0x0e,
+ 0x29,0xa5,0x05,0xa4,0xf4,0x2b,0xa9,0x08,0x27,0x8e,0x14,0x08,0xe3,0xb7,0x71,0x5d,
+ 0x26,0xa0,0x6b,0x0e,0x75,0xaa,0xef,0xb4,0xee,0x67,0x98,0xdf,0x32,0x95,0x34,0x4a,
+ 0x9a,0x17,0x6b,0x83,0xb2,0x12,0xd1,0xfe,0x44,0xad,0x44,0x23,0xfb,0x20,0x51,0x15,
+ 0xea,0x6b,0x3f,0x89,0x5e,0x83,0x68,0xd2,0xa4,0xc5,0x73,0x2c,0x4e,0x5d,0x78,0x65,
+ 0x3c,0xfd,0x9d,0x8b,0x24,0x4d,0x24,0xff,0x00,0x09,0x78,0x10,0xca,0x48,0x3e,0xa0,
+ 0xb9,0xc8,0xfa,0x7b,0x55,0x72,0xee,0x1f,0xc5,0xc3,0x55,0x35,0x61,0x99,0x16,0xac,
+ 0x25,0x96,0xf4,0xce,0xc2,0xea,0x14,0xda,0xdc,0x80,0xf1,0x7a,0xe4,0xe0,0x3d,0x89,
+ 0xf8,0x92,0x13,0xe5,0xf6,0xe3,0x8f,0x29,0x29,0x50,0x3c,0xfc,0xe7,0xb7,0x10,0x5a,
+ 0x94,0x45,0xf5,0x99,0x31,0xfb,0x84,0xa7,0xa5,0x4a,0x7d,0xc9,0x32,0x5e,0x59,0x71,
+ 0xc7,0x9e,0x59,0x5a,0xd6,0xa2,0x79,0x25,0x44,0xf7,0x24,0xfd,0x4d,0x7c,0xab,0xed,
+ 0x0a,0x2a,0xe7,0x4c,0x62,0x32,0x3b,0xad,0xe7,0x12,0xda,0x7f,0x32,0x78,0x1f,0xf3,
+ 0xac,0x9b,0x57,0x30,0xe4,0xe9,0xe6,0xaa,0xe6,0x38,0xba,0x09,0x2d,0x59,0x6f,0x12,
+ 0xed,0xe8,0x51,0x24,0xf5,0x21,0xa7,0x96,0x84,0x9e,0xff,0x00,0x50,0x90,0x6a,0x13,
+ 0x2b,0x04,0xa2,0x1b,0xf7,0x88,0x27,0xd8,0x58,0x1f,0xdc,0x2a,0xdb,0xc5,0x7f,0x78,
+ 0x2d,0xdf,0x35,0xd3,0x19,0xd6,0x9d,0x47,0xc5,0xcd,0xd2,0xca,0xab,0x6d,0xc3,0xc9,
+ 0x87,0x90,0x46,0x65,0x61,0x84,0x4a,0x4a,0x42,0xd4,0xcf,0x99,0xc7,0x42,0x89,0x42,
+ 0x87,0x53,0x67,0x9e,0xa4,0x2f,0x85,0x02,0x95,0x77,0xbd,0x7d,0x8b,0x6f,0x7e,0xc7,
+ 0xbb,0xac,0x1d,0x4c,0xcb,0x11,0xec,0xfa,0x87,0x69,0x69,0x3f,0x6b,0xd9,0x90,0xae,
+ 0x10,0xe8,0xf4,0xf8,0xa8,0xc0,0x92,0xa5,0x34,0xa3,0xc7,0x23,0xb9,0x6d,0x44,0x25,
+ 0x44,0x82,0x85,0x2f,0x45,0x6c,0x47,0x43,0xf4,0xda,0xfd,0xb4,0xb9,0x96,0x98,0xd7,
+ 0x57,0x73,0xac,0x67,0x2d,0x77,0xcf,0xbb,0x5b,0xee,0x4d,0x25,0xb1,0x0e,0x58,0x69,
+ 0xb4,0x3a,0xc8,0x42,0x4f,0x28,0x5a,0x14,0x84,0x90,0xbe,0x79,0x3c,0x36,0xb4,0x9e,
+ 0x3a,0x49,0x83,0x3a,0xe5,0xa3,0x99,0xdf,0x87,0x9e,0xbe,0xd9,0xf2,0x7c,0x4a,0xe7,
+ 0x24,0x5b,0x04,0x85,0x4a,0xb0,0x5e,0xf8,0xe4,0x38,0x80,0x7e,0x78,0xb2,0x40,0xe0,
+ 0x15,0x74,0x9e,0x95,0xa7,0xd1,0x69,0x57,0x23,0x8e,0x4a,0x53,0xa3,0x61,0x19,0xc2,
+ 0x8f,0x13,0xc4,0xe7,0xc2,0x5c,0x34,0x48,0xc2,0x43,0x6f,0x71,0xa8,0x0e,0x76,0x36,
+ 0x21,0xc3,0x7b,0x8e,0x9b,0x8f,0x1b,0x4a,0xe8,0x8b,0x5a,0x1c,0xaf,0xf6,0x95,0xa4,
+ 0x76,0x8d,0xba,0x6c,0x7b,0x76,0x1a,0x51,0x13,0x27,0xb4,0x94,0x43,0xbc,0xc7,0xe9,
+ 0x8f,0x7a,0xb3,0x95,0x82,0xe4,0x19,0x3c,0x77,0x1c,0x73,0xc9,0x6d,0x7c,0x15,0x21,
+ 0x7e,0xe3,0xb1,0xe1,0x49,0x50,0x1b,0xba,0xb7,0xf5,0x0a,0x52,0x94,0xa2,0x25,0x29,
+ 0x4a,0x22,0x52,0x94,0xa2,0x25,0x29,0x4a,0x22,0xc6,0x35,0x37,0x52,0x2c,0x3a,0x43,
+ 0x80,0xdf,0x33,0x2c,0x9e,0x62,0x60,0x58,0xac,0xd1,0x95,0x26,0x4b,0xc7,0x8e,0x48,
+ 0x1d,0x92,0x84,0x82,0x47,0x52,0xd4,0xa2,0x94,0x25,0x3e,0xea,0x52,0x47,0xbd,0x79,
+ 0xd8,0xdd,0x0e,0xe3,0xb2,0x2d,0xd1,0x6a,0xe5,0xd3,0x34,0xbf,0x28,0xb2,0xca,0xc9,
+ 0x8f,0x6c,0xb6,0xa5,0x5c,0xb7,0x02,0x22,0x54,0x4b,0x6d,0x27,0xea,0x7b,0x95,0x29,
+ 0x5f,0xbc,0xa5,0x28,0xf0,0x01,0x00,0x4a,0xaf,0x16,0x6d,0xdd,0xab,0x55,0x35,0x14,
+ 0x69,0x46,0x35,0x31,0x47,0x14,0xc5,0x24,0xab,0xed,0x37,0x1b,0xe3,0xa6,0x6d,0xcd,
+ 0x3c,0xa5,0x43,0x9f,0x52,0x86,0x41,0x52,0x07,0xa7,0xce,0x5c,0xe4,0x10,0x94,0x1a,
+ 0xd5,0xbe,0x1e,0x9b,0x50,0xff,0x00,0x48,0x4d,0x4c,0x37,0xec,0x82,0x19,0x73,0x04,
+ 0xc7,0x1c,0x43,0xb3,0x12,0xe2,0x0f,0x97,0x3e,0x47,0xab,0x71,0x41,0xf4,0x23,0xd1,
+ 0x6b,0xf5,0xf9,0x78,0x07,0x8f,0x30,0x1a,0xc5,0x62,0x98,0x95,0x3e,0x11,0x47,0x25,
+ 0x75,0x51,0xb3,0x18,0x2f,0xeb,0xd0,0x0f,0x32,0x76,0x0b,0xd3,0x5a,0x5c,0x6c,0x14,
+ 0xae,0xf0,0xc8,0xda,0x18,0xc0,0xb1,0xd6,0x35,0x67,0x2b,0x87,0xd3,0x91,0xdd,0xd8,
+ 0x3f,0x62,0xc5,0x75,0x24,0x2a,0x14,0x35,0x8e,0x0b,0xc4,0x1f,0x47,0x1d,0x07,0xb7,
+ 0xd1,0xb2,0x3b,0xfc,0xea,0x02,0x46,0xee,0xdf,0x73,0x56,0xad,0xaf,0x69,0x6b,0xf7,
+ 0xe7,0xd0,0xd4,0xdc,0x86,0x69,0x54,0x5b,0x2d,0xb1,0xc2,0x78,0x91,0x23,0x8e,0x7a,
+ 0x97,0xc7,0x07,0xcb,0x40,0x21,0x4a,0x20,0x8f,0x64,0x82,0x0a,0x85,0x6e,0x69,0x93,
+ 0x22,0xda,0x60,0x3f,0x2e,0x53,0xcd,0x43,0x85,0x19,0xa5,0x3a,0xeb,0xce,0xa8,0x21,
+ 0xb6,0x9b,0x48,0xe5,0x4a,0x24,0xf6,0x00,0x00,0x4f,0x3e,0xc0,0x55,0x13,0x6e,0xa7,
+ 0x5c,0x2f,0x5b,0xb6,0xd7,0xe9,0x13,0x6d,0x31,0xa5,0xcf,0x81,0xe7,0x0b,0x56,0x39,
+ 0x6b,0x8e,0xd2,0x96,0xe2,0x98,0x0a,0x21,0x1c,0x36,0x07,0x25,0xc7,0x14,0x4a,0xc8,
+ 0xe3,0x9e,0x54,0x13,0xe8,0x91,0x5f,0x2f,0xe0,0x74,0x53,0xe7,0xec,0x7a,0x4c,0x43,
+ 0x11,0xff,0x00,0x85,0x9b,0xbb,0xa0,0x1f,0x75,0x80,0xf8,0x0e,0x6e,0x7a,0x02,0x79,
+ 0x2b,0x20,0xf2,0x21,0x65,0x9b,0xca,0xb2,0xff,0x00,0x0f,0x5d,0xd3,0x65,0x9b,0x9a,
+ 0xc2,0xb2,0x97,0x33,0x08,0x91,0x05,0xca,0xc9,0x35,0xa6,0xd1,0x3e,0x0b,0x45,0x96,
+ 0xe4,0x36,0xea,0x14,0xa0,0x92,0x8e,0x48,0xeb,0x41,0x41,0xe4,0x8e,0x01,0x0b,0x47,
+ 0x6e,0x41,0x2a,0xd8,0x5b,0xd9,0xcd,0xe1,0xe0,0x3b,0x57,0xd4,0x79,0xd2,0xdd,0x4b,
+ 0x66,0x5d,0xa5,0xdb,0x5b,0x08,0x24,0x75,0x38,0xec,0x91,0xe4,0x25,0x29,0x1e,0xff,
+ 0x00,0xd6,0x15,0x1e,0x3d,0x92,0xa3,0xed,0x5f,0xce,0xcc,0xf6,0xfd,0xfe,0x8d,0xfa,
+ 0x15,0x68,0xc6,0xa5,0x86,0xd5,0x7f,0x94,0xb5,0x5c,0xaf,0x0e,0x34,0x79,0x06,0x53,
+ 0x81,0x3c,0xa0,0x1e,0x4f,0x21,0x08,0x4a,0x1b,0xe4,0x76,0x3d,0x05,0x5f,0xbd,0x51,
+ 0x5f,0x76,0xfa,0x84,0xce,0xea,0xf7,0x5b,0x80,0x6d,0xfa,0xc6,0xe1,0x9d,0x8d,0x5a,
+ 0xae,0xe1,0xfc,0x89,0x6c,0x2b,0x80,0xeb,0xcd,0xa5,0x4a,0x7d,0x01,0x7e,0xde,0x4b,
+ 0x29,0x75,0x3c,0x8f,0xdf,0x5a,0x87,0x72,0x91,0x58,0xc8,0x28,0xe8,0xb1,0x4c,0xd1,
+ 0x2c,0xd4,0x2d,0xd3,0x49,0x13,0x8c,0x84,0x8e,0x03,0x23,0xdc,0x91,0xd3,0x51,0x1b,
+ 0x7a,0xf9,0x2f,0x44,0x96,0xc7,0x63,0xc9,0x59,0x4d,0x83,0x62,0x09,0xd5,0x1d,0x8a,
+ 0xe9,0xb6,0x10,0xed,0xd1,0x8b,0x16,0x44,0x87,0x91,0x92,0x2a,0xe2,0xe4,0x62,0xef,
+ 0x42,0xa4,0xa5,0x6b,0x5b,0x2a,0x4f,0x20,0xf6,0x6d,0xd6,0xd2,0x7b,0xfe,0xd3,0x20,
+ 0xfa,0x56,0x9f,0xb3,0x78,0x45,0x65,0x96,0xcd,0x4c,0xc7,0x5b,0xba,0x64,0xd6,0x9b,
+ 0xd6,0x0e,0xa9,0x49,0x55,0xce,0x44,0x5f,0x31,0x89,0x69,0x65,0x20,0xa9,0x48,0x0d,
+ 0x91,0xc7,0xcf,0xc0,0x40,0x52,0x56,0x48,0x2a,0xe4,0x8e,0x05,0x5a,0x24,0xfb,0x95,
+ 0xbb,0x1e,0x80,0x1f,0x9b,0x2a,0x2d,0xb2,0x0b,0x65,0x0d,0x07,0x1f,0x71,0x2c,0xb4,
+ 0x92,0x48,0x4a,0x13,0xc9,0x20,0x0e,0x49,0x00,0x0f,0xa9,0x00,0x57,0x34,0x0e,0x48,
+ 0x15,0x69,0x06,0x7b,0xc7,0x69,0x3b,0x6e,0xc2,0x4b,0x32,0x47,0x3d,0xd6,0x20,0x1b,
+ 0x17,0x6e,0x6c,0x6d,0x7d,0xaf,0x71,0xbd,0x87,0x45,0x53,0x13,0x0d,0xae,0x17,0x9e,
+ 0x6d,0xc4,0xc5,0x89,0x07,0x5f,0x35,0x1e,0x2c,0x08,0xcd,0x43,0x82,0xc6,0x45,0x3d,
+ 0x96,0x23,0xb0,0x90,0x96,0xda,0x6d,0x32,0x16,0x94,0xa1,0x20,0x7a,0x00,0x00,0x00,
+ 0x7e,0x15,0xaf,0x6b,0x2f,0xd6,0x2b,0xa2,0x6f,0x7a,0xb9,0x9b,0xdc,0x50,0x79,0x44,
+ 0xbb,0xe4,0xe9,0x09,0x20,0xf3,0xd9,0x52,0x16,0xa1,0xff,0x00,0x3a,0xc4,0x2b,0xec,
+ 0x6a,0x16,0x96,0xd2,0xc4,0xd7,0x72,0x1a,0xdf,0xd8,0x2c,0x59,0xe4,0xab,0x65,0xdb,
+ 0xfe,0xcf,0x6f,0x98,0xbd,0x82,0xdf,0xa8,0x7a,0x0b,0xaa,0xb7,0x6d,0x32,0xba,0x5f,
+ 0x6d,0x4d,0x33,0x75,0xb2,0xde,0x60,0x31,0x74,0x6d,0x2e,0x29,0x29,0x5f,0x48,0x2a,
+ 0x00,0x74,0x82,0x42,0x9b,0x59,0x42,0x89,0x42,0xd2,0xb4,0xab,0xa5,0x7d,0xf5,0x46,
+ 0x8e,0x78,0x78,0x6e,0x1f,0x01,0xd6,0xab,0x85,0xdd,0x8c,0xea,0x3e,0x0d,0xe4,0xa1,
+ 0x7d,0x59,0x9d,0xbe,0x59,0x92,0xa9,0xc1,0xd3,0xf3,0x25,0x2d,0x12,0x95,0xa8,0x93,
+ 0xc1,0x50,0x77,0xa0,0x72,0x01,0x04,0x90,0x2b,0xbb,0xf0,0xfc,0xde,0xae,0x35,0x3b,
+ 0x0d,0x46,0x8e,0x6a,0xe4,0xc8,0x4c,0xc3,0x65,0x01,0xab,0x35,0xd2,0xee,0x52,0x22,
+ 0xba,0xc2,0x7b,0x88,0x8f,0xad,0x5d,0x90,0x51,0xd2,0x0b,0x6b,0x51,0xe0,0x8e,0x13,
+ 0xc8,0x29,0x40,0x54,0x97,0xb9,0xce,0xd1,0x7d,0x14,0x7e,0xf9,0x9a,0xe4,0x19,0x46,
+ 0x19,0x77,0x89,0x6e,0x6d,0x57,0x0b,0x4d,0xbc,0x79,0x6f,0xcf,0x61,0x69,0x3d,0x6d,
+ 0x86,0x54,0xb7,0xdc,0x2b,0x73,0x90,0x12,0x85,0x36,0x86,0xcf,0x7e,0x49,0x3e,0xa2,
+ 0xd9,0xd2,0xcd,0x1b,0x8b,0x09,0xf4,0xd9,0x65,0x1b,0x14,0x32,0x34,0x3c,0x7b,0xee,
+ 0xaa,0x7b,0x75,0xfa,0x5e,0xbd,0x21,0xd7,0x0b,0xfe,0x3e,0xed,0xd6,0xe1,0x7c,0x90,
+ 0x92,0x99,0x0f,0x5d,0x2e,0xce,0xa5,0x52,0xe6,0x3a,0xb1,0xcb,0x92,0x1c,0x00,0x92,
+ 0x9f,0x31,0x7d,0x4e,0x24,0x29,0x4a,0x51,0x42,0xd0,0xa2,0xa3,0xd5,0xcd,0x6a,0x0a,
+ 0xcb,0xb5,0x5b,0x51,0x2e,0xfa,0xc7,0xa8,0xd9,0x36,0x6d,0x77,0x47,0xf4,0xeb,0xbc,
+ 0xc5,0xcb,0x79,0x0d,0xf2,0x50,0xc2,0x54,0x78,0x43,0x69,0x27,0xbf,0x4a,0x12,0x12,
+ 0x81,0xcf,0x7e,0x12,0x2b,0x11,0xac,0x9b,0x2f,0xa4,0x03,0xca,0xc6,0x3a,0xc5,0xc6,
+ 0xdc,0x2c,0x92,0xdb,0x87,0xb9,0x71,0xd3,0xbb,0xfe,0x4c,0x8e,0xb2,0x8b,0x55,0xc6,
+ 0x04,0x15,0x81,0xfb,0x3c,0x48,0x6e,0x52,0x81,0x3f,0x8f,0x31,0x87,0x1f,0x99,0xae,
+ 0x8a,0x4d,0xbe,0x4c,0x36,0x22,0x3c,0xfb,0x0e,0x32,0xd4,0xb6,0xcb,0xd1,0xd6,0xb4,
+ 0x90,0x1d,0x40,0x5a,0x90,0x54,0x93,0xee,0x3a,0x90,0xb4,0xf3,0xf5,0x49,0x1e,0xd5,
+ 0x28,0x74,0xff,0x00,0x4d,0x5e,0xff,0x00,0xe1,0xe1,0xaa,0xd9,0x83,0x8c,0xa9,0x28,
+ 0x7b,0x27,0xb6,0x21,0xa5,0x29,0x3c,0x75,0x25,0x82,0x1b,0xea,0x1f,0x51,0xd5,0x39,
+ 0x49,0xe7,0xea,0x08,0xf6,0xa9,0x39,0xb0,0xcd,0xbe,0x60,0x3b,0x8b,0xdb,0x36,0x2e,
+ 0xf6,0x6f,0x66,0x17,0x55,0xe2,0x99,0x24,0xff,0x00,0x85,0x48,0x70,0xa0,0x3a,0x85,
+ 0xa1,0x0b,0x2c,0xba,0x47,0x75,0x35,0xd6,0xe2,0x57,0xd2,0x08,0xf9,0x90,0x3d,0x8a,
+ 0x92,0xad,0x13,0x11,0xcd,0x50,0xe1,0x50,0xcf,0x57,0x33,0x4b,0xa3,0x8e,0x5e,0xcc,
+ 0xdb,0x91,0xfc,0xb0,0x76,0xff,0x00,0x23,0x6e,0x47,0x2a,0x46,0xc6,0x5c,0x40,0xf2,
+ 0x55,0xcd,0xa4,0x96,0xcf,0xb6,0xf5,0x57,0x0c,0xb7,0x71,0xd5,0xf1,0x77,0xa8,0x51,
+ 0xf8,0xfa,0xf5,0xbe,0x84,0xff,0x00,0xde,0xb7,0x27,0x88,0x76,0x1a,0xbc,0x33,0x77,
+ 0x59,0xdb,0x7e,0x52,0x9b,0x8d,0x72,0x75,0x8b,0xa3,0x0b,0x50,0xfe,0xb0,0x3c,0xca,
+ 0x14,0xb2,0x3f,0x0f,0x37,0xcd,0x4f,0xf6,0x4d,0x5d,0x76,0x3b,0x81,0x63,0x18,0x7c,
+ 0x66,0xe3,0xd8,0x71,0xcb,0x4d,0x92,0x3b,0x60,0x04,0x35,0x6e,0x82,0xd4,0x74,0xa4,
+ 0x0f,0x4e,0x02,0x12,0x38,0xaa,0xca,0xf1,0x87,0xc2,0xdc,0x85,0xa8,0xd8,0x06,0x58,
+ 0x13,0xcb,0x17,0x1b,0x5b,0xd6,0xd5,0x28,0x0f,0x45,0xc7,0x77,0xcc,0xee,0x7f,0x11,
+ 0x27,0xb7,0xfb,0xa7,0xe9,0x5a,0x36,0x03,0x9e,0x1b,0x98,0x73,0x24,0x31,0xb6,0x2e,
+ 0xcd,0xa5,0x8f,0x68,0xb9,0xbd,0xce,0xcf,0xbf,0x02,0xdb,0x33,0xcd,0x4c,0xf8,0xb4,
+ 0x46,0x56,0x82,0xd9,0x26,0xeb,0x67,0x6d,0x8f,0x53,0x9b,0x5c,0xc7,0x5c,0x7f,0x08,
+ 0xbc,0x2d,0x0c,0x5e,0xa1,0x24,0x75,0x74,0x27,0xd1,0x32,0x5b,0x1f,0xc6,0xdf,0x24,
+ 0xf1,0xfb,0xc9,0x2a,0x4f,0xaf,0x49,0x17,0x17,0xac,0x3a,0x51,0x8a,0xee,0x4f,0x49,
+ 0x66,0xe3,0x57,0x75,0x33,0x3a,0xcd,0x76,0x61,0x12,0x21,0x5c,0x63,0x10,0xe1,0x61,
+ 0xce,0x9e,0xa6,0x64,0xb2,0xa0,0x78,0x24,0x72,0x08,0x20,0xf0,0xa4,0x92,0x93,0xca,
+ 0x54,0x41,0xf3,0xfd,0x03,0x15,0xbc,0x5d,0x6c,0x17,0x5b,0xe4,0x3b,0x74,0x89,0x56,
+ 0x9b,0x52,0xd9,0x44,0xe9,0x6d,0x20,0xa9,0x11,0x8b,0xa5,0x41,0xa2,0xbe,0x3f,0x64,
+ 0x28,0xa0,0x80,0x4f,0x6e,0x78,0x1c,0xf2,0x40,0x36,0x77,0xe1,0x55,0xb9,0xb3,0x93,
+ 0x63,0x92,0x34,0x86,0xff,0x00,0x28,0xae,0xe7,0x68,0x6d,0x52,0xec,0x6e,0x39,0xea,
+ 0xec,0x4e,0x79,0x71,0x8e,0x7d,0xcb,0x6a,0x57,0x52,0x47,0xaf,0x42,0x88,0xf4,0x6e,
+ 0xa9,0xf1,0x13,0x01,0x3b,0x66,0x0c,0x34,0xda,0x68,0x48,0xd7,0xa7,0x9d,0xac,0x43,
+ 0xbd,0x5b,0xb5,0xff,0x00,0x09,0x07,0x80,0x90,0x3f,0xee,0x3b,0x82,0xa2,0x8e,0x96,
+ 0xea,0x16,0x7b,0xe1,0xbb,0xba,0x59,0x4c,0x5c,0x18,0x71,0xf6,0x22,0xb8,0x22,0x5d,
+ 0xed,0xe8,0x3c,0x33,0x77,0xb7,0xa8,0x85,0x25,0xc6,0xc9,0xed,0xcf,0x1c,0x2d,0x0a,
+ 0xf5,0x4a,0x81,0x4a,0xbf,0x7d,0x26,0xfa,0x30,0x3c,0xe6,0xc9,0xa9,0x98,0x6d,0x9f,
+ 0x2a,0xc6,0xe7,0xb5,0x74,0xb1,0x5d,0xa3,0x22,0x5c,0x49,0x4d,0x1e,0xcb,0x42,0x87,
+ 0xa1,0x1e,0xa9,0x50,0x3c,0x85,0x24,0xf7,0x49,0x04,0x10,0x08,0x22,0xa0,0xcf,0x88,
+ 0x86,0xd4,0xd1,0xaf,0xba,0x60,0xbc,0x8e,0xc3,0x0b,0xcc,0xce,0xf1,0xa6,0x56,0xf4,
+ 0x50,0xcb,0x7c,0xbb,0x3e,0x28,0xf9,0x9c,0x8a,0x78,0xee,0xa2,0x3b,0xad,0xb1,0xdf,
+ 0xe6,0xe5,0x20,0x7d,0xe1,0x35,0x1e,0xbc,0x23,0xb7,0x7a,0xbc,0x1b,0x32,0xff,0x00,
+ 0x33,0x19,0x54,0xf2,0x9c,0x7e,0xfa,0xf1,0x72,0xc2,0xf4,0x97,0x78,0x4c,0x39,0xe7,
+ 0xd6,0x38,0xea,0xf4,0x4b,0xfe,0xc0,0x1f,0xeb,0x40,0x00,0x12,0xe9,0x35,0xd0,0x72,
+ 0x8e,0x63,0x8f,0x32,0x61,0xc2,0x73,0xb4,0xad,0xd9,0xe3,0xa1,0xea,0x3c,0x9d,0xc8,
+ 0xf7,0x1e,0x0a,0x09,0x63,0xec,0xdd,0x6f,0x05,0x71,0x34,0xa5,0x2b,0x77,0x51,0x25,
+ 0x29,0x4a,0x22,0x52,0x94,0xa2,0x25,0x46,0x0f,0x10,0xbd,0xd2,0x0d,0xb0,0x68,0x24,
+ 0xe9,0x56,0xa9,0x48,0x67,0x35,0xbf,0xf5,0x5b,0x6c,0x68,0x3d,0xd4,0xda,0xc8,0xfb,
+ 0xd9,0x20,0x7f,0xb2,0x41,0xe4,0x1e,0xe3,0xad,0x4d,0x82,0x08,0x35,0x27,0xeb,0xcf,
+ 0x9f,0x88,0x76,0xe5,0x17,0xb9,0x1d,0xc5,0xde,0x26,0x40,0x96,0xe3,0xd8,0x95,0x80,
+ 0xaa,0xd1,0x65,0x6c,0xab,0xee,0xd4,0xda,0x14,0x43,0xb2,0x12,0x07,0x6f,0xbd,0x70,
+ 0x29,0x41,0x5e,0xa5,0x01,0xb0,0x7f,0x64,0x00,0x45,0xa1,0x30,0x1c,0x1e,0xf3,0xaa,
+ 0x39,0xc5,0x9b,0x16,0xb1,0xb0,0x65,0xde,0xaf,0x12,0xd1,0x16,0x3a,0x54,0x4f,0x1d,
+ 0x4a,0x3d,0xd4,0xb2,0x01,0xe1,0x29,0x1c,0xa9,0x4a,0xf6,0x00,0x9f,0x6a,0xbf,0x9d,
+ 0x06,0xd1,0x9b,0x2e,0x81,0x69,0x5d,0x8f,0x0a,0xb2,0x24,0x29,0x88,0x0d,0x73,0x22,
+ 0x57,0x4f,0x0b,0x97,0x21,0x5d,0xdd,0x79,0x5d,0xcf,0x75,0x2b,0x9e,0x07,0x3f,0x28,
+ 0xe9,0x48,0xec,0x91,0x50,0x97,0xc2,0x6f,0x6e,0x7f,0x66,0xda,0x2e,0x5a,0xc1,0x7a,
+ 0x8a,0xa1,0x26,0x77,0x5d,0xba,0xc2,0x97,0x12,0x38,0x4b,0x00,0xf0,0xfc,0x81,0xf8,
+ 0xa9,0x43,0xcb,0x07,0xb7,0x01,0x0e,0x7a,0x85,0x0a,0xb1,0x95,0xad,0x2d,0x21,0x4b,
+ 0x5a,0x82,0x10,0x90,0x4a,0x94,0xa3,0xc0,0x03,0xdc,0x9a,0xf9,0x4b,0xe2,0x5e,0x63,
+ 0x38,0x85,0x77,0xd9,0x54,0xee,0xfe,0x5c,0x27,0xbd,0xe6,0xff,0x00,0x1f,0xcb,0xc7,
+ 0xad,0xd6,0x46,0x06,0x69,0x1a,0x8f,0x8a,0xe8,0xb3,0xec,0x2e,0x06,0xa3,0xe1,0x77,
+ 0xac,0x5e,0xea,0xe4,0x96,0xad,0x97,0x78,0xab,0x87,0x28,0xc3,0x74,0xb4,0xe9,0x69,
+ 0x63,0x85,0x80,0xa1,0xe9,0xc8,0xe4,0x1f,0xc0,0x9a,0xd6,0xfa,0x57,0xb5,0xed,0x24,
+ 0xdb,0x5c,0x29,0x77,0x9c,0x67,0x16,0x62,0x14,0xc8,0xcc,0x38,0xf3,0xf7,0x89,0x01,
+ 0xc9,0xb3,0x42,0x02,0x0f,0x5f,0x42,0x95,0xd4,0xa4,0xf2,0x9e,0x41,0x43,0x40,0x75,
+ 0x7d,0x09,0xae,0xbf,0x6e,0xdb,0xc1,0xc3,0xb7,0x29,0x96,0x66,0xd6,0x2c,0x71,0x0e,
+ 0xb2,0xe6,0x3b,0x20,0x06,0x1e,0x7d,0x63,0x8b,0x94,0x52,0x7a,0x7e,0x25,0xb4,0xf6,
+ 0x29,0x4f,0x58,0x23,0x83,0xdc,0x05,0x36,0x4f,0x05,0x65,0x29,0xde,0xd5,0xcc,0x67,
+ 0x38,0x9e,0x11,0xaf,0x0d,0xa8,0x2f,0x8c,0x1b,0x17,0x32,0xe4,0x5e,0xe0,0x11,0x71,
+ 0xc1,0xdb,0xad,0xed,0xd2,0xea,0x71,0xa5,0xdd,0xe0,0xab,0x73,0x77,0x1e,0x28,0x96,
+ 0xd7,0x6c,0x93,0x71,0x4d,0x1a,0x7d,0xf9,0x13,0x24,0xa0,0xb5,0x23,0x2c,0x5b,0x6a,
+ 0x65,0x2c,0x20,0x8f,0x98,0x45,0x42,0xc0,0x59,0x5f,0x7e,0x3c,0xc5,0x04,0xf4,0xf0,
+ 0x4a,0x42,0x89,0x0a,0x4f,0x55,0xe1,0x05,0xa5,0x0b,0x99,0x78,0xcd,0x75,0x36,0x68,
+ 0x2a,0x4b,0x08,0x4d,0x8e,0x12,0x95,0xdf,0xa9,0xc5,0xf4,0xbd,0x21,0x47,0xe8,0x40,
+ 0x0c,0x80,0x7d,0xfc,0xc5,0x7d,0x2a,0x18,0xee,0x87,0x00,0x6b,0x4e,0x77,0x1b,0xa8,
+ 0x38,0xc4,0x06,0xba,0x62,0x45,0xbd,0x3f,0xf0,0x6c,0x36,0x3f,0x61,0x97,0x15,0xe6,
+ 0x34,0x80,0x3d,0xf8,0x42,0xd2,0x3f,0x4a,0xba,0x5d,0xa2,0xe8,0xea,0xb4,0x2b,0x6f,
+ 0x78,0x86,0x2b,0x26,0x32,0x63,0x5d,0xd1,0x1b,0xe3,0x2e,0x89,0x1c,0x15,0x7c,0x5b,
+ 0xc7,0xcc,0x74,0x28,0x8e,0xca,0x28,0xe4,0x37,0xcf,0xd1,0xb1,0x5d,0xc7,0x33,0x33,
+ 0x0d,0xcb,0x39,0x59,0x94,0xb8,0x58,0xb1,0xaa,0xd3,0xb9,0xdd,0xce,0x6d,0x83,0x89,
+ 0x27,0xd2,0xc2,0xc0,0x00,0x35,0x6c,0x37,0x56,0xb1,0xea,0x92,0x4b,0xbb,0xc1,0x44,
+ 0x6f,0x18,0x0d,0x57,0x10,0xec,0x18,0x5e,0x9c,0x44,0x96,0x03,0xd3,0x1e,0x5d,0xee,
+ 0xe0,0xc2,0x09,0x0a,0x0d,0x23,0xa9,0xa8,0xfd,0x5f,0x54,0xa9,0x4a,0x7c,0xf1,0xf5,
+ 0x68,0x1f,0x61,0x53,0xd7,0x18,0x74,0xe2,0xba,0x6d,0x68,0x72,0xe0,0xb5,0x28,0xdb,
+ 0x6d,0x0c,0xaa,0x42,0xdc,0x3f,0x31,0xf2,0xd9,0x1d,0x64,0x93,0xef,0xf2,0x9a,0xa4,
+ 0x0d,0xcf,0x6a,0x7a,0xf7,0x23,0xba,0x7b,0xdd,0xd6,0x17,0xf4,0x8b,0x7c,0xcb,0x9b,
+ 0x56,0x9b,0x4a,0x1b,0x57,0x50,0x5c,0x66,0xd4,0x19,0x69,0x49,0xff,0x00,0xc4,0xe0,
+ 0xb9,0xc7,0xd5,0xc3,0x57,0x3f,0xb8,0x5b,0x81,0xc7,0xf6,0xf7,0xa8,0xf2,0xd2,0xae,
+ 0x83,0x17,0x1a,0xb8,0x29,0x2a,0x1e,0xc4,0x46,0x5f,0x15,0xab,0xe6,0x6c,0x23,0xec,
+ 0xdc,0x2f,0x06,0xc2,0xdc,0x2c,0xf7,0x6a,0x73,0xba,0xea,0x79,0x67,0xed,0x7b,0x7b,
+ 0x29,0x23,0x7d,0xdc,0xe7,0x2a,0xaa,0xc6,0xb6,0x5f,0x97,0xeb,0xbe,0xd7,0x74,0xff,
+ 0x00,0x2f,0xc1,0xac,0xad,0xdd,0xb2,0x49,0x17,0x7b,0x9b,0x77,0x15,0x39,0x29,0x98,
+ 0xe5,0xc8,0xc5,0xc0,0x1b,0x59,0x53,0xab,0x48,0x21,0x0e,0x34,0xe8,0xe0,0x72,0x7e,
+ 0xf7,0xd3,0x81,0xdb,0xfb,0xb7,0xf8,0x54,0x6b,0xa4,0xc4,0xa4,0xbc,0xce,0x3b,0x00,
+ 0x9f,0x51,0x22,0xe9,0xc9,0x1f,0xe0,0x42,0xaa,0xca,0xb6,0x4f,0x88,0x7f,0x90,0xbb,
+ 0x50,0xd3,0x4b,0x62,0xb9,0x05,0x56,0x94,0xdc,0x17,0xd5,0xfb,0xa6,0x4a,0xd7,0x24,
+ 0x83,0xf9,0x17,0x88,0xfd,0x2b,0x76,0x25,0x41,0x69,0x0a,0x49,0x0a,0x49,0x1c,0x82,
+ 0x3d,0x08,0xa9,0xab,0xbe,0x23,0xe2,0xf4,0x35,0x75,0x14,0xd4,0x9a,0x0c,0x6d,0x91,
+ 0xfa,0x49,0x04,0x9b,0x6a,0x36,0xf1,0xb7,0xa6,0xdc,0x2a,0x08,0x1a,0x40,0x25,0x53,
+ 0x3d,0xdb,0xc2,0xaf,0x5d,0x6d,0xcc,0xa9,0x71,0xe2,0xe3,0xf7,0x55,0x01,0xc8,0x6e,
+ 0x25,0xd4,0x25,0x47,0xf0,0x1e,0x6a,0x50,0x3f,0xbc,0xd6,0x00,0xf6,0xc1,0x35,0xee,
+ 0x26,0x43,0x6d,0xb4,0x49,0xd3,0xbb,0x83,0x2e,0xce,0x7d,0x2c,0x26,0x52,0x1d,0x69,
+ 0xf8,0xac,0xf3,0xfb,0xee,0xba,0xd2,0xd6,0x96,0xd0,0x07,0x72,0xa5,0x1f,0xcb,0x93,
+ 0xc0,0xab,0xcc,0xba,0x5e,0x6d,0xf6,0x38,0xe9,0x7e,0xe5,0x3a,0x35,0xbd,0x85,0x28,
+ 0x20,0x3b,0x29,0xe4,0xb4,0x92,0xa3,0xe8,0x39,0x51,0x03,0x9e,0xc7,0xb5,0x75,0x12,
+ 0xf5,0x23,0x13,0x83,0x02,0x54,0xd7,0xf2,0x6b,0x4b,0x71,0x22,0xb4,0xa7,0x9e,0x77,
+ 0xe3,0x5b,0x21,0xb4,0x24,0x12,0xa5,0x1e,0x15,0xe8,0x00,0x27,0xf4,0xa5,0x3f,0xc5,
+ 0x0c,0x7e,0xdb,0xc2,0xc7,0xdf,0xf0,0xbb,0x9f,0x67,0x5b,0xf4,0x43,0x4e,0xc5,0x50,
+ 0x5b,0xc4,0xd2,0xcb,0x56,0x82,0xc1,0xc0,0x34,0x27,0x11,0x22,0xef,0x7e,0x7c,0x22,
+ 0xf3,0x90,0x4d,0x69,0x20,0xbd,0x72,0xb8,0xba,0x4b,0x31,0x9b,0xe3,0xb9,0x42,0x5b,
+ 0x4f,0x9b,0xd0,0xdf,0x3e,0x8f,0xf5,0x1e,0x4a,0x8a,0x8c,0x59,0xc9,0xb1,0xd9,0x58,
+ 0xb6,0x51,0x75,0xb0,0xca,0xe9,0x5c,0xdb,0x74,0xc7,0x60,0xbb,0xe5,0x72,0x52,0x5c,
+ 0x6d,0x65,0x0a,0xe9,0xfa,0x8e,0x41,0xe2,0xa6,0x16,0xda,0x10,0xf6,0xef,0xbc,0x42,
+ 0xe4,0x66,0xf3,0x1a,0x71,0x16,0xc8,0xb3,0xdd,0xc9,0x14,0xd3,0x87,0x95,0xb5,0x1e,
+ 0x39,0x4a,0x21,0xb6,0x4f,0xa1,0x29,0x57,0xc3,0x24,0xfd,0x42,0x55,0xc5,0x70,0xb4,
+ 0xc3,0x45,0x86,0xa4,0xf8,0x95,0xdf,0xec,0x12,0xa1,0x99,0x16,0x9b,0x56,0x5b,0x72,
+ 0xbb,0xce,0x41,0x48,0x28,0xf8,0x76,0x24,0x2d,0xc4,0x75,0x8f,0xe0,0x5a,0xfc,0x94,
+ 0x11,0xef,0xe6,0x71,0xef,0x5d,0x92,0x87,0x16,0xfb,0x22,0x37,0xd2,0xd6,0xbb,0x54,
+ 0x91,0x43,0xdb,0x4a,0x7c,0x4b,0x9c,0x49,0x23,0xdb,0x80,0x3a,0x69,0x03,0x6b,0x05,
+ 0x6c,0xe6,0xea,0xdc,0x78,0x9b,0x29,0x93,0xa8,0x3a,0x10,0xbd,0x3e,0xf0,0xc9,0xbc,
+ 0x60,0x6f,0xa0,0x19,0xd6,0xdc,0x6c,0x5c,0xa6,0xa5,0x3d,0xc0,0x92,0x87,0x93,0x35,
+ 0xe0,0x08,0xf5,0x09,0x5a,0x54,0x01,0xf7,0x09,0x15,0xd4,0xf8,0x46,0x3f,0xe6,0xed,
+ 0xb2,0xfa,0xdf,0xfa,0xbc,0x9a,0x40,0xfe,0xf8,0xd1,0x8f,0xfd,0xea,0x4f,0xee,0x12,
+ 0x0f,0xda,0x9a,0x09,0xa9,0x30,0xf8,0xea,0xf3,0xf1,0xbb,0x93,0x7c,0x7d,0x79,0x8a,
+ 0xe0,0xa8,0x9b,0xe0,0xfd,0x2c,0x2f,0x42,0x73,0x18,0xbf,0xbc,0xd6,0x48,0xa7,0x0f,
+ 0xe4,0xa8,0xac,0x0f,0xfd,0x86,0xb8,0x24,0x75,0x92,0xd7,0xe5,0x4c,0x42,0x49,0x4d,
+ 0xdc,0x67,0x6b,0xcf,0xab,0xf9,0xfd,0x95,0xd9,0x16,0x91,0xa0,0x74,0x53,0xc6,0xa1,
+ 0xcf,0x8a,0xa6,0x04,0xee,0x59,0xb6,0x05,0x5e,0x23,0xb6,0x16,0xee,0x37,0x76,0x8d,
+ 0x3d,0xc3,0xc7,0x2a,0xf2,0x57,0xd5,0x1d,0x5c,0x7f,0x69,0xe6,0xc9,0xfc,0x12,0x4f,
+ 0xb5,0x6b,0x1f,0x10,0xfd,0x6e,0xcc,0xb4,0x2b,0x73,0x9a,0x57,0x7d,0xb3,0x64,0x97,
+ 0x78,0x36,0x06,0xe0,0xb4,0xfc,0xcb,0x3c,0x79,0xae,0x26,0x1c,0xb0,0xdc,0xb7,0x3c,
+ 0xe0,0xe3,0x21,0x5d,0x0a,0x2b,0x6d,0x41,0x24,0x91,0xcf,0x01,0x3d,0xfe,0x51,0xc4,
+ 0xe1,0xd5,0x6c,0x32,0x36,0xb0,0x69,0x0e,0x51,0x8c,0xb3,0x21,0x95,0x33,0x90,0x5a,
+ 0x1f,0x8b,0x1e,0x57,0x3d,0x6d,0x85,0x3a,0xd1,0xf2,0x9c,0xe4,0x7a,0x80,0xa2,0x95,
+ 0x76,0xfa,0x56,0x22,0x8a,0x92,0x5c,0xb9,0x3e,0x19,0x8d,0x3d,0xc0,0xc7,0x21,0xd5,
+ 0xe8,0x1a,0xeb,0x38,0x1f,0x62,0xbd,0x92,0x1e,0x1c,0xc5,0x1b,0xfc,0x38,0xf4,0x47,
+ 0x05,0xb4,0xed,0x75,0xab,0xa4,0x50,0xde,0x4a,0xe6,0x6e,0xd2,0x95,0x7c,0x33,0xe3,
+ 0x8f,0x2d,0x5d,0x05,0x6d,0x18,0x65,0xa2,0x48,0x2d,0xb6,0x7c,0xd1,0xc9,0xee,0xbe,
+ 0xb2,0xae,0xc0,0xa5,0x29,0x8a,0x9b,0xa1,0xda,0x56,0x4f,0xb2,0xcd,0x49,0xb6,0x6a,
+ 0xfe,0x96,0x17,0xe4,0xe2,0x10,0x27,0x22,0x5a,0x01,0x2a,0x5b,0x96,0x85,0xf5,0x01,
+ 0xe4,0x3e,0x41,0xea,0x5c,0x77,0x3a,0x8a,0x02,0xc9,0xf4,0x51,0x42,0xcf,0x24,0x29,
+ 0x7b,0x93,0xc2,0x33,0x52,0x25,0x2b,0x1a,0xce,0xb4,0xce,0xe6,0x3c,0xa9,0x56,0x49,
+ 0x89,0xb9,0x46,0x69,0xc3,0xf7,0x89,0x4b,0x9f,0x76,0xfa,0x38,0xf6,0x08,0x5b,0x68,
+ 0x3f,0x9b,0xa7,0xf0,0xab,0x03,0xb8,0x5b,0xe2,0xdd,0xa0,0x49,0x83,0x3a,0x33,0x33,
+ 0x61,0x49,0x6d,0x4c,0xbf,0x1a,0x43,0x61,0xc6,0xdd,0x6d,0x43,0x85,0x21,0x49,0x3c,
+ 0x85,0x24,0x82,0x41,0x07,0xb1,0x06,0xb6,0x3c,0x47,0x1c,0xc4,0x32,0xc6,0x66,0xac,
+ 0xed,0x5d,0xda,0xc7,0x23,0xbb,0xcd,0x77,0x0f,0x63,0x87,0x77,0xc8,0x10,0xd2,0x00,
+ 0x20,0x6d,0xc5,0xad,0x70,0xa3,0x6b,0x1b,0x24,0x63,0xc1,0x62,0x9a,0x3b,0xaa,0x76,
+ 0x8d,0x6a,0xd3,0x3c,0x7f,0x35,0xb1,0xac,0x7c,0x05,0xda,0x32,0x5e,0xf2,0xba,0xfa,
+ 0x94,0xc3,0x83,0xe5,0x71,0x95,0x1e,0x07,0xcc,0x85,0x85,0x24,0xf6,0xef,0xd3,0xcf,
+ 0xa1,0xaa,0xa2,0xf1,0x1f,0xdb,0x83,0xba,0x0d,0xac,0x71,0xf3,0x8c,0x61,0xa5,0xdb,
+ 0xf1,0xac,0x95,0xf5,0x4c,0x8e,0xa8,0x61,0x4d,0x8b,0x7d,0xc1,0x24,0x29,0xc4,0x25,
+ 0x43,0xf6,0x3a,0x8f,0xde,0xa3,0x82,0x38,0xe5,0x61,0x20,0x06,0xea,0xc4,0xb4,0x53,
+ 0x43,0xe5,0x6d,0xa7,0x3d,0xbc,0xd9,0x71,0xa2,0xf4,0xbd,0x2c,0xc9,0x1d,0x54,0xe8,
+ 0xb0,0x55,0xf3,0xb9,0x61,0xb8,0x00,0x3a,0xd0,0x0f,0xaa,0xa3,0xba,0x80,0x38,0x51,
+ 0x27,0xa1,0x4d,0xa5,0x27,0xf6,0xfa,0x8e,0x59,0xb9,0x8d,0x11,0x83,0xb8,0x4d,0x18,
+ 0xc8,0xb0,0xc9,0x41,0x28,0x97,0x25,0x9f,0x3e,0xdd,0x25,0x5d,0xbe,0x1e,0x62,0x39,
+ 0x53,0x2b,0xe7,0xe9,0xd5,0xf2,0xab,0xea,0x95,0x28,0x76,0xe6,0xb1,0x78,0x0e,0x35,
+ 0x06,0x59,0xc7,0x84,0xf4,0xaf,0xbd,0x2c,0x9b,0x1e,0xba,0x0f,0x51,0xfd,0x4c,0x3c,
+ 0xf5,0xb1,0xb6,0xce,0xb9,0xf4,0xf6,0x19,0x19,0x63,0xca,0xee,0x36,0x27,0xb9,0xb6,
+ 0xf7,0x49,0xa0,0x56,0xac,0x82,0x5b,0xa9,0x39,0x4d,0xb4,0x8b,0x65,0xf5,0xa4,0xa4,
+ 0x27,0x99,0x48,0x48,0x3e,0x68,0x48,0xe0,0x04,0xba,0x92,0x95,0x8e,0x00,0x00,0xa9,
+ 0x49,0x1f,0xb3,0x52,0x1e,0xa8,0x67,0xc3,0x97,0x5e,0xe7,0x6d,0x77,0x74,0x88,0xc7,
+ 0xb2,0x4e,0xbb,0x5d,0x93,0x21,0x7c,0x63,0xb7,0xc8,0xd2,0xd5,0xe5,0x88,0x92,0x43,
+ 0x85,0x2c,0xba,0xb0,0x48,0x00,0xb6,0xe9,0x28,0x25,0x5d,0x92,0x87,0x1c,0x35,0x7c,
+ 0xd5,0xf6,0x50,0x21,0xc0,0x39,0xa6,0xe0,0xac,0x5a,0x52,0x94,0xaa,0xa2,0x52,0x94,
+ 0xa2,0x28,0xb1,0xe2,0x4b,0xb8,0x03,0xa0,0x7b,0x5f,0xbf,0x39,0x01,0xf7,0x18,0xc8,
+ 0xb2,0x52,0x6c,0x36,0xc5,0xb2,0xae,0x95,0xb4,0xa7,0x50,0xaf,0x35,0xd0,0x79,0x05,
+ 0x3d,0x0d,0x07,0x38,0x50,0xee,0x16,0x51,0xf5,0xe4,0x51,0x6e,0x90,0x69,0x9d,0xcf,
+ 0x58,0xf5,0x37,0x1b,0xc2,0xec,0xe8,0x26,0x75,0xe2,0x62,0x23,0x05,0xf1,0xc8,0x65,
+ 0xbf,0x57,0x1d,0x57,0xf2,0xa1,0x01,0x4b,0x3f,0x82,0x4d,0x4b,0x9f,0x17,0xad,0x6f,
+ 0x1a,0x91,0xb9,0x16,0x70,0xf8,0x32,0x54,0xed,0xa3,0x0a,0x88,0x21,0xa9,0x00,0x82,
+ 0x83,0x35,0xde,0x1c,0x90,0xa1,0xf9,0x27,0xc9,0x6c,0xf3,0xe8,0x5a,0x57,0xeb,0x9b,
+ 0x78,0x44,0x68,0x98,0x9b,0x76,0xca,0x35,0x4a,0xe3,0x13,0xa9,0xb8,0x43,0xec,0x6b,
+ 0x4b,0xab,0xe3,0x8f,0x35,0x40,0x2e,0x4a,0xd2,0x3d,0x79,0x4a,0x0b,0x68,0x07,0xd3,
+ 0x87,0x56,0x3e,0xbc,0x6b,0x19,0x97,0x17,0x6e,0x07,0x85,0x4f,0x5d,0xf7,0x9a,0x2c,
+ 0xdf,0x37,0x1d,0x9b,0xfa,0xee,0x7c,0x81,0x52,0x46,0xdd,0x6e,0x01,0x59,0x1e,0x15,
+ 0x87,0xda,0xf4,0xff,0x00,0x11,0xb3,0x63,0x36,0x48,0xe2,0x2d,0xa2,0xd3,0x11,0xa8,
+ 0x51,0x5a,0xe7,0x92,0x96,0xd0,0x90,0x91,0xc9,0xf7,0x27,0x8e,0x49,0x3d,0xc9,0x24,
+ 0x9f,0x5a,0x88,0x9e,0x27,0xfb,0x8e,0x3a,0x57,0xa4,0xad,0xe0,0xb6,0x69,0x41,0xbc,
+ 0x93,0x2f,0x6d,0x6d,0x3c,0x5b,0x73,0x87,0x23,0xdb,0xc7,0x67,0x54,0x40,0xee,0x3c,
+ 0xc3,0xf7,0x43,0x9e,0xc4,0x79,0xbc,0x77,0x4d,0x4d,0x37,0x1c,0x43,0x4d,0xa9,0x6e,
+ 0x29,0x28,0x42,0x41,0x52,0x94,0xa3,0xc0,0x48,0x1e,0xa4,0x9f,0x61,0x54,0x07,0xba,
+ 0xfd,0x6c,0x7f,0x5f,0xf5,0xdf,0x27,0xcb,0x0b,0xbd,0x76,0xc5,0x3e,0x62,0x5a,0xd0,
+ 0x39,0x01,0x10,0x9a,0x25,0x2d,0x70,0x0f,0x70,0x54,0x39,0x59,0xfe,0x65,0xab,0xd3,
+ 0xd2,0xbe,0x65,0xf8,0x7b,0x82,0x1c,0x73,0x19,0x35,0x55,0x3d,0xe6,0x43,0xdf,0x75,
+ 0xfc,0x5c,0x4f,0x74,0x1f,0x7b,0xb8,0xf5,0xb7,0x9a,0xbf,0x99,0xfa,0x1b,0x61,0xe2,
+ 0xb7,0x1f,0x85,0x65,0xd5,0xeb,0x76,0xec,0x22,0x47,0x6c,0x90,0x89,0xf6,0x69,0xb1,
+ 0x9d,0x03,0xdd,0x20,0x25,0xde,0xff,0x00,0xda,0x69,0x35,0x73,0x55,0x53,0x5e,0x11,
+ 0x9a,0x5d,0x3a,0xf5,0xab,0xd9,0x0e,0x76,0xe3,0x5d,0x36,0x8b,0x1d,0xb9,0x50,0x50,
+ 0xe9,0xf5,0x5c,0xa7,0xd4,0x9e,0x12,0x9f,0xaf,0x4b,0x68,0x70,0x9f,0xa7,0x52,0x3e,
+ 0xb5,0x63,0xfb,0x8a,0xd5,0x96,0x74,0x3f,0x45,0x72,0xcc,0xcd,0x7d,0x0a,0x93,0x6e,
+ 0x86,0xaf,0x82,0x69,0xcf,0x47,0x65,0x2f,0x84,0x30,0x8e,0x3d,0x48,0x2e,0x29,0x1c,
+ 0xf1,0xdf,0x8e,0x4f,0xb5,0x5d,0xfc,0x46,0x68,0xaf,0xcc,0xcd,0xa5,0xa6,0xdd,0xe5,
+ 0xac,0x65,0xbf,0x11,0x26,0xc3,0xe8,0x42,0xa4,0x1b,0x47,0x72,0xab,0xd7,0x46,0xb4,
+ 0xb1,0xbd,0xcf,0xf8,0x8c,0xea,0x06,0x59,0x2e,0x3a,0x65,0xe2,0x38,0xad,0xf1,0xd9,
+ 0xaf,0x38,0x4f,0xdd,0xbe,0xe3,0x0e,0x79,0x30,0xd1,0xf8,0x85,0x29,0xa0,0xe7,0x07,
+ 0xb1,0x4b,0x6a,0x07,0xd4,0x03,0x64,0x7a,0xb7,0x85,0xdc,0x75,0x1b,0x4d,0x32,0x4c,
+ 0x5e,0xd5,0x7d,0xff,0x00,0x26,0xa6,0xde,0x21,0x2e,0x12,0x6e,0xa2,0x31,0x90,0x63,
+ 0xa1,0x7f,0x2b,0x84,0x36,0x16,0x8e,0x54,0x50,0x54,0x01,0xea,0x1c,0x12,0x0f,0x7e,
+ 0x38,0x3a,0xc7,0x65,0x1a,0x06,0xad,0x01,0xd0,0xeb,0x65,0xbe,0xe4,0xd2,0x46,0x57,
+ 0x78,0x57,0xda,0xd7,0xc7,0x88,0xe5,0xc3,0x25,0xc0,0x08,0x69,0x47,0xfd,0x9a,0x7a,
+ 0x51,0xc0,0xed,0xd4,0x16,0x47,0xed,0x12,0x79,0x5a,0xa3,0xbd,0x7d,0x1c,0xd1,0xbc,
+ 0xc5,0xfc,0x5b,0x29,0xcb,0x93,0x0e,0xf9,0x1d,0x28,0x54,0x88,0xac,0x43,0x7e,0x47,
+ 0x91,0xd4,0x02,0x92,0x16,0xa6,0xd0,0xa0,0x0f,0x04,0x1e,0x9e,0x79,0xe0,0x8e,0xdd,
+ 0xc5,0x61,0x71,0xca,0xda,0xbc,0x6f,0x16,0x64,0x58,0x4b,0x1d,0x23,0x69,0x83,0x5b,
+ 0x18,0x6b,0x75,0x6c,0xcb,0x0d,0x56,0xb1,0x04,0x13,0xd4,0x5a,0xd6,0x05,0x7b,0x60,
+ 0x0c,0x6d,0xdd,0xe2,0xb4,0x66,0x8b,0x78,0x54,0x62,0x5a,0x5d,0x9c,0x58,0x32,0x9b,
+ 0xbe,0x6b,0x73,0xc9,0xa7,0x59,0x66,0xb5,0x70,0x8f,0x1d,0xb8,0x4d,0xc3,0x8e,0xb7,
+ 0x5a,0x58,0x5a,0x3a,0xd3,0xd4,0xe2,0x8a,0x42,0x80,0x3c,0x05,0x0e,0x78,0xef,0xdb,
+ 0xb5,0x6d,0x2f,0x11,0x4c,0xac,0xe2,0x9b,0x41,0xce,0xd4,0xdb,0xbe,0x5c,0x9b,0x82,
+ 0x23,0x5b,0x9a,0xe7,0xf7,0xbc,0xd9,0x0d,0x87,0x07,0xfe,0x50,0x72,0xb7,0x9e,0x07,
+ 0x9f,0xe3,0xba,0x9f,0x8b,0x42,0xc8,0xf1,0x5b,0xbc,0x6b,0xe5,0x92,0x62,0x4a,0x99,
+ 0x99,0x15,0x5c,0xa4,0xf0,0x78,0x29,0x20,0xf0,0x52,0xa0,0x7b,0x14,0xa8,0x02,0x0f,
+ 0x62,0x05,0x42,0x2f,0x18,0x0c,0xe9,0x8b,0x66,0x92,0x61,0x78,0x92,0x54,0x7e,0x32,
+ 0xef,0x77,0x5c,0xf3,0xc1,0xec,0x19,0x8c,0xd1,0x4a,0x81,0xfc,0xd5,0x21,0xbe,0x3f,
+ 0xdd,0x35,0x2e,0x15,0x57,0x8a,0x66,0x2c,0xcd,0x46,0xcc,0x51,0xe5,0xef,0x63,0xc6,
+ 0xc4,0x01,0x60,0xd3,0xa8,0x8b,0x00,0x00,0xe3,0x7d,0x95,0x1c,0x1a,0xc8,0xce,0x95,
+ 0x5a,0x79,0x46,0xb3,0xe7,0xb9,0xb5,0x92,0x35,0x9a,0xfd,0x99,0x5f,0x2e,0xd6,0x78,
+ 0xc8,0x43,0x6c,0xdb,0xa5,0xcf,0x75,0x71,0xd0,0x94,0x00,0x10,0x03,0x65,0x5d,0x3d,
+ 0x80,0x1c,0x76,0xab,0xda,0xdb,0x06,0x28,0xee,0x13,0xb7,0x5d,0x37,0xb2,0xbe,0x16,
+ 0x99,0x31,0xac,0x10,0xcb,0xe8,0x73,0xd5,0x0e,0xad,0xa4,0xad,0x69,0xfd,0x14,0xa5,
+ 0x0f,0xd2,0xa8,0x63,0x4c,0x70,0xc7,0xf5,0x17,0x51,0xf1,0x6c,0x56,0x31,0xe8,0x7e,
+ 0xf5,0x74,0x8d,0x6f,0x4a,0xf8,0xe4,0x23,0xcd,0x75,0x28,0xea,0x3f,0x80,0xea,0xe4,
+ 0xfe,0x02,0xbd,0x19,0x32,0xc2,0x23,0x32,0xdb,0x2d,0x27,0xa5,0xb6,0xd2,0x10,0x94,
+ 0x8f,0x60,0x3b,0x01,0x5b,0xf7,0xc5,0x79,0x62,0xa7,0x86,0x92,0x86,0x16,0x86,0x82,
+ 0x5c,0xf2,0x00,0xb7,0x40,0x0e,0xdd,0x6e,0x7e,0x8a,0x1a,0x70,0x4d,0xc9,0x55,0x27,
+ 0xe2,0xe7,0x9f,0x39,0x7b,0xd7,0x2c,0x7b,0x15,0x6a,0x61,0x76,0x15,0x8a,0xce,0x97,
+ 0x9c,0x8c,0x15,0xf2,0xb5,0x25,0xf5,0xa9,0x4a,0x24,0x7f,0x11,0x6d,0x0c,0x1f,0xcb,
+ 0x8f,0xad,0x41,0x4a,0xdc,0x5b,0xc3,0xcb,0xd7,0x9c,0xee,0x87,0x53,0x2e,0xcb,0x74,
+ 0x3e,0x3e,0xda,0x7e,0x1b,0x6e,0x03,0xc8,0x2d,0xc7,0x3f,0x0e,0xdf,0x07,0xdc,0x74,
+ 0x34,0x9a,0xfb,0xed,0x13,0x6f,0x12,0xf7,0x29,0xad,0x16,0xac,0x67,0x87,0x5a,0xb1,
+ 0x47,0xfe,0x9b,0x79,0x96,0xd8,0xfe,0xa6,0x22,0x08,0xea,0x48,0x3e,0xca,0x59,0x21,
+ 0xb4,0x9f,0x62,0xbe,0x78,0x21,0x26,0xba,0xd6,0x0a,0xd8,0x32,0xfe,0x5d,0x80,0xd4,
+ 0x1d,0x2d,0x8e,0x30,0xe7,0x7a,0x91,0xa9,0xdf,0xa9,0x36,0xf1,0x2a,0xd9,0xf7,0x7c,
+ 0x86,0xca,0xc6,0x3c,0x2b,0x74,0x31,0xcd,0x3c,0xd1,0x49,0x99,0xb5,0xca,0x3a,0x5b,
+ 0xbb,0x66,0x0e,0xa5,0xe6,0x39,0x07,0xad,0x10,0x5a,0xea,0x4b,0x5c,0xf2,0x3b,0x75,
+ 0xa8,0xb8,0xbe,0xdd,0x8a,0x4b,0x67,0xf0,0x19,0xd6,0xdf,0x74,0x87,0xec,0x0d,0xdc,
+ 0x6e,0x23,0x35,0x5b,0x48,0xf2,0x64,0x4d,0x81,0x6d,0x88,0xe8,0xf5,0xea,0x72,0x1b,
+ 0x12,0xe4,0x8f,0xcb,0x97,0x63,0xfe,0xa0,0xfd,0x2a,0x4b,0xdb,0xad,0xd1,0x6c,0xf6,
+ 0xf8,0xb0,0x20,0xc6,0x6a,0x1c,0x18,0xad,0x21,0x86,0x23,0x30,0x80,0x86,0xda,0x6d,
+ 0x20,0x25,0x28,0x4a,0x47,0x60,0x90,0x00,0x00,0x0f,0x40,0x2b,0xe5,0x06,0xd3,0x16,
+ 0xd9,0x2a,0xe7,0x29,0x94,0x04,0x39,0x3d,0xf1,0x2a,0x42,0xbf,0x89,0x61,0xa6,0xda,
+ 0x07,0xfc,0x0d,0x20,0x7e,0x95,0xf2,0x4d,0x76,0x62,0xa8,0xae,0xaa,0xae,0xa9,0x76,
+ 0xdf,0xc4,0x0d,0x36,0xe8,0x03,0xda,0x40,0xf6,0x6b,0x6c,0xb2,0x41,0x80,0x00,0x3a,
+ 0x2f,0x8e,0x51,0x69,0x17,0xec,0x66,0xef,0x6c,0x23,0xa8,0x4d,0x86,0xf4,0x62,0x0f,
+ 0xbf,0x5a,0x0a,0x7f,0xef,0x50,0x0b,0xc1,0xc2,0x6f,0x99,0x83,0xea,0x5c,0x3e,0x7f,
+ 0xaa,0xb8,0xc3,0x77,0x8f,0xf7,0xda,0x70,0x7f,0xfc,0xea,0xc4,0x90,0x78,0x5a,0x7f,
+ 0x3a,0xae,0x9f,0x09,0x3b,0x7f,0xd8,0x59,0x26,0xbc,0x59,0xf8,0x29,0x4c,0x19,0xf6,
+ 0xe6,0x52,0x93,0xed,0xd2,0xb9,0xc8,0x3f,0xf4,0x8a,0xc9,0xe0,0xce,0xd5,0x96,0x71,
+ 0x68,0xcf,0x87,0x60,0x47,0xe7,0x20,0xfe,0xe1,0x51,0xdf,0x3b,0x4f,0xaf,0xec,0xb1,
+ 0x9f,0x19,0x38,0x41,0x37,0xad,0x2c,0x96,0x13,0xf3,0x2e,0x3d,0xc5,0xa2,0xaf,0xa8,
+ 0x0a,0x8e,0x40,0xff,0x00,0xd4,0x7f,0xbe,0xa6,0x16,0xc5,0xb3,0x71,0x9f,0x6d,0x3f,
+ 0x4e,0x67,0x97,0x3a,0xde,0x89,0x6e,0x16,0xb7,0x41,0x57,0x2a,0x4a,0xa3,0x2d,0x4c,
+ 0x00,0x7f,0x12,0x96,0xd2,0xaf,0xc9,0x42,0xb9,0xbb,0x92,0xda,0x46,0x1b,0xba,0x6f,
+ 0xf2,0x6c,0x65,0xd3,0x6f,0x31,0x13,0x62,0x5b,0xea,0x8e,0x9b,0x43,0xed,0x35,0xe6,
+ 0xf9,0xbe,0x5f,0x50,0x70,0xad,0xa5,0x92,0x3e,0xe9,0x3c,0x74,0xf1,0xea,0x7f,0x0e,
+ 0x32,0x7d,0x09,0xd0,0x6c,0x63,0x6e,0x98,0x4b,0x98,0xae,0x25,0xf1,0xdf,0x65,0xae,
+ 0x5a,0xe6,0xab,0xed,0x09,0x1e,0x73,0x9e,0x62,0xd2,0x84,0xab,0x83,0xc0,0x00,0x70,
+ 0x84,0xf6,0x03,0xd7,0x93,0xef,0x52,0xd7,0xe3,0x74,0x15,0x79,0x56,0x93,0x0b,0xdf,
+ 0xb7,0x89,0xc4,0xf1,0xb5,0x89,0x7e,0xd7,0xbf,0x42,0x0f,0xb2,0xa0,0x61,0x12,0x17,
+ 0x78,0x15,0x5f,0x71,0x10,0x9d,0xac,0x78,0xa8,0x2d,0xa4,0xbc,0xe4,0x3c,0x7b,0x30,
+ 0x94,0x47,0x71,0xc2,0x56,0xdd,0xc3,0xe6,0x09,0x3f,0x44,0x26,0x60,0x00,0x7d,0x03,
+ 0x60,0x9f,0x43,0x56,0x91,0x55,0xf1,0xe2,0xdf,0xa6,0x12,0x1e,0xc5,0xb0,0xad,0x4f,
+ 0xb5,0xb3,0xd1,0x36,0xc5,0x2f,0xec,0xe9,0x92,0x5a,0x4f,0xde,0x25,0xa7,0x0f,0x5b,
+ 0x0b,0x51,0xf6,0x4a,0x1d,0x4a,0x80,0xfe,0x67,0xc7,0xd6,0xa6,0xb6,0x8e,0x6a,0x24,
+ 0x6d,0x5a,0xd2,0xac,0x4f,0x31,0x8a,0x12,0x86,0xef,0x56,0xd6,0x65,0xad,0xa4,0x9e,
+ 0x43,0x4e,0x29,0x03,0xcc,0x6f,0x9f,0x7e,0x95,0xf5,0x27,0xfb,0x35,0x26,0x66,0x77,
+ 0xda,0x78,0x56,0x1d,0x8c,0x0d,0xdd,0xa4,0xc4,0xff,0x00,0xee,0x8f,0x82,0x7c,0xdc,
+ 0x0d,0xfd,0x15,0x19,0xdd,0x73,0x9b,0xee,0xb3,0x1a,0x54,0x54,0xcb,0x77,0x90,0x8d,
+ 0x00,0xdc,0x4c,0x9d,0x39,0xd5,0x3e,0x96,0xb1,0xbb,0xba,0x53,0x70,0xb0,0x65,0x6d,
+ 0x36,0x10,0x96,0x59,0x75,0x44,0x79,0x12,0xd0,0x3b,0x00,0x87,0x12,0xe2,0x03,0xa9,
+ 0xfd,0xd0,0xd9,0x5a,0x7b,0xa9,0x62,0x54,0x30,0xfb,0x52,0x98,0x6d,0xf6,0x1c,0x43,
+ 0xcc,0xba,0x90,0xb6,0xdc,0x6d,0x41,0x49,0x5a,0x48,0xe4,0x10,0x47,0x62,0x08,0xef,
+ 0xcd,0x69,0x15,0xb8,0x65,0x55,0x03,0x63,0x92,0x66,0xf7,0x24,0x1a,0x9a,0xe1,0xc3,
+ 0x87,0x91,0xea,0x3c,0x41,0xdc,0x78,0x85,0x28,0x70,0x3c,0x2a,0x85,0xf1,0x52,0xd0,
+ 0x71,0xa7,0xda,0xc9,0x13,0x3b,0xb6,0x44,0x2d,0x59,0x72,0xe6,0xca,0xa4,0x29,0xb1,
+ 0xf2,0x37,0x70,0x6c,0x00,0xef,0xa0,0xf9,0x7c,0xc4,0x14,0x2f,0xbf,0x75,0x2b,0xcd,
+ 0x3e,0xc7,0x8b,0x3f,0xd8,0x0e,0xbf,0x2f,0x71,0x3b,0x63,0xc6,0x6f,0xb3,0x9e,0x4b,
+ 0xd9,0x0d,0xb0,0x1b,0x35,0xdc,0x85,0x12,0xa5,0x49,0x60,0x24,0x07,0x15,0xcf,0xef,
+ 0x38,0xd9,0x69,0xc3,0xed,0xcb,0x84,0x0f,0x4a,0xc2,0x37,0xaf,0xa2,0x23,0x5e,0x76,
+ 0xef,0x93,0x58,0xe3,0xc4,0x32,0xef,0xb0,0x9b,0xfb,0x56,0xd0,0x94,0x0e,0x57,0xf1,
+ 0x4c,0x82,0x42,0x12,0x3d,0xcb,0x88,0x2e,0x37,0xc1,0xed,0xf7,0x9c,0xfa,0x80,0x6a,
+ 0x0f,0x78,0x36,0xeb,0x59,0xc2,0xf5,0xe2,0xf1,0xa7,0xd2,0xd6,0x7e,0xcf,0xcc,0x61,
+ 0x15,0xc7,0x1c,0xfe,0xcc,0xc8,0xc9,0x5b,0x89,0xf7,0xec,0x14,0xd1,0x7f,0x9f,0x7e,
+ 0x52,0x8a,0xfa,0xcb,0xe1,0xd6,0x35,0xf6,0xb6,0x0c,0xd8,0x64,0x37,0x92,0x1e,0xe1,
+ 0xf4,0xfb,0xa7,0xe9,0xb7,0xab,0x4a,0xc7,0x4e,0xdd,0x2e,0xbf,0x55,0x74,0x94,0xa5,
+ 0x2b,0xa9,0x2b,0x74,0xae,0x8f,0x3a,0xcb,0xa1,0xe0,0x18,0x46,0x43,0x94,0x5c,0x39,
+ 0xf8,0x0b,0x25,0xba,0x45,0xca,0x47,0x07,0x8f,0xbb,0x65,0xb5,0x38,0xae,0xff,0x00,
+ 0x92,0x4d,0x77,0x95,0x0e,0x3c,0x58,0xf5,0x15,0x78,0x1e,0xce,0xaf,0x90,0x98,0x7d,
+ 0x51,0xe5,0x64,0xb7,0x08,0xb6,0x54,0x29,0xb3,0xc2,0xba,0x4a,0x8b,0xee,0x8f,0xc9,
+ 0x4d,0xb0,0xb4,0x9f,0xc1,0x44,0x7b,0xd1,0x15,0x1c,0x66,0x99,0x6d,0xcf,0x50,0xb3,
+ 0x2b,0xe6,0x4d,0x77,0x70,0x3f,0x77,0xbd,0x4e,0x7a,0xe1,0x29,0x68,0x4f,0x01,0x4e,
+ 0xba,0xb2,0xb5,0x70,0x3d,0x87,0x2a,0x3c,0x0f,0x61,0x57,0xdb,0xb5,0xed,0x23,0x6f,
+ 0x43,0x74,0x1b,0x0f,0xc4,0x02,0x14,0x99,0x91,0x21,0x25,0xe9,0xe5,0x5e,0xa6,0x5b,
+ 0xa4,0xb8,0xff,0x00,0xe8,0x16,0xb5,0x24,0x7f,0x2a,0x52,0x2a,0x9f,0x76,0x11,0xa4,
+ 0xeb,0xd5,0xcd,0xd0,0xe2,0x10,0xdc,0x60,0x3d,0x6c,0xb3,0xbd,0xf6,0xe4,0xfe,0xa0,
+ 0x0a,0x43,0x51,0xc8,0x52,0x02,0x81,0xf5,0x0a,0x77,0xca,0x41,0x1f,0xcf,0xf4,0xab,
+ 0xb1,0xc2,0xb5,0x23,0x17,0xd4,0x76,0xee,0xae,0x63,0x37,0xc8,0x77,0xb4,0xda,0xe6,
+ 0xb9,0x6e,0x9a,0x62,0x39,0xd7,0xe4,0x48,0x6c,0xf0,0xa4,0x2b,0xfe,0xc7,0xd0,0x8e,
+ 0xe0,0x91,0x5f,0x38,0xfc,0x57,0xc4,0x64,0x90,0xc3,0x87,0x44,0x09,0x6b,0x3b,0xef,
+ 0xb7,0x00,0x9b,0xb5,0x97,0xe9,0xf7,0xb9,0xe6,0xea,0xfa,0x9d,0xbc,0xb9,0x6b,0xad,
+ 0xe8,0xe5,0x4f,0xe1,0x9b,0x56,0xd4,0xcb,0x9c,0x64,0xa8,0xbf,0xf6,0x42,0xe2,0x24,
+ 0xa3,0xd5,0x3e,0x7a,0x92,0xc1,0x57,0xe8,0x1d,0x27,0xf4,0xaa,0x3a,0xd2,0xcd,0x2d,
+ 0xc8,0xf5,0x97,0x39,0xb6,0x62,0x78,0xad,0xbd,0x77,0x0b,0xbc,0xf7,0x3a,0x52,0x91,
+ 0xd9,0x0d,0x23,0xf7,0x9d,0x71,0x5f,0xba,0x84,0x8e,0xe5,0x47,0xfe,0x7c,0x0a,0xf4,
+ 0x3d,0x91,0x63,0xd6,0xdc,0xb6,0xc3,0x70,0xb2,0xde,0x61,0x33,0x72,0xb5,0x4f,0x61,
+ 0x71,0xa5,0x44,0x90,0x9e,0xa4,0x3a,0xda,0x87,0x0a,0x49,0x1f,0x88,0x35,0x87,0x69,
+ 0x1e,0xdf,0xf4,0xf3,0x42,0x20,0x48,0x89,0x82,0x62,0xd0,0xf1,0xf4,0xc9,0x3c,0xbe,
+ 0xf3,0x65,0x6f,0x48,0x77,0xbf,0x20,0x2d,0xe7,0x54,0xa7,0x14,0x90,0x7d,0x12,0x55,
+ 0xc0,0xf6,0x02,0xb4,0xcc,0xab,0x9d,0x21,0xcb,0x18,0x65,0x45,0x3b,0x21,0x2e,0x9d,
+ 0xee,0xbb,0x4e,0xda,0x78,0x03,0xbd,0xbd,0xf6,0x3b,0xd8,0x0d,0xef,0xc8,0x52,0xc9,
+ 0x17,0x68,0xe0,0x6f,0xb2,0xe3,0xed,0xdf,0x43,0x6c,0xdb,0x76,0xd2,0x7b,0x3e,0x17,
+ 0x67,0x21,0xff,0x00,0x86,0x05,0xe9,0xb3,0xbc,0xb0,0x85,0xcd,0x94,0xbe,0x3c,0xd7,
+ 0x94,0x07,0xd7,0x80,0x90,0x09,0x24,0x21,0x28,0x4f,0x27,0xa7,0x9a,0xd3,0xd9,0x1c,
+ 0xe6,0xb7,0x3d,0xba,0xcb,0x76,0x2b,0x19,0x49,0x93,0x80,0xe9,0x43,0xe8,0xbb,0xdd,
+ 0x9d,0x4a,0x7a,0x9b,0x99,0x7c,0x21,0x49,0x8f,0x1f,0x9f,0x4e,0x19,0x1d,0x6a,0x3c,
+ 0x73,0xf3,0x05,0xa4,0x8f,0x43,0x5c,0x5d,0xf8,0x6f,0x46,0x06,0xdd,0xf0,0xf9,0x38,
+ 0xde,0x39,0x31,0x99,0x3a,0x91,0x74,0x67,0xa2,0x3b,0x48,0x3d,0x5f,0x66,0x34,0xa1,
+ 0xc1,0x92,0xe0,0xf6,0x57,0x1f,0xd5,0xa4,0xfa,0x9e,0x14,0x41,0x48,0xe0,0xff,0x00,
+ 0x7e,0x18,0x62,0xd0,0xf6,0xd4,0xad,0x93,0x60,0xbc,0x64,0x5e,0x66,0xdd,0x67,0xbf,
+ 0x7c,0x79,0x6b,0x2b,0x71,0x73,0x0b,0xc4,0x02,0xb2,0x7b,0xf2,0x58,0x11,0xcf,0xeb,
+ 0xcf,0xa9,0x35,0x8e,0x8e,0x92,0xba,0x9b,0x0d,0x9b,0x33,0x56,0x02,0x5f,0x2b,0xb4,
+ 0x30,0x9e,0x6e,0xf0,0x75,0x49,0xe9,0x60,0x5a,0xdf,0xc4,0x6e,0x38,0x0b,0xd5,0xc1,
+ 0x70,0x60,0xf0,0x5b,0x97,0x71,0xfa,0xdd,0x6e,0xdb,0xd6,0x8f,0x5f,0xf3,0x59,0xe9,
+ 0x4b,0xef,0x44,0x6b,0xca,0x83,0x11,0x47,0xff,0x00,0x9a,0x96,0xbf,0x95,0x96,0xfd,
+ 0x47,0x6e,0xae,0xea,0x23,0xb8,0x4a,0x54,0x78,0x3c,0x71,0x54,0x07,0x93,0x64,0x97,
+ 0x3c,0xc7,0x21,0xb9,0x5f,0x6f,0x53,0x1c,0xb8,0x5d,0xae,0x52,0x1c,0x97,0x2e,0x53,
+ 0xbc,0x75,0x3a,0xea,0xd4,0x54,0xa5,0x1e,0x3b,0x0e,0x49,0x3d,0x80,0x00,0x7b,0x54,
+ 0xbe,0xf1,0x39,0xdc,0x90,0xd5,0xad,0x59,0x46,0x11,0x64,0x96,0x1d,0xc5,0xf1,0x15,
+ 0xad,0x97,0x14,0xd2,0xc9,0x44,0xab,0x81,0xec,0xf2,0xfe,0x84,0x37,0xc7,0x96,0x9e,
+ 0xdd,0x88,0x70,0x82,0x42,0xea,0x31,0xe8,0xb6,0x9b,0x48,0xd6,0x0d,0x58,0xc5,0x30,
+ 0xc8,0xca,0x71,0xb5,0x5e,0x6e,0x0d,0x45,0x71,0xd6,0x93,0xd4,0xa6,0x9a,0x2a,0xe5,
+ 0xd7,0x00,0xfe,0x44,0x05,0xab,0xfb,0x35,0xdd,0x72,0x0e,0x06,0xcc,0xbf,0x83,0xbb,
+ 0x10,0xab,0x1a,0x64,0x90,0x6b,0x71,0x3f,0x75,0x80,0x5c,0x0f,0xa7,0x78,0xfa,0xd8,
+ 0xf0,0xac,0xe6,0x7e,0xb7,0x69,0x0a,0xe6,0xfc,0x3e,0x30,0x09,0x5a,0x7b,0xb4,0xcc,
+ 0x22,0x34,0xe6,0xc3,0x53,0x6e,0x6d,0x3b,0x77,0x71,0x00,0xf3,0xc2,0x24,0x38,0xa7,
+ 0x1a,0xfd,0x4b,0x45,0xa2,0x47,0xb1,0x24,0x7b,0x55,0x7c,0x78,0xa9,0xea,0x40,0xcc,
+ 0xb7,0x30,0x6c,0x0c,0x15,0x7c,0x2e,0x2d,0x6d,0x62,0x09,0xef,0xca,0x54,0xfb,0x83,
+ 0xcf,0x71,0x43,0xf4,0x75,0xb4,0x1f,0xc5,0xb3,0x57,0x11,0x02,0x0c,0x3b,0x15,0xae,
+ 0x3c,0x38,0xad,0x22,0x24,0x08,0x6c,0xa5,0x96,0x9b,0x4f,0x64,0xb4,0xda,0x13,0xc2,
+ 0x40,0xfc,0x00,0x03,0xfb,0xab,0xcf,0x1e,0xb5,0x67,0xcb,0xd5,0x2d,0x5d,0xcc,0xb2,
+ 0xd5,0x85,0xa5,0x37,0x9b,0xb4,0x99,0x8d,0x21,0x67,0x92,0xdb,0x4a,0x70,0x96,0xd1,
+ 0xfd,0x94,0x74,0xa7,0xf4,0xad,0x13,0xe1,0xd3,0x1d,0x8c,0x66,0x1a,0xcc,0x62,0x41,
+ 0xc5,0xcf,0xa1,0x91,0xdb,0x7f,0xa8,0x70,0x53,0x4f,0xdd,0x60,0x6a,0xde,0x1e,0x1a,
+ 0x98,0x2b,0xd9,0xa6,0xed,0xb1,0x99,0x01,0xb0,0xe4,0x4b,0x0c,0x79,0x37,0x79,0x3c,
+ 0xfe,0xea,0x52,0xd9,0x6d,0xb2,0x3f,0xfc,0xaf,0x35,0x57,0x3f,0x98,0xe4,0x28,0xc4,
+ 0x71,0x1b,0xe5,0xf5,0xc0,0x0b,0x76,0xb8,0x2f,0xcd,0x50,0x3e,0x9c,0x36,0xda,0x96,
+ 0x7f,0xe9,0xaa,0xe1,0xf0,0x73,0xc2,0x1c,0x5d,0xc3,0x51,0xf3,0x07,0x59,0x29,0x69,
+ 0xb6,0xa2,0xda,0x63,0x3c,0x47,0x65,0x15,0x15,0x3a,0xf2,0x47,0xe5,0xd2,0xc1,0xfe,
+ 0xd0,0xa9,0xa1,0xbc,0xbc,0x88,0xe2,0xdb,0x56,0xd5,0x19,0xc9,0x07,0xa9,0x76,0x37,
+ 0xe1,0x82,0x3d,0x8b,0xe3,0xc8,0xe7,0xf4,0xf3,0x79,0xac,0x2e,0x7d,0x97,0xed,0x5c,
+ 0xd6,0xca,0x21,0xb8,0x6f,0x67,0x1f,0xe6,0x37,0x3f,0xf6,0xb2,0xf7,0x08,0xd3,0x1d,
+ 0xd5,0x07,0x49,0x92,0xec,0xc9,0x2e,0xc8,0x7d,0xc5,0x3a,0xfb,0xab,0x2e,0x38,0xe2,
+ 0xcf,0x2a,0x52,0x89,0xe4,0x92,0x7e,0xa4,0xd5,0xde,0xec,0x0b,0x6d,0x23,0x6f,0x3a,
+ 0x2b,0x19,0x77,0x48,0xa1,0xac,0xcb,0x23,0x08,0xb8,0x5d,0x89,0xfd,0xb6,0x07,0x1f,
+ 0x73,0x1b,0xd0,0x71,0xe5,0xa5,0x47,0xa8,0x7f,0x1a,0xdc,0xee,0x40,0x15,0x5f,0x5e,
+ 0x1a,0xdb,0x72,0xff,0x00,0x3c,0xda,0xd4,0x8c,0x96,0xed,0x18,0xb9,0x8b,0x62,0x0a,
+ 0x6e,0x6b,0xc1,0x68,0xe5,0x12,0x26,0x12,0x4c,0x76,0x7b,0xfa,0x80,0x52,0x5c,0x57,
+ 0xaf,0x66,0xc0,0x3f,0xb6,0x0d,0x59,0x4e,0xf6,0xb5,0xb0,0xe8,0x46,0xdd,0x32,0x6b,
+ 0xf4,0x57,0x92,0xcd,0xee,0x6a,0x05,0xaa,0xd4,0x54,0xae,0x0f,0xc4,0xbc,0x08,0x0b,
+ 0x4f,0xe2,0x84,0x07,0x1c,0x03,0xfd,0x9d,0x6d,0xff,0x00,0x11,0x31,0x59,0x71,0x1a,
+ 0xb8,0x32,0xc5,0x01,0xef,0x38,0xb7,0x5f,0xa9,0xf9,0x5a,0x7c,0x87,0xcc,0x7d,0xba,
+ 0x28,0xa0,0x68,0x68,0x32,0x39,0x64,0x5a,0x0d,0xaf,0x96,0x8d,0x79,0x19,0xbb,0xb6,
+ 0x72,0xd2,0xa2,0xe3,0xb9,0x0b,0xf6,0x56,0xde,0x69,0xc0,0xb4,0xc9,0x6d,0xb4,0x36,
+ 0x52,0xfa,0x48,0xed,0xd2,0xb2,0xa5,0xf0,0x47,0xa8,0x4f,0x35,0xa3,0xfc,0x4d,0xb5,
+ 0xd2,0x4e,0x95,0xe8,0xd5,0xb3,0x1a,0xb5,0x3c,0xa8,0xf7,0x8c,0xbe,0x6f,0xc2,0x97,
+ 0x50,0xa2,0x95,0x37,0x0d,0xa2,0x85,0xc8,0x29,0x23,0xdd,0x45,0x4d,0x36,0x47,0xa1,
+ 0x4b,0x8b,0xfc,0x2a,0x2c,0x78,0x47,0x6a,0x91,0xc7,0x35,0x93,0x21,0xc1,0xe4,0xc8,
+ 0x42,0x22,0x64,0xb6,0xff,0x00,0x88,0x8e,0xda,0xcf,0x75,0x4a,0x8d,0xca,0x80,0x4f,
+ 0xe6,0xd2,0xdf,0x27,0xeb,0xe5,0x8f,0xa5,0x61,0xbe,0x25,0x5a,0x94,0x9d,0x42,0xdd,
+ 0xa4,0x8b,0x4c,0x69,0x3f,0x11,0x6f,0xc6,0x58,0x8d,0x67,0x40,0x42,0xf9,0x6c,0x3d,
+ 0xcf,0x9a,0xff,0x00,0x03,0xd9,0x41,0x6e,0x96,0xd5,0xef,0xcb,0x5c,0x7b,0x0a,0xc2,
+ 0xe1,0xf9,0x3a,0x3a,0x4c,0xe4,0x28,0xf4,0xde,0x18,0x9a,0x24,0x17,0xf1,0x00,0x00,
+ 0x3f,0xdf,0xeb,0x62,0xbd,0xba,0x4b,0xc5,0x7f,0x15,0x73,0x2c,0x38,0x5d,0x65,0xb5,
+ 0x9f,0x55,0x24,0x2b,0xfe,0x15,0x01,0x7c,0x3a,0xd2,0x9b,0x7e,0xe5,0x37,0x3b,0x01,
+ 0x09,0xe9,0x42,0x6f,0x9f,0x28,0xe3,0xd0,0x26,0x64,0xd0,0x3f,0xea,0xa9,0xf4,0xca,
+ 0x3c,0xb6,0x50,0x8f,0xe1,0x48,0x15,0x5f,0xdb,0x0d,0x7d,0x2c,0x6f,0x3f,0x72,0xb0,
+ 0xca,0x90,0x16,0xe5,0xca,0x4b,0xa1,0x1c,0xfc,0xc4,0x26,0x7b,0xc0,0x90,0x3e,0x83,
+ 0xac,0x73,0xf9,0x8a,0xd0,0x70,0x21,0xab,0x07,0xc5,0x9a,0x3f,0xa2,0x33,0xf4,0x90,
+ 0x29,0x5f,0xf3,0x35,0x6d,0x0f,0x13,0xe9,0xb7,0xcb,0x66,0xd6,0x65,0xcd,0xb1,0xdd,
+ 0x66,0xda,0x94,0xc5,0xda,0x21,0x96,0xb8,0x4f,0xa9,0x95,0x3a,0xc2,0xba,0xd0,0x5b,
+ 0x51,0x49,0x04,0xa4,0xad,0x6d,0x92,0x3d,0x39,0x48,0xa8,0xdb,0xe1,0x3d,0xaf,0x17,
+ 0xf9,0x7a,0x8d,0x7e,0xd3,0xcb,0xe5,0xf2,0x5d,0xca,0xd7,0x32,0xda,0x67,0x5b,0x99,
+ 0x9f,0x25,0x6e,0xf9,0x0f,0x32,0xb1,0xd6,0x86,0x42,0x89,0xe9,0x0a,0x43,0x8a,0x52,
+ 0x80,0xff,0x00,0x54,0x0f,0xb1,0xa9,0x99,0xbe,0xfc,0x49,0xcc,0xcf,0x69,0x1a,0x93,
+ 0x09,0xa1,0xcb,0xb1,0xad,0xc2,0xe4,0x0f,0x1e,0x82,0x33,0xa8,0x90,0xbf,0xfd,0x0d,
+ 0x2b,0xfb,0xea,0x9f,0xf6,0x81,0x9b,0x2b,0x4f,0x77,0x39,0xa6,0xd7,0xa0,0xf2,0x63,
+ 0xb6,0x9b,0xcb,0x31,0x1e,0x75,0x67,0x84,0xa5,0x99,0x1c,0xb0,0xe1,0x27,0xd8,0x74,
+ 0x3a,0xaa,0xe8,0xf9,0x4a,0x8a,0x1c,0x63,0x26,0xd7,0x51,0x96,0x82,0xf6,0x97,0x11,
+ 0xb6,0xf7,0x0d,0x6b,0x9b,0xfa,0x82,0x3d,0x14,0x32,0x12,0xd9,0x5a,0x55,0xdf,0xeb,
+ 0xae,0x96,0xc4,0xd6,0xad,0x21,0xca,0xf0,0xa9,0x9c,0x25,0x37,0x78,0x2b,0x65,0x97,
+ 0x4f,0xff,0x00,0x49,0xf1,0xf3,0x32,0xe7,0xf6,0x5c,0x4a,0x15,0xc7,0xbf,0x1c,0x7b,
+ 0xd4,0x65,0xf0,0xad,0xce,0xe7,0xdc,0x74,0x5b,0x21,0xc0,0x6f,0x08,0x53,0x17,0x6c,
+ 0x26,0xf0,0xe4,0x53,0x15,0xd4,0xf4,0xb8,0xc3,0x2f,0x15,0x2c,0x21,0x60,0xf7,0xe4,
+ 0x3c,0x99,0x23,0xbf,0xd0,0x0f,0x6a,0x9a,0xde,0x95,0x0b,0xe0,0xd8,0x9b,0xd0,0x1f,
+ 0x11,0xdf,0x31,0x89,0x21,0x8c,0x7b,0x56,0xec,0xef,0xb9,0xf0,0xfc,0x84,0x36,0x8b,
+ 0x93,0x1c,0x2d,0x7c,0x8f,0x72,0xae,0x85,0x28,0x13,0xea,0xa9,0x2a,0x15,0xcc,0xf0,
+ 0x79,0xbf,0x8c,0xc2,0xab,0x70,0x97,0xf3,0x6e,0xd9,0x9f,0xdd,0x1f,0xcf,0x6f,0x33,
+ 0x1d,0xff,0x00,0x2a,0x9d,0xc2,0xce,0x0e,0xf6,0x5d,0x5f,0x8b,0x46,0x95,0x2b,0x2c,
+ 0xd0,0xcb,0x46,0x67,0x15,0x94,0xae,0x5e,0x29,0x70,0x01,0xf5,0x7a,0x11,0x12,0x4f,
+ 0x4b,0x6b,0x23,0xeb,0xc3,0xa2,0x3f,0x6f,0xa1,0x51,0xa8,0xff,0x00,0xe1,0xd7,0xbe,
+ 0x37,0x34,0xea,0xeb,0x03,0x4b,0xf3,0xcb,0x81,0x38,0x94,0xc7,0x03,0x36,0x8b,0x9c,
+ 0x85,0x73,0xf6,0x63,0xca,0x3d,0x9a,0x59,0xff,0x00,0x52,0xb5,0x1e,0x01,0x3d,0x9b,
+ 0x51,0xe4,0xf0,0x92,0x4a,0x6c,0x2f,0x75,0x91,0xf1,0xcb,0x86,0xdd,0xf3,0xeb,0x76,
+ 0x51,0x78,0x81,0x62,0xb6,0xce,0xb4,0xc8,0x8e,0xdc,0xdb,0x8b,0xa1,0xb6,0x91,0x20,
+ 0xa0,0x96,0x0f,0x7f,0xda,0x3e,0x60,0x41,0x09,0x1d,0xc9,0x1c,0x0e,0xf5,0xe7,0xf6,
+ 0xba,0xe6,0x45,0xa4,0x83,0x32,0xe5,0xa9,0xb0,0x9a,0xe6,0xdd,0xac,0x71,0xd2,0x6d,
+ 0xf2,0xdc,0x5c,0x16,0x9e,0xa1,0xd7,0xf6,0x36,0x3b,0x1d,0xed,0xa6,0x26,0x37,0x87,
+ 0x05,0xe9,0x6f,0xd2,0xa9,0x23,0x73,0x38,0xbc,0xcd,0xa0,0x6f,0x71,0x77,0x9b,0x0a,
+ 0x5c,0x8d,0x16,0x2d,0xd6,0x3e,0x53,0x68,0x00,0x74,0x82,0xca,0xdd,0xf3,0x14,0xd0,
+ 0xe3,0xd5,0xb0,0xe2,0x5e,0x67,0x8f,0x74,0xa3,0x83,0xea,0x6a,0x6c,0x78,0x67,0xee,
+ 0xc5,0xdd,0x5d,0xc2,0x1d,0xd3,0xdc,0x9e,0x61,0x7b,0x2d,0xc6,0xe3,0xa5,0x51,0x24,
+ 0xbb,0xfb,0x53,0xad,0xe3,0x84,0x82,0xa3,0xcf,0x75,0xb4,0x4a,0x50,0xa2,0x78,0xe5,
+ 0x2a,0x6c,0xfc,0xc7,0xac,0xd6,0x15,0xe2,0xb1,0x89,0x59,0x75,0x23,0x4c,0x2c,0x3a,
+ 0x85,0x8c,0xdd,0x2d,0xb7,0xa7,0xb1,0x5b,0x8a,0xad,0x37,0x45,0xdb,0x64,0x36,0xf9,
+ 0x65,0xa7,0xf8,0xe9,0x0e,0x29,0x0a,0x3d,0x25,0x0e,0xa1,0x29,0xe9,0x3d,0xf9,0x78,
+ 0xfa,0x77,0xad,0x77,0x27,0x36,0xaf,0x2a,0x66,0x87,0xe1,0x75,0x63,0xba,0xfe,0xe1,
+ 0x3e,0x06,0xfb,0xb1,0xde,0xfc,0x0f,0xee,0x23,0x90,0xbd,0xcb,0x69,0x23,0xd4,0x15,
+ 0xa8,0x63,0x99,0x04,0x0c,0xb3,0x1e,0xb5,0xdf,0x2d,0x52,0x51,0x32,0xd7,0x73,0x8a,
+ 0xd4,0xd8,0x92,0x5b,0x3c,0xa5,0xd6,0x5c,0x40,0x5a,0x16,0x3f,0x02,0x95,0x03,0xfa,
+ 0xd7,0x63,0x51,0x47,0xc3,0x03,0x53,0x9b,0xd4,0xad,0x9c,0x61,0xc8,0x2f,0x17,0xa7,
+ 0xe3,0xaa,0x7a,0xc1,0x2c,0x1f,0xdc,0x2c,0xab,0xa9,0x94,0x8f,0xc3,0xc8,0x71,0x8f,
+ 0xf8,0xfd,0x2a,0x57,0x57,0xd4,0xcb,0x1e,0x95,0x53,0xde,0x38,0x39,0x8a,0x9c,0xbc,
+ 0xe9,0x5e,0x28,0xdb,0xe4,0x25,0x98,0xf3,0x6e,0x8f,0xb0,0x0f,0x62,0x56,0xa6,0x9b,
+ 0x69,0x44,0x7e,0x1e,0x5b,0xa0,0x7e,0x66,0xad,0x86,0xb4,0x06,0x7f,0xb3,0x2c,0x1b,
+ 0x58,0x37,0x00,0xce,0xa8,0x67,0xf1,0x1b,0xca,0x15,0x6d,0xb5,0xb1,0x6a,0xb4,0xd8,
+ 0xa5,0x36,0x0c,0x26,0x52,0x85,0xba,0xe2,0x9d,0x79,0x07,0xb3,0xcb,0x2a,0x79,0x40,
+ 0x25,0x43,0xa4,0x00,0x09,0x0a,0x3c,0x74,0x91,0x52,0x06,0xdf,0x62,0xeb,0x85,0xaa,
+ 0x36,0x41,0x2f,0x49,0x71,0x9c,0x96,0x70,0xbe,0x40,0x5d,0xa2,0x5d,0xca,0xc7,0x67,
+ 0x7a,0x4a,0x92,0xca,0x96,0x92,0xb4,0xb6,0xf2,0x50,0x7c,0xb5,0x72,0x90,0x3a,0x81,
+ 0x04,0x7b,0x10,0x78,0x23,0xbc,0xc2,0xf4,0xfb,0x72,0xdb,0x5f,0xbe,0xaf,0x28,0xb1,
+ 0x61,0x59,0xc6,0x26,0xf3,0x6d,0x7f,0x48,0x93,0xf6,0x2b,0xeb,0x8a,0xe3,0x5e,0xa5,
+ 0x2f,0x02,0x82,0xda,0xd2,0x3d,0x78,0x57,0x3c,0x11,0xcf,0x62,0x39,0xaf,0x43,0x90,
+ 0xe1,0xc7,0xb7,0x44,0x62,0x24,0x46,0x1b,0x8b,0x15,0x84,0x25,0xa6,0x98,0x65,0x01,
+ 0x08,0x6d,0x09,0x1c,0x25,0x29,0x48,0xec,0x00,0x00,0x00,0x07,0xa5,0x7d,0xaa,0xce,
+ 0x4a,0x2a,0x69,0x44,0x82,0x48,0xda,0x7b,0x4f,0x9a,0xe0,0x1d,0x56,0xd8,0x5f,0xad,
+ 0xbc,0xd5,0x6e,0x47,0x8a,0xa5,0xcb,0x1f,0x8c,0x46,0x69,0x1a,0xdc,0x86,0xee,0xf8,
+ 0x05,0x8e,0xe1,0x38,0x0e,0x0c,0x88,0x92,0xde,0x8c,0x85,0x1f,0xaf,0x42,0xba,0xff,
+ 0x00,0xea,0xac,0x1f,0x51,0xfc,0x56,0x35,0x8b,0x32,0x80,0xe4,0x2b,0x1b,0x16,0x5c,
+ 0x2d,0x95,0xff,0x00,0xf7,0x36,0xd8,0xea,0x7a,0x57,0x1e,0xe3,0xad,0xe5,0x29,0x23,
+ 0xf3,0x4a,0x01,0x1f,0x5a,0xb0,0xfd,0xf0,0x78,0x75,0x62,0x3b,0x8d,0xc7,0x6e,0x99,
+ 0x1e,0x29,0x6d,0x8b,0x8e,0xea,0x7b,0x48,0x5c,0x86,0x65,0xc5,0x4a,0x59,0x66,0xea,
+ 0xe7,0xed,0x16,0xa5,0x0e,0xc0,0xa9,0x5d,0xc0,0x77,0xb2,0x81,0x20,0xa8,0xa9,0x23,
+ 0x8a,0xa2,0xdb,0xad,0xa6,0x6d,0x8e,0xeb,0x32,0xd9,0x70,0x8a,0xec,0x3b,0x84,0x37,
+ 0x97,0x1e,0x44,0x57,0x90,0x52,0xe3,0x4e,0xa1,0x45,0x2a,0x42,0x81,0xee,0x08,0x20,
+ 0x82,0x3f,0x0a,0xd5,0x62,0xc9,0x59,0x7a,0x09,0x7b,0x56,0x51,0xb6,0xfe,0x77,0x23,
+ 0xe8,0x49,0x1f,0xa2,0x93,0xb5,0x79,0xf1,0x4b,0xb5,0xda,0x75,0xfa,0xe7,0x2a,0xe3,
+ 0x73,0x9b,0x22,0xe3,0x70,0x94,0xe2,0x9e,0x91,0x2e,0x5b,0xaa,0x75,0xd7,0x96,0xa3,
+ 0xca,0x94,0xb5,0xa8,0x92,0xa5,0x13,0xdc,0x92,0x79,0xac,0xff,0x00,0x49,0xb7,0x1d,
+ 0xa8,0xfa,0x1b,0x6f,0xbc,0xc1,0xc1,0xf2,0x99,0x56,0x18,0x97,0x74,0x74,0x4b,0x65,
+ 0xa4,0x36,0xe2,0x49,0xe0,0xa4,0x2d,0x1d,0x69,0x57,0x96,0xe0,0x07,0x8e,0xb4,0x70,
+ 0xaf,0x4e,0xfd,0x85,0x62,0xb2,0xf4,0xfb,0x29,0xb7,0xda,0x45,0xd6,0x56,0x35,0x78,
+ 0x8d,0x6c,0x23,0x91,0x35,0xe8,0x0e,0xa1,0x92,0x3e,0xbd,0x65,0x3d,0x3e,0xe3,0xde,
+ 0xba,0x0a,0xdb,0x27,0xa5,0xa7,0xa9,0x8b,0xb0,0x9e,0x30,0xe6,0x6d,0xb1,0x00,0x8d,
+ 0xb8,0xd8,0xed,0xb7,0x82,0x8c,0x12,0x0d,0xc2,0xfd,0x5a,0xd4,0xe2,0xd4,0xa5,0x28,
+ 0xa9,0x4a,0x3c,0x95,0x13,0xc9,0x26,0xac,0x0b,0xc2,0x23,0x48,0xd5,0x7b,0xd4,0x5c,
+ 0x9f,0x51,0x25,0xb0,0x95,0x44,0xb1,0x45,0x16,0xd8,0x2b,0x5a,0x79,0x3f,0x14,0xff,
+ 0x00,0x75,0xa9,0x07,0xd8,0xa5,0xa4,0x94,0x9f,0xc1,0xf1,0xf8,0xd5,0x7e,0x54,0xd4,
+ 0xda,0xc7,0x88,0x55,0x9b,0x6b,0xda,0x57,0x03,0x0e,0x85,0xa7,0x0f,0x5f,0x1f,0x72,
+ 0x5b,0xb3,0xae,0x97,0x45,0x5e,0x44,0x72,0xf3,0xcb,0x57,0x48,0xe8,0x6b,0xc8,0x5f,
+ 0x01,0x2d,0x21,0xa4,0xf7,0x57,0x72,0x92,0x7b,0x73,0x5a,0x96,0x72,0xa7,0xc4,0x6b,
+ 0x30,0x69,0x69,0x30,0xc8,0xf5,0xc9,0x25,0x9b,0xc8,0x16,0x6f,0x2e,0xdd,0xc4,0x0d,
+ 0xc0,0xb7,0x5d,0xd4,0xb1,0x16,0x87,0x5d,0xc5,0x59,0xb6,0xe8,0x73,0xbf,0xf3,0x69,
+ 0xb7,0x7d,0x43,0xc8,0x92,0xe9,0x66,0x44,0x5b,0x34,0x84,0x46,0x70,0x7e,0xec,0x87,
+ 0x13,0xe5,0x32,0x7f,0xf3,0x16,0x8a,0xf3,0xeb,0x56,0x8b,0xbc,0x9d,0xe1,0xe1,0xba,
+ 0xe7,0xb2,0x09,0x53,0x71,0x39,0x0b,0x44,0x9b,0xbd,0xea,0x1d,0xa6,0x7d,0xaa,0x59,
+ 0x4a,0x65,0xc0,0x50,0x2b,0x93,0xca,0xd2,0x09,0xe5,0x2a,0xf8,0x6f,0x95,0x60,0x90,
+ 0x41,0xf6,0x21,0x40,0x55,0xd5,0x6a,0x9f,0x0c,0xb0,0xa9,0xb0,0xdc,0x3e,0xa0,0xd5,
+ 0x30,0xb2,0x43,0x21,0x04,0x1e,0x6c,0xd0,0x2d,0xfa,0x93,0xff,0x00,0x8a,0x49,0xdc,
+ 0x1c,0x45,0x95,0x9a,0xed,0x97,0x5d,0xec,0x1b,0x32,0xd8,0x8d,0xa7,0x26,0xbb,0x32,
+ 0x2e,0x19,0x06,0x5b,0x74,0x9d,0x36,0xd3,0x65,0x4a,0xfa,0x1c,0x94,0xb4,0x28,0x47,
+ 0xeb,0x51,0xe0,0xf4,0xb6,0x90,0xc2,0x49,0x57,0x1e,0x8a,0x48,0x1c,0x95,0x0a,0x84,
+ 0xda,0xcf,0xba,0xdd,0x50,0xd7,0x99,0xd3,0x17,0x94,0xe5,0x73,0x55,0x6c,0x90,0xa2,
+ 0x45,0x8e,0x0b,0xaa,0x8f,0x6f,0x6d,0x3d,0x5c,0xa5,0x21,0x94,0x9e,0x15,0xd3,0xdb,
+ 0x85,0x2f,0xa9,0x5d,0x87,0x2a,0x27,0xbd,0x61,0x19,0xd6,0x7f,0x72,0xcf,0xa4,0x59,
+ 0xd5,0x3d,0x49,0x44,0x6b,0x3d,0xae,0x35,0x9e,0x04,0x66,0xc7,0x08,0x62,0x3b,0x28,
+ 0xe0,0x01,0xf8,0xa9,0x45,0x6e,0x28,0xfb,0xad,0xc5,0x1e,0xdc,0xf0,0x31,0xaa,0xdb,
+ 0xf0,0xac,0xb5,0x4b,0x47,0x53,0x36,0x25,0x3b,0x03,0xaa,0x25,0x71,0x71,0x27,0x7d,
+ 0x20,0x9d,0x9a,0xde,0x96,0x16,0x04,0x8d,0xc9,0xf2,0xb0,0x11,0x3a,0x42,0x40,0x68,
+ 0xe1,0x5d,0xd7,0x86,0xbe,0x27,0x69,0xc6,0xf6,0x8b,0x89,0x4c,0xb6,0xa5,0x2a,0x7e,
+ 0xf2,0xec,0xbb,0x84,0xe7,0x81,0xfe,0xb1,0xff,0x00,0x88,0x5b,0x3f,0xa7,0x4a,0x19,
+ 0x42,0x38,0xfe,0x42,0x7d,0xcd,0x42,0x9f,0x15,0xed,0x6b,0xff,0x00,0x2d,0x75,0x96,
+ 0xdd,0x81,0x41,0x70,0x2a,0xd9,0x89,0x31,0xcc,0x82,0x85,0x73,0xd7,0x35,0xf4,0xa5,
+ 0x6b,0xe7,0xbf,0x1f,0x23,0x61,0xb4,0x8f,0x70,0xa2,0xe0,0xae,0x9b,0x65,0x9e,0x20,
+ 0x49,0xdb,0x36,0x09,0x7d,0xc4,0xb2,0x1b,0x1c,0xbc,0x86,0xd4,0x56,0xb9,0xd6,0x8f,
+ 0x83,0x75,0x29,0x5b,0x12,0x14,0x9e,0x14,0xd2,0xfa,0x8f,0x01,0xa5,0x10,0x95,0x72,
+ 0x9e,0xe9,0x3d,0x67,0xa5,0x7d,0x5d,0xa2,0x36,0x4b,0x90,0xce,0xcb,0xb2,0x3b,0xad,
+ 0xf6,0xe8,0xf1,0x93,0x73,0xba,0x4b,0x76,0x6c,0xa7,0x8f,0xab,0x8e,0xb8,0xb2,0xb5,
+ 0xab,0xf5,0x52,0x89,0xad,0x2f,0x01,0xca,0x75,0x54,0xf9,0xa6,0xb3,0x16,0xae,0x17,
+ 0x68,0x2e,0x31,0x9e,0xba,0xef,0xbf,0xf8,0xb7,0xbb,0xbf,0x5d,0xb8,0x52,0xbe,0x40,
+ 0x63,0x0d,0x0b,0x97,0x81,0xe6,0xf7,0x7d,0x36,0xcc,0xac,0xd9,0x4d,0x86,0x4f,0xc2,
+ 0x5e,0x2d,0x32,0x91,0x2e,0x33,0xbc,0x72,0x02,0xd2,0x79,0xe1,0x43,0xdd,0x27,0xb8,
+ 0x23,0xdc,0x12,0x3d,0xeb,0x97,0x02,0xed,0x37,0x39,0xd4,0xf8,0xd7,0x3b,0xb4,0x83,
+ 0x2a,0xe3,0x78,0xbc,0x26,0x44,0xb7,0xd4,0x38,0xf3,0x1d,0x75,0xe0,0xa5,0xa8,0x81,
+ 0xc7,0xa9,0x51,0x3d,0xab,0x17,0xae,0xdf,0x0e,0x94,0x98,0x39,0x7d,0x8e,0x4a,0xfb,
+ 0xa1,0x99,0xcc,0x38,0x7f,0x20,0xe2,0x4f,0xfd,0xab,0xae,0x4b,0x13,0x3b,0xf3,0x35,
+ 0xa3,0x5e,0x9b,0x5f,0xc6,0xdb,0x9b,0x5f,0xa5,0xd5,0xb0,0xe8,0xbd,0x22,0x1f,0x53,
+ 0x5e,0x7e,0x77,0x01,0x7f,0xb8,0x59,0x77,0x35,0xa9,0x77,0x1b,0x54,0xf9,0x36,0xe9,
+ 0xad,0xe4,0xf7,0x22,0xdc,0xa8,0x6f,0x29,0xa7,0x10,0x7e,0x25,0xc1,0xd9,0x49,0x20,
+ 0x8a,0x9f,0xbb,0x85,0xf1,0x58,0x6b,0x4e,0xf5,0x42,0x6e,0x33,0x83,0x63,0x30,0x32,
+ 0x6b,0x65,0xa6,0x42,0xa3,0xce,0xba,0xcc,0x94,0xb4,0xa6,0x4b,0x89,0x3c,0x2d,0x11,
+ 0xfa,0x07,0x01,0x29,0x20,0x8f,0x30,0xf5,0x05,0x1e,0x78,0x4f,0x1c,0x15,0x56,0x46,
+ 0x73,0x94,0x39,0x9c,0x66,0xd9,0x06,0x46,0xf3,0x3f,0x0e,0xf5,0xe2,0xe1,0x22,0xe0,
+ 0xb6,0x82,0xba,0xba,0x14,0xeb,0x8a,0x70,0xa7,0x9e,0x07,0x3c,0x15,0x71,0xcf,0x02,
+ 0xb8,0x87,0xc3,0x6c,0xb9,0x88,0x61,0x6e,0x96,0xaa,0xba,0x2d,0x2c,0x95,0x82,0xd7,
+ 0x22,0xfc,0xdf,0x71,0xc8,0xdb,0xaa,0xbb,0x9d,0xed,0x76,0xc0,0xa9,0x3b,0xa4,0xfe,
+ 0x21,0xf9,0x95,0x93,0x00,0xcb,0x70,0x5d,0x45,0x91,0x3b,0x39,0xc7,0xef,0x56,0x69,
+ 0x96,0xf6,0x26,0xc9,0x74,0x39,0x3e,0x1b,0x8e,0xb0,0xe2,0x12,0x4b,0x8b,0x3c,0xba,
+ 0x82,0xa5,0x00,0xa0,0xb2,0x54,0x07,0x74,0x9e,0xdd,0x2a,0x89,0x08,0x5a,0x9a,0x5a,
+ 0x56,0x85,0x14,0x2d,0x27,0x90,0xa4,0x9e,0x08,0x3f,0x51,0x5f,0x94,0xae,0xcb,0x47,
+ 0x85,0x51,0xe1,0xf2,0x4b,0x25,0x24,0x61,0x86,0x42,0x0b,0x80,0xd8,0x12,0x3c,0x6d,
+ 0xc0,0x3d,0x6d,0xcf,0xaa,0xb5,0x2e,0x2e,0xe5,0x5e,0x86,0xb0,0x6e,0xc6,0x36,0x93,
+ 0xed,0x32,0xcd,0xaa,0xc5,0x96,0x27,0xdd,0x6f,0x76,0xd8,0x2a,0xb6,0x43,0x75,0x45,
+ 0x2d,0xbf,0x32,0x4b,0x21,0xc0,0x15,0xc7,0x7e,0x94,0x0f,0x31,0x6a,0x03,0x82,0x43,
+ 0x64,0x72,0x09,0xe6,0xaa,0x06,0xe1,0xb9,0x1c,0xe7,0x28,0xd6,0x7c,0x7f,0x52,0xb2,
+ 0x9b,0xd4,0x9c,0x86,0xf9,0x67,0x9f,0x1e,0x6b,0x01,0xf5,0xf4,0x36,0xda,0x5a,0x74,
+ 0x38,0x1a,0x6d,0x09,0x01,0x2d,0xa0,0x90,0x7b,0x24,0x01,0xca,0x89,0xf5,0x24,0xd6,
+ 0x57,0xaa,0x1a,0xd2,0xc6,0x67,0xb4,0xcd,0x1c,0xc2,0x13,0x70,0x2f,0xdc,0xb1,0xcb,
+ 0x85,0xd9,0x13,0x22,0xa9,0x44,0xa9,0x2d,0x95,0xb6,0xb8,0xcb,0x23,0xe9,0xd2,0xf3,
+ 0x88,0x4f,0xfe,0x1a,0x87,0xb5,0x6a,0x16,0x74,0xf7,0x29,0x91,0x66,0x37,0x76,0xb1,
+ 0xab,0xc3,0xb6,0x90,0x9e,0xa3,0x3d,0x10,0x1d,0x2c,0x01,0xf5,0xf3,0x3a,0x7a,0x78,
+ 0xfd,0x6b,0x46,0xca,0x39,0x52,0x97,0x08,0x82,0x77,0x4b,0x18,0x32,0x3d,0xf2,0x36,
+ 0xe4,0x6f,0xa0,0x38,0xb4,0x01,0xd0,0x10,0x2f,0xb7,0x37,0xf2,0x0a,0x69,0x64,0x2e,
+ 0x22,0xcb,0x67,0xee,0xff,0x00,0x70,0xf7,0x3d,0xc5,0x6b,0x3d,0xf2,0xf2,0xbb,0x8b,
+ 0xb2,0x31,0x98,0x92,0x1c,0x8b,0x62,0x89,0xf3,0x25,0xa6,0x62,0x25,0x5d,0x29,0x58,
+ 0x41,0xf4,0x5b,0x80,0x05,0xa8,0x9e,0xfc,0xab,0x8e,0xc1,0x29,0x03,0x48,0x80,0x49,
+ 0x00,0x0e,0x49,0xf6,0x15,0xd8,0x63,0xd8,0xf5,0xcb,0x2c,0xc8,0x2d,0xb6,0x3b,0x3c,
+ 0x27,0x6e,0x17,0x6b,0x8c,0x96,0xe2,0x44,0x86,0xc2,0x79,0x71,0xe7,0x96,0xa0,0x94,
+ 0x21,0x23,0xea,0x49,0x03,0xf5,0xab,0xe1,0xd9,0x67,0x87,0xb6,0x17,0xb6,0x3c,0x72,
+ 0xdf,0x77,0xbd,0x41,0x87,0x93,0x6a,0x5b,0x88,0x4b,0xd2,0xaf,0x32,0x1a,0x0e,0x22,
+ 0x0b,0x9c,0x7f,0x57,0x10,0x28,0x7c,0x81,0x3c,0xf1,0xe6,0x76,0x5a,0xcf,0x27,0xb0,
+ 0x21,0x29,0xe8,0x34,0x54,0x70,0xe1,0xf4,0xd1,0xd2,0xd3,0xb6,0xcc,0x60,0x00,0x0f,
+ 0x4f,0xfd,0xeb,0xd4,0xa8,0x09,0x2e,0x37,0x2a,0x9b,0x70,0xdd,0xb4,0xeb,0xac,0xde,
+ 0x2e,0x58,0xd6,0x9b,0x67,0x29,0x0e,0xb0,0xeb,0x62,0x6c,0x3b,0x44,0xa6,0x92,0xb6,
+ 0x9c,0x6d,0x48,0x71,0x21,0xce,0x90,0x0a,0x56,0x85,0x29,0x24,0x73,0xf3,0x05,0x11,
+ 0xdc,0x1a,0xc7,0x32,0xbd,0x30,0xd4,0xdd,0x24,0xb7,0xcb,0x6f,0x23,0xc5,0x72,0xac,
+ 0x3e,0x05,0xc1,0x29,0x8f,0x24,0x5c,0x60,0x49,0x86,0xcc,0x94,0x85,0x85,0xa5,0x0b,
+ 0xea,0x4a,0x52,0xb1,0xd4,0x84,0xa8,0x03,0xcf,0x74,0x83,0xec,0x2b,0xd3,0x65,0x71,
+ 0xae,0x76,0xc8,0x77,0xab,0x7c,0x98,0x17,0x08,0x8c,0x4f,0x83,0x25,0xb2,0xd3,0xf1,
+ 0x64,0xb6,0x1c,0x69,0xd4,0x11,0xc1,0x4a,0x92,0xa0,0x42,0x81,0x1e,0xa0,0xd5,0xd1,
+ 0x63,0x49,0xb9,0x1f,0xfc,0x38,0xfa,0x2a,0x2a,0xc4,0xf0,0x3f,0xcd,0xc3,0xd8,0xf6,
+ 0xa9,0x61,0xee,0xba,0x94,0x98,0xd2,0xa1,0xdd,0xa3,0xb6,0x4f,0x75,0x79,0x88,0x71,
+ 0xa7,0x48,0x1f,0x87,0x94,0xcf,0xf8,0x85,0x5a,0x25,0x68,0x0d,0x2e,0xd9,0x86,0x0b,
+ 0xa2,0x1a,0xf1,0x74,0xd4,0x8c,0x09,0x93,0x8e,0x33,0x78,0xb5,0x3d,0x6d,0xb8,0xe3,
+ 0xac,0x27,0xfa,0x12,0x96,0xa7,0x59,0x75,0x0f,0x32,0x39,0xfb,0xa2,0x0b,0x4a,0x05,
+ 0x03,0x94,0x9e,0xb1,0xd2,0x11,0xc1,0x0a,0xdf,0xf5,0xed,0x12,0x94,0xa5,0x11,0x29,
+ 0x4a,0x51,0x12,0xb5,0xde,0x33,0xb7,0xad,0x38,0xc3,0xf5,0x03,0x21,0xce,0x2d,0x38,
+ 0x7d,0xae,0x36,0x5b,0x7e,0x91,0xf1,0x53,0xae,0xc5,0x80,0xb7,0xd4,0xe7,0x48,0x04,
+ 0xa1,0x4a,0xe7,0xcb,0x0a,0x23,0xa9,0x41,0x1d,0x3d,0x4a,0x25,0x4a,0xe4,0xf7,0xad,
+ 0x89,0x4a,0x22,0xfc,0x23,0x91,0x51,0xc3,0x72,0x9b,0x06,0xd2,0x6d,0xca,0x5a,0xa5,
+ 0xae,0xe3,0x62,0x8f,0x8e,0xe5,0x4a,0x6d,0x42,0x3e,0x49,0x66,0x65,0x2c,0xc8,0x43,
+ 0x9d,0xb8,0x2e,0xa5,0x3c,0x25,0xf4,0xf6,0x00,0x85,0x82,0x78,0xe4,0x25,0x48,0x27,
+ 0x9a,0x92,0x14,0xa2,0x2f,0x34,0xfb,0x8d,0xdb,0xbe,0x57,0xb6,0x3d,0x4d,0x9d,0x86,
+ 0x65,0x6c,0x0f,0x39,0xb1,0xe7,0x43,0x9e,0xc8,0x3e,0x44,0xf8,0xe4,0x90,0x87,0x9b,
+ 0x27,0xd8,0xf0,0x41,0x1e,0xa9,0x50,0x20,0xfa,0x56,0x35,0xa7,0x1a,0x53,0x98,0xea,
+ 0xfe,0x40,0xdd,0x93,0x0b,0xc6,0xae,0x59,0x35,0xcd,0x45,0x20,0xb1,0x6e,0x8e,0xa7,
+ 0x3c,0xb0,0x4f,0x01,0x4e,0x28,0x7c,0xad,0xa7,0xf9,0x94,0x42,0x47,0xb9,0xaf,0x40,
+ 0xbb,0xad,0xd9,0xe6,0x1d,0xbb,0x9b,0x5e,0x2f,0x0f,0x29,0x7e,0x55,0xbd,0x56,0x2b,
+ 0x87,0xc5,0x22,0x65,0xbf,0xa4,0x48,0x71,0x85,0x20,0x87,0x63,0x05,0x28,0x10,0x94,
+ 0xac,0x86,0xd4,0x55,0xc1,0x20,0xb6,0x38,0xf5,0x35,0xb3,0x74,0xcf,0x4a,0xb1,0x1d,
+ 0x1a,0xc5,0x23,0xe3,0x78,0x4e,0x3f,0x0b,0x1c,0xb2,0xb0,0x7a,0x84,0x58,0x4d,0xf1,
+ 0xd6,0xae,0x00,0x2b,0x71,0x47,0x95,0x38,0xb2,0x00,0xe5,0x6b,0x25,0x47,0x81,0xc9,
+ 0x34,0x45,0x4e,0x58,0x17,0x83,0x9e,0xb9,0xe4,0xb1,0x52,0xe5,0xf6,0x7e,0x37,0x87,
+ 0x30,0xa5,0x02,0xe4,0x69,0x93,0xd7,0x25,0xfe,0x40,0x3c,0x1e,0x96,0x10,0xb6,0xcf,
+ 0x1c,0x91,0xdd,0xc1,0xeb,0x59,0xbd,0xdb,0xc1,0x0f,0x3a,0x66,0x12,0x95,0x6c,0xd4,
+ 0x9c,0x7a,0x64,0xbe,0x3e,0x56,0xa5,0xc3,0x7d,0x86,0xc9,0xfc,0x56,0x9e,0xb2,0x3f,
+ 0xc3,0x57,0x03,0x4a,0x22,0xf3,0xf1,0xac,0x3e,0x1a,0xda,0xf7,0xa3,0x50,0x64,0xdc,
+ 0x65,0xe2,0x43,0x26,0xb4,0x47,0x3f,0x79,0x3f,0x18,0x7b,0xe3,0x40,0x1f,0xc5,0xe4,
+ 0x80,0x1e,0x09,0x1d,0xc9,0x51,0x6f,0x80,0x07,0x72,0x2a,0x2f,0xad,0x0a,0x6d,0x6a,
+ 0x42,0xd2,0x52,0xb4,0x9e,0x0a,0x54,0x38,0x20,0xfd,0x2b,0xd5,0x3d,0x44,0x3d,0xe5,
+ 0x78,0x73,0xe0,0xfb,0x9e,0xb7,0xce,0xbe,0x59,0x9a,0x8d,0x88,0x6a,0x3f,0x4a,0x9c,
+ 0x6a,0xf3,0x1d,0xae,0x19,0x9e,0xe7,0x1d,0x91,0x31,0x09,0x1f,0x30,0x3c,0x71,0xe6,
+ 0x8f,0x9d,0x3d,0x8f,0xce,0x07,0x41,0x22,0xa1,0x3a,0x56,0x4b,0xa9,0x1a,0x71,0x91,
+ 0xe9,0x1e,0x6f,0x76,0xc4,0x72,0xdb,0x5b,0xd6,0x6c,0x82,0xd6,0xf7,0x93,0x26,0x23,
+ 0xdc,0x12,0x93,0xc0,0x29,0x52,0x48,0xec,0xa4,0xa9,0x24,0x29,0x2a,0x04,0x85,0x24,
+ 0x82,0x09,0x06,0xb9,0x3a,0x51,0xa5,0x39,0x3e,0xb6,0x67,0xb6,0xac,0x3b,0x10,0xb6,
+ 0xae,0xe9,0x7c,0xb9,0x39,0xd0,0xd3,0x49,0xec,0x94,0x24,0x77,0x53,0x8e,0x2b,0xd1,
+ 0x28,0x48,0xe4,0x95,0x1f,0x40,0x28,0x8b,0x14,0x65,0x97,0x24,0xbc,0x86,0x9a,0x42,
+ 0x9d,0x75,0xc5,0x04,0xa1,0x08,0x1c,0xa9,0x44,0xf6,0x00,0x01,0xea,0x6a,0x53,0xe9,
+ 0x07,0x86,0x56,0xbf,0x6a,0xec,0x18,0xb7,0x16,0x71,0x66,0xf1,0x3b,0x5c,0x8e,0xed,
+ 0xcc,0xca,0x1f,0xf8,0x23,0xc7,0xf1,0x16,0x42,0x54,0xf8,0x1e,0xe0,0xf9,0x7c,0x11,
+ 0xdc,0x72,0x2a,0xd4,0xf6,0x75,0xe1,0xf1,0x81,0xed,0x6a,0xd5,0x0e,0xeb,0x2a,0x34,
+ 0x7c,0xa7,0x51,0x14,0x80,0xa9,0x19,0x04,0xa6,0x82,0x84,0x55,0x94,0xf0,0xa4,0x44,
+ 0x4a,0x87,0xdd,0x24,0x72,0xa1,0xd7,0xfb,0x6a,0x04,0xf2,0x40,0x21,0x29,0x95,0x74,
+ 0x45,0x50,0x16,0xef,0x04,0x3c,0xe1,0xd8,0x69,0x5c,0xfd,0x4b,0xc7,0xe3,0x4c,0x23,
+ 0x95,0x35,0x1e,0x13,0xef,0x36,0x0f,0xfb,0xe7,0xa0,0x9f,0xf0,0xd6,0xbe,0xcf,0x7c,
+ 0x1d,0x75,0xd7,0x16,0x69,0x6f,0x58,0xde,0xc6,0xf3,0x26,0xc1,0x3d,0x2c,0xdb,0xee,
+ 0x06,0x3b,0xe4,0x7d,0x4a,0x64,0x21,0xb4,0x0f,0xd1,0x66,0xaf,0x02,0x94,0x45,0xe5,
+ 0xf3,0x3f,0xd3,0x4c,0xb3,0x4a,0xef,0xee,0xd9,0x33,0x0c,0x72,0xe7,0x8d,0x5d,0x5b,
+ 0x27,0x98,0xd7,0x38,0xcb,0x65,0x4a,0x00,0xf1,0xd4,0x9e,0xa1,0xc2,0xd2,0x7d,0x94,
+ 0x9e,0x41,0xf5,0x04,0x8a,0xce,0x76,0xbd,0xb6,0x4c,0xaf,0x75,0x5a,0x9b,0x1b,0x12,
+ 0xc6,0x52,0x98,0xcc,0x36,0x91,0x22,0xe7,0x76,0x7d,0x3c,0xb3,0x6f,0x8d,0xd4,0x02,
+ 0x9c,0x50,0xe4,0x75,0x28,0xf3,0xc2,0x50,0x0f,0x2a,0x3f,0x40,0x14,0xa4,0xfa,0x18,
+ 0xd5,0x6d,0x1d,0xc3,0x35,0xc3,0x13,0x7f,0x1b,0xce,0x71,0xe8,0x59,0x15,0xa5,0xce,
+ 0x4a,0x5a,0x94,0x8f,0x9d,0x95,0xf0,0x47,0x98,0xd3,0x83,0x85,0x36,0xb0,0x09,0x01,
+ 0x68,0x20,0xf7,0x3d,0xfb,0xd6,0xbf,0xda,0x6e,0xd2,0x31,0x6d,0xa2,0xe2,0x17,0xbb,
+ 0x16,0x37,0x2e,0x4d,0xd1,0x57,0x5b,0x92,0xe7,0x3d,0x70,0x9e,0x84,0x09,0x05,0xbe,
+ 0x3a,0x59,0x65,0x4a,0x48,0x01,0x41,0xb4,0xf3,0xdf,0x81,0xca,0x96,0xb5,0x00,0x9e,
+ 0xae,0x01,0x17,0x5d,0xb7,0x2d,0x8b,0xe9,0x36,0xda,0xed,0x71,0xfe,0xc3,0xc7,0x63,
+ 0xdd,0xf2,0x30,0x84,0x89,0x19,0x1d,0xe1,0xa4,0xbf,0x31,0xc5,0x8e,0x79,0x28,0x2a,
+ 0x1c,0x32,0x93,0xcf,0xec,0xb6,0x13,0xc8,0x03,0xa8,0xa8,0x8e,0x6a,0x41,0xd2,0x94,
+ 0x45,0xae,0xef,0x1b,0x7b,0xd3,0xab,0xee,0xa5,0xd8,0x75,0x0a,0x56,0x23,0x6d,0x19,
+ 0x9d,0x91,0xc7,0x1c,0x89,0x78,0x65,0x90,0xd3,0xc4,0xad,0xb5,0x36,0x7c,0xc2,0x9e,
+ 0x03,0xbc,0x05,0x12,0x9e,0xbe,0xae,0x93,0xdd,0x3c,0x1a,0xd8,0x94,0xa5,0x11,0x29,
+ 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
+ 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x14,0x2e,
+ 0xf1,0x31,0xd9,0xbb,0x3b,0x8c,0xd2,0xc7,0x72,0xcc,0x76,0x08,0x5e,0xa2,0x62,0xf1,
+ 0xd6,0xf4,0x5f,0x21,0xa2,0xa7,0x6e,0x51,0x07,0x2a,0x72,0x21,0xe3,0xba,0x95,0xea,
+ 0xb6,0xfb,0x13,0xd5,0xca,0x40,0x1e,0x61,0x23,0xb8,0xf0,0xe7,0xd9,0xd4,0x5d,0xb0,
+ 0xe9,0x2b,0x17,0x6b,0xd4,0x44,0x1d,0x45,0xc9,0x18,0x6e,0x45,0xd5,0xe5,0x77,0x54,
+ 0x36,0x8f,0xcc,0xdc,0x34,0x9e,0x3b,0x74,0x72,0x0a,0xf8,0xf5,0x73,0x9e,0xea,0x4a,
+ 0x51,0xc4,0xb9,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,
+ 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,
+ 0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,
+ 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
+ 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,
+ 0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,
+ 0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,
+ 0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,
+ 0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,
+ 0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,
+ 0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
+ 0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x7f,0xff,0xd9};
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/ncc1701.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/ncc1701.h
new file mode 100644
index 000000000..d10383d16
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/ncc1701.h
@@ -0,0 +1,318 @@
+//
+// ncc1701
+// Data size = 4912 bytes
+//
+// JFIF, Compression=JPEG, Size: 240 x 77, 24-Bpp
+//
+// for non-Arduino builds...
+#ifndef PROGMEM
+#define PROGMEM
+#endif
+const uint8_t ncc1701[] PROGMEM = {
+ 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x48,
+ 0x00,0x48,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
+ 0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,
+ 0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,
+ 0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,
+ 0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,
+ 0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,
+ 0x00,0x11,0x08,0x00,0x4d,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
+ 0x01,0xff,0xc4,0x00,0x1d,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x06,0x07,0x08,0x09,0x04,0x03,0x02,0x0a,
+ 0xff,0xc4,0x00,0x40,0x10,0x00,0x01,0x03,0x03,0x02,0x03,0x06,0x03,0x05,0x04,0x09,
+ 0x05,0x01,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x11,0x06,0x07,0x12,0x21,
+ 0x31,0x08,0x13,0x41,0x51,0x61,0x71,0x09,0x22,0x81,0x14,0x32,0x91,0xa1,0xb1,0x15,
+ 0x42,0x52,0x62,0x16,0x23,0x24,0x53,0x63,0x72,0x73,0x82,0xb2,0x17,0x33,0x92,0xa2,
+ 0xd1,0xf0,0xff,0xc4,0x00,0x1a,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0xff,0xc4,
+ 0x00,0x23,0x11,0x00,0x02,0x02,0x01,0x05,0x01,0x00,0x02,0x03,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x02,0x11,0x12,0x03,0x21,0x31,0x41,0x51,0x04,0x05,0x13,
+ 0x22,0x32,0x61,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,
+ 0x00,0xd5,0x3a,0x2b,0x2c,0xb5,0xcf,0x6f,0x7d,0xd3,0xb4,0x6f,0x56,0xa3,0x65,0x1a,
+ 0xa2,0xd5,0x67,0xb0,0x5b,0xae,0x92,0x21,0x26,0xcf,0x22,0x02,0x56,0xa8,0xe1,0xb5,
+ 0x94,0x29,0x0e,0x2f,0xf7,0xd4,0x38,0x4e,0x4e,0x71,0x9e,0x94,0xa9,0x74,0xed,0xfb,
+ 0x3e,0xee,0xdb,0xc1,0x1a,0xd1,0x49,0xe2,0xf9,0x55,0xf6,0x76,0x92,0xd8,0x48,0xf4,
+ 0xc5,0x5a,0x8d,0x91,0x97,0xf8,0x69,0xc1,0x21,0x23,0x24,0xe0,0x79,0x9a,0x4e,0xb8,
+ 0x6a,0x5b,0x4d,0xa5,0x95,0x3b,0x36,0xe7,0x12,0x2b,0x69,0xea,0xa7,0x9f,0x4a,0x40,
+ 0xe7,0x8f,0x13,0x59,0x3d,0x74,0xed,0x71,0x2a,0xf8,0x15,0x19,0x7a,0xaa,0xe1,0x29,
+ 0xb0,0x4a,0x80,0x0f,0x9c,0x67,0xd8,0x54,0x69,0x72,0xdc,0xa9,0xbb,0x85,0xaa,0x58,
+ 0xb6,0x37,0x71,0x90,0xa8,0xe9,0x52,0x78,0xbb,0xd7,0x4f,0xcd,0x9c,0xa9,0xc5,0x7b,
+ 0xf0,0x80,0x91,0xea,0xb2,0x7c,0x05,0x0e,0x2a,0x2a,0xdb,0x1c,0x5c,0xa5,0x25,0x14,
+ 0xb7,0x66,0xd0,0x23,0x5d,0x58,0x1e,0x68,0xba,0xcd,0xd2,0x3c,0x96,0x87,0x55,0xb0,
+ 0xae,0xf0,0x0f,0x72,0x33,0x4a,0xb0,0x6e,0x71,0x2e,0x6d,0x97,0x22,0x49,0x6a,0x4a,
+ 0x07,0x52,0xd2,0xc2,0xb1,0xef,0xe5,0x59,0x85,0x62,0xd7,0x57,0x6d,0x31,0x6f,0x61,
+ 0x88,0xb3,0x1c,0x8c,0xd0,0x48,0x09,0x6a,0x2b,0x9c,0x28,0x23,0xa6,0x08,0x14,0xbb,
+ 0xa1,0xb7,0x73,0x50,0x6d,0xfe,0xa9,0x62,0xfb,0x0e,0x5a,0xd6,0x90,0xa1,0xf6,0xa8,
+ 0xae,0x2f,0xfa,0xb9,0x0d,0xe7,0xe6,0x0a,0xf5,0xc7,0x43,0xd4,0x57,0x04,0x3e,0x87,
+ 0x39,0xe3,0x8e,0xde,0x9e,0xcc,0xff,0x00,0x1e,0xe3,0x06,0xf2,0xdd,0x75,0x46,0x94,
+ 0xd4,0x4d,0xbe,0x1d,0xa7,0x74,0x46,0xc1,0x47,0x57,0xf4,0x8e,0x54,0x97,0xe7,0xf7,
+ 0x1f,0x69,0x16,0xeb,0x7b,0x05,0xe7,0xcb,0x5c,0x5c,0x3c,0x64,0x0e,0x41,0x39,0xe5,
+ 0x92,0x6a,0x4e,0xb4,0x5c,0x9b,0xbc,0xda,0xa1,0x4f,0x64,0x29,0x2c,0xca,0x61,0x0f,
+ 0xa0,0x2f,0xa8,0x4a,0x92,0x14,0x33,0xeb,0x83,0x55,0xb3,0xb6,0x8f,0x64,0x16,0xfb,
+ 0x43,0x69,0xe5,0x5d,0x74,0xf3,0xa9,0xb6,0xeb,0x78,0xcd,0xa1,0x94,0x48,0x2e,0x14,
+ 0x22,0x5c,0x74,0x92,0xae,0xe1,0x67,0xa0,0xe6,0x72,0x0e,0x3a,0xfa,0x1a,0xed,0x47,
+ 0x8e,0xef,0xa2,0x3c,0x87,0xf1,0x5d,0xd0,0x37,0x1b,0xdc,0x78,0x4c,0x69,0x2d,0x42,
+ 0x86,0x1d,0x59,0x4f,0xda,0x5f,0x4b,0x48,0x03,0xc8,0xf0,0xf1,0x13,0x52,0x2a,0x7b,
+ 0x76,0xe8,0x76,0x16,0x15,0x36,0xf1,0x62,0x8a,0xc9,0x03,0x90,0xb8,0x95,0x2c,0x79,
+ 0xe4,0x70,0x01,0xf9,0xd6,0x7c,0x5c,0x3e,0x17,0xbb,0xbd,0x76,0x9a,0xa9,0x32,0x74,
+ 0xeb,0xfc,0x44,0xf3,0x4a,0x2e,0xd1,0x42,0x4f,0xfe,0xf5,0xf2,0x9f,0x85,0x8e,0xe7,
+ 0x05,0x64,0xe8,0xf5,0xaf,0x3f,0xc5,0x79,0x8c,0x3f,0x45,0xd5,0xac,0x48,0xdc,0xbe,
+ 0x37,0x0f,0x88,0xee,0xd5,0x5b,0xd4,0xb4,0x1d,0x49,0x09,0xf5,0x85,0x72,0xee,0x3e,
+ 0x6e,0x5e,0x5f,0x7b,0xf3,0xa6,0xfb,0x7f,0x12,0x8d,0x03,0x32,0x52,0x1a,0x8d,0x70,
+ 0x95,0x21,0xd5,0xa4,0x84,0xa1,0xa6,0x40,0x41,0xc7,0x89,0x51,0x49,0xc7,0xe3,0x55,
+ 0x1d,0x9f,0x87,0x06,0xf3,0x45,0x42,0x5a,0x6b,0x4b,0x0e,0xe9,0x09,0x09,0x40,0xfd,
+ 0xb1,0x1c,0x60,0x0f,0xf7,0xd3,0x23,0x78,0x3b,0x2d,0xee,0x3e,0xc8,0x59,0x61,0xcf,
+ 0xd4,0x56,0x25,0x43,0x8f,0x31,0xd3,0x1d,0x90,0xdd,0xd1,0x32,0x14,0x55,0x8e,0x25,
+ 0x7c,0x89,0x59,0xe5,0x81,0xcc,0xe3,0x1d,0x3c,0xc5,0x52,0x51,0x25,0xe4,0x5e,0xb9,
+ 0x5d,0xbe,0x6c,0xf7,0x04,0xb4,0x44,0x47,0xca,0x51,0xf3,0x25,0x62,0x62,0x9b,0xe2,
+ 0xf7,0xe0,0xc6,0x7e,0xb5,0x0e,0xeb,0x8e,0xda,0x2b,0xd7,0x9b,0x8b,0x21,0xa4,0x5b,
+ 0xdb,0x72,0xdf,0x67,0x8a,0xca,0x61,0x43,0x7d,0xe5,0x29,0x0f,0x4e,0x7d,0x44,0x77,
+ 0xce,0xf5,0xe2,0x4b,0x68,0x4f,0xca,0x8e,0x9c,0x4a,0xc9,0x04,0xa4,0x62,0xb3,0xed,
+ 0xa7,0x67,0xdd,0xd2,0xde,0x0d,0x38,0xab,0xc6,0x8d,0xd2,0x53,0x6f,0x36,0xa6,0x9e,
+ 0x54,0x55,0x4b,0x44,0x86,0x5b,0x47,0x7a,0x8f,0xbc,0x91,0xc6,0xe2,0x49,0xc6,0x7c,
+ 0x05,0x3a,0xae,0x7d,0x8d,0x77,0x77,0x44,0xc0,0x73,0x53,0x5c,0xf4,0xa3,0x36,0x70,
+ 0x90,0x95,0x2c,0x4a,0xbc,0xc6,0xef,0x57,0xc1,0x92,0x02,0x51,0xde,0x7c,0xca,0xeb,
+ 0x80,0x32,0x4d,0x14,0xba,0x1a,0x6d,0x34,0xe4,0x4d,0x32,0x37,0x09,0xf9,0x17,0x98,
+ 0xd3,0xad,0x89,0x5d,0xa2,0x60,0x56,0x59,0x76,0x1b,0x84,0x38,0x95,0x79,0xf1,0x0e,
+ 0x64,0x9f,0x1f,0x3a,0xb8,0x9b,0x5f,0xda,0x21,0x2e,0x6d,0x4a,0xae,0x5a,0xb0,0x3d,
+ 0xfb,0x7e,0x0a,0x9c,0x60,0xb2,0xdc,0x65,0x87,0x26,0xf0,0xa4,0x14,0x2d,0x29,0xc7,
+ 0xef,0x03,0x83,0xe1,0x90,0x6b,0x3d,0xf4,0x9e,0xe0,0xea,0x7d,0x1f,0x2a,0x35,0xd2,
+ 0x26,0x9c,0x96,0xd4,0xb0,0x8e,0x5c,0x6c,0xa5,0x4a,0x46,0x7a,0x8c,0x78,0x7e,0x19,
+ 0xa5,0xbd,0x6b,0xda,0xf3,0x77,0xae,0x31,0x5e,0x8f,0x06,0xcf,0x2d,0xb0,0xe8,0x21,
+ 0x45,0x0c,0x84,0xf5,0xf5,0x3e,0xc2,0xb0,0xd3,0xd0,0x92,0x79,0x49,0xf3,0xd1,0xea,
+ 0x7d,0x9f,0x6e,0x9e,0xb2,0x5a,0x70,0x82,0x55,0xd9,0xe1,0xda,0xb3,0xb5,0xe6,0xe5,
+ 0x6b,0x2b,0xf1,0x6f,0x4d,0xdb,0xee,0x96,0x48,0x2c,0x8e,0x14,0xa2,0x52,0xd2,0x86,
+ 0xc1,0x1e,0x21,0x23,0x1f,0x89,0xc9,0xa8,0x0b,0x47,0x76,0xbb,0xdf,0xad,0xb3,0xd4,
+ 0x0c,0x5c,0xe2,0x6b,0x34,0x84,0x21,0xde,0xf1,0xdb,0x6c,0xb7,0x9b,0x5c,0x47,0xc7,
+ 0x8a,0x56,0xdf,0xaf,0x98,0xc1,0xf5,0xa6,0xce,0xb0,0xb5,0xee,0x7e,0xb8,0x94,0xeb,
+ 0xb3,0xad,0xf2,0xd6,0x56,0x4a,0x88,0x53,0xcd,0xa0,0x7f,0xca,0x9a,0xe7,0x63,0xf5,
+ 0x8c,0x97,0x56,0xa7,0x2d,0xcc,0x45,0x49,0x51,0x20,0x3d,0x2d,0x2a,0xe1,0x19,0xe4,
+ 0x39,0x12,0x6b,0xa1,0xa5,0xc2,0x3c,0xa4,0xfd,0x35,0xbb,0x63,0xbe,0x27,0xdb,0x69,
+ 0xb8,0x8c,0xd9,0xad,0x9a,0xad,0xd3,0xa4,0xb5,0x34,0xc2,0x86,0x1c,0x4a,0xb2,0xe4,
+ 0x12,0xe9,0x38,0xf9,0x5e,0xc0,0xc2,0x49,0xfe,0x20,0x31,0x9a,0xb9,0x48,0x5a,0x5d,
+ 0x42,0x56,0x85,0x05,0xa1,0x43,0x21,0x49,0x39,0x04,0x79,0x8a,0xfc,0xe9,0x7f,0xd0,
+ 0x8b,0xe1,0x6b,0x8a,0x7d,0xce,0x04,0x56,0x5b,0x19,0x21,0x2b,0x5b,0x9c,0x3f,0x4e,
+ 0x11,0xe7,0x56,0xf7,0x6a,0x7b,0x6d,0xee,0x26,0xd6,0xe8,0x4b,0x46,0x91,0x6f,0x53,
+ 0x37,0xa8,0x51,0x6d,0x68,0x47,0x8d,0x21,0x56,0xd0,0xe3,0x81,0xb1,0xf7,0x52,0xa5,
+ 0xa8,0x92,0xae,0x11,0xcb,0x9f,0x30,0x00,0x15,0x38,0x37,0xc1,0x59,0xa3,0x5c,0xa8,
+ 0xac,0xd7,0x8b,0xf1,0x26,0xdc,0x88,0x6e,0x23,0xbc,0xd3,0x16,0x8b,0x82,0x70,0x12,
+ 0x43,0xa5,0x4d,0x0c,0xff,0x00,0x17,0x25,0x79,0x53,0xd2,0xd5,0xf1,0x34,0xb8,0x96,
+ 0x12,0x2e,0x1b,0x7f,0x1c,0xba,0x4f,0x35,0x47,0xba,0x10,0x91,0xf4,0x2d,0x9f,0xd6,
+ 0xa7,0x09,0x0f,0x34,0x5f,0x4a,0x2a,0x87,0x5c,0xbe,0x23,0xd7,0x79,0x89,0x79,0x36,
+ 0xcd,0x2f,0x02,0x0a,0xd4,0x9c,0x36,0x66,0x3a,0xb7,0x78,0x4f,0x99,0xe1,0x23,0x3f,
+ 0x80,0xaf,0x58,0x3f,0x11,0xab,0x83,0xa9,0xee,0x9c,0xb3,0x59,0x97,0x25,0xbc,0x25,
+ 0xd0,0x97,0xdc,0x4f,0xcd,0xec,0x7a,0x51,0x84,0xbc,0x1e,0x51,0xf4,0xbd,0x94,0x55,
+ 0x2a,0x8f,0xdb,0xf6,0xed,0x24,0x9e,0x0d,0x39,0x6b,0x5e,0x3a,0xf0,0xc9,0x59,0xae,
+ 0x94,0xf6,0xf0,0xbc,0xf1,0x27,0x3a,0x6a,0xdf,0x8f,0x1c,0x3c,0xba,0x7f,0xae,0x5e,
+ 0x13,0x9c,0x4b,0x99,0x45,0x54,0xf8,0xbd,0xb9,0xdc,0x9a,0xf2,0x1a,0x6b,0x48,0x27,
+ 0x8d,0x47,0x1f,0x3d,0xc5,0x28,0x1f,0x8a,0x92,0x00,0xfa,0xd2,0xa0,0xed,0xc7,0x69,
+ 0x8f,0x29,0x6c,0xcc,0xd2,0xd2,0xd8,0xe1,0x1f,0x79,0x99,0x8d,0xbb,0xcf,0xcb,0x90,
+ 0x03,0x1e,0xa0,0xd2,0xc2,0x5e,0x0f,0x38,0x96,0x72,0x8a,0x80,0xed,0xbd,0xb4,0xf6,
+ 0xfe,0x67,0x00,0x92,0xdd,0xd6,0x02,0x8e,0x02,0x8b,0xb1,0x92,0xa4,0x8c,0xf5,0xe6,
+ 0x95,0x13,0x81,0xed,0x52,0x86,0x90,0xdd,0x7d,0x21,0xaf,0x55,0xc1,0x61,0xbf,0xc3,
+ 0xb8,0x3d,0x8c,0xf7,0x09,0x5f,0x03,0xb8,0xff,0x00,0x22,0xb0,0xaf,0xca,0x93,0x8b,
+ 0x5c,0xa2,0x93,0x4f,0x82,0xa9,0xf6,0x87,0xf8,0x68,0xe9,0xfd,0xd4,0xd6,0x37,0x3d,
+ 0x53,0xa5,0xee,0x31,0xec,0x57,0x0b,0xa3,0xcb,0x95,0x36,0x14,0xd6,0x4b,0xac,0x38,
+ 0xfa,0xce,0x56,0xea,0x54,0x0e,0x50,0x54,0x79,0x90,0x01,0x19,0xe7,0xca,0xab,0xad,
+ 0xfb,0xe1,0x55,0xb8,0x36,0xe0,0xe7,0xd9,0x53,0x62,0xbd,0x80,0x0f,0x09,0x62,0x62,
+ 0x9b,0x51,0xc7,0x41,0xfd,0x60,0x4e,0x0f,0xd6,0xb5,0x8a,0x8a,0x2f,0xa1,0xa6,0xd3,
+ 0x4e,0x2d,0xa6,0x8c,0x4d,0xba,0x76,0x16,0xdd,0x1d,0x21,0x24,0xba,0x8d,0xbd,0xba,
+ 0x2d,0x64,0x60,0x2e,0x08,0xfb,0x42,0x79,0xf2,0xe7,0xc2,0xa3,0x8a,0x61,0xc4,0xd2,
+ 0x3a,0xa3,0x6e,0x35,0x93,0x73,0x2f,0x7a,0x76,0xe1,0x6b,0x0c,0xab,0x81,0xc6,0xe6,
+ 0xc6,0x5b,0x7c,0xf0,0x46,0x32,0x46,0x39,0xa4,0x9f,0xc0,0x56,0xf7,0x57,0x2d,0xc2,
+ 0xd7,0x0e,0xec,0xc8,0x66,0x74,0x46,0x26,0x34,0x0e,0x7b,0xb9,0x0d,0xa5,0x69,0xcf,
+ 0xb1,0x14,0x95,0x25,0x55,0xb0,0xdc,0xa7,0x29,0x29,0xb9,0x36,0xd7,0xbb,0x99,0x3f,
+ 0x66,0xb8,0xc2,0xd4,0x76,0xc6,0x54,0xc3,0x8c,0x92,0x47,0xca,0x19,0x1c,0xc7,0xf9,
+ 0xbc,0xa9,0xd5,0xa4,0x34,0x74,0x9d,0x6f,0xa9,0xed,0xda,0x66,0xd6,0xeb,0x6e,0xdc,
+ 0xa7,0x28,0xf0,0x24,0x91,0xf2,0xb6,0x92,0x38,0xdc,0x50,0xeb,0xc2,0x07,0x3a,0x92,
+ 0x3b,0x54,0xfc,0x3b,0xd7,0x74,0x5c,0xfd,0x55,0xb4,0x6f,0xae,0xcf,0x70,0x73,0x89,
+ 0xe9,0x56,0x16,0x5d,0x2d,0xb6,0xe9,0xea,0x54,0xc1,0xe8,0x95,0x1f,0xe0,0x3c,0x8f,
+ 0x86,0x2a,0x95,0xec,0x47,0x66,0x6d,0xe6,0xbc,0xeb,0xbf,0xdb,0xf6,0x19,0x57,0x2d,
+ 0x33,0x78,0xb5,0xc8,0x52,0x11,0x7e,0xbb,0x3c,0xb6,0x92,0xca,0x81,0xc2,0x90,0x94,
+ 0x9f,0x9d,0x44,0x10,0x41,0x00,0x11,0xe0,0x48,0xae,0x58,0xfc,0xdf,0xca,0xd3,0xb5,
+ 0xe1,0xef,0x4b,0xf3,0x2f,0xf5,0xe2,0xe0,0x94,0xaa,0xac,0xdc,0x0b,0x3d,0xb5,0x16,
+ 0x6b,0x44,0x1b,0x7b,0x6a,0x2b,0x6e,0x2b,0x08,0x61,0x2a,0x57,0x52,0x12,0x90,0x90,
+ 0x7f,0x2a,0xeb,0x52,0x82,0x41,0x24,0x80,0x07,0x52,0x6a,0x09,0xb5,0x6a,0x5d,0x64,
+ 0x34,0x75,0xae,0xd9,0x7a,0xd4,0x31,0x9d,0xbb,0x30,0xc2,0x1b,0x99,0x73,0xb7,0xb1,
+ 0xdd,0x2a,0x4a,0xc0,0xe6,0xac,0x12,0x78,0x73,0xe9,0x49,0x93,0xe3,0x5c,0xae,0x4b,
+ 0xef,0x24,0xce,0x97,0x2d,0x58,0xe1,0x0b,0x5b,0xe5,0x39,0x1e,0xc2,0xbb,0xd6,0x93,
+ 0x7c,0x9f,0x36,0xf5,0x11,0x36,0xdd,0x75,0xd6,0x9e,0xb2,0x8c,0xcd,0xbc,0x43,0x63,
+ 0xd0,0xba,0x09,0xfc,0x05,0x34,0x6e,0x5d,0xa1,0x34,0x8c,0x0e,0x30,0xd3,0xf2,0xa6,
+ 0xad,0x3d,0x03,0x11,0xd5,0x85,0x7b,0x28,0xe0,0x54,0x50,0xe5,0x85,0xb6,0x1c,0x19,
+ 0x86,0xda,0x41,0xf1,0x48,0xfd,0x4d,0x76,0x31,0xa7,0xe1,0x05,0x25,0x6f,0xa5,0xa0,
+ 0x8f,0xe1,0x51,0xe5,0x8f,0xa5,0x68,0xb4,0x57,0x6c,0x87,0xa8,0xfa,0x16,0xa7,0x76,
+ 0xa5,0xef,0x90,0xeb,0x76,0xbd,0x33,0x29,0xd9,0x05,0x24,0x37,0xdf,0x38,0x30,0x15,
+ 0xfb,0xa4,0x84,0xe7,0x97,0xa6,0x6a,0xad,0xee,0x26,0xc5,0x6b,0x0d,0xfa,0xd4,0xcd,
+ 0xdd,0xf5,0x6d,0xd5,0x57,0x15,0xb4,0xf2,0xdd,0x8a,0xc4,0xf6,0xdd,0xee,0xa2,0x71,
+ 0x63,0x21,0x96,0x92,0xe8,0x08,0x18,0x03,0xdf,0x1c,0xce,0x6a,0xd1,0x31,0x36,0xc7,
+ 0x68,0xc0,0x8e,0xdb,0x09,0x23,0xc7,0x19,0x35,0xe8,0xf6,0xb6,0xb4,0x32,0x14,0xa2,
+ 0xf2,0x42,0xfc,0xea,0xd4,0x12,0xe1,0x12,0xe6,0xd9,0x18,0xed,0x46,0xd6,0xcd,0xd9,
+ 0x2d,0x22,0x2c,0x76,0x1b,0xc4,0xcb,0x45,0xb5,0x4a,0x5b,0xce,0xc5,0x8e,0xea,0x92,
+ 0xd2,0x9d,0x51,0xca,0xd6,0x02,0x8a,0x94,0x92,0x7d,0x15,0x49,0x1a,0xa6,0xd9,0x1d,
+ 0xc7,0x9c,0x71,0xf5,0xb9,0x31,0xf5,0x73,0x5b,0xaf,0x2c,0xa8,0x9f,0x52,0x4d,0x3c,
+ 0xf5,0x16,0xbb,0x87,0x27,0x88,0x21,0xf4,0x91,0x51,0xd5,0xe6,0xf4,0xdc,0xc2,0xae,
+ 0xed,0xc0,0xa1,0xe7,0x4d,0x40,0x97,0x21,0x87,0x7c,0x8e,0xc3,0x3c,0x5c,0x08,0x09,
+ 0x1e,0x43,0xa5,0x31,0xee,0x6f,0x36,0xd8,0x21,0x29,0x19,0xf1,0xe5,0x4f,0x6b,0xcb,
+ 0x0e,0x49,0x51,0x3c,0x49,0x03,0xde,0x9a,0x33,0xac,0xea,0x71,0x44,0x95,0xa7,0x1e,
+ 0xf4,0xe8,0x56,0x32,0x2e,0xb3,0x9c,0x42,0x95,0xc0,0x9e,0x25,0x63,0x09,0x40,0x20,
+ 0x64,0xf9,0x53,0x26,0xe1,0x71,0xbb,0xcd,0x9c,0x88,0xd8,0x10,0xf8,0x82,0xb0,0x09,
+ 0x07,0x8b,0xeb,0xed,0xfc,0x39,0xa7,0x3e,0xbe,0xdb,0x39,0xba,0x9e,0xf5,0x64,0x53,
+ 0x72,0x12,0xd5,0xba,0x3a,0xdc,0x54,0xa2,0x97,0x8b,0x6b,0xc1,0x03,0x87,0x87,0x1d,
+ 0x4e,0x45,0x23,0xbb,0xb5,0x37,0x5f,0xe9,0x55,0x9e,0x7b,0x97,0xa6,0xa7,0x43,0xb7,
+ 0x95,0xe0,0xba,0xde,0x1f,0x29,0x50,0xfb,0xa4,0x8e,0x4a,0xe9,0xd7,0x95,0x4d,0x31,
+ 0xec,0x21,0xbd,0x6e,0x6a,0xc7,0x0d,0x72,0xa6,0x4a,0x71,0xb6,0x9a,0x1c,0x4e,0x2b,
+ 0xbd,0x52,0x5b,0x03,0xa6,0x4f,0x32,0x6b,0x88,0xdf,0x2d,0xe5,0x02,0x42,0x1c,0x52,
+ 0x9a,0x73,0x07,0xbf,0x43,0x2a,0x29,0x20,0xf4,0xca,0xb1,0x52,0xc4,0xab,0x03,0x0e,
+ 0xa1,0x6d,0x38,0xd2,0x56,0xda,0xc7,0x09,0x0b,0x19,0x04,0x79,0x1a,0x6e,0x5b,0x74,
+ 0x13,0x36,0x10,0xf3,0x10,0x6e,0x12,0x23,0xc5,0x5a,0xb8,0x93,0x14,0x84,0xb8,0x86,
+ 0xfd,0x11,0xc4,0x09,0x03,0xd2,0x96,0x3b,0x8d,0x31,0xb5,0x3d,0x52,0xe1,0xc2,0x5b,
+ 0xcc,0xc4,0x5c,0xe5,0x80,0x08,0x65,0xb2,0x02,0x95,0xed,0x9e,0x54,0x8d,0x6d,0xd4,
+ 0x12,0x6e,0x0f,0x04,0x2a,0x13,0x71,0x95,0x9c,0x29,0xb7,0x1f,0xe1,0x75,0x1e,0xe9,
+ 0x20,0x7e,0x44,0xd4,0x93,0x6f,0xb0,0x45,0xb5,0xf7,0xc3,0xbe,0x93,0x20,0xba,0xae,
+ 0x35,0x17,0xd6,0x55,0x83,0xfc,0xa3,0xc0,0x7a,0x57,0xa4,0x88,0xf6,0xd7,0x14,0x92,
+ 0xf4,0x56,0xde,0x52,0x7a,0x17,0x10,0x0e,0x3d,0xa8,0x61,0x63,0x37,0xbc,0x4d,0xd1,
+ 0x2e,0xc5,0x85,0x21,0x0e,0x4c,0x68,0x82,0xb4,0x21,0xdc,0x60,0x7a,0x9c,0x1f,0xd2,
+ 0x95,0x2d,0x5a,0x14,0x45,0x8e,0x1a,0x69,0xa8,0xe9,0x6c,0xfc,0xca,0x41,0x6b,0x04,
+ 0xa8,0xf5,0xf9,0x93,0x8f,0xd2,0x9c,0x91,0xdc,0x84,0xc8,0xc3,0x30,0xd9,0x68,0xff,
+ 0x00,0x2a,0x42,0x6b,0xb1,0x2f,0x36,0xae,0x7c,0x21,0x20,0x78,0xf1,0x60,0x53,0xb1,
+ 0x1c,0x10,0x34,0xb3,0x4d,0xa9,0xb5,0xc8,0xc3,0x65,0xa5,0x85,0xa5,0x0d,0xa8,0x29,
+ 0x3c,0xbd,0x70,0x0d,0x3a,0x59,0x9e,0xdb,0x43,0x09,0xe2,0x5f,0xb8,0xe5,0x4d,0xb9,
+ 0x7a,0xae,0xcb,0x6e,0x04,0x49,0xba,0xc3,0x60,0x8e,0xa8,0x5b,0xe9,0xe2,0xfc,0x33,
+ 0x9a,0x48,0x97,0xbc,0xda,0x62,0x08,0xf9,0x25,0x3b,0x2d,0x63,0xf7,0x63,0xc7,0x51,
+ 0xfc,0xd5,0x81,0xf9,0xd5,0x58,0x89,0x05,0x13,0x14,0x47,0xdd,0x56,0x3d,0xab,0xec,
+ 0xc8,0x56,0x32,0x52,0xa3,0xee,0x2a,0x1a,0xb9,0xf6,0x89,0x4b,0x43,0x86,0x05,0x99,
+ 0xd5,0xf9,0x2e,0x4b,0xa1,0x03,0xff,0x00,0x14,0xe7,0xf5,0xa6,0x8d,0xd3,0x7d,0x35,
+ 0x75,0xcd,0xc0,0xdc,0x47,0x58,0x82,0x5c,0x3c,0x09,0x6e,0x33,0x3c,0x4a,0x24,0xf4,
+ 0x00,0xab,0x27,0x3e,0xd4,0xc2,0x8b,0x11,0x32,0xe0,0xcc,0x46,0x94,0xe4,0x82,0x19,
+ 0x6c,0x75,0x5b,0x98,0x4a,0x7f,0x13,0x5c,0x7b,0x75,0xaa,0xae,0x3a,0xff,0x00,0x72,
+ 0x6d,0x5a,0x6f,0x6e,0xa3,0x3d,0x7b,0xd4,0xaa,0x79,0x2b,0x0f,0xc6,0x25,0x2c,0x42,
+ 0x4a,0x48,0x2a,0x79,0xd7,0x47,0x24,0xa5,0x3e,0x9c,0xc9,0xe4,0x3a,0xd4,0x17,0xa2,
+ 0xf6,0x77,0x72,0xb7,0xff,0x00,0x51,0xa2,0xd1,0x69,0x6a,0x5d,0xf6,0xe4,0xb5,0x61,
+ 0xc4,0x38,0xe9,0x53,0x71,0xd3,0xc7,0xc2,0x56,0xea,0x87,0xca,0xda,0x41,0x0a,0xeb,
+ 0xcc,0xf0,0xf2,0x07,0x23,0x3a,0xf5,0xd8,0xfb,0xb2,0x9d,0xab,0xb2,0xde,0xdf,0x2a,
+ 0xdc,0x97,0x5b,0xb9,0x6a,0x5b,0x82,0x83,0xd7,0x4b,0x9a,0x51,0x8e,0xf1,0x5e,0x0d,
+ 0xa3,0xc4,0x36,0x9f,0x0f,0x3e,0xa6,0xb3,0x9c,0xf1,0x5b,0x1a,0x46,0x17,0xc9,0x3e,
+ 0x51,0x45,0x15,0xc6,0x74,0x85,0x14,0x51,0x40,0x05,0x55,0xfe,0xd0,0xba,0xf9,0xce,
+ 0xcf,0x97,0x01,0x7c,0xbc,0x69,0x89,0xd7,0xbd,0x1d,0x35,0xc2,0x57,0x76,0xb5,0x94,
+ 0x95,0xc2,0x75,0x47,0xee,0x3c,0xd9,0xc7,0xca,0x7c,0x16,0x0f,0x3e,0x98,0xcf,0x5b,
+ 0x41,0x5c,0x37,0xcb,0x24,0x0d,0x4b,0x68,0x97,0x6b,0xba,0x44,0x6a,0x7d,0xba,0x5b,
+ 0x6a,0x65,0xf8,0xcf,0xa4,0x29,0x0e,0x20,0x8c,0x10,0x41,0xaa,0x8c,0xb1,0x76,0x4c,
+ 0x96,0x48,0xa5,0x56,0xee,0xd9,0x3b,0x59,0xa9,0xec,0xb2,0x58,0x6f,0x50,0x0d,0x2d,
+ 0x74,0x79,0xa5,0xa1,0xa7,0x2e,0x30,0x96,0x52,0xc2,0x88,0x21,0x0b,0x3c,0x40,0x05,
+ 0x63,0x92,0xb1,0x9c,0x78,0x52,0x96,0xda,0x6e,0x76,0x90,0xb6,0xda,0xdd,0x8d,0x2b,
+ 0x77,0xad,0x5a,0xad,0xe7,0x5c,0xef,0x10,0xfc,0x97,0x1b,0x65,0x4d,0x8e,0x10,0x0a,
+ 0x40,0x07,0x98,0xc8,0x27,0x9f,0x4c,0xe3,0xa5,0x32,0x77,0xa7,0xe1,0x76,0x65,0x4b,
+ 0x95,0x73,0xdb,0x6b,0xf2,0x18,0x4a,0xfe,0x64,0xd9,0x6f,0x0a,0x51,0x4a,0x7f,0x95,
+ 0x0f,0x0c,0x90,0x3c,0x82,0x81,0xf7,0xaa,0x21,0xaa,0xf6,0xf2,0xf9,0xa4,0x2e,0x37,
+ 0x08,0x17,0x6b,0x7f,0x03,0xb0,0x5e,0x5c,0x77,0xd4,0x82,0x1c,0x42,0x56,0x95,0x70,
+ 0xab,0x98,0xf0,0xc8,0xeb,0x5d,0x29,0xa9,0x3b,0x39,0x9c,0x69,0xee,0x6a,0x45,0xcf,
+ 0x77,0xf4,0x4c,0x56,0xcf,0x1e,0xad,0xb4,0xab,0x87,0xf8,0x25,0x20,0x9f,0xc8,0xd3,
+ 0x06,0xe7,0xda,0x0f,0x44,0x7d,0xa1,0x48,0x4d,0xcd,0x0e,0x0c,0xff,0x00,0xdc,0x4f,
+ 0x43,0xf5,0xac,0xcc,0x30,0x1b,0xea,0x1b,0x4e,0x09,0xea,0x12,0x2b,0xe5,0x71,0x50,
+ 0x79,0x84,0x0e,0x5e,0x95,0xa5,0x3e,0x84,0x69,0x2a,0xf7,0xcf,0x44,0xbc,0x33,0xfb,
+ 0x4e,0x3a,0x4f,0xf3,0xba,0x69,0x12,0xe5,0xbc,0xfa,0x31,0xc2,0x4a,0x6e,0x70,0xb0,
+ 0x7a,0x9e,0xfb,0x15,0x9f,0x08,0x8e,0x85,0x27,0x9a,0x46,0x7d,0x2b,0xe7,0xec,0x8d,
+ 0x92,0x07,0x00,0x3f,0x4a,0x6a,0xc5,0x45,0xf3,0x7f,0x72,0xf4,0xb4,0xb1,0xf2,0x5d,
+ 0xe0,0xe0,0xf9,0xc8,0x02,0x93,0xe4,0xeb,0xab,0x09,0x4f,0xcb,0x78,0x82,0x07,0xa4,
+ 0x94,0xff,0x00,0xf6,0xa8,0xda,0xa1,0x35,0xfd,0xd2,0x4f,0xfb,0x6b,0xc9,0x70,0x9a,
+ 0x07,0x3d,0xca,0x39,0x7f,0x28,0xa7,0xb8,0x51,0x73,0x26,0xee,0x16,0x9b,0x64,0x10,
+ 0xe5,0xee,0x02,0x47,0x8f,0xf6,0x81,0xff,0x00,0xda,0x6d,0xcf,0xdc,0xed,0x1a,0xa5,
+ 0x80,0xe6,0xa0,0x82,0x02,0x7f,0x75,0x2e,0xe6,0xaa,0xc3,0x30,0x92,0xe8,0x77,0x87,
+ 0xba,0x6f,0xbb,0x47,0x1f,0xce,0x40,0xe2,0xe6,0x06,0x07,0x99,0xe7,0xf9,0x1a,0xf7,
+ 0xb4,0xbf,0x1a,0x04,0xf4,0xbd,0x32,0x02,0x2e,0x4c,0x00,0x41,0x8e,0xb5,0xa9,0x00,
+ 0x9f,0x03,0x94,0xf3,0xe5,0x49,0x95,0x45,0x96,0x67,0x7b,0xf4,0x55,0xac,0xb9,0xc3,
+ 0x32,0x24,0xd2,0xac,0x60,0xa9,0x95,0xb9,0xc3,0xec,0x07,0x2f,0xc7,0x35,0xc7,0x73,
+ 0xed,0x1f,0xa6,0x9f,0x8e,0xa6,0x12,0x94,0x94,0x1f,0x06,0x2d,0x49,0x42,0xbe,0x8b,
+ 0xe0,0x07,0xf3,0xa8,0x16,0x05,0xfe,0x1d,0xbe,0xe1,0x36,0x48,0xd3,0xd6,0xf9,0x2c,
+ 0xbe,0x41,0x6e,0x3c,0x9e,0x35,0xa1,0x8c,0x67,0x92,0x79,0xe4,0xf5,0xf1,0xf2,0xae,
+ 0x58,0x17,0x75,0x5b,0x98,0x98,0xd2,0x21,0xc3,0x73,0xed,0x23,0x05,0x6f,0x34,0x16,
+ 0xa6,0xc7,0xf2,0x13,0xf7,0x69,0x6f,0xe0,0x52,0x25,0xd9,0x9b,0xfb,0x64,0x57,0x10,
+ 0x6a,0xdd,0x39,0xe3,0xfe,0x54,0x27,0xf5,0x55,0x23,0x48,0xde,0xe5,0x38,0x4f,0xd9,
+ 0xac,0xc4,0x8f,0xf1,0xdf,0x03,0xf4,0x06,0x9b,0x36,0xd6,0xf5,0x36,0xa2,0xb3,0x47,
+ 0xb5,0xb3,0x66,0x99,0x3a,0xd4,0xd2,0xd2,0x95,0x18,0x16,0xe2,0xb7,0x3a,0xe7,0x1c,
+ 0x69,0x49,0x39,0xf7,0xa7,0x23,0x1d,0x9c,0x37,0x2e,0xf2,0xf8,0xfd,0x8d,0xb6,0xba,
+ 0xc1,0x4c,0x72,0x41,0xfb,0x5d,0xb1,0xd4,0x9e,0x23,0xea,0x50,0x90,0x07,0xff,0x00,
+ 0xb3,0x45,0xfa,0x15,0xe0,0x9d,0x3b,0x77,0x6f,0x0a,0x51,0x42,0x2d,0xd0,0xe3,0x2b,
+ 0xc7,0x8c,0xad,0x64,0x7f,0xc6,0x92,0x9f,0xdc,0x4d,0x41,0x27,0xac,0xa8,0xec,0x7f,
+ 0xa1,0x1c,0x0f,0xf9,0x15,0x54,0xb3,0x66,0xec,0x25,0xbe,0xd7,0xe7,0x12,0xb5,0x68,
+ 0x59,0x11,0x92,0xb5,0xf0,0x97,0x27,0x4d,0x8e,0xde,0x3d,0x48,0x2e,0x71,0x63,0xe8,
+ 0x6a,0x43,0xb1,0x7c,0x2f,0xf7,0x6e,0xe8,0xd2,0x1c,0x9f,0x37,0x4e,0xd9,0xc1,0x23,
+ 0x2d,0xbb,0x2d,0xc7,0x56,0x91,0xe3,0xf7,0x5b,0xc6,0x7d,0x33,0xf5,0xa9,0xb8,0x2e,
+ 0x58,0xd4,0x59,0x53,0x65,0x6a,0x1b,0xc4,0xac,0xf7,0xb7,0x69,0x58,0xff,0x00,0x0d,
+ 0x61,0xbf,0xf8,0x01,0x49,0x52,0x0a,0xe5,0x1c,0x3e,0xf3,0xd2,0x3f,0xd6,0x75,0x4b,
+ 0xfd,0x49,0xad,0x12,0xd3,0xff,0x00,0x09,0x77,0x16,0x84,0x1b,0xf6,0xe1,0xe0,0x92,
+ 0x0a,0xdb,0xb6,0xdb,0xf1,0x81,0xe2,0x02,0x96,0xa3,0x9f,0x7c,0x54,0xa7,0xa5,0xfe,
+ 0x17,0x7b,0x49,0x66,0x09,0x55,0xd2,0x4d,0xf2,0xfe,0xe0,0xe6,0x7b,0xf9,0x9d,0xca,
+ 0x49,0xf6,0x6c,0x0e,0x55,0x2f,0x52,0x0b,0x82,0xb0,0x66,0x4a,0x70,0x36,0xdf,0x2c,
+ 0x25,0x23,0xa7,0x95,0x38,0x74,0xbe,0xdb,0xea,0xbd,0x6f,0x25,0x2c,0x69,0xfd,0x35,
+ 0x74,0xbc,0x3a,0xa3,0x84,0x88,0x71,0x16,0xbc,0x9f,0x70,0x31,0x5b,0x61,0xa4,0xbb,
+ 0x26,0x6d,0x0e,0x89,0x71,0xa7,0x6d,0x5a,0x06,0xcc,0x87,0xdb,0xe6,0x97,0xdf,0x60,
+ 0x3c,0xbc,0xf9,0x92,0xbc,0xd4,0xa7,0x06,0xdb,0x12,0xd6,0xc7,0x73,0x0a,0x2b,0x31,
+ 0x19,0xfe,0xed,0x86,0xc2,0x13,0xf8,0x01,0x52,0xf5,0xbc,0x45,0x2d,0x3f,0x59,0x8f,
+ 0x9b,0x73,0xf0,0xda,0xde,0x2d,0x7e,0x94,0x48,0xb8,0xc1,0x87,0xa3,0xe1,0xab,0x18,
+ 0x37,0x97,0x48,0x77,0x1f,0xe9,0xa0,0x29,0x40,0xfb,0x81,0x56,0xa7,0x68,0xfe,0x15,
+ 0x3a,0x13,0x4b,0x38,0xd4,0xdd,0x71,0x78,0x99,0xab,0xe6,0xa0,0x85,0x08,0x91,0xc9,
+ 0x87,0x10,0x7a,0x1e,0x13,0xde,0x2b,0xdf,0x89,0x3e,0xd5,0x78,0xe8,0xac,0x9e,0xa4,
+ 0x99,0x6a,0x09,0x08,0x9a,0x47,0x44,0xe9,0xfd,0x03,0x67,0x6a,0xd5,0xa6,0xec,0xb0,
+ 0x6c,0x76,0xe6,0xc7,0xcb,0x1a,0x03,0x09,0x69,0x1e,0xe4,0x24,0x73,0x3e,0xa7,0x9d,
+ 0x2d,0xd1,0x45,0x66,0x58,0x51,0x45,0x14,0x00,0x51,0x45,0x14,0x00,0x51,0x45,0x14,
+ 0x00,0x56,0x4f,0xf6,0xd5,0xec,0xeb,0xaf,0xb6,0xd3,0x57,0xea,0x7d,0x4c,0xd2,0x15,
+ 0x77,0xd0,0xf7,0x99,0x8f,0xc9,0x12,0x98,0x1c,0x46,0x27,0x7c,0xa2,0xa2,0xdb,0xc3,
+ 0x19,0x00,0x15,0x10,0x15,0xd0,0xfe,0x55,0xac,0x15,0xcd,0x71,0xb7,0x45,0xbb,0xc1,
+ 0x7e,0x14,0xd8,0xed,0x4b,0x88,0xfa,0x0b,0x6e,0xb0,0xf2,0x02,0x90,0xb4,0x9e,0xa0,
+ 0x83,0xc8,0x8a,0x69,0xd1,0x2d,0x59,0x83,0xfb,0x7b,0x7f,0x46,0x95,0xb7,0x2e,0x23,
+ 0xe8,0x6f,0x84,0xba,0xa3,0xc0,0xac,0x12,0x72,0x07,0x3c,0x53,0xe0,0xdd,0x2c,0xb2,
+ 0x59,0x43,0xaf,0x42,0x85,0x21,0x2a,0xe6,0x4f,0x74,0x9c,0x8e,0x59,0xc1,0xe5,0xd7,
+ 0xad,0x5c,0x9e,0xd1,0x7f,0x0d,0x6b,0x56,0xa6,0x6a,0x75,0xe3,0x6c,0xe4,0x22,0xcd,
+ 0x71,0x70,0x97,0x15,0x63,0x94,0xaf,0xec,0x6e,0x9f,0x10,0xda,0xba,0xb6,0x7f,0x11,
+ 0xed,0x59,0xe7,0xb8,0x3a,0x23,0x59,0xed,0x05,0xe9,0xcb,0x15,0xde,0xcf,0x2e,0xd3,
+ 0x73,0x8e,0x38,0x97,0x12,0x6a,0x72,0x1c,0x18,0xe6,0xa6,0xd6,0x39,0x29,0x27,0x00,
+ 0xe4,0x12,0x3a,0xd6,0xb9,0x78,0x65,0x85,0xbd,0xc7,0x55,0xcd,0x16,0x37,0x50,0x54,
+ 0xdd,0xba,0x33,0x5c,0xce,0x0a,0x46,0x29,0x8b,0xaa,0xef,0x56,0xbb,0x0c,0x17,0x1c,
+ 0x10,0xdb,0x53,0xbd,0x10,0x90,0x4f,0x33,0xf8,0xd3,0x73,0xfa,0x7c,0xb4,0xa9,0x09,
+ 0x9c,0xc2,0xd8,0x56,0x70,0x49,0x1c,0x89,0xf4,0x22,0x91,0xf5,0x5b,0x12,0x75,0x0b,
+ 0x46,0x6b,0x2e,0xb0,0x22,0x36,0x33,0xfd,0x63,0xc1,0x27,0x1e,0x60,0x78,0xd2,0x53,
+ 0xbe,0x19,0x52,0xd2,0x94,0x3f,0xb2,0x17,0x74,0x74,0x88,0x97,0x16,0x1c,0x76,0xf5,
+ 0x71,0x54,0x75,0xac,0x15,0x21,0x09,0x01,0x28,0x6c,0x7b,0xe3,0x34,0xc0,0xd5,0x5a,
+ 0xd5,0xe8,0x17,0x75,0x33,0x6d,0x9a,0xf4,0x98,0xe9,0x56,0x12,0xa5,0x21,0x23,0x8c,
+ 0x67,0xc0,0x63,0x3c,0xeb,0xc3,0x58,0x4e,0x0c,0xd9,0x22,0x77,0x04,0x84,0xb8,0x03,
+ 0x79,0x1d,0x30,0x2b,0xc7,0x4c,0x14,0xaa,0x0f,0xda,0xcb,0x48,0x32,0x16,0x4b,0x69,
+ 0x59,0x4f,0x34,0x24,0x63,0x24,0x7a,0x9c,0xe3,0x3e,0x94,0xa5,0x27,0xc2,0x2a,0x31,
+ 0x4f,0x73,0x58,0xfb,0x1c,0x5d,0xbb,0x29,0xf6,0x83,0xb5,0xc4,0xb3,0x44,0xd0,0xb0,
+ 0xed,0x3a,0xd9,0x2c,0x20,0xc9,0xb4,0xdf,0x54,0xea,0xdd,0x7d,0x69,0x4f,0xce,0xb6,
+ 0x14,0xb5,0x90,0xb1,0xc8,0x9c,0x27,0x04,0x78,0x8a,0xb6,0x96,0xee,0xca,0x3b,0x3b,
+ 0x6a,0x5a,0xd4,0xc6,0xdb,0x69,0xc5,0x95,0x8c,0x11,0x22,0x02,0x1e,0x1f,0x40,0xb0,
+ 0x40,0xfa,0x56,0x1e,0x6d,0x3e,0xb3,0xb9,0xed,0x3e,0xe0,0xe9,0x9d,0x55,0x09,0xb7,
+ 0x13,0x3a,0xd7,0x31,0xb9,0x8d,0x26,0x40,0xe4,0xb0,0x0f,0x3e,0xbe,0x0a,0x49,0x52,
+ 0x7e,0xb5,0xfa,0x18,0x42,0xb8,0xd0,0x95,0x74,0xc8,0xcd,0x4d,0xbf,0x4a,0xa4,0x30,
+ 0xad,0xfd,0x9f,0x76,0xc2,0xd4,0xea,0x9d,0x87,0xb7,0x7a,0x56,0x3b,0x8a,0x1c,0x25,
+ 0x4d,0xd9,0xa3,0x82,0x47,0x97,0xdc,0xa7,0x0c,0x0d,0x05,0xa6,0x2d,0x51,0xc4,0x78,
+ 0x5a,0x72,0xd3,0x0d,0x80,0x4a,0x83,0x4c,0x41,0x69,0x09,0x04,0xf5,0x38,0x09,0xc5,
+ 0x2f,0x51,0x4a,0xc6,0x7c,0xa1,0xb4,0x34,0x90,0x94,0x24,0x21,0x20,0x60,0x04,0x8c,
+ 0x01,0x5f,0x54,0x51,0x48,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,
+ 0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,
+ 0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x9a,0xbb,0x8d,0xb5,0xba,0x57,
+ 0x76,0xb4,0xfb,0x96,0x6d,0x59,0x64,0x8b,0x79,0x82,0xa0,0x78,0x43,0xe8,0xf9,0xda,
+ 0x51,0x18,0xe2,0x6d,0x63,0xe6,0x42,0xbd,0x52,0x45,0x3a,0xa8,0xa0,0x0c,0xbf,0xed,
+ 0x0d,0xf0,0xca,0xbd,0xe9,0x61,0x2a,0xef,0xb7,0x4f,0x2f,0x52,0xd9,0xf9,0xad,0x56,
+ 0x99,0x18,0x13,0x19,0x1e,0x49,0x3d,0x1d,0xfc,0x8f,0xa1,0xaa,0x3d,0xaa,0xb4,0xd4,
+ 0xbb,0x0b,0x13,0x2d,0xb3,0x60,0x3b,0x0a,0x4b,0x20,0xb6,0xb8,0xef,0x34,0x5b,0x71,
+ 0x18,0xe5,0x8c,0x1f,0x2a,0xfd,0x10,0xd4,0x7d,0xb9,0x7b,0x05,0xa0,0x37,0x79,0xa2,
+ 0x35,0x56,0x98,0x83,0x73,0x7b,0x84,0xa5,0x32,0x8b,0x7c,0x0f,0xa7,0x3e,0x4b,0x4e,
+ 0x0d,0x5a,0x95,0x72,0x43,0x8f,0x87,0xe7,0x93,0x54,0x58,0xbe,0xd3,0xa3,0xa3,0xbb,
+ 0x1c,0x97,0x97,0x19,0x5c,0x4b,0x09,0x1d,0x12,0x7a,0xfe,0x1c,0xa9,0x17,0x4a,0x4b,
+ 0x47,0xd8,0x8b,0x7c,0x40,0x38,0xda,0x8e,0x53,0x9e,0x7c,0x27,0x9e,0x47,0xd6,0xb6,
+ 0x3f,0x5b,0x7c,0x27,0x36,0xce,0x7f,0xda,0xa5,0xd8,0xb5,0x1e,0xa2,0xd3,0x8a,0x21,
+ 0x4a,0x0c,0xb4,0xea,0x1f,0x6f,0xd8,0x85,0xa7,0x24,0x7d,0x6a,0x06,0xec,0xd9,0xf0,
+ 0xea,0xd2,0xba,0x87,0x7b,0xae,0x0a,0xbf,0xde,0xd5,0x73,0xb6,0x69,0xa9,0x8d,0xa9,
+ 0x56,0xf4,0x40,0x0d,0x26,0x69,0x1f,0x36,0x16,0x7b,0xc5,0x61,0x27,0x1c,0xc0,0x1c,
+ 0xfc,0xe8,0x74,0xf7,0x43,0x8d,0xad,0x99,0x07,0xf6,0x3c,0xec,0xfd,0xa9,0x7b,0x47,
+ 0xee,0x15,0x9e,0xdc,0x96,0x26,0x23,0x46,0xc0,0x90,0x89,0x57,0x49,0xef,0xa5,0x45,
+ 0x80,0xda,0x54,0x09,0x6d,0x24,0xf2,0x2b,0x5e,0x38,0x40,0x1e,0x79,0x3d,0x2b,0x73,
+ 0xc0,0x09,0x00,0x0e,0x40,0x57,0x15,0x96,0xc5,0x6d,0xd3,0x76,0xe6,0xa0,0x5a,0x60,
+ 0x46,0xb6,0x41,0x6b,0x92,0x23,0x44,0x65,0x2d,0x36,0x9f,0x64,0xa4,0x01,0x5d,0xd5,
+ 0x05,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,
+ 0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x1f,0xff,0xd9};
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/thumb_test.h b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/thumb_test.h
new file mode 100644
index 000000000..0b43b0074
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/M5Stack/M5StickCPlus/thumb_test.h
@@ -0,0 +1,1286 @@
+//
+// thumb_test
+//
+const uint8_t thumb_test[] PROGMEM = { 0xff,0xd8,0xff,0xe1,0x1e,0x28,0x45,0x78,0x69,0x66,0x00,0x00,0x4d,0x4d,0x00,0x2a,
+ 0x00,0x00,0x00,0x08,0x00,0x0d,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x0f,0xc0,
+ 0x00,0x00,0x01,0x01,0x00,0x03,0x00,0x00,0x00,0x01,0x0b,0xd0,0x00,0x00,0x01,0x0f,
+ 0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xaa,0x01,0x10,0x00,0x02,0x00,0x00,
+ 0x00,0x0a,0x00,0x00,0x00,0xb2,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x06,
+ 0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xbc,0x01,0x1b,
+ 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xc4,0x01,0x28,0x00,0x03,0x00,0x00,
+ 0x00,0x01,0x00,0x02,0x00,0x00,0x01,0x31,0x00,0x02,0x00,0x00,0x00,0x0f,0x00,0x00,
+ 0x00,0xcc,0x01,0x32,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xdc,0x02,0x13,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x87,0x69,0x00,0x04,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x00,0xf0,0x88,0x25,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x03,0x20,0x00,0x00,0x03,0x26,0x73,0x61,0x6d,0x73,0x75,0x6e,0x67,0x00,0x53,0x4d,
+ 0x2d,0x47,0x39,0x36,0x35,0x55,0x31,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,
+ 0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x47,0x39,0x36,0x35,0x55,0x31,0x55,0x45,
+ 0x53,0x37,0x44,0x54,0x45,0x31,0x00,0x00,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a,
+ 0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x1f,0x82,0x9a,
+ 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x6a,0x82,0x9d,0x00,0x05,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x02,0x72,0x88,0x22,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x02,
+ 0x00,0x00,0x88,0x27,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0xfa,0x00,0x00,0x90,0x00,
+ 0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x32,0x32,0x30,0x90,0x03,0x00,0x02,0x00,0x00,
+ 0x00,0x14,0x00,0x00,0x02,0x7a,0x90,0x04,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00,
+ 0x02,0x8e,0x91,0x01,0x00,0x07,0x00,0x00,0x00,0x04,0x01,0x02,0x03,0x00,0x92,0x01,
+ 0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xa2,0x92,0x02,0x00,0x05,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x02,0xaa,0x92,0x03,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x02,0xb2,0x92,0x04,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xba,0x92,0x05,
+ 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xc2,0x92,0x07,0x00,0x03,0x00,0x00,
+ 0x00,0x01,0x00,0x02,0x00,0x00,0x92,0x09,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0x92,0x0a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xca,0x92,0x90,
+ 0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,0x02,0xd2,0x92,0x91,0x00,0x02,0x00,0x00,
+ 0x00,0x07,0x00,0x00,0x02,0xda,0x92,0x92,0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,
+ 0x02,0xe2,0xa0,0x00,0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0xa0,0x01,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa0,0x02,0x00,0x04,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x0f,0xc0,0xa0,0x03,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x0b,0xd0,0xa0,0x05,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x02,0xa2,0x17,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa3,0x01,0x00,0x01,0x00,0x00,
+ 0x00,0x01,0x01,0x00,0x00,0x00,0xa4,0x02,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0xa4,0x03,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x05,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x1a,0x00,0x00,0xa4,0x06,0x00,0x03,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x20,0x00,0x02,0x00,0x00,0x00,0x18,0x00,0x00,
+ 0x02,0xea,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3c,0x00,0x00,
+ 0x00,0xf0,0x00,0x00,0x00,0x64,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a,0x30,0x39,
+ 0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x32,0x30,0x32,0x30,0x3a,0x30,
+ 0x38,0x3a,0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x00,
+ 0x17,0x12,0x00,0x00,0x03,0xe8,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x64,0x00,0x00,
+ 0x00,0xa6,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,
+ 0x00,0x74,0x00,0x00,0x00,0x64,0x00,0x00,0x10,0xcc,0x00,0x00,0x03,0xe8,0x38,0x37,
+ 0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37,0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37,
+ 0x35,0x37,0x31,0x39,0x00,0x00,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56,
+ 0x4d,0x20,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31,0x56,0x41,0x00,0x00,0x02,
+ 0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x04,0x52,0x39,0x38,0x00,0x00,0x02,0x00,0x07,
+ 0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x09,0x01,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x40,
+ 0x01,0x01,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x03,
+ 0x00,0x00,0x00,0x01,0x00,0x06,0x00,0x00,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01,
+ 0x00,0x06,0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x98,
+ 0x01,0x1b,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0xa0,0x01,0x28,0x00,0x03,
+ 0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x02,0x01,0x00,0x04,0x00,0x00,0x00,0x01,
+ 0x00,0x00,0x03,0xa8,0x02,0x02,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x1a,0x78,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x48,
+ 0x00,0x00,0x00,0x01,0xff,0xd8,0xff,0xdb,0x00,0x84,0x00,0x17,0x10,0x11,0x14,0x11,
+ 0x0e,0x17,0x14,0x13,0x14,0x1a,0x18,0x17,0x1b,0x22,0x39,0x25,0x22,0x1f,0x1f,0x22,
+ 0x46,0x32,0x35,0x29,0x39,0x53,0x49,0x57,0x56,0x51,0x49,0x50,0x4f,0x5b,0x67,0x83,
+ 0x6f,0x5b,0x61,0x7c,0x63,0x4f,0x50,0x72,0x9c,0x74,0x7c,0x88,0x8c,0x93,0x95,0x93,
+ 0x59,0x6e,0xa1,0xad,0xa0,0x8f,0xab,0x83,0x90,0x93,0x8d,0x01,0x18,0x1a,0x1a,0x22,
+ 0x1e,0x22,0x43,0x25,0x25,0x43,0x8d,0x5e,0x50,0x5e,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0xff,0xc0,0x00,0x11,
+ 0x08,0x00,0xf0,0x01,0x40,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff,
+ 0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,
+ 0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01,
+ 0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,
+ 0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,
+ 0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,
+ 0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,
+ 0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,
+ 0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,
+ 0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,
+ 0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,
+ 0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,
+ 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,
+ 0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,
+ 0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02,
+ 0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,
+ 0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,
+ 0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,
+ 0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,
+ 0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,
+ 0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,
+ 0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,
+ 0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,
+ 0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,
+ 0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,
+ 0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,
+ 0x00,0xe4,0xe8,0xa0,0x0c,0xf4,0xa9,0xa3,0x87,0x72,0x96,0x3d,0xa8,0x02,0x20,0x09,
+ 0x35,0x32,0x42,0x4f,0xde,0x38,0xa7,0x46,0xb8,0xed,0x53,0xaa,0xd2,0x00,0x8e,0x35,
+ 0x5e,0x82,0xa6,0x51,0x48,0xab,0x52,0xaa,0xd0,0x00,0xa2,0xa3,0x9d,0x70,0x41,0x20,
+ 0x91,0x8e,0x82,0xac,0x2a,0xd2,0xc9,0x19,0x29,0xf2,0xfd,0xe1,0xc8,0xa1,0x3b,0x31,
+ 0x34,0x67,0x32,0x81,0x27,0x00,0x81,0x8e,0x86,0x96,0x9f,0x26,0xe2,0xe4,0xc9,0x9d,
+ 0xc7,0xae,0x69,0x95,0xd7,0x15,0x64,0x73,0xb7,0x76,0x32,0x53,0x85,0x3e,0xf5,0x00,
+ 0x5f,0x5a,0x7c,0xc4,0xee,0xc5,0x47,0x5c,0xf3,0x77,0x67,0x44,0x55,0x90,0xed,0xc0,
+ 0x74,0xa4,0x27,0x34,0x94,0x54,0x0c,0x28,0xa2,0x8a,0x00,0x2a,0x68,0x46,0xd1,0xb8,
+ 0xd4,0x20,0x64,0xe2,0xae,0x42,0x22,0xda,0x44,0x85,0x87,0xa6,0x06,0x6a,0x92,0x6f,
+ 0x61,0x37,0x61,0x73,0x91,0xc7,0x35,0x13,0xf5,0xdc,0xc3,0x1f,0xad,0x5a,0xf2,0xa3,
+ 0xc0,0x11,0xce,0xbc,0x76,0x3c,0x7f,0x3e,0x29,0xaf,0x6d,0x29,0x19,0x1c,0x81,0xdc,
+ 0x00,0x47,0xe9,0x51,0x66,0xb7,0x1d,0xd3,0x21,0x8c,0x82,0x38,0x39,0xc7,0xbe,0x6a,
+ 0xb4,0xed,0xba,0x53,0xe8,0x38,0xab,0x25,0x7c,0x88,0xd8,0x9e,0xbd,0x6a,0x90,0xe4,
+ 0xd3,0x40,0x4b,0x08,0xe6,0xad,0x2d,0x41,0x18,0xc0,0xa9,0x94,0xd0,0xc0,0x94,0x1a,
+ 0x5c,0xd3,0x01,0xa3,0x34,0x80,0x76,0x68,0xcd,0x37,0x34,0x99,0xa0,0x07,0xe6,0x93,
+ 0x34,0xdc,0xd2,0x66,0x80,0x1d,0x9a,0x4c,0xd2,0x66,0x93,0x34,0x00,0xec,0xd2,0x66,
+ 0x9b,0x9a,0x33,0x40,0xc5,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xec,0xd2,0x66,0x9b,
+ 0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xc5,0x50,0x3a,0x54,0xe3,
+ 0xe5,0xb7,0x3e,0xe6,0xa3,0x41,0x52,0xb8,0xc4,0x6a,0x29,0x88,0x48,0xd7,0x8a,0x99,
+ 0x45,0x35,0x05,0x4a,0xa2,0x81,0x8e,0x51,0x52,0xa8,0xa6,0xad,0x48,0xb4,0x80,0x7a,
+ 0x8a,0x76,0x29,0x05,0x2d,0x02,0x22,0x92,0x14,0x72,0x0b,0x0e,0x47,0x43,0x50,0x3c,
+ 0xa1,0x3e,0x59,0x6d,0x91,0xc0,0xee,0x38,0x3f,0xa5,0x5b,0x34,0xc2,0xa1,0xba,0x8c,
+ 0xd3,0x4d,0xa1,0x35,0x72,0x91,0x6b,0x57,0xed,0x2c,0x7f,0x5e,0x45,0x30,0xdb,0x46,
+ 0xfc,0xa4,0x88,0x7e,0xbc,0x55,0xa7,0x81,0x0f,0x6c,0x54,0x1e,0x57,0x96,0x18,0x2e,
+ 0x30,0xdd,0x73,0x4e,0xe1,0xa9,0x03,0x59,0xb8,0xe4,0x29,0x23,0xd5,0x79,0xa8,0x8c,
+ 0x24,0x77,0xfc,0xea,0x42,0x25,0x43,0x90,0xd9,0xa3,0xed,0x33,0x0e,0x1f,0xe6,0xfa,
+ 0xd0,0x17,0x64,0x25,0x18,0x76,0xa6,0xd4,0xfe,0x7a,0x1f,0xbd,0x1e,0x3e,0x94,0x6e,
+ 0x8d,0xba,0x31,0x1f,0x5a,0x02,0xe4,0x51,0x8f,0x9b,0x35,0x2e,0x68,0xda,0x07,0x42,
+ 0x0d,0x37,0x70,0x3d,0x0d,0x6b,0x0d,0x11,0x9c,0xb5,0x1d,0x9a,0x37,0x32,0xe0,0xf2,
+ 0x3d,0xe8,0x52,0x37,0x0c,0xf4,0xa5,0x76,0xf9,0x58,0x33,0x03,0x9e,0x94,0xe5,0x2b,
+ 0x3b,0x02,0x88,0xdb,0x89,0x9d,0xe3,0x08,0xce,0xcc,0x09,0xee,0x73,0x55,0xd4,0x64,
+ 0xd2,0xb9,0xc9,0xfa,0x52,0xa0,0xac,0xa4,0xf5,0x2d,0x6c,0x4c,0xb5,0x20,0xa8,0xd6,
+ 0x9d,0x50,0x50,0xfc,0xd1,0x9a,0x6d,0x2d,0x00,0x2e,0x68,0xcd,0x25,0x14,0x00,0x66,
+ 0x8c,0xd1,0x82,0x7a,0x0a,0x70,0x8d,0xcf,0x45,0x34,0x00,0xcc,0xd1,0x52,0x8b,0x79,
+ 0x0f,0x6a,0x78,0xb2,0x90,0xf6,0xfd,0x28,0x02,0xb5,0x15,0x75,0x74,0xf6,0x3d,0x73,
+ 0x52,0x2e,0x9e,0x3b,0x91,0x40,0x19,0xb4,0x60,0x9e,0x80,0xd6,0xb2,0xd9,0x46,0x3a,
+ 0xfe,0x94,0xf1,0x6f,0x1a,0xf6,0xfc,0x69,0x85,0xcc,0x81,0x1b,0x9f,0xe1,0x34,0xe1,
+ 0x03,0x9e,0xd5,0xad,0xe5,0xa0,0xfe,0x11,0x4a,0x00,0xec,0x00,0xa0,0x2e,0x65,0x0b,
+ 0x49,0x0f,0x6a,0x91,0x2c,0x58,0xf5,0xfe,0x75,0xa2,0x69,0xa7,0x27,0xa9,0x3f,0x4a,
+ 0x02,0xe6,0x30,0x38,0x35,0x2c,0x87,0xe6,0x0b,0xe8,0x2a,0x1c,0xa9,0x20,0xd2,0x97,
+ 0x05,0xc9,0xcf,0x5a,0x00,0xb0,0xb5,0x2a,0xd5,0x55,0x71,0xeb,0x52,0x2c,0x9e,0xf4,
+ 0x01,0x65,0x6a,0x45,0x35,0x59,0x64,0xa9,0x16,0x5a,0x40,0x59,0x06,0x97,0x35,0x5c,
+ 0x4a,0x29,0x7c,0xd1,0xeb,0x40,0x12,0x93,0x40,0xa8,0x7c,0xd0,0x6a,0x45,0x39,0x5a,
+ 0x00,0x47,0x3c,0x54,0x0d,0x52,0x48,0xd5,0x0b,0x1a,0x00,0x6b,0x54,0x4c,0x33,0x4f,
+ 0x26,0x9a,0x68,0x02,0x26,0x8c,0x1e,0xd4,0xcd,0x85,0x4e,0x54,0xd4,0xd4,0x6c,0x27,
+ 0xa0,0x26,0x98,0x15,0x4a,0xb0,0x39,0x14,0xd2,0x08,0xab,0xc2,0xda,0x46,0xe8,0x86,
+ 0xa4,0x5d,0x36,0x66,0xfe,0x1c,0x0a,0x00,0xcd,0x0c,0xc3,0xbd,0x1b,0xc9,0xad,0x65,
+ 0xd1,0xd8,0xfd,0xe6,0xa9,0x57,0x47,0x84,0x7d,0xe3,0x9f,0xc6,0x9d,0xc4,0x61,0xf7,
+ 0xa9,0x91,0x4e,0x38,0x15,0xba,0x9a,0x75,0xb2,0x7f,0x08,0xfa,0xe2,0xa6,0x5b,0x78,
+ 0x97,0x8d,0x9d,0x29,0x01,0x84,0xb1,0x39,0xe8,0xa6,0xa5,0x5b,0x59,0x5b,0xf8,0x6b,
+ 0x68,0x22,0x8e,0x40,0x1f,0x5c,0x53,0xbe,0x9d,0x7d,0xe8,0x03,0x21,0x6c,0x25,0x35,
+ 0x2a,0xe9,0xad,0xfc,0x47,0x15,0xa4,0x08,0x6e,0x0f,0x06,0x9b,0x9c,0x70,0x68,0x02,
+ 0xa2,0xe9,0xc8,0x3a,0x9a,0x91,0x6c,0xa2,0x1f,0x5a,0xb0,0x0f,0xaf,0xe6,0x28,0x34,
+ 0x01,0x18,0x82,0x31,0xfc,0x34,0xed,0x88,0x3f,0x84,0x52,0xe6,0x9a,0xc7,0x8e,0x28,
+ 0x10,0xa4,0xe3,0x8e,0x28,0x07,0xeb,0xf4,0xa8,0x3c,0xd0,0x4e,0x2a,0x45,0xe4,0x71,
+ 0x40,0xc7,0x73,0xcf,0xa7,0xa5,0x07,0xa6,0x7a,0x8f,0x5a,0x06,0x09,0xc6,0xfc,0x1f,
+ 0x7a,0x4c,0x95,0x3d,0x28,0x00,0x3e,0xa4,0x63,0xde,0x93,0xa0,0xe3,0xf5,0xa3,0x9e,
+ 0xdc,0x7b,0x50,0x06,0x3a,0x1e,0x68,0x00,0xce,0x3a,0x7c,0xa7,0xd0,0xd2,0x12,0x0f,
+ 0x4a,0x31,0xea,0x29,0x0f,0xb7,0x5a,0x00,0x4c,0x60,0xf3,0x4b,0xd4,0x62,0x8f,0xaf,
+ 0x22,0x93,0xe9,0x92,0x28,0x03,0x9f,0x2d,0x4d,0xcd,0x3c,0xc6,0x47,0x26,0x90,0x29,
+ 0x3d,0xa9,0x8c,0x4c,0xd3,0x83,0x53,0x4f,0x06,0x81,0x40,0x8b,0x2b,0x9c,0x53,0xb2,
+ 0x6a,0x21,0x27,0xb5,0x28,0x93,0x27,0x81,0x48,0x09,0x77,0x1f,0x5a,0x4d,0xc6,0xaf,
+ 0x43,0xa6,0x3b,0xa0,0x67,0x60,0xb9,0xe7,0x15,0x3a,0x69,0x90,0x8f,0xbc,0xc4,0xd0,
+ 0x06,0x6c,0x44,0x96,0xab,0xa0,0xe1,0x6a,0xe2,0x5a,0x40,0x9d,0x13,0xf3,0xa9,0x02,
+ 0x22,0xf0,0x11,0x47,0xe1,0x40,0x19,0x66,0x37,0x73,0xf2,0xa9,0xa5,0x5b,0x19,0x9f,
+ 0xb6,0x2b,0x57,0x24,0x0c,0x8f,0xca,0x94,0x1d,0xe3,0x23,0xa8,0xed,0x45,0x87,0x73,
+ 0x35,0x74,0xc6,0xfe,0x26,0x02,0xa4,0x5d,0x3a,0x25,0xfb,0xc4,0x9a,0xba,0x47,0xff,
+ 0x00,0xaa,0x90,0x9c,0x0e,0x7f,0x03,0x40,0x88,0x16,0xd6,0x05,0xe8,0x99,0xa9,0x04,
+ 0x48,0xbd,0x10,0x52,0x6f,0xf9,0xb0,0x3f,0x2a,0x90,0x7f,0x9f,0x6a,0x00,0x40,0x00,
+ 0xe4,0x74,0xf6,0xe2,0x8e,0x73,0xd6,0x97,0x1d,0xe8,0xc6,0x69,0x80,0xd2,0x71,0x48,
+ 0x0e,0x6a,0xb5,0xc5,0xca,0x47,0x2e,0xc0,0xe3,0x77,0x71,0x9a,0x9e,0x16,0x0c,0x01,
+ 0xe7,0x9e,0x86,0x90,0x0f,0xc7,0x6a,0x5f,0xf2,0x29,0x70,0x7d,0x31,0xf5,0xa3,0x1e,
+ 0xf4,0xc0,0x6e,0x3f,0x0a,0x0f,0xbd,0x2f,0x43,0xc8,0xfc,0x69,0x0e,0x00,0xc9,0x3f,
+ 0x8d,0x00,0x43,0x70,0xe1,0x13,0x73,0x1c,0x7b,0xd4,0x31,0x4f,0xe6,0x1f,0x5a,0xcd,
+ 0xd5,0x99,0xde,0xeb,0x68,0x3b,0x95,0x47,0x18,0xa9,0x74,0x72,0xde,0x63,0x2e,0x38,
+ 0x1c,0xd2,0x03,0x5d,0x41,0xc7,0x50,0x05,0x38,0x0f,0x6f,0xc2,0x98,0x5b,0x61,0xce,
+ 0xc0,0x45,0x28,0x64,0x3d,0x10,0x50,0x02,0x90,0x3b,0x11,0x54,0x35,0x1b,0xcf,0xb3,
+ 0xc5,0x84,0x1f,0x31,0x38,0x19,0xed,0x57,0xb7,0xec,0x3b,0x5a,0x35,0xc7,0xa8,0xaa,
+ 0x57,0xd6,0x8b,0x70,0x41,0x24,0xa1,0x1c,0x02,0x46,0x41,0xfa,0xd3,0x03,0x36,0xd2,
+ 0xe1,0xe4,0xb8,0x0a,0xe7,0x3b,0xab,0x6d,0x71,0xc0,0x3f,0x9d,0x67,0x5a,0xe9,0xc6,
+ 0x29,0x83,0xb9,0x0d,0x83,0xc0,0x4e,0x95,0xa5,0x8e,0x06,0x40,0x3c,0x74,0xa0,0x00,
+ 0xaf,0xa8,0xa0,0x64,0x0c,0x67,0x23,0xde,0x80,0x48,0x1e,0xab,0xef,0x4a,0x46,0x79,
+ 0x1c,0x8f,0xe5,0x48,0x04,0xa4,0x34,0xa7,0x81,0xde,0x93,0xaf,0x7a,0x00,0x4e,0xbd,
+ 0xe8,0xa5,0xc5,0x21,0xa0,0x02,0x93,0xa7,0x3c,0xfd,0x45,0x2f,0xf9,0xff,0x00,0x3e,
+ 0xb4,0x87,0x9a,0x00,0xc3,0x77,0x14,0xdd,0xf8,0x07,0x15,0x16,0xe3,0x49,0x92,0x69,
+ 0x8c,0x52,0x79,0xa2,0x95,0x63,0x77,0xce,0xd5,0x24,0x0e,0xb4,0xe1,0x18,0xc7,0x27,
+ 0x14,0x00,0x8b,0x92,0x70,0x2a,0x78,0x53,0x32,0xa2,0xf5,0x24,0x81,0x4d,0x1c,0x0c,
+ 0x0f,0xce,0xac,0x59,0x2e,0x6f,0x21,0x1f,0xed,0x8a,0x40,0x74,0x2c,0xbc,0x9a,0x4c,
+ 0x7e,0x74,0xa4,0xf3,0x49,0x9a,0x04,0x28,0xc6,0x3d,0xbf,0x95,0x27,0x5f,0xf0,0xa4,
+ 0xef,0xef,0xfc,0xe9,0x0f,0x34,0x00,0xbc,0x8e,0x47,0x4f,0x4a,0x69,0x1c,0xe4,0x64,
+ 0x1f,0x5a,0x5c,0xff,0x00,0x9f,0x5a,0x3a,0x8c,0x8a,0x00,0x50,0x77,0x7a,0x06,0xf4,
+ 0xaa,0x9a,0x85,0xe0,0xb3,0x8b,0x3b,0x77,0x33,0x1c,0x00,0x6a,0xc9,0xe4,0x8a,0xa7,
+ 0xa9,0x5a,0x9b,0x98,0xc6,0xde,0x59,0x4e,0x70,0x69,0x81,0x52,0xc2,0xed,0xae,0x2e,
+ 0x36,0x9e,0x0f,0x5a,0xd9,0x5f,0xbb,0xc6,0x3f,0x3a,0xcd,0xd3,0x2c,0x0d,0xbb,0xb4,
+ 0x92,0xe3,0x71,0x18,0x00,0x76,0x15,0xa1,0x81,0xd8,0xd0,0x03,0x87,0x1e,0x98,0xa8,
+ 0xee,0x49,0x11,0x31,0x8c,0xf3,0x8e,0xd4,0xe0,0x40,0xe3,0x6f,0x3e,0xf4,0xbb,0xc9,
+ 0x04,0x64,0x8f,0x61,0xc5,0x00,0x72,0x9b,0x1f,0x7f,0xab,0x13,0xeb,0xc9,0x35,0xd2,
+ 0xc2,0x36,0x40,0x81,0xfa,0x80,0x01,0x23,0xd6,0x9f,0xe4,0x44,0xcf,0xbb,0x0b,0xbf,
+ 0xd7,0x60,0xcf,0xe7,0x4e,0x23,0x03,0x03,0x8c,0x50,0x03,0x4a,0x81,0xd4,0xb6,0x3d,
+ 0x45,0x18,0x00,0xe0,0xee,0xfc,0x4d,0x03,0x23,0xfc,0x29,0x78,0xc7,0x1c,0xaf,0xa7,
+ 0xa5,0x20,0x10,0x8c,0x75,0x1f,0x91,0xa4,0xe0,0x73,0xc7,0xd7,0x14,0xec,0x52,0x63,
+ 0xd3,0xf2,0xf5,0xa6,0x05,0x79,0x6d,0x23,0x9c,0x8f,0x35,0x50,0x91,0xd3,0xb7,0x1f,
+ 0x51,0x52,0x45,0x02,0xc0,0x81,0x10,0x2a,0x01,0xc8,0x51,0xc8,0x34,0xfe,0xdc,0x74,
+ 0xf4,0x3d,0xa8,0xe8,0x3a,0x64,0x50,0x01,0x9c,0xf6,0xc1,0xa6,0x91,0xea,0x3f,0x11,
+ 0x4f,0xed,0x91,0xcd,0x20,0xa0,0x04,0x04,0xff,0x00,0xbc,0x3f,0x5a,0x00,0xc0,0xca,
+ 0xf2,0x3b,0xad,0x29,0x5f,0x4f,0xd2,0x93,0x9e,0xe0,0x9f,0x71,0xd6,0x90,0x0b,0x9d,
+ 0xc3,0x20,0xe7,0xf9,0x8a,0x6e,0x73,0xf5,0xfe,0x74,0xa5,0x4e,0x72,0x3a,0xfa,0xd1,
+ 0xd7,0x20,0xf0,0xde,0x9e,0xb4,0x00,0x9c,0x73,0xeb,0xde,0x9b,0x8c,0x72,0xbc,0x53,
+ 0x8f,0xbf,0x6a,0x4f,0xf3,0xfe,0x7d,0x28,0x00,0x52,0x09,0xc7,0x46,0xf4,0xa0,0x8c,
+ 0x7e,0x14,0x84,0x03,0xfe,0x71,0x8f,0xf0,0xa0,0x31,0x1c,0x37,0x20,0x77,0xee,0x28,
+ 0x00,0xa4,0x34,0xe2,0x3b,0x8e,0x9f,0xe7,0xf2,0xa6,0xff,0x00,0x4f,0xf3,0xf8,0x50,
+ 0x00,0x69,0x3f,0xad,0x2d,0x21,0x00,0xf0,0x7f,0x2a,0x00,0xc2,0x74,0xd8,0xd8,0xc7,
+ 0xe9,0x4d,0x15,0x79,0xa2,0x57,0x1b,0x76,0xfd,0x08,0xaa,0xf3,0x40,0xd0,0xb0,0x0c,
+ 0x31,0x9a,0x0b,0x68,0x8c,0x12,0x07,0x14,0xaa,0x41,0xeb,0x40,0x14,0xa0,0x0a,0x09,
+ 0x0c,0xf3,0xc5,0x5b,0xd3,0x06,0xeb,0xf8,0xbd,0x89,0x3f,0xa5,0x55,0x15,0x77,0x48,
+ 0x5c,0xde,0x83,0xe8,0xa4,0xd0,0x06,0xcb,0x52,0x70,0x7f,0x1a,0x53,0x49,0xef,0xd8,
+ 0xd0,0x20,0x34,0x75,0xfa,0xd1,0x49,0xd6,0x80,0x0c,0x51,0xdf,0xfc,0xf3,0x40,0x39,
+ 0xe0,0xf5,0xa3,0x93,0xf2,0x9e,0xbd,0x8f,0xad,0x00,0x06,0x80,0x48,0xe9,0x47,0xb1,
+ 0xeb,0x46,0xd6,0x3d,0x06,0x7e,0x94,0x00,0xbd,0xbd,0xe9,0xa7,0xae,0x45,0x4a,0xb1,
+ 0x39,0xf4,0x1f,0x8d,0x3c,0x5b,0xb1,0xff,0x00,0xf5,0x1a,0x60,0x57,0xeb,0xdb,0xea,
+ 0x29,0x4a,0xd5,0x91,0x6a,0xde,0x8d,0xf9,0x52,0xfd,0x9d,0x47,0x52,0x3f,0x16,0x14,
+ 0x01,0x50,0xaf,0xff,0x00,0x58,0xd2,0x83,0xeb,0xd6,0xad,0x08,0xa3,0x1f,0xc4,0xbf,
+ 0x9e,0x69,0xac,0xd6,0xa9,0xf7,0xa5,0x41,0xfa,0x7f,0x3a,0x00,0xaf,0x8a,0x36,0x1c,
+ 0xe4,0x53,0xda,0xfa,0xc5,0x3a,0xcc,0x0f,0xd3,0x15,0x13,0xeb,0x36,0x29,0xd0,0xb3,
+ 0x7e,0x26,0x80,0x1f,0xe5,0xb7,0xf7,0x4f,0xd2,0x97,0xc9,0x3e,0xd5,0x51,0xfc,0x41,
+ 0x6c,0x3e,0xe4,0x39,0xfa,0x8a,0x85,0xfc,0x48,0xdf,0xf2,0xce,0x10,0xb4,0x01,0xa4,
+ 0x20,0x27,0xff,0x00,0xac,0x29,0xe2,0xd9,0x8f,0x66,0xfc,0xab,0x09,0xfc,0x43,0x74,
+ 0xdd,0x36,0xaf,0xd0,0x54,0x0f,0xac,0x5e,0xbf,0x59,0x4f,0xe5,0x40,0x1d,0x2f,0xd9,
+ 0x71,0xd4,0x63,0xea,0x68,0x30,0xa2,0xf2,0xce,0x83,0xea,0x6b,0x93,0x6b,0xdb,0xa7,
+ 0xeb,0x2b,0xff,0x00,0xdf,0x46,0xa2,0x69,0x24,0x27,0x25,0xbf,0x5a,0x2c,0x07,0x5c,
+ 0x65,0xb4,0x4f,0xbd,0x73,0x18,0xf6,0x15,0x13,0x6a,0x1a,0x7a,0x75,0x99,0x8f,0xd1,
+ 0x6b,0x94,0x3b,0x8f,0x7a,0x4e,0x7d,0x69,0xd8,0x0e,0x9d,0xb5,0x9b,0x15,0x38,0x0b,
+ 0x2b,0x7d,0x0f,0xff,0x00,0x5e,0xa5,0x9b,0x6c,0xaa,0x92,0x21,0x38,0x61,0x95,0xfa,
+ 0x1a,0xe4,0xeb,0xa6,0xb4,0x60,0xfa,0x6c,0x04,0xe3,0x84,0x03,0x9f,0x6e,0x29,0x00,
+ 0xe0,0xdd,0x03,0x75,0xec,0x68,0x23,0x14,0x1e,0x9e,0xab,0x49,0x9c,0x7b,0x8f,0xf3,
+ 0xd6,0x90,0x09,0xfe,0x7f,0xcf,0xf8,0x52,0x1f,0xf3,0xfe,0x7f,0xa5,0x38,0x8f,0x4f,
+ 0xf3,0xfe,0x34,0x9d,0x7f,0x1a,0x00,0x68,0xca,0xf2,0xbf,0x95,0x28,0x21,0xba,0x70,
+ 0x47,0x6a,0x29,0xa4,0x67,0xfa,0x63,0xfc,0xfe,0x94,0x00,0xa7,0x8f,0xf3,0x8f,0xff,
+ 0x00,0x55,0x21,0x19,0x1f,0xe7,0xfc,0x8a,0x04,0x9d,0x03,0xfd,0x03,0x0a,0x71,0x18,
+ 0xc7,0xe8,0x45,0x00,0x50,0x69,0x41,0x18,0x55,0x0b,0x50,0xcc,0x73,0xb7,0x3c,0xd4,
+ 0xa1,0x41,0x15,0x0c,0xc9,0xf3,0x50,0x8d,0xa5,0xb0,0xcc,0x52,0x62,0x8c,0x95,0xa7,
+ 0x2b,0x03,0x4c,0xc8,0x69,0xab,0xfa,0x30,0xff,0x00,0x49,0x73,0xe8,0x87,0xf9,0x8a,
+ 0xa4,0xc2,0xb4,0x34,0x65,0xc3,0x4c,0x7f,0xd9,0x02,0x80,0x34,0x8d,0x20,0xeb,0xc7,
+ 0x5f,0xe7,0x4a,0x69,0x0f,0x23,0xe9,0x48,0x41,0xd3,0xe9,0xdc,0x7a,0x50,0x48,0xfc,
+ 0xfb,0xd0,0x0e,0x7a,0x7d,0xee,0xfe,0xf4,0x9d,0xb8,0xe9,0xfc,0xa8,0x00,0xc0,0xe9,
+ 0xfe,0x45,0x1d,0x78,0x34,0x99,0xc7,0x04,0xfd,0x0f,0xa5,0x2f,0xd7,0x83,0x40,0x0b,
+ 0x9e,0xcd,0xf8,0x1f,0x5a,0x64,0xae,0xd1,0xae,0xe1,0xd4,0x7b,0x53,0xb1,0xeb,0xd2,
+ 0xa2,0xb9,0xff,0x00,0x55,0xfd,0x68,0x02,0x84,0x9a,0xed,0xdc,0x6d,0x80,0xc3,0xf2,
+ 0xa8,0x9b,0x5e,0xbc,0x6f,0xe2,0xac,0xf9,0x8e,0xe6,0x53,0xed,0x49,0x4c,0x0b,0xaf,
+ 0xac,0x5e,0x3f,0xf1,0x81,0xf4,0x51,0x51,0x36,0xa1,0x76,0xdf,0xf2,0xd9,0xc7,0xd1,
+ 0xb1,0x55,0xe8,0xa6,0x03,0x9a,0x69,0x9f,0xef,0x48,0xc7,0xea,0x69,0xb9,0x63,0xd5,
+ 0x8d,0x2d,0x2e,0x29,0xd8,0x06,0x6d,0xf7,0xa3,0x6d,0x3f,0x14,0x62,0x9d,0x80,0x66,
+ 0xd1,0x4b,0x8a,0x76,0xda,0x36,0x9f,0x4a,0x2c,0x03,0x71,0x45,0x4a,0xb6,0xf3,0x3f,
+ 0xdc,0x89,0xdb,0xe8,0xa4,0xd3,0x24,0x8d,0xa3,0x72,0x8e,0xa5,0x58,0x75,0x04,0x60,
+ 0x8a,0x00,0x65,0x14,0xb4,0x94,0x08,0x29,0x29,0x69,0x28,0x01,0xa6,0xba,0x3d,0x2d,
+ 0xb3,0xa6,0x47,0xea,0x09,0x1f,0xad,0x73,0xad,0x5b,0xfa,0x2b,0x6e,0xd3,0xd8,0x7a,
+ 0x39,0xfe,0x42,0xa5,0x8c,0xb3,0xdf,0x8c,0x83,0xdc,0x51,0x9f,0x4e,0x94,0x11,0x9f,
+ 0xf1,0x14,0x67,0xd4,0xf3,0xeb,0x52,0x02,0x63,0x00,0xfa,0x7a,0x50,0x46,0x79,0x1f,
+ 0xe7,0xfc,0xfa,0xd2,0xe0,0xf5,0xa4,0xe9,0xfe,0x71,0xff,0x00,0xea,0xa0,0x06,0x9f,
+ 0xf3,0xfe,0x7b,0xd2,0x1f,0xf3,0xfe,0x7b,0xd3,0xb8,0x3c,0x74,0xfd,0x3f,0xfd,0x54,
+ 0x84,0x11,0xfe,0x7f,0xce,0x28,0x01,0xa4,0x7a,0xf7,0xfc,0x7f,0xfd,0x74,0x83,0x29,
+ 0xd3,0x95,0x3d,0xa9,0x79,0x5f,0x71,0xe8,0x7b,0x51,0xdb,0x8e,0x47,0x70,0x68,0x02,
+ 0x90,0x5e,0x7a,0xd4,0x6e,0x39,0xeb,0x52,0x6e,0xc0,0xf7,0xa8,0xf9,0x26,0x9a,0x35,
+ 0x90,0xdd,0xa0,0xd3,0x1e,0x32,0x3a,0x54,0xb8,0xa5,0xc5,0x33,0x32,0xb8,0x6c,0x75,
+ 0xad,0x6d,0x23,0xee,0x4c,0x7e,0x83,0xf9,0xd6,0x73,0x46,0x0d,0x69,0xe9,0x08,0x56,
+ 0xda,0x4f,0x77,0xfe,0x94,0x98,0x8b,0x86,0x90,0xe4,0x1e,0x94,0xa7,0xff,0x00,0xd6,
+ 0x29,0x3b,0x71,0xfa,0xd2,0x01,0x3a,0xf2,0xbd,0x68,0x1c,0xf3,0xdf,0xb8,0xa3,0x83,
+ 0xce,0x71,0x48,0x7a,0xe4,0x70,0x47,0x51,0x40,0x0b,0xc1,0x19,0xed,0x40,0xf4,0x34,
+ 0x03,0x9f,0x99,0x7a,0xf7,0x14,0xa3,0x91,0x91,0xf9,0x50,0x02,0x63,0x15,0x0d,0xd7,
+ 0xfa,0xa3,0x56,0x2a,0xbd,0xdf,0xfa,0xa3,0x40,0x1c,0xdc,0x83,0x05,0x7e,0x9f,0xd6,
+ 0x96,0x89,0xbe,0xfa,0x7f,0xba,0x28,0xaa,0x00,0xa2,0x8a,0x5a,0x60,0x15,0xd1,0xe8,
+ 0x7a,0x15,0xb6,0xa1,0x65,0xe7,0xcc,0xf2,0x86,0xdc,0x57,0x0a,0x40,0x1f,0xca,0xb9,
+ 0xd1,0x5d,0xaf,0x85,0x3f,0xe4,0x12,0x7f,0xeb,0xa9,0xfe,0x42,0x98,0x02,0xf8,0x7f,
+ 0x4a,0x4c,0xe5,0x59,0xf1,0xd7,0xe7,0xff,0x00,0x0a,0x7f,0xf6,0x6e,0x95,0x0e,0x3f,
+ 0xd1,0x13,0xfe,0x04,0xc7,0xfa,0x9a,0x86,0xf5,0xe0,0x5b,0xf9,0x0c,0xe8,0xc5,0x7f,
+ 0xba,0x3b,0xfe,0xb4,0xd7,0xbc,0xb3,0xdc,0x36,0xda,0x97,0x03,0xa1,0x69,0x38,0xed,
+ 0xfe,0x15,0x56,0x15,0xd1,0x75,0x60,0xb1,0x8c,0x02,0xb6,0x76,0xe0,0x1e,0x87,0x68,
+ 0xa1,0xef,0x60,0x83,0x0a,0xa9,0x1a,0x93,0xd3,0x67,0xff,0x00,0x5a,0xa9,0xfd,0xb2,
+ 0xdf,0xaa,0xda,0x40,0x31,0xcf,0x20,0x9f,0xe4,0xb5,0x1c,0xd7,0xb1,0x60,0x79,0x16,
+ 0xab,0xe6,0x64,0xb1,0x65,0x53,0xc1,0xc1,0xc7,0xa5,0x3e,0x51,0x29,0xa3,0x62,0xca,
+ 0x65,0xbb,0x81,0x67,0x08,0x54,0x37,0x4c,0xf7,0xae,0x33,0xc4,0x89,0xb7,0x5b,0xb8,
+ 0xf7,0xc1,0xfd,0x05,0x76,0x1a,0x3a,0xba,0xe9,0xd1,0xab,0xf5,0x1e,0xd5,0xca,0xf8,
+ 0xa9,0x71,0xac,0x31,0xf5,0x45,0x3f,0xa5,0x67,0xd4,0xbb,0xdd,0x18,0x94,0x94,0xa6,
+ 0x8a,0x64,0x89,0x45,0x14,0x50,0x03,0x5b,0xa5,0x6d,0xe8,0x27,0x36,0xf3,0x2f,0xa1,
+ 0x07,0xf4,0xff,0x00,0xeb,0x56,0x2b,0x74,0xad,0x6f,0x0f,0xb7,0xcd,0x3a,0xfa,0x80,
+ 0x7f,0x9f,0xf8,0xd4,0xb1,0x9a,0x4d,0x9c,0xf7,0xcd,0x27,0xeb,0x4a,0x71,0xd0,0x51,
+ 0xc5,0x48,0x00,0x19,0xe4,0x7e,0x54,0xdf,0xf3,0xfe,0x7f,0xc2,0x82,0x49,0xe9,0x41,
+ 0xe7,0xaf,0x5e,0xf4,0x00,0x87,0x9f,0xe9,0x8f,0xf3,0xfa,0x52,0x06,0x20,0xff,0x00,
+ 0x9f,0xf3,0xf8,0x52,0x9e,0x7a,0xff,0x00,0x9f,0xf1,0xa4,0x3e,0xff,0x00,0xe3,0xff,
+ 0x00,0xeb,0xa0,0x03,0x83,0xca,0xfe,0x5f,0xe1,0x4c,0x23,0x1c,0x83,0x83,0xfe,0x7f,
+ 0x2a,0x71,0xe3,0x9f,0xf3,0xff,0x00,0xd7,0xa3,0x83,0xfe,0x7f,0xce,0x68,0x02,0x93,
+ 0x2e,0xe2,0x70,0x2a,0x3a,0x99,0xf0,0xa3,0x03,0xbd,0x31,0x57,0x34,0xd1,0xac,0xf7,
+ 0x1a,0x05,0x18,0xe6,0xa4,0x0b,0x49,0x8a,0x66,0x63,0x42,0xd6,0xa5,0x80,0xc5,0xa7,
+ 0x5c,0x12,0xc6,0xb3,0xb1,0x5a,0x76,0xa3,0x16,0x69,0xc7,0x52,0x7f,0x9d,0x26,0x22,
+ 0x4c,0xf7,0xfc,0x08,0xa3,0x19,0xfa,0xd1,0x8f,0xc7,0xd3,0xdc,0x52,0x73,0xd4,0x75,
+ 0x1f,0xad,0x20,0x02,0x4e,0x79,0x1c,0x8e,0xbe,0xe2,0x90,0x73,0xdf,0x91,0xd2,0x94,
+ 0xf3,0xfd,0x0d,0x21,0x19,0xf6,0x34,0x00,0x9c,0x83,0x91,0xc1,0x1d,0x45,0x3b,0xaf,
+ 0x23,0xaf,0x71,0x48,0x3e,0x6f,0xad,0x1d,0x39,0x14,0x00,0xee,0xa2,0xab,0xdd,0xff,
+ 0x00,0xaa,0x35,0x3d,0x57,0xbd,0x3f,0xba,0x3f,0x4a,0x00,0xe7,0x65,0xfb,0xeb,0xfe,
+ 0xea,0xff,0x00,0x2a,0x5a,0x49,0x7f,0xd6,0x8f,0xa0,0xfe,0x54,0xb4,0xc6,0x14,0x51,
+ 0x45,0x31,0x0a,0x2b,0xb4,0xf0,0x9f,0xfc,0x82,0x9f,0xfe,0xba,0x9f,0xe4,0x2b,0x8c,
+ 0x15,0xd9,0x78,0x4b,0xfe,0x41,0x72,0x7f,0xd7,0x53,0xfc,0x85,0x37,0xb0,0x0f,0xd4,
+ 0x24,0x56,0xb8,0x97,0x04,0x12,0xa3,0xf5,0xaa,0x3b,0x9d,0x42,0xb9,0x72,0x09,0xce,
+ 0x07,0xe3,0x8f,0xe9,0x56,0xae,0xd1,0xe3,0xb9,0x96,0x4c,0x15,0x3b,0x89,0xf4,0xc8,
+ 0xaa,0xe5,0x5a,0x79,0xf0,0xb9,0x66,0x6e,0xe7,0x8c,0xd5,0xbd,0x11,0xc1,0x55,0xea,
+ 0xfb,0x8b,0x3c,0xdb,0x94,0x2a,0xb1,0xe9,0xcf,0x02,0xb3,0x5a,0x66,0x59,0xb8,0x6c,
+ 0xe3,0xd6,0xb4,0x9a,0xd2,0x40,0x8c,0xd9,0x52,0x17,0xae,0x18,0x1a,0xac,0x65,0xb6,
+ 0x8c,0x8c,0x88,0xcb,0xf5,0x39,0x5c,0xd2,0x4f,0x52,0x29,0xb6,0xa5,0xef,0x23,0xa0,
+ 0xd2,0x5c,0xbe,0x9f,0x1b,0x1e,0xf9,0xae,0x6b,0xc5,0xeb,0x8d,0x4d,0x0f,0xac,0x43,
+ 0xf9,0x9a,0xe9,0x74,0x96,0x0d,0x62,0xa5,0x71,0x8c,0x9c,0x62,0xb9,0xff,0x00,0x18,
+ 0xaf,0xfa,0x5c,0x0d,0xeb,0x19,0x1f,0xad,0x4f,0x53,0xbe,0x9f,0xc0,0x8e,0x6c,0xd2,
+ 0x52,0x9a,0x4a,0x65,0x09,0x45,0x2d,0x25,0x00,0x21,0xe9,0x5a,0x3a,0x01,0xff,0x00,
+ 0x4b,0x71,0xea,0x87,0xf9,0x8a,0xce,0x3d,0x2a,0xee,0x88,0xd8,0xd4,0x14,0x7a,0xa9,
+ 0x1f,0xa5,0x26,0x33,0x71,0xf3,0x9f,0xe4,0x4d,0x37,0x9f,0x41,0xfe,0x34,0xf7,0xc0,
+ 0x63,0xd2,0x99,0x8c,0xf4,0xfc,0xaa,0x00,0x5c,0x86,0xf6,0x3e,0x94,0xdf,0xf3,0xe9,
+ 0xff,0x00,0xea,0xa0,0x8c,0xe3,0xfa,0x7f,0x9f,0xd2,0x8f,0xf3,0xfe,0x7f,0xc2,0x80,
+ 0x03,0xfe,0x7b,0x7f,0xfa,0xa9,0xbf,0xe7,0xd3,0xff,0x00,0xd5,0x4b,0xfe,0x7f,0xcf,
+ 0xad,0x14,0x00,0xd3,0xfe,0x7f,0xcf,0x6a,0x43,0x4e,0xff,0x00,0x23,0xfc,0xff,0x00,
+ 0x4a,0x4f,0xa7,0xe1,0x8f,0xf3,0xfa,0x50,0x05,0x32,0x39,0xa5,0x15,0x69,0x2d,0xd5,
+ 0xc1,0x27,0x23,0x9e,0x31,0x41,0xb4,0xf4,0x6f,0xcc,0x53,0x34,0x96,0xe5,0x62,0x0d,
+ 0x26,0x39,0xab,0x0d,0x6c,0xe3,0xa6,0x0f,0xe3,0x51,0x18,0x9c,0x75,0x53,0x41,0x0c,
+ 0x65,0x6a,0x5b,0xf1,0x6b,0x10,0xf6,0xfe,0xb5,0x96,0x6b,0x56,0x2e,0x2d,0xa2,0xff,
+ 0x00,0x74,0x50,0xc4,0x03,0xe5,0x38,0x61,0xf2,0x9e,0x94,0xac,0x0a,0x9f,0xf3,0xcd,
+ 0x19,0x19,0xd9,0x27,0x43,0xd0,0xd0,0xa4,0xa9,0xf2,0xdc,0xff,0x00,0xba,0x69,0x00,
+ 0x9f,0xc8,0xf5,0xa4,0xfe,0x7f,0xce,0x94,0x82,0xa4,0x9c,0x7d,0x45,0x04,0x64,0x64,
+ 0x1a,0x00,0x43,0xc8,0xc8,0xa5,0x07,0x3f,0x5a,0x40,0x7b,0xf7,0xee,0x29,0x71,0xdc,
+ 0x50,0x02,0xd5,0x4b,0xf3,0xfb,0x86,0xfa,0x7a,0xd5,0xac,0x7f,0x9f,0x5a,0xa9,0xa8,
+ 0xf1,0x6e,0xff,0x00,0x4a,0x00,0xc0,0x9b,0xfd,0x77,0xe0,0x3f,0x95,0x2d,0x24,0xdf,
+ 0xeb,0xcd,0x2d,0x31,0x85,0x14,0x51,0x4c,0x43,0x85,0x76,0x3e,0x12,0xff,0x00,0x90,
+ 0x6c,0xbf,0xf5,0xd4,0xff,0x00,0x21,0x5c,0x70,0xae,0xc3,0xc2,0x3f,0xf1,0xe1,0x37,
+ 0xfd,0x74,0xfe,0x82,0x9f,0x40,0x24,0xd5,0x03,0x35,0xd1,0x22,0x40,0x9c,0x85,0xea,
+ 0x33,0xfa,0xd3,0x0d,0xa2,0x88,0xb9,0x90,0x99,0x43,0x05,0xcf,0xb1,0xef,0x8a,0xd2,
+ 0xbc,0x86,0x2b,0x86,0x55,0x62,0x81,0x93,0x9c,0xb5,0x66,0xc8,0x5d,0xa6,0x0e,0xdb,
+ 0x43,0x28,0x1c,0x8e,0x71,0x55,0xba,0xb1,0xcd,0x55,0x42,0x1e,0xf3,0x43,0x1e,0xd0,
+ 0x41,0x6b,0x21,0x3c,0x31,0x7e,0x3e,0x94,0xdb,0x38,0x99,0xa2,0x53,0xb4,0x91,0x93,
+ 0x9e,0x3d,0xea,0x5b,0x89,0xde,0x48,0xf6,0x99,0x03,0x03,0xd7,0xe5,0x22,0xab,0x7c,
+ 0xc7,0x6a,0xee,0xe3,0xea,0x70,0x2a,0x69,0xc5,0xc0,0xc6,0x75,0xe3,0xcf,0x74,0x6d,
+ 0x69,0x99,0x10,0xc8,0xb8,0xc6,0x24,0x35,0x87,0xe3,0x24,0xf9,0xad,0x5f,0xd9,0x87,
+ 0xf2,0xad,0xad,0x2d,0x3c,0x8b,0x62,0x19,0x89,0xdc,0xe4,0xfd,0xdc,0x62,0xb2,0x7c,
+ 0x61,0xb5,0xad,0x6d,0xd8,0x10,0x70,0xc4,0x7e,0x94,0x75,0x3b,0x60,0x9f,0x2e,0xa7,
+ 0x24,0x69,0x29,0x4d,0x25,0x31,0x85,0x25,0x14,0x50,0x01,0x56,0x34,0x96,0xdb,0xa9,
+ 0x45,0xf5,0x23,0xf4,0xaa,0xf5,0x25,0x8b,0x6d,0xbf,0x84,0xff,0x00,0xd3,0x41,0xfc,
+ 0xe9,0x31,0x9d,0x34,0x84,0x67,0x9c,0xe2,0xa3,0x20,0x83,0xea,0x3d,0x6a,0x59,0x07,
+ 0x35,0x1f,0xb7,0x4a,0x80,0x17,0xaf,0x5e,0xfd,0xfb,0x1a,0x69,0xef,0x9f,0xc7,0x3f,
+ 0xe7,0xf5,0xa3,0x07,0xa0,0xfc,0x47,0xad,0x1e,0x9c,0xe7,0xd3,0xfc,0xff,0x00,0x4a,
+ 0x00,0x69,0xef,0x9f,0xd7,0xfc,0xfe,0xb4,0x87,0xdf,0xf5,0xff,0x00,0x3f,0xad,0x3b,
+ 0xe9,0xfa,0x7f,0x4f,0xf0,0xa4,0xf4,0xfe,0x9f,0xe7,0xf4,0xa0,0x04,0xf5,0xcf,0xe3,
+ 0x9f,0xeb,0xfe,0x34,0x87,0xbf,0xeb,0x9f,0xeb,0xfe,0x34,0xbf,0xe4,0x63,0xfa,0x7f,
+ 0x85,0x27,0xa7,0xe9,0x8f,0xe9,0xfe,0x14,0x01,0x24,0x6c,0x3a,0x73,0x9a,0x92,0xa0,
+ 0x40,0x7d,0x31,0x53,0x03,0x48,0xd2,0x5b,0x8b,0x49,0x4b,0x9a,0x43,0x41,0x22,0x10,
+ 0x0f,0x51,0x9f,0xa8,0xab,0x04,0x7c,0xaa,0xa3,0x81,0xb4,0x7e,0x15,0x5f,0x3c,0xd5,
+ 0x97,0xeb,0x8c,0xe3,0x8a,0x62,0x64,0x58,0x07,0xf7,0x72,0x77,0xfb,0xa6,0x8c,0x12,
+ 0x36,0xbf,0x55,0xe8,0x69,0x58,0x03,0xf2,0xb7,0xd4,0x1f,0x4a,0x39,0x3c,0x37,0xde,
+ 0x1f,0xa8,0xa0,0x40,0x1b,0x3c,0x77,0xe9,0xf5,0xa6,0xfd,0xd3,0xea,0x0d,0x04,0x66,
+ 0x94,0x12,0xc3,0xa6,0x7d,0x68,0x01,0x3d,0x30,0x7e,0x86,0x94,0x50,0x72,0x28,0xa0,
+ 0x05,0xf6,0xaa,0x3a,0x9f,0xfc,0x7b,0xbf,0xfb,0xa6,0xae,0xd5,0x0d,0x50,0xff,0x00,
+ 0xa3,0x3f,0xfb,0xbe,0xb9,0xa0,0x0c,0x49,0xbf,0xe3,0xe5,0xbe,0xb4,0xb4,0x93,0xff,
+ 0x00,0xc7,0xd3,0xfd,0x69,0x69,0x8c,0x28,0xa2,0x8a,0x60,0x38,0x57,0x5f,0xe1,0x0f,
+ 0xf8,0xf2,0x9b,0xfe,0xba,0x7f,0x4a,0xe3,0xc5,0x75,0xde,0x10,0x3f,0xe8,0x93,0xff,
+ 0x00,0xbe,0x3f,0x95,0x02,0x37,0x7c,0x84,0xf3,0x19,0xc8,0xc9,0x6c,0x75,0xf6,0xa8,
+ 0xd6,0xca,0x35,0x89,0x50,0x76,0x18,0xcf,0xad,0x58,0xa2,0x8b,0xb1,0x4a,0x2a,0x4a,
+ 0xcd,0x10,0x2d,0xaa,0x0c,0xe7,0x04,0x9e,0xf8,0xa8,0x64,0xd3,0x91,0xd4,0xfc,0xc7,
+ 0x3d,0xb8,0x15,0x76,0x8a,0x2e,0xc8,0x74,0x60,0xd5,0x9a,0x32,0x61,0xd2,0xe7,0x03,
+ 0x12,0x4f,0xf2,0xe7,0x21,0x47,0x18,0xac,0xff,0x00,0x14,0x5a,0x08,0x74,0xe8,0x9c,
+ 0x12,0x48,0x93,0x1d,0x7d,0x8d,0x74,0xd5,0x8d,0xe2,0xa5,0xdd,0xa3,0x13,0xfd,0xd7,
+ 0x53,0x4e,0xed,0x9a,0xad,0x15,0x91,0xc3,0x9a,0x4a,0x53,0x4d,0xa6,0x48,0x51,0x45,
+ 0x25,0x00,0x2d,0x10,0xb6,0xdb,0x84,0x3e,0x8c,0x0d,0x25,0x34,0xf0,0xd4,0x98,0xd1,
+ 0xd7,0x4a,0x39,0xed,0xf8,0xd4,0x7d,0xb1,0x9a,0x91,0x8e,0xe4,0x04,0x1e,0xa3,0xd2,
+ 0xa3,0xef,0xef,0xe9,0x50,0x02,0x63,0x1d,0x69,0x0f,0x7f,0xd7,0x3f,0xe7,0xf5,0xa7,
+ 0x73,0xdb,0xa8,0xed,0x48,0x7d,0xa8,0x01,0x0d,0x21,0xf7,0xfd,0x68,0xff,0x00,0x3e,
+ 0xbf,0xfe,0xb1,0x48,0x7a,0xff,0x00,0x9f,0xf3,0x8a,0x00,0x3d,0x7f,0xaf,0xf9,0xfd,
+ 0x69,0x0f,0x7f,0xd7,0x3f,0xd7,0xfc,0x69,0x69,0x3f,0xcf,0x1f,0xd2,0x80,0x24,0x06,
+ 0x9c,0x3d,0xea,0x31,0x52,0x03,0xc5,0x22,0x85,0xa4,0x26,0x8a,0x42,0x71,0x40,0x06,
+ 0x6a,0xcc,0x98,0xdd,0xc9,0xe2,0xa9,0x83,0xf3,0x0a,0xbb,0x27,0xde,0x3d,0xe9,0x88,
+ 0x60,0xe7,0xe5,0x07,0x9e,0xa0,0xd2,0x11,0xcf,0x3d,0x68,0x24,0x95,0xc8,0xe0,0x8a,
+ 0x5f,0xbe,0xb9,0x07,0x9a,0x04,0x27,0x51,0x9c,0x7d,0x69,0xbc,0x8e,0x47,0x5a,0x50,
+ 0x70,0x72,0x0f,0x1d,0xc5,0x07,0x8f,0xa5,0x00,0x2f,0x50,0x0f,0xaf,0xe9,0x45,0x34,
+ 0x1d,0xbd,0x79,0x53,0xde,0x9c,0x7e,0xf6,0x3f,0xc9,0xa0,0x04,0xac,0xfd,0x54,0xe2,
+ 0xdd,0xfe,0x95,0xa1,0xfe,0x45,0x66,0xea,0xc7,0xfd,0x1d,0xb1,0x40,0x18,0xd2,0x9c,
+ 0xdc,0xbf,0xfb,0xc6,0x9d,0x4c,0x7f,0xf5,0xc7,0xeb,0x4f,0xa6,0x30,0xa2,0x92,0x8a,
+ 0x00,0x70,0xad,0x4d,0x27,0x5a,0x93,0x4c,0x8e,0x44,0x48,0x95,0xf7,0x90,0x7e,0x63,
+ 0xd2,0xb2,0xa8,0xa6,0x07,0x48,0x7c,0x5b,0x71,0xda,0xde,0x2f,0xd7,0xfc,0x69,0xa7,
+ 0xc5,0x97,0x5d,0xa1,0x87,0xf2,0x3f,0xe3,0x5c,0xf6,0x68,0xcd,0x16,0x41,0x73,0xa0,
+ 0x3e,0x2c,0xbc,0xff,0x00,0x9e,0x50,0x7e,0x47,0xfc,0x69,0xa7,0xc5,0x77,0xbf,0xdc,
+ 0x87,0xfe,0xf9,0x3f,0xe3,0x58,0x39,0xa4,0xa7,0x64,0x17,0x37,0x4f,0x8a,0xaf,0xff,
+ 0x00,0xbb,0x0f,0xfd,0xf3,0xff,0x00,0xd7,0xaa,0xd7,0xda,0xf5,0xdd,0xf5,0xb3,0x41,
+ 0x2f,0x97,0xb1,0x88,0x27,0x0b,0x8a,0xcb,0xa4,0xa2,0xc2,0xb8,0x1a,0x4a,0x29,0x29,
+ 0x88,0x29,0x29,0x69,0x28,0x00,0xa6,0xb7,0x5a,0x75,0x35,0xba,0xd2,0x63,0x47,0x57,
+ 0x11,0xdf,0x6b,0x11,0xe7,0x94,0x1d,0x3e,0x94,0xdc,0xe7,0xe5,0x6e,0xbd,0x88,0xa6,
+ 0x59,0x9d,0xda,0x7c,0x1d,0xfe,0x40,0x3a,0xd4,0x9c,0x36,0x47,0xf3,0xa9,0x00,0xcf,
+ 0x66,0xea,0x3a,0x11,0x48,0x4e,0x68,0x07,0xb1,0xe4,0x7a,0xff,0x00,0x8d,0x0d,0xc7,
+ 0xd2,0x90,0x09,0xfe,0x7d,0x3f,0xfd,0x46,0x93,0xfc,0xfa,0x7f,0xfa,0x8d,0x2d,0x21,
+ 0xa0,0x04,0xff,0x00,0x3f,0xe7,0xd0,0xd0,0x7f,0xcf,0xf9,0xec,0x68,0xc7,0xf9,0xff,
+ 0x00,0x3d,0xa8,0xff,0x00,0x3f,0xe7,0xda,0x80,0x05,0x34,0xfc,0x8a,0x80,0xb8,0x55,
+ 0xe4,0x8e,0x29,0x8d,0x70,0x00,0x3e,0xd4,0x8a,0x2c,0x96,0xc5,0x31,0xe4,0xaa,0x92,
+ 0x5c,0x1f,0x9b,0xdb,0x15,0x0b,0xcc,0x72,0xdc,0xf4,0xe9,0x40,0x17,0x92,0x41,0xe6,
+ 0x2f,0xd4,0x56,0xa3,0x8e,0x6b,0x9f,0xb7,0x62,0xf7,0x48,0xa0,0xf5,0x75,0xfe,0x75,
+ 0xd1,0x95,0x34,0x21,0x32,0xbe,0x30,0xd9,0x14,0x83,0x28,0x4e,0x3a,0x54,0xe5,0x29,
+ 0xa5,0x46,0x3d,0xe9,0x81,0x11,0x19,0x39,0x1d,0x7b,0xfb,0xd0,0x31,0xfe,0x34,0xf2,
+ 0xa3,0x1e,0xf4,0xd2,0xb9,0xeb,0xd7,0xd6,0x81,0x0d,0xc6,0x09,0x1e,0xbd,0xbd,0x68,
+ 0xed,0x8f,0xca,0x9d,0x8c,0x70,0x7f,0x0a,0x4d,0xbe,0xc6,0x80,0x13,0x39,0x1e,0xfd,
+ 0xeb,0x33,0x56,0xcf,0x94,0x47,0x3d,0x45,0x6a,0x6d,0x3e,0xf9,0xf5,0xc5,0x46,0xf1,
+ 0x24,0xa3,0x0c,0x8b,0xee,0x0d,0x00,0x72,0xae,0x7f,0x7a,0xc7,0xdf,0x34,0xbb,0xfd,
+ 0xab,0xa4,0x36,0x36,0xe7,0xfe,0x59,0x27,0xe7,0x4d,0xfb,0x05,0xb7,0xfc,0xf1,0x5f,
+ 0xfb,0xe8,0x53,0x19,0xce,0xef,0xf6,0xa3,0x7f,0xb5,0x74,0x5f,0xd9,0xf6,0xdf,0xf3,
+ 0xc1,0x7f,0x31,0x47,0xf6,0x75,0xbf,0xfc,0xfb,0x8f,0xc0,0x8f,0xf0,0xa0,0x0e,0x77,
+ 0x7f,0xb5,0x1b,0xfd,0xab,0xa1,0x3a,0x7d,0xae,0x71,0xe4,0x7f,0x2a,0x3f,0xb3,0x6d,
+ 0xbf,0xe7,0x88,0x14,0x5c,0x0e,0x7f,0x7f,0xb5,0x1b,0xfd,0xab,0xa0,0xfe,0xcc,0xb6,
+ 0xff,0x00,0x9e,0x60,0x52,0x7f,0x65,0xdb,0x7f,0x70,0x51,0x70,0x30,0x37,0xfb,0x52,
+ 0x6f,0xf6,0xad,0xff,0x00,0xec,0xbb,0x6f,0xee,0x8a,0x3f,0xb2,0xed,0xff,0x00,0xba,
+ 0x28,0xb8,0x8c,0x0d,0xfe,0xd4,0x9b,0xfd,0xab,0x7f,0xfb,0x2a,0xdf,0xfb,0xa2,0x8f,
+ 0xec,0xab,0x7f,0xee,0x8a,0x2e,0x07,0x3f,0xbf,0xda,0x8d,0xfe,0xd5,0xd0,0x7f,0x65,
+ 0x5b,0xff,0x00,0x74,0x51,0xfd,0x97,0x6f,0xfd,0xd1,0xf9,0x51,0x70,0x39,0xfd,0xfe,
+ 0xd4,0x9b,0xbd,0xab,0xa1,0xfe,0xcb,0x80,0x7f,0x00,0xfc,0xa8,0xfe,0xcc,0x83,0xfb,
+ 0x8b,0xf9,0x51,0x70,0x39,0xed,0xde,0xd4,0x84,0xe6,0xba,0x3f,0xec,0xd8,0x07,0xf0,
+ 0xaf,0xe5,0x47,0xf6,0x7c,0x03,0xf8,0x16,0x8b,0x8c,0x4d,0x31,0xf7,0x69,0xf1,0x8e,
+ 0x38,0x1d,0xfe,0xb5,0x60,0x8c,0xfb,0x11,0x48,0x90,0x88,0xc6,0x13,0x81,0xe8,0x29,
+ 0xd8,0xa4,0x21,0x07,0x3f,0x5f,0x4a,0x3a,0x76,0xa0,0x8a,0x42,0x7d,0x68,0x00,0xe8,
+ 0x32,0xbc,0x8f,0x4a,0x33,0xdc,0x74,0xed,0xed,0x49,0x82,0x0e,0x47,0xff,0x00,0xae,
+ 0x97,0xef,0x72,0x3a,0xf7,0x14,0x00,0x80,0x9f,0xf0,0xf6,0xa0,0xf3,0xdb,0xe9,0x8a,
+ 0x5e,0x0f,0xd6,0x97,0x3e,0xbc,0x83,0xde,0x81,0x99,0xf3,0x1f,0x98,0xfb,0xa5,0x56,
+ 0x32,0x64,0x7d,0x56,0xb4,0x85,0xac,0x52,0x04,0x77,0x62,0x32,0x0f,0x7c,0x53,0x64,
+ 0xfb,0x2c,0x16,0x6e,0x23,0x40,0xec,0x00,0x61,0x8e,0x70,0x47,0xaf,0xb6,0x09,0xa9,
+ 0x19,0x9c,0x59,0x98,0x13,0x83,0x83,0xc1,0xe3,0xbd,0x29,0x86,0x63,0xb8,0xf9,0x6c,
+ 0x36,0xf0,0xd9,0xed,0x53,0xc9,0x77,0x34,0xaf,0x36,0x2d,0x94,0x09,0xa2,0x0c,0x57,
+ 0x70,0xfb,0xc3,0xf8,0x87,0xe3,0xdb,0xdc,0xd2,0x0b,0x8b,0xb9,0x24,0x53,0xfb,0xac,
+ 0xcd,0x06,0xc3,0x9c,0xe1,0xf0,0x3f,0x9f,0x4f,0xca,0x9d,0x82,0xe3,0x63,0xb4,0xb8,
+ 0x0e,0x4e,0x30,0xd1,0xa8,0x90,0xfa,0xe3,0x8e,0x7f,0x5a,0xe9,0xe0,0xb8,0x82,0x51,
+ 0x0e,0xe6,0x0b,0x24,0xcb,0xb9,0x57,0xd7,0xd7,0x1f,0x91,0xae,0x66,0x26,0xba,0x26,
+ 0xd6,0x4f,0xb4,0x6d,0xc2,0x98,0x83,0x05,0xc9,0x1d,0x78,0x3e,0xbd,0x4d,0x35,0x61,
+ 0x99,0x63,0x87,0x74,0xb2,0x8f,0x26,0x42,0x76,0x83,0x82,0xbe,0xac,0xbe,0xdc,0x53,
+ 0xb0,0xae,0x75,0x5f,0x6a,0xb3,0xf2,0xc4,0x9e,0x7a,0x6c,0x66,0xd8,0x1b,0x3c,0x67,
+ 0xd2,0x86,0x9e,0xcc,0x33,0xab,0x5c,0x46,0xa6,0x33,0x87,0x05,0xc0,0xda,0x7d,0xeb,
+ 0x91,0x78,0x22,0x09,0x22,0x99,0x37,0x30,0x7d,0xcb,0x97,0xe1,0xc7,0xf8,0xd2,0x98,
+ 0xad,0x08,0x90,0xa9,0x5d,0x8e,0x00,0x53,0xce,0x55,0xbd,0x29,0x88,0xeb,0x03,0xda,
+ 0x3f,0xdd,0xb9,0x8c,0xfd,0x24,0x06,0x9e,0x20,0x8d,0xbe,0xeb,0x83,0xf4,0x35,0xcb,
+ 0xaa,0xc0,0xac,0xd2,0x1f,0x28,0x79,0x6b,0xb5,0xd0,0x0f,0xbd,0x9e,0xeb,0x56,0xad,
+ 0xec,0x83,0xbd,0xbc,0x49,0x30,0x2d,0xb3,0xcc,0x89,0xc0,0xfb,0xdc,0x7d,0xd3,0xef,
+ 0xda,0x80,0x37,0x8d,0xa0,0xfe,0xf1,0xa6,0x9b,0x3f,0xf6,0xab,0x1d,0x6d,0x56,0x38,
+ 0xc5,0xdc,0x4c,0xdf,0x3b,0x10,0xcb,0xfd,0xc3,0xff,0x00,0xd7,0xab,0x50,0x48,0xfb,
+ 0x41,0xde,0xdf,0x9d,0x21,0x97,0x0d,0x99,0xec,0xd4,0x86,0xd1,0xf3,0x90,0xdc,0xfd,
+ 0x6a,0x31,0x34,0x9f,0xdf,0x6f,0xce,0x94,0x5c,0x49,0xfd,0xf3,0x40,0x0e,0x36,0x92,
+ 0x7f,0x78,0xfe,0x74,0x7d,0x95,0xfd,0x4f,0xe7,0x49,0xf6,0x89,0x7f,0xbf,0xfa,0x0a,
+ 0x5f,0xb4,0xcb,0xfd,0xef,0xd0,0x50,0x02,0x7d,0x9a,0x4f,0x53,0xf9,0xd3,0x4d,0xab,
+ 0xfb,0x9a,0x7f,0xda,0xa4,0x1d,0x48,0xfc,0xa9,0x1a,0xf1,0xd5,0x4b,0x1d,0xb8,0x1e,
+ 0xd4,0xc0,0x6f,0xd9,0xdc,0x0e,0xf4,0x9e,0x43,0x7a,0x56,0x5b,0x6b,0xf7,0xca,0xc7,
+ 0x10,0xc0,0xc3,0xe8,0x7f,0xc6,0x81,0xe2,0x1b,0xbe,0xf6,0xb1,0x7e,0x04,0xd1,0x61,
+ 0x1a,0x7e,0x43,0x0f,0xe1,0xe2,0x93,0xc9,0x6f,0x43,0x54,0x07,0x88,0x67,0x18,0xcd,
+ 0xa2,0x7e,0x0f,0x4f,0xff,0x00,0x84,0x80,0x96,0x21,0x6d,0x43,0x60,0x67,0xef,0xff,
+ 0x00,0xf5,0xa9,0xa8,0xb6,0x17,0x2e,0x79,0x2d,0xfd,0xde,0x28,0xf2,0x4f,0xa1,0xaa,
+ 0x3f,0xf0,0x92,0x60,0xf3,0x69,0xff,0x00,0x8f,0xff,0x00,0xf5,0xaa,0x55,0xf1,0x02,
+ 0x3f,0xfc,0xbb,0xff,0x00,0xe3,0xff,0x00,0xfd,0x6a,0x1c,0x5a,0xdc,0x2e,0x58,0xf2,
+ 0x58,0x7f,0x0f,0x14,0x79,0x27,0x3d,0x2a,0x21,0xad,0xa1,0xff,0x00,0x97,0x73,0xff,
+ 0x00,0x7d,0xff,0x00,0xf5,0xa9,0xe3,0x58,0x8c,0xff,0x00,0xcb,0x13,0xff,0x00,0x7d,
+ 0x52,0x01,0xde,0x49,0xf4,0xa4,0x30,0x9e,0xc3,0x9a,0x51,0xaa,0x46,0x7f,0xe5,0x91,
+ 0xfc,0xe9,0xc3,0x52,0x8c,0xff,0x00,0xcb,0x33,0xf9,0xd2,0x01,0x9e,0x51,0xf4,0xa0,
+ 0xc4,0x7d,0x2a,0x4f,0xed,0x08,0xbf,0xe7,0x9b,0x52,0xfd,0xbe,0x2f,0xee,0x35,0x00,
+ 0x43,0xe5,0x9f,0x4a,0x4f,0x2c,0xe3,0xa5,0x4f,0xf6,0xf8,0x7f,0xb8,0xff,0x00,0xa5,
+ 0x1f,0x6d,0x83,0xfb,0xaf,0xf9,0x50,0x05,0x7d,0x84,0x76,0xc8,0xa3,0xcb,0x3e,0x86,
+ 0xa7,0xfb,0x64,0x1e,0x8d,0xf9,0x51,0xf6,0xb8,0x7f,0xda,0xfc,0xa8,0x19,0x07,0x96,
+ 0x7d,0x29,0x3c,0xb3,0xdc,0x55,0x8f,0xb5,0xc1,0xfe,0xd7,0xe5,0x47,0xda,0xe0,0xf7,
+ 0xfc,0xa8,0x02,0xb1,0x8c,0xe6,0x8f,0x2c,0x9c,0x1c,0x60,0xd5,0x9f,0xb5,0x41,0xea,
+ 0x7f,0x2a,0x3e,0xd3,0x07,0xf7,0xbf,0x4a,0x00,0xad,0xb0,0x91,0xc8,0xc1,0xa4,0xf2,
+ 0xbd,0xb1,0x56,0xbe,0xd3,0x07,0xf7,0xbf,0x4a,0x4f,0xb4,0xc1,0xfd,0xef,0xd2,0x80,
+ 0x30,0x25,0x6e,0x41,0xcf,0xdd,0x38,0xfc,0xea,0x21,0x30,0x8b,0x95,0x3c,0xa9,0xc7,
+ 0x3d,0xc5,0x2d,0xc7,0xdc,0x90,0xff,0x00,0xb4,0x05,0x53,0x90,0x90,0x5c,0x7a,0x62,
+ 0x90,0xcb,0x2f,0x7a,0x54,0x91,0x1a,0x2a,0x05,0x5c,0x2f,0x19,0xdb,0xd3,0xa1,0xff,
+ 0x00,0x3d,0x6a,0x36,0xbb,0x90,0xe4,0x03,0xb4,0x05,0x1c,0x28,0x03,0x1d,0x39,0x1e,
+ 0x86,0xab,0xb7,0x56,0xfc,0xa9,0x09,0x1f,0x35,0x31,0x13,0x35,0xc4,0xac,0x7e,0x69,
+ 0x18,0xfc,0x98,0x3c,0xf5,0x14,0xc0,0xc4,0x95,0xcf,0x65,0xa6,0x12,0x32,0x7e,0x98,
+ 0xa3,0x77,0xf2,0xc5,0x00,0x39,0x5b,0x98,0xfe,0xb4,0xd0,0xfd,0x3d,0x8e,0x69,0x01,
+ 0xc1,0x1e,0xd4,0x2f,0xde,0x1f,0x5a,0x60,0x38,0x39,0x39,0x1e,0xf9,0xad,0x4b,0x49,
+ 0x1f,0x64,0x60,0x1c,0x6c,0x6d,0xca,0x47,0x50,0x7f,0xc8,0xac,0xe4,0x52,0x52,0x4c,
+ 0x2e,0x48,0x23,0x1c,0x56,0x85,0xba,0xed,0x8c,0x7a,0xd2,0x03,0x5a,0x19,0x06,0xc9,
+ 0x90,0x8c,0xac,0xb8,0x3f,0x46,0xf5,0xfe,0x75,0x22,0x70,0x31,0x55,0x61,0x6c,0x8a,
+ 0xb2,0xb9,0x22,0x90,0x0f,0xa5,0xcd,0x32,0x97,0x24,0x53,0x01,0xd9,0xa3,0x34,0xdc,
+ 0xd1,0x40,0x0e,0xeb,0x50,0x5e,0xf3,0x67,0x2f,0xfb,0xa6,0xa5,0xcd,0x43,0x77,0xcd,
+ 0xa4,0xbf,0xee,0x1f,0xe5,0x42,0xdc,0x47,0x3b,0x45,0x25,0x15,0xd4,0x66,0x0d,0xf7,
+ 0x4d,0x58,0xd2,0xf0,0xd7,0x04,0x1e,0xe8,0x6a,0xb3,0x7d,0xd3,0x56,0x34,0x93,0xfe,
+ 0x96,0x3f,0xdd,0x35,0x12,0x65,0x22,0xe5,0xc5,0x98,0x6c,0xb2,0xf5,0xac,0xf9,0x23,
+ 0x78,0x8f,0xf5,0xad,0xd2,0x2a,0x19,0x61,0x57,0x18,0x22,0x85,0x3b,0xe9,0x21,0x38,
+ 0xdb,0x63,0x2e,0x39,0xbb,0x37,0xe7,0x56,0x15,0xea,0x2b,0x8b,0x52,0x87,0x22,0xa0,
+ 0x57,0x68,0xce,0x0e,0x7e,0x86,0x94,0xa1,0xd8,0x6a,0x46,0x82,0xc9,0x52,0xab,0xd5,
+ 0x24,0x90,0x38,0xc8,0x35,0x28,0x62,0x2b,0x1b,0x16,0x5b,0x0d,0x4b,0xba,0xab,0x07,
+ 0xa7,0x86,0xa0,0x09,0xf3,0x46,0xea,0x88,0x35,0x2e,0xea,0x40,0x49,0x9a,0x33,0x4c,
+ 0xdd,0x46,0x68,0x02,0x4c,0xd2,0x66,0x9b,0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6,
+ 0x8c,0xd0,0x03,0xb3,0x45,0x37,0x34,0xb9,0xa0,0x0f,0xff,0xd9,0xff,0xe4,0x13,0x4b,
+ 0x51,0x54,0x49,0x20,0x44,0x65,0x62,0x75,0x67,0x20,0x4d,0x65,0x74,0x61,0x64,0x61,
+ 0x74,0x61,0x00,0x49,0x13,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x52,0x43,0xae,0xae,0xae,0xae,0x86,0x02,0x00,0x00,0xe8,0x05,0x00,
+ 0x00,0x7b,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0xaa,0x01,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x06,0x11,0xa5,0x88,0x03,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x4c,0x09,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x25,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x34,0x00,0x00,0x00,0xab,0x06,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x50,0x00,0x00,
+ 0x00,0x50,0x09,0x00,0x00,0x0b,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x73,0x02,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
+ 0x00,0x40,0x01,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xaa,0x01,0x00,0x00,0xe8,0x05,0x00,0x00,0xee,0xee,0xee,
+ 0xee,0x15,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x01,0x00,
+ 0x00,0x22,0x41,0x00,0x00,0x94,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x22,0x41,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0xf7,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xe6,0x0b,0x00,
+ 0x00,0x2f,0x08,0x00,0x00,0xe6,0x0b,0x00,0x00,0x10,0x00,0x00,0x00,0x31,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x94,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x68,0x00,0x00,
+ 0x00,0x26,0x09,0x00,0x00,0x87,0x08,0x00,0x00,0x0b,0x09,0x00,0x00,0xc6,0x08,0x00,
+ 0x00,0x25,0x09,0x00,0x00,0x09,0x09,0x00,0x00,0x1b,0x09,0x00,0x00,0x1d,0x09,0x00,
+ 0x00,0x21,0x09,0x00,0x00,0x3e,0x09,0x00,0x00,0x43,0x09,0x00,0x00,0x12,0x09,0x00,
+ 0x00,0x29,0x09,0x00,0x00,0x12,0x09,0x00,0x00,0x04,0x09,0x00,0x00,0xc7,0x08,0x00,
+ 0x00,0x56,0x08,0x00,0x00,0x69,0x07,0x00,0x00,0xc8,0x05,0x00,0x00,0x52,0x05,0x00,
+ 0x00,0x2b,0x09,0x00,0x00,0x27,0x09,0x00,0x00,0x67,0x08,0x00,0x00,0xc8,0x05,0x00,
+ 0x00,0x5f,0x08,0x00,0x00,0x32,0x0a,0x00,0x00,0x67,0x0a,0x00,0x00,0xa1,0x07,0x00,
+ 0x00,0x6d,0x05,0x00,0x00,0x04,0x08,0x00,0x00,0x2f,0x09,0x00,0x00,0x31,0x09,0x00,
+ 0x00,0x66,0x08,0x00,0x00,0xe8,0x05,0x00,0x00,0xf9,0x09,0x00,0x00,0xab,0x0a,0x00,
+ 0x00,0xe9,0x0a,0x00,0x00,0xf2,0x08,0x00,0x00,0x7e,0x05,0x00,0x00,0xdc,0x07,0x00,
+ 0x00,0x31,0x09,0x00,0x00,0x5a,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xee,0x09,0x00,
+ 0x00,0x73,0x0a,0x00,0x00,0xc5,0x0a,0x00,0x00,0x50,0x09,0x00,0x00,0x86,0x05,0x00,
+ 0x00,0x31,0x09,0x00,0x00,0x4e,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xe2,0x09,0x00,
+ 0x00,0x2b,0x0b,0x00,0x00,0xdc,0x0a,0x00,0x00,0x5c,0x09,0x00,0x00,0x86,0x05,0x00,
+ 0x00,0x38,0x09,0x00,0x00,0x3e,0x08,0x00,0x00,0xee,0x05,0x00,0x00,0xcf,0x09,0x00,
+ 0x00,0xe6,0x0b,0x00,0x00,0xd4,0x0b,0x00,0x00,0xdd,0x09,0x00,0x00,0x76,0x05,0x00,
+ 0x00,0xe8,0x05,0x00,0x00,0x06,0x06,0x00,0x00,0x3b,0x06,0x00,0x00,0x1c,0x06,0x00,
+ 0x00,0x33,0x08,0x00,0x00,0x1e,0x08,0x00,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xfe,0xff,0xff,0xff,0xbc,0x08,0x00,
+ 0x00,0x44,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x29,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x96,0x09,0x00,
+ 0x00,0xf9,0x0b,0x00,0x00,0xba,0x05,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0d,0x00,
+ 0x00,0x00,0x1d,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x8b,0xfe,0xff,
+ 0xff,0xdc,0xfe,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xad,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x06,0x00,
+ 0x00,0x7c,0x00,0x00,0x00,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0x0a,0x00,0x00,0x86,0x09,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xde,0x00,0x00,0x00,0xbb,0x00,0x00,
+ 0x00,0x17,0x00,0x00,0x00,0x1d,0x00,0x00,0x00,0xb6,0x00,0x00,0x00,0xa5,0x00,0x00,
+ 0x00,0xc1,0xff,0xff,0xff,0x3c,0x00,0x00,0x00,0xef,0xff,0xff,0xff,0xed,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,
+ 0x00,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x10,0x00,
+ 0x00,0x00,0x13,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x26,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0b,0x00,0x00,0xdf,0xff,0xff,
+ 0xff,0x64,0x08,0x00,0x00,0xa4,0x0a,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x0a,0x1e,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x6c,0x97,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xa5,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x92,0x02,0x00,0x00,0x8a,0x04,0x00,0x00,0xe4,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x5d,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,
+ 0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00,
+ 0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x4a,0x4b,0x4a,0x4b,0x21,0x07,0x0a,
+ 0x9c,0x24,0xfa,0x00,0x00,0xac,0xfa,0x00,0x00,0x2e,0x77,0x00,0x00,0x2c,0x7e,0x00,
+ 0x00,0xd6,0xea,0x01,0x00,0x50,0xb1,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0xaa,0x01,
+ 0x00,0x00,0xaa,0x01,0x00,0x02,0x00,0x35,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x02,
+ 0x00,0x00,0x00,0x76,0x00,0x75,0x18,0x7e,0x5b,0x02,0x00,0x00,0x00,0x01,0x00,0x87,
+ 0xb3,0x01,0x00,0x17,0x92,0x01,0x00,0xbb,0x6b,0xff,0xff,0x2d,0x02,0x00,0x00,0x69,
+ 0xdd,0xff,0xff,0x26,0x46,0x01,0x00,0x71,0xdc,0xff,0xff,0x70,0x0f,0x00,0x00,0x19,
+ 0x4f,0xff,0xff,0x76,0xa1,0x01,0x00,0xff,0xff,0x40,0x30,0x00,0x00,0x18,0x00,0x00,
+ 0x12,0x12,0x00,0x08,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x10,0x12,
+ 0x12,0x12,0x12,0x13,0x13,0x00,0x00,0x00,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x13,0x00,0x13,0x12,0x13,0x13,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x01,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x07,0x08,0x12,0x12,0x12,0x12,0x01,
+ 0x06,0x12,0x12,0x12,0x12,0x08,0x15,0x00,0x00,0x14,0x15,0x06,0x12,0x12,0x12,0x01,
+ 0x06,0x12,0x12,0x12,0x12,0x08,0x08,0x15,0x00,0x15,0x15,0x06,0x12,0x12,0x12,0x01,
+ 0x06,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x15,0x15,0x07,0x12,0x12,0x12,0x06,
+ 0x12,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x14,0x15,0x08,0x12,0x12,0x12,0x06,
+ 0x06,0x12,0x12,0x12,0x12,0x06,0x07,0x16,0x08,0x00,0x08,0x08,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x06,0x07,0x01,0x01,0x07,0x08,0x08,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x08,0x15,0x15,0x12,0x12,0x12,0x12,0x12,0x12,0x00,
+ 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xf9,0x0d,0x00,0x10,0x00,
+ 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xc3,
+ 0x0a,0x00,0x10,0xca,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x02,
+ 0x08,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x1b,
+ 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x25,0x4c,0x00,0x00,0x00,0x0e,
+ 0x18,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88,
+ 0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,
+ 0x1e,0x08,0x1b,0xfc,0x21,0xa8,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4c,0x24,0x38,0x1f,0x42,
+ 0x23,0x2f,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c,
+ 0x27,0x09,0x1e,0xf0,0x27,0xec,0x1b,0x2b,0x28,0x67,0x1c,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x67,0x2a,0x04,0x18,0x00,0x27,0x5d,0x19,0x7b,0x25,0x3d,0x16,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x2e,0x2d,0x15,0xd3,0x2b,0x56,0x16,0xa2,
+ 0x29,0x12,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xab,
+ 0x1c,0x9c,0x1a,0x7b,0x25,0x77,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x5d,0x1d,0x93,0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa1,0x26,0x42,0x20,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c,
+ 0x27,0x57,0x1e,0x75,0x27,0xc0,0x1d,0x83,0x28,0x72,0x1c,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x80,0x27,0x12,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf2,0x1f,0x1d,0x15,0xd2,
+ 0x24,0x83,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88,
+ 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,
+ 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x04,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x55,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x12,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x0f,0x00,0x1c,0x01,0xe8,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x13,
+ 0x01,0x07,0x00,0x00,0x00,0x00,0x00,0x2f,0x00,0x71,0x00,0x13,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0xc8,0x00,0x9b,
+ 0x01,0x00,0x00,0x00,0x00,0x04,0x00,0x5a,0x00,0xe8,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x0c,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x16,0x00,0x0b,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xf7,0x1f,0xfe,0xb7,0x15,0xfe,0xb7,0x15,
+ 0xe2,0x17,0x10,0xe2,0x17,0x10,0x00,0x88,0x20,0x00,0x10,0xe6,0x1d,0x06,0x00,0x00,
+ 0x00,0x5a,0x50,0x64,0x55,0x64,0x2d,0x64,0x10,0x64,0x10,0x64,0x10,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x67,0x00,0x00,0x00,0x01,0x00,0x0c,0x00,0x13,
+ 0x00,0x09,0x00,0x06,0x00,0x67,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x65,0x26,0xba,0x1b,0x65,
+ 0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x84,0x25,0x27,0x1b,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x59,0x00,0x00,0x00,0xda,0x02,0x83,
+ 0x03,0x00,0x00,0x75,0x19,0x00,0x00,0x60,0x3d,0x00,0x00,0x00,0xaa,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x05,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x4e,0x00,0xa4,0x00,0x8d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x03,0x00,0x9d,0x00,0x6a,0x01,0x4b,
+ 0x04,0x01,0x00,0x57,0x01,0x28,0x00,0x01,0x00,0xd6,0xc9,0x33,0x01,0x00,0x00,0x00,
+ 0x00,0x46,0x41,0x46,0x41,0x28,0x00,0x66,0x01,0x32,0x00,0xad,0xff,0xda,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0x93,0x59,0x01,0x9c,0x04,0x32,0x00,0xad,0xff,0xda,0xff,0xa8,
+ 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0x59,0x01,0x14,0x00,0xc2,0xff,0xd7,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0x93,0x58,0x01,0x58,0x01,0xc2,0xff,0x00,0x00,0xec,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x58,0x01,0xd0,0xff,0xe3,0xff,0xf1,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x57,0x01,0xf7,0xff,0x03,0x00,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xe3,0x56,0x01,0x9c,0x04,0xf7,0xff,0x03,0x00,0xff,0xff,0xa8,
+ 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0xe8,0x03,0xf7,0xff,0x03,0x00,0xff,0xff,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x57,0x01,0xd4,0xff,0x10,0x00,0xf7,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x2c,0x00,0x14,0x00,0xfc,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe1,0xff,0x15,0x00,0x02,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd8,0xff,0xf0,0xff,0xf3,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x23,0x00,0x23,0x00,0x0e,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd2,0xff,0x1f,0x00,0x0c,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc5,0xff,0xd6,0xff,0xf4,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x25,0x00,0x1c,0x00,0x00,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x18,0x00,0xf5,0xff,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc2,0xff,0xe8,0xff,0x03,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0c,0x00,0x28,0x00,0xfe,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x03,0x00,0xe1,0xff,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf8,0xff,0xe9,0xff,0xf9,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd0,0xff,0x1d,0x00,0x05,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf6,0xff,0xe1,0xff,0xf8,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x1d,0x00,0xed,0xff,0xeb,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xde,0xff,0xf3,0xff,0x06,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0d,0x00,0x02,0x00,0xf0,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xfe,0xff,0xea,0xff,0x01,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe6,0xff,0xf8,0xff,0x04,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xfa,0xff,0xf2,0xff,0xf7,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x11,0x00,0x08,0x00,0x08,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xc2,0xff,0xeb,0xff,0x02,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x27,0x00,0x05,0x00,0x00,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x19,0x00,0x0c,0x00,0xfc,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd3,0xff,0xe9,0xff,0xfe,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x06,0x00,0x07,0x00,0xf2,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd5,0xff,0x1a,0x00,0x03,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x09,0x00,0x18,0x00,0x03,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xef,0xff,0x23,0x00,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x01,0x00,0xf7,0xff,0xf3,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0xaa,0x01,0x00,0x00,0xb8,0x00,0x05,0xd0,0x0a,
+ 0x00,0x01,0x00,0x00,0x00,0x60,0x07,0x00,0x04,0x70,0x08,0x40,0x05,0x18,0x00,0x01,
+ 0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xe5,0x00,0xa2,0x00,0x73,0x73,
+ 0x6f,0x69,0x73,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c,
+ 0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x30,0x20,0x32,0x73,0x73,
+ 0x6d,0x74,0x66,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x53,0x53,0x43,0x41,0x4c,
+ 0x20,0x50,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56,0x4d,0x30,0x30,0x33,
+ 0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0x4d,0x38,0x44,0x30,0x31,0x44,0x30,0x31,
+ 0x53,0x31,0x34,0x53,0x41,0x33,0x2f,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31,
+ 0x56,0x4d,0x30,0x30,0x33,0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0xff,0xdb,0x00,
+ 0x84,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x02,0x03,0x02,0x02,0x02,0x02,0x02,0x04,0x03,0x03,0x02,0x03,0x05,0x04,0x05,0x05,
+ 0x05,0x04,0x04,0x04,0x05,0x06,0x07,0x06,0x05,0x05,0x07,0x06,0x04,0x04,0x06,0x09,
+ 0x06,0x07,0x08,0x08,0x08,0x08,0x08,0x05,0x06,0x09,0x0a,0x09,0x08,0x0a,0x07,0x08,
+ 0x08,0x08,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x04,0x02,0x02,0x04,0x08,0x05,0x04,
+ 0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0xff,0xc0,0x00,0x11,0x08,0x0b,0xd0,0x0f,0xc0,0x03,0x01,0x22,0x00,
+ 0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,
+ 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,
+ 0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,
+ 0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,
+ 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,
+ 0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,
+ 0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,
+ 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,
+ 0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,
+ 0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,
+ 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,
+ 0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,
+ 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,
+ 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,
+ 0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,
+ 0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,
+ 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,
+ 0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,
+ 0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,
+ 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,
+ 0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,
+ 0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,
+ 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,
+ 0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,
+ 0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,
+ 0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xfe,0x15,0xec,0x27,0x9b,0x03,0x68,0x86,
+ 0x7b,0x88,0xd4,0xc8,0x79,0x3c,0xaf,0xa0,0xf5,0xa5,0xd4,0xee,0xa7,0x96,0x66,0x79,
+ 0x84,0x31,0x16,0x0a,0x56,0x35,0xe7,0x23,0x03,0x05,0x4f,0x73,0x4c,0x64,0x68,0x55,
+ 0xa4,0x8d,0x19,0xe4,0x60,0xc5,0x59,0x57,0xf7,0x80,0x0e,0xad,0x8f,0x4a,0xa5,0x78,
+ 0xd3,0xac,0x7e,0x73,0xfc,0xb7,0x48,0xd9,0xd9,0x13,0x75,0x4c,0x0e,0x40,0xec,0x6b,
+ 0x5a,0x56,0x8b,0x76,0xd8,0xa7,0xb6,0xe5,0x5b,0xcb,0x91,0x72,0x8b,0x10,0x49,0x9a,
+ 0xe2,0x32,0x59,0x97,0x1c,0x36,0x7a,0x67,0xdc,0x7f,0x5a,0xc6,0x69,0x84,0x51,0x29,
+ 0x96,0x24,0x17,0x2e,0x08,0x90,0x96,0xe8,0x33,0xd4,0x0f,0x6a,0x7d,0xdd,0xfb,0x99,
+ 0x66,0x91,0x96,0x74,0x47,0x60,0xe1,0x07,0xf0,0xf1,0xfe,0x26,0xb3,0x1f,0xf7,0xa5,
+ 0x5a,0x42,0x17,0x92,0xcc,0x1b,0xa6,0x08,0xcf,0x5a,0xd9,0x69,0xea,0x38,0xbe,0xdb,
+ 0x8b,0x31,0x4d,0xea,0xe2,0x32,0x8c,0x7e,0x63,0xf3,0x7b,0x53,0x99,0xd9,0xc2,0x48,
+ 0xb2,0x14,0xc8,0xc7,0xb1,0x3e,0x87,0xf5,0xa8,0xc7,0xef,0x44,0x86,0x42,0x25,0x7c,
+ 0x64,0x16,0x24,0x02,0x3d,0xa9,0xc1,0x62,0x88,0xb1,0x07,0xcc,0x21,0x70,0x14,0x8e,
+ 0x09,0xc7,0x5f,0xd6,0xb3,0xb5,0xda,0x46,0xb1,0x6e,0xde,0x45,0x9b,0x74,0x2d,0x29,
+ 0x8e,0x4d,0xe7,0x9c,0x20,0x03,0xe5,0x07,0xbf,0xcd,0x57,0x62,0xb8,0x8d,0x54,0x5a,
+ 0x95,0x77,0x53,0x21,0x90,0x10,0x00,0x39,0x1e,0xe7,0xa8,0xe0,0xd6,0x51,0x21,0xc3,
+ 0x29,0x2a,0x50,0x90,0x48,0x50,0x7b,0x0e,0xbe,0xd5,0x0a,0xca,0x70,0x14,0x64,0xe4,
+ 0x6d,0x04,0x73,0xf4,0xa6,0xe7,0x74,0x6a,0xa5,0x65,0x66,0x69,0xb6,0xa5,0x2b,0x26,
+ 0xf5,0x48,0xe0,0x07,0xe5,0x11,0x8f,0x98,0x15,0x07,0xee,0xf3,0xda,0xb3,0x6e,0x6e,
+ 0x24,0xb8,0x9c,0xca,0xe4,0x8c,0x03,0x81,0x8e,0xf4,0xc1,0xf7,0x31,0x8c,0x91,0x91,
+ 0x80,0x69,0xa4,0x8d,0xa3,0xe7,0x79,0x30,0x70,0x73,0xc6,0x6b,0x36,0xee,0x65,0x29,
+ 0x5d,0x0e,0x21,0x4e,0xc5,0x00,0xbb,0x91,0x92,0x48,0xc6,0x29,0x1b,0x18,0xdc,0x0f,
+ 0x07,0x92,0xa4,0xd3,0xbe,0xeb,0x85,0x0a,0x4e,0x46,0x5c,0x16,0xe0,0xd3,0x24,0x3b,
+ 0x8e,0x55,0x36,0x8e,0x80,0x9e,0x70,0x3d,0x2a,0x6e,0xaf,0x70,0x77,0xb6,0xa3,0xfe,
+ 0x53,0x86,0xd8,0x23,0x5c,0xe5,0x80,0x27,0xe5,0xc7,0xf8,0xd3,0x3e,0x67,0xc0,0xcf,
+ 0x3d,0x17,0x8e,0xb4,0xe5,0xf2,0xc3,0xfd,0xe2,0x40,0x18,0xe4,0x75,0xa6,0xee,0x57,
+ 0x2a,0x4e,0xd5,0xc9,0xc6,0x73,0xd2,0x9a,0xf2,0x13,0xdb,0x50,0x07,0x24,0x00,0x01,
+ 0x5f,0xe2,0xcf,0x7f,0x6a,0x92,0x45,0x28,0xa8,0x81,0x48,0x56,0xf9,0x81,0x6e,0xf8,
+ 0xeb,0x4c,0x2c,0x79,0x51,0xb1,0x80,0x38,0x0d,0x8c,0x64,0x53,0xb7,0xf9,0x8c,0xa6,
+ 0x4c,0xb9,0x55,0xc2,0xfb,0x7e,0x14,0xac,0x17,0x5b,0x75,0x00,0x33,0xe5,0x39,0x01,
+ 0x01,0x38,0xce,0x38,0x1f,0x5f,0xca,0x85,0x8c,0xb9,0xf2,0xf2,0x23,0xc8,0xc3,0x36,
+ 0x3a,0x73,0xff,0x00,0xea,0xa9,0x0e,0x76,0xaa,0xb1,0xf3,0x3e,0x52,0x00,0x66,0xfb,
+ 0xbf,0x41,0x50,0xee,0x0d,0xb4,0xc8,0xbb,0xbd,0xb3,0xd7,0x9e,0xd4,0xed,0xd1,0x15,
+ 0x64,0x9e,0xa4,0x8d,0x9c,0xe0,0x47,0xc2,0xae,0xc3,0x93,0xd7,0xde,0x83,0xe5,0x85,
+ 0xe3,0x73,0xa9,0x20,0xe0,0xf1,0xcd,0x26,0x64,0xd9,0x86,0xc6,0x47,0x20,0xe7,0xef,
+ 0x0f,0x42,0x29,0x8c,0x40,0x6c,0x01,0x9c,0x9c,0x92,0x3b,0x52,0xb8,0x9b,0xb2,0xbb,
+ 0x1c,0x0b,0x49,0x8d,0xc4,0x28,0x04,0xf2,0x4f,0x27,0xd8,0x52,0x86,0x5d,0xa8,0x54,
+ 0x67,0xae,0x09,0x1d,0x29,0x8a,0x03,0x07,0xcb,0x28,0x5e,0xa4,0x9e,0xd4,0xae,0xe5,
+ 0xd0,0x0c,0x15,0x8d,0x4e,0x40,0x03,0xa5,0x17,0xbe,0xe1,0x7d,0x2e,0x3f,0xe6,0x90,
+ 0x9c,0x97,0xda,0x48,0xdc,0x47,0x6f,0x4a,0x8b,0xa9,0xce,0xdd,0xa0,0x73,0xc9,0x3f,
+ 0x35,0x48,0xac,0x8d,0xbf,0x71,0x65,0x24,0x64,0x11,0xd6,0x9b,0x82,0xc0,0x05,0x0c,
+ 0x79,0xce,0x0f,0x6f,0x6a,0x1e,0x81,0x7d,0x04,0xf9,0x9c,0xaf,0x4c,0x93,0xc0,0x14,
+ 0xec,0xb4,0x85,0x54,0x16,0x2d,0x93,0x80,0x47,0x5a,0x06,0x41,0x2e,0xa4,0x8c,0x8c,
+ 0xe4,0x0e,0x83,0xd0,0xd1,0x9d,0xe0,0xc8,0xcc,0x01,0x3d,0x40,0xa5,0xd7,0x52,0x55,
+ 0xed,0xa8,0xbf,0xbc,0x8c,0xe6,0x37,0x2a,0x40,0xc1,0x1d,0x87,0x14,0xd4,0x0a,0x10,
+ 0xe5,0x72,0xac,0x38,0x70,0x3a,0x73,0x4f,0x45,0x52,0x15,0xc6,0x36,0x9e,0xcc,0x79,
+ 0xe2,0x98,0x5d,0xc0,0x2e,0x1f,0x60,0x03,0x21,0x40,0xe8,0x3d,0x05,0x3e,0x81,0xe6,
+ 0xc7,0xb2,0x92,0x54,0x1d,0xa3,0xe5,0xe4,0x7a,0x8f,0x7f,0xd2,0x90,0x30,0x63,0x1a,
+ 0x94,0x43,0x8e,0x4e,0x49,0xf9,0xbe,0xb4,0x63,0x77,0xcc,0x18,0x73,0xc6,0x09,0xf9,
+ 0x89,0xfa,0x53,0x57,0x69,0x47,0x3c,0x96,0x18,0x03,0x1e,0x94,0x5f,0xb0,0xef,0xad,
+ 0xd1,0x20,0xdb,0x87,0x00,0x17,0x19,0x00,0x00,0x39,0xfc,0x0d,0x1b,0x54,0x71,0x11,
+ 0x63,0xb5,0xb9,0x0d,0xc1,0x14,0xd5,0x3c,0xe7,0x83,0x96,0xe7,0xb6,0x29,0x15,0x24,
+ 0x32,0x32,0xae,0x43,0xfd,0xe5,0xc9,0x03,0x23,0x3e,0xb4,0x3d,0x5d,0xc2,0xfb,0x0e,
+ 0x72,0x09,0x03,0x2c,0xbb,0x41,0x1c,0xf6,0xa5,0x68,0x1f,0xe4,0x72,0x8b,0x86,0x19,
+ 0x52,0x0f,0xde,0xa5,0x62,0xa1,0xbf,0x78,0xae,0x24,0x27,0x70,0x6c,0xf2,0x0f,0xb8,
+ 0xee,0x2a,0x47,0x92,0x69,0x7c,0xb5,0x57,0x2a,0x8a,0x70,0xa8,0xa3,0xee,0xd3,0x69,
+ 0x12,0xd5,0xc7,0x47,0x85,0x0f,0x1c,0xc9,0xfb,0x89,0x14,0x3a,0xae,0x30,0x48,0xcf,
+ 0x7e,0xf5,0x66,0x0b,0xd9,0xa3,0x9a,0xdb,0x71,0x59,0x46,0x4a,0xa6,0x1b,0x1b,0x47,
+ 0x40,0x6a,0xa9,0x2c,0x42,0xac,0xef,0xe6,0x72,0x63,0x50,0xc7,0x86,0x1e,0xa4,0xf6,
+ 0xa8,0xa4,0xc1,0x90,0x00,0xaa,0x13,0x1b,0x71,0x8e,0xc0,0x74,0x5f,0x7a,0x4a,0xef,
+ 0x51,0xe8,0x8e,0xdc,0xbc,0x33,0xda,0xc8,0xca,0xb1,0x73,0x21,0x80,0xc4,0xf9,0xc0,
+ 0x39,0xce,0x57,0xf5,0xe9,0x5c,0xc4,0x8d,0x0c,0x72,0x3b,0xc5,0x2a,0xa4,0xc9,0x23,
+ 0x2b,0x46,0xe7,0xef,0x9f,0x51,0xec,0x79,0xc5,0x6e,0xd9,0x18,0xf1,0xb3,0xfd,0x25,
+ 0xa6,0x03,0x2b,0x95,0xce,0xd1,0x8f,0xbc,0x7d,0x3f,0xfa,0xf5,0x8f,0x7c,0xb6,0xd0,
+ 0x48,0xcc,0xd6,0xed,0x35,0xe0,0x38,0x62,0x41,0x0a,0x33,0xdf,0xeb,0xc8,0xa7,0x77,
+ 0xaa,0x7b,0x99,0xa7,0x77,0x66,0x55,0x77,0x61,0x12,0x4a,0x98,0x18,0x93,0x25,0x07,
+ 0x04,0x0f,0x6a,0x0a,0x87,0x4c,0x83,0x20,0x85,0x8e,0x1d,0x40,0xe4,0x73,0x50,0x2c,
+ 0x4f,0x2c,0x71,0xc2,0x5d,0x41,0x27,0xe6,0x52,0x4e,0x57,0x9e,0xa0,0x7a,0x55,0x9b,
+ 0x86,0x8d,0xa4,0x8d,0x62,0x66,0x8a,0x75,0x52,0x03,0x38,0xe0,0x8f,0x4f,0xf3,0xeb,
+ 0x49,0xf9,0x6e,0x17,0x4f,0x61,0x53,0x74,0x67,0x0e,0x9f,0x28,0x3f,0x2a,0xae,0x32,
+ 0x3e,0xa6,0x9a,0xd7,0x06,0x59,0x63,0x0d,0x18,0x87,0xf8,0x94,0xe7,0x9c,0xe7,0xbf,
+ 0xa5,0x31,0x58,0x3b,0x85,0x74,0x29,0x91,0x87,0x20,0x7d,0xdf,0x43,0xc7,0x5e,0x94,
+ 0x2b,0xec,0xdc,0xe8,0xa6,0x50,0xc7,0x00,0xb7,0x7f,0x72,0x2a,0x5e,0xe1,0xab,0x5a,
+ 0x16,0x04,0x4a,0x65,0x70,0xc2,0x4c,0x96,0x24,0x9e,0xb9,0xf7,0x22,0x88,0xb7,0xda,
+ 0xaa,0x38,0x71,0x1e,0x09,0x0a,0xc7,0xa9,0x51,0xc9,0x1e,0xd4,0x92,0x43,0x24,0x0d,
+ 0x14,0x8c,0xa2,0x30,0x64,0x05,0xd4,0x3e,0x30,0x31,0xc7,0xf9,0x35,0x34,0x33,0x99,
+ 0xa7,0xf2,0xfc,0xd6,0x9e,0x4d,0xc2,0x4d,0xa4,0x0e,0x83,0xb5,0x2f,0x24,0x2b,0xb7,
+ 0xb0,0xcf,0x2a,0xdc,0xf9,0x53,0x30,0x95,0x56,0x40,0xc4,0x44,0x8d,0x92,0xa3,0xd4,
+ 0x8a,0x96,0x39,0x7c,0xdb,0x99,0x23,0x01,0xfe,0x45,0x2e,0x18,0x0f,0x6a,0x58,0xde,
+ 0x39,0x66,0x5b,0x7b,0x68,0x9c,0xdc,0x33,0xf9,0x8c,0xc4,0x60,0xa7,0xb7,0x34,0x93,
+ 0x5b,0x5f,0x2a,0x32,0x49,0xba,0xd5,0x43,0x15,0xda,0xbf,0x79,0x81,0x39,0x04,0x0e,
+ 0xd4,0xf4,0xb8,0xf4,0xd9,0x16,0xa0,0x92,0xdc,0x84,0xcc,0x52,0xcb,0x74,0xc3,0x00,
+ 0x6d,0x23,0x8f,0x6f,0xa5,0x0b,0x05,0xcc,0xb7,0x50,0x42,0x92,0xe5,0x5f,0x0a,0xcc,
+ 0xe7,0x86,0x6f,0xad,0x58,0xb5,0xd3,0x75,0x2d,0x46,0xee,0x0d,0xb1,0x38,0x8c,0xa9,
+ 0x53,0x29,0x60,0x0a,0x26,0x3d,0x7b,0x9e,0x7a,0x57,0x57,0x6f,0x65,0x67,0xa5,0x5a,
+ 0x40,0xb2,0x34,0xb7,0xae,0xe5,0xe4,0x50,0xc7,0x04,0x10,0x78,0x19,0xef,0x9f,0x4e,
+ 0xd4,0x45,0x5d,0xe8,0x24,0xef,0xa2,0x30,0xf4,0x9f,0x0f,0xea,0x17,0x3a,0x88,0x16,
+ 0xf1,0xaa,0x07,0x61,0xe6,0xb4,0xad,0xb7,0x68,0xe8,0x70,0x07,0x7e,0x6b,0xa4,0xd3,
+ 0xfc,0x31,0x6f,0x61,0x24,0xf6,0x77,0xb1,0xc7,0x75,0x2c,0x92,0x09,0x0b,0x4a,0xc5,
+ 0x55,0x54,0x02,0x57,0x68,0xef,0xdb,0x35,0x1b,0x6a,0xb6,0xdb,0xae,0x3e,0xcf,0x23,
+ 0xad,0xe0,0x8c,0x31,0x07,0x80,0xdc,0xf7,0xf7,0xeb,0x58,0x57,0x9a,0xd5,0xcd,0xcc,
+ 0x83,0xed,0x2a,0xeb,0x1b,0xa1,0x50,0xc5,0xf8,0x04,0x63,0xe6,0x1e,0x86,0xa2,0x2d,
+ 0xbd,0xc7,0x66,0xec,0x96,0xe7,0x5c,0x35,0x6b,0x6f,0xb4,0xfd,0xa5,0xd1,0xe3,0x98,
+ 0x2e,0x52,0x40,0xa7,0x8c,0x00,0x36,0xe4,0xf5,0x1f,0xca,0xb9,0x0d,0x43,0x5e,0x9a,
+ 0x70,0xb6,0xd6,0x10,0x18,0xe2,0x70,0xcc,0x54,0x00,0x4a,0x8c,0xfa,0xf7,0xe7,0xf9,
+ 0xd6,0x50,0x13,0x39,0x91,0x56,0x58,0xa5,0xf2,0xd0,0xb0,0x77,0x3c,0x36,0x7f,0xaf,
+ 0x4a,0xd1,0x86,0x35,0xcd,0xbb,0x3c,0x66,0xdd,0x59,0x48,0x56,0x88,0xe3,0x67,0xf8,
+ 0x0e,0x2a,0xb6,0xb1,0x32,0x76,0x10,0x79,0x79,0xb7,0x22,0x22,0xa3,0x76,0x19,0xc7,
+ 0x6e,0x32,0x78,0xad,0x9d,0x36,0xd9,0xe7,0x0d,0xe7,0xcd,0x30,0x00,0x92,0x11,0x9c,
+ 0x8d,0xab,0xd0,0x7f,0x3e,0x95,0x4e,0x29,0xa0,0x82,0x48,0xe4,0x4f,0xde,0xc6,0x8d,
+ 0xb3,0x32,0x0e,0x65,0x38,0xe7,0x1e,0xd5,0x5e,0x4b,0x99,0x2f,0x6e,0x26,0xde,0x8f,
+ 0x1c,0x6c,0xc0,0xb9,0x88,0x10,0xff,0x00,0x40,0x3f,0xcf,0x41,0x54,0xda,0x4a,0xec,
+ 0x97,0x25,0x77,0x62,0xed,0xcd,0xec,0x5a,0x6b,0xcf,0x6b,0x68,0x3c,0xe4,0x99,0xc2,
+ 0xbc,0x6b,0x1e,0xed,0xa3,0x8c,0x12,0x3b,0x1a,0x8e,0x4d,0x46,0x4b,0x7b,0x88,0x61,
+ 0x9a,0x39,0xa6,0x8c,0x21,0x76,0x8c,0x9d,0x9b,0xc1,0x1e,0xbe,0x94,0xfd,0x3e,0xc2,
+ 0x69,0xad,0x1e,0xee,0x14,0xbc,0x59,0x4b,0x31,0x40,0xb1,0x90,0xcd,0x83,0x8c,0x32,
+ 0xd7,0xa8,0x78,0x27,0xe1,0x86,0xa3,0xae,0xde,0x5b,0xdd,0xcb,0x71,0x3c,0xd1,0xaa,
+ 0xed,0x05,0xa3,0x18,0x0b,0xdb,0x23,0xd7,0xde,0x93,0x9c,0x52,0xe6,0x93,0x45,0xc6,
+ 0x17,0x69,0x27,0xad,0xcf,0x1e,0xb7,0x5d,0x42,0xe9,0x64,0xfb,0x3d,0x92,0x4b,0xb8,
+ 0x8c,0xa8,0x3c,0xc4,0x01,0xfe,0x13,0xf4,0xeb,0x5e,0xa1,0xe0,0xbf,0x00,0x6a,0x1a,
+ 0xc4,0x52,0x35,0xee,0x85,0x85,0x59,0x03,0x19,0x6e,0x98,0xa6,0xf5,0x23,0x82,0x07,
+ 0x7e,0xb5,0xf4,0x3f,0x86,0x3e,0x12,0x68,0x9a,0x2c,0xcb,0xaa,0x5f,0x5a,0x23,0xea,
+ 0x88,0x58,0xb3,0xa8,0xdc,0xb8,0x07,0x90,0x46,0x70,0x7b,0x76,0xaf,0x58,0x58,0x61,
+ 0x78,0x9a,0x31,0x68,0x2c,0xec,0x43,0x2b,0x18,0xd8,0x1c,0x13,0xd4,0x00,0x3a,0x81,
+ 0xde,0xb8,0x6a,0xd4,0xbb,0xb4,0x7a,0x19,0xce,0x0d,0x2b,0x23,0xcd,0xbc,0x31,0xf0,
+ 0x8b,0x45,0xb3,0x4b,0xc9,0xf5,0x2d,0x3a,0x3b,0xbb,0x56,0x11,0xb4,0x05,0x80,0x5f,
+ 0xb2,0xb8,0xeb,0x8c,0x1f,0xbb,0xef,0xeb,0x5e,0xb9,0x67,0x63,0x00,0x48,0x12,0x11,
+ 0xb6,0x55,0x24,0x29,0x74,0x03,0x6f,0x61,0x83,0xe9,0xc5,0x5c,0xb3,0x37,0xa8,0xb3,
+ 0xc3,0x1c,0xa4,0x70,0x1b,0x3e,0x83,0x3d,0x3d,0xc5,0x5e,0x88,0x91,0x28,0x2d,0x1a,
+ 0xed,0x03,0xc9,0xda,0x46,0x33,0xee,0x00,0xe9,0x59,0x36,0xde,0xa9,0xff,0x00,0x5e,
+ 0x85,0xc6,0xc9,0xde,0x3f,0xd7,0xa0,0xb8,0x97,0xce,0x26,0xe0,0xa4,0x51,0x48,0xc1,
+ 0x09,0xc6,0x76,0x01,0xe9,0x8a,0x59,0x50,0xf9,0xe9,0xfb,0xa6,0x8e,0x35,0x1b,0x43,
+ 0x81,0x96,0x38,0xf7,0xa8,0x56,0x40,0xd0,0x47,0x0a,0x2c,0x92,0x66,0x4c,0xb3,0x10,
+ 0x46,0xd1,0x9e,0xc4,0xfd,0x0d,0x5e,0x51,0xe5,0xaf,0xdb,0x18,0x42,0x57,0x19,0x0a,
+ 0x09,0xc8,0x1f,0x4e,0xf4,0x6a,0x95,0xec,0x16,0xd6,0xef,0x64,0x32,0x19,0x87,0x98,
+ 0xf3,0x2b,0x8d,0xca,0xa1,0x76,0x3c,0x78,0x52,0x47,0x62,0x7f,0xad,0x6a,0x71,0x38,
+ 0x12,0x05,0x03,0xcc,0x00,0x30,0x00,0x9d,0xbe,0xa7,0x27,0xd3,0x34,0xb6,0x76,0x71,
+ 0x4b,0x03,0x79,0xd2,0xee,0x04,0x16,0x25,0x81,0x24,0x7b,0x81,0xd4,0xd3,0xe6,0x8a,
+ 0x3b,0x93,0x6e,0x6d,0x75,0x03,0x02,0xa1,0x2c,0xea,0x23,0x38,0x6c,0x7a,0x7d,0x78,
+ 0xa4,0xfb,0xbd,0xc3,0x56,0x90,0xfb,0x78,0xc8,0xf3,0x65,0x69,0xee,0x65,0x70,0x32,
+ 0x08,0x40,0xd8,0x03,0xbf,0xd3,0x8a,0xb2,0x18,0xc8,0x8a,0x77,0x95,0x66,0x19,0x06,
+ 0x38,0xf0,0x7e,0xa0,0x0e,0x29,0x63,0x89,0x23,0x64,0x6b,0x42,0xe9,0x70,0xc3,0xac,
+ 0x83,0x3b,0x7d,0x82,0xfa,0x53,0xfc,0xc9,0x62,0x46,0x04,0xa1,0x81,0x50,0x33,0x61,
+ 0x7e,0x60,0xb9,0xea,0xa3,0xf5,0xac,0x6c,0xad,0x6d,0x02,0x4e,0xda,0xbd,0x8d,0x4b,
+ 0x74,0x72,0xdf,0xba,0x26,0x49,0x62,0x19,0x0f,0x9c,0x97,0xe0,0x75,0x23,0xf9,0x54,
+ 0xe9,0x3f,0x96,0x24,0x68,0xf7,0xa4,0x6e,0x30,0xa7,0x1c,0x1f,0x50,0x4d,0x67,0xaa,
+ 0x83,0x19,0x9a,0x09,0xe4,0x5d,0x8d,0x84,0x84,0x28,0x05,0x81,0xee,0x7e,0xb5,0x6d,
+ 0x70,0x89,0x0c,0xf7,0x4e,0xbe,0x56,0xe0,0xcf,0x18,0x1c,0x37,0xf8,0x74,0xeb,0x54,
+ 0xae,0xde,0xf7,0x1b,0xd1,0xb4,0xd7,0xcc,0x58,0xee,0x66,0x95,0xfc,0x87,0x7c,0x32,
+ 0x28,0x0c,0xe4,0x7d,0xff,0x00,0x6c,0x7e,0x55,0x65,0x0a,0xf9,0x8e,0x1d,0xbe,0xd8,
+ 0x80,0x6d,0x46,0xc6,0x4a,0xf1,0xc8,0xf6,0x1c,0xd5,0x29,0x0c,0x32,0xcb,0xbe,0x68,
+ 0xbc,0x98,0x54,0x92,0xdb,0x57,0x27,0x9e,0x80,0x55,0xad,0x90,0xee,0x40,0xff,0x00,
+ 0x69,0x40,0x06,0xd0,0x43,0x61,0x4f,0xd5,0x47,0xf8,0xd4,0xe8,0xd6,0xaf,0xfe,0x09,
+ 0x31,0x7a,0x3b,0x34,0xd1,0x20,0x8d,0xbe,0xca,0x18,0x34,0xd1,0x5d,0x96,0x3b,0x42,
+ 0x63,0x2e,0x07,0xad,0x53,0x69,0xac,0x45,0xd1,0x8a,0xe6,0x63,0x3c,0xee,0xdb,0x52,
+ 0x43,0x90,0x48,0x03,0x38,0x23,0xb6,0x29,0xaa,0x91,0x34,0xf1,0xc9,0x09,0xbc,0x68,
+ 0xa2,0x20,0x2e,0xe4,0x2a,0x54,0x93,0xce,0x3d,0x47,0x5a,0xb4,0xc9,0x15,0xcb,0x19,
+ 0x77,0x5b,0x24,0x6e,0xce,0x50,0x0f,0xbc,0x47,0xb8,0xed,0xd3,0x8c,0xd3,0xbb,0x7b,
+ 0x83,0xb3,0x56,0x44,0xfb,0xdf,0x1b,0xcb,0x90,0x48,0x0b,0x19,0x07,0xe6,0x20,0xf1,
+ 0x82,0x07,0xe3,0x53,0x44,0x2d,0xe2,0x97,0x6b,0x96,0x98,0x9e,0x58,0x4a,0x84,0x80,
+ 0x71,0xd8,0xfe,0x55,0x25,0x9b,0x18,0x49,0x40,0xca,0x51,0x41,0x20,0x30,0x3f,0x37,
+ 0xf8,0xd3,0xd5,0x58,0x98,0x21,0x32,0xfe,0xf5,0xb2,0x57,0x2a,0x46,0xe2,0x79,0xe4,
+ 0xd6,0x5a,0xad,0xcd,0x6d,0xd5,0x12,0x45,0x05,0xc2,0x4a,0x9e,0x7b,0xca,0x24,0xc8,
+ 0x90,0x01,0xce,0xe5,0xf7,0xfd,0x2a,0x47,0xb6,0x92,0x69,0x59,0x2c,0xed,0xf1,0x8e,
+ 0x46,0x0e,0x00,0xf7,0x19,0xef,0xd6,0x9e,0x66,0x85,0xd2,0x4b,0x9b,0x97,0x73,0x6d,
+ 0x1a,0x9d,0x9b,0x46,0x19,0x8f,0xf5,0xad,0x08,0x6c,0xcd,0xc2,0x45,0x24,0xcd,0x21,
+ 0x02,0x30,0xf9,0x56,0x2a,0x5c,0x9f,0x51,0xed,0xcd,0x3b,0x59,0xdc,0x69,0xdd,0xe9,
+ 0xa9,0x96,0xe1,0x43,0x4f,0x0c,0x52,0x38,0x90,0x20,0x70,0xc1,0x0a,0x8e,0x9d,0x30,
+ 0x6a,0x58,0x04,0x4c,0xb1,0xf9,0x13,0x94,0x62,0xe1,0xca,0x67,0x24,0x9f,0x5c,0x1e,
+ 0xf5,0xb0,0xd1,0xac,0x0f,0x1c,0x2c,0xad,0x32,0x95,0xdd,0xb1,0x81,0xe3,0xd4,0x66,
+ 0xaa,0xc3,0x11,0x9a,0xec,0x4a,0x55,0x8c,0x4a,0x33,0x93,0xf2,0xed,0xe3,0xa6,0x3b,
+ 0xd0,0xae,0xb7,0x12,0x77,0x76,0x4f,0x52,0xd9,0x64,0x9c,0xdc,0xdc,0x46,0x85,0x7e,
+ 0x65,0x2d,0x1b,0xf5,0x93,0xdf,0x1e,0xb5,0x35,0xb4,0x8f,0xb6,0x56,0x04,0xc7,0xe6,
+ 0x86,0x50,0x1c,0x10,0x10,0x67,0xa7,0xd6,0xa0,0x33,0xc9,0x20,0x32,0x46,0x6e,0x1d,
+ 0x90,0x9c,0xb0,0x4c,0x02,0x3a,0x62,0xa2,0x86,0x49,0x64,0x64,0x96,0x26,0x26,0x31,
+ 0xc2,0xaa,0x0c,0x14,0x3e,0xa4,0x1e,0xf5,0x3d,0x3b,0x06,0xb7,0xba,0xd4,0x0a,0xcc,
+ 0xb1,0x3b,0xbc,0x52,0xb9,0x51,0xb5,0x19,0x46,0x77,0x73,0xd0,0x9f,0x4e,0x2b,0x5a,
+ 0xda,0xdb,0xcd,0x02,0x43,0x19,0x2a,0xa7,0x20,0x16,0xc6,0x78,0xe8,0x05,0x40,0x91,
+ 0x32,0xc7,0x11,0x57,0x31,0x6d,0x62,0xc5,0xbc,0xdc,0x93,0x9f,0x5f,0xd6,0xb6,0x7c,
+ 0xa0,0x86,0x38,0x87,0xde,0x03,0x71,0x75,0x5e,0x06,0x7a,0x80,0x6a,0x1b,0x57,0xb2,
+ 0x60,0xf4,0x6f,0xb6,0x83,0x1d,0x84,0x65,0x43,0xc8,0x0a,0xa9,0xf9,0x16,0x43,0x92,
+ 0x3d,0x87,0xa5,0x49,0x13,0x12,0x03,0xc3,0x1c,0x6b,0x1b,0x95,0xc1,0x27,0x1c,0x63,
+ 0x9c,0x8f,0xce,0xa7,0x68,0x8c,0x71,0x34,0x4a,0x16,0x42,0x41,0x21,0x08,0xf9,0x9f,
+ 0x8e,0xb9,0xf6,0xa6,0x44,0xa6,0xdc,0xc6,0xaf,0xe6,0x3c,0xb8,0x20,0x06,0x00,0x67,
+ 0xdc,0xd4,0xad,0x37,0x1a,0xbd,0xda,0x5b,0x0e,0x40,0x51,0x23,0x58,0x83,0x95,0x2e,
+ 0x59,0x25,0xd9,0xc0,0x18,0xe4,0x1a,0x6a,0x5a,0x5b,0xee,0x73,0x25,0xcb,0x21,0x07,
+ 0x7a,0xa4,0x40,0x8f,0x34,0xe7,0xa1,0x3e,0xde,0xd4,0xbe,0x60,0x62,0x12,0x5d,0xe6,
+ 0x47,0x24,0x04,0x50,0x76,0xa8,0x15,0x64,0x24,0x4c,0xd1,0x31,0xdf,0x34,0xaa,0x0b,
+ 0x21,0x04,0x8c,0x7d,0x07,0xa7,0x34,0xaf,0x6d,0xc4,0x9a,0x76,0x4b,0x61,0x66,0xb7,
+ 0x61,0x27,0xda,0x21,0x51,0x24,0x2c,0x32,0x11,0x46,0x08,0x6f,0x7f,0x7a,0x8e,0x18,
+ 0xaf,0x1d,0xe2,0x87,0x6a,0x99,0x08,0x3b,0x41,0xc6,0x19,0x7d,0x2b,0x46,0xdd,0x7e,
+ 0x6f,0x24,0xc8,0x50,0x48,0x01,0x5c,0x1e,0x5b,0xfd,0x9c,0x76,0xab,0xcf,0x04,0x8f,
+ 0x19,0x8f,0x6c,0xa2,0x3d,0xc4,0xb0,0x55,0xc0,0x03,0xbf,0x34,0xd7,0x92,0x06,0xf4,
+ 0xb5,0x8c,0x3b,0x98,0x5f,0xc9,0x05,0x98,0x46,0x77,0x63,0x69,0x41,0xf2,0xf1,0xd8,
+ 0xfa,0x55,0x24,0xb0,0x9a,0xe7,0xcb,0xc4,0xad,0x96,0x62,0x08,0x20,0x2b,0x37,0xb8,
+ 0x3d,0xeb,0xa9,0x96,0x03,0xe4,0x34,0x6f,0x14,0x6b,0x1b,0x2e,0xd8,0xcb,0x92,0x0f,
+ 0x5e,0x32,0x69,0x2d,0xed,0x84,0x09,0x9d,0xd2,0x48,0xe5,0x71,0x2b,0x81,0xfe,0xa9,
+ 0xc7,0x65,0xf6,0xe9,0x43,0xbb,0x57,0x46,0x4e,0xc9,0x9c,0xab,0xe9,0x91,0xa5,0xc8,
+ 0x99,0xa0,0x95,0x95,0x57,0x12,0x12,0x39,0x71,0xed,0xed,0x55,0xe7,0xb1,0x49,0x6d,
+ 0xef,0x3c,0x88,0xfc,0xc6,0xf9,0x70,0xa1,0x70,0x47,0xbe,0x3b,0x62,0xbb,0x06,0x80,
+ 0x4c,0xa1,0x56,0x59,0x95,0x88,0x3b,0x5c,0x2e,0x48,0x3e,0xf4,0xe1,0x6f,0x1c,0x4e,
+ 0xad,0x34,0xd2,0xc0,0xcc,0xbc,0xca,0x0f,0x41,0xec,0x3d,0xea,0xe3,0x7b,0x5d,0x82,
+ 0x4d,0x6a,0x70,0x56,0x3a,0x0c,0xc7,0xed,0x6c,0xd1,0xcb,0x3e,0x79,0x8d,0x33,0xd7,
+ 0xb6,0x0f,0xa7,0x4a,0xe4,0x75,0xbd,0x13,0x4f,0xb5,0x84,0x5c,0xbb,0xb3,0xba,0x80,
+ 0xa2,0x24,0x5f,0xbc,0x7b,0x86,0x35,0xed,0xf1,0x89,0x04,0x2b,0x6d,0xe4,0xc8,0x1a,
+ 0x42,0x50,0x3c,0x68,0x77,0x20,0xec,0x4f,0xe7,0x5e,0x63,0xe3,0x0b,0x35,0xb7,0xd3,
+ 0x2f,0xd9,0x10,0x5b,0xf9,0x2b,0xb8,0x31,0x7c,0xb3,0x1c,0xf7,0x1e,0xf9,0xaf,0xb6,
+ 0xe1,0x28,0x73,0xe2,0xa1,0x1b,0xea,0xdd,0x8f,0x9a,0xe2,0x1a,0xce,0x96,0x1a,0x53,
+ 0x4b,0x64,0xd9,0xf2,0xaf,0x89,0x2e,0x61,0xb9,0x9a,0x25,0x8a,0x05,0x81,0x2d,0xe4,
+ 0x25,0x63,0x50,0x06,0x38,0xe7,0x35,0xcc,0xb2,0x31,0x55,0xb9,0x1e,0x60,0x57,0x25,
+ 0x55,0x00,0xe0,0x0f,0x5c,0x56,0x97,0xdb,0x56,0x27,0x95,0xaf,0x1e,0x21,0x79,0x2b,
+ 0xef,0x78,0x99,0x0f,0xee,0xfd,0x85,0x56,0xb6,0xd8,0x43,0x34,0x2d,0x22,0x96,0xea,
+ 0x4b,0x67,0x3e,0xc3,0xd0,0x73,0x5f,0xdc,0xd9,0x75,0x38,0xd3,0xa3,0x1a,0x71,0x7a,
+ 0x24,0x7f,0x20,0xe3,0xaa,0xca,0x75,0x5d,0x49,0xbd,0x58,0xb1,0x46,0x52,0x16,0x95,
+ 0x0c,0x41,0xcf,0x47,0x55,0xc6,0x0f,0x61,0x9a,0x8f,0xfd,0x60,0x39,0x8f,0x0e,0x83,
+ 0x00,0xb3,0x60,0x63,0xb9,0x35,0x79,0x23,0x90,0x85,0x8c,0x2c,0x6a,0xca,0x4b,0xa9,
+ 0x23,0x21,0xbd,0x8d,0x56,0xc4,0x85,0x55,0xa6,0x89,0x1c,0x4c,0x19,0x98,0x29,0xca,
+ 0x81,0xe9,0x5e,0x82,0xd3,0x46,0x79,0xb7,0xd6,0xec,0xad,0x2c,0x71,0x43,0xb9,0x6e,
+ 0x5b,0xef,0x36,0xe2,0x4a,0xe7,0x77,0xbe,0x7d,0x29,0xb1,0xbf,0x97,0x2c,0xd1,0x42,
+ 0x60,0x94,0x0c,0x15,0xc8,0xe4,0x91,0xd8,0x03,0xf8,0x54,0xf2,0xc4,0xd2,0xed,0x46,
+ 0x78,0xd0,0x07,0x00,0x10,0x00,0x03,0x9e,0xf5,0x4a,0x79,0x5a,0x07,0xfb,0x43,0xca,
+ 0x7c,0xdd,0xc5,0x87,0x00,0xf7,0xe8,0x2a,0x2a,0xcd,0x25,0xa9,0xb5,0x3b,0xc9,0xd8,
+ 0xa9,0x73,0x71,0xb0,0xba,0xc7,0x19,0xf2,0xc2,0x92,0xe4,0x8e,0x5b,0x3d,0x4e,0x3b,
+ 0x0a,0xe4,0x6e,0x89,0x80,0x30,0x81,0xcc,0xae,0x18,0x2a,0xbc,0x87,0x84,0x5c,0xf2,
+ 0x6b,0x6e,0xfe,0x48,0xcc,0xb7,0x0b,0x14,0xc6,0x62,0xca,0x37,0x6e,0xc8,0x31,0x82,
+ 0x7d,0x3d,0x6b,0x9e,0x9c,0xc6,0x8c,0xd0,0x22,0xc9,0x33,0x91,0x9f,0x90,0xf2,0x4e,
+ 0x3b,0x9a,0xf2,0xab,0xe2,0x22,0xde,0x87,0xbf,0x81,0xa3,0x6e,0x86,0x14,0x92,0x49,
+ 0x34,0xf2,0x62,0xe1,0x99,0x09,0x2c,0x02,0x81,0x83,0xcf,0x51,0x51,0x35,0xd4,0x50,
+ 0xc4,0x89,0x71,0x26,0xc8,0x99,0x4b,0x02,0x14,0x6d,0x53,0xfd,0xd3,0xdf,0x9a,0x1d,
+ 0xfe,0x79,0x22,0x8d,0x23,0x24,0x10,0x36,0xa8,0xc9,0x8f,0xf1,0xf4,0xe6,0xb0,0xae,
+ 0x15,0x71,0x38,0xfb,0x9d,0x94,0x96,0xc8,0x18,0xf6,0xf4,0xed,0x5e,0x3d,0x5a,0xd6,
+ 0x7a,0x6c,0x7d,0x4d,0x0a,0x2a,0x4a,0xdd,0x0d,0xcf,0xed,0x0b,0x67,0x89,0x52,0x38,
+ 0xf6,0x4c,0x79,0x67,0x2b,0xc1,0x20,0xf6,0xa7,0x25,0xc2,0x4b,0x16,0x51,0x97,0xcb,
+ 0x2c,0x18,0x02,0x39,0x2b,0x9e,0x40,0xae,0x59,0x8e,0xc8,0xfc,0xe8,0xf2,0xcd,0x90,
+ 0x58,0x32,0x1d,0xcb,0xce,0x3f,0x2a,0xb5,0xe6,0x4b,0x1c,0x91,0xf9,0x1b,0x38,0x00,
+ 0x31,0x75,0x1f,0x2f,0x1d,0xbd,0xab,0x9d,0x57,0x77,0xd8,0xe9,0x96,0x0d,0x25,0xa1,
+ 0xd0,0x3d,0xc2,0x22,0xa3,0x79,0x42,0x71,0x9e,0x40,0x53,0x8c,0xf5,0xe7,0xf0,0xa9,
+ 0xad,0x9a,0xde,0x46,0x3e,0x74,0x72,0xec,0x60,0x64,0x20,0x92,0x18,0x8e,0xa3,0x8a,
+ 0xc3,0x17,0x8f,0xb4,0xf9,0xb2,0x61,0x49,0xc0,0x2a,0xb8,0x0a,0x7e,0x9f,0xd6,0xb5,
+ 0x61,0xb9,0x53,0x1b,0x48,0x64,0x96,0xe1,0x11,0xb0,0xca,0x0f,0xce,0x47,0xfb,0x27,
+ 0xf1,0x15,0xdb,0x4e,0x69,0xbb,0xdc,0xe4,0xa9,0x45,0xa4,0x5f,0x4f,0x2c,0xc6,0xe5,
+ 0x81,0xde,0xee,0x1d,0x57,0x39,0x2b,0xef,0x5b,0x88,0xa8,0x16,0x36,0x69,0x43,0x86,
+ 0x60,0xc5,0x81,0x3f,0x37,0x6e,0x07,0x63,0x59,0x6b,0x25,0xbf,0x99,0x6b,0xb1,0x64,
+ 0x89,0x9d,0x19,0xd8,0xe3,0x88,0xf9,0xe8,0x4d,0x6c,0xc4,0x1d,0x84,0x46,0x23,0x10,
+ 0x66,0x04,0x72,0xa4,0xee,0x39,0xee,0x7d,0x79,0xaf,0x4e,0x8e,0xbb,0x9e,0x4e,0x2a,
+ 0x4d,0x2b,0x33,0x4e,0x06,0xc4,0x9b,0x80,0x2c,0x19,0x48,0xdc,0x0f,0x2a,0x0f,0x62,
+ 0x2a,0xc4,0x7e,0x5a,0x02,0x92,0xc7,0x1c,0x51,0x2e,0x46,0x58,0x72,0x78,0xf4,0xa6,
+ 0xc1,0x6e,0xcf,0x98,0xa4,0x91,0x43,0x2a,0x86,0x63,0x8c,0x63,0xdf,0x3f,0x81,0xab,
+ 0x70,0x46,0x50,0xa7,0x96,0x18,0x2b,0x36,0x00,0x60,0x09,0x7f,0xf3,0x9a,0xf5,0x69,
+ 0xed,0xcc,0x8f,0x0e,0xac,0x92,0xd8,0x8f,0x7f,0x9b,0xb2,0x64,0x6c,0x42,0xe3,0xe4,
+ 0x52,0x0f,0xc8,0x07,0xa8,0xfc,0xaa,0x78,0xa0,0x67,0x69,0x11,0x01,0x91,0x80,0xc8,
+ 0x52,0xa7,0xe5,0x1d,0x73,0x9a,0x91,0x6d,0xe0,0x42,0xad,0x82,0x58,0x12,0xd9,0x07,
+ 0x18,0xe7,0xa0,0x14,0xf9,0x0f,0x98,0x10,0x99,0xa5,0xb7,0x42,0xc0,0x15,0x66,0xc8,
+ 0x61,0x9e,0x87,0x1d,0xeb,0xa5,0x6a,0xb4,0x38,0xe5,0x34,0xf4,0x43,0x7c,0xa8,0x58,
+ 0x2e,0xd7,0x99,0xc3,0xf3,0x80,0xd8,0xcb,0x75,0xc9,0xa1,0x11,0x5c,0x07,0x2f,0xb4,
+ 0x29,0xdb,0x21,0x23,0x18,0xe3,0xd2,0x9c,0x30,0x8a,0xec,0x77,0x37,0xca,0x43,0x48,
+ 0xbd,0xbe,0xa0,0x54,0xab,0xe5,0x2c,0x4a,0x1c,0xa8,0x4d,0xd8,0x2b,0xbb,0x39,0xcf,
+ 0xf5,0xaa,0xb5,0xcc,0x5c,0x99,0x54,0x05,0x2b,0xbc,0x33,0xc8,0xa0,0x65,0x50,0x8e,
+ 0x87,0xd4,0x9a,0x0c,0x32,0xce,0x63,0x48,0xc3,0xc5,0x32,0x92,0x4a,0xa3,0x00,0x1b,
+ 0x8e,0xbe,0xe7,0xad,0x4a,0x58,0x49,0x0b,0x34,0x78,0xda,0xac,0x15,0x8b,0x1e,0x83,
+ 0xfc,0xe6,0x9e,0xe3,0xe7,0x67,0x3b,0x63,0x40,0xdb,0x95,0x76,0xe7,0x8f,0xc3,0xf1,
+ 0xaa,0x5a,0x3b,0xfa,0x87,0x33,0x5a,0x91,0xac,0x03,0xcc,0x01,0x63,0x81,0xa4,0x75,
+ 0x19,0x3e,0x84,0x7b,0x74,0xcf,0x4a,0x8e,0x34,0x76,0x94,0x01,0x12,0xec,0x04,0xe0,
+ 0x8c,0x02,0xc3,0xb8,0x14,0xbb,0xa3,0x2e,0x5e,0x34,0x96,0x58,0x40,0xc9,0x20,0x60,
+ 0xa8,0xf5,0xc5,0x3d,0x18,0x7c,0x87,0x63,0xa3,0x02,0x19,0x0a,0x9e,0xb9,0x1e,0xff,
+ 0x00,0x5a,0x2d,0x6d,0x3a,0x8d,0xb7,0xd4,0x8a,0xe0,0x19,0x9a,0x1c,0x08,0xe2,0x65,
+ 0x24,0x92,0x17,0xee,0xaf,0xa6,0x3b,0x9e,0xb4,0x60,0x22,0xbb,0x4c,0xa8,0xc0,0x80,
+ 0x76,0x97,0x3c,0x0e,0xdc,0xfa,0xd5,0x97,0xb9,0x56,0x05,0x4b,0x15,0x0a,0xd9,0x6d,
+ 0xcb,0x8c,0x1f,0x4c,0xfb,0xd0,0x52,0x20,0xa1,0x23,0x5f,0x33,0x7f,0x24,0x8e,0x8a,
+ 0x7a,0xf1,0x50,0xed,0x60,0xe6,0x76,0x49,0x95,0x11,0x4f,0x9f,0xbc,0x46,0xe0,0x9c,
+ 0xb3,0x33,0x72,0x00,0x23,0xa6,0x2a,0x48,0x95,0x84,0x2b,0x95,0x2c,0x81,0x98,0x30,
+ 0xc7,0x1c,0x74,0x6c,0x55,0x81,0x39,0x28,0xc2,0x28,0xd9,0xca,0x7c,0xae,0x49,0x23,
+ 0x03,0xfb,0xc7,0xf3,0xa6,0x48,0x91,0xed,0x63,0x0c,0xa5,0xa0,0x27,0x6a,0x93,0xfc,
+ 0x27,0xbf,0xe7,0x4f,0x96,0xca,0xe0,0xe4,0xdb,0xd4,0xaf,0x3a,0xb9,0x91,0x8c,0x6e,
+ 0x25,0x84,0xf2,0x59,0x46,0x02,0x8f,0x42,0x29,0xca,0xaf,0x1a,0x2c,0x0c,0x18,0xf3,
+ 0xf3,0x33,0x8c,0xe5,0x7d,0xaa,0x79,0x3f,0xe5,0xbd,0xc3,0xa1,0x57,0x2a,0x0e,0xc8,
+ 0xc8,0xda,0x38,0xc0,0xcf,0xbd,0x43,0x8f,0x2d,0x08,0x4f,0x94,0x90,0x36,0x86,0x27,
+ 0x29,0x9e,0xd9,0xac,0x5a,0x6b,0x46,0x3e,0x66,0xd5,0x81,0xd8,0x9d,0xb1,0xab,0x80,
+ 0xaa,0x70,0x48,0x51,0x93,0xef,0x50,0x94,0x32,0xb5,0xc3,0x86,0x45,0x8c,0x31,0x08,
+ 0xb9,0x3d,0x31,0x4a,0xdb,0x64,0x91,0x4f,0x98,0xe8,0x89,0xc1,0xe7,0x2c,0xc7,0x1d,
+ 0xcf,0xa7,0xf8,0xd4,0xd2,0x33,0x81,0x2b,0x31,0x8c,0x60,0x85,0x52,0x46,0xde,0x4f,
+ 0xa6,0x2a,0x24,0xb4,0xb0,0xd6,0x9b,0x10,0xbe,0xd4,0x89,0x26,0x21,0x5e,0x3c,0x6d,
+ 0x27,0xae,0x46,0x31,0xd2,0x9e,0x21,0x8e,0x48,0xd1,0x58,0xfe,0xf0,0x49,0x94,0x60,
+ 0x00,0x18,0xc7,0x43,0xf9,0xd4,0x65,0xe4,0x85,0xdc,0x3a,0x3b,0x28,0x20,0x31,0x55,
+ 0xeb,0xcd,0x58,0x78,0xe4,0xd8,0x89,0x16,0xd3,0x03,0x12,0x49,0x51,0xca,0x9c,0xfa,
+ 0xd4,0xc9,0x36,0x92,0x29,0xbb,0x34,0x54,0x71,0x1f,0x99,0x20,0x50,0x59,0xd0,0x82,
+ 0x1b,0x04,0xee,0xf5,0x18,0xfc,0x2a,0x10,0x8c,0xd8,0x71,0x1b,0x27,0x19,0x55,0x00,
+ 0x63,0x6f,0xf9,0x35,0x61,0xd8,0xab,0xf9,0x3b,0x40,0x51,0xc8,0x7d,0xc7,0x0d,0xfe,
+ 0xce,0x7f,0x2a,0x4f,0xb3,0xa4,0x99,0x0d,0x33,0xab,0xa0,0xda,0x06,0xe1,0x84,0xff,
+ 0x00,0x1a,0xe5,0x95,0xbe,0x24,0x6a,0x9e,0x80,0xa9,0x84,0x90,0x4a,0x16,0x04,0x58,
+ 0x7c,0xc0,0xe4,0x83,0xb3,0x27,0xb5,0x42,0xc1,0xc8,0xc3,0x32,0xe7,0xd8,0x0f,0x9b,
+ 0x8f,0x4f,0xeb,0x53,0x15,0x9a,0x2f,0x2d,0x8c,0x42,0x58,0x9b,0x81,0x23,0x01,0xf3,
+ 0x63,0xb6,0x3d,0x2a,0x32,0xeb,0x87,0x7d,0x87,0x7b,0x0c,0x12,0x4e,0x00,0xe7,0xa0,
+ 0xa9,0xa8,0x92,0xdc,0xa8,0xbb,0xbd,0x08,0x27,0x8c,0x7e,0xed,0x80,0xf3,0x10,0xaf,
+ 0x00,0x8f,0x9b,0x77,0xa5,0x66,0xc5,0x2c,0x57,0x38,0x00,0xc6,0xcc,0x8f,0x90,0x54,
+ 0x8c,0x9f,0x62,0x2b,0x42,0xee,0x45,0xf2,0xb6,0x3c,0x92,0x44,0x8a,0x01,0x2a,0xa4,
+ 0x9d,0xa7,0x3f,0xc2,0x7f,0x0a,0xa5,0xa6,0x23,0xb5,0xc8,0x22,0x05,0x46,0x70,0x5c,
+ 0x30,0x00,0x17,0x6f,0x56,0x3d,0xb1,0x5f,0x95,0xf8,0x93,0x8f,0x86,0x1f,0x01,0x39,
+ 0xc9,0xea,0x8f,0xd2,0xbc,0x34,0xcb,0xe5,0x8a,0xcc,0xa1,0x4f,0xa7,0x52,0xc2,0x16,
+ 0x17,0xc5,0xe0,0x3b,0xae,0x18,0xec,0x74,0x2b,0x8d,0xe7,0xb0,0xc7,0x4c,0x57,0x98,
+ 0x7c,0x50,0x96,0x08,0x73,0x69,0x3a,0xf9,0xa4,0x7f,0xad,0x68,0xdb,0x25,0x1b,0x1f,
+ 0x70,0x11,0xdb,0x91,0x5e,0xb2,0xb7,0x71,0xda,0xcb,0x3c,0xf7,0x8c,0x2d,0x22,0x45,
+ 0x20,0x3b,0x60,0x2b,0x49,0x8e,0x09,0x3f,0x95,0x7c,0xa7,0xe3,0x1d,0x5a,0xea,0xeb,
+ 0x5b,0xd4,0xb4,0xf9,0x5a,0x4d,0xe6,0x40,0x23,0x9d,0x48,0x29,0x23,0x60,0x1c,0x81,
+ 0xd3,0xd6,0xbf,0x88,0x70,0x3f,0xbd,0xae,0xe6,0xdf,0x99,0xfd,0xc9,0x99,0x35,0x47,
+ 0x0c,0xa9,0xbd,0xb6,0x38,0x0f,0x3a,0x25,0x92,0x65,0x89,0x84,0xea,0xcf,0xb9,0x5d,
+ 0xc1,0x04,0x2f,0xf7,0x4f,0xd2,0x89,0x1e,0x36,0x45,0xde,0xce,0x54,0x13,0x93,0x8e,
+ 0x57,0xdb,0x3e,0x9c,0xd4,0xb3,0xc3,0x1e,0x43,0x2c,0x2d,0x14,0xe3,0x3b,0xc1,0x38,
+ 0xc8,0x3d,0x0f,0xf3,0xa8,0x4c,0x22,0x38,0x1c,0x12,0x77,0x13,0xb4,0x64,0x7d,0xff,
+ 0x00,0x6c,0xfb,0x57,0xd2,0xd9,0x2b,0x24,0x7c,0x17,0xc2,0xec,0x3c,0xcd,0x24,0x61,
+ 0x24,0xb7,0xb7,0x4f,0x38,0x9c,0x00,0xdd,0x09,0xed,0x9a,0xa0,0x3c,0xd0,0x5b,0xcd,
+ 0x55,0x0e,0x41,0x06,0x35,0xfb,0xbf,0x85,0x58,0x69,0x23,0x58,0x41,0x7b,0x96,0xde,
+ 0xaa,0x40,0x56,0xec,0xa7,0xd0,0xfa,0xe6,0xa1,0x82,0x21,0x6d,0x08,0x66,0x7b,0xab,
+ 0xc0,0x48,0x90,0x4e,0xe7,0xe6,0x45,0xc6,0x36,0xf3,0xef,0x8a,0x13,0x56,0x2a,0x4d,
+ 0xdc,0x8a,0x72,0xc1,0xbc,0xc0,0x16,0x67,0x11,0x80,0x14,0x0c,0x79,0x7e,0xe4,0xd5,
+ 0x95,0x99,0x15,0x00,0x86,0x35,0x91,0xdc,0xe2,0x32,0x0f,0x04,0xf7,0xa6,0xec,0x01,
+ 0xd5,0x54,0xb1,0x04,0x16,0xce,0x0f,0x4f,0xf6,0xaa,0x05,0x22,0x68,0xce,0xd8,0xde,
+ 0x68,0xce,0x43,0x32,0x1c,0x6d,0x1e,0xdf,0xe3,0x55,0xa6,0xc4,0x4a,0xe9,0xde,0xe6,
+ 0x94,0x91,0xf0,0x24,0x90,0xbb,0x31,0x5d,0xcd,0xb4,0x63,0x77,0xae,0x69,0x77,0xa1,
+ 0xfb,0x0c,0x91,0xbf,0x93,0x21,0x7d,0x9b,0x31,0x93,0x27,0xb0,0xa8,0x7f,0xd1,0xe2,
+ 0x8a,0x01,0xbd,0xd6,0xe4,0x00,0x42,0x64,0x9c,0x8f,0x73,0x52,0xdb,0x30,0x56,0xdf,
+ 0x11,0x67,0x85,0x8e,0x63,0x95,0x9b,0x07,0x77,0x5e,0x3d,0x29,0xe9,0xbb,0x33,0x6d,
+ 0x26,0xd2,0x64,0x87,0xc9,0x32,0xc9,0x07,0xce,0x42,0xbe,0x11,0x40,0xc6,0x70,0x7f,
+ 0x8b,0xd3,0xbd,0x3a,0x1f,0x35,0x65,0x3e,0x6e,0x50,0x6f,0x3b,0x4a,0x81,0xc7,0xa0,
+ 0x02,0x9b,0x29,0xb9,0x31,0xc9,0x00,0x78,0x83,0x74,0x46,0x50,0x01,0x1f,0x5c,0xd4,
+ 0x51,0x4b,0x22,0x85,0xb3,0x04,0x24,0x9b,0x77,0x49,0x23,0x0f,0xbb,0xeb,0xc9,0xa4,
+ 0xae,0xd6,0xa3,0x4e,0xd2,0x44,0x97,0x11,0x5c,0x16,0x7b,0x8f,0x2b,0xe4,0x38,0x65,
+ 0x2c,0xf9,0x04,0x7a,0x11,0xeb,0xcd,0x3d,0x67,0xb7,0x51,0xe6,0x0c,0x25,0xa1,0x3b,
+ 0xd9,0x19,0x39,0xdc,0x3f,0xfd,0x54,0xe4,0x8e,0xcc,0x25,0xb7,0x94,0x26,0xf2,0xcb,
+ 0x13,0xb9,0xd8,0x92,0x4f,0xb0,0x35,0x04,0xb2,0x49,0x88,0x0c,0x33,0x08,0x95,0x9c,
+ 0xa1,0xca,0x83,0x90,0x7b,0x1f,0xd6,0xb2,0xde,0xe9,0x93,0x76,0x95,0xdd,0xae,0x68,
+ 0xb5,0xea,0xcc,0x24,0x36,0xf0,0xc7,0x24,0x45,0x43,0xc8,0xa4,0x6d,0xe3,0xb1,0xaa,
+ 0xd2,0x9d,0xf7,0x2c,0xd8,0x2c,0x5d,0x41,0x85,0x40,0x23,0xaf,0x50,0x05,0x2c,0x51,
+ 0x96,0x6d,0xf1,0x2a,0x2f,0x99,0xf2,0x8c,0x31,0x6d,0xd8,0xed,0xed,0x4d,0x8e,0x06,
+ 0x2d,0x6f,0x1a,0xbc,0x92,0x30,0x39,0x0e,0x3f,0x80,0x0e,0xe6,0xa5,0xd9,0xbb,0x83,
+ 0xba,0x63,0xe1,0x46,0x69,0xe5,0x9a,0x78,0xda,0x06,0x0c,0x32,0x8a,0x32,0x08,0xe9,
+ 0x91,0xed,0x56,0xad,0x63,0x94,0xf9,0xb3,0xc6,0x72,0x44,0xa0,0x81,0x90,0x0b,0x0a,
+ 0x7a,0xa4,0x39,0x96,0x45,0x99,0xb6,0xc8,0x32,0x58,0x2f,0xe8,0x7d,0x0d,0x48,0xf0,
+ 0xa6,0x03,0x16,0x22,0x00,0x01,0x27,0x6f,0x47,0xec,0x09,0xfc,0xeb,0x16,0xd0,0xd7,
+ 0x46,0x87,0xfd,0x94,0x47,0x6f,0x77,0x71,0x1c,0x91,0xc5,0xe6,0xb6,0xf5,0x8d,0xdc,
+ 0xb1,0x42,0x0e,0x2a,0x78,0x62,0x90,0x96,0x86,0xed,0x0a,0x66,0x3f,0x33,0x70,0x18,
+ 0xe9,0xd0,0xd4,0x42,0xce,0xea,0x5b,0x81,0x31,0x36,0xf3,0xdb,0xc6,0x40,0x08,0x10,
+ 0x92,0xe7,0xdc,0xf3,0xc5,0x74,0x32,0x24,0x89,0x14,0x6d,0x24,0x61,0xe7,0x41,0xe5,
+ 0xa3,0x60,0x00,0xd9,0xf5,0x03,0xb8,0xcd,0x28,0xdd,0x26,0x9e,0xac,0xcd,0xeb,0xae,
+ 0xc6,0x65,0xba,0x5b,0x42,0x19,0x9a,0x44,0x46,0x72,0x24,0x91,0x51,0x72,0x1d,0x80,
+ 0xe9,0xc7,0x4c,0x8a,0xd9,0x8a,0xd9,0xa4,0x32,0x4e,0xb1,0x85,0x24,0xee,0x11,0x81,
+ 0x80,0xca,0x7a,0xfc,0xdd,0xa9,0x91,0x59,0x5c,0xc9,0x3d,0xb0,0xb4,0x16,0xf1,0x95,
+ 0x04,0xc9,0x1c,0x83,0xa9,0xf5,0x1f,0xe1,0x5b,0x16,0xb1,0x5c,0x25,0xb8,0xb6,0x95,
+ 0x5c,0xc6,0x37,0x10,0x50,0x83,0x93,0x9e,0xa6,0xa9,0x35,0xab,0x47,0x3c,0x93,0x7d,
+ 0x35,0x26,0x8e,0xdd,0x21,0x87,0xcb,0x57,0xdd,0xe6,0x2e,0x47,0x6d,0xbe,0xd9,0xfc,
+ 0xaa,0xe4,0x20,0x45,0x6d,0x6b,0x04,0xa5,0xa7,0xdb,0xd4,0xe0,0x1c,0x8c,0xf0,0x29,
+ 0x0a,0x04,0x31,0xc3,0x02,0x03,0x0a,0xae,0xec,0x93,0xf7,0x8e,0x2a,0x78,0x36,0x2b,
+ 0x2a,0xc4,0xb9,0x68,0xc7,0xcc,0x48,0xe7,0xf2,0xad,0xe3,0xbe,0xda,0x09,0x6a,0x4e,
+ 0xd6,0xf2,0xc7,0xf6,0x97,0xf3,0x67,0x95,0x37,0xe6,0x31,0x8c,0x28,0xc8,0xe9,0x8a,
+ 0xa3,0x26,0xc6,0x50,0xcf,0x1c,0xa1,0x49,0xce,0xd2,0x00,0x0b,0xee,0x6a,0xca,0xc9,
+ 0x21,0x25,0x8b,0x48,0xc1,0x38,0x40,0x73,0xb4,0x9a,0x89,0xd9,0x8a,0xe2,0x48,0x56,
+ 0x71,0x8e,0x65,0x63,0x85,0x1e,0xbc,0x56,0x91,0xb5,0xcc,0x56,0xd6,0x65,0x6f,0xdc,
+ 0x90,0x92,0xa2,0x9d,0xbb,0xb1,0xf2,0x9f,0xbc,0x3d,0x45,0x4a,0x84,0xc6,0xca,0xfb,
+ 0x0a,0xa9,0x6c,0x90,0xe3,0x9f,0x4e,0x0f,0xe5,0x40,0xb3,0x44,0x75,0x96,0x39,0xd9,
+ 0x6d,0x99,0x37,0x15,0x23,0x2a,0xa4,0x0e,0xd5,0x2b,0xda,0x99,0x00,0x43,0x77,0xbc,
+ 0xb0,0xcb,0x48,0xc0,0xe7,0x23,0xa0,0x51,0xd3,0x15,0xa2,0x5d,0xcd,0x55,0xd2,0xd4,
+ 0xaa,0x65,0x96,0x4b,0xbd,0x87,0x60,0x66,0xf9,0x40,0x04,0x0c,0x83,0xdf,0x35,0x78,
+ 0x40,0xbc,0x34,0xcd,0x1c,0x4e,0xa7,0x6a,0x92,0x79,0x23,0xfd,0x91,0xf8,0x0a,0xb1,
+ 0x65,0x60,0x8d,0x12,0x4e,0xb1,0xfc,0xce,0xa0,0xab,0x33,0x0c,0x9e,0x7a,0x81,0xf8,
+ 0x1a,0x97,0xec,0xd1,0x97,0x71,0x00,0x69,0x25,0x2b,0x97,0x66,0x03,0x93,0xeb,0x9e,
+ 0xdd,0x2a,0xd4,0x93,0x76,0x44,0x36,0xd9,0x5b,0x2e,0xe9,0x03,0xba,0x94,0x50,0x48,
+ 0xc2,0x8e,0x01,0x3e,0xa7,0xd6,0x9d,0x1a,0xa2,0xc5,0x2b,0x06,0x59,0x58,0x0c,0x15,
+ 0x61,0xc9,0x3f,0xec,0x9e,0xd4,0xcb,0x99,0x26,0xb5,0x8c,0xab,0x8f,0xdc,0xed,0x0f,
+ 0x21,0x2f,0xf2,0x9f,0xfe,0xbd,0x62,0x0d,0x59,0x27,0x45,0x9d,0x10,0xa9,0x04,0x90,
+ 0x58,0xf2,0x4f,0x6a,0x7d,0x35,0x13,0x76,0x76,0x7b,0x97,0x67,0x76,0xdc,0x54,0xc8,
+ 0x64,0x98,0x00,0x00,0x03,0x38,0xf5,0xe3,0xbd,0x50,0xbb,0xba,0xf2,0x24,0xde,0x44,
+ 0x91,0xae,0x15,0x91,0x82,0x74,0x3d,0xc0,0xa8,0x2e,0x59,0xed,0xdd,0xa5,0x0c,0x8c,
+ 0x76,0x83,0x80,0x4e,0x14,0xd6,0x65,0xce,0xa8,0x24,0x84,0xc9,0x24,0xed,0x3b,0x29,
+ 0x04,0xa2,0x13,0x83,0x83,0xcf,0xe1,0x59,0x37,0x61,0x68,0x9e,0xba,0x15,0xaf,0x35,
+ 0x49,0xe7,0xf3,0xad,0xde,0x36,0x85,0x96,0x5d,0xcc,0xcc,0x06,0x5c,0x1c,0x72,0x3d,
+ 0xbe,0xb5,0x89,0x71,0xe7,0xa3,0x98,0x5a,0x7d,0xca,0x49,0x25,0x88,0x00,0x01,0xe8,
+ 0x00,0xa7,0xdc,0xcb,0x25,0xc3,0x17,0x57,0x31,0xa1,0x6d,0xfb,0x1b,0xab,0x8e,0xc0,
+ 0x54,0x11,0xb1,0x11,0x83,0xfe,0xa7,0x73,0x6d,0x55,0x24,0x1d,0xbd,0xf1,0x49,0x34,
+ 0xb5,0x63,0xd5,0xbd,0x0a,0xf7,0x11,0xc2,0x8a,0xd2,0x4d,0xfb,0xb9,0xe4,0x1b,0x30,
+ 0x0e,0x03,0x7a,0x60,0x76,0x3c,0xd4,0x12,0xc0,0x8b,0x34,0x68,0xfe,0x6e,0x59,0x44,
+ 0x8c,0xb1,0x9c,0x83,0x8e,0xa3,0x77,0x6a,0xb3,0x33,0x29,0x02,0x25,0x73,0xb8,0x36,
+ 0xe7,0x2c,0xbf,0x78,0x7a,0xe4,0xfd,0x2a,0xb0,0x8c,0x80,0x17,0xf7,0x92,0x31,0x7c,
+ 0x17,0x5c,0x7c,0xc0,0xf4,0x18,0xed,0x4e,0xcb,0x4b,0x6e,0x68,0xec,0xba,0x12,0x44,
+ 0xc9,0x00,0x9e,0x45,0x66,0x50,0xf2,0x86,0xda,0xa4,0x10,0xa0,0xf6,0x04,0xfa,0xd2,
+ 0xbc,0x49,0x83,0x22,0x4d,0x80,0x5f,0x6c,0x79,0x6c,0x10,0x3b,0x91,0xed,0xd6,0x96,
+ 0x3f,0x2a,0x25,0x4f,0x2d,0x8a,0x80,0xdb,0x55,0x58,0x70,0x4e,0x3a,0x91,0xe9,0xcd,
+ 0x32,0x68,0xf6,0x42,0x1b,0xf7,0x7d,0x76,0xb1,0xc1,0x25,0x89,0xa5,0xb3,0xb0,0x35,
+ 0xa6,0xa5,0x84,0x0d,0x75,0x23,0x24,0x92,0xb4,0xa4,0x28,0x25,0x98,0x6d,0x04,0x8e,
+ 0xc7,0xd6,0xa3,0xf3,0x21,0x91,0xd1,0x04,0xc2,0x1b,0x86,0x23,0x2c,0x46,0x01,0xfa,
+ 0x0f,0x4e,0xb4,0x05,0xf3,0xad,0xed,0x5a,0x45,0x24,0x97,0xf9,0x40,0x6c,0x63,0x1d,
+ 0xf1,0x53,0x00,0x26,0x12,0x6d,0x30,0xc8,0x8a,0x31,0xf3,0x2f,0xdc,0xfa,0x1e,0xf9,
+ 0xc0,0xa1,0x19,0xbd,0x75,0xe8,0x4f,0x04,0x32,0x36,0xd6,0xb8,0x48,0x8d,0xb8,0x62,
+ 0x7c,0xc6,0x07,0x73,0x0c,0xf4,0xcd,0x58,0xdb,0xf6,0x89,0x54,0x5a,0xc7,0x21,0xf3,
+ 0x01,0x91,0x83,0x11,0x94,0x3d,0x87,0xd6,0xaa,0x2d,0xd2,0x98,0xbe,0xfe,0x55,0x53,
+ 0x74,0x7b,0xf3,0x8c,0x77,0x03,0xde,0xb4,0xa1,0xd4,0xa3,0x96,0xd5,0x25,0x68,0xe2,
+ 0x32,0xf9,0x7e,0x66,0xd5,0xf9,0x5f,0x3d,0x32,0x69,0x5f,0xaa,0x07,0xb5,0xd3,0x32,
+ 0x27,0x8d,0x96,0x1d,0x8a,0xac,0x8c,0x55,0x89,0x62,0x37,0x64,0x7f,0x43,0x59,0xd6,
+ 0xec,0x9b,0x06,0x0c,0x9f,0x3b,0x01,0xe6,0xe7,0x86,0xcf,0x18,0xc7,0xb5,0x5f,0x92,
+ 0xe6,0x43,0x12,0x3d,0xbb,0xb4,0x77,0x04,0x12,0xa0,0x10,0x46,0xd2,0x3a,0xe3,0xe9,
+ 0x9a,0xaf,0x10,0x84,0x79,0x51,0x43,0x2e,0xe6,0x61,0xe6,0x04,0xce,0x00,0x03,0xad,
+ 0x36,0xf5,0x6e,0xc4,0xea,0xf4,0x8f,0x62,0xb5,0xca,0xc8,0xf6,0xe2,0xe1,0x23,0x99,
+ 0xd9,0x72,0xb3,0x39,0x38,0xf2,0xc0,0x3d,0x73,0xef,0x53,0x79,0x93,0x1f,0x20,0x6e,
+ 0x06,0x39,0x41,0x20,0x85,0xce,0x17,0xdc,0xf5,0xcf,0x02,0x97,0xe5,0x25,0x21,0x45,
+ 0x61,0x10,0x70,0xcc,0x15,0xb2,0xa7,0xda,0xa6,0x89,0x03,0x3b,0x48,0x91,0xca,0x96,
+ 0xc8,0x4a,0xa6,0xf6,0xe5,0xce,0x3a,0x00,0x3a,0x51,0x7b,0x59,0x31,0xb6,0x9b,0xd3,
+ 0xcb,0xfe,0x09,0x55,0xa6,0xb5,0x99,0xe3,0x8b,0x63,0x6c,0xdd,0x96,0x2a,0x39,0x60,
+ 0x07,0x7c,0x74,0xef,0x42,0x08,0x19,0x03,0xa3,0xcf,0xb0,0x92,0xc0,0xc8,0x3a,0x7d,
+ 0x6a,0x41,0x33,0x47,0x34,0x51,0xc7,0x69,0x6c,0x9b,0xc1,0x62,0xca,0xdd,0x0e,0x3b,
+ 0xfb,0xd4,0x6a,0x7f,0x73,0xe6,0x4d,0x91,0x2b,0x36,0x0e,0x07,0xde,0xc7,0x6c,0x76,
+ 0xa3,0x44,0x0e,0xca,0xf7,0xb0,0xa5,0xa2,0x59,0x63,0x97,0xcd,0x56,0x97,0x70,0xca,
+ 0xa9,0xe5,0x97,0xdf,0xf2,0xa6,0xee,0x8a,0x58,0xc3,0x09,0x95,0x22,0x47,0xdc,0x14,
+ 0x75,0x45,0x27,0xaf,0xbd,0x24,0x5f,0xe9,0x12,0xf9,0x8f,0x6d,0x10,0x86,0x3c,0xb6,
+ 0xd5,0x60,0x0b,0x9f,0x5c,0xfe,0x26,0x88,0x08,0x75,0x69,0xd1,0x4f,0x96,0xe4,0x01,
+ 0x12,0xae,0x72,0x33,0xcf,0x26,0x85,0x65,0xa2,0x0d,0x5a,0x4a,0xfa,0x0f,0x0e,0x67,
+ 0xca,0x98,0x88,0x55,0x18,0x32,0x84,0xf9,0x40,0xf4,0x35,0x3a,0x3d,0xc2,0x4b,0x0c,
+ 0x51,0x24,0x72,0x92,0xa4,0xe7,0x83,0xb4,0x7a,0x81,0x50,0x2a,0x48,0xb1,0xcf,0x09,
+ 0x69,0x56,0xdd,0xa4,0xca,0x8c,0xf2,0xfc,0x74,0x2c,0x3a,0x63,0xf2,0xa6,0x6d,0x90,
+ 0x48,0xd2,0x24,0x8e,0xee,0x06,0xc6,0xca,0xf5,0x1f,0xe3,0x43,0xba,0xd1,0x82,0xbb,
+ 0xd5,0xad,0x42,0xe5,0x25,0x26,0x2b,0x79,0xa4,0x67,0x0c,0x0b,0x87,0x2a,0x42,0x8c,
+ 0x7f,0x08,0x35,0x2d,0xb7,0x9a,0x11,0x67,0x55,0x65,0x50,0xe5,0x52,0x22,0xbb,0xb2,
+ 0xb5,0x18,0x68,0x67,0x5f,0x29,0x9d,0xd8,0xc4,0xc4,0x22,0xb1,0xc0,0x43,0xf4,0xa7,
+ 0x20,0x94,0x22,0xb9,0x93,0x64,0x4e,0x76,0x07,0xdb,0x90,0x00,0xe3,0xad,0x0f,0x55,
+ 0xa0,0x2b,0x37,0x74,0xf4,0x1a,0xac,0xc7,0x6b,0x66,0xdd,0x4a,0x92,0xc5,0x72,0x73,
+ 0xf4,0xc5,0x43,0x2c,0x8a,0xec,0xd2,0x59,0xa8,0x90,0x13,0x87,0x3b,0x49,0x23,0xe9,
+ 0x57,0x66,0x60,0x21,0x40,0x22,0x57,0xc0,0xc0,0x75,0x19,0x2d,0xcf,0x4f,0xfe,0xbd,
+ 0x54,0x8d,0x02,0x4a,0x90,0x81,0x24,0x40,0xb6,0xd0,0x43,0x60,0x0c,0xff,0x00,0x78,
+ 0x51,0xe6,0x0d,0xbb,0xea,0x2a,0x79,0x5b,0xf0,0xd2,0x63,0xe5,0x23,0x68,0x1f,0x77,
+ 0xdb,0x8f,0xad,0x35,0x83,0x11,0x94,0x94,0x21,0x1f,0x38,0x0e,0xd8,0x0a,0x71,0x8e,
+ 0x2a,0x49,0xad,0xe3,0x90,0xbc,0x0b,0xb8,0xa2,0xf0,0xa5,0x49,0x39,0x6f,0x7f,0x5a,
+ 0x8e,0x50,0xd2,0x24,0x47,0x70,0xf3,0x46,0x3e,0x52,0xbf,0x73,0x07,0xa0,0xa5,0x16,
+ 0xba,0xb0,0x6b,0xb8,0xf8,0x98,0x22,0xc1,0xe5,0x4a,0x53,0x19,0x66,0x7c,0xf4,0x3d,
+ 0xf2,0x69,0x81,0xcc,0xb1,0xef,0x52,0x24,0x99,0xdc,0xa2,0xaf,0x96,0x09,0x41,0xea,
+ 0x4f,0xe7,0x4f,0x13,0x2a,0x48,0x87,0xf7,0x8c,0xa7,0x90,0xaa,0xb9,0xc3,0x51,0x13,
+ 0x3b,0x4d,0x0a,0x3e,0xc3,0x2b,0x6e,0x24,0x2f,0x46,0xfa,0x0e,0xd4,0xfa,0x05,0xde,
+ 0x8d,0xbb,0xa0,0x49,0x62,0x8d,0xcc,0x6a,0x90,0xbc,0xc9,0xd3,0x04,0xfe,0xf3,0xd7,
+ 0x1e,0x94,0x4b,0x22,0xf9,0x6b,0x13,0xac,0x29,0x83,0xe6,0x7c,0xc3,0x87,0x27,0x1d,
+ 0x08,0xeb,0xd4,0xd5,0xd8,0x96,0xdd,0x81,0xda,0xe8,0xcc,0x48,0x09,0x18,0xfb,0xdd,
+ 0x7b,0xd5,0x18,0xe0,0x7b,0x48,0xe3,0x0a,0x0b,0x2a,0xb9,0xc0,0x00,0x12,0xbc,0xf4,
+ 0xcd,0x1a,0x27,0xa8,0x3b,0xa5,0x77,0xb0,0xfc,0x19,0x21,0xf3,0x87,0x33,0x3b,0x95,
+ 0x64,0x03,0x05,0x31,0xfe,0x35,0x18,0x68,0xe2,0x94,0xcd,0x02,0xc1,0x24,0x85,0x72,
+ 0xc4,0xb1,0xc6,0x07,0x40,0x3d,0xf9,0xa7,0xae,0x6d,0xf6,0x3e,0xff,0x00,0xb1,0x93,
+ 0x23,0x79,0x8b,0x27,0x40,0x71,0xc6,0x33,0x51,0xac,0x62,0x40,0xee,0x8a,0x81,0x1a,
+ 0x5c,0x82,0xca,0x40,0x63,0x8e,0x83,0xf2,0xa2,0xf6,0xdc,0x7a,0xb7,0x74,0x04,0x87,
+ 0x59,0xca,0xf9,0x6b,0x38,0x01,0xca,0xbb,0x1e,0x7d,0x87,0xbd,0x33,0x31,0xca,0xed,
+ 0xbe,0x31,0x80,0xca,0x3e,0x62,0x78,0x24,0xe3,0x9f,0x5a,0x4d,0x81,0x5c,0x16,0x10,
+ 0xa0,0x20,0x86,0x2a,0x09,0x1b,0xb3,0xd6,0x9d,0xc3,0xb4,0x78,0x54,0x13,0x28,0x20,
+ 0x85,0xcf,0x3f,0x53,0x4d,0xe9,0xb0,0xae,0xd2,0xbb,0x7a,0x93,0x4b,0x1e,0x47,0x98,
+ 0x8c,0xab,0x29,0x7d,0xa4,0xf6,0x2b,0xeb,0x9f,0x4f,0xc2,0x95,0x76,0x79,0xf1,0xaa,
+ 0x31,0x85,0x50,0xe0,0xab,0xa0,0xc1,0xf7,0x07,0xf3,0xa8,0x50,0x18,0x03,0x34,0xea,
+ 0x64,0x79,0x86,0x54,0x80,0x48,0x5e,0x7a,0x8a,0x7a,0xb2,0x42,0xb1,0x79,0xe4,0xf0,
+ 0x09,0x60,0x72,0xd9,0xe3,0xb1,0xa2,0xcf,0xa0,0x24,0xaf,0x76,0x58,0xdc,0xab,0x23,
+ 0xe0,0x91,0x19,0x24,0xb2,0xed,0xc6,0x38,0xe2,0xaa,0x47,0x13,0xc5,0x14,0x09,0x22,
+ 0x89,0x26,0x29,0xf3,0x80,0x33,0x95,0xce,0x79,0xa1,0x5c,0xcd,0x13,0xee,0x8c,0x24,
+ 0x81,0x49,0x76,0x66,0xe0,0x7d,0x29,0x76,0xc8,0xe2,0x19,0x63,0x18,0x91,0x87,0xc8,
+ 0x08,0xe4,0xfa,0x81,0x49,0x3b,0x0f,0x56,0xee,0xf6,0x0f,0x2f,0xcf,0xd9,0xe5,0xbc};
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/README.md b/lib/libesp32/JPEGDEC/examples/M5Stack/README.md
new file mode 100644
index 000000000..0e61c399b
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/M5Stack/README.md
@@ -0,0 +1,34 @@
+These are slightly modified versions of the adafruit_gfx_demo.
+Extra Images were included:
+The Star Ship ENTERPRISE "NCC-1701" from http://clipart-library.com/clip-art/uss-enterprise-silhouette-11.htm
+And an image of "Batman" from https://all-free-download.com/free-vector/download/batman-5_132955.html
+
+The JPEGDraw function was changed for use with the M5Stack devices.
+
+ M5.Lcd.drawBitmap((int16_t)pDraw->x, (int16_t)pDraw->y, (int16_t)pDraw->iWidth, (int16_t)pDraw->iHeight, pDraw->pPixels);
+
+Another small change was to add a check if the image had a thumbnail or not, and call the correct jpg decode routine.
+ if (jpeg.hasThumb()) {jpeg.decode(iCenterX[i],iCenterY[i],JPEG_EXIF_THUMBNAIL | iOption[i]); } else { jpeg.decode(iCenterX[i],iCenterY[i], iOption[i]); }
+
+To display the other images, uncomment the image you want to display, comment the others.
+Also uncomment the line with the name of the image you want to display, and comment the others.
+if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), JPEGDraw))
+ //if (jpeg.openFLASH((uint8_t *)ncc1701, sizeof(ncc1701), JPEGDraw))
+ //if (jpeg.openFLASH((uint8_t *)batman, sizeof(batman), JPEGDraw))
+
+M5Stack, M5Core2 and M5Fire sketches are almost the same, the difference is how you start the screen on the Fire, and M5Core2.
+M5StickC and M5StickCPlus are the same with the difference being which library is used (either M5StickC.h or M5StickkCPlus.h) and display size between the two devices.
+
+Tested on:
+M5Stack Gray
+M5Stack Fire
+M5StickC
+M5StickC Plus
+M5Core2
+
+Untested: (should work with M5Stack, but unable to test)
+M5Stack Basic (should work)
+M5Go Lite
+M5Go
+
+Feb 22, 2021 - LeRoy Miller, KD8BXP
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/batman.jpg b/lib/libesp32/JPEGDEC/examples/M5Stack/batman.jpg
new file mode 100644
index 000000000..228f7384f
Binary files /dev/null and b/lib/libesp32/JPEGDEC/examples/M5Stack/batman.jpg differ
diff --git a/lib/libesp32/JPEGDEC/examples/M5Stack/ncc1701.jpg b/lib/libesp32/JPEGDEC/examples/M5Stack/ncc1701.jpg
new file mode 100644
index 000000000..92af83686
Binary files /dev/null and b/lib/libesp32/JPEGDEC/examples/M5Stack/ncc1701.jpg differ
diff --git a/lib/libesp32/JPEGDEC/examples/adafruit_gfx_demo/adafruit_gfx_demo.ino b/lib/libesp32/JPEGDEC/examples/adafruit_gfx_demo/adafruit_gfx_demo.ino
new file mode 100644
index 000000000..6c5122c7e
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/adafruit_gfx_demo/adafruit_gfx_demo.ino
@@ -0,0 +1,72 @@
+// JPEGDEC example for Adafruit GFX displays
+
+#include
+// Sample image (truncated) containing a 320x240 Exif thumbnail
+#include "thumb_test.h"
+
+#include "SPI.h"
+#include "Adafruit_GFX.h"
+#include "Adafruit_ILI9341.h"
+
+#define DISPLAY_WIDTH 320
+#define DISPLAY_HEIGHT 240
+
+// PyPortal-specific pins
+#define SD_CS 32 // SD card select
+#define TFT_D0 34 // Data bit 0 pin (MUST be on PORT byte boundary)
+#define TFT_WR 26 // Write-strobe pin (CCL-inverted timer output)
+#define TFT_DC 10 // Data/command pin
+#define TFT_CS 11 // Chip-select pin
+#define TFT_RST 24 // Reset pin
+#define TFT_RD 9 // Read-strobe pin
+#define TFT_BACKLIGHT 25 // Backlight enable (active high)
+
+Adafruit_ILI9341 tft(tft8bitbus, TFT_D0, TFT_WR, TFT_DC, TFT_CS, TFT_RST, TFT_RD);
+JPEGDEC jpeg;
+
+int JPEGDraw(JPEGDRAW *pDraw)
+{
+// Serial.printf("jpeg draw: x,y=%d,%d, cx,cy = %d,%d\n", pDraw->x, pDraw->y, pDraw->iWidth, pDraw->iHeight);
+// Serial.printf("Pixel 0 = 0x%04x\n", pDraw->pPixels[0]);
+ tft.dmaWait(); // Wait for prior writePixels() to finish
+ tft.setAddrWindow(pDraw->x, pDraw->y, pDraw->iWidth, pDraw->iHeight);
+ tft.writePixels(pDraw->pPixels, pDraw->iWidth * pDraw->iHeight, true, false); // Use DMA, big-endian
+ return 1;
+} /* JPEGDraw() */
+
+void setup() {
+ Serial.begin(115200);
+ //while (!Serial);
+ Serial.println("Starting...");
+ pinMode(TFT_BACKLIGHT, OUTPUT);
+ digitalWrite(TFT_BACKLIGHT, HIGH); // Backlight on
+
+ // put your setup code here, to run once:
+ tft.begin();
+ tft.setRotation(3); // PyPortal native orientation
+} /* setup() */
+
+void loop() {
+int i;
+long lTime;
+int iOption[4] = {0, JPEG_SCALE_HALF, JPEG_SCALE_QUARTER, JPEG_SCALE_EIGHTH};
+int iCenterX[4] = {0,80,120,140};
+int iCenterY[4] = {0,60,90,105};
+
+ for (i=0; i<4; i++)
+ {
+ tft.fillScreen(ILI9341_BLACK);
+ tft.startWrite(); // Not sharing TFT bus on PyPortal, just CS once and leave it
+ if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), JPEGDraw))
+ {
+ lTime = micros();
+ if (jpeg.decode(iCenterX[i],iCenterY[i],JPEG_EXIF_THUMBNAIL | iOption[i]))
+ {
+ lTime = micros() - lTime;
+ Serial.printf("%d x %d image, decode time = %d us\n", jpeg.getWidth() >> i, jpeg.getHeight() >> i, (int)lTime);
+ }
+ jpeg.close();
+ }
+ delay(2000); // pause between images
+ } // for i
+} /* loop() */
diff --git a/lib/libesp32/JPEGDEC/examples/adafruit_gfx_demo/thumb_test.h b/lib/libesp32/JPEGDEC/examples/adafruit_gfx_demo/thumb_test.h
new file mode 100644
index 000000000..0b43b0074
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/adafruit_gfx_demo/thumb_test.h
@@ -0,0 +1,1286 @@
+//
+// thumb_test
+//
+const uint8_t thumb_test[] PROGMEM = { 0xff,0xd8,0xff,0xe1,0x1e,0x28,0x45,0x78,0x69,0x66,0x00,0x00,0x4d,0x4d,0x00,0x2a,
+ 0x00,0x00,0x00,0x08,0x00,0x0d,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x0f,0xc0,
+ 0x00,0x00,0x01,0x01,0x00,0x03,0x00,0x00,0x00,0x01,0x0b,0xd0,0x00,0x00,0x01,0x0f,
+ 0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xaa,0x01,0x10,0x00,0x02,0x00,0x00,
+ 0x00,0x0a,0x00,0x00,0x00,0xb2,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x06,
+ 0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xbc,0x01,0x1b,
+ 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xc4,0x01,0x28,0x00,0x03,0x00,0x00,
+ 0x00,0x01,0x00,0x02,0x00,0x00,0x01,0x31,0x00,0x02,0x00,0x00,0x00,0x0f,0x00,0x00,
+ 0x00,0xcc,0x01,0x32,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xdc,0x02,0x13,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x87,0x69,0x00,0x04,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x00,0xf0,0x88,0x25,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x03,0x20,0x00,0x00,0x03,0x26,0x73,0x61,0x6d,0x73,0x75,0x6e,0x67,0x00,0x53,0x4d,
+ 0x2d,0x47,0x39,0x36,0x35,0x55,0x31,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,
+ 0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x47,0x39,0x36,0x35,0x55,0x31,0x55,0x45,
+ 0x53,0x37,0x44,0x54,0x45,0x31,0x00,0x00,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a,
+ 0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x1f,0x82,0x9a,
+ 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x6a,0x82,0x9d,0x00,0x05,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x02,0x72,0x88,0x22,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x02,
+ 0x00,0x00,0x88,0x27,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0xfa,0x00,0x00,0x90,0x00,
+ 0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x32,0x32,0x30,0x90,0x03,0x00,0x02,0x00,0x00,
+ 0x00,0x14,0x00,0x00,0x02,0x7a,0x90,0x04,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00,
+ 0x02,0x8e,0x91,0x01,0x00,0x07,0x00,0x00,0x00,0x04,0x01,0x02,0x03,0x00,0x92,0x01,
+ 0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xa2,0x92,0x02,0x00,0x05,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x02,0xaa,0x92,0x03,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x02,0xb2,0x92,0x04,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xba,0x92,0x05,
+ 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xc2,0x92,0x07,0x00,0x03,0x00,0x00,
+ 0x00,0x01,0x00,0x02,0x00,0x00,0x92,0x09,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0x92,0x0a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xca,0x92,0x90,
+ 0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,0x02,0xd2,0x92,0x91,0x00,0x02,0x00,0x00,
+ 0x00,0x07,0x00,0x00,0x02,0xda,0x92,0x92,0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,
+ 0x02,0xe2,0xa0,0x00,0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0xa0,0x01,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa0,0x02,0x00,0x04,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x0f,0xc0,0xa0,0x03,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x0b,0xd0,0xa0,0x05,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x02,0xa2,0x17,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa3,0x01,0x00,0x01,0x00,0x00,
+ 0x00,0x01,0x01,0x00,0x00,0x00,0xa4,0x02,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0xa4,0x03,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x05,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x1a,0x00,0x00,0xa4,0x06,0x00,0x03,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x20,0x00,0x02,0x00,0x00,0x00,0x18,0x00,0x00,
+ 0x02,0xea,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3c,0x00,0x00,
+ 0x00,0xf0,0x00,0x00,0x00,0x64,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a,0x30,0x39,
+ 0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x32,0x30,0x32,0x30,0x3a,0x30,
+ 0x38,0x3a,0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x00,
+ 0x17,0x12,0x00,0x00,0x03,0xe8,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x64,0x00,0x00,
+ 0x00,0xa6,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,
+ 0x00,0x74,0x00,0x00,0x00,0x64,0x00,0x00,0x10,0xcc,0x00,0x00,0x03,0xe8,0x38,0x37,
+ 0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37,0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37,
+ 0x35,0x37,0x31,0x39,0x00,0x00,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56,
+ 0x4d,0x20,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31,0x56,0x41,0x00,0x00,0x02,
+ 0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x04,0x52,0x39,0x38,0x00,0x00,0x02,0x00,0x07,
+ 0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x09,0x01,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x40,
+ 0x01,0x01,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x03,
+ 0x00,0x00,0x00,0x01,0x00,0x06,0x00,0x00,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01,
+ 0x00,0x06,0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x98,
+ 0x01,0x1b,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0xa0,0x01,0x28,0x00,0x03,
+ 0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x02,0x01,0x00,0x04,0x00,0x00,0x00,0x01,
+ 0x00,0x00,0x03,0xa8,0x02,0x02,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x1a,0x78,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x48,
+ 0x00,0x00,0x00,0x01,0xff,0xd8,0xff,0xdb,0x00,0x84,0x00,0x17,0x10,0x11,0x14,0x11,
+ 0x0e,0x17,0x14,0x13,0x14,0x1a,0x18,0x17,0x1b,0x22,0x39,0x25,0x22,0x1f,0x1f,0x22,
+ 0x46,0x32,0x35,0x29,0x39,0x53,0x49,0x57,0x56,0x51,0x49,0x50,0x4f,0x5b,0x67,0x83,
+ 0x6f,0x5b,0x61,0x7c,0x63,0x4f,0x50,0x72,0x9c,0x74,0x7c,0x88,0x8c,0x93,0x95,0x93,
+ 0x59,0x6e,0xa1,0xad,0xa0,0x8f,0xab,0x83,0x90,0x93,0x8d,0x01,0x18,0x1a,0x1a,0x22,
+ 0x1e,0x22,0x43,0x25,0x25,0x43,0x8d,0x5e,0x50,0x5e,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0xff,0xc0,0x00,0x11,
+ 0x08,0x00,0xf0,0x01,0x40,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff,
+ 0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,
+ 0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01,
+ 0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,
+ 0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,
+ 0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,
+ 0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,
+ 0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,
+ 0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,
+ 0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,
+ 0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,
+ 0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,
+ 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,
+ 0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,
+ 0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02,
+ 0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,
+ 0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,
+ 0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,
+ 0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,
+ 0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,
+ 0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,
+ 0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,
+ 0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,
+ 0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,
+ 0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,
+ 0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,
+ 0x00,0xe4,0xe8,0xa0,0x0c,0xf4,0xa9,0xa3,0x87,0x72,0x96,0x3d,0xa8,0x02,0x20,0x09,
+ 0x35,0x32,0x42,0x4f,0xde,0x38,0xa7,0x46,0xb8,0xed,0x53,0xaa,0xd2,0x00,0x8e,0x35,
+ 0x5e,0x82,0xa6,0x51,0x48,0xab,0x52,0xaa,0xd0,0x00,0xa2,0xa3,0x9d,0x70,0x41,0x20,
+ 0x91,0x8e,0x82,0xac,0x2a,0xd2,0xc9,0x19,0x29,0xf2,0xfd,0xe1,0xc8,0xa1,0x3b,0x31,
+ 0x34,0x67,0x32,0x81,0x27,0x00,0x81,0x8e,0x86,0x96,0x9f,0x26,0xe2,0xe4,0xc9,0x9d,
+ 0xc7,0xae,0x69,0x95,0xd7,0x15,0x64,0x73,0xb7,0x76,0x32,0x53,0x85,0x3e,0xf5,0x00,
+ 0x5f,0x5a,0x7c,0xc4,0xee,0xc5,0x47,0x5c,0xf3,0x77,0x67,0x44,0x55,0x90,0xed,0xc0,
+ 0x74,0xa4,0x27,0x34,0x94,0x54,0x0c,0x28,0xa2,0x8a,0x00,0x2a,0x68,0x46,0xd1,0xb8,
+ 0xd4,0x20,0x64,0xe2,0xae,0x42,0x22,0xda,0x44,0x85,0x87,0xa6,0x06,0x6a,0x92,0x6f,
+ 0x61,0x37,0x61,0x73,0x91,0xc7,0x35,0x13,0xf5,0xdc,0xc3,0x1f,0xad,0x5a,0xf2,0xa3,
+ 0xc0,0x11,0xce,0xbc,0x76,0x3c,0x7f,0x3e,0x29,0xaf,0x6d,0x29,0x19,0x1c,0x81,0xdc,
+ 0x00,0x47,0xe9,0x51,0x66,0xb7,0x1d,0xd3,0x21,0x8c,0x82,0x38,0x39,0xc7,0xbe,0x6a,
+ 0xb4,0xed,0xba,0x53,0xe8,0x38,0xab,0x25,0x7c,0x88,0xd8,0x9e,0xbd,0x6a,0x90,0xe4,
+ 0xd3,0x40,0x4b,0x08,0xe6,0xad,0x2d,0x41,0x18,0xc0,0xa9,0x94,0xd0,0xc0,0x94,0x1a,
+ 0x5c,0xd3,0x01,0xa3,0x34,0x80,0x76,0x68,0xcd,0x37,0x34,0x99,0xa0,0x07,0xe6,0x93,
+ 0x34,0xdc,0xd2,0x66,0x80,0x1d,0x9a,0x4c,0xd2,0x66,0x93,0x34,0x00,0xec,0xd2,0x66,
+ 0x9b,0x9a,0x33,0x40,0xc5,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xec,0xd2,0x66,0x9b,
+ 0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xc5,0x50,0x3a,0x54,0xe3,
+ 0xe5,0xb7,0x3e,0xe6,0xa3,0x41,0x52,0xb8,0xc4,0x6a,0x29,0x88,0x48,0xd7,0x8a,0x99,
+ 0x45,0x35,0x05,0x4a,0xa2,0x81,0x8e,0x51,0x52,0xa8,0xa6,0xad,0x48,0xb4,0x80,0x7a,
+ 0x8a,0x76,0x29,0x05,0x2d,0x02,0x22,0x92,0x14,0x72,0x0b,0x0e,0x47,0x43,0x50,0x3c,
+ 0xa1,0x3e,0x59,0x6d,0x91,0xc0,0xee,0x38,0x3f,0xa5,0x5b,0x34,0xc2,0xa1,0xba,0x8c,
+ 0xd3,0x4d,0xa1,0x35,0x72,0x91,0x6b,0x57,0xed,0x2c,0x7f,0x5e,0x45,0x30,0xdb,0x46,
+ 0xfc,0xa4,0x88,0x7e,0xbc,0x55,0xa7,0x81,0x0f,0x6c,0x54,0x1e,0x57,0x96,0x18,0x2e,
+ 0x30,0xdd,0x73,0x4e,0xe1,0xa9,0x03,0x59,0xb8,0xe4,0x29,0x23,0xd5,0x79,0xa8,0x8c,
+ 0x24,0x77,0xfc,0xea,0x42,0x25,0x43,0x90,0xd9,0xa3,0xed,0x33,0x0e,0x1f,0xe6,0xfa,
+ 0xd0,0x17,0x64,0x25,0x18,0x76,0xa6,0xd4,0xfe,0x7a,0x1f,0xbd,0x1e,0x3e,0x94,0x6e,
+ 0x8d,0xba,0x31,0x1f,0x5a,0x02,0xe4,0x51,0x8f,0x9b,0x35,0x2e,0x68,0xda,0x07,0x42,
+ 0x0d,0x37,0x70,0x3d,0x0d,0x6b,0x0d,0x11,0x9c,0xb5,0x1d,0x9a,0x37,0x32,0xe0,0xf2,
+ 0x3d,0xe8,0x52,0x37,0x0c,0xf4,0xa5,0x76,0xf9,0x58,0x33,0x03,0x9e,0x94,0xe5,0x2b,
+ 0x3b,0x02,0x88,0xdb,0x89,0x9d,0xe3,0x08,0xce,0xcc,0x09,0xee,0x73,0x55,0xd4,0x64,
+ 0xd2,0xb9,0xc9,0xfa,0x52,0xa0,0xac,0xa4,0xf5,0x2d,0x6c,0x4c,0xb5,0x20,0xa8,0xd6,
+ 0x9d,0x50,0x50,0xfc,0xd1,0x9a,0x6d,0x2d,0x00,0x2e,0x68,0xcd,0x25,0x14,0x00,0x66,
+ 0x8c,0xd1,0x82,0x7a,0x0a,0x70,0x8d,0xcf,0x45,0x34,0x00,0xcc,0xd1,0x52,0x8b,0x79,
+ 0x0f,0x6a,0x78,0xb2,0x90,0xf6,0xfd,0x28,0x02,0xb5,0x15,0x75,0x74,0xf6,0x3d,0x73,
+ 0x52,0x2e,0x9e,0x3b,0x91,0x40,0x19,0xb4,0x60,0x9e,0x80,0xd6,0xb2,0xd9,0x46,0x3a,
+ 0xfe,0x94,0xf1,0x6f,0x1a,0xf6,0xfc,0x69,0x85,0xcc,0x81,0x1b,0x9f,0xe1,0x34,0xe1,
+ 0x03,0x9e,0xd5,0xad,0xe5,0xa0,0xfe,0x11,0x4a,0x00,0xec,0x00,0xa0,0x2e,0x65,0x0b,
+ 0x49,0x0f,0x6a,0x91,0x2c,0x58,0xf5,0xfe,0x75,0xa2,0x69,0xa7,0x27,0xa9,0x3f,0x4a,
+ 0x02,0xe6,0x30,0x38,0x35,0x2c,0x87,0xe6,0x0b,0xe8,0x2a,0x1c,0xa9,0x20,0xd2,0x97,
+ 0x05,0xc9,0xcf,0x5a,0x00,0xb0,0xb5,0x2a,0xd5,0x55,0x71,0xeb,0x52,0x2c,0x9e,0xf4,
+ 0x01,0x65,0x6a,0x45,0x35,0x59,0x64,0xa9,0x16,0x5a,0x40,0x59,0x06,0x97,0x35,0x5c,
+ 0x4a,0x29,0x7c,0xd1,0xeb,0x40,0x12,0x93,0x40,0xa8,0x7c,0xd0,0x6a,0x45,0x39,0x5a,
+ 0x00,0x47,0x3c,0x54,0x0d,0x52,0x48,0xd5,0x0b,0x1a,0x00,0x6b,0x54,0x4c,0x33,0x4f,
+ 0x26,0x9a,0x68,0x02,0x26,0x8c,0x1e,0xd4,0xcd,0x85,0x4e,0x54,0xd4,0xd4,0x6c,0x27,
+ 0xa0,0x26,0x98,0x15,0x4a,0xb0,0x39,0x14,0xd2,0x08,0xab,0xc2,0xda,0x46,0xe8,0x86,
+ 0xa4,0x5d,0x36,0x66,0xfe,0x1c,0x0a,0x00,0xcd,0x0c,0xc3,0xbd,0x1b,0xc9,0xad,0x65,
+ 0xd1,0xd8,0xfd,0xe6,0xa9,0x57,0x47,0x84,0x7d,0xe3,0x9f,0xc6,0x9d,0xc4,0x61,0xf7,
+ 0xa9,0x91,0x4e,0x38,0x15,0xba,0x9a,0x75,0xb2,0x7f,0x08,0xfa,0xe2,0xa6,0x5b,0x78,
+ 0x97,0x8d,0x9d,0x29,0x01,0x84,0xb1,0x39,0xe8,0xa6,0xa5,0x5b,0x59,0x5b,0xf8,0x6b,
+ 0x68,0x22,0x8e,0x40,0x1f,0x5c,0x53,0xbe,0x9d,0x7d,0xe8,0x03,0x21,0x6c,0x25,0x35,
+ 0x2a,0xe9,0xad,0xfc,0x47,0x15,0xa4,0x08,0x6e,0x0f,0x06,0x9b,0x9c,0x70,0x68,0x02,
+ 0xa2,0xe9,0xc8,0x3a,0x9a,0x91,0x6c,0xa2,0x1f,0x5a,0xb0,0x0f,0xaf,0xe6,0x28,0x34,
+ 0x01,0x18,0x82,0x31,0xfc,0x34,0xed,0x88,0x3f,0x84,0x52,0xe6,0x9a,0xc7,0x8e,0x28,
+ 0x10,0xa4,0xe3,0x8e,0x28,0x07,0xeb,0xf4,0xa8,0x3c,0xd0,0x4e,0x2a,0x45,0xe4,0x71,
+ 0x40,0xc7,0x73,0xcf,0xa7,0xa5,0x07,0xa6,0x7a,0x8f,0x5a,0x06,0x09,0xc6,0xfc,0x1f,
+ 0x7a,0x4c,0x95,0x3d,0x28,0x00,0x3e,0xa4,0x63,0xde,0x93,0xa0,0xe3,0xf5,0xa3,0x9e,
+ 0xdc,0x7b,0x50,0x06,0x3a,0x1e,0x68,0x00,0xce,0x3a,0x7c,0xa7,0xd0,0xd2,0x12,0x0f,
+ 0x4a,0x31,0xea,0x29,0x0f,0xb7,0x5a,0x00,0x4c,0x60,0xf3,0x4b,0xd4,0x62,0x8f,0xaf,
+ 0x22,0x93,0xe9,0x92,0x28,0x03,0x9f,0x2d,0x4d,0xcd,0x3c,0xc6,0x47,0x26,0x90,0x29,
+ 0x3d,0xa9,0x8c,0x4c,0xd3,0x83,0x53,0x4f,0x06,0x81,0x40,0x8b,0x2b,0x9c,0x53,0xb2,
+ 0x6a,0x21,0x27,0xb5,0x28,0x93,0x27,0x81,0x48,0x09,0x77,0x1f,0x5a,0x4d,0xc6,0xaf,
+ 0x43,0xa6,0x3b,0xa0,0x67,0x60,0xb9,0xe7,0x15,0x3a,0x69,0x90,0x8f,0xbc,0xc4,0xd0,
+ 0x06,0x6c,0x44,0x96,0xab,0xa0,0xe1,0x6a,0xe2,0x5a,0x40,0x9d,0x13,0xf3,0xa9,0x02,
+ 0x22,0xf0,0x11,0x47,0xe1,0x40,0x19,0x66,0x37,0x73,0xf2,0xa9,0xa5,0x5b,0x19,0x9f,
+ 0xb6,0x2b,0x57,0x24,0x0c,0x8f,0xca,0x94,0x1d,0xe3,0x23,0xa8,0xed,0x45,0x87,0x73,
+ 0x35,0x74,0xc6,0xfe,0x26,0x02,0xa4,0x5d,0x3a,0x25,0xfb,0xc4,0x9a,0xba,0x47,0xff,
+ 0x00,0xaa,0x90,0x9c,0x0e,0x7f,0x03,0x40,0x88,0x16,0xd6,0x05,0xe8,0x99,0xa9,0x04,
+ 0x48,0xbd,0x10,0x52,0x6f,0xf9,0xb0,0x3f,0x2a,0x90,0x7f,0x9f,0x6a,0x00,0x40,0x00,
+ 0xe4,0x74,0xf6,0xe2,0x8e,0x73,0xd6,0x97,0x1d,0xe8,0xc6,0x69,0x80,0xd2,0x71,0x48,
+ 0x0e,0x6a,0xb5,0xc5,0xca,0x47,0x2e,0xc0,0xe3,0x77,0x71,0x9a,0x9e,0x16,0x0c,0x01,
+ 0xe7,0x9e,0x86,0x90,0x0f,0xc7,0x6a,0x5f,0xf2,0x29,0x70,0x7d,0x31,0xf5,0xa3,0x1e,
+ 0xf4,0xc0,0x6e,0x3f,0x0a,0x0f,0xbd,0x2f,0x43,0xc8,0xfc,0x69,0x0e,0x00,0xc9,0x3f,
+ 0x8d,0x00,0x43,0x70,0xe1,0x13,0x73,0x1c,0x7b,0xd4,0x31,0x4f,0xe6,0x1f,0x5a,0xcd,
+ 0xd5,0x99,0xde,0xeb,0x68,0x3b,0x95,0x47,0x18,0xa9,0x74,0x72,0xde,0x63,0x2e,0x38,
+ 0x1c,0xd2,0x03,0x5d,0x41,0xc7,0x50,0x05,0x38,0x0f,0x6f,0xc2,0x98,0x5b,0x61,0xce,
+ 0xc0,0x45,0x28,0x64,0x3d,0x10,0x50,0x02,0x90,0x3b,0x11,0x54,0x35,0x1b,0xcf,0xb3,
+ 0xc5,0x84,0x1f,0x31,0x38,0x19,0xed,0x57,0xb7,0xec,0x3b,0x5a,0x35,0xc7,0xa8,0xaa,
+ 0x57,0xd6,0x8b,0x70,0x41,0x24,0xa1,0x1c,0x02,0x46,0x41,0xfa,0xd3,0x03,0x36,0xd2,
+ 0xe1,0xe4,0xb8,0x0a,0xe7,0x3b,0xab,0x6d,0x71,0xc0,0x3f,0x9d,0x67,0x5a,0xe9,0xc6,
+ 0x29,0x83,0xb9,0x0d,0x83,0xc0,0x4e,0x95,0xa5,0x8e,0x06,0x40,0x3c,0x74,0xa0,0x00,
+ 0xaf,0xa8,0xa0,0x64,0x0c,0x67,0x23,0xde,0x80,0x48,0x1e,0xab,0xef,0x4a,0x46,0x79,
+ 0x1c,0x8f,0xe5,0x48,0x04,0xa4,0x34,0xa7,0x81,0xde,0x93,0xaf,0x7a,0x00,0x4e,0xbd,
+ 0xe8,0xa5,0xc5,0x21,0xa0,0x02,0x93,0xa7,0x3c,0xfd,0x45,0x2f,0xf9,0xff,0x00,0x3e,
+ 0xb4,0x87,0x9a,0x00,0xc3,0x77,0x14,0xdd,0xf8,0x07,0x15,0x16,0xe3,0x49,0x92,0x69,
+ 0x8c,0x52,0x79,0xa2,0x95,0x63,0x77,0xce,0xd5,0x24,0x0e,0xb4,0xe1,0x18,0xc7,0x27,
+ 0x14,0x00,0x8b,0x92,0x70,0x2a,0x78,0x53,0x32,0xa2,0xf5,0x24,0x81,0x4d,0x1c,0x0c,
+ 0x0f,0xce,0xac,0x59,0x2e,0x6f,0x21,0x1f,0xed,0x8a,0x40,0x74,0x2c,0xbc,0x9a,0x4c,
+ 0x7e,0x74,0xa4,0xf3,0x49,0x9a,0x04,0x28,0xc6,0x3d,0xbf,0x95,0x27,0x5f,0xf0,0xa4,
+ 0xef,0xef,0xfc,0xe9,0x0f,0x34,0x00,0xbc,0x8e,0x47,0x4f,0x4a,0x69,0x1c,0xe4,0x64,
+ 0x1f,0x5a,0x5c,0xff,0x00,0x9f,0x5a,0x3a,0x8c,0x8a,0x00,0x50,0x77,0x7a,0x06,0xf4,
+ 0xaa,0x9a,0x85,0xe0,0xb3,0x8b,0x3b,0x77,0x33,0x1c,0x00,0x6a,0xc9,0xe4,0x8a,0xa7,
+ 0xa9,0x5a,0x9b,0x98,0xc6,0xde,0x59,0x4e,0x70,0x69,0x81,0x52,0xc2,0xed,0xae,0x2e,
+ 0x36,0x9e,0x0f,0x5a,0xd9,0x5f,0xbb,0xc6,0x3f,0x3a,0xcd,0xd3,0x2c,0x0d,0xbb,0xb4,
+ 0x92,0xe3,0x71,0x18,0x00,0x76,0x15,0xa1,0x81,0xd8,0xd0,0x03,0x87,0x1e,0x98,0xa8,
+ 0xee,0x49,0x11,0x31,0x8c,0xf3,0x8e,0xd4,0xe0,0x40,0xe3,0x6f,0x3e,0xf4,0xbb,0xc9,
+ 0x04,0x64,0x8f,0x61,0xc5,0x00,0x72,0x9b,0x1f,0x7f,0xab,0x13,0xeb,0xc9,0x35,0xd2,
+ 0xc2,0x36,0x40,0x81,0xfa,0x80,0x01,0x23,0xd6,0x9f,0xe4,0x44,0xcf,0xbb,0x0b,0xbf,
+ 0xd7,0x60,0xcf,0xe7,0x4e,0x23,0x03,0x03,0x8c,0x50,0x03,0x4a,0x81,0xd4,0xb6,0x3d,
+ 0x45,0x18,0x00,0xe0,0xee,0xfc,0x4d,0x03,0x23,0xfc,0x29,0x78,0xc7,0x1c,0xaf,0xa7,
+ 0xa5,0x20,0x10,0x8c,0x75,0x1f,0x91,0xa4,0xe0,0x73,0xc7,0xd7,0x14,0xec,0x52,0x63,
+ 0xd3,0xf2,0xf5,0xa6,0x05,0x79,0x6d,0x23,0x9c,0x8f,0x35,0x50,0x91,0xd3,0xb7,0x1f,
+ 0x51,0x52,0x45,0x02,0xc0,0x81,0x10,0x2a,0x01,0xc8,0x51,0xc8,0x34,0xfe,0xdc,0x74,
+ 0xf4,0x3d,0xa8,0xe8,0x3a,0x64,0x50,0x01,0x9c,0xf6,0xc1,0xa6,0x91,0xea,0x3f,0x11,
+ 0x4f,0xed,0x91,0xcd,0x20,0xa0,0x04,0x04,0xff,0x00,0xbc,0x3f,0x5a,0x00,0xc0,0xca,
+ 0xf2,0x3b,0xad,0x29,0x5f,0x4f,0xd2,0x93,0x9e,0xe0,0x9f,0x71,0xd6,0x90,0x0b,0x9d,
+ 0xc3,0x20,0xe7,0xf9,0x8a,0x6e,0x73,0xf5,0xfe,0x74,0xa5,0x4e,0x72,0x3a,0xfa,0xd1,
+ 0xd7,0x20,0xf0,0xde,0x9e,0xb4,0x00,0x9c,0x73,0xeb,0xde,0x9b,0x8c,0x72,0xbc,0x53,
+ 0x8f,0xbf,0x6a,0x4f,0xf3,0xfe,0x7d,0x28,0x00,0x52,0x09,0xc7,0x46,0xf4,0xa0,0x8c,
+ 0x7e,0x14,0x84,0x03,0xfe,0x71,0x8f,0xf0,0xa0,0x31,0x1c,0x37,0x20,0x77,0xee,0x28,
+ 0x00,0xa4,0x34,0xe2,0x3b,0x8e,0x9f,0xe7,0xf2,0xa6,0xff,0x00,0x4f,0xf3,0xf8,0x50,
+ 0x00,0x69,0x3f,0xad,0x2d,0x21,0x00,0xf0,0x7f,0x2a,0x00,0xc2,0x74,0xd8,0xd8,0xc7,
+ 0xe9,0x4d,0x15,0x79,0xa2,0x57,0x1b,0x76,0xfd,0x08,0xaa,0xf3,0x40,0xd0,0xb0,0x0c,
+ 0x31,0x9a,0x0b,0x68,0x8c,0x12,0x07,0x14,0xaa,0x41,0xeb,0x40,0x14,0xa0,0x0a,0x09,
+ 0x0c,0xf3,0xc5,0x5b,0xd3,0x06,0xeb,0xf8,0xbd,0x89,0x3f,0xa5,0x55,0x15,0x77,0x48,
+ 0x5c,0xde,0x83,0xe8,0xa4,0xd0,0x06,0xcb,0x52,0x70,0x7f,0x1a,0x53,0x49,0xef,0xd8,
+ 0xd0,0x20,0x34,0x75,0xfa,0xd1,0x49,0xd6,0x80,0x0c,0x51,0xdf,0xfc,0xf3,0x40,0x39,
+ 0xe0,0xf5,0xa3,0x93,0xf2,0x9e,0xbd,0x8f,0xad,0x00,0x06,0x80,0x48,0xe9,0x47,0xb1,
+ 0xeb,0x46,0xd6,0x3d,0x06,0x7e,0x94,0x00,0xbd,0xbd,0xe9,0xa7,0xae,0x45,0x4a,0xb1,
+ 0x39,0xf4,0x1f,0x8d,0x3c,0x5b,0xb1,0xff,0x00,0xf5,0x1a,0x60,0x57,0xeb,0xdb,0xea,
+ 0x29,0x4a,0xd5,0x91,0x6a,0xde,0x8d,0xf9,0x52,0xfd,0x9d,0x47,0x52,0x3f,0x16,0x14,
+ 0x01,0x50,0xaf,0xff,0x00,0x58,0xd2,0x83,0xeb,0xd6,0xad,0x08,0xa3,0x1f,0xc4,0xbf,
+ 0x9e,0x69,0xac,0xd6,0xa9,0xf7,0xa5,0x41,0xfa,0x7f,0x3a,0x00,0xaf,0x8a,0x36,0x1c,
+ 0xe4,0x53,0xda,0xfa,0xc5,0x3a,0xcc,0x0f,0xd3,0x15,0x13,0xeb,0x36,0x29,0xd0,0xb3,
+ 0x7e,0x26,0x80,0x1f,0xe5,0xb7,0xf7,0x4f,0xd2,0x97,0xc9,0x3e,0xd5,0x51,0xfc,0x41,
+ 0x6c,0x3e,0xe4,0x39,0xfa,0x8a,0x85,0xfc,0x48,0xdf,0xf2,0xce,0x10,0xb4,0x01,0xa4,
+ 0x20,0x27,0xff,0x00,0xac,0x29,0xe2,0xd9,0x8f,0x66,0xfc,0xab,0x09,0xfc,0x43,0x74,
+ 0xdd,0x36,0xaf,0xd0,0x54,0x0f,0xac,0x5e,0xbf,0x59,0x4f,0xe5,0x40,0x1d,0x2f,0xd9,
+ 0x71,0xd4,0x63,0xea,0x68,0x30,0xa2,0xf2,0xce,0x83,0xea,0x6b,0x93,0x6b,0xdb,0xa7,
+ 0xeb,0x2b,0xff,0x00,0xdf,0x46,0xa2,0x69,0x24,0x27,0x25,0xbf,0x5a,0x2c,0x07,0x5c,
+ 0x65,0xb4,0x4f,0xbd,0x73,0x18,0xf6,0x15,0x13,0x6a,0x1a,0x7a,0x75,0x99,0x8f,0xd1,
+ 0x6b,0x94,0x3b,0x8f,0x7a,0x4e,0x7d,0x69,0xd8,0x0e,0x9d,0xb5,0x9b,0x15,0x38,0x0b,
+ 0x2b,0x7d,0x0f,0xff,0x00,0x5e,0xa5,0x9b,0x6c,0xaa,0x92,0x21,0x38,0x61,0x95,0xfa,
+ 0x1a,0xe4,0xeb,0xa6,0xb4,0x60,0xfa,0x6c,0x04,0xe3,0x84,0x03,0x9f,0x6e,0x29,0x00,
+ 0xe0,0xdd,0x03,0x75,0xec,0x68,0x23,0x14,0x1e,0x9e,0xab,0x49,0x9c,0x7b,0x8f,0xf3,
+ 0xd6,0x90,0x09,0xfe,0x7f,0xcf,0xf8,0x52,0x1f,0xf3,0xfe,0x7f,0xa5,0x38,0x8f,0x4f,
+ 0xf3,0xfe,0x34,0x9d,0x7f,0x1a,0x00,0x68,0xca,0xf2,0xbf,0x95,0x28,0x21,0xba,0x70,
+ 0x47,0x6a,0x29,0xa4,0x67,0xfa,0x63,0xfc,0xfe,0x94,0x00,0xa7,0x8f,0xf3,0x8f,0xff,
+ 0x00,0x55,0x21,0x19,0x1f,0xe7,0xfc,0x8a,0x04,0x9d,0x03,0xfd,0x03,0x0a,0x71,0x18,
+ 0xc7,0xe8,0x45,0x00,0x50,0x69,0x41,0x18,0x55,0x0b,0x50,0xcc,0x73,0xb7,0x3c,0xd4,
+ 0xa1,0x41,0x15,0x0c,0xc9,0xf3,0x50,0x8d,0xa5,0xb0,0xcc,0x52,0x62,0x8c,0x95,0xa7,
+ 0x2b,0x03,0x4c,0xc8,0x69,0xab,0xfa,0x30,0xff,0x00,0x49,0x73,0xe8,0x87,0xf9,0x8a,
+ 0xa4,0xc2,0xb4,0x34,0x65,0xc3,0x4c,0x7f,0xd9,0x02,0x80,0x34,0x8d,0x20,0xeb,0xc7,
+ 0x5f,0xe7,0x4a,0x69,0x0f,0x23,0xe9,0x48,0x41,0xd3,0xe9,0xdc,0x7a,0x50,0x48,0xfc,
+ 0xfb,0xd0,0x0e,0x7a,0x7d,0xee,0xfe,0xf4,0x9d,0xb8,0xe9,0xfc,0xa8,0x00,0xc0,0xe9,
+ 0xfe,0x45,0x1d,0x78,0x34,0x99,0xc7,0x04,0xfd,0x0f,0xa5,0x2f,0xd7,0x83,0x40,0x0b,
+ 0x9e,0xcd,0xf8,0x1f,0x5a,0x64,0xae,0xd1,0xae,0xe1,0xd4,0x7b,0x53,0xb1,0xeb,0xd2,
+ 0xa2,0xb9,0xff,0x00,0x55,0xfd,0x68,0x02,0x84,0x9a,0xed,0xdc,0x6d,0x80,0xc3,0xf2,
+ 0xa8,0x9b,0x5e,0xbc,0x6f,0xe2,0xac,0xf9,0x8e,0xe6,0x53,0xed,0x49,0x4c,0x0b,0xaf,
+ 0xac,0x5e,0x3f,0xf1,0x81,0xf4,0x51,0x51,0x36,0xa1,0x76,0xdf,0xf2,0xd9,0xc7,0xd1,
+ 0xb1,0x55,0xe8,0xa6,0x03,0x9a,0x69,0x9f,0xef,0x48,0xc7,0xea,0x69,0xb9,0x63,0xd5,
+ 0x8d,0x2d,0x2e,0x29,0xd8,0x06,0x6d,0xf7,0xa3,0x6d,0x3f,0x14,0x62,0x9d,0x80,0x66,
+ 0xd1,0x4b,0x8a,0x76,0xda,0x36,0x9f,0x4a,0x2c,0x03,0x71,0x45,0x4a,0xb6,0xf3,0x3f,
+ 0xdc,0x89,0xdb,0xe8,0xa4,0xd3,0x24,0x8d,0xa3,0x72,0x8e,0xa5,0x58,0x75,0x04,0x60,
+ 0x8a,0x00,0x65,0x14,0xb4,0x94,0x08,0x29,0x29,0x69,0x28,0x01,0xa6,0xba,0x3d,0x2d,
+ 0xb3,0xa6,0x47,0xea,0x09,0x1f,0xad,0x73,0xad,0x5b,0xfa,0x2b,0x6e,0xd3,0xd8,0x7a,
+ 0x39,0xfe,0x42,0xa5,0x8c,0xb3,0xdf,0x8c,0x83,0xdc,0x51,0x9f,0x4e,0x94,0x11,0x9f,
+ 0xf1,0x14,0x67,0xd4,0xf3,0xeb,0x52,0x02,0x63,0x00,0xfa,0x7a,0x50,0x46,0x79,0x1f,
+ 0xe7,0xfc,0xfa,0xd2,0xe0,0xf5,0xa4,0xe9,0xfe,0x71,0xff,0x00,0xea,0xa0,0x06,0x9f,
+ 0xf3,0xfe,0x7b,0xd2,0x1f,0xf3,0xfe,0x7b,0xd3,0xb8,0x3c,0x74,0xfd,0x3f,0xfd,0x54,
+ 0x84,0x11,0xfe,0x7f,0xce,0x28,0x01,0xa4,0x7a,0xf7,0xfc,0x7f,0xfd,0x74,0x83,0x29,
+ 0xd3,0x95,0x3d,0xa9,0x79,0x5f,0x71,0xe8,0x7b,0x51,0xdb,0x8e,0x47,0x70,0x68,0x02,
+ 0x90,0x5e,0x7a,0xd4,0x6e,0x39,0xeb,0x52,0x6e,0xc0,0xf7,0xa8,0xf9,0x26,0x9a,0x35,
+ 0x90,0xdd,0xa0,0xd3,0x1e,0x32,0x3a,0x54,0xb8,0xa5,0xc5,0x33,0x32,0xb8,0x6c,0x75,
+ 0xad,0x6d,0x23,0xee,0x4c,0x7e,0x83,0xf9,0xd6,0x73,0x46,0x0d,0x69,0xe9,0x08,0x56,
+ 0xda,0x4f,0x77,0xfe,0x94,0x98,0x8b,0x86,0x90,0xe4,0x1e,0x94,0xa7,0xff,0x00,0xd6,
+ 0x29,0x3b,0x71,0xfa,0xd2,0x01,0x3a,0xf2,0xbd,0x68,0x1c,0xf3,0xdf,0xb8,0xa3,0x83,
+ 0xce,0x71,0x48,0x7a,0xe4,0x70,0x47,0x51,0x40,0x0b,0xc1,0x19,0xed,0x40,0xf4,0x34,
+ 0x03,0x9f,0x99,0x7a,0xf7,0x14,0xa3,0x91,0x91,0xf9,0x50,0x02,0x63,0x15,0x0d,0xd7,
+ 0xfa,0xa3,0x56,0x2a,0xbd,0xdf,0xfa,0xa3,0x40,0x1c,0xdc,0x83,0x05,0x7e,0x9f,0xd6,
+ 0x96,0x89,0xbe,0xfa,0x7f,0xba,0x28,0xaa,0x00,0xa2,0x8a,0x5a,0x60,0x15,0xd1,0xe8,
+ 0x7a,0x15,0xb6,0xa1,0x65,0xe7,0xcc,0xf2,0x86,0xdc,0x57,0x0a,0x40,0x1f,0xca,0xb9,
+ 0xd1,0x5d,0xaf,0x85,0x3f,0xe4,0x12,0x7f,0xeb,0xa9,0xfe,0x42,0x98,0x02,0xf8,0x7f,
+ 0x4a,0x4c,0xe5,0x59,0xf1,0xd7,0xe7,0xff,0x00,0x0a,0x7f,0xf6,0x6e,0x95,0x0e,0x3f,
+ 0xd1,0x13,0xfe,0x04,0xc7,0xfa,0x9a,0x86,0xf5,0xe0,0x5b,0xf9,0x0c,0xe8,0xc5,0x7f,
+ 0xba,0x3b,0xfe,0xb4,0xd7,0xbc,0xb3,0xdc,0x36,0xda,0x97,0x03,0xa1,0x69,0x38,0xed,
+ 0xfe,0x15,0x56,0x15,0xd1,0x75,0x60,0xb1,0x8c,0x02,0xb6,0x76,0xe0,0x1e,0x87,0x68,
+ 0xa1,0xef,0x60,0x83,0x0a,0xa9,0x1a,0x93,0xd3,0x67,0xff,0x00,0x5a,0xa9,0xfd,0xb2,
+ 0xdf,0xaa,0xda,0x40,0x31,0xcf,0x20,0x9f,0xe4,0xb5,0x1c,0xd7,0xb1,0x60,0x79,0x16,
+ 0xab,0xe6,0x64,0xb1,0x65,0x53,0xc1,0xc1,0xc7,0xa5,0x3e,0x51,0x29,0xa3,0x62,0xca,
+ 0x65,0xbb,0x81,0x67,0x08,0x54,0x37,0x4c,0xf7,0xae,0x33,0xc4,0x89,0xb7,0x5b,0xb8,
+ 0xf7,0xc1,0xfd,0x05,0x76,0x1a,0x3a,0xba,0xe9,0xd1,0xab,0xf5,0x1e,0xd5,0xca,0xf8,
+ 0xa9,0x71,0xac,0x31,0xf5,0x45,0x3f,0xa5,0x67,0xd4,0xbb,0xdd,0x18,0x94,0x94,0xa6,
+ 0x8a,0x64,0x89,0x45,0x14,0x50,0x03,0x5b,0xa5,0x6d,0xe8,0x27,0x36,0xf3,0x2f,0xa1,
+ 0x07,0xf4,0xff,0x00,0xeb,0x56,0x2b,0x74,0xad,0x6f,0x0f,0xb7,0xcd,0x3a,0xfa,0x80,
+ 0x7f,0x9f,0xf8,0xd4,0xb1,0x9a,0x4d,0x9c,0xf7,0xcd,0x27,0xeb,0x4a,0x71,0xd0,0x51,
+ 0xc5,0x48,0x00,0x19,0xe4,0x7e,0x54,0xdf,0xf3,0xfe,0x7f,0xc2,0x82,0x49,0xe9,0x41,
+ 0xe7,0xaf,0x5e,0xf4,0x00,0x87,0x9f,0xe9,0x8f,0xf3,0xfa,0x52,0x06,0x20,0xff,0x00,
+ 0x9f,0xf3,0xf8,0x52,0x9e,0x7a,0xff,0x00,0x9f,0xf1,0xa4,0x3e,0xff,0x00,0xe3,0xff,
+ 0x00,0xeb,0xa0,0x03,0x83,0xca,0xfe,0x5f,0xe1,0x4c,0x23,0x1c,0x83,0x83,0xfe,0x7f,
+ 0x2a,0x71,0xe3,0x9f,0xf3,0xff,0x00,0xd7,0xa3,0x83,0xfe,0x7f,0xce,0x68,0x02,0x93,
+ 0x2e,0xe2,0x70,0x2a,0x3a,0x99,0xf0,0xa3,0x03,0xbd,0x31,0x57,0x34,0xd1,0xac,0xf7,
+ 0x1a,0x05,0x18,0xe6,0xa4,0x0b,0x49,0x8a,0x66,0x63,0x42,0xd6,0xa5,0x80,0xc5,0xa7,
+ 0x5c,0x12,0xc6,0xb3,0xb1,0x5a,0x76,0xa3,0x16,0x69,0xc7,0x52,0x7f,0x9d,0x26,0x22,
+ 0x4c,0xf7,0xfc,0x08,0xa3,0x19,0xfa,0xd1,0x8f,0xc7,0xd3,0xdc,0x52,0x73,0xd4,0x75,
+ 0x1f,0xad,0x20,0x02,0x4e,0x79,0x1c,0x8e,0xbe,0xe2,0x90,0x73,0xdf,0x91,0xd2,0x94,
+ 0xf3,0xfd,0x0d,0x21,0x19,0xf6,0x34,0x00,0x9c,0x83,0x91,0xc1,0x1d,0x45,0x3b,0xaf,
+ 0x23,0xaf,0x71,0x48,0x3e,0x6f,0xad,0x1d,0x39,0x14,0x00,0xee,0xa2,0xab,0xdd,0xff,
+ 0x00,0xaa,0x35,0x3d,0x57,0xbd,0x3f,0xba,0x3f,0x4a,0x00,0xe7,0x65,0xfb,0xeb,0xfe,
+ 0xea,0xff,0x00,0x2a,0x5a,0x49,0x7f,0xd6,0x8f,0xa0,0xfe,0x54,0xb4,0xc6,0x14,0x51,
+ 0x45,0x31,0x0a,0x2b,0xb4,0xf0,0x9f,0xfc,0x82,0x9f,0xfe,0xba,0x9f,0xe4,0x2b,0x8c,
+ 0x15,0xd9,0x78,0x4b,0xfe,0x41,0x72,0x7f,0xd7,0x53,0xfc,0x85,0x37,0xb0,0x0f,0xd4,
+ 0x24,0x56,0xb8,0x97,0x04,0x12,0xa3,0xf5,0xaa,0x3b,0x9d,0x42,0xb9,0x72,0x09,0xce,
+ 0x07,0xe3,0x8f,0xe9,0x56,0xae,0xd1,0xe3,0xb9,0x96,0x4c,0x15,0x3b,0x89,0xf4,0xc8,
+ 0xaa,0xe5,0x5a,0x79,0xf0,0xb9,0x66,0x6e,0xe7,0x8c,0xd5,0xbd,0x11,0xc1,0x55,0xea,
+ 0xfb,0x8b,0x3c,0xdb,0x94,0x2a,0xb1,0xe9,0xcf,0x02,0xb3,0x5a,0x66,0x59,0xb8,0x6c,
+ 0xe3,0xd6,0xb4,0x9a,0xd2,0x40,0x8c,0xd9,0x52,0x17,0xae,0x18,0x1a,0xac,0x65,0xb6,
+ 0x8c,0x8c,0x88,0xcb,0xf5,0x39,0x5c,0xd2,0x4f,0x52,0x29,0xb6,0xa5,0xef,0x23,0xa0,
+ 0xd2,0x5c,0xbe,0x9f,0x1b,0x1e,0xf9,0xae,0x6b,0xc5,0xeb,0x8d,0x4d,0x0f,0xac,0x43,
+ 0xf9,0x9a,0xe9,0x74,0x96,0x0d,0x62,0xa5,0x71,0x8c,0x9c,0x62,0xb9,0xff,0x00,0x18,
+ 0xaf,0xfa,0x5c,0x0d,0xeb,0x19,0x1f,0xad,0x4f,0x53,0xbe,0x9f,0xc0,0x8e,0x6c,0xd2,
+ 0x52,0x9a,0x4a,0x65,0x09,0x45,0x2d,0x25,0x00,0x21,0xe9,0x5a,0x3a,0x01,0xff,0x00,
+ 0x4b,0x71,0xea,0x87,0xf9,0x8a,0xce,0x3d,0x2a,0xee,0x88,0xd8,0xd4,0x14,0x7a,0xa9,
+ 0x1f,0xa5,0x26,0x33,0x71,0xf3,0x9f,0xe4,0x4d,0x37,0x9f,0x41,0xfe,0x34,0xf7,0xc0,
+ 0x63,0xd2,0x99,0x8c,0xf4,0xfc,0xaa,0x00,0x5c,0x86,0xf6,0x3e,0x94,0xdf,0xf3,0xe9,
+ 0xff,0x00,0xea,0xa0,0x8c,0xe3,0xfa,0x7f,0x9f,0xd2,0x8f,0xf3,0xfe,0x7f,0xc2,0x80,
+ 0x03,0xfe,0x7b,0x7f,0xfa,0xa9,0xbf,0xe7,0xd3,0xff,0x00,0xd5,0x4b,0xfe,0x7f,0xcf,
+ 0xad,0x14,0x00,0xd3,0xfe,0x7f,0xcf,0x6a,0x43,0x4e,0xff,0x00,0x23,0xfc,0xff,0x00,
+ 0x4a,0x4f,0xa7,0xe1,0x8f,0xf3,0xfa,0x50,0x05,0x32,0x39,0xa5,0x15,0x69,0x2d,0xd5,
+ 0xc1,0x27,0x23,0x9e,0x31,0x41,0xb4,0xf4,0x6f,0xcc,0x53,0x34,0x96,0xe5,0x62,0x0d,
+ 0x26,0x39,0xab,0x0d,0x6c,0xe3,0xa6,0x0f,0xe3,0x51,0x18,0x9c,0x75,0x53,0x41,0x0c,
+ 0x65,0x6a,0x5b,0xf1,0x6b,0x10,0xf6,0xfe,0xb5,0x96,0x6b,0x56,0x2e,0x2d,0xa2,0xff,
+ 0x00,0x74,0x50,0xc4,0x03,0xe5,0x38,0x61,0xf2,0x9e,0x94,0xac,0x0a,0x9f,0xf3,0xcd,
+ 0x19,0x19,0xd9,0x27,0x43,0xd0,0xd0,0xa4,0xa9,0xf2,0xdc,0xff,0x00,0xba,0x69,0x00,
+ 0x9f,0xc8,0xf5,0xa4,0xfe,0x7f,0xce,0x94,0x82,0xa4,0x9c,0x7d,0x45,0x04,0x64,0x64,
+ 0x1a,0x00,0x43,0xc8,0xc8,0xa5,0x07,0x3f,0x5a,0x40,0x7b,0xf7,0xee,0x29,0x71,0xdc,
+ 0x50,0x02,0xd5,0x4b,0xf3,0xfb,0x86,0xfa,0x7a,0xd5,0xac,0x7f,0x9f,0x5a,0xa9,0xa8,
+ 0xf1,0x6e,0xff,0x00,0x4a,0x00,0xc0,0x9b,0xfd,0x77,0xe0,0x3f,0x95,0x2d,0x24,0xdf,
+ 0xeb,0xcd,0x2d,0x31,0x85,0x14,0x51,0x4c,0x43,0x85,0x76,0x3e,0x12,0xff,0x00,0x90,
+ 0x6c,0xbf,0xf5,0xd4,0xff,0x00,0x21,0x5c,0x70,0xae,0xc3,0xc2,0x3f,0xf1,0xe1,0x37,
+ 0xfd,0x74,0xfe,0x82,0x9f,0x40,0x24,0xd5,0x03,0x35,0xd1,0x22,0x40,0x9c,0x85,0xea,
+ 0x33,0xfa,0xd3,0x0d,0xa2,0x88,0xb9,0x90,0x99,0x43,0x05,0xcf,0xb1,0xef,0x8a,0xd2,
+ 0xbc,0x86,0x2b,0x86,0x55,0x62,0x81,0x93,0x9c,0xb5,0x66,0xc8,0x5d,0xa6,0x0e,0xdb,
+ 0x43,0x28,0x1c,0x8e,0x71,0x55,0xba,0xb1,0xcd,0x55,0x42,0x1e,0xf3,0x43,0x1e,0xd0,
+ 0x41,0x6b,0x21,0x3c,0x31,0x7e,0x3e,0x94,0xdb,0x38,0x99,0xa2,0x53,0xb4,0x91,0x93,
+ 0x9e,0x3d,0xea,0x5b,0x89,0xde,0x48,0xf6,0x99,0x03,0x03,0xd7,0xe5,0x22,0xab,0x7c,
+ 0xc7,0x6a,0xee,0xe3,0xea,0x70,0x2a,0x69,0xc5,0xc0,0xc6,0x75,0xe3,0xcf,0x74,0x6d,
+ 0x69,0x99,0x10,0xc8,0xb8,0xc6,0x24,0x35,0x87,0xe3,0x24,0xf9,0xad,0x5f,0xd9,0x87,
+ 0xf2,0xad,0xad,0x2d,0x3c,0x8b,0x62,0x19,0x89,0xdc,0xe4,0xfd,0xdc,0x62,0xb2,0x7c,
+ 0x61,0xb5,0xad,0x6d,0xd8,0x10,0x70,0xc4,0x7e,0x94,0x75,0x3b,0x60,0x9f,0x2e,0xa7,
+ 0x24,0x69,0x29,0x4d,0x25,0x31,0x85,0x25,0x14,0x50,0x01,0x56,0x34,0x96,0xdb,0xa9,
+ 0x45,0xf5,0x23,0xf4,0xaa,0xf5,0x25,0x8b,0x6d,0xbf,0x84,0xff,0x00,0xd3,0x41,0xfc,
+ 0xe9,0x31,0x9d,0x34,0x84,0x67,0x9c,0xe2,0xa3,0x20,0x83,0xea,0x3d,0x6a,0x59,0x07,
+ 0x35,0x1f,0xb7,0x4a,0x80,0x17,0xaf,0x5e,0xfd,0xfb,0x1a,0x69,0xef,0x9f,0xc7,0x3f,
+ 0xe7,0xf5,0xa3,0x07,0xa0,0xfc,0x47,0xad,0x1e,0x9c,0xe7,0xd3,0xfc,0xff,0x00,0x4a,
+ 0x00,0x69,0xef,0x9f,0xd7,0xfc,0xfe,0xb4,0x87,0xdf,0xf5,0xff,0x00,0x3f,0xad,0x3b,
+ 0xe9,0xfa,0x7f,0x4f,0xf0,0xa4,0xf4,0xfe,0x9f,0xe7,0xf4,0xa0,0x04,0xf5,0xcf,0xe3,
+ 0x9f,0xeb,0xfe,0x34,0x87,0xbf,0xeb,0x9f,0xeb,0xfe,0x34,0xbf,0xe4,0x63,0xfa,0x7f,
+ 0x85,0x27,0xa7,0xe9,0x8f,0xe9,0xfe,0x14,0x01,0x24,0x6c,0x3a,0x73,0x9a,0x92,0xa0,
+ 0x40,0x7d,0x31,0x53,0x03,0x48,0xd2,0x5b,0x8b,0x49,0x4b,0x9a,0x43,0x41,0x22,0x10,
+ 0x0f,0x51,0x9f,0xa8,0xab,0x04,0x7c,0xaa,0xa3,0x81,0xb4,0x7e,0x15,0x5f,0x3c,0xd5,
+ 0x97,0xeb,0x8c,0xe3,0x8a,0x62,0x64,0x58,0x07,0xf7,0x72,0x77,0xfb,0xa6,0x8c,0x12,
+ 0x36,0xbf,0x55,0xe8,0x69,0x58,0x03,0xf2,0xb7,0xd4,0x1f,0x4a,0x39,0x3c,0x37,0xde,
+ 0x1f,0xa8,0xa0,0x40,0x1b,0x3c,0x77,0xe9,0xf5,0xa6,0xfd,0xd3,0xea,0x0d,0x04,0x66,
+ 0x94,0x12,0xc3,0xa6,0x7d,0x68,0x01,0x3d,0x30,0x7e,0x86,0x94,0x50,0x72,0x28,0xa0,
+ 0x05,0xf6,0xaa,0x3a,0x9f,0xfc,0x7b,0xbf,0xfb,0xa6,0xae,0xd5,0x0d,0x50,0xff,0x00,
+ 0xa3,0x3f,0xfb,0xbe,0xb9,0xa0,0x0c,0x49,0xbf,0xe3,0xe5,0xbe,0xb4,0xb4,0x93,0xff,
+ 0x00,0xc7,0xd3,0xfd,0x69,0x69,0x8c,0x28,0xa2,0x8a,0x60,0x38,0x57,0x5f,0xe1,0x0f,
+ 0xf8,0xf2,0x9b,0xfe,0xba,0x7f,0x4a,0xe3,0xc5,0x75,0xde,0x10,0x3f,0xe8,0x93,0xff,
+ 0x00,0xbe,0x3f,0x95,0x02,0x37,0x7c,0x84,0xf3,0x19,0xc8,0xc9,0x6c,0x75,0xf6,0xa8,
+ 0xd6,0xca,0x35,0x89,0x50,0x76,0x18,0xcf,0xad,0x58,0xa2,0x8b,0xb1,0x4a,0x2a,0x4a,
+ 0xcd,0x10,0x2d,0xaa,0x0c,0xe7,0x04,0x9e,0xf8,0xa8,0x64,0xd3,0x91,0xd4,0xfc,0xc7,
+ 0x3d,0xb8,0x15,0x76,0x8a,0x2e,0xc8,0x74,0x60,0xd5,0x9a,0x32,0x61,0xd2,0xe7,0x03,
+ 0x12,0x4f,0xf2,0xe7,0x21,0x47,0x18,0xac,0xff,0x00,0x14,0x5a,0x08,0x74,0xe8,0x9c,
+ 0x12,0x48,0x93,0x1d,0x7d,0x8d,0x74,0xd5,0x8d,0xe2,0xa5,0xdd,0xa3,0x13,0xfd,0xd7,
+ 0x53,0x4e,0xed,0x9a,0xad,0x15,0x91,0xc3,0x9a,0x4a,0x53,0x4d,0xa6,0x48,0x51,0x45,
+ 0x25,0x00,0x2d,0x10,0xb6,0xdb,0x84,0x3e,0x8c,0x0d,0x25,0x34,0xf0,0xd4,0x98,0xd1,
+ 0xd7,0x4a,0x39,0xed,0xf8,0xd4,0x7d,0xb1,0x9a,0x91,0x8e,0xe4,0x04,0x1e,0xa3,0xd2,
+ 0xa3,0xef,0xef,0xe9,0x50,0x02,0x63,0x1d,0x69,0x0f,0x7f,0xd7,0x3f,0xe7,0xf5,0xa7,
+ 0x73,0xdb,0xa8,0xed,0x48,0x7d,0xa8,0x01,0x0d,0x21,0xf7,0xfd,0x68,0xff,0x00,0x3e,
+ 0xbf,0xfe,0xb1,0x48,0x7a,0xff,0x00,0x9f,0xf3,0x8a,0x00,0x3d,0x7f,0xaf,0xf9,0xfd,
+ 0x69,0x0f,0x7f,0xd7,0x3f,0xd7,0xfc,0x69,0x69,0x3f,0xcf,0x1f,0xd2,0x80,0x24,0x06,
+ 0x9c,0x3d,0xea,0x31,0x52,0x03,0xc5,0x22,0x85,0xa4,0x26,0x8a,0x42,0x71,0x40,0x06,
+ 0x6a,0xcc,0x98,0xdd,0xc9,0xe2,0xa9,0x83,0xf3,0x0a,0xbb,0x27,0xde,0x3d,0xe9,0x88,
+ 0x60,0xe7,0xe5,0x07,0x9e,0xa0,0xd2,0x11,0xcf,0x3d,0x68,0x24,0x95,0xc8,0xe0,0x8a,
+ 0x5f,0xbe,0xb9,0x07,0x9a,0x04,0x27,0x51,0x9c,0x7d,0x69,0xbc,0x8e,0x47,0x5a,0x50,
+ 0x70,0x72,0x0f,0x1d,0xc5,0x07,0x8f,0xa5,0x00,0x2f,0x50,0x0f,0xaf,0xe9,0x45,0x34,
+ 0x1d,0xbd,0x79,0x53,0xde,0x9c,0x7e,0xf6,0x3f,0xc9,0xa0,0x04,0xac,0xfd,0x54,0xe2,
+ 0xdd,0xfe,0x95,0xa1,0xfe,0x45,0x66,0xea,0xc7,0xfd,0x1d,0xb1,0x40,0x18,0xd2,0x9c,
+ 0xdc,0xbf,0xfb,0xc6,0x9d,0x4c,0x7f,0xf5,0xc7,0xeb,0x4f,0xa6,0x30,0xa2,0x92,0x8a,
+ 0x00,0x70,0xad,0x4d,0x27,0x5a,0x93,0x4c,0x8e,0x44,0x48,0x95,0xf7,0x90,0x7e,0x63,
+ 0xd2,0xb2,0xa8,0xa6,0x07,0x48,0x7c,0x5b,0x71,0xda,0xde,0x2f,0xd7,0xfc,0x69,0xa7,
+ 0xc5,0x97,0x5d,0xa1,0x87,0xf2,0x3f,0xe3,0x5c,0xf6,0x68,0xcd,0x16,0x41,0x73,0xa0,
+ 0x3e,0x2c,0xbc,0xff,0x00,0x9e,0x50,0x7e,0x47,0xfc,0x69,0xa7,0xc5,0x77,0xbf,0xdc,
+ 0x87,0xfe,0xf9,0x3f,0xe3,0x58,0x39,0xa4,0xa7,0x64,0x17,0x37,0x4f,0x8a,0xaf,0xff,
+ 0x00,0xbb,0x0f,0xfd,0xf3,0xff,0x00,0xd7,0xaa,0xd7,0xda,0xf5,0xdd,0xf5,0xb3,0x41,
+ 0x2f,0x97,0xb1,0x88,0x27,0x0b,0x8a,0xcb,0xa4,0xa2,0xc2,0xb8,0x1a,0x4a,0x29,0x29,
+ 0x88,0x29,0x29,0x69,0x28,0x00,0xa6,0xb7,0x5a,0x75,0x35,0xba,0xd2,0x63,0x47,0x57,
+ 0x11,0xdf,0x6b,0x11,0xe7,0x94,0x1d,0x3e,0x94,0xdc,0xe7,0xe5,0x6e,0xbd,0x88,0xa6,
+ 0x59,0x9d,0xda,0x7c,0x1d,0xfe,0x40,0x3a,0xd4,0x9c,0x36,0x47,0xf3,0xa9,0x00,0xcf,
+ 0x66,0xea,0x3a,0x11,0x48,0x4e,0x68,0x07,0xb1,0xe4,0x7a,0xff,0x00,0x8d,0x0d,0xc7,
+ 0xd2,0x90,0x09,0xfe,0x7d,0x3f,0xfd,0x46,0x93,0xfc,0xfa,0x7f,0xfa,0x8d,0x2d,0x21,
+ 0xa0,0x04,0xff,0x00,0x3f,0xe7,0xd0,0xd0,0x7f,0xcf,0xf9,0xec,0x68,0xc7,0xf9,0xff,
+ 0x00,0x3d,0xa8,0xff,0x00,0x3f,0xe7,0xda,0x80,0x05,0x34,0xfc,0x8a,0x80,0xb8,0x55,
+ 0xe4,0x8e,0x29,0x8d,0x70,0x00,0x3e,0xd4,0x8a,0x2c,0x96,0xc5,0x31,0xe4,0xaa,0x92,
+ 0x5c,0x1f,0x9b,0xdb,0x15,0x0b,0xcc,0x72,0xdc,0xf4,0xe9,0x40,0x17,0x92,0x41,0xe6,
+ 0x2f,0xd4,0x56,0xa3,0x8e,0x6b,0x9f,0xb7,0x62,0xf7,0x48,0xa0,0xf5,0x75,0xfe,0x75,
+ 0xd1,0x95,0x34,0x21,0x32,0xbe,0x30,0xd9,0x14,0x83,0x28,0x4e,0x3a,0x54,0xe5,0x29,
+ 0xa5,0x46,0x3d,0xe9,0x81,0x11,0x19,0x39,0x1d,0x7b,0xfb,0xd0,0x31,0xfe,0x34,0xf2,
+ 0xa3,0x1e,0xf4,0xd2,0xb9,0xeb,0xd7,0xd6,0x81,0x0d,0xc6,0x09,0x1e,0xbd,0xbd,0x68,
+ 0xed,0x8f,0xca,0x9d,0x8c,0x70,0x7f,0x0a,0x4d,0xbe,0xc6,0x80,0x13,0x39,0x1e,0xfd,
+ 0xeb,0x33,0x56,0xcf,0x94,0x47,0x3d,0x45,0x6a,0x6d,0x3e,0xf9,0xf5,0xc5,0x46,0xf1,
+ 0x24,0xa3,0x0c,0x8b,0xee,0x0d,0x00,0x72,0xae,0x7f,0x7a,0xc7,0xdf,0x34,0xbb,0xfd,
+ 0xab,0xa4,0x36,0x36,0xe7,0xfe,0x59,0x27,0xe7,0x4d,0xfb,0x05,0xb7,0xfc,0xf1,0x5f,
+ 0xfb,0xe8,0x53,0x19,0xce,0xef,0xf6,0xa3,0x7f,0xb5,0x74,0x5f,0xd9,0xf6,0xdf,0xf3,
+ 0xc1,0x7f,0x31,0x47,0xf6,0x75,0xbf,0xfc,0xfb,0x8f,0xc0,0x8f,0xf0,0xa0,0x0e,0x77,
+ 0x7f,0xb5,0x1b,0xfd,0xab,0xa1,0x3a,0x7d,0xae,0x71,0xe4,0x7f,0x2a,0x3f,0xb3,0x6d,
+ 0xbf,0xe7,0x88,0x14,0x5c,0x0e,0x7f,0x7f,0xb5,0x1b,0xfd,0xab,0xa0,0xfe,0xcc,0xb6,
+ 0xff,0x00,0x9e,0x60,0x52,0x7f,0x65,0xdb,0x7f,0x70,0x51,0x70,0x30,0x37,0xfb,0x52,
+ 0x6f,0xf6,0xad,0xff,0x00,0xec,0xbb,0x6f,0xee,0x8a,0x3f,0xb2,0xed,0xff,0x00,0xba,
+ 0x28,0xb8,0x8c,0x0d,0xfe,0xd4,0x9b,0xfd,0xab,0x7f,0xfb,0x2a,0xdf,0xfb,0xa2,0x8f,
+ 0xec,0xab,0x7f,0xee,0x8a,0x2e,0x07,0x3f,0xbf,0xda,0x8d,0xfe,0xd5,0xd0,0x7f,0x65,
+ 0x5b,0xff,0x00,0x74,0x51,0xfd,0x97,0x6f,0xfd,0xd1,0xf9,0x51,0x70,0x39,0xfd,0xfe,
+ 0xd4,0x9b,0xbd,0xab,0xa1,0xfe,0xcb,0x80,0x7f,0x00,0xfc,0xa8,0xfe,0xcc,0x83,0xfb,
+ 0x8b,0xf9,0x51,0x70,0x39,0xed,0xde,0xd4,0x84,0xe6,0xba,0x3f,0xec,0xd8,0x07,0xf0,
+ 0xaf,0xe5,0x47,0xf6,0x7c,0x03,0xf8,0x16,0x8b,0x8c,0x4d,0x31,0xf7,0x69,0xf1,0x8e,
+ 0x38,0x1d,0xfe,0xb5,0x60,0x8c,0xfb,0x11,0x48,0x90,0x88,0xc6,0x13,0x81,0xe8,0x29,
+ 0xd8,0xa4,0x21,0x07,0x3f,0x5f,0x4a,0x3a,0x76,0xa0,0x8a,0x42,0x7d,0x68,0x00,0xe8,
+ 0x32,0xbc,0x8f,0x4a,0x33,0xdc,0x74,0xed,0xed,0x49,0x82,0x0e,0x47,0xff,0x00,0xae,
+ 0x97,0xef,0x72,0x3a,0xf7,0x14,0x00,0x80,0x9f,0xf0,0xf6,0xa0,0xf3,0xdb,0xe9,0x8a,
+ 0x5e,0x0f,0xd6,0x97,0x3e,0xbc,0x83,0xde,0x81,0x99,0xf3,0x1f,0x98,0xfb,0xa5,0x56,
+ 0x32,0x64,0x7d,0x56,0xb4,0x85,0xac,0x52,0x04,0x77,0x62,0x32,0x0f,0x7c,0x53,0x64,
+ 0xfb,0x2c,0x16,0x6e,0x23,0x40,0xec,0x00,0x61,0x8e,0x70,0x47,0xaf,0xb6,0x09,0xa9,
+ 0x19,0x9c,0x59,0x98,0x13,0x83,0x83,0xc1,0xe3,0xbd,0x29,0x86,0x63,0xb8,0xf9,0x6c,
+ 0x36,0xf0,0xd9,0xed,0x53,0xc9,0x77,0x34,0xaf,0x36,0x2d,0x94,0x09,0xa2,0x0c,0x57,
+ 0x70,0xfb,0xc3,0xf8,0x87,0xe3,0xdb,0xdc,0xd2,0x0b,0x8b,0xb9,0x24,0x53,0xfb,0xac,
+ 0xcd,0x06,0xc3,0x9c,0xe1,0xf0,0x3f,0x9f,0x4f,0xca,0x9d,0x82,0xe3,0x63,0xb4,0xb8,
+ 0x0e,0x4e,0x30,0xd1,0xa8,0x90,0xfa,0xe3,0x8e,0x7f,0x5a,0xe9,0xe0,0xb8,0x82,0x51,
+ 0x0e,0xe6,0x0b,0x24,0xcb,0xb9,0x57,0xd7,0xd7,0x1f,0x91,0xae,0x66,0x26,0xba,0x26,
+ 0xd6,0x4f,0xb4,0x6d,0xc2,0x98,0x83,0x05,0xc9,0x1d,0x78,0x3e,0xbd,0x4d,0x35,0x61,
+ 0x99,0x63,0x87,0x74,0xb2,0x8f,0x26,0x42,0x76,0x83,0x82,0xbe,0xac,0xbe,0xdc,0x53,
+ 0xb0,0xae,0x75,0x5f,0x6a,0xb3,0xf2,0xc4,0x9e,0x7a,0x6c,0x66,0xd8,0x1b,0x3c,0x67,
+ 0xd2,0x86,0x9e,0xcc,0x33,0xab,0x5c,0x46,0xa6,0x33,0x87,0x05,0xc0,0xda,0x7d,0xeb,
+ 0x91,0x78,0x22,0x09,0x22,0x99,0x37,0x30,0x7d,0xcb,0x97,0xe1,0xc7,0xf8,0xd2,0x98,
+ 0xad,0x08,0x90,0xa9,0x5d,0x8e,0x00,0x53,0xce,0x55,0xbd,0x29,0x88,0xeb,0x03,0xda,
+ 0x3f,0xdd,0xb9,0x8c,0xfd,0x24,0x06,0x9e,0x20,0x8d,0xbe,0xeb,0x83,0xf4,0x35,0xcb,
+ 0xaa,0xc0,0xac,0xd2,0x1f,0x28,0x79,0x6b,0xb5,0xd0,0x0f,0xbd,0x9e,0xeb,0x56,0xad,
+ 0xec,0x83,0xbd,0xbc,0x49,0x30,0x2d,0xb3,0xcc,0x89,0xc0,0xfb,0xdc,0x7d,0xd3,0xef,
+ 0xda,0x80,0x37,0x8d,0xa0,0xfe,0xf1,0xa6,0x9b,0x3f,0xf6,0xab,0x1d,0x6d,0x56,0x38,
+ 0xc5,0xdc,0x4c,0xdf,0x3b,0x10,0xcb,0xfd,0xc3,0xff,0x00,0xd7,0xab,0x50,0x48,0xfb,
+ 0x41,0xde,0xdf,0x9d,0x21,0x97,0x0d,0x99,0xec,0xd4,0x86,0xd1,0xf3,0x90,0xdc,0xfd,
+ 0x6a,0x31,0x34,0x9f,0xdf,0x6f,0xce,0x94,0x5c,0x49,0xfd,0xf3,0x40,0x0e,0x36,0x92,
+ 0x7f,0x78,0xfe,0x74,0x7d,0x95,0xfd,0x4f,0xe7,0x49,0xf6,0x89,0x7f,0xbf,0xfa,0x0a,
+ 0x5f,0xb4,0xcb,0xfd,0xef,0xd0,0x50,0x02,0x7d,0x9a,0x4f,0x53,0xf9,0xd3,0x4d,0xab,
+ 0xfb,0x9a,0x7f,0xda,0xa4,0x1d,0x48,0xfc,0xa9,0x1a,0xf1,0xd5,0x4b,0x1d,0xb8,0x1e,
+ 0xd4,0xc0,0x6f,0xd9,0xdc,0x0e,0xf4,0x9e,0x43,0x7a,0x56,0x5b,0x6b,0xf7,0xca,0xc7,
+ 0x10,0xc0,0xc3,0xe8,0x7f,0xc6,0x81,0xe2,0x1b,0xbe,0xf6,0xb1,0x7e,0x04,0xd1,0x61,
+ 0x1a,0x7e,0x43,0x0f,0xe1,0xe2,0x93,0xc9,0x6f,0x43,0x54,0x07,0x88,0x67,0x18,0xcd,
+ 0xa2,0x7e,0x0f,0x4f,0xff,0x00,0x84,0x80,0x96,0x21,0x6d,0x43,0x60,0x67,0xef,0xff,
+ 0x00,0xf5,0xa9,0xa8,0xb6,0x17,0x2e,0x79,0x2d,0xfd,0xde,0x28,0xf2,0x4f,0xa1,0xaa,
+ 0x3f,0xf0,0x92,0x60,0xf3,0x69,0xff,0x00,0x8f,0xff,0x00,0xf5,0xaa,0x55,0xf1,0x02,
+ 0x3f,0xfc,0xbb,0xff,0x00,0xe3,0xff,0x00,0xfd,0x6a,0x1c,0x5a,0xdc,0x2e,0x58,0xf2,
+ 0x58,0x7f,0x0f,0x14,0x79,0x27,0x3d,0x2a,0x21,0xad,0xa1,0xff,0x00,0x97,0x73,0xff,
+ 0x00,0x7d,0xff,0x00,0xf5,0xa9,0xe3,0x58,0x8c,0xff,0x00,0xcb,0x13,0xff,0x00,0x7d,
+ 0x52,0x01,0xde,0x49,0xf4,0xa4,0x30,0x9e,0xc3,0x9a,0x51,0xaa,0x46,0x7f,0xe5,0x91,
+ 0xfc,0xe9,0xc3,0x52,0x8c,0xff,0x00,0xcb,0x33,0xf9,0xd2,0x01,0x9e,0x51,0xf4,0xa0,
+ 0xc4,0x7d,0x2a,0x4f,0xed,0x08,0xbf,0xe7,0x9b,0x52,0xfd,0xbe,0x2f,0xee,0x35,0x00,
+ 0x43,0xe5,0x9f,0x4a,0x4f,0x2c,0xe3,0xa5,0x4f,0xf6,0xf8,0x7f,0xb8,0xff,0x00,0xa5,
+ 0x1f,0x6d,0x83,0xfb,0xaf,0xf9,0x50,0x05,0x7d,0x84,0x76,0xc8,0xa3,0xcb,0x3e,0x86,
+ 0xa7,0xfb,0x64,0x1e,0x8d,0xf9,0x51,0xf6,0xb8,0x7f,0xda,0xfc,0xa8,0x19,0x07,0x96,
+ 0x7d,0x29,0x3c,0xb3,0xdc,0x55,0x8f,0xb5,0xc1,0xfe,0xd7,0xe5,0x47,0xda,0xe0,0xf7,
+ 0xfc,0xa8,0x02,0xb1,0x8c,0xe6,0x8f,0x2c,0x9c,0x1c,0x60,0xd5,0x9f,0xb5,0x41,0xea,
+ 0x7f,0x2a,0x3e,0xd3,0x07,0xf7,0xbf,0x4a,0x00,0xad,0xb0,0x91,0xc8,0xc1,0xa4,0xf2,
+ 0xbd,0xb1,0x56,0xbe,0xd3,0x07,0xf7,0xbf,0x4a,0x4f,0xb4,0xc1,0xfd,0xef,0xd2,0x80,
+ 0x30,0x25,0x6e,0x41,0xcf,0xdd,0x38,0xfc,0xea,0x21,0x30,0x8b,0x95,0x3c,0xa9,0xc7,
+ 0x3d,0xc5,0x2d,0xc7,0xdc,0x90,0xff,0x00,0xb4,0x05,0x53,0x90,0x90,0x5c,0x7a,0x62,
+ 0x90,0xcb,0x2f,0x7a,0x54,0x91,0x1a,0x2a,0x05,0x5c,0x2f,0x19,0xdb,0xd3,0xa1,0xff,
+ 0x00,0x3d,0x6a,0x36,0xbb,0x90,0xe4,0x03,0xb4,0x05,0x1c,0x28,0x03,0x1d,0x39,0x1e,
+ 0x86,0xab,0xb7,0x56,0xfc,0xa9,0x09,0x1f,0x35,0x31,0x13,0x35,0xc4,0xac,0x7e,0x69,
+ 0x18,0xfc,0x98,0x3c,0xf5,0x14,0xc0,0xc4,0x95,0xcf,0x65,0xa6,0x12,0x32,0x7e,0x98,
+ 0xa3,0x77,0xf2,0xc5,0x00,0x39,0x5b,0x98,0xfe,0xb4,0xd0,0xfd,0x3d,0x8e,0x69,0x01,
+ 0xc1,0x1e,0xd4,0x2f,0xde,0x1f,0x5a,0x60,0x38,0x39,0x39,0x1e,0xf9,0xad,0x4b,0x49,
+ 0x1f,0x64,0x60,0x1c,0x6c,0x6d,0xca,0x47,0x50,0x7f,0xc8,0xac,0xe4,0x52,0x52,0x4c,
+ 0x2e,0x48,0x23,0x1c,0x56,0x85,0xba,0xed,0x8c,0x7a,0xd2,0x03,0x5a,0x19,0x06,0xc9,
+ 0x90,0x8c,0xac,0xb8,0x3f,0x46,0xf5,0xfe,0x75,0x22,0x70,0x31,0x55,0x61,0x6c,0x8a,
+ 0xb2,0xb9,0x22,0x90,0x0f,0xa5,0xcd,0x32,0x97,0x24,0x53,0x01,0xd9,0xa3,0x34,0xdc,
+ 0xd1,0x40,0x0e,0xeb,0x50,0x5e,0xf3,0x67,0x2f,0xfb,0xa6,0xa5,0xcd,0x43,0x77,0xcd,
+ 0xa4,0xbf,0xee,0x1f,0xe5,0x42,0xdc,0x47,0x3b,0x45,0x25,0x15,0xd4,0x66,0x0d,0xf7,
+ 0x4d,0x58,0xd2,0xf0,0xd7,0x04,0x1e,0xe8,0x6a,0xb3,0x7d,0xd3,0x56,0x34,0x93,0xfe,
+ 0x96,0x3f,0xdd,0x35,0x12,0x65,0x22,0xe5,0xc5,0x98,0x6c,0xb2,0xf5,0xac,0xf9,0x23,
+ 0x78,0x8f,0xf5,0xad,0xd2,0x2a,0x19,0x61,0x57,0x18,0x22,0x85,0x3b,0xe9,0x21,0x38,
+ 0xdb,0x63,0x2e,0x39,0xbb,0x37,0xe7,0x56,0x15,0xea,0x2b,0x8b,0x52,0x87,0x22,0xa0,
+ 0x57,0x68,0xce,0x0e,0x7e,0x86,0x94,0xa1,0xd8,0x6a,0x46,0x82,0xc9,0x52,0xab,0xd5,
+ 0x24,0x90,0x38,0xc8,0x35,0x28,0x62,0x2b,0x1b,0x16,0x5b,0x0d,0x4b,0xba,0xab,0x07,
+ 0xa7,0x86,0xa0,0x09,0xf3,0x46,0xea,0x88,0x35,0x2e,0xea,0x40,0x49,0x9a,0x33,0x4c,
+ 0xdd,0x46,0x68,0x02,0x4c,0xd2,0x66,0x9b,0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6,
+ 0x8c,0xd0,0x03,0xb3,0x45,0x37,0x34,0xb9,0xa0,0x0f,0xff,0xd9,0xff,0xe4,0x13,0x4b,
+ 0x51,0x54,0x49,0x20,0x44,0x65,0x62,0x75,0x67,0x20,0x4d,0x65,0x74,0x61,0x64,0x61,
+ 0x74,0x61,0x00,0x49,0x13,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x52,0x43,0xae,0xae,0xae,0xae,0x86,0x02,0x00,0x00,0xe8,0x05,0x00,
+ 0x00,0x7b,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0xaa,0x01,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x06,0x11,0xa5,0x88,0x03,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x4c,0x09,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x25,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x34,0x00,0x00,0x00,0xab,0x06,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x50,0x00,0x00,
+ 0x00,0x50,0x09,0x00,0x00,0x0b,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x73,0x02,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
+ 0x00,0x40,0x01,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xaa,0x01,0x00,0x00,0xe8,0x05,0x00,0x00,0xee,0xee,0xee,
+ 0xee,0x15,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x01,0x00,
+ 0x00,0x22,0x41,0x00,0x00,0x94,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x22,0x41,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0xf7,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xe6,0x0b,0x00,
+ 0x00,0x2f,0x08,0x00,0x00,0xe6,0x0b,0x00,0x00,0x10,0x00,0x00,0x00,0x31,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x94,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x68,0x00,0x00,
+ 0x00,0x26,0x09,0x00,0x00,0x87,0x08,0x00,0x00,0x0b,0x09,0x00,0x00,0xc6,0x08,0x00,
+ 0x00,0x25,0x09,0x00,0x00,0x09,0x09,0x00,0x00,0x1b,0x09,0x00,0x00,0x1d,0x09,0x00,
+ 0x00,0x21,0x09,0x00,0x00,0x3e,0x09,0x00,0x00,0x43,0x09,0x00,0x00,0x12,0x09,0x00,
+ 0x00,0x29,0x09,0x00,0x00,0x12,0x09,0x00,0x00,0x04,0x09,0x00,0x00,0xc7,0x08,0x00,
+ 0x00,0x56,0x08,0x00,0x00,0x69,0x07,0x00,0x00,0xc8,0x05,0x00,0x00,0x52,0x05,0x00,
+ 0x00,0x2b,0x09,0x00,0x00,0x27,0x09,0x00,0x00,0x67,0x08,0x00,0x00,0xc8,0x05,0x00,
+ 0x00,0x5f,0x08,0x00,0x00,0x32,0x0a,0x00,0x00,0x67,0x0a,0x00,0x00,0xa1,0x07,0x00,
+ 0x00,0x6d,0x05,0x00,0x00,0x04,0x08,0x00,0x00,0x2f,0x09,0x00,0x00,0x31,0x09,0x00,
+ 0x00,0x66,0x08,0x00,0x00,0xe8,0x05,0x00,0x00,0xf9,0x09,0x00,0x00,0xab,0x0a,0x00,
+ 0x00,0xe9,0x0a,0x00,0x00,0xf2,0x08,0x00,0x00,0x7e,0x05,0x00,0x00,0xdc,0x07,0x00,
+ 0x00,0x31,0x09,0x00,0x00,0x5a,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xee,0x09,0x00,
+ 0x00,0x73,0x0a,0x00,0x00,0xc5,0x0a,0x00,0x00,0x50,0x09,0x00,0x00,0x86,0x05,0x00,
+ 0x00,0x31,0x09,0x00,0x00,0x4e,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xe2,0x09,0x00,
+ 0x00,0x2b,0x0b,0x00,0x00,0xdc,0x0a,0x00,0x00,0x5c,0x09,0x00,0x00,0x86,0x05,0x00,
+ 0x00,0x38,0x09,0x00,0x00,0x3e,0x08,0x00,0x00,0xee,0x05,0x00,0x00,0xcf,0x09,0x00,
+ 0x00,0xe6,0x0b,0x00,0x00,0xd4,0x0b,0x00,0x00,0xdd,0x09,0x00,0x00,0x76,0x05,0x00,
+ 0x00,0xe8,0x05,0x00,0x00,0x06,0x06,0x00,0x00,0x3b,0x06,0x00,0x00,0x1c,0x06,0x00,
+ 0x00,0x33,0x08,0x00,0x00,0x1e,0x08,0x00,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xfe,0xff,0xff,0xff,0xbc,0x08,0x00,
+ 0x00,0x44,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x29,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x96,0x09,0x00,
+ 0x00,0xf9,0x0b,0x00,0x00,0xba,0x05,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0d,0x00,
+ 0x00,0x00,0x1d,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x8b,0xfe,0xff,
+ 0xff,0xdc,0xfe,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xad,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x06,0x00,
+ 0x00,0x7c,0x00,0x00,0x00,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0x0a,0x00,0x00,0x86,0x09,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xde,0x00,0x00,0x00,0xbb,0x00,0x00,
+ 0x00,0x17,0x00,0x00,0x00,0x1d,0x00,0x00,0x00,0xb6,0x00,0x00,0x00,0xa5,0x00,0x00,
+ 0x00,0xc1,0xff,0xff,0xff,0x3c,0x00,0x00,0x00,0xef,0xff,0xff,0xff,0xed,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,
+ 0x00,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x10,0x00,
+ 0x00,0x00,0x13,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x26,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0b,0x00,0x00,0xdf,0xff,0xff,
+ 0xff,0x64,0x08,0x00,0x00,0xa4,0x0a,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x0a,0x1e,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x6c,0x97,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xa5,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x92,0x02,0x00,0x00,0x8a,0x04,0x00,0x00,0xe4,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x5d,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,
+ 0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00,
+ 0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x4a,0x4b,0x4a,0x4b,0x21,0x07,0x0a,
+ 0x9c,0x24,0xfa,0x00,0x00,0xac,0xfa,0x00,0x00,0x2e,0x77,0x00,0x00,0x2c,0x7e,0x00,
+ 0x00,0xd6,0xea,0x01,0x00,0x50,0xb1,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0xaa,0x01,
+ 0x00,0x00,0xaa,0x01,0x00,0x02,0x00,0x35,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x02,
+ 0x00,0x00,0x00,0x76,0x00,0x75,0x18,0x7e,0x5b,0x02,0x00,0x00,0x00,0x01,0x00,0x87,
+ 0xb3,0x01,0x00,0x17,0x92,0x01,0x00,0xbb,0x6b,0xff,0xff,0x2d,0x02,0x00,0x00,0x69,
+ 0xdd,0xff,0xff,0x26,0x46,0x01,0x00,0x71,0xdc,0xff,0xff,0x70,0x0f,0x00,0x00,0x19,
+ 0x4f,0xff,0xff,0x76,0xa1,0x01,0x00,0xff,0xff,0x40,0x30,0x00,0x00,0x18,0x00,0x00,
+ 0x12,0x12,0x00,0x08,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x10,0x12,
+ 0x12,0x12,0x12,0x13,0x13,0x00,0x00,0x00,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x13,0x00,0x13,0x12,0x13,0x13,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x01,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x07,0x08,0x12,0x12,0x12,0x12,0x01,
+ 0x06,0x12,0x12,0x12,0x12,0x08,0x15,0x00,0x00,0x14,0x15,0x06,0x12,0x12,0x12,0x01,
+ 0x06,0x12,0x12,0x12,0x12,0x08,0x08,0x15,0x00,0x15,0x15,0x06,0x12,0x12,0x12,0x01,
+ 0x06,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x15,0x15,0x07,0x12,0x12,0x12,0x06,
+ 0x12,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x14,0x15,0x08,0x12,0x12,0x12,0x06,
+ 0x06,0x12,0x12,0x12,0x12,0x06,0x07,0x16,0x08,0x00,0x08,0x08,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x06,0x07,0x01,0x01,0x07,0x08,0x08,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x08,0x15,0x15,0x12,0x12,0x12,0x12,0x12,0x12,0x00,
+ 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xf9,0x0d,0x00,0x10,0x00,
+ 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xc3,
+ 0x0a,0x00,0x10,0xca,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x02,
+ 0x08,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x1b,
+ 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x25,0x4c,0x00,0x00,0x00,0x0e,
+ 0x18,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88,
+ 0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,
+ 0x1e,0x08,0x1b,0xfc,0x21,0xa8,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4c,0x24,0x38,0x1f,0x42,
+ 0x23,0x2f,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c,
+ 0x27,0x09,0x1e,0xf0,0x27,0xec,0x1b,0x2b,0x28,0x67,0x1c,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x67,0x2a,0x04,0x18,0x00,0x27,0x5d,0x19,0x7b,0x25,0x3d,0x16,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x2e,0x2d,0x15,0xd3,0x2b,0x56,0x16,0xa2,
+ 0x29,0x12,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xab,
+ 0x1c,0x9c,0x1a,0x7b,0x25,0x77,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x5d,0x1d,0x93,0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa1,0x26,0x42,0x20,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c,
+ 0x27,0x57,0x1e,0x75,0x27,0xc0,0x1d,0x83,0x28,0x72,0x1c,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x80,0x27,0x12,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf2,0x1f,0x1d,0x15,0xd2,
+ 0x24,0x83,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88,
+ 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,
+ 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x04,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x55,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x12,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x0f,0x00,0x1c,0x01,0xe8,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x13,
+ 0x01,0x07,0x00,0x00,0x00,0x00,0x00,0x2f,0x00,0x71,0x00,0x13,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0xc8,0x00,0x9b,
+ 0x01,0x00,0x00,0x00,0x00,0x04,0x00,0x5a,0x00,0xe8,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x0c,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x16,0x00,0x0b,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xf7,0x1f,0xfe,0xb7,0x15,0xfe,0xb7,0x15,
+ 0xe2,0x17,0x10,0xe2,0x17,0x10,0x00,0x88,0x20,0x00,0x10,0xe6,0x1d,0x06,0x00,0x00,
+ 0x00,0x5a,0x50,0x64,0x55,0x64,0x2d,0x64,0x10,0x64,0x10,0x64,0x10,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x67,0x00,0x00,0x00,0x01,0x00,0x0c,0x00,0x13,
+ 0x00,0x09,0x00,0x06,0x00,0x67,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x65,0x26,0xba,0x1b,0x65,
+ 0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x84,0x25,0x27,0x1b,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x59,0x00,0x00,0x00,0xda,0x02,0x83,
+ 0x03,0x00,0x00,0x75,0x19,0x00,0x00,0x60,0x3d,0x00,0x00,0x00,0xaa,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x05,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x4e,0x00,0xa4,0x00,0x8d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x03,0x00,0x9d,0x00,0x6a,0x01,0x4b,
+ 0x04,0x01,0x00,0x57,0x01,0x28,0x00,0x01,0x00,0xd6,0xc9,0x33,0x01,0x00,0x00,0x00,
+ 0x00,0x46,0x41,0x46,0x41,0x28,0x00,0x66,0x01,0x32,0x00,0xad,0xff,0xda,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0x93,0x59,0x01,0x9c,0x04,0x32,0x00,0xad,0xff,0xda,0xff,0xa8,
+ 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0x59,0x01,0x14,0x00,0xc2,0xff,0xd7,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0x93,0x58,0x01,0x58,0x01,0xc2,0xff,0x00,0x00,0xec,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x58,0x01,0xd0,0xff,0xe3,0xff,0xf1,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x57,0x01,0xf7,0xff,0x03,0x00,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xe3,0x56,0x01,0x9c,0x04,0xf7,0xff,0x03,0x00,0xff,0xff,0xa8,
+ 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0xe8,0x03,0xf7,0xff,0x03,0x00,0xff,0xff,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x57,0x01,0xd4,0xff,0x10,0x00,0xf7,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x2c,0x00,0x14,0x00,0xfc,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe1,0xff,0x15,0x00,0x02,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd8,0xff,0xf0,0xff,0xf3,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x23,0x00,0x23,0x00,0x0e,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd2,0xff,0x1f,0x00,0x0c,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc5,0xff,0xd6,0xff,0xf4,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x25,0x00,0x1c,0x00,0x00,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x18,0x00,0xf5,0xff,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc2,0xff,0xe8,0xff,0x03,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0c,0x00,0x28,0x00,0xfe,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x03,0x00,0xe1,0xff,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf8,0xff,0xe9,0xff,0xf9,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd0,0xff,0x1d,0x00,0x05,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf6,0xff,0xe1,0xff,0xf8,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x1d,0x00,0xed,0xff,0xeb,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xde,0xff,0xf3,0xff,0x06,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0d,0x00,0x02,0x00,0xf0,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xfe,0xff,0xea,0xff,0x01,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe6,0xff,0xf8,0xff,0x04,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xfa,0xff,0xf2,0xff,0xf7,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x11,0x00,0x08,0x00,0x08,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xc2,0xff,0xeb,0xff,0x02,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x27,0x00,0x05,0x00,0x00,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x19,0x00,0x0c,0x00,0xfc,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd3,0xff,0xe9,0xff,0xfe,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x06,0x00,0x07,0x00,0xf2,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd5,0xff,0x1a,0x00,0x03,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x09,0x00,0x18,0x00,0x03,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xef,0xff,0x23,0x00,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x01,0x00,0xf7,0xff,0xf3,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0xaa,0x01,0x00,0x00,0xb8,0x00,0x05,0xd0,0x0a,
+ 0x00,0x01,0x00,0x00,0x00,0x60,0x07,0x00,0x04,0x70,0x08,0x40,0x05,0x18,0x00,0x01,
+ 0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xe5,0x00,0xa2,0x00,0x73,0x73,
+ 0x6f,0x69,0x73,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c,
+ 0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x30,0x20,0x32,0x73,0x73,
+ 0x6d,0x74,0x66,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x53,0x53,0x43,0x41,0x4c,
+ 0x20,0x50,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56,0x4d,0x30,0x30,0x33,
+ 0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0x4d,0x38,0x44,0x30,0x31,0x44,0x30,0x31,
+ 0x53,0x31,0x34,0x53,0x41,0x33,0x2f,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31,
+ 0x56,0x4d,0x30,0x30,0x33,0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0xff,0xdb,0x00,
+ 0x84,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x02,0x03,0x02,0x02,0x02,0x02,0x02,0x04,0x03,0x03,0x02,0x03,0x05,0x04,0x05,0x05,
+ 0x05,0x04,0x04,0x04,0x05,0x06,0x07,0x06,0x05,0x05,0x07,0x06,0x04,0x04,0x06,0x09,
+ 0x06,0x07,0x08,0x08,0x08,0x08,0x08,0x05,0x06,0x09,0x0a,0x09,0x08,0x0a,0x07,0x08,
+ 0x08,0x08,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x04,0x02,0x02,0x04,0x08,0x05,0x04,
+ 0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0xff,0xc0,0x00,0x11,0x08,0x0b,0xd0,0x0f,0xc0,0x03,0x01,0x22,0x00,
+ 0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,
+ 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,
+ 0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,
+ 0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,
+ 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,
+ 0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,
+ 0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,
+ 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,
+ 0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,
+ 0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,
+ 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,
+ 0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,
+ 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,
+ 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,
+ 0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,
+ 0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,
+ 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,
+ 0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,
+ 0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,
+ 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,
+ 0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,
+ 0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,
+ 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,
+ 0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,
+ 0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,
+ 0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xfe,0x15,0xec,0x27,0x9b,0x03,0x68,0x86,
+ 0x7b,0x88,0xd4,0xc8,0x79,0x3c,0xaf,0xa0,0xf5,0xa5,0xd4,0xee,0xa7,0x96,0x66,0x79,
+ 0x84,0x31,0x16,0x0a,0x56,0x35,0xe7,0x23,0x03,0x05,0x4f,0x73,0x4c,0x64,0x68,0x55,
+ 0xa4,0x8d,0x19,0xe4,0x60,0xc5,0x59,0x57,0xf7,0x80,0x0e,0xad,0x8f,0x4a,0xa5,0x78,
+ 0xd3,0xac,0x7e,0x73,0xfc,0xb7,0x48,0xd9,0xd9,0x13,0x75,0x4c,0x0e,0x40,0xec,0x6b,
+ 0x5a,0x56,0x8b,0x76,0xd8,0xa7,0xb6,0xe5,0x5b,0xcb,0x91,0x72,0x8b,0x10,0x49,0x9a,
+ 0xe2,0x32,0x59,0x97,0x1c,0x36,0x7a,0x67,0xdc,0x7f,0x5a,0xc6,0x69,0x84,0x51,0x29,
+ 0x96,0x24,0x17,0x2e,0x08,0x90,0x96,0xe8,0x33,0xd4,0x0f,0x6a,0x7d,0xdd,0xfb,0x99,
+ 0x66,0x91,0x96,0x74,0x47,0x60,0xe1,0x07,0xf0,0xf1,0xfe,0x26,0xb3,0x1f,0xf7,0xa5,
+ 0x5a,0x42,0x17,0x92,0xcc,0x1b,0xa6,0x08,0xcf,0x5a,0xd9,0x69,0xea,0x38,0xbe,0xdb,
+ 0x8b,0x31,0x4d,0xea,0xe2,0x32,0x8c,0x7e,0x63,0xf3,0x7b,0x53,0x99,0xd9,0xc2,0x48,
+ 0xb2,0x14,0xc8,0xc7,0xb1,0x3e,0x87,0xf5,0xa8,0xc7,0xef,0x44,0x86,0x42,0x25,0x7c,
+ 0x64,0x16,0x24,0x02,0x3d,0xa9,0xc1,0x62,0x88,0xb1,0x07,0xcc,0x21,0x70,0x14,0x8e,
+ 0x09,0xc7,0x5f,0xd6,0xb3,0xb5,0xda,0x46,0xb1,0x6e,0xde,0x45,0x9b,0x74,0x2d,0x29,
+ 0x8e,0x4d,0xe7,0x9c,0x20,0x03,0xe5,0x07,0xbf,0xcd,0x57,0x62,0xb8,0x8d,0x54,0x5a,
+ 0x95,0x77,0x53,0x21,0x90,0x10,0x00,0x39,0x1e,0xe7,0xa8,0xe0,0xd6,0x51,0x21,0xc3,
+ 0x29,0x2a,0x50,0x90,0x48,0x50,0x7b,0x0e,0xbe,0xd5,0x0a,0xca,0x70,0x14,0x64,0xe4,
+ 0x6d,0x04,0x73,0xf4,0xa6,0xe7,0x74,0x6a,0xa5,0x65,0x66,0x69,0xb6,0xa5,0x2b,0x26,
+ 0xf5,0x48,0xe0,0x07,0xe5,0x11,0x8f,0x98,0x15,0x07,0xee,0xf3,0xda,0xb3,0x6e,0x6e,
+ 0x24,0xb8,0x9c,0xca,0xe4,0x8c,0x03,0x81,0x8e,0xf4,0xc1,0xf7,0x31,0x8c,0x91,0x91,
+ 0x80,0x69,0xa4,0x8d,0xa3,0xe7,0x79,0x30,0x70,0x73,0xc6,0x6b,0x36,0xee,0x65,0x29,
+ 0x5d,0x0e,0x21,0x4e,0xc5,0x00,0xbb,0x91,0x92,0x48,0xc6,0x29,0x1b,0x18,0xdc,0x0f,
+ 0x07,0x92,0xa4,0xd3,0xbe,0xeb,0x85,0x0a,0x4e,0x46,0x5c,0x16,0xe0,0xd3,0x24,0x3b,
+ 0x8e,0x55,0x36,0x8e,0x80,0x9e,0x70,0x3d,0x2a,0x6e,0xaf,0x70,0x77,0xb6,0xa3,0xfe,
+ 0x53,0x86,0xd8,0x23,0x5c,0xe5,0x80,0x27,0xe5,0xc7,0xf8,0xd3,0x3e,0x67,0xc0,0xcf,
+ 0x3d,0x17,0x8e,0xb4,0xe5,0xf2,0xc3,0xfd,0xe2,0x40,0x18,0xe4,0x75,0xa6,0xee,0x57,
+ 0x2a,0x4e,0xd5,0xc9,0xc6,0x73,0xd2,0x9a,0xf2,0x13,0xdb,0x50,0x07,0x24,0x00,0x01,
+ 0x5f,0xe2,0xcf,0x7f,0x6a,0x92,0x45,0x28,0xa8,0x81,0x48,0x56,0xf9,0x81,0x6e,0xf8,
+ 0xeb,0x4c,0x2c,0x79,0x51,0xb1,0x80,0x38,0x0d,0x8c,0x64,0x53,0xb7,0xf9,0x8c,0xa6,
+ 0x4c,0xb9,0x55,0xc2,0xfb,0x7e,0x14,0xac,0x17,0x5b,0x75,0x00,0x33,0xe5,0x39,0x01,
+ 0x01,0x38,0xce,0x38,0x1f,0x5f,0xca,0x85,0x8c,0xb9,0xf2,0xf2,0x23,0xc8,0xc3,0x36,
+ 0x3a,0x73,0xff,0x00,0xea,0xa9,0x0e,0x76,0xaa,0xb1,0xf3,0x3e,0x52,0x00,0x66,0xfb,
+ 0xbf,0x41,0x50,0xee,0x0d,0xb4,0xc8,0xbb,0xbd,0xb3,0xd7,0x9e,0xd4,0xed,0xd1,0x15,
+ 0x64,0x9e,0xa4,0x8d,0x9c,0xe0,0x47,0xc2,0xae,0xc3,0x93,0xd7,0xde,0x83,0xe5,0x85,
+ 0xe3,0x73,0xa9,0x20,0xe0,0xf1,0xcd,0x26,0x64,0xd9,0x86,0xc6,0x47,0x20,0xe7,0xef,
+ 0x0f,0x42,0x29,0x8c,0x40,0x6c,0x01,0x9c,0x9c,0x92,0x3b,0x52,0xb8,0x9b,0xb2,0xbb,
+ 0x1c,0x0b,0x49,0x8d,0xc4,0x28,0x04,0xf2,0x4f,0x27,0xd8,0x52,0x86,0x5d,0xa8,0x54,
+ 0x67,0xae,0x09,0x1d,0x29,0x8a,0x03,0x07,0xcb,0x28,0x5e,0xa4,0x9e,0xd4,0xae,0xe5,
+ 0xd0,0x0c,0x15,0x8d,0x4e,0x40,0x03,0xa5,0x17,0xbe,0xe1,0x7d,0x2e,0x3f,0xe6,0x90,
+ 0x9c,0x97,0xda,0x48,0xdc,0x47,0x6f,0x4a,0x8b,0xa9,0xce,0xdd,0xa0,0x73,0xc9,0x3f,
+ 0x35,0x48,0xac,0x8d,0xbf,0x71,0x65,0x24,0x64,0x11,0xd6,0x9b,0x82,0xc0,0x05,0x0c,
+ 0x79,0xce,0x0f,0x6f,0x6a,0x1e,0x81,0x7d,0x04,0xf9,0x9c,0xaf,0x4c,0x93,0xc0,0x14,
+ 0xec,0xb4,0x85,0x54,0x16,0x2d,0x93,0x80,0x47,0x5a,0x06,0x41,0x2e,0xa4,0x8c,0x8c,
+ 0xe4,0x0e,0x83,0xd0,0xd1,0x9d,0xe0,0xc8,0xcc,0x01,0x3d,0x40,0xa5,0xd7,0x52,0x55,
+ 0xed,0xa8,0xbf,0xbc,0x8c,0xe6,0x37,0x2a,0x40,0xc1,0x1d,0x87,0x14,0xd4,0x0a,0x10,
+ 0xe5,0x72,0xac,0x38,0x70,0x3a,0x73,0x4f,0x45,0x52,0x15,0xc6,0x36,0x9e,0xcc,0x79,
+ 0xe2,0x98,0x5d,0xc0,0x2e,0x1f,0x60,0x03,0x21,0x40,0xe8,0x3d,0x05,0x3e,0x81,0xe6,
+ 0xc7,0xb2,0x92,0x54,0x1d,0xa3,0xe5,0xe4,0x7a,0x8f,0x7f,0xd2,0x90,0x30,0x63,0x1a,
+ 0x94,0x43,0x8e,0x4e,0x49,0xf9,0xbe,0xb4,0x63,0x77,0xcc,0x18,0x73,0xc6,0x09,0xf9,
+ 0x89,0xfa,0x53,0x57,0x69,0x47,0x3c,0x96,0x18,0x03,0x1e,0x94,0x5f,0xb0,0xef,0xad,
+ 0xd1,0x20,0xdb,0x87,0x00,0x17,0x19,0x00,0x00,0x39,0xfc,0x0d,0x1b,0x54,0x71,0x11,
+ 0x63,0xb5,0xb9,0x0d,0xc1,0x14,0xd5,0x3c,0xe7,0x83,0x96,0xe7,0xb6,0x29,0x15,0x24,
+ 0x32,0x32,0xae,0x43,0xfd,0xe5,0xc9,0x03,0x23,0x3e,0xb4,0x3d,0x5d,0xc2,0xfb,0x0e,
+ 0x72,0x09,0x03,0x2c,0xbb,0x41,0x1c,0xf6,0xa5,0x68,0x1f,0xe4,0x72,0x8b,0x86,0x19,
+ 0x52,0x0f,0xde,0xa5,0x62,0xa1,0xbf,0x78,0xae,0x24,0x27,0x70,0x6c,0xf2,0x0f,0xb8,
+ 0xee,0x2a,0x47,0x92,0x69,0x7c,0xb5,0x57,0x2a,0x8a,0x70,0xa8,0xa3,0xee,0xd3,0x69,
+ 0x12,0xd5,0xc7,0x47,0x85,0x0f,0x1c,0xc9,0xfb,0x89,0x14,0x3a,0xae,0x30,0x48,0xcf,
+ 0x7e,0xf5,0x66,0x0b,0xd9,0xa3,0x9a,0xdb,0x71,0x59,0x46,0x4a,0xa6,0x1b,0x1b,0x47,
+ 0x40,0x6a,0xa9,0x2c,0x42,0xac,0xef,0xe6,0x72,0x63,0x50,0xc7,0x86,0x1e,0xa4,0xf6,
+ 0xa8,0xa4,0xc1,0x90,0x00,0xaa,0x13,0x1b,0x71,0x8e,0xc0,0x74,0x5f,0x7a,0x4a,0xef,
+ 0x51,0xe8,0x8e,0xdc,0xbc,0x33,0xda,0xc8,0xca,0xb1,0x73,0x21,0x80,0xc4,0xf9,0xc0,
+ 0x39,0xce,0x57,0xf5,0xe9,0x5c,0xc4,0x8d,0x0c,0x72,0x3b,0xc5,0x2a,0xa4,0xc9,0x23,
+ 0x2b,0x46,0xe7,0xef,0x9f,0x51,0xec,0x79,0xc5,0x6e,0xd9,0x18,0xf1,0xb3,0xfd,0x25,
+ 0xa6,0x03,0x2b,0x95,0xce,0xd1,0x8f,0xbc,0x7d,0x3f,0xfa,0xf5,0x8f,0x7c,0xb6,0xd0,
+ 0x48,0xcc,0xd6,0xed,0x35,0xe0,0x38,0x62,0x41,0x0a,0x33,0xdf,0xeb,0xc8,0xa7,0x77,
+ 0xaa,0x7b,0x99,0xa7,0x77,0x66,0x55,0x77,0x61,0x12,0x4a,0x98,0x18,0x93,0x25,0x07,
+ 0x04,0x0f,0x6a,0x0a,0x87,0x4c,0x83,0x20,0x85,0x8e,0x1d,0x40,0xe4,0x73,0x50,0x2c,
+ 0x4f,0x2c,0x71,0xc2,0x5d,0x41,0x27,0xe6,0x52,0x4e,0x57,0x9e,0xa0,0x7a,0x55,0x9b,
+ 0x86,0x8d,0xa4,0x8d,0x62,0x66,0x8a,0x75,0x52,0x03,0x38,0xe0,0x8f,0x4f,0xf3,0xeb,
+ 0x49,0xf9,0x6e,0x17,0x4f,0x61,0x53,0x74,0x67,0x0e,0x9f,0x28,0x3f,0x2a,0xae,0x32,
+ 0x3e,0xa6,0x9a,0xd7,0x06,0x59,0x63,0x0d,0x18,0x87,0xf8,0x94,0xe7,0x9c,0xe7,0xbf,
+ 0xa5,0x31,0x58,0x3b,0x85,0x74,0x29,0x91,0x87,0x20,0x7d,0xdf,0x43,0xc7,0x5e,0x94,
+ 0x2b,0xec,0xdc,0xe8,0xa6,0x50,0xc7,0x00,0xb7,0x7f,0x72,0x2a,0x5e,0xe1,0xab,0x5a,
+ 0x16,0x04,0x4a,0x65,0x70,0xc2,0x4c,0x96,0x24,0x9e,0xb9,0xf7,0x22,0x88,0xb7,0xda,
+ 0xaa,0x38,0x71,0x1e,0x09,0x0a,0xc7,0xa9,0x51,0xc9,0x1e,0xd4,0x92,0x43,0x24,0x0d,
+ 0x14,0x8c,0xa2,0x30,0x64,0x05,0xd4,0x3e,0x30,0x31,0xc7,0xf9,0x35,0x34,0x33,0x99,
+ 0xa7,0xf2,0xfc,0xd6,0x9e,0x4d,0xc2,0x4d,0xa4,0x0e,0x83,0xb5,0x2f,0x24,0x2b,0xb7,
+ 0xb0,0xcf,0x2a,0xdc,0xf9,0x53,0x30,0x95,0x56,0x40,0xc4,0x44,0x8d,0x92,0xa3,0xd4,
+ 0x8a,0x96,0x39,0x7c,0xdb,0x99,0x23,0x01,0xfe,0x45,0x2e,0x18,0x0f,0x6a,0x58,0xde,
+ 0x39,0x66,0x5b,0x7b,0x68,0x9c,0xdc,0x33,0xf9,0x8c,0xc4,0x60,0xa7,0xb7,0x34,0x93,
+ 0x5b,0x5f,0x2a,0x32,0x49,0xba,0xd5,0x43,0x15,0xda,0xbf,0x79,0x81,0x39,0x04,0x0e,
+ 0xd4,0xf4,0xb8,0xf4,0xd9,0x16,0xa0,0x92,0xdc,0x84,0xcc,0x52,0xcb,0x74,0xc3,0x00,
+ 0x6d,0x23,0x8f,0x6f,0xa5,0x0b,0x05,0xcc,0xb7,0x50,0x42,0x92,0xe5,0x5f,0x0a,0xcc,
+ 0xe7,0x86,0x6f,0xad,0x58,0xb5,0xd3,0x75,0x2d,0x46,0xee,0x0d,0xb1,0x38,0x8c,0xa9,
+ 0x53,0x29,0x60,0x0a,0x26,0x3d,0x7b,0x9e,0x7a,0x57,0x57,0x6f,0x65,0x67,0xa5,0x5a,
+ 0x40,0xb2,0x34,0xb7,0xae,0xe5,0xe4,0x50,0xc7,0x04,0x10,0x78,0x19,0xef,0x9f,0x4e,
+ 0xd4,0x45,0x5d,0xe8,0x24,0xef,0xa2,0x30,0xf4,0x9f,0x0f,0xea,0x17,0x3a,0x88,0x16,
+ 0xf1,0xaa,0x07,0x61,0xe6,0xb4,0xad,0xb7,0x68,0xe8,0x70,0x07,0x7e,0x6b,0xa4,0xd3,
+ 0xfc,0x31,0x6f,0x61,0x24,0xf6,0x77,0xb1,0xc7,0x75,0x2c,0x92,0x09,0x0b,0x4a,0xc5,
+ 0x55,0x54,0x02,0x57,0x68,0xef,0xdb,0x35,0x1b,0x6a,0xb6,0xdb,0xae,0x3e,0xcf,0x23,
+ 0xad,0xe0,0x8c,0x31,0x07,0x80,0xdc,0xf7,0xf7,0xeb,0x58,0x57,0x9a,0xd5,0xcd,0xcc,
+ 0x83,0xed,0x2a,0xeb,0x1b,0xa1,0x50,0xc5,0xf8,0x04,0x63,0xe6,0x1e,0x86,0xa2,0x2d,
+ 0xbd,0xc7,0x66,0xec,0x96,0xe7,0x5c,0x35,0x6b,0x6f,0xb4,0xfd,0xa5,0xd1,0xe3,0x98,
+ 0x2e,0x52,0x40,0xa7,0x8c,0x00,0x36,0xe4,0xf5,0x1f,0xca,0xb9,0x0d,0x43,0x5e,0x9a,
+ 0x70,0xb6,0xd6,0x10,0x18,0xe2,0x70,0xcc,0x54,0x00,0x4a,0x8c,0xfa,0xf7,0xe7,0xf9,
+ 0xd6,0x50,0x13,0x39,0x91,0x56,0x58,0xa5,0xf2,0xd0,0xb0,0x77,0x3c,0x36,0x7f,0xaf,
+ 0x4a,0xd1,0x86,0x35,0xcd,0xbb,0x3c,0x66,0xdd,0x59,0x48,0x56,0x88,0xe3,0x67,0xf8,
+ 0x0e,0x2a,0xb6,0xb1,0x32,0x76,0x10,0x79,0x79,0xb7,0x22,0x22,0xa3,0x76,0x19,0xc7,
+ 0x6e,0x32,0x78,0xad,0x9d,0x36,0xd9,0xe7,0x0d,0xe7,0xcd,0x30,0x00,0x92,0x11,0x9c,
+ 0x8d,0xab,0xd0,0x7f,0x3e,0x95,0x4e,0x29,0xa0,0x82,0x48,0xe4,0x4f,0xde,0xc6,0x8d,
+ 0xb3,0x32,0x0e,0x65,0x38,0xe7,0x1e,0xd5,0x5e,0x4b,0x99,0x2f,0x6e,0x26,0xde,0x8f,
+ 0x1c,0x6c,0xc0,0xb9,0x88,0x10,0xff,0x00,0x40,0x3f,0xcf,0x41,0x54,0xda,0x4a,0xec,
+ 0x97,0x25,0x77,0x62,0xed,0xcd,0xec,0x5a,0x6b,0xcf,0x6b,0x68,0x3c,0xe4,0x99,0xc2,
+ 0xbc,0x6b,0x1e,0xed,0xa3,0x8c,0x12,0x3b,0x1a,0x8e,0x4d,0x46,0x4b,0x7b,0x88,0x61,
+ 0x9a,0x39,0xa6,0x8c,0x21,0x76,0x8c,0x9d,0x9b,0xc1,0x1e,0xbe,0x94,0xfd,0x3e,0xc2,
+ 0x69,0xad,0x1e,0xee,0x14,0xbc,0x59,0x4b,0x31,0x40,0xb1,0x90,0xcd,0x83,0x8c,0x32,
+ 0xd7,0xa8,0x78,0x27,0xe1,0x86,0xa3,0xae,0xde,0x5b,0xdd,0xcb,0x71,0x3c,0xd1,0xaa,
+ 0xed,0x05,0xa3,0x18,0x0b,0xdb,0x23,0xd7,0xde,0x93,0x9c,0x52,0xe6,0x93,0x45,0xc6,
+ 0x17,0x69,0x27,0xad,0xcf,0x1e,0xb7,0x5d,0x42,0xe9,0x64,0xfb,0x3d,0x92,0x4b,0xb8,
+ 0x8c,0xa8,0x3c,0xc4,0x01,0xfe,0x13,0xf4,0xeb,0x5e,0xa1,0xe0,0xbf,0x00,0x6a,0x1a,
+ 0xc4,0x52,0x35,0xee,0x85,0x85,0x59,0x03,0x19,0x6e,0x98,0xa6,0xf5,0x23,0x82,0x07,
+ 0x7e,0xb5,0xf4,0x3f,0x86,0x3e,0x12,0x68,0x9a,0x2c,0xcb,0xaa,0x5f,0x5a,0x23,0xea,
+ 0x88,0x58,0xb3,0xa8,0xdc,0xb8,0x07,0x90,0x46,0x70,0x7b,0x76,0xaf,0x58,0x58,0x61,
+ 0x78,0x9a,0x31,0x68,0x2c,0xec,0x43,0x2b,0x18,0xd8,0x1c,0x13,0xd4,0x00,0x3a,0x81,
+ 0xde,0xb8,0x6a,0xd4,0xbb,0xb4,0x7a,0x19,0xce,0x0d,0x2b,0x23,0xcd,0xbc,0x31,0xf0,
+ 0x8b,0x45,0xb3,0x4b,0xc9,0xf5,0x2d,0x3a,0x3b,0xbb,0x56,0x11,0xb4,0x05,0x80,0x5f,
+ 0xb2,0xb8,0xeb,0x8c,0x1f,0xbb,0xef,0xeb,0x5e,0xb9,0x67,0x63,0x00,0x48,0x12,0x11,
+ 0xb6,0x55,0x24,0x29,0x74,0x03,0x6f,0x61,0x83,0xe9,0xc5,0x5c,0xb3,0x37,0xa8,0xb3,
+ 0xc3,0x1c,0xa4,0x70,0x1b,0x3e,0x83,0x3d,0x3d,0xc5,0x5e,0x88,0x91,0x28,0x2d,0x1a,
+ 0xed,0x03,0xc9,0xda,0x46,0x33,0xee,0x00,0xe9,0x59,0x36,0xde,0xa9,0xff,0x00,0x5e,
+ 0x85,0xc6,0xc9,0xde,0x3f,0xd7,0xa0,0xb8,0x97,0xce,0x26,0xe0,0xa4,0x51,0x48,0xc1,
+ 0x09,0xc6,0x76,0x01,0xe9,0x8a,0x59,0x50,0xf9,0xe9,0xfb,0xa6,0x8e,0x35,0x1b,0x43,
+ 0x81,0x96,0x38,0xf7,0xa8,0x56,0x40,0xd0,0x47,0x0a,0x2c,0x92,0x66,0x4c,0xb3,0x10,
+ 0x46,0xd1,0x9e,0xc4,0xfd,0x0d,0x5e,0x51,0xe5,0xaf,0xdb,0x18,0x42,0x57,0x19,0x0a,
+ 0x09,0xc8,0x1f,0x4e,0xf4,0x6a,0x95,0xec,0x16,0xd6,0xef,0x64,0x32,0x19,0x87,0x98,
+ 0xf3,0x2b,0x8d,0xca,0xa1,0x76,0x3c,0x78,0x52,0x47,0x62,0x7f,0xad,0x6a,0x71,0x38,
+ 0x12,0x05,0x03,0xcc,0x00,0x30,0x00,0x9d,0xbe,0xa7,0x27,0xd3,0x34,0xb6,0x76,0x71,
+ 0x4b,0x03,0x79,0xd2,0xee,0x04,0x16,0x25,0x81,0x24,0x7b,0x81,0xd4,0xd3,0xe6,0x8a,
+ 0x3b,0x93,0x6e,0x6d,0x75,0x03,0x02,0xa1,0x2c,0xea,0x23,0x38,0x6c,0x7a,0x7d,0x78,
+ 0xa4,0xfb,0xbd,0xc3,0x56,0x90,0xfb,0x78,0xc8,0xf3,0x65,0x69,0xee,0x65,0x70,0x32,
+ 0x08,0x40,0xd8,0x03,0xbf,0xd3,0x8a,0xb2,0x18,0xc8,0x8a,0x77,0x95,0x66,0x19,0x06,
+ 0x38,0xf0,0x7e,0xa0,0x0e,0x29,0x63,0x89,0x23,0x64,0x6b,0x42,0xe9,0x70,0xc3,0xac,
+ 0x83,0x3b,0x7d,0x82,0xfa,0x53,0xfc,0xc9,0x62,0x46,0x04,0xa1,0x81,0x50,0x33,0x61,
+ 0x7e,0x60,0xb9,0xea,0xa3,0xf5,0xac,0x6c,0xad,0x6d,0x02,0x4e,0xda,0xbd,0x8d,0x4b,
+ 0x74,0x72,0xdf,0xba,0x26,0x49,0x62,0x19,0x0f,0x9c,0x97,0xe0,0x75,0x23,0xf9,0x54,
+ 0xe9,0x3f,0x96,0x24,0x68,0xf7,0xa4,0x6e,0x30,0xa7,0x1c,0x1f,0x50,0x4d,0x67,0xaa,
+ 0x83,0x19,0x9a,0x09,0xe4,0x5d,0x8d,0x84,0x84,0x28,0x05,0x81,0xee,0x7e,0xb5,0x6d,
+ 0x70,0x89,0x0c,0xf7,0x4e,0xbe,0x56,0xe0,0xcf,0x18,0x1c,0x37,0xf8,0x74,0xeb,0x54,
+ 0xae,0xde,0xf7,0x1b,0xd1,0xb4,0xd7,0xcc,0x58,0xee,0x66,0x95,0xfc,0x87,0x7c,0x32,
+ 0x28,0x0c,0xe4,0x7d,0xff,0x00,0x6c,0x7e,0x55,0x65,0x0a,0xf9,0x8e,0x1d,0xbe,0xd8,
+ 0x80,0x6d,0x46,0xc6,0x4a,0xf1,0xc8,0xf6,0x1c,0xd5,0x29,0x0c,0x32,0xcb,0xbe,0x68,
+ 0xbc,0x98,0x54,0x92,0xdb,0x57,0x27,0x9e,0x80,0x55,0xad,0x90,0xee,0x40,0xff,0x00,
+ 0x69,0x40,0x06,0xd0,0x43,0x61,0x4f,0xd5,0x47,0xf8,0xd4,0xe8,0xd6,0xaf,0xfe,0x09,
+ 0x31,0x7a,0x3b,0x34,0xd1,0x20,0x8d,0xbe,0xca,0x18,0x34,0xd1,0x5d,0x96,0x3b,0x42,
+ 0x63,0x2e,0x07,0xad,0x53,0x69,0xac,0x45,0xd1,0x8a,0xe6,0x63,0x3c,0xee,0xdb,0x52,
+ 0x43,0x90,0x48,0x03,0x38,0x23,0xb6,0x29,0xaa,0x91,0x34,0xf1,0xc9,0x09,0xbc,0x68,
+ 0xa2,0x20,0x2e,0xe4,0x2a,0x54,0x93,0xce,0x3d,0x47,0x5a,0xb4,0xc9,0x15,0xcb,0x19,
+ 0x77,0x5b,0x24,0x6e,0xce,0x50,0x0f,0xbc,0x47,0xb8,0xed,0xd3,0x8c,0xd3,0xbb,0x7b,
+ 0x83,0xb3,0x56,0x44,0xfb,0xdf,0x1b,0xcb,0x90,0x48,0x0b,0x19,0x07,0xe6,0x20,0xf1,
+ 0x82,0x07,0xe3,0x53,0x44,0x2d,0xe2,0x97,0x6b,0x96,0x98,0x9e,0x58,0x4a,0x84,0x80,
+ 0x71,0xd8,0xfe,0x55,0x25,0x9b,0x18,0x49,0x40,0xca,0x51,0x41,0x20,0x30,0x3f,0x37,
+ 0xf8,0xd3,0xd5,0x58,0x98,0x21,0x32,0xfe,0xf5,0xb2,0x57,0x2a,0x46,0xe2,0x79,0xe4,
+ 0xd6,0x5a,0xad,0xcd,0x6d,0xd5,0x12,0x45,0x05,0xc2,0x4a,0x9e,0x7b,0xca,0x24,0xc8,
+ 0x90,0x01,0xce,0xe5,0xf7,0xfd,0x2a,0x47,0xb6,0x92,0x69,0x59,0x2c,0xed,0xf1,0x8e,
+ 0x46,0x0e,0x00,0xf7,0x19,0xef,0xd6,0x9e,0x66,0x85,0xd2,0x4b,0x9b,0x97,0x73,0x6d,
+ 0x1a,0x9d,0x9b,0x46,0x19,0x8f,0xf5,0xad,0x08,0x6c,0xcd,0xc2,0x45,0x24,0xcd,0x21,
+ 0x02,0x30,0xf9,0x56,0x2a,0x5c,0x9f,0x51,0xed,0xcd,0x3b,0x59,0xdc,0x69,0xdd,0xe9,
+ 0xa9,0x96,0xe1,0x43,0x4f,0x0c,0x52,0x38,0x90,0x20,0x70,0xc1,0x0a,0x8e,0x9d,0x30,
+ 0x6a,0x58,0x04,0x4c,0xb1,0xf9,0x13,0x94,0x62,0xe1,0xca,0x67,0x24,0x9f,0x5c,0x1e,
+ 0xf5,0xb0,0xd1,0xac,0x0f,0x1c,0x2c,0xad,0x32,0x95,0xdd,0xb1,0x81,0xe3,0xd4,0x66,
+ 0xaa,0xc3,0x11,0x9a,0xec,0x4a,0x55,0x8c,0x4a,0x33,0x93,0xf2,0xed,0xe3,0xa6,0x3b,
+ 0xd0,0xae,0xb7,0x12,0x77,0x76,0x4f,0x52,0xd9,0x64,0x9c,0xdc,0xdc,0x46,0x85,0x7e,
+ 0x65,0x2d,0x1b,0xf5,0x93,0xdf,0x1e,0xb5,0x35,0xb4,0x8f,0xb6,0x56,0x04,0xc7,0xe6,
+ 0x86,0x50,0x1c,0x10,0x10,0x67,0xa7,0xd6,0xa0,0x33,0xc9,0x20,0x32,0x46,0x6e,0x1d,
+ 0x90,0x9c,0xb0,0x4c,0x02,0x3a,0x62,0xa2,0x86,0x49,0x64,0x64,0x96,0x26,0x26,0x31,
+ 0xc2,0xaa,0x0c,0x14,0x3e,0xa4,0x1e,0xf5,0x3d,0x3b,0x06,0xb7,0xba,0xd4,0x0a,0xcc,
+ 0xb1,0x3b,0xbc,0x52,0xb9,0x51,0xb5,0x19,0x46,0x77,0x73,0xd0,0x9f,0x4e,0x2b,0x5a,
+ 0xda,0xdb,0xcd,0x02,0x43,0x19,0x2a,0xa7,0x20,0x16,0xc6,0x78,0xe8,0x05,0x40,0x91,
+ 0x32,0xc7,0x11,0x57,0x31,0x6d,0x62,0xc5,0xbc,0xdc,0x93,0x9f,0x5f,0xd6,0xb6,0x7c,
+ 0xa0,0x86,0x38,0x87,0xde,0x03,0x71,0x75,0x5e,0x06,0x7a,0x80,0x6a,0x1b,0x57,0xb2,
+ 0x60,0xf4,0x6f,0xb6,0x83,0x1d,0x84,0x65,0x43,0xc8,0x0a,0xa9,0xf9,0x16,0x43,0x92,
+ 0x3d,0x87,0xa5,0x49,0x13,0x12,0x03,0xc3,0x1c,0x6b,0x1b,0x95,0xc1,0x27,0x1c,0x63,
+ 0x9c,0x8f,0xce,0xa7,0x68,0x8c,0x71,0x34,0x4a,0x16,0x42,0x41,0x21,0x08,0xf9,0x9f,
+ 0x8e,0xb9,0xf6,0xa6,0x44,0xa6,0xdc,0xc6,0xaf,0xe6,0x3c,0xb8,0x20,0x06,0x00,0x67,
+ 0xdc,0xd4,0xad,0x37,0x1a,0xbd,0xda,0x5b,0x0e,0x40,0x51,0x23,0x58,0x83,0x95,0x2e,
+ 0x59,0x25,0xd9,0xc0,0x18,0xe4,0x1a,0x6a,0x5a,0x5b,0xee,0x73,0x25,0xcb,0x21,0x07,
+ 0x7a,0xa4,0x40,0x8f,0x34,0xe7,0xa1,0x3e,0xde,0xd4,0xbe,0x60,0x62,0x12,0x5d,0xe6,
+ 0x47,0x24,0x04,0x50,0x76,0xa8,0x15,0x64,0x24,0x4c,0xd1,0x31,0xdf,0x34,0xaa,0x0b,
+ 0x21,0x04,0x8c,0x7d,0x07,0xa7,0x34,0xaf,0x6d,0xc4,0x9a,0x76,0x4b,0x61,0x66,0xb7,
+ 0x61,0x27,0xda,0x21,0x51,0x24,0x2c,0x32,0x11,0x46,0x08,0x6f,0x7f,0x7a,0x8e,0x18,
+ 0xaf,0x1d,0xe2,0x87,0x6a,0x99,0x08,0x3b,0x41,0xc6,0x19,0x7d,0x2b,0x46,0xdd,0x7e,
+ 0x6f,0x24,0xc8,0x50,0x48,0x01,0x5c,0x1e,0x5b,0xfd,0x9c,0x76,0xab,0xcf,0x04,0x8f,
+ 0x19,0x8f,0x6c,0xa2,0x3d,0xc4,0xb0,0x55,0xc0,0x03,0xbf,0x34,0xd7,0x92,0x06,0xf4,
+ 0xb5,0x8c,0x3b,0x98,0x5f,0xc9,0x05,0x98,0x46,0x77,0x63,0x69,0x41,0xf2,0xf1,0xd8,
+ 0xfa,0x55,0x24,0xb0,0x9a,0xe7,0xcb,0xc4,0xad,0x96,0x62,0x08,0x20,0x2b,0x37,0xb8,
+ 0x3d,0xeb,0xa9,0x96,0x03,0xe4,0x34,0x6f,0x14,0x6b,0x1b,0x2e,0xd8,0xcb,0x92,0x0f,
+ 0x5e,0x32,0x69,0x2d,0xed,0x84,0x09,0x9d,0xd2,0x48,0xe5,0x71,0x2b,0x81,0xfe,0xa9,
+ 0xc7,0x65,0xf6,0xe9,0x43,0xbb,0x57,0x46,0x4e,0xc9,0x9c,0xab,0xe9,0x91,0xa5,0xc8,
+ 0x99,0xa0,0x95,0x95,0x57,0x12,0x12,0x39,0x71,0xed,0xed,0x55,0xe7,0xb1,0x49,0x6d,
+ 0xef,0x3c,0x88,0xfc,0xc6,0xf9,0x70,0xa1,0x70,0x47,0xbe,0x3b,0x62,0xbb,0x06,0x80,
+ 0x4c,0xa1,0x56,0x59,0x95,0x88,0x3b,0x5c,0x2e,0x48,0x3e,0xf4,0xe1,0x6f,0x1c,0x4e,
+ 0xad,0x34,0xd2,0xc0,0xcc,0xbc,0xca,0x0f,0x41,0xec,0x3d,0xea,0xe3,0x7b,0x5d,0x82,
+ 0x4d,0x6a,0x70,0x56,0x3a,0x0c,0xc7,0xed,0x6c,0xd1,0xcb,0x3e,0x79,0x8d,0x33,0xd7,
+ 0xb6,0x0f,0xa7,0x4a,0xe4,0x75,0xbd,0x13,0x4f,0xb5,0x84,0x5c,0xbb,0xb3,0xba,0x80,
+ 0xa2,0x24,0x5f,0xbc,0x7b,0x86,0x35,0xed,0xf1,0x89,0x04,0x2b,0x6d,0xe4,0xc8,0x1a,
+ 0x42,0x50,0x3c,0x68,0x77,0x20,0xec,0x4f,0xe7,0x5e,0x63,0xe3,0x0b,0x35,0xb7,0xd3,
+ 0x2f,0xd9,0x10,0x5b,0xf9,0x2b,0xb8,0x31,0x7c,0xb3,0x1c,0xf7,0x1e,0xf9,0xaf,0xb6,
+ 0xe1,0x28,0x73,0xe2,0xa1,0x1b,0xea,0xdd,0x8f,0x9a,0xe2,0x1a,0xce,0x96,0x1a,0x53,
+ 0x4b,0x64,0xd9,0xf2,0xaf,0x89,0x2e,0x61,0xb9,0x9a,0x25,0x8a,0x05,0x81,0x2d,0xe4,
+ 0x25,0x63,0x50,0x06,0x38,0xe7,0x35,0xcc,0xb2,0x31,0x55,0xb9,0x1e,0x60,0x57,0x25,
+ 0x55,0x00,0xe0,0x0f,0x5c,0x56,0x97,0xdb,0x56,0x27,0x95,0xaf,0x1e,0x21,0x79,0x2b,
+ 0xef,0x78,0x99,0x0f,0xee,0xfd,0x85,0x56,0xb6,0xd8,0x43,0x34,0x2d,0x22,0x96,0xea,
+ 0x4b,0x67,0x3e,0xc3,0xd0,0x73,0x5f,0xdc,0xd9,0x75,0x38,0xd3,0xa3,0x1a,0x71,0x7a,
+ 0x24,0x7f,0x20,0xe3,0xaa,0xca,0x75,0x5d,0x49,0xbd,0x58,0xb1,0x46,0x52,0x16,0x95,
+ 0x0c,0x41,0xcf,0x47,0x55,0xc6,0x0f,0x61,0x9a,0x8f,0xfd,0x60,0x39,0x8f,0x0e,0x83,
+ 0x00,0xb3,0x60,0x63,0xb9,0x35,0x79,0x23,0x90,0x85,0x8c,0x2c,0x6a,0xca,0x4b,0xa9,
+ 0x23,0x21,0xbd,0x8d,0x56,0xc4,0x85,0x55,0xa6,0x89,0x1c,0x4c,0x19,0x98,0x29,0xca,
+ 0x81,0xe9,0x5e,0x82,0xd3,0x46,0x79,0xb7,0xd6,0xec,0xad,0x2c,0x71,0x43,0xb9,0x6e,
+ 0x5b,0xef,0x36,0xe2,0x4a,0xe7,0x77,0xbe,0x7d,0x29,0xb1,0xbf,0x97,0x2c,0xd1,0x42,
+ 0x60,0x94,0x0c,0x15,0xc8,0xe4,0x91,0xd8,0x03,0xf8,0x54,0xf2,0xc4,0xd2,0xed,0x46,
+ 0x78,0xd0,0x07,0x00,0x10,0x00,0x03,0x9e,0xf5,0x4a,0x79,0x5a,0x07,0xfb,0x43,0xca,
+ 0x7c,0xdd,0xc5,0x87,0x00,0xf7,0xe8,0x2a,0x2a,0xcd,0x25,0xa9,0xb5,0x3b,0xc9,0xd8,
+ 0xa9,0x73,0x71,0xb0,0xba,0xc7,0x19,0xf2,0xc2,0x92,0xe4,0x8e,0x5b,0x3d,0x4e,0x3b,
+ 0x0a,0xe4,0x6e,0x89,0x80,0x30,0x81,0xcc,0xae,0x18,0x2a,0xbc,0x87,0x84,0x5c,0xf2,
+ 0x6b,0x6e,0xfe,0x48,0xcc,0xb7,0x0b,0x14,0xc6,0x62,0xca,0x37,0x6e,0xc8,0x31,0x82,
+ 0x7d,0x3d,0x6b,0x9e,0x9c,0xc6,0x8c,0xd0,0x22,0xc9,0x33,0x91,0x9f,0x90,0xf2,0x4e,
+ 0x3b,0x9a,0xf2,0xab,0xe2,0x22,0xde,0x87,0xbf,0x81,0xa3,0x6e,0x86,0x14,0x92,0x49,
+ 0x34,0xf2,0x62,0xe1,0x99,0x09,0x2c,0x02,0x81,0x83,0xcf,0x51,0x51,0x35,0xd4,0x50,
+ 0xc4,0x89,0x71,0x26,0xc8,0x99,0x4b,0x02,0x14,0x6d,0x53,0xfd,0xd3,0xdf,0x9a,0x1d,
+ 0xfe,0x79,0x22,0x8d,0x23,0x24,0x10,0x36,0xa8,0xc9,0x8f,0xf1,0xf4,0xe6,0xb0,0xae,
+ 0x15,0x71,0x38,0xfb,0x9d,0x94,0x96,0xc8,0x18,0xf6,0xf4,0xed,0x5e,0x3d,0x5a,0xd6,
+ 0x7a,0x6c,0x7d,0x4d,0x0a,0x2a,0x4a,0xdd,0x0d,0xcf,0xed,0x0b,0x67,0x89,0x52,0x38,
+ 0xf6,0x4c,0x79,0x67,0x2b,0xc1,0x20,0xf6,0xa7,0x25,0xc2,0x4b,0x16,0x51,0x97,0xcb,
+ 0x2c,0x18,0x02,0x39,0x2b,0x9e,0x40,0xae,0x59,0x8e,0xc8,0xfc,0xe8,0xf2,0xcd,0x90,
+ 0x58,0x32,0x1d,0xcb,0xce,0x3f,0x2a,0xb5,0xe6,0x4b,0x1c,0x91,0xf9,0x1b,0x38,0x00,
+ 0x31,0x75,0x1f,0x2f,0x1d,0xbd,0xab,0x9d,0x57,0x77,0xd8,0xe9,0x96,0x0d,0x25,0xa1,
+ 0xd0,0x3d,0xc2,0x22,0xa3,0x79,0x42,0x71,0x9e,0x40,0x53,0x8c,0xf5,0xe7,0xf0,0xa9,
+ 0xad,0x9a,0xde,0x46,0x3e,0x74,0x72,0xec,0x60,0x64,0x20,0x92,0x18,0x8e,0xa3,0x8a,
+ 0xc3,0x17,0x8f,0xb4,0xf9,0xb2,0x61,0x49,0xc0,0x2a,0xb8,0x0a,0x7e,0x9f,0xd6,0xb5,
+ 0x61,0xb9,0x53,0x1b,0x48,0x64,0x96,0xe1,0x11,0xb0,0xca,0x0f,0xce,0x47,0xfb,0x27,
+ 0xf1,0x15,0xdb,0x4e,0x69,0xbb,0xdc,0xe4,0xa9,0x45,0xa4,0x5f,0x4f,0x2c,0xc6,0xe5,
+ 0x81,0xde,0xee,0x1d,0x57,0x39,0x2b,0xef,0x5b,0x88,0xa8,0x16,0x36,0x69,0x43,0x86,
+ 0x60,0xc5,0x81,0x3f,0x37,0x6e,0x07,0x63,0x59,0x6b,0x25,0xbf,0x99,0x6b,0xb1,0x64,
+ 0x89,0x9d,0x19,0xd8,0xe3,0x88,0xf9,0xe8,0x4d,0x6c,0xc4,0x1d,0x84,0x46,0x23,0x10,
+ 0x66,0x04,0x72,0xa4,0xee,0x39,0xee,0x7d,0x79,0xaf,0x4e,0x8e,0xbb,0x9e,0x4e,0x2a,
+ 0x4d,0x2b,0x33,0x4e,0x06,0xc4,0x9b,0x80,0x2c,0x19,0x48,0xdc,0x0f,0x2a,0x0f,0x62,
+ 0x2a,0xc4,0x7e,0x5a,0x02,0x92,0xc7,0x1c,0x51,0x2e,0x46,0x58,0x72,0x78,0xf4,0xa6,
+ 0xc1,0x6e,0xcf,0x98,0xa4,0x91,0x43,0x2a,0x86,0x63,0x8c,0x63,0xdf,0x3f,0x81,0xab,
+ 0x70,0x46,0x50,0xa7,0x96,0x18,0x2b,0x36,0x00,0x60,0x09,0x7f,0xf3,0x9a,0xf5,0x69,
+ 0xed,0xcc,0x8f,0x0e,0xac,0x92,0xd8,0x8f,0x7f,0x9b,0xb2,0x64,0x6c,0x42,0xe3,0xe4,
+ 0x52,0x0f,0xc8,0x07,0xa8,0xfc,0xaa,0x78,0xa0,0x67,0x69,0x11,0x01,0x91,0x80,0xc8,
+ 0x52,0xa7,0xe5,0x1d,0x73,0x9a,0x91,0x6d,0xe0,0x42,0xad,0x82,0x58,0x12,0xd9,0x07,
+ 0x18,0xe7,0xa0,0x14,0xf9,0x0f,0x98,0x10,0x99,0xa5,0xb7,0x42,0xc0,0x15,0x66,0xc8,
+ 0x61,0x9e,0x87,0x1d,0xeb,0xa5,0x6a,0xb4,0x38,0xe5,0x34,0xf4,0x43,0x7c,0xa8,0x58,
+ 0x2e,0xd7,0x99,0xc3,0xf3,0x80,0xd8,0xcb,0x75,0xc9,0xa1,0x11,0x5c,0x07,0x2f,0xb4,
+ 0x29,0xdb,0x21,0x23,0x18,0xe3,0xd2,0x9c,0x30,0x8a,0xec,0x77,0x37,0xca,0x43,0x48,
+ 0xbd,0xbe,0xa0,0x54,0xab,0xe5,0x2c,0x4a,0x1c,0xa8,0x4d,0xd8,0x2b,0xbb,0x39,0xcf,
+ 0xf5,0xaa,0xb5,0xcc,0x5c,0x99,0x54,0x05,0x2b,0xbc,0x33,0xc8,0xa0,0x65,0x50,0x8e,
+ 0x87,0xd4,0x9a,0x0c,0x32,0xce,0x63,0x48,0xc3,0xc5,0x32,0x92,0x4a,0xa3,0x00,0x1b,
+ 0x8e,0xbe,0xe7,0xad,0x4a,0x58,0x49,0x0b,0x34,0x78,0xda,0xac,0x15,0x8b,0x1e,0x83,
+ 0xfc,0xe6,0x9e,0xe3,0xe7,0x67,0x3b,0x63,0x40,0xdb,0x95,0x76,0xe7,0x8f,0xc3,0xf1,
+ 0xaa,0x5a,0x3b,0xfa,0x87,0x33,0x5a,0x91,0xac,0x03,0xcc,0x01,0x63,0x81,0xa4,0x75,
+ 0x19,0x3e,0x84,0x7b,0x74,0xcf,0x4a,0x8e,0x34,0x76,0x94,0x01,0x12,0xec,0x04,0xe0,
+ 0x8c,0x02,0xc3,0xb8,0x14,0xbb,0xa3,0x2e,0x5e,0x34,0x96,0x58,0x40,0xc9,0x20,0x60,
+ 0xa8,0xf5,0xc5,0x3d,0x18,0x7c,0x87,0x63,0xa3,0x02,0x19,0x0a,0x9e,0xb9,0x1e,0xff,
+ 0x00,0x5a,0x2d,0x6d,0x3a,0x8d,0xb7,0xd4,0x8a,0xe0,0x19,0x9a,0x1c,0x08,0xe2,0x65,
+ 0x24,0x92,0x17,0xee,0xaf,0xa6,0x3b,0x9e,0xb4,0x60,0x22,0xbb,0x4c,0xa8,0xc0,0x80,
+ 0x76,0x97,0x3c,0x0e,0xdc,0xfa,0xd5,0x97,0xb9,0x56,0x05,0x4b,0x15,0x0a,0xd9,0x6d,
+ 0xcb,0x8c,0x1f,0x4c,0xfb,0xd0,0x52,0x20,0xa1,0x23,0x5f,0x33,0x7f,0x24,0x8e,0x8a,
+ 0x7a,0xf1,0x50,0xed,0x60,0xe6,0x76,0x49,0x95,0x11,0x4f,0x9f,0xbc,0x46,0xe0,0x9c,
+ 0xb3,0x33,0x72,0x00,0x23,0xa6,0x2a,0x48,0x95,0x84,0x2b,0x95,0x2c,0x81,0x98,0x30,
+ 0xc7,0x1c,0x74,0x6c,0x55,0x81,0x39,0x28,0xc2,0x28,0xd9,0xca,0x7c,0xae,0x49,0x23,
+ 0x03,0xfb,0xc7,0xf3,0xa6,0x48,0x91,0xed,0x63,0x0c,0xa5,0xa0,0x27,0x6a,0x93,0xfc,
+ 0x27,0xbf,0xe7,0x4f,0x96,0xca,0xe0,0xe4,0xdb,0xd4,0xaf,0x3a,0xb9,0x91,0x8c,0x6e,
+ 0x25,0x84,0xf2,0x59,0x46,0x02,0x8f,0x42,0x29,0xca,0xaf,0x1a,0x2c,0x0c,0x18,0xf3,
+ 0xf3,0x33,0x8c,0xe5,0x7d,0xaa,0x79,0x3f,0xe5,0xbd,0xc3,0xa1,0x57,0x2a,0x0e,0xc8,
+ 0xc8,0xda,0x38,0xc0,0xcf,0xbd,0x43,0x8f,0x2d,0x08,0x4f,0x94,0x90,0x36,0x86,0x27,
+ 0x29,0x9e,0xd9,0xac,0x5a,0x6b,0x46,0x3e,0x66,0xd5,0x81,0xd8,0x9d,0xb1,0xab,0x80,
+ 0xaa,0x70,0x48,0x51,0x93,0xef,0x50,0x94,0x32,0xb5,0xc3,0x86,0x45,0x8c,0x31,0x08,
+ 0xb9,0x3d,0x31,0x4a,0xdb,0x64,0x91,0x4f,0x98,0xe8,0x89,0xc1,0xe7,0x2c,0xc7,0x1d,
+ 0xcf,0xa7,0xf8,0xd4,0xd2,0x33,0x81,0x2b,0x31,0x8c,0x60,0x85,0x52,0x46,0xde,0x4f,
+ 0xa6,0x2a,0x24,0xb4,0xb0,0xd6,0x9b,0x10,0xbe,0xd4,0x89,0x26,0x21,0x5e,0x3c,0x6d,
+ 0x27,0xae,0x46,0x31,0xd2,0x9e,0x21,0x8e,0x48,0xd1,0x58,0xfe,0xf0,0x49,0x94,0x60,
+ 0x00,0x18,0xc7,0x43,0xf9,0xd4,0x65,0xe4,0x85,0xdc,0x3a,0x3b,0x28,0x20,0x31,0x55,
+ 0xeb,0xcd,0x58,0x78,0xe4,0xd8,0x89,0x16,0xd3,0x03,0x12,0x49,0x51,0xca,0x9c,0xfa,
+ 0xd4,0xc9,0x36,0x92,0x29,0xbb,0x34,0x54,0x71,0x1f,0x99,0x20,0x50,0x59,0xd0,0x82,
+ 0x1b,0x04,0xee,0xf5,0x18,0xfc,0x2a,0x10,0x8c,0xd8,0x71,0x1b,0x27,0x19,0x55,0x00,
+ 0x63,0x6f,0xf9,0x35,0x61,0xd8,0xab,0xf9,0x3b,0x40,0x51,0xc8,0x7d,0xc7,0x0d,0xfe,
+ 0xce,0x7f,0x2a,0x4f,0xb3,0xa4,0x99,0x0d,0x33,0xab,0xa0,0xda,0x06,0xe1,0x84,0xff,
+ 0x00,0x1a,0xe5,0x95,0xbe,0x24,0x6a,0x9e,0x80,0xa9,0x84,0x90,0x4a,0x16,0x04,0x58,
+ 0x7c,0xc0,0xe4,0x83,0xb3,0x27,0xb5,0x42,0xc1,0xc8,0xc3,0x32,0xe7,0xd8,0x0f,0x9b,
+ 0x8f,0x4f,0xeb,0x53,0x15,0x9a,0x2f,0x2d,0x8c,0x42,0x58,0x9b,0x81,0x23,0x01,0xf3,
+ 0x63,0xb6,0x3d,0x2a,0x32,0xeb,0x87,0x7d,0x87,0x7b,0x0c,0x12,0x4e,0x00,0xe7,0xa0,
+ 0xa9,0xa8,0x92,0xdc,0xa8,0xbb,0xbd,0x08,0x27,0x8c,0x7e,0xed,0x80,0xf3,0x10,0xaf,
+ 0x00,0x8f,0x9b,0x77,0xa5,0x66,0xc5,0x2c,0x57,0x38,0x00,0xc6,0xcc,0x8f,0x90,0x54,
+ 0x8c,0x9f,0x62,0x2b,0x42,0xee,0x45,0xf2,0xb6,0x3c,0x92,0x44,0x8a,0x01,0x2a,0xa4,
+ 0x9d,0xa7,0x3f,0xc2,0x7f,0x0a,0xa5,0xa6,0x23,0xb5,0xc8,0x22,0x05,0x46,0x70,0x5c,
+ 0x30,0x00,0x17,0x6f,0x56,0x3d,0xb1,0x5f,0x95,0xf8,0x93,0x8f,0x86,0x1f,0x01,0x39,
+ 0xc9,0xea,0x8f,0xd2,0xbc,0x34,0xcb,0xe5,0x8a,0xcc,0xa1,0x4f,0xa7,0x52,0xc2,0x16,
+ 0x17,0xc5,0xe0,0x3b,0xae,0x18,0xec,0x74,0x2b,0x8d,0xe7,0xb0,0xc7,0x4c,0x57,0x98,
+ 0x7c,0x50,0x96,0x08,0x73,0x69,0x3a,0xf9,0xa4,0x7f,0xad,0x68,0xdb,0x25,0x1b,0x1f,
+ 0x70,0x11,0xdb,0x91,0x5e,0xb2,0xb7,0x71,0xda,0xcb,0x3c,0xf7,0x8c,0x2d,0x22,0x45,
+ 0x20,0x3b,0x60,0x2b,0x49,0x8e,0x09,0x3f,0x95,0x7c,0xa7,0xe3,0x1d,0x5a,0xea,0xeb,
+ 0x5b,0xd4,0xb4,0xf9,0x5a,0x4d,0xe6,0x40,0x23,0x9d,0x48,0x29,0x23,0x60,0x1c,0x81,
+ 0xd3,0xd6,0xbf,0x88,0x70,0x3f,0xbd,0xae,0xe6,0xdf,0x99,0xfd,0xc9,0x99,0x35,0x47,
+ 0x0c,0xa9,0xbd,0xb6,0x38,0x0f,0x3a,0x25,0x92,0x65,0x89,0x84,0xea,0xcf,0xb9,0x5d,
+ 0xc1,0x04,0x2f,0xf7,0x4f,0xd2,0x89,0x1e,0x36,0x45,0xde,0xce,0x54,0x13,0x93,0x8e,
+ 0x57,0xdb,0x3e,0x9c,0xd4,0xb3,0xc3,0x1e,0x43,0x2c,0x2d,0x14,0xe3,0x3b,0xc1,0x38,
+ 0xc8,0x3d,0x0f,0xf3,0xa8,0x4c,0x22,0x38,0x1c,0x12,0x77,0x13,0xb4,0x64,0x7d,0xff,
+ 0x00,0x6c,0xfb,0x57,0xd2,0xd9,0x2b,0x24,0x7c,0x17,0xc2,0xec,0x3c,0xcd,0x24,0x61,
+ 0x24,0xb7,0xb7,0x4f,0x38,0x9c,0x00,0xdd,0x09,0xed,0x9a,0xa0,0x3c,0xd0,0x5b,0xcd,
+ 0x55,0x0e,0x41,0x06,0x35,0xfb,0xbf,0x85,0x58,0x69,0x23,0x58,0x41,0x7b,0x96,0xde,
+ 0xaa,0x40,0x56,0xec,0xa7,0xd0,0xfa,0xe6,0xa1,0x82,0x21,0x6d,0x08,0x66,0x7b,0xab,
+ 0xc0,0x48,0x90,0x4e,0xe7,0xe6,0x45,0xc6,0x36,0xf3,0xef,0x8a,0x13,0x56,0x2a,0x4d,
+ 0xdc,0x8a,0x72,0xc1,0xbc,0xc0,0x16,0x67,0x11,0x80,0x14,0x0c,0x79,0x7e,0xe4,0xd5,
+ 0x95,0x99,0x15,0x00,0x86,0x35,0x91,0xdc,0xe2,0x32,0x0f,0x04,0xf7,0xa6,0xec,0x01,
+ 0xd5,0x54,0xb1,0x04,0x16,0xce,0x0f,0x4f,0xf6,0xaa,0x05,0x22,0x68,0xce,0xd8,0xde,
+ 0x68,0xce,0x43,0x32,0x1c,0x6d,0x1e,0xdf,0xe3,0x55,0xa6,0xc4,0x4a,0xe9,0xde,0xe6,
+ 0x94,0x91,0xf0,0x24,0x90,0xbb,0x31,0x5d,0xcd,0xb4,0x63,0x77,0xae,0x69,0x77,0xa1,
+ 0xfb,0x0c,0x91,0xbf,0x93,0x21,0x7d,0x9b,0x31,0x93,0x27,0xb0,0xa8,0x7f,0xd1,0xe2,
+ 0x8a,0x01,0xbd,0xd6,0xe4,0x00,0x42,0x64,0x9c,0x8f,0x73,0x52,0xdb,0x30,0x56,0xdf,
+ 0x11,0x67,0x85,0x8e,0x63,0x95,0x9b,0x07,0x77,0x5e,0x3d,0x29,0xe9,0xbb,0x33,0x6d,
+ 0x26,0xd2,0x64,0x87,0xc9,0x32,0xc9,0x07,0xce,0x42,0xbe,0x11,0x40,0xc6,0x70,0x7f,
+ 0x8b,0xd3,0xbd,0x3a,0x1f,0x35,0x65,0x3e,0x6e,0x50,0x6f,0x3b,0x4a,0x81,0xc7,0xa0,
+ 0x02,0x9b,0x29,0xb9,0x31,0xc9,0x00,0x78,0x83,0x74,0x46,0x50,0x01,0x1f,0x5c,0xd4,
+ 0x51,0x4b,0x22,0x85,0xb3,0x04,0x24,0x9b,0x77,0x49,0x23,0x0f,0xbb,0xeb,0xc9,0xa4,
+ 0xae,0xd6,0xa3,0x4e,0xd2,0x44,0x97,0x11,0x5c,0x16,0x7b,0x8f,0x2b,0xe4,0x38,0x65,
+ 0x2c,0xf9,0x04,0x7a,0x11,0xeb,0xcd,0x3d,0x67,0xb7,0x51,0xe6,0x0c,0x25,0xa1,0x3b,
+ 0xd9,0x19,0x39,0xdc,0x3f,0xfd,0x54,0xe4,0x8e,0xcc,0x25,0xb7,0x94,0x26,0xf2,0xcb,
+ 0x13,0xb9,0xd8,0x92,0x4f,0xb0,0x35,0x04,0xb2,0x49,0x88,0x0c,0x33,0x08,0x95,0x9c,
+ 0xa1,0xca,0x83,0x90,0x7b,0x1f,0xd6,0xb2,0xde,0xe9,0x93,0x76,0x95,0xdd,0xae,0x68,
+ 0xb5,0xea,0xcc,0x24,0x36,0xf0,0xc7,0x24,0x45,0x43,0xc8,0xa4,0x6d,0xe3,0xb1,0xaa,
+ 0xd2,0x9d,0xf7,0x2c,0xd8,0x2c,0x5d,0x41,0x85,0x40,0x23,0xaf,0x50,0x05,0x2c,0x51,
+ 0x96,0x6d,0xf1,0x2a,0x2f,0x99,0xf2,0x8c,0x31,0x6d,0xd8,0xed,0xed,0x4d,0x8e,0x06,
+ 0x2d,0x6f,0x1a,0xbc,0x92,0x30,0x39,0x0e,0x3f,0x80,0x0e,0xe6,0xa5,0xd9,0xbb,0x83,
+ 0xba,0x63,0xe1,0x46,0x69,0xe5,0x9a,0x78,0xda,0x06,0x0c,0x32,0x8a,0x32,0x08,0xe9,
+ 0x91,0xed,0x56,0xad,0x63,0x94,0xf9,0xb3,0xc6,0x72,0x44,0xa0,0x81,0x90,0x0b,0x0a,
+ 0x7a,0xa4,0x39,0x96,0x45,0x99,0xb6,0xc8,0x32,0x58,0x2f,0xe8,0x7d,0x0d,0x48,0xf0,
+ 0xa6,0x03,0x16,0x22,0x00,0x01,0x27,0x6f,0x47,0xec,0x09,0xfc,0xeb,0x16,0xd0,0xd7,
+ 0x46,0x87,0xfd,0x94,0x47,0x6f,0x77,0x71,0x1c,0x91,0xc5,0xe6,0xb6,0xf5,0x8d,0xdc,
+ 0xb1,0x42,0x0e,0x2a,0x78,0x62,0x90,0x96,0x86,0xed,0x0a,0x66,0x3f,0x33,0x70,0x18,
+ 0xe9,0xd0,0xd4,0x42,0xce,0xea,0x5b,0x81,0x31,0x36,0xf3,0xdb,0xc6,0x40,0x08,0x10,
+ 0x92,0xe7,0xdc,0xf3,0xc5,0x74,0x32,0x24,0x89,0x14,0x6d,0x24,0x61,0xe7,0x41,0xe5,
+ 0xa3,0x60,0x00,0xd9,0xf5,0x03,0xb8,0xcd,0x28,0xdd,0x26,0x9e,0xac,0xcd,0xeb,0xae,
+ 0xc6,0x65,0xba,0x5b,0x42,0x19,0x9a,0x44,0x46,0x72,0x24,0x91,0x51,0x72,0x1d,0x80,
+ 0xe9,0xc7,0x4c,0x8a,0xd9,0x8a,0xd9,0xa4,0x32,0x4e,0xb1,0x85,0x24,0xee,0x11,0x81,
+ 0x80,0xca,0x7a,0xfc,0xdd,0xa9,0x91,0x59,0x5c,0xc9,0x3d,0xb0,0xb4,0x16,0xf1,0x95,
+ 0x04,0xc9,0x1c,0x83,0xa9,0xf5,0x1f,0xe1,0x5b,0x16,0xb1,0x5c,0x25,0xb8,0xb6,0x95,
+ 0x5c,0xc6,0x37,0x10,0x50,0x83,0x93,0x9e,0xa6,0xa9,0x35,0xab,0x47,0x3c,0x93,0x7d,
+ 0x35,0x26,0x8e,0xdd,0x21,0x87,0xcb,0x57,0xdd,0xe6,0x2e,0x47,0x6d,0xbe,0xd9,0xfc,
+ 0xaa,0xe4,0x20,0x45,0x6d,0x6b,0x04,0xa5,0xa7,0xdb,0xd4,0xe0,0x1c,0x8c,0xf0,0x29,
+ 0x0a,0x04,0x31,0xc3,0x02,0x03,0x0a,0xae,0xec,0x93,0xf7,0x8e,0x2a,0x78,0x36,0x2b,
+ 0x2a,0xc4,0xb9,0x68,0xc7,0xcc,0x48,0xe7,0xf2,0xad,0xe3,0xbe,0xda,0x09,0x6a,0x4e,
+ 0xd6,0xf2,0xc7,0xf6,0x97,0xf3,0x67,0x95,0x37,0xe6,0x31,0x8c,0x28,0xc8,0xe9,0x8a,
+ 0xa3,0x26,0xc6,0x50,0xcf,0x1c,0xa1,0x49,0xce,0xd2,0x00,0x0b,0xee,0x6a,0xca,0xc9,
+ 0x21,0x25,0x8b,0x48,0xc1,0x38,0x40,0x73,0xb4,0x9a,0x89,0xd9,0x8a,0xe2,0x48,0x56,
+ 0x71,0x8e,0x65,0x63,0x85,0x1e,0xbc,0x56,0x91,0xb5,0xcc,0x56,0xd6,0x65,0x6f,0xdc,
+ 0x90,0x92,0xa2,0x9d,0xbb,0xb1,0xf2,0x9f,0xbc,0x3d,0x45,0x4a,0x84,0xc6,0xca,0xfb,
+ 0x0a,0xa9,0x6c,0x90,0xe3,0x9f,0x4e,0x0f,0xe5,0x40,0xb3,0x44,0x75,0x96,0x39,0xd9,
+ 0x6d,0x99,0x37,0x15,0x23,0x2a,0xa4,0x0e,0xd5,0x2b,0xda,0x99,0x00,0x43,0x77,0xbc,
+ 0xb0,0xcb,0x48,0xc0,0xe7,0x23,0xa0,0x51,0xd3,0x15,0xa2,0x5d,0xcd,0x55,0xd2,0xd4,
+ 0xaa,0x65,0x96,0x4b,0xbd,0x87,0x60,0x66,0xf9,0x40,0x04,0x0c,0x83,0xdf,0x35,0x78,
+ 0x40,0xbc,0x34,0xcd,0x1c,0x4e,0xa7,0x6a,0x92,0x79,0x23,0xfd,0x91,0xf8,0x0a,0xb1,
+ 0x65,0x60,0x8d,0x12,0x4e,0xb1,0xfc,0xce,0xa0,0xab,0x33,0x0c,0x9e,0x7a,0x81,0xf8,
+ 0x1a,0x97,0xec,0xd1,0x97,0x71,0x00,0x69,0x25,0x2b,0x97,0x66,0x03,0x93,0xeb,0x9e,
+ 0xdd,0x2a,0xd4,0x93,0x76,0x44,0x36,0xd9,0x5b,0x2e,0xe9,0x03,0xba,0x94,0x50,0x48,
+ 0xc2,0x8e,0x01,0x3e,0xa7,0xd6,0x9d,0x1a,0xa2,0xc5,0x2b,0x06,0x59,0x58,0x0c,0x15,
+ 0x61,0xc9,0x3f,0xec,0x9e,0xd4,0xcb,0x99,0x26,0xb5,0x8c,0xab,0x8f,0xdc,0xed,0x0f,
+ 0x21,0x2f,0xf2,0x9f,0xfe,0xbd,0x62,0x0d,0x59,0x27,0x45,0x9d,0x10,0xa9,0x04,0x90,
+ 0x58,0xf2,0x4f,0x6a,0x7d,0x35,0x13,0x76,0x76,0x7b,0x97,0x67,0x76,0xdc,0x54,0xc8,
+ 0x64,0x98,0x00,0x00,0x03,0x38,0xf5,0xe3,0xbd,0x50,0xbb,0xba,0xf2,0x24,0xde,0x44,
+ 0x91,0xae,0x15,0x91,0x82,0x74,0x3d,0xc0,0xa8,0x2e,0x59,0xed,0xdd,0xa5,0x0c,0x8c,
+ 0x76,0x83,0x80,0x4e,0x14,0xd6,0x65,0xce,0xa8,0x24,0x84,0xc9,0x24,0xed,0x3b,0x29,
+ 0x04,0xa2,0x13,0x83,0x83,0xcf,0xe1,0x59,0x37,0x61,0x68,0x9e,0xba,0x15,0xaf,0x35,
+ 0x49,0xe7,0xf3,0xad,0xde,0x36,0x85,0x96,0x5d,0xcc,0xcc,0x06,0x5c,0x1c,0x72,0x3d,
+ 0xbe,0xb5,0x89,0x71,0xe7,0xa3,0x98,0x5a,0x7d,0xca,0x49,0x25,0x88,0x00,0x01,0xe8,
+ 0x00,0xa7,0xdc,0xcb,0x25,0xc3,0x17,0x57,0x31,0xa1,0x6d,0xfb,0x1b,0xab,0x8e,0xc0,
+ 0x54,0x11,0xb1,0x11,0x83,0xfe,0xa7,0x73,0x6d,0x55,0x24,0x1d,0xbd,0xf1,0x49,0x34,
+ 0xb5,0x63,0xd5,0xbd,0x0a,0xf7,0x11,0xc2,0x8a,0xd2,0x4d,0xfb,0xb9,0xe4,0x1b,0x30,
+ 0x0e,0x03,0x7a,0x60,0x76,0x3c,0xd4,0x12,0xc0,0x8b,0x34,0x68,0xfe,0x6e,0x59,0x44,
+ 0x8c,0xb1,0x9c,0x83,0x8e,0xa3,0x77,0x6a,0xb3,0x33,0x29,0x02,0x25,0x73,0xb8,0x36,
+ 0xe7,0x2c,0xbf,0x78,0x7a,0xe4,0xfd,0x2a,0xb0,0x8c,0x80,0x17,0xf7,0x92,0x31,0x7c,
+ 0x17,0x5c,0x7c,0xc0,0xf4,0x18,0xed,0x4e,0xcb,0x4b,0x6e,0x68,0xec,0xba,0x12,0x44,
+ 0xc9,0x00,0x9e,0x45,0x66,0x50,0xf2,0x86,0xda,0xa4,0x10,0xa0,0xf6,0x04,0xfa,0xd2,
+ 0xbc,0x49,0x83,0x22,0x4d,0x80,0x5f,0x6c,0x79,0x6c,0x10,0x3b,0x91,0xed,0xd6,0x96,
+ 0x3f,0x2a,0x25,0x4f,0x2d,0x8a,0x80,0xdb,0x55,0x58,0x70,0x4e,0x3a,0x91,0xe9,0xcd,
+ 0x32,0x68,0xf6,0x42,0x1b,0xf7,0x7d,0x76,0xb1,0xc1,0x25,0x89,0xa5,0xb3,0xb0,0x35,
+ 0xa6,0xa5,0x84,0x0d,0x75,0x23,0x24,0x92,0xb4,0xa4,0x28,0x25,0x98,0x6d,0x04,0x8e,
+ 0xc7,0xd6,0xa3,0xf3,0x21,0x91,0xd1,0x04,0xc2,0x1b,0x86,0x23,0x2c,0x46,0x01,0xfa,
+ 0x0f,0x4e,0xb4,0x05,0xf3,0xad,0xed,0x5a,0x45,0x24,0x97,0xf9,0x40,0x6c,0x63,0x1d,
+ 0xf1,0x53,0x00,0x26,0x12,0x6d,0x30,0xc8,0x8a,0x31,0xf3,0x2f,0xdc,0xfa,0x1e,0xf9,
+ 0xc0,0xa1,0x19,0xbd,0x75,0xe8,0x4f,0x04,0x32,0x36,0xd6,0xb8,0x48,0x8d,0xb8,0x62,
+ 0x7c,0xc6,0x07,0x73,0x0c,0xf4,0xcd,0x58,0xdb,0xf6,0x89,0x54,0x5a,0xc7,0x21,0xf3,
+ 0x01,0x91,0x83,0x11,0x94,0x3d,0x87,0xd6,0xaa,0x2d,0xd2,0x98,0xbe,0xfe,0x55,0x53,
+ 0x74,0x7b,0xf3,0x8c,0x77,0x03,0xde,0xb4,0xa1,0xd4,0xa3,0x96,0xd5,0x25,0x68,0xe2,
+ 0x32,0xf9,0x7e,0x66,0xd5,0xf9,0x5f,0x3d,0x32,0x69,0x5f,0xaa,0x07,0xb5,0xd3,0x32,
+ 0x27,0x8d,0x96,0x1d,0x8a,0xac,0x8c,0x55,0x89,0x62,0x37,0x64,0x7f,0x43,0x59,0xd6,
+ 0xec,0x9b,0x06,0x0c,0x9f,0x3b,0x01,0xe6,0xe7,0x86,0xcf,0x18,0xc7,0xb5,0x5f,0x92,
+ 0xe6,0x43,0x12,0x3d,0xbb,0xb4,0x77,0x04,0x12,0xa0,0x10,0x46,0xd2,0x3a,0xe3,0xe9,
+ 0x9a,0xaf,0x10,0x84,0x79,0x51,0x43,0x2e,0xe6,0x61,0xe6,0x04,0xce,0x00,0x03,0xad,
+ 0x36,0xf5,0x6e,0xc4,0xea,0xf4,0x8f,0x62,0xb5,0xca,0xc8,0xf6,0xe2,0xe1,0x23,0x99,
+ 0xd9,0x72,0xb3,0x39,0x38,0xf2,0xc0,0x3d,0x73,0xef,0x53,0x79,0x93,0x1f,0x20,0x6e,
+ 0x06,0x39,0x41,0x20,0x85,0xce,0x17,0xdc,0xf5,0xcf,0x02,0x97,0xe5,0x25,0x21,0x45,
+ 0x61,0x10,0x70,0xcc,0x15,0xb2,0xa7,0xda,0xa6,0x89,0x03,0x3b,0x48,0x91,0xca,0x96,
+ 0xc8,0x4a,0xa6,0xf6,0xe5,0xce,0x3a,0x00,0x3a,0x51,0x7b,0x59,0x31,0xb6,0x9b,0xd3,
+ 0xcb,0xfe,0x09,0x55,0xa6,0xb5,0x99,0xe3,0x8b,0x63,0x6c,0xdd,0x96,0x2a,0x39,0x60,
+ 0x07,0x7c,0x74,0xef,0x42,0x08,0x19,0x03,0xa3,0xcf,0xb0,0x92,0xc0,0xc8,0x3a,0x7d,
+ 0x6a,0x41,0x33,0x47,0x34,0x51,0xc7,0x69,0x6c,0x9b,0xc1,0x62,0xca,0xdd,0x0e,0x3b,
+ 0xfb,0xd4,0x6a,0x7f,0x73,0xe6,0x4d,0x91,0x2b,0x36,0x0e,0x07,0xde,0xc7,0x6c,0x76,
+ 0xa3,0x44,0x0e,0xca,0xf7,0xb0,0xa5,0xa2,0x59,0x63,0x97,0xcd,0x56,0x97,0x70,0xca,
+ 0xa9,0xe5,0x97,0xdf,0xf2,0xa6,0xee,0x8a,0x58,0xc3,0x09,0x95,0x22,0x47,0xdc,0x14,
+ 0x75,0x45,0x27,0xaf,0xbd,0x24,0x5f,0xe9,0x12,0xf9,0x8f,0x6d,0x10,0x86,0x3c,0xb6,
+ 0xd5,0x60,0x0b,0x9f,0x5c,0xfe,0x26,0x88,0x08,0x75,0x69,0xd1,0x4f,0x96,0xe4,0x01,
+ 0x12,0xae,0x72,0x33,0xcf,0x26,0x85,0x65,0xa2,0x0d,0x5a,0x4a,0xfa,0x0f,0x0e,0x67,
+ 0xca,0x98,0x88,0x55,0x18,0x32,0x84,0xf9,0x40,0xf4,0x35,0x3a,0x3d,0xc2,0x4b,0x0c,
+ 0x51,0x24,0x72,0x92,0xa4,0xe7,0x83,0xb4,0x7a,0x81,0x50,0x2a,0x48,0xb1,0xcf,0x09,
+ 0x69,0x56,0xdd,0xa4,0xca,0x8c,0xf2,0xfc,0x74,0x2c,0x3a,0x63,0xf2,0xa6,0x6d,0x90,
+ 0x48,0xd2,0x24,0x8e,0xee,0x06,0xc6,0xca,0xf5,0x1f,0xe3,0x43,0xba,0xd1,0x82,0xbb,
+ 0xd5,0xad,0x42,0xe5,0x25,0x26,0x2b,0x79,0xa4,0x67,0x0c,0x0b,0x87,0x2a,0x42,0x8c,
+ 0x7f,0x08,0x35,0x2d,0xb7,0x9a,0x11,0x67,0x55,0x65,0x50,0xe5,0x52,0x22,0xbb,0xb2,
+ 0xb5,0x18,0x68,0x67,0x5f,0x29,0x9d,0xd8,0xc4,0xc4,0x22,0xb1,0xc0,0x43,0xf4,0xa7,
+ 0x20,0x94,0x22,0xb9,0x93,0x64,0x4e,0x76,0x07,0xdb,0x90,0x00,0xe3,0xad,0x0f,0x55,
+ 0xa0,0x2b,0x37,0x74,0xf4,0x1a,0xac,0xc7,0x6b,0x66,0xdd,0x4a,0x92,0xc5,0x72,0x73,
+ 0xf4,0xc5,0x43,0x2c,0x8a,0xec,0xd2,0x59,0xa8,0x90,0x13,0x87,0x3b,0x49,0x23,0xe9,
+ 0x57,0x66,0x60,0x21,0x40,0x22,0x57,0xc0,0xc0,0x75,0x19,0x2d,0xcf,0x4f,0xfe,0xbd,
+ 0x54,0x8d,0x02,0x4a,0x90,0x81,0x24,0x40,0xb6,0xd0,0x43,0x60,0x0c,0xff,0x00,0x78,
+ 0x51,0xe6,0x0d,0xbb,0xea,0x2a,0x79,0x5b,0xf0,0xd2,0x63,0xe5,0x23,0x68,0x1f,0x77,
+ 0xdb,0x8f,0xad,0x35,0x83,0x11,0x94,0x94,0x21,0x1f,0x38,0x0e,0xd8,0x0a,0x71,0x8e,
+ 0x2a,0x49,0xad,0xe3,0x90,0xbc,0x0b,0xb8,0xa2,0xf0,0xa5,0x49,0x39,0x6f,0x7f,0x5a,
+ 0x8e,0x50,0xd2,0x24,0x47,0x70,0xf3,0x46,0x3e,0x52,0xbf,0x73,0x07,0xa0,0xa5,0x16,
+ 0xba,0xb0,0x6b,0xb8,0xf8,0x98,0x22,0xc1,0xe5,0x4a,0x53,0x19,0x66,0x7c,0xf4,0x3d,
+ 0xf2,0x69,0x81,0xcc,0xb1,0xef,0x52,0x24,0x99,0xdc,0xa2,0xaf,0x96,0x09,0x41,0xea,
+ 0x4f,0xe7,0x4f,0x13,0x2a,0x48,0x87,0xf7,0x8c,0xa7,0x90,0xaa,0xb9,0xc3,0x51,0x13,
+ 0x3b,0x4d,0x0a,0x3e,0xc3,0x2b,0x6e,0x24,0x2f,0x46,0xfa,0x0e,0xd4,0xfa,0x05,0xde,
+ 0x8d,0xbb,0xa0,0x49,0x62,0x8d,0xcc,0x6a,0x90,0xbc,0xc9,0xd3,0x04,0xfe,0xf3,0xd7,
+ 0x1e,0x94,0x4b,0x22,0xf9,0x6b,0x13,0xac,0x29,0x83,0xe6,0x7c,0xc3,0x87,0x27,0x1d,
+ 0x08,0xeb,0xd4,0xd5,0xd8,0x96,0xdd,0x81,0xda,0xe8,0xcc,0x48,0x09,0x18,0xfb,0xdd,
+ 0x7b,0xd5,0x18,0xe0,0x7b,0x48,0xe3,0x0a,0x0b,0x2a,0xb9,0xc0,0x00,0x12,0xbc,0xf4,
+ 0xcd,0x1a,0x27,0xa8,0x3b,0xa5,0x77,0xb0,0xfc,0x19,0x21,0xf3,0x87,0x33,0x3b,0x95,
+ 0x64,0x03,0x05,0x31,0xfe,0x35,0x18,0x68,0xe2,0x94,0xcd,0x02,0xc1,0x24,0x85,0x72,
+ 0xc4,0xb1,0xc6,0x07,0x40,0x3d,0xf9,0xa7,0xae,0x6d,0xf6,0x3e,0xff,0x00,0xb1,0x93,
+ 0x23,0x79,0x8b,0x27,0x40,0x71,0xc6,0x33,0x51,0xac,0x62,0x40,0xee,0x8a,0x81,0x1a,
+ 0x5c,0x82,0xca,0x40,0x63,0x8e,0x83,0xf2,0xa2,0xf6,0xdc,0x7a,0xb7,0x74,0x04,0x87,
+ 0x59,0xca,0xf9,0x6b,0x38,0x01,0xca,0xbb,0x1e,0x7d,0x87,0xbd,0x33,0x31,0xca,0xed,
+ 0xbe,0x31,0x80,0xca,0x3e,0x62,0x78,0x24,0xe3,0x9f,0x5a,0x4d,0x81,0x5c,0x16,0x10,
+ 0xa0,0x20,0x86,0x2a,0x09,0x1b,0xb3,0xd6,0x9d,0xc3,0xb4,0x78,0x54,0x13,0x28,0x20,
+ 0x85,0xcf,0x3f,0x53,0x4d,0xe9,0xb0,0xae,0xd2,0xbb,0x7a,0x93,0x4b,0x1e,0x47,0x98,
+ 0x8c,0xab,0x29,0x7d,0xa4,0xf6,0x2b,0xeb,0x9f,0x4f,0xc2,0x95,0x76,0x79,0xf1,0xaa,
+ 0x31,0x85,0x50,0xe0,0xab,0xa0,0xc1,0xf7,0x07,0xf3,0xa8,0x50,0x18,0x03,0x34,0xea,
+ 0x64,0x79,0x86,0x54,0x80,0x48,0x5e,0x7a,0x8a,0x7a,0xb2,0x42,0xb1,0x79,0xe4,0xf0,
+ 0x09,0x60,0x72,0xd9,0xe3,0xb1,0xa2,0xcf,0xa0,0x24,0xaf,0x76,0x58,0xdc,0xab,0x23,
+ 0xe0,0x91,0x19,0x24,0xb2,0xed,0xc6,0x38,0xe2,0xaa,0x47,0x13,0xc5,0x14,0x09,0x22,
+ 0x89,0x26,0x29,0xf3,0x80,0x33,0x95,0xce,0x79,0xa1,0x5c,0xcd,0x13,0xee,0x8c,0x24,
+ 0x81,0x49,0x76,0x66,0xe0,0x7d,0x29,0x76,0xc8,0xe2,0x19,0x63,0x18,0x91,0x87,0xc8,
+ 0x08,0xe4,0xfa,0x81,0x49,0x3b,0x0f,0x56,0xee,0xf6,0x0f,0x2f,0xcf,0xd9,0xe5,0xbc};
diff --git a/lib/libesp32/JPEGDEC/examples/epd_demo/Grayscale_IL0398.cpp b/lib/libesp32/JPEGDEC/examples/epd_demo/Grayscale_IL0398.cpp
new file mode 100644
index 000000000..0ecb17b48
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/epd_demo/Grayscale_IL0398.cpp
@@ -0,0 +1,369 @@
+// slimmed down version of the Open Book IL0398 driver.
+// https://github.com/joeycastillo/The-Open-Book/blob/master/src/Grayscale_IL0398.cpp
+
+#include "Grayscale_IL0398.h"
+
+#define BUSY_WAIT 500
+
+#ifndef min
+#define min(a,b) (((a) < (b)) ? (a) : (b))
+#endif
+
+#ifndef _swap_int16_t
+#define _swap_int16_t(a, b) { int16_t t = a; a = b; b = t; }
+#endif
+/**************************************************************************/
+/*!
+ @brief constructor if using external SRAM chip and software SPI
+ @param width the width of the display in pixels
+ @param height the height of the display in pixels
+ @param SID the SID pin to use
+ @param SCLK the SCLK pin to use
+ @param DC the data/command pin to use
+ @param RST the reset pin to use
+ @param CS the chip select pin to use
+ @param SRCS the SRAM chip select pin to use
+ @param MISO the MISO pin to use
+ @param BUSY the busy pin to use
+*/
+/**************************************************************************/
+Grayscale_IL0398::Grayscale_IL0398(int width, int height,
+ int8_t SID, int8_t SCLK, int8_t DC, int8_t RST,
+ int8_t CS, int8_t SRCS, int8_t MISO, int8_t BUSY) :
+ Adafruit_EPD(width, height, SID, SCLK, DC, RST, CS, SRCS, MISO, BUSY) {
+
+ buffer1_size = ((uint32_t)width * (uint32_t)height) / 8;
+ buffer2_size = buffer1_size;
+
+ if (SRCS >= 0) {
+ use_sram = true;
+ buffer1_addr = 0;
+ buffer2_addr = buffer1_size;
+ buffer1 = buffer2 = NULL;
+ } else {
+ buffer1 = (uint8_t *)malloc(buffer1_size);
+ buffer2 = (uint8_t *)malloc(buffer2_size);
+ }
+}
+
+// constructor for hardware SPI - we indicate DataCommand, ChipSelect, Reset
+/**************************************************************************/
+/*!
+ @brief constructor if using on-chip RAM and hardware SPI
+ @param width the width of the display in pixels
+ @param height the height of the display in pixels
+ @param DC the data/command pin to use
+ @param RST the reset pin to use
+ @param CS the chip select pin to use
+ @param SRCS the SRAM chip select pin to use
+ @param BUSY the busy pin to use
+*/
+/**************************************************************************/
+Grayscale_IL0398::Grayscale_IL0398(int width, int height,
+ int8_t DC, int8_t RST,
+ int8_t CS, int8_t SRCS, int8_t BUSY, SPIClass *spi) :
+ Adafruit_EPD(width, height, DC, RST, CS, SRCS, BUSY, spi) {
+
+ buffer1_size = ((uint32_t)width * (uint32_t)height) / 8;
+ buffer2_size = buffer1_size;
+
+ if (SRCS >= 0) {
+ use_sram = true;
+ buffer1_addr = 0;
+ buffer2_addr = 0;
+ buffer1 = buffer2 = NULL;
+ } else {
+ buffer1 = (uint8_t *)malloc(buffer1_size);
+ buffer2 = (uint8_t *)malloc(buffer1_size);
+ }
+}
+
+/**************************************************************************/
+/*!
+ @brief wait for busy signal to end
+*/
+/**************************************************************************/
+void Grayscale_IL0398::busy_wait(void)
+{
+ if (_busy_pin > -1) {
+ do {
+ EPD_command(IL0398_GETSTATUS);
+ delay(10);
+ } while (!digitalRead(_busy_pin)); //wait for busy high
+ delay(200);
+ } else {
+ delay(BUSY_WAIT);
+ }
+
+}
+
+/**************************************************************************/
+/*!
+ @brief begin communication with and set up the display.
+ @param reset if true the reset pin will be toggled.
+*/
+/**************************************************************************/
+void Grayscale_IL0398::begin(bool reset)
+{
+ Adafruit_EPD::begin(reset);
+ setBlackBuffer(0, true);
+ powerDown();
+}
+
+/**************************************************************************/
+/*!
+ @brief signal the display to update
+*/
+/**************************************************************************/
+void Grayscale_IL0398::update()
+{
+ EPD_command(IL0398_DISPLAY_REFRESH);
+ delay(100);
+
+ busy_wait();
+ if (_busy_pin <= -1) {
+ delay(5000);
+ }
+}
+
+const unsigned char Grayscale_IL0398::LUT_VCOM_GRAYSCALE[] PROGMEM =
+{
+ 0x00, 0x0A, 0x00, 0x00, 0x00, 0x01,
+ 0x60, 0x14, 0x14, 0x00, 0x00, 0x01,
+ 0x00, 0x14, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x13, 0x0A, 0x01, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00,
+ 0x00
+};
+
+const unsigned char Grayscale_IL0398::LUT_WW_GRAYSCALE[] PROGMEM =
+{
+ 0x40, 0x0A, 0x00, 0x00, 0x00, 0x01,
+ 0x90, 0x14, 0x14, 0x00, 0x00, 0x01,
+ 0x10, 0x14, 0x0A, 0x00, 0x00, 0x01,
+ 0xA0, 0x13, 0x01, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+const unsigned char Grayscale_IL0398::LUT_WB_GRAYSCALE[] PROGMEM =
+{
+ 0x40, 0x0A, 0x00, 0x00, 0x00, 0x01,
+ 0x90, 0x14, 0x14, 0x00, 0x00, 0x01,
+ 0x00, 0x14, 0x0A, 0x00, 0x00, 0x01,
+ 0x99, 0x0B, 0x04, 0x04, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+const unsigned char Grayscale_IL0398::LUT_BW_GRAYSCALE[] PROGMEM =
+{
+ 0x40, 0x0A, 0x00, 0x00, 0x00, 0x01,
+ 0x90, 0x14, 0x14, 0x00, 0x00, 0x01,
+ 0x00, 0x14, 0x0A, 0x00, 0x00, 0x01,
+ 0x99, 0x0C, 0x01, 0x03, 0x04, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+const unsigned char Grayscale_IL0398::LUT_BB_GRAYSCALE[] PROGMEM =
+{
+ 0x80, 0x0A, 0x00, 0x00, 0x00, 0x01,
+ 0x90, 0x14, 0x14, 0x00, 0x00, 0x01,
+ 0x20, 0x14, 0x0A, 0x00, 0x00, 0x01,
+ 0x50, 0x13, 0x01, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+/**************************************************************************/
+/*!
+ @brief start up the display. Same as init, but here for compatibility with
+ Adafruit_EPD; you can call Grayscale_IL0398::init with more options.
+*/
+/**************************************************************************/
+void Grayscale_IL0398::powerUp() {
+ uint8_t buf[5];
+
+ hardwareReset();
+
+ buf[0] = 0x03; // Panel will generate VDH and VDL (1<<0) and VGH and VGL (1<<1)
+ buf[1] = 0x00; // VCOMH=VDH+VCOMDC and VCOML=VDL+VCOMDC; VGH and VGL are 16v and -16v respectively
+ buf[2] = 0x2b; // VDH= 11V
+ buf[3] = 0x2b; // VDL=-11V
+ buf[4] = 0x13; // VDHR=6.2V
+ EPD_command(IL0398_POWER_SETTING, buf, 5);
+
+ buf[0] = 0x17; // phase A: soft start 10ms, driving strength 3, off time 6.58us
+ buf[1] = 0x17; // phase B: soft start 10ms, driving strength 3, off time 6.58us
+ buf[2] = 0x17; // phase C: driving strength 3, off time 6.58us
+ EPD_command(IL0398_BOOSTER_SOFT_START, buf, 3);
+
+ buf[0] = 0x3F; // (1<<4) sets display to monochrome and (1<<5) enables custom LUTs
+ EPD_command(IL0398_PANEL_SETTING, buf, 1);
+
+ buf[0] = 0x3C; // 50 Hz
+ EPD_command(IL0398_PLL, buf, 1);
+
+ buf[0] = (HEIGHT >> 8) & 0xFF;
+ buf[1] = HEIGHT & 0xFF;
+ buf[2] = (WIDTH >> 8) & 0xFF;
+ buf[3] = WIDTH & 0xFF;
+ EPD_command(IL0398_RESOLUTION, buf, 4);
+
+ buf[0] = 0x12; // VCOM_DC = -1.5v
+ EPD_command(IL0398_VCM_DC_SETTING, buf, 1);
+
+ buf[0] = 0xD7; // 0x57 for black border. 0x97 for white border. 0xD7 for floating border.
+ EPD_command(IL0398_VCOM, buf, 1);
+
+ EPD_command(IL0398_LUT1, LUT_VCOM_GRAYSCALE, sizeof(LUT_VCOM_GRAYSCALE));
+ EPD_command(IL0398_LUTWW, LUT_WW_GRAYSCALE, sizeof(LUT_WW_GRAYSCALE));
+ EPD_command(IL0398_LUTBW, LUT_BW_GRAYSCALE, sizeof(LUT_BW_GRAYSCALE));
+ EPD_command(IL0398_LUTWB, LUT_WB_GRAYSCALE, sizeof(LUT_WB_GRAYSCALE));
+ EPD_command(IL0398_LUTBB, LUT_BB_GRAYSCALE, sizeof(LUT_BB_GRAYSCALE));
+
+ EPD_command(IL0398_POWER_ON);
+ busy_wait();
+
+ delay(20);
+}
+
+/**************************************************************************/
+/*!
+ @brief wind down the display
+*/
+/**************************************************************************/
+void Grayscale_IL0398::powerDown()
+{
+ uint8_t buf[4];
+
+ // power off
+ buf[0] = 0xF7; // border floating
+ EPD_command(IL0398_VCOM, buf, 1);
+ EPD_command(IL0398_POWER_OFF);
+ busy_wait();
+ buf[0] = 0xA5; // deep sleep
+ EPD_command(IL0398_DEEP_SLEEP, buf, 1);
+ delay(100);
+}
+
+/**************************************************************************/
+/*!
+ @brief draw a single pixel on the screen
+ @param x the x axis position
+ @param y the y axis position
+ @param color the color of the pixel
+*/
+/**************************************************************************/
+void Grayscale_IL0398::drawPixel(int16_t x, int16_t y, uint16_t color) {
+ if ((x < 0) || (x >= width()) || (y < 0) || (y >= height()))
+ return;
+
+ uint8_t *pByte1;
+ uint8_t *pByte2;
+
+ // check rotation, move pixel around if necessary
+ switch (getRotation()) {
+ case 1:
+ EPD_swap(x, y);
+ x = WIDTH - x - 1;
+ break;
+ case 2:
+ x = WIDTH - x - 1;
+ y = HEIGHT - y - 1;
+ break;
+ case 3:
+ EPD_swap(x, y);
+ y = HEIGHT - y - 1;
+ break;
+ }
+
+ uint16_t addr = ( (uint32_t)(WIDTH - 1 - x) * (uint32_t)HEIGHT + y)/8;
+
+ if (use_sram) {
+ uint8_t byte1 = sram.read8(blackbuffer_addr + addr);
+ uint8_t byte2 = sram.read8(colorbuffer_addr + addr);
+ pByte1 = &byte1;
+ pByte2 = &byte2;
+ } else {
+ pByte1 = black_buffer + addr;
+ pByte2 = color_buffer + addr;
+ }
+
+ switch (color) {
+ case EPD_BLACK:
+ *pByte1 &= ~(1 << (7 - (y%8)));
+ *pByte2 &= ~(1 << (7 - (y%8)));
+ break;
+ case EPD_DARK:
+ *pByte1 |= (1 << (7 - (y%8)));
+ *pByte2 &= ~(1 << (7 - (y%8)));
+ break;
+ case EPD_LIGHT:
+ *pByte1 &= ~(1 << (7 - (y%8)));
+ *pByte2 |= (1 << (7 - (y%8)));
+ break;
+ case EPD_WHITE:
+ *pByte1 |= (1 << (7 - (y%8)));
+ *pByte2 |= (1 << (7 - (y%8)));
+ break;
+ }
+
+ if (use_sram) {
+ sram.write8(addr, *pByte1);
+ sram.write8(addr + buffer1_size, *pByte2);
+ }
+}
+
+/**************************************************************************/
+/*!
+ @brief Send the specific command to start writing to EPD display RAM
+ @param index The index for which buffer to write (0 or 1 or tri-color displays)
+ Ignored for monochrome displays.
+ @returns The byte that is read from SPI at the same time as sending the command
+*/
+/**************************************************************************/
+uint8_t Grayscale_IL0398::writeRAMCommand(uint8_t index) {
+ if (index == 0) {
+ return EPD_command(IL0398_DTM2, false);
+ }
+ if (index == 1) {
+ return EPD_command(IL0398_DTM1, false);
+ }
+ return 0;
+}
+
+/**************************************************************************/
+/*!
+ @brief Some displays require setting the RAM address pointer
+ @param x X address counter value
+ @param y Y address counter value
+*/
+/**************************************************************************/
+void Grayscale_IL0398::setRAMAddress(uint16_t x, uint16_t y) {
+ // on this chip we do nothing
+}
+
+/*!
+ * @file Adafruit_IL0398.cpp
+ *
+ * Forked from Adafruit_IL0398.cpp; copyright notce below.
+ *
+ * Adafruit invests time and resources providing this open source code,
+ * please support Adafruit and open-source hardware by purchasing
+ * products from Adafruit!
+ *
+ * Written by Dean Miller for Adafruit Industries.
+ * Open Book additions by Joey Castillo.
+ *
+ * BSD license, all text here must be included in any redistribution.
+ *
+ */
diff --git a/lib/libesp32/JPEGDEC/examples/epd_demo/Grayscale_IL0398.h b/lib/libesp32/JPEGDEC/examples/epd_demo/Grayscale_IL0398.h
new file mode 100644
index 000000000..7ab9477ea
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/epd_demo/Grayscale_IL0398.h
@@ -0,0 +1,49 @@
+// slimmed down version of the Open Book IL0398 driver.
+// https://github.com/joeycastillo/The-Open-Book/blob/master/src/Grayscale_IL0398.h
+
+/**************************************************************************/
+/*!
+ @brief Class for interfacing with IL0398 EPD drivers
+*/
+/**************************************************************************/
+
+#include "Adafruit_EPD.h"
+
+class Grayscale_IL0398 : public Adafruit_EPD {
+ public:
+ Grayscale_IL0398(int width, int height, int8_t SID, int8_t SCLK, int8_t DC, int8_t RST, int8_t CS, int8_t SRCS, int8_t MISO, int8_t BUSY = -1);
+ Grayscale_IL0398(int width, int height, int8_t DC, int8_t RST, int8_t CS, int8_t SRCS, int8_t BUSY = -1, SPIClass *spi = &SPI);
+
+ void begin(bool reset=true);
+ void powerUp();
+ void update();
+ void powerDown();
+ void drawPixel(int16_t x, int16_t y, uint16_t color);
+protected:
+ uint8_t writeRAMCommand(uint8_t index);
+ void setRAMAddress(uint16_t x, uint16_t y);
+ void busy_wait();
+
+private:
+ static const unsigned char LUT_VCOM_GRAYSCALE[];
+ static const unsigned char LUT_WW_GRAYSCALE[];
+ static const unsigned char LUT_WB_GRAYSCALE[];
+ static const unsigned char LUT_BW_GRAYSCALE[];
+ static const unsigned char LUT_BB_GRAYSCALE[];
+};
+
+/*!
+ * @file Grayscale_IL0398.h
+ *
+ * Forked from Adafruit_IL0398.h; copyright notce below.
+ *
+ * Adafruit invests time and resources providing this open source code,
+ * please support Adafruit and open-source hardware by purchasing
+ * products from Adafruit!
+ *
+ * Written by Dean Miller for Adafruit Industries.
+ * Open Book additions by Joey Castillo.
+ *
+ * BSD license, all text here must be included in any redistribution.
+ *
+ */
diff --git a/lib/libesp32/JPEGDEC/examples/epd_demo/epd_demo.ino b/lib/libesp32/JPEGDEC/examples/epd_demo/epd_demo.ino
new file mode 100644
index 000000000..7ab7fa4a1
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/epd_demo/epd_demo.ino
@@ -0,0 +1,112 @@
+// JPEGDEC example for 4.2" monochrome E-Paper displays
+// Does not work with tri-color 4.2" displays!
+
+#include
+#include "SPI.h"
+#include "Adafruit_GFX.h"
+
+#include "Grayscale_IL0398.h"
+#include "lange.h" // Demo photographs, grayscale, sized 300x400
+
+#define DISPLAY_WIDTH 300
+#define DISPLAY_HEIGHT 400
+
+// set these values to match the pins and the SPI bus for your display
+#define EPD_CS 44
+#define EPD_DC 45
+#define EPD_RST 46
+#define EPD_BSY 47
+#define EPD_DISPLAY_BUS &SPI1
+
+// adds a basic Floyd-Steinberg dither to each block of pixels rendered.
+bool dither = true;
+
+JPEGDEC jpeg;
+Grayscale_IL0398 display(DISPLAY_WIDTH, DISPLAY_HEIGHT, EPD_DC, EPD_RST, EPD_CS, -1, EPD_BSY, EPD_DISPLAY_BUS);
+
+int JPEGDraw(JPEGDRAW *pDraw)
+{
+ int x = pDraw->x;
+ int y = pDraw->y;
+ int w = pDraw->iWidth;
+ int h = pDraw->iHeight;
+
+ for(int i = 0; i < w * h; i++)
+ {
+ pDraw->pPixels[i] = (pDraw->pPixels[i] & 0x7e0) >> 5; // extract just the six green channel bits.
+ }
+
+ if (dither)
+ {
+ for(int16_t j = 0; j < h; j++)
+ {
+ for(int16_t i = 0; i < w; i++)
+ {
+ int8_t oldPixel = constrain(pDraw->pPixels[i + j * w], 0, 0x3F);
+ int8_t newPixel = oldPixel & 0x38; // or 0x30 to dither to 2-bit directly. much improved tonal range, but more horizontal banding between blocks.
+ pDraw->pPixels[i + j * w] = newPixel;
+ int quantError = oldPixel - newPixel;
+ if(i + 1 < w) pDraw->pPixels[i + 1 + j * w] += quantError * 7 / 16;
+ if((i - 1 >= 0) && (j + 1 < h)) pDraw->pPixels[i - 1 + (j + 1) * w] += quantError * 3 / 16;
+ if(j + 1 < h) pDraw->pPixels[i + (j + 1) * w] += quantError * 5 / 16;
+ if((i + 1 < w) && (j + 1 < h)) pDraw->pPixels[i + 1 + (j + 1) * w] += quantError * 1 / 16;
+ } // for i
+ } // for j
+ } // if dither
+
+ for(int16_t i = 0; i < w; i++)
+ {
+ for(int16_t j = 0; j < h; j++)
+ {
+ switch (constrain(pDraw->pPixels[i + j * w] >> 4, 0, 3))
+ {
+ case 0:
+ display.writePixel(x+i, y+j, EPD_BLACK);
+ break;
+ case 1:
+ display.writePixel(x+i, y+j, EPD_DARK);
+ break;
+ case 2:
+ display.writePixel(x+i, y+j, EPD_LIGHT);
+ break;
+ case 3:
+ display.writePixel(x+i, y+j, EPD_WHITE);
+ break;
+ } // switch
+ } // for j
+ } // for i
+ return 1;
+} /* JPEGDraw() */
+
+void setup() {
+ Serial.begin(115200);
+ //while (!Serial) delay(1000);
+ Serial.println("Starting...");
+ display.begin();
+ display.fillRect(0, 0, 300, 400, EPD_BLACK);
+ display.display();
+} /* setup() */
+
+const uint8_t * images[] = {demo_001_jpg, demo_002_jpg, demo_003_jpg, demo_004_jpg, demo_005_jpg, demo_006_jpg, demo_007_jpg, demo_008_jpg};
+size_t imageLengths[] = {demo_001_jpg_len, demo_002_jpg_len, demo_003_jpg_len, demo_004_jpg_len, demo_005_jpg_len, demo_006_jpg_len, demo_007_jpg_len, demo_008_jpg_len};
+
+void loop() {
+ int i;
+ long lTime;
+
+ for (i=0; i<8; i++)
+ {
+ if (jpeg.openFLASH((uint8_t *)images[i], imageLengths[i], JPEGDraw))
+ {
+ lTime = micros();
+ if (jpeg.decode((300 - jpeg.getWidth()) / 2, (400 - jpeg.getHeight()) / 2, 0))
+ {
+ lTime = micros() - lTime;
+ Serial.printf("%d x %d image, decode time = %d us\n", jpeg.getWidth(), jpeg.getHeight(), (int)lTime);
+ }
+ jpeg.close();
+ }
+ display.display();
+ delay(4000); // pause between images
+ } // for i
+} /* loop() */
diff --git a/lib/libesp32/JPEGDEC/examples/epd_demo/lange.h b/lib/libesp32/JPEGDEC/examples/epd_demo/lange.h
new file mode 100644
index 000000000..ac657255f
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/epd_demo/lange.h
@@ -0,0 +1,13860 @@
+//
+// Public domain photographs by Dorothea Lange for the U.S. Farm Security Administration
+// see: https://www.loc.gov/rr/print/res/071_fsab.html
+//
+
+const uint8_t demo_001_jpg[] = {
+ 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01,
+ 0x02, 0x00, 0x00, 0x64, 0x00, 0x64, 0x00, 0x00, 0xff, 0xec, 0x00, 0x11,
+ 0x44, 0x75, 0x63, 0x6b, 0x79, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00,
+ 0x1e, 0x00, 0x00, 0xff, 0xee, 0x00, 0x0e, 0x41, 0x64, 0x6f, 0x62, 0x65,
+ 0x00, 0x64, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xdb, 0x00, 0x84, 0x00,
+ 0x10, 0x0b, 0x0b, 0x0b, 0x0c, 0x0b, 0x10, 0x0c, 0x0c, 0x10, 0x17, 0x0f,
+ 0x0d, 0x0f, 0x17, 0x1b, 0x14, 0x10, 0x10, 0x14, 0x1b, 0x1f, 0x17, 0x17,
+ 0x17, 0x17, 0x17, 0x1f, 0x1e, 0x17, 0x1a, 0x1a, 0x1a, 0x1a, 0x17, 0x1e,
+ 0x1e, 0x23, 0x25, 0x27, 0x25, 0x23, 0x1e, 0x2f, 0x2f, 0x33, 0x33, 0x2f,
+ 0x2f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x01, 0x11, 0x0f, 0x0f, 0x11, 0x13, 0x11, 0x15,
+ 0x12, 0x12, 0x15, 0x14, 0x11, 0x14, 0x11, 0x14, 0x1a, 0x14, 0x16, 0x16,
+ 0x14, 0x1a, 0x26, 0x1a, 0x1a, 0x1c, 0x1a, 0x1a, 0x26, 0x30, 0x23, 0x1e,
+ 0x1e, 0x1e, 0x1e, 0x23, 0x30, 0x2b, 0x2e, 0x27, 0x27, 0x27, 0x2e, 0x2b,
+ 0x35, 0x35, 0x30, 0x30, 0x35, 0x35, 0x40, 0x40, 0x3f, 0x40, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xff, 0xc0, 0x00,
+ 0x11, 0x08, 0x01, 0x90, 0x01, 0x2c, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11,
+ 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x01, 0x3f, 0x00, 0x00, 0x01, 0x05,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x03, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
+ 0x0b, 0x01, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x04, 0x05,
+ 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x01, 0x04, 0x01, 0x03,
+ 0x02, 0x04, 0x02, 0x05, 0x07, 0x06, 0x08, 0x05, 0x03, 0x0c, 0x33, 0x01,
+ 0x00, 0x02, 0x11, 0x03, 0x04, 0x21, 0x12, 0x31, 0x05, 0x41, 0x51, 0x61,
+ 0x13, 0x22, 0x71, 0x81, 0x32, 0x06, 0x14, 0x91, 0xa1, 0xb1, 0x42, 0x23,
+ 0x24, 0x15, 0x52, 0xc1, 0x62, 0x33, 0x34, 0x72, 0x82, 0xd1, 0x43, 0x07,
+ 0x25, 0x92, 0x53, 0xf0, 0xe1, 0xf1, 0x63, 0x73, 0x35, 0x16, 0xa2, 0xb2,
+ 0x83, 0x26, 0x44, 0x93, 0x54, 0x64, 0x45, 0xc2, 0xa3, 0x74, 0x36, 0x17,
+ 0xd2, 0x55, 0xe2, 0x65, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3,
+ 0x46, 0x27, 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5,
+ 0xb5, 0xc5, 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6,
+ 0xc6, 0xd6, 0xe6, 0xf6, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7,
+ 0xb7, 0xc7, 0xd7, 0xe7, 0xf7, 0x11, 0x00, 0x02, 0x02, 0x01, 0x02, 0x04,
+ 0x04, 0x03, 0x04, 0x05, 0x06, 0x07, 0x07, 0x06, 0x05, 0x35, 0x01, 0x00,
+ 0x02, 0x11, 0x03, 0x21, 0x31, 0x12, 0x04, 0x41, 0x51, 0x61, 0x71, 0x22,
+ 0x13, 0x05, 0x32, 0x81, 0x91, 0x14, 0xa1, 0xb1, 0x42, 0x23, 0xc1, 0x52,
+ 0xd1, 0xf0, 0x33, 0x24, 0x62, 0xe1, 0x72, 0x82, 0x92, 0x43, 0x53, 0x15,
+ 0x63, 0x73, 0x34, 0xf1, 0x25, 0x06, 0x16, 0xa2, 0xb2, 0x83, 0x07, 0x26,
+ 0x35, 0xc2, 0xd2, 0x44, 0x93, 0x54, 0xa3, 0x17, 0x64, 0x45, 0x55, 0x36,
+ 0x74, 0x65, 0xe2, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, 0x46,
+ 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, 0xb5, 0xc5,
+ 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6,
+ 0xe6, 0xf6, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, 0xb7,
+ 0xc7, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11,
+ 0x00, 0x3f, 0x00, 0xe2, 0x0e, 0x3b, 0x27, 0xbc, 0x28, 0x9a, 0x5b, 0xd9,
+ 0x58, 0x21, 0x37, 0x09, 0x29, 0x09, 0xa5, 0x82, 0x12, 0x14, 0xb0, 0xf6,
+ 0x45, 0x21, 0x34, 0xa4, 0xa6, 0x23, 0x1e, 0xb4, 0xbd, 0x0a, 0xe3, 0x8f,
+ 0xc4, 0xa2, 0x42, 0x77, 0xc0, 0x6e, 0x9c, 0xa4, 0xa6, 0xb7, 0xa4, 0x3c,
+ 0x11, 0x45, 0x35, 0x44, 0x96, 0xfe, 0x25, 0x37, 0x64, 0x46, 0xfd, 0x14,
+ 0x94, 0x8f, 0xd1, 0xaf, 0xc1, 0x37, 0xa2, 0xc2, 0x74, 0x0a, 0x64, 0x41,
+ 0xd1, 0x4a, 0xb0, 0x41, 0x49, 0x48, 0x4d, 0x4d, 0x1d, 0x91, 0x6b, 0xa2,
+ 0xb3, 0xcb, 0x41, 0x52, 0x0d, 0x92, 0x8c, 0xc6, 0xed, 0x09, 0x29, 0x88,
+ 0xc7, 0xa8, 0x7e, 0x60, 0x4e, 0x71, 0xd8, 0x5c, 0x08, 0x6b, 0x40, 0xee,
+ 0x20, 0x22, 0x86, 0xa9, 0x37, 0x43, 0x09, 0x29, 0x7a, 0xea, 0x60, 0x3f,
+ 0x41, 0xa3, 0xe4, 0x15, 0xa6, 0x69, 0xc0, 0x13, 0xe4, 0x02, 0x0b, 0x79,
+ 0x44, 0x0e, 0x21, 0xc0, 0x0e, 0x12, 0x52, 0x7d, 0xef, 0xe7, 0x76, 0xbe,
+ 0x49, 0xc3, 0x9f, 0x3a, 0x92, 0x90, 0x70, 0x02, 0x08, 0x06, 0x7b, 0xa7,
+ 0x80, 0x92, 0x98, 0xbd, 0xce, 0x2d, 0x32, 0x4e, 0xbc, 0x25, 0x5b, 0xdc,
+ 0x01, 0x83, 0x09, 0x38, 0x49, 0x4d, 0xb4, 0x80, 0x92, 0x93, 0x35, 0xce,
+ 0x03, 0x52, 0x54, 0x1e, 0x5c, 0x48, 0x20, 0xf0, 0xa6, 0x04, 0x05, 0x06,
+ 0x6a, 0x4c, 0xa4, 0xa6, 0x5b, 0x9c, 0xf7, 0xb4, 0x93, 0xc2, 0x35, 0x4e,
+ 0x81, 0xa7, 0x74, 0x36, 0x30, 0x46, 0x83, 0x8e, 0xea, 0x70, 0x00, 0x10,
+ 0x34, 0x49, 0x4c, 0xc9, 0xf2, 0xd1, 0x49, 0xb2, 0xa0, 0x7b, 0x04, 0xed,
+ 0x24, 0x6a, 0x52, 0x52, 0x58, 0x26, 0x20, 0xfc, 0xd4, 0xc0, 0x27, 0x59,
+ 0xf7, 0x77, 0x28, 0x6d, 0x76, 0x9a, 0xfc, 0x42, 0x70, 0xe8, 0x1a, 0x24,
+ 0xa4, 0xa1, 0xee, 0xd7, 0x5e, 0x34, 0xd5, 0x29, 0x27, 0x93, 0x03, 0x92,
+ 0xa0, 0xd7, 0x76, 0x3c, 0xa9, 0x57, 0xa9, 0x24, 0xf1, 0xe6, 0x92, 0x99,
+ 0x13, 0x10, 0x41, 0xf8, 0x78, 0x21, 0x6e, 0x24, 0xe8, 0xe5, 0x2b, 0x1c,
+ 0x48, 0xf6, 0xe8, 0x84, 0x04, 0x7b, 0x8e, 0x83, 0xc5, 0x25, 0x31, 0xbd,
+ 0xef, 0xd8, 0x1a, 0xd3, 0xa9, 0x30, 0x00, 0xf1, 0x46, 0x64, 0xd7, 0x58,
+ 0x04, 0xc9, 0xee, 0x7c, 0xd0, 0x80, 0x1f, 0xce, 0x1e, 0x4f, 0xd1, 0x1e,
+ 0x5f, 0xed, 0x55, 0xae, 0xbe, 0xc3, 0x67, 0xa6, 0xdd, 0x0f, 0xf0, 0xf1,
+ 0x49, 0x4b, 0xe4, 0x59, 0x68, 0x05, 0xcd, 0x7f, 0xf2, 0x5a, 0x07, 0xe2,
+ 0x50, 0x99, 0x71, 0x2c, 0x12, 0x01, 0x21, 0x3b, 0x86, 0xe2, 0x1a, 0xdd,
+ 0x5a, 0x02, 0x8d, 0x75, 0x96, 0x9d, 0xa7, 0x81, 0xe2, 0x92, 0x92, 0x34,
+ 0xbc, 0x9d, 0x27, 0xe0, 0x51, 0xa1, 0xdb, 0x76, 0xf7, 0xe5, 0x33, 0x1b,
+ 0xdf, 0x51, 0xe6, 0xa5, 0xb5, 0xdb, 0xb8, 0xf9, 0xf7, 0x8e, 0x38, 0x49,
+ 0x4f, 0x30, 0x42, 0x62, 0x3b, 0xa7, 0x07, 0x44, 0xe5, 0x25, 0x31, 0x4d,
+ 0x0a, 0x40, 0xa6, 0x73, 0x88, 0x49, 0x4c, 0x21, 0xc4, 0xf2, 0x88, 0xd1,
+ 0xe2, 0x99, 0xba, 0xea, 0xa6, 0x21, 0x25, 0x31, 0x70, 0x0a, 0x33, 0xa2,
+ 0x77, 0x28, 0xea, 0x52, 0x52, 0xb9, 0x45, 0x61, 0x86, 0x90, 0x42, 0x8b,
+ 0x1b, 0xe2, 0xa4, 0x7c, 0x12, 0x52, 0xec, 0x12, 0x7c, 0x91, 0xda, 0x02,
+ 0x85, 0x62, 0x11, 0x12, 0x53, 0x36, 0x89, 0x4e, 0x5a, 0x39, 0x49, 0xbc,
+ 0x29, 0x1f, 0x14, 0x94, 0xa1, 0xa9, 0x46, 0x0d, 0x06, 0x0a, 0x13, 0x11,
+ 0xf7, 0x00, 0x35, 0xe1, 0x25, 0x32, 0x89, 0x4e, 0x1c, 0x38, 0x55, 0x9f,
+ 0x99, 0x5b, 0x09, 0x04, 0xc0, 0x0a, 0x0d, 0xea, 0x38, 0xa7, 0x87, 0x41,
+ 0xf0, 0x84, 0x94, 0xde, 0x1a, 0xea, 0x93, 0xb4, 0x2a, 0xbd, 0x59, 0xb5,
+ 0x1d, 0x67, 0x45, 0x62, 0xbb, 0x18, 0xf6, 0xee, 0x04, 0x10, 0x92, 0x96,
+ 0xdc, 0xe0, 0x7c, 0x94, 0x8f, 0x3e, 0x01, 0x48, 0x6a, 0xd4, 0xd1, 0x3a,
+ 0x14, 0x94, 0x91, 0x9a, 0xf7, 0xd0, 0xa9, 0x09, 0x92, 0x07, 0x0a, 0x2c,
+ 0x1d, 0x94, 0xc0, 0xe6, 0x52, 0x52, 0xce, 0xd3, 0xe2, 0x9c, 0x3b, 0x45,
+ 0x09, 0x97, 0x42, 0x90, 0xf0, 0x49, 0x4c, 0xc1, 0x81, 0xfc, 0x54, 0xa6,
+ 0x75, 0x07, 0x94, 0x29, 0x93, 0x1d, 0x94, 0xdb, 0xa8, 0xf2, 0x49, 0x4c,
+ 0xdb, 0xa0, 0xd7, 0xba, 0x93, 0x20, 0x34, 0xeb, 0xaf, 0x65, 0x19, 0xe2,
+ 0x4f, 0x09, 0xc1, 0x27, 0x84, 0x94, 0xa9, 0xd6, 0x0f, 0xcc, 0xa1, 0xbc,
+ 0xfa, 0x8e, 0x8f, 0xcd, 0x6f, 0x23, 0xc7, 0xc8, 0xa9, 0x3c, 0x19, 0xda,
+ 0xdd, 0x49, 0xe7, 0xc9, 0x26, 0xb4, 0x34, 0x68, 0x34, 0x01, 0x25, 0x31,
+ 0xb1, 0xcd, 0x0d, 0x92, 0x27, 0xe1, 0xe2, 0xa8, 0xc0, 0x05, 0xfd, 0xec,
+ 0x71, 0xf7, 0x1e, 0x74, 0xec, 0x11, 0xac, 0xb5, 0xe4, 0xee, 0x6f, 0xd1,
+ 0x06, 0x19, 0x1f, 0x94, 0xa6, 0x8f, 0xcf, 0x1d, 0xf9, 0x09, 0x29, 0x8b,
+ 0x5f, 0xb4, 0x44, 0x7c, 0x54, 0xac, 0x31, 0x63, 0x4f, 0x10, 0x96, 0xd2,
+ 0x75, 0x83, 0x03, 0xba, 0x6b, 0x07, 0x04, 0xf3, 0xd9, 0x25, 0x26, 0x67,
+ 0x3d, 0xc8, 0xf1, 0x44, 0xdd, 0xac, 0xf6, 0xe3, 0x95, 0x5a, 0xbb, 0x02,
+ 0x2e, 0xfd, 0x66, 0x7d, 0xbe, 0x13, 0xaa, 0x4a, 0x79, 0x90, 0x52, 0x2f,
+ 0x84, 0xc0, 0x94, 0xa0, 0x92, 0x92, 0x98, 0x17, 0x90, 0xe9, 0x53, 0x9d,
+ 0xc3, 0x54, 0xfb, 0x14, 0xa2, 0x12, 0x52, 0x30, 0xe7, 0x07, 0x44, 0x68,
+ 0x89, 0x3a, 0x24, 0xa2, 0x49, 0x29, 0x29, 0x89, 0x3a, 0xa9, 0x34, 0x28,
+ 0xf0, 0xa6, 0xd4, 0x94, 0xca, 0x61, 0x3b, 0x7d, 0xce, 0x42, 0x73, 0x8c,
+ 0xc0, 0x46, 0xab, 0x84, 0x94, 0x94, 0x29, 0xa8, 0x04, 0x40, 0x92, 0x99,
+ 0x05, 0x2f, 0x8a, 0x88, 0x51, 0xb1, 0xdb, 0x47, 0x9f, 0x9a, 0x4a, 0x48,
+ 0x6c, 0x6b, 0x04, 0xbb, 0x85, 0x4f, 0x23, 0xa9, 0x76, 0xae, 0x7c, 0x8c,
+ 0x7f, 0x7a, 0xad, 0x91, 0x93, 0xbc, 0x96, 0x83, 0x23, 0xc7, 0xc5, 0x01,
+ 0xac, 0x2f, 0x3a, 0xa4, 0xa5, 0xde, 0xfb, 0x1f, 0x27, 0x58, 0x26, 0x62,
+ 0x52, 0x6b, 0x1e, 0x79, 0x1f, 0x82, 0x33, 0x31, 0xc7, 0x8f, 0xdc, 0x89,
+ 0xe9, 0x11, 0xc1, 0xfc, 0x52, 0x52, 0x36, 0x3c, 0x37, 0x93, 0x07, 0xe0,
+ 0x8a, 0xdb, 0xe3, 0xb8, 0x9f, 0x11, 0xfd, 0xea, 0x0f, 0x2e, 0x68, 0xf7,
+ 0x80, 0xe0, 0xab, 0x3d, 0xc0, 0x9f, 0x6f, 0x1e, 0x05, 0x25, 0x3a, 0x94,
+ 0x75, 0x37, 0xd2, 0x76, 0xbc, 0x98, 0xf3, 0xd5, 0x68, 0xd3, 0x9d, 0x8f,
+ 0x74, 0x6b, 0x04, 0xf6, 0x5c, 0xce, 0xf2, 0x74, 0x94, 0x99, 0x6b, 0xd8,
+ 0xef, 0x69, 0xf9, 0x24, 0xa7, 0xb3, 0xa5, 0xa3, 0x9f, 0xb9, 0x22, 0xd9,
+ 0x2b, 0x27, 0xa6, 0x75, 0x2f, 0x68, 0xae, 0xc3, 0x2c, 0x3a, 0x02, 0x79,
+ 0x69, 0xf3, 0xf2, 0x5b, 0x00, 0x02, 0x3f, 0x8a, 0x4a, 0x60, 0x3c, 0xb5,
+ 0x4e, 0x46, 0x93, 0xc2, 0x78, 0x8d, 0x02, 0x91, 0x1a, 0x24, 0xa4, 0x5a,
+ 0xf6, 0xed, 0xca, 0x23, 0x44, 0x80, 0xa0, 0x66, 0x4f, 0x87, 0x8a, 0x4d,
+ 0xb0, 0x01, 0xae, 0x83, 0x80, 0x52, 0x52, 0x47, 0x93, 0x12, 0x35, 0xf1,
+ 0x4c, 0xcb, 0x5c, 0xdd, 0x00, 0x92, 0x74, 0x01, 0x49, 0xa0, 0x38, 0xc9,
+ 0xe0, 0xeb, 0x28, 0x2e, 0xb1, 0xac, 0x3b, 0xb9, 0x26, 0x76, 0x37, 0x8d,
+ 0x3c, 0x4f, 0x92, 0x4a, 0x6c, 0x86, 0xfe, 0x8c, 0x99, 0xd7, 0xbb, 0xbc,
+ 0xd5, 0x5b, 0xf2, 0x1c, 0x66, 0xb6, 0x8f, 0xd1, 0x81, 0xef, 0x77, 0xef,
+ 0x1f, 0xdd, 0x08, 0x16, 0xf5, 0x07, 0x38, 0x8a, 0x9a, 0xe1, 0x1d, 0xf6,
+ 0xe8, 0x3e, 0xf2, 0xa1, 0xea, 0x8b, 0x1f, 0xb4, 0x01, 0x1d, 0x80, 0x29,
+ 0x29, 0x9b, 0x24, 0x9d, 0xc7, 0xb7, 0x00, 0x70, 0x14, 0xe4, 0x01, 0xaf,
+ 0x7e, 0x7c, 0x15, 0x63, 0x65, 0x75, 0x9e, 0x61, 0x48, 0x5a, 0x08, 0xdc,
+ 0x0e, 0xe0, 0x92, 0x93, 0x33, 0x71, 0x71, 0x0d, 0x26, 0x3b, 0xa9, 0xd8,
+ 0xd0, 0x44, 0x78, 0x77, 0x0a, 0x0c, 0x7b, 0x34, 0x20, 0x4c, 0xf0, 0x53,
+ 0x93, 0xa7, 0xc5, 0x25, 0x31, 0x6e, 0xd1, 0x20, 0xfd, 0xea, 0x7b, 0x46,
+ 0xd8, 0xdc, 0x78, 0xe7, 0x44, 0x29, 0xda, 0x63, 0x8d, 0x74, 0x47, 0xdc,
+ 0x3f, 0x77, 0x44, 0x94, 0xf3, 0x63, 0x44, 0x82, 0x52, 0x90, 0x32, 0x52,
+ 0x53, 0x30, 0x98, 0x94, 0xf2, 0xa2, 0x75, 0x29, 0x29, 0x62, 0x4a, 0x70,
+ 0x25, 0x38, 0x84, 0xf2, 0x02, 0x4a, 0x50, 0x09, 0x9c, 0xdd, 0x12, 0x06,
+ 0x4a, 0x99, 0x02, 0x12, 0x52, 0x20, 0xdd, 0x75, 0x46, 0x67, 0x82, 0x1b,
+ 0x04, 0x94, 0x76, 0xb7, 0x49, 0x49, 0x4a, 0x1c, 0xa2, 0x4c, 0x28, 0x70,
+ 0x94, 0xca, 0x4a, 0x4d, 0xb8, 0x06, 0xca, 0xa1, 0x95, 0x7e, 0xe3, 0xb0,
+ 0x1d, 0x3b, 0x94, 0xb2, 0xf2, 0xc8, 0xfd, 0x13, 0x39, 0xfc, 0xe2, 0xa9,
+ 0x80, 0x4f, 0x29, 0x29, 0x23, 0x6b, 0x6f, 0x72, 0x3e, 0x12, 0x8a, 0xc6,
+ 0xb3, 0xb4, 0x14, 0xd5, 0xd7, 0x3f, 0x9b, 0xf7, 0xa3, 0x0a, 0x01, 0xd7,
+ 0xe8, 0xa4, 0xa5, 0x36, 0x02, 0x91, 0x35, 0x76, 0xf6, 0x3b, 0xcd, 0x39,
+ 0xc7, 0xae, 0x3d, 0xcf, 0x8f, 0x34, 0x32, 0x5b, 0x58, 0x83, 0x60, 0x73,
+ 0x7c, 0xd2, 0x52, 0x9e, 0xd6, 0x3d, 0xb0, 0x40, 0xdd, 0xd9, 0xcd, 0x28,
+ 0x2e, 0xc5, 0x35, 0xd0, 0x2e, 0x71, 0x07, 0x79, 0x2d, 0x6b, 0x41, 0xd7,
+ 0x4e, 0x4a, 0x77, 0x8a, 0x9d, 0xee, 0x63, 0xb5, 0xf0, 0x9d, 0x52, 0x36,
+ 0x88, 0x0d, 0x0d, 0xf7, 0x03, 0x32, 0x92, 0x91, 0x54, 0xd1, 0xba, 0x1c,
+ 0x24, 0x1f, 0xbc, 0x29, 0x5b, 0x44, 0x19, 0x1c, 0x1e, 0xea, 0xcb, 0x3d,
+ 0x0b, 0x5b, 0xb9, 0xbe, 0xd3, 0xdc, 0x77, 0x69, 0x4c, 0xf6, 0xfb, 0x76,
+ 0xbf, 0x91, 0xcf, 0xf7, 0xa4, 0xa4, 0x38, 0x6e, 0x15, 0xe4, 0x37, 0xd4,
+ 0x30, 0xd9, 0x05, 0xdf, 0x00, 0xba, 0x4c, 0x5b, 0xc7, 0xa6, 0xd6, 0x9d,
+ 0x74, 0xf9, 0x85, 0xcd, 0x91, 0xbb, 0x4e, 0x1c, 0x3e, 0x89, 0xfe, 0x0a,
+ 0xf6, 0x06, 0x49, 0xfa, 0x2e, 0xd1, 0xed, 0xef, 0xe2, 0x12, 0x53, 0xbe,
+ 0xdf, 0x73, 0x81, 0xf1, 0x46, 0x3c, 0x42, 0x1d, 0x2f, 0x6b, 0x9a, 0x1c,
+ 0x0c, 0x93, 0xc0, 0x52, 0xb2, 0xd6, 0xd6, 0x0e, 0xe2, 0x00, 0xf3, 0xe1,
+ 0x25, 0x22, 0xb4, 0x86, 0x8f, 0x24, 0x01, 0x65, 0x6f, 0x20, 0x13, 0xdf,
+ 0x5f, 0xf5, 0x08, 0x59, 0x17, 0xbe, 0xcd, 0x03, 0xda, 0xc6, 0x7d, 0xe7,
+ 0xee, 0x59, 0xf7, 0x5c, 0xc0, 0x60, 0x97, 0xbf, 0xfb, 0x44, 0x7e, 0x0d,
+ 0xd1, 0x25, 0x3b, 0x8e, 0xca, 0xa6, 0x03, 0x03, 0x80, 0x03, 0x99, 0x30,
+ 0x56, 0x26, 0x7e, 0x61, 0xb6, 0xd7, 0xb8, 0x18, 0x68, 0x21, 0x8d, 0x03,
+ 0xc0, 0x6a, 0x55, 0x6b, 0x5a, 0xf3, 0xee, 0xac, 0x38, 0x1e, 0x60, 0x9d,
+ 0x10, 0x4b, 0x4b, 0x8c, 0x11, 0x07, 0xe2, 0x92, 0x96, 0x7d, 0xaf, 0x3e,
+ 0xd1, 0xa9, 0xef, 0x3c, 0x05, 0x2a, 0xdc, 0x58, 0xcd, 0xe6, 0xc0, 0x1f,
+ 0x3a, 0x56, 0x47, 0x3f, 0x31, 0xc2, 0x8f, 0xa0, 0xf1, 0xee, 0x07, 0xee,
+ 0x43, 0x7b, 0x1c, 0x4f, 0xe0, 0x92, 0x92, 0x8b, 0xdc, 0xf7, 0x4b, 0xa5,
+ 0xce, 0x3a, 0x09, 0x56, 0xbd, 0x6f, 0xb3, 0x90, 0xfd, 0xd3, 0x3a, 0x39,
+ 0x87, 0x4f, 0xb9, 0x54, 0xa6, 0xbd, 0x74, 0xe4, 0x77, 0x2a, 0x6e, 0xa4,
+ 0xce, 0xed, 0xdb, 0x8f, 0x72, 0x92, 0x9b, 0x55, 0xf5, 0x27, 0x87, 0x97,
+ 0x7a, 0x6e, 0xdb, 0xdc, 0x8d, 0x74, 0xf8, 0x2d, 0x36, 0x3d, 0xb6, 0xb1,
+ 0xb6, 0x33, 0x50, 0xe1, 0x2d, 0x58, 0xad, 0xbf, 0xd3, 0x1b, 0x3b, 0x78,
+ 0xc4, 0xab, 0x58, 0x17, 0xec, 0xaf, 0x64, 0xee, 0x64, 0xe8, 0x7c, 0x35,
+ 0x94, 0x94, 0xe8, 0xd8, 0x74, 0x03, 0x83, 0xe2, 0x9e, 0x4f, 0xa7, 0x1d,
+ 0xe3, 0x9f, 0x34, 0x20, 0xf0, 0xe3, 0xa6, 0xa0, 0x77, 0x45, 0xd3, 0xfd,
+ 0x9d, 0x92, 0x53, 0xce, 0xee, 0x0a, 0x4d, 0x72, 0x66, 0xb7, 0xc5, 0x38,
+ 0x00, 0x24, 0xa6, 0x49, 0x26, 0x49, 0x25, 0x24, 0xd2, 0x14, 0x5c, 0x54,
+ 0x77, 0x24, 0x35, 0x49, 0x4c, 0x82, 0x47, 0xc1, 0x20, 0x21, 0x20, 0x24,
+ 0xa4, 0xa6, 0x75, 0x88, 0x46, 0xec, 0xa0, 0xd0, 0x9c, 0x94, 0x94, 0xa2,
+ 0x83, 0x6d, 0xdb, 0x1a, 0x63, 0xb2, 0x31, 0xfa, 0x24, 0x9f, 0x05, 0x9d,
+ 0x90, 0xf9, 0x76, 0xd1, 0xdb, 0x9f, 0x8a, 0x4a, 0x44, 0x49, 0x26, 0x7b,
+ 0x95, 0x26, 0x69, 0xe6, 0x54, 0x14, 0xcf, 0xb5, 0xb0, 0x3e, 0x91, 0xe5,
+ 0x25, 0x33, 0x37, 0xb9, 0x9a, 0x34, 0xc9, 0xee, 0x53, 0x8b, 0x5e, 0xe1,
+ 0x2e, 0xb2, 0x7c, 0x8c, 0xa6, 0xab, 0x1a, 0xeb, 0x0f, 0xb5, 0x84, 0xab,
+ 0xb5, 0xf4, 0x3c, 0xdb, 0x46, 0xed, 0xbb, 0x47, 0x9a, 0x4a, 0x68, 0x3a,
+ 0xe7, 0x9d, 0x25, 0x30, 0x6d, 0x8f, 0xd0, 0x02, 0x57, 0x51, 0xd3, 0xfe,
+ 0xab, 0x4b, 0x77, 0x5d, 0xa9, 0x2b, 0x77, 0x0f, 0xea, 0xd6, 0x2d, 0x60,
+ 0x12, 0x04, 0xa4, 0xa7, 0xcf, 0x3e, 0xcd, 0x74, 0xc6, 0xd3, 0xaa, 0xbb,
+ 0x8d, 0x80, 0xed, 0xa4, 0xbe, 0x44, 0xf7, 0x5d, 0xf5, 0x9d, 0x1f, 0x14,
+ 0x0f, 0xa2, 0xd9, 0xf8, 0x2a, 0x57, 0xf4, 0xf6, 0x31, 0xa7, 0x6b, 0x41,
+ 0xf1, 0x49, 0x4f, 0x2a, 0xcc, 0x60, 0x58, 0x46, 0xd8, 0x70, 0x55, 0x5f,
+ 0xbb, 0x56, 0xce, 0xa3, 0x49, 0x2b, 0x57, 0x3a, 0x97, 0x31, 0xee, 0x73,
+ 0x04, 0x11, 0xa3, 0x87, 0x62, 0xb1, 0x6e, 0x25, 0xce, 0x30, 0x61, 0xde,
+ 0x09, 0x29, 0x1b, 0x9d, 0x05, 0x48, 0x58, 0x43, 0x83, 0x81, 0xd4, 0x77,
+ 0x42, 0x71, 0x9f, 0x88, 0x49, 0x8e, 0xd6, 0x12, 0x53, 0xd2, 0x74, 0xec,
+ 0xc6, 0xba, 0xa9, 0x3a, 0x10, 0x09, 0x00, 0x78, 0xf8, 0x04, 0x9e, 0xc3,
+ 0x79, 0xf5, 0xad, 0x99, 0x33, 0xb5, 0x93, 0xa3, 0x47, 0x82, 0xca, 0xe9,
+ 0xd6, 0xec, 0x7b, 0x99, 0x3a, 0xe8, 0xe6, 0xfc, 0x41, 0x0a, 0xf6, 0x46,
+ 0x4c, 0xb4, 0xb1, 0x87, 0x48, 0xed, 0xc0, 0xf8, 0x24, 0xa4, 0x19, 0x6e,
+ 0x65, 0x6d, 0xdc, 0xc0, 0x0b, 0x9d, 0xa3, 0x4f, 0x6d, 0x39, 0x2a, 0x96,
+ 0xdb, 0x09, 0x92, 0x4b, 0x81, 0x13, 0x3c, 0x05, 0x72, 0xfa, 0xc5, 0xb6,
+ 0x86, 0xf0, 0xca, 0xda, 0x04, 0x7c, 0x34, 0xfc, 0x4a, 0xa8, 0xeb, 0x9c,
+ 0x49, 0xab, 0x86, 0x70, 0x23, 0xb1, 0x49, 0x4b, 0x3a, 0x40, 0x00, 0x99,
+ 0x9e, 0x35, 0x49, 0xd5, 0x91, 0x05, 0xce, 0x90, 0xac, 0x59, 0x4b, 0x36,
+ 0x51, 0xbb, 0x59, 0x6f, 0xde, 0x64, 0xcf, 0xe4, 0x40, 0xb0, 0x99, 0x21,
+ 0xa3, 0x83, 0x01, 0x25, 0x23, 0x22, 0x35, 0x60, 0xf9, 0xa6, 0x13, 0xcc,
+ 0xc2, 0x3d, 0x35, 0xb9, 0xa6, 0x5f, 0xa8, 0x26, 0x0f, 0x92, 0x6c, 0x9a,
+ 0x1d, 0x45, 0xc0, 0x37, 0x83, 0xee, 0x1f, 0xd5, 0x3c, 0x24, 0xa4, 0x20,
+ 0xb9, 0xa4, 0x77, 0x05, 0x58, 0x6d, 0x95, 0x90, 0x03, 0x99, 0xaf, 0xcd,
+ 0x44, 0xfa, 0x65, 0xb0, 0x06, 0xd2, 0x35, 0xd3, 0x50, 0x8b, 0x5b, 0x6b,
+ 0x78, 0x04, 0x98, 0x77, 0x88, 0x10, 0x92, 0x91, 0x90, 0xd0, 0x65, 0xb1,
+ 0xf0, 0x52, 0xad, 0xc6, 0xb7, 0x87, 0x33, 0x9f, 0x0e, 0xc7, 0xe4, 0x9e,
+ 0xc0, 0xe6, 0x98, 0xb0, 0x4c, 0xf0, 0xf1, 0xcf, 0xcf, 0xc5, 0x04, 0xc8,
+ 0xe4, 0xcb, 0x7c, 0x39, 0x84, 0x94, 0xea, 0x55, 0x68, 0xd0, 0x81, 0x04,
+ 0xea, 0x47, 0x9a, 0xb7, 0xea, 0x0d, 0xb3, 0xaf, 0x1f, 0x35, 0x8b, 0x46,
+ 0x41, 0x6c, 0x07, 0x1f, 0x64, 0xf3, 0xe0, 0xaf, 0x6e, 0x33, 0xce, 0x90,
+ 0x92, 0x9c, 0xe9, 0x51, 0x2a, 0x3a, 0xa9, 0x4a, 0x4a, 0x50, 0x4e, 0x54,
+ 0x78, 0x4a, 0x52, 0x52, 0xf1, 0x2a, 0x40, 0x26, 0x02, 0x42, 0x43, 0x94,
+ 0x94, 0x91, 0xbc, 0x27, 0x6c, 0x4a, 0x84, 0xa7, 0x94, 0x94, 0x98, 0x42,
+ 0x72, 0x84, 0x1c, 0x88, 0x0a, 0x4a, 0x61, 0x7b, 0xf6, 0x52, 0x4f, 0x7e,
+ 0x02, 0xcc, 0x3a, 0xea, 0xaf, 0x75, 0x07, 0x43, 0x58, 0xd1, 0xde, 0x49,
+ 0x54, 0x52, 0x53, 0x2a, 0xc0, 0x2e, 0x13, 0xc0, 0xd4, 0xad, 0x3e, 0x9d,
+ 0x81, 0xeb, 0xbf, 0xd4, 0x78, 0xf6, 0x8e, 0x56, 0x75, 0x20, 0x97, 0x47,
+ 0x8e, 0x8b, 0xa7, 0xc0, 0xad, 0xad, 0x63, 0x6b, 0x06, 0x0b, 0x9b, 0xaa,
+ 0x4a, 0x75, 0xfa, 0x67, 0x4d, 0xa7, 0x68, 0x76, 0xcd, 0x7e, 0x0b, 0x5d,
+ 0x98, 0xf5, 0x86, 0x11, 0xb3, 0xe8, 0x89, 0xe1, 0x3e, 0x15, 0x4c, 0x15,
+ 0x33, 0x52, 0x74, 0xd5, 0x1a, 0xe6, 0x96, 0xbc, 0x3a, 0x4c, 0x70, 0x60,
+ 0x76, 0x49, 0x4c, 0x18, 0x1a, 0x1a, 0x20, 0x00, 0x65, 0x17, 0x71, 0x0d,
+ 0xe4, 0x05, 0x5d, 0xa1, 0x87, 0x7b, 0x65, 0xce, 0x83, 0xa2, 0x2e, 0xe8,
+ 0x68, 0x10, 0x78, 0xef, 0xaa, 0x4a, 0x47, 0x65, 0x8e, 0x7e, 0x9c, 0xc2,
+ 0xa5, 0x90, 0xe2, 0x5d, 0x03, 0x8e, 0xea, 0xd9, 0x10, 0xc9, 0x2d, 0x32,
+ 0xe3, 0xf8, 0x2a, 0xd7, 0x31, 0xbb, 0xb4, 0x91, 0xe2, 0x92, 0x9c, 0xac,
+ 0xdc, 0x70, 0xf6, 0x17, 0x77, 0x5c, 0x9e, 0x7d, 0x06, 0xbb, 0x09, 0xec,
+ 0x57, 0x6b, 0x93, 0xa3, 0x76, 0x8e, 0xfc, 0x2c, 0x0e, 0xb1, 0x5b, 0x7d,
+ 0x29, 0x8e, 0xda, 0x14, 0x94, 0xf3, 0x9a, 0xa5, 0xc6, 0xa9, 0x89, 0x32,
+ 0x9a, 0x4a, 0x4a, 0x4b, 0x5b, 0xe1, 0xc0, 0x8e, 0x55, 0xc1, 0x6e, 0xe7,
+ 0xb6, 0x75, 0x11, 0x04, 0x7c, 0x74, 0x59, 0xe0, 0xc1, 0x95, 0x61, 0x8e,
+ 0xdd, 0xe4, 0x46, 0xa3, 0xf8, 0xa4, 0xa7, 0x53, 0x27, 0x6d, 0x34, 0xbe,
+ 0xce, 0xef, 0x73, 0x87, 0xf9, 0xa7, 0x6f, 0xf1, 0x2a, 0x83, 0x6b, 0xdc,
+ 0x03, 0xa2, 0x74, 0x25, 0x5d, 0xea, 0x2d, 0x2e, 0xc3, 0xa1, 0xe3, 0x50,
+ 0xf7, 0x3d, 0xe4, 0x78, 0x09, 0xd0, 0xa0, 0xd1, 0x1b, 0x58, 0xdf, 0xdf,
+ 0xfc, 0x83, 0x54, 0x94, 0xd9, 0xa9, 0x8d, 0x7e, 0x3b, 0x1a, 0x7e, 0x95,
+ 0x4e, 0x83, 0xe3, 0xb5, 0xff, 0x00, 0xed, 0x55, 0x43, 0x43, 0x72, 0x1e,
+ 0x5d, 0xc0, 0x25, 0x58, 0xa9, 0xc5, 0x97, 0xbd, 0xa7, 0x87, 0x68, 0x7e,
+ 0x3c, 0x8f, 0xc8, 0xa1, 0x92, 0xd6, 0x8b, 0x1a, 0x47, 0x0e, 0x99, 0x8f,
+ 0x10, 0x52, 0x52, 0xce, 0x2e, 0x7b, 0x0f, 0xb4, 0x01, 0xf9, 0xb0, 0x9f,
+ 0x25, 0x9b, 0xfd, 0x27, 0x91, 0xfe, 0x0c, 0x36, 0x7c, 0xc2, 0x21, 0x6f,
+ 0x0d, 0xee, 0x11, 0x83, 0x3d, 0x4a, 0xcb, 0x5b, 0xad, 0x95, 0x7b, 0x8b,
+ 0x7b, 0x91, 0xdd, 0x25, 0x39, 0x70, 0x18, 0x48, 0x23, 0x9d, 0x14, 0x9b,
+ 0xba, 0xb3, 0xb9, 0x9a, 0xb7, 0x92, 0x39, 0xd1, 0x58, 0x75, 0x6d, 0x36,
+ 0x80, 0x38, 0xe0, 0x0f, 0x22, 0x86, 0x7d, 0xaf, 0x96, 0x1e, 0x4b, 0x80,
+ 0xf8, 0x24, 0xa5, 0xe5, 0xaf, 0x05, 0xb3, 0x3d, 0xf6, 0x9f, 0xca, 0xd2,
+ 0x82, 0x1b, 0xb4, 0x96, 0x82, 0x76, 0x9d, 0x61, 0x11, 0x8e, 0x6b, 0x9e,
+ 0x34, 0x88, 0xe4, 0x79, 0x15, 0x17, 0x87, 0xb2, 0xd2, 0x07, 0x0d, 0x20,
+ 0x83, 0xe4, 0x52, 0x52, 0x27, 0x31, 0x81, 0xce, 0xda, 0x7d, 0xb2, 0x7e,
+ 0x63, 0xc5, 0x5b, 0xf7, 0x7d, 0x9f, 0xe5, 0x13, 0xe4, 0xaa, 0xd8, 0xc3,
+ 0xea, 0x96, 0xb7, 0x9e, 0x40, 0xfc, 0xa1, 0x68, 0xed, 0xfd, 0x5b, 0xe4,
+ 0x92, 0x9c, 0xb4, 0x8a, 0x72, 0x0a, 0x81, 0x29, 0x29, 0x79, 0x4a, 0x54,
+ 0x0b, 0x94, 0x77, 0xea, 0x92, 0x9b, 0x01, 0x3e, 0x88, 0x2c, 0xb0, 0x22,
+ 0x13, 0xa2, 0x4a, 0x5c, 0xb9, 0x38, 0x2a, 0x2d, 0x6b, 0x9c, 0x74, 0x08,
+ 0xa2, 0xa7, 0x24, 0xa5, 0xc2, 0x9b, 0x52, 0xf4, 0xc8, 0x00, 0xc6, 0x9e,
+ 0x29, 0x0e, 0x12, 0x53, 0x53, 0x38, 0x93, 0x63, 0x7c, 0x21, 0x55, 0x57,
+ 0xf2, 0xe9, 0x2f, 0x66, 0xe6, 0x8d, 0x5b, 0xf9, 0x15, 0x04, 0x94, 0xd8,
+ 0xc2, 0x1b, 0xaf, 0x63, 0x7c, 0x5c, 0xba, 0x9c, 0x1a, 0x5c, 0x72, 0x77,
+ 0x34, 0x4b, 0x58, 0x17, 0x29, 0x8d, 0x60, 0xaa, 0xd6, 0xbc, 0xf0, 0xdf,
+ 0xee, 0x5b, 0x38, 0xb9, 0x7d, 0x4b, 0xd1, 0x2f, 0xa5, 0x9a, 0x3b, 0x80,
+ 0x12, 0x53, 0xd7, 0xe2, 0x66, 0x59, 0x5b, 0xbd, 0x3b, 0x03, 0x84, 0x7d,
+ 0x13, 0xe2, 0x15, 0xe1, 0x94, 0xc7, 0x86, 0x90, 0xfd, 0x4a, 0xf3, 0xec,
+ 0x8e, 0xa9, 0xd6, 0xb4, 0xad, 0xe5, 0xcc, 0x03, 0xc4, 0x42, 0xb9, 0xd2,
+ 0x3a, 0x96, 0x4f, 0xac, 0xda, 0x32, 0x4e, 0x8f, 0xe1, 0xc7, 0xc5, 0x25,
+ 0x3d, 0x77, 0xda, 0x6b, 0x26, 0xd0, 0x5e, 0x65, 0xa7, 0x54, 0xc5, 0xf7,
+ 0xda, 0x3f, 0x47, 0x05, 0x87, 0xbc, 0xf6, 0x54, 0xba, 0x86, 0x3b, 0xfd,
+ 0x11, 0x91, 0x8f, 0xce, 0xd8, 0x70, 0xf8, 0x77, 0x5c, 0x6e, 0x46, 0x77,
+ 0x52, 0xad, 0xee, 0x6b, 0x6e, 0x73, 0x5b, 0xdc, 0x03, 0xa2, 0x4a, 0x7d,
+ 0x01, 0xd9, 0x35, 0x56, 0x66, 0xe7, 0xb5, 0x91, 0xa4, 0x25, 0xf6, 0x9c,
+ 0x7b, 0xc1, 0xf4, 0xdc, 0x6d, 0x03, 0xb0, 0x2b, 0xce, 0x1b, 0x9d, 0x93,
+ 0x6b, 0x83, 0x2d, 0x79, 0x83, 0xc9, 0xd5, 0xdf, 0x82, 0xd3, 0xc7, 0xcc,
+ 0x66, 0x30, 0x06, 0x9c, 0xa2, 0x1c, 0x74, 0x24, 0x82, 0x1b, 0xff, 0x00,
+ 0x49, 0x25, 0x3d, 0x26, 0x5b, 0xd8, 0x24, 0x86, 0xf1, 0xd8, 0xf2, 0x16,
+ 0x3f, 0x52, 0xa4, 0xd9, 0x41, 0x8e, 0x7b, 0x29, 0xd4, 0xdc, 0xd7, 0x3c,
+ 0x3f, 0xd5, 0x16, 0x31, 0xe3, 0xe8, 0x9f, 0x3f, 0x02, 0xae, 0x3e, 0x80,
+ 0xea, 0x37, 0x18, 0x1a, 0x40, 0x6f, 0x72, 0x52, 0x53, 0xc3, 0x5a, 0xc2,
+ 0xcb, 0x0b, 0x5d, 0xc8, 0x50, 0x5a, 0xdd, 0x63, 0x10, 0x30, 0x8b, 0x00,
+ 0xd7, 0x87, 0x2c, 0xa0, 0xd2, 0x4c, 0x24, 0xa5, 0xf6, 0x3f, 0x66, 0xf8,
+ 0x3b, 0x26, 0x27, 0xb4, 0xa7, 0xac, 0x90, 0x74, 0xed, 0xaa, 0xba, 0xda,
+ 0x6e, 0xa6, 0xb6, 0xd6, 0x44, 0xd7, 0x7e, 0x9b, 0x4f, 0x89, 0xd2, 0x55,
+ 0x06, 0xc8, 0x29, 0x29, 0xd7, 0xb7, 0x22, 0x31, 0x70, 0xdc, 0x20, 0xb4,
+ 0x07, 0xb5, 0xc0, 0xf7, 0x1b, 0xbd, 0xc3, 0xee, 0x51, 0xc3, 0x61, 0x7e,
+ 0x59, 0x03, 0x56, 0xb5, 0xa4, 0xb4, 0x9f, 0x03, 0xc2, 0xab, 0x5b, 0x83,
+ 0xf1, 0x9d, 0x43, 0x8c, 0x6d, 0x3b, 0xd8, 0x7c, 0x37, 0x68, 0xef, 0xc8,
+ 0xb5, 0x3a, 0x65, 0x6d, 0xc7, 0xa5, 0xd9, 0x36, 0x9d, 0xb2, 0x06, 0xd9,
+ 0xee, 0x07, 0x1f, 0x8a, 0x4a, 0x5e, 0xf6, 0x06, 0xde, 0xf8, 0x1a, 0x86,
+ 0xb4, 0x8f, 0x8b, 0x5d, 0x07, 0xf2, 0xa8, 0x5a, 0xdd, 0xb9, 0x0e, 0x27,
+ 0xe8, 0x3c, 0x82, 0x3c, 0x9d, 0x10, 0xa5, 0x40, 0x76, 0x43, 0x8d, 0xa4,
+ 0xfd, 0x36, 0xd8, 0xd1, 0x3d, 0xf8, 0x77, 0xf0, 0x53, 0xc8, 0x7f, 0xa0,
+ 0xe7, 0x3e, 0xc6, 0x97, 0x32, 0x01, 0x69, 0x1c, 0x82, 0xef, 0x04, 0x94,
+ 0xc2, 0xdb, 0xbd, 0x36, 0x6c, 0x60, 0x1e, 0xab, 0x8c, 0x38, 0x8f, 0x14,
+ 0x06, 0x7a, 0xd5, 0x5d, 0xf6, 0x96, 0x9f, 0xa2, 0x77, 0x03, 0xe6, 0x7b,
+ 0x22, 0x39, 0xf8, 0xd5, 0x86, 0x33, 0xf4, 0x84, 0xc0, 0x82, 0x40, 0xf8,
+ 0xf6, 0x2a, 0x45, 0xcd, 0x23, 0xd3, 0x00, 0xed, 0x68, 0xdc, 0xe1, 0xf1,
+ 0x49, 0x4c, 0xed, 0xf4, 0xef, 0x69, 0xca, 0xa8, 0x41, 0xdb, 0xfa, 0x46,
+ 0x0f, 0xcd, 0xfe, 0x57, 0xc1, 0x56, 0x6b, 0x78, 0x77, 0x60, 0xd2, 0xef,
+ 0xf3, 0xb8, 0x53, 0x22, 0xca, 0xed, 0xac, 0x56, 0x4b, 0x6c, 0x8d, 0xce,
+ 0x23, 0xc3, 0x98, 0x8f, 0x82, 0x9e, 0x53, 0x9b, 0xe9, 0x96, 0x40, 0xaa,
+ 0xe3, 0xab, 0x99, 0x30, 0x35, 0xf0, 0x49, 0x4e, 0x7c, 0x0d, 0xe3, 0x5d,
+ 0x4f, 0x08, 0xd7, 0x38, 0x6d, 0xae, 0xc7, 0x79, 0xb1, 0xca, 0xbb, 0xc3,
+ 0x9a, 0xd0, 0x4f, 0xb5, 0xc3, 0xc7, 0xcb, 0x54, 0x5b, 0x5c, 0x1d, 0x43,
+ 0xa3, 0x5d, 0x1a, 0xf1, 0xf1, 0x1a, 0x24, 0xa6, 0x4f, 0x69, 0xf5, 0xea,
+ 0x77, 0xe7, 0x40, 0x25, 0x68, 0x6c, 0xf6, 0xc4, 0x69, 0xe0, 0xb3, 0xe9,
+ 0xb3, 0xd4, 0xc9, 0x64, 0xea, 0x4b, 0x41, 0x72, 0xd6, 0xd9, 0xec, 0xdf,
+ 0xd9, 0x25, 0x39, 0x02, 0xa3, 0x1a, 0xa1, 0xd9, 0x54, 0x02, 0x55, 0xc7,
+ 0x80, 0x10, 0x2f, 0x3e, 0xd4, 0x94, 0xe6, 0xbb, 0x42, 0x52, 0x53, 0x2d,
+ 0x92, 0x54, 0x76, 0x90, 0x92, 0x96, 0x6f, 0xd2, 0x57, 0x6b, 0xa9, 0xcf,
+ 0x88, 0x1f, 0xec, 0x55, 0x2a, 0x63, 0x9c, 0xf0, 0x07, 0xcc, 0xf9, 0x2d,
+ 0x2a, 0xe0, 0x80, 0xc6, 0x12, 0x1b, 0xe5, 0xa4, 0xfc, 0xca, 0x4a, 0x66,
+ 0x2b, 0xad, 0x83, 0x49, 0x73, 0xbf, 0x92, 0x3f, 0xbd, 0x36, 0xfb, 0x19,
+ 0xf9, 0xbb, 0x7f, 0xad, 0xfe, 0xc4, 0x4d, 0xf7, 0x54, 0x08, 0xa5, 0x85,
+ 0xa4, 0xfe, 0x74, 0x6e, 0x3f, 0xe7, 0x39, 0x57, 0xba, 0xac, 0xa7, 0x8d,
+ 0xd6, 0x38, 0x86, 0xf8, 0xb8, 0xc0, 0x49, 0x49, 0x45, 0x93, 0xdb, 0x6c,
+ 0xf7, 0x1f, 0xc5, 0x39, 0x3a, 0x13, 0x0d, 0x31, 0xc8, 0xfe, 0x3a, 0x2a,
+ 0x2d, 0x7d, 0x6d, 0xd3, 0x79, 0x71, 0xf2, 0xe1, 0x1a, 0x49, 0x00, 0xb4,
+ 0x90, 0x7c, 0xc7, 0x64, 0x94, 0x94, 0x5d, 0x8c, 0x46, 0xd7, 0x83, 0x59,
+ 0xf1, 0x1a, 0x85, 0x9f, 0x90, 0xca, 0xf7, 0x93, 0x51, 0x90, 0x89, 0x79,
+ 0xfd, 0xe1, 0x0a, 0xb1, 0x22, 0x74, 0x49, 0x49, 0x70, 0xeb, 0x16, 0x5a,
+ 0x1a, 0x78, 0xe5, 0x69, 0x63, 0xb3, 0xa9, 0xda, 0xfd, 0x98, 0xce, 0x34,
+ 0xd6, 0xde, 0x1e, 0x44, 0x4f, 0xc1, 0x55, 0xe9, 0x1e, 0xdc, 0xd6, 0xbb,
+ 0xc0, 0x2f, 0x40, 0xc3, 0xc4, 0xaa, 0xca, 0x81, 0x80, 0x49, 0x03, 0x54,
+ 0x94, 0xf3, 0x58, 0x3d, 0x0b, 0x7b, 0xcd, 0x9d, 0x51, 0xe6, 0xe0, 0x41,
+ 0x26, 0x1c, 0x4b, 0xb7, 0x1e, 0x21, 0x35, 0x7d, 0x18, 0xb2, 0xe6, 0x16,
+ 0x93, 0xb5, 0xae, 0x11, 0xf7, 0xf0, 0xba, 0xab, 0xf0, 0x8f, 0xe6, 0x82,
+ 0x7c, 0xa6, 0x07, 0xe0, 0xb3, 0x9f, 0x8e, 0x2a, 0xcd, 0xa1, 0x93, 0x2e,
+ 0x2e, 0x04, 0xb4, 0x70, 0x02, 0x4a, 0x77, 0x32, 0xe8, 0x61, 0xc3, 0x0c,
+ 0x22, 0x0c, 0x09, 0x8d, 0x17, 0x23, 0x91, 0xd2, 0x6a, 0x36, 0xbd, 0xef,
+ 0x21, 0xa6, 0x7d, 0x80, 0x89, 0x5d, 0x76, 0x75, 0x81, 0xad, 0x63, 0x0c,
+ 0x00, 0xe1, 0xaa, 0xa5, 0x55, 0x74, 0x5b, 0x61, 0xae, 0xd1, 0xb8, 0x1f,
+ 0xf5, 0x94, 0x94, 0xf3, 0xb4, 0xf4, 0x7c, 0x57, 0x35, 0xac, 0xb5, 0xa5,
+ 0xcd, 0x69, 0x3a, 0x8d, 0x09, 0xdd, 0xe2, 0x56, 0xcd, 0x1d, 0x17, 0x0d,
+ 0xf4, 0x0a, 0xbd, 0x06, 0x96, 0x73, 0xee, 0x3b, 0xbb, 0x47, 0x0b, 0x52,
+ 0xbc, 0x36, 0xd4, 0x63, 0x96, 0x8f, 0x25, 0x64, 0x06, 0x30, 0x70, 0x12,
+ 0x53, 0x84, 0xdf, 0xab, 0x54, 0x63, 0x0f, 0xd0, 0xde, 0xf6, 0xb2, 0x64,
+ 0x30, 0xea, 0x07, 0xc3, 0xc1, 0x0e, 0xea, 0x5d, 0x4b, 0x0b, 0x5a, 0x5b,
+ 0xa7, 0x78, 0xd5, 0x69, 0xe5, 0x5e, 0x35, 0xd7, 0xe2, 0xb2, 0xb2, 0xef,
+ 0x1b, 0x4a, 0x4a, 0x70, 0xfa, 0x86, 0xcb, 0x2b, 0x73, 0x0f, 0xf7, 0xac,
+ 0x71, 0x8c, 0x58, 0x77, 0x01, 0xb9, 0xab, 0x4f, 0x21, 0xe3, 0xdc, 0x63,
+ 0x99, 0x50, 0xc6, 0xda, 0x6b, 0x2d, 0x3a, 0xbc, 0x8e, 0x3c, 0x3c, 0xca,
+ 0x4a, 0x63, 0x3b, 0xa8, 0x6f, 0xa9, 0xcd, 0x72, 0xe6, 0x3b, 0xc8, 0x09,
+ 0x8f, 0x92, 0xc4, 0x1c, 0xca, 0xdd, 0xcb, 0x6b, 0x59, 0x8c, 0xf0, 0x47,
+ 0x97, 0xf6, 0x8f, 0xfb, 0x16, 0x23, 0xdb, 0xb4, 0xc7, 0xcc, 0x1f, 0x24,
+ 0x94, 0x9e, 0xa1, 0x25, 0xaf, 0xec, 0x34, 0x70, 0xf1, 0x90, 0xb4, 0x2b,
+ 0x6b, 0xef, 0x7b, 0x5d, 0x73, 0xa2, 0xbf, 0xa3, 0x5d, 0x63, 0x52, 0x63,
+ 0xf7, 0x47, 0x97, 0x8a, 0xa3, 0x8c, 0xdd, 0xc3, 0x69, 0x30, 0x08, 0xd7,
+ 0xe1, 0xdd, 0x5f, 0x66, 0x60, 0xac, 0x3b, 0x69, 0xdb, 0x6b, 0xa3, 0x73,
+ 0xc7, 0x2c, 0x69, 0x1a, 0x35, 0xbf, 0x04, 0x94, 0xdf, 0x18, 0xef, 0xc7,
+ 0x2c, 0x70, 0x00, 0x35, 0x84, 0x38, 0xb4, 0x98, 0x30, 0x74, 0x20, 0xfc,
+ 0x94, 0xb2, 0xea, 0x6e, 0x46, 0x19, 0x65, 0x47, 0x73, 0x83, 0x61, 0x87,
+ 0xf7, 0xf6, 0xf1, 0xf3, 0x84, 0x2a, 0x6d, 0xa4, 0x30, 0x7d, 0xa1, 0x9e,
+ 0xa5, 0x16, 0x00, 0x1e, 0xee, 0x48, 0x3e, 0x32, 0x95, 0xf4, 0xdb, 0x88,
+ 0xd1, 0x66, 0x33, 0xbd, 0x6c, 0x43, 0xab, 0x83, 0x7f, 0x37, 0xcf, 0xc8,
+ 0x84, 0x94, 0xd1, 0xb9, 0xa0, 0xe4, 0xb0, 0x91, 0x1b, 0x98, 0xc3, 0x1d,
+ 0xb8, 0x82, 0x9d, 0x84, 0x9b, 0x5d, 0xb8, 0xc0, 0x73, 0xb8, 0x3f, 0x72,
+ 0xb3, 0x68, 0xc7, 0xcf, 0x63, 0x1c, 0xc7, 0x0a, 0xf2, 0xaa, 0xfc, 0xd3,
+ 0x03, 0x78, 0x3a, 0xe9, 0xd9, 0x50, 0xbd, 0x96, 0x51, 0x73, 0xb4, 0x20,
+ 0x13, 0xb8, 0x4f, 0x8f, 0x82, 0x4a, 0x6e, 0xd1, 0x93, 0x5d, 0x5e, 0xb6,
+ 0x6b, 0xc4, 0xed, 0x3b, 0x6b, 0x07, 0xb9, 0x9d, 0x16, 0x56, 0x4d, 0xef,
+ 0xc9, 0x7e, 0xe7, 0x77, 0x32, 0xa5, 0x91, 0x6e, 0xf6, 0x36, 0xb6, 0xe9,
+ 0x53, 0x49, 0x20, 0xf8, 0x97, 0x72, 0x4a, 0xaa, 0xf3, 0xc4, 0x70, 0x04,
+ 0x24, 0xa4, 0xce, 0x7f, 0xb0, 0x09, 0xd0, 0x04, 0x5d, 0xde, 0xc6, 0x30,
+ 0x0f, 0xa6, 0xd8, 0x0a, 0xab, 0x4b, 0x4c, 0x6e, 0xfa, 0x23, 0xb2, 0x2d,
+ 0x99, 0x0d, 0xdf, 0x23, 0x52, 0xd1, 0x0d, 0xf0, 0x07, 0xc5, 0x25, 0x37,
+ 0x30, 0x31, 0xcf, 0xa8, 0x6c, 0x26, 0x44, 0xc0, 0xf9, 0x2d, 0x89, 0x3b,
+ 0x36, 0x79, 0x2c, 0xfe, 0x9a, 0x5a, 0x68, 0x69, 0x02, 0x00, 0x57, 0x25,
+ 0xfb, 0x77, 0x76, 0x49, 0x4e, 0x5b, 0xaf, 0x67, 0x8a, 0x0d, 0xb6, 0xb4,
+ 0x83, 0x0a, 0xa8, 0xae, 0xc2, 0x9c, 0xd6, 0xe1, 0xca, 0x4a, 0x60, 0x5d,
+ 0xaa, 0x2b, 0x44, 0xf2, 0x80, 0xed, 0x0a, 0x9d, 0x4e, 0x33, 0x09, 0x29,
+ 0x37, 0xf3, 0x4d, 0xde, 0xd1, 0x26, 0x75, 0x45, 0xab, 0x28, 0x3b, 0xda,
+ 0xc1, 0xb3, 0xc8, 0x09, 0xfc, 0xa8, 0x6d, 0x00, 0xb1, 0xcd, 0x3c, 0x92,
+ 0x23, 0xee, 0x50, 0xa8, 0xb4, 0x3b, 0x61, 0x25, 0x8e, 0x98, 0x90, 0x25,
+ 0x25, 0x3a, 0xf5, 0xd8, 0x6a, 0x68, 0xd4, 0x6e, 0x3a, 0xed, 0x3e, 0xe3,
+ 0xf3, 0xf0, 0x40, 0x7b, 0x0e, 0x43, 0xe5, 0xc4, 0xd8, 0xef, 0xde, 0x76,
+ 0x8c, 0x6a, 0x9b, 0x2a, 0xad, 0x95, 0xcc, 0x8d, 0x7b, 0x77, 0x3f, 0xd6,
+ 0x2a, 0x16, 0xb5, 0xf0, 0xed, 0xe6, 0x18, 0x34, 0x0d, 0x9e, 0x4a, 0x4a,
+ 0x66, 0xce, 0x9e, 0x1c, 0x09, 0x0e, 0x6f, 0xde, 0x10, 0xad, 0x63, 0x6a,
+ 0x05, 0xa5, 0xdf, 0x25, 0x06, 0xd1, 0x90, 0x4e, 0xf3, 0xed, 0x8f, 0xa2,
+ 0x38, 0x8f, 0x82, 0x05, 0xce, 0x7e, 0xe2, 0x1c, 0x77, 0x1e, 0xe0, 0x04,
+ 0x94, 0x8a, 0xcd, 0x74, 0x9d, 0x02, 0x09, 0x81, 0xf1, 0x4e, 0xe7, 0x4f,
+ 0x68, 0x51, 0x02, 0x52, 0x53, 0x7b, 0xa3, 0xb8, 0x0c, 0x92, 0x0f, 0x25,
+ 0xa6, 0x17, 0x71, 0xd2, 0xf3, 0x25, 0x81, 0xbd, 0xf8, 0x85, 0xe7, 0x95,
+ 0x58, 0x69, 0xb5, 0xaf, 0x1f, 0x9b, 0xcf, 0xc1, 0x74, 0xb8, 0x59, 0x85,
+ 0x85, 0xa6, 0x52, 0x53, 0xd9, 0xd9, 0x90, 0x05, 0x73, 0x3f, 0x15, 0x89,
+ 0x84, 0xe3, 0x91, 0xd4, 0xbd, 0x43, 0xc3, 0x49, 0x83, 0xf0, 0x43, 0xca,
+ 0xce, 0x71, 0xa0, 0x57, 0x5e, 0xaf, 0xb3, 0xda, 0xdf, 0x9a, 0x1f, 0x4e,
+ 0xce, 0xab, 0xa6, 0xe4, 0x3a, 0xac, 0xb1, 0xee, 0x11, 0xb4, 0xf6, 0x3e,
+ 0x69, 0x29, 0xde, 0xea, 0x44, 0x17, 0x01, 0xe1, 0x10, 0x55, 0x27, 0x58,
+ 0xfc, 0x7b, 0x18, 0xe7, 0x0f, 0xd1, 0xbb, 0x93, 0xdc, 0x20, 0x75, 0x1f,
+ 0xac, 0x18, 0xee, 0x73, 0x5c, 0xcd, 0x47, 0x24, 0x0d, 0x65, 0x07, 0x13,
+ 0x2a, 0xce, 0xa9, 0x68, 0xad, 0x95, 0xb9, 0x95, 0x0f, 0xa4, 0xe7, 0x0e,
+ 0xc9, 0x29, 0xe8, 0x2a, 0xcc, 0x6b, 0xc6, 0xa4, 0x00, 0x35, 0x05, 0x42,
+ 0xfc, 0xa6, 0x81, 0xb4, 0x1d, 0x4a, 0xc8, 0xbf, 0x1b, 0x2b, 0x01, 0xd2,
+ 0xdf, 0x7d, 0x47, 0x8f, 0x10, 0xa1, 0xf6, 0xbd, 0xed, 0xdc, 0x0e, 0xbd,
+ 0xc2, 0x4a, 0x67, 0x99, 0x7e, 0xdd, 0x01, 0x59, 0x17, 0xdc, 0x4b, 0x4c,
+ 0x92, 0x7c, 0xcf, 0x28, 0xf7, 0xda, 0x5c, 0xed, 0x55, 0x1b, 0x01, 0x2e,
+ 0x02, 0x52, 0x52, 0x27, 0xb2, 0x6b, 0x24, 0xfd, 0xdf, 0x15, 0x6a, 0x9c,
+ 0x71, 0x5d, 0x21, 0xb6, 0xd8, 0x1a, 0xd8, 0x92, 0x78, 0xd3, 0x9d, 0x4a,
+ 0xa7, 0xd4, 0x5e, 0x6a, 0xc6, 0x76, 0xdd, 0x0e, 0x9a, 0xfc, 0xd6, 0x4d,
+ 0xf9, 0xd9, 0x39, 0x0d, 0x0d, 0xb1, 0xe4, 0xb4, 0x76, 0x1a, 0x04, 0x94,
+ 0xdc, 0xcc, 0xea, 0x0c, 0xbe, 0xe2, 0xc6, 0xff, 0x00, 0x34, 0xdd, 0x01,
+ 0xf1, 0x3e, 0x2a, 0x9e, 0x43, 0x44, 0xc8, 0xec, 0x82, 0xde, 0x51, 0x09,
+ 0x91, 0xaf, 0x82, 0x4a, 0x67, 0x4b, 0xc8, 0xde, 0xd1, 0xcb, 0x9b, 0x03,
+ 0xe4, 0xa3, 0x8e, 0x4e, 0xee, 0x7e, 0x97, 0xb6, 0x7c, 0x0f, 0x64, 0x3f,
+ 0x73, 0x60, 0xf8, 0xf0, 0x42, 0x93, 0x1c, 0x77, 0xc9, 0x1a, 0x1e, 0x52,
+ 0x53, 0xa5, 0x43, 0xdf, 0x5d, 0x37, 0x34, 0x9d, 0x1b, 0x0e, 0x0d, 0x3e,
+ 0x7c, 0xa2, 0x61, 0xf5, 0x2a, 0xd9, 0xa3, 0x89, 0x6f, 0x60, 0xe1, 0xf9,
+ 0x0a, 0xa6, 0x6d, 0x75, 0xb4, 0x96, 0x8d, 0x5e, 0x74, 0x27, 0xc9, 0x06,
+ 0x9a, 0x88, 0x7e, 0xd7, 0x0d, 0x12, 0x53, 0x67, 0x37, 0x22, 0xab, 0x9d,
+ 0x35, 0x97, 0x97, 0x4f, 0xc4, 0x04, 0x21, 0x6e, 0x53, 0x99, 0xe9, 0xb8,
+ 0x17, 0xb3, 0xf3, 0x67, 0x91, 0xf0, 0x56, 0xab, 0xa1, 0xa0, 0x71, 0xaa,
+ 0x23, 0x6a, 0x6c, 0xea, 0x0a, 0x4a, 0x68, 0x0c, 0x7b, 0x9f, 0x32, 0x23,
+ 0xc4, 0x76, 0x4c, 0xfc, 0x4b, 0x5a, 0xd9, 0xdb, 0xa2, 0xd2, 0xd8, 0xea,
+ 0xcc, 0xd6, 0x43, 0x87, 0x81, 0x53, 0xfb, 0x76, 0x43, 0x00, 0x05, 0x8c,
+ 0x3f, 0x10, 0x09, 0x49, 0x4e, 0x3d, 0x74, 0x1d, 0xd0, 0xe1, 0xa4, 0x21,
+ 0xb9, 0x80, 0x38, 0x01, 0xc1, 0x5b, 0x99, 0x17, 0x59, 0x68, 0x6b, 0xdd,
+ 0x58, 0x6b, 0x47, 0xe6, 0xb4, 0x01, 0xa7, 0x75, 0x95, 0x90, 0xc6, 0xee,
+ 0xf5, 0x1a, 0x23, 0x88, 0x1e, 0x49, 0x29, 0xd6, 0xe9, 0xd5, 0xb7, 0xec,
+ 0xc0, 0x46, 0xad, 0xe4, 0xad, 0x8d, 0x8d, 0xfb, 0x14, 0xc6, 0xaa, 0x86,
+ 0x0b, 0x43, 0x31, 0xdb, 0xbb, 0x97, 0x2d, 0x6d, 0x9f, 0xab, 0x47, 0xcd,
+ 0x25, 0x3c, 0xb3, 0xaa, 0x8e, 0x02, 0x5f, 0x65, 0x2e, 0x12, 0xad, 0x8a,
+ 0xc1, 0x28, 0xbb, 0x40, 0x10, 0x92, 0x9e, 0x7f, 0x2a, 0xbf, 0x4e, 0xc8,
+ 0x41, 0x6c, 0xce, 0x8a, 0xe7, 0x52, 0x11, 0x6a, 0xab, 0x5f, 0x24, 0xa4,
+ 0xa6, 0x7b, 0xcc, 0xfc, 0x13, 0xdf, 0x51, 0xae, 0xd0, 0xee, 0x03, 0xa0,
+ 0x8f, 0x9a, 0xd0, 0xe9, 0xd8, 0x2d, 0xb0, 0x7d, 0xa7, 0x20, 0x11, 0x43,
+ 0x24, 0x9f, 0x33, 0xd8, 0x21, 0x1a, 0xec, 0xce, 0xbc, 0xbb, 0x6c, 0x37,
+ 0xf3, 0x63, 0x88, 0x49, 0x4d, 0x9c, 0x67, 0x32, 0xd6, 0x86, 0xb8, 0x6e,
+ 0x70, 0xd5, 0xa4, 0x23, 0xbd, 0x95, 0x87, 0x17, 0xbb, 0xe9, 0x4c, 0xc7,
+ 0x3c, 0xf9, 0x2a, 0x43, 0x22, 0xcc, 0x07, 0xfa, 0x76, 0x4b, 0xda, 0x78,
+ 0xdb, 0xed, 0xd3, 0xce, 0x15, 0xcd, 0xed, 0xc8, 0x60, 0x75, 0x6e, 0xdf,
+ 0x3f, 0x99, 0xa3, 0x4b, 0x7e, 0x49, 0x29, 0x1d, 0xb7, 0x48, 0x22, 0x76,
+ 0xfe, 0x2e, 0x54, 0x2d, 0xde, 0xe9, 0xf6, 0x98, 0xf3, 0xd1, 0x59, 0xb6,
+ 0xa8, 0x27, 0xdb, 0x07, 0xbc, 0x7f, 0xa8, 0x55, 0xac, 0x6c, 0x0d, 0x4c,
+ 0x24, 0xa6, 0xb3, 0x98, 0x41, 0xd7, 0x44, 0xd1, 0x24, 0x00, 0x35, 0x29,
+ 0xc9, 0x13, 0x0d, 0xd4, 0xf8, 0xa2, 0x34, 0x1a, 0x9b, 0xeb, 0x1f, 0xa5,
+ 0xc3, 0x07, 0x9f, 0x8f, 0xc9, 0x25, 0x20, 0xb3, 0x47, 0x11, 0xcc, 0x68,
+ 0xb4, 0xb0, 0xef, 0x3e, 0x93, 0x09, 0xed, 0xed, 0x3f, 0x2e, 0x16, 0x61,
+ 0xe5, 0x6c, 0xfd, 0x5f, 0xe9, 0xd7, 0x75, 0x17, 0xd9, 0x8e, 0xd1, 0xb5,
+ 0x9a, 0x13, 0x61, 0xe0, 0x1e, 0x3e, 0xf4, 0x94, 0xec, 0xe1, 0x96, 0x3a,
+ 0xca, 0xed, 0x3a, 0xc0, 0xf6, 0xfc, 0x54, 0xf3, 0x71, 0xab, 0xc8, 0x82,
+ 0xf2, 0x04, 0xcf, 0x25, 0x57, 0xbb, 0x13, 0x27, 0xa6, 0x17, 0xd7, 0x2e,
+ 0xba, 0xba, 0xc1, 0x3e, 0xa8, 0x69, 0x00, 0x4f, 0x8a, 0x58, 0x58, 0xd6,
+ 0x65, 0x86, 0xba, 0xeb, 0x83, 0x0b, 0xb5, 0x73, 0x36, 0xee, 0xd0, 0xf1,
+ 0xca, 0x4a, 0x65, 0x8b, 0xd1, 0xda, 0xdb, 0x7d, 0xd7, 0x02, 0xde, 0x40,
+ 0x90, 0xba, 0x1c, 0x1c, 0x5a, 0xf1, 0xda, 0x36, 0xb8, 0x19, 0xf0, 0x20,
+ 0xac, 0xd6, 0x7d, 0x5f, 0xac, 0x9d, 0xc7, 0x2a, 0x59, 0xd8, 0x06, 0x89,
+ 0xfc, 0x52, 0xb3, 0xa4, 0x62, 0x34, 0x98, 0xba, 0xd3, 0x1d, 0x81, 0x00,
+ 0xff, 0x00, 0xd1, 0x49, 0x4e, 0xe5, 0xce, 0x0e, 0x96, 0x12, 0x20, 0xf2,
+ 0xb1, 0x32, 0xf1, 0x46, 0xe7, 0xbe, 0x90, 0x1b, 0x63, 0x7e, 0x93, 0x7f,
+ 0x35, 0xe3, 0xc5, 0x31, 0xe9, 0x74, 0xb4, 0xee, 0x65, 0xd7, 0x30, 0x92,
+ 0x36, 0xcb, 0xc9, 0xfc, 0xaa, 0xc3, 0x3d, 0x3a, 0x2b, 0x2d, 0x7d, 0x9e,
+ 0xa3, 0xc7, 0x24, 0xf8, 0x24, 0xa7, 0x1e, 0xd8, 0xdf, 0x1c, 0x77, 0x82,
+ 0x87, 0xb5, 0xa3, 0x5e, 0x4a, 0x3d, 0x83, 0xd4, 0xb5, 0xc7, 0xb1, 0x40,
+ 0xc8, 0x7b, 0x2a, 0x61, 0x3d, 0xc2, 0x4a, 0x72, 0xba, 0xc5, 0xa3, 0x6e,
+ 0xc1, 0xdc, 0x81, 0x1f, 0x0d, 0x56, 0x4a, 0xb9, 0x9e, 0x1c, 0xe2, 0x1e,
+ 0xef, 0x1f, 0xca, 0xaa, 0x06, 0x93, 0xc7, 0xe5, 0x49, 0x4b, 0x8d, 0x39,
+ 0xe5, 0x49, 0xe2, 0x1a, 0x35, 0xd5, 0x3b, 0x6a, 0x2d, 0xf7, 0xbf, 0x81,
+ 0xac, 0x29, 0x51, 0x60, 0x0f, 0xdc, 0xee, 0x4f, 0x07, 0xc1, 0x25, 0x31,
+ 0xae, 0xb7, 0xda, 0xe8, 0x68, 0xf7, 0x77, 0x57, 0xe9, 0xc6, 0x0d, 0x86,
+ 0xd9, 0xf4, 0x95, 0xc6, 0x9c, 0x5c, 0x86, 0xd6, 0xdc, 0x56, 0x93, 0x71,
+ 0x1e, 0xf6, 0x34, 0x78, 0x77, 0x28, 0x79, 0x78, 0xee, 0xae, 0xb7, 0x3c,
+ 0xbf, 0xf4, 0xcd, 0x3f, 0x44, 0x70, 0x21, 0x25, 0x24, 0xaf, 0x16, 0xb6,
+ 0xeb, 0x1a, 0xa8, 0x5f, 0x8a, 0x0f, 0xb9, 0xba, 0x14, 0xf8, 0xd9, 0x1e,
+ 0xa3, 0x43, 0xbc, 0x91, 0x5c, 0xe2, 0x42, 0x4a, 0x45, 0x4e, 0x90, 0x1d,
+ 0xf3, 0x56, 0x3d, 0x8e, 0x22, 0x74, 0x85, 0x4f, 0x7e, 0xd7, 0xcf, 0x0a,
+ 0xf5, 0x01, 0x8e, 0x00, 0xba, 0x09, 0x29, 0x29, 0x76, 0x51, 0xbc, 0xfb,
+ 0x7e, 0xf5, 0x61, 0xbd, 0x3d, 0x80, 0x4b, 0x9c, 0x24, 0xf0, 0x8b, 0x51,
+ 0x68, 0x3b, 0x60, 0x00, 0x55, 0x81, 0x48, 0x77, 0x07, 0x4f, 0x1e, 0xc9,
+ 0x29, 0xcf, 0xb7, 0x04, 0x90, 0x4c, 0x92, 0xb2, 0xf2, 0x30, 0x1c, 0xd7,
+ 0x88, 0x33, 0xa8, 0x90, 0x56, 0xe6, 0x66, 0x4d, 0x38, 0x95, 0x97, 0x58,
+ 0x64, 0x03, 0xf7, 0xfd, 0xeb, 0x3e, 0xab, 0x6c, 0xca, 0x77, 0xaa, 0x61,
+ 0xb5, 0xfe, 0x63, 0x40, 0x89, 0xf3, 0x29, 0x29, 0x3b, 0x04, 0x35, 0xac,
+ 0xe2, 0x22, 0x16, 0xa6, 0xf6, 0xfa, 0x1f, 0x28, 0x85, 0x42, 0xba, 0x9d,
+ 0xbc, 0x3d, 0xdc, 0x2b, 0x5e, 0xa5, 0x31, 0xf4, 0x84, 0xf8, 0x24, 0xa6,
+ 0x8b, 0x71, 0xdc, 0x58, 0x6c, 0x03, 0xda, 0x3b, 0x94, 0x37, 0x40, 0x5b,
+ 0x0c, 0x68, 0x0d, 0x75, 0x4e, 0x6f, 0xe8, 0x9c, 0x0f, 0x1e, 0x05, 0x4b,
+ 0x67, 0x4a, 0xe9, 0x3d, 0x3f, 0xd4, 0xba, 0x97, 0xe5, 0x5a, 0xe3, 0x0e,
+ 0x79, 0x6e, 0xed, 0xb3, 0xc4, 0x00, 0x92, 0x9e, 0x27, 0xa9, 0x8f, 0xd2,
+ 0xca, 0xb3, 0xd0, 0x7a, 0x2e, 0x47, 0x52, 0xb6, 0x43, 0x48, 0xa1, 0xa7,
+ 0xde, 0xf3, 0xf9, 0x02, 0xd4, 0xc4, 0xe8, 0x67, 0xaf, 0x65, 0x7d, 0xa3,
+ 0x63, 0xb1, 0xb0, 0x83, 0xa4, 0xe9, 0x05, 0xc3, 0xf9, 0x2b, 0xb5, 0xc7,
+ 0xc4, 0xa3, 0x17, 0x1d, 0xb8, 0xf8, 0xec, 0x0c, 0x63, 0x34, 0x10, 0x92,
+ 0x9e, 0x73, 0xa9, 0xf4, 0x91, 0xb2, 0x9c, 0x2a, 0x0e, 0xd6, 0x01, 0x2e,
+ 0x68, 0xfe, 0x28, 0x3f, 0xb2, 0x6a, 0xc2, 0xa4, 0x03, 0xf4, 0xbb, 0x95,
+ 0xd2, 0x5b, 0x48, 0x92, 0xf8, 0xf7, 0x78, 0xfc, 0x16, 0x46, 0x75, 0x9b,
+ 0x89, 0x61, 0x6c, 0x8f, 0x14, 0x94, 0xf3, 0x7d, 0x4f, 0x19, 0xa4, 0x12,
+ 0x20, 0x9e, 0x43, 0x82, 0xce, 0xa0, 0xea, 0x1a, 0x24, 0x11, 0xf9, 0xdc,
+ 0x2d, 0x1c, 0xba, 0x9f, 0x5b, 0x9c, 0x1b, 0x30, 0x78, 0x05, 0x66, 0xdc,
+ 0xd7, 0x02, 0x2e, 0x1e, 0xdf, 0x16, 0x8e, 0x3e, 0x29, 0x29, 0xb4, 0xea,
+ 0xed, 0x3f, 0x46, 0xcf, 0xbc, 0xff, 0x00, 0xbd, 0x0a, 0xcc, 0x77, 0x1d,
+ 0x6c, 0x25, 0xe7, 0xc1, 0xa2, 0x07, 0xde, 0x53, 0x57, 0x91, 0x63, 0x86,
+ 0x8e, 0x81, 0xe4, 0x88, 0x6c, 0x60, 0x12, 0xf3, 0x3e, 0x6e, 0x3f, 0x93,
+ 0xc5, 0x25, 0x35, 0xcd, 0x0e, 0x3e, 0x15, 0x56, 0x39, 0x8e, 0x7f, 0xda,
+ 0x55, 0x7b, 0xed, 0x6b, 0xbd, 0xac, 0x10, 0xd1, 0xa0, 0x1e, 0x00, 0x23,
+ 0x5d, 0x63, 0xed, 0x9d, 0x83, 0x6d, 0x63, 0xf3, 0x8e, 0x8a, 0x5d, 0x2b,
+ 0xa6, 0xd9, 0xd4, 0xfa, 0x85, 0x58, 0x55, 0xcf, 0xbc, 0xcb, 0xdf, 0xfb,
+ 0xac, 0x1f, 0x48, 0xa4, 0xa7, 0x47, 0xea, 0xb7, 0xd5, 0xab, 0x3a, 0xce,
+ 0x47, 0xa9, 0x68, 0x2d, 0xc4, 0xac, 0xc3, 0x88, 0xd0, 0xbc, 0xf8, 0x0f,
+ 0x87, 0x75, 0xe8, 0x2f, 0x75, 0x18, 0x0c, 0xaf, 0xa7, 0x74, 0xea, 0xd8,
+ 0xc7, 0xc4, 0x0d, 0xa3, 0x46, 0x37, 0xf7, 0x8a, 0x3d, 0x54, 0x51, 0xd2,
+ 0x7a, 0x73, 0x28, 0xc5, 0x68, 0x66, 0x81, 0x95, 0xb7, 0xbc, 0x7f, 0x79,
+ 0x43, 0x18, 0xf5, 0x62, 0xed, 0x73, 0xcf, 0xa9, 0x97, 0x7e, 0xa2, 0x7b,
+ 0x04, 0x94, 0xe7, 0xf5, 0x56, 0xd1, 0xd3, 0x7a, 0x6d, 0xce, 0x73, 0x8d,
+ 0xb6, 0x39, 0xa4, 0x92, 0xed, 0x4b, 0x9c, 0x7b, 0xc2, 0xe4, 0x31, 0x45,
+ 0xd7, 0xd1, 0x5d, 0xac, 0x05, 0xaf, 0x20, 0x41, 0xf1, 0x5d, 0xaf, 0x50,
+ 0xfb, 0x3e, 0x25, 0x56, 0x65, 0x65, 0x3b, 0x73, 0xb6, 0xf7, 0xe2, 0x17,
+ 0x17, 0x87, 0xd5, 0xab, 0xbb, 0x2a, 0xc0, 0xd0, 0x19, 0x58, 0x71, 0xf4,
+ 0xc0, 0xf0, 0x49, 0x4e, 0x8d, 0x3d, 0x2f, 0xa8, 0x3a, 0x0b, 0x9c, 0x63,
+ 0x9f, 0xa4, 0x55, 0xdd, 0xb7, 0x63, 0x00, 0xd7, 0x07, 0x3c, 0x9d, 0x1a,
+ 0x5a, 0x27, 0xef, 0x45, 0xc4, 0xcb, 0x0e, 0xac, 0x03, 0x10, 0x78, 0x33,
+ 0xf8, 0x2b, 0xa3, 0x2f, 0x18, 0x0d, 0xb2, 0x09, 0x49, 0x4e, 0x5b, 0xd9,
+ 0x90, 0xd7, 0x6f, 0x26, 0x09, 0xe1, 0xbe, 0x6a, 0x9d, 0xae, 0xb9, 0xe4,
+ 0x87, 0x11, 0xbb, 0xbc, 0x68, 0x16, 0x8e, 0x76, 0x65, 0x46, 0x60, 0x85,
+ 0x83, 0x6e, 0x61, 0x73, 0x9d, 0xe9, 0x82, 0xe2, 0x7e, 0xe4, 0x94, 0x9e,
+ 0xcb, 0x1b, 0x45, 0x44, 0xbc, 0xcb, 0xca, 0xa0, 0x43, 0xef, 0x78, 0x73,
+ 0xb4, 0x68, 0xec, 0x8a, 0xda, 0x2c, 0xb0, 0xef, 0xb7, 0x53, 0xf8, 0x23,
+ 0x36, 0xb8, 0x02, 0x44, 0x04, 0x94, 0xe5, 0x75, 0x0a, 0x7f, 0x40, 0x5c,
+ 0x47, 0xd1, 0x59, 0x6d, 0x63, 0x9d, 0xc2, 0xdf, 0xcd, 0x61, 0x7d, 0x6e,
+ 0x1d, 0xe0, 0xac, 0xbc, 0x2a, 0xb7, 0x5b, 0x63, 0x60, 0x7b, 0x61, 0xda,
+ 0xc7, 0xef, 0x0f, 0x14, 0x94, 0xd6, 0x6b, 0xc8, 0x05, 0x8e, 0xe3, 0xf2,
+ 0x29, 0x30, 0x36, 0x06, 0xe6, 0x9f, 0x92, 0xbd, 0x7f, 0x4f, 0x73, 0xc0,
+ 0x2d, 0x10, 0x48, 0xfc, 0x92, 0x3f, 0x82, 0xa4, 0x45, 0xcc, 0x77, 0xa7,
+ 0x60, 0xdb, 0x1e, 0x29, 0x29, 0xd0, 0xc3, 0xcd, 0x6e, 0x34, 0x7a, 0x43,
+ 0x69, 0x3c, 0x34, 0x72, 0x55, 0xdb, 0x31, 0x72, 0x2e, 0x22, 0xdc, 0xa6,
+ 0xfa, 0x15, 0x58, 0x24, 0x0f, 0xce, 0x31, 0xe5, 0xd9, 0x64, 0xe3, 0x5c,
+ 0x2a, 0x76, 0x8c, 0x05, 0xc7, 0x88, 0xfa, 0x52, 0xb7, 0x2a, 0xc4, 0xba,
+ 0xe6, 0x57, 0x7e, 0x75, 0xcd, 0x6d, 0x07, 0x8a, 0x9a, 0xe9, 0x74, 0x0e,
+ 0xc4, 0xf6, 0x49, 0x4e, 0x5f, 0x4f, 0xa6, 0xc7, 0xdc, 0xea, 0xab, 0x12,
+ 0xd6, 0x9d, 0x1e, 0x78, 0x85, 0xb2, 0xde, 0x96, 0xe7, 0x37, 0xdc, 0xe2,
+ 0x27, 0xb8, 0x08, 0xdd, 0x3a, 0xba, 0x4b, 0xec, 0x75, 0x4d, 0x0d, 0xa8,
+ 0xbe, 0x18, 0x00, 0xd2, 0x16, 0xb6, 0xd8, 0xe0, 0x42, 0x4a, 0x79, 0x0e,
+ 0xa7, 0x87, 0x93, 0x88, 0xed, 0xe0, 0x8b, 0x2a, 0xee, 0x47, 0x21, 0x2c,
+ 0x3b, 0x37, 0x34, 0x16, 0x95, 0xa3, 0xd7, 0x32, 0x2a, 0xad, 0xa5, 0xbc,
+ 0xb8, 0xf7, 0x58, 0x38, 0x97, 0x8a, 0xad, 0x20, 0xe8, 0xc7, 0xea, 0x3c,
+ 0x02, 0x4a, 0x77, 0xe9, 0x78, 0x24, 0x49, 0x93, 0xe6, 0xad, 0xfd, 0xa3,
+ 0x6b, 0x4e, 0xe3, 0xed, 0x1c, 0xc7, 0x80, 0x58, 0xce, 0xb9, 0xb1, 0x2d,
+ 0x77, 0xcd, 0x49, 0xb7, 0xd8, 0xf6, 0x8a, 0xc6, 0xa4, 0x91, 0xa7, 0x8f,
+ 0xc5, 0x25, 0x2f, 0x92, 0x7e, 0xd3, 0x7f, 0xab, 0x68, 0x26, 0xb1, 0xf4,
+ 0x19, 0xdb, 0xc7, 0x55, 0x26, 0xe8, 0xe0, 0xe1, 0xa4, 0x9e, 0x3b, 0x68,
+ 0xa4, 0xd6, 0x31, 0xac, 0x8d, 0x01, 0x32, 0x4b, 0x7c, 0x86, 0x92, 0x50,
+ 0xfd, 0x4f, 0x57, 0x27, 0xd3, 0x68, 0xd1, 0xa2, 0x5c, 0x52, 0x53, 0x3c,
+ 0xfe, 0xa1, 0x76, 0x3b, 0x19, 0x65, 0x6d, 0xdc, 0x06, 0x84, 0x2c, 0xdf,
+ 0xda, 0x57, 0xee, 0xf5, 0xf6, 0xf7, 0x9d, 0xbd, 0x96, 0xbb, 0xea, 0xae,
+ 0xca, 0x4b, 0x5d, 0x0e, 0x11, 0xc2, 0xcf, 0xfb, 0x3b, 0x63, 0xd2, 0xdb,
+ 0xdf, 0x8f, 0x24, 0x94, 0xf4, 0x55, 0x5f, 0xb8, 0x0d, 0xda, 0x3d, 0xb1,
+ 0xce, 0x9a, 0xff, 0x00, 0x2a, 0x78, 0x56, 0xdb, 0x7c, 0xeb, 0xc0, 0x8d,
+ 0x42, 0x36, 0x4e, 0x2d, 0x39, 0x22, 0x40, 0xf4, 0xad, 0x9d, 0x1c, 0x3f,
+ 0x3b, 0xe2, 0xb3, 0x6c, 0xf5, 0xb1, 0x1c, 0x3d, 0x66, 0x90, 0xd0, 0x63,
+ 0x77, 0x35, 0x99, 0x3d, 0xff, 0x00, 0x75, 0x25, 0x3a, 0xf4, 0xdc, 0xea,
+ 0x9a, 0x20, 0x01, 0x5f, 0x87, 0x80, 0x57, 0x2a, 0xc9, 0xad, 0xfc, 0x1e,
+ 0x7b, 0x1e, 0x56, 0x4d, 0x59, 0x6d, 0xb5, 0xa1, 0x91, 0xb4, 0xbb, 0xe8,
+ 0xfc, 0x3c, 0x8a, 0x2d, 0x98, 0xc5, 0x9b, 0x4e, 0xed, 0x7b, 0x00, 0x7b,
+ 0xf8, 0xca, 0x4a, 0x74, 0xec, 0x78, 0x7b, 0x7c, 0xd6, 0x46, 0x4b, 0x1b,
+ 0xbb, 0xc0, 0xa9, 0x3b, 0x36, 0xca, 0x88, 0x65, 0x9c, 0x9e, 0xfe, 0x2a,
+ 0xbd, 0xf6, 0x87, 0x02, 0x66, 0x3c, 0xd2, 0x53, 0x4f, 0x26, 0x86, 0xb8,
+ 0x92, 0x75, 0x01, 0x67, 0xe5, 0xe1, 0x54, 0x6b, 0x2e, 0x68, 0x82, 0x16,
+ 0x83, 0xfd, 0xfa, 0xcf, 0xb0, 0xaa, 0x99, 0x66, 0x19, 0x33, 0xcf, 0x29,
+ 0x29, 0xe7, 0x1c, 0x1e, 0xcb, 0x0b, 0x4e, 0x9e, 0x1e, 0x0a, 0x6d, 0x0c,
+ 0x07, 0x73, 0xfd, 0xc4, 0x70, 0x0f, 0x0a, 0xed, 0x18, 0x94, 0xd8, 0x2f,
+ 0xca, 0xca, 0x7e, 0xda, 0x6a, 0x1a, 0x78, 0x97, 0x1e, 0x10, 0x31, 0x71,
+ 0x6f, 0xea, 0x16, 0x1a, 0xb0, 0xaa, 0x91, 0xf9, 0xcf, 0x76, 0x8c, 0x68,
+ 0xfe, 0x51, 0x49, 0x4d, 0x5b, 0x5e, 0xeb, 0x3c, 0x87, 0x6f, 0xfc, 0xc4,
+ 0x2e, 0xd7, 0xea, 0x0d, 0x7d, 0x3a, 0x8a, 0xdf, 0x7b, 0xdc, 0x0e, 0x45,
+ 0x9a, 0x12, 0x79, 0x80, 0x78, 0x0a, 0x86, 0x37, 0x42, 0xc3, 0xc5, 0xf7,
+ 0x5e, 0x7d, 0x7b, 0x46, 0x9b, 0x9e, 0x21, 0x93, 0xe0, 0x1a, 0x89, 0x9f,
+ 0x4b, 0xf1, 0xc3, 0x72, 0xb1, 0x86, 0xc3, 0x58, 0x93, 0x1a, 0x02, 0xdf,
+ 0x08, 0x1e, 0x09, 0x29, 0xed, 0x6a, 0x3f, 0x6f, 0xc9, 0xf5, 0xa7, 0xf4,
+ 0x35, 0x98, 0x60, 0xed, 0x03, 0x92, 0xa9, 0x59, 0x93, 0x5d, 0xdd, 0x70,
+ 0xb3, 0x76, 0xef, 0x44, 0x00, 0x40, 0xe1, 0xb3, 0x2b, 0x07, 0xa1, 0xf5,
+ 0xeb, 0x2b, 0xb3, 0xd0, 0xb1, 0xde, 0xc3, 0xa8, 0xf9, 0xa2, 0x7d, 0xb7,
+ 0x1f, 0x0b, 0xa8, 0x5c, 0xf6, 0x9d, 0xcd, 0xc8, 0x20, 0xc9, 0xec, 0x42,
+ 0x4a, 0x45, 0xfe, 0x30, 0x5a, 0xe1, 0x8f, 0x59, 0x6c, 0xed, 0xde, 0x01,
+ 0x83, 0xa4, 0x47, 0x75, 0xc3, 0x52, 0xf7, 0xb1, 0xe1, 0xcc, 0xfa, 0x4b,
+ 0xd0, 0xfa, 0xe6, 0x35, 0xdd, 0x6f, 0xa6, 0x16, 0x52, 0xe8, 0x73, 0x4e,
+ 0xf6, 0x0e, 0xce, 0x2d, 0x1f, 0x45, 0x79, 0xfd, 0x2d, 0x2c, 0xb8, 0xb1,
+ 0xe3, 0x6b, 0x9a, 0x60, 0x83, 0xc8, 0x33, 0x09, 0x29, 0xbe, 0xce, 0xa5,
+ 0x95, 0x53, 0x0b, 0x88, 0xd0, 0x72, 0x02, 0x93, 0x7a, 0xd5, 0xd6, 0x18,
+ 0x03, 0x6f, 0xcd, 0x5a, 0x6f, 0x4f, 0x16, 0xd4, 0x74, 0xd1, 0xc2, 0x16,
+ 0x48, 0xc6, 0x7d, 0x19, 0x26, 0x8b, 0x34, 0x77, 0x69, 0xee, 0x3c, 0x52,
+ 0x53, 0xa6, 0xd7, 0x5b, 0x70, 0x97, 0xb8, 0x9f, 0x25, 0x76, 0x86, 0x31,
+ 0xac, 0x40, 0xc3, 0xc6, 0x79, 0x10, 0x5a, 0xb4, 0xa9, 0xc6, 0xd9, 0xf4,
+ 0xb4, 0x94, 0x94, 0xc1, 0xa2, 0x46, 0xa3, 0xe4, 0x91, 0x66, 0x86, 0x4a,
+ 0x33, 0xc0, 0x6f, 0x08, 0x65, 0xcd, 0xda, 0x65, 0x25, 0x34, 0x72, 0x18,
+ 0x0b, 0x49, 0x3c, 0x42, 0xa7, 0xd3, 0x28, 0x26, 0xcb, 0xdf, 0xd8, 0x9f,
+ 0x4e, 0x24, 0x09, 0xef, 0xdd, 0x59, 0xcc, 0xbc, 0x34, 0x18, 0xed, 0xc1,
+ 0x45, 0xe8, 0x95, 0xce, 0x13, 0xde, 0xe3, 0xf4, 0xee, 0xdd, 0x1a, 0x77,
+ 0x69, 0x13, 0xb4, 0xf3, 0xc2, 0x4a, 0x6c, 0xd3, 0x41, 0xb1, 0xc2, 0xb1,
+ 0x00, 0x00, 0x07, 0x70, 0x26, 0x27, 0xe8, 0xfc, 0xd0, 0xfa, 0x87, 0x46,
+ 0x65, 0xcd, 0x2f, 0x80, 0xe2, 0x06, 0x84, 0x48, 0xf9, 0x85, 0x7e, 0x86,
+ 0xb4, 0x59, 0xb5, 0xd2, 0x0c, 0xed, 0x91, 0x32, 0x00, 0xd1, 0x17, 0x20,
+ 0x91, 0x5e, 0x86, 0x46, 0x90, 0x79, 0x9f, 0xb9, 0x25, 0x3c, 0x5e, 0x46,
+ 0x0e, 0x5e, 0x23, 0xbd, 0xb2, 0x5a, 0x35, 0x95, 0x6f, 0xa4, 0xe3, 0xdd,
+ 0x9c, 0xfd, 0xd6, 0xb8, 0x8c, 0x76, 0xf2, 0xd0, 0x4f, 0xb8, 0xf8, 0x7c,
+ 0x16, 0xd5, 0xd5, 0x82, 0xc7, 0xba, 0xc1, 0x03, 0x50, 0x27, 0x59, 0x74,
+ 0x01, 0xb5, 0x2c, 0x2c, 0x6f, 0x4d, 0x8d, 0xa6, 0xa1, 0x04, 0xf3, 0x09,
+ 0x29, 0xd3, 0xc6, 0xa9, 0x8d, 0x68, 0x0d, 0x00, 0x47, 0x10, 0x8e, 0xf1,
+ 0xed, 0x3f, 0x95, 0x2c, 0x7a, 0x0d, 0x6d, 0x82, 0x49, 0x29, 0x5c, 0x40,
+ 0x61, 0xf1, 0x49, 0x4f, 0x19, 0xf5, 0x8c, 0x9f, 0x5d, 0xa2, 0x79, 0x95,
+ 0x9f, 0x8c, 0xf0, 0xf9, 0x61, 0x89, 0xe0, 0x03, 0xc1, 0x0a, 0xdf, 0xd6,
+ 0x07, 0xef, 0xcb, 0x11, 0xd8, 0x12, 0x56, 0x63, 0x18, 0xe7, 0xb8, 0x35,
+ 0x80, 0xb9, 0xc7, 0x80, 0x35, 0x29, 0x29, 0xd5, 0xc1, 0xac, 0x54, 0xc8,
+ 0x00, 0xbe, 0xe3, 0xe1, 0xa8, 0x60, 0x56, 0xeb, 0xa2, 0xc2, 0x01, 0x2d,
+ 0x20, 0x1e, 0xdc, 0x12, 0x51, 0x31, 0x19, 0x7d, 0x74, 0x06, 0xbc, 0x8a,
+ 0x68, 0x1e, 0xde, 0x60, 0x93, 0xdc, 0x23, 0x3f, 0x2a, 0xa6, 0x56, 0xea,
+ 0xcc, 0x43, 0x86, 0xad, 0x1c, 0xeb, 0xa7, 0x3e, 0x61, 0x25, 0x22, 0x6b,
+ 0x09, 0x78, 0x6b, 0x35, 0x27, 0x5d, 0x07, 0xcf, 0x94, 0xcd, 0xaf, 0x6c,
+ 0x8a, 0xc4, 0xb9, 0xfc, 0xbb, 0x99, 0x09, 0xaa, 0xdf, 0x53, 0xda, 0x1a,
+ 0x76, 0x63, 0xb8, 0x81, 0xe2, 0x75, 0xfe, 0x08, 0xf8, 0xe5, 0xb5, 0x90,
+ 0x47, 0xb8, 0x36, 0x40, 0x33, 0x3c, 0x1d, 0x52, 0x52, 0x6a, 0xba, 0x79,
+ 0x14, 0x12, 0xe7, 0x1d, 0xe5, 0x03, 0xec, 0x06, 0x22, 0x4f, 0xa9, 0xe3,
+ 0xe4, 0xb5, 0xe8, 0xb1, 0xaf, 0x6e, 0xe4, 0xb7, 0xb3, 0x7c, 0xc6, 0xbc,
+ 0x24, 0xa7, 0x51, 0xec, 0x88, 0x2f, 0xe4, 0xf0, 0x54, 0x5d, 0xe9, 0xb9,
+ 0x85, 0xb6, 0x44, 0x47, 0x75, 0x66, 0x39, 0xf0, 0xf1, 0x3c, 0x20, 0x39,
+ 0xbe, 0xed, 0xdd, 0x8f, 0x6f, 0x12, 0x92, 0x9c, 0xe7, 0xf4, 0xd0, 0xc3,
+ 0xea, 0x63, 0xbb, 0x67, 0x7f, 0x48, 0xea, 0xcf, 0x97, 0x71, 0xf2, 0x50,
+ 0x6e, 0x53, 0xe8, 0x7e, 0xcc, 0x80, 0x6a, 0x79, 0x3e, 0xd1, 0x66, 0xad,
+ 0x3f, 0xd5, 0x7f, 0x1f, 0x7a, 0xd1, 0x77, 0xb0, 0x6e, 0x02, 0x09, 0xe5,
+ 0x41, 0xe0, 0x5a, 0x3d, 0x3b, 0x00, 0x73, 0x5d, 0xf4, 0x9a, 0xe1, 0xb8,
+ 0x24, 0xa6, 0xa5, 0xae, 0x75, 0x83, 0x6b, 0x84, 0x03, 0xdd, 0x66, 0x65,
+ 0x59, 0x66, 0x34, 0x4e, 0xac, 0xef, 0xdf, 0x45, 0x7b, 0x27, 0x13, 0x23,
+ 0x19, 0xff, 0x00, 0xa9, 0x9d, 0xf5, 0x7f, 0xdc, 0x67, 0x99, 0x1f, 0xf5,
+ 0xb7, 0x1e, 0x3e, 0x0a, 0xbf, 0xe8, 0xb2, 0x69, 0x7e, 0xc6, 0x90, 0xe1,
+ 0xa5, 0x8c, 0x76, 0x8e, 0x69, 0xf0, 0x20, 0xa4, 0xa6, 0xb8, 0xc9, 0x63,
+ 0x9b, 0xa1, 0xd1, 0x52, 0xc8, 0xb7, 0xd4, 0x3b, 0x46, 0x9e, 0x2a, 0x9e,
+ 0x47, 0xab, 0x85, 0x63, 0x98, 0x4e, 0xea, 0x89, 0xf6, 0x9f, 0x0f, 0x22,
+ 0xb4, 0xba, 0x2e, 0x1f, 0xda, 0x83, 0xb3, 0x2d, 0xd3, 0x1a, 0xa3, 0xaf,
+ 0xf2, 0x9c, 0x3b, 0x24, 0xa6, 0xce, 0x27, 0x4d, 0x19, 0x58, 0xe5, 0xaf,
+ 0x6e, 0xca, 0x1d, 0x12, 0x7b, 0xb8, 0x0f, 0x05, 0xa4, 0xca, 0xe9, 0xc4,
+ 0xa9, 0xb5, 0xd0, 0xc1, 0x5d, 0x6d, 0x10, 0x00, 0xe3, 0xef, 0x44, 0xda,
+ 0x44, 0x6d, 0xe4, 0xc7, 0x3c, 0x04, 0x26, 0xb5, 0xd6, 0xb5, 0xcf, 0x77,
+ 0xb5, 0xac, 0x3a, 0x37, 0xc2, 0x12, 0x52, 0x23, 0x51, 0xbd, 0xe1, 0xc5,
+ 0xda, 0xd7, 0xaf, 0x9e, 0x9e, 0x29, 0xf2, 0x76, 0xfa, 0x64, 0xb8, 0x92,
+ 0x08, 0x33, 0xe0, 0x47, 0xc1, 0x4c, 0x0a, 0x8e, 0xba, 0x87, 0x11, 0x3c,
+ 0xf0, 0x0f, 0x82, 0x05, 0xf7, 0x17, 0x53, 0x63, 0x60, 0x16, 0x92, 0x20,
+ 0xf0, 0x4f, 0x92, 0x4a, 0x71, 0x2d, 0xa9, 0xd5, 0x3f, 0x73, 0x34, 0x2d,
+ 0xd5, 0xbe, 0x63, 0xc1, 0x5b, 0x6d, 0x3f, 0x6c, 0xab, 0xd4, 0x61, 0x3e,
+ 0xa3, 0x35, 0x6f, 0x81, 0x4b, 0x25, 0xa5, 0x94, 0x35, 0xc7, 0x86, 0xb8,
+ 0x6e, 0xf2, 0x04, 0x42, 0x58, 0x76, 0x8c, 0x6b, 0x04, 0x1f, 0x65, 0x9a,
+ 0xb4, 0xf9, 0xf8, 0x24, 0xa7, 0x6b, 0xa1, 0x67, 0x3c, 0xb3, 0xd3, 0x77,
+ 0xe6, 0xe8, 0x47, 0x81, 0x51, 0xeb, 0x1f, 0x56, 0x70, 0xb2, 0xac, 0xfb,
+ 0x6d, 0x12, 0xcc, 0x87, 0x3b, 0x73, 0xc3, 0x78, 0x77, 0xc5, 0x50, 0x65,
+ 0xbe, 0x86, 0x68, 0xb6, 0xb7, 0x6c, 0x16, 0xeb, 0xe5, 0x2b, 0xa1, 0xa3,
+ 0x29, 0xc6, 0xbd, 0xee, 0x82, 0x63, 0x50, 0x92, 0x9c, 0x8c, 0x5e, 0x9e,
+ 0xfd, 0x9b, 0x37, 0x1f, 0x30, 0xaa, 0x75, 0x8f, 0xab, 0xf6, 0xda, 0xc1,
+ 0x6d, 0x53, 0xeb, 0x33, 0x56, 0x9f, 0x1f, 0x22, 0xba, 0x36, 0xfd, 0x9e,
+ 0xc0, 0x5d, 0x4b, 0xbd, 0xf3, 0xee, 0x08, 0xe1, 0xec, 0x7b, 0x36, 0x9f,
+ 0x6b, 0xbc, 0x0f, 0x7f, 0x82, 0x4a, 0x7c, 0xff, 0x00, 0x17, 0x2a, 0xea,
+ 0xce, 0xc7, 0x02, 0x1c, 0xdd, 0x08, 0xf3, 0x0b, 0x4e, 0xab, 0xdc, 0xfd,
+ 0x4c, 0xab, 0x3f, 0x58, 0x7a, 0x5f, 0xa5, 0xfa, 0xed, 0x22, 0x08, 0xfe,
+ 0x74, 0x78, 0x8f, 0x15, 0x93, 0x56, 0x43, 0xf6, 0x8d, 0x44, 0x24, 0xa6,
+ 0xf5, 0x96, 0x13, 0x3a, 0xaa, 0xf7, 0x64, 0x86, 0xb4, 0x99, 0xd1, 0x47,
+ 0xd4, 0x6b, 0xa4, 0x93, 0x31, 0xe2, 0xa9, 0x5c, 0x1f, 0x91, 0x6e, 0xc6,
+ 0xe8, 0xd1, 0xca, 0x4a, 0x63, 0x6b, 0x9d, 0x63, 0x1c, 0xf3, 0xc4, 0x68,
+ 0x17, 0x45, 0xd3, 0xb1, 0xdc, 0xde, 0x99, 0x43, 0x4f, 0xe7, 0xd4, 0xd7,
+ 0x16, 0xee, 0x6f, 0x3b, 0xc8, 0xfa, 0x3f, 0xda, 0x58, 0x16, 0xd6, 0xe0,
+ 0xd1, 0x53, 0x47, 0x80, 0x5d, 0x8d, 0x54, 0x16, 0xe3, 0x36, 0x96, 0xba,
+ 0x36, 0x92, 0xd0, 0x3d, 0xad, 0x1b, 0x6d, 0x60, 0x7b, 0x7d, 0xa5, 0x25,
+ 0x34, 0xeb, 0x74, 0x16, 0xb8, 0xc4, 0x49, 0xdc, 0xdd, 0x47, 0x79, 0xd0,
+ 0x1f, 0x27, 0x29, 0xde, 0xf0, 0x63, 0xb0, 0x71, 0xf9, 0x69, 0xfe, 0xf5,
+ 0x1c, 0xa1, 0xb0, 0x40, 0x24, 0x00, 0x64, 0x34, 0x69, 0x33, 0xde, 0x35,
+ 0x1c, 0x47, 0x09, 0xde, 0xf9, 0x73, 0x5a, 0x27, 0x6b, 0x75, 0x33, 0xf0,
+ 0x94, 0x94, 0xd0, 0x78, 0x2f, 0xbf, 0x60, 0xf1, 0x26, 0x3f, 0x05, 0xb3,
+ 0x87, 0x8e, 0xd6, 0xb6, 0x4f, 0x25, 0x66, 0x61, 0x8d, 0xf6, 0x9b, 0x4f,
+ 0x0e, 0x24, 0x82, 0x7c, 0xd5, 0xdb, 0xba, 0x9d, 0x74, 0x1f, 0x4e, 0xb6,
+ 0xfa, 0x96, 0x78, 0x8f, 0xa2, 0x12, 0x53, 0x76, 0xc9, 0x6f, 0x1c, 0x2a,
+ 0x59, 0x56, 0xed, 0x63, 0x8c, 0xfc, 0x95, 0x1b, 0xf3, 0xb2, 0xed, 0xd5,
+ 0xce, 0xd8, 0x7f, 0x75, 0xa7, 0x41, 0xf7, 0x05, 0x99, 0x7e, 0x46, 0x73,
+ 0xe4, 0x34, 0x92, 0x1b, 0xf4, 0xc3, 0x8c, 0x8f, 0xbf, 0xb2, 0x4a, 0x69,
+ 0xbd, 0x83, 0x27, 0x3a, 0xc7, 0x3b, 0xe8, 0x03, 0x05, 0xdd, 0x82, 0xd5,
+ 0xab, 0x02, 0x9a, 0x18, 0xd6, 0x56, 0xdf, 0x4e, 0x7e, 0x93, 0xdb, 0xc9,
+ 0x3f, 0x12, 0xab, 0xe3, 0x61, 0xda, 0xee, 0x0e, 0xc6, 0xeb, 0xcf, 0xe7,
+ 0xb8, 0xf7, 0x85, 0x7f, 0x19, 0xe5, 0x9b, 0xaa, 0x78, 0xf7, 0x6b, 0x3f,
+ 0x2d, 0x4a, 0x4a, 0x6a, 0x9e, 0x95, 0xac, 0xef, 0x26, 0x7d, 0xdb, 0x26,
+ 0x43, 0x94, 0x32, 0x31, 0x6a, 0xab, 0x73, 0x9a, 0xdd, 0xac, 0x68, 0x87,
+ 0xc9, 0x9d, 0xaa, 0xfb, 0xee, 0xa8, 0x80, 0xf6, 0x41, 0x03, 0x4a, 0x8b,
+ 0x4c, 0x89, 0x3f, 0x05, 0x5f, 0x3e, 0xca, 0x72, 0x29, 0x22, 0x34, 0xb1,
+ 0xbb, 0x6c, 0x23, 0x99, 0x49, 0x4d, 0x7a, 0xad, 0xac, 0xe2, 0x92, 0xdf,
+ 0x75, 0x62, 0x60, 0x8e, 0x24, 0x21, 0x63, 0xcb, 0x6b, 0x27, 0xc6, 0x0c,
+ 0x79, 0x94, 0xef, 0x61, 0xab, 0x0b, 0xd3, 0x26, 0x1a, 0xc6, 0x80, 0xd1,
+ 0xc4, 0xca, 0x8d, 0x6d, 0x6b, 0x1a, 0xd6, 0x33, 0x8d, 0x12, 0x53, 0x75,
+ 0x97, 0xdc, 0xc6, 0x00, 0x41, 0x08, 0xde, 0xb9, 0xf4, 0xf7, 0x4e, 0xbe,
+ 0x08, 0xce, 0xaf, 0x75, 0x0c, 0x9d, 0x0c, 0x77, 0x41, 0xf4, 0xf5, 0xdb,
+ 0x1f, 0x34, 0x94, 0xf5, 0x4f, 0x80, 0x4b, 0x62, 0x74, 0xd4, 0xa1, 0x10,
+ 0x40, 0x04, 0x89, 0x8e, 0x3f, 0xbd, 0x15, 0xe7, 0x80, 0x38, 0x8e, 0x7f,
+ 0x2a, 0x16, 0xe3, 0xa1, 0xfc, 0xdf, 0x14, 0x94, 0xc2, 0xc2, 0x24, 0x41,
+ 0x81, 0xc3, 0x8a, 0x1c, 0x8d, 0xba, 0x0e, 0x0c, 0xcf, 0x74, 0xf6, 0x49,
+ 0x98, 0xe3, 0x45, 0x16, 0x1d, 0xc3, 0x4d, 0x23, 0xf8, 0x24, 0xa5, 0xac,
+ 0x00, 0x89, 0xfd, 0xdd, 0x61, 0x51, 0xcd, 0xc5, 0x36, 0xbb, 0xd7, 0xa2,
+ 0x1b, 0x90, 0xc1, 0xf0, 0x0f, 0x68, 0xfc, 0xd7, 0xff, 0x00, 0x7a, 0xbe,
+ 0xf8, 0x89, 0x3a, 0x1e, 0x34, 0xec, 0x86, 0xd6, 0x0d, 0x63, 0x96, 0xfd,
+ 0xc9, 0x29, 0xe6, 0x7a, 0xad, 0x2c, 0xbe, 0x87, 0x39, 0x8c, 0xfd, 0x30,
+ 0xd1, 0xf5, 0xf0, 0x65, 0x74, 0x38, 0x78, 0x94, 0x63, 0x60, 0x53, 0x88,
+ 0x0c, 0x6c, 0x6b, 0x77, 0x11, 0xf9, 0xce, 0x06, 0x4f, 0xde, 0x4a, 0xa7,
+ 0xd4, 0x31, 0xda, 0xdb, 0x68, 0xbe, 0xc7, 0x6c, 0x1e, 0xa3, 0x43, 0x8f,
+ 0xef, 0x36, 0x75, 0x6a, 0xba, 0xcf, 0x4d, 0x96, 0x7a, 0x4f, 0x11, 0xb8,
+ 0x4d, 0x67, 0x90, 0x4a, 0x4a, 0x66, 0xe6, 0xba, 0xca, 0xdc, 0x08, 0x32,
+ 0xd2, 0x24, 0x9e, 0x10, 0x36, 0x80, 0x65, 0xb2, 0xe0, 0x34, 0x73, 0x4e,
+ 0x80, 0x85, 0x68, 0xc4, 0x6d, 0x73, 0xbd, 0xc7, 0x58, 0xed, 0x1c, 0xa8,
+ 0xbd, 0xad, 0x73, 0x77, 0x00, 0x4c, 0x01, 0xc4, 0xb7, 0x92, 0x92, 0x9a,
+ 0xb6, 0x41, 0x0e, 0x73, 0xc7, 0xb7, 0xb4, 0x76, 0x8e, 0x38, 0x54, 0xaf,
+ 0x69, 0xac, 0x49, 0x9d, 0xae, 0x31, 0x04, 0x0e, 0x4a, 0xd0, 0xb5, 0xb6,
+ 0x6c, 0x22, 0x36, 0x03, 0xae, 0x86, 0x20, 0x8f, 0x25, 0x56, 0xd3, 0x0d,
+ 0x2d, 0x78, 0xd4, 0x6a, 0x3c, 0x87, 0x88, 0x49, 0x4d, 0x53, 0xe9, 0xfa,
+ 0x7b, 0x1c, 0xdf, 0x69, 0x6c, 0x38, 0xf8, 0xf9, 0x2c, 0xac, 0xba, 0xee,
+ 0xc7, 0x67, 0xe8, 0xc9, 0x75, 0x33, 0x20, 0x72, 0x59, 0xf3, 0x5a, 0x8e,
+ 0x73, 0x84, 0x17, 0x70, 0x4c, 0x17, 0x1f, 0x05, 0x1b, 0xeb, 0x71, 0xdc,
+ 0xd7, 0x37, 0x68, 0x6b, 0x7b, 0x70, 0x7c, 0x12, 0x53, 0x8e, 0xdc, 0xeb,
+ 0x2c, 0x6e, 0xc7, 0x99, 0x03, 0x83, 0xdc, 0x2b, 0xdd, 0x3f, 0xac, 0x5f,
+ 0x59, 0xf4, 0x1e, 0xf9, 0x1d, 0x9c, 0xb1, 0xc5, 0x4e, 0x6d, 0xb6, 0x55,
+ 0x30, 0xf6, 0x1d, 0x3c, 0x08, 0x53, 0x6b, 0x1c, 0xe3, 0xa6, 0x8e, 0xe6,
+ 0x12, 0x53, 0xd9, 0x60, 0x67, 0x31, 0xb6, 0x43, 0x80, 0xdc, 0x7f, 0x3b,
+ 0xc4, 0x2d, 0x67, 0x6c, 0xb5, 0x92, 0xd3, 0xce, 0xb0, 0xb8, 0x9c, 0x2c,
+ 0xa7, 0x9f, 0xd1, 0xd9, 0xed, 0xb1, 0xbc, 0x13, 0xdd, 0x6c, 0xe2, 0x67,
+ 0xd8, 0x00, 0x6b, 0x9d, 0x09, 0x29, 0xbf, 0x98, 0x1e, 0xfa, 0x1c, 0xc8,
+ 0xde, 0xd8, 0x20, 0x8e, 0xf0, 0x57, 0x03, 0x6b, 0xed, 0xc7, 0xb9, 0xf5,
+ 0x6b, 0xec, 0x71, 0x1f, 0x72, 0xf4, 0x3a, 0xaf, 0x63, 0xdb, 0x00, 0x6e,
+ 0x27, 0x91, 0xe6, 0xb9, 0xff, 0x00, 0xac, 0x98, 0x35, 0x33, 0xf5, 0x8a,
+ 0xc6, 0xa4, 0xc3, 0xc7, 0xe4, 0x49, 0x4e, 0x66, 0x14, 0xd9, 0x56, 0xf3,
+ 0xac, 0xfe, 0x55, 0xa5, 0x85, 0x85, 0x24, 0xb8, 0xf2, 0x7b, 0xa0, 0xe0,
+ 0x63, 0x34, 0x52, 0x1b, 0x3e, 0x64, 0x2d, 0xac, 0x7d, 0x95, 0xd7, 0xae,
+ 0x91, 0xc2, 0x4a, 0x69, 0x7d, 0x91, 0x8d, 0xbe, 0xb9, 0x83, 0xee, 0x6c,
+ 0xf6, 0xef, 0xc2, 0xd3, 0x3d, 0x43, 0x07, 0x05, 0xa5, 0x97, 0xde, 0xda,
+ 0x88, 0x0d, 0xf6, 0xc8, 0x12, 0xea, 0x9f, 0xb7, 0xf3, 0xa5, 0xc7, 0x45,
+ 0x8f, 0xd4, 0xb2, 0x2c, 0xff, 0x00, 0x00, 0x7d, 0x32, 0x24, 0xef, 0x8e,
+ 0x0f, 0x8f, 0xcb, 0xb2, 0xe6, 0x6f, 0xa2, 0xf7, 0x66, 0xb9, 0x96, 0x92,
+ 0xeb, 0x1e, 0x77, 0x12, 0xe3, 0xb8, 0x99, 0x1b, 0xa4, 0x94, 0x94, 0xf6,
+ 0x99, 0x19, 0xd8, 0x17, 0x32, 0xc3, 0x8d, 0x73, 0x5e, 0x00, 0x70, 0x86,
+ 0x90, 0x34, 0x69, 0x25, 0xbc, 0x68, 0x74, 0x08, 0x02, 0xd7, 0x16, 0xcf,
+ 0x2d, 0x0c, 0x24, 0x77, 0xd4, 0xe8, 0xb0, 0x30, 0xb0, 0x1d, 0x5d, 0x81,
+ 0xce, 0x12, 0x26, 0x16, 0xce, 0xe6, 0x31, 0xbb, 0xb8, 0x10, 0x23, 0xe1,
+ 0xc9, 0xf2, 0x49, 0x49, 0x0d, 0x82, 0xa6, 0x0a, 0xc1, 0xda, 0xe7, 0x08,
+ 0x2e, 0xf0, 0x4c, 0x1c, 0xc8, 0x75, 0x6e, 0xd4, 0xe9, 0x31, 0xd8, 0x21,
+ 0x34, 0x8b, 0x03, 0x9c, 0x4e, 0xe7, 0x73, 0xfd, 0xae, 0xc1, 0x30, 0x8b,
+ 0x6a, 0x87, 0x9d, 0x8e, 0x13, 0xbe, 0x0f, 0x22, 0x63, 0x94, 0x94, 0x9a,
+ 0xf1, 0x4d, 0x55, 0xba, 0xd7, 0x6e, 0x34, 0xb7, 0x40, 0x4f, 0x30, 0x39,
+ 0x85, 0x57, 0x1a, 0xab, 0x7a, 0x8c, 0xdb, 0x1e, 0x9e, 0x13, 0x75, 0x6b,
+ 0x66, 0x3d, 0x42, 0xdf, 0xe0, 0x15, 0x8b, 0xda, 0xcc, 0x8a, 0xcd, 0x3b,
+ 0xa2, 0xab, 0x5b, 0xb6, 0x4f, 0x8f, 0xc1, 0x2a, 0x1e, 0x31, 0x9a, 0x0e,
+ 0xd9, 0xad, 0xbf, 0xa3, 0x23, 0xb3, 0x4f, 0x10, 0x92, 0x9b, 0x2f, 0x66,
+ 0x8e, 0x68, 0x1a, 0x88, 0xda, 0xd2, 0x78, 0xf1, 0x12, 0xa8, 0x65, 0x57,
+ 0x65, 0xc1, 0xcd, 0x92, 0x01, 0x10, 0x08, 0xd0, 0xc1, 0xf6, 0x93, 0xf2,
+ 0x5a, 0x5b, 0x18, 0xf8, 0x71, 0x91, 0x5b, 0x84, 0x86, 0x8e, 0x67, 0xb3,
+ 0x4a, 0xaf, 0x6b, 0x1a, 0xf2, 0xd7, 0xb5, 0x84, 0x06, 0xcc, 0x98, 0x06,
+ 0x0f, 0x3c, 0x24, 0xa4, 0x14, 0x31, 0xb4, 0xd5, 0x5d, 0x75, 0x0d, 0xac,
+ 0xa4, 0x7b, 0x5d, 0xe2, 0xe9, 0x93, 0x3e, 0x68, 0x4f, 0x68, 0x89, 0xd0,
+ 0xb6, 0xcd, 0x41, 0x13, 0x20, 0x9d, 0x75, 0x85, 0x64, 0xb4, 0x18, 0xad,
+ 0xa4, 0xcf, 0x2e, 0x24, 0x47, 0x3a, 0xa8, 0x3b, 0x19, 0xae, 0x01, 0xae,
+ 0x3a, 0x13, 0x23, 0x88, 0x27, 0x83, 0x29, 0x29, 0xa5, 0x0e, 0xca, 0x68,
+ 0x64, 0x98, 0x03, 0x68, 0x3f, 0x0f, 0x8a, 0x83, 0x9e, 0xea, 0x0b, 0x60,
+ 0x4e, 0xd2, 0xb4, 0x76, 0x55, 0x88, 0x4d, 0x8d, 0xed, 0xa0, 0x6f, 0x1f,
+ 0x39, 0x54, 0xda, 0xe6, 0xd9, 0x63, 0xa4, 0x6e, 0x13, 0x20, 0x24, 0xa7,
+ 0x5f, 0x1f, 0x22, 0xac, 0xda, 0x00, 0x3a, 0x3c, 0x78, 0x27, 0xf4, 0xfd,
+ 0xd1, 0x3a, 0x71, 0x2a, 0xad, 0x19, 0x0d, 0x60, 0xfd, 0x1b, 0x76, 0x1e,
+ 0xe8, 0xf1, 0x67, 0xa5, 0xea, 0x6e, 0xf6, 0xce, 0xe4, 0x94, 0xf4, 0x96,
+ 0x16, 0xfe, 0x69, 0xd0, 0x70, 0x84, 0xf8, 0xdc, 0x0f, 0xdc, 0x3c, 0x7c,
+ 0x54, 0xdc, 0xd2, 0xe1, 0xa7, 0x3d, 0xe7, 0xbe, 0x8a, 0x3b, 0x5c, 0x06,
+ 0xe7, 0x09, 0x2e, 0xe0, 0x79, 0x24, 0xa4, 0x24, 0x6f, 0x25, 0xa3, 0x53,
+ 0xdc, 0xf7, 0x51, 0x2c, 0x2d, 0x90, 0x35, 0xf1, 0x52, 0x0d, 0x70, 0x7b,
+ 0xbd, 0xd0, 0x7b, 0x79, 0xa6, 0x16, 0x03, 0x23, 0x80, 0x07, 0xcb, 0xe6,
+ 0x92, 0x96, 0x70, 0x6b, 0xec, 0xda, 0x62, 0x3b, 0x37, 0x5d, 0x54, 0x40,
+ 0x01, 0xe4, 0x0d, 0x03, 0xb8, 0x9f, 0x2d, 0x13, 0x87, 0x4b, 0xc3, 0xb9,
+ 0x06, 0x40, 0x6f, 0xfa, 0xf8, 0xa7, 0xf4, 0x9c, 0x5c, 0x6c, 0x71, 0x80,
+ 0x3c, 0x3b, 0x04, 0x94, 0xd3, 0xea, 0xf5, 0x1b, 0xfa, 0x7d, 0xad, 0x68,
+ 0x97, 0x56, 0x0b, 0xdb, 0xf1, 0x6e, 0xa8, 0x96, 0x62, 0x9b, 0x69, 0xad,
+ 0xf5, 0x7f, 0x32, 0x5a, 0x0e, 0xd2, 0x35, 0x1b, 0xa3, 0xe8, 0x9e, 0xc8,
+ 0xd6, 0x7a, 0x34, 0x56, 0xfc, 0x8b, 0x35, 0x63, 0x01, 0x73, 0x8c, 0xce,
+ 0x91, 0xaa, 0xad, 0xd2, 0xb2, 0x06, 0x4f, 0x4f, 0xa6, 0xea, 0xc9, 0xda,
+ 0x46, 0xdd, 0xbe, 0x40, 0x96, 0x80, 0x7e, 0xe4, 0x94, 0xb6, 0x3e, 0x4b,
+ 0x98, 0xe3, 0x46, 0x48, 0x76, 0xf2, 0x62, 0xbb, 0x0e, 0x9b, 0xff, 0x00,
+ 0xda, 0x3f, 0x14, 0x53, 0x6c, 0x87, 0x34, 0xc8, 0xed, 0xf2, 0xf8, 0x04,
+ 0x5b, 0xa9, 0x6d, 0xcc, 0x73, 0x2c, 0x68, 0x74, 0xc0, 0xdb, 0xfb, 0xb1,
+ 0xf8, 0xaa, 0x6d, 0xb1, 0xf8, 0xae, 0x6d, 0x79, 0x3a, 0xd6, 0x4f, 0xe8,
+ 0xed, 0x8f, 0xfa, 0x2e, 0xf3, 0x49, 0x49, 0xde, 0x06, 0xc9, 0x3a, 0x81,
+ 0xe1, 0xc6, 0x8b, 0x3f, 0x3a, 0xb2, 0xcd, 0x43, 0xa1, 0xc6, 0x63, 0x5e,
+ 0x76, 0x8d, 0x55, 0x9c, 0xbb, 0xae, 0xaa, 0x5e, 0xc1, 0x34, 0x69, 0x31,
+ 0xaf, 0xfb, 0xfc, 0x55, 0x6f, 0x52, 0xac, 0x90, 0x7d, 0x32, 0x1e, 0x1d,
+ 0xdf, 0xc4, 0xa4, 0xa6, 0x8b, 0xd8, 0xfb, 0x07, 0xd2, 0xf6, 0x38, 0x71,
+ 0x3d, 0xf9, 0xec, 0x89, 0x73, 0x41, 0x02, 0x09, 0x24, 0x88, 0x0e, 0x24,
+ 0x98, 0x08, 0xf4, 0x6d, 0x77, 0xa9, 0x8e, 0x5b, 0xb7, 0xd3, 0xf7, 0x30,
+ 0x69, 0x31, 0xcc, 0x6b, 0xe6, 0x87, 0x77, 0xb6, 0xb6, 0x3b, 0x68, 0x69,
+ 0x13, 0xba, 0x7e, 0x29, 0x29, 0xc3, 0xea, 0x35, 0xfa, 0x19, 0x55, 0xdc,
+ 0xdd, 0x5a, 0xef, 0x69, 0xfe, 0x0a, 0x36, 0x1d, 0x4d, 0x8c, 0xd2, 0x21,
+ 0xc3, 0xf8, 0xab, 0xfd, 0x52, 0xa7, 0xdd, 0x8d, 0xb3, 0x49, 0x60, 0xdc,
+ 0x08, 0xef, 0x0b, 0x3e, 0x87, 0x36, 0xca, 0x1b, 0xbf, 0x59, 0x96, 0x9d,
+ 0x63, 0x94, 0x94, 0xdc, 0xad, 0x87, 0x21, 0xa1, 0xf5, 0x40, 0x7b, 0x79,
+ 0x9d, 0x20, 0xad, 0x8e, 0x9d, 0x4b, 0x72, 0x46, 0xdb, 0x63, 0xd4, 0x1a,
+ 0x10, 0x0f, 0xf7, 0x2c, 0x3c, 0x0a, 0xdd, 0xea, 0x32, 0x08, 0x0e, 0xe2,
+ 0x0b, 0x41, 0x3a, 0x78, 0x4a, 0xec, 0x3a, 0x7f, 0x4c, 0xb1, 0xc5, 0xb6,
+ 0x49, 0x33, 0xc9, 0x80, 0x92, 0x9b, 0x58, 0xbd, 0x31, 0xb4, 0x0d, 0xd3,
+ 0x26, 0x34, 0xee, 0xb2, 0x7a, 0xfd, 0x3f, 0xa2, 0x21, 0xc2, 0x37, 0x11,
+ 0x1d, 0xfb, 0xae, 0xac, 0xd0, 0x2a, 0x60, 0x07, 0x52, 0x3c, 0x57, 0x29,
+ 0xf5, 0x9e, 0xc6, 0xef, 0xad, 0xa0, 0x40, 0x06, 0x74, 0x49, 0x4e, 0x45,
+ 0x61, 0xcc, 0x70, 0xf0, 0x5a, 0x2c, 0x7b, 0x4d, 0x5a, 0xf2, 0xb2, 0xc5,
+ 0xb1, 0xe6, 0x9c, 0xe4, 0xbf, 0x81, 0x26, 0x7f, 0x35, 0xbd, 0xfc, 0x12,
+ 0x52, 0xfd, 0x52, 0xbf, 0xd5, 0x1d, 0x7b, 0xda, 0x64, 0xb9, 0xad, 0xaa,
+ 0x0c, 0x6a, 0x4f, 0x23, 0xc7, 0x85, 0x3c, 0x9c, 0x56, 0xbb, 0xaf, 0x35,
+ 0xe4, 0x1f, 0x7d, 0x0e, 0x76, 0xd3, 0xcb, 0x4b, 0x4e, 0xd1, 0xff, 0x00,
+ 0x44, 0x84, 0xaf, 0x17, 0xe4, 0xb7, 0xed, 0x16, 0xb7, 0x63, 0x29, 0x69,
+ 0x75, 0x74, 0x01, 0x25, 0xad, 0x69, 0x13, 0xee, 0x77, 0x24, 0x15, 0xab,
+ 0x7b, 0x03, 0xf3, 0x1b, 0x91, 0x2d, 0x25, 0xcc, 0xb5, 0x9b, 0xfe, 0x8c,
+ 0xed, 0xf4, 0xa2, 0x47, 0xe6, 0xa4, 0xa6, 0xa3, 0x71, 0xcb, 0x5c, 0x48,
+ 0x9e, 0x26, 0x23, 0xe0, 0xab, 0x64, 0xbe, 0x5d, 0xee, 0x11, 0xb8, 0xea,
+ 0x07, 0x80, 0xed, 0xf7, 0xab, 0xed, 0x2c, 0x36, 0x35, 0xf1, 0x06, 0x3b,
+ 0xf8, 0x7c, 0x56, 0x7b, 0xce, 0xfb, 0x37, 0x02, 0x5c, 0x43, 0x4c, 0x1f,
+ 0x89, 0x29, 0x29, 0x67, 0x45, 0x8c, 0x0c, 0x68, 0x87, 0x1d, 0x41, 0x95,
+ 0x1c, 0x56, 0x9f, 0x7b, 0x5e, 0x60, 0x9e, 0xe0, 0x78, 0xe8, 0x9e, 0xda,
+ 0xe7, 0x64, 0x38, 0x30, 0xf2, 0x40, 0xec, 0x78, 0x51, 0x75, 0x5b, 0x1b,
+ 0xbc, 0x38, 0x91, 0xd8, 0x7c, 0x39, 0x49, 0x49, 0x3d, 0x56, 0xb6, 0xb1,
+ 0xfc, 0x91, 0xb4, 0x9d, 0x35, 0x33, 0x20, 0x2b, 0x14, 0xbe, 0xab, 0x83,
+ 0xde, 0xee, 0x1d, 0xc8, 0xf0, 0x59, 0xf6, 0x0a, 0x9e, 0xd7, 0x36, 0x48,
+ 0xd7, 0x76, 0xe1, 0xe2, 0x39, 0x40, 0xae, 0x9b, 0x5a, 0xe1, 0xe8, 0xdd,
+ 0xb0, 0xbb, 0x52, 0xd3, 0xe2, 0x92, 0x9d, 0xc6, 0x16, 0xd4, 0x7d, 0x17,
+ 0xbf, 0xd8, 0x64, 0x82, 0x0c, 0x10, 0x39, 0x95, 0x17, 0x64, 0x06, 0xb8,
+ 0x6d, 0xb0, 0x06, 0x40, 0x92, 0x78, 0x30, 0xb1, 0x5d, 0x56, 0x4b, 0x41,
+ 0x75, 0x85, 0xce, 0xdb, 0xa4, 0xfc, 0xf8, 0x41, 0x73, 0xad, 0x27, 0x69,
+ 0x77, 0xb5, 0xdc, 0x9e, 0xda, 0x24, 0xa7, 0x5a, 0xdc, 0xb6, 0x87, 0x12,
+ 0xd3, 0x10, 0x39, 0x03, 0xe9, 0x08, 0x55, 0x6e, 0xea, 0x6d, 0x2e, 0xfd,
+ 0x18, 0x9f, 0x1d, 0x34, 0xdc, 0x07, 0x2b, 0x3d, 0xce, 0x20, 0x12, 0xe3,
+ 0xc7, 0x0a, 0x00, 0x38, 0x9d, 0xa0, 0x44, 0x19, 0x01, 0x25, 0x26, 0xbb,
+ 0x2e, 0xfb, 0xde, 0xd6, 0x97, 0x1d, 0xa4, 0xc6, 0xab, 0x56, 0x86, 0x39,
+ 0xa2, 0x19, 0x1a, 0x72, 0xb2, 0xbd, 0x07, 0x52, 0x6a, 0x76, 0xd2, 0x77,
+ 0x91, 0x20, 0xf0, 0xd5, 0xb3, 0x5e, 0xbb, 0xb4, 0x9d, 0x40, 0x84, 0x94,
+ 0xca, 0xba, 0x5a, 0x49, 0xd6, 0x5c, 0x79, 0x0a, 0x5b, 0x32, 0x76, 0x7a,
+ 0x5b, 0xff, 0x00, 0x47, 0x3f, 0x34, 0x5a, 0xe9, 0x73, 0x25, 0xcd, 0xe0,
+ 0xf6, 0x4f, 0x0e, 0x89, 0x84, 0x94, 0xf4, 0x76, 0x12, 0x09, 0x6b, 0x4c,
+ 0x77, 0x31, 0xe6, 0xa2, 0x1e, 0x48, 0x27, 0x93, 0x13, 0xf0, 0x08, 0xf7,
+ 0xd4, 0x08, 0x9f, 0xbf, 0xc2, 0x02, 0xa4, 0xeb, 0x25, 0x8e, 0x04, 0xce,
+ 0xba, 0xf6, 0xe1, 0x25, 0x32, 0xad, 0xb2, 0x4b, 0x8e, 0xa0, 0xc9, 0x42,
+ 0xb2, 0xb9, 0x30, 0xc3, 0x02, 0x7f, 0x15, 0x20, 0xf0, 0x59, 0x0d, 0xf1,
+ 0xdb, 0xb7, 0xc2, 0x7c, 0x13, 0x56, 0xcd, 0xa1, 0xcd, 0x06, 0x67, 0xc5,
+ 0x25, 0x2c, 0xcd, 0xcd, 0x22, 0x67, 0x4e, 0x08, 0xd7, 0xe6, 0xac, 0x17,
+ 0x31, 0xad, 0x92, 0x41, 0x1c, 0xc2, 0xab, 0x91, 0x65, 0x8c, 0x00, 0x31,
+ 0xa5, 0xce, 0x76, 0x90, 0x10, 0xb1, 0xec, 0xdc, 0x08, 0x78, 0xd7, 0x99,
+ 0xee, 0x92, 0x93, 0x59, 0xb6, 0xca, 0x5c, 0xd8, 0x06, 0xb3, 0x21, 0xcd,
+ 0x1c, 0x47, 0xcf, 0x95, 0x9b, 0xd2, 0x1a, 0xdc, 0x2b, 0x2d, 0xc1, 0xa5,
+ 0xee, 0x75, 0x60, 0xef, 0x6b, 0x07, 0xd2, 0x60, 0xb0, 0x96, 0xc7, 0xde,
+ 0xb4, 0x65, 0xcd, 0x3b, 0x9a, 0xdf, 0x69, 0xd3, 0x55, 0x81, 0x85, 0x79,
+ 0x67, 0x5e, 0xcc, 0xac, 0x0d, 0x2f, 0xad, 0xa5, 0x9e, 0x41, 0xa7, 0xb2,
+ 0x4a, 0x76, 0xef, 0x19, 0xc1, 0xae, 0xf4, 0xdc, 0x5c, 0x1a, 0x74, 0xd3,
+ 0x43, 0xf0, 0x2a, 0xa5, 0xd7, 0xe4, 0x55, 0x54, 0x64, 0x63, 0x6f, 0xdd,
+ 0xf4, 0x8f, 0x33, 0x3c, 0xe8, 0xb4, 0x19, 0x9c, 0x59, 0xec, 0xb3, 0x40,
+ 0x3b, 0x77, 0x1c, 0xf9, 0xa9, 0x3d, 0xcd, 0x69, 0x27, 0x78, 0x70, 0x23,
+ 0xb6, 0xa7, 0xc1, 0x25, 0x38, 0x98, 0xd9, 0x7b, 0x1d, 0xb7, 0x5f, 0x41,
+ 0xa7, 0x42, 0xed, 0x5d, 0x58, 0x3d, 0xb5, 0xe4, 0x20, 0xe4, 0xe0, 0x3a,
+ 0xa7, 0x1c, 0x9c, 0x37, 0x6d, 0xdd, 0xab, 0x99, 0xc8, 0x33, 0xc2, 0xb9,
+ 0x93, 0x8c, 0xeb, 0x9c, 0x2c, 0xa9, 0xbb, 0x4e, 0x83, 0x9f, 0xa5, 0xe4,
+ 0xa9, 0xb3, 0xda, 0x1e, 0xe6, 0xb4, 0xb1, 0x9c, 0x59, 0x59, 0x3e, 0x1f,
+ 0x9c, 0xd9, 0xfc, 0x89, 0x29, 0x8b, 0x72, 0x03, 0xec, 0xae, 0xc0, 0xd7,
+ 0x36, 0xfa, 0x44, 0x64, 0x31, 0xd1, 0xdf, 0xf3, 0x9b, 0xf2, 0x45, 0x22,
+ 0xac, 0x8d, 0x1a, 0x09, 0x8d, 0x40, 0xd2, 0x37, 0x77, 0x55, 0xb3, 0xf6,
+ 0xd9, 0x5b, 0x72, 0xb1, 0x4e, 0xe2, 0xc1, 0x05, 0xfd, 0xdc, 0xde, 0xed,
+ 0x45, 0xc2, 0x0d, 0xbf, 0x1a, 0xab, 0x43, 0xf4, 0x30, 0x67, 0xc3, 0xc7,
+ 0xf2, 0x24, 0xa4, 0x8e, 0xa0, 0x38, 0x3d, 0xa0, 0x0d, 0x44, 0x47, 0xfa,
+ 0xf6, 0x5c, 0xfe, 0xc1, 0x4e, 0x4d, 0x94, 0x11, 0xdc, 0xb9, 0xa0, 0xf8,
+ 0x82, 0xba, 0x2b, 0x05, 0x5f, 0x45, 0xb2, 0x23, 0x42, 0x79, 0xe6, 0x4a,
+ 0xce, 0xbb, 0x14, 0x59, 0xd4, 0x28, 0x78, 0x8d, 0xa0, 0xc3, 0x87, 0xf5,
+ 0x75, 0x49, 0x49, 0x6a, 0xa0, 0xb5, 0xcc, 0x81, 0xee, 0x6c, 0x39, 0xdf,
+ 0x12, 0xbb, 0x9e, 0x99, 0x92, 0xcb, 0x31, 0x58, 0x23, 0x50, 0x38, 0xf3,
+ 0x5c, 0xc5, 0x34, 0x17, 0x5b, 0x3d, 0x8f, 0x2b, 0x7b, 0x06, 0xb7, 0x52,
+ 0x09, 0x1f, 0x44, 0xa4, 0xa6, 0xf6, 0x45, 0xe6, 0x08, 0x5c, 0x7f, 0xd6,
+ 0x37, 0x93, 0x6b, 0x01, 0x3c, 0xff, 0x00, 0x05, 0xd5, 0x39, 0xc1, 0xc0,
+ 0xbf, 0xc1, 0x72, 0x3f, 0x58, 0x6c, 0x0e, 0xcd, 0x6b, 0x3b, 0x06, 0xfe,
+ 0x54, 0x94, 0xe7, 0xd4, 0xc9, 0x1e, 0x2a, 0xc6, 0x13, 0x76, 0x66, 0xd6,
+ 0x26, 0x3d, 0x49, 0x64, 0xe9, 0xa6, 0xe1, 0xa7, 0x3e, 0x68, 0x74, 0x39,
+ 0xbb, 0x4e, 0xbc, 0x21, 0xe4, 0x5b, 0xb4, 0xee, 0x6e, 0x85, 0xbc, 0x7c,
+ 0x42, 0x4a, 0x7a, 0x2b, 0x4d, 0x57, 0xe2, 0x5b, 0xb9, 0xa1, 0xde, 0xc3,
+ 0x64, 0x90, 0x5e, 0xed, 0x7f, 0x47, 0x67, 0xe3, 0xaa, 0x03, 0x5c, 0xe7,
+ 0x51, 0x89, 0x69, 0x76, 0xa3, 0x1f, 0x7b, 0xc9, 0xd0, 0x93, 0x64, 0x3b,
+ 0x53, 0xdf, 0x45, 0x6a, 0xa7, 0x0b, 0xb1, 0x1c, 0xe6, 0xb4, 0xed, 0xc8,
+ 0xaf, 0xdb, 0xb9, 0xc0, 0x69, 0x73, 0x0f, 0x66, 0xff, 0x00, 0x2d, 0xaa,
+ 0x86, 0x0f, 0xbb, 0xa3, 0x50, 0x75, 0x07, 0x66, 0xd1, 0xac, 0x8f, 0x63,
+ 0x5a, 0xd3, 0xe6, 0x35, 0x49, 0x4c, 0x4d, 0xad, 0x2e, 0x1a, 0x46, 0xd6,
+ 0x98, 0xe3, 0xb0, 0x2a, 0x9b, 0x36, 0x9b, 0x5e, 0xd0, 0xdd, 0xc4, 0x06,
+ 0x8e, 0x7f, 0x93, 0xaa, 0x33, 0xe5, 0x8c, 0x7c, 0x02, 0xe2, 0x1a, 0x41,
+ 0x23, 0x4e, 0x56, 0x71, 0xbb, 0xd3, 0xca, 0xbb, 0xb0, 0x04, 0x40, 0x13,
+ 0xa2, 0x4a, 0x6e, 0xd9, 0x8e, 0xdb, 0x07, 0xd2, 0x68, 0xfd, 0xce, 0x4f,
+ 0xde, 0x86, 0xdb, 0x4b, 0x36, 0xb6, 0xcf, 0xd1, 0x90, 0x47, 0xc0, 0x0e,
+ 0xea, 0x1e, 0xa8, 0xb9, 0xc4, 0x82, 0x43, 0x48, 0x81, 0xb4, 0xea, 0x0f,
+ 0x28, 0x16, 0xd6, 0xf2, 0x01, 0x7b, 0xe4, 0x79, 0x8d, 0x7c, 0x92, 0x52,
+ 0x5b, 0x2a, 0x73, 0x49, 0x6b, 0x1d, 0xb9, 0x8d, 0x07, 0x69, 0xe6, 0x67,
+ 0xcd, 0x53, 0x7d, 0x8e, 0xad, 0xe5, 0xc3, 0x5e, 0xfa, 0xff, 0x00, 0x14,
+ 0xff, 0x00, 0xa4, 0x69, 0xf6, 0xbc, 0xe9, 0xa8, 0x01, 0x08, 0x92, 0xe3,
+ 0xef, 0x80, 0x26, 0x4e, 0xa9, 0x29, 0x9b, 0xb2, 0xac, 0x73, 0x75, 0x12,
+ 0x4c, 0xcf, 0x31, 0xaa, 0x8b, 0x43, 0xec, 0x0d, 0x60, 0x6e, 0xd6, 0xb7,
+ 0x41, 0xe4, 0xa6, 0xc7, 0xe3, 0xb6, 0x1a, 0x48, 0x33, 0x1e, 0xe5, 0x31,
+ 0x95, 0x8e, 0xc3, 0x24, 0x98, 0x1d, 0xbc, 0x92, 0x53, 0x1f, 0xb2, 0x16,
+ 0x81, 0x63, 0xe6, 0x47, 0x3a, 0x6a, 0x8a, 0xcc, 0x70, 0xe0, 0x5c, 0x01,
+ 0xd4, 0x18, 0x71, 0x1f, 0xc5, 0x0a, 0xde, 0xa5, 0x5b, 0x9f, 0xb6, 0xb3,
+ 0x31, 0xc1, 0x02, 0x27, 0xe2, 0x82, 0xfc, 0x8b, 0x6c, 0x30, 0xdf, 0x68,
+ 0x27, 0xe8, 0x8e, 0x12, 0x53, 0xa6, 0x36, 0xbf, 0x1a, 0xb0, 0x39, 0x6b,
+ 0xe1, 0x17, 0x14, 0xbb, 0xd7, 0x8f, 0x12, 0xb3, 0xf1, 0xd8, 0x45, 0x8d,
+ 0x12, 0x48, 0x00, 0xb8, 0xad, 0x5e, 0x9d, 0x65, 0x5b, 0x0d, 0x96, 0x69,
+ 0x02, 0x02, 0x4a, 0x4f, 0x9f, 0x92, 0xda, 0xd8, 0xda, 0x68, 0x77, 0xe9,
+ 0x0e, 0xaf, 0x28, 0x1e, 0xae, 0x47, 0xd9, 0xa2, 0x75, 0xfd, 0xef, 0x35,
+ 0x8d, 0xd4, 0x5f, 0x65, 0xb9, 0x25, 0xf4, 0x92, 0x07, 0x62, 0x11, 0x77,
+ 0x66, 0xfd, 0x83, 0xe9, 0x9e, 0x79, 0x49, 0x4f, 0xa0, 0x64, 0x65, 0xd6,
+ 0x74, 0x91, 0x3f, 0x9d, 0x1e, 0x2a, 0x8b, 0xdd, 0xa1, 0x6b, 0x0f, 0xb9,
+ 0xf1, 0xa0, 0xe6, 0x25, 0x66, 0xe4, 0xe3, 0xe5, 0x63, 0xbb, 0x73, 0x5c,
+ 0x5e, 0xc3, 0xaf, 0xc1, 0x58, 0xc5, 0xc9, 0x36, 0xb0, 0x0e, 0x2c, 0x3a,
+ 0x47, 0x7f, 0x8a, 0x4a, 0x6c, 0x87, 0x16, 0xde, 0xed, 0xdf, 0x45, 0xdc,
+ 0x47, 0x32, 0xa6, 0x5e, 0x58, 0x3d, 0x48, 0xf3, 0x43, 0xca, 0xac, 0x36,
+ 0x1c, 0x78, 0xd0, 0xe8, 0x83, 0x66, 0x68, 0x04, 0x48, 0xdd, 0x5f, 0x73,
+ 0xf9, 0x12, 0x53, 0x66, 0x82, 0x58, 0x4d, 0xa7, 0xe9, 0x38, 0xfb, 0x89,
+ 0x3c, 0x79, 0x22, 0xec, 0x68, 0x7e, 0xe6, 0xfe, 0x77, 0x92, 0x15, 0x2e,
+ 0x16, 0x36, 0x47, 0xd1, 0x3c, 0xcf, 0x64, 0x8b, 0xde, 0x3d, 0x80, 0x9f,
+ 0x07, 0x14, 0x94, 0xbe, 0x58, 0x25, 0x86, 0xaa, 0xdb, 0xba, 0xc3, 0xc0,
+ 0x9d, 0x02, 0xe5, 0x85, 0xdf, 0x66, 0xfa, 0xd3, 0x41, 0xb6, 0x36, 0xb8,
+ 0x0a, 0xde, 0xee, 0xc0, 0xbe, 0x7f, 0x21, 0x21, 0x75, 0x61, 0xde, 0xc2,
+ 0x00, 0x8f, 0x0f, 0x1f, 0x9a, 0xe5, 0xfa, 0x96, 0x03, 0xee, 0xf5, 0xaf,
+ 0x68, 0xf7, 0x07, 0x17, 0x03, 0xdc, 0x6d, 0xe1, 0x25, 0x3d, 0x2d, 0x98,
+ 0xed, 0xb2, 0x5f, 0x00, 0x13, 0xe0, 0x62, 0x7e, 0x4a, 0xb5, 0x98, 0xd7,
+ 0x57, 0x20, 0x34, 0x8d, 0xbe, 0x06, 0x7e, 0x5a, 0xa1, 0xe3, 0xe6, 0x91,
+ 0x8d, 0x5d, 0xa3, 0x5d, 0xed, 0x04, 0x9f, 0x37, 0x09, 0x25, 0x0e, 0xfe,
+ 0xab, 0x9a, 0xcd, 0x7d, 0x30, 0xe6, 0x8e, 0x0c, 0x73, 0xe6, 0x92, 0x94,
+ 0x6c, 0xb4, 0x12, 0xd7, 0x0d, 0xc7, 0xb4, 0x6b, 0x06, 0x3b, 0xaa, 0xb7,
+ 0x3e, 0x4e, 0xdb, 0x68, 0x2e, 0x13, 0xca, 0x93, 0xba, 0xd6, 0x56, 0xd2,
+ 0xd1, 0x84, 0x5e, 0xe7, 0x73, 0x03, 0x68, 0x84, 0x23, 0x99, 0xd5, 0x49,
+ 0x31, 0x84, 0xd6, 0xb7, 0xc1, 0xc5, 0x25, 0x35, 0x67, 0x1e, 0x97, 0x59,
+ 0xe9, 0x07, 0x30, 0xbc, 0x7b, 0xab, 0x71, 0xf6, 0x99, 0xf0, 0x1e, 0x29,
+ 0xfa, 0x3d, 0xb5, 0xb1, 0xd6, 0xd2, 0xd3, 0x35, 0xbb, 0xf4, 0x8c, 0x6f,
+ 0x3b, 0x49, 0xfa, 0x4d, 0x3f, 0x02, 0xa5, 0x7d, 0xbd, 0x5e, 0xc7, 0x34,
+ 0x7d, 0x9e, 0x9a, 0xc9, 0xd1, 0xb3, 0x13, 0x0b, 0x3a, 0xeb, 0xb2, 0x71,
+ 0x72, 0x05, 0xb7, 0x63, 0x8a, 0xa4, 0xc3, 0xac, 0x60, 0xd0, 0xb4, 0xe8,
+ 0x66, 0x12, 0x53, 0xbb, 0x75, 0x8d, 0x75, 0x67, 0x6c, 0x6c, 0x3a, 0x97,
+ 0x01, 0x10, 0x54, 0x31, 0xd9, 0xba, 0xdd, 0xc7, 0xb0, 0xd3, 0xe6, 0x83,
+ 0x8e, 0xe6, 0xfa, 0x63, 0x6b, 0xa7, 0x99, 0x57, 0xf0, 0x86, 0xe6, 0x6e,
+ 0x3c, 0xb8, 0xe9, 0xf0, 0x09, 0x29, 0xd0, 0xc1, 0xa8, 0x6e, 0xe3, 0x5f,
+ 0x35, 0xb1, 0x5b, 0x36, 0xb0, 0x8e, 0xca, 0xa6, 0x15, 0x5b, 0x4e, 0xe3,
+ 0xe0, 0xaf, 0x13, 0xed, 0x23, 0xba, 0x4a, 0x43, 0x60, 0x6b, 0x29, 0xf1,
+ 0x2b, 0x84, 0xeb, 0x96, 0x83, 0xd4, 0x5c, 0x3b, 0x34, 0x2e, 0xe7, 0x20,
+ 0x86, 0xd6, 0x67, 0x98, 0x5e, 0x7b, 0xd5, 0x9c, 0x1d, 0x9f, 0x63, 0xb9,
+ 0xdc, 0x92, 0x98, 0xd6, 0xf3, 0xf9, 0xaa, 0x37, 0x17, 0x1e, 0x51, 0x31,
+ 0x5a, 0xd2, 0x35, 0x56, 0x6c, 0xa0, 0x42, 0x4a, 0x77, 0x7e, 0xad, 0xb9,
+ 0xf7, 0xf4, 0xd6, 0xd6, 0x01, 0x05, 0x9b, 0xaa, 0x0e, 0x00, 0x73, 0x3e,
+ 0xa3, 0x25, 0xc5, 0x51, 0xa4, 0xfe, 0xa4, 0xd6, 0x02, 0x08, 0xa8, 0xbd,
+ 0x83, 0xc8, 0x1b, 0x1f, 0xc9, 0xef, 0x02, 0x11, 0x3e, 0xae, 0xb8, 0xb4,
+ 0xdd, 0x8e, 0x0c, 0x3b, 0x4b, 0x6b, 0x10, 0x5d, 0xee, 0x67, 0x97, 0x0a,
+ 0x65, 0xac, 0xae, 0xec, 0x86, 0x34, 0x45, 0x66, 0xd7, 0x58, 0xd9, 0xd2,
+ 0x03, 0xe1, 0xe3, 0x4f, 0xed, 0x24, 0xa6, 0x9b, 0x9f, 0x14, 0xb9, 0xd2,
+ 0x37, 0x1e, 0x5a, 0x7e, 0x20, 0x68, 0xa8, 0x48, 0x73, 0xf2, 0x6d, 0x78,
+ 0xd4, 0x97, 0x12, 0x27, 0x90, 0x16, 0xcd, 0xd4, 0xd6, 0x44, 0x3b, 0x47,
+ 0x69, 0x3e, 0x44, 0x11, 0xfc, 0x16, 0x5d, 0x58, 0xe1, 0xf5, 0xbc, 0x1d,
+ 0x03, 0x9c, 0x4c, 0x1e, 0xe0, 0x72, 0x12, 0x52, 0x0e, 0x9e, 0x2c, 0xa2,
+ 0xeb, 0x6d, 0xb4, 0x7e, 0x8d, 0xed, 0xf6, 0x32, 0x66, 0x3b, 0x83, 0xa2,
+ 0x0d, 0xf7, 0xbd, 0xd6, 0x38, 0x92, 0x3d, 0xe2, 0x1a, 0xdf, 0x0d, 0x55,
+ 0xd7, 0xd6, 0xe6, 0xb1, 0xc1, 0xad, 0x10, 0xde, 0x00, 0xfa, 0x40, 0x0f,
+ 0x10, 0xb3, 0xae, 0xa1, 0xc1, 0xdb, 0xe2, 0x3b, 0x83, 0x32, 0x92, 0x91,
+ 0x3b, 0x74, 0xc0, 0x3e, 0x48, 0x45, 0x8e, 0x26, 0x66, 0x11, 0xeb, 0x71,
+ 0x20, 0xc9, 0x98, 0xe3, 0xc9, 0x49, 0xcd, 0xf6, 0x87, 0x0f, 0xbd, 0x25,
+ 0x34, 0x4b, 0x07, 0xab, 0x00, 0xcb, 0x7b, 0x13, 0xa4, 0xfc, 0x93, 0xdd,
+ 0xed, 0xd0, 0x76, 0x1f, 0x95, 0x18, 0xb0, 0x7a, 0x80, 0xf0, 0x3b, 0xaa,
+ 0xce, 0x3b, 0xad, 0x71, 0x3f, 0x44, 0x14, 0x94, 0x92, 0x9d, 0xb5, 0xb7,
+ 0xd4, 0x77, 0xd2, 0xec, 0x13, 0xb1, 0xef, 0x27, 0x77, 0x12, 0x74, 0x01,
+ 0x0d, 0xa1, 0xd6, 0x1d, 0xd1, 0x23, 0x80, 0x17, 0x59, 0xf5, 0x4f, 0xa2,
+ 0x32, 0xef, 0xd7, 0xb2, 0x19, 0x3b, 0x5c, 0x7d, 0x36, 0x9d, 0x40, 0x8e,
+ 0xe9, 0x29, 0xac, 0xde, 0x99, 0x91, 0x8b, 0xd3, 0xce, 0x66, 0x48, 0xd8,
+ 0xfb, 0x61, 0xac, 0xac, 0x72, 0x07, 0xf2, 0xbc, 0xd5, 0x43, 0x60, 0xf4,
+ 0xc3, 0x1a, 0x7d, 0xc7, 0xb0, 0x5d, 0x67, 0xd6, 0x86, 0x81, 0x45, 0x35,
+ 0x76, 0xd4, 0xc2, 0xc2, 0xc4, 0xc3, 0x68, 0x67, 0xa9, 0xb3, 0x7c, 0xfd,
+ 0xe1, 0x25, 0x35, 0x6a, 0xad, 0xe2, 0x26, 0xa2, 0xe0, 0x79, 0x21, 0x5c,
+ 0xfb, 0x39, 0xf4, 0xe3, 0xd3, 0x76, 0xce, 0x63, 0xba, 0xb1, 0x4e, 0xf6,
+ 0x3f, 0x6b, 0x7e, 0xe5, 0xa3, 0x0e, 0xf4, 0xa7, 0xf3, 0x92, 0x53, 0x6f,
+ 0x21, 0xad, 0x71, 0x83, 0x24, 0xbb, 0xb0, 0xe1, 0x65, 0xe5, 0x61, 0x3a,
+ 0x97, 0xfa, 0xc0, 0xed, 0x02, 0x20, 0x71, 0x0a, 0xfd, 0x59, 0x95, 0x3c,
+ 0x6e, 0x2d, 0xd8, 0x75, 0x1c, 0xa1, 0xe5, 0x5a, 0x6c, 0x67, 0x88, 0x1a,
+ 0x1f, 0xbf, 0x44, 0x94, 0x96, 0xbb, 0xd9, 0x7e, 0x2b, 0x9a, 0xe1, 0x36,
+ 0x13, 0xc9, 0xe6, 0x55, 0x6a, 0x6b, 0x6b, 0x1a, 0xea, 0x6c, 0x6c, 0xb9,
+ 0xc4, 0xbb, 0x4d, 0x41, 0x3e, 0x1f, 0x20, 0xaa, 0xdb, 0x7b, 0xfa, 0x7d,
+ 0x95, 0xdb, 0x02, 0xca, 0xcb, 0xa5, 0xed, 0xf8, 0x05, 0xa6, 0xeb, 0x06,
+ 0x4d, 0x55, 0xdd, 0x4c, 0x00, 0xed, 0x64, 0x76, 0xee, 0x12, 0x53, 0x43,
+ 0x1e, 0xef, 0x42, 0xe2, 0xd2, 0x65, 0xae, 0xf1, 0xec, 0xb4, 0x1b, 0x64,
+ 0x89, 0x02, 0x0f, 0x7d, 0x55, 0x6c, 0xca, 0x05, 0xd5, 0x87, 0x81, 0xee,
+ 0xe5, 0xae, 0x1a, 0x6a, 0xab, 0x57, 0x65, 0x8e, 0x67, 0xb5, 0xfa, 0x8d,
+ 0x1e, 0x3b, 0xa4, 0xa7, 0x58, 0x0d, 0xfa, 0x1f, 0x8f, 0xc1, 0x57, 0xab,
+ 0x1c, 0x3c, 0x58, 0x0f, 0x04, 0xba, 0x50, 0xb1, 0xf3, 0x0b, 0x08, 0x65,
+ 0x9a, 0x0e, 0x35, 0xee, 0xb4, 0x71, 0xfd, 0x10, 0xd2, 0x5b, 0xac, 0xeb,
+ 0x1e, 0x69, 0x29, 0xa1, 0x81, 0x82, 0xdb, 0x30, 0xc8, 0x67, 0xb5, 0xf8,
+ 0xee, 0x7b, 0x27, 0xe7, 0x2d, 0xfb, 0xa5, 0x44, 0x55, 0x6b, 0x08, 0x6b,
+ 0xf4, 0x73, 0x34, 0x32, 0x3b, 0xfc, 0x55, 0x7a, 0xfa, 0xbb, 0x3a, 0x67,
+ 0x5e, 0xb3, 0x17, 0x24, 0xed, 0xc5, 0xcc, 0x01, 0xc0, 0xf3, 0xb2, 0xd1,
+ 0xed, 0x9d, 0x3c, 0x42, 0xd4, 0xfb, 0x7e, 0x15, 0xba, 0x16, 0x38, 0x02,
+ 0x61, 0xaf, 0x77, 0x0e, 0x3f, 0x1f, 0xef, 0x49, 0x48, 0x1d, 0xb2, 0x21,
+ 0x8d, 0x27, 0x69, 0x12, 0x40, 0x40, 0xb1, 0xf6, 0xee, 0x20, 0x34, 0x16,
+ 0x91, 0xcb, 0x9d, 0xfc, 0x16, 0x85, 0x9e, 0x9b, 0x40, 0x75, 0x6c, 0x24,
+ 0x1f, 0x6c, 0x1e, 0x7e, 0x50, 0x83, 0x2e, 0x61, 0x7b, 0x03, 0x18, 0xd2,
+ 0x34, 0x93, 0xac, 0x8f, 0x87, 0xc1, 0x25, 0x34, 0xac, 0xad, 0xd6, 0x34,
+ 0x58, 0xd3, 0xb0, 0xb7, 0x83, 0x00, 0xfc, 0x62, 0x56, 0x56, 0x6d, 0x17,
+ 0xd9, 0xbb, 0x7d, 0x8e, 0x2d, 0xf0, 0x76, 0x92, 0xb5, 0xad, 0xa3, 0x28,
+ 0xee, 0xd9, 0x6f, 0xa7, 0xdc, 0x80, 0x04, 0x41, 0xf8, 0xcc, 0x2c, 0xcb,
+ 0xe8, 0xcf, 0x60, 0x2d, 0x39, 0x0c, 0x03, 0x9e, 0x35, 0x49, 0x4d, 0x0e,
+ 0x99, 0x73, 0x98, 0x5f, 0x8d, 0x69, 0xda, 0xe6, 0x99, 0x03, 0xc4, 0x76,
+ 0xf8, 0xae, 0x93, 0x0a, 0xb0, 0x3d, 0x36, 0xf8, 0x05, 0xce, 0x61, 0xe2,
+ 0xdb, 0x67, 0x53, 0xad, 0xee, 0x76, 0xe3, 0x58, 0x25, 0xd1, 0xdf, 0xc9,
+ 0x75, 0xd8, 0x75, 0x8d, 0xc0, 0xf8, 0xe8, 0x92, 0x9d, 0x2a, 0x59, 0xb6,
+ 0xbf, 0x32, 0x13, 0xc3, 0xbb, 0xe8, 0x8d, 0xa3, 0x58, 0x3c, 0x90, 0x4b,
+ 0xbd, 0xc6, 0x4f, 0xcb, 0xe2, 0x92, 0x9a, 0x5d, 0x46, 0xc2, 0x29, 0x71,
+ 0x3a, 0xae, 0x36, 0xf6, 0x55, 0x92, 0x0b, 0x1e, 0x40, 0xb3, 0xf4, 0x8e,
+ 0x6b, 0x83, 0x75, 0x1f, 0x9c, 0x24, 0xf7, 0x0b, 0xa9, 0xeb, 0x0f, 0x73,
+ 0x6a, 0x3e, 0x2b, 0x91, 0xa6, 0xcd, 0xb7, 0x34, 0x58, 0x25, 0xe6, 0xb7,
+ 0x09, 0x07, 0x59, 0x2e, 0xda, 0x3f, 0x04, 0x94, 0x83, 0x15, 0xcf, 0x6d,
+ 0x9b, 0x5d, 0xcb, 0x74, 0x2b, 0x50, 0x09, 0x12, 0x50, 0xb2, 0x71, 0x9a,
+ 0xdb, 0xfd, 0x56, 0x9d, 0x43, 0xbd, 0x32, 0xd2, 0x20, 0xc3, 0x40, 0xd5,
+ 0x5b, 0xad, 0x9e, 0xc4, 0x94, 0xae, 0x9d, 0x71, 0xc6, 0xce, 0xae, 0xce,
+ 0x00, 0x27, 0x76, 0xb1, 0x21, 0x5e, 0x70, 0x9b, 0x1f, 0x0e, 0x02, 0xb9,
+ 0x21, 0xae, 0x1f, 0x44, 0xc9, 0xd0, 0x82, 0x7c, 0x95, 0x07, 0xd4, 0xf6,
+ 0x80, 0xf8, 0x20, 0xfd, 0x20, 0x78, 0xe3, 0xcc, 0xf0, 0xb4, 0x0b, 0x58,
+ 0xca, 0x6b, 0x00, 0x6e, 0x70, 0x20, 0xc4, 0xeb, 0xaf, 0x8c, 0xa4, 0xa5,
+ 0xdd, 0x58, 0x74, 0x68, 0x49, 0x81, 0x13, 0xc6, 0xbd, 0xd5, 0x5a, 0x1b,
+ 0xb7, 0x18, 0x19, 0x3a, 0x12, 0xe0, 0x74, 0xec, 0x7c, 0xfb, 0xab, 0xc2,
+ 0x41, 0x2e, 0x2d, 0xe1, 0xa6, 0x27, 0x8d, 0x01, 0x94, 0x1a, 0x8b, 0x1d,
+ 0x8e, 0xc0, 0xe9, 0x93, 0x05, 0xbe, 0x00, 0xf9, 0x04, 0x94, 0xd5, 0x20,
+ 0x96, 0xb8, 0x88, 0x04, 0xe8, 0x74, 0xd6, 0x0e, 0xab, 0x2f, 0x2d, 0x9f,
+ 0xa3, 0x22, 0x74, 0x6f, 0x00, 0x05, 0xac, 0xf6, 0xba, 0xa7, 0xb8, 0xf3,
+ 0x3d, 0xb4, 0xf0, 0x54, 0x5d, 0x59, 0x2d, 0x78, 0x22, 0x27, 0xb0, 0xfc,
+ 0x52, 0x53, 0x90, 0xf0, 0x5b, 0xc1, 0x8e, 0xd0, 0x93, 0x5f, 0xd8, 0x1e,
+ 0x7c, 0x78, 0x53, 0xbd, 0xa2, 0x35, 0xe4, 0x72, 0xa9, 0xef, 0x74, 0xe8,
+ 0x92, 0x9b, 0x0f, 0x78, 0xda, 0x7c, 0xb5, 0x56, 0xba, 0x17, 0x43, 0xb3,
+ 0xa8, 0x4d, 0xcf, 0x69, 0x35, 0x4e, 0x8d, 0xfd, 0xe4, 0x1e, 0x9d, 0x83,
+ 0x6f, 0x53, 0xcb, 0xaf, 0x0d, 0x86, 0x05, 0x92, 0x5e, 0xf8, 0x9d, 0xad,
+ 0x68, 0x97, 0x15, 0xe8, 0xdf, 0x57, 0xc5, 0x78, 0xbd, 0x3f, 0xec, 0xe6,
+ 0xbf, 0x6d, 0x76, 0x3a, 0xb2, 0x62, 0x08, 0x0d, 0x3a, 0x6e, 0xf9, 0x24,
+ 0xa7, 0x9c, 0xb7, 0xa1, 0x43, 0x36, 0x06, 0x6c, 0x64, 0x7b, 0x8e, 0x82,
+ 0x02, 0xe9, 0xb0, 0x29, 0xa7, 0x1f, 0x1e, 0xaa, 0x6a, 0x68, 0x6d, 0x6c,
+ 0x68, 0x0d, 0x6f, 0x92, 0x97, 0x55, 0x35, 0x0c, 0x77, 0x12, 0x43, 0x7d,
+ 0x43, 0xb4, 0x0f, 0xde, 0xf2, 0x0a, 0x36, 0x6d, 0xc7, 0x02, 0xe7, 0x38,
+ 0x0a, 0x8c, 0x7c, 0x92, 0x53, 0x8d, 0xf5, 0xa2, 0xdd, 0xd9, 0x0d, 0x68,
+ 0xfc, 0xc6, 0xc2, 0xa1, 0x4b, 0xdf, 0x5d, 0x6d, 0x03, 0x83, 0xe0, 0xa7,
+ 0xd6, 0x2c, 0xfb, 0x45, 0xae, 0xb1, 0xba, 0x82, 0x74, 0x43, 0xc7, 0x36,
+ 0x00, 0x01, 0x29, 0x29, 0x35, 0x4d, 0x9b, 0x24, 0x19, 0x27, 0xba, 0xd4,
+ 0xf4, 0x0f, 0xa1, 0x2a, 0x96, 0x25, 0x6d, 0x2f, 0x92, 0x56, 0xbe, 0x9e,
+ 0x9c, 0x7e, 0x6a, 0x4a, 0x7c, 0xfb, 0x2e, 0xeb, 0xea, 0xbb, 0x57, 0xbb,
+ 0x6b, 0x78, 0xd4, 0xc4, 0x2d, 0x6c, 0x3c, 0xe3, 0x6d, 0x4d, 0x68, 0x71,
+ 0xdc, 0x60, 0xfd, 0xc9, 0xec, 0xe9, 0xc2, 0xf2, 0xe9, 0x6e, 0xd1, 0x12,
+ 0x7e, 0x2a, 0xb5, 0x54, 0x65, 0xf4, 0xd7, 0x7e, 0x88, 0x6e, 0xac, 0xf2,
+ 0xd3, 0xfc, 0x0a, 0x4a, 0x76, 0x7a, 0x80, 0x6d, 0xb8, 0x63, 0x43, 0xea,
+ 0x36, 0x77, 0x4f, 0x71, 0xa7, 0x0b, 0x37, 0xa7, 0xe6, 0x5b, 0x8a, 0x4d,
+ 0x66, 0x4d, 0x73, 0xf4, 0x4f, 0x64, 0xee, 0xea, 0x62, 0xe7, 0xb6, 0xb1,
+ 0xec, 0x76, 0xbb, 0x83, 0xb9, 0xf8, 0xa6, 0xfb, 0x38, 0x73, 0xcb, 0xda,
+ 0x65, 0xde, 0x49, 0x29, 0xe8, 0x2b, 0xb2, 0xbb, 0x6b, 0xdc, 0x0e, 0x87,
+ 0xb7, 0x81, 0xee, 0xa8, 0xdf, 0x5f, 0xa3, 0x66, 0xe8, 0x86, 0xbf, 0x47,
+ 0x7f, 0x05, 0x56, 0xbb, 0xdf, 0x8f, 0xec, 0x74, 0xec, 0xd0, 0x13, 0xdc,
+ 0x2b, 0x0d, 0xcb, 0xab, 0x21, 0x86, 0xa7, 0x80, 0x0f, 0x63, 0xf0, 0xee,
+ 0x92, 0x97, 0x3a, 0xb4, 0xb5, 0xdf, 0x27, 0x0e, 0xe1, 0x1a, 0xab, 0x36,
+ 0x37, 0xb9, 0xf1, 0x55, 0x45, 0xa0, 0x7b, 0x5d, 0xf4, 0x9b, 0xa0, 0xf3,
+ 0xfb, 0x93, 0xdb, 0x94, 0xd6, 0x56, 0x4f, 0x27, 0xcb, 0xb2, 0x4a, 0x72,
+ 0xfa, 0xdb, 0xeb, 0xb7, 0x26, 0x81, 0x53, 0x0b, 0xf2, 0x43, 0x87, 0xa6,
+ 0xd1, 0xcf, 0x32, 0xb7, 0xf0, 0x1f, 0x5e, 0x3b, 0x36, 0x64, 0x36, 0x71,
+ 0xde, 0x64, 0x38, 0xeb, 0xb5, 0xd1, 0xdc, 0x78, 0x2a, 0x5f, 0x56, 0x2a,
+ 0x66, 0x6e, 0x4f, 0x51, 0xc9, 0x7c, 0x39, 0xf5, 0xfa, 0x75, 0xb1, 0xc7,
+ 0x90, 0x1d, 0xb8, 0x98, 0xf8, 0xc2, 0xdb, 0xaf, 0x1c, 0x55, 0x6b, 0xeb,
+ 0x26, 0x6b, 0x30, 0x08, 0xd0, 0x68, 0x92, 0x9a, 0xe7, 0x2b, 0x22, 0x90,
+ 0xe8, 0xc7, 0x7d, 0x94, 0x69, 0xe9, 0x39, 0x90, 0xf3, 0x07, 0xf9, 0x28,
+ 0x6d, 0xcc, 0xba, 0xdd, 0x5d, 0x50, 0xa8, 0xea, 0x06, 0xe0, 0x49, 0xdb,
+ 0xfb, 0xc7, 0xcd, 0x58, 0x39, 0x4c, 0x65, 0xde, 0x8e, 0x21, 0x6b, 0xac,
+ 0x24, 0x82, 0xf9, 0x96, 0xb7, 0xcc, 0xc1, 0x85, 0x4f, 0x2f, 0xa6, 0x67,
+ 0x5f, 0x5f, 0xf4, 0xeb, 0x4e, 0x92, 0x76, 0x10, 0xc6, 0xeb, 0xf9, 0xad,
+ 0x8d, 0x52, 0x52, 0xef, 0xb6, 0xd0, 0xc2, 0xf7, 0x68, 0xc3, 0xda, 0x3e,
+ 0x97, 0x65, 0x8f, 0xd6, 0x32, 0x29, 0x15, 0x37, 0xd1, 0xb3, 0xf4, 0xc0,
+ 0x83, 0xa8, 0x13, 0x1f, 0xba, 0x02, 0x1d, 0xbd, 0x27, 0xa8, 0xbd, 0xc6,
+ 0xa7, 0xdf, 0x69, 0x11, 0x04, 0x17, 0x18, 0xfc, 0x54, 0xeb, 0xe8, 0x21,
+ 0xa0, 0x39, 0xcf, 0x3b, 0x87, 0x32, 0x41, 0x31, 0xdf, 0x84, 0x94, 0x9f,
+ 0xea, 0xfd, 0x77, 0x5b, 0x5f, 0xaf, 0x70, 0x01, 0xc4, 0xc3, 0x40, 0x1b,
+ 0x74, 0xf3, 0x95, 0xd2, 0xd2, 0xc1, 0xed, 0xd2, 0x16, 0x7e, 0x05, 0x40,
+ 0x31, 0xa0, 0x08, 0x03, 0xb7, 0x92, 0xd4, 0xa0, 0xc1, 0x26, 0x35, 0x09,
+ 0x29, 0xb3, 0x26, 0x22, 0x66, 0x10, 0x2c, 0x71, 0x6e, 0xbe, 0x1d, 0xd4,
+ 0xdc, 0xfd, 0x47, 0x89, 0x50, 0xbc, 0x00, 0xcd, 0x4e, 0x89, 0x29, 0xc5,
+ 0xeb, 0x77, 0x46, 0x3d, 0x8e, 0xfd, 0xd6, 0x9f, 0xbe, 0x17, 0x25, 0x88,
+ 0xf7, 0x58, 0xc6, 0x64, 0x4c, 0xba, 0xa2, 0x3d, 0x46, 0xf3, 0x2d, 0x1c,
+ 0xe8, 0xba, 0x2e, 0xb7, 0x60, 0xfb, 0x2d, 0x8d, 0x1c, 0x91, 0x13, 0xf1,
+ 0x5c, 0xd6, 0x2b, 0xdb, 0x8d, 0x91, 0x10, 0x43, 0x1d, 0xe2, 0x92, 0x9d,
+ 0x86, 0x5a, 0x2d, 0xa8, 0x08, 0xe0, 0x17, 0x0d, 0x77, 0x37, 0x75, 0x8e,
+ 0xda, 0x34, 0xe4, 0x68, 0xae, 0xe0, 0xb2, 0x90, 0x0b, 0xed, 0x76, 0xf0,
+ 0xc1, 0x2e, 0x03, 0x56, 0x88, 0x13, 0xf3, 0x59, 0x35, 0xdb, 0xe8, 0x64,
+ 0x6c, 0x74, 0xed, 0x8d, 0xf4, 0xcf, 0x66, 0x34, 0x18, 0x6c, 0xf9, 0x39,
+ 0x15, 0xbf, 0x6a, 0xfb, 0x7d, 0x0c, 0x64, 0xb3, 0x1e, 0x26, 0xe8, 0xe1,
+ 0xef, 0x1a, 0x16, 0x9f, 0xee, 0x49, 0x4d, 0x9c, 0xe6, 0xd9, 0x95, 0x91,
+ 0x45, 0x1b, 0xa2, 0x08, 0xc8, 0xc8, 0x6f, 0x60, 0x5a, 0x7d, 0x8d, 0xf8,
+ 0x95, 0xa9, 0x2d, 0x73, 0x1a, 0x08, 0x93, 0xc1, 0x88, 0x55, 0x18, 0x1b,
+ 0xeb, 0xd8, 0x40, 0x0d, 0xac, 0x39, 0xbb, 0x1b, 0x20, 0xd8, 0x34, 0xdc,
+ 0x01, 0x3d, 0xd1, 0x34, 0x6f, 0xe9, 0x67, 0x42, 0x08, 0x74, 0x24, 0xa6,
+ 0xcb, 0x76, 0xb2, 0xbb, 0xac, 0x04, 0xe9, 0x59, 0x1f, 0x90, 0x77, 0xf8,
+ 0xaa, 0x4e, 0x71, 0xa8, 0x30, 0x68, 0x41, 0x10, 0x67, 0x52, 0x9f, 0x2a,
+ 0xf6, 0xb5, 0x8f, 0xac, 0x19, 0x7b, 0x9c, 0xc6, 0xf9, 0x93, 0xc9, 0x03,
+ 0xf0, 0x56, 0xac, 0xc3, 0x66, 0xd3, 0x66, 0x51, 0xf4, 0x6b, 0x89, 0xd7,
+ 0xe9, 0x49, 0x84, 0x94, 0xd2, 0x7b, 0xb7, 0xbe, 0x49, 0x05, 0xba, 0x0d,
+ 0x20, 0x7e, 0x08, 0x76, 0xd6, 0x01, 0x21, 0xa2, 0x01, 0x26, 0x4f, 0xe0,
+ 0xb4, 0x1c, 0xfc, 0x0c, 0x61, 0xea, 0xb2, 0x96, 0xbd, 0xb1, 0x3b, 0xdc,
+ 0x77, 0x13, 0xfc, 0x11, 0x31, 0xec, 0xe9, 0x5d, 0x49, 0xed, 0x6b, 0x6b,
+ 0x04, 0xbc, 0x6a, 0xf6, 0xfb, 0x63, 0xee, 0xee, 0x92, 0x9e, 0x43, 0x21,
+ 0xba, 0xba, 0x34, 0x00, 0x98, 0x59, 0xce, 0x20, 0x38, 0x9e, 0xc3, 0x58,
+ 0x5d, 0xb7, 0x56, 0xfa, 0x9d, 0x7e, 0xd7, 0x3b, 0xa6, 0xdc, 0xdb, 0x7b,
+ 0xfa, 0x6f, 0xd1, 0xde, 0x70, 0xee, 0x0a, 0xe4, 0x33, 0xfa, 0x5f, 0x51,
+ 0xe9, 0xe6, 0x73, 0x71, 0xdf, 0x53, 0x49, 0xd1, 0xc4, 0x7b, 0x49, 0xfe,
+ 0xb0, 0xd1, 0x25, 0x3d, 0x1f, 0xd5, 0x1a, 0x5c, 0xc0, 0xdb, 0xb5, 0x6b,
+ 0xad, 0x2f, 0x87, 0x71, 0x0c, 0x88, 0x99, 0xf9, 0x2e, 0xc7, 0x17, 0xa7,
+ 0x83, 0x63, 0xb2, 0x43, 0x9c, 0xda, 0xec, 0xf7, 0x1a, 0xff, 0x00, 0x35,
+ 0xce, 0x02, 0x37, 0x78, 0xac, 0x0f, 0xab, 0x6d, 0x65, 0xb8, 0x14, 0x0a,
+ 0xce, 0xd1, 0xe9, 0xb6, 0x4c, 0x7e, 0xef, 0xd2, 0xfb, 0xd7, 0x5f, 0x53,
+ 0xa6, 0x98, 0x26, 0x60, 0x4a, 0x4a, 0x70, 0xac, 0x79, 0xcd, 0xea, 0x17,
+ 0x50, 0x5c, 0xd0, 0x29, 0x6e, 0xc6, 0xb4, 0xf6, 0x27, 0x92, 0x83, 0x9e,
+ 0x71, 0x72, 0x6a, 0xfb, 0x23, 0xad, 0x2c, 0xbe, 0x91, 0x20, 0x4c, 0x49,
+ 0x0a, 0x8f, 0xd6, 0xb2, 0xec, 0x4b, 0x19, 0xd5, 0x71, 0x0c, 0x3c, 0x9d,
+ 0x99, 0x00, 0x71, 0x3d, 0x97, 0x2d, 0x9f, 0xd5, 0xee, 0xcc, 0x75, 0x6e,
+ 0xd5, 0xb6, 0xee, 0x02, 0x47, 0x29, 0x29, 0xd7, 0xbe, 0xf7, 0xda, 0xd6,
+ 0xb9, 0xc2, 0x27, 0x41, 0xf2, 0xd1, 0x3d, 0x44, 0x8d, 0x64, 0xeb, 0xe2,
+ 0x91, 0x6f, 0xa9, 0x40, 0x61, 0x10, 0xe6, 0x89, 0x95, 0x06, 0xde, 0x05,
+ 0x6e, 0x6b, 0xbe, 0x90, 0xd0, 0x14, 0x94, 0xdf, 0xe9, 0xf6, 0x03, 0x61,
+ 0xde, 0xb6, 0x77, 0x0f, 0x4b, 0xca, 0x56, 0x3f, 0x4b, 0xac, 0x38, 0x49,
+ 0xd5, 0x6d, 0xfa, 0x6d, 0xf4, 0x3e, 0x69, 0x29, 0xa8, 0xea, 0x1a, 0xd7,
+ 0x38, 0x34, 0x6b, 0x1a, 0x28, 0xd9, 0x88, 0xdb, 0x36, 0x02, 0x25, 0x4e,
+ 0x5d, 0xbf, 0x6e, 0xef, 0x71, 0x02, 0x7c, 0x14, 0xac, 0x73, 0xea, 0xa9,
+ 0xd7, 0x59, 0xed, 0x65, 0x60, 0x99, 0xf3, 0xe0, 0x42, 0x4a, 0x78, 0xfe,
+ 0xbb, 0x41, 0x6f, 0x50, 0x1f, 0x66, 0x30, 0x58, 0x20, 0xb8, 0x7c, 0x78,
+ 0x45, 0xc3, 0xea, 0x16, 0xd3, 0xed, 0xb4, 0x00, 0xf3, 0xf9, 0xd1, 0xa1,
+ 0x47, 0xae, 0x93, 0x7d, 0xcf, 0xb4, 0x89, 0xde, 0x64, 0x15, 0x1c, 0xfc,
+ 0x66, 0xb5, 0x8d, 0x11, 0xaf, 0x8a, 0x4a, 0x6c, 0xc5, 0xb6, 0x0f, 0x52,
+ 0x23, 0xf8, 0xa6, 0xb0, 0x54, 0x58, 0xd2, 0xcf, 0x6b, 0xc7, 0xe0, 0x56,
+ 0x7e, 0x3f, 0x51, 0xb7, 0x14, 0xfa, 0x4f, 0x1e, 0xa5, 0x27, 0x82, 0x79,
+ 0x6a, 0xb5, 0xeb, 0xd3, 0x68, 0x2f, 0xa5, 0xc0, 0xf8, 0x8e, 0xe3, 0xe4,
+ 0x52, 0x53, 0x1b, 0x72, 0xdc, 0xd1, 0xef, 0x6c, 0x39, 0xba, 0x07, 0xb5,
+ 0x53, 0xb2, 0xf7, 0xb9, 0x84, 0x13, 0x00, 0xf1, 0x08, 0xd7, 0x58, 0x5c,
+ 0x21, 0xc4, 0x40, 0xf0, 0x55, 0x1c, 0xf0, 0x39, 0x29, 0x29, 0x17, 0x4d,
+ 0xeb, 0x39, 0x7d, 0x2b, 0x35, 0xcf, 0xc7, 0x01, 0xed, 0xb6, 0x05, 0x95,
+ 0x1e, 0x1f, 0x1c, 0x7c, 0xf5, 0x5d, 0xc1, 0xbd, 0x99, 0x65, 0xa2, 0xd6,
+ 0x06, 0x5a, 0x04, 0x35, 0xa7, 0xf3, 0x67, 0x9d, 0x57, 0x9e, 0xb5, 0xec,
+ 0xab, 0x36, 0xab, 0x9d, 0xf4, 0x59, 0x63, 0x5c, 0x7e, 0x00, 0x82, 0xbd,
+ 0x1b, 0x1b, 0x1b, 0xed, 0x4d, 0x0f, 0x04, 0x17, 0x0d, 0x49, 0x1c, 0x90,
+ 0x7c, 0x52, 0x52, 0x0f, 0xd9, 0x77, 0xb0, 0x6f, 0xa2, 0x1a, 0xc1, 0xfb,
+ 0xb0, 0x3e, 0xf4, 0x16, 0xe6, 0x0c, 0x62, 0x19, 0x63, 0xde, 0x36, 0xea,
+ 0x60, 0x18, 0x3e, 0x5b, 0xb8, 0x5b, 0x34, 0xb2, 0xcc, 0x72, 0xd6, 0xb9,
+ 0xfe, 0xa5, 0x70, 0x79, 0xe5, 0xb3, 0xe0, 0x15, 0x7c, 0xb7, 0x87, 0xb3,
+ 0xd2, 0x6d, 0x7e, 0xa6, 0xed, 0x4b, 0x0e, 0x89, 0x29, 0xcb, 0xb7, 0xa8,
+ 0xe1, 0xe5, 0x3f, 0xd1, 0x0f, 0x1e, 0xab, 0xa4, 0x56, 0xc6, 0x0d, 0xc4,
+ 0xb8, 0xfe, 0xf2, 0x3b, 0xa9, 0xf4, 0x71, 0xf6, 0xba, 0x37, 0xd8, 0x76,
+ 0x92, 0x07, 0x82, 0x26, 0x2d, 0x0d, 0x65, 0x8e, 0x1b, 0x03, 0x45, 0x70,
+ 0xd0, 0x44, 0x44, 0xbb, 0x57, 0x44, 0x0f, 0x0d, 0x11, 0x5f, 0x51, 0xb7,
+ 0x66, 0xef, 0xa2, 0x25, 0xc7, 0xe2, 0x92, 0x99, 0x53, 0x56, 0xd0, 0xd1,
+ 0x1a, 0x8e, 0xca, 0xc3, 0x46, 0xd6, 0xc9, 0xd7, 0xc4, 0x21, 0xb8, 0x06,
+ 0xb7, 0xdb, 0xa6, 0x9d, 0x91, 0x9a, 0x25, 0xba, 0x84, 0x94, 0xc2, 0x65,
+ 0xe2, 0x3e, 0x6a, 0x39, 0x8e, 0x3b, 0x43, 0x41, 0xf8, 0x7c, 0x91, 0x58,
+ 0x36, 0xba, 0x5c, 0xa9, 0xe6, 0x38, 0xee, 0x84, 0x94, 0xf3, 0x9f, 0x58,
+ 0x5e, 0xdf, 0x45, 0xb5, 0x4c, 0x39, 0xef, 0x10, 0x7c, 0xc0, 0x95, 0x92,
+ 0x43, 0x6f, 0xc7, 0x20, 0x8d, 0xb6, 0x33, 0x9e, 0xc4, 0x1f, 0x05, 0x6f,
+ 0xeb, 0x33, 0xc3, 0xae, 0x65, 0x6d, 0x30, 0xf6, 0xcb, 0xc0, 0xf3, 0x1a,
+ 0x2c, 0xc6, 0x5e, 0xe2, 0x0b, 0xdd, 0xcb, 0x86, 0xb3, 0xde, 0x34, 0xfb,
+ 0xc2, 0x4a, 0x74, 0x3a, 0x60, 0x7e, 0x4b, 0x4e, 0x4e, 0x40, 0x1b, 0x71,
+ 0x78, 0x9f, 0xcf, 0x27, 0xf2, 0xc2, 0xd1, 0xc6, 0xb4, 0xd7, 0x45, 0x76,
+ 0x1f, 0x6c, 0x37, 0xf9, 0xc8, 0xe1, 0xd6, 0x12, 0xf0, 0x40, 0xfd, 0xee,
+ 0xd2, 0x8f, 0xd2, 0x70, 0xe8, 0xc8, 0xe9, 0x35, 0xb8, 0xcf, 0xe9, 0x37,
+ 0x12, 0x07, 0x79, 0x24, 0x4f, 0xcf, 0x80, 0xb3, 0x3a, 0x8e, 0x4b, 0xbe,
+ 0xda, 0xf7, 0xfd, 0x0c, 0x7a, 0x40, 0xa9, 0xaf, 0xff, 0x00, 0x49, 0x02,
+ 0x00, 0x1e, 0x4d, 0x1d, 0xd2, 0x53, 0x66, 0x9b, 0x49, 0x2e, 0xdc, 0x23,
+ 0x71, 0x25, 0xc0, 0xeb, 0x13, 0xd9, 0x1b, 0xd6, 0x73, 0xec, 0x00, 0x37,
+ 0xd4, 0x79, 0x86, 0xb5, 0x8d, 0x3f, 0x48, 0xf8, 0x42, 0xc8, 0xaa, 0xfb,
+ 0x2f, 0xb1, 0xb4, 0xd2, 0xd3, 0x63, 0xde, 0x7d, 0xad, 0x01, 0x74, 0x58,
+ 0x75, 0x57, 0xd2, 0x71, 0xc3, 0xde, 0x3d, 0x4c, 0xcb, 0x74, 0x31, 0xae,
+ 0xdf, 0xe4, 0xb5, 0x25, 0x25, 0x6d, 0x38, 0xbd, 0x36, 0xa1, 0x76, 0x44,
+ 0x59, 0x94, 0x35, 0xdd, 0xc8, 0x61, 0x3c, 0xed, 0x9e, 0xfe, 0x6b, 0x2d,
+ 0xc7, 0xad, 0xfd, 0x60, 0xbf, 0xd2, 0xc5, 0xaf, 0xf5, 0x76, 0x98, 0x75,
+ 0xa7, 0xda, 0xc0, 0x3c, 0xdc, 0x55, 0xfa, 0xb0, 0x7e, 0xd3, 0x6f, 0xaf,
+ 0x9a, 0xef, 0x69, 0x32, 0x28, 0x9f, 0x6f, 0xf6, 0x8f, 0x75, 0xb3, 0x4f,
+ 0x56, 0xc5, 0xae, 0x31, 0x71, 0x5b, 0x36, 0xb6, 0x00, 0xaa, 0xb1, 0x3f,
+ 0x38, 0x1d, 0x92, 0x52, 0x0c, 0x1f, 0xa9, 0x95, 0x32, 0xbd, 0x99, 0x79,
+ 0x6e, 0x79, 0x3c, 0xd6, 0xcd, 0x1b, 0xff, 0x00, 0x4a, 0x53, 0x64, 0x7d,
+ 0x55, 0xc6, 0xc6, 0x0e, 0x7e, 0x0d, 0xd6, 0x53, 0x60, 0xe7, 0x59, 0x07,
+ 0xe2, 0x16, 0xe5, 0x20, 0x90, 0x2d, 0xb3, 0x47, 0xf6, 0x6c, 0xf0, 0x50,
+ 0xac, 0x73, 0x8c, 0xbb, 0x99, 0xe6, 0x0e, 0x89, 0x29, 0x06, 0x16, 0x4b,
+ 0x1d, 0x47, 0xa7, 0x3b, 0xac, 0x60, 0x01, 0xce, 0xec, 0x5c, 0x06, 0xaa,
+ 0xcd, 0xd4, 0x55, 0x7d, 0x4e, 0xae, 0xc6, 0x87, 0xd6, 0xe1, 0x0e, 0x61,
+ 0x12, 0xd2, 0x0f, 0x88, 0x2b, 0x9b, 0xba, 0xe1, 0x85, 0x98, 0xe7, 0x30,
+ 0x96, 0x55, 0x69, 0x97, 0x8e, 0x60, 0x9e, 0x61, 0x74, 0xd4, 0x3d, 0xb6,
+ 0x54, 0xd7, 0xb0, 0xc8, 0x22, 0x41, 0xec, 0x42, 0x4a, 0x72, 0x3f, 0x63,
+ 0x9c, 0x12, 0xd1, 0xd3, 0xdc, 0x1b, 0x50, 0x98, 0xa5, 0xd3, 0x1a, 0x99,
+ 0x86, 0x95, 0x6f, 0x17, 0x3d, 0xcd, 0x70, 0xaf, 0x25, 0x86, 0xa7, 0x8e,
+ 0x01, 0xe1, 0xde, 0x6d, 0x3c, 0x15, 0x7b, 0x69, 0x1a, 0x48, 0x93, 0xd9,
+ 0x35, 0xd8, 0xec, 0x7b, 0x0b, 0x2d, 0x68, 0x7b, 0x3c, 0x12, 0x53, 0x91,
+ 0xf5, 0x9f, 0x1e, 0xac, 0xae, 0x91, 0x90, 0x1a, 0x65, 0xec, 0x87, 0x37,
+ 0x5e, 0xf3, 0x24, 0x95, 0xe7, 0xd4, 0xe1, 0xdb, 0xf6, 0x9a, 0x9a, 0xe1,
+ 0x0d, 0x0e, 0x12, 0xbb, 0xce, 0xab, 0xd3, 0xb2, 0x29, 0xc2, 0xbd, 0xf8,
+ 0xee, 0x36, 0xd1, 0xb4, 0xee, 0x61, 0xfa, 0x4d, 0x03, 0xcf, 0xba, 0xe4,
+ 0xf1, 0x9e, 0xe3, 0x73, 0x06, 0xe2, 0x41, 0xe4, 0x24, 0xa6, 0xe9, 0xb7,
+ 0xd3, 0x73, 0x9b, 0xca, 0xae, 0xf0, 0x1e, 0x64, 0x0d, 0xbd, 0xe1, 0x11,
+ 0xd5, 0x7a, 0xd7, 0x48, 0x1a, 0x35, 0x16, 0xd6, 0x81, 0x5c, 0x38, 0x00,
+ 0x47, 0x04, 0x24, 0xa6, 0x78, 0x79, 0x4d, 0xa4, 0x6b, 0xcf, 0x80, 0x5b,
+ 0xbf, 0x69, 0x1f, 0x60, 0xf5, 0xe0, 0xed, 0x95, 0xcb, 0xd0, 0x5c, 0x7b,
+ 0x72, 0x57, 0x49, 0xb0, 0xfe, 0xc4, 0x98, 0xef, 0xc2, 0x4a, 0x4f, 0x8f,
+ 0xb2, 0xcb, 0x5f, 0x60, 0x00, 0x86, 0x9d, 0xa3, 0xbc, 0x69, 0xaa, 0xa5,
+ 0xd7, 0xac, 0x2f, 0xf4, 0xf1, 0x9a, 0x64, 0x1d, 0x5c, 0x3c, 0xc2, 0xd3,
+ 0x6d, 0x62, 0x8a, 0x87, 0xe6, 0xba, 0x24, 0xfc, 0x56, 0x3d, 0xce, 0xf5,
+ 0xf2, 0xdd, 0xac, 0xec, 0x11, 0xf3, 0x49, 0x48, 0x58, 0xd6, 0xd2, 0xc0,
+ 0xc0, 0x37, 0x3e, 0x3b, 0x76, 0x55, 0xed, 0xc6, 0xb2, 0xc7, 0x0d, 0xe6,
+ 0x40, 0x04, 0x95, 0x7c, 0x56, 0x03, 0x75, 0x3e, 0xe7, 0x77, 0x4d, 0xb5,
+ 0xd1, 0xaf, 0x03, 0x44, 0x94, 0xe4, 0x5b, 0x80, 0x1e, 0x25, 0xbf, 0xd9,
+ 0xf3, 0x54, 0x2c, 0xc0, 0xbd, 0xb2, 0xf0, 0x36, 0x91, 0xdc, 0x2e, 0xa9,
+ 0x94, 0x07, 0x40, 0x03, 0x40, 0x87, 0x93, 0x5b, 0x18, 0xc9, 0x8d, 0x07,
+ 0x8a, 0x4a, 0x78, 0xcb, 0xf2, 0x6c, 0xa9, 0xc1, 0xb6, 0x09, 0x3e, 0x28,
+ 0x0f, 0xcd, 0xde, 0x35, 0x6a, 0xb7, 0xd4, 0xaa, 0xf5, 0x32, 0x09, 0x03,
+ 0x49, 0x54, 0xec, 0xa3, 0x68, 0x3e, 0x29, 0x29, 0x03, 0xdf, 0xb8, 0xaf,
+ 0x4d, 0xfa, 0xa7, 0x96, 0xfc, 0xce, 0x95, 0x43, 0xda, 0xff, 0x00, 0x73,
+ 0x1b, 0xe9, 0x5b, 0x27, 0xbb, 0x74, 0xfc, 0x8b, 0xcc, 0x48, 0x82, 0xbb,
+ 0xcf, 0xa8, 0xe0, 0x55, 0xd1, 0xec, 0xb9, 0xfa, 0x57, 0xeb, 0xb9, 0xce,
+ 0x9e, 0xf0, 0xd6, 0xc4, 0x4a, 0x4a, 0x7a, 0x3c, 0xcc, 0xd6, 0x54, 0xc6,
+ 0xfa, 0x67, 0x76, 0xf3, 0xb0, 0x3c, 0x7e, 0x73, 0x81, 0x8d, 0xaa, 0xb3,
+ 0xf1, 0x73, 0x5d, 0xd5, 0x2b, 0x2e, 0x3b, 0x70, 0xeb, 0x69, 0xde, 0xd1,
+ 0xf4, 0xad, 0xb2, 0x3f, 0xea, 0x5a, 0x7e, 0xf5, 0x56, 0xeb, 0x2e, 0xb3,
+ 0x66, 0x6d, 0x82, 0x03, 0x88, 0xfb, 0x3d, 0x7c, 0x6d, 0x68, 0xe5, 0xd1,
+ 0xe2, 0x42, 0xd8, 0xc2, 0x78, 0xb0, 0x32, 0xdb, 0x18, 0x19, 0x61, 0x6b,
+ 0xbd, 0x93, 0x3f, 0x9c, 0x7b, 0xfd, 0xc9, 0x29, 0xa9, 0x75, 0x54, 0xd1,
+ 0x7e, 0xba, 0x4c, 0x06, 0x6d, 0xd6, 0x49, 0x92, 0x64, 0x79, 0xc2, 0x76,
+ 0x01, 0x1a, 0x8e, 0xca, 0x1d, 0x55, 0x9b, 0x5f, 0xbe, 0xbd, 0x5e, 0x3e,
+ 0x97, 0xc2, 0x41, 0xd2, 0x3c, 0x02, 0x55, 0x3b, 0x7f, 0xbb, 0x9f, 0x00,
+ 0x92, 0x97, 0x2d, 0x97, 0x19, 0xfa, 0x23, 0x82, 0x88, 0xd2, 0x4b, 0x7f,
+ 0x22, 0x88, 0x27, 0xf3, 0xa3, 0x54, 0x8b, 0x9d, 0xc1, 0xd4, 0xa4, 0xa6,
+ 0x6f, 0x30, 0xcf, 0x3f, 0x15, 0x43, 0x26, 0x0c, 0x9e, 0xfd, 0x95, 0xd7,
+ 0x38, 0x35, 0xa5, 0x66, 0xe4, 0x59, 0xb4, 0x92, 0xed, 0x00, 0xd4, 0x93,
+ 0xe0, 0x12, 0x53, 0xc6, 0xf5, 0xf2, 0xeb, 0xfa, 0xa3, 0xda, 0xc6, 0x39,
+ 0xfe, 0x9b, 0x5a, 0xd8, 0x68, 0x26, 0x0f, 0xd2, 0x3c, 0x7c, 0x55, 0x3a,
+ 0x83, 0x1a, 0xed, 0x8e, 0x90, 0xfe, 0x5a, 0xd2, 0x0f, 0x3f, 0x05, 0xd6,
+ 0xe0, 0xd5, 0xf6, 0xb2, 0x6e, 0x73, 0xb6, 0x31, 0xe6, 0x44, 0x68, 0x48,
+ 0xf1, 0x25, 0x74, 0x5d, 0x37, 0xa3, 0x61, 0x30, 0x7d, 0xb9, 0xf4, 0xb4,
+ 0xbd, 0xbf, 0xcc, 0xb9, 0xc0, 0x17, 0x4f, 0x8c, 0x94, 0x94, 0xf2, 0xf8,
+ 0x58, 0xfd, 0x75, 0xfd, 0x23, 0xec, 0x98, 0x98, 0xee, 0xae, 0xf2, 0xf2,
+ 0x3d, 0x4b, 0x46, 0xc0, 0xca, 0x9d, 0xee, 0x96, 0x13, 0xdf, 0x77, 0x92,
+ 0x47, 0xea, 0x47, 0x56, 0xbd, 0x85, 0xb6, 0xe5, 0x55, 0xb4, 0x91, 0x05,
+ 0xcd, 0x74, 0x88, 0x1c, 0x37, 0xc9, 0x76, 0xec, 0x86, 0x00, 0x62, 0x79,
+ 0x30, 0x89, 0x73, 0xf6, 0x52, 0x5c, 0x63, 0x71, 0xd3, 0xfd, 0x81, 0x25,
+ 0x3c, 0xff, 0x00, 0x45, 0xfa, 0xb7, 0x8b, 0xd3, 0x69, 0x89, 0x2e, 0xb9,
+ 0xdf, 0x4e, 0xce, 0xe7, 0xfd, 0x88, 0xb9, 0x58, 0x34, 0x63, 0xee, 0x71,
+ 0x79, 0x0f, 0x7e, 0x81, 0xcf, 0x33, 0xf2, 0x1e, 0x0b, 0x48, 0x4b, 0x48,
+ 0x9f, 0x0f, 0xe2, 0xab, 0xe7, 0x60, 0xe3, 0xf5, 0x3a, 0x8d, 0x19, 0x25,
+ 0xcd, 0x68, 0x87, 0x31, 0xec, 0x3b, 0x5e, 0x1d, 0xe4, 0x52, 0x53, 0xcb,
+ 0xf5, 0x0c, 0xcc, 0x86, 0x64, 0xd5, 0x86, 0xe6, 0x96, 0x36, 0xd3, 0x1e,
+ 0xa8, 0xfa, 0x21, 0x83, 0x57, 0x10, 0x7c, 0x61, 0x69, 0x55, 0xd5, 0xbe,
+ 0xc9, 0x84, 0xd7, 0xe3, 0x61, 0x39, 0x8d, 0x22, 0x48, 0xad, 0x85, 0xce,
+ 0x23, 0xb1, 0x71, 0x02, 0x4c, 0x85, 0xd0, 0xe3, 0xe0, 0x55, 0x45, 0x4d,
+ 0xae, 0xa2, 0xdd, 0x8d, 0x10, 0x09, 0x1e, 0xef, 0x99, 0x46, 0x66, 0x33,
+ 0x5d, 0xab, 0x9e, 0x00, 0x1e, 0x09, 0x29, 0xe7, 0xba, 0x7f, 0x50, 0xcb,
+ 0xea, 0x6c, 0x16, 0x6e, 0x6d, 0x15, 0x73, 0xb1, 0xc7, 0xf4, 0x84, 0x0d,
+ 0x3e, 0x88, 0xe1, 0x6b, 0x36, 0xac, 0xa6, 0x09, 0xf4, 0xff, 0x00, 0x44,
+ 0x47, 0x0d, 0xd4, 0xa3, 0xfd, 0x8f, 0xa7, 0xd7, 0x7f, 0xda, 0x45, 0x40,
+ 0xdd, 0x1b, 0x7d, 0x43, 0xcc, 0x78, 0x2b, 0x03, 0x25, 0xb3, 0xed, 0x49,
+ 0x4e, 0x0e, 0x67, 0x4e, 0x7d, 0xd2, 0x5c, 0x3d, 0xa7, 0xc4, 0x14, 0x3c,
+ 0x3e, 0x9b, 0xd5, 0x31, 0x81, 0xfb, 0x1e, 0x4f, 0xa6, 0xc8, 0x9d, 0xb6,
+ 0x34, 0xb9, 0x9f, 0x8a, 0xe8, 0x5d, 0x7e, 0x86, 0x34, 0x1e, 0x2a, 0xb3,
+ 0xee, 0xf1, 0x27, 0x69, 0xd0, 0x8f, 0xe2, 0x92, 0x9e, 0x7a, 0xc6, 0xfd,
+ 0x73, 0xf7, 0x16, 0x5b, 0x56, 0xe1, 0xf9, 0xa5, 0x80, 0xff, 0x00, 0x9a,
+ 0x56, 0x5e, 0x4f, 0x5c, 0xfa, 0xe9, 0xd3, 0x8e, 0xfc, 0x8a, 0x9a, 0x6b,
+ 0x6f, 0x2e, 0xf4, 0xe5, 0xbf, 0x38, 0xe1, 0x75, 0xf5, 0x67, 0x35, 0x96,
+ 0x1a, 0xc0, 0x26, 0x15, 0xc0, 0xe6, 0xdc, 0xc3, 0xa0, 0xd7, 0x47, 0x02,
+ 0x92, 0x9e, 0x57, 0x1b, 0xeb, 0x5d, 0x3d, 0x43, 0xa6, 0xde, 0x2d, 0x6f,
+ 0xa5, 0x7b, 0x98, 0x41, 0xdb, 0xf4, 0x4c, 0xf6, 0x85, 0x93, 0x4e, 0x3d,
+ 0x02, 0xc0, 0xf6, 0x34, 0xc8, 0x12, 0x1d, 0x2b, 0x7f, 0xad, 0xfd, 0x5e,
+ 0xc0, 0xad, 0x8e, 0xea, 0x38, 0xec, 0xf4, 0x6e, 0x66, 0xae, 0xd8, 0x36,
+ 0xb5, 0xe3, 0x8f, 0x73, 0x78, 0x58, 0x95, 0xb9, 0xe0, 0xb9, 0x85, 0xa4,
+ 0x08, 0x3a, 0xf6, 0x49, 0x4b, 0xd0, 0x44, 0xba, 0x62, 0x4f, 0x08, 0x59,
+ 0x36, 0x1d, 0x9b, 0x76, 0x80, 0x7c, 0x50, 0x85, 0x45, 0xee, 0x30, 0xe2,
+ 0xd2, 0xdd, 0x74, 0x47, 0x24, 0x1a, 0xcc, 0xea, 0x38, 0x92, 0x92, 0x98,
+ 0x63, 0x07, 0xb9, 0xcd, 0x68, 0x3a, 0x2e, 0xbb, 0xd1, 0x1f, 0xb3, 0x3d,
+ 0x09, 0xfc, 0xd5, 0x83, 0xd3, 0x71, 0x1b, 0x66, 0xd7, 0xcf, 0x1a, 0xc2,
+ 0xe8, 0xff, 0x00, 0xc1, 0x47, 0x94, 0x24, 0xa4, 0x79, 0x2d, 0x79, 0x1a,
+ 0xe9, 0x1a, 0x98, 0x59, 0xd8, 0xb8, 0x6f, 0x70, 0x75, 0x9c, 0xb9, 0xe4,
+ 0xb8, 0x9f, 0x25, 0xa8, 0xf6, 0xfa, 0x8d, 0x91, 0x32, 0xf2, 0x1a, 0x01,
+ 0xec, 0xaf, 0x36, 0x8a, 0x6a, 0x66, 0xd0, 0x35, 0x02, 0x12, 0x53, 0x85,
+ 0x6d, 0x41, 0xa0, 0x08, 0x88, 0x50, 0x0d, 0x68, 0xf7, 0x6d, 0x1f, 0xed,
+ 0x57, 0xb3, 0x03, 0x77, 0x18, 0x8d, 0x39, 0x54, 0x84, 0x38, 0xc7, 0x03,
+ 0x99, 0x49, 0x49, 0x40, 0x0d, 0x6c, 0xbb, 0x9f, 0x0e, 0xeb, 0x37, 0x3e,
+ 0xc6, 0xbc, 0x96, 0x19, 0xd6, 0x20, 0x2b, 0xcf, 0x02, 0xb6, 0x97, 0x1f,
+ 0xc4, 0xac, 0x9b, 0x5c, 0xed, 0xce, 0xb1, 0xc3, 0xd8, 0x26, 0x3f, 0x2a,
+ 0x4a, 0x73, 0x32, 0xea, 0x68, 0x27, 0x4d, 0x79, 0x95, 0x9b, 0x94, 0xd1,
+ 0x10, 0x3e, 0x21, 0x6b, 0x64, 0x6e, 0x75, 0x65, 0xe7, 0xb9, 0x85, 0x9f,
+ 0x7d, 0x64, 0xd5, 0xba, 0x38, 0xd0, 0x94, 0x94, 0xe6, 0xfa, 0x0e, 0xb6,
+ 0xfa, 0xea, 0x66, 0x8e, 0xb5, 0xcd, 0x6b, 0x67, 0xc5, 0xc6, 0x17, 0xa7,
+ 0x8c, 0x1a, 0x2b, 0xc5, 0xc7, 0xe9, 0xcc, 0xf6, 0x51, 0x40, 0x6b, 0x03,
+ 0x06, 0x9b, 0xe4, 0xea, 0xe7, 0x7f, 0x5b, 0x95, 0xe7, 0x38, 0x95, 0xbd,
+ 0xf9, 0xf4, 0x7a, 0x7a, 0x39, 0x8e, 0x0f, 0x93, 0xfc, 0x83, 0xb9, 0x77,
+ 0xe7, 0xaa, 0x62, 0x64, 0xdb, 0x51, 0x32, 0xd7, 0x6e, 0x1a, 0x79, 0xfc,
+ 0x52, 0x53, 0x6f, 0x2a, 0xb3, 0x60, 0x05, 0x82, 0x03, 0x5b, 0x0d, 0xe2,
+ 0x01, 0x22, 0x21, 0x4a, 0xa1, 0x60, 0x10, 0xdd, 0x03, 0x40, 0x88, 0xf3,
+ 0xd7, 0x94, 0x67, 0xd4, 0xc7, 0x54, 0x00, 0x90, 0x08, 0x92, 0x0f, 0x0a,
+ 0xae, 0x30, 0x73, 0x6c, 0xdb, 0xbb, 0x58, 0x23, 0x99, 0xfa, 0x27, 0x94,
+ 0x94, 0xc3, 0xa8, 0x8b, 0xe5, 0x82, 0x97, 0x6c, 0xb1, 0xd0, 0x24, 0x7e,
+ 0x73, 0x8f, 0xd2, 0x1f, 0x31, 0xe2, 0x95, 0x15, 0x1a, 0xeb, 0x0d, 0x8d,
+ 0x44, 0x68, 0x79, 0x1f, 0x15, 0x3b, 0xde, 0xc7, 0x3d, 0x86, 0x4e, 0xf0,
+ 0x4c, 0xc0, 0x91, 0x33, 0x20, 0xea, 0x87, 0x82, 0xd9, 0xa7, 0x73, 0x9f,
+ 0xbc, 0xbd, 0xc4, 0x97, 0xfe, 0xf1, 0x9e, 0x61, 0x25, 0x25, 0xd7, 0x45,
+ 0x17, 0x12, 0xcd, 0x49, 0x94, 0xf6, 0x3a, 0x0c, 0x03, 0xc2, 0x5b, 0x77,
+ 0x89, 0x1c, 0x78, 0x78, 0xa4, 0xa4, 0x7b, 0xc1, 0x69, 0x3c, 0x2c, 0x4e,
+ 0xb1, 0x92, 0x59, 0x4d, 0x84, 0x77, 0x10, 0x07, 0x8c, 0xad, 0x9b, 0xe2,
+ 0xb6, 0xc3, 0x78, 0x5c, 0xfe, 0x4b, 0x5d, 0x97, 0x9c, 0xcc, 0x56, 0x89,
+ 0x0d, 0x05, 0xee, 0xf8, 0x9d, 0x02, 0x4a, 0x77, 0xba, 0x06, 0x28, 0xb3,
+ 0x11, 0x9e, 0xde, 0x5a, 0x3f, 0x12, 0x17, 0x46, 0xe6, 0x81, 0x5b, 0x5b,
+ 0xc0, 0x67, 0x01, 0x67, 0xf4, 0xda, 0xbe, 0xc7, 0x5b, 0x01, 0xd0, 0x40,
+ 0x61, 0xff, 0x00, 0x5f, 0x8a, 0xd2, 0xdc, 0xdd, 0xc4, 0x78, 0xb6, 0x35,
+ 0x49, 0x4d, 0x3b, 0x4e, 0xcd, 0xbd, 0xe2, 0x42, 0xab, 0x7d, 0xce, 0x78,
+ 0x04, 0x9f, 0xd1, 0x8e, 0x1b, 0xe6, 0xac, 0x65, 0x93, 0xb4, 0x83, 0xc9,
+ 0xe3, 0xe2, 0xa8, 0xd4, 0xf7, 0xc6, 0xd7, 0x01, 0xbb, 0xbb, 0x52, 0x53,
+ 0x60, 0xbc, 0x96, 0xb5, 0xd1, 0x31, 0xf9, 0x3b, 0xa8, 0x9b, 0xb6, 0xcb,
+ 0xe2, 0x47, 0x82, 0x66, 0xbd, 0xad, 0x66, 0xa7, 0x50, 0x74, 0x52, 0x6c,
+ 0x49, 0x05, 0xba, 0x3b, 0xba, 0x4a, 0x6b, 0xb3, 0xa9, 0x07, 0xb7, 0xda,
+ 0xd2, 0xc3, 0x3a, 0xb4, 0x88, 0x53, 0xaf, 0xa8, 0x19, 0x8d, 0xa4, 0xa7,
+ 0x7d, 0x14, 0xc9, 0x9f, 0x69, 0x1f, 0x8a, 0x0f, 0xa7, 0xbf, 0xda, 0x01,
+ 0x68, 0xed, 0x1a, 0x14, 0x94, 0x9d, 0xd9, 0xed, 0x6e, 0x85, 0xb2, 0x9d,
+ 0xb9, 0x5e, 0x0c, 0x20, 0x7e, 0x08, 0x0d, 0xa6, 0xd9, 0xf1, 0x8f, 0x14,
+ 0x53, 0x4b, 0x88, 0xe3, 0xe2, 0x12, 0x52, 0x61, 0x92, 0xd7, 0xea, 0x75,
+ 0xf2, 0x4c, 0x6f, 0xc6, 0x76, 0x8e, 0x26, 0x3c, 0x21, 0x53, 0xb2, 0xb7,
+ 0xb3, 0x56, 0xb4, 0xe8, 0xa2, 0x0d, 0xaf, 0x69, 0x23, 0x51, 0xe2, 0x92,
+ 0x9d, 0x21, 0x5e, 0x2b, 0xa0, 0xb7, 0x9e, 0xd0, 0xad, 0x56, 0x31, 0xc4,
+ 0x02, 0x34, 0xf3, 0x58, 0x95, 0xe5, 0xd8, 0xc2, 0x19, 0x5b, 0x0b, 0xdd,
+ 0xc7, 0x1c, 0x79, 0xab, 0xf4, 0x57, 0x65, 0xc4, 0x0b, 0x0e, 0xd2, 0x35,
+ 0x84, 0x94, 0x8b, 0xeb, 0x2b, 0x88, 0xe9, 0x36, 0xb6, 0xb3, 0x01, 0xce,
+ 0x68, 0x68, 0xf0, 0xd5, 0x72, 0x46, 0xe7, 0x0a, 0xdc, 0x1d, 0xfb, 0xbf,
+ 0x88, 0x5d, 0x47, 0xd6, 0x06, 0xfa, 0x78, 0xad, 0x1f, 0x4c, 0x39, 0xc3,
+ 0x43, 0xe4, 0xb0, 0x1f, 0x5b, 0x2d, 0xaf, 0x6b, 0xa0, 0x69, 0xc0, 0xec,
+ 0x92, 0x9a, 0xb8, 0xce, 0x0d, 0x69, 0x91, 0x32, 0x24, 0x21, 0x58, 0xef,
+ 0x69, 0x13, 0xa2, 0xb2, 0xe0, 0xc0, 0xc0, 0xd2, 0x60, 0xb7, 0x4d, 0x15,
+ 0x63, 0x54, 0x87, 0x01, 0xac, 0x70, 0x92, 0x9d, 0xae, 0x84, 0x03, 0xeb,
+ 0x81, 0xd9, 0x74, 0x1e, 0x91, 0xf4, 0xe6, 0x17, 0x37, 0xd0, 0x6c, 0xd9,
+ 0xed, 0x3a, 0x10, 0x75, 0x5d, 0x6c, 0x8f, 0xb3, 0x6e, 0x49, 0x4b, 0x16,
+ 0xb4, 0x8d, 0xfb, 0x46, 0xe6, 0x70, 0xa9, 0xe5, 0x65, 0xb9, 0xa4, 0xc8,
+ 0x84, 0x7b, 0x2c, 0xf6, 0xb8, 0x6b, 0xe2, 0xb2, 0xb2, 0x43, 0x9f, 0x2d,
+ 0x07, 0xb7, 0xdc, 0x92, 0x90, 0xe4, 0xe4, 0xb8, 0xba, 0x00, 0xd4, 0xea,
+ 0x87, 0x51, 0x26, 0x49, 0xd5, 0xca, 0x0f, 0x07, 0x71, 0x1c, 0xc7, 0x7e,
+ 0xc8, 0x39, 0x96, 0xd9, 0x4e, 0x23, 0x9c, 0xc3, 0x0e, 0x3e, 0xd1, 0xf3,
+ 0xd1, 0x25, 0x25, 0xbe, 0xe0, 0xe3, 0xb7, 0xb2, 0xa9, 0x90, 0x25, 0xb0,
+ 0xdd, 0x07, 0x1f, 0x05, 0x56, 0xbb, 0x36, 0x45, 0x64, 0x3b, 0x7b, 0x44,
+ 0x19, 0x3a, 0x19, 0xee, 0x14, 0xdd, 0x75, 0x6e, 0x61, 0x6b, 0xad, 0x8f,
+ 0x74, 0xed, 0x12, 0x92, 0x90, 0xe4, 0x1d, 0xc1, 0xac, 0x68, 0x30, 0xd5,
+ 0x5e, 0xda, 0xf6, 0xd0, 0xf0, 0xf1, 0xab, 0xb8, 0x1f, 0x05, 0x69, 0xf6,
+ 0x37, 0x91, 0x26, 0x01, 0xfb, 0xd6, 0x56, 0x57, 0x50, 0x36, 0xbf, 0x6b,
+ 0x3f, 0x37, 0x42, 0x7c, 0x12, 0x52, 0x3e, 0x9c, 0x63, 0x22, 0xc7, 0xfe,
+ 0xeb, 0x63, 0xef, 0x44, 0x76, 0x75, 0xd8, 0xd9, 0x21, 0xf5, 0x19, 0x93,
+ 0xee, 0x61, 0xd4, 0x10, 0xaa, 0x63, 0xe4, 0xb2, 0xb3, 0x63, 0x4f, 0xd2,
+ 0x71, 0xe5, 0x3b, 0x58, 0x4b, 0xcd, 0x8f, 0xe0, 0x24, 0xa7, 0xbf, 0xe9,
+ 0xf9, 0xed, 0xca, 0xc7, 0x6d, 0xcd, 0x26, 0x36, 0xed, 0xd9, 0xc9, 0x04,
+ 0x91, 0x2a, 0xc3, 0xf1, 0xc3, 0xee, 0xf5, 0x5b, 0x0d, 0x74, 0x90, 0xd3,
+ 0xe0, 0x38, 0x3f, 0x7a, 0xe1, 0xba, 0x4f, 0x5c, 0x76, 0x16, 0x60, 0x0f,
+ 0x93, 0x8a, 0xf3, 0x16, 0x0f, 0xdd, 0xed, 0xb8, 0x2e, 0xe7, 0x16, 0xd6,
+ 0xb8, 0xfa, 0x92, 0x2c, 0x96, 0x80, 0xc0, 0xd3, 0xd8, 0xf7, 0x49, 0x4d,
+ 0x7e, 0xa8, 0x1c, 0xda, 0x6b, 0x6b, 0x09, 0x3b, 0xec, 0x0d, 0x2e, 0x1a,
+ 0x18, 0xe2, 0x25, 0x58, 0xa1, 0x9e, 0x95, 0x41, 0xa3, 0x40, 0x02, 0x17,
+ 0x52, 0xda, 0x7d, 0x06, 0x12, 0xd0, 0xe2, 0xed, 0xc0, 0x3f, 0xb1, 0x6e,
+ 0xa7, 0x5f, 0x13, 0xd9, 0x59, 0x61, 0x01, 0xa0, 0x78, 0x8e, 0xe9, 0x29,
+ 0x18, 0x61, 0x7b, 0xa5, 0xc8, 0xa6, 0x2b, 0x64, 0x04, 0xc1, 0xe0, 0x68,
+ 0x04, 0x38, 0xa1, 0x5c, 0xe7, 0xb5, 0xba, 0x98, 0x00, 0x70, 0x92, 0x9a,
+ 0xb9, 0x44, 0x9e, 0xfc, 0xa5, 0xd1, 0x70, 0xd9, 0x60, 0x76, 0x7b, 0x46,
+ 0xe6, 0xdb, 0x2d, 0x0e, 0xf0, 0xd8, 0xe2, 0xd5, 0x5f, 0x32, 0xc7, 0x6c,
+ 0x73, 0x19, 0xfc, 0xe3, 0xe5, 0xad, 0x8f, 0x12, 0xaf, 0xfd, 0x54, 0xc8,
+ 0xc7, 0x66, 0x03, 0x71, 0x5c, 0x77, 0x36, 0x36, 0xc7, 0x70, 0xf8, 0x87,
+ 0x34, 0xf9, 0xa4, 0xa7, 0x72, 0xe6, 0xb7, 0xd1, 0xd8, 0x04, 0xba, 0x34,
+ 0x43, 0xa7, 0x24, 0x3e, 0xa1, 0x32, 0x5e, 0xdd, 0x1f, 0xf1, 0x53, 0x16,
+ 0x31, 0xc7, 0x4e, 0x46, 0x84, 0x79, 0xaa, 0x39, 0x16, 0x8c, 0x6b, 0x3d,
+ 0x58, 0x3b, 0x5d, 0xa5, 0x83, 0xe3, 0xdd, 0x25, 0x36, 0x72, 0x1a, 0x2e,
+ 0x88, 0x90, 0x0f, 0x72, 0xa8, 0xb9, 0x9e, 0x9b, 0xf7, 0x13, 0x31, 0x00,
+ 0x8f, 0xe2, 0xac, 0x1c, 0xaa, 0xf7, 0x86, 0x12, 0x03, 0x1d, 0xab, 0x08,
+ 0x29, 0xad, 0x6d, 0x45, 0xd3, 0x3a, 0xb8, 0x41, 0x3e, 0x20, 0x24, 0xa5,
+ 0x1c, 0x7a, 0xc8, 0x0f, 0x00, 0x00, 0x62, 0x7e, 0x2a, 0xe5, 0x98, 0xed,
+ 0xd8, 0x36, 0xea, 0x63, 0x95, 0x52, 0xa8, 0xda, 0x01, 0x93, 0x04, 0x7c,
+ 0xc2, 0xd0, 0x04, 0x06, 0x69, 0xa9, 0x49, 0x4d, 0x56, 0x00, 0xea, 0xc6,
+ 0xe6, 0x80, 0xf1, 0xa1, 0x1e, 0x69, 0x3e, 0x82, 0x78, 0xd1, 0x46, 0xc7,
+ 0x16, 0xd8, 0x48, 0xfc, 0xed, 0x47, 0xc7, 0xba, 0x28, 0xb5, 0xb0, 0x09,
+ 0xd1, 0x25, 0x22, 0xf4, 0x60, 0xc4, 0x7c, 0x52, 0x15, 0x91, 0x11, 0xa1,
+ 0xf3, 0x4e, 0xfc, 0xba, 0x5a, 0x75, 0x2a, 0x96, 0x5f, 0x5b, 0xc1, 0xc6,
+ 0x6c, 0xdb, 0x6b, 0x5b, 0x1e, 0x25, 0x25, 0x37, 0x4d, 0x26, 0xc2, 0x5c,
+ 0x74, 0x68, 0xfc, 0x53, 0x86, 0xd2, 0xcd, 0x1c, 0x04, 0x78, 0x2e, 0x5b,
+ 0x33, 0xeb, 0x8d, 0x60, 0x11, 0x8b, 0x53, 0xef, 0x3e, 0x23, 0x41, 0xf8,
+ 0xac, 0x3b, 0xfe, 0xb3, 0x75, 0x5c, 0xc7, 0x9a, 0xd9, 0xba, 0xaf, 0x16,
+ 0x81, 0xee, 0xfc, 0x52, 0x53, 0xdf, 0xdb, 0xd4, 0xb0, 0x71, 0x41, 0x73,
+ 0xde, 0xd6, 0x00, 0xb0, 0xb2, 0x7e, 0xb8, 0xe2, 0x0c, 0x82, 0x71, 0x5a,
+ 0x6d, 0x00, 0x41, 0x3c, 0x09, 0x2b, 0x97, 0x6e, 0x16, 0x7e, 0x53, 0xa6,
+ 0xdd, 0xd1, 0xfb, 0xd6, 0x1d, 0xcb, 0x43, 0x1f, 0xa6, 0x51, 0x8a, 0xd2,
+ 0xe7, 0xbb, 0x7b, 0xdc, 0x3e, 0x8f, 0x29, 0x29, 0x26, 0x7f, 0x5b, 0xea,
+ 0x1d, 0x40, 0xb3, 0x7e, 0xda, 0xea, 0x69, 0x3b, 0x5a, 0x39, 0xd7, 0xc4,
+ 0xaa, 0xaf, 0xea, 0x0d, 0xc7, 0x6c, 0xd8, 0x64, 0xf9, 0x15, 0x3c, 0xac,
+ 0x57, 0x16, 0x7b, 0x5a, 0xe6, 0x11, 0xd8, 0xac, 0x96, 0x61, 0x43, 0xdc,
+ 0xe7, 0xea, 0xe0, 0xee, 0x4a, 0x4a, 0x76, 0xf1, 0x6e, 0x37, 0x56, 0xeb,
+ 0x5f, 0xed, 0x24, 0xfb, 0x5b, 0xe4, 0xad, 0xb3, 0x0d, 0xd6, 0x6d, 0x74,
+ 0xc3, 0xa7, 0x8e, 0xd0, 0xaa, 0xd2, 0x03, 0x18, 0xd6, 0x81, 0xc8, 0x57,
+ 0xf1, 0xac, 0x7b, 0x59, 0x04, 0x4c, 0x14, 0x94, 0x96, 0x8a, 0xc5, 0x4e,
+ 0x32, 0x21, 0xde, 0x2b, 0x7f, 0x7f, 0xf9, 0x3f, 0x74, 0xea, 0xb2, 0x31,
+ 0x18, 0x72, 0xac, 0x05, 0xdf, 0x46, 0x60, 0x2e, 0x8b, 0xec, 0x6d, 0xf4,
+ 0x3d, 0x3f, 0x24, 0x94, 0xd4, 0xb5, 0xae, 0xdb, 0xbb, 0xb0, 0x54, 0x72,
+ 0x09, 0xed, 0xf3, 0x2b, 0x5b, 0x28, 0x34, 0x37, 0x9d, 0x0a, 0xcc, 0xbd,
+ 0xa1, 0xcd, 0x1d, 0xa3, 0x84, 0x94, 0xd1, 0x89, 0x31, 0xf9, 0x16, 0x5f,
+ 0x5d, 0xb4, 0xb4, 0x51, 0x8e, 0x34, 0x16, 0x3e, 0x4c, 0x72, 0x00, 0xff,
+ 0x00, 0x6a, 0xd9, 0x15, 0xb8, 0x12, 0x67, 0x93, 0x21, 0x73, 0x9d, 0x62,
+ 0xed, 0xdd, 0x59, 0x95, 0x8d, 0x45, 0x6d, 0xfc, 0x4a, 0x4a, 0x4a, 0xf1,
+ 0x2c, 0x6e, 0xe1, 0x11, 0xa0, 0x70, 0xe5, 0x54, 0x78, 0xb9, 0xb6, 0x98,
+ 0x01, 0xe0, 0x6b, 0x33, 0xaf, 0xf9, 0xaa, 0xe3, 0x48, 0x20, 0x6e, 0xfa,
+ 0x23, 0xb7, 0x9a, 0xac, 0x59, 0xb9, 0xce, 0x70, 0xe3, 0xcd, 0x25, 0x34,
+ 0x3a, 0x86, 0x4b, 0xc0, 0x6b, 0x58, 0xd2, 0x2e, 0x77, 0xe6, 0xb7, 0xc1,
+ 0x66, 0x1b, 0x5f, 0xee, 0x31, 0xef, 0x3f, 0x49, 0x5b, 0xea, 0x39, 0x8f,
+ 0x07, 0xd3, 0x63, 0x88, 0xed, 0xa1, 0xed, 0xf1, 0x59, 0xd5, 0x87, 0x39,
+ 0xe0, 0x04, 0x94, 0xc4, 0x93, 0x33, 0xdd, 0x5a, 0x65, 0xce, 0xb2, 0xb0,
+ 0xce, 0xe1, 0x56, 0x7b, 0x61, 0xe5, 0xbe, 0x6b, 0x7f, 0xa3, 0x7d, 0x51,
+ 0xea, 0xb9, 0xc1, 0xb7, 0xbc, 0x0c, 0x6a, 0x09, 0xe6, 0xc9, 0x0f, 0x23,
+ 0xc4, 0x31, 0x25, 0x34, 0xa8, 0xc3, 0x17, 0xbc, 0x54, 0xd3, 0x0e, 0x3d,
+ 0xe2, 0x57, 0x63, 0xd0, 0xea, 0xb3, 0x0e, 0xb6, 0xd1, 0x6b, 0x8b, 0xda,
+ 0xc9, 0xd8, 0xe3, 0xc8, 0x1c, 0xc2, 0x25, 0x3d, 0x17, 0x13, 0x01, 0xa1,
+ 0x94, 0x0d, 0xce, 0xe5, 0xce, 0x3c, 0x92, 0x3c, 0x54, 0x9c, 0x2e, 0xf5,
+ 0x5a, 0x1a, 0x09, 0x24, 0x81, 0xb5, 0xa0, 0x9e, 0x52, 0x53, 0x51, 0x99,
+ 0x27, 0xa9, 0x75, 0x13, 0x73, 0xbf, 0x9a, 0xa7, 0xd9, 0x53, 0x41, 0x24,
+ 0x11, 0xdd, 0xfa, 0xf7, 0xec, 0xb7, 0xea, 0x2c, 0x0d, 0x9e, 0x57, 0x2f,
+ 0x4b, 0x5f, 0xd3, 0xac, 0x73, 0x1d, 0xf4, 0x03, 0xdc, 0x1a, 0xef, 0x9c,
+ 0xc1, 0x5b, 0xd8, 0x75, 0x67, 0xe5, 0xb7, 0x7d, 0x15, 0x38, 0x30, 0xeb,
+ 0xb9, 0xde, 0xd6, 0x9f, 0x84, 0xa4, 0xa6, 0xd0, 0x68, 0x7b, 0xa6, 0x61,
+ 0x55, 0xea, 0x16, 0x32, 0xa6, 0xf3, 0x2e, 0x2a, 0xf3, 0x7a, 0x56, 0x78,
+ 0x6e, 0x85, 0x81, 0xdf, 0x1f, 0xf6, 0x2a, 0x39, 0x9d, 0x23, 0xa9, 0x06,
+ 0x38, 0xfa, 0x7e, 0xab, 0x80, 0x30, 0x1a, 0x66, 0x52, 0x53, 0xc7, 0xf5,
+ 0x4e, 0xa3, 0x93, 0xfb, 0x42, 0xa6, 0x63, 0x02, 0xe3, 0x43, 0xb7, 0x98,
+ 0xee, 0xef, 0xdd, 0xfb, 0x96, 0x83, 0x59, 0x9a, 0xf7, 0xfd, 0xb2, 0x8a,
+ 0x5d, 0x8b, 0x6b, 0xe3, 0x7c, 0xb8, 0x6c, 0x3f, 0x24, 0x7e, 0x9f, 0xd1,
+ 0x32, 0x83, 0xc9, 0x7d, 0x0f, 0xf5, 0x89, 0x25, 0xdb, 0xc4, 0x09, 0x3e,
+ 0x24, 0xae, 0x8e, 0x9e, 0x9a, 0xca, 0x83, 0x5d, 0x91, 0x16, 0xb8, 0x11,
+ 0xb5, 0x83, 0xe8, 0x37, 0xe5, 0xdd, 0x25, 0x39, 0x14, 0x5d, 0xd7, 0xad,
+ 0xfa, 0x34, 0x8b, 0x88, 0x1f, 0xce, 0x02, 0x5b, 0x3f, 0x33, 0xa1, 0x56,
+ 0x0e, 0x37, 0xd6, 0x3b, 0xa1, 0xaf, 0x65, 0x2d, 0x6f, 0xf2, 0x9c, 0x49,
+ 0xfc, 0x02, 0xdb, 0x73, 0xc8, 0x21, 0xa3, 0x46, 0xf6, 0x00, 0x78, 0x22,
+ 0x6f, 0x1e, 0x09, 0x29, 0xe7, 0xd9, 0xd2, 0xfa, 0x9b, 0x3d, 0xbe, 0x93,
+ 0x1e, 0xd9, 0xd4, 0x07, 0x8d, 0x3e, 0x1b, 0xa1, 0x58, 0x14, 0x75, 0x76,
+ 0xff, 0x00, 0xda, 0x60, 0x40, 0xd1, 0xb1, 0x63, 0x78, 0x5a, 0xc2, 0xe6,
+ 0x06, 0xce, 0xe0, 0x02, 0x0b, 0x33, 0x2b, 0x04, 0xb9, 0xc7, 0x69, 0x9d,
+ 0x40, 0x33, 0x29, 0x29, 0xca, 0xb6, 0xfe, 0xab, 0x50, 0x1b, 0x70, 0x2e,
+ 0x77, 0x69, 0x6e, 0xd7, 0x0f, 0xc1, 0xca, 0x14, 0xe7, 0x75, 0xb7, 0xbb,
+ 0x6f, 0xa4, 0xca, 0xcf, 0x66, 0xd8, 0x48, 0x3f, 0x74, 0x2d, 0x5b, 0x7e,
+ 0xb0, 0x60, 0x52, 0xed, 0x8e, 0xb0, 0x7a, 0x87, 0x86, 0x37, 0xdc, 0x7e,
+ 0xe0, 0x89, 0x5f, 0x51, 0xc6, 0xcb, 0x67, 0xe9, 0x69, 0x7e, 0xc3, 0xdd,
+ 0xcc, 0x30, 0x92, 0x9c, 0x8b, 0x07, 0x5f, 0x27, 0x70, 0xaa, 0xa2, 0x07,
+ 0x21, 0xae, 0x33, 0xf2, 0x98, 0x50, 0xa3, 0xf4, 0xef, 0xf4, 0x73, 0x6d,
+ 0xca, 0xa2, 0xd2, 0x60, 0xb8, 0x30, 0x31, 0xa3, 0xe0, 0x48, 0x74, 0xad,
+ 0xa7, 0x62, 0x92, 0x3d, 0x6c, 0x17, 0x8b, 0x1b, 0xde, 0xa7, 0x1f, 0xfa,
+ 0x93, 0xdb, 0xe6, 0x9a, 0xbb, 0xaa, 0xc9, 0x6b, 0xaa, 0xb1, 0xbb, 0x2c,
+ 0x1a, 0x39, 0x8e, 0x10, 0xe0, 0x52, 0x53, 0xcd, 0x75, 0x0f, 0xab, 0xfd,
+ 0x56, 0x87, 0xfa, 0xb5, 0xe4, 0xbf, 0x3b, 0x1c, 0x6a, 0x5b, 0x3b, 0x2c,
+ 0x03, 0xe0, 0xdd, 0x0f, 0xc9, 0x4b, 0x1f, 0xea, 0xff, 0x00, 0x4a, 0xea,
+ 0x55, 0x02, 0xe6, 0x96, 0x59, 0xfb, 0xc0, 0xfb, 0x81, 0xf9, 0xae, 0xa6,
+ 0xa7, 0xc4, 0x31, 0xc7, 0x50, 0xb3, 0xf3, 0xba, 0x55, 0xa2, 0xf7, 0x66,
+ 0xf4, 0xf7, 0x6d, 0x71, 0xd6, 0xca, 0x7b, 0x38, 0xf8, 0x84, 0x94, 0xe0,
+ 0xfe, 0xc6, 0xbb, 0xa3, 0xda, 0x0d, 0xed, 0x17, 0x61, 0x3f, 0x4f, 0x59,
+ 0xa3, 0xe8, 0x4f, 0x1b, 0xc7, 0x65, 0xac, 0xde, 0x91, 0xd3, 0xf2, 0xc8,
+ 0x8a, 0xda, 0xe3, 0x12, 0x0c, 0x05, 0x7b, 0x0b, 0x3f, 0xd4, 0xaf, 0x65,
+ 0xc2, 0x47, 0x0e, 0x69, 0x1f, 0x81, 0x95, 0x57, 0x2b, 0xa5, 0x64, 0x51,
+ 0x67, 0xda, 0xfa, 0x35, 0x92, 0x00, 0xf7, 0x62, 0x3c, 0xfb, 0x4f, 0xf5,
+ 0x0f, 0x6f, 0x82, 0x4a, 0x61, 0x95, 0xf5, 0x67, 0x1b, 0x23, 0x1d, 0xd5,
+ 0x35, 0xee, 0xc6, 0x7f, 0xe6, 0x5d, 0x59, 0x88, 0x3e, 0x63, 0xb8, 0x47,
+ 0xe9, 0xfd, 0x1f, 0x07, 0xa6, 0x52, 0x03, 0x8b, 0x6c, 0xb6, 0x35, 0xb0,
+ 0x92, 0xe7, 0x1f, 0x39, 0x72, 0x16, 0x2f, 0x5a, 0x17, 0x8f, 0x43, 0x29,
+ 0xa6, 0x8b, 0xf5, 0x0e, 0xad, 0xfa, 0x19, 0x1e, 0x08, 0x7d, 0x45, 0x96,
+ 0xbb, 0x68, 0x61, 0x3b, 0x0e, 0x84, 0xf8, 0x04, 0x94, 0xd5, 0xeb, 0x46,
+ 0xa3, 0x69, 0xb6, 0x92, 0x3d, 0xda, 0x3c, 0x01, 0xf8, 0xac, 0x1b, 0xea,
+ 0x1e, 0x96, 0x83, 0x92, 0xb5, 0xec, 0xc1, 0xc8, 0x1a, 0xbb, 0x50, 0xaa,
+ 0xe5, 0x63, 0x9a, 0xf1, 0xd8, 0x22, 0x1d, 0x32, 0x92, 0x98, 0x57, 0x5b,
+ 0xfd, 0xae, 0x6b, 0x87, 0xb4, 0x0d, 0x15, 0x86, 0x17, 0x1f, 0xa2, 0xef,
+ 0x79, 0xfc, 0xd4, 0xec, 0xa7, 0x71, 0x68, 0x6b, 0x65, 0xc4, 0x49, 0x29,
+ 0x9c, 0xd8, 0xc9, 0x68, 0x1a, 0x39, 0xbc, 0xa4, 0xa7, 0x5b, 0xa5, 0x56,
+ 0xe6, 0x6d, 0x6b, 0xf9, 0x26, 0x4a, 0xe9, 0x67, 0xb7, 0xf2, 0x26, 0x3e,
+ 0x6b, 0x23, 0xa6, 0xb0, 0xbc, 0x34, 0xf7, 0x5a, 0x7b, 0xff, 0x00, 0x5b,
+ 0xf4, 0x7b, 0xfa, 0x5f, 0xc5, 0x25, 0x21, 0xc8, 0x63, 0x9e, 0x08, 0xf1,
+ 0x59, 0xb7, 0x35, 0xc2, 0x5b, 0xc9, 0x1c, 0x2d, 0xab, 0x62, 0x26, 0x27,
+ 0xc7, 0xc5, 0x52, 0x7d, 0x00, 0xb8, 0x3c, 0x80, 0x27, 0xc3, 0x94, 0x94,
+ 0xe6, 0xbd, 0x8e, 0xd8, 0xed, 0xde, 0xdd, 0x3b, 0x2e, 0x2a, 0xcf, 0xd3,
+ 0x75, 0x7b, 0x9c, 0x4e, 0x81, 0xd1, 0x3f, 0x05, 0xe8, 0x39, 0x34, 0x0f,
+ 0x49, 0xc0, 0xce, 0x83, 0xba, 0xf3, 0xc6, 0x07, 0x55, 0x91, 0x73, 0x87,
+ 0x0e, 0x79, 0x92, 0x3b, 0x6a, 0x92, 0x9d, 0x47, 0x35, 0xa1, 0x90, 0x08,
+ 0x33, 0xca, 0xa1, 0xd4, 0xf3, 0x59, 0x87, 0x4f, 0xa4, 0xc3, 0x37, 0x59,
+ 0xa8, 0x03, 0xb0, 0xf1, 0x51, 0xc8, 0xcc, 0x14, 0x30, 0xbd, 0xb2, 0xfb,
+ 0x4f, 0xd1, 0x6f, 0x82, 0x17, 0x4e, 0xe9, 0xdf, 0x6a, 0x79, 0xca, 0xcd,
+ 0x3b, 0xdc, 0xee, 0x18, 0x52, 0x53, 0x89, 0x0e, 0x7d, 0xbf, 0xa4, 0x92,
+ 0x49, 0xd5, 0x6d, 0xf4, 0xef, 0xab, 0xfd, 0x43, 0xa8, 0x34, 0xbf, 0x0a,
+ 0x92, 0xea, 0xdb, 0xa3, 0xac, 0x3e, 0xd6, 0xfd, 0xe5, 0x76, 0x3d, 0x2b,
+ 0x17, 0x0e, 0xa6, 0x86, 0x0a, 0x58, 0x7d, 0x48, 0x12, 0x06, 0xab, 0x7d,
+ 0xcd, 0xa7, 0x16, 0x96, 0xd0, 0xc0, 0xda, 0x99, 0xc0, 0x0d, 0xd0, 0x7e,
+ 0x09, 0x29, 0xc1, 0xe8, 0x3f, 0x55, 0x71, 0xba, 0x6b, 0x3d, 0x7b, 0xeb,
+ 0x6d, 0xd9, 0x8e, 0x32, 0x6d, 0x70, 0x90, 0xc1, 0xe0, 0xc9, 0xfc, 0xab,
+ 0x57, 0x21, 0xc5, 0xb7, 0x06, 0xf0, 0x1e, 0x22, 0x7f, 0x95, 0xe6, 0xae,
+ 0x3e, 0xfa, 0xe9, 0xab, 0xdf, 0xa9, 0x02, 0x00, 0x1a, 0x92, 0xb2, 0xf2,
+ 0xf2, 0xea, 0xb1, 0x81, 0x80, 0x1d, 0xee, 0x30, 0xe0, 0x92, 0x91, 0xde,
+ 0x6d, 0xa4, 0x12, 0x6a, 0x0e, 0x6f, 0x72, 0xc3, 0x0e, 0x8f, 0x83, 0x95,
+ 0x5a, 0xb2, 0xb7, 0x58, 0xd7, 0x63, 0x38, 0xee, 0x04, 0x68, 0x39, 0xe7,
+ 0xb8, 0x57, 0x31, 0xf0, 0xf2, 0xb3, 0x6a, 0x26, 0xd7, 0xed, 0xa4, 0x18,
+ 0x16, 0x11, 0xab, 0x80, 0xf0, 0xf1, 0x5a, 0x38, 0xdd, 0x37, 0x1a, 0x8f,
+ 0x75, 0x6c, 0x9b, 0x0f, 0x36, 0x3b, 0x57, 0x14, 0x94, 0xe7, 0x61, 0x74,
+ 0x5f, 0x57, 0x3a, 0xcc, 0xdc, 0xf0, 0x1e, 0xe7, 0x39, 0xc6, 0xaa, 0x07,
+ 0xd0, 0xad, 0xb3, 0x23, 0x77, 0x8b, 0x97, 0x40, 0x0c, 0x08, 0x1a, 0x0e,
+ 0xc1, 0x35, 0x75, 0x86, 0x0f, 0x3e, 0xe5, 0x38, 0x12, 0xe3, 0xe4, 0x92,
+ 0x97, 0x09, 0xc1, 0x4a, 0x13, 0xa4, 0xa5, 0x10, 0x0f, 0x2a, 0x22, 0xb6,
+ 0x9e, 0xca, 0x49, 0x24, 0xa4, 0x4e, 0xa8, 0x12, 0x83, 0x63, 0x68, 0x63,
+ 0x98, 0xcb, 0x23, 0x75, 0x86, 0x1a, 0x3b, 0x98, 0x56, 0xd0, 0x6d, 0xc5,
+ 0xaa, 0xe7, 0x07, 0xbc, 0x7b, 0x99, 0xf4, 0x1c, 0x39, 0x6c, 0xf8, 0x24,
+ 0xa6, 0xad, 0x9d, 0x2f, 0x0a, 0xd0, 0x7d, 0x4a, 0x5b, 0x60, 0xf0, 0x74,
+ 0x91, 0xf9, 0x50, 0x3f, 0x60, 0xf4, 0xad, 0xc4, 0x8c, 0x7d, 0xb3, 0xcb,
+ 0x43, 0x9c, 0x07, 0xdc, 0x1c, 0xad, 0xb1, 0xb9, 0x58, 0xce, 0x8b, 0x0f,
+ 0xad, 0x4f, 0x67, 0xf0, 0xf6, 0xff, 0x00, 0x58, 0x77, 0x56, 0x46, 0xc7,
+ 0x8d, 0x12, 0x53, 0x9b, 0x4f, 0x44, 0xe9, 0x54, 0x3f, 0xd4, 0xab, 0x19,
+ 0xad, 0x79, 0xef, 0xa9, 0xfc, 0xa5, 0x5d, 0x6d, 0x6d, 0x6f, 0x02, 0x21,
+ 0x49, 0xde, 0xcf, 0xa5, 0xc7, 0x8a, 0x98, 0x00, 0x8d, 0x12, 0x53, 0x5e,
+ 0xcc, 0x70, 0x5d, 0xea, 0xd4, 0x76, 0x5b, 0xe3, 0xd9, 0xde, 0x4e, 0x0a,
+ 0xa6, 0x4e, 0x0f, 0xdb, 0xd9, 0xb8, 0x38, 0xe3, 0xe6, 0xd5, 0xa3, 0x6c,
+ 0x6f, 0x23, 0xc0, 0x3b, 0xf7, 0x9a, 0x56, 0x98, 0x6a, 0x85, 0x95, 0x93,
+ 0xef, 0x64, 0x0b, 0x1b, 0xc1, 0xf1, 0x1e, 0x05, 0x25, 0x3c, 0xfe, 0x37,
+ 0xed, 0x09, 0x35, 0xe4, 0xb7, 0xf4, 0x8c, 0x3b, 0x4b, 0x9b, 0xde, 0x3b,
+ 0xad, 0x4c, 0x52, 0xf8, 0x2d, 0x77, 0x2d, 0x46, 0x17, 0x52, 0xf0, 0x4b,
+ 0xa1, 0xaf, 0x1a, 0x39, 0xa7, 0x90, 0x54, 0x2f, 0xba, 0x9c, 0x5a, 0x8d,
+ 0x8e, 0xfa, 0x4e, 0xd0, 0x34, 0x72, 0x4f, 0x82, 0x4a, 0x47, 0x7d, 0x38,
+ 0xce, 0xb6, 0x01, 0xdb, 0x7b, 0xc7, 0x03, 0xf3, 0xbe, 0x2a, 0x96, 0xfc,
+ 0x9c, 0x77, 0x1d, 0xbc, 0x0d, 0x08, 0x2a, 0xc6, 0x0d, 0x17, 0x3a, 0xc7,
+ 0x65, 0x5a, 0x3d, 0xee, 0xe0, 0x78, 0x0f, 0x05, 0x66, 0xda, 0xab, 0x79,
+ 0x9d, 0x37, 0x1d, 0x08, 0x3e, 0x29, 0x29, 0xcc, 0xc9, 0xa7, 0x0b, 0xaa,
+ 0xd7, 0xb6, 0xef, 0x65, 0xc3, 0xe8, 0xd8, 0xd3, 0x0f, 0x69, 0x54, 0xeb,
+ 0xb7, 0x2f, 0xa6, 0xb8, 0x53, 0x9e, 0x3d, 0x4a, 0x26, 0x2b, 0xca, 0x68,
+ 0xf6, 0x9f, 0x27, 0x8f, 0xcd, 0x2b, 0x5a, 0xdc, 0x2a, 0xdd, 0xee, 0xd1,
+ 0xae, 0x1c, 0x10, 0xa5, 0x5d, 0x6e, 0xd8, 0x6b, 0xb4, 0x0b, 0x18, 0xe1,
+ 0x04, 0x1d, 0x41, 0x07, 0xc5, 0x25, 0x20, 0x01, 0x96, 0x06, 0xc1, 0x05,
+ 0xae, 0xe1, 0x63, 0x75, 0x6a, 0xa2, 0xd8, 0xec, 0x16, 0xbd, 0xb8, 0x16,
+ 0x60, 0x7e, 0x9f, 0x0c, 0x1b, 0x31, 0xf9, 0x75, 0x1c, 0x96, 0x79, 0xb2,
+ 0x7b, 0x2c, 0xec, 0xe2, 0xdb, 0xef, 0x2f, 0x1c, 0x13, 0xf8, 0x24, 0xa4,
+ 0x55, 0x63, 0xb8, 0xd6, 0x20, 0xec, 0x31, 0xf4, 0x95, 0x40, 0x1d, 0xf6,
+ 0xb8, 0x82, 0xe8, 0x30, 0x1c, 0xae, 0x5a, 0xd9, 0xd0, 0x02, 0xd0, 0xd1,
+ 0xf2, 0x2a, 0xf7, 0x4b, 0xc4, 0xae, 0xd8, 0x76, 0x84, 0xa4, 0xa7, 0x5b,
+ 0xa6, 0x53, 0xb6, 0xb0, 0x48, 0x88, 0x0a, 0xa7, 0xda, 0x2d, 0xff, 0x00,
+ 0x9d, 0xdf, 0x65, 0xd7, 0xd3, 0xfb, 0x1f, 0xa9, 0xe5, 0xf4, 0xa2, 0x56,
+ 0xcd, 0x6c, 0x0c, 0x60, 0x68, 0xec, 0x9b, 0xd1, 0xab, 0xd6, 0xf5, 0xf6,
+ 0x0f, 0x5b, 0x6e, 0xcd, 0xf1, 0xae, 0xd9, 0xdd, 0xb6, 0x7c, 0x25, 0x25,
+ 0x3f, 0xff, 0xd9
+};
+size_t demo_001_jpg_len = 18375;
+
+const uint8_t demo_002_jpg[] = {
+ 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01,
+ 0x02, 0x00, 0x00, 0x64, 0x00, 0x64, 0x00, 0x00, 0xff, 0xec, 0x00, 0x59,
+ 0x44, 0x75, 0x63, 0x6b, 0x79, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00,
+ 0x1e, 0x00, 0x02, 0x00, 0x44, 0x00, 0x00, 0x00, 0x20, 0x00, 0x46, 0x00,
+ 0x53, 0x00, 0x41, 0x00, 0x2f, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00,
+ 0x34, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x38, 0x00,
+ 0x62, 0x00, 0x33, 0x00, 0x34, 0x00, 0x37, 0x00, 0x30, 0x00, 0x30, 0x00,
+ 0x5c, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00, 0x34, 0x00, 0x37, 0x00,
+ 0x35, 0x00, 0x39, 0x00, 0x61, 0x00, 0x2e, 0x00, 0x74, 0x00, 0x69, 0x00,
+ 0x66, 0x00, 0x00, 0xff, 0xee, 0x00, 0x0e, 0x41, 0x64, 0x6f, 0x62, 0x65,
+ 0x00, 0x64, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xdb, 0x00, 0x84, 0x00,
+ 0x10, 0x0b, 0x0b, 0x0b, 0x0c, 0x0b, 0x10, 0x0c, 0x0c, 0x10, 0x17, 0x0f,
+ 0x0d, 0x0f, 0x17, 0x1b, 0x14, 0x10, 0x10, 0x14, 0x1b, 0x1f, 0x17, 0x17,
+ 0x17, 0x17, 0x17, 0x1f, 0x1e, 0x17, 0x1a, 0x1a, 0x1a, 0x1a, 0x17, 0x1e,
+ 0x1e, 0x23, 0x25, 0x27, 0x25, 0x23, 0x1e, 0x2f, 0x2f, 0x33, 0x33, 0x2f,
+ 0x2f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x01, 0x11, 0x0f, 0x0f, 0x11, 0x13, 0x11, 0x15,
+ 0x12, 0x12, 0x15, 0x14, 0x11, 0x14, 0x11, 0x14, 0x1a, 0x14, 0x16, 0x16,
+ 0x14, 0x1a, 0x26, 0x1a, 0x1a, 0x1c, 0x1a, 0x1a, 0x26, 0x30, 0x23, 0x1e,
+ 0x1e, 0x1e, 0x1e, 0x23, 0x30, 0x2b, 0x2e, 0x27, 0x27, 0x27, 0x2e, 0x2b,
+ 0x35, 0x35, 0x30, 0x30, 0x35, 0x35, 0x40, 0x40, 0x3f, 0x40, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xff, 0xc0, 0x00,
+ 0x11, 0x08, 0x01, 0x90, 0x01, 0x2c, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11,
+ 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x01, 0x3f, 0x00, 0x00, 0x01, 0x05,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x03, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
+ 0x0b, 0x01, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x04, 0x05,
+ 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x01, 0x04, 0x01, 0x03,
+ 0x02, 0x04, 0x02, 0x05, 0x07, 0x06, 0x08, 0x05, 0x03, 0x0c, 0x33, 0x01,
+ 0x00, 0x02, 0x11, 0x03, 0x04, 0x21, 0x12, 0x31, 0x05, 0x41, 0x51, 0x61,
+ 0x13, 0x22, 0x71, 0x81, 0x32, 0x06, 0x14, 0x91, 0xa1, 0xb1, 0x42, 0x23,
+ 0x24, 0x15, 0x52, 0xc1, 0x62, 0x33, 0x34, 0x72, 0x82, 0xd1, 0x43, 0x07,
+ 0x25, 0x92, 0x53, 0xf0, 0xe1, 0xf1, 0x63, 0x73, 0x35, 0x16, 0xa2, 0xb2,
+ 0x83, 0x26, 0x44, 0x93, 0x54, 0x64, 0x45, 0xc2, 0xa3, 0x74, 0x36, 0x17,
+ 0xd2, 0x55, 0xe2, 0x65, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3,
+ 0x46, 0x27, 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5,
+ 0xb5, 0xc5, 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6,
+ 0xc6, 0xd6, 0xe6, 0xf6, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7,
+ 0xb7, 0xc7, 0xd7, 0xe7, 0xf7, 0x11, 0x00, 0x02, 0x02, 0x01, 0x02, 0x04,
+ 0x04, 0x03, 0x04, 0x05, 0x06, 0x07, 0x07, 0x06, 0x05, 0x35, 0x01, 0x00,
+ 0x02, 0x11, 0x03, 0x21, 0x31, 0x12, 0x04, 0x41, 0x51, 0x61, 0x71, 0x22,
+ 0x13, 0x05, 0x32, 0x81, 0x91, 0x14, 0xa1, 0xb1, 0x42, 0x23, 0xc1, 0x52,
+ 0xd1, 0xf0, 0x33, 0x24, 0x62, 0xe1, 0x72, 0x82, 0x92, 0x43, 0x53, 0x15,
+ 0x63, 0x73, 0x34, 0xf1, 0x25, 0x06, 0x16, 0xa2, 0xb2, 0x83, 0x07, 0x26,
+ 0x35, 0xc2, 0xd2, 0x44, 0x93, 0x54, 0xa3, 0x17, 0x64, 0x45, 0x55, 0x36,
+ 0x74, 0x65, 0xe2, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, 0x46,
+ 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, 0xb5, 0xc5,
+ 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6,
+ 0xe6, 0xf6, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, 0xb7,
+ 0xc7, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11,
+ 0x00, 0x3f, 0x00, 0xe4, 0x98, 0x18, 0x46, 0xe2, 0xc1, 0x1f, 0x04, 0x4f,
+ 0x42, 0x98, 0x00, 0xb5, 0xa3, 0xce, 0x13, 0xed, 0xed, 0x32, 0xa4, 0x5a,
+ 0xdf, 0xce, 0x3f, 0x24, 0x94, 0x88, 0xb7, 0x15, 0xae, 0x82, 0x1b, 0x03,
+ 0xcb, 0xfd, 0x89, 0xc5, 0x58, 0xee, 0x98, 0x63, 0x75, 0xf2, 0xff, 0x00,
+ 0x62, 0x99, 0x6b, 0x65, 0x28, 0x06, 0x07, 0x1e, 0x32, 0x92, 0x98, 0x7a,
+ 0x34, 0x03, 0x06, 0xb1, 0xf1, 0x84, 0x8d, 0x38, 0xdd, 0x98, 0x11, 0x0e,
+ 0xde, 0xe5, 0x36, 0x9e, 0x29, 0x29, 0x08, 0x66, 0x39, 0xe6, 0xa8, 0x6f,
+ 0x67, 0x24, 0xea, 0xf1, 0xe3, 0x46, 0x6b, 0xf1, 0x28, 0xa1, 0xfb, 0x19,
+ 0x65, 0x64, 0x48, 0x7e, 0xbf, 0x34, 0x32, 0xe6, 0xc7, 0x74, 0x94, 0x84,
+ 0xb6, 0xbf, 0xdd, 0x8f, 0x99, 0xfe, 0xf4, 0x37, 0x00, 0x78, 0x9f, 0xbc,
+ 0xa3, 0x17, 0x0e, 0x23, 0x44, 0xd2, 0xde, 0x7b, 0x77, 0x49, 0x48, 0x58,
+ 0xd7, 0xd8, 0xed, 0xad, 0x92, 0x7e, 0x25, 0x5a, 0xa7, 0x1e, 0xb1, 0x2c,
+ 0xb6, 0x4b, 0xfb, 0xea, 0x44, 0x28, 0x57, 0x5b, 0xea, 0xb3, 0x79, 0x1e,
+ 0xce, 0x49, 0x02, 0x74, 0x47, 0x6d, 0xed, 0xaf, 0x7d, 0x85, 0xd2, 0xdd,
+ 0x35, 0xee, 0x52, 0x52, 0x23, 0x4b, 0x1b, 0x68, 0x02, 0x79, 0x10, 0x64,
+ 0xae, 0x8d, 0x94, 0x8b, 0x00, 0x69, 0xe3, 0x8f, 0xc0, 0xae, 0x6d, 0xb6,
+ 0x9b, 0xf2, 0x1a, 0xee, 0xdb, 0x84, 0x0f, 0x20, 0xba, 0xe6, 0x56, 0xe1,
+ 0x58, 0xb2, 0x43, 0x20, 0x80, 0x67, 0xbf, 0x60, 0x92, 0x9c, 0xde, 0xa6,
+ 0xcb, 0x06, 0x09, 0x63, 0x80, 0xd9, 0x20, 0xb4, 0xce, 0xb0, 0x42, 0xe5,
+ 0x6e, 0x11, 0x6b, 0x87, 0x81, 0x5d, 0x87, 0x5c, 0x04, 0x63, 0xfa, 0x7f,
+ 0xcb, 0x6f, 0xfd, 0xf9, 0x72, 0x19, 0x02, 0x2f, 0x78, 0xf3, 0x29, 0x29,
+ 0x1a, 0x49, 0x24, 0x92, 0x94, 0x92, 0x49, 0x24, 0xa5, 0x24, 0x92, 0x49,
+ 0x29, 0x49, 0x24, 0x92, 0x4a, 0x52, 0x49, 0x24, 0x92, 0x9d, 0x4e, 0x90,
+ 0x76, 0x9d, 0xc0, 0x49, 0x21, 0xc3, 0xf2, 0x2d, 0x10, 0xf3, 0xab, 0x5c,
+ 0x0c, 0xfd, 0xd0, 0xaa, 0xf4, 0x40, 0x5a, 0xcd, 0xe1, 0xbb, 0x89, 0xdc,
+ 0x3e, 0x1a, 0x8d, 0x56, 0x8d, 0xb4, 0x96, 0x43, 0x89, 0x9f, 0x12, 0x92,
+ 0x9c, 0x8c, 0xaa, 0x98, 0xeb, 0x9c, 0x48, 0xfc, 0x4a, 0x17, 0xa3, 0x5f,
+ 0x81, 0xfb, 0xca, 0xb3, 0x94, 0x22, 0xe7, 0x0e, 0x62, 0x10, 0xbe, 0x09,
+ 0x29, 0x80, 0xa2, 0xb3, 0xe3, 0xf7, 0x94, 0xbd, 0x0a, 0xfb, 0x13, 0xf7,
+ 0x95, 0x28, 0x4e, 0x20, 0xf0, 0x92, 0x98, 0x9a, 0x19, 0xd8, 0xbb, 0xef,
+ 0x4c, 0x71, 0xda, 0x1b, 0x3b, 0x8f, 0xde, 0x88, 0x9b, 0x43, 0xdd, 0x25,
+ 0x23, 0xf4, 0x07, 0x89, 0xfb, 0xd3, 0x1a, 0x23, 0xf3, 0x8f, 0x97, 0x08,
+ 0xba, 0xf7, 0xe3, 0xb1, 0x4d, 0x27, 0xc5, 0x25, 0x23, 0xf4, 0x3f, 0x94,
+ 0x7f, 0x04, 0xde, 0x83, 0xbf, 0x78, 0xfe, 0x08, 0xa1, 0xc4, 0x19, 0x94,
+ 0xa4, 0xf8, 0xa4, 0xa4, 0xdb, 0x72, 0x4b, 0x60, 0x52, 0xef, 0x8c, 0x0f,
+ 0xef, 0x51, 0xf4, 0xae, 0x3a, 0x9a, 0xac, 0x9f, 0x92, 0xdc, 0x01, 0xa3,
+ 0x95, 0x0b, 0x40, 0x0d, 0xd3, 0xef, 0x94, 0x94, 0xe3, 0x0a, 0x2f, 0xff,
+ 0x00, 0x47, 0x69, 0xfb, 0x92, 0xf4, 0xed, 0x1c, 0xd4, 0xf9, 0xf3, 0x5a,
+ 0x75, 0x3e, 0x49, 0x04, 0xeb, 0xe6, 0x54, 0x6e, 0x30, 0x67, 0xe6, 0x61,
+ 0x25, 0x39, 0x8e, 0xaf, 0x22, 0x49, 0xd8, 0xf1, 0x3e, 0x49, 0x0f, 0x5a,
+ 0x3e, 0x83, 0xbf, 0xcd, 0x56, 0x28, 0xb6, 0xcc, 0x8c, 0x9d, 0xa0, 0x0f,
+ 0x49, 0xbc, 0xf9, 0xad, 0x4f, 0x4c, 0x06, 0xfb, 0x5a, 0x07, 0x64, 0x94,
+ 0xe1, 0x96, 0xda, 0x7f, 0xc1, 0xbf, 0xfc, 0xd2, 0x9b, 0x65, 0x91, 0xfc,
+ 0xdb, 0xff, 0x00, 0xcd, 0x2b, 0x67, 0xd2, 0xda, 0x46, 0xe2, 0x00, 0xec,
+ 0x9c, 0x30, 0x4f, 0xb9, 0x25, 0x38, 0x8e, 0x63, 0xb4, 0xf6, 0x3b, 0xe3,
+ 0xb5, 0xca, 0x22, 0xbf, 0xe4, 0x3f, 0xfc, 0xd7, 0x7f, 0x72, 0xe8, 0x4b,
+ 0x2b, 0x00, 0x1d, 0xb0, 0x42, 0x11, 0x68, 0x07, 0x50, 0x00, 0xec, 0x92,
+ 0x9c, 0xa6, 0xdc, 0x1a, 0x20, 0xb5, 0xd1, 0xc4, 0x6d, 0x33, 0xf9, 0x14,
+ 0x6c, 0x65, 0x2f, 0x97, 0x16, 0x99, 0x3d, 0xf6, 0x9f, 0xee, 0x5a, 0xc0,
+ 0x01, 0xa0, 0xf9, 0xa9, 0x08, 0x00, 0xc3, 0x74, 0x09, 0x29, 0xc5, 0xa9,
+ 0x95, 0xd7, 0x63, 0x75, 0x23, 0xdc, 0x39, 0x69, 0x1d, 0xfe, 0x0b, 0xb5,
+ 0x14, 0x97, 0xd2, 0xe6, 0x91, 0x20, 0xc1, 0x8f, 0x86, 0xab, 0x9f, 0xba,
+ 0xce, 0x00, 0x3d, 0xc7, 0xe5, 0x5d, 0x46, 0x3b, 0x5c, 0x5a, 0x5a, 0x34,
+ 0xd0, 0xeb, 0xf2, 0x49, 0x4e, 0x37, 0x5b, 0x05, 0xd8, 0xb5, 0xbc, 0x0f,
+ 0xa5, 0x63, 0x7f, 0x21, 0x5c, 0x6e, 0x58, 0x2d, 0xca, 0xb4, 0x1e, 0x43,
+ 0x8a, 0xed, 0xfa, 0xa5, 0x66, 0xd6, 0x63, 0x63, 0xcf, 0xe9, 0x1c, 0xe6,
+ 0x41, 0xed, 0x30, 0x57, 0x1b, 0xd5, 0x6a, 0x75, 0x3d, 0x4b, 0x26, 0xa7,
+ 0x10, 0x5c, 0xc7, 0x90, 0x48, 0xe1, 0x25, 0x35, 0x12, 0x49, 0x24, 0x94,
+ 0xa4, 0x92, 0x49, 0x25, 0x29, 0x24, 0x92, 0x49, 0x4a, 0x49, 0x24, 0x92,
+ 0x52, 0x92, 0x49, 0x24, 0x94, 0xf4, 0x3f, 0x57, 0xd9, 0x34, 0x6e, 0xe0,
+ 0x80, 0xf8, 0xfc, 0x16, 0xab, 0xab, 0x69, 0x6b, 0x77, 0x6b, 0xc2, 0xa3,
+ 0xf5, 0x76, 0xb0, 0xfc, 0x31, 0x3a, 0x6a, 0xe3, 0xf8, 0x85, 0xa9, 0x7d,
+ 0x60, 0xb0, 0x47, 0x22, 0x00, 0x3f, 0x24, 0x94, 0xf3, 0xb9, 0xdb, 0xce,
+ 0x4b, 0xdc, 0x1a, 0x43, 0x01, 0xdb, 0xc1, 0x3c, 0x68, 0xab, 0x3c, 0xb8,
+ 0x8f, 0xa2, 0xe1, 0xe5, 0xb5, 0xca, 0xe7, 0x54, 0xb2, 0xc6, 0x66, 0x3a,
+ 0xb0, 0x7d, 0xbe, 0xd3, 0x1d, 0xa6, 0x10, 0x01, 0x76, 0xd9, 0xd7, 0x54,
+ 0x94, 0x88, 0x3c, 0x40, 0x99, 0xfb, 0x8f, 0xf7, 0x27, 0x16, 0xb0, 0x1d,
+ 0x5d, 0xf8, 0x14, 0x56, 0x38, 0x03, 0x2e, 0x6e, 0xbf, 0x18, 0x4e, 0xfa,
+ 0x58, 0x61, 0xcd, 0xd3, 0xe2, 0x92, 0x90, 0x1b, 0x6b, 0x07, 0xe9, 0x0f,
+ 0x9c, 0xa6, 0x16, 0xd5, 0x11, 0xbc, 0x04, 0x43, 0x5b, 0x8f, 0x6f, 0x9f,
+ 0x75, 0x03, 0xea, 0x0e, 0x35, 0x49, 0x4b, 0x7a, 0xd5, 0xfe, 0xf8, 0x3f,
+ 0x12, 0x9c, 0x5b, 0x57, 0xef, 0x37, 0xef, 0x4b, 0x52, 0x75, 0x10, 0xac,
+ 0x57, 0x53, 0x03, 0x01, 0x73, 0x41, 0x3e, 0x30, 0x12, 0x53, 0x5f, 0xd4,
+ 0xa8, 0xfe, 0x73, 0x47, 0xcc, 0x26, 0xdf, 0x57, 0xef, 0x0f, 0xbc, 0x29,
+ 0x8a, 0x01, 0xb3, 0x76, 0xd0, 0x5b, 0xe0, 0xac, 0x7a, 0x54, 0xec, 0xfa,
+ 0x29, 0x29, 0xd6, 0xb2, 0x4d, 0x91, 0x06, 0x13, 0x58, 0x34, 0x20, 0xf7,
+ 0xe1, 0x67, 0x32, 0xee, 0xa9, 0x64, 0xef, 0x7b, 0x5a, 0xe0, 0x78, 0xf4,
+ 0xc7, 0xf0, 0x46, 0x73, 0x73, 0xda, 0xc0, 0x4d, 0xed, 0x3e, 0x42, 0xb1,
+ 0x13, 0xf7, 0xa4, 0xa6, 0x74, 0xfb, 0x2c, 0x20, 0x81, 0x07, 0xc5, 0x36,
+ 0x5c, 0xfa, 0x6e, 0x00, 0xeb, 0x1a, 0xf9, 0xaa, 0xbe, 0xb6, 0x63, 0x49,
+ 0xf7, 0xb4, 0xcf, 0x8b, 0x27, 0xf8, 0xa8, 0x3a, 0xcc, 0xb7, 0x03, 0x2e,
+ 0x6c, 0x1e, 0x4e, 0xcf, 0xf6, 0xa4, 0xa6, 0xde, 0x13, 0xf1, 0xe9, 0xa8,
+ 0x17, 0xb8, 0x31, 0xc7, 0xb7, 0x8a, 0xd3, 0x63, 0x98, 0xf6, 0xee, 0x69,
+ 0x99, 0xf9, 0xac, 0x16, 0xb7, 0x2e, 0x61, 0x8e, 0x69, 0xf2, 0xda, 0x3f,
+ 0x8a, 0xb3, 0x41, 0xce, 0x6c, 0x6c, 0x2c, 0x6c, 0xfe, 0x6e, 0xc3, 0xfd,
+ 0xe9, 0x29, 0xd2, 0xb0, 0x37, 0xf3, 0xb8, 0xe5, 0x44, 0x01, 0xc8, 0x41,
+ 0x35, 0xe7, 0xf0, 0x5f, 0x51, 0x27, 0xf9, 0x2e, 0xff, 0x00, 0xc9, 0x27,
+ 0x15, 0xe7, 0xc7, 0xd2, 0xa8, 0x7f, 0x65, 0xff, 0x00, 0xf9, 0x24, 0x94,
+ 0xd8, 0x03, 0x73, 0x7f, 0x04, 0x22, 0xce, 0xc5, 0x0f, 0xfc, 0xa0, 0xce,
+ 0x45, 0x31, 0xf0, 0x7f, 0xfe, 0x49, 0x39, 0xb7, 0x35, 0xd0, 0xdd, 0xb5,
+ 0x99, 0xf0, 0x0f, 0x1f, 0xc5, 0x25, 0x2b, 0xd3, 0x93, 0xed, 0x33, 0x07,
+ 0x59, 0xec, 0xa6, 0x18, 0x75, 0xd7, 0xe4, 0x50, 0xdd, 0x66, 0x63, 0x01,
+ 0x86, 0xd6, 0x5c, 0x01, 0x96, 0xcb, 0xa6, 0x07, 0x72, 0x82, 0xcb, 0xf3,
+ 0xad, 0x67, 0xa8, 0xda, 0x99, 0x1e, 0x65, 0xdf, 0xdc, 0x92, 0x99, 0x5e,
+ 0xd9, 0x70, 0x24, 0xf7, 0x1f, 0x95, 0x75, 0xb8, 0xb1, 0x12, 0x74, 0x1f,
+ 0xec, 0x5c, 0x7b, 0x06, 0x55, 0xcf, 0x12, 0x18, 0x35, 0xd6, 0x5c, 0xe1,
+ 0xfc, 0x17, 0x61, 0x4e, 0x95, 0xfc, 0x52, 0x53, 0x89, 0xd4, 0xae, 0x0c,
+ 0xbe, 0x97, 0x91, 0x3b, 0x2d, 0x68, 0x8f, 0x1d, 0xbb, 0x97, 0x21, 0xd6,
+ 0x1e, 0xdb, 0x3a, 0xa6, 0x4b, 0xd8, 0x08, 0x6b, 0xac, 0x24, 0x02, 0xba,
+ 0xce, 0xb2, 0xd7, 0xb2, 0xe0, 0x23, 0x4d, 0xec, 0x77, 0xdf, 0xb9, 0x71,
+ 0xf9, 0xff, 0x00, 0xd3, 0x2e, 0xfe, 0xb9, 0x49, 0x4d, 0x74, 0x92, 0x49,
+ 0x25, 0x29, 0x24, 0x92, 0x49, 0x4a, 0x49, 0x24, 0x92, 0x52, 0x92, 0x49,
+ 0x24, 0x94, 0xa4, 0x92, 0x49, 0x25, 0x3d, 0x77, 0xd5, 0xb6, 0x6e, 0xc0,
+ 0x6f, 0x6f, 0xa7, 0xf9, 0x42, 0xd5, 0xb9, 0x90, 0x01, 0xf1, 0xe4, 0x2c,
+ 0xef, 0xab, 0x5a, 0x74, 0xfa, 0xbf, 0x94, 0x5e, 0x3f, 0x15, 0xb1, 0x7b,
+ 0x7d, 0xa0, 0x69, 0xf0, 0x49, 0x4f, 0x29, 0xd5, 0x58, 0x5f, 0x9e, 0xfd,
+ 0xa0, 0x98, 0x0d, 0xe3, 0xb6, 0x88, 0x4c, 0xa5, 0xd1, 0xa8, 0xd3, 0xe0,
+ 0xac, 0xf5, 0x26, 0x5b, 0xfb, 0x41, 0xc1, 0x8f, 0xda, 0x5c, 0x07, 0x03,
+ 0xc9, 0x41, 0x98, 0x79, 0x44, 0x97, 0x7a, 0xa2, 0x23, 0xb8, 0x3f, 0xde,
+ 0x92, 0x98, 0xb6, 0xa6, 0xf0, 0x44, 0xfc, 0x94, 0xc5, 0x40, 0x0d, 0x1a,
+ 0x63, 0xcd, 0x23, 0x8d, 0x93, 0x31, 0xea, 0x00, 0x07, 0x06, 0x21, 0x07,
+ 0xec, 0xe4, 0xb8, 0x87, 0xe4, 0xb5, 0xce, 0x1f, 0x9a, 0x5d, 0xcf, 0xe2,
+ 0x92, 0x99, 0x3a, 0xb1, 0x32, 0x1a, 0x7f, 0x2a, 0x1b, 0x81, 0x27, 0x88,
+ 0x56, 0x86, 0x26, 0x4b, 0x84, 0x07, 0x34, 0x0f, 0x11, 0x2a, 0x36, 0x61,
+ 0x64, 0xed, 0xd4, 0xb3, 0xef, 0x29, 0x29, 0xa6, 0xe6, 0xc9, 0x11, 0xa2,
+ 0x33, 0x24, 0xb7, 0x4d, 0x74, 0x85, 0x30, 0xd7, 0xfa, 0x7e, 0x9f, 0xa6,
+ 0xdd, 0xdf, 0xbd, 0xaf, 0x03, 0xe4, 0x98, 0x55, 0x63, 0x41, 0x1b, 0x06,
+ 0xbe, 0x67, 0xfb, 0x92, 0x52, 0x99, 0x3c, 0x71, 0xe4, 0xa7, 0x27, 0x6c,
+ 0x26, 0x14, 0xdd, 0xfb, 0x83, 0xe1, 0x3f, 0xec, 0x4d, 0xe9, 0xd9, 0xba,
+ 0x36, 0x8e, 0x63, 0xe9, 0x1f, 0xee, 0x49, 0x4d, 0xec, 0xa7, 0xc3, 0x4b,
+ 0x81, 0x01, 0xce, 0xe7, 0xcd, 0x03, 0x18, 0xe4, 0x5a, 0xc3, 0x20, 0x32,
+ 0xb0, 0x7e, 0x9b, 0xbf, 0x84, 0xa3, 0x38, 0x9f, 0x88, 0x4e, 0x1c, 0x36,
+ 0x8d, 0x3e, 0xe4, 0x94, 0x8c, 0xd0, 0xd2, 0x64, 0xc9, 0xfe, 0x50, 0xd3,
+ 0xf2, 0x24, 0xdc, 0x70, 0x07, 0x6f, 0xba, 0x51, 0x98, 0xf8, 0x3e, 0x28,
+ 0xa6, 0xdd, 0xa2, 0x4f, 0xe4, 0x49, 0x4d, 0x1b, 0x30, 0x19, 0x61, 0xf6,
+ 0xb6, 0x1f, 0xe2, 0x02, 0xbd, 0x8e, 0x4b, 0x1a, 0x1a, 0xe3, 0x24, 0x68,
+ 0x60, 0x19, 0x43, 0x77, 0x54, 0xae, 0x9f, 0xcc, 0x7b, 0xcf, 0x90, 0x8f,
+ 0xca, 0xac, 0x57, 0x93, 0x5d, 0xa4, 0x3c, 0x56, 0xe6, 0x93, 0xc8, 0x70,
+ 0x49, 0x49, 0x04, 0x1d, 0x40, 0xfb, 0xd3, 0xb7, 0x98, 0x84, 0x2b, 0x6f,
+ 0x7b, 0x3e, 0x83, 0x74, 0xef, 0xa2, 0x19, 0xc9, 0xb0, 0x9e, 0x22, 0x12,
+ 0x53, 0x6c, 0xb1, 0xa4, 0x79, 0xf9, 0xc2, 0x61, 0x59, 0x0d, 0x24, 0x46,
+ 0xee, 0xc7, 0x85, 0x53, 0xd6, 0xb5, 0x48, 0x64, 0x5b, 0x1b, 0x49, 0xf8,
+ 0x24, 0xa6, 0x54, 0xd6, 0xda, 0x85, 0xa1, 0xed, 0x97, 0x3c, 0x44, 0x78,
+ 0xc9, 0x92, 0x54, 0x6b, 0x61, 0x0d, 0xda, 0x09, 0x9f, 0xb9, 0x4b, 0xf4,
+ 0x81, 0x85, 0xd3, 0xbb, 0xc5, 0x45, 0xb7, 0xbc, 0x08, 0x6b, 0x62, 0x79,
+ 0x25, 0x25, 0x32, 0x03, 0x68, 0x90, 0xde, 0xfc, 0xae, 0x89, 0x9b, 0xbd,
+ 0x03, 0xb4, 0xc1, 0xd0, 0x4f, 0xcc, 0x2e, 0x64, 0x1f, 0x50, 0x6c, 0x70,
+ 0x05, 0xa6, 0x27, 0x91, 0xdd, 0x75, 0x35, 0x36, 0x6a, 0x21, 0x25, 0x38,
+ 0x7f, 0x58, 0x44, 0x16, 0x1f, 0x12, 0xdf, 0xb8, 0x12, 0xb8, 0x8c, 0xff,
+ 0x00, 0xe9, 0xb7, 0x7f, 0x5c, 0xae, 0xe7, 0xeb, 0x1b, 0x46, 0xda, 0xdd,
+ 0xdb, 0x73, 0x7f, 0x2a, 0xe1, 0xba, 0x87, 0xf4, 0xdb, 0xbf, 0xae, 0x52,
+ 0x53, 0x5d, 0x24, 0x92, 0x49, 0x4a, 0x49, 0x24, 0x92, 0x52, 0x92, 0x49,
+ 0x24, 0x94, 0xa4, 0x92, 0x49, 0x25, 0x29, 0x24, 0x92, 0x49, 0x4f, 0x67,
+ 0xf5, 0x6b, 0x6f, 0xec, 0xea, 0x77, 0x90, 0x3d, 0xce, 0x8f, 0x89, 0x72,
+ 0xd3, 0xb9, 0xbb, 0xaf, 0x71, 0x07, 0xf3, 0x03, 0x63, 0xe0, 0x4c, 0xac,
+ 0xbf, 0xab, 0x95, 0x07, 0xf4, 0xca, 0x67, 0xf7, 0x8f, 0xe0, 0xe5, 0xb3,
+ 0x65, 0x61, 0x8e, 0xd3, 0xe0, 0x92, 0x9e, 0x67, 0xa9, 0xc0, 0xea, 0x2e,
+ 0x68, 0x31, 0xed, 0x6c, 0x11, 0xf0, 0x45, 0xa9, 0xa7, 0xd3, 0xdc, 0x0c,
+ 0x83, 0xf9, 0x50, 0x3a, 0xb1, 0xff, 0x00, 0x29, 0x38, 0x73, 0x01, 0xb0,
+ 0x3e, 0x48, 0xb5, 0x92, 0xd6, 0x80, 0x00, 0xf9, 0x24, 0xa5, 0xe5, 0xdd,
+ 0xc4, 0x81, 0xe2, 0x81, 0x93, 0x89, 0x4d, 0x9e, 0xe6, 0xb0, 0x07, 0x78,
+ 0x85, 0x6c, 0x35, 0xe6, 0x7d, 0xb3, 0x1c, 0xa1, 0x1c, 0xca, 0x5a, 0xef,
+ 0x4d, 0xc1, 0xc1, 0xdf, 0x0d, 0x12, 0x52, 0xf4, 0xb9, 0xcc, 0xaf, 0x69,
+ 0x06, 0x06, 0x81, 0x1c, 0x58, 0xd2, 0xdd, 0x74, 0x51, 0x9d, 0xc2, 0x79,
+ 0x1e, 0x29, 0x8b, 0x01, 0x09, 0x29, 0x8b, 0xc5, 0x60, 0xee, 0xd6, 0x7c,
+ 0x90, 0xdd, 0x73, 0x40, 0xfa, 0x27, 0xf0, 0x52, 0x70, 0x70, 0x4c, 0x5a,
+ 0x1d, 0xca, 0x4a, 0x46, 0xeb, 0x8d, 0x90, 0xd6, 0xcb, 0x60, 0xff, 0x00,
+ 0xaf, 0x09, 0xbd, 0xbe, 0xa4, 0xc9, 0xff, 0x00, 0x6a, 0x45, 0xbb, 0x5d,
+ 0x3c, 0x7c, 0x13, 0x6f, 0x66, 0xe9, 0x9d, 0x52, 0x53, 0xd0, 0x8e, 0x91,
+ 0x81, 0xff, 0x00, 0x71, 0xd9, 0xf0, 0xda, 0xa1, 0x67, 0x4c, 0xe9, 0xe3,
+ 0xfe, 0xd3, 0xb2, 0x3b, 0xe8, 0xb5, 0xfe, 0x3f, 0x35, 0x17, 0xd6, 0x1c,
+ 0x39, 0x84, 0x94, 0xe1, 0x8c, 0x2e, 0x92, 0x4b, 0x7d, 0x8c, 0x6c, 0xf1,
+ 0xac, 0x22, 0x9e, 0x93, 0x86, 0xe6, 0xfb, 0x2b, 0x1a, 0xf7, 0x04, 0xff,
+ 0x00, 0x7a, 0x6c, 0xce, 0x9f, 0x6e, 0xff, 0x00, 0x50, 0x00, 0xf1, 0x3d,
+ 0xb4, 0x44, 0xc5, 0x17, 0x56, 0x20, 0x8f, 0x6f, 0x61, 0xcc, 0x24, 0xa7,
+ 0x2b, 0x33, 0xa6, 0xbb, 0x1d, 0xe2, 0xc6, 0x30, 0x3d, 0x93, 0xab, 0x5d,
+ 0xbb, 0x4f, 0x98, 0x2a, 0x75, 0x63, 0x50, 0xe6, 0x82, 0xea, 0x48, 0xf8,
+ 0x3d, 0xcb, 0x4f, 0x35, 0xc5, 0xd5, 0xc6, 0xaa, 0xbe, 0x31, 0x73, 0x61,
+ 0xaf, 0x04, 0x4f, 0x12, 0x92, 0x91, 0x0e, 0x9f, 0x86, 0xe2, 0x0e, 0xc7,
+ 0x4f, 0x89, 0x73, 0xbf, 0xf2, 0x48, 0x83, 0xa6, 0x61, 0x9d, 0x36, 0x90,
+ 0x7f, 0xac, 0xff, 0x00, 0xef, 0x57, 0x5b, 0x00, 0x46, 0x91, 0xdb, 0x45,
+ 0x21, 0xe4, 0x92, 0x9c, 0xf7, 0x74, 0xbc, 0x68, 0xd0, 0x38, 0x7c, 0x1e,
+ 0xff, 0x00, 0xef, 0x51, 0xaf, 0xa6, 0x51, 0xf9, 0xdb, 0xbf, 0xcf, 0x77,
+ 0xf7, 0xad, 0x22, 0x7c, 0x00, 0x42, 0x73, 0x9c, 0xd3, 0xc0, 0x27, 0xe6,
+ 0x12, 0x53, 0x57, 0xec, 0x15, 0x0d, 0x01, 0x77, 0x90, 0xde, 0xef, 0xef,
+ 0x48, 0xf4, 0xca, 0x3c, 0x5d, 0xaf, 0x3e, 0xf7, 0x7f, 0x7a, 0xb8, 0xd7,
+ 0x07, 0x7e, 0x6e, 0xaa, 0x73, 0xe5, 0xaa, 0x4a, 0x73, 0x8f, 0x4d, 0xc7,
+ 0x6c, 0x10, 0x5e, 0x08, 0x3a, 0x45, 0x8f, 0xff, 0x00, 0xc9, 0x2e, 0x9a,
+ 0x9d, 0x19, 0x1e, 0x2b, 0x16, 0xc3, 0xe5, 0xc2, 0xd0, 0x76, 0x55, 0x6d,
+ 0xc5, 0x7d, 0x8f, 0x04, 0x80, 0xd9, 0x76, 0xdd, 0x4e, 0x9a, 0xa4, 0xa6,
+ 0x87, 0xd6, 0x20, 0xd3, 0x4b, 0x35, 0xe1, 0xed, 0xfc, 0xab, 0x83, 0xea,
+ 0x1f, 0xd3, 0x6e, 0xfe, 0xb1, 0x5d, 0xcf, 0xd6, 0x26, 0x0d, 0x94, 0xd9,
+ 0x3f, 0x48, 0x03, 0x1e, 0x52, 0x0a, 0xe1, 0xba, 0x87, 0xf4, 0xdb, 0xbf,
+ 0xac, 0x52, 0x53, 0x5d, 0x24, 0x92, 0x49, 0x4a, 0x49, 0x24, 0x92, 0x52,
+ 0x92, 0x49, 0x24, 0x94, 0xa4, 0x92, 0x49, 0x25, 0x29, 0x24, 0x92, 0x49,
+ 0x4f, 0x6f, 0xf5, 0x60, 0x81, 0xd2, 0xaa, 0x9f, 0x17, 0x47, 0xf9, 0xcb,
+ 0x4e, 0xf7, 0x89, 0x93, 0x33, 0x3a, 0x2c, 0xcf, 0xab, 0x0e, 0x60, 0xe9,
+ 0x75, 0xb4, 0x9d, 0x49, 0x74, 0x7f, 0x9c, 0xb5, 0x2d, 0x6c, 0xf0, 0x23,
+ 0xc2, 0x52, 0x53, 0x83, 0x99, 0x8d, 0x4d, 0x9d, 0x49, 0xe6, 0xc6, 0xb4,
+ 0xe8, 0xde, 0x44, 0xf6, 0x44, 0x3d, 0x3b, 0x1b, 0x6c, 0x8a, 0xd9, 0x1f,
+ 0x04, 0x67, 0xb4, 0x7e, 0xd0, 0x7b, 0x88, 0x97, 0x43, 0x47, 0xca, 0x15,
+ 0xd6, 0x00, 0x74, 0x22, 0x07, 0x9c, 0xff, 0x00, 0x72, 0x4a, 0x71, 0x9b,
+ 0x83, 0x40, 0x0f, 0x1b, 0x01, 0x30, 0x4e, 0x9a, 0x2c, 0xe6, 0x7f, 0x3b,
+ 0xb5, 0xd8, 0xcd, 0x78, 0x9f, 0x17, 0x02, 0xba, 0x87, 0xd3, 0x59, 0xfc,
+ 0xdf, 0xc0, 0xff, 0x00, 0x72, 0x09, 0xc6, 0xa9, 0xae, 0x96, 0xb7, 0xdc,
+ 0x3c, 0x8a, 0x4a, 0x69, 0xd3, 0x85, 0x43, 0xc0, 0xdd, 0x4e, 0xcf, 0xed,
+ 0x39, 0x1b, 0xf6, 0x5e, 0x31, 0xfc, 0xd2, 0x3e, 0x0e, 0x77, 0xf7, 0xab,
+ 0xac, 0x3e, 0xff, 0x00, 0x76, 0x95, 0x81, 0xa7, 0xef, 0x12, 0xa6, 0x0b,
+ 0x08, 0xd0, 0xf1, 0xe6, 0x92, 0x9c, 0xe3, 0xd2, 0xb1, 0x79, 0xda, 0x7f,
+ 0xce, 0x77, 0xf7, 0xa6, 0x3d, 0x2b, 0x1c, 0xf0, 0x08, 0xfe, 0xd3, 0xbf,
+ 0xf2, 0x4b, 0x54, 0x00, 0x7b, 0x4c, 0xf9, 0x26, 0x70, 0x81, 0xd8, 0x79,
+ 0x24, 0xa7, 0x23, 0xf6, 0x3e, 0x3c, 0x6b, 0xba, 0x7f, 0xac, 0xef, 0xfc,
+ 0x92, 0x8f, 0xec, 0x6c, 0x6d, 0xdc, 0x3b, 0xfc, 0xe3, 0xfd, 0xea, 0xf5,
+ 0xae, 0x76, 0xef, 0x73, 0xa0, 0x76, 0x4d, 0xea, 0x0e, 0x37, 0x98, 0x89,
+ 0x9f, 0xe0, 0x92, 0x9b, 0xbf, 0xb4, 0xaa, 0x1c, 0xb2, 0xef, 0xfb, 0x69,
+ 0xdf, 0xdc, 0x90, 0xea, 0x98, 0xc3, 0xe9, 0x36, 0xe1, 0xe3, 0xfa, 0x27,
+ 0xff, 0x00, 0x72, 0xd0, 0x21, 0xba, 0x69, 0xa1, 0xef, 0xae, 0x8a, 0x0e,
+ 0x15, 0x6b, 0xba, 0x07, 0xf1, 0x49, 0x4e, 0x5d, 0x9d, 0x57, 0x1d, 0xd9,
+ 0x05, 0xa3, 0xd5, 0xf4, 0x76, 0xc0, 0xfd, 0x1b, 0xf9, 0xd3, 0xf3, 0x61,
+ 0x0d, 0xdd, 0x4a, 0x80, 0x74, 0x16, 0x47, 0x8f, 0xa4, 0xff, 0x00, 0xfc,
+ 0x8a, 0xd6, 0xf4, 0x59, 0x32, 0x00, 0xf2, 0x51, 0x7d, 0x0c, 0x20, 0x8e,
+ 0x3e, 0xef, 0xee, 0x49, 0x4e, 0x0d, 0xdd, 0x4a, 0xed, 0xe0, 0xd7, 0x51,
+ 0x7d, 0x47, 0x47, 0x1d, 0x96, 0x4c, 0x7d, 0xc8, 0x9f, 0xb4, 0xf1, 0x76,
+ 0x89, 0xdc, 0xd8, 0xd4, 0xcb, 0x1d, 0xa1, 0xff, 0x00, 0x35, 0x47, 0xaa,
+ 0x74, 0x77, 0x1f, 0xd2, 0x52, 0xe7, 0xb5, 0xc3, 0x5d, 0x1c, 0x55, 0x9e,
+ 0x9e, 0xdb, 0x85, 0x20, 0x5a, 0xe2, 0xe3, 0x1a, 0xee, 0x49, 0x48, 0x8f,
+ 0x55, 0xc1, 0x74, 0x34, 0x5d, 0x07, 0xbf, 0xb5, 0xff, 0x00, 0xf9, 0x14,
+ 0x46, 0x75, 0x2e, 0x9e, 0x09, 0x3e, 0xae, 0x9e, 0x3b, 0x1f, 0xff, 0x00,
+ 0x91, 0x4f, 0x66, 0x3d, 0x4e, 0xb2, 0x4b, 0x00, 0x3e, 0x23, 0xc3, 0xe4,
+ 0xae, 0x56, 0x18, 0x1b, 0x0d, 0x10, 0x3c, 0xbf, 0xdc, 0x92, 0x9a, 0x9f,
+ 0xb4, 0xf0, 0x3f, 0xd2, 0x0f, 0xf3, 0x5d, 0xff, 0x00, 0x91, 0x4e, 0xfe,
+ 0xa1, 0xd3, 0x8e, 0xdf, 0x7c, 0xc9, 0x82, 0x43, 0x5d, 0xa0, 0xff, 0x00,
+ 0x35, 0x5d, 0x2c, 0x0e, 0xf2, 0xf9, 0x0f, 0xee, 0x4d, 0xe9, 0x3b, 0xb3,
+ 0xe3, 0xe2, 0xd6, 0x9f, 0xe0, 0x92, 0x9a, 0x83, 0x3b, 0xa5, 0x8d, 0x45,
+ 0xc0, 0x7c, 0x9d, 0xff, 0x00, 0x91, 0x48, 0xf5, 0x0e, 0x9c, 0x7f, 0xc3,
+ 0x37, 0xfe, 0x97, 0xf7, 0x2b, 0x62, 0x8b, 0x48, 0x80, 0xf0, 0x3e, 0x2c,
+ 0x6f, 0xf7, 0x26, 0xf4, 0x2f, 0xff, 0x00, 0x48, 0xcd, 0x3c, 0x6b, 0x1f,
+ 0xdc, 0x92, 0x9a, 0x2e, 0xce, 0xc0, 0xff, 0x00, 0x4c, 0xdf, 0x86, 0xbf,
+ 0xdc, 0xb5, 0x8b, 0x2b, 0xf4, 0x5d, 0xb8, 0x01, 0xb9, 0xa4, 0x7f, 0x5b,
+ 0x4f, 0x05, 0x4e, 0xca, 0xae, 0x03, 0x52, 0xc3, 0xa7, 0xee, 0x91, 0xf9,
+ 0x1c, 0xb4, 0xaa, 0x25, 0xd4, 0xed, 0xf2, 0xe5, 0x25, 0x39, 0x9f, 0x58,
+ 0xb6, 0x9c, 0x6a, 0xde, 0xc8, 0x3b, 0x80, 0x83, 0xf3, 0x0b, 0x80, 0xcf,
+ 0xfe, 0x99, 0x6e, 0x91, 0xee, 0xe1, 0x77, 0xff, 0x00, 0x58, 0x48, 0x76,
+ 0x2b, 0x3c, 0x43, 0x9b, 0xf1, 0xe5, 0x70, 0x1d, 0x43, 0xfa, 0x6d, 0xdf,
+ 0xd6, 0x49, 0x4d, 0x74, 0x92, 0x49, 0x25, 0x29, 0x24, 0x92, 0x49, 0x4a,
+ 0x49, 0x24, 0x92, 0x52, 0x92, 0x49, 0x24, 0x94, 0xa5, 0x2a, 0xd8, 0xeb,
+ 0x1e, 0xd6, 0x37, 0x97, 0x18, 0x0a, 0x2a, 0xe7, 0x4d, 0xad, 0xa6, 0xd7,
+ 0x58, 0xee, 0x18, 0x34, 0xf8, 0x94, 0x94, 0xf5, 0x9d, 0x12, 0xb6, 0xb3,
+ 0x11, 0x8d, 0x98, 0x0c, 0x90, 0x3e, 0x32, 0xb4, 0xac, 0x73, 0x43, 0x01,
+ 0x3e, 0x0b, 0x37, 0xa4, 0x10, 0xfc, 0x3a, 0xcc, 0xe8, 0x5e, 0x75, 0x1e,
+ 0x4e, 0x57, 0x72, 0x03, 0x8c, 0x09, 0x81, 0xe0, 0x92, 0x9c, 0xbb, 0x2e,
+ 0xb5, 0x99, 0xd6, 0x5a, 0xc6, 0x97, 0x35, 0xc1, 0xa0, 0x81, 0x1d, 0x87,
+ 0x82, 0xb2, 0x72, 0x8b, 0xdb, 0x2f, 0x65, 0xcd, 0x03, 0xc0, 0x73, 0xf8,
+ 0xaa, 0x96, 0xe4, 0x7a, 0x59, 0xce, 0x01, 0xae, 0x74, 0x47, 0x0d, 0x91,
+ 0xc2, 0xb5, 0xbe, 0xab, 0x3d, 0xe6, 0xbb, 0x03, 0xbf, 0xa8, 0xe8, 0xfb,
+ 0xa1, 0x25, 0x20, 0x76, 0x46, 0xd3, 0x3b, 0x2c, 0x78, 0xf0, 0x70, 0x3f,
+ 0xde, 0xab, 0x7e, 0xd0, 0xcd, 0xae, 0xe3, 0x34, 0x87, 0xd2, 0x7b, 0x6c,
+ 0x87, 0x00, 0xb6, 0x1b, 0x92, 0x1a, 0xd0, 0xd1, 0x5b, 0xbf, 0xed, 0xb2,
+ 0x3f, 0x82, 0xc8, 0xce, 0xa2, 0xd3, 0x98, 0xdc, 0xaa, 0x05, 0x9b, 0xb9,
+ 0x73, 0x5c, 0x1d, 0x1f, 0x71, 0x09, 0x29, 0xb3, 0x5e, 0x73, 0xb9, 0x65,
+ 0x56, 0x09, 0xf0, 0xac, 0xe9, 0xf3, 0x52, 0x19, 0xef, 0xdd, 0x01, 0xb6,
+ 0xf9, 0x8f, 0x49, 0xdf, 0xdc, 0xa7, 0x8f, 0x98, 0x59, 0x1e, 0xa5, 0x6e,
+ 0x9f, 0x36, 0x93, 0xf8, 0xa9, 0x9c, 0x96, 0xb5, 0xa5, 0xcd, 0x70, 0x24,
+ 0x99, 0x83, 0x33, 0xf0, 0xd4, 0x04, 0x94, 0x89, 0xfd, 0x47, 0x69, 0xd8,
+ 0xe1, 0x60, 0x73, 0xb8, 0x06, 0xb7, 0x83, 0xf9, 0x10, 0xbf, 0x68, 0xd2,
+ 0x0e, 0x81, 0xed, 0x70, 0xef, 0xb1, 0xf3, 0xff, 0x00, 0x52, 0xad, 0x5c,
+ 0xfc, 0x5c, 0x82, 0xdb, 0x8b, 0x48, 0xb1, 0xb0, 0x60, 0x12, 0x46, 0x9f,
+ 0x04, 0x27, 0x39, 0xde, 0xae, 0xf6, 0x87, 0x3a, 0x4f, 0xb8, 0x98, 0x88,
+ 0xf2, 0xdc, 0x92, 0x91, 0x3b, 0xaa, 0xb4, 0xe8, 0x5e, 0xef, 0xfb, 0x6d,
+ 0xff, 0x00, 0xf9, 0x15, 0x0f, 0xda, 0x2c, 0x89, 0xde, 0x63, 0xc3, 0xd3,
+ 0x7f, 0xf7, 0x2b, 0xec, 0x6b, 0x4e, 0xa1, 0xae, 0x1e, 0x3a, 0xb5, 0x1b,
+ 0x63, 0x39, 0xdc, 0xe9, 0xf8, 0x84, 0x94, 0x9a, 0xbc, 0xa7, 0x35, 0xda,
+ 0x93, 0xb4, 0xa2, 0x3a, 0xea, 0x9f, 0xf4, 0x81, 0x95, 0x9e, 0xda, 0x73,
+ 0xde, 0xef, 0xe7, 0x2b, 0x9f, 0x12, 0xc7, 0x47, 0xfd, 0x5a, 0x91, 0xab,
+ 0xa8, 0xb4, 0xc7, 0xa9, 0x49, 0xfe, 0xcb, 0xbf, 0xf2, 0x49, 0x29, 0xbe,
+ 0x32, 0x18, 0x04, 0x4f, 0x1e, 0x49, 0x1c, 0x86, 0x11, 0xa3, 0xbf, 0x28,
+ 0x54, 0x1c, 0x3a, 0x80, 0x12, 0xe7, 0x53, 0xfe, 0x63, 0xbf, 0xf2, 0x4a,
+ 0x1b, 0xb3, 0x3f, 0xe0, 0x67, 0xfa, 0xae, 0xff, 0x00, 0xc9, 0x24, 0xa7,
+ 0x42, 0xcb, 0xea, 0x88, 0x2f, 0x6e, 0xbc, 0x49, 0x84, 0x36, 0xb9, 0xad,
+ 0xd3, 0x48, 0xf2, 0x21, 0x65, 0x65, 0xd9, 0x70, 0xaf, 0x75, 0xfe, 0x83,
+ 0x44, 0xc0, 0x3b, 0x5e, 0x75, 0x3f, 0xda, 0x4f, 0x5b, 0x72, 0x99, 0xb5,
+ 0x95, 0xd9, 0x43, 0xe7, 0x98, 0xdf, 0xa6, 0x93, 0xe2, 0x92, 0x9b, 0xee,
+ 0xb7, 0xdf, 0xa4, 0x8f, 0xb9, 0x15, 0x97, 0xf9, 0x7f, 0xaf, 0xde, 0xa8,
+ 0x1c, 0x6c, 0xfd, 0xa1, 0xf1, 0x4f, 0x8e, 0x9b, 0xd4, 0x43, 0x7a, 0x80,
+ 0xd3, 0x6d, 0x53, 0xfd, 0xa4, 0x94, 0xeb, 0x0b, 0xe7, 0xc4, 0x22, 0x7a,
+ 0xe0, 0x81, 0xdf, 0xe6, 0xb2, 0x01, 0xea, 0x3b, 0x4c, 0x36, 0xae, 0x3f,
+ 0x94, 0xa6, 0xc3, 0xd4, 0x80, 0x82, 0xda, 0xbe, 0x32, 0xef, 0xee, 0x49,
+ 0x4e, 0xa7, 0xaa, 0x7c, 0x0a, 0x46, 0xf7, 0x03, 0xa4, 0xca, 0xcc, 0xdd,
+ 0xd4, 0x3f, 0x76, 0xbf, 0x3d, 0x5d, 0xfd, 0xc9, 0x81, 0xce, 0x3a, 0x96,
+ 0xd7, 0xf7, 0xbb, 0xfb, 0x92, 0x53, 0xa1, 0x65, 0xf2, 0xd2, 0x0e, 0xba,
+ 0x44, 0x2b, 0x78, 0xff, 0x00, 0x44, 0x7c, 0x16, 0x13, 0x9f, 0x98, 0x01,
+ 0x96, 0xb0, 0xc7, 0x9b, 0xbf, 0xb9, 0x6d, 0x50, 0xe2, 0xe6, 0xf9, 0x01,
+ 0xaf, 0xdc, 0x92, 0x9c, 0xde, 0xbe, 0x0f, 0xa0, 0xc7, 0x79, 0xb4, 0x7c,
+ 0x8b, 0x82, 0xe1, 0x7a, 0x8f, 0xf4, 0xdb, 0xbf, 0xac, 0xbb, 0x9e, 0xba,
+ 0x43, 0xb1, 0x87, 0x88, 0x2d, 0x11, 0xf3, 0x5c, 0x2e, 0x7f, 0xf4, 0xcb,
+ 0x7f, 0xac, 0x92, 0x9a, 0xe9, 0x41, 0x1c, 0xad, 0xee, 0x9d, 0xd2, 0x31,
+ 0x71, 0xf1, 0x99, 0x9f, 0xd4, 0xce, 0x8f, 0x1b, 0xa9, 0xa2, 0x60, 0x91,
+ 0xe2, 0xef, 0x8a, 0xb0, 0x7a, 0x8e, 0x1e, 0x4b, 0x9b, 0x5b, 0x71, 0x45,
+ 0x38, 0xe3, 0xf3, 0xb6, 0xb5, 0xc0, 0x79, 0x90, 0x44, 0xfe, 0x29, 0x29,
+ 0xe6, 0x52, 0x5d, 0x19, 0x6f, 0x48, 0x7e, 0xeb, 0x2c, 0xa1, 0xbe, 0xa1,
+ 0x30, 0xdd, 0x8e, 0x9d, 0x64, 0xf2, 0xd0, 0x61, 0x66, 0xf5, 0x3a, 0xdb,
+ 0x3b, 0xa9, 0x6e, 0xda, 0x9a, 0x76, 0xc4, 0x7b, 0xa3, 0xb1, 0x29, 0x29,
+ 0xce, 0x49, 0x24, 0x92, 0x52, 0x92, 0x49, 0x24, 0x94, 0xa5, 0x63, 0x1f,
+ 0x25, 0xd4, 0xb1, 0xed, 0x00, 0x10, 0x75, 0x92, 0x35, 0x98, 0x80, 0xab,
+ 0xab, 0x16, 0xd4, 0xda, 0xb1, 0x6a, 0x90, 0x45, 0x96, 0x92, 0xe3, 0x3f,
+ 0xba, 0x34, 0x6f, 0xde, 0x92, 0x9e, 0xb7, 0xea, 0xd4, 0x7e, 0xcd, 0xa7,
+ 0x77, 0x1e, 0xe3, 0xff, 0x00, 0x49, 0x5e, 0xb1, 0xe5, 0xd7, 0x38, 0x4e,
+ 0x8d, 0x68, 0xd3, 0xcd, 0x50, 0xfa, 0xbc, 0xe3, 0xfb, 0x36, 0x81, 0xcc,
+ 0x87, 0x0f, 0xfa, 0x45, 0x5e, 0xb0, 0x16, 0xda, 0xff, 0x00, 0x80, 0x22,
+ 0x12, 0x53, 0x97, 0x73, 0x9d, 0xfb, 0x44, 0xd6, 0xc1, 0xb9, 0xc4, 0x34,
+ 0x6d, 0x1d, 0xe4, 0x2d, 0x9a, 0xea, 0x73, 0x58, 0x37, 0x19, 0x31, 0xc1,
+ 0xe7, 0xe6, 0xb2, 0x2c, 0xb5, 0xd5, 0xe7, 0x17, 0x57, 0x63, 0x5a, 0xf7,
+ 0x00, 0x35, 0x61, 0x71, 0xe1, 0x5d, 0xaf, 0xf6, 0x95, 0xba, 0xb5, 0xe1,
+ 0xcd, 0xff, 0x00, 0x8a, 0x3f, 0xf9, 0x30, 0x92, 0x9b, 0x9b, 0xa0, 0x44,
+ 0xa8, 0xfd, 0xc4, 0xaa, 0x37, 0x62, 0xe5, 0x96, 0x93, 0x6c, 0x34, 0x7f,
+ 0x57, 0xff, 0x00, 0x52, 0x2a, 0x78, 0x58, 0xc5, 0xf7, 0xbc, 0xe2, 0xdf,
+ 0x5e, 0xf6, 0xfd, 0x36, 0x90, 0x47, 0xfd, 0xfd, 0x25, 0x3a, 0xb6, 0x09,
+ 0xef, 0xc2, 0xae, 0xe0, 0x67, 0xf8, 0xa6, 0x75, 0x59, 0x73, 0xfc, 0xfe,
+ 0x38, 0x23, 0xc9, 0xc7, 0xf2, 0x12, 0x9f, 0xec, 0xf9, 0x87, 0xfc, 0x2d,
+ 0x1f, 0xe6, 0x59, 0xfd, 0xe9, 0x29, 0x25, 0x5b, 0x4f, 0xd2, 0x30, 0x02,
+ 0x85, 0x95, 0xdd, 0x6b, 0xbf, 0x46, 0xcd, 0x95, 0x9e, 0x0f, 0x6d, 0x7b,
+ 0x93, 0x29, 0x9b, 0x8b, 0x9c, 0x4c, 0x36, 0xda, 0x09, 0x3d, 0xa2, 0xc0,
+ 0x9d, 0xd4, 0x75, 0x16, 0xe9, 0xba, 0x80, 0x39, 0xe5, 0xc1, 0x25, 0x26,
+ 0xda, 0xda, 0xc4, 0x0e, 0x3c, 0x53, 0x6f, 0x1e, 0x08, 0x2e, 0x6e, 0x7b,
+ 0x01, 0xf5, 0x1f, 0x8e, 0x00, 0x1e, 0x2f, 0x27, 0xf0, 0x4d, 0xb3, 0xa9,
+ 0x4c, 0xc5, 0x11, 0xfb, 0xd2, 0xed, 0xbe, 0x29, 0x29, 0xd9, 0xaa, 0xbd,
+ 0x66, 0x20, 0x29, 0x9a, 0x9a, 0xee, 0xda, 0x29, 0x07, 0x16, 0x08, 0xda,
+ 0x79, 0x2a, 0x2e, 0xc8, 0x03, 0x42, 0x39, 0xe0, 0x78, 0xa4, 0xa6, 0xa6,
+ 0x5b, 0x7d, 0x90, 0xd1, 0xaf, 0x8f, 0x65, 0x5a, 0xba, 0x9e, 0xc6, 0xcb,
+ 0xe3, 0x5d, 0x4c, 0x2b, 0xf6, 0x3c, 0xb8, 0x18, 0x61, 0x27, 0xb6, 0x85,
+ 0x0b, 0xd6, 0x9e, 0x58, 0x5a, 0x3e, 0x05, 0x25, 0x39, 0x79, 0x15, 0x8c,
+ 0x92, 0xe7, 0x47, 0xb2, 0xae, 0x09, 0xe0, 0x94, 0x85, 0x4d, 0x6d, 0xb5,
+ 0xbd, 0xcf, 0x01, 0x8e, 0x6c, 0xb8, 0x78, 0x04, 0x5c, 0xac, 0x9a, 0xf0,
+ 0xda, 0xf7, 0x3a, 0xb3, 0x63, 0x1e, 0x75, 0x80, 0x74, 0x4a, 0xba, 0xa8,
+ 0xb1, 0xde, 0xb6, 0xa7, 0x76, 0xb2, 0x92, 0x9b, 0xec, 0xb1, 0x8f, 0x68,
+ 0x2c, 0xd5, 0xbc, 0x05, 0x06, 0x55, 0x2f, 0x3e, 0x01, 0x0c, 0x3b, 0x69,
+ 0xdc, 0xd2, 0x76, 0xf6, 0x1d, 0x95, 0x3c, 0xbe, 0xae, 0x29, 0xb7, 0xd2,
+ 0x61, 0x80, 0x1f, 0xb5, 0xce, 0xf8, 0x0d, 0xce, 0xfc, 0xa0, 0x24, 0xa7,
+ 0x47, 0x27, 0x50, 0x2b, 0x60, 0xd0, 0x73, 0x0a, 0xb3, 0x9a, 0xe6, 0x34,
+ 0x8d, 0xce, 0x69, 0x6c, 0xb8, 0xba, 0x74, 0x1e, 0x01, 0x36, 0x06, 0x75,
+ 0xf7, 0xdc, 0xfa, 0x71, 0x68, 0xf5, 0xf6, 0x6b, 0x6e, 0x43, 0xcc, 0x34,
+ 0x13, 0xfb, 0xa1, 0x13, 0x2f, 0x07, 0x3f, 0x2d, 0xfb, 0x09, 0x2c, 0xaa,
+ 0x75, 0x68, 0x1b, 0x40, 0xf8, 0xc1, 0xd5, 0x25, 0x25, 0xa3, 0x32, 0xb7,
+ 0x3b, 0xd2, 0x7b, 0x47, 0xa8, 0x40, 0x24, 0x76, 0x82, 0x39, 0x09, 0xc8,
+ 0x6c, 0x68, 0x21, 0x57, 0xea, 0x14, 0x1c, 0x26, 0x35, 0xd4, 0x38, 0xc3,
+ 0x7d, 0xc4, 0x3b, 0xb4, 0x73, 0x05, 0x17, 0x12, 0xf6, 0xe4, 0x63, 0x32,
+ 0xdd, 0x7d, 0xe3, 0x5f, 0x92, 0x4a, 0x63, 0x73, 0x9a, 0x1a, 0x67, 0x41,
+ 0xe2, 0xae, 0x63, 0x93, 0xb2, 0x06, 0x9b, 0x87, 0x2a, 0xad, 0xf5, 0x02,
+ 0xd7, 0x00, 0x60, 0x11, 0xdd, 0x5a, 0xa4, 0xb4, 0x55, 0x27, 0xf3, 0x40,
+ 0xd5, 0x25, 0x34, 0x3a, 0xeb, 0x81, 0xc7, 0x68, 0x06, 0x48, 0x73, 0x7e,
+ 0xf5, 0xc6, 0xd9, 0xb3, 0xf6, 0xbc, 0xd8, 0x3d, 0x9e, 0xa0, 0x2e, 0x05,
+ 0x75, 0x5d, 0x69, 0xdb, 0xab, 0xad, 0xc3, 0xb9, 0x1f, 0x74, 0xae, 0x47,
+ 0x37, 0x71, 0xea, 0x2f, 0x00, 0x7b, 0x8b, 0xc4, 0x0f, 0x3d, 0x12, 0x53,
+ 0xa0, 0xec, 0xab, 0x3a, 0xa6, 0x73, 0x31, 0x40, 0x0e, 0x75, 0x8f, 0x0d,
+ 0xdc, 0xe0, 0x4c, 0x0e, 0x03, 0x47, 0x90, 0x5e, 0x87, 0xd3, 0xbe, 0xaa,
+ 0x74, 0xbc, 0x7a, 0x1a, 0x2f, 0x06, 0xeb, 0x23, 0xdc, 0x0e, 0x8c, 0x9f,
+ 0xea, 0xae, 0x27, 0xea, 0x97, 0x4f, 0x23, 0xaf, 0x13, 0x61, 0x91, 0x8e,
+ 0x1c, 0xe0, 0xe1, 0xa8, 0x30, 0x76, 0xc8, 0x2b, 0xb7, 0xb7, 0xeb, 0x16,
+ 0x2b, 0x2f, 0x18, 0xd8, 0xed, 0x37, 0xd9, 0x21, 0xae, 0xdb, 0x3e, 0xd2,
+ 0x7c, 0x74, 0x49, 0x4c, 0x3a, 0xb7, 0xd5, 0xde, 0x9b, 0x76, 0x33, 0x8e,
+ 0x2d, 0x4d, 0xa2, 0xf6, 0x8f, 0x63, 0x98, 0x20, 0x18, 0xec, 0x57, 0x9b,
+ 0xf5, 0x6b, 0xac, 0x16, 0x3e, 0x87, 0xc0, 0x80, 0x1b, 0x1e, 0x24, 0x19,
+ 0x95, 0xe9, 0x3d, 0x47, 0xac, 0xd9, 0x87, 0x73, 0x28, 0xb3, 0x1d, 0xef,
+ 0xad, 0xe3, 0x71, 0x7b, 0x1a, 0x5d, 0x1f, 0xe6, 0xaf, 0x3c, 0xfa, 0xd1,
+ 0x8e, 0xda, 0xfa, 0x83, 0xaf, 0xac, 0xb8, 0xd5, 0x79, 0x2f, 0x60, 0x73,
+ 0x62, 0x01, 0x83, 0xf3, 0xe5, 0x25, 0x38, 0xa9, 0x24, 0x92, 0x4a, 0x52,
+ 0x49, 0x24, 0x92, 0x99, 0xd4, 0xd0, 0xfb, 0x58, 0xc3, 0xa0, 0x73, 0x80,
+ 0x3f, 0x32, 0xac, 0x75, 0x3b, 0x7d, 0x4c, 0xc7, 0x81, 0xf4, 0x6b, 0x86,
+ 0x34, 0x0f, 0x06, 0xaa, 0xa0, 0x90, 0x41, 0x1a, 0x11, 0xa8, 0x29, 0x12,
+ 0x5c, 0x4b, 0x89, 0x92, 0x75, 0x25, 0x25, 0x3d, 0x97, 0xd5, 0xe3, 0xfa,
+ 0x86, 0x3f, 0xc1, 0xda, 0xff, 0x00, 0x69, 0x68, 0xda, 0x0b, 0x5c, 0xf2,
+ 0x78, 0x3a, 0x4a, 0xca, 0xfa, 0xb8, 0x40, 0xc2, 0xa0, 0x93, 0x10, 0x5d,
+ 0xf9, 0x56, 0x95, 0xc4, 0x9b, 0x1f, 0xf8, 0x24, 0xa7, 0x3f, 0xd0, 0xb1,
+ 0xd9, 0xae, 0x73, 0x5b, 0x2d, 0x81, 0x04, 0x18, 0x3c, 0x2d, 0x8a, 0x3d,
+ 0x56, 0x08, 0x04, 0xf9, 0x87, 0x09, 0xfc, 0x90, 0xb1, 0x61, 0xe7, 0xa8,
+ 0x18, 0xdd, 0x10, 0x35, 0x1c, 0x0d, 0x16, 0xd5, 0x45, 0xd0, 0x06, 0xfd,
+ 0x7c, 0xd2, 0x52, 0x47, 0xbd, 0xe4, 0x16, 0xed, 0x06, 0x3c, 0x42, 0xce,
+ 0x38, 0x2c, 0xae, 0xff, 0x00, 0x5e, 0xb6, 0xed, 0x73, 0xbe, 0x94, 0x77,
+ 0xfb, 0xc2, 0xbb, 0x66, 0x47, 0xa4, 0x25, 0xdb, 0x88, 0xef, 0xb4, 0x6e,
+ 0x55, 0xea, 0xea, 0x78, 0xd7, 0x3c, 0xd6, 0x1c, 0xea, 0xdf, 0xe1, 0x63,
+ 0x36, 0xca, 0x4a, 0x49, 0x55, 0xef, 0xaf, 0x48, 0x03, 0xe2, 0x07, 0xe5,
+ 0x94, 0x4c, 0x3c, 0xc7, 0x5d, 0xd4, 0x2c, 0xa0, 0xc6, 0xd3, 0x43, 0x88,
+ 0xf8, 0x82, 0xa0, 0xed, 0xce, 0x13, 0x21, 0xc3, 0xe0, 0xab, 0x61, 0xb1,
+ 0xcd, 0xea, 0xd5, 0x3c, 0x88, 0x69, 0x05, 0xa7, 0xb7, 0x29, 0x29, 0x23,
+ 0x33, 0x2c, 0x90, 0x4b, 0x80, 0xed, 0x1a, 0xff, 0x00, 0x72, 0x59, 0x17,
+ 0xd7, 0x55, 0x6e, 0xbc, 0xb5, 0x8e, 0x70, 0x13, 0x30, 0x65, 0x4d, 0xf5,
+ 0x00, 0xf7, 0x82, 0xcf, 0xa2, 0xe2, 0x01, 0x0a, 0x87, 0x52, 0x75, 0x67,
+ 0x16, 0xc6, 0x86, 0xc1, 0x09, 0x29, 0xb7, 0x90, 0x2a, 0xf5, 0x9e, 0xdb,
+ 0x46, 0xed, 0x03, 0x48, 0x98, 0xd1, 0x3c, 0xb2, 0x77, 0xed, 0x6e, 0xd8,
+ 0x8d, 0x9d, 0x94, 0x32, 0x60, 0xbe, 0xa7, 0x80, 0x3f, 0x49, 0x53, 0x1c,
+ 0x7e, 0x30, 0xa1, 0xae, 0xc8, 0x81, 0x1e, 0x10, 0x92, 0x91, 0x5d, 0x84,
+ 0xc6, 0xc1, 0x68, 0x20, 0x11, 0xe2, 0xe3, 0xf9, 0x4a, 0x8b, 0x30, 0xda,
+ 0xee, 0x5a, 0xef, 0xbc, 0xff, 0x00, 0x7a, 0xbf, 0xb1, 0xff, 0x00, 0xba,
+ 0x9e, 0x08, 0x1a, 0x84, 0x94, 0xd2, 0xfb, 0x08, 0x31, 0xa1, 0xff, 0x00,
+ 0x38, 0xff, 0x00, 0x7a, 0x83, 0xf0, 0x48, 0xe3, 0xfe, 0xa9, 0xca, 0xfc,
+ 0x83, 0xa4, 0x9f, 0x91, 0x4b, 0xd2, 0x2e, 0x1c, 0x92, 0x12, 0x53, 0x4a,
+ 0xdc, 0x7a, 0x19, 0x58, 0xf6, 0x07, 0x8e, 0xe5, 0xce, 0x77, 0xf7, 0xaa,
+ 0xf5, 0x63, 0x54, 0xf7, 0x12, 0xd6, 0x96, 0x7c, 0x09, 0xe3, 0xef, 0x5a,
+ 0x56, 0x62, 0x4e, 0x93, 0x13, 0xc4, 0xa8, 0xb7, 0x1c, 0xb1, 0x25, 0x23,
+ 0xa7, 0xa7, 0x56, 0x48, 0x12, 0x63, 0xc3, 0x73, 0xa3, 0xf2, 0xac, 0xbe,
+ 0xb2, 0xca, 0x85, 0x62, 0xd6, 0x7b, 0x83, 0x5e, 0x4b, 0x80, 0xef, 0xef,
+ 0x01, 0xdf, 0xdc, 0xba, 0x0a, 0xe9, 0xb3, 0x63, 0xbf, 0x36, 0x44, 0x02,
+ 0xb2, 0x3a, 0xab, 0xa9, 0x26, 0xac, 0x7a, 0x1c, 0x3d, 0x27, 0x4d, 0x2f,
+ 0x7f, 0x60, 0xfe, 0x47, 0xfd, 0x24, 0x94, 0xf4, 0x9d, 0x2b, 0x09, 0xec,
+ 0xe9, 0xa4, 0xe1, 0x39, 0xac, 0x75, 0x87, 0x7f, 0xb9, 0xbb, 0xb4, 0x20,
+ 0x44, 0xc1, 0x09, 0xf1, 0x71, 0x7a, 0xa5, 0x6c, 0xba, 0xcc, 0x87, 0xb4,
+ 0xba, 0x09, 0xad, 0xac, 0xdc, 0x5b, 0x1f, 0xda, 0x26, 0x13, 0xe3, 0xde,
+ 0xf7, 0xd0, 0xc6, 0xd0, 0xed, 0xa7, 0x60, 0x69, 0x9f, 0x10, 0x21, 0x43,
+ 0x2a, 0xec, 0xca, 0xea, 0xdb, 0x5b, 0x6d, 0xab, 0x43, 0xbb, 0x6b, 0x98,
+ 0xfd, 0xde, 0x70, 0x4a, 0x4a, 0x71, 0x7a, 0xbb, 0xfa, 0xab, 0xb0, 0x72,
+ 0x05, 0xf5, 0x8d, 0xb0, 0xdd, 0x97, 0x48, 0x89, 0x24, 0x0d, 0xb1, 0x00,
+ 0xa1, 0xe3, 0xe0, 0x54, 0xda, 0x18, 0xeb, 0xcb, 0xa7, 0xd3, 0x07, 0x68,
+ 0x73, 0x87, 0x23, 0xc0, 0x1e, 0x65, 0x4f, 0xeb, 0x06, 0x6b, 0xc7, 0x4d,
+ 0x38, 0xf6, 0xce, 0xcb, 0xdc, 0xdd, 0xa5, 0xda, 0x38, 0x09, 0x0e, 0xe3,
+ 0xca, 0x11, 0x7a, 0x69, 0x36, 0xe1, 0x52, 0xeb, 0x3e, 0x9b, 0x26, 0x23,
+ 0xc3, 0xb4, 0xa4, 0xa4, 0x63, 0xa6, 0x50, 0x5a, 0x09, 0x0f, 0xd4, 0x4f,
+ 0xf3, 0x8f, 0xff, 0x00, 0xc9, 0x2d, 0x5a, 0xc8, 0x18, 0xe4, 0x3b, 0x40,
+ 0x06, 0xbf, 0x00, 0x10, 0x89, 0xf2, 0x98, 0xd7, 0x84, 0x76, 0xb4, 0x1c,
+ 0x72, 0x39, 0x24, 0x42, 0x4a, 0x73, 0x3a, 0xd5, 0x2d, 0x6e, 0x38, 0x2d,
+ 0x27, 0x70, 0x2d, 0x8f, 0x0e, 0x7c, 0x17, 0x19, 0x9a, 0xe7, 0x37, 0x3a,
+ 0xc7, 0x7e, 0x73, 0x5c, 0x0f, 0xcc, 0x42, 0xed, 0xba, 0xe1, 0x23, 0x18,
+ 0x9f, 0x36, 0x8f, 0xc5, 0x71, 0x1d, 0x40, 0xce, 0x65, 0xbf, 0x1f, 0xe0,
+ 0x92, 0x9f, 0x42, 0xe8, 0xd9, 0x38, 0x37, 0xb5, 0xbd, 0x43, 0x1a, 0xc6,
+ 0x97, 0xd8, 0xd0, 0x1f, 0x54, 0x8d, 0xd5, 0x81, 0x12, 0xc2, 0xcf, 0x23,
+ 0xdf, 0xba, 0xda, 0x6e, 0x55, 0x36, 0x3a, 0x69, 0xad, 0xa6, 0xe3, 0xa9,
+ 0x2e, 0xd0, 0x00, 0x17, 0x9b, 0x7d, 0x5a, 0xa7, 0x2a, 0x8c, 0xec, 0x7c,
+ 0xb2, 0x36, 0x63, 0x5c, 0xe7, 0x52, 0x1e, 0xe3, 0x01, 0xe4, 0x88, 0xf6,
+ 0x8e, 0xf0, 0x48, 0x5d, 0xad, 0x56, 0xe2, 0x87, 0xbb, 0x1f, 0x2d, 0xad,
+ 0xd7, 0x42, 0xd7, 0x77, 0x49, 0x49, 0xdf, 0xd4, 0xaf, 0xf5, 0xb7, 0x5f,
+ 0xf6, 0x73, 0x1a, 0x06, 0x31, 0xdb, 0x9c, 0xef, 0x81, 0xf2, 0x5c, 0x5f,
+ 0xd7, 0x3c, 0xfa, 0xb2, 0x72, 0xea, 0xa6, 0xbf, 0xa5, 0x50, 0x73, 0xac,
+ 0xf2, 0x2f, 0x88, 0x1f, 0x70, 0x95, 0xd9, 0x66, 0x64, 0x60, 0xe3, 0xd1,
+ 0x65, 0xed, 0xd9, 0x63, 0xa9, 0x63, 0x9c, 0xc6, 0x34, 0x6a, 0x20, 0x76,
+ 0x5e, 0x5f, 0x95, 0x91, 0x66, 0x56, 0x45, 0x99, 0x16, 0x7d, 0x3b, 0x1c,
+ 0x5c, 0x7f, 0xb9, 0x25, 0x22, 0x49, 0x24, 0xa1, 0x25, 0x29, 0x24, 0x92,
+ 0x49, 0x4b, 0xed, 0x20, 0x07, 0x76, 0x3c, 0x7c, 0x93, 0x24, 0x92, 0x4a,
+ 0x7a, 0xef, 0xab, 0xe0, 0x9c, 0x0a, 0xa3, 0xf9, 0x5a, 0x7f, 0x69, 0x69,
+ 0xbc, 0xfb, 0xb5, 0xef, 0xaa, 0xcb, 0xfa, 0xbc, 0xe1, 0xf6, 0x2a, 0x87,
+ 0xf5, 0xa7, 0xef, 0x5a, 0x6f, 0xda, 0xdb, 0x20, 0x6b, 0x3a, 0x04, 0x94,
+ 0xe7, 0xfa, 0x54, 0x59, 0x9b, 0x60, 0xb1, 0xa0, 0x93, 0x11, 0x33, 0x3c,
+ 0x2b, 0xac, 0xc2, 0xc4, 0x03, 0x5a, 0x9a, 0x7c, 0xf5, 0x51, 0xa9, 0xb5,
+ 0x9c, 0x87, 0x00, 0x0b, 0xac, 0x20, 0x70, 0xd9, 0xed, 0xe3, 0x21, 0x5c,
+ 0x74, 0x8d, 0x20, 0xb7, 0x5f, 0x09, 0xff, 0x00, 0xa9, 0x29, 0x29, 0xa3,
+ 0x95, 0x86, 0xc6, 0xb0, 0x9a, 0x31, 0xeb, 0xdd, 0xdb, 0x76, 0xef, 0xef,
+ 0x54, 0xf0, 0xf0, 0x2d, 0xb2, 0xc7, 0x1c, 0xba, 0x6b, 0x8f, 0xcd, 0xdb,
+ 0x21, 0x6d, 0x93, 0xed, 0xef, 0xfe, 0x6b, 0x92, 0xdb, 0x03, 0x46, 0x92,
+ 0x7c, 0xe0, 0x7f, 0x14, 0x94, 0xd2, 0xfb, 0x06, 0x30, 0x98, 0xa8, 0x0f,
+ 0x83, 0x9d, 0xfd, 0xe8, 0x34, 0x63, 0xd3, 0x56, 0x5b, 0x2c, 0x6b, 0x0c,
+ 0xb1, 0xc0, 0x8f, 0x73, 0xb4, 0xd5, 0x5e, 0xf4, 0xed, 0x79, 0x98, 0x20,
+ 0x79, 0x46, 0xbf, 0x8a, 0xaf, 0x6e, 0xec, 0x63, 0xbd, 0xf3, 0xb0, 0x73,
+ 0x22, 0x7f, 0xbd, 0x25, 0x26, 0xce, 0xc2, 0xa1, 0xf9, 0x76, 0xbc, 0xb4,
+ 0xee, 0x79, 0x92, 0x43, 0x9c, 0x39, 0xf2, 0x05, 0x66, 0x67, 0xf4, 0xea,
+ 0x05, 0x44, 0xb5, 0xa4, 0x3b, 0xfa, 0xc7, 0xfb, 0xd6, 0xce, 0x7b, 0x89,
+ 0x7d, 0x56, 0x37, 0x56, 0xd9, 0x5b, 0x5d, 0x3f, 0xea, 0x16, 0x47, 0x50,
+ 0xbc, 0x37, 0x6b, 0x6c, 0x0e, 0xf7, 0x9d, 0x36, 0xc1, 0xfc, 0x12, 0x53,
+ 0xa0, 0x70, 0x31, 0xf2, 0x71, 0xb1, 0x2c, 0xb1, 0xa4, 0xb9, 0xb5, 0x06,
+ 0xc8, 0x71, 0x1a, 0x0f, 0x81, 0x51, 0xfd, 0x8d, 0x87, 0xfb, 0xae, 0xff,
+ 0x00, 0x3d, 0xdf, 0xde, 0xac, 0x62, 0xb5, 0xee, 0xe9, 0xb8, 0xfb, 0x7e,
+ 0x93, 0x65, 0xa5, 0x2f, 0x4f, 0x27, 0x76, 0xdd, 0xc3, 0xf8, 0xfe, 0x54,
+ 0x94, 0x87, 0xd5, 0xb0, 0x8f, 0xe6, 0xec, 0xfb, 0x87, 0xf7, 0xa9, 0xb6,
+ 0xe2, 0x1b, 0x06, 0xa7, 0xff, 0x00, 0x9b, 0xfe, 0xd4, 0x47, 0x4b, 0x66,
+ 0x60, 0x27, 0xa9, 0xbe, 0xa1, 0x3e, 0x03, 0x94, 0x94, 0x82, 0x41, 0xff,
+ 0x00, 0x04, 0xff, 0x00, 0x8e, 0xd4, 0xa2, 0xcf, 0xcd, 0x0e, 0x1f, 0x2f,
+ 0xf6, 0xab, 0x0d, 0xe7, 0x5d, 0x02, 0x9b, 0xe0, 0x1d, 0x81, 0xc9, 0x29,
+ 0xcd, 0xba, 0xbe, 0xa1, 0x6c, 0x0a, 0xec, 0x78, 0x23, 0x40, 0x03, 0x25,
+ 0x5e, 0x3d, 0x23, 0xad, 0xe3, 0xd2, 0xdb, 0xac, 0x8b, 0x24, 0x7b, 0x98,
+ 0xd1, 0x2f, 0x13, 0xd8, 0xb4, 0x2d, 0xbe, 0x91, 0xd3, 0xa8, 0x6c, 0x67,
+ 0xbd, 0xbb, 0xae, 0x20, 0x8a, 0xa7, 0x86, 0x8f, 0xde, 0x8f, 0x35, 0x6e,
+ 0xdb, 0xcf, 0xac, 0xd6, 0xb4, 0x7d, 0x12, 0x25, 0xde, 0x65, 0x25, 0x3c,
+ 0x96, 0x63, 0xb3, 0xb1, 0xf1, 0xb7, 0xdb, 0x5b, 0xaa, 0x93, 0x13, 0x63,
+ 0x4b, 0x04, 0x78, 0x09, 0xee, 0xb3, 0xa9, 0xe8, 0x7d, 0x47, 0x37, 0x11,
+ 0xed, 0xdb, 0xe9, 0xb5, 0xa1, 0xd6, 0x17, 0xb8, 0x19, 0x30, 0x37, 0x40,
+ 0xf3, 0xd1, 0x75, 0x9f, 0x5a, 0x2c, 0xff, 0x00, 0x23, 0xbd, 0xe4, 0x4b,
+ 0x83, 0xeb, 0x73, 0x67, 0xf7, 0x83, 0xa4, 0x2d, 0x76, 0x65, 0x62, 0xbf,
+ 0xa7, 0xd7, 0x99, 0x7b, 0xdb, 0x4d, 0x57, 0x56, 0xd7, 0x17, 0x38, 0xc0,
+ 0x1b, 0xdb, 0x31, 0xaa, 0x4a, 0x79, 0x4c, 0x46, 0x64, 0x57, 0x45, 0x59,
+ 0x15, 0x19, 0xdc, 0xc6, 0xb9, 0xcd, 0x3d, 0xcc, 0x22, 0xbf, 0xab, 0x5d,
+ 0x60, 0xf4, 0xcd, 0x1e, 0xfe, 0xc4, 0x8f, 0xe2, 0xad, 0xd3, 0x55, 0x47,
+ 0x19, 0xbf, 0x67, 0xb1, 0xb7, 0x53, 0xa8, 0xae, 0xc6, 0x99, 0x04, 0x03,
+ 0x09, 0x86, 0x05, 0xa5, 0xe1, 0xad, 0x6c, 0xd8, 0xed, 0x07, 0x82, 0x4a,
+ 0x78, 0x1c, 0xbb, 0xee, 0xcf, 0xea, 0x77, 0x37, 0x24, 0xed, 0x15, 0x87,
+ 0x0a, 0xdb, 0x1a, 0x00, 0x0f, 0xf1, 0x5d, 0x36, 0x15, 0x95, 0xd5, 0x89,
+ 0x50, 0x6e, 0xe3, 0x2d, 0x07, 0x46, 0xbb, 0xbf, 0xc9, 0x5a, 0xeb, 0xbf,
+ 0x57, 0xb1, 0xf1, 0xf0, 0xc6, 0x4d, 0x2e, 0x0d, 0xb5, 0x8d, 0x6d, 0x37,
+ 0xd8, 0xee, 0xed, 0x2e, 0x9d, 0xc3, 0xcc, 0x13, 0xf7, 0x21, 0xe3, 0x52,
+ 0xd7, 0x31, 0x8c, 0xad, 0xc0, 0xb5, 0xad, 0x01, 0xa4, 0x1d, 0x08, 0x03,
+ 0xc5, 0x25, 0x2c, 0xec, 0x86, 0x6d, 0x3a, 0x3c, 0x9f, 0x26, 0x3b, 0xfb,
+ 0x95, 0xda, 0x8f, 0xe8, 0xc7, 0x89, 0x02, 0x09, 0x54, 0xed, 0x86, 0x7b,
+ 0x41, 0xfb, 0xb5, 0x56, 0x99, 0x24, 0x34, 0xf6, 0x11, 0xa7, 0xc9, 0x25,
+ 0x34, 0x3a, 0xcb, 0x5f, 0x6b, 0x4d, 0x75, 0xb4, 0xbd, 0xe4, 0x86, 0xb5,
+ 0x8d, 0x12, 0x49, 0x27, 0xb2, 0xa3, 0x8d, 0xf5, 0x17, 0x23, 0x2b, 0x25,
+ 0xd7, 0x75, 0x1b, 0xbe, 0xcd, 0x59, 0x20, 0xec, 0x60, 0xde, 0xf2, 0x3c,
+ 0xdd, 0xf4, 0x5b, 0xf8, 0xae, 0xab, 0xa6, 0x52, 0xc7, 0x3a, 0xdc, 0x87,
+ 0x09, 0x20, 0x86, 0xb7, 0xcb, 0x49, 0x2a, 0xcd, 0xee, 0x60, 0x73, 0x20,
+ 0x91, 0x3a, 0x0e, 0xe0, 0x88, 0x49, 0x4e, 0x01, 0xc0, 0xb7, 0x0d, 0xe3,
+ 0x12, 0xf7, 0xb6, 0xfc, 0x2a, 0x61, 0x98, 0xae, 0x21, 0xa1, 0xf8, 0xe4,
+ 0x90, 0xe6, 0xee, 0x0d, 0x89, 0x1a, 0x72, 0xa7, 0x94, 0x1b, 0x63, 0x5c,
+ 0xcb, 0xd9, 0xee, 0x6f, 0x88, 0xd4, 0x7c, 0x0a, 0xd1, 0x2c, 0xa4, 0x17,
+ 0xba, 0xc6, 0xb5, 0xee, 0xfa, 0x05, 0xf1, 0xa9, 0x61, 0xd2, 0x0a, 0xcb,
+ 0x19, 0x2f, 0xa7, 0x24, 0xd1, 0x90, 0x7d, 0x5c, 0x70, 0x45, 0x6d, 0xb0,
+ 0xea, 0x5b, 0x3c, 0x07, 0x79, 0x78, 0x14, 0x94, 0xc6, 0x9c, 0x6a, 0xdd,
+ 0x8c, 0xfa, 0xeb, 0x91, 0xbd, 0xa4, 0x6e, 0xee, 0x34, 0xe5, 0x52, 0xbf,
+ 0xea, 0x93, 0x7a, 0x8e, 0x25, 0x56, 0xb4, 0x8c, 0x7c, 0xed, 0x92, 0xe3,
+ 0x1e, 0xcb, 0x08, 0xd3, 0xdd, 0x1f, 0x95, 0x75, 0x0e, 0x6e, 0x2d, 0x35,
+ 0x03, 0x63, 0x9b, 0x5d, 0x2d, 0xfa, 0x44, 0xf7, 0xf2, 0xf9, 0xaa, 0x59,
+ 0x99, 0x2f, 0xce, 0x61, 0x66, 0x1b, 0xad, 0xc2, 0xda, 0x76, 0xb2, 0xd2,
+ 0xd0, 0x09, 0x1d, 0xc8, 0x06, 0x60, 0x24, 0xa7, 0xce, 0xf3, 0x3a, 0x1f,
+ 0x56, 0xc2, 0xdc, 0x72, 0x31, 0x6c, 0x6b, 0x1b, 0xcd, 0x81, 0xbb, 0x99,
+ 0xfe, 0x7b, 0x64, 0x2a, 0x5d, 0xe0, 0x2f, 0x4e, 0xc7, 0xa7, 0xa9, 0xd0,
+ 0x1a, 0xe1, 0x9e, 0xfb, 0x48, 0x12, 0xe6, 0xbd, 0x8c, 0x21, 0xf1, 0xc8,
+ 0x30, 0x27, 0x55, 0xcb, 0xfd, 0x6e, 0xc1, 0xc5, 0xf5, 0x5b, 0x9f, 0x89,
+ 0x58, 0xa7, 0x7b, 0x83, 0x6f, 0x63, 0x7e, 0x8e, 0xe3, 0xa8, 0x77, 0x97,
+ 0x9a, 0x4a, 0x79, 0xf6, 0xd2, 0xc8, 0xd4, 0x8f, 0xbd, 0x3f, 0xa5, 0x5f,
+ 0x8b, 0x7e, 0xf4, 0xe6, 0xb0, 0x09, 0x0a, 0x25, 0x9a, 0x24, 0xa5, 0x8d,
+ 0x6d, 0x8e, 0x47, 0xde, 0x14, 0x1d, 0x5c, 0x70, 0x41, 0xf9, 0xa2, 0x6c,
+ 0x11, 0xc9, 0x51, 0x2d, 0x1e, 0x69, 0x29, 0xe9, 0xfa, 0x08, 0x23, 0x09,
+ 0x9d, 0xc0, 0x9f, 0xca, 0xb4, 0xcd, 0x60, 0xd8, 0xd7, 0x13, 0xa8, 0x95,
+ 0x9d, 0xf5, 0x7c, 0x01, 0x89, 0x5c, 0xf8, 0x3b, 0xf2, 0xad, 0x39, 0x9b,
+ 0x07, 0x6f, 0x00, 0x92, 0x90, 0x56, 0x6c, 0xaf, 0x35, 0xce, 0x63, 0x5e,
+ 0x5b, 0xb4, 0x7d, 0x16, 0x97, 0x6b, 0xa7, 0x82, 0xb3, 0xea, 0x37, 0x53,
+ 0xe9, 0x5c, 0xe7, 0x13, 0xa3, 0xb6, 0xb8, 0x11, 0xe4, 0x98, 0x5e, 0x28,
+ 0x73, 0xdc, 0x44, 0xbb, 0xb0, 0x9e, 0x56, 0x66, 0x65, 0x99, 0x39, 0x19,
+ 0x0d, 0xb0, 0xda, 0xe6, 0x39, 0xbc, 0x35, 0xa4, 0xed, 0x01, 0x25, 0x3a,
+ 0x87, 0x39, 0xed, 0x66, 0xd1, 0x55, 0xa4, 0xf6, 0xfd, 0x11, 0x9f, 0xca,
+ 0x81, 0x56, 0x7e, 0x59, 0x73, 0xbd, 0x6a, 0xec, 0x2d, 0xfc, 0xd2, 0x2a,
+ 0xec, 0x83, 0x5e, 0x4b, 0xeb, 0xd5, 0xc4, 0xbc, 0x8e, 0x67, 0x9f, 0x92,
+ 0x26, 0x13, 0x9c, 0xfb, 0x5c, 0xff, 0x00, 0x54, 0xbe, 0xb7, 0xea, 0xd1,
+ 0xd8, 0x24, 0xa6, 0x6d, 0xea, 0x76, 0x6b, 0x15, 0xda, 0x08, 0xd0, 0xfe,
+ 0x8b, 0xb7, 0xde, 0x81, 0x7e, 0x50, 0xb4, 0x8f, 0x59, 0x97, 0xbb, 0xf9,
+ 0x25, 0xb0, 0x3e, 0xe0, 0xaf, 0x16, 0x8d, 0xfb, 0xc7, 0xc3, 0xe2, 0x99,
+ 0xfb, 0x48, 0x26, 0x24, 0x04, 0x94, 0xbe, 0x56, 0x43, 0x46, 0x06, 0x25,
+ 0xcd, 0x6b, 0xe0, 0x82, 0xc2, 0xd6, 0xb6, 0x5c, 0x23, 0xcb, 0xb2, 0xcb,
+ 0xbb, 0x32, 0x86, 0x9d, 0x28, 0xb3, 0xd4, 0xfd, 0xfb, 0x1a, 0x64, 0x7e,
+ 0x55, 0xac, 0xe0, 0x1d, 0xd3, 0x9c, 0x22, 0x7d, 0x2b, 0x26, 0x3c, 0x9c,
+ 0xb3, 0xde, 0x4b, 0xa4, 0x06, 0xf9, 0x72, 0x42, 0x4a, 0x6d, 0xe2, 0x65,
+ 0xef, 0xe9, 0x16, 0x5a, 0x03, 0x9d, 0xe9, 0xbe, 0x36, 0xb4, 0x41, 0x3f,
+ 0x04, 0x1f, 0xda, 0x15, 0x6c, 0xfa, 0x39, 0x1b, 0xe3, 0xc3, 0xbf, 0xde,
+ 0x8f, 0xd3, 0x3f, 0xa1, 0x64, 0xb1, 0xc0, 0x43, 0x61, 0xc4, 0x7c, 0x90,
+ 0xbd, 0x6a, 0xf9, 0x86, 0xc7, 0x82, 0x4a, 0x6d, 0xef, 0xdc, 0x49, 0x20,
+ 0xc7, 0xf1, 0x53, 0x6b, 0x83, 0x5d, 0xed, 0xe0, 0xf2, 0x4f, 0x0b, 0x3d,
+ 0xdf, 0x6c, 0x65, 0x7b, 0xcd, 0xa0, 0xf0, 0x20, 0x55, 0x3c, 0xe9, 0xe2,
+ 0xa5, 0x19, 0xed, 0x1e, 0xeb, 0x20, 0x72, 0x4f, 0xa3, 0xa7, 0xe5, 0x49,
+ 0x4e, 0x83, 0x9e, 0x03, 0xa4, 0x08, 0xf1, 0x46, 0xa5, 0x9f, 0x68, 0xb5,
+ 0x8d, 0x63, 0x84, 0x13, 0xee, 0x8e, 0xc3, 0xb9, 0x59, 0x42, 0xbc, 0xa2,
+ 0xdd, 0xdf, 0x68, 0x6f, 0xc3, 0xd3, 0x1f, 0xf9, 0x25, 0x36, 0x8c, 0x97,
+ 0x51, 0x76, 0xfc, 0xb3, 0x8e, 0xd1, 0x1f, 0xa5, 0x63, 0x36, 0x99, 0x3d,
+ 0xb9, 0x29, 0x29, 0xea, 0x99, 0x95, 0x8e, 0xfb, 0x7e, 0xcb, 0x5b, 0xc0,
+ 0x75, 0x60, 0x4b, 0x01, 0xe1, 0xbd, 0x87, 0xcd, 0x57, 0xb5, 0xff, 0x00,
+ 0xac, 0xd0, 0xce, 0xee, 0x2f, 0xb0, 0xfc, 0x84, 0x05, 0xcd, 0x60, 0xdb,
+ 0x82, 0x6e, 0xa9, 0xcc, 0x87, 0xe7, 0x62, 0x07, 0x35, 0x97, 0x02, 0x41,
+ 0xb0, 0x38, 0x7d, 0x23, 0xe2, 0x7e, 0x2a, 0xef, 0xd5, 0xee, 0xa9, 0x77,
+ 0x54, 0xce, 0x7f, 0xda, 0x69, 0x75, 0x57, 0xe3, 0x34, 0xb1, 0xcd, 0x8f,
+ 0x68, 0xf1, 0xf9, 0xa4, 0xa6, 0xdf, 0xd6, 0x9b, 0x5a, 0x3a, 0x57, 0xa4,
+ 0x4f, 0xba, 0xc7, 0x02, 0x07, 0x8e, 0xc1, 0xaa, 0x87, 0x47, 0xc0, 0x77,
+ 0x51, 0xe9, 0x18, 0x9f, 0x6a, 0xb0, 0xbe, 0xac, 0x62, 0xe1, 0x5b, 0x0f,
+ 0x10, 0x38, 0x9f, 0x18, 0x44, 0xeb, 0xed, 0x76, 0x46, 0x35, 0x55, 0x57,
+ 0x4f, 0xad, 0x66, 0xf8, 0x60, 0x98, 0x32, 0xf0, 0x7c, 0xc6, 0x8a, 0xd7,
+ 0x41, 0x65, 0xf4, 0xe0, 0x3e, 0xab, 0xeb, 0xf4, 0x76, 0xbd, 0xc0, 0x32,
+ 0x41, 0x8e, 0xdc, 0x84, 0x94, 0xce, 0xac, 0x4b, 0x28, 0xac, 0x57, 0x5e,
+ 0xd3, 0x40, 0xd6, 0xb0, 0x46, 0xac, 0x9d, 0x48, 0xd3, 0xb4, 0xa8, 0xb2,
+ 0xde, 0xa5, 0x8d, 0x60, 0xb8, 0x86, 0xdd, 0x43, 0xa1, 0xaf, 0xa9, 0x8d,
+ 0xf7, 0xb2, 0x7f, 0x39, 0xa7, 0xbc, 0x78, 0x2b, 0xef, 0xd1, 0xa4, 0xd6,
+ 0xef, 0x70, 0xfc, 0xd3, 0xdd, 0x56, 0xce, 0xcb, 0xab, 0x03, 0x13, 0xd7,
+ 0xb8, 0xc3, 0x5a, 0x09, 0xdb, 0x3c, 0x9e, 0x04, 0xa4, 0xa7, 0x37, 0xeb,
+ 0x4f, 0x52, 0xa5, 0xbd, 0x21, 0xd4, 0x54, 0xf6, 0x59, 0x66, 0x51, 0x0c,
+ 0x6b, 0x5a, 0x64, 0x80, 0x0e, 0xe7, 0x13, 0xe0, 0xab, 0xfd, 0x59, 0xe8,
+ 0xf4, 0x9c, 0x17, 0x5d, 0x92, 0xd2, 0x45, 0xba, 0x56, 0x24, 0x82, 0x00,
+ 0xfc, 0xef, 0xbd, 0x63, 0x61, 0xe2, 0x59, 0xd5, 0x3a, 0xa0, 0x73, 0xb5,
+ 0x6d, 0xae, 0x2e, 0x7b, 0x80, 0x8d, 0x39, 0x71, 0x5d, 0xb5, 0xce, 0x6e,
+ 0x2e, 0x38, 0x63, 0x00, 0x6b, 0x5b, 0xb5, 0x8c, 0x68, 0xff, 0x00, 0x34,
+ 0x24, 0xa7, 0x37, 0x33, 0xa5, 0xd1, 0x56, 0x3b, 0xae, 0xa6, 0xc2, 0xd7,
+ 0xb4, 0x10, 0x1a, 0xf8, 0x3b, 0xf4, 0xe0, 0x70, 0xa9, 0xb5, 0xc4, 0x30,
+ 0x38, 0x6b, 0xa0, 0xd3, 0xc5, 0x69, 0xf5, 0x6b, 0x2a, 0x0d, 0xac, 0x38,
+ 0x4e, 0xd7, 0x02, 0x7e, 0x61, 0x62, 0x3b, 0xa8, 0x53, 0x82, 0x58, 0x5f,
+ 0xef, 0xbe, 0x41, 0xaa, 0x96, 0xfb, 0x9e, 0xef, 0x0f, 0x6f, 0xf0, 0x49,
+ 0x4f, 0x4d, 0x55, 0x6c, 0xc5, 0xa0, 0x31, 0xde, 0xdd, 0x03, 0x9c, 0x4e,
+ 0x9a, 0x9e, 0x55, 0x1c, 0xcc, 0x47, 0xe4, 0x5d, 0x45, 0xcc, 0x2e, 0x0c,
+ 0x69, 0x2e, 0x21, 0xa7, 0xc0, 0x1e, 0xde, 0x05, 0x73, 0x5d, 0x4b, 0xa9,
+ 0xf5, 0x77, 0x3b, 0x19, 0xf9, 0x20, 0x63, 0xd7, 0x98, 0xf2, 0xd6, 0x17,
+ 0x9d, 0xcf, 0x68, 0xfd, 0xe2, 0xc1, 0x11, 0xf7, 0xaa, 0xb8, 0xce, 0xea,
+ 0xde, 0xbb, 0x86, 0x2e, 0x68, 0x75, 0xf3, 0xfa, 0x3a, 0xc8, 0x2c, 0xdd,
+ 0xac, 0x1d, 0xd3, 0xed, 0x10, 0x92, 0x9e, 0xba, 0xe0, 0xd1, 0x5e, 0xe3,
+ 0xa1, 0xdc, 0x24, 0x4f, 0x75, 0x54, 0x63, 0xd6, 0xf0, 0xf7, 0x3b, 0x51,
+ 0x1e, 0xe6, 0xc4, 0xcc, 0x76, 0x28, 0x75, 0x9c, 0xce, 0x32, 0xae, 0xaa,
+ 0xeb, 0x21, 0xa1, 0xc2, 0xb1, 0x02, 0x62, 0x4f, 0x7f, 0x14, 0x77, 0xb4,
+ 0xb5, 0xae, 0x30, 0x4b, 0x9b, 0x0e, 0x23, 0xf2, 0xa4, 0xa6, 0x57, 0xd2,
+ 0xed, 0xcd, 0x78, 0x02, 0xd6, 0x81, 0xa3, 0x49, 0xfe, 0x6c, 0x7f, 0x25,
+ 0x3f, 0xa8, 0xc0, 0x25, 0xcd, 0x20, 0xf7, 0x05, 0x0e, 0xf0, 0xda, 0xe7,
+ 0x93, 0xbf, 0x53, 0x3c, 0x14, 0xa9, 0x6b, 0xac, 0x2e, 0x71, 0x88, 0x1c,
+ 0x42, 0x4a, 0x57, 0xda, 0x1a, 0x25, 0xec, 0x3f, 0xcd, 0x83, 0xe3, 0xdb,
+ 0xb2, 0xc3, 0xfa, 0xc5, 0x49, 0xbf, 0x0f, 0x3b, 0x68, 0x91, 0x8f, 0x55,
+ 0x0f, 0x76, 0x9f, 0x9e, 0xe7, 0xeb, 0xf7, 0x05, 0xa9, 0x96, 0xc6, 0x55,
+ 0x8a, 0xfd, 0xe7, 0xd8, 0xe2, 0xd6, 0xbc, 0x91, 0x1c, 0xb8, 0x21, 0x55,
+ 0x50, 0xcb, 0xc2, 0xea, 0xcd, 0xff, 0x00, 0x4e, 0xd7, 0x31, 0xa0, 0x7f,
+ 0x21, 0x9e, 0xd4, 0x94, 0xf0, 0x4c, 0x32, 0xc6, 0x9e, 0x74, 0x48, 0x8d,
+ 0x27, 0x45, 0x1a, 0xbf, 0x9b, 0x1f, 0x3f, 0xca, 0xa4, 0x4c, 0x76, 0x99,
+ 0xf0, 0x49, 0x4b, 0x6d, 0x1d, 0xdc, 0x3e, 0xf5, 0x07, 0x34, 0x78, 0xfe,
+ 0x2a, 0x73, 0xe4, 0x7f, 0x05, 0x03, 0x13, 0xa8, 0x23, 0xee, 0x49, 0x4f,
+ 0x51, 0xf5, 0x7d, 0xa1, 0xd8, 0x95, 0x83, 0x1c, 0x1d, 0x7b, 0x7d, 0x25,
+ 0xa6, 0xf1, 0xb1, 0xdb, 0x86, 0xb1, 0xc9, 0x59, 0xbf, 0x57, 0x84, 0xe1,
+ 0xb3, 0xe0, 0xe3, 0xff, 0x00, 0x49, 0x1b, 0xab, 0xe4, 0x3a, 0x8c, 0x4b,
+ 0x1c, 0xce, 0x62, 0x27, 0xb0, 0x94, 0x94, 0xd4, 0xb7, 0xa9, 0x07, 0xe5,
+ 0x6d, 0xad, 0xbb, 0xde, 0xe3, 0xb2, 0xb6, 0xf9, 0xa9, 0x64, 0x5d, 0x55,
+ 0x4e, 0x15, 0xb9, 0xfe, 0xf6, 0x9f, 0x7f, 0xf5, 0xbb, 0x85, 0x4b, 0xea,
+ 0xc6, 0x3d, 0xb9, 0x5d, 0x44, 0x58, 0x1a, 0x6c, 0x75, 0x4c, 0x75, 0xb1,
+ 0xe6, 0x3e, 0x8f, 0xfd, 0x25, 0xa1, 0x4f, 0xd5, 0xc7, 0x66, 0xdb, 0x70,
+ 0x7b, 0x2f, 0xaa, 0xc8, 0x24, 0x3d, 0xc3, 0x68, 0xdd, 0x1a, 0xe8, 0x79,
+ 0x92, 0x92, 0x9a, 0xef, 0xcb, 0xa8, 0x0d, 0xed, 0x33, 0x1a, 0xc7, 0x90,
+ 0x4b, 0x0f, 0x34, 0x55, 0x9a, 0x2b, 0x9f, 0xd1, 0x5d, 0xc7, 0x80, 0x2e,
+ 0xff, 0x00, 0x6a, 0xcb, 0x1d, 0x2b, 0xaa, 0x8c, 0x81, 0x40, 0xa9, 0xee,
+ 0x97, 0x41, 0x70, 0x69, 0xdb, 0xf1, 0x95, 0x5c, 0x1b, 0xea, 0xc9, 0x6d,
+ 0x2f, 0xfe, 0x72, 0xb7, 0x16, 0x47, 0x9c, 0xff, 0x00, 0x7a, 0x4a, 0x7b,
+ 0x47, 0x48, 0x28, 0x42, 0xcb, 0x35, 0x6b, 0x80, 0xf9, 0x29, 0xb1, 0xd6,
+ 0xfd, 0x9d, 0x9e, 0xa3, 0xb7, 0x59, 0x12, 0xe7, 0x10, 0x1a, 0x75, 0xf2,
+ 0x0a, 0xb6, 0xfb, 0x0b, 0xcb, 0x43, 0xbb, 0x83, 0xaf, 0xc0, 0xa4, 0xa7,
+ 0x4b, 0x15, 0xdb, 0xf1, 0x32, 0xab, 0xee, 0x1a, 0x1c, 0x07, 0xc1, 0x66,
+ 0x39, 0xc4, 0xf7, 0x85, 0x73, 0xa3, 0x39, 0xff, 0x00, 0x6a, 0xb6, 0x9b,
+ 0x1d, 0xb8, 0xbe, 0xb7, 0x0d, 0x7b, 0x9f, 0x15, 0x99, 0x71, 0x7b, 0x2c,
+ 0x02, 0x63, 0xdd, 0x04, 0x24, 0xa7, 0x5b, 0xa4, 0xc1, 0x19, 0x0c, 0xfd,
+ 0xe6, 0x7f, 0xb1, 0x56, 0xd3, 0x88, 0x56, 0x7a, 0x41, 0x1f, 0x6d, 0x35,
+ 0x9e, 0x1e, 0xc3, 0xfc, 0x0a, 0x8e, 0xcf, 0xd6, 0x3d, 0x1d, 0x3e, 0x9e,
+ 0xd9, 0x8f, 0x34, 0x94, 0xc9, 0x97, 0x3f, 0x61, 0x0e, 0x74, 0x00, 0x9a,
+ 0xcc, 0x87, 0x1a, 0x9e, 0xd9, 0x9f, 0x69, 0xfc, 0x8a, 0xb9, 0x71, 0x70,
+ 0xd7, 0x40, 0x78, 0xf8, 0xa9, 0xd8, 0x65, 0x86, 0x47, 0xe6, 0x9f, 0xc8,
+ 0x92, 0x92, 0xb5, 0xa4, 0x0d, 0x39, 0x27, 0x8f, 0x8a, 0xb1, 0x96, 0xea,
+ 0xf1, 0x71, 0x7d, 0x26, 0xba, 0x5e, 0x04, 0xbd, 0xdf, 0xca, 0x43, 0x2d,
+ 0x76, 0xe2, 0x47, 0x00, 0xac, 0xbe, 0xad, 0x95, 0x0d, 0x35, 0x8e, 0x5c,
+ 0x92, 0x9a, 0xb4, 0xdd, 0x43, 0x9e, 0x5f, 0x93, 0x53, 0xdc, 0xe7, 0x9d,
+ 0xb5, 0x3f, 0x1e, 0x03, 0x98, 0xef, 0x1d, 0xae, 0xfa, 0x5f, 0x7a, 0xd9,
+ 0xe9, 0xdd, 0x4e, 0xdc, 0x4c, 0xb0, 0x32, 0x9b, 0xef, 0x20, 0xb0, 0x59,
+ 0xc3, 0x6c, 0x1f, 0x90, 0x3b, 0x45, 0x99, 0xd2, 0xb1, 0xa4, 0x8c, 0x87,
+ 0x70, 0xd1, 0x0c, 0xf8, 0x9e, 0x4a, 0xde, 0xc3, 0xc5, 0xc7, 0xc8, 0xa7,
+ 0x25, 0x99, 0x20, 0x3a, 0x97, 0x34, 0x17, 0x03, 0xa1, 0x1b, 0x24, 0xee,
+ 0x1e, 0x04, 0x78, 0xa4, 0xa7, 0x3f, 0xeb, 0x77, 0x50, 0xf5, 0xac, 0xc3,
+ 0xc7, 0xa6, 0xc3, 0xb5, 0x8d, 0xde, 0xed, 0xa6, 0x3d, 0xce, 0x3a, 0x4f,
+ 0x81, 0x10, 0xb1, 0xaa, 0xc9, 0xc9, 0xa0, 0x93, 0x45, 0xcf, 0xad, 0xc4,
+ 0xcc, 0xb1, 0xe4, 0x12, 0x7c, 0xfc, 0x51, 0x1b, 0x9b, 0x89, 0x7b, 0xdd,
+ 0x8f, 0x97, 0xb8, 0xd6, 0xc2, 0x45, 0x19, 0x27, 0xe9, 0x35, 0xa7, 0xe8,
+ 0xef, 0x53, 0xbf, 0x02, 0xea, 0xd8, 0x1e, 0xc6, 0x7a, 0xec, 0xe4, 0x5b,
+ 0x59, 0x90, 0x47, 0xc0, 0x4c, 0x24, 0xa6, 0xd3, 0x3e, 0xb1, 0xf5, 0xba,
+ 0xf1, 0xff, 0x00, 0xa5, 0x39, 0xde, 0xf8, 0x05, 0xed, 0x6b, 0x8c, 0x47,
+ 0x1c, 0x28, 0xd9, 0xf5, 0x8b, 0xac, 0xd8, 0x76, 0x59, 0x7b, 0x5d, 0x3c,
+ 0xb1, 0xcc, 0x69, 0x69, 0x1e, 0x0e, 0x1b, 0x55, 0x07, 0x5d, 0x58, 0x60,
+ 0xac, 0x34, 0xb4, 0xcc, 0xf3, 0xac, 0xc4, 0x78, 0x28, 0x3a, 0xab, 0x68,
+ 0xb4, 0xd5, 0x6b, 0x5c, 0xcb, 0x34, 0x25, 0xaf, 0x10, 0xed, 0x44, 0xa4,
+ 0xa7, 0xa7, 0xfa, 0xaa, 0xfa, 0xee, 0xdf, 0x77, 0xa7, 0xb3, 0x21, 0x96,
+ 0x38, 0x3d, 0xcd, 0x24, 0x56, 0xd6, 0x11, 0xfb, 0x8b, 0x40, 0xe6, 0x7d,
+ 0xaf, 0x25, 0xd7, 0x3c, 0xed, 0xa6, 0xb2, 0x76, 0x0f, 0x21, 0xdf, 0xe2,
+ 0x57, 0x31, 0xd1, 0x73, 0x72, 0x5b, 0x5e, 0x7e, 0x36, 0x2b, 0x66, 0xeb,
+ 0x98, 0x0b, 0x1d, 0x1a, 0x34, 0xea, 0x0e, 0xaa, 0xcd, 0xf9, 0xf7, 0x43,
+ 0x7a, 0x6f, 0x4f, 0x1e, 0xbe, 0x73, 0xf9, 0x0c, 0xd5, 0xac, 0xf1, 0x32,
+ 0x78, 0x8f, 0x14, 0x94, 0xcf, 0xaf, 0xfd, 0x62, 0xf4, 0x89, 0xae, 0xb2,
+ 0x1f, 0x92, 0x60, 0xb4, 0x34, 0x68, 0xcd, 0x3f, 0x3b, 0xcd, 0x5e, 0xe8,
+ 0xfd, 0x34, 0x61, 0xe2, 0x55, 0xd4, 0x03, 0xc5, 0xd9, 0xd9, 0x20, 0x3d,
+ 0xf9, 0x0f, 0x1c, 0x34, 0xf0, 0xc6, 0x03, 0xc0, 0xf1, 0x3d, 0xd6, 0x20,
+ 0xfa, 0xbf, 0x65, 0x38, 0xb9, 0x62, 0xe7, 0x0b, 0x72, 0xdc, 0x04, 0xbd,
+ 0xba, 0x8d, 0x0e, 0xe2, 0x1b, 0x2b, 0x6b, 0x07, 0x2c, 0x55, 0xd2, 0x28,
+ 0x6d, 0x9a, 0x1a, 0x4e, 0xcf, 0x70, 0x31, 0x1c, 0x8f, 0xca, 0x92, 0x9c,
+ 0x5f, 0xad, 0x77, 0x5f, 0x94, 0x2a, 0x7f, 0xa6, 0x6b, 0xf4, 0xe5, 0xad,
+ 0x00, 0xcc, 0x99, 0xdd, 0xb9, 0xbd, 0xd5, 0x5e, 0x98, 0xcc, 0x8c, 0xeb,
+ 0x00, 0xb2, 0xe7, 0x54, 0xf8, 0x01, 0xce, 0x6f, 0xd2, 0x70, 0xf1, 0x3e,
+ 0x6a, 0xdf, 0x5b, 0xca, 0xc7, 0xb1, 0xa4, 0xd6, 0x6a, 0x19, 0x73, 0xfa,
+ 0x36, 0x57, 0xef, 0x71, 0x07, 0x92, 0x4f, 0xe6, 0xc0, 0x58, 0x9d, 0x2e,
+ 0xfc, 0xba, 0xb2, 0x1a, 0xea, 0xde, 0x6b, 0x60, 0x77, 0xb8, 0x44, 0xb6,
+ 0x26, 0x48, 0x49, 0x4f, 0x75, 0x8b, 0xd3, 0xb1, 0xb1, 0x00, 0xd8, 0xe7,
+ 0x39, 0xee, 0x1a, 0xbd, 0xc6, 0x49, 0x56, 0x2c, 0xb0, 0x97, 0x90, 0x0c,
+ 0xb5, 0xde, 0xd3, 0x1d, 0xbe, 0x28, 0x38, 0x6e, 0x17, 0xd2, 0xdb, 0x1b,
+ 0x13, 0xf1, 0x95, 0x0c, 0x8c, 0xba, 0xf0, 0x68, 0x7d, 0x97, 0xeb, 0x2e,
+ 0xd0, 0x37, 0x97, 0x3b, 0xb0, 0x09, 0x29, 0x3d, 0xc3, 0xd7, 0xae, 0xb7,
+ 0xc9, 0x25, 0xa3, 0x8f, 0x11, 0xc1, 0x9f, 0x84, 0x27, 0x65, 0x82, 0xb6,
+ 0x92, 0xc6, 0x4c, 0x72, 0x1b, 0xaa, 0xa9, 0x83, 0x7d, 0xb9, 0x4c, 0x7d,
+ 0xa1, 0x84, 0x1e, 0xc2, 0x41, 0xdb, 0x3d, 0xa4, 0x2b, 0x53, 0x63, 0x5a,
+ 0xd7, 0x34, 0x12, 0x1c, 0x26, 0x23, 0x83, 0xdd, 0x25, 0x35, 0xba, 0x93,
+ 0xeb, 0xc8, 0xc1, 0x73, 0x58, 0x64, 0xee, 0x6b, 0xcc, 0x7f, 0x24, 0x83,
+ 0x09, 0xfa, 0x31, 0x63, 0x31, 0x06, 0xed, 0x4d, 0x8f, 0x26, 0x3e, 0x70,
+ 0xa1, 0x9f, 0x8a, 0x6d, 0xc7, 0xbd, 0xd5, 0x4b, 0x1c, 0x2b, 0x73, 0x8e,
+ 0xd1, 0x12, 0x40, 0x9e, 0x50, 0xba, 0x40, 0x75, 0xd4, 0x31, 0xc1, 0xa7,
+ 0xd3, 0x10, 0x18, 0xd0, 0x60, 0xfc, 0x4a, 0x4a, 0x78, 0xac, 0xaa, 0x1d,
+ 0x8d, 0x93, 0x76, 0x39, 0x10, 0x6b, 0xb1, 0xed, 0xfb, 0x9c, 0x42, 0x11,
+ 0xec, 0xb6, 0xfe, 0xb5, 0xe3, 0x7a, 0x3d, 0x50, 0xda, 0x07, 0xb7, 0x25,
+ 0xbe, 0xa7, 0xf6, 0xa7, 0x6b, 0xbf, 0x22, 0xc4, 0x8d, 0x42, 0x4a, 0x58,
+ 0xa8, 0x95, 0x30, 0x09, 0xd0, 0x28, 0x96, 0x99, 0x88, 0x49, 0x4f, 0x51,
+ 0xf5, 0x78, 0x4e, 0x23, 0x3c, 0x48, 0x31, 0xfe, 0x72, 0xb5, 0x9b, 0x8c,
+ 0x32, 0x2a, 0xb6, 0x99, 0xda, 0x2d, 0x6c, 0x4c, 0x4c, 0x2a, 0xfd, 0x04,
+ 0x1f, 0xb0, 0xd7, 0xa7, 0x67, 0x71, 0xfd, 0x65, 0xa5, 0x63, 0x5a, 0x1c,
+ 0x09, 0x70, 0x81, 0xcb, 0x8c, 0x01, 0xaf, 0x8a, 0x4a, 0x73, 0x7e, 0xa8,
+ 0xb1, 0xfd, 0x3b, 0xa9, 0xe5, 0xd3, 0x70, 0xf7, 0x6d, 0x6e, 0xcf, 0xe5,
+ 0x34, 0x1e, 0x42, 0xea, 0x2f, 0xea, 0x02, 0xb1, 0xb9, 0x8e, 0xa9, 0x8e,
+ 0x33, 0xb9, 0x8f, 0xdc, 0x23, 0xfc, 0xd0, 0xb3, 0x9f, 0xd3, 0xb2, 0xeb,
+ 0x76, 0xf2, 0xc2, 0x41, 0x32, 0x2c, 0x66, 0xb0, 0x23, 0xc9, 0x0a, 0xee,
+ 0xa7, 0x75, 0x55, 0x86, 0x5d, 0x8a, 0x32, 0x1a, 0xdd, 0x03, 0x9a, 0x52,
+ 0x53, 0xa0, 0xdc, 0xea, 0x5d, 0x4c, 0x82, 0xcb, 0x08, 0xfa, 0x65, 0x9d,
+ 0x8f, 0xce, 0x17, 0x19, 0xd3, 0x70, 0x2c, 0xcb, 0xcf, 0xbf, 0xa8, 0xdc,
+ 0xd8, 0xa1, 0xaf, 0x71, 0xac, 0x9f, 0xce, 0x79, 0x3a, 0x47, 0x90, 0x5d,
+ 0x05, 0x56, 0x66, 0xe6, 0xbd, 0x8e, 0xf4, 0x43, 0x2a, 0x2e, 0x0c, 0x6b,
+ 0x66, 0x40, 0x9f, 0xdf, 0x52, 0xc8, 0xaa, 0xff, 0x00, 0xda, 0x23, 0x1a,
+ 0xaf, 0x7d, 0x15, 0x33, 0x7b, 0xc8, 0xd3, 0x71, 0xfa, 0x20, 0x34, 0x78,
+ 0x24, 0xa4, 0x6f, 0x27, 0x60, 0xd3, 0x95, 0x59, 0xad, 0x22, 0xf2, 0x08,
+ 0x8e, 0x26, 0x7e, 0x6b, 0x52, 0x97, 0xd7, 0x5b, 0xed, 0xab, 0x22, 0x90,
+ 0xdb, 0xa9, 0x6e, 0xfa, 0x9c, 0x09, 0x2d, 0x7b, 0x49, 0xd1, 0xde, 0xee,
+ 0xe3, 0x49, 0x0b, 0x3b, 0x73, 0xbd, 0x7d, 0xee, 0xd4, 0x93, 0x27, 0xee,
+ 0x25, 0x25, 0x33, 0xc1, 0x21, 0x9d, 0x51, 0x8f, 0xec, 0x20, 0x1f, 0xed,
+ 0x68, 0xab, 0x75, 0x3a, 0xf6, 0x65, 0xd8, 0xd8, 0xe2, 0xcf, 0xcb, 0xaa,
+ 0x2d, 0x4f, 0x06, 0xcf, 0x55, 0xbc, 0x7b, 0x5d, 0xfc, 0x51, 0x3a, 0xdb,
+ 0x07, 0xda, 0x4b, 0xe7, 0xe9, 0x86, 0xbb, 0xf0, 0x49, 0x4a, 0xe9, 0xee,
+ 0xdb, 0xd4, 0x6b, 0xed, 0x20, 0xb7, 0xf0, 0x56, 0xb6, 0x1f, 0xda, 0x71,
+ 0xfc, 0xad, 0xdf, 0x84, 0xaa, 0x38, 0xba, 0x67, 0x55, 0xac, 0x7b, 0x82,
+ 0xd7, 0xf4, 0xbf, 0xca, 0x5b, 0xbf, 0x93, 0xb9, 0x25, 0x39, 0x02, 0xb3,
+ 0xf2, 0x52, 0xb0, 0x90, 0xd7, 0xb3, 0xc1, 0x93, 0xf7, 0xca, 0x55, 0xec,
+ 0x87, 0x6b, 0xa8, 0xe5, 0x49, 0xe0, 0x3b, 0x71, 0xfe, 0x44, 0x24, 0xa5,
+ 0x7a, 0x96, 0xb9, 0xef, 0x69, 0x30, 0x1b, 0x1f, 0x79, 0x0a, 0x87, 0x50,
+ 0xa4, 0xd9, 0x63, 0x49, 0x3a, 0x06, 0x93, 0xf3, 0x6a, 0xd0, 0x1f, 0x4d,
+ 0xfd, 0x80, 0x30, 0xaa, 0xe6, 0x44, 0x13, 0xdf, 0x63, 0xbf, 0x22, 0x4a,
+ 0x6c, 0x56, 0xe6, 0x8f, 0xd1, 0xb1, 0xbb, 0x5a, 0xc0, 0x22, 0x3c, 0xd4,
+ 0xfa, 0x86, 0x57, 0xd9, 0x7a, 0x3b, 0x8b, 0x09, 0x6d, 0xb9, 0x2f, 0x34,
+ 0xb6, 0x39, 0xd9, 0x12, 0xf4, 0x1a, 0x8e, 0xa7, 0xcd, 0xad, 0x54, 0x3a,
+ 0xc6, 0x60, 0xc8, 0xba, 0xba, 0x6b, 0x3e, 0xcc, 0x46, 0x06, 0x0f, 0x3b,
+ 0x5e, 0x77, 0x3c, 0xa4, 0xa7, 0x3a, 0xa6, 0x43, 0x7c, 0xdc, 0x75, 0x47,
+ 0xa6, 0xdc, 0x8c, 0x57, 0x6e, 0xc6, 0xb5, 0xd4, 0xb8, 0xea, 0x43, 0x75,
+ 0x6f, 0x3d, 0xda, 0x54, 0x76, 0xc0, 0x6b, 0x7c, 0x14, 0xac, 0x75, 0x6e,
+ 0x3a, 0x1d, 0xa4, 0x08, 0x24, 0xf1, 0xf2, 0x29, 0x29, 0xb9, 0x47, 0x57,
+ 0xcc, 0x6d, 0xcc, 0x76, 0x43, 0x2a, 0xb9, 0x8d, 0x21, 0xcf, 0x73, 0x5a,
+ 0xd6, 0xdb, 0x03, 0xf7, 0x49, 0x69, 0x12, 0xa5, 0x95, 0xd7, 0xb3, 0x2f,
+ 0xb1, 0xe6, 0x9a, 0x8d, 0x94, 0x17, 0x9b, 0x36, 0xe4, 0xb5, 0x8e, 0x2c,
+ 0x24, 0x7e, 0xf3, 0x1a, 0x26, 0x56, 0x73, 0xb4, 0x30, 0x5e, 0xd1, 0xa0,
+ 0xef, 0x3a, 0x7c, 0x95, 0x9c, 0x5c, 0x4a, 0xee, 0x65, 0xb9, 0x01, 0x8e,
+ 0x3e, 0x90, 0x87, 0x38, 0x48, 0x6c, 0x47, 0x7f, 0xe0, 0x92, 0x9a, 0x99,
+ 0x3d, 0x57, 0xa9, 0x5e, 0x05, 0x46, 0xc1, 0x55, 0x4e, 0x99, 0x65, 0x40,
+ 0x30, 0x69, 0xf0, 0x5b, 0x78, 0x21, 0xf8, 0x1d, 0x35, 0xd6, 0x61, 0xbc,
+ 0xd1, 0x6b, 0xc6, 0xe7, 0xb8, 0x43, 0x8b, 0xcf, 0x6d, 0xdb, 0x81, 0x95,
+ 0x81, 0x8f, 0x58, 0xb3, 0x26, 0xba, 0xc8, 0x2f, 0xde, 0x5c, 0xd0, 0x07,
+ 0x72, 0x41, 0x8f, 0xc5, 0x76, 0x3f, 0xb3, 0xbd, 0x2c, 0x32, 0xdb, 0x1d,
+ 0xf9, 0xbc, 0x7c, 0x92, 0x52, 0xf5, 0xd8, 0x76, 0x56, 0x5f, 0xab, 0xde,
+ 0x25, 0xc4, 0x08, 0x97, 0x46, 0xa8, 0x79, 0x18, 0xee, 0xc9, 0xc0, 0x14,
+ 0xc9, 0x1b, 0xc0, 0x1b, 0xbc, 0x24, 0x29, 0x56, 0x74, 0xaf, 0xc9, 0xa4,
+ 0xfe, 0x0b, 0x9b, 0xb7, 0xeb, 0x15, 0xee, 0xa8, 0x53, 0x59, 0x7e, 0x3d,
+ 0x8c, 0x30, 0xd3, 0xd9, 0xd1, 0xc7, 0xc1, 0x25, 0x37, 0x6d, 0xe9, 0x58,
+ 0xdd, 0x33, 0x05, 0xe2, 0xbf, 0x75, 0xaf, 0x2d, 0xdd, 0x63, 0xb9, 0x22,
+ 0x66, 0x07, 0x80, 0x59, 0x8c, 0xc3, 0xc8, 0x17, 0xbf, 0x25, 0xe3, 0x6d,
+ 0x04, 0xed, 0x6c, 0xe9, 0xb8, 0x91, 0xd8, 0x79, 0x78, 0xa9, 0x3b, 0xeb,
+ 0x05, 0xd7, 0xd6, 0x6b, 0xcb, 0x60, 0xb0, 0x4f, 0xd3, 0x6f, 0xb5, 0xc0,
+ 0xf9, 0x88, 0x85, 0x2c, 0x8b, 0x73, 0x33, 0x19, 0x5e, 0xc6, 0xbd, 0x95,
+ 0x01, 0x15, 0xb7, 0x46, 0x88, 0x03, 0xf1, 0x49, 0x4d, 0xdc, 0x3e, 0xad,
+ 0x6e, 0x21, 0x75, 0x45, 0xc1, 0xad, 0x78, 0x22, 0x4e, 0xa1, 0xa7, 0xb1,
+ 0x45, 0x75, 0xf9, 0xd7, 0xe4, 0x55, 0x6e, 0x5d, 0x0e, 0x75, 0x14, 0xb6,
+ 0x5a, 0xea, 0x5a, 0x5e, 0xd2, 0x4f, 0xe7, 0x12, 0xd9, 0x58, 0xed, 0xc0,
+ 0x73, 0x9a, 0x5d, 0x75, 0xae, 0x00, 0x6a, 0x7d, 0xd1, 0xa2, 0x6a, 0xab,
+ 0xa8, 0x18, 0xc7, 0x7d, 0xaf, 0x77, 0x8b, 0x1c, 0xe0, 0xdf, 0xf3, 0x92,
+ 0x53, 0xa7, 0x9d, 0xd7, 0xef, 0xa7, 0x31, 0x8e, 0xe9, 0xac, 0x70, 0xa1,
+ 0x8c, 0x01, 0xe6, 0x0e, 0xaf, 0x9f, 0xce, 0x04, 0x76, 0x50, 0x7f, 0x5f,
+ 0xeb, 0x39, 0x56, 0x7e, 0x83, 0x28, 0xb2, 0x41, 0x77, 0xa3, 0xb4, 0x37,
+ 0x6c, 0x7f, 0x2e, 0x0c, 0xa5, 0x88, 0x3e, 0xcf, 0x69, 0xb2, 0xc7, 0x19,
+ 0x7b, 0x5c, 0xdd, 0xbb, 0x9d, 0xa6, 0xe1, 0x1d, 0xe7, 0xef, 0x50, 0xbb,
+ 0x23, 0x76, 0xd0, 0xd6, 0x39, 0xc5, 0xbf, 0x4c, 0x91, 0xdb, 0xcc, 0x94,
+ 0x94, 0xdc, 0xc2, 0xea, 0x99, 0xdf, 0x64, 0xb2, 0xcc, 0xec, 0x87, 0x59,
+ 0x8b, 0x04, 0x5b, 0x5d, 0x7e, 0xe7, 0x81, 0xc3, 0xa5, 0xce, 0xe3, 0x9e,
+ 0x00, 0x57, 0xba, 0x6b, 0x71, 0xb1, 0xf0, 0xcd, 0xcc, 0x70, 0xaf, 0xd4,
+ 0xf7, 0x54, 0x0c, 0xc8, 0x61, 0xfa, 0x24, 0x97, 0x72, 0x61, 0x60, 0x7d,
+ 0xa2, 0xcc, 0x3b, 0x1d, 0x6b, 0x6a, 0x9a, 0x1e, 0xdd, 0xb9, 0x0c, 0x07,
+ 0xe9, 0xd6, 0xed, 0x24, 0x88, 0xe4, 0x4a, 0xd0, 0xe9, 0x74, 0x3a, 0x80,
+ 0x72, 0x43, 0xcd, 0x6c, 0x07, 0xe8, 0x80, 0xd3, 0xb9, 0xbf, 0x9a, 0x7d,
+ 0xd3, 0x02, 0x3c, 0x92, 0x52, 0x5f, 0xad, 0x74, 0xbe, 0xce, 0x9f, 0x8d,
+ 0x94, 0xe1, 0x2e, 0xae, 0xc2, 0xc9, 0xfe, 0x4b, 0xdb, 0x23, 0xfe, 0xa5,
+ 0x72, 0x90, 0x49, 0x11, 0xca, 0xec, 0x7a, 0x9d, 0xa3, 0x27, 0xa3, 0x65,
+ 0xb9, 0xe5, 0xb0, 0x36, 0xb9, 0x83, 0x76, 0xe7, 0x48, 0x70, 0x3d, 0xe1,
+ 0x72, 0x35, 0x8f, 0xd2, 0x03, 0xc7, 0x3c, 0xa4, 0xa5, 0xb6, 0xc3, 0x4f,
+ 0x88, 0xd6, 0x54, 0x5e, 0xc8, 0x6c, 0xcc, 0x8f, 0x25, 0x70, 0x30, 0x1f,
+ 0x0d, 0x50, 0x45, 0x7b, 0xdf, 0xe8, 0xb4, 0x17, 0xbd, 0xe4, 0x35, 0x80,
+ 0x6a, 0x4b, 0x89, 0x80, 0x12, 0x53, 0xd1, 0x7d, 0x5f, 0x04, 0xe0, 0xd4,
+ 0xd6, 0xf2, 0x58, 0xef, 0xc1, 0xc8, 0xd9, 0x38, 0x2f, 0xea, 0x6c, 0x06,
+ 0xcb, 0x5f, 0x46, 0x3d, 0xb0, 0x28, 0x7b, 0x36, 0xba, 0xb2, 0xee, 0xde,
+ 0xa0, 0xe7, 0x55, 0x6a, 0xfc, 0x1a, 0xfa, 0x2f, 0x4d, 0xc6, 0xe9, 0xce,
+ 0x25, 0xd9, 0xb9, 0x30, 0xcb, 0xee, 0x6f, 0x0c, 0x6b, 0x8c, 0x9a, 0xd9,
+ 0xf9, 0x09, 0x59, 0x56, 0x66, 0x54, 0x6d, 0x38, 0xad, 0xa9, 0xc7, 0x01,
+ 0xb6, 0x0a, 0x8e, 0xa4, 0x39, 0xee, 0x3e, 0xe7, 0x00, 0x7f, 0x93, 0xe4,
+ 0x92, 0x9e, 0xd3, 0x06, 0x9b, 0x2a, 0xc4, 0xaa, 0xbb, 0x1d, 0x36, 0x56,
+ 0xc0, 0xd7, 0x38, 0x1d, 0x24, 0x08, 0xd2, 0x75, 0x85, 0xce, 0x75, 0x5a,
+ 0xf0, 0xea, 0xfa, 0xc1, 0x8c, 0xdb, 0x1b, 0xb2, 0xbb, 0x29, 0x73, 0x40,
+ 0xac, 0xfa, 0x72, 0xf6, 0x99, 0x60, 0x3b, 0x60, 0x6b, 0xc6, 0xab, 0x4b,
+ 0xa4, 0xf5, 0x2a, 0x1f, 0x8e, 0xf1, 0x45, 0x86, 0xea, 0x6b, 0x79, 0x63,
+ 0x1e, 0xee, 0x60, 0x01, 0xc9, 0xef, 0x12, 0xb9, 0xcf, 0xad, 0x0e, 0x19,
+ 0x3d, 0x5e, 0xa7, 0x07, 0xfa, 0x41, 0xb4, 0x82, 0x2c, 0x3c, 0x35, 0xcd,
+ 0x71, 0x2d, 0x32, 0x92, 0x9e, 0x93, 0x1a, 0xea, 0xf3, 0xc0, 0xc8, 0xc4,
+ 0xb8, 0x3b, 0xd2, 0x3e, 0xd3, 0xf4, 0x5d, 0x0d, 0x3e, 0xea, 0xae, 0x1d,
+ 0xfe, 0x29, 0xf2, 0x72, 0x8f, 0xaa, 0x4d, 0x6c, 0xac, 0xb9, 0xc3, 0xdb,
+ 0x6b, 0xa7, 0xc4, 0xe8, 0x1a, 0xd1, 0xd8, 0xf9, 0xac, 0x2e, 0x97, 0xd7,
+ 0x8d, 0x59, 0x07, 0x1f, 0x3f, 0x60, 0xb2, 0xe0, 0xd7, 0x37, 0x29, 0xad,
+ 0x00, 0xd8, 0x23, 0x4d, 0xe4, 0x44, 0x95, 0xbc, 0xfa, 0x0d, 0xf4, 0xb9,
+ 0xd4, 0x58, 0x6b, 0x2f, 0x1f, 0x4d, 0xbf, 0x95, 0x25, 0x23, 0xc7, 0x19,
+ 0x59, 0x35, 0x5d, 0x91, 0x7b, 0x99, 0x5e, 0xc3, 0xb6, 0x8d, 0xd2, 0xc0,
+ 0xe0, 0x74, 0x73, 0x5d, 0xbc, 0xf3, 0x1e, 0x0b, 0x25, 0xf4, 0xdf, 0x46,
+ 0x6f, 0xa5, 0x90, 0xdd, 0xae, 0x69, 0xd0, 0x8e, 0x1c, 0xdd, 0xa7, 0xdc,
+ 0x0f, 0x70, 0xb5, 0xf3, 0x8f, 0xa1, 0x8f, 0x53, 0xae, 0xb1, 0xe6, 0x93,
+ 0x0d, 0x36, 0xb3, 0x52, 0xcb, 0x07, 0x72, 0xc2, 0xae, 0xd1, 0x88, 0x32,
+ 0xb1, 0x19, 0x5d, 0xc5, 0xb7, 0x57, 0x04, 0xd5, 0x7b, 0x20, 0x81, 0x3f,
+ 0x9c, 0xc1, 0xcb, 0x7c, 0xdb, 0xc2, 0x4a, 0x79, 0xaa, 0x9b, 0xe3, 0xc6,
+ 0xd0, 0x8d, 0xd5, 0xa5, 0xf5, 0x62, 0xd8, 0x06, 0x8e, 0x61, 0x04, 0xf9,
+ 0xb4, 0x68, 0x9b, 0x23, 0x1a, 0xcc, 0x4b, 0xdf, 0x4d, 0x9c, 0xb4, 0x48,
+ 0x23, 0x87, 0x34, 0xf0, 0x42, 0x2d, 0xc3, 0xd4, 0xe9, 0x4c, 0x71, 0xff,
+ 0x00, 0x04, 0xf2, 0x3e, 0xf4, 0x94, 0xd0, 0x61, 0xd9, 0x9d, 0x5b, 0xbb,
+ 0x08, 0x27, 0xef, 0x0b, 0xa6, 0xda, 0x3d, 0x4f, 0x52, 0x7f, 0x36, 0x27,
+ 0xe6, 0xb9, 0xab, 0x34, 0xb1, 0xae, 0x68, 0xfc, 0xdf, 0xee, 0x5d, 0x26,
+ 0xef, 0xd0, 0xef, 0xfe, 0x44, 0xfe, 0x12, 0x92, 0x9e, 0x7d, 0x9a, 0x17,
+ 0xc8, 0x9f, 0x04, 0x52, 0x3d, 0xa7, 0xe0, 0x80, 0xd7, 0x08, 0x76, 0xaa,
+ 0xc4, 0xcd, 0x67, 0xc2, 0x0a, 0x4a, 0x67, 0xe9, 0x6e, 0x73, 0x89, 0x1c,
+ 0x92, 0x42, 0xa7, 0x9b, 0x4f, 0xb3, 0x73, 0x24, 0xfb, 0x5d, 0xba, 0x7b,
+ 0x68, 0xaf, 0x49, 0x3b, 0x83, 0x7b, 0x18, 0x55, 0x72, 0x1c, 0x0d, 0x6e,
+ 0x68, 0x33, 0xf4, 0x87, 0xe0, 0x92, 0x95, 0x5b, 0x0f, 0xa4, 0xd3, 0xdf,
+ 0x60, 0xd5, 0x51, 0x77, 0x4b, 0xb3, 0x1a, 0xe3, 0x55, 0xcd, 0xf5, 0x2d,
+ 0x92, 0xf2, 0x5a, 0xe0, 0xe0, 0x67, 0xfa, 0xab, 0x4d, 0xc0, 0xb7, 0x19,
+ 0x8e, 0x04, 0x02, 0x5a, 0x39, 0x1e, 0x4b, 0x3b, 0x26, 0xe2, 0xd6, 0xc3,
+ 0x9c, 0xef, 0x20, 0x4f, 0xf0, 0x49, 0x48, 0x2d, 0xad, 0xed, 0x74, 0x00,
+ 0xd6, 0x44, 0xe8, 0x48, 0xfe, 0x25, 0x42, 0xd6, 0x7b, 0x23, 0xd3, 0x0e,
+ 0xd3, 0x48, 0x8f, 0xfb, 0xe9, 0x55, 0x32, 0x4e, 0xb6, 0xbb, 0x98, 0x00,
+ 0x7e, 0x2a, 0xbe, 0x8e, 0xb0, 0x03, 0xd9, 0xa3, 0xf1, 0x49, 0x4e, 0x86,
+ 0x55, 0x41, 0xb7, 0x41, 0xac, 0x83, 0x0d, 0x1a, 0x1f, 0x25, 0xd4, 0x37,
+ 0x1a, 0xde, 0x93, 0xf5, 0x57, 0x32, 0x83, 0x58, 0x7d, 0xf9, 0x12, 0xe7,
+ 0xbd, 0x8e, 0x6b, 0xc3, 0x03, 0x80, 0x1e, 0xed, 0xa7, 0xb0, 0x5c, 0xd7,
+ 0x4f, 0xc4, 0xb6, 0xec, 0xdc, 0x6a, 0x05, 0x87, 0x6d, 0x8f, 0x68, 0x2d,
+ 0x93, 0x04, 0x77, 0xe7, 0xc9, 0x6e, 0x7d, 0x70, 0x7d, 0x15, 0xb6, 0xaa,
+ 0xfe, 0x86, 0xbf, 0x49, 0xba, 0x1d, 0xbe, 0x09, 0x29, 0xcf, 0xfa, 0xa7,
+ 0xd2, 0x2d, 0xcb, 0xcd, 0x6e, 0x7d, 0xa2, 0x31, 0x71, 0x89, 0xda, 0x7f,
+ 0x7e, 0xc2, 0x20, 0x01, 0xf0, 0xe4, 0xae, 0x8b, 0xad, 0x32, 0xc0, 0xd2,
+ 0xda, 0x87, 0xb8, 0xfb, 0x63, 0xc8, 0xac, 0x2c, 0x3f, 0xad, 0x2c, 0xc7,
+ 0xc7, 0xc7, 0xc2, 0xa1, 0xa2, 0xb6, 0x56, 0x5a, 0xd1, 0x1f, 0x9e, 0x27,
+ 0x59, 0xf8, 0xad, 0x8e, 0xa1, 0xd4, 0x4b, 0x6e, 0x73, 0x23, 0xd4, 0x6b,
+ 0x80, 0xdb, 0x1c, 0xa4, 0xa6, 0xb0, 0xac, 0xb0, 0x40, 0x3f, 0x45, 0xa4,
+ 0x0f, 0x90, 0x5c, 0x9f, 0x56, 0xfb, 0x4b, 0x1b, 0x5d, 0x59, 0x41, 0x8e,
+ 0x9a, 0xd9, 0xb6, 0xc6, 0xeb, 0x1a, 0x93, 0x27, 0xb8, 0x24, 0x2d, 0x6b,
+ 0x7a, 0xa7, 0x5a, 0xda, 0xf7, 0x37, 0x19, 0xc1, 0x8d, 0x04, 0x97, 0x1a,
+ 0xce, 0x8d, 0xf3, 0xf9, 0x2c, 0x4b, 0x33, 0x1b, 0x7b, 0xc3, 0xb2, 0x00,
+ 0xb0, 0x06, 0x96, 0xb7, 0x69, 0x80, 0x09, 0xfc, 0xe3, 0xe3, 0x09, 0x29,
+ 0xbf, 0x57, 0x4a, 0xe9, 0x77, 0x74, 0xe1, 0x93, 0x5d, 0xa5, 0xd7, 0x36,
+ 0x37, 0x80, 0xe1, 0x13, 0x31, 0x05, 0xa4, 0x4a, 0x0b, 0x5b, 0x65, 0x22,
+ 0xca, 0x6a, 0x79, 0xae, 0xbd, 0xd1, 0xa7, 0xd2, 0x33, 0x1d, 0xfb, 0x2c,
+ 0xd3, 0x5b, 0xc5, 0xfb, 0x6a, 0x70, 0xb0, 0x3d, 0xde, 0xd7, 0xfe, 0x6b,
+ 0xbe, 0x20, 0xad, 0x16, 0x58, 0x4b, 0x1a, 0x20, 0x37, 0xc4, 0x0e, 0xd0,
+ 0x92, 0x98, 0x5a, 0xcd, 0xee, 0x1e, 0xa3, 0xdd, 0x61, 0x27, 0x67, 0xb8,
+ 0xc8, 0x1d, 0xc2, 0x7a, 0xac, 0xb4, 0x13, 0x4e, 0xc6, 0x4f, 0xee, 0xba,
+ 0x41, 0xfe, 0xc9, 0x0a, 0x1b, 0xe2, 0x90, 0xe3, 0xdd, 0xe0, 0xfd, 0xc4,
+ 0x23, 0xde, 0xda, 0x9e, 0x21, 0xe0, 0x87, 0x8d, 0x5a, 0xe0, 0x60, 0xa4,
+ 0xa6, 0x66, 0xcb, 0x6b, 0x69, 0x73, 0xe9, 0x69, 0x67, 0x72, 0x1e, 0xe9,
+ 0x1f, 0x79, 0x51, 0xc9, 0xb0, 0x7a, 0xac, 0xa9, 0x87, 0xda, 0xe2, 0x09,
+ 0x03, 0x82, 0xa9, 0x3c, 0xe4, 0x11, 0xe9, 0x92, 0x40, 0x71, 0xe4, 0x77,
+ 0x45, 0x66, 0x97, 0x52, 0x5d, 0xc9, 0x74, 0xfc, 0x82, 0x4a, 0x6e, 0x64,
+ 0x38, 0xb6, 0xb9, 0x3a, 0xcd, 0x0f, 0x05, 0xa7, 0xc5, 0xa5, 0x68, 0x74,
+ 0xeb, 0xee, 0x6e, 0x0d, 0x56, 0x0a, 0xb7, 0x31, 0xc2, 0x44, 0x1f, 0x0e,
+ 0xf0, 0x5a, 0xe2, 0x55, 0x0c, 0xa9, 0xd8, 0x20, 0x49, 0x1b, 0xc0, 0xfe,
+ 0xd0, 0xe1, 0x6b, 0x37, 0xa6, 0x75, 0x5c, 0x0e, 0x9f, 0x5d, 0xd4, 0x5a,
+ 0xdb, 0xf6, 0x34, 0x39, 0xd8, 0xcf, 0x64, 0x76, 0x92, 0x1a, 0xe0, 0x65,
+ 0x25, 0x21, 0xea, 0x37, 0x63, 0x57, 0xd2, 0xcb, 0x7d, 0x43, 0x6d, 0xd9,
+ 0x26, 0x18, 0x37, 0x17, 0x86, 0x34, 0x10, 0x5d, 0xab, 0x80, 0x5c, 0xf3,
+ 0x46, 0xc7, 0x69, 0xaf, 0x80, 0x89, 0x56, 0xf2, 0xba, 0x86, 0x2e, 0x55,
+ 0xbe, 0xa3, 0x9c, 0x6b, 0x6b, 0x8e, 0xe3, 0x59, 0x6b, 0x8c, 0x38, 0x81,
+ 0xbb, 0xc9, 0x57, 0x19, 0x18, 0x8c, 0x27, 0x6d, 0xa7, 0x5e, 0x0e, 0xd7,
+ 0x68, 0x92, 0x97, 0x73, 0xa3, 0x58, 0xe3, 0xc9, 0x69, 0xfd, 0x54, 0x68,
+ 0xb3, 0xeb, 0x06, 0x24, 0xb4, 0x43, 0x1c, 0xf7, 0x8d, 0x3b, 0xb5, 0x8e,
+ 0x20, 0xac, 0x97, 0x64, 0xe3, 0xc6, 0x8e, 0xdc, 0x4f, 0x7d, 0xae, 0x95,
+ 0x6f, 0xa2, 0x75, 0x1a, 0xb0, 0xba, 0xae, 0x36, 0x43, 0xdf, 0xb6, 0xb6,
+ 0xbb, 0x6d, 0x84, 0xb5, 0xd0, 0x18, 0xf1, 0xb5, 0xc7, 0x41, 0xe6, 0x92,
+ 0x9e, 0x9f, 0xeb, 0x25, 0x2c, 0x19, 0xb8, 0x4f, 0xbd, 0xcf, 0x60, 0xb2,
+ 0xcd, 0xdb, 0xc6, 0xa3, 0x73, 0x67, 0xf2, 0xac, 0xbc, 0x1c, 0x11, 0xd4,
+ 0x6c, 0xcf, 0x7d, 0x40, 0x7a, 0x76, 0x1f, 0xd1, 0x87, 0xc8, 0xda, 0xe1,
+ 0x1e, 0xe8, 0x1c, 0x1f, 0x35, 0xd2, 0x75, 0x7e, 0x95, 0x67, 0x55, 0x6b,
+ 0x1c, 0x5f, 0x53, 0xa9, 0x03, 0x75, 0x60, 0x38, 0xb8, 0xbc, 0x38, 0x6b,
+ 0x11, 0xa4, 0x78, 0x15, 0xc2, 0xe7, 0x63, 0xe6, 0x61, 0x66, 0x7a, 0x67,
+ 0x21, 0xee, 0x7b, 0x06, 0xd6, 0x81, 0x2d, 0x7b, 0x7c, 0x07, 0x74, 0x94,
+ 0xf4, 0xbd, 0x26, 0xaa, 0xaa, 0xa1, 0xf5, 0xd2, 0x21, 0x8d, 0xb0, 0x8e,
+ 0x77, 0x02, 0x46, 0x84, 0xce, 0x9d, 0xd6, 0xce, 0x3f, 0x46, 0xe9, 0xf9,
+ 0xb3, 0x66, 0x4d, 0x62, 0xcb, 0x1a, 0x36, 0xb4, 0xc9, 0xd2, 0x41, 0xf0,
+ 0xf8, 0xae, 0x73, 0xa3, 0x97, 0x53, 0x88, 0xca, 0x8e, 0xae, 0xd4, 0x92,
+ 0x7c, 0x4e, 0xab, 0x57, 0x07, 0xac, 0xd7, 0x87, 0xd4, 0x6d, 0xa2, 0xe7,
+ 0x4b, 0x1c, 0xc6, 0x98, 0x9d, 0x43, 0xb5, 0xd7, 0xcd, 0x25, 0x3c, 0xc7,
+ 0x57, 0xa9, 0xb5, 0xe7, 0xfd, 0x89, 0xff, 0x00, 0xa2, 0xc6, 0xac, 0x8a,
+ 0x46, 0xd8, 0x75, 0x9b, 0x5b, 0xc9, 0xda, 0x24, 0xfc, 0xca, 0xd9, 0xe8,
+ 0xd9, 0xa2, 0xdc, 0x56, 0xb2, 0xb7, 0xbb, 0x6d, 0x3e, 0xd6, 0x93, 0xcb,
+ 0x9a, 0x38, 0x25, 0x4b, 0xeb, 0x1e, 0x16, 0x1f, 0xed, 0x1a, 0x7a, 0xc9,
+ 0x6e, 0xfe, 0x9d, 0x94, 0x3d, 0x2c, 0x9b, 0x2b, 0x24, 0x16, 0x58, 0x44,
+ 0x35, 0xce, 0x8e, 0xc5, 0x3d, 0x1d, 0x39, 0xdd, 0x3e, 0xe9, 0xda, 0xf1,
+ 0x45, 0xa2, 0x18, 0x1d, 0xf4, 0x40, 0x03, 0x48, 0x3e, 0x69, 0x29, 0xd6,
+ 0xc5, 0xa6, 0xac, 0xbd, 0xd5, 0x5a, 0x61, 0xce, 0x1e, 0xd9, 0x3a, 0x48,
+ 0xfc, 0x11, 0x30, 0x70, 0xb2, 0x71, 0xac, 0x2c, 0xac, 0x0f, 0x4c, 0x9d,
+ 0x5a, 0x3f, 0x1d, 0x16, 0x68, 0xb9, 0x92, 0x5a, 0x4e, 0x9c, 0x4a, 0xb1,
+ 0x8d, 0xd7, 0xb2, 0x29, 0x7b, 0xaa, 0xcc, 0x6f, 0xa8, 0xe6, 0xb8, 0x36,
+ 0xab, 0x46, 0x82, 0xd0, 0xed, 0x46, 0xe0, 0x38, 0x3a, 0x6a, 0x92, 0x97,
+ 0xeb, 0x86, 0xb7, 0x7a, 0x6d, 0x2d, 0x22, 0xea, 0xe6, 0x49, 0x10, 0x76,
+ 0xf8, 0x15, 0x4b, 0x1f, 0xf4, 0x98, 0x39, 0x55, 0x78, 0x00, 0xf1, 0xf7,
+ 0x29, 0x5d, 0x73, 0xf2, 0x6e, 0x7d, 0xb6, 0x44, 0x9e, 0xdd, 0x80, 0xf0,
+ 0x4b, 0x0b, 0xf9, 0xf7, 0x30, 0xff, 0x00, 0x84, 0x63, 0x9a, 0x92, 0x9a,
+ 0x20, 0x4d, 0x75, 0x11, 0xac, 0xb4, 0x7e, 0x40, 0xb7, 0x37, 0x0f, 0xd9,
+ 0xfb, 0xfb, 0xfa, 0x7f, 0x8e, 0xd5, 0x89, 0xb0, 0xb1, 0x8c, 0x69, 0x3a,
+ 0xb4, 0x6d, 0x3f, 0x2d, 0x16, 0xae, 0xe3, 0xfb, 0x23, 0xfb, 0x3b, 0x7f,
+ 0xe9, 0x24, 0xa7, 0x38, 0x30, 0x6d, 0x4a, 0xea, 0xf6, 0xd0, 0xf7, 0x8d,
+ 0x0b, 0x5a, 0x4a, 0x23, 0x48, 0xd0, 0x25, 0x96, 0xe0, 0x31, 0x2d, 0x27,
+ 0xf7, 0x0a, 0x4a, 0x67, 0xb3, 0x74, 0xfc, 0x78, 0xf8, 0x25, 0x65, 0x65,
+ 0xf5, 0x10, 0x74, 0xd1, 0xc3, 0xe1, 0xa1, 0x56, 0x5a, 0xd1, 0xa9, 0x03,
+ 0x84, 0x8b, 0x61, 0x92, 0x39, 0x83, 0xf9, 0x12, 0x53, 0x47, 0xa8, 0x02,
+ 0xcc, 0x4a, 0x5a, 0x4c, 0x49, 0x1f, 0x80, 0x95, 0x87, 0x63, 0xcd, 0x8f,
+ 0xd4, 0xe9, 0x3c, 0xfc, 0xd6, 0xbf, 0x5c, 0x96, 0xb6, 0x91, 0xb4, 0x86,
+ 0x35, 0x8e, 0x71, 0x7c, 0xe9, 0xbb, 0xda, 0x36, 0xc2, 0xc7, 0x64, 0x6d,
+ 0x92, 0x47, 0x9a, 0x4a, 0x6b, 0x65, 0x3e, 0x59, 0x64, 0x8d, 0x7c, 0x55,
+ 0x26, 0x12, 0x6f, 0x6c, 0x73, 0x03, 0xf0, 0x56, 0x72, 0xa7, 0x63, 0xbc,
+ 0x0a, 0x06, 0x1d, 0x66, 0xdc, 0xec, 0x7a, 0x81, 0xfe, 0x71, 0xc1, 0x92,
+ 0x39, 0x12, 0x61, 0x25, 0x3d, 0x2f, 0xd5, 0x6a, 0x9d, 0x6f, 0x52, 0x75,
+ 0xae, 0x78, 0x73, 0x71, 0xeb, 0x24, 0x19, 0xfc, 0xe3, 0xed, 0x0a, 0xb7,
+ 0xd6, 0xab, 0xcd, 0x99, 0x46, 0xb2, 0xe9, 0x35, 0xb7, 0xf1, 0x28, 0x35,
+ 0x75, 0xcc, 0xbe, 0x99, 0x91, 0x91, 0x57, 0x4d, 0x6b, 0x1b, 0x56, 0xe8,
+ 0xfd, 0x20, 0xdc, 0xf7, 0x01, 0xc4, 0x9e, 0x14, 0x32, 0xda, 0xcc, 0xaa,
+ 0x19, 0xd4, 0xb2, 0x09, 0x63, 0xb2, 0x4b, 0x99, 0x65, 0x6d, 0x1a, 0x07,
+ 0x33, 0xf3, 0x9a, 0x92, 0x9c, 0x8a, 0xf2, 0x2e, 0xad, 0x86, 0xb6, 0x10,
+ 0x1a, 0x4c, 0xf0, 0x26, 0x7c, 0x8f, 0x2b, 0xa9, 0xfa, 0xac, 0xe7, 0x64,
+ 0xd1, 0x65, 0xd7, 0x0d, 0xf6, 0x54, 0xf0, 0xca, 0xec, 0x77, 0x21, 0xa4,
+ 0x49, 0x0b, 0x9f, 0x34, 0x74, 0xf1, 0xc3, 0xec, 0x9f, 0x03, 0x03, 0xf8,
+ 0x2d, 0x3e, 0x9f, 0x9f, 0x9b, 0x87, 0x8e, 0x71, 0xb0, 0x68, 0x2f, 0x6b,
+ 0x9c, 0x5c, 0x5c, 0x58, 0xe7, 0x1d, 0xc7, 0x4f, 0x82, 0x4a, 0x7a, 0xa1,
+ 0xc1, 0x9e, 0xe0, 0xac, 0x6a, 0x7a, 0x2f, 0x4b, 0xb1, 0x85, 0xce, 0xa0,
+ 0x6e, 0x7e, 0xae, 0x74, 0x91, 0x13, 0xe1, 0xae, 0x8a, 0xbf, 0xda, 0x3e,
+ 0xb3, 0xda, 0x65, 0x95, 0xb9, 0x9e, 0x65, 0xad, 0x67, 0xfd, 0x52, 0xc6,
+ 0x3d, 0x63, 0x32, 0x08, 0x6d, 0xf6, 0x0d, 0xbd, 0x81, 0x8f, 0xc8, 0x92,
+ 0x92, 0x75, 0x3e, 0x98, 0xde, 0x9f, 0x9a, 0x19, 0x53, 0xcb, 0xea, 0x30,
+ 0xe1, 0x3f, 0x48, 0x6b, 0xc1, 0x23, 0x94, 0x1a, 0x5c, 0x0c, 0xc9, 0x81,
+ 0xa9, 0x94, 0xce, 0xc8, 0xcc, 0x7e, 0xef, 0x5d, 0xee, 0x7e, 0xe6, 0xb4,
+ 0xcb, 0x8c, 0x98, 0x3a, 0x8f, 0xc0, 0xa1, 0xb1, 0xd2, 0xc7, 0x03, 0xf0,
+ 0x49, 0x49, 0x5c, 0x26, 0x8a, 0xdb, 0xf1, 0x3f, 0x8a, 0xb8, 0xe6, 0x0b,
+ 0x03, 0x77, 0x6a, 0x23, 0xe6, 0xaa, 0xba, 0x07, 0xa6, 0xde, 0xca, 0xe3,
+ 0xcb, 0x00, 0x13, 0xd8, 0x24, 0xa4, 0x44, 0xb4, 0x39, 0xac, 0x2c, 0x30,
+ 0xd7, 0x0d, 0x7c, 0x50, 0x9e, 0x77, 0x66, 0x80, 0x04, 0x6c, 0x1c, 0x78,
+ 0x14, 0xb2, 0xad, 0x86, 0x82, 0xde, 0x09, 0x13, 0x1f, 0x72, 0x86, 0x2f,
+ 0xe9, 0x32, 0x9e, 0xe6, 0xf0, 0x34, 0xfb, 0x92, 0x53, 0x75, 0xce, 0x77,
+ 0xab, 0x4c, 0xc1, 0x02, 0xc0, 0x7e, 0x3e, 0x4b, 0xb4, 0xc4, 0xc8, 0xab,
+ 0x27, 0xa7, 0xd7, 0x63, 0x4e, 0x8e, 0x1d, 0xfc, 0x57, 0x1c, 0x69, 0x16,
+ 0xd9, 0x04, 0xed, 0x6d, 0x5f, 0xa5, 0x73, 0xbc, 0x1a, 0xcd, 0x7f, 0x1e,
+ 0x16, 0xbf, 0x45, 0xcd, 0xae, 0xee, 0x9a, 0x7d, 0x4f, 0x67, 0xa5, 0x7b,
+ 0xc3, 0x40, 0xf0, 0xfa, 0x43, 0xee, 0x94, 0x94, 0xe8, 0x5d, 0x9d, 0x89,
+ 0x8a, 0xe1, 0x5d, 0xa5, 0x80, 0x81, 0xf9, 0xc5, 0xa3, 0x4f, 0x9a, 0x13,
+ 0xfa, 0xd7, 0x4d, 0x60, 0x97, 0x3e, 0xb0, 0x3c, 0x64, 0x7f, 0x05, 0xcb,
+ 0xfd, 0x62, 0x6d, 0x79, 0x31, 0x99, 0x54, 0xec, 0x63, 0x18, 0xcd, 0x7f,
+ 0x15, 0x83, 0x25, 0x25, 0x3e, 0x88, 0xce, 0xb1, 0x81, 0x68, 0x2e, 0xae,
+ 0xea, 0xc3, 0x47, 0x32, 0xe0, 0x0f, 0xdc, 0x61, 0x10, 0x75, 0x3c, 0x38,
+ 0xfe, 0x93, 0x48, 0x31, 0xc6, 0xf6, 0xff, 0x00, 0x7a, 0xf3, 0x79, 0x29,
+ 0x49, 0x49, 0x4f, 0xa7, 0xf4, 0xfe, 0xb0, 0xeb, 0x5e, 0xec, 0x4c, 0x6b,
+ 0xe9, 0xb5, 0xcf, 0x69, 0xd8, 0xd6, 0x91, 0x2d, 0x20, 0x4c, 0x8e, 0x56,
+ 0x07, 0x52, 0xc1, 0xcd, 0x1d, 0x51, 0x9e, 0xa5, 0x7b, 0x98, 0x77, 0x39,
+ 0xee, 0x6f, 0xbb, 0x57, 0x1d, 0x49, 0xfb, 0x96, 0x67, 0xd4, 0xb3, 0x3f,
+ 0x58, 0x28, 0x9f, 0xdc, 0xb7, 0xfe, 0xa1, 0xcb, 0xd0, 0x5f, 0x8c, 0x2c,
+ 0x3e, 0xab, 0xdb, 0x2e, 0xd3, 0xe2, 0x92, 0x9e, 0x61, 0x8f, 0xa6, 0xb6,
+ 0x93, 0xba, 0x1a, 0xc1, 0xa9, 0xf0, 0x85, 0x2a, 0x3a, 0x60, 0xc9, 0x69,
+ 0xcb, 0xb1, 0xa7, 0x75, 0xa3, 0x50, 0x7b, 0x03, 0xf4, 0x7f, 0x05, 0xd0,
+ 0xdf, 0xd1, 0xb0, 0x7d, 0xb6, 0x58, 0xc0, 0x6c, 0x99, 0xdd, 0xd8, 0x9f,
+ 0x30, 0xa2, 0x6b, 0x35, 0xd5, 0xb4, 0x68, 0x1b, 0x05, 0xbe, 0x40, 0x24,
+ 0xa7, 0x36, 0x9b, 0x47, 0x4b, 0xc7, 0x7e, 0x26, 0x45, 0x27, 0x37, 0x06,
+ 0xc6, 0xc3, 0x9b, 0xf4, 0xdd, 0xfd, 0x57, 0x7f, 0x02, 0x8d, 0x93, 0x90,
+ 0xeb, 0xab, 0x1f, 0xb3, 0xe7, 0xec, 0x86, 0xaf, 0x4f, 0xd3, 0xb0, 0xfb,
+ 0x6b, 0x77, 0xe6, 0xbb, 0x5d, 0x5d, 0x0a, 0xc3, 0x99, 0xa1, 0xb0, 0x7f,
+ 0x68, 0xf9, 0xf8, 0x84, 0x27, 0x3c, 0x58, 0x1b, 0xa0, 0x27, 0x53, 0x23,
+ 0x40, 0x52, 0x53, 0x83, 0x8b, 0x96, 0xeb, 0x9a, 0x59, 0x68, 0xdb, 0x6d,
+ 0x44, 0xb6, 0xc1, 0xe0, 0xe1, 0xca, 0x3d, 0xaf, 0x96, 0xd0, 0xf0, 0x77,
+ 0x0f, 0x5d, 0x83, 0x4f, 0x98, 0xfe, 0x2a, 0xdb, 0xb0, 0x31, 0x6e, 0xbe,
+ 0xd7, 0xbd, 0xbb, 0x6d, 0x2e, 0x73, 0x5f, 0xb7, 0x49, 0x73, 0x44, 0x89,
+ 0x8f, 0x16, 0xc2, 0x0e, 0x4d, 0x6c, 0x6d, 0x4c, 0x0c, 0x80, 0x19, 0x65,
+ 0x64, 0x00, 0x47, 0xef, 0x84, 0x94, 0xd8, 0xad, 0xb2, 0xed, 0x3b, 0x85,
+ 0x1a, 0x88, 0x17, 0xd6, 0x78, 0x87, 0x01, 0xf7, 0xe8, 0xa6, 0xc6, 0xbd,
+ 0xae, 0xd0, 0x1d, 0x3b, 0xa1, 0xed, 0x7e, 0xdd, 0xf0, 0x41, 0x1e, 0xee,
+ 0x3c, 0x12, 0x53, 0x1c, 0x8a, 0xc8, 0xbd, 0xed, 0x8e, 0x1c, 0xac, 0xee,
+ 0x6f, 0xec, 0xcd, 0x9d, 0xf7, 0xc7, 0xf1, 0x4d, 0x94, 0xd0, 0x6f, 0x2e,
+ 0xec, 0xf0, 0x08, 0xfb, 0x93, 0x6c, 0xfd, 0x5e, 0x24, 0x7d, 0x39, 0xe7,
+ 0xf9, 0x29, 0x29, 0xc1, 0x1d, 0x7b, 0xa6, 0xb8, 0x7f, 0x38, 0xf6, 0x1f,
+ 0xe5, 0x30, 0xff, 0x00, 0xdf, 0x65, 0x36, 0x5f, 0x57, 0xc5, 0x7e, 0x1d,
+ 0xad, 0xae, 0xf6, 0xbd, 0xdb, 0x61, 0xad, 0xd4, 0x13, 0xaf, 0x98, 0x08,
+ 0x23, 0xea, 0xf6, 0x31, 0x1a, 0x17, 0x6b, 0xc6, 0xa9, 0x0f, 0xab, 0xb8,
+ 0xc4, 0xf2, 0xef, 0x84, 0xa4, 0xa6, 0x75, 0x7d, 0x71, 0x20, 0xcd, 0xb8,
+ 0xc0, 0xff, 0x00, 0x55, 0xc4, 0x7e, 0x59, 0x4b, 0x2b, 0xeb, 0x81, 0x73,
+ 0x1a, 0xdc, 0x5a, 0x0d, 0x67, 0xf3, 0xcb, 0xc8, 0x77, 0xc8, 0x27, 0xff,
+ 0x00, 0x9b, 0xb8, 0x9a, 0x08, 0x77, 0x99, 0x94, 0xff, 0x00, 0xf3, 0x77,
+ 0x0c, 0x72, 0xd7, 0x1f, 0x1f, 0x71, 0x49, 0x4a, 0x3d, 0x7e, 0xce, 0xae,
+ 0x3d, 0x13, 0x43, 0x69, 0x0c, 0x21, 0xc4, 0xee, 0x2e, 0x07, 0xb7, 0x70,
+ 0x13, 0xbe, 0xb7, 0x39, 0xfb, 0x6b, 0xac, 0x92, 0x4e, 0xd6, 0xb7, 0x99,
+ 0xf8, 0x29, 0xb3, 0xa5, 0xe3, 0xe0, 0xb1, 0xcf, 0xa9, 0xae, 0xf7, 0xc3,
+ 0x5d, 0xac, 0xe9, 0xcc, 0xad, 0x8e, 0x9f, 0x84, 0x71, 0x6b, 0x19, 0x56,
+ 0xff, 0x00, 0x3b, 0x60, 0xfd, 0x18, 0x3c, 0x35, 0xa7, 0xbf, 0xc5, 0x25,
+ 0x35, 0x71, 0xfe, 0xaf, 0x63, 0x31, 0x9e, 0xa7, 0x51, 0x76, 0xf7, 0x9d,
+ 0x4d, 0x2d, 0x30, 0xc6, 0x8f, 0xe5, 0x38, 0x73, 0xf2, 0x52, 0x7d, 0x58,
+ 0x94, 0x16, 0xbe, 0x8a, 0x69, 0xc6, 0x0d, 0xfa, 0x0f, 0x73, 0x01, 0xb2,
+ 0x7c, 0x5a, 0x39, 0x1f, 0x35, 0x1e, 0xa3, 0xd4, 0x5b, 0x5b, 0x77, 0x4e,
+ 0xa7, 0x56, 0x0f, 0xfb, 0xf1, 0xf8, 0xf6, 0x5c, 0xf6, 0x4e, 0x55, 0xd6,
+ 0xe2, 0xbb, 0x2c, 0xd8, 0xe6, 0xc5, 0xa2, 0xb0, 0xd0, 0x79, 0x04, 0x6e,
+ 0x71, 0x25, 0x25, 0x3a, 0x99, 0x1d, 0x3f, 0x13, 0x28, 0x39, 0xf8, 0xee,
+ 0x68, 0xb6, 0x24, 0xc0, 0xdb, 0xba, 0x3c, 0x95, 0x2e, 0xa8, 0xef, 0x4f,
+ 0xa7, 0xe0, 0x54, 0xd3, 0x1b, 0x5a, 0x5c, 0x47, 0x9b, 0x8c, 0x95, 0x99,
+ 0x65, 0xb7, 0xd3, 0xad, 0x56, 0x97, 0xb1, 0xc2, 0x46, 0xa6, 0x5b, 0xbb,
+ 0xb1, 0xf3, 0xf8, 0x2d, 0x8c, 0xac, 0x2f, 0xb4, 0x62, 0x11, 0xcd, 0xf8,
+ 0xb5, 0x56, 0x76, 0xf8, 0x88, 0x97, 0x24, 0xa7, 0x12, 0xe6, 0x43, 0x83,
+ 0x87, 0x0e, 0xd4, 0x2b, 0xdf, 0xf3, 0xa3, 0xaa, 0x34, 0x6d, 0xa4, 0xb2,
+ 0xb6, 0x8e, 0xdb, 0x43, 0xbb, 0x47, 0xe7, 0x4a, 0xad, 0x4b, 0x05, 0xcd,
+ 0xf4, 0x8f, 0x2d, 0x70, 0x20, 0xf9, 0x13, 0x05, 0x74, 0xa3, 0xa1, 0x74,
+ 0xe1, 0xa7, 0xa0, 0x3e, 0x26, 0x52, 0x53, 0x80, 0xef, 0xac, 0xfd, 0x69,
+ 0xc0, 0x83, 0x78, 0x00, 0xf8, 0x31, 0x9f, 0xf9, 0x15, 0x5f, 0x0e, 0xa1,
+ 0x65, 0x64, 0x38, 0xc1, 0xb1, 0xdb, 0x41, 0xf8, 0xc0, 0x5d, 0x4b, 0x7a,
+ 0x2f, 0x4f, 0x1c, 0xe3, 0xb2, 0x3c, 0xc1, 0x4a, 0xce, 0x9d, 0x81, 0x4d,
+ 0x65, 0xcc, 0xc7, 0x6b, 0x4b, 0x4c, 0x88, 0x27, 0x9f, 0x84, 0xa4, 0xa7,
+ 0x99, 0xcf, 0x79, 0x66, 0x61, 0x63, 0x07, 0xd0, 0x86, 0x81, 0xe5, 0x10,
+ 0xa5, 0x43, 0x37, 0x39, 0xe0, 0xf8, 0xad, 0x07, 0x37, 0x1c, 0xe0, 0x5d,
+ 0x75, 0x95, 0xb4, 0xdb, 0x65, 0xe4, 0xd5, 0x64, 0x7b, 0x80, 0x69, 0x88,
+ 0x9f, 0x05, 0x42, 0x87, 0x68, 0xf2, 0x7b, 0x9d, 0x3f, 0x22, 0x4a, 0x66,
+ 0x48, 0x75, 0xcd, 0xfe, 0x49, 0x1a, 0x2b, 0x36, 0x8d, 0xc6, 0x67, 0x42,
+ 0x34, 0x55, 0x2b, 0x00, 0xe4, 0x01, 0xd9, 0x5c, 0x7e, 0x90, 0x12, 0x53,
+ 0x43, 0x24, 0x16, 0xd5, 0xa1, 0xfc, 0xe1, 0x28, 0xdd, 0x29, 0xa7, 0x71,
+ 0x3d, 0xe1, 0x43, 0x28, 0x03, 0x53, 0x80, 0xe7, 0x9f, 0x92, 0x3f, 0x49,
+ 0x6c, 0x87, 0x9f, 0x2e, 0x52, 0x53, 0xab, 0x85, 0x8d, 0x76, 0x5f, 0xaf,
+ 0x8f, 0x48, 0x1b, 0xec, 0xd8, 0xc2, 0x4e, 0x81, 0xad, 0x1e, 0xf7, 0xb9,
+ 0xc7, 0xc3, 0x40, 0xb7, 0xf0, 0xbe, 0xa7, 0x9a, 0xeb, 0x7b, 0x3e, 0xd0,
+ 0x6b, 0xaa, 0xcf, 0x71, 0x20, 0x4b, 0xde, 0xe2, 0xdd, 0xa5, 0xda, 0xe8,
+ 0xd1, 0xe0, 0x10, 0xfe, 0xad, 0xfa, 0x54, 0x62, 0x32, 0xc2, 0xdf, 0x7d,
+ 0xf6, 0x38, 0xb8, 0xb8, 0x49, 0x20, 0x18, 0x6f, 0xdd, 0xb4, 0xae, 0xa5,
+ 0xb7, 0x07, 0xd5, 0xbd, 0xbe, 0xef, 0xe4, 0xf7, 0x49, 0x4f, 0x15, 0xd6,
+ 0x3a, 0x03, 0x71, 0x3a, 0x26, 0x43, 0x6f, 0xb5, 0xa1, 0x94, 0x31, 0xbb,
+ 0x0f, 0xd1, 0x73, 0xcb, 0x4e, 0x9c, 0xc8, 0xd5, 0x70, 0x0b, 0xda, 0xb3,
+ 0xe9, 0xa3, 0x2f, 0x0d, 0xf5, 0xbd, 0x81, 0xf5, 0xbc, 0x7b, 0x98, 0xe0,
+ 0x0c, 0x81, 0xac, 0x41, 0x5c, 0xbb, 0xfa, 0x7e, 0x0d, 0x4e, 0x73, 0x3e,
+ 0xc9, 0x44, 0xb7, 0x82, 0x6b, 0x6c, 0x79, 0x24, 0xa7, 0xcf, 0x52, 0x5e,
+ 0x80, 0xdc, 0x2e, 0x9c, 0xdf, 0xa3, 0x87, 0x46, 0xa6, 0x49, 0x2c, 0x07,
+ 0x53, 0xf1, 0x4c, 0x71, 0xb0, 0x41, 0x8f, 0xb2, 0x51, 0xff, 0x00, 0x6d,
+ 0xb7, 0xfb, 0x92, 0x53, 0xce, 0xfd, 0x4b, 0x00, 0xfd, 0x60, 0xa4, 0xf8,
+ 0x32, 0xc2, 0x3f, 0xcc, 0x72, 0xf4, 0xca, 0xe2, 0x01, 0x32, 0x78, 0x1a,
+ 0xac, 0x1e, 0x95, 0x4e, 0x23, 0x73, 0x9a, 0x6b, 0xa6, 0xaa, 0x9c, 0x1a,
+ 0xef, 0x7b, 0x18, 0xd6, 0x9e, 0x3c, 0x42, 0xdf, 0x61, 0x1b, 0xc4, 0x88,
+ 0x10, 0x02, 0x4a, 0x5b, 0x30, 0xce, 0xc6, 0xb7, 0xe9, 0x4f, 0xe0, 0x02,
+ 0xa8, 0xf1, 0x21, 0xc0, 0x7b, 0x64, 0x00, 0x3e, 0x2a, 0x59, 0x97, 0x46,
+ 0x4d, 0x6d, 0x33, 0xa8, 0x74, 0x0f, 0xb9, 0x54, 0xbe, 0xed, 0xb7, 0x39,
+ 0xbb, 0x88, 0x3b, 0x44, 0x1e, 0xdf, 0x24, 0x94, 0xc2, 0xf7, 0x00, 0xc7,
+ 0xb1, 0xbe, 0xd7, 0x69, 0x3d, 0xd0, 0x6a, 0xaf, 0x60, 0x6f, 0x70, 0xfd,
+ 0x00, 0x44, 0xfc, 0xd2, 0xe7, 0x0d, 0x40, 0xe7, 0xcd, 0x43, 0xd7, 0x6b,
+ 0x06, 0xd7, 0x49, 0x24, 0x98, 0x1e, 0x29, 0x29, 0x70, 0xd6, 0xfd, 0xbc,
+ 0x07, 0x91, 0xb6, 0xda, 0x83, 0xfe, 0x25, 0xbe, 0xc3, 0xff, 0x00, 0x44,
+ 0xaf, 0x37, 0xca, 0xa9, 0xd8, 0xd9, 0x77, 0x53, 0xc1, 0xa6, 0xc7, 0x36,
+ 0x7f, 0xaa, 0x61, 0x7a, 0x05, 0xae, 0x73, 0x6d, 0xc5, 0xb9, 0xda, 0x80,
+ 0xe2, 0x1d, 0xe4, 0x1d, 0xa2, 0xa5, 0xd4, 0x71, 0x31, 0x7e, 0xd4, 0xf7,
+ 0x9a, 0x58, 0xe2, 0xf0, 0x1e, 0x5c, 0xe6, 0x82, 0x4c, 0xf2, 0x4a, 0x4a,
+ 0x78, 0xa3, 0x93, 0x90, 0x79, 0xb5, 0xe7, 0xfb, 0x45, 0x47, 0xd5, 0xb3,
+ 0xf7, 0xdd, 0xf7, 0x95, 0xd4, 0x9c, 0x7c, 0x5d, 0xdf, 0xcc, 0xd5, 0x1d,
+ 0xfd, 0xad, 0xf9, 0x42, 0x81, 0x6e, 0x13, 0x5a, 0x4b, 0xea, 0xad, 0x84,
+ 0x76, 0x2d, 0x12, 0x92, 0x95, 0xf5, 0x90, 0x1c, 0x9e, 0x91, 0xd3, 0xb3,
+ 0x5b, 0xfb, 0xa0, 0x3c, 0xff, 0x00, 0x59, 0xa3, 0xf8, 0xb5, 0x73, 0x5e,
+ 0xab, 0xbd, 0x2f, 0x4e, 0x7d, 0xbb, 0xb7, 0x7c, 0xe2, 0x17, 0x69, 0x43,
+ 0xf1, 0xaf, 0xe8, 0xbb, 0xee, 0x69, 0xf4, 0x69, 0x76, 0xad, 0x0d, 0x06,
+ 0x00, 0x3d, 0x9a, 0x81, 0xb7, 0xa7, 0x46, 0xef, 0xb3, 0x37, 0xd1, 0x89,
+ 0xdf, 0x2d, 0x9f, 0xfa, 0x98, 0x49, 0x4e, 0xa3, 0xf0, 0xee, 0x6f, 0xe6,
+ 0xee, 0x1d, 0xe0, 0xa8, 0x86, 0x41, 0xd4, 0x44, 0x76, 0x90, 0xb4, 0xf2,
+ 0xf2, 0xb0, 0xb0, 0x65, 0xf9, 0x56, 0xb2, 0xae, 0xf0, 0x4f, 0xb8, 0xfc,
+ 0x1a, 0x35, 0x2b, 0x8a, 0xea, 0xdf, 0x59, 0x2d, 0xbb, 0x39, 0xce, 0xc3,
+ 0x60, 0x65, 0x2d, 0x88, 0xdc, 0x25, 0xce, 0x8e, 0xe5, 0x25, 0x3d, 0x28,
+ 0x0d, 0x8e, 0xdf, 0x32, 0xa3, 0xed, 0x89, 0x91, 0xaf, 0x1a, 0xae, 0x3e,
+ 0xcf, 0xac, 0x1d, 0x4a, 0xc7, 0x17, 0x17, 0xb5, 0xa4, 0xea, 0x76, 0xb1,
+ 0xa3, 0xf8, 0x28, 0x7e, 0xdc, 0xea, 0x5f, 0xe9, 0x7f, 0xe8, 0xb7, 0xfb,
+ 0x92, 0x53, 0xda, 0x32, 0x96, 0xde, 0xe0, 0x5d, 0xad, 0x75, 0x9d, 0xce,
+ 0x9e, 0x09, 0xec, 0x12, 0xcb, 0xc8, 0x2e, 0x24, 0x3c, 0xcb, 0x1a, 0x24,
+ 0xcf, 0xee, 0xf6, 0x6f, 0x1f, 0x9c, 0x54, 0x30, 0x85, 0xf5, 0x74, 0xda,
+ 0x86, 0x41, 0x9b, 0xac, 0x6e, 0xfb, 0x0f, 0xb6, 0x44, 0xeb, 0x02, 0x20,
+ 0x68, 0x21, 0x65, 0xf5, 0x6c, 0xad, 0x98, 0xfe, 0x98, 0x20, 0x39, 0xf2,
+ 0x5d, 0x1e, 0x69, 0x29, 0xc8, 0xea, 0x39, 0x4f, 0xc9, 0xbc, 0xbc, 0xbb,
+ 0xdb, 0x3a, 0x00, 0xae, 0x62, 0x61, 0xb6, 0xea, 0x31, 0x69, 0x78, 0x05,
+ 0x87, 0xd5, 0xb9, 0xf3, 0xde, 0x3d, 0x83, 0xfe, 0xa5, 0x64, 0xbc, 0xcb,
+ 0x9b, 0xde, 0x47, 0xf1, 0x5b, 0xdb, 0xcd, 0x15, 0x17, 0xd6, 0x60, 0x53,
+ 0x8c, 0xc6, 0x8f, 0x8b, 0xc6, 0xe3, 0xf9, 0x52, 0x53, 0x91, 0x8c, 0xdd,
+ 0xf7, 0x35, 0x91, 0x21, 0xc4, 0x00, 0x3e, 0x70, 0xaf, 0x5b, 0x97, 0xe8,
+ 0xfd, 0x60, 0x20, 0x1f, 0xd1, 0xb8, 0xfa, 0x6e, 0x1d, 0x88, 0xe1, 0x56,
+ 0xe9, 0x0d, 0x2e, 0xbe, 0x97, 0x01, 0xa9, 0xb1, 0xad, 0x9f, 0x9c, 0x93,
+ 0xf7, 0x21, 0x75, 0x22, 0x3d, 0x67, 0x5c, 0x07, 0xb8, 0xd8, 0x48, 0x77,
+ 0x78, 0x05, 0x25, 0x2d, 0x92, 0xc3, 0x8d, 0x9a, 0xf6, 0xb4, 0xc0, 0x6b,
+ 0xa1, 0xa4, 0x78, 0x4c, 0xb5, 0x75, 0x58, 0xfd, 0x45, 0xb6, 0xd1, 0x5d,
+ 0x8e, 0x69, 0xf7, 0x8d, 0x48, 0x23, 0xe9, 0x0f, 0xa4, 0xb0, 0xb2, 0x71,
+ 0x99, 0x97, 0xd4, 0x31, 0x19, 0xba, 0x3e, 0xd8, 0xd6, 0x43, 0xbc, 0x0b,
+ 0x84, 0x0f, 0xc5, 0x5a, 0xfa, 0xbd, 0x49, 0xbe, 0xeb, 0x7a, 0x7d, 0xae,
+ 0x35, 0x5a, 0xd9, 0x20, 0x40, 0x24, 0xb9, 0x9a, 0x39, 0xba, 0xa4, 0xa7,
+ 0x55, 0xd9, 0xb5, 0x11, 0xb5, 0xb2, 0xe7, 0x9e, 0x00, 0xd5, 0x0f, 0x2a,
+ 0xe0, 0xdc, 0x6d, 0xcf, 0x05, 0xaf, 0x82, 0xe7, 0x03, 0xa1, 0x1b, 0x41,
+ 0x2a, 0xf3, 0x7a, 0x56, 0xcd, 0x24, 0x1d, 0xbc, 0x92, 0x48, 0x2b, 0x3b,
+ 0xac, 0xd0, 0xe6, 0x30, 0x50, 0xc6, 0xc5, 0x96, 0xb5, 0xac, 0x89, 0x9d,
+ 0x6c, 0x70, 0x68, 0x49, 0x4e, 0x4f, 0x51, 0x9a, 0xf0, 0x71, 0x6a, 0x88,
+ 0x8a, 0xf7, 0xbb, 0xfa, 0xcf, 0xd5, 0x54, 0x15, 0x06, 0xe2, 0x36, 0xd6,
+ 0xea, 0x77, 0xba, 0xb7, 0x9f, 0x08, 0x6b, 0x48, 0xfe, 0x2a, 0xdf, 0x56,
+ 0x31, 0x98, 0xec, 0x5e, 0x45, 0x4e, 0x0c, 0x3d, 0xf4, 0x62, 0x23, 0x30,
+ 0x85, 0x0c, 0xc8, 0xa6, 0xe2, 0x62, 0xec, 0x76, 0x65, 0xd4, 0x40, 0x24,
+ 0x4f, 0xfb, 0xf4, 0x49, 0x4e, 0x76, 0x20, 0xdd, 0x7c, 0x9d, 0x34, 0x56,
+ 0xde, 0x60, 0x91, 0xe4, 0xaa, 0xd2, 0xed, 0xbb, 0x9f, 0xc9, 0x3a, 0x4a,
+ 0x26, 0xf2, 0x49, 0x9e, 0x23, 0x94, 0x94, 0xd7, 0xbf, 0xb9, 0xf2, 0x2a,
+ 0xc6, 0x03, 0x85, 0x38, 0xe1, 0xe4, 0xfd, 0x39, 0xdb, 0xe7, 0xa2, 0xab,
+ 0x7e, 0xad, 0xf3, 0x57, 0x58, 0x05, 0x74, 0x36, 0xb3, 0xf9, 0xad, 0x1f,
+ 0xed, 0x49, 0x4f, 0x71, 0xf5, 0x79, 0xad, 0x18, 0x6c, 0x63, 0x9b, 0x0f,
+ 0x00, 0x43, 0x8e, 0xa2, 0x48, 0x9f, 0xe2, 0xb4, 0xac, 0x86, 0x3b, 0x6b,
+ 0xa6, 0xb2, 0x01, 0x87, 0xb7, 0x43, 0xaf, 0xe0, 0xa9, 0x74, 0x2b, 0x2b,
+ 0x6e, 0x0d, 0x4e, 0x24, 0x0a, 0xdc, 0xd5, 0xa7, 0xbf, 0x1e, 0xd1, 0x06,
+ 0xc6, 0xba, 0x3c, 0xd2, 0x52, 0x3a, 0xde, 0xd0, 0xc0, 0x1a, 0x64, 0x44,
+ 0x3b, 0xcf, 0xcd, 0x63, 0xf5, 0x0a, 0x62, 0xd0, 0x58, 0x09, 0x04, 0x10,
+ 0x63, 0x58, 0x82, 0xb5, 0x72, 0x1b, 0x56, 0x33, 0x1d, 0x66, 0xf0, 0x1b,
+ 0x1f, 0x44, 0x95, 0x41, 0xb6, 0xfa, 0x80, 0xb9, 0xd0, 0x1b, 0x3e, 0xdf,
+ 0x81, 0x49, 0x4e, 0x7b, 0xaa, 0xb0, 0x88, 0xd8, 0xef, 0x23, 0x05, 0x0d,
+ 0xcc, 0xb6, 0x67, 0x63, 0xa7, 0xc2, 0x0a, 0xd3, 0x7d, 0x95, 0xb1, 0xa4,
+ 0xbd, 0xdb, 0x47, 0x89, 0x3e, 0x29, 0xc9, 0x11, 0xcc, 0xa4, 0xa6, 0xaf,
+ 0x4e, 0x0f, 0xfb, 0x60, 0x76, 0xc2, 0x06, 0xd7, 0x6a, 0x44, 0x0e, 0x21,
+ 0x6d, 0x0b, 0x08, 0x21, 0xd0, 0x61, 0xa3, 0x5f, 0x9a, 0xcf, 0x65, 0x90,
+ 0x64, 0x6a, 0x60, 0xe8, 0xac, 0xd0, 0x5c, 0xfa, 0x9c, 0x5e, 0xe9, 0x2e,
+ 0xee, 0x7c, 0xbb, 0x24, 0xa6, 0xa6, 0x5d, 0xed, 0xfb, 0x65, 0x60, 0x49,
+ 0x0d, 0x61, 0x3a, 0xf9, 0x94, 0x2c, 0xaa, 0xc5, 0xa4, 0x90, 0xed, 0xba,
+ 0x01, 0x2a, 0xbe, 0x63, 0xe7, 0xab, 0xc7, 0x66, 0xd4, 0xd1, 0xf3, 0x2e,
+ 0x2a, 0xfb, 0x01, 0x7b, 0xbb, 0x44, 0x4a, 0x4a, 0x6b, 0x3d, 0x8e, 0x66,
+ 0x3e, 0xa7, 0x5e, 0x37, 0x2a, 0x0f, 0xc9, 0x0d, 0xb6, 0xb0, 0x27, 0xc6,
+ 0x5d, 0xc6, 0x8b, 0x5b, 0x32, 0xb6, 0x7a, 0x0f, 0x24, 0x49, 0x10, 0x42,
+ 0xce, 0xda, 0xd6, 0x30, 0x3b, 0x61, 0x3b, 0xb8, 0x31, 0x30, 0x01, 0xd7,
+ 0xef, 0x49, 0x49, 0x72, 0x5d, 0x34, 0xd4, 0x41, 0x89, 0x13, 0xaa, 0xa9,
+ 0xd5, 0x9c, 0xe6, 0x8a, 0x5e, 0x41, 0x2e, 0x76, 0xe6, 0x98, 0x1c, 0x46,
+ 0xbf, 0x72, 0xbf, 0x6d, 0x61, 0xd5, 0xb5, 0xc0, 0x4c, 0x73, 0x3e, 0x01,
+ 0x03, 0xab, 0x54, 0xdb, 0x70, 0xdc, 0xe7, 0xb1, 0xd6, 0xb5, 0xa4, 0x12,
+ 0xda, 0xc9, 0x0e, 0xd7, 0x4e, 0xc9, 0x29, 0xc0, 0xb9, 0xf6, 0xb6, 0xaf,
+ 0x50, 0xfb, 0x58, 0x49, 0x1a, 0x9d, 0x74, 0x8e, 0x3e, 0xf5, 0x9b, 0xb8,
+ 0x1b, 0x88, 0x7b, 0xe4, 0xcf, 0x60, 0x0c, 0x41, 0x57, 0x5b, 0x6d, 0x59,
+ 0xf7, 0x9e, 0x9f, 0x8b, 0x8d, 0x61, 0x73, 0xcf, 0xd2, 0xdf, 0xf4, 0x60,
+ 0x46, 0xe3, 0xb9, 0xab, 0x4a, 0x9f, 0xaa, 0xf8, 0xb8, 0xf0, 0xec, 0x9b,
+ 0x4d, 0xb6, 0xf3, 0xb1, 0xbe, 0xd6, 0x79, 0x49, 0xe4, 0xa4, 0xa5, 0x74,
+ 0x47, 0xc6, 0x36, 0x4e, 0x30, 0x3b, 0x8c, 0x6f, 0x9f, 0x32, 0x3c, 0x15,
+ 0x6f, 0x52, 0xad, 0xdb, 0xb6, 0xb7, 0x77, 0x3b, 0x7b, 0x6e, 0xf1, 0x85,
+ 0xa5, 0x85, 0x45, 0x35, 0x64, 0xd8, 0x05, 0x66, 0xbb, 0x1d, 0xed, 0xd0,
+ 0x97, 0x31, 0xcd, 0x3d, 0xc1, 0x23, 0x9f, 0x25, 0x9f, 0xff, 0x00, 0x37,
+ 0x32, 0xfe, 0xd5, 0xbf, 0xed, 0x23, 0xec, 0xfb, 0xb7, 0xcc, 0x1f, 0x53,
+ 0xfa, 0x91, 0xc2, 0x4a, 0x73, 0x9b, 0x53, 0x9b, 0xba, 0xcb, 0x3d, 0xce,
+ 0x3c, 0xbd, 0xda, 0x9f, 0xbc, 0xaa, 0x42, 0xdc, 0xba, 0x72, 0xef, 0x18,
+ 0xee, 0x35, 0xfa, 0xad, 0x35, 0x5a, 0x74, 0x8d, 0x8e, 0x89, 0x06, 0x56,
+ 0xd5, 0x8d, 0xc7, 0xc7, 0x27, 0x71, 0xdd, 0x60, 0xd4, 0x0f, 0xa6, 0xff,
+ 0x00, 0xfc, 0x8b, 0x56, 0x45, 0xd7, 0x97, 0x5e, 0xf2, 0x04, 0x19, 0xd0,
+ 0x0d, 0x52, 0x53, 0x4a, 0xe6, 0x38, 0x3c, 0xb8, 0x88, 0x92, 0x63, 0xe4,
+ 0xae, 0xf4, 0x1c, 0x36, 0xe6, 0x75, 0x3a, 0xab, 0x78, 0x26, 0xb6, 0x7e,
+ 0x92, 0xc0, 0x23, 0xe8, 0xb3, 0x58, 0xd7, 0xc4, 0xe8, 0x84, 0xe7, 0x06,
+ 0xf6, 0xd0, 0xce, 0xe3, 0xaf, 0x2b, 0xa0, 0xfa, 0xbb, 0x40, 0xc7, 0xc5,
+ 0xbb, 0x2c, 0xb7, 0x5b, 0x9d, 0xb1, 0x80, 0xf8, 0x37, 0xf7, 0x4e, 0xa7,
+ 0xe9, 0x14, 0x94, 0xea, 0x65, 0xdc, 0x08, 0x33, 0x1b, 0x49, 0xd7, 0xda,
+ 0x20, 0x86, 0xfc, 0x75, 0x1a, 0xae, 0x77, 0xa9, 0x5a, 0xe2, 0xf2, 0x1d,
+ 0xc9, 0xd7, 0xe4, 0xb5, 0x72, 0x5d, 0xbf, 0xf4, 0x60, 0x80, 0x5f, 0x00,
+ 0x18, 0x8e, 0x3e, 0x2b, 0x17, 0xa8, 0xd9, 0xba, 0xf7, 0x88, 0x82, 0xdd,
+ 0x3e, 0xe4, 0x94, 0xd3, 0xad, 0x86, 0xdb, 0xeb, 0x60, 0xd3, 0x79, 0x03,
+ 0xef, 0x30, 0xb6, 0xf3, 0xc1, 0xfb, 0x16, 0x5b, 0x99, 0xf9, 0xd6, 0x00,
+ 0x23, 0xf7, 0x43, 0x9a, 0x16, 0x6f, 0x49, 0x60, 0x77, 0x51, 0xc7, 0x27,
+ 0x86, 0x12, 0xf7, 0x7c, 0x1b, 0xee, 0x8f, 0xc1, 0x6d, 0xbb, 0x18, 0xbb,
+ 0xa3, 0xbb, 0x36, 0xb7, 0xcb, 0x36, 0xb9, 0xcf, 0x0e, 0xd3, 0x59, 0x83,
+ 0x1f, 0x34, 0x94, 0xe4, 0xf4, 0x70, 0x0e, 0x65, 0x0d, 0xe5, 0xad, 0xde,
+ 0xe1, 0x1d, 0xf6, 0xb4, 0xa0, 0xe7, 0x3e, 0x69, 0x03, 0x80, 0x0c, 0x91,
+ 0xa6, 0xa7, 0xe2, 0x8d, 0xd1, 0x25, 0xb9, 0x2e, 0xb3, 0x48, 0xaa, 0x87,
+ 0x98, 0x22, 0x64, 0xb8, 0x7f, 0xe6, 0x48, 0x57, 0x17, 0x1a, 0x1e, 0xe0,
+ 0x06, 0x9c, 0x4f, 0x10, 0x7b, 0xea, 0x92, 0x9d, 0x1e, 0x8d, 0x5f, 0xda,
+ 0x7a, 0x87, 0x48, 0x73, 0x88, 0x0d, 0xac, 0x17, 0x38, 0x9d, 0x04, 0x54,
+ 0x4b, 0x95, 0x8e, 0xbc, 0xea, 0xfa, 0x7f, 0x5e, 0xaf, 0xaa, 0x61, 0x3c,
+ 0x39, 0x96, 0xb8, 0x58, 0x43, 0x78, 0xf5, 0x1b, 0xa3, 0xc4, 0xff, 0x00,
+ 0x28, 0x2c, 0x7a, 0xc1, 0x77, 0x4f, 0xc7, 0x82, 0x41, 0x6b, 0xac, 0x06,
+ 0x3c, 0x1c, 0x42, 0x0d, 0xd8, 0xd7, 0x35, 0xfb, 0x89, 0x80, 0xe1, 0x2c,
+ 0x64, 0xfe, 0x77, 0x90, 0x49, 0x4f, 0x57, 0xd4, 0x7e, 0xb0, 0x1c, 0x8a,
+ 0xe3, 0x1e, 0x90, 0xc6, 0x58, 0x01, 0x0e, 0x71, 0x25, 0xd0, 0x7b, 0xe9,
+ 0x10, 0xb3, 0x2f, 0xc9, 0x73, 0x5b, 0x8f, 0x75, 0x8f, 0x20, 0x1b, 0x41,
+ 0xde, 0x4e, 0xbe, 0xc1, 0x22, 0x0f, 0xc4, 0xac, 0x23, 0x63, 0xe1, 0xa0,
+ 0x19, 0x04, 0x16, 0x89, 0xd4, 0x09, 0x5a, 0xd9, 0xbb, 0xb1, 0xdb, 0x8b,
+ 0x57, 0x2f, 0x65, 0x73, 0x11, 0xa4, 0xb8, 0xf8, 0x24, 0xa6, 0x9b, 0xec,
+ 0x36, 0xe5, 0xd9, 0x63, 0x89, 0x79, 0x76, 0xe7, 0x13, 0xc9, 0x33, 0xf1,
+ 0x47, 0xcb, 0xca, 0xf5, 0x0d, 0x2f, 0x01, 0xec, 0x68, 0x1f, 0x67, 0x2e,
+ 0x7c, 0x70, 0x47, 0x04, 0x4c, 0xe9, 0x0a, 0xa5, 0x26, 0x1c, 0xf7, 0x1e,
+ 0xc3, 0x5f, 0xbd, 0x3e, 0x46, 0xec, 0x8b, 0x1a, 0xc3, 0xb6, 0xa7, 0x00,
+ 0x60, 0x1f, 0xbb, 0x5f, 0x34, 0x94, 0xc9, 0xdb, 0x6b, 0x6b, 0x6b, 0x6e,
+ 0xb2, 0x49, 0xdd, 0xd9, 0x4e, 0x43, 0x5a, 0xe7, 0x3b, 0x84, 0x17, 0x54,
+ 0x7d, 0x50, 0xd0, 0x61, 0xac, 0x10, 0x39, 0xec, 0xad, 0x57, 0x8f, 0x5b,
+ 0x87, 0xb8, 0x6e, 0x03, 0x89, 0xf1, 0x49, 0x4d, 0x29, 0xf5, 0x6e, 0x63,
+ 0x07, 0x03, 0xdc, 0xef, 0x80, 0xec, 0xae, 0x3f, 0x69, 0x61, 0x1e, 0x23,
+ 0x54, 0x21, 0x8d, 0xbf, 0x24, 0xd5, 0x4c, 0x6f, 0x71, 0x0d, 0x63, 0xbb,
+ 0x0d, 0xca, 0x19, 0x63, 0x37, 0x07, 0x23, 0xec, 0xb9, 0x75, 0xfb, 0xf4,
+ 0xd0, 0x19, 0xdc, 0xd3, 0xc1, 0x69, 0x09, 0x29, 0xde, 0xfa, 0xb1, 0xf5,
+ 0x91, 0x98, 0x8d, 0xfd, 0x99, 0x9e, 0x40, 0x63, 0x49, 0xfb, 0x3d, 0xae,
+ 0xfa, 0x3a, 0xfe, 0x63, 0xff, 0x00, 0x81, 0x5b, 0xb7, 0xf5, 0x3a, 0x00,
+ 0x26, 0x2b, 0x60, 0xe4, 0x96, 0xf2, 0xbc, 0xf2, 0xd2, 0xc1, 0xa3, 0x8e,
+ 0xe8, 0xfc, 0xde, 0xea, 0xc7, 0x4e, 0xae, 0xec, 0x87, 0x59, 0x5e, 0xd7,
+ 0x3e, 0xb6, 0xb7, 0xe8, 0x82, 0x4e, 0xd9, 0x29, 0x29, 0xea, 0x9b, 0xd4,
+ 0xfa, 0x73, 0x9f, 0xeb, 0x64, 0xe4, 0xb0, 0x37, 0xf3, 0x59, 0xbb, 0x71,
+ 0x3f, 0x18, 0x9f, 0xb9, 0x3d, 0xdf, 0x59, 0xfa, 0x4d, 0x7c, 0x58, 0xeb,
+ 0x3f, 0xaa, 0xd3, 0xfc, 0x61, 0x73, 0x6f, 0xe9, 0x16, 0x56, 0x24, 0x35,
+ 0xce, 0x9e, 0x06, 0xb1, 0xf8, 0x21, 0x59, 0x86, 0xc7, 0xd6, 0xc9, 0xf6,
+ 0xed, 0xf6, 0x93, 0xaf, 0xf1, 0x49, 0x4f, 0x46, 0x3e, 0xb6, 0xf4, 0xb7,
+ 0x7b, 0x4b, 0x6d, 0x8f, 0x1d, 0xa0, 0xfe, 0x47, 0x2b, 0x54, 0xf5, 0xfe,
+ 0x93, 0x73, 0x4c, 0x65, 0x35, 0x87, 0xc2, 0xcf, 0x61, 0xff, 0x00, 0xa4,
+ 0x17, 0x26, 0xce, 0x94, 0xcb, 0x8c, 0x53, 0xac, 0x46, 0xee, 0x74, 0x9f,
+ 0x3e, 0xe8, 0xaf, 0xe8, 0x4d, 0x07, 0x4b, 0x1c, 0x20, 0x02, 0x77, 0x0d,
+ 0x3e, 0x09, 0x29, 0xec, 0xa8, 0xcc, 0xc3, 0xb1, 0xed, 0xf4, 0x6f, 0xae,
+ 0xc7, 0x9e, 0x1a, 0xd7, 0x35, 0xc4, 0xfd, 0xc5, 0x69, 0x56, 0xd0, 0xda,
+ 0x1a, 0x0b, 0x75, 0x3a, 0xc7, 0x9a, 0xe2, 0x7a, 0x0f, 0x4e, 0xae, 0x9e,
+ 0xad, 0x53, 0x81, 0x20, 0xb1, 0xaf, 0x3a, 0xf7, 0xf6, 0xc2, 0xee, 0xa4,
+ 0xfa, 0x20, 0x90, 0x23, 0xb1, 0xee, 0x92, 0x9e, 0x6f, 0x29, 0xf3, 0xd7,
+ 0x1c, 0x22, 0x61, 0xac, 0xef, 0xa4, 0x00, 0xb6, 0x81, 0x61, 0x68, 0xb0,
+ 0x6b, 0x23, 0x48, 0x58, 0x85, 0x81, 0xdd, 0x5a, 0xdb, 0x0b, 0xa3, 0x8d,
+ 0x38, 0xd3, 0xc9, 0x6e, 0x62, 0xfd, 0x03, 0xc0, 0xf0, 0x3e, 0x09, 0x29,
+ 0x59, 0x00, 0x7d, 0x9c, 0x88, 0x91, 0x0a, 0x98, 0xac, 0x1d, 0x22, 0x4f,
+ 0xe6, 0xf8, 0x00, 0x56, 0x86, 0x40, 0x26, 0xa7, 0x98, 0xe4, 0x6a, 0x7b,
+ 0xac, 0xf6, 0x98, 0xd3, 0x4f, 0x12, 0x52, 0x52, 0x76, 0xd2, 0x03, 0x1a,
+ 0x1b, 0xa0, 0x6c, 0x82, 0x00, 0x4a, 0xca, 0xdc, 0xcc, 0x4b, 0x08, 0x68,
+ 0x2f, 0x82, 0x40, 0x7f, 0xd1, 0xd3, 0xc5, 0x1a, 0x98, 0x73, 0x1b, 0x1c,
+ 0x9e, 0x0f, 0x01, 0x48, 0xb0, 0x90, 0xfa, 0xdd, 0xa6, 0xe1, 0xac, 0x71,
+ 0xa8, 0xec, 0x92, 0x9c, 0x4c, 0x6c, 0x9c, 0x83, 0xa5, 0x38, 0xec, 0x30,
+ 0x20, 0xba, 0xa2, 0xd3, 0xfd, 0xc5, 0x4b, 0xa8, 0xdb, 0x91, 0x4e, 0x29,
+ 0xb4, 0x38, 0x35, 0xcc, 0x6c, 0xc0, 0x00, 0xbd, 0xcf, 0xec, 0xd1, 0x2b,
+ 0x3c, 0x60, 0xe5, 0x92, 0x5f, 0x89, 0x98, 0xd0, 0x41, 0x20, 0xbc, 0xb0,
+ 0xb1, 0xed, 0x23, 0xb3, 0xb6, 0x95, 0x26, 0xe0, 0x5c, 0xf2, 0x0e, 0x75,
+ 0xe3, 0x26, 0xdf, 0xcd, 0x60, 0x92, 0xd9, 0x8e, 0x4c, 0xf6, 0x49, 0x48,
+ 0xe8, 0xeb, 0x79, 0xb7, 0x61, 0x4e, 0x55, 0x41, 0x97, 0x31, 0xc2, 0x08,
+ 0x1e, 0xd7, 0x81, 0xac, 0xc0, 0xe1, 0x68, 0xfa, 0xe7, 0x66, 0xe9, 0x1f,
+ 0x4b, 0xe5, 0xcc, 0xfe, 0x44, 0x21, 0x89, 0x8a, 0xca, 0xb6, 0xd7, 0x53,
+ 0x78, 0x82, 0x00, 0x83, 0x31, 0x06, 0x15, 0x4f, 0xb4, 0xd7, 0xf6, 0x6f,
+ 0x4e, 0x4f, 0xa9, 0x3b, 0x76, 0x41, 0x9d, 0xdb, 0x76, 0x7d, 0xe9, 0x29,
+ 0xcf, 0x7e, 0xd6, 0xb2, 0x18, 0x00, 0x1f, 0x95, 0x63, 0x3a, 0x1d, 0x63,
+ 0x8f, 0x1a, 0x9f, 0xca, 0xb4, 0xad, 0xb7, 0xc3, 0x8e, 0x01, 0x55, 0x2b,
+ 0xc2, 0xb7, 0xe9, 0x3d, 0xae, 0x60, 0x74, 0xc3, 0x83, 0x49, 0x1f, 0x34,
+ 0x94, 0x84, 0x00, 0xc3, 0x0d, 0x77, 0x7d, 0x67, 0x85, 0xd5, 0xb5, 0xbf,
+ 0x67, 0xc3, 0xa6, 0x91, 0x00, 0x06, 0x82, 0xe8, 0x30, 0x1c, 0x7e, 0x91,
+ 0xd7, 0xe2, 0x56, 0x26, 0x37, 0x4e, 0x73, 0xf2, 0x18, 0xd6, 0x9f, 0x51,
+ 0xa5, 0xe3, 0x71, 0x68, 0xd2, 0x06, 0xbc, 0xf0, 0xb6, 0x6f, 0x79, 0xb2,
+ 0xe9, 0x9f, 0xa4, 0x44, 0x81, 0xac, 0xc9, 0xef, 0xe0, 0x92, 0x90, 0xdc,
+ 0x59, 0x2d, 0x7b, 0xc9, 0x1e, 0x90, 0x24, 0xcf, 0x73, 0x1b, 0xb9, 0x58,
+ 0x17, 0xdd, 0xbc, 0xb8, 0x9e, 0x4e, 0xab, 0x73, 0xae, 0xbb, 0x1e, 0x8c,
+ 0x4c, 0x71, 0x51, 0x9c, 0x8c, 0x86, 0xef, 0xb4, 0x4f, 0x00, 0xb8, 0xed,
+ 0xfc, 0x17, 0x36, 0xe3, 0x3f, 0x3e, 0x42, 0x4a, 0x75, 0xba, 0x23, 0x40,
+ 0xc6, 0xcd, 0xcb, 0x77, 0x15, 0x54, 0x6b, 0x1f, 0xd6, 0xb2, 0x00, 0xfc,
+ 0x25, 0x6f, 0x61, 0xe2, 0x3a, 0xcf, 0xab, 0xae, 0x61, 0xb3, 0xdb, 0x6d,
+ 0x4e, 0x10, 0x78, 0x69, 0x0e, 0x77, 0xf1, 0x0b, 0x02, 0xb2, 0xec, 0x5e,
+ 0x8c, 0xda, 0x9d, 0xf4, 0xb2, 0x9d, 0xeb, 0x91, 0x3d, 0x98, 0x0b, 0x58,
+ 0x0f, 0xc7, 0x95, 0xad, 0x5d, 0xce, 0xc7, 0xfa, 0xaf, 0x8f, 0x53, 0x8b,
+ 0x9a, 0xeb, 0x74, 0x6f, 0xf5, 0x77, 0xb9, 0xee, 0x03, 0xe4, 0x12, 0x53,
+ 0x99, 0xd2, 0xda, 0x3d, 0x2e, 0xa3, 0x91, 0x30, 0xca, 0xaa, 0x6d, 0x4d,
+ 0x3e, 0x6e, 0x70, 0xd7, 0xfe, 0x8a, 0xa8, 0xdd, 0xe3, 0x1a, 0xc3, 0xa1,
+ 0x64, 0x00, 0x24, 0x4f, 0xdc, 0xaf, 0xd7, 0xfa, 0xaf, 0xd5, 0xa2, 0xf7,
+ 0x0f, 0x76, 0x4d, 0xcd, 0x86, 0x8e, 0xe1, 0x82, 0x7f, 0x8a, 0xa5, 0x8e,
+ 0xf1, 0x77, 0xaa, 0xfb, 0x9a, 0xed, 0x8d, 0x67, 0xb0, 0x34, 0x86, 0xa4,
+ 0xa4, 0xb8, 0xbb, 0x46, 0x05, 0x53, 0xfe, 0x91, 0xfa, 0x7d, 0xc9, 0xc7,
+ 0xa7, 0x6d, 0xae, 0x0e, 0x33, 0xb5, 0xb0, 0x09, 0xed, 0xe6, 0xa3, 0x43,
+ 0x76, 0x61, 0xd5, 0xe0, 0x5c, 0xf7, 0x0f, 0xc0, 0x7f, 0x04, 0x07, 0x49,
+ 0xa9, 0xe4, 0x98, 0x78, 0x24, 0x81, 0xe5, 0x09, 0x29, 0x7c, 0x68, 0xae,
+ 0xfa, 0xec, 0x74, 0x3a, 0xa7, 0x3b, 0x53, 0xdb, 0x53, 0x05, 0x69, 0xf5,
+ 0x8a, 0xad, 0x39, 0x32, 0xca, 0xcb, 0xc8, 0xda, 0xd6, 0x11, 0xa8, 0x80,
+ 0x35, 0x3a, 0x2c, 0x9a, 0x2c, 0xc7, 0xb3, 0x1d, 0x8c, 0xb1, 0xdb, 0x5d,
+ 0x51, 0x30, 0x38, 0x90, 0x55, 0xdc, 0x8e, 0xa1, 0x8f, 0x95, 0x91, 0x8e,
+ 0xd2, 0x1e, 0xda, 0xea, 0x69, 0x2f, 0x73, 0x5d, 0x06, 0x7c, 0x41, 0x3e,
+ 0x41, 0x25, 0x35, 0x5a, 0xdf, 0x41, 0xc4, 0xde, 0x43, 0x37, 0x41, 0x8e,
+ 0x5d, 0xa1, 0xf0, 0x49, 0xec, 0x75, 0xc5, 0xf7, 0x35, 0x85, 0xb5, 0xc1,
+ 0xd4, 0xf2, 0x7e, 0x0a, 0xb3, 0x1a, 0xc7, 0xd8, 0xf7, 0xbc, 0xb9, 0xcc,
+ 0x69, 0x9d, 0x79, 0x89, 0x5a, 0x10, 0x1c, 0xc8, 0x69, 0x22, 0x74, 0x3e,
+ 0x43, 0xcd, 0x25, 0x34, 0x03, 0xef, 0x6c, 0x9a, 0xec, 0x74, 0x1f, 0x18,
+ 0xfe, 0x2a, 0x0e, 0xbf, 0x24, 0x08, 0xde, 0x75, 0x45, 0x32, 0x0b, 0x99,
+ 0xe0, 0x75, 0x3f, 0x04, 0x3b, 0x07, 0x64, 0x94, 0xec, 0xf4, 0x4a, 0x83,
+ 0xad, 0xc6, 0x71, 0x74, 0x81, 0xee, 0x3f, 0x22, 0x54, 0xbe, 0xb4, 0xed,
+ 0xfb, 0x7d, 0x0e, 0x89, 0xdd, 0x54, 0x1f, 0x19, 0x0e, 0x28, 0x7d, 0x30,
+ 0xd8, 0xca, 0x1a, 0xfa, 0x44, 0xb8, 0x08, 0x20, 0xf9, 0x9d, 0x4a, 0x87,
+ 0x5b, 0xb2, 0xcb, 0x2c, 0xa5, 0xcf, 0x04, 0x6c, 0x90, 0x27, 0xcf, 0x54,
+ 0x94, 0xd0, 0x6d, 0x35, 0x0d, 0x46, 0xa4, 0xf6, 0x1c, 0xfe, 0x2b, 0x5f,
+ 0xea, 0xd9, 0x34, 0xf5, 0x07, 0x0d, 0xc5, 0xa0, 0xd6, 0x49, 0x1e, 0x3a,
+ 0x8d, 0x0a, 0xca, 0x2d, 0x69, 0x99, 0x00, 0xe9, 0xca, 0xb7, 0xd1, 0x5e,
+ 0xe6, 0x65, 0xcd, 0x7a, 0x9d, 0x8e, 0xe7, 0xe2, 0x12, 0x53, 0xd9, 0x7a,
+ 0xe3, 0x90, 0x7f, 0x8a, 0x66, 0xba, 0xbb, 0x0c, 0x96, 0xb4, 0xf9, 0xc4,
+ 0xac, 0xd1, 0x91, 0x6b, 0x7e, 0x97, 0x7e, 0xf3, 0xa7, 0xe0, 0xa6, 0xcc,
+ 0xc6, 0x0f, 0x69, 0x1b, 0x5c, 0x7f, 0x2a, 0x4a, 0x74, 0x22, 0xb1, 0xf9,
+ 0xad, 0xfb, 0x82, 0x52, 0xc9, 0xfa, 0x0d, 0x3e, 0x26, 0x02, 0xcf, 0x66,
+ 0x75, 0x6f, 0x96, 0xd6, 0x77, 0x3c, 0x72, 0x07, 0x20, 0xfc, 0xd1, 0x05,
+ 0xc7, 0x61, 0x97, 0x00, 0xef, 0xbd, 0x25, 0x3a, 0x18, 0xed, 0x63, 0xed,
+ 0x00, 0x35, 0xad, 0xf0, 0x22, 0x25, 0x5d, 0x79, 0x2d, 0xa8, 0x07, 0x08,
+ 0xd2, 0x01, 0x58, 0x55, 0xe5, 0x16, 0x38, 0x3e, 0xb7, 0x49, 0x1f, 0x25,
+ 0x70, 0xf5, 0x3b, 0x1e, 0xd0, 0xc7, 0xb0, 0x16, 0x8d, 0x64, 0x76, 0x49,
+ 0x4d, 0x76, 0xd4, 0xd7, 0x5c, 0xe7, 0x38, 0x97, 0x6b, 0xae, 0x9d, 0x8a,
+ 0xd0, 0xc4, 0x3b, 0x0b, 0xdb, 0x33, 0xba, 0x0e, 0xbc, 0x4a, 0xcb, 0x7e,
+ 0x56, 0x3d, 0x59, 0x01, 0x8e, 0xb9, 0xac, 0x7b, 0xb5, 0x20, 0x9d, 0xba,
+ 0x7f, 0x69, 0x5e, 0x63, 0xc0, 0x6e, 0xf6, 0x8d, 0xec, 0x3c, 0x96, 0x99,
+ 0xfc, 0x89, 0x29, 0xbd, 0x92, 0xef, 0xd1, 0x38, 0x6b, 0x3b, 0x79, 0x0b,
+ 0x3d, 0xaf, 0x63, 0x01, 0x78, 0x27, 0x4d, 0x1d, 0x23, 0x95, 0x64, 0x90,
+ 0xea, 0x49, 0x74, 0x88, 0x04, 0x9f, 0x20, 0x02, 0xc3, 0x67, 0x5f, 0xe9,
+ 0x76, 0x45, 0x4c, 0x7b, 0xac, 0xb1, 0xc7, 0x68, 0x1b, 0x4c, 0x7e, 0x29,
+ 0x29, 0xdd, 0xab, 0xd5, 0xda, 0x1f, 0x5c, 0x78, 0xb4, 0x3b, 0x8f, 0xc1,
+ 0x1c, 0xbe, 0xc1, 0xe0, 0x03, 0x80, 0x2e, 0x3e, 0x73, 0xd9, 0x66, 0xd3,
+ 0xd5, 0x71, 0xab, 0xa9, 0xad, 0x7b, 0x88, 0x70, 0x93, 0xc1, 0x3f, 0x91,
+ 0x47, 0x27, 0xeb, 0x0e, 0x0e, 0x3e, 0xd7, 0x38, 0x3e, 0xc2, 0xe1, 0x2c,
+ 0xda, 0xdf, 0x96, 0xbb, 0x88, 0x8e, 0x12, 0x53, 0xcd, 0xe4, 0xf5, 0x0a,
+ 0x70, 0xfa, 0xb6, 0x58, 0xa9, 0xf3, 0x8d, 0x65, 0xce, 0xdc, 0xf1, 0x30,
+ 0xd7, 0x10, 0x0b, 0xa0, 0x7f, 0x5b, 0x45, 0xa3, 0x55, 0xac, 0xa8, 0x0b,
+ 0x18, 0x37, 0xd7, 0x66, 0xbe, 0xa0, 0x23, 0x71, 0x95, 0xcd, 0xe7, 0xda,
+ 0x32, 0x32, 0xae, 0x7d, 0x75, 0x16, 0x36, 0xeb, 0x1c, 0xf0, 0xce, 0x4e,
+ 0xa4, 0xee, 0x6f, 0xf1, 0x56, 0x3a, 0x7e, 0x70, 0xe9, 0xe3, 0xec, 0xd7,
+ 0x3c, 0xb9, 0xa4, 0xc9, 0x81, 0x22, 0xb3, 0xfc, 0x99, 0xe7, 0xcd, 0x25,
+ 0x3d, 0x0c, 0xbd, 0xde, 0xf6, 0x98, 0x67, 0x7e, 0xc4, 0x26, 0xf4, 0x6c,
+ 0x9f, 0xb5, 0x76, 0xf0, 0xef, 0x3c, 0x6e, 0xfb, 0x93, 0x7a, 0x98, 0xd5,
+ 0xb3, 0xd6, 0xbe, 0xc9, 0x6b, 0x40, 0x25, 0xee, 0x3a, 0x47, 0xc3, 0x85,
+ 0x4b, 0xfe, 0x75, 0x63, 0x7d, 0xa7, 0xd3, 0xf4, 0xdd, 0xf6, 0x7e, 0x3d,
+ 0x6e, 0xff, 0x00, 0x1d, 0xbe, 0x09, 0x29, 0x2d, 0x78, 0x58, 0xfb, 0x8f,
+ 0xd9, 0x9d, 0x5e, 0x58, 0x01, 0xc6, 0xd2, 0xed, 0x1a, 0xcd, 0xa7, 0x4e,
+ 0x34, 0x92, 0x8d, 0x6d, 0xb8, 0xff, 0x00, 0xa2, 0x39, 0x14, 0x93, 0xb9,
+ 0xc1, 0x95, 0x54, 0xc1, 0xbc, 0xcc, 0x6a, 0x74, 0x5a, 0x57, 0x61, 0x56,
+ 0xe8, 0x7d, 0x6f, 0x34, 0x06, 0x99, 0xf6, 0x3b, 0x63, 0x60, 0x73, 0xed,
+ 0x20, 0xb7, 0xf0, 0x40, 0xac, 0xd7, 0x43, 0xac, 0x35, 0x38, 0xfa, 0x80,
+ 0x48, 0x7b, 0xe0, 0x3a, 0x0f, 0xf6, 0x63, 0xee, 0x09, 0x29, 0xab, 0x25,
+ 0xe5, 0xd6, 0x86, 0x1a, 0x58, 0xcd, 0xcc, 0x65, 0x64, 0xc6, 0xe1, 0xd9,
+ 0xdb, 0x42, 0xa6, 0xe7, 0x4b, 0x9c, 0xe3, 0x3a, 0x6e, 0x33, 0xc4, 0xc0,
+ 0xd3, 0xda, 0xae, 0x59, 0x91, 0x90, 0x59, 0x61, 0xb9, 0xac, 0x63, 0xac,
+ 0x70, 0x78, 0x15, 0x99, 0xdc, 0x38, 0xdc, 0x66, 0x08, 0x3a, 0x2c, 0xb7,
+ 0x59, 0x0d, 0x73, 0x84, 0x49, 0xfb, 0xf9, 0x9d, 0x4f, 0x74, 0x94, 0xe7,
+ 0xf5, 0x3c, 0x97, 0xe4, 0x65, 0x3d, 0xe7, 0x81, 0x0d, 0x6f, 0x93, 0x5a,
+ 0x36, 0x81, 0xf7, 0x2a, 0xd8, 0x38, 0xbf, 0x6e, 0xcb, 0x65, 0x1e, 0xab,
+ 0x29, 0x1c, 0x97, 0xd8, 0x60, 0x40, 0xe6, 0x3c, 0xd4, 0xef, 0xbc, 0x81,
+ 0xbb, 0x63, 0x01, 0x3f, 0xc9, 0x08, 0x4c, 0xb6, 0xd6, 0x80, 0x44, 0x07,
+ 0x3f, 0xe8, 0x00, 0x23, 0xe6, 0x7f, 0x82, 0x4a, 0x7a, 0x4c, 0xbe, 0x8f,
+ 0x91, 0x66, 0x38, 0xaf, 0x16, 0xca, 0x6e, 0x71, 0x3c, 0x4b, 0x5a, 0xff,
+ 0x00, 0x6e, 0x90, 0x0b, 0xb8, 0x08, 0xfd, 0x63, 0x1b, 0x24, 0x1c, 0x4c,
+ 0x63, 0x56, 0xea, 0xa8, 0xa0, 0xd6, 0xdd, 0xa4, 0x12, 0xfb, 0x5c, 0xdd,
+ 0xa7, 0x6f, 0xf6, 0x56, 0x1e, 0xe7, 0x59, 0x9f, 0x40, 0x6b, 0xdc, 0x5a,
+ 0x5f, 0x5b, 0x1d, 0xac, 0x07, 0x0d, 0xdb, 0x23, 0x4f, 0x14, 0xfd, 0x4b,
+ 0x26, 0xf6, 0x66, 0x5f, 0xe9, 0xd8, 0x59, 0xe9, 0x5c, 0xef, 0x44, 0x03,
+ 0xa3, 0x5a, 0xd3, 0xb4, 0x06, 0xfd, 0xc9, 0x29, 0x9e, 0x4d, 0x96, 0x16,
+ 0x55, 0x88, 0xf6, 0xed, 0xaf, 0x15, 0xa5, 0xa1, 0xa4, 0x47, 0xb8, 0x99,
+ 0x74, 0xcf, 0x9a, 0x88, 0x6b, 0x7e, 0xcf, 0x7b, 0x8c, 0xfd, 0x11, 0x04,
+ 0x09, 0x83, 0xe0, 0xaa, 0xdb, 0x9b, 0x90, 0x58, 0x3d, 0x7b, 0x5d, 0x61,
+ 0x80, 0x1a, 0x1c, 0x66, 0x00, 0xf8, 0xab, 0x58, 0x8d, 0x73, 0xba, 0x5d,
+ 0xd6, 0xbc, 0x9f, 0x7b, 0x89, 0x13, 0xc1, 0xda, 0x3b, 0x24, 0xa4, 0x65,
+ 0xee, 0xaf, 0x0f, 0x15, 0x9d, 0xcb, 0x5c, 0xf8, 0x1f, 0xca, 0x71, 0x42,
+ 0xa9, 0xb7, 0x3d, 0xce, 0xda, 0xc0, 0x1a, 0x0c, 0x10, 0x79, 0xdc, 0x46,
+ 0x9f, 0x8a, 0xd2, 0x18, 0xbb, 0xdb, 0x50, 0x88, 0xf4, 0xeb, 0x63, 0x79,
+ 0xf2, 0x9f, 0xe2, 0xa1, 0x76, 0x0e, 0x43, 0x2d, 0xf5, 0x71, 0x9b, 0xbf,
+ 0x74, 0x6f, 0x68, 0x30, 0x64, 0x70, 0x75, 0x49, 0x4e, 0x7b, 0x7a, 0x7d,
+ 0x8d, 0x78, 0x0e, 0x23, 0x75, 0x9a, 0x01, 0x1c, 0xeb, 0xa9, 0x56, 0xeb,
+ 0xc1, 0x17, 0x35, 0xd5, 0x30, 0x08, 0x69, 0x9b, 0x08, 0xd3, 0x73, 0x80,
+ 0xfa, 0x23, 0xc8, 0x27, 0xb2, 0xbc, 0xba, 0x58, 0x72, 0x72, 0x37, 0x7a,
+ 0xad, 0x00, 0x31, 0xed, 0xda, 0x59, 0x5b, 0x67, 0xdc, 0xd7, 0x0e, 0x64,
+ 0xa8, 0xd5, 0xd4, 0xf2, 0xac, 0x60, 0x1e, 0xad, 0x60, 0xb7, 0x8d, 0xc0,
+ 0x8f, 0xc6, 0x02, 0x4a, 0x68, 0xe2, 0x90, 0x1c, 0xf1, 0xe5, 0xf0, 0xe0,
+ 0xa3, 0x9c, 0x86, 0xd8, 0xf0, 0xc0, 0x03, 0x41, 0x3a, 0x89, 0xfe, 0x2a,
+ 0xcb, 0x6b, 0xc7, 0x6b, 0xa6, 0xcc, 0x66, 0x92, 0xff, 0x00, 0x6e, 0xea,
+ 0x2c, 0xdd, 0xa9, 0xf2, 0x04, 0xa4, 0xce, 0x9b, 0xe9, 0x58, 0xf2, 0xf2,
+ 0x4f, 0x00, 0x0e, 0xe2, 0x52, 0x53, 0x49, 0xc3, 0x75, 0x82, 0x74, 0x93,
+ 0xaf, 0x82, 0x6b, 0xeb, 0x00, 0x6e, 0xd7, 0x4e, 0xe8, 0xb9, 0x2c, 0x2c,
+ 0x2c, 0xec, 0x48, 0xd4, 0x78, 0x6d, 0x30, 0x87, 0x63, 0x1c, 0x59, 0xa7,
+ 0x1d, 0xcf, 0x60, 0x92, 0x9b, 0x78, 0xd6, 0x96, 0xd5, 0x53, 0x00, 0xd2,
+ 0x24, 0x91, 0xe2, 0x51, 0x7a, 0xa3, 0x5c, 0xec, 0x36, 0x3d, 0xe6, 0x5e,
+ 0xd7, 0x09, 0x3f, 0x15, 0x0c, 0x36, 0xc5, 0x6d, 0xd6, 0x7b, 0x80, 0x3c,
+ 0x15, 0x8c, 0xd0, 0x1d, 0x86, 0xf0, 0x48, 0x92, 0xd9, 0x03, 0xe1, 0xaa,
+ 0x4a, 0x72, 0x5a, 0x7d, 0xb2, 0x78, 0x2a, 0xf7, 0x49, 0x64, 0xe4, 0x82,
+ 0x0e, 0xbb, 0x0e, 0x83, 0x5e, 0xea, 0x83, 0x4c, 0xb0, 0x2b, 0xbd, 0x31,
+ 0xa0, 0x66, 0x7f, 0x60, 0x81, 0xac, 0x78, 0x24, 0xa7, 0x67, 0x4e, 0x09,
+ 0x83, 0xe7, 0xaa, 0x97, 0xa4, 0xcd, 0xa4, 0x4e, 0x9c, 0x90, 0x46, 0x88,
+ 0x00, 0x53, 0x3c, 0x0f, 0x8c, 0xca, 0xb0, 0xc8, 0x20, 0x35, 0xba, 0x47,
+ 0x29, 0x29, 0x8f, 0xd9, 0x99, 0x3b, 0x86, 0x9e, 0x3a, 0x27, 0x75, 0x15,
+ 0xcc, 0xc9, 0xd4, 0x79, 0xa9, 0x97, 0x13, 0xa1, 0xe3, 0xc2, 0x54, 0x4b,
+ 0xc8, 0xed, 0xa7, 0x71, 0xd9, 0x25, 0x2e, 0x2a, 0xda, 0x3d, 0x84, 0x03,
+ 0xf0, 0x4e, 0x2d, 0x73, 0x0b, 0x77, 0x12, 0x01, 0xef, 0xe0, 0xa0, 0xc1,
+ 0x63, 0xa5, 0xa1, 0xdf, 0x7f, 0xe4, 0x52, 0xd9, 0x6b, 0x47, 0xba, 0x63,
+ 0xba, 0x4a, 0x73, 0xfa, 0xa5, 0x3f, 0x69, 0xb7, 0x7c, 0xcc, 0x36, 0x27,
+ 0xb2, 0xcb, 0x38, 0xd6, 0x54, 0xe0, 0x6a, 0x7b, 0x9a, 0x47, 0x3b, 0x49,
+ 0x1f, 0x91, 0x74, 0xf5, 0x50, 0x1e, 0xd7, 0x4e, 0xba, 0xfe, 0x0a, 0xae,
+ 0x56, 0x33, 0x59, 0x01, 0xa3, 0x49, 0x04, 0xfc, 0x25, 0x25, 0x38, 0xd6,
+ 0x59, 0xd5, 0x69, 0xb5, 0xd8, 0xd6, 0x65, 0xda, 0x43, 0x7f, 0x37, 0x7b,
+ 0xa0, 0x87, 0x09, 0xf1, 0x44, 0xe9, 0xf4, 0x1a, 0xf2, 0xaa, 0x7b, 0x87,
+ 0xd1, 0x70, 0x31, 0xf0, 0x5a, 0x79, 0xf8, 0xec, 0xb3, 0xa8, 0x10, 0xd0,
+ 0x08, 0x2c, 0x6c, 0xfc, 0x75, 0x45, 0xa7, 0x09, 0xac, 0xf7, 0x8e, 0xc3,
+ 0x44, 0x94, 0xe8, 0xdb, 0xb1, 0xc3, 0x46, 0x09, 0x3c, 0x03, 0xc6, 0xbe,
+ 0x61, 0x53, 0x76, 0x15, 0x36, 0x19, 0x71, 0x24, 0x81, 0x0d, 0x02, 0x34,
+ 0xf9, 0xc7, 0x65, 0x69, 0xb5, 0x00, 0xd9, 0x1a, 0x82, 0x3b, 0xe8, 0x90,
+ 0x63, 0x5a, 0x35, 0x1a, 0x7e, 0x44, 0x94, 0xd0, 0xbf, 0x0e, 0x96, 0xb7,
+ 0xd5, 0x71, 0x0d, 0xf4, 0xf5, 0x6b, 0xb8, 0xe1, 0x64, 0x3d, 0xb8, 0x82,
+ 0x5d, 0x5b, 0xa5, 0xc4, 0x68, 0x76, 0x38, 0x82, 0x08, 0x20, 0x7b, 0x63,
+ 0x42, 0xba, 0x43, 0x45, 0x37, 0x69, 0x1b, 0xd8, 0x7b, 0x72, 0xa3, 0xf6,
+ 0x3a, 0x1d, 0xf9, 0x93, 0xf1, 0x30, 0x92, 0x9e, 0x58, 0xe2, 0xb6, 0xcd,
+ 0xa1, 0xf6, 0x3c, 0xb0, 0x1d, 0xad, 0x1b, 0x4e, 0xc0, 0x07, 0x7d, 0x4f,
+ 0x01, 0x4b, 0xec, 0xb8, 0xbb, 0x7e, 0x8b, 0xf7, 0xc6, 0xef, 0xa0, 0x26,
+ 0x3e, 0x13, 0xf3, 0x5d, 0x48, 0xc3, 0xc7, 0x68, 0x2d, 0x0d, 0x20, 0x76,
+ 0x77, 0x30, 0x9b, 0xec, 0xd4, 0x4c, 0x47, 0xbb, 0xc7, 0x68, 0x49, 0x4d,
+ 0xcb, 0x0d, 0x36, 0xb4, 0x34, 0x92, 0x5a, 0x47, 0xb8, 0x8d, 0x04, 0x14,
+ 0x0f, 0xb3, 0xe3, 0xbe, 0xb8, 0x16, 0x39, 0xf5, 0x6a, 0x36, 0x97, 0x4b,
+ 0x75, 0xe6, 0x42, 0x08, 0x6d, 0x65, 0xe0, 0xdb, 0x58, 0x36, 0x34, 0xe8,
+ 0x35, 0x21, 0xa3, 0xc0, 0x76, 0x46, 0xdc, 0x49, 0x22, 0x20, 0x71, 0xa0,
+ 0xd2, 0x12, 0x53, 0x4b, 0xa9, 0x7a, 0x35, 0xd2, 0xda, 0xd9, 0xb4, 0x06,
+ 0xc8, 0x31, 0xa0, 0x80, 0x34, 0x95, 0x8c, 0xf7, 0x18, 0x2d, 0x04, 0xe9,
+ 0x11, 0x3f, 0x35, 0xa9, 0xd4, 0xf4, 0xad, 0x81, 0xa7, 0x99, 0x82, 0x04,
+ 0xf6, 0x59, 0x94, 0xd4, 0x6e, 0x7b, 0x6b, 0xae, 0x25, 0xef, 0x01, 0xb1,
+ 0x2e, 0xd6, 0x1d, 0xe2, 0x92, 0x9c, 0xab, 0xb6, 0xba, 0xc3, 0x23, 0xda,
+ 0xdd, 0x20, 0x69, 0x2e, 0xf0, 0x44, 0xc6, 0x6b, 0x8b, 0x9d, 0x73, 0xe0,
+ 0x16, 0x82, 0x64, 0xe8, 0x26, 0x34, 0xfb, 0x94, 0x86, 0x35, 0x8e, 0x79,
+ 0x73, 0x84, 0x00, 0x60, 0x37, 0xb8, 0xd7, 0xf2, 0xa8, 0x66, 0xda, 0x19,
+ 0x59, 0xc7, 0x67, 0x62, 0x03, 0xc8, 0xee, 0x79, 0x29, 0x29, 0x1b, 0xee,
+ 0x77, 0xad, 0x50, 0xa4, 0x90, 0x18, 0x01, 0x67, 0x8e, 0xef, 0x14, 0x47,
+ 0x0d, 0xc4, 0x99, 0x90, 0xdd, 0x1a, 0x7f, 0x7a, 0x39, 0x28, 0x35, 0x6d,
+ 0x63, 0xc3, 0x9d, 0xcc, 0x43, 0x7c, 0x8f, 0x12, 0x8f, 0x66, 0xd6, 0xd7,
+ 0xb8, 0xe8, 0x00, 0x80, 0x92, 0x9a, 0xce, 0x00, 0x9d, 0xce, 0xd4, 0xf8,
+ 0x95, 0xd1, 0x1a, 0x3d, 0x3e, 0x91, 0x87, 0x8e, 0x40, 0x0f, 0xb8, 0x82,
+ 0x7f, 0xeb, 0x8e, 0x9f, 0xc8, 0xb9, 0xec, 0x6a, 0xce, 0x56, 0x55, 0x54,
+ 0x0d, 0x05, 0x8f, 0x0d, 0xfb, 0xca, 0xea, 0x73, 0x1a, 0xd7, 0xf5, 0x1a,
+ 0xa8, 0xa8, 0x43, 0x29, 0x05, 0xd0, 0x3c, 0x47, 0xb1, 0xbf, 0x8a, 0x4a,
+ 0x6c, 0x55, 0x5b, 0x5c, 0xdd, 0x43, 0x84, 0x9e, 0x48, 0x02, 0x7e, 0x0a,
+ 0x66, 0xaa, 0x58, 0xe3, 0x32, 0x4b, 0x46, 0xba, 0xf0, 0xa5, 0x04, 0xf8,
+ 0x0f, 0x32, 0x49, 0xfc, 0x90, 0x86, 0xf6, 0x0d, 0xb0, 0x7d, 0xda, 0xcc,
+ 0x8d, 0x35, 0x49, 0x4b, 0x16, 0x07, 0x72, 0x61, 0x86, 0x41, 0x1f, 0x4a,
+ 0x67, 0xc9, 0x56, 0x1d, 0x2f, 0x0d, 0xba, 0x30, 0x18, 0x3e, 0x07, 0xf8,
+ 0x19, 0x46, 0x75, 0xc0, 0x38, 0x06, 0x81, 0xe7, 0xbb, 0xb0, 0xee, 0x84,
+ 0x32, 0xe9, 0x73, 0x8e, 0xd2, 0x4c, 0x78, 0x08, 0x11, 0xf1, 0x49, 0x4e,
+ 0x47, 0x53, 0xae, 0xbc, 0x0b, 0xd8, 0x5b, 0x50, 0x75, 0x6f, 0x12, 0xd7,
+ 0xcc, 0x38, 0x38, 0x1d, 0x78, 0x56, 0xfa, 0x4e, 0x63, 0x1e, 0xe3, 0x45,
+ 0xf0, 0x5e, 0x7d, 0xf5, 0xb8, 0x93, 0xee, 0x9e, 0x42, 0x27, 0x51, 0xae,
+ 0xbc, 0xdc, 0x63, 0x5b, 0x75, 0x73, 0x4e, 0xe6, 0x3b, 0xc0, 0xff, 0x00,
+ 0x71, 0x58, 0x40, 0xba, 0x93, 0xe9, 0x5e, 0x0b, 0x0b, 0x75, 0x6b, 0xbb,
+ 0x8f, 0x31, 0xe2, 0x92, 0x9d, 0x5e, 0xac, 0xc8, 0x7d, 0x4f, 0x6b, 0x9b,
+ 0xce, 0xd7, 0x30, 0xfd, 0x26, 0xc9, 0xfa, 0x4a, 0xbe, 0x55, 0x36, 0xb2,
+ 0xa3, 0xbb, 0x88, 0xe4, 0x21, 0xd4, 0x1f, 0x92, 0x22, 0xb7, 0x17, 0x39,
+ 0xa2, 0x4b, 0xdc, 0x36, 0xb4, 0x37, 0xf1, 0x2a, 0xd5, 0xb8, 0xd9, 0x4c,
+ 0xac, 0x80, 0x7d, 0x56, 0x4c, 0x7a, 0x4e, 0x0e, 0xdd, 0xf2, 0x74, 0x04,
+ 0x94, 0x9f, 0x06, 0xc7, 0x3b, 0x16, 0xb6, 0x35, 0xa2, 0x60, 0xc1, 0xe3,
+ 0xbf, 0x8a, 0x25, 0xac, 0x71, 0xac, 0x8d, 0xa1, 0xc4, 0x8d, 0x0e, 0x9f,
+ 0xc5, 0x47, 0x0e, 0xb7, 0x0a, 0x19, 0x5b, 0x86, 0xd8, 0x9d, 0xc2, 0x24,
+ 0x89, 0xd5, 0x58, 0xd9, 0x50, 0x77, 0xb4, 0xed, 0x27, 0x4e, 0x39, 0x49,
+ 0x4e, 0x2d, 0x0d, 0x65, 0xe2, 0x5a, 0xcd, 0x85, 0xa0, 0x93, 0x07, 0x4f,
+ 0xc5, 0x1b, 0x0b, 0xdb, 0x98, 0x21, 0xa4, 0xba, 0x0e, 0xe7, 0x72, 0xd8,
+ 0xe7, 0x48, 0x50, 0xad, 0x96, 0xb4, 0x3e, 0x8a, 0x41, 0x36, 0x6e, 0xd7,
+ 0x49, 0x86, 0x83, 0xfc, 0x51, 0x71, 0x0d, 0x8d, 0xcb, 0x0e, 0x35, 0x39,
+ 0x8f, 0x01, 0xc6, 0x00, 0xd1, 0xd1, 0xcc, 0x24, 0xa7, 0x55, 0xae, 0xf0,
+ 0x68, 0x12, 0x7c, 0x0a, 0x23, 0x6d, 0xf6, 0xea, 0xd8, 0x27, 0xc7, 0x45,
+ 0x16, 0x3c, 0xbd, 0xa0, 0xea, 0x3c, 0x88, 0x2d, 0x84, 0x8d, 0x3c, 0x3b,
+ 0x76, 0x9d, 0xb4, 0x49, 0x4c, 0xdb, 0x36, 0x41, 0x73, 0x40, 0xdb, 0xc4,
+ 0x72, 0x88, 0x64, 0x80, 0x36, 0x82, 0x3b, 0xea, 0x85, 0xbd, 0xcd, 0x10,
+ 0x48, 0x91, 0xc1, 0x22, 0x3f, 0x22, 0x98, 0x7b, 0x80, 0x13, 0x24, 0x76,
+ 0xd1, 0x25, 0x33, 0xda, 0x34, 0x2d, 0x30, 0x7b, 0x4a, 0x26, 0xcd, 0x24,
+ 0x99, 0x77, 0x92, 0xac, 0xe2, 0x41, 0x06, 0x04, 0x77, 0x92, 0xa2, 0xdc,
+ 0x82, 0x06, 0xad, 0x73, 0x75, 0x82, 0x08, 0x3f, 0xc2, 0x52, 0x53, 0x7f,
+ 0x1d, 0xae, 0x0e, 0x70, 0x77, 0x3c, 0xa8, 0x65, 0x31, 0xae, 0x63, 0x8f,
+ 0x3a, 0x28, 0xe0, 0xda, 0x6c, 0xb0, 0xc1, 0x91, 0xdf, 0x91, 0xf9, 0x51,
+ 0x33, 0x34, 0x69, 0x1d, 0xc9, 0x89, 0x49, 0x4d, 0x56, 0x56, 0x0e, 0x55,
+ 0x84, 0x81, 0x3b, 0x5b, 0xf9, 0x15, 0xa7, 0xb4, 0x32, 0xbd, 0x15, 0x7a,
+ 0xcc, 0xdc, 0x27, 0x92, 0xd8, 0x3f, 0x25, 0x66, 0xf1, 0x0c, 0xf1, 0x9d,
+ 0x12, 0x53, 0x16, 0xdc, 0x58, 0xd0, 0x1c, 0x41, 0x6c, 0x77, 0xd3, 0xfd,
+ 0x8a, 0x7e, 0xb3, 0x26, 0x20, 0xc1, 0xee, 0xab, 0x3b, 0x63, 0x40, 0xd0,
+ 0x6b, 0xe2, 0x9c, 0x58, 0x5d, 0xf4, 0x44, 0x24, 0xa4, 0xb1, 0x53, 0xb5,
+ 0xd8, 0x24, 0x71, 0x13, 0xaf, 0xcb, 0x45, 0x30, 0xf6, 0xb7, 0x41, 0x13,
+ 0x1a, 0x04, 0x1d, 0xc0, 0xf3, 0x20, 0xf8, 0x95, 0x1b, 0x1e, 0xe6, 0x09,
+ 0xa8, 0x97, 0x11, 0xdb, 0xc7, 0xf8, 0x24, 0xa4, 0xe2, 0xd8, 0x3a, 0xe8,
+ 0x0f, 0xca, 0x52, 0xde, 0xde, 0x60, 0x4f, 0xef, 0x4a, 0xa4, 0x32, 0x32,
+ 0xc9, 0x22, 0x1a, 0xd1, 0xe1, 0xc9, 0x44, 0xf5, 0xb2, 0x63, 0x6e, 0xd6,
+ 0xcc, 0x4c, 0xf9, 0x24, 0xa4, 0xcd, 0x2f, 0x61, 0x2d, 0x2f, 0x75, 0xdb,
+ 0x7b, 0xbb, 0x6b, 0x40, 0xfb, 0x80, 0x53, 0xda, 0xf2, 0x3d, 0xed, 0xf3,
+ 0xd3, 0x99, 0xfb, 0xd3, 0x35, 0x85, 0x86, 0x44, 0x99, 0xf3, 0x95, 0x20,
+ 0xf1, 0x59, 0xdc, 0xe7, 0x11, 0xd9, 0x25, 0x39, 0x9d, 0x64, 0x01, 0x5b,
+ 0x0c, 0x6c, 0x92, 0x67, 0x58, 0xec, 0xb3, 0x71, 0xb2, 0x0d, 0x0d, 0xfb,
+ 0x40, 0x05, 0xc6, 0xa7, 0xb5, 0xc0, 0x71, 0xd9, 0xde, 0x0b, 0x57, 0xac,
+ 0xbd, 0xaf, 0xc7, 0x69, 0x6b, 0xb7, 0x16, 0xbb, 0x5e, 0xe6, 0x08, 0xf3,
+ 0x58, 0xb4, 0xb9, 0xa1, 0x96, 0x35, 0xa7, 0x88, 0x7c, 0xc7, 0x81, 0xd7,
+ 0xf2, 0xa4, 0xa6, 0xb9, 0x7d, 0xcd, 0x65, 0x99, 0x4f, 0x0e, 0x6b, 0x9c,
+ 0x4b, 0xa1, 0xdc, 0xbb, 0x71, 0xe4, 0xf8, 0x6a, 0xa9, 0xb5, 0x9b, 0xc3,
+ 0x01, 0x70, 0x97, 0x12, 0xe7, 0x1f, 0xf5, 0xf8, 0x2e, 0x83, 0x33, 0x1f,
+ 0xa7, 0xd1, 0x8e, 0xf6, 0x89, 0xf5, 0x1c, 0x77, 0x1b, 0x27, 0xdc, 0x48,
+ 0x58, 0x17, 0x00, 0x2d, 0x0c, 0x88, 0x76, 0x93, 0xf0, 0x49, 0x4c, 0xec,
+ 0x75, 0x6f, 0xac, 0x00, 0x3d, 0xe6, 0xc7, 0x46, 0x93, 0x20, 0x68, 0xd0,
+ 0x13, 0x64, 0xb6, 0xc0, 0x03, 0x5c, 0xd3, 0x03, 0xb7, 0xc1, 0x13, 0x13,
+ 0x63, 0xde, 0xca, 0xa0, 0xfa, 0x9b, 0xe1, 0xaf, 0x1e, 0x04, 0x09, 0x95,
+ 0xb6, 0xfe, 0x97, 0x50, 0xdf, 0xb9, 0x92, 0xd6, 0x81, 0x1a, 0xf6, 0x23,
+ 0xe0, 0x92, 0x9c, 0xff, 0x00, 0xab, 0x98, 0xcc, 0x76, 0x65, 0x99, 0x2e,
+ 0x10, 0xdc, 0x66, 0x17, 0x00, 0x7b, 0xb9, 0xfe, 0xd6, 0xad, 0x3c, 0x33,
+ 0x37, 0x5b, 0x91, 0xc8, 0x2e, 0x0c, 0x69, 0x27, 0xf3, 0x58, 0x23, 0xf2,
+ 0x94, 0x12, 0xda, 0xfa, 0x76, 0x0b, 0xbd, 0x29, 0xdf, 0x90, 0x74, 0x69,
+ 0x33, 0x00, 0x1d, 0xac, 0xfc, 0x65, 0x3b, 0x1c, 0xda, 0xc3, 0x68, 0x68,
+ 0x71, 0xf4, 0xc0, 0x69, 0x2d, 0xe0, 0x9e, 0x5c, 0x7e, 0xf4, 0x94, 0xe8,
+ 0xb5, 0xe4, 0x8d, 0xbb, 0xc0, 0x27, 0xb4, 0xa7, 0x2c, 0x2e, 0x6c, 0x17,
+ 0x41, 0xf2, 0x28, 0x15, 0xd8, 0x4c, 0x7b, 0x40, 0x8f, 0x25, 0x61, 0xae,
+ 0x7c, 0x12, 0x5a, 0x20, 0x73, 0xf0, 0x49, 0x4c, 0x0d, 0x05, 0xd3, 0xcc,
+ 0x71, 0xa9, 0x10, 0x91, 0xa0, 0x47, 0xb8, 0x02, 0x8b, 0xb8, 0x93, 0xae,
+ 0xa1, 0x47, 0xd5, 0x1b, 0xbb, 0xed, 0x49, 0x4d, 0x7b, 0x31, 0x9a, 0x44,
+ 0x34, 0x36, 0x7e, 0x6a, 0xbb, 0xba, 0x7b, 0x1e, 0x49, 0x78, 0xdd, 0x1c,
+ 0x48, 0x5a, 0x12, 0x3e, 0x7e, 0x29, 0x32, 0x4b, 0xda, 0xc3, 0x1b, 0x67,
+ 0x53, 0x3d, 0x92, 0x53, 0x55, 0xb8, 0xde, 0x86, 0x3b, 0x8b, 0x2a, 0x25,
+ 0xef, 0x86, 0x8d, 0x0f, 0x07, 0xb6, 0x89, 0xf2, 0x03, 0xab, 0xc0, 0x16,
+ 0x35, 0xc4, 0x3c, 0x49, 0x70, 0x99, 0x83, 0xde, 0x7b, 0xad, 0xd0, 0x2b,
+ 0x32, 0x77, 0x36, 0x40, 0xd1, 0xcb, 0x2b, 0xad, 0x7a, 0x47, 0x1d, 0xcc,
+ 0x64, 0x1b, 0xac, 0x1b, 0x5a, 0xe1, 0xd8, 0x92, 0x92, 0x9c, 0x6c, 0x47,
+ 0xda, 0x58, 0x5c, 0x5c, 0x49, 0x71, 0x9d, 0x51, 0x89, 0xb0, 0x88, 0x79,
+ 0x23, 0xcc, 0x68, 0x89, 0x8d, 0x80, 0xea, 0xda, 0x03, 0x86, 0xe3, 0xe3,
+ 0xe6, 0xa7, 0x6d, 0x04, 0x34, 0xb8, 0x03, 0xaf, 0x1a, 0x24, 0xa4, 0xb8,
+ 0xd8, 0x8c, 0x65, 0x0f, 0xb9, 0xb1, 0xb1, 0xcd, 0x24, 0x13, 0xce, 0xee,
+ 0xe5, 0x09, 0x80, 0xec, 0x6d, 0xad, 0x6c, 0xc1, 0x30, 0xf6, 0x99, 0x80,
+ 0x7c, 0x8e, 0xab, 0x57, 0x13, 0x0a, 0xb7, 0x61, 0xd3, 0xb9, 0xce, 0x73,
+ 0x43, 0x41, 0xd8, 0x0c, 0x36, 0x4f, 0xc1, 0x4d, 0xf8, 0x55, 0x44, 0x70,
+ 0xc1, 0xac, 0x11, 0x31, 0xf0, 0x3c, 0xa4, 0xa7, 0x30, 0x5a, 0xe7, 0x88,
+ 0x2e, 0xf9, 0x22, 0x32, 0x0f, 0x07, 0xe4, 0x10, 0x5a, 0x06, 0xf7, 0x36,
+ 0x24, 0x35, 0xc4, 0x07, 0x0f, 0x24, 0x71, 0x2e, 0x1e, 0xd6, 0xea, 0x12,
+ 0x52, 0xe5, 0x8d, 0x26, 0x60, 0x11, 0xf8, 0xa9, 0x12, 0x26, 0x08, 0x89,
+ 0xee, 0x97, 0xbb, 0x4d, 0xda, 0x14, 0xe7, 0xda, 0x75, 0x06, 0x12, 0x52,
+ 0x27, 0xb6, 0x34, 0x6c, 0x3c, 0xf8, 0x70, 0x53, 0xb7, 0x7b, 0x8c, 0xc4,
+ 0x79, 0x72, 0xa7, 0xb9, 0x87, 0xf3, 0x48, 0x07, 0xba, 0x89, 0x3a, 0xe9,
+ 0x3f, 0x04, 0x94, 0x97, 0x1d, 0xfe, 0x9d, 0xad, 0xec, 0x26, 0x14, 0xf3,
+ 0x6c, 0x91, 0x33, 0xb4, 0x4f, 0x3c, 0xaa, 0xb2, 0x5c, 0x40, 0x88, 0x33,
+ 0x1a, 0xa3, 0xbc, 0x93, 0x40, 0x0f, 0x02, 0x44, 0x7c, 0xd2, 0x52, 0x3a,
+ 0x9e, 0xc3, 0x65, 0x6e, 0x03, 0xe2, 0x7c, 0x44, 0x23, 0xe4, 0x58, 0xcd,
+ 0xb0, 0xd3, 0xaf, 0x69, 0xe0, 0x20, 0x56, 0x5a, 0x1c, 0x40, 0x00, 0x90,
+ 0x3b, 0x26, 0xb1, 0xe4, 0x38, 0x17, 0x37, 0x6f, 0x82, 0x4a, 0x5c, 0x58,
+ 0xe3, 0x30, 0x41, 0x23, 0xcb, 0x44, 0xc5, 0xc5, 0xc7, 0xe8, 0x96, 0x91,
+ 0xc4, 0x7d, 0x1f, 0xb9, 0x28, 0xa9, 0xc0, 0x18, 0xf7, 0x73, 0xe0, 0x51,
+ 0x1b, 0x4d, 0x67, 0x58, 0x2d, 0x3e, 0x65, 0x25, 0x22, 0x36, 0xbc, 0x0d,
+ 0xb2, 0x01, 0x1e, 0x23, 0x45, 0x20, 0x5f, 0xcb, 0x9a, 0x07, 0xc3, 0x44,
+ 0x43, 0x48, 0x00, 0xc4, 0x91, 0xcc, 0x4c, 0xa9, 0x36, 0xa6, 0xb4, 0x68,
+ 0xd3, 0xe6, 0x79, 0x49, 0x48, 0x40, 0x60, 0xd5, 0xa0, 0xf8, 0xc0, 0x4b,
+ 0x4f, 0x03, 0xbb, 0xc7, 0x5e, 0x11, 0xdc, 0x23, 0xdd, 0xb4, 0x9f, 0x92,
+ 0x6d, 0xed, 0xe2, 0x7f, 0x14, 0x94, 0xdb, 0xdb, 0x23, 0x71, 0x1f, 0x01,
+ 0xfe, 0xc5, 0x01, 0x24, 0x43, 0xd8, 0x1c, 0x5b, 0xe1, 0x27, 0x5f, 0x89,
+ 0x56, 0x5c, 0x6b, 0x77, 0xd2, 0x31, 0xe1, 0xaf, 0x29, 0x9a, 0x2a, 0xdb,
+ 0xa3, 0x49, 0x1d, 0xa6, 0x52, 0x53, 0x91, 0xd4, 0xd8, 0xd3, 0x87, 0x63,
+ 0x63, 0x56, 0xeb, 0x31, 0xe6, 0xb9, 0xdc, 0x51, 0xba, 0xd7, 0x57, 0xc6,
+ 0xe6, 0xb9, 0xa0, 0x79, 0x91, 0xa2, 0xed, 0xdf, 0x45, 0x36, 0xd6, 0xfa,
+ 0xdc, 0xdd, 0x9b, 0xc1, 0x6f, 0x1e, 0x22, 0x17, 0x0d, 0xee, 0xc5, 0xcb,
+ 0x2d, 0x7e, 0x8e, 0xad, 0xd0, 0x7e, 0x45, 0x25, 0x36, 0x71, 0xf0, 0x2f,
+ 0xcd, 0x73, 0x1e, 0x29, 0xb5, 0xd5, 0x9e, 0x5e, 0x4c, 0x30, 0x9e, 0xf0,
+ 0x56, 0xa5, 0x1f, 0x56, 0x58, 0xc7, 0xfa, 0xd9, 0x07, 0xf4, 0xce, 0x77,
+ 0x88, 0x22, 0x4f, 0x92, 0xb1, 0xd0, 0x2f, 0x63, 0x2d, 0xbb, 0x09, 0xc7,
+ 0xbf, 0xad, 0x47, 0xfc, 0x5b, 0xb5, 0x74, 0x7c, 0xd6, 0xbb, 0xec, 0x0e,
+ 0xb0, 0x00, 0x78, 0x9d, 0x08, 0x8d, 0x52, 0x53, 0x92, 0xee, 0x87, 0x45,
+ 0x76, 0xb0, 0xd6, 0xc9, 0x73, 0x7d, 0xdc, 0xc0, 0xd0, 0xfc, 0x95, 0x7b,
+ 0x29, 0xbc, 0x64, 0x16, 0xd9, 0x87, 0xb2, 0xad, 0x77, 0x58, 0xe7, 0x87,
+ 0x71, 0xae, 0x82, 0x4a, 0xda, 0xb1, 0xce, 0xf5, 0x65, 0xa4, 0x68, 0xd8,
+ 0x24, 0xfc, 0x89, 0x58, 0x1d, 0x53, 0xa9, 0x5c, 0x6c, 0xb6, 0xa6, 0x02,
+ 0xdf, 0x53, 0xdb, 0x58, 0x00, 0x12, 0xed, 0xc0, 0x7e, 0x58, 0x49, 0x4d,
+ 0x56, 0x7a, 0x99, 0xd9, 0xbb, 0x99, 0xad, 0x74, 0xfd, 0x06, 0x0d, 0x7d,
+ 0xfd, 0x89, 0xf8, 0x72, 0xb5, 0x69, 0xe9, 0xcc, 0x60, 0xfd, 0x23, 0x01,
+ 0xf3, 0xd5, 0x57, 0xe8, 0xf4, 0x33, 0x0a, 0xb7, 0xee, 0x70, 0x36, 0x93,
+ 0xee, 0x77, 0xfa, 0xf9, 0xab, 0x96, 0xe4, 0xb8, 0xee, 0x0c, 0x73, 0xb8,
+ 0xd4, 0x8e, 0x12, 0x52, 0xee, 0xc5, 0xa1, 0xa0, 0x10, 0x0b, 0x7e, 0xf4,
+ 0x8d, 0x60, 0x6a, 0x1b, 0xcf, 0x9e, 0xa8, 0x61, 0xd6, 0x98, 0x82, 0xe7,
+ 0x93, 0xce, 0xe1, 0x2a, 0xdb, 0x0b, 0xa7, 0xdc, 0x27, 0xc8, 0x24, 0xa4,
+ 0x11, 0xb8, 0x43, 0x41, 0xf9, 0xa6, 0x15, 0x3a, 0x48, 0x22, 0x7b, 0xa3,
+ 0xbd, 0xf5, 0x6b, 0xed, 0x23, 0xcf, 0xc1, 0x22, 0x1b, 0xc8, 0xd3, 0xcf,
+ 0xc7, 0xee, 0x49, 0x48, 0x83, 0x04, 0x0d, 0xdc, 0xa9, 0x59, 0x43, 0x4d,
+ 0x64, 0x6e, 0x2d, 0x77, 0x67, 0x37, 0x47, 0x0f, 0x81, 0x08, 0xcd, 0x63,
+ 0x49, 0x03, 0xe6, 0xa6, 0x58, 0x52, 0x53, 0x94, 0x70, 0xf2, 0xa7, 0x4c,
+ 0xfb, 0xc3, 0x49, 0xee, 0x5a, 0x7f, 0x2b, 0x51, 0x6b, 0xc2, 0x0c, 0x73,
+ 0x5c, 0xf7, 0xbe, 0xd7, 0x83, 0xcb, 0xe0, 0xcf, 0xcf, 0x80, 0xad, 0x8a,
+ 0x8b, 0xbe, 0x83, 0x40, 0xd7, 0x53, 0xe5, 0xe5, 0x0a, 0x5b, 0x5c, 0x34,
+ 0x12, 0x42, 0x4a, 0x51, 0xa4, 0x06, 0x8d, 0x15, 0x53, 0x85, 0x53, 0x5c,
+ 0x48, 0x0e, 0xd7, 0xc5, 0xc6, 0x3e, 0x41, 0x5f, 0x63, 0x09, 0xe7, 0x88,
+ 0xf0, 0x51, 0x35, 0xc7, 0xd2, 0x69, 0x3f, 0x24, 0x94, 0xe6, 0x3e, 0xee,
+ 0xad, 0x8c, 0x4b, 0x31, 0xe9, 0x6d, 0xd5, 0x0e, 0x3d, 0xfb, 0x4f, 0xdc,
+ 0x42, 0x0f, 0xdb, 0x7a, 0xcd, 0x8e, 0xf4, 0xce, 0x33, 0x6a, 0x2e, 0xd0,
+ 0x17, 0x5b, 0xdb, 0xe4, 0xb6, 0x21, 0xa2, 0x41, 0xe3, 0xe1, 0xaa, 0x13,
+ 0xc5, 0x64, 0x89, 0x6f, 0xbb, 0xb1, 0x89, 0x8f, 0xc1, 0x25, 0x20, 0xc7,
+ 0xc5, 0x63, 0x04, 0x69, 0xbf, 0x97, 0x47, 0x8f, 0x74, 0x71, 0x48, 0x1f,
+ 0x03, 0xd9, 0x4b, 0x64, 0x91, 0xb7, 0x88, 0x4d, 0xe9, 0x90, 0xed, 0x5b,
+ 0xa7, 0x8a, 0x4a, 0x60, 0xf7, 0xed, 0x3b, 0x4b, 0x09, 0x3d, 0xb6, 0x89,
+ 0x4a, 0x0f, 0x92, 0x2e, 0xd7, 0x11, 0x22, 0x20, 0x78, 0xa7, 0x15, 0xb4,
+ 0xeb, 0xc4, 0x24, 0xa4, 0x05, 0x8d, 0x3d, 0xa5, 0x0d, 0xe0, 0xb4, 0x68,
+ 0xad, 0x16, 0x46, 0x92, 0x49, 0xf9, 0x20, 0xd8, 0xd7, 0x36, 0x1e, 0xc0,
+ 0x0b, 0x87, 0xe6, 0xbb, 0xba, 0x4a, 0x5f, 0x13, 0x19, 0xc5, 0xc2, 0xdb,
+ 0x78, 0x3f, 0x45, 0xb1, 0xf9, 0x55, 0x2e, 0xb5, 0x98, 0x31, 0x08, 0x0f,
+ 0x98, 0x71, 0xf6, 0x79, 0xf9, 0x2b, 0x16, 0xe7, 0x65, 0x57, 0xb3, 0x63,
+ 0x1c, 0x5a, 0x5d, 0xfa, 0x42, 0x35, 0xda, 0xcf, 0x97, 0x24, 0xaa, 0xd9,
+ 0x14, 0xb7, 0xa8, 0x5e, 0xdb, 0x63, 0x6b, 0x2b, 0x1e, 0xd0, 0xf6, 0x99,
+ 0x24, 0xf3, 0x12, 0x92, 0x9a, 0xd8, 0x19, 0x62, 0xfc, 0xc6, 0xd3, 0x05,
+ 0x84, 0x82, 0x40, 0x3d, 0xfc, 0x56, 0xee, 0x5d, 0x05, 0xf5, 0x0f, 0x4c,
+ 0x4d, 0x8d, 0x1a, 0x7c, 0x16, 0x58, 0xc1, 0x7d, 0x17, 0x33, 0x26, 0xbf,
+ 0x7f, 0xa7, 0xcb, 0x40, 0xd6, 0x0e, 0x84, 0xab, 0xa3, 0xab, 0xb4, 0x5e,
+ 0x6b, 0x6b, 0xb7, 0x56, 0x18, 0x1e, 0x09, 0x04, 0x1d, 0x0c, 0x39, 0xba,
+ 0xf7, 0xee, 0x12, 0x52, 0x0a, 0x9a, 0xd1, 0x24, 0x81, 0x3d, 0xc7, 0x1f,
+ 0x82, 0x38, 0x78, 0x0d, 0xd7, 0x50, 0x79, 0x41, 0x7e, 0x5e, 0x3d, 0x99,
+ 0x3b, 0x76, 0xed, 0x73, 0xf9, 0x74, 0x18, 0x71, 0xf1, 0xe1, 0x1d, 0xb5,
+ 0xb4, 0xf0, 0xe2, 0x92, 0x97, 0x05, 0xbb, 0x65, 0xb1, 0x01, 0x30, 0xdd,
+ 0xf4, 0x81, 0xd3, 0xc9, 0x0d, 0xdb, 0x98, 0xf1, 0x22, 0x5b, 0xfb, 0xd1,
+ 0xf7, 0x77, 0x44, 0x6b, 0xc9, 0xe3, 0x54, 0x94, 0xbb, 0xdc, 0xf2, 0xd8,
+ 0x68, 0xf8, 0xea, 0x9b, 0x63, 0xb6, 0xcc, 0xe9, 0x11, 0xfe, 0xa5, 0x4b,
+ 0xd4, 0x3b, 0xa2, 0x20, 0x79, 0x27, 0xf5, 0x1b, 0x3b, 0xa3, 0xc9, 0x25,
+ 0x37, 0x4b, 0x47, 0x2d, 0xd3, 0xc0, 0xa6, 0x01, 0xe7, 0x83, 0xaf, 0x9f,
+ 0x0a, 0x66, 0xb0, 0x63, 0x88, 0xf0, 0x48, 0xb5, 0xad, 0xe4, 0xe9, 0xe2,
+ 0x12, 0x53, 0x08, 0x20, 0x7b, 0xdf, 0x31, 0xcc, 0x2e, 0x5f, 0xeb, 0x4e,
+ 0x10, 0xab, 0x25, 0xb9, 0x75, 0xcf, 0xa7, 0x77, 0x3e, 0x4f, 0x1c, 0xfd,
+ 0xeb, 0xa8, 0xb1, 0x95, 0xbd, 0xb0, 0xd7, 0xb9, 0xbd, 0x89, 0x6f, 0x92,
+ 0xca, 0xcd, 0xc7, 0xb6, 0xe6, 0xbe, 0x8b, 0x1a, 0xeb, 0x2a, 0x70, 0xd3,
+ 0x4d, 0x41, 0xec, 0x5b, 0x1d, 0xd2, 0x53, 0x87, 0x89, 0x91, 0x69, 0x65,
+ 0x57, 0xe3, 0x9f, 0xd6, 0xf1, 0x89, 0x2c, 0x07, 0xf3, 0xda, 0x79, 0x6a,
+ 0xdd, 0xc7, 0xfa, 0xc3, 0xd3, 0x6d, 0x1e, 0xa5, 0xa7, 0xd1, 0x7c, 0x7b,
+ 0xd8, 0xe9, 0x71, 0xdd, 0xdf, 0x6e, 0x9c, 0x2e, 0x5e, 0xdc, 0x7c, 0xbe,
+ 0x9d, 0x60, 0x75, 0x8c, 0x7b, 0x2b, 0x27, 0xda, 0xf2, 0x08, 0x08, 0xe1,
+ 0xd8, 0x59, 0x04, 0xd9, 0x76, 0x8f, 0xfd, 0xe6, 0x90, 0x27, 0xe2, 0x0a,
+ 0x4a, 0x6e, 0x75, 0x0f, 0xac, 0x42, 0xf7, 0x7a, 0x78, 0x20, 0xc9, 0x2e,
+ 0x13, 0x07, 0xdc, 0x0c, 0x7f, 0x72, 0x06, 0x36, 0x25, 0x98, 0xee, 0x16,
+ 0xd8, 0x77, 0x67, 0x59, 0xfc, 0xdb, 0x3b, 0x54, 0xd7, 0x72, 0xe3, 0x3d,
+ 0xfc, 0x14, 0x71, 0x4d, 0x4d, 0x78, 0x6e, 0x0d, 0x7e, 0xf2, 0x60, 0xde,
+ 0xe1, 0x20, 0x7c, 0x3c, 0xd7, 0x41, 0x85, 0x82, 0xda, 0x46, 0xf7, 0x8d,
+ 0xd6, 0x3b, 0x57, 0x3c, 0xea, 0x49, 0xf3, 0x49, 0x4d, 0x7c, 0x7c, 0x51,
+ 0x5d, 0x63, 0xd4, 0x71, 0x11, 0xd9, 0xdc, 0x7c, 0xd5, 0xaa, 0xc5, 0x64,
+ 0x49, 0x80, 0x3c, 0x91, 0x5e, 0xf7, 0x13, 0x1b, 0x5b, 0x03, 0x82, 0x40,
+ 0x24, 0xff, 0x00, 0x14, 0xe5, 0xf5, 0xb5, 0x9b, 0xec, 0xda, 0xc6, 0x81,
+ 0x24, 0x0e, 0xc7, 0xe6, 0x02, 0x4a, 0x44, 0x1a, 0x0b, 0x86, 0xd7, 0x12,
+ 0x38, 0x02, 0x08, 0x1f, 0x19, 0x46, 0x14, 0x1d, 0x4b, 0x84, 0xf8, 0x00,
+ 0x53, 0xd2, 0xcf, 0x54, 0x03, 0x58, 0x25, 0x8e, 0xd5, 0xb1, 0xed, 0x6f,
+ 0xe1, 0x1a, 0xa8, 0x0b, 0x9e, 0x2b, 0xdc, 0x21, 0x8e, 0x3c, 0x34, 0x90,
+ 0xe3, 0xa1, 0xd7, 0xe8, 0x94, 0x94, 0xa6, 0xe2, 0xd7, 0x64, 0xcf, 0x1d,
+ 0x84, 0xce, 0xa9, 0xfd, 0x36, 0x54, 0x63, 0xe9, 0x47, 0x63, 0xe7, 0xc2,
+ 0x83, 0xaf, 0xb6, 0x49, 0x24, 0x34, 0x0e, 0x4c, 0x69, 0xf8, 0xa6, 0x0f,
+ 0x75, 0x8e, 0x9d, 0xd2, 0x0f, 0xc5, 0x25, 0x24, 0x6b, 0xcc, 0x10, 0x19,
+ 0xb4, 0x8e, 0x79, 0x4f, 0x53, 0x37, 0x1d, 0xce, 0x93, 0x27, 0xbf, 0xf0,
+ 0x4e, 0x2b, 0xf6, 0x44, 0x3b, 0xdd, 0xe1, 0xc9, 0x53, 0x75, 0x6f, 0x60,
+ 0x6b, 0x9b, 0xc8, 0x9d, 0x4e, 0x9f, 0x2e, 0x12, 0x52, 0xe0, 0xd4, 0xc3,
+ 0x24, 0x89, 0x1d, 0xc0, 0x94, 0x2b, 0x7d, 0x73, 0xee, 0xae, 0x1c, 0x27,
+ 0x89, 0xda, 0xa4, 0x29, 0xa7, 0x7c, 0x93, 0xb1, 0xe7, 0x58, 0x99, 0x93,
+ 0xf7, 0x22, 0xb6, 0x86, 0x36, 0x49, 0xf7, 0x0f, 0xcd, 0xf8, 0xa4, 0xa6,
+ 0xbb, 0xac, 0xc8, 0x68, 0xd5, 0x85, 0xd3, 0xa7, 0xb4, 0x85, 0x59, 0xaf,
+ 0xca, 0x87, 0x6d, 0x01, 0xb3, 0xc6, 0xf7, 0xb9, 0xda, 0xfc, 0x00, 0x0b,
+ 0x47, 0x63, 0x0e, 0xae, 0xfa, 0x51, 0x3a, 0x28, 0xfa, 0x01, 0xc3, 0xf3,
+ 0x84, 0xf8, 0x84, 0x94, 0xd3, 0x0e, 0xb5, 0xc0, 0x0e, 0x5d, 0xdc, 0x8d,
+ 0x25, 0x10, 0x0b, 0x06, 0x90, 0x61, 0x11, 0xd5, 0x3e, 0x9d, 0x40, 0x31,
+ 0xdf, 0x90, 0xa7, 0xbd, 0xce, 0x03, 0x4d, 0x3e, 0x09, 0x29, 0x19, 0xb1,
+ 0xe3, 0x43, 0xa0, 0xf1, 0x84, 0xfe, 0xa1, 0x81, 0x02, 0x53, 0xef, 0x91,
+ 0xa8, 0x8f, 0x25, 0x2f, 0x6c, 0x71, 0xcf, 0x09, 0x29, 0x51, 0x22, 0x40,
+ 0x82, 0x53, 0x31, 0xae, 0xff, 0x00, 0x08, 0x01, 0x70, 0xe0, 0x89, 0xfe,
+ 0x2a, 0x60, 0x38, 0xe8, 0xd3, 0xc7, 0x00, 0x8f, 0x14, 0xc5, 0x8f, 0x73,
+ 0xa0, 0xc8, 0x23, 0xc2, 0x52, 0x52, 0xee, 0x6c, 0x8d, 0x14, 0x0d, 0x46,
+ 0x09, 0x9f, 0x92, 0x99, 0x0f, 0x1c, 0xce, 0x89, 0xdb, 0xaf, 0x1f, 0x72,
+ 0x4a, 0x40, 0x6a, 0x98, 0x91, 0x07, 0xb7, 0x3f, 0x8a, 0x86, 0xd7, 0x03,
+ 0xab, 0x49, 0x23, 0xee, 0x56, 0xdc, 0x08, 0x04, 0x37, 0x9f, 0x05, 0x16,
+ 0x0b, 0x00, 0xf7, 0xe8, 0x7b, 0x81, 0xc7, 0xde, 0x92, 0x9a, 0xf0, 0x5d,
+ 0xa6, 0xd2, 0x3e, 0x70, 0x52, 0x01, 0xc0, 0xed, 0x83, 0xf1, 0x56, 0xb6,
+ 0xb4, 0x92, 0x79, 0xd7, 0x54, 0xa1, 0xa6, 0x0f, 0x27, 0xb2, 0x4a, 0x6b,
+ 0x39, 0x80, 0xf8, 0x12, 0x3c, 0xd2, 0x78, 0x0d, 0x68, 0x3a, 0x07, 0x1f,
+ 0x8c, 0x2b, 0x1e, 0x97, 0x30, 0x64, 0xf8, 0x11, 0xc2, 0x83, 0xeb, 0x27,
+ 0x53, 0x27, 0xe4, 0x92, 0x91, 0x4b, 0x1c, 0xdf, 0x77, 0xf7, 0x28, 0x96,
+ 0xd6, 0xf3, 0xec, 0x22, 0x46, 0xa6, 0x39, 0x28, 0xc3, 0x1d, 0xce, 0x33,
+ 0x00, 0xb7, 0xc7, 0xfd, 0x90, 0x93, 0x71, 0xa3, 0xe9, 0x34, 0x37, 0xf1,
+ 0x49, 0x48, 0x5a, 0xd7, 0x34, 0x41, 0xd0, 0x4e, 0x84, 0xea, 0xa5, 0xb1,
+ 0xbc, 0x4f, 0xcf, 0x49, 0x45, 0xf4, 0xe4, 0x9d, 0x48, 0x9e, 0xca, 0x3e,
+ 0x9b, 0xb8, 0x93, 0xf1, 0x49, 0x4c, 0xcd, 0xc6, 0x3d, 0xa2, 0x7c, 0x0f,
+ 0x2a, 0x16, 0x5d, 0x71, 0x6f, 0xe8, 0x99, 0x31, 0xc9, 0x76, 0x88, 0xf9,
+ 0x0c, 0x60, 0xdc, 0x18, 0xf1, 0x2d, 0x02, 0x5a, 0x48, 0x03, 0xfa, 0xc1,
+ 0x53, 0x39, 0xb5, 0xd2, 0x08, 0xb8, 0x80, 0xdd, 0xfb, 0x03, 0xdb, 0xc1,
+ 0xd3, 0xf9, 0x33, 0xaa, 0x4a, 0x48, 0x0d, 0xa5, 0xa1, 0xde, 0x91, 0xde,
+ 0x44, 0x1e, 0x62, 0x7e, 0x49, 0x30, 0xbc, 0x4f, 0xa8, 0xd0, 0x01, 0x89,
+ 0xe7, 0xb7, 0x1c, 0xa8, 0xb7, 0x39, 0xbb, 0xb6, 0xd6, 0xdb, 0x1c, 0x0f,
+ 0x0e, 0x0c, 0x74, 0x37, 0xe2, 0x9f, 0x26, 0xec, 0xdb, 0x5a, 0xdf, 0xb2,
+ 0x31, 0xac, 0xfd, 0xf7, 0x5c, 0xd2, 0x3f, 0x27, 0x29, 0x29, 0x57, 0xd8,
+ 0xe7, 0xb4, 0x57, 0x01, 0xcd, 0x77, 0xd3, 0x91, 0x2d, 0x23, 0xe0, 0x56,
+ 0x5d, 0xdd, 0x0b, 0x1e, 0xc7, 0x1b, 0x8d, 0x05, 0xa2, 0x67, 0x68, 0x6e,
+ 0xd6, 0xff, 0x00, 0x05, 0xa6, 0x2d, 0xc9, 0x01, 0xad, 0xb7, 0xd2, 0xaa,
+ 0xc7, 0x68, 0x5c, 0xd6, 0x6e, 0x27, 0xe6, 0xfe, 0x14, 0x2d, 0xaa, 0xa2,
+ 0xe6, 0x8b, 0x1b, 0xeb, 0x38, 0xfe, 0x7d, 0x8e, 0x91, 0xf0, 0x00, 0x98,
+ 0xfc, 0x12, 0x53, 0x55, 0x95, 0xb2, 0x90, 0xd6, 0xd6, 0xe6, 0xb0, 0xb7,
+ 0x96, 0xb6, 0x1c, 0x47, 0xdc, 0xad, 0x37, 0x27, 0x6b, 0x64, 0x30, 0x90,
+ 0x7b, 0xba, 0x7f, 0x01, 0xfe, 0xd4, 0x42, 0xd7, 0xfa, 0x65, 0xb5, 0xb0,
+ 0x57, 0x1d, 0xc4, 0x44, 0xf8, 0xf0, 0xab, 0xb9, 0xb7, 0x3a, 0x5a, 0xe7,
+ 0x6e, 0x98, 0x0e, 0x80, 0x92, 0x92, 0x0b, 0xab, 0x7e, 0xaf, 0x73, 0xa7,
+ 0xc3, 0x40, 0x35, 0xf8, 0x7f, 0x7a, 0x15, 0xcd, 0xa9, 0xcd, 0x80, 0x44,
+ 0x6b, 0x3b, 0x89, 0x21, 0xde, 0x44, 0xa9, 0xb7, 0x1a, 0x1d, 0xb4, 0x88,
+ 0x8d, 0x41, 0x9f, 0xca, 0x8f, 0x5b, 0x1a, 0xd9, 0x2c, 0x60, 0x81, 0xcc,
+ 0x82, 0x67, 0xef, 0x49, 0x4e, 0x76, 0x36, 0x1d, 0x75, 0xee, 0x76, 0x24,
+ 0x31, 0xef, 0x8d, 0xe2, 0x09, 0x63, 0xa0, 0xe9, 0xa0, 0x21, 0x58, 0xab,
+ 0x04, 0xb7, 0x75, 0x8e, 0x21, 0xaf, 0x77, 0x2e, 0x6b, 0x40, 0x93, 0xf0,
+ 0x6a, 0xb6, 0xed, 0xa0, 0xc0, 0x02, 0x4c, 0x19, 0x8e, 0xde, 0x48, 0x6d,
+ 0xc6, 0x02, 0xf3, 0x71, 0xba, 0xd2, 0x47, 0x0c, 0x91, 0xe9, 0x8f, 0xec,
+ 0xa4, 0xa6, 0x35, 0xe2, 0x97, 0x12, 0x34, 0x27, 0xf3, 0x89, 0xf0, 0x47,
+ 0x63, 0x59, 0x43, 0xa5, 0xce, 0x0e, 0xdf, 0xcc, 0x4f, 0x29, 0xec, 0x74,
+ 0x00, 0xed, 0x60, 0xf6, 0x05, 0x45, 0xa1, 0xe4, 0xc8, 0x3c, 0xf3, 0x1a,
+ 0x7c, 0x92, 0x52, 0x5f, 0x57, 0x69, 0x05, 0x83, 0x76, 0x9c, 0x0e, 0xc9,
+ 0x39, 0xc5, 0xc4, 0x4c, 0xc1, 0x3c, 0x11, 0xfd, 0xe8, 0x8d, 0x24, 0x56,
+ 0x59, 0x10, 0x4f, 0xe7, 0x77, 0x48, 0x41, 0x06, 0x7b, 0x72, 0x79, 0x49,
+ 0x48, 0x2e, 0x0c, 0x6f, 0x0d, 0x0e, 0x77, 0xe4, 0x52, 0xa4, 0x39, 0xa0,
+ 0x92, 0xe0, 0x7c, 0x87, 0x28, 0xdb, 0x00, 0x61, 0x8a, 0xf7, 0x11, 0xc3,
+ 0x4c, 0x7f, 0x15, 0x11, 0xb6, 0x7d, 0xa3, 0x5e, 0xe0, 0x84, 0x94, 0xc0,
+ 0xbe, 0x60, 0xf7, 0xef, 0xa7, 0x8a, 0x8b, 0xcd, 0x80, 0x11, 0x12, 0x23,
+ 0x44, 0x60, 0xc2, 0x48, 0x70, 0x81, 0xe4, 0x78, 0x2a, 0x46, 0xbd, 0x08,
+ 0x20, 0xc7, 0x78, 0x80, 0x92, 0x9a, 0xe1, 0xfb, 0x99, 0xb6, 0xc3, 0xaf,
+ 0x84, 0xa7, 0x98, 0x74, 0xb4, 0x19, 0xef, 0x07, 0xfb, 0xd1, 0x4d, 0x2d,
+ 0x02, 0x1b, 0x3f, 0x35, 0x13, 0x58, 0x89, 0x7b, 0x89, 0xd7, 0xc9, 0x25,
+ 0x23, 0x75, 0x6e, 0x27, 0x71, 0xf7, 0x0f, 0x23, 0xc7, 0xdc, 0x96, 0xc6,
+ 0xb8, 0x09, 0x3c, 0x70, 0x8a, 0x1a, 0x0b, 0x81, 0x0d, 0x1a, 0x7d, 0xc8,
+ 0x80, 0x35, 0xc2, 0x40, 0x00, 0x8e, 0x02, 0x4a, 0x6b, 0x06, 0x96, 0x19,
+ 0x9f, 0xbb, 0x54, 0x5d, 0xa0, 0xb4, 0x13, 0x3e, 0x23, 0xc9, 0x4b, 0x6b,
+ 0xc8, 0x0e, 0x1b, 0x5c, 0x5b, 0xcb, 0x41, 0xfe, 0x2a, 0x43, 0xdc, 0x34,
+ 0x6c, 0x78, 0x82, 0x20, 0xa4, 0xa4, 0x00, 0xb5, 0xce, 0x99, 0xed, 0xf4,
+ 0x78, 0xfe, 0x09, 0xcb, 0xdb, 0xc3, 0x5a, 0x74, 0xf1, 0x2a, 0xc0, 0xaa,
+ 0x44, 0xf7, 0xff, 0x00, 0x5f, 0x15, 0x1b, 0x2a, 0x69, 0x3e, 0x7e, 0x29,
+ 0x29, 0x18, 0x35, 0xb9, 0xbe, 0xf3, 0x2e, 0xec, 0x90, 0x80, 0x0e, 0xd1,
+ 0xf0, 0x4c, 0xea, 0x80, 0x13, 0x24, 0x79, 0x4e, 0x89, 0x9b, 0xa0, 0x87,
+ 0x48, 0x13, 0xa4, 0x1f, 0xee, 0x49, 0x4c, 0x1c, 0x1c, 0xe3, 0x2e, 0x83,
+ 0xe4, 0x12, 0x1b, 0x9a, 0xed, 0x38, 0xfd, 0xde, 0xca, 0x64, 0xfb, 0xb9,
+ 0xfe, 0xf5, 0x12, 0xd2, 0x7c, 0xbe, 0x09, 0x29, 0x9f, 0xa9, 0xa6, 0xad,
+ 0x33, 0xc4, 0xa4, 0x24, 0x92, 0x7b, 0x1e, 0x13, 0xd7, 0xb4, 0x0d, 0x75,
+ 0x1e, 0x25, 0x4d, 0xcd, 0xac, 0x8d, 0x3b, 0x78, 0x24, 0xa4, 0x7e, 0xf1,
+ 0xf4, 0x76, 0xa8, 0x9d, 0xf2, 0x37, 0x7e, 0x08, 0xa2, 0x06, 0x91, 0x30,
+ 0x91, 0x0e, 0x70, 0xd6, 0x7e, 0xe4, 0x94, 0x87, 0x6e, 0x9b, 0xb5, 0x1e,
+ 0x4a, 0x1a, 0x6f, 0x99, 0x3c, 0xf8, 0xff, 0x00, 0x05, 0x37, 0x08, 0x3a,
+ 0x76, 0x4b, 0x70, 0xdb, 0xbe, 0x74, 0xe6, 0x23, 0x54, 0x94, 0xff, 0x00,
+ 0xff, 0xd9
+};
+size_t demo_002_jpg_len = 20678;
+
+const uint8_t demo_003_jpg[] = {
+ 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01,
+ 0x02, 0x00, 0x00, 0x64, 0x00, 0x64, 0x00, 0x00, 0xff, 0xec, 0x00, 0x59,
+ 0x44, 0x75, 0x63, 0x6b, 0x79, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00,
+ 0x1e, 0x00, 0x02, 0x00, 0x44, 0x00, 0x00, 0x00, 0x20, 0x00, 0x46, 0x00,
+ 0x53, 0x00, 0x41, 0x00, 0x2f, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00,
+ 0x33, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x38, 0x00,
+ 0x62, 0x00, 0x33, 0x00, 0x33, 0x00, 0x31, 0x00, 0x30, 0x00, 0x30, 0x00,
+ 0x5c, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00, 0x33, 0x00, 0x31, 0x00,
+ 0x34, 0x00, 0x38, 0x00, 0x61, 0x00, 0x2e, 0x00, 0x74, 0x00, 0x69, 0x00,
+ 0x66, 0x00, 0x00, 0xff, 0xee, 0x00, 0x0e, 0x41, 0x64, 0x6f, 0x62, 0x65,
+ 0x00, 0x64, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xdb, 0x00, 0x84, 0x00,
+ 0x10, 0x0b, 0x0b, 0x0b, 0x0c, 0x0b, 0x10, 0x0c, 0x0c, 0x10, 0x17, 0x0f,
+ 0x0d, 0x0f, 0x17, 0x1b, 0x14, 0x10, 0x10, 0x14, 0x1b, 0x1f, 0x17, 0x17,
+ 0x17, 0x17, 0x17, 0x1f, 0x1e, 0x17, 0x1a, 0x1a, 0x1a, 0x1a, 0x17, 0x1e,
+ 0x1e, 0x23, 0x25, 0x27, 0x25, 0x23, 0x1e, 0x2f, 0x2f, 0x33, 0x33, 0x2f,
+ 0x2f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x01, 0x11, 0x0f, 0x0f, 0x11, 0x13, 0x11, 0x15,
+ 0x12, 0x12, 0x15, 0x14, 0x11, 0x14, 0x11, 0x14, 0x1a, 0x14, 0x16, 0x16,
+ 0x14, 0x1a, 0x26, 0x1a, 0x1a, 0x1c, 0x1a, 0x1a, 0x26, 0x30, 0x23, 0x1e,
+ 0x1e, 0x1e, 0x1e, 0x23, 0x30, 0x2b, 0x2e, 0x27, 0x27, 0x27, 0x2e, 0x2b,
+ 0x35, 0x35, 0x30, 0x30, 0x35, 0x35, 0x40, 0x40, 0x3f, 0x40, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xff, 0xc0, 0x00,
+ 0x11, 0x08, 0x01, 0x90, 0x01, 0x2c, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11,
+ 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x01, 0x3f, 0x00, 0x00, 0x01, 0x05,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x03, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
+ 0x0b, 0x01, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x04, 0x05,
+ 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x01, 0x04, 0x01, 0x03,
+ 0x02, 0x04, 0x02, 0x05, 0x07, 0x06, 0x08, 0x05, 0x03, 0x0c, 0x33, 0x01,
+ 0x00, 0x02, 0x11, 0x03, 0x04, 0x21, 0x12, 0x31, 0x05, 0x41, 0x51, 0x61,
+ 0x13, 0x22, 0x71, 0x81, 0x32, 0x06, 0x14, 0x91, 0xa1, 0xb1, 0x42, 0x23,
+ 0x24, 0x15, 0x52, 0xc1, 0x62, 0x33, 0x34, 0x72, 0x82, 0xd1, 0x43, 0x07,
+ 0x25, 0x92, 0x53, 0xf0, 0xe1, 0xf1, 0x63, 0x73, 0x35, 0x16, 0xa2, 0xb2,
+ 0x83, 0x26, 0x44, 0x93, 0x54, 0x64, 0x45, 0xc2, 0xa3, 0x74, 0x36, 0x17,
+ 0xd2, 0x55, 0xe2, 0x65, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3,
+ 0x46, 0x27, 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5,
+ 0xb5, 0xc5, 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6,
+ 0xc6, 0xd6, 0xe6, 0xf6, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7,
+ 0xb7, 0xc7, 0xd7, 0xe7, 0xf7, 0x11, 0x00, 0x02, 0x02, 0x01, 0x02, 0x04,
+ 0x04, 0x03, 0x04, 0x05, 0x06, 0x07, 0x07, 0x06, 0x05, 0x35, 0x01, 0x00,
+ 0x02, 0x11, 0x03, 0x21, 0x31, 0x12, 0x04, 0x41, 0x51, 0x61, 0x71, 0x22,
+ 0x13, 0x05, 0x32, 0x81, 0x91, 0x14, 0xa1, 0xb1, 0x42, 0x23, 0xc1, 0x52,
+ 0xd1, 0xf0, 0x33, 0x24, 0x62, 0xe1, 0x72, 0x82, 0x92, 0x43, 0x53, 0x15,
+ 0x63, 0x73, 0x34, 0xf1, 0x25, 0x06, 0x16, 0xa2, 0xb2, 0x83, 0x07, 0x26,
+ 0x35, 0xc2, 0xd2, 0x44, 0x93, 0x54, 0xa3, 0x17, 0x64, 0x45, 0x55, 0x36,
+ 0x74, 0x65, 0xe2, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, 0x46,
+ 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, 0xb5, 0xc5,
+ 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6,
+ 0xe6, 0xf6, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, 0xb7,
+ 0xc7, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11,
+ 0x00, 0x3f, 0x00, 0xee, 0x0a, 0x81, 0x53, 0x72, 0x81, 0x49, 0x4b, 0x15,
+ 0x02, 0xde, 0xe3, 0x43, 0xe2, 0xa6, 0x54, 0x4a, 0x4a, 0x63, 0xba, 0x34,
+ 0x77, 0xdf, 0xd9, 0x3a, 0x49, 0xa0, 0x8f, 0xa3, 0xc7, 0x82, 0x4a, 0x52,
+ 0x49, 0x02, 0x0f, 0xc7, 0xc1, 0x3a, 0x4a, 0x52, 0x49, 0x27, 0x84, 0x94,
+ 0xb2, 0x8d, 0xb6, 0xd7, 0x43, 0x0d, 0x96, 0x38, 0x35, 0xa1, 0x07, 0x33,
+ 0x3a, 0x9c, 0x46, 0x1d, 0xde, 0xeb, 0x3b, 0x30, 0x7f, 0x15, 0xcf, 0x64,
+ 0x5f, 0x97, 0x95, 0x90, 0xf7, 0xe4, 0x3e, 0x1a, 0x08, 0x65, 0x18, 0xed,
+ 0x12, 0xe7, 0xc8, 0xd4, 0xfc, 0x8a, 0x4a, 0x6d, 0xe7, 0x75, 0x57, 0x5f,
+ 0x53, 0x8b, 0x0f, 0xa7, 0x8e, 0xd9, 0x93, 0xc4, 0xc7, 0x89, 0x50, 0xc6,
+ 0xc7, 0xbb, 0x26, 0x96, 0xbe, 0xa8, 0xc7, 0xa1, 0xe0, 0x07, 0xd8, 0xef,
+ 0xa7, 0x63, 0x46, 0xbb, 0x83, 0x4f, 0x9f, 0x8f, 0xdc, 0xa7, 0x8b, 0xd3,
+ 0x83, 0x58, 0x1f, 0x99, 0x04, 0x37, 0x5a, 0xe9, 0x99, 0x6b, 0x7b, 0xeb,
+ 0xe2, 0x51, 0xf2, 0x72, 0xc0, 0x69, 0x8f, 0x6b, 0x47, 0x8a, 0x4a, 0x41,
+ 0x73, 0xe9, 0xc5, 0xaf, 0xd2, 0xa0, 0x6d, 0x07, 0xe9, 0x38, 0xea, 0xe7,
+ 0x1f, 0x12, 0x56, 0x1f, 0x52, 0xea, 0x98, 0xf8, 0x62, 0x6c, 0xf7, 0xda,
+ 0x7e, 0x8d, 0x40, 0xeb, 0x3e, 0x7e, 0x0a, 0x8f, 0x57, 0xfa, 0xc0, 0x0b,
+ 0xcd, 0x58, 0x47, 0x73, 0xc6, 0x86, 0xee, 0xc3, 0xfa, 0xbf, 0xde, 0xb0,
+ 0x1e, 0xe7, 0x17, 0xef, 0x71, 0x2f, 0x7b, 0xbe, 0x91, 0x3a, 0x92, 0x52,
+ 0x53, 0x63, 0x2f, 0x3b, 0x23, 0x32, 0xcd, 0xf9, 0x0e, 0xf6, 0xfe, 0x6b,
+ 0x47, 0xd1, 0x6a, 0x0c, 0x17, 0xf3, 0xf4, 0x54, 0x5a, 0x3c, 0x75, 0xf2,
+ 0x46, 0x90, 0xd1, 0x25, 0x25, 0x23, 0x0d, 0x84, 0xb7, 0x46, 0x8d, 0xd4,
+ 0xa4, 0x5c, 0x0f, 0xf7, 0x24, 0x0c, 0x71, 0xf8, 0xa4, 0xa5, 0x06, 0x93,
+ 0xa9, 0x52, 0x0c, 0x03, 0xcd, 0x38, 0x29, 0xe4, 0xf1, 0xd9, 0x25, 0x2c,
+ 0x1a, 0x06, 0xa0, 0x42, 0x98, 0x8e, 0xe9, 0xa0, 0x77, 0x52, 0x69, 0x84,
+ 0x94, 0xc8, 0x3b, 0xc0, 0x4a, 0x7d, 0xee, 0x1c, 0x40, 0xfc, 0x54, 0x65,
+ 0x49, 0xb5, 0xda, 0xff, 0x00, 0xa2, 0xc2, 0x7c, 0xce, 0x9f, 0x95, 0x25,
+ 0x2c, 0x75, 0xe6, 0x4f, 0xc5, 0x29, 0xed, 0x10, 0x88, 0x31, 0xac, 0xe5,
+ 0xce, 0x0d, 0x1e, 0x5a, 0x94, 0xde, 0x83, 0x64, 0x6e, 0x9d, 0x0f, 0x8f,
+ 0x3f, 0x72, 0x4a, 0x42, 0x5d, 0xaf, 0xf0, 0x53, 0xae, 0x8b, 0xec, 0x70,
+ 0x6d, 0x75, 0xb9, 0xce, 0x77, 0x00, 0xe8, 0xb4, 0x30, 0x70, 0x2f, 0xcb,
+ 0xb7, 0x66, 0x33, 0x34, 0x1f, 0x49, 0xdc, 0x35, 0xbf, 0x12, 0xba, 0x8e,
+ 0x9f, 0xd3, 0x71, 0xba, 0x73, 0x7d, 0xc4, 0x1b, 0x9c, 0x3d, 0xd6, 0x3a,
+ 0x27, 0xfb, 0x21, 0x25, 0x38, 0x98, 0x3f, 0x54, 0xed, 0xb1, 0xad, 0xb3,
+ 0x36, 0xef, 0x48, 0x1d, 0x7d, 0x26, 0x09, 0x77, 0xcd, 0xc7, 0x45, 0xbd,
+ 0x47, 0x4c, 0xc3, 0xaa, 0xa0, 0xd6, 0x57, 0xb9, 0xad, 0xec, 0xe3, 0x23,
+ 0xee, 0xd0, 0x2b, 0x3e, 0xa0, 0x33, 0xe9, 0xb1, 0xd6, 0x48, 0xd0, 0x81,
+ 0xb5, 0xbf, 0x7b, 0xa1, 0x1e, 0xb2, 0xf3, 0x4b, 0x86, 0xd6, 0x54, 0x7b,
+ 0x03, 0xef, 0x3f, 0xc1, 0x25, 0x30, 0xad, 0xa1, 0xa0, 0x06, 0x34, 0x31,
+ 0xbe, 0x00, 0x40, 0xfc, 0x14, 0xbd, 0x4a, 0xd9, 0xfc, 0xeb, 0x9a, 0xdf,
+ 0x89, 0x41, 0xf4, 0x9c, 0x47, 0xe9, 0x2c, 0x7b, 0xbc, 0x81, 0xd8, 0x3f,
+ 0xe8, 0xc2, 0x9b, 0x2b, 0x65, 0x7e, 0xe6, 0xb0, 0x0f, 0x38, 0x93, 0xf7,
+ 0xa4, 0xa4, 0x2f, 0xb2, 0xc7, 0x58, 0x3d, 0x09, 0x7d, 0x5a, 0xef, 0x1b,
+ 0x62, 0x7c, 0x3d, 0xce, 0x2d, 0x52, 0x15, 0xe5, 0x3e, 0x20, 0x32, 0xa1,
+ 0xe2, 0x65, 0xe7, 0xf0, 0x80, 0xa5, 0xea, 0xf2, 0xe7, 0x38, 0x31, 0xa3,
+ 0x92, 0xe3, 0x03, 0xf1, 0x42, 0xfd, 0xa1, 0x8f, 0x24, 0x52, 0xe3, 0x73,
+ 0xbc, 0x2a, 0x05, 0xff, 0x00, 0x8b, 0x44, 0x7e, 0x29, 0x29, 0xb2, 0xcc,
+ 0x7d, 0xc3, 0x6d, 0x97, 0x3d, 0xe3, 0xc0, 0x1d, 0x83, 0xfe, 0x84, 0x27,
+ 0xfb, 0x36, 0x1c, 0xc7, 0xa4, 0xdf, 0xbb, 0xdd, 0x3f, 0xd6, 0xe5, 0x56,
+ 0x19, 0x59, 0xaf, 0x11, 0x5d, 0x02, 0xbf, 0x3b, 0x9e, 0x07, 0xfd, 0x16,
+ 0x6e, 0x43, 0xd9, 0xd4, 0x67, 0x77, 0xaf, 0x54, 0xfe, 0xef, 0xa6, 0x76,
+ 0xff, 0x00, 0x9d, 0xba, 0x52, 0x53, 0xd3, 0x13, 0xe3, 0xa2, 0x89, 0x53,
+ 0x70, 0x50, 0x88, 0xe3, 0xee, 0x49, 0x4c, 0x4a, 0x62, 0x9c, 0x9f, 0x1d,
+ 0x0a, 0x64, 0x94, 0xb2, 0x49, 0x24, 0x92, 0x96, 0x2d, 0x07, 0x94, 0xda,
+ 0x8e, 0x75, 0x1e, 0x2a, 0x4a, 0x36, 0xdb, 0x5d, 0x2c, 0x36, 0x5a, 0xe0,
+ 0xd6, 0x8e, 0xe5, 0x25, 0x32, 0x1e, 0x3d, 0x96, 0x6e, 0x6f, 0x55, 0x0d,
+ 0x77, 0xa1, 0x8b, 0xef, 0xb0, 0xcc, 0xb8, 0x6b, 0x11, 0xa9, 0x85, 0x4f,
+ 0x3b, 0xa9, 0x59, 0x91, 0x2c, 0xa6, 0x6a, 0xab, 0xb9, 0xe2, 0x47, 0x9a,
+ 0x05, 0x14, 0x8c, 0x8b, 0x5c, 0x68, 0x2e, 0x6d, 0x03, 0x4f, 0x54, 0xe8,
+ 0xf7, 0x03, 0xe1, 0xe0, 0x3c, 0xd2, 0x53, 0x0a, 0xcd, 0x97, 0x5b, 0x63,
+ 0x1b, 0xfa, 0x4b, 0x89, 0x1e, 0xf7, 0x13, 0xb6, 0xbe, 0xe4, 0xbb, 0xc4,
+ 0x9f, 0x05, 0x6f, 0x03, 0xa6, 0x55, 0x84, 0xe7, 0xe4, 0x3d, 0xe6, 0xec,
+ 0x87, 0xe8, 0xeb, 0x5f, 0xc9, 0xf2, 0x68, 0xe1, 0xa3, 0xc8, 0x22, 0xd5,
+ 0x4d, 0x74, 0x08, 0xac, 0x06, 0x88, 0x59, 0x3d, 0x67, 0xeb, 0x16, 0x2e,
+ 0x00, 0x2c, 0x1f, 0xa5, 0xc9, 0xfc, 0xda, 0x47, 0x6f, 0x37, 0x1e, 0xc9,
+ 0x29, 0xbd, 0xd4, 0xba, 0x9d, 0x18, 0x75, 0x1b, 0xb2, 0x1e, 0x1a, 0xd1,
+ 0xc0, 0xee, 0x4f, 0x80, 0x0b, 0x88, 0xeb, 0x3d, 0x7b, 0x2f, 0x3c, 0x16,
+ 0x56, 0xd3, 0x4e, 0x21, 0xed, 0xf9, 0xce, 0xfe, 0xb7, 0xf7, 0x2a, 0x99,
+ 0x59, 0xb9, 0x19, 0xb7, 0xfd, 0xa3, 0x31, 0xdb, 0xfc, 0x1a, 0x3e, 0x8b,
+ 0x07, 0x90, 0x4c, 0xe7, 0x6f, 0x10, 0x34, 0x6f, 0xe5, 0x49, 0x4d, 0x46,
+ 0xcc, 0xfb, 0x7e, 0xf4, 0x7a, 0xc1, 0x1d, 0xbe, 0x24, 0xa9, 0x6c, 0x00,
+ 0x78, 0x28, 0x97, 0xc6, 0x8d, 0xfb, 0xd2, 0x52, 0xe5, 0xc1, 0xa7, 0xcd,
+ 0x46, 0x5c, 0xe3, 0x25, 0x20, 0x34, 0xf3, 0x53, 0x6b, 0x0f, 0x82, 0x4a,
+ 0x5a, 0x0a, 0x90, 0x6a, 0x9b, 0x6b, 0x3d, 0xf4, 0x44, 0x15, 0x0e, 0x4e,
+ 0xa9, 0x29, 0x16, 0x81, 0x49, 0xac, 0x7b, 0xbe, 0x8b, 0x49, 0x44, 0x63,
+ 0x7d, 0xc5, 0xa0, 0x0f, 0x28, 0xe5, 0x1b, 0x46, 0x8d, 0x4c, 0x24, 0xa4,
+ 0x2d, 0xc7, 0xb0, 0xf3, 0x03, 0xf1, 0x45, 0x6e, 0x2d, 0x7d, 0xc9, 0x72,
+ 0x93, 0x49, 0x77, 0xd1, 0x04, 0xfe, 0x03, 0xf1, 0x53, 0x1e, 0xa0, 0xec,
+ 0xd6, 0xf9, 0x9d, 0x4a, 0x4a, 0x64, 0xca, 0x9a, 0xc6, 0xcb, 0x5a, 0x3e,
+ 0x41, 0x23, 0x66, 0xdf, 0xa4, 0x40, 0xf8, 0x95, 0x17, 0x07, 0x97, 0x36,
+ 0x5c, 0x4b, 0x7f, 0x3b, 0x58, 0xfb, 0xa1, 0x1f, 0x1b, 0x15, 0xd9, 0x0f,
+ 0x0d, 0xc7, 0xaa, 0x5c, 0x4c, 0x03, 0x1f, 0x89, 0x29, 0x29, 0x03, 0x37,
+ 0xd8, 0xe0, 0xca, 0xd8, 0xe7, 0xb9, 0xc6, 0x00, 0x03, 0x93, 0xf3, 0x5b,
+ 0x58, 0x9f, 0x56, 0x32, 0xad, 0xda, 0xfc, 0x97, 0xb2, 0x90, 0x75, 0x35,
+ 0x8f, 0x73, 0xbe, 0x7c, 0x05, 0x7f, 0x07, 0x06, 0x8c, 0x00, 0x1d, 0x63,
+ 0xc3, 0xaf, 0x77, 0x2e, 0xd0, 0x6d, 0xf2, 0x68, 0xe5, 0x68, 0x32, 0xc2,
+ 0x5a, 0x62, 0xb7, 0xb8, 0x9f, 0xa2, 0x48, 0xda, 0x3e, 0xf7, 0x42, 0x4a,
+ 0x63, 0x56, 0x16, 0x3d, 0x0c, 0x15, 0x34, 0x9d, 0x83, 0xf3, 0x1b, 0xed,
+ 0x1f, 0xf4, 0x61, 0x4e, 0xa6, 0x56, 0xc2, 0x76, 0xd6, 0x1b, 0xfb, 0xa6,
+ 0x35, 0x2a, 0x26, 0xbc, 0xb7, 0x6a, 0x76, 0x56, 0x0f, 0x1c, 0xbc, 0xff,
+ 0x00, 0x00, 0xa5, 0xf6, 0x72, 0x75, 0xb2, 0xd7, 0xbf, 0xc8, 0x1d, 0xa3,
+ 0xfe, 0x8c, 0x24, 0xa6, 0x56, 0xd8, 0xd6, 0x09, 0xb1, 0xe1, 0xa3, 0xcf,
+ 0x45, 0x06, 0x65, 0xb1, 0xdf, 0x41, 0x8e, 0xb7, 0xfa, 0xad, 0x31, 0xf7,
+ 0x98, 0x0a, 0x6c, 0xaa, 0x96, 0x19, 0x65, 0x6d, 0x04, 0x77, 0x3a, 0x9f,
+ 0xc5, 0x4c, 0xc5, 0x66, 0x5e, 0x7f, 0xb8, 0x24, 0xa6, 0x1b, 0xb2, 0x9e,
+ 0xd1, 0xb6, 0xb6, 0x55, 0xa9, 0x92, 0xf7, 0x6e, 0x3f, 0x73, 0x3f, 0xbd,
+ 0x45, 0xf4, 0x5a, 0xe1, 0xfa, 0x4b, 0xdd, 0x07, 0xb5, 0x60, 0x56, 0x3e,
+ 0xff, 0x00, 0x71, 0xfc, 0x53, 0x8c, 0x9a, 0xc9, 0x86, 0x9d, 0xe7, 0xb0,
+ 0x60, 0x2e, 0xfc, 0x92, 0xa6, 0x4e, 0x43, 0xc4, 0x32, 0x92, 0x07, 0x8b,
+ 0xc8, 0x6f, 0xe0, 0x24, 0xa4, 0xa6, 0x83, 0x71, 0x71, 0x3d, 0x57, 0x01,
+ 0x54, 0xd8, 0xce, 0x5d, 0x60, 0x2f, 0x33, 0xe4, 0x5f, 0x2a, 0xe8, 0x12,
+ 0x00, 0x02, 0x3e, 0x1c, 0x28, 0xba, 0x8b, 0x86, 0xb6, 0x5a, 0xd6, 0xff,
+ 0x00, 0x51, 0xbf, 0xf7, 0xe7, 0xff, 0x00, 0x72, 0x23, 0x28, 0xa1, 0xff,
+ 0x00, 0x4f, 0x75, 0xbf, 0xd6, 0x76, 0x9f, 0x70, 0x80, 0x92, 0x90, 0x5a,
+ 0xfc, 0x71, 0xb7, 0xd4, 0x73, 0x49, 0x06, 0x43, 0x41, 0x93, 0xf7, 0x0d,
+ 0x53, 0x7a, 0xde, 0xd9, 0xf4, 0x6d, 0xd9, 0xce, 0xed, 0x87, 0x9f, 0x87,
+ 0x3f, 0x82, 0xb2, 0xea, 0x9a, 0x1b, 0xb6, 0xa6, 0x8a, 0xc7, 0x83, 0x00,
+ 0x1f, 0x91, 0x0b, 0xd0, 0xb6, 0x38, 0x1f, 0x0e, 0xf1, 0xf1, 0x49, 0x4f,
+ 0x42, 0x42, 0x81, 0x53, 0x3e, 0x6a, 0x25, 0x25, 0x30, 0x20, 0x42, 0x84,
+ 0x11, 0xc7, 0xdc, 0x51, 0x0a, 0x8a, 0x4a, 0x60, 0x08, 0x3a, 0x70, 0x7c,
+ 0x13, 0xa7, 0x20, 0x46, 0xbc, 0x2c, 0xdc, 0xde, 0xaa, 0x2a, 0x9a, 0xf1,
+ 0xce, 0xf7, 0xfe, 0xff, 0x00, 0x20, 0x7c, 0x3c, 0x52, 0x53, 0x67, 0x2f,
+ 0x36, 0xac, 0x51, 0xee, 0xf7, 0x58, 0x78, 0x60, 0xe7, 0xe6, 0xb0, 0x73,
+ 0xb2, 0xec, 0xb8, 0x0b, 0x6e, 0x24, 0x35, 0xda, 0x56, 0xd1, 0xc9, 0xd6,
+ 0x21, 0xad, 0x08, 0x5e, 0xb3, 0x9c, 0x5c, 0x09, 0x36, 0x5e, 0xe2, 0x09,
+ 0xf0, 0x68, 0x3d, 0xdc, 0x51, 0xf1, 0x71, 0xb6, 0x38, 0x5b, 0x61, 0xdf,
+ 0x61, 0xee, 0x7b, 0x0f, 0x06, 0x8e, 0xc9, 0x29, 0x8d, 0x78, 0xae, 0xb8,
+ 0x87, 0xde, 0xd0, 0xc6, 0x69, 0xb7, 0x1c, 0x71, 0xf1, 0x79, 0xef, 0xf0,
+ 0x56, 0x6d, 0xb9, 0xb8, 0x8c, 0x73, 0xf4, 0xd0, 0x6a, 0x49, 0x80, 0x02,
+ 0x16, 0x7f, 0x50, 0xc6, 0xc1, 0xab, 0xd6, 0xca, 0x78, 0x68, 0xfc, 0xd6,
+ 0xfe, 0x73, 0x8f, 0x90, 0x5c, 0x67, 0x52, 0xeb, 0x59, 0x1d, 0x51, 0xc5,
+ 0xaf, 0x3e, 0x96, 0x20, 0x32, 0x2a, 0x69, 0xd4, 0xf8, 0x6e, 0x49, 0x4e,
+ 0x8f, 0x55, 0xfa, 0xcf, 0x6d, 0xf6, 0x3a, 0x8e, 0x9e, 0xed, 0xad, 0x1a,
+ 0x1b, 0xcf, 0x61, 0xfc, 0x9f, 0xef, 0x58, 0x37, 0xd7, 0x58, 0x12, 0xe7,
+ 0x17, 0x5a, 0xed, 0x77, 0xcc, 0x97, 0x1f, 0x35, 0x23, 0x75, 0x6c, 0x0d,
+ 0xd0, 0x0d, 0xbf, 0x45, 0xc3, 0xcf, 0xc4, 0x2a, 0xed, 0x78, 0xb1, 0xee,
+ 0x3c, 0x0e, 0xc9, 0x29, 0x60, 0xc3, 0x32, 0x79, 0xfc, 0x11, 0x24, 0x37,
+ 0x5f, 0xc1, 0x41, 0xf7, 0x01, 0xed, 0x60, 0xd5, 0x45, 0xba, 0x99, 0x27,
+ 0x54, 0x94, 0xc8, 0x97, 0x3c, 0xf8, 0x0f, 0x04, 0xe1, 0x8a, 0x40, 0x78,
+ 0x34, 0x94, 0x9c, 0x5e, 0xd0, 0x09, 0x80, 0x92, 0x99, 0x35, 0x8a, 0x63,
+ 0x60, 0xe4, 0x80, 0x7c, 0x10, 0x77, 0x13, 0xa1, 0x93, 0x28, 0xac, 0x1a,
+ 0x6b, 0xcf, 0x92, 0x4a, 0x66, 0x1e, 0x3b, 0x09, 0xfc, 0x3f, 0x2a, 0x76,
+ 0xb8, 0x9d, 0x01, 0x02, 0x3e, 0x6a, 0x2d, 0x69, 0x76, 0x82, 0x5d, 0xe4,
+ 0x35, 0x46, 0x66, 0x35, 0xdc, 0x86, 0x44, 0xf8, 0x94, 0x94, 0xa6, 0x81,
+ 0xf9, 0xc4, 0x9f, 0xc0, 0x29, 0x02, 0x07, 0xd1, 0x10, 0x3c, 0x82, 0x95,
+ 0x78, 0xee, 0x7e, 0x8f, 0x76, 0xd2, 0x3f, 0x34, 0x0f, 0xef, 0x46, 0x18,
+ 0xf5, 0x81, 0x26, 0x5d, 0xf1, 0x29, 0x29, 0xae, 0x5f, 0xac, 0xce, 0xa5,
+ 0x4d, 0xad, 0xb9, 0xdf, 0x45, 0x87, 0xe2, 0x74, 0xfc, 0xab, 0x43, 0x18,
+ 0xd2, 0xd1, 0xb4, 0x55, 0xb9, 0xe7, 0x46, 0x86, 0x8f, 0xe0, 0xb5, 0x70,
+ 0x7a, 0x76, 0x35, 0x6e, 0xf5, 0x73, 0x9c, 0x37, 0x8d, 0x5b, 0x8e, 0x3d,
+ 0xd1, 0xfd, 0x68, 0xfc, 0x89, 0x29, 0xce, 0xe9, 0x7f, 0x56, 0xf2, 0x73,
+ 0x4f, 0xad, 0x73, 0xbd, 0x1a, 0x4f, 0xe7, 0x72, 0xe7, 0x7f, 0x56, 0x57,
+ 0x4b, 0x47, 0x4e, 0xc2, 0xc2, 0xc7, 0xf4, 0xea, 0x92, 0xd6, 0x8d, 0x77,
+ 0x3a, 0x27, 0xcd, 0xdb, 0x61, 0x45, 0xf9, 0x39, 0x4e, 0x21, 0x98, 0xd5,
+ 0x38, 0x37, 0xbb, 0xdf, 0x0c, 0x00, 0x79, 0x07, 0x6b, 0xf8, 0x28, 0x3a,
+ 0xbb, 0xec, 0xac, 0xd7, 0x63, 0x9a, 0x43, 0x84, 0x38, 0x41, 0x74, 0x83,
+ 0xf7, 0x04, 0x94, 0xd8, 0xc7, 0x7b, 0x5b, 0x03, 0xd3, 0x6b, 0x4b, 0x84,
+ 0x8f, 0x4f, 0x56, 0xfd, 0xf0, 0x11, 0x5f, 0x75, 0x35, 0x36, 0x6c, 0x7b,
+ 0x5b, 0x1f, 0xbc, 0x40, 0xfc, 0xab, 0x2e, 0x99, 0x39, 0xaf, 0xc4, 0xb1,
+ 0xcf, 0xf4, 0x99, 0x58, 0x73, 0x58, 0xd7, 0x6c, 0x07, 0x58, 0xe2, 0xb8,
+ 0xd1, 0x5c, 0xae, 0xb6, 0xd6, 0xe0, 0x28, 0xa5, 0x8d, 0x3f, 0xbd, 0xb6,
+ 0x5d, 0xfe, 0x71, 0xd5, 0x25, 0x33, 0x19, 0x2c, 0x78, 0xdd, 0x53, 0x5f,
+ 0x76, 0xba, 0x6c, 0x69, 0x80, 0x3f, 0xac, 0x60, 0x29, 0x4e, 0x4b, 0xe0,
+ 0x35, 0x8d, 0xab, 0xfa, 0xee, 0xdc, 0x7e, 0xe6, 0x7f, 0x7a, 0x2c, 0x3c,
+ 0x0d, 0xd6, 0xbf, 0xef, 0xe3, 0xf1, 0x42, 0x76, 0x4d, 0x03, 0x87, 0xef,
+ 0x70, 0xec, 0xd0, 0x5d, 0xf9, 0x12, 0x53, 0x13, 0x8f, 0x69, 0x0e, 0x26,
+ 0xd7, 0x39, 0xe3, 0x86, 0xb0, 0x0a, 0xc7, 0xdf, 0xee, 0x2a, 0x6d, 0xc6,
+ 0xa4, 0x00, 0xe7, 0xb0, 0x3e, 0xce, 0xe5, 0xd2, 0xff, 0x00, 0xfa, 0xa9,
+ 0x51, 0x76, 0x4b, 0x9e, 0x25, 0xb5, 0xc4, 0xfe, 0x73, 0xc8, 0x1f, 0x80,
+ 0x94, 0x27, 0x3e, 0xe0, 0xd8, 0x36, 0xed, 0x1f, 0xc8, 0x1a, 0xfd, 0xee,
+ 0x9f, 0xc8, 0x92, 0x9b, 0x80, 0x38, 0x69, 0x30, 0x3c, 0x07, 0xfb, 0x14,
+ 0x1f, 0x91, 0x4b, 0x34, 0x7d, 0x80, 0x1f, 0x02, 0x75, 0xfb, 0x95, 0x12,
+ 0x77, 0x7d, 0x37, 0x39, 0xe0, 0xf6, 0x73, 0x8c, 0x7d, 0xc2, 0x02, 0x43,
+ 0x63, 0x44, 0x30, 0x00, 0x7c, 0xb4, 0x49, 0x49, 0xdd, 0x76, 0x2e, 0xf0,
+ 0xed, 0x8f, 0xb1, 0xdd, 0xb4, 0x81, 0x3f, 0xdb, 0x85, 0x0b, 0x72, 0xec,
+ 0xd0, 0x31, 0xad, 0x67, 0xcc, 0x9f, 0xc9, 0x0a, 0xbe, 0x41, 0xb1, 0xb5,
+ 0x97, 0x34, 0x1d, 0x46, 0xa4, 0x90, 0xdf, 0xc5, 0xc8, 0x55, 0x3e, 0x96,
+ 0x9d, 0xcc, 0x97, 0xbc, 0xea, 0x76, 0x07, 0x58, 0x67, 0xe2, 0x01, 0x09,
+ 0x29, 0xb3, 0xea, 0x58, 0x74, 0x7b, 0xdc, 0x4f, 0x94, 0x37, 0xf2, 0x09,
+ 0x52, 0xf4, 0xc6, 0xdd, 0xd0, 0x7e, 0x32, 0x7f, 0x2c, 0xca, 0x0e, 0xeb,
+ 0x8e, 0xad, 0xaa, 0x3f, 0xe3, 0x1c, 0x1b, 0xf8, 0x0d, 0xc5, 0x13, 0x7d,
+ 0xde, 0x9e, 0xdf, 0x66, 0xef, 0x83, 0xe3, 0xef, 0xff, 0x00, 0x62, 0x4a,
+ 0x7a, 0xae, 0xca, 0x24, 0x78, 0x27, 0x29, 0x8a, 0x4a, 0x60, 0x67, 0xba,
+ 0x1d, 0x96, 0x57, 0x5b, 0x0b, 0xde, 0xe0, 0x1a, 0x3b, 0xa3, 0x15, 0x93,
+ 0xd6, 0x80, 0x0d, 0xae, 0xcf, 0x71, 0x20, 0x90, 0x58, 0xde, 0xe3, 0xfb,
+ 0xd2, 0x53, 0x5b, 0x37, 0xa8, 0x59, 0x90, 0xff, 0x00, 0x4a, 0xb3, 0xb2,
+ 0x9e, 0xf2, 0x62, 0x63, 0x5f, 0x71, 0x59, 0xac, 0xb2, 0xfc, 0xab, 0x0b,
+ 0x70, 0xc6, 0xca, 0x7e, 0x8b, 0xf2, 0x9c, 0x3e, 0x90, 0xee, 0xda, 0xc7,
+ 0x7f, 0x8f, 0x0a, 0xcb, 0x3a, 0x73, 0xb2, 0x5e, 0x2c, 0xca, 0x96, 0x50,
+ 0x0c, 0xb7, 0x14, 0x6b, 0x3e, 0x1e, 0xab, 0xbb, 0xfc, 0x3e, 0xf4, 0x6c,
+ 0xcc, 0x9a, 0x30, 0xe9, 0x75, 0xb6, 0x10, 0xca, 0x98, 0x35, 0x8f, 0xc0,
+ 0x24, 0xa4, 0x74, 0xe2, 0xd5, 0x43, 0x05, 0x75, 0x8e, 0xf2, 0x67, 0x53,
+ 0x3d, 0xc9, 0x3d, 0xca, 0xce, 0xea, 0xff, 0x00, 0x58, 0xb1, 0xba, 0x7e,
+ 0xea, 0x28, 0x1e, 0xbe, 0x54, 0x46, 0xd1, 0xf4, 0x59, 0xfd, 0x62, 0xb2,
+ 0x7a, 0x9f, 0xd6, 0x5b, 0xb2, 0x41, 0xc6, 0xc0, 0x9a, 0x98, 0x47, 0xbe,
+ 0xd3, 0xa3, 0x8f, 0x90, 0xf0, 0x59, 0x98, 0x27, 0x0a, 0xb2, 0x4e, 0x4c,
+ 0xfa, 0xc7, 0x82, 0xef, 0xa2, 0x7e, 0x7f, 0xde, 0x92, 0x91, 0x64, 0x1c,
+ 0xfc, 0xa9, 0xce, 0xcb, 0x26, 0xc8, 0xd0, 0x6e, 0xd3, 0x4f, 0x16, 0x8f,
+ 0x05, 0x56, 0xe7, 0x80, 0x62, 0x21, 0xc3, 0xb7, 0x0a, 0xe6, 0x6f, 0x51,
+ 0x6f, 0xba, 0xaa, 0x4e, 0xf6, 0x91, 0x04, 0x9e, 0x07, 0x90, 0x54, 0x2a,
+ 0xa6, 0xdb, 0xdd, 0xa6, 0xa3, 0xbb, 0x8f, 0x09, 0x29, 0x87, 0xb9, 0xee,
+ 0x1d, 0xcf, 0x82, 0xb3, 0x45, 0x63, 0x66, 0xe8, 0xd4, 0xa2, 0x16, 0xd5,
+ 0x8e, 0xd8, 0x68, 0x92, 0x74, 0x73, 0xfb, 0x4a, 0x7c, 0x76, 0xfe, 0x88,
+ 0x4f, 0x8f, 0xf1, 0x49, 0x4d, 0x70, 0xc0, 0x6c, 0x76, 0x9d, 0xd1, 0xda,
+ 0x18, 0xd0, 0x24, 0xc2, 0x1e, 0xc9, 0xbd, 0xc3, 0xb4, 0xf0, 0xaf, 0x55,
+ 0x4b, 0x40, 0x10, 0xd1, 0xf1, 0x84, 0x94, 0x84, 0x00, 0x75, 0x68, 0x2e,
+ 0xf8, 0x04, 0xe7, 0x1e, 0xcb, 0x34, 0xfa, 0x31, 0xe3, 0xfe, 0xc5, 0x6c,
+ 0xb9, 0x8c, 0xfa, 0x6e, 0x03, 0xe6, 0x91, 0xbe, 0x98, 0xf6, 0x4b, 0xfc,
+ 0xc7, 0xfb, 0x52, 0x52, 0x1a, 0xf0, 0x5a, 0x3e, 0x93, 0xa5, 0x1c, 0x63,
+ 0xd4, 0xd1, 0xa3, 0x27, 0xcc, 0xea, 0xa3, 0xea, 0x59, 0xd9, 0xa0, 0x7c,
+ 0x75, 0x4a, 0x6c, 0x77, 0x2f, 0x3f, 0x01, 0xa2, 0x4a, 0x6c, 0x00, 0xd1,
+ 0x02, 0x40, 0xfc, 0x02, 0x85, 0x96, 0xd7, 0x30, 0x1f, 0xc7, 0xee, 0xea,
+ 0x84, 0xd6, 0x34, 0x6b, 0x12, 0x7c, 0x4e, 0xbf, 0x95, 0x39, 0x01, 0x25,
+ 0x2d, 0x63, 0xdc, 0xf1, 0x0d, 0x64, 0x78, 0x38, 0x98, 0xfc, 0x8a, 0xce,
+ 0x0f, 0x4f, 0xcf, 0xce, 0x76, 0xda, 0xce, 0xda, 0xc7, 0xd3, 0xb2, 0x34,
+ 0x1f, 0x7a, 0xb9, 0xd3, 0xba, 0x48, 0xb4, 0x0b, 0xb2, 0xdc, 0x59, 0x57,
+ 0x22, 0xb6, 0xc9, 0x73, 0xbe, 0x3e, 0x01, 0x6f, 0xd7, 0x65, 0x55, 0x56,
+ 0x2b, 0xa6, 0xad, 0xac, 0x03, 0x40, 0x48, 0x68, 0xfb, 0x9b, 0x29, 0x29,
+ 0x16, 0x27, 0x46, 0xc3, 0xc3, 0x00, 0x81, 0xea, 0x5b, 0x1a, 0xdb, 0x61,
+ 0x24, 0xfc, 0x87, 0x01, 0x5a, 0x1e, 0xdd, 0x1a, 0x20, 0x79, 0x08, 0x42,
+ 0x36, 0x5c, 0x40, 0xd8, 0x43, 0x49, 0xec, 0xd1, 0xaf, 0xde, 0x54, 0x03,
+ 0x1e, 0x4c, 0xd8, 0x4b, 0xbc, 0x89, 0x31, 0xf7, 0x24, 0xa4, 0xc6, 0xd6,
+ 0xb4, 0x92, 0x48, 0x04, 0xf6, 0x27, 0x55, 0x0b, 0x2f, 0x03, 0xe8, 0xcf,
+ 0xc8, 0x47, 0xfd, 0x52, 0x83, 0x60, 0x1d, 0x00, 0x1f, 0x04, 0xcf, 0x11,
+ 0xab, 0xb4, 0x9d, 0x35, 0xee, 0x4a, 0x4a, 0x46, 0xd7, 0x16, 0xe5, 0x1b,
+ 0xc0, 0x87, 0x16, 0x6c, 0x20, 0xeb, 0xa4, 0xcf, 0x92, 0x3f, 0xda, 0x2c,
+ 0x78, 0xf6, 0xd8, 0x5a, 0x3b, 0xed, 0x1b, 0x50, 0x5f, 0x5b, 0x83, 0x4d,
+ 0x84, 0x90, 0xd6, 0x02, 0xe2, 0x07, 0x3a, 0x2a, 0x98, 0xd9, 0xc7, 0x39,
+ 0x9b, 0xb0, 0xc5, 0x6e, 0x69, 0xec, 0xf7, 0xea, 0x3e, 0x2c, 0x68, 0x90,
+ 0x92, 0x9b, 0xce, 0x1e, 0xef, 0x77, 0xb9, 0xde, 0x2e, 0xd7, 0xf2, 0xa2,
+ 0x35, 0xed, 0x68, 0xf7, 0x15, 0x4f, 0xd1, 0xc9, 0x7c, 0x1b, 0x2d, 0xdb,
+ 0xe2, 0x2a, 0x00, 0x7f, 0xd2, 0x76, 0xe2, 0x97, 0xd9, 0x29, 0xe5, 0xfb,
+ 0xad, 0x71, 0xe7, 0x7b, 0x8b, 0xbf, 0x0e, 0x12, 0x53, 0x62, 0xcc, 0xcc,
+ 0x46, 0x18, 0x36, 0xb6, 0x47, 0x0d, 0x99, 0x3f, 0x73, 0x64, 0xa1, 0xfd,
+ 0xab, 0xd5, 0x74, 0x57, 0x5b, 0xdc, 0x7b, 0x08, 0x0c, 0x1f, 0xf4, 0xc8,
+ 0x3f, 0x82, 0x5b, 0x5b, 0x58, 0xf6, 0x34, 0x34, 0x7f, 0x24, 0x47, 0xe4,
+ 0x55, 0xba, 0x73, 0x2b, 0x37, 0xd9, 0x74, 0x6c, 0x3b, 0x88, 0x73, 0xdf,
+ 0xa4, 0xc7, 0xc4, 0xa4, 0xa6, 0xd9, 0x19, 0x6e, 0x81, 0xec, 0xac, 0x78,
+ 0x99, 0x79, 0xff, 0x00, 0xbe, 0xa1, 0x7a, 0x6f, 0x0f, 0x87, 0x5c, 0xf8,
+ 0xef, 0xb6, 0x18, 0x3f, 0xe8, 0x89, 0xfc, 0x55, 0xc7, 0x5f, 0x85, 0xc3,
+ 0x6d, 0xf5, 0x1d, 0xe1, 0x58, 0x2f, 0xff, 0x00, 0xa9, 0x55, 0xec, 0x16,
+ 0x5d, 0xfc, 0xdd, 0x56, 0x35, 0x87, 0x43, 0x64, 0xb5, 0xa4, 0x0f, 0x10,
+ 0x26, 0x52, 0x52, 0xf1, 0x4d, 0x44, 0x34, 0x06, 0xee, 0x27, 0x42, 0xe1,
+ 0x27, 0xef, 0x7c, 0x94, 0x5d, 0xcf, 0x81, 0xa9, 0x50, 0xab, 0x18, 0x12,
+ 0x0b, 0x19, 0x2e, 0xec, 0xf7, 0x99, 0x3f, 0x7a, 0xbd, 0x4f, 0x4d, 0xb2,
+ 0xe6, 0x07, 0xba, 0xe0, 0xc0, 0x7b, 0x35, 0xb2, 0x47, 0x97, 0xb8, 0xc7,
+ 0xe0, 0x92, 0x9a, 0x3e, 0xa0, 0x04, 0x33, 0x52, 0xe3, 0xd8, 0x0f, 0xee,
+ 0x4a, 0x2c, 0xfa, 0x5b, 0x87, 0xc1, 0x69, 0x33, 0xa4, 0xd2, 0xd7, 0x0f,
+ 0x51, 0xd6, 0x5b, 0x26, 0x1c, 0x0b, 0x88, 0x1a, 0x8f, 0x06, 0x6d, 0x47,
+ 0xfd, 0x9b, 0x87, 0xb7, 0x6f, 0xd9, 0xeb, 0x8e, 0x78, 0x13, 0xf7, 0xf2,
+ 0x92, 0x9d, 0x14, 0xc9, 0xe5, 0x31, 0x49, 0x4b, 0x15, 0x9d, 0x75, 0x93,
+ 0x92, 0xf9, 0xe1, 0x80, 0x34, 0x2b, 0xd6, 0xbc, 0x57, 0x5b, 0x9e, 0x78,
+ 0x68, 0x95, 0xca, 0x5b, 0xd4, 0xb2, 0xb2, 0xb2, 0x1f, 0x85, 0xd2, 0x6b,
+ 0x19, 0x39, 0x4e, 0x33, 0x6d, 0xc7, 0xf9, 0xaa, 0x41, 0xee, 0xf7, 0x7f,
+ 0x04, 0x94, 0xdb, 0xea, 0x5d, 0x57, 0x1f, 0x05, 0x8d, 0x36, 0x12, 0xeb,
+ 0x2c, 0xd2, 0xba, 0x58, 0x37, 0x59, 0x61, 0xec, 0x1a, 0xd5, 0x9d, 0x7f,
+ 0xd5, 0xbe, 0xb5, 0xd6, 0x69, 0xfb, 0x4e, 0x65, 0x8d, 0xc6, 0xef, 0x4e,
+ 0x06, 0xbc, 0x7f, 0xc2, 0x38, 0x7e, 0x72, 0xdb, 0xe9, 0x3f, 0x57, 0xe8,
+ 0xc0, 0xb3, 0xed, 0x79, 0x0f, 0x39, 0x7d, 0x45, 0xe3, 0xdf, 0x92, 0xff,
+ 0x00, 0xcd, 0xfe, 0x4d, 0x6d, 0xfc, 0xd0, 0xb5, 0xd2, 0x53, 0xe5, 0x7d,
+ 0x4f, 0xa7, 0x59, 0xd3, 0xed, 0x35, 0xe4, 0xd2, 0x68, 0x79, 0xe2, 0x04,
+ 0xb1, 0xdf, 0x0e, 0xdf, 0x72, 0xc2, 0xb9, 0xe5, 0xce, 0x23, 0xb0, 0x5e,
+ 0xd5, 0x99, 0x53, 0x2d, 0xc7, 0x73, 0x5f, 0x50, 0xb8, 0x01, 0x3e, 0x99,
+ 0x01, 0xd3, 0xe4, 0x03, 0xbb, 0xae, 0x0e, 0xcf, 0xaa, 0x97, 0xf5, 0x2b,
+ 0xaf, 0xbb, 0x0b, 0x10, 0xe1, 0xb1, 0xb3, 0x15, 0xd8, 0x4b, 0x65, 0xfe,
+ 0x1e, 0xef, 0xe1, 0xa2, 0x4a, 0x79, 0x5a, 0x68, 0x69, 0x1b, 0xed, 0x30,
+ 0xde, 0xcd, 0xee, 0x55, 0xda, 0x9e, 0x1d, 0xfa, 0x36, 0x00, 0xc0, 0x38,
+ 0x6f, 0x04, 0xab, 0x39, 0x1d, 0x20, 0xe3, 0xbb, 0xec, 0xd9, 0x2c, 0x76,
+ 0x36, 0x43, 0x7b, 0xbf, 0x87, 0x7f, 0x03, 0xf2, 0x55, 0x2c, 0xc7, 0xc8,
+ 0xc7, 0x03, 0xd4, 0x87, 0xd7, 0xdb, 0xfd, 0x89, 0x29, 0x9f, 0xa0, 0xed,
+ 0x74, 0xf6, 0xb8, 0x10, 0x67, 0x88, 0xf1, 0x52, 0xc5, 0x67, 0xe8, 0x87,
+ 0xc4, 0xa3, 0x51, 0x91, 0x73, 0x58, 0x00, 0x68, 0xb1, 0x80, 0x70, 0x74,
+ 0x74, 0x7c, 0x7b, 0xa5, 0x8a, 0xd1, 0xe9, 0x0f, 0xeb, 0x1f, 0xca, 0x92,
+ 0x9a, 0x45, 0x87, 0xed, 0x36, 0x41, 0x88, 0x28, 0xfb, 0x5c, 0x47, 0xb9,
+ 0xc4, 0xf9, 0x70, 0x84, 0xf7, 0xec, 0xcb, 0xb8, 0x44, 0xea, 0xa4, 0x2e,
+ 0x7b, 0x8c, 0x34, 0x40, 0xf1, 0x49, 0x4c, 0xfd, 0x31, 0xc0, 0x1c, 0xf2,
+ 0x95, 0x4e, 0x60, 0x0e, 0x06, 0x1a, 0xe0, 0x7c, 0x53, 0x38, 0x3c, 0x98,
+ 0xdd, 0x3e, 0x49, 0xc3, 0x20, 0x70, 0x92, 0x99, 0x9b, 0x07, 0x99, 0x4f,
+ 0xbc, 0xc7, 0x01, 0xbf, 0x12, 0x8f, 0x89, 0xd2, 0xb3, 0x73, 0x44, 0xd3,
+ 0x54, 0xd7, 0xfe, 0x91, 0xc7, 0x6b, 0x7e, 0xf5, 0x6f, 0x1b, 0xa0, 0xdf,
+ 0x74, 0x39, 0xef, 0xad, 0x8c, 0x92, 0x26, 0x49, 0x30, 0x0c, 0x18, 0xd1,
+ 0x25, 0x34, 0x6a, 0xaa, 0xfc, 0x87, 0x8a, 0xe9, 0x97, 0x39, 0xdd, 0x9a,
+ 0x3f, 0x29, 0x5b, 0xf8, 0x1d, 0x26, 0x8c, 0x51, 0xbe, 0xd0, 0x2d, 0xbf,
+ 0xf7, 0x9d, 0xa8, 0x6f, 0xf5, 0x41, 0x56, 0xf1, 0xea, 0xc4, 0xc5, 0xaf,
+ 0xd3, 0xa5, 0xbc, 0x72, 0x46, 0xa5, 0xc7, 0xcc, 0x84, 0xce, 0xcc, 0xd7,
+ 0x6b, 0x6b, 0x3b, 0x87, 0x0d, 0x30, 0xd9, 0xfc, 0xa9, 0x29, 0x24, 0xd8,
+ 0x1f, 0xa0, 0x73, 0xda, 0xee, 0x4e, 0x9b, 0x59, 0x09, 0x4c, 0x9d, 0xa1,
+ 0xb3, 0xf2, 0x43, 0x76, 0x7e, 0xd2, 0x6b, 0x70, 0xf4, 0xcf, 0x01, 0xe6,
+ 0x00, 0x3f, 0x02, 0xe5, 0x4f, 0x2f, 0xad, 0xe1, 0xd1, 0x11, 0x92, 0xd7,
+ 0x38, 0x72, 0xd6, 0x9d, 0xda, 0xff, 0x00, 0x65, 0x25, 0x3a, 0x01, 0xf6,
+ 0x80, 0xff, 0x00, 0x4d, 0x92, 0xe1, 0xc6, 0xe3, 0x00, 0xfe, 0x5f, 0x04,
+ 0x0c, 0x5c, 0x8c, 0xab, 0x4b, 0x85, 0xce, 0x63, 0x34, 0x91, 0xb0, 0x4f,
+ 0xc7, 0x57, 0x2c, 0x2b, 0xbe, 0xb0, 0x57, 0x61, 0x2d, 0xa9, 0xb7, 0x5a,
+ 0x1c, 0x21, 0xdb, 0x7d, 0x80, 0xf9, 0x77, 0x28, 0x6d, 0xea, 0x3d, 0x55,
+ 0xc2, 0x31, 0xf1, 0xdb, 0x4b, 0x63, 0x68, 0x2f, 0x92, 0x63, 0xfb, 0x50,
+ 0x92, 0x9e, 0x8a, 0xcb, 0xe8, 0x69, 0x03, 0x71, 0x7b, 0xbb, 0xff, 0x00,
+ 0xa8, 0x84, 0x0c, 0xbc, 0xd8, 0x65, 0x6c, 0x68, 0x6b, 0x77, 0x58, 0xcd,
+ 0xa2, 0x75, 0x89, 0x1a, 0xf8, 0xac, 0x07, 0x53, 0xd5, 0x2e, 0xfe, 0x7b,
+ 0x27, 0x60, 0x3c, 0xb5, 0x9a, 0x7e, 0x48, 0x44, 0xc3, 0xe9, 0x8c, 0x66,
+ 0x65, 0x36, 0xbd, 0xee, 0xb1, 0xed, 0x7b, 0x48, 0x24, 0xf7, 0x05, 0x25,
+ 0x3d, 0x38, 0x05, 0xd4, 0xb9, 0xae, 0x82, 0xe7, 0x34, 0xfe, 0x4f, 0x35,
+ 0xcb, 0xfd, 0x54, 0xb6, 0xaa, 0xf2, 0xdc, 0x1e, 0x75, 0x35, 0xb8, 0x43,
+ 0x41, 0x71, 0xe4, 0x76, 0x6c, 0xae, 0x95, 0xe1, 0xcd, 0xb2, 0x49, 0x68,
+ 0x69, 0x61, 0x11, 0x1e, 0xe9, 0x3e, 0x6b, 0x0b, 0xea, 0xb0, 0x2d, 0x7d,
+ 0xad, 0x6e, 0x84, 0xb0, 0x83, 0xe3, 0xa3, 0x84, 0xa4, 0xa7, 0xa1, 0x37,
+ 0x12, 0x3d, 0x95, 0x3c, 0x81, 0xfb, 0xc4, 0x30, 0x7e, 0x3a, 0xfe, 0x0a,
+ 0x05, 0xd9, 0x76, 0x1f, 0x6f, 0xa7, 0x48, 0xf1, 0x87, 0x58, 0x7f, 0x1d,
+ 0xa1, 0x11, 0xcf, 0xad, 0x9f, 0x49, 0xc0, 0x79, 0x12, 0x93, 0x1e, 0xe3,
+ 0xad, 0x75, 0xbd, 0xc3, 0xc9, 0xa7, 0xf2, 0x94, 0x94, 0xc7, 0xec, 0x6e,
+ 0xb4, 0x1f, 0x5b, 0x22, 0xc3, 0xe1, 0xb4, 0x86, 0x37, 0x5f, 0x26, 0x00,
+ 0x7f, 0x14, 0x4a, 0x7a, 0x6e, 0x0d, 0x2f, 0x6e, 0xda, 0x43, 0x8f, 0x3b,
+ 0xdd, 0xef, 0xf9, 0xcb, 0xa5, 0x48, 0x0c, 0x92, 0x7f, 0x9a, 0xdb, 0x23,
+ 0x97, 0xbc, 0x01, 0xff, 0x00, 0x47, 0x72, 0x95, 0x74, 0x64, 0x17, 0x02,
+ 0x6f, 0x1b, 0x9b, 0xa4, 0x34, 0x13, 0xcf, 0xf5, 0xb4, 0xfc, 0x12, 0x52,
+ 0x67, 0xb9, 0xac, 0x70, 0x8a, 0xf7, 0xc8, 0xd0, 0x34, 0x68, 0x13, 0x4b,
+ 0x1b, 0x5f, 0xb8, 0x0a, 0xa6, 0x61, 0xa4, 0x89, 0x4b, 0xd1, 0x0e, 0xd1,
+ 0xee, 0x7b, 0xfc, 0x8b, 0xa0, 0x7d, 0xcd, 0x84, 0xff, 0x00, 0x67, 0xa9,
+ 0xa0, 0x96, 0xb1, 0xa0, 0xf8, 0xc0, 0x94, 0x94, 0xca, 0xa8, 0xd0, 0x81,
+ 0xf7, 0xad, 0x1c, 0x58, 0xf4, 0x80, 0xf3, 0x2a, 0x83, 0x76, 0xb2, 0xb0,
+ 0x49, 0x03, 0xb1, 0x3f, 0x15, 0x77, 0x10, 0xfe, 0x8c, 0x8f, 0x02, 0x52,
+ 0x53, 0x4b, 0xeb, 0x3e, 0x46, 0x46, 0x2f, 0x47, 0xb7, 0x27, 0x16, 0xc7,
+ 0x55, 0x75, 0x65, 0xb0, 0xe6, 0xf8, 0x17, 0x00, 0x7f, 0x05, 0xcb, 0xfa,
+ 0xf9, 0x7e, 0xa4, 0xfd, 0xae, 0xff, 0x00, 0x52, 0x7e, 0x97, 0xa8, 0xee,
+ 0x7f, 0x22, 0xea, 0xbe, 0xb2, 0xb7, 0x7f, 0x42, 0xcd, 0x11, 0x31, 0x51,
+ 0x77, 0xf9, 0xa4, 0x39, 0x71, 0xbe, 0xb0, 0xd9, 0xeb, 0x76, 0x8d, 0xfc,
+ 0xf6, 0x8d, 0xc9, 0x29, 0xf4, 0xb2, 0x99, 0x3a, 0x62, 0x92, 0x9a, 0xf9,
+ 0x78, 0xb5, 0x65, 0xe3, 0xbf, 0x1a, 0xd2, 0xe1, 0x5d, 0x82, 0x1c, 0x58,
+ 0xe2, 0xc7, 0x7c, 0x88, 0x50, 0xc2, 0xc1, 0xc4, 0xc0, 0xa0, 0x63, 0xe2,
+ 0x56, 0x2a, 0xa9, 0xbd, 0x87, 0x24, 0xf8, 0xb8, 0xf7, 0x2a, 0xc9, 0x4c,
+ 0x92, 0x96, 0x49, 0x24, 0x92, 0x52, 0x93, 0xca, 0x64, 0x92, 0x52, 0x3c,
+ 0x9c, 0x4c, 0x5c, 0xca, 0xcd, 0x59, 0x35, 0x36, 0xd6, 0x1e, 0xce, 0x1c,
+ 0x7c, 0x0f, 0x65, 0xcc, 0xf5, 0x3f, 0xa9, 0xf6, 0x06, 0xb9, 0xdd, 0x3d,
+ 0xfe, 0xad, 0x67, 0x53, 0x8d, 0x67, 0x3f, 0xd9, 0x72, 0xea, 0xd3, 0xa4,
+ 0xa7, 0xca, 0x5f, 0xd3, 0x6c, 0xc7, 0xb5, 0xcc, 0x82, 0xc7, 0x03, 0x0e,
+ 0xa6, 0xc9, 0x69, 0x1f, 0x02, 0xa5, 0x88, 0xd1, 0xe9, 0x09, 0xec, 0xe3,
+ 0xf9, 0x57, 0xa5, 0xe6, 0xf4, 0xdc, 0x2e, 0xa1, 0x5f, 0xa7, 0x95, 0x58,
+ 0x7e, 0x90, 0xd7, 0x8d, 0x1e, 0xdf, 0xea, 0xb9, 0x79, 0xbd, 0x0d, 0x0d,
+ 0x0f, 0x68, 0xe1, 0xb6, 0x3d, 0xa0, 0x9f, 0x00, 0xe2, 0x12, 0x53, 0x99,
+ 0x7b, 0x49, 0xce, 0xb4, 0x41, 0x3a, 0xf0, 0x8a, 0xca, 0xac, 0x71, 0xd2,
+ 0x03, 0x54, 0x88, 0x61, 0xea, 0x17, 0x17, 0x18, 0xd4, 0x7e, 0x45, 0x71,
+ 0x86, 0xb0, 0x21, 0xad, 0x73, 0xbf, 0x0f, 0xca, 0x92, 0x9a, 0x8e, 0xc6,
+ 0x7b, 0x40, 0x21, 0xdc, 0x89, 0xf0, 0x4f, 0x75, 0x75, 0x11, 0x53, 0x24,
+ 0x17, 0x93, 0xee, 0xd7, 0xc9, 0x6a, 0x63, 0x74, 0xbc, 0x8e, 0xa9, 0xba,
+ 0x9a, 0xb6, 0xd4, 0xc6, 0x89, 0x75, 0x8e, 0x24, 0xfc, 0x06, 0x8b, 0x6b,
+ 0x07, 0xea, 0xae, 0x05, 0x1e, 0x9b, 0xb2, 0x09, 0xba, 0xd6, 0xf7, 0x3a,
+ 0x30, 0x1f, 0xea, 0xf7, 0x49, 0x4d, 0x8e, 0x9e, 0xc6, 0xb7, 0xa7, 0x63,
+ 0x33, 0xe8, 0x96, 0xd6, 0xd1, 0x11, 0x0b, 0x9e, 0xbb, 0xac, 0xe0, 0xe3,
+ 0xbd, 0xf4, 0x39, 0xb6, 0x5d, 0x73, 0x1e, 0xf6, 0xba, 0xb6, 0x8d, 0x04,
+ 0x3d, 0xd1, 0xaf, 0x1c, 0x2e, 0x9e, 0xcf, 0x65, 0x8e, 0x60, 0x92, 0x01,
+ 0xfc, 0x17, 0x09, 0x65, 0x65, 0xdd, 0x7a, 0xed, 0xba, 0x1f, 0x5d, 0xdf,
+ 0x74, 0x94, 0x94, 0xe9, 0x1f, 0xac, 0x19, 0xaf, 0x61, 0xaf, 0x13, 0x0f,
+ 0x63, 0x7b, 0x17, 0x49, 0xfc, 0x90, 0x15, 0x72, 0x7a, 0xdd, 0xda, 0xba,
+ 0xd1, 0x48, 0x3c, 0xed, 0x80, 0x7e, 0xf1, 0x25, 0x5f, 0x0d, 0x1e, 0x0a,
+ 0x61, 0xa6, 0x12, 0x53, 0x95, 0xfb, 0x20, 0xd8, 0x67, 0x22, 0xf7, 0xda,
+ 0x7c, 0xc9, 0xfe, 0x32, 0x8f, 0x5f, 0x4c, 0xc4, 0xae, 0x22, 0xb0, 0x7c,
+ 0xce, 0xaa, 0xf8, 0xa8, 0xf7, 0x52, 0x15, 0x04, 0x94, 0xd6, 0x6d, 0x4c,
+ 0x6e, 0x8d, 0x68, 0x1f, 0x01, 0x0a, 0x61, 0x87, 0xb0, 0x56, 0x03, 0x07,
+ 0x82, 0x90, 0xac, 0xa4, 0xa6, 0xaf, 0xa4, 0x4a, 0x9d, 0x6c, 0xdb, 0x63,
+ 0x08, 0xec, 0xe1, 0xf9, 0x51, 0xbd, 0x32, 0x42, 0x71, 0x5c, 0x47, 0x92,
+ 0x4a, 0x6d, 0xb9, 0xa6, 0xc7, 0x07, 0xcf, 0x07, 0xc1, 0x60, 0x7d, 0x57,
+ 0xa9, 0x8e, 0xea, 0xae, 0xae, 0xd9, 0x70, 0x1e, 0xa8, 0x2d, 0x92, 0x1b,
+ 0xa1, 0xf0, 0x0b, 0xa3, 0x70, 0x01, 0xe1, 0x8d, 0x82, 0x1e, 0x60, 0x11,
+ 0xc4, 0xf2, 0xb9, 0xbf, 0xab, 0x62, 0xe1, 0xd6, 0x9c, 0xd6, 0x96, 0x87,
+ 0xb5, 0xf6, 0x87, 0xb9, 0xd2, 0x67, 0x99, 0xd0, 0x42, 0x4a, 0x7b, 0x31,
+ 0x5d, 0x4c, 0x3f, 0xa3, 0x63, 0x59, 0xfd, 0x50, 0x02, 0x79, 0x92, 0x35,
+ 0x88, 0x41, 0x73, 0x6d, 0x73, 0xe0, 0xda, 0x47, 0xf5, 0x40, 0x1f, 0xde,
+ 0x50, 0xdf, 0x5b, 0x0e, 0xae, 0x25, 0xce, 0xe3, 0xdc, 0x49, 0xfc, 0xa9,
+ 0x29, 0xb0, 0x5f, 0x53, 0x7e, 0x93, 0xc6, 0xbd, 0xa5, 0x47, 0xd5, 0x82,
+ 0x03, 0x18, 0xf7, 0x4f, 0x70, 0xd8, 0x1f, 0x7b, 0xa1, 0x4e, 0xb0, 0x1a,
+ 0xd0, 0x1a, 0x03, 0x74, 0xec, 0x21, 0x4f, 0x52, 0x24, 0xa4, 0xa4, 0x2e,
+ 0xf5, 0xa0, 0xbb, 0x68, 0x6c, 0x6b, 0x05, 0xd3, 0xa7, 0xf6, 0x50, 0x6d,
+ 0xb6, 0xd8, 0x68, 0xae, 0x6c, 0x2f, 0x1b, 0xbd, 0x82, 0x00, 0x6f, 0x8c,
+ 0xba, 0x51, 0xad, 0xba, 0x8d, 0xae, 0x66, 0xf1, 0xb8, 0x82, 0x34, 0x32,
+ 0x75, 0xf8, 0x2a, 0xfb, 0xec, 0x14, 0x06, 0x56, 0x1d, 0xb8, 0x30, 0x34,
+ 0x38, 0x36, 0x3d, 0xc3, 0xbc, 0xba, 0x12, 0x53, 0x6c, 0xd4, 0x0d, 0x20,
+ 0x38, 0x4c, 0x41, 0x8f, 0x31, 0x05, 0x5d, 0xc3, 0xe1, 0xe3, 0xb8, 0x3f,
+ 0x95, 0x55, 0x13, 0xe9, 0x00, 0x7c, 0x07, 0x2a, 0xce, 0x14, 0x0d, 0xfe,
+ 0x26, 0x09, 0x49, 0x4b, 0x75, 0x5a, 0xfd, 0x4e, 0x9b, 0x95, 0x5f, 0xef,
+ 0x53, 0x60, 0xff, 0x00, 0xa2, 0x57, 0x9d, 0x7a, 0xbf, 0xe4, 0xad, 0xd1,
+ 0xaf, 0xa1, 0xb7, 0xe7, 0x1b, 0x57, 0xa7, 0x5e, 0xdd, 0xf4, 0xbd, 0xbe,
+ 0x2d, 0x70, 0xfb, 0xc1, 0x5e, 0x55, 0x27, 0xf6, 0x66, 0xce, 0xfb, 0xfd,
+ 0x3f, 0xfa, 0x49, 0x29, 0xf5, 0xd4, 0xc5, 0x39, 0x4c, 0x92, 0x98, 0x94,
+ 0xc5, 0x3a, 0x64, 0x94, 0xb2, 0x49, 0x24, 0x92, 0x94, 0x92, 0x49, 0x24,
+ 0xa5, 0x29, 0x02, 0xa2, 0x9c, 0x24, 0xa6, 0x43, 0x90, 0xbc, 0xc1, 0x82,
+ 0x1f, 0x68, 0x1a, 0x93, 0x75, 0x80, 0x01, 0xfd, 0x62, 0xbd, 0x3c, 0x72,
+ 0xb9, 0x7e, 0x9f, 0xd2, 0x6a, 0xc5, 0x71, 0xb5, 0xce, 0x0e, 0xb5, 0xd6,
+ 0x5a, 0x5c, 0x79, 0x10, 0xe2, 0x60, 0x09, 0xf0, 0x49, 0x4f, 0x1a, 0xfa,
+ 0x5f, 0x4f, 0x53, 0xb9, 0x96, 0xb4, 0xb5, 0xc3, 0x69, 0x20, 0xf2, 0x24,
+ 0x02, 0xb7, 0x7a, 0x6f, 0x47, 0x17, 0x91, 0x6e, 0x4b, 0xfd, 0x3a, 0x79,
+ 0x0c, 0x1a, 0xbd, 0xdf, 0x21, 0xc2, 0xa5, 0xd5, 0xbd, 0x31, 0xf5, 0xa2,
+ 0xe7, 0xb9, 0xa1, 0xcd, 0x0e, 0xa8, 0x90, 0x7c, 0x21, 0xab, 0xb1, 0xc1,
+ 0x16, 0x0a, 0xcb, 0x8b, 0xc3, 0x83, 0x89, 0x2d, 0x20, 0x01, 0x0d, 0x3c,
+ 0x0d, 0x34, 0xd1, 0x25, 0x2a, 0x96, 0x57, 0x4d, 0x62, 0xbc, 0x6a, 0x1c,
+ 0x18, 0x38, 0x11, 0xb0, 0x1f, 0x9b, 0xc8, 0x44, 0x03, 0x25, 0xda, 0x86,
+ 0x31, 0x9f, 0xd6, 0x25, 0xc7, 0xee, 0x6c, 0x7e, 0x54, 0x4d, 0xf5, 0x83,
+ 0xab, 0xc7, 0xc2, 0x65, 0x2f, 0x54, 0x13, 0x00, 0x17, 0x7c, 0x04, 0x7e,
+ 0x58, 0x49, 0x4e, 0x7d, 0xcd, 0x73, 0x6e, 0x70, 0x71, 0x05, 0xd3, 0xa9,
+ 0x02, 0x07, 0xcb, 0x95, 0xc6, 0x86, 0xff, 0x00, 0x97, 0xf2, 0x07, 0xfc,
+ 0x2b, 0xbf, 0x21, 0x5d, 0xa6, 0x44, 0xba, 0xe7, 0x3a, 0x20, 0x9e, 0xdf,
+ 0x25, 0xc7, 0xb8, 0x6d, 0xfa, 0xc5, 0x78, 0x3f, 0xe9, 0x0f, 0xe4, 0x49,
+ 0x4e, 0x8c, 0x6a, 0x88, 0xc1, 0xb9, 0xdb, 0x53, 0x46, 0xaa, 0x75, 0x0f,
+ 0xd2, 0x7c, 0x92, 0x53, 0x3f, 0x4e, 0x13, 0xb1, 0x92, 0x60, 0x29, 0x91,
+ 0xa1, 0x52, 0xa4, 0x0d, 0xc9, 0x29, 0x6f, 0x44, 0xe9, 0x2a, 0x6d, 0xa7,
+ 0x44, 0x72, 0x3d, 0xa0, 0xfc, 0x54, 0xda, 0x04, 0x7c, 0x8a, 0x4a, 0x6b,
+ 0xb6, 0x81, 0x00, 0xc7, 0x70, 0x35, 0x4e, 0x6a, 0x80, 0x7e, 0x13, 0xf8,
+ 0xa3, 0xb4, 0x0f, 0x4f, 0xfb, 0x41, 0x2d, 0xb2, 0x08, 0xf1, 0x11, 0xf8,
+ 0xa4, 0xa6, 0xbd, 0x6e, 0x3c, 0x76, 0xec, 0xb9, 0xce, 0x9a, 0xf3, 0x8f,
+ 0xf5, 0x96, 0xc6, 0x86, 0x97, 0x03, 0x73, 0xdb, 0x00, 0x4f, 0xd3, 0x05,
+ 0x74, 0x4c, 0xab, 0x73, 0x9c, 0x64, 0x8d, 0xa1, 0xc0, 0x47, 0xc5, 0x60,
+ 0x62, 0xb4, 0x7f, 0xce, 0x77, 0x87, 0x13, 0x3e, 0xbe, 0x80, 0x7c, 0x12,
+ 0x53, 0xd5, 0x83, 0x79, 0x71, 0x22, 0xbd, 0xb1, 0xfb, 0xce, 0x03, 0xf2,
+ 0x4a, 0x67, 0x57, 0x7b, 0x89, 0x2e, 0x7b, 0x19, 0xf0, 0x05, 0xdf, 0x94,
+ 0x85, 0x23, 0x65, 0x2d, 0xfa, 0x6e, 0x0d, 0xfe, 0xb9, 0x83, 0xf7, 0x1d,
+ 0x53, 0x7a, 0xcc, 0x3f, 0x40, 0x39, 0xdf, 0xd5, 0x61, 0x3f, 0x8f, 0x09,
+ 0x29, 0x8b, 0x59, 0xbf, 0x73, 0x4d, 0xf6, 0x1d, 0xbc, 0xc4, 0x30, 0x7f,
+ 0xd1, 0x6a, 0x93, 0x59, 0x47, 0x60, 0x1f, 0x1f, 0xbc, 0x4b, 0xff, 0x00,
+ 0xea, 0xa5, 0x30, 0x7e, 0x5b, 0xac, 0x01, 0xb4, 0x81, 0x54, 0x6a, 0x5e,
+ 0xe0, 0x1d, 0x3f, 0x06, 0xee, 0x53, 0x66, 0x33, 0xc1, 0x71, 0x68, 0x65,
+ 0x65, 0xda, 0xba, 0x01, 0x71, 0x27, 0xfe, 0x8a, 0x4a, 0x5c, 0x18, 0x1e,
+ 0xd0, 0x1a, 0x3c, 0xb4, 0xfc, 0x89, 0xe5, 0xc5, 0x21, 0x8a, 0x49, 0xf7,
+ 0xda, 0xf8, 0x3d, 0x9b, 0x0d, 0x1f, 0x80, 0x95, 0x21, 0x89, 0x8f, 0x1a,
+ 0xb7, 0x77, 0x9b, 0xc9, 0x77, 0xfd, 0x51, 0x29, 0x29, 0x9b, 0x64, 0xd6,
+ 0x3e, 0x01, 0x58, 0xc3, 0x3e, 0xf7, 0x7c, 0x02, 0xac, 0x08, 0x1e, 0xc0,
+ 0x21, 0xb1, 0x1a, 0x23, 0xe1, 0x69, 0x67, 0x8c, 0xb5, 0x25, 0x37, 0x9c,
+ 0x25, 0xa4, 0x78, 0xaf, 0x29, 0xf6, 0xfa, 0xdf, 0x64, 0xfc, 0xef, 0xb6,
+ 0x44, 0x79, 0x6f, 0x5e, 0xac, 0x78, 0x5e, 0x5f, 0xe8, 0x9f, 0xf9, 0xdb,
+ 0xe9, 0x46, 0x9f, 0x6d, 0xff, 0x00, 0xbf, 0xee, 0x49, 0x4f, 0xab, 0x15,
+ 0x12, 0xa6, 0x42, 0x89, 0x49, 0x4c, 0x13, 0x15, 0x22, 0x13, 0x24, 0xa6,
+ 0x29, 0xd2, 0x49, 0x25, 0x2c, 0x92, 0x74, 0x92, 0x52, 0xc9, 0xd2, 0x49,
+ 0x25, 0x2e, 0x16, 0x39, 0x70, 0x0e, 0x73, 0xbb, 0x35, 0xcf, 0xd1, 0x6c,
+ 0x05, 0xca, 0xe7, 0x61, 0x64, 0xdf, 0x6b, 0xac, 0xa9, 0xd6, 0xb9, 0x85,
+ 0xce, 0x06, 0xa6, 0x3c, 0x56, 0xdd, 0x3c, 0x7b, 0xa4, 0xa7, 0x9f, 0xce,
+ 0x87, 0xfd, 0x69, 0x78, 0x27, 0xda, 0xe7, 0xd5, 0x31, 0xe1, 0x0d, 0x5d,
+ 0xb0, 0x15, 0x8d, 0x03, 0x06, 0x9e, 0x3a, 0xfe, 0x55, 0xc2, 0x3a, 0x8b,
+ 0x6a, 0xfa, 0xc0, 0x2b, 0x0d, 0x6d, 0x4e, 0x6b, 0xab, 0x3b, 0x49, 0x36,
+ 0x01, 0x3b, 0x63, 0x5d, 0x25, 0x77, 0x66, 0x97, 0x12, 0x66, 0xc7, 0x7f,
+ 0x64, 0x06, 0xa4, 0xa4, 0x84, 0x88, 0x11, 0xa7, 0x90, 0x08, 0x45, 0xd5,
+ 0x34, 0x99, 0x2d, 0x67, 0x78, 0x9d, 0x49, 0x2a, 0x43, 0x1e, 0xa9, 0xf7,
+ 0x02, 0xff, 0x00, 0xeb, 0x12, 0x7f, 0x2a, 0x90, 0xa9, 0x8c, 0x27, 0x68,
+ 0x03, 0xc0, 0x84, 0x94, 0xd1, 0xbd, 0xe3, 0x79, 0x20, 0xc8, 0x3c, 0x15,
+ 0xc7, 0xe4, 0x4f, 0xfc, 0xe3, 0xb8, 0xf1, 0x36, 0x37, 0xf2, 0x05, 0xd8,
+ 0x65, 0xcf, 0xac, 0x77, 0x1e, 0xc3, 0xf2, 0x2e, 0x47, 0x26, 0x3f, 0xe7,
+ 0x15, 0x9e, 0x6f, 0x67, 0xe4, 0x09, 0x29, 0xd5, 0x11, 0x32, 0x35, 0x53,
+ 0xab, 0xf9, 0xd1, 0xf0, 0x4d, 0x11, 0xa0, 0x4f, 0x5f, 0xf3, 0xa1, 0x25,
+ 0x36, 0x23, 0xda, 0x52, 0xa7, 0xe9, 0x27, 0x3c, 0x25, 0x58, 0xf7, 0x24,
+ 0xa6, 0xcc, 0x7e, 0x8c, 0x7c, 0x4a, 0x71, 0xc0, 0xf8, 0x14, 0xc4, 0xc5,
+ 0x64, 0x9d, 0x00, 0x3a, 0xfc, 0x16, 0x17, 0x50, 0xeb, 0x79, 0x70, 0xfa,
+ 0xf1, 0x1b, 0xe9, 0x31, 0xa0, 0x81, 0x69, 0x12, 0xe7, 0x7c, 0x3b, 0x04,
+ 0x94, 0xef, 0x34, 0xc3, 0x48, 0x3e, 0x47, 0xf1, 0x54, 0x7a, 0x96, 0x69,
+ 0xc7, 0x60, 0x63, 0x4f, 0xbd, 0xdd, 0xbb, 0xc4, 0xf6, 0x5c, 0x8d, 0xfd,
+ 0x43, 0x39, 0xad, 0x8b, 0x32, 0x6c, 0x73, 0x9c, 0x3d, 0xc3, 0x71, 0xef,
+ 0xd9, 0x52, 0xbb, 0xa8, 0x64, 0xbc, 0xc3, 0xde, 0x5f, 0x11, 0x04, 0x9f,
+ 0x73, 0x60, 0x46, 0x85, 0x25, 0x3d, 0xde, 0x25, 0xe6, 0xc6, 0x96, 0xd5,
+ 0xf4, 0xda, 0x7f, 0x48, 0xd3, 0xd8, 0x78, 0x4a, 0xc6, 0x6d, 0x6c, 0xb3,
+ 0xeb, 0x0b, 0x9e, 0x5b, 0x3b, 0xae, 0x64, 0xb6, 0x4f, 0x90, 0xd5, 0x53,
+ 0xfa, 0xbd, 0xd5, 0x2b, 0x6e, 0x6e, 0xdc, 0x87, 0x96, 0x1b, 0x18, 0x1b,
+ 0x3f, 0x98, 0x5c, 0xd1, 0xa1, 0x77, 0x9a, 0xb6, 0xe7, 0xb8, 0xf5, 0xef,
+ 0x52, 0x87, 0xb0, 0x31, 0xcf, 0xa9, 0xe1, 0xe7, 0xdc, 0x35, 0xda, 0x92,
+ 0x9e, 0xcf, 0xd2, 0xa6, 0xb3, 0xec, 0x63, 0x5a, 0x7c, 0x80, 0x09, 0x89,
+ 0xd7, 0x8f, 0x9c, 0xa4, 0x69, 0x71, 0xfa, 0x77, 0xb8, 0xf8, 0xed, 0x0d,
+ 0x6f, 0xf7, 0xa6, 0xfb, 0x3e, 0x3f, 0x2e, 0xdc, 0xff, 0x00, 0xeb, 0x38,
+ 0x94, 0x94, 0xaf, 0x56, 0xb6, 0x99, 0x73, 0x9a, 0xdf, 0x89, 0x09, 0x7d,
+ 0xa6, 0xb3, 0xf4, 0x49, 0x77, 0xf5, 0x41, 0x2a, 0x4d, 0xae, 0xa6, 0x11,
+ 0xb2, 0xb6, 0x8f, 0x30, 0x02, 0x90, 0x7c, 0x98, 0x1d, 0x92, 0x53, 0x11,
+ 0x63, 0xc8, 0xf6, 0x54, 0xf3, 0xfd, 0x68, 0x6f, 0xe5, 0x2a, 0x25, 0xf9,
+ 0x3a, 0xfe, 0x8d, 0x8d, 0xf8, 0xb8, 0xbb, 0xf2, 0x00, 0x88, 0x6c, 0x68,
+ 0xd4, 0x98, 0x08, 0x27, 0x26, 0xa0, 0xe8, 0xde, 0x0f, 0x90, 0xf7, 0x7e,
+ 0x44, 0x94, 0xcd, 0xa1, 0xc4, 0x0d, 0xf1, 0xba, 0x3d, 0xd1, 0xc2, 0x36,
+ 0x0c, 0x0b, 0x00, 0x06, 0x46, 0xb0, 0x84, 0xc7, 0xee, 0x01, 0xc2, 0x75,
+ 0xd0, 0x48, 0x8f, 0xca, 0x9f, 0xa7, 0x37, 0x69, 0x6f, 0x94, 0x82, 0x3c,
+ 0xe5, 0x25, 0x3a, 0x6e, 0xfa, 0x27, 0xc9, 0x79, 0xf6, 0xc7, 0x7f, 0xcf,
+ 0xcf, 0x4b, 0xf3, 0x7e, 0xd5, 0xea, 0x47, 0xf6, 0x25, 0x7a, 0x01, 0x3e,
+ 0xd3, 0xf0, 0x5c, 0x4f, 0xa5, 0xff, 0x00, 0xaf, 0x0a, 0x7b, 0x47, 0xa9,
+ 0xff, 0x00, 0x81, 0xc2, 0x4a, 0x7b, 0xf2, 0x98, 0xa9, 0x26, 0x29, 0x29,
+ 0x81, 0x4c, 0xa4, 0x54, 0x4a, 0x4a, 0x62, 0x92, 0x72, 0x9a, 0x12, 0x52,
+ 0x92, 0x4e, 0x92, 0x4a, 0x59, 0x24, 0xe9, 0x24, 0xa5, 0x05, 0x92, 0xc6,
+ 0xea, 0xe8, 0xe4, 0xbd, 0xeb, 0x58, 0x2c, 0x66, 0xb3, 0x75, 0x9b, 0xc1,
+ 0x23, 0x6b, 0xec, 0x1b, 0x7b, 0x12, 0x4c, 0x6b, 0xf0, 0x84, 0x94, 0xf2,
+ 0x99, 0xee, 0x2d, 0xfa, 0xd6, 0xe0, 0xd6, 0xef, 0x3b, 0xa9, 0xee, 0x07,
+ 0x66, 0xae, 0xc0, 0xbe, 0xf9, 0xd4, 0x31, 0xa3, 0xe2, 0x5d, 0xfd, 0xcb,
+ 0x8a, 0xcc, 0x0e, 0xa7, 0xeb, 0x3f, 0xe9, 0x9d, 0xb9, 0xe4, 0xd4, 0x49,
+ 0x03, 0x99, 0x0d, 0xe0, 0x05, 0xda, 0x3e, 0xd2, 0x4f, 0xb5, 0x8e, 0x20,
+ 0x79, 0x47, 0xfd, 0x54, 0x24, 0xa5, 0xe6, 0xd3, 0xfe, 0x12, 0x3f, 0xaa,
+ 0xd0, 0x3f, 0x2c, 0xa8, 0x8a, 0xa4, 0xfe, 0x91, 0xcf, 0xb0, 0x9e, 0x25,
+ 0xc4, 0x0f, 0xb9, 0xb0, 0x14, 0x5d, 0x75, 0x9f, 0xba, 0x01, 0xfe, 0x53,
+ 0xbf, 0xb8, 0x21, 0xfd, 0xa2, 0xc3, 0xa8, 0x31, 0x1f, 0xc9, 0xfe, 0xf2,
+ 0x92, 0x91, 0xe4, 0xd6, 0xd6, 0xbc, 0xb5, 0xa3, 0x68, 0x8e, 0xde, 0x6b,
+ 0x90, 0xc9, 0x69, 0xaf, 0xae, 0xb9, 0xa4, 0x97, 0x16, 0x9a, 0xc6, 0xe3,
+ 0xc9, 0xd1, 0xbc, 0xae, 0xba, 0xc7, 0x1b, 0x3d, 0xee, 0x32, 0x4e, 0x9f,
+ 0xeb, 0x0b, 0x91, 0xea, 0x7e, 0xde, 0xb7, 0x61, 0x1c, 0xfb, 0x08, 0xf9,
+ 0x00, 0x92, 0x9d, 0xa3, 0xca, 0x93, 0x3f, 0x9d, 0x67, 0xc1, 0x28, 0x33,
+ 0xaa, 0x93, 0x63, 0xd4, 0x6a, 0x4a, 0x4e, 0x46, 0x8a, 0x0e, 0xb5, 0x94,
+ 0x82, 0xf7, 0x98, 0x68, 0x45, 0x72, 0xcf, 0xcd, 0x78, 0x73, 0x9b, 0x58,
+ 0xf1, 0xff, 0x00, 0x62, 0x4a, 0x6d, 0xe2, 0xe2, 0xe5, 0x75, 0x32, 0x64,
+ 0xfa, 0x78, 0xfc, 0x6d, 0x6f, 0x2e, 0xf9, 0xa3, 0xe6, 0x74, 0xba, 0xaa,
+ 0x64, 0x10, 0xd8, 0x68, 0x80, 0x00, 0x5a, 0x7d, 0x28, 0x37, 0x1f, 0x05,
+ 0xa3, 0x6e, 0xd2, 0xd1, 0xf9, 0x55, 0x1e, 0xad, 0x93, 0x50, 0x64, 0xb1,
+ 0xed, 0x2f, 0x98, 0xda, 0x5c, 0x24, 0x8e, 0xe9, 0x29, 0xe5, 0x7a, 0x8e,
+ 0x26, 0x38, 0x96, 0xed, 0x13, 0xf0, 0x58, 0x39, 0x18, 0x45, 0xa0, 0xb9,
+ 0x83, 0x8e, 0xcb, 0xa9, 0xcc, 0xaa, 0x93, 0x8c, 0xdb, 0x5e, 0xe9, 0xbe,
+ 0xd2, 0x48, 0x68, 0xec, 0xce, 0x02, 0xca, 0xb5, 0x82, 0x22, 0x0c, 0x1f,
+ 0x24, 0x94, 0xe2, 0x53, 0x50, 0x7b, 0x5c, 0x47, 0xd2, 0x6b, 0x49, 0x23,
+ 0xc8, 0x77, 0x1f, 0x05, 0xa9, 0x60, 0x38, 0xd9, 0x6c, 0x35, 0x38, 0xb8,
+ 0x43, 0x08, 0x27, 0xf3, 0xbb, 0xe8, 0xa8, 0x5d, 0x59, 0xc7, 0xb6, 0x78,
+ 0x9d, 0x41, 0x57, 0xab, 0xb1, 0xb7, 0x7a, 0x2f, 0x1f, 0x9a, 0xdd, 0xa4,
+ 0x78, 0x41, 0x49, 0x4f, 0xa0, 0xb3, 0x29, 0x96, 0x31, 0xaf, 0x6b, 0x5d,
+ 0x2e, 0x68, 0x74, 0x18, 0x1c, 0x89, 0xf3, 0x50, 0x37, 0x58, 0x49, 0xfa,
+ 0x2d, 0xf0, 0xe4, 0xff, 0x00, 0x72, 0x4c, 0x15, 0x55, 0x5b, 0x1a, 0x5e,
+ 0xd6, 0x80, 0xd0, 0x00, 0x98, 0x3a, 0x05, 0x11, 0x65, 0x64, 0xe9, 0xee,
+ 0x3f, 0xc9, 0x05, 0xdf, 0x90, 0x24, 0xa6, 0x7e, 0xf2, 0x06, 0xeb, 0x0f,
+ 0xc1, 0xa0, 0x0f, 0xcb, 0x2a, 0x4c, 0xad, 0xa7, 0xdc, 0x77, 0x9f, 0x12,
+ 0xe7, 0x1f, 0xe1, 0x0a, 0x2d, 0x7b, 0x88, 0xd2, 0x97, 0x0f, 0x19, 0x86,
+ 0xfe, 0x52, 0x88, 0x1d, 0x71, 0x6e, 0x8c, 0x63, 0x7c, 0xcb, 0xa4, 0x8f,
+ 0x90, 0x6a, 0x4a, 0x47, 0xfa, 0x20, 0xf2, 0x03, 0x04, 0xf8, 0xc4, 0x9f,
+ 0xc5, 0x4b, 0xdd, 0xc7, 0x01, 0x31, 0x16, 0x92, 0x5c, 0x5e, 0xd0, 0x4f,
+ 0xee, 0xb7, 0xfb, 0xca, 0x70, 0xc7, 0x1f, 0xa5, 0x63, 0xcf, 0xcc, 0x37,
+ 0xfe, 0xa4, 0x04, 0x94, 0x96, 0xb6, 0x9d, 0x9a, 0xf2, 0x09, 0x4f, 0x8b,
+ 0xed, 0xbb, 0xe6, 0x47, 0xde, 0x54, 0x6a, 0x01, 0xad, 0x2d, 0x1c, 0x03,
+ 0xdc, 0x93, 0xf8, 0x99, 0x52, 0x64, 0x7d, 0xa0, 0x1e, 0x3d, 0xc3, 0xf1,
+ 0x49, 0x4e, 0x90, 0x12, 0xd2, 0x3c, 0x57, 0x2b, 0xe9, 0x8f, 0xf9, 0xef,
+ 0xea, 0x76, 0xfb, 0x2c, 0xcf, 0xcb, 0x6a, 0xea, 0xc2, 0xc6, 0xfb, 0x3f,
+ 0xfd, 0x93, 0x7a, 0xd1, 0xff, 0x00, 0x68, 0xe3, 0xe7, 0xea, 0x24, 0xa7,
+ 0xa2, 0x29, 0x93, 0x94, 0xc9, 0x29, 0x89, 0x4c, 0x9c, 0xa6, 0x49, 0x4b,
+ 0x26, 0x52, 0x4d, 0x09, 0x29, 0x64, 0xe9, 0x42, 0x74, 0x94, 0xb2, 0x49,
+ 0xd2, 0x84, 0x94, 0xb0, 0x1a, 0xac, 0x5a, 0x5c, 0x5c, 0x1c, 0x7b, 0x9b,
+ 0xad, 0x9f, 0x93, 0x8a, 0xdc, 0x1c, 0xac, 0x2c, 0x59, 0xf7, 0x81, 0xda,
+ 0xfb, 0xbf, 0xea, 0xca, 0x4a, 0x79, 0x5e, 0xa2, 0xfd, 0x9f, 0x5a, 0x83,
+ 0x89, 0x81, 0xfa, 0x12, 0x49, 0xf8, 0x35, 0x75, 0x6f, 0xba, 0x90, 0x74,
+ 0xb0, 0x13, 0xe0, 0x0c, 0xae, 0x57, 0xaa, 0xd6, 0xc3, 0xf5, 0x9d, 0xbb,
+ 0xda, 0x1c, 0x22, 0xad, 0x0f, 0x1d, 0x97, 0x69, 0xb4, 0x34, 0xfb, 0x61,
+ 0xbf, 0x01, 0xa7, 0xe0, 0x92, 0x9a, 0x4e, 0x25, 0xda, 0x80, 0xe3, 0xf0,
+ 0x69, 0xfe, 0x2a, 0x02, 0x9b, 0x1d, 0xf9, 0x87, 0xe2, 0xe2, 0x07, 0xf7,
+ 0xad, 0x02, 0xe0, 0x06, 0xa6, 0x3f, 0x04, 0x23, 0x75, 0x0d, 0x92, 0xe7,
+ 0x89, 0xf8, 0xcf, 0xe4, 0x49, 0x4d, 0x57, 0x52, 0x6a, 0x68, 0x63, 0xa2,
+ 0x7e, 0x96, 0x86, 0x57, 0x27, 0xd5, 0x9b, 0xfe, 0x5e, 0xf8, 0x8a, 0xff,
+ 0x00, 0x82, 0xeb, 0x72, 0x1e, 0xdb, 0x1c, 0x1c, 0xce, 0x00, 0x8e, 0x08,
+ 0xfc, 0xab, 0x93, 0xeb, 0x32, 0x3a, 0xe3, 0x7c, 0xd9, 0x5f, 0xe5, 0x49,
+ 0x4e, 0xc1, 0x02, 0x52, 0x6f, 0xf3, 0x8d, 0x49, 0xdc, 0xa4, 0xd9, 0x2f,
+ 0x67, 0xc5, 0x25, 0x36, 0x4a, 0xc6, 0xb0, 0xec, 0xea, 0x81, 0xae, 0xe0,
+ 0x39, 0xb0, 0x3b, 0x6a, 0x56, 0xda, 0xa1, 0x65, 0x00, 0xf5, 0x26, 0x17,
+ 0x49, 0x6b, 0x98, 0x49, 0x68, 0x12, 0x49, 0x6f, 0xd0, 0xff, 0x00, 0xa4,
+ 0x42, 0x4a, 0x77, 0xf2, 0xad, 0xca, 0xa3, 0x1c, 0xb7, 0x1d, 0x8d, 0x71,
+ 0x7b, 0x48, 0x2e, 0x7b, 0xb6, 0x35, 0xa2, 0x3c, 0xa4, 0xca, 0xe4, 0x7a,
+ 0x57, 0x47, 0xea, 0x9d, 0x43, 0xab, 0x54, 0xfb, 0xa9, 0x02, 0xa6, 0xd8,
+ 0x1d, 0x73, 0xfd, 0xc1, 0xbb, 0x5a, 0x64, 0x81, 0xbb, 0x53, 0x2b, 0xb8,
+ 0x07, 0x1e, 0xca, 0x48, 0x71, 0xdc, 0xe0, 0x60, 0x81, 0xe4, 0x81, 0x7f,
+ 0xed, 0x1c, 0x76, 0xba, 0xcc, 0x0a, 0xdb, 0x64, 0xb0, 0xed, 0x6b, 0xbb,
+ 0xbf, 0xf3, 0x41, 0x49, 0x4f, 0x33, 0xf5, 0xc2, 0x8f, 0x4b, 0xa9, 0x9f,
+ 0x40, 0x43, 0x1e, 0xd0, 0x63, 0xb4, 0x8d, 0x34, 0x59, 0x2d, 0x7d, 0xac,
+ 0x10, 0xe7, 0x35, 0xed, 0xec, 0x0b, 0x75, 0x5a, 0x5d, 0x68, 0x75, 0xc3,
+ 0xe9, 0x5f, 0xd4, 0x9b, 0x48, 0xb9, 0xc4, 0x0b, 0x43, 0x4e, 0xe0, 0xd6,
+ 0x99, 0x80, 0xd1, 0x3e, 0x4a, 0xa3, 0x76, 0x39, 0xba, 0x8d, 0xae, 0xf0,
+ 0x49, 0x4e, 0x2f, 0x56, 0x6f, 0xba, 0xb7, 0x01, 0x00, 0xca, 0x06, 0x0d,
+ 0xcd, 0x6d, 0x81, 0x8e, 0xfa, 0x27, 0xf0, 0x2b, 0x43, 0xab, 0x86, 0x36,
+ 0x91, 0xf3, 0x21, 0x62, 0xd7, 0x3b, 0x81, 0x49, 0x4f, 0xac, 0x63, 0x36,
+ 0xb1, 0x8f, 0x51, 0x6b, 0x40, 0x96, 0x37, 0x50, 0x07, 0x80, 0x53, 0x27,
+ 0xb4, 0xaa, 0x5d, 0x39, 0xf6, 0xdd, 0xd3, 0xf1, 0x9e, 0x5f, 0xa3, 0xab,
+ 0x6e, 0xa2, 0x06, 0xa0, 0x44, 0x70, 0x51, 0x8b, 0x00, 0xe4, 0xb9, 0xc7,
+ 0xcd, 0xc7, 0xf8, 0x42, 0x4a, 0x4a, 0xe2, 0xc0, 0x35, 0x30, 0x7c, 0xf4,
+ 0x42, 0x75, 0xf5, 0x0f, 0xcf, 0x1f, 0x23, 0x3f, 0x91, 0x0c, 0x32, 0xb2,
+ 0xe3, 0x0d, 0x69, 0x23, 0x99, 0x1b, 0x8f, 0xf1, 0x53, 0xda, 0x5a, 0x20,
+ 0xbf, 0x68, 0x3f, 0x04, 0x94, 0xb1, 0xc9, 0xae, 0x23, 0x5f, 0x90, 0x29,
+ 0x8e, 0x51, 0x02, 0x36, 0x68, 0x7c, 0x48, 0xfe, 0x12, 0x9f, 0xd3, 0xdd,
+ 0x04, 0x19, 0x09, 0xbd, 0x00, 0xde, 0x61, 0xa0, 0xff, 0x00, 0xaf, 0x72,
+ 0x12, 0x52, 0x6c, 0x4b, 0x77, 0xb1, 0xc4, 0x8f, 0xce, 0x8e, 0xff, 0x00,
+ 0xc5, 0x17, 0x50, 0xf9, 0xf0, 0x20, 0xa1, 0xe1, 0x8a, 0xe1, 0xc1, 0x8e,
+ 0x0e, 0x1a, 0x13, 0xb4, 0x83, 0xf9, 0x11, 0x5c, 0x3d, 0xce, 0xf1, 0x30,
+ 0x92, 0x9d, 0x46, 0xea, 0xaa, 0xfa, 0x5f, 0xe5, 0x2f, 0x57, 0xfe, 0x07,
+ 0x6f, 0xfd, 0x35, 0x66, 0xb3, 0x21, 0x46, 0x3f, 0x4d, 0x3e, 0x51, 0xf8,
+ 0xca, 0x4a, 0x6d, 0x94, 0xc9, 0xd2, 0x29, 0x29, 0x8a, 0x65, 0x24, 0xc9,
+ 0x29, 0x8a, 0x49, 0xd3, 0xa4, 0xa6, 0x30, 0x9d, 0x24, 0x92, 0x52, 0x92,
+ 0x4f, 0x1e, 0x29, 0xb8, 0x49, 0x4a, 0x1f, 0x05, 0x8b, 0x8e, 0x36, 0x9b,
+ 0x3f, 0xe3, 0x6c, 0xfc, 0x5c, 0x56, 0xd8, 0x04, 0xac, 0x80, 0xd2, 0xd7,
+ 0x58, 0x39, 0xfd, 0x23, 0xcf, 0xde, 0x92, 0x9e, 0x2f, 0xaf, 0x58, 0xf6,
+ 0x7d, 0x62, 0x05, 0xa6, 0x0e, 0xda, 0x8c, 0xf7, 0xe0, 0x2e, 0xa9, 0xcf,
+ 0x79, 0x79, 0x6b, 0xb7, 0x47, 0x62, 0x5d, 0xcf, 0x8e, 0x80, 0xf6, 0x5c,
+ 0xa7, 0xd6, 0x7d, 0xec, 0xfa, 0xc1, 0xec, 0x12, 0x4d, 0x75, 0x91, 0xf7,
+ 0x2e, 0x99, 0xb5, 0xe5, 0x38, 0x87, 0x39, 0x8d, 0x6b, 0xbb, 0x13, 0xda,
+ 0x79, 0xf1, 0x49, 0x4c, 0xdc, 0xd1, 0x32, 0x40, 0xfb, 0xa5, 0x22, 0x76,
+ 0xf7, 0xd0, 0xf8, 0x27, 0x38, 0xb6, 0x90, 0x0b, 0xec, 0xf6, 0xff, 0x00,
+ 0x27, 0xfd, 0x89, 0x0c, 0x46, 0x9d, 0x39, 0xef, 0x2e, 0x93, 0xa7, 0xcc,
+ 0xa4, 0xa6, 0x25, 0xc1, 0xc3, 0x99, 0x3c, 0x2e, 0x57, 0xeb, 0x01, 0xdb,
+ 0xd5, 0x98, 0xef, 0xf8, 0x36, 0x9f, 0xb8, 0x95, 0xd5, 0xd8, 0xd6, 0x32,
+ 0x5a, 0xc1, 0x1f, 0x25, 0xca, 0x7d, 0x63, 0x00, 0x75, 0x2a, 0xff, 0x00,
+ 0xe2, 0xc7, 0xe5, 0x29, 0x29, 0xd8, 0x6f, 0xb8, 0x35, 0xdc, 0x48, 0x06,
+ 0x3e, 0x2a, 0x6d, 0xfa, 0x6c, 0x50, 0x69, 0x24, 0x0f, 0x80, 0xfc, 0x8a,
+ 0x60, 0x6a, 0x0f, 0x82, 0x4a, 0x6c, 0x17, 0x05, 0x4a, 0xfb, 0x83, 0x33,
+ 0xf1, 0x2f, 0x6d, 0x81, 0x81, 0x8f, 0x0c, 0x79, 0x3a, 0x8d, 0xaf, 0x3b,
+ 0x5d, 0x28, 0xd6, 0x3a, 0x58, 0x4c, 0xc6, 0x9c, 0xae, 0x7f, 0xa9, 0x8c,
+ 0x7f, 0x51, 0xce, 0x63, 0xf7, 0x3a, 0x23, 0xe0, 0xe1, 0xa4, 0xa4, 0xa7,
+ 0xad, 0xb2, 0xfc, 0x9a, 0xb3, 0xab, 0xb3, 0x6c, 0x52, 0xca, 0x9e, 0x32,
+ 0x09, 0x31, 0x0d, 0x6b, 0xce, 0xd7, 0x47, 0x92, 0xb2, 0x73, 0xf2, 0x5e,
+ 0x45, 0x74, 0xb5, 0xa1, 0x83, 0x9b, 0xac, 0x78, 0x6b, 0x41, 0x3a, 0x8d,
+ 0x39, 0x2b, 0x3e, 0xfc, 0x8f, 0xb4, 0xd9, 0x8d, 0xb4, 0xfe, 0x8f, 0x23,
+ 0x12, 0xd0, 0x5f, 0xfb, 0xd2, 0x1a, 0xf5, 0x9d, 0xf5, 0x7f, 0x3b, 0xed,
+ 0x58, 0xd6, 0x60, 0xdc, 0xff, 0x00, 0xd3, 0x62, 0xb8, 0xb4, 0xb8, 0xf2,
+ 0xea, 0xff, 0x00, 0x34, 0xfc, 0xb8, 0x49, 0x4d, 0x6e, 0xaf, 0x91, 0x97,
+ 0x79, 0x8b, 0xac, 0xad, 0xef, 0x63, 0x8c, 0x86, 0xbc, 0xbb, 0x43, 0xc7,
+ 0xe6, 0x8e, 0x15, 0x16, 0xbd, 0xc0, 0x80, 0x5b, 0xb6, 0x3c, 0xe5, 0x5a,
+ 0xea, 0x58, 0xd5, 0xe3, 0xe4, 0x4d, 0x4e, 0xdc, 0x5d, 0xa9, 0x68, 0x1a,
+ 0x05, 0x42, 0xdb, 0x83, 0x04, 0x9d, 0x12, 0x53, 0x57, 0xac, 0x3f, 0x73,
+ 0x18, 0x3c, 0x4a, 0xa2, 0x68, 0x7b, 0x19, 0x5b, 0x88, 0xfe, 0x72, 0x63,
+ 0xe4, 0x61, 0x59, 0xaa, 0xca, 0xf2, 0xb3, 0xd8, 0xdc, 0xa7, 0x8a, 0x71,
+ 0xc1, 0xe5, 0xdc, 0x69, 0x3f, 0x94, 0xab, 0x7d, 0x4d, 0xd8, 0xf7, 0x67,
+ 0x83, 0x41, 0x06, 0x8a, 0x9b, 0x1e, 0xdf, 0xa2, 0x3c, 0x00, 0xf1, 0x49,
+ 0x4f, 0x61, 0xd3, 0x6d, 0x7d, 0x7d, 0x3f, 0x1c, 0x32, 0xa7, 0xb9, 0xbe,
+ 0x9b, 0x04, 0x68, 0x3b, 0x72, 0x35, 0x56, 0x5f, 0x76, 0x48, 0x61, 0x22,
+ 0xa6, 0x01, 0xd8, 0xb9, 0xff, 0x00, 0x4a, 0x7c, 0x36, 0xff, 0x00, 0x7a,
+ 0xad, 0xd3, 0x47, 0xad, 0xd3, 0x71, 0xc3, 0x9b, 0xec, 0x0d, 0x6c, 0x12,
+ 0x79, 0x01, 0x5d, 0x0e, 0xa5, 0xb3, 0x24, 0x4f, 0x6d, 0x52, 0x53, 0x59,
+ 0xb4, 0xbd, 0xf2, 0x5a, 0x40, 0x7b, 0xc6, 0xad, 0x68, 0x27, 0x8f, 0x32,
+ 0xe0, 0x84, 0xea, 0xaf, 0x63, 0xe1, 0x84, 0x83, 0x1c, 0x92, 0x07, 0xf0,
+ 0x2a, 0xe3, 0x0b, 0x5b, 0xb8, 0x89, 0x97, 0x9e, 0xc0, 0x90, 0xa3, 0xee,
+ 0x70, 0xd1, 0x87, 0x4e, 0x26, 0x07, 0xe5, 0x29, 0x29, 0x17, 0xa4, 0xed,
+ 0x9e, 0xe2, 0x5e, 0xfe, 0xe1, 0xee, 0x77, 0xf0, 0x2a, 0x4c, 0xa9, 0x90,
+ 0x09, 0x63, 0x01, 0x3e, 0x53, 0xf8, 0x94, 0x40, 0xdb, 0x1c, 0xe0, 0x76,
+ 0x01, 0xf1, 0x77, 0xf7, 0x02, 0x9c, 0xd6, 0xf9, 0x82, 0xe6, 0xb7, 0xc8,
+ 0x02, 0x7f, 0x88, 0x49, 0x49, 0x31, 0xff, 0x00, 0x39, 0xbc, 0xc0, 0xd3,
+ 0x40, 0x07, 0xe0, 0x8e, 0xe1, 0xae, 0x9c, 0x90, 0x85, 0x8e, 0xdd, 0xa5,
+ 0xc4, 0x9d, 0xc2, 0x3c, 0x21, 0x10, 0x88, 0x74, 0xf8, 0xe8, 0x92, 0x9b,
+ 0xf8, 0xe6, 0x58, 0x3e, 0x03, 0xf2, 0x29, 0x7f, 0x84, 0xf9, 0xff, 0x00,
+ 0x04, 0x2c, 0x53, 0x35, 0x30, 0xf9, 0x04, 0x6f, 0xf0, 0x92, 0x92, 0x9b,
+ 0x25, 0x31, 0x4e, 0x53, 0x24, 0xa5, 0x93, 0x27, 0x4b, 0xe4, 0x92, 0x96,
+ 0x49, 0x25, 0x57, 0xa9, 0x66, 0x7d, 0x8f, 0x18, 0xbc, 0x10, 0x2c, 0x76,
+ 0x95, 0x83, 0xdc, 0xf7, 0x3f, 0x20, 0x92, 0x92, 0x3f, 0x26, 0x9a, 0xdc,
+ 0xd6, 0x39, 0xc0, 0x3d, 0xe4, 0x86, 0x83, 0xc9, 0xdb, 0xc9, 0x4f, 0x76,
+ 0x4d, 0x14, 0x56, 0x6d, 0xbe, 0xc6, 0xd6, 0xc1, 0xcb, 0x9c, 0x60, 0x2f,
+ 0x3f, 0xea, 0x99, 0x46, 0xcb, 0xa5, 0xcf, 0x2f, 0x78, 0x33, 0xf8, 0xf8,
+ 0x2c, 0xbb, 0x3a, 0x9e, 0x4e, 0x53, 0xe9, 0xab, 0x2a, 0xe7, 0x11, 0x41,
+ 0x01, 0xa1, 0xc7, 0x80, 0x3c, 0x12, 0x53, 0xe8, 0xae, 0xeb, 0xf8, 0x4e,
+ 0x1f, 0xa1, 0xf5, 0x6c, 0x6c, 0x80, 0xeb, 0x19, 0x53, 0xc8, 0x03, 0xc4,
+ 0x69, 0xaf, 0x82, 0x7a, 0x3a, 0xe6, 0x05, 0xce, 0xd5, 0xe6, 0x96, 0xf0,
+ 0xc6, 0x58, 0xd7, 0x31, 0xef, 0x3c, 0x7e, 0x70, 0xd7, 0xe4, 0xbc, 0xcb,
+ 0x23, 0xab, 0xdf, 0xbe, 0x1b, 0x6d, 0x9b, 0x9b, 0xa0, 0x21, 0xe6, 0x46,
+ 0xb3, 0xa1, 0x47, 0xc0, 0xfa, 0xd9, 0x9d, 0x8b, 0x69, 0x75, 0xb1, 0x92,
+ 0xc8, 0x80, 0xdb, 0xbd, 0xe4, 0x01, 0xd8, 0x4c, 0x8f, 0xc1, 0x25, 0x3e,
+ 0xaf, 0x55, 0xa6, 0xcd, 0x43, 0x0b, 0x5b, 0xd8, 0xbb, 0x4f, 0xc1, 0x66,
+ 0x1d, 0x2d, 0xb7, 0xfe, 0x31, 0xcb, 0x07, 0xa6, 0x7f, 0x8c, 0x1c, 0x4b,
+ 0x0b, 0x59, 0x95, 0x4b, 0xb1, 0xda, 0x39, 0x73, 0x7d, 0xec, 0x1f, 0xd9,
+ 0x89, 0x0b, 0x72, 0x9b, 0xe8, 0xcb, 0xad, 0xf7, 0xd0, 0xf6, 0xd9, 0x55,
+ 0x8f, 0x2e, 0x6d, 0x8c, 0x32, 0x0e, 0x89, 0x29, 0xe2, 0xfe, 0xb3, 0x12,
+ 0xdf, 0xac, 0x40, 0xc4, 0xcd, 0x75, 0xc0, 0x5d, 0x6f, 0xda, 0x9c, 0x07,
+ 0xd0, 0x02, 0x06, 0xbb, 0x9c, 0x34, 0x8f, 0x84, 0xae, 0x4b, 0xeb, 0x69,
+ 0x15, 0xf5, 0xf0, 0xe0, 0x7f, 0xc1, 0x33, 0xf8, 0xae, 0x8c, 0xdd, 0x57,
+ 0xa4, 0x1c, 0xda, 0x1f, 0x63, 0x61, 0xa7, 0xe8, 0x1d, 0xbe, 0x3d, 0xd2,
+ 0x52, 0x77, 0xdb, 0x63, 0x9a, 0x1c, 0x5c, 0xd0, 0xc1, 0xae, 0x92, 0x7f,
+ 0xb9, 0x43, 0xd7, 0x68, 0x1a, 0xda, 0x1b, 0x3a, 0x88, 0x1d, 0xbf, 0x15,
+ 0x1a, 0xb2, 0x3e, 0xd0, 0xd7, 0x01, 0x8e, 0xed, 0xae, 0x90, 0x08, 0x2d,
+ 0x12, 0x7c, 0xc1, 0x4c, 0xdd, 0x09, 0x03, 0x1a, 0xb0, 0x41, 0x13, 0xb9,
+ 0xe4, 0xc7, 0x7d, 0x20, 0x24, 0xa5, 0x1b, 0x05, 0xa7, 0xda, 0xe2, 0xe0,
+ 0x34, 0x71, 0x3e, 0x3e, 0x50, 0xb9, 0xaf, 0xac, 0x8c, 0x73, 0xb3, 0xe8,
+ 0xd8, 0xd2, 0xe3, 0xe9, 0xf0, 0xd0, 0x4f, 0x73, 0xe0, 0xba, 0x6f, 0x4d,
+ 0xec, 0x9d, 0xc1, 0xa0, 0x9d, 0x46, 0xc0, 0x63, 0xe7, 0xb9, 0x13, 0x05,
+ 0xff, 0x00, 0xad, 0x5a, 0xce, 0xfe, 0x9b, 0x1d, 0xf8, 0xb8, 0x24, 0xa7,
+ 0x2a, 0xaa, 0xb2, 0x1c, 0x1b, 0x15, 0x3f, 0x50, 0x3f, 0x34, 0xf8, 0x23,
+ 0xb7, 0x0b, 0x34, 0x9f, 0xe6, 0xc8, 0x1e, 0x64, 0x2d, 0xd2, 0x0f, 0x7d,
+ 0x02, 0x01, 0xc8, 0xa2, 0xa9, 0xf5, 0x6f, 0x63, 0x75, 0xd3, 0x73, 0x9a,
+ 0xd8, 0xfc, 0x52, 0x53, 0x9a, 0x7a, 0x56, 0x55, 0x8c, 0xda, 0xe2, 0xd6,
+ 0x83, 0xe7, 0x3f, 0xc1, 0x56, 0xbb, 0xea, 0xb1, 0xb4, 0x40, 0xbc, 0x30,
+ 0x9f, 0xa4, 0xed, 0xbb, 0x89, 0x5a, 0xb6, 0x75, 0xae, 0x93, 0x50, 0x3b,
+ 0xf3, 0x2a, 0xd3, 0x90, 0x1d, 0xbb, 0xfe, 0xa6, 0x55, 0x57, 0x7d, 0x65,
+ 0xe8, 0xed, 0x3a, 0x5e, 0x5f, 0xe4, 0xc6, 0x38, 0xff, 0x00, 0x04, 0x94,
+ 0x92, 0x9e, 0x98, 0x31, 0xf1, 0xf0, 0x69, 0x73, 0xcb, 0xdf, 0x8f, 0xba,
+ 0xb6, 0xba, 0x3e, 0x93, 0x5c, 0x1d, 0x00, 0xae, 0x63, 0xac, 0x63, 0xfd,
+ 0x8d, 0xd7, 0x3f, 0x1c, 0x9a, 0xf2, 0x31, 0x6c, 0x8d, 0xed, 0xef, 0x5b,
+ 0xf9, 0x07, 0xe0, 0xef, 0xca, 0xbb, 0x1c, 0x2c, 0xaa, 0xb3, 0xdb, 0x56,
+ 0x45, 0x6d, 0x7b, 0x6b, 0x2e, 0x3e, 0x9e, 0xf0, 0x5b, 0x31, 0xa6, 0xe8,
+ 0xf0, 0x5c, 0xb7, 0xd6, 0x2a, 0xdc, 0xdc, 0x9c, 0xa6, 0x34, 0xe8, 0xf0,
+ 0x09, 0xef, 0x20, 0x90, 0x7f, 0x82, 0x4a, 0x70, 0xaa, 0xca, 0xce, 0xca,
+ 0x71, 0x3b, 0xc4, 0x0e, 0x5c, 0x75, 0xd0, 0x20, 0x12, 0xe7, 0xfb, 0x9c,
+ 0x77, 0x14, 0x40, 0xe3, 0x8d, 0x51, 0x1c, 0x3d, 0xe3, 0x6c, 0x76, 0x83,
+ 0xdd, 0x13, 0x0f, 0x0a, 0xfc, 0xa8, 0x0c, 0x05, 0xb5, 0xf7, 0xb0, 0x8d,
+ 0x23, 0xcb, 0xc5, 0x25, 0x22, 0xc0, 0xc3, 0x7e, 0x4e, 0x47, 0xd1, 0x0e,
+ 0xad, 0xa7, 0xde, 0x5d, 0xa8, 0xf8, 0x2d, 0x2c, 0x7c, 0x21, 0x66, 0x40,
+ 0x6d, 0x75, 0x86, 0x61, 0x34, 0x49, 0x71, 0xe5, 0xee, 0x07, 0x9e, 0x64,
+ 0x05, 0xa5, 0x6e, 0x3d, 0x58, 0x38, 0x5b, 0x31, 0x9b, 0x2e, 0x78, 0x86,
+ 0x09, 0xd7, 0x73, 0xbb, 0xb9, 0xc7, 0xc3, 0x92, 0x55, 0xaf, 0xab, 0xbd,
+ 0x07, 0x2e, 0xdc, 0x36, 0x58, 0x75, 0x75, 0xce, 0x9b, 0x2d, 0x71, 0x91,
+ 0xa6, 0x9f, 0x31, 0x1c, 0x24, 0xa6, 0x78, 0xae, 0x75, 0x55, 0x32, 0x8a,
+ 0xab, 0x6e, 0xc6, 0x4c, 0x17, 0x0d, 0xc4, 0x0f, 0x89, 0x57, 0x69, 0xb6,
+ 0xf2, 0xe0, 0xd6, 0x0d, 0xee, 0x3d, 0x9a, 0x3f, 0xb9, 0x6a, 0x9c, 0x4a,
+ 0x28, 0xc7, 0xfb, 0x1e, 0x38, 0x1e, 0xa1, 0xd6, 0xeb, 0x9c, 0x35, 0x6b,
+ 0x46, 0xb2, 0x7f, 0x80, 0x52, 0xaa, 0xca, 0x71, 0x98, 0xfb, 0x2b, 0x01,
+ 0xb8, 0xf5, 0xb6, 0x3d, 0x48, 0x83, 0x63, 0x92, 0x53, 0x9e, 0xdb, 0x8b,
+ 0xac, 0x35, 0xbc, 0x16, 0xb8, 0x72, 0xd7, 0x27, 0x88, 0xf9, 0xf8, 0x2c,
+ 0xe7, 0x5c, 0xe7, 0xdc, 0x6d, 0xfc, 0xe7, 0x12, 0xe3, 0x0b, 0x56, 0xaa,
+ 0xa8, 0xb2, 0xb6, 0xd9, 0xb0, 0x1d, 0xc2, 0x75, 0x24, 0xfe, 0x54, 0x94,
+ 0x8f, 0x78, 0x04, 0x6e, 0x20, 0x7c, 0x4a, 0x63, 0x63, 0x49, 0x89, 0x93,
+ 0xe5, 0xaf, 0xe4, 0x56, 0x9b, 0x53, 0x07, 0x0c, 0x03, 0xe0, 0x00, 0x53,
+ 0xd4, 0x79, 0x24, 0xa6, 0xbd, 0x33, 0xbb, 0x82, 0x04, 0x6a, 0x5c, 0x08,
+ 0x1f, 0x8a, 0x39, 0x1e, 0xe0, 0x7b, 0x77, 0x48, 0xb7, 0xba, 0x4e, 0x93,
+ 0xfc, 0x52, 0x52, 0x7c, 0x33, 0xfa, 0x30, 0x3c, 0x24, 0x7d, 0xc4, 0xab,
+ 0x1f, 0x9f, 0xf2, 0x58, 0xff, 0x00, 0x6e, 0xbf, 0x1a, 0xf6, 0x54, 0xda,
+ 0x83, 0xa8, 0x2e, 0x2e, 0xb6, 0xd2, 0x7f, 0x9b, 0x69, 0x71, 0x13, 0x1f,
+ 0x15, 0xad, 0xb8, 0x4e, 0xe9, 0x1b, 0x76, 0xcc, 0xf6, 0x8f, 0x8a, 0x4a,
+ 0x6d, 0xa6, 0x3e, 0x65, 0x3c, 0x1f, 0x14, 0xa0, 0x24, 0xa5, 0xbe, 0x01,
+ 0x34, 0x78, 0xa9, 0x24, 0x92, 0x9a, 0xf9, 0xb6, 0x0a, 0x71, 0x2d, 0x78,
+ 0x3b, 0x48, 0x69, 0xda, 0x7c, 0xe3, 0x45, 0xc5, 0x65, 0x67, 0x5d, 0x60,
+ 0x06, 0xdb, 0x5d, 0x64, 0x48, 0x61, 0x76, 0xa5, 0xad, 0x9f, 0x15, 0xb3,
+ 0xf5, 0x97, 0x32, 0xd6, 0x83, 0x54, 0x80, 0xce, 0x1a, 0x3f, 0x7b, 0xcc,
+ 0xaa, 0xdd, 0x2f, 0xa2, 0xd7, 0x9b, 0x58, 0xb6, 0xf1, 0xfa, 0x26, 0x7d,
+ 0x1a, 0xc1, 0x80, 0x48, 0xee, 0x92, 0x9e, 0x47, 0x32, 0xf0, 0xdd, 0xf7,
+ 0x12, 0x08, 0x70, 0xe6, 0x0a, 0xc5, 0xbf, 0x24, 0xbd, 0xda, 0x68, 0x07,
+ 0x07, 0xcd, 0x77, 0xbd, 0x6f, 0xa7, 0x60, 0xd6, 0xc2, 0x45, 0x6d, 0xdb,
+ 0xc4, 0xf8, 0x42, 0xe4, 0x72, 0xa9, 0xa7, 0x71, 0x15, 0xb4, 0x0f, 0x82,
+ 0x4a, 0x72, 0xb7, 0x12, 0x64, 0x9d, 0x7b, 0xa4, 0x23, 0x95, 0x65, 0xd8,
+ 0xe2, 0x09, 0x01, 0x57, 0x2d, 0x20, 0xc2, 0x4a, 0x49, 0x45, 0xaf, 0xaa,
+ 0xc0, 0xf6, 0x38, 0xb4, 0x8e, 0xed, 0x30, 0x57, 0x5f, 0xd1, 0x72, 0x1d,
+ 0x88, 0xe6, 0x5f, 0x55, 0x9f, 0xa9, 0x5e, 0xe0, 0x1f, 0x60, 0x69, 0x00,
+ 0x39, 0xdd, 0xad, 0x6f, 0xd1, 0xfe, 0xd0, 0x5c, 0x7e, 0x3d, 0x7e, 0xad,
+ 0xbe, 0x99, 0x70, 0x66, 0xe0, 0x76, 0xb9, 0xda, 0x09, 0x03, 0x45, 0xb3,
+ 0xf5, 0x70, 0xe6, 0x64, 0x3d, 0xf8, 0x78, 0xf6, 0x8a, 0xcb, 0x9a, 0x5c,
+ 0x5a, 0xe2, 0x4b, 0x5c, 0xde, 0xe3, 0x67, 0x05, 0x25, 0x3a, 0x5f, 0x5a,
+ 0x4c, 0x75, 0xd6, 0x38, 0xf7, 0xa5, 0x9c, 0x7c, 0xd7, 0x52, 0x5c, 0xed,
+ 0x8d, 0x73, 0xa0, 0xd6, 0xe6, 0x82, 0x66, 0x79, 0xed, 0xca, 0xe3, 0x3a,
+ 0xb5, 0x59, 0x2d, 0xea, 0x15, 0xd5, 0x96, 0x00, 0xb2, 0xa6, 0x35, 0x81,
+ 0xcc, 0x24, 0x02, 0xdf, 0xcd, 0xf8, 0x2e, 0xcf, 0x17, 0x13, 0x1d, 0xf8,
+ 0xd4, 0xb9, 0xcc, 0x0f, 0x25, 0x8d, 0x32, 0xe2, 0x5c, 0x78, 0x1f, 0xbd,
+ 0x29, 0x29, 0x83, 0x83, 0x6b, 0x1b, 0x81, 0x6b, 0x48, 0xe0, 0x48, 0x84,
+ 0xb7, 0xd4, 0x09, 0x70, 0x70, 0x32, 0x01, 0x3b, 0x75, 0x33, 0xf2, 0x56,
+ 0x45, 0x35, 0x00, 0x61, 0x8d, 0x1f, 0x00, 0x02, 0x4d, 0xa5, 0xad, 0x25,
+ 0xc3, 0x97, 0x72, 0x92, 0x9a, 0x97, 0x34, 0x64, 0x54, 0x58, 0xcb, 0x2d,
+ 0xad, 0xc7, 0x8b, 0x2b, 0x69, 0x04, 0x7f, 0x9e, 0x21, 0x65, 0x33, 0xa1,
+ 0xf5, 0x31, 0x63, 0xac, 0xfb, 0x7d, 0xc0, 0xb8, 0x6d, 0xdc, 0x3d, 0xa4,
+ 0xb4, 0x6a, 0x3f, 0x38, 0x2e, 0x8b, 0x68, 0x1a, 0x98, 0x03, 0xcf, 0x44,
+ 0x37, 0xe4, 0x63, 0xb4, 0x82, 0xeb, 0x1a, 0x27, 0xcc, 0x24, 0xa7, 0x17,
+ 0xfe, 0x6e, 0xb6, 0xc0, 0x3e, 0xd1, 0x75, 0xd6, 0x3a, 0x35, 0x2f, 0xb4,
+ 0xeb, 0xf2, 0x01, 0xca, 0x63, 0xa1, 0x74, 0x9a, 0x21, 0xcf, 0xa9, 0xae,
+ 0xd4, 0x0d, 0x77, 0xbc, 0xc9, 0x31, 0xe2, 0x16, 0xb7, 0xaf, 0x4c, 0xe8,
+ 0xed, 0xd3, 0xc4, 0x02, 0x7f, 0x22, 0x3e, 0x2d, 0x5f, 0x6a, 0x78, 0x6b,
+ 0x5a, 0x5a, 0xd1, 0xf4, 0xdc, 0x5a, 0x46, 0x9f, 0x3e, 0xe9, 0x29, 0xa3,
+ 0x4f, 0x45, 0xc1, 0xd4, 0xd5, 0x8e, 0xc7, 0x06, 0x89, 0x27, 0x60, 0x81,
+ 0xfe, 0x74, 0xad, 0x4c, 0x5e, 0x91, 0x8b, 0x53, 0x43, 0xed, 0xad, 0xa0,
+ 0x93, 0xa3, 0x00, 0x00, 0x6b, 0xe3, 0xb4, 0x05, 0x72, 0xc6, 0xb1, 0x98,
+ 0xcf, 0x65, 0x40, 0x36, 0x3d, 0xbf, 0x32, 0x9e, 0xf7, 0x8d, 0xd5, 0xb4,
+ 0x6b, 0x12, 0xe3, 0xfd, 0x9d, 0x3f, 0x29, 0x49, 0x4d, 0x5c, 0xcd, 0xbe,
+ 0xa9, 0x65, 0x7a, 0x7a, 0x75, 0xc4, 0x08, 0xf6, 0x93, 0xdb, 0xee, 0x5c,
+ 0x77, 0x5a, 0x0d, 0x76, 0x61, 0x1e, 0x15, 0x41, 0xf3, 0x2b, 0xa1, 0xfa,
+ 0xc3, 0x98, 0xdc, 0x36, 0x3d, 0xf4, 0x88, 0xb6, 0xdf, 0xa4, 0x7c, 0x76,
+ 0x88, 0x0b, 0x89, 0xca, 0xba, 0xc7, 0xcb, 0x81, 0xfd, 0x2d, 0x9c, 0x9f,
+ 0x00, 0x92, 0x91, 0x55, 0x4b, 0x2f, 0xc8, 0x97, 0x34, 0x11, 0x5c, 0x06,
+ 0xce, 0xa2, 0x56, 0xee, 0x3d, 0x12, 0x1a, 0x08, 0xf8, 0x05, 0x4f, 0xa7,
+ 0x61, 0x80, 0x18, 0x0f, 0x1c, 0x92, 0x7c, 0x57, 0x51, 0xd1, 0x70, 0x1b,
+ 0x6d, 0xfb, 0xde, 0xd9, 0xae, 0xb1, 0x24, 0x1e, 0x09, 0xec, 0x12, 0x53,
+ 0x85, 0x95, 0x8e, 0xec, 0xfe, 0xaf, 0x8d, 0xd3, 0xb6, 0xb8, 0xe3, 0xb4,
+ 0x8f, 0xb4, 0x11, 0xc7, 0xe9, 0x27, 0x63, 0x5c, 0x7c, 0xe1, 0x76, 0xcf,
+ 0x15, 0xe3, 0xd4, 0xca, 0xa9, 0x1b, 0x6b, 0xa8, 0x08, 0x68, 0x1d, 0x86,
+ 0x8d, 0x68, 0xf8, 0x95, 0xcd, 0xbf, 0x29, 0xf5, 0xf5, 0xbc, 0xb6, 0xb5,
+ 0xe6, 0x9a, 0xab, 0xca, 0xab, 0xd4, 0x7b, 0x5b, 0xa7, 0xf3, 0x70, 0xc6,
+ 0xb8, 0x8e, 0x7b, 0xe8, 0xba, 0x5d, 0x2c, 0x70, 0xb5, 0xa7, 0xd8, 0xe6,
+ 0x00, 0x48, 0xef, 0x06, 0x61, 0x25, 0x20, 0x6d, 0x75, 0xd7, 0x51, 0x76,
+ 0x5f, 0xf3, 0x97, 0x3b, 0x73, 0xd9, 0xce, 0xe8, 0xd4, 0x37, 0x45, 0x8b,
+ 0x9d, 0x97, 0x66, 0x5d, 0x93, 0xf4, 0x6b, 0x1a, 0x31, 0x9e, 0x01, 0x6c,
+ 0x66, 0xc3, 0x9a, 0xf6, 0xd4, 0x43, 0xb2, 0x5e, 0x0c, 0x6b, 0xf4, 0x58,
+ 0x7f, 0x00, 0xb3, 0x99, 0x8d, 0x8d, 0x8b, 0x50, 0xbb, 0x36, 0xc0, 0xf7,
+ 0x1e, 0x2a, 0x69, 0x1a, 0x13, 0xc4, 0xc7, 0x3a, 0x24, 0xa7, 0x30, 0x57,
+ 0x0e, 0x31, 0xf1, 0x5a, 0x38, 0xd7, 0xbd, 0x94, 0x35, 0xad, 0x6b, 0x4f,
+ 0x3a, 0x92, 0x7f, 0x80, 0x59, 0xe6, 0xc6, 0xba, 0xc7, 0x16, 0x37, 0x68,
+ 0x26, 0x47, 0x78, 0x08, 0x94, 0xdc, 0xc0, 0x1c, 0x1e, 0xf0, 0xc1, 0x3a,
+ 0x12, 0x63, 0xee, 0x49, 0x4e, 0x81, 0xc9, 0xb8, 0xf7, 0x68, 0xf8, 0x02,
+ 0x7f, 0xef, 0xc8, 0x6f, 0xba, 0xc7, 0x68, 0x6d, 0x3a, 0x73, 0xb4, 0x06,
+ 0xff, 0x00, 0x02, 0xab, 0xfd, 0xa6, 0xb2, 0x40, 0x69, 0x2e, 0xf3, 0x6b,
+ 0x5c, 0x7f, 0x20, 0x49, 0xcf, 0x73, 0xe6, 0x29, 0xb4, 0xf7, 0x1e, 0xd8,
+ 0xff, 0x00, 0xaa, 0x84, 0x94, 0xd9, 0xa5, 0xee, 0x73, 0xc3, 0x49, 0x79,
+ 0x06, 0x75, 0x26, 0x7f, 0x22, 0xb6, 0xd6, 0xe8, 0x44, 0xff, 0x00, 0xa8,
+ 0x54, 0x71, 0x0d, 0xbe, 0xab, 0x4b, 0xeb, 0x2c, 0x6c, 0x90, 0x4b, 0x9c,
+ 0xdf, 0x0f, 0x00, 0x4a, 0xb6, 0x3d, 0x4d, 0xc3, 0x5f, 0x03, 0xa7, 0x81,
+ 0x49, 0x4d, 0x17, 0xd8, 0x1b, 0x9f, 0xb7, 0x70, 0x69, 0x7d, 0x64, 0x34,
+ 0x38, 0x81, 0xb8, 0x87, 0x6a, 0x07, 0x8f, 0xd2, 0x4d, 0xeb, 0xbf, 0xfe,
+ 0x6d, 0xf3, 0xae, 0xff, 0x00, 0x4a, 0x7f, 0x93, 0xbb, 0x84, 0xb2, 0xb1,
+ 0xe8, 0xb3, 0x28, 0x3a, 0xca, 0xc3, 0xdc, 0xc2, 0x0b, 0x66, 0x63, 0xee,
+ 0x5a, 0xfe, 0x8d, 0x7f, 0x64, 0xf4, 0xb6, 0x37, 0xd3, 0xdb, 0xf4, 0x20,
+ 0x47, 0xdc, 0x92, 0x9d, 0x44, 0x92, 0x49, 0x25, 0x2c, 0x92, 0x74, 0x92,
+ 0x53, 0xcd, 0xfd, 0x65, 0x14, 0xb5, 0xd5, 0xee, 0x0d, 0x16, 0x48, 0xd9,
+ 0xe3, 0x0a, 0xce, 0x09, 0x14, 0xf4, 0xd6, 0x19, 0x6b, 0x5b, 0x13, 0xee,
+ 0x21, 0xb3, 0x3e, 0x65, 0x1b, 0xae, 0x74, 0xb6, 0xe5, 0xd2, 0x6f, 0x69,
+ 0x0d, 0xb6, 0xa6, 0x93, 0x24, 0x72, 0x06, 0xb0, 0xb9, 0x6f, 0xac, 0xb8,
+ 0xdd, 0x4e, 0xcc, 0x06, 0x8a, 0x68, 0x8c, 0x6a, 0xda, 0xd2, 0x1f, 0x23,
+ 0x75, 0x92, 0x07, 0x03, 0x9d, 0x12, 0x52, 0xfd, 0x53, 0xa9, 0x60, 0xd9,
+ 0xb9, 0x9e, 0xa0, 0xb1, 0x9b, 0x88, 0x1b, 0x35, 0x1b, 0x87, 0x9a, 0xe6,
+ 0x6d, 0x2d, 0x76, 0xac, 0x12, 0x64, 0xe8, 0x06, 0xab, 0x67, 0xa4, 0xfd,
+ 0x5f, 0xc8, 0x1d, 0x07, 0x37, 0x37, 0x32, 0xb3, 0x53, 0xbd, 0xae, 0xc7,
+ 0x6b, 0xb4, 0x27, 0x6f, 0xd2, 0x31, 0xf8, 0x2c, 0xa6, 0x30, 0x58, 0xf0,
+ 0x0c, 0x80, 0x39, 0x8e, 0x7c, 0x92, 0x53, 0x5f, 0x63, 0xc9, 0x82, 0xd2,
+ 0x3e, 0x2a, 0xae, 0x5d, 0x3b, 0x3d, 0xdf, 0x7a, 0xd3, 0x14, 0xdd, 0x58,
+ 0x05, 0xce, 0xdd, 0xa6, 0xa3, 0xb7, 0xc9, 0x03, 0x22, 0xbf, 0x52, 0xb3,
+ 0x3c, 0xa4, 0xa7, 0x24, 0x00, 0x5c, 0xd0, 0x7c, 0x42, 0xdc, 0xa2, 0xb7,
+ 0xf4, 0xec, 0xfa, 0xb2, 0xf1, 0xf7, 0x08, 0x3a, 0xcf, 0x76, 0x9f, 0xf6,
+ 0x20, 0xf4, 0x5e, 0x9e, 0xcc, 0xfe, 0xaf, 0x8d, 0x89, 0x1e, 0xdb, 0x1c,
+ 0x5a, 0x74, 0x98, 0xda, 0x37, 0x49, 0x5d, 0x1b, 0xba, 0x33, 0xe9, 0x73,
+ 0xe8, 0x79, 0xdc, 0xda, 0xdf, 0xe9, 0xb9, 0xc3, 0xf7, 0x5c, 0xdd, 0x0f,
+ 0xc4, 0x14, 0x94, 0xd4, 0xfa, 0xd6, 0xf1, 0xfb, 0x53, 0x1e, 0xd6, 0xc6,
+ 0xdb, 0x31, 0xd8, 0xef, 0x8f, 0xd2, 0xd5, 0x74, 0xfd, 0x2f, 0x27, 0xd6,
+ 0xe9, 0xf8, 0xee, 0x6b, 0xff, 0x00, 0xc1, 0xb7, 0x86, 0x47, 0x6f, 0xe5,
+ 0x2e, 0x4f, 0xeb, 0x1d, 0x6f, 0xa7, 0x2f, 0x0a, 0xab, 0x75, 0x75, 0x54,
+ 0x06, 0x6e, 0x1d, 0xc3, 0x5c, 0xe8, 0x2b, 0xa5, 0xe9, 0xb6, 0xbd, 0x9d,
+ 0x3a, 0x8f, 0xd1, 0x97, 0x12, 0xc0, 0x41, 0x71, 0x63, 0x74, 0x23, 0xf9,
+ 0x29, 0x29, 0xba, 0xe7, 0xba, 0x4c, 0xb9, 0xc4, 0x7c, 0x87, 0xe4, 0x09,
+ 0x8b, 0x40, 0xfc, 0xe7, 0x1f, 0x22, 0xe3, 0xfd, 0xea, 0x06, 0xdb, 0x0e,
+ 0xbe, 0x9b, 0x00, 0xf3, 0x79, 0xfe, 0x0d, 0x4d, 0xeb, 0xde, 0xe2, 0x1a,
+ 0x3d, 0x26, 0x7f, 0x65, 0xce, 0xfe, 0x2d, 0x49, 0x4a, 0x73, 0x2b, 0x99,
+ 0xd8, 0xdf, 0xba, 0x7f, 0x2a, 0x8e, 0xe7, 0x02, 0x23, 0xdb, 0x3c, 0x00,
+ 0x00, 0xfe, 0x09, 0x1f, 0x5c, 0xf3, 0x68, 0x9f, 0xe4, 0xb0, 0x7f, 0xdf,
+ 0x89, 0x50, 0x12, 0x49, 0x06, 0xd7, 0xf9, 0xc6, 0xd1, 0xf9, 0x1a, 0x92,
+ 0x92, 0x0d, 0xee, 0x3a, 0xc9, 0x25, 0x6f, 0xd3, 0x5b, 0x31, 0x31, 0xc3,
+ 0x66, 0x23, 0x57, 0x38, 0xf7, 0x72, 0xe7, 0xeb, 0x65, 0x4d, 0xb1, 0x8f,
+ 0x77, 0xa9, 0x66, 0xc2, 0x08, 0x0e, 0xb1, 0xd0, 0x63, 0x55, 0x64, 0xf5,
+ 0xdb, 0xcb, 0xa5, 0xcc, 0x63, 0x18, 0x34, 0x2d, 0x71, 0x23, 0x5f, 0x8a,
+ 0x4a, 0x74, 0x9e, 0xf6, 0xba, 0xc7, 0x30, 0x7f, 0x84, 0xda, 0xe3, 0xf1,
+ 0x69, 0xed, 0xf2, 0x4f, 0x90, 0x43, 0x6b, 0xe7, 0xdc, 0xfd, 0x07, 0x8c,
+ 0x4c, 0x95, 0x57, 0x23, 0x26, 0xab, 0x45, 0x65, 0xae, 0x0e, 0x25, 0xa0,
+ 0x8d, 0x84, 0xc8, 0x71, 0xe3, 0x58, 0x41, 0xcc, 0xb9, 0xe2, 0xa9, 0x7b,
+ 0xa6, 0xc2, 0x20, 0x91, 0xa4, 0x00, 0x92, 0x9c, 0x2f, 0xac, 0x37, 0x6f,
+ 0x07, 0x5d, 0x49, 0xd8, 0xd1, 0xe4, 0x17, 0x3d, 0xb4, 0xbf, 0x25, 0xac,
+ 0xec, 0x34, 0xfb, 0xd5, 0xdc, 0xec, 0x9f, 0x5b, 0x20, 0xeb, 0x2c, 0x67,
+ 0x08, 0x7d, 0x3e, 0x83, 0x65, 0xc2, 0xc3, 0xf4, 0x66, 0x67, 0xe0, 0x92,
+ 0x9d, 0xcc, 0x1c, 0x79, 0x73, 0x18, 0xd1, 0xee, 0x74, 0x34, 0x1f, 0x8a,
+ 0xeb, 0xf1, 0xa8, 0x66, 0x3d, 0x42, 0xa6, 0x08, 0x0d, 0xe4, 0xf8, 0x9f,
+ 0x15, 0xcf, 0x74, 0xb6, 0x0f, 0xb7, 0x53, 0xcc, 0x03, 0x3f, 0x70, 0xfc,
+ 0x8b, 0xa5, 0xee, 0x92, 0x9e, 0x2b, 0xeb, 0x16, 0x46, 0x6f, 0x4a, 0xea,
+ 0x97, 0x5b, 0x5c, 0x1c, 0x6c, 0xe6, 0x86, 0x92, 0x40, 0xf6, 0x58, 0x34,
+ 0x07, 0x55, 0xd1, 0x74, 0xdb, 0x99, 0x6d, 0x04, 0x58, 0x76, 0xd3, 0x54,
+ 0x43, 0xa6, 0x03, 0xcb, 0x86, 0xe3, 0xf7, 0x2c, 0x0f, 0xae, 0x3b, 0x7e,
+ 0xd9, 0x5b, 0x6f, 0x31, 0x8f, 0x1b, 0x8b, 0x7b, 0x3c, 0x8e, 0x1a, 0x4a,
+ 0xbd, 0xd3, 0xf1, 0x8e, 0x27, 0x4e, 0xc7, 0xa0, 0x92, 0xe2, 0xc6, 0x02,
+ 0x4b, 0xb9, 0x97, 0x7b, 0xa3, 0xe5, 0x30, 0x92, 0x9d, 0x5c, 0x8c, 0xee,
+ 0x9f, 0x4b, 0x23, 0xf3, 0x75, 0xfa, 0x2c, 0x90, 0xb9, 0xbc, 0x9c, 0x8e,
+ 0x9d, 0x7d, 0xc4, 0x62, 0x58, 0xd0, 0xff, 0x00, 0xdc, 0x82, 0xd7, 0x0f,
+ 0xec, 0xb9, 0x17, 0xa8, 0xdb, 0xec, 0x2b, 0x8f, 0xc9, 0x7e, 0xfb, 0xcb,
+ 0x87, 0x63, 0xa1, 0xee, 0x12, 0x53, 0xd2, 0x0b, 0x1e, 0xd7, 0x00, 0xf1,
+ 0x24, 0x9d, 0x08, 0xee, 0x15, 0xbc, 0x7b, 0x3d, 0x16, 0x81, 0x07, 0x73,
+ 0xc9, 0x73, 0x8f, 0xfb, 0x56, 0x4f, 0x4a, 0xc8, 0xc9, 0xbd, 0x85, 0xb6,
+ 0xfb, 0x8d, 0x64, 0x6d, 0xb3, 0xb9, 0x04, 0x70, 0x56, 0xcb, 0x29, 0x6b,
+ 0xf6, 0xb4, 0xe4, 0x06, 0x39, 0xc3, 0xe8, 0x40, 0x2e, 0x1f, 0x79, 0x49,
+ 0x49, 0x0d, 0xce, 0x3f, 0x0d, 0x12, 0x0e, 0x3a, 0x95, 0x2f, 0xb0, 0x00,
+ 0x35, 0xc8, 0xb0, 0xf9, 0x0d, 0xa3, 0xfe, 0xfa, 0x97, 0xd8, 0xa9, 0x3a,
+ 0x17, 0x5a, 0xe3, 0xde, 0x6c, 0x23, 0xf2, 0x42, 0x4a, 0x5d, 0x80, 0x97,
+ 0x01, 0xe6, 0xac, 0x82, 0x45, 0x8d, 0x1c, 0x37, 0x69, 0xfb, 0xc4, 0x42,
+ 0xae, 0xcc, 0x2c, 0x66, 0x38, 0x58, 0xd6, 0x12, 0xe6, 0x19, 0x04, 0xbd,
+ 0xc7, 0x8f, 0x89, 0x56, 0x6b, 0x24, 0xb9, 0xa7, 0xe3, 0xa1, 0xf3, 0x84,
+ 0x94, 0x8d, 0xb5, 0x4e, 0x4b, 0xcc, 0x7d, 0x10, 0x0a, 0xd1, 0xd7, 0xd3,
+ 0x88, 0xed, 0xf2, 0x54, 0xe9, 0x1f, 0xac, 0xbc, 0x1f, 0x01, 0xf9, 0x4a,
+ 0xb5, 0xae, 0xe8, 0xdc, 0x27, 0x8d, 0xa9, 0x29, 0xd1, 0x49, 0x36, 0x89,
+ 0x40, 0x49, 0x4b, 0xa4, 0x9a, 0x12, 0xd7, 0xc5, 0x25, 0x29, 0xcd, 0x0f,
+ 0x69, 0x69, 0xe1, 0xc0, 0x83, 0xf3, 0x59, 0xd7, 0x5b, 0x5e, 0x36, 0x36,
+ 0xec, 0x87, 0x43, 0x28, 0x1a, 0xc7, 0x83, 0x56, 0x96, 0xab, 0x8d, 0xfa,
+ 0xd9, 0x7e, 0x57, 0x4e, 0xea, 0x0c, 0xb8, 0x7e, 0x97, 0x0b, 0x24, 0x07,
+ 0x3e, 0x97, 0x7d, 0x1d, 0xec, 0xd1, 0xc3, 0xca, 0x74, 0x29, 0x29, 0xb1,
+ 0xd6, 0xfa, 0xf6, 0x2e, 0x47, 0x49, 0xf4, 0xaa, 0xb1, 0xa2, 0xf7, 0x86,
+ 0xee, 0xaa, 0x7e, 0x83, 0x5e, 0x25, 0xbb, 0xbe, 0x4b, 0x8f, 0xc6, 0x7d,
+ 0x6f, 0x81, 0x21, 0xc0, 0xf0, 0xf0, 0xb5, 0xf3, 0x7e, 0xb0, 0xf4, 0xfe,
+ 0xa1, 0x48, 0xf4, 0xba, 0x76, 0xfb, 0x80, 0x00, 0x39, 0xcc, 0x04, 0x13,
+ 0x11, 0xb4, 0x16, 0x89, 0x20, 0x2e, 0x7e, 0xb7, 0x8a, 0xac, 0xd8, 0xfd,
+ 0xcd, 0x74, 0xc4, 0x38, 0x10, 0x92, 0x9b, 0xd7, 0x08, 0x1a, 0x70, 0xab,
+ 0x7a, 0x76, 0x5a, 0xe1, 0x4d, 0x4d, 0xdf, 0x6d, 0x84, 0x35, 0x8d, 0x1c,
+ 0x97, 0x1d, 0x00, 0x52, 0x7d, 0xb0, 0xde, 0x55, 0xff, 0x00, 0xaa, 0xb4,
+ 0x1c, 0xae, 0xbf, 0x8c, 0x06, 0xad, 0xa8, 0x9b, 0x5d, 0xfd, 0x81, 0xa7,
+ 0xe3, 0x09, 0x29, 0xdc, 0xfa, 0x9d, 0xf5, 0x4b, 0x27, 0xa7, 0x64, 0x7e,
+ 0xd2, 0xea, 0x03, 0x65, 0xe1, 0xa5, 0xb5, 0x52, 0x08, 0x24, 0x6e, 0xd1,
+ 0xce, 0x79, 0x1a, 0x4c, 0x68, 0xb6, 0x2c, 0xad, 0xae, 0xca, 0xca, 0x0e,
+ 0x00, 0x82, 0xf6, 0xe9, 0xe5, 0x0b, 0x65, 0x64, 0x49, 0x39, 0x99, 0x63,
+ 0xc1, 0xcd, 0x8f, 0xc5, 0x25, 0x3c, 0x5f, 0xd7, 0x76, 0x86, 0x75, 0x4c,
+ 0x68, 0xd0, 0x7a, 0x5f, 0xf7, 0xe7, 0x2d, 0x9e, 0x99, 0x7d, 0x5f, 0xb3,
+ 0x71, 0xa5, 0xe2, 0x45, 0x60, 0x11, 0x3a, 0xe9, 0xa2, 0xca, 0xfa, 0xea,
+ 0xd9, 0xea, 0xb8, 0x80, 0x8d, 0x7d, 0x2e, 0x3f, 0xb4, 0xe5, 0xd1, 0x74,
+ 0x96, 0xb5, 0x9d, 0x2f, 0x18, 0x96, 0x4f, 0xb3, 0xf3, 0x7d, 0xb1, 0xa9,
+ 0xe6, 0x12, 0x52, 0x3f, 0x56, 0xb7, 0x18, 0x69, 0x2e, 0xf8, 0x35, 0xc7,
+ 0xf8, 0x24, 0x5f, 0xb4, 0xc9, 0x63, 0xe3, 0xcd, 0xa4, 0x7e, 0x58, 0x57,
+ 0x1d, 0xb5, 0xe2, 0x03, 0x0f, 0x6d, 0x5a, 0x49, 0x2a, 0x2e, 0xb3, 0x07,
+ 0x1e, 0xbd, 0xce, 0xb4, 0xee, 0xec, 0x2c, 0x71, 0x24, 0xa4, 0xa6, 0xb0,
+ 0xb5, 0xd1, 0x02, 0xa2, 0xe0, 0x78, 0x98, 0xfe, 0xf5, 0x12, 0xeb, 0x89,
+ 0x81, 0x49, 0x07, 0xe7, 0xfc, 0x01, 0x56, 0x1d, 0x9f, 0x84, 0x1b, 0x22,
+ 0xc6, 0x17, 0x76, 0x8d, 0xc7, 0xef, 0x43, 0xab, 0xaa, 0x63, 0x3d, 0xce,
+ 0x63, 0x5c, 0x5f, 0xb6, 0x46, 0xd6, 0x34, 0x93, 0x3f, 0x24, 0x94, 0xc0,
+ 0xfa, 0xcd, 0x6b, 0x9e, 0x59, 0x0d, 0x68, 0x25, 0xdc, 0xf6, 0xf8, 0xc2,
+ 0xc7, 0x3d, 0x44, 0x35, 0xfe, 0xad, 0x8c, 0xf5, 0xaf, 0x79, 0xfd, 0x1d,
+ 0x7f, 0x9a, 0xd0, 0x78, 0xf1, 0x92, 0x56, 0xeb, 0xf3, 0x43, 0x5a, 0x5c,
+ 0xdc, 0x6b, 0x88, 0x1e, 0xe2, 0x76, 0xc0, 0xe3, 0xcd, 0x57, 0xe9, 0x5d,
+ 0x27, 0xd2, 0x71, 0xcc, 0xca, 0x03, 0xed, 0x56, 0x19, 0x6b, 0x7b, 0x56,
+ 0x0f, 0x61, 0xe6, 0x92, 0x9b, 0x78, 0x27, 0x33, 0xec, 0xde, 0xa6, 0x58,
+ 0x6d, 0x64, 0xea, 0xda, 0x9b, 0x30, 0xd1, 0xfc, 0xaf, 0x35, 0x9b, 0xd5,
+ 0xf3, 0xcb, 0x28, 0x79, 0x69, 0xd5, 0xde, 0xc6, 0xad, 0x4e, 0xa7, 0x78,
+ 0xa6, 0xa1, 0x5c, 0xfb, 0x8f, 0x2b, 0x90, 0xea, 0x39, 0x06, 0xdb, 0x05,
+ 0x60, 0xfb, 0x58, 0x92, 0x9a, 0x2f, 0x71, 0x6d, 0x67, 0xf7, 0x9e, 0x63,
+ 0xef, 0x5d, 0x07, 0x4f, 0xa4, 0x57, 0x53, 0x1b, 0x11, 0x01, 0x73, 0xf5,
+ 0x8f, 0x57, 0x29, 0x8c, 0x1c, 0x33, 0xdc, 0x7f, 0x82, 0xe9, 0xb1, 0xb6,
+ 0x96, 0x36, 0x0e, 0x80, 0x0e, 0x12, 0x53, 0xa9, 0xd1, 0x84, 0xe7, 0x71,
+ 0xf4, 0x03, 0x8c, 0xf8, 0x69, 0x1f, 0xc5, 0x74, 0x07, 0x85, 0x8f, 0xd1,
+ 0xb1, 0x9f, 0x55, 0x8e, 0xbd, 0xc2, 0x1a, 0x5b, 0x0d, 0x07, 0x93, 0x27,
+ 0x9f, 0x82, 0xd6, 0x7b, 0xc0, 0x6e, 0xee, 0xc1, 0x25, 0x3c, 0xc7, 0xd7,
+ 0x06, 0x32, 0xf7, 0xe2, 0x63, 0x92, 0x03, 0xac, 0xb5, 0xad, 0xf7, 0x78,
+ 0x48, 0x24, 0x0f, 0xb9, 0x5f, 0xb8, 0x83, 0x3f, 0x91, 0x56, 0xfa, 0xc5,
+ 0x57, 0xda, 0x6d, 0xc5, 0x6d, 0x6d, 0x9b, 0x19, 0x73, 0x5f, 0xb8, 0xfe,
+ 0x6b, 0x5a, 0x43, 0x8b, 0xbf, 0x04, 0x57, 0x3f, 0x74, 0x9e, 0xc9, 0x29,
+ 0xc4, 0xeb, 0x37, 0x7a, 0x55, 0x1d, 0x7b, 0x42, 0xe5, 0xe6, 0x5d, 0xe7,
+ 0xdd, 0x6d, 0x75, 0xfc, 0xa6, 0xb9, 0xc2, 0xa6, 0xf3, 0xdd, 0x65, 0x62,
+ 0x52, 0x6e, 0xb9, 0xac, 0xec, 0x4e, 0xbf, 0x0e, 0xe9, 0x29, 0xdf, 0xe9,
+ 0x35, 0x96, 0x63, 0x32, 0x44, 0x17, 0x19, 0xf9, 0x15, 0xa0, 0xdc, 0x1c,
+ 0x50, 0xfd, 0xdb, 0x89, 0x33, 0x27, 0x68, 0x24, 0xcf, 0xc6, 0x10, 0xf0,
+ 0x19, 0x2f, 0x63, 0x48, 0x80, 0x23, 0xf0, 0x5a, 0x36, 0x3a, 0x03, 0xbb,
+ 0xf8, 0x24, 0xa6, 0x42, 0xd6, 0xed, 0xfa, 0x2f, 0xff, 0x00, 0x34, 0xff,
+ 0x00, 0x15, 0x0f, 0x5c, 0x0d, 0x05, 0x4f, 0x23, 0xcf, 0x68, 0xfc, 0xae,
+ 0x43, 0x69, 0x29, 0xcb, 0xa4, 0xc1, 0x3e, 0x69, 0x29, 0x23, 0xaf, 0x79,
+ 0x30, 0x2a, 0x86, 0x9f, 0x17, 0x0f, 0xe1, 0x28, 0xad, 0x33, 0x67, 0x91,
+ 0x74, 0x03, 0xf2, 0x55, 0x49, 0xd6, 0x0e, 0x8a, 0xc3, 0x79, 0x68, 0xed,
+ 0xb8, 0x9f, 0xb9, 0x25, 0x33, 0xc6, 0x27, 0xed, 0x56, 0x07, 0x08, 0x81,
+ 0x01, 0x5e, 0x81, 0x13, 0x1a, 0xf2, 0xa9, 0xb1, 0xa3, 0xed, 0x45, 0xc3,
+ 0x82, 0xd2, 0x23, 0xe0, 0x55, 0xd8, 0xd3, 0xcd, 0x25, 0x37, 0x65, 0x2d,
+ 0x12, 0x49, 0x25, 0x2d, 0x1e, 0x09, 0xf5, 0x4b, 0x44, 0xb4, 0x49, 0x4a,
+ 0xd5, 0x51, 0xeb, 0x1d, 0x2e, 0x9e, 0xad, 0x82, 0xfc, 0x4b, 0x7d, 0xa4,
+ 0xeb, 0x5d, 0x9f, 0xb8, 0xf1, 0xc1, 0x57, 0xb4, 0x51, 0xb2, 0xca, 0xea,
+ 0x61, 0x7d, 0xaf, 0x0c, 0x60, 0xe5, 0xce, 0x20, 0x01, 0xf3, 0x29, 0x29,
+ 0xf2, 0x1c, 0xca, 0x73, 0xba, 0x76, 0x55, 0x98, 0x97, 0xcd, 0x76, 0x52,
+ 0x60, 0x8e, 0xde, 0x44, 0x79, 0x15, 0x59, 0xf6, 0xba, 0x77, 0x39, 0xdb,
+ 0x89, 0xd6, 0x4a, 0xea, 0x7e, 0xbd, 0xe4, 0xe2, 0x66, 0xe4, 0xd0, 0xdc,
+ 0x47, 0x32, 0xc7, 0xd4, 0xc3, 0xbe, 0xc6, 0x6b, 0x3b, 0x8e, 0x8d, 0x91,
+ 0xe1, 0xfc, 0x57, 0x17, 0x75, 0x59, 0x2d, 0x20, 0x77, 0x3c, 0x01, 0xca,
+ 0x4a, 0x67, 0x6e, 0x59, 0xe0, 0x15, 0xb7, 0xf5, 0x37, 0xac, 0xe3, 0x74,
+ 0xee, 0xae, 0x2c, 0xcc, 0x21, 0xb5, 0x5c, 0xc3, 0x57, 0xaa, 0x78, 0xac,
+ 0xb8, 0x82, 0x1c, 0x7c, 0xb4, 0x82, 0xb2, 0xf1, 0x3e, 0xae, 0xf5, 0x6c,
+ 0x92, 0x1c, 0x29, 0x35, 0xb0, 0xfe, 0x7d, 0xbe, 0xd1, 0xf7, 0x73, 0xf8,
+ 0x2d, 0xbc, 0x6f, 0xa9, 0xe1, 0x90, 0xec, 0x9b, 0xe6, 0x39, 0x15, 0x8d,
+ 0xa3, 0xfc, 0xe7, 0x24, 0xa7, 0xd3, 0x9a, 0xe6, 0xbd, 0xa1, 0xed, 0x70,
+ 0x73, 0x5d, 0xab, 0x5c, 0x0c, 0x82, 0x3c, 0xa1, 0x65, 0xbd, 0xb1, 0x9d,
+ 0x95, 0xe7, 0xb0, 0xfd, 0xe1, 0xcb, 0x9e, 0xc1, 0x77, 0xec, 0xca, 0xbe,
+ 0xcd, 0x87, 0x91, 0x63, 0x2b, 0x24, 0x48, 0xdc, 0x5e, 0xd6, 0x9f, 0x8b,
+ 0xb4, 0x1f, 0x25, 0xa3, 0x65, 0xf9, 0xb8, 0x4f, 0x75, 0xd9, 0x0f, 0xaa,
+ 0xc0, 0xf0, 0xd0, 0x4b, 0x9e, 0x18, 0xe7, 0x40, 0xd3, 0x6c, 0x80, 0x09,
+ 0xd5, 0x25, 0x3c, 0xf7, 0xd7, 0x70, 0x4f, 0x51, 0xc3, 0x33, 0x1f, 0xa3,
+ 0x3a, 0x8f, 0xeb, 0x15, 0xaf, 0xd2, 0x71, 0xe9, 0x1d, 0x33, 0x1d, 0xe4,
+ 0x3d, 0xc7, 0x6c, 0xc9, 0x7b, 0xbc, 0x4f, 0x9a, 0xc4, 0xfa, 0xd3, 0x78,
+ 0xea, 0x17, 0x62, 0x5f, 0x8e, 0xd3, 0xb5, 0x8d, 0x73, 0x5f, 0x22, 0x76,
+ 0x92, 0x67, 0x58, 0x5d, 0x27, 0x4b, 0xc2, 0x7f, 0xec, 0xdc, 0x76, 0x3a,
+ 0xc1, 0x06, 0xb1, 0xc3, 0x4f, 0x7d, 0x7c, 0x52, 0x52, 0x07, 0xec, 0xaa,
+ 0xe0, 0xf2, 0xd1, 0xb4, 0x93, 0xa3, 0xb5, 0xd3, 0xc7, 0x55, 0x53, 0x37,
+ 0xae, 0xf4, 0x8c, 0x2b, 0x0b, 0x1e, 0x5a, 0xeb, 0x44, 0x1d, 0xac, 0x60,
+ 0x3f, 0x7f, 0x9a, 0xad, 0xf5, 0xb7, 0x2d, 0xd8, 0x34, 0xb2, 0x8a, 0xdc,
+ 0x4d, 0xf6, 0x83, 0xb5, 0xdc, 0x6d, 0x68, 0xfa, 0x45, 0x71, 0x6c, 0xad,
+ 0xf6, 0x99, 0x12, 0x7c, 0xfc, 0x52, 0x53, 0xd3, 0x67, 0x7d, 0x73, 0x2e,
+ 0x61, 0x6e, 0x0d, 0x45, 0x8f, 0x31, 0xb5, 0xf6, 0x01, 0xa7, 0x8e, 0x80,
+ 0xaa, 0x1d, 0x37, 0xeb, 0x1f, 0xd8, 0xed, 0x6b, 0xee, 0xae, 0x40, 0x66,
+ 0xc2, 0xe6, 0x68, 0x4e, 0xb3, 0x27, 0xc4, 0xac, 0xf1, 0x84, 0xe0, 0x75,
+ 0x41, 0xbb, 0x1c, 0xb7, 0x51, 0xf7, 0x24, 0xa7, 0xd3, 0xba, 0x2e, 0x7d,
+ 0x1d, 0x5e, 0xb7, 0x64, 0x50, 0x4f, 0xa3, 0x5e, 0x8e, 0xdc, 0x23, 0xdd,
+ 0xe0, 0xb4, 0xdd, 0x0d, 0xfd, 0x23, 0x8c, 0x31, 0xba, 0xae, 0x67, 0xfc,
+ 0x5f, 0x5c, 0x2c, 0xe9, 0x37, 0x62, 0x30, 0x45, 0x95, 0xde, 0x4b, 0xfc,
+ 0x61, 0xed, 0x1b, 0x4f, 0xe0, 0x56, 0xe7, 0x5c, 0xbc, 0x51, 0x88, 0xe6,
+ 0x0f, 0x04, 0x94, 0xf3, 0xfd, 0x4b, 0xa8, 0x1b, 0xae, 0xb6, 0xd2, 0x7d,
+ 0xa3, 0x40, 0xb9, 0xdb, 0x6d, 0x27, 0x73, 0xce, 0x92, 0xad, 0x65, 0x5b,
+ 0xbb, 0xd8, 0x3e, 0x25, 0x65, 0x66, 0xda, 0x5a, 0xd2, 0xd1, 0xca, 0x4a,
+ 0x49, 0xd3, 0xb2, 0x0b, 0xf2, 0xdd, 0x53, 0x39, 0x78, 0xf7, 0x3b, 0xf7,
+ 0x40, 0x2b, 0xaa, 0xc1, 0xba, 0x8a, 0x1f, 0x5b, 0x5e, 0xf0, 0x18, 0x08,
+ 0x2e, 0x2e, 0xe2, 0x27, 0x59, 0x5c, 0xe7, 0xd5, 0xbe, 0x99, 0x97, 0x9b,
+ 0x71, 0xa7, 0x18, 0x16, 0xb9, 0xc2, 0x6e, 0xb8, 0xfd, 0x16, 0x35, 0x77,
+ 0x58, 0x3f, 0x56, 0xb0, 0x70, 0xc8, 0xb1, 0xe5, 0xd9, 0x37, 0x0f, 0xcf,
+ 0xb0, 0xc8, 0x07, 0xc9, 0xbc, 0x24, 0xa7, 0x5b, 0xed, 0x78, 0xee, 0x64,
+ 0xd6, 0xed, 0xc0, 0xf0, 0x47, 0x87, 0xc5, 0x02, 0xdc, 0xbb, 0x1c, 0xdd,
+ 0x8d, 0xf6, 0x83, 0x3a, 0xf7, 0x52, 0x73, 0x5a, 0xc1, 0x10, 0xaa, 0xb8,
+ 0xfb, 0xb5, 0x49, 0x4c, 0x1c, 0xd7, 0xd8, 0xe9, 0x24, 0x92, 0x7b, 0x95,
+ 0x57, 0x3a, 0xff, 0x00, 0xb3, 0x54, 0x47, 0x96, 0xaa, 0xe3, 0xad, 0xae,
+ 0xb0, 0x49, 0x23, 0x45, 0xce, 0x75, 0x9c, 0x93, 0x65, 0x4f, 0x2d, 0x3e,
+ 0x29, 0x29, 0xc2, 0xca, 0xb8, 0xdf, 0x73, 0xac, 0x3d, 0xce, 0x8b, 0x43,
+ 0xa5, 0xd3, 0xb5, 0x86, 0xd3, 0xc9, 0xd1, 0xab, 0x2e, 0xa6, 0x39, 0xef,
+ 0x0d, 0x1d, 0xd6, 0xee, 0x34, 0x56, 0xc0, 0xde, 0xcd, 0xd0, 0x24, 0xa7,
+ 0x57, 0xa7, 0xb4, 0x38, 0x96, 0xb9, 0xc5, 0x8e, 0x8d, 0x0b, 0x62, 0x74,
+ 0xe7, 0xe9, 0x02, 0xaf, 0x8c, 0x66, 0xf2, 0x6c, 0xb0, 0xfc, 0xc0, 0xfc,
+ 0x8d, 0x0a, 0x97, 0x4f, 0x68, 0x61, 0x36, 0x90, 0xe7, 0x01, 0x2d, 0x01,
+ 0xad, 0x2e, 0xd4, 0xf3, 0x30, 0xaf, 0x8b, 0x41, 0x32, 0x2b, 0xb0, 0xcf,
+ 0x6d, 0xb0, 0x3f, 0x12, 0x12, 0x53, 0x1f, 0xb2, 0xd6, 0x75, 0x3b, 0xcf,
+ 0xc5, 0xee, 0xfe, 0xf4, 0xe3, 0x07, 0x1f, 0xf7, 0x60, 0xf8, 0x92, 0x4f,
+ 0xe5, 0x2a, 0x6d, 0xb1, 0xee, 0x9f, 0xd0, 0xbf, 0x4f, 0x1d, 0xa3, 0xfe,
+ 0xfc, 0x91, 0xb5, 0xe4, 0xec, 0x35, 0x10, 0x39, 0xd5, 0xcd, 0x1f, 0x92,
+ 0x52, 0x53, 0x03, 0x87, 0x43, 0x1d, 0xf4, 0x1a, 0x7e, 0x21, 0x3d, 0x2e,
+ 0x9d, 0x7c, 0x1d, 0xac, 0x71, 0x33, 0x09, 0xf7, 0xd8, 0xe2, 0x41, 0x6b,
+ 0x40, 0xfe, 0xb1, 0xff, 0x00, 0xc8, 0xa6, 0x63, 0x5c, 0xdd, 0xd2, 0x34,
+ 0xfa, 0x43, 0xef, 0x49, 0x49, 0xd8, 0x22, 0xf0, 0x4f, 0x71, 0x0a, 0xef,
+ 0x9f, 0x75, 0x4e, 0x62, 0xc6, 0x7d, 0xc8, 0xfb, 0xdd, 0x3b, 0x52, 0x52,
+ 0x6b, 0x3a, 0xa7, 0x4d, 0xaf, 0xe9, 0xe4, 0x30, 0x47, 0x9c, 0xfe, 0x45,
+ 0x5c, 0x75, 0xfe, 0x9e, 0xe0, 0xe2, 0xd0, 0xf2, 0x26, 0x1a, 0x76, 0x9f,
+ 0x70, 0xf1, 0x0b, 0x8a, 0x3d, 0x63, 0xa7, 0x08, 0x63, 0x4f, 0xa8, 0xd7,
+ 0x6b, 0xb8, 0x33, 0x8f, 0xeb, 0x38, 0xc4, 0x2c, 0xfc, 0xfe, 0xbf, 0x6d,
+ 0xf5, 0xec, 0xc0, 0xaf, 0xd2, 0x64, 0xc1, 0xb1, 0xdf, 0x4c, 0x9f, 0x2f,
+ 0x04, 0x94, 0xf6, 0x59, 0x9f, 0x5d, 0xfa, 0x76, 0x13, 0x9e, 0x2e, 0xad,
+ 0xc4, 0xb4, 0xc3, 0x58, 0xdf, 0xa6, 0x7e, 0x3d, 0x82, 0xbb, 0x47, 0xd6,
+ 0x9e, 0x8b, 0x91, 0x82, 0xcc, 0xa6, 0xde, 0x1a, 0x1f, 0xcd, 0x5a, 0x9b,
+ 0x1a, 0xee, 0xed, 0x2d, 0x0b, 0xc8, 0xec, 0xa3, 0x29, 0xcf, 0x79, 0x7e,
+ 0xae, 0x1a, 0x9d, 0x57, 0x45, 0xd0, 0xb1, 0x0d, 0x46, 0xa6, 0x3c, 0x6e,
+ 0x79, 0xfd, 0x23, 0xc0, 0xe2, 0x63, 0xda, 0x3f, 0x22, 0x4a, 0x7b, 0xdf,
+ 0xdb, 0x6d, 0xb5, 0xc1, 0xb8, 0xd5, 0x9d, 0xb1, 0x2e, 0x7d, 0x9a, 0x44,
+ 0xf0, 0x03, 0x42, 0xc9, 0xeb, 0x9b, 0x33, 0xb1, 0xde, 0xec, 0xc7, 0x3b,
+ 0x65, 0x3f, 0xa4, 0x6b, 0x5b, 0xa0, 0x91, 0xfc, 0x9e, 0x0a, 0x9d, 0x43,
+ 0xd3, 0x6c, 0x1d, 0x7b, 0x9f, 0x32, 0xb3, 0x33, 0x3a, 0x86, 0x48, 0xcd,
+ 0x35, 0x3d, 0x95, 0xd7, 0x88, 0x00, 0xf5, 0x2d, 0xbb, 0xe8, 0x10, 0x79,
+ 0x82, 0x92, 0x9a, 0xfd, 0x37, 0xa7, 0x62, 0x66, 0xd5, 0xea, 0x9d, 0xee,
+ 0x33, 0x0e, 0x04, 0xc6, 0xa3, 0xcc, 0x05, 0xaf, 0x4e, 0x06, 0x0e, 0x2e,
+ 0xb5, 0x54, 0xc6, 0x38, 0x72, 0xf8, 0x97, 0x7f, 0x9c, 0x65, 0x04, 0x75,
+ 0x0c, 0x26, 0x56, 0xdf, 0xb3, 0xd8, 0xc7, 0x32, 0x3d, 0x8d, 0x64, 0x1f,
+ 0xc9, 0xc2, 0x06, 0x46, 0x49, 0xdb, 0xba, 0xd3, 0xa7, 0x2d, 0xa9, 0x87,
+ 0x53, 0xf1, 0xfe, 0xf4, 0x94, 0xd9, 0xbf, 0x35, 0x8c, 0x6c, 0xb4, 0x80,
+ 0xde, 0x37, 0x99, 0x93, 0xfd, 0x50, 0xb1, 0xf2, 0xba, 0x89, 0x0f, 0x00,
+ 0x92, 0x5c, 0x75, 0x03, 0x52, 0x7e, 0x70, 0xa3, 0x91, 0x7d, 0xb6, 0xb8,
+ 0x31, 0xb0, 0x6d, 0x70, 0xd0, 0x7e, 0x6b, 0x5b, 0xe3, 0xf0, 0x42, 0xaf,
+ 0x19, 0xf3, 0xb9, 0xda, 0xb9, 0xdc, 0x38, 0xfe, 0x2e, 0x49, 0x4a, 0x7e,
+ 0x65, 0xb7, 0x1d, 0xac, 0x10, 0xe1, 0xc9, 0x02, 0x1a, 0xdf, 0x3f, 0x8a,
+ 0x8d, 0x98, 0xa6, 0xff, 0x00, 0x75, 0xce, 0x36, 0xd8, 0x7f, 0x78, 0xc9,
+ 0xf9, 0xca, 0xb0, 0xc6, 0x35, 0xa2, 0x1a, 0x3d, 0xa0, 0xe8, 0x7f, 0x79,
+ 0xc9, 0xdb, 0xa9, 0x2d, 0xf9, 0x13, 0xf1, 0x49, 0x4d, 0x67, 0xe2, 0x3c,
+ 0xd4, 0x06, 0xf7, 0x12, 0xc3, 0xc3, 0x4c, 0x02, 0x3c, 0x17, 0x67, 0xd2,
+ 0xf2, 0xab, 0x77, 0x4f, 0xc7, 0x80, 0xe7, 0x6c, 0xac, 0x07, 0x69, 0xc1,
+ 0x68, 0x83, 0xc9, 0x5c, 0xb6, 0xe2, 0xdd, 0x46, 0xb0, 0x03, 0x5c, 0x3e,
+ 0x08, 0xb8, 0xb6, 0xbb, 0x12, 0xd6, 0xdb, 0x51, 0xfa, 0x1e, 0xe0, 0x3b,
+ 0x39, 0xa4, 0xfd, 0x12, 0x92, 0x9c, 0x6f, 0xae, 0x39, 0x2f, 0xbf, 0xad,
+ 0xdb, 0xaf, 0xb1, 0x8d, 0x6b, 0x18, 0x0f, 0x60, 0x44, 0xcf, 0xe2, 0xab,
+ 0xe1, 0xd4, 0xc8, 0x68, 0x1c, 0x00, 0xa7, 0xf5, 0x8c, 0x0b, 0xfa, 0xd1,
+ 0x7b, 0x34, 0x16, 0x06, 0x17, 0x34, 0x76, 0xd0, 0x23, 0x62, 0x54, 0xe0,
+ 0x7d, 0x8c, 0xdc, 0x07, 0x79, 0x01, 0x25, 0x36, 0x86, 0x23, 0x5c, 0xdd,
+ 0x10, 0x2e, 0xc0, 0x0e, 0x69, 0x95, 0xa1, 0x45, 0xdf, 0x98, 0xf6, 0x96,
+ 0x3a, 0x34, 0x07, 0xfd, 0x88, 0x79, 0x37, 0x10, 0x36, 0x31, 0x85, 0xee,
+ 0x3c, 0xc6, 0x9f, 0x89, 0x49, 0x4c, 0x3e, 0xa3, 0xe5, 0xb7, 0xa7, 0xf5,
+ 0xe7, 0x63, 0xd8, 0x61, 0x99, 0x75, 0x96, 0x01, 0xc0, 0x2f, 0x6f, 0xbd,
+ 0x9f, 0x90, 0xad, 0x8e, 0xbd, 0x95, 0x65, 0xde, 0xa9, 0xf0, 0x25, 0x71,
+ 0x99, 0xd5, 0xdd, 0x5d, 0x9e, 0xa4, 0x1a, 0xde, 0xd3, 0xb9, 0xae, 0x07,
+ 0x50, 0x47, 0x06, 0x42, 0xd9, 0xe8, 0xee, 0xea, 0x9d, 0x7a, 0x8b, 0x65,
+ 0xe0, 0x59, 0x56, 0xd0, 0xe7, 0x96, 0x98, 0x78, 0x3e, 0x24, 0x70, 0x74,
+ 0x49, 0x4d, 0x27, 0x12, 0xca, 0xdc, 0xf7, 0x9d, 0x3c, 0x4a, 0xcb, 0x73,
+ 0x8d, 0xd6, 0x6e, 0xfc, 0xd1, 0xf4, 0x7f, 0xbd, 0x1b, 0x37, 0x31, 0xd9,
+ 0x8e, 0x65, 0x4d, 0x1b, 0x2b, 0x61, 0x82, 0x27, 0xe9, 0x10, 0x79, 0x52,
+ 0xd9, 0x45, 0x5b, 0x5a, 0x09, 0x2e, 0x77, 0x03, 0x92, 0x92, 0x9e, 0xdb,
+ 0xea, 0x3b, 0xf1, 0xe9, 0xe9, 0x97, 0x93, 0xfc, 0xeb, 0xad, 0xf7, 0xfc,
+ 0x03, 0x46, 0xdf, 0xe2, 0xb7, 0x2d, 0xea, 0x0d, 0xe1, 0xbc, 0x2e, 0x0f,
+ 0xa3, 0x67, 0x5b, 0x82, 0xf7, 0xc5, 0x56, 0x59, 0x5d, 0xa2, 0x1c, 0x1a,
+ 0xd3, 0xa1, 0x1c, 0x15, 0xd0, 0x17, 0x75, 0x0b, 0x2b, 0x0f, 0x18, 0x96,
+ 0x00, 0xe1, 0x22, 0x76, 0x83, 0x07, 0xc8, 0xb9, 0x25, 0x37, 0xad, 0xea,
+ 0x5b, 0xa5, 0xad, 0xe7, 0xc5, 0x67, 0x65, 0xf5, 0x41, 0x4c, 0x97, 0x3a,
+ 0x4f, 0x80, 0x54, 0x6f, 0x3d, 0x54, 0x92, 0xd6, 0xe1, 0x5c, 0x47, 0x90,
+ 0x68, 0x1f, 0xf5, 0x45, 0x66, 0xdd, 0x57, 0x50, 0xdd, 0xfa, 0x4a, 0x0d,
+ 0x23, 0xb9, 0x7c, 0x93, 0xf9, 0x12, 0x52, 0x5c, 0xae, 0xaf, 0x91, 0x64,
+ 0x86, 0x12, 0x25, 0x54, 0xf5, 0xf2, 0x6c, 0x61, 0xad, 0xdc, 0x1e, 0x5c,
+ 0x51, 0x19, 0x8e, 0x79, 0x79, 0x94, 0x66, 0x0d, 0xb1, 0xa2, 0x4a, 0x63,
+ 0x45, 0x6d, 0x60, 0x10, 0x41, 0x77, 0xe7, 0x2b, 0x60, 0x38, 0x76, 0x22,
+ 0x35, 0x94, 0x31, 0x3e, 0x1a, 0xa2, 0x56, 0x0c, 0x77, 0xf9, 0x24, 0xa7,
+ 0x7b, 0xa7, 0xff, 0x00, 0x43, 0x27, 0xbe, 0xe7, 0x72, 0xad, 0xb5, 0xd2,
+ 0x07, 0x63, 0xe3, 0xda, 0x53, 0x60, 0x52, 0x2c, 0xc2, 0xa5, 0xf6, 0x13,
+ 0xb9, 0xed, 0x0e, 0x3b, 0x7d, 0xa3, 0x5f, 0x82, 0x31, 0xc7, 0xaa, 0x3b,
+ 0xe9, 0xc7, 0xb8, 0xff, 0x00, 0x7a, 0x4a, 0x47, 0xb9, 0xdf, 0x15, 0x2d,
+ 0x44, 0x0f, 0x14, 0xbe, 0xcb, 0x54, 0xce, 0xa6, 0x79, 0x97, 0x38, 0xff,
+ 0x00, 0x15, 0x5b, 0xa8, 0x30, 0xe3, 0xe2, 0xdf, 0x7b, 0x18, 0xc2, 0xd6,
+ 0x34, 0x16, 0x00, 0x0e, 0xe0, 0x7f, 0x38, 0x92, 0x4a, 0x4a, 0x6b, 0x75,
+ 0x1e, 0xb3, 0x56, 0x09, 0x73, 0x36, 0x17, 0xb9, 0xa2, 0x5d, 0xae, 0x82,
+ 0x7b, 0x2c, 0x1b, 0xbe, 0xb5, 0x67, 0x49, 0x73, 0x08, 0x6d, 0x3a, 0xb4,
+ 0x07, 0x01, 0xaa, 0xa7, 0x40, 0xcd, 0xeb, 0x59, 0x46, 0x9c, 0x66, 0x93,
+ 0x04, 0x97, 0x13, 0xc7, 0xcd, 0x1b, 0x2b, 0xa4, 0x57, 0x8d, 0x63, 0x59,
+ 0x7e, 0xe7, 0xbd, 0xbf, 0x20, 0x27, 0xc9, 0x25, 0x3a, 0x95, 0x7d, 0x76,
+ 0xc4, 0x73, 0x6b, 0x19, 0x35, 0x39, 0x96, 0xe9, 0xb9, 0xcc, 0x20, 0xb7,
+ 0xe2, 0xba, 0x1f, 0xda, 0xdd, 0x3b, 0xf6, 0x6f, 0xdb, 0x7e, 0xd0, 0xdf,
+ 0xb3, 0xff, 0x00, 0xa5, 0x9f, 0xce, 0xf0, 0xf1, 0x9f, 0x25, 0xe6, 0x7d,
+ 0x43, 0x1d, 0xcc, 0x2e, 0x1e, 0x99, 0x05, 0xa7, 0x43, 0xe0, 0x3c, 0xc2,
+ 0xad, 0x16, 0xfa, 0x5e, 0x9c, 0xbb, 0x67, 0xd2, 0xdb, 0x26, 0x26, 0x22,
+ 0x52, 0x53, 0xb1, 0x87, 0xd4, 0xf3, 0x33, 0xa8, 0xc8, 0xc6, 0xb9, 0xc0,
+ 0xd6, 0xd1, 0x5b, 0x40, 0x00, 0x09, 0x05, 0xe0, 0x6a, 0x97, 0x50, 0xa8,
+ 0x57, 0x94, 0xf6, 0x81, 0x03, 0x73, 0x60, 0x7c, 0x90, 0xfa, 0x35, 0x5e,
+ 0xdc, 0xa7, 0x70, 0x03, 0xa9, 0x13, 0xf1, 0x7a, 0xb1, 0xd5, 0xbf, 0xa5,
+ 0xc4, 0xce, 0xad, 0x49, 0x4b, 0x65, 0x32, 0xa0, 0x2a, 0x24, 0x48, 0xd9,
+ 0x2f, 0x8e, 0x4e, 0xaa, 0xf3, 0x31, 0x6d, 0xb9, 0xad, 0x77, 0xa8, 0xea,
+ 0x6b, 0x74, 0x38, 0x36, 0xb3, 0xb5, 0xc6, 0x47, 0xe7, 0x38, 0x7e, 0x45,
+ 0x50, 0xd7, 0xeb, 0x64, 0x63, 0xd3, 0x3f, 0x48, 0x37, 0x70, 0xf2, 0x26,
+ 0x7f, 0x22, 0xd9, 0x70, 0x82, 0x00, 0x10, 0x06, 0x89, 0x29, 0xab, 0xf6,
+ 0x1a, 0xcc, 0x97, 0x3e, 0xd3, 0xe6, 0x6c, 0x77, 0xf7, 0xa4, 0x70, 0x31,
+ 0xb6, 0x8d, 0xe0, 0xd9, 0xb4, 0xcb, 0x43, 0xdc, 0x5c, 0x01, 0x3c, 0xc4,
+ 0x95, 0x60, 0x19, 0x9e, 0xe4, 0xf2, 0x98, 0x91, 0xa0, 0x49, 0x48, 0xc6,
+ 0x2d, 0x03, 0x50, 0xc0, 0x08, 0xe0, 0x8d, 0x35, 0x42, 0x7e, 0x33, 0x46,
+ 0xe2, 0xc7, 0x16, 0x92, 0x7b, 0xeb, 0xf9, 0x51, 0xdd, 0x64, 0x02, 0xa0,
+ 0x74, 0xf9, 0x0f, 0xc5, 0x25, 0x22, 0x65, 0x5b, 0x0b, 0x8c, 0xcb, 0x9e,
+ 0x43, 0x67, 0xc8, 0x6a, 0x52, 0xf5, 0x7d, 0x33, 0x0e, 0xfa, 0x2e, 0xe0,
+ 0xfe, 0xe8, 0x1c, 0xa3, 0x0d, 0x00, 0x91, 0xf4, 0x04, 0x9f, 0x89, 0x55,
+ 0xb3, 0x69, 0x73, 0xab, 0x96, 0xea, 0x34, 0xde, 0xdf, 0x89, 0x49, 0x49,
+ 0x4c, 0x38, 0x7b, 0x48, 0xf4, 0xf8, 0x6f, 0x9e, 0x8a, 0x0c, 0x3a, 0x9f,
+ 0x88, 0x54, 0xf0, 0x72, 0xdc, 0xed, 0xf8, 0xcf, 0x31, 0x63, 0x0c, 0x80,
+ 0x7c, 0x01, 0x84, 0x76, 0x58, 0x43, 0xe0, 0x69, 0x32, 0x3e, 0xe4, 0x94,
+ 0xd9, 0xac, 0x48, 0x79, 0x3c, 0x7f, 0x73, 0x8a, 0x89, 0x26, 0x0b, 0x7b,
+ 0xb4, 0x90, 0x3e, 0x1c, 0xa8, 0xe3, 0x3b, 0x71, 0x78, 0xef, 0x2f, 0x1f,
+ 0x8a, 0x9c, 0x6e, 0x71, 0x8e, 0xee, 0x1a, 0x79, 0x10, 0x92, 0x9c, 0x7c,
+ 0xe6, 0x91, 0xd4, 0xab, 0xb2, 0x24, 0x5a, 0xc9, 0x93, 0xd8, 0xb4, 0x16,
+ 0xa3, 0x63, 0xe1, 0xb3, 0x21, 0xb2, 0xe7, 0xb8, 0x6a, 0x22, 0x0f, 0x82,
+ 0x97, 0x54, 0xa6, 0xd6, 0x1a, 0xb2, 0x43, 0x37, 0x55, 0x49, 0x15, 0xda,
+ 0xef, 0xdc, 0xf5, 0x0f, 0xb4, 0xfd, 0xe1, 0x3f, 0x4c, 0xb4, 0x34, 0xed,
+ 0x77, 0x64, 0x94, 0xde, 0xae, 0xb0, 0xc7, 0xfb, 0x5a, 0x26, 0x3d, 0xac,
+ 0x1e, 0x00, 0x44, 0xaa, 0xf9, 0x2c, 0x17, 0xcb, 0x6d, 0x91, 0x07, 0x58,
+ 0xe4, 0x2b, 0x22, 0xe0, 0xdb, 0x03, 0x98, 0xef, 0x74, 0xc9, 0x00, 0x03,
+ 0x23, 0xc0, 0xca, 0x1e, 0x45, 0xe5, 0xd6, 0x17, 0x58, 0x35, 0x26, 0x64,
+ 0x81, 0x31, 0xe1, 0xa0, 0x09, 0x29, 0xcb, 0xca, 0xa8, 0x03, 0x0d, 0xfe,
+ 0x6c, 0xf6, 0xf0, 0x85, 0xd7, 0xfd, 0x4c, 0xa1, 0x87, 0xa0, 0x34, 0x81,
+ 0x02, 0xf7, 0x59, 0xbe, 0x39, 0x12, 0x76, 0x9f, 0xba, 0x17, 0x3b, 0xf6,
+ 0x5f, 0xb6, 0x66, 0xd3, 0x89, 0x51, 0x87, 0x5e, 0xed, 0x80, 0xf3, 0x13,
+ 0xc9, 0xf9, 0x05, 0xdd, 0xe3, 0xe0, 0xe1, 0xe1, 0x51, 0x5e, 0x2d, 0x0c,
+ 0x6b, 0x2a, 0xac, 0x6d, 0x60, 0xf1, 0x3c, 0x9e, 0x79, 0x27, 0x94, 0x94,
+ 0xf9, 0x56, 0x4e, 0x05, 0xdd, 0x37, 0x32, 0xdc, 0x4c, 0x86, 0x96, 0xbe,
+ 0xa7, 0x44, 0x1e, 0xed, 0x3f, 0x45, 0xc3, 0xc8, 0x85, 0xd1, 0x7d, 0x52,
+ 0xe9, 0x95, 0x75, 0x0c, 0xa7, 0x3b, 0x22, 0xb1, 0xb1, 0xe0, 0xb6, 0xb7,
+ 0x91, 0xa8, 0x2d, 0x05, 0xd2, 0xcf, 0xe2, 0xa7, 0xf5, 0xcb, 0xa7, 0xdb,
+ 0x7f, 0x5a, 0xc4, 0x6b, 0x18, 0x19, 0x5d, 0x94, 0xc7, 0xa8, 0x07, 0x3b,
+ 0x5c, 0x77, 0x4f, 0xc2, 0x42, 0xea, 0x3e, 0xac, 0x61, 0xe3, 0xd5, 0x8e,
+ 0xdb, 0x5b, 0xa1, 0xaa, 0x58, 0xd6, 0x8f, 0x00, 0x21, 0x25, 0x33, 0xc7,
+ 0xfa, 0xb9, 0xe9, 0x38, 0x07, 0xb9, 0xa5, 0xa3, 0x92, 0x24, 0x9f, 0xb8,
+ 0xe8, 0xb6, 0x99, 0x45, 0x35, 0xb0, 0x56, 0xd6, 0x0d, 0xad, 0x10, 0x04,
+ 0x05, 0x30, 0x41, 0x00, 0x8e, 0x0a, 0x62, 0x61, 0xc3, 0xc2, 0x12, 0x52,
+ 0xc2, 0xaa, 0xc6, 0xbb, 0x1a, 0x0f, 0xc0, 0x2c, 0xbc, 0xd6, 0x51, 0x66,
+ 0x49, 0xae, 0xc6, 0x07, 0x6d, 0x6b, 0x9c, 0xe1, 0x1c, 0xc3, 0x4c, 0x2d,
+ 0x50, 0x75, 0x3e, 0x4b, 0x2f, 0x2d, 0xbf, 0xae, 0xbd, 0xe7, 0x40, 0x2a,
+ 0x71, 0x3e, 0x7a, 0x42, 0x4a, 0x72, 0xd9, 0xd1, 0xf1, 0x32, 0x2b, 0x61,
+ 0x03, 0x63, 0xde, 0xe2, 0x3c, 0xbe, 0x2a, 0x95, 0xdd, 0x1d, 0xac, 0xbe,
+ 0xea, 0x59, 0x2f, 0x35, 0x1e, 0x47, 0x84, 0x05, 0xbf, 0xd2, 0xeb, 0x69,
+ 0xda, 0xe3, 0xae, 0xd2, 0xed, 0x3e, 0x03, 0xfd, 0xaa, 0x96, 0x55, 0x39,
+ 0x0d, 0xb2, 0xcc, 0x97, 0xb0, 0xb5, 0x96, 0xb8, 0x8d, 0xd3, 0xe3, 0xdb,
+ 0x44, 0x94, 0xe2, 0x3f, 0x05, 0xa0, 0x8d, 0xa4, 0x9f, 0x88, 0x51, 0x76,
+ 0x35, 0x95, 0x82, 0xe1, 0xee, 0x68, 0x1a, 0xc7, 0x30, 0xb4, 0x9c, 0xc0,
+ 0xe0, 0x4f, 0x70, 0x9b, 0x4d, 0xa3, 0xc9, 0x25, 0x37, 0x7a, 0x63, 0xec,
+ 0x18, 0x14, 0x8f, 0x4d, 0xce, 0x21, 0xa5, 0xb3, 0xa0, 0xd0, 0x13, 0x1c,
+ 0x95, 0x64, 0xbe, 0xcf, 0xf4, 0x67, 0xef, 0x6f, 0xf7, 0xa8, 0x60, 0xbe,
+ 0x71, 0xc3, 0x4f, 0xe6, 0x92, 0xd1, 0x1e, 0x1d, 0x91, 0x8f, 0x10, 0x92,
+ 0x98, 0x6e, 0x71, 0x00, 0x6c, 0x20, 0xf7, 0xd4, 0x20, 0xe6, 0xb4, 0xdb,
+ 0x89, 0x6b, 0x1c, 0xd3, 0xf4, 0x49, 0x80, 0xee, 0x63, 0xc5, 0x59, 0xf3,
+ 0x48, 0xf0, 0x41, 0xe0, 0xa4, 0xa7, 0x1b, 0x05, 0xd8, 0x1d, 0x2b, 0x26,
+ 0xea, 0x31, 0x60, 0xdb, 0xe9, 0xd7, 0x65, 0xcf, 0x77, 0x0d, 0x75, 0x87,
+ 0x6c, 0x08, 0xf3, 0xfc, 0xab, 0x2b, 0xad, 0x67, 0x43, 0x9e, 0xfa, 0x00,
+ 0xb6, 0xf0, 0x64, 0xc6, 0xbb, 0x48, 0xee, 0x47, 0x92, 0x6e, 0xbf, 0x55,
+ 0x95, 0x9c, 0x90, 0xf0, 0x6b, 0x76, 0x55, 0x94, 0x80, 0xe1, 0xc3, 0x59,
+ 0x5b, 0x4c, 0x38, 0xbb, 0xc3, 0x7c, 0x15, 0x1f, 0xab, 0xb8, 0x65, 0xb6,
+ 0xfe, 0xd9, 0xbd, 0xec, 0x6d, 0x6c, 0x0f, 0xaa, 0x01, 0x2e, 0xf5, 0x2c,
+ 0x07, 0x6b, 0x9d, 0xaf, 0x62, 0x92, 0x9a, 0x58, 0xbd, 0x17, 0xa8, 0x66,
+ 0xd4, 0xec, 0xeb, 0x03, 0xab, 0xa4, 0x33, 0x73, 0x8b, 0x8f, 0xb9, 0xee,
+ 0xf2, 0x54, 0xb6, 0x53, 0xbb, 0xd5, 0xef, 0x11, 0x1d, 0xa7, 0xc6, 0x3e,
+ 0x0b, 0x67, 0x37, 0xaa, 0x5f, 0x56, 0x4e, 0x47, 0xd8, 0xaa, 0xb0, 0xf4,
+ 0xc7, 0x92, 0xd7, 0xba, 0xc2, 0x58, 0xc6, 0x91, 0xd9, 0xbb, 0xbb, 0xa8,
+ 0xfd, 0x94, 0x7e, 0xdb, 0xe0, 0x7f, 0x40, 0xdd, 0xe9, 0x48, 0x9d, 0xfe,
+ 0x84, 0x6d, 0xdb, 0xe3, 0xe4, 0x92, 0x9a, 0x5d, 0x11, 0x80, 0xd7, 0x98,
+ 0x38, 0x05, 0xd4, 0xe9, 0xe7, 0xea, 0x23, 0xf5, 0x9a, 0x9a, 0x72, 0x01,
+ 0x88, 0x3b, 0x04, 0x79, 0xea, 0x75, 0x40, 0xe9, 0x1b, 0x9b, 0x5e, 0x43,
+ 0xb8, 0x05, 0xf4, 0x8f, 0xfa, 0x6a, 0xdf, 0x54, 0x61, 0x7e, 0x75, 0x75,
+ 0x83, 0x25, 0xc1, 0x8d, 0x1f, 0x32, 0x92, 0x90, 0xd7, 0x53, 0x9b, 0xd7,
+ 0xd8, 0xd2, 0x20, 0x32, 0xa6, 0x38, 0xfc, 0xab, 0xff, 0x00, 0x6a, 0xe8,
+ 0xe8, 0xe9, 0x39, 0xf9, 0x7b, 0x5c, 0xca, 0xcb, 0x58, 0xed, 0x43, 0xdf,
+ 0xa3, 0x63, 0xc5, 0x66, 0x7d, 0x8d, 0xcd, 0xea, 0xb9, 0x19, 0x67, 0xe8,
+ 0x10, 0xda, 0xea, 0xf9, 0x35, 0xa1, 0xcb, 0xd0, 0x2a, 0x68, 0xae, 0x96,
+ 0x30, 0x7e, 0x6b, 0x40, 0xfb, 0x82, 0x4a, 0x71, 0x2b, 0xfa, 0xaf, 0x4b,
+ 0x58, 0x7d, 0x5b, 0x9c, 0x5e, 0x7b, 0xb0, 0x00, 0x07, 0xde, 0x81, 0x67,
+ 0xd5, 0xba, 0x5a, 0x4b, 0x8e, 0x43, 0x88, 0x1c, 0xe8, 0x16, 0xfd, 0xaf,
+ 0x80, 0x55, 0x3b, 0x5e, 0x60, 0xcf, 0x00, 0xeb, 0x29, 0x29, 0xc1, 0xea,
+ 0x1d, 0x31, 0x95, 0xd6, 0x05, 0x2d, 0x97, 0xb6, 0x1d, 0xa7, 0x26, 0x67,
+ 0x4f, 0xc1, 0x66, 0x9a, 0x2e, 0xd8, 0x5d, 0xb0, 0xed, 0x04, 0x02, 0x7c,
+ 0xfc, 0x16, 0xbe, 0x51, 0xb1, 0xd9, 0xad, 0x61, 0x31, 0x58, 0x6f, 0xd2,
+ 0xf8, 0x13, 0x2b, 0x1c, 0xde, 0x5e, 0x76, 0xb3, 0xdb, 0x59, 0x71, 0x73,
+ 0x5b, 0xfe, 0xbe, 0x49, 0x29, 0x68, 0x7e, 0x8d, 0x23, 0xbc, 0x91, 0xf0,
+ 0x51, 0x25, 0xc4, 0xb4, 0x11, 0xa1, 0x3b, 0x9d, 0xf0, 0x1c, 0x22, 0x36,
+ 0x0e, 0xb3, 0xcf, 0x1f, 0x00, 0x81, 0x7d, 0xe1, 0x8d, 0x27, 0xb9, 0x1a,
+ 0x01, 0xe1, 0xd9, 0x25, 0x39, 0xdd, 0x41, 0x82, 0xab, 0x19, 0x98, 0x04,
+ 0x58, 0xd1, 0xb9, 0xf1, 0xdc, 0x38, 0xf0, 0x7e, 0x48, 0x82, 0xe6, 0x3d,
+ 0xf5, 0x3d, 0x9a, 0xb2, 0xcd, 0x41, 0xf3, 0x54, 0xba, 0x9d, 0xd9, 0x0e,
+ 0x9a, 0x76, 0x92, 0x63, 0x79, 0x77, 0x68, 0x40, 0xe9, 0x56, 0x18, 0x73,
+ 0x6d, 0x7c, 0x06, 0x19, 0x13, 0xcb, 0x4c, 0x11, 0xf9, 0x4a, 0x4a, 0x77,
+ 0x31, 0x64, 0x5e, 0x5b, 0xfc, 0xa3, 0xf8, 0x84, 0x5a, 0xde, 0x7d, 0x4d,
+ 0xa7, 0xbc, 0x7f, 0xaf, 0xe0, 0xab, 0xe3, 0x97, 0x3a, 0xd0, 0xf6, 0x34,
+ 0xba, 0x40, 0x97, 0x70, 0x37, 0x77, 0x47, 0x6b, 0x0b, 0x7d, 0xce, 0xb1,
+ 0xa1, 0xda, 0xf9, 0xea, 0x52, 0x52, 0x77, 0x60, 0x65, 0xf5, 0x36, 0xbf,
+ 0x03, 0x1a, 0xc6, 0x55, 0x5e, 0x40, 0x6f, 0xda, 0x5e, 0xf1, 0x24, 0x57,
+ 0x5b, 0xb7, 0x7b, 0x07, 0x8c, 0xc2, 0xcf, 0xea, 0xfd, 0x3b, 0xf6, 0x3f,
+ 0x52, 0xf4, 0x1a, 0xf2, 0xea, 0x5e, 0xd0, 0xfa, 0xde, 0x62, 0x48, 0x3a,
+ 0x1d, 0xd1, 0xde, 0x42, 0xb4, 0x3a, 0xd1, 0xe9, 0x2c, 0x7d, 0xcd, 0xab,
+ 0xd7, 0xb1, 0xe3, 0x6b, 0x5c, 0x7d, 0xa1, 0x91, 0xdc, 0xf7, 0x21, 0x73,
+ 0x3d, 0x47, 0xac, 0x66, 0x75, 0x0c, 0xbf, 0xb4, 0xe4, 0xbf, 0x7b, 0xe3,
+ 0x68, 0x03, 0x46, 0x86, 0xf8, 0x00, 0x92, 0x9d, 0x7a, 0xde, 0x5d, 0xb8,
+ 0x34, 0x17, 0x3c, 0x6a, 0xd0, 0x1d, 0xb4, 0x7c, 0xd0, 0x6b, 0xab, 0x21,
+ 0x96, 0x39, 0xf9, 0x16, 0x97, 0x49, 0x9f, 0x4c, 0x19, 0x68, 0xfb, 0xd5,
+ 0x6c, 0x5c, 0x9a, 0x5c, 0x35, 0x78, 0x1e, 0x47, 0x42, 0x9b, 0x37, 0xa8,
+ 0x56, 0xd6, 0xec, 0xa1, 0xdb, 0x9c, 0x74, 0x91, 0xc0, 0x49, 0x4f, 0x43,
+ 0xd3, 0x7a, 0x23, 0xfa, 0x86, 0x3b, 0x73, 0xd9, 0x99, 0x66, 0x25, 0x8d,
+ 0x7b, 0x85, 0x4e, 0xab, 0x90, 0x1b, 0xed, 0x3a, 0xe8, 0xae, 0x8f, 0xab,
+ 0x34, 0x31, 0xf5, 0xdf, 0x46, 0x6e, 0x43, 0x72, 0x6a, 0x78, 0xb1, 0xb7,
+ 0x3d, 0xde, 0xa7, 0xbc, 0x7e, 0x76, 0xd7, 0x68, 0xb9, 0x9e, 0x91, 0xd4,
+ 0x3a, 0xb6, 0x13, 0x21, 0x96, 0xb9, 0x94, 0x09, 0x2d, 0xa5, 0xda, 0xb6,
+ 0x4e, 0xa4, 0xc1, 0x5b, 0x14, 0xfd, 0x64, 0xca, 0x00, 0x8b, 0xd8, 0xdb,
+ 0x1a, 0x78, 0x23, 0xda, 0xe1, 0x1f, 0x81, 0x49, 0x4e, 0x9e, 0x6e, 0x5e,
+ 0x45, 0xe6, 0xaa, 0xb2, 0xf6, 0x9b, 0x28, 0xdc, 0xe7, 0x96, 0x08, 0x06,
+ 0x4e, 0xd6, 0x98, 0x93, 0x12, 0x04, 0xc2, 0xe8, 0x3a, 0x65, 0xf8, 0xc2,
+ 0x8a, 0xe8, 0xac, 0x7a, 0x61, 0x82, 0x4f, 0x8b, 0xc9, 0xe4, 0xfc, 0xd7,
+ 0x31, 0x5d, 0xac, 0xc8, 0xdd, 0x93, 0x6c, 0xcd, 0x90, 0x4b, 0x47, 0x03,
+ 0xc0, 0x2b, 0x74, 0x64, 0xd8, 0x1e, 0xd8, 0x1b, 0x76, 0x10, 0x63, 0xc1,
+ 0x25, 0x3d, 0x83, 0x09, 0x2d, 0x13, 0xca, 0x4f, 0x80, 0x27, 0xc1, 0x56,
+ 0xc2, 0xbc, 0x5b, 0x5e, 0x9c, 0xf2, 0xac, 0xb8, 0x4b, 0x48, 0x49, 0x4c,
+ 0x43, 0xa5, 0xbb, 0x87, 0x75, 0x99, 0x9e, 0x5c, 0x2e, 0xb1, 0xc3, 0xe8,
+ 0x9a, 0xf6, 0xcf, 0x99, 0x2b, 0x49, 0xb0, 0x2b, 0xfc, 0x8b, 0x3b, 0xab,
+ 0x37, 0x6b, 0x19, 0x1c, 0xb8, 0xeb, 0xf2, 0x49, 0x4c, 0xba, 0x40, 0x1b,
+ 0x5e, 0x7b, 0x83, 0xfc, 0x14, 0x7a, 0xc5, 0xb1, 0x8b, 0xe9, 0x00, 0x3f,
+ 0x48, 0x34, 0x9e, 0xc7, 0x90, 0xa1, 0xd2, 0xdf, 0xb7, 0x23, 0x6f, 0x01,
+ 0xe0, 0x8f, 0x98, 0x43, 0xeb, 0x66, 0x2f, 0x68, 0xe6, 0x58, 0x34, 0xf8,
+ 0x4a, 0x4a, 0x72, 0x2b, 0xc9, 0x22, 0x43, 0x81, 0x12, 0x36, 0x90, 0x46,
+ 0x9a, 0xa4, 0x0c, 0x46, 0xb3, 0x3a, 0x7d, 0xea, 0x6c, 0xb1, 0xac, 0x6c,
+ 0xbb, 0x56, 0x4c, 0x13, 0xe1, 0xf1, 0x52, 0x6b, 0x28, 0x25, 0xce, 0x68,
+ 0x07, 0xc0, 0x1e, 0x12, 0x53, 0x3a, 0x4c, 0x92, 0x09, 0x20, 0x79, 0x12,
+ 0x3f, 0x22, 0x30, 0x6b, 0x00, 0xef, 0xfe, 0x73, 0xbf, 0xbd, 0x56, 0xa8,
+ 0x90, 0xf2, 0x07, 0xb8, 0x89, 0x1c, 0xc7, 0x05, 0x18, 0xfa, 0x84, 0xff,
+ 0x00, 0x37, 0xff, 0x00, 0x4e, 0x3f, 0x82, 0x4a, 0x67, 0xb1, 0x8e, 0x1a,
+ 0x82, 0x62, 0x7b, 0x9f, 0xef, 0x49, 0xb5, 0x56, 0x4c, 0x16, 0xc8, 0xfb,
+ 0xd3, 0x03, 0x60, 0xd3, 0x60, 0x1e, 0x3e, 0xff, 0x00, 0xfc, 0xc5, 0x38,
+ 0x75, 0x83, 0xf3, 0x1b, 0xfe, 0x71, 0xff, 0x00, 0xc8, 0xa4, 0xa5, 0xee,
+ 0xe9, 0x8e, 0xcc, 0xa4, 0xd7, 0x5d, 0x4c, 0xda, 0x60, 0x17, 0xbc, 0xc3,
+ 0x40, 0xfb, 0x8e, 0xa1, 0x73, 0xf9, 0xdd, 0x3f, 0x2f, 0xa6, 0x17, 0x36,
+ 0x86, 0xfb, 0x58, 0x77, 0x5b, 0x4b, 0xa7, 0x61, 0x23, 0xf3, 0x87, 0xc5,
+ 0x77, 0xf5, 0x52, 0xda, 0x68, 0x6d, 0x4d, 0x00, 0x40, 0xd7, 0xb8, 0x24,
+ 0xf3, 0x3f, 0x15, 0x8d, 0xd7, 0x5e, 0x19, 0x87, 0x93, 0x63, 0x07, 0x0c,
+ 0x0d, 0x04, 0xf9, 0x03, 0x21, 0x25, 0x38, 0xcd, 0x75, 0x35, 0xe2, 0xb3,
+ 0xaa, 0xfd, 0x61, 0x68, 0x36, 0xbb, 0xdf, 0x8b, 0x84, 0x4c, 0x86, 0xc7,
+ 0x0f, 0x70, 0xf1, 0x77, 0xe4, 0x5c, 0xc7, 0xed, 0x47, 0x7e, 0xd6, 0xfd,
+ 0xa7, 0x1f, 0xa4, 0xf5, 0x37, 0xed, 0x9e, 0xd3, 0xf4, 0x67, 0xe0, 0xb5,
+ 0xfe, 0xb9, 0x35, 0xd7, 0x37, 0x17, 0x31, 0x8e, 0x9a, 0xec, 0xad, 0xa5,
+ 0x8d, 0xec, 0x25, 0xb2, 0xb2, 0x3f, 0x60, 0xdd, 0xfc, 0xef, 0xda, 0x19,
+ 0xf6, 0x5f, 0x4f, 0x7f, 0xab, 0xde, 0x62, 0x76, 0xed, 0x49, 0x4e, 0x8f,
+ 0x47, 0xc3, 0x7b, 0xdb, 0x7b, 0x00, 0xd4, 0x5b, 0x53, 0x4c, 0xf6, 0xf7,
+ 0x15, 0x6f, 0x39, 0x82, 0xae, 0xb7, 0x40, 0x7c, 0x34, 0x34, 0xd7, 0x24,
+ 0xf1, 0x3d, 0x96, 0x87, 0x43, 0x6e, 0x38, 0xc6, 0x7e, 0x45, 0x41, 0xcf,
+ 0xb8, 0xda, 0xd3, 0x91, 0x58, 0x83, 0xa3, 0x0f, 0xb5, 0xcd, 0x0a, 0xbf,
+ 0x5a, 0xe9, 0x99, 0xd9, 0xfd, 0x40, 0xde, 0xca, 0xf6, 0x54, 0x76, 0x00,
+ 0xe7, 0x10, 0x3b, 0x44, 0xc2, 0x4a, 0x5f, 0x31, 0xd1, 0x7d, 0x91, 0xd9,
+ 0xcb, 0xb4, 0xa5, 0xe2, 0xcc, 0x7a, 0xde, 0x0c, 0x87, 0x30, 0x19, 0xf9,
+ 0x2e, 0x0d, 0xe4, 0x8d, 0x1c, 0x77, 0x38, 0x68, 0x49, 0xee, 0x42, 0xd4,
+ 0xe9, 0x1f, 0x58, 0x3e, 0xce, 0xdf, 0xb2, 0xe5, 0x1f, 0xd1, 0xc1, 0xf4,
+ 0xdd, 0xfb, 0xbe, 0x45, 0x25, 0x3d, 0x15, 0xa4, 0x10, 0xb3, 0xf2, 0x6e,
+ 0x0c, 0x69, 0x25, 0xd1, 0xac, 0x23, 0x9b, 0xd9, 0x63, 0x03, 0xd8, 0xe0,
+ 0xe0, 0x78, 0x20, 0xac, 0xcc, 0xdb, 0x1a, 0x20, 0x9e, 0x09, 0xd4, 0x24,
+ 0xa7, 0x37, 0x3f, 0x39, 0xcf, 0x6d, 0x81, 0x90, 0x03, 0x86, 0xc0, 0x47,
+ 0x87, 0x1f, 0xc5, 0x67, 0x87, 0x47, 0x03, 0x81, 0x01, 0x4e, 0xff, 0x00,
+ 0x75, 0xb6, 0x10, 0x46, 0xd6, 0x1f, 0xca, 0x84, 0xd9, 0x3b, 0x47, 0x8e,
+ 0xa9, 0x29, 0x99, 0xd0, 0x10, 0x0f, 0x02, 0x12, 0x15, 0x37, 0x41, 0x12,
+ 0xe8, 0x0d, 0x9f, 0xca, 0x90, 0x83, 0x03, 0xce, 0x53, 0xcc, 0x00, 0x4f,
+ 0x83, 0x9d, 0xf7, 0xa4, 0xa6, 0x87, 0x54, 0x7b, 0x45, 0x2f, 0x2c, 0xd0,
+ 0x36, 0x77, 0x1f, 0x21, 0xa4, 0x2e, 0x7b, 0x12, 0xc7, 0xd2, 0xef, 0x51,
+ 0xb0, 0xe1, 0xc3, 0x9a, 0x55, 0xee, 0xb5, 0x6d, 0xbe, 0xca, 0xc1, 0x8a,
+ 0x8f, 0x3f, 0xca, 0x70, 0x03, 0x55, 0x9e, 0xc6, 0x38, 0xb3, 0x70, 0x69,
+ 0x81, 0xa9, 0x78, 0xd6, 0x07, 0x9a, 0x4a, 0x76, 0xdb, 0xd5, 0x71, 0x80,
+ 0x00, 0xb9, 0xd7, 0x11, 0xf9, 0x8d, 0xf6, 0x34, 0x7c, 0x51, 0x3f, 0x6b,
+ 0xdd, 0x11, 0x55, 0x55, 0xd7, 0xe7, 0x1b, 0x8f, 0xf0, 0x59, 0x37, 0xed,
+ 0x6d, 0x78, 0xe3, 0x63, 0x43, 0xc8, 0x2e, 0x75, 0x8d, 0x74, 0xef, 0x04,
+ 0xe9, 0x23, 0xb4, 0x22, 0x31, 0xd2, 0x12, 0x53, 0x66, 0xcc, 0xdc, 0x8b,
+ 0xed, 0x0d, 0xb9, 0xc1, 0xcd, 0xe4, 0x40, 0x02, 0x0f, 0xc9, 0x39, 0xe9,
+ 0x98, 0xf7, 0x8f, 0xa3, 0xb5, 0xdf, 0xbc, 0xdd, 0x15, 0x76, 0x98, 0xbe,
+ 0xb3, 0xfc, 0xa0, 0x3e, 0xf5, 0xb6, 0xca, 0xf6, 0x00, 0x7b, 0x0e, 0x7e,
+ 0x05, 0x25, 0x3c, 0xd3, 0xf0, 0x2f, 0x6b, 0xdd, 0x58, 0xad, 0xc4, 0x82,
+ 0x40, 0xd3, 0x94, 0xe7, 0xa6, 0xe5, 0x34, 0x07, 0x3d, 0xbb, 0x07, 0x89,
+ 0x23, 0xf8, 0x2e, 0x91, 0xd5, 0x43, 0x89, 0x1a, 0xce, 0xa9, 0xac, 0xa0,
+ 0x39, 0x81, 0xae, 0x1c, 0x6b, 0x09, 0x29, 0xa9, 0x53, 0xc5, 0xb8, 0xed,
+ 0x93, 0xef, 0x00, 0x07, 0x4f, 0x88, 0xd2, 0x52, 0xb9, 0x9b, 0x04, 0x81,
+ 0xca, 0x3d, 0x38, 0xa3, 0x60, 0x2d, 0xe4, 0x38, 0x83, 0xf0, 0x0a, 0x39,
+ 0x22, 0x2c, 0xa9, 0x9d, 0x8b, 0xda, 0x3f, 0x10, 0x92, 0x9d, 0x6c, 0x79,
+ 0x15, 0xb3, 0x4d, 0x06, 0x92, 0x39, 0x95, 0x72, 0x8a, 0x8b, 0x75, 0x23,
+ 0xbe, 0xba, 0xa5, 0x50, 0x0d, 0x05, 0xba, 0x68, 0x65, 0x16, 0xbd, 0x79,
+ 0xe4, 0xa4, 0xa7, 0x47, 0x0e, 0xf3, 0x4b, 0xda, 0xe0, 0x74, 0x3a, 0x38,
+ 0x79, 0x15, 0xba, 0x08, 0x70, 0x07, 0xb1, 0x12, 0xb9, 0x96, 0x92, 0xd6,
+ 0x6b, 0xcc, 0xe8, 0xba, 0x2c, 0x53, 0x38, 0xd5, 0x13, 0xdd, 0xa3, 0xf2,
+ 0x24, 0xa6, 0x51, 0x3a, 0x76, 0x0a, 0x87, 0x55, 0x6c, 0xed, 0xd2, 0x64,
+ 0x40, 0x1e, 0x6b, 0x41, 0xbe, 0x6a, 0xbe, 0x43, 0x37, 0xd8, 0x67, 0xb4,
+ 0x1f, 0xb9, 0x25, 0x39, 0x78, 0x6f, 0xd9, 0x93, 0x51, 0xfe, 0x50, 0x07,
+ 0xe7, 0xa2, 0x7e, 0xb4, 0x27, 0x21, 0x8e, 0xe4, 0x39, 0xa2, 0x3e, 0x45,
+ 0x56, 0x0e, 0x2c, 0x76, 0xe1, 0xa1, 0x6b, 0xa4, 0x7d, 0xea, 0xe6, 0x70,
+ 0x6d, 0xf8, 0xf5, 0x5d, 0x5e, 0xbb, 0x01, 0x0e, 0xf2, 0x04, 0xa4, 0xa7,
+ 0x2c, 0xb2, 0x0c, 0x8d, 0x27, 0x92, 0x3b, 0xa4, 0x1b, 0x13, 0xa6, 0x9c,
+ 0xa2, 0x48, 0xff, 0x00, 0x62, 0x5d, 0xa1, 0x25, 0x23, 0xc7, 0x11, 0x60,
+ 0x10, 0x4e, 0x84, 0xfe, 0x2a, 0xc0, 0x9f, 0x04, 0x06, 0x34, 0x17, 0x71,
+ 0x30, 0x22, 0x11, 0x0d, 0x40, 0x92, 0x40, 0x68, 0x3e, 0x30, 0x92, 0x92,
+ 0xc7, 0x88, 0xec, 0x96, 0xa0, 0x8d, 0x35, 0x41, 0xf4, 0xda, 0x22, 0x5a,
+ 0xd3, 0xf2, 0x0a, 0x40, 0x31, 0xdf, 0xe0, 0x9a, 0x0f, 0x13, 0xb4, 0x24,
+ 0xa7, 0xa1, 0xb2, 0xc0, 0xec, 0x51, 0x61, 0x21, 0xad, 0x73, 0x64, 0x9f,
+ 0x88, 0x5c, 0xdf, 0x57, 0x71, 0x6f, 0x4a, 0xb6, 0x5f, 0xbf, 0x7e, 0xe3,
+ 0xb8, 0xe8, 0x4f, 0x82, 0xd0, 0xa7, 0x2a, 0xd6, 0x63, 0x7a, 0x2c, 0x81,
+ 0xb6, 0x40, 0x31, 0xae, 0xbd, 0x82, 0xc9, 0xfa, 0xc9, 0x6e, 0xce, 0x9e,
+ 0xe6, 0x93, 0x26, 0x35, 0x29, 0x29, 0xce, 0xc8, 0xac, 0xe6, 0xfd, 0x56,
+ 0xc4, 0x78, 0xd5, 0xf5, 0x34, 0xb6, 0x7f, 0xa8, 0xe2, 0xdf, 0xe0, 0xb2,
+ 0xbe, 0xdd, 0x4f, 0xec, 0x4f, 0xb3, 0x47, 0xeb, 0x5b, 0xf6, 0xcf, 0x7d,
+ 0x9c, 0xad, 0xcf, 0xab, 0xaf, 0xae, 0xfe, 0x83, 0xe8, 0xfe, 0x75, 0x6f,
+ 0x7b, 0x5d, 0xfd, 0xa3, 0xb8, 0x2e, 0x77, 0xec, 0x4e, 0xfd, 0xa9, 0xe8,
+ 0x46, 0x9b, 0xb7, 0x7c, 0x92, 0x53, 0xa1, 0xf5, 0x67, 0x2b, 0x25, 0xbd,
+ 0x5a, 0xba, 0xab, 0x21, 0x8d, 0x35, 0x96, 0xb8, 0xb8, 0x12, 0x3c, 0x75,
+ 0xe3, 0xb8, 0x5d, 0x95, 0xa3, 0x21, 0xd0, 0x7d, 0x40, 0xf3, 0x30, 0x18,
+ 0x1a, 0x00, 0x33, 0xf7, 0x95, 0xc3, 0xd3, 0x92, 0xec, 0x0c, 0x86, 0xbc,
+ 0x19, 0x71, 0x20, 0xb1, 0xde, 0x03, 0xb8, 0x5d, 0x7f, 0xd5, 0xb6, 0x63,
+ 0xe6, 0xe4, 0xdb, 0xd4, 0x9f, 0x59, 0x37, 0xb5, 0xde, 0x9b, 0x6c, 0x71,
+ 0x27, 0xdd, 0xb7, 0xdf, 0x03, 0x40, 0x34, 0x80, 0x92, 0x9e, 0x7a, 0xf7,
+ 0xc1, 0x74, 0x8e, 0xe7, 0xe1, 0xca, 0xa8, 0xe2, 0xe8, 0xf7, 0x38, 0x13,
+ 0xcc, 0x85, 0xad, 0xd6, 0xf0, 0x1f, 0x56, 0x4d, 0xce, 0x68, 0x8c, 0x72,
+ 0xe2, 0x01, 0x1a, 0x8f, 0x82, 0xca, 0x2d, 0x68, 0xa3, 0x71, 0x8e, 0xe0,
+ 0x14, 0x94, 0x93, 0x13, 0xa8, 0xe4, 0x61, 0x99, 0x63, 0x89, 0x67, 0x76,
+ 0x1d, 0x44, 0x2d, 0x1b, 0x7a, 0x95, 0x39, 0x54, 0xfa, 0x84, 0x86, 0xb9,
+ 0x84, 0x02, 0xd3, 0xe6, 0xb1, 0x37, 0x6e, 0x01, 0xa3, 0xb9, 0x1a, 0xf9,
+ 0x05, 0x10, 0xe0, 0x6c, 0x88, 0xee, 0x4c, 0x79, 0x70, 0x3f, 0x22, 0x4a,
+ 0x6c, 0x1b, 0x03, 0x9e, 0xf3, 0xfb, 0xe7, 0xdb, 0x03, 0x98, 0x0a, 0x62,
+ 0xca, 0xc7, 0xb8, 0x11, 0xa8, 0xd1, 0x04, 0x90, 0x03, 0x08, 0xf1, 0x29,
+ 0xea, 0x01, 0xde, 0x8c, 0x76, 0x2e, 0x49, 0x49, 0xc3, 0xd9, 0x26, 0x08,
+ 0xd1, 0xa9, 0xad, 0xb6, 0xb6, 0x82, 0x09, 0x88, 0x81, 0xf2, 0x4c, 0xd1,
+ 0x0e, 0x6c, 0xfe, 0x6e, 0xbf, 0x7a, 0x57, 0x0d, 0xcd, 0xdb, 0xa4, 0x49,
+ 0xfc, 0x44, 0xa4, 0xa7, 0x2f, 0xaa, 0xe3, 0xbb, 0x2a, 0xb6, 0x1a, 0xbf,
+ 0x32, 0x48, 0xf3, 0x95, 0x88, 0x25, 0xb2, 0xc3, 0x2d, 0x3c, 0x38, 0x71,
+ 0xf7, 0xae, 0x96, 0xa8, 0x70, 0x2d, 0x3d, 0x8f, 0xe2, 0xa9, 0xf5, 0x3e,
+ 0x9e, 0x6d, 0x69, 0xba, 0xb1, 0x16, 0x37, 0x9f, 0xe5, 0x04, 0x94, 0xe5,
+ 0x35, 0xa1, 0x1e, 0xb7, 0x76, 0x55, 0x5b, 0xbf, 0x76, 0xde, 0xfc, 0xa3,
+ 0x32, 0xab, 0x49, 0x80, 0x47, 0x8a, 0x4a, 0x6d, 0x34, 0x6e, 0xb2, 0xb6,
+ 0x8d, 0x49, 0x70, 0x5d, 0x09, 0x02, 0x21, 0x63, 0xf4, 0xfc, 0x57, 0x07,
+ 0x0b, 0x6c, 0xd4, 0xb7, 0x81, 0xe0, 0xb5, 0xe4, 0x40, 0xf1, 0x09, 0x29,
+ 0x6d, 0xc5, 0xbc, 0xfe, 0x67, 0x74, 0x58, 0x0f, 0x6c, 0x85, 0x11, 0x1b,
+ 0xbc, 0x9d, 0xc7, 0xc5, 0x26, 0xfb, 0x03, 0xbc, 0x1a, 0x09, 0x1f, 0x04,
+ 0x94, 0xb5, 0x2d, 0x3e, 0x97, 0xf6, 0x8f, 0xe5, 0x55, 0x33, 0x21, 0xb6,
+ 0xd4, 0xe3, 0xc0, 0x7b, 0x4f, 0xfd, 0x25, 0x7e, 0xb6, 0x16, 0xb1, 0x9d,
+ 0x89, 0xd4, 0xfc, 0xd6, 0x6f, 0x59, 0x25, 0xb5, 0xee, 0x1a, 0x11, 0x24,
+ 0x7c, 0x42, 0x4a, 0x7a, 0x37, 0x07, 0x07, 0x9e, 0xda, 0xea, 0x8d, 0x58,
+ 0x32, 0x0a, 0x83, 0x48, 0xb5, 0x95, 0x59, 0xdd, 0xcc, 0x04, 0xfc, 0xc2,
+ 0x20, 0x11, 0xa0, 0x49, 0x49, 0xc7, 0x7f, 0x35, 0xbd, 0x83, 0xee, 0xc3,
+ 0xa7, 0xfa, 0xbf, 0x91, 0x60, 0x83, 0x00, 0x3b, 0xb1, 0xd0, 0xad, 0xde,
+ 0x9a, 0x67, 0x0a, 0xaf, 0x81, 0xfc, 0xa5, 0x25, 0x36, 0x47, 0x25, 0x03,
+ 0x20, 0x86, 0x6f, 0x7b, 0x8c, 0x0d, 0xb1, 0x28, 0xc0, 0xea, 0x50, 0x32,
+ 0xd8, 0x1e, 0xd8, 0x70, 0x91, 0xc4, 0x24, 0xa7, 0x06, 0xf0, 0xd6, 0x58,
+ 0x58, 0x3c, 0x01, 0xfb, 0xc2, 0x35, 0x19, 0x55, 0xd3, 0x8e, 0xf6, 0x46,
+ 0xe7, 0xb8, 0xf0, 0x78, 0x84, 0xfd, 0x4a, 0xb6, 0xb2, 0xf1, 0x1d, 0xda,
+ 0x09, 0xfc, 0x8a, 0xab, 0x5a, 0x5c, 0x4c, 0x68, 0x3b, 0x92, 0x92, 0x98,
+ 0x11, 0xf2, 0x4c, 0x5c, 0x74, 0xfc, 0x51, 0x1c, 0xf6, 0x00, 0x58, 0xd0,
+ 0x1c, 0xe1, 0xf9, 0xc7, 0xf8, 0x20, 0xea, 0x7e, 0x29, 0x29, 0x76, 0x17,
+ 0x97, 0xc5, 0x60, 0x39, 0xc7, 0xb1, 0x30, 0x34, 0xf3, 0x82, 0x89, 0x39,
+ 0x42, 0x41, 0xad, 0xa0, 0xf8, 0x6f, 0xff, 0x00, 0xcc, 0x54, 0x31, 0x80,
+ 0xf5, 0x99, 0xe1, 0x27, 0xf2, 0x2b, 0x76, 0x09, 0xef, 0x30, 0x92, 0x9a,
+ 0xe0, 0xe5, 0x7f, 0xa3, 0x67, 0xfd, 0xb9, 0xff, 0x00, 0x98, 0xa9, 0x0f,
+ 0xb4, 0xc7, 0xf3, 0x6c, 0x9f, 0xf8, 0xcf, 0xfc, 0xc5, 0x4c, 0x37, 0xc4,
+ 0xc7, 0xc5, 0x3b, 0x7e, 0x30, 0x92, 0x99, 0xd2, 0x1f, 0xb4, 0x97, 0xc0,
+ 0xd6, 0x4c, 0x1d, 0xc3, 0xf2, 0x05, 0xcf, 0xfd, 0x66, 0xc9, 0xdd, 0x43,
+ 0xc4, 0xad, 0xab, 0x2d, 0xda, 0xc3, 0x58, 0x3a, 0xb9, 0x72, 0xdf, 0x58,
+ 0x0b, 0xbd, 0x2d, 0x7f, 0x38, 0xc7, 0xdc, 0x92, 0x99, 0x7d, 0x50, 0xca,
+ 0xdb, 0x6e, 0x4e, 0x39, 0xe1, 0xed, 0xdc, 0xdf, 0x8b, 0x79, 0xfc, 0x0a,
+ 0xd5, 0xfb, 0x2b, 0x3e, 0xdf, 0xeb, 0x46, 0xb0, 0x81, 0xf5, 0x67, 0x0a,
+ 0xa6, 0xfd, 0x5d, 0xb7, 0xa8, 0xbe, 0x18, 0xfa, 0xb2, 0x9c, 0xe0, 0xf2,
+ 0x39, 0x66, 0xd6, 0xd6, 0xe6, 0x92, 0xb4, 0xb6, 0x8d, 0xfb, 0x92, 0x53,
+ 0xc7, 0x6b, 0x6d, 0x4d, 0x6b, 0x5c, 0x1d, 0xb0, 0xc8, 0x71, 0x3a, 0x00,
+ 0x79, 0x95, 0xdb, 0x7d, 0x52, 0xea, 0x34, 0xfe, 0xce, 0xb9, 0x9a, 0x7e,
+ 0xa4, 0x3e, 0x97, 0x1b, 0xb7, 0x99, 0x98, 0xf9, 0x2e, 0x03, 0x18, 0x92,
+ 0xf3, 0xe0, 0xf1, 0xb5, 0xe3, 0xcc, 0xf7, 0x5a, 0xdd, 0x16, 0xcb, 0xe8,
+ 0xb1, 0xfa, 0x96, 0xb2, 0xd6, 0xec, 0x73, 0x7c, 0x60, 0xc8, 0x49, 0x4f,
+ 0x6d, 0xd3, 0x05, 0x59, 0x98, 0xf9, 0x35, 0x5e, 0x37, 0xb5, 0xef, 0x3b,
+ 0x81, 0xf3, 0xd4, 0x2e, 0x6f, 0xae, 0x74, 0xc3, 0xd3, 0xdd, 0xe9, 0x02,
+ 0x5c, 0xc7, 0x82, 0xf6, 0x13, 0xe0, 0x67, 0x45, 0xb9, 0xf5, 0x7d, 0xe4,
+ 0xe4, 0xdf, 0x5c, 0xe9, 0x2c, 0x77, 0xe5, 0x0a, 0xff, 0x00, 0x5e, 0xc7,
+ 0xc7, 0xc8, 0xc7, 0x0c, 0xb8, 0x70, 0x0e, 0xd7, 0x77, 0x1a, 0x24, 0xa7,
+ 0xcf, 0x18, 0x61, 0xc2, 0x7c, 0x4a, 0x13, 0x5e, 0xe1, 0x7b, 0x67, 0xb8,
+ 0x02, 0x11, 0x19, 0x5d, 0x96, 0x65, 0x57, 0x5d, 0x7e, 0xe7, 0x38, 0x96,
+ 0xb4, 0x78, 0x93, 0xa2, 0x0d, 0x92, 0x2e, 0x8e, 0x1c, 0x0c, 0x47, 0x98,
+ 0x84, 0x94, 0xdb, 0x9d, 0x00, 0x3f, 0xbc, 0x7f, 0x8a, 0x7c, 0x63, 0x04,
+ 0x03, 0xd8, 0xba, 0x3e, 0xf4, 0xc4, 0x47, 0xbb, 0x90, 0x5c, 0x0a, 0x81,
+ 0x25, 0x8f, 0x0e, 0xec, 0x1c, 0x41, 0xf9, 0xa4, 0xa6, 0xcf, 0xf8, 0x48,
+ 0x27, 0x91, 0x0a, 0x6f, 0x05, 0xc0, 0xf8, 0xf2, 0x3e, 0x21, 0x30, 0x1b,
+ 0xdd, 0xbb, 0x88, 0x11, 0xf1, 0x52, 0x63, 0xa5, 0xc5, 0xbd, 0xe2, 0x52,
+ 0x53, 0x4d, 0xbe, 0xdb, 0x8e, 0xdf, 0xce, 0x13, 0x1f, 0x94, 0x2b, 0x24,
+ 0x6e, 0xae, 0x3c, 0x47, 0x2a, 0x06, 0xa8, 0xb4, 0x38, 0x68, 0x58, 0x7f,
+ 0x02, 0x8c, 0xe2, 0x22, 0x5b, 0xc1, 0x1a, 0x7e, 0x54, 0x94, 0xf3, 0x39,
+ 0xb5, 0x7a, 0x19, 0x4e, 0x81, 0xed, 0x3e, 0xe0, 0x3c, 0x8f, 0x65, 0x2c,
+ 0x47, 0xcd, 0x85, 0xbc, 0xc0, 0x80, 0x7c, 0x91, 0xba, 0xdb, 0x40, 0x7b,
+ 0x1e, 0x3c, 0xc4, 0xfc, 0x75, 0x54, 0xb0, 0x5d, 0x16, 0x90, 0x52, 0x53,
+ 0xbd, 0x88, 0xef, 0xa4, 0x0f, 0x8a, 0xb8, 0xd7, 0x01, 0xa2, 0xce, 0xc7,
+ 0xb6, 0x1c, 0x64, 0xfc, 0x15, 0xa6, 0x59, 0x30, 0x92, 0x9b, 0x4e, 0x3e,
+ 0xcd, 0x39, 0x1a, 0x85, 0x07, 0xc1, 0x0d, 0x0e, 0x89, 0x24, 0x6a, 0x95,
+ 0x67, 0x9d, 0x34, 0x44, 0xae, 0xa6, 0x4c, 0xbb, 0x52, 0x3b, 0x1f, 0xee,
+ 0x49, 0x4c, 0xeb, 0x73, 0xde, 0xd3, 0x23, 0x50, 0x60, 0x2c, 0xae, 0xb5,
+ 0x3e, 0x8f, 0xc8, 0xca, 0xd8, 0x76, 0x8b, 0x37, 0xab, 0x55, 0xbe, 0xa1,
+ 0x3d, 0xa6, 0x52, 0x53, 0xd0, 0x61, 0x38, 0x3f, 0x15, 0x8e, 0x03, 0xe8,
+ 0x00, 0x07, 0xc2, 0x24, 0x7e, 0x08, 0xc3, 0x5d, 0x47, 0x62, 0xb2, 0xba,
+ 0x16, 0x43, 0xdd, 0x8d, 0x48, 0x1e, 0xe0, 0xfa, 0x87, 0xc6, 0x6a, 0x3e,
+ 0x9b, 0xbf, 0x82, 0xd5, 0xdb, 0x04, 0x11, 0xdd, 0x25, 0x26, 0xac, 0x4b,
+ 0x20, 0xf6, 0x5b, 0xbd, 0x30, 0xce, 0x1b, 0x3c, 0x89, 0x1f, 0x8a, 0xc0,
+ 0xad, 0xd2, 0x08, 0xee, 0x3f, 0x15, 0xb9, 0xd2, 0x08, 0x38, 0x62, 0x3b,
+ 0x38, 0x84, 0x94, 0xdb, 0x07, 0xdc, 0xef, 0x92, 0x85, 0xad, 0xdc, 0x35,
+ 0xf1, 0x53, 0x1f, 0x4d, 0xc3, 0xe0, 0x99, 0xd1, 0x12, 0x52, 0x53, 0x8f,
+ 0xd6, 0x00, 0x0e, 0x63, 0xfb, 0x91, 0x1f, 0x72, 0xa1, 0x53, 0x5f, 0x6b,
+ 0x9c, 0xd6, 0x73, 0x05, 0xc7, 0xc2, 0x02, 0xd7, 0xea, 0xd5, 0x97, 0xd2,
+ 0xd7, 0x34, 0x49, 0x69, 0xec, 0xb3, 0xb0, 0x59, 0x67, 0xa8, 0x61, 0x84,
+ 0x87, 0xb4, 0xb5, 0x25, 0x35, 0xec, 0xac, 0xd4, 0xe1, 0xb9, 0xc0, 0xcf,
+ 0x82, 0x67, 0x9f, 0x25, 0x67, 0xa9, 0x52, 0x19, 0xe9, 0xb8, 0x40, 0x00,
+ 0x46, 0xd1, 0xdb, 0x45, 0x52, 0x65, 0xba, 0xea, 0x52, 0x52, 0xf4, 0x0d,
+ 0xd6, 0xb5, 0xa6, 0x22, 0x75, 0x95, 0x7b, 0xd2, 0xa4, 0x18, 0xd8, 0x35,
+ 0x54, 0xf1, 0x44, 0xdc, 0x20, 0x6e, 0x80, 0x74, 0x56, 0xfd, 0x7f, 0xe4,
+ 0x8f, 0xbd, 0x25, 0x33, 0xf4, 0xa9, 0xef, 0x5b, 0x53, 0xfa, 0x14, 0xff,
+ 0x00, 0xa3, 0x6f, 0xdc, 0xa2, 0x2c, 0x3c, 0xed, 0xfc, 0x42, 0xb7, 0x83,
+ 0x4b, 0xad, 0xb7, 0x7b, 0x9b, 0x0c, 0x61, 0xe4, 0x91, 0xa9, 0xec, 0x92,
+ 0x98, 0xbb, 0x07, 0x1d, 0x94, 0x9f, 0x55, 0x80, 0x3d, 0xd0, 0x5a, 0x1a,
+ 0x3d, 0xe2, 0x16, 0x16, 0x77, 0x41, 0xaf, 0x36, 0x9b, 0x5f, 0x96, 0x1f,
+ 0x43, 0x2a, 0x25, 0xc0, 0xb5, 0xcd, 0x27, 0x6f, 0x9c, 0x8e, 0xeb, 0xa9,
+ 0x73, 0x68, 0xbb, 0x24, 0xb5, 0xc6, 0x5e, 0xcd, 0x48, 0xed, 0xe4, 0xb1,
+ 0xfe, 0xb0, 0xe6, 0xf4, 0xec, 0x6a, 0xeb, 0xc4, 0xca, 0x7b, 0xea, 0xa0,
+ 0xbb, 0xd4, 0xbf, 0x63, 0x4b, 0xb7, 0x86, 0xfe, 0x69, 0x73, 0x78, 0x04,
+ 0xf3, 0xe4, 0x92, 0x9e, 0x73, 0x13, 0xea, 0xc7, 0x55, 0xb7, 0x05, 0xcd,
+ 0xc0, 0xb1, 0xc7, 0x12, 0xf7, 0x12, 0xda, 0xad, 0x71, 0xad, 0xaf, 0xd4,
+ 0x6d, 0x27, 0xc7, 0xe3, 0x0b, 0x5f, 0xf6, 0x3e, 0x7f, 0xd8, 0xbe, 0xc5,
+ 0xf6, 0x8a, 0xfe, 0xdb, 0xe9, 0x7a, 0x7e, 0xa6, 0xbb, 0x77, 0xc4, 0x2b,
+ 0xb5, 0x7d, 0x6c, 0xe8, 0x57, 0x02, 0x31, 0x72, 0xd8, 0xe7, 0xb2, 0x1b,
+ 0x5d, 0x5a, 0xb4, 0x9f, 0xea, 0x87, 0x81, 0x2a, 0x8f, 0xab, 0x6f, 0xad,
+ 0xea, 0xc9, 0x9d, 0xdb, 0xe2, 0x4f, 0x8c, 0xc4, 0xa4, 0xa7, 0x88, 0x68,
+ 0x0d, 0xba, 0x66, 0x1a, 0x4f, 0x21, 0x59, 0xc8, 0xc9, 0x7b, 0x6c, 0xf4,
+ 0xdb, 0xed, 0x88, 0x92, 0x3e, 0xf4, 0x1b, 0x58, 0x1a, 0xf7, 0x35, 0xbc,
+ 0x37, 0x40, 0xa3, 0x69, 0x6b, 0x5c, 0x6c, 0xb7, 0xc0, 0x06, 0xb3, 0xbb,
+ 0xa0, 0x47, 0xc8, 0x24, 0xa7, 0xba, 0xfa, 0xa1, 0x61, 0xc9, 0xb5, 0xd7,
+ 0x76, 0xf4, 0x61, 0xdf, 0xd6, 0xdd, 0x08, 0x9f, 0x58, 0x73, 0x8f, 0xda,
+ 0x0e, 0x3d, 0x60, 0xbd, 0xc1, 0xa4, 0x38, 0x0e, 0x1a, 0x1d, 0xa4, 0x95,
+ 0x5f, 0xea, 0x03, 0xc1, 0xe9, 0xf9, 0x99, 0x2f, 0x3a, 0xb5, 0xf1, 0xf0,
+ 0x6b, 0x5b, 0xb9, 0x64, 0x65, 0xe7, 0x5f, 0x91, 0x90, 0xe7, 0xb8, 0x91,
+ 0x5d, 0xae, 0x3b, 0x9a, 0x38, 0x89, 0xff, 0x00, 0x62, 0x4a, 0x6a, 0x74,
+ 0xef, 0x67, 0x57, 0xc3, 0xf0, 0x16, 0xb7, 0x4f, 0x1d, 0x42, 0x06, 0x6d,
+ 0x7b, 0x73, 0xee, 0x3f, 0xf0, 0x8f, 0xfc, 0xaa, 0xcd, 0x45, 0x98, 0x3d,
+ 0x63, 0x16, 0xd2, 0xe0, 0x5a, 0xdb, 0x1a, 0xed, 0xee, 0xe3, 0x69, 0x8d,
+ 0x7e, 0xe2, 0x87, 0xd5, 0xe6, 0xae, 0xa1, 0x70, 0x3f, 0xe9, 0x1d, 0xfe,
+ 0xc4, 0x94, 0xdb, 0xcc, 0xc0, 0x75, 0x38, 0xb8, 0xd9, 0x0c, 0x3b, 0x99,
+ 0x65, 0x6c, 0xb1, 0xff, 0x00, 0xc9, 0x73, 0x8c, 0x42, 0xa1, 0x68, 0x99,
+ 0xfe, 0xb0, 0xfc, 0x56, 0xc5, 0xf1, 0x93, 0xd1, 0x6b, 0x34, 0xb8, 0xb8,
+ 0xd1, 0x55, 0x25, 0xed, 0xe6, 0x35, 0x70, 0xfc, 0xab, 0x1c, 0xc9, 0x26,
+ 0x74, 0x1a, 0x14, 0x94, 0xbd, 0x37, 0x39, 0x97, 0x35, 0x84, 0xc0, 0x32,
+ 0xdf, 0xbb, 0xdc, 0x11, 0xec, 0x71, 0x6b, 0xd8, 0xf1, 0xf0, 0x2a, 0x9d,
+ 0xed, 0x20, 0x12, 0x3e, 0x90, 0xd5, 0xa7, 0xcc, 0x2b, 0x55, 0x3c, 0x5f,
+ 0x8e, 0xc7, 0x71, 0xb8, 0x7e, 0x23, 0x42, 0x92, 0x92, 0xbc, 0x83, 0x0e,
+ 0x1d, 0xc7, 0xe4, 0x51, 0xa6, 0x05, 0x7b, 0x7b, 0x09, 0x03, 0xe1, 0xc8,
+ 0xfc, 0x0a, 0x10, 0x2e, 0x0d, 0xda, 0xed, 0x36, 0xbb, 0x43, 0xf1, 0x44,
+ 0x88, 0xd4, 0x24, 0xa7, 0x2f, 0xac, 0x32, 0x71, 0xdd, 0xfc, 0x87, 0x02,
+ 0x3e, 0x05, 0x63, 0x56, 0x5c, 0xd3, 0x2d, 0xd0, 0xf8, 0xad, 0xec, 0xf6,
+ 0x9b, 0x29, 0xb3, 0x43, 0xf4, 0x48, 0xf9, 0x85, 0x84, 0xcd, 0x08, 0x07,
+ 0x9f, 0x04, 0x94, 0xd8, 0xae, 0xdb, 0xbf, 0x7c, 0xcf, 0x65, 0x69, 0x99,
+ 0x57, 0x54, 0xe0, 0x1c, 0xf9, 0x27, 0xb1, 0x55, 0x2b, 0x11, 0xa9, 0x3f,
+ 0x04, 0xee, 0x3b, 0xce, 0xc7, 0x7c, 0x8a, 0x4a, 0x77, 0xf0, 0xf2, 0x9b,
+ 0x68, 0x9e, 0x08, 0xe4, 0x2b, 0xac, 0x3f, 0xa4, 0x85, 0xcf, 0xe0, 0x9b,
+ 0x6a, 0xb9, 0x95, 0x9f, 0x70, 0x3a, 0x03, 0xc4, 0x8f, 0x35, 0xd0, 0x30,
+ 0x17, 0x41, 0xe3, 0xb2, 0x4a, 0x48, 0xe2, 0x35, 0x93, 0xc7, 0x0a, 0xa7,
+ 0x51, 0x6e, 0xfa, 0x1c, 0x5b, 0xc8, 0x0a, 0xd9, 0x02, 0x20, 0xf8, 0xa0,
+ 0x64, 0x40, 0x63, 0x81, 0xee, 0x38, 0x49, 0x48, 0xfa, 0x13, 0xb6, 0x61,
+ 0x54, 0xf6, 0xf3, 0x8f, 0x73, 0x83, 0xbf, 0xa9, 0x69, 0xda, 0x7f, 0x18,
+ 0x5d, 0x2c, 0x83, 0xa2, 0xe5, 0x7e, 0xaf, 0xd8, 0xcf, 0x53, 0x22, 0x87,
+ 0xfd, 0x10, 0xf8, 0x77, 0xf5, 0x6c, 0x1c, 0xfc, 0x88, 0x5d, 0x2e, 0x31,
+ 0x3b, 0x4b, 0x5f, 0xf4, 0xdb, 0xed, 0x77, 0xc4, 0x68, 0x92, 0x99, 0x90,
+ 0x43, 0xa7, 0x82, 0xb6, 0xfa, 0x2c, 0xfd, 0x95, 0xdf, 0xd7, 0x31, 0xf7,
+ 0x05, 0x8e, 0xe0, 0x62, 0x7c, 0x39, 0x5b, 0x5d, 0x1c, 0x01, 0x85, 0x3e,
+ 0x2e, 0x71, 0x3f, 0x91, 0x25, 0x27, 0xd5, 0xb7, 0x07, 0x1e, 0x1e, 0xe2,
+ 0xdf, 0x94, 0x08, 0xfc, 0x42, 0x29, 0x00, 0xc8, 0x2a, 0xbe, 0x58, 0x3f,
+ 0x67, 0x2e, 0x07, 0xdc, 0x08, 0x70, 0x3f, 0x34, 0x76, 0x58, 0x2c, 0x63,
+ 0x5e, 0xde, 0x1e, 0x01, 0x49, 0x48, 0xb2, 0x59, 0xea, 0x54, 0xe6, 0x9e,
+ 0x20, 0xe8, 0xb2, 0xa9, 0xac, 0xd5, 0x43, 0x9e, 0x4e, 0xa0, 0x12, 0x35,
+ 0xe3, 0xc5, 0x6d, 0x58, 0x25, 0xa7, 0xcc, 0x2c, 0x8f, 0x44, 0x31, 0x97,
+ 0xd2, 0x4e, 0xaf, 0x1e, 0xdf, 0x8a, 0x4a, 0x73, 0xf3, 0x2e, 0x16, 0xbe,
+ 0x1b, 0xf4, 0x40, 0x1a, 0xfc, 0x46, 0xaa, 0xb8, 0x25, 0x4c, 0x8d, 0x75,
+ 0xed, 0xca, 0x67, 0x68, 0x92, 0x93, 0x61, 0x09, 0x79, 0x77, 0x70, 0x39,
+ 0xf9, 0xab, 0x18, 0xd4, 0x31, 0xd9, 0x0f, 0x2e, 0x6c, 0xeb, 0xa7, 0xcf,
+ 0x95, 0x5f, 0x11, 0xc5, 0xaf, 0x23, 0x4d, 0xa7, 0xf2, 0x85, 0xa3, 0x47,
+ 0xf3, 0x92, 0x92, 0x9c, 0x2c, 0x3b, 0x3a, 0xad, 0xbd, 0x7a, 0xfe, 0x95,
+ 0x50, 0x6b, 0xf1, 0xe9, 0x74, 0xb9, 0xee, 0x6f, 0xd0, 0xa8, 0xc1, 0xe4,
+ 0x77, 0xd7, 0x45, 0xd8, 0x08, 0xa5, 0xa2, 0xba, 0xd8, 0x76, 0x34, 0x72,
+ 0xb0, 0xe9, 0xcb, 0xbb, 0x13, 0x3b, 0x2f, 0xd1, 0xa5, 0x9f, 0xa5, 0x78,
+ 0x36, 0x58, 0xe9, 0xdc, 0xe8, 0x68, 0x00, 0x93, 0x3c, 0x78, 0x22, 0x62,
+ 0xfd, 0x65, 0xc3, 0xbf, 0x22, 0xcc, 0x6b, 0x4b, 0x98, 0xe1, 0xc3, 0xe0,
+ 0xba, 0xb3, 0x1e, 0x2e, 0x1f, 0x47, 0xe6, 0x92, 0x9d, 0x3c, 0x77, 0x4f,
+ 0xa8, 0x4c, 0x6f, 0x9d, 0xa6, 0x3f, 0x37, 0xc5, 0x70, 0xdf, 0x59, 0x32,
+ 0xe8, 0xca, 0xc8, 0xbf, 0x15, 0xce, 0xf6, 0x07, 0x57, 0x58, 0x7c, 0xea,
+ 0xed, 0xc7, 0x61, 0x81, 0xe4, 0x75, 0x5d, 0x55, 0xb9, 0x5f, 0x66, 0xc4,
+ 0x7b, 0xf9, 0xbe, 0xf7, 0x1f, 0x4a, 0xb1, 0xaf, 0xb6, 0x74, 0x3a, 0x79,
+ 0x6a, 0xbc, 0xdf, 0xae, 0x80, 0x6f, 0x63, 0x98, 0x77, 0x3a, 0xbd, 0xce,
+ 0x2e, 0x1f, 0x87, 0xe4, 0x49, 0x4c, 0x3a, 0x6f, 0x46, 0x39, 0x02, 0xe7,
+ 0xda, 0x4b, 0x19, 0x8a, 0x76, 0x92, 0x39, 0x2f, 0x9e, 0x07, 0x87, 0x0b,
+ 0x5b, 0xf6, 0xe5, 0x9f, 0x65, 0xf4, 0x37, 0x7e, 0xb7, 0x3e, 0x97, 0xad,
+ 0xdf, 0x6c, 0x7d, 0x3f, 0xeb, 0x7f, 0xbd, 0x6e, 0xd8, 0x2a, 0xc8, 0xe9,
+ 0x35, 0xdd, 0x4b, 0x43, 0x45, 0xec, 0x16, 0x10, 0xd1, 0x12, 0xe7, 0x89,
+ 0x71, 0x31, 0xe6, 0xb8, 0xef, 0xb3, 0x1f, 0xda, 0x3e, 0x9f, 0x9c, 0xa4,
+ 0xa6, 0x2f, 0xb6, 0x1e, 0xe7, 0xfe, 0x71, 0x24, 0x80, 0xab, 0x96, 0xd9,
+ 0x75, 0x9d, 0xdc, 0xe7, 0x72, 0x4a, 0x2d, 0x58, 0xee, 0x7b, 0x86, 0xed,
+ 0x1a, 0xe4, 0x67, 0xdd, 0x56, 0x38, 0xda, 0xcd, 0x5d, 0xe1, 0xfd, 0xe9,
+ 0x29, 0xd9, 0xe8, 0x3d, 0x46, 0xbe, 0x92, 0xdb, 0x68, 0xbd, 0xf1, 0x46,
+ 0x4b, 0x1c, 0xdb, 0x0f, 0x83, 0xa3, 0xda, 0xef, 0xe0, 0x86, 0xe7, 0x01,
+ 0x8e, 0x0f, 0x98, 0x3f, 0x7a, 0xe7, 0xec, 0xbd, 0xf7, 0x38, 0xc9, 0x92,
+ 0x79, 0xf2, 0x5a, 0x98, 0x6e, 0x2f, 0xc0, 0xb1, 0xbc, 0xec, 0x70, 0x8f,
+ 0x82, 0x4a, 0x4d, 0x69, 0xaa, 0xc6, 0xb3, 0x73, 0x26, 0xc6, 0x98, 0xde,
+ 0x4e, 0x9b, 0x47, 0x02, 0x14, 0xfa, 0xb3, 0x0d, 0x8d, 0xc5, 0xc8, 0x1a,
+ 0x9b, 0x69, 0x63, 0x9c, 0x7c, 0x5c, 0xcf, 0xd1, 0xbb, 0xf1, 0x6a, 0x13,
+ 0x8c, 0x03, 0xf1, 0x1f, 0x71, 0x46, 0x75, 0xad, 0xb3, 0x0c, 0x50, 0x67,
+ 0xd4, 0xa5, 0xce, 0x35, 0x1f, 0xe4, 0xbb, 0x52, 0xdf, 0xbf, 0x54, 0x94,
+ 0x93, 0xa1, 0x5e, 0x19, 0x79, 0xc5, 0xb1, 0xc4, 0x55, 0x94, 0x0d, 0x4e,
+ 0xf2, 0x27, 0x56, 0x47, 0xf6, 0xbf, 0x2a, 0x1e, 0x6d, 0x07, 0x1f, 0x22,
+ 0xda, 0x5c, 0x20, 0xb4, 0x90, 0x55, 0x40, 0xd7, 0x4b, 0xa1, 0xf0, 0x44,
+ 0x16, 0x80, 0x3b, 0x85, 0xa3, 0xd5, 0x0b, 0xee, 0xbe, 0xbb, 0xce, 0xbf,
+ 0x69, 0xa5, 0x96, 0x38, 0xf8, 0xba, 0x03, 0x5d, 0xf8, 0x84, 0x94, 0xd0,
+ 0x76, 0xba, 0x1e, 0x08, 0x52, 0xe9, 0xce, 0x01, 0xee, 0xc6, 0x71, 0x80,
+ 0xf3, 0x35, 0x93, 0xc0, 0x7f, 0xfb, 0x42, 0x1b, 0xcb, 0x8c, 0x06, 0x8f,
+ 0x8a, 0x1d, 0x84, 0x8f, 0x73, 0x74, 0x31, 0x33, 0xe6, 0xd4, 0x94, 0xde,
+ 0xb5, 0x85, 0xcd, 0x71, 0x12, 0x09, 0x83, 0x1f, 0x04, 0xf3, 0x1e, 0xee,
+ 0xc3, 0x5f, 0xbf, 0x44, 0x6b, 0x7f, 0x4b, 0x55, 0x39, 0x23, 0xe8, 0xde,
+ 0xd3, 0xbc, 0x8e, 0x1b, 0x63, 0x74, 0x70, 0xf9, 0xf3, 0xf3, 0x55, 0x8f,
+ 0xf3, 0x32, 0x92, 0x90, 0x5c, 0x0b, 0xab, 0x77, 0xc1, 0xd0, 0x3c, 0xd6,
+ 0x15, 0xae, 0x75, 0x99, 0x2e, 0x2d, 0xd7, 0x86, 0x8f, 0x90, 0x85, 0xd0,
+ 0x38, 0x68, 0xf0, 0x7c, 0xff, 0x00, 0x15, 0x83, 0x86, 0xd2, 0xeb, 0x09,
+ 0x3c, 0xa4, 0xa4, 0xaf, 0xc7, 0x3b, 0x67, 0x9e, 0xee, 0x03, 0xb7, 0x9a,
+ 0x93, 0x6b, 0x1b, 0x78, 0x91, 0xe5, 0xc8, 0xf8, 0x2b, 0xf5, 0xb0, 0x02,
+ 0xd0, 0x3b, 0xf2, 0xa4, 0x69, 0x11, 0xb5, 0xba, 0x36, 0x66, 0x3c, 0xd2,
+ 0x52, 0x1a, 0x31, 0x9e, 0x19, 0xea, 0xbf, 0x56, 0xc7, 0xb4, 0x03, 0xac,
+ 0xf8, 0xad, 0xaa, 0x1c, 0x0d, 0x4d, 0x27, 0xba, 0xa9, 0x8b, 0x50, 0xf4,
+ 0xde, 0x08, 0xe5, 0x5a, 0xc5, 0xd6, 0xa2, 0xce, 0xed, 0x49, 0x49, 0x86,
+ 0xa3, 0xc1, 0x51, 0xea, 0x59, 0x0d, 0xa1, 0xa0, 0xbb, 0xf3, 0x81, 0x00,
+ 0x79, 0xab, 0x6e, 0x3b, 0x5a, 0x49, 0xf9, 0x2c, 0x3e, 0xa9, 0x69, 0xb6,
+ 0xc6, 0x77, 0x0d, 0x9e, 0x12, 0x53, 0x5f, 0xa6, 0xe5, 0x5b, 0x8b, 0x9d,
+ 0xeb, 0xd8, 0x26, 0xbb, 0x34, 0xb0, 0x0f, 0x0f, 0x1f, 0x92, 0xed, 0xe9,
+ 0xb1, 0xae, 0x2c, 0xb1, 0xa7, 0x73, 0x6d, 0x6c, 0x87, 0x0e, 0x0c, 0x69,
+ 0x3f, 0x91, 0x70, 0xf5, 0xb0, 0x8d, 0xef, 0x76, 0x80, 0x9f, 0x68, 0xf2,
+ 0x5d, 0x07, 0x40, 0xc9, 0x73, 0xb1, 0x9d, 0x53, 0xb5, 0x18, 0xf6, 0xb4,
+ 0xb4, 0xff, 0x00, 0x26, 0xe0, 0x5a, 0x47, 0xf9, 0xcd, 0x49, 0x4f, 0x42,
+ 0xe9, 0x8f, 0x25, 0xb1, 0xd2, 0x5f, 0xfe, 0x4e, 0x77, 0xf2, 0x5c, 0xe0,
+ 0x3e, 0x71, 0xfd, 0xeb, 0x17, 0x70, 0x8d, 0x56, 0xd7, 0x4c, 0x69, 0x6e,
+ 0x03, 0x47, 0xfa, 0x4b, 0x24, 0x7c, 0x27, 0xfd, 0x89, 0x29, 0xb5, 0x7b,
+ 0x66, 0xa7, 0x56, 0x4f, 0xee, 0xfe, 0x54, 0x3e, 0x9c, 0xf0, 0x69, 0x35,
+ 0xf7, 0x63, 0x8f, 0xe3, 0xaa, 0x2d, 0xa4, 0x17, 0x39, 0xa4, 0xf8, 0x7e,
+ 0x50, 0xa9, 0x60, 0xbb, 0x65, 0xee, 0x13, 0xa1, 0xe4, 0x79, 0x84, 0x94,
+ 0xea, 0x11, 0xa2, 0xcd, 0xca, 0x66, 0xd7, 0x97, 0x44, 0x93, 0xa0, 0x5a,
+ 0x4a, 0xae, 0x73, 0x09, 0xa9, 0xd1, 0xe1, 0xa9, 0x49, 0x4f, 0x3b, 0x70,
+ 0x8b, 0x5d, 0xa4, 0x6a, 0x54, 0x1c, 0x11, 0xb2, 0x07, 0xe9, 0x09, 0x42,
+ 0x70, 0xd1, 0x25, 0x25, 0xc5, 0x9d, 0xcd, 0x1d, 0x8c, 0xab, 0xf4, 0x98,
+ 0x76, 0x9a, 0x85, 0x47, 0x0c, 0x6b, 0xed, 0x77, 0xa8, 0xe0, 0x7d, 0xc0,
+ 0x7e, 0x68, 0x77, 0x01, 0x5e, 0xa9, 0xbb, 0x4e, 0x9a, 0x49, 0x27, 0xef,
+ 0x49, 0x4e, 0x46, 0x78, 0xbe, 0xce, 0xaf, 0x7e, 0x3d, 0x6e, 0xf6, 0x06,
+ 0xb1, 0xe5, 0x93, 0xce, 0xe6, 0xc6, 0xef, 0xc1, 0x5a, 0xe9, 0xd5, 0xd7,
+ 0x8d, 0x5d, 0x82, 0xb0, 0x07, 0x77, 0xc7, 0x77, 0x79, 0xaa, 0x1d, 0x57,
+ 0xd4, 0xab, 0xeb, 0x1e, 0x31, 0x61, 0xd6, 0xec, 0x7d, 0x84, 0x9e, 0xf0,
+ 0x5c, 0xad, 0xe1, 0x92, 0xda, 0x2c, 0x93, 0xae, 0xb3, 0xf1, 0x49, 0x4f,
+ 0x35, 0xd4, 0xfa, 0xce, 0x5e, 0x1e, 0x6b, 0xd9, 0x5b, 0xf7, 0x52, 0xe0,
+ 0x43, 0xab, 0x3e, 0x07, 0x9d, 0xa7, 0xb2, 0xcf, 0xb1, 0xf5, 0x65, 0xe3,
+ 0xd9, 0x73, 0x5c, 0x0b, 0xdc, 0xf1, 0xb9, 0x9d, 0xdb, 0xe0, 0x3e, 0xe4,
+ 0x1e, 0xb2, 0xe2, 0xec, 0xd7, 0xa1, 0x74, 0xd6, 0x02, 0xeb, 0x5e, 0x78,
+ 0x00, 0x04, 0x94, 0xf6, 0x7f, 0x57, 0x9f, 0xbf, 0xa1, 0xb1, 0x87, 0x9a,
+ 0x4b, 0xeb, 0x8f, 0x81, 0x91, 0xf8, 0x15, 0x83, 0xb3, 0xfc, 0xaf, 0x2b,
+ 0x7f, 0xa1, 0x86, 0x0e, 0x9d, 0x0c, 0x1f, 0x48, 0xb8, 0xb8, 0x8e, 0xee,
+ 0xf1, 0xfb, 0x96, 0x4f, 0xa7, 0xfe, 0x57, 0xfe, 0x09, 0x29, 0xc1, 0xb3,
+ 0x2c, 0xb8, 0xfb, 0x4c, 0x0f, 0x04, 0x02, 0xe2, 0xed, 0x4f, 0x7e, 0xea,
+ 0x30, 0xd6, 0x9f, 0x12, 0xa2, 0xe3, 0xf3, 0x49, 0x4c, 0xc3, 0x80, 0xd0,
+ 0x2b, 0xfd, 0x37, 0x23, 0x61, 0xb2, 0xa7, 0x1f, 0x6d, 0x83, 0xf1, 0x59,
+ 0xcd, 0x3d, 0xd1, 0x18, 0xed, 0xae, 0x99, 0x49, 0x4e, 0xcb, 0x8e, 0xee,
+ 0xdc, 0xb7, 0xf2, 0x27, 0x24, 0x8f, 0x71, 0xf2, 0x28, 0x34, 0xbc, 0xba,
+ 0xaa, 0xdd, 0x3d, 0xc8, 0xf8, 0xa2, 0x4c, 0xb7, 0x9f, 0x16, 0x94, 0x94,
+ 0xc5, 0x80, 0x07, 0xcf, 0x3a, 0xc7, 0xc9, 0x6d, 0x65, 0xd7, 0x3d, 0x1f,
+ 0xa6, 0xe4, 0x77, 0x68, 0xb2, 0xa3, 0xf0, 0x0f, 0x24, 0x2c, 0x49, 0x04,
+ 0x69, 0xa9, 0xfe, 0xe5, 0xd0, 0x54, 0x7e, 0xd1, 0xf5, 0x71, 0xcc, 0x31,
+ 0x38, 0xd6, 0xb8, 0x92, 0x7f, 0x35, 0xa4, 0x07, 0x04, 0x94, 0xe2, 0x9d,
+ 0x44, 0x0e, 0x08, 0x41, 0xdb, 0x2c, 0x6c, 0xfe, 0xe9, 0x47, 0x6e, 0xad,
+ 0x03, 0xf9, 0x3a, 0xfe, 0x09, 0x9a, 0xcd, 0x19, 0xe6, 0x0f, 0xf0, 0x49,
+ 0x4d, 0xde, 0x8b, 0x6d, 0x45, 0xc7, 0x07, 0x22, 0x3d, 0x1c, 0x81, 0x35,
+ 0xb9, 0xdc, 0x32, 0xd0, 0x21, 0xa7, 0xe7, 0xc2, 0x1e, 0x4d, 0x2f, 0xa1,
+ 0xa6, 0x9b, 0x04, 0x3d, 0x93, 0x3f, 0x7e, 0x8a, 0xa6, 0x83, 0x6c, 0x78,
+ 0x15, 0xad, 0xd5, 0x61, 0xfe, 0x95, 0xa7, 0xf3, 0xb1, 0xe9, 0x71, 0x3e,
+ 0x32, 0xd0, 0xdf, 0xe0, 0x92, 0x9c, 0xc2, 0x06, 0xf2, 0x0f, 0xc5, 0x61,
+ 0xe1, 0xff, 0x00, 0x38, 0xff, 0x00, 0x89, 0xfc, 0xab, 0x6c, 0xea, 0xe9,
+ 0xf8, 0x80, 0xb1, 0xb0, 0xf5, 0x7b, 0xcf, 0x99, 0xfc, 0xa9, 0x29, 0xd4,
+ 0xad, 0xba, 0xb7, 0xbc, 0xab, 0x2d, 0x6e, 0x83, 0xc9, 0x57, 0xab, 0x96,
+ 0xc2, 0xb4, 0x38, 0x49, 0x49, 0x28, 0x00, 0x12, 0x89, 0x51, 0x0d, 0xb0,
+ 0x8f, 0xdf, 0x0a, 0x15, 0x0d, 0x10, 0x7d, 0x76, 0x8b, 0x9c, 0xd7, 0x12,
+ 0xd2, 0x00, 0x8f, 0x34, 0x94, 0x96, 0xdb, 0x37, 0x34, 0xc8, 0x88, 0x30,
+ 0x56, 0x36, 0x45, 0x8d, 0x63, 0xdc, 0x4b, 0x77, 0x12, 0x08, 0x1c, 0x8d,
+ 0xa4, 0xf0, 0x56, 0xd5, 0x8e, 0xdf, 0x54, 0x8e, 0x0f, 0x0a, 0x8e, 0x55,
+ 0x13, 0x05, 0xb3, 0xb4, 0xfd, 0x2f, 0x23, 0xd8, 0xa4, 0xa7, 0x30, 0x38,
+ 0x1e, 0x4c, 0xfe, 0x45, 0xb1, 0xf5, 0x7f, 0x71, 0xc0, 0xea, 0x57, 0x0d,
+ 0x76, 0xba, 0xa2, 0x3e, 0x15, 0x9d, 0xc5, 0x63, 0x5f, 0x35, 0x83, 0xc9,
+ 0x1d, 0xa5, 0x74, 0x5f, 0x54, 0x69, 0x0f, 0xe9, 0x79, 0x80, 0xeb, 0xea,
+ 0x38, 0x83, 0xfe, 0x6f, 0xfb, 0x52, 0x53, 0xb4, 0xc8, 0x7b, 0x03, 0x87,
+ 0x0e, 0x12, 0x17, 0x47, 0x82, 0x03, 0x31, 0x71, 0x2b, 0xee, 0x46, 0xef,
+ 0xbc, 0x17, 0x7f, 0x15, 0xca, 0xf4, 0xe7, 0x97, 0x63, 0x35, 0xa7, 0x52,
+ 0xcf, 0x69, 0xf9, 0x2d, 0x9c, 0x6c, 0xb7, 0x55, 0x95, 0x53, 0x4f, 0xb9,
+ 0xac, 0xac, 0xc8, 0xf8, 0xc0, 0x49, 0x4e, 0xc3, 0xd9, 0x2f, 0x2d, 0xe4,
+ 0xb8, 0x19, 0x54, 0xa8, 0x90, 0xf2, 0xee, 0xee, 0x71, 0x8f, 0xbd, 0x5c,
+ 0xa7, 0x21, 0x96, 0x19, 0x1f, 0x48, 0xaa, 0x8c, 0x90, 0x74, 0xfc, 0xd2,
+ 0xed, 0x7e, 0x69, 0x29, 0xd1, 0x61, 0x25, 0xa1, 0x2b, 0x1a, 0x1d, 0x5b,
+ 0x81, 0xee, 0x14, 0x6a, 0x7e, 0xe6, 0xa9, 0x83, 0x3a, 0x24, 0xa7, 0x9a,
+ 0xcd, 0xac, 0xb2, 0xe2, 0xd0, 0x34, 0xe7, 0xe4, 0xab, 0xb9, 0xc1, 0xa1,
+ 0xce, 0x77, 0x0d, 0x04, 0x9f, 0x80, 0xd5, 0x6a, 0x75, 0x7a, 0xc3, 0x6d,
+ 0x69, 0xf1, 0x6c, 0x7d, 0xcb, 0x26, 0xf6, 0x97, 0xd7, 0x65, 0x6d, 0x20,
+ 0x39, 0xed, 0x2d, 0x04, 0xe8, 0x01, 0x22, 0x12, 0x52, 0x3f, 0xa9, 0xfe,
+ 0x9e, 0x67, 0x43, 0x0e, 0xb0, 0x49, 0x6e, 0x45, 0x86, 0x41, 0x20, 0xc9,
+ 0x76, 0xfe, 0x47, 0xf5, 0x96, 0xeb, 0x41, 0xe7, 0xe2, 0x16, 0x57, 0xd5,
+ 0x2e, 0x9f, 0xfb, 0x3b, 0xa5, 0x3a, 0x87, 0xda, 0x2d, 0x73, 0xec, 0xde,
+ 0xe0, 0x01, 0x6e, 0xc2, 0x40, 0x1b, 0x75, 0xf8, 0x2d, 0x76, 0x83, 0xbc,
+ 0x8e, 0xd3, 0xca, 0x4a, 0x79, 0x3f, 0xae, 0xb6, 0xe4, 0xd5, 0xd4, 0xfa,
+ 0x51, 0xc5, 0xb0, 0xd5, 0x65, 0x92, 0xc0, 0xe1, 0xd8, 0xef, 0x6f, 0x8f,
+ 0xc5, 0x6d, 0xd8, 0xfa, 0x5c, 0xc7, 0xdb, 0x4b, 0x83, 0xea, 0xb1, 0xbb,
+ 0x9a, 0xe6, 0x99, 0x6b, 0xbc, 0xc1, 0x0b, 0x1b, 0xeb, 0xeb, 0x5d, 0x5d,
+ 0xbd, 0x33, 0x24, 0x7f, 0x83, 0xb1, 0xda, 0xf9, 0xcb, 0x1c, 0xb7, 0x32,
+ 0x69, 0xaa, 0x8a, 0x4b, 0x29, 0x63, 0x6b, 0xad, 0xb5, 0xfb, 0x58, 0xd0,
+ 0x00, 0x03, 0x5e, 0x00, 0x49, 0x4f, 0x9d, 0xf5, 0x53, 0x39, 0x96, 0x7c,
+ 0x55, 0xcf, 0xab, 0xfd, 0x2e, 0xce, 0xa2, 0xe1, 0x8e, 0xd3, 0xb1, 0xb6,
+ 0x3c, 0xb9, 0xf6, 0x44, 0xc3, 0x6b, 0x13, 0xf8, 0x93, 0x0a, 0x8f, 0x51,
+ 0x3b, 0xb2, 0xec, 0x3e, 0x6b, 0xa9, 0xe8, 0x3d, 0x37, 0xad, 0xd7, 0xd2,
+ 0xab, 0xbf, 0xa7, 0x3a, 0x86, 0x0c, 0x80, 0x5c, 0x5c, 0xe9, 0xf5, 0x22,
+ 0x4f, 0xef, 0x68, 0x12, 0x53, 0x67, 0xa3, 0x35, 0xd5, 0xb7, 0x23, 0x19,
+ 0xf0, 0x2c, 0xa2, 0xd7, 0x31, 0xe0, 0x19, 0x82, 0x21, 0x54, 0xf4, 0xdb,
+ 0xfb, 0x5f, 0x82, 0xaf, 0x74, 0xec, 0x2e, 0xad, 0x89, 0x6d, 0xaf, 0xea,
+ 0x5e, 0xe7, 0x5b, 0xb7, 0x65, 0x92, 0x1d, 0x3b, 0x41, 0x1f, 0x9a, 0xab,
+ 0xec, 0x3f, 0xb6, 0x3e, 0x49, 0x29, 0xff, 0xd9
+};
+size_t demo_003_jpg_len = 19604;
+
+const uint8_t demo_004_jpg[] = {
+ 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01,
+ 0x02, 0x00, 0x00, 0x64, 0x00, 0x64, 0x00, 0x00, 0xff, 0xec, 0x00, 0x59,
+ 0x44, 0x75, 0x63, 0x6b, 0x79, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00,
+ 0x1e, 0x00, 0x02, 0x00, 0x44, 0x00, 0x00, 0x00, 0x20, 0x00, 0x46, 0x00,
+ 0x53, 0x00, 0x41, 0x00, 0x2f, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00,
+ 0x33, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x38, 0x00,
+ 0x62, 0x00, 0x33, 0x00, 0x33, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00,
+ 0x5c, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00, 0x33, 0x00, 0x38, 0x00,
+ 0x36, 0x00, 0x30, 0x00, 0x61, 0x00, 0x2e, 0x00, 0x74, 0x00, 0x69, 0x00,
+ 0x66, 0x00, 0x00, 0xff, 0xee, 0x00, 0x0e, 0x41, 0x64, 0x6f, 0x62, 0x65,
+ 0x00, 0x64, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xdb, 0x00, 0x84, 0x00,
+ 0x10, 0x0b, 0x0b, 0x0b, 0x0c, 0x0b, 0x10, 0x0c, 0x0c, 0x10, 0x17, 0x0f,
+ 0x0d, 0x0f, 0x17, 0x1b, 0x14, 0x10, 0x10, 0x14, 0x1b, 0x1f, 0x17, 0x17,
+ 0x17, 0x17, 0x17, 0x1f, 0x1e, 0x17, 0x1a, 0x1a, 0x1a, 0x1a, 0x17, 0x1e,
+ 0x1e, 0x23, 0x25, 0x27, 0x25, 0x23, 0x1e, 0x2f, 0x2f, 0x33, 0x33, 0x2f,
+ 0x2f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x01, 0x11, 0x0f, 0x0f, 0x11, 0x13, 0x11, 0x15,
+ 0x12, 0x12, 0x15, 0x14, 0x11, 0x14, 0x11, 0x14, 0x1a, 0x14, 0x16, 0x16,
+ 0x14, 0x1a, 0x26, 0x1a, 0x1a, 0x1c, 0x1a, 0x1a, 0x26, 0x30, 0x23, 0x1e,
+ 0x1e, 0x1e, 0x1e, 0x23, 0x30, 0x2b, 0x2e, 0x27, 0x27, 0x27, 0x2e, 0x2b,
+ 0x35, 0x35, 0x30, 0x30, 0x35, 0x35, 0x40, 0x40, 0x3f, 0x40, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xff, 0xc0, 0x00,
+ 0x11, 0x08, 0x01, 0x90, 0x01, 0x2c, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11,
+ 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x01, 0x3f, 0x00, 0x00, 0x01, 0x05,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x03, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
+ 0x0b, 0x01, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x04, 0x05,
+ 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x01, 0x04, 0x01, 0x03,
+ 0x02, 0x04, 0x02, 0x05, 0x07, 0x06, 0x08, 0x05, 0x03, 0x0c, 0x33, 0x01,
+ 0x00, 0x02, 0x11, 0x03, 0x04, 0x21, 0x12, 0x31, 0x05, 0x41, 0x51, 0x61,
+ 0x13, 0x22, 0x71, 0x81, 0x32, 0x06, 0x14, 0x91, 0xa1, 0xb1, 0x42, 0x23,
+ 0x24, 0x15, 0x52, 0xc1, 0x62, 0x33, 0x34, 0x72, 0x82, 0xd1, 0x43, 0x07,
+ 0x25, 0x92, 0x53, 0xf0, 0xe1, 0xf1, 0x63, 0x73, 0x35, 0x16, 0xa2, 0xb2,
+ 0x83, 0x26, 0x44, 0x93, 0x54, 0x64, 0x45, 0xc2, 0xa3, 0x74, 0x36, 0x17,
+ 0xd2, 0x55, 0xe2, 0x65, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3,
+ 0x46, 0x27, 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5,
+ 0xb5, 0xc5, 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6,
+ 0xc6, 0xd6, 0xe6, 0xf6, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7,
+ 0xb7, 0xc7, 0xd7, 0xe7, 0xf7, 0x11, 0x00, 0x02, 0x02, 0x01, 0x02, 0x04,
+ 0x04, 0x03, 0x04, 0x05, 0x06, 0x07, 0x07, 0x06, 0x05, 0x35, 0x01, 0x00,
+ 0x02, 0x11, 0x03, 0x21, 0x31, 0x12, 0x04, 0x41, 0x51, 0x61, 0x71, 0x22,
+ 0x13, 0x05, 0x32, 0x81, 0x91, 0x14, 0xa1, 0xb1, 0x42, 0x23, 0xc1, 0x52,
+ 0xd1, 0xf0, 0x33, 0x24, 0x62, 0xe1, 0x72, 0x82, 0x92, 0x43, 0x53, 0x15,
+ 0x63, 0x73, 0x34, 0xf1, 0x25, 0x06, 0x16, 0xa2, 0xb2, 0x83, 0x07, 0x26,
+ 0x35, 0xc2, 0xd2, 0x44, 0x93, 0x54, 0xa3, 0x17, 0x64, 0x45, 0x55, 0x36,
+ 0x74, 0x65, 0xe2, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, 0x46,
+ 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, 0xb5, 0xc5,
+ 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6,
+ 0xe6, 0xf6, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, 0xb7,
+ 0xc7, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11,
+ 0x00, 0x3f, 0x00, 0x2e, 0x3b, 0xf7, 0x7a, 0xae, 0x1f, 0x44, 0xba, 0x01,
+ 0xf2, 0xd2, 0x0f, 0xe2, 0xab, 0x66, 0x86, 0xdb, 0x8e, 0x31, 0x6b, 0x33,
+ 0x6b, 0x09, 0x6b, 0xf4, 0x3a, 0x35, 0xff, 0x00, 0x72, 0x86, 0x15, 0x4f,
+ 0xaa, 0xa6, 0x1b, 0x35, 0x78, 0xda, 0xe2, 0xff, 0x00, 0x02, 0xf7, 0x09,
+ 0x1f, 0x70, 0x5b, 0x5b, 0x58, 0x5c, 0x06, 0xd9, 0xf5, 0x1e, 0xd0, 0x4e,
+ 0x9d, 0x9d, 0x29, 0x29, 0xe4, 0xbe, 0xb2, 0xe2, 0x9a, 0x33, 0xaa, 0xc7,
+ 0xfa, 0x5e, 0x8d, 0x2d, 0x69, 0x3e, 0x64, 0x97, 0x15, 0x96, 0x01, 0x8d,
+ 0x47, 0x1f, 0x7a, 0xd8, 0xfa, 0xc7, 0x7b, 0x9d, 0xd7, 0x72, 0x1a, 0x04,
+ 0x86, 0x86, 0x37, 0xe7, 0xb4, 0x13, 0xf9, 0x55, 0x20, 0xea, 0x4b, 0xbd,
+ 0xcd, 0x88, 0xf2, 0xff, 0x00, 0x50, 0x92, 0x90, 0x31, 0xfb, 0x44, 0x11,
+ 0xcf, 0x1e, 0x21, 0x58, 0xae, 0xac, 0x6b, 0x1b, 0xed, 0x74, 0xb8, 0x9f,
+ 0xa3, 0xa4, 0xfd, 0xc5, 0x10, 0x62, 0xb5, 0xec, 0xdc, 0xc2, 0x08, 0xed,
+ 0xc6, 0xbf, 0xc1, 0x0f, 0xec, 0xa5, 0xbf, 0x49, 0xb1, 0xf1, 0xd0, 0xa4,
+ 0xa6, 0x0f, 0xc4, 0xad, 0xe3, 0xdb, 0xdf, 0xc4, 0x41, 0x08, 0x18, 0x58,
+ 0x1b, 0xba, 0x9d, 0x15, 0x11, 0x23, 0x7c, 0x91, 0xe4, 0xdf, 0x77, 0xf0,
+ 0x57, 0x98, 0xdb, 0x2b, 0x7f, 0x26, 0x74, 0x8d, 0xdd, 0xd1, 0xba, 0x7b,
+ 0x7d, 0x4e, 0xb1, 0x8f, 0xd8, 0xeb, 0x23, 0xe5, 0xaa, 0x4a, 0x7a, 0x01,
+ 0x51, 0x6e, 0x18, 0x73, 0x7e, 0x93, 0xec, 0x79, 0x02, 0x3b, 0x00, 0x3f,
+ 0x24, 0x2d, 0x1e, 0x88, 0x5a, 0xc7, 0xef, 0x79, 0xf7, 0x34, 0x13, 0xf0,
+ 0x00, 0x39, 0x67, 0x37, 0x2b, 0x21, 0xbd, 0x41, 0x98, 0x6e, 0xa8, 0x0c,
+ 0x20, 0xd3, 0x16, 0x89, 0x2e, 0x6b, 0xac, 0x3b, 0x67, 0xef, 0x01, 0x69,
+ 0xd2, 0xd6, 0x51, 0xea, 0x38, 0x99, 0x6e, 0xc7, 0x44, 0x69, 0xf4, 0x74,
+ 0xfc, 0xa9, 0x29, 0x1f, 0xac, 0x1f, 0x91, 0xbd, 0xa3, 0xda, 0x49, 0x33,
+ 0xf0, 0x10, 0xaa, 0x65, 0xda, 0xf7, 0xb9, 0xf5, 0x6d, 0xd1, 0xae, 0x01,
+ 0x84, 0x1f, 0xa5, 0xec, 0x13, 0xf0, 0xe5, 0x17, 0xa7, 0x90, 0xea, 0xfe,
+ 0x96, 0x8d, 0x07, 0x9e, 0xf2, 0xe4, 0x1c, 0xa0, 0xe6, 0xda, 0x0b, 0x48,
+ 0x24, 0xbd, 0xd2, 0x7f, 0xcd, 0x09, 0x29, 0x8d, 0xed, 0x61, 0x60, 0x01,
+ 0xb0, 0xe7, 0x41, 0xd7, 0xc0, 0x18, 0x85, 0x27, 0x52, 0x6f, 0x7d, 0x60,
+ 0x12, 0x2b, 0x61, 0x2d, 0x73, 0x3b, 0x11, 0x03, 0x95, 0x0a, 0x9e, 0x2f,
+ 0x73, 0xda, 0xe9, 0xf6, 0x3f, 0x68, 0x71, 0x10, 0x09, 0x81, 0xf4, 0x7c,
+ 0x55, 0xd6, 0x30, 0x9a, 0xf6, 0xce, 0xd2, 0xe0, 0x49, 0x23, 0x53, 0xe4,
+ 0x92, 0x90, 0x55, 0xb2, 0xde, 0xa7, 0x75, 0xae, 0xaf, 0x4a, 0x43, 0x19,
+ 0x4b, 0xf4, 0xfc, 0xe0, 0x4b, 0xa3, 0xe6, 0x55, 0xe3, 0x65, 0x67, 0xd6,
+ 0xad, 0xa7, 0xdc, 0xcd, 0xb2, 0x3c, 0x9f, 0xba, 0x3f, 0x22, 0x06, 0xcb,
+ 0x1a, 0x01, 0xa9, 0xa3, 0x73, 0x9c, 0x4e, 0xbc, 0x7b, 0x41, 0x1a, 0xfc,
+ 0xd5, 0xa3, 0x51, 0x18, 0xb5, 0x9d, 0xa3, 0x79, 0x8f, 0x56, 0x3b, 0x96,
+ 0x84, 0x94, 0xd3, 0xb1, 0x95, 0x5d, 0x78, 0xa6, 0x25, 0x8d, 0x2d, 0x79,
+ 0x1c, 0x41, 0x07, 0x48, 0x8f, 0x82, 0x1e, 0x45, 0x57, 0x7d, 0xb4, 0xb5,
+ 0xcf, 0xdb, 0x5b, 0x43, 0x36, 0x36, 0x3b, 0x09, 0xdd, 0x3f, 0x19, 0x47,
+ 0xa9, 0xb3, 0x97, 0x65, 0xa5, 0xc4, 0xb6, 0x6b, 0x63, 0x5b, 0x11, 0x1b,
+ 0x01, 0x27, 0xf2, 0xa0, 0xb5, 0xd7, 0x5f, 0xd4, 0x2e, 0x0f, 0x64, 0x54,
+ 0xd7, 0x35, 0xb5, 0x99, 0xfa, 0x51, 0xf4, 0xb4, 0x49, 0x4e, 0x45, 0x0f,
+ 0x71, 0xb6, 0xf7, 0x93, 0xf4, 0xb2, 0x5d, 0xaf, 0x80, 0x68, 0x6b, 0x07,
+ 0xe2, 0x9f, 0x2d, 0xa3, 0xed, 0x77, 0xb8, 0x19, 0x73, 0x9b, 0x5b, 0x48,
+ 0xf0, 0xd2, 0x7f, 0x82, 0xaf, 0x8b, 0xfa, 0x7a, 0x8b, 0xaa, 0x88, 0xb6,
+ 0xd7, 0x3a, 0x49, 0xee, 0x6c, 0x93, 0xf8, 0x2b, 0x0e, 0x05, 0xf9, 0x19,
+ 0x0f, 0xfc, 0xe3, 0x63, 0x5a, 0xef, 0xec, 0x00, 0x00, 0xfc, 0x52, 0x53,
+ 0x51, 0xd9, 0x17, 0xbb, 0x2d, 0xcd, 0xfa, 0x5e, 0x96, 0xf2, 0x07, 0xf2,
+ 0x74, 0x00, 0x7e, 0x08, 0x8e, 0xbb, 0xf5, 0x90, 0x5e, 0x20, 0x0d, 0xa4,
+ 0x83, 0xda, 0x75, 0x28, 0x58, 0xad, 0x70, 0xce, 0xb1, 0xce, 0x3f, 0x49,
+ 0xc4, 0x08, 0xfe, 0xb1, 0x71, 0xfc, 0x14, 0x5e, 0xf1, 0x6d, 0xf9, 0x32,
+ 0x34, 0x0f, 0x8f, 0x93, 0x40, 0x49, 0x4d, 0xdb, 0x71, 0x00, 0xf5, 0x2e,
+ 0x61, 0x01, 0x96, 0x03, 0xea, 0x37, 0xf9, 0x43, 0xe8, 0x90, 0x8b, 0x76,
+ 0x0d, 0x45, 0xb0, 0xe6, 0x82, 0x0f, 0x97, 0x92, 0xa0, 0x2d, 0xb5, 0xf8,
+ 0xb6, 0x10, 0xf9, 0x0f, 0x73, 0x00, 0x3f, 0x07, 0x1d, 0xdf, 0x82, 0xbd,
+ 0x95, 0x92, 0x1b, 0x6b, 0x08, 0x13, 0xb4, 0xbb, 0x5f, 0xec, 0xca, 0x4a,
+ 0x72, 0x73, 0x3a, 0x25, 0x2f, 0xba, 0x90, 0xc1, 0x1e, 0xa3, 0xc8, 0x3e,
+ 0x10, 0x1a, 0x5c, 0xb3, 0x72, 0x7a, 0x43, 0xa8, 0xc9, 0x65, 0x63, 0xe8,
+ 0xbc, 0x13, 0x1f, 0x35, 0xd3, 0x53, 0x7d, 0x77, 0xe4, 0x56, 0xd1, 0xf4,
+ 0xaa, 0x63, 0x9e, 0x47, 0xf5, 0x80, 0x08, 0x79, 0xb5, 0x35, 0xd7, 0xd7,
+ 0x68, 0xe0, 0xb5, 0x8d, 0x1f, 0xda, 0x32, 0x92, 0x93, 0xf4, 0x8c, 0x36,
+ 0x61, 0xd8, 0xf2, 0x46, 0xd6, 0x57, 0x53, 0x4b, 0x8f, 0xc7, 0xba, 0xbc,
+ 0xd7, 0x01, 0x63, 0x9c, 0x04, 0x43, 0xbe, 0xf8, 0x44, 0xb2, 0xb1, 0xe9,
+ 0x64, 0x87, 0x37, 0xdb, 0xb1, 0xac, 0x20, 0xf0, 0x41, 0x94, 0x21, 0xdf,
+ 0xc2, 0x49, 0xfc, 0xa9, 0x29, 0xe7, 0x31, 0xf3, 0x3a, 0x97, 0x4d, 0xc9,
+ 0x75, 0xf4, 0x9f, 0x5a, 0xa9, 0x20, 0xb2, 0xdf, 0x70, 0x82, 0x66, 0x03,
+ 0x86, 0xa1, 0x69, 0x63, 0xf5, 0xcc, 0x4b, 0x72, 0xdf, 0x7d, 0x8d, 0x76,
+ 0x1d, 0xb7, 0xe9, 0x6b, 0x6d, 0xf7, 0x52, 0xf3, 0xff, 0x00, 0x18, 0xde,
+ 0x3e, 0x68, 0x34, 0xd2, 0x5b, 0x8f, 0xea, 0x57, 0x50, 0x75, 0x4e, 0x77,
+ 0x77, 0x6e, 0x3b, 0x40, 0x8d, 0xad, 0x9e, 0xdd, 0xd4, 0x5f, 0x56, 0x0d,
+ 0xae, 0x04, 0x31, 0xf5, 0xc6, 0x8e, 0xda, 0x67, 0x5f, 0x36, 0x94, 0x94,
+ 0xec, 0xb2, 0x81, 0x65, 0x84, 0x10, 0x36, 0x58, 0x37, 0x31, 0xe0, 0xcb,
+ 0x4f, 0x94, 0xff, 0x00, 0x15, 0x5b, 0x27, 0x07, 0xd3, 0x25, 0xc3, 0xd8,
+ 0x63, 0x99, 0x21, 0xd0, 0x7c, 0xc2, 0xa5, 0x45, 0x8c, 0xc5, 0x71, 0x76,
+ 0x2d, 0xfe, 0x93, 0x5d, 0xcb, 0x59, 0xf4, 0x67, 0xf9, 0x55, 0x3f, 0x42,
+ 0xad, 0xbb, 0xab, 0x38, 0x80, 0xdb, 0x29, 0xf5, 0x67, 0x97, 0x53, 0xc8,
+ 0xf1, 0x2e, 0xa9, 0xda, 0xff, 0x00, 0x9a, 0x4a, 0x4a, 0x6a, 0x64, 0x51,
+ 0x6d, 0x2d, 0xf7, 0x89, 0x69, 0xe0, 0xf1, 0xf8, 0xfd, 0x12, 0xad, 0xf4,
+ 0x36, 0xb1, 0xb8, 0x17, 0x39, 0x8d, 0x87, 0xda, 0xf7, 0x30, 0xc8, 0x89,
+ 0xd0, 0x05, 0x67, 0x16, 0xcc, 0x6c, 0xec, 0x73, 0x65, 0x0f, 0x24, 0x30,
+ 0x6d, 0x7b, 0x08, 0xef, 0x1d, 0xda, 0x75, 0xd1, 0x13, 0xa7, 0x50, 0xda,
+ 0x68, 0xaa, 0xbe, 0xc6, 0xc7, 0x3e, 0x3c, 0x24, 0xf0, 0x92, 0x91, 0xf5,
+ 0x9c, 0x2b, 0xb3, 0x31, 0xad, 0xa2, 0xb2, 0x43, 0x9e, 0x2b, 0xaf, 0xca,
+ 0x1d, 0x63, 0x41, 0xfc, 0x12, 0xff, 0x00, 0x98, 0x9d, 0x0a, 0xa6, 0x02,
+ 0x5d, 0x73, 0x88, 0xdc, 0x27, 0x7c, 0x13, 0x3c, 0x1d, 0x1b, 0xf9, 0xab,
+ 0x56, 0xa0, 0xd2, 0xe7, 0x92, 0x60, 0x17, 0xb0, 0x79, 0x7d, 0x29, 0x51,
+ 0xbf, 0xa8, 0xb2, 0x7d, 0x4f, 0xa5, 0x41, 0x0c, 0x15, 0xed, 0xe5, 0xce,
+ 0x2e, 0x2d, 0x71, 0xf8, 0x24, 0xa7, 0x8f, 0xea, 0x9f, 0x57, 0x33, 0xfa,
+ 0x79, 0x2f, 0xa8, 0x8c, 0xec, 0x7e, 0xc5, 0xa3, 0x6d, 0xed, 0xf8, 0xb4,
+ 0x72, 0xb2, 0xbd, 0x5a, 0xb6, 0xc4, 0xbb, 0x74, 0xc7, 0xa5, 0x07, 0xd4,
+ 0x9f, 0x08, 0x5e, 0x86, 0x32, 0xb1, 0xed, 0x69, 0xb7, 0x77, 0x04, 0xc7,
+ 0x9c, 0x18, 0x3c, 0xaa, 0x1f, 0xb3, 0x71, 0x3e, 0xdb, 0xfb, 0x5b, 0xd2,
+ 0xfd, 0x2e, 0xc9, 0xf5, 0x64, 0xfd, 0x2d, 0xdb, 0x67, 0xc2, 0x76, 0xa4,
+ 0xa4, 0x35, 0x34, 0x6f, 0x60, 0x33, 0xb5, 0xa5, 0xb3, 0xf0, 0x0a, 0xdb,
+ 0x5f, 0x78, 0xcf, 0xc7, 0xac, 0x80, 0xea, 0x48, 0xb5, 0xee, 0xfd, 0xed,
+ 0xcd, 0xfa, 0x3f, 0x95, 0x53, 0x27, 0xdc, 0x1a, 0x3f, 0x78, 0x4f, 0xde,
+ 0x02, 0xbf, 0x51, 0x16, 0x75, 0x06, 0xf7, 0xd9, 0x5b, 0xe3, 0xe6, 0x40,
+ 0x49, 0x4f, 0x37, 0x9d, 0x5d, 0x6f, 0xea, 0x79, 0x76, 0x3a, 0x08, 0xf5,
+ 0x48, 0x3e, 0x22, 0x04, 0x2a, 0x8e, 0x64, 0xcc, 0xb6, 0x24, 0xf7, 0x57,
+ 0x2e, 0x67, 0xa9, 0x93, 0x93, 0x76, 0xd9, 0x63, 0xad, 0xb0, 0xcb, 0x23,
+ 0x77, 0xd2, 0x3c, 0x8e, 0x0a, 0x8b, 0x29, 0x6b, 0x99, 0xb9, 0x8f, 0xf5,
+ 0x1a, 0xde, 0x7b, 0x11, 0xe4, 0x5a, 0x92, 0x9c, 0xff, 0x00, 0xb3, 0xbc,
+ 0x3c, 0x35, 0x87, 0x5f, 0xe4, 0x19, 0xff, 0x00, 0x6a, 0x23, 0x2d, 0xc8,
+ 0x61, 0x87, 0x7b, 0xa3, 0x89, 0x10, 0x7e, 0xfd, 0x15, 0xa0, 0xda, 0xc8,
+ 0x12, 0xd1, 0x20, 0xf1, 0x10, 0x7e, 0xf5, 0x61, 0x95, 0x6f, 0x70, 0xdc,
+ 0xcd, 0xed, 0xec, 0xdd, 0x26, 0x7b, 0xf3, 0xca, 0x4a, 0x6b, 0x0b, 0xc1,
+ 0xd2, 0xea, 0xe7, 0x70, 0x90, 0x63, 0xbf, 0x8c, 0x8f, 0xee, 0x56, 0x3a,
+ 0x33, 0x2b, 0xb3, 0xab, 0xfa, 0x95, 0x48, 0x6b, 0x2a, 0x74, 0x83, 0xcc,
+ 0x92, 0x3c, 0x11, 0xce, 0x23, 0x46, 0x9e, 0x99, 0x1a, 0x71, 0x3f, 0xde,
+ 0xa7, 0xd0, 0xea, 0xac, 0x65, 0xe4, 0x90, 0x23, 0x68, 0x63, 0x63, 0x88,
+ 0x99, 0x3d, 0xd2, 0x53, 0xa2, 0x5d, 0x6b, 0xb2, 0x4b, 0x44, 0x86, 0xd6,
+ 0xc6, 0xc7, 0xc5, 0xd3, 0xa2, 0xbc, 0x4e, 0xdc, 0x7c, 0x82, 0xe1, 0xfe,
+ 0x0a, 0x3f, 0xce, 0x78, 0x1f, 0xc1, 0x55, 0x2e, 0xd8, 0x1c, 0x47, 0x0f,
+ 0xb0, 0x89, 0xf2, 0x69, 0x8d, 0x11, 0x72, 0xb7, 0x3b, 0xa7, 0xd9, 0xb1,
+ 0xdb, 0x6c, 0xb1, 0xf5, 0x34, 0x38, 0x89, 0xd0, 0x39, 0xce, 0x3a, 0x7c,
+ 0x92, 0x53, 0x1c, 0x0a, 0xc0, 0x68, 0x1f, 0xbc, 0x01, 0xfb, 0x8f, 0xfb,
+ 0x15, 0x7c, 0xa7, 0x0f, 0x58, 0x9e, 0xda, 0x98, 0xf9, 0xca, 0xbd, 0x4f,
+ 0x6f, 0xdd, 0x01, 0xbf, 0x90, 0x95, 0x95, 0x98, 0x5c, 0xc1, 0x6b, 0xda,
+ 0x0b, 0x88, 0x02, 0x23, 0xf9, 0x44, 0x0f, 0xe2, 0x92, 0x99, 0xb4, 0x0d,
+ 0x1d, 0x1f, 0x44, 0xee, 0x8f, 0x03, 0x0a, 0xde, 0x3e, 0x80, 0x07, 0x73,
+ 0xb6, 0x3f, 0x15, 0x56, 0xa3, 0x2c, 0xd3, 0x40, 0xed, 0x08, 0xef, 0xaa,
+ 0xb5, 0x59, 0x20, 0x39, 0xfc, 0xc4, 0x00, 0x3e, 0x09, 0x29, 0x2b, 0x1c,
+ 0x0b, 0xdb, 0xdb, 0x6c, 0x83, 0xf3, 0x47, 0xba, 0xd0, 0xd6, 0x56, 0xde,
+ 0x46, 0xd9, 0x3e, 0x52, 0x4f, 0xf0, 0x41, 0xa8, 0x38, 0xdc, 0xc6, 0xcf,
+ 0x62, 0x5d, 0x3d, 0xe5, 0x4f, 0xa8, 0x10, 0xdf, 0x50, 0xf6, 0x00, 0x34,
+ 0x0f, 0x80, 0x84, 0x94, 0xc3, 0x11, 0xa2, 0xc6, 0x6f, 0xe2, 0x1c, 0x5f,
+ 0x1f, 0x15, 0x07, 0x3a, 0xb1, 0xbf, 0x25, 0xd2, 0x3d, 0x1a, 0xec, 0x7e,
+ 0x9c, 0x68, 0xd9, 0xd5, 0x12, 0xb0, 0x29, 0x63, 0x58, 0x04, 0x6f, 0x66,
+ 0xe3, 0x1c, 0x4b, 0xbb, 0xaa, 0x3d, 0x4e, 0xe3, 0x57, 0x4a, 0xcf, 0x20,
+ 0xc7, 0xe8, 0x2c, 0x68, 0x8f, 0xe5, 0x08, 0xfe, 0x29, 0x29, 0xc2, 0xe8,
+ 0x8d, 0x03, 0x1f, 0x1d, 0xad, 0xd0, 0xbd, 0x9e, 0xa1, 0x3c, 0x89, 0x24,
+ 0x8f, 0xe0, 0xac, 0x51, 0x5b, 0xda, 0xeb, 0x9c, 0xe3, 0xab, 0xef, 0xb1,
+ 0xff, 0x00, 0x2d, 0xdb, 0x47, 0xe4, 0x42, 0xc0, 0xae, 0xdc, 0x46, 0xe2,
+ 0xd1, 0x6c, 0x17, 0xb9, 0xa1, 0xb2, 0x38, 0x02, 0x09, 0x83, 0xf3, 0x2a,
+ 0xe8, 0x23, 0x7f, 0xc4, 0x91, 0x1f, 0xda, 0x71, 0x29, 0x29, 0xa7, 0x8f,
+ 0x55, 0x82, 0xd0, 0xf7, 0x88, 0x2e, 0x75, 0x8e, 0xf9, 0x13, 0x0d, 0xfc,
+ 0x15, 0x59, 0x0d, 0x6e, 0x55, 0xc4, 0xc3, 0x7d, 0x42, 0xdf, 0xfa, 0x50,
+ 0xb5, 0xab, 0x6f, 0xd1, 0x11, 0x20, 0x44, 0xfd, 0xcb, 0x39, 0xb4, 0x32,
+ 0xda, 0x00, 0x79, 0x3b, 0x5e, 0xfd, 0xce, 0x07, 0xc0, 0x12, 0xee, 0xc9,
+ 0x29, 0x7b, 0x18, 0x1b, 0x8d, 0xec, 0x10, 0x0b, 0xc9, 0x60, 0xf9, 0xc0,
+ 0x51, 0xc9, 0xb0, 0xb4, 0x6a, 0xe0, 0x49, 0x97, 0x1f, 0x9b, 0x78, 0xfb,
+ 0xd1, 0x2d, 0x63, 0xcd, 0x35, 0xd4, 0x3e, 0x98, 0x0d, 0x70, 0x00, 0x71,
+ 0xac, 0xa0, 0x75, 0x36, 0x3b, 0x53, 0x1e, 0xde, 0x01, 0xf1, 0x20, 0x03,
+ 0x1f, 0x82, 0x4a, 0x5f, 0x0e, 0xd7, 0x30, 0xdb, 0x78, 0xd0, 0x96, 0x96,
+ 0x8f, 0x31, 0xc2, 0xd0, 0xb7, 0xf4, 0xb6, 0xe3, 0x33, 0xf7, 0xac, 0x1f,
+ 0x73, 0x43, 0x42, 0xa3, 0x50, 0x68, 0xdd, 0x40, 0xd1, 0xcc, 0x0c, 0x0e,
+ 0xf0, 0x93, 0x04, 0xfe, 0x55, 0xa1, 0x88, 0xd0, 0xec, 0xdc, 0x6d, 0xba,
+ 0x80, 0x09, 0x9f, 0x8b, 0x92, 0x53, 0xb7, 0x94, 0xd0, 0x6a, 0x7b, 0x5b,
+ 0xf9, 0xc1, 0xb3, 0xf7, 0xc2, 0xa2, 0xff, 0x00, 0xe6, 0xdf, 0x1a, 0x18,
+ 0x7c, 0x77, 0xd4, 0x82, 0xb4, 0x72, 0xd8, 0x5b, 0x47, 0xaa, 0x0e, 0x84,
+ 0xb1, 0xbe, 0x72, 0x08, 0x2b, 0x27, 0x26, 0xdf, 0x49, 0x8f, 0x87, 0x43,
+ 0xf6, 0xd8, 0x5a, 0x40, 0xd2, 0x40, 0x99, 0x49, 0x4e, 0x2d, 0x17, 0xe5,
+ 0xe2, 0xb4, 0xd7, 0x98, 0xc7, 0x3a, 0xa1, 0x03, 0x75, 0x60, 0x1f, 0xed,
+ 0x16, 0x68, 0xe5, 0x76, 0xb7, 0x61, 0xe5, 0x7f, 0x47, 0xb5, 0xb6, 0x3b,
+ 0xbb, 0x38, 0x77, 0xdd, 0xa3, 0x94, 0x69, 0xc8, 0xaa, 0xc6, 0xb5, 0xb9,
+ 0x4c, 0x1b, 0xbf, 0x7d, 0xba, 0xb7, 0xe6, 0x3b, 0x21, 0x64, 0x74, 0xec,
+ 0x6b, 0x01, 0xb2, 0xb8, 0x75, 0x8d, 0xe0, 0x8f, 0x3f, 0x31, 0xee, 0x09,
+ 0x29, 0x35, 0x94, 0x16, 0x0d, 0xcf, 0x68, 0x20, 0x72, 0x79, 0xd3, 0xcd,
+ 0xcd, 0x55, 0xdc, 0xea, 0xf7, 0x0d, 0xcd, 0xf6, 0x0e, 0x0b, 0x7b, 0x0f,
+ 0x92, 0x0d, 0x19, 0x1d, 0x4b, 0x1a, 0xdd, 0xac, 0x7f, 0xa8, 0x1b, 0xab,
+ 0x59, 0x7e, 0xb3, 0xfd, 0x5b, 0x07, 0xf1, 0x56, 0x3e, 0xdd, 0x86, 0xf1,
+ 0xb7, 0x3a, 0xa7, 0x62, 0x58, 0x78, 0x7f, 0x2c, 0x3f, 0xda, 0x6a, 0x4a,
+ 0x5d, 0x8d, 0x6b, 0x08, 0xb2, 0x8b, 0x77, 0x80, 0x75, 0x27, 0xe9, 0x6b,
+ 0xda, 0x64, 0x15, 0xbd, 0xd3, 0xe6, 0xd6, 0xe3, 0xba, 0x77, 0x0d, 0x5c,
+ 0x27, 0xc2, 0x4a, 0xc1, 0x38, 0xf5, 0xda, 0xd2, 0xea, 0x5e, 0xdb, 0x63,
+ 0x42, 0x59, 0x0d, 0x3f, 0x18, 0xfa, 0x2e, 0xf9, 0x2d, 0xde, 0x94, 0x0d,
+ 0x74, 0xe3, 0x10, 0x61, 0xbe, 0x9c, 0x6d, 0x3a, 0x41, 0x05, 0xd2, 0x92,
+ 0x9b, 0xdb, 0x9a, 0xd0, 0x43, 0x9a, 0x36, 0xef, 0x67, 0xdf, 0xaf, 0xf7,
+ 0x2c, 0xdc, 0x8d, 0x84, 0xd8, 0xda, 0xc6, 0xd1, 0x49, 0xda, 0xc1, 0x31,
+ 0x26, 0x77, 0xab, 0x56, 0xdd, 0xb0, 0x57, 0x1e, 0xe7, 0x59, 0x64, 0x0f,
+ 0x93, 0x5f, 0x2a, 0x9d, 0xb6, 0x0b, 0x6d, 0x75, 0x75, 0xbb, 0x58, 0xde,
+ 0xe3, 0xe3, 0xb7, 0x73, 0xa0, 0x7e, 0x09, 0x29, 0xad, 0x93, 0x8d, 0x7d,
+ 0x55, 0x3a, 0xda, 0xc1, 0xb8, 0x7a, 0x76, 0x3b, 0x73, 0x47, 0xd1, 0xf7,
+ 0x4b, 0x8c, 0x76, 0xec, 0x9f, 0xed, 0x77, 0xfd, 0x93, 0xec, 0xf1, 0xec,
+ 0xfb, 0x34, 0x72, 0x67, 0x7c, 0x4c, 0xa9, 0xb7, 0xa7, 0x75, 0x2b, 0xb1,
+ 0x9f, 0x95, 0x84, 0xd3, 0x65, 0x65, 0x8e, 0xad, 0xf5, 0x83, 0xee, 0x71,
+ 0xd5, 0xdc, 0x72, 0x67, 0x72, 0x7f, 0xd6, 0x7f, 0x68, 0x6e, 0xd8, 0x77,
+ 0x7a, 0x7f, 0x67, 0xdb, 0xb7, 0xf3, 0x7d, 0x2e, 0x36, 0xf8, 0xa4, 0xa5,
+ 0x9a, 0xd2, 0x6c, 0xac, 0xff, 0x00, 0xc2, 0x09, 0xfb, 0x8b, 0x91, 0xfa,
+ 0x65, 0xcc, 0xba, 0xf3, 0x63, 0x08, 0x77, 0xe8, 0x6d, 0x92, 0x0e, 0xef,
+ 0xa2, 0xf5, 0x59, 0xd6, 0xed, 0xaa, 0xfb, 0x1a, 0x0e, 0xfa, 0x5e, 0xc2,
+ 0x3e, 0x62, 0x13, 0x74, 0x9f, 0x51, 0x94, 0x67, 0x64, 0x35, 0xa1, 0xb5,
+ 0xb2, 0xa7, 0x31, 0x84, 0x44, 0x12, 0xe0, 0x5c, 0x4e, 0x9e, 0x69, 0x29,
+ 0xc3, 0xaa, 0xef, 0x55, 0xaf, 0x16, 0x6e, 0x1b, 0x89, 0x24, 0xb6, 0x27,
+ 0x5e, 0x02, 0x8b, 0x05, 0x35, 0x59, 0xbe, 0xbb, 0x1c, 0xdb, 0x48, 0x82,
+ 0xe3, 0xaf, 0x3e, 0x32, 0x8b, 0x8d, 0x5b, 0xc3, 0x18, 0x5e, 0x38, 0x12,
+ 0x48, 0xf1, 0x29, 0xed, 0xc7, 0x6b, 0x9f, 0xed, 0x69, 0x00, 0xc9, 0x31,
+ 0xca, 0x4a, 0x6e, 0x16, 0x55, 0x63, 0xab, 0xb0, 0xbb, 0xdc, 0x00, 0x16,
+ 0x39, 0xb2, 0x27, 0xc7, 0xe8, 0x76, 0xf8, 0xa3, 0xb6, 0x86, 0xed, 0x2f,
+ 0xa5, 0xfb, 0x9a, 0x34, 0x3e, 0x9b, 0x9a, 0x75, 0xf3, 0x6f, 0xfb, 0x16,
+ 0x6d, 0x4d, 0x25, 0x9e, 0xd1, 0x06, 0x48, 0x0e, 0xf8, 0x2b, 0x75, 0x31,
+ 0xed, 0xac, 0x1b, 0x06, 0xf9, 0xd4, 0x9e, 0xf1, 0xfd, 0x6e, 0x52, 0x53,
+ 0x7d, 0xb1, 0xb3, 0x73, 0x46, 0xe3, 0x1e, 0xd3, 0x05, 0x9f, 0x90, 0xa2,
+ 0xf4, 0xca, 0x62, 0xdc, 0x92, 0x79, 0xdc, 0x00, 0xff, 0x00, 0x35, 0x53,
+ 0xde, 0x1f, 0x63, 0x5e, 0x49, 0x96, 0x02, 0x1a, 0x0f, 0x06, 0x7f, 0x8a,
+ 0xb7, 0x86, 0x4e, 0x3e, 0x05, 0x8e, 0x79, 0x2e, 0x73, 0xec, 0x3e, 0xe3,
+ 0xa9, 0xd0, 0xc2, 0x4a, 0x67, 0x4d, 0xd9, 0x0e, 0xc7, 0x8c, 0x9a, 0x3d,
+ 0x07, 0x3b, 0x7b, 0xb1, 0xdd, 0xab, 0xf7, 0x8d, 0xce, 0x71, 0x25, 0xa0,
+ 0x68, 0x40, 0xfb, 0xd5, 0xcc, 0xd6, 0xb4, 0xe1, 0x56, 0xe0, 0xe9, 0x1e,
+ 0xad, 0x6d, 0x11, 0xa7, 0xe6, 0xb8, 0xff, 0x00, 0x14, 0x5a, 0x72, 0x9e,
+ 0xe0, 0xd6, 0x1f, 0x77, 0xa6, 0xc0, 0x02, 0x86, 0x4f, 0xb6, 0xac, 0x76,
+ 0x44, 0x87, 0x5c, 0xe7, 0x3b, 0xe4, 0xd0, 0x12, 0x53, 0x2a, 0x41, 0x0d,
+ 0xb1, 0xfd, 0x80, 0xd3, 0xe4, 0xd8, 0x59, 0xd6, 0x49, 0xde, 0x0f, 0x04,
+ 0xeb, 0x3e, 0x21, 0x69, 0x34, 0x1f, 0x42, 0xc3, 0xf1, 0x8e, 0xde, 0x4b,
+ 0x36, 0xf6, 0xe8, 0x48, 0xe5, 0xce, 0x74, 0xf9, 0x6b, 0x1f, 0xc1, 0x25,
+ 0x30, 0xaa, 0xda, 0xc5, 0xed, 0xa4, 0x92, 0x5c, 0x58, 0x5e, 0x48, 0xe0,
+ 0x06, 0x44, 0x83, 0xf7, 0xab, 0x74, 0x8d, 0xf5, 0x56, 0xe0, 0x75, 0x3b,
+ 0x89, 0x8f, 0x8a, 0xa6, 0xd1, 0x19, 0x56, 0x38, 0x81, 0xed, 0xa6, 0x34,
+ 0xe7, 0xdc, 0xe3, 0xfd, 0xca, 0xfe, 0x23, 0x03, 0x6a, 0x61, 0x1a, 0x8d,
+ 0xbf, 0xc2, 0x52, 0x53, 0x67, 0x70, 0x65, 0x76, 0x58, 0xd0, 0x5e, 0xe6,
+ 0x81, 0x0d, 0x68, 0x97, 0x7c, 0x82, 0x15, 0xed, 0x2f, 0x61, 0x0e, 0xfa,
+ 0x45, 0xec, 0x93, 0xe6, 0x54, 0xf1, 0x68, 0x32, 0xf7, 0x09, 0x2e, 0x79,
+ 0x1b, 0x8f, 0x80, 0x68, 0x4d, 0x91, 0x63, 0x77, 0xb5, 0x83, 0xdc, 0xe2,
+ 0xfd, 0xe4, 0x0e, 0xc1, 0xa3, 0xba, 0x4a, 0x66, 0xea, 0x1c, 0xd6, 0xbc,
+ 0x93, 0x3a, 0x35, 0xa3, 0xe0, 0xc0, 0x25, 0x65, 0xf5, 0x5a, 0x4f, 0xec,
+ 0x7c, 0xb7, 0x19, 0xfd, 0x3b, 0xa9, 0xad, 0xb3, 0xc4, 0xba, 0xc6, 0x08,
+ 0x1f, 0x25, 0xb0, 0xfb, 0x5b, 0x4e, 0x1d, 0xa6, 0xd3, 0x3d, 0x9a, 0x79,
+ 0x00, 0x90, 0xd6, 0xf6, 0xf8, 0xac, 0xbf, 0xac, 0x76, 0x1a, 0xfa, 0x6f,
+ 0x4e, 0xa1, 0xbf, 0x4a, 0xcc, 0x9a, 0xdc, 0x47, 0x8e, 0xdd, 0xcf, 0xfe,
+ 0x09, 0x29, 0xce, 0xc8, 0x2d, 0x3d, 0x50, 0x56, 0x01, 0x26, 0xba, 0xf4,
+ 0x8e, 0xd3, 0xdc, 0xfd, 0xc9, 0x06, 0x00, 0x2b, 0x00, 0x6e, 0x20, 0x6e,
+ 0x1f, 0x13, 0x21, 0x03, 0x22, 0x68, 0xea, 0x72, 0x1a, 0xf7, 0x97, 0x97,
+ 0x0d, 0xfc, 0xc4, 0xfb, 0xa0, 0xfc, 0x15, 0xfa, 0xd9, 0x58, 0x73, 0x1c,
+ 0xff, 0x00, 0xa7, 0xe9, 0xb0, 0x3a, 0x7c, 0xa7, 0xff, 0x00, 0x24, 0x92,
+ 0x91, 0x63, 0x83, 0xfa, 0x67, 0x81, 0xf4, 0x24, 0x9f, 0x90, 0xd1, 0x54,
+ 0xaf, 0x4c, 0x77, 0x34, 0x08, 0xda, 0xe8, 0x07, 0xc8, 0x06, 0x8f, 0xe2,
+ 0xad, 0xd2, 0xf7, 0x8a, 0xb2, 0x9c, 0x74, 0x2f, 0x2e, 0xf6, 0xff, 0x00,
+ 0x54, 0xc0, 0xfb, 0xd0, 0x03, 0x6a, 0x75, 0x0d, 0x6c, 0xfb, 0x5e, 0xed,
+ 0xbf, 0x12, 0x48, 0x9f, 0xc8, 0x92, 0x9b, 0xe2, 0x8a, 0x8d, 0x16, 0x13,
+ 0xab, 0xb7, 0x86, 0x7c, 0xb6, 0xc4, 0x2c, 0xac, 0xd0, 0xdb, 0x4d, 0x4d,
+ 0x1f, 0x9f, 0x73, 0xc6, 0xbe, 0x00, 0xec, 0x5a, 0xb5, 0xb4, 0x33, 0x08,
+ 0x3d, 0x82, 0x77, 0x59, 0xb8, 0x0e, 0xe7, 0x58, 0xfc, 0x8b, 0x39, 0xd5,
+ 0x93, 0x9f, 0x45, 0x00, 0x00, 0x2b, 0x93, 0xf3, 0x9d, 0xc5, 0x25, 0x2a,
+ 0xf0, 0x2b, 0x75, 0xb6, 0x00, 0x0b, 0x86, 0xe7, 0x0d, 0x39, 0xda, 0xd3,
+ 0x1f, 0x8a, 0xb3, 0xd1, 0x5b, 0x27, 0x1d, 0xce, 0x10, 0xe1, 0x43, 0x1c,
+ 0x67, 0xc5, 0xda, 0xa0, 0xe5, 0xed, 0x73, 0xde, 0x23, 0xb3, 0xc4, 0xf1,
+ 0xa4, 0x41, 0x5a, 0x5d, 0x32, 0xa2, 0xcf, 0x44, 0x78, 0x51, 0x58, 0x8f,
+ 0xec, 0x84, 0x94, 0xe9, 0xe6, 0x01, 0xf6, 0x36, 0xb7, 0xc6, 0xc1, 0x3f,
+ 0x8a, 0xc2, 0xea, 0x0f, 0xb0, 0x61, 0xdc, 0xfa, 0xe0, 0xbc, 0x54, 0xed,
+ 0xb3, 0xa6, 0xa4, 0x80, 0xb6, 0x73, 0x1f, 0x35, 0xb1, 0xa3, 0xb3, 0xf5,
+ 0xf9, 0x02, 0xb1, 0xb3, 0xcb, 0x06, 0x35, 0xc2, 0xc9, 0xda, 0x5a, 0xd6,
+ 0x98, 0x3e, 0x2e, 0x49, 0x4e, 0x16, 0x37, 0x50, 0x23, 0xdb, 0xd4, 0x18,
+ 0xea, 0xe6, 0x36, 0xd8, 0xe0, 0x60, 0x7c, 0x5c, 0xcf, 0xe2, 0x15, 0xfa,
+ 0x6a, 0xdc, 0x0b, 0xf1, 0x6c, 0x6b, 0xda, 0x7b, 0x82, 0x09, 0xff, 0x00,
+ 0x38, 0x7f, 0x10, 0xa9, 0x96, 0x38, 0x0f, 0x63, 0xa7, 0xc8, 0xa9, 0xd7,
+ 0x8b, 0x53, 0x9a, 0x2c, 0x6d, 0x6e, 0xad, 0xf3, 0xb5, 0xd7, 0x52, 0x76,
+ 0x41, 0x3f, 0xd5, 0x30, 0x7e, 0xe4, 0x94, 0x9e, 0xc6, 0xd8, 0x09, 0x6b,
+ 0xf5, 0x81, 0xdc, 0x47, 0xe2, 0xa4, 0xc1, 0x55, 0x9f, 0xa3, 0x33, 0x5b,
+ 0x23, 0xb8, 0xdc, 0xd9, 0xe1, 0x46, 0xbb, 0x33, 0x18, 0x21, 0x8f, 0xaf,
+ 0x3a, 0xbe, 0xed, 0x74, 0x32, 0xc0, 0x3f, 0xac, 0x34, 0xfb, 0xd2, 0x17,
+ 0x60, 0xb8, 0xfa, 0x56, 0x7a, 0x98, 0x36, 0x1e, 0x1b, 0x67, 0xd0, 0x9f,
+ 0x8f, 0x09, 0x29, 0x0d, 0x9d, 0x29, 0xb5, 0x7e, 0x9e, 0xb7, 0x9a, 0x01,
+ 0xd0, 0x5f, 0x51, 0xf6, 0xff, 0x00, 0x68, 0x2e, 0x8f, 0xa4, 0x36, 0xda,
+ 0xb1, 0xe9, 0xaf, 0x22, 0xc1, 0x6b, 0xeb, 0x05, 0xce, 0xb2, 0x34, 0x33,
+ 0x2e, 0xd3, 0xe4, 0xb0, 0x8d, 0x16, 0x7a, 0x6e, 0x35, 0x91, 0x63, 0x0e,
+ 0x9b, 0x99, 0xa8, 0xf9, 0x82, 0xb7, 0x31, 0xdc, 0xc6, 0x36, 0xb6, 0xfd,
+ 0x02, 0x6b, 0x00, 0x7c, 0xab, 0x94, 0x94, 0x87, 0x3b, 0x77, 0xaf, 0x40,
+ 0xb0, 0x86, 0x55, 0x8f, 0x6d, 0x56, 0xee, 0xed, 0xaf, 0xa8, 0x1d, 0xbb,
+ 0xca, 0x0a, 0xa1, 0x95, 0x70, 0xaa, 0xf7, 0x96, 0xb4, 0xbd, 0xce, 0x2e,
+ 0x15, 0xb5, 0xa2, 0x5d, 0x04, 0x98, 0xd3, 0xe0, 0x16, 0x86, 0x63, 0xcd,
+ 0x55, 0xbf, 0x28, 0xc6, 0xd0, 0x0b, 0x00, 0x22, 0x4c, 0xbc, 0x06, 0x08,
+ 0xf8, 0x6e, 0x28, 0xbd, 0x2b, 0x1a, 0xac, 0x8e, 0xb1, 0x5d, 0xc0, 0xe9,
+ 0x8e, 0x4d, 0x8e, 0x83, 0xaf, 0xb5, 0xb1, 0xaf, 0xcc, 0xa4, 0xa6, 0xd7,
+ 0xd5, 0xbc, 0xd6, 0x62, 0xf4, 0xec, 0xdb, 0xf3, 0x09, 0xa9, 0x98, 0xf6,
+ 0x37, 0x73, 0x5c, 0x08, 0x73, 0x7f, 0x46, 0xd8, 0x11, 0xe7, 0x2a, 0xbf,
+ 0xda, 0x3f, 0x5a, 0xfb, 0x4c, 0xbf, 0xd2, 0xf5, 0xfd, 0x59, 0xef, 0x11,
+ 0xfd, 0xca, 0xe7, 0xd6, 0x5c, 0x6a, 0xeb, 0xe8, 0xd9, 0x16, 0x56, 0x75,
+ 0xcc, 0xb9, 0x96, 0x3d, 0xd1, 0x1d, 0x84, 0x7d, 0xc1, 0xa1, 0x65, 0xcb,
+ 0xfe, 0xcf, 0xbe, 0x34, 0x88, 0x8e, 0xdf, 0x46, 0x52, 0x52, 0x0b, 0x5b,
+ 0x18, 0xd9, 0x6e, 0x07, 0x47, 0x06, 0x18, 0x56, 0x31, 0xe2, 0xbf, 0xab,
+ 0xd9, 0x3b, 0x40, 0x1b, 0xd8, 0xef, 0xbc, 0x82, 0x9a, 0xb6, 0x8b, 0x69,
+ 0x73, 0x40, 0xd1, 0xed, 0x12, 0x7e, 0x21, 0x13, 0x35, 0x85, 0xbd, 0x0d,
+ 0xec, 0x6c, 0x34, 0xc0, 0x6e, 0x9e, 0x64, 0x36, 0x7f, 0x14, 0x94, 0xf3,
+ 0x34, 0x53, 0x73, 0x5b, 0x03, 0x5f, 0xea, 0x98, 0x3f, 0x31, 0xc2, 0x38,
+ 0x73, 0x83, 0xa4, 0xba, 0x1d, 0xac, 0x87, 0x0f, 0x11, 0xe2, 0xd4, 0x17,
+ 0x58, 0xea, 0x88, 0x0f, 0x81, 0xb8, 0xc6, 0xe3, 0x2d, 0x85, 0x6e, 0x9c,
+ 0x41, 0x73, 0x5d, 0x6b, 0x6c, 0xdb, 0x4b, 0x61, 0xa0, 0x93, 0x3b, 0x89,
+ 0x3d, 0xfe, 0x09, 0x29, 0x81, 0x2e, 0x35, 0xec, 0xd4, 0x6d, 0xd3, 0x4f,
+ 0x74, 0x1f, 0x15, 0x7f, 0x1f, 0x6b, 0x98, 0x18, 0x44, 0xe8, 0x3c, 0xb4,
+ 0x85, 0x52, 0xd8, 0xa0, 0x06, 0x02, 0x2c, 0x8f, 0xcf, 0x66, 0xb2, 0x3e,
+ 0x09, 0x99, 0x6b, 0x39, 0x16, 0x91, 0x61, 0x8d, 0x1d, 0x20, 0x04, 0x94,
+ 0x99, 0xf4, 0x16, 0x8d, 0xcc, 0x76, 0xd3, 0xcc, 0x72, 0x0c, 0xf6, 0x57,
+ 0xa9, 0x63, 0x9b, 0xd3, 0xab, 0x63, 0xb5, 0x2e, 0x73, 0x64, 0x0e, 0xc4,
+ 0x9d, 0xcb, 0x3d, 0xce, 0xc9, 0x00, 0x10, 0xf6, 0x90, 0x27, 0x48, 0x90,
+ 0x7e, 0xe5, 0x2c, 0xfe, 0xbd, 0x8d, 0x8b, 0x43, 0x31, 0xe9, 0x02, 0xec,
+ 0x81, 0x0e, 0x20, 0x7d, 0x16, 0xba, 0x22, 0x0f, 0xde, 0x92, 0x9d, 0x7a,
+ 0xf2, 0xb1, 0xf1, 0x1b, 0x66, 0x4e, 0x45, 0x8d, 0x63, 0x1d, 0xe3, 0xcf,
+ 0xdc, 0xb2, 0xf3, 0xbe, 0xb8, 0xe0, 0x87, 0x30, 0x51, 0x53, 0xae, 0x0c,
+ 0x73, 0x9c, 0x3f, 0x35, 0xa6, 0x7e, 0x2b, 0x93, 0xce, 0xea, 0x19, 0x19,
+ 0x0f, 0xdd, 0x7b, 0xf7, 0xbb, 0xf7, 0x7b, 0x0f, 0x90, 0x55, 0x3f, 0x4a,
+ 0xfe, 0x01, 0xf8, 0x04, 0x94, 0xf6, 0xd8, 0xbf, 0x5d, 0xa9, 0xb9, 0xde,
+ 0x8b, 0xb1, 0x0b, 0x0d, 0x84, 0x07, 0x38, 0x3b, 0x70, 0x1a, 0xf6, 0x08,
+ 0xb5, 0x75, 0x7e, 0x93, 0x91, 0x68, 0x15, 0x64, 0x7b, 0xe4, 0xe9, 0x63,
+ 0x76, 0x4c, 0x9f, 0x89, 0x0b, 0x82, 0x25, 0xed, 0x3a, 0xa2, 0xb6, 0x1c,
+ 0x24, 0x24, 0xa7, 0xd0, 0x28, 0x66, 0xf7, 0x67, 0x6b, 0x3e, 0xaf, 0xa5,
+ 0x53, 0x1c, 0x35, 0xd3, 0x6e, 0xe3, 0x07, 0xfb, 0x4a, 0xed, 0x2c, 0x35,
+ 0xd4, 0x2b, 0x6c, 0x90, 0xc1, 0xb4, 0x4f, 0x90, 0x85, 0xc1, 0xf4, 0xfe,
+ 0xad, 0x99, 0x85, 0x73, 0x5e, 0xc7, 0x97, 0x31, 0xba, 0x1a, 0xcf, 0xd1,
+ 0x23, 0xe0, 0xbb, 0xdc, 0x77, 0x8b, 0x2a, 0x65, 0xcc, 0x32, 0x1e, 0x01,
+ 0x11, 0xc7, 0xb8, 0x4a, 0x4a, 0x6e, 0xb8, 0xb8, 0x52, 0x05, 0x63, 0xde,
+ 0x58, 0x37, 0x47, 0xc9, 0x51, 0xc5, 0xae, 0xcd, 0xae, 0xf6, 0x96, 0x9b,
+ 0x88, 0x10, 0x7f, 0x34, 0xef, 0xda, 0xd1, 0x2a, 0xff, 0x00, 0xa6, 0x59,
+ 0x57, 0xa9, 0x27, 0xc2, 0x07, 0x1f, 0x30, 0x85, 0x49, 0xb2, 0xba, 0x58,
+ 0xd7, 0xc1, 0xb8, 0x41, 0x74, 0x71, 0x3a, 0x4f, 0x29, 0x29, 0x2b, 0x1a,
+ 0x6b, 0xc7, 0x7d, 0x5f, 0x48, 0xee, 0x7b, 0x4f, 0xc4, 0x80, 0xb2, 0x7e,
+ 0xb3, 0x1d, 0xdd, 0x47, 0xa3, 0x54, 0xe1, 0x15, 0xef, 0xb2, 0xc0, 0x07,
+ 0x83, 0x5a, 0xc6, 0x89, 0x1f, 0x35, 0xa3, 0x45, 0xee, 0x75, 0x95, 0xb5,
+ 0xdc, 0x59, 0x60, 0x79, 0xf1, 0xd4, 0xcc, 0x2c, 0xbf, 0xac, 0x16, 0x6e,
+ 0xfa, 0xd3, 0xd3, 0xe9, 0x1f, 0x43, 0x1e, 0x87, 0xbd, 0xc3, 0xfa, 0xce,
+ 0x8f, 0xfb, 0xea, 0x4a, 0x69, 0x3e, 0x93, 0xf6, 0xd7, 0x39, 0xe6, 0x01,
+ 0x7b, 0x9c, 0x35, 0xf2, 0x71, 0x84, 0x72, 0x0b, 0xec, 0xb1, 0xa0, 0xc0,
+ 0x0d, 0x0d, 0x07, 0xcc, 0x08, 0x43, 0x73, 0x3d, 0x5b, 0x03, 0xb9, 0x89,
+ 0x24, 0x1f, 0x13, 0xb7, 0x55, 0x60, 0x6d, 0x17, 0x3a, 0x47, 0x72, 0x42,
+ 0x4a, 0x61, 0x73, 0x76, 0xe2, 0x39, 0xce, 0xfc, 0xe2, 0x41, 0x83, 0x3a,
+ 0xc8, 0x41, 0xa6, 0xa9, 0xc7, 0x0e, 0x78, 0x87, 0x97, 0xc9, 0xef, 0x0e,
+ 0x0d, 0x2a, 0xc5, 0xc0, 0xbb, 0x14, 0xb6, 0x35, 0xdd, 0x33, 0xf1, 0x0a,
+ 0x54, 0xd5, 0xfa, 0x2a, 0xdb, 0x27, 0xbb, 0x88, 0xf1, 0x2e, 0x91, 0xaa,
+ 0x4a, 0x5e, 0xa8, 0x6b, 0xab, 0xa9, 0xda, 0xb5, 0xac, 0x9f, 0xfa, 0x31,
+ 0xfc, 0x15, 0x1a, 0x5c, 0x3f, 0x68, 0x17, 0xbb, 0xc1, 0xda, 0xf3, 0xa9,
+ 0x74, 0x08, 0xf9, 0x2d, 0x2c, 0x76, 0x0b, 0x3d, 0xc7, 0xe8, 0x00, 0x5a,
+ 0xd1, 0xf0, 0xd3, 0x5f, 0xf3, 0x96, 0x41, 0xa7, 0x21, 0xb5, 0xb3, 0xd2,
+ 0x2d, 0x16, 0x4e, 0xe2, 0xe7, 0x70, 0x5b, 0xb9, 0xc9, 0x29, 0x67, 0x17,
+ 0x59, 0x46, 0x43, 0x9c, 0xd2, 0xc7, 0x32, 0xb7, 0x00, 0x4f, 0x8b, 0xe4,
+ 0x48, 0xfb, 0xd7, 0x41, 0x43, 0x48, 0xb8, 0x48, 0xfa, 0x2c, 0x63, 0x7f,
+ 0xe8, 0xac, 0x6b, 0xd8, 0x45, 0x25, 0xa4, 0x1f, 0x73, 0xea, 0xa8, 0x1f,
+ 0xeb, 0x3c, 0x38, 0xfe, 0x45, 0xd0, 0x56, 0xc3, 0xf6, 0x87, 0xb7, 0xfa,
+ 0xbf, 0xf5, 0x21, 0x25, 0x35, 0x72, 0xec, 0x8b, 0x59, 0x54, 0x12, 0x1e,
+ 0x5e, 0xe2, 0x47, 0x03, 0x68, 0xd3, 0xf2, 0xac, 0xce, 0xa6, 0xf6, 0xd7,
+ 0x89, 0x6b, 0x9f, 0x3b, 0x66, 0xb1, 0x20, 0x1e, 0x67, 0x77, 0xe6, 0x82,
+ 0xb4, 0xf3, 0x1a, 0x5b, 0x90, 0xd0, 0x7b, 0xb4, 0x8f, 0xbc, 0xaa, 0x19,
+ 0x83, 0x75, 0x7e, 0x9e, 0xed, 0xae, 0x7d, 0x80, 0x89, 0xe0, 0xed, 0x6c,
+ 0xc2, 0x4a, 0x73, 0x31, 0x9b, 0x46, 0x53, 0x49, 0xa2, 0xcf, 0x7c, 0xea,
+ 0xd3, 0x0e, 0x1f, 0x7b, 0x4a, 0xb8, 0x2a, 0xc8, 0x6c, 0x4f, 0xa6, 0x1b,
+ 0xb4, 0xb1, 0xd2, 0x1d, 0x13, 0xe2, 0x42, 0xab, 0x6e, 0x0d, 0x72, 0x4d,
+ 0xd4, 0x43, 0xbf, 0x7d, 0xbf, 0xde, 0x35, 0x50, 0x1f, 0x6a, 0xae, 0x3d,
+ 0x3c, 0x87, 0x11, 0xd9, 0xb6, 0xfb, 0xc7, 0xc3, 0x5d, 0x7f, 0x14, 0x94,
+ 0x92, 0xfa, 0x9e, 0x23, 0xd4, 0x11, 0x12, 0x03, 0xd9, 0xdc, 0x8f, 0x12,
+ 0xa2, 0xfb, 0x6e, 0x75, 0x62, 0xa2, 0xe1, 0xa7, 0x67, 0x09, 0xd3, 0xee,
+ 0x4e, 0x3a, 0x8b, 0x9a, 0x00, 0xbe, 0x89, 0xf1, 0x75, 0x46, 0x7f, 0xe8,
+ 0xbf, 0xfb, 0xd4, 0x8d, 0xdd, 0x36, 0xe3, 0x0d, 0xb0, 0x31, 0xc7, 0x86,
+ 0xbc, 0x1a, 0xcc, 0xfc, 0x1d, 0xa7, 0xdc, 0x92, 0x9a, 0x9e, 0x9d, 0x4c,
+ 0x24, 0xd6, 0xf7, 0xe3, 0x3b, 0xbb, 0xaa, 0x20, 0xb0, 0xff, 0x00, 0x63,
+ 0xfd, 0x8b, 0xa1, 0x73, 0x4b, 0x71, 0xf1, 0x8d, 0xa4, 0x3d, 0xe2, 0xb2,
+ 0x1d, 0x60, 0x11, 0xf9, 0x87, 0x58, 0x0b, 0x35, 0xd8, 0x95, 0xbd, 0x9e,
+ 0xc7, 0xb4, 0xed, 0x3c, 0x46, 0xdd, 0x7e, 0x2b, 0x4e, 0xd6, 0x1d, 0xb8,
+ 0xed, 0xe4, 0x19, 0x24, 0x79, 0x40, 0x49, 0x48, 0x7a, 0xc3, 0x5d, 0x6b,
+ 0x2b, 0xc2, 0x66, 0xf1, 0x63, 0xd8, 0xeb, 0x61, 0xb1, 0x05, 0xad, 0x2d,
+ 0x69, 0x95, 0xa5, 0xf5, 0x36, 0x8a, 0xda, 0x32, 0x5e, 0xd9, 0xf6, 0x6c,
+ 0xac, 0x6e, 0xd4, 0x81, 0xa9, 0x22, 0x53, 0x3f, 0x1a, 0xab, 0xef, 0xfb,
+ 0x4b, 0xb5, 0xb2, 0xba, 0x9c, 0xc6, 0xf8, 0x09, 0x7b, 0xfb, 0x21, 0xf4,
+ 0x9c, 0x87, 0x74, 0xdb, 0x58, 0xc6, 0x8d, 0xec, 0xc8, 0xb4, 0x56, 0xf1,
+ 0x31, 0x05, 0xfa, 0x07, 0x77, 0xe1, 0x25, 0x3a, 0x5f, 0x5a, 0xb6, 0xfe,
+ 0xc8, 0x70, 0x3f, 0xe9, 0x19, 0x03, 0xe6, 0xb1, 0xbd, 0xde, 0x87, 0xa5,
+ 0x1a, 0xc4, 0x4c, 0xff, 0x00, 0x25, 0x6d, 0x7d, 0x68, 0xc6, 0x75, 0xdd,
+ 0x34, 0x3d, 0xa2, 0x4d, 0x36, 0x35, 0xf1, 0xda, 0x0f, 0xb0, 0xff, 0x00,
+ 0xd5, 0x2c, 0xff, 0x00, 0x4f, 0xf5, 0x5f, 0xa3, 0xa6, 0xee, 0x7c, 0xf6,
+ 0xc2, 0x4a, 0x68, 0xe0, 0x6f, 0x15, 0x37, 0x59, 0x6b, 0x99, 0x3a, 0xf6,
+ 0xdb, 0x21, 0x37, 0x53, 0xbd, 0xd6, 0x74, 0x8f, 0x58, 0x34, 0xd4, 0x5e,
+ 0x6a, 0x05, 0xa4, 0x89, 0x6c, 0x99, 0xfe, 0x08, 0x78, 0xd6, 0x7f, 0x36,
+ 0x1a, 0x20, 0x6d, 0xb1, 0x87, 0xfb, 0x2e, 0x3e, 0x08, 0xfd, 0x52, 0xbd,
+ 0xdd, 0x1a, 0xb6, 0x81, 0xb8, 0xd9, 0x6b, 0x79, 0x3d, 0x98, 0xd7, 0x24,
+ 0xa7, 0x16, 0xca, 0xac, 0xb1, 0xa1, 0xa4, 0x92, 0xd8, 0x98, 0x8e, 0xea,
+ 0x35, 0xb7, 0x60, 0xd8, 0xea, 0xda, 0xf0, 0x0c, 0x8d, 0x63, 0xf0, 0x56,
+ 0x18, 0x0b, 0x5a, 0x1a, 0x77, 0x57, 0xe3, 0x3e, 0x05, 0x4e, 0xaf, 0x00,
+ 0xe9, 0xf2, 0x29, 0x29, 0xaf, 0x70, 0xad, 0xcc, 0x25, 0x8c, 0x2d, 0x74,
+ 0x7d, 0x1e, 0x44, 0xf9, 0x20, 0x8c, 0x82, 0xc8, 0x65, 0xac, 0x04, 0x78,
+ 0xc2, 0xd4, 0x7b, 0x08, 0x04, 0xba, 0xb0, 0x60, 0x72, 0x10, 0x48, 0x60,
+ 0x01, 0xaf, 0x6e, 0xd0, 0x74, 0xe3, 0x43, 0xf3, 0x49, 0x4e, 0x7e, 0x56,
+ 0x4b, 0xe8, 0xc6, 0x17, 0x52, 0xf6, 0xb5, 0xce, 0x26, 0x1b, 0xf8, 0x10,
+ 0xd5, 0x87, 0x75, 0x8e, 0x2e, 0x75, 0x8e, 0xf6, 0x97, 0x19, 0x8e, 0x56,
+ 0xaf, 0x57, 0x64, 0x8a, 0x8c, 0xed, 0x00, 0xbb, 0xd8, 0x35, 0x00, 0xe9,
+ 0xaf, 0xcd, 0x64, 0xde, 0xd3, 0xe9, 0x12, 0x38, 0x9f, 0xe0, 0x92, 0x9a,
+ 0xd5, 0xb0, 0xd8, 0xff, 0x00, 0x12, 0x4a, 0xe9, 0x30, 0x99, 0xd2, 0xea,
+ 0xc7, 0x77, 0xab, 0x73, 0x7d, 0x56, 0x89, 0x73, 0x1a, 0xdd, 0xce, 0x8d,
+ 0x38, 0xec, 0xb0, 0x31, 0x2a, 0xb5, 0xf6, 0x01, 0x5b, 0x77, 0x38, 0x6b,
+ 0x1c, 0xae, 0x8b, 0x07, 0x0b, 0x14, 0x66, 0xe1, 0xda, 0xf8, 0x71, 0xb9,
+ 0xe6, 0xbb, 0x5b, 0xb4, 0x35, 0xbe, 0xef, 0x69, 0xda, 0x1a, 0x3c, 0xd2,
+ 0x53, 0x9b, 0x93, 0x56, 0x36, 0x40, 0x36, 0x63, 0x34, 0xb5, 0xb3, 0x00,
+ 0xbc, 0x80, 0x49, 0xf8, 0x4c, 0xac, 0xda, 0xa6, 0xbb, 0x5c, 0xd2, 0x22,
+ 0x3b, 0x15, 0xd8, 0x7e, 0xca, 0xc5, 0xa8, 0xbe, 0x87, 0xb5, 0xad, 0xba,
+ 0xa2, 0x43, 0x81, 0x1b, 0x4b, 0xda, 0x0f, 0xe3, 0x04, 0x2c, 0x7e, 0xa9,
+ 0x8b, 0x48, 0xbd, 0xae, 0xac, 0x1d, 0x84, 0x02, 0x7f, 0xac, 0x12, 0x53,
+ 0x9c, 0xe1, 0xef, 0x0e, 0xec, 0x0f, 0x6f, 0xbd, 0x76, 0xb8, 0xe7, 0xab,
+ 0xe3, 0xe3, 0x51, 0xf6, 0x7a, 0x2b, 0xcb, 0xc7, 0x0c, 0x61, 0x0c, 0xdc,
+ 0x6b, 0xb5, 0xb2, 0x26, 0x25, 0xde, 0xd2, 0xb9, 0x3a, 0xf1, 0xc5, 0xf7,
+ 0xd7, 0x53, 0x74, 0x0e, 0x70, 0x0e, 0x71, 0xed, 0x3c, 0x9f, 0x90, 0x5e,
+ 0x8d, 0x8d, 0xf6, 0x77, 0xb4, 0x7a, 0x0f, 0x6b, 0xeb, 0x64, 0x35, 0x9b,
+ 0x08, 0x3a, 0x01, 0x09, 0x29, 0x0e, 0x0f, 0x56, 0x19, 0x87, 0xec, 0x56,
+ 0xe3, 0x5f, 0x8b, 0x70, 0x93, 0xfa, 0x66, 0x7b, 0x4f, 0x73, 0xfa, 0x46,
+ 0xcb, 0x51, 0xe5, 0xce, 0x71, 0x9d, 0x01, 0x00, 0xfc, 0x80, 0x95, 0x69,
+ 0xe0, 0x31, 0x8c, 0x81, 0xa1, 0x79, 0x2e, 0xf9, 0x03, 0xcf, 0xc9, 0x57,
+ 0x7b, 0xce, 0xdf, 0x6f, 0x3b, 0x60, 0xfd, 0xdf, 0xed, 0x49, 0x4c, 0xb1,
+ 0x03, 0x5d, 0x99, 0x48, 0xfd, 0xc6, 0x92, 0x7e, 0x41, 0x60, 0x66, 0x9d,
+ 0xff, 0x00, 0x59, 0xaf, 0x71, 0x92, 0x69, 0xc4, 0x60, 0xf9, 0xb8, 0xb9,
+ 0xff, 0x00, 0xc5, 0x74, 0x38, 0xe0, 0x35, 0xce, 0xb4, 0x11, 0xbc, 0x07,
+ 0x81, 0xf0, 0x22, 0x17, 0x3f, 0x60, 0x16, 0xfd, 0x65, 0xea, 0x96, 0x03,
+ 0xa5, 0x6d, 0xa6, 0xad, 0x3c, 0x45, 0x43, 0xf8, 0xa4, 0xa4, 0x6d, 0x0e,
+ 0xfb, 0x43, 0x7b, 0x30, 0xd6, 0xcd, 0x7c, 0xcb, 0xff, 0x00, 0xd8, 0x8b,
+ 0x71, 0xda, 0xe2, 0x01, 0xd5, 0xc6, 0x01, 0xef, 0x25, 0x4b, 0x1d, 0xa2,
+ 0xcb, 0x1c, 0xe3, 0xae, 0xc3, 0x5b, 0x63, 0xc0, 0xb7, 0x71, 0x4c, 0xf0,
+ 0x0d, 0xa1, 0xee, 0x1c, 0x6b, 0xf7, 0x4a, 0x4a, 0x67, 0x94, 0x40, 0xa6,
+ 0x91, 0x3e, 0xd7, 0x38, 0x38, 0x9f, 0x20, 0x27, 0xf8, 0x29, 0x39, 0xb1,
+ 0x65, 0x60, 0x38, 0x83, 0xb4, 0x39, 0xc3, 0xc4, 0x43, 0xb6, 0x8f, 0xfa,
+ 0x49, 0xb2, 0x19, 0x38, 0xa1, 0xbd, 0x85, 0x70, 0xd1, 0xf8, 0x29, 0x43,
+ 0xdd, 0xb1, 0xe6, 0x78, 0x6b, 0x5d, 0xf1, 0x80, 0x92, 0x9b, 0x41, 0xcd,
+ 0xa7, 0xa7, 0xba, 0xd0, 0x01, 0x86, 0xbb, 0x9d, 0x24, 0xac, 0xfa, 0x01,
+ 0x1b, 0xbd, 0xb2, 0x45, 0x6c, 0xd0, 0xf6, 0x9e, 0x40, 0x5a, 0x5e, 0x96,
+ 0xfc, 0x50, 0xc7, 0xf7, 0xdc, 0xf8, 0xfb, 0xff, 0x00, 0x89, 0x55, 0x1a,
+ 0xc0, 0x5d, 0x61, 0x9f, 0xa6, 0xe0, 0x40, 0xfe, 0xa6, 0xbf, 0xc1, 0x25,
+ 0x35, 0x0b, 0x09, 0xb3, 0x0d, 0x9d, 0xaf, 0xca, 0x6b, 0xc0, 0xf2, 0x6b,
+ 0x5e, 0xe5, 0xbf, 0x51, 0x8c, 0xbb, 0x4f, 0x98, 0x8f, 0x88, 0x0b, 0x0c,
+ 0x34, 0x0e, 0xa7, 0xd2, 0x58, 0x38, 0x71, 0xb2, 0xc8, 0xf2, 0x0d, 0x60,
+ 0xff, 0x00, 0xbf, 0x2e, 0x82, 0x90, 0x05, 0xb7, 0x38, 0x8f, 0xce, 0x29,
+ 0x29, 0xa3, 0x9d, 0x22, 0xc6, 0xc8, 0xd4, 0x56, 0x07, 0xcc, 0xb8, 0x95,
+ 0x89, 0xd6, 0xad, 0xb2, 0x8a, 0xb1, 0xee, 0xa8, 0xb7, 0xd4, 0x16, 0x38,
+ 0x86, 0xbf, 0x50, 0xef, 0x69, 0x6f, 0x03, 0xe2, 0xb6, 0x73, 0x0f, 0xa9,
+ 0x7b, 0xe3, 0x50, 0x03, 0x40, 0x1f, 0x00, 0x56, 0x1f, 0x58, 0x63, 0x32,
+ 0xaa, 0xa5, 0x9e, 0xdf, 0xd1, 0xbd, 0xdb, 0x83, 0xbc, 0x48, 0x69, 0xd0,
+ 0xfc, 0xd2, 0x53, 0x52, 0x9e, 0xbc, 0xf1, 0xa5, 0xf8, 0xee, 0x23, 0xf3,
+ 0x9d, 0x51, 0x0f, 0xff, 0x00, 0xa2, 0xe8, 0x2a, 0xc3, 0x7a, 0xd7, 0x4d,
+ 0xb4, 0xed, 0x7b, 0xc3, 0x4f, 0x66, 0xda, 0xd2, 0xcf, 0xcb, 0xa7, 0xe2,
+ 0xb3, 0x2c, 0xc7, 0xc8, 0xa2, 0x36, 0x6e, 0xda, 0x3b, 0x38, 0x6f, 0x6a,
+ 0x8b, 0xee, 0x6b, 0xc6, 0xdb, 0xab, 0x05, 0xde, 0x22, 0x08, 0xfb, 0x9d,
+ 0xaa, 0x4a, 0x77, 0x03, 0x70, 0xef, 0xd5, 0x95, 0xb5, 0xc2, 0x34, 0x75,
+ 0x4e, 0x07, 0x5f, 0x94, 0xa0, 0xd9, 0x83, 0x59, 0xf6, 0x41, 0x83, 0xc6,
+ 0xe8, 0x3f, 0xdc, 0xb2, 0x6b, 0xc1, 0xc1, 0xb7, 0x6f, 0xa6, 0x7d, 0x3b,
+ 0x63, 0x5d, 0x84, 0x83, 0x2a, 0xc0, 0xc6, 0xea, 0x74, 0xeb, 0x8d, 0x95,
+ 0x69, 0x81, 0x30, 0xe3, 0xb8, 0x7d, 0xce, 0x94, 0x94, 0xda, 0x6f, 0x4f,
+ 0x75, 0x44, 0x1a, 0x5e, 0xfa, 0x5b, 0xf9, 0xee, 0xa9, 0xd1, 0xf3, 0xd8,
+ 0x64, 0x15, 0xb5, 0x63, 0x49, 0x7e, 0x1d, 0x6f, 0x71, 0x73, 0x98, 0xc0,
+ 0xd2, 0x4e, 0x84, 0xea, 0xd1, 0x30, 0x17, 0x3b, 0x5e, 0x47, 0x5c, 0xb2,
+ 0xe6, 0x50, 0x5b, 0x4d, 0xa5, 0xee, 0x0d, 0x1b, 0xeb, 0xd9, 0xa9, 0xf3,
+ 0x64, 0x2e, 0x9a, 0xca, 0xde, 0x72, 0x31, 0xab, 0x80, 0x5d, 0x4d, 0x63,
+ 0x73, 0xf8, 0x12, 0x06, 0xbc, 0xfc, 0x12, 0x53, 0x63, 0x06, 0xe6, 0x8c,
+ 0x2b, 0x2f, 0xbb, 0xd8, 0x36, 0x92, 0xe7, 0x73, 0x1e, 0xe7, 0x1f, 0xe2,
+ 0xa9, 0x65, 0x8d, 0xae, 0x6b, 0x40, 0xda, 0xd1, 0x7e, 0xd9, 0xef, 0xf4,
+ 0x55, 0xa7, 0x3a, 0xaa, 0x1b, 0x55, 0x1e, 0xb5, 0x6d, 0x69, 0x0c, 0x65,
+ 0xdb, 0x9d, 0xc0, 0xd8, 0x35, 0x1f, 0xda, 0x3a, 0xaa, 0x19, 0xf9, 0x18,
+ 0xcf, 0x2d, 0x77, 0xaa, 0xd9, 0x76, 0x41, 0xb1, 0xe1, 0x92, 0x61, 0xbe,
+ 0x9e, 0xd1, 0xdb, 0x59, 0x49, 0x4e, 0x86, 0x5f, 0x58, 0xb2, 0xdc, 0x66,
+ 0xe0, 0x96, 0x4b, 0x81, 0x68, 0x7d, 0xb3, 0x20, 0x80, 0x7d, 0xba, 0x78,
+ 0xe8, 0x8f, 0xbc, 0x7d, 0x97, 0x6e, 0xdf, 0xe5, 0xf1, 0xa7, 0x30, 0xb0,
+ 0xfe, 0xd9, 0x53, 0x2e, 0x6d, 0x83, 0x73, 0xc0, 0xd4, 0xe9, 0x12, 0x7b,
+ 0x6a, 0x7b, 0x00, 0xac, 0x7e, 0xdf, 0x67, 0xf4, 0x6f, 0x4b, 0x4f, 0xa3,
+ 0xb7, 0x78, 0x94, 0x94, 0xc3, 0x19, 0xad, 0x34, 0xb5, 0xc2, 0x0f, 0xbd,
+ 0xc3, 0x48, 0xe1, 0xce, 0x52, 0xfa, 0xc5, 0x94, 0xcc, 0x5c, 0x7c, 0x46,
+ 0xec, 0xde, 0xd2, 0xf7, 0x68, 0x3b, 0x06, 0x8f, 0x0f, 0x9a, 0x00, 0x65,
+ 0x8d, 0xe9, 0xcf, 0x69, 0x96, 0x3f, 0xd4, 0x99, 0x04, 0x8e, 0x1c, 0x0a,
+ 0x7e, 0xbf, 0x0e, 0xb6, 0x86, 0x47, 0xe6, 0x98, 0x1f, 0x18, 0x49, 0x48,
+ 0x6b, 0xea, 0x58, 0x16, 0x02, 0xdd, 0xfe, 0x99, 0xd2, 0x03, 0xc1, 0x03,
+ 0x4f, 0x3d, 0x42, 0xb2, 0x28, 0xaa, 0xc1, 0xbd, 0xbb, 0x5c, 0x06, 0xbb,
+ 0x9b, 0xac, 0x7c, 0xc1, 0x59, 0x86, 0x96, 0x11, 0x04, 0x02, 0x54, 0x46,
+ 0x30, 0xf7, 0x08, 0x22, 0x79, 0x2d, 0x30, 0x92, 0x9d, 0x63, 0x51, 0x03,
+ 0xda, 0x4f, 0xbb, 0xc7, 0x51, 0x0a, 0xad, 0xa2, 0xd0, 0x7e, 0x88, 0x7f,
+ 0x90, 0x31, 0xf9, 0x50, 0x2b, 0xb3, 0x32, 0xa6, 0x86, 0x57, 0x77, 0xb1,
+ 0xa0, 0x6d, 0x63, 0xda, 0x1c, 0xd8, 0xf0, 0xf1, 0xfc, 0x54, 0xfe, 0xdb,
+ 0x78, 0x8f, 0x5e, 0x96, 0xbf, 0xfe, 0x2c, 0xc1, 0xfb, 0x9d, 0xfd, 0xe9,
+ 0x29, 0xa5, 0xd4, 0x68, 0x7d, 0xd8, 0xa7, 0xd3, 0xac, 0x8b, 0x2b, 0x76,
+ 0xe2, 0x22, 0x09, 0x11, 0xee, 0xe1, 0x63, 0x92, 0x0d, 0x7a, 0xc1, 0x69,
+ 0xd2, 0x3b, 0x90, 0x3c, 0x17, 0x59, 0x45, 0xd4, 0xe4, 0x58, 0x05, 0x7b,
+ 0xab, 0x70, 0x93, 0x0f, 0x6c, 0x7c, 0xe7, 0x85, 0x47, 0xaf, 0x74, 0xac,
+ 0x57, 0x5c, 0xdb, 0x31, 0xc7, 0xa3, 0x65, 0x84, 0x6e, 0x0d, 0xd5, 0x8e,
+ 0x71, 0xef, 0xb7, 0xb7, 0xc9, 0x25, 0x3c, 0xde, 0x35, 0x9e, 0x8d, 0xd2,
+ 0xd7, 0x43, 0xbb, 0x78, 0xe8, 0xba, 0x4a, 0xf2, 0x31, 0x33, 0xf0, 0xda,
+ 0x2f, 0xb9, 0xd4, 0x5f, 0x4c, 0x6c, 0x7b, 0x34, 0x20, 0x77, 0xf8, 0xca,
+ 0xcd, 0xab, 0xea, 0xaf, 0x50, 0xbc, 0xbd, 0xd5, 0xdb, 0x54, 0xd6, 0xed,
+ 0xb0, 0x4b, 0x81, 0x27, 0xcb, 0x45, 0x4c, 0xdb, 0x6e, 0x3e, 0xb3, 0xb4,
+ 0xcc, 0x07, 0x78, 0x10, 0x92, 0x9d, 0xfa, 0x59, 0xe8, 0xb2, 0xcb, 0x1e,
+ 0xcb, 0x6e, 0x7b, 0xcb, 0x67, 0x22, 0xd6, 0xec, 0xd4, 0x71, 0xfc, 0xe1,
+ 0x04, 0xfc, 0x82, 0xa7, 0x97, 0x8d, 0x95, 0x9d, 0x94, 0xca, 0xf1, 0xd8,
+ 0x5c, 0x1a, 0x25, 0xcf, 0xe1, 0x80, 0x9f, 0x12, 0xb3, 0x19, 0x93, 0x65,
+ 0xb6, 0x0f, 0x5a, 0xeb, 0x2d, 0xdb, 0xf4, 0x46, 0xe2, 0x75, 0xf2, 0x95,
+ 0x7e, 0x8c, 0xce, 0xa1, 0xeb, 0x7d, 0x9f, 0x13, 0x20, 0xb5, 0xe6, 0x0b,
+ 0x69, 0x78, 0x0e, 0xac, 0xcf, 0x3c, 0xea, 0x0a, 0x4a, 0x74, 0xb1, 0xfa,
+ 0x3f, 0xd9, 0xd8, 0x76, 0xbc, 0x59, 0x73, 0xbe, 0x93, 0xc6, 0x9a, 0x78,
+ 0x05, 0x17, 0x62, 0x5c, 0xc7, 0xed, 0x69, 0x2c, 0x7f, 0x2d, 0x70, 0x90,
+ 0x5b, 0xf3, 0x51, 0x7d, 0xfd, 0x63, 0x1c, 0xec, 0xc8, 0xc3, 0x17, 0x0f,
+ 0xdf, 0xa1, 0xdf, 0xf7, 0xd7, 0x4a, 0x54, 0x75, 0xac, 0x4d, 0xf1, 0x65,
+ 0xae, 0xc7, 0xb3, 0xf7, 0x2e, 0x69, 0x6f, 0xe3, 0xa8, 0x49, 0x4d, 0xca,
+ 0xba, 0xa7, 0x58, 0xc7, 0x66, 0xd3, 0x69, 0xb5, 0xa2, 0x44, 0x58, 0x37,
+ 0x7d, 0xc7, 0x95, 0x62, 0x9f, 0xac, 0x2c, 0x3e, 0xdc, 0x8a, 0x0b, 0x3c,
+ 0x5f, 0x59, 0xdc, 0x39, 0x1f, 0x9a, 0x75, 0x40, 0x6e, 0x4d, 0x56, 0xea,
+ 0xe0, 0xdb, 0x1a, 0xf3, 0x0d, 0x7d, 0x66, 0x47, 0xde, 0xd9, 0x0a, 0x2e,
+ 0xc6, 0xc3, 0x71, 0x07, 0x79, 0x61, 0x3f, 0xbc, 0x20, 0x7d, 0xe9, 0x29,
+ 0xda, 0xc4, 0xea, 0x18, 0x39, 0x36, 0xbb, 0xd2, 0xbd, 0xbe, 0xed, 0x36,
+ 0xbb, 0xd8, 0xef, 0xb9, 0xcb, 0x23, 0xa6, 0x1f, 0x57, 0xaa, 0x75, 0x87,
+ 0x6a, 0x67, 0x24, 0xb6, 0x7e, 0x07, 0x68, 0xfc, 0x8a, 0xad, 0x98, 0x4c,
+ 0x63, 0x83, 0x5a, 0xfd, 0x5d, 0x25, 0xae, 0x1a, 0x8d, 0x3c, 0xd4, 0x18,
+ 0xfc, 0xcc, 0x6b, 0x37, 0xd1, 0x61, 0x6f, 0x04, 0x8e, 0xc4, 0xfe, 0x20,
+ 0xa4, 0xa7, 0x73, 0x1d, 0x82, 0xb2, 0xf0, 0x46, 0x8f, 0xb2, 0x7f, 0xe8,
+ 0xb8, 0x28, 0x10, 0xdd, 0x49, 0xee, 0x08, 0xd3, 0xee, 0x0b, 0x3e, 0xbe,
+ 0xb5, 0x7b, 0x00, 0x17, 0x57, 0xea, 0x41, 0x92, 0x40, 0xdb, 0xe1, 0xdc,
+ 0x48, 0x47, 0xc5, 0xea, 0x38, 0x76, 0xbd, 0xa1, 0xce, 0x35, 0x92, 0xe9,
+ 0x21, 0xda, 0x81, 0xc9, 0xed, 0x29, 0x29, 0xbf, 0x7e, 0xe1, 0xe9, 0x81,
+ 0xc1, 0x02, 0x47, 0x94, 0xa1, 0x38, 0xb9, 0xe2, 0xb6, 0x91, 0xb4, 0x3a,
+ 0xe2, 0x74, 0x3c, 0xec, 0x1d, 0xfe, 0x6a, 0xcb, 0x9a, 0x2e, 0x78, 0x7d,
+ 0x6e, 0x16, 0x37, 0x40, 0xdd, 0xa4, 0x1e, 0x07, 0x92, 0x46, 0x92, 0xd1,
+ 0x53, 0x8f, 0xb4, 0x34, 0xbd, 0xc7, 0x5f, 0x14, 0x94, 0xd8, 0x7c, 0x8c,
+ 0x32, 0xe6, 0x88, 0x7f, 0xa6, 0x7c, 0xf9, 0xf1, 0x54, 0x68, 0x63, 0x5f,
+ 0x5b, 0xec, 0x22, 0x7d, 0x3f, 0x52, 0x00, 0xe2, 0x60, 0x2b, 0xf7, 0xb6,
+ 0x30, 0xad, 0x60, 0x06, 0x5e, 0x58, 0xd8, 0xf2, 0xd1, 0xaa, 0xad, 0x15,
+ 0xc5, 0x26, 0x0c, 0x34, 0xfa, 0xa4, 0x8f, 0x12, 0xe7, 0xc7, 0xf0, 0x49,
+ 0x4d, 0x2a, 0x9e, 0xcb, 0x7e, 0xb3, 0xe1, 0xd3, 0x5c, 0x11, 0x8f, 0x8b,
+ 0xb8, 0x81, 0xd9, 0xcf, 0x70, 0xfe, 0x01, 0x6e, 0x54, 0xed, 0x6c, 0x02,
+ 0x22, 0x4f, 0x0b, 0x98, 0xfa, 0xbb, 0x16, 0x7d, 0x6f, 0xea, 0x11, 0x27,
+ 0xd3, 0x6e, 0xd1, 0x26, 0x7e, 0x86, 0xd6, 0x7f, 0x05, 0xd2, 0xd6, 0xd8,
+ 0xae, 0xc7, 0x44, 0x39, 0xdd, 0xfc, 0x52, 0x53, 0x4e, 0xf0, 0x5b, 0x73,
+ 0xda, 0x35, 0xd4, 0x7e, 0x0d, 0x58, 0xfd, 0x4d, 0x90, 0xea, 0xc1, 0x10,
+ 0x7d, 0xc5, 0xcd, 0x3a, 0x1f, 0xcd, 0x1f, 0xc1, 0x6c, 0x64, 0x1f, 0xd2,
+ 0x3c, 0xcf, 0x27, 0x5f, 0xb8, 0x05, 0xcf, 0xf5, 0xcb, 0xde, 0xcc, 0x9a,
+ 0x83, 0x83, 0x8b, 0x7d, 0x31, 0xfa, 0x48, 0xf5, 0x39, 0x73, 0xa7, 0x49,
+ 0x94, 0x94, 0x87, 0xdd, 0x5c, 0xea, 0xe6, 0x76, 0x90, 0x64, 0x47, 0x28,
+ 0x25, 0x8d, 0xbc, 0x90, 0x43, 0x6c, 0x1d, 0xcc, 0x41, 0x53, 0xc5, 0xbd,
+ 0x96, 0x38, 0x31, 0xd6, 0x01, 0xb8, 0xc4, 0x19, 0x69, 0xfb, 0x9c, 0x02,
+ 0xb9, 0x66, 0x36, 0x3e, 0xdf, 0xd0, 0x0f, 0x78, 0xe4, 0x4c, 0x9e, 0xe9,
+ 0x29, 0xcb, 0x75, 0x2c, 0x03, 0x69, 0x82, 0x06, 0x9b, 0x5d, 0xac, 0x7f,
+ 0x15, 0x37, 0xd9, 0x68, 0x60, 0x6b, 0x1e, 0xf6, 0x76, 0xd5, 0xdb, 0xda,
+ 0x07, 0x97, 0x71, 0xf2, 0x2a, 0xcb, 0x9a, 0x67, 0x65, 0x87, 0x5e, 0xe1,
+ 0xc0, 0x7e, 0x54, 0x2b, 0x2a, 0xee, 0xd6, 0xc7, 0xc1, 0x25, 0x26, 0xe9,
+ 0xd9, 0x99, 0x1f, 0x69, 0xa4, 0x16, 0x1b, 0xbd, 0xed, 0xf7, 0x31, 0xc1,
+ 0xdc, 0x1e, 0x76, 0xba, 0x1c, 0x8f, 0xd7, 0x7e, 0xd9, 0xfb, 0x67, 0x66,
+ 0x23, 0xbf, 0x32, 0x5d, 0xbb, 0xe8, 0x86, 0xc9, 0x1a, 0xfd, 0xe8, 0x3d,
+ 0x1e, 0x3f, 0x69, 0xd0, 0x1c, 0xd0, 0x4f, 0xbb, 0xdc, 0x39, 0x80, 0xd7,
+ 0x2b, 0x79, 0xd9, 0x17, 0xee, 0xb8, 0xb1, 0xb3, 0x67, 0xa9, 0x0d, 0x6c,
+ 0xf3, 0xb5, 0xd1, 0xcf, 0x9a, 0x4a, 0x68, 0x59, 0x85, 0xd4, 0x8f, 0xa9,
+ 0xbb, 0x60, 0xda, 0xe7, 0x06, 0xf2, 0x77, 0x6d, 0xe4, 0xeb, 0x1d, 0xf8,
+ 0x53, 0xa7, 0xa6, 0x5a, 0xfa, 0x9a, 0xf7, 0xdc, 0xed, 0x79, 0xd9, 0x02,
+ 0x3f, 0x29, 0x56, 0xb2, 0x9c, 0xf3, 0x53, 0x1b, 0xb4, 0x34, 0xc3, 0x8b,
+ 0x9a, 0x0c, 0xc1, 0xf5, 0x08, 0xfa, 0x5f, 0x24, 0x6c, 0x42, 0xea, 0xc8,
+ 0xac, 0x00, 0x2b, 0x6d, 0x6e, 0x73, 0xbc, 0xa7, 0x40, 0x52, 0x53, 0x41,
+ 0xbd, 0x35, 0x86, 0xd2, 0x1f, 0xbe, 0xc6, 0xed, 0x86, 0x87, 0x3d, 0xc4,
+ 0x4f, 0x8f, 0x65, 0x7f, 0xf6, 0x76, 0x27, 0xa7, 0x1e, 0x96, 0x3e, 0xdf,
+ 0x87, 0xbf, 0x74, 0x7d, 0x19, 0x95, 0x3c, 0x5f, 0x59, 0xf9, 0x6e, 0x68,
+ 0x0e, 0x75, 0x6d, 0xab, 0x7b, 0xc0, 0x1a, 0x09, 0x3c, 0xf9, 0x05, 0x3f,
+ 0xb3, 0x53, 0xea, 0xc4, 0xfe, 0x93, 0x99, 0x9e, 0xde, 0x3b, 0xbe, 0x09,
+ 0x29, 0xaf, 0x89, 0x90, 0x2d, 0xa6, 0xe0, 0x6c, 0xde, 0xdd, 0xd2, 0xdf,
+ 0x2d, 0xa8, 0x3d, 0x7b, 0x32, 0x96, 0xe6, 0x51, 0x5d, 0xaf, 0x2c, 0x79,
+ 0x61, 0x7f, 0x12, 0x21, 0xc6, 0x07, 0xfd, 0x4a, 0xaf, 0x8b, 0x55, 0xf8,
+ 0xf5, 0x9a, 0x9e, 0x1a, 0xcb, 0x5e, 0xdf, 0x73, 0x1b, 0xdb, 0x58, 0x9d,
+ 0x4c, 0xab, 0x5d, 0x47, 0xa6, 0x8c, 0xac, 0xca, 0xec, 0x30, 0xef, 0x4e,
+ 0x96, 0x31, 0xc1, 0xc0, 0x91, 0xa4, 0x9e, 0x5a, 0xe0, 0x7b, 0xa4, 0xa4,
+ 0x35, 0x7b, 0xc0, 0x73, 0x1e, 0x1e, 0x3b, 0x47, 0xfa, 0x94, 0x6f, 0x4e,
+ 0xdd, 0x3b, 0xc2, 0x2b, 0x3a, 0x76, 0x2b, 0x2b, 0xda, 0x2a, 0x0c, 0xb2,
+ 0x21, 0xae, 0x6b, 0x9d, 0xcf, 0xe5, 0x50, 0x76, 0x36, 0x5d, 0x6e, 0x86,
+ 0x3c, 0xb9, 0x83, 0xbe, 0x93, 0xf8, 0xa4, 0xa4, 0x52, 0x41, 0x22, 0x62,
+ 0x0f, 0x7f, 0x14, 0xcf, 0x77, 0x78, 0x07, 0xcd, 0x49, 0xee, 0xb9, 0xa3,
+ 0xdc, 0xcd, 0xc0, 0xf8, 0x8d, 0xbf, 0x91, 0x1f, 0xa5, 0xf4, 0xfb, 0x7a,
+ 0xad, 0xe2, 0xaa, 0xd8, 0xea, 0xea, 0x61, 0x1e, 0xad, 0x9d, 0x9a, 0x3f,
+ 0xbc, 0xa4, 0xa5, 0x74, 0xba, 0x32, 0x72, 0xf2, 0x36, 0x51, 0x5b, 0x9c,
+ 0x5a, 0x09, 0x26, 0x34, 0x1c, 0x72, 0xee, 0x16, 0xb6, 0x5f, 0xd5, 0xbb,
+ 0xee, 0x68, 0xba, 0xec, 0x86, 0xd4, 0xe6, 0x6a, 0xda, 0x9a, 0x37, 0x4f,
+ 0xc5, 0xc6, 0x21, 0x74, 0x54, 0x63, 0xd3, 0x8b, 0x8e, 0xda, 0x71, 0xdb,
+ 0xb6, 0xb6, 0x08, 0x81, 0xc9, 0x8e, 0x49, 0xf3, 0x41, 0xbd, 0xe6, 0x58,
+ 0x34, 0xd4, 0x9f, 0x99, 0x1a, 0x84, 0x94, 0xf3, 0x3d, 0x16, 0x92, 0xce,
+ 0xa2, 0x6a, 0x79, 0x3c, 0x38, 0x90, 0x4f, 0x07, 0x85, 0x95, 0xf5, 0x9b,
+ 0xea, 0xe5, 0xd8, 0x99, 0x6f, 0xb6, 0x9a, 0x9c, 0xfc, 0x2c, 0x82, 0x5f,
+ 0x2d, 0x12, 0x2a, 0x79, 0xfa, 0x40, 0xc7, 0x6e, 0xe1, 0x75, 0x59, 0x35,
+ 0x53, 0x8b, 0xd4, 0x86, 0x59, 0x70, 0x6d, 0x4c, 0x61, 0x75, 0xc2, 0x09,
+ 0x73, 0xa5, 0xa6, 0x03, 0x40, 0xe4, 0xc8, 0x5c, 0xd5, 0x9f, 0xb6, 0xba,
+ 0xce, 0x7f, 0xed, 0x17, 0x64, 0x9c, 0x56, 0x52, 0xe0, 0x70, 0xf1, 0xc1,
+ 0xd0, 0x32, 0x75, 0x91, 0xa4, 0xbb, 0xf7, 0x92, 0x53, 0xcb, 0x8c, 0x5f,
+ 0x43, 0x20, 0x40, 0x23, 0xc1, 0x6a, 0xf4, 0x6c, 0x0c, 0x9b, 0xf3, 0x1b,
+ 0x9a, 0xd6, 0x9f, 0x4a, 0xb7, 0x06, 0x97, 0x76, 0x2e, 0x9f, 0xa3, 0xfe,
+ 0x6c, 0x95, 0xd9, 0xd9, 0xf5, 0x6b, 0x0f, 0xa9, 0xd4, 0xcc, 0xa0, 0x3e,
+ 0xcb, 0x90, 0xed, 0x2e, 0x0c, 0x1e, 0xc2, 0x41, 0x87, 0xc3, 0x7b, 0x4f,
+ 0x64, 0x6e, 0xad, 0x55, 0x1d, 0x2f, 0xa6, 0xd7, 0x46, 0x1b, 0x1b, 0x58,
+ 0xa8, 0x3b, 0xd3, 0x07, 0x89, 0xd0, 0x6e, 0x77, 0xde, 0x92, 0x9c, 0xd6,
+ 0x52, 0xfb, 0x73, 0x85, 0x4f, 0x78, 0xa4, 0xd4, 0xd2, 0x5b, 0x23, 0xda,
+ 0xf0, 0xe1, 0x02, 0x4f, 0x68, 0x52, 0xb3, 0xa3, 0xe4, 0x1b, 0x98, 0x6f,
+ 0xc7, 0x65, 0xd8, 0xc4, 0x38, 0xbd, 0xfa, 0x3d, 0xbf, 0x47, 0xdb, 0xe7,
+ 0xca, 0x9e, 0x16, 0x55, 0x7d, 0x47, 0x32, 0xbb, 0x29, 0x7b, 0x4b, 0x68,
+ 0x69, 0x63, 0xeb, 0x03, 0x74, 0x97, 0x01, 0x04, 0x11, 0xaf, 0xde, 0xb6,
+ 0xeb, 0x21, 0x8e, 0xda, 0xdd, 0x00, 0x3a, 0x47, 0x60, 0xe1, 0x20, 0x24,
+ 0xa7, 0x8f, 0xcd, 0xfa, 0xbb, 0xd2, 0xbd, 0x56, 0x1c, 0x70, 0xec, 0x4b,
+ 0xac, 0xb0, 0x30, 0x1a, 0x9c, 0x5b, 0x06, 0x0b, 0x8f, 0xe4, 0x40, 0x7f,
+ 0x47, 0xea, 0xf5, 0x38, 0xb3, 0x1b, 0x35, 0xb7, 0xb7, 0xb3, 0x2f, 0x6c,
+ 0x9f, 0xf3, 0x86, 0xab, 0xac, 0xca, 0xc5, 0x1f, 0x6b, 0x61, 0x0d, 0x9a,
+ 0xdd, 0xba, 0xc7, 0x38, 0x76, 0x74, 0x6d, 0x0b, 0x3e, 0xba, 0xd9, 0xeb,
+ 0x6e, 0xe5, 0xee, 0xd2, 0x67, 0x48, 0x69, 0x3f, 0xed, 0x49, 0x4f, 0x30,
+ 0xef, 0xda, 0x15, 0xba, 0x72, 0x30, 0x5e, 0x0d, 0x3b, 0xb7, 0x59, 0x41,
+ 0xdc, 0xdf, 0x33, 0xb7, 0x44, 0xa8, 0xea, 0x98, 0x37, 0xc0, 0x6d, 0xcd,
+ 0x1e, 0x01, 0xfe, 0xdf, 0x97, 0xba, 0x3f, 0x2a, 0xe8, 0x6d, 0x1f, 0x67,
+ 0xe9, 0x7d, 0x40, 0x97, 0x17, 0x3a, 0xba, 0xae, 0x3b, 0x8f, 0xc1, 0xc5,
+ 0x61, 0x74, 0xfc, 0x2a, 0xc7, 0x45, 0xc6, 0x2e, 0xa9, 0x96, 0x6f, 0x0e,
+ 0x79, 0xdc, 0xd0, 0x79, 0x49, 0x49, 0x9f, 0x54, 0x6a, 0x1b, 0x20, 0xc1,
+ 0x1b, 0x75, 0x08, 0x6f, 0xa2, 0xb8, 0x25, 0xc3, 0xe1, 0xa7, 0x7f, 0x81,
+ 0x49, 0x9d, 0x1f, 0x17, 0x66, 0xfc, 0x7b, 0x2c, 0xc5, 0xb1, 0xbf, 0x4f,
+ 0xd2, 0x71, 0xd9, 0xba, 0x27, 0xe8, 0x9d, 0x14, 0x1b, 0x57, 0x59, 0xac,
+ 0x3a, 0x0d, 0x79, 0x4c, 0x12, 0x21, 0xc3, 0xd3, 0x7c, 0x01, 0x3f, 0x9b,
+ 0xa2, 0x4a, 0x60, 0xca, 0x6c, 0x6b, 0xb7, 0xd5, 0x6b, 0x9a, 0xee, 0xda,
+ 0xf0, 0xad, 0xb7, 0xac, 0x75, 0x26, 0x30, 0xd5, 0x65, 0x8d, 0xb9, 0x9f,
+ 0xca, 0x1a, 0xfc, 0x8a, 0xa7, 0x6e, 0x50, 0xa4, 0x81, 0x95, 0x8f, 0x6e,
+ 0x31, 0x3c, 0xb8, 0x8d, 0xec, 0xff, 0x00, 0x39, 0x9f, 0xdc, 0xa4, 0xc7,
+ 0xe3, 0x64, 0x82, 0xd6, 0xdc, 0xd2, 0x08, 0xf1, 0x1f, 0xef, 0x49, 0x4e,
+ 0xe3, 0x3e, 0xb2, 0x61, 0x58, 0xc3, 0x56, 0x4d, 0x4f, 0xa2, 0xcd, 0xc1,
+ 0xc5, 0xc3, 0xdc, 0xdd, 0x3e, 0xe2, 0xaf, 0x63, 0xdf, 0x8b, 0x91, 0x88,
+ 0x4e, 0x35, 0xad, 0xb4, 0x82, 0xd0, 0x5a, 0xd2, 0x37, 0x7d, 0x22, 0x4e,
+ 0x87, 0x58, 0x5c, 0xa3, 0x28, 0x2c, 0xa3, 0x6b, 0x98, 0x64, 0x68, 0x48,
+ 0x33, 0xc7, 0x05, 0x56, 0x34, 0xed, 0x20, 0xb0, 0x90, 0x46, 0xa1, 0xcd,
+ 0x24, 0x19, 0xf9, 0x24, 0xa7, 0x63, 0xea, 0x70, 0xf5, 0x3a, 0xef, 0x56,
+ 0xbf, 0xf3, 0x85, 0x8e, 0x13, 0xde, 0x0b, 0x9f, 0xfd, 0xcb, 0xa5, 0xa2,
+ 0xa7, 0x1a, 0xe0, 0x98, 0x6e, 0xe9, 0xf9, 0x4a, 0xc3, 0xfa, 0x97, 0x43,
+ 0x6b, 0x76, 0x7d, 0xe4, 0x43, 0xbd, 0xbb, 0x8f, 0x1a, 0xc1, 0x27, 0xf2,
+ 0xae, 0x93, 0x19, 0xa5, 0xd5, 0xb5, 0xa7, 0x82, 0x78, 0xf9, 0x24, 0xa7,
+ 0x27, 0x28, 0x8f, 0x55, 0xd1, 0xc4, 0x93, 0xf8, 0xac, 0x0e, 0xae, 0x1e,
+ 0xec, 0xcd, 0x08, 0x20, 0x56, 0xd0, 0x44, 0xc1, 0xee, 0x7e, 0x1d, 0xd6,
+ 0xed, 0xcd, 0x81, 0xf0, 0x1f, 0x94, 0xac, 0x0e, 0xa4, 0xe6, 0x8e, 0xa5,
+ 0x68, 0x04, 0x13, 0x0c, 0x00, 0x1d, 0x38, 0x68, 0x49, 0x4d, 0x33, 0xb3,
+ 0x6e, 0xcb, 0x75, 0x91, 0x10, 0xf6, 0x88, 0xfc, 0x53, 0xb6, 0x96, 0xb5,
+ 0xbb, 0xaa, 0x73, 0x9b, 0xe0, 0x58, 0xed, 0x3f, 0xcd, 0x7c, 0xab, 0x03,
+ 0x60, 0x6e, 0xe7, 0x34, 0x81, 0xe2, 0xd3, 0x3f, 0x93, 0xfb, 0x94, 0x36,
+ 0xd4, 0x7e, 0x81, 0x9f, 0x18, 0xf6, 0x99, 0xf9, 0x7f, 0x72, 0x4a, 0x51,
+ 0x7e, 0x5b, 0x04, 0x12, 0xdb, 0x81, 0xe2, 0x1d, 0xb1, 0xff, 0x00, 0x71,
+ 0x90, 0xa3, 0xf6, 0x9a, 0xd8, 0x5a, 0xcb, 0x9a, 0x6a, 0xd4, 0x6e, 0x2e,
+ 0x05, 0xa4, 0x0e, 0xe4, 0x1d, 0x5a, 0x53, 0x92, 0xe6, 0xd6, 0x46, 0xd0,
+ 0x67, 0x59, 0x23, 0xdc, 0x3e, 0x0e, 0x6f, 0xf7, 0x27, 0x0f, 0x63, 0x9a,
+ 0x1b, 0x64, 0xb0, 0x1e, 0x1c, 0xe1, 0xb9, 0xbf, 0x82, 0x4a, 0x6c, 0x74,
+ 0xaf, 0x77, 0x50, 0xc7, 0x73, 0x5e, 0x1e, 0xd7, 0x12, 0x38, 0xe4, 0x10,
+ 0x51, 0xb2, 0x5d, 0xb3, 0x32, 0xb2, 0xf0, 0x43, 0x7e, 0xd0, 0x01, 0xd3,
+ 0x99, 0x72, 0x17, 0x4a, 0xc3, 0xa7, 0xf6, 0xa5, 0x76, 0x57, 0x13, 0x53,
+ 0x4b, 0xc3, 0x9b, 0xa0, 0x27, 0xe8, 0xeb, 0x1a, 0x77, 0x56, 0xef, 0x2d,
+ 0xfb, 0x68, 0x7b, 0xc4, 0x35, 0xb7, 0x87, 0x6e, 0x3c, 0x40, 0x94, 0x94,
+ 0xac, 0x96, 0x36, 0xdb, 0x5a, 0xdd, 0x21, 0xed, 0x90, 0x3e, 0x2f, 0x79,
+ 0x94, 0x5c, 0x56, 0x35, 0xcf, 0xc8, 0x6b, 0x86, 0x81, 0x8c, 0x69, 0x9f,
+ 0x02, 0x64, 0xa0, 0x3c, 0x38, 0x7d, 0x9c, 0x91, 0xa9, 0xa5, 0x81, 0xc0,
+ 0xf8, 0x92, 0xff, 0x00, 0x05, 0x62, 0xa6, 0x34, 0x8b, 0xde, 0xc9, 0x74,
+ 0xbe, 0xae, 0x0c, 0x1d, 0x12, 0x52, 0x07, 0x5f, 0x95, 0x87, 0x9f, 0x68,
+ 0xdb, 0x14, 0x5b, 0x15, 0x48, 0x3f, 0x98, 0xdd, 0x5b, 0xf2, 0x56, 0xbd,
+ 0x46, 0x4e, 0xe9, 0xed, 0x33, 0xf3, 0x88, 0x45, 0xb2, 0x8f, 0x53, 0x25,
+ 0xd5, 0xbb, 0x52, 0xd0, 0xe2, 0x7e, 0x7d, 0xfe, 0x4b, 0x3f, 0xd2, 0x3e,
+ 0x9c, 0x49, 0x8d, 0xb1, 0xbb, 0xe5, 0xcf, 0xde, 0x92, 0x9b, 0x99, 0xd4,
+ 0xb5, 0x99, 0xc5, 0xc6, 0x1d, 0xb1, 0xfb, 0x40, 0x88, 0x31, 0x21, 0x52,
+ 0xcc, 0xea, 0x83, 0x1f, 0xab, 0x5a, 0xc2, 0xd3, 0xe9, 0xb7, 0x6b, 0x63,
+ 0xb4, 0xed, 0x13, 0xaa, 0xd8, 0xea, 0x75, 0x01, 0x65, 0xb6, 0xb4, 0xea,
+ 0x0e, 0xfd, 0x79, 0x10, 0x57, 0x31, 0x7d, 0xdf, 0xe5, 0x0c, 0x9d, 0xe7,
+ 0xdd, 0xea, 0x19, 0x9d, 0x79, 0xf2, 0x72, 0x4a, 0x77, 0x6b, 0xcd, 0xc5,
+ 0xbd, 0xb3, 0x20, 0xfc, 0x7b, 0x7d, 0xea, 0x39, 0x0d, 0xa3, 0xd2, 0x2f,
+ 0xf5, 0x5f, 0x50, 0xf1, 0x6c, 0xb8, 0x7d, 0xda, 0xac, 0x5f, 0x52, 0xa0,
+ 0x34, 0x00, 0x93, 0xe0, 0x76, 0x9f, 0xe2, 0x9c, 0xe4, 0xed, 0x10, 0x1c,
+ 0xe0, 0x3c, 0xf5, 0x11, 0xf2, 0x49, 0x4c, 0xed, 0xb7, 0x21, 0xd6, 0xfe,
+ 0xaf, 0x98, 0xc7, 0xb0, 0x0f, 0xa0, 0x5a, 0x47, 0xdf, 0xdd, 0x76, 0x9f,
+ 0x56, 0x69, 0x7d, 0x5d, 0x31, 0xaf, 0xb6, 0x3d, 0x5b, 0xdc, 0xeb, 0x0c,
+ 0x78, 0x7d, 0x16, 0xfe, 0x45, 0xe7, 0xd7, 0xe4, 0x96, 0x59, 0x2c, 0x6d,
+ 0x6e, 0x07, 0x4d, 0xc3, 0xe9, 0x0f, 0xbd, 0x7a, 0x1f, 0x4f, 0xdd, 0x46,
+ 0x1e, 0x3b, 0x1d, 0xa1, 0x6d, 0x6c, 0x04, 0x78, 0x68, 0x27, 0xf1, 0x49,
+ 0x4d, 0x9c, 0x5c, 0x80, 0x59, 0x7b, 0x2c, 0x3a, 0xd3, 0x65, 0x80, 0xff,
+ 0x00, 0x56, 0x77, 0x0f, 0xc0, 0xaa, 0xde, 0xab, 0x6f, 0x6d, 0x56, 0x57,
+ 0x21, 0x87, 0xdc, 0xd9, 0xe7, 0x52, 0x06, 0xbf, 0x7a, 0xa1, 0x76, 0x45,
+ 0x94, 0x75, 0x0b, 0x43, 0x0f, 0xf3, 0xa1, 0xb6, 0x34, 0x76, 0x25, 0xa4,
+ 0xb1, 0xc3, 0xee, 0x21, 0x3f, 0x44, 0xb4, 0xe4, 0xe3, 0xb4, 0x4c, 0x16,
+ 0xef, 0x61, 0x6f, 0xee, 0x96, 0xbc, 0xc8, 0xfc, 0x12, 0x53, 0x6f, 0x28,
+ 0xb5, 0xd7, 0x5e, 0x48, 0x90, 0xc6, 0x06, 0xb7, 0xc2, 0x40, 0x5c, 0xa5,
+ 0x78, 0xf5, 0x8a, 0x4b, 0x9d, 0x2f, 0xe7, 0x57, 0x19, 0xd3, 0xc8, 0x1f,
+ 0xbd, 0x6d, 0xe7, 0xde, 0x28, 0xe9, 0x76, 0xba, 0xbf, 0xe7, 0x2d, 0xfd,
+ 0x1b, 0x7f, 0xac, 0xed, 0x0f, 0xf7, 0xac, 0xc2, 0x5b, 0x48, 0xaf, 0x70,
+ 0xdb, 0x5c, 0x41, 0x74, 0x48, 0x1c, 0x41, 0x29, 0x29, 0xa8, 0x6a, 0xcb,
+ 0xa1, 0xc1, 0x96, 0x3a, 0xfc, 0x6d, 0xc0, 0x3e, 0xa6, 0xee, 0x78, 0x69,
+ 0x69, 0xee, 0x04, 0xa2, 0x9a, 0xcb, 0x9e, 0xe7, 0x5c, 0xe2, 0xf0, 0x35,
+ 0x25, 0xe7, 0x77, 0x6f, 0x39, 0x4f, 0x7d, 0x97, 0x1c, 0x9b, 0x6e, 0xbf,
+ 0x29, 0xd6, 0xd8, 0xfd, 0x41, 0x73, 0x78, 0x0d, 0xd2, 0x1a, 0x1b, 0x02,
+ 0x14, 0x1d, 0x91, 0x5d, 0x8e, 0x98, 0x7b, 0x40, 0x00, 0xbb, 0x70, 0x80,
+ 0x63, 0xba, 0x4a, 0x4d, 0x84, 0xc6, 0x62, 0x65, 0x57, 0x97, 0x50, 0xd8,
+ 0x43, 0x80, 0xb0, 0x0e, 0xec, 0x77, 0x20, 0xfc, 0x17, 0x5a, 0xc7, 0xb1,
+ 0xf6, 0x1d, 0xa4, 0x12, 0xe1, 0x1a, 0x78, 0xb7, 0x5f, 0xc8, 0x57, 0x26,
+ 0xf7, 0x81, 0x58, 0x24, 0x38, 0x6e, 0x8e, 0x7b, 0x48, 0x85, 0xa7, 0x88,
+ 0xf2, 0x2b, 0xa0, 0x50, 0x4b, 0x5c, 0xfa, 0xdc, 0x00, 0xf0, 0x73, 0x07,
+ 0x6f, 0x82, 0x4a, 0x6c, 0x64, 0xfa, 0xb9, 0x35, 0xe5, 0x7a, 0x56, 0x6c,
+ 0x7d, 0x76, 0x35, 0xc0, 0xf3, 0x0d, 0x68, 0x87, 0x01, 0xf1, 0x54, 0xb0,
+ 0xea, 0xf4, 0xa9, 0xa6, 0xa2, 0x64, 0x57, 0xcb, 0x8f, 0x3c, 0x72, 0xb4,
+ 0x3a, 0x1c, 0xdb, 0x88, 0xf7, 0x59, 0xa9, 0x7b, 0x9c, 0x5f, 0x3e, 0x7c,
+ 0xaa, 0x4f, 0xa1, 0xad, 0xea, 0x14, 0xb0, 0xbb, 0x6b, 0x49, 0x73, 0x3b,
+ 0xfb, 0x9f, 0xd8, 0x24, 0xa6, 0x8e, 0x7b, 0x6f, 0xc7, 0xfa, 0xbb, 0xd4,
+ 0x6c, 0xbe, 0x7d, 0x47, 0xd4, 0xe0, 0xe8, 0x32, 0xdf, 0xd2, 0x58, 0x00,
+ 0x8f, 0x93, 0x94, 0xba, 0x75, 0x2c, 0xfd, 0x97, 0x8a, 0x3b, 0x0a, 0x5a,
+ 0x08, 0xf3, 0xd1, 0x13, 0xeb, 0x75, 0x9b, 0x3e, 0xae, 0xe4, 0x57, 0xc7,
+ 0xa8, 0x69, 0x63, 0x7c, 0xcb, 0x9e, 0x1f, 0xf9, 0x1a, 0x96, 0x15, 0x71,
+ 0x45, 0x74, 0xc4, 0x90, 0xd0, 0xd0, 0x7c, 0x12, 0x52, 0x0e, 0x9a, 0xc1,
+ 0x19, 0x64, 0xea, 0x1f, 0x69, 0x86, 0xfe, 0xe8, 0xd5, 0xaa, 0xc6, 0x03,
+ 0x3d, 0x49, 0x7d, 0x9a, 0x01, 0xea, 0x71, 0xe0, 0xe7, 0x6d, 0x1f, 0x82,
+ 0x9e, 0x25, 0x4d, 0x65, 0x16, 0x16, 0x88, 0x2e, 0x25, 0xf3, 0xe3, 0xca,
+ 0x1f, 0x49, 0x65, 0xa4, 0xda, 0xd7, 0x38, 0x96, 0xb2, 0xaa, 0x9b, 0xf1,
+ 0x98, 0x24, 0xfd, 0xe9, 0x29, 0x2b, 0x8b, 0x2c, 0xa3, 0xd5, 0xb0, 0x6d,
+ 0x64, 0x49, 0xdd, 0xda, 0x0c, 0x6a, 0x81, 0x93, 0xd1, 0xba, 0x65, 0xf9,
+ 0x54, 0x9b, 0x71, 0xd9, 0x16, 0x4c, 0x90, 0x36, 0x92, 0x47, 0x69, 0x6a,
+ 0xbc, 0x1a, 0x4e, 0x0d, 0x9b, 0x99, 0xa7, 0xa8, 0xf6, 0x8f, 0xea, 0x87,
+ 0x8f, 0x72, 0x46, 0xaa, 0xf2, 0x8f, 0x4d, 0xb4, 0x4b, 0x46, 0xe3, 0x60,
+ 0x1d, 0xfe, 0x89, 0x22, 0x52, 0x53, 0x89, 0x99, 0xf5, 0x75, 0xd8, 0xb5,
+ 0x9b, 0x30, 0x72, 0xac, 0xaa, 0x5c, 0x40, 0xae, 0xcf, 0x7b, 0x60, 0x7c,
+ 0x75, 0x0b, 0x33, 0x2a, 0x8e, 0xa7, 0x85, 0x36, 0x65, 0xd3, 0xbd, 0x8c,
+ 0x12, 0xeb, 0x6b, 0x32, 0x23, 0xc6, 0x34, 0x2b, 0xb3, 0xca, 0xa8, 0xbe,
+ 0xea, 0x5b, 0x20, 0xd6, 0xe6, 0x03, 0xb7, 0xcd, 0xce, 0x04, 0x7e, 0x0b,
+ 0x33, 0xa9, 0xd8, 0x5f, 0xd3, 0xba, 0xe6, 0xe1, 0xa5, 0x26, 0xca, 0xeb,
+ 0x3e, 0x4d, 0x63, 0x7f, 0xbd, 0x25, 0x32, 0xfa, 0xa9, 0x78, 0xc8, 0xe9,
+ 0xd9, 0x56, 0xd6, 0x77, 0x0b, 0x1f, 0xa1, 0x22, 0x0e, 0x80, 0x05, 0xd4,
+ 0xd1, 0x4e, 0xda, 0x83, 0xc7, 0x20, 0x48, 0x1e, 0x70, 0xb9, 0x1f, 0xa8,
+ 0xf5, 0xb8, 0x74, 0x46, 0x91, 0xf9, 0xf6, 0x3b, 0xf2, 0xc2, 0xed, 0x18,
+ 0xd1, 0x5d, 0x11, 0xd8, 0x35, 0x25, 0x3c, 0xad, 0x6d, 0x78, 0xa4, 0x31,
+ 0xee, 0x97, 0x06, 0xb7, 0xdd, 0xe2, 0x56, 0x07, 0x55, 0xaa, 0xb7, 0x75,
+ 0x1c, 0x87, 0x32, 0x58, 0xfd, 0xfa, 0x96, 0x99, 0x04, 0x80, 0x3f, 0x34,
+ 0xc8, 0x5d, 0x28, 0x12, 0x76, 0x88, 0x23, 0x4e, 0x38, 0x8e, 0x4a, 0xc1,
+ 0xbd, 0xa2, 0xdc, 0xac, 0x8b, 0x01, 0x06, 0x6c, 0x7c, 0x02, 0x3c, 0xcf,
+ 0xcd, 0x25, 0x34, 0x6a, 0xcc, 0xba, 0xbd, 0x2c, 0xa9, 0x97, 0xd6, 0x74,
+ 0x76, 0x86, 0xb7, 0x47, 0x1d, 0xa5, 0xb3, 0xf2, 0x44, 0x19, 0x7d, 0x2d,
+ 0xc2, 0x2c, 0x0f, 0xc7, 0x71, 0xed, 0x63, 0x77, 0x37, 0xfc, 0xe6, 0xca,
+ 0x93, 0xea, 0xb2, 0xb6, 0xee, 0xf4, 0xa6, 0x39, 0x2c, 0x3a, 0xfd, 0xc7,
+ 0x54, 0x20, 0xfa, 0x1d, 0xed, 0x3e, 0xd2, 0x39, 0x0e, 0x6a, 0x4a, 0x6c,
+ 0x3d, 0xb5, 0xda, 0x03, 0x71, 0xec, 0x63, 0xf4, 0x11, 0xb0, 0xcf, 0xe1,
+ 0x28, 0x36, 0x36, 0xfa, 0xbd, 0xb6, 0x36, 0x4b, 0x7b, 0x8f, 0x04, 0x07,
+ 0xe1, 0xe3, 0x3b, 0xdc, 0x23, 0x77, 0xf2, 0x4c, 0x1f, 0xc1, 0x13, 0xd0,
+ 0xcb, 0x7c, 0x1a, 0xf2, 0x5d, 0x20, 0xcc, 0x58, 0x77, 0xff, 0x00, 0xd2,
+ 0xe5, 0x25, 0x3a, 0x3f, 0x57, 0xf6, 0xfd, 0xb2, 0xd2, 0x3e, 0x97, 0xa5,
+ 0xed, 0xd3, 0xf9, 0x4d, 0xee, 0x13, 0x67, 0x4b, 0x40, 0x04, 0xcc, 0xb8,
+ 0xb8, 0x8e, 0xdc, 0xa2, 0x74, 0x53, 0x96, 0x32, 0x9e, 0x72, 0x6b, 0x61,
+ 0x0c, 0x61, 0xfd, 0x2b, 0x0c, 0x6a, 0x4f, 0x04, 0x47, 0x97, 0x8a, 0x16,
+ 0x65, 0x81, 0xa1, 0xbb, 0x8e, 0xae, 0x9d, 0xb3, 0xdb, 0x9f, 0xef, 0x49,
+ 0x4d, 0xf1, 0xb4, 0x8a, 0x99, 0xb6, 0x4b, 0x2b, 0x61, 0x33, 0xe1, 0x12,
+ 0xa4, 0x48, 0x01, 0xa0, 0x37, 0xf4, 0x4e, 0x73, 0x5d, 0xbc, 0x48, 0x3e,
+ 0xdd, 0x63, 0x51, 0x0e, 0x94, 0xac, 0x63, 0x06, 0x61, 0x6b, 0xfe, 0x80,
+ 0xf4, 0x83, 0x87, 0x22, 0x1a, 0x1a, 0x0a, 0xb9, 0x95, 0x7e, 0x53, 0x72,
+ 0x6f, 0x6b, 0xa1, 0xf4, 0x33, 0x41, 0x8e, 0x46, 0x8e, 0x10, 0x0e, 0xb3,
+ 0xc4, 0xa4, 0xa4, 0x26, 0xe0, 0x6e, 0xb5, 0xfd, 0xdf, 0xed, 0x64, 0xf8,
+ 0x77, 0xfc, 0xaa, 0x1e, 0x8b, 0x36, 0xfa, 0x92, 0x26, 0x22, 0x3f, 0x3a,
+ 0x51, 0x1b, 0x8f, 0x5b, 0xa8, 0x75, 0xd7, 0x17, 0xb2, 0xb6, 0x90, 0xc6,
+ 0xb6, 0xbd, 0x5e, 0xe2, 0xef, 0x33, 0xe0, 0xa5, 0xf6, 0x01, 0x1f, 0x68,
+ 0xf5, 0x3f, 0x43, 0x13, 0xea, 0x7e, 0x74, 0xf1, 0xb7, 0x67, 0xef, 0x4f,
+ 0xc9, 0x25, 0x32, 0xce, 0x16, 0xe4, 0x63, 0xdf, 0x55, 0x6e, 0x0c, 0xb1,
+ 0xfb, 0xc7, 0xa9, 0xfb, 0xa0, 0x1e, 0x42, 0xe4, 0xb2, 0x2b, 0x79, 0x7d,
+ 0xdb, 0x46, 0xfb, 0x77, 0x10, 0xeb, 0xa6, 0x64, 0x8d, 0x26, 0x04, 0xae,
+ 0xc1, 0xde, 0xa6, 0xfb, 0x5a, 0xd8, 0xd1, 0xae, 0x82, 0x47, 0x72, 0xb9,
+ 0x26, 0x62, 0xb5, 0x85, 0xf6, 0x07, 0xcb, 0x9e, 0x4b, 0x9d, 0xac, 0x19,
+ 0x27, 0x58, 0x05, 0x25, 0x22, 0x6e, 0x83, 0x6b, 0xb4, 0x8e, 0xd0, 0xa4,
+ 0xd6, 0x17, 0x92, 0x77, 0x4f, 0x97, 0x82, 0x31, 0xb6, 0xe6, 0x88, 0x77,
+ 0xbc, 0x76, 0x04, 0x6e, 0xfc, 0xaa, 0xb5, 0x99, 0x01, 0x92, 0x36, 0x47,
+ 0xc2, 0x42, 0x4a, 0x4f, 0x81, 0x88, 0x32, 0xfa, 0xa6, 0x36, 0x3c, 0x02,
+ 0x1c, 0xf0, 0x5e, 0x3f, 0x92, 0xcf, 0x73, 0xbf, 0x22, 0xef, 0xae, 0x30,
+ 0xde, 0x3e, 0x4b, 0x92, 0xfa, 0x9c, 0xcf, 0x5f, 0xa9, 0x5d, 0x90, 0xe9,
+ 0x8a, 0x6a, 0x81, 0x3a, 0xea, 0xf3, 0x1f, 0x90, 0x2e, 0xb3, 0x23, 0x89,
+ 0x9d, 0x7c, 0x12, 0x53, 0x91, 0xd5, 0x1c, 0x19, 0xb3, 0x20, 0xe8, 0x5b,
+ 0x20, 0xfc, 0x1c, 0x16, 0x5f, 0xd5, 0x4b, 0xba, 0x96, 0xdc, 0xe7, 0xb0,
+ 0x6d, 0xc3, 0x6d, 0xc4, 0x8b, 0x8e, 0xa7, 0x77, 0xe7, 0x31, 0xbd, 0xfb,
+ 0x09, 0x2a, 0xef, 0x5c, 0xb4, 0x33, 0x0d, 0xfb, 0xf8, 0xda, 0x67, 0xe4,
+ 0x25, 0x4f, 0xa1, 0x52, 0xcc, 0x7f, 0xab, 0x61, 0xd6, 0x1f, 0xd1, 0xda,
+ 0xc0, 0xf7, 0x3b, 0xb4, 0xbf, 0xdd, 0xaf, 0xde, 0x92, 0x90, 0x64, 0x58,
+ 0xe7, 0xd3, 0x4b, 0x27, 0x7c, 0xfb, 0xe3, 0xf9, 0x4f, 0x00, 0x23, 0x3e,
+ 0xe1, 0x53, 0x0b, 0xf9, 0x03, 0x4d, 0xbc, 0x8e, 0x61, 0x54, 0xae, 0x8f,
+ 0xb3, 0xd8, 0xca, 0x83, 0xcd, 0x8d, 0x2f, 0x90, 0x49, 0x9d, 0xa2, 0x3e,
+ 0x88, 0x3e, 0x4a, 0xcd, 0xac, 0x96, 0xed, 0x3c, 0x10, 0x0f, 0xde, 0x65,
+ 0x25, 0x20, 0x75, 0x6f, 0x17, 0x57, 0x71, 0x6b, 0x1a, 0xc3, 0x06, 0x20,
+ 0x12, 0xef, 0x2d, 0x15, 0xde, 0xa5, 0x9f, 0x8b, 0x99, 0x55, 0x55, 0xd1,
+ 0x8e, 0xda, 0x5e, 0x5e, 0x1c, 0x5f, 0x02, 0x76, 0xb6, 0x5a, 0x46, 0x81,
+ 0x04, 0x8f, 0xd2, 0x57, 0x4b, 0x1a, 0x4e, 0xe0, 0x20, 0xc7, 0x78, 0x50,
+ 0xdc, 0x1c, 0x01, 0xa8, 0x49, 0x1b, 0x84, 0xc6, 0x9c, 0xeb, 0x09, 0x29,
+ 0x0e, 0x59, 0x7f, 0xa0, 0x64, 0x9e, 0x09, 0x3e, 0x1a, 0x10, 0x51, 0x01,
+ 0x9c, 0x07, 0x12, 0x48, 0xd8, 0xdb, 0x22, 0x3c, 0xcf, 0x8a, 0x86, 0x54,
+ 0x3d, 0xbb, 0x5d, 0xc9, 0x61, 0x04, 0x77, 0x4e, 0xc0, 0x3e, 0xc9, 0xb0,
+ 0x10, 0x7d, 0x42, 0x5b, 0xa1, 0xfe, 0x52, 0x4a, 0x7a, 0x2e, 0x94, 0xcf,
+ 0x4f, 0x0e, 0x8a, 0xff, 0x00, 0x38, 0x34, 0x6e, 0xf8, 0x9d, 0x4f, 0xe2,
+ 0x55, 0x0e, 0xa1, 0x14, 0xf5, 0x66, 0xd8, 0xf7, 0x38, 0x00, 0xf0, 0x58,
+ 0xd6, 0xfd, 0x19, 0x73, 0x67, 0x73, 0xa3, 0xc2, 0x0a, 0xbd, 0x4e, 0x46,
+ 0x2e, 0x2d, 0x62, 0xcc, 0x9b, 0x9b, 0x4b, 0x7b, 0x6f, 0x20, 0x05, 0x5f,
+ 0xa9, 0x1c, 0x6c, 0xab, 0x2b, 0xba, 0xa7, 0xb6, 0xec, 0x7b, 0x98, 0xe6,
+ 0x38, 0xb0, 0xc8, 0x31, 0xda, 0x47, 0x93, 0x92, 0x53, 0x8f, 0xf5, 0xad,
+ 0xf5, 0xdf, 0xd2, 0xf1, 0xe8, 0x71, 0x35, 0x87, 0x5e, 0xc2, 0xd7, 0x01,
+ 0x32, 0x5a, 0xd3, 0x00, 0xab, 0x74, 0x38, 0x31, 0xad, 0xd3, 0x4f, 0x6e,
+ 0xdf, 0x90, 0x0a, 0x9f, 0x5c, 0xae, 0xab, 0x31, 0xa8, 0xa1, 0xcc, 0x71,
+ 0x87, 0xee, 0xad, 0xed, 0xd4, 0x30, 0xb6, 0x36, 0xee, 0x57, 0xeb, 0x03,
+ 0x68, 0x67, 0x04, 0x13, 0x0e, 0xfc, 0xdd, 0x1a, 0x00, 0x49, 0x4c, 0x19,
+ 0x49, 0xae, 0x8a, 0x59, 0x24, 0x06, 0x83, 0xba, 0x3f, 0xaa, 0x7f, 0x8a,
+ 0x7e, 0x99, 0x2d, 0x6e, 0x66, 0xef, 0xdf, 0x01, 0xb1, 0xe0, 0xd6, 0xe8,
+ 0x89, 0x64, 0x0b, 0x5c, 0xc3, 0x00, 0x41, 0x0d, 0x1e, 0x3a, 0x6a, 0xa3,
+ 0x88, 0xd3, 0xea, 0x3d, 0x83, 0x87, 0x59, 0xcf, 0x94, 0x6a, 0x92, 0x9b,
+ 0x35, 0x38, 0xd9, 0x8b, 0x6c, 0xb6, 0x22, 0xe7, 0x30, 0x4f, 0x04, 0x0e,
+ 0xff, 0x00, 0x7a, 0x15, 0x17, 0x52, 0xfb, 0x3d, 0x3a, 0x9f, 0xb9, 0xd8,
+ 0xcc, 0x73, 0x5e, 0xdf, 0x38, 0x20, 0x8f, 0xc1, 0x59, 0x0d, 0x6b, 0x68,
+ 0x60, 0x1a, 0x82, 0xe2, 0x7f, 0x12, 0xab, 0xe1, 0xe3, 0x34, 0x65, 0x5b,
+ 0x74, 0x0d, 0xce, 0x6b, 0x49, 0x3f, 0x10, 0xe3, 0xff, 0x00, 0x7e, 0x49,
+ 0x49, 0x2e, 0xad, 0xd4, 0xe4, 0xe0, 0xd6, 0xc3, 0x2c, 0xa4, 0x16, 0x96,
+ 0x8e, 0xfb, 0x6b, 0x31, 0x2b, 0x37, 0xad, 0x69, 0xf5, 0x77, 0xaa, 0x58,
+ 0x63, 0x7b, 0xac, 0xb6, 0x63, 0xc1, 0xd6, 0x31, 0xa0, 0xfd, 0xc1, 0x6b,
+ 0x59, 0x58, 0x66, 0x73, 0x9c, 0x49, 0x21, 0xd6, 0xd8, 0xed, 0x4c, 0xc7,
+ 0xb5, 0x8d, 0xd1, 0x73, 0x5d, 0x5d, 0xb7, 0x55, 0xf5, 0x57, 0x32, 0xdb,
+ 0x5d, 0x2f, 0xbe, 0xe2, 0x23, 0xc9, 0xd6, 0x37, 0xff, 0x00, 0x22, 0x92,
+ 0x9d, 0x9f, 0xa9, 0x35, 0x86, 0xf4, 0x7c, 0x36, 0xf8, 0xb5, 0xce, 0xf9,
+ 0xb9, 0xc7, 0xfb, 0xd7, 0x4f, 0x71, 0x8a, 0x5e, 0x7c, 0x1a, 0x78, 0xf8,
+ 0x2c, 0x3f, 0xaa, 0x15, 0x16, 0xf4, 0xac, 0x50, 0x7f, 0x36, 0x96, 0x11,
+ 0xfd, 0xa1, 0x2b, 0x76, 0xc7, 0x06, 0xb1, 0xce, 0x3c, 0x01, 0x29, 0x29,
+ 0xe7, 0x2e, 0x78, 0x63, 0xbe, 0x8b, 0x8e, 0xd2, 0x01, 0x0d, 0x1a, 0xe8,
+ 0x7c, 0x17, 0x21, 0x67, 0x59, 0x6b, 0xed, 0x83, 0x4b, 0x9a, 0x24, 0xef,
+ 0x2e, 0x12, 0x64, 0x9e, 0xdb, 0x7f, 0xb9, 0x75, 0xd9, 0x2e, 0x6f, 0xa1,
+ 0x91, 0x60, 0xe4, 0x31, 0xef, 0xd7, 0x40, 0x48, 0x6c, 0xae, 0x31, 0xbd,
+ 0x4b, 0x12, 0xc0, 0xdf, 0xb6, 0x50, 0x71, 0xb7, 0x70, 0xe8, 0xdc, 0xc3,
+ 0xf0, 0x3c, 0xa4, 0xa7, 0x5f, 0x18, 0x57, 0x99, 0x54, 0xd1, 0x90, 0xc2,
+ 0xee, 0x0d, 0x65, 0xc0, 0x3b, 0xfc, 0xd7, 0x42, 0x0d, 0x98, 0x57, 0xd4,
+ 0xe7, 0x1b, 0x6b, 0x8a, 0xc3, 0x67, 0x74, 0x18, 0x24, 0x79, 0x89, 0x40,
+ 0xaf, 0xa7, 0x61, 0x65, 0x80, 0xec, 0x6b, 0x5b, 0x61, 0xf0, 0x69, 0x04,
+ 0xc7, 0xc0, 0xea, 0xa7, 0x5b, 0x3a, 0x8e, 0x20, 0x22, 0xab, 0xad, 0xad,
+ 0xbd, 0xc0, 0x32, 0xd2, 0x3f, 0xaa, 0xed, 0x3f, 0x04, 0x94, 0x86, 0xd6,
+ 0x51, 0xa9, 0x20, 0xb3, 0xf1, 0x0a, 0x2c, 0x05, 0x83, 0x7d, 0x6f, 0x96,
+ 0xfd, 0xff, 0x00, 0x95, 0x5c, 0x39, 0x99, 0xb0, 0x0d, 0xf5, 0xd7, 0x90,
+ 0xce, 0xf2, 0xd0, 0xc7, 0x7f, 0xd1, 0xfe, 0xe5, 0x5d, 0xd7, 0x62, 0x3a,
+ 0xc8, 0x7e, 0x3b, 0xa9, 0x6f, 0x3b, 0xda, 0x49, 0x8f, 0x8e, 0xd9, 0xfc,
+ 0x89, 0x29, 0xd4, 0xe8, 0x8f, 0x77, 0xa5, 0x95, 0x75, 0xcd, 0x0d, 0x0d,
+ 0xda, 0xd0, 0x46, 0x9d, 0x8f, 0x6f, 0x9a, 0xa1, 0xd4, 0x1a, 0xdf, 0x49,
+ 0xdb, 0xf8, 0x8d, 0xbf, 0xd5, 0x92, 0x35, 0x5a, 0x5d, 0x3e, 0xcc, 0x76,
+ 0xf4, 0xfc, 0x87, 0x57, 0x60, 0xb1, 0xa5, 0xed, 0x1a, 0x19, 0x82, 0x74,
+ 0xd7, 0xb8, 0x54, 0x73, 0x81, 0xf4, 0x1c, 0x26, 0x01, 0x2c, 0x03, 0xfb,
+ 0x56, 0x30, 0x24, 0xa7, 0x57, 0x25, 0xb6, 0x3f, 0xa8, 0x9a, 0x9a, 0x1a,
+ 0x5c, 0xe7, 0x9a, 0xda, 0x7b, 0x70, 0x39, 0x56, 0xf6, 0xe4, 0x31, 0xad,
+ 0x19, 0x58, 0xad, 0xb9, 0x95, 0xe8, 0x2d, 0x20, 0xbb, 0x6b, 0x47, 0x01,
+ 0xc5, 0xbc, 0xfc, 0xc2, 0x86, 0x3b, 0x5b, 0x6f, 0x54, 0x16, 0x81, 0xa0,
+ 0xc8, 0x70, 0xf3, 0xd0, 0x10, 0x23, 0xee, 0x46, 0x34, 0x00, 0xfb, 0x0e,
+ 0x3d, 0xaf, 0x8b, 0x1c, 0xe0, 0xe6, 0x10, 0x5a, 0x44, 0x9e, 0x43, 0x81,
+ 0x82, 0x92, 0x90, 0xd7, 0x65, 0x2f, 0xae, 0xcc, 0x73, 0x66, 0xd6, 0x97,
+ 0x07, 0x32, 0xc6, 0x8d, 0xc1, 0xa5, 0xa6, 0x00, 0x70, 0xf0, 0x20, 0x23,
+ 0x4e, 0x3f, 0xd9, 0xbe, 0xcf, 0xeb, 0xb2, 0x67, 0x7e, 0xed, 0x76, 0x6e,
+ 0x9e, 0x14, 0xef, 0x05, 0x95, 0x53, 0x0c, 0xa9, 0xe0, 0x57, 0x2e, 0x6d,
+ 0x9e, 0xd7, 0xc7, 0x8b, 0x4e, 0x8a, 0xa4, 0x33, 0x6c, 0xc7, 0xe7, 0xce,
+ 0xdd, 0xc6, 0x36, 0xcc, 0x6d, 0x98, 0x94, 0x94, 0x9a, 0xc7, 0x00, 0x2c,
+ 0x61, 0x96, 0xb8, 0xcc, 0x93, 0xf9, 0x57, 0x37, 0xe8, 0x4b, 0x40, 0x06,
+ 0x67, 0x8d, 0x67, 0x4f, 0x82, 0xe9, 0x32, 0x2c, 0x63, 0xb1, 0xb2, 0x1e,
+ 0xf8, 0x2e, 0x65, 0x6f, 0x21, 0xc3, 0xb7, 0xb4, 0xae, 0x57, 0x1a, 0xeb,
+ 0x9a, 0xc0, 0x3d, 0x8f, 0x1c, 0x0d, 0x4b, 0x4f, 0xe3, 0x29, 0x29, 0xb4,
+ 0x31, 0x03, 0x60, 0x8f, 0x69, 0xef, 0xcb, 0x79, 0xfc, 0x13, 0x8a, 0x2d,
+ 0x68, 0x24, 0xc9, 0xd3, 0xc0, 0x58, 0xdf, 0xc2, 0x10, 0x7e, 0xd9, 0x90,
+ 0x22, 0x58, 0xe8, 0x3c, 0xc4, 0x39, 0x19, 0x9d, 0x4b, 0xd3, 0x69, 0xf5,
+ 0x36, 0x90, 0x04, 0xeb, 0xed, 0x21, 0x25, 0x3a, 0x9d, 0x06, 0xcc, 0x4c,
+ 0x26, 0x5a, 0x6e, 0xdd, 0x6d, 0xf6, 0x10, 0x7d, 0x1a, 0x18, 0xe7, 0xc0,
+ 0x03, 0x4d, 0xd0, 0x20, 0x7c, 0x15, 0xcc, 0x9e, 0xa3, 0x9d, 0x61, 0xdd,
+ 0x4f, 0x4c, 0xc8, 0xf4, 0xbb, 0x48, 0x64, 0x9f, 0x96, 0xe9, 0x55, 0xba,
+ 0x4d, 0xc2, 0xb6, 0x6e, 0xd3, 0x60, 0x69, 0xb5, 0xd6, 0x46, 0x84, 0x38,
+ 0xf3, 0xf7, 0x05, 0xa7, 0xd3, 0xbe, 0xb3, 0xf4, 0x0c, 0xfb, 0x46, 0x3d,
+ 0x19, 0x8d, 0x37, 0x1e, 0x19, 0x60, 0x35, 0xee, 0xfe, 0xae, 0xf0, 0x25,
+ 0x25, 0x3c, 0xb7, 0x55, 0xfd, 0xb3, 0x97, 0x5b, 0xab, 0x7f, 0x4c, 0xb6,
+ 0xaa, 0xdf, 0xa0, 0x78, 0x3b, 0xe2, 0x74, 0xf7, 0x34, 0x6a, 0x16, 0xc6,
+ 0x3e, 0x39, 0xa7, 0xa5, 0xd5, 0x80, 0xe7, 0x86, 0x07, 0x06, 0x80, 0x1f,
+ 0xce, 0x9f, 0x48, 0x00, 0xb4, 0xbe, 0xb0, 0xf5, 0xba, 0xfa, 0x45, 0x0c,
+ 0x6d, 0x70, 0x72, 0xb2, 0x1d, 0xb2, 0x96, 0x1e, 0xc0, 0x7d, 0x27, 0x91,
+ 0xe0, 0xd5, 0xc9, 0x5b, 0x96, 0xcb, 0xae, 0x0f, 0xc8, 0xb2, 0x5c, 0xf3,
+ 0xab, 0xc9, 0x12, 0x92, 0x9b, 0xb9, 0x0f, 0xa2, 0x97, 0x58, 0x44, 0x35,
+ 0x8d, 0xdc, 0x18, 0xd6, 0xfd, 0xdc, 0x04, 0x36, 0xe4, 0xd8, 0x5a, 0x5a,
+ 0x4f, 0xa7, 0x73, 0xc0, 0x2c, 0x0f, 0x1e, 0xc2, 0x23, 0x41, 0xdd, 0x67,
+ 0xe4, 0xe5, 0x62, 0x56, 0xe2, 0xc2, 0xe9, 0x03, 0xe9, 0x38, 0x4a, 0x9b,
+ 0xf2, 0x71, 0xf2, 0x2a, 0x1e, 0x9b, 0x1d, 0x6d, 0x23, 0x96, 0xcf, 0xe9,
+ 0x1a, 0x7f, 0x79, 0xbd, 0xd2, 0x52, 0xd9, 0xfd, 0x63, 0x33, 0x12, 0xb1,
+ 0x53, 0xe9, 0x75, 0x0f, 0x26, 0x4b, 0xcf, 0xba, 0xb7, 0x47, 0x60, 0x51,
+ 0x2e, 0xea, 0x1d, 0x4d, 0xd5, 0x87, 0xfa, 0x34, 0xbb, 0xd4, 0x00, 0xb6,
+ 0xc6, 0x3c, 0x40, 0x8e, 0x7e, 0x97, 0x0b, 0x33, 0x2f, 0x2c, 0x64, 0xed,
+ 0xc7, 0xbb, 0x29, 0xf7, 0xe2, 0xd6, 0x47, 0xa6, 0xd2, 0xdd, 0xa5, 0xa4,
+ 0xe9, 0x27, 0xc7, 0x6a, 0x16, 0x55, 0x72, 0x43, 0x9a, 0xea, 0x5e, 0xc0,
+ 0x20, 0xec, 0xb1, 0xcd, 0x98, 0xef, 0xb3, 0xb4, 0xa4, 0xa7, 0x58, 0x65,
+ 0x65, 0x6d, 0x0f, 0xbc, 0xb0, 0xeb, 0x07, 0x69, 0x93, 0xa8, 0x57, 0xbe,
+ 0xae, 0x53, 0x84, 0xfb, 0xef, 0xc2, 0xb2, 0xc2, 0x3e, 0xd2, 0xff, 0x00,
+ 0x5a, 0x87, 0x03, 0xee, 0x6d, 0x80, 0x7b, 0x9b, 0xe0, 0x74, 0x12, 0xb9,
+ 0x37, 0x65, 0x57, 0x48, 0x1b, 0x6b, 0x0c, 0x71, 0xe4, 0xb6, 0x78, 0xf9,
+ 0xab, 0x7d, 0x33, 0xab, 0x57, 0x8b, 0xd5, 0x31, 0x32, 0x2c, 0x91, 0x45,
+ 0x76, 0x83, 0x61, 0x8d, 0x43, 0x4f, 0xb4, 0xf1, 0xf1, 0x49, 0x4f, 0x66,
+ 0x3e, 0xad, 0x3e, 0xbc, 0x8b, 0x1f, 0xf6, 0x97, 0x5e, 0x5e, 0x04, 0x39,
+ 0xe3, 0xde, 0x1b, 0xe1, 0xcc, 0x7e, 0x10, 0x93, 0x71, 0x28, 0xc6, 0x7b,
+ 0xab, 0xad, 0xae, 0xad, 0x92, 0x1c, 0xf6, 0x11, 0x0c, 0x73, 0x87, 0xe7,
+ 0x56, 0xe6, 0xfb, 0x75, 0x1c, 0xad, 0x07, 0xe7, 0xd6, 0xc7, 0x31, 0xc2,
+ 0x44, 0xf7, 0xed, 0xaa, 0xa5, 0x93, 0xd4, 0x06, 0x43, 0x88, 0xac, 0xc3,
+ 0x0b, 0x76, 0xba, 0x38, 0x24, 0x99, 0xd5, 0x25, 0x38, 0x9d, 0x6a, 0xf6,
+ 0x37, 0x3b, 0x16, 0x82, 0xf7, 0x07, 0x58, 0x0e, 0xd6, 0x37, 0x40, 0x44,
+ 0x8f, 0xa5, 0xf7, 0x2d, 0x4a, 0x65, 0xcf, 0x81, 0xc1, 0xdd, 0xf1, 0xe6,
+ 0x17, 0x3b, 0xd5, 0x88, 0x77, 0xd6, 0x3e, 0x9f, 0x59, 0x3f, 0x42, 0x96,
+ 0xc9, 0x3a, 0x89, 0x25, 0xf2, 0xba, 0x0c, 0x6b, 0x8b, 0x6c, 0xfa, 0x32,
+ 0xd0, 0xd7, 0x3b, 0x77, 0x81, 0x04, 0x24, 0xa4, 0xd7, 0x32, 0xb3, 0x90,
+ 0x1c, 0xe6, 0x87, 0x6d, 0xdd, 0xb5, 0xc7, 0x91, 0x3a, 0x4f, 0xdc, 0x89,
+ 0x58, 0x2d, 0xb4, 0x35, 0xbd, 0xc3, 0x8c, 0x8e, 0x44, 0xed, 0x0a, 0x0f,
+ 0x1b, 0x9c, 0x0f, 0x97, 0xf1, 0x47, 0xc6, 0x2d, 0x66, 0x4b, 0x9e, 0x47,
+ 0x15, 0xbb, 0xef, 0x33, 0xfd, 0xc9, 0x29, 0x28, 0x0e, 0x6e, 0x2d, 0x62,
+ 0x3d, 0xce, 0x12, 0x3f, 0x82, 0x1f, 0x4d, 0x2e, 0xb6, 0x97, 0xd8, 0xe1,
+ 0x16, 0x38, 0x06, 0x90, 0x35, 0x00, 0x8d, 0x20, 0x14, 0x5b, 0xc0, 0xfb,
+ 0x3d, 0x0f, 0x06, 0x3d, 0xa4, 0xff, 0x00, 0xd1, 0x25, 0x37, 0x47, 0xac,
+ 0xb2, 0xad, 0xa7, 0xdd, 0x0e, 0xd4, 0xf8, 0xf7, 0x49, 0x4a, 0xb9, 0xc7,
+ 0xed, 0x47, 0xd4, 0x89, 0x2e, 0xb2, 0x23, 0xc8, 0x85, 0xcf, 0x7d, 0x70,
+ 0x73, 0x4f, 0xd5, 0x6a, 0x3d, 0x3d, 0x5a, 0xeb, 0x1a, 0xe9, 0x1e, 0x07,
+ 0x72, 0xe8, 0x72, 0x1b, 0xb4, 0xee, 0x3a, 0x98, 0x20, 0x1e, 0xf2, 0x4e,
+ 0xab, 0x32, 0xec, 0x36, 0xe7, 0x62, 0xe3, 0x60, 0x64, 0x03, 0xb6, 0xd0,
+ 0xf0, 0x1a, 0x78, 0xdc, 0xd6, 0x3d, 0xe1, 0x25, 0x3b, 0x1f, 0x56, 0x18,
+ 0x1b, 0xd3, 0x59, 0xe4, 0xca, 0xdb, 0xf7, 0x30, 0x2d, 0x1c, 0xe3, 0x18,
+ 0xb6, 0x7c, 0x21, 0x55, 0xe8, 0x6c, 0xd9, 0x85, 0xb7, 0xb0, 0x74, 0x0f,
+ 0x90, 0x08, 0xfd, 0x45, 0xed, 0x6e, 0x3c, 0x11, 0x25, 0xc6, 0x1b, 0xe4,
+ 0x60, 0x99, 0xfc, 0x12, 0x53, 0x80, 0xf0, 0x1d, 0x85, 0x92, 0xd7, 0x7b,
+ 0x89, 0xa5, 0xf3, 0xf3, 0x07, 0xb2, 0xe2, 0xfa, 0xb5, 0x2e, 0x66, 0x26,
+ 0x25, 0x4e, 0xed, 0xbc, 0x8f, 0x87, 0xb5, 0x77, 0x38, 0xf6, 0x31, 0x81,
+ 0xee, 0x7f, 0x00, 0x09, 0xf8, 0x68, 0x3f, 0x8a, 0xc4, 0xfa, 0xd9, 0x8f,
+ 0x85, 0x8f, 0x7e, 0x1b, 0x68, 0x6e, 0xda, 0xdf, 0x5b, 0xdc, 0x7b, 0x8d,
+ 0x5c, 0x92, 0x9e, 0x28, 0xb0, 0xb0, 0xee, 0x69, 0x2d, 0x70, 0xe0, 0x8d,
+ 0x15, 0xca, 0x3a, 0xe7, 0x55, 0xc6, 0x6e, 0xd1, 0x77, 0xaa, 0xcf, 0xdd,
+ 0xb4, 0x6f, 0xfc, 0x4e, 0xaa, 0xd9, 0xc3, 0xa6, 0xc6, 0x92, 0xd2, 0x09,
+ 0xf2, 0xd1, 0x54, 0xb7, 0xa7, 0x10, 0x3d, 0xa7, 0xef, 0x49, 0x4d, 0xca,
+ 0x7e, 0xb2, 0xb8, 0xda, 0x06, 0x4e, 0x3b, 0x45, 0x7d, 0xcd, 0x53, 0x3f,
+ 0x18, 0x71, 0x32, 0xb4, 0x19, 0x9b, 0xd2, 0xaf, 0xd6, 0xab, 0x9b, 0x3d,
+ 0x98, 0xe9, 0x6b, 0xbf, 0xe9, 0x20, 0xe2, 0x74, 0x8a, 0x2b, 0xb2, 0x5e,
+ 0x03, 0x80, 0x1a, 0x93, 0xe6, 0xad, 0xe4, 0xe2, 0x57, 0x8f, 0x89, 0x56,
+ 0x5d, 0x75, 0xb6, 0xbc, 0x86, 0xbc, 0x8d, 0xd1, 0xa8, 0x10, 0x23, 0x84,
+ 0x94, 0xdf, 0xc2, 0x15, 0xbf, 0x12, 0xd6, 0x31, 0xcc, 0xf5, 0x0b, 0x81,
+ 0xdb, 0x20, 0x39, 0xc0, 0xc7, 0x03, 0xba, 0xa9, 0xd4, 0x9a, 0xdc, 0x6c,
+ 0x4a, 0xee, 0xbc, 0xec, 0x69, 0xb6, 0x9a, 0xe0, 0xf9, 0x58, 0x1e, 0x4f,
+ 0xdc, 0xd4, 0x6a, 0x06, 0x26, 0x5e, 0x29, 0xb3, 0x2e, 0xa6, 0xdd, 0xb5,
+ 0xbc, 0xbd, 0x80, 0x19, 0xf1, 0x0e, 0xe4, 0x2a, 0x59, 0xbd, 0x3b, 0x07,
+ 0x2a, 0xb6, 0xd0, 0xe3, 0x7d, 0x6c, 0xac, 0xfb, 0x1a, 0x2c, 0x2f, 0x63,
+ 0x4c, 0x72, 0x05, 0x92, 0x92, 0x9d, 0xd3, 0x8d, 0x6d, 0x36, 0x39, 0xe6,
+ 0x2c, 0x0e, 0x77, 0xa8, 0xc0, 0xc3, 0xee, 0x1b, 0x89, 0x83, 0xa7, 0xb8,
+ 0x48, 0x45, 0xc7, 0xb6, 0xcf, 0xa1, 0x43, 0xda, 0x5c, 0x35, 0xda, 0x4c,
+ 0xba, 0x7f, 0xaa, 0xed, 0x57, 0x3b, 0xd3, 0xf1, 0xf3, 0xfa, 0x76, 0x70,
+ 0xcc, 0xa3, 0x28, 0x67, 0xb0, 0xb7, 0xd3, 0x7d, 0x37, 0xb8, 0xd6, 0xe2,
+ 0xd0, 0x20, 0x0d, 0xde, 0xf1, 0xed, 0xec, 0xb4, 0x6e, 0xcd, 0xc1, 0xc9,
+ 0x63, 0x46, 0x5e, 0x2d, 0xb4, 0x39, 0xa2, 0x37, 0xb9, 0x9e, 0xab, 0x07,
+ 0xc1, 0xf5, 0x6e, 0x49, 0x4e, 0xc5, 0x8e, 0xb1, 0xcd, 0x63, 0x72, 0x6a,
+ 0x73, 0x9e, 0xd6, 0x86, 0xee, 0xa8, 0x83, 0x31, 0xe2, 0xc7, 0xff, 0x00,
+ 0x7a, 0x8f, 0xa6, 0x76, 0xef, 0x83, 0x1f, 0xd5, 0xf7, 0xed, 0x9f, 0xdc,
+ 0x9e, 0x7e, 0x6b, 0x3b, 0x06, 0xd1, 0x61, 0xdb, 0xd3, 0xfa, 0x8c, 0xed,
+ 0x7e, 0xd7, 0x34, 0xb8, 0x58, 0x00, 0x23, 0x8d, 0xb6, 0xca, 0xd9, 0xfb,
+ 0x26, 0x76, 0xef, 0xa7, 0x5e, 0xe8, 0xfa, 0x7e, 0x99, 0xe7, 0xfa, 0xbb,
+ 0xe2, 0x52, 0x53, 0x95, 0x64, 0x8c, 0x1c, 0xd7, 0x93, 0x27, 0xd3, 0x2d,
+ 0xd3, 0x40, 0x01, 0xff, 0x00, 0x7a, 0xc3, 0xaa, 0xb7, 0x6c, 0x07, 0xb0,
+ 0xe6, 0x20, 0xad, 0xce, 0xa3, 0x6b, 0x59, 0xd2, 0xec, 0x63, 0x7d, 0xa5,
+ 0xc5, 0xad, 0x3f, 0x0d, 0xc1, 0x64, 0x37, 0x7e, 0xcd, 0x76, 0x9d, 0x3b,
+ 0x8f, 0xe2, 0x92, 0x94, 0xe6, 0xd5, 0x1b, 0x41, 0x2d, 0x31, 0xa8, 0x32,
+ 0x15, 0x4c, 0x9c, 0x52, 0xd6, 0x8d, 0x86, 0x67, 0xc4, 0xca, 0x3e, 0xfd,
+ 0xae, 0x0c, 0x74, 0xb7, 0xc4, 0xb4, 0xca, 0x95, 0x8f, 0xae, 0xc6, 0x11,
+ 0x3e, 0xef, 0xe5, 0x8f, 0xe2, 0x12, 0x53, 0x0c, 0x0e, 0xbc, 0x70, 0xe8,
+ 0x38, 0x79, 0x03, 0xd8, 0x06, 0xd1, 0x63, 0x40, 0x24, 0x30, 0xf6, 0x8f,
+ 0x25, 0x89, 0xd4, 0x9b, 0x5f, 0xda, 0xdf, 0x6d, 0x4c, 0x2c, 0xc3, 0xb2,
+ 0x3d, 0x1b, 0x5c, 0x34, 0x30, 0x04, 0x8d, 0x38, 0x33, 0xd9, 0x5c, 0xca,
+ 0xc6, 0xad, 0xc4, 0x96, 0x90, 0x48, 0xe6, 0x0c, 0x7e, 0x55, 0x56, 0x9b,
+ 0x32, 0x31, 0x6c, 0xfd, 0x15, 0x8e, 0x6b, 0x4e, 0xae, 0x6c, 0xfb, 0x5c,
+ 0x07, 0x88, 0xe0, 0xa4, 0xa6, 0xa5, 0xf9, 0x96, 0xd8, 0x6b, 0x75, 0xb7,
+ 0xbe, 0xe3, 0x53, 0x76, 0x56, 0x5c, 0x49, 0xda, 0xd9, 0x9d, 0xa2, 0x55,
+ 0x86, 0x74, 0x9e, 0xa3, 0x97, 0x53, 0x6e, 0x63, 0x03, 0x43, 0xb5, 0x68,
+ 0x71, 0x3b, 0x88, 0xf1, 0x5d, 0x07, 0x45, 0xc2, 0x19, 0xfb, 0xae, 0xcc,
+ 0x0c, 0xdd, 0x5b, 0x5a, 0x47, 0xe8, 0xda, 0x35, 0x78, 0x99, 0x91, 0x1e,
+ 0x0a, 0xc3, 0xaf, 0xcb, 0xc8, 0xb5, 0xf8, 0xf8, 0x4f, 0x68, 0x01, 0xdb,
+ 0x6c, 0xc8, 0x68, 0xf6, 0x34, 0x0d, 0x36, 0xb2, 0x79, 0x3e, 0x3e, 0x09,
+ 0x29, 0xe7, 0xbf, 0xe6, 0xee, 0x6b, 0x2a, 0xde, 0x6d, 0xe2, 0x79, 0xd0,
+ 0x7e, 0x28, 0x07, 0x17, 0x32, 0x97, 0x82, 0xe7, 0x92, 0x4e, 0xa3, 0x6c,
+ 0xff, 0x00, 0x05, 0xda, 0x3a, 0x8a, 0x68, 0xc7, 0x9b, 0x3d, 0xe1, 0x82,
+ 0x06, 0xe3, 0x25, 0xe7, 0xb9, 0x25, 0x53, 0xab, 0x14, 0xd9, 0xba, 0xeb,
+ 0x07, 0xd2, 0xe3, 0xc0, 0x0f, 0x24, 0x94, 0xf3, 0x26, 0x97, 0x88, 0xdd,
+ 0x21, 0xc7, 0xb4, 0x19, 0x32, 0xaf, 0x60, 0xe2, 0x5b, 0x65, 0x7f, 0xa5,
+ 0x9d, 0x8f, 0xe1, 0xda, 0x17, 0x00, 0xd5, 0xaa, 0x70, 0xdb, 0x63, 0x9c,
+ 0xe7, 0x0d, 0x06, 0x80, 0xab, 0x4e, 0xae, 0xba, 0x9d, 0x5d, 0x4d, 0x10,
+ 0x5c, 0xd2, 0x1b, 0x23, 0x49, 0x02, 0x75, 0x49, 0x4f, 0x3f, 0x95, 0x8d,
+ 0x53, 0x73, 0xa8, 0x64, 0x17, 0xfb, 0x9a, 0x1e, 0x23, 0xb1, 0xff, 0x00,
+ 0x7a, 0xa3, 0x77, 0x4a, 0xca, 0x6e, 0x7e, 0x4e, 0x25, 0x0c, 0x2e, 0x14,
+ 0xbb, 0x40, 0xed, 0x0c, 0x1e, 0x21, 0x6e, 0xdc, 0xd1, 0xf6, 0xbd, 0xc6,
+ 0x00, 0x6b, 0x86, 0xbd, 0x84, 0x2b, 0xd9, 0x35, 0x46, 0x43, 0xad, 0x71,
+ 0x26, 0x5b, 0x24, 0xf7, 0x23, 0x54, 0x94, 0xe4, 0xf4, 0xcc, 0x9e, 0xb0,
+ 0x2a, 0xb3, 0x1b, 0x24, 0xb9, 0xcc, 0x03, 0xf4, 0x6e, 0x79, 0xd5, 0xa3,
+ 0xb8, 0x92, 0xb6, 0xf1, 0x19, 0xe9, 0x88, 0xfa, 0x4e, 0x77, 0xd2, 0x3e,
+ 0x1a, 0x05, 0x97, 0x59, 0xb2, 0xc7, 0xda, 0x41, 0xf6, 0x99, 0x03, 0xe6,
+ 0x76, 0xff, 0x00, 0x15, 0xab, 0x59, 0x2d, 0x21, 0x91, 0x26, 0x35, 0x29,
+ 0x29, 0xc3, 0xcc, 0x3e, 0xa7, 0xd6, 0xed, 0xbd, 0xaa, 0xad, 0x80, 0x47,
+ 0x80, 0x60, 0x77, 0xf1, 0x5d, 0x1d, 0x4d, 0x0c, 0xa4, 0x38, 0x6a, 0x08,
+ 0x89, 0xf8, 0x95, 0xcb, 0xd0, 0xe7, 0xdf, 0xf5, 0xa7, 0x39, 0xe3, 0x96,
+ 0x0b, 0x00, 0xf8, 0x32, 0x18, 0x3f, 0x22, 0xea, 0x28, 0xdc, 0x69, 0xd8,
+ 0x47, 0x04, 0x19, 0xfb, 0xd2, 0x52, 0x57, 0xce, 0xe2, 0x27, 0xb2, 0xb5,
+ 0x8a, 0x37, 0xba, 0xe0, 0x7b, 0xb0, 0x0f, 0xbf, 0x70, 0x55, 0x1e, 0xef,
+ 0xd2, 0x38, 0x1e, 0x21, 0x5b, 0xc1, 0x63, 0x9c, 0x5e, 0xe1, 0xcb, 0x4b,
+ 0x67, 0xe1, 0x0e, 0x49, 0x4c, 0x33, 0x2c, 0x3b, 0xeb, 0x6b, 0x67, 0x6e,
+ 0xd8, 0x6f, 0x84, 0xea, 0xd5, 0x6b, 0xa5, 0x8f, 0xd1, 0x8d, 0x34, 0x0f,
+ 0xec, 0x83, 0x9d, 0x5e, 0xcb, 0x28, 0x1f, 0x9a, 0xe3, 0x07, 0xe2, 0x0e,
+ 0xe5, 0x77, 0xa7, 0xd6, 0x2b, 0xa5, 0x8e, 0x76, 0x86, 0x64, 0x7c, 0x80,
+ 0x49, 0x4d, 0x5c, 0xab, 0x1c, 0xd7, 0x98, 0xe2, 0x49, 0x13, 0xc2, 0x03,
+ 0x08, 0x19, 0x98, 0x13, 0xa9, 0x06, 0xe2, 0x40, 0xf1, 0xd8, 0x1b, 0xfc,
+ 0x51, 0xf2, 0x43, 0x8e, 0x84, 0x73, 0x21, 0xa4, 0x7c, 0x4a, 0xab, 0xa9,
+ 0xeb, 0x15, 0x37, 0x82, 0xc6, 0x58, 0x7e, 0xf2, 0xd1, 0xfc, 0x12, 0x53,
+ 0xb5, 0xd2, 0xa3, 0xec, 0x82, 0x04, 0x0d, 0xce, 0x8f, 0xbd, 0x47, 0xab,
+ 0x6d, 0x14, 0x07, 0x11, 0x2f, 0x04, 0x86, 0x7c, 0x4e, 0x88, 0xbd, 0x39,
+ 0xa1, 0xb8, 0xad, 0x03, 0xc5, 0xdc, 0x7c, 0x4a, 0xa9, 0xd6, 0x6d, 0x83,
+ 0x53, 0x07, 0x33, 0xf2, 0x49, 0x4e, 0x6b, 0xda, 0xc1, 0x8d, 0x65, 0x8e,
+ 0x3a, 0x88, 0x0d, 0xf3, 0x3b, 0x9a, 0xd5, 0x83, 0xf5, 0x96, 0xe7, 0x7d,
+ 0xaf, 0x12, 0x1c, 0x40, 0x14, 0xea, 0x07, 0x1f, 0x48, 0xad, 0xdb, 0x5d,
+ 0x34, 0x6d, 0x06, 0x77, 0xb8, 0x03, 0x3e, 0x13, 0x2b, 0x98, 0xeb, 0xed,
+ 0x73, 0x72, 0xa9, 0x05, 0xdb, 0xb6, 0xd5, 0xdf, 0x98, 0x2f, 0x79, 0xe1,
+ 0x25, 0x30, 0xad, 0xd4, 0x3c, 0x0d, 0xed, 0x13, 0xe6, 0x23, 0xf1, 0x0a,
+ 0x2f, 0x65, 0x16, 0x1d, 0x95, 0x98, 0xd4, 0x73, 0xdf, 0x54, 0x13, 0x63,
+ 0x9c, 0xcf, 0x6b, 0x64, 0x78, 0xf3, 0x08, 0x34, 0x7a, 0x9f, 0x68, 0x60,
+ 0xe6, 0x5c, 0x23, 0x48, 0xee, 0x92, 0x9e, 0x91, 0xb4, 0x13, 0x6b, 0x60,
+ 0x48, 0x04, 0x48, 0xf1, 0x01, 0x5f, 0xea, 0x5d, 0x32, 0x8c, 0xda, 0x45,
+ 0x2f, 0x0d, 0x03, 0xdc, 0xe6, 0xb8, 0x68, 0xe0, 0x40, 0x42, 0xc7, 0x65,
+ 0x9e, 0xd3, 0xa4, 0xe8, 0xb4, 0xad, 0xda, 0xd0, 0x4f, 0x05, 0xac, 0x71,
+ 0x07, 0xf0, 0x49, 0x4f, 0x9f, 0x5f, 0x4f, 0x50, 0xe9, 0xc3, 0xd6, 0xab,
+ 0x21, 0xed, 0x66, 0xf2, 0xc0, 0x43, 0x88, 0xf1, 0xfe, 0xe4, 0xd5, 0x75,
+ 0xdc, 0xf1, 0xed, 0xb9, 0xb5, 0xdf, 0xe6, 0xf6, 0xc3, 0xbf, 0xce, 0x64,
+ 0x2b, 0xfd, 0x52, 0xc3, 0x6e, 0x3f, 0xa1, 0x1c, 0x5b, 0xbb, 0xf0, 0x3f,
+ 0xde, 0xb2, 0x5b, 0x48, 0x32, 0x0b, 0x60, 0x0e, 0x1c, 0x92, 0x9d, 0x3a,
+ 0x7a, 0xd6, 0x1b, 0xb5, 0xc8, 0xa6, 0xc6, 0x18, 0xfa, 0x4c, 0x21, 0xe2,
+ 0x7f, 0xe8, 0x95, 0x61, 0x9d, 0x47, 0x1d, 0xee, 0x1e, 0x85, 0xe2, 0x7f,
+ 0x75, 0xc7, 0x69, 0xfb, 0x9d, 0xb5, 0x62, 0xbb, 0x18, 0xf6, 0x98, 0x50,
+ 0x34, 0xbf, 0xb8, 0x04, 0x79, 0xa4, 0xa7, 0xa5, 0x73, 0xe9, 0xb9, 0xa0,
+ 0xe4, 0x54, 0xdb, 0x3b, 0x07, 0x90, 0x26, 0x7f, 0xac, 0x8d, 0xf6, 0x91,
+ 0xe9, 0x7a, 0x5f, 0x6b, 0xc8, 0xf4, 0xf8, 0xf4, 0xbd, 0x47, 0xed, 0xff,
+ 0x00, 0xaa, 0x9f, 0xc5, 0x72, 0xac, 0x75, 0x95, 0x6b, 0x5b, 0xdd, 0x59,
+ 0xee, 0x1a, 0x74, 0x44, 0xfd, 0xa1, 0x97, 0x1b, 0x7d, 0x5f, 0x3d, 0xdb,
+ 0x5b, 0xbb, 0xef, 0x84, 0x94, 0xf5, 0xdd, 0x61, 0xee, 0x6f, 0x4b, 0x0f,
+ 0x01, 0xce, 0x2e, 0xb1, 0xac, 0x01, 0x80, 0x39, 0xd1, 0xab, 0x8e, 0x87,
+ 0xe0, 0xb2, 0x46, 0xe7, 0x00, 0x63, 0x68, 0xd0, 0xed, 0x73, 0x0b, 0x0a,
+ 0xd4, 0xfa, 0xc2, 0xe8, 0xc5, 0xc4, 0xa4, 0x1e, 0x5e, 0x5d, 0x06, 0x3b,
+ 0x37, 0xfd, 0xab, 0x33, 0x6d, 0xdb, 0x5a, 0x20, 0x96, 0xb4, 0x4c, 0x73,
+ 0xfd, 0xe9, 0x29, 0x5b, 0x5d, 0x26, 0x64, 0x40, 0xd3, 0x53, 0x13, 0xf3,
+ 0x0e, 0x4d, 0xe9, 0xcb, 0x39, 0x04, 0x78, 0xe8, 0x48, 0x1f, 0x2d, 0xa8,
+ 0x8c, 0xae, 0xf1, 0xa3, 0x81, 0x20, 0xe9, 0xe3, 0x08, 0x77, 0x00, 0xcd,
+ 0xd2, 0xdd, 0x67, 0xda, 0x01, 0x8d, 0x12, 0x53, 0x52, 0xfa, 0x4c, 0x4f,
+ 0xf7, 0xff, 0x00, 0xb5, 0x56, 0x66, 0x23, 0x9f, 0x76, 0xd3, 0xfb, 0xae,
+ 0x27, 0xfc, 0xd2, 0xae, 0x17, 0x0b, 0x25, 0xaf, 0x69, 0xdb, 0xe7, 0x07,
+ 0x40, 0x9b, 0x0e, 0x91, 0xf6, 0xb9, 0x6f, 0x1b, 0x48, 0x3c, 0xf7, 0x49,
+ 0x4e, 0xd6, 0x3d, 0x26, 0xbc, 0x06, 0x63, 0xd4, 0xe2, 0x0d, 0xad, 0x02,
+ 0xd7, 0x71, 0xa3, 0x46, 0xd3, 0xfc, 0x51, 0xea, 0x63, 0x69, 0x2d, 0xaa,
+ 0xa0, 0xd0, 0x63, 0xfc, 0xd6, 0xf9, 0x0f, 0x34, 0x2b, 0x5d, 0x4f, 0xec,
+ 0xe2, 0xd7, 0x5d, 0xe9, 0x3d, 0xaf, 0x87, 0x99, 0x88, 0x61, 0xf7, 0x7e,
+ 0x28, 0x54, 0xe4, 0x63, 0x58, 0x3e, 0xcf, 0x89, 0xb8, 0xbe, 0xcf, 0xe7,
+ 0x2c, 0x68, 0x26, 0x3c, 0xb7, 0x78, 0xfe, 0x44, 0x94, 0xd8, 0x13, 0x9b,
+ 0x7f, 0xa6, 0xdf, 0xe6, 0xab, 0xe7, 0xc2, 0x51, 0xb3, 0x1a, 0xc6, 0x63,
+ 0x16, 0x18, 0x01, 0xda, 0x42, 0x95, 0x25, 0x8d, 0x6e, 0xca, 0xdb, 0xb4,
+ 0x33, 0x86, 0xca, 0x10, 0xdd, 0x6e, 0x44, 0x9e, 0x1b, 0xdb, 0xb2, 0x4a,
+ 0x64, 0xca, 0x08, 0x63, 0x75, 0xd4, 0x77, 0x55, 0x73, 0x69, 0xb6, 0xdc,
+ 0xb0, 0x46, 0x8d, 0x6d, 0x67, 0x69, 0x98, 0xf7, 0x48, 0xdd, 0xf8, 0x2d,
+ 0x1b, 0x49, 0x3a, 0x37, 0xc1, 0x52, 0xc9, 0x02, 0xc7, 0xd7, 0x49, 0x01,
+ 0xe6, 0x77, 0x44, 0xed, 0x3e, 0xdf, 0xf7, 0xa4, 0xa6, 0xad, 0xb5, 0x16,
+ 0xdd, 0x54, 0x8d, 0x5d, 0xb4, 0xfe, 0x2a, 0xd7, 0x58, 0x2e, 0xa9, 0xcc,
+ 0xb7, 0x74, 0x34, 0xb6, 0x08, 0xf3, 0x9e, 0x14, 0x72, 0x43, 0x7d, 0x7c,
+ 0x68, 0xee, 0xd3, 0xa7, 0xc0, 0xa3, 0x75, 0x71, 0xbf, 0x16, 0x07, 0x68,
+ 0xd1, 0x25, 0x38, 0x78, 0xd1, 0x07, 0x59, 0x82, 0x35, 0xf9, 0xf0, 0xb7,
+ 0x6a, 0x0d, 0x2f, 0x6b, 0x00, 0x82, 0x3b, 0x78, 0x2c, 0x4a, 0x49, 0xda,
+ 0xd0, 0x00, 0x2e, 0x2f, 0x6c, 0x98, 0xee, 0x1c, 0x49, 0x5b, 0x95, 0x39,
+ 0xc5, 0xe0, 0x71, 0x03, 0x52, 0x52, 0x53, 0xcb, 0x74, 0xab, 0x89, 0xea,
+ 0x39, 0xb9, 0x32, 0x21, 0xd6, 0x3c, 0x92, 0x79, 0x20, 0xb8, 0x98, 0x0b,
+ 0xab, 0xa6, 0xdd, 0xcd, 0x7c, 0x68, 0xd6, 0xb9, 0xad, 0x03, 0xe2, 0xd0,
+ 0xef, 0xe2, 0xb9, 0x0e, 0x82, 0x6a, 0x2e, 0xb5, 0xcf, 0x66, 0xf7, 0x59,
+ 0x61, 0x15, 0x9e, 0xcd, 0x77, 0x32, 0xba, 0xf6, 0x35, 0xbb, 0x48, 0x60,
+ 0x90, 0xdb, 0x61, 0xc0, 0x78, 0x80, 0xd6, 0x94, 0x94, 0xc6, 0xdb, 0x7f,
+ 0x58, 0x75, 0x7d, 0xf6, 0xee, 0x9f, 0x2d, 0xc1, 0xab, 0x4f, 0x06, 0xc0,
+ 0x1b, 0xb0, 0xf2, 0x76, 0xb6, 0x7f, 0x27, 0xe5, 0x59, 0xbb, 0x03, 0xee,
+ 0x73, 0xbb, 0xc0, 0x04, 0xf9, 0x02, 0x4a, 0xb9, 0x89, 0x53, 0xad, 0x97,
+ 0x4c, 0x06, 0xbd, 0x93, 0xdb, 0xce, 0x52, 0x53, 0x63, 0xa8, 0xb1, 0xce,
+ 0xbe, 0xa6, 0xb7, 0x57, 0x76, 0x9f, 0x15, 0x7b, 0x10, 0x6e, 0xa0, 0xeb,
+ 0x3a, 0x39, 0xb1, 0xf2, 0x54, 0x2f, 0x3f, 0xae, 0x81, 0xf9, 0xec, 0x68,
+ 0x3f, 0x74, 0xab, 0xd8, 0x01, 0xfe, 0x81, 0x2d, 0x12, 0x43, 0x9f, 0xcf,
+ 0x70, 0x52, 0x53, 0x5b, 0x24, 0xc3, 0xd8, 0xd0, 0x38, 0xdb, 0x20, 0x78,
+ 0xf2, 0xa9, 0xbe, 0x3f, 0x6e, 0x39, 0xff, 0x00, 0xf0, 0x7a, 0x7f, 0x68,
+ 0x93, 0xfc, 0x15, 0x9c, 0xe7, 0x58, 0xc7, 0xd1, 0xb4, 0x6d, 0xb0, 0xbd,
+ 0x85, 0xfb, 0xb5, 0xd0, 0xb8, 0x48, 0xfb, 0x95, 0x67, 0x82, 0x3a, 0xbb,
+ 0x87, 0x60, 0x18, 0xd1, 0xf2, 0x0e, 0x29, 0x29, 0xdd, 0xc2, 0xf6, 0xe2,
+ 0x34, 0x9d, 0x0f, 0xb8, 0x91, 0xf3, 0x2b, 0x27, 0xab, 0x3c, 0xfd, 0xa0,
+ 0x1f, 0x03, 0xa2, 0xbf, 0x4d, 0xe1, 0x98, 0x6d, 0x03, 0x57, 0x00, 0xed,
+ 0x3e, 0x24, 0xac, 0xce, 0xa7, 0xad, 0xe3, 0x59, 0x1b, 0x52, 0x53, 0x4b,
+ 0x32, 0xd3, 0x55, 0x14, 0x30, 0x0f, 0x77, 0xa8, 0x09, 0x70, 0xe2, 0x47,
+ 0x65, 0x8d, 0xd6, 0x2b, 0xae, 0xdc, 0xe0, 0xe7, 0x12, 0x26, 0xa6, 0x44,
+ 0x89, 0x1d, 0xd6, 0xb7, 0x50, 0x61, 0x34, 0xd0, 0x07, 0x67, 0x17, 0x9f,
+ 0x38, 0x69, 0x59, 0xd9, 0x41, 0x8e, 0xbc, 0x36, 0xc6, 0x90, 0x45, 0x75,
+ 0xc3, 0xbc, 0x25, 0xb3, 0xaa, 0x4a, 0x73, 0x1f, 0x8e, 0xc6, 0xea, 0xc7,
+ 0xcf, 0x6d, 0xb3, 0x07, 0xf0, 0x44, 0xc0, 0x63, 0x8e, 0x58, 0x0e, 0xdd,
+ 0xa0, 0x27, 0x58, 0x20, 0xc2, 0x39, 0x63, 0x41, 0xda, 0x0f, 0x3a, 0x82,
+ 0x40, 0x29, 0xb1, 0x6b, 0x8c, 0x96, 0x3a, 0x34, 0x27, 0xf1, 0x49, 0x4f,
+ 0x49, 0x82, 0xd6, 0x6f, 0xad, 0xa7, 0x92, 0xe8, 0x8f, 0x05, 0x63, 0x2f,
+ 0x22, 0xc6, 0x7b, 0x40, 0x0e, 0x69, 0xfa, 0x41, 0xc3, 0xf3, 0x48, 0x77,
+ 0x1f, 0x35, 0x57, 0x19, 0xc4, 0x3a, 0xa7, 0x18, 0x10, 0x65, 0x17, 0x22,
+ 0xc6, 0xb9, 0xe0, 0x8d, 0x67, 0x43, 0xf2, 0x94, 0x94, 0xf3, 0x3f, 0x58,
+ 0x18, 0xea, 0x6a, 0xae, 0xfa, 0x8c, 0x36, 0xdb, 0x0b, 0x1c, 0xcf, 0x1d,
+ 0xad, 0x0e, 0x59, 0x36, 0xec, 0x35, 0x35, 0xc1, 0xc0, 0x78, 0xb4, 0xad,
+ 0xaf, 0xac, 0x8f, 0x07, 0x07, 0x15, 0xbc, 0x93, 0x75, 0xae, 0x9e, 0xe0,
+ 0x00, 0xd0, 0xb0, 0xed, 0xda, 0xea, 0x9b, 0xc1, 0x70, 0x8d, 0x7f, 0x81,
+ 0x49, 0x4a, 0x69, 0x89, 0x77, 0x6e, 0xd0, 0x9d, 0xef, 0x03, 0x47, 0x6a,
+ 0xd3, 0xce, 0x9f, 0xdc, 0xa2, 0x08, 0x78, 0xd7, 0xda, 0x52, 0xb2, 0xad,
+ 0xfc, 0x1d, 0x42, 0x4a, 0x6c, 0x51, 0x8d, 0xf6, 0x86, 0xd8, 0xe6, 0x80,
+ 0x1b, 0x53, 0x77, 0x3a, 0x4f, 0x20, 0xf8, 0x20, 0xfa, 0x34, 0x6e, 0x8d,
+ 0x67, 0xc3, 0xba, 0x55, 0x35, 0xec, 0xd6, 0x75, 0x0a, 0x5e, 0xb0, 0xdd,
+ 0xbf, 0x6f, 0xba, 0x21, 0x25, 0x3d, 0x0f, 0xd6, 0x86, 0xdd, 0xf6, 0xbc,
+ 0x6f, 0x4c, 0x02, 0xc6, 0xd4, 0x64, 0x03, 0xc9, 0x9d, 0x56, 0x6b, 0x2c,
+ 0xb8, 0x11, 0xba, 0xa7, 0x37, 0x5e, 0xdc, 0x2d, 0x5e, 0xa8, 0xc0, 0xfc,
+ 0x9a, 0xea, 0x3c, 0x86, 0xe8, 0x09, 0xe3, 0x71, 0x95, 0x06, 0x63, 0xb2,
+ 0x3c, 0xcf, 0x79, 0x49, 0x4d, 0x56, 0xe7, 0x41, 0x87, 0x48, 0x1d, 0x89,
+ 0xd5, 0x42, 0xcc, 0xaa, 0x5d, 0x32, 0x07, 0x1a, 0x47, 0x9a, 0xb6, 0x71,
+ 0xdc, 0xe2, 0xed, 0xe4, 0x08, 0xe3, 0xc4, 0xa8, 0x3b, 0x11, 0xae, 0x11,
+ 0xb5, 0xa4, 0xf9, 0x81, 0x29, 0x29, 0xcd, 0x79, 0x63, 0xdc, 0x0c, 0x00,
+ 0x0f, 0x87, 0x0a, 0xc7, 0x4f, 0x6b, 0x4d, 0xee, 0x2c, 0x1a, 0x06, 0xcf,
+ 0xe2, 0x88, 0xec, 0x1a, 0xdd, 0xa3, 0x98, 0x01, 0xf1, 0x6c, 0x85, 0x67,
+ 0xa6, 0xe2, 0xb6, 0x97, 0xd8, 0x5b, 0x31, 0xa0, 0x20, 0xeb, 0xc6, 0xa9,
+ 0x29, 0x97, 0xd9, 0xd9, 0x6b, 0xae, 0x2f, 0x6b, 0x5c, 0xc6, 0x58, 0x0f,
+ 0xbb, 0x81, 0x02, 0x27, 0x5f, 0x8a, 0xbf, 0x8d, 0xe9, 0x16, 0x86, 0x56,
+ 0xf0, 0xd6, 0xf8, 0x35, 0xba, 0xaa, 0x74, 0xbe, 0xa7, 0xba, 0xd6, 0x3b,
+ 0xc4, 0x9d, 0x34, 0x9d, 0x55, 0xec, 0x59, 0x10, 0x18, 0x1a, 0xd1, 0xf8,
+ 0xa4, 0xa5, 0x5d, 0x58, 0xa5, 0x87, 0xd2, 0x9d, 0x79, 0x25, 0x2c, 0x7a,
+ 0xe1, 0xa5, 0xc0, 0xf3, 0xac, 0xa2, 0xda, 0xdf, 0x53, 0xc4, 0xce, 0x84,
+ 0x25, 0xb3, 0x60, 0x90, 0x23, 0xc8, 0xa4, 0xa6, 0x0e, 0x13, 0xc4, 0xca,
+ 0xce, 0xca, 0xb2, 0x33, 0x9a, 0xd2, 0x40, 0x15, 0xd4, 0x49, 0x3e, 0x6f,
+ 0x77, 0xf7, 0x35, 0x68, 0x17, 0x3b, 0x69, 0x77, 0x66, 0x8d, 0x57, 0x30,
+ 0xdc, 0x87, 0x65, 0xe6, 0xe4, 0x64, 0x3a, 0x7e, 0xce, 0xd7, 0x06, 0x8d,
+ 0xbf, 0x4a, 0xc2, 0x04, 0x06, 0x35, 0x25, 0x3b, 0x35, 0x7e, 0x97, 0x22,
+ 0xa2, 0x35, 0x15, 0xd6, 0x49, 0xd6, 0x7e, 0x93, 0xb4, 0xfc, 0x8a, 0xee,
+ 0x4d, 0x5e, 0xae, 0x3d, 0x8c, 0xfc, 0xe7, 0x30, 0x90, 0x7b, 0xc8, 0xd5,
+ 0x50, 0xe9, 0xd5, 0x3e, 0x86, 0x9b, 0x6f, 0x1e, 0xeb, 0x0c, 0x91, 0xd8,
+ 0x78, 0x34, 0x4f, 0x80, 0x5a, 0x01, 0xfb, 0x8b, 0x5e, 0xed, 0x37, 0x0d,
+ 0x5a, 0xdd, 0x4c, 0x04, 0x94, 0xe2, 0x62, 0x6d, 0xb3, 0xde, 0x34, 0xd4,
+ 0x49, 0x3a, 0x71, 0x12, 0x56, 0x91, 0x2d, 0x65, 0x36, 0x3c, 0xf6, 0x6b,
+ 0xdc, 0x7e, 0x4d, 0x2a, 0x96, 0x26, 0xda, 0xde, 0xea, 0xf6, 0x92, 0x1a,
+ 0x4c, 0xcf, 0xc4, 0xf6, 0x28, 0xd9, 0x85, 0xad, 0xc0, 0xca, 0x03, 0x57,
+ 0xfa, 0x36, 0x11, 0xfe, 0x69, 0x09, 0x29, 0xe7, 0xbe, 0xad, 0x5a, 0xc2,
+ 0x1f, 0x44, 0xc5, 0xa1, 0xc2, 0xd1, 0xe6, 0xd0, 0x0c, 0xfd, 0xcb, 0xb2,
+ 0x63, 0x62, 0x0f, 0x01, 0xf7, 0x49, 0x1d, 0xf5, 0x2b, 0x80, 0xe8, 0x04,
+ 0x8e, 0xa0, 0x1a, 0xd7, 0x16, 0x39, 0xec, 0x73, 0x5a, 0x40, 0x9f, 0x02,
+ 0x79, 0xf2, 0x0b, 0xd0, 0xdc, 0xf6, 0x83, 0x53, 0x3c, 0x5c, 0x7f, 0xe8,
+ 0x94, 0x94, 0x8e, 0xb6, 0x6e, 0x36, 0x90, 0xee, 0x06, 0x9f, 0x91, 0x5f,
+ 0xc1, 0x35, 0xb3, 0x1d, 0x9b, 0xbe, 0x93, 0xde, 0x01, 0x1d, 0xfb, 0x00,
+ 0xb3, 0xad, 0x70, 0x68, 0x7c, 0x7e, 0x74, 0xc0, 0x08, 0xd8, 0x6f, 0x78,
+ 0xba, 0x96, 0xfe, 0x68, 0x76, 0xa3, 0xc9, 0x25, 0x26, 0x73, 0xc5, 0xb9,
+ 0xf6, 0x39, 0xa6, 0x0e, 0xd0, 0x1a, 0x4e, 0x9a, 0x44, 0x4a, 0xd2, 0xc2,
+ 0xa9, 0xf5, 0xbe, 0x77, 0x1d, 0x82, 0xb7, 0x7b, 0x3b, 0x6e, 0xde, 0x75,
+ 0x59, 0x16, 0xfb, 0x7a, 0x85, 0xae, 0x69, 0xe0, 0x86, 0xc7, 0xc4, 0x85,
+ 0xb5, 0x87, 0xb5, 0xb4, 0xee, 0xe5, 0xc4, 0x10, 0x7f, 0xce, 0x27, 0xf8,
+ 0xa4, 0xa7, 0x37, 0xaa, 0xba, 0xb7, 0x5d, 0x8f, 0x6b, 0xc8, 0x6b, 0x5a,
+ 0xf1, 0xee, 0xf3, 0x32, 0xd1, 0xf9, 0x50, 0x1e, 0xef, 0xf2, 0xa1, 0x9e,
+ 0xef, 0x20, 0xfc, 0x81, 0x56, 0xb2, 0xdb, 0xea, 0xbd, 0xad, 0x89, 0x1b,
+ 0x83, 0x87, 0xe5, 0x54, 0x64, 0x33, 0xa8, 0xb4, 0xf8, 0xea, 0xe3, 0xe6,
+ 0xe1, 0xaa, 0x4a, 0x75, 0x58, 0xfd, 0xb4, 0xcf, 0x66, 0x81, 0x3e, 0x6b,
+ 0x3b, 0xa9, 0x3c, 0xb9, 0xc2, 0xc0, 0x00, 0x71, 0x04, 0x34, 0x1f, 0x33,
+ 0x0a, 0xe6, 0x66, 0x56, 0x37, 0x4f, 0xe9, 0xe7, 0x2a, 0xf3, 0x0c, 0x1b,
+ 0x74, 0x1a, 0xb8, 0x97, 0x76, 0x0b, 0x96, 0xb3, 0xeb, 0x05, 0xf9, 0x96,
+ 0x07, 0x57, 0x50, 0xaf, 0x1d, 0x9c, 0x13, 0xab, 0x8e, 0xb2, 0x25, 0x25,
+ 0x3a, 0x3d, 0x45, 0xe2, 0xb3, 0x43, 0x4e, 0xb2, 0x5c, 0xd2, 0x3f, 0xb2,
+ 0xa9, 0x65, 0xd7, 0x5b, 0xf2, 0xcb, 0xc8, 0xf7, 0x6d, 0x60, 0x90, 0x60,
+ 0x88, 0x68, 0xf0, 0x56, 0x3e, 0xd0, 0xcc, 0xd6, 0xb4, 0x97, 0x9d, 0xed,
+ 0xd4, 0x08, 0x04, 0x70, 0xa0, 0xec, 0x77, 0x3c, 0x8d, 0x66, 0xc6, 0x73,
+ 0xc1, 0x90, 0x92, 0x9a, 0x8e, 0xc7, 0xd8, 0x37, 0x35, 0xef, 0xf2, 0xe0,
+ 0x80, 0xa3, 0x8a, 0x2c, 0xfb, 0x5d, 0x63, 0x70, 0x73, 0x64, 0x9e, 0x20,
+ 0xcc, 0x29, 0xda, 0x2c, 0xa5, 0xbb, 0xee, 0x79, 0x15, 0xcf, 0x31, 0xa6,
+ 0xbf, 0x09, 0x4b, 0x1f, 0x6b, 0xb2, 0x2a, 0x2d, 0x32, 0xdd, 0x75, 0x1a,
+ 0x8e, 0x3c, 0x42, 0x4a, 0x76, 0xf1, 0xdb, 0xba, 0xc6, 0x83, 0xc0, 0x06,
+ 0x62, 0x12, 0xc9, 0x6b, 0x59, 0x68, 0xad, 0xa6, 0x09, 0x1b, 0x80, 0x3f,
+ 0xeb, 0xe6, 0xa7, 0x82, 0x07, 0xac, 0x5d, 0xb4, 0x18, 0x6f, 0x24, 0x79,
+ 0x84, 0xd9, 0x7e, 0x9b, 0xb3, 0x5a, 0x75, 0x10, 0xc3, 0x23, 0xe6, 0x12,
+ 0x53, 0x83, 0xf5, 0x8f, 0x15, 0xfe, 0x96, 0x14, 0x4b, 0x9a, 0x3d, 0x47,
+ 0x18, 0xf3, 0x23, 0x55, 0x8b, 0xe8, 0x1d, 0xa4, 0x1e, 0xde, 0x21, 0x74,
+ 0x1f, 0x5a, 0x1e, 0x43, 0xf0, 0x45, 0x33, 0xa5, 0x6f, 0x76, 0x87, 0x5d,
+ 0x48, 0x0b, 0x28, 0x5d, 0x77, 0x79, 0x23, 0xc0, 0x89, 0xfc, 0xb2, 0x92,
+ 0x9a, 0x46, 0x97, 0x33, 0x91, 0xa1, 0xe3, 0xc1, 0x2d, 0x5a, 0x38, 0x57,
+ 0x6c, 0xb5, 0xa5, 0xa5, 0xa5, 0xad, 0x23, 0xbc, 0x08, 0x3a, 0xa0, 0x96,
+ 0xd2, 0x5a, 0x76, 0xcf, 0xc8, 0xcf, 0xe5, 0x84, 0x94, 0x89, 0xaf, 0x23,
+ 0x9d, 0x7c, 0x8a, 0x96, 0xf6, 0x44, 0xec, 0xf9, 0xa4, 0xc6, 0x89, 0xe6,
+ 0x47, 0x79, 0x46, 0xf4, 0x59, 0xf4, 0xb6, 0x08, 0xe3, 0x6e, 0xf1, 0x09,
+ 0x29, 0xd1, 0xea, 0x39, 0xd5, 0xe4, 0x75, 0x37, 0xba, 0xa2, 0x76, 0xd6,
+ 0x03, 0x01, 0xec, 0x76, 0xf2, 0x42, 0x93, 0x2f, 0x04, 0x7d, 0x25, 0x5e,
+ 0xbc, 0x6b, 0xea, 0xbd, 0xcc, 0x7d, 0x0f, 0x20, 0xb8, 0xc1, 0xdb, 0xed,
+ 0x89, 0xf1, 0x0a, 0xe3, 0xaa, 0xda, 0x5a, 0xd3, 0x59, 0x69, 0x77, 0x88,
+ 0x20, 0xa4, 0xa5, 0x38, 0xbe, 0x00, 0xe5, 0x41, 0xce, 0xb0, 0x98, 0x7b,
+ 0x51, 0xeb, 0x80, 0x3b, 0x8d, 0xba, 0x47, 0x79, 0x4e, 0x43, 0x62, 0x05,
+ 0x85, 0xbe, 0x20, 0x84, 0x94, 0x80, 0xc9, 0xd4, 0x7d, 0xc5, 0x5e, 0xe9,
+ 0xad, 0x36, 0x57, 0x63, 0x9e, 0x03, 0x43, 0x64, 0x9f, 0x93, 0x55, 0x27,
+ 0xc3, 0x64, 0xee, 0x07, 0xc0, 0xa2, 0xe1, 0xd8, 0xef, 0x49, 0xcc, 0x99,
+ 0xdc, 0x1d, 0x3e, 0x1a, 0xc3, 0x52, 0x53, 0x57, 0x1a, 0xe6, 0xb6, 0xe7,
+ 0x97, 0x6a, 0x09, 0x26, 0x07, 0x31, 0x3f, 0xec, 0x5a, 0x43, 0x21, 0x80,
+ 0x0f, 0x46, 0x35, 0xfc, 0xd7, 0x0d, 0x42, 0xcb, 0xc1, 0x63, 0x41, 0x7e,
+ 0xfd, 0x5c, 0xe9, 0x01, 0xff, 0x00, 0xd5, 0xd6, 0x3f, 0x15, 0x71, 0xa7,
+ 0x79, 0xec, 0xf2, 0x0f, 0xb5, 0xc7, 0x94, 0x94, 0xde, 0xab, 0x79, 0x3b,
+ 0x9c, 0x20, 0xf0, 0x08, 0x32, 0x14, 0xde, 0xc7, 0x96, 0xc4, 0x93, 0xe2,
+ 0x65, 0x42, 0xa2, 0xeb, 0x58, 0x37, 0x37, 0x6f, 0xcc, 0x27, 0xb0, 0xb8,
+ 0x68, 0x4c, 0x0f, 0x88, 0x49, 0x4e, 0x7f, 0x5a, 0xcc, 0xfb, 0x26, 0x2b,
+ 0x69, 0xac, 0xfe, 0x9e, 0xff, 0x00, 0x65, 0x60, 0x19, 0x3a, 0xf7, 0xf9,
+ 0x26, 0xc2, 0xc1, 0xaa, 0x9a, 0xeb, 0x66, 0xd2, 0xd2, 0xc0, 0x00, 0x23,
+ 0xf1, 0x2b, 0x2f, 0xab, 0x1b, 0x07, 0x55, 0xc6, 0xc9, 0x0c, 0x36, 0x86,
+ 0x07, 0x6f, 0x13, 0xc3, 0x01, 0x1c, 0x2d, 0x8c, 0x5b, 0x30, 0xf2, 0x75,
+ 0xa6, 0xcf, 0x77, 0x3b, 0x1c, 0x61, 0xc9, 0x29, 0xb7, 0xe9, 0xd0, 0xd3,
+ 0x2e, 0xd4, 0x8e, 0x24, 0xca, 0x06, 0x69, 0x2d, 0xc5, 0x75, 0x95, 0x8d,
+ 0xcf, 0x00, 0xed, 0x04, 0xed, 0xfc, 0x88, 0x8d, 0x00, 0x11, 0x32, 0xab,
+ 0xf5, 0x27, 0x13, 0x4b, 0x88, 0x90, 0xc0, 0x23, 0xe3, 0x3a, 0x24, 0xa6,
+ 0xad, 0x36, 0x59, 0xe9, 0x3d, 0xe0, 0x02, 0xf6, 0x33, 0xda, 0xe2, 0x39,
+ 0x24, 0xf7, 0x51, 0xea, 0x0e, 0xb1, 0xdd, 0x2a, 0xfd, 0xc3, 0xde, 0x68,
+ 0x20, 0x86, 0xf7, 0x73, 0x8c, 0x42, 0x9e, 0x31, 0xda, 0xf2, 0xd8, 0xfd,
+ 0x18, 0x6c, 0x9f, 0x19, 0x1f, 0xee, 0x4b, 0x65, 0x79, 0x38, 0x45, 0x97,
+ 0x82, 0x1b, 0x68, 0x0d, 0x73, 0x64, 0x83, 0x13, 0xba, 0x24, 0x78, 0xc2,
+ 0x4a, 0x79, 0xbe, 0x89, 0x89, 0x6b, 0x7a, 0x8d, 0x5e, 0xa4, 0x32, 0x64,
+ 0x6d, 0xdc, 0x37, 0xea, 0x23, 0xe8, 0x8d, 0x42, 0xee, 0x40, 0x73, 0x6f,
+ 0xa8, 0x9e, 0x35, 0xe3, 0x50, 0xb9, 0xcc, 0x2a, 0xb0, 0x6a, 0xce, 0xc7,
+ 0x6e, 0x2b, 0x20, 0x35, 0xc4, 0xee, 0x8d, 0x49, 0x91, 0xc9, 0x26, 0x57,
+ 0x44, 0xe7, 0xb4, 0x5f, 0x5b, 0x24, 0x07, 0x6d, 0x2e, 0x03, 0xcb, 0x4e,
+ 0xc9, 0x29, 0x8d, 0xd2, 0xe0, 0xd0, 0x3c, 0x48, 0x47, 0xa4, 0x8a, 0xef,
+ 0x61, 0x1a, 0xea, 0xa9, 0x5a, 0xff, 0x00, 0x7b, 0x18, 0xd3, 0xa8, 0x78,
+ 0xdc, 0x3c, 0x37, 0x09, 0x56, 0xf7, 0x0f, 0x59, 0xa4, 0x73, 0x3a, 0xc7,
+ 0x12, 0x92, 0x99, 0x31, 0xe1, 0xf9, 0xaf, 0xe4, 0x07, 0x39, 0x90, 0x7e,
+ 0x30, 0x57, 0x41, 0x45, 0x61, 0xac, 0x9f, 0x12, 0x41, 0x1f, 0x35, 0xcd,
+ 0xe3, 0x92, 0x72, 0x6c, 0x3f, 0xcb, 0x64, 0xfc, 0x02, 0xe8, 0x31, 0x9c,
+ 0x6c, 0xc7, 0x0f, 0x69, 0x82, 0x0c, 0x9f, 0x31, 0xaa, 0x4a, 0x45, 0x7e,
+ 0xdf, 0x58, 0x03, 0x00, 0x6e, 0xd3, 0xe4, 0x16, 0x4d, 0x24, 0x3f, 0x3b,
+ 0x7f, 0xd2, 0x87, 0x3a, 0x01, 0xf8, 0x94, 0x77, 0xe4, 0x87, 0xe6, 0xb2,
+ 0x93, 0xa1, 0x2f, 0x24, 0x7c, 0x27, 0xfd, 0x8a, 0x9e, 0x3b, 0xcb, 0x33,
+ 0x59, 0x07, 0x4d, 0xe4, 0x13, 0x3a, 0x72, 0x7b, 0x24, 0xa4, 0xdf, 0x59,
+ 0x43, 0x5d, 0xd1, 0xa3, 0x8d, 0xb6, 0x56, 0x4e, 0x9d, 0x89, 0x8f, 0xe2,
+ 0xb9, 0xca, 0xa8, 0x63, 0x80, 0x07, 0x46, 0x37, 0x52, 0x38, 0x9f, 0x8a,
+ 0xe8, 0xfa, 0xf4, 0xdb, 0xd2, 0x72, 0x03, 0x47, 0xb8, 0xed, 0xda, 0x38,
+ 0xd4, 0x38, 0x2e, 0x7e, 0x8c, 0x2b, 0x5c, 0xc0, 0xec, 0x82, 0x1a, 0xc1,
+ 0xdb, 0x86, 0xfc, 0xc9, 0x49, 0x4d, 0x9a, 0xf2, 0x29, 0x60, 0x0d, 0xa8,
+ 0x6e, 0x23, 0xb3, 0x78, 0xfb, 0xd2, 0xbe, 0xbe, 0xa1, 0x92, 0xcf, 0xd0,
+ 0x57, 0xb1, 0xe0, 0x1d, 0xaf, 0x0f, 0x87, 0x09, 0xf3, 0x85, 0x4c, 0xf5,
+ 0x1e, 0x9d, 0x8e, 0xed, 0x95, 0x3b, 0xed, 0x36, 0x8d, 0x36, 0xd5, 0xc7,
+ 0xcd, 0xe7, 0x45, 0x4b, 0x3b, 0xaa, 0xf5, 0xe7, 0x30, 0xfa, 0x4d, 0x18,
+ 0xb4, 0x70, 0x4d, 0x64, 0x39, 0xd0, 0x7c, 0x5d, 0xcf, 0xdc, 0x92, 0x9d,
+ 0x5a, 0xf2, 0x4d, 0x4c, 0x15, 0x66, 0x06, 0x87, 0xfd, 0x17, 0x32, 0xc2,
+ 0x1a, 0xe9, 0xf0, 0xf3, 0x46, 0xaf, 0x1f, 0x19, 0x96, 0x07, 0x53, 0x41,
+ 0xa1, 0xda, 0xee, 0xf0, 0x2b, 0x1f, 0xa4, 0xf4, 0x5a, 0x2f, 0x65, 0x79,
+ 0xf9, 0x97, 0x3a, 0xe7, 0x3c, 0x97, 0x0a, 0x8f, 0x1e, 0xd3, 0x1e, 0xe3,
+ 0xc9, 0xe1, 0x6e, 0x12, 0x59, 0x63, 0x63, 0x51, 0xa9, 0x9f, 0x8a, 0x4a,
+ 0x74, 0xf0, 0x03, 0xbd, 0x47, 0xb1, 0xba, 0xcb, 0x47, 0xe5, 0x09, 0x65,
+ 0xd4, 0xef, 0xb4, 0x78, 0x3f, 0x69, 0x3f, 0x2f, 0x14, 0xdd, 0x2a, 0x0d,
+ 0x8e, 0x93, 0x1a, 0x68, 0x78, 0xee, 0x0a, 0x3e, 0x47, 0xbb, 0x28, 0xbe,
+ 0x37, 0x6d, 0x61, 0x04, 0x93, 0x1a, 0x12, 0x12, 0x53, 0xcd, 0x75, 0xa0,
+ 0xe7, 0xdb, 0x8e, 0xd7, 0x34, 0x9f, 0x4e, 0xb3, 0xa8, 0x3e, 0x2e, 0xff,
+ 0x00, 0x62, 0xa2, 0xc9, 0x71, 0x21, 0xa0, 0xb4, 0xb4, 0x72, 0x08, 0x2b,
+ 0x43, 0xeb, 0x0d, 0x4e, 0x76, 0x4e, 0x3b, 0xda, 0x40, 0x1e, 0x89, 0xf7,
+ 0x0d, 0x48, 0x3b, 0x8a, 0xcc, 0x65, 0x6f, 0x24, 0xbb, 0x68, 0xdc, 0x78,
+ 0x70, 0xd0, 0xfc, 0xe1, 0x25, 0x2f, 0x63, 0xc8, 0x78, 0xa8, 0x92, 0x43,
+ 0xf8, 0xd0, 0x14, 0x37, 0xd3, 0xb4, 0x9f, 0x1f, 0xba, 0x51, 0x9d, 0x69,
+ 0x6b, 0x46, 0xea, 0x9b, 0xa7, 0x0e, 0x20, 0x6b, 0xe7, 0xa7, 0xf7, 0x20,
+ 0xb2, 0x77, 0x4b, 0xef, 0x86, 0x38, 0x18, 0x04, 0x06, 0xc7, 0xdc, 0x0a,
+ 0x4a, 0x46, 0x18, 0x58, 0xed, 0x27, 0xc7, 0xef, 0x56, 0x61, 0xde, 0x97,
+ 0xa9, 0x0a, 0x74, 0xd0, 0xdb, 0x1a, 0x40, 0x7b, 0x4d, 0x80, 0xfb, 0x67,
+ 0xe8, 0x91, 0xfd, 0x6f, 0xf6, 0x2b, 0xbf, 0x66, 0x3f, 0x65, 0xf5, 0x36,
+ 0x8d, 0xfc, 0xec, 0x9d, 0x3d, 0x39, 0xe6, 0x7f, 0x14, 0x94, 0xd0, 0x6f,
+ 0x53, 0xea, 0xc2, 0x1d, 0xea, 0x87, 0x47, 0x78, 0x3f, 0xc4, 0x2b, 0x0c,
+ 0xeb, 0x7d, 0x63, 0x66, 0xe2, 0x01, 0x13, 0x04, 0xc2, 0x9d, 0x9f, 0x67,
+ 0x78, 0xd1, 0x92, 0x39, 0x1e, 0xd2, 0x00, 0xfc, 0x10, 0x9c, 0x71, 0x1b,
+ 0x24, 0x93, 0x1c, 0x00, 0xc9, 0x09, 0x29, 0x71, 0xd7, 0xb3, 0x0e, 0x8f,
+ 0xc7, 0x04, 0xf8, 0xc0, 0x48, 0xf5, 0x9d, 0xc7, 0x6b, 0xe8, 0x00, 0x8f,
+ 0x22, 0x9d, 0xb8, 0xd4, 0x58, 0x1a, 0x18, 0xf7, 0xb4, 0xf2, 0x4b, 0xa0,
+ 0xfd, 0xca, 0x26, 0xb6, 0x9d, 0x0d, 0xa4, 0xb4, 0x6b, 0x05, 0xb2, 0x04,
+ 0x24, 0xa6, 0x4e, 0xcd, 0xaa, 0xd1, 0x02, 0x93, 0xf2, 0x24, 0x2b, 0x58,
+ 0x30, 0x4f, 0xb2, 0x41, 0x88, 0x01, 0xc4, 0x15, 0x41, 0xd8, 0xfb, 0x89,
+ 0x8b, 0x1b, 0xa7, 0x00, 0x8d, 0xba, 0x27, 0xac, 0x5d, 0x47, 0xbd, 0xae,
+ 0x86, 0x8e, 0x44, 0xc8, 0x49, 0x4e, 0x8d, 0x14, 0x96, 0xbd, 0xcc, 0x22,
+ 0x60, 0x19, 0x31, 0xde, 0x13, 0xd4, 0x03, 0x8f, 0x01, 0x37, 0x4e, 0xbd,
+ 0xf7, 0x53, 0x68, 0x77, 0xd2, 0x6b, 0xc7, 0xf9, 0xae, 0x07, 0xf8, 0xa2,
+ 0x56, 0x20, 0x03, 0xdd, 0xda, 0x42, 0x4a, 0x6d, 0x81, 0xa0, 0x04, 0xc0,
+ 0x1f, 0x8a, 0x05, 0xef, 0x2c, 0x10, 0xd6, 0xea, 0x74, 0x6c, 0x6a, 0x51,
+ 0x87, 0xb5, 0xba, 0xc9, 0xf1, 0x08, 0x2e, 0xb2, 0xd6, 0x3c, 0xed, 0x68,
+ 0x2f, 0x77, 0x1d, 0xf6, 0x0f, 0x8a, 0x4a, 0x71, 0xaf, 0xaa, 0xdb, 0x7a,
+ 0xa8, 0xa6, 0x9b, 0x7d, 0x3c, 0x9a, 0x6a, 0x05, 0xcc, 0x30, 0x43, 0x83,
+ 0x8c, 0x90, 0x47, 0xdc, 0xaf, 0x55, 0x61, 0xab, 0x4c, 0xaa, 0x5a, 0xd8,
+ 0xd0, 0x5b, 0x58, 0x96, 0xfc, 0xc7, 0x21, 0x66, 0x63, 0xe2, 0x32, 0xde,
+ 0xa7, 0x79, 0x2e, 0x7b, 0x32, 0x2b, 0x74, 0xd5, 0x70, 0xd7, 0x76, 0x9a,
+ 0xeb, 0xe3, 0x2b, 0x76, 0xa2, 0xfb, 0x3d, 0xb6, 0x01, 0xea, 0x8e, 0x48,
+ 0xe1, 0xe3, 0xc4, 0x24, 0xa4, 0xed, 0x97, 0xb5, 0xae, 0x07, 0x70, 0x23,
+ 0x47, 0x37, 0x5d, 0x15, 0x6e, 0xa2, 0x03, 0x68, 0xd8, 0x7f, 0x38, 0xb4,
+ 0x7c, 0xa6, 0x55, 0xca, 0x6b, 0xae, 0xa6, 0xb9, 0xf5, 0x88, 0x9d, 0x5c,
+ 0x06, 0x80, 0xfc, 0x42, 0xa3, 0x98, 0x5d, 0x60, 0x63, 0xc8, 0xda, 0xc2,
+ 0xef, 0x6b, 0x4f, 0x3c, 0x14, 0x94, 0xd6, 0x26, 0xa6, 0x51, 0x6d, 0xee,
+ 0x90, 0x1a, 0xd2, 0x27, 0xc3, 0xdd, 0xb5, 0x0b, 0x27, 0x71, 0xc2, 0x7f,
+ 0xa7, 0x0d, 0x78, 0xb1, 0xa0, 0x17, 0x7b, 0x40, 0x82, 0x79, 0x3d, 0x82,
+ 0xb2, 0x40, 0x76, 0x24, 0x11, 0x3b, 0x80, 0x03, 0xe6, 0x65, 0x2b, 0x89,
+ 0xa9, 0x8c, 0x00, 0xc1, 0x73, 0x8c, 0x48, 0x06, 0x40, 0x04, 0x9e, 0x7c,
+ 0x12, 0x53, 0x95, 0xd3, 0x68, 0xf4, 0x3a, 0xa5, 0x34, 0xbd, 0xc4, 0x90,
+ 0x64, 0x49, 0x9f, 0x39, 0xf9, 0xae, 0x8d, 0xfe, 0x98, 0xcb, 0x0f, 0x71,
+ 0xf7, 0xb6, 0xa2, 0x78, 0xfc, 0xd9, 0x58, 0x78, 0xf7, 0x13, 0xd5, 0x2b,
+ 0xbb, 0x60, 0x7b, 0xdc, 0xdd, 0xc7, 0x69, 0x10, 0x4b, 0xb4, 0x90, 0xb6,
+ 0xdd, 0xf4, 0xb6, 0x39, 0xc5, 0xdf, 0xa3, 0xda, 0x67, 0x93, 0x07, 0xba,
+ 0x4a, 0x69, 0x65, 0x5a, 0x2b, 0x7d, 0x77, 0x7e, 0x6d, 0x8e, 0x61, 0x1f,
+ 0x08, 0xe5, 0x68, 0xe3, 0x56, 0x0b, 0xdc, 0x01, 0x97, 0x5b, 0xbd, 0xd1,
+ 0xe7, 0x1a, 0xaa, 0x19, 0x8c, 0x6b, 0x9f, 0x53, 0x40, 0x07, 0x69, 0xd0,
+ 0x78, 0x40, 0x85, 0x7f, 0xa5, 0x06, 0x8c, 0xd6, 0x39, 0xdc, 0xb5, 0xae,
+ 0x68, 0x3f, 0x14, 0x94, 0x8f, 0x04, 0xb5, 0x95, 0xd9, 0x2e, 0x32, 0x1b,
+ 0x1b, 0xbb, 0xf1, 0x12, 0xb4, 0xac, 0xb2, 0xda, 0xb1, 0xc3, 0x1a, 0xe8,
+ 0x73, 0x9b, 0x5b, 0x1c, 0xef, 0x22, 0x46, 0xef, 0xc1, 0x64, 0xe0, 0xb1,
+ 0xce, 0xc8, 0xbb, 0x77, 0xd0, 0x2e, 0x2c, 0x00, 0x71, 0xc0, 0x2b, 0x5d,
+ 0xd5, 0xb9, 0xac, 0x73, 0x9e, 0x64, 0x3c, 0xd4, 0x1a, 0x3c, 0x23, 0x76,
+ 0xbf, 0x8a, 0x4a, 0x68, 0x65, 0x39, 0xd5, 0xf5, 0x66, 0xec, 0x1e, 0xc0,
+ 0x1f, 0x0e, 0x3c, 0xc8, 0x12, 0x14, 0x71, 0xe9, 0xbd, 0xf7, 0x55, 0x60,
+ 0xa9, 0xc4, 0x07, 0x07, 0x39, 0xc5, 0xba, 0x46, 0xbd, 0xd6, 0xae, 0x0e,
+ 0x2d, 0x2d, 0x63, 0x5d, 0x6c, 0x5d, 0x73, 0x7e, 0x93, 0xcf, 0x8f, 0x1a,
+ 0x02, 0xa5, 0x99, 0x6e, 0xd2, 0xd0, 0x5f, 0xb5, 0x8e, 0x20, 0x10, 0x7c,
+ 0x0e, 0x92, 0x12, 0x53, 0xce, 0x7d, 0x6c, 0xea, 0x99, 0x98, 0x15, 0x54,
+ 0xca, 0x45, 0x7f, 0xa5, 0xfa, 0x3b, 0xa5, 0xce, 0x90, 0x35, 0x3b, 0x7e,
+ 0x8e, 0x8b, 0x98, 0x18, 0x9d, 0x5f, 0xa9, 0xd7, 0xf6, 0x8c, 0x87, 0xbe,
+ 0xf6, 0x34, 0xc6, 0xd9, 0x00, 0x0f, 0x96, 0x80, 0x2e, 0xa3, 0xeb, 0x4e,
+ 0x18, 0xc8, 0xc2, 0x7b, 0xeb, 0x22, 0xcb, 0x31, 0xf5, 0x04, 0x6b, 0xa0,
+ 0x21, 0xce, 0xfc, 0x02, 0xc7, 0xe9, 0x59, 0x4f, 0x9f, 0x41, 0xba, 0xb6,
+ 0xc8, 0xf6, 0x76, 0x3f, 0x14, 0x94, 0xd6, 0xaa, 0x86, 0x51, 0xbc, 0x1c,
+ 0x77, 0xd7, 0xe9, 0x8f, 0x71, 0x77, 0xb9, 0xa3, 0x8f, 0xce, 0x6f, 0xc5,
+ 0x2a, 0xee, 0xa3, 0x21, 0xde, 0x8b, 0x6c, 0x24, 0xbc, 0x10, 0xc6, 0xc1,
+ 0xe4, 0xf0, 0xba, 0x26, 0x66, 0x62, 0x32, 0x8c, 0x8c, 0x2c, 0xeb, 0x2b,
+ 0xa0, 0x86, 0x39, 0x8c, 0xab, 0x6e, 0xd3, 0xb9, 0xe4, 0x79, 0x44, 0x68,
+ 0xb2, 0x70, 0x83, 0xad, 0xca, 0x0c, 0x6b, 0x37, 0x9a, 0xa5, 0xc4, 0x73,
+ 0xb6, 0x3f, 0x73, 0xe2, 0x92, 0x9b, 0x8d, 0x2f, 0xc6, 0xa9, 0x94, 0xb5,
+ 0x8d, 0x73, 0x2b, 0x6c, 0x08, 0x91, 0xc2, 0x7a, 0x32, 0x1d, 0x65, 0x90,
+ 0xe6, 0x6d, 0x11, 0x3c, 0xc8, 0xe4, 0x21, 0x59, 0x90, 0x37, 0x11, 0xb4,
+ 0x82, 0x39, 0x6c, 0xc1, 0x4f, 0x55, 0x8d, 0x7b, 0x8b, 0x99, 0xc6, 0xd8,
+ 0x23, 0xce, 0x52, 0x53, 0xbb, 0xd3, 0x8f, 0xb8, 0x81, 0xac, 0x89, 0x28,
+ 0xd9, 0x4f, 0x2c, 0xb5, 0xdb, 0xa4, 0x7b, 0x38, 0xed, 0x25, 0x57, 0xe9,
+ 0x40, 0x3a, 0xc3, 0xb8, 0xc6, 0x9a, 0x28, 0xe5, 0x0b, 0x3e, 0xd0, 0xea,
+ 0x5d, 0xab, 0x1c, 0x04, 0x4f, 0x89, 0x2e, 0x26, 0x52, 0x53, 0x9d, 0xd4,
+ 0xc0, 0xb2, 0xfa, 0x9a, 0x5c, 0x25, 0xb5, 0x00, 0x46, 0x9e, 0x2e, 0x28,
+ 0x0c, 0xa8, 0x01, 0xa6, 0x9e, 0x44, 0x29, 0xf5, 0x7a, 0x2b, 0xfb, 0x78,
+ 0x05, 0xa3, 0x70, 0xad, 0xba, 0x9f, 0x29, 0x54, 0xfd, 0x00, 0x0c, 0xb5,
+ 0xce, 0x69, 0x3e, 0x04, 0xc0, 0x49, 0x49, 0x6f, 0xa9, 0xd1, 0x03, 0x50,
+ 0x50, 0x83, 0x1a, 0xd6, 0xc3, 0x9b, 0xc7, 0x3a, 0x76, 0x4a, 0x6f, 0x1a,
+ 0x1b, 0x5d, 0x1f, 0xca, 0xf7, 0x7e, 0x54, 0x85, 0xb7, 0x4c, 0x4b, 0x5c,
+ 0x3b, 0x88, 0x8f, 0xc8, 0x92, 0x92, 0xe2, 0x62, 0xb6, 0xdb, 0x07, 0xb7,
+ 0xd9, 0xcb, 0x8f, 0x83, 0x47, 0x3f, 0x7f, 0x0b, 0x5a, 0x34, 0xdf, 0xb4,
+ 0xfc, 0x23, 0x4d, 0xbc, 0x42, 0x86, 0x2d, 0x4e, 0x6d, 0x6d, 0x0e, 0x01,
+ 0xb6, 0x58, 0x03, 0x9f, 0x13, 0xa3, 0x47, 0xd1, 0x1f, 0xc5, 0x68, 0xed,
+ 0x6f, 0xa7, 0xe9, 0x69, 0xba, 0x26, 0x7b, 0xfc, 0x12, 0x53, 0x92, 0xf1,
+ 0x70, 0x6e, 0xc2, 0x74, 0x99, 0x07, 0x59, 0x92, 0xaa, 0xb9, 0x96, 0x3b,
+ 0x56, 0xbb, 0x74, 0x68, 0x20, 0xbb, 0x4f, 0xbd, 0x50, 0x75, 0xfd, 0x5f,
+ 0x24, 0x34, 0x3b, 0x3a, 0xdd, 0xac, 0xfa, 0x3b, 0x88, 0x9f, 0xe0, 0xa7,
+ 0x66, 0x35, 0xe6, 0xc1, 0x6d, 0xb9, 0x16, 0xbd, 0xe0, 0x40, 0x78, 0x71,
+ 0x6c, 0x7c, 0x1b, 0xc2, 0x4a, 0x6f, 0x53, 0x8f, 0x73, 0xdf, 0x04, 0x81,
+ 0xfd, 0x91, 0xba, 0x7e, 0x6a, 0x57, 0x52, 0x6b, 0xe4, 0x73, 0xf4, 0xa5,
+ 0xba, 0x4f, 0xc7, 0x45, 0x41, 0xb7, 0xe7, 0x54, 0x62, 0xab, 0xeb, 0x7f,
+ 0x7d, 0xb6, 0xb4, 0xbb, 0x8f, 0xbd, 0x19, 0xdd, 0x77, 0xa8, 0xd6, 0x76,
+ 0xdd, 0x81, 0x5b, 0xfb, 0x6f, 0xa9, 0xee, 0x60, 0x3f, 0x2d, 0x52, 0x53,
+ 0x27, 0xb4, 0x08, 0x3e, 0x90, 0x3d, 0x87, 0x6f, 0xe2, 0x83, 0x7d, 0xc2,
+ 0xaa, 0x1f, 0x6b, 0xda, 0xed, 0xad, 0x13, 0xb4, 0x12, 0x27, 0xe1, 0xb8,
+ 0x29, 0xd7, 0xd6, 0x5a, 0xe3, 0xbb, 0x2b, 0x0e, 0xe0, 0xdd, 0x48, 0x34,
+ 0xbf, 0x71, 0x1f, 0xe7, 0x14, 0x1e, 0xa7, 0xd6, 0x31, 0x72, 0xf0, 0x9f,
+ 0x8e, 0x2b, 0xb9, 0xae, 0x22, 0x01, 0xb2, 0xb6, 0xf3, 0x3d, 0xdc, 0xd3,
+ 0x29, 0x29, 0x3f, 0x41, 0xcb, 0x6d, 0xd6, 0xdc, 0x1a, 0xc7, 0xb3, 0x70,
+ 0x1a, 0x3a, 0x39, 0x98, 0xe7, 0xe6, 0xb4, 0x68, 0x2f, 0xf5, 0x08, 0x78,
+ 0x82, 0xc3, 0x0b, 0x9e, 0xe9, 0xef, 0xfb, 0x3d, 0x95, 0x3a, 0xb7, 0xd8,
+ 0x0b, 0xcb, 0x5a, 0x43, 0x49, 0x82, 0x27, 0x88, 0x27, 0xc5, 0x74, 0x5b,
+ 0xcb, 0xf2, 0x1c, 0x1c, 0xd8, 0x79, 0xd4, 0x37, 0xe3, 0xaa, 0x4a, 0x6c,
+ 0x03, 0x20, 0xc9, 0x86, 0x8e, 0xca, 0x37, 0x09, 0xae, 0x67, 0x68, 0x3d,
+ 0xd4, 0x8b, 0x1c, 0xd6, 0x11, 0x25, 0xc1, 0x07, 0x22, 0xd1, 0x4e, 0x13,
+ 0x9e, 0xf0, 0x77, 0x4f, 0xb5, 0xbd, 0xf5, 0x49, 0x4d, 0x2e, 0x99, 0x5f,
+ 0xab, 0x7e, 0x5b, 0x0c, 0x8f, 0x78, 0xf4, 0xdd, 0xe3, 0xb4, 0x6a, 0x15,
+ 0xc1, 0x41, 0x63, 0xb4, 0x73, 0xb7, 0x03, 0xa2, 0xab, 0xd2, 0xab, 0xb5,
+ 0xb4, 0x6e, 0x77, 0xd3, 0x73, 0xdc, 0xe9, 0x1d, 0x8f, 0x82, 0xd4, 0x3e,
+ 0xf1, 0x24, 0xc3, 0x87, 0x3e, 0x7e, 0x69, 0x29, 0x93, 0x6c, 0x02, 0xbf,
+ 0xd2, 0xf6, 0xd5, 0xd0, 0xb2, 0xba, 0x86, 0x6b, 0x9d, 0x9a, 0xc6, 0xed,
+ 0x3e, 0x93, 0x1b, 0x22, 0x78, 0x83, 0xe1, 0xe6, 0x56, 0x9d, 0x9b, 0x18,
+ 0xcd, 0x48, 0x83, 0xcc, 0xaa, 0x56, 0x74, 0x97, 0x65, 0x38, 0xb9, 0x99,
+ 0x0c, 0x2e, 0x30, 0x3d, 0x27, 0x02, 0x40, 0x03, 0xb6, 0x89, 0x29, 0x83,
+ 0xaf, 0xa7, 0x68, 0xac, 0x1f, 0x76, 0xe0, 0x00, 0x3a, 0x7d, 0x1f, 0x72,
+ 0x56, 0x4b, 0xea, 0x6d, 0x5a, 0x3a, 0xf7, 0xb5, 0xfe, 0x9e, 0xee, 0x03,
+ 0xc8, 0xd5, 0x45, 0xdd, 0x0f, 0xa8, 0x9b, 0xc5, 0xe5, 0xd5, 0x13, 0x04,
+ 0x16, 0xee, 0xfd, 0xed, 0x7f, 0x39, 0x49, 0x9d, 0x23, 0xa8, 0x7a, 0x8d,
+ 0x36, 0x02, 0xed, 0x83, 0x7b, 0x08, 0x21, 0xc5, 0xdf, 0xd5, 0xda, 0x52,
+ 0x53, 0x9f, 0xd2, 0xe9, 0x7d, 0x7d, 0x48, 0x33, 0xd3, 0x2c, 0x3b, 0x7d,
+ 0xe4, 0xf0, 0x5d, 0xcf, 0xb7, 0xc9, 0x6e, 0xd9, 0x4c, 0x66, 0x17, 0xe9,
+ 0xab, 0x00, 0xf9, 0x0d, 0xd2, 0xaa, 0x63, 0xd1, 0x73, 0x5d, 0x7e, 0x4b,
+ 0xa8, 0x3b, 0xab, 0x25, 0xa5, 0xad, 0x92, 0xf0, 0x47, 0xf2, 0x44, 0xf2,
+ 0xac, 0x7d, 0xb7, 0x71, 0x06, 0xca, 0xad, 0x69, 0x70, 0x8d, 0x58, 0x62,
+ 0x47, 0x9a, 0x4a, 0x47, 0x7d, 0x4d, 0x6b, 0xec, 0x11, 0x0e, 0x78, 0x2f,
+ 0x07, 0xc6, 0x76, 0x83, 0x0a, 0x58, 0xd5, 0xbd, 0x98, 0xc0, 0xb5, 0xc5,
+ 0xa6, 0xb0, 0x3d, 0xe3, 0x9d, 0x1c, 0x3c, 0x53, 0x66, 0x64, 0x35, 0xef,
+ 0x63, 0x6b, 0x69, 0x05, 0x82, 0x1e, 0xe2, 0x08, 0x81, 0xa6, 0x8a, 0x2e,
+ 0xcc, 0xa6, 0xba, 0xfd, 0x37, 0x3c, 0x6d, 0xdb, 0xae, 0xb1, 0xc1, 0xd7,
+ 0x94, 0x94, 0x92, 0x86, 0xda, 0xe1, 0x73, 0x98, 0x48, 0x77, 0xac, 0x08,
+ 0x23, 0xf7, 0x43, 0x80, 0x8f, 0xb9, 0x68, 0x75, 0x0c, 0x97, 0x34, 0x0a,
+ 0xd9, 0x24, 0x00, 0xd9, 0xd3, 0xc2, 0x7b, 0xac, 0xfc, 0x4c, 0x8a, 0xda,
+ 0xdd, 0xa1, 0xc2, 0x1e, 0x66, 0x64, 0x70, 0x8b, 0xd4, 0xb3, 0x03, 0x72,
+ 0x58, 0xd6, 0x43, 0xab, 0x76, 0xdd, 0xc4, 0x11, 0xce, 0x9a, 0xa4, 0xa6,
+ 0xed, 0x4e, 0xf4, 0xc0, 0x02, 0xcd, 0xa1, 0xfe, 0xea, 0xde, 0x46, 0xe6,
+ 0xbc, 0x1d, 0x60, 0xf9, 0x84, 0x3c, 0xe3, 0xa0, 0xde, 0x44, 0x3b, 0xb0,
+ 0x32, 0xd2, 0x0e, 0x92, 0xd9, 0xfc, 0x42, 0x26, 0x33, 0x18, 0x47, 0xa6,
+ 0x3d, 0xcc, 0x71, 0x1e, 0xc2, 0x3b, 0x9f, 0x0f, 0x34, 0x7c, 0xac, 0x46,
+ 0x3e, 0xbf, 0x4e, 0xdf, 0xd1, 0x9e, 0xc3, 0x8d, 0x47, 0x70, 0x92, 0x9e,
+ 0x6f, 0x1b, 0xa5, 0xe3, 0xe0, 0xe6, 0x0c, 0xac, 0x70, 0xed, 0x0e, 0xf7,
+ 0x51, 0xb8, 0xec, 0xb0, 0x38, 0x13, 0x04, 0x1f, 0xed, 0x05, 0x81, 0x98,
+ 0xc1, 0xd3, 0xf3, 0x8b, 0x58, 0x63, 0x1e, 0xdf, 0xd2, 0x63, 0xba, 0x7f,
+ 0x34, 0xfe, 0x61, 0x3f, 0xbc, 0xde, 0x0a, 0xeb, 0x2d, 0xd4, 0x19, 0x10,
+ 0xfa, 0x89, 0x0d, 0x3f, 0xf1, 0x67, 0x70, 0x43, 0xca, 0xe8, 0xb4, 0xf5,
+ 0x6c, 0x6c, 0xa6, 0x63, 0xd4, 0x1d, 0x92, 0xf6, 0x07, 0xd4, 0x74, 0x03,
+ 0xd4, 0x1a, 0x8d, 0x7b, 0x48, 0x49, 0x4f, 0x30, 0xfb, 0xd9, 0x98, 0xe1,
+ 0x4d, 0x3b, 0x8d, 0xee, 0x70, 0x32, 0xf0, 0x0e, 0xd3, 0x3c, 0xef, 0x07,
+ 0x8f, 0x92, 0xdb, 0xc7, 0xa1, 0xb8, 0x56, 0xd7, 0x45, 0xce, 0x22, 0xf7,
+ 0x16, 0xdc, 0xd7, 0x35, 0xa7, 0xdd, 0xa1, 0x04, 0x79, 0x46, 0xa1, 0x36,
+ 0x0f, 0x45, 0xc5, 0xe8, 0xf6, 0xd9, 0x45, 0xb6, 0xb3, 0x2f, 0xaa, 0x5a,
+ 0xc8, 0xf4, 0x2a, 0xd5, 0x95, 0x37, 0xc5, 0xee, 0xf8, 0xab, 0x96, 0xe1,
+ 0xb5, 0xf7, 0x35, 0xc1, 0xc3, 0x7e, 0x30, 0x21, 0xec, 0x1a, 0x34, 0x4b,
+ 0x7d, 0xc0, 0x79, 0x89, 0x49, 0x4d, 0xe7, 0x74, 0xfc, 0x6e, 0xa2, 0xd8,
+ 0xc8, 0x68, 0x6d, 0xa5, 0xb2, 0xdb, 0xdb, 0xa3, 0xc7, 0x87, 0xc7, 0xe6,
+ 0xb0, 0x5d, 0x87, 0x91, 0xd3, 0x72, 0x1f, 0x8d, 0x91, 0xf1, 0x63, 0xbb,
+ 0x3d, 0xa7, 0x87, 0x05, 0xb1, 0x83, 0x98, 0xd7, 0x32, 0x18, 0xed, 0x59,
+ 0x20, 0xeb, 0xc4, 0x7c, 0x55, 0xfd, 0xf8, 0x7d, 0x46, 0xb1, 0x5d, 0xa1,
+ 0x96, 0x16, 0x6a, 0x35, 0x04, 0xee, 0xe3, 0x91, 0xfc, 0x12, 0x53, 0x9d,
+ 0xd3, 0x2c, 0x0d, 0xb3, 0x71, 0xe0, 0x8f, 0xef, 0x50, 0xcc, 0xc8, 0x1f,
+ 0x6c, 0x79, 0x27, 0xda, 0xdd, 0xbf, 0x95, 0x5a, 0xa3, 0xa5, 0xe5, 0xe3,
+ 0x5a, 0x43, 0x9b, 0xba, 0xb9, 0x01, 0x84, 0x6b, 0x31, 0x31, 0x3e, 0x0b,
+ 0x2b, 0x3d, 0xe0, 0xdf, 0x90, 0x20, 0xef, 0x67, 0xd3, 0x69, 0xd0, 0x82,
+ 0x0a, 0x4a, 0x61, 0xd6, 0x25, 0xfd, 0x43, 0x70, 0x98, 0x35, 0xb2, 0x7e,
+ 0xed, 0x74, 0x55, 0x88, 0x80, 0x09, 0x06, 0x4f, 0x07, 0xb7, 0xdf, 0x28,
+ 0x99, 0x52, 0xec, 0x8d, 0xe6, 0x64, 0xb5, 0x9a, 0xfc, 0xbc, 0x54, 0x37,
+ 0x96, 0x82, 0xd6, 0x8e, 0x79, 0x49, 0x48, 0x1c, 0xf7, 0xee, 0xda, 0x3e,
+ 0x9c, 0x68, 0xd8, 0xd7, 0xf8, 0xab, 0x3d, 0x36, 0xa7, 0x64, 0x64, 0x80,
+ 0xf6, 0xfe, 0x8d, 0x83, 0x73, 0xcc, 0x47, 0x1d, 0xbe, 0x68, 0x0e, 0xa5,
+ 0x8e, 0x6e, 0xe2, 0x4f, 0xb7, 0x82, 0x34, 0x23, 0xe6, 0x65, 0x6f, 0xd0,
+ 0xcd, 0xb5, 0x34, 0x16, 0xc5, 0x97, 0x41, 0xb0, 0x0e, 0x62, 0x3d, 0xa0,
+ 0xa4, 0xa4, 0xd4, 0xb7, 0x79, 0x75, 0xa4, 0x18, 0x1c, 0x8f, 0x3e, 0xc1,
+ 0x07, 0xed, 0x23, 0xed, 0x3f, 0x68, 0xdd, 0xed, 0xd9, 0x1b, 0x63, 0x4d,
+ 0xb3, 0xf4, 0xbe, 0xfd, 0x51, 0x6d, 0xfd, 0x1d, 0x7e, 0x83, 0x9c, 0x75,
+ 0x83, 0x61, 0x1a, 0x6d, 0x6f, 0x70, 0x3c, 0xe1, 0x52, 0x87, 0x7f, 0x3f,
+ 0x1f, 0xa2, 0xdd, 0xb3, 0x6c, 0x69, 0xb5, 0x25, 0x38, 0xbe, 0xd6, 0xba,
+ 0x01, 0x71, 0x1d, 0xa4, 0x22, 0x0d, 0xe1, 0xbe, 0x63, 0x53, 0xac, 0xcf,
+ 0x92, 0xb7, 0x56, 0x3b, 0xd9, 0x05, 0xed, 0x6b, 0xb7, 0x76, 0x74, 0x8f,
+ 0xb9, 0x27, 0xd6, 0x4f, 0xd2, 0x63, 0x40, 0x9d, 0x40, 0x8e, 0xe9, 0x29,
+ 0xa5, 0xeb, 0x36, 0xc2, 0x03, 0x40, 0xac, 0xce, 0xb0, 0x3f, 0xb9, 0x10,
+ 0x5e, 0xe6, 0xe8, 0x08, 0x74, 0x70, 0x9c, 0xe3, 0xb0, 0x12, 0x76, 0xe8,
+ 0x39, 0x24, 0x7f, 0x71, 0x43, 0x2d, 0x2d, 0x1f, 0x44, 0xb9, 0xa0, 0x70,
+ 0x47, 0xf1, 0x49, 0x4c, 0x5f, 0x95, 0xb9, 0xd0, 0x06, 0xd2, 0xed, 0x34,
+ 0x42, 0xb3, 0x17, 0x73, 0x40, 0x7d, 0x6e, 0x23, 0xe9, 0x17, 0x4c, 0xfc,
+ 0x38, 0x45, 0x6e, 0xf0, 0xe0, 0xf6, 0x54, 0x40, 0xec, 0x67, 0x4f, 0xc8,
+ 0xa4, 0xd7, 0xda, 0xe7, 0x38, 0xbf, 0xd9, 0xa0, 0x97, 0xc9, 0x3f, 0x72,
+ 0x4a, 0x63, 0xd3, 0xab, 0x65, 0xdd, 0x5b, 0x12, 0x86, 0x86, 0x90, 0x6c,
+ 0x69, 0x8d, 0x67, 0xdb, 0xee, 0xfe, 0x0b, 0x77, 0x24, 0xb4, 0x75, 0x0b,
+ 0x1a, 0xd1, 0xee, 0x04, 0x03, 0xe5, 0xa2, 0xca, 0xe9, 0x99, 0x06, 0x8e,
+ 0xaf, 0x89, 0x69, 0x73, 0x1e, 0xd1, 0x60, 0x9d, 0x20, 0xfb, 0xbd, 0xb3,
+ 0xf8, 0xad, 0x9b, 0x71, 0x9e, 0x73, 0x9d, 0x68, 0x3a, 0x98, 0xfc, 0x89,
+ 0x29, 0x9e, 0x39, 0x7b, 0xdc, 0x7c, 0x07, 0x72, 0xb0, 0xba, 0xd6, 0x7d,
+ 0x99, 0x59, 0x7f, 0x63, 0xc1, 0x74, 0xed, 0x21, 0x86, 0xc1, 0xfb, 0xc7,
+ 0x4d, 0x16, 0xa7, 0x51, 0xbe, 0xc9, 0x1d, 0x3b, 0x0b, 0x4b, 0xec, 0xfe,
+ 0x7e, 0xcf, 0xdc, 0x6f, 0x97, 0x9a, 0xa3, 0x56, 0x26, 0x2e, 0x0d, 0xe1,
+ 0x8c, 0xf7, 0xbe, 0xbd, 0x6c, 0x1d, 0xc6, 0xed, 0x37, 0x14, 0x94, 0xbe,
+ 0x16, 0xcc, 0x6a, 0xfe, 0xc9, 0x8e, 0xfd, 0xfb, 0x35, 0xf7, 0x9d, 0x5c,
+ 0x7f, 0x38, 0xeb, 0xe2, 0x55, 0xb6, 0xb6, 0xe0, 0x65, 0xee, 0x83, 0x12,
+ 0x00, 0x45, 0x38, 0xf5, 0xbf, 0x6d, 0x80, 0x03, 0x1f, 0x45, 0xde, 0x1e,
+ 0x68, 0xbb, 0xf1, 0x71, 0xd8, 0x2c, 0xc9, 0xb0, 0x01, 0xda, 0x7b, 0x94,
+ 0x94, 0xc2, 0xb6, 0xd8, 0x58, 0xe7, 0xd9, 0x5e, 0xea, 0xc0, 0x24, 0xb9,
+ 0xc7, 0x88, 0x59, 0x54, 0xf5, 0xcc, 0x37, 0x90, 0xe7, 0x66, 0x31, 0xbb,
+ 0x49, 0x21, 0xa6, 0x40, 0xfb, 0x88, 0x57, 0xae, 0xeb, 0x58, 0xb6, 0xbc,
+ 0x63, 0xb4, 0xb8, 0x52, 0x75, 0xdc, 0x06, 0x84, 0x8f, 0x15, 0x41, 0xcf,
+ 0xa7, 0xd6, 0x35, 0xd6, 0x1a, 0xf0, 0x3b, 0xed, 0x07, 0xe5, 0x10, 0x92,
+ 0x9b, 0xed, 0xea, 0x59, 0x1f, 0xce, 0x62, 0xe4, 0xb1, 0xf5, 0x4f, 0xe6,
+ 0xbd, 0xae, 0x1f, 0x02, 0x0c, 0xc2, 0xb7, 0x8d, 0x92, 0xf7, 0x8d, 0xd2,
+ 0x1b, 0xa9, 0xf7, 0x83, 0xed, 0xfe, 0xcc, 0x2c, 0xb6, 0xd5, 0x4d, 0x84,
+ 0x87, 0x55, 0x5b, 0x83, 0x84, 0x1f, 0x68, 0xe0, 0xfc, 0x94, 0x9d, 0xd2,
+ 0xba, 0x5d, 0x92, 0xef, 0xb3, 0x06, 0xf8, 0xfa, 0x72, 0xdf, 0xba, 0x0a,
+ 0x4a, 0x6f, 0x0c, 0xeb, 0xf0, 0xec, 0x7d, 0xcc, 0x79, 0xb5, 0xb6, 0x11,
+ 0xb8, 0xb0, 0x13, 0xa8, 0xf1, 0x95, 0x7d, 0x99, 0xd7, 0x5a, 0xc3, 0x63,
+ 0x2d, 0x6c, 0x91, 0x0d, 0x6b, 0xc4, 0x6b, 0x3e, 0x0b, 0x04, 0x74, 0xcc,
+ 0x46, 0x34, 0xb5, 0x8c, 0xb5, 0xa7, 0x90, 0xe6, 0xda, 0xf0, 0x7f, 0xea,
+ 0x94, 0x5b, 0xd3, 0xa1, 0x9e, 0xcb, 0xf2, 0xab, 0x73, 0x78, 0x8b, 0xb7,
+ 0x0f, 0xb9, 0xcd, 0x29, 0x29, 0xda, 0xb7, 0xa8, 0x64, 0x56, 0x00, 0xbf,
+ 0x1c, 0x09, 0x3a, 0x9d, 0x81, 0xcd, 0x3e, 0x7a, 0x38, 0x2a, 0xd9, 0x19,
+ 0xdd, 0x36, 0xd6, 0xb7, 0xd7, 0xc6, 0x65, 0xa7, 0x56, 0xed, 0x7d, 0x51,
+ 0x00, 0xf8, 0x12, 0x7b, 0xac, 0xe0, 0x7a, 0xa3, 0x7d, 0x8c, 0xcf, 0x78,
+ 0x8e, 0xd6, 0xd6, 0xd7, 0x0f, 0xbd, 0xb0, 0x84, 0xfa, 0xfa, 0xd1, 0x3f,
+ 0xcf, 0xe3, 0xbd, 0xae, 0xd0, 0xb8, 0xb5, 0xc0, 0xf8, 0x78, 0xa4, 0xa7,
+ 0x4c, 0x5f, 0xd0, 0xdd, 0x01, 0xf8, 0xed, 0x67, 0x68, 0x87, 0x00, 0x3c,
+ 0xb4, 0x95, 0x5b, 0x2d, 0xf8, 0xd6, 0x7b, 0xb1, 0x98, 0xd6, 0xd6, 0x06,
+ 0x85, 0xa2, 0x01, 0x20, 0xf3, 0xd9, 0x67, 0xe6, 0x74, 0xee, 0xa5, 0x53,
+ 0x77, 0x7a, 0x95, 0x3f, 0xbc, 0x35, 0xce, 0x6f, 0x3f, 0xd6, 0x0a, 0xd6,
+ 0x0b, 0x2d, 0x18, 0x55, 0x9b, 0x63, 0x7b, 0x5a, 0x43, 0xc4, 0xce, 0x84,
+ 0x9e, 0xe9, 0x29, 0xe9, 0x7e, 0xae, 0xb8, 0x5e, 0xff, 0x00, 0x54, 0xea,
+ 0x1a, 0xdd, 0x3e, 0x27, 0x45, 0xbb, 0x6d, 0x4c, 0xba, 0xb3, 0x5d, 0x8d,
+ 0x0e, 0x07, 0x99, 0xfe, 0x0b, 0x92, 0xe8, 0x79, 0xb8, 0xd8, 0xb9, 0x95,
+ 0x62, 0xd8, 0xe8, 0x6d, 0xb5, 0x39, 0xe1, 0xee, 0x20, 0x00, 0x58, 0x77,
+ 0x1d, 0x7c, 0x81, 0x95, 0x57, 0xaa, 0x7d, 0x61, 0xcd, 0xcd, 0xc9, 0x78,
+ 0xc3, 0xb5, 0xcf, 0xc0, 0x06, 0x2b, 0x6d, 0x40, 0xb0, 0xbc, 0x47, 0x2e,
+ 0x3f, 0x48, 0xfe, 0x44, 0x94, 0xdc, 0xea, 0x78, 0xad, 0xc0, 0xcc, 0x79,
+ 0x7e, 0x63, 0x5f, 0x45, 0x91, 0xb2, 0x87, 0x10, 0x5f, 0x5e, 0x90, 0x67,
+ 0xbe, 0xaa, 0xa5, 0x59, 0x94, 0x0a, 0x5e, 0xc1, 0x91, 0xe9, 0x93, 0x59,
+ 0x03, 0x6c, 0xce, 0xe2, 0x08, 0x03, 0xda, 0x3e, 0xf5, 0x4d, 0xa0, 0x46,
+ 0xfb, 0x5a, 0x01, 0x3c, 0xcf, 0x28, 0x56, 0x75, 0x0c, 0x4a, 0x4c, 0x00,
+ 0x0b, 0x92, 0x52, 0x3e, 0x85, 0x8d, 0x97, 0x83, 0x6b, 0xb2, 0x76, 0x87,
+ 0x39, 0xec, 0xd8, 0x03, 0xa4, 0x89, 0x99, 0xdc, 0x7c, 0x55, 0xdd, 0xb6,
+ 0x54, 0x1e, 0x2c, 0xb4, 0x31, 0xb6, 0x39, 0xcf, 0x76, 0xba, 0x97, 0x3b,
+ 0x95, 0x8f, 0x95, 0xd7, 0xac, 0x92, 0xda, 0x8f, 0xc0, 0x35, 0x0f, 0x05,
+ 0x96, 0xe7, 0x5e, 0x6c, 0xce, 0xf5, 0x3e, 0xce, 0xd0, 0x48, 0x00, 0x90,
+ 0xe7, 0x38, 0xf1, 0x10, 0x92, 0x9d, 0xaa, 0xab, 0xa4, 0x02, 0x1a, 0xd1,
+ 0x13, 0xa9, 0xf3, 0x44, 0x7b, 0x74, 0x1b, 0x40, 0xda, 0xdd, 0x43, 0x86,
+ 0xa3, 0xf0, 0xd4, 0x2c, 0xbb, 0x7a, 0x6f, 0x51, 0x23, 0x6e, 0x03, 0xdf,
+ 0x5d, 0x7f, 0xf0, 0xae, 0x1c, 0x7f, 0x64, 0x2a, 0xdf, 0xb2, 0x7a, 0xde,
+ 0x25, 0x9f, 0x68, 0x17, 0xef, 0x78, 0xd4, 0xb4, 0x1d, 0x0a, 0x4a, 0x7a,
+ 0xae, 0x97, 0xd7, 0x9b, 0x8e, 0x1c, 0xcc, 0x97, 0x9f, 0x42, 0xb0, 0x77,
+ 0x3a, 0x64, 0xd7, 0xdf, 0xb7, 0xd2, 0x0a, 0x3d, 0x4b, 0x1a, 0xb7, 0xd8,
+ 0xfc, 0xfc, 0x17, 0x35, 0xf8, 0xd6, 0x30, 0x97, 0x3a, 0x41, 0x01, 0xc6,
+ 0x3b, 0xf9, 0xc2, 0xe7, 0xe9, 0x36, 0x8b, 0x3d, 0x7b, 0xf6, 0xd6, 0xe0,
+ 0x36, 0xec, 0x70, 0x04, 0x38, 0x11, 0x32, 0x36, 0x9f, 0xcd, 0x77, 0x0a,
+ 0xe3, 0x5f, 0x50, 0x1e, 0x93, 0x2c, 0x8b, 0x6d, 0x8f, 0x74, 0x6e, 0x00,
+ 0xf3, 0xf4, 0x7b, 0xa4, 0xa6, 0x56, 0x83, 0x7b, 0xc3, 0xda, 0x41, 0xdc,
+ 0xd6, 0x68, 0x08, 0xfd, 0xd1, 0xd9, 0x41, 0xd5, 0xdc, 0xd2, 0x00, 0x13,
+ 0xf2, 0xd5, 0x5b, 0x2e, 0xa1, 0xf0, 0x0b, 0x00, 0x77, 0x7e, 0x07, 0x68,
+ 0xd1, 0x0f, 0xec, 0xec, 0x16, 0x4f, 0xa8, 0x7d, 0x20, 0x34, 0x66, 0xde,
+ 0xfe, 0x33, 0x29, 0x29, 0x58, 0x34, 0x7a, 0xf9, 0x20, 0xbd, 0xbe, 0xca,
+ 0xe1, 0xcf, 0x24, 0x72, 0x7b, 0x05, 0xd0, 0x62, 0xd4, 0x1a, 0x2c, 0xc9,
+ 0xb0, 0x48, 0x83, 0x07, 0xe1, 0xe0, 0xa9, 0x52, 0xec, 0x2a, 0xf1, 0xdb,
+ 0x5b, 0x4b, 0x83, 0xf9, 0x79, 0xdb, 0xc9, 0x56, 0xf2, 0xba, 0xbe, 0x05,
+ 0x6d, 0xad, 0x95, 0xb5, 0xee, 0x6d, 0x43, 0x41, 0xb7, 0x93, 0xe2, 0x64,
+ 0xa4, 0xa6, 0xa6, 0x55, 0x26, 0xd7, 0xd7, 0x41, 0x07, 0x7d, 0xa6, 0x6c,
+ 0x8e, 0x5a, 0x0f, 0x23, 0xf8, 0x2a, 0x9f, 0x69, 0xa7, 0xf6, 0x9f, 0xd8,
+ 0x37, 0x7e, 0xad, 0x1e, 0x94, 0xf6, 0xf5, 0x26, 0x67, 0xef, 0xf6, 0xa8,
+ 0xe5, 0x75, 0x4b, 0x5a, 0xdb, 0xec, 0xc2, 0xaa, 0xcb, 0x32, 0xdc, 0xdd,
+ 0xb5, 0x07, 0x00, 0xd6, 0x89, 0xfc, 0xe9, 0x2e, 0xed, 0xca, 0xc4, 0xff,
+ 0x00, 0x28, 0xfa, 0x3e, 0x9f, 0xd8, 0xac, 0xf5, 0xe7, 0xe9, 0x7a, 0x8d,
+ 0xfb, 0xe6, 0x12, 0x53, 0x73, 0xfe, 0x7c, 0x74, 0xf7, 0x80, 0x1f, 0x84,
+ 0xf6, 0x78, 0x96, 0xbc, 0x1f, 0xca, 0x02, 0x8f, 0xfc, 0xea, 0xe8, 0x96,
+ 0x1f, 0xd2, 0x51, 0x6b, 0x47, 0x93, 0x5a, 0x4f, 0xfd, 0x52, 0xe3, 0x52,
+ 0x49, 0x4f, 0x5a, 0x7e, 0xb0, 0xf4, 0x22, 0x08, 0x15, 0xdc, 0x0c, 0xf3,
+ 0xb5, 0xb1, 0xf3, 0x1b, 0x93, 0xbb, 0xab, 0x74, 0x02, 0xe0, 0xf6, 0xde,
+ 0x5b, 0xb8, 0x4b, 0x99, 0xe9, 0x3b, 0x43, 0xe1, 0xae, 0x8b, 0x91, 0x49,
+ 0x25, 0x3d, 0x73, 0xfa, 0xcf, 0x48, 0xb1, 0xf2, 0x6d, 0xf6, 0x0d, 0x01,
+ 0x15, 0xb9, 0xae, 0xff, 0x00, 0xa2, 0xa4, 0xce, 0xa5, 0xd1, 0x5c, 0xdd,
+ 0xbe, 0xac, 0x92, 0x74, 0xdc, 0x1e, 0xd0, 0x0f, 0xdc, 0xb8, 0xf4, 0x92,
+ 0x53, 0xde, 0x9e, 0x9f, 0x8b, 0x94, 0x2a, 0x7d, 0x6e, 0x67, 0xe8, 0xdc,
+ 0xd7, 0x02, 0xc7, 0xb4, 0xf0, 0x41, 0x13, 0x0b, 0x43, 0xf6, 0x8b, 0x1b,
+ 0x90, 0x59, 0x25, 0xcf, 0x2f, 0x88, 0xf0, 0x12, 0xbc, 0xfb, 0xa4, 0x3c,
+ 0x57, 0xd5, 0x31, 0x1e, 0xef, 0xa2, 0x2e, 0xac, 0x9f, 0xf3, 0x82, 0xee,
+ 0x0d, 0x38, 0x55, 0x0b, 0x73, 0xde, 0xf2, 0x5a, 0xe9, 0x3b, 0x78, 0xfc,
+ 0x52, 0x53, 0x3b, 0xed, 0x6e, 0x0d, 0x36, 0x64, 0x81, 0xea, 0x65, 0xe4,
+ 0x38, 0x8a, 0x5b, 0xe2, 0xe3, 0xfc, 0x1a, 0xa9, 0xf4, 0xfc, 0x47, 0xd3,
+ 0xb9, 0xf7, 0xbb, 0x7e, 0x45, 0x87, 0x7d, 0xae, 0x3d, 0xdc, 0x7f, 0xb9,
+ 0x52, 0x67, 0x52, 0xca, 0xcf, 0xc9, 0x6b, 0xaa, 0xa4, 0x8a, 0xc4, 0x37,
+ 0xd5, 0x76, 0xa1, 0x95, 0x03, 0xee, 0x0d, 0xf3, 0x3e, 0x2b, 0x5b, 0x1c,
+ 0xef, 0xab, 0xd4, 0x70, 0x87, 0x12, 0x64, 0x79, 0xca, 0x4a, 0x65, 0xe8,
+ 0x17, 0xe8, 0xe2, 0x48, 0x23, 0x8e, 0x00, 0x52, 0x38, 0x55, 0x53, 0xad,
+ 0x97, 0x34, 0x54, 0x79, 0xaa, 0xcf, 0x70, 0x3f, 0x05, 0x30, 0xf0, 0x07,
+ 0xb4, 0x41, 0xf3, 0x51, 0x75, 0x0c, 0xb6, 0x1c, 0xf6, 0x87, 0x59, 0xc4,
+ 0x9e, 0xc9, 0x29, 0x76, 0x8e, 0x9c, 0x59, 0xea, 0x52, 0xd0, 0x08, 0x30,
+ 0xd8, 0x1c, 0x95, 0x59, 0xd8, 0xec, 0x04, 0xb8, 0x44, 0x93, 0x24, 0xc2,
+ 0xa3, 0xd7, 0x3a, 0xc3, 0xba, 0x55, 0x95, 0x53, 0x4b, 0x1a, 0xe7, 0x19,
+ 0x73, 0xc1, 0xd2, 0x3c, 0x3e, 0xf5, 0x45, 0x9f, 0x5d, 0x2f, 0xd4, 0x59,
+ 0x8e, 0x08, 0xed, 0x0e, 0x8f, 0xfb, 0xea, 0x4a, 0x77, 0x6b, 0x63, 0x58,
+ 0x41, 0xd6, 0x3c, 0x51, 0x8e, 0xa6, 0x5a, 0x77, 0x0e, 0xfe, 0x21, 0x60,
+ 0x8f, 0xae, 0xb5, 0xb8, 0xb0, 0x3b, 0x08, 0x34, 0x03, 0xee, 0x21, 0xf2,
+ 0x7e, 0x52, 0x02, 0x57, 0xfd, 0x71, 0xaf, 0xda, 0xdc, 0x6a, 0x48, 0x1c,
+ 0x39, 0xcf, 0x03, 0x70, 0x1e, 0x40, 0x3a, 0x12, 0x53, 0xd0, 0x4e, 0xa4,
+ 0x11, 0x13, 0xc1, 0x3c, 0x28, 0x10, 0x41, 0x3b, 0xbd, 0xf1, 0xe1, 0xa2,
+ 0xc2, 0xa7, 0xeb, 0x69, 0xdc, 0x1a, 0x58, 0x6d, 0xed, 0xb7, 0x60, 0x1b,
+ 0xbf, 0xcd, 0x2b, 0x77, 0x0f, 0x26, 0xdc, 0xd6, 0x87, 0x8c, 0x0c, 0x9a,
+ 0xe7, 0xbb, 0xd9, 0xb1, 0xbf, 0x27, 0x3b, 0x6c, 0xa4, 0xa4, 0x4f, 0x0d,
+ 0x23, 0xda, 0x3f, 0x8c, 0x20, 0xd8, 0x5a, 0xe6, 0x80, 0xe1, 0xc7, 0x87,
+ 0x0b, 0x54, 0x74, 0x9b, 0x6d, 0x70, 0xf7, 0x8a, 0xc7, 0xee, 0xfd, 0x37,
+ 0x4f, 0xc0, 0x69, 0xf8, 0xab, 0x95, 0x7d, 0x5a, 0xa0, 0xeb, 0x71, 0x73,
+ 0xa3, 0x58, 0x24, 0x0f, 0xc1, 0xbf, 0xde, 0x92, 0x9e, 0x4f, 0x39, 0xee,
+ 0x78, 0xf6, 0x3e, 0x64, 0x46, 0xde, 0xf2, 0x14, 0xba, 0x35, 0x3d, 0x66,
+ 0xdf, 0xd0, 0x0c, 0x3b, 0x5c, 0xc0, 0x7d, 0xb7, 0x16, 0x96, 0x33, 0x69,
+ 0xec, 0x4b, 0xa0, 0x2e, 0xee, 0x8c, 0x1e, 0x9b, 0x8a, 0x40, 0xae, 0x8a,
+ 0xc3, 0xa3, 0x9d, 0xb2, 0x47, 0xcc, 0xc9, 0x56, 0x03, 0x5e, 0xe6, 0xee,
+ 0x27, 0x70, 0xe0, 0x34, 0x7f, 0x04, 0x94, 0xf1, 0xd9, 0x1f, 0x54, 0xed,
+ 0xb9, 0xac, 0x7e, 0x55, 0xec, 0xa9, 0xe2, 0x40, 0xd1, 0xce, 0x3b, 0x1d,
+ 0xf4, 0x9b, 0x2d, 0x8e, 0x41, 0x58, 0x79, 0xdd, 0x17, 0xaa, 0xf4, 0x5a,
+ 0x85, 0xac, 0xbd, 0x99, 0x18, 0xd3, 0xb4, 0x3e, 0xb2, 0x41, 0x68, 0x3f,
+ 0x47, 0x78, 0x70, 0x10, 0xbb, 0x3e, 0xa0, 0xef, 0x57, 0x2a, 0xc1, 0x59,
+ 0xdc, 0xd6, 0xfb, 0x74, 0x31, 0xee, 0x01, 0x51, 0xcf, 0xc4, 0x39, 0x38,
+ 0x17, 0x63, 0x12, 0x5c, 0x4b, 0x48, 0x93, 0xa7, 0xbb, 0xf3, 0x7f, 0x14,
+ 0x94, 0xf3, 0x18, 0xed, 0x39, 0x2d, 0x1f, 0x68, 0x7b, 0x9e, 0x3b, 0xb4,
+ 0x1d, 0xa3, 0xfb, 0xd6, 0x96, 0x4b, 0xa1, 0xad, 0x6b, 0x80, 0xb1, 0xb0,
+ 0x06, 0xd7, 0x00, 0xed, 0x00, 0x8e, 0xeb, 0x03, 0x13, 0x21, 0xec, 0x79,
+ 0xad, 0xe0, 0x87, 0xb0, 0x96, 0xb8, 0x1e, 0x41, 0x1a, 0x15, 0xa4, 0xfb,
+ 0xc1, 0xae, 0x77, 0x6b, 0xdc, 0x1e, 0x52, 0x52, 0x7c, 0x6b, 0x3a, 0x25,
+ 0x2e, 0xd8, 0x36, 0xe3, 0xd8, 0x3e, 0x93, 0x5c, 0xdd, 0xdf, 0x71, 0x47,
+ 0xc8, 0xea, 0xb5, 0x55, 0x43, 0xac, 0xc6, 0x60, 0xb7, 0x67, 0xd2, 0xb3,
+ 0x40, 0xc6, 0x8f, 0x32, 0x4c, 0x2c, 0x37, 0x65, 0x74, 0xfa, 0x9f, 0x75,
+ 0xf9, 0x55, 0x0b, 0xee, 0x60, 0x68, 0xa5, 0x87, 0x82, 0x4c, 0xcf, 0xc9,
+ 0x66, 0xe5, 0xf5, 0x0c, 0x9c, 0xc8, 0xad, 0xf0, 0xca, 0x5a, 0x65, 0x94,
+ 0x56, 0x36, 0xb0, 0x1f, 0x18, 0xf1, 0xf3, 0x49, 0x4e, 0x9d, 0xdf, 0x59,
+ 0xb2, 0x1e, 0x21, 0xaf, 0x23, 0xc8, 0x34, 0x2a, 0x8e, 0xeb, 0x39, 0x16,
+ 0x3b, 0x57, 0x39, 0xde, 0x5c, 0x2a, 0x2c, 0xa6, 0x75, 0xfb, 0x91, 0xaa,
+ 0x63, 0x5a, 0xe3, 0x3a, 0x7b, 0x52, 0x53, 0x60, 0x65, 0x65, 0x39, 0xde,
+ 0xda, 0x89, 0x3e, 0x2e, 0x5b, 0x9d, 0x2f, 0xa7, 0x50, 0xe6, 0x33, 0x36,
+ 0xdb, 0x0d, 0x96, 0x7e, 0x75, 0x67, 0xda, 0x18, 0xef, 0xc6, 0x56, 0x7d,
+ 0x8e, 0x01, 0x81, 0xc3, 0x42, 0x4c, 0x7c, 0xd5, 0xbe, 0x99, 0x95, 0xe9,
+ 0xd8, 0x2b, 0x7f, 0xd0, 0xb3, 0xda, 0xe3, 0xe0, 0x7b, 0x14, 0x94, 0xea,
+ 0x39, 0x8c, 0xf5, 0xbd, 0xba, 0xd6, 0x78, 0x3d, 0xd2, 0xb5, 0xc2, 0xab,
+ 0x76, 0x10, 0x48, 0x89, 0x0e, 0x8e, 0xc9, 0xed, 0xc6, 0x73, 0x5d, 0x3a,
+ 0x88, 0x31, 0x12, 0xa2, 0xec, 0x67, 0x96, 0xc9, 0xd2, 0x3f, 0x3b, 0xfd,
+ 0xc5, 0x25, 0x25, 0x65, 0xcd, 0x23, 0x57, 0x41, 0xef, 0x23, 0x44, 0x0c,
+ 0xd6, 0xd8, 0x59, 0xfa, 0x1b, 0x5b, 0x32, 0x0c, 0x83, 0x3a, 0x28, 0x06,
+ 0xd8, 0xc7, 0x12, 0x21, 0xd1, 0xa7, 0x8a, 0x71, 0xbc, 0xb4, 0x96, 0xb0,
+ 0x10, 0x79, 0x69, 0x09, 0x29, 0x86, 0xe6, 0x82, 0x0b, 0x86, 0xed, 0x38,
+ 0x05, 0x13, 0xd4, 0xaf, 0x9d, 0xae, 0x98, 0x85, 0x5d, 0xcd, 0x2c, 0x74,
+ 0x96, 0x0d, 0xbd, 0x80, 0xd0, 0x8f, 0x98, 0x51, 0xf5, 0xb5, 0xfa, 0x2e,
+ 0x8f, 0x0f, 0x34, 0x94, 0xf1, 0xc9, 0x2b, 0x54, 0x61, 0x97, 0xd0, 0xfb,
+ 0xdf, 0xa0, 0x91, 0x5d, 0x43, 0xf7, 0x9e, 0x75, 0x3f, 0x26, 0xb7, 0x9f,
+ 0x92, 0x18, 0xc5, 0xb5, 0xce, 0xd9, 0x5b, 0x5c, 0xf7, 0xfe, 0xeb, 0x41,
+ 0x27, 0x4f, 0x20, 0x92, 0x90, 0xa4, 0xa6, 0x58, 0xf6, 0xb8, 0xd4, 0x59,
+ 0xef, 0x24, 0x08, 0x23, 0xdd, 0x3e, 0x08, 0xf8, 0xde, 0xad, 0x19, 0x4d,
+ 0xb5, 0x95, 0x38, 0x59, 0x8a, 0xe0, 0xfb, 0x43, 0x99, 0xea, 0x06, 0x6c,
+ 0x70, 0x04, 0xbd, 0x8e, 0x1d, 0x8f, 0x8a, 0x4a, 0x44, 0x29, 0x1f, 0x67,
+ 0x7d, 0xc5, 0xe0, 0x39, 0xaf, 0x6b, 0x05, 0x44, 0x1d, 0xc7, 0x70, 0x71,
+ 0x2e, 0xf0, 0xd2, 0x3f, 0x14, 0x43, 0x81, 0x7d, 0x75, 0xd8, 0xfc, 0x80,
+ 0x68, 0x73, 0x1a, 0x1c, 0xca, 0xed, 0x6b, 0x9a, 0xfb, 0x24, 0xfe, 0x60,
+ 0x8e, 0xc3, 0x52, 0xb7, 0x32, 0xad, 0xea, 0xb9, 0x9d, 0x36, 0xfc, 0xc6,
+ 0x58, 0xd7, 0xe2, 0xdb, 0x79, 0x39, 0x98, 0xec, 0x01, 0xb5, 0xef, 0xf6,
+ 0x6a, 0x46, 0xdf, 0x69, 0x71, 0x93, 0x32, 0x8f, 0xd5, 0x7a, 0xb5, 0x58,
+ 0xd6, 0x3e, 0xf6, 0xf4, 0x9f, 0xb3, 0x5a, 0xfa, 0x5d, 0x4e, 0x35, 0xbe,
+ 0xb1, 0x7d, 0x40, 0x58, 0x36, 0x9b, 0x2b, 0x6c, 0x6d, 0x77, 0xb4, 0x90,
+ 0x7e, 0x5c, 0x24, 0xa7, 0x96, 0xa5, 0xc5, 0x96, 0xb1, 0xe3, 0x96, 0xb8,
+ 0x1f, 0xb8, 0xae, 0xfd, 0xd8, 0x0d, 0xcd, 0xf4, 0xc5, 0xce, 0x03, 0x1a,
+ 0x91, 0xf4, 0x01, 0xfa, 0x4f, 0xef, 0x21, 0x70, 0x4c, 0xa2, 0xd8, 0xaa,
+ 0xc2, 0xd2, 0x2b, 0xb1, 0xe5, 0x8c, 0x77, 0x62, 0xe6, 0xed, 0xdc, 0x3e,
+ 0x5b, 0x82, 0xed, 0x2b, 0xc8, 0x32, 0x5f, 0x5b, 0xa5, 0xb2, 0x65, 0x25,
+ 0x36, 0xed, 0xf4, 0x40, 0x14, 0x63, 0xb4, 0x35, 0x8d, 0x82, 0x63, 0x85,
+ 0x1c, 0x62, 0x7d, 0x09, 0x1d, 0xdc, 0x67, 0xef, 0x53, 0x63, 0x1a, 0xdc,
+ 0x62, 0xe3, 0xf4, 0xdf, 0x24, 0x9f, 0x8a, 0x1f, 0x4f, 0x87, 0x50, 0x41,
+ 0x30, 0x5a, 0xe9, 0x84, 0x94, 0xd9, 0xad, 0xa5, 0xad, 0xde, 0xfe, 0x7b,
+ 0x21, 0xe5, 0x64, 0x7d, 0x9a, 0xa3, 0x71, 0x1a, 0x8e, 0x07, 0x9a, 0x30,
+ 0x63, 0xde, 0x24, 0x09, 0x83, 0xdf, 0xb2, 0xcc, 0xba, 0xd3, 0x99, 0x9d,
+ 0xe9, 0x0d, 0x68, 0xa3, 0x93, 0xd9, 0xd6, 0x14, 0x94, 0xf3, 0xfd, 0x79,
+ 0x97, 0x5f, 0x93, 0x53, 0x83, 0x5d, 0x65, 0xb6, 0x02, 0xe3, 0xb4, 0x12,
+ 0x75, 0x3c, 0x68, 0x83, 0x8f, 0xf5, 0x77, 0xaa, 0xdd, 0x0e, 0x75, 0x43,
+ 0x1d, 0x87, 0x4d, 0xf7, 0xb8, 0x56, 0x35, 0xf2, 0x3a, 0xfe, 0x0b, 0x76,
+ 0xbc, 0x9c, 0x8c, 0x5c, 0x8d, 0x18, 0xeb, 0x71, 0xce, 0xe2, 0xe6, 0x88,
+ 0x68, 0x6b, 0xbc, 0x64, 0xab, 0x56, 0xf5, 0x46, 0xd7, 0x58, 0x65, 0xbe,
+ 0x9d, 0x7a, 0x83, 0x0e, 0x70, 0xb4, 0x9f, 0xf3, 0x66, 0x3c, 0x52, 0x53,
+ 0x43, 0x07, 0xea, 0x66, 0x3d, 0xaf, 0x03, 0x23, 0xa8, 0x34, 0x91, 0x3b,
+ 0x99, 0x4b, 0x49, 0xe3, 0x9f, 0x73, 0xe3, 0xf2, 0x2e, 0x87, 0x0f, 0xea,
+ 0xb7, 0xd5, 0xfc, 0x68, 0x2d, 0xc4, 0xfb, 0x4b, 0x87, 0x2f, 0xbd, 0xce,
+ 0x20, 0xfc, 0x07, 0xb5, 0xa7, 0xee, 0x55, 0xa9, 0xcc, 0xbf, 0x26, 0x2d,
+ 0xc0, 0x73, 0x6c, 0x8d, 0x1e, 0xc1, 0x21, 0xdf, 0xd9, 0x0e, 0x08, 0xb4,
+ 0xf5, 0xc7, 0x51, 0x66, 0xcc, 0xea, 0x5c, 0xda, 0x8e, 0x8e, 0x0d, 0x91,
+ 0x63, 0x3c, 0xf6, 0x9e, 0x47, 0xc0, 0xa4, 0xa7, 0x6e, 0x9c, 0x4c, 0x56,
+ 0xd4, 0xe1, 0x8f, 0x5d, 0x78, 0xec, 0x07, 0x5f, 0x41, 0xad, 0xac, 0x8f,
+ 0x08, 0x2c, 0x0a, 0x2f, 0xba, 0xaa, 0xbf, 0x9e, 0xb4, 0xfa, 0x4d, 0x81,
+ 0x24, 0xeb, 0xf1, 0xd7, 0x55, 0x40, 0x59, 0x5b, 0x43, 0xaf, 0xc1, 0xb5,
+ 0xd7, 0x56, 0xe1, 0xb8, 0x10, 0xf7, 0x0f, 0xc0, 0xa3, 0x62, 0xf5, 0x1c,
+ 0x4e, 0xa6, 0xcf, 0xb3, 0x64, 0xb3, 0xd3, 0xc8, 0x66, 0x83, 0x81, 0xee,
+ 0xe0, 0xc1, 0xfe, 0x09, 0x29, 0xd2, 0x26, 0xb0, 0x37, 0x30, 0x38, 0xc4,
+ 0x90, 0x1b, 0xe3, 0xcf, 0x23, 0xc5, 0x5b, 0xa6, 0xc7, 0xdc, 0xd9, 0x68,
+ 0x35, 0x6b, 0x05, 0xae, 0x12, 0x56, 0x05, 0x95, 0x75, 0x3e, 0x94, 0x0b,
+ 0xb1, 0xf2, 0x5b, 0x65, 0x00, 0x49, 0x65, 0xd1, 0x0d, 0x9e, 0x35, 0x1c,
+ 0x2a, 0x35, 0xf5, 0xce, 0xa3, 0x55, 0x9f, 0x69, 0x7d, 0xbe, 0xa6, 0xd2,
+ 0x49, 0xaf, 0xb4, 0x78, 0x40, 0x49, 0x4f, 0x60, 0x5b, 0x53, 0x01, 0x71,
+ 0xd2, 0x35, 0x7b, 0xcf, 0x97, 0x3a, 0xae, 0x6f, 0x27, 0x0f, 0x3a, 0xec,
+ 0x87, 0x5f, 0x55, 0xee, 0x35, 0x92, 0x5c, 0xd7, 0x87, 0x1d, 0xcd, 0x8e,
+ 0xe1, 0xbc, 0x2b, 0x98, 0xfd, 0x4a, 0xae, 0xa5, 0x8c, 0x2c, 0xac, 0x12,
+ 0x06, 0x96, 0x55, 0xf9, 0xc0, 0xcf, 0x70, 0x16, 0x96, 0x35, 0x0d, 0xa6,
+ 0x82, 0xdd, 0xbc, 0x81, 0x3e, 0x69, 0x29, 0xe7, 0xab, 0xa7, 0x22, 0x8b,
+ 0x0b, 0x72, 0x88, 0x24, 0x90, 0xf6, 0x39, 0xb3, 0x06, 0x79, 0x9f, 0x34,
+ 0x7a, 0xec, 0x6d, 0xae, 0x71, 0x61, 0x83, 0x53, 0xcd, 0x76, 0x34, 0xf8,
+ 0x11, 0xcf, 0xc3, 0x55, 0x67, 0xa9, 0xdb, 0x89, 0x45, 0x47, 0x2c, 0x31,
+ 0xd2, 0x08, 0xf7, 0xb1, 0xa5, 0xdc, 0xfb, 0x75, 0xda, 0xb2, 0xb1, 0x9e,
+ 0xf6, 0x75, 0x4b, 0x83, 0x36, 0xbe, 0xbb, 0x98, 0x2d, 0x2e, 0x04, 0x01,
+ 0x0d, 0x31, 0x21, 0x25, 0x3c, 0xcf, 0x5d, 0xaf, 0xd1, 0xeb, 0x77, 0x96,
+ 0xb7, 0x69, 0x21, 0xae, 0x70, 0x88, 0xd4, 0x88, 0x2e, 0x54, 0x45, 0xdb,
+ 0x9c, 0x47, 0x98, 0x01, 0x69, 0xfd, 0x6d, 0x6b, 0x9b, 0xd4, 0x31, 0xed,
+ 0x3a, 0x7a, 0xb5, 0x10, 0x67, 0xf9, 0x2e, 0x3f, 0xc0, 0xac, 0x7a, 0xc3,
+ 0x89, 0xde, 0x01, 0xda, 0x09, 0x3f, 0xc1, 0x25, 0x35, 0xb2, 0xe4, 0xdb,
+ 0xf3, 0x85, 0x1a, 0xd8, 0x39, 0x3f, 0x25, 0x2c, 0xbd, 0x2d, 0x3e, 0x7f,
+ 0xc4, 0x28, 0xb5, 0xc1, 0x25, 0x26, 0x6b, 0xc3, 0x41, 0xf0, 0xec, 0xa3,
+ 0x59, 0x90, 0xef, 0x12, 0x43, 0x7f, 0x15, 0x17, 0x58, 0x22, 0x07, 0x2a,
+ 0x6c, 0xa6, 0xe6, 0x51, 0x5e, 0x4b, 0xab, 0x70, 0xa1, 0xee, 0x21, 0xb6,
+ 0xc1, 0xda, 0x5c, 0x3b, 0x4f, 0x8a, 0x4a, 0x6f, 0x58, 0xe9, 0xa9, 0xbf,
+ 0xd6, 0xd1, 0x4a, 0x82, 0x1c, 0xd3, 0x3e, 0x25, 0x57, 0x2e, 0x0e, 0xad,
+ 0x84, 0x71, 0x28, 0xd4, 0x3e, 0x00, 0x1d, 0x9d, 0x29, 0x29, 0xb5, 0x91,
+ 0xf5, 0x9b, 0x3a, 0xa7, 0xfa, 0x2e, 0xa6, 0xab, 0x43, 0x1a, 0x06, 0xf2,
+ 0x1c, 0x1c, 0x74, 0x81, 0x30, 0xe8, 0x54, 0xdb, 0xf5, 0xa3, 0xaa, 0x30,
+ 0xe8, 0x59, 0xe4, 0x0b, 0x41, 0x52, 0xb1, 0xae, 0xf4, 0x6f, 0x78, 0x30,
+ 0x1e, 0xd6, 0xb1, 0xc4, 0xf9, 0x3b, 0xfd, 0xab, 0x3e, 0xfa, 0x85, 0x55,
+ 0xd4, 0xeb, 0x23, 0xf4, 0x8d, 0xdc, 0x00, 0xe7, 0x9d, 0x25, 0x25, 0x3a,
+ 0x6d, 0xfa, 0xdf, 0xd4, 0x07, 0x34, 0xd0, 0xef, 0x19, 0x69, 0xd7, 0xee,
+ 0x72, 0x28, 0xfa, 0xe5, 0x92, 0x04, 0x1c, 0x2c, 0x71, 0xe6, 0x03, 0xc1,
+ 0xff, 0x00, 0xaa, 0x5c, 0xf9, 0xb1, 0xd1, 0xb4, 0x68, 0x3c, 0x16, 0xaf,
+ 0x4b, 0xe9, 0x47, 0x32, 0xb2, 0xeb, 0x75, 0x68, 0x32, 0xd0, 0x0f, 0xe0,
+ 0x7e, 0x29, 0x29, 0xb5, 0xff, 0x00, 0x3b, 0x1a, 0xf3, 0xfa, 0x5c, 0x36,
+ 0x8f, 0xea, 0x3c, 0xff, 0x00, 0xdf, 0x81, 0x52, 0xff, 0x00, 0x9c, 0xb8,
+ 0x71, 0xfc, 0xc3, 0xe7, 0xf7, 0x64, 0x42, 0xbf, 0x4f, 0xd5, 0x9e, 0x9d,
+ 0x65, 0x4d, 0x77, 0xa7, 0x2e, 0x7c, 0x43, 0x43, 0xc9, 0x3a, 0xf7, 0x00,
+ 0x2b, 0x1f, 0xf3, 0x1e, 0xad, 0xbe, 0xa7, 0xd9, 0xdd, 0x1f, 0xbb, 0xbf,
+ 0xdd, 0x1e, 0x3b, 0x79, 0x49, 0x4e, 0x0d, 0xed, 0x2c, 0x35, 0x32, 0xb1,
+ 0xba, 0xac, 0x61, 0x04, 0x81, 0xa1, 0x73, 0x8f, 0xbd, 0xc7, 0xe2, 0x74,
+ 0xfb, 0x91, 0xf1, 0x70, 0xf3, 0xd9, 0x75, 0xb9, 0x5d, 0x39, 0xce, 0xac,
+ 0xd6, 0xc3, 0x61, 0x2c, 0x7e, 0xd7, 0xed, 0xd3, 0x73, 0x47, 0x73, 0xca,
+ 0x26, 0x25, 0x4f, 0x6e, 0x2e, 0x53, 0x2e, 0x96, 0xee, 0xa8, 0x79, 0xfb,
+ 0x83, 0xd9, 0x1f, 0x09, 0x57, 0x30, 0xfa, 0x76, 0x55, 0x18, 0xed, 0xcc,
+ 0x17, 0xec, 0xf5, 0x77, 0x30, 0x55, 0x0f, 0x0e, 0x82, 0x36, 0x93, 0x31,
+ 0xb7, 0xf1, 0x49, 0x4d, 0x7c, 0x3f, 0xd9, 0x36, 0xe3, 0x33, 0x3f, 0xa8,
+ 0x5f, 0x65, 0x7d, 0x4a, 0xb2, 0xf7, 0xd0, 0xea, 0x5b, 0xfa, 0x4b, 0x1e,
+ 0x0e, 0xe6, 0xd9, 0x6d, 0x8f, 0xdc, 0x1c, 0x77, 0x70, 0x9b, 0x13, 0x12,
+ 0xe7, 0x10, 0xcc, 0x4c, 0xe7, 0xe2, 0xf5, 0xcc, 0x9b, 0xb7, 0x66, 0xb1,
+ 0xef, 0x65, 0x74, 0x96, 0x12, 0xe7, 0x6e, 0x0e, 0x07, 0xdd, 0x13, 0xab,
+ 0x75, 0xf8, 0x2b, 0xf5, 0x61, 0xd7, 0x8d, 0x7b, 0x2d, 0x2c, 0x66, 0x48,
+ 0x15, 0xc1, 0x6d, 0xa0, 0x39, 0xb2, 0x75, 0xd0, 0x2b, 0x63, 0x0f, 0xa5,
+ 0xb5, 0xb5, 0xe4, 0x64, 0x62, 0x37, 0x2b, 0x2f, 0x63, 0x9e, 0xe2, 0x3d,
+ 0xd5, 0x34, 0x34, 0xfa, 0x82, 0x18, 0xd8, 0x88, 0xef, 0x29, 0x29, 0xcf,
+ 0xa2, 0xac, 0xce, 0x8f, 0x99, 0x7f, 0x47, 0xfb, 0x53, 0x6e, 0xa8, 0x81,
+ 0x63, 0x85, 0x44, 0x8d, 0xc5, 0xc0, 0x13, 0x3c, 0xf3, 0xa4, 0x84, 0x3c,
+ 0xce, 0x91, 0x46, 0x51, 0x63, 0xec, 0x0d, 0x0d, 0xae, 0xb8, 0x6c, 0x38,
+ 0xb5, 0xa3, 0x59, 0xdb, 0xf1, 0x32, 0xac, 0x50, 0x08, 0x7d, 0x6f, 0x6e,
+ 0xb8, 0xec, 0x61, 0xf4, 0xdb, 0xb3, 0x63, 0x98, 0xe7, 0x99, 0x73, 0x4b,
+ 0xbf, 0x38, 0x0f, 0x12, 0x8d, 0x43, 0xf1, 0x9c, 0x4e, 0xe6, 0xc6, 0xc6,
+ 0xba, 0xce, 0xfb, 0x48, 0x6f, 0xb8, 0xfc, 0xd2, 0x53, 0x91, 0x67, 0x4c,
+ 0xe9, 0xb5, 0xfd, 0x9b, 0x63, 0x5c, 0xc7, 0xb5, 0xf2, 0xf1, 0xbb, 0xf3,
+ 0xa4, 0x6b, 0x07, 0xf3, 0x60, 0x05, 0x73, 0x1d, 0xcc, 0x6e, 0x58, 0x6b,
+ 0x9d, 0xba, 0xcb, 0x4b, 0x80, 0x68, 0xe1, 0xba, 0xf2, 0x7c, 0xd5, 0x5c,
+ 0x8b, 0x9f, 0x7b, 0xdb, 0xa1, 0xd8, 0x5c, 0xd2, 0x09, 0xf1, 0x06, 0x76,
+ 0x85, 0xa9, 0x8d, 0x45, 0x47, 0xaa, 0x48, 0xd0, 0x81, 0x24, 0xc4, 0x8d,
+ 0x00, 0xfb, 0x92, 0x53, 0x7a, 0xda, 0xc7, 0xa7, 0xb6, 0x3f, 0xdc, 0xb3,
+ 0x18, 0xdb, 0x18, 0xe2, 0x68, 0x13, 0x61, 0x90, 0x0f, 0xe6, 0x81, 0xdf,
+ 0xe6, 0xb4, 0x33, 0xb3, 0xb1, 0xe9, 0xd5, 0xcf, 0x0d, 0x59, 0xb8, 0x99,
+ 0x38, 0x8e, 0xbc, 0x8c, 0x7b, 0xf7, 0xbd, 0xd2, 0x45, 0x7c, 0x02, 0x7e,
+ 0x69, 0x29, 0x24, 0x67, 0xd9, 0x2c, 0x0f, 0x3a, 0xfd, 0x26, 0x81, 0x00,
+ 0x4f, 0x79, 0x50, 0xd1, 0x8d, 0x38, 0xd8, 0xce, 0x04, 0xd6, 0x43, 0x9f,
+ 0x67, 0x8b, 0xdd, 0xfd, 0xc1, 0x4a, 0xdc, 0xcf, 0x55, 0xa6, 0x97, 0xd8,
+ 0x68, 0x27, 0x42, 0x47, 0xe7, 0x79, 0x29, 0xd7, 0x55, 0x6c, 0xad, 0xbe,
+ 0x9c, 0x1d, 0x61, 0xc7, 0xb4, 0xc6, 0x89, 0x29, 0xe7, 0xba, 0x93, 0xf3,
+ 0x6a, 0xcd, 0xb7, 0xd2, 0x2e, 0x73, 0x04, 0x07, 0x37, 0x58, 0x9d, 0xba,
+ 0xf0, 0x83, 0x4e, 0x66, 0x28, 0x6c, 0x5d, 0x4e, 0xd2, 0x62, 0x5c, 0xcd,
+ 0x49, 0xf9, 0x76, 0x46, 0xea, 0x96, 0x3d, 0xd9, 0xd7, 0x34, 0x12, 0x1a,
+ 0x1d, 0x10, 0x0f, 0x82, 0xa6, 0xca, 0x1c, 0x1d, 0xc4, 0x83, 0xdf, 0xba,
+ 0x4a, 0x75, 0x71, 0xf2, 0x19, 0x43, 0xfd, 0x4c, 0x3b, 0xda, 0x2b, 0x7c,
+ 0xfb, 0x5c, 0x3d, 0xb3, 0xe6, 0x34, 0x32, 0xba, 0x4c, 0x4f, 0xac, 0x7d,
+ 0x3b, 0x2e, 0xb6, 0xd5, 0xd5, 0x1a, 0xcf, 0x56, 0x21, 0x8f, 0x68, 0x3b,
+ 0x5e, 0x23, 0x92, 0x0f, 0x75, 0xc9, 0xd4, 0xd7, 0x52, 0x41, 0xad, 0xad,
+ 0x7c, 0xe8, 0x74, 0xd7, 0x51, 0xdb, 0xcc, 0x29, 0xfa, 0x42, 0xe6, 0x11,
+ 0x61, 0x73, 0xc6, 0xa3, 0xdc, 0x22, 0x3f, 0x8a, 0x4a, 0x7a, 0x0c, 0xda,
+ 0xfa, 0x73, 0x1a, 0xe7, 0xe0, 0x5b, 0xef, 0x79, 0x10, 0xd6, 0x48, 0x1a,
+ 0x78, 0x8e, 0xcb, 0x2d, 0xcf, 0x8b, 0x7d, 0x6b, 0x1c, 0xe6, 0x3c, 0x9d,
+ 0x4c, 0x13, 0x31, 0xfb, 0xca, 0x9d, 0x58, 0x6c, 0xc6, 0xb5, 0xa5, 0xd6,
+ 0x96, 0x18, 0x96, 0xea, 0x74, 0x56, 0x8b, 0x9a, 0xff, 0x00, 0xa4, 0x01,
+ 0xed, 0xba, 0x42, 0x4a, 0x74, 0x5d, 0x7b, 0xec, 0xa8, 0x3b, 0xd4, 0x2f,
+ 0x27, 0x43, 0xa9, 0x3f, 0xf5, 0x4a, 0x1e, 0xd1, 0x53, 0x83, 0x8e, 0xd9,
+ 0x9e, 0x7b, 0xe9, 0xc4, 0xac, 0xf6, 0x9b, 0x6a, 0x7e, 0xd2, 0x3d, 0x84,
+ 0xc8, 0x31, 0xcc, 0x76, 0x56, 0x5f, 0x93, 0x51, 0x15, 0xb7, 0x6b, 0x89,
+ 0x82, 0xf2, 0xd7, 0x10, 0x23, 0xb1, 0x49, 0x49, 0xe9, 0xbf, 0x22, 0x87,
+ 0xb2, 0xdc, 0x72, 0xe6, 0x96, 0x6b, 0xa6, 0xbd, 0xb8, 0x3e, 0x4b, 0xa6,
+ 0x66, 0x56, 0x6e, 0x5d, 0x2c, 0xb5, 0xb7, 0x0a, 0xaa, 0x80, 0x43, 0x9a,
+ 0xd2, 0xe2, 0xef, 0x0f, 0x69, 0x5c, 0xd0, 0x63, 0x3d, 0x36, 0x5b, 0x6c,
+ 0x92, 0xe8, 0xfd, 0x15, 0x64, 0xed, 0x3e, 0x03, 0xdb, 0xac, 0xab, 0xfd,
+ 0x2f, 0xa8, 0x37, 0x04, 0x3a, 0xbb, 0xda, 0xfd, 0xa2, 0x7d, 0x36, 0x83,
+ 0x27, 0x6b, 0x8e, 0xe0, 0x20, 0xeb, 0xa2, 0x4a, 0x76, 0x72, 0xaf, 0xc7,
+ 0xc4, 0x69, 0xb1, 0xe7, 0xd5, 0x2f, 0xf6, 0xdb, 0x02, 0x37, 0x1f, 0x26,
+ 0x0d, 0x3e, 0x2b, 0x0a, 0x9b, 0xa9, 0xfb, 0x7b, 0xef, 0x65, 0x5e, 0x9d,
+ 0x55, 0x8f, 0x4c, 0x34, 0x12, 0x4d, 0x91, 0xa8, 0x2e, 0x0a, 0x7d, 0x4f,
+ 0x3d, 0xd7, 0x10, 0xe6, 0x8d, 0x8d, 0x75, 0x72, 0xc1, 0xc8, 0x91, 0xfe,
+ 0xf5, 0x53, 0xa7, 0xb1, 0xce, 0x21, 0xc4, 0x12, 0xe1, 0x04, 0x47, 0xef,
+ 0x39, 0x25, 0x34, 0x7e, 0xb6, 0xbf, 0x75, 0x98, 0x96, 0x3f, 0xda, 0xf2,
+ 0x2c, 0x22, 0x7c, 0x34, 0xfe, 0xe5, 0xcf, 0x32, 0xc2, 0xd3, 0xbd, 0xae,
+ 0x20, 0xce, 0x84, 0x18, 0x56, 0xfa, 0xfe, 0x6b, 0xf3, 0x3a, 0x8b, 0xde,
+ 0xdf, 0xe6, 0x6a, 0xfd, 0x15, 0x73, 0xc1, 0x6b, 0x0c, 0x38, 0xfc, 0xdc,
+ 0xab, 0xb4, 0x54, 0x43, 0x4d, 0x63, 0xf4, 0x6e, 0x3b, 0x49, 0xd4, 0xb9,
+ 0x84, 0xff, 0x00, 0xae, 0x89, 0x29, 0x06, 0x63, 0xa5, 0xe0, 0xf7, 0xee,
+ 0x50, 0x5a, 0x5c, 0x4c, 0x01, 0x24, 0xf0, 0x02, 0xb7, 0x97, 0x47, 0xa6,
+ 0x7d, 0x27, 0x6a, 0xf0, 0x49, 0x7b, 0x87, 0xe4, 0x6a, 0xb7, 0x83, 0x4d,
+ 0x21, 0xad, 0x38, 0xcd, 0x3e, 0xad, 0x8d, 0x9d, 0xef, 0xe4, 0x6b, 0x06,
+ 0x21, 0x25, 0x20, 0xa3, 0xa4, 0x65, 0xbd, 0x86, 0xcb, 0x5a, 0x6b, 0xaf,
+ 0xb9, 0x22, 0x5d, 0xa7, 0x83, 0x56, 0xae, 0x5d, 0x79, 0x0f, 0xe8, 0x03,
+ 0x18, 0x4f, 0xd9, 0xf1, 0x47, 0xab, 0x5e, 0x9b, 0x64, 0x87, 0x6b, 0xb8,
+ 0x1d, 0x67, 0xdc, 0x75, 0x4e, 0xcc, 0xcb, 0x9a, 0xe2, 0xc7, 0xd7, 0xb9,
+ 0xce, 0x10, 0xdd, 0xae, 0x30, 0x1c, 0x39, 0xfb, 0xd1, 0x32, 0x32, 0x9e,
+ 0xde, 0x99, 0x96, 0xc3, 0x4b, 0x86, 0xe6, 0x6d, 0x2e, 0x9e, 0xc6, 0x23,
+ 0x74, 0xff, 0x00, 0x04, 0x94, 0xe0, 0xd4, 0x7f, 0x46, 0xc1, 0xe2, 0x4a,
+ 0x2b, 0x6c, 0x2d, 0x0c, 0x33, 0xc7, 0xf7, 0xa1, 0x51, 0x55, 0x96, 0x16,
+ 0x35, 0x90, 0x23, 0x5d, 0xce, 0x21, 0xad, 0x12, 0x7b, 0x92, 0x8e, 0xf1,
+ 0x55, 0x6e, 0x0d, 0x6b, 0x85, 0xb3, 0x23, 0x4f, 0xa2, 0x00, 0xf0, 0xf1,
+ 0x49, 0x4d, 0xfe, 0x97, 0x7b, 0xbe, 0xd0, 0x2a, 0x0d, 0x6b, 0x85, 0xa7,
+ 0x63, 0x77, 0xc0, 0x6e, 0xe2, 0x7d, 0xa7, 0x55, 0xd2, 0xd9, 0xfe, 0x2e,
+ 0x9b, 0x99, 0x77, 0xda, 0x32, 0x72, 0x05, 0x1b, 0x80, 0x06, 0x9a, 0xdb,
+ 0xbc, 0x02, 0x3c, 0x1c, 0x5c, 0x3e, 0xe8, 0x5c, 0x96, 0x3d, 0x36, 0xe5,
+ 0xbd, 0xb4, 0x52, 0xc2, 0xfb, 0x5d, 0xf4, 0x23, 0x48, 0x3e, 0x67, 0xb2,
+ 0xef, 0x71, 0xfa, 0x97, 0x52, 0xa7, 0x05, 0x94, 0x65, 0x3c, 0x3b, 0x26,
+ 0x96, 0x01, 0x6b, 0xc7, 0x07, 0xb7, 0x87, 0x3e, 0x29, 0x29, 0xc7, 0xb3,
+ 0xfc, 0x57, 0xed, 0x70, 0x76, 0x3f, 0x50, 0x98, 0xed, 0x65, 0x7f, 0xc5,
+ 0xae, 0xfe, 0x0b, 0x67, 0xa7, 0xfd, 0x53, 0x7e, 0x2e, 0x30, 0xa5, 0xf6,
+ 0xb0, 0xbc, 0x10, 0x43, 0x9a, 0xd2, 0x22, 0x09, 0x31, 0xf0, 0x5a, 0xd8,
+ 0x96, 0x39, 0xf4, 0xb5, 0xe0, 0x82, 0x79, 0x99, 0xfb, 0x91, 0xc5, 0xfb,
+ 0x9b, 0x35, 0x89, 0x8f, 0x3d, 0x38, 0x49, 0x4e, 0x55, 0x7d, 0x06, 0xcc,
+ 0x7b, 0xea, 0xb1, 0x8d, 0x65, 0x8c, 0xa9, 0xc5, 0xfa, 0x9f, 0x71, 0x27,
+ 0x51, 0xe1, 0xa4, 0xa3, 0xfd, 0xa7, 0xa9, 0xfd, 0xaf, 0x67, 0xd9, 0x46,
+ 0xc8, 0x8d, 0xdb, 0x75, 0xe3, 0x9d, 0xfb, 0xb6, 0xf3, 0xd9, 0x5e, 0x65,
+ 0xbb, 0x9a, 0x0b, 0x84, 0x1f, 0x12, 0xa5, 0xea, 0x7e, 0x6e, 0xe1, 0x33,
+ 0x1c, 0x84, 0x94, 0xf1, 0x9d, 0x3b, 0x17, 0x15, 0xf7, 0x96, 0xe4, 0x35,
+ 0xd6, 0x53, 0x60, 0x0c, 0x73, 0x1b, 0xcf, 0xd2, 0x0e, 0x9d, 0x35, 0xd2,
+ 0x11, 0xb3, 0x2b, 0xb5, 0x96, 0x7d, 0x99, 0xd6, 0xbd, 0xf4, 0x55, 0xa5,
+ 0x6d, 0xd4, 0x06, 0x48, 0xfa, 0x30, 0x47, 0x2a, 0x2d, 0x75, 0xd8, 0x75,
+ 0xd8, 0xfa, 0xe1, 0xce, 0x91, 0xc1, 0x26, 0x39, 0xef, 0xca, 0x09, 0xcd,
+ 0xea, 0x36, 0x38, 0x32, 0xca, 0xab, 0xad, 0xe7, 0x53, 0x3b, 0xa4, 0x41,
+ 0xee, 0x49, 0x49, 0x4c, 0x77, 0x6c, 0x64, 0x07, 0x19, 0x12, 0x24, 0xf2,
+ 0x67, 0xc1, 0x4f, 0xd7, 0xb2, 0xba, 0xc3, 0xaa, 0x3b, 0x77, 0x98, 0x04,
+ 0x1f, 0x2d, 0x47, 0xc1, 0x43, 0xa8, 0x58, 0xc7, 0x37, 0xd6, 0xd0, 0x3b,
+ 0x41, 0x63, 0x46, 0x9a, 0x78, 0xa1, 0x62, 0x12, 0xcf, 0x71, 0x01, 0xce,
+ 0xf7, 0x45, 0x66, 0x48, 0xf6, 0xf0, 0x0a, 0x4a, 0x4f, 0x4d, 0x2d, 0xcb,
+ 0xb0, 0x63, 0x39, 0xed, 0x6e, 0xe1, 0xb9, 0xef, 0x26, 0x03, 0x5a, 0x35,
+ 0xe7, 0xcc, 0xa5, 0xeb, 0xe3, 0x97, 0x5d, 0x45, 0x92, 0xfb, 0x1b, 0x5e,
+ 0xd0, 0x4f, 0x3b, 0x67, 0xe7, 0xa2, 0x0e, 0x5d, 0xed, 0xa9, 0xe1, 0xf5,
+ 0x80, 0x5e, 0xf3, 0xf9, 0xda, 0x82, 0x4f, 0xd2, 0x6a, 0xa1, 0x56, 0x45,
+ 0xbe, 0x8b, 0x99, 0x25, 0x97, 0x6a, 0xeb, 0x4b, 0xb5, 0x26, 0x5c, 0x3d,
+ 0xa7, 0x9e, 0xc9, 0x29, 0x8d, 0x98, 0xd5, 0x8b, 0x18, 0x2b, 0x73, 0x5e,
+ 0xf0, 0x5b, 0xb7, 0xdc, 0x4b, 0xbd, 0xc6, 0x38, 0x2a, 0xe3, 0x6f, 0x26,
+ 0xeb, 0x1d, 0x25, 0x81, 0x84, 0x8d, 0xcc, 0x1a, 0xc8, 0xf0, 0xfb, 0x95,
+ 0x3c, 0x5a, 0x2b, 0xb6, 0xd7, 0x32, 0xc0, 0xed, 0xad, 0x79, 0x7b, 0x8b,
+ 0x98, 0x1d, 0x1c, 0xb4, 0x01, 0xb7, 0x95, 0xd1, 0x60, 0xf4, 0xcb, 0x18,
+ 0xc9, 0x36, 0x87, 0xd0, 0xd8, 0x35, 0xbf, 0x6b, 0x63, 0xce, 0x12, 0x53,
+ 0x93, 0x97, 0x75, 0x36, 0x5a, 0x7e, 0xd3, 0x88, 0xfa, 0xc1, 0xd4, 0x5c,
+ 0xe0, 0x0b, 0x1d, 0xdf, 0xf3, 0x50, 0x9f, 0xd3, 0x71, 0xac, 0x87, 0xb1,
+ 0xa5, 0x8e, 0x1a, 0x87, 0x56, 0x3f, 0x21, 0xd1, 0x74, 0x59, 0x3d, 0x32,
+ 0xca, 0x1a, 0x6d, 0xdf, 0xba, 0x87, 0x7d, 0x27, 0x36, 0x40, 0xf8, 0xc4,
+ 0xe9, 0xf1, 0x0b, 0x32, 0xe6, 0x1c, 0x4d, 0xce, 0x6b, 0xde, 0x69, 0x0c,
+ 0xf5, 0x1e, 0x40, 0x0e, 0x86, 0x8e, 0x79, 0x00, 0xa4, 0xa4, 0x23, 0x12,
+ 0xbb, 0x6a, 0x2c, 0xbd, 0xc6, 0xc7, 0xfe, 0x6d, 0x8f, 0x68, 0x07, 0xe6,
+ 0x42, 0x93, 0x18, 0x6a, 0xa1, 0x94, 0x81, 0xac, 0xb9, 0xc6, 0x7b, 0x91,
+ 0x10, 0x95, 0x39, 0xcf, 0xb3, 0x4c, 0x3b, 0xe9, 0xca, 0x3d, 0xe8, 0x78,
+ 0xf4, 0xae, 0xf1, 0x88, 0xd3, 0xf2, 0x22, 0x0c, 0xcc, 0x7b, 0x01, 0x17,
+ 0x32, 0xcc, 0x7b, 0x1a, 0x25, 0xa1, 0xed, 0x88, 0x77, 0x84, 0xf7, 0x94,
+ 0x94, 0xf3, 0x39, 0x4d, 0x16, 0x75, 0x4b, 0x9a, 0x1a, 0x03, 0x9d, 0x61,
+ 0x03, 0x58, 0x92, 0x63, 0xfb, 0xd0, 0xde, 0xc7, 0x6e, 0x78, 0x63, 0xa4,
+ 0x34, 0x90, 0x1d, 0xc4, 0xc1, 0x89, 0x57, 0x72, 0x71, 0x9a, 0xde, 0xa8,
+ 0x72, 0xed, 0x7b, 0x5f, 0x4b, 0xed, 0xde, 0xca, 0xda, 0x49, 0x74, 0xc4,
+ 0x89, 0xd2, 0x04, 0xc2, 0xcc, 0x7b, 0xaa, 0x34, 0x1b, 0x1c, 0x5e, 0xdc,
+ 0x92, 0xf9, 0x65, 0x42, 0x48, 0x82, 0x61, 0x25, 0x25, 0xa9, 0xd7, 0x82,
+ 0x03, 0x79, 0x1c, 0x03, 0xa1, 0x3f, 0x02, 0x8e, 0x2c, 0x3c, 0x96, 0x90,
+ 0x47, 0x32, 0x55, 0x13, 0xd4, 0x1f, 0xab, 0x4b, 0x0e, 0xe1, 0xc1, 0x1e,
+ 0x3f, 0x05, 0xbf, 0xf5, 0x6a, 0xa7, 0x64, 0x5b, 0x71, 0xcc, 0xc7, 0x23,
+ 0xf4, 0x60, 0xd6, 0x6c, 0x6c, 0x8e, 0x75, 0x20, 0x39, 0x25, 0x20, 0xf4,
+ 0x5b, 0x75, 0x56, 0x3e, 0xb0, 0x5e, 0x5a, 0x03, 0x9e, 0xdf, 0x29, 0x8d,
+ 0x13, 0x51, 0x5c, 0x98, 0xb6, 0x59, 0x5e, 0xd3, 0x04, 0x6a, 0x77, 0x76,
+ 0x0b, 0x7a, 0xcc, 0x2a, 0xb7, 0x6d, 0x65, 0x7e, 0x98, 0xfc, 0xed, 0x9e,
+ 0xd9, 0xed, 0xdb, 0xc9, 0x50, 0xbb, 0x13, 0x1d, 0xb7, 0xb0, 0x31, 0xa7,
+ 0x7b, 0xcc, 0x06, 0x13, 0xcc, 0x24, 0xa4, 0x47, 0x75, 0xb5, 0x87, 0x10,
+ 0x2c, 0xa8, 0x08, 0x73, 0x40, 0xd4, 0x0f, 0x81, 0xfc, 0xa8, 0x6e, 0xe9,
+ 0xf4, 0x17, 0x35, 0xdb, 0xac, 0x67, 0xb7, 0x4f, 0x77, 0x6e, 0x04, 0x02,
+ 0x9b, 0x1f, 0x36, 0x9a, 0x7a, 0x89, 0xa6, 0xfa, 0x2c, 0xaa, 0xd6, 0x87,
+ 0x35, 0xd5, 0x12, 0x4f, 0xbc, 0x69, 0xe5, 0x21, 0xd2, 0xaf, 0xdb, 0x9b,
+ 0x81, 0xea, 0x57, 0x65, 0x44, 0x8a, 0x9d, 0xa4, 0x39, 0xa7, 0xdb, 0xb7,
+ 0xda, 0x44, 0xf9, 0x24, 0xa6, 0x8b, 0x2b, 0xcf, 0xb0, 0x91, 0x4d, 0xd6,
+ 0x16, 0x8e, 0x37, 0x46, 0x9f, 0x82, 0xb9, 0x4e, 0x16, 0x61, 0x0c, 0xba,
+ 0xfb, 0x41, 0xb1, 0xba, 0x01, 0x1d, 0x87, 0x12, 0xad, 0xd3, 0xd4, 0xba,
+ 0x75, 0x56, 0x9f, 0x49, 0xc6, 0xcb, 0xa2, 0x5b, 0x53, 0x19, 0xba, 0x74,
+ 0x9f, 0xa2, 0x3c, 0x91, 0x4e, 0x4d, 0x16, 0x62, 0x3b, 0x22, 0xbb, 0x5b,
+ 0xea, 0x07, 0x6d, 0x18, 0xe4, 0x43, 0x88, 0x3a, 0x6e, 0x49, 0x48, 0xb2,
+ 0x71, 0x0b, 0x9d, 0x53, 0x7d, 0xa2, 0xbb, 0x1c, 0x58, 0x49, 0xec, 0xe3,
+ 0x13, 0xc7, 0x82, 0xb5, 0xf5, 0x83, 0x17, 0x1f, 0xa3, 0x74, 0xa3, 0x66,
+ 0x36, 0xe7, 0x38, 0x07, 0x35, 0xd6, 0x93, 0xcd, 0x96, 0x37, 0xda, 0x7e,
+ 0x32, 0xb2, 0xc6, 0x6c, 0x64, 0x34, 0x57, 0x07, 0x63, 0x5c, 0xe6, 0xeb,
+ 0xcb, 0xb5, 0xe3, 0xcf, 0x45, 0x23, 0x93, 0x67, 0x5f, 0xb6, 0x8c, 0x6e,
+ 0xa5, 0x73, 0xd8, 0xc7, 0x7d, 0x11, 0x1e, 0xc0, 0xf6, 0x8d, 0x0b, 0x9a,
+ 0xd8, 0xe7, 0xc5, 0x25, 0x3c, 0x70, 0xc6, 0xb2, 0xda, 0xb7, 0xb9, 0xd0,
+ 0xca, 0xc4, 0x01, 0xdd, 0xc4, 0x99, 0xd3, 0xef, 0x45, 0xa8, 0xb6, 0xb0,
+ 0xe3, 0x4b, 0xb7, 0x56, 0xd6, 0xc6, 0xba, 0x6f, 0x3f, 0x9d, 0xf3, 0x1d,
+ 0x97, 0x4c, 0xcf, 0xaa, 0x2d, 0xb4, 0xfa, 0x97, 0xb9, 0xd6, 0x58, 0x1c,
+ 0x40, 0x0d, 0x86, 0x32, 0x3f, 0x34, 0x36, 0x75, 0x84, 0x66, 0xfd, 0x50,
+ 0xaa, 0x36, 0x30, 0xba, 0xb7, 0xbc, 0xc8, 0x69, 0xda, 0xf0, 0x1c, 0x3b,
+ 0xf0, 0x3f, 0x2a, 0x4a, 0x79, 0xec, 0x7c, 0x37, 0xe6, 0xd5, 0x5b, 0xc8,
+ 0x86, 0x03, 0xb6, 0x4f, 0xd2, 0x21, 0xbe, 0x1f, 0x24, 0x5b, 0x0b, 0x7d,
+ 0x6f, 0x4e, 0xba, 0x9d, 0x50, 0xaf, 0x56, 0x83, 0xbb, 0xda, 0x7b, 0x8f,
+ 0x82, 0xe8, 0xdd, 0xf5, 0x5b, 0x3b, 0x1a, 0xad, 0xf4, 0xda, 0xcb, 0xb6,
+ 0x72, 0x08, 0xd8, 0xef, 0x81, 0x1a, 0x84, 0x21, 0x4e, 0x17, 0xba, 0xbc,
+ 0xc3, 0xb5, 0xda, 0x07, 0xcf, 0xb4, 0x83, 0xe0, 0x0f, 0x29, 0x29, 0xca,
+ 0x69, 0xc2, 0x00, 0x4b, 0x81, 0xb6, 0x01, 0x20, 0x12, 0xdf, 0x98, 0xd0,
+ 0x09, 0x43, 0xce, 0xaf, 0x1a, 0xca, 0x1c, 0xc6, 0x38, 0xb2, 0xc7, 0x0f,
+ 0x67, 0x32, 0x63, 0x58, 0x23, 0xc0, 0xa3, 0x66, 0x59, 0xd0, 0x1e, 0x1b,
+ 0x8f, 0x88, 0x2f, 0x37, 0xf0, 0xcb, 0x27, 0x73, 0x74, 0xe4, 0x41, 0xd5,
+ 0x41, 0xf8, 0xc1, 0x96, 0x36, 0xe7, 0x0d, 0xde, 0xa4, 0xb5, 0xb2, 0x60,
+ 0xed, 0xf2, 0x03, 0xc8, 0x24, 0xa7, 0x05, 0xad, 0x73, 0xab, 0x3e, 0xc2,
+ 0xe2, 0xcf, 0xa4, 0x75, 0x3b, 0x7e, 0x29, 0xf1, 0x68, 0xbb, 0x31, 0xe2,
+ 0xaa, 0x81, 0x00, 0x19, 0xdf, 0xe0, 0x16, 0xd5, 0x78, 0x35, 0x86, 0x34,
+ 0x09, 0x34, 0xbe, 0xc9, 0xb0, 0xb7, 0xe9, 0x11, 0xdf, 0x53, 0xe0, 0x60,
+ 0xab, 0xf8, 0x58, 0x37, 0x74, 0xe6, 0x96, 0x43, 0x0b, 0x4c, 0x3d, 0xaf,
+ 0x23, 0xdd, 0x07, 0xdb, 0xa0, 0x6c, 0x7c, 0x52, 0x52, 0x0e, 0x9f, 0x8e,
+ 0xdc, 0x0b, 0x5b, 0x4d, 0xdb, 0x9d, 0x49, 0x90, 0xdb, 0x3e, 0x8e, 0xc7,
+ 0x9d, 0x77, 0x69, 0xe5, 0xa6, 0xa8, 0xd9, 0xdd, 0x7f, 0x13, 0x69, 0xa2,
+ 0xbb, 0x1c, 0x32, 0x03, 0x36, 0xb9, 0xfa, 0x96, 0xb9, 0xdc, 0xff, 0x00,
+ 0xb1, 0x5d, 0xa7, 0x26, 0xbd, 0xc4, 0x5a, 0x19, 0x6b, 0x26, 0x08, 0x0d,
+ 0x3a, 0xca, 0x1e, 0x4f, 0x49, 0xc3, 0xbd, 0xed, 0xb3, 0x19, 0xa1, 0x8e,
+ 0x6f, 0xba, 0x07, 0x1e, 0xde, 0xe9, 0x29, 0xb3, 0xd2, 0xfe, 0xb6, 0xf4,
+ 0xbb, 0x18, 0x71, 0x2f, 0xdd, 0x89, 0x77, 0xd1, 0x1b, 0xe7, 0x6c, 0x8e,
+ 0x24, 0x8e, 0x3c, 0xd6, 0xbf, 0x4a, 0xcc, 0x36, 0xd3, 0x65, 0x5b, 0x9b,
+ 0xa3, 0xdc, 0x7d, 0x9e, 0xe8, 0x69, 0xd4, 0x42, 0xe2, 0x1f, 0xd0, 0x58,
+ 0x6e, 0xf5, 0x76, 0x93, 0x4b, 0x64, 0x38, 0x93, 0xb9, 0xee, 0x24, 0xe9,
+ 0xa7, 0x78, 0x41, 0x77, 0x4f, 0xc8, 0xc6, 0xbd, 0xbf, 0x64, 0xc8, 0x7d,
+ 0x42, 0x76, 0x87, 0x07, 0x39, 0xa4, 0x1e, 0x75, 0x84, 0x94, 0xfa, 0x16,
+ 0x45, 0xd9, 0x01, 0xee, 0x65, 0x56, 0x07, 0x87, 0x34, 0xb0, 0x87, 0x0d,
+ 0x41, 0x89, 0xe1, 0x0b, 0xf6, 0xc5, 0xbb, 0xbd, 0x1f, 0x4d, 0xb1, 0x1e,
+ 0x06, 0x27, 0xe8, 0x7e, 0x55, 0xc8, 0x9e, 0xa7, 0xd6, 0xb1, 0x0c, 0xb6,
+ 0xdf, 0x5d, 0xe1, 0xc4, 0x1d, 0xe3, 0xda, 0x64, 0x6b, 0x27, 0x9f, 0x35,
+ 0x6f, 0xfe, 0x73, 0x65, 0xfa, 0x3b, 0xbe, 0xca, 0xcf, 0xb5, 0x47, 0x3b,
+ 0x4f, 0xd1, 0xfb, 0x92, 0x53, 0x72, 0x9b, 0xed, 0x6d, 0x6f, 0x36, 0xc5,
+ 0x41, 0x93, 0x2e, 0x33, 0x05, 0xc2, 0x23, 0x9f, 0x14, 0xd1, 0x43, 0xab,
+ 0x37, 0xdc, 0xf2, 0x1e, 0x41, 0x00, 0x17, 0x6e, 0x07, 0x71, 0x9f, 0xa5,
+ 0xae, 0x88, 0x9d, 0x48, 0x19, 0xa0, 0x34, 0x16, 0xd6, 0xca, 0x99, 0x53,
+ 0xdf, 0x71, 0x02, 0x75, 0x3b, 0x9c, 0x5b, 0xe3, 0xa4, 0xac, 0xeb, 0x18,
+ 0xfc, 0x7b, 0x77, 0x7a, 0x66, 0xda, 0x6f, 0x71, 0x14, 0xb8, 0x49, 0x92,
+ 0x3b, 0x10, 0x08, 0x8d, 0x74, 0x49, 0x4d, 0x7c, 0x97, 0x9a, 0x32, 0x4d,
+ 0x77, 0xb7, 0xe9, 0x06, 0x80, 0x01, 0xf6, 0x6e, 0xfe, 0x21, 0x68, 0xbd,
+ 0xa6, 0xa7, 0xd3, 0x88, 0xdd, 0xa1, 0xd7, 0x01, 0x36, 0xf3, 0x1b, 0xb9,
+ 0x8f, 0x33, 0xc2, 0x7c, 0x5b, 0x3a, 0x60, 0x2f, 0xb7, 0x24, 0x16, 0x64,
+ 0xd4, 0x3f, 0x41, 0x53, 0x41, 0x3b, 0xb6, 0x0f, 0x13, 0xa7, 0xd2, 0xd1,
+ 0x07, 0x7d, 0x35, 0xd8, 0xc7, 0xbc, 0x38, 0x5b, 0x74, 0x10, 0x1c, 0x49,
+ 0x68, 0x70, 0xd4, 0xbd, 0xbd, 0xc3, 0x92, 0x53, 0x5d, 0x8d, 0xb5, 0xc7,
+ 0x24, 0x5f, 0xfc, 0xe3, 0x1d, 0x01, 0xa3, 0xb3, 0xda, 0x20, 0x9d, 0x15,
+ 0x6c, 0x67, 0xbb, 0x79, 0x60, 0x1b, 0x89, 0x07, 0x74, 0x91, 0xee, 0x3e,
+ 0x24, 0xab, 0x8e, 0xc5, 0x1e, 0x9b, 0xf2, 0x5a, 0x40, 0xd4, 0x7a, 0x4c,
+ 0x99, 0xdc, 0xf6, 0x39, 0xa5, 0xd2, 0x20, 0x69, 0xfd, 0xea, 0x23, 0xa3,
+ 0xe7, 0xd6, 0xeb, 0x2b, 0xa7, 0x1a, 0xcb, 0x1a, 0xf8, 0x71, 0x7b, 0x1a,
+ 0x35, 0x64, 0xee, 0xdb, 0xf2, 0x49, 0x4e, 0x7b, 0x9b, 0x9d, 0x56, 0x4d,
+ 0x97, 0x61, 0x99, 0xa4, 0x38, 0x0b, 0xab, 0x0e, 0xfc, 0xf6, 0xeb, 0x23,
+ 0xc9, 0x6f, 0x7d, 0x5e, 0xfa, 0xc4, 0xeb, 0xf3, 0x5b, 0x83, 0x92, 0xd0,
+ 0xca, 0xec, 0x3b, 0xe9, 0x74, 0x6d, 0xf7, 0x01, 0xf4, 0x4f, 0x64, 0x1a,
+ 0xba, 0x7d, 0x15, 0xd1, 0x95, 0x99, 0x8c, 0xe0, 0xe0, 0xc6, 0x35, 0xaf,
+ 0x6d, 0x8c, 0x2c, 0x7b, 0x0c, 0xc3, 0x86, 0xde, 0x1d, 0x33, 0xd9, 0x67,
+ 0xe4, 0x74, 0xfb, 0x5e, 0x68, 0x63, 0x1a, 0x68, 0xa6, 0x8f, 0xd2, 0x58,
+ 0xf3, 0xa6, 0xd0, 0x7e, 0x8f, 0xe0, 0x92, 0x9f, 0x44, 0xb3, 0x2b, 0x00,
+ 0x54, 0xe1, 0x69, 0x6f, 0xa2, 0x79, 0x71, 0x22, 0x09, 0x3d, 0xb5, 0x59,
+ 0x78, 0xf8, 0x75, 0xdf, 0x98, 0xf3, 0x5e, 0x3e, 0xda, 0xe9, 0x3a, 0x43,
+ 0xf7, 0x02, 0xdf, 0x36, 0x71, 0xaf, 0x82, 0xe1, 0xb3, 0x73, 0xb2, 0x28,
+ 0xcb, 0xbe, 0xb6, 0x9d, 0xf4, 0xbd, 0xbb, 0xc5, 0x4f, 0x12, 0xc0, 0x40,
+ 0x04, 0x44, 0xf1, 0xa8, 0xd1, 0x4b, 0x1b, 0xeb, 0x47, 0x55, 0x93, 0xb6,
+ 0xc2, 0xd7, 0x3b, 0x9d, 0xa0, 0x09, 0x8f, 0x82, 0x4a, 0x68, 0x75, 0x2c,
+ 0x6c, 0xeb, 0xba, 0xb6, 0x45, 0x99, 0x75, 0xdc, 0x2e, 0x7d, 0x8e, 0x26,
+ 0x5a, 0x77, 0x34, 0x4f, 0xb7, 0xe5, 0x0b, 0x42, 0x96, 0xf5, 0x2a, 0x30,
+ 0x89, 0xb8, 0x9c, 0x8a, 0xea, 0x25, 0xcd, 0x71, 0x92, 0xe6, 0x08, 0x03,
+ 0xbe, 0xb1, 0xae, 0xab, 0x4b, 0xa7, 0x75, 0xbc, 0x8c, 0xac, 0xca, 0x71,
+ 0xf3, 0x80, 0x7b, 0x5e, 0xed, 0xad, 0xb5, 0xc3, 0x51, 0xa4, 0xf2, 0xba,
+ 0x5b, 0x2a, 0xc1, 0x6d, 0x0e, 0x06, 0xea, 0xe1, 0xed, 0x20, 0x33, 0x82,
+ 0xe3, 0x07, 0xdb, 0xf3, 0x09, 0x29, 0xe4, 0xaa, 0xea, 0x0f, 0x38, 0xac,
+ 0xc7, 0xc7, 0x6c, 0x55, 0xc3, 0xde, 0x5a, 0x1c, 0xfd, 0x7e, 0x94, 0x11,
+ 0xc4, 0xaa, 0x14, 0xf4, 0xda, 0xb2, 0x1f, 0xfa, 0x32, 0xed, 0x1a, 0x03,
+ 0x1c, 0x5a, 0x4f, 0x3f, 0x3f, 0x15, 0xab, 0x4e, 0x0e, 0x3b, 0x1d, 0x5d,
+ 0xac, 0x71, 0x2c, 0x67, 0xb6, 0x26, 0x37, 0xb4, 0xfd, 0x15, 0x70, 0xd7,
+ 0x8b, 0x8f, 0xb8, 0x56, 0xdf, 0x4c, 0x9f, 0x7b, 0x3d, 0x30, 0x0b, 0x98,
+ 0xe9, 0x3b, 0x44, 0xbb, 0xf7, 0x7b, 0x24, 0xa6, 0xae, 0x17, 0x4f, 0xc3,
+ 0x6d, 0x2d, 0x7d, 0xf4, 0xd7, 0xf6, 0x86, 0x38, 0x8a, 0x89, 0x04, 0x1f,
+ 0x61, 0x31, 0xbd, 0xbf, 0x35, 0x7f, 0x07, 0x22, 0xaa, 0x0b, 0xde, 0x5c,
+ 0x03, 0xec, 0x71, 0x1b, 0x9c, 0x39, 0x68, 0xf0, 0x95, 0x5e, 0xd6, 0x0c,
+ 0x86, 0x36, 0xe7, 0x69, 0x77, 0xa8, 0x4d, 0xae, 0x3f, 0x48, 0x99, 0xf7,
+ 0x1f, 0x99, 0x09, 0x5e, 0xc9, 0x2f, 0xd8, 0x22, 0xa7, 0x38, 0x7d, 0x2e,
+ 0x5b, 0xe4, 0x92, 0x9b, 0x39, 0x19, 0xa3, 0x73, 0x41, 0x6f, 0xa9, 0x0e,
+ 0x91, 0xb7, 0x50, 0x47, 0x7e, 0x15, 0x19, 0x7b, 0xb3, 0xc5, 0x91, 0xe9,
+ 0xd7, 0x3b, 0x8e, 0xe1, 0x07, 0x4e, 0xea, 0x76, 0xd2, 0xe7, 0xd8, 0xd2,
+ 0xd7, 0xfb, 0x5f, 0x21, 0xa7, 0xb0, 0x23, 0x4e, 0xc9, 0xf2, 0x2a, 0x6b,
+ 0x81, 0x01, 0xbf, 0x9e, 0x09, 0x8d, 0x48, 0x9d, 0x1c, 0x39, 0xee, 0x92,
+ 0x9c, 0x6f, 0x52, 0xfe, 0xa1, 0x7e, 0x45, 0xf7, 0x7e, 0x88, 0xd6, 0x2c,
+ 0x8b, 0xc8, 0x92, 0x5e, 0xe7, 0x34, 0x72, 0x3b, 0x80, 0xac, 0xd0, 0xca,
+ 0x5f, 0x47, 0xa2, 0xf7, 0x80, 0x2e, 0x1b, 0x4b, 0xa3, 0x76, 0xd7, 0x91,
+ 0x3b, 0xe3, 0xc0, 0xeb, 0x2b, 0x42, 0xfa, 0xea, 0xf4, 0x8b, 0x58, 0xc0,
+ 0xf2, 0xe7, 0x90, 0xd0, 0x38, 0x86, 0x83, 0x1c, 0xfc, 0x54, 0x19, 0x82,
+ 0x5c, 0xcd, 0x3d, 0xba, 0x02, 0x36, 0x69, 0x2e, 0xee, 0x20, 0x78, 0x14,
+ 0x94, 0xe7, 0x3b, 0xa6, 0xe4, 0x55, 0x91, 0x5d, 0xd8, 0xcf, 0xf4, 0x8b,
+ 0x23, 0xd4, 0xba, 0x76, 0x10, 0x24, 0xd6, 0x59, 0xe7, 0xed, 0x46, 0xc8,
+ 0xa6, 0x96, 0xbe, 0x9c, 0x56, 0x38, 0x86, 0x54, 0x1c, 0xfa, 0xaf, 0x02,
+ 0x07, 0xb7, 0x58, 0x7b, 0x41, 0x3a, 0x38, 0x48, 0x47, 0xaa, 0x2d, 0xa8,
+ 0x82, 0x46, 0xf6, 0x18, 0x76, 0xbe, 0xd7, 0x06, 0x0f, 0x0f, 0x81, 0x85,
+ 0x67, 0x27, 0x23, 0x1b, 0xec, 0x8c, 0xc4, 0xf4, 0xd8, 0xc6, 0xec, 0x20,
+ 0xb9, 0xba, 0x9b, 0x1d, 0x1b, 0x4c, 0xbf, 0xb2, 0x4a, 0x69, 0x61, 0x61,
+ 0x93, 0x4b, 0xac, 0xae, 0xc0, 0xc0, 0x77, 0x6c, 0x07, 0xdc, 0x5a, 0x5c,
+ 0x0b, 0x5c, 0xe4, 0x5a, 0xc3, 0x71, 0xde, 0xc3, 0xea, 0x6f, 0x2c, 0x21,
+ 0xa0, 0x8d, 0x3e, 0x7a, 0xf7, 0x51, 0x0d, 0x7d, 0x4f, 0x60, 0x0e, 0x15,
+ 0xd4, 0xd1, 0xec, 0xf1, 0x73, 0x40, 0x31, 0x3e, 0x09, 0xc5, 0x76, 0xd9,
+ 0x89, 0x66, 0x4d, 0xcd, 0x2d, 0xad, 0xa4, 0x16, 0x90, 0x3d, 0xae, 0x83,
+ 0xba, 0x44, 0x79, 0x24, 0xa7, 0x7b, 0x1b, 0x38, 0x3a, 0xa1, 0xea, 0x11,
+ 0xb8, 0x7d, 0x31, 0xc3, 0xa4, 0x7d, 0xea, 0x56, 0x65, 0x07, 0x9d, 0x8f,
+ 0x30, 0x0f, 0xba, 0x7b, 0x1f, 0x05, 0x80, 0x0d, 0xa1, 0xdb, 0x34, 0x16,
+ 0xb7, 0x50, 0xf9, 0xe5, 0xae, 0xf8, 0x26, 0x7d, 0xce, 0x66, 0xca, 0x9e,
+ 0xff, 0x00, 0x7d, 0x9a, 0x86, 0xf3, 0xc6, 0xa9, 0x29, 0xd6, 0xc4, 0xea,
+ 0x4f, 0xab, 0xd6, 0xaa, 0xe3, 0x23, 0x79, 0x93, 0xcf, 0x90, 0x85, 0x9f,
+ 0xd6, 0x6b, 0x6e, 0x63, 0xeb, 0x0d, 0x0e, 0x16, 0x0f, 0xe6, 0xee, 0x1c,
+ 0xe8, 0x3f, 0x38, 0x26, 0x64, 0x7a, 0x6e, 0xb1, 0xd1, 0x2c, 0x96, 0x82,
+ 0x79, 0xf7, 0x70, 0x0a, 0x83, 0xdd, 0x6f, 0xe8, 0xdf, 0x5b, 0x1c, 0xe7,
+ 0x44, 0x6c, 0x92, 0x34, 0xf8, 0x7e, 0x44, 0x94, 0xd5, 0xa7, 0x05, 0xb4,
+ 0x34, 0x58, 0xc0, 0x1d, 0x60, 0x10, 0xe7, 0x0e, 0x1c, 0x49, 0xe4, 0x11,
+ 0xa2, 0x2d, 0xf4, 0x5e, 0xca, 0xc1, 0xf4, 0xcb, 0xa4, 0xc8, 0x6b, 0x49,
+ 0x24, 0x4e, 0xa3, 0xe4, 0xa6, 0x19, 0x75, 0x65, 0xfb, 0x6a, 0x3e, 0x98,
+ 0x1b, 0x83, 0xeb, 0x71, 0x04, 0x3b, 0xc3, 0xbc, 0xc2, 0xb1, 0x0e, 0xfe,
+ 0x73, 0x21, 0xf0, 0x74, 0x3e, 0x04, 0x77, 0x8f, 0xbd, 0x25, 0x35, 0xe9,
+ 0xfb, 0x50, 0xa5, 0xa0, 0x8d, 0xaf, 0x13, 0xfc, 0xe0, 0x12, 0x08, 0x3c,
+ 0x8f, 0x1f, 0x9a, 0xb3, 0x50, 0x7e, 0xaf, 0xb5, 0xd2, 0xf1, 0x23, 0xef,
+ 0x03, 0x95, 0x17, 0xe4, 0xd5, 0x90, 0xc1, 0xb2, 0x64, 0x10, 0x18, 0xfe,
+ 0x3e, 0x8f, 0x6d, 0x7c, 0x54, 0xe5, 0xa1, 0xee, 0x69, 0x00, 0x38, 0x09,
+ 0x26, 0x7c, 0xb4, 0x09, 0x29, 0xab, 0xf4, 0x4b, 0xb7, 0x3b, 0xdc, 0x1c,
+ 0x48, 0x1a, 0x46, 0xa2, 0x5c, 0x4f, 0xc1, 0x5b, 0xa6, 0xcc, 0x76, 0xc3,
+ 0xdb, 0x6b, 0x9f, 0xb8, 0x09, 0x6b, 0xc6, 0xd1, 0xa7, 0x2b, 0x3d, 0xec,
+ 0xbb, 0xd4, 0xd8, 0xea, 0xe7, 0x79, 0x86, 0x9d, 0x20, 0xf8, 0x6a, 0x11,
+ 0x5d, 0x56, 0xfd, 0x8f, 0xb0, 0x17, 0x3d, 0xa0, 0x00, 0xd6, 0xf7, 0x00,
+ 0x76, 0xd5, 0x25, 0x3a, 0x67, 0x1f, 0x0c, 0x3a, 0xcc, 0x8f, 0xd1, 0xd5,
+ 0x69, 0x6c, 0xbe, 0xd6, 0x38, 0xb1, 0xa4, 0x7f, 0x2d, 0xbf, 0x44, 0xac,
+ 0xfc, 0x8e, 0xad, 0xd3, 0x32, 0x1c, 0x2a, 0xc5, 0x05, 0xd6, 0x4f, 0xba,
+ 0xf6, 0x8d, 0xac, 0x26, 0x3e, 0x52, 0xaa, 0xdf, 0xd2, 0xe8, 0xb9, 0xc2,
+ 0xcb, 0xc5, 0x96, 0xb0, 0x0f, 0x63, 0x1a, 0xed, 0x04, 0x77, 0x81, 0xca,
+ 0x9e, 0x26, 0x0e, 0x2d, 0x7a, 0xd0, 0xc2, 0xe0, 0x24, 0xeb, 0xc0, 0xf3,
+ 0xed, 0xf9, 0x12, 0x53, 0x2a, 0xaf, 0xc3, 0x7b, 0xa1, 0xb3, 0xe9, 0x99,
+ 0x86, 0xf3, 0x04, 0xe8, 0x49, 0x4d, 0xf6, 0x3c, 0x6d, 0xdf, 0x4b, 0x4d,
+ 0xbb, 0x76, 0xce, 0xb3, 0xe2, 0xac, 0x0c, 0x4a, 0xac, 0x78, 0x76, 0xd0,
+ 0xd3, 0xa1, 0x30, 0x39, 0x27, 0x9e, 0x23, 0x45, 0x3f, 0x42, 0xbf, 0xb5,
+ 0x7a, 0x1b, 0x3f, 0x49, 0xbe, 0x36, 0xed, 0xf9, 0xee, 0xf1, 0xf3, 0x49,
+ 0x4f, 0x47, 0x95, 0xd1, 0xab, 0xcd, 0xa5, 0xa6, 0xe7, 0x38, 0xd8, 0xc7,
+ 0x39, 0xf6, 0x96, 0x89, 0x05, 0xda, 0x93, 0x1d, 0xfb, 0xc6, 0x8b, 0x2f,
+ 0xad, 0x11, 0x7b, 0xeb, 0xa2, 0xba, 0xec, 0x73, 0xc3, 0x61, 0xc4, 0x6a,
+ 0x58, 0x22, 0x37, 0x69, 0xe1, 0xe1, 0xf1, 0x50, 0xaf, 0xa9, 0xcd, 0x15,
+ 0x57, 0x66, 0x55, 0x96, 0x33, 0x40, 0x6b, 0x0c, 0x0d, 0x0f, 0xd6, 0x40,
+ 0x3e, 0x52, 0xb4, 0x71, 0xba, 0xa3, 0x9f, 0x5b, 0xc5, 0x6d, 0x63, 0x2d,
+ 0x0d, 0x60, 0xde, 0x20, 0x17, 0x07, 0x4f, 0x8f, 0x82, 0x4a, 0x71, 0xf0,
+ 0x7a, 0x70, 0xbb, 0x68, 0xb4, 0x06, 0x97, 0x87, 0x10, 0xfd, 0xdc, 0x1e,
+ 0xd3, 0x3c, 0x49, 0x4f, 0x6f, 0x4d, 0xcb, 0x7e, 0x63, 0x71, 0xed, 0xad,
+ 0xc0, 0x30, 0x7e, 0x8e, 0xb1, 0xab, 0x43, 0x41, 0x81, 0xa8, 0x93, 0xe6,
+ 0xb7, 0x69, 0xcb, 0xa4, 0x5b, 0x63, 0xdc, 0xd0, 0x5b, 0x0c, 0x61, 0xb0,
+ 0x34, 0x34, 0x13, 0x12, 0x0c, 0x77, 0xf0, 0x5a, 0x95, 0x58, 0xdb, 0x0e,
+ 0xf3, 0x0d, 0x76, 0xbb, 0x60, 0xcc, 0xb4, 0x24, 0xa7, 0x98, 0xb3, 0xa2,
+ 0xe4, 0x8b, 0x5b, 0x5d, 0x75, 0xd6, 0x58, 0xc6, 0xed, 0x2e, 0xb7, 0x87,
+ 0x1d, 0xd2, 0x40, 0x03, 0xc7, 0x52, 0x4f, 0xf7, 0x2d, 0x3b, 0xba, 0x45,
+ 0xb9, 0x55, 0xd7, 0x8e, 0xf7, 0x39, 0xb5, 0xd4, 0xd1, 0xab, 0x09, 0x6b,
+ 0x1f, 0xe2, 0x1c, 0xd9, 0x99, 0x1f, 0x18, 0x2b, 0x40, 0xd9, 0x4d, 0xa5,
+ 0x8f, 0xb0, 0xec, 0x01, 0xc4, 0x19, 0x30, 0x37, 0x04, 0x60, 0xe6, 0x87,
+ 0x18, 0xd3, 0x8d, 0xa0, 0x1e, 0x74, 0xf0, 0x49, 0x4e, 0x1d, 0x1d, 0x29,
+ 0xb8, 0x98, 0x4d, 0xc5, 0xdd, 0xbf, 0x19, 0x96, 0x39, 0xfb, 0x83, 0x7d,
+ 0xcf, 0x30, 0xd7, 0x6d, 0x8f, 0xeb, 0x02, 0xa8, 0xf5, 0x2c, 0x49, 0xbe,
+ 0xc6, 0x96, 0xee, 0xaa, 0x3e, 0x84, 0xc8, 0x68, 0x68, 0x92, 0x67, 0xc3,
+ 0x4d, 0x65, 0x6e, 0xe5, 0xef, 0xa0, 0xb9, 0xd2, 0x76, 0xde, 0x44, 0x78,
+ 0x31, 0xdf, 0xbd, 0xe5, 0xa2, 0xc6, 0xce, 0x7d, 0xcc, 0xde, 0xd6, 0xb4,
+ 0x9a, 0x1e, 0xd0, 0x41, 0xdb, 0x13, 0xb8, 0xfb, 0x99, 0xbb, 0x93, 0xaa,
+ 0x4a, 0x73, 0x6f, 0xf4, 0x20, 0x86, 0xd4, 0x2e, 0x6d, 0xad, 0x12, 0xed,
+ 0xb0, 0x1f, 0xc8, 0x1e, 0xde, 0x61, 0x65, 0xbf, 0x0e, 0xaa, 0xee, 0xfd,
+ 0x1d, 0x2d, 0xae, 0x04, 0x7a, 0x2c, 0x06, 0x1c, 0xef, 0xe5, 0x3f, 0x98,
+ 0xf2, 0x5b, 0xae, 0x02, 0xc7, 0xef, 0x73, 0x88, 0xac, 0x91, 0xb8, 0xf1,
+ 0x04, 0x0e, 0xff, 0x00, 0xc9, 0x51, 0xac, 0x8d, 0xe4, 0x44, 0x8d, 0xd3,
+ 0x5b, 0x40, 0xd0, 0x0d, 0x4f, 0x3f, 0x34, 0x94, 0xf3, 0xc7, 0xa6, 0xe6,
+ 0xb4, 0x3e, 0xe6, 0x13, 0xbb, 0x52, 0xc6, 0x0f, 0x6b, 0x98, 0xcf, 0x0d,
+ 0x78, 0x95, 0x6a, 0x9a, 0x72, 0x6c, 0x61, 0x01, 0xae, 0x63, 0x2a, 0x6b,
+ 0x4e, 0xe8, 0x71, 0x6b, 0x5e, 0x4f, 0x0e, 0x92, 0xb4, 0x0b, 0xa9, 0x1b,
+ 0x8b, 0x2b, 0x30, 0xd2, 0x47, 0xb9, 0xdb, 0xa4, 0xff, 0x00, 0x2f, 0xc0,
+ 0x29, 0xd1, 0x65, 0xc5, 0x96, 0xb1, 0xad, 0x1e, 0x9b, 0x88, 0x73, 0xa4,
+ 0x90, 0x64, 0x7b, 0xb5, 0xf1, 0x10, 0x92, 0x90, 0x1a, 0xab, 0x6b, 0x7f,
+ 0x47, 0xb9, 0x8d, 0xa8, 0x87, 0x16, 0x72, 0xd8, 0x77, 0xee, 0x9f, 0x25,
+ 0x17, 0x39, 0xb7, 0x0b, 0x0d, 0x95, 0x87, 0x59, 0xbd, 0xb3, 0xc8, 0x22,
+ 0x4f, 0x6d, 0x3c, 0xd5, 0xea, 0x9a, 0xc6, 0xb8, 0xb9, 0xee, 0x3e, 0xf7,
+ 0x34, 0xb4, 0x1d, 0x01, 0x04, 0x38, 0xb7, 0xef, 0xd7, 0x45, 0x2a, 0xaa,
+ 0xa3, 0x16, 0xf2, 0xf2, 0x43, 0xf7, 0x19, 0xd9, 0xac, 0x12, 0x4f, 0x6f,
+ 0x1d, 0x52, 0x52, 0x1c, 0x66, 0x59, 0x73, 0x43, 0x6c, 0x9a, 0xce, 0xdf,
+ 0x65, 0x64, 0x41, 0x68, 0x9d, 0xce, 0x71, 0xf3, 0x42, 0x73, 0xed, 0x61,
+ 0x0c, 0xf4, 0x9d, 0xea, 0x5a, 0xef, 0x4c, 0x41, 0xd3, 0x6b, 0x7f, 0x3b,
+ 0xe2, 0x55, 0xaf, 0xb4, 0x34, 0x5a, 0xeb, 0x20, 0x87, 0x9f, 0x6f, 0x88,
+ 0x20, 0x15, 0x2b, 0x3d, 0x37, 0x1f, 0x5f, 0x76, 0xd7, 0x07, 0x1f, 0xa5,
+ 0xc0, 0x23, 0x4d, 0x12, 0x53, 0x94, 0xe3, 0x92, 0xd7, 0x7a, 0x87, 0xf4,
+ 0x6c, 0x73, 0xdc, 0xd2, 0x62, 0x3d, 0xec, 0xd7, 0x83, 0xca, 0x95, 0xc1,
+ 0xfe, 0x93, 0xf2, 0x58, 0x1c, 0x6b, 0x23, 0x68, 0x6b, 0x48, 0xdc, 0x5e,
+ 0x4b, 0x46, 0xef, 0x2f, 0x15, 0xa7, 0x63, 0x5e, 0x1a, 0xc0, 0xda, 0xc5,
+ 0x81, 0x84, 0xb9, 0xb2, 0x27, 0xe9, 0x73, 0x0a, 0x36, 0x63, 0x30, 0xd6,
+ 0x3d, 0x59, 0x6e, 0xff, 0x00, 0x69, 0x60, 0xe2, 0x39, 0x93, 0xe0, 0x92,
+ 0x9c, 0xdd, 0xd6, 0x11, 0xa0, 0xd1, 0xba, 0xb4, 0x79, 0x91, 0xba, 0x0f,
+ 0xdc, 0xa6, 0x32, 0x76, 0x46, 0xe7, 0x86, 0xbc, 0x19, 0x0e, 0x3c, 0x38,
+ 0x73, 0xa2, 0xbb, 0xe8, 0xb5, 0x80, 0x16, 0xb8, 0x1a, 0x83, 0x48, 0x77,
+ 0xb4, 0x7c, 0xb8, 0xe7, 0x95, 0x46, 0xcc, 0x50, 0xfd, 0xb8, 0xf5, 0x86,
+ 0x4e, 0x8f, 0xde, 0x44, 0x10, 0x1a, 0x35, 0x89, 0x9f, 0x34, 0x94, 0xc4,
+ 0xd3, 0x4d, 0x95, 0xd9, 0x6b, 0x5c, 0x1a, 0xe1, 0xee, 0x80, 0xe8, 0x7b,
+ 0xe7, 0x9d, 0x36, 0xf3, 0xf3, 0x4c, 0x4d, 0x36, 0x8f, 0xa6, 0x1a, 0xe1,
+ 0xab, 0x9a, 0xed, 0x08, 0x03, 0x83, 0xaf, 0xf7, 0xa5, 0x90, 0xd0, 0xf0,
+ 0xda, 0x98, 0xe3, 0x59, 0xa7, 0x41, 0xb4, 0x06, 0xee, 0x6f, 0x67, 0x38,
+ 0xc6, 0xa7, 0xcd, 0x21, 0x8d, 0x76, 0xc6, 0xb5, 0x9b, 0x5b, 0x04, 0x90,
+ 0x09, 0xe6, 0x74, 0x21, 0xda, 0x71, 0x01, 0x25, 0x33, 0xaf, 0x06, 0xc9,
+ 0x04, 0xdc, 0xd7, 0x3c, 0xed, 0x6b, 0x4b, 0xb5, 0x26, 0x24, 0xed, 0x3a,
+ 0xf8, 0x70, 0x9f, 0x1e, 0xaf, 0x4a, 0xe7, 0xd2, 0xf7, 0x1f, 0x47, 0x77,
+ 0xa6, 0x0f, 0xd1, 0x2d, 0xdd, 0xa8, 0xdd, 0xdb, 0x6f, 0x64, 0xf8, 0xfd,
+ 0x38, 0xc3, 0xdd, 0x79, 0x96, 0x32, 0x5d, 0x00, 0x19, 0x2e, 0x3c, 0xc9,
+ 0x27, 0xc9, 0x4a, 0xca, 0xb3, 0x59, 0x04, 0x80, 0x18, 0xd3, 0xbd, 0xfb,
+ 0x88, 0x74, 0x34, 0x7d, 0x1f, 0x99, 0x49, 0x4c, 0xbe, 0xce, 0xea, 0xb6,
+ 0xfb, 0x36, 0x5a, 0xd3, 0xab, 0xbe, 0x97, 0xbb, 0x80, 0x7f, 0x09, 0x4c,
+ 0x6b, 0x6d, 0xba, 0x30, 0xb4, 0x31, 0xda, 0x02, 0x39, 0x1d, 0x88, 0x51,
+ 0x7d, 0xf7, 0x51, 0x6d, 0x4f, 0x73, 0xa6, 0xc2, 0x43, 0x5a, 0x00, 0x10,
+ 0x66, 0x7d, 0xce, 0x0d, 0xe6, 0x1a, 0xa3, 0x45, 0x85, 0x8c, 0x77, 0x1d,
+ 0xce, 0xd1, 0x1f, 0x9b, 0xac, 0x47, 0xc0, 0x24, 0xa6, 0xcd, 0x78, 0xf4,
+ 0x0a, 0x5b, 0x53, 0xdf, 0x15, 0x9b, 0x09, 0x25, 0xbd, 0xe3, 0xc8, 0xa1,
+ 0x9a, 0xda, 0xdf, 0x54, 0x87, 0x40, 0x1a, 0xb5, 0xb1, 0xdc, 0x79, 0xfc,
+ 0x12, 0x65, 0x4e, 0xb4, 0x35, 0x95, 0x01, 0xa4, 0xba, 0xce, 0x7b, 0x46,
+ 0xba, 0xa7, 0xb7, 0x0b, 0x2b, 0xd7, 0x6d, 0x6c, 0x2c, 0x7b, 0xac, 0x6e,
+ 0xe2, 0xe9, 0x86, 0xf6, 0xd3, 0xee, 0x49, 0x4c, 0x45, 0xa0, 0xb7, 0x6d,
+ 0x24, 0x8d, 0x7d, 0xcd, 0x12, 0x7e, 0x3c, 0xa8, 0x3e, 0xaf, 0x50, 0x7a,
+ 0x8e, 0xb2, 0x43, 0xb8, 0x00, 0xfb, 0x8e, 0xbf, 0x95, 0x17, 0x21, 0xaf,
+ 0xa8, 0x11, 0x5f, 0xbc, 0x00, 0x01, 0x0d, 0x12, 0x5b, 0x1c, 0xaa, 0xbe,
+ 0x9d, 0xce, 0xa8, 0xfa, 0x5b, 0x6c, 0x78, 0x3a, 0x8e, 0x00, 0x1e, 0x24,
+ 0xf6, 0x49, 0x4c, 0xd9, 0x56, 0x38, 0xb0, 0x1a, 0xac, 0x2d, 0xb5, 0xbe,
+ 0xef, 0x4d, 0xd3, 0x31, 0xc9, 0x52, 0x11, 0x61, 0x3f, 0xa4, 0xd8, 0x09,
+ 0x9d, 0xc2, 0x1d, 0xc0, 0x3f, 0xc5, 0x66, 0x51, 0x98, 0xda, 0xcb, 0xac,
+ 0x79, 0x76, 0x92, 0x03, 0x79, 0x2c, 0x77, 0x1c, 0xab, 0x61, 0xe4, 0xd0,
+ 0xe7, 0x43, 0x4f, 0xba, 0x4b, 0x64, 0x0d, 0x4f, 0x9a, 0x4a, 0x6d, 0xb6,
+ 0xcd, 0xa0, 0x30, 0xb8, 0x3f, 0x4d, 0x1d, 0x11, 0x3f, 0x30, 0xa0, 0x1e,
+ 0xd7, 0x11, 0xb8, 0x10, 0x3d, 0xa1, 0xcd, 0x76, 0x8e, 0xf2, 0xe1, 0x41,
+ 0xc2, 0xd2, 0xc1, 0x63, 0x01, 0x21, 0xe0, 0x07, 0x34, 0x6a, 0x3b, 0x7d,
+ 0xca, 0x5e, 0xbd, 0x6f, 0xb4, 0x6f, 0x1b, 0x62, 0x41, 0x03, 0x5d, 0x47,
+ 0x04, 0x1e, 0xe9, 0x29, 0x98, 0x36, 0x02, 0xe8, 0x04, 0x96, 0x88, 0x69,
+ 0x3e, 0x67, 0x8f, 0x92, 0x40, 0x5b, 0xbd, 0xde, 0x91, 0x12, 0x7f, 0x33,
+ 0xfe, 0x8f, 0xe2, 0xa7, 0x93, 0x94, 0xeb, 0x6e, 0x63, 0x3d, 0x47, 0x3d,
+ 0xb5, 0x8d, 0xad, 0x2e, 0xee, 0x06, 0x9e, 0x08, 0x4e, 0xa6, 0xaf, 0x6b,
+ 0xdb, 0x35, 0x6b, 0xab, 0x84, 0x00, 0x75, 0xf1, 0x3e, 0x29, 0x29, 0x20,
+ 0xb5, 0xd8, 0xed, 0xb2, 0xc8, 0xdd, 0xb4, 0x7b, 0x7c, 0x67, 0xf3, 0x81,
+ 0x94, 0x4f, 0xda, 0x79, 0x5b, 0x3d, 0x5f, 0x48, 0x6d, 0xdf, 0xbf, 0x7c,
+ 0x1f, 0x52, 0x63, 0x6c, 0x24, 0xd7, 0xd6, 0xe7, 0x83, 0x67, 0xb7, 0x78,
+ 0x21, 0xfe, 0x04, 0xf1, 0x3f, 0x35, 0x0f, 0x4d, 0xd3, 0xbb, 0xd4, 0xd2,
+ 0x63, 0x83, 0xb6, 0x3f, 0x72, 0x52, 0x53, 0x46, 0xa2, 0xfc, 0x7b, 0xcd,
+ 0xde, 0x9b, 0xfd, 0x17, 0xd8, 0x5e, 0xd6, 0xbb, 0xc1, 0xd3, 0x00, 0x7c,
+ 0x96, 0xcd, 0x0d, 0x16, 0x37, 0x75, 0x7b, 0x7d, 0x42, 0x48, 0x78, 0x32,
+ 0x5e, 0xe6, 0x83, 0xf4, 0x5a, 0x07, 0x81, 0x2a, 0x6d, 0xc3, 0xae, 0xa7,
+ 0xec, 0xbe, 0xed, 0xf7, 0x63, 0x92, 0xe6, 0x4f, 0xbb, 0xe9, 0xfb, 0x62,
+ 0x07, 0x3a, 0x2d, 0x4c, 0x3e, 0x9d, 0x5d, 0x33, 0x92, 0xd0, 0xe0, 0x43,
+ 0x48, 0xd8, 0xe1, 0x10, 0x1d, 0xe6, 0x39, 0x29, 0x29, 0x0e, 0x0e, 0x16,
+ 0x4d, 0x95, 0xbd, 0xf7, 0x35, 0xd5, 0xb5, 0x96, 0x43, 0x58, 0xed, 0x1c,
+ 0xe0, 0x04, 0x1d, 0x3e, 0xf5, 0xa2, 0x43, 0x28, 0x06, 0xca, 0x44, 0x16,
+ 0xbb, 0x6b, 0x84, 0x18, 0x6b, 0x3e, 0x96, 0xd6, 0x8f, 0xe2, 0x86, 0x32,
+ 0x28, 0xa5, 0xaf, 0x71, 0x7f, 0xa9, 0x63, 0xc3, 0x5b, 0xb7, 0x50, 0x41,
+ 0x1d, 0xbc, 0xb9, 0x4d, 0x57, 0x53, 0xc7, 0xaa, 0x97, 0xd2, 0x6d, 0x6b,
+ 0xee, 0x0d, 0x96, 0xed, 0x92, 0x4e, 0xe1, 0xde, 0x52, 0x52, 0x5c, 0xba,
+ 0x9a, 0xfa, 0x9d, 0x65, 0xad, 0x3e, 0x93, 0x08, 0x73, 0x2b, 0x68, 0x97,
+ 0x48, 0x33, 0xb9, 0x46, 0xd0, 0x2d, 0xc8, 0x6f, 0xd9, 0xdc, 0x65, 0xed,
+ 0x16, 0xb6, 0x34, 0x8d, 0xc3, 0x6c, 0xbb, 0xca, 0x14, 0xd9, 0xd4, 0x2a,
+ 0xaa, 0x9b, 0x1d, 0x69, 0x1b, 0x6a, 0x86, 0xb1, 0xcd, 0xe1, 0xda, 0x7f,
+ 0x7a, 0xac, 0x3a, 0xb8, 0x0d, 0x37, 0xed, 0x1a, 0x88, 0x66, 0xa2, 0x74,
+ 0xff, 0x00, 0x78, 0x49, 0x4d, 0x96, 0xd0, 0xeb, 0x05, 0x6d, 0xb9, 0xce,
+ 0xdf, 0x4e, 0xe2, 0xe0, 0x35, 0x6d, 0x8d, 0xe3, 0x59, 0xe1, 0x03, 0x23,
+ 0x0e, 0xec, 0x8a, 0x85, 0x76, 0x7b, 0x1b, 0xbf, 0x71, 0xe2, 0x43, 0x7b,
+ 0x41, 0x55, 0x99, 0xd6, 0x2c, 0xb9, 0xdb, 0xc4, 0x87, 0x7d, 0x18, 0x11,
+ 0x11, 0x3a, 0xca, 0x8d, 0xbd, 0x45, 0xf0, 0x19, 0xb7, 0x77, 0xb4, 0xb7,
+ 0x71, 0x32, 0x03, 0x5c, 0x62, 0x4a, 0x4a, 0x62, 0xee, 0x9e, 0xd6, 0x36,
+ 0xdb, 0x18, 0xcd, 0xc1, 0xa0, 0x16, 0x56, 0xf1, 0xee, 0x81, 0x23, 0xf1,
+ 0x54, 0x32, 0xf1, 0xed, 0x6d, 0xec, 0x03, 0xda, 0x08, 0x07, 0x6b, 0x62,
+ 0x1a, 0xd0, 0x04, 0xcf, 0x9e, 0xa8, 0xf6, 0xe7, 0xb8, 0x86, 0x5a, 0x4b,
+ 0x77, 0x31, 0xa0, 0x41, 0xd2, 0x4c, 0xc7, 0x74, 0x2c, 0x8c, 0x9a, 0xc5,
+ 0x95, 0xb8, 0x8d, 0xc5, 0xcd, 0x89, 0x77, 0xee, 0x81, 0xaa, 0x4a, 0x73,
+ 0xda, 0x6f, 0x73, 0x2d, 0x0c, 0x01, 0xc6, 0x5c, 0xd9, 0xe0, 0x4f, 0x9f,
+ 0xf6, 0x4a, 0x93, 0x26, 0xb0, 0xf0, 0xf0, 0x5a, 0xd7, 0x47, 0x79, 0x07,
+ 0xc9, 0x4e, 0xeb, 0xc3, 0x5e, 0xc0, 0xc6, 0x6d, 0x00, 0x88, 0x98, 0x83,
+ 0x2a, 0x25, 0xf4, 0xd8, 0x06, 0xd3, 0x2d, 0x67, 0x27, 0x98, 0x8f, 0x8f,
+ 0xc1, 0x25, 0x32, 0xa5, 0xe6, 0x1c, 0x01, 0x1e, 0x99, 0x6f, 0xb6, 0x7b,
+ 0x90, 0x63, 0x9f, 0x9a, 0xb0, 0xfa, 0x99, 0x6b, 0xeb, 0x7c, 0x81, 0xb1,
+ 0xa1, 0x8d, 0x06, 0x7b, 0x6a, 0xe2, 0x23, 0xee, 0x55, 0x0b, 0x1d, 0x6b,
+ 0x3d, 0x3a, 0xa1, 0xc0, 0xc9, 0x68, 0x70, 0x00, 0x41, 0x89, 0x45, 0xaf,
+ 0x30, 0xbe, 0xf6, 0xb2, 0x96, 0x19, 0xa8, 0x13, 0xaf, 0x63, 0xf4, 0xbe,
+ 0xe2, 0x52, 0x52, 0xee, 0x73, 0x45, 0x82, 0xb6, 0x6e, 0x6c, 0x99, 0x1d,
+ 0xc1, 0x1c, 0x19, 0x2a, 0x4c, 0xd8, 0xdd, 0xe4, 0x0d, 0xee, 0x1a, 0xb6,
+ 0x66, 0x20, 0x29, 0x66, 0x90, 0xc7, 0x6e, 0x63, 0x7d, 0x8f, 0x3b, 0xda,
+ 0x7c, 0x34, 0x9f, 0xf6, 0x2a, 0xcc, 0xca, 0x1b, 0xc6, 0xcd, 0xdb, 0x40,
+ 0x97, 0x00, 0x7e, 0x92, 0x4a, 0x6c, 0x9b, 0x9e, 0xf6, 0xed, 0x2e, 0x89,
+ 0x88, 0x20, 0x98, 0xd1, 0x02, 0xcc, 0xa2, 0xd6, 0x96, 0x09, 0x79, 0xdc,
+ 0x43, 0x7f, 0x38, 0x92, 0xdd, 0x1d, 0x08, 0xf5, 0x12, 0xc0, 0x4d, 0x92,
+ 0x7d, 0x47, 0xc3, 0x03, 0x04, 0x9d, 0xb1, 0xaf, 0xdc, 0xa1, 0x76, 0x35,
+ 0xe1, 0xae, 0x76, 0x2b, 0xbd, 0x5b, 0x18, 0x7d, 0xa0, 0x46, 0xf2, 0x0f,
+ 0x27, 0x5d, 0x7e, 0xe4, 0x94, 0xd6, 0xb6, 0xf2, 0x0b, 0x5b, 0x63, 0x03,
+ 0x24, 0x69, 0xaf, 0x24, 0xfb, 0x87, 0xb0, 0x6a, 0xac, 0x9b, 0x3d, 0x46,
+ 0x35, 0xec, 0xa9, 0x80, 0x8e, 0x2c, 0xdb, 0x05, 0xe7, 0x83, 0x3f, 0x25,
+ 0x5a, 0xab, 0x1c, 0xf7, 0xec, 0xb4, 0x3b, 0xd4, 0x68, 0xf7, 0x3b, 0x69,
+ 0x69, 0x23, 0xb9, 0x93, 0xdd, 0x58, 0x01, 0xec, 0xa3, 0xd5, 0xac, 0x6e,
+ 0x73, 0x9c, 0x5a, 0x2a, 0x3e, 0xd1, 0x1d, 0x8a, 0x4a, 0x64, 0xfa, 0xfd,
+ 0x9b, 0xf4, 0x0f, 0x68, 0x82, 0x0f, 0x6e, 0xff, 0x00, 0x24, 0x23, 0x65,
+ 0xcd, 0x05, 0xce, 0x82, 0xd7, 0xf8, 0x08, 0x2c, 0x31, 0xcf, 0x9a, 0x35,
+ 0x8d, 0xca, 0x65, 0x55, 0xbe, 0xbd, 0x3d, 0x68, 0x6b, 0xc0, 0xed, 0x1c,
+ 0xca, 0x05, 0xae, 0x8b, 0x18, 0xc6, 0x3b, 0x56, 0xc0, 0x23, 0x99, 0x9d,
+ 0x38, 0xf9, 0xa4, 0xa5, 0xbe, 0xd3, 0x67, 0xa1, 0xb4, 0x97, 0x3d, 0xaf,
+ 0x04, 0xed, 0x3a, 0x1f, 0xdd, 0x2a, 0x0e, 0x7b, 0xac, 0x16, 0x52, 0x1d,
+ 0xb7, 0x68, 0x6c, 0x8d, 0x7e, 0x88, 0x1f, 0x96, 0x51, 0x5e, 0xcb, 0x2e,
+ 0x73, 0xea, 0x75, 0xfb, 0x6c, 0x06, 0x5b, 0x02, 0x36, 0x34, 0x6a, 0x41,
+ 0x85, 0x1b, 0x2c, 0x11, 0x60, 0x6b, 0x43, 0x25, 0xda, 0x02, 0x3f, 0x70,
+ 0xef, 0xed, 0xf0, 0x49, 0x4a, 0x2d, 0x19, 0x00, 0x6f, 0x1a, 0xb0, 0x07,
+ 0x8e, 0xda, 0xc7, 0x8a, 0xac, 0xdc, 0x77, 0xee, 0x78, 0xb7, 0xd9, 0xb8,
+ 0xc9, 0x2d, 0x3d, 0xa2, 0x08, 0x9f, 0x3e, 0x11, 0xec, 0xf5, 0xcb, 0xdb,
+ 0x63, 0x58, 0x3d, 0x17, 0x34, 0x92, 0xd1, 0xcc, 0x8e, 0x27, 0xe5, 0xa2,
+ 0x58, 0xd8, 0xcd, 0x2f, 0x36, 0xb5, 0xe0, 0x31, 0xcd, 0xda, 0x6b, 0x00,
+ 0xc8, 0x04, 0xea, 0xe2, 0x92, 0x98, 0xe3, 0xe4, 0xe6, 0xe3, 0xd4, 0xf7,
+ 0x54, 0xea, 0xeb, 0x6b, 0xa4, 0xbd, 0xd6, 0x09, 0x3e, 0x71, 0x1e, 0x4a,
+ 0xad, 0xef, 0xc9, 0x78, 0x73, 0x49, 0x07, 0xd3, 0x1f, 0x47, 0x5d, 0xbb,
+ 0x7b, 0x80, 0x07, 0x82, 0x97, 0xa6, 0xd1, 0xba, 0x5d, 0x2f, 0x6c, 0x96,
+ 0x12, 0x26, 0x3f, 0x75, 0xd1, 0xf0, 0x4c, 0xea, 0x3d, 0x3a, 0xde, 0x43,
+ 0x9c, 0xeb, 0x8b, 0x58, 0xf6, 0x92, 0x77, 0x12, 0x39, 0x20, 0x24, 0xa6,
+ 0x14, 0x5e, 0x71, 0xdd, 0x5e, 0xcb, 0xcb, 0xac, 0x23, 0xda, 0xd6, 0xcc,
+ 0x09, 0xfd, 0xe0, 0x55, 0xa7, 0xe4, 0x63, 0xbe, 0xaf, 0xb4, 0x56, 0x7d,
+ 0x37, 0x3b, 0xda, 0xf3, 0xcb, 0x0c, 0xaa, 0x99, 0x94, 0xbb, 0x17, 0x1e,
+ 0xbc, 0x96, 0x01, 0xfa, 0x40, 0xe7, 0x00, 0x3e, 0x93, 0x4b, 0xa4, 0x12,
+ 0x47, 0x94, 0xa6, 0xb7, 0x14, 0xb6, 0xac, 0x6c, 0x6a, 0xdc, 0x25, 0xc3,
+ 0x7d, 0x86, 0x74, 0x97, 0x00, 0x92, 0x97, 0xa4, 0x31, 0xde, 0xa3, 0x48,
+ 0x6c, 0x17, 0x12, 0x1c, 0xc1, 0x3f, 0x12, 0x55, 0x82, 0xc0, 0x18, 0xd7,
+ 0x35, 0xad, 0x2d, 0x03, 0x4d, 0xba, 0x0d, 0x7b, 0xc6, 0xbc, 0x42, 0xa8,
+ 0xf2, 0xe0, 0x7e, 0xcf, 0x5c, 0xd6, 0xe3, 0xb8, 0x69, 0xc3, 0xa2, 0x55,
+ 0xf7, 0x56, 0xe2, 0xc2, 0xc8, 0x21, 0xac, 0x6b, 0x40, 0x20, 0xc1, 0x2e,
+ 0x23, 0x72, 0x4a, 0x62, 0xf7, 0x8a, 0xa0, 0xd2, 0x49, 0x7b, 0x62, 0x5a,
+ 0x3c, 0xc7, 0x21, 0x14, 0x0a, 0x9a, 0x5d, 0x7f, 0x0f, 0x2d, 0x98, 0x1f,
+ 0x9c, 0x4f, 0xd1, 0x54, 0xab, 0xb6, 0xd3, 0xea, 0x1b, 0x80, 0xd0, 0xb5,
+ 0x9a, 0x71, 0xa9, 0x30, 0xe0, 0x7b, 0xc2, 0x72, 0xeb, 0x1f, 0x61, 0x0d,
+ 0x74, 0x5a, 0xd2, 0x5a, 0xd6, 0x90, 0x79, 0x68, 0xf1, 0xee, 0x92, 0x93,
+ 0x17, 0x54, 0xe8, 0x69, 0x6c, 0xce, 0xa1, 0xc2, 0x0f, 0x3d, 0xf4, 0x4e,
+ 0x72, 0x1c, 0xd6, 0x86, 0xbb, 0x4d, 0xce, 0x00, 0x46, 0xba, 0x9d, 0x54,
+ 0x69, 0x76, 0x4b, 0xe9, 0xc9, 0x75, 0x54, 0x97, 0x1d, 0x90, 0xe6, 0x06,
+ 0xfd, 0x17, 0x03, 0xac, 0x13, 0xe2, 0x12, 0x38, 0x99, 0x0e, 0x6b, 0x2c,
+ 0x70, 0x35, 0x40, 0xdc, 0xf7, 0x10, 0x41, 0x0d, 0x02, 0x41, 0x8f, 0x14,
+ 0x94, 0xca, 0xd6, 0xbe, 0xeb, 0x9a, 0xca, 0xce, 0xdd, 0xc7, 0x70, 0x9f,
+ 0x01, 0xa9, 0xd1, 0x5c, 0xfb, 0x2b, 0xa3, 0xd4, 0x97, 0xee, 0xf5, 0x36,
+ 0xc6, 0xe1, 0x3f, 0x08, 0xe2, 0x23, 0x55, 0x41, 0xd6, 0xed, 0xa9, 0x8e,
+ 0x82, 0x2d, 0x6b, 0x24, 0xbb, 0x50, 0x65, 0xd2, 0x23, 0xca, 0x02, 0xb5,
+ 0xfb, 0x43, 0x23, 0xec, 0x71, 0x02, 0x3f, 0xd2, 0x40, 0xdd, 0xe1, 0x3b,
+ 0x92, 0x53, 0x6e, 0x97, 0xd4, 0x1c, 0xf0, 0xe2, 0x5c, 0xda, 0xa0, 0xbc,
+ 0x37, 0xc4, 0xc8, 0x04, 0x1f, 0x25, 0xa1, 0x89, 0xf6, 0xa6, 0xd3, 0x66,
+ 0xb2, 0x20, 0xec, 0x7b, 0x89, 0xfb, 0xfe, 0xe4, 0xdd, 0x33, 0x16, 0x97,
+ 0xcd, 0xb7, 0xb4, 0x06, 0x58, 0xc6, 0x90, 0xd9, 0x89, 0x78, 0x3e, 0x0a,
+ 0xdd, 0xd8, 0xb7, 0xdb, 0x43, 0xf1, 0xe8, 0x6e, 0xd2, 0xf3, 0x25, 0xe7,
+ 0x80, 0xd4, 0x94, 0xd5, 0xca, 0x6b, 0x9d, 0x8a, 0xdf, 0xd1, 0x37, 0xd4,
+ 0xdb, 0xb6, 0x5a, 0x23, 0x59, 0x8e, 0x54, 0x3d, 0x0f, 0x41, 0xd5, 0xd6,
+ 0x40, 0xb2, 0xcd, 0xbb, 0x83, 0x9c, 0x07, 0xb0, 0x3b, 0x48, 0x2e, 0xee,
+ 0x8f, 0x91, 0x97, 0x65, 0xb6, 0xbb, 0x1e, 0xc6, 0xfa, 0x0c, 0xc5, 0x6f,
+ 0xab, 0x61, 0x03, 0x50, 0xd0, 0x7b, 0x79, 0x95, 0x95, 0x58, 0x2e, 0x26,
+ 0xd7, 0xd8, 0x45, 0x05, 0xc1, 0xa1, 0xdc, 0xf3, 0xae, 0xbe, 0x1c, 0xa4,
+ 0xa4, 0xb7, 0x6f, 0xb4, 0xb8, 0x9f, 0x75, 0x4e, 0x68, 0x02, 0xb6, 0x88,
+ 0x3a, 0x14, 0xc7, 0x11, 0x95, 0x37, 0xd3, 0xb2, 0x05, 0x61, 0xba, 0x80,
+ 0x7d, 0xd3, 0x32, 0x63, 0xf2, 0x27, 0x65, 0x76, 0x17, 0x3a, 0xb6, 0xe8,
+ 0x26, 0x4b, 0xa7, 0x41, 0xe0, 0xa3, 0x7e, 0x3d, 0xc1, 0xc0, 0x83, 0xea,
+ 0x3d, 0xc7, 0x81, 0xed, 0x0d, 0x68, 0xe4, 0x92, 0x92, 0x96, 0xb2, 0xff,
+ 0x00, 0x46, 0xb0, 0x29, 0x68, 0x73, 0x5c, 0x5b, 0xa0, 0x3d, 0xb5, 0xe7,
+ 0xe0, 0x9e, 0xcb, 0x47, 0xb9, 0xbb, 0x8b, 0x5c, 0xc1, 0xb9, 0xd1, 0xa4,
+ 0x83, 0xee, 0x84, 0x13, 0x5b, 0xee, 0xb7, 0x16, 0xb8, 0x2e, 0x16, 0x1d,
+ 0x5d, 0x10, 0x3f, 0x3b, 0x5d, 0x7b, 0x23, 0xe2, 0x63, 0xbb, 0x63, 0x9e,
+ 0x40, 0x7d, 0x8d, 0x2e, 0xe0, 0xeb, 0x1c, 0xa4, 0xa6, 0xb5, 0x9b, 0x5a,
+ 0xe6, 0x87, 0x6a, 0xd7, 0xc3, 0xbc, 0x65, 0xc7, 0xb2, 0x95, 0xed, 0xa9,
+ 0xd6, 0xee, 0x79, 0x06, 0x00, 0x68, 0x1e, 0x00, 0x6a, 0x51, 0x1f, 0x59,
+ 0x93, 0xbc, 0x41, 0x69, 0x86, 0xcf, 0x62, 0x7b, 0x8f, 0x82, 0x86, 0x4d,
+ 0x21, 0xb6, 0x56, 0xd6, 0x3a, 0x03, 0x8c, 0xee, 0xef, 0xc2, 0x4a, 0x6a,
+ 0xd9, 0x4b, 0xa7, 0xd5, 0x63, 0xc0, 0x2e, 0x3b, 0x8e, 0xef, 0x76, 0x82,
+ 0x74, 0x8e, 0xc8, 0x55, 0x56, 0xe7, 0xd2, 0xea, 0xde, 0xf9, 0xb9, 0xd0,
+ 0x7d, 0xa3, 0xd8, 0x1a, 0xee, 0x42, 0xba, 0xfa, 0x6a, 0x6b, 0x4d, 0x6e,
+ 0x04, 0x39, 0xcd, 0x83, 0x0a, 0x43, 0x16, 0xe6, 0xe3, 0xb9, 0xc5, 0xe2,
+ 0xa9, 0x20, 0x8d, 0x38, 0x1d, 0xe7, 0xcd, 0x25, 0x35, 0xda, 0xeb, 0x1e,
+ 0x0d, 0x6c, 0xa2, 0x29, 0x87, 0x34, 0x97, 0x18, 0x27, 0x5f, 0xbf, 0x54,
+ 0x66, 0x1a, 0xe9, 0x0f, 0x14, 0x30, 0x17, 0x35, 0xa4, 0x13, 0xf3, 0x8e,
+ 0x53, 0x36, 0x9b, 0xc0, 0xdf, 0x63, 0x83, 0x1c, 0x47, 0xbc, 0x01, 0xed,
+ 0xf8, 0x8f, 0x92, 0x23, 0x1c, 0x03, 0x0b, 0x1a, 0x37, 0x34, 0x88, 0x73,
+ 0xcf, 0x09, 0x29, 0xac, 0x2c, 0xf5, 0xb1, 0x6c, 0x64, 0xfb, 0x80, 0xf6,
+ 0x1e, 0x7d, 0xa4, 0x8d, 0xdf, 0x72, 0x77, 0x86, 0x32, 0x8d, 0xef, 0x73,
+ 0x46, 0xdf, 0xdd, 0x11, 0xbc, 0x81, 0xd9, 0x31, 0x79, 0xf5, 0x18, 0xf2,
+ 0x03, 0x45, 0x6e, 0x70, 0xd9, 0xdc, 0xb3, 0xbf, 0xcc, 0xa8, 0xe4, 0xe2,
+ 0xde, 0x72, 0x0d, 0xd6, 0x9f, 0x61, 0x86, 0xd6, 0xd1, 0xab, 0x43, 0x47,
+ 0xd1, 0x3e, 0x49, 0x29, 0x2b, 0x72, 0x4d, 0xcc, 0x65, 0x5b, 0x76, 0x17,
+ 0x49, 0x27, 0x8d, 0xad, 0x07, 0xe9, 0xe9, 0xe6, 0x93, 0xde, 0xc7, 0xb5,
+ 0x8f, 0x02, 0x1d, 0xab, 0x2b, 0x69, 0x3a, 0xed, 0x1d, 0xcf, 0xc5, 0x49,
+ 0x83, 0x6b, 0xeb, 0xa3, 0x68, 0x2c, 0xb6, 0xb2, 0x09, 0x23, 0x57, 0x13,
+ 0xa9, 0xf9, 0x22, 0x0c, 0x16, 0x17, 0xd9, 0xac, 0xdc, 0xc8, 0x81, 0x32,
+ 0x0b, 0x7c, 0xa7, 0xe0, 0x92, 0x90, 0xfe, 0x99, 0xcc, 0x2f, 0x92, 0xeb,
+ 0x47, 0x0c, 0xe6, 0x4f, 0x89, 0x44, 0x6d, 0x81, 0xad, 0xaa, 0xd6, 0xd6,
+ 0xe7, 0x3e, 0x18, 0x5e, 0xd7, 0x73, 0xfa, 0x43, 0xcf, 0xc9, 0x5c, 0xa7,
+ 0x19, 0xa4, 0x3c, 0xb2, 0x1c, 0x1d, 0x0c, 0xf1, 0x2d, 0xfc, 0xe7, 0x6a,
+ 0x96, 0x5b, 0x19, 0x61, 0x22, 0xb0, 0x5a, 0xfa, 0xdc, 0x1a, 0x22, 0x48,
+ 0x3b, 0x78, 0x6f, 0xe2, 0x92, 0x91, 0x7a, 0xad, 0xbb, 0x1d, 0xed, 0x68,
+ 0x24, 0xd3, 0x23, 0x49, 0x92, 0x47, 0x82, 0xa7, 0x6d, 0x64, 0xdc, 0xdc,
+ 0x80, 0xdd, 0xc6, 0xb2, 0x03, 0x89, 0x1f, 0x48, 0x11, 0xed, 0xfc, 0x8a,
+ 0xc5, 0x4f, 0xb2, 0xa7, 0x7a, 0x9e, 0x9b, 0x87, 0xae, 0xe3, 0xea, 0x00,
+ 0xd3, 0xb5, 0x9a, 0x11, 0xba, 0x39, 0xd5, 0x4e, 0xf6, 0x90, 0xd3, 0x46,
+ 0xe3, 0x25, 0xc5, 0xe0, 0xc4, 0x81, 0xe4, 0x3c, 0x92, 0x52, 0x2a, 0x6a,
+ 0xad, 0xf4, 0x9b, 0x09, 0x35, 0x1d, 0xc3, 0x79, 0x74, 0xea, 0xdf, 0x05,
+ 0x27, 0xd2, 0xef, 0xb2, 0xd8, 0xd6, 0x1d, 0xed, 0x7d, 0x8d, 0x63, 0x60,
+ 0x09, 0xdb, 0x0e, 0xd7, 0xef, 0x42, 0x0f, 0xdd, 0x8a, 0xda, 0x49, 0x75,
+ 0x82, 0x4b, 0x1c, 0xf7, 0x72, 0x47, 0x70, 0x7c, 0x55, 0x8c, 0x77, 0x32,
+ 0xb6, 0x0a, 0x88, 0x86, 0xbd, 0xfb, 0x1a, 0xe6, 0xf6, 0xef, 0xc1, 0x49,
+ 0x4d, 0x61, 0x8f, 0x7d, 0xac, 0xae, 0xb6, 0x70, 0x0b, 0xb7, 0xbf, 0xc2,
+ 0x3f, 0x3b, 0xf0, 0x47, 0x75, 0x4c, 0xa0, 0x39, 0x95, 0x1d, 0xd7, 0x55,
+ 0x5b, 0x5e, 0xe2, 0x3c, 0x5d, 0x3e, 0xa0, 0xf9, 0x08, 0x56, 0x1c, 0x43,
+ 0x00, 0x68, 0x78, 0x24, 0x02, 0xd7, 0x11, 0x0e, 0x93, 0xbb, 0x53, 0xf8,
+ 0x26, 0xa6, 0x8f, 0x7f, 0xb7, 0xdc, 0xf9, 0x86, 0x09, 0xfa, 0x4e, 0xf3,
+ 0xf1, 0x49, 0x4e, 0x7d, 0xb5, 0xb2, 0xd6, 0xbb, 0x26, 0xb6, 0x90, 0xc1,
+ 0xad, 0x9b, 0x75, 0x73, 0x4f, 0x04, 0xc7, 0x82, 0x66, 0x57, 0x5d, 0x8e,
+ 0x70, 0xb1, 0xa7, 0x70, 0x04, 0x89, 0x3c, 0x03, 0x1a, 0x68, 0xae, 0xba,
+ 0x97, 0x62, 0x93, 0x76, 0x3c, 0x00, 0xf2, 0xe8, 0x67, 0x66, 0xbb, 0xf3,
+ 0x98, 0xe0, 0xaa, 0xda, 0xf6, 0x7a, 0x84, 0xbb, 0xf4, 0x76, 0x11, 0x2f,
+ 0x69, 0xec, 0x7c, 0x74, 0x49, 0x4d, 0x70, 0x1e, 0xd0, 0x60, 0xef, 0x78,
+ 0x27, 0x60, 0x8d, 0xd0, 0x01, 0xf3, 0xee, 0x9e, 0xf0, 0xd7, 0xb9, 0x96,
+ 0x53, 0x58, 0xf7, 0x68, 0xed, 0xbc, 0x0e, 0xff, 0x00, 0xea, 0x11, 0x5a,
+ 0x59, 0x5b, 0x58, 0xf7, 0xc8, 0x7e, 0xbb, 0xdd, 0xf2, 0xe6, 0x54, 0xd8,
+ 0x47, 0xa6, 0x19, 0x51, 0xd4, 0x8d, 0xe1, 0xc7, 0xe8, 0xcf, 0x91, 0x09,
+ 0x29, 0x05, 0x54, 0x3e, 0x86, 0xb9, 0xf3, 0xed, 0x2e, 0xd4, 0xbb, 0xe9,
+ 0x4b, 0x87, 0x65, 0x3b, 0x88, 0x7b, 0xcb, 0xb7, 0x13, 0x55, 0x70, 0x18,
+ 0x07, 0xd2, 0x93, 0xaf, 0x2a, 0x76, 0x43, 0xea, 0xb1, 0x84, 0x6e, 0x35,
+ 0xb9, 0xbb, 0xc8, 0xe3, 0x70, 0xf6, 0xe9, 0xf0, 0x08, 0x37, 0x90, 0x3d,
+ 0x46, 0xb0, 0x43, 0x5c, 0xe8, 0x2c, 0x3a, 0x4c, 0x7e, 0xe9, 0xec, 0x92,
+ 0x91, 0xdc, 0xf6, 0x34, 0xed, 0x6d, 0x45, 0xe0, 0x1d, 0xda, 0x71, 0xb8,
+ 0x77, 0x1f, 0xc5, 0x4a, 0x8b, 0x85, 0x43, 0x7b, 0x8e, 0xb2, 0x0b, 0x0c,
+ 0x72, 0x7c, 0x08, 0x4c, 0xe1, 0x15, 0xb9, 0xd5, 0xd8, 0xe6, 0x06, 0x88,
+ 0xd4, 0x6b, 0xa9, 0x8f, 0x9a, 0x23, 0x71, 0x9a, 0xea, 0x77, 0xb7, 0xda,
+ 0xe6, 0x38, 0x87, 0x81, 0xf9, 0xc4, 0x73, 0xf8, 0x24, 0xa4, 0x4d, 0xc8,
+ 0xb8, 0x9f, 0x4e, 0x9d, 0xed, 0x0e, 0x86, 0x92, 0x09, 0x6f, 0x6d, 0x77,
+ 0x78, 0xab, 0x57, 0xda, 0xeb, 0xdf, 0x4d, 0x76, 0xbc, 0x96, 0x54, 0x67,
+ 0x93, 0xac, 0x7c, 0x14, 0x1c, 0xd7, 0x35, 0xd3, 0x58, 0x05, 0xaf, 0xda,
+ 0x00, 0x3d, 0xa7, 0xc7, 0xe0, 0x82, 0xfa, 0xb2, 0x1c, 0x2d, 0x15, 0xb8,
+ 0xcc, 0x9d, 0xa0, 0x6b, 0x00, 0xe8, 0x92, 0x99, 0x5d, 0x45, 0x2e, 0x75,
+ 0x85, 0xe6, 0x43, 0xa4, 0x90, 0x0e, 0x92, 0x14, 0x37, 0xfe, 0xad, 0xb2,
+ 0x1b, 0x33, 0x11, 0xa4, 0x71, 0x1b, 0x53, 0x8a, 0x5d, 0x65, 0x62, 0x4f,
+ 0xd3, 0x69, 0x6b, 0x88, 0x22, 0x77, 0x37, 0x47, 0x15, 0x5f, 0xec, 0x83,
+ 0xfa, 0x3f, 0xa9, 0xae, 0xd9, 0x99, 0xf3, 0xe5, 0x25, 0x3f, 0xff, 0xd9
+};
+size_t demo_004_jpg_len = 27708;
+
+const uint8_t demo_005_jpg[] = {
+ 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01,
+ 0x02, 0x00, 0x00, 0x64, 0x00, 0x64, 0x00, 0x00, 0xff, 0xec, 0x00, 0x59,
+ 0x44, 0x75, 0x63, 0x6b, 0x79, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00,
+ 0x1e, 0x00, 0x02, 0x00, 0x44, 0x00, 0x00, 0x00, 0x20, 0x00, 0x46, 0x00,
+ 0x53, 0x00, 0x41, 0x00, 0x2f, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00,
+ 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x38, 0x00,
+ 0x62, 0x00, 0x33, 0x00, 0x32, 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00,
+ 0x5c, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00, 0x32, 0x00, 0x32, 0x00,
+ 0x35, 0x00, 0x35, 0x00, 0x61, 0x00, 0x2e, 0x00, 0x74, 0x00, 0x69, 0x00,
+ 0x66, 0x00, 0x00, 0xff, 0xee, 0x00, 0x0e, 0x41, 0x64, 0x6f, 0x62, 0x65,
+ 0x00, 0x64, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xdb, 0x00, 0x84, 0x00,
+ 0x10, 0x0b, 0x0b, 0x0b, 0x0c, 0x0b, 0x10, 0x0c, 0x0c, 0x10, 0x17, 0x0f,
+ 0x0d, 0x0f, 0x17, 0x1b, 0x14, 0x10, 0x10, 0x14, 0x1b, 0x1f, 0x17, 0x17,
+ 0x17, 0x17, 0x17, 0x1f, 0x1e, 0x17, 0x1a, 0x1a, 0x1a, 0x1a, 0x17, 0x1e,
+ 0x1e, 0x23, 0x25, 0x27, 0x25, 0x23, 0x1e, 0x2f, 0x2f, 0x33, 0x33, 0x2f,
+ 0x2f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x01, 0x11, 0x0f, 0x0f, 0x11, 0x13, 0x11, 0x15,
+ 0x12, 0x12, 0x15, 0x14, 0x11, 0x14, 0x11, 0x14, 0x1a, 0x14, 0x16, 0x16,
+ 0x14, 0x1a, 0x26, 0x1a, 0x1a, 0x1c, 0x1a, 0x1a, 0x26, 0x30, 0x23, 0x1e,
+ 0x1e, 0x1e, 0x1e, 0x23, 0x30, 0x2b, 0x2e, 0x27, 0x27, 0x27, 0x2e, 0x2b,
+ 0x35, 0x35, 0x30, 0x30, 0x35, 0x35, 0x40, 0x40, 0x3f, 0x40, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xff, 0xc0, 0x00,
+ 0x11, 0x08, 0x01, 0x90, 0x01, 0x2c, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11,
+ 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x01, 0x3f, 0x00, 0x00, 0x01, 0x05,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x03, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
+ 0x0b, 0x01, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x04, 0x05,
+ 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x01, 0x04, 0x01, 0x03,
+ 0x02, 0x04, 0x02, 0x05, 0x07, 0x06, 0x08, 0x05, 0x03, 0x0c, 0x33, 0x01,
+ 0x00, 0x02, 0x11, 0x03, 0x04, 0x21, 0x12, 0x31, 0x05, 0x41, 0x51, 0x61,
+ 0x13, 0x22, 0x71, 0x81, 0x32, 0x06, 0x14, 0x91, 0xa1, 0xb1, 0x42, 0x23,
+ 0x24, 0x15, 0x52, 0xc1, 0x62, 0x33, 0x34, 0x72, 0x82, 0xd1, 0x43, 0x07,
+ 0x25, 0x92, 0x53, 0xf0, 0xe1, 0xf1, 0x63, 0x73, 0x35, 0x16, 0xa2, 0xb2,
+ 0x83, 0x26, 0x44, 0x93, 0x54, 0x64, 0x45, 0xc2, 0xa3, 0x74, 0x36, 0x17,
+ 0xd2, 0x55, 0xe2, 0x65, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3,
+ 0x46, 0x27, 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5,
+ 0xb5, 0xc5, 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6,
+ 0xc6, 0xd6, 0xe6, 0xf6, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7,
+ 0xb7, 0xc7, 0xd7, 0xe7, 0xf7, 0x11, 0x00, 0x02, 0x02, 0x01, 0x02, 0x04,
+ 0x04, 0x03, 0x04, 0x05, 0x06, 0x07, 0x07, 0x06, 0x05, 0x35, 0x01, 0x00,
+ 0x02, 0x11, 0x03, 0x21, 0x31, 0x12, 0x04, 0x41, 0x51, 0x61, 0x71, 0x22,
+ 0x13, 0x05, 0x32, 0x81, 0x91, 0x14, 0xa1, 0xb1, 0x42, 0x23, 0xc1, 0x52,
+ 0xd1, 0xf0, 0x33, 0x24, 0x62, 0xe1, 0x72, 0x82, 0x92, 0x43, 0x53, 0x15,
+ 0x63, 0x73, 0x34, 0xf1, 0x25, 0x06, 0x16, 0xa2, 0xb2, 0x83, 0x07, 0x26,
+ 0x35, 0xc2, 0xd2, 0x44, 0x93, 0x54, 0xa3, 0x17, 0x64, 0x45, 0x55, 0x36,
+ 0x74, 0x65, 0xe2, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, 0x46,
+ 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, 0xb5, 0xc5,
+ 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6,
+ 0xe6, 0xf6, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, 0xb7,
+ 0xc7, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11,
+ 0x00, 0x3f, 0x00, 0xef, 0xe5, 0x24, 0x2d, 0xc9, 0xc3, 0x92, 0x52, 0x44,
+ 0x94, 0x37, 0xa7, 0xdc, 0x92, 0x99, 0xa6, 0x4c, 0x0a, 0x74, 0x94, 0xba,
+ 0x1d, 0x97, 0x36, 0xbe, 0x79, 0x52, 0x7b, 0xc3, 0x18, 0x5c, 0x78, 0x0b,
+ 0x1f, 0x27, 0x25, 0xc0, 0x39, 0xc4, 0xeb, 0xa9, 0x27, 0xc9, 0x25, 0x2b,
+ 0x27, 0x31, 0x8d, 0x7e, 0xe3, 0xac, 0xac, 0xdc, 0xab, 0x2b, 0x75, 0xbb,
+ 0x5e, 0x60, 0x11, 0xf8, 0x2a, 0xb9, 0x59, 0x2e, 0x7d, 0x6f, 0x78, 0xec,
+ 0x44, 0x7c, 0x15, 0x7c, 0xdb, 0xbd, 0xb8, 0xf7, 0x03, 0xa3, 0x99, 0x1f,
+ 0x30, 0x61, 0x25, 0x36, 0x7e, 0xce, 0xd3, 0xfc, 0xdb, 0xb6, 0xbb, 0xcd,
+ 0x41, 0xd4, 0xd8, 0xd9, 0xf5, 0x29, 0x16, 0x78, 0xb9, 0xba, 0x1f, 0xbc,
+ 0x2c, 0xe7, 0x64, 0xda, 0x3d, 0x40, 0xd2, 0x43, 0x88, 0xe5, 0x56, 0x6f,
+ 0x51, 0xcb, 0x66, 0xad, 0x73, 0xa0, 0x72, 0x7b, 0x24, 0xa5, 0xb3, 0xf0,
+ 0xe8, 0xaa, 0xe3, 0x75, 0x60, 0xb7, 0x77, 0xd3, 0x04, 0x99, 0x95, 0x4d,
+ 0xc2, 0xbd, 0xbb, 0x89, 0x8d, 0xbd, 0xd5, 0xcb, 0x7a, 0xa5, 0xb6, 0xd4,
+ 0xfa, 0xae, 0x1e, 0xd3, 0xf9, 0xc0, 0x6a, 0x15, 0x3b, 0x2c, 0xa6, 0xa1,
+ 0xea, 0x4e, 0xe7, 0x01, 0xa3, 0xc8, 0x8d, 0xbf, 0xd4, 0x1f, 0xc5, 0x25,
+ 0x28, 0x5b, 0xe8, 0x10, 0xf0, 0xd2, 0xc8, 0xd5, 0xad, 0xe0, 0xfc, 0x5d,
+ 0xe1, 0xf0, 0x56, 0x19, 0x9f, 0x46, 0x4e, 0x3b, 0x9d, 0x31, 0x73, 0x38,
+ 0x6f, 0x92, 0xa1, 0x5d, 0x2f, 0xcd, 0x69, 0xb0, 0xcd, 0x55, 0x13, 0x00,
+ 0x89, 0x2e, 0x71, 0xf9, 0xaa, 0xc6, 0x91, 0x4e, 0x41, 0x60, 0x78, 0xda,
+ 0xc8, 0x8f, 0x19, 0x3e, 0x29, 0x29, 0xd0, 0x60, 0x00, 0x4f, 0x9c, 0xa7,
+ 0x78, 0x69, 0x77, 0xc7, 0x58, 0x51, 0x76, 0x46, 0x38, 0x12, 0xd7, 0x8d,
+ 0x62, 0x47, 0x82, 0x1f, 0xda, 0x28, 0x9f, 0xe7, 0x02, 0x4a, 0x5e, 0xc6,
+ 0x8d, 0x84, 0x2c, 0xfb, 0x6a, 0x63, 0xde, 0x49, 0xed, 0xa0, 0xf8, 0x05,
+ 0x6a, 0xcc, 0x9a, 0x1d, 0xa0, 0x78, 0xd1, 0x57, 0x2f, 0x69, 0x71, 0x82,
+ 0x35, 0x3f, 0x82, 0x4a, 0x67, 0xb1, 0xa1, 0xb0, 0x0c, 0x00, 0x9d, 0xcc,
+ 0x1f, 0x25, 0x03, 0x6b, 0x5b, 0x23, 0x77, 0x8a, 0x5e, 0xbd, 0x7e, 0x29,
+ 0x29, 0x20, 0x63, 0x46, 0x9c, 0xa8, 0xe4, 0xb4, 0x7a, 0x4c, 0x31, 0xdf,
+ 0x54, 0xc2, 0xe6, 0x9f, 0x15, 0x27, 0x10, 0xf6, 0x80, 0x67, 0x6f, 0x70,
+ 0x92, 0x90, 0x54, 0xca, 0x77, 0x02, 0x74, 0x2a, 0xed, 0x75, 0xd4, 0xe7,
+ 0xb6, 0x4c, 0x46, 0x8a, 0xad, 0x6f, 0xf4, 0x49, 0x96, 0x87, 0x03, 0xd8,
+ 0xa2, 0xee, 0x69, 0x7e, 0xe6, 0x02, 0x1b, 0xa6, 0xe6, 0x9e, 0xd2, 0x92,
+ 0x9d, 0x6e, 0x97, 0x8f, 0x5b, 0x4d, 0x8e, 0x02, 0x37, 0x0b, 0x1a, 0x7c,
+ 0xc4, 0x05, 0x3a, 0x2e, 0x65, 0x61, 0xa1, 0xbc, 0xa5, 0xd1, 0xc3, 0x8e,
+ 0xf8, 0x3c, 0x3b, 0xbf, 0x9b, 0x55, 0x50, 0x08, 0x7e, 0x9d, 0x89, 0xfb,
+ 0x82, 0x4a, 0x7a, 0x0c, 0x3e, 0xa0, 0x1b, 0x0e, 0x71, 0x00, 0x8e, 0x21,
+ 0x6e, 0xe1, 0xfd, 0x62, 0x60, 0x7e, 0xcb, 0x8e, 0xe6, 0x78, 0xf7, 0x5c,
+ 0x33, 0x6c, 0x25, 0xc0, 0x0f, 0x9a, 0xb1, 0x5d, 0x8e, 0xda, 0x75, 0xd7,
+ 0xb2, 0x4a, 0x7d, 0x3a, 0xbb, 0x19, 0x6b, 0x1b, 0x65, 0x67, 0x73, 0x1c,
+ 0x24, 0x10, 0xa6, 0xb9, 0x4f, 0xaa, 0x5d, 0x55, 0xce, 0x79, 0xc3, 0xb4,
+ 0xfb, 0x5f, 0xad, 0x7f, 0xd6, 0x03, 0x51, 0xf3, 0x5d, 0x5a, 0x4a, 0x52,
+ 0x49, 0x92, 0x94, 0x94, 0xba, 0x49, 0xa5, 0x29, 0x49, 0x4b, 0xa4, 0x9a,
+ 0x52, 0x94, 0x94, 0x81, 0x3a, 0x49, 0xd2, 0x52, 0xc9, 0xc2, 0x65, 0x36,
+ 0x80, 0x92, 0x97, 0x0a, 0x49, 0xa0, 0x27, 0x49, 0x4e, 0x76, 0x7e, 0x4c,
+ 0xdc, 0x31, 0xda, 0x7e, 0x88, 0xdd, 0x60, 0xf8, 0xf0, 0xb1, 0x3a, 0x8e,
+ 0x41, 0x66, 0x25, 0xce, 0xf1, 0xf6, 0xb7, 0xf8, 0xa6, 0x39, 0x5b, 0xfa,
+ 0x96, 0x75, 0xc4, 0xe8, 0xeb, 0x8d, 0x2c, 0xf8, 0x56, 0xdd, 0x55, 0x3e,
+ 0xac, 0xfd, 0xb8, 0x1b, 0x0e, 0xbe, 0xed, 0xc9, 0x29, 0xae, 0x1c, 0x4f,
+ 0x4f, 0xb1, 0xde, 0x23, 0xf0, 0x08, 0x4e, 0x3e, 0xa7, 0x4b, 0xc7, 0x77,
+ 0x81, 0x70, 0x3f, 0x27, 0x24, 0x2c, 0xff, 0x00, 0x25, 0x90, 0x3c, 0x76,
+ 0x9f, 0x9a, 0x6c, 0x70, 0x5f, 0xd2, 0xeb, 0x68, 0xfc, 0xdb, 0x5c, 0x0f,
+ 0xc3, 0x42, 0x92, 0x9a, 0xaf, 0x13, 0x68, 0x6c, 0xc6, 0xee, 0x49, 0xf3,
+ 0x56, 0x6d, 0xc7, 0xaa, 0xbc, 0x7a, 0x88, 0x13, 0x0f, 0x82, 0x7c, 0x67,
+ 0x45, 0x52, 0xd2, 0x06, 0x43, 0x5d, 0x33, 0xdd, 0x68, 0xe4, 0x3b, 0xd4,
+ 0xc6, 0x70, 0x6f, 0xe6, 0x89, 0x07, 0xe1, 0xaa, 0x4a, 0x4c, 0xec, 0x6c,
+ 0x7d, 0xec, 0x3b, 0x41, 0x0e, 0x86, 0xf1, 0xdf, 0xc5, 0x73, 0xfd, 0x6b,
+ 0x04, 0x51, 0x96, 0xca, 0x29, 0x23, 0xd3, 0xb5, 0xd2, 0xd6, 0x9d, 0x43,
+ 0x27, 0xe9, 0x42, 0xdf, 0xab, 0x20, 0x3f, 0x15, 0xb6, 0x81, 0xee, 0x6b,
+ 0x37, 0xfc, 0xc0, 0x58, 0x59, 0x56, 0xba, 0xc6, 0x3f, 0x22, 0xc2, 0x26,
+ 0x08, 0xac, 0x7c, 0x79, 0x29, 0x29, 0xcd, 0x7b, 0x4e, 0xfb, 0x1b, 0x4d,
+ 0x8f, 0x68, 0x68, 0x9d, 0x1c, 0x63, 0x98, 0x08, 0x2c, 0xad, 0xd5, 0xbf,
+ 0x5e, 0x4f, 0x33, 0xdd, 0x58, 0x00, 0xb5, 0xb6, 0x38, 0xfd, 0x27, 0x16,
+ 0x0f, 0xbf, 0xdd, 0x08, 0xae, 0x6e, 0xe6, 0xcc, 0x70, 0x92, 0x9a, 0xef,
+ 0xa9, 0xb2, 0x50, 0x4d, 0x60, 0x1f, 0xf6, 0xab, 0xa5, 0xa0, 0xc4, 0x20,
+ 0xd8, 0xcf, 0x74, 0x0f, 0x92, 0x4a, 0x6b, 0x0a, 0xc0, 0xf9, 0x79, 0x95,
+ 0x2b, 0x31, 0xdd, 0x5b, 0xda, 0x08, 0x12, 0x44, 0x8d, 0x7c, 0x54, 0xf5,
+ 0x12, 0x3b, 0xf7, 0x45, 0xbe, 0x3f, 0x42, 0xe1, 0xf9, 0xc0, 0xbb, 0xe1,
+ 0xf9, 0xa4, 0x7d, 0xe1, 0x25, 0x35, 0x0b, 0x08, 0x20, 0x91, 0xca, 0x90,
+ 0x6e, 0x9f, 0xec, 0x53, 0xb0, 0x6a, 0xd2, 0x74, 0x1c, 0x24, 0x35, 0x49,
+ 0x4a, 0x60, 0x3e, 0x28, 0x92, 0x7b, 0x28, 0xb4, 0x76, 0x0a, 0x70, 0x92,
+ 0x96, 0x89, 0x29, 0xeb, 0x71, 0x06, 0x4f, 0xc0, 0xa6, 0x4e, 0x47, 0xbb,
+ 0xe2, 0x92, 0x9d, 0x7e, 0x9a, 0x5c, 0x6d, 0x70, 0x6f, 0x12, 0xcf, 0xc0,
+ 0x20, 0x9f, 0xa4, 0xe2, 0x3c, 0x48, 0xfc, 0x51, 0xfa, 0x13, 0x66, 0xbb,
+ 0x6c, 0x77, 0x22, 0x3f, 0x22, 0xaf, 0x4c, 0x97, 0x13, 0xe1, 0xac, 0x7c,
+ 0x52, 0x52, 0x56, 0x30, 0xb4, 0x71, 0xee, 0x2a, 0x7b, 0x61, 0x8e, 0x3e,
+ 0x4a, 0x4d, 0x6e, 0xb2, 0x4a, 0x2d, 0xec, 0xdb, 0x8e, 0x5d, 0xd8, 0x8d,
+ 0x0a, 0x4a, 0x5b, 0xa7, 0xe4, 0xbb, 0x17, 0x22, 0xbb, 0x18, 0x75, 0x69,
+ 0x0e, 0x6f, 0x6d, 0x5b, 0xee, 0x85, 0xe9, 0x74, 0xda, 0xdb, 0xa9, 0x65,
+ 0xcc, 0xd5, 0xb6, 0x34, 0x39, 0xbf, 0x02, 0x25, 0x79, 0x53, 0x9d, 0xb4,
+ 0x32, 0xcf, 0xdd, 0x70, 0x3f, 0x25, 0xdf, 0x7d, 0x56, 0xcc, 0x17, 0xf4,
+ 0xff, 0x00, 0x40, 0x99, 0x7d, 0x0e, 0x20, 0x0f, 0xe4, 0x1d, 0x5a, 0x92,
+ 0x9d, 0xa4, 0xc9, 0xd4, 0x4a, 0x4a, 0x54, 0xa5, 0x29, 0x92, 0x49, 0x4c,
+ 0x93, 0x24, 0x92, 0x4a, 0x60, 0x12, 0x48, 0x05, 0x20, 0x12, 0x53, 0x14,
+ 0xe2, 0x53, 0xc0, 0x48, 0x04, 0x94, 0xc8, 0x27, 0x55, 0xf3, 0xb3, 0x29,
+ 0xc0, 0xc3, 0xb7, 0x32, 0xe0, 0x4d, 0x74, 0x89, 0x21, 0xa2, 0x5c, 0x7b,
+ 0x00, 0x07, 0xc5, 0x73, 0xd4, 0xe7, 0xf5, 0x5c, 0xf7, 0xfd, 0xb9, 0xc5,
+ 0xd8, 0x94, 0xb8, 0x45, 0x38, 0xe5, 0xc4, 0x3b, 0x6f, 0xef, 0x39, 0xa3,
+ 0x83, 0xf1, 0x49, 0x4e, 0x3b, 0x9c, 0x5a, 0xfb, 0x58, 0x09, 0x96, 0xd8,
+ 0xf9, 0xfe, 0xb5, 0x96, 0x12, 0x7f, 0xe8, 0x84, 0x3c, 0x9c, 0x8f, 0xb5,
+ 0x62, 0x82, 0x0c, 0xe8, 0x47, 0xdd, 0xa2, 0x0f, 0x57, 0x75, 0xd8, 0xcc,
+ 0xbf, 0x76, 0x8f, 0xb6, 0xe0, 0x64, 0xf7, 0x69, 0x0a, 0x95, 0xaf, 0x7d,
+ 0x34, 0xe3, 0xb7, 0xbb, 0xd8, 0x5d, 0xf7, 0xb8, 0x98, 0x49, 0x4d, 0x8a,
+ 0x1e, 0x4f, 0x4f, 0xb1, 0xbd, 0xda, 0x41, 0x3f, 0x91, 0x59, 0xe9, 0x8e,
+ 0x9e, 0x99, 0x74, 0x9d, 0x19, 0x61, 0x24, 0xf9, 0x10, 0x0a, 0xa9, 0x88,
+ 0xef, 0x52, 0x8b, 0x9e, 0xde, 0x1c, 0x36, 0x96, 0xf9, 0xca, 0x37, 0x48,
+ 0x2e, 0x38, 0xd9, 0xb4, 0x8e, 0x43, 0x99, 0xa7, 0xde, 0x12, 0x53, 0x5b,
+ 0x21, 0xdb, 0x9d, 0x31, 0x10, 0xee, 0x0f, 0x82, 0xbb, 0x45, 0x9b, 0x80,
+ 0x61, 0xe1, 0xc2, 0x08, 0x55, 0x32, 0x5a, 0x37, 0x10, 0x7e, 0x91, 0xd0,
+ 0x47, 0x92, 0x95, 0x05, 0xc1, 0x80, 0x8e, 0xc7, 0x53, 0xdd, 0x25, 0x36,
+ 0xb0, 0xb4, 0xaa, 0xcc, 0x77, 0x72, 0xc7, 0x16, 0xfc, 0x8a, 0xc7, 0xb9,
+ 0x8e, 0x36, 0xb7, 0x1d, 0xe3, 0x5d, 0x1b, 0xff, 0x00, 0x4a, 0x4f, 0xe0,
+ 0xb5, 0x58, 0x43, 0x73, 0x88, 0xe0, 0x5a, 0xcd, 0xdf, 0x36, 0xac, 0xbb,
+ 0x5c, 0xe7, 0xdd, 0x7d, 0xcd, 0xf7, 0x3b, 0xdc, 0x1b, 0x1e, 0x2e, 0x3b,
+ 0x47, 0xe0, 0x92, 0x9a, 0x8e, 0x33, 0x59, 0xb2, 0x34, 0x7d, 0xa4, 0x8f,
+ 0x83, 0x74, 0x08, 0xcd, 0x9d, 0xe4, 0x72, 0x0f, 0x64, 0x37, 0x01, 0xe8,
+ 0x35, 0x83, 0xfc, 0x18, 0x13, 0x1a, 0xea, 0x4c, 0xa2, 0x58, 0xcb, 0x18,
+ 0xe6, 0xbc, 0x88, 0x0e, 0x00, 0x13, 0x3a, 0x4f, 0x82, 0x4a, 0x60, 0x49,
+ 0x68, 0x93, 0xd8, 0xc2, 0x6b, 0x3d, 0xdf, 0x2d, 0x52, 0xb9, 0xa5, 0xae,
+ 0x88, 0xe4, 0xa7, 0x34, 0xda, 0x5a, 0x2c, 0x8d, 0x1d, 0xc7, 0x8c, 0x24,
+ 0xa4, 0x2f, 0x60, 0x3e, 0xe1, 0xa1, 0x50, 0x22, 0x39, 0xe5, 0x58, 0xda,
+ 0xe0, 0xe6, 0xcb, 0x75, 0x06, 0x35, 0x9f, 0xee, 0x4e, 0xec, 0x79, 0x27,
+ 0x78, 0x2d, 0x6c, 0xc4, 0xf2, 0x3f, 0x06, 0xa4, 0xa6, 0xb5, 0xba, 0xeb,
+ 0xe6, 0x0a, 0x60, 0x64, 0xc2, 0x3d, 0xe1, 0xcd, 0x60, 0x65, 0x63, 0xf4,
+ 0x64, 0x6e, 0x92, 0x20, 0xca, 0x13, 0x40, 0x89, 0x49, 0x4b, 0xb5, 0x3e,
+ 0x89, 0x43, 0x47, 0x8e, 0xa9, 0x01, 0x2e, 0x88, 0xfb, 0xd2, 0x52, 0xb4,
+ 0x94, 0x9d, 0x10, 0x0f, 0xc9, 0x23, 0xf0, 0x80, 0xa3, 0x61, 0xda, 0xdf,
+ 0x29, 0xd5, 0x25, 0x3b, 0x5d, 0x21, 0xe6, 0xbc, 0x3b, 0x8f, 0x89, 0xd3,
+ 0xee, 0x59, 0x6c, 0xc9, 0x35, 0x37, 0x65, 0x5a, 0xb8, 0x99, 0x7b, 0x8f,
+ 0xe4, 0x5a, 0x1d, 0x31, 0xa5, 0xd8, 0x6f, 0x8d, 0x46, 0xe7, 0x4f, 0xdc,
+ 0xb3, 0xa9, 0x6b, 0x37, 0x13, 0xc3, 0x5b, 0xca, 0x4a, 0x4e, 0x32, 0x72,
+ 0x03, 0x4b, 0xec, 0x74, 0x00, 0x11, 0x31, 0xae, 0x7b, 0xb1, 0xee, 0x6d,
+ 0x8e, 0x27, 0x78, 0x0e, 0xd7, 0xc6, 0x55, 0x0b, 0xf2, 0x0d, 0xa4, 0x35,
+ 0xba, 0x30, 0x7e, 0x2a, 0xe5, 0x00, 0xfa, 0x4f, 0x1f, 0xc9, 0x1f, 0xde,
+ 0x92, 0x93, 0x1f, 0x75, 0x2e, 0x6c, 0xea, 0x78, 0xfc, 0xab, 0xa4, 0xfa,
+ 0x9f, 0x97, 0xe9, 0xe7, 0xb2, 0x82, 0x74, 0xbd, 0x85, 0xbf, 0xda, 0x68,
+ 0xdd, 0xfc, 0x17, 0x30, 0xc7, 0xcd, 0x61, 0xfe, 0x1a, 0xfd, 0xca, 0xef,
+ 0x40, 0xcc, 0xf4, 0x7a, 0x95, 0x39, 0x2f, 0x1f, 0xa3, 0xa9, 0xdb, 0x9c,
+ 0x47, 0xee, 0x99, 0x04, 0x7c, 0x52, 0x53, 0xea, 0x29, 0x8a, 0xa9, 0x83,
+ 0xd5, 0xb0, 0xb3, 0xe4, 0x50, 0xff, 0x00, 0x78, 0xd4, 0xd6, 0xed, 0x1d,
+ 0x1e, 0x2a, 0xe1, 0x49, 0x4c, 0x12, 0x4e, 0x53, 0x24, 0xa5, 0x25, 0x29,
+ 0x92, 0x49, 0x4b, 0x02, 0xa4, 0xa0, 0x9c, 0x14, 0x94, 0xca, 0x14, 0x82,
+ 0x8a, 0x90, 0x49, 0x48, 0xf2, 0xa8, 0xfb, 0x4e, 0x35, 0xb4, 0x6e, 0x2d,
+ 0xf5, 0x1a, 0x5a, 0x1c, 0x39, 0x69, 0x3c, 0x11, 0xf0, 0x5c, 0xe5, 0x16,
+ 0x90, 0x1d, 0x4b, 0xd8, 0xf6, 0xba, 0x92, 0x58, 0x4b, 0xb5, 0x97, 0x37,
+ 0x42, 0x57, 0x50, 0xb9, 0xaf, 0xac, 0x57, 0xd5, 0x8b, 0x9f, 0x48, 0x02,
+ 0x5f, 0x90, 0x21, 0xcd, 0x1c, 0x83, 0xf4, 0x5a, 0xef, 0x9f, 0xf0, 0x49,
+ 0x4e, 0x6f, 0x52, 0xc7, 0x66, 0x55, 0x46, 0xbb, 0xc4, 0xb0, 0xfd, 0x12,
+ 0x3e, 0x90, 0xf3, 0x0b, 0x9b, 0xea, 0x61, 0xed, 0x2c, 0x07, 0x50, 0xd8,
+ 0x6b, 0x08, 0xd7, 0x40, 0x21, 0x74, 0x76, 0xdf, 0xb9, 0xa0, 0x82, 0x0b,
+ 0x0f, 0xe7, 0x0d, 0x65, 0x64, 0xe7, 0xd7, 0x5d, 0x8d, 0x73, 0x49, 0xd3,
+ 0xc7, 0xba, 0x4a, 0x6b, 0x74, 0xeb, 0xc5, 0x16, 0xba, 0x93, 0xf4, 0x5c,
+ 0xc9, 0x71, 0x3e, 0x3c, 0xab, 0xdd, 0x14, 0x1f, 0x5b, 0x2c, 0x91, 0xa3,
+ 0xc3, 0x5d, 0x1f, 0xda, 0x23, 0xf8, 0xac, 0x7a, 0xdc, 0x1b, 0x94, 0x37,
+ 0xe8, 0x03, 0x4c, 0xf9, 0xc0, 0x95, 0xa9, 0xf5, 0x7a, 0xff, 0x00, 0x56,
+ 0xec, 0x88, 0x33, 0x15, 0xe9, 0x3f, 0xd6, 0x49, 0x4c, 0x2e, 0xa2, 0xe7,
+ 0xde, 0xe0, 0xc1, 0x24, 0x19, 0x85, 0x62, 0xba, 0x0d, 0x6c, 0xb0, 0x59,
+ 0x0d, 0x2e, 0x6e, 0xe6, 0xb6, 0x7c, 0x10, 0xb2, 0x33, 0xee, 0xc7, 0xb4,
+ 0xfa, 0x71, 0xa9, 0xd4, 0xc7, 0x6f, 0x8a, 0x8e, 0x4d, 0x87, 0x7b, 0x4b,
+ 0xb5, 0x24, 0x73, 0xda, 0x0a, 0x4a, 0x5a, 0xc0, 0xf1, 0x5b, 0x1e, 0xff,
+ 0x00, 0x6d, 0x8d, 0x0e, 0x1f, 0x22, 0x35, 0xd4, 0x2a, 0x55, 0xe4, 0x3b,
+ 0x19, 0xb5, 0xbd, 0xac, 0x0f, 0x2f, 0x71, 0xdc, 0x27, 0x69, 0x86, 0x81,
+ 0x3b, 0x4f, 0x62, 0xac, 0xee, 0x71, 0xc1, 0x2d, 0x70, 0x1c, 0x12, 0xd7,
+ 0x02, 0x66, 0x07, 0xb4, 0x82, 0x0f, 0x98, 0x54, 0xee, 0x79, 0x6b, 0xd8,
+ 0xc0, 0xd9, 0x06, 0xa9, 0x81, 0xfc, 0xa7, 0x4a, 0x4a, 0x6c, 0x3f, 0x33,
+ 0xa7, 0x65, 0x07, 0x11, 0x61, 0xaa, 0xc7, 0x76, 0xb0, 0x41, 0xf9, 0xa3,
+ 0xb8, 0xe1, 0xfa, 0x41, 0x97, 0x64, 0x54, 0xd6, 0xc0, 0x92, 0x5c, 0xdf,
+ 0xc8, 0xb0, 0x72, 0xe9, 0x71, 0x8b, 0x36, 0xed, 0xdc, 0x78, 0x55, 0x6c,
+ 0xa9, 0xcd, 0x82, 0x7b, 0xa4, 0xa7, 0xa0, 0xc1, 0x6b, 0x59, 0x9b, 0xea,
+ 0xb1, 0xed, 0xbe, 0xaa, 0xa7, 0x6b, 0x9a, 0x67, 0x74, 0xb4, 0x80, 0x99,
+ 0xce, 0x68, 0x7d, 0x6c, 0x61, 0xfd, 0x23, 0x1d, 0xb4, 0x82, 0x79, 0x0e,
+ 0x12, 0x27, 0xee, 0x58, 0xb8, 0xd7, 0xba, 0x90, 0x40, 0xde, 0x3f, 0xe2,
+ 0xdd, 0xb6, 0x7e, 0x28, 0xb4, 0xe7, 0xd9, 0x41, 0x3f, 0x67, 0xa8, 0x7a,
+ 0x8e, 0xff, 0x00, 0x08, 0xf3, 0xb9, 0xc9, 0x29, 0xde, 0x35, 0xd9, 0x5d,
+ 0x53, 0x61, 0x04, 0x93, 0x33, 0xc0, 0x2a, 0xb6, 0xc7, 0x92, 0x75, 0x33,
+ 0x3a, 0xb8, 0x44, 0x42, 0xc1, 0xbe, 0xdc, 0xab, 0x9f, 0xbe, 0xe7, 0xb9,
+ 0xce, 0x3e, 0x25, 0x3b, 0x7d, 0x78, 0xdb, 0xbd, 0xdb, 0x7c, 0x25, 0x25,
+ 0x37, 0x6e, 0xbc, 0x1c, 0x81, 0x58, 0x32, 0xd6, 0x68, 0xe8, 0xd4, 0x49,
+ 0xfe, 0xe5, 0x16, 0x8e, 0x60, 0x69, 0xae, 0x88, 0x78, 0xd5, 0x7b, 0x8e,
+ 0x9a, 0xc0, 0x2a, 0xcd, 0x75, 0x82, 0xe2, 0x3b, 0xa4, 0xa6, 0x2e, 0x00,
+ 0x8f, 0x05, 0x08, 0x3b, 0x9b, 0xf1, 0x08, 0xef, 0xa8, 0xb1, 0xa2, 0x50,
+ 0xdc, 0x20, 0x8f, 0x22, 0x3f, 0x2a, 0x4a, 0x62, 0xf0, 0x47, 0x2a, 0x0f,
+ 0xd5, 0x8e, 0x1e, 0x48, 0xb6, 0x83, 0xa1, 0xf8, 0x21, 0x59, 0xf4, 0x5c,
+ 0x92, 0x9d, 0x9e, 0x88, 0x1a, 0x7a, 0x65, 0x87, 0xbe, 0xe7, 0xcf, 0xc8,
+ 0x05, 0x84, 0x5e, 0xe3, 0x5e, 0x87, 0x42, 0x75, 0x0b, 0xa0, 0xfa, 0xaf,
+ 0x43, 0xee, 0xe9, 0xb9, 0x40, 0xb4, 0xc7, 0xbb, 0xd3, 0x3d, 0x89, 0x2d,
+ 0x82, 0xb0, 0x32, 0x1a, 0xda, 0xc0, 0x60, 0x90, 0xf2, 0x75, 0x07, 0x4d,
+ 0x46, 0x89, 0x29, 0x8b, 0x04, 0xb8, 0x42, 0xd2, 0xa1, 0xc5, 0xac, 0x11,
+ 0xaf, 0x8a, 0xcb, 0x63, 0xcc, 0xc7, 0x1e, 0x4a, 0xe3, 0x1e, 0xe6, 0xb4,
+ 0x34, 0x6a, 0xe7, 0x7d, 0x10, 0x12, 0x52, 0x72, 0xe7, 0x3e, 0xd1, 0x4d,
+ 0x7c, 0x34, 0xc9, 0x3d, 0xa0, 0xf8, 0xab, 0x75, 0xb1, 0xb5, 0x01, 0x5b,
+ 0x74, 0x1c, 0xa1, 0xe2, 0xd2, 0xd6, 0x08, 0x1a, 0xb9, 0xc7, 0xdc, 0x7c,
+ 0xd1, 0x2f, 0xb9, 0xe7, 0xf4, 0x35, 0xc4, 0xfe, 0x7b, 0xfc, 0x3e, 0x09,
+ 0x29, 0x36, 0x2e, 0x7b, 0xf1, 0x33, 0x69, 0xb2, 0xb7, 0x7b, 0xeb, 0x78,
+ 0x20, 0x0f, 0x09, 0xd4, 0x7c, 0xd7, 0xa8, 0x83, 0x22, 0x7c, 0x57, 0x9d,
+ 0xfd, 0x55, 0xe9, 0x94, 0xe4, 0xf5, 0x66, 0x35, 0xe3, 0x7b, 0x28, 0x06,
+ 0xe7, 0x93, 0xf9, 0xc5, 0xa4, 0x6d, 0x1f, 0x79, 0x5e, 0x88, 0x52, 0x52,
+ 0xc5, 0x45, 0x3c, 0x94, 0x92, 0x53, 0x12, 0x99, 0x4d, 0x32, 0x4a, 0x46,
+ 0x9d, 0x32, 0x74, 0x94, 0xb8, 0x2a, 0x40, 0xa8, 0x29, 0x04, 0x94, 0x90,
+ 0x15, 0x95, 0xd6, 0xb1, 0x71, 0x5d, 0x65, 0x59, 0x2f, 0x60, 0x39, 0x0c,
+ 0x05, 0xac, 0x77, 0xf2, 0x56, 0xa0, 0x58, 0x1d, 0x53, 0x2b, 0xd4, 0xc8,
+ 0x70, 0x07, 0xda, 0xdf, 0x68, 0xf9, 0x24, 0xa7, 0x9b, 0xea, 0x20, 0x61,
+ 0xbe, 0xb6, 0x56, 0xdd, 0xb8, 0xee, 0x9d, 0x07, 0x01, 0xd3, 0x2a, 0x8d,
+ 0xa7, 0x70, 0x2f, 0xf0, 0x1e, 0xe5, 0xb7, 0x99, 0x5b, 0x2d, 0xa5, 0xcd,
+ 0x70, 0x04, 0x15, 0xce, 0xbf, 0x7d, 0x36, 0x1a, 0xce, 0xad, 0x3a, 0x0f,
+ 0x82, 0x4a, 0x6a, 0xe4, 0x41, 0xf7, 0x0f, 0xa4, 0x3f, 0x22, 0xb5, 0xf5,
+ 0x5d, 0xd1, 0x9b, 0x73, 0x3b, 0x1a, 0x88, 0xff, 0x00, 0xa4, 0xd5, 0x45,
+ 0xc4, 0xc1, 0x95, 0x6b, 0xea, 0xfb, 0xc5, 0x7d, 0x59, 0xa3, 0xb5, 0xac,
+ 0x73, 0x7e, 0x71, 0xbb, 0xf8, 0x24, 0xa6, 0xc6, 0x6d, 0x7b, 0x6e, 0x7b,
+ 0x4f, 0x2d, 0x33, 0xf7, 0xa7, 0x73, 0xbd, 0x6c, 0x61, 0xaf, 0xba, 0xa2,
+ 0x64, 0x77, 0x80, 0x11, 0xfa, 0xa4, 0x36, 0xf7, 0x4e, 0x92, 0x75, 0x54,
+ 0xeb, 0x6b, 0xb7, 0x0d, 0x63, 0x70, 0x23, 0xef, 0x05, 0x25, 0x31, 0xae,
+ 0xe6, 0xbb, 0x11, 0xd5, 0x8f, 0xa6, 0xc7, 0x1d, 0x7c, 0x9d, 0xaa, 0x13,
+ 0xf5, 0xea, 0x25, 0x91, 0x21, 0x8c, 0x0c, 0xfb, 0x82, 0x86, 0x35, 0x6f,
+ 0xdf, 0x53, 0x4f, 0xf8, 0x47, 0xc4, 0x7c, 0x00, 0xfe, 0xf5, 0x2a, 0x5c,
+ 0x1f, 0xd4, 0xde, 0xf8, 0xd0, 0x97, 0x7e, 0x44, 0x94, 0xd8, 0xbb, 0x1c,
+ 0x58, 0xe6, 0xb6, 0x78, 0x82, 0x55, 0x1c, 0xea, 0x58, 0xd7, 0x86, 0xb7,
+ 0x50, 0xb6, 0x3d, 0x3f, 0x79, 0x3e, 0x21, 0x66, 0xe7, 0x37, 0xf4, 0x92,
+ 0x38, 0x94, 0x94, 0xd3, 0x6d, 0x20, 0x36, 0x54, 0xab, 0xa4, 0x18, 0x31,
+ 0xa2, 0x36, 0xd8, 0x6e, 0x9d, 0xd4, 0xa8, 0x69, 0x0e, 0xf9, 0xca, 0x4a,
+ 0x56, 0x46, 0x18, 0x0d, 0x07, 0xef, 0x55, 0xc5, 0x7a, 0xc7, 0x75, 0xa7,
+ 0x7b, 0xda, 0xe2, 0xd6, 0x91, 0xcf, 0xe0, 0x83, 0x75, 0x2c, 0x35, 0x8b,
+ 0x18, 0x75, 0x1f, 0x24, 0x94, 0xd5, 0xac, 0x43, 0xb4, 0xe7, 0x6f, 0xf1,
+ 0x56, 0x6a, 0xa8, 0xb9, 0xc4, 0xf3, 0x3f, 0xc1, 0x57, 0xad, 0xbe, 0xe1,
+ 0xde, 0x66, 0x27, 0xe2, 0x16, 0x86, 0x18, 0x06, 0xc8, 0x03, 0x41, 0xa7,
+ 0x84, 0x4a, 0x4a, 0x6b, 0x58, 0x3f, 0x34, 0xf7, 0x43, 0xb5, 0x9b, 0x5a,
+ 0x3c, 0x64, 0x7e, 0x55, 0x69, 0xd5, 0x4d, 0x8e, 0x27, 0x81, 0xc2, 0x15,
+ 0xcc, 0x21, 0xc0, 0x1d, 0x75, 0x68, 0x1f, 0x7a, 0x4a, 0x41, 0x6c, 0x10,
+ 0x16, 0xb7, 0x4a, 0xfa, 0xb0, 0x73, 0xb1, 0xfe, 0xdb, 0x96, 0xf3, 0x55,
+ 0x04, 0x8d, 0x8c, 0x02, 0x5c, 0xe6, 0xf1, 0xb8, 0xf8, 0x05, 0x9d, 0x5b,
+ 0x2a, 0xb7, 0xa8, 0x63, 0x51, 0x74, 0xfa, 0x56, 0xd8, 0xd6, 0xbf, 0x6f,
+ 0x30, 0x4c, 0x2f, 0x48, 0xc7, 0xa9, 0x8d, 0x68, 0xaf, 0x68, 0xd9, 0x1b,
+ 0x36, 0x76, 0xdb, 0x10, 0x07, 0xdc, 0x92, 0x9c, 0xdc, 0x2e, 0x9c, 0xcc,
+ 0x6a, 0xfe, 0xcf, 0x00, 0x06, 0xfd, 0x10, 0xd1, 0x0d, 0x70, 0x1d, 0xd7,
+ 0x0b, 0xd7, 0xb1, 0x2c, 0xc5, 0xea, 0x57, 0x57, 0x7b, 0x76, 0x6f, 0x71,
+ 0x7d, 0x47, 0xb3, 0x9a, 0x4f, 0x21, 0x7a, 0x25, 0xd8, 0xe6, 0xbd, 0xb4,
+ 0x97, 0xbb, 0xd3, 0x79, 0xd1, 0xed, 0x30, 0x43, 0x5b, 0xa9, 0xd7, 0xc7,
+ 0xb2, 0xc7, 0xfa, 0xc5, 0x82, 0xfe, 0xa1, 0xd2, 0x2e, 0xb2, 0xc6, 0x83,
+ 0x91, 0x82, 0x7d, 0x4a, 0x6c, 0x03, 0x57, 0x57, 0xf9, 0xc1, 0xdf, 0x24,
+ 0x94, 0xf0, 0x76, 0x40, 0xb6, 0x47, 0x04, 0x02, 0xaf, 0x63, 0x36, 0x21,
+ 0xc4, 0x7b, 0x8f, 0x7f, 0x00, 0xa9, 0x1d, 0x5d, 0x59, 0xf2, 0x2a, 0xe5,
+ 0x4f, 0xe1, 0x25, 0x36, 0xf7, 0x6d, 0x88, 0x22, 0x4f, 0x1f, 0xde, 0x9d,
+ 0xd6, 0x32, 0xb6, 0xf3, 0xa9, 0xef, 0xde, 0x7c, 0x55, 0x37, 0xe4, 0x06,
+ 0xbb, 0x48, 0x27, 0xb0, 0xf8, 0x22, 0x52, 0x1d, 0x75, 0x9b, 0xdf, 0xcf,
+ 0x20, 0x0e, 0x12, 0x53, 0xe8, 0x5f, 0x53, 0x7a, 0x69, 0xc7, 0xc1, 0xfb,
+ 0x75, 0xa3, 0xf4, 0xb9, 0x40, 0x16, 0x83, 0xda, 0xb1, 0xf4, 0x7e, 0xfe,
+ 0x57, 0x44, 0xb0, 0xbe, 0xa8, 0x66, 0xfa, 0xfd, 0x33, 0xec, 0xee, 0x32,
+ 0xfc, 0x63, 0xb7, 0xfb, 0x2e, 0xd5, 0xab, 0x75, 0x25, 0x2c, 0x53, 0x27,
+ 0x29, 0x92, 0x52, 0x92, 0x49, 0x24, 0x94, 0x8d, 0x24, 0x92, 0x49, 0x4b,
+ 0xa7, 0x01, 0x32, 0x93, 0x52, 0x53, 0x0c, 0xab, 0x7d, 0x1c, 0x6b, 0x2c,
+ 0xf0, 0x1a, 0x7c, 0x4e, 0x81, 0x72, 0x77, 0x3e, 0x5d, 0x3d, 0x96, 0xff,
+ 0x00, 0x5b, 0xb8, 0x36, 0x86, 0x53, 0xde, 0xc3, 0x3f, 0x20, 0xb9, 0xcb,
+ 0x4c, 0x3a, 0x67, 0xe4, 0x92, 0x91, 0x64, 0x59, 0x0c, 0x58, 0x79, 0xa4,
+ 0x39, 0xc3, 0xf0, 0x5a, 0x19, 0x77, 0x76, 0x95, 0x93, 0x7b, 0xc3, 0x9e,
+ 0x4f, 0xdc, 0x92, 0x9a, 0x96, 0xce, 0xb3, 0xf1, 0x42, 0xae, 0xe7, 0xe3,
+ 0xdf, 0x5d, 0xec, 0xe6, 0xb7, 0x07, 0x7d, 0xc5, 0x12, 0xd7, 0x77, 0xf0,
+ 0x55, 0xde, 0x7d, 0xa0, 0x8d, 0x37, 0x24, 0xa7, 0xa4, 0xeb, 0x0f, 0x6b,
+ 0xde, 0xcb, 0x1a, 0x24, 0x3c, 0x07, 0x03, 0xda, 0x1c, 0x25, 0x57, 0x65,
+ 0x2e, 0xd2, 0xd9, 0x1a, 0x1d, 0x04, 0xf8, 0x26, 0xa6, 0xc1, 0x77, 0x4d,
+ 0xc4, 0x71, 0xd5, 0xed, 0x06, 0xb3, 0xfd, 0x93, 0xa7, 0xe0, 0x89, 0x4b,
+ 0x81, 0x9a, 0x9d, 0x1a, 0x19, 0x09, 0x29, 0x83, 0xea, 0x0c, 0xca, 0xa4,
+ 0x03, 0x21, 0xbb, 0xae, 0xd3, 0xb3, 0x5c, 0xd2, 0x07, 0xe4, 0x54, 0x30,
+ 0xb5, 0xc8, 0x2e, 0xf3, 0x2b, 0x46, 0xd9, 0x6d, 0x99, 0x0f, 0x8f, 0x68,
+ 0xa5, 0xac, 0x69, 0xf3, 0x3a, 0xc2, 0xa1, 0xd3, 0xe3, 0x79, 0x27, 0xb2,
+ 0x4a, 0x75, 0x5e, 0xed, 0xad, 0x1b, 0x74, 0x90, 0x66, 0x56, 0x7e, 0x53,
+ 0x41, 0xa8, 0x90, 0x3e, 0x6a, 0xed, 0xda, 0x86, 0x9f, 0x00, 0xe1, 0xa2,
+ 0x03, 0xab, 0x26, 0x92, 0x66, 0x4b, 0x86, 0x89, 0x29, 0xaa, 0xd8, 0x75,
+ 0x6d, 0x00, 0x70, 0x8b, 0x45, 0x47, 0x7c, 0x1e, 0xe8, 0x75, 0x80, 0x2b,
+ 0x1e, 0x45, 0x5e, 0xc6, 0x00, 0xeb, 0xe1, 0xa8, 0x49, 0x4d, 0x4b, 0x8b,
+ 0x9d, 0x61, 0x6f, 0x81, 0x81, 0x1e, 0x45, 0x4a, 0xdd, 0xa2, 0xbd, 0xb1,
+ 0x02, 0x0e, 0xbe, 0x32, 0x84, 0xe2, 0xe0, 0xf7, 0x92, 0x79, 0x30, 0x13,
+ 0xfd, 0x21, 0x13, 0x30, 0x34, 0x49, 0x4c, 0x71, 0xeb, 0x25, 0xcc, 0x6b,
+ 0xb9, 0x24, 0xfd, 0xc4, 0x68, 0xae, 0xe3, 0xd7, 0xe9, 0x65, 0x39, 0xb1,
+ 0xa1, 0x68, 0x70, 0xf3, 0xd5, 0x52, 0x65, 0x87, 0xd5, 0x25, 0xdc, 0xc8,
+ 0x3f, 0x8c, 0x7f, 0x15, 0x6f, 0x22, 0xc7, 0x7a, 0xd5, 0xb9, 0xbc, 0xb9,
+ 0x85, 0xbf, 0x71, 0x49, 0x4c, 0x9c, 0x48, 0x79, 0x27, 0x82, 0xab, 0x58,
+ 0x77, 0x5b, 0x58, 0x3f, 0xbe, 0x27, 0xe1, 0x28, 0x86, 0xc2, 0xea, 0xda,
+ 0x1c, 0x21, 0xdc, 0xa0, 0xbc, 0xc3, 0x81, 0x32, 0x0e, 0xe4, 0x94, 0xd6,
+ 0xb9, 0xe4, 0x64, 0x35, 0xf5, 0x9d, 0xaf, 0x69, 0x05, 0xae, 0x3d, 0x8c,
+ 0xae, 0xb3, 0x2b, 0xeb, 0x9e, 0x1d, 0x6d, 0x65, 0x3d, 0x34, 0xfd, 0xa7,
+ 0x22, 0x09, 0x7b, 0xde, 0xd2, 0xda, 0xd8, 0x00, 0xd7, 0xcc, 0xea, 0xb8,
+ 0xfc, 0xb1, 0x2f, 0x91, 0xf0, 0x56, 0xba, 0x07, 0x4d, 0xb3, 0x36, 0xec,
+ 0x9f, 0x4d, 0xbb, 0x9e, 0xd6, 0x06, 0x37, 0xb7, 0xb9, 0xe7, 0xfb, 0x82,
+ 0x4a, 0x7a, 0x9f, 0xab, 0xdd, 0x63, 0x37, 0xab, 0x30, 0x9c, 0x8c, 0xa6,
+ 0x82, 0xd3, 0xad, 0x3b, 0x5a, 0x37, 0x49, 0x8d, 0x17, 0x4a, 0xda, 0x18,
+ 0xf0, 0x5a, 0xed, 0x24, 0x41, 0x5c, 0xa6, 0x37, 0xd5, 0x40, 0xcc, 0x3a,
+ 0xea, 0x76, 0x58, 0xab, 0x29, 0x92, 0x77, 0x56, 0xd2, 0x40, 0x71, 0x33,
+ 0xa3, 0xa5, 0xa5, 0x3e, 0x2f, 0x54, 0xeb, 0x98, 0x79, 0x56, 0x62, 0xe4,
+ 0xe4, 0x36, 0xf7, 0x53, 0xa1, 0x0f, 0x00, 0x87, 0x08, 0x96, 0xb8, 0x6d,
+ 0x82, 0x92, 0x9c, 0x3f, 0xad, 0xb8, 0x58, 0xf8, 0x3d, 0x6a, 0xca, 0xf1,
+ 0xd9, 0xe9, 0xd4, 0x5a, 0xd7, 0x86, 0x81, 0x00, 0x17, 0x0d, 0x63, 0xe6,
+ 0x16, 0x58, 0x7c, 0x37, 0x45, 0xab, 0xf5, 0xaf, 0x2e, 0xfc, 0xcc, 0xba,
+ 0xec, 0xb5, 0xac, 0x91, 0x58, 0xdb, 0x6d, 0x44, 0x96, 0xbd, 0xb3, 0xaf,
+ 0xd2, 0xee, 0xd3, 0xca, 0xc6, 0x63, 0x83, 0xac, 0x81, 0xa8, 0x09, 0x29,
+ 0xb7, 0x46, 0x30, 0x70, 0xdc, 0xee, 0x55, 0xca, 0x98, 0x19, 0xc2, 0x0d,
+ 0x4e, 0x80, 0x00, 0xec, 0x8a, 0x1e, 0x4a, 0x4a, 0x7a, 0x0f, 0xaa, 0xf9,
+ 0xbf, 0x64, 0xea, 0x6c, 0x61, 0x31, 0x5d, 0xff, 0x00, 0xa3, 0x77, 0xc4,
+ 0xfd, 0x1f, 0xc5, 0x77, 0xab, 0xca, 0x2a, 0xb4, 0xb6, 0xc6, 0xbc, 0x18,
+ 0x20, 0x82, 0x0f, 0x98, 0x5e, 0x9f, 0x83, 0x92, 0x32, 0xf0, 0xe9, 0xc8,
+ 0x1f, 0xe1, 0x18, 0x09, 0xf8, 0xf7, 0xfc, 0x52, 0x52, 0x72, 0x99, 0x39,
+ 0x2a, 0x32, 0x92, 0x94, 0x92, 0x69, 0x4e, 0x92, 0x91, 0xa7, 0x4c, 0x9d,
+ 0x25, 0x2e, 0x14, 0xc0, 0x51, 0x09, 0xae, 0xb0, 0x53, 0x4b, 0xed, 0x3f,
+ 0x9a, 0x09, 0xf9, 0xa4, 0xa7, 0x07, 0xab, 0x5d, 0xea, 0xe6, 0x39, 0xa3,
+ 0x51, 0x58, 0xdb, 0xfd, 0xeb, 0x17, 0x29, 0xf1, 0x3e, 0x4a, 0xf3, 0xdc,
+ 0xf7, 0x17, 0xd8, 0x75, 0x73, 0x8c, 0x92, 0xb2, 0x3a, 0x85, 0xa4, 0x08,
+ 0x49, 0x4e, 0x76, 0x4d, 0xf2, 0x4a, 0xa0, 0xfb, 0x14, 0xf2, 0x6c, 0xd4,
+ 0xaa, 0x6e, 0x7c, 0xa4, 0xa6, 0xef, 0x4e, 0xe9, 0x79, 0xbd, 0x63, 0x25,
+ 0xd8, 0xb8, 0x6d, 0x0e, 0xb1, 0xac, 0x75, 0x87, 0x71, 0x81, 0x0d, 0xf3,
+ 0xf3, 0x3a, 0x05, 0x57, 0xa8, 0xf4, 0xfc, 0xee, 0x9c, 0xe6, 0xd3, 0x9b,
+ 0x43, 0xa8, 0x71, 0x12, 0xd0, 0xf1, 0xf4, 0x84, 0xf6, 0x8e, 0x57, 0xa4,
+ 0xfd, 0x4a, 0xe8, 0xdf, 0xb3, 0x7a, 0x60, 0xc8, 0xb9, 0xb1, 0x95, 0x99,
+ 0x0f, 0x7c, 0xf2, 0xd6, 0x7e, 0x63, 0x7f, 0x8a, 0xca, 0xff, 0x00, 0x19,
+ 0x78, 0x85, 0xd4, 0x61, 0x65, 0x81, 0xa3, 0x5c, 0xfa, 0x9c, 0x7f, 0xac,
+ 0x37, 0x37, 0xf2, 0x14, 0x94, 0xe0, 0xf4, 0xf6, 0x1f, 0xd9, 0x15, 0x3b,
+ 0xf9, 0x67, 0x5f, 0xeb, 0x7f, 0xb9, 0x0c, 0x87, 0x36, 0xdd, 0xfc, 0xf9,
+ 0xf8, 0xa3, 0xf4, 0xb2, 0x3f, 0x61, 0x6e, 0x70, 0x91, 0x53, 0xc8, 0x23,
+ 0xe7, 0xfe, 0xd4, 0x4f, 0x52, 0xb7, 0x53, 0xfd, 0x5d, 0x48, 0xe3, 0x8d,
+ 0x52, 0x53, 0x5f, 0x31, 0xc0, 0x51, 0x90, 0x41, 0xd6, 0xc7, 0xe9, 0xf0,
+ 0x68, 0x03, 0xf2, 0xaa, 0x98, 0x23, 0xe9, 0xf6, 0x80, 0xa5, 0xab, 0xba,
+ 0x7d, 0x27, 0xbb, 0xe5, 0xc4, 0xff, 0x00, 0x58, 0x95, 0x2c, 0x26, 0x0d,
+ 0xfb, 0x7b, 0x12, 0x3e, 0xe4, 0x94, 0xde, 0xbf, 0x46, 0x4c, 0x70, 0x78,
+ 0xf8, 0xa6, 0x73, 0x43, 0xa9, 0xdc, 0x07, 0x02, 0x14, 0xaf, 0x70, 0xf4,
+ 0x9c, 0x79, 0x3d, 0x82, 0x13, 0xde, 0x5b, 0x8d, 0x58, 0x7f, 0x24, 0x9d,
+ 0x3e, 0x26, 0x12, 0x53, 0x9d, 0xa8, 0x1b, 0x47, 0x8a, 0xd0, 0xc2, 0xd1,
+ 0xbb, 0x7b, 0x90, 0x40, 0x2a, 0x95, 0x4d, 0x2e, 0x07, 0x4d, 0x77, 0x42,
+ 0xb7, 0x56, 0xe6, 0x3d, 0x8e, 0x71, 0x0c, 0x11, 0x26, 0x7b, 0x4a, 0x4a,
+ 0x6b, 0x3c, 0xc6, 0xe6, 0xf7, 0x05, 0x35, 0x24, 0xbc, 0x47, 0x1e, 0x6a,
+ 0x77, 0x96, 0x07, 0x19, 0x24, 0x97, 0x46, 0xa1, 0xa6, 0x39, 0x8e, 0xe9,
+ 0x0d, 0x00, 0x6b, 0x58, 0xe3, 0xa9, 0x3a, 0xe9, 0xf9, 0x25, 0x25, 0x21,
+ 0x0d, 0xfa, 0x0e, 0x32, 0x24, 0x1f, 0xc1, 0x5c, 0xb7, 0x41, 0x53, 0x8e,
+ 0xb0, 0x1c, 0x00, 0x40, 0x7b, 0xda, 0x18, 0x03, 0x8b, 0x1a, 0x5a, 0x34,
+ 0x04, 0xeb, 0x3f, 0x7a, 0xb1, 0x95, 0x66, 0x31, 0xaa, 0xb6, 0xb2, 0xe6,
+ 0x17, 0xce, 0xa3, 0xb8, 0x91, 0xf1, 0x49, 0x4c, 0x36, 0xee, 0x6b, 0x0c,
+ 0xea, 0x75, 0x80, 0x87, 0x6c, 0x36, 0x7b, 0xed, 0x20, 0xfd, 0xc5, 0x18,
+ 0xdb, 0x53, 0x43, 0x5a, 0xeb, 0x5b, 0x2d, 0x11, 0xc8, 0x1f, 0x3e, 0x55,
+ 0x5b, 0x9f, 0x48, 0xdd, 0xb6, 0xc0, 0xe9, 0x33, 0xa6, 0xa9, 0x29, 0xad,
+ 0x68, 0x1b, 0xc8, 0x3e, 0x2b, 0xa4, 0xfa, 0xa8, 0xd3, 0x46, 0x33, 0xaf,
+ 0xdb, 0x3e, 0xb5, 0xae, 0xd2, 0x3e, 0x93, 0x2b, 0x68, 0x6f, 0xe5, 0x2b,
+ 0x9c, 0xba, 0x1e, 0x5a, 0xe6, 0x7b, 0x83, 0xa2, 0x00, 0xd4, 0xea, 0xbb,
+ 0x1c, 0x5c, 0x77, 0xe1, 0x74, 0xec, 0x19, 0xf6, 0xfa, 0x6d, 0x9b, 0x87,
+ 0x7f, 0x7c, 0x97, 0x4f, 0xc3, 0x72, 0x4a, 0x6f, 0xdf, 0x96, 0x5a, 0xe7,
+ 0x3b, 0xdb, 0xb4, 0x70, 0x49, 0x12, 0x3e, 0x45, 0x65, 0x75, 0x31, 0xe9,
+ 0x5f, 0x8d, 0x9a, 0xd7, 0x87, 0x59, 0x64, 0x83, 0xa4, 0x12, 0xd1, 0xf9,
+ 0xa7, 0xc5, 0x4b, 0x36, 0xec, 0x8a, 0x1e, 0x45, 0x94, 0x8b, 0x58, 0x4e,
+ 0x84, 0x3b, 0x9f, 0xca, 0xa9, 0xf5, 0x5c, 0x9c, 0x6a, 0x8e, 0x1e, 0x4d,
+ 0xde, 0xda, 0xd9, 0xbc, 0x81, 0xc9, 0x2e, 0x90, 0x20, 0x0f, 0x92, 0x4a,
+ 0x73, 0x3e, 0xb1, 0x8c, 0x86, 0x75, 0x52, 0xd3, 0x06, 0xb6, 0x86, 0xd9,
+ 0x50, 0xda, 0x00, 0xdb, 0x60, 0x07, 0x5f, 0x1d, 0x44, 0x2a, 0xdd, 0x63,
+ 0x0c, 0x62, 0x65, 0xb3, 0x22, 0x96, 0x6c, 0xc6, 0xce, 0xad, 0xb9, 0x34,
+ 0x01, 0xc3, 0x77, 0xfd, 0x36, 0x0f, 0xea, 0xba, 0x42, 0xb1, 0xd4, 0xba,
+ 0xa5, 0x7d, 0x53, 0x22, 0x9b, 0x1b, 0x5f, 0xa7, 0xb1, 0x86, 0xb9, 0x99,
+ 0x25, 0xa0, 0xee, 0x13, 0xf7, 0x95, 0xbf, 0xfb, 0x3b, 0xf6, 0xcf, 0xd4,
+ 0xb6, 0x1a, 0x86, 0xec, 0xae, 0x9a, 0xfb, 0x3d, 0x38, 0xe4, 0xb4, 0x1d,
+ 0xce, 0x6f, 0xcd, 0xa7, 0xf0, 0x49, 0x4f, 0x27, 0x55, 0x88, 0xcd, 0xb2,
+ 0x74, 0x54, 0x2b, 0x7c, 0x18, 0x2a, 0xdd, 0x7a, 0x94, 0x94, 0xd9, 0x61,
+ 0xee, 0xbb, 0xef, 0xa9, 0xd9, 0x62, 0xdc, 0x07, 0xe3, 0x93, 0xee, 0xa1,
+ 0xd2, 0x07, 0xf2, 0x5f, 0xaf, 0xe5, 0x95, 0xe7, 0xe2, 0x02, 0xe9, 0x3e,
+ 0xa8, 0x65, 0xfa, 0x1d, 0x49, 0x8c, 0x27, 0xdb, 0x90, 0xd3, 0x59, 0xf8,
+ 0xfd, 0x26, 0xfe, 0x44, 0x94, 0xf7, 0x4e, 0x2a, 0x1b, 0x91, 0x1c, 0x10,
+ 0xca, 0x4a, 0x58, 0x94, 0xb7, 0x14, 0x94, 0x7b, 0xa4, 0xa6, 0x69, 0x04,
+ 0x93, 0x84, 0x94, 0xc8, 0x2c, 0xfe, 0xb1, 0x71, 0xda, 0xcc, 0x66, 0xf2,
+ 0xff, 0x00, 0x73, 0xbe, 0x01, 0x68, 0x05, 0x85, 0x9f, 0x78, 0x76, 0x5d,
+ 0xa7, 0xc0, 0xed, 0x1f, 0x06, 0xa4, 0xa6, 0x96, 0x41, 0x8f, 0x68, 0xd6,
+ 0x07, 0x01, 0x63, 0xf5, 0x0c, 0x6b, 0xde, 0xd2, 0xe0, 0xcf, 0x86, 0xa1,
+ 0x6d, 0xe8, 0xe7, 0x78, 0x4f, 0x74, 0xef, 0xa4, 0x11, 0x25, 0x25, 0x3e,
+ 0x77, 0x92, 0x6c, 0xad, 0xe5, 0x96, 0x0d, 0xae, 0xf0, 0x2b, 0x63, 0xea,
+ 0x7f, 0x42, 0x3d, 0x5b, 0xa9, 0x0b, 0x2e, 0x6f, 0xea, 0x78, 0xb0, 0xfb,
+ 0xa7, 0x87, 0x1f, 0xcc, 0x67, 0xcf, 0xbf, 0x92, 0xd5, 0xcf, 0xe9, 0x34,
+ 0x64, 0x88, 0x7b, 0x41, 0xf0, 0x3d, 0xc7, 0xc0, 0xad, 0xbf, 0xaa, 0x1f,
+ 0x62, 0xc0, 0xc1, 0x76, 0x11, 0xb0, 0x36, 0xf7, 0x58, 0xe7, 0x9d, 0xda,
+ 0x17, 0x4c, 0x01, 0xaf, 0xc0, 0x24, 0xa7, 0xa4, 0x59, 0xbf, 0x58, 0x7a,
+ 0x68, 0xea, 0x9d, 0x26, 0xfc, 0x60, 0x26, 0xc0, 0x37, 0xd5, 0xfd, 0x76,
+ 0x6a, 0x3e, 0xfe, 0x16, 0x92, 0x74, 0x94, 0xf9, 0x7e, 0x03, 0x5b, 0x5f,
+ 0x4f, 0xcb, 0xc4, 0x70, 0x87, 0x02, 0x2c, 0x00, 0xf7, 0x1a, 0x03, 0xf9,
+ 0x16, 0x65, 0xd9, 0x21, 0xdb, 0xeb, 0x06, 0x03, 0x01, 0x3f, 0x3e, 0x3f,
+ 0x8a, 0xec, 0xfa, 0xff, 0x00, 0x45, 0x15, 0x5d, 0x65, 0xf8, 0xe2, 0x1e,
+ 0xe9, 0x7b, 0x47, 0x62, 0x1d, 0xf4, 0x9a, 0xb8, 0xc7, 0xe1, 0x57, 0x5e,
+ 0x25, 0x85, 0xcf, 0x8b, 0x7d, 0x52, 0xc3, 0x1a, 0xe8, 0x06, 0xe0, 0x92,
+ 0x9b, 0x0d, 0xa9, 0xa3, 0x13, 0x1c, 0x6b, 0x3b, 0x04, 0x8f, 0x8e, 0xa9,
+ 0xf0, 0xbd, 0xd9, 0x20, 0x68, 0x00, 0x28, 0xf7, 0x80, 0xca, 0xd8, 0xc1,
+ 0xcd, 0x61, 0xad, 0x3f, 0xe6, 0x84, 0x1a, 0x0b, 0x06, 0x48, 0x6b, 0x39,
+ 0x91, 0xc2, 0x4a, 0x6d, 0x39, 0xbf, 0xa2, 0xfa, 0x6d, 0x06, 0x1b, 0x2d,
+ 0x1f, 0x4b, 0x9e, 0xfa, 0x85, 0x52, 0xcb, 0xb1, 0x5b, 0xb5, 0xa6, 0xcd,
+ 0xef, 0x00, 0x9d, 0xac, 0x3b, 0xcc, 0xf3, 0xf9, 0xba, 0x7e, 0x29, 0xf2,
+ 0xb0, 0x6a, 0x7b, 0xcb, 0xbb, 0x97, 0x16, 0x98, 0xee, 0x3c, 0xd3, 0xb6,
+ 0xba, 0xeb, 0x60, 0x0d, 0x68, 0x1e, 0xc3, 0xaf, 0xc9, 0x25, 0x34, 0x8b,
+ 0xc9, 0x2e, 0x8a, 0x9d, 0x23, 0xb9, 0x20, 0x77, 0xf9, 0xa9, 0x54, 0x6c,
+ 0x2d, 0xde, 0xda, 0xda, 0x0b, 0x35, 0xdc, 0xe2, 0x4f, 0xe4, 0x84, 0x76,
+ 0x9d, 0xd6, 0x99, 0x04, 0x87, 0x35, 0x3b, 0x03, 0x45, 0x0e, 0x6c, 0x6a,
+ 0x47, 0xfb, 0x12, 0x53, 0x0b, 0xeb, 0xb0, 0x86, 0xd8, 0x6d, 0x25, 0xcf,
+ 0x03, 0x80, 0x07, 0x3f, 0x24, 0xff, 0x00, 0x64, 0xa8, 0x91, 0xbc, 0x97,
+ 0x38, 0x68, 0x77, 0x12, 0x64, 0xc7, 0xc5, 0x10, 0x02, 0xea, 0xd8, 0x4b,
+ 0x75, 0x02, 0x00, 0xf8, 0x26, 0xb1, 0xcf, 0xd8, 0x0f, 0x7d, 0xd1, 0x09,
+ 0x29, 0x8d, 0x83, 0x1e, 0xaa, 0x6a, 0x73, 0x58, 0x20, 0x3f, 0x51, 0x02,
+ 0x20, 0xa6, 0x25, 0x96, 0x0d, 0x5a, 0x24, 0xbe, 0x34, 0x00, 0x0d, 0x74,
+ 0x51, 0x7b, 0x43, 0xb1, 0x4f, 0x3a, 0x6a, 0x7c, 0xbb, 0x2b, 0x36, 0x51,
+ 0x5b, 0x6a, 0x2e, 0x61, 0xd7, 0xda, 0xe9, 0x3e, 0x23, 0x69, 0x49, 0x48,
+ 0x03, 0x2b, 0xd9, 0x21, 0xa0, 0x3a, 0x44, 0xe9, 0xe0, 0x9d, 0xce, 0x22,
+ 0xa0, 0x0b, 0x61, 0xb0, 0x42, 0x29, 0xd8, 0xfd, 0x2b, 0x3a, 0x40, 0x80,
+ 0xe1, 0x07, 0xf2, 0x94, 0x0b, 0xda, 0xf7, 0x33, 0x53, 0xa6, 0x9f, 0x72,
+ 0x4a, 0x47, 0x88, 0xfc, 0x4c, 0x2c, 0xd6, 0xdf, 0x73, 0x4f, 0xa2, 0xf0,
+ 0x43, 0x8b, 0x67, 0xda, 0x79, 0xdd, 0x01, 0x74, 0x7d, 0x47, 0xa9, 0x33,
+ 0x2b, 0x00, 0x8c, 0x07, 0xee, 0x16, 0x8d, 0x6c, 0x3a, 0x18, 0xe3, 0x4f,
+ 0x8a, 0xe6, 0x5e, 0x0b, 0xeb, 0x68, 0xd0, 0x89, 0x30, 0x81, 0x45, 0xf9,
+ 0x78, 0xaf, 0x2c, 0xa4, 0xcd, 0x64, 0xce, 0xc3, 0xc7, 0xc9, 0x25, 0x3d,
+ 0x17, 0x57, 0x37, 0x74, 0xce, 0x9d, 0x86, 0xea, 0xde, 0x66, 0xea, 0xda,
+ 0xd2, 0xd3, 0xaf, 0xb8, 0x37, 0xb4, 0xac, 0x5c, 0xd7, 0xbf, 0x2b, 0xa7,
+ 0xe3, 0xb4, 0xc9, 0xf4, 0x43, 0xb6, 0xcf, 0xee, 0x92, 0x0a, 0xea, 0x3e,
+ 0xbb, 0x53, 0x14, 0xf4, 0xf6, 0x44, 0x96, 0x03, 0x20, 0x7f, 0x54, 0x05,
+ 0xcd, 0x33, 0xdb, 0x8e, 0xe1, 0x1f, 0x42, 0x67, 0xe0, 0x44, 0xa4, 0xa7,
+ 0x3f, 0x1c, 0x86, 0xed, 0x27, 0x96, 0x91, 0xf8, 0xe8, 0xbd, 0x0b, 0xfc,
+ 0x5f, 0x58, 0x5d, 0x8b, 0x9b, 0x57, 0x66, 0x5a, 0xd7, 0x0f, 0xed, 0x36,
+ 0x0f, 0xfd, 0x4a, 0xf3, 0xfb, 0x03, 0x01, 0x21, 0x9a, 0xee, 0x20, 0x01,
+ 0xf3, 0x5e, 0xab, 0xf5, 0x4f, 0xa4, 0x3b, 0xa4, 0xf4, 0x8a, 0xeb, 0xb4,
+ 0x46, 0x4d, 0xc7, 0xd5, 0xbf, 0xc9, 0xce, 0xe1, 0xbf, 0xd9, 0x1a, 0x24,
+ 0xa7, 0x80, 0xfa, 0xe1, 0xd1, 0x8f, 0x49, 0xea, 0xcf, 0x35, 0x36, 0x31,
+ 0xb2, 0x26, 0xda, 0x7c, 0x04, 0xfd, 0x26, 0xfc, 0x8a, 0xcb, 0xa2, 0xce,
+ 0x17, 0xa5, 0x7d, 0x79, 0xe9, 0xcd, 0xcc, 0xe8, 0x56, 0x5c, 0x04, 0xdb,
+ 0x88, 0x45, 0xac, 0x3f, 0xc9, 0x98, 0x78, 0xfb, 0xb5, 0xf9, 0x2f, 0x31,
+ 0xa6, 0xbb, 0x1c, 0xf8, 0x68, 0x94, 0x94, 0xdf, 0x61, 0xdc, 0xaf, 0x62,
+ 0x3d, 0xf5, 0x39, 0xb6, 0xd6, 0x7d, 0xf5, 0x90, 0xf6, 0xfc, 0x5b, 0xaa,
+ 0x1e, 0x1e, 0x11, 0x8f, 0x79, 0xec, 0xad, 0xb3, 0x11, 0xcc, 0x74, 0xb7,
+ 0xdc, 0x3b, 0xf8, 0xa4, 0xa7, 0xd1, 0xb1, 0x72, 0x19, 0x95, 0x8b, 0x56,
+ 0x43, 0x3e, 0x8d, 0xac, 0x0e, 0x1f, 0x30, 0xa6, 0x42, 0xc2, 0xfa, 0xa5,
+ 0x96, 0x5d, 0x8d, 0x66, 0x13, 0x8e, 0xb4, 0x9d, 0xcc, 0x07, 0xf7, 0x5d,
+ 0xc8, 0xf9, 0x15, 0xbe, 0x42, 0x4a, 0x47, 0x09, 0xa1, 0x4c, 0xa6, 0x49,
+ 0x4a, 0x84, 0xe1, 0x32, 0x90, 0x49, 0x4a, 0x73, 0xb6, 0x31, 0xce, 0xfd,
+ 0xd0, 0x4f, 0xdc, 0xb9, 0x3c, 0x8b, 0x5c, 0x4c, 0x9f, 0xce, 0xd5, 0xcb,
+ 0xad, 0x73, 0x77, 0x34, 0xb4, 0xf7, 0x04, 0x7d, 0xeb, 0x81, 0xbb, 0x2d,
+ 0xed, 0xba, 0xca, 0x1f, 0xf4, 0xab, 0x3b, 0x1c, 0x3b, 0xcb, 0x4c, 0x14,
+ 0x94, 0xe8, 0xb3, 0x21, 0xa0, 0x80, 0x79, 0x3c, 0x9f, 0x04, 0x51, 0x7e,
+ 0xed, 0x01, 0x9d, 0x56, 0x37, 0xa9, 0xa8, 0x3d, 0x8a, 0xb1, 0x4d, 0xc7,
+ 0x77, 0x84, 0x68, 0x92, 0x9d, 0x3d, 0xad, 0x77, 0x3c, 0xf2, 0x55, 0x7b,
+ 0x30, 0xda, 0xe3, 0x00, 0xcc, 0xf6, 0xf8, 0xa9, 0x57, 0x60, 0x31, 0xa8,
+ 0x8e, 0xe8, 0xac, 0x7b, 0x5d, 0xfc, 0x12, 0x53, 0x3c, 0x2c, 0xcc, 0xfc,
+ 0x3f, 0x6e, 0xff, 0x00, 0x5a, 0xa1, 0xa7, 0xa6, 0xfd, 0x63, 0xe0, 0xee,
+ 0x56, 0x95, 0x7d, 0x6d, 0xa6, 0x3d, 0x5a, 0x1e, 0xdf, 0x36, 0xc3, 0x87,
+ 0xf0, 0x59, 0x86, 0xc0, 0x34, 0x01, 0x31, 0xb4, 0x9e, 0x07, 0xc1, 0x25,
+ 0x3a, 0x79, 0x79, 0xd8, 0x77, 0xd3, 0xa0, 0x76, 0xf6, 0xea, 0xd6, 0x96,
+ 0x9e, 0xfa, 0x10, 0xb8, 0xdc, 0xde, 0x85, 0x6b, 0x6d, 0x7f, 0xd9, 0x6a,
+ 0x36, 0xb5, 0xf6, 0x3a, 0xd9, 0xe0, 0x0d, 0xdc, 0x37, 0xe4, 0xb7, 0xc5,
+ 0x87, 0xb0, 0x92, 0xa6, 0xcb, 0x1c, 0x07, 0xbd, 0x25, 0x3c, 0xbd, 0xbd,
+ 0x33, 0xa8, 0x87, 0x5c, 0xf3, 0x49, 0xf7, 0x10, 0xe0, 0x4e, 0xbc, 0x7c,
+ 0x10, 0xb1, 0xba, 0x7e, 0x75, 0x99, 0x6d, 0xf4, 0xe8, 0x71, 0xf1, 0x71,
+ 0x10, 0x07, 0xcc, 0xae, 0xd2, 0xb0, 0xc7, 0xeb, 0xb4, 0x1f, 0x88, 0x4b,
+ 0x2a, 0xcb, 0x2a, 0x60, 0xf4, 0xc6, 0x9d, 0xca, 0x4a, 0x79, 0xeb, 0x3a,
+ 0x06, 0x77, 0xa6, 0xe7, 0xc3, 0x5c, 0xe3, 0x24, 0x34, 0x3b, 0xbf, 0xdc,
+ 0xb3, 0xee, 0xa2, 0xda, 0x2c, 0xdb, 0x75, 0x46, 0xb2, 0x1b, 0xb4, 0x69,
+ 0xa1, 0xf9, 0xae, 0xaf, 0x1b, 0x35, 0x96, 0xc8, 0x71, 0xd4, 0x72, 0x8f,
+ 0x6d, 0x78, 0xd6, 0xb2, 0x1f, 0xc9, 0xe0, 0x8e, 0x52, 0x53, 0xe7, 0xf6,
+ 0xb9, 0xc1, 0xad, 0x3c, 0x8d, 0x0c, 0xf8, 0x41, 0xd5, 0x4c, 0x07, 0x7a,
+ 0xd6, 0x0f, 0x3f, 0xcb, 0xfe, 0xd5, 0xd6, 0x66, 0x74, 0xfe, 0x9e, 0xf6,
+ 0x6d, 0x75, 0x6c, 0x79, 0x3e, 0x03, 0x63, 0xbf, 0xe8, 0xae, 0x7f, 0xaa,
+ 0x62, 0xb7, 0x00, 0xfa, 0xfb, 0x1e, 0xfa, 0x1f, 0xa6, 0xf6, 0x89, 0xda,
+ 0xe9, 0x90, 0x1d, 0x25, 0x25, 0x21, 0xc3, 0xa9, 0xcd, 0xa6, 0x1c, 0x40,
+ 0x3e, 0xa1, 0x69, 0x9f, 0x18, 0x42, 0xb2, 0xa2, 0x29, 0xe6, 0x4b, 0xb7,
+ 0x1f, 0x29, 0x6a, 0x76, 0x67, 0x96, 0xcf, 0xa3, 0x8a, 0xf7, 0x0d, 0xdb,
+ 0x86, 0xe2, 0xd6, 0x88, 0x32, 0x35, 0xfa, 0x5e, 0x2a, 0x57, 0xdb, 0xd4,
+ 0x5c, 0xd2, 0x0d, 0x75, 0x31, 0x8d, 0xf7, 0x6d, 0x3b, 0xdd, 0xcf, 0x9c,
+ 0x84, 0x94, 0x89, 0xcd, 0x27, 0x1d, 0xc0, 0x7e, 0x70, 0x68, 0x1a, 0x1e,
+ 0xe6, 0x0a, 0xd4, 0x66, 0x31, 0xbf, 0xa7, 0xd8, 0x47, 0xd2, 0x14, 0xcc,
+ 0x92, 0x34, 0xd2, 0x34, 0xf8, 0x42, 0xc9, 0xa5, 0xd9, 0xd6, 0x52, 0x48,
+ 0x6d, 0x40, 0x0d, 0x35, 0x97, 0x1e, 0x67, 0x89, 0x43, 0xaa, 0x9c, 0xe7,
+ 0x65, 0x35, 0x96, 0x64, 0x3a, 0xb6, 0xb8, 0x38, 0x43, 0x74, 0x68, 0x03,
+ 0xc0, 0x7c, 0xd2, 0x53, 0xa8, 0xec, 0x5a, 0xa9, 0x65, 0x56, 0x3f, 0x43,
+ 0x13, 0xf8, 0xaa, 0x36, 0x96, 0x7a, 0x46, 0x67, 0x70, 0x3a, 0x48, 0xed,
+ 0x28, 0xb6, 0x56, 0x5c, 0xc0, 0xca, 0xdf, 0x73, 0x83, 0x38, 0x2e, 0x22,
+ 0x3f, 0x22, 0x9d, 0x1d, 0x07, 0xaa, 0xe6, 0xd4, 0x6d, 0xa6, 0xc0, 0xca,
+ 0xfb, 0x3a, 0xd3, 0xa1, 0xf1, 0x8d, 0x09, 0x49, 0x49, 0xfe, 0xae, 0xf4,
+ 0x1f, 0xda, 0xcf, 0x75, 0x96, 0x97, 0x57, 0x89, 0x4c, 0x07, 0x16, 0xc6,
+ 0xe7, 0xbc, 0xeb, 0xb5, 0xa4, 0xf8, 0x0e, 0x4a, 0xd0, 0xc8, 0xfa, 0x9b,
+ 0x43, 0xf2, 0xfd, 0x3c, 0x5b, 0x8d, 0x7e, 0xe1, 0x2d, 0x77, 0xbe, 0x01,
+ 0xe4, 0xce, 0x8a, 0xcf, 0x41, 0x6e, 0x4f, 0x49, 0xe9, 0xcf, 0xc3, 0xb9,
+ 0xd5, 0xbe, 0xc7, 0x3d, 0xcf, 0xf5, 0x1b, 0x31, 0x0e, 0xf2, 0x80, 0xae,
+ 0x55, 0x90, 0x2b, 0x71, 0x78, 0x3b, 0x9e, 0x67, 0xdc, 0x47, 0x8f, 0x82,
+ 0x4a, 0x61, 0xf5, 0x8f, 0x0e, 0xbc, 0x9c, 0x8a, 0x37, 0x32, 0xcb, 0xab,
+ 0x0d, 0xd8, 0x0d, 0x6e, 0x6b, 0x4b, 0x7c, 0x5f, 0xee, 0x99, 0xd3, 0xb2,
+ 0xe4, 0x2e, 0xa7, 0xd2, 0xb7, 0x23, 0x1e, 0x77, 0xb1, 0xa4, 0xb7, 0x70,
+ 0xef, 0xb7, 0x49, 0xfc, 0x17, 0x61, 0x6e, 0x6b, 0x0c, 0xd6, 0x39, 0x76,
+ 0xae, 0x21, 0x67, 0x7e, 0xce, 0xc1, 0x0f, 0x75, 0xae, 0x0f, 0x7b, 0x9e,
+ 0x49, 0x71, 0x26, 0x39, 0xf8, 0x24, 0xa7, 0x0f, 0xea, 0x47, 0x4d, 0x39,
+ 0x5f, 0x58, 0xab, 0x16, 0xb4, 0x3e, 0xbc, 0x30, 0xeb, 0x9f, 0x3a, 0x8d,
+ 0xcd, 0xf6, 0xb3, 0xee, 0x73, 0xa5, 0x7a, 0xa9, 0x20, 0x09, 0x3a, 0x05,
+ 0xc3, 0x62, 0xdb, 0x4f, 0x4d, 0xbd, 0xf7, 0xe1, 0x30, 0x53, 0x6b, 0xc6,
+ 0xd7, 0x3b, 0x99, 0x1c, 0xeb, 0x28, 0x79, 0x5d, 0x4b, 0x23, 0x28, 0x93,
+ 0x75, 0x8e, 0xb0, 0x78, 0x13, 0x00, 0x7c, 0x00, 0xd1, 0x25, 0x3d, 0x0f,
+ 0xd6, 0x0e, 0xb1, 0x86, 0xcc, 0x4b, 0xb0, 0x99, 0xfa, 0x7b, 0x6f, 0x63,
+ 0xab, 0x73, 0x58, 0x44, 0x34, 0x38, 0x44, 0xb8, 0xae, 0x36, 0x8c, 0x16,
+ 0x34, 0xfd, 0x1d, 0xa3, 0xc0, 0x2b, 0x2c, 0xb6, 0x93, 0x20, 0x73, 0xe0,
+ 0x9a, 0xcb, 0xe2, 0x23, 0xe6, 0x92, 0x99, 0x86, 0x35, 0x81, 0x44, 0xd8,
+ 0xd1, 0x11, 0xc0, 0xfc, 0x15, 0x67, 0xde, 0xe9, 0x3e, 0x05, 0x01, 0xd7,
+ 0x1e, 0x7c, 0x12, 0x53, 0xd1, 0x74, 0x1c, 0xca, 0xf1, 0xfa, 0x95, 0x6f,
+ 0x26, 0x19, 0x77, 0xe8, 0xdf, 0xe4, 0x5d, 0xc7, 0xe2, 0xbb, 0x22, 0xbc,
+ 0xb2, 0xbc, 0x93, 0xbc, 0x00, 0x75, 0xdd, 0x01, 0x7a, 0x9b, 0x41, 0xd8,
+ 0x27, 0x98, 0x12, 0x92, 0x98, 0x95, 0x14, 0x9c, 0x60, 0xa8, 0xee, 0x49,
+ 0x4c, 0xd3, 0x84, 0xa3, 0xc1, 0x28, 0x29, 0x29, 0x90, 0x5c, 0x5f, 0xd7,
+ 0x4e, 0x98, 0xfc, 0x7c, 0x96, 0xf5, 0x5a, 0x1a, 0x7d, 0x2b, 0x21, 0xb9,
+ 0x11, 0xc3, 0x5e, 0x34, 0x0e, 0x3f, 0x15, 0xda, 0x04, 0x9e, 0xc6, 0x58,
+ 0xc2, 0xc7, 0xb4, 0x39, 0x8e, 0x10, 0xe6, 0xb8, 0x48, 0x20, 0xf6, 0x20,
+ 0xa4, 0xa7, 0xcb, 0x2a, 0xce, 0x0e, 0x20, 0x1d, 0x15, 0xca, 0xb2, 0x9a,
+ 0xe3, 0x06, 0x02, 0xe9, 0xfa, 0x87, 0xd4, 0x9e, 0x93, 0x92, 0x0b, 0xb1,
+ 0x41, 0xc3, 0xbb, 0xc5, 0x9e, 0xe6, 0x1f, 0x8b, 0x1c, 0x7f, 0x24, 0x2e,
+ 0x5b, 0xa9, 0x74, 0x0e, 0xaf, 0xd2, 0x66, 0xc7, 0xd7, 0xea, 0xd2, 0x3f,
+ 0xc3, 0xd5, 0x2e, 0x6f, 0xf6, 0x87, 0x21, 0x25, 0x37, 0x5b, 0x94, 0xd1,
+ 0xa4, 0xf6, 0x44, 0x66, 0x6b, 0x4c, 0x00, 0xb9, 0xc6, 0xe6, 0xbe, 0x22,
+ 0x51, 0x06, 0x7b, 0x9a, 0x04, 0x18, 0x49, 0x4f, 0x4c, 0xcc, 0x81, 0xdb,
+ 0x95, 0x31, 0x73, 0x9c, 0x17, 0x37, 0x5f, 0x52, 0x7c, 0xc9, 0x74, 0xf7,
+ 0xf8, 0x2b, 0xd8, 0xdd, 0x49, 0xa5, 0xc0, 0x4f, 0x3c, 0x04, 0x94, 0xec,
+ 0xb2, 0xd3, 0xe0, 0xa6, 0x2d, 0x00, 0x02, 0xf5, 0x5e, 0x8c, 0x86, 0xd8,
+ 0x76, 0xb2, 0x0b, 0xbb, 0xa9, 0xdc, 0x4c, 0xc1, 0x3a, 0x69, 0x29, 0x29,
+ 0xba, 0xdc, 0x9a, 0xea, 0x60, 0x2f, 0x70, 0x12, 0x7d, 0xb2, 0xa6, 0xf7,
+ 0x7a, 0xac, 0x86, 0xc1, 0xdd, 0xdf, 0x95, 0x99, 0xd4, 0x71, 0x2c, 0xc9,
+ 0xc7, 0xa9, 0xd5, 0x3a, 0x36, 0x69, 0x03, 0xba, 0xcf, 0xa3, 0xa9, 0x1e,
+ 0x9d, 0x68, 0x66, 0x46, 0xf0, 0xdf, 0x1e, 0xc9, 0x29, 0x2f, 0x52, 0xc6,
+ 0xea, 0x78, 0x4e, 0xfb, 0x4e, 0x23, 0x7d, 0x46, 0x72, 0xfa, 0xc7, 0x3a,
+ 0x78, 0x2a, 0xf8, 0xff, 0x00, 0x58, 0xa9, 0xba, 0x5a, 0xe2, 0x6a, 0xb4,
+ 0x68, 0xea, 0xdd, 0xa7, 0xe0, 0x56, 0xf5, 0x5d, 0x56, 0xbb, 0x6b, 0xde,
+ 0x08, 0x70, 0x3c, 0x01, 0xd9, 0x66, 0x75, 0x86, 0x74, 0xab, 0x9b, 0xbb,
+ 0x22, 0xa6, 0x39, 0xfd, 0x9e, 0xdd, 0x1d, 0x3f, 0x10, 0x92, 0x9c, 0xab,
+ 0x3a, 0x8b, 0xec, 0xb8, 0xbb, 0xd4, 0x3f, 0x4a, 0x47, 0xe4, 0x5a, 0x34,
+ 0xe7, 0xd6, 0xea, 0xcd, 0x77, 0x00, 0xe6, 0x3c, 0x43, 0x9a, 0x78, 0x20,
+ 0xac, 0x27, 0xf4, 0xb7, 0x6e, 0xdd, 0x8a, 0xf2, 0xe6, 0x9d, 0x76, 0xbb,
+ 0x9f, 0xbd, 0x05, 0xee, 0xc8, 0xa6, 0x45, 0xac, 0x76, 0xdf, 0x10, 0x34,
+ 0x49, 0x4e, 0xe5, 0x98, 0xd4, 0x09, 0x76, 0x39, 0x96, 0x1d, 0x36, 0x77,
+ 0x6c, 0x14, 0x1c, 0x90, 0x03, 0x08, 0x23, 0x42, 0x27, 0x4f, 0x05, 0x91,
+ 0x56, 0x53, 0xdc, 0xf1, 0x0f, 0x81, 0x3d, 0xbb, 0x2d, 0xfe, 0x95, 0xd4,
+ 0x6b, 0xae, 0xbb, 0x6c, 0x73, 0x59, 0x67, 0xa4, 0x5b, 0xef, 0xb1, 0xa1,
+ 0xcf, 0xe0, 0x93, 0x1d, 0xb4, 0x02, 0x52, 0x53, 0x47, 0x17, 0x17, 0x25,
+ 0xf8, 0xef, 0xb5, 0x95, 0x38, 0x56, 0xdd, 0x4b, 0xe0, 0xed, 0x03, 0xfa,
+ 0xc5, 0x68, 0x63, 0x74, 0x3c, 0x9c, 0x97, 0x51, 0x92, 0xc7, 0xd7, 0x5d,
+ 0x6c, 0xfa, 0x65, 0xee, 0xf7, 0x71, 0xd9, 0xa0, 0x14, 0x2c, 0xae, 0xb5,
+ 0x7f, 0x51, 0x68, 0xa0, 0x92, 0x1a, 0x08, 0x05, 0xa0, 0xc7, 0x0e, 0xdd,
+ 0xa0, 0xf3, 0x5b, 0x38, 0x97, 0x6d, 0xc3, 0x6e, 0xe1, 0xb6, 0xc7, 0x12,
+ 0x5d, 0xdc, 0x0f, 0x04, 0x94, 0xbb, 0xba, 0x46, 0x33, 0x5d, 0xbe, 0xdb,
+ 0xb7, 0xb4, 0x19, 0x2d, 0x0d, 0x80, 0xe1, 0xf1, 0x95, 0x0c, 0xbc, 0xe7,
+ 0x86, 0xfa, 0x78, 0xb5, 0xc8, 0x68, 0x81, 0x1a, 0x35, 0xa1, 0x0f, 0x2f,
+ 0x30, 0x31, 0x9e, 0xf3, 0x12, 0x3f, 0xd8, 0xb2, 0x2f, 0xeb, 0xed, 0xac,
+ 0x16, 0xd4, 0x26, 0x7d, 0xa0, 0x0f, 0x1f, 0x04, 0x94, 0xda, 0xc7, 0xab,
+ 0x2e, 0xfc, 0x80, 0xeb, 0x9f, 0xb4, 0x38, 0xfb, 0x59, 0x3a, 0x95, 0xa7,
+ 0x60, 0x6d, 0x60, 0x35, 0xc0, 0x13, 0x0a, 0x5d, 0x1f, 0xa6, 0xbf, 0x0e,
+ 0xa3, 0x99, 0x9c, 0xfd, 0xd9, 0x57, 0x34, 0x7e, 0x8f, 0xb5, 0x6d, 0xe7,
+ 0x6f, 0xc7, 0xc5, 0x3d, 0xf6, 0x54, 0xe7, 0x17, 0x00, 0x25, 0x25, 0x35,
+ 0x1c, 0x6b, 0x8d, 0xc0, 0x7d, 0x15, 0x5e, 0xcc, 0xb0, 0x0c, 0x77, 0xed,
+ 0xe0, 0x95, 0xf9, 0x20, 0x3c, 0xb4, 0x08, 0xf1, 0x54, 0x2d, 0x7e, 0xb3,
+ 0xd8, 0xf2, 0x12, 0x52, 0x3c, 0x8c, 0xbf, 0xd2, 0x15, 0x55, 0xd7, 0xbb,
+ 0x74, 0x8e, 0x3c, 0x14, 0x2f, 0x9f, 0x52, 0x50, 0x8d, 0xa0, 0x72, 0x92,
+ 0x9b, 0x21, 0xee, 0x9f, 0x08, 0xe5, 0x38, 0xc8, 0x23, 0x42, 0x74, 0x54,
+ 0x8d, 0xe7, 0xe4, 0x86, 0xeb, 0xd2, 0x53, 0x76, 0xcb, 0xc6, 0xb0, 0xab,
+ 0xba, 0xd9, 0x3a, 0x2a, 0xc6, 0xd3, 0xe2, 0xac, 0x60, 0x74, 0xee, 0xa3,
+ 0xd4, 0xad, 0xf4, 0xf0, 0x68, 0x75, 0xce, 0xee, 0x40, 0x86, 0x37, 0xfa,
+ 0xce, 0x3a, 0x04, 0x94, 0xde, 0xfa, 0xbf, 0x89, 0x67, 0x52, 0xeb, 0x38,
+ 0xf8, 0xec, 0x12, 0xc6, 0xb8, 0x59, 0x6b, 0xbb, 0x06, 0x33, 0x53, 0xfd,
+ 0xcb, 0xd5, 0x96, 0x37, 0xd5, 0x9f, 0xab, 0xd5, 0xf4, 0x4c, 0x42, 0x1e,
+ 0x45, 0x99, 0x97, 0x41, 0xbe, 0xd1, 0xc7, 0x93, 0x1b, 0xe4, 0x16, 0xc1,
+ 0x20, 0x24, 0xa6, 0x2f, 0x68, 0x43, 0xd8, 0x7e, 0x4a, 0x6e, 0x76, 0xa9,
+ 0xb7, 0x77, 0x49, 0x4c, 0xb7, 0x27, 0xe5, 0x34, 0x25, 0xc2, 0x4a, 0x5c,
+ 0x27, 0x95, 0x14, 0x92, 0x53, 0x34, 0x94, 0x66, 0x12, 0x94, 0x94, 0xe5,
+ 0xe7, 0xfd, 0x57, 0xe8, 0xb9, 0xe4, 0xbe, 0xdc, 0x71, 0x5d, 0xa7, 0xfc,
+ 0x25, 0x5f, 0xa3, 0x77, 0xe1, 0xa1, 0xf9, 0x85, 0x89, 0x91, 0xfe, 0x2f,
+ 0x2a, 0x71, 0xfd, 0x5f, 0x35, 0xcd, 0x1e, 0x16, 0x30, 0x3b, 0xf1, 0x69,
+ 0x6a, 0xec, 0x25, 0x3c, 0xa4, 0xa7, 0x83, 0x7f, 0xf8, 0xbe, 0xea, 0x2d,
+ 0xfe, 0x6b, 0x2a, 0x97, 0x7f, 0x58, 0x39, 0xbf, 0x93, 0x72, 0x1b, 0xbe,
+ 0xa4, 0xf5, 0xca, 0x86, 0xe6, 0x1a, 0x6c, 0x77, 0x83, 0x5e, 0x47, 0xfd,
+ 0x53, 0x42, 0xf4, 0x05, 0x0b, 0xef, 0xab, 0x1e, 0xa7, 0x5d, 0x6b, 0xb6,
+ 0xd6, 0xc1, 0x2e, 0x29, 0x29, 0xf3, 0x4c, 0x96, 0xe7, 0xf4, 0x0b, 0x6b,
+ 0xfd, 0xa0, 0xd1, 0x51, 0xb6, 0x4b, 0x3d, 0xc1, 0xd3, 0xb7, 0x9f, 0xa2,
+ 0x4f, 0x8a, 0x1d, 0xdd, 0x70, 0x5c, 0xe0, 0xef, 0x50, 0x01, 0xe4, 0x55,
+ 0xef, 0xac, 0x39, 0x6d, 0xeb, 0x99, 0x15, 0xde, 0xda, 0xe2, 0xaa, 0xe6,
+ 0xb6, 0x09, 0x92, 0x43, 0x7d, 0xd3, 0xf3, 0x58, 0xc3, 0xa3, 0x65, 0xde,
+ 0x0f, 0xa3, 0x8d, 0x63, 0xc6, 0xe0, 0xcf, 0x6b, 0x0f, 0x00, 0x49, 0x3c,
+ 0x24, 0xa7, 0x7e, 0xce, 0xa7, 0x75, 0x55, 0xe3, 0xbd, 0xba, 0xd5, 0x63,
+ 0x41, 0x3e, 0x12, 0xad, 0xd1, 0x7e, 0x0e, 0x6b, 0x4b, 0x6c, 0x63, 0x4f,
+ 0x62, 0xb3, 0x3e, 0xc9, 0x7e, 0x1e, 0x3e, 0x3d, 0x19, 0x95, 0xed, 0x66,
+ 0xd2, 0xd1, 0x24, 0x18, 0xd7, 0x4d, 0xd1, 0xdd, 0x40, 0x74, 0xc7, 0x87,
+ 0xfa, 0xf8, 0x17, 0x16, 0x38, 0x6b, 0xb4, 0xea, 0x0f, 0x94, 0x24, 0xa6,
+ 0xd6, 0x57, 0x47, 0x7e, 0x2c, 0xdf, 0xd3, 0x6c, 0x80, 0x35, 0x75, 0x0f,
+ 0x3e, 0xd3, 0xfd, 0x55, 0x85, 0x95, 0x9c, 0xeb, 0x2c, 0xdb, 0x67, 0xb1,
+ 0xe3, 0x90, 0x74, 0x5a, 0x36, 0xf5, 0x7c, 0xaa, 0x81, 0xaa, 0xe6, 0xec,
+ 0xb0, 0x69, 0x27, 0x83, 0xf0, 0x59, 0x0f, 0x22, 0xd7, 0x97, 0xd9, 0x04,
+ 0x92, 0x92, 0x9b, 0x15, 0x64, 0x91, 0xae, 0xef, 0xb8, 0xa4, 0xec, 0xb7,
+ 0x11, 0x13, 0x23, 0xef, 0x55, 0xac, 0xaa, 0xb7, 0x6b, 0x02, 0x50, 0xdb,
+ 0x43, 0x9e, 0xe0, 0x19, 0x27, 0x5e, 0x25, 0x25, 0x33, 0x7b, 0x6b, 0xb5,
+ 0xc4, 0x91, 0x04, 0x6a, 0x23, 0x43, 0x28, 0x95, 0x64, 0x3d, 0xd8, 0x96,
+ 0x63, 0x38, 0x0a, 0x43, 0x8c, 0x17, 0xb4, 0x41, 0x71, 0x69, 0x91, 0xba,
+ 0x15, 0xfe, 0x9f, 0x82, 0x59, 0x6b, 0xac, 0x76, 0xa4, 0xb5, 0xcc, 0x68,
+ 0x07, 0x8d, 0xdd, 0xe7, 0xc5, 0x0d, 0x98, 0x94, 0xf4, 0xcc, 0x86, 0xbb,
+ 0x23, 0x6b, 0xd8, 0xf0, 0x76, 0x9e, 0x7e, 0xf0, 0x92, 0x91, 0xe2, 0x57,
+ 0x75, 0xb6, 0xcd, 0x35, 0x17, 0x81, 0x1b, 0x9d, 0x13, 0x24, 0x2e, 0x8d,
+ 0xb5, 0xe7, 0xbe, 0xa6, 0xd5, 0x55, 0x20, 0x18, 0xf7, 0x17, 0xb8, 0x34,
+ 0x2c, 0x43, 0xd4, 0x2a, 0xaa, 0xcd, 0xd8, 0xae, 0xd8, 0xdf, 0x01, 0xa0,
+ 0x9f, 0x24, 0x87, 0x5b, 0xc8, 0x13, 0xba, 0xcf, 0xc5, 0x25, 0x3b, 0x2e,
+ 0xe8, 0xf5, 0x97, 0xb5, 0xd9, 0xf9, 0x3b, 0xf5, 0xd6, 0x9a, 0xf4, 0x04,
+ 0x78, 0x17, 0x1d, 0x55, 0x87, 0xf5, 0x1e, 0x95, 0x88, 0xc6, 0x56, 0xca,
+ 0x6b, 0x02, 0xb3, 0x35, 0xb4, 0x34, 0x1d, 0xa7, 0x8d, 0xc3, 0xcd, 0x72,
+ 0xd6, 0xf5, 0x27, 0x58, 0x49, 0x36, 0xeb, 0xf1, 0x55, 0x1d, 0x93, 0x2e,
+ 0x92, 0xed, 0xc7, 0xb2, 0x4a, 0x7a, 0x7c, 0xce, 0xbc, 0x1e, 0x0c, 0x70,
+ 0xb2, 0x2e, 0xeb, 0x16, 0x4f, 0xe8, 0xce, 0xab, 0x2f, 0x7d, 0xf6, 0x70,
+ 0xd8, 0x1f, 0x7a, 0x35, 0x74, 0x88, 0xf7, 0x24, 0xa6, 0xed, 0x19, 0x76,
+ 0x5a, 0x65, 0xe6, 0x4f, 0x74, 0xb2, 0x2c, 0x86, 0xce, 0xee, 0x12, 0xaf,
+ 0xd3, 0x63, 0x7d, 0xaa, 0x16, 0x63, 0x59, 0x92, 0xd2, 0x59, 0xdb, 0xe8,
+ 0x8f, 0x12, 0x92, 0x9a, 0xb6, 0x5a, 0xd0, 0xdd, 0xc4, 0xea, 0x78, 0x95,
+ 0x54, 0xd9, 0xb9, 0xd0, 0xd3, 0x24, 0xe8, 0x3e, 0x2a, 0x62, 0x8d, 0xce,
+ 0x97, 0x8d, 0x7c, 0xd2, 0xbf, 0x1c, 0x30, 0x6f, 0x68, 0x82, 0xdd, 0x47,
+ 0xcb, 0x54, 0x94, 0xd9, 0x6f, 0x42, 0xeb, 0x96, 0x46, 0xcc, 0x0c, 0x83,
+ 0xf1, 0xad, 0xc3, 0xf2, 0x85, 0x6a, 0x8f, 0xa9, 0x7f, 0x59, 0x32, 0x08,
+ 0xfd, 0x5b, 0xd2, 0x69, 0xef, 0x6b, 0xda, 0xdf, 0xc0, 0x12, 0x7f, 0x05,
+ 0xea, 0x58, 0xef, 0xf5, 0x28, 0xaa, 0xcf, 0xdf, 0x63, 0x5d, 0xf7, 0x89,
+ 0x53, 0x2e, 0x84, 0x94, 0xf1, 0xbd, 0x27, 0xfc, 0x5e, 0x63, 0xd4, 0x45,
+ 0xbd, 0x56, 0xef, 0xb4, 0x38, 0x7f, 0x80, 0xaa, 0x5b, 0x5f, 0xf6, 0x9d,
+ 0xf4, 0x8f, 0xe0, 0xba, 0xea, 0x29, 0xc7, 0xc5, 0xa9, 0xb4, 0xe3, 0xd6,
+ 0xda, 0xaa, 0x66, 0x8d, 0x63, 0x00, 0x68, 0x1f, 0x20, 0xa4, 0x5c, 0xa2,
+ 0x5c, 0x92, 0x99, 0x97, 0xa8, 0x17, 0x28, 0x92, 0x9a, 0x52, 0x52, 0x89,
+ 0x4d, 0x25, 0x32, 0x52, 0x92, 0x9b, 0x02, 0x0e, 0xa0, 0xc8, 0xf2, 0x49,
+ 0x79, 0xe7, 0xd4, 0x8e, 0xaf, 0x9a, 0x7a, 0x98, 0xc6, 0xb2, 0xd7, 0xd9,
+ 0x45, 0x80, 0xcb, 0x1c, 0x64, 0x07, 0x1e, 0xeb, 0xd1, 0x48, 0x49, 0x4c,
+ 0x12, 0x25, 0x3c, 0x26, 0x84, 0x94, 0xb1, 0x94, 0x84, 0xa7, 0x84, 0xa1,
+ 0x25, 0x28, 0x29, 0x4a, 0x8c, 0x27, 0x49, 0x4b, 0xca, 0xa2, 0xe7, 0x37,
+ 0x39, 0xcf, 0x63, 0xdb, 0xfa, 0x16, 0x12, 0xd8, 0x70, 0xe5, 0xc3, 0x9d,
+ 0x11, 0x73, 0x33, 0x1b, 0x89, 0x5e, 0xf2, 0xc7, 0x3c, 0xf6, 0x0d, 0x13,
+ 0xaf, 0x9a, 0xc8, 0xb3, 0xac, 0x5f, 0x8e, 0xd6, 0x59, 0x91, 0x53, 0xdc,
+ 0xec, 0x87, 0xc3, 0x19, 0x4b, 0x0b, 0x9c, 0x27, 0xe8, 0xcb, 0x46, 0xa9,
+ 0x29, 0xd5, 0xa7, 0x07, 0x1f, 0x1d, 0xa0, 0x52, 0xc6, 0xd6, 0xd1, 0xd8,
+ 0x00, 0x07, 0xe0, 0x13, 0x39, 0x8d, 0x79, 0x2c, 0x7d, 0xc4, 0xcc, 0x92,
+ 0xd6, 0x68, 0x00, 0x55, 0x6f, 0xb2, 0xd2, 0xc6, 0xfa, 0x8f, 0xf4, 0x9a,
+ 0x75, 0x2d, 0x3a, 0xbf, 0xee, 0x0a, 0x8d, 0xdd, 0x4a, 0xca, 0xd8, 0x59,
+ 0x8e, 0xd2, 0x27, 0x97, 0x9f, 0xa4, 0x52, 0x53, 0xa1, 0x7e, 0x27, 0x4f,
+ 0x7b, 0x0d, 0x56, 0xd4, 0x6d, 0x61, 0xe4, 0x38, 0xf2, 0xb1, 0x33, 0x7a,
+ 0x4e, 0x36, 0x2b, 0x4d, 0x98, 0x2f, 0x75, 0x5e, 0x35, 0xb9, 0xdb, 0x84,
+ 0x79, 0x77, 0x52, 0x63, 0xfa, 0x8e, 0x46, 0x90, 0xf7, 0x0f, 0x01, 0xa7,
+ 0xe2, 0xa1, 0x73, 0xb2, 0xa8, 0x3b, 0x1e, 0xc6, 0x35, 0xdc, 0xfb, 0x8c,
+ 0x94, 0x94, 0xf3, 0xbd, 0x4e, 0xeb, 0x4b, 0x36, 0x5b, 0x51, 0x99, 0x3e,
+ 0xe8, 0xd2, 0x3e, 0x2b, 0x30, 0x51, 0x53, 0x84, 0x90, 0xba, 0x5b, 0x7e,
+ 0xd1, 0x67, 0x61, 0x1e, 0x43, 0x45, 0x4a, 0xda, 0xac, 0x9f, 0xa3, 0xca,
+ 0x4a, 0x71, 0xbe, 0xce, 0xd7, 0x3a, 0x2b, 0x69, 0x27, 0xc7, 0xb2, 0xbd,
+ 0x55, 0x4d, 0x60, 0x99, 0xd4, 0x04, 0xee, 0x63, 0xc1, 0x20, 0x94, 0x3d,
+ 0xa6, 0x63, 0x90, 0x92, 0x9b, 0x95, 0x64, 0x6c, 0x6f, 0xb4, 0xf7, 0xe0,
+ 0x21, 0xe4, 0xba, 0xbc, 0x87, 0x37, 0x77, 0xd3, 0x6f, 0x0e, 0xfe, 0xf4,
+ 0x0d, 0x40, 0x13, 0xc7, 0x80, 0x53, 0x65, 0x37, 0x3f, 0x56, 0x36, 0x47,
+ 0xef, 0x1d, 0x12, 0x53, 0x4a, 0xca, 0xcd, 0x56, 0x12, 0x59, 0xa7, 0x6f,
+ 0x0f, 0x92, 0x4d, 0xaa, 0x97, 0x49, 0x3a, 0x6e, 0xd6, 0x0a, 0xd5, 0x18,
+ 0xa4, 0x88, 0xb8, 0x98, 0xee, 0x34, 0x54, 0x72, 0x9a, 0x28, 0xb3, 0xda,
+ 0xd9, 0xa4, 0xf0, 0x7c, 0x3e, 0x29, 0x29, 0xae, 0xea, 0xab, 0x1c, 0x37,
+ 0x54, 0xf3, 0x53, 0x39, 0x20, 0x26, 0x7b, 0x58, 0x47, 0x04, 0x05, 0x06,
+ 0xfa, 0x2d, 0xed, 0xaf, 0x96, 0xa9, 0x29, 0x27, 0xda, 0x58, 0x3e, 0x88,
+ 0x27, 0xe4, 0x97, 0xda, 0x5e, 0x78, 0x10, 0x86, 0x6c, 0xec, 0xd6, 0xfd,
+ 0xfa, 0x24, 0x3d, 0x7b, 0x08, 0x6b, 0x5b, 0x24, 0xf0, 0x06, 0xa5, 0x25,
+ 0x36, 0xb1, 0x5d, 0x61, 0x71, 0x24, 0x13, 0xa2, 0xe8, 0xb1, 0x71, 0xc3,
+ 0x6b, 0x60, 0xf0, 0x12, 0x4a, 0xc8, 0xc0, 0xc7, 0xb6, 0xa6, 0x87, 0x58,
+ 0x76, 0xb9, 0xce, 0x88, 0xfe, 0xaf, 0x65, 0xd0, 0xb4, 0x00, 0xc0, 0xde,
+ 0x34, 0x49, 0x4e, 0x37, 0x54, 0xc3, 0x6d, 0x76, 0xb7, 0x25, 0x8d, 0x8a,
+ 0xee, 0x24, 0x1f, 0x27, 0x8f, 0xef, 0x54, 0x6f, 0xaa, 0x58, 0xe6, 0x9f,
+ 0xf5, 0xec, 0xba, 0x3c, 0xba, 0x85, 0xb8, 0x37, 0x36, 0x35, 0x0d, 0xdc,
+ 0xd8, 0xec, 0xe6, 0xea, 0xb0, 0xdc, 0x03, 0xcc, 0x1e, 0xe2, 0x12, 0x53,
+ 0xe8, 0x3f, 0x57, 0xf2, 0x3e, 0xd1, 0xd1, 0x70, 0xec, 0xee, 0x2b, 0x0c,
+ 0x3f, 0x1a, 0xfd, 0x9f, 0xc1, 0x5a, 0xbe, 0xc7, 0x30, 0x12, 0x3b, 0x09,
+ 0x58, 0xdf, 0x52, 0xae, 0x36, 0xf4, 0x40, 0xc2, 0x67, 0xd1, 0xba, 0xc6,
+ 0x0f, 0x81, 0x3b, 0xc4, 0xff, 0x00, 0x9c, 0xb6, 0x32, 0x2b, 0x2e, 0x63,
+ 0xbe, 0x05, 0x25, 0x30, 0xaa, 0xd7, 0x3c, 0x02, 0x7b, 0x89, 0x53, 0x25,
+ 0x42, 0xaa, 0xb6, 0x34, 0x6b, 0xd9, 0x4e, 0x27, 0x82, 0x92, 0x96, 0x94,
+ 0xd2, 0xa5, 0xb5, 0x36, 0xd4, 0x94, 0xc6, 0x52, 0x4f, 0xb5, 0x28, 0x09,
+ 0x29, 0xf3, 0xef, 0xa8, 0xd9, 0x58, 0xd8, 0xbd, 0x58, 0x8b, 0xfd, 0x86,
+ 0xd6, 0x96, 0xb1, 0xc7, 0x80, 0x7c, 0xd7, 0x63, 0x97, 0xf5, 0xab, 0x0b,
+ 0x17, 0x3c, 0x62, 0xbe, 0x0d, 0x7d, 0xed, 0x04, 0x1d, 0x4f, 0x92, 0xf3,
+ 0xe3, 0xd1, 0x33, 0x9a, 0xe2, 0x77, 0x34, 0x0e, 0x46, 0xa9, 0xcf, 0x44,
+ 0xca, 0x78, 0x9d, 0xcd, 0x98, 0xee, 0x65, 0x25, 0x3e, 0xa3, 0x87, 0xd4,
+ 0xb0, 0xf3, 0x28, 0x17, 0xd5, 0x6b, 0x4b, 0x64, 0x8e, 0x47, 0x21, 0x1d,
+ 0xb7, 0x52, 0xff, 0x00, 0xa0, 0xf6, 0xba, 0x34, 0x30, 0x41, 0xd5, 0x79,
+ 0x4d, 0x3d, 0x17, 0x2d, 0x92, 0xd3, 0x76, 0xd6, 0x9d, 0x7d, 0xa4, 0xf2,
+ 0xac, 0x57, 0xd3, 0xb2, 0xaa, 0x05, 0xac, 0xc9, 0x73, 0x41, 0x32, 0x60,
+ 0x91, 0xa8, 0x49, 0x4f, 0xa7, 0x92, 0xdf, 0x10, 0xa3, 0x65, 0xd4, 0xd5,
+ 0x06, 0xc7, 0xb5, 0xa0, 0xf0, 0x49, 0x01, 0x79, 0xa8, 0x7f, 0x56, 0xa8,
+ 0xfa, 0x62, 0xd7, 0x5b, 0x53, 0xb5, 0x73, 0x9c, 0x49, 0x28, 0x8f, 0xfb,
+ 0x45, 0xb0, 0x6f, 0xb4, 0x90, 0xdf, 0xa2, 0x1d, 0x24, 0x04, 0x94, 0xfa,
+ 0x2f, 0xaf, 0x46, 0xff, 0x00, 0x4f, 0xd4, 0x6e, 0xfe, 0x76, 0xc8, 0x95,
+ 0x39, 0x6c, 0xc4, 0x89, 0xf0, 0x5e, 0x6a, 0xd0, 0x4d, 0xad, 0xb3, 0xd7,
+ 0x8b, 0x1b, 0xf4, 0x5c, 0x09, 0x0a, 0xce, 0x2e, 0x55, 0xf4, 0x65, 0xfd,
+ 0xa0, 0xe4, 0xb8, 0xba, 0x0b, 0x41, 0x07, 0x5f, 0xc5, 0x25, 0x3d, 0xe5,
+ 0x8f, 0x63, 0x49, 0x0e, 0x84, 0x1b, 0x32, 0x29, 0x06, 0x46, 0xae, 0x03,
+ 0x48, 0xf0, 0x59, 0xbd, 0x22, 0xc1, 0xd4, 0x30, 0x9c, 0x0d, 0x8e, 0x75,
+ 0xb5, 0x3c, 0x82, 0xf2, 0x75, 0x21, 0xde, 0xe0, 0xa1, 0x6f, 0x4d, 0x71,
+ 0x71, 0xf4, 0x2c, 0x76, 0xe1, 0xf9, 0xba, 0x88, 0x49, 0x4d, 0x86, 0xe6,
+ 0xd6, 0xe7, 0x90, 0xe6, 0x6a, 0x3b, 0x7f, 0xa8, 0x51, 0x76, 0x63, 0x27,
+ 0xf4, 0x74, 0x03, 0xfc, 0xa3, 0x00, 0x2c, 0xfb, 0x30, 0xf3, 0x98, 0x4e,
+ 0xae, 0x9f, 0x3f, 0xf6, 0x29, 0xd5, 0x66, 0x48, 0x68, 0x0e, 0xac, 0x1f,
+ 0x12, 0xd9, 0xd5, 0x25, 0x36, 0xaf, 0xca, 0xbc, 0x36, 0x65, 0xb5, 0x83,
+ 0xa7, 0x78, 0x27, 0xe4, 0xb3, 0x45, 0xf5, 0xdc, 0xe7, 0x30, 0xfb, 0xc9,
+ 0x3a, 0x97, 0x08, 0x02, 0x3e, 0x3d, 0xd5, 0xf7, 0x8f, 0x55, 0xbb, 0x48,
+ 0x21, 0xdd, 0x81, 0xf3, 0x40, 0x3d, 0x3e, 0x75, 0xf5, 0x1a, 0xc7, 0x4c,
+ 0xea, 0xe1, 0xf9, 0x12, 0x53, 0x4d, 0xd4, 0x50, 0x6c, 0x70, 0xa4, 0xec,
+ 0x2d, 0x12, 0x61, 0xdb, 0x41, 0x3f, 0x04, 0x2b, 0x2a, 0x2e, 0x26, 0x48,
+ 0x88, 0xef, 0xca, 0xbc, 0xec, 0x27, 0x34, 0xcb, 0x6d, 0x13, 0xc8, 0x20,
+ 0x02, 0x81, 0x66, 0x1b, 0x0b, 0xa6, 0xc7, 0xb9, 0xd1, 0xca, 0x4a, 0x73,
+ 0x5f, 0x45, 0x33, 0xef, 0x3f, 0x20, 0x86, 0x71, 0x2b, 0x2e, 0x25, 0xb2,
+ 0xe6, 0x1e, 0x3c, 0x95, 0xeb, 0x7d, 0x16, 0xcb, 0x58, 0xc2, 0xe3, 0xe2,
+ 0x4a, 0x88, 0xa9, 0xe6, 0x0e, 0xc7, 0x03, 0xda, 0x12, 0x52, 0x16, 0x63,
+ 0xd6, 0xdf, 0xcc, 0x1e, 0x5a, 0x6a, 0x9f, 0xd1, 0x2e, 0x78, 0x0c, 0x10,
+ 0x0f, 0x82, 0xb9, 0x4e, 0x1b, 0x9e, 0x65, 0xdc, 0x78, 0x2b, 0x81, 0x95,
+ 0x52, 0x09, 0x80, 0x23, 0x92, 0x92, 0x9c, 0xef, 0xb3, 0x0d, 0x9e, 0xe3,
+ 0xee, 0xec, 0xaa, 0x5d, 0x5b, 0x00, 0x33, 0x04, 0x79, 0xf0, 0xad, 0xe5,
+ 0x65, 0x07, 0x13, 0xb3, 0x4f, 0x3f, 0x15, 0x9e, 0x6b, 0xb2, 0xc2, 0x77,
+ 0x7d, 0xc9, 0x29, 0xcd, 0xbd, 0xb5, 0xee, 0x8a, 0x46, 0x9f, 0x82, 0x83,
+ 0x71, 0xad, 0x73, 0x80, 0x00, 0x01, 0xe2, 0xb5, 0xd9, 0x83, 0xae, 0x81,
+ 0x58, 0x18, 0x8c, 0x60, 0x92, 0x92, 0x9c, 0xa3, 0x83, 0x5d, 0x55, 0x17,
+ 0xdb, 0xee, 0x3d, 0x87, 0x02, 0x54, 0x7a, 0x3b, 0x5c, 0x33, 0xc0, 0x3d,
+ 0xc1, 0xda, 0xaf, 0x5e, 0xc3, 0x6b, 0xa0, 0x0d, 0x02, 0x8d, 0x74, 0x7a,
+ 0x57, 0x54, 0x5b, 0x1b, 0xf7, 0xb6, 0x27, 0xe3, 0x1f, 0xc5, 0x25, 0x37,
+ 0x8e, 0x3b, 0x9b, 0x6d, 0x54, 0xb8, 0x7b, 0x58, 0x34, 0x3e, 0x27, 0x92,
+ 0xad, 0xb7, 0x47, 0x49, 0x32, 0x40, 0xe0, 0x6a, 0x89, 0x65, 0x0c, 0x71,
+ 0x33, 0xa8, 0x69, 0xed, 0xd8, 0xfc, 0x53, 0x6c, 0xae, 0xa7, 0x01, 0xa0,
+ 0x27, 0x80, 0x12, 0x53, 0x0c, 0xbc, 0x86, 0xb3, 0x03, 0x21, 0xc1, 0xa5,
+ 0xb2, 0xc2, 0x00, 0xee, 0x49, 0xd1, 0x62, 0x06, 0xc0, 0x6b, 0x86, 0xb3,
+ 0xaf, 0xcd, 0x74, 0x4f, 0x6d, 0x57, 0x51, 0x7d, 0x66, 0x27, 0xd3, 0x33,
+ 0xf2, 0x12, 0x02, 0xe7, 0x98, 0x08, 0x68, 0x11, 0xd9, 0x25, 0x3d, 0x3f,
+ 0xd4, 0x76, 0x96, 0xe0, 0xe5, 0x08, 0x86, 0xfa, 0xe4, 0x83, 0xe2, 0x76,
+ 0x89, 0x5d, 0x0d, 0xa3, 0xd8, 0xef, 0x82, 0xe1, 0xb0, 0xf3, 0xf3, 0x70,
+ 0xe9, 0x34, 0xe2, 0xbf, 0x63, 0x5e, 0xe2, 0xf7, 0x1d, 0x39, 0xd0, 0x7f,
+ 0x04, 0xf7, 0xf5, 0x5e, 0xb3, 0x60, 0x73, 0x3d, 0x53, 0x0e, 0x1c, 0xc8,
+ 0x1a, 0xa4, 0xa7, 0xb7, 0x03, 0xd8, 0x3e, 0x0a, 0x0c, 0x81, 0x58, 0x93,
+ 0x1f, 0x15, 0xc3, 0x3f, 0x3f, 0xab, 0x58, 0xc0, 0xc3, 0x7b, 0xda, 0x07,
+ 0xee, 0x98, 0x28, 0x16, 0xdd, 0xd4, 0x2c, 0x60, 0x6d, 0x99, 0x16, 0x38,
+ 0x08, 0x81, 0xbb, 0xc3, 0xe0, 0x92, 0x9f, 0x42, 0xd3, 0xc4, 0x26, 0x96,
+ 0x93, 0x00, 0x82, 0x42, 0xf3, 0xdf, 0x57, 0x3d, 0xa0, 0xd7, 0xf6, 0x8b,
+ 0x08, 0x77, 0x23, 0x79, 0x53, 0xa7, 0x23, 0x3e, 0x99, 0x75, 0x76, 0xbe,
+ 0x78, 0x27, 0x77, 0x82, 0x4a, 0x7b, 0xf8, 0x4a, 0x17, 0x09, 0x66, 0x6f,
+ 0x55, 0x7b, 0x40, 0x37, 0xbe, 0x07, 0x70, 0xe8, 0x43, 0xfb, 0x4f, 0x54,
+ 0xdd, 0xfd, 0x22, 0xc9, 0x8f, 0xde, 0xd1, 0x25, 0x25, 0x65, 0xe2, 0xc6,
+ 0xee, 0x25, 0x28, 0x93, 0x31, 0xa2, 0xce, 0x68, 0xb3, 0xd4, 0xda, 0xc2,
+ 0xe8, 0x53, 0x77, 0xae, 0xe2, 0xea, 0xf7, 0x90, 0x07, 0x2e, 0x49, 0x4d,
+ 0xe2, 0xf1, 0x07, 0xb0, 0x4d, 0xea, 0xd5, 0x10, 0x4c, 0x95, 0x45, 0x95,
+ 0x5a, 0x5a, 0x37, 0xbf, 0x70, 0x9e, 0xca, 0x56, 0x52, 0x6b, 0x60, 0x33,
+ 0x27, 0xc0, 0x24, 0xa6, 0xe3, 0xdd, 0xa7, 0xb3, 0x48, 0x08, 0x1b, 0xec,
+ 0xb0, 0x06, 0xbb, 0x4e, 0xd2, 0x80, 0x7d, 0x42, 0xd9, 0x26, 0x0f, 0x61,
+ 0xe4, 0x9e, 0xb0, 0x48, 0xd2, 0x77, 0x1e, 0x07, 0x74, 0x94, 0xc8, 0xd4,
+ 0xc8, 0x2d, 0x07, 0x51, 0xe2, 0x83, 0x6b, 0x03, 0x00, 0x3b, 0xa7, 0xe1,
+ 0xc2, 0x9b, 0x66, 0x4b, 0x0b, 0x49, 0x1d, 0xdc, 0x54, 0xbd, 0x23, 0x1a,
+ 0xe8, 0x0a, 0x4a, 0x7b, 0x2f, 0xaa, 0xd8, 0x82, 0x9e, 0x8c, 0xcb, 0x39,
+ 0x75, 0xee, 0x75, 0x8e, 0x23, 0xc2, 0x76, 0x81, 0xf8, 0x2d, 0x27, 0x82,
+ 0xdf, 0xa2, 0x20, 0x9e, 0x4a, 0xcf, 0xfa, 0xa7, 0x70, 0xb3, 0xa4, 0x36,
+ 0x92, 0x65, 0xf4, 0x39, 0xcc, 0x77, 0xc1, 0xc7, 0x70, 0xfc, 0xaa, 0xfd,
+ 0xe7, 0xd1, 0x74, 0x7e, 0x69, 0xe1, 0x25, 0x31, 0x2f, 0x00, 0x43, 0xc7,
+ 0x1c, 0xf7, 0x40, 0x37, 0x52, 0xe2, 0x40, 0x6c, 0x0f, 0x08, 0x82, 0x9f,
+ 0xd7, 0x61, 0x24, 0x13, 0xaf, 0x65, 0x17, 0x33, 0x7b, 0x4e, 0x80, 0x83,
+ 0xe7, 0x21, 0x25, 0x20, 0xbd, 0xa1, 0xc7, 0xda, 0x3d, 0xa3, 0xf2, 0x2a,
+ 0x8f, 0xa9, 0xa5, 0xf1, 0xb3, 0x64, 0xf0, 0xac, 0xd9, 0x53, 0xb6, 0xfb,
+ 0x09, 0x1e, 0x52, 0x82, 0x69, 0xb4, 0x82, 0xfd, 0xc4, 0xc7, 0x24, 0xf0,
+ 0x92, 0x9a, 0xa6, 0xa6, 0xb4, 0x18, 0x71, 0x74, 0x21, 0x7a, 0x59, 0x47,
+ 0x51, 0x24, 0x1d, 0x4c, 0xca, 0xb8, 0xdb, 0x0d, 0x73, 0xba, 0x3c, 0x04,
+ 0x29, 0x0b, 0x2d, 0xb7, 0x46, 0x08, 0x49, 0x4d, 0x3a, 0xf1, 0x43, 0x06,
+ 0xeb, 0x8e, 0xbe, 0x08, 0xb5, 0xb5, 0xd6, 0x18, 0x60, 0xd8, 0xcf, 0xc4,
+ 0xab, 0xb5, 0xf4, 0xfb, 0x6d, 0x8f, 0x53, 0xe8, 0xfd, 0xc8, 0xce, 0xa6,
+ 0x9c, 0x61, 0x0e, 0x00, 0x1e, 0xc3, 0xc5, 0x25, 0x20, 0x6d, 0x4d, 0xaa,
+ 0xad, 0xc4, 0xe8, 0x3b, 0xac, 0x8b, 0xef, 0xb2, 0xe7, 0xb9, 0x8d, 0x1b,
+ 0x59, 0x3c, 0x77, 0x3f, 0x15, 0xa1, 0x7d, 0xc6, 0xd3, 0x1c, 0xf8, 0x00,
+ 0x85, 0x56, 0x3d, 0x60, 0x9b, 0x09, 0x81, 0xdc, 0x9f, 0xe0, 0x92, 0x9a,
+ 0x0c, 0xc3, 0x79, 0xd4, 0x8e, 0x11, 0xdb, 0x88, 0x1b, 0xac, 0x2b, 0x4f,
+ 0xbe, 0x96, 0x88, 0x69, 0xe3, 0xc0, 0x21, 0x3b, 0x21, 0xbc, 0x1d, 0x3c,
+ 0x25, 0x25, 0x31, 0x21, 0xac, 0x6f, 0x98, 0x55, 0x6c, 0x24, 0xc8, 0xed,
+ 0xe6, 0xa7, 0x6b, 0xb7, 0x1d, 0xad, 0x3a, 0x4f, 0x29, 0xea, 0x64, 0xe8,
+ 0xe1, 0x3f, 0xca, 0xec, 0x92, 0x90, 0x8a, 0xe3, 0x91, 0xf3, 0x08, 0x8c,
+ 0xc3, 0x73, 0xa1, 0xc0, 0x71, 0xa8, 0x91, 0xc1, 0x56, 0x58, 0xc6, 0x8e,
+ 0x44, 0xab, 0x75, 0x56, 0xe7, 0xc4, 0x7d, 0xc9, 0x29, 0xaa, 0x5b, 0x6d,
+ 0x16, 0x8c, 0x86, 0x7f, 0x35, 0x64, 0xef, 0xa8, 0xfe, 0x6b, 0x8f, 0xd2,
+ 0x2d, 0xf2, 0x3c, 0xc2, 0xb0, 0x5f, 0x8d, 0x90, 0x00, 0x90, 0xe7, 0x19,
+ 0x96, 0x9e, 0xd0, 0x91, 0xcb, 0xc5, 0xad, 0xe6, 0x93, 0x0f, 0x6d, 0x64,
+ 0xba, 0xd7, 0x9f, 0xa2, 0x0e, 0x9e, 0xd6, 0x8e, 0xea, 0x87, 0x50, 0xea,
+ 0x26, 0xf2, 0xca, 0xf1, 0xb1, 0xf6, 0x17, 0x3c, 0x06, 0xb8, 0xfb, 0x74,
+ 0x9d, 0x60, 0x37, 0x5e, 0x3c, 0x52, 0x52, 0xba, 0xb6, 0x4d, 0x78, 0x95,
+ 0x7d, 0x9d, 0x83, 0xf4, 0x96, 0x8e, 0xdd, 0x9a, 0x74, 0x2e, 0x59, 0x75,
+ 0x38, 0x16, 0x6d, 0x8d, 0x7b, 0x2b, 0x3d, 0x4b, 0x22, 0xab, 0xab, 0x6b,
+ 0x5c, 0xd0, 0x2d, 0xad, 0xdb, 0x5a, 0x34, 0xdc, 0xd6, 0xc6, 0xa0, 0xc2,
+ 0x06, 0x2b, 0x4e, 0xef, 0x8a, 0x4a, 0x59, 0xb6, 0xfb, 0x76, 0xcc, 0x47,
+ 0x64, 0xa7, 0x71, 0x1a, 0xeb, 0xda, 0x54, 0x6c, 0xc7, 0xb1, 0xb7, 0x17,
+ 0xb4, 0x1e, 0x4c, 0x8f, 0x25, 0x1f, 0x4e, 0xcb, 0x3d, 0xc1, 0x90, 0xde,
+ 0xc3, 0xb9, 0x49, 0x49, 0x0b, 0xbb, 0x12, 0x27, 0x84, 0xde, 0xa3, 0x5b,
+ 0xde, 0x4a, 0x61, 0x86, 0xfd, 0x81, 0xc4, 0x12, 0x3b, 0xf9, 0x27, 0x65,
+ 0x04, 0x89, 0x1c, 0x03, 0xca, 0x4a, 0x57, 0xaa, 0x09, 0x05, 0xa3, 0xe2,
+ 0x90, 0xb0, 0x82, 0x44, 0x44, 0xa4, 0x1a, 0xc0, 0x4c, 0x02, 0xf7, 0x4e,
+ 0xa0, 0x04, 0x4a, 0xaf, 0xa9, 0xae, 0xf7, 0xd7, 0x07, 0xc0, 0xea, 0x92,
+ 0x91, 0xeb, 0x03, 0x5e, 0x13, 0xee, 0x3e, 0x1a, 0x29, 0xda, 0xca, 0x9e,
+ 0xf9, 0x61, 0xf8, 0x88, 0x43, 0xf4, 0x1b, 0xbe, 0x37, 0x1f, 0x82, 0x4a,
+ 0x65, 0xbe, 0x98, 0x0e, 0xfa, 0x24, 0xe8, 0x41, 0xec, 0x14, 0x4d, 0xd5,
+ 0x02, 0x43, 0x48, 0x3a, 0x72, 0x02, 0x45, 0x8d, 0x0d, 0x93, 0x6b, 0x49,
+ 0x76, 0x84, 0x0e, 0xff, 0x00, 0x04, 0xd5, 0xb5, 0xa6, 0x5b, 0x1a, 0x0d,
+ 0x41, 0x29, 0x29, 0x25, 0x76, 0x34, 0x80, 0x41, 0x86, 0x9d, 0x36, 0xa7,
+ 0x75, 0x95, 0x30, 0x90, 0x1c, 0x64, 0xeb, 0x11, 0xc2, 0x8b, 0x5f, 0x5f,
+ 0xa8, 0x46, 0xc0, 0x5b, 0xda, 0x07, 0x74, 0xd1, 0x24, 0x97, 0xc0, 0x1f,
+ 0x8f, 0xc1, 0x25, 0x29, 0x8e, 0xac, 0x41, 0x04, 0x12, 0x78, 0x90, 0x91,
+ 0xb4, 0xba, 0x76, 0xeb, 0x07, 0xb0, 0xee, 0xa4, 0xef, 0x48, 0x37, 0x68,
+ 0x24, 0xb6, 0x65, 0xa6, 0x27, 0xe4, 0x93, 0x2d, 0x20, 0x03, 0x41, 0x97,
+ 0x0f, 0xa4, 0x38, 0x3a, 0xa4, 0xa5, 0xbd, 0xaf, 0x3c, 0xed, 0x74, 0x6b,
+ 0xa7, 0x05, 0x41, 0xce, 0xad, 0xc0, 0xea, 0xe2, 0x74, 0xd5, 0x18, 0xb8,
+ 0x35, 0x8e, 0x75, 0xad, 0x9f, 0x1d, 0xa3, 0x5d, 0x50, 0x9d, 0x76, 0x3b,
+ 0x84, 0x06, 0x16, 0x0e, 0xce, 0x77, 0x74, 0x94, 0xed, 0xfd, 0x53, 0xb4,
+ 0xb7, 0x2b, 0x22, 0xb6, 0x13, 0xb7, 0xd3, 0x0e, 0x77, 0xc5, 0xa6, 0x3f,
+ 0x8a, 0xea, 0x1c, 0x6a, 0xbd, 0x9b, 0x5d, 0xee, 0x07, 0xba, 0xe7, 0xbe,
+ 0xa7, 0x54, 0xc2, 0x32, 0xed, 0x10, 0x4f, 0xb5, 0x9e, 0x71, 0xa9, 0x5b,
+ 0x36, 0x57, 0x58, 0x74, 0xbc, 0x9a, 0xde, 0x78, 0x7b, 0x74, 0x07, 0xe2,
+ 0x38, 0x49, 0x4d, 0x4c, 0xac, 0x3b, 0xeb, 0x97, 0x57, 0xfa, 0x46, 0x8e,
+ 0x3c, 0x55, 0x3a, 0xf2, 0xaf, 0xad, 0xc5, 0xae, 0x90, 0x16, 0xc0, 0x6e,
+ 0x44, 0x4b, 0x5e, 0xcb, 0x5b, 0xda, 0x4c, 0x1f, 0xe2, 0x85, 0x66, 0x37,
+ 0xac, 0x21, 0xf5, 0x00, 0x7c, 0x41, 0x07, 0x94, 0x94, 0xd6, 0xaa, 0xe6,
+ 0x58, 0x41, 0x74, 0x13, 0xdb, 0x5f, 0xe0, 0x8a, 0xe0, 0xd2, 0xcd, 0xba,
+ 0x00, 0xee, 0xea, 0xb5, 0xbd, 0x3e, 0xda, 0xbd, 0xcd, 0xd0, 0x0f, 0x82,
+ 0x54, 0x0b, 0x04, 0x9b, 0x66, 0x1a, 0x26, 0x75, 0xe1, 0x25, 0x36, 0x2b,
+ 0xc2, 0xc6, 0x80, 0x4c, 0xb8, 0x8d, 0x41, 0x84, 0x61, 0x66, 0x25, 0x0d,
+ 0x93, 0x1f, 0x25, 0x83, 0x97, 0xd6, 0x99, 0x5f, 0xb2, 0x96, 0x92, 0x78,
+ 0xd0, 0x1e, 0x56, 0x6b, 0xf2, 0x7a, 0x85, 0xf2, 0x1b, 0x22, 0x4e, 0x92,
+ 0x92, 0x9e, 0x97, 0x27, 0xac, 0xb1, 0xa2, 0x2b, 0x1f, 0x79, 0xd1, 0x64,
+ 0xdf, 0xd4, 0x1b, 0x63, 0xa5, 0xce, 0xd7, 0xcc, 0xe8, 0xa9, 0x57, 0xd3,
+ 0x32, 0x2d, 0x6c, 0xdd, 0x63, 0x8f, 0xe0, 0xa6, 0x3a, 0x4b, 0x07, 0x0d,
+ 0x2e, 0x3e, 0x29, 0x29, 0x93, 0xba, 0x83, 0x58, 0x0f, 0xb9, 0xa9, 0x8f,
+ 0x54, 0xad, 0xc4, 0x6e, 0x71, 0x71, 0x1f, 0x9a, 0xd1, 0xa2, 0x2d, 0x7d,
+ 0x35, 0x80, 0x89, 0x6e, 0xbe, 0x6a, 0xdd, 0x38, 0x14, 0x36, 0x77, 0x34,
+ 0x02, 0x7b, 0x24, 0xa6, 0x9d, 0x59, 0xed, 0xb6, 0x01, 0xac, 0xc7, 0x68,
+ 0x0a, 0x76, 0x0b, 0xad, 0xd2, 0xb1, 0xb5, 0xbe, 0x25, 0x1e, 0xc6, 0x53,
+ 0xf4, 0x6a, 0x61, 0x7b, 0xbb, 0x06, 0xe8, 0x14, 0x2a, 0xc3, 0xba, 0x66,
+ 0xd3, 0xe9, 0xb3, 0xc2, 0x75, 0x49, 0x4c, 0x6a, 0xa3, 0x58, 0x2d, 0xde,
+ 0xf1, 0xfe, 0xba, 0xab, 0x62, 0x88, 0xf7, 0x3f, 0x42, 0x0e, 0x80, 0x70,
+ 0x90, 0xb6, 0xaa, 0x86, 0xca, 0x46, 0xbe, 0x30, 0xa3, 0x6d, 0xbb, 0x75,
+ 0x7b, 0x83, 0x7c, 0x5c, 0x52, 0x53, 0x37, 0x3c, 0x34, 0x80, 0xd1, 0x24,
+ 0xa1, 0xdb, 0x91, 0xe9, 0x30, 0xc7, 0xd3, 0x32, 0x02, 0xc8, 0xcd, 0xfa,
+ 0xc5, 0xd3, 0x71, 0xcb, 0x98, 0xd7, 0x7a, 0xf6, 0x0e, 0x7d, 0x3d, 0x40,
+ 0x3f, 0x15, 0x0c, 0x1b, 0xb2, 0x3a, 0x98, 0xf5, 0x63, 0xd3, 0xaa, 0x62,
+ 0x3b, 0x94, 0x94, 0xb9, 0xca, 0xad, 0x99, 0x16, 0x31, 0x87, 0xd6, 0xbe,
+ 0xc7, 0x49, 0x6f, 0x66, 0x98, 0xe3, 0x49, 0x46, 0x27, 0xec, 0x74, 0xbb,
+ 0x2e, 0xd3, 0xbf, 0x26, 0x08, 0xad, 0xae, 0xd1, 0x81, 0xc7, 0x4e, 0x39,
+ 0xd1, 0x06, 0xac, 0x26, 0xd5, 0x97, 0x96, 0xc1, 0xed, 0x71, 0x70, 0x82,
+ 0x39, 0x82, 0xd6, 0xca, 0x97, 0x52, 0xc6, 0xf4, 0xfa, 0x63, 0x48, 0xff,
+ 0x00, 0x07, 0x60, 0xd3, 0xfa, 0xc0, 0xa4, 0xa7, 0x3a, 0x91, 0x6d, 0xb6,
+ 0x9b, 0x2c, 0xd5, 0xee, 0x24, 0xb8, 0xf9, 0x95, 0x7b, 0x1a, 0x03, 0xc4,
+ 0xf3, 0x23, 0xf1, 0x55, 0x70, 0x89, 0x26, 0x1d, 0xdf, 0x88, 0x57, 0x19,
+ 0x5b, 0x41, 0x0e, 0x93, 0xc8, 0x94, 0x94, 0xcf, 0x2e, 0xf7, 0xd5, 0x7b,
+ 0x9a, 0xd2, 0x09, 0x1a, 0x80, 0x7c, 0xf5, 0x55, 0xd9, 0x97, 0x6d, 0x6e,
+ 0x26, 0xd6, 0x80, 0xd3, 0xfb, 0xba, 0xc2, 0xb7, 0x92, 0xca, 0xc5, 0x9e,
+ 0xa3, 0x80, 0x73, 0x8b, 0x46, 0xbf, 0x0d, 0x15, 0x3d, 0xfb, 0x9c, 0x7d,
+ 0x9a, 0x44, 0x00, 0x08, 0x94, 0x94, 0x94, 0xe7, 0x87, 0x32, 0x18, 0xed,
+ 0x3b, 0xe9, 0xa2, 0x05, 0x79, 0x2f, 0x65, 0xdb, 0x3f, 0xc1, 0x1d, 0x40,
+ 0x03, 0xba, 0x08, 0x6d, 0xcf, 0x25, 0x8c, 0xab, 0xd3, 0x60, 0x3a, 0x92,
+ 0x64, 0xb9, 0x15, 0xaf, 0x2c, 0x7f, 0xbc, 0x6e, 0xda, 0x22, 0x3f, 0x86,
+ 0x89, 0x29, 0x27, 0xda, 0xda, 0x09, 0xdb, 0x00, 0x70, 0x7b, 0x6a, 0x88,
+ 0x5c, 0xd7, 0xb5, 0xae, 0x3a, 0x1f, 0x35, 0x55, 0xdf, 0xa7, 0x78, 0x0d,
+ 0xa8, 0x87, 0x0e, 0x24, 0x40, 0x29, 0x3f, 0x7d, 0x83, 0x61, 0xf6, 0x39,
+ 0xa7, 0xb2, 0x4a, 0x4e, 0xe6, 0x1d, 0x43, 0x4f, 0xb8, 0xf7, 0x52, 0xf4,
+ 0xab, 0x8f, 0x4b, 0x7f, 0xe9, 0x38, 0xde, 0xab, 0xcb, 0xeb, 0xac, 0xbc,
+ 0xba, 0x1a, 0x34, 0x24, 0xf3, 0x25, 0x47, 0x69, 0x9f, 0xa6, 0x37, 0x73,
+ 0x3d, 0xd2, 0x53, 0x32, 0xd6, 0x31, 0xd2, 0xd3, 0x3b, 0x75, 0xdd, 0x1f,
+ 0x91, 0x16, 0x8b, 0x45, 0x9e, 0xd8, 0xee, 0x48, 0x31, 0x08, 0x6e, 0xc3,
+ 0x0f, 0x87, 0x36, 0xe9, 0x2d, 0xd0, 0x80, 0x54, 0xeb, 0xc6, 0x82, 0xd0,
+ 0x1e, 0xe3, 0xb7, 0x93, 0x29, 0x29, 0x8b, 0x8e, 0xe7, 0x9d, 0x62, 0xc6,
+ 0xf3, 0xae, 0x8a, 0x26, 0xa0, 0xf0, 0xe7, 0x4c, 0xba, 0x23, 0x6c, 0xa2,
+ 0x59, 0x56, 0xa5, 0xc5, 0xb2, 0x26, 0x5a, 0x48, 0x53, 0x0d, 0x7b, 0x40,
+ 0x2d, 0x66, 0xe7, 0x38, 0x41, 0x9d, 0x12, 0x52, 0x20, 0x1c, 0x2b, 0x00,
+ 0x6b, 0xae, 0xb0, 0x35, 0x43, 0x7d, 0x4d, 0xae, 0x20, 0x99, 0x71, 0x98,
+ 0x03, 0x50, 0x3c, 0xca, 0xb3, 0xf6, 0x7b, 0x9c, 0x59, 0x67, 0x94, 0x00,
+ 0xde, 0x24, 0x2a, 0xce, 0xaa, 0xf6, 0xbe, 0x09, 0x75, 0x85, 0xd2, 0x40,
+ 0x8d, 0x07, 0xc5, 0x25, 0x25, 0x0d, 0x73, 0x9e, 0xd0, 0xeb, 0x46, 0xd1,
+ 0xae, 0xd0, 0x61, 0x4d, 0xff, 0x00, 0x67, 0x24, 0x86, 0xb0, 0x49, 0x80,
+ 0x86, 0x03, 0x18, 0x5a, 0x5e, 0xc0, 0x6c, 0x22, 0x09, 0xe0, 0x22, 0xb9,
+ 0xb6, 0xb9, 0xe5, 0xd5, 0xb5, 0xad, 0x68, 0x00, 0x69, 0xca, 0x4a, 0x74,
+ 0x7e, 0xac, 0xe6, 0xb7, 0x17, 0xaa, 0x7d, 0x90, 0x90, 0x1b, 0x78, 0xda,
+ 0xe1, 0xe0, 0xe1, 0xab, 0x7f, 0xb9, 0x75, 0xf7, 0x56, 0xcb, 0x5a, 0x5a,
+ 0x7e, 0xee, 0xe3, 0xcd, 0x79, 0xe3, 0xaa, 0xad, 0xc5, 0xdb, 0x88, 0x36,
+ 0x01, 0x27, 0xe3, 0xdb, 0x85, 0xd0, 0x74, 0xae, 0xb5, 0x99, 0x63, 0x0b,
+ 0x2f, 0xfd, 0x35, 0x95, 0x33, 0x70, 0x78, 0x10, 0x48, 0x11, 0xa1, 0xf1,
+ 0x49, 0x4e, 0xbb, 0xe8, 0xcc, 0xa1, 0xc5, 0xd5, 0x90, 0xf6, 0xf6, 0x04,
+ 0x28, 0x8c, 0xab, 0x9b, 0xfd, 0x26, 0x8d, 0x3f, 0x7a, 0xb3, 0xaf, 0xcc,
+ 0x21, 0x62, 0xfd, 0x64, 0xc6, 0xb5, 0xae, 0xf5, 0xd8, 0xfa, 0x76, 0x9d,
+ 0xbb, 0x88, 0x96, 0xcf, 0xc4, 0x29, 0xd9, 0xd4, 0x2b, 0xbb, 0xfa, 0x35,
+ 0xf4, 0xba, 0x79, 0x0e, 0x70, 0x05, 0x25, 0x33, 0x39, 0x58, 0x8e, 0x30,
+ 0x6b, 0x2e, 0x91, 0xf9, 0xdd, 0x90, 0xf2, 0x1b, 0x8f, 0x65, 0x6f, 0x15,
+ 0xbd, 0xd5, 0xb9, 0xe2, 0x25, 0xba, 0xc0, 0xf8, 0x02, 0xab, 0xdb, 0x5b,
+ 0x6c, 0xac, 0xd9, 0x90, 0xea, 0xe9, 0x68, 0x30, 0x1c, 0xc2, 0x1c, 0x0c,
+ 0xfc, 0x0a, 0xce, 0xb6, 0xa6, 0x83, 0x14, 0xe4, 0xc8, 0xf1, 0xe1, 0x25,
+ 0x2c, 0x31, 0xd9, 0x59, 0x6d, 0x54, 0xb1, 0xf6, 0x80, 0xe2, 0x5c, 0xf7,
+ 0x88, 0x24, 0x9f, 0xbd, 0x5a, 0x66, 0x39, 0x6e, 0xae, 0x66, 0xdd, 0x7b,
+ 0xac, 0xdb, 0x2d, 0xbe, 0xb2, 0x00, 0xc8, 0x92, 0x7f, 0x74, 0xcf, 0xe4,
+ 0x28, 0x6f, 0xb2, 0xf7, 0x7d, 0x3b, 0x9c, 0x7c, 0xc9, 0x80, 0x92, 0x9d,
+ 0x87, 0xbd, 0xb5, 0xc8, 0x73, 0x80, 0x6f, 0x72, 0x99, 0xb9, 0x98, 0x00,
+ 0x6b, 0x68, 0x71, 0xf0, 0x03, 0xfb, 0x96, 0x2d, 0x95, 0xe2, 0xb1, 0xa5,
+ 0xd7, 0x5e, 0xc9, 0x99, 0x97, 0x58, 0x27, 0xf2, 0xa0, 0x36, 0xfc, 0x27,
+ 0x58, 0x2a, 0xa6, 0xd7, 0x5a, 0xe3, 0xf9, 0xb5, 0x07, 0x3b, 0xf1, 0x88,
+ 0x49, 0x4f, 0x40, 0x7a, 0x86, 0x1b, 0x4c, 0x80, 0x49, 0x3c, 0x71, 0x2a,
+ 0x0e, 0xea, 0x35, 0x39, 0xb2, 0xca, 0x8e, 0xbc, 0x6e, 0x27, 0x55, 0x90,
+ 0xc7, 0x16, 0xb7, 0x6b, 0x31, 0xdc, 0x5d, 0x3a, 0x97, 0x39, 0xa3, 0xf1,
+ 0xd5, 0x33, 0xf2, 0xf2, 0x29, 0x6f, 0xa6, 0xda, 0xda, 0x4f, 0x9b, 0x89,
+ 0x77, 0xe0, 0x12, 0x53, 0x72, 0xce, 0xb1, 0xe9, 0xba, 0x08, 0x65, 0x4d,
+ 0x3c, 0x16, 0x91, 0xdb, 0x94, 0x1b, 0x73, 0xda, 0x5a, 0x5f, 0x6d, 0xbe,
+ 0x95, 0x23, 0x5d, 0xef, 0x31, 0x3f, 0x09, 0xd5, 0x64, 0xf5, 0x0b, 0x6f,
+ 0x66, 0x3b, 0xaf, 0xb9, 0xc1, 0xbb, 0x44, 0xb5, 0x8d, 0x68, 0x89, 0xe0,
+ 0x73, 0x2b, 0x9d, 0xae, 0xf7, 0x64, 0xda, 0x3d, 0x77, 0x97, 0x3c, 0xe8,
+ 0x1c, 0xe3, 0x29, 0x29, 0xea, 0x6c, 0xeb, 0xf5, 0x6c, 0x73, 0x70, 0x6b,
+ 0x36, 0x96, 0xf3, 0x63, 0xa4, 0x03, 0xe7, 0x1c, 0xac, 0x2c, 0xee, 0xa3,
+ 0xd4, 0x2c, 0xbf, 0xf5, 0xa7, 0xb9, 0xd5, 0x96, 0xcb, 0x6b, 0x1c, 0x4f,
+ 0x6f, 0xc5, 0x6c, 0xf4, 0x5c, 0x26, 0xfa, 0xbb, 0x1e, 0x3d, 0xb6, 0x02,
+ 0x10, 0xba, 0xb6, 0x13, 0x69, 0xba, 0x87, 0x11, 0xad, 0x6f, 0x73, 0x5d,
+ 0xe0, 0x1a, 0x04, 0xc9, 0x49, 0x4e, 0x1d, 0x58, 0x6e, 0x68, 0xdc, 0xff,
+ 0x00, 0xa6, 0xee, 0x47, 0x82, 0xee, 0xba, 0x0e, 0x30, 0xaf, 0xa7, 0xd2,
+ 0x38, 0x91, 0xbb, 0xef, 0xd5, 0x71, 0xb6, 0xd8, 0x72, 0x32, 0xeb, 0xa6,
+ 0x82, 0x0b, 0x5a, 0x43, 0xde, 0xe1, 0xa8, 0x80, 0xbb, 0xfe, 0x96, 0xd0,
+ 0x30, 0x68, 0x3f, 0xc8, 0x02, 0x07, 0x96, 0x89, 0x29, 0xac, 0x5a, 0x3e,
+ 0xdf, 0x93, 0xa6, 0xb0, 0xc3, 0xff, 0x00, 0x45, 0x0b, 0xa9, 0x00, 0xee,
+ 0x97, 0x6c, 0xf6, 0x2d, 0x3f, 0x71, 0x08, 0x8e, 0x33, 0xd4, 0x72, 0x9a,
+ 0x39, 0xda, 0xc1, 0xff, 0x00, 0x45, 0x2c, 0xa6, 0x17, 0xf4, 0xfb, 0xd9,
+ 0xdc, 0xb0, 0x9f, 0xbb, 0x54, 0x94, 0xf3, 0xd5, 0xd8, 0x41, 0x6e, 0xde,
+ 0x66, 0x15, 0xfa, 0x5d, 0xbd, 0xae, 0x31, 0x13, 0xc8, 0x54, 0x6a, 0x20,
+ 0x19, 0x63, 0x64, 0x8e, 0xe8, 0xb8, 0x97, 0x3d, 0xce, 0x33, 0xa2, 0x4a,
+ 0x6e, 0xe5, 0xb9, 0x95, 0x35, 0x8e, 0x78, 0x04, 0x6c, 0x32, 0xee, 0x20,
+ 0x4a, 0xa4, 0xcc, 0xba, 0x0c, 0x06, 0x58, 0xd7, 0x30, 0x8d, 0x04, 0x41,
+ 0x95, 0x63, 0x30, 0x17, 0x3c, 0xb6, 0x64, 0xb1, 0xa0, 0x01, 0xf1, 0x12,
+ 0xb3, 0x9d, 0x4d, 0x0f, 0x32, 0x43, 0x59, 0xb4, 0xc8, 0x31, 0xac, 0x94,
+ 0x94, 0xd9, 0xae, 0xd7, 0xb9, 0xbb, 0xea, 0x7b, 0x41, 0xe0, 0x92, 0x3b,
+ 0x28, 0x82, 0xd6, 0x3d, 0xcf, 0x99, 0x27, 0x9f, 0x8f, 0x92, 0x83, 0x5b,
+ 0x5b, 0x19, 0x15, 0xea, 0x41, 0xd7, 0xc9, 0x38, 0xfb, 0x45, 0x6d, 0xdc,
+ 0x35, 0x71, 0xe2, 0x7c, 0x12, 0x53, 0x68, 0xd9, 0x90, 0xfa, 0xa5, 0xa4,
+ 0x79, 0xc9, 0xd4, 0x21, 0x6c, 0xa8, 0x7e, 0x6c, 0x3a, 0x35, 0x32, 0x93,
+ 0x9d, 0x79, 0x31, 0x2d, 0x68, 0x89, 0x3f, 0x14, 0x0b, 0x0e, 0xfd, 0xdb,
+ 0x5f, 0xc1, 0x83, 0x23, 0x59, 0x49, 0x49, 0xcb, 0x58, 0x40, 0x01, 0xb3,
+ 0x5f, 0xe7, 0x03, 0xae, 0xa8, 0x73, 0x56, 0xe8, 0xd8, 0xdf, 0x1f, 0x92,
+ 0x85, 0x55, 0xdc, 0xe9, 0xf4, 0xc8, 0x20, 0x68, 0x77, 0x77, 0x44, 0xd6,
+ 0x7d, 0x2d, 0xad, 0x98, 0x8d, 0xdd, 0xa7, 0xe2, 0x92, 0x92, 0xbe, 0x97,
+ 0x56, 0xcd, 0xad, 0xe1, 0xdf, 0x8f, 0xcd, 0x2a, 0xb0, 0xae, 0x6b, 0x37,
+ 0x87, 0x41, 0x91, 0xa1, 0x28, 0x6c, 0xc9, 0xde, 0x77, 0x43, 0x60, 0x6a,
+ 0xd9, 0x28, 0x55, 0xe6, 0x5d, 0xfe, 0x14, 0x87, 0x17, 0x92, 0x36, 0xcc,
+ 0xec, 0xf0, 0x29, 0x29, 0xb6, 0xef, 0xb4, 0xfb, 0xa2, 0xdd, 0xbb, 0x46,
+ 0x80, 0x8d, 0xcd, 0x27, 0xe2, 0xa5, 0x5d, 0xd6, 0x9a, 0xbe, 0xce, 0xd0,
+ 0x1d, 0x6d, 0xa0, 0x83, 0x3f, 0x45, 0x52, 0x76, 0x46, 0x45, 0x5a, 0x38,
+ 0x3e, 0xf8, 0xe1, 0xa2, 0x06, 0xa8, 0x6d, 0xbf, 0x27, 0x73, 0x77, 0xb6,
+ 0x1e, 0xef, 0x70, 0x8d, 0x00, 0xf8, 0xa4, 0xa7, 0x41, 0xd7, 0x8a, 0xd8,
+ 0x2a, 0xde, 0x03, 0xdb, 0xed, 0x70, 0x93, 0xa4, 0xa1, 0x0b, 0xb2, 0x5b,
+ 0x78, 0x61, 0x6b, 0x63, 0x8d, 0xcd, 0x71, 0x2a, 0xbb, 0x32, 0x9f, 0xb5,
+ 0xc0, 0x35, 0xaf, 0x23, 0x57, 0x36, 0x07, 0x3e, 0x28, 0xb5, 0xde, 0xfb,
+ 0xab, 0xf5, 0x05, 0x62, 0x01, 0xda, 0xe7, 0x13, 0xb3, 0xee, 0x05, 0x25,
+ 0x36, 0x1f, 0x58, 0x00, 0xbf, 0x63, 0x88, 0x7e, 0x82, 0x4c, 0xa1, 0x7a,
+ 0x37, 0x9b, 0x58, 0x77, 0x11, 0x8e, 0x20, 0x73, 0xaf, 0xcd, 0x4e, 0xa7,
+ 0x59, 0xeb, 0x0d, 0x65, 0xb5, 0x92, 0x43, 0x66, 0x04, 0xf9, 0xf8, 0xa0,
+ 0xbf, 0x31, 0xfb, 0xde, 0xed, 0xcd, 0xac, 0x03, 0xf4, 0x39, 0x25, 0xde,
+ 0x01, 0x25, 0x2d, 0x63, 0x0d, 0x2e, 0x7c, 0x35, 0xde, 0xef, 0xce, 0x02,
+ 0x7d, 0xab, 0x53, 0xea, 0x9b, 0x6e, 0x77, 0x54, 0x78, 0xb1, 0xc5, 0xd5,
+ 0xbe, 0x9b, 0x01, 0x69, 0xed, 0xc2, 0xc9, 0xaf, 0x34, 0xed, 0x39, 0x16,
+ 0x1d, 0xac, 0xfc, 0xd1, 0x12, 0x4f, 0x8e, 0x8b, 0x7f, 0xea, 0x83, 0xdb,
+ 0x6e, 0x56, 0x4e, 0x44, 0x47, 0xd0, 0xae, 0x7f, 0xaf, 0x2e, 0xff, 0x00,
+ 0xbe, 0xa4, 0xa7, 0x53, 0x0f, 0x12, 0xb3, 0x65, 0xf8, 0xef, 0x12, 0xd7,
+ 0x8d, 0xcd, 0x3e, 0x6d, 0xd0, 0xfe, 0x05, 0x50, 0xcb, 0xe8, 0xd5, 0xb6,
+ 0xc2, 0xe0, 0xdf, 0x81, 0x5a, 0xb5, 0x9d, 0x99, 0x26, 0x3b, 0x3b, 0x5f,
+ 0x87, 0x75, 0x72, 0xd6, 0x07, 0x0f, 0x1f, 0x8a, 0x4a, 0x79, 0xa3, 0xd3,
+ 0xea, 0xb1, 0x81, 0xae, 0x67, 0x02, 0x10, 0x7f, 0x62, 0xe2, 0x93, 0xc6,
+ 0xab, 0xa4, 0x7e, 0x2b, 0x7b, 0x69, 0x2a, 0xb5, 0x98, 0xc5, 0xae, 0x04,
+ 0x72, 0x92, 0x9c, 0x41, 0xd1, 0x31, 0x87, 0xe6, 0x7f, 0x05, 0x37, 0x74,
+ 0x9c, 0x3a, 0x5b, 0xea, 0x58, 0xc1, 0xb7, 0xb4, 0xea, 0x49, 0xf2, 0x5a,
+ 0x96, 0x9a, 0xeb, 0x61, 0x75, 0x9f, 0xd9, 0x1d, 0xc9, 0x54, 0x45, 0x37,
+ 0xe6, 0xd9, 0x02, 0x20, 0x71, 0xe0, 0xd0, 0x92, 0x9c, 0xdf, 0xd9, 0xed,
+ 0xca, 0xb8, 0x35, 0x95, 0x01, 0xfb, 0xad, 0x03, 0x40, 0x3c, 0x4a, 0xb8,
+ 0x28, 0xc6, 0xc5, 0xaf, 0xd1, 0xc6, 0x1e, 0xe3, 0xfc, 0xe5, 0xbe, 0x3f,
+ 0xc9, 0x6f, 0x92, 0xb6, 0xed, 0x94, 0xb3, 0xd0, 0xa3, 0x59, 0xd2, 0xcb,
+ 0x3b, 0xbb, 0xe0, 0x99, 0xb5, 0x57, 0x5d, 0x65, 0xc4, 0x71, 0xaa, 0x4a,
+ 0x6a, 0xd8, 0xd2, 0xc6, 0x48, 0xd3, 0xc0, 0xf0, 0xa9, 0xb1, 0xa0, 0x97,
+ 0x58, 0xfd, 0x63, 0xc3, 0x55, 0x62, 0xef, 0x57, 0x2a, 0xdf, 0x4d, 0x93,
+ 0xb7, 0x92, 0x4a, 0xa3, 0xd5, 0xb3, 0x2a, 0xe9, 0xd8, 0xfb, 0x1a, 0x77,
+ 0x59, 0xc3, 0x47, 0x89, 0xfe, 0xe0, 0x92, 0x9c, 0x3f, 0xac, 0x39, 0x7b,
+ 0xed, 0x18, 0xe3, 0xe8, 0xc4, 0xbb, 0xe3, 0xd9, 0x66, 0x9c, 0x47, 0xb5,
+ 0x9e, 0xab, 0x3f, 0x49, 0x49, 0xfc, 0xf6, 0xf6, 0xf8, 0xf8, 0x2b, 0xf6,
+ 0x74, 0xf7, 0x5f, 0x53, 0x6e, 0x0e, 0xfd, 0x60, 0x8d, 0xce, 0x27, 0x87,
+ 0x13, 0xaa, 0xaf, 0x86, 0x73, 0x31, 0xb2, 0x45, 0x55, 0xb7, 0xf4, 0x96,
+ 0x1d, 0xbe, 0x9b, 0x84, 0x87, 0x4f, 0x88, 0x49, 0x4e, 0xdf, 0xd5, 0xeb,
+ 0x33, 0x6c, 0x22, 0xc7, 0x3f, 0xf4, 0x14, 0x68, 0xd0, 0x40, 0x97, 0x3b,
+ 0xe3, 0xe4, 0xae, 0xfd, 0x6c, 0x01, 0xcd, 0xa9, 0xa0, 0xc3, 0x2f, 0x73,
+ 0x03, 0x88, 0xf0, 0x25, 0x59, 0xc5, 0xc6, 0x66, 0x3e, 0x3b, 0x6a, 0x63,
+ 0x03, 0x63, 0x90, 0x38, 0xdc, 0x75, 0x2a, 0x8f, 0xd6, 0x36, 0x3b, 0x27,
+ 0x0a, 0x96, 0xb7, 0xe9, 0x37, 0xdb, 0xe5, 0xed, 0x3c, 0xfd, 0xc5, 0x25,
+ 0x3c, 0xd5, 0x0e, 0xb1, 0xae, 0x7e, 0x2e, 0x38, 0xf7, 0x58, 0xe2, 0x1d,
+ 0x67, 0x7d, 0x81, 0x7a, 0x27, 0x47, 0x7f, 0xea, 0xde, 0x9c, 0xce, 0xc0,
+ 0x0b, 0x7e, 0x04, 0x2f, 0x3f, 0xac, 0x88, 0x38, 0xb8, 0x63, 0x73, 0x9e,
+ 0x3f, 0x4b, 0x77, 0x72, 0x07, 0x31, 0xe0, 0xd5, 0xd8, 0xf4, 0x5c, 0x87,
+ 0x0a, 0xb1, 0x6c, 0x76, 0x81, 0xcd, 0x0d, 0x77, 0xe4, 0x49, 0x4d, 0x81,
+ 0x3f, 0xb5, 0xf2, 0xc7, 0x95, 0x7f, 0xf5, 0x0a, 0xcb, 0xd8, 0x4d, 0x45,
+ 0x83, 0xf3, 0xda, 0x47, 0xe0, 0xa9, 0xb5, 0xe7, 0xf6, 0xf6, 0x4b, 0x3b,
+ 0x16, 0x56, 0x7e, 0xe0, 0xb5, 0x2a, 0x68, 0x30, 0x92, 0x9e, 0x45, 0xa7,
+ 0x65, 0x6f, 0x26, 0x1a, 0x1a, 0xd5, 0x57, 0x1f, 0x31, 0x8d, 0x74, 0xb0,
+ 0x12, 0x7c, 0xfc, 0xd1, 0xed, 0x60, 0x07, 0x25, 0xa4, 0xe8, 0xc7, 0x38,
+ 0x47, 0x90, 0x30, 0xa9, 0xe3, 0x35, 0xbe, 0xa0, 0x68, 0x9e, 0x65, 0x25,
+ 0x3b, 0x4f, 0xa8, 0xda, 0xe6, 0xd9, 0xba, 0x0b, 0x80, 0xdd, 0x1c, 0xf0,
+ 0x96, 0x4e, 0x36, 0x38, 0xc7, 0x03, 0x74, 0x58, 0xc3, 0xaf, 0x79, 0x28,
+ 0x2e, 0xb7, 0xd3, 0xc8, 0x20, 0x34, 0x9d, 0x00, 0x3a, 0x12, 0x24, 0x04,
+ 0x1b, 0xb2, 0x5e, 0xe7, 0xcd, 0x75, 0x17, 0x10, 0x64, 0x89, 0xd7, 0xf1,
+ 0x49, 0x49, 0x76, 0xd1, 0x58, 0x12, 0xd7, 0x3b, 0xbb, 0xe3, 0x48, 0x4f,
+ 0x48, 0xc2, 0xb5, 0xc6, 0x0d, 0xad, 0x11, 0x2e, 0x6b, 0x87, 0x1e, 0x4a,
+ 0x2c, 0xb7, 0x25, 0xe1, 0xed, 0x7d, 0x5e, 0x9e, 0x93, 0xe2, 0x93, 0x2c,
+ 0xbe, 0x1a, 0x5f, 0x59, 0x2d, 0x3a, 0x36, 0x3c, 0x4f, 0x72, 0x92, 0x97,
+ 0xb6, 0x9c, 0x6b, 0x9c, 0x58, 0xdd, 0xcc, 0x9e, 0x65, 0x2f, 0xb3, 0xe3,
+ 0x30, 0x80, 0x1f, 0xb8, 0x1d, 0x76, 0xce, 0x93, 0xe6, 0x88, 0xd1, 0xb6,
+ 0xf1, 0x5b, 0x5a, 0x25, 0xe3, 0xdf, 0x05, 0x0f, 0x2e, 0xb6, 0xb1, 0xa1,
+ 0xae, 0xa7, 0x70, 0x6f, 0xd1, 0x2c, 0x30, 0xe9, 0x29, 0x29, 0x9d, 0x8e,
+ 0xc7, 0x63, 0x5a, 0x24, 0x7a, 0x87, 0xe9, 0x00, 0x74, 0xf9, 0x26, 0xd9,
+ 0x57, 0x1b, 0x46, 0xde, 0x66, 0x4c, 0xfd, 0xc8, 0x63, 0x1a, 0xd7, 0x34,
+ 0x0a, 0xaa, 0xda, 0xf8, 0xd2, 0x75, 0x31, 0xf1, 0x53, 0xdd, 0x66, 0xde,
+ 0x47, 0xab, 0x11, 0x12, 0x26, 0x78, 0x49, 0x4d, 0x37, 0xe3, 0xf4, 0xfb,
+ 0xc8, 0x77, 0xac, 0xea, 0xea, 0x60, 0x8d, 0xd5, 0x6a, 0x27, 0xcd, 0x3b,
+ 0x6a, 0xae, 0xaa, 0x80, 0xc6, 0xfd, 0x2b, 0xdc, 0x48, 0xf5, 0x63, 0x90,
+ 0x3c, 0x91, 0xea, 0xa3, 0x25, 0xad, 0xd8, 0x4d, 0x7e, 0x99, 0xd4, 0xb5,
+ 0xb1, 0xc8, 0x4e, 0xeb, 0x4b, 0x5c, 0x1a, 0xe2, 0xc6, 0x6d, 0x33, 0xbb,
+ 0x41, 0xc7, 0x69, 0x49, 0x49, 0x43, 0x4d, 0xb8, 0xa2, 0xcb, 0xda, 0xda,
+ 0x9a, 0xcd, 0x5c, 0xfe, 0x1c, 0xe8, 0xf2, 0x43, 0xae, 0xfe, 0x9c, 0xda,
+ 0xb7, 0x16, 0x97, 0x76, 0x93, 0xd8, 0x9e, 0x15, 0x77, 0x5f, 0x91, 0x91,
+ 0x60, 0x6b, 0x06, 0xea, 0x86, 0x92, 0xdd, 0x47, 0xf5, 0x94, 0x5a, 0xdb,
+ 0x3d, 0x71, 0xa0, 0x7d, 0x00, 0x6b, 0x20, 0x6a, 0xe4, 0x94, 0xda, 0x06,
+ 0x97, 0xc6, 0xc0, 0xd6, 0x38, 0xe9, 0xb1, 0xa2, 0x49, 0xf3, 0xd1, 0x49,
+ 0x94, 0xb6, 0xb7, 0x97, 0x59, 0x58, 0x86, 0xeb, 0x3f, 0x0e, 0xfa, 0xa0,
+ 0x07, 0xde, 0xe7, 0xb8, 0x8d, 0xb5, 0x57, 0x58, 0xf6, 0x35, 0xa3, 0xdc,
+ 0x4f, 0x89, 0x52, 0xfb, 0x23, 0x8b, 0x45, 0x8f, 0xbb, 0x78, 0xbf, 0x8e,
+ 0xd1, 0xb7, 0xb1, 0x09, 0x29, 0xb7, 0x73, 0x69, 0xb0, 0x17, 0xd5, 0x0d,
+ 0xb1, 0xf1, 0x0d, 0x06, 0x46, 0xaa, 0xb1, 0xc5, 0x6b, 0xfd, 0xf7, 0x89,
+ 0xb2, 0x76, 0xc3, 0x4e, 0x93, 0xf2, 0x43, 0x65, 0x4e, 0xc6, 0x7b, 0x9e,
+ 0x6c, 0x60, 0x6c, 0x6b, 0x03, 0xb8, 0xf8, 0xa9, 0xfa, 0x8f, 0xb1, 0xcc,
+ 0x77, 0xd1, 0x04, 0x48, 0x7c, 0xe8, 0x7c, 0x04, 0x24, 0xa6, 0x39, 0xcd,
+ 0xb9, 0xb9, 0x0c, 0xae, 0xb6, 0x56, 0x3d, 0x20, 0x27, 0xb9, 0x92, 0xba,
+ 0xcf, 0xab, 0x8d, 0xdb, 0x87, 0x4d, 0x90, 0x01, 0xba, 0xf7, 0x38, 0xc4,
+ 0x70, 0xc6, 0xc2, 0xe5, 0x9e, 0x69, 0x73, 0xdc, 0xdd, 0xfb, 0xde, 0x1b,
+ 0xab, 0x8f, 0xb4, 0x40, 0x5d, 0x87, 0x4c, 0xa9, 0xb4, 0x53, 0xd3, 0xa9,
+ 0x6f, 0xe6, 0xd2, 0xeb, 0x0f, 0xc5, 0xe0, 0xbb, 0xf8, 0xa4, 0xa4, 0xb9,
+ 0x30, 0xcc, 0xbf, 0x09, 0x2a, 0xe0, 0x74, 0xb7, 0xc4, 0x2a, 0xbd, 0x46,
+ 0x05, 0xac, 0x7f, 0x1c, 0x27, 0x7d, 0xfe, 0x9d, 0x01, 0xcd, 0x82, 0xe3,
+ 0xdb, 0xc1, 0x25, 0x36, 0x4b, 0xda, 0x04, 0xbc, 0x80, 0x3c, 0x4a, 0xaf,
+ 0x76, 0x65, 0x30, 0x43, 0x06, 0xe3, 0xe2, 0x74, 0x0b, 0x38, 0xba, 0xeb,
+ 0xdf, 0x22, 0x5e, 0x7f, 0x00, 0xac, 0x35, 0xd4, 0x63, 0x69, 0x6f, 0xe9,
+ 0x2e, 0xfd, 0xcd, 0x20, 0x24, 0xa6, 0x23, 0x0d, 0xf9, 0x0f, 0x2f, 0x79,
+ 0xf6, 0xf7, 0x71, 0xe3, 0xe4, 0x9a, 0xdb, 0x1a, 0xd6, 0xfa, 0x18, 0xfe,
+ 0xd6, 0x7e, 0x73, 0xbb, 0xb9, 0x4a, 0xdc, 0x9b, 0xad, 0x6e, 0xa4, 0x6d,
+ 0x1f, 0x9a, 0x38, 0x43, 0x0d, 0xfc, 0xe7, 0x1e, 0x7c, 0x52, 0x53, 0x06,
+ 0xd6, 0x39, 0xfb, 0x95, 0x7c, 0xbb, 0x0b, 0xe2, 0x9a, 0xf5, 0x27, 0x98,
+ 0x56, 0x6d, 0x2d, 0x0d, 0xd7, 0xbe, 0x83, 0xcd, 0x66, 0x75, 0x1e, 0xa3,
+ 0x8f, 0xd2, 0xaa, 0xdd, 0x01, 0xf9, 0x56, 0x03, 0xb1, 0xa4, 0xcc, 0x7f,
+ 0xb1, 0x25, 0x27, 0xb5, 0xd4, 0xe0, 0xd0, 0x5d, 0x63, 0xc0, 0x71, 0xfd,
+ 0xe2, 0x04, 0x95, 0xc3, 0xf5, 0x0f, 0xb5, 0x64, 0xfa, 0xb9, 0x97, 0xe8,
+ 0x43, 0xf6, 0x86, 0xf6, 0x0d, 0xf2, 0xf2, 0x52, 0xcb, 0x76, 0x67, 0x50,
+ 0x16, 0xe6, 0x58, 0xe1, 0x66, 0xcf, 0xa4, 0x27, 0x51, 0xf0, 0x6f, 0x82,
+ 0x3f, 0x4a, 0x61, 0xb7, 0x0c, 0xb5, 0xfe, 0xe6, 0x97, 0x38, 0x06, 0x9d,
+ 0x74, 0x49, 0x48, 0xba, 0x67, 0x50, 0x68, 0xdb, 0x8f, 0x79, 0x81, 0xc3,
+ 0x1e, 0x7f, 0x21, 0x5b, 0xf4, 0x63, 0xd5, 0x65, 0xb5, 0x5e, 0x44, 0xba,
+ 0x99, 0xda, 0x47, 0x98, 0x85, 0xce, 0xf5, 0x0e, 0x99, 0xf6, 0x72, 0xc7,
+ 0xd2, 0x77, 0x36, 0xc7, 0x6d, 0x0c, 0xee, 0x09, 0xf0, 0x5d, 0x3f, 0x4a,
+ 0xc3, 0xfb, 0x36, 0x33, 0x29, 0x02, 0x5c, 0x07, 0xbc, 0xff, 0x00, 0x28,
+ 0xea, 0x52, 0x53, 0x68, 0x93, 0xb4, 0xf6, 0xf0, 0x59, 0x3d, 0x50, 0x97,
+ 0x62, 0x3d, 0xa3, 0xb6, 0xf8, 0xf9, 0xb5, 0x6c, 0xe4, 0xd7, 0xb2, 0xb2,
+ 0x67, 0xc1, 0x64, 0x65, 0xc1, 0xa0, 0xb7, 0xb8, 0x2d, 0x73, 0x87, 0x93,
+ 0xa4, 0x24, 0xa7, 0x0b, 0x02, 0xe6, 0x1a, 0x86, 0x2d, 0x4c, 0x22, 0xeb,
+ 0xdd, 0xb2, 0xcb, 0x3f, 0x92, 0x4f, 0x6f, 0x92, 0xea, 0x1b, 0x65, 0x2c,
+ 0x1e, 0x85, 0x4f, 0x05, 0xd5, 0x34, 0x7b, 0x5b, 0xf9, 0xa0, 0x70, 0xb9,
+ 0xcd, 0xf8, 0x98, 0x45, 0xed, 0xa0, 0x39, 0xd9, 0x4e, 0x04, 0x07, 0x1e,
+ 0x18, 0x0f, 0x82, 0xbf, 0xd3, 0x2f, 0xc4, 0xab, 0x6e, 0x35, 0x41, 0xd6,
+ 0xe4, 0x5b, 0x26, 0xdb, 0x47, 0xd1, 0x6c, 0x09, 0x8f, 0x82, 0x4a, 0x75,
+ 0xa9, 0x76, 0xee, 0xb9, 0xbf, 0xfd, 0x25, 0x6d, 0xfc, 0x80, 0xad, 0xfa,
+ 0xc6, 0xa4, 0x05, 0xcd, 0x63, 0x38, 0x8e, 0xa2, 0xc7, 0x77, 0x00, 0x0f,
+ 0xbb, 0x45, 0xd2, 0xb3, 0x89, 0xef, 0xd9, 0x25, 0x3c, 0x9f, 0x51, 0xac,
+ 0xb6, 0xec, 0xc1, 0xc0, 0x16, 0x7f, 0xd5, 0x6a, 0xb3, 0xf0, 0xea, 0xac,
+ 0xdd, 0x30, 0x49, 0x9d, 0x16, 0xcf, 0x5d, 0x69, 0x16, 0x5f, 0xc0, 0x0e,
+ 0xd8, 0xe9, 0xf9, 0x47, 0xf0, 0x59, 0x5d, 0x39, 0xd0, 0xf7, 0x39, 0xd0,
+ 0x00, 0x04, 0xc9, 0xd2, 0x20, 0x24, 0xa6, 0xd5, 0xf9, 0xfe, 0x8c, 0xb9,
+ 0xad, 0x91, 0x27, 0x64, 0x7e, 0x71, 0x1e, 0x29, 0xac, 0xcd, 0x66, 0xc1,
+ 0x63, 0xe8, 0x8b, 0x0e, 0xa1, 0xc4, 0x68, 0xa9, 0xd8, 0x5e, 0x68, 0x63,
+ 0xaa, 0xad, 0xf7, 0x6c, 0x24, 0xcb, 0x4f, 0xb6, 0x3e, 0x08, 0x42, 0xfb,
+ 0x32, 0x1f, 0xdd, 0xee, 0x69, 0x97, 0x37, 0x80, 0x07, 0x80, 0x09, 0x29,
+ 0xd2, 0x36, 0x34, 0x8d, 0xfb, 0xc8, 0xb0, 0x8f, 0x71, 0x02, 0x74, 0x28,
+ 0x76, 0x66, 0x57, 0x8e, 0x5a, 0xd6, 0x6e, 0x7f, 0xef, 0x35, 0xc7, 0x43,
+ 0x2a, 0x0c, 0xac, 0xb4, 0x68, 0xe8, 0x73, 0xe4, 0x41, 0xe4, 0x7c, 0x02,
+ 0x9d, 0xa1, 0x9b, 0x43, 0x1a, 0x24, 0x7e, 0xf3, 0x9b, 0x1f, 0x7a, 0x4a,
+ 0x47, 0x5d, 0xb6, 0x32, 0xf0, 0xfa, 0xbd, 0x8d, 0x76, 0xac, 0x27, 0xc3,
+ 0xba, 0x9e, 0xda, 0xdc, 0x0b, 0x9c, 0xf3, 0xa9, 0x3b, 0x9c, 0xe9, 0x12,
+ 0x67, 0x48, 0x84, 0x3c, 0xac, 0x77, 0xbd, 0xad, 0x63, 0x1d, 0x2e, 0x77,
+ 0xd1, 0xdb, 0xf9, 0x14, 0x5c, 0xcb, 0x4b, 0x5b, 0x5b, 0xcc, 0x3c, 0x0d,
+ 0x4b, 0x78, 0x1e, 0x49, 0x29, 0x2d, 0xb9, 0x38, 0xfb, 0x1d, 0xea, 0x39,
+ 0xe6, 0x48, 0x04, 0xd7, 0x21, 0x03, 0xd1, 0xc4, 0xf4, 0xf6, 0xee, 0x7c,
+ 0x73, 0x13, 0xac, 0x4f, 0x8a, 0x0f, 0xa3, 0x73, 0xc1, 0x6e, 0xed, 0xc1,
+ 0xc7, 0x40, 0x3c, 0x54, 0xff, 0x00, 0x66, 0xf5, 0x1d, 0xbc, 0xb2, 0x7c,
+ 0x27, 0x58, 0xf8, 0x24, 0xa6, 0x15, 0x59, 0x8b, 0x5d, 0xa3, 0x75, 0xda,
+ 0x8f, 0x10, 0x47, 0xc9, 0x5a, 0xab, 0x1d, 0x97, 0x3c, 0xd9, 0x6d, 0x43,
+ 0xd2, 0x99, 0x6b, 0x77, 0x4e, 0x9e, 0x61, 0x0a, 0x9b, 0xaa, 0x73, 0xf6,
+ 0x7a, 0x62, 0xcd, 0xdf, 0x9b, 0x12, 0x7f, 0x22, 0xb0, 0xda, 0xd8, 0xf6,
+ 0x16, 0xbe, 0xd3, 0x5e, 0xe9, 0x96, 0x86, 0xc0, 0xfe, 0xaa, 0x4a, 0x48,
+ 0x00, 0x2c, 0xf5, 0x2b, 0x25, 0xa1, 0xb2, 0x1a, 0xc6, 0x90, 0x0e, 0xdf,
+ 0x12, 0x10, 0xeb, 0x7b, 0x9a, 0xe3, 0xb2, 0xbb, 0x1c, 0x40, 0x2e, 0xde,
+ 0x07, 0xe7, 0x78, 0xa5, 0x91, 0x46, 0x55, 0x0c, 0x16, 0x63, 0x06, 0x8a,
+ 0xc7, 0xb5, 0x8d, 0x1e, 0xe7, 0xc9, 0xee, 0x54, 0x58, 0x72, 0x2b, 0x9a,
+ 0xb4, 0x87, 0x37, 0xdd, 0x2e, 0x3f, 0x34, 0x94, 0xb0, 0xb7, 0x21, 0xee,
+ 0x69, 0x7f, 0xb2, 0xaf, 0xa4, 0x4b, 0xb4, 0x3b, 0xb8, 0x12, 0x99, 0xcd,
+ 0x7b, 0xdc, 0xd0, 0x1c, 0xd7, 0x96, 0xea, 0x48, 0x9d, 0x20, 0xa5, 0x8f,
+ 0x9a, 0xd7, 0xb8, 0x39, 0xf4, 0x30, 0x37, 0x74, 0x6e, 0xd7, 0x48, 0xfd,
+ 0xd5, 0x3f, 0x5d, 0x85, 0xee, 0x36, 0x80, 0x76, 0x09, 0xe3, 0xe9, 0x4a,
+ 0x4a, 0x5a, 0xec, 0x67, 0x64, 0x31, 0x8d, 0x0c, 0x6f, 0xa4, 0x64, 0xbe,
+ 0x5c, 0x77, 0x7d, 0xc8, 0x3f, 0x68, 0xae, 0xc7, 0x37, 0x1a, 0xb6, 0x8d,
+ 0xb5, 0xf2, 0xe9, 0xec, 0x15, 0xaa, 0xae, 0x2f, 0x05, 0xef, 0x73, 0x58,
+ 0xd7, 0x38, 0x0f, 0x4c, 0xea, 0x00, 0xf8, 0x0d, 0x75, 0x52, 0xd9, 0x87,
+ 0x5b, 0x8e, 0xca, 0x81, 0x0f, 0x92, 0xe0, 0x04, 0x70, 0x52, 0x53, 0x56,
+ 0xb3, 0x5d, 0xd7, 0x36, 0xba, 0xd8, 0x2d, 0x73, 0x9c, 0xd6, 0x0d, 0xdc,
+ 0xcb, 0x8c, 0x2f, 0x41, 0xb9, 0xfe, 0x9e, 0x61, 0x73, 0x44, 0x8a, 0x6b,
+ 0xda, 0x07, 0xca, 0x17, 0x1f, 0xd1, 0x71, 0xeb, 0xc9, 0xeb, 0xb8, 0x84,
+ 0x37, 0x6e, 0xc7, 0x07, 0x39, 0xb3, 0xd9, 0x80, 0xbb, 0xf8, 0x2e, 0xbb,
+ 0x7b, 0x0d, 0xf9, 0x0f, 0x7b, 0x77, 0x34, 0x48, 0x8f, 0x18, 0x09, 0x29,
+ 0xcf, 0xea, 0x15, 0x5f, 0x95, 0x88, 0xcc, 0x96, 0x34, 0xc1, 0x01, 0xc0,
+ 0xcf, 0x82, 0x9f, 0x4e, 0xc7, 0xc8, 0x7b, 0x1a, 0xeb, 0x1b, 0xb5, 0x8d,
+ 0xe7, 0x71, 0x89, 0x08, 0x4e, 0xb3, 0xd6, 0xe9, 0x4c, 0xf4, 0x8b, 0x9a,
+ 0xc6, 0x87, 0xb4, 0x36, 0x78, 0x87, 0x15, 0x57, 0x07, 0x22, 0xd7, 0x8d,
+ 0xaf, 0x79, 0x70, 0x06, 0x35, 0x29, 0x29, 0xd3, 0xc8, 0xc8, 0xb0, 0x0d,
+ 0xb4, 0x8f, 0x4d, 0x83, 0xb0, 0xe7, 0xef, 0x54, 0xc6, 0xae, 0xdc, 0x48,
+ 0x99, 0xd4, 0xa5, 0x9b, 0x9b, 0x8d, 0x8b, 0x53, 0x5d, 0x7b, 0xf6, 0xce,
+ 0x81, 0xa3, 0x52, 0x48, 0x5c, 0xe6, 0x4f, 0x5f, 0xcc, 0xf5, 0xe2, 0xa6,
+ 0x8a, 0x98, 0xc7, 0x49, 0x69, 0xd7, 0x74, 0x7e, 0xf1, 0xf0, 0x3e, 0x49,
+ 0x29, 0xd2, 0xea, 0x1d, 0x70, 0xd2, 0xdb, 0x2b, 0xc1, 0x2d, 0xb2, 0xda,
+ 0xf5, 0xb1, 0xc3, 0x50, 0xc6, 0xf0, 0x48, 0xf1, 0x84, 0x4e, 0x81, 0xd5,
+ 0x3e, 0xd3, 0x8a, 0xea, 0xee, 0x7e, 0xeb, 0xea, 0x71, 0x24, 0xbb, 0x59,
+ 0x6b, 0x8c, 0xcf, 0xde, 0xb0, 0xec, 0xbe, 0x9a, 0xb3, 0x59, 0x9f, 0x48,
+ 0xfd, 0x0d, 0xba, 0xba, 0xbf, 0xdd, 0x9d, 0x2c, 0x61, 0xfb, 0xe5, 0x3d,
+ 0x61, 0xdd, 0x2b, 0xaa, 0x32, 0xc6, 0x92, 0x31, 0x6d, 0x82, 0x0f, 0x8d,
+ 0x6f, 0xfe, 0xe4, 0x94, 0xeb, 0x67, 0xfd, 0x61, 0xa2, 0x8b, 0xcd, 0x7b,
+ 0x4d, 0xae, 0x6e, 0x9a, 0x68, 0xd6, 0xff, 0x00, 0xb5, 0x63, 0x75, 0x0c,
+ 0xcc, 0x3e, 0xa6, 0x0b, 0xb6, 0x9a, 0x72, 0xc0, 0x1b, 0x09, 0x32, 0x1e,
+ 0x3f, 0x74, 0x9e, 0xca, 0x35, 0xe3, 0xd5, 0x91, 0xd5, 0x9f, 0x46, 0x44,
+ 0x80, 0xe7, 0xbe, 0x40, 0xd0, 0x92, 0x24, 0x8d, 0x50, 0xfa, 0x9f, 0x46,
+ 0x38, 0xf3, 0x6e, 0x39, 0x2e, 0x60, 0xe5, 0x87, 0x52, 0x07, 0x8f, 0x9a,
+ 0x4a, 0x73, 0x5b, 0x75, 0x94, 0x1b, 0x1a, 0x34, 0xde, 0xd2, 0xc7, 0x34,
+ 0xff, 0x00, 0xaf, 0x64, 0x36, 0xfa, 0xd5, 0x10, 0xe6, 0xee, 0x61, 0xe4,
+ 0x11, 0x21, 0x4f, 0x6b, 0xaf, 0xe3, 0x5b, 0x00, 0xff, 0x00, 0x38, 0x0f,
+ 0xe2, 0x15, 0xee, 0x95, 0x6e, 0x53, 0xec, 0x6e, 0x35, 0x70, 0xea, 0x81,
+ 0xdc, 0xed, 0xc2, 0x61, 0xbd, 0xf9, 0x49, 0x4d, 0xae, 0x87, 0x55, 0xf9,
+ 0x36, 0x9c, 0xab, 0xde, 0xe7, 0xb6, 0xaf, 0x65, 0x7b, 0xb5, 0xd4, 0xf2,
+ 0x7e, 0x4b, 0xac, 0xc6, 0x60, 0x65, 0x5b, 0x8f, 0x27, 0x85, 0x43, 0x16,
+ 0x96, 0x88, 0x6b, 0x00, 0x68, 0x9e, 0x00, 0x80, 0xb5, 0x0c, 0x34, 0x01,
+ 0xf7, 0x24, 0xa4, 0x37, 0x33, 0xd5, 0x70, 0x61, 0x30, 0xd8, 0xdc, 0xf3,
+ 0xe0, 0xd0, 0xb2, 0x8d, 0x47, 0x21, 0xd9, 0x36, 0xb7, 0xf3, 0xe4, 0x34,
+ 0x79, 0x37, 0x85, 0xa5, 0x9f, 0x67, 0xd9, 0xb1, 0xdd, 0x59, 0x93, 0x75,
+ 0xc2, 0x5d, 0xdb, 0x6b, 0x3b, 0x05, 0x52, 0x81, 0xb2, 0xa6, 0x34, 0xfc,
+ 0x4f, 0xcd, 0x25, 0x3c, 0xe6, 0x7b, 0x1a, 0x1c, 0xd1, 0x5d, 0x73, 0x6d,
+ 0xa2, 0x5c, 0xef, 0xe4, 0xb7, 0x48, 0x1f, 0x12, 0xb6, 0x7a, 0x7e, 0x0b,
+ 0x30, 0x6a, 0xda, 0xe1, 0x39, 0x0f, 0x13, 0x63, 0xa3, 0x41, 0xfc, 0x91,
+ 0xf0, 0x52, 0x66, 0x0b, 0x9f, 0x99, 0x55, 0x6d, 0x6f, 0xb2, 0xab, 0x37,
+ 0x3a, 0x7c, 0x00, 0x96, 0xfe, 0x30, 0xaf, 0xe4, 0xb0, 0xb2, 0x7c, 0x00,
+ 0xd1, 0x25, 0x34, 0x2a, 0x8f, 0xb6, 0x8f, 0x3d, 0x17, 0x4f, 0x56, 0xad,
+ 0x07, 0xc4, 0x68, 0xb9, 0x5a, 0x9d, 0x39, 0x6d, 0xf8, 0x80, 0xba, 0x9a,
+ 0x38, 0x02, 0x60, 0x8f, 0xf7, 0xa4, 0xa7, 0x07, 0xeb, 0x23, 0x40, 0x79,
+ 0xfe, 0x55, 0x5f, 0x8b, 0x5d, 0xfe, 0xd5, 0x81, 0x8b, 0x3e, 0x95, 0xae,
+ 0x6b, 0x43, 0xa4, 0x6d, 0x87, 0x18, 0x10, 0xed, 0x0c, 0xae, 0x9b, 0xeb,
+ 0x1b, 0x03, 0x99, 0x59, 0x3d, 0xdb, 0x63, 0x3e, 0xf1, 0x21, 0x73, 0x58,
+ 0xd6, 0xfa, 0x58, 0xc4, 0x00, 0xd7, 0x3e, 0xc3, 0x2d, 0xdd, 0xc0, 0x0d,
+ 0xf8, 0xfc, 0x52, 0x52, 0xcf, 0xcf, 0xb2, 0x86, 0x8a, 0x43, 0x00, 0x68,
+ 0x3a, 0x01, 0x24, 0x2b, 0x38, 0x57, 0x1c, 0x97, 0x38, 0xd8, 0x45, 0x3f,
+ 0x9c, 0x21, 0xb3, 0xb9, 0x0d, 0x97, 0xe5, 0x3e, 0x04, 0x37, 0xb9, 0x2e,
+ 0x30, 0x7e, 0x69, 0x1a, 0xd9, 0x73, 0x23, 0x71, 0x61, 0x6e, 0xbb, 0xc0,
+ 0x82, 0x7e, 0x09, 0x29, 0x7b, 0x3a, 0x83, 0x31, 0xf2, 0x83, 0x8d, 0x61,
+ 0xcd, 0x27, 0x61, 0xb7, 0xe3, 0xe0, 0x12, 0x6e, 0x65, 0x4e, 0xdc, 0xe7,
+ 0xbd, 0xdb, 0x4e, 0xac, 0x69, 0x12, 0xd9, 0xed, 0x24, 0x21, 0x37, 0x1e,
+ 0xef, 0x4c, 0x54, 0x40, 0x0c, 0x7c, 0xb8, 0x58, 0xf3, 0xc4, 0x15, 0x76,
+ 0x86, 0x06, 0xd4, 0x00, 0x6b, 0x36, 0x6a, 0x1e, 0x48, 0x3a, 0xcf, 0x82,
+ 0x4a, 0x6a, 0x97, 0xd6, 0xe6, 0xb3, 0xde, 0x6a, 0x71, 0x24, 0x39, 0xcd,
+ 0x32, 0x40, 0x45, 0x36, 0x63, 0x0a, 0x5c, 0xda, 0x81, 0xdb, 0x30, 0xd2,
+ 0x64, 0x93, 0xa7, 0x27, 0xc1, 0x56, 0xb7, 0x13, 0x1d, 0x80, 0x8a, 0xc1,
+ 0x7b, 0xac, 0x74, 0x01, 0xfb, 0xa0, 0x23, 0xd9, 0x56, 0xda, 0x48, 0xac,
+ 0x86, 0xf1, 0xbb, 0x52, 0x3e, 0xe4, 0x94, 0xb1, 0x60, 0xba, 0xa6, 0x39,
+ 0xaf, 0x97, 0xd6, 0x64, 0x46, 0x9a, 0xfc, 0xd1, 0x25, 0xdc, 0xc7, 0xe9,
+ 0x23, 0xe8, 0x4a, 0x58, 0xf4, 0x54, 0x0b, 0xde, 0xf6, 0xee, 0x88, 0xd8,
+ 0x4e, 0x9a, 0x21, 0xfa, 0x57, 0xfd, 0xa7, 0xd5, 0xf4, 0x84, 0x47, 0xd2,
+ 0x9d, 0x76, 0xf8, 0xa4, 0xa5, 0xdf, 0x97, 0x79, 0x61, 0x76, 0x3e, 0xda,
+ 0xc1, 0xd4, 0x0e, 0xe4, 0x21, 0xbe, 0xbb, 0xbd, 0x09, 0xc5, 0x8b, 0x5f,
+ 0xae, 0xf6, 0x07, 0x02, 0x47, 0x72, 0xb5, 0xc6, 0x56, 0x35, 0xc1, 0xd4,
+ 0x5b, 0x4b, 0x05, 0x3b, 0x0b, 0xb7, 0x6d, 0x10, 0x00, 0xf0, 0x70, 0xe0,
+ 0xca, 0xc3, 0xa6, 0xe6, 0xb6, 0xed, 0xb5, 0x17, 0x36, 0xc2, 0xe8, 0x68,
+ 0x02, 0x79, 0xf1, 0x29, 0x29, 0x2d, 0x6e, 0xcd, 0xac, 0xb1, 0xb6, 0x6c,
+ 0xad, 0xbc, 0x90, 0xe7, 0x4b, 0x84, 0xf9, 0x26, 0x75, 0x57, 0xd9, 0xef,
+ 0xf5, 0x03, 0x9a, 0xe2, 0x01, 0x6b, 0x81, 0xd0, 0x79, 0x29, 0x65, 0xfe,
+ 0x8e, 0xc3, 0xea, 0x89, 0xba, 0x40, 0x3b, 0xa1, 0xd2, 0x87, 0x53, 0x03,
+ 0xdb, 0xb4, 0x1d, 0xa4, 0x13, 0xa0, 0xd0, 0x0f, 0x0e, 0x12, 0x53, 0x64,
+ 0xf4, 0xc6, 0x56, 0x06, 0xeb, 0x1c, 0xf7, 0xbb, 0xdc, 0xd6, 0x81, 0x11,
+ 0xdf, 0x54, 0x7f, 0x4a, 0x97, 0xda, 0xd0, 0xc6, 0xcd, 0x84, 0x0d, 0xdb,
+ 0xb8, 0x07, 0xbe, 0x8a, 0x8e, 0x45, 0xcd, 0x64, 0x17, 0x5a, 0xe0, 0xf2,
+ 0x35, 0x33, 0xf9, 0xc3, 0xc1, 0x43, 0xed, 0x7e, 0xb9, 0x63, 0x6a, 0x69,
+ 0xf5, 0xb9, 0x24, 0x77, 0xf3, 0x49, 0x4d, 0xd0, 0xe0, 0xeb, 0x5c, 0x1c,
+ 0xd8, 0x73, 0x5d, 0x0d, 0x33, 0xed, 0x31, 0xe5, 0x08, 0x47, 0xd5, 0x16,
+ 0xb9, 0xf9, 0x2f, 0x64, 0xff, 0x00, 0x83, 0x0c, 0x3d, 0xbc, 0x51, 0x4d,
+ 0x39, 0x4f, 0x1b, 0xc8, 0x9d, 0xc2, 0x1c, 0xe6, 0x9f, 0xce, 0x23, 0xf3,
+ 0x82, 0xaf, 0x6b, 0x6e, 0x71, 0x65, 0x66, 0xbd, 0x9b, 0x04, 0x07, 0x1f,
+ 0xa4, 0x7e, 0x69, 0x29, 0xe8, 0xfe, 0xab, 0x57, 0x59, 0xea, 0x56, 0xb9,
+ 0x8e, 0x93, 0x55, 0x44, 0x96, 0xe9, 0xf9, 0xc4, 0x36, 0x65, 0x6b, 0xb4,
+ 0x86, 0xd1, 0x6d, 0x8f, 0x20, 0x02, 0x5c, 0x49, 0x26, 0x02, 0xcc, 0xfa,
+ 0x99, 0x8d, 0x6d, 0x38, 0x79, 0xd9, 0x57, 0x19, 0x7b, 0xdc, 0x2b, 0x1f,
+ 0x06, 0x34, 0xbb, 0xf8, 0xab, 0x1d, 0x58, 0x7f, 0x91, 0x6d, 0x07, 0xbb,
+ 0x49, 0xfc, 0x52, 0x52, 0x0e, 0x90, 0xe6, 0xdd, 0xd3, 0xad, 0x60, 0x32,
+ 0x19, 0x75, 0x8d, 0x04, 0x6b, 0xa1, 0x82, 0xaa, 0xe3, 0xfb, 0x2f, 0x7d,
+ 0x67, 0xb1, 0x41, 0xfa, 0x97, 0x6b, 0x7e, 0xc5, 0x97, 0x59, 0x3f, 0x46,
+ 0xc0, 0xed, 0x7b, 0x03, 0x21, 0x3e, 0x66, 0x4d, 0x15, 0x75, 0x3f, 0x4d,
+ 0xb6, 0x0f, 0x50, 0xcc, 0xb4, 0x1f, 0xca, 0x92, 0x99, 0x75, 0xec, 0x53,
+ 0x7e, 0x2b, 0x6f, 0xaf, 0x57, 0x55, 0xf4, 0xa3, 0xf7, 0x4f, 0x7f, 0xbd,
+ 0x61, 0xd7, 0x48, 0xc8, 0x60, 0xa9, 0xd0, 0x2f, 0x6e, 0x94, 0x93, 0xf9,
+ 0xc3, 0xfd, 0x19, 0x3f, 0x93, 0xee, 0x5b, 0x96, 0xf5, 0x5a, 0x0b, 0x5e,
+ 0xca, 0x1d, 0xbe, 0xea, 0xce, 0xe7, 0xb2, 0x0e, 0xac, 0x69, 0xf7, 0xb7,
+ 0xee, 0x54, 0x3a, 0xbe, 0x07, 0xd9, 0xb6, 0xdf, 0x4e, 0xb8, 0xd6, 0x6a,
+ 0xd3, 0xa9, 0xda, 0x4e, 0xba, 0xff, 0x00, 0x04, 0x94, 0xe4, 0x16, 0xb9,
+ 0xae, 0x21, 0xda, 0x11, 0x20, 0x83, 0xa7, 0x92, 0xd0, 0xb5, 0xf5, 0xe5,
+ 0xf4, 0x76, 0xb4, 0x02, 0x6f, 0xc4, 0x74, 0x7f, 0xd6, 0xce, 0xa9, 0x9a,
+ 0x2b, 0xea, 0x35, 0x80, 0x7d, 0xb9, 0xcd, 0x1a, 0x13, 0x00, 0x5c, 0x3c,
+ 0xff, 0x00, 0x95, 0xf9, 0x55, 0x7a, 0x32, 0x2e, 0xc1, 0xb9, 0xc3, 0x6c,
+ 0xb5, 0xd2, 0xcb, 0xab, 0x77, 0x71, 0xdc, 0x7c, 0x52, 0x52, 0x0c, 0x97,
+ 0x3d, 0xde, 0x9e, 0x65, 0x52, 0x1f, 0x5e, 0xd6, 0xd8, 0xff, 0x00, 0x07,
+ 0xb7, 0xe8, 0xbb, 0xe6, 0x15, 0xba, 0xba, 0xd5, 0x4f, 0x00, 0x64, 0x4d,
+ 0x6f, 0x8e, 0x79, 0x69, 0x54, 0x99, 0x65, 0x74, 0x64, 0x92, 0x1d, 0xbf,
+ 0x1e, 0xcf, 0x6b, 0xc1, 0xfd, 0xd3, 0xe2, 0x3c, 0x95, 0xab, 0xfa, 0x2b,
+ 0x1e, 0x77, 0x53, 0x66, 0xd6, 0x9e, 0x01, 0xd4, 0x7c, 0x8a, 0x4a, 0x69,
+ 0x07, 0xd7, 0x67, 0x53, 0x63, 0xb1, 0xf4, 0x69, 0x78, 0x8d, 0x23, 0xe2,
+ 0x56, 0xee, 0x1e, 0x1d, 0x58, 0xc5, 0xe5, 0x9a, 0x9b, 0x1c, 0x5c, 0xe7,
+ 0x1f, 0xc8, 0xab, 0x60, 0xf4, 0x9a, 0xf1, 0xdc, 0x6d, 0xb1, 0xdb, 0xec,
+ 0xed, 0xa4, 0x06, 0xad, 0x6a, 0x2b, 0x2f, 0x20, 0x0d, 0x21, 0x25, 0x37,
+ 0x31, 0x2b, 0x8f, 0x71, 0xe7, 0x80, 0xae, 0xd2, 0xd6, 0x37, 0x75, 0xf6,
+ 0xff, 0x00, 0x37, 0x50, 0x92, 0x3c, 0x4f, 0x60, 0x83, 0x5d, 0x7a, 0x34,
+ 0x37, 0x52, 0x74, 0x1f, 0x15, 0x3c, 0xe7, 0x01, 0x5b, 0x71, 0xab, 0x12,
+ 0x18, 0x7d, 0xdf, 0xca, 0x7a, 0x4a, 0x73, 0x6f, 0x7b, 0xb2, 0xb2, 0x5d,
+ 0x65, 0x9c, 0x4e, 0xe7, 0x47, 0xe0, 0x13, 0x6e, 0xfd, 0x28, 0x69, 0x1e,
+ 0x73, 0xe7, 0x2a, 0xd3, 0xa8, 0x6d, 0x2c, 0x21, 0xd1, 0x23, 0x57, 0x7c,
+ 0x55, 0x30, 0x2c, 0x7b, 0xc1, 0x68, 0xef, 0xcf, 0x92, 0x4a, 0x74, 0x2b,
+ 0xaf, 0x6e, 0x43, 0x9d, 0xfb, 0xed, 0x69, 0xfb, 0xb4, 0x55, 0xf3, 0xcf,
+ 0xb4, 0xc7, 0x75, 0x7b, 0x6c, 0x54, 0xc7, 0x8e, 0x5d, 0x20, 0xfc, 0x96,
+ 0x7e, 0x70, 0x22, 0xad, 0x79, 0x94, 0x94, 0xe7, 0xd0, 0xdf, 0xd6, 0x19,
+ 0xfd, 0x65, 0xd4, 0x54, 0x62, 0x3c, 0xc0, 0x3f, 0x72, 0xe6, 0x6a, 0xd2,
+ 0xc6, 0x9f, 0x07, 0x05, 0xd1, 0xb4, 0xfb, 0x6b, 0x23, 0xe1, 0xf7, 0xa4,
+ 0xa7, 0x3f, 0xaf, 0xb7, 0x76, 0x3b, 0x1d, 0xfb, 0xb6, 0x37, 0xf1, 0x05,
+ 0xab, 0x9a, 0xad, 0xee, 0xc7, 0x06, 0xbb, 0x29, 0x69, 0xa8, 0x43, 0x0b,
+ 0x8c, 0x13, 0xae, 0xa4, 0xfc, 0x02, 0xea, 0x3a, 0xd6, 0xb8, 0x97, 0x7f,
+ 0x24, 0x35, 0xdf, 0x73, 0x82, 0xe4, 0x72, 0xb0, 0xae, 0xbb, 0x3b, 0xda,
+ 0xed, 0xa2, 0xcf, 0xa0, 0x0f, 0x60, 0x44, 0xca, 0x4a, 0x48, 0xee, 0xa3,
+ 0xd3, 0xea, 0x63, 0x99, 0x53, 0x44, 0x92, 0x06, 0xf8, 0x30, 0x55, 0xa7,
+ 0xbf, 0x17, 0x40, 0x1d, 0xb5, 0xc0, 0x03, 0xbc, 0x0d, 0x63, 0xcd, 0x66,
+ 0xb7, 0xa0, 0xda, 0x04, 0xd5, 0x70, 0x75, 0xb3, 0xaf, 0xb7, 0x41, 0xf7,
+ 0xab, 0x43, 0x07, 0x33, 0x0e, 0xbd, 0x8e, 0xac, 0xbc, 0xbb, 0xe9, 0xb9,
+ 0xbd, 0xe7, 0xcf, 0xc1, 0x25, 0x28, 0xe5, 0x52, 0x2d, 0xf5, 0x83, 0x4b,
+ 0x98, 0x46, 0xd9, 0xe7, 0x8e, 0xf0, 0x94, 0xd5, 0x65, 0x5e, 0xeb, 0x77,
+ 0x3f, 0x42, 0xd0, 0x35, 0xe7, 0xcf, 0xb2, 0x6b, 0x71, 0x5f, 0x7d, 0x2d,
+ 0xb5, 0x8e, 0x6b, 0x48, 0x90, 0x58, 0x79, 0x93, 0xe0, 0xa3, 0x8b, 0xd3,
+ 0x4d, 0x6e, 0x69, 0x69, 0x3b, 0x9d, 0xa6, 0x84, 0x01, 0xf8, 0xa4, 0xa4,
+ 0x59, 0x47, 0xa8, 0x63, 0x37, 0xf4, 0x5f, 0x40, 0x8d, 0x08, 0xec, 0x4f,
+ 0x2a, 0x58, 0xce, 0xb2, 0xd0, 0xe0, 0xe1, 0xdb, 0x5f, 0x97, 0x75, 0x6f,
+ 0xa8, 0x60, 0xe5, 0xd7, 0x0d, 0xb2, 0xc6, 0x96, 0xbf, 0xde, 0x03, 0x49,
+ 0x30, 0xab, 0x62, 0xbd, 0x95, 0xbd, 0xda, 0x92, 0x5e, 0x22, 0x09, 0xfc,
+ 0xa9, 0x29, 0x0d, 0xf6, 0x5f, 0x43, 0xf6, 0xd7, 0x63, 0x9e, 0xc7, 0x0d,
+ 0x01, 0x88, 0x27, 0xc9, 0x4b, 0xed, 0x7d, 0x43, 0xd2, 0x9f, 0x48, 0xcc,
+ 0x46, 0xdf, 0x2e, 0x13, 0x13, 0x6e, 0xe0, 0x48, 0x6b, 0xc3, 0x49, 0x27,
+ 0x48, 0xdb, 0xf7, 0x26, 0xdc, 0xff, 0x00, 0x5f, 0xd2, 0xf5, 0xbd, 0xb1,
+ 0xe1, 0xac, 0xf3, 0xca, 0x4a, 0x6c, 0x64, 0x8c, 0x81, 0x4f, 0xa2, 0x38,
+ 0x74, 0x77, 0xd3, 0x6f, 0x8a, 0x25, 0x19, 0x18, 0xd5, 0x10, 0x39, 0x78,
+ 0x1d, 0xa7, 0xb0, 0xe5, 0x12, 0xac, 0x5c, 0xe0, 0xe7, 0x7a, 0x95, 0xb9,
+ 0xef, 0x7b, 0x46, 0xda, 0x98, 0x37, 0x1f, 0x9c, 0xe8, 0x10, 0x6c, 0xbb,
+ 0x29, 0xcf, 0x75, 0x0c, 0xa0, 0xb1, 0xec, 0x3b, 0x2c, 0xb1, 0xe0, 0x6d,
+ 0x68, 0x1e, 0x04, 0x77, 0x29, 0x29, 0x76, 0xba, 0xb9, 0x36, 0x64, 0x1d,
+ 0xe0, 0xf0, 0x7e, 0x89, 0x3f, 0x00, 0xa3, 0x45, 0xd8, 0x86, 0xb7, 0x6c,
+ 0xad, 0xcd, 0x7b, 0x4c, 0x32, 0x64, 0xf7, 0xee, 0xa5, 0x8f, 0x7d, 0x05,
+ 0xcc, 0xc6, 0x73, 0x1c, 0xfb, 0xaa, 0x10, 0xcd, 0xde, 0xdd, 0x46, 0xba,
+ 0xad, 0x46, 0x65, 0x74, 0xe7, 0x50, 0x7e, 0xdb, 0x4d, 0x6c, 0xb8, 0x6a,
+ 0xd6, 0xb0, 0x9d, 0xce, 0xf0, 0x82, 0x39, 0x29, 0x29, 0xcb, 0x65, 0xb8,
+ 0xee, 0x7b, 0xcd, 0xd8, 0xde, 0xa5, 0x60, 0xfd, 0x22, 0x36, 0x9e, 0x14,
+ 0xb1, 0xea, 0x69, 0xaa, 0xcc, 0x8a, 0x0d, 0x20, 0x72, 0x24, 0x9f, 0x6b,
+ 0x7c, 0x37, 0x0e, 0x0a, 0xb3, 0x95, 0x83, 0x4b, 0x0d, 0x61, 0xb6, 0xee,
+ 0xad, 0xe0, 0xb8, 0xb5, 0xc6, 0x4b, 0x0f, 0x84, 0xaa, 0xf5, 0x3f, 0x05,
+ 0x96, 0x8a, 0x5c, 0xdd, 0xcc, 0x98, 0x0d, 0x61, 0xf6, 0x93, 0xfc, 0xa0,
+ 0x34, 0x49, 0x4b, 0x53, 0x8d, 0x8e, 0xfa, 0x4b, 0xdd, 0x9f, 0x6d, 0x64,
+ 0x6b, 0xbb, 0x6c, 0xb7, 0xf8, 0x22, 0xe2, 0xbb, 0x01, 0xb4, 0x6e, 0x7b,
+ 0x9f, 0x93, 0x6f, 0x6b, 0x08, 0x20, 0x9f, 0x1d, 0x0a, 0xa1, 0x93, 0xd4,
+ 0x05, 0xf6, 0xb9, 0x9b, 0x21, 0xbb, 0x88, 0x68, 0x1e, 0x03, 0x41, 0x01,
+ 0x14, 0xda, 0xf6, 0x44, 0xd7, 0x1b, 0x9a, 0x76, 0x8d, 0xc2, 0x4e, 0x91,
+ 0x11, 0x3a, 0x24, 0xa7, 0xba, 0xe9, 0x4c, 0x6d, 0x3d, 0x0d, 0xa5, 0xa6,
+ 0x45, 0xa5, 0xef, 0x9f, 0x89, 0xda, 0x3f, 0x22, 0x07, 0x57, 0x20, 0xf4,
+ 0xcb, 0x58, 0xd2, 0x09, 0x6b, 0x08, 0x20, 0x78, 0x8d, 0x55, 0xd6, 0xd5,
+ 0xf6, 0x6e, 0x99, 0x89, 0x8f, 0xc6, 0xca, 0xeb, 0x69, 0x1e, 0x60, 0x6e,
+ 0x3f, 0x8a, 0xc3, 0xdf, 0x5d, 0xb8, 0x99, 0xd6, 0x54, 0x66, 0xbb, 0x1e,
+ 0xe2, 0xd9, 0xd0, 0x83, 0xb4, 0x13, 0x3f, 0x04, 0x94, 0xf3, 0x9f, 0x57,
+ 0xa6, 0xdb, 0xb3, 0x70, 0xb7, 0xec, 0x6d, 0xd0, 0x49, 0xf2, 0xdc, 0xad,
+ 0xfd, 0x64, 0xe9, 0x96, 0xe1, 0x0a, 0x73, 0x6b, 0x26, 0xc7, 0x53, 0x0d,
+ 0xb5, 0xf1, 0x13, 0x07, 0xda, 0x48, 0xf8, 0x68, 0x56, 0x4f, 0x4a, 0xb7,
+ 0xd0, 0xeb, 0x7b, 0x4f, 0x16, 0x87, 0x33, 0xe6, 0x46, 0x9f, 0x8a, 0xde,
+ 0x68, 0xea, 0x59, 0xa2, 0xef, 0xb4, 0x35, 0xd6, 0x62, 0xe4, 0x34, 0xb5,
+ 0xce, 0x3a, 0x35, 0xa4, 0x70, 0x5b, 0x3f, 0xc1, 0x25, 0x39, 0xf8, 0x96,
+ 0xb3, 0xf6, 0xc5, 0x57, 0x37, 0xf9, 0xbc, 0x81, 0xbb, 0xe4, 0xf6, 0x90,
+ 0x7f, 0x15, 0xd3, 0xc5, 0x36, 0x62, 0x8a, 0xa0, 0x3a, 0xad, 0xb1, 0xb7,
+ 0x91, 0xb7, 0xb7, 0xc9, 0x70, 0xf8, 0x6e, 0x7d, 0x19, 0xd4, 0xd3, 0x76,
+ 0xa2, 0xab, 0x36, 0x41, 0xf0, 0x25, 0x75, 0x5d, 0x47, 0xd4, 0xa7, 0x15,
+ 0x97, 0xe3, 0x0d, 0xaf, 0xc7, 0xd7, 0x68, 0x1a, 0x6c, 0x3a, 0x10, 0x42,
+ 0x4a, 0x71, 0xfa, 0x97, 0x4d, 0x38, 0xae, 0x37, 0x50, 0x49, 0xa6, 0x66,
+ 0x47, 0xe6, 0x1e, 0xca, 0xae, 0x56, 0x50, 0xc8, 0xa9, 0x8e, 0xb3, 0xfa,
+ 0x43, 0x3d, 0xae, 0x7f, 0x6b, 0x07, 0x69, 0xfe, 0x50, 0x5d, 0x26, 0x36,
+ 0x4d, 0x59, 0x98, 0xe2, 0xd0, 0xdf, 0xa5, 0x2d, 0x7b, 0x4f, 0x8f, 0x04,
+ 0x2c, 0x6e, 0xa7, 0xd1, 0xdc, 0xc9, 0xbb, 0x10, 0x12, 0xce, 0x5d, 0x57,
+ 0x24, 0x79, 0xb5, 0x25, 0x38, 0xdb, 0x43, 0xa4, 0x90, 0xb7, 0xba, 0x35,
+ 0xc2, 0xea, 0x1d, 0x43, 0xa0, 0xbe, 0x9f, 0x1e, 0xec, 0xec, 0x7e, 0x4b,
+ 0x09, 0x8e, 0x60, 0xb1, 0xa2, 0xc0, 0x4b, 0x3f, 0x3a, 0x39, 0x8f, 0x25,
+ 0x6d, 0xf5, 0xe4, 0xf4, 0xac, 0x96, 0x64, 0x0f, 0x75, 0x33, 0xf4, 0xc7,
+ 0x0e, 0x69, 0xec, 0x52, 0x53, 0xd0, 0x36, 0x92, 0xe3, 0x03, 0xe4, 0x55,
+ 0xcc, 0x7a, 0xf6, 0xb4, 0x03, 0xf3, 0x21, 0x56, 0xc7, 0x78, 0xba, 0x2c,
+ 0x67, 0xd1, 0x78, 0x05, 0xa4, 0xf8, 0x2d, 0x3c, 0x4a, 0x7d, 0x57, 0x6d,
+ 0x98, 0x6b, 0x7d, 0xcf, 0x71, 0xe0, 0x00, 0x92, 0x93, 0xd3, 0x15, 0x52,
+ 0xec, 0x83, 0xcf, 0xd1, 0xa4, 0x79, 0xf7, 0x72, 0x86, 0x35, 0x0e, 0x33,
+ 0x7b, 0xc7, 0xb4, 0x4e, 0xcf, 0x89, 0xee, 0xa7, 0x07, 0x2b, 0x20, 0x31,
+ 0x9a, 0x31, 0x9a, 0x0f, 0x00, 0xd1, 0xdd, 0x58, 0xc9, 0x86, 0x8f, 0x49,
+ 0x9a, 0x35, 0xa0, 0x08, 0x49, 0x4e, 0x6e, 0x43, 0x41, 0x24, 0x9d, 0x7c,
+ 0x50, 0xaa, 0x80, 0x7f, 0x20, 0x4f, 0x71, 0x71, 0xf6, 0x8f, 0xbd, 0x3e,
+ 0x3d, 0x50, 0x44, 0xf3, 0xdd, 0x25, 0x37, 0x83, 0x49, 0xc6, 0x6b, 0xff,
+ 0x00, 0x94, 0x7f, 0x22, 0xca, 0xea, 0x6f, 0x0c, 0xa5, 0xcf, 0x76, 0x8d,
+ 0x6e, 0xa7, 0xe0, 0xb7, 0x5e, 0xd8, 0xc1, 0xf8, 0x10, 0x7e, 0x5c, 0x2e,
+ 0x3b, 0xad, 0x75, 0x1f, 0x5d, 0xb9, 0x78, 0xcc, 0x6c, 0x0a, 0x5b, 0xab,
+ 0x89, 0xd4, 0x90, 0xe0, 0x1c, 0x92, 0x99, 0xd1, 0x60, 0x76, 0xd7, 0x8d,
+ 0x03, 0xa0, 0x89, 0xf3, 0x5d, 0x31, 0x04, 0x62, 0x35, 0xe3, 0xb6, 0xa3,
+ 0xe5, 0xaa, 0xe5, 0xe8, 0x6e, 0xd6, 0xb0, 0x7e, 0x6c, 0x37, 0xf2, 0x2e,
+ 0xaa, 0xa3, 0x38, 0x2c, 0x9f, 0x04, 0x94, 0xd6, 0xea, 0x2c, 0x36, 0xe3,
+ 0xdc, 0xd8, 0x90, 0xea, 0xdd, 0xf9, 0x25, 0x73, 0xcc, 0x73, 0x45, 0x15,
+ 0xda, 0xe7, 0x35, 0xa1, 0xed, 0x0d, 0xd4, 0x80, 0x74, 0xd3, 0x92, 0xba,
+ 0x6b, 0x3d, 0xd5, 0x34, 0x98, 0xe3, 0x69, 0xf9, 0x68, 0xb8, 0xdb, 0x6d,
+ 0x66, 0x39, 0x65, 0x4f, 0xd8, 0xe7, 0x07, 0xbd, 0xad, 0x6b, 0xc1, 0x77,
+ 0x0e, 0xfc, 0xd0, 0x3b, 0xea, 0x92, 0x9b, 0xb7, 0x64, 0xd0, 0x32, 0x1c,
+ 0x6b, 0x3e, 0xa5, 0xb5, 0x80, 0x1e, 0xd1, 0xa3, 0x4f, 0xcf, 0xba, 0xb2,
+ 0x7a, 0xd5, 0x43, 0xa7, 0x97, 0xd9, 0x49, 0x19, 0x40, 0x90, 0xe6, 0x88,
+ 0xd0, 0xf6, 0xe5, 0x64, 0xfa, 0x2e, 0xac, 0x7d, 0x9d, 0xcf, 0xdb, 0x63,
+ 0xe0, 0x17, 0xba, 0x38, 0x71, 0xee, 0x7c, 0x91, 0x1f, 0x87, 0x91, 0x8e,
+ 0xe3, 0x55, 0xc4, 0x0a, 0x1d, 0xa3, 0x5e, 0x1c, 0x4e, 0xe9, 0xef, 0x09,
+ 0x29, 0x13, 0xd8, 0x2d, 0xa1, 0xb6, 0x0c, 0x8f, 0x46, 0xe2, 0x74, 0x90,
+ 0x36, 0xc7, 0x79, 0x45, 0x66, 0x55, 0x58, 0x38, 0xe5, 0xaf, 0xad, 0xb9,
+ 0x40, 0x7b, 0x85, 0xa7, 0xda, 0x0b, 0xbc, 0x00, 0x50, 0xfb, 0x01, 0xbe,
+ 0xcd, 0xa5, 0xa5, 0xcc, 0x6f, 0xb5, 0xa7, 0x74, 0x48, 0x51, 0xfb, 0x05,
+ 0x8e, 0xb9, 0xf5, 0x35, 0xc5, 0xb4, 0xeb, 0xb0, 0x86, 0xc9, 0x1f, 0x32,
+ 0x92, 0x98, 0xbf, 0xa9, 0xf5, 0x57, 0x3d, 0xaf, 0x7d, 0x55, 0xb5, 0xf0,
+ 0x36, 0x4f, 0x1b, 0x4e, 0xa1, 0x3b, 0x2a, 0xb5, 0xa1, 0xcf, 0x21, 0xb2,
+ 0x79, 0x27, 0x43, 0x27, 0xc0, 0x78, 0x22, 0xd9, 0x8e, 0x19, 0x8d, 0x5b,
+ 0x6e, 0x9b, 0x1f, 0x50, 0x8f, 0x6b, 0x9a, 0x1d, 0x04, 0xe9, 0x21, 0x35,
+ 0x58, 0xc5, 0xcc, 0x0f, 0xd4, 0x54, 0xc2, 0x35, 0x26, 0x4b, 0x8f, 0xfb,
+ 0x12, 0x53, 0x9e, 0xf2, 0xfd, 0xc5, 0xb7, 0x36, 0x00, 0x99, 0x20, 0xf2,
+ 0x89, 0xf6, 0x27, 0x7d, 0x93, 0xd5, 0xf4, 0xce, 0xf9, 0xdd, 0xe9, 0xf6,
+ 0xd9, 0xfb, 0xd2, 0xb4, 0x2e, 0x68, 0xb2, 0x6e, 0xbb, 0xe8, 0xb1, 0xc1,
+ 0xa1, 0xa5, 0xba, 0x40, 0x1f, 0xba, 0x14, 0xe0, 0x6f, 0xf5, 0x3e, 0xd3,
+ 0xf9, 0xbc, 0x40, 0x9d, 0xbf, 0xbb, 0xb5, 0x25, 0x34, 0x72, 0xf3, 0x72,
+ 0x68, 0x16, 0x32, 0x5d, 0x6d, 0xb6, 0xb6, 0x2c, 0xb0, 0x38, 0x90, 0x00,
+ 0xd4, 0xed, 0xda, 0xab, 0xe3, 0xdd, 0x92, 0x58, 0xec, 0x61, 0x53, 0xde,
+ 0xc3, 0x0f, 0x22, 0x76, 0xe9, 0xcc, 0x83, 0xe2, 0x99, 0xac, 0x75, 0x95,
+ 0xb4, 0x80, 0xe6, 0x12, 0x48, 0xdf, 0xa8, 0xf6, 0xab, 0x38, 0xd8, 0xf6,
+ 0x5e, 0xf1, 0x4b, 0x1c, 0x5b, 0x60, 0x9f, 0x52, 0xe7, 0xea, 0xc0, 0xcf,
+ 0x39, 0x49, 0x4d, 0xc2, 0xf6, 0xbe, 0x1f, 0x45, 0x01, 0xb7, 0x30, 0x09,
+ 0xb1, 0xfa, 0xaa, 0x96, 0x7d, 0xa0, 0x5f, 0xeb, 0x07, 0x56, 0xc6, 0xb4,
+ 0x4f, 0xb9, 0xbb, 0xb6, 0x9f, 0xe4, 0x84, 0x66, 0xe3, 0x5c, 0xda, 0x43,
+ 0x3d, 0x60, 0x6a, 0x92, 0xd6, 0xde, 0xd0, 0x5a, 0x0c, 0x6a, 0x43, 0xb9,
+ 0x40, 0xae, 0xaa, 0x45, 0xee, 0x36, 0xe5, 0x8d, 0xae, 0x88, 0x0d, 0x1b,
+ 0x81, 0x29, 0x29, 0x93, 0xb2, 0x1f, 0x90, 0xcf, 0x4a, 0xc7, 0xbf, 0x22,
+ 0xa3, 0xa9, 0x76, 0x8c, 0x0d, 0x8f, 0x00, 0x10, 0x06, 0x1f, 0xd9, 0xde,
+ 0x2c, 0xa1, 0xae, 0x12, 0x25, 0xbb, 0x9c, 0x1c, 0x04, 0xf9, 0x05, 0x26,
+ 0x3a, 0x9c, 0x6b, 0x1c, 0xe3, 0x6b, 0x6c, 0x24, 0x96, 0xee, 0xf0, 0x9e,
+ 0xd1, 0xd9, 0x1d, 0xf8, 0x02, 0xeb, 0x43, 0x5b, 0x94, 0xc6, 0x70, 0x0b,
+ 0xf8, 0x6b, 0x8f, 0x83, 0xa7, 0x84, 0x94, 0x86, 0x8a, 0x3f, 0x45, 0x04,
+ 0x43, 0x67, 0x71, 0x13, 0xac, 0x93, 0xe2, 0x51, 0x31, 0xab, 0xdd, 0x93,
+ 0x4e, 0x38, 0xa4, 0x39, 0xd6, 0x3d, 0xad, 0x0e, 0xe3, 0xe9, 0xb8, 0x08,
+ 0x31, 0xe0, 0xa0, 0x30, 0x5c, 0xcc, 0x8f, 0x4e, 0xcb, 0x19, 0x73, 0x5a,
+ 0x3d, 0xde, 0x93, 0xa4, 0x47, 0x98, 0x5a, 0x1f, 0x57, 0xb0, 0x2d, 0xbb,
+ 0xeb, 0x06, 0x1b, 0x9a, 0xf9, 0xa2, 0x97, 0x1b, 0x08, 0x83, 0x1e, 0xc6,
+ 0x93, 0xa7, 0xcd, 0x25, 0x3d, 0xc6, 0x7d, 0x8c, 0x65, 0x8d, 0x0e, 0x20,
+ 0x31, 0x92, 0x49, 0x3c, 0x00, 0x34, 0x58, 0xb5, 0xe1, 0x1c, 0x7c, 0x2c,
+ 0xd6, 0x48, 0x2d, 0xfd, 0x35, 0x8d, 0x3e, 0x4e, 0x00, 0x35, 0x5a, 0xeb,
+ 0x43, 0xd6, 0xdd, 0x44, 0xed, 0xf5, 0x9c, 0xca, 0x67, 0xc3, 0x71, 0x93,
+ 0xf8, 0x2a, 0xd4, 0x53, 0x7e, 0x37, 0x43, 0xb2, 0xab, 0xdd, 0xbe, 0xc7,
+ 0x17, 0xb0, 0x38, 0x99, 0x96, 0x89, 0x29, 0x29, 0xe1, 0xb2, 0x8f, 0xd9,
+ 0xba, 0x8e, 0x26, 0x48, 0x1a, 0x4b, 0x5c, 0x7e, 0x2d, 0x7a, 0xee, 0x30,
+ 0xc9, 0xfb, 0x3d, 0xf4, 0x7f, 0xa1, 0xb1, 0xc5, 0xbf, 0xd5, 0x7f, 0xbd,
+ 0xbf, 0x95, 0x71, 0x9d, 0x62, 0xb9, 0xc7, 0xa2, 0xc1, 0xc3, 0x1c, 0xe6,
+ 0xfd, 0xfa, 0xad, 0xc7, 0xb7, 0x37, 0x2e, 0xaa, 0xfe, 0xcc, 0x1c, 0x7d,
+ 0x7a, 0x6b, 0x36, 0xed, 0xd0, 0x1d, 0xa3, 0x6f, 0xb8, 0xa4, 0xa7, 0x2b,
+ 0xac, 0xe3, 0x86, 0xe4, 0x37, 0x2e, 0x92, 0x20, 0x3c, 0x6e, 0x8d, 0x41,
+ 0x82, 0xba, 0x8a, 0x47, 0xa8, 0x0b, 0x1d, 0xa8, 0xb1, 0xa4, 0x10, 0x7c,
+ 0x08, 0x5c, 0xdf, 0x53, 0xae, 0xcc, 0x1e, 0x9e, 0xdc, 0x7b, 0x80, 0xde,
+ 0xe2, 0x40, 0x2d, 0xd4, 0x0d, 0x67, 0x53, 0xe2, 0xb7, 0xfa, 0x7b, 0xcb,
+ 0xea, 0xa9, 0xdc, 0x93, 0x58, 0x27, 0xe2, 0x40, 0x49, 0x4e, 0x7f, 0x43,
+ 0xa6, 0xca, 0x5b, 0x92, 0xc7, 0x83, 0x0d, 0xb3, 0x6f, 0x94, 0xb7, 0x42,
+ 0xaf, 0x9f, 0xb8, 0x2b, 0x2f, 0x68, 0x68, 0x0e, 0x00, 0x6e, 0x23, 0x5e,
+ 0xd2, 0x50, 0x1e, 0xe2, 0x49, 0x11, 0xa0, 0x11, 0x09, 0x29, 0xca, 0xea,
+ 0x1d, 0x22, 0x9c, 0x9f, 0x7d, 0x71, 0x5d, 0xc7, 0xb8, 0x1e, 0xd7, 0x7c,
+ 0x53, 0xe1, 0x32, 0xc7, 0xe3, 0xb7, 0x1f, 0x29, 0x9f, 0xcd, 0x1d, 0x8e,
+ 0x69, 0xd4, 0x38, 0x0e, 0x23, 0xc4, 0x2b, 0xee, 0x1d, 0xa0, 0x7f, 0x72,
+ 0x55, 0xd6, 0xe7, 0xbc, 0x36, 0xb0, 0x5c, 0xf3, 0xc0, 0x09, 0x29, 0x9e,
+ 0x16, 0x38, 0x60, 0x6e, 0x3d, 0x0d, 0x30, 0x3e, 0x88, 0xec, 0x04, 0xcf,
+ 0x7e, 0xcb, 0x4a, 0xeb, 0x1b, 0x53, 0x06, 0x35, 0x47, 0x76, 0xbf, 0xa5,
+ 0x7f, 0x8b, 0xbc, 0x10, 0x5a, 0x46, 0x2d, 0x7e, 0x95, 0x6e, 0x9b, 0x9d,
+ 0xf4, 0xde, 0x3b, 0x0f, 0x00, 0xad, 0xf4, 0xfc, 0x76, 0x98, 0xb9, 0xe3,
+ 0x40, 0x7d, 0x83, 0xc7, 0xcd, 0x25, 0x36, 0xf1, 0x28, 0xf4, 0x6a, 0xd7,
+ 0x47, 0xbb, 0x53, 0xe5, 0xe4, 0xab, 0x64, 0xbc, 0x4b, 0xbc, 0x79, 0x9e,
+ 0xea, 0xf3, 0xdc, 0x40, 0xf3, 0x59, 0x59, 0x2e, 0x1b, 0x88, 0xf8, 0x24,
+ 0xa6, 0xb3, 0x8b, 0x64, 0xc0, 0x8d, 0x54, 0xea, 0x22, 0x65, 0x0c, 0x99,
+ 0x33, 0xe2, 0x8d, 0x43, 0x7d, 0xc3, 0xbc, 0xa4, 0xa7, 0x58, 0xb2, 0x70,
+ 0x9c, 0x3f, 0x91, 0x23, 0xe5, 0xaa, 0xf3, 0xae, 0xbf, 0xbe, 0x9e, 0xa5,
+ 0x70, 0x60, 0x9f, 0xb4, 0xb4, 0x00, 0xdf, 0x1d, 0xd0, 0x0c, 0x7c, 0xc2,
+ 0xf4, 0xa6, 0x8f, 0xd0, 0x86, 0x78, 0x88, 0x3f, 0x72, 0xe0, 0xfe, 0xb1,
+ 0xba, 0xf1, 0x65, 0x35, 0xd2, 0x3d, 0xee, 0x79, 0x69, 0x20, 0x6a, 0x23,
+ 0xcf, 0xb7, 0x9a, 0x4a, 0x5b, 0x05, 0xe0, 0xd2, 0xd0, 0x79, 0x6f, 0xb4,
+ 0xfc, 0xb4, 0x5d, 0x66, 0x3f, 0xbb, 0x05, 0x9a, 0xf6, 0x5c, 0x57, 0x4d,
+ 0xb0, 0x97, 0xd9, 0x5b, 0xb8, 0x9d, 0xcb, 0xb3, 0xc3, 0x76, 0xec, 0x06,
+ 0xf9, 0x24, 0xa4, 0x6c, 0x24, 0xb4, 0x8e, 0xc0, 0xfe, 0x55, 0xc9, 0xf5,
+ 0x1a, 0x1a, 0xdc, 0xcb, 0x36, 0xc9, 0xb5, 0x84, 0xbc, 0x38, 0x18, 0xda,
+ 0xd7, 0x0d, 0x57, 0x59, 0x43, 0xbd, 0x8e, 0x69, 0x3c, 0xc8, 0xfb, 0xb5,
+ 0x5c, 0xd7, 0x5b, 0xa4, 0x9c, 0xf6, 0xbc, 0x1d, 0xad, 0x7b, 0x76, 0xbb,
+ 0xcf, 0x59, 0xfe, 0x29, 0x29, 0xa4, 0xd6, 0x7a, 0xe1, 0xd6, 0x35, 0xa1,
+ 0x8e, 0x70, 0x01, 0xcf, 0x76, 0xba, 0x37, 0xc1, 0x5b, 0xc5, 0xf4, 0x65,
+ 0xac, 0xca, 0x23, 0x26, 0xe6, 0x91, 0x1a, 0x98, 0x03, 0xe6, 0x7b, 0x26,
+ 0x66, 0x2d, 0x35, 0x88, 0xd2, 0xc8, 0x6c, 0xb4, 0x87, 0x69, 0x27, 0xc9,
+ 0x05, 0x95, 0xd6, 0xc7, 0x6e, 0x93, 0xbc, 0x13, 0xb9, 0xce, 0xf1, 0xf9,
+ 0xa4, 0xa6, 0xe5, 0x99, 0x0d, 0x60, 0x7d, 0x95, 0x63, 0x7b, 0x77, 0x10,
+ 0xf7, 0xb9, 0xd2, 0xe8, 0xfe, 0x43, 0x7c, 0x52, 0x6e, 0x4b, 0x9f, 0x58,
+ 0x2d, 0x86, 0xee, 0xd6, 0xa6, 0x07, 0x7b, 0x83, 0x7f, 0x95, 0xe0, 0x55,
+ 0x1e, 0xa0, 0x2e, 0x75, 0xed, 0x63, 0x5a, 0x5b, 0x61, 0xd5, 0xef, 0x9f,
+ 0x6c, 0x78, 0xe9, 0xa2, 0xa0, 0xeb, 0xb2, 0x85, 0x81, 0x8c, 0x97, 0x46,
+ 0x8e, 0x2e, 0x11, 0xa7, 0x8c, 0x24, 0xa6, 0xf6, 0x55, 0xb8, 0x75, 0x66,
+ 0x59, 0x79, 0x02, 0xd7, 0xba, 0x20, 0x49, 0xf8, 0x70, 0xa5, 0x5e, 0x5b,
+ 0xbd, 0x5f, 0x68, 0x74, 0x32, 0x08, 0xd7, 0xda, 0x7f, 0xd8, 0xa9, 0xbe,
+ 0x90, 0xf6, 0xb4, 0x90, 0xe0, 0x34, 0xdd, 0x6e, 0x92, 0x7c, 0x9a, 0x15,
+ 0xba, 0xf1, 0xd8, 0x2d, 0x2f, 0x7d, 0xaf, 0xfb, 0x3d, 0x60, 0x6d, 0xad,
+ 0xda, 0x7b, 0xbc, 0xe3, 0x94, 0x94, 0xcc, 0x5b, 0x93, 0xbc, 0x9f, 0x40,
+ 0xd8, 0x5f, 0x2e, 0xdd, 0x5e, 0xe0, 0x64, 0xf2, 0x61, 0x57, 0xfd, 0x97,
+ 0x91, 0xea, 0x7a, 0x9e, 0xa8, 0x9f, 0xa5, 0x1f, 0x9f, 0x1f, 0xde, 0xa7,
+ 0x6d, 0xfd, 0x48, 0xda, 0xc3, 0x8e, 0xe0, 0xda, 0xc9, 0xe5, 0xe4, 0x4f,
+ 0x9b, 0xa1, 0x1a, 0x68, 0xf4, 0xe7, 0x7b, 0xbd, 0x69, 0xdd, 0xf4, 0x87,
+ 0x3f, 0x14, 0x94, 0xbd, 0x81, 0xad, 0xa8, 0x12, 0x43, 0xac, 0x23, 0x6b,
+ 0x5b, 0xdb, 0x4e, 0x7e, 0x0a, 0xcf, 0xab, 0x45, 0x14, 0x55, 0x8e, 0xdb,
+ 0x85, 0xef, 0xb0, 0x4f, 0xa4, 0xcd, 0x5c, 0x49, 0xf1, 0x25, 0x54, 0xaa,
+ 0xa2, 0x1a, 0xdc, 0x8b, 0x1f, 0x5b, 0x1d, 0xba, 0x0f, 0xab, 0xdd, 0x91,
+ 0xc8, 0xf8, 0xa2, 0xd1, 0x8b, 0x8c, 0xf7, 0xba, 0xfb, 0x32, 0x98, 0xdc,
+ 0x6a, 0xc6, 0xd7, 0x59, 0x5e, 0x9a, 0x9f, 0xcd, 0x09, 0x29, 0x07, 0x51,
+ 0x77, 0x50, 0x8a, 0xf1, 0x45, 0x5e, 0x96, 0x2f, 0x0f, 0x87, 0xb4, 0x97,
+ 0x13, 0xfd, 0x55, 0x45, 0xd5, 0x55, 0xe9, 0xb1, 0xad, 0xb1, 0x86, 0xc0,
+ 0xf0, 0x1d, 0x49, 0x8f, 0x53, 0x4e, 0x7e, 0x88, 0x5b, 0x98, 0xbf, 0xb2,
+ 0xfd, 0x59, 0x37, 0x7a, 0xa5, 0xb3, 0xe9, 0x3c, 0x8d, 0x47, 0xc4, 0x19,
+ 0x0a, 0x93, 0x7a, 0x7b, 0xeb, 0xcd, 0xb6, 0xeb, 0x36, 0x32, 0xa7, 0x13,
+ 0xb5, 0xda, 0x6f, 0x20, 0xfe, 0xf4, 0x68, 0x12, 0x52, 0x1a, 0xeb, 0xc7,
+ 0xb2, 0xd2, 0x4e, 0x18, 0x24, 0xe8, 0xd2, 0x0c, 0x31, 0x80, 0x7e, 0x77,
+ 0x92, 0xb2, 0x72, 0xb1, 0xc5, 0xbe, 0x9b, 0xda, 0xd7, 0x30, 0x0d, 0x9b,
+ 0x44, 0xee, 0x69, 0x1f, 0x9e, 0x20, 0x6b, 0xf3, 0x56, 0x32, 0x7a, 0x6f,
+ 0x50, 0x6e, 0x1b, 0x47, 0x4f, 0x73, 0x5b, 0x4b, 0x89, 0x36, 0x69, 0x03,
+ 0xe0, 0xe9, 0xd5, 0x64, 0x86, 0x5f, 0x89, 0x67, 0xa7, 0x7b, 0xf5, 0x1f,
+ 0x4c, 0xb7, 0x59, 0xd7, 0x90, 0x92, 0x9b, 0xed, 0xae, 0xbc, 0x50, 0x6f,
+ 0xa1, 0xb3, 0x51, 0x3a, 0x58, 0x79, 0xf8, 0x2d, 0xaf, 0xa9, 0xcd, 0x16,
+ 0x65, 0xdf, 0x7e, 0xc7, 0xb5, 0xec, 0xad, 0xdb, 0xde, 0xf2, 0x60, 0x9b,
+ 0x1c, 0x36, 0xc3, 0x7e, 0x01, 0x72, 0xc2, 0xf0, 0xc9, 0x75, 0xcf, 0x2f,
+ 0x0d, 0x74, 0x34, 0x68, 0x41, 0x03, 0x5d, 0x57, 0x69, 0xf5, 0x4a, 0xec,
+ 0x7b, 0x3a, 0x66, 0x56, 0x5d, 0x2c, 0xd8, 0x0b, 0xf6, 0x4f, 0x33, 0xb1,
+ 0xb3, 0xcf, 0xf6, 0x92, 0x52, 0x3e, 0xb0, 0xe1, 0x90, 0x5d, 0x8a, 0xd7,
+ 0x6c, 0xc8, 0xb8, 0xb9, 0xf4, 0x3a, 0x60, 0x6e, 0xa8, 0x82, 0x35, 0xf3,
+ 0x4f, 0x43, 0xb2, 0x2c, 0xe9, 0x78, 0x15, 0x65, 0x69, 0x73, 0xf7, 0xfa,
+ 0x80, 0xe8, 0x75, 0x71, 0x68, 0xfc, 0x16, 0x6f, 0x59, 0xb1, 0xb9, 0x37,
+ 0xb3, 0x06, 0x81, 0xfa, 0xe3, 0x48, 0x7b, 0x6c, 0xe0, 0x01, 0xb4, 0xb8,
+ 0x89, 0xe5, 0x5f, 0x65, 0x97, 0x1a, 0x30, 0x3d, 0x69, 0xf5, 0x5a, 0xc6,
+ 0x07, 0xcf, 0x8c, 0xca, 0x4a, 0x79, 0xac, 0xfa, 0x4b, 0xb0, 0xad, 0x63,
+ 0x87, 0xba, 0xbb, 0x1c, 0xd8, 0xef, 0x20, 0x0f, 0xee, 0x5d, 0x1f, 0xd5,
+ 0x9b, 0x5b, 0x67, 0x45, 0xa4, 0xf7, 0x6c, 0xb5, 0xdf, 0x23, 0xa7, 0xe0,
+ 0xa8, 0xf5, 0x7c, 0x53, 0x59, 0xc8, 0x70, 0xfa, 0x36, 0xbc, 0x3c, 0x78,
+ 0x4e, 0xd2, 0x0f, 0xe2, 0x9f, 0xea, 0xab, 0xec, 0xc6, 0xc6, 0x7e, 0x3d,
+ 0xed, 0xda, 0x1e, 0xff, 0x00, 0xd1, 0x92, 0x44, 0x13, 0x06, 0x63, 0xee,
+ 0x49, 0x4d, 0x9e, 0xa7, 0x45, 0x77, 0x02, 0xd7, 0xb0, 0x38, 0x4f, 0x04,
+ 0x48, 0x4d, 0x86, 0xe3, 0xba, 0x3c, 0x87, 0xe0, 0xac, 0xe5, 0xb4, 0x1d,
+ 0xde, 0x67, 0x45, 0x47, 0x18, 0xed, 0xb4, 0x81, 0xf2, 0x49, 0x4e, 0x8f,
+ 0x2d, 0x20, 0xe8, 0xaa, 0xbf, 0x42, 0x67, 0x9f, 0x15, 0x66, 0xb7, 0x4c,
+ 0xcf, 0xde, 0xa4, 0xec, 0x17, 0x58, 0x0b, 0xde, 0xef, 0x4e, 0xa1, 0xcb,
+ 0x8f, 0x7f, 0x82, 0x4a, 0x73, 0xda, 0xc7, 0x5c, 0xf0, 0xc6, 0x6b, 0xe2,
+ 0x7b, 0x0f, 0x32, 0xac, 0xba, 0xfa, 0xb1, 0x5a, 0xea, 0x71, 0xce, 0xeb,
+ 0x4e, 0x8f, 0xb7, 0xc3, 0xc9, 0xa8, 0x77, 0xe4, 0x30, 0x37, 0xd2, 0xc7,
+ 0x6e, 0xd6, 0xf7, 0x77, 0x77, 0x25, 0x87, 0x88, 0xeb, 0x48, 0x7b, 0xf4,
+ 0xab, 0x9f, 0x37, 0x7c, 0x12, 0x52, 0x7e, 0x9f, 0x8a, 0xeb, 0xdc, 0x1c,
+ 0xed, 0x2b, 0x1f, 0x4b, 0x9f, 0x71, 0xf0, 0x5b, 0xad, 0x6b, 0x5b, 0x00,
+ 0x69, 0x03, 0x40, 0x81, 0x40, 0x6b, 0x18, 0xd6, 0xb4, 0x6d, 0x03, 0x88,
+ 0x08, 0xde, 0x63, 0xb2, 0x4a, 0x63, 0x73, 0x84, 0x13, 0xe0, 0xb3, 0x6f,
+ 0x20, 0xbd, 0xdf, 0x82, 0xbd, 0x90, 0xef, 0x61, 0x8d, 0x4a, 0xcc, 0xb1,
+ 0xd2, 0x60, 0x88, 0x49, 0x48, 0x9c, 0x4c, 0x8f, 0x82, 0xb5, 0x8e, 0x49,
+ 0x2d, 0x11, 0xdd, 0x55, 0xe4, 0x85, 0x73, 0x14, 0x7e, 0x91, 0xbe, 0x1d,
+ 0x92, 0x53, 0xae, 0xc1, 0xec, 0xd7, 0xb2, 0xe2, 0xfe, 0xb4, 0xb6, 0xfa,
+ 0xdd, 0x63, 0xb1, 0xe7, 0x7e, 0xf0, 0xe1, 0x1c, 0xed, 0x77, 0x2b, 0xb4,
+ 0x1a, 0x36, 0x17, 0x27, 0xf5, 0xac, 0x96, 0x56, 0xe7, 0x34, 0x6a, 0xe6,
+ 0x11, 0xf3, 0x06, 0x3f, 0x8a, 0x4a, 0x79, 0xce, 0x9a, 0xe2, 0x32, 0x9b,
+ 0xaf, 0xd2, 0x04, 0x2e, 0xe7, 0x00, 0x7e, 0xa3, 0xf0, 0x5e, 0x79, 0xd3,
+ 0xec, 0x86, 0x54, 0xfe, 0xec, 0x30, 0x7e, 0x45, 0x7a, 0x27, 0x4d, 0xf7,
+ 0x60, 0xe9, 0xdf, 0xfb, 0x92, 0x52, 0x2a, 0x74, 0x36, 0x48, 0xd0, 0x10,
+ 0x67, 0xc7, 0xc5, 0x60, 0x7d, 0x62, 0xc9, 0x7e, 0x1b, 0x85, 0xcd, 0x01,
+ 0xc2, 0x40, 0x2d, 0x77, 0x1a, 0xf9, 0xad, 0xd6, 0xc9, 0x7b, 0x98, 0x3b,
+ 0x82, 0x35, 0xf8, 0x2c, 0x9e, 0xb9, 0x8a, 0xcc, 0xcc, 0x57, 0x35, 0xe7,
+ 0x6e, 0x81, 0xdb, 0xb9, 0x8d, 0xba, 0xa4, 0xa7, 0x9e, 0xb3, 0xae, 0x35,
+ 0xc1, 0xa6, 0xb6, 0x34, 0x38, 0x89, 0x2c, 0x6b, 0x78, 0x3f, 0xd6, 0x52,
+ 0xa7, 0xed, 0x37, 0x3d, 0x84, 0xb4, 0xd8, 0xf3, 0xab, 0x1a, 0xed, 0x79,
+ 0xe7, 0x55, 0x59, 0x9d, 0x38, 0x3a, 0x5e, 0xc2, 0x5e, 0xc6, 0x38, 0x41,
+ 0x02, 0x34, 0xf9, 0x2d, 0x1e, 0x9e, 0xdb, 0x29, 0xb9, 0xc7, 0x73, 0xb6,
+ 0x1d, 0x76, 0x6e, 0x83, 0x3e, 0x09, 0x29, 0x3e, 0x36, 0x46, 0x05, 0x36,
+ 0x39, 0xf9, 0xd4, 0xbc, 0xed, 0x80, 0x41, 0x24, 0x89, 0x02, 0x47, 0xc9,
+ 0x4f, 0x3b, 0xeb, 0x0e, 0x15, 0xf4, 0xd8, 0xcc, 0x4c, 0x77, 0x58, 0x5c,
+ 0x00, 0x2e, 0x02, 0x36, 0x9e, 0xc2, 0x42, 0xa3, 0xd4, 0x32, 0xee, 0xdc,
+ 0xe6, 0xb9, 0xa4, 0x30, 0x8e, 0x20, 0x11, 0x3d, 0xa5, 0x46, 0x8c, 0x8b,
+ 0x71, 0xaf, 0x65, 0x78, 0xdb, 0x3d, 0x6b, 0x21, 0xce, 0xdb, 0xc1, 0xf9,
+ 0x0e, 0x12, 0x52, 0xe2, 0xdc, 0xcb, 0xf1, 0xdc, 0xca, 0x65, 0xb6, 0xc3,
+ 0x5f, 0x66, 0x85, 0xa5, 0xbb, 0x7b, 0xca, 0x07, 0xdb, 0x72, 0x72, 0xae,
+ 0x66, 0x33, 0xac, 0x63, 0x9b, 0x59, 0x86, 0xc0, 0x80, 0x5d, 0x1c, 0x92,
+ 0x39, 0x56, 0xf3, 0x3a, 0xbe, 0x7d, 0x6c, 0x76, 0x95, 0x12, 0xe3, 0x0f,
+ 0xf4, 0xe1, 0xce, 0x00, 0x76, 0x84, 0x1c, 0x6d, 0xef, 0xc9, 0x65, 0xad,
+ 0x6b, 0x68, 0x65, 0x84, 0x6e, 0x04, 0x82, 0x1a, 0xd3, 0xcb, 0xb4, 0x49,
+ 0x4a, 0x2c, 0xb2, 0x87, 0x8d, 0xd7, 0xef, 0xb2, 0xe6, 0x10, 0x59, 0xb2,
+ 0x43, 0x47, 0x94, 0xa0, 0x7d, 0x83, 0x33, 0x6f, 0xaf, 0xb7, 0xf4, 0x7c,
+ 0x6e, 0xef, 0x3f, 0x05, 0x7f, 0x26, 0xec, 0x96, 0xfa, 0x8f, 0xc5, 0x2c,
+ 0xb1, 0xb2, 0x43, 0x1f, 0xa0, 0x74, 0x1f, 0x19, 0x55, 0xfe, 0xdb, 0x9d,
+ 0x1e, 0x9e, 0xf1, 0xbb, 0xd3, 0x89, 0xd7, 0x7e, 0xe8, 0xfb, 0x92, 0x53,
+ 0x5d, 0xb8, 0xfd, 0x47, 0x26, 0x4b, 0xd8, 0x4b, 0xc8, 0xd0, 0xb5, 0x9b,
+ 0x88, 0x1e, 0x32, 0xad, 0xd6, 0xfa, 0x2a, 0xc4, 0x18, 0x45, 0xa3, 0xd3,
+ 0x0f, 0x0e, 0x24, 0x89, 0x7b, 0x9f, 0xf9, 0x11, 0x31, 0x05, 0xf5, 0xb9,
+ 0xde, 0x85, 0x82, 0xaa, 0x5c, 0x36, 0x58, 0x77, 0x10, 0xe3, 0x3e, 0x48,
+ 0xa7, 0x01, 0xee, 0x78, 0xda, 0x4b, 0xd9, 0x5e, 0x8d, 0x6e, 0x84, 0xc9,
+ 0xe4, 0xa4, 0xa6, 0xbb, 0x72, 0x05, 0x54, 0xe4, 0xbe, 0xc6, 0x0f, 0x53,
+ 0x46, 0x30, 0x4c, 0x01, 0xdb, 0x48, 0xe5, 0x36, 0x25, 0xb9, 0x16, 0xb1,
+ 0xcc, 0xca, 0xfa, 0x2d, 0x06, 0x5e, 0x64, 0x6f, 0x1e, 0x03, 0x45, 0x74,
+ 0xf4, 0xfa, 0x6a, 0xaa, 0x1a, 0x3d, 0x5b, 0x01, 0x04, 0xbc, 0x8d, 0x01,
+ 0xe7, 0xfd, 0x61, 0x06, 0xfc, 0x6b, 0x6f, 0x25, 0xb7, 0x59, 0xea, 0x39,
+ 0xc4, 0x6e, 0x63, 0x4c, 0x12, 0x3b, 0x7c, 0x02, 0x4a, 0x40, 0xde, 0xa9,
+ 0xd4, 0x09, 0x18, 0xb4, 0x5a, 0xda, 0xeb, 0x20, 0xb4, 0x86, 0x8d, 0xc7,
+ 0x6f, 0x3c, 0xbb, 0xc9, 0x57, 0x37, 0xd8, 0xfb, 0x0b, 0x2c, 0xad, 0xd0,
+ 0x3d, 0x81, 0xc6, 0x23, 0x5f, 0xe5, 0x79, 0xab, 0x78, 0xfd, 0x3e, 0xa7,
+ 0xd8, 0x5c, 0xea, 0xf6, 0x3d, 0xba, 0x02, 0x64, 0x08, 0x1e, 0x6a, 0xdb,
+ 0x71, 0x5b, 0x63, 0x41, 0x70, 0x0e, 0x6b, 0x0c, 0xfb, 0x4c, 0xeb, 0xf0,
+ 0x49, 0x4e, 0x43, 0xb0, 0x37, 0x34, 0x8d, 0x6b, 0x60, 0xd5, 0xc4, 0x90,
+ 0x4e, 0xab, 0xbb, 0xe8, 0x58, 0xec, 0xc2, 0xfa, 0xb1, 0x43, 0x18, 0x08,
+ 0xf5, 0x4b, 0x9e, 0x67, 0x93, 0xb9, 0xdc, 0xfd, 0xc1, 0x73, 0x76, 0xf4,
+ 0xfc, 0x1c, 0x86, 0x17, 0xdc, 0x5c, 0xd3, 0xc6, 0xa4, 0x81, 0xf8, 0x2e,
+ 0xbf, 0x22, 0xa1, 0x8d, 0xd3, 0xf1, 0x31, 0x40, 0xfa, 0x2c, 0x6b, 0x7f,
+ 0xcd, 0x68, 0x49, 0x4e, 0x17, 0x58, 0xa5, 0xcc, 0xc5, 0x67, 0x51, 0xc3,
+ 0x60, 0x39, 0x35, 0xbc, 0x97, 0xb9, 0xa2, 0x49, 0x6c, 0x6d, 0x33, 0xf0,
+ 0xf0, 0x45, 0xf5, 0x09, 0xab, 0x08, 0xb8, 0xcb, 0xf6, 0x56, 0x5e, 0x7c,
+ 0xe0, 0x12, 0xb3, 0xb3, 0xf2, 0xae, 0xe8, 0xec, 0xbf, 0x15, 0x85, 0xce,
+ 0x17, 0xfe, 0x9a, 0x8b, 0x0f, 0xe6, 0xb9, 0xc7, 0xdc, 0x0a, 0xd8, 0xb8,
+ 0xe1, 0x39, 0x95, 0x3e, 0xc7, 0xbf, 0xd4, 0x73, 0x18, 0x5d, 0x03, 0x49,
+ 0x20, 0x13, 0x12, 0x92, 0x91, 0xf5, 0x71, 0xba, 0xb7, 0x0f, 0x02, 0xab,
+ 0x74, 0xba, 0x99, 0x7d, 0x62, 0xb7, 0x82, 0x76, 0xb8, 0x39, 0xb0, 0x60,
+ 0x82, 0xd3, 0x2b, 0x5b, 0x38, 0xf4, 0xe7, 0x31, 0xe0, 0xb1, 0xee, 0x31,
+ 0xcf, 0xcb, 0xe2, 0xa9, 0x74, 0x8b, 0xb0, 0xab, 0xb1, 0xc6, 0xb6, 0xbf,
+ 0x78, 0x3e, 0xd9, 0xe0, 0x14, 0x94, 0xdc, 0xbb, 0x0e, 0xfb, 0x44, 0xb5,
+ 0x86, 0x3c, 0xf4, 0x54, 0x9b, 0x80, 0xea, 0xf2, 0x01, 0xb2, 0xc6, 0x56,
+ 0x3b, 0xeb, 0x2a, 0xf6, 0x4e, 0x55, 0xef, 0x06, 0x5e, 0x47, 0xc3, 0x41,
+ 0xf8, 0x2c, 0x9b, 0x18, 0xe7, 0x5a, 0x0b, 0x1a, 0x5c, 0x4f, 0xcd, 0x25,
+ 0x3a, 0xb5, 0x9c, 0x2a, 0x06, 0xed, 0xc6, 0xe7, 0x73, 0x1f, 0x9a, 0xa1,
+ 0x99, 0x7b, 0xef, 0xe7, 0x8e, 0xcc, 0x1c, 0x21, 0x63, 0x61, 0x64, 0xd8,
+ 0x01, 0x70, 0xd8, 0x3c, 0x5d, 0xa7, 0xe0, 0xb5, 0x68, 0xc4, 0x65, 0x2c,
+ 0xfd, 0xe7, 0xc7, 0xd2, 0x3f, 0xc1, 0x25, 0x39, 0x38, 0xf8, 0x3f, 0x9d,
+ 0x70, 0xe3, 0x86, 0x7f, 0x7a, 0xd0, 0x60, 0x1a, 0x0f, 0x92, 0x89, 0x23,
+ 0x79, 0x00, 0x6a, 0x34, 0x4f, 0x5c, 0x92, 0x92, 0x9b, 0x55, 0xc4, 0x4f,
+ 0xe4, 0x52, 0x74, 0xce, 0x9c, 0x79, 0xa5, 0x5f, 0xd1, 0x07, 0x84, 0x8e,
+ 0xae, 0x49, 0x48, 0x2e, 0x3e, 0xd8, 0x8d, 0x7b, 0xac, 0xcb, 0x49, 0xdd,
+ 0xf0, 0x5a, 0x36, 0x43, 0x2b, 0xf1, 0x3a, 0xf3, 0xf1, 0x59, 0xd6, 0x72,
+ 0x49, 0xf9, 0x24, 0xa6, 0x2d, 0x3a, 0x8d, 0x15, 0xec, 0x36, 0x93, 0x60,
+ 0x21, 0x51, 0x6f, 0x32, 0xb4, 0xb0, 0x5b, 0x3a, 0x94, 0x94, 0xe8, 0x47,
+ 0xb3, 0x45, 0xcb, 0x7d, 0x6d, 0x3b, 0x31, 0x5c, 0xf8, 0x92, 0xdd, 0xc4,
+ 0x7c, 0xc7, 0xfb, 0x17, 0x50, 0x67, 0x6c, 0x05, 0xcb, 0xfd, 0x6b, 0x3b,
+ 0x70, 0x2d, 0x79, 0x13, 0xb0, 0x83, 0xf7, 0xe8, 0x92, 0x9e, 0x2f, 0x0e,
+ 0xb7, 0x56, 0xd2, 0x1c, 0x7d, 0xcf, 0xf7, 0x06, 0x78, 0x79, 0xaf, 0x46,
+ 0xe8, 0x6e, 0xf5, 0x3a, 0x6d, 0x6e, 0xe6, 0x40, 0x9f, 0xb9, 0x79, 0x9e,
+ 0x21, 0xb2, 0xdc, 0x93, 0x61, 0x3c, 0x0d, 0x7e, 0x7a, 0x42, 0xf4, 0x4f,
+ 0xab, 0x0f, 0xdf, 0xd3, 0x0b, 0x7b, 0xb1, 0xc4, 0x7d, 0xfa, 0xa4, 0xa4,
+ 0xcd, 0xf6, 0xe5, 0x11, 0xe3, 0xa2, 0xa3, 0x96, 0xd9, 0x63, 0x99, 0xe4,
+ 0x46, 0xaa, 0xe5, 0x87, 0x6e, 0x48, 0xf3, 0x3f, 0xc5, 0x03, 0x25, 0x9f,
+ 0xa4, 0x23, 0x89, 0x49, 0x4f, 0x39, 0x7e, 0x6e, 0x43, 0x28, 0xfb, 0x16,
+ 0x2d, 0x61, 0xd5, 0x6a, 0xfb, 0x6d, 0x88, 0xe3, 0xf3, 0x41, 0x3e, 0x6a,
+ 0xbe, 0x26, 0x51, 0xba, 0xc6, 0xb1, 0xa1, 0xa1, 0xcf, 0x9f, 0x6b, 0x08,
+ 0xdf, 0xa7, 0x27, 0x71, 0x44, 0xca, 0xba, 0xea, 0x6e, 0xc8, 0xa2, 0xb8,
+ 0xd5, 0xc0, 0x6a, 0xdd, 0xda, 0x73, 0xc1, 0x41, 0x75, 0x45, 0xf7, 0x40,
+ 0xac, 0x57, 0x63, 0x8c, 0x92, 0xdf, 0x6b, 0x7e, 0x49, 0x29, 0x2f, 0xa6,
+ 0xe3, 0x64, 0xdc, 0x0d, 0x6d, 0x27, 0x69, 0x69, 0x13, 0xa0, 0xef, 0x23,
+ 0x94, 0x5c, 0x66, 0x62, 0xba, 0xd7, 0x58, 0xca, 0x3d, 0x2f, 0xcd, 0x69,
+ 0x27, 0xdc, 0x63, 0xc3, 0xc2, 0x54, 0x19, 0x8f, 0x92, 0xe7, 0x37, 0xd6,
+ 0x25, 0xb1, 0xa6, 0xbc, 0x01, 0xd8, 0x23, 0xfd, 0x8e, 0xdb, 0x5c, 0x43,
+ 0x49, 0x01, 0xbd, 0x80, 0xd0, 0x13, 0xf9, 0xc1, 0xc9, 0x29, 0x13, 0xaf,
+ 0xc6, 0x79, 0xb6, 0x8c, 0x7a, 0xeb, 0x0e, 0xac, 0x97, 0x1d, 0x36, 0xb9,
+ 0xda, 0x76, 0x27, 0xe9, 0x21, 0xd7, 0x7d, 0x0c, 0xad, 0xcf, 0x75, 0x63,
+ 0x7b, 0x81, 0x0e, 0xde, 0x60, 0x91, 0xfc, 0x9f, 0x0d, 0x51, 0x22, 0x8f,
+ 0x5c, 0xd7, 0x61, 0x25, 0xcc, 0x69, 0x07, 0x6f, 0xd1, 0x98, 0x8e, 0x53,
+ 0x5b, 0xd3, 0x71, 0xcb, 0x2a, 0x0f, 0x73, 0x89, 0x8d, 0xcd, 0xd7, 0x5d,
+ 0x7c, 0x49, 0x49, 0x4d, 0x6c, 0xd7, 0xef, 0x6d, 0x78, 0xec, 0xad, 0xcd,
+ 0x68, 0x1b, 0xe7, 0xdb, 0x00, 0x9f, 0x34, 0x0f, 0xb4, 0x5d, 0x1b, 0x61,
+ 0xbb, 0x62, 0x27, 0x5d, 0xf3, 0xe3, 0xb9, 0x5b, 0x38, 0x95, 0x32, 0xc3,
+ 0x6b, 0x05, 0x96, 0x6d, 0xd0, 0x87, 0xba, 0x44, 0x0f, 0x90, 0x94, 0xfe,
+ 0xb1, 0x98, 0xf4, 0x0c, 0x4c, 0xc4, 0x18, 0x49, 0x4c, 0xab, 0xad, 0xa5,
+ 0xec, 0x7d, 0x50, 0x31, 0xfb, 0xbb, 0xf3, 0x9c, 0x7b, 0xc0, 0x2a, 0xe3,
+ 0x2b, 0x6b, 0x9c, 0x5b, 0xbc, 0xb0, 0x10, 0x1c, 0xe0, 0xd3, 0x24, 0xc7,
+ 0x67, 0x25, 0x8f, 0xd3, 0x1c, 0xd7, 0xb9, 0xd7, 0x59, 0xb9, 0xcf, 0x00,
+ 0x11, 0x31, 0xf2, 0x84, 0x4b, 0xb1, 0xdd, 0x8c, 0x77, 0xd6, 0x37, 0x39,
+ 0xe2, 0x01, 0xf1, 0xfb, 0x92, 0x52, 0x62, 0xda, 0xa3, 0x77, 0xa9, 0xb0,
+ 0x46, 0x91, 0xc9, 0x8e, 0xca, 0xaf, 0xa4, 0xfa, 0xa6, 0xda, 0x9c, 0xda,
+ 0xe0, 0xcb, 0xec, 0x71, 0xed, 0x3e, 0x2a, 0x2d, 0x19, 0x3b, 0xff, 0x00,
+ 0x4b, 0x05, 0xce, 0xfa, 0x00, 0x02, 0x40, 0x1d, 0xe1, 0x4e, 0xe6, 0x3b,
+ 0xec, 0xcf, 0x7e, 0xc0, 0xf6, 0xb4, 0xc4, 0x3b, 0xb1, 0xec, 0x92, 0x90,
+ 0xd9, 0x75, 0x6e, 0xc8, 0xdd, 0x4b, 0xbd, 0x49, 0x1a, 0x44, 0xf2, 0x7b,
+ 0xeb, 0xa2, 0x2d, 0x6e, 0x70, 0x63, 0xc6, 0xe9, 0xba, 0x62, 0x47, 0xb5,
+ 0xa3, 0xe1, 0x1c, 0xa0, 0x52, 0xdd, 0xcf, 0x16, 0x39, 0xad, 0x1e, 0x90,
+ 0xd5, 0xad, 0x98, 0x93, 0xda, 0x3b, 0xa6, 0x79, 0xbd, 0x84, 0x39, 0xa7,
+ 0xf4, 0x87, 0xfc, 0x1b, 0x75, 0xda, 0x3c, 0xd2, 0x53, 0x62, 0xb6, 0xe4,
+ 0x65, 0xf5, 0x0c, 0x4c, 0x5a, 0x64, 0xd6, 0xfb, 0x58, 0x2d, 0x9e, 0x5c,
+ 0xd0, 0x44, 0x98, 0xf0, 0x5d, 0x6f, 0x5f, 0xc9, 0x66, 0x39, 0x75, 0xae,
+ 0x04, 0xb2, 0x86, 0x49, 0x03, 0x99, 0x71, 0xec, 0xb0, 0xfe, 0xa7, 0xd1,
+ 0xeb, 0xf5, 0x71, 0x71, 0xe2, 0xa6, 0x39, 0xfa, 0x49, 0x13, 0xf4, 0x63,
+ 0x71, 0xf8, 0xad, 0x8e, 0xad, 0x91, 0x8a, 0xcb, 0x1e, 0xec, 0xa8, 0xf4,
+ 0xad, 0x7f, 0xa7, 0xa8, 0x91, 0xe1, 0xaa, 0x4a, 0x71, 0x3e, 0xb0, 0xd4,
+ 0xfc, 0xfc, 0x5c, 0x43, 0x8e, 0xdd, 0xec, 0x71, 0x6b, 0x8b, 0xbb, 0x86,
+ 0xbb, 0x4f, 0xf7, 0xad, 0x3c, 0xbe, 0x95, 0x95, 0xa0, 0x6b, 0x44, 0x08,
+ 0x03, 0x5e, 0xc0, 0x40, 0x55, 0x71, 0x1f, 0x6d, 0x79, 0xa7, 0x07, 0x64,
+ 0xd2, 0x25, 0xd4, 0x3f, 0xc1, 0x80, 0xe9, 0xf1, 0x5d, 0x4e, 0x43, 0x04,
+ 0xa4, 0xa7, 0x22, 0xfe, 0x97, 0x90, 0xe1, 0x32, 0xd1, 0x20, 0x77, 0x3f,
+ 0xdc, 0xb3, 0xb0, 0x3a, 0x5d, 0xed, 0xc8, 0x70, 0xdc, 0xd8, 0x9e, 0x75,
+ 0x5d, 0x4b, 0xd9, 0xb9, 0xad, 0xf8, 0x05, 0x4a, 0x8a, 0xf6, 0xe4, 0x9f,
+ 0x89, 0x49, 0x4c, 0x9b, 0x85, 0x43, 0x1a, 0x0b, 0x9b, 0xb9, 0xdd, 0xc9,
+ 0xd7, 0x54, 0x1b, 0x18, 0x01, 0x88, 0x02, 0x3b, 0x0d, 0x16, 0x9b, 0x98,
+ 0x08, 0x8f, 0xc1, 0x56, 0xb9, 0x83, 0xfb, 0x92, 0x53, 0x5a, 0x9e, 0xf1,
+ 0xdb, 0xb2, 0xb4, 0x41, 0xda, 0x86, 0xca, 0xf5, 0xf8, 0xab, 0x5b, 0x7d,
+ 0xa7, 0xc9, 0x25, 0x39, 0xcf, 0xae, 0x09, 0xff, 0x00, 0x5e, 0x52, 0xad,
+ 0x92, 0xe1, 0xf8, 0xab, 0x0f, 0x68, 0x2e, 0xd4, 0x41, 0xf0, 0x53, 0xae,
+ 0xb1, 0xdd, 0x25, 0x29, 0xac, 0x21, 0xa1, 0x40, 0x80, 0x01, 0x9e, 0x15,
+ 0xa8, 0x80, 0x3c, 0xd0, 0x5f, 0xc1, 0xf3, 0x49, 0x4d, 0x1b, 0xfe, 0x81,
+ 0xd3, 0x4e, 0x02, 0xce, 0x7b, 0x4c, 0xe9, 0xc7, 0x75, 0xa7, 0x96, 0x24,
+ 0x06, 0x8e, 0xff, 0x00, 0xc1, 0x50, 0x78, 0x33, 0xf0, 0x49, 0x4c, 0x2b,
+ 0x6e, 0xbf, 0xdc, 0xb5, 0x30, 0xd8, 0x76, 0xcf, 0x0b, 0x92, 0xea, 0xbf,
+ 0x59, 0x31, 0xf1, 0xaa, 0x7d, 0x58, 0x4f, 0xdf, 0x95, 0x30, 0x1e, 0x04,
+ 0xb1, 0xbe, 0x3a, 0xf7, 0x2b, 0xac, 0xe8, 0x96, 0xfd, 0xa3, 0xa6, 0xe2,
+ 0xde, 0xe3, 0x26, 0xda, 0xda, 0xe2, 0x7c, 0x49, 0x1a, 0xa4, 0xa6, 0xdb,
+ 0x81, 0x8f, 0x05, 0xcb, 0xfd, 0x6f, 0x00, 0x74, 0xcc, 0x82, 0xef, 0x01,
+ 0xff, 0x00, 0x54, 0x17, 0x58, 0xf6, 0x88, 0x5c, 0x97, 0xd7, 0x72, 0x47,
+ 0x4c, 0xb0, 0x0e, 0x5c, 0xe6, 0x01, 0xfe, 0x72, 0x4a, 0x78, 0x36, 0x5a,
+ 0xe6, 0xd4, 0x29, 0xa7, 0x5b, 0x2c, 0x3e, 0xe2, 0x3f, 0x20, 0x5d, 0xff,
+ 0x00, 0xd5, 0x27, 0x91, 0x55, 0xb5, 0xbb, 0x42, 0x40, 0x74, 0x76, 0x91,
+ 0xa1, 0x5c, 0x1e, 0xf1, 0x88, 0xcd, 0x8c, 0x13, 0x92, 0xe1, 0xee, 0x77,
+ 0x3b, 0x67, 0xb0, 0xf3, 0x5d, 0x5f, 0xd5, 0x1c, 0x92, 0x31, 0xd9, 0x63,
+ 0xcc, 0x96, 0xbc, 0xb1, 0xe4, 0xf8, 0x79, 0xfc, 0x8a, 0x4a, 0x76, 0xf2,
+ 0xa5, 0x99, 0x2d, 0x3d, 0xa5, 0x3e, 0x63, 0x46, 0x8f, 0xf3, 0xe5, 0x13,
+ 0x2d, 0xbf, 0xa7, 0x93, 0xc1, 0xfc, 0x53, 0xe5, 0x30, 0x7a, 0x21, 0xc3,
+ 0xb8, 0x94, 0x94, 0xf3, 0xb9, 0xfe, 0x8d, 0x2e, 0x7b, 0xde, 0xd2, 0x0b,
+ 0xc7, 0xba, 0xc0, 0x95, 0x06, 0x8b, 0xda, 0xd0, 0xc3, 0xf4, 0x4f, 0xd2,
+ 0x7e, 0x87, 0xe4, 0xad, 0xe7, 0x51, 0xea, 0xd2, 0xd8, 0x8d, 0x4c, 0x12,
+ 0x56, 0x4d, 0x98, 0xcf, 0x63, 0x76, 0xd0, 0xe1, 0x0d, 0x9d, 0xc5, 0xdb,
+ 0xb5, 0x27, 0xc9, 0x25, 0x25, 0xea, 0x74, 0x1d, 0x1b, 0x5b, 0x8c, 0x11,
+ 0xa1, 0xe5, 0xa0, 0xa8, 0x57, 0x93, 0x76, 0x15, 0x6c, 0xaa, 0xc6, 0x9b,
+ 0x47, 0x62, 0x0a, 0x58, 0xd8, 0xaf, 0xaa, 0xa7, 0x3e, 0xe7, 0x3a, 0xca,
+ 0x9f, 0xae, 0xd7, 0x7e, 0x71, 0xf2, 0x09, 0x99, 0x98, 0x5d, 0x61, 0x6f,
+ 0xa5, 0xee, 0xaa, 0x00, 0x1e, 0x44, 0x4c, 0xc9, 0x49, 0x4d, 0xe6, 0xfa,
+ 0x76, 0xb3, 0xd5, 0xa8, 0x6d, 0x70, 0xfc, 0xd2, 0x20, 0x93, 0x1a, 0xaa,
+ 0x95, 0xd3, 0xeb, 0xda, 0x2c, 0xb1, 0xf6, 0x32, 0xce, 0x00, 0x9f, 0x6f,
+ 0xe4, 0xd1, 0x49, 0xf9, 0xe5, 0xec, 0x01, 0xaf, 0x0d, 0x78, 0x30, 0x5c,
+ 0x47, 0x0a, 0x54, 0xbb, 0x63, 0xb7, 0x18, 0x71, 0x26, 0x75, 0xe3, 0xe4,
+ 0x12, 0x53, 0x69, 0xaf, 0xa8, 0x45, 0x0e, 0x92, 0xef, 0xcc, 0x91, 0xed,
+ 0x3f, 0x35, 0x1f, 0x7f, 0xd0, 0x86, 0xcf, 0x8f, 0x68, 0x89, 0xe1, 0x41,
+ 0x9b, 0x8d, 0x8e, 0xbb, 0x74, 0xd7, 0x1e, 0xd0, 0x67, 0xf2, 0x20, 0xfa,
+ 0xef, 0xf5, 0x3d, 0x5d, 0xa2, 0x66, 0x7e, 0x89, 0xfb, 0xbe, 0xe4, 0x94,
+ 0xff, 0x00, 0xff, 0xd9
+};
+size_t demo_005_jpg_len = 20176;
+
+const uint8_t demo_006_jpg[] = {
+ 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01,
+ 0x02, 0x00, 0x00, 0x64, 0x00, 0x64, 0x00, 0x00, 0xff, 0xec, 0x00, 0x59,
+ 0x44, 0x75, 0x63, 0x6b, 0x79, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00,
+ 0x1e, 0x00, 0x02, 0x00, 0x44, 0x00, 0x00, 0x00, 0x20, 0x00, 0x46, 0x00,
+ 0x53, 0x00, 0x41, 0x00, 0x2f, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00,
+ 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x38, 0x00,
+ 0x62, 0x00, 0x33, 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00,
+ 0x5c, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00, 0x32, 0x00, 0x30, 0x00,
+ 0x38, 0x00, 0x31, 0x00, 0x61, 0x00, 0x2e, 0x00, 0x74, 0x00, 0x69, 0x00,
+ 0x66, 0x00, 0x00, 0xff, 0xee, 0x00, 0x0e, 0x41, 0x64, 0x6f, 0x62, 0x65,
+ 0x00, 0x64, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xdb, 0x00, 0x84, 0x00,
+ 0x10, 0x0b, 0x0b, 0x0b, 0x0c, 0x0b, 0x10, 0x0c, 0x0c, 0x10, 0x17, 0x0f,
+ 0x0d, 0x0f, 0x17, 0x1b, 0x14, 0x10, 0x10, 0x14, 0x1b, 0x1f, 0x17, 0x17,
+ 0x17, 0x17, 0x17, 0x1f, 0x1e, 0x17, 0x1a, 0x1a, 0x1a, 0x1a, 0x17, 0x1e,
+ 0x1e, 0x23, 0x25, 0x27, 0x25, 0x23, 0x1e, 0x2f, 0x2f, 0x33, 0x33, 0x2f,
+ 0x2f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x01, 0x11, 0x0f, 0x0f, 0x11, 0x13, 0x11, 0x15,
+ 0x12, 0x12, 0x15, 0x14, 0x11, 0x14, 0x11, 0x14, 0x1a, 0x14, 0x16, 0x16,
+ 0x14, 0x1a, 0x26, 0x1a, 0x1a, 0x1c, 0x1a, 0x1a, 0x26, 0x30, 0x23, 0x1e,
+ 0x1e, 0x1e, 0x1e, 0x23, 0x30, 0x2b, 0x2e, 0x27, 0x27, 0x27, 0x2e, 0x2b,
+ 0x35, 0x35, 0x30, 0x30, 0x35, 0x35, 0x40, 0x40, 0x3f, 0x40, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xff, 0xc0, 0x00,
+ 0x11, 0x08, 0x01, 0x90, 0x01, 0x2c, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11,
+ 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x01, 0x3f, 0x00, 0x00, 0x01, 0x05,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x03, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
+ 0x0b, 0x01, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x04, 0x05,
+ 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x01, 0x04, 0x01, 0x03,
+ 0x02, 0x04, 0x02, 0x05, 0x07, 0x06, 0x08, 0x05, 0x03, 0x0c, 0x33, 0x01,
+ 0x00, 0x02, 0x11, 0x03, 0x04, 0x21, 0x12, 0x31, 0x05, 0x41, 0x51, 0x61,
+ 0x13, 0x22, 0x71, 0x81, 0x32, 0x06, 0x14, 0x91, 0xa1, 0xb1, 0x42, 0x23,
+ 0x24, 0x15, 0x52, 0xc1, 0x62, 0x33, 0x34, 0x72, 0x82, 0xd1, 0x43, 0x07,
+ 0x25, 0x92, 0x53, 0xf0, 0xe1, 0xf1, 0x63, 0x73, 0x35, 0x16, 0xa2, 0xb2,
+ 0x83, 0x26, 0x44, 0x93, 0x54, 0x64, 0x45, 0xc2, 0xa3, 0x74, 0x36, 0x17,
+ 0xd2, 0x55, 0xe2, 0x65, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3,
+ 0x46, 0x27, 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5,
+ 0xb5, 0xc5, 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6,
+ 0xc6, 0xd6, 0xe6, 0xf6, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7,
+ 0xb7, 0xc7, 0xd7, 0xe7, 0xf7, 0x11, 0x00, 0x02, 0x02, 0x01, 0x02, 0x04,
+ 0x04, 0x03, 0x04, 0x05, 0x06, 0x07, 0x07, 0x06, 0x05, 0x35, 0x01, 0x00,
+ 0x02, 0x11, 0x03, 0x21, 0x31, 0x12, 0x04, 0x41, 0x51, 0x61, 0x71, 0x22,
+ 0x13, 0x05, 0x32, 0x81, 0x91, 0x14, 0xa1, 0xb1, 0x42, 0x23, 0xc1, 0x52,
+ 0xd1, 0xf0, 0x33, 0x24, 0x62, 0xe1, 0x72, 0x82, 0x92, 0x43, 0x53, 0x15,
+ 0x63, 0x73, 0x34, 0xf1, 0x25, 0x06, 0x16, 0xa2, 0xb2, 0x83, 0x07, 0x26,
+ 0x35, 0xc2, 0xd2, 0x44, 0x93, 0x54, 0xa3, 0x17, 0x64, 0x45, 0x55, 0x36,
+ 0x74, 0x65, 0xe2, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, 0x46,
+ 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, 0xb5, 0xc5,
+ 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6,
+ 0xe6, 0xf6, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, 0xb7,
+ 0xc7, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11,
+ 0x00, 0x3f, 0x00, 0xef, 0xd2, 0x51, 0x92, 0x53, 0x84, 0x94, 0xba, 0x75,
+ 0x14, 0xe9, 0x29, 0x74, 0x93, 0x4a, 0x52, 0x92, 0x97, 0x49, 0x32, 0x49,
+ 0x29, 0x74, 0x93, 0x26, 0x25, 0x25, 0x2e, 0x9d, 0x44, 0x14, 0xe9, 0x29,
+ 0x49, 0xd2, 0x4c, 0x92, 0x94, 0x92, 0x4a, 0x24, 0xa4, 0xa6, 0x49, 0x4a,
+ 0x86, 0xe4, 0xb7, 0x14, 0x94, 0xcd, 0x25, 0x0d, 0xc9, 0xe5, 0x25, 0x32,
+ 0x49, 0x46, 0x4a, 0x52, 0x92, 0x99, 0x24, 0xa1, 0xb9, 0x29, 0x49, 0x4c,
+ 0xd2, 0x50, 0x2e, 0x29, 0x6e, 0x49, 0x4c, 0xe5, 0x29, 0x50, 0xdc, 0x98,
+ 0x99, 0x49, 0x4c, 0xf7, 0x04, 0xb7, 0x84, 0x22, 0xa3, 0x25, 0x25, 0x26,
+ 0xde, 0x12, 0xde, 0x10, 0x24, 0xa7, 0x98, 0x49, 0x49, 0xb7, 0x84, 0xb7,
+ 0x84, 0x0d, 0xc5, 0x2d, 0xe5, 0x25, 0x27, 0xde, 0x97, 0xa8, 0x15, 0x70,
+ 0xe2, 0x52, 0x2e, 0x49, 0x4d, 0x8f, 0x50, 0x26, 0xf5, 0x02, 0x04, 0xa5,
+ 0xb8, 0xa4, 0xa4, 0xe0, 0xa7, 0xee, 0xa2, 0x01, 0x4f, 0xaa, 0x4a, 0x66,
+ 0x92, 0x60, 0x4a, 0x62, 0x52, 0x52, 0xa5, 0x38, 0x2a, 0x24, 0xa7, 0x6a,
+ 0x4a, 0x64, 0x92, 0x49, 0x24, 0xa5, 0x26, 0x22, 0x53, 0xa4, 0x92, 0x90,
+ 0xe4, 0xe4, 0xe3, 0xe1, 0xe3, 0xbf, 0x27, 0x25, 0xe2, 0xba, 0x6b, 0x12,
+ 0xf7, 0x9e, 0xdd, 0xbb, 0x2e, 0x43, 0x3f, 0xfc, 0x60, 0x5b, 0x5e, 0x55,
+ 0x94, 0xe1, 0xe1, 0xb6, 0xcc, 0x76, 0x98, 0x6d, 0xcf, 0x7b, 0x9a, 0x5c,
+ 0x3c, 0x43, 0x43, 0x74, 0x5b, 0xff, 0x00, 0x5a, 0x85, 0x7f, 0xb0, 0x72,
+ 0x8b, 0xc6, 0xe0, 0xd0, 0xd2, 0x04, 0x91, 0xae, 0xe6, 0x81, 0xc2, 0xf3,
+ 0xa6, 0x53, 0x0d, 0x24, 0xfd, 0x22, 0x23, 0x6f, 0x6d, 0x52, 0x53, 0x7e,
+ 0xaf, 0xad, 0x5f, 0x59, 0xe9, 0xaf, 0x65, 0x39, 0x0d, 0xba, 0xb6, 0x4e,
+ 0xc3, 0x73, 0x5a, 0xeb, 0x0b, 0x49, 0xd3, 0x73, 0xbb, 0x95, 0x2a, 0xfe,
+ 0xbc, 0x7d, 0x63, 0xa4, 0x87, 0x5e, 0x6b, 0xb1, 0xad, 0x32, 0xe6, 0xba,
+ 0xb0, 0xd2, 0x47, 0x84, 0xb6, 0x16, 0x53, 0xab, 0xb6, 0x91, 0xfb, 0xc1,
+ 0xdc, 0xb7, 0xc1, 0x35, 0x76, 0xc8, 0xdb, 0x63, 0x77, 0x57, 0xe0, 0x79,
+ 0x49, 0x4f, 0x55, 0x57, 0xf8, 0xc6, 0x17, 0x3e, 0xa6, 0x33, 0x14, 0x30,
+ 0xff, 0x00, 0x85, 0xdc, 0xe9, 0x9f, 0x26, 0x71, 0x1f, 0x35, 0xd7, 0xe2,
+ 0x65, 0x51, 0x9b, 0x8b, 0x5e, 0x56, 0x3b, 0xb7, 0x55, 0x68, 0x96, 0x9f,
+ 0xca, 0x0f, 0x98, 0x2b, 0xc7, 0x72, 0x70, 0xa9, 0x2e, 0xdf, 0x8c, 0xfd,
+ 0x8e, 0x1a, 0x86, 0x9f, 0xef, 0x5d, 0x47, 0xd4, 0x2e, 0xb9, 0x6d, 0x19,
+ 0x6e, 0xe9, 0x39, 0x9a, 0x33, 0x20, 0x97, 0x52, 0xe3, 0xc7, 0xa9, 0xdc,
+ 0x0f, 0xeb, 0x04, 0x94, 0xf7, 0xa7, 0x44, 0xd2, 0xa6, 0xe0, 0x86, 0x52,
+ 0x52, 0xe9, 0xc1, 0x51, 0x49, 0x25, 0x33, 0xdc, 0x9a, 0x54, 0x40, 0x4e,
+ 0x02, 0x4a, 0x51, 0x29, 0x25, 0xa2, 0x52, 0x92, 0x94, 0x98, 0x94, 0x89,
+ 0x51, 0x94, 0x94, 0xbc, 0xa5, 0x2a, 0x32, 0x94, 0xa4, 0xa6, 0x60, 0xa5,
+ 0x00, 0xa8, 0x02, 0x9f, 0x72, 0x4a, 0x5c, 0x85, 0x10, 0x09, 0xee, 0x9c,
+ 0x94, 0x92, 0x52, 0xe1, 0x80, 0xf2, 0x54, 0xbd, 0x06, 0xa4, 0xc1, 0xac,
+ 0x94, 0x42, 0xe0, 0x38, 0x49, 0x4d, 0x77, 0xd4, 0x5b, 0xa8, 0x4c, 0x02,
+ 0xb0, 0x4a, 0x81, 0x00, 0xa4, 0xa4, 0x25, 0xa4, 0x26, 0x44, 0x32, 0xa3,
+ 0x1f, 0x7a, 0x4a, 0x6c, 0x04, 0xe0, 0x26, 0x09, 0xe5, 0x25, 0x2e, 0xa2,
+ 0x53, 0xca, 0x62, 0x52, 0x52, 0xd1, 0xaa, 0x90, 0x50, 0x94, 0xb7, 0x24,
+ 0xa4, 0x89, 0xa5, 0x47, 0x72, 0x79, 0x49, 0x4c, 0xa5, 0x25, 0x09, 0xd5,
+ 0x65, 0x7d, 0x65, 0xea, 0xb9, 0x5d, 0x27, 0x0e, 0xbc, 0xac, 0x70, 0xd2,
+ 0x3d, 0x40, 0xdb, 0x0b, 0x81, 0x20, 0x02, 0x0c, 0x71, 0xe2, 0x52, 0x52,
+ 0x4f, 0xac, 0xc0, 0x1e, 0x87, 0x94, 0x0f, 0x83, 0x48, 0xf8, 0x87, 0xb5,
+ 0x79, 0xc0, 0xbb, 0x6b, 0xc9, 0x03, 0x53, 0xac, 0xf9, 0x2d, 0x8c, 0xcf,
+ 0xaf, 0x2e, 0xea, 0x38, 0x76, 0x61, 0xdf, 0x43, 0x18, 0x1e, 0x47, 0xbe,
+ 0xb7, 0xeb, 0xa1, 0x07, 0x87, 0x7c, 0x16, 0x43, 0x7a, 0x97, 0x4f, 0x6c,
+ 0x87, 0xb0, 0xb5, 0xbd, 0x8e, 0xdd, 0xee, 0xfc, 0xa9, 0x29, 0x15, 0x82,
+ 0xd7, 0x89, 0xd7, 0x69, 0xe3, 0xe0, 0x83, 0xb5, 0xed, 0x69, 0x31, 0xa1,
+ 0xee, 0x55, 0xab, 0xba, 0xde, 0x03, 0x49, 0x34, 0xd7, 0x63, 0xcf, 0xf2,
+ 0xa1, 0x83, 0xf8, 0xaa, 0x16, 0xf5, 0x66, 0x3f, 0xdb, 0xe8, 0x80, 0xde,
+ 0xf2, 0xe2, 0x7f, 0x22, 0x4a, 0x62, 0xe0, 0xe7, 0x48, 0x08, 0x4d, 0xb2,
+ 0xfa, 0x2d, 0x6d, 0xac, 0x25, 0xae, 0x61, 0x05, 0xae, 0x1d, 0x88, 0xe1,
+ 0x19, 0xbd, 0x4a, 0x90, 0xdd, 0xa2, 0xb6, 0x8f, 0x3d, 0x7f, 0xbd, 0x0e,
+ 0xcc, 0xb6, 0x3f, 0x96, 0xb4, 0xf9, 0x6b, 0xfd, 0xe9, 0x29, 0xf6, 0x4e,
+ 0x95, 0x9a, 0x3a, 0x87, 0x4c, 0xc6, 0xcc, 0x1a, 0xfa, 0xd5, 0xb5, 0xce,
+ 0xfe, 0xb4, 0x43, 0xbf, 0x15, 0x60, 0xb4, 0xaf, 0x33, 0xe8, 0x3f, 0x5e,
+ 0x6f, 0xe9, 0x18, 0xad, 0xc2, 0x76, 0x33, 0x6f, 0xc7, 0x61, 0x25, 0xb0,
+ 0xf2, 0xd7, 0x80, 0xe3, 0x24, 0x09, 0x04, 0x2e, 0xc3, 0xa2, 0xfd, 0x73,
+ 0xe9, 0x1d, 0x62, 0xd6, 0xe3, 0x33, 0x7e, 0x3e, 0x53, 0xfe, 0x8d, 0x56,
+ 0x8f, 0xa5, 0x1a, 0xfb, 0x5c, 0xd9, 0x05, 0x25, 0x3b, 0x27, 0x44, 0xd2,
+ 0x88, 0xe6, 0x28, 0x6d, 0x29, 0x29, 0x60, 0x53, 0xee, 0x4d, 0xb4, 0xa7,
+ 0x8d, 0x12, 0x52, 0xd2, 0x9a, 0x52, 0x4c, 0x92, 0x94, 0x4a, 0x69, 0x4f,
+ 0x0a, 0x29, 0x29, 0x49, 0x24, 0x99, 0x25, 0x2f, 0x2a, 0x40, 0x4a, 0x82,
+ 0x9b, 0x4a, 0x4a, 0x5f, 0x69, 0x52, 0x0d, 0xd1, 0x29, 0x4c, 0x5c, 0x7b,
+ 0x24, 0xa5, 0x11, 0x1d, 0xd2, 0x05, 0x36, 0xa5, 0x34, 0xa4, 0xa6, 0x73,
+ 0x29, 0xa0, 0x85, 0x10, 0xee, 0xc9, 0xc9, 0x49, 0x4b, 0xea, 0x9f, 0x48,
+ 0x95, 0x19, 0x4d, 0x29, 0x29, 0x34, 0x27, 0x51, 0x05, 0x29, 0x49, 0x4b,
+ 0x92, 0x98, 0x94, 0xc4, 0xa6, 0x29, 0x29, 0x69, 0x4a, 0x53, 0x4a, 0x64,
+ 0x94, 0xbc, 0xa7, 0xde, 0xa0, 0x92, 0x4a, 0x48, 0x0e, 0xa9, 0xef, 0xc7,
+ 0xa3, 0x2b, 0x1d, 0xf8, 0xf9, 0x0c, 0x16, 0x53, 0x68, 0xda, 0xf6, 0x1e,
+ 0x08, 0x2a, 0x00, 0xc2, 0x9b, 0x5c, 0x52, 0x53, 0xc0, 0x75, 0xdf, 0xf1,
+ 0x79, 0x91, 0x51, 0x76, 0x47, 0x4c, 0xb5, 0xaf, 0xa5, 0xa0, 0xb9, 0xd5,
+ 0xd8, 0x61, 0xed, 0x68, 0xd4, 0xc1, 0xe1, 0xd0, 0x3e, 0x0b, 0x95, 0x77,
+ 0x4d, 0x7d, 0x7b, 0x89, 0x71, 0x31, 0xa0, 0x5e, 0xbd, 0xd7, 0x72, 0x46,
+ 0x3f, 0x4a, 0xbd, 0xd3, 0xab, 0xdb, 0xe9, 0xb7, 0xe2, 0xed, 0x3f, 0x22,
+ 0xf3, 0x8b, 0x06, 0xfd, 0x00, 0xe5, 0x25, 0x3c, 0xf0, 0xc7, 0xb5, 0xd6,
+ 0x0a, 0xc0, 0x3b, 0x8a, 0xb4, 0xde, 0x92, 0xfd, 0x0b, 0xdd, 0xb6, 0x7b,
+ 0xf2, 0xb7, 0x29, 0xe9, 0xcc, 0xac, 0x7d, 0xa9, 0xef, 0x1a, 0x92, 0x03,
+ 0x7c, 0x41, 0x48, 0x34, 0x5d, 0x64, 0x70, 0x07, 0x10, 0x92, 0x9c, 0x9f,
+ 0xd8, 0xdb, 0x40, 0x74, 0x97, 0x0f, 0x14, 0x5b, 0xba, 0x55, 0x15, 0xe2,
+ 0x0b, 0x5c, 0x0e, 0xf3, 0x20, 0x46, 0xba, 0xc7, 0x75, 0xab, 0x60, 0xb2,
+ 0x90, 0x18, 0xe0, 0x87, 0x9a, 0x28, 0x38, 0xec, 0x97, 0xea, 0x4c, 0x40,
+ 0x31, 0xaa, 0x4a, 0x79, 0x8b, 0xab, 0x75, 0x56, 0x9a, 0xc4, 0xcb, 0x62,
+ 0x7e, 0x2b, 0xa5, 0xfa, 0x93, 0xd0, 0x73, 0xf3, 0x7a, 0x9d, 0x1d, 0x41,
+ 0xad, 0xf4, 0xf0, 0xf1, 0xac, 0x0e, 0x7d, 0x84, 0x8d, 0x5c, 0xcd, 0x76,
+ 0x81, 0xca, 0xa7, 0x60, 0xac, 0xd0, 0xec, 0x66, 0x52, 0x1d, 0x93, 0x7b,
+ 0xb7, 0xb6, 0xd9, 0xf7, 0x00, 0x06, 0xa0, 0x83, 0xd9, 0x77, 0xbf, 0x51,
+ 0xba, 0x3b, 0xfa, 0x6f, 0x48, 0xf5, 0x6e, 0x91, 0x7e, 0x69, 0x16, 0xb9,
+ 0xbf, 0xba, 0xc8, 0xf6, 0x0f, 0x8c, 0x6b, 0xf3, 0x49, 0x4f, 0x46, 0x54,
+ 0x61, 0x27, 0x14, 0xc0, 0xa4, 0xa5, 0xe0, 0x21, 0xbb, 0x52, 0x88, 0x4a,
+ 0x1f, 0x74, 0x94, 0xc4, 0x85, 0x15, 0x32, 0xa2, 0x92, 0x94, 0x98, 0xea,
+ 0x9d, 0x32, 0x4a, 0x59, 0x24, 0xe9, 0x92, 0x52, 0xca, 0x40, 0xf8, 0x26,
+ 0x29, 0x24, 0xa5, 0xe6, 0x53, 0x84, 0xc1, 0x3c, 0xa4, 0xa5, 0xca, 0x89,
+ 0x4a, 0x53, 0x4a, 0x4a, 0x52, 0x79, 0x4c, 0x96, 0xa9, 0x29, 0x90, 0x29,
+ 0x48, 0x50, 0x94, 0xa5, 0x25, 0x26, 0x4a, 0x54, 0x65, 0x3c, 0xa4, 0xa6,
+ 0x5a, 0x26, 0x29, 0x92, 0x49, 0x4b, 0x15, 0x12, 0xa4, 0x9a, 0x12, 0x53,
+ 0x14, 0x94, 0xc3, 0x53, 0xfa, 0x7a, 0x24, 0xa6, 0x0a, 0x5b, 0x9a, 0xc0,
+ 0x5e, 0xf3, 0xb5, 0xad, 0xd4, 0x93, 0xd9, 0x0a, 0xdb, 0xea, 0xa4, 0x02,
+ 0xf7, 0x72, 0x76, 0x81, 0xdc, 0x9f, 0x00, 0x15, 0x5c, 0x8a, 0x3a, 0x86,
+ 0x70, 0xd8, 0x03, 0x71, 0xf1, 0xf9, 0xfd, 0x24, 0x97, 0x9f, 0x8b, 0x5b,
+ 0xfc, 0x4a, 0x4a, 0x73, 0x7a, 0xc6, 0x78, 0xce, 0x21, 0x8d, 0x11, 0x8e,
+ 0xc9, 0x89, 0xe5, 0xc7, 0xc5, 0x73, 0x57, 0xb5, 0x94, 0x35, 0xd0, 0x41,
+ 0x20, 0xc8, 0xf8, 0x2e, 0xbe, 0xcf, 0xab, 0xd6, 0x38, 0x0d, 0xb7, 0x87,
+ 0x8e, 0xed, 0xd9, 0xb7, 0x48, 0xed, 0xee, 0xf1, 0x5c, 0x9f, 0xd6, 0x7e,
+ 0x95, 0x99, 0xd3, 0xdc, 0xdb, 0xcf, 0xba, 0xa7, 0x48, 0x7c, 0x72, 0xdf,
+ 0x02, 0x7e, 0x29, 0x29, 0xc6, 0xb7, 0x31, 0xee, 0x78, 0x64, 0x9d, 0x80,
+ 0xab, 0xfd, 0x33, 0x22, 0xba, 0xac, 0x75, 0xb6, 0x7b, 0xb6, 0x8f, 0x68,
+ 0xf1, 0x2b, 0x05, 0xd6, 0xfb, 0x89, 0x45, 0x66, 0x64, 0x34, 0xc7, 0x82,
+ 0x4a, 0x76, 0xb2, 0xb3, 0x9b, 0x7b, 0x9c, 0x4b, 0x83, 0x67, 0xb9, 0x55,
+ 0x32, 0xeb, 0xdd, 0x43, 0xed, 0xa2, 0xed, 0x86, 0xa6, 0x17, 0x38, 0x0d,
+ 0x77, 0x00, 0xaa, 0x32, 0xd2, 0xd8, 0x3b, 0x77, 0xcf, 0x32, 0x27, 0x55,
+ 0x1e, 0xa2, 0xf9, 0x2c, 0x63, 0x07, 0xa6, 0x1c, 0xc9, 0x7b, 0x40, 0x8d,
+ 0x7e, 0x23, 0xb2, 0x4a, 0x74, 0xba, 0x4d, 0x55, 0x3f, 0xa8, 0xe0, 0x5b,
+ 0x92, 0x05, 0x8d, 0x2e, 0xac, 0x92, 0x7b, 0x87, 0x3b, 0x83, 0xf7, 0xaf,
+ 0x5a, 0xe0, 0x2f, 0x1e, 0xc2, 0xb1, 0xcd, 0xc6, 0xc5, 0xb3, 0xbd, 0x6e,
+ 0x22, 0x7f, 0xaa, 0xed, 0xc1, 0x7a, 0xf3, 0x5e, 0x1f, 0x53, 0x5e, 0x38,
+ 0x70, 0x0e, 0x1f, 0x31, 0x29, 0x29, 0x8b, 0x8e, 0xa9, 0x4a, 0x89, 0x29,
+ 0x4a, 0x4a, 0x65, 0x29, 0xa5, 0x34, 0xa6, 0x25, 0x25, 0x2e, 0x99, 0x32,
+ 0x49, 0x29, 0x49, 0x93, 0xa6, 0x49, 0x4a, 0x4d, 0x29, 0x24, 0x92, 0x94,
+ 0x92, 0x78, 0x49, 0x25, 0x2c, 0x92, 0x74, 0xa1, 0x25, 0x2c, 0x99, 0x49,
+ 0x28, 0x49, 0x4c, 0x52, 0x4f, 0x09, 0x24, 0xa5, 0xa1, 0x34, 0x29, 0x24,
+ 0x92, 0x99, 0xa4, 0x9a, 0x52, 0x05, 0x25, 0x32, 0x4e, 0xa3, 0x29, 0x4a,
+ 0x4a, 0x51, 0x49, 0x34, 0xa7, 0x49, 0x4a, 0x05, 0x07, 0x3f, 0x30, 0xe2,
+ 0x62, 0xba, 0xd6, 0xb7, 0x7d, 0xa6, 0x19, 0x4d, 0x63, 0x97, 0xd8, 0xed,
+ 0x1a, 0x11, 0x90, 0x6e, 0x0d, 0x73, 0x98, 0xf7, 0x09, 0x75, 0x73, 0xb2,
+ 0x7b, 0x13, 0xa1, 0x29, 0x29, 0xad, 0x85, 0x8f, 0xf6, 0x56, 0x8b, 0x32,
+ 0x0f, 0xab, 0x96, 0xe9, 0x2e, 0x71, 0xd7, 0x69, 0x76, 0xae, 0x0d, 0x56,
+ 0x7d, 0x77, 0x14, 0x22, 0xe0, 0x4c, 0x95, 0x12, 0xf0, 0x12, 0x52, 0x71,
+ 0x68, 0x08, 0x59, 0xd8, 0xd4, 0xf5, 0x2c, 0x47, 0xe3, 0xd9, 0xa1, 0x70,
+ 0x21, 0xae, 0xe6, 0x0a, 0x0b, 0xad, 0x00, 0x49, 0x2a, 0xb7, 0xda, 0xf6,
+ 0xba, 0x67, 0xe0, 0x3c, 0x92, 0x53, 0xe6, 0xf9, 0x9d, 0x13, 0x3e, 0x9e,
+ 0xb2, 0x7a, 0x55, 0x75, 0x39, 0xd6, 0xd8, 0xfd, 0xb4, 0x02, 0x3e, 0x9b,
+ 0x4f, 0x0e, 0x9e, 0x22, 0x17, 0x61, 0x4f, 0xf8, 0xb1, 0xc7, 0xfb, 0x19,
+ 0x17, 0xe6, 0xbf, 0xed, 0xa5, 0xba, 0x16, 0x01, 0xe9, 0x35, 0xde, 0x1b,
+ 0x4f, 0xb9, 0xc3, 0xe6, 0x16, 0x9b, 0xb3, 0xa8, 0xaf, 0x32, 0xac, 0x97,
+ 0xd6, 0x1e, 0xfc, 0x72, 0xed, 0x8e, 0x03, 0xdc, 0x1a, 0xe1, 0x0e, 0x00,
+ 0xfc, 0x17, 0x4a, 0xc7, 0x07, 0xb5, 0xaf, 0x69, 0x96, 0xb8, 0x02, 0x0f,
+ 0x91, 0xd5, 0x25, 0x3e, 0x63, 0xd5, 0xfe, 0xac, 0xd9, 0xf5, 0x79, 0xd5,
+ 0x01, 0x94, 0x32, 0x1b, 0x78, 0x21, 0xad, 0xdb, 0xb4, 0x82, 0x22, 0x4f,
+ 0x27, 0xc5, 0x63, 0x75, 0x06, 0x01, 0x79, 0xfe, 0x48, 0x03, 0xe7, 0x01,
+ 0x7a, 0x8f, 0x5e, 0xe9, 0xb8, 0x1d, 0x43, 0xd3, 0x39, 0x13, 0xbe, 0xaf,
+ 0xa2, 0xe6, 0x98, 0x22, 0x75, 0xf8, 0x2f, 0x3c, 0xeb, 0xfd, 0x2a, 0xec,
+ 0x3b, 0x8d, 0x8d, 0x77, 0xad, 0x49, 0x24, 0xef, 0x02, 0x0b, 0x7f, 0xac,
+ 0x12, 0x52, 0x56, 0xe3, 0x06, 0xfd, 0x5e, 0xc3, 0xc8, 0x8f, 0xa5, 0x75,
+ 0xcd, 0x27, 0xe0, 0x5b, 0x0b, 0xd1, 0xba, 0x3d, 0xfe, 0xbf, 0x47, 0xc4,
+ 0xb7, 0x92, 0x6a, 0x68, 0x3f, 0x16, 0xfb, 0x7f, 0x82, 0xe3, 0xc6, 0x30,
+ 0x77, 0xd4, 0x5c, 0x5b, 0x3b, 0xb2, 0xe7, 0x38, 0xff, 0x00, 0x69, 0xce,
+ 0x6a, 0xe8, 0x7e, 0xa6, 0xdb, 0xea, 0xf4, 0x36, 0x30, 0x9d, 0x6a, 0xb1,
+ 0xec, 0xf9, 0x4e, 0xef, 0xe2, 0x92, 0x9d, 0x72, 0x53, 0x4a, 0x93, 0x9a,
+ 0xa2, 0x42, 0x4a, 0x5a, 0x52, 0x94, 0xa1, 0x38, 0x69, 0x49, 0x4a, 0x4a,
+ 0x53, 0xed, 0x25, 0x3f, 0xa6, 0x92, 0x98, 0xa4, 0xa4, 0x18, 0x9f, 0xd3,
+ 0x49, 0x48, 0xd3, 0x29, 0x96, 0x15, 0x12, 0x08, 0xe5, 0x25, 0x29, 0x28,
+ 0x4e, 0x92, 0x4a, 0x52, 0x49, 0x93, 0xa4, 0xa5, 0x8a, 0x64, 0xe9, 0x24,
+ 0xa5, 0x92, 0x49, 0x28, 0x94, 0x94, 0xb2, 0x4a, 0x5b, 0x0c, 0x48, 0x4d,
+ 0x07, 0xc1, 0x25, 0x2d, 0x29, 0x4a, 0x64, 0xbc, 0xd2, 0x53, 0x29, 0x4a,
+ 0x53, 0x27, 0x09, 0x29, 0x74, 0x81, 0x49, 0x3a, 0x4a, 0x58, 0x95, 0x5a,
+ 0xc7, 0xcc, 0xa3, 0xd9, 0xf4, 0x55, 0x57, 0x38, 0x14, 0x94, 0xc0, 0x38,
+ 0x13, 0x07, 0x8e, 0xe5, 0x01, 0xce, 0x75, 0xf5, 0x3c, 0xd6, 0x4b, 0x01,
+ 0x3b, 0x6b, 0x70, 0xe7, 0xcc, 0xea, 0x9b, 0x22, 0xcd, 0xb5, 0xd9, 0x06,
+ 0x0c, 0x47, 0xdf, 0xa2, 0xa9, 0xd5, 0x33, 0xbe, 0xc7, 0xd3, 0x1d, 0x65,
+ 0x62, 0x1c, 0x40, 0xaa, 0x9f, 0xeb, 0x3b, 0x49, 0xf9, 0x0d, 0x52, 0x53,
+ 0x26, 0x75, 0x0c, 0x3b, 0xee, 0xbb, 0x11, 0x8f, 0x26, 0xea, 0x7e, 0x99,
+ 0x23, 0xda, 0x48, 0xd1, 0xdb, 0x4f, 0x92, 0x15, 0xaf, 0xec, 0x3e, 0x88,
+ 0xee, 0x56, 0x3f, 0x44, 0xa2, 0xc7, 0xe6, 0xed, 0xd4, 0x9d, 0x86, 0x5d,
+ 0xcf, 0x82, 0xdb, 0x7d, 0x13, 0x0d, 0x26, 0x24, 0x13, 0xe7, 0xa2, 0x4a,
+ 0x6a, 0x5e, 0xc3, 0xba, 0xb7, 0x70, 0x01, 0x04, 0xc7, 0x71, 0xc1, 0x0b,
+ 0xa3, 0xfa, 0xbd, 0x69, 0x38, 0x1e, 0x83, 0x9c, 0x0b, 0xb1, 0x9c, 0x6b,
+ 0xfe, 0xc8, 0xd5, 0x9f, 0x82, 0xc0, 0x7d, 0x64, 0xd0, 0x1d, 0x3a, 0x83,
+ 0x1f, 0x25, 0x4b, 0x13, 0xab, 0xdd, 0x81, 0xd7, 0xfd, 0x19, 0x9a, 0x2f,
+ 0xad, 0xa6, 0xde, 0xe0, 0x72, 0xd0, 0x61, 0x25, 0x3d, 0x3e, 0x75, 0xde,
+ 0xff, 0x00, 0xd2, 0x44, 0x38, 0xed, 0x0e, 0x00, 0x81, 0xfd, 0x57, 0x4f,
+ 0xe0, 0xb9, 0x4c, 0xfb, 0xda, 0x32, 0x0b, 0x0c, 0xba, 0xa3, 0xa7, 0x98,
+ 0xf2, 0xf3, 0x5d, 0x0f, 0x51, 0x6b, 0x9d, 0x4b, 0x9e, 0x60, 0xb7, 0x87,
+ 0xb4, 0x68, 0xd7, 0x8f, 0x21, 0x3c, 0x85, 0xcb, 0x64, 0x3b, 0x75, 0x8e,
+ 0x61, 0xfe, 0x71, 0x9e, 0xe0, 0x4f, 0xe7, 0x33, 0xf7, 0xbf, 0xbd, 0x25,
+ 0x3a, 0x6d, 0xcf, 0xad, 0xbd, 0x0e, 0xee, 0x94, 0xea, 0xc3, 0x6b, 0xda,
+ 0x5d, 0x8f, 0x63, 0x66, 0x37, 0x6e, 0xdf, 0x0e, 0x0a, 0xe7, 0xd4, 0x1b,
+ 0x7f, 0x57, 0xcb, 0xc7, 0x3c, 0xb5, 0xed, 0x78, 0x1f, 0x10, 0x47, 0xf0,
+ 0x54, 0x3a, 0x1e, 0x0d, 0x9d, 0x41, 0xee, 0xa1, 0xe2, 0x19, 0x5b, 0x5c,
+ 0x5e, 0x47, 0x81, 0x1e, 0xd1, 0xf3, 0x2a, 0x7f, 0x52, 0x1d, 0xe9, 0xf5,
+ 0x5b, 0x98, 0x4f, 0xf3, 0x95, 0x10, 0x47, 0x9b, 0x48, 0x3f, 0xde, 0x92,
+ 0x9e, 0xd5, 0xc1, 0x40, 0x84, 0x57, 0x28, 0x24, 0xa6, 0x21, 0xaa, 0x60,
+ 0x00, 0x14, 0x65, 0x4a, 0x52, 0x52, 0xe2, 0x13, 0x73, 0xf0, 0x4c, 0xa4,
+ 0x12, 0x52, 0xa0, 0x04, 0xda, 0xa9, 0x24, 0x52, 0x53, 0x04, 0xa2, 0x74,
+ 0x48, 0x94, 0x9a, 0x75, 0xd1, 0x25, 0x2d, 0xe9, 0x28, 0x96, 0x10, 0x8d,
+ 0x29, 0x8c, 0x24, 0xa4, 0x29, 0x94, 0xdc, 0x14, 0x52, 0x52, 0xca, 0x4d,
+ 0x6c, 0xa6, 0x53, 0x60, 0x10, 0x92, 0x96, 0x73, 0x34, 0xf3, 0x4c, 0x2b,
+ 0x70, 0x12, 0xa7, 0x2a, 0x40, 0xa4, 0xa6, 0x03, 0x40, 0x9f, 0x45, 0x23,
+ 0xaa, 0x68, 0x49, 0x4d, 0x72, 0x21, 0x32, 0x22, 0x6d, 0xa1, 0x25, 0x30,
+ 0x09, 0xd4, 0xb6, 0x84, 0xb6, 0x84, 0x94, 0xc6, 0x53, 0xca, 0x96, 0xd0,
+ 0x9b, 0x6a, 0x4a, 0x47, 0x69, 0xf6, 0x15, 0x9c, 0xeb, 0x08, 0x30, 0xb4,
+ 0x32, 0x04, 0x31, 0x66, 0xda, 0x35, 0x49, 0x48, 0x2e, 0x3e, 0xa3, 0x1e,
+ 0xc9, 0xd1, 0xc3, 0xb7, 0x20, 0xf2, 0xb3, 0xba, 0xf5, 0x39, 0x79, 0x19,
+ 0x38, 0xf8, 0xd5, 0x54, 0x5d, 0x45, 0x2d, 0x2e, 0x24, 0x44, 0x6f, 0x77,
+ 0xf7, 0x05, 0x78, 0x56, 0x4e, 0x43, 0x63, 0xc7, 0x5f, 0x82, 0x33, 0xe8,
+ 0xac, 0x9f, 0x50, 0xe8, 0x27, 0x93, 0xcb, 0x8a, 0x4a, 0x43, 0xd1, 0xf0,
+ 0xec, 0xc2, 0xc5, 0xb6, 0xdb, 0xe0, 0x3d, 0xda, 0x86, 0x83, 0x3b, 0x47,
+ 0xc7, 0xcd, 0x20, 0xe2, 0x59, 0x65, 0x87, 0xb3, 0x43, 0x47, 0xcd, 0x1f,
+ 0x29, 0xfb, 0x31, 0xb6, 0x8e, 0x5e, 0x60, 0x0f, 0x82, 0x09, 0xf6, 0xe2,
+ 0xed, 0xee, 0x4a, 0x4a, 0x47, 0x3f, 0xaa, 0x3f, 0xef, 0xfb, 0x96, 0x0e,
+ 0x60, 0x6d, 0x7d, 0x67, 0xa7, 0x64, 0x3c, 0xec, 0x65, 0x92, 0xc7, 0x98,
+ 0xd3, 0x43, 0x31, 0xf8, 0xae, 0x83, 0x6c, 0xe3, 0xbc, 0x7f, 0x24, 0xfe,
+ 0x45, 0xcd, 0x7d, 0x62, 0x70, 0x38, 0x98, 0xb6, 0x34, 0xfb, 0xab, 0xb2,
+ 0x01, 0xf2, 0x2d, 0x49, 0x4e, 0xce, 0x7b, 0x45, 0x39, 0xfb, 0x5b, 0x7e,
+ 0xe0, 0xe6, 0x7a, 0x95, 0xd4, 0xef, 0x0f, 0x06, 0x15, 0x93, 0xd4, 0xdc,
+ 0xd0, 0x6b, 0xc8, 0xac, 0x6d, 0x73, 0x1c, 0x24, 0x79, 0x1f, 0xa4, 0x16,
+ 0x8e, 0x55, 0x6c, 0xbf, 0x03, 0x1e, 0xf2, 0xd9, 0x75, 0x7a, 0xcc, 0xea,
+ 0xd6, 0xbc, 0x02, 0x08, 0xf9, 0xaa, 0x0d, 0xc7, 0xbf, 0x39, 0xec, 0xa2,
+ 0xb1, 0xbe, 0xd7, 0x39, 0xac, 0x8f, 0x19, 0xee, 0x52, 0x53, 0xd9, 0x7d,
+ 0x55, 0xc2, 0x66, 0x3f, 0x4c, 0x6d, 0xe0, 0xcb, 0xf2, 0x8e, 0xf7, 0x79,
+ 0x01, 0xed, 0x6b, 0x57, 0x3b, 0xd2, 0x3f, 0x53, 0xfa, 0xd4, 0xfa, 0xb8,
+ 0x02, 0xfb, 0x2b, 0x8f, 0x27, 0x6e, 0x8f, 0xca, 0xbb, 0x6c, 0x5a, 0x1b,
+ 0x8d, 0x8f, 0x56, 0x3b, 0x3e, 0x8d, 0x4d, 0x0d, 0x1f, 0x20, 0xb8, 0x6e,
+ 0xb0, 0x7e, 0xc5, 0xf5, 0xb9, 0xef, 0x1a, 0x07, 0x3e, 0xab, 0x87, 0xcc,
+ 0x09, 0xfc, 0x42, 0x4a, 0x7b, 0xd7, 0x21, 0x92, 0xa6, 0xed, 0x75, 0x50,
+ 0xee, 0x92, 0x94, 0x01, 0x2a, 0x41, 0xa9, 0xda, 0xa4, 0x92, 0x98, 0x10,
+ 0x46, 0xa9, 0x02, 0xa7, 0x1a, 0x21, 0xb8, 0x42, 0x4a, 0x65, 0x2a, 0x25,
+ 0xca, 0x24, 0xa6, 0x94, 0x94, 0xc8, 0x94, 0xc0, 0xc1, 0x51, 0x94, 0x92,
+ 0x52, 0x4d, 0xc9, 0x12, 0xa0, 0x13, 0xa4, 0xa6, 0x50, 0xa2, 0x42, 0x7d,
+ 0xc9, 0x8b, 0xa5, 0x25, 0x2a, 0x12, 0x12, 0x9a, 0x4a, 0x74, 0x94, 0xba,
+ 0x52, 0x61, 0x31, 0xd5, 0x21, 0xe0, 0x92, 0x99, 0x07, 0x12, 0x13, 0x77,
+ 0x52, 0x10, 0x14, 0x76, 0xea, 0x92, 0x98, 0x24, 0x94, 0x25, 0x09, 0x29,
+ 0x49, 0x27, 0x01, 0x3e, 0xd4, 0x94, 0xb2, 0x4a, 0x5a, 0x04, 0xd1, 0xdc,
+ 0x24, 0xa4, 0x19, 0x3f, 0x40, 0xac, 0xbb, 0x3d, 0xcc, 0x91, 0xc8, 0xfe,
+ 0x0b, 0x57, 0x20, 0x4b, 0x0a, 0xcb, 0x88, 0x7b, 0x98, 0x7b, 0xea, 0x3e,
+ 0x69, 0x29, 0xac, 0x2c, 0x6b, 0x6e, 0x6d, 0x87, 0xe8, 0xb7, 0x52, 0x3b,
+ 0x9f, 0x2f, 0x9a, 0x21, 0xb1, 0xdb, 0xf7, 0xdf, 0xfc, 0xe9, 0xfa, 0x15,
+ 0x0e, 0x18, 0x15, 0x70, 0x62, 0xf6, 0x09, 0xda, 0x5a, 0xee, 0x4e, 0xab,
+ 0x42, 0x9c, 0x7a, 0xd8, 0x7d, 0x47, 0xfd, 0x37, 0x6b, 0xaf, 0x30, 0x92,
+ 0x9a, 0x99, 0x6e, 0x9b, 0xab, 0xab, 0xf7, 0x1b, 0x27, 0xe2, 0x54, 0x2c,
+ 0x32, 0xc8, 0x1c, 0x02, 0xa2, 0xe7, 0xfa, 0x97, 0x59, 0x69, 0xfc, 0xe2,
+ 0x61, 0x23, 0xf4, 0x7e, 0x25, 0x25, 0x33, 0x1f, 0xcd, 0x1f, 0x02, 0x0f,
+ 0xe4, 0x5c, 0x9f, 0xd6, 0x07, 0xfe, 0xab, 0x5b, 0x7f, 0x96, 0x3f, 0x22,
+ 0xeb, 0x9b, 0xf4, 0x3e, 0x4b, 0x8c, 0xeb, 0xee, 0x7d, 0xad, 0xa9, 0xa4,
+ 0x06, 0xc3, 0xc6, 0x92, 0x92, 0x9d, 0xf6, 0x0b, 0x1d, 0xd3, 0xf1, 0x29,
+ 0xaf, 0xe9, 0x5c, 0xc1, 0x56, 0x9e, 0x6d, 0x04, 0x7e, 0x21, 0x74, 0x1f,
+ 0x57, 0xba, 0x0b, 0xba, 0x6e, 0xfc, 0x8c, 0x92, 0x0e, 0x45, 0x82, 0x03,
+ 0x41, 0x90, 0xc1, 0xdf, 0x5f, 0x12, 0xa1, 0xf5, 0x6b, 0x06, 0xb3, 0x8c,
+ 0xdb, 0xad, 0x68, 0x73, 0xaa, 0x86, 0xd3, 0x3a, 0x86, 0xc0, 0x12, 0x42,
+ 0xdd, 0x71, 0x49, 0x4b, 0x82, 0xb8, 0x5f, 0xaf, 0x75, 0x9a, 0xba, 0xbe,
+ 0x2e, 0x43, 0x74, 0xf5, 0x29, 0x82, 0x7c, 0xd8, 0xe3, 0xff, 0x00, 0x92,
+ 0x5d, 0xc0, 0x2b, 0x96, 0xfa, 0xff, 0x00, 0x4c, 0xe3, 0x61, 0x64, 0x47,
+ 0xd0, 0xb1, 0xcc, 0x27, 0xfa, 0xed, 0x9f, 0xfb, 0xea, 0x4a, 0x7a, 0x4c,
+ 0x3b, 0x7d, 0x7c, 0x2c, 0x7b, 0x86, 0xbb, 0xeb, 0x63, 0xa7, 0xe2, 0x02,
+ 0x22, 0xcf, 0xfa, 0xb3, 0x77, 0xad, 0xd0, 0xf1, 0x89, 0xe5, 0xa0, 0xb0,
+ 0xff, 0x00, 0x64, 0x95, 0xa5, 0x1a, 0xa4, 0xa4, 0x57, 0x5c, 0xda, 0x2b,
+ 0xde, 0x79, 0x3a, 0x34, 0x78, 0x95, 0x97, 0x7f, 0x51, 0xbe, 0x41, 0x75,
+ 0xbb, 0x3b, 0xed, 0x6e, 0x8a, 0x7d, 0x5a, 0xf2, 0x2e, 0x6d, 0x60, 0xfd,
+ 0x11, 0xaf, 0x6d, 0x4f, 0xe0, 0xb0, 0x32, 0x1e, 0x66, 0x27, 0x8f, 0x34,
+ 0x94, 0xeb, 0x7e, 0xdf, 0xb2, 0xb3, 0xa3, 0xc3, 0x80, 0xe7, 0x76, 0xbf,
+ 0x74, 0x42, 0xd1, 0xc1, 0xea, 0xb4, 0x67, 0x7b, 0x07, 0xb2, 0xd8, 0x9d,
+ 0xbd, 0x9d, 0x1c, 0xc2, 0xe2, 0x6e, 0x16, 0x13, 0x22, 0x49, 0xf0, 0xd5,
+ 0x5a, 0xe8, 0xb6, 0x39, 0xbd, 0x53, 0x17, 0x69, 0xd4, 0xd8, 0x01, 0x8f,
+ 0x03, 0xa1, 0xed, 0xe0, 0x92, 0x9e, 0xd9, 0xc0, 0xa8, 0x23, 0xb9, 0x88,
+ 0x65, 0xa9, 0x29, 0x82, 0x70, 0x42, 0x72, 0x13, 0x42, 0x4a, 0x54, 0xa4,
+ 0x0a, 0x50, 0x94, 0x24, 0xa5, 0x4a, 0x49, 0x41, 0x4c, 0x92, 0x99, 0x27,
+ 0x51, 0x49, 0x25, 0x32, 0x4b, 0x40, 0x99, 0x32, 0x4a, 0x5e, 0x53, 0xee,
+ 0x51, 0x49, 0x25, 0x2e, 0x92, 0x64, 0x92, 0x53, 0x30, 0x9e, 0x54, 0x25,
+ 0x29, 0x49, 0x4c, 0xb9, 0x49, 0x46, 0x52, 0xd5, 0x25, 0x23, 0xc8, 0x7b,
+ 0x59, 0x5c, 0xb8, 0xc6, 0xa0, 0x7d, 0xe6, 0x16, 0x56, 0x40, 0xda, 0xed,
+ 0xdd, 0xda, 0x7f, 0x05, 0x67, 0xad, 0x63, 0xbe, 0xcc, 0x41, 0x65, 0x2d,
+ 0x9b, 0x69, 0x7b, 0x6c, 0x1a, 0xc7, 0xd1, 0xec, 0xab, 0x64, 0x3a, 0x1d,
+ 0xee, 0xee, 0x92, 0x9c, 0xfc, 0xc9, 0xae, 0xcf, 0x50, 0x76, 0x21, 0xc3,
+ 0xc0, 0xf7, 0x57, 0x45, 0xaf, 0xf4, 0x49, 0x27, 0x73, 0x8b, 0x01, 0x71,
+ 0xfe, 0x53, 0x95, 0x6b, 0x98, 0x5f, 0x59, 0x67, 0x71, 0xc7, 0xc1, 0x59,
+ 0x0f, 0x63, 0x70, 0x59, 0x69, 0xd3, 0x7c, 0x0d, 0xa7, 0xb6, 0xdd, 0x12,
+ 0x53, 0x55, 0xad, 0xda, 0x35, 0xe4, 0xa7, 0x7e, 0x80, 0x0e, 0xe9, 0x52,
+ 0x1d, 0x75, 0xde, 0x43, 0x55, 0x2b, 0x75, 0xb3, 0x4e, 0x02, 0x4a, 0x48,
+ 0xdf, 0xa3, 0x0b, 0x85, 0xeb, 0x8e, 0x75, 0xb9, 0xb5, 0x54, 0x01, 0x89,
+ 0xd0, 0x0e, 0x4b, 0x89, 0x85, 0xde, 0x56, 0xdf, 0x1f, 0x05, 0xc0, 0xf5,
+ 0x77, 0x13, 0x9c, 0x48, 0x70, 0x69, 0xab, 0x51, 0x33, 0x24, 0xcc, 0xe9,
+ 0x09, 0x29, 0xf4, 0xef, 0xab, 0x74, 0xdb, 0x4f, 0x48, 0xa5, 0x97, 0x1d,
+ 0xd6, 0x0f, 0xa4, 0xef, 0x12, 0x34, 0x5a, 0x0e, 0x54, 0xfa, 0x0d, 0xc3,
+ 0x23, 0xa5, 0x53, 0x78, 0xe2, 0xc1, 0xb8, 0x7c, 0xc2, 0xb8, 0xe4, 0x94,
+ 0xb0, 0x58, 0xdf, 0x5c, 0xa8, 0x37, 0x74, 0x1b, 0x1c, 0x39, 0xa5, 0xec,
+ 0x7f, 0xe3, 0xb7, 0xfe, 0xfc, 0xb6, 0x42, 0xad, 0xd6, 0x6a, 0xf5, 0xfa,
+ 0x3e, 0x65, 0x71, 0x33, 0x53, 0x88, 0x1f, 0xd5, 0x1b, 0xbf, 0x82, 0x4a,
+ 0x72, 0x7e, 0xa5, 0x65, 0x30, 0x74, 0x9b, 0x19, 0x63, 0x83, 0x45, 0x76,
+ 0x4e, 0xbe, 0x0e, 0x01, 0x6c, 0x59, 0x9f, 0x5b, 0x67, 0x63, 0x49, 0xf3,
+ 0x77, 0xb4, 0x2e, 0x3b, 0xea, 0xb5, 0x8e, 0x1e, 0xbb, 0x00, 0x71, 0x00,
+ 0x07, 0x10, 0xd0, 0x49, 0x03, 0xc6, 0x07, 0xc5, 0x6f, 0x7a, 0xcd, 0x7c,
+ 0x6c, 0x1b, 0x92, 0x52, 0x3c, 0xa3, 0xeb, 0x58, 0xeb, 0x5a, 0xe8, 0x7b,
+ 0x8c, 0xeb, 0xc7, 0x87, 0xc1, 0x65, 0xe4, 0xd7, 0x76, 0xe2, 0xed, 0x84,
+ 0xb7, 0xb9, 0x1a, 0xfe, 0x49, 0x5b, 0x24, 0x9e, 0xe2, 0x38, 0x98, 0x08,
+ 0x45, 0x81, 0xc7, 0x51, 0x23, 0x90, 0x7c, 0xc2, 0x4a, 0x79, 0xe7, 0xb9,
+ 0xb1, 0xe1, 0xe6, 0x79, 0x94, 0x6c, 0x2a, 0xf6, 0xe7, 0xd4, 0x2c, 0x9a,
+ 0xdc, 0x1c, 0x26, 0x66, 0x46, 0x8b, 0x6e, 0xdc, 0x13, 0x64, 0x16, 0xd8,
+ 0xe0, 0x5b, 0x04, 0x1e, 0x47, 0xe3, 0x2a, 0xb5, 0xfd, 0x3e, 0x1c, 0x5d,
+ 0xef, 0xad, 0xe4, 0xe8, 0xed, 0xa0, 0x8d, 0x7c, 0xf5, 0xd3, 0xcd, 0x25,
+ 0x37, 0xc5, 0x99, 0x0c, 0xd5, 0x97, 0x3d, 0xbd, 0xfe, 0x94, 0x89, 0xf8,
+ 0x19, 0x57, 0x70, 0x73, 0x2c, 0xbd, 0xc6, 0xab, 0x80, 0xde, 0x06, 0xe6,
+ 0xbc, 0x69, 0xb8, 0x77, 0x91, 0xe2, 0xb9, 0xcb, 0x7a, 0x86, 0x17, 0x4c,
+ 0x11, 0x93, 0x96, 0xd2, 0x7f, 0xd1, 0x30, 0xfa, 0x8f, 0x3f, 0xe6, 0xf0,
+ 0xb6, 0x3a, 0x2f, 0x52, 0xe8, 0xd9, 0x36, 0x4d, 0x19, 0x95, 0xd9, 0x7b,
+ 0x84, 0x0a, 0xf5, 0x61, 0x00, 0xf8, 0x07, 0x80, 0x49, 0x49, 0x4e, 0xb1,
+ 0x0a, 0x30, 0x8c, 0x5a, 0xa0, 0x5a, 0x52, 0x53, 0x08, 0x4f, 0x09, 0xd3,
+ 0x24, 0xa5, 0xd3, 0x68, 0x94, 0xa6, 0x49, 0x4a, 0x84, 0xf1, 0x09, 0x4a,
+ 0x52, 0x92, 0x95, 0x05, 0x36, 0xa9, 0xc1, 0xd1, 0x3a, 0x4a, 0x60, 0x53,
+ 0x22, 0x26, 0xdb, 0xaa, 0x4a, 0x62, 0x92, 0x49, 0x24, 0xa5, 0xd2, 0x4c,
+ 0x92, 0x4a, 0x5d, 0x20, 0x92, 0x41, 0x25, 0x21, 0xce, 0xfe, 0x87, 0x6f,
+ 0x9b, 0x60, 0x7c, 0x4e, 0x81, 0x53, 0x75, 0x2d, 0xbe, 0xbe, 0x7d, 0xc3,
+ 0x43, 0xf1, 0x47, 0xeb, 0x06, 0xc6, 0x74, 0xeb, 0x5e, 0xc9, 0xdc, 0xd8,
+ 0x20, 0x01, 0x32, 0x67, 0x82, 0xab, 0x55, 0x97, 0x82, 0x05, 0x75, 0x32,
+ 0xf1, 0xf6, 0x82, 0xc0, 0xf2, 0xc3, 0xa1, 0x23, 0x49, 0x10, 0x92, 0x9a,
+ 0xcf, 0xc7, 0x7b, 0x48, 0x69, 0xe6, 0x61, 0xa7, 0xc4, 0x78, 0x28, 0xdd,
+ 0x83, 0xbc, 0x87, 0x39, 0xc7, 0x68, 0xd1, 0x95, 0x8f, 0x05, 0x78, 0xdf,
+ 0x4d, 0xbc, 0x1f, 0x73, 0x4c, 0xc1, 0xe7, 0x45, 0x9d, 0x76, 0x76, 0x5b,
+ 0xee, 0x2d, 0xa6, 0xb3, 0xa6, 0x80, 0xa4, 0xa4, 0x9b, 0x59, 0x89, 0x51,
+ 0x04, 0xfe, 0x9a, 0xcf, 0xcd, 0xf0, 0x08, 0x0d, 0x92, 0xed, 0x79, 0xee,
+ 0xa7, 0xe9, 0x0c, 0x76, 0x1c, 0x8c, 0xb7, 0x4d, 0xce, 0xfa, 0x0c, 0x28,
+ 0x55, 0x17, 0x18, 0x3d, 0xdd, 0xa9, 0x49, 0x4d, 0x96, 0x7d, 0x28, 0xd5,
+ 0x71, 0x79, 0xb8, 0x0d, 0xcf, 0xeb, 0x2d, 0xc5, 0x2e, 0x35, 0xfb, 0x1c,
+ 0xe7, 0x38, 0x09, 0x30, 0x0a, 0xec, 0xaa, 0x71, 0xdd, 0x3a, 0x72, 0xb9,
+ 0xac, 0x36, 0x97, 0xfd, 0x65, 0xc9, 0xd3, 0x56, 0x30, 0x37, 0xe6, 0xe7,
+ 0x24, 0xa7, 0x77, 0xea, 0x8e, 0x6e, 0x66, 0x06, 0x63, 0xfe, 0xae, 0xe7,
+ 0x99, 0x0d, 0x67, 0xab, 0x84, 0xf2, 0x20, 0xba, 0xb3, 0xaa, 0xea, 0xdc,
+ 0xb9, 0xef, 0xac, 0xf8, 0xa7, 0x11, 0xdd, 0x3b, 0xae, 0x52, 0x3d, 0xdd,
+ 0x35, 0xed, 0x65, 0xe0, 0x72, 0x68, 0x7c, 0x34, 0xfd, 0xc5, 0x6f, 0xb2,
+ 0xea, 0xef, 0xa9, 0x97, 0x54, 0xed, 0xd5, 0xd8, 0xd0, 0xe6, 0x3b, 0xc4,
+ 0x11, 0x21, 0x25, 0x2e, 0x9d, 0xcc, 0x16, 0x54, 0xfa, 0xcf, 0x0f, 0x69,
+ 0x69, 0xf9, 0x88, 0x51, 0x95, 0x36, 0x14, 0x94, 0xf0, 0xbf, 0x54, 0x5e,
+ 0x68, 0xeb, 0x9e, 0x89, 0xd3, 0x78, 0x7b, 0x0f, 0xc4, 0x7f, 0xe7, 0x2b,
+ 0xb7, 0xbf, 0x1b, 0x1a, 0xef, 0xe7, 0x6a, 0x6b, 0xfc, 0xc8, 0x13, 0xf7,
+ 0xae, 0x12, 0xa3, 0xf6, 0x3f, 0xad, 0x64, 0x70, 0x1b, 0x94, 0x47, 0xc9,
+ 0xce, 0xfe, 0xe7, 0x2e, 0xfd, 0xe5, 0x25, 0x34, 0xad, 0xe9, 0x18, 0x76,
+ 0xd6, 0xf6, 0x30, 0x3a, 0xa7, 0xbd, 0xa5, 0xad, 0xb1, 0xaf, 0x77, 0xb4,
+ 0xf6, 0x20, 0x13, 0x1a, 0x2f, 0x30, 0xce, 0xea, 0x7f, 0x5a, 0x3a, 0x6e,
+ 0x4b, 0xb1, 0x72, 0xef, 0xba, 0xb7, 0xb4, 0x90, 0xdd, 0xcd, 0x03, 0x7c,
+ 0x69, 0xb9, 0xba, 0x6a, 0x0a, 0xf5, 0x90, 0xe5, 0x22, 0xca, 0xac, 0x2d,
+ 0x2f, 0x63, 0x5e, 0x58, 0x65, 0xa5, 0xc0, 0x18, 0x3e, 0x52, 0x92, 0x9f,
+ 0x2b, 0xb9, 0x9f, 0x5c, 0xc7, 0x4d, 0xfd, 0xa7, 0x7d, 0x97, 0xd7, 0x86,
+ 0x34, 0x24, 0x9d, 0x8e, 0x0d, 0xec, 0xe2, 0xcd, 0x0e, 0xdf, 0x35, 0x8c,
+ 0xeb, 0xf3, 0x2f, 0x33, 0x75, 0xf6, 0x59, 0xfd, 0x67, 0x93, 0xf9, 0x4a,
+ 0xf4, 0x9f, 0xf1, 0x85, 0x79, 0x67, 0x44, 0x65, 0x00, 0x90, 0x2f, 0xb9,
+ 0xa1, 0xdf, 0xd5, 0x60, 0x2f, 0xfc, 0xa0, 0x2f, 0x3c, 0xaa, 0xa9, 0x03,
+ 0xc1, 0x25, 0x22, 0x65, 0x5d, 0xbf, 0x14, 0x66, 0xd6, 0xe6, 0x10, 0x44,
+ 0x82, 0x35, 0x04, 0x78, 0xa3, 0x0a, 0xc0, 0x45, 0x6b, 0x7d, 0xb0, 0x52,
+ 0x53, 0xad, 0xd2, 0xfe, 0xb4, 0xf5, 0x3c, 0x28, 0x76, 0xf7, 0x64, 0x56,
+ 0xcf, 0xe7, 0x31, 0xde, 0x64, 0x16, 0xf8, 0xb0, 0x9d, 0x41, 0x5d, 0xbf,
+ 0x4a, 0xeb, 0xdd, 0x3b, 0xab, 0xb0, 0x7d, 0x9d, 0xf1, 0x6c, 0x49, 0xa5,
+ 0xda, 0x3c, 0x79, 0x8f, 0x10, 0xbc, 0xcd, 0xad, 0xda, 0x64, 0x68, 0x46,
+ 0xb2, 0xab, 0xbe, 0xdb, 0xb1, 0x72, 0xc3, 0xe9, 0x71, 0xad, 0xc0, 0xfa,
+ 0x95, 0xb9, 0xa6, 0x08, 0x3d, 0xe2, 0x12, 0x53, 0xec, 0x6e, 0x62, 0x19,
+ 0x0b, 0x8d, 0xe8, 0x7f, 0x5f, 0x1c, 0x0b, 0x71, 0xfa, 0xb0, 0xdc, 0xde,
+ 0x06, 0x4b, 0x46, 0xa3, 0xfa, 0xed, 0x1c, 0xfc, 0x97, 0x6b, 0x5d, 0x94,
+ 0xe4, 0x54, 0xdb, 0xa9, 0x78, 0xb2, 0xb7, 0x89, 0x6b, 0xda, 0x64, 0x10,
+ 0x92, 0x91, 0xc2, 0x4a, 0x45, 0xb0, 0xa2, 0x92, 0x96, 0x49, 0x4a, 0x13,
+ 0xc2, 0x4a, 0x62, 0x94, 0xa7, 0x21, 0x34, 0x24, 0xa5, 0x4a, 0x52, 0x9a,
+ 0x12, 0x49, 0x4a, 0x49, 0x34, 0xa4, 0x92, 0x97, 0x49, 0x24, 0x92, 0x52,
+ 0xea, 0x4d, 0x0a, 0x21, 0x0f, 0x32, 0xff, 0x00, 0xb3, 0x61, 0x5f, 0x90,
+ 0x0c, 0x1a, 0xeb, 0x73, 0x9a, 0x62, 0x7d, 0xd1, 0xed, 0xd3, 0xbe, 0xa9,
+ 0x29, 0xc9, 0xeb, 0x19, 0x37, 0xe6, 0x5a, 0xfe, 0x9f, 0x59, 0x34, 0x62,
+ 0xd4, 0xe6, 0x9b, 0xef, 0x04, 0xb5, 0xef, 0x8f, 0x76, 0xc6, 0x7c, 0xcf,
+ 0x2b, 0x97, 0xb0, 0x65, 0xdd, 0x75, 0x99, 0x4c, 0x02, 0xca, 0xc7, 0xe8,
+ 0xf5, 0x97, 0x3e, 0x1a, 0x79, 0x1a, 0x83, 0x0b, 0x63, 0x75, 0xcd, 0xa2,
+ 0x9a, 0xf2, 0xac, 0x36, 0x5e, 0x5a, 0x5d, 0x75, 0x87, 0x92, 0xe8, 0x97,
+ 0x7e, 0x25, 0x50, 0xb3, 0x1a, 0xbf, 0x45, 0xee, 0xc7, 0x26, 0xb7, 0x36,
+ 0x1c, 0x20, 0xf2, 0x3b, 0xa4, 0xa6, 0xa6, 0xec, 0xfa, 0xcf, 0xab, 0x8f,
+ 0x64, 0xf7, 0xda, 0x5c, 0x4f, 0xe0, 0xf1, 0xfc, 0x56, 0xc7, 0x49, 0xea,
+ 0x99, 0x99, 0x18, 0xee, 0x7d, 0x9b, 0x69, 0x7d, 0x0e, 0x8b, 0x5a, 0x47,
+ 0x2d, 0x89, 0xdc, 0x35, 0x2b, 0x3b, 0x6d, 0xbb, 0x3f, 0x48, 0x45, 0x9d,
+ 0xc1, 0x3e, 0xd7, 0x7d, 0xe8, 0x7d, 0x2e, 0xca, 0x5f, 0xd4, 0x2d, 0xc7,
+ 0xc9, 0xdd, 0x4b, 0x6c, 0xac, 0x86, 0x39, 0xc7, 0x70, 0xdc, 0x0a, 0x4a,
+ 0x74, 0x98, 0xfb, 0x32, 0x5c, 0x2e, 0xb4, 0x97, 0x3a, 0xc3, 0xed, 0x1e,
+ 0x01, 0x5c, 0x6b, 0x7d, 0xce, 0xda, 0x34, 0x68, 0xda, 0x10, 0x69, 0x76,
+ 0x3b, 0x5f, 0xb6, 0xb9, 0x79, 0x60, 0xda, 0xd9, 0x10, 0x20, 0x77, 0x56,
+ 0x41, 0x76, 0xd8, 0x90, 0x01, 0xfb, 0x92, 0x53, 0x0a, 0xdb, 0x06, 0x09,
+ 0x93, 0xe0, 0x35, 0x59, 0xfd, 0x37, 0x01, 0xcc, 0xfa, 0xcf, 0x92, 0xe3,
+ 0xf4, 0x2d, 0x35, 0x3d, 0xba, 0xcf, 0xb6, 0x09, 0x23, 0xef, 0x6a, 0xd4,
+ 0x6b, 0x63, 0x40, 0x89, 0x43, 0x5e, 0xcc, 0xec, 0x6b, 0x1a, 0xcd, 0xc1,
+ 0xce, 0x35, 0xbe, 0x4c, 0x10, 0xd7, 0x0f, 0xa5, 0xe7, 0x05, 0x25, 0x3a,
+ 0x9d, 0x53, 0x0f, 0xf6, 0x8f, 0x4e, 0xbf, 0x0b, 0x7f, 0xa7, 0xeb, 0xb7,
+ 0x6e, 0xf8, 0x98, 0xd6, 0x78, 0x53, 0xc6, 0xc7, 0x66, 0x2e, 0x2d, 0x38,
+ 0xb5, 0xc9, 0x65, 0x2c, 0x6d, 0x6d, 0x27, 0x98, 0x68, 0x84, 0x65, 0x12,
+ 0x92, 0x94, 0xa6, 0xd4, 0x35, 0x36, 0xa4, 0xa7, 0x84, 0xfa, 0xca, 0xcf,
+ 0xb3, 0xfd, 0x62, 0xb2, 0xc1, 0xa6, 0xef, 0x4e, 0xc1, 0xf1, 0x80, 0x3f,
+ 0x82, 0xef, 0x03, 0x83, 0xd8, 0xd7, 0x8e, 0x1c, 0x01, 0xfb, 0xc4, 0xae,
+ 0x3b, 0xeb, 0xbd, 0x7b, 0x3a, 0x86, 0x3d, 0xa0, 0x7d, 0x3a, 0xa0, 0x9f,
+ 0x36, 0xbb, 0xfd, 0xab, 0xa8, 0xe9, 0x56, 0xfa, 0xdd, 0x2f, 0x16, 0xce,
+ 0x66, 0xa6, 0x83, 0xf2, 0x1b, 0x7f, 0x82, 0x4a, 0x4c, 0x54, 0xd8, 0x54,
+ 0x0a, 0x9b, 0x39, 0x49, 0x4f, 0x1b, 0xfe, 0x31, 0x32, 0x25, 0xd8, 0x78,
+ 0x9b, 0x84, 0x00, 0xeb, 0x5c, 0xd8, 0xef, 0xf4, 0x5a, 0x67, 0xef, 0x5c,
+ 0x95, 0x50, 0x42, 0xdd, 0xff, 0x00, 0x18, 0x61, 0xed, 0xeb, 0x74, 0x13,
+ 0xf4, 0x5f, 0x8e, 0xdd, 0xbf, 0x10, 0xe7, 0x82, 0xb0, 0xea, 0x6c, 0x80,
+ 0x92, 0x93, 0x34, 0x0e, 0xff, 0x00, 0x7a, 0x8b, 0x5e, 0x1f, 0x0e, 0x02,
+ 0x07, 0x65, 0x00, 0xf2, 0xc7, 0x16, 0x1e, 0x1d, 0x25, 0xa5, 0x45, 0xa6,
+ 0x18, 0x3c, 0x52, 0x53, 0x60, 0x38, 0x48, 0x6c, 0xcc, 0xf2, 0x81, 0x9b,
+ 0x56, 0xfa, 0x1b, 0x60, 0xfa, 0x55, 0x98, 0x3f, 0x02, 0xa4, 0xd8, 0x10,
+ 0x3b, 0x9e, 0xe8, 0xd5, 0x80, 0xff, 0x00, 0x52, 0xa3, 0xc3, 0xc2, 0x4a,
+ 0x72, 0x76, 0x8e, 0x65, 0x6d, 0xfd, 0x5d, 0xfa, 0xcf, 0x95, 0xd1, 0x6e,
+ 0x0c, 0x24, 0xdb, 0x84, 0xe3, 0x36, 0xd3, 0xe1, 0xe2, 0xe6, 0x78, 0x1f,
+ 0xca, 0xb2, 0xbd, 0x32, 0x67, 0x76, 0x84, 0x72, 0x84, 0xf0, 0x1b, 0xc1,
+ 0xd4, 0x24, 0xa7, 0xda, 0xea, 0xba, 0xac, 0x9a, 0x19, 0x91, 0x43, 0x83,
+ 0xea, 0xb5, 0xa1, 0xec, 0x70, 0xe0, 0xb5, 0xc2, 0x41, 0x51, 0x21, 0x73,
+ 0x5f, 0xe2, 0xf3, 0x39, 0xd9, 0x1d, 0x26, 0xec, 0x37, 0x99, 0xfb, 0x1d,
+ 0x90, 0xc9, 0xec, 0xcb, 0x06, 0xf0, 0x3e, 0x46, 0x57, 0x4e, 0xe1, 0x05,
+ 0x25, 0x2d, 0x10, 0x94, 0xa6, 0x49, 0x25, 0x2f, 0x2a, 0x25, 0x29, 0x48,
+ 0xa4, 0xa5, 0x24, 0x92, 0x49, 0x29, 0x8a, 0x49, 0x93, 0xa4, 0xa5, 0x27,
+ 0x4c, 0x9c, 0x24, 0xa5, 0xc2, 0xce, 0xeb, 0x99, 0xcc, 0xc7, 0xa8, 0x54,
+ 0x78, 0x8d, 0xef, 0x81, 0x27, 0x9f, 0x68, 0x81, 0xe2, 0x56, 0x9b, 0x02,
+ 0xe6, 0x3a, 0xce, 0x49, 0x75, 0x97, 0x3d, 0x80, 0x39, 0xce, 0x78, 0xad,
+ 0xb2, 0x24, 0x47, 0x09, 0x29, 0xa3, 0xf6, 0xba, 0xae, 0x78, 0xf7, 0x82,
+ 0xe8, 0x20, 0x35, 0xc0, 0xb1, 0xda, 0xf3, 0xa3, 0xa1, 0x2b, 0x0b, 0x5a,
+ 0xdd, 0x83, 0xda, 0xc0, 0x34, 0x94, 0x53, 0xd5, 0xb1, 0x76, 0x59, 0x8f,
+ 0x95, 0x88, 0xcb, 0x69, 0x1a, 0x6e, 0x02, 0x1d, 0xba, 0x20, 0xb9, 0xae,
+ 0x33, 0xaa, 0xca, 0xa7, 0x32, 0xaa, 0xf7, 0xb5, 0xa5, 0xcf, 0x61, 0xd1,
+ 0xad, 0x07, 0x51, 0xf1, 0x07, 0x44, 0x94, 0xd8, 0xb2, 0x96, 0x8a, 0xcb,
+ 0xb7, 0x6e, 0x68, 0x88, 0x50, 0x03, 0xd1, 0x6d, 0x57, 0x96, 0x86, 0xb0,
+ 0x38, 0x13, 0xdc, 0xba, 0x0a, 0x2d, 0x6f, 0x0e, 0xa7, 0x75, 0xac, 0x86,
+ 0x03, 0x31, 0xc0, 0x3e, 0x65, 0x57, 0xcd, 0x6d, 0xb7, 0xbd, 0xbb, 0xac,
+ 0x0d, 0xad, 0xba, 0xb4, 0x0e, 0x07, 0x60, 0x92, 0x9d, 0xa1, 0xf4, 0x43,
+ 0x9b, 0x1e, 0xef, 0x74, 0x8f, 0x3d, 0x55, 0x8a, 0x8e, 0xe1, 0x1d, 0xc2,
+ 0xe7, 0x6d, 0xea, 0xd9, 0x18, 0x58, 0xf5, 0x51, 0x53, 0x05, 0xaf, 0x68,
+ 0x23, 0xd4, 0xb0, 0x9e, 0x07, 0x1a, 0x0e, 0x56, 0x7b, 0xfa, 0xf7, 0x58,
+ 0x74, 0xc5, 0xa2, 0xa0, 0x7f, 0xd1, 0xb4, 0x03, 0xf7, 0x99, 0x29, 0x29,
+ 0xed, 0xb6, 0xdb, 0x12, 0x5e, 0x58, 0xc1, 0xcb, 0x89, 0x0d, 0x0b, 0x2b,
+ 0x37, 0xeb, 0x5e, 0x07, 0x4e, 0x24, 0x62, 0x7e, 0xb9, 0x92, 0xcd, 0x4c,
+ 0x1f, 0x60, 0x83, 0xdd, 0xdd, 0xfe, 0x4b, 0x94, 0xb2, 0xdc, 0x9c, 0x83,
+ 0xbb, 0x22, 0xd7, 0xdb, 0xfd, 0x77, 0x17, 0x7e, 0x09, 0x51, 0x81, 0xf6,
+ 0xbe, 0xa7, 0x8b, 0x82, 0xc3, 0xb7, 0xed, 0x56, 0x31, 0xa6, 0x3b, 0x36,
+ 0x65, 0xc7, 0xee, 0x49, 0x4f, 0xad, 0x51, 0x73, 0x32, 0x71, 0xaa, 0xc9,
+ 0x60, 0x21, 0x97, 0x31, 0xb6, 0x34, 0x1e, 0x40, 0x70, 0x9d, 0x53, 0x95,
+ 0x3d, 0x8d, 0xae, 0xb6, 0xd6, 0xc1, 0x0c, 0x60, 0x0d, 0x68, 0xf0, 0x00,
+ 0x40, 0x43, 0x29, 0x29, 0x4a, 0x4d, 0x51, 0x52, 0x6a, 0x4a, 0x79, 0xaf,
+ 0xaf, 0x55, 0x4e, 0x36, 0x25, 0xc0, 0x7d, 0x17, 0xb9, 0x87, 0xfb, 0x40,
+ 0x1f, 0xe0, 0xb4, 0x3e, 0xaa, 0x5d, 0xea, 0xf4, 0x4a, 0xc1, 0x32, 0x6b,
+ 0x73, 0x99, 0xf8, 0xee, 0xfe, 0x28, 0x7f, 0x5c, 0xaa, 0x2f, 0xe8, 0x6e,
+ 0x78, 0xe6, 0xab, 0x18, 0xff, 0x00, 0xc7, 0x6f, 0xf1, 0x55, 0x7e, 0xa3,
+ 0x5b, 0xbb, 0x0b, 0x22, 0xa3, 0xf9, 0xaf, 0x6b, 0x87, 0xf6, 0x84, 0x7f,
+ 0x04, 0x94, 0xf4, 0x45, 0x3b, 0x0e, 0xa9, 0x3b, 0x94, 0xc1, 0x25, 0x3c,
+ 0xa7, 0xf8, 0xc5, 0xc1, 0x75, 0x98, 0xd8, 0x9d, 0x41, 0x82, 0x45, 0x0e,
+ 0x35, 0x5a, 0x7c, 0x1b, 0x64, 0x16, 0x9f, 0xbd, 0xbf, 0x8a, 0xe3, 0x69,
+ 0x72, 0xf5, 0x4e, 0xbb, 0x8b, 0xf6, 0xde, 0x89, 0x9b, 0x8f, 0x30, 0x5d,
+ 0x53, 0x8b, 0x4f, 0x9b, 0x3d, 0xe3, 0xf1, 0x0b, 0xc9, 0xa8, 0x76, 0x89,
+ 0x29, 0x2d, 0xed, 0x24, 0x07, 0x0e, 0x5b, 0xaf, 0xc9, 0x35, 0x47, 0x70,
+ 0x12, 0x51, 0x58, 0x41, 0xd1, 0xdc, 0x1e, 0xe8, 0x00, 0xba, 0xa2, 0xe6,
+ 0x11, 0x07, 0xb7, 0xc1, 0x25, 0x26, 0x99, 0xb0, 0x22, 0x31, 0xd0, 0xf6,
+ 0xb8, 0x72, 0x0e, 0xa1, 0x06, 0xb0, 0x5a, 0x0d, 0x8e, 0xd4, 0xf0, 0xd1,
+ 0xe6, 0xa7, 0x5b, 0x76, 0x02, 0xf7, 0x7d, 0xe9, 0x29, 0x16, 0x75, 0x45,
+ 0x97, 0x97, 0xb6, 0x76, 0x59, 0xa8, 0x3d, 0xa7, 0xb8, 0x55, 0x1e, 0x74,
+ 0xd7, 0x45, 0xd7, 0x7d, 0x5a, 0x66, 0x2e, 0x73, 0xaf, 0xe9, 0x59, 0xad,
+ 0x0f, 0xab, 0x31, 0x84, 0xd4, 0x4f, 0xe6, 0xd8, 0xc1, 0x2d, 0x73, 0x4f,
+ 0x67, 0x41, 0x2b, 0x98, 0xcf, 0xc1, 0xea, 0x38, 0x03, 0x6e, 0x5e, 0x25,
+ 0x95, 0x41, 0x20, 0x5a, 0xf6, 0x96, 0x87, 0x76, 0xf8, 0x76, 0x49, 0x4f,
+ 0x51, 0xfe, 0x2d, 0x33, 0x76, 0xe7, 0x66, 0xe1, 0x46, 0x96, 0xd6, 0xdb,
+ 0x43, 0xbb, 0xcd, 0x67, 0x6c, 0x7f, 0xd3, 0x5d, 0xf3, 0xc2, 0xe1, 0x7f,
+ 0xc5, 0x8e, 0x1b, 0x4b, 0xb3, 0xb3, 0x9e, 0xdf, 0xd2, 0x0d, 0x95, 0x31,
+ 0xdf, 0xc9, 0x32, 0xe7, 0x7e, 0x40, 0xbb, 0x8c, 0x9b, 0xea, 0xa1, 0x86,
+ 0xcb, 0x5c, 0x1a, 0x02, 0x4a, 0x59, 0x32, 0xcf, 0xe9, 0x9d, 0x61, 0xbd,
+ 0x4a, 0xeb, 0xd9, 0x55, 0x67, 0xd1, 0xa6, 0x22, 0xef, 0xcd, 0x73, 0x89,
+ 0xfa, 0x21, 0x68, 0x24, 0xa5, 0x24, 0x99, 0x24, 0x94, 0xa4, 0xe9, 0x92,
+ 0x49, 0x4b, 0x76, 0x4c, 0x0c, 0xa8, 0x9b, 0xa9, 0x23, 0x6e, 0xf1, 0x3f,
+ 0x14, 0x98, 0xfa, 0xe3, 0xe9, 0x08, 0x49, 0x4c, 0xd3, 0x85, 0x10, 0xf6,
+ 0x13, 0xf4, 0x82, 0x96, 0xe6, 0x78, 0x84, 0x94, 0xcc, 0x68, 0x09, 0xf0,
+ 0x04, 0xae, 0x33, 0x2a, 0xc2, 0x69, 0xdf, 0xba, 0x09, 0x79, 0x31, 0xde,
+ 0x40, 0xf1, 0xec, 0xbb, 0x36, 0x59, 0x59, 0x1c, 0x88, 0x3a, 0x2e, 0x23,
+ 0xa9, 0xdb, 0x5e, 0x1f, 0xa9, 0x55, 0x8c, 0x0f, 0x2d, 0xb5, 0xdb, 0x09,
+ 0x71, 0x11, 0x1a, 0x70, 0x39, 0x49, 0x4e, 0x7d, 0x8f, 0xc8, 0xb4, 0x6a,
+ 0xdd, 0xad, 0x6f, 0x10, 0x9e, 0xac, 0x3a, 0x9c, 0x43, 0xcc, 0x47, 0x73,
+ 0xdd, 0x26, 0xe5, 0x97, 0xb7, 0x51, 0x0d, 0xf0, 0x52, 0xa9, 0xc4, 0xbb,
+ 0x6b, 0x78, 0x72, 0x4a, 0x6e, 0x3e, 0xe6, 0x7a, 0x6f, 0x80, 0x03, 0x22,
+ 0x1d, 0x2b, 0x26, 0xb7, 0x06, 0x17, 0xd6, 0xf2, 0x00, 0x66, 0xac, 0x93,
+ 0xda, 0x78, 0x56, 0x6f, 0x7e, 0xca, 0xcd, 0x7e, 0xd0, 0x4f, 0x24, 0xea,
+ 0xa9, 0x38, 0x87, 0x16, 0x8b, 0x9a, 0x1c, 0x38, 0xdc, 0xc4, 0x94, 0x8f,
+ 0x34, 0xfa, 0x95, 0x92, 0xc7, 0x10, 0xe6, 0x90, 0xe8, 0x07, 0x48, 0x1e,
+ 0x28, 0x61, 0xa1, 0xcd, 0x0e, 0xf1, 0xe7, 0xe2, 0x8d, 0x90, 0xc6, 0x7a,
+ 0x60, 0xd6, 0xe9, 0x67, 0xe7, 0x78, 0xc7, 0x64, 0x0a, 0x2d, 0x69, 0xb8,
+ 0xd6, 0x7e, 0x8b, 0xc4, 0x37, 0xfa, 0xc1, 0x25, 0x28, 0x8d, 0xa7, 0xc9,
+ 0x6e, 0x7d, 0x4b, 0xc5, 0x66, 0x47, 0x5d, 0xae, 0xf7, 0xea, 0x71, 0xaa,
+ 0x7b, 0x9b, 0x3e, 0x2e, 0x86, 0x83, 0xf8, 0x95, 0x8f, 0x73, 0x63, 0x80,
+ 0xac, 0x74, 0x4c, 0xe3, 0x83, 0xd5, 0x71, 0x72, 0x09, 0x2d, 0x68, 0xb0,
+ 0x36, 0xc2, 0x3f, 0x71, 0xde, 0xd7, 0x7e, 0x54, 0x94, 0xfa, 0x8d, 0x88,
+ 0x45, 0x4a, 0xfb, 0x36, 0x34, 0xb8, 0x89, 0x85, 0x00, 0xe0, 0xf6, 0x87,
+ 0x0e, 0xfa, 0xa4, 0xa5, 0xd3, 0x8e, 0x50, 0xdc, 0xed, 0x01, 0x53, 0x6c,
+ 0xe8, 0x92, 0x9a, 0x9d, 0x7e, 0xaf, 0x5b, 0xa2, 0x66, 0x30, 0x6a, 0x45,
+ 0x65, 0xc3, 0xfb, 0x3e, 0xef, 0xe0, 0xb9, 0xcf, 0xa8, 0x97, 0x01, 0x93,
+ 0x7d, 0x33, 0xf4, 0xeb, 0x91, 0xf1, 0x69, 0xff, 0x00, 0x6a, 0xeb, 0xee,
+ 0xac, 0x5d, 0x8f, 0x6d, 0x5d, 0x9e, 0xc7, 0x37, 0xef, 0x04, 0x2e, 0x0b,
+ 0xea, 0x7d, 0x86, 0x9e, 0xb2, 0xc6, 0x3b, 0xf3, 0xb7, 0x30, 0xfc, 0xc1,
+ 0xfe, 0x29, 0x29, 0xef, 0x9c, 0x13, 0x04, 0x47, 0x05, 0x08, 0x49, 0x4c,
+ 0xc3, 0x43, 0xd8, 0x58, 0xed, 0x43, 0x81, 0x07, 0xe0, 0x57, 0x8d, 0x59,
+ 0x5b, 0xa8, 0xc9, 0xb6, 0x87, 0x68, 0x6b, 0x7b, 0x98, 0x47, 0xf5, 0x49,
+ 0x6f, 0xf0, 0x5e, 0xcc, 0xc5, 0xe5, 0xdf, 0x5b, 0x31, 0x7e, 0xcb, 0xf5,
+ 0x8f, 0x2d, 0xad, 0xfa, 0x36, 0xed, 0xb8, 0x47, 0x6f, 0x50, 0x49, 0xfc,
+ 0x65, 0x25, 0x39, 0xed, 0x3a, 0x26, 0xb4, 0xb7, 0x7b, 0x1c, 0xe3, 0x12,
+ 0x23, 0xee, 0x48, 0x03, 0x12, 0x14, 0x6c, 0x7b, 0x40, 0x6e, 0xee, 0xce,
+ 0x12, 0x92, 0x99, 0x9b, 0x5e, 0x08, 0x0d, 0x64, 0x8f, 0xcd, 0x95, 0x2d,
+ 0xaf, 0x74, 0x17, 0x9d, 0x4f, 0x0d, 0x1c, 0x27, 0xaf, 0xd3, 0x2e, 0xfa,
+ 0x72, 0x4f, 0x87, 0x31, 0xe6, 0x8a, 0x0b, 0x78, 0x60, 0xd7, 0xc4, 0xa4,
+ 0xa6, 0x78, 0x97, 0x59, 0x8f, 0x90, 0xcb, 0x69, 0x30, 0xfa, 0x5c, 0x1c,
+ 0xd3, 0xfc, 0xa1, 0xaa, 0xec, 0xfe, 0xb4, 0x65, 0xe3, 0xf5, 0x0f, 0xab,
+ 0x12, 0xd8, 0x2f, 0xca, 0x0c, 0x75, 0x6d, 0xee, 0x1c, 0xd2, 0x09, 0xfb,
+ 0xa2, 0x17, 0x17, 0x5d, 0x71, 0xdf, 0xfd, 0xe8, 0x99, 0x59, 0x19, 0x15,
+ 0x62, 0x93, 0x5b, 0x89, 0x14, 0x82, 0x7d, 0x32, 0x24, 0x10, 0xee, 0x4f,
+ 0xc9, 0x25, 0x37, 0xfe, 0xa7, 0xf5, 0x5f, 0xd9, 0x2d, 0xca, 0x6d, 0xa3,
+ 0x73, 0x2c, 0x6b, 0x48, 0x03, 0xf7, 0xda, 0x74, 0xfc, 0xab, 0xa2, 0x67,
+ 0x4e, 0xcf, 0xeb, 0x4f, 0xf5, 0xfa, 0x91, 0x76, 0x3e, 0x19, 0xd5, 0xb4,
+ 0x0d, 0x2c, 0xb0, 0x7f, 0x2b, 0xf7, 0x47, 0xe2, 0xb1, 0xfe, 0xa4, 0xf4,
+ 0xbc, 0x9c, 0xac, 0x86, 0xf5, 0x37, 0x39, 0xa3, 0x0e, 0xaf, 0xcd, 0x20,
+ 0x3b, 0xd4, 0xb0, 0x83, 0xc7, 0x86, 0xd9, 0x1a, 0xae, 0xe9, 0xc5, 0x25,
+ 0x20, 0xaa, 0x9a, 0x71, 0xea, 0x6d, 0x34, 0x30, 0x57, 0x53, 0x04, 0x35,
+ 0x8d, 0x10, 0x02, 0x92, 0x72, 0x9a, 0x12, 0x52, 0xc9, 0x27, 0x84, 0xa1,
+ 0x25, 0x2c, 0x96, 0xa9, 0x42, 0x50, 0x92, 0x9e, 0x69, 0x85, 0xee, 0x69,
+ 0x24, 0xea, 0x0c, 0x00, 0x9c, 0x5b, 0x71, 0xfc, 0xed, 0x02, 0x08, 0x0f,
+ 0xda, 0xef, 0x74, 0x89, 0xdc, 0x7e, 0x6a, 0x42, 0xd0, 0x60, 0x12, 0x08,
+ 0xfc, 0xdf, 0x32, 0x92, 0x93, 0x1b, 0x6e, 0x06, 0x01, 0xe7, 0xba, 0x46,
+ 0xdc, 0x96, 0x80, 0xe7, 0x3a, 0x27, 0xe8, 0xa0, 0xba, 0xe2, 0x60, 0x11,
+ 0x2f, 0xdc, 0x24, 0x79, 0x29, 0xdb, 0x68, 0x22, 0x5c, 0x22, 0x34, 0x1e,
+ 0x69, 0x29, 0x2b, 0x2d, 0xc8, 0xd3, 0x59, 0x5c, 0xf6, 0x6d, 0xd8, 0xd9,
+ 0x3d, 0x4e, 0xff, 0x00, 0x59, 0xe7, 0x7d, 0x2e, 0x83, 0x59, 0xd3, 0xe6,
+ 0xb7, 0x19, 0x6c, 0x49, 0xe1, 0xcd, 0x3b, 0x8a, 0xe7, 0x3e, 0xb5, 0xf4,
+ 0xbb, 0x7d, 0x46, 0xf5, 0x6c, 0x6d, 0x0b, 0xa0, 0x5c, 0x07, 0x20, 0xf6,
+ 0x72, 0x4a, 0x44, 0x72, 0x31, 0x6c, 0xb8, 0x6e, 0x7e, 0xda, 0xc6, 0x81,
+ 0xb1, 0xa2, 0xb7, 0x6e, 0xda, 0x19, 0xbe, 0x97, 0x87, 0x33, 0xb1, 0x3f,
+ 0xc1, 0x60, 0x63, 0xdd, 0xea, 0xb4, 0x38, 0xe8, 0xf0, 0x61, 0xc3, 0xf8,
+ 0xad, 0x4c, 0xfb, 0x59, 0x4b, 0x19, 0x8e, 0xcd, 0x37, 0x34, 0x38, 0xf7,
+ 0x82, 0x42, 0x4a, 0x6a, 0x3f, 0x28, 0xd8, 0x5c, 0xe7, 0xfc, 0x14, 0xb1,
+ 0x8b, 0x89, 0xf6, 0xcc, 0x1e, 0x15, 0x46, 0x30, 0xd8, 0xed, 0xad, 0x92,
+ 0xd1, 0xa9, 0x57, 0xf0, 0x5c, 0x19, 0x6e, 0xc9, 0xf7, 0x7e, 0x6c, 0xa4,
+ 0xa4, 0x56, 0x19, 0xaf, 0xd0, 0xa1, 0xa4, 0x3a, 0x7f, 0x48, 0xe7, 0x3a,
+ 0x43, 0x88, 0xe3, 0x6e, 0x9a, 0x72, 0xaa, 0xba, 0x9c, 0x86, 0x7b, 0x8c,
+ 0x37, 0x6e, 0xa0, 0xf9, 0xab, 0x8e, 0xd5, 0xff, 0x00, 0x46, 0x0f, 0x8b,
+ 0x54, 0x2d, 0x2e, 0x2d, 0xe6, 0x7f, 0x04, 0x94, 0xd9, 0x61, 0xf5, 0xa8,
+ 0x16, 0x68, 0x64, 0x6b, 0xf1, 0x1c, 0xaa, 0xae, 0x02, 0x4e, 0xba, 0xa7,
+ 0xc4, 0x16, 0xba, 0x87, 0xb1, 0x9c, 0x07, 0x1d, 0x52, 0x14, 0xb9, 0xa0,
+ 0x93, 0xf4, 0x92, 0x53, 0xdc, 0xf4, 0xee, 0xaf, 0x6e, 0x67, 0x4e, 0xa1,
+ 0xcf, 0xf7, 0x38, 0x34, 0x35, 0xc7, 0xf9, 0x4d, 0xd3, 0x55, 0x61, 0xbd,
+ 0x55, 0xf5, 0x82, 0x36, 0xc8, 0x03, 0x45, 0xcc, 0xfd, 0x5b, 0xca, 0x3f,
+ 0xa4, 0xc4, 0x3d, 0xce, 0xf6, 0xff, 0x00, 0x15, 0xb6, 0xe0, 0x24, 0xcc,
+ 0x24, 0xa6, 0xd7, 0xed, 0x57, 0xec, 0xf7, 0x34, 0x40, 0x29, 0xdb, 0xd5,
+ 0xec, 0x24, 0xef, 0x6c, 0x56, 0x74, 0x11, 0xca, 0xa0, 0xd7, 0xb7, 0xd4,
+ 0x73, 0x49, 0x80, 0x3b, 0x1e, 0x11, 0x09, 0x61, 0xf7, 0x11, 0x06, 0x62,
+ 0x3b, 0x4a, 0x4a, 0x74, 0xcf, 0x55, 0x7d, 0x64, 0x48, 0x0e, 0x61, 0xd4,
+ 0x1f, 0x25, 0xc5, 0xe1, 0x58, 0x71, 0xba, 0xeb, 0x9e, 0xdd, 0x36, 0x5d,
+ 0xb8, 0x0f, 0x2d, 0xd2, 0xba, 0x26, 0x81, 0x3b, 0x3b, 0x3b, 0xb1, 0xf1,
+ 0x5c, 0xff, 0x00, 0x50, 0x67, 0xd9, 0xfa, 0xcb, 0x88, 0xe1, 0xd0, 0xef,
+ 0xc1, 0x25, 0x3d, 0x81, 0xeb, 0x62, 0x49, 0x23, 0x43, 0xa0, 0x85, 0x06,
+ 0xf5, 0xa0, 0xc6, 0xc3, 0x86, 0xe3, 0x3d, 0xfc, 0x15, 0x0d, 0x8c, 0x2d,
+ 0x0e, 0x1c, 0x18, 0x30, 0xa2, 0xfa, 0xc1, 0x23, 0x69, 0x13, 0xe0, 0x92,
+ 0x9d, 0x8a, 0xba, 0xed, 0x04, 0xc1, 0x69, 0x0b, 0x81, 0xfa, 0xdb, 0x94,
+ 0x32, 0xfe, 0xb0, 0xdc, 0xf6, 0x03, 0xb4, 0x32, 0xb6, 0x8f, 0x80, 0x6c,
+ 0xfe, 0x52, 0xba, 0x96, 0xd7, 0x26, 0x36, 0xc9, 0x98, 0x5c, 0xb7, 0xd6,
+ 0x3c, 0x6c, 0x8a, 0xba, 0xc8, 0xb0, 0x34, 0x8a, 0x2f, 0xac, 0x1f, 0x53,
+ 0x80, 0x0b, 0x44, 0x38, 0x6e, 0xf9, 0x24, 0xa6, 0x80, 0x78, 0x15, 0x81,
+ 0xc4, 0x05, 0x5e, 0x43, 0x9f, 0xae, 0xbd, 0xe1, 0x47, 0xd5, 0xd0, 0x91,
+ 0xc0, 0xe1, 0x13, 0x11, 0xb2, 0x4b, 0x8f, 0x27, 0x8d, 0x12, 0x52, 0x76,
+ 0x8d, 0xac, 0xd4, 0x06, 0x34, 0xf6, 0xee, 0x54, 0x83, 0xbb, 0x06, 0xfd,
+ 0xea, 0x65, 0xa0, 0x6b, 0x1e, 0xef, 0xde, 0x3c, 0xa1, 0x9e, 0x52, 0x52,
+ 0x46, 0xda, 0x42, 0x27, 0xae, 0x74, 0x7f, 0x87, 0x3f, 0x15, 0x58, 0xf9,
+ 0xe8, 0x86, 0xf7, 0xc5, 0x6f, 0x09, 0x29, 0xf4, 0xee, 0x9d, 0xd7, 0x31,
+ 0x2d, 0xc0, 0xa2, 0xc0, 0xd0, 0xc2, 0xe6, 0x0d, 0xcc, 0x68, 0x01, 0xa1,
+ 0xc3, 0x43, 0x00, 0x22, 0x3b, 0xad, 0x63, 0x69, 0xe2, 0xb9, 0x0f, 0xab,
+ 0x2f, 0xf5, 0xb0, 0xac, 0xae, 0x25, 0xd5, 0xbf, 0x4f, 0x83, 0x87, 0xfb,
+ 0x16, 0x99, 0xa9, 0xfa, 0xee, 0x68, 0x81, 0xc1, 0x25, 0x25, 0x3a, 0x39,
+ 0x99, 0xe6, 0xd7, 0x6f, 0xa6, 0xc0, 0xd0, 0x04, 0x06, 0x93, 0xa2, 0x15,
+ 0x39, 0xd9, 0x4c, 0x01, 0xdb, 0x9a, 0xe7, 0x0e, 0x5b, 0x3a, 0x42, 0xaa,
+ 0x28, 0xdd, 0xb7, 0x8f, 0x18, 0x51, 0x0c, 0x73, 0x5a, 0x4c, 0x41, 0x27,
+ 0xf0, 0x49, 0x4e, 0xf9, 0xea, 0x58, 0xa2, 0xa0, 0xed, 0xe0, 0xbe, 0x38,
+ 0xf3, 0x54, 0xb2, 0x3a, 0x95, 0xf6, 0x33, 0x6d, 0x5e, 0xc3, 0x3c, 0xac,
+ 0xcf, 0x4d, 0xc0, 0x7c, 0x78, 0x09, 0x8b, 0x6d, 0x1a, 0x9e, 0x3e, 0x3d,
+ 0xd2, 0x53, 0xbf, 0x8d, 0x9f, 0x5b, 0xab, 0x68, 0xb8, 0xed, 0x7f, 0x05,
+ 0x13, 0xed, 0x98, 0xff, 0x00, 0xbe, 0x39, 0x5c, 0xef, 0xe9, 0x63, 0x40,
+ 0x64, 0xa5, 0x36, 0x47, 0x92, 0x4a, 0x43, 0xb5, 0xe1, 0x81, 0xee, 0x2d,
+ 0xdc, 0x35, 0x06, 0x79, 0xf1, 0xf8, 0xa1, 0x1b, 0xaf, 0xb2, 0xd0, 0xfa,
+ 0x99, 0x2c, 0x67, 0x0f, 0xef, 0xf7, 0x79, 0x27, 0xfb, 0x1b, 0xdc, 0xca,
+ 0xdc, 0x2e, 0x6b, 0xf6, 0xce, 0xf0, 0x24, 0x40, 0xed, 0x28, 0x79, 0x85,
+ 0xcc, 0x7b, 0x3d, 0x01, 0xb0, 0x10, 0x1c, 0xe3, 0x3a, 0x6e, 0xee, 0x7c,
+ 0x82, 0x4a, 0x53, 0xb2, 0x2f, 0x32, 0xc1, 0xf4, 0x5c, 0x63, 0x77, 0xe7,
+ 0x49, 0x5a, 0x0d, 0xa8, 0x86, 0x34, 0xda, 0x36, 0xb8, 0x0d, 0x03, 0x8e,
+ 0xa5, 0x55, 0xa3, 0x24, 0xb5, 0xbe, 0xa9, 0x6f, 0xa8, 0x40, 0xd5, 0xe0,
+ 0x68, 0x0f, 0x8c, 0x29, 0x93, 0x63, 0xed, 0xdf, 0xb8, 0xba, 0x44, 0xe8,
+ 0x64, 0xff, 0x00, 0x72, 0x4a, 0x64, 0x03, 0xd9, 0xbc, 0x9d, 0x1a, 0xfd,
+ 0x09, 0x45, 0xba, 0x9a, 0xef, 0xc2, 0x7e, 0x33, 0x8c, 0x7a, 0x8d, 0x3a,
+ 0x9e, 0xd1, 0xc4, 0x7c, 0xd4, 0x58, 0xe6, 0x8b, 0x4b, 0x1c, 0x41, 0x3c,
+ 0x41, 0xd3, 0x58, 0x9e, 0x13, 0x39, 0xd0, 0xe2, 0x6c, 0x2d, 0x0d, 0x70,
+ 0x81, 0xde, 0x25, 0x25, 0x3c, 0x55, 0x38, 0x77, 0x53, 0xd4, 0x9d, 0x87,
+ 0x73, 0x60, 0xba, 0x5a, 0x47, 0xe2, 0x0a, 0x9e, 0x5b, 0xc3, 0xb2, 0x5e,
+ 0xd0, 0x77, 0x06, 0xfb, 0x41, 0xf2, 0x6e, 0x92, 0xba, 0x4f, 0xac, 0x6c,
+ 0xc7, 0xa2, 0x9a, 0xfa, 0x8b, 0xa0, 0x64, 0xd6, 0x0d, 0x74, 0x6d, 0xe1,
+ 0xc1, 0xc2, 0x35, 0xf8, 0x2e, 0x52, 0x80, 0x6c, 0x3b, 0x8a, 0x4a, 0x6d,
+ 0xe0, 0x38, 0x56, 0x4d, 0x4f, 0x10, 0x2c, 0xe1, 0xc8, 0x82, 0x97, 0x36,
+ 0xe0, 0x5a, 0x67, 0x69, 0xfb, 0x94, 0x1d, 0x54, 0xd6, 0x40, 0xe5, 0xba,
+ 0x8f, 0x82, 0xb5, 0x82, 0xe8, 0x61, 0xdc, 0x37, 0x6b, 0x06, 0x52, 0x53,
+ 0x17, 0xb7, 0x6e, 0xad, 0xee, 0x24, 0x15, 0x56, 0xe2, 0xd2, 0xc3, 0x26,
+ 0x1d, 0xd8, 0xf8, 0xab, 0xf9, 0x0f, 0xaa, 0xcf, 0x63, 0x06, 0xd6, 0xb3,
+ 0x40, 0xc1, 0xe0, 0xb3, 0xb2, 0x5b, 0xb5, 0xfb, 0x35, 0xf9, 0xa4, 0xa4,
+ 0x9d, 0x2a, 0xd2, 0xd3, 0x6d, 0x71, 0xba, 0x20, 0x91, 0xf1, 0xd1, 0x1b,
+ 0x2a, 0xb3, 0x0d, 0xdf, 0x3e, 0xee, 0xde, 0x4a, 0x96, 0x15, 0xa6, 0x8e,
+ 0xa5, 0x51, 0x03, 0x73, 0x1e, 0x76, 0x39, 0xa3, 0x49, 0x05, 0x68, 0x75,
+ 0x2c, 0xda, 0x85, 0xa1, 0xac, 0x6f, 0xb4, 0x71, 0x29, 0x29, 0x16, 0x2d,
+ 0x8f, 0xc7, 0xb9, 0xb6, 0xb4, 0x99, 0x61, 0x1a, 0xf9, 0x2e, 0xab, 0xd5,
+ 0xae, 0xd6, 0x56, 0x5a, 0x74, 0xb4, 0x6e, 0x07, 0xc0, 0x2e, 0x2f, 0xed,
+ 0x6c, 0x0e, 0x80, 0xd5, 0xd5, 0x74, 0x22, 0xeb, 0x7a, 0x45, 0x77, 0x3c,
+ 0x68, 0xd7, 0xbe, 0x09, 0xe3, 0x42, 0x92, 0x92, 0x99, 0x36, 0x48, 0xf9,
+ 0xff, 0x00, 0x04, 0x72, 0xf0, 0x76, 0x4c, 0x92, 0x5a, 0x26, 0x3c, 0x65,
+ 0x46, 0xd7, 0xb0, 0x7d, 0x16, 0xc1, 0x3a, 0xee, 0xf3, 0x45, 0xad, 0xad,
+ 0x71, 0xdc, 0x40, 0xf3, 0xf8, 0x47, 0x29, 0x29, 0x15, 0x96, 0x39, 0x80,
+ 0x1d, 0x5c, 0xe0, 0xe1, 0xb7, 0xcc, 0x15, 0x9b, 0xd7, 0xc3, 0x5b, 0x9b,
+ 0x8d, 0x68, 0x00, 0x07, 0xb2, 0x34, 0xf2, 0x3f, 0xed, 0x5a, 0xb7, 0xb5,
+ 0x84, 0xb3, 0x69, 0xd0, 0x12, 0x4b, 0x8e, 0x9c, 0xf0, 0x16, 0x67, 0x5f,
+ 0x67, 0xe8, 0x31, 0xed, 0x1a, 0xec, 0x71, 0x68, 0x3e, 0x5c, 0xa4, 0xa7,
+ 0x4b, 0x1d, 0xcc, 0xb3, 0x1d, 0x92, 0x48, 0x25, 0xb1, 0x3f, 0x82, 0x30,
+ 0x01, 0xa3, 0x6d, 0x9f, 0x4e, 0x34, 0xff, 0x00, 0x7a, 0xa7, 0xd3, 0x6c,
+ 0xac, 0xd0, 0xc9, 0x6f, 0x32, 0x39, 0xe1, 0x1d, 0xfe, 0xa5, 0x6d, 0x0f,
+ 0x07, 0xd4, 0xab, 0x70, 0xd4, 0xe8, 0xe1, 0xe4, 0x92, 0x99, 0xd4, 0xe6,
+ 0x92, 0xe0, 0x5d, 0xb5, 0xc0, 0xf2, 0xb3, 0x7e, 0xb8, 0x3c, 0x8e, 0x9c,
+ 0xd6, 0xb9, 0xbb, 0xd8, 0xe7, 0x02, 0xed, 0xbe, 0x31, 0xa1, 0x5a, 0x5b,
+ 0xab, 0x1b, 0x8c, 0x8f, 0x77, 0x04, 0xf3, 0xf1, 0x59, 0xdd, 0x59, 0xfe,
+ 0xb3, 0xc6, 0x2b, 0xda, 0x76, 0xba, 0xbd, 0xce, 0x77, 0xe6, 0xf8, 0x72,
+ 0x92, 0x9e, 0x26, 0xa6, 0x9b, 0x9d, 0x03, 0x46, 0x8f, 0xc1, 0x69, 0x50,
+ 0xc1, 0x58, 0xef, 0x03, 0x85, 0x52, 0xad, 0xb8, 0xf7, 0xdd, 0x5b, 0xf9,
+ 0x6b, 0xa0, 0x0f, 0x9a, 0xbc, 0x01, 0x0d, 0x25, 0xda, 0x92, 0x65, 0x25,
+ 0x30, 0xb1, 0xee, 0x27, 0xc1, 0x44, 0x72, 0x9e, 0xcd, 0x0c, 0x70, 0x7b,
+ 0xa6, 0x98, 0xd5, 0x25, 0x2b, 0x42, 0x7e, 0x08, 0x36, 0xfd, 0x03, 0xe6,
+ 0x42, 0x26, 0xa0, 0x13, 0xe3, 0xa4, 0xa8, 0x5a, 0x62, 0xb8, 0x1c, 0x94,
+ 0x94, 0xf4, 0x1f, 0x52, 0x1c, 0xc3, 0x66, 0x65, 0x6e, 0xe4, 0xb1, 0x8e,
+ 0x03, 0xca, 0x48, 0x3f, 0x95, 0x74, 0x8e, 0x6b, 0x5c, 0x27, 0xe6, 0x02,
+ 0xe4, 0xfe, 0xa4, 0x41, 0xcd, 0xcb, 0x1b, 0xa1, 0xc6, 0xa1, 0xb4, 0x1e,
+ 0xf0, 0xf0, 0xba, 0x87, 0x58, 0xda, 0xec, 0x73, 0x59, 0xc4, 0x7e, 0x54,
+ 0x94, 0xa6, 0x3a, 0x48, 0x11, 0x1a, 0x10, 0x9f, 0x68, 0x23, 0x42, 0x06,
+ 0xe1, 0xa9, 0xf3, 0x94, 0x9c, 0x0b, 0x62, 0xd8, 0x89, 0xd0, 0x8e, 0x07,
+ 0x1c, 0xa1, 0x17, 0x9b, 0x37, 0x56, 0xd0, 0x26, 0xb0, 0x1c, 0x4f, 0xcf,
+ 0x44, 0x94, 0xbd, 0x2d, 0x65, 0xa4, 0xee, 0x10, 0xe6, 0xe8, 0x04, 0xe9,
+ 0xa7, 0x74, 0x47, 0x54, 0xd7, 0x02, 0x64, 0x76, 0x82, 0x84, 0xe9, 0x6f,
+ 0xe9, 0x2b, 0xd2, 0x62, 0x7c, 0x20, 0xe8, 0xac, 0x3c, 0xd7, 0x53, 0x0f,
+ 0x72, 0x07, 0xb8, 0xf9, 0x91, 0xc2, 0x4a, 0x46, 0x6b, 0x2c, 0x61, 0xee,
+ 0x4e, 0x80, 0xa8, 0xfa, 0x2c, 0x99, 0x8f, 0x6f, 0x87, 0x9a, 0x60, 0x4b,
+ 0x9b, 0xc9, 0xf1, 0x9f, 0x25, 0x3d, 0xc7, 0x74, 0xc7, 0x94, 0xf9, 0xf2,
+ 0x92, 0x9c, 0xeb, 0x45, 0x4d, 0x3b, 0x00, 0x21, 0xe0, 0x35, 0xae, 0x03,
+ 0x56, 0x3b, 0x5d, 0x54, 0x2d, 0xdd, 0x4e, 0x4e, 0xfb, 0x7e, 0x84, 0x97,
+ 0x12, 0x46, 0xed, 0x38, 0x01, 0x4a, 0xbc, 0xb7, 0x58, 0xe0, 0x2e, 0xf4,
+ 0xeb, 0x2d, 0xd0, 0x13, 0xab, 0x5c, 0x3c, 0x7c, 0x93, 0x0a, 0xaf, 0x75,
+ 0xd5, 0xda, 0xdb, 0x77, 0x31, 0xb2, 0x08, 0x1e, 0xe6, 0x93, 0xdc, 0xba,
+ 0x7c, 0x12, 0x52, 0xff, 0x00, 0x6d, 0xa6, 0xca, 0xbd, 0x16, 0x56, 0xe7,
+ 0x35, 0xcf, 0x1a, 0x1f, 0x66, 0xd2, 0x7b, 0x95, 0x66, 0xba, 0x6a, 0x71,
+ 0x0d, 0xb1, 0xdb, 0x43, 0x24, 0x35, 0x83, 0x49, 0x1c, 0xca, 0x19, 0xb6,
+ 0xab, 0x18, 0x1f, 0x59, 0x6d, 0x8f, 0x60, 0x24, 0xb7, 0xe8, 0x99, 0x1c,
+ 0xfc, 0xca, 0x1d, 0xb6, 0x5b, 0x68, 0xda, 0xd6, 0x92, 0xd2, 0x0b, 0x9a,
+ 0x09, 0xd4, 0x69, 0xf9, 0xde, 0x41, 0x25, 0x27, 0x67, 0xa2, 0xe0, 0x0d,
+ 0x63, 0x70, 0x20, 0xba, 0x4f, 0xc7, 0x90, 0x93, 0x6a, 0x16, 0x89, 0x70,
+ 0x16, 0x07, 0x0f, 0x6f, 0xe6, 0x81, 0x0a, 0xb5, 0x83, 0x26, 0x96, 0x39,
+ 0xa3, 0x63, 0x6c, 0x74, 0x16, 0x3b, 0xb1, 0x68, 0xd4, 0xc0, 0xec, 0x51,
+ 0xad, 0xbb, 0x2d, 0x8c, 0x6b, 0x76, 0x81, 0x75, 0xa3, 0xf4, 0x63, 0xc3,
+ 0x8d, 0x52, 0x53, 0xcd, 0xfd, 0x69, 0xba, 0xcb, 0x73, 0xeb, 0xc4, 0x03,
+ 0x6b, 0x2a, 0x60, 0x25, 0xa3, 0xf7, 0x9d, 0xfe, 0xc4, 0x0c, 0x4a, 0x36,
+ 0x33, 0xe2, 0xb4, 0x3a, 0xff, 0x00, 0x4c, 0xcb, 0xa7, 0x2a, 0xbc, 0xac,
+ 0x97, 0x35, 0xce, 0xb8, 0x00, 0xe8, 0x3a, 0xca, 0x1b, 0x69, 0x2c, 0xdb,
+ 0xd8, 0x10, 0x92, 0x9a, 0xcf, 0xf5, 0x2b, 0x78, 0x23, 0xbf, 0x05, 0x59,
+ 0xb0, 0xb6, 0x9a, 0x7d, 0x40, 0xdd, 0xb6, 0x38, 0x41, 0xf0, 0x3e, 0x68,
+ 0xf6, 0x63, 0x80, 0xd0, 0xe7, 0x1d, 0x06, 0xab, 0x1f, 0x37, 0x38, 0x5f,
+ 0x7f, 0xb2, 0x43, 0x04, 0x00, 0xce, 0x75, 0x1a, 0x68, 0x92, 0x92, 0xd6,
+ 0xf2, 0x0c, 0x9f, 0xcd, 0xd4, 0x94, 0x07, 0x39, 0xd6, 0x58, 0x6c, 0x3a,
+ 0x84, 0x52, 0x0e, 0xd2, 0x06, 0xbb, 0xb9, 0x4d, 0x64, 0x35, 0xbe, 0xd1,
+ 0xed, 0x23, 0x8f, 0x04, 0x94, 0xcb, 0x0f, 0x05, 0xef, 0xb5, 0x99, 0xb7,
+ 0x45, 0x78, 0xac, 0x32, 0x1e, 0x4c, 0x17, 0xb8, 0x7e, 0x6b, 0x47, 0x3c,
+ 0xa1, 0x66, 0x3d, 0xb6, 0xe4, 0x12, 0x0e, 0x93, 0x2a, 0xbb, 0xec, 0xbb,
+ 0x60, 0x61, 0x74, 0xb4, 0x70, 0x3c, 0x15, 0xae, 0x9d, 0xd2, 0xf2, 0xfa,
+ 0x85, 0x77, 0x1c, 0x77, 0x31, 0xbe, 0x90, 0x04, 0x87, 0x93, 0xb9, 0xd2,
+ 0x63, 0x4d, 0x12, 0x53, 0x45, 0xe7, 0xfe, 0x91, 0x80, 0xbb, 0x3e, 0x89,
+ 0x60, 0xa7, 0xa5, 0xe3, 0xd2, 0xf9, 0x12, 0x0b, 0xc0, 0x8f, 0xde, 0x24,
+ 0x85, 0x97, 0xd3, 0x3e, 0xab, 0xbd, 0xf6, 0x36, 0xec, 0xff, 0x00, 0x75,
+ 0x4d, 0xe2, 0xaa, 0xa7, 0xdc, 0xe1, 0xd9, 0xce, 0x3f, 0xc1, 0x6e, 0xde,
+ 0xf3, 0x49, 0x14, 0x31, 0x8c, 0xac, 0xb0, 0x69, 0xde, 0x1a, 0x34, 0x49,
+ 0x4c, 0xc1, 0x99, 0x03, 0xb4, 0xea, 0x3b, 0x03, 0xc2, 0x6c, 0xad, 0xb5,
+ 0x56, 0xc6, 0x07, 0xcd, 0x8e, 0xd6, 0xc1, 0x1f, 0x31, 0xaa, 0x6a, 0x45,
+ 0x36, 0x57, 0xea, 0x13, 0xbc, 0x49, 0x1f, 0xa3, 0x33, 0x2e, 0xe6, 0x20,
+ 0xa9, 0xfe, 0x8b, 0x20, 0x0b, 0x2c, 0x63, 0xd8, 0xc1, 0xfa, 0x23, 0x04,
+ 0x17, 0x82, 0x38, 0x2e, 0x04, 0x78, 0x24, 0xa6, 0x15, 0xe5, 0xb9, 0xef,
+ 0x0d, 0x20, 0x16, 0x7d, 0x1e, 0x3b, 0x76, 0x55, 0xfa, 0xb5, 0x2e, 0x3d,
+ 0x30, 0x3c, 0x7d, 0x02, 0xf9, 0x13, 0xe5, 0xa2, 0xb4, 0xea, 0xe9, 0xa1,
+ 0xed, 0xf4, 0x2c, 0x36, 0x36, 0x60, 0x87, 0x08, 0x73, 0x49, 0xf1, 0x4d,
+ 0x98, 0x4d, 0x9d, 0x32, 0xda, 0xdd, 0x02, 0x09, 0x70, 0x03, 0xc4, 0x72,
+ 0x92, 0x9a, 0xbd, 0x2a, 0xc7, 0x3b, 0x1f, 0x6e, 0xdd, 0xc0, 0x1d, 0x44,
+ 0xc7, 0x2a, 0xe6, 0x4d, 0xae, 0x65, 0x6f, 0xa5, 0xce, 0x86, 0x91, 0x2e,
+ 0x23, 0x9d, 0xd1, 0xc7, 0xcd, 0x67, 0xfd, 0x5f, 0x0f, 0xb5, 0xce, 0xa4,
+ 0x10, 0xd2, 0x44, 0x82, 0x75, 0xe3, 0xc9, 0x5f, 0xcd, 0xaf, 0x13, 0x04,
+ 0x7a, 0x99, 0xaf, 0x37, 0xd8, 0x5d, 0x35, 0x63, 0x8e, 0x5c, 0x7b, 0x6e,
+ 0x03, 0xf2, 0x24, 0xa5, 0x63, 0xb3, 0x1e, 0xba, 0x1d, 0x9b, 0x94, 0xef,
+ 0x4a, 0x90, 0x21, 0xa0, 0xfe, 0x77, 0x98, 0x95, 0x9b, 0x9f, 0x9d, 0xd4,
+ 0xb3, 0xa8, 0xb2, 0xec, 0x4a, 0xfd, 0x3c, 0x1a, 0x9a, 0x76, 0x57, 0xfe,
+ 0x12, 0xe1, 0xc6, 0xe6, 0x8e, 0x48, 0x1e, 0x28, 0xcf, 0xa6, 0xfc, 0xf7,
+ 0x0c, 0x8c, 0xf3, 0x0e, 0xe7, 0x1f, 0x17, 0xf3, 0x1a, 0x07, 0x05, 0xfd,
+ 0xa7, 0xc0, 0x70, 0xad, 0xb4, 0xc3, 0xfd, 0x47, 0xfd, 0x20, 0x20, 0xb5,
+ 0xb0, 0x3b, 0xf6, 0x49, 0x4f, 0x3b, 0xd3, 0xbe, 0xaf, 0x01, 0x85, 0x6e,
+ 0x76, 0x6c, 0x9c, 0x8b, 0x19, 0xbe, 0x86, 0x49, 0x1b, 0x35, 0xe5, 0xfe,
+ 0x7e, 0x48, 0x76, 0xb1, 0xb5, 0xb7, 0xde, 0xf0, 0xd0, 0x38, 0xe0, 0x7e,
+ 0x57, 0x2e, 0xa5, 0xfb, 0x5f, 0x85, 0x9b, 0x4d, 0xde, 0xfa, 0xcd, 0x65,
+ 0xcd, 0x2e, 0x11, 0x0e, 0x02, 0x57, 0x1a, 0x6a, 0xae, 0xcb, 0xaa, 0x60,
+ 0x60, 0x24, 0xbd, 0xa3, 0xc7, 0x44, 0x94, 0xb6, 0xfa, 0x41, 0x99, 0xdf,
+ 0xf3, 0x03, 0xfb, 0xd2, 0xf5, 0x5a, 0x08, 0xd3, 0x9e, 0x03, 0x44, 0xfe,
+ 0x25, 0x17, 0x39, 0x86, 0xac, 0x9f, 0xb3, 0x10, 0x1b, 0xe9, 0x12, 0xd2,
+ 0xd0, 0x23, 0x82, 0x86, 0x00, 0xdc, 0x5d, 0xd9, 0x80, 0x47, 0xc4, 0x84,
+ 0x94, 0xd8, 0xe9, 0x58, 0xe7, 0xa8, 0x75, 0x01, 0x53, 0x80, 0x15, 0xb1,
+ 0xae, 0x7b, 0x87, 0x26, 0x1b, 0xfe, 0xf5, 0x53, 0xa8, 0x96, 0x0b, 0xac,
+ 0x0c, 0xd1, 0x81, 0xee, 0x0d, 0x1e, 0x40, 0x98, 0x5a, 0x7f, 0x56, 0xdc,
+ 0x2b, 0xbb, 0x2e, 0xe7, 0x7d, 0x16, 0x63, 0xbf, 0x77, 0xf6, 0x8b, 0x40,
+ 0x58, 0xb9, 0x04, 0xba, 0x09, 0xe4, 0x82, 0x4f, 0xc4, 0xa4, 0xa7, 0x5f,
+ 0xea, 0x73, 0x6c, 0xfd, 0xa3, 0x63, 0xeb, 0x89, 0x6d, 0x4e, 0x24, 0x13,
+ 0x13, 0xab, 0x57, 0x5c, 0xf6, 0xd6, 0x5e, 0x5e, 0xc7, 0x48, 0x76, 0x84,
+ 0x1d, 0x1a, 0x0a, 0xe4, 0xfe, 0xa6, 0x06, 0x1e, 0xa0, 0xf6, 0x3f, 0x87,
+ 0xd6, 0xe8, 0x9f, 0xe4, 0xc3, 0x97, 0x55, 0x68, 0x63, 0x4d, 0x9e, 0x99,
+ 0x9a, 0xac, 0x24, 0xc3, 0x88, 0x10, 0x07, 0x7f, 0xbd, 0x25, 0x2c, 0xd7,
+ 0xdc, 0xe0, 0x6a, 0xb0, 0x43, 0x5e, 0x09, 0x6b, 0xa6, 0x75, 0x1f, 0xde,
+ 0x86, 0x48, 0x6c, 0x6c, 0xd4, 0xfd, 0x13, 0xe3, 0x24, 0xf0, 0xa0, 0x09,
+ 0xaf, 0x6b, 0xcb, 0xe4, 0x4c, 0x96, 0x90, 0x64, 0xc2, 0x8d, 0xed, 0x35,
+ 0xda, 0x1f, 0xac, 0xb8, 0xee, 0x82, 0x7f, 0x7b, 0xe8, 0x94, 0x94, 0x91,
+ 0xce, 0x69, 0xdc, 0xfd, 0x61, 0xd2, 0x36, 0x1f, 0xcd, 0x8d, 0x11, 0x1e,
+ 0xfd, 0xc3, 0xda, 0x0c, 0x40, 0x55, 0x7d, 0xd5, 0xb5, 0xe5, 0xd2, 0x0c,
+ 0x10, 0x1c, 0x78, 0x98, 0x47, 0x73, 0x76, 0xd4, 0x2b, 0x06, 0x4b, 0xd8,
+ 0x1d, 0x3d, 0xa4, 0xa4, 0xa6, 0x20, 0xbc, 0xc1, 0x69, 0xdb, 0xce, 0xa7,
+ 0xbe, 0xaa, 0xcc, 0x9f, 0x4f, 0x6c, 0x0d, 0xf1, 0x1d, 0xbc, 0x15, 0x60,
+ 0x1a, 0xda, 0x9a, 0xe2, 0x48, 0x73, 0x44, 0x78, 0xfb, 0x89, 0xd1, 0x3f,
+ 0xae, 0xcd, 0x91, 0xdb, 0x64, 0xef, 0xef, 0xf1, 0x49, 0x4e, 0x73, 0x1c,
+ 0xc6, 0x1d, 0x8f, 0x68, 0xb0, 0xb8, 0xcb, 0x5c, 0x7b, 0x0f, 0x04, 0xee,
+ 0xba, 0xa6, 0xee, 0x64, 0x86, 0x97, 0x68, 0xe2, 0xc2, 0x3e, 0x8f, 0x86,
+ 0xa8, 0xac, 0xab, 0xd4, 0x25, 0xcf, 0x60, 0x70, 0x32, 0x47, 0x6f, 0x9c,
+ 0x09, 0x53, 0xcd, 0x7e, 0x26, 0xd6, 0x3f, 0x1c, 0x30, 0x35, 0xa3, 0x6e,
+ 0xd7, 0x68, 0xe2, 0xef, 0xde, 0x29, 0x29, 0xa9, 0x51, 0xde, 0x1c, 0xda,
+ 0x4c, 0x56, 0x0f, 0xd2, 0x9f, 0xc4, 0x22, 0xdb, 0xf6, 0xaa, 0x30, 0x6c,
+ 0xb1, 0xac, 0x0e, 0x6b, 0xa6, 0x5c, 0x44, 0x92, 0x09, 0xee, 0xa3, 0x8f,
+ 0x4b, 0xf7, 0x3e, 0xca, 0x43, 0x76, 0xb2, 0x36, 0xb9, 0xa0, 0x7e, 0x00,
+ 0xab, 0x59, 0x4f, 0xc8, 0xb6, 0xb7, 0xd5, 0x6b, 0xb6, 0x31, 0xec, 0x04,
+ 0x34, 0x46, 0x84, 0x4f, 0x33, 0xdc, 0xf2, 0x92, 0x9c, 0x86, 0x1b, 0x8d,
+ 0x6d, 0x7b, 0x65, 0xad, 0xb7, 0x80, 0x34, 0x03, 0xc8, 0x4a, 0xd5, 0xe9,
+ 0x76, 0xe4, 0x59, 0x95, 0x5d, 0x79, 0x1a, 0x50, 0xc7, 0x13, 0x5b, 0x88,
+ 0xfa, 0x4e, 0x8e, 0xee, 0xee, 0xb3, 0x0d, 0x0f, 0x66, 0x25, 0x6e, 0x7c,
+ 0xcd, 0x6e, 0xf6, 0x34, 0x98, 0x03, 0xc6, 0x7e, 0x2a, 0xd7, 0x4e, 0xca,
+ 0xb4, 0xbc, 0x02, 0xe2, 0xfa, 0xec, 0xd1, 0xa1, 0x80, 0x7b, 0x5c, 0xde,
+ 0xc4, 0x76, 0x49, 0x4c, 0xfe, 0xb4, 0xbb, 0xd4, 0xca, 0xa8, 0xb4, 0xcb,
+ 0x5a, 0xe2, 0x15, 0x17, 0x1f, 0x7b, 0x1b, 0x13, 0x2a, 0xe7, 0x52, 0xaa,
+ 0xcb, 0x71, 0x9d, 0x7c, 0x7b, 0x58, 0x46, 0xa7, 0x99, 0x9f, 0xf6, 0xaa,
+ 0x34, 0xd6, 0xe7, 0xe5, 0x56, 0x3b, 0x40, 0x24, 0x24, 0xa6, 0x5d, 0x5a,
+ 0xd1, 0x56, 0x11, 0x3a, 0xee, 0x77, 0xb4, 0x7c, 0xd7, 0x38, 0xd6, 0xb5,
+ 0xa2, 0x79, 0x2b, 0x73, 0xad, 0x3f, 0x7d, 0xa7, 0x14, 0x68, 0xd1, 0xaf,
+ 0xdc, 0xb1, 0x1f, 0x59, 0xad, 0xdb, 0x4f, 0x29, 0x29, 0xd1, 0x6b, 0x3d,
+ 0x6a, 0x05, 0x90, 0x03, 0x8f, 0xb4, 0x8f, 0x82, 0x0b, 0x9c, 0x43, 0x4b,
+ 0x1d, 0xa8, 0xed, 0xe4, 0xa7, 0x83, 0x70, 0x68, 0x2c, 0x7c, 0x8e, 0xf2,
+ 0x3c, 0x21, 0x33, 0xc0, 0x24, 0xcf, 0xc8, 0xa4, 0xa6, 0xab, 0xc6, 0x8b,
+ 0x5f, 0xea, 0xae, 0x49, 0xa3, 0x2d, 0xc0, 0x18, 0xde, 0xc3, 0xcf, 0x06,
+ 0x08, 0x3a, 0xac, 0xb7, 0x36, 0x26, 0x35, 0x1e, 0x08, 0xdd, 0x2b, 0x20,
+ 0x62, 0xe6, 0xd3, 0x69, 0xfa, 0x25, 0xc5, 0x8f, 0x1e, 0x2d, 0x78, 0xda,
+ 0x7f, 0x2a, 0x4a, 0x7b, 0x43, 0x6b, 0x43, 0x5f, 0xb5, 0xe2, 0xb6, 0x6e,
+ 0xde, 0xd3, 0xc8, 0x69, 0xfc, 0xe6, 0xfc, 0xd5, 0x3a, 0x9d, 0x55, 0xc5,
+ 0xf6, 0x17, 0x6d, 0x63, 0x81, 0xda, 0xe7, 0x49, 0x33, 0xc2, 0x9b, 0x71,
+ 0x4d, 0x6d, 0xf6, 0x6d, 0x34, 0x9d, 0x00, 0x26, 0x0b, 0xbe, 0x01, 0x11,
+ 0xce, 0x2c, 0x6e, 0xd6, 0x30, 0x38, 0xb8, 0x6c, 0x66, 0x83, 0x57, 0x0e,
+ 0xff, 0x00, 0x20, 0x52, 0x53, 0x1a, 0x9f, 0xe8, 0xe3, 0x3b, 0x6e, 0x8e,
+ 0x2d, 0xed, 0xa9, 0xdd, 0xc9, 0x84, 0xf8, 0xf6, 0x5a, 0xe6, 0xbc, 0x5e,
+ 0x08, 0xb1, 0xec, 0x05, 0xba, 0x46, 0xa3, 0x51, 0xbb, 0xce, 0x11, 0x59,
+ 0x8d, 0x65, 0x2d, 0x6e, 0xf6, 0xb4, 0x96, 0x6b, 0x24, 0xeb, 0xf1, 0x51,
+ 0xa9, 0xcd, 0x65, 0xae, 0x78, 0x6b, 0x88, 0x26, 0x79, 0xf0, 0x09, 0x29,
+ 0x16, 0x45, 0x4c, 0xb0, 0x35, 0xf5, 0x58, 0x3d, 0x56, 0x8d, 0x7f, 0x96,
+ 0x3c, 0x11, 0x70, 0xb1, 0x4e, 0x55, 0x57, 0x06, 0xb4, 0xef, 0x0d, 0xda,
+ 0x1a, 0x7b, 0x18, 0xf7, 0x13, 0xe0, 0xad, 0xfd, 0x90, 0xde, 0x4b, 0x8b,
+ 0x83, 0x28, 0x1e, 0xe1, 0x63, 0xb9, 0x6c, 0xf2, 0xd0, 0x55, 0x5c, 0x8e,
+ 0xa7, 0x5b, 0x5a, 0xec, 0x2e, 0x99, 0x0c, 0x68, 0x3f, 0xa5, 0xbd, 0xdd,
+ 0xfc, 0xcf, 0x8a, 0x4a, 0x71, 0x7a, 0x4d, 0xd7, 0xe3, 0xe4, 0xbd, 0xd4,
+ 0x09, 0xb5, 0xa1, 0xcd, 0x68, 0xec, 0x4c, 0x2d, 0x2f, 0xb1, 0x3d, 0xb5,
+ 0xbb, 0x35, 0xe4, 0xdf, 0x96, 0x44, 0x59, 0x27, 0xe8, 0x6e, 0xec, 0xcf,
+ 0x0f, 0x05, 0x97, 0x57, 0xea, 0xfd, 0x45, 0xec, 0xdc, 0x09, 0x0e, 0xd1,
+ 0xc3, 0x50, 0x44, 0xae, 0x81, 0x96, 0x56, 0x5c, 0xed, 0x3d, 0x37, 0x91,
+ 0xb4, 0xf2, 0x34, 0xf2, 0x1c, 0x24, 0xa4, 0x2d, 0xc0, 0xba, 0xf7, 0xb1,
+ 0xd6, 0x11, 0x4b, 0x4b, 0x36, 0xec, 0x27, 0xdc, 0xe8, 0x11, 0x21, 0xa1,
+ 0x4b, 0x22, 0x8a, 0x6b, 0x26, 0xe0, 0xd7, 0x48, 0x20, 0x4d, 0x87, 0x6b,
+ 0x1c, 0x47, 0x6f, 0x6c, 0x94, 0xa6, 0xe6, 0xed, 0x60, 0x24, 0xb9, 0xa6,
+ 0x09, 0x00, 0x9f, 0x70, 0x52, 0x22, 0xfa, 0xde, 0x5c, 0x5f, 0xb8, 0x91,
+ 0x30, 0x24, 0x82, 0x7c, 0x40, 0x49, 0x4a, 0xbe, 0xc1, 0x66, 0x0e, 0x51,
+ 0xb6, 0xa3, 0x55, 0x95, 0xd4, 0xe0, 0x35, 0x90, 0x44, 0x69, 0xaf, 0x75,
+ 0xc7, 0xe2, 0xbb, 0x6e, 0x7d, 0x0e, 0x3f, 0xe9, 0x18, 0x07, 0x99, 0x26,
+ 0x02, 0xec, 0xfa, 0x85, 0xd6, 0x0e, 0x8b, 0x79, 0xb0, 0xc6, 0xf0, 0x01,
+ 0x69, 0x1e, 0xe0, 0x4e, 0x9f, 0x8a, 0xe4, 0xab, 0xb2, 0x8a, 0x31, 0xac,
+ 0x7b, 0xe0, 0xde, 0xcb, 0x6a, 0xb5, 0xb3, 0xc8, 0x65, 0x67, 0x73, 0xa3,
+ 0xe3, 0xa0, 0x49, 0x4d, 0xdf, 0xae, 0x18, 0xec, 0xa7, 0xaa, 0x56, 0x58,
+ 0xd8, 0x36, 0xd6, 0xd7, 0x58, 0x7b, 0x6e, 0xd4, 0x48, 0xf9, 0x0d, 0x56,
+ 0x3c, 0x03, 0x51, 0x3e, 0x2b, 0xa3, 0xfa, 0xdb, 0x65, 0x19, 0x57, 0x60,
+ 0x1a, 0x2c, 0x6d, 0x8f, 0x14, 0xbc, 0xbc, 0x34, 0x83, 0xb5, 0xbb, 0x81,
+ 0x6e, 0xef, 0x0e, 0x4a, 0xe7, 0xe8, 0x6b, 0x2c, 0xf6, 0x35, 0xda, 0x34,
+ 0xed, 0x24, 0x24, 0xa4, 0x98, 0x0e, 0x0c, 0xc5, 0xea, 0x0f, 0x3f, 0xe8,
+ 0x03, 0x00, 0xf3, 0x75, 0x8c, 0x0b, 0x3e, 0xff, 0x00, 0xa1, 0x59, 0x1c,
+ 0x19, 0x08, 0xc1, 0xda, 0x58, 0xd9, 0x20, 0x09, 0xd3, 0xc6, 0x3c, 0x50,
+ 0x0e, 0xb4, 0xb3, 0xf9, 0x2e, 0x3f, 0x88, 0x49, 0x4d, 0x8e, 0x89, 0x73,
+ 0xaa, 0xea, 0x78, 0x9a, 0xe8, 0xe7, 0x96, 0x11, 0xfd, 0x6f, 0x62, 0xee,
+ 0x32, 0x2a, 0x79, 0x7b, 0x1a, 0x40, 0xda, 0xc6, 0xc1, 0x77, 0x1d, 0xf7,
+ 0x1d, 0x17, 0x9d, 0x54, 0xe2, 0xcb, 0xe9, 0x78, 0xe5, 0xaf, 0x9f, 0xb8,
+ 0x82, 0xbd, 0x10, 0x5e, 0xc7, 0xd8, 0x0b, 0x61, 0xc0, 0x91, 0xe4, 0x27,
+ 0xb0, 0x9f, 0x04, 0x94, 0x8e, 0xc3, 0xea, 0x38, 0xee, 0xd3, 0x49, 0x69,
+ 0x1d, 0xa1, 0x42, 0xcf, 0x73, 0x4b, 0x89, 0x2e, 0xf6, 0xe8, 0x7c, 0xc4,
+ 0x01, 0x28, 0x8e, 0x66, 0x45, 0x9f, 0xcd, 0xbc, 0xbf, 0x73, 0xa7, 0x75,
+ 0x50, 0x60, 0x0f, 0x82, 0x10, 0xa2, 0xdb, 0x04, 0x6e, 0xf4, 0xb5, 0x24,
+ 0x93, 0xfb, 0xa7, 0xc7, 0xcd, 0x25, 0x32, 0x65, 0x80, 0xb9, 0x8e, 0x70,
+ 0x36, 0x12, 0x44, 0x82, 0x38, 0x52, 0xb1, 0xaf, 0x16, 0x87, 0xee, 0x9d,
+ 0xbc, 0x02, 0x75, 0xd7, 0xe0, 0x95, 0x86, 0xca, 0x4f, 0xa5, 0x58, 0x0e,
+ 0xdd, 0x11, 0xae, 0xae, 0x1f, 0xc1, 0x0d, 0xa7, 0xde, 0xe0, 0xe0, 0x49,
+ 0x70, 0xf6, 0xf9, 0x0f, 0x19, 0x29, 0x29, 0x9e, 0x44, 0x4c, 0x38, 0x86,
+ 0x03, 0xfc, 0xd9, 0x9f, 0x71, 0x9e, 0xc7, 0xb4, 0x79, 0xa8, 0xc9, 0xf4,
+ 0xe7, 0x6f, 0xba, 0x36, 0x70, 0x37, 0x47, 0x1c, 0xf1, 0x0a, 0x37, 0xbe,
+ 0xaf, 0x58, 0x56, 0xff, 0x00, 0x73, 0x62, 0x41, 0x91, 0x12, 0x3e, 0x0a,
+ 0x3f, 0x68, 0xab, 0x77, 0xad, 0xfc, 0x9d, 0xbb, 0xfb, 0xed, 0xfc, 0x89,
+ 0x29, 0xcf, 0x0e, 0x34, 0x07, 0x30, 0x58, 0x5c, 0xf2, 0x25, 0xed, 0x32,
+ 0x34, 0x0a, 0x37, 0x82, 0xea, 0xeb, 0xba, 0xa7, 0x07, 0xd5, 0x3b, 0x9a,
+ 0x62, 0x49, 0x3d, 0xd9, 0x03, 0x5d, 0xc1, 0x5d, 0x38, 0x35, 0xe4, 0x34,
+ 0xd9, 0x63, 0xb5, 0x74, 0xb4, 0x10, 0x4c, 0xc7, 0x90, 0x46, 0xc7, 0xc7,
+ 0x66, 0x35, 0x46, 0xb6, 0x12, 0x47, 0x66, 0x9d, 0x37, 0x1f, 0x1d, 0x12,
+ 0x53, 0x59, 0x95, 0xd8, 0xc3, 0x5b, 0xb6, 0xb9, 0x92, 0x64, 0x34, 0x88,
+ 0x89, 0xf0, 0xf2, 0x45, 0xb3, 0x26, 0x92, 0xe1, 0x5b, 0x4d, 0x87, 0x25,
+ 0xda, 0x38, 0x01, 0xed, 0x03, 0xfb, 0xd4, 0xac, 0xb2, 0xad, 0xed, 0x0e,
+ 0x1b, 0x9e, 0x3b, 0x3f, 0x5e, 0x74, 0xd2, 0x44, 0x24, 0xe7, 0xe3, 0x34,
+ 0x16, 0xc9, 0x16, 0xb4, 0x80, 0x4b, 0x41, 0x80, 0x0f, 0x3a, 0x84, 0x94,
+ 0xcb, 0x1b, 0xa5, 0xd5, 0xf6, 0x5f, 0xd6, 0x2c, 0x01, 0xa5, 0xf3, 0xef,
+ 0x27, 0xda, 0x4f, 0x1a, 0xfe, 0x28, 0xc2, 0xec, 0x6a, 0x1d, 0x65, 0x55,
+ 0x56, 0x5c, 0x1a, 0x0b, 0x0b, 0xeb, 0x80, 0x04, 0x08, 0x9f, 0x3f, 0x8a,
+ 0xae, 0x6e, 0x37, 0xb5, 0x95, 0x59, 0xf4, 0x18, 0xe3, 0xe9, 0x81, 0xa6,
+ 0xa0, 0x72, 0xe8, 0x51, 0xad, 0xe3, 0x76, 0xc2, 0x1c, 0xfd, 0x9a, 0x03,
+ 0xda, 0x3f, 0x3b, 0xe4, 0x12, 0x52, 0x89, 0x75, 0x94, 0x58, 0xc7, 0xd8,
+ 0x03, 0x00, 0x90, 0xcf, 0xde, 0x25, 0x2c, 0x7a, 0x80, 0x70, 0xb4, 0x8f,
+ 0xa2, 0xd2, 0x54, 0xf6, 0xd6, 0x68, 0x2e, 0x93, 0x2d, 0x74, 0x6d, 0x6f,
+ 0xba, 0x07, 0x3b, 0xa1, 0x3e, 0x6d, 0x8d, 0xa7, 0x1a, 0xc2, 0x74, 0x90,
+ 0x03, 0x7e, 0xe9, 0x49, 0x4f, 0x29, 0x9d, 0x6d, 0xb6, 0x65, 0xbe, 0xc3,
+ 0x30, 0x09, 0x83, 0xe0, 0x8b, 0xb1, 0xb9, 0x0c, 0x87, 0x0d, 0xaf, 0x6f,
+ 0x7e, 0xe8, 0x21, 0xfb, 0x9e, 0xfe, 0xf3, 0xca, 0x23, 0x45, 0xad, 0xb0,
+ 0x7f, 0xa3, 0xfc, 0xc7, 0x78, 0x7f, 0x25, 0x25, 0x32, 0xf4, 0xcb, 0x5d,
+ 0xa1, 0x04, 0x91, 0xaf, 0x99, 0x43, 0x20, 0x9f, 0x6f, 0xdd, 0xfd, 0xc8,
+ 0x96, 0xbb, 0x6f, 0xb5, 0xdf, 0x44, 0x9d, 0x3e, 0x29, 0x31, 0x8f, 0xdc,
+ 0x4b, 0x86, 0xe0, 0xed, 0x64, 0x24, 0xa6, 0xb1, 0xd1, 0xd1, 0x12, 0x7c,
+ 0x94, 0x6e, 0x04, 0x30, 0x38, 0x68, 0x41, 0xe7, 0xbc, 0xab, 0x96, 0x52,
+ 0x09, 0x93, 0xed, 0x3c, 0xee, 0x55, 0x33, 0x5c, 0xd6, 0x56, 0xe0, 0xd8,
+ 0x70, 0x1c, 0x91, 0xe2, 0x92, 0x9e, 0xb7, 0x0b, 0x2e, 0x9c, 0x8e, 0x90,
+ 0xdc, 0xb6, 0xc1, 0x70, 0x10, 0xe6, 0x9e, 0x7d, 0x40, 0x76, 0xb8, 0x7c,
+ 0x15, 0x8c, 0x17, 0x93, 0x6d, 0x77, 0x3b, 0xb0, 0xdc, 0x1a, 0x38, 0x24,
+ 0x98, 0x3f, 0x82, 0xcf, 0xe9, 0x98, 0x95, 0x33, 0x1b, 0x0b, 0x0e, 0x8d,
+ 0x5a, 0x6b, 0x17, 0xdc, 0x75, 0x32, 0xe7, 0xb6, 0x63, 0x45, 0xa6, 0x31,
+ 0xef, 0x6b, 0xa0, 0x02, 0xe1, 0xfb, 0x82, 0x41, 0x1f, 0x7c, 0x14, 0x94,
+ 0x8f, 0x21, 0xde, 0x9e, 0x4b, 0xe9, 0x23, 0xde, 0xc7, 0x7e, 0x8a, 0x7b,
+ 0xb4, 0xea, 0x1d, 0xf7, 0x15, 0x66, 0xae, 0x9f, 0x4d, 0x4c, 0x19, 0xb9,
+ 0xee, 0x73, 0x03, 0x35, 0x65, 0x64, 0xed, 0xfc, 0x15, 0x8c, 0x8b, 0xb1,
+ 0xb0, 0x99, 0x5d, 0xb9, 0x20, 0x3f, 0x21, 0x8d, 0x86, 0x56, 0x35, 0x83,
+ 0xdb, 0xe3, 0x1c, 0x2c, 0xbb, 0x2c, 0xca, 0xc8, 0xbd, 0xb9, 0x19, 0xae,
+ 0x6b, 0x6a, 0x91, 0xb2, 0xb7, 0x1f, 0x1e, 0x34, 0xee, 0x92, 0x99, 0xe4,
+ 0xe5, 0xdf, 0xd4, 0x48, 0x00, 0xfa, 0x18, 0x40, 0xc3, 0x00, 0x07, 0xdc,
+ 0x7e, 0x48, 0x75, 0xe3, 0xdd, 0x8f, 0xec, 0xa5, 0xf5, 0xcb, 0xe6, 0x40,
+ 0x68, 0x3a, 0x1e, 0xde, 0xed, 0x55, 0xc7, 0x17, 0x11, 0xb5, 0xd5, 0x6d,
+ 0xdb, 0xc3, 0x62, 0x34, 0x27, 0xb1, 0xe1, 0x0f, 0x29, 0xef, 0xc6, 0xa5,
+ 0xae, 0xac, 0x1d, 0xcf, 0x73, 0x58, 0xc6, 0x7f, 0x29, 0xc7, 0xbc, 0x78,
+ 0x0d, 0x52, 0x53, 0x83, 0x99, 0x57, 0xa5, 0x9e, 0x1a, 0x74, 0x88, 0xfe,
+ 0xee, 0x56, 0xf0, 0xb1, 0xd6, 0xfa, 0x75, 0x96, 0xb0, 0x6e, 0x60, 0x32,
+ 0x64, 0xee, 0x1f, 0x0f, 0x15, 0x93, 0xd6, 0xea, 0xa9, 0x99, 0x14, 0x3e,
+ 0xbd, 0x5a, 0x1a, 0x1a, 0x75, 0x26, 0x5c, 0x39, 0x5a, 0x18, 0x6c, 0x2e,
+ 0xa5, 0x8f, 0xdd, 0xb1, 0xf3, 0x02, 0x44, 0xb4, 0xf9, 0x42, 0x4a, 0x49,
+ 0x7b, 0xdd, 0x58, 0xde, 0x6e, 0x6b, 0x6a, 0x68, 0xdd, 0xb5, 0xad, 0x71,
+ 0xdd, 0xdb, 0x53, 0x2a, 0xad, 0xfd, 0x42, 0xa7, 0xda, 0xda, 0x05, 0xc4,
+ 0x56, 0xd1, 0x25, 0x9d, 0xa4, 0xf7, 0x3f, 0x04, 0x6b, 0x6c, 0x71, 0xa9,
+ 0xcc, 0x7b, 0x43, 0x6c, 0x04, 0xb7, 0x60, 0x11, 0x01, 0xc3, 0x6c, 0x22,
+ 0x57, 0x40, 0x0f, 0x0d, 0x7b, 0x5a, 0x01, 0x9d, 0xd0, 0x3c, 0x3c, 0xdd,
+ 0x33, 0x29, 0x29, 0xc7, 0xea, 0x9d, 0x42, 0x7a, 0x7d, 0x35, 0xd3, 0x91,
+ 0xea, 0x35, 0xd6, 0x80, 0xf2, 0x1a, 0x5b, 0x30, 0x74, 0x99, 0xe7, 0x95,
+ 0x8b, 0x96, 0x43, 0xa9, 0x6c, 0xfd, 0x27, 0x12, 0x27, 0xc6, 0x0c, 0x2d,
+ 0xaf, 0xad, 0x2d, 0xd3, 0x1d, 0xa0, 0xc9, 0x2e, 0xdc, 0x20, 0x40, 0xd0,
+ 0x8d, 0x17, 0x3b, 0x98, 0x5d, 0xea, 0xd2, 0xce, 0xc2, 0x5d, 0x1f, 0xda,
+ 0x25, 0x25, 0x27, 0xa9, 0xa6, 0xa6, 0xe4, 0x11, 0xed, 0x21, 0x8c, 0x03,
+ 0xe6, 0x54, 0x70, 0x89, 0x6b, 0xc1, 0x07, 0x93, 0xaf, 0xde, 0x8e, 0xe6,
+ 0xfb, 0x2c, 0x23, 0x59, 0x0c, 0xd3, 0xe6, 0xe4, 0x1c, 0x66, 0x9f, 0x59,
+ 0xa3, 0xb4, 0x9e, 0x7e, 0x49, 0x29, 0x19, 0x2e, 0xf5, 0xad, 0x00, 0x13,
+ 0x01, 0xc4, 0xc7, 0x61, 0xe2, 0x50, 0xec, 0x65, 0xb8, 0xf5, 0x86, 0xda,
+ 0xd2, 0xcd, 0xe1, 0xb6, 0x30, 0x1e, 0xed, 0x26, 0x01, 0x57, 0x2a, 0x19,
+ 0x98, 0x7d, 0x41, 0x99, 0x8d, 0x6b, 0x9b, 0x4d, 0x86, 0x0b, 0xda, 0x37,
+ 0x82, 0xd7, 0x1f, 0x73, 0x5c, 0xd1, 0x3f, 0x71, 0x47, 0xcb, 0x16, 0xf5,
+ 0x6c, 0x77, 0xba, 0xa6, 0xb9, 0xb6, 0x9b, 0x77, 0x34, 0x58, 0x03, 0x43,
+ 0x9a, 0xf2, 0x2b, 0x63, 0x43, 0x9d, 0xc0, 0x6e, 0xa4, 0x0f, 0x3f, 0x24,
+ 0x94, 0xe1, 0x17, 0xea, 0x0f, 0x83, 0x97, 0x7f, 0x8a, 0xc3, 0x66, 0x3d,
+ 0x19, 0x21, 0xf1, 0x5e, 0xd0, 0x4c, 0xe8, 0x24, 0x40, 0x85, 0xcd, 0x8f,
+ 0xa9, 0x3d, 0x5c, 0x50, 0x6c, 0xb5, 0xf5, 0x56, 0xe2, 0x46, 0xc6, 0x17,
+ 0x6e, 0x2e, 0xec, 0xef, 0xa2, 0x0f, 0x0b, 0xa6, 0xc7, 0x6d, 0xb8, 0xd8,
+ 0x74, 0x62, 0x3e, 0x1e, 0x2b, 0x6b, 0x5b, 0x71, 0x6f, 0x12, 0x3b, 0xa4,
+ 0xa4, 0xc1, 0xb7, 0x57, 0xfa, 0x66, 0xbf, 0x61, 0xe4, 0x1d, 0x34, 0x9f,
+ 0xea, 0xf2, 0x96, 0xe7, 0x58, 0xc0, 0xfb, 0x09, 0x1b, 0xa4, 0x1d, 0x0b,
+ 0x5a, 0x4f, 0x64, 0xed, 0x35, 0x3a, 0xe1, 0x59, 0xee, 0x48, 0x13, 0xa8,
+ 0x24, 0x7f, 0xb1, 0x0a, 0xf6, 0xfa, 0x36, 0x3a, 0xa7, 0x92, 0x76, 0x9d,
+ 0xcd, 0xda, 0x0e, 0xa0, 0xea, 0xd2, 0x12, 0x52, 0x37, 0x31, 0xc5, 0xe1,
+ 0xac, 0x97, 0x86, 0x70, 0xe1, 0xc0, 0xff, 0x00, 0x5f, 0x34, 0x8c, 0xde,
+ 0xdd, 0x81, 0xc0, 0x35, 0xaf, 0xd4, 0xc1, 0x24, 0x1d, 0x47, 0xdc, 0x4a,
+ 0x25, 0x56, 0x33, 0xd3, 0x71, 0x63, 0x65, 0xaf, 0x70, 0x6e, 0x9e, 0x3c,
+ 0x98, 0x01, 0x49, 0x98, 0xe6, 0x80, 0xd7, 0x6d, 0xdd, 0xbc, 0x9d, 0xe7,
+ 0x82, 0x27, 0x5f, 0x77, 0x82, 0x4a, 0x42, 0xea, 0x1b, 0xef, 0x69, 0x76,
+ 0xcd, 0x8d, 0x05, 0xae, 0x03, 0x9d, 0x64, 0xe9, 0xfd, 0xc8, 0x1b, 0x3f,
+ 0x41, 0x30, 0x36, 0x44, 0xee, 0x8f, 0x6c, 0xf3, 0x2a, 0xed, 0xc2, 0xb6,
+ 0x17, 0x34, 0xb7, 0xd4, 0x79, 0xfa, 0x24, 0x70, 0x1b, 0xde, 0x55, 0x7f,
+ 0xfb, 0x41, 0xe9, 0xce, 0xb3, 0xbb, 0x6c, 0xeb, 0xfb, 0xbf, 0x91, 0x25,
+ 0x25, 0xa2, 0xbb, 0x7d, 0x31, 0x65, 0xc5, 0xb5, 0x9e, 0x5e, 0x79, 0x23,
+ 0xb1, 0x00, 0x7c, 0x54, 0x5d, 0x97, 0x59, 0xb5, 0xa5, 0x8e, 0x63, 0x6a,
+ 0x61, 0xf7, 0x6f, 0x31, 0xa1, 0x45, 0xc8, 0xa9, 0xd6, 0x64, 0xef, 0x7b,
+ 0x4b, 0x45, 0x82, 0x01, 0x27, 0x9d, 0x3c, 0x3c, 0x7f, 0x2a, 0x83, 0x7a,
+ 0x7e, 0x3d, 0xc1, 0xb5, 0xb5, 0xcc, 0x66, 0x9b, 0x49, 0x71, 0x05, 0xb2,
+ 0x3f, 0x7b, 0xcd, 0x25, 0x2e, 0xeb, 0x2a, 0xc8, 0x6e, 0xda, 0xc0, 0x78,
+ 0x1a, 0xb9, 0xcc, 0xf8, 0xca, 0x03, 0x6d, 0xaa, 0xe7, 0x3c, 0xb8, 0x43,
+ 0x9a, 0x21, 0xa6, 0x08, 0x04, 0xf6, 0x32, 0x79, 0xd1, 0x5c, 0xf4, 0x7e,
+ 0xca, 0x7d, 0x36, 0x31, 0xa0, 0x00, 0x04, 0xf0, 0x08, 0x1e, 0x1a, 0x6a,
+ 0xa3, 0x63, 0x39, 0x35, 0xb0, 0x35, 0xc0, 0x48, 0x8e, 0xde, 0x5a, 0x24,
+ 0xa6, 0xb5, 0xce, 0xd9, 0xac, 0x41, 0xfc, 0xe0, 0x47, 0x10, 0x79, 0xf9,
+ 0x85, 0x02, 0xeb, 0x7d, 0x57, 0xd5, 0x59, 0x2d, 0x61, 0x83, 0xbc, 0xf6,
+ 0x9e, 0xc8, 0xed, 0xf5, 0x9a, 0xf8, 0x73, 0xb7, 0x7a, 0x82, 0x1c, 0xd6,
+ 0xea, 0x7c, 0x65, 0x43, 0x2a, 0x5a, 0x03, 0xdc, 0x07, 0xb7, 0xda, 0x4c,
+ 0x89, 0x8f, 0x1d, 0x12, 0x53, 0x3a, 0xe9, 0x64, 0xb9, 0xa1, 0xd0, 0x46,
+ 0xa5, 0xcd, 0xee, 0x55, 0x2f, 0xac, 0x97, 0x86, 0x54, 0xd1, 0x31, 0xa4,
+ 0x47, 0x8a, 0xd2, 0xc0, 0xdf, 0x4b, 0xbd, 0x51, 0x32, 0x20, 0x31, 0xc3,
+ 0x8e, 0x35, 0x05, 0x73, 0x3d, 0x6a, 0xd7, 0x65, 0x67, 0xb8, 0x7e, 0x6b,
+ 0x34, 0x49, 0x4d, 0x2c, 0x66, 0x17, 0xc9, 0xed, 0xdd, 0x5e, 0x66, 0xd6,
+ 0xe8, 0x46, 0xe6, 0xbf, 0x48, 0xf0, 0x28, 0x74, 0x32, 0x00, 0x03, 0xb7,
+ 0x64, 0x61, 0xed, 0x70, 0x91, 0xa7, 0x8a, 0x4a, 0x6b, 0x58, 0x2b, 0xdd,
+ 0xb1, 0xee, 0x2f, 0x6c, 0xe8, 0x47, 0x2a, 0x21, 0xcf, 0xa9, 0xc0, 0x13,
+ 0xb9, 0x9f, 0x9a, 0xe4, 0xae, 0x20, 0x5e, 0xf7, 0xe8, 0x5a, 0x4e, 0xbe,
+ 0x12, 0x51, 0x19, 0xb0, 0x38, 0x35, 0xe6, 0x5a, 0xe4, 0x94, 0xb3, 0xdc,
+ 0x2d, 0xd5, 0xc4, 0x82, 0x55, 0x4c, 0xb6, 0x45, 0x65, 0xb3, 0x22, 0x79,
+ 0x56, 0x33, 0xc3, 0x31, 0xc9, 0x7d, 0x04, 0xb9, 0x80, 0xfc, 0xb8, 0x54,
+ 0x1f, 0x6b, 0xad, 0x61, 0x2e, 0x1d, 0xf8, 0x1a, 0x24, 0xa7, 0xb7, 0xfa,
+ 0xb1, 0x40, 0xc9, 0xe9, 0xb5, 0x39, 0xac, 0x0e, 0xf6, 0x80, 0x6d, 0xfd,
+ 0xd2, 0x34, 0xfc, 0x16, 0x96, 0x56, 0x7d, 0x38, 0x73, 0x4e, 0x2f, 0xe9,
+ 0xb2, 0x9d, 0xa1, 0x24, 0xf0, 0xb2, 0xfa, 0x7e, 0x4b, 0xf1, 0x7a, 0x4e,
+ 0x3f, 0x4c, 0xc2, 0xf6, 0x96, 0x32, 0x6f, 0xb8, 0xf0, 0x1c, 0xff, 0x00,
+ 0x73, 0xbf, 0x12, 0xa7, 0x4d, 0x58, 0x95, 0x4c, 0x38, 0xe4, 0x38, 0x9f,
+ 0x76, 0xe0, 0x41, 0x31, 0xaf, 0x23, 0x54, 0x94, 0xc6, 0x8a, 0x5d, 0x75,
+ 0x8f, 0xb3, 0x25, 0xc1, 0xf7, 0xb0, 0x0b, 0x43, 0xbb, 0x34, 0x0e, 0xc3,
+ 0xe4, 0xe9, 0x47, 0xc9, 0xc5, 0x65, 0xd8, 0xf5, 0x3e, 0xd0, 0xd7, 0x5b,
+ 0x5c, 0x8d, 0xb2, 0x40, 0x03, 0x96, 0xed, 0x8e, 0xc9, 0x57, 0x5b, 0x67,
+ 0xed, 0x01, 0xae, 0xad, 0x80, 0x11, 0x0f, 0x32, 0xe3, 0xbb, 0xf3, 0x3c,
+ 0xf9, 0x4c, 0xc6, 0x52, 0xd7, 0x1a, 0x72, 0x1e, 0xe6, 0x5c, 0xf1, 0x31,
+ 0xb4, 0xba, 0x07, 0xf2, 0x9d, 0xb8, 0x13, 0xf2, 0xd1, 0x25, 0x32, 0x37,
+ 0xd8, 0x5b, 0x58, 0x6b, 0x3f, 0x47, 0x01, 0xa4, 0x30, 0x69, 0x1c, 0xce,
+ 0xa8, 0x4f, 0xb1, 0xd6, 0xe5, 0x07, 0x72, 0xea, 0x5a, 0x3d, 0x36, 0x73,
+ 0xab, 0xb9, 0x3f, 0x72, 0x36, 0x23, 0xa9, 0x6d, 0x56, 0xb8, 0xb9, 0xcf,
+ 0xac, 0x98, 0x25, 0xed, 0x2c, 0xe0, 0xfc, 0x75, 0xd1, 0x0f, 0x23, 0x15,
+ 0xf5, 0x56, 0x5d, 0x45, 0xa3, 0xd3, 0x71, 0xdf, 0x75, 0xa0, 0x03, 0x63,
+ 0x8c, 0xfb, 0x18, 0xdf, 0xdd, 0x09, 0x29, 0xcf, 0xeb, 0x35, 0x16, 0xd3,
+ 0x4d, 0xc5, 0xa5, 0xb0, 0xf7, 0x07, 0x03, 0xc8, 0x27, 0xc9, 0x5c, 0xe9,
+ 0x84, 0xbf, 0x1e, 0x5a, 0x41, 0x2d, 0x23, 0xcc, 0x81, 0xcc, 0x80, 0xaa,
+ 0x75, 0x5a, 0x2f, 0xfb, 0x1b, 0xaf, 0x92, 0xea, 0x5d, 0x04, 0xb9, 0xc6,
+ 0x61, 0xe1, 0xdb, 0x48, 0xf2, 0x42, 0xe9, 0x85, 0xd6, 0xb1, 0xc6, 0xbb,
+ 0x3d, 0x37, 0xd7, 0x0e, 0x63, 0xa6, 0x1b, 0xfd, 0xa4, 0x94, 0xde, 0xbd,
+ 0xb6, 0xdb, 0x65, 0x6d, 0x23, 0x73, 0x8d, 0x83, 0x6c, 0x48, 0xdc, 0x06,
+ 0xa6, 0x27, 0xe0, 0xae, 0xe3, 0xbe, 0x80, 0xe8, 0xb9, 0xe1, 0xef, 0x69,
+ 0xd1, 0x8d, 0xd7, 0xdd, 0xe0, 0x4f, 0xe5, 0x55, 0x1f, 0x63, 0x08, 0xa5,
+ 0xc3, 0x5b, 0x5b, 0x67, 0xbd, 0xc3, 0xe8, 0xf0, 0x5b, 0xfc, 0x54, 0xed,
+ 0x0c, 0xc5, 0xae, 0xb7, 0x31, 0xae, 0x36, 0x58, 0x00, 0xda, 0xd8, 0x27,
+ 0x68, 0x3a, 0xc0, 0xed, 0x29, 0x29, 0xc6, 0xfa, 0xe1, 0x7b, 0x9f, 0x6e,
+ 0x2b, 0x8e, 0x83, 0xe9, 0x31, 0xa3, 0x40, 0x06, 0xe8, 0xed, 0xf0, 0x59,
+ 0x59, 0xd5, 0x7a, 0x91, 0x93, 0x58, 0x97, 0x30, 0x06, 0xda, 0xdf, 0x0f,
+ 0x02, 0xae, 0x7d, 0x6b, 0xb5, 0xcf, 0xc9, 0xa1, 0xc4, 0x6d, 0x68, 0x60,
+ 0xda, 0xcf, 0xdc, 0x00, 0x9f, 0x6c, 0xac, 0xd7, 0x66, 0x1c, 0x6c, 0xc6,
+ 0xbd, 0xda, 0xd4, 0xf0, 0x1b, 0x63, 0x7c, 0x5a, 0x42, 0x4a, 0x6c, 0x6f,
+ 0x02, 0x9b, 0x1c, 0xd3, 0xf4, 0x8b, 0x67, 0x9e, 0xca, 0xbd, 0x4f, 0x8b,
+ 0x98, 0x4f, 0x73, 0x28, 0xf9, 0x75, 0xd7, 0x8d, 0x5b, 0x9b, 0xa0, 0xa9,
+ 0xf0, 0xe6, 0x3a, 0x7e, 0x93, 0x4f, 0xf7, 0x29, 0x63, 0x60, 0x63, 0x67,
+ 0xdd, 0x8f, 0x47, 0x4d, 0xca, 0x16, 0x5e, 0xe0, 0x4d, 0x8d, 0xb4, 0x7a,
+ 0x7b, 0x60, 0xcf, 0xb4, 0x1f, 0x01, 0xe6, 0x92, 0x9a, 0x87, 0x2b, 0x23,
+ 0x13, 0x30, 0xd9, 0x8e, 0xf3, 0x5b, 0x9c, 0x20, 0x96, 0x98, 0x31, 0x3c,
+ 0x4f, 0xc9, 0x6c, 0x74, 0x3f, 0x43, 0x2c, 0xd6, 0xcc, 0x96, 0x8c, 0x50,
+ 0xfb, 0x4d, 0xd4, 0x06, 0x38, 0x97, 0xd9, 0xb4, 0x87, 0x9d, 0x1f, 0x3e,
+ 0xd0, 0x47, 0x2b, 0x17, 0xab, 0x57, 0x6f, 0xed, 0x67, 0xe1, 0xb0, 0x43,
+ 0xeb, 0x70, 0xa8, 0x6a, 0x20, 0xc7, 0x79, 0xfc, 0x55, 0x8f, 0xab, 0x6c,
+ 0x65, 0x7d, 0x53, 0x12, 0xd7, 0x12, 0xf7, 0x3b, 0xd5, 0x96, 0x0d, 0x21,
+ 0xad, 0x6c, 0x34, 0xcf, 0x99, 0x94, 0x94, 0xf7, 0x4e, 0xca, 0x14, 0xb8,
+ 0x35, 0xa4, 0x38, 0x19, 0x15, 0xb4, 0x68, 0x67, 0x93, 0xca, 0x0e, 0xea,
+ 0x8b, 0x1c, 0x4e, 0xe0, 0xe3, 0xc9, 0xd0, 0x73, 0xc6, 0x88, 0x39, 0x16,
+ 0x52, 0xeb, 0x18, 0x29, 0x6e, 0xf7, 0xb7, 0xdc, 0x4c, 0xc3, 0x5b, 0x07,
+ 0xcf, 0x95, 0x6d, 0xdb, 0xae, 0xd8, 0xe6, 0x08, 0x6d, 0x60, 0xc8, 0xec,
+ 0x7b, 0xfd, 0x27, 0x76, 0x94, 0x94, 0xd7, 0xf5, 0x6b, 0x6b, 0x6c, 0x73,
+ 0x98, 0xe0, 0x60, 0xc3, 0xe4, 0x44, 0x11, 0x07, 0xe6, 0xab, 0x37, 0x2a,
+ 0xc7, 0x34, 0x5c, 0xd9, 0x69, 0x64, 0x32, 0xc7, 0x7e, 0x70, 0x69, 0x9d,
+ 0x84, 0x1f, 0xc1, 0x58, 0xac, 0x1a, 0x9c, 0x34, 0x75, 0xb2, 0x26, 0x59,
+ 0x0e, 0x69, 0x2e, 0xd0, 0x0e, 0xc8, 0x2d, 0xba, 0x6f, 0xf4, 0xdd, 0xb5,
+ 0xb5, 0x5c, 0x0b, 0x7d, 0x38, 0x69, 0x25, 0xdc, 0xb4, 0xbb, 0x98, 0xf0,
+ 0x09, 0x29, 0x88, 0x0e, 0x1b, 0x0c, 0x3a, 0x47, 0xb9, 0xed, 0x20, 0xcc,
+ 0xf2, 0x23, 0xe2, 0xa5, 0x65, 0xa4, 0x07, 0x86, 0xf1, 0x12, 0x47, 0x12,
+ 0x5a, 0x67, 0x52, 0x7c, 0x93, 0x91, 0x61, 0xa1, 0xcc, 0x20, 0x1d, 0xed,
+ 0xf6, 0x3d, 0xa6, 0x5c, 0x40, 0xf1, 0xf9, 0xa1, 0x5d, 0x61, 0x6b, 0x03,
+ 0x27, 0xe9, 0xb4, 0xb8, 0x88, 0x3a, 0xe9, 0x1f, 0x79, 0x49, 0x49, 0xdb,
+ 0x69, 0x15, 0x6d, 0x69, 0x06, 0x23, 0x47, 0x6b, 0x00, 0xfd, 0xe8, 0x51,
+ 0x5f, 0xa9, 0xf2, 0xdb, 0xba, 0x74, 0xe6, 0x67, 0x6f, 0xc7, 0xcd, 0x57,
+ 0xf5, 0x9e, 0xf6, 0xb4, 0x35, 0xde, 0x9b, 0x44, 0x4b, 0x08, 0x03, 0x41,
+ 0xc3, 0xa4, 0x95, 0x1f, 0x4e, 0xbd, 0x9e, 0xb4, 0x37, 0x6f, 0xd3, 0x8f,
+ 0x51, 0xb1, 0xbe, 0x78, 0xfe, 0x29, 0x29, 0xb6, 0xfc, 0x9b, 0x6d, 0x6b,
+ 0x9a, 0xdb, 0x0b, 0x9c, 0xc0, 0x37, 0x30, 0x1f, 0x70, 0x03, 0x4d, 0xdc,
+ 0x29, 0xd9, 0x53, 0x1a, 0xd1, 0x6b, 0x5e, 0x62, 0xcf, 0xa5, 0x02, 0x46,
+ 0x9d, 0x88, 0xf1, 0x54, 0x71, 0xad, 0xc9, 0x79, 0x7b, 0x6b, 0x04, 0xd4,
+ 0xe2, 0x0e, 0xe7, 0x08, 0x0e, 0xdb, 0xa1, 0x25, 0x1a, 0xaa, 0xec, 0xad,
+ 0xed, 0x6d, 0xa7, 0xd4, 0x93, 0xab, 0xdc, 0xed, 0x07, 0x10, 0x12, 0x53,
+ 0x77, 0xd5, 0x67, 0xa0, 0x29, 0x63, 0xdc, 0xf8, 0x3b, 0xab, 0x83, 0xab,
+ 0x4f, 0x98, 0x53, 0xf5, 0x6d, 0x67, 0xe9, 0x00, 0x35, 0xf6, 0x3a, 0xf2,
+ 0x7e, 0x05, 0x26, 0x54, 0xd6, 0xb0, 0x16, 0xb8, 0x4f, 0x3e, 0x33, 0xf0,
+ 0x55, 0xac, 0xba, 0x8a, 0x2e, 0x7b, 0x2f, 0x2f, 0xb5, 0xe7, 0x68, 0x69,
+ 0x07, 0x6b, 0x1b, 0xb8, 0x76, 0x03, 0xc1, 0x25, 0x30, 0xb1, 0xd9, 0x16,
+ 0x82, 0xf9, 0x23, 0x71, 0x30, 0xd0, 0x35, 0x81, 0xa4, 0x08, 0xec, 0x4a,
+ 0x4f, 0xac, 0xbb, 0xd8, 0xe2, 0x2b, 0x2f, 0x1c, 0x9f, 0x15, 0x7e, 0x8c,
+ 0xb6, 0xec, 0x15, 0xec, 0x1b, 0x5b, 0xa8, 0xb1, 0xba, 0x82, 0xa3, 0xd4,
+ 0x31, 0xec, 0xbd, 0xd5, 0x9a, 0x1c, 0x03, 0x22, 0x5c, 0xd2, 0x4e, 0xa7,
+ 0xe0, 0x92, 0x9a, 0x14, 0x3d, 0xf5, 0xfe, 0x7b, 0x9c, 0x00, 0x26, 0x4f,
+ 0x80, 0x05, 0x63, 0x6d, 0x2f, 0xb1, 0xef, 0x8e, 0x4f, 0x7d, 0x56, 0xfd,
+ 0xa2, 0xca, 0x58, 0x5b, 0x73, 0x77, 0x34, 0x36, 0x1a, 0x06, 0x86, 0x3c,
+ 0x95, 0x4f, 0xb2, 0x35, 0xb5, 0x1b, 0xa8, 0x3e, 0xad, 0x6d, 0xd5, 0xc3,
+ 0xf3, 0xdb, 0xf1, 0x09, 0x29, 0xa8, 0xda, 0x9b, 0x58, 0xdc, 0xed, 0x3c,
+ 0x50, 0x6d, 0x0e, 0x70, 0x20, 0x70, 0x89, 0x63, 0xdd, 0x6b, 0xa0, 0x0f,
+ 0x69, 0x51, 0x79, 0x2c, 0x01, 0xb6, 0x83, 0xb5, 0xd3, 0x04, 0x79, 0x24,
+ 0xa7, 0x3d, 0xe7, 0x63, 0x8b, 0x4e, 0xa3, 0xc9, 0x35, 0x5f, 0x48, 0x4f,
+ 0x27, 0xee, 0x09, 0xed, 0x6b, 0x9b, 0x36, 0x48, 0x3f, 0xba, 0x3b, 0xa1,
+ 0x32, 0xc2, 0xfb, 0xb7, 0x0f, 0xa4, 0x7b, 0x1e, 0x12, 0x53, 0x6e, 0xd7,
+ 0x4d, 0x1b, 0x39, 0x04, 0x1d, 0xc1, 0x67, 0x55, 0x57, 0xb9, 0xac, 0x9f,
+ 0x6b, 0x9e, 0x01, 0x3e, 0x53, 0x0a, 0xe6, 0x4d, 0xb6, 0x30, 0xb2, 0x6b,
+ 0xf6, 0x38, 0x46, 0xe6, 0xeb, 0x0a, 0xb6, 0x21, 0x73, 0xf2, 0x2a, 0xac,
+ 0x09, 0x2e, 0x78, 0x81, 0xf3, 0x49, 0x4f, 0x75, 0x53, 0x05, 0x75, 0xfb,
+ 0x18, 0x3d, 0x10, 0x0b, 0x7d, 0x46, 0xf2, 0xd2, 0x34, 0xf0, 0x50, 0x0e,
+ 0xab, 0xd4, 0x26, 0xed, 0xbe, 0xd1, 0x0d, 0x0c, 0x8f, 0x7c, 0x0d, 0xc5,
+ 0x49, 0xf9, 0xe2, 0xfb, 0x4b, 0x6d, 0x6d, 0x81, 0xd0, 0x08, 0x81, 0xed,
+ 0x90, 0x74, 0x81, 0xd9, 0x08, 0x63, 0x36, 0xfb, 0xf5, 0x20, 0x47, 0x2d,
+ 0xed, 0xb4, 0xf6, 0xd0, 0xa4, 0xa6, 0x15, 0x64, 0x55, 0x92, 0xf7, 0x0b,
+ 0xc1, 0xd8, 0x47, 0xb0, 0x1e, 0xdf, 0x08, 0x3a, 0x22, 0x39, 0xd5, 0x5b,
+ 0x6d, 0x4c, 0x2e, 0x73, 0x5f, 0x58, 0x20, 0xb8, 0xc9, 0xf6, 0x91, 0x23,
+ 0x9d, 0x64, 0x76, 0x50, 0xb0, 0xe3, 0xe2, 0x5e, 0xed, 0xa0, 0x06, 0xb2,
+ 0x77, 0x01, 0x2f, 0xd4, 0xe8, 0x34, 0xe5, 0x35, 0x99, 0x8c, 0x6b, 0x1c,
+ 0xfd, 0xb2, 0xe6, 0xc3, 0xac, 0x1c, 0x12, 0x07, 0x07, 0x48, 0xd3, 0x54,
+ 0x94, 0x8a, 0xcb, 0x4b, 0xad, 0x6d, 0x5a, 0xec, 0x1c, 0x03, 0x27, 0xe1,
+ 0xb8, 0x7c, 0x11, 0xdd, 0x63, 0xeb, 0xb0, 0x3c, 0x10, 0xda, 0xf7, 0x86,
+ 0x5a, 0xc6, 0xb7, 0x7e, 0xe1, 0xc6, 0xdf, 0x87, 0x9a, 0xad, 0x7f, 0x51,
+ 0x65, 0xc2, 0x8b, 0xb6, 0xb1, 0xa5, 0xc1, 0xbb, 0x75, 0xe0, 0x8d, 0xda,
+ 0x4f, 0x8a, 0x88, 0xc8, 0x7d, 0xcc, 0x71, 0xd8, 0xda, 0x2a, 0x73, 0x9a,
+ 0x1a, 0x7e, 0x94, 0xbb, 0x5d, 0x36, 0xe9, 0xca, 0x4a, 0x6c, 0xf5, 0x4b,
+ 0x01, 0xc5, 0xbe, 0x9f, 0xb4, 0x82, 0x4b, 0x5c, 0xe1, 0x49, 0x10, 0x5e,
+ 0x3d, 0xae, 0x10, 0x4e, 0x9a, 0x19, 0x58, 0xfd, 0x1e, 0xc3, 0x2e, 0x63,
+ 0x40, 0x97, 0x0e, 0x09, 0x22, 0x63, 0xb6, 0x9f, 0x05, 0xb8, 0x31, 0x31,
+ 0xf2, 0xab, 0x7d, 0x05, 0xc6, 0xac, 0x80, 0x21, 0xa3, 0x69, 0x00, 0xc0,
+ 0xd0, 0x49, 0x27, 0x4d, 0x57, 0x39, 0xd2, 0x1d, 0xe9, 0xe5, 0x37, 0x76,
+ 0xa5, 0xaf, 0x20, 0xf6, 0x49, 0x4e, 0xdd, 0xb9, 0x14, 0x51, 0x4b, 0x4b,
+ 0x2b, 0xe5, 0xcc, 0x73, 0xd8, 0xe1, 0xb0, 0xcb, 0x4e, 0xa0, 0xb6, 0x15,
+ 0xcf, 0xe7, 0xeb, 0x19, 0x75, 0x5b, 0x01, 0xc4, 0xee, 0x6d, 0xa5, 0xad,
+ 0x89, 0x1a, 0x0e, 0x3b, 0x76, 0x55, 0xac, 0x21, 0x8c, 0x24, 0x7a, 0x55,
+ 0x97, 0x98, 0x73, 0xac, 0x7e, 0xe3, 0x07, 0xc0, 0x9f, 0xa4, 0x49, 0xf0,
+ 0x42, 0xc7, 0x7e, 0x45, 0x4d, 0x73, 0x9e, 0x6b, 0xba, 0x93, 0xa3, 0x2b,
+ 0xd9, 0x20, 0x1f, 0x37, 0x24, 0xa6, 0xcf, 0xa9, 0x60, 0xca, 0x0e, 0x2d,
+ 0x16, 0x3e, 0xd6, 0x8a, 0xdc, 0xd8, 0x1b, 0x4b, 0x84, 0x91, 0xaf, 0xc1,
+ 0x3d, 0x78, 0xf8, 0x4e, 0xca, 0xde, 0x31, 0x58, 0xcc, 0x90, 0x61, 0xee,
+ 0x2d, 0x0f, 0x20, 0xf3, 0xdc, 0x68, 0x3e, 0x48, 0x4e, 0x35, 0xbe, 0xa0,
+ 0xf7, 0x49, 0x73, 0x08, 0x73, 0x9b, 0x5c, 0x80, 0xd6, 0xfe, 0x29, 0x85,
+ 0xc2, 0xab, 0x8d, 0xae, 0x70, 0xd6, 0x03, 0x5e, 0xe7, 0x3e, 0x4b, 0x62,
+ 0x5a, 0x06, 0xe8, 0x1c, 0x1e, 0xc9, 0x29, 0xc1, 0xbe, 0x86, 0xe4, 0xdf,
+ 0x99, 0xd2, 0xc9, 0x8c, 0x8c, 0x6b, 0x5d, 0x6e, 0x29, 0x20, 0x7d, 0x12,
+ 0x77, 0x6d, 0xf0, 0xee, 0x81, 0xf5, 0x7f, 0x2b, 0x7f, 0x5d, 0xa0, 0x5d,
+ 0x8f, 0x50, 0xb5, 0xa4, 0xc3, 0x98, 0xdd, 0x85, 0xa5, 0x8d, 0x77, 0xe6,
+ 0xb2, 0x1b, 0xf8, 0x28, 0xf5, 0xfb, 0xdd, 0x8d, 0xd6, 0x99, 0x99, 0x41,
+ 0x87, 0x6d, 0x63, 0xa7, 0x89, 0x89, 0x69, 0xfc, 0x8b, 0x47, 0x13, 0x19,
+ 0xb9, 0x1d, 0x53, 0x13, 0xab, 0xe0, 0xc6, 0xc7, 0x93, 0xeb, 0x0f, 0xdc,
+ 0x7e, 0xd2, 0x26, 0x12, 0x52, 0x5f, 0xac, 0xc1, 0xf8, 0x79, 0xb6, 0x75,
+ 0x0a, 0x9c, 0x1a, 0xd7, 0x54, 0xc0, 0xc0, 0xc6, 0x00, 0x4d, 0x8e, 0xf6,
+ 0x3b, 0xf4, 0x80, 0x69, 0xc2, 0x17, 0xd5, 0xeb, 0x9e, 0xfc, 0xca, 0xdb,
+ 0x65, 0x8f, 0x04, 0x62, 0xba, 0xc1, 0x4c, 0xc9, 0x7b, 0x89, 0x8d, 0xce,
+ 0x3f, 0x03, 0x31, 0xf0, 0x5a, 0x1d, 0x58, 0xbb, 0x2a, 0xfc, 0x5c, 0x2b,
+ 0xed, 0x14, 0x8b, 0x8b, 0xd9, 0x63, 0xa2, 0x43, 0xda, 0xc8, 0x76, 0xc7,
+ 0x0f, 0x30, 0x34, 0xf3, 0x85, 0x8f, 0xf5, 0x65, 0xf4, 0x5f, 0xd6, 0x72,
+ 0x9f, 0x5d, 0x6e, 0xd8, 0xea, 0xdc, 0x6a, 0x6b, 0x9d, 0xee, 0x00, 0x39,
+ 0xbf, 0x9c, 0x04, 0x24, 0xa7, 0xa4, 0x0d, 0x75, 0x8c, 0x05, 0xa2, 0x36,
+ 0x4e, 0xd2, 0xe1, 0x12, 0x0f, 0xfb, 0x41, 0x52, 0x6b, 0x7d, 0x36, 0x06,
+ 0x18, 0x7c, 0x9d, 0xae, 0x68, 0xd5, 0xce, 0x9e, 0xd2, 0x79, 0x0a, 0xcb,
+ 0x6c, 0xaa, 0xf1, 0x5d, 0x6f, 0x27, 0xe8, 0x17, 0x0f, 0x09, 0xe7, 0x5f,
+ 0x14, 0x11, 0x5b, 0x45, 0xc0, 0x35, 0xc3, 0x51, 0xb8, 0x69, 0x0d, 0x00,
+ 0x89, 0x11, 0x01, 0x25, 0x35, 0x33, 0x2f, 0xb9, 0x96, 0xb6, 0xb6, 0x81,
+ 0xb5, 0xad, 0x1b, 0xaa, 0x10, 0x37, 0x38, 0x9f, 0xcf, 0x70, 0xf0, 0x1d,
+ 0x92, 0xf4, 0x9e, 0xf6, 0x8b, 0x5b, 0x5e, 0xf6, 0x02, 0x26, 0xa8, 0x68,
+ 0x35, 0x7f, 0x24, 0xed, 0xd7, 0xe6, 0x8d, 0x6e, 0x23, 0x72, 0x58, 0xd7,
+ 0xd8, 0xd8, 0x70, 0x20, 0x3c, 0xfd, 0x12, 0xde, 0xfa, 0x47, 0x3a, 0x23,
+ 0xd5, 0x48, 0xad, 0xaf, 0x7d, 0x36, 0x10, 0xca, 0xc0, 0xdf, 0x59, 0x00,
+ 0xb5, 0xdb, 0xbb, 0x4f, 0x74, 0x94, 0x91, 0xbb, 0x3d, 0x72, 0x6c, 0xac,
+ 0x6f, 0x60, 0x0e, 0xae, 0xc6, 0x9d, 0xc6, 0x08, 0x98, 0x25, 0x57, 0xbb,
+ 0x1b, 0xd6, 0xc9, 0x2f, 0xae, 0x1a, 0xee, 0x4b, 0x89, 0x82, 0x1a, 0xe1,
+ 0xf9, 0xb2, 0xa6, 0x2c, 0xfd, 0x11, 0x71, 0x69, 0x63, 0xa9, 0x2e, 0xf4,
+ 0xda, 0x3b, 0xb0, 0xeb, 0xb0, 0xfc, 0x0a, 0x8e, 0x4d, 0x6f, 0x37, 0x3a,
+ 0x96, 0x8d, 0x5c, 0xcf, 0x69, 0x71, 0x80, 0x23, 0x50, 0x49, 0x49, 0x4d,
+ 0x5f, 0xb1, 0xd4, 0xf2, 0x32, 0x32, 0x71, 0x40, 0xb4, 0x98, 0x7b, 0xe9,
+ 0x78, 0xf7, 0x83, 0xfb, 0xc0, 0x80, 0x0f, 0xc8, 0x2b, 0x1f, 0x63, 0x7f,
+ 0xd9, 0xf6, 0xef, 0xa3, 0xd3, 0xf5, 0x37, 0x7a, 0x5e, 0x99, 0x9d, 0x9f,
+ 0xd6, 0xe6, 0x50, 0x6a, 0x65, 0xf6, 0x36, 0xbf, 0xb5, 0x5a, 0x0b, 0xd8,
+ 0xf2, 0xe6, 0x58, 0xc3, 0xed, 0xda, 0x34, 0x21, 0xdf, 0x14, 0x3f, 0xb4,
+ 0x64, 0x6e, 0xf5, 0xf7, 0x9d, 0x9b, 0xfe, 0x94, 0x7b, 0x66, 0x66, 0x25,
+ 0x25, 0x35, 0xf3, 0x1c, 0x2b, 0x6b, 0x1a, 0x1e, 0xd3, 0x50, 0x6c, 0xfb,
+ 0x35, 0x93, 0xde, 0x50, 0xdb, 0x95, 0x6b, 0x6b, 0x34, 0x5b, 0xfa, 0x3a,
+ 0xdf, 0x07, 0xd3, 0x20, 0x12, 0x7c, 0xf8, 0x2a, 0xaf, 0x53, 0xc8, 0xc4,
+ 0x65, 0x85, 0xb8, 0xa4, 0xbe, 0xf6, 0x9d, 0xd6, 0xb4, 0xf1, 0x59, 0xfa,
+ 0x3a, 0xf8, 0x92, 0x7e, 0xe4, 0x3c, 0x02, 0xdb, 0x2d, 0x0f, 0xb1, 0xa4,
+ 0xba, 0xad, 0x43, 0x7b, 0x12, 0x22, 0x1b, 0x0d, 0x1e, 0x29, 0x29, 0xdb,
+ 0x65, 0xb9, 0x77, 0x58, 0xda, 0xa8, 0x6f, 0xe8, 0x59, 0xa7, 0xa8, 0xc0,
+ 0x5b, 0x22, 0x3c, 0x75, 0x4a, 0xdb, 0x45, 0x21, 0xf7, 0xe5, 0x56, 0xdf,
+ 0x54, 0xb8, 0xb6, 0xba, 0x8f, 0x27, 0x6e, 0x9b, 0x9d, 0xa7, 0x0a, 0x15,
+ 0x5b, 0x97, 0x53, 0x9d, 0xe9, 0x17, 0x1a, 0x9e, 0x0b, 0x84, 0x70, 0x0c,
+ 0xf1, 0xee, 0xf3, 0xf0, 0x42, 0x2e, 0xbb, 0x26, 0x99, 0xbc, 0x17, 0xdd,
+ 0x43, 0xdc, 0xd7, 0x33, 0x4f, 0x88, 0x49, 0x4d, 0x8c, 0x1b, 0x89, 0x68,
+ 0x71, 0x10, 0xd8, 0xda, 0x7b, 0x36, 0x15, 0xb6, 0x39, 0xec, 0x24, 0xef,
+ 0x3e, 0x4c, 0x02, 0x00, 0x54, 0x71, 0x9e, 0x20, 0xd4, 0x5e, 0xd6, 0x9e,
+ 0x43, 0x75, 0x89, 0xf0, 0x05, 0xca, 0xfd, 0x2e, 0x04, 0x83, 0x67, 0xb8,
+ 0x79, 0x10, 0x35, 0xf9, 0xa4, 0xa4, 0x59, 0x65, 0xce, 0xac, 0x3a, 0xcd,
+ 0x49, 0x99, 0x59, 0xbe, 0xad, 0x95, 0xd8, 0x2c, 0xa8, 0xec, 0x73, 0x7b,
+ 0x8f, 0xe2, 0xb5, 0x73, 0x62, 0xc6, 0xc3, 0x1a, 0xe6, 0xb4, 0x4e, 0xd9,
+ 0xee, 0x07, 0x70, 0xb1, 0xad, 0xb0, 0x00, 0xe0, 0x39, 0x09, 0x29, 0xb4,
+ 0xd1, 0x5e, 0x5f, 0xe9, 0x2a, 0x68, 0x66, 0x46, 0xbb, 0xea, 0x1c, 0x3f,
+ 0xcd, 0xbf, 0xdc, 0xa9, 0xe6, 0x38, 0x7a, 0x6d, 0x6f, 0xd0, 0x20, 0xf0,
+ 0xab, 0xb2, 0xf7, 0x36, 0x1e, 0xd7, 0x6d, 0x70, 0x32, 0x08, 0xe4, 0x42,
+ 0xd3, 0xc7, 0xb3, 0x17, 0xae, 0xb0, 0xd1, 0x61, 0x6d, 0x1d, 0x4c, 0x0f,
+ 0xd1, 0xbf, 0xf3, 0x6d, 0x8f, 0x1f, 0x34, 0x94, 0xe1, 0x5a, 0xc6, 0xf3,
+ 0x33, 0xac, 0x42, 0x03, 0x98, 0x58, 0xf9, 0xed, 0xd8, 0xa3, 0xe5, 0xd1,
+ 0x91, 0x89, 0x69, 0xa7, 0x25, 0xa5, 0x97, 0x36, 0x77, 0x34, 0xff, 0x00,
+ 0x05, 0x57, 0x1b, 0x20, 0x96, 0xbe, 0xb3, 0xa8, 0x3e, 0xe0, 0x3c, 0xc2,
+ 0x4a, 0x4c, 0xe7, 0x10, 0xcb, 0x09, 0x33, 0x30, 0x15, 0xbf, 0xaa, 0xd8,
+ 0xf5, 0xdb, 0xd5, 0xc5, 0xb6, 0x98, 0x65, 0x0d, 0x2e, 0x02, 0x26, 0x5e,
+ 0x7d, 0xad, 0x1f, 0x8a, 0xa3, 0x74, 0x1a, 0xc3, 0xab, 0x92, 0xcf, 0xce,
+ 0x1d, 0xdb, 0xf1, 0x5d, 0x0f, 0xd5, 0xec, 0x53, 0x8d, 0x8c, 0xcb, 0x8b,
+ 0x0b, 0xac, 0xb4, 0xfa, 0x85, 0xbc, 0x0d, 0x9c, 0x37, 0x54, 0x94, 0xec,
+ 0xe5, 0x65, 0x32, 0xbc, 0x93, 0x4b, 0x9a, 0xd1, 0x58, 0x63, 0x5c, 0xf7,
+ 0x9e, 0x46, 0xe2, 0x43, 0x47, 0xe0, 0xa8, 0x66, 0xb9, 0xd8, 0xd6, 0x01,
+ 0x57, 0xb5, 0xcf, 0xd4, 0x39, 0xa3, 0x5f, 0x1e, 0x38, 0x57, 0x1d, 0x4b,
+ 0x6d, 0xca, 0xb6, 0xe7, 0x99, 0x0f, 0xae, 0x76, 0xc7, 0x61, 0x22, 0x15,
+ 0x57, 0x63, 0xb5, 0xf2, 0xc0, 0xf2, 0xdd, 0xad, 0x86, 0x92, 0x74, 0xd7,
+ 0x5f, 0xf6, 0x24, 0xa6, 0xb9, 0xc9, 0xae, 0xc0, 0x47, 0xa6, 0x19, 0x63,
+ 0x01, 0x73, 0x9d, 0xb4, 0xc9, 0x20, 0x49, 0xf6, 0x85, 0x51, 0x8d, 0x65,
+ 0x9a, 0xbd, 0xb6, 0x17, 0x9a, 0xdd, 0x5b, 0x5a, 0xd9, 0x00, 0x87, 0x70,
+ 0x01, 0xfe, 0x4a, 0xb0, 0xfc, 0x7b, 0x59, 0x67, 0xb4, 0xfb, 0x6c, 0x6e,
+ 0xcd, 0x3f, 0xd7, 0xba, 0xbb, 0x46, 0x36, 0x5e, 0xdf, 0xa2, 0xd6, 0x59,
+ 0x5b, 0x40, 0x6b, 0xdd, 0xa1, 0x03, 0xf3, 0xa0, 0x84, 0x94, 0xe6, 0xb7,
+ 0x11, 0xb5, 0x52, 0x1d, 0x46, 0xe8, 0xac, 0x41, 0x69, 0xfa, 0x4d, 0x27,
+ 0x9e, 0x7b, 0xa1, 0xd5, 0xf6, 0x8a, 0x99, 0x60, 0xb2, 0xa2, 0x5c, 0xf1,
+ 0xb6, 0xa6, 0x93, 0x26, 0x4e, 0x9b, 0x9c, 0x7b, 0x7c, 0x42, 0xda, 0xfb,
+ 0x3d, 0x15, 0xbb, 0xd4, 0xb9, 0xc4, 0xbd, 0xda, 0x39, 0xd2, 0x48, 0xd5,
+ 0x40, 0xd9, 0x83, 0x93, 0x60, 0xa0, 0x50, 0xf7, 0x33, 0x69, 0x97, 0x97,
+ 0xc0, 0xd3, 0xc8, 0x6b, 0xaf, 0x8a, 0x4a, 0x68, 0xe1, 0x88, 0xdf, 0x49,
+ 0xc8, 0xd8, 0xf7, 0x90, 0xe1, 0x70, 0x1b, 0xcb, 0x74, 0x8f, 0x29, 0x82,
+ 0x16, 0x5d, 0x6d, 0xf4, 0x3a, 0xad, 0xd5, 0xee, 0x0e, 0xd9, 0x64, 0x87,
+ 0x0e, 0x1c, 0x26, 0x41, 0x1f, 0x15, 0xb8, 0xdc, 0x7c, 0x66, 0xd8, 0x5b,
+ 0x8f, 0x8c, 0x1a, 0x1b, 0xf4, 0x8b, 0x9d, 0xa3, 0x40, 0xe3, 0x55, 0x85,
+ 0xd5, 0x5a, 0x68, 0xea, 0xef, 0x9d, 0x37, 0xb5, 0xaf, 0xd3, 0xcc, 0x24,
+ 0xa7, 0x6b, 0x27, 0x0f, 0x6b, 0x8e, 0x43, 0x2d, 0x7b, 0xb1, 0xee, 0x7e,
+ 0xdd, 0xae, 0xd4, 0xd4, 0xe3, 0xa9, 0x69, 0xfe, 0x4c, 0x6a, 0x0a, 0xaf,
+ 0x9b, 0x8b, 0x63, 0x4b, 0x4d, 0x4e, 0x2d, 0x2e, 0x31, 0x5b, 0xc4, 0xb0,
+ 0xb8, 0x01, 0x20, 0xee, 0x6f, 0x75, 0x79, 0xae, 0xdd, 0x8a, 0x5c, 0x1c,
+ 0x3d, 0x3b, 0x58, 0xd6, 0x5d, 0x5c, 0x9d, 0x5a, 0xe1, 0xa1, 0xf2, 0x20,
+ 0xa2, 0xe0, 0x74, 0xe0, 0x40, 0xad, 0xad, 0x65, 0x6c, 0xac, 0x92, 0xc9,
+ 0x3b, 0x84, 0x9f, 0x29, 0xd7, 0xc9, 0x25, 0x20, 0xc5, 0xcb, 0xc9, 0xc7,
+ 0xb8, 0x51, 0x90, 0x3d, 0x7c, 0x8a, 0xbd, 0xaf, 0x74, 0x82, 0xe8, 0x70,
+ 0x9d, 0xae, 0x3c, 0x39, 0x1a, 0xde, 0x95, 0x4d, 0xcd, 0x07, 0x10, 0x3a,
+ 0xaa, 0xc1, 0xdc, 0x6a, 0x24, 0x96, 0x35, 0xd3, 0x3a, 0x4f, 0x1c, 0x98,
+ 0x51, 0x3d, 0x14, 0x6c, 0xba, 0xc2, 0xf6, 0xba, 0x1e, 0x5f, 0x71, 0x0e,
+ 0xdc, 0x63, 0xe9, 0x06, 0x8d, 0x34, 0x27, 0xcd, 0x58, 0xc1, 0xa7, 0x19,
+ 0xf1, 0x6b, 0x9c, 0x58, 0x4f, 0xe6, 0xc9, 0x80, 0x3f, 0x32, 0x7c, 0x4c,
+ 0xf8, 0x94, 0x94, 0xf2, 0x3f, 0x58, 0x6a, 0x7e, 0x56, 0x5d, 0x6c, 0x0d,
+ 0x6e, 0x38, 0xa9, 0x81, 0x8e, 0x7d, 0x8e, 0x21, 0xa4, 0x97, 0x12, 0xdf,
+ 0x71, 0x1d, 0xd1, 0x7a, 0x0d, 0xd5, 0x74, 0xdc, 0xbf, 0xb1, 0xdf, 0x6b,
+ 0x8b, 0xee, 0x20, 0x06, 0x01, 0xec, 0xdc, 0xee, 0x36, 0xbb, 0xb8, 0xf3,
+ 0xfb, 0x97, 0x43, 0xd5, 0xfe, 0xab, 0x57, 0x99, 0x7b, 0x6f, 0x75, 0x96,
+ 0x1b, 0x20, 0x7a, 0x91, 0xee, 0xdc, 0x07, 0xdc, 0x04, 0xf9, 0x2c, 0xca,
+ 0x7e, 0xae, 0xdd, 0x0e, 0xc6, 0xcb, 0x75, 0x6d, 0x65, 0x76, 0x13, 0x89,
+ 0x7b, 0x74, 0xb5, 0x84, 0x19, 0xf8, 0x16, 0xf8, 0x83, 0xf1, 0x49, 0x49,
+ 0x7a, 0xbd, 0x8d, 0xfb, 0x45, 0x2d, 0x6e, 0xcb, 0x1e, 0xe6, 0x3b, 0xda,
+ 0xe7, 0x43, 0xda, 0xe1, 0x05, 0x8e, 0x6c, 0xf8, 0x44, 0x18, 0xf1, 0x58,
+ 0x9d, 0x19, 0xd9, 0x18, 0x9d, 0x66, 0x5a, 0x07, 0xa6, 0xf3, 0xe9, 0xfb,
+ 0x80, 0xd5, 0x8f, 0x82, 0xdf, 0x87, 0x65, 0xd0, 0xdf, 0x85, 0x5b, 0xb6,
+ 0xb7, 0x30, 0x36, 0xd2, 0xc2, 0x5c, 0xc2, 0x0e, 0xe7, 0x34, 0x78, 0x12,
+ 0xdd, 0x27, 0xc5, 0x1d, 0xa2, 0xb7, 0x57, 0x58, 0x65, 0x6d, 0x63, 0x04,
+ 0x32, 0x62, 0x4c, 0xb7, 0xe8, 0xea, 0x3c, 0x92, 0x53, 0x65, 0xf8, 0xd8,
+ 0xb5, 0x1a, 0x32, 0x5d, 0x6b, 0x81, 0x71, 0xda, 0xf6, 0x81, 0x20, 0x16,
+ 0xea, 0x14, 0x9d, 0x91, 0x83, 0x8f, 0x68, 0xaf, 0xd4, 0x22, 0xc6, 0xe9,
+ 0x5e, 0xe1, 0xba, 0x41, 0x13, 0xc3, 0x4e, 0xba, 0x14, 0x1c, 0x9a, 0x72,
+ 0x4e, 0x2c, 0xb3, 0x6d, 0x81, 0xf6, 0x89, 0xa8, 0xbb, 0x69, 0x2c, 0x8d,
+ 0x7e, 0x29, 0x66, 0x57, 0x8e, 0x5b, 0x55, 0x8e, 0x70, 0x16, 0x38, 0x6c,
+ 0x0c, 0xfd, 0xd2, 0xc3, 0x0e, 0xd0, 0x76, 0xe0, 0x24, 0xa6, 0xc5, 0xde,
+ 0x93, 0x71, 0xec, 0x78, 0xba, 0x1b, 0xf4, 0x8b, 0x9b, 0x21, 0xf2, 0x3b,
+ 0x00, 0x7e, 0x0a, 0x0c, 0x68, 0xb3, 0x18, 0x0d, 0xfe, 0x9b, 0x1a, 0x0d,
+ 0xaf, 0x71, 0x3a, 0x96, 0x47, 0xb0, 0x7c, 0x4c, 0xa0, 0xda, 0xd7, 0xfa,
+ 0x66, 0xb6, 0x33, 0x79, 0xb3, 0xe8, 0xf8, 0xb4, 0x46, 0xd9, 0x3f, 0x08,
+ 0x43, 0xab, 0xed, 0x2e, 0xa1, 0x86, 0xb6, 0xba, 0xc6, 0x35, 0x8d, 0xda,
+ 0xdd, 0xa4, 0x8d, 0x3c, 0xc2, 0x4a, 0x42, 0xcb, 0x6f, 0x81, 0xb7, 0x7b,
+ 0x1e, 0xd7, 0xee, 0x69, 0x22, 0x0b, 0x8f, 0xf2, 0x7e, 0xf5, 0x6a, 0xfb,
+ 0x9c, 0xff, 0x00, 0x46, 0xcb, 0x60, 0x11, 0xa3, 0x8c, 0xc8, 0x20, 0x19,
+ 0x43, 0x75, 0xb6, 0x3d, 0x8d, 0x1b, 0x03, 0xec, 0x2e, 0x87, 0x38, 0xc6,
+ 0xd9, 0xe4, 0xeb, 0x3a, 0x9f, 0x20, 0xa5, 0x69, 0x61, 0xa5, 0x9b, 0x87,
+ 0xb8, 0x13, 0xb9, 0xbe, 0x71, 0x3c, 0x76, 0x49, 0x4b, 0xd7, 0x8a, 0x5c,
+ 0xe7, 0x97, 0x57, 0xe9, 0x56, 0x40, 0xdc, 0xf6, 0xb8, 0x12, 0xe6, 0xf1,
+ 0x01, 0xb2, 0x3e, 0xe0, 0x9f, 0xec, 0x59, 0x11, 0x3e, 0xa5, 0x7f, 0x64,
+ 0x8d, 0xde, 0xbf, 0x79, 0xe3, 0x6e, 0xc8, 0xe5, 0x2a, 0xeb, 0x70, 0x7e,
+ 0xe1, 0x24, 0x96, 0x81, 0xce, 0x9e, 0x33, 0x07, 0xe2, 0x9f, 0xd6, 0x1e,
+ 0xb7, 0xa1, 0x0e, 0xf5, 0xb8, 0xd9, 0x3e, 0xcf, 0xf3, 0xbc, 0x61, 0x25,
+ 0x39, 0x97, 0xe3, 0xde, 0xdb, 0x5f, 0x91, 0xd3, 0xa4, 0xf0, 0x59, 0x6b,
+ 0x9c, 0x0f, 0xb5, 0xda, 0x90, 0x59, 0x12, 0x7c, 0x51, 0x6a, 0xa3, 0x25,
+ 0xff, 0x00, 0xa7, 0xb5, 0xf6, 0x54, 0x49, 0xda, 0x6d, 0xb0, 0x80, 0xf8,
+ 0x89, 0x30, 0x1b, 0xc0, 0xd5, 0x4e, 0xec, 0x7b, 0xb7, 0xee, 0x05, 0xe7,
+ 0x1d, 0xc7, 0x70, 0xc7, 0x86, 0xb5, 0xe1, 0xbc, 0x31, 0xb1, 0xd9, 0x13,
+ 0x31, 0xd6, 0x1d, 0x96, 0x07, 0x16, 0xd5, 0x51, 0x0d, 0x32, 0x3f, 0x34,
+ 0x08, 0x9d, 0x7b, 0x93, 0xdd, 0x25, 0x36, 0x2c, 0x16, 0x1c, 0x02, 0x6a,
+ 0x7b, 0x8b, 0xc1, 0x1e, 0x99, 0x77, 0x2e, 0xf3, 0xf7, 0x78, 0xac, 0x91,
+ 0x91, 0x96, 0xcb, 0x5f, 0x4d, 0x75, 0xfa, 0x8f, 0xb7, 0xdc, 0xe7, 0x8e,
+ 0xd0, 0x3d, 0xda, 0xf6, 0x1a, 0x23, 0xdd, 0xd4, 0xf1, 0x0b, 0xe1, 0xf7,
+ 0x58, 0x1c, 0x38, 0x6b, 0x84, 0x83, 0x1e, 0x60, 0x84, 0xd5, 0x57, 0x87,
+ 0x6d, 0x64, 0xb5, 0x96, 0x99, 0x1f, 0x42, 0x61, 0xa6, 0x75, 0xd4, 0xb4,
+ 0xc9, 0xe5, 0x25, 0x29, 0xd6, 0x17, 0x06, 0xba, 0xe6, 0x0a, 0x9f, 0xba,
+ 0x24, 0x10, 0x5a, 0xe0, 0x39, 0x2d, 0x78, 0xd1, 0x5c, 0x98, 0x26, 0x35,
+ 0x6b, 0xc6, 0xe6, 0x19, 0xd0, 0xaa, 0x95, 0x62, 0xd8, 0xfd, 0xde, 0xe0,
+ 0xc6, 0x09, 0x86, 0x86, 0x1d, 0x23, 0x8d, 0x35, 0x3c, 0x79, 0xa3, 0x32,
+ 0x92, 0xda, 0xb7, 0xc9, 0x3f, 0xba, 0x75, 0x29, 0x29, 0xb0, 0xc3, 0xa3,
+ 0x59, 0xb8, 0x3c, 0x8e, 0x40, 0x20, 0x80, 0x4f, 0x3c, 0x2c, 0x5b, 0x9a,
+ 0xd6, 0x64, 0x5a, 0xc7, 0x0f, 0xce, 0x2b, 0x61, 0xd6, 0xb2, 0x6b, 0x2d,
+ 0x10, 0xed, 0xa6, 0x7e, 0x23, 0x55, 0x93, 0xd5, 0x88, 0x17, 0xb2, 0xf6,
+ 0x36, 0x45, 0xa2, 0x67, 0xcf, 0xba, 0x4a, 0x68, 0xd8, 0xdd, 0x8e, 0x20,
+ 0x70, 0xab, 0xee, 0xf4, 0xec, 0x6b, 0xaa, 0x25, 0xb6, 0x34, 0x82, 0x1c,
+ 0x3b, 0x10, 0x8f, 0xb4, 0x39, 0xdb, 0x9f, 0x21, 0xb3, 0x24, 0x28, 0x43,
+ 0x4d, 0x90, 0x06, 0x80, 0x49, 0xf9, 0xa4, 0xa7, 0xa0, 0xa2, 0xcc, 0x6f,
+ 0xad, 0x38, 0x5f, 0x67, 0xba, 0x2a, 0xea, 0xf8, 0xed, 0xf6, 0x3f, 0x8f,
+ 0x50, 0x2e, 0x2e, 0xd6, 0x5d, 0x83, 0x98, 0xea, 0xaf, 0x69, 0x65, 0x95,
+ 0x3a, 0x1e, 0xc3, 0xe4, 0xaf, 0x55, 0x75, 0xb8, 0xb9, 0x63, 0x26, 0x82,
+ 0x58, 0xfa, 0xcc, 0xb4, 0x8f, 0xc8, 0xba, 0x0e, 0xb1, 0x83, 0x8f, 0xf5,
+ 0x97, 0xa5, 0xb7, 0xac, 0x62, 0x34, 0x0c, 0xec, 0x71, 0x19, 0x35, 0x8e,
+ 0x5c, 0x07, 0x3f, 0x77, 0x64, 0x94, 0xf3, 0x75, 0x97, 0xd5, 0xd4, 0xd9,
+ 0x5d, 0x63, 0x73, 0x2d, 0x2d, 0x6b, 0x58, 0x78, 0x73, 0x5f, 0xdb, 0xf1,
+ 0x5d, 0xf1, 0x65, 0x74, 0x50, 0x21, 0xa1, 0xad, 0xa9, 0xa1, 0xb1, 0xe4,
+ 0x34, 0x5c, 0x97, 0x49, 0xa5, 0xb9, 0xae, 0xe9, 0x79, 0x4d, 0x12, 0xfc,
+ 0x6b, 0x9d, 0x4d, 0xdf, 0xd5, 0x00, 0xd9, 0x59, 0x2b, 0xb5, 0x6d, 0x4d,
+ 0x2d, 0x75, 0xb9, 0x4e, 0x8a, 0x48, 0xfa, 0x3d, 0xdc, 0x92, 0x9c, 0x8f,
+ 0x5d, 0xd6, 0xdc, 0xd0, 0xc6, 0x97, 0xbe, 0x36, 0x6a, 0x3c, 0xe7, 0xfd,
+ 0x4a, 0xba, 0xe3, 0x5d, 0x2d, 0x6f, 0xac, 0x5a, 0xc2, 0x00, 0xdc, 0xd3,
+ 0xa9, 0xf2, 0x08, 0x39, 0x39, 0x50, 0xe2, 0xcc, 0x7a, 0xc6, 0x3d, 0x7e,
+ 0x20, 0x7b, 0x88, 0xf3, 0x28, 0x45, 0xd4, 0xb9, 0xbb, 0x80, 0x16, 0x40,
+ 0xf7, 0x4f, 0x62, 0x92, 0x9b, 0x02, 0xea, 0x1d, 0x36, 0x07, 0x41, 0x27,
+ 0xb8, 0x4c, 0xeb, 0x60, 0xb9, 0xf5, 0x38, 0x3d, 0xc6, 0x04, 0x97, 0x47,
+ 0xe0, 0x55, 0x5b, 0x6a, 0x24, 0x7b, 0xa3, 0x67, 0x21, 0xbe, 0x3f, 0x14,
+ 0xa9, 0x6d, 0x4e, 0x2e, 0xa9, 0xcd, 0x0e, 0x64, 0xcc, 0x73, 0xa8, 0x49,
+ 0x4c, 0xad, 0x75, 0x4c, 0x25, 0xf7, 0xb1, 0xd2, 0x5e, 0x1a, 0x66, 0x43,
+ 0x4c, 0xf7, 0x1b, 0x8c, 0x21, 0x5a, 0xfa, 0x9b, 0x94, 0x1a, 0xc7, 0xfb,
+ 0x5f, 0xf4, 0x58, 0x0c, 0xb6, 0x4f, 0x8e, 0x9c, 0xf8, 0x22, 0x5d, 0x91,
+ 0x66, 0x3b, 0x18, 0xd6, 0xbb, 0x60, 0x98, 0x7f, 0x04, 0x1d, 0xc7, 0x4f,
+ 0x69, 0x9f, 0x82, 0x85, 0x19, 0xd8, 0x17, 0xdc, 0xea, 0x2c, 0xc7, 0x6b,
+ 0x2c, 0x78, 0xd9, 0xea, 0x56, 0xe0, 0xd7, 0x11, 0xf0, 0xf9, 0xf6, 0x49,
+ 0x4d, 0xb7, 0xe3, 0xd1, 0xe8, 0x45, 0xe7, 0x51, 0x05, 0x90, 0x76, 0xcf,
+ 0x97, 0x9a, 0xc2, 0xeb, 0x83, 0x12, 0x9c, 0x9c, 0x7b, 0xed, 0xa8, 0xd8,
+ 0x6d, 0x64, 0x06, 0x87, 0x96, 0x86, 0xc1, 0xe0, 0xf7, 0x5b, 0xec, 0xc3,
+ 0x0c, 0xa0, 0xb3, 0x1a, 0xd1, 0x94, 0xf6, 0xba, 0x5c, 0x1d, 0x1b, 0x9a,
+ 0xde, 0x7c, 0xf5, 0xf8, 0x2c, 0x1f, 0xac, 0xd8, 0xd7, 0x33, 0x12, 0x8c,
+ 0x87, 0xf2, 0xc7, 0x9a, 0xe2, 0x20, 0xed, 0xe4, 0x49, 0x49, 0x4e, 0x8e,
+ 0x2e, 0x4d, 0x6f, 0xc1, 0x0f, 0xf4, 0x99, 0xb2, 0x03, 0x4b, 0x20, 0xb8,
+ 0x81, 0x3a, 0x73, 0xca, 0xb5, 0x56, 0x46, 0x23, 0xdb, 0xe9, 0x10, 0x58,
+ 0xd2, 0x25, 0xa0, 0x1d, 0xba, 0xf7, 0x73, 0x0f, 0x61, 0xe6, 0xb3, 0xbe,
+ 0xae, 0x38, 0x3f, 0x11, 0xc1, 0xee, 0x3f, 0x48, 0x37, 0x68, 0x12, 0x35,
+ 0x92, 0x09, 0xf0, 0x57, 0x4b, 0x59, 0x8b, 0xea, 0x71, 0x68, 0x74, 0x10,
+ 0xc2, 0x08, 0x00, 0xbb, 0x5d, 0xad, 0x89, 0x3c, 0x14, 0x94, 0xc4, 0x74,
+ 0xfa, 0x83, 0xec, 0x76, 0x3e, 0x45, 0x85, 0xf7, 0x49, 0x79, 0x73, 0xa0,
+ 0xb8, 0x4c, 0x9d, 0xc2, 0x20, 0xf9, 0x7e, 0x55, 0x2c, 0x76, 0x54, 0x1a,
+ 0xef, 0x56, 0xe7, 0xba, 0xca, 0x37, 0x3d, 0xed, 0x32, 0xd2, 0x5a, 0xed,
+ 0x79, 0x11, 0x20, 0x21, 0x9b, 0xaa, 0x82, 0xe7, 0x17, 0x55, 0xb8, 0x8d,
+ 0x5d, 0xb5, 0x81, 0xb2, 0x3e, 0x8f, 0x78, 0x06, 0x13, 0x63, 0x64, 0xdc,
+ 0xfd, 0x2f, 0x64, 0x96, 0xfe, 0x8d, 0xe1, 0xe3, 0x56, 0xb1, 0xc7, 0x40,
+ 0x09, 0xe4, 0x49, 0x49, 0x4c, 0xe9, 0xcd, 0xb8, 0xb5, 0xed, 0x63, 0x9b,
+ 0x6d, 0x1e, 0xe6, 0x96, 0xd9, 0x0e, 0x88, 0xec, 0x40, 0x87, 0x04, 0x1f,
+ 0xb7, 0x59, 0xea, 0xb1, 0xaf, 0xa8, 0xd4, 0x6c, 0x24, 0x39, 0xad, 0xed,
+ 0x02, 0x37, 0xbf, 0x9f, 0xc1, 0x1b, 0xf6, 0x5b, 0x58, 0x1f, 0x60, 0x02,
+ 0x6c, 0x20, 0xc4, 0x40, 0x2d, 0x6f, 0x79, 0x72, 0x67, 0x30, 0x17, 0x01,
+ 0x74, 0xb5, 0xcd, 0xe4, 0x9d, 0x34, 0xf1, 0x09, 0x29, 0x6b, 0x6d, 0x67,
+ 0xda, 0x1d, 0x43, 0x5e, 0xd0, 0xf2, 0x01, 0x63, 0x1c, 0xe3, 0xb9, 0xf0,
+ 0x21, 0xd1, 0xdb, 0xfb, 0xd1, 0x69, 0x7d, 0x62, 0xb7, 0x31, 0xcd, 0x1b,
+ 0xa4, 0x11, 0xa6, 0xba, 0x2a, 0xbf, 0xa1, 0xdd, 0x0f, 0xac, 0x38, 0x87,
+ 0xc3, 0x1e, 0x47, 0xb8, 0x4f, 0x87, 0xe2, 0x8d, 0x5d, 0x1b, 0x5a, 0x5c,
+ 0xc1, 0xee, 0x26, 0x4b, 0xc7, 0xe7, 0x3b, 0xb9, 0x49, 0x49, 0x99, 0x73,
+ 0x9f, 0x0e, 0x2d, 0x77, 0xab, 0xc8, 0x3d, 0x9a, 0x11, 0x08, 0x6f, 0xd9,
+ 0x1e, 0xf2, 0xf6, 0xbd, 0xf5, 0x3b, 0x78, 0x0c, 0x92, 0x5a, 0x5c, 0x23,
+ 0x4d, 0x23, 0x95, 0x96, 0xfb, 0x1c, 0x32, 0xc9, 0xb5, 0xed, 0x6d, 0x71,
+ 0x2d, 0x69, 0x9e, 0x4c, 0x09, 0xd3, 0x95, 0x6a, 0x90, 0x1e, 0x2c, 0x0e,
+ 0x33, 0xea, 0x54, 0x5a, 0xd6, 0x10, 0x4b, 0x4b, 0x9a, 0x77, 0x8e, 0x38,
+ 0xd0, 0x14, 0x94, 0x84, 0xe7, 0xd8, 0xdc, 0xf1, 0x55, 0x75, 0x7a, 0x0c,
+ 0x2d, 0x1b, 0xb2, 0x6c, 0xfd, 0x2b, 0xb6, 0xf7, 0xdb, 0x32, 0xd1, 0xe6,
+ 0x85, 0x73, 0x8e, 0x65, 0x85, 0x86, 0xfb, 0x9e, 0x64, 0x87, 0xba, 0xe2,
+ 0x59, 0x5f, 0x83, 0x03, 0x23, 0x68, 0xf3, 0x43, 0xb3, 0xa6, 0xe6, 0xdd,
+ 0x91, 0x55, 0xcd, 0xb4, 0x36, 0x59, 0xfa, 0x46, 0x98, 0x2e, 0x0e, 0x06,
+ 0x24, 0x37, 0xfa, 0xa1, 0x5c, 0xa7, 0x1e, 0x83, 0x68, 0xad, 0xbe, 0xa9,
+ 0x0d, 0x06, 0x64, 0x87, 0x82, 0x5b, 0xc7, 0xc1, 0x25, 0x22, 0x65, 0x14,
+ 0xe3, 0xb6, 0x86, 0xe4, 0x3f, 0xd4, 0x2f, 0x70, 0x0c, 0xf4, 0x64, 0x6a,
+ 0x1d, 0x3b, 0x9f, 0xae, 0x9e, 0x05, 0x58, 0xc7, 0x2e, 0xfb, 0x3b, 0x2f,
+ 0x70, 0x10, 0xeb, 0x4b, 0xf6, 0xf9, 0x4f, 0x09, 0xf2, 0x3a, 0x3b, 0x58,
+ 0xf1, 0x7e, 0xe1, 0xe8, 0x81, 0x15, 0x36, 0x0c, 0xb3, 0xdc, 0x1d, 0x04,
+ 0xfc, 0x94, 0x89, 0x9c, 0x70, 0xf6, 0x3a, 0x65, 0xc2, 0x07, 0xee, 0xc0,
+ 0xe0, 0x0f, 0x04, 0x94, 0xcb, 0xa8, 0x3c, 0xb7, 0x2c, 0xd1, 0x57, 0xd0,
+ 0x6b, 0x1a, 0xe0, 0xf3, 0x33, 0x07, 0x83, 0xe7, 0x3a, 0x25, 0xf6, 0x5c,
+ 0xbf, 0xb0, 0x7d, 0xb3, 0x6b, 0x38, 0x98, 0x9f, 0xce, 0xdd, 0x1f, 0x4a,
+ 0x7c, 0x35, 0x49, 0xb6, 0xdd, 0x91, 0x8e, 0x06, 0x45, 0x63, 0x65, 0x7b,
+ 0xa1, 0xd2, 0x01, 0x6b, 0x98, 0x34, 0xdc, 0xe3, 0xc0, 0x12, 0x83, 0xe8,
+ 0xe4, 0xfa, 0x1e, 0x97, 0xac, 0xdf, 0x42, 0x3d, 0x6d, 0xb2, 0x3c, 0x3f,
+ 0xbf, 0x44, 0x94, 0x8e, 0xbc, 0x83, 0x5e, 0x45, 0xc2, 0xda, 0xc3, 0x2b,
+ 0xac, 0x82, 0x1c, 0xd2, 0x1c, 0x49, 0x3a, 0x30, 0x13, 0x3c, 0xfc, 0x94,
+ 0x9d, 0x57, 0xda, 0x31, 0x9d, 0x12, 0xc6, 0xb6, 0x1c, 0x20, 0xeb, 0xbb,
+ 0xc1, 0x49, 0xd4, 0xf4, 0xfa, 0x6b, 0x71, 0xb5, 0xfe, 0x9b, 0x43, 0xa4,
+ 0x30, 0xcb, 0x9c, 0xf7, 0x9e, 0x7b, 0xfe, 0x6f, 0x0a, 0xb3, 0x2f, 0xf4,
+ 0x2b, 0xb5, 0x8e, 0x21, 0xe5, 0xc6, 0x0b, 0xc0, 0x3b, 0x40, 0xd4, 0x8e,
+ 0x12, 0x53, 0x7f, 0x0b, 0x17, 0xa7, 0x8a, 0x4b, 0xae, 0xa5, 0xb6, 0x64,
+ 0xb4, 0xfe, 0x92, 0xc9, 0x9f, 0xa3, 0xa8, 0x04, 0x15, 0x58, 0x64, 0x8b,
+ 0xf2, 0xde, 0x31, 0xe8, 0x05, 0x84, 0x81, 0x63, 0x9b, 0xa3, 0xfe, 0xf8,
+ 0x3a, 0x7c, 0x12, 0xa5, 0xd6, 0xdb, 0x63, 0x9f, 0xba, 0x28, 0x78, 0x02,
+ 0x40, 0x22, 0x63, 0x93, 0x04, 0x29, 0x5b, 0x61, 0xc7, 0x86, 0x62, 0x09,
+ 0x73, 0xcc, 0x3e, 0x1b, 0xba, 0x27, 0xb9, 0xe1, 0x25, 0x36, 0xf7, 0x52,
+ 0x5c, 0xc0, 0x5b, 0xba, 0x4c, 0x06, 0x92, 0x41, 0x31, 0xe4, 0x9c, 0xd4,
+ 0x3d, 0x27, 0x58, 0xe1, 0xa9, 0x30, 0xd6, 0x08, 0x01, 0xa3, 0xb0, 0x0a,
+ 0xb6, 0x6e, 0x55, 0x58, 0x0d, 0xa9, 0xa5, 0xcd, 0x7e, 0x4d, 0xae, 0x1e,
+ 0xa8, 0x60, 0x32, 0x1a, 0xe1, 0xb6, 0x62, 0x78, 0x94, 0x27, 0x64, 0x7a,
+ 0xcd, 0x70, 0xac, 0xec, 0x78, 0xfd, 0xef, 0xcc, 0x81, 0x20, 0xc3, 0xd2,
+ 0x52, 0x46, 0xd7, 0xf4, 0x83, 0xb4, 0x73, 0x3b, 0x79, 0x1d, 0x16, 0x75,
+ 0xe3, 0xd6, 0xe9, 0x62, 0xc0, 0x7f, 0x99, 0xb4, 0xb4, 0xf9, 0x02, 0xaf,
+ 0xb3, 0x73, 0x1e, 0x03, 0xed, 0x16, 0xb8, 0x8d, 0x5c, 0x04, 0x48, 0x23,
+ 0x42, 0xb3, 0xb0, 0x01, 0xb4, 0xe6, 0x62, 0x13, 0xf4, 0x9a, 0x5c, 0x07,
+ 0x9b, 0x4a, 0x4a, 0x73, 0x9c, 0x77, 0x09, 0xec, 0xa6, 0xd6, 0xc9, 0x9e,
+ 0x22, 0x0c, 0xf6, 0xe1, 0x43, 0x7c, 0x36, 0x23, 0xdc, 0x3b, 0xf0, 0xad,
+ 0x62, 0x60, 0x66, 0xe6, 0xee, 0x6d, 0x15, 0x17, 0x07, 0x00, 0x03, 0x8e,
+ 0x8d, 0xfb, 0xca, 0x4a, 0x71, 0xed, 0x79, 0x32, 0xef, 0x12, 0xb6, 0x3e,
+ 0xab, 0x65, 0x66, 0x63, 0x67, 0xb4, 0xd2, 0xc3, 0x65, 0x4f, 0x1b, 0x6f,
+ 0x60, 0xe3, 0x69, 0xef, 0xf2, 0x56, 0xbf, 0x61, 0xf4, 0x7e, 0x96, 0xcf,
+ 0x5b, 0xad, 0xe5, 0x0b, 0x6d, 0x1a, 0xb7, 0x12, 0x83, 0x24, 0xfc, 0x48,
+ 0x59, 0x5d, 0x5b, 0xeb, 0x0d, 0x8e, 0x68, 0xc7, 0xe9, 0xb5, 0x0c, 0x0c,
+ 0x62, 0x38, 0x67, 0xd3, 0x23, 0xf9, 0x4e, 0x49, 0x4f, 0x5b, 0x87, 0xd3,
+ 0x30, 0x3a, 0x5e, 0x76, 0x45, 0x94, 0xee, 0x79, 0xcb, 0x26, 0xd6, 0x57,
+ 0x1f, 0xa3, 0x64, 0x78, 0x79, 0xea, 0xa7, 0x91, 0x94, 0xfb, 0x6c, 0xda,
+ 0xee, 0x46, 0x9b, 0x47, 0x65, 0x9d, 0xf5, 0x3b, 0x2e, 0xcc, 0xce, 0x9a,
+ 0xfc, 0x6c, 0x97, 0x6e, 0x34, 0xba, 0x2a, 0x79, 0x3e, 0xe2, 0x0e, 0xb1,
+ 0xf2, 0x56, 0x32, 0x3f, 0x41, 0x7b, 0xaa, 0xe7, 0x69, 0x27, 0x6b, 0x74,
+ 0x3f, 0xee, 0x09, 0x29, 0x7c, 0xbb, 0x47, 0xd9, 0xc3, 0x36, 0x90, 0xe3,
+ 0xf9, 0xdd, 0xa3, 0xc1, 0x63, 0xfd, 0xa1, 0xcd, 0xb4, 0xd4, 0x6c, 0xf6,
+ 0x3b, 0x50, 0x79, 0xd7, 0xb2, 0xd1, 0x19, 0x16, 0xee, 0xd8, 0x6a, 0x26,
+ 0x79, 0x70, 0x97, 0x4c, 0xf1, 0xa2, 0xab, 0x76, 0x25, 0x75, 0x97, 0xdb,
+ 0x61, 0x63, 0x18, 0x35, 0xdd, 0x60, 0x24, 0x36, 0x78, 0xd1, 0x25, 0x3a,
+ 0x78, 0x95, 0x0c, 0xdc, 0x47, 0xb2, 0x7f, 0x4b, 0x5f, 0xb9, 0xa0, 0x1f,
+ 0xa4, 0xd3, 0xe2, 0xa8, 0x53, 0x7d, 0x6c, 0x73, 0x8c, 0xf7, 0xd8, 0xdd,
+ 0xaf, 0x03, 0xdc, 0x3b, 0x3a, 0x44, 0xab, 0xbd, 0x36, 0xbb, 0x2a, 0xca,
+ 0x6d, 0xed, 0xb3, 0xf4, 0x67, 0xbb, 0x47, 0xb5, 0xcd, 0xe2, 0x13, 0x75,
+ 0x8e, 0x98, 0xe6, 0xda, 0x72, 0xf1, 0xda, 0x3d, 0x32, 0x37, 0x10, 0x39,
+ 0xdc, 0x4e, 0xb0, 0x0e, 0x9d, 0xd2, 0x53, 0x5f, 0x26, 0xb7, 0x13, 0xea,
+ 0x00, 0x0f, 0xab, 0x00, 0xb8, 0xbc, 0x00, 0x0f, 0xf1, 0xfb, 0xd4, 0x19,
+ 0x5b, 0x2a, 0xdd, 0x66, 0x45, 0x72, 0xd0, 0x09, 0xb2, 0x34, 0x2e, 0x68,
+ 0xec, 0x07, 0x99, 0x53, 0xae, 0xa1, 0x75, 0x76, 0x52, 0xf3, 0xb8, 0x08,
+ 0x87, 0x34, 0xeb, 0x20, 0x79, 0x01, 0x09, 0x56, 0xd7, 0xd7, 0x57, 0xd9,
+ 0xde, 0xd3, 0xf6, 0x76, 0x09, 0xdc, 0x40, 0xe7, 0xb4, 0x34, 0x6a, 0x75,
+ 0x49, 0x4c, 0xe9, 0xb0, 0x97, 0x9b, 0x29, 0x63, 0x69, 0xae, 0x40, 0x63,
+ 0x1a, 0x1c, 0xc2, 0x23, 0xe4, 0x3e, 0x6a, 0xf6, 0x5d, 0xd8, 0x59, 0x38,
+ 0xfe, 0x8f, 0x52, 0x60, 0x75, 0x4e, 0xd6, 0x41, 0x92, 0xd2, 0x0c, 0x6e,
+ 0xd1, 0x51, 0xc2, 0xaf, 0xd2, 0x7c, 0x5a, 0x5c, 0xf2, 0xf7, 0x6e, 0x36,
+ 0x58, 0x34, 0x24, 0xf8, 0x41, 0x31, 0xa2, 0x1e, 0x79, 0x26, 0x80, 0xca,
+ 0x84, 0xda, 0xe6, 0x96, 0x90, 0x08, 0x27, 0x53, 0xe0, 0x21, 0x25, 0x2f,
+ 0x8d, 0xd3, 0x2d, 0xe9, 0x17, 0xbd, 0xf5, 0xd8, 0x5f, 0x8a, 0x46, 0xea,
+ 0x9e, 0x3f, 0xef, 0xfd, 0xa3, 0xcd, 0x3e, 0x4e, 0xdc, 0x96, 0xbd, 0xcc,
+ 0x7f, 0xa3, 0x6d, 0x90, 0x0c, 0x1d, 0xf0, 0xdf, 0x6c, 0xfc, 0x9d, 0x27,
+ 0xcd, 0x37, 0x41, 0xea, 0x6d, 0x7e, 0x39, 0xc5, 0xc8, 0x1a, 0x34, 0x96,
+ 0xc3, 0xb8, 0x8f, 0x9a, 0x36, 0x56, 0x17, 0xd9, 0xfd, 0xf5, 0x01, 0xf6,
+ 0x62, 0x64, 0x90, 0x60, 0xb4, 0x7e, 0x70, 0xfe, 0xe4, 0x94, 0xd3, 0xa1,
+ 0xed, 0x0d, 0x6b, 0xec, 0x64, 0xb1, 0xc4, 0x34, 0x07, 0x6a, 0x20, 0x0f,
+ 0x7b, 0xa3, 0xcb, 0x84, 0x6b, 0xdc, 0x5e, 0xe1, 0x53, 0x1e, 0x41, 0x20,
+ 0x6d, 0xd8, 0x20, 0x6c, 0xe3, 0xfd, 0xca, 0xb5, 0x99, 0x53, 0x6d, 0x75,
+ 0xb9, 0xc4, 0x07, 0x4f, 0xf3, 0x70, 0x5b, 0xee, 0x27, 0x9d, 0x35, 0xd7,
+ 0x55, 0x6f, 0x02, 0x81, 0x60, 0x7b, 0x85, 0x25, 0xb6, 0x31, 0xc4, 0x81,
+ 0xc4, 0x99, 0x8f, 0x3f, 0x0d, 0x12, 0x53, 0x62, 0xa7, 0x56, 0xeb, 0x1b,
+ 0x73, 0xcb, 0xf6, 0x35, 0xb1, 0xa3, 0xb4, 0x25, 0x9a, 0x6d, 0x8e, 0x3b,
+ 0x27, 0x7d, 0x98, 0xa5, 0xdf, 0xa4, 0x00, 0x3e, 0xc7, 0x7e, 0x74, 0x8d,
+ 0x47, 0x1f, 0x04, 0x28, 0x73, 0x85, 0xd4, 0x3d, 0xa1, 0x9e, 0x90, 0x90,
+ 0xd1, 0xa0, 0xd7, 0x90, 0x48, 0x55, 0x6d, 0xca, 0x65, 0x6d, 0x0e, 0xdd,
+ 0x2d, 0x63, 0x37, 0x58, 0x20, 0x39, 0x84, 0x89, 0x2e, 0x20, 0x91, 0xf0,
+ 0x00, 0x24, 0xa6, 0xe6, 0x45, 0x6f, 0x63, 0x2d, 0xb6, 0x0f, 0xaa, 0xc6,
+ 0x13, 0x58, 0x6e, 0xba, 0x4f, 0xdc, 0x50, 0xeb, 0xcd, 0x2d, 0xc2, 0xaa,
+ 0xf6, 0x80, 0xd8, 0x8d, 0xa3, 0xce, 0x7b, 0xf2, 0xa9, 0x60, 0xf5, 0x0b,
+ 0x60, 0x1c, 0x89, 0x34, 0x5a, 0x47, 0xa4, 0x01, 0x92, 0x0f, 0x25, 0xcc,
+ 0x3d, 0x80, 0x95, 0xa7, 0x97, 0x8c, 0xdc, 0x8a, 0x1c, 0x03, 0x88, 0x2d,
+ 0x1b, 0xbd, 0xb0, 0x0b, 0x80, 0x1e, 0xe2, 0x92, 0x9a, 0xb7, 0xbd, 0xbe,
+ 0xb5, 0xc0, 0x34, 0x3e, 0xca, 0x49, 0xf6, 0x98, 0xe1, 0xda, 0x82, 0x3e,
+ 0x45, 0x0f, 0x13, 0xa9, 0xd0, 0xfc, 0x90, 0xe1, 0x0c, 0x66, 0x81, 0x8d,
+ 0x3c, 0xba, 0x3d, 0xb1, 0xf7, 0x27, 0xbe, 0xcc, 0x6d, 0x98, 0xf9, 0xad,
+ 0xc8, 0x0c, 0x63, 0xda, 0x18, 0xe3, 0x63, 0x60, 0xb8, 0xd6, 0x3d, 0x3f,
+ 0x77, 0x81, 0xd0, 0x2a, 0x17, 0x9f, 0xb2, 0xb8, 0x9a, 0x03, 0x1c, 0xcb,
+ 0xcc, 0xb5, 0xf3, 0xc9, 0x3f, 0x9a, 0x92, 0x9b, 0x39, 0xb9, 0x42, 0x9b,
+ 0xc3, 0x2a, 0xac, 0xd6, 0x43, 0x77, 0x56, 0xee, 0x77, 0x3b, 0x8e, 0x54,
+ 0xb1, 0xee, 0x37, 0xfe, 0x9d, 0xee, 0x0d, 0xb0, 0x18, 0x12, 0x60, 0xee,
+ 0xed, 0xdf, 0x5e, 0x11, 0x33, 0x5b, 0x51, 0x0c, 0xb9, 0xd2, 0xd2, 0x1a,
+ 0xc3, 0xb8, 0x72, 0x01, 0x13, 0x1f, 0x8a, 0xa7, 0x75, 0x85, 0x84, 0x31,
+ 0xec, 0xda, 0xd3, 0x0f, 0x6b, 0x5a, 0x41, 0xdd, 0xb4, 0xc1, 0x3a, 0x7e,
+ 0x29, 0x29, 0xd4, 0xce, 0xea, 0x0c, 0xaa, 0xb7, 0xb7, 0xd4, 0x3b, 0xcf,
+ 0x31, 0xf9, 0xd0, 0x20, 0xee, 0x9d, 0x00, 0xfe, 0x2a, 0x1d, 0x3e, 0xc1,
+ 0x77, 0x4f, 0x93, 0x22, 0xc0, 0xf2, 0x1f, 0x3c, 0xc8, 0x59, 0x79, 0x4e,
+ 0xb2, 0xdc, 0xa6, 0x31, 0xe0, 0x59, 0x50, 0x06, 0xc9, 0x20, 0x7b, 0x83,
+ 0x74, 0x04, 0x1f, 0x1e, 0xcb, 0x47, 0xa7, 0xe4, 0x0b, 0xb1, 0x67, 0x67,
+ 0xa6, 0xe2, 0xe3, 0xb8, 0x6b, 0xf9, 0x4f, 0x29, 0x29, 0x63, 0x95, 0x4d,
+ 0x96, 0xba, 0xa2, 0x4b, 0x40, 0x1b, 0xac, 0x2d, 0x88, 0x3b, 0x3b, 0x1f,
+ 0x25, 0x67, 0xd7, 0xc8, 0xdf, 0xb2, 0x1b, 0xeb, 0xc6, 0xcf, 0x4f, 0xfe,
+ 0x0a, 0x37, 0x6c, 0xf0, 0xdd, 0x0b, 0x2f, 0x18, 0xd2, 0xc7, 0xe4, 0x55,
+ 0x59, 0x36, 0xde, 0xe7, 0xee, 0x77, 0xa7, 0x06, 0x24, 0xe8, 0xd6, 0xee,
+ 0x22, 0x75, 0xee, 0xb4, 0x3f, 0x66, 0x9f, 0x4f, 0xd2, 0xf5, 0x1b, 0xf6,
+ 0x88, 0xdd, 0xb6, 0x7f, 0x4b, 0xe9, 0x73, 0xb3, 0x74, 0xf3, 0x29, 0x29,
+ 0xb2, 0xea, 0x29, 0xb3, 0x65, 0x6e, 0x6b, 0x6c, 0x70, 0x6c, 0x82, 0xee,
+ 0x34, 0xe7, 0x5f, 0x15, 0x45, 0xd9, 0x8d, 0x66, 0x51, 0xa5, 0xb5, 0x07,
+ 0xb8, 0x59, 0xe9, 0x1e, 0xda, 0xc0, 0x3f, 0x70, 0x95, 0x13, 0xd5, 0x5d,
+ 0x9c, 0xdf, 0x44, 0x51, 0xe8, 0xd2, 0xcf, 0xe6, 0xcc, 0xfb, 0x89, 0x55,
+ 0x73, 0x30, 0xb1, 0xdb, 0x8f, 0x8f, 0x96, 0xf2, 0xe1, 0x95, 0x75, 0x9e,
+ 0xf2, 0xd8, 0x03, 0x70, 0x1a, 0x02, 0x47, 0xdd, 0x3f, 0x7a, 0x4a, 0x75,
+ 0x3a, 0x8e, 0x6b, 0xb1, 0xaf, 0xa3, 0x1a, 0xaa, 0xe5, 0xcf, 0x69, 0x73,
+ 0x9c, 0x41, 0x86, 0xf6, 0x1f, 0xed, 0x55, 0xaa, 0xea, 0x1b, 0x98, 0x2d,
+ 0xa5, 0xed, 0x24, 0x92, 0xd7, 0x16, 0xf1, 0xb8, 0x7d, 0xca, 0x9d, 0x5d,
+ 0x27, 0x25, 0xb5, 0xbd, 0xd9, 0x77, 0xba, 0xba, 0x1c, 0xe2, 0x1e, 0xdb,
+ 0x8b, 0xac, 0x99, 0x9f, 0xa0, 0x36, 0xc8, 0x74, 0x77, 0x94, 0x4a, 0xef,
+ 0xc3, 0x6b, 0xfd, 0x3c, 0x6a, 0x59, 0xea, 0x82, 0xd0, 0xd2, 0xe2, 0x41,
+ 0x76, 0xc2, 0x35, 0xdc, 0xf1, 0xaf, 0x9c, 0xa4, 0xa6, 0xc7, 0x4d, 0x18,
+ 0x58, 0xf7, 0x3e, 0xcb, 0xd9, 0x65, 0xec, 0xc8, 0x70, 0x16, 0x39, 0xce,
+ 0xd1, 0xae, 0x07, 0x99, 0xe4, 0x00, 0xa3, 0x94, 0xce, 0x8d, 0x87, 0xd4,
+ 0x85, 0x78, 0xcc, 0x78, 0x7d, 0xbb, 0x9a, 0xe3, 0xb8, 0x90, 0xd9, 0x83,
+ 0xee, 0x99, 0x27, 0xc9, 0x42, 0xec, 0x0b, 0x9b, 0x95, 0x7e, 0x50, 0xbd,
+ 0xce, 0xae, 0xd2, 0x1c, 0xda, 0x81, 0x12, 0xe7, 0x81, 0x04, 0x9d, 0x04,
+ 0x34, 0x4e, 0x81, 0x12, 0xea, 0x9b, 0x91, 0x59, 0x61, 0x6f, 0xa6, 0xe7,
+ 0x37, 0x61, 0xb4, 0x90, 0x1c, 0xe6, 0x8f, 0xf8, 0x4e, 0xc1, 0x25, 0x27,
+ 0xd8, 0x2a, 0xc7, 0x3b, 0x5c, 0x5e, 0xe2, 0xe1, 0x13, 0xa8, 0x68, 0xd0,
+ 0xf3, 0xe6, 0xab, 0x61, 0x74, 0xec, 0xaa, 0xb3, 0xbe, 0xd2, 0xc0, 0x1e,
+ 0xcb, 0x0f, 0xba, 0x0e, 0xa1, 0xa7, 0x99, 0x56, 0xdd, 0x65, 0x95, 0x07,
+ 0x51, 0x8a, 0x0b, 0x0d, 0x0d, 0x60, 0x0e, 0x71, 0xdc, 0x5c, 0x0b, 0x41,
+ 0x92, 0x78, 0x3a, 0xa1, 0xe4, 0x65, 0x5f, 0x55, 0x55, 0x3c, 0xb4, 0x3d,
+ 0x8e, 0x27, 0xd5, 0x6f, 0xd1, 0x2e, 0x3f, 0x10, 0x92, 0x9a, 0x59, 0x38,
+ 0xf8, 0x78, 0x39, 0x0f, 0x7b, 0xa7, 0x21, 0xc4, 0xcb, 0x58, 0x07, 0xb0,
+ 0x7c, 0x4a, 0xa9, 0x97, 0xd5, 0xfa, 0x96, 0x43, 0x4d, 0x62, 0xc3, 0x5b,
+ 0x38, 0x15, 0x33, 0xda, 0x23, 0xc3, 0x45, 0xd7, 0x63, 0x5b, 0xd3, 0x72,
+ 0x71, 0x98, 0xd3, 0x5b, 0x59, 0xea, 0x0d, 0x1a, 0xe5, 0x9b, 0xd5, 0x7e,
+ 0xac, 0xd7, 0x6b, 0x0d, 0x98, 0x44, 0xb1, 0xfa, 0x1d, 0xa7, 0x8d, 0x3c,
+ 0x12, 0x53, 0xc7, 0xb8, 0x58, 0xe7, 0x06, 0xd6, 0xd2, 0xf7, 0x38, 0xeb,
+ 0xa1, 0x25, 0x56, 0xbc, 0x17, 0x5a, 0x7c, 0xa0, 0x0f, 0x92, 0xd7, 0xbb,
+ 0x07, 0x24, 0x9b, 0x2b, 0x76, 0xfa, 0xae, 0xd3, 0xd7, 0x63, 0x7d, 0xbb,
+ 0x98, 0x0c, 0xee, 0x1f, 0xc5, 0x67, 0xbf, 0x1a, 0xc6, 0xd8, 0x5a, 0xe0,
+ 0x49, 0x9e, 0x52, 0x53, 0xd2, 0x7d, 0x5f, 0xbb, 0x13, 0x16, 0x9c, 0x56,
+ 0x1a, 0xdc, 0x72, 0x0e, 0xfb, 0x1d, 0x68, 0xe1, 0xbb, 0xbe, 0x8b, 0x4f,
+ 0xc6, 0x16, 0xfe, 0x6d, 0x7f, 0x68, 0xa5, 0x99, 0x54, 0x38, 0x89, 0x1e,
+ 0xe0, 0x39, 0x2d, 0xf0, 0x55, 0x19, 0xd3, 0x0b, 0xa9, 0xa6, 0xda, 0x00,
+ 0x60, 0xa2, 0xa6, 0x31, 0xf6, 0x68, 0xed, 0xcd, 0x68, 0xf7, 0x40, 0xf0,
+ 0x0e, 0x2b, 0x53, 0x05, 0x84, 0x97, 0x53, 0x32, 0xc2, 0xd0, 0xea, 0xc1,
+ 0x32, 0x67, 0xbf, 0xc8, 0xa4, 0xa7, 0x1a, 0x96, 0xec, 0x7b, 0xea, 0x6d,
+ 0xbe, 0x93, 0xc0, 0x6c, 0x70, 0xe3, 0xb4, 0xfe, 0x08, 0x87, 0xf4, 0x8e,
+ 0x2c, 0xb8, 0xcc, 0xf2, 0xed, 0x0c, 0xc7, 0x70, 0x11, 0xb3, 0x28, 0x38,
+ 0xf9, 0x4d, 0x7e, 0xd6, 0xb8, 0xd9, 0xed, 0x69, 0x76, 0x81, 0xbf, 0x1d,
+ 0xa3, 0xb4, 0x28, 0x32, 0x9c, 0xbb, 0xa6, 0xcd, 0xec, 0x2c, 0xac, 0x10,
+ 0x5a, 0xdd, 0x65, 0xc3, 0xb8, 0x3d, 0xbe, 0x69, 0x29, 0x8d, 0xce, 0xc6,
+ 0xa3, 0x5c, 0x73, 0x63, 0x5a, 0xef, 0x76, 0xc8, 0xd5, 0xce, 0x1a, 0x6d,
+ 0x03, 0x85, 0xa3, 0x8d, 0xe9, 0xe4, 0x62, 0xfa, 0x0e, 0x92, 0x1c, 0x35,
+ 0x0e, 0x10, 0x7e, 0x0b, 0x3d, 0xb5, 0xff, 0x00, 0x86, 0xd8, 0x0b, 0xa3,
+ 0x69, 0x71, 0xfb, 0xcf, 0x70, 0x8b, 0x8c, 0xeb, 0xc5, 0xaf, 0x7b, 0x5a,
+ 0x0d, 0x0c, 0xfe, 0x6c, 0x37, 0xbc, 0x8d, 0x52, 0x53, 0x5a, 0xca, 0x2d,
+ 0xa6, 0xff, 0x00, 0x44, 0x45, 0x75, 0xb7, 0x50, 0x09, 0x00, 0x38, 0xbb,
+ 0x4f, 0xfb, 0xea, 0x70, 0xc6, 0x39, 0xe4, 0x3d, 0xce, 0x6b, 0x9a, 0x0b,
+ 0xc6, 0xd8, 0x12, 0x00, 0xfa, 0x3a, 0xf2, 0xb5, 0xad, 0xa5, 0x99, 0xb4,
+ 0x36, 0xc0, 0x40, 0x80, 0x7d, 0xd0, 0xb3, 0x9f, 0x53, 0x9e, 0xc9, 0xc7,
+ 0x21, 0xdb, 0x5d, 0xed, 0x71, 0xf0, 0xe0, 0xa4, 0xa6, 0x9b, 0xb1, 0x69,
+ 0x7c, 0x5a, 0x5b, 0x0d, 0x64, 0xba, 0x5f, 0x3e, 0xd2, 0x4e, 0x90, 0x3c,
+ 0x50, 0x9f, 0x46, 0x16, 0x5d, 0x87, 0x21, 0x86, 0xc6, 0x38, 0x38, 0x13,
+ 0x63, 0x0b, 0xf6, 0x3c, 0x0e, 0xd0, 0xfd, 0x3e, 0xe5, 0x69, 0xe2, 0xef,
+ 0x50, 0xbe, 0xcd, 0xa5, 0xae, 0x30, 0xed, 0xd3, 0x11, 0x1e, 0x03, 0xc9,
+ 0x58, 0xc7, 0xc0, 0x69, 0x60, 0x76, 0x33, 0x5d, 0x66, 0xbf, 0x48, 0x9d,
+ 0x8d, 0x03, 0xc0, 0x78, 0xe8, 0x92, 0x9c, 0x76, 0xd1, 0x53, 0x6c, 0x15,
+ 0x97, 0x39, 0xd6, 0x38, 0x82, 0xc2, 0x18, 0x4e, 0xa4, 0xf9, 0x79, 0xad,
+ 0x9a, 0xb2, 0x28, 0x7d, 0x67, 0x1a, 0xd0, 0x66, 0xc0, 0x61, 0xa7, 0x49,
+ 0xec, 0x79, 0x54, 0x1d, 0x5e, 0x55, 0x1d, 0x41, 0x99, 0xa5, 0xae, 0xad,
+ 0xad, 0x26, 0xb7, 0x33, 0xc4, 0x90, 0x76, 0xba, 0x15, 0xab, 0xdb, 0x55,
+ 0xdb, 0x5d, 0x6d, 0x3b, 0x1d, 0x51, 0x05, 0x8f, 0x69, 0x00, 0xfc, 0x48,
+ 0x07, 0xcd, 0x25, 0x35, 0xc6, 0x13, 0xaa, 0x16, 0xb5, 0x8e, 0x68, 0x93,
+ 0x38, 0xda, 0x7b, 0x80, 0x1e, 0x24, 0xa2, 0xe1, 0xe3, 0xdc, 0xeb, 0x6c,
+ 0xb2, 0xf3, 0x0c, 0x60, 0x6c, 0x36, 0x7e, 0x9b, 0x88, 0xf1, 0x9f, 0x15,
+ 0x6f, 0xec, 0xa3, 0x2b, 0x18, 0x02, 0x7d, 0xcc, 0x32, 0xd7, 0x8e, 0xc4,
+ 0x7f, 0x7a, 0x0e, 0xcb, 0x6c, 0x00, 0x37, 0xf4, 0x6f, 0x61, 0x2d, 0x20,
+ 0x89, 0xe7, 0x82, 0x92, 0x90, 0x35, 0xec, 0xad, 0xe1, 0xde, 0xa0, 0x73,
+ 0x49, 0x8b, 0x09, 0xf6, 0xc8, 0xe0, 0xc0, 0x3f, 0xc5, 0x43, 0x27, 0x1e,
+ 0x8a, 0x5e, 0xe6, 0x7a, 0x7b, 0x9a, 0xe2, 0x1a, 0x4b, 0x39, 0x13, 0xfb,
+ 0xc0, 0xe9, 0x08, 0x19, 0x19, 0x77, 0x57, 0x68, 0x06, 0xb6, 0xe4, 0x54,
+ 0x44, 0xee, 0x80, 0x00, 0xec, 0x79, 0xd5, 0x5f, 0xfd, 0x1d, 0xb8, 0xe2,
+ 0xfb, 0x98, 0x6b, 0x73, 0xda, 0x03, 0x81, 0xd0, 0x88, 0xe0, 0x14, 0x94,
+ 0xd6, 0xaf, 0x1d, 0xae, 0x73, 0x58, 0xd0, 0xd7, 0x36, 0x99, 0x01, 0xed,
+ 0xd3, 0x68, 0x3a, 0xc6, 0x8a, 0xcb, 0x5e, 0xf6, 0x3d, 0xce, 0x24, 0x34,
+ 0x01, 0x2c, 0x24, 0xfe, 0x72, 0x1d, 0x78, 0x42, 0xb1, 0x66, 0x45, 0x64,
+ 0x9b, 0x2c, 0x86, 0x82, 0xdf, 0x69, 0x03, 0x4d, 0x3b, 0xcc, 0x21, 0xe4,
+ 0x8b, 0x59, 0xb8, 0x02, 0x76, 0x90, 0x41, 0x31, 0x00, 0x71, 0xac, 0xa4,
+ 0xa4, 0xdd, 0x43, 0x01, 0xf9, 0x9d, 0x36, 0xc1, 0x56, 0xdd, 0xe2, 0xdf,
+ 0x51, 0x95, 0xc4, 0x01, 0xba, 0x03, 0xc7, 0x9c, 0xc2, 0xa1, 0x67, 0x4e,
+ 0x0d, 0x67, 0xd8, 0xb2, 0x36, 0x02, 0xdd, 0x03, 0x5a, 0x67, 0x6b, 0x9b,
+ 0xdc, 0x2d, 0x4c, 0x13, 0xbc, 0xb1, 0xa1, 0xe6, 0x76, 0x11, 0x13, 0x20,
+ 0xc0, 0x9f, 0xbd, 0x36, 0x4e, 0xe6, 0xef, 0xb9, 0xb4, 0xef, 0x7b, 0x8b,
+ 0x5a, 0xdd, 0xbf, 0x49, 0xda, 0x1f, 0x04, 0x94, 0xd5, 0xaf, 0x0a, 0xd6,
+ 0x63, 0xd6, 0xcb, 0xc8, 0x70, 0x2c, 0xdb, 0x24, 0xfd, 0x22, 0xd7, 0x3a,
+ 0x34, 0xf8, 0x10, 0xa6, 0xec, 0x36, 0xe6, 0x52, 0xea, 0x0b, 0x5a, 0xdb,
+ 0xeb, 0x1b, 0xeb, 0xb0, 0x48, 0xd2, 0x61, 0xc0, 0xc7, 0x90, 0x44, 0x66,
+ 0xe0, 0xdd, 0xb6, 0x02, 0x76, 0x82, 0x43, 0x41, 0x1d, 0xd1, 0xb1, 0xb7,
+ 0x1b, 0x6a, 0xb0, 0x48, 0x6e, 0xbb, 0x99, 0xe7, 0x10, 0x67, 0xc5, 0x25,
+ 0x39, 0x9f, 0x64, 0x60, 0x64, 0x1f, 0x63, 0x40, 0xec, 0x75, 0x11, 0xe1,
+ 0x3f, 0x8a, 0xb5, 0x8b, 0x41, 0x7b, 0xc6, 0x33, 0x64, 0x38, 0x09, 0x71,
+ 0x3a, 0xea, 0x44, 0xa4, 0xfa, 0x2d, 0x75, 0xb6, 0x92, 0xcd, 0xc1, 0xae,
+ 0x3c, 0x93, 0xab, 0x1b, 0xfe, 0xba, 0x2b, 0xdd, 0x19, 0x95, 0x9b, 0xaf,
+ 0xbc, 0xb9, 0xe3, 0x69, 0xf7, 0xba, 0xc8, 0x0d, 0xe3, 0xf3, 0x48, 0x03,
+ 0x4e, 0xc9, 0x29, 0x05, 0x55, 0x55, 0xd3, 0xe9, 0x37, 0x5e, 0x1a, 0xdb,
+ 0x9d, 0x21, 0xa6, 0x07, 0xb5, 0xb3, 0x32, 0x4c, 0x2a, 0xde, 0x9b, 0xfd,
+ 0x3f, 0xb5, 0x6e, 0x3f, 0x68, 0xdb, 0x3c, 0x7b, 0x63, 0xc7, 0x77, 0x0a,
+ 0xce, 0x75, 0x39, 0x36, 0x5a, 0x73, 0x2d, 0x60, 0x76, 0x3e, 0xe0, 0x1a,
+ 0x1a, 0x43, 0xdb, 0xb4, 0x7d, 0x13, 0xa7, 0x6f, 0x10, 0xab, 0x6e, 0x7e,
+ 0xef, 0x52, 0x35, 0xdd, 0xf4, 0x34, 0xfa, 0x3e, 0x30, 0x92, 0x9f, 0xff,
+ 0xd9
+};
+size_t demo_006_jpg_len = 18553;
+
+const uint8_t demo_007_jpg[] = {
+ 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01,
+ 0x02, 0x00, 0x00, 0x64, 0x00, 0x64, 0x00, 0x00, 0xff, 0xec, 0x00, 0x59,
+ 0x44, 0x75, 0x63, 0x6b, 0x79, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00,
+ 0x1e, 0x00, 0x02, 0x00, 0x44, 0x00, 0x00, 0x00, 0x20, 0x00, 0x46, 0x00,
+ 0x53, 0x00, 0x41, 0x00, 0x2f, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00,
+ 0x33, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x38, 0x00,
+ 0x62, 0x00, 0x33, 0x00, 0x33, 0x00, 0x37, 0x00, 0x30, 0x00, 0x30, 0x00,
+ 0x5c, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00, 0x33, 0x00, 0x37, 0x00,
+ 0x33, 0x00, 0x35, 0x00, 0x61, 0x00, 0x2e, 0x00, 0x74, 0x00, 0x69, 0x00,
+ 0x66, 0x00, 0x00, 0xff, 0xee, 0x00, 0x0e, 0x41, 0x64, 0x6f, 0x62, 0x65,
+ 0x00, 0x64, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xdb, 0x00, 0x84, 0x00,
+ 0x10, 0x0b, 0x0b, 0x0b, 0x0c, 0x0b, 0x10, 0x0c, 0x0c, 0x10, 0x17, 0x0f,
+ 0x0d, 0x0f, 0x17, 0x1b, 0x14, 0x10, 0x10, 0x14, 0x1b, 0x1f, 0x17, 0x17,
+ 0x17, 0x17, 0x17, 0x1f, 0x1e, 0x17, 0x1a, 0x1a, 0x1a, 0x1a, 0x17, 0x1e,
+ 0x1e, 0x23, 0x25, 0x27, 0x25, 0x23, 0x1e, 0x2f, 0x2f, 0x33, 0x33, 0x2f,
+ 0x2f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x01, 0x11, 0x0f, 0x0f, 0x11, 0x13, 0x11, 0x15,
+ 0x12, 0x12, 0x15, 0x14, 0x11, 0x14, 0x11, 0x14, 0x1a, 0x14, 0x16, 0x16,
+ 0x14, 0x1a, 0x26, 0x1a, 0x1a, 0x1c, 0x1a, 0x1a, 0x26, 0x30, 0x23, 0x1e,
+ 0x1e, 0x1e, 0x1e, 0x23, 0x30, 0x2b, 0x2e, 0x27, 0x27, 0x27, 0x2e, 0x2b,
+ 0x35, 0x35, 0x30, 0x30, 0x35, 0x35, 0x40, 0x40, 0x3f, 0x40, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xff, 0xc0, 0x00,
+ 0x11, 0x08, 0x01, 0x90, 0x01, 0x2c, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11,
+ 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x01, 0x3f, 0x00, 0x00, 0x01, 0x05,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x03, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
+ 0x0b, 0x01, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x04, 0x05,
+ 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x01, 0x04, 0x01, 0x03,
+ 0x02, 0x04, 0x02, 0x05, 0x07, 0x06, 0x08, 0x05, 0x03, 0x0c, 0x33, 0x01,
+ 0x00, 0x02, 0x11, 0x03, 0x04, 0x21, 0x12, 0x31, 0x05, 0x41, 0x51, 0x61,
+ 0x13, 0x22, 0x71, 0x81, 0x32, 0x06, 0x14, 0x91, 0xa1, 0xb1, 0x42, 0x23,
+ 0x24, 0x15, 0x52, 0xc1, 0x62, 0x33, 0x34, 0x72, 0x82, 0xd1, 0x43, 0x07,
+ 0x25, 0x92, 0x53, 0xf0, 0xe1, 0xf1, 0x63, 0x73, 0x35, 0x16, 0xa2, 0xb2,
+ 0x83, 0x26, 0x44, 0x93, 0x54, 0x64, 0x45, 0xc2, 0xa3, 0x74, 0x36, 0x17,
+ 0xd2, 0x55, 0xe2, 0x65, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3,
+ 0x46, 0x27, 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5,
+ 0xb5, 0xc5, 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6,
+ 0xc6, 0xd6, 0xe6, 0xf6, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7,
+ 0xb7, 0xc7, 0xd7, 0xe7, 0xf7, 0x11, 0x00, 0x02, 0x02, 0x01, 0x02, 0x04,
+ 0x04, 0x03, 0x04, 0x05, 0x06, 0x07, 0x07, 0x06, 0x05, 0x35, 0x01, 0x00,
+ 0x02, 0x11, 0x03, 0x21, 0x31, 0x12, 0x04, 0x41, 0x51, 0x61, 0x71, 0x22,
+ 0x13, 0x05, 0x32, 0x81, 0x91, 0x14, 0xa1, 0xb1, 0x42, 0x23, 0xc1, 0x52,
+ 0xd1, 0xf0, 0x33, 0x24, 0x62, 0xe1, 0x72, 0x82, 0x92, 0x43, 0x53, 0x15,
+ 0x63, 0x73, 0x34, 0xf1, 0x25, 0x06, 0x16, 0xa2, 0xb2, 0x83, 0x07, 0x26,
+ 0x35, 0xc2, 0xd2, 0x44, 0x93, 0x54, 0xa3, 0x17, 0x64, 0x45, 0x55, 0x36,
+ 0x74, 0x65, 0xe2, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, 0x46,
+ 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, 0xb5, 0xc5,
+ 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6,
+ 0xe6, 0xf6, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, 0xb7,
+ 0xc7, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11,
+ 0x00, 0x3f, 0x00, 0xa1, 0xfb, 0x68, 0xb1, 0xdb, 0x69, 0xad, 0xce, 0xdc,
+ 0xcd, 0x01, 0xdb, 0xb8, 0x11, 0xae, 0x9e, 0xee, 0x15, 0x4c, 0x9e, 0xad,
+ 0x99, 0x7d, 0x82, 0xd2, 0xd8, 0x24, 0xc3, 0x3d, 0x82, 0x74, 0xfd, 0xed,
+ 0x83, 0x70, 0x95, 0x96, 0x1a, 0xf3, 0x69, 0x2c, 0x06, 0xa6, 0x83, 0x0f,
+ 0x77, 0x3b, 0x49, 0x3e, 0x2d, 0x82, 0x8c, 0xe7, 0xec, 0x23, 0x65, 0xc5,
+ 0xd6, 0x48, 0x0e, 0x0c, 0x2f, 0x0d, 0x22, 0x20, 0xc9, 0x71, 0x49, 0x4d,
+ 0xd3, 0x98, 0xfa, 0x0f, 0xe9, 0x5c, 0x3d, 0x37, 0x0f, 0x1b, 0x03, 0x43,
+ 0x86, 0xbe, 0x33, 0xdf, 0xc5, 0x48, 0x66, 0x9b, 0x1c, 0x5e, 0xfb, 0x58,
+ 0xe8, 0xfa, 0x0d, 0xdc, 0xf6, 0xb4, 0x03, 0xf0, 0x79, 0x3d, 0xbb, 0xac,
+ 0xeb, 0x9e, 0x1c, 0xdd, 0xc0, 0x38, 0x35, 0xa0, 0x43, 0x8c, 0xf7, 0x3a,
+ 0xfb, 0x91, 0xb1, 0x6a, 0x7d, 0xf3, 0x65, 0xf6, 0x34, 0x32, 0xb1, 0x00,
+ 0x58, 0x06, 0xd3, 0xdb, 0xda, 0x63, 0x94, 0x94, 0xea, 0xee, 0xba, 0x9b,
+ 0x2c, 0x73, 0x9d, 0x5e, 0xd7, 0x00, 0xe7, 0x08, 0x31, 0xba, 0x03, 0x5b,
+ 0xf4, 0xdc, 0x01, 0x46, 0x66, 0x44, 0x3f, 0x66, 0x55, 0x95, 0xb4, 0x86,
+ 0x82, 0x5b, 0xa0, 0x71, 0x1d, 0xb7, 0x4b, 0x9d, 0xaf, 0x92, 0xe7, 0xdc,
+ 0xc6, 0x9b, 0x1b, 0xb1, 0xac, 0x76, 0xa4, 0xb9, 0xdd, 0xbf, 0x1d, 0x15,
+ 0xa6, 0x59, 0x5b, 0xea, 0x6d, 0x75, 0xd2, 0xc6, 0xdb, 0xbc, 0x12, 0xef,
+ 0x16, 0xf0, 0x44, 0xc7, 0x74, 0x94, 0xee, 0x3f, 0x2f, 0x0a, 0xc6, 0x8d,
+ 0xcf, 0x20, 0x1f, 0xa5, 0x0e, 0x83, 0x1f, 0x87, 0xe4, 0x4a, 0x9b, 0xab,
+ 0xd8, 0x76, 0x38, 0xdc, 0xd2, 0x67, 0x52, 0x26, 0x39, 0xd6, 0x7b, 0x2a,
+ 0x2c, 0xcb, 0x61, 0x2e, 0xde, 0xd1, 0x53, 0x18, 0xcd, 0xa4, 0x30, 0x7b,
+ 0x43, 0xb8, 0x0e, 0xf0, 0x9f, 0x25, 0x3a, 0xb0, 0x45, 0x96, 0x31, 0xb5,
+ 0x7b, 0xec, 0x6b, 0x65, 0xed, 0x63, 0xa0, 0x30, 0x9f, 0xde, 0x3d, 0xb9,
+ 0x49, 0x4d, 0xe7, 0xde, 0xd0, 0x43, 0x72, 0x69, 0x0d, 0xf5, 0x0c, 0x54,
+ 0x09, 0x16, 0x07, 0x0f, 0x80, 0x04, 0x28, 0x58, 0x19, 0x55, 0x65, 0xf1,
+ 0xb1, 0xd3, 0xee, 0x23, 0x46, 0x9f, 0x32, 0x20, 0x70, 0x9a, 0xbe, 0x9b,
+ 0x98, 0xf6, 0x96, 0x32, 0xd0, 0xd7, 0xc0, 0x97, 0x19, 0xdb, 0xfe, 0x6c,
+ 0x29, 0xd7, 0xd2, 0xf2, 0x9a, 0xdd, 0xee, 0x9d, 0xed, 0xfa, 0x60, 0x18,
+ 0x91, 0xcc, 0xc8, 0x29, 0x29, 0x4e, 0xcb, 0xc5, 0xf6, 0x31, 0xfe, 0xe7,
+ 0x9f, 0x6c, 0x08, 0x74, 0x83, 0xae, 0x9d, 0xbb, 0x2b, 0x0e, 0x0e, 0x6d,
+ 0x47, 0xd3, 0x1b, 0x01, 0xd0, 0x6e, 0x23, 0x40, 0x78, 0x6e, 0x85, 0x52,
+ 0xb6, 0xbb, 0x09, 0xb4, 0x53, 0x4b, 0xda, 0xf2, 0x00, 0xb0, 0x1d, 0xc4,
+ 0x7f, 0x9d, 0x0e, 0xfc, 0x10, 0x98, 0x33, 0x0d, 0x7e, 0x9f, 0xa6, 0xe3,
+ 0x4b, 0xe0, 0x0d, 0xc0, 0x96, 0xf8, 0x6d, 0xe4, 0x7e, 0x54, 0x94, 0xde,
+ 0x7d, 0x8d, 0xac, 0x45, 0x85, 0x8e, 0x0c, 0x80, 0xf6, 0x92, 0x03, 0x9a,
+ 0x0f, 0x30, 0x35, 0x25, 0x57, 0x7e, 0x75, 0x96, 0x38, 0x9a, 0x36, 0xd6,
+ 0xd7, 0xc6, 0xd0, 0x41, 0x69, 0xe7, 0x53, 0xb9, 0x3d, 0x7d, 0x2b, 0x2f,
+ 0x6f, 0xac, 0xcd, 0x8c, 0x3b, 0x44, 0x6e, 0x60, 0x0e, 0x31, 0xa1, 0xd0,
+ 0xf1, 0xe4, 0x83, 0x6e, 0x37, 0x51, 0xa5, 0xdb, 0xe0, 0xd9, 0xe9, 0xcb,
+ 0xab, 0xda, 0x00, 0xd2, 0x3d, 0xda, 0x30, 0x24, 0xa5, 0x1b, 0x6e, 0xde,
+ 0xda, 0x6b, 0xa9, 0xae, 0xb0, 0xc9, 0x99, 0xd1, 0xde, 0x3a, 0x80, 0x7f,
+ 0x14, 0xff, 0x00, 0x6a, 0x7b, 0x24, 0x5d, 0x4b, 0x58, 0x1b, 0xf4, 0xde,
+ 0xd7, 0x38, 0xc7, 0x9e, 0x8d, 0xf2, 0xf1, 0x42, 0x66, 0x26, 0x43, 0xeb,
+ 0xf5, 0x2b, 0xa3, 0x7d, 0xac, 0x21, 0xe7, 0x73, 0x5c, 0x6c, 0xe6, 0x74,
+ 0x23, 0xc9, 0x58, 0x19, 0xa6, 0xd7, 0x7e, 0x91, 0xb6, 0x0d, 0x48, 0x15,
+ 0x39, 0xa1, 0xce, 0x12, 0x34, 0x2d, 0x03, 0x53, 0xaa, 0x4a, 0x4e, 0xcb,
+ 0xf1, 0x89, 0x21, 0xf5, 0x16, 0x6d, 0x00, 0x9b, 0x5c, 0xd2, 0xf2, 0xd9,
+ 0xee, 0xd7, 0x68, 0xaa, 0x64, 0x64, 0x56, 0x2f, 0x7d, 0x55, 0x3f, 0xd6,
+ 0x22, 0x20, 0x37, 0xda, 0xe0, 0x3e, 0x6e, 0xe5, 0x56, 0x76, 0x1d, 0xe6,
+ 0xd7, 0x3a, 0xbb, 0xb6, 0x89, 0x3b, 0x89, 0x76, 0xcd, 0x41, 0xd5, 0xb1,
+ 0xaf, 0xe4, 0x57, 0xb1, 0xf1, 0xb3, 0xd9, 0x31, 0x5e, 0xd0, 0x4e, 0xef,
+ 0xb4, 0x9a, 0xc3, 0xde, 0x24, 0x0d, 0x5a, 0x23, 0xb1, 0x1d, 0xd2, 0x52,
+ 0x26, 0x87, 0xdf, 0x67, 0xa4, 0xc6, 0x58, 0xf2, 0x35, 0x0d, 0x63, 0x37,
+ 0x91, 0xfd, 0x62, 0xe7, 0x46, 0x9f, 0x04, 0x8e, 0x51, 0xa4, 0x43, 0xa8,
+ 0x75, 0x85, 0xa4, 0xb4, 0x92, 0x76, 0xc7, 0x6d, 0x76, 0x87, 0x04, 0x61,
+ 0x8a, 0xf2, 0xc3, 0x7e, 0x63, 0xdc, 0xeb, 0xdc, 0xe8, 0x69, 0x61, 0x1b,
+ 0x88, 0x1a, 0x08, 0xad, 0xbb, 0x3c, 0xf5, 0x21, 0x18, 0x61, 0xdb, 0x75,
+ 0xad, 0x15, 0xbd, 0xdf, 0x67, 0x6e, 0xad, 0x61, 0x9a, 0xcc, 0xe9, 0xa3,
+ 0xb6, 0x89, 0x2d, 0xf8, 0xa4, 0xa4, 0x03, 0x25, 0xce, 0x3b, 0x4d, 0x1b,
+ 0x1a, 0xfd, 0x0c, 0x3f, 0xb3, 0xc7, 0x98, 0x85, 0x4e, 0xbc, 0xfa, 0x9b,
+ 0x68, 0x65, 0x61, 0xcc, 0xad, 0x87, 0x61, 0x36, 0xcc, 0xfb, 0x78, 0xf7,
+ 0x1d, 0x0f, 0x8e, 0x8b, 0x55, 0xd8, 0x0c, 0x32, 0x32, 0xb7, 0x58, 0xd6,
+ 0x92, 0xe0, 0x43, 0xdc, 0x5c, 0xc1, 0x11, 0xd8, 0x05, 0x9f, 0x93, 0x82,
+ 0xe0, 0xea, 0x43, 0x6b, 0xb8, 0xd7, 0xa8, 0xac, 0x90, 0xe2, 0x19, 0x27,
+ 0xcc, 0x98, 0x9f, 0x82, 0x4a, 0x5e, 0xbc, 0x96, 0xdd, 0xb1, 0xce, 0x0e,
+ 0x05, 0xee, 0x24, 0x17, 0x0e, 0xdf, 0x07, 0x3b, 0x44, 0xbd, 0x66, 0x07,
+ 0x91, 0x6b, 0xc3, 0x2b, 0x7c, 0x90, 0x5c, 0x09, 0xda, 0x40, 0x81, 0x1b,
+ 0x67, 0x9f, 0x04, 0x5a, 0x2b, 0xfd, 0x9c, 0xf7, 0xb5, 0xf0, 0xf3, 0x66,
+ 0xd2, 0xfb, 0xab, 0x25, 0xcd, 0x82, 0x74, 0x6e, 0xbb, 0x87, 0xcd, 0x57,
+ 0xca, 0x65, 0x64, 0x06, 0x63, 0x56, 0xe7, 0x0f, 0x50, 0xd8, 0xe7, 0x90,
+ 0x49, 0x61, 0x6e, 0xbe, 0xdf, 0xa3, 0x22, 0x25, 0x25, 0x32, 0xab, 0x38,
+ 0x3e, 0xba, 0xe9, 0x2f, 0x10, 0xed, 0x3d, 0xfb, 0x76, 0xb6, 0x3b, 0x6e,
+ 0xfe, 0xf0, 0x88, 0xec, 0xab, 0xd8, 0xdf, 0x6b, 0x5d, 0x6b, 0x1b, 0xc3,
+ 0x61, 0xda, 0x9f, 0x10, 0x1a, 0xd2, 0x10, 0xee, 0xa7, 0x36, 0x97, 0x56,
+ 0xea, 0xc0, 0xd9, 0x5b, 0x88, 0x0e, 0x69, 0x20, 0x39, 0xae, 0xd3, 0x73,
+ 0xc3, 0x7f, 0xbd, 0x4f, 0x65, 0xce, 0x78, 0x04, 0x38, 0x00, 0x76, 0x17,
+ 0x49, 0x8d, 0x47, 0xe6, 0x9e, 0xe5, 0x25, 0x35, 0xdf, 0x60, 0x33, 0x5b,
+ 0x8e, 0xf2, 0x06, 0xa1, 0xf5, 0xbf, 0x73, 0x4f, 0x31, 0x24, 0xeb, 0x3f,
+ 0x05, 0x3a, 0x32, 0xd9, 0xe9, 0xed, 0xda, 0x7d, 0x52, 0x36, 0xb4, 0x19,
+ 0x76, 0xdf, 0x28, 0x02, 0x74, 0xf3, 0x2a, 0x02, 0x9c, 0xd1, 0xea, 0x3d,
+ 0x8d, 0x0f, 0x68, 0x76, 0xc0, 0x1e, 0x26, 0xc6, 0x96, 0xc7, 0xd1, 0x6c,
+ 0x80, 0xa7, 0x75, 0x0c, 0xa9, 0xc1, 0xb7, 0xda, 0xe7, 0x97, 0x44, 0x56,
+ 0xe6, 0x1a, 0xf7, 0x3b, 0xb6, 0xac, 0x31, 0x32, 0x92, 0x9b, 0x15, 0x3f,
+ 0x12, 0x96, 0xb5, 0xcf, 0x05, 0xd6, 0x46, 0xd1, 0x63, 0x9c, 0x5a, 0x35,
+ 0xd4, 0x89, 0x23, 0x99, 0xf2, 0x42, 0xc8, 0x17, 0x5b, 0x36, 0x56, 0x3d,
+ 0x30, 0xdf, 0xa3, 0xf4, 0x8c, 0x47, 0xe2, 0x65, 0x3c, 0xb8, 0x7e, 0x8d,
+ 0xd5, 0xd9, 0x8d, 0x6b, 0xf5, 0x70, 0x76, 0xad, 0x7c, 0x0f, 0xcd, 0x70,
+ 0x97, 0x7c, 0x92, 0x73, 0xb1, 0x59, 0x6b, 0x5a, 0xe7, 0x1a, 0xec, 0x8d,
+ 0xef, 0xb5, 0xae, 0x36, 0x43, 0x47, 0x33, 0x5c, 0x1e, 0x7c, 0x12, 0x52,
+ 0x3a, 0xac, 0xb0, 0x56, 0x1b, 0x75, 0x85, 0x8d, 0x0e, 0x21, 0xde, 0xcf,
+ 0xa4, 0xe1, 0xaf, 0x2e, 0xf0, 0x47, 0xaf, 0xd7, 0x2d, 0x16, 0x6f, 0x71,
+ 0x1c, 0x40, 0x70, 0x20, 0x09, 0xe6, 0x34, 0x4f, 0x56, 0x07, 0x51, 0xc9,
+ 0x79, 0xdc, 0x3d, 0x3a, 0xa4, 0xb7, 0xd4, 0x7c, 0x7a, 0x9b, 0x48, 0x1f,
+ 0x74, 0x85, 0x79, 0x9d, 0x1f, 0x02, 0xaa, 0x99, 0x49, 0x69, 0x7c, 0x19,
+ 0x73, 0xc9, 0x26, 0x4f, 0xdf, 0xc2, 0x4a, 0x72, 0x6c, 0x2e, 0x66, 0xd7,
+ 0xb5, 0xc5, 0x8f, 0xe2, 0xdd, 0x8f, 0xd5, 0xc7, 0xc5, 0xcd, 0x93, 0xf9,
+ 0x11, 0x18, 0x1c, 0xd3, 0xbf, 0xd6, 0xdc, 0x1c, 0x01, 0x92, 0xe2, 0xe6,
+ 0x80, 0x7c, 0xa4, 0x15, 0x7e, 0xfe, 0x8b, 0xba, 0xc2, 0x6b, 0xb9, 0xd5,
+ 0xb0, 0x83, 0xbc, 0x3b, 0xdf, 0xfe, 0x69, 0x3c, 0x2a, 0x56, 0x51, 0x93,
+ 0x55, 0xbe, 0x8b, 0xd8, 0x1f, 0x40, 0x68, 0x3b, 0xdc, 0xf2, 0x1b, 0xde,
+ 0x3d, 0xb0, 0x75, 0xd3, 0xba, 0x4a, 0x66, 0xe6, 0xda, 0x58, 0x5c, 0xd6,
+ 0x0d, 0xc1, 0xa3, 0x97, 0x16, 0x83, 0xe2, 0xb2, 0x9f, 0x63, 0x1f, 0x77,
+ 0xa7, 0x5b, 0x83, 0x6c, 0x0e, 0x22, 0x1c, 0xed, 0xee, 0x88, 0xe5, 0xbf,
+ 0x47, 0xef, 0x57, 0x2c, 0xea, 0x36, 0x8b, 0x05, 0x57, 0x30, 0x0a, 0x98,
+ 0x0c, 0x31, 0xde, 0xa6, 0xd2, 0x0f, 0x8b, 0x81, 0x2d, 0x2a, 0xab, 0xec,
+ 0xc7, 0x7b, 0x63, 0x71, 0x04, 0x38, 0xb8, 0x80, 0x48, 0x0c, 0x07, 0xf7,
+ 0x63, 0xdc, 0x41, 0x1e, 0x29, 0x29, 0xb7, 0x5e, 0x60, 0x63, 0x58, 0xda,
+ 0xda, 0xe7, 0x6e, 0x71, 0x0e, 0x36, 0x38, 0xf3, 0xda, 0x7f, 0xd9, 0x29,
+ 0xbe, 0xd9, 0xd4, 0x3d, 0x7f, 0x4f, 0x7b, 0x62, 0x7f, 0x9b, 0x93, 0xe1,
+ 0xc4, 0xf3, 0xf8, 0xaa, 0x7f, 0x6d, 0xad, 0xc7, 0xd3, 0xaa, 0xc7, 0x58,
+ 0x74, 0x0c, 0x6f, 0x30, 0x3b, 0xf7, 0x4f, 0xea, 0x59, 0xf6, 0x8d, 0xbe,
+ 0x9d, 0x9e, 0x8f, 0xfa, 0x3d, 0x8e, 0x98, 0x8f, 0xa3, 0x1c, 0x42, 0x4a,
+ 0x4c, 0x70, 0x68, 0x0c, 0x7b, 0x40, 0x2d, 0x65, 0x4e, 0x32, 0xc9, 0xda,
+ 0x4e, 0x80, 0x8e, 0x39, 0xf8, 0x95, 0x7a, 0xce, 0x90, 0xcc, 0x8f, 0xd2,
+ 0xe3, 0x56, 0x1b, 0x20, 0x87, 0x3a, 0x44, 0x0d, 0x0e, 0x91, 0xe2, 0xb4,
+ 0xb2, 0x3a, 0x4d, 0x0e, 0xa2, 0xc0, 0x08, 0x75, 0x6e, 0x68, 0xf5, 0x1e,
+ 0xf3, 0xd9, 0xa6, 0x7b, 0x7c, 0x11, 0xa9, 0x69, 0xc6, 0xac, 0x0a, 0xc7,
+ 0xaa, 0xd2, 0x49, 0xf6, 0xc0, 0xda, 0x26, 0x37, 0x24, 0xa7, 0x36, 0xae,
+ 0x86, 0xd2, 0xda, 0x2a, 0xcc, 0xab, 0xe8, 0x00, 0x48, 0x98, 0x1c, 0x47,
+ 0xf1, 0x57, 0x28, 0xfa, 0xbb, 0x81, 0x48, 0x70, 0xc7, 0xac, 0x35, 0xa4,
+ 0xee, 0xf7, 0x0d, 0xff, 0x00, 0x71, 0x72, 0xd1, 0x7e, 0x7e, 0x09, 0xad,
+ 0xd7, 0xbe, 0xd6, 0x8a, 0xaa, 0x3b, 0x5e, 0x4e, 0x90, 0xfe, 0x22, 0x3c,
+ 0x65, 0x1d, 0x9b, 0x8b, 0x89, 0xad, 0xbc, 0x80, 0x5b, 0x27, 0x44, 0x94,
+ 0xe4, 0xdd, 0xd1, 0x30, 0x9c, 0xc7, 0x81, 0x4b, 0x7d, 0x42, 0xd1, 0x2e,
+ 0x88, 0x31, 0xe5, 0x1e, 0x0a, 0x97, 0x50, 0xe9, 0xdd, 0x3b, 0xa7, 0x61,
+ 0x36, 0xec, 0x80, 0xeb, 0x09, 0x70, 0xab, 0x6c, 0x9d, 0xc7, 0x74, 0x9d,
+ 0x3c, 0x22, 0x0a, 0xe9, 0x99, 0x5f, 0xa6, 0x09, 0x6f, 0x7e, 0x01, 0x33,
+ 0x0b, 0x2f, 0xeb, 0x3e, 0x05, 0xb9, 0x18, 0x4d, 0xbf, 0x1c, 0x6e, 0x7e,
+ 0x34, 0xbf, 0x6c, 0xfd, 0x26, 0xbb, 0x47, 0xfc, 0xc4, 0x24, 0xa7, 0x3a,
+ 0xae, 0xb3, 0xd0, 0xe2, 0x9c, 0x56, 0x56, 0x59, 0xb2, 0x00, 0x0e, 0x0d,
+ 0x99, 0x8e, 0x49, 0x9d, 0x4a, 0x2e, 0x3b, 0xb0, 0xb2, 0x01, 0xae, 0x90,
+ 0xe7, 0x52, 0x64, 0x6e, 0x24, 0x10, 0x76, 0x19, 0x0d, 0x3c, 0x38, 0x2e,
+ 0x66, 0xea, 0xab, 0xc8, 0x6f, 0xa8, 0xe8, 0x8e, 0x23, 0xb8, 0xf3, 0x5a,
+ 0x9f, 0x57, 0x7a, 0x6d, 0x97, 0x31, 0xf7, 0xbd, 0x9f, 0xa1, 0x73, 0x86,
+ 0xd2, 0x49, 0x83, 0x13, 0x24, 0x09, 0xf3, 0x84, 0x94, 0xef, 0xc3, 0x9a,
+ 0xe2, 0x4f, 0xd2, 0x71, 0xd1, 0x48, 0xd5, 0x75, 0x85, 0xa1, 0xe4, 0x7a,
+ 0x64, 0xc8, 0x68, 0x90, 0xf2, 0x7c, 0xcf, 0x10, 0x9b, 0xec, 0x4d, 0x0e,
+ 0x75, 0x95, 0x6e, 0x10, 0x27, 0x69, 0x3a, 0x9d, 0x34, 0x12, 0xe9, 0x85,
+ 0x11, 0x57, 0x55, 0xf6, 0x3c, 0x32, 0xb2, 0x26, 0x3d, 0xce, 0x89, 0xfb,
+ 0xa5, 0x25, 0x26, 0xb6, 0xb2, 0xcd, 0x75, 0x8d, 0xa5, 0xa7, 0x5e, 0x02,
+ 0x7d, 0xad, 0x05, 0xac, 0xec, 0xd1, 0xf7, 0x69, 0xfe, 0xd4, 0xfb, 0xf3,
+ 0x8b, 0x5a, 0xd7, 0x57, 0x5b, 0x6c, 0x12, 0x24, 0x38, 0xed, 0xff, 0x00,
+ 0xa9, 0x50, 0xc7, 0xb2, 0xe2, 0xf7, 0xba, 0xd6, 0x8d, 0x1c, 0x5a, 0xd0,
+ 0x35, 0x30, 0x52, 0x53, 0x3f, 0x4f, 0x48, 0xe7, 0x74, 0xea, 0x7c, 0xd4,
+ 0x5f, 0x58, 0x86, 0xef, 0xf7, 0x6c, 0x01, 0xb1, 0xf1, 0x4f, 0x7d, 0xef,
+ 0xac, 0x54, 0xd6, 0xd6, 0x6d, 0x0e, 0x71, 0xdd, 0x1a, 0x40, 0x6f, 0x8f,
+ 0x0a, 0x58, 0xd5, 0xbe, 0x1a, 0xf0, 0xdf, 0x6e, 0xee, 0x5e, 0x7b, 0x70,
+ 0x92, 0x99, 0x35, 0xd4, 0x93, 0xb1, 0xae, 0x1b, 0x9b, 0xa9, 0x6f, 0x10,
+ 0x0f, 0x0a, 0xa9, 0xc6, 0xa3, 0x22, 0xc3, 0x69, 0x6e, 0xe7, 0x71, 0xea,
+ 0x0e, 0xc0, 0x76, 0x50, 0xcd, 0xfb, 0x4d, 0x79, 0xac, 0x34, 0x54, 0x2e,
+ 0x2e, 0x63, 0x9b, 0x68, 0x10, 0x1a, 0xd1, 0x22, 0x27, 0x59, 0xf8, 0x21,
+ 0xe3, 0x59, 0x95, 0x5d, 0x9e, 0x9d, 0x98, 0xb6, 0x34, 0xb8, 0xe9, 0xe9,
+ 0x80, 0x19, 0x1e, 0x22, 0x5c, 0x12, 0x53, 0x64, 0xe3, 0x62, 0xe3, 0x35,
+ 0xa7, 0x6b, 0x5a, 0x03, 0xe4, 0xe8, 0x35, 0x30, 0x60, 0xfc, 0x54, 0x9d,
+ 0x71, 0x15, 0x9b, 0x1e, 0x36, 0x1e, 0x40, 0xe4, 0x8f, 0x00, 0x7c, 0xd5,
+ 0x17, 0xd9, 0x69, 0xb9, 0xf6, 0x8a, 0x1e, 0x2a, 0xa5, 0xe3, 0x52, 0xe9,
+ 0x82, 0xee, 0x5c, 0x04, 0x9f, 0xc1, 0x5a, 0xf5, 0x1b, 0x64, 0xb1, 0xcd,
+ 0xd8, 0xd6, 0x6a, 0xee, 0x49, 0x3a, 0x48, 0xec, 0x92, 0x96, 0xaf, 0x1e,
+ 0x96, 0xc5, 0xd6, 0x86, 0x82, 0x60, 0x49, 0xfc, 0xe2, 0x7b, 0x7d, 0xe8,
+ 0xac, 0xa9, 0x96, 0x37, 0x41, 0x00, 0x93, 0xa0, 0x3e, 0x0a, 0x6e, 0xbe,
+ 0xbf, 0x4c, 0x54, 0x01, 0x1e, 0xd9, 0x69, 0x2d, 0x31, 0xce, 0x9d, 0x92,
+ 0xad, 0xc3, 0x69, 0x01, 0xb1, 0x04, 0xb4, 0x88, 0x8f, 0xee, 0x49, 0x4c,
+ 0x5b, 0x5b, 0x0b, 0x4c, 0x0d, 0x04, 0x6a, 0x3b, 0xc2, 0x56, 0xb6, 0x6c,
+ 0x32, 0x74, 0x23, 0xe8, 0xfc, 0x14, 0xeb, 0x7b, 0x47, 0xb4, 0x34, 0xb4,
+ 0x76, 0x04, 0x40, 0xf8, 0x26, 0xba, 0xc6, 0xb4, 0x17, 0x96, 0xe8, 0xd3,
+ 0xac, 0x73, 0xae, 0x82, 0x02, 0x4a, 0x45, 0x6d, 0x2c, 0x35, 0x81, 0x5b,
+ 0x5a, 0x1c, 0x4e, 0x9e, 0x1c, 0x78, 0x6a, 0xa4, 0x69, 0xa8, 0xd6, 0x61,
+ 0xa1, 0xbd, 0xa4, 0x08, 0x99, 0xf0, 0x4c, 0xfb, 0x76, 0xb4, 0x6e, 0x0e,
+ 0x3d, 0xcc, 0x03, 0xa7, 0xdc, 0xa3, 0x65, 0x96, 0xb1, 0xa1, 0x86, 0x1c,
+ 0x4b, 0x4e, 0xbc, 0x1d, 0x39, 0x09, 0x29, 0x8b, 0x31, 0x6b, 0x0c, 0x6b,
+ 0x5e, 0x24, 0xb1, 0x80, 0x03, 0xdb, 0x4f, 0x34, 0x60, 0xd1, 0x5b, 0x77,
+ 0xb1, 0xbe, 0xd0, 0x35, 0x0a, 0xbe, 0x2e, 0x4b, 0x20, 0xb6, 0xe7, 0xc1,
+ 0x23, 0x47, 0x1e, 0x09, 0x04, 0x8d, 0x11, 0x1d, 0x99, 0x5d, 0x62, 0x04,
+ 0x97, 0x3c, 0xed, 0x68, 0xf9, 0x73, 0xe4, 0x12, 0x52, 0x1a, 0x98, 0x6f,
+ 0x79, 0xb1, 0x81, 0xa2, 0xbb, 0x09, 0x24, 0x9f, 0xa5, 0x33, 0xe1, 0xf0,
+ 0xee, 0xa5, 0x7e, 0x0f, 0xaa, 0x61, 0xc4, 0x16, 0x82, 0x1c, 0x1a, 0xe1,
+ 0x20, 0x16, 0xf0, 0x53, 0xe3, 0x13, 0x5b, 0x59, 0x5c, 0x82, 0x00, 0xd0,
+ 0x03, 0x31, 0x1a, 0x6a, 0x8a, 0xfc, 0x8a, 0xab, 0x97, 0x3c, 0xc1, 0x30,
+ 0x3e, 0x5d, 0xa1, 0x25, 0x21, 0xd9, 0x4d, 0xd5, 0x81, 0x90, 0xc0, 0x4e,
+ 0x84, 0x6e, 0x1c, 0x18, 0xf3, 0xf0, 0x41, 0xca, 0xaf, 0x0c, 0x52, 0x69,
+ 0x7b, 0x58, 0x05, 0xad, 0x73, 0x5e, 0xd0, 0x03, 0x65, 0xa7, 0xda, 0x49,
+ 0x81, 0xf0, 0x53, 0x17, 0xd0, 0x40, 0x7b, 0x5c, 0x1d, 0x12, 0x62, 0x74,
+ 0xe6, 0x0f, 0x2b, 0x37, 0xac, 0xe4, 0x3b, 0x17, 0x16, 0xcb, 0x29, 0x3b,
+ 0x2e, 0x35, 0x91, 0x24, 0x8d, 0x03, 0x8c, 0x18, 0xfe, 0x52, 0x4a, 0x73,
+ 0x19, 0xf5, 0x9a, 0xde, 0x9f, 0x5d, 0x38, 0x6f, 0xa8, 0xdf, 0x5e, 0x39,
+ 0x73, 0x1f, 0x6f, 0xef, 0xb4, 0x1f, 0x63, 0x9a, 0xef, 0xea, 0xab, 0xd5,
+ 0xfd, 0x62, 0xaa, 0xed, 0xae, 0x65, 0x2e, 0x79, 0xfa, 0x25, 0xc1, 0xfa,
+ 0x01, 0xce, 0x8c, 0x31, 0xaa, 0xe6, 0xb1, 0xba, 0xad, 0xb5, 0x1d, 0x97,
+ 0x81, 0x73, 0x06, 0x90, 0xe1, 0xaf, 0xde, 0xad, 0x57, 0x99, 0xd0, 0x6d,
+ 0x21, 0xf7, 0xe3, 0x1a, 0xdf, 0xde, 0x07, 0xb7, 0xfe, 0x81, 0x1f, 0x91,
+ 0x25, 0x3d, 0x2f, 0xfc, 0xe0, 0xc6, 0x75, 0x8d, 0xa5, 0xf5, 0x59, 0x4e,
+ 0xff, 0x00, 0x68, 0xb2, 0xc1, 0x0d, 0x9f, 0x88, 0x56, 0xf0, 0xb2, 0x2b,
+ 0xcd, 0x63, 0xb2, 0x29, 0xd2, 0xa2, 0xf2, 0xd0, 0x5c, 0x27, 0x76, 0xcd,
+ 0x3b, 0x9d, 0x17, 0x37, 0x45, 0x7d, 0x3f, 0x2e, 0xfa, 0x99, 0x87, 0x79,
+ 0xa0, 0xbb, 0xda, 0x19, 0x5b, 0xb4, 0x9d, 0x5d, 0x2e, 0x6d, 0x92, 0x65,
+ 0x6f, 0x60, 0xe3, 0x7d, 0x94, 0xed, 0x17, 0x3d, 0xc5, 0xcf, 0x3b, 0xc1,
+ 0x80, 0x1e, 0x63, 0xe9, 0x43, 0x46, 0x89, 0x29, 0x9d, 0x98, 0xd5, 0xdb,
+ 0xea, 0x31, 0xcd, 0x76, 0xd3, 0xf4, 0xa7, 0x46, 0x91, 0xe5, 0xac, 0x2a,
+ 0x4f, 0xe8, 0xf8, 0x97, 0x06, 0xb0, 0x53, 0x5b, 0x44, 0x7b, 0xda, 0xd2,
+ 0x0b, 0xbd, 0xa4, 0x6d, 0xd4, 0x42, 0xd6, 0xca, 0x7c, 0xe3, 0xfa, 0x4d,
+ 0x6c, 0xb9, 0xde, 0xdd, 0xdf, 0x9a, 0x34, 0xe4, 0xa0, 0xe2, 0xd7, 0x76,
+ 0x3b, 0x3d, 0xcd, 0x63, 0xc9, 0xd1, 0xc4, 0x18, 0xf9, 0x81, 0xb5, 0x25,
+ 0x34, 0x8f, 0x49, 0xc2, 0x23, 0x6b, 0xeb, 0x04, 0xb4, 0x88, 0xe7, 0x51,
+ 0xe6, 0x8d, 0xfb, 0x3b, 0x1e, 0x27, 0x7b, 0xb6, 0xcc, 0xfa, 0x72, 0x62,
+ 0x7c, 0x22, 0x55, 0xd7, 0x87, 0xce, 0xf6, 0xd4, 0xe2, 0xf1, 0x00, 0x01,
+ 0xb6, 0x0c, 0x6b, 0x1c, 0xa9, 0xfb, 0xe3, 0x77, 0xd9, 0xce, 0xee, 0x76,
+ 0xc8, 0x94, 0x94, 0xe5, 0xbc, 0x61, 0x5a, 0xd0, 0x6b, 0xbc, 0xee, 0x82,
+ 0xd6, 0x53, 0x49, 0xf6, 0xc9, 0xd3, 0xf7, 0x78, 0xfb, 0x91, 0x2b, 0x12,
+ 0xc7, 0x07, 0x3a, 0x18, 0x1c, 0x5b, 0x31, 0xb7, 0x74, 0x79, 0xff, 0x00,
+ 0xb5, 0x60, 0x39, 0x99, 0xd5, 0xd8, 0xd7, 0x33, 0x73, 0x5d, 0x00, 0x97,
+ 0xf0, 0x4f, 0xc4, 0x89, 0xdc, 0xa0, 0x72, 0x6e, 0xdc, 0xe7, 0x3c, 0xd6,
+ 0xdd, 0xbf, 0x4a, 0xa1, 0x2d, 0xd3, 0xf9, 0x3a, 0x91, 0x31, 0xdd, 0x25,
+ 0x3d, 0x0f, 0xd8, 0x31, 0xa9, 0xaf, 0xed, 0x0f, 0x71, 0x0d, 0xaa, 0x49,
+ 0x7e, 0x9a, 0x1f, 0x88, 0x0a, 0xed, 0x77, 0x06, 0xeb, 0xea, 0xfb, 0x47,
+ 0x1a, 0xb6, 0x0c, 0x88, 0x07, 0x42, 0xb9, 0xa6, 0x67, 0xe3, 0xbe, 0xb6,
+ 0xb5, 0xad, 0xac, 0x35, 0x87, 0x73, 0x6c, 0xb0, 0x17, 0x13, 0xf1, 0x2e,
+ 0x57, 0x31, 0xf2, 0xb7, 0xd4, 0x1f, 0x5b, 0x98, 0x0e, 0x83, 0x63, 0x85,
+ 0x70, 0x0f, 0x3c, 0xf9, 0x82, 0x92, 0x9d, 0xda, 0xef, 0xea, 0x0e, 0xb0,
+ 0x6d, 0xb0, 0xbf, 0x67, 0xd3, 0x6e, 0xd6, 0x91, 0xa8, 0xed, 0xc1, 0xfc,
+ 0x55, 0x4e, 0xa5, 0x9b, 0xd6, 0x19, 0x6e, 0xc6, 0x54, 0x0d, 0x7a, 0x12,
+ 0x18, 0x24, 0xb4, 0x13, 0x07, 0x78, 0x99, 0xe2, 0x78, 0x95, 0x5a, 0x9c,
+ 0xbf, 0x4d, 0xfe, 0xa6, 0xd0, 0xd7, 0x3f, 0xd8, 0xe1, 0xb4, 0xf3, 0xe0,
+ 0x1c, 0xdd, 0x35, 0x57, 0x99, 0x73, 0x5c, 0x77, 0x31, 0xc5, 0x80, 0xc1,
+ 0x71, 0xd4, 0xfb, 0x86, 0x87, 0x91, 0xfc, 0x12, 0x52, 0x62, 0x68, 0xc8,
+ 0x82, 0x6a, 0xa8, 0xb3, 0x42, 0xd6, 0xed, 0x6b, 0xa0, 0xb6, 0x39, 0x74,
+ 0x6a, 0xae, 0x1d, 0x9b, 0x18, 0xc1, 0xb4, 0x1e, 0xe1, 0xb0, 0x34, 0xed,
+ 0x01, 0x64, 0xd9, 0x7d, 0x54, 0x9d, 0xad, 0x32, 0x37, 0x7e, 0xe4, 0x49,
+ 0xf8, 0xb7, 0xb2, 0x87, 0xda, 0xe5, 0xd6, 0x3c, 0x52, 0x43, 0xea, 0x12,
+ 0x5d, 0x0e, 0x1a, 0x0e, 0xfe, 0xe8, 0x49, 0x4d, 0xbb, 0xb3, 0x2e, 0x6e,
+ 0x48, 0x6d, 0x65, 0x90, 0xe6, 0xea, 0xcd, 0x66, 0x47, 0x8b, 0xbb, 0x2b,
+ 0x75, 0xe5, 0xdb, 0xb3, 0xdf, 0x47, 0x02, 0x5a, 0x5a, 0xee, 0x7c, 0xb5,
+ 0x58, 0xb4, 0x64, 0x35, 0xf6, 0xbb, 0x21, 0xcc, 0x78, 0x73, 0xc4, 0x91,
+ 0xec, 0x3d, 0xbb, 0x0f, 0xcd, 0xe1, 0x1a, 0x8e, 0xb6, 0x1d, 0x41, 0xb3,
+ 0xd0, 0x2d, 0x66, 0x87, 0x7b, 0xe7, 0x89, 0x81, 0xe0, 0x92, 0x9b, 0xe3,
+ 0x3c, 0xdc, 0xfd, 0xac, 0x63, 0xea, 0x03, 0x47, 0x1b, 0x1a, 0xd1, 0xf1,
+ 0xd3, 0x71, 0x25, 0x45, 0x97, 0x58, 0xfb, 0x3d, 0x5b, 0x18, 0x29, 0x63,
+ 0x44, 0x0a, 0xc3, 0x85, 0x8e, 0xfe, 0xb1, 0xdb, 0xe3, 0xd9, 0x54, 0xc9,
+ 0xbf, 0x21, 0xa4, 0xbe, 0x9a, 0x01, 0x73, 0x0f, 0xe9, 0x43, 0x64, 0x9f,
+ 0x81, 0xe4, 0x0f, 0x8a, 0xb3, 0x57, 0x54, 0xdb, 0x20, 0x57, 0xb4, 0x86,
+ 0xc9, 0x74, 0x82, 0x4c, 0x78, 0xa4, 0xa6, 0xd5, 0x65, 0x82, 0x1c, 0xfd,
+ 0x03, 0x7b, 0x79, 0x93, 0x13, 0xe2, 0x95, 0xf6, 0x50, 0xe6, 0xec, 0x71,
+ 0x73, 0xa7, 0x48, 0x66, 0xa7, 0xcc, 0x7b, 0x55, 0x4c, 0x9c, 0xd3, 0x6b,
+ 0x5a, 0x5e, 0xdd, 0xa0, 0x38, 0x38, 0x16, 0x98, 0x26, 0x3c, 0x60, 0x78,
+ 0xa8, 0x9e, 0xa0, 0x34, 0xad, 0xae, 0x0c, 0x88, 0x71, 0x76, 0x9f, 0x76,
+ 0xa9, 0x29, 0x2b, 0x58, 0xca, 0x41, 0x14, 0x63, 0x38, 0xcb, 0x84, 0xea,
+ 0xd6, 0x98, 0xe2, 0x75, 0x3a, 0xa6, 0x6e, 0x45, 0xc1, 0xfe, 0xad, 0x94,
+ 0x7a, 0x6d, 0x61, 0x86, 0x09, 0xdc, 0xe2, 0x3c, 0x7d, 0xba, 0x09, 0x59,
+ 0xee, 0xea, 0x59, 0x4f, 0x97, 0xb0, 0x18, 0xd4, 0x46, 0xe0, 0x5b, 0x00,
+ 0xc4, 0xcb, 0x5a, 0x50, 0x3f, 0x6a, 0xe5, 0x34, 0xbb, 0xed, 0x4d, 0x1b,
+ 0x39, 0x60, 0x6e, 0xef, 0x84, 0x13, 0xb4, 0x4a, 0x4a, 0x6e, 0x87, 0xd7,
+ 0x60, 0x73, 0xc3, 0x76, 0x07, 0x19, 0x7b, 0x4b, 0x83, 0x43, 0xa0, 0xcb,
+ 0x77, 0x4c, 0xf0, 0x8a, 0x2d, 0x7e, 0xd0, 0xf6, 0x35, 0x8e, 0x07, 0x52,
+ 0x01, 0x04, 0x48, 0xf9, 0x85, 0x49, 0xb9, 0x34, 0x5e, 0x22, 0xba, 0xb7,
+ 0xb8, 0x76, 0x23, 0xdd, 0x3e, 0x5a, 0x02, 0x95, 0xcf, 0xb5, 0xcd, 0x68,
+ 0xb1, 0xae, 0x0c, 0x71, 0xf7, 0x02, 0xed, 0xa2, 0x07, 0xc0, 0x04, 0x94,
+ 0xdd, 0x6e, 0x56, 0x53, 0x65, 0xd6, 0xd6, 0xd3, 0x07, 0xf7, 0x83, 0x5a,
+ 0x1b, 0xff, 0x00, 0x4a, 0x4a, 0x57, 0xf5, 0x4a, 0x9a, 0x5c, 0x2b, 0x82,
+ 0xf3, 0xf4, 0x64, 0x81, 0xf8, 0x09, 0x3f, 0x82, 0x08, 0xcc, 0xa6, 0xa0,
+ 0x5a, 0xe6, 0xcb, 0x07, 0x0e, 0x0e, 0x0e, 0x1f, 0x34, 0x27, 0xe4, 0xe3,
+ 0x5e, 0x4f, 0xb3, 0x79, 0x76, 0xac, 0x6b, 0x35, 0x25, 0x91, 0xaf, 0x6f,
+ 0x14, 0x94, 0xdb, 0x39, 0xd6, 0xb0, 0xed, 0x0d, 0x6e, 0xba, 0x8f, 0x11,
+ 0xf8, 0x85, 0x07, 0xdc, 0xeb, 0x36, 0x8b, 0xa7, 0x7c, 0xc8, 0x75, 0x7a,
+ 0x01, 0xe2, 0x4b, 0x5d, 0x3c, 0x05, 0x41, 0xd7, 0x57, 0xcb, 0xa9, 0x73,
+ 0x0e, 0xa6, 0x6c, 0x6c, 0x3c, 0x79, 0x8f, 0x25, 0x0c, 0x61, 0x73, 0x72,
+ 0x1c, 0xe2, 0x5d, 0xb4, 0x80, 0x1a, 0xe0, 0x77, 0x19, 0x76, 0xb3, 0xa0,
+ 0x88, 0x49, 0x4d, 0xeb, 0xee, 0xc8, 0x65, 0x52, 0xfb, 0x5b, 0x5b, 0xc8,
+ 0x20, 0x10, 0xd1, 0xae, 0x9c, 0xc9, 0x2e, 0x1f, 0x82, 0x0d, 0x0c, 0x25,
+ 0x87, 0xf4, 0x8e, 0x7b, 0x86, 0xbb, 0x9e, 0xf9, 0xdd, 0xe2, 0x35, 0xd6,
+ 0x15, 0x6c, 0x87, 0xfa, 0xec, 0xb3, 0x78, 0x2d, 0xd0, 0x00, 0x25, 0xa4,
+ 0x38, 0xea, 0x7b, 0x78, 0x42, 0x0e, 0xca, 0x49, 0x67, 0xa8, 0xe7, 0xba,
+ 0xbf, 0x6e, 0xd0, 0xc6, 0xb1, 0xbf, 0x39, 0x3e, 0x69, 0x29, 0xd1, 0x19,
+ 0xa5, 0xf8, 0xa7, 0x1d, 0xb5, 0xb8, 0xe4, 0x56, 0x60, 0x39, 0xd1, 0x03,
+ 0xb9, 0x27, 0x88, 0xf8, 0x26, 0xaf, 0x21, 0x96, 0x09, 0x01, 0xce, 0x20,
+ 0xc1, 0x0c, 0x81, 0x07, 0xce, 0x48, 0xd1, 0x50, 0x68, 0xa2, 0xc7, 0x92,
+ 0x0c, 0x07, 0x4b, 0x4b, 0x5d, 0x2e, 0x73, 0xa0, 0xcf, 0x6d, 0x39, 0x4a,
+ 0x69, 0xa2, 0xb7, 0x06, 0x59, 0xe9, 0x11, 0xa1, 0x7f, 0x81, 0xf3, 0x99,
+ 0x49, 0x4d, 0xc1, 0x6e, 0x3b, 0xac, 0xd8, 0x1d, 0xb6, 0xda, 0xcc, 0xb4,
+ 0x82, 0x09, 0x69, 0x3e, 0x5a, 0xa3, 0x8a, 0xed, 0x30, 0xeb, 0x2e, 0x2f,
+ 0x68, 0xd4, 0x4b, 0x03, 0x79, 0xd3, 0xb4, 0x2c, 0xfc, 0x7a, 0xb1, 0xdd,
+ 0xfa, 0x57, 0xb9, 0xaf, 0x73, 0xf4, 0x2f, 0x6b, 0x9b, 0x2e, 0x3f, 0x15,
+ 0x6e, 0x9c, 0x9a, 0xc3, 0x5c, 0xc6, 0x39, 0xce, 0x6b, 0x0e, 0xd0, 0x1f,
+ 0x0e, 0xfb, 0xa4, 0x84, 0x94, 0x98, 0x6d, 0x67, 0xb0, 0x41, 0xa9, 0xba,
+ 0xb8, 0x02, 0x78, 0xf2, 0x95, 0x1b, 0x68, 0xc2, 0xbf, 0x14, 0xb6, 0xea,
+ 0xfd, 0x56, 0x90, 0x4b, 0x47, 0xa6, 0x79, 0x33, 0xe0, 0x0f, 0x09, 0xa8,
+ 0xc8, 0x60, 0x7b, 0xf7, 0xd6, 0xc6, 0x56, 0xd2, 0x75, 0x8d, 0xae, 0x3f,
+ 0x22, 0x9b, 0x23, 0x26, 0xb7, 0x83, 0x53, 0x65, 0xad, 0x89, 0x25, 0xa2,
+ 0x64, 0x0e, 0xdc, 0xa4, 0xa7, 0x84, 0xcb, 0xe9, 0xf9, 0x58, 0xef, 0x8b,
+ 0x18, 0x44, 0xf7, 0x83, 0xf7, 0x14, 0x06, 0xd3, 0x63, 0x88, 0x6b, 0x5b,
+ 0xb9, 0xc7, 0x80, 0x17, 0xa1, 0xb7, 0x1b, 0x1c, 0xed, 0x05, 0xa4, 0x17,
+ 0x09, 0xf7, 0x34, 0x71, 0xf7, 0xc2, 0x8d, 0x58, 0xf8, 0x6d, 0x07, 0x6b,
+ 0x00, 0x0d, 0x30, 0x65, 0xa0, 0x70, 0x63, 0xc1, 0x25, 0x3c, 0xe7, 0x42,
+ 0xe9, 0x59, 0x54, 0xdc, 0x32, 0x2c, 0xac, 0x81, 0xfb, 0xc4, 0x09, 0x1e,
+ 0x61, 0x6f, 0x64, 0xdf, 0x70, 0xb1, 0x82, 0x82, 0xd7, 0x39, 0xbc, 0xb5,
+ 0xc7, 0x61, 0xfe, 0xc9, 0xd7, 0x5f, 0x92, 0x2d, 0x85, 0x8f, 0x24, 0x3a,
+ 0xc0, 0xd1, 0xa8, 0x23, 0x83, 0xe4, 0x44, 0x35, 0xbf, 0x04, 0x36, 0x0c,
+ 0x4a, 0xc1, 0xd9, 0x24, 0xf2, 0xf6, 0x82, 0x76, 0x98, 0xd6, 0x75, 0x04,
+ 0x4a, 0x4a, 0x47, 0x65, 0xfd, 0x42, 0xd2, 0xd6, 0xec, 0x7b, 0x1a, 0x35,
+ 0x25, 0xa1, 0x8e, 0x24, 0xfd, 0xe3, 0xf2, 0x2b, 0x3f, 0x68, 0xb8, 0x7b,
+ 0xed, 0x01, 0x86, 0x34, 0x79, 0x11, 0x13, 0xd9, 0x08, 0xe4, 0x12, 0xc6,
+ 0x9d, 0xaf, 0x66, 0xef, 0x03, 0xfd, 0xca, 0xb9, 0x78, 0x7b, 0xe5, 0xdb,
+ 0x6c, 0x8e, 0x4d, 0x8d, 0xf0, 0xf0, 0x3a, 0x94, 0x94, 0xdb, 0x66, 0x56,
+ 0x5b, 0x1d, 0xbe, 0xd7, 0xd4, 0xea, 0xf8, 0x0d, 0x68, 0x73, 0x5c, 0x0f,
+ 0xce, 0x51, 0x7f, 0x69, 0x3f, 0x74, 0xc0, 0x8d, 0xbc, 0x6e, 0xf7, 0x7d,
+ 0xca, 0x8e, 0xcd, 0xc2, 0x1f, 0xa6, 0xef, 0x76, 0xd8, 0x3a, 0x1f, 0x20,
+ 0x3f, 0xb9, 0x2f, 0x42, 0xcf, 0x43, 0x7e, 0xc7, 0x44, 0xed, 0xdf, 0xb1,
+ 0xdf, 0x4a, 0x67, 0x6f, 0x8a, 0x4a, 0x69, 0x55, 0x81, 0x99, 0x92, 0xdf,
+ 0xb2, 0xd5, 0x5b, 0x03, 0xda, 0x46, 0xcb, 0x0c, 0x6d, 0x04, 0x77, 0x8f,
+ 0x82, 0x25, 0xfd, 0x2b, 0xa8, 0x54, 0xe0, 0xd0, 0xda, 0x9c, 0x3b, 0x3a,
+ 0x46, 0x84, 0x08, 0x92, 0xd2, 0xbb, 0x7c, 0x5c, 0x1a, 0x2a, 0x68, 0x60,
+ 0x60, 0x98, 0x97, 0xba, 0x39, 0x27, 0xbc, 0xa1, 0xba, 0x86, 0x3b, 0x22,
+ 0x4b, 0x74, 0xd1, 0xbe, 0x3f, 0xee, 0x49, 0x4f, 0x2a, 0xde, 0x87, 0x6d,
+ 0xd8, 0xcd, 0x6b, 0x5b, 0x16, 0x98, 0x93, 0x24, 0x54, 0x7c, 0xf6, 0x70,
+ 0xa9, 0xe5, 0xe2, 0x5f, 0x8a, 0x2d, 0xb6, 0xca, 0xc0, 0x35, 0x17, 0x16,
+ 0x3a, 0x82, 0x40, 0x6e, 0xdd, 0x37, 0x3c, 0x13, 0xb9, 0x7a, 0x05, 0x8c,
+ 0xaa, 0x8a, 0x8d, 0x8d, 0x8d, 0xcd, 0x69, 0xda, 0x3b, 0x6b, 0xc2, 0xe7,
+ 0x7a, 0xcd, 0x37, 0x57, 0xd0, 0xb2, 0x4e, 0xc1, 0x0e, 0x60, 0x36, 0x39,
+ 0xdf, 0x48, 0x97, 0x11, 0x3b, 0x47, 0xc5, 0x25, 0x3c, 0xc7, 0xdb, 0xf2,
+ 0x2e, 0x68, 0x73, 0x9c, 0xeb, 0x1a, 0xd2, 0x0b, 0x41, 0x73, 0x80, 0x07,
+ 0xcb, 0x5d, 0x21, 0x31, 0xea, 0xd9, 0x4d, 0x2d, 0x01, 0xee, 0xd2, 0x78,
+ 0x73, 0xb4, 0x8f, 0x89, 0x54, 0x9a, 0x7d, 0x81, 0xa3, 0xc7, 0x81, 0xa1,
+ 0xe1, 0x48, 0xb4, 0x3c, 0xb5, 0x9c, 0x90, 0x0c, 0x47, 0x23, 0x52, 0x92,
+ 0x9b, 0xd8, 0x3d, 0x4a, 0xfb, 0xaf, 0xd9, 0x75, 0xaf, 0x35, 0xbc, 0x16,
+ 0xb8, 0x02, 0x5d, 0xa1, 0x3b, 0x75, 0x9e, 0x47, 0x8a, 0xdb, 0x6d, 0x17,
+ 0x55, 0x5b, 0x9d, 0xb7, 0x6b, 0x00, 0x80, 0xed, 0xc6, 0x76, 0xff, 0x00,
+ 0x27, 0xb7, 0x7f, 0x05, 0xcf, 0x74, 0x99, 0x19, 0xb5, 0xc7, 0x79, 0xd4,
+ 0x76, 0x9d, 0x17, 0x6b, 0x87, 0x63, 0x0d, 0x7b, 0x6f, 0x01, 0xc5, 0xda,
+ 0x6d, 0x3f, 0x9c, 0x47, 0x84, 0xf6, 0x49, 0x4e, 0x5e, 0x2e, 0x38, 0xc9,
+ 0xa8, 0x33, 0xd3, 0xb9, 0xee, 0x73, 0xa1, 0xd4, 0xb4, 0x06, 0x11, 0x11,
+ 0x1b, 0x9c, 0xe3, 0xf4, 0x56, 0x95, 0x3d, 0x26, 0xef, 0x41, 0xae, 0x7b,
+ 0x1b, 0x4b, 0xa4, 0xef, 0x61, 0x32, 0x40, 0x9e, 0x49, 0xaf, 0x6f, 0x2b,
+ 0x62, 0x8a, 0x6a, 0x61, 0xdc, 0xd0, 0x1a, 0x38, 0xda, 0x38, 0x46, 0xb5,
+ 0xcc, 0xd6, 0x44, 0x07, 0x36, 0x12, 0x53, 0xcb, 0x31, 0xae, 0xae, 0xeb,
+ 0x5a, 0xef, 0xd0, 0x19, 0x00, 0x54, 0x03, 0xdc, 0x47, 0x9f, 0xc5, 0xc9,
+ 0xfe, 0xce, 0xca, 0xec, 0x69, 0xb9, 0x86, 0xb0, 0x79, 0x2f, 0x64, 0x09,
+ 0x3a, 0x8e, 0x56, 0xfb, 0x31, 0xb1, 0xde, 0xe6, 0x3d, 0xec, 0x1e, 0xa3,
+ 0x08, 0x73, 0x5e, 0x46, 0xad, 0x9d, 0x39, 0x44, 0x7b, 0xab, 0xb2, 0xc0,
+ 0xc2, 0xcd, 0xcd, 0x69, 0x20, 0x92, 0x34, 0x91, 0xf1, 0x49, 0x4f, 0x38,
+ 0x59, 0x75, 0x92, 0xf6, 0x6f, 0x00, 0xfd, 0x12, 0x04, 0xcc, 0x76, 0x6f,
+ 0x82, 0x7c, 0x7c, 0x7b, 0xf3, 0x37, 0xb6, 0xcd, 0xcc, 0x0e, 0x1a, 0x3f,
+ 0x6e, 0xc2, 0x08, 0x6c, 0xf2, 0x00, 0x32, 0x25, 0x74, 0x2c, 0xc7, 0x05,
+ 0xed, 0x71, 0xd1, 0xac, 0x10, 0xdf, 0x3e, 0xf2, 0x54, 0xde, 0xc6, 0xb4,
+ 0x70, 0x65, 0xc7, 0x48, 0x49, 0x4f, 0x21, 0x6f, 0x48, 0xea, 0x54, 0x35,
+ 0xae, 0xab, 0xf4, 0xae, 0x6e, 0xb6, 0x35, 0x8e, 0x25, 0xc1, 0xbe, 0x3e,
+ 0xe3, 0xdd, 0x37, 0xec, 0xdc, 0xdc, 0x86, 0xb4, 0xda, 0x4b, 0x5d, 0x59,
+ 0xdd, 0x5b, 0x81, 0x8d, 0xa7, 0xb6, 0x8f, 0x5d, 0x75, 0x54, 0xd6, 0xc2,
+ 0x6c, 0x81, 0xea, 0x11, 0x0e, 0x70, 0xee, 0x04, 0xc7, 0xe5, 0x55, 0xcb,
+ 0x7d, 0x6b, 0x78, 0xda, 0xc1, 0xa4, 0x46, 0xa9, 0x29, 0xca, 0x67, 0x49,
+ 0x65, 0x97, 0xd7, 0x71, 0x04, 0x38, 0x02, 0x5e, 0xd6, 0xce, 0xd7, 0x39,
+ 0xd1, 0x24, 0xf9, 0xe8, 0xa7, 0x67, 0x49, 0x0e, 0x26, 0x2c, 0x2d, 0x33,
+ 0xdc, 0x02, 0x7c, 0x39, 0xd1, 0x6d, 0x36, 0xb6, 0xb6, 0xc1, 0x00, 0x7c,
+ 0xfc, 0x78, 0x50, 0xda, 0xfd, 0xd0, 0x06, 0x84, 0x99, 0xed, 0xde, 0x52,
+ 0x53, 0xcd, 0xe7, 0x74, 0xfc, 0xca, 0x43, 0x8b, 0x4c, 0xe3, 0x06, 0x89,
+ 0xda, 0xe8, 0x2d, 0x74, 0xf2, 0x46, 0x9a, 0x7c, 0xd3, 0x62, 0xf4, 0xfc,
+ 0xbb, 0x6c, 0x6b, 0x31, 0xec, 0xd8, 0x06, 0x8f, 0x76, 0xa4, 0x0f, 0x1d,
+ 0x0c, 0x85, 0xd3, 0x58, 0x0b, 0x83, 0x9b, 0xe9, 0x87, 0x36, 0x00, 0x92,
+ 0x74, 0xe7, 0xc2, 0x14, 0x6a, 0x65, 0xac, 0x7f, 0x2d, 0x6b, 0x00, 0xec,
+ 0x3b, 0x9f, 0xf7, 0x24, 0xa7, 0x9e, 0xea, 0x18, 0x58, 0x78, 0xd6, 0x06,
+ 0x7a, 0xc6, 0xfb, 0x87, 0xd2, 0xa5, 0xed, 0x2e, 0x2d, 0x9f, 0xce, 0x96,
+ 0xb4, 0xe9, 0xdd, 0x12, 0x9a, 0x81, 0x69, 0xaa, 0xaa, 0x9c, 0x5d, 0x70,
+ 0x30, 0xe9, 0x80, 0x47, 0x78, 0xec, 0xb5, 0xad, 0x71, 0x16, 0x58, 0x5d,
+ 0xb7, 0x61, 0x89, 0x2e, 0xee, 0xe8, 0xe0, 0x2c, 0xeb, 0x69, 0xca, 0x24,
+ 0x3a, 0xa7, 0x35, 0xbb, 0x8f, 0xb6, 0x09, 0x6c, 0x41, 0xe0, 0xc0, 0x3b,
+ 0xbe, 0x69, 0x29, 0xae, 0xee, 0x95, 0x71, 0xf5, 0x1b, 0x55, 0x4e, 0x6d,
+ 0x64, 0x80, 0xc0, 0xf7, 0x07, 0x38, 0x88, 0xd6, 0x60, 0xfc, 0x94, 0x1f,
+ 0xd2, 0x73, 0xef, 0xdb, 0x4d, 0xbb, 0x69, 0xac, 0x01, 0x24, 0xc1, 0x26,
+ 0x7b, 0x37, 0x6f, 0x84, 0x2d, 0x6a, 0x5b, 0xd4, 0x9d, 0x50, 0xb2, 0xd1,
+ 0x4e, 0xe7, 0x09, 0x6c, 0x6e, 0x69, 0xf2, 0x91, 0xe2, 0x8e, 0xc7, 0xe5,
+ 0x10, 0x0d, 0xdb, 0x18, 0xfd, 0x43, 0x43, 0x09, 0x32, 0x3c, 0x75, 0x84,
+ 0x94, 0xe4, 0x51, 0xd0, 0xf2, 0x40, 0x65, 0x5f, 0x69, 0x6b, 0x68, 0x60,
+ 0xfc, 0xda, 0xc6, 0xe9, 0x9d, 0x22, 0x56, 0x80, 0xe9, 0x18, 0x4c, 0x07,
+ 0x78, 0xdc, 0x5d, 0x05, 0xc5, 0xc7, 0x4f, 0x86, 0x90, 0xa1, 0x6d, 0xbd,
+ 0x69, 0x96, 0x96, 0x62, 0xe2, 0x51, 0x65, 0x42, 0x36, 0xbd, 0xf6, 0x16,
+ 0x93, 0xe7, 0x1d, 0xa1, 0x30, 0x3f, 0x58, 0x6d, 0x70, 0x77, 0xa1, 0x8c,
+ 0xc8, 0xd0, 0x9d, 0xef, 0x70, 0x1d, 0xe7, 0xc5, 0x25, 0x34, 0xef, 0xe8,
+ 0xd8, 0xaf, 0x0e, 0xbb, 0x19, 0xad, 0xae, 0x26, 0x06, 0xde, 0x4f, 0xc6,
+ 0x25, 0x46, 0xae, 0x8a, 0xea, 0x8e, 0x8f, 0x68, 0xd2, 0x45, 0x60, 0x16,
+ 0xfc, 0x60, 0xb6, 0x09, 0x5a, 0x7e, 0x9f, 0x51, 0xd9, 0xb5, 0xe7, 0x1c,
+ 0x36, 0x3d, 0xf0, 0x1e, 0x60, 0xf9, 0x19, 0xd5, 0x0d, 0xd5, 0x66, 0x9c,
+ 0x96, 0xb9, 0xf7, 0x54, 0xda, 0x84, 0x83, 0xb5, 0xae, 0xdc, 0x67, 0xfa,
+ 0xdf, 0x04, 0x94, 0xe7, 0xf5, 0x2e, 0x94, 0xe7, 0x61, 0xb2, 0xca, 0x2c,
+ 0xfd, 0x66, 0xb7, 0x08, 0x63, 0xbb, 0x83, 0xcb, 0x04, 0xf0, 0x55, 0x4a,
+ 0xf1, 0xba, 0xcb, 0x1b, 0x5b, 0x9c, 0x69, 0x71, 0x2e, 0x1b, 0x99, 0x3a,
+ 0xb7, 0x49, 0xfa, 0x5b, 0x79, 0x84, 0x3e, 0xb7, 0xd7, 0x33, 0xb1, 0x7a,
+ 0x8f, 0xa5, 0x53, 0x98, 0x5b, 0x5b, 0x40, 0x6b, 0x8b, 0x44, 0xea, 0x06,
+ 0xe5, 0x45, 0xff, 0x00, 0x59, 0x3a, 0xa3, 0x88, 0x0e, 0x7b, 0x4d, 0x6f,
+ 0x96, 0xc0, 0x6b, 0x41, 0x07, 0xc8, 0xa4, 0xa7, 0x71, 0xf4, 0x75, 0x17,
+ 0x4c, 0x06, 0x96, 0x1d, 0x60, 0x92, 0x78, 0xf1, 0x8d, 0x13, 0x33, 0xa5,
+ 0xe5, 0x1d, 0xc2, 0xc7, 0x37, 0x6e, 0xae, 0x8f, 0x19, 0xd6, 0x06, 0x8e,
+ 0x58, 0x4e, 0xfa, 0xcb, 0xd4, 0xd8, 0xd0, 0x1a, 0x5b, 0xed, 0xf1, 0x60,
+ 0x91, 0xd8, 0x7e, 0x45, 0xbd, 0xd1, 0xfa, 0xa6, 0x4e, 0x6e, 0x2d, 0x56,
+ 0x17, 0xd6, 0x72, 0x1e, 0x1c, 0xe7, 0xb0, 0xcb, 0x44, 0x03, 0x00, 0xb7,
+ 0x6a, 0x4a, 0x64, 0x3a, 0x46, 0x43, 0x81, 0x71, 0x20, 0x87, 0x99, 0xdb,
+ 0x2e, 0x1a, 0x1e, 0xc6, 0x00, 0x44, 0xfd, 0x98, 0xf0, 0x43, 0x18, 0xe6,
+ 0x80, 0x23, 0x73, 0x9e, 0x37, 0x69, 0xe1, 0xf4, 0x55, 0xc3, 0x65, 0xf5,
+ 0xb4, 0x97, 0x56, 0x5f, 0xdf, 0xf4, 0x6e, 0x04, 0xfc, 0x00, 0x20, 0x20,
+ 0xb3, 0xa8, 0x3d, 0xae, 0x7b, 0x8e, 0x16, 0x5b, 0x9a, 0xe8, 0xd7, 0x66,
+ 0xbf, 0xf5, 0x49, 0x29, 0xad, 0x67, 0x48, 0x7b, 0x1a, 0xf6, 0x17, 0xb4,
+ 0xd2, 0xe0, 0x36, 0xcb, 0x64, 0x8e, 0xe7, 0xc7, 0xba, 0xac, 0xec, 0x7b,
+ 0xeb, 0x6e, 0xd1, 0x4d, 0x85, 0xf3, 0x0d, 0x76, 0xd6, 0x91, 0xa1, 0xd0,
+ 0xab, 0x4f, 0xfa, 0xc3, 0x8f, 0xf6, 0x96, 0x54, 0xfa, 0xaf, 0xac, 0x19,
+ 0x0e, 0xad, 0xf5, 0x92, 0xef, 0x8c, 0x47, 0x6f, 0x8a, 0x76, 0xf5, 0xee,
+ 0x8d, 0xba, 0x77, 0x90, 0x4f, 0x3f, 0xa3, 0x20, 0xfe, 0x01, 0x25, 0x34,
+ 0xbe, 0xc3, 0x9d, 0xb9, 0x97, 0x37, 0x6b, 0x1f, 0xa9, 0x87, 0x34, 0x34,
+ 0x43, 0x84, 0x1e, 0x42, 0x2f, 0xd9, 0x32, 0xb7, 0xc6, 0xef, 0x77, 0x33,
+ 0xbd, 0xb1, 0x3e, 0x3f, 0xcd, 0xca, 0xd1, 0x6e, 0x7e, 0x05, 0xcd, 0xf5,
+ 0x2b, 0xbc, 0x6d, 0x67, 0x8b, 0xb6, 0x10, 0x4f, 0xf5, 0xa0, 0xa8, 0xfe,
+ 0xd0, 0xe9, 0x9f, 0x4b, 0xed, 0x8c, 0xf0, 0xfa, 0x43, 0xc7, 0xe1, 0x29,
+ 0x29, 0xcc, 0x3d, 0x6f, 0x37, 0x70, 0xa6, 0xb7, 0x5d, 0x6b, 0xcf, 0x00,
+ 0x86, 0xb1, 0xa0, 0x9f, 0x12, 0x09, 0xd3, 0xe2, 0x8c, 0xce, 0xa9, 0xd4,
+ 0x6b, 0x7c, 0xda, 0x5b, 0x46, 0xe2, 0x0b, 0xdc, 0x5c, 0xeb, 0x8b, 0x80,
+ 0xe0, 0x34, 0x30, 0x40, 0x92, 0xb0, 0x71, 0x72, 0x70, 0x23, 0xf4, 0xb6,
+ 0xd4, 0xd0, 0xdf, 0x6c, 0x34, 0x47, 0xfd, 0x5b, 0x9c, 0x4f, 0xdc, 0x8a,
+ 0x7a, 0xa7, 0x4e, 0x63, 0xe5, 0xb7, 0x96, 0x06, 0x37, 0x40, 0xd8, 0x83,
+ 0x1d, 0xfd, 0xbc, 0x9f, 0x24, 0x94, 0xf4, 0x59, 0x3d, 0x7d, 0xb6, 0x45,
+ 0x56, 0x30, 0xd5, 0x5b, 0x75, 0xf5, 0x24, 0x35, 0xaf, 0xf0, 0x8e, 0x64,
+ 0x2c, 0xae, 0xaf, 0xd4, 0xea, 0xbf, 0x0e, 0xda, 0xc5, 0x96, 0x39, 0xf0,
+ 0x03, 0x60, 0x83, 0x51, 0x92, 0x25, 0xbf, 0x76, 0xaa, 0x8b, 0x7a, 0x97,
+ 0x4f, 0xb0, 0xbd, 0xa6, 0x4d, 0x6e, 0xd4, 0xbd, 0xc1, 0xcc, 0x6b, 0xc1,
+ 0xe5, 0xbc, 0xbb, 0xc1, 0x13, 0x3d, 0xd8, 0xe7, 0x0d, 0xde, 0x8d, 0x6e,
+ 0x69, 0xe4, 0x1d, 0xe5, 0xf1, 0xaf, 0x60, 0x52, 0x53, 0x93, 0xe9, 0xb9,
+ 0xbe, 0xd7, 0x08, 0xd7, 0x50, 0x7b, 0x29, 0x57, 0x53, 0x83, 0x9a, 0xed,
+ 0x62, 0x24, 0x7d, 0xe5, 0x20, 0xeb, 0x9f, 0x61, 0x2f, 0x12, 0xe9, 0xd2,
+ 0x04, 0x22, 0x34, 0x8f, 0x5a, 0xb6, 0x4c, 0x35, 0xa2, 0x0c, 0xf9, 0x8d,
+ 0x74, 0x49, 0x4c, 0x2a, 0x7d, 0x94, 0xda, 0x0b, 0x4e, 0xdb, 0x1a, 0xf9,
+ 0x0e, 0x00, 0x13, 0xcc, 0xc7, 0x81, 0x5b, 0xb4, 0xe7, 0xdd, 0x6d, 0x6c,
+ 0x61, 0xb1, 0xc0, 0x03, 0x3b, 0x85, 0x64, 0x7c, 0xa5, 0xba, 0x85, 0x8a,
+ 0x5b, 0x58, 0xb8, 0x6d, 0xfa, 0x0d, 0x78, 0x13, 0xc9, 0x27, 0xc5, 0x5e,
+ 0xa6, 0xca, 0xc0, 0x96, 0xbb, 0x6b, 0x9d, 0x04, 0x34, 0x3b, 0x66, 0x9f,
+ 0x71, 0xd5, 0x25, 0x3a, 0xd8, 0xfd, 0x52, 0xca, 0x1c, 0x5a, 0x72, 0x9c,
+ 0xd2, 0xdd, 0x18, 0x5c, 0x0d, 0x8d, 0x27, 0xce, 0x5a, 0x15, 0xaa, 0xfa,
+ 0xde, 0x53, 0xdc, 0x2c, 0xb5, 0xb5, 0x90, 0xcf, 0x6e, 0xf9, 0x1b, 0x09,
+ 0x3e, 0x02, 0x77, 0x2c, 0x4a, 0xf3, 0x36, 0x9f, 0xd1, 0x7a, 0x9e, 0xa0,
+ 0x90, 0xe2, 0xc2, 0xd2, 0x36, 0xf8, 0xcc, 0x49, 0xd7, 0xc9, 0x12, 0xee,
+ 0xa2, 0x76, 0xc5, 0x9e, 0xa1, 0xaf, 0x4d, 0x1f, 0x59, 0xe4, 0x77, 0x0e,
+ 0x0e, 0x6a, 0x4a, 0x75, 0xef, 0xea, 0x79, 0xd6, 0x02, 0x48, 0xb2, 0x8f,
+ 0x69, 0x70, 0xad, 0xac, 0xd0, 0x80, 0x62, 0x7e, 0x9b, 0x4a, 0x7a, 0xba,
+ 0xb6, 0x45, 0x7b, 0x2b, 0x25, 0x8f, 0x2e, 0x99, 0xdc, 0xe2, 0xc8, 0xf8,
+ 0xfd, 0x21, 0xdf, 0xc5, 0x63, 0x53, 0x95, 0x56, 0x43, 0x43, 0xdf, 0xea,
+ 0x31, 0x84, 0x43, 0x4b, 0x6b, 0x71, 0x69, 0xf8, 0x7b, 0x8f, 0xe2, 0x56,
+ 0x8e, 0x1b, 0xf1, 0x2e, 0x33, 0x40, 0x79, 0xdb, 0xf4, 0x5c, 0x6a, 0x3b,
+ 0x5b, 0xe3, 0xab, 0x81, 0xf0, 0x49, 0x4d, 0xd6, 0xf5, 0xab, 0x40, 0x86,
+ 0xb0, 0x1b, 0x01, 0xda, 0x7f, 0x48, 0xc0, 0xcd, 0x07, 0x3a, 0x9e, 0xde,
+ 0x49, 0xac, 0xeb, 0x37, 0x3e, 0xf2, 0xcb, 0x6c, 0x6d, 0x4c, 0x6c, 0x01,
+ 0x00, 0xc1, 0x77, 0x24, 0xee, 0x2d, 0x8d, 0x3e, 0x28, 0x5f, 0x68, 0xf4,
+ 0x9c, 0xe2, 0x09, 0x75, 0x6e, 0x74, 0x0d, 0xc0, 0xb4, 0x8f, 0x13, 0xc7,
+ 0x05, 0x51, 0xbe, 0xf3, 0x6b, 0x9c, 0xdc, 0x6b, 0x48, 0xda, 0x64, 0xb7,
+ 0x7b, 0xbe, 0xef, 0x77, 0xf7, 0x24, 0xa7, 0x57, 0xf6, 0xb6, 0x49, 0x05,
+ 0xae, 0x10, 0xcf, 0xf4, 0x8c, 0x6e, 0xe3, 0x1f, 0xd9, 0xdc, 0xa1, 0x8d,
+ 0x98, 0xfa, 0x85, 0x86, 0xa7, 0x1b, 0x5e, 0xe7, 0x6f, 0x8b, 0x37, 0x6d,
+ 0x01, 0xc4, 0x4c, 0x69, 0x31, 0xe4, 0xb1, 0xe8, 0x07, 0x68, 0x70, 0x6b,
+ 0xc3, 0xc1, 0x20, 0x6d, 0x0d, 0x22, 0x49, 0x93, 0x06, 0x00, 0xfc, 0xaa,
+ 0xdd, 0x59, 0x57, 0x33, 0xd4, 0x05, 0xa1, 0x84, 0xfb, 0x64, 0x82, 0x6c,
+ 0xdd, 0x1d, 0xf6, 0xca, 0x4a, 0x75, 0x8f, 0x50, 0xb4, 0x99, 0x96, 0xba,
+ 0x3b, 0x34, 0x49, 0xff, 0x00, 0xaa, 0x41, 0xfd, 0xb2, 0xc6, 0xdc, 0xe7,
+ 0x3b, 0xd8, 0xc3, 0x07, 0x6b, 0x83, 0x9c, 0xed, 0xdd, 0xe3, 0x64, 0xe9,
+ 0xf2, 0x54, 0x3e, 0xd5, 0xf6, 0x7c, 0x7d, 0xd6, 0x07, 0x58, 0xf6, 0x89,
+ 0x7b, 0xfd, 0x32, 0xc7, 0x69, 0xc7, 0x60, 0x87, 0xf6, 0xb9, 0x7b, 0x89,
+ 0x0f, 0x75, 0x7c, 0x81, 0x1c, 0x69, 0xc8, 0x92, 0x3f, 0x22, 0x4a, 0x75,
+ 0x87, 0x5c, 0x3e, 0xb3, 0x59, 0xe8, 0x3b, 0x61, 0x04, 0xee, 0x21, 0xcd,
+ 0x27, 0x8d, 0x1a, 0xd3, 0xaf, 0xde, 0x8a, 0x7a, 0xbb, 0x5a, 0x09, 0xfb,
+ 0x3b, 0xa5, 0xda, 0x46, 0xf6, 0x8d, 0x47, 0x63, 0xb9, 0x61, 0xd9, 0x9a,
+ 0x40, 0xd2, 0x60, 0x09, 0xdc, 0x5c, 0xd2, 0x3c, 0x87, 0xb4, 0x21, 0x57,
+ 0x94, 0xd6, 0x56, 0x5c, 0xe1, 0x21, 0xda, 0x8f, 0x6b, 0x5c, 0x24, 0xf8,
+ 0xb9, 0xc6, 0x4a, 0x4a, 0x75, 0xaa, 0xce, 0x75, 0x8d, 0x75, 0x97, 0x54,
+ 0xd0, 0x41, 0x30, 0x5a, 0xf0, 0x19, 0x24, 0xf9, 0xa8, 0xd1, 0xd4, 0xab,
+ 0x25, 0xe6, 0xea, 0x1c, 0x24, 0x6d, 0x6c, 0xbb, 0x74, 0x37, 0xc1, 0xba,
+ 0x78, 0xf8, 0x2c, 0xc3, 0x91, 0x55, 0x8d, 0x32, 0x5e, 0x58, 0x7d, 0xc4,
+ 0x02, 0x06, 0x83, 0xf2, 0x26, 0x76, 0x55, 0x7b, 0x1a, 0xfa, 0xd9, 0x2e,
+ 0x27, 0x49, 0x63, 0x77, 0x47, 0x72, 0x3e, 0x5e, 0x29, 0x29, 0xe8, 0x2b,
+ 0xea, 0x98, 0xb5, 0xd6, 0xd1, 0x6b, 0x5e, 0xd0, 0xdd, 0x0b, 0x88, 0xfc,
+ 0x7f, 0xd4, 0x23, 0x37, 0xa9, 0xf4, 0xf2, 0x43, 0x7d, 0x50, 0x26, 0x41,
+ 0x0e, 0x99, 0x1d, 0xff, 0x00, 0x8a, 0xc3, 0x19, 0x6c, 0x24, 0x8d, 0xae,
+ 0x7b, 0x04, 0x6a, 0xe3, 0x13, 0xf9, 0x14, 0x2b, 0xea, 0x75, 0x02, 0xe6,
+ 0xb8, 0x80, 0x01, 0xda, 0x1a, 0x08, 0xed, 0xcf, 0xdc, 0x92, 0x9e, 0x8f,
+ 0xed, 0x38, 0xd5, 0x54, 0x2e, 0x75, 0x8d, 0x75, 0x63, 0x40, 0xe1, 0xae,
+ 0xbf, 0x29, 0x41, 0x1d, 0x6b, 0xa6, 0xec, 0x07, 0xd5, 0x24, 0x3b, 0x4d,
+ 0x5a, 0x63, 0xe7, 0xe0, 0xb0, 0x2c, 0xb1, 0x8e, 0xb7, 0xd5, 0x69, 0x2d,
+ 0x93, 0x24, 0x35, 0xc7, 0xdd, 0xdb, 0xf9, 0x5f, 0x91, 0x2b, 0x32, 0x30,
+ 0xda, 0x3d, 0xf5, 0x93, 0x6c, 0x43, 0x01, 0x9d, 0x52, 0x53, 0xbd, 0x97,
+ 0xd4, 0x71, 0x2b, 0xb1, 0xb5, 0x9b, 0x1a, 0xed, 0xe0, 0x48, 0x6c, 0x97,
+ 0x80, 0x78, 0x3e, 0x10, 0x83, 0x6f, 0x52, 0xc1, 0xdc, 0x4d, 0x9b, 0x83,
+ 0x43, 0x77, 0x07, 0x96, 0xc0, 0xfc, 0x57, 0x3d, 0x75, 0xcc, 0xad, 0xaf,
+ 0x0c, 0xd5, 0xcf, 0xd6, 0x58, 0xd1, 0x3e, 0x52, 0xe7, 0x26, 0x63, 0xdb,
+ 0x6d, 0x70, 0xfa, 0xdc, 0xcd, 0x0e, 0xdd, 0xd6, 0x11, 0x3e, 0x5a, 0x14,
+ 0x94, 0xe6, 0xf5, 0xdb, 0x2b, 0xbb, 0x3d, 0xf7, 0x54, 0x65, 0x86, 0x36,
+ 0x93, 0xdc, 0x00, 0x15, 0x4a, 0x1c, 0x3d, 0x6a, 0x8d, 0x83, 0x7b, 0x45,
+ 0x86, 0x58, 0x34, 0x91, 0xfc, 0x11, 0x73, 0xc6, 0xdc, 0x90, 0xd0, 0x20,
+ 0x46, 0xbf, 0x0e, 0xda, 0xea, 0x83, 0x5b, 0x00, 0xb0, 0x90, 0x63, 0x57,
+ 0x19, 0x49, 0x48, 0x49, 0xdc, 0x1d, 0xac, 0x9e, 0xde, 0x3a, 0x4c, 0x2e,
+ 0xa7, 0xea, 0xe7, 0xb7, 0x06, 0x89, 0xd0, 0x16, 0xbe, 0x63, 0xb9, 0x9d,
+ 0x17, 0x2a, 0x2b, 0x73, 0x9b, 0x00, 0x6b, 0xa9, 0x3f, 0x00, 0x4a, 0xd5,
+ 0xe9, 0x99, 0xd9, 0x94, 0xb6, 0xb1, 0x53, 0xbf, 0x47, 0x13, 0x07, 0x89,
+ 0xe7, 0x8e, 0xfe, 0x69, 0x29, 0xec, 0x5a, 0xdb, 0x1d, 0x3e, 0xe0, 0xd7,
+ 0x09, 0xda, 0xd7, 0x70, 0x7c, 0xf9, 0x44, 0x6e, 0x65, 0x0d, 0xa8, 0x38,
+ 0xbc, 0x36, 0xb6, 0xfd, 0x27, 0x38, 0x80, 0x07, 0x91, 0xd7, 0xc5, 0x62,
+ 0xe6, 0x75, 0x8c, 0x1c, 0xac, 0x46, 0xb3, 0x69, 0xf5, 0xc3, 0x9a, 0x5c,
+ 0xd0, 0xc7, 0x6c, 0x3f, 0xbc, 0x5a, 0xed, 0x3e, 0x5a, 0xaa, 0xb6, 0x3a,
+ 0xbb, 0x58, 0xe3, 0x73, 0xcf, 0xb8, 0x06, 0x80, 0xf3, 0xa0, 0x0d, 0xe0,
+ 0x06, 0xf8, 0x7c, 0xd2, 0x53, 0xb9, 0x67, 0x53, 0xc3, 0x39, 0x4c, 0x02,
+ 0xd6, 0x02, 0xd0, 0x03, 0x6c, 0x0d, 0x3b, 0xa5, 0xc6, 0x36, 0xef, 0xda,
+ 0x44, 0x78, 0xa9, 0xb0, 0xe0, 0x97, 0x0b, 0x9b, 0x6b, 0x49, 0xf7, 0x00,
+ 0xed, 0xc0, 0x01, 0xdc, 0xf6, 0xf2, 0x5c, 0xfd, 0x76, 0x1b, 0x1e, 0x2b,
+ 0x63, 0x41, 0x63, 0x81, 0x04, 0x82, 0x49, 0xf9, 0x6a, 0xa6, 0xfd, 0xfb,
+ 0x76, 0xb4, 0xee, 0x23, 0x96, 0x82, 0x74, 0x3e, 0x3b, 0x64, 0xa4, 0xa7,
+ 0xa4, 0x6f, 0xa5, 0x6c, 0xb9, 0x8e, 0xde, 0xd3, 0xa4, 0x80, 0x08, 0xd3,
+ 0xfb, 0x2a, 0xb7, 0xa7, 0xd2, 0xbe, 0xd1, 0xe9, 0xc5, 0x1e, 0xb6, 0xe8,
+ 0xdb, 0xb5, 0x9b, 0xf7, 0x73, 0xc4, 0x4f, 0x9a, 0xc0, 0x65, 0xd6, 0xd4,
+ 0x21, 0xaf, 0xb0, 0x07, 0x34, 0x82, 0x1a, 0xe2, 0x1a, 0x0c, 0xf3, 0x0d,
+ 0xe4, 0x14, 0xfe, 0xab, 0xb6, 0x6f, 0x81, 0xea, 0x71, 0xf3, 0x88, 0xdd,
+ 0xb7, 0x94, 0x94, 0xe6, 0x0a, 0x59, 0x03, 0x65, 0x4c, 0xd2, 0x34, 0x0d,
+ 0x09, 0x9a, 0xd2, 0x2e, 0xb0, 0x08, 0x6c, 0xb5, 0x8e, 0x6c, 0x76, 0x91,
+ 0xb4, 0xff, 0x00, 0xd4, 0xab, 0xb5, 0xd2, 0x09, 0xf5, 0x07, 0x3f, 0x47,
+ 0xca, 0x10, 0x2e, 0x6b, 0x46, 0x4d, 0x50, 0x7e, 0x93, 0x5e, 0xc3, 0xa6,
+ 0x92, 0xd2, 0x1d, 0xff, 0x00, 0x7e, 0x49, 0x48, 0xc8, 0x74, 0x01, 0x3e,
+ 0x3c, 0x68, 0x9a, 0x5d, 0x02, 0x4c, 0xf9, 0x9e, 0x55, 0x8d, 0x9a, 0x68,
+ 0x3f, 0xd7, 0xc4, 0xa1, 0x59, 0x4b, 0x83, 0x41, 0x1a, 0x13, 0xdf, 0xfb,
+ 0x92, 0x53, 0x55, 0xee, 0x70, 0x74, 0x34, 0xc6, 0x9f, 0x34, 0x4c, 0x2d,
+ 0x8e, 0xc8, 0x6f, 0xa8, 0x03, 0xb7, 0x7b, 0x40, 0xef, 0xaa, 0x6b, 0x69,
+ 0x78, 0x7b, 0x5d, 0xa3, 0x41, 0x91, 0xe2, 0x4f, 0x74, 0xec, 0xa8, 0x31,
+ 0xed, 0x78, 0x1f, 0x40, 0x83, 0x25, 0x25, 0x34, 0xb3, 0x05, 0x95, 0x1c,
+ 0x8a, 0x4b, 0xa4, 0x8b, 0x40, 0x67, 0x90, 0x24, 0x15, 0x0c, 0xdc, 0xab,
+ 0xb0, 0xb3, 0x5d, 0x5b, 0x0e, 0xe6, 0x30, 0x36, 0x03, 0xa7, 0xbb, 0x44,
+ 0xf1, 0x0a, 0xd7, 0x51, 0xac, 0x7d, 0xb0, 0xba, 0x62, 0x5d, 0x5b, 0x9d,
+ 0x3a, 0xf0, 0x7f, 0xd8, 0xa8, 0x75, 0x93, 0x39, 0x85, 0xda, 0xea, 0xd6,
+ 0xf3, 0xa7, 0x64, 0x94, 0x87, 0xed, 0xa4, 0x82, 0x1d, 0x5b, 0x49, 0x3c,
+ 0xb8, 0x97, 0x4f, 0x33, 0xfb, 0xc8, 0x9f, 0xb4, 0xde, 0x2a, 0x75, 0x42,
+ 0xa6, 0x6d, 0x78, 0x03, 0xb9, 0x88, 0xee, 0xd9, 0x3c, 0xaa, 0x49, 0x24,
+ 0xa7, 0x45, 0x9d, 0x66, 0xf1, 0x1b, 0xd8, 0x1e, 0xd1, 0xf9, 0xb2, 0x40,
+ 0x45, 0xa7, 0xeb, 0x0e, 0x4d, 0x2e, 0xd1, 0xa4, 0xd7, 0xac, 0xb3, 0x79,
+ 0x03, 0x5f, 0x82, 0xc9, 0x49, 0x25, 0x3d, 0x2d, 0x5f, 0x5a, 0xb1, 0xf6,
+ 0x01, 0x65, 0x0f, 0x0e, 0x1f, 0xca, 0xde, 0x27, 0xc7, 0xdc, 0x83, 0x7f,
+ 0xd6, 0x1c, 0x7b, 0x9e, 0x5f, 0xb2, 0xc6, 0x39, 0xda, 0x69, 0xb4, 0xfc,
+ 0xff, 0x00, 0x35, 0x60, 0x24, 0x92, 0x9d, 0xba, 0xfa, 0xf5, 0x4c, 0xd0,
+ 0xd6, 0xf7, 0x6b, 0xf4, 0x8b, 0xcf, 0x1f, 0xd5, 0x98, 0x94, 0x67, 0x7d,
+ 0x65, 0x61, 0x90, 0xd6, 0xbd, 0x81, 0xdc, 0x91, 0x04, 0x8f, 0x86, 0xe2,
+ 0x57, 0x3c, 0x92, 0x4a, 0x7a, 0x46, 0x7d, 0x64, 0xa0, 0xd6, 0x6a, 0x7e,
+ 0xf6, 0x83, 0x32, 0x60, 0x03, 0xf8, 0x4f, 0xe4, 0x45, 0x7f, 0x5b, 0xc1,
+ 0xb1, 0xa0, 0xb2, 0xe2, 0x1f, 0xf9, 0xc1, 0xec, 0x1f, 0x81, 0xd1, 0x72,
+ 0xc9, 0x24, 0xa7, 0x79, 0xd9, 0xf4, 0xc8, 0x71, 0xbc, 0x07, 0x71, 0x0d,
+ 0x80, 0xd0, 0xde, 0x60, 0x6d, 0x46, 0x6f, 0x57, 0xc2, 0x30, 0x7d, 0x8c,
+ 0x2d, 0xf3, 0x2e, 0xdc, 0x7e, 0x63, 0x4f, 0xbd, 0x73, 0x69, 0x24, 0xa7,
+ 0xa7, 0xab, 0xac, 0x63, 0x11, 0xba, 0xc7, 0xea, 0x4f, 0x01, 0xcd, 0x1a,
+ 0x7c, 0x0f, 0x9f, 0x8a, 0xb0, 0x7a, 0x9e, 0x04, 0x92, 0xdb, 0x5a, 0x4c,
+ 0xc1, 0x2f, 0x2d, 0xff, 0x00, 0xa9, 0x0e, 0x82, 0xb9, 0x04, 0x92, 0x53,
+ 0xd8, 0x1e, 0xa5, 0x53, 0xdd, 0xfc, 0xfd, 0x7b, 0x00, 0xe0, 0x3d, 0x8d,
+ 0x71, 0xfc, 0x7c, 0x7c, 0xd2, 0xab, 0x27, 0x1a, 0xba, 0x49, 0x16, 0x34,
+ 0x3c, 0x02, 0xe8, 0xdc, 0xcf, 0xfc, 0x94, 0x12, 0xb8, 0xf4, 0x92, 0x53,
+ 0xd8, 0xe3, 0x75, 0x3e, 0x9c, 0xef, 0x7b, 0xae, 0xda, 0x5a, 0x34, 0x91,
+ 0xb4, 0x98, 0xf0, 0xda, 0x0a, 0x35, 0x9d, 0x57, 0xa7, 0xd2, 0xe9, 0x73,
+ 0xc1, 0x25, 0xb2, 0x09, 0x93, 0x33, 0xd9, 0x71, 0x09, 0x24, 0xa7, 0xb2,
+ 0xbe, 0xea, 0xef, 0xa1, 0xe6, 0xb7, 0x36, 0xba, 0xde, 0x3e, 0x91, 0x78,
+ 0x61, 0x70, 0xf0, 0xf1, 0x40, 0xc6, 0xbb, 0x0a, 0xad, 0xc4, 0x5c, 0xd7,
+ 0x59, 0x64, 0x17, 0x00, 0x77, 0xc1, 0x68, 0xdb, 0xa0, 0x9e, 0x17, 0x28,
+ 0xae, 0x74, 0xc0, 0x4d, 0xe7, 0x49, 0xf6, 0x98, 0xf8, 0x92, 0x12, 0x53,
+ 0xa5, 0x90, 0xfb, 0x1c, 0xf7, 0x0d, 0xb1, 0x24, 0xf7, 0x98, 0x03, 0x8f,
+ 0xc0, 0xa9, 0x32, 0x64, 0x02, 0x3b, 0x96, 0x8f, 0x1d, 0x51, 0x29, 0x6e,
+ 0xe7, 0xbc, 0x38, 0xeb, 0xbc, 0x8d, 0x78, 0xd0, 0x35, 0x20, 0x58, 0xdb,
+ 0x5a, 0x46, 0xa6, 0x5c, 0x41, 0xf2, 0xd4, 0x24, 0xa6, 0x16, 0x52, 0x1b,
+ 0x48, 0xd3, 0x51, 0x32, 0x7c, 0xa7, 0x88, 0x4b, 0x11, 0xd6, 0x16, 0x06,
+ 0xb5, 0xb3, 0x01, 0xa4, 0x6a, 0x43, 0x7e, 0xf1, 0xa2, 0x77, 0x9d, 0x2c,
+ 0x9d, 0x3d, 0xc4, 0x7e, 0x2b, 0x5f, 0xa4, 0x60, 0xb7, 0x3f, 0xa7, 0x0a,
+ 0x6b, 0x73, 0x19, 0x92, 0xc7, 0x87, 0x03, 0xcb, 0x9a, 0xd1, 0x1a, 0x11,
+ 0xe0, 0x52, 0x52, 0x1a, 0x6b, 0x01, 0xbb, 0x9a, 0xdb, 0x2b, 0xdf, 0xf4,
+ 0x64, 0x0e, 0x0f, 0x3a, 0x82, 0xac, 0x3d, 0xb6, 0x35, 0xc7, 0xde, 0xd6,
+ 0xb4, 0x10, 0x41, 0x27, 0x53, 0x01, 0x0a, 0xe6, 0xe7, 0x57, 0x63, 0xe9,
+ 0x34, 0xbe, 0xca, 0xa8, 0x79, 0x68, 0xb5, 0xb5, 0xb0, 0x0d, 0x3b, 0xed,
+ 0x82, 0x7b, 0x21, 0x8e, 0xa0, 0x2b, 0xa9, 0xc1, 0xec, 0x6e, 0xe6, 0x99,
+ 0x82, 0xdd, 0xaf, 0x76, 0xe3, 0x26, 0x37, 0x86, 0x84, 0x94, 0xcc, 0x58,
+ 0xed, 0xac, 0x2d, 0xb0, 0xb8, 0xbb, 0xe8, 0xfb, 0x9a, 0xc1, 0xbb, 0x9d,
+ 0x74, 0x2a, 0x6c, 0xa2, 0x08, 0x79, 0x21, 0xa4, 0x99, 0x71, 0xd8, 0x48,
+ 0x9e, 0x4f, 0xb9, 0xb1, 0x2a, 0xaf, 0xdb, 0xb1, 0x4e, 0xb5, 0x1d, 0x9a,
+ 0x6a, 0xfb, 0x2b, 0x6b, 0x64, 0xf9, 0x16, 0x6e, 0x28, 0x87, 0x22, 0xb7,
+ 0xb4, 0xea, 0x21, 0xa4, 0x0d, 0x06, 0x84, 0x78, 0xea, 0xd6, 0x94, 0x94,
+ 0x91, 0xfe, 0x98, 0x7b, 0x60, 0x92, 0xc9, 0x9d, 0xcc, 0x9f, 0x84, 0x13,
+ 0xb7, 0xf8, 0xa2, 0x4b, 0xbc, 0xf6, 0x73, 0x1b, 0xf5, 0xf8, 0x4a, 0xaa,
+ 0xfb, 0xec, 0xaa, 0xa9, 0xb6, 0x96, 0x0a, 0x9a, 0x74, 0x3a, 0x97, 0x09,
+ 0xd3, 0x9e, 0x20, 0xf8, 0x4a, 0x8f, 0xdb, 0x7a, 0x7f, 0x3e, 0xa3, 0xbd,
+ 0x4f, 0x1d, 0xa2, 0x3f, 0xcd, 0xdd, 0xc2, 0x4a, 0x4e, 0xd7, 0x08, 0x87,
+ 0x38, 0x80, 0x75, 0x20, 0x0e, 0x15, 0x4c, 0x87, 0x1f, 0xb5, 0x52, 0xe0,
+ 0x7d, 0x8c, 0x7c, 0x47, 0x1a, 0xb8, 0x16, 0xca, 0xb9, 0x00, 0xd6, 0x5a,
+ 0x7c, 0x04, 0xb4, 0x7f, 0x7a, 0xad, 0x93, 0x51, 0x6d, 0x0e, 0xb1, 0xa3,
+ 0x56, 0xed, 0x7b, 0x47, 0x3f, 0x45, 0xcd, 0x77, 0xe4, 0x09, 0x29, 0x30,
+ 0x96, 0xbd, 0x8c, 0x22, 0x77, 0x93, 0xc7, 0x92, 0x56, 0x03, 0xc7, 0x24,
+ 0x72, 0x7b, 0x05, 0x29, 0x1b, 0x84, 0x34, 0xf3, 0xa9, 0x8e, 0xc4, 0x24,
+ 0xf0, 0xd2, 0x7e, 0x89, 0x88, 0x80, 0x27, 0x93, 0xe2, 0x92, 0x9a, 0xb7,
+ 0xc0, 0xda, 0xee, 0x60, 0xea, 0xe3, 0xd9, 0x2d, 0xb2, 0x67, 0xe9, 0x48,
+ 0xd3, 0xc1, 0x4b, 0x21, 0x8e, 0x75, 0x71, 0x1e, 0xf1, 0x05, 0xad, 0xf3,
+ 0x4d, 0x43, 0x6c, 0xf4, 0xda, 0x1e, 0x43, 0x5c, 0x39, 0x13, 0xf8, 0x4a,
+ 0x4a, 0x6a, 0xf5, 0x46, 0xb8, 0x5a, 0xdb, 0x48, 0x80, 0xf0, 0xd2, 0x0f,
+ 0xdd, 0xfc, 0x56, 0x67, 0x55, 0x03, 0xd4, 0x69, 0xf1, 0x68, 0x5a, 0xfd,
+ 0x61, 0xad, 0xf4, 0x18, 0x41, 0x92, 0xc0, 0xd0, 0x7e, 0x4e, 0x8d, 0x3e,
+ 0xf5, 0x93, 0xd4, 0xde, 0x1e, 0x2b, 0x70, 0x33, 0xec, 0x68, 0x3f, 0x20,
+ 0x92, 0x9c, 0xf4, 0x92, 0x49, 0x25, 0x29, 0x24, 0x92, 0x49, 0x4a, 0x49,
+ 0x24, 0x92, 0x52, 0x92, 0x49, 0x24, 0x94, 0xa5, 0x26, 0x31, 0xf6, 0x3c,
+ 0x57, 0x5b, 0x4b, 0x9e, 0xe3, 0x0d, 0x68, 0x12, 0x49, 0x51, 0x5d, 0xaf,
+ 0xd4, 0x9e, 0x88, 0xc7, 0xd4, 0x73, 0xef, 0x6e, 0xaf, 0xd1, 0x87, 0xf7,
+ 0x59, 0xe5, 0xfd, 0x6f, 0xc8, 0x92, 0x9e, 0x6b, 0x2b, 0xa0, 0x75, 0x7c,
+ 0x4a, 0x45, 0xf7, 0xe3, 0x38, 0x56, 0x7b, 0xb6, 0x1d, 0x1f, 0x1d, 0xb3,
+ 0x0a, 0x95, 0xb4, 0x5d, 0x4c, 0x0b, 0xab, 0x75, 0x7b, 0x84, 0xb7, 0x70,
+ 0x2d, 0x91, 0xe2, 0x25, 0x7b, 0x50, 0x60, 0x60, 0x23, 0x6f, 0xb4, 0x0e,
+ 0x3c, 0x63, 0xc1, 0x72, 0xff, 0x00, 0x5b, 0x7a, 0x5d, 0x59, 0x98, 0xaf,
+ 0x73, 0x1a, 0x3d, 0x4a, 0xc1, 0x75, 0x6e, 0x03, 0xc3, 0xe1, 0xe2, 0x92,
+ 0x9f, 0x3a, 0x49, 0x24, 0x92, 0x52, 0x92, 0x49, 0x24, 0x94, 0xa4, 0x92,
+ 0x49, 0x25, 0x29, 0x5f, 0xe9, 0x40, 0x8b, 0x4b, 0x87, 0x24, 0x47, 0xe2,
+ 0x15, 0x05, 0xa3, 0xd2, 0xdb, 0xcb, 0xa6, 0x20, 0x4f, 0xdc, 0x52, 0x53,
+ 0xa5, 0x5b, 0x83, 0x8b, 0xde, 0x34, 0x6b, 0xad, 0x7f, 0x97, 0x01, 0xa0,
+ 0xe8, 0x8e, 0x03, 0x5b, 0xbc, 0xb9, 0xa0, 0xba, 0x07, 0x6e, 0x00, 0x25,
+ 0x47, 0x13, 0x75, 0x80, 0xd8, 0xf1, 0xfe, 0x1a, 0xcd, 0x34, 0xd4, 0xfb,
+ 0x10, 0xf2, 0x8b, 0x98, 0xd7, 0x6d, 0x3a, 0xbb, 0x68, 0x3e, 0x10, 0x37,
+ 0x68, 0x92, 0x99, 0x64, 0x30, 0x6e, 0x73, 0x04, 0x77, 0x90, 0x3b, 0x70,
+ 0x56, 0xf7, 0xd5, 0x8a, 0x1e, 0xec, 0x56, 0xdc, 0x08, 0x0d, 0xc7, 0x7f,
+ 0x60, 0x66, 0x1d, 0x1b, 0xb8, 0xe7, 0x8d, 0x02, 0xc1, 0xb1, 0xaf, 0x67,
+ 0x03, 0x5f, 0x09, 0xee, 0x49, 0x5b, 0xdd, 0x0c, 0x38, 0x74, 0x7c, 0x8b,
+ 0xcb, 0x9c, 0xda, 0x9a, 0xc2, 0xd2, 0xc6, 0x90, 0xcd, 0xee, 0x22, 0x1b,
+ 0x2e, 0x3c, 0x6b, 0xdd, 0x25, 0x3a, 0x77, 0x75, 0x5c, 0x6c, 0x56, 0x9a,
+ 0xcb, 0xde, 0xe7, 0xb4, 0x19, 0x2d, 0x6f, 0x9f, 0x87, 0x2b, 0x3b, 0x37,
+ 0xa5, 0x3f, 0xac, 0x86, 0x58, 0xfc, 0x67, 0xb8, 0x41, 0xdb, 0x75, 0x80,
+ 0x35, 0xd0, 0xed, 0x63, 0x90, 0xad, 0x3a, 0x8a, 0xa8, 0x6d, 0x35, 0xd7,
+ 0x55, 0x8f, 0xc8, 0x6b, 0x09, 0xc8, 0x36, 0x92, 0xe2, 0x08, 0x00, 0x35,
+ 0xb2, 0x74, 0x76, 0xaa, 0x2c, 0xf5, 0x5b, 0xf9, 0xb6, 0xb4, 0x12, 0x43,
+ 0x5c, 0xc7, 0x6d, 0x00, 0xf7, 0xe1, 0x25, 0x3c, 0xef, 0x54, 0xfa, 0xbd,
+ 0x4f, 0x4a, 0x15, 0xbe, 0xd6, 0x65, 0x91, 0x6c, 0xed, 0x34, 0x16, 0xd8,
+ 0x01, 0x1d, 0x8e, 0xba, 0x2c, 0xf1, 0x46, 0x16, 0xd7, 0x83, 0x87, 0x9d,
+ 0x63, 0xdd, 0x1b, 0x6c, 0x78, 0x87, 0x37, 0xe0, 0x06, 0x86, 0x7c, 0xd7,
+ 0x4d, 0x90, 0xfc, 0x97, 0xde, 0x5a, 0xef, 0x51, 0xce, 0x6c, 0x0f, 0x7b,
+ 0x8b, 0x87, 0xf9, 0xc6, 0x02, 0x21, 0xb9, 0xd5, 0x00, 0xdb, 0x2e, 0x63,
+ 0x49, 0x3e, 0xd0, 0xd1, 0xbb, 0xf1, 0x29, 0x29, 0xe6, 0x29, 0xa4, 0x02,
+ 0x0b, 0x70, 0xf2, 0xc1, 0x1c, 0x02, 0x26, 0x7e, 0x3c, 0x2b, 0x5f, 0x60,
+ 0xbf, 0xec, 0xff, 0x00, 0x6a, 0xfb, 0x09, 0xd9, 0xbe, 0x7d, 0x3f, 0x76,
+ 0xef, 0x08, 0x8d, 0xd3, 0x0b, 0xa2, 0xfb, 0x48, 0x60, 0x05, 0xee, 0xba,
+ 0xcd, 0xc6, 0x1b, 0xb2, 0x8b, 0x1f, 0x24, 0xf9, 0xb5, 0x80, 0x29, 0x7a,
+ 0xf6, 0x7a, 0x31, 0xf6, 0x5c, 0x98, 0xf5, 0x27, 0x67, 0xa3, 0x66, 0xfe,
+ 0x3c, 0x36, 0x7f, 0x1f, 0x9a, 0x4a, 0x70, 0xd8, 0xe3, 0xcc, 0xc0, 0x88,
+ 0x8d, 0x42, 0x1b, 0x6e, 0xb3, 0x7c, 0x06, 0x82, 0xce, 0x5c, 0x67, 0x59,
+ 0x1a, 0x42, 0x41, 0xc1, 0xc0, 0x39, 0xa2, 0x58, 0x78, 0x20, 0xe8, 0x93,
+ 0x88, 0xd6, 0x3e, 0x90, 0x12, 0xe9, 0xe0, 0x0f, 0x8a, 0x4a, 0x61, 0x77,
+ 0xaa, 0xe2, 0xdd, 0x8f, 0xdb, 0x07, 0xdc, 0x20, 0x6a, 0x3e, 0x2a, 0x5b,
+ 0x89, 0x76, 0xe1, 0xa9, 0x6f, 0x07, 0xcd, 0x45, 0xcd, 0x78, 0x1b, 0x88,
+ 0x81, 0xce, 0xe9, 0x11, 0xf8, 0x95, 0x37, 0x31, 0xec, 0x0d, 0x70, 0x23,
+ 0xdd, 0xc0, 0xe0, 0xeb, 0xe5, 0x12, 0x92, 0x99, 0xef, 0x7d, 0x8e, 0x1b,
+ 0x8f, 0xbb, 0xc5, 0x43, 0x32, 0xb6, 0x6d, 0x2c, 0xb7, 0xe0, 0xe0, 0x0c,
+ 0x41, 0x6f, 0xe7, 0x4a, 0x8e, 0x3d, 0xb6, 0xb7, 0x25, 0xcc, 0xb0, 0x7a,
+ 0x6c, 0x2d, 0x90, 0xe2, 0x44, 0xb8, 0x1d, 0x08, 0xd7, 0x85, 0x62, 0xd6,
+ 0xb2, 0xea, 0x2a, 0xba, 0xa7, 0x07, 0x35, 0xc4, 0xb2, 0xda, 0xdd, 0x21,
+ 0xcd, 0x23, 0x91, 0xe7, 0xfd, 0xc9, 0x29, 0xcf, 0xea, 0x6e, 0x0f, 0xc6,
+ 0x04, 0x6b, 0xa3, 0x9a, 0x08, 0xf8, 0x07, 0x7f, 0x05, 0x8f, 0x90, 0xe7,
+ 0x3b, 0x1a, 0xa7, 0x38, 0x47, 0x60, 0x7c, 0x40, 0x5b, 0x79, 0xa3, 0x6e,
+ 0x3d, 0x80, 0x30, 0xb5, 0xa0, 0x8d, 0xa4, 0x88, 0x3c, 0xc1, 0x58, 0xb7,
+ 0x99, 0xc1, 0xac, 0x44, 0x16, 0x92, 0x0f, 0xde, 0x92, 0x9a, 0x69, 0x24,
+ 0x92, 0x4a, 0x52, 0x49, 0x24, 0x92, 0x94, 0x92, 0x49, 0x24, 0xa5, 0x2b,
+ 0xfd, 0x23, 0xa3, 0xe5, 0xf5, 0x7c, 0x9f, 0x43, 0x18, 0x00, 0x1a, 0x26,
+ 0xcb, 0x1d, 0xf4, 0x58, 0x3c, 0xd5, 0x05, 0xd3, 0x7d, 0x5f, 0xea, 0x4c,
+ 0xc3, 0xe9, 0x8f, 0xae, 0x98, 0x19, 0x36, 0x5a, 0x4b, 0x8f, 0x80, 0x01,
+ 0xb0, 0x92, 0x9d, 0x2a, 0xbe, 0xa4, 0x74, 0x8c, 0x5a, 0xc3, 0xba, 0x86,
+ 0x6b, 0x9c, 0xe2, 0x0e, 0x8c, 0x86, 0x37, 0x4f, 0x0d, 0xda, 0xad, 0x21,
+ 0xd6, 0x3a, 0x5f, 0x4f, 0xa9, 0x94, 0x63, 0xda, 0x03, 0x18, 0xd0, 0xd6,
+ 0xb4, 0xf8, 0x0d, 0x17, 0x2f, 0x95, 0x75, 0xef, 0x06, 0xc7, 0x39, 0xd6,
+ 0x5c, 0xfd, 0x01, 0x71, 0xd6, 0x4c, 0xf8, 0xa1, 0x74, 0xce, 0x99, 0x65,
+ 0x8f, 0x75, 0x99, 0x32, 0x03, 0x4f, 0xbd, 0xff, 0x00, 0x4b, 0xf2, 0x24,
+ 0xa7, 0xac, 0x3f, 0x5b, 0x69, 0x24, 0x30, 0x58, 0xd2, 0x4f, 0x1a, 0x09,
+ 0x42, 0x7f, 0xd6, 0x0c, 0x5b, 0x9b, 0xb6, 0xfd, 0x41, 0xe0, 0xe8, 0x0f,
+ 0xde, 0x0c, 0xa1, 0x62, 0xe1, 0x74, 0xac, 0x81, 0x15, 0x12, 0xe2, 0xc1,
+ 0x26, 0x5a, 0x5a, 0x60, 0x7c, 0x55, 0x4c, 0xce, 0x9d, 0xd3, 0xf2, 0xea,
+ 0xb1, 0xb8, 0x8e, 0x3e, 0xb3, 0x06, 0x80, 0xb4, 0x89, 0xfb, 0xd2, 0x52,
+ 0xcd, 0xe9, 0x9f, 0x56, 0x1e, 0xe2, 0xf0, 0xc8, 0x2e, 0xdd, 0x21, 0xcf,
+ 0x76, 0xdd, 0x55, 0x3e, 0xb1, 0xd1, 0x3a, 0x48, 0xc6, 0x7d, 0xfd, 0x38,
+ 0x96, 0x3a, 0xb1, 0xb8, 0x8d, 0xc5, 0xed, 0x20, 0x0d, 0x74, 0x70, 0x07,
+ 0xf1, 0x54, 0x31, 0x5b, 0x6e, 0x30, 0xf4, 0x2f, 0x83, 0x23, 0x73, 0x60,
+ 0xcc, 0x4f, 0x64, 0xb3, 0xb3, 0x05, 0x54, 0xbe, 0x9a, 0xdc, 0x66, 0xd1,
+ 0x04, 0x76, 0x8f, 0x14, 0x94, 0xe3, 0xa5, 0xd9, 0x24, 0xa7, 0x48, 0x49,
+ 0x4a, 0x4f, 0xda, 0x53, 0x25, 0x3a, 0x42, 0x4a, 0x52, 0xd5, 0xe9, 0x4c,
+ 0x26, 0xb7, 0xeb, 0x13, 0xdf, 0xc3, 0x55, 0x94, 0xb5, 0x3a, 0x63, 0x9c,
+ 0xdc, 0x77, 0x96, 0x98, 0xed, 0xf7, 0x90, 0x92, 0x9d, 0x7c, 0x02, 0x03,
+ 0x6c, 0xee, 0x05, 0xef, 0x00, 0x1f, 0xec, 0xea, 0x95, 0xd4, 0xb5, 0xe4,
+ 0x31, 0xd2, 0x7f, 0x48, 0x35, 0xfe, 0xc9, 0x29, 0xba, 0x69, 0x69, 0xab,
+ 0x73, 0xc6, 0xc1, 0xea, 0x90, 0xff, 0x00, 0xeb, 0x4c, 0xf7, 0x47, 0x73,
+ 0x1f, 0xeb, 0x00, 0x44, 0xc5, 0xac, 0x3a, 0xf6, 0xf6, 0x78, 0x24, 0xa4,
+ 0x02, 0xd3, 0x05, 0xc6, 0x0b, 0xa6, 0x41, 0xf8, 0x92, 0xb6, 0x7e, 0xaf,
+ 0x35, 0xf6, 0xe4, 0x32, 0xab, 0x0e, 0xec, 0x36, 0xb7, 0xd5, 0xb2, 0xb7,
+ 0x0f, 0x61, 0x73, 0x49, 0xdb, 0xaf, 0x8f, 0x1f, 0x25, 0x99, 0x6f, 0xa2,
+ 0xd0, 0xfb, 0x1c, 0x24, 0x16, 0xc0, 0x68, 0xf2, 0xff, 0x00, 0x7a, 0xb5,
+ 0xd3, 0xdf, 0x68, 0xa9, 0xbe, 0x99, 0x73, 0x21, 0xa1, 0xc4, 0x86, 0xcb,
+ 0x49, 0xf0, 0x49, 0x4f, 0x51, 0x94, 0xec, 0x37, 0xbc, 0x02, 0xca, 0xee,
+ 0x69, 0xd1, 0xec, 0x17, 0x35, 0x90, 0x49, 0x9e, 0x1c, 0xe0, 0x99, 0xac,
+ 0xe8, 0x75, 0x80, 0x3d, 0x06, 0x3c, 0xba, 0x65, 0xcd, 0x6e, 0xf1, 0x23,
+ 0x9d, 0x4a, 0xc7, 0xbd, 0xf6, 0x1b, 0x07, 0xe9, 0x40, 0xd1, 0xa5, 0xef,
+ 0x73, 0x46, 0xd1, 0x27, 0x52, 0x21, 0xc5, 0x3d, 0xad, 0x6b, 0x6f, 0xb4,
+ 0x53, 0x7b, 0xde, 0xda, 0xce, 0xdb, 0x9a, 0xf6, 0x86, 0x3b, 0x73, 0x4e,
+ 0x8f, 0xdb, 0x23, 0x73, 0x49, 0xf0, 0x49, 0x4e, 0xc5, 0xef, 0xe9, 0x36,
+ 0xb1, 0xad, 0x75, 0x4d, 0x75, 0x6d, 0x1a, 0x13, 0x4c, 0x86, 0xc7, 0xf5,
+ 0x9a, 0x87, 0x4f, 0x52, 0xaf, 0x73, 0x59, 0x8f, 0x82, 0x59, 0x53, 0x7f,
+ 0x3f, 0xda, 0xc1, 0xf2, 0xda, 0x21, 0x66, 0x3e, 0xf7, 0x91, 0xe9, 0x5c,
+ 0xf2, 0xd0, 0x7e, 0x9b, 0x7b, 0xea, 0x35, 0xd6, 0x36, 0x81, 0xf2, 0x44,
+ 0xa2, 0xe1, 0x60, 0xdb, 0x58, 0x9a, 0xe2, 0x36, 0xb7, 0xcb, 0xbc, 0xa4,
+ 0xa7, 0x51, 0xfd, 0x4e, 0xc0, 0x48, 0x6d, 0x02, 0x47, 0x05, 0xd6, 0xb4,
+ 0x0f, 0xed, 0x6d, 0x0e, 0x2a, 0x3f, 0x6c, 0xcb, 0x9d, 0xde, 0xa5, 0x13,
+ 0x1f, 0xcd, 0xfb, 0xb6, 0x73, 0xfb, 0xdc, 0xac, 0x2c, 0xa3, 0x6d, 0x55,
+ 0x97, 0x12, 0xd7, 0xbf, 0x58, 0x6c, 0x90, 0xf0, 0x3e, 0x61, 0x55, 0xfb,
+ 0x5b, 0xbe, 0x96, 0xf7, 0xfa, 0x71, 0xb7, 0x6e, 0xe3, 0xcf, 0xf5, 0xbc,
+ 0x12, 0x53, 0x42, 0xaa, 0xea, 0xaf, 0x71, 0x6c, 0x82, 0xe2, 0x4b, 0x88,
+ 0xf3, 0x44, 0x21, 0xad, 0x60, 0xf6, 0xf1, 0xc0, 0xd2, 0x07, 0xc0, 0x70,
+ 0xab, 0xbb, 0x3f, 0x05, 0xa3, 0x5b, 0x98, 0x23, 0xb3, 0x49, 0x74, 0xff,
+ 0x00, 0x9b, 0x28, 0x56, 0xf5, 0x2c, 0x0b, 0x5a, 0x58, 0xf2, 0xf7, 0x8d,
+ 0x23, 0x6b, 0x5d, 0x3a, 0x79, 0xe8, 0x92, 0x9b, 0x9a, 0x18, 0x7b, 0x75,
+ 0x7c, 0x73, 0xce, 0x9e, 0x49, 0x53, 0x63, 0x6c, 0x04, 0xd6, 0x67, 0xcc,
+ 0x73, 0xf1, 0x99, 0x59, 0xf5, 0xf5, 0x2c, 0x4a, 0x9f, 0xfa, 0x2c, 0x7b,
+ 0x4b, 0xdc, 0x20, 0x03, 0xac, 0x81, 0xf1, 0x2a, 0x63, 0x3a, 0xf0, 0xcf,
+ 0xd0, 0x60, 0xb9, 0xac, 0xe6, 0x26, 0x04, 0x9f, 0x80, 0x49, 0x4e, 0x80,
+ 0x61, 0x76, 0xa0, 0x6e, 0x8e, 0x7e, 0x0a, 0xce, 0x23, 0x77, 0xb8, 0xd3,
+ 0x31, 0xbb, 0x40, 0x47, 0x88, 0xff, 0x00, 0x62, 0xc8, 0x6e, 0x67, 0x55,
+ 0xdc, 0x23, 0x11, 0x93, 0xd8, 0x3c, 0x93, 0xf7, 0xea, 0x14, 0xa9, 0xca,
+ 0xeb, 0xd5, 0xbb, 0x7b, 0x3d, 0x26, 0x9d, 0x35, 0x2c, 0x0e, 0x00, 0x8f,
+ 0x0d, 0xd2, 0x92, 0x9d, 0x3c, 0xf6, 0xdd, 0x5b, 0x32, 0x31, 0xda, 0xd7,
+ 0x1c, 0x77, 0x86, 0x93, 0x6b, 0x87, 0xb5, 0xe4, 0x02, 0x5a, 0x5b, 0xaa,
+ 0xe5, 0xf3, 0x98, 0x19, 0x49, 0x68, 0xee, 0xf7, 0x1f, 0x91, 0x82, 0xb6,
+ 0xee, 0xcb, 0xfa, 0xc5, 0x97, 0xed, 0xca, 0xcc, 0x9a, 0xc1, 0xfa, 0x2d,
+ 0x63, 0x1a, 0x24, 0x7f, 0x55, 0xb2, 0xb3, 0x3a, 0xcd, 0x5e, 0x9d, 0x55,
+ 0xf9, 0x89, 0xfe, 0x1f, 0xc1, 0x25, 0x38, 0xe9, 0x24, 0x92, 0x4a, 0x52,
+ 0x49, 0x24, 0x92, 0x94, 0x92, 0x49, 0x24, 0xa5, 0x22, 0x53, 0x75, 0x94,
+ 0xbb, 0x73, 0x0c, 0x78, 0x8e, 0xc5, 0x0d, 0x24, 0x94, 0xde, 0x3d, 0x49,
+ 0xce, 0xd5, 0xc2, 0x1c, 0x35, 0x1f, 0x15, 0xd9, 0xfd, 0x54, 0xea, 0x38,
+ 0xd9, 0xac, 0x7b, 0x1a, 0xcd, 0xaf, 0x66, 0xd3, 0x6b, 0x4c, 0x44, 0xba,
+ 0x75, 0x6f, 0x96, 0x8b, 0x81, 0xaa, 0x9b, 0x6e, 0x76, 0xca, 0x98, 0xe7,
+ 0xbb, 0xc1, 0xa0, 0x9e, 0x57, 0x75, 0x85, 0xd1, 0xed, 0xe8, 0x57, 0xe1,
+ 0xb1, 0xa3, 0xdd, 0x7d, 0x2e, 0xfb, 0x53, 0xcf, 0xfa, 0x69, 0x0e, 0x6b,
+ 0x7e, 0x00, 0x08, 0x09, 0x29, 0xe8, 0x6d, 0x65, 0x75, 0x02, 0xea, 0xea,
+ 0x26, 0x41, 0x1e, 0xd1, 0xbb, 0x95, 0x57, 0x3b, 0x22, 0x8c, 0x1e, 0x9d,
+ 0x65, 0xc4, 0x6d, 0xda, 0xd9, 0x78, 0xef, 0xf0, 0x0a, 0x36, 0xdf, 0x85,
+ 0x60, 0x9b, 0xdc, 0x2b, 0xb3, 0x82, 0xd7, 0x4c, 0xac, 0x4e, 0xac, 0xf7,
+ 0xf5, 0x1b, 0xa8, 0xe9, 0x18, 0xf2, 0xda, 0x6e, 0xdc, 0x5f, 0x66, 0xba,
+ 0x06, 0xf0, 0x7e, 0x1b, 0x92, 0x53, 0xca, 0x67, 0x67, 0xbb, 0x27, 0x29,
+ 0xf7, 0x56, 0x3d, 0x36, 0x1f, 0x6b, 0x1b, 0xe0, 0xd1, 0xc2, 0xa8, 0x49,
+ 0x26, 0x49, 0x93, 0xe2, 0xac, 0x75, 0x0e, 0x9f, 0x93, 0xd3, 0xb2, 0x9f,
+ 0x8b, 0x94, 0xdd, 0xb6, 0x37, 0x83, 0xd9, 0xcd, 0x3c, 0x39, 0xbe, 0x45,
+ 0x56, 0x49, 0x4a, 0x49, 0x24, 0x92, 0x52, 0x92, 0x49, 0x24, 0x94, 0xa5,
+ 0xb1, 0xd1, 0x60, 0xd4, 0xf1, 0x12, 0x66, 0x7f, 0x22, 0xc7, 0x5a, 0xfd,
+ 0x1b, 0x6f, 0xa7, 0x66, 0xe7, 0x06, 0xb7, 0xf3, 0x89, 0xe3, 0x90, 0x92,
+ 0x9d, 0xae, 0x8c, 0xd2, 0xfa, 0xee, 0xf4, 0xdd, 0xb4, 0xfa, 0xef, 0x00,
+ 0x8d, 0x48, 0x92, 0x07, 0xf1, 0x56, 0x83, 0x76, 0xd7, 0x60, 0x68, 0x9b,
+ 0x03, 0x80, 0x73, 0x4f, 0x20, 0x86, 0xc6, 0xef, 0x35, 0x4b, 0xa0, 0x37,
+ 0x73, 0x2f, 0xd4, 0xff, 0x00, 0x3f, 0x67, 0xc3, 0xf3, 0x79, 0x0a, 0xf7,
+ 0x17, 0xdc, 0xd1, 0xa8, 0x68, 0x64, 0xc6, 0xb2, 0x60, 0x94, 0x94, 0xd1,
+ 0xb2, 0xbf, 0x52, 0xa0, 0x1a, 0xf2, 0x34, 0x1b, 0xa7, 0xc4, 0x47, 0xe0,
+ 0x8f, 0x82, 0x1a, 0x2d, 0xa4, 0x17, 0x7a, 0x64, 0xd7, 0x2c, 0xb0, 0xb8,
+ 0xb3, 0x82, 0x64, 0x83, 0x20, 0x70, 0xa2, 0xea, 0xc1, 0xdd, 0x59, 0x03,
+ 0xda, 0x48, 0x8e, 0xde, 0xd7, 0x15, 0xb3, 0xd3, 0x30, 0x99, 0x9b, 0x84,
+ 0xda, 0x4b, 0x80, 0x7d, 0x6f, 0x2e, 0xd3, 0x9e, 0x21, 0x25, 0x39, 0xe6,
+ 0xec, 0x7a, 0x6f, 0x6f, 0xd9, 0xac, 0x16, 0xb4, 0x9f, 0xd3, 0x06, 0xb4,
+ 0x07, 0x38, 0x4e, 0xba, 0x9f, 0xe2, 0xab, 0xd9, 0x7e, 0x5d, 0x80, 0x5b,
+ 0x65, 0x9a, 0x83, 0xea, 0x02, 0xe7, 0x6f, 0x7f, 0x3e, 0xd0, 0x1d, 0xca,
+ 0xd5, 0xb7, 0xea, 0xe5, 0xbe, 0xbb, 0xed, 0xa2, 0xd6, 0x50, 0xe9, 0xdd,
+ 0xb1, 0xcc, 0x16, 0x17, 0x46, 0xb3, 0xea, 0x38, 0x70, 0x50, 0xff, 0x00,
+ 0xe6, 0xbd, 0x96, 0x34, 0xfa, 0xf9, 0x27, 0x63, 0x3f, 0x9b, 0x86, 0x92,
+ 0x01, 0xf0, 0x89, 0xe7, 0xe0, 0x92, 0x9a, 0x6e, 0xc8, 0xad, 0xac, 0xdb,
+ 0x60, 0x2c, 0x78, 0x32, 0x0e, 0x9c, 0x1f, 0xde, 0x6a, 0x9f, 0xdb, 0x69,
+ 0x01, 0xd6, 0x13, 0xb5, 0xf2, 0x1e, 0x1e, 0xc1, 0xed, 0xd3, 0xbf, 0x75,
+ 0x17, 0xfd, 0x58, 0xea, 0x86, 0xc6, 0x07, 0xd8, 0xd6, 0xd4, 0x64, 0xb8,
+ 0xb7, 0x73, 0x9d, 0xa4, 0x47, 0xb5, 0xc3, 0xe9, 0x15, 0x63, 0x23, 0xa2,
+ 0xfb, 0x5c, 0xcc, 0x66, 0x5d, 0x50, 0x88, 0x9b, 0x36, 0xb9, 0xbb, 0x87,
+ 0x1e, 0xd2, 0x26, 0x12, 0x53, 0x45, 0xb9, 0xb6, 0xe4, 0x64, 0xb1, 0xe5,
+ 0xe5, 0xaf, 0x10, 0x7d, 0xc7, 0x8d, 0x74, 0x91, 0xa4, 0xab, 0x3f, 0xab,
+ 0x6f, 0xf5, 0x7f, 0xc2, 0xee, 0xdd, 0x30, 0x7e, 0xf5, 0x56, 0xbe, 0x8d,
+ 0xd6, 0x6d, 0x02, 0xcd, 0x80, 0x3b, 0x70, 0xdc, 0x7d, 0xac, 0x80, 0x34,
+ 0x90, 0x0b, 0x42, 0xb7, 0xff, 0x00, 0x37, 0xaa, 0xf5, 0x3d, 0x0f, 0xb4,
+ 0xbf, 0xed, 0x5f, 0x4a, 0x37, 0x69, 0x11, 0xf4, 0x76, 0xcc, 0xed, 0xf3,
+ 0x49, 0x4d, 0x3a, 0x3a, 0x36, 0x23, 0x08, 0x71, 0x63, 0x43, 0x4f, 0x11,
+ 0xaf, 0x21, 0x5b, 0x66, 0x0e, 0x30, 0x2d, 0xf4, 0xeb, 0x04, 0xf8, 0x91,
+ 0x1f, 0x82, 0x76, 0x3f, 0x69, 0xd0, 0x93, 0x22, 0x67, 0xcd, 0x11, 0xee,
+ 0x1b, 0x44, 0xc9, 0x26, 0x74, 0x1d, 0x82, 0x4a, 0x68, 0x75, 0x0a, 0xab,
+ 0xaa, 0xfc, 0x6b, 0x84, 0x48, 0x7b, 0xab, 0x76, 0x9f, 0xbe, 0xd9, 0x1f,
+ 0xf5, 0x2a, 0xdb, 0x5d, 0x5f, 0xa0, 0xd6, 0xe8, 0xd7, 0x12, 0x21, 0xb1,
+ 0xc7, 0xfb, 0x55, 0x7e, 0xa8, 0xf6, 0x8c, 0x41, 0x70, 0x6c, 0x7a, 0x2f,
+ 0xae, 0xc9, 0xf2, 0x0e, 0x13, 0xf8, 0x2a, 0xd5, 0xe4, 0xdd, 0x61, 0xb0,
+ 0x4f, 0xa6, 0x4b, 0xa0, 0x16, 0xea, 0xe8, 0xf2, 0xf0, 0xf8, 0xa4, 0xa6,
+ 0xde, 0x45, 0xad, 0x6d, 0xa5, 0x8c, 0x13, 0xe5, 0x23, 0x74, 0x8f, 0x15,
+ 0x19, 0x6d, 0xb5, 0xc3, 0x84, 0x72, 0x01, 0xef, 0xc1, 0x9e, 0x38, 0x55,
+ 0xad, 0xc5, 0xfb, 0x31, 0xaf, 0xdb, 0xfa, 0x40, 0xe9, 0x06, 0x66, 0x24,
+ 0xc9, 0x20, 0xa3, 0x36, 0xb8, 0x66, 0xb2, 0x08, 0x1f, 0x44, 0x6a, 0x24,
+ 0xf7, 0x29, 0x29, 0x8d, 0x34, 0x9a, 0xde, 0xf8, 0x27, 0xdc, 0x44, 0x41,
+ 0x9e, 0xde, 0x2a, 0x87, 0xd6, 0x3a, 0xda, 0xdc, 0x5a, 0x1c, 0x04, 0x6a,
+ 0xe6, 0x9f, 0xbc, 0x15, 0xa8, 0xc0, 0xd7, 0x77, 0x33, 0xe4, 0xa9, 0x7d,
+ 0x62, 0x60, 0xb3, 0xa7, 0x6f, 0x6e, 0xa2, 0xb7, 0x83, 0x23, 0xc0, 0xe9,
+ 0xca, 0x4a, 0x79, 0x64, 0x92, 0x49, 0x25, 0x29, 0x24, 0x92, 0x49, 0x4a,
+ 0x49, 0x24, 0x92, 0x52, 0x97, 0x71, 0xf5, 0x3f, 0xea, 0x86, 0x1e, 0x5e,
+ 0x1b, 0x7a, 0xa7, 0x53, 0x69, 0xb4, 0x58, 0x4f, 0xa1, 0x47, 0x0d, 0xda,
+ 0xdd, 0x37, 0xbf, 0xc6, 0x4f, 0x01, 0x71, 0x2c, 0x63, 0x9e, 0xf6, 0xb1,
+ 0xa2, 0x5c, 0xe2, 0x00, 0x1e, 0x67, 0x45, 0xec, 0xb8, 0x2c, 0xaf, 0x0b,
+ 0x1f, 0x1b, 0x05, 0x9a, 0x32, 0xba, 0xc3, 0x1b, 0xf1, 0x68, 0x83, 0xf8,
+ 0xa4, 0xa7, 0x2f, 0xaf, 0x63, 0x51, 0x8d, 0x56, 0x30, 0xc6, 0x63, 0x69,
+ 0x6d, 0x6f, 0x92, 0xd6, 0x34, 0x36, 0x1a, 0x46, 0x87, 0xda, 0x3b, 0x10,
+ 0xb1, 0xfe, 0xae, 0x61, 0xf5, 0x07, 0xe3, 0x64, 0x0b, 0x6c, 0xfb, 0x43,
+ 0x0b, 0xc3, 0xe1, 0xf3, 0xbc, 0x13, 0xae, 0xf6, 0x9d, 0x4f, 0xc9, 0x75,
+ 0x19, 0x06, 0xab, 0xb1, 0x2e, 0x7d, 0x90, 0x7d, 0x9a, 0x4f, 0x6e, 0xc2,
+ 0x7e, 0x6b, 0x27, 0xa1, 0xdc, 0x6a, 0xc8, 0x76, 0x30, 0x70, 0x63, 0xec,
+ 0xf6, 0xb4, 0x48, 0x79, 0x96, 0xf8, 0xb4, 0x1e, 0x21, 0x25, 0x27, 0xfb,
+ 0x13, 0x6c, 0x6b, 0x7d, 0x4f, 0x74, 0xf0, 0xe1, 0xaa, 0x8e, 0x4e, 0x15,
+ 0x1d, 0x2b, 0x12, 0xfe, 0xa4, 0xe8, 0x76, 0x43, 0x2a, 0x21, 0x80, 0xf1,
+ 0x3c, 0x86, 0x8f, 0x9f, 0x2b, 0x4e, 0xdf, 0xb4, 0x12, 0xd6, 0xd0, 0x2b,
+ 0x36, 0x35, 0xde, 0xf7, 0xba, 0x76, 0xb0, 0x77, 0x86, 0xf7, 0x3e, 0x4b,
+ 0x3b, 0xac, 0xd6, 0xc6, 0x60, 0x3b, 0xed, 0x36, 0x17, 0xd9, 0x61, 0xd8,
+ 0x2c, 0x71, 0xda, 0xd9, 0x8d, 0xc7, 0x4d, 0x1a, 0x07, 0x92, 0x4a, 0x73,
+ 0x7e, 0xad, 0xd4, 0xec, 0xac, 0x17, 0x1e, 0xa2, 0xf3, 0x98, 0xf7, 0xdb,
+ 0xb4, 0x8c, 0x88, 0xb5, 0xb1, 0xfc, 0x90, 0xf9, 0x84, 0xdd, 0x7b, 0xea,
+ 0x3e, 0x15, 0x98, 0xb6, 0x64, 0xf4, 0xc6, 0xfa, 0x39, 0x2c, 0x05, 0xde,
+ 0x88, 0x33, 0x5d, 0x91, 0xa9, 0x6b, 0x43, 0xbe, 0x89, 0xf0, 0xd6, 0x16,
+ 0x8f, 0xd5, 0x61, 0x57, 0xd9, 0xad, 0xa9, 0xc0, 0x7a, 0x9b, 0xb7, 0x37,
+ 0xfa, 0xa7, 0x82, 0x3e, 0x6a, 0xf1, 0xc8, 0xb1, 0xf9, 0x0f, 0xa8, 0x9d,
+ 0x18, 0xe2, 0x0f, 0xc2, 0x52, 0x53, 0xe3, 0xe4, 0x46, 0x87, 0x94, 0x95,
+ 0xce, 0xb1, 0x5b, 0x6b, 0xea, 0xb9, 0x8c, 0x68, 0x86, 0xb6, 0xeb, 0x00,
+ 0x1e, 0x1e, 0xe2, 0xa9, 0xa4, 0xa5, 0x24, 0x92, 0x49, 0x29, 0x4b, 0x5b,
+ 0xa3, 0xc3, 0xa9, 0xb6, 0xb2, 0x24, 0xb8, 0x11, 0x3f, 0x18, 0x59, 0x2b,
+ 0x5f, 0xa1, 0xc7, 0xe9, 0x3e, 0x06, 0x3f, 0x04, 0x94, 0xec, 0xfd, 0x5f,
+ 0x0c, 0x18, 0xb9, 0x24, 0x89, 0xfd, 0x62, 0xc1, 0xa6, 0xbf, 0xe8, 0xd6,
+ 0x85, 0xed, 0x01, 0xb9, 0x16, 0x88, 0x02, 0x2b, 0x87, 0x40, 0x31, 0x02,
+ 0x3b, 0xaa, 0x7d, 0x05, 0x8f, 0x6e, 0x26, 0x40, 0x82, 0xd3, 0xf6, 0x8b,
+ 0xa7, 0xcb, 0x46, 0x2b, 0x79, 0xaf, 0x6f, 0xd8, 0xb2, 0xb7, 0x70, 0xe0,
+ 0xd0, 0xd0, 0x44, 0xfb, 0x8e, 0x83, 0x9f, 0x82, 0x4a, 0x47, 0x75, 0x60,
+ 0xbd, 0xe4, 0x77, 0x79, 0x12, 0x74, 0xd7, 0xfd, 0x7c, 0x56, 0xaf, 0xd5,
+ 0xc2, 0xd6, 0x64, 0x1a, 0x8c, 0x07, 0x38, 0x38, 0x0f, 0x38, 0x33, 0x0a,
+ 0x85, 0x75, 0x87, 0xbd, 0xee, 0x3a, 0x80, 0xf7, 0x01, 0xe3, 0xa0, 0x61,
+ 0xfe, 0x2a, 0xd7, 0x4e, 0xb0, 0x55, 0x9b, 0x48, 0x79, 0xd8, 0xd7, 0x3f,
+ 0x68, 0x20, 0x19, 0x90, 0x67, 0xe0, 0x92, 0x9e, 0xa4, 0xd4, 0xd7, 0x80,
+ 0xd7, 0x00, 0x41, 0xe5, 0x3f, 0xa0, 0xcd, 0x00, 0x03, 0x68, 0xe0, 0x47,
+ 0x74, 0x2c, 0x9b, 0x9f, 0x8f, 0x0e, 0x75, 0x8d, 0x0d, 0x3c, 0x17, 0x08,
+ 0xf8, 0xf7, 0x43, 0x66, 0x63, 0x9c, 0x75, 0x70, 0x11, 0xf1, 0x8d, 0x78,
+ 0xe5, 0x25, 0x36, 0x1d, 0x40, 0x73, 0x81, 0xec, 0xde, 0x3e, 0x2a, 0x4e,
+ 0xa5, 0x8e, 0xd4, 0xf3, 0x1c, 0xf8, 0x2a, 0xe7, 0x25, 0xf3, 0x2c, 0x70,
+ 0x22, 0x38, 0xed, 0xf1, 0x41, 0x75, 0xb6, 0xfa, 0x85, 0xed, 0x3f, 0x48,
+ 0x41, 0x6c, 0x7f, 0x19, 0x49, 0x4d, 0x8b, 0x8d, 0x6d, 0x77, 0xa4, 0xd0,
+ 0x05, 0x84, 0x68, 0x48, 0x91, 0xf0, 0xd1, 0x4b, 0xec, 0xf4, 0xcf, 0xa9,
+ 0xe9, 0x8d, 0xfc, 0x7d, 0x11, 0x3f, 0x0f, 0x15, 0x4d, 0xed, 0x2f, 0x70,
+ 0x73, 0x77, 0x07, 0xb4, 0x16, 0xb4, 0xf7, 0x01, 0xdc, 0xc2, 0xcb, 0xfb,
+ 0x11, 0xfb, 0x56, 0xef, 0xb7, 0x5d, 0x33, 0x1f, 0x67, 0xf5, 0xdd, 0xe9,
+ 0xcf, 0x86, 0xcf, 0xe0, 0x92, 0x9c, 0x66, 0x39, 0xdb, 0x40, 0x03, 0x6c,
+ 0x69, 0x3f, 0x77, 0x28, 0xad, 0xdd, 0x1e, 0xd1, 0x3a, 0xea, 0x4f, 0x08,
+ 0x55, 0x90, 0x07, 0x89, 0xe0, 0x7e, 0x2a, 0xc3, 0x00, 0xda, 0x0b, 0xb5,
+ 0x8d, 0x40, 0x49, 0x4d, 0x6c, 0xda, 0xbd, 0x6c, 0x3b, 0x58, 0xd9, 0x71,
+ 0x73, 0x1c, 0xdf, 0x98, 0x06, 0x16, 0x3e, 0x25, 0xd7, 0xd4, 0x05, 0xc1,
+ 0xa5, 0xcc, 0x21, 0xae, 0x71, 0x11, 0x3a, 0x88, 0xd6, 0x57, 0x4c, 0x2a,
+ 0xb8, 0x00, 0xf6, 0x91, 0xab, 0x88, 0x6b, 0x1b, 0xab, 0xbe, 0xef, 0x39,
+ 0x59, 0x1d, 0x26, 0x9f, 0x66, 0xc7, 0x8d, 0x2b, 0x7b, 0xaa, 0x23, 0xc7,
+ 0x6b, 0x88, 0xd7, 0xe4, 0x92, 0x92, 0xe1, 0xd2, 0xfc, 0x82, 0xfc, 0x8b,
+ 0x49, 0xda, 0xc0, 0x7d, 0x3e, 0x04, 0xb8, 0x09, 0xd4, 0x29, 0xd8, 0x38,
+ 0x1d, 0xbc, 0xbf, 0x8a, 0xdb, 0x38, 0xd8, 0x58, 0x34, 0x31, 0xa1, 0xae,
+ 0x78, 0xb4, 0x17, 0x92, 0x3c, 0x7c, 0xbf, 0x22, 0xc8, 0x05, 0xe3, 0x19,
+ 0xa4, 0x01, 0xb6, 0xd2, 0x23, 0xb9, 0xf6, 0x92, 0xde, 0x47, 0x8a, 0x4a,
+ 0x45, 0x54, 0xcc, 0x73, 0xe4, 0x38, 0x08, 0x7d, 0x4a, 0x91, 0x67, 0x4d,
+ 0xca, 0xac, 0x11, 0xa5, 0x7b, 0xc0, 0xfe, 0xa1, 0x0e, 0xfe, 0x08, 0xd5,
+ 0x80, 0xe2, 0x23, 0xdc, 0x38, 0xd2, 0x51, 0x03, 0x77, 0x7a, 0x95, 0xff,
+ 0x00, 0xa4, 0x69, 0x66, 0x9d, 0xf7, 0x08, 0x29, 0x29, 0xe0, 0xd2, 0x48,
+ 0x82, 0x09, 0x07, 0x90, 0x92, 0x4a, 0x52, 0x49, 0x24, 0x92, 0x94, 0x92,
+ 0x49, 0x24, 0xa6, 0xff, 0x00, 0x41, 0xac, 0x59, 0xd6, 0xb0, 0x18, 0xee,
+ 0x0e, 0x45, 0x73, 0xf2, 0x70, 0x2b, 0xd5, 0x32, 0xc7, 0xb0, 0x91, 0xa3,
+ 0xeb, 0xd4, 0x7c, 0xc4, 0xaf, 0x2b, 0xe8, 0x5b, 0xbf, 0x6d, 0x60, 0x6c,
+ 0x12, 0xef, 0xb4, 0x57, 0x03, 0xfb, 0x41, 0x7a, 0x7d, 0xd9, 0x41, 0xcf,
+ 0x32, 0xc2, 0xdd, 0xd5, 0xfb, 0xfb, 0x89, 0x1a, 0xb6, 0x0f, 0xde, 0x92,
+ 0x91, 0x74, 0x7c, 0x9b, 0x2e, 0xc7, 0x15, 0xe4, 0x7a, 0x62, 0x9b, 0xac,
+ 0x7d, 0x55, 0x82, 0x46, 0xfb, 0x8b, 0x67, 0x76, 0xed, 0xfc, 0x92, 0x9f,
+ 0x1b, 0xa8, 0xf4, 0xea, 0x7a, 0x85, 0xb8, 0xad, 0x65, 0x74, 0xb6, 0xbd,
+ 0xe3, 0x7b, 0x04, 0xce, 0xd2, 0x34, 0xf6, 0x8d, 0x3b, 0xa7, 0xa8, 0x62,
+ 0xe3, 0xf4, 0x86, 0xe5, 0xb9, 0xad, 0x22, 0xb0, 0x6f, 0xa5, 0xce, 0x00,
+ 0x86, 0xda, 0x49, 0xd4, 0x4f, 0x07, 0x71, 0x85, 0xcf, 0x51, 0x63, 0xa0,
+ 0xbc, 0x07, 0x6e, 0x7b, 0xa7, 0x49, 0xef, 0xe6, 0x92, 0x9e, 0xc6, 0x87,
+ 0x63, 0xd9, 0xbe, 0xca, 0x9e, 0x1c, 0x1e, 0xe0, 0xe2, 0x41, 0xe7, 0x40,
+ 0x3f, 0x82, 0xa9, 0xd5, 0xba, 0x86, 0x1e, 0x36, 0x39, 0x65, 0x85, 0x96,
+ 0x92, 0xe1, 0xba, 0xa3, 0x0e, 0xd2, 0x75, 0x1e, 0x01, 0x60, 0xb1, 0xac,
+ 0xc8, 0x73, 0xc3, 0x9c, 0xef, 0x50, 0x33, 0x42, 0x0c, 0x12, 0x01, 0x1a,
+ 0x14, 0xae, 0xa6, 0xb6, 0x37, 0xd3, 0x10, 0xd6, 0x8d, 0x0f, 0xc5, 0x25,
+ 0x3a, 0x95, 0x65, 0x60, 0xe3, 0x61, 0x1e, 0xa1, 0x8b, 0x8e, 0xd6, 0x55,
+ 0xb4, 0xd9, 0x79, 0xa8, 0x6a, 0xdd, 0xa7, 0x52, 0x7e, 0x03, 0xb0, 0x42,
+ 0xe9, 0xb9, 0xcc, 0xcf, 0xb1, 0x97, 0x55, 0x31, 0x74, 0x39, 0xdb, 0x84,
+ 0x18, 0x68, 0x84, 0xdd, 0x24, 0xd5, 0x7e, 0x16, 0x6e, 0x1d, 0x90, 0xe6,
+ 0x39, 0x90, 0x47, 0x8b, 0x5c, 0x36, 0xb9, 0x4f, 0xa4, 0x52, 0xdc, 0x7a,
+ 0x0b, 0xa3, 0x5a, 0x9a, 0x5a, 0x3e, 0x5a, 0x24, 0xa7, 0xce, 0x7a, 0xd4,
+ 0x9e, 0xaf, 0x9a, 0x4f, 0xfa, 0x7b, 0x3f, 0xea, 0x8a, 0xa4, 0xad, 0xf5,
+ 0x67, 0xef, 0xea, 0x99, 0x6f, 0xf1, 0xb9, 0xff, 0x00, 0xf5, 0x45, 0x54,
+ 0x49, 0x4a, 0x49, 0x24, 0x92, 0x52, 0x96, 0xc7, 0x43, 0x6c, 0xb6, 0xd8,
+ 0x99, 0x00, 0xc4, 0x78, 0xcb, 0x56, 0x3a, 0xdd, 0xfa, 0xbe, 0xdd, 0xd5,
+ 0xda, 0xd0, 0x35, 0xd7, 0xef, 0xf6, 0xa4, 0xa7, 0x6b, 0xa4, 0x37, 0x66,
+ 0x2d, 0xcd, 0x99, 0x9c, 0x8b, 0x64, 0xf3, 0xe1, 0xcf, 0xdc, 0x8d, 0xd5,
+ 0x2b, 0x8c, 0x4c, 0x8d, 0xb0, 0x36, 0xb0, 0x6e, 0xf9, 0x3d, 0xc3, 0xba,
+ 0x0f, 0x4c, 0xc7, 0x16, 0xf4, 0xbd, 0x96, 0x4e, 0xef, 0x59, 0xee, 0xdd,
+ 0xc4, 0xb9, 0xa7, 0x95, 0x63, 0xa8, 0x55, 0x65, 0x98, 0x77, 0xb5, 0xbc,
+ 0xba, 0xb2, 0x46, 0xb1, 0xc3, 0xa7, 0xf8, 0xa4, 0xa4, 0xd8, 0xac, 0xb2,
+ 0xcb, 0x5e, 0xda, 0xbd, 0xa5, 0xa4, 0xba, 0x62, 0x41, 0x96, 0xb3, 0x85,
+ 0xaf, 0x82, 0xd6, 0x9a, 0xc7, 0xa9, 0xef, 0x2d, 0x3a, 0xe9, 0xdf, 0x85,
+ 0x9b, 0x8a, 0xdf, 0xb3, 0x32, 0xd0, 0x5c, 0x5b, 0x68, 0x6e, 0xc7, 0xbd,
+ 0xbe, 0x6c, 0x60, 0x2e, 0xef, 0xc1, 0x5a, 0x9d, 0x3d, 0xac, 0xf4, 0x34,
+ 0x04, 0xc7, 0xd2, 0x70, 0x1a, 0x93, 0xe3, 0x09, 0x29, 0xba, 0x71, 0xab,
+ 0x35, 0xb9, 0xbb, 0x4d, 0x81, 0xc2, 0x03, 0x5e, 0x4b, 0xb6, 0x8f, 0x08,
+ 0x71, 0x2a, 0x15, 0x52, 0xfa, 0x43, 0x80, 0x00, 0x56, 0xd6, 0xc3, 0x1a,
+ 0xe8, 0x9f, 0x80, 0x1c, 0x08, 0xf8, 0xab, 0x15, 0xdb, 0x30, 0x1c, 0xd0,
+ 0x1c, 0x3d, 0xa0, 0x12, 0x03, 0x89, 0xf2, 0x53, 0x6b, 0xfd, 0x6d, 0xcd,
+ 0xac, 0x07, 0x6c, 0x30, 0xe6, 0x9e, 0xc7, 0xee, 0x49, 0x4d, 0x59, 0x69,
+ 0x7b, 0x18, 0xca, 0x9e, 0xcd, 0xc2, 0x37, 0x18, 0xd9, 0x3f, 0x29, 0x25,
+ 0x42, 0xc0, 0xea, 0xde, 0x41, 0x70, 0x7c, 0x4c, 0x06, 0x8d, 0x76, 0x8d,
+ 0x65, 0x59, 0xfb, 0x31, 0x78, 0x3b, 0xaa, 0x04, 0x76, 0x2d, 0x74, 0x48,
+ 0xec, 0xa9, 0xe5, 0xe1, 0x39, 0xce, 0x2e, 0xc6, 0x9c, 0x7b, 0x9b, 0x10,
+ 0xf0, 0xe1, 0x20, 0x7c, 0xc4, 0x14, 0x94, 0xa6, 0x5f, 0x53, 0xcf, 0xe9,
+ 0x18, 0xe0, 0x0f, 0x01, 0xdc, 0x7e, 0x0a, 0x13, 0x85, 0xeb, 0xfa, 0x7f,
+ 0x67, 0x6c, 0xfe, 0xf6, 0xd1, 0x13, 0xf1, 0x55, 0x2e, 0xa3, 0x29, 0x87,
+ 0x7b, 0xf2, 0x03, 0xc1, 0x9f, 0x7b, 0xb6, 0x32, 0x7b, 0xfb, 0x9a, 0xd8,
+ 0xd3, 0xb6, 0x88, 0xb1, 0x83, 0xe9, 0xc7, 0xac, 0xef, 0x5b, 0xf7, 0xb6,
+ 0xfb, 0x7e, 0x11, 0x3f, 0xc5, 0x25, 0x38, 0x14, 0x9f, 0x64, 0x44, 0x34,
+ 0x8d, 0x3c, 0x7c, 0x51, 0x2b, 0x77, 0x24, 0x69, 0x10, 0xd3, 0xf3, 0xf0,
+ 0xff, 0x00, 0x62, 0x15, 0x4d, 0x3c, 0x9d, 0x4f, 0x7f, 0x9a, 0x38, 0xe6,
+ 0x35, 0x7b, 0xbc, 0x7b, 0x24, 0xa6, 0x4d, 0x0e, 0x0c, 0xf6, 0x72, 0x7f,
+ 0x38, 0xf9, 0x78, 0xaa, 0x18, 0x2d, 0x75, 0x39, 0x79, 0x4c, 0x06, 0x7f,
+ 0x4c, 0x1d, 0xf2, 0x78, 0x0e, 0xd1, 0x5f, 0x0d, 0x6e, 0xe2, 0x1c, 0x4c,
+ 0xf2, 0xd1, 0x3d, 0x95, 0x3d, 0x6a, 0xea, 0x6f, 0x9d, 0x05, 0xb4, 0xb5,
+ 0xde, 0x7e, 0xc7, 0x16, 0x98, 0xf9, 0x14, 0x94, 0xec, 0x54, 0xfa, 0xec,
+ 0xb0, 0x0c, 0x87, 0xb6, 0xba, 0xd8, 0xd2, 0x0b, 0x9e, 0x40, 0x68, 0x13,
+ 0xc7, 0x91, 0x59, 0xce, 0xba, 0x97, 0x16, 0x53, 0x45, 0x85, 0xed, 0xaf,
+ 0x57, 0x3a, 0x20, 0x4c, 0xed, 0xf6, 0xa7, 0x7c, 0x3d, 0x81, 0x8f, 0x12,
+ 0xd7, 0x0f, 0x73, 0x4f, 0x87, 0x9a, 0xab, 0x8c, 0xd3, 0x5d, 0x97, 0x32,
+ 0x64, 0xb3, 0x68, 0x07, 0xf7, 0x86, 0xbd, 0xbe, 0x09, 0x29, 0x35, 0x7a,
+ 0x10, 0xd7, 0x73, 0xc9, 0x6f, 0x7d, 0x7b, 0x2b, 0x2d, 0x0d, 0xad, 0xec,
+ 0xdb, 0xa0, 0x99, 0x86, 0x0f, 0x13, 0x3c, 0xaa, 0xce, 0xda, 0xdb, 0x83,
+ 0x7c, 0x8e, 0x83, 0x88, 0x07, 0xb9, 0xf9, 0xab, 0x53, 0x3b, 0x0b, 0x75,
+ 0xed, 0x0d, 0xd0, 0x24, 0xa7, 0x81, 0xce, 0xac, 0xd5, 0x9b, 0x91, 0x51,
+ 0x11, 0xb2, 0xc7, 0xb6, 0x3e, 0x0e, 0x28, 0x0b, 0x53, 0xeb, 0x25, 0x7e,
+ 0x9f, 0x59, 0xc8, 0x88, 0x87, 0x6d, 0x7e, 0x9c, 0x7b, 0x9a, 0x09, 0x59,
+ 0x69, 0x29, 0x49, 0x24, 0x92, 0x4a, 0x52, 0x49, 0x24, 0x92, 0x9d, 0x0f,
+ 0xab, 0xee, 0x0c, 0xeb, 0x98, 0x0e, 0x3c, 0x0b, 0xeb, 0xff, 0x00, 0xaa,
+ 0x0b, 0xd4, 0xee, 0xc3, 0x6b, 0xb7, 0x3c, 0x80, 0x41, 0x69, 0x13, 0xf9,
+ 0xc4, 0xf8, 0x93, 0x30, 0xbc, 0x87, 0x16, 0xef, 0x43, 0x26, 0x9b, 0xc7,
+ 0xf8, 0x27, 0xb5, 0xff, 0x00, 0xe6, 0x90, 0x57, 0xb2, 0x36, 0xdf, 0x53,
+ 0x15, 0xc6, 0xb8, 0x3b, 0xdb, 0x2d, 0x77, 0x23, 0x51, 0xa2, 0x4a, 0x71,
+ 0x2f, 0xca, 0xb3, 0x03, 0xa4, 0x62, 0xe2, 0xdc, 0x37, 0x1b, 0x5e, 0xe0,
+ 0x00, 0xd7, 0xda, 0x5c, 0xf7, 0x03, 0xfc, 0x56, 0x5d, 0x77, 0x63, 0x7a,
+ 0x6f, 0xb1, 0xf7, 0x56, 0x5c, 0xd7, 0x35, 0xad, 0x3a, 0x9d, 0x35, 0xdc,
+ 0x4c, 0x70, 0xae, 0xf5, 0x2b, 0xbd, 0x6e, 0xa8, 0xd6, 0x0f, 0x75, 0x78,
+ 0xac, 0xda, 0xd2, 0x46, 0x92, 0x47, 0x97, 0x92, 0x8b, 0x83, 0x2b, 0x01,
+ 0xcc, 0x64, 0x57, 0x01, 0xb6, 0x09, 0x99, 0xfe, 0x52, 0x4a, 0x43, 0x56,
+ 0x40, 0xb1, 0xa5, 0xf8, 0xc3, 0xd8, 0xc9, 0x0f, 0xb4, 0xb7, 0x6e, 0xf3,
+ 0xfc, 0x9d, 0xda, 0xc0, 0x4e, 0xfb, 0x5d, 0xb8, 0x6b, 0xf4, 0xa4, 0x91,
+ 0x01, 0x58, 0x22, 0x58, 0xe6, 0xf0, 0x0f, 0x86, 0x9e, 0x0b, 0x3d, 0xb6,
+ 0x64, 0x3b, 0x25, 0xde, 0xa3, 0x06, 0xc0, 0x0c, 0x38, 0x7c, 0x74, 0x49,
+ 0x4d, 0xcc, 0x1c, 0x83, 0x56, 0x45, 0x67, 0x86, 0xd8, 0x4b, 0x5f, 0x1d,
+ 0xc3, 0xbc, 0x7e, 0x6b, 0x4e, 0x9b, 0x5c, 0x29, 0xb2, 0xb7, 0x08, 0x7b,
+ 0x6d, 0x73, 0x0c, 0xf7, 0x0d, 0x74, 0x85, 0x8a, 0x41, 0xf4, 0x58, 0x5b,
+ 0x3b, 0xa6, 0x7e, 0x0a, 0xc6, 0x6f, 0x50, 0x66, 0x26, 0x1b, 0xb3, 0x49,
+ 0xfc, 0xd7, 0x58, 0x3c, 0xed, 0x23, 0x68, 0x1f, 0x7a, 0x4a, 0x78, 0x3e,
+ 0xa2, 0x00, 0xea, 0x19, 0x40, 0x6a, 0x3d, 0x6b, 0x20, 0xff, 0x00, 0x68,
+ 0xaa, 0xc9, 0xc9, 0x2e, 0x25, 0xc4, 0xc9, 0x3a, 0x92, 0x99, 0x25, 0x29,
+ 0x24, 0x92, 0x49, 0x4a, 0x5b, 0xdf, 0x57, 0x1e, 0x58, 0x2d, 0x20, 0xc7,
+ 0xb5, 0xda, 0xc4, 0xfe, 0xea, 0xc1, 0x5b, 0xff, 0x00, 0x56, 0x98, 0x2c,
+ 0xb1, 0xf5, 0x93, 0xb4, 0x16, 0x9f, 0xfb, 0xea, 0x4a, 0x77, 0xfa, 0x25,
+ 0xbe, 0xbd, 0x57, 0xd4, 0xfd, 0x1b, 0x5e, 0x53, 0xda, 0x00, 0xd4, 0x86,
+ 0xb9, 0xa1, 0xce, 0x3e, 0x7a, 0xad, 0x8b, 0xba, 0x3e, 0x43, 0x85, 0x81,
+ 0xa5, 0xa5, 0x8e, 0xa1, 0xc4, 0x3b, 0x81, 0x33, 0x3a, 0x8d, 0x56, 0x1f,
+ 0x41, 0x65, 0xb5, 0x7d, 0xb2, 0xc8, 0x2d, 0x8c, 0x92, 0xe6, 0x13, 0xfc,
+ 0x96, 0xc4, 0xca, 0xe8, 0x2a, 0xea, 0x39, 0x2e, 0xb4, 0xb6, 0xd0, 0xd7,
+ 0x30, 0xb4, 0xeb, 0x1c, 0xcc, 0x8e, 0x52, 0x53, 0x43, 0x0e, 0xce, 0xa3,
+ 0x93, 0xb0, 0xd1, 0x80, 0x6a, 0xf5, 0x5b, 0x36, 0x5d, 0x7b, 0xc6, 0xd0,
+ 0x23, 0x6c, 0xfa, 0x6c, 0x13, 0xac, 0x68, 0x16, 0xbf, 0x4f, 0xc5, 0xea,
+ 0x0c, 0x6f, 0xa5, 0x96, 0x58, 0x19, 0x3e, 0xdf, 0x40, 0x16, 0x13, 0xfd,
+ 0xad, 0xc5, 0xca, 0xc5, 0x17, 0xd4, 0xfa, 0x6b, 0x7d, 0x45, 0x84, 0x9a,
+ 0xda, 0x05, 0x8c, 0xed, 0x1a, 0xc1, 0xf3, 0xf2, 0x56, 0x9a, 0x2c, 0x01,
+ 0xae, 0x6c, 0x16, 0x3b, 0x57, 0xba, 0x7d, 0xd1, 0xcc, 0x08, 0xf1, 0x49,
+ 0x4b, 0x7a, 0x4d, 0xaf, 0xdd, 0x1b, 0x8f, 0x12, 0xe2, 0x4c, 0x0f, 0xe4,
+ 0xf3, 0xaa, 0x19, 0xce, 0xc4, 0xc5, 0xaf, 0x7d, 0x8f, 0x0c, 0x2f, 0xd5,
+ 0xc3, 0x6e, 0xd7, 0x1f, 0x8b, 0x79, 0x40, 0xea, 0x3d, 0x49, 0xf8, 0x95,
+ 0x1d, 0xc5, 0xa6, 0xd3, 0x21, 0xad, 0x6f, 0x0d, 0x6f, 0x6f, 0x8a, 0xe5,
+ 0x32, 0x72, 0x9f, 0x6b, 0x9d, 0x63, 0xcc, 0x93, 0xe2, 0x92, 0x9d, 0xfc,
+ 0xcf, 0xad, 0x74, 0xd4, 0xd2, 0x71, 0xaa, 0x2e, 0xd8, 0x27, 0x73, 0xf4,
+ 0x6c, 0x0f, 0xe4, 0xb7, 0x55, 0xcb, 0x75, 0x0f, 0xad, 0x77, 0x5f, 0x5b,
+ 0x9f, 0x7d, 0xae, 0x65, 0x6f, 0x27, 0x6d, 0x4c, 0x1b, 0x4b, 0x84, 0x6b,
+ 0xe6, 0x07, 0xc5, 0x51, 0xcf, 0xcf, 0x65, 0x7a, 0x39, 0xde, 0xd1, 0xa1,
+ 0x03, 0x92, 0x7c, 0x02, 0xe7, 0xb2, 0x2d, 0x16, 0xd8, 0x5e, 0xd0, 0x5a,
+ 0xd3, 0xc0, 0x26, 0x52, 0x53, 0x65, 0xf9, 0xcd, 0xb3, 0x2f, 0xd6, 0x26,
+ 0xc0, 0xdd, 0x74, 0x2f, 0xdd, 0x13, 0xfc, 0x14, 0xbf, 0x69, 0xbf, 0x7c,
+ 0x6c, 0x64, 0x4f, 0x30, 0x78, 0x54, 0x12, 0x49, 0x4f, 0x79, 0x48, 0x21,
+ 0xc4, 0x3c, 0x82, 0x3d, 0xb0, 0x07, 0x91, 0xe5, 0x58, 0x20, 0x8d, 0x75,
+ 0x8e, 0x40, 0x1f, 0x7a, 0x18, 0xa8, 0xb6, 0xfd, 0xb5, 0x90, 0xf0, 0x5b,
+ 0x24, 0xf7, 0x02, 0x4b, 0x7b, 0xab, 0x0d, 0x6b, 0xc6, 0x87, 0x4f, 0x33,
+ 0xe3, 0xdd, 0x25, 0x2a, 0x04, 0x07, 0x7d, 0x19, 0x11, 0xb4, 0xf3, 0xc4,
+ 0x2c, 0xfc, 0xa6, 0x91, 0x97, 0x86, 0xfe, 0x24, 0xd9, 0x51, 0x27, 0xbc,
+ 0x8d, 0xc3, 0xfe, 0xa5, 0x69, 0xd9, 0x5b, 0x5a, 0xdd, 0xdb, 0xc0, 0x8e,
+ 0xfc, 0xeb, 0xca, 0xa3, 0xd4, 0x44, 0x57, 0x55, 0xbf, 0xe8, 0xef, 0xad,
+ 0xc4, 0x9f, 0x07, 0x1d, 0x87, 0xfe, 0xa9, 0x25, 0x25, 0x30, 0x44, 0x70,
+ 0x66, 0x60, 0xf3, 0xf1, 0x2a, 0xbd, 0x6d, 0x23, 0x36, 0xc9, 0xfc, 0xea,
+ 0xda, 0x7e, 0xe8, 0x6f, 0xf0, 0x57, 0x2d, 0x63, 0x64, 0x90, 0x26, 0x74,
+ 0x11, 0xdf, 0x54, 0x27, 0x57, 0x19, 0x75, 0xd8, 0xd0, 0x48, 0x75, 0x6e,
+ 0x6b, 0x8f, 0xc0, 0xee, 0x49, 0x4c, 0x6c, 0xae, 0x5e, 0x3d, 0xa3, 0xda,
+ 0x24, 0x89, 0xd3, 0x8e, 0xff, 0x00, 0x35, 0x61, 0xa0, 0x3e, 0xa6, 0x97,
+ 0x6a, 0xd0, 0x24, 0xf6, 0x68, 0xee, 0xa3, 0x6b, 0x4f, 0xa8, 0x1b, 0x12,
+ 0x00, 0x12, 0xd1, 0xd9, 0x1a, 0x81, 0x35, 0x86, 0xba, 0x5d, 0xb4, 0x0d,
+ 0x38, 0x02, 0x34, 0x49, 0x4f, 0x27, 0xf5, 0xbe, 0x80, 0xdc, 0xba, 0x2f,
+ 0x6f, 0x16, 0xd5, 0x07, 0xe2, 0xc3, 0xfd, 0xc4, 0x2c, 0x05, 0xd8, 0x7d,
+ 0x70, 0xa5, 0x87, 0xa6, 0xe3, 0x5e, 0x00, 0x05, 0x97, 0x16, 0x69, 0xe0,
+ 0xf6, 0xee, 0xff, 0x00, 0xbe, 0xae, 0x3d, 0x25, 0x29, 0x24, 0x92, 0x49,
+ 0x4a, 0x49, 0x24, 0x92, 0x52, 0x97, 0xa0, 0x74, 0x1e, 0xba, 0xda, 0xfe,
+ 0xac, 0x9b, 0x1c, 0xe2, 0x1f, 0x8c, 0x3d, 0x07, 0x19, 0x33, 0xcf, 0xb0,
+ 0xff, 0x00, 0x9a, 0x7f, 0x05, 0xe7, 0xeb, 0x6f, 0xea, 0xd3, 0xc3, 0xdf,
+ 0x93, 0x8b, 0x69, 0x3f, 0x66, 0x75, 0x62, 0xeb, 0x20, 0x4c, 0x1a, 0x8f,
+ 0xb7, 0x4f, 0xed, 0x24, 0xa7, 0xa1, 0xc4, 0xcf, 0xc3, 0xb8, 0x07, 0x0b,
+ 0x47, 0xa8, 0xf2, 0x5e, 0xe2, 0x41, 0x99, 0x2a, 0xe3, 0x5c, 0x08, 0xda,
+ 0xe8, 0x32, 0x7e, 0xf0, 0x7e, 0x4b, 0x32, 0x9c, 0x8c, 0x2b, 0x6c, 0x63,
+ 0x18, 0xcb, 0x1f, 0x63, 0xe1, 0xa1, 0xc0, 0x01, 0xaf, 0xc2, 0x74, 0x5a,
+ 0x8d, 0xaa, 0x01, 0x30, 0xe2, 0x01, 0x00, 0x6e, 0x8f, 0xef, 0x49, 0x4b,
+ 0x3a, 0x1b, 0x4b, 0xa5, 0xc0, 0x76, 0x68, 0x1c, 0xf3, 0xe6, 0x85, 0xb4,
+ 0x92, 0x7b, 0xcf, 0x87, 0xc5, 0x35, 0xd0, 0xc6, 0x13, 0xb5, 0xc4, 0x92,
+ 0x5a, 0x03, 0x44, 0x9d, 0xdc, 0x8f, 0xc8, 0xa5, 0x51, 0x12, 0xd9, 0xdc,
+ 0x46, 0xbd, 0xb5, 0x49, 0x4c, 0x36, 0x86, 0x30, 0x97, 0x01, 0x10, 0x47,
+ 0x3a, 0x95, 0xcf, 0x75, 0xfc, 0xaf, 0x57, 0x11, 0x95, 0xb4, 0x90, 0xd6,
+ 0x58, 0x65, 0xbf, 0x29, 0xd5, 0x74, 0xd7, 0x6d, 0x2d, 0xda, 0x43, 0x81,
+ 0xd3, 0x5d, 0x07, 0x3f, 0x12, 0xb9, 0x3e, 0xbb, 0x4d, 0x94, 0xb7, 0xdc,
+ 0xef, 0x63, 0xac, 0x1b, 0x1a, 0x46, 0xba, 0x37, 0x52, 0x4c, 0x79, 0xa4,
+ 0xa7, 0x15, 0x2e, 0xc9, 0x25, 0xd9, 0x25, 0x29, 0x39, 0xe0, 0x26, 0x4e,
+ 0x78, 0x1f, 0x0f, 0xe2, 0x92, 0x96, 0x5b, 0xff, 0x00, 0x56, 0x47, 0xeb,
+ 0x4e, 0x93, 0x03, 0x64, 0xc9, 0xed, 0xa0, 0x58, 0x0b, 0xa0, 0xfa, 0xb2,
+ 0xe7, 0x0c, 0xa9, 0x60, 0x93, 0xb4, 0xff, 0x00, 0xd4, 0x84, 0x94, 0xf4,
+ 0x3d, 0x32, 0xd6, 0x3d, 0x99, 0x35, 0x99, 0x69, 0x65, 0xe5, 0xae, 0x9e,
+ 0x60, 0xb6, 0x47, 0xe5, 0x5a, 0xb8, 0xbb, 0x1d, 0x75, 0xad, 0x71, 0xfa,
+ 0x0d, 0x1e, 0xe6, 0xf7, 0xf7, 0x44, 0x80, 0xb1, 0x7a, 0x6d, 0x6e, 0x7d,
+ 0xbd, 0x48, 0x91, 0xab, 0x6f, 0x06, 0x3c, 0xcd, 0x61, 0x6e, 0x74, 0xf1,
+ 0x53, 0xee, 0xb0, 0x5b, 0xa4, 0x55, 0x0d, 0x23, 0xc5, 0x87, 0x70, 0xd5,
+ 0x25, 0x3a, 0xb5, 0x88, 0x6b, 0x1d, 0x5b, 0x44, 0x40, 0x6b, 0x1b, 0xf4,
+ 0x40, 0x2e, 0xd7, 0xb2, 0x9e, 0x45, 0xb5, 0xe3, 0x32, 0x5a, 0xd0, 0xd8,
+ 0xd1, 0xbe, 0x25, 0xc7, 0x95, 0x4f, 0x1b, 0x3a, 0xa1, 0x45, 0x77, 0x38,
+ 0x97, 0x31, 0x95, 0x87, 0x30, 0xc6, 0xdd, 0xce, 0x23, 0xf3, 0x7c, 0x67,
+ 0x8d, 0x16, 0x76, 0x76, 0x65, 0x8e, 0x15, 0x3d, 0xfe, 0xd2, 0x75, 0x22,
+ 0x67, 0xdc, 0xe0, 0x5d, 0xca, 0x4a, 0x68, 0x75, 0x2c, 0xa7, 0xdd, 0x90,
+ 0xf9, 0x33, 0x1a, 0x05, 0x99, 0x99, 0x70, 0xa2, 0x87, 0x58, 0x4e, 0xa0,
+ 0x68, 0xa7, 0x75, 0xbe, 0xf9, 0x07, 0xbe, 0xab, 0x27, 0xaf, 0x5d, 0x34,
+ 0xb0, 0x0e, 0x0e, 0x81, 0x25, 0x38, 0xf9, 0x37, 0xfa, 0xcf, 0x91, 0xa0,
+ 0x08, 0x29, 0x24, 0x92, 0x94, 0x92, 0x49, 0x24, 0xa7, 0xd0, 0x2c, 0x86,
+ 0x5a, 0xc7, 0xb8, 0xea, 0x1a, 0x41, 0x68, 0x8e, 0xe7, 0x95, 0x64, 0x6e,
+ 0x89, 0xe6, 0x7f, 0x39, 0x50, 0xbf, 0x18, 0x3e, 0xf7, 0x1b, 0x37, 0x16,
+ 0xda, 0x37, 0x30, 0x00, 0x49, 0x98, 0x82, 0x27, 0xc9, 0x5d, 0xa5, 0xce,
+ 0x0d, 0x88, 0x00, 0x33, 0xdb, 0xfc, 0x9d, 0x12, 0x53, 0x38, 0x3b, 0x5c,
+ 0x40, 0x91, 0x00, 0xee, 0x77, 0xf7, 0x20, 0x66, 0xd4, 0xfb, 0xfa, 0x76,
+ 0x43, 0xaa, 0x6b, 0xac, 0x8a, 0x8b, 0xf7, 0x76, 0x05, 0x83, 0x7f, 0xf0,
+ 0x56, 0x4c, 0x11, 0x00, 0x4c, 0xc8, 0x97, 0x4f, 0xe4, 0x51, 0x6d, 0x8e,
+ 0x63, 0x4d, 0x6e, 0x71, 0x15, 0x59, 0x2d, 0x77, 0x61, 0xc4, 0x24, 0xa6,
+ 0x0d, 0x73, 0x6d, 0x6d, 0x76, 0x03, 0xb8, 0x3d, 0xad, 0x3f, 0x37, 0x6b,
+ 0xf7, 0x26, 0x7b, 0x0e, 0xec, 0x72, 0x38, 0xde, 0x41, 0x23, 0xb8, 0x73,
+ 0x4c, 0x7e, 0x45, 0x5b, 0x09, 0xce, 0x18, 0x34, 0xb7, 0xf3, 0xab, 0x1b,
+ 0x1d, 0xe2, 0x76, 0x3b, 0x6e, 0x9f, 0x72, 0xb3, 0x17, 0x17, 0x68, 0xc3,
+ 0xb2, 0xb2, 0x1c, 0x74, 0xe2, 0x3c, 0x12, 0x53, 0x27, 0x02, 0x1e, 0x38,
+ 0xdd, 0x12, 0x47, 0xc3, 0x4d, 0x54, 0xb1, 0xec, 0x6b, 0xac, 0x70, 0x6c,
+ 0xb9, 0xa6, 0x5d, 0x07, 0x40, 0x24, 0x6e, 0x42, 0x68, 0x79, 0xb1, 0xcf,
+ 0x20, 0x11, 0xa1, 0x68, 0xdc, 0x37, 0x48, 0x70, 0x77, 0x8a, 0x2e, 0x3e,
+ 0x3b, 0x58, 0xe2, 0xf7, 0x38, 0x6d, 0x1a, 0x43, 0x43, 0xb5, 0x8d, 0x07,
+ 0x68, 0x49, 0x4d, 0x2f, 0xac, 0xb5, 0x7d, 0xa3, 0xa0, 0xdf, 0x60, 0xd0,
+ 0x54, 0xea, 0xec, 0x00, 0x44, 0x68, 0xed, 0x87, 0x8f, 0xeb, 0x2e, 0x09,
+ 0x7a, 0x5e, 0x70, 0xc6, 0xcc, 0xe9, 0x39, 0x58, 0xf5, 0x8d, 0xcd, 0x7d,
+ 0x2f, 0x2c, 0x77, 0x8b, 0x9a, 0x37, 0x37, 0xfe, 0x90, 0x5e, 0x68, 0x92,
+ 0x94, 0x92, 0x49, 0x24, 0xa5, 0x24, 0x92, 0x49, 0x29, 0x4b, 0x67, 0xea,
+ 0xcb, 0xac, 0x39, 0x76, 0xe3, 0xb0, 0x4b, 0x72, 0x59, 0xe9, 0x58, 0xe0,
+ 0x63, 0x6b, 0x1c, 0x46, 0xbf, 0x7c, 0x2c, 0x65, 0xb7, 0xf5, 0x52, 0xda,
+ 0xeb, 0xcf, 0xb3, 0x78, 0x2e, 0x2e, 0xa8, 0x86, 0x86, 0x89, 0x3f, 0x49,
+ 0xae, 0xfe, 0x09, 0x29, 0xe9, 0xf0, 0xba, 0x4d, 0x38, 0x0e, 0x7e, 0x46,
+ 0xe3, 0x6b, 0x8c, 0x32, 0xb0, 0x60, 0x06, 0xfe, 0xf1, 0x1e, 0x2a, 0xcb,
+ 0xe5, 0x9e, 0xd3, 0x3a, 0x83, 0xa2, 0x95, 0x79, 0x35, 0xdc, 0xe0, 0x77,
+ 0x02, 0x5a, 0x3e, 0x81, 0x90, 0xe0, 0x7e, 0x05, 0x47, 0x25, 0xc1, 0xd6,
+ 0xb5, 0xe3, 0x52, 0xd9, 0x13, 0xe0, 0x92, 0x98, 0xe4, 0xbc, 0x83, 0x8e,
+ 0xd1, 0x13, 0x65, 0x86, 0x7e, 0x4c, 0x71, 0x4a, 0xc6, 0x06, 0x34, 0x16,
+ 0xea, 0x41, 0x0a, 0xb6, 0x6d, 0x83, 0xd4, 0xc4, 0x33, 0x23, 0xd4, 0x77,
+ 0xfe, 0x7b, 0x7a, 0x96, 0x3d, 0xa0, 0x87, 0x31, 0xba, 0xed, 0x2d, 0x99,
+ 0x3f, 0x34, 0x94, 0xd9, 0xb1, 0xbe, 0x2d, 0x89, 0x02, 0x27, 0x50, 0x24,
+ 0x79, 0x2e, 0x67, 0xeb, 0x3b, 0xd8, 0xca, 0xc6, 0x2e, 0xd2, 0x48, 0x70,
+ 0xb5, 0xb6, 0x76, 0x83, 0x2d, 0x85, 0xd2, 0xdb, 0x78, 0x60, 0x2e, 0x3c,
+ 0x01, 0xc9, 0x5c, 0xbf, 0xd6, 0x0c, 0xb1, 0x91, 0x41, 0x01, 0xa7, 0xe9,
+ 0x34, 0xee, 0x22, 0x38, 0xd3, 0xf8, 0xa4, 0xa7, 0x9d, 0x4e, 0x78, 0x09,
+ 0x93, 0x92, 0x20, 0x79, 0x24, 0xa5, 0x93, 0xbb, 0x86, 0xfc, 0x3f, 0x89,
+ 0x4c, 0x97, 0x82, 0x4a, 0x52, 0xe8, 0x3e, 0xab, 0x11, 0xf6, 0xa2, 0x60,
+ 0xba, 0x5a, 0x5a, 0x00, 0xf1, 0xda, 0xb9, 0xf5, 0xbb, 0xf5, 0x59, 0xc1,
+ 0xb9, 0x72, 0xee, 0x35, 0xef, 0x1c, 0xb5, 0x25, 0x3d, 0x37, 0x49, 0xb7,
+ 0x65, 0xdd, 0x4a, 0xb2, 0xd0, 0x5d, 0x6d, 0xcc, 0x00, 0xcc, 0x41, 0x35,
+ 0x8d, 0x56, 0xa6, 0x2b, 0x09, 0x71, 0x6d, 0x9e, 0xd7, 0x6e, 0x00, 0x1f,
+ 0x10, 0x5c, 0x74, 0x59, 0xbd, 0x32, 0xa6, 0xdd, 0xd4, 0xb2, 0xeb, 0x00,
+ 0x9f, 0xd3, 0x52, 0x1c, 0xd6, 0xe8, 0x7f, 0x9a, 0x1c, 0x4a, 0xdf, 0x6d,
+ 0x25, 0xb6, 0x9d, 0xa7, 0x74, 0x39, 0xba, 0x44, 0x39, 0xb3, 0x3a, 0x10,
+ 0x52, 0x53, 0x21, 0x63, 0x69, 0x21, 0xf6, 0x68, 0xd6, 0xc0, 0x90, 0x09,
+ 0xd2, 0x76, 0x81, 0x03, 0xb6, 0xab, 0x3f, 0xab, 0x50, 0xed, 0xaf, 0xd3,
+ 0x73, 0x6a, 0xb0, 0x3a, 0x7b, 0xc3, 0xbc, 0x82, 0xd4, 0xb6, 0xb6, 0xb6,
+ 0xd2, 0x44, 0x90, 0x01, 0x97, 0x03, 0xa8, 0x9f, 0x05, 0x5b, 0x2e, 0x9b,
+ 0x45, 0x62, 0xc6, 0xd8, 0xeb, 0x76, 0x30, 0xb5, 0xd5, 0xc0, 0x73, 0xac,
+ 0x1a, 0x10, 0x49, 0x31, 0xa8, 0x49, 0x4f, 0x21, 0x98, 0xc2, 0xdb, 0x1d,
+ 0x1c, 0x72, 0x16, 0x3f, 0x54, 0x66, 0xec, 0x69, 0xe4, 0xb3, 0xfb, 0xd7,
+ 0x45, 0x9d, 0x58, 0x6b, 0xf5, 0x23, 0x61, 0xfa, 0x27, 0xb7, 0xc1, 0x62,
+ 0xe6, 0x56, 0x4b, 0x5e, 0xc3, 0xa8, 0x3a, 0x6a, 0x92, 0x9e, 0x75, 0x25,
+ 0x27, 0xb1, 0xcc, 0x71, 0x6b, 0xb9, 0x0a, 0x29, 0x29, 0x49, 0x24, 0x92,
+ 0x4a, 0x7d, 0x1c, 0x9b, 0x3d, 0x47, 0x34, 0x5a, 0x1a, 0xd1, 0xa3, 0x9a,
+ 0xc0, 0x5f, 0x27, 0xbf, 0x97, 0xe2, 0xa6, 0xc7, 0x57, 0x5b, 0x5a, 0x36,
+ 0xba, 0x60, 0xf1, 0x0d, 0x68, 0x93, 0xe6, 0x4a, 0x0d, 0x4d, 0x35, 0xb0,
+ 0x32, 0xb1, 0x2d, 0x1a, 0x6a, 0x49, 0x23, 0xe6, 0x89, 0xb1, 0xe4, 0x6d,
+ 0x2e, 0x10, 0x7e, 0xff, 0x00, 0xc1, 0x25, 0x24, 0x37, 0x4b, 0xc9, 0x6b,
+ 0x04, 0xf2, 0x37, 0xb8, 0xbb, 0xf2, 0x42, 0x0b, 0xed, 0xba, 0x19, 0x01,
+ 0x9a, 0xbe, 0x1d, 0x00, 0x68, 0x3b, 0xbb, 0xdd, 0x3e, 0x0a, 0x62, 0xbd,
+ 0xb1, 0x2e, 0xe3, 0x41, 0xd9, 0x42, 0xdb, 0x58, 0x1a, 0x5d, 0x00, 0x11,
+ 0xac, 0xf9, 0x77, 0xf1, 0x49, 0x4b, 0x35, 0xd6, 0xd6, 0xd7, 0x54, 0xc7,
+ 0x10, 0xc7, 0x12, 0xe8, 0x6f, 0xb5, 0xbb, 0x8e, 0xba, 0x81, 0xe2, 0x95,
+ 0x2f, 0x79, 0xac, 0x32, 0xd6, 0xfb, 0x88, 0xf7, 0x1d, 0x48, 0x27, 0xcb,
+ 0x77, 0x64, 0x06, 0xe6, 0xd3, 0xb7, 0xda, 0x47, 0x3a, 0x91, 0xe3, 0xfd,
+ 0x9d, 0x51, 0x06, 0x43, 0x09, 0x1e, 0xe1, 0xe7, 0x0f, 0x10, 0x0a, 0x4a,
+ 0x4c, 0xe2, 0xe0, 0xcd, 0x00, 0x04, 0x1d, 0x20, 0x22, 0x30, 0x90, 0x46,
+ 0xe9, 0x33, 0xca, 0xae, 0xcb, 0x3d, 0x42, 0xf7, 0x35, 0xc3, 0xc0, 0x92,
+ 0xe9, 0x1f, 0x81, 0x53, 0x70, 0x7b, 0x75, 0x3b, 0x4f, 0xca, 0x3f, 0x2a,
+ 0x4a, 0x6c, 0x34, 0xd7, 0x21, 0xad, 0x03, 0x6b, 0xb9, 0x03, 0xc3, 0xba,
+ 0xf3, 0x4c, 0x9a, 0xbd, 0x1c, 0x8b, 0x69, 0xff, 0x00, 0x46, 0xf7, 0x33,
+ 0xfc, 0xd3, 0x0b, 0xbf, 0x75, 0xf6, 0x35, 0xec, 0x65, 0x50, 0xf7, 0x1f,
+ 0xcd, 0x93, 0xa3, 0x7b, 0xb8, 0xc9, 0x8f, 0xc1, 0x71, 0xbf, 0x58, 0x6a,
+ 0xf4, 0xba, 0xce, 0x5b, 0x7f, 0x79, 0xfb, 0xc7, 0xfd, 0x70, 0x07, 0xff,
+ 0x00, 0x14, 0x94, 0xe7, 0x24, 0x92, 0x49, 0x29, 0x49, 0x24, 0x92, 0x4a,
+ 0x52, 0xd5, 0xfa, 0xb0, 0xe0, 0xde, 0xb1, 0x4c, 0x98, 0x90, 0xf0, 0x3c,
+ 0xc9, 0x69, 0xd1, 0x65, 0x2d, 0x3f, 0xab, 0x96, 0x32, 0xbe, 0xb1, 0x8f,
+ 0xbc, 0x48, 0x71, 0x2c, 0xf8, 0x17, 0x02, 0x01, 0xfb, 0xd2, 0x53, 0xdd,
+ 0x3e, 0xa6, 0xba, 0x1c, 0x00, 0x24, 0xf0, 0x62, 0x7f, 0xda, 0xab, 0x64,
+ 0x02, 0xc7, 0x81, 0x1a, 0x2d, 0x22, 0xd0, 0xf6, 0xb5, 0xcc, 0x77, 0xb4,
+ 0x8e, 0xcb, 0x2f, 0x3e, 0x05, 0xba, 0x93, 0xf1, 0x12, 0x52, 0x53, 0x9b,
+ 0xd6, 0xed, 0x2c, 0xaa, 0x9d, 0xa4, 0x8d, 0xaf, 0xe5, 0xbc, 0x83, 0x04,
+ 0x22, 0x74, 0x2d, 0xa6, 0x8b, 0x4b, 0x89, 0x71, 0x2f, 0x1f, 0x4b, 0xe1,
+ 0xe4, 0xa8, 0xf5, 0xe7, 0x8f, 0x42, 0xbd, 0x80, 0x82, 0x6c, 0x6f, 0x3f,
+ 0x35, 0x77, 0xa2, 0xba, 0x31, 0x25, 0xc3, 0xf3, 0xf5, 0xf9, 0x24, 0xa6,
+ 0xf6, 0x61, 0x24, 0x6d, 0x04, 0x12, 0x07, 0x0b, 0x9a, 0xeb, 0xef, 0x70,
+ 0xaa, 0xb6, 0x1d, 0x24, 0xf1, 0xf0, 0x0b, 0xa5, 0xcb, 0x73, 0x36, 0x6e,
+ 0x6c, 0x89, 0x23, 0x50, 0xb9, 0xbf, 0xac, 0x85, 0xb1, 0x48, 0xfc, 0xed,
+ 0x49, 0x3d, 0xd2, 0x53, 0x84, 0x92, 0x49, 0x24, 0xa5, 0x24, 0x92, 0x49,
+ 0x29, 0x4b, 0x67, 0xea, 0xdb, 0x05, 0x99, 0x5b, 0x0f, 0x72, 0x3f, 0x21,
+ 0xf0, 0x58, 0xcb, 0x6f, 0xea, 0xb1, 0x3f, 0xb4, 0x18, 0x3f, 0x94, 0xdf,
+ 0x2e, 0xc5, 0x25, 0x3d, 0x7d, 0x18, 0xe3, 0x12, 0xfb, 0x6f, 0x0e, 0x2e,
+ 0x76, 0x4b, 0xd8, 0xf7, 0x01, 0xa6, 0xd2, 0xc1, 0xb1, 0xbf, 0x91, 0x6b,
+ 0x63, 0x64, 0x1b, 0xae, 0x06, 0xc7, 0x1f, 0x51, 0xb3, 0xee, 0x00, 0x6b,
+ 0x03, 0xb9, 0xee, 0xb1, 0xdb, 0x3e, 0xbe, 0x43, 0x89, 0x9d, 0xcf, 0x64,
+ 0x8f, 0x80, 0x8f, 0xe0, 0xac, 0xb2, 0xc0, 0xca, 0xad, 0x20, 0xc3, 0xb5,
+ 0xe7, 0x91, 0x22, 0x12, 0x53, 0xbd, 0x6b, 0x59, 0x58, 0xdc, 0xd6, 0x9d,
+ 0xce, 0xf6, 0x92, 0x07, 0xe2, 0x56, 0x76, 0x75, 0xce, 0x20, 0x52, 0xc9,
+ 0x69, 0x77, 0x26, 0x34, 0x00, 0x72, 0xae, 0x54, 0xe2, 0x71, 0x2a, 0x7b,
+ 0x89, 0x70, 0x7b, 0x5b, 0x2f, 0x1e, 0xf0, 0x34, 0xda, 0x75, 0xf8, 0xf7,
+ 0x54, 0x73, 0x5c, 0x1a, 0xdb, 0x7d, 0x30, 0x44, 0x16, 0xeb, 0xac, 0x34,
+ 0x36, 0x0f, 0xf0, 0x49, 0x4e, 0x1e, 0x5d, 0x77, 0x59, 0x7d, 0x80, 0xd6,
+ 0x20, 0x6c, 0x60, 0xdb, 0xaf, 0xaa, 0xd2, 0x3e, 0x93, 0x81, 0x98, 0xfe,
+ 0x0b, 0x1f, 0xa8, 0xe2, 0x65, 0x63, 0xcb, 0xdb, 0x5b, 0xdc, 0xc2, 0x62,
+ 0x00, 0xdd, 0xa7, 0xc5, 0x74, 0x7b, 0xcd, 0xb7, 0xff, 0x00, 0x36, 0x1e,
+ 0x1c, 0x01, 0xdc, 0x03, 0x80, 0x91, 0xaf, 0xd3, 0x1a, 0x29, 0xda, 0xcc,
+ 0x87, 0x30, 0xfa, 0x85, 0x9b, 0x08, 0xf6, 0xb4, 0x6a, 0x27, 0xe2, 0x92,
+ 0x9e, 0x16, 0xcc, 0x4b, 0x72, 0x35, 0x35, 0x90, 0x7e, 0xe2, 0x15, 0x4b,
+ 0x3a, 0x7e, 0x5b, 0x08, 0xfd, 0x19, 0x33, 0xa8, 0x5d, 0xcd, 0xb8, 0x60,
+ 0x80, 0xe2, 0xd6, 0x17, 0x1d, 0x1e, 0x44, 0x9f, 0xc8, 0xa0, 0x31, 0xeb,
+ 0x00, 0x83, 0x5d, 0x87, 0xdc, 0x5c, 0x1c, 0x1b, 0xc0, 0xf0, 0x97, 0x14,
+ 0x94, 0xf0, 0xae, 0xc5, 0xc9, 0x6c, 0x07, 0x54, 0xf1, 0x3c, 0x7b, 0x4e,
+ 0xaa, 0x3e, 0x8d, 0xb1, 0x3b, 0x1d, 0x13, 0x13, 0x07, 0x9f, 0x05, 0xda,
+ 0xd5, 0x4d, 0x96, 0x3d, 0xc6, 0xb9, 0xab, 0xd3, 0x30, 0x1a, 0x48, 0x0e,
+ 0xd7, 0xc2, 0x3b, 0x2b, 0xbf, 0xb2, 0xdb, 0xf6, 0x7d, 0xba, 0xef, 0xfa,
+ 0x73, 0xaf, 0x33, 0x3c, 0xfc, 0x52, 0x52, 0xc1, 0xc5, 0xd2, 0xd9, 0x93,
+ 0x1c, 0x47, 0x64, 0x9a, 0xe7, 0x02, 0x78, 0x10, 0x0c, 0x14, 0x32, 0xd7,
+ 0x96, 0x92, 0xd7, 0x1d, 0x07, 0x7d, 0x06, 0x88, 0x58, 0xed, 0xf5, 0x5b,
+ 0xea, 0xbd, 0xcf, 0xf8, 0x40, 0x03, 0xe4, 0x92, 0x9b, 0x02, 0xdd, 0xce,
+ 0x00, 0x4b, 0x9c, 0x3c, 0xbd, 0xbf, 0x18, 0xe1, 0x31, 0xb2, 0x96, 0xbc,
+ 0x87, 0xb8, 0x82, 0x5c, 0x1a, 0x0c, 0xfd, 0x27, 0x73, 0x09, 0xf7, 0x00,
+ 0x5a, 0x58, 0xd2, 0x5c, 0x4e, 0x85, 0xdc, 0x15, 0x17, 0x55, 0xfa, 0x6a,
+ 0xae, 0xb6, 0x1c, 0x58, 0x49, 0x12, 0xe3, 0x1f, 0x08, 0x49, 0x48, 0x46,
+ 0x2d, 0x06, 0xd7, 0x1a, 0xbf, 0x3c, 0x6e, 0xf7, 0xf0, 0xde, 0x67, 0xe5,
+ 0xdd, 0x4b, 0x17, 0x1a, 0xba, 0x1d, 0x61, 0xac, 0xc3, 0x6c, 0xf7, 0x16,
+ 0x0d, 0x19, 0x3e, 0x2e, 0x3a, 0x9d, 0x7c, 0x02, 0x27, 0xa8, 0xc7, 0xd8,
+ 0xe6, 0x12, 0x1b, 0x77, 0x2e, 0x04, 0xc1, 0xda, 0x7e, 0x8c, 0x08, 0x98,
+ 0x2a, 0x4e, 0xb5, 0x95, 0xd8, 0x5b, 0x70, 0x0d, 0xad, 0xad, 0x91, 0x6b,
+ 0xdc, 0xd0, 0x24, 0xf6, 0x6b, 0x38, 0x01, 0x25, 0x30, 0x7b, 0xdd, 0x45,
+ 0x6e, 0xb9, 0xb5, 0x1b, 0x6d, 0x76, 0xd0, 0x62, 0x1a, 0x20, 0x7e, 0xee,
+ 0xb3, 0xa2, 0x37, 0xa8, 0xf7, 0x56, 0x2c, 0x97, 0x03, 0xc9, 0x0c, 0x68,
+ 0xdd, 0xe3, 0x07, 0x71, 0x05, 0x55, 0xb7, 0xaa, 0x74, 0x9a, 0xe3, 0x7e,
+ 0x4d, 0x6e, 0x79, 0xe7, 0xdc, 0x6c, 0xfc, 0x2b, 0x0e, 0x51, 0xff, 0x00,
+ 0x9c, 0x58, 0x40, 0xc5, 0x35, 0x64, 0x5d, 0x3a, 0x34, 0x57, 0x58, 0x68,
+ 0x27, 0xe2, 0xf3, 0x29, 0x29, 0x26, 0x25, 0x76, 0x6b, 0x91, 0x68, 0xdd,
+ 0x7d, 0x84, 0x86, 0x7a, 0x90, 0x76, 0xb6, 0x79, 0xff, 0x00, 0x62, 0xe7,
+ 0xbe, 0xb8, 0x56, 0x47, 0x53, 0x65, 0xa4, 0x47, 0xab, 0x4b, 0x4f, 0xcd,
+ 0xa4, 0xb3, 0xf8, 0x2d, 0xb7, 0xf5, 0x1c, 0xab, 0xad, 0xaf, 0x67, 0x4b,
+ 0x03, 0x69, 0x0e, 0x63, 0xef, 0xb2, 0x48, 0x3f, 0xbd, 0x0d, 0x0a, 0x87,
+ 0xd7, 0x0a, 0xec, 0x76, 0x36, 0x0e, 0x4b, 0xda, 0x1a, 0xe2, 0x6c, 0x63,
+ 0xa3, 0xc4, 0xc3, 0xa3, 0xf2, 0xa4, 0xa7, 0x96, 0x49, 0x24, 0x92, 0x52,
+ 0x92, 0x49, 0x24, 0x94, 0xa5, 0x63, 0xa7, 0xd9, 0xe9, 0x67, 0x63, 0xd9,
+ 0x31, 0xb6, 0xc6, 0x12, 0x7c, 0xb7, 0x05, 0x5d, 0x49, 0x9a, 0x3d, 0xa7,
+ 0xcc, 0x24, 0xa7, 0xd4, 0x28, 0x73, 0x43, 0x0b, 0x74, 0xd7, 0x51, 0xf2,
+ 0xe5, 0x65, 0xe7, 0x12, 0x6c, 0xdb, 0xba, 0x5a, 0x0f, 0xb6, 0x3c, 0x56,
+ 0x86, 0x23, 0x65, 0xa1, 0xa3, 0xe8, 0xb6, 0x5b, 0x3e, 0x7c, 0xac, 0x5c,
+ 0xe7, 0x39, 0xb9, 0xae, 0xac, 0xbb, 0x46, 0x1e, 0xdd, 0xca, 0x4a, 0x73,
+ 0x7a, 0xed, 0x9f, 0xab, 0x57, 0x0d, 0xd1, 0xaf, 0x69, 0x92, 0xb6, 0x3a,
+ 0x4d, 0x75, 0xfd, 0x88, 0x5c, 0x34, 0x04, 0x9d, 0x3c, 0xa5, 0x62, 0x75,
+ 0xa2, 0xd3, 0x4d, 0x6c, 0x9d, 0xce, 0xf5, 0x06, 0xef, 0xc5, 0x6c, 0x60,
+ 0x1f, 0x4f, 0x06, 0xaa, 0xc4, 0xc8, 0x1f, 0x94, 0xa4, 0xa6, 0xed, 0xad,
+ 0x63, 0xaa, 0x3b, 0x88, 0x3a, 0x88, 0x10, 0xb9, 0x3f, 0xac, 0x44, 0x1b,
+ 0x2a, 0x02, 0x09, 0x82, 0x5c, 0x42, 0xeb, 0xde, 0xcd, 0xcc, 0x0d, 0x64,
+ 0x12, 0x47, 0xdc, 0xb8, 0xde, 0xbe, 0x23, 0x21, 0xad, 0xf0, 0x2e, 0xd7,
+ 0xc7, 0x84, 0x94, 0xe5, 0x24, 0x92, 0x49, 0x29, 0x49, 0x24, 0x92, 0x4a,
+ 0x52, 0xd9, 0xfa, 0xae, 0xed, 0xbd, 0x45, 0x86, 0x60, 0xef, 0x6c, 0x0e,
+ 0xe7, 0x95, 0x8c, 0xb5, 0xfe, 0xac, 0xc7, 0xed, 0x2a, 0xa7, 0x43, 0xbd,
+ 0x90, 0x7e, 0x26, 0x12, 0x53, 0xda, 0x96, 0xcd, 0xb7, 0xec, 0x70, 0xaf,
+ 0xdc, 0x36, 0xbc, 0x8d, 0xdb, 0x4c, 0xfe, 0xee, 0x8a, 0x6d, 0xae, 0xb7,
+ 0x38, 0x33, 0x91, 0x6b, 0xc3, 0x4c, 0xf1, 0x1a, 0xc9, 0xfc, 0x14, 0x18,
+ 0xd0, 0xec, 0xac, 0x96, 0x8d, 0x4b, 0x5c, 0xc9, 0xf9, 0x92, 0x47, 0xe4,
+ 0x44, 0x1f, 0xce, 0xb7, 0x49, 0xfa, 0x44, 0x47, 0x90, 0xff, 0x00, 0x6a,
+ 0x4a, 0x6d, 0xe2, 0xb9, 0xb8, 0xf6, 0xbe, 0xba, 0x01, 0xf4, 0x2b, 0x74,
+ 0x43, 0x4e, 0x92, 0xe1, 0x32, 0x01, 0x3e, 0x25, 0x57, 0xce, 0xea, 0xf4,
+ 0xe2, 0xbe, 0x9a, 0x5b, 0x5b, 0xc0, 0xbd, 0xc7, 0xd4, 0x70, 0x13, 0xb7,
+ 0x64, 0x13, 0x21, 0xa7, 0x59, 0x4e, 0xc9, 0x65, 0x96, 0x38, 0xb7, 0x92,
+ 0xd2, 0x5b, 0xac, 0x18, 0x1e, 0x4a, 0x86, 0x73, 0xed, 0xbb, 0x22, 0x8f,
+ 0x41, 0xa3, 0x70, 0x73, 0x81, 0x9d, 0x4e, 0xa3, 0x9d, 0x7e, 0x09, 0x29,
+ 0xb7, 0x8f, 0x7d, 0xd9, 0x15, 0x9b, 0x2d, 0x63, 0x85, 0x00, 0x9d, 0x1e,
+ 0x03, 0x74, 0x9d, 0x39, 0xfc, 0x54, 0xb6, 0x63, 0xb0, 0xed, 0xc7, 0xa9,
+ 0xa0, 0xc4, 0x9d, 0xa3, 0x73, 0x60, 0xf9, 0xe8, 0x04, 0xa8, 0xd5, 0x57,
+ 0x53, 0xb1, 0xa1, 0xad, 0x61, 0x81, 0x04, 0x7a, 0xa0, 0x01, 0x03, 0xb1,
+ 0xf1, 0x56, 0x5b, 0x81, 0x79, 0x0d, 0xdd, 0xb5, 0xa5, 0xda, 0xb9, 0x8d,
+ 0xf7, 0xf1, 0xf2, 0x10, 0x92, 0x90, 0x7d, 0xba, 0xbd, 0xa0, 0x8d, 0xc0,
+ 0x87, 0x7d, 0x17, 0x6d, 0x60, 0x70, 0xf1, 0x94, 0xcd, 0xc8, 0xa7, 0x21,
+ 0xe2, 0x80, 0xe6, 0x36, 0xe2, 0xe1, 0x15, 0x93, 0x3b, 0x87, 0xd2, 0xe5,
+ 0xb2, 0x38, 0x56, 0x5b, 0xd2, 0xb1, 0xab, 0xc9, 0x0e, 0xda, 0xf6, 0xd7,
+ 0x3e, 0xd6, 0xee, 0x96, 0x9f, 0xee, 0x57, 0x2c, 0xc4, 0xc6, 0x69, 0x6b,
+ 0x9f, 0x58, 0x04, 0x00, 0x6b, 0x31, 0x24, 0x6d, 0xf0, 0x23, 0x54, 0x94,
+ 0xe7, 0xfa, 0x4c, 0x36, 0x16, 0xb1, 0x9a, 0x30, 0x3a, 0x5c, 0xce, 0x40,
+ 0x1d, 0xa0, 0x2a, 0xfe, 0xae, 0x4f, 0xda, 0x3f, 0x99, 0xb3, 0xec, 0xfb,
+ 0x66, 0x3d, 0x3f, 0x6c, 0x4f, 0xd3, 0xdd, 0xcc, 0xc7, 0x68, 0x5a, 0x2e,
+ 0xab, 0x14, 0xb8, 0x7a, 0xc1, 0xce, 0x82, 0x43, 0x5c, 0x24, 0x6b, 0xcc,
+ 0x79, 0x14, 0x7d, 0xdf, 0xa0, 0x88, 0x3f, 0x47, 0xe8, 0xeb, 0x31, 0xc4,
+ 0xfd, 0xc9, 0x29, 0xe3, 0x0f, 0x59, 0xc4, 0x66, 0x43, 0x8b, 0xf2, 0x2a,
+ 0x34, 0xc0, 0x0d, 0x63, 0x25, 0xee, 0xdd, 0xe3, 0x2c, 0x09, 0x8f, 0xd6,
+ 0x0c, 0x06, 0x98, 0xaa, 0xab, 0xed, 0x3d, 0xb6, 0x30, 0x34, 0x69, 0xfd,
+ 0x62, 0xae, 0x62, 0xf4, 0xba, 0x45, 0x60, 0xb6, 0x86, 0x35, 0xc6, 0x0f,
+ 0xc8, 0x79, 0xa3, 0x8c, 0x5a, 0x8b, 0x5c, 0x0b, 0x40, 0x8d, 0x1d, 0x1e,
+ 0x72, 0xdf, 0xfb, 0xf2, 0x4a, 0x73, 0x7f, 0x69, 0x75, 0x1b, 0x4c, 0x63,
+ 0xf4, 0xc2, 0xd2, 0x0e, 0x86, 0xd7, 0xcf, 0x3e, 0x50, 0x8f, 0xe9, 0xfd,
+ 0x66, 0xb5, 0xb2, 0xd7, 0xd3, 0x8c, 0x01, 0xfc, 0xc6, 0x4c, 0x69, 0xc7,
+ 0xb9, 0x6b, 0xb1, 0xad, 0x69, 0x88, 0x97, 0x34, 0x34, 0x91, 0xe0, 0x60,
+ 0xf2, 0x55, 0xb6, 0x90, 0xd1, 0xa7, 0x73, 0xab, 0xbb, 0x03, 0xe4, 0x92,
+ 0x9e, 0x63, 0x2b, 0xa2, 0xe7, 0xbb, 0x1a, 0xec, 0x8b, 0xf3, 0xad, 0xb2,
+ 0xc0, 0xdd, 0xd0, 0x3f, 0x47, 0x20, 0x72, 0x3d, 0xa8, 0x95, 0xfd, 0x59,
+ 0xe9, 0xc2, 0xe9, 0x7b, 0x5d, 0x6b, 0x4f, 0xe7, 0x3c, 0x92, 0xb7, 0xad,
+ 0xac, 0xde, 0xcb, 0x1a, 0x07, 0xf3, 0x8d, 0x2d, 0x97, 0x78, 0x90, 0x46,
+ 0x8a, 0xae, 0x0d, 0x81, 0xf8, 0xf4, 0x9b, 0x07, 0xb8, 0xb1, 0xb3, 0xf1,
+ 0x6e, 0x85, 0x25, 0x23, 0xab, 0xa5, 0xf4, 0xfa, 0xcc, 0x55, 0x4b, 0x00,
+ 0xed, 0xa0, 0x9f, 0xc5, 0x10, 0x61, 0xd0, 0x1e, 0x1d, 0xb4, 0x0d, 0x8e,
+ 0x0e, 0x9f, 0xf3, 0x9b, 0xa7, 0xc8, 0xab, 0x5b, 0x37, 0x3f, 0x48, 0x22,
+ 0x34, 0x49, 0xcd, 0x70, 0x80, 0x79, 0x1f, 0xef, 0xd1, 0x25, 0x22, 0x65,
+ 0x4d, 0x75, 0x20, 0x01, 0x11, 0xdc, 0xe8, 0x56, 0x5f, 0xd7, 0x0a, 0x3d,
+ 0x5e, 0x85, 0xea, 0x19, 0xdd, 0x45, 0xcd, 0x77, 0xc8, 0xcb, 0x3f, 0xef,
+ 0xcb, 0x66, 0xb6, 0xfb, 0x4b, 0x5d, 0xc4, 0x9d, 0x7c, 0xbc, 0xca, 0xab,
+ 0xd7, 0x29, 0x39, 0x3d, 0x13, 0x31, 0xbd, 0x85, 0x25, 0xc0, 0x71, 0xad,
+ 0x7e, 0xef, 0xfb, 0xea, 0x4a, 0x7c, 0xc9, 0x24, 0x92, 0x49, 0x4a, 0x49,
+ 0x24, 0x92, 0x52, 0x92, 0x1a, 0x6a, 0x92, 0x49, 0x29, 0xf4, 0xec, 0x19,
+ 0x7e, 0x38, 0xb7, 0xf7, 0xda, 0xd7, 0xb6, 0x3c, 0xc4, 0xac, 0x7e, 0xa4,
+ 0xcf, 0xd3, 0x9b, 0x01, 0xfa, 0x46, 0x24, 0x78, 0xad, 0x8c, 0x16, 0x8f,
+ 0xb0, 0xd2, 0xea, 0xcc, 0x87, 0x54, 0xd2, 0xc0, 0xed, 0x23, 0xda, 0x16,
+ 0x6f, 0x53, 0x6b, 0x8b, 0x09, 0x70, 0x2d, 0xf0, 0x24, 0x68, 0x7e, 0x09,
+ 0x29, 0xe7, 0x7a, 0xb5, 0xa1, 0xae, 0xc6, 0x04, 0xc8, 0xde, 0x5c, 0x7c,
+ 0x20, 0x40, 0x5b, 0x78, 0x4f, 0x25, 0xbf, 0xa3, 0xd4, 0xb4, 0xfb, 0x5b,
+ 0xe2, 0x25, 0x73, 0xdd, 0x78, 0x8f, 0x5e, 0x96, 0xb7, 0x86, 0xd6, 0x3f,
+ 0x12, 0x56, 0xc7, 0x4a, 0xfa, 0x02, 0x0f, 0x60, 0x7e, 0x70, 0x92, 0x9d,
+ 0xdf, 0x51, 0xaf, 0x6b, 0x47, 0x0f, 0x33, 0xd8, 0xfe, 0x55, 0xc9, 0x7d,
+ 0x67, 0xaf, 0x65, 0xf5, 0x1f, 0x1d, 0xdf, 0x94, 0x2e, 0xa6, 0x97, 0xee,
+ 0x04, 0x1f, 0x6b, 0xbc, 0x0f, 0x07, 0xcc, 0x2e, 0x73, 0xeb, 0x63, 0x40,
+ 0x75, 0x1a, 0x6a, 0x0b, 0xa4, 0xfc, 0x61, 0x25, 0x3c, 0xea, 0x49, 0x24,
+ 0x92, 0x94, 0x92, 0x49, 0x24, 0xa5, 0x2d, 0x7f, 0xab, 0x0d, 0x0e, 0xea,
+ 0x75, 0x07, 0x09, 0x1b, 0xd8, 0x7e, 0xe7, 0x2c, 0x85, 0xb1, 0xf5, 0x5c,
+ 0x7f, 0x95, 0x6b, 0xfe, 0xb3, 0x3f, 0xea, 0xda, 0x92, 0x9e, 0xe2, 0x8a,
+ 0xff, 0x00, 0x5c, 0xcc, 0x2e, 0xfa, 0x4e, 0xf4, 0xdc, 0x47, 0x94, 0xbf,
+ 0x89, 0xf8, 0x29, 0xbd, 0xcd, 0xa7, 0xf4, 0x96, 0x93, 0xa0, 0x30, 0x63,
+ 0x5f, 0x71, 0xe1, 0x2a, 0x1a, 0xf7, 0x66, 0x65, 0x3a, 0x41, 0xdc, 0x58,
+ 0xdd, 0xbf, 0xd5, 0x2f, 0xfe, 0xf4, 0x4c, 0x8a, 0xdb, 0xb7, 0xc0, 0x69,
+ 0xa1, 0xd7, 0xcf, 0xf8, 0xa4, 0xa4, 0x42, 0xcf, 0x51, 0x8e, 0x7b, 0x78,
+ 0x03, 0xb7, 0x3e, 0xd2, 0x52, 0xa9, 0xbb, 0x6c, 0xad, 0xe1, 0xa7, 0x57,
+ 0x1d, 0xe7, 0xc3, 0xdb, 0xca, 0x58, 0xd5, 0xfa, 0x74, 0xb8, 0x33, 0x40,
+ 0x77, 0x11, 0xe6, 0xe2, 0xe4, 0x76, 0x6d, 0x67, 0xa2, 0xe3, 0xac, 0xba,
+ 0x20, 0xf9, 0x84, 0x94, 0xdb, 0x63, 0x6c, 0x0e, 0x69, 0x2d, 0xdd, 0x2e,
+ 0xdb, 0xb9, 0xba, 0x7a, 0x6d, 0x20, 0xfb, 0x93, 0xbb, 0xf6, 0x90, 0x24,
+ 0xe3, 0xb5, 0x8e, 0x61, 0x03, 0x63, 0x5c, 0xe2, 0x1d, 0xcf, 0x8e, 0xa1,
+ 0x33, 0x58, 0xd3, 0x61, 0xd8, 0xc1, 0xac, 0x17, 0x1e, 0x38, 0xd1, 0x1e,
+ 0xdb, 0x1d, 0xb3, 0x63, 0x44, 0xbb, 0x89, 0x98, 0x81, 0xde, 0x21, 0x25,
+ 0x20, 0x6b, 0xfa, 0x84, 0xb4, 0xbb, 0x17, 0x50, 0x44, 0x93, 0x60, 0x82,
+ 0x3b, 0x95, 0x6c, 0x56, 0x1a, 0xe1, 0x61, 0x61, 0xd2, 0x76, 0x07, 0x1d,
+ 0xdc, 0xf8, 0x0e, 0xcb, 0x0e, 0xcb, 0xba, 0x9e, 0x33, 0xac, 0x38, 0xf9,
+ 0x04, 0xd6, 0xd7, 0xc0, 0xaa, 0xe1, 0xbd, 0xb0, 0x20, 0xed, 0x0e, 0xfa,
+ 0x41, 0x1f, 0xf6, 0xa7, 0x58, 0x70, 0x6f, 0xa7, 0x81, 0x5b, 0x7c, 0x4b,
+ 0xae, 0x2e, 0x1e, 0x71, 0x15, 0x84, 0x94, 0xea, 0xb7, 0x67, 0xd0, 0x02,
+ 0x20, 0xfe, 0x90, 0x9f, 0x03, 0xa8, 0x09, 0xbe, 0xce, 0x37, 0xce, 0xbb,
+ 0x22, 0x76, 0x49, 0x8f, 0x09, 0xe5, 0x65, 0xb5, 0xfd, 0x5d, 0xf7, 0x36,
+ 0xeb, 0x8d, 0x6d, 0x60, 0x8d, 0xd4, 0x31, 0xa6, 0x08, 0x1f, 0xca, 0x26,
+ 0x56, 0xbf, 0xad, 0x57, 0xa7, 0xba, 0x74, 0x8e, 0x35, 0x9f, 0x84, 0x78,
+ 0xa4, 0xa7, 0x9c, 0xc3, 0xb0, 0xdb, 0x81, 0x8d, 0x74, 0xea, 0xfa, 0xdb,
+ 0xbb, 0xfa, 0xd1, 0x07, 0xf1, 0x4e, 0xed, 0xa1, 0xc2, 0x41, 0x87, 0x0d,
+ 0xb3, 0xf1, 0x11, 0xf7, 0xa1, 0xe2, 0x11, 0x56, 0x3b, 0xea, 0x1f, 0xe0,
+ 0x6d, 0xb1, 0x9f, 0x01, 0xbc, 0x91, 0xf8, 0x15, 0x2b, 0xa9, 0x05, 0x9b,
+ 0x4f, 0xd0, 0x26, 0x04, 0x76, 0x9d, 0x3f, 0x8a, 0x4a, 0x5b, 0x11, 0xb6,
+ 0xb5, 0xd6, 0x32, 0xc9, 0x25, 0xa1, 0xa0, 0x4f, 0x80, 0xf6, 0xc9, 0x5a,
+ 0x15, 0xb3, 0x7e, 0xd2, 0x4e, 0xe8, 0x1a, 0x7e, 0xe8, 0x3e, 0x28, 0x00,
+ 0xc8, 0xe3, 0x48, 0x90, 0x3b, 0xf8, 0xa3, 0xd4, 0x5c, 0x00, 0x04, 0x07,
+ 0x41, 0xd0, 0x37, 0x48, 0xf8, 0xa4, 0xa5, 0x48, 0x76, 0xa3, 0xde, 0xe6,
+ 0x9e, 0x78, 0x68, 0x54, 0xb1, 0x1a, 0xd6, 0x32, 0xc6, 0x7f, 0xa3, 0xb2,
+ 0xc6, 0xcf, 0x3a, 0x17, 0x6e, 0x1f, 0x81, 0x57, 0x9d, 0x02, 0xd7, 0x54,
+ 0x4e, 0xe3, 0x1b, 0x98, 0xd0, 0x20, 0x41, 0xd7, 0x95, 0x4d, 0x90, 0xdc,
+ 0x8c, 0x90, 0x44, 0x6f, 0xd9, 0x60, 0x1f, 0xd6, 0x6e, 0xd7, 0x7f, 0xd4,
+ 0xa4, 0xa6, 0xcc, 0x0f, 0x6b, 0x87, 0x71, 0x3a, 0x70, 0x9c, 0xb6, 0x49,
+ 0x27, 0x53, 0xe1, 0xe5, 0xaf, 0xf7, 0xa6, 0x6b, 0x80, 0xad, 0xae, 0x1c,
+ 0x47, 0xfb, 0x52, 0xf5, 0x36, 0xb6, 0x5d, 0xac, 0x4e, 0xa9, 0x29, 0x76,
+ 0x02, 0x1e, 0xe6, 0x7c, 0xfe, 0x00, 0x84, 0x4a, 0xe9, 0x37, 0x63, 0x59,
+ 0x41, 0x87, 0x36, 0xc0, 0xe6, 0x3c, 0x7c, 0x74, 0xfc, 0x85, 0x0b, 0x77,
+ 0xbc, 0xfe, 0xf0, 0xfe, 0xff, 0x00, 0x04, 0x5a, 0x81, 0xdc, 0x5d, 0xc0,
+ 0x06, 0x4f, 0xcf, 0x44, 0x94, 0xf9, 0x13, 0xd8, 0x58, 0xf7, 0x31, 0xda,
+ 0x16, 0x92, 0x08, 0x3e, 0x21, 0x45, 0x5f, 0xeb, 0xb4, 0x1c, 0x7e, 0xb3,
+ 0x9b, 0x54, 0x44, 0x5c, 0xe2, 0x07, 0x93, 0x8e, 0xe1, 0xf8, 0x15, 0x41,
+ 0x25, 0x29, 0x24, 0x92, 0x49, 0x4a, 0x49, 0x24, 0xe0, 0x49, 0x03, 0xc5,
+ 0x25, 0x3e, 0x93, 0x45, 0xa3, 0x1f, 0x0b, 0x16, 0x8b, 0x35, 0x6f, 0xa4,
+ 0xc6, 0x97, 0x46, 0x80, 0x40, 0x12, 0xaa, 0x3b, 0xd1, 0x2d, 0x7b, 0x6c,
+ 0x77, 0xb6, 0x0f, 0xa5, 0xb8, 0xea, 0x34, 0xf3, 0xf3, 0x57, 0x2d, 0x69,
+ 0xa2, 0xca, 0xd8, 0xc6, 0x8b, 0x25, 0x9b, 0x80, 0xee, 0x0b, 0x7d, 0xba,
+ 0x7f, 0x72, 0xa3, 0x97, 0x5b, 0x6c, 0xb0, 0x1b, 0xdb, 0xee, 0x63, 0x86,
+ 0x9c, 0x6a, 0x00, 0xfc, 0x12, 0x53, 0xca, 0xf5, 0xd6, 0xed, 0xc9, 0xae,
+ 0x0c, 0xfb, 0x23, 0xee, 0x25, 0x6e, 0xf4, 0xfc, 0x67, 0x59, 0x8f, 0x4d,
+ 0xf4, 0x10, 0x0e, 0xd6, 0xc8, 0x98, 0xed, 0xac, 0x2c, 0x3e, 0xbe, 0x5d,
+ 0xf6, 0xb6, 0x83, 0xc0, 0x6e, 0x9f, 0x79, 0x2b, 0xa2, 0xfa, 0xbc, 0xc0,
+ 0xde, 0x9a, 0xd6, 0xbf, 0x9d, 0x23, 0xe1, 0x09, 0x29, 0xbf, 0x8c, 0xe3,
+ 0x71, 0xf7, 0x1d, 0xb6, 0x33, 0xe9, 0x0e, 0xcb, 0x9d, 0xfa, 0xd6, 0xf0,
+ 0xed, 0x80, 0x0e, 0x1f, 0xcf, 0xc9, 0x74, 0x4d, 0xc6, 0x78, 0xb7, 0x75,
+ 0x66, 0x7f, 0x7b, 0x77, 0x11, 0xe6, 0xb9, 0xcf, 0xac, 0x0f, 0xf5, 0xe9,
+ 0xb2, 0xe0, 0x3d, 0xa2, 0xc6, 0x86, 0xfc, 0x00, 0x84, 0x94, 0xf3, 0xa9,
+ 0x24, 0x92, 0x4a, 0x52, 0x49, 0x24, 0x92, 0x94, 0xb5, 0xfe, 0xad, 0x7f,
+ 0xca, 0x4d, 0x3e, 0x1b, 0x4f, 0xfd, 0x36, 0xac, 0x85, 0xb1, 0xf5, 0x60,
+ 0x4f, 0x50, 0x70, 0xfe, 0x40, 0x8f, 0xf3, 0xd8, 0x92, 0x9e, 0xfb, 0x15,
+ 0x83, 0xed, 0x79, 0x04, 0x0d, 0xce, 0x21, 0x8e, 0x77, 0x91, 0x97, 0xab,
+ 0x36, 0x52, 0x1c, 0xd3, 0xfb, 0xd1, 0xa0, 0x3d, 0xcf, 0xfa, 0x85, 0x0c,
+ 0x36, 0x83, 0x91, 0x94, 0x7b, 0x0a, 0xda, 0x7e, 0x30, 0xf7, 0xea, 0xac,
+ 0x59, 0x58, 0x73, 0x41, 0x00, 0x9d, 0x74, 0x3a, 0xc0, 0x3f, 0xed, 0x49,
+ 0x4d, 0x36, 0xd7, 0xb2, 0x86, 0x13, 0x32, 0x0c, 0x13, 0xda, 0x1f, 0xfd,
+ 0xc8, 0xee, 0x6e, 0xd6, 0xb3, 0xfa, 0xff, 0x00, 0xf7, 0xd2, 0x88, 0xda,
+ 0x62, 0x43, 0x8c, 0x31, 0xad, 0x80, 0x39, 0x6e, 0xaa, 0xb6, 0x7b, 0x89,
+ 0xa1, 0xbb, 0x77, 0x35, 0xc2, 0xd1, 0xc7, 0xf5, 0x4a, 0x4a, 0x74, 0x19,
+ 0x3a, 0xcc, 0x84, 0x17, 0x3a, 0x48, 0x70, 0x23, 0x4e, 0x07, 0x74, 0x1c,
+ 0x7d, 0xee, 0x64, 0x5f, 0x73, 0xbe, 0x50, 0x3f, 0x82, 0x93, 0x9a, 0x09,
+ 0xda, 0xd0, 0x3d, 0xbf, 0x13, 0xa7, 0xcd, 0x25, 0x32, 0x65, 0x03, 0x23,
+ 0x7d, 0x4e, 0x1a, 0x1f, 0x76, 0xee, 0xe9, 0x63, 0xe3, 0xe4, 0xd6, 0x43,
+ 0x74, 0x7d, 0x7c, 0x35, 0xd2, 0x3f, 0x8a, 0x4c, 0x25, 0xa4, 0x17, 0x1d,
+ 0x1a, 0x09, 0x00, 0x4b, 0x5a, 0x64, 0x7e, 0x77, 0x8f, 0x0a, 0xdb, 0xd8,
+ 0xd7, 0x9d, 0x44, 0x37, 0x42, 0x0f, 0x60, 0x92, 0x91, 0x3e, 0xa7, 0xb0,
+ 0xfe, 0x5e, 0xe1, 0x37, 0xa1, 0x6f, 0xd3, 0x83, 0xb5, 0x5b, 0x60, 0x9a,
+ 0xc7, 0x79, 0xed, 0xe2, 0x9f, 0x6b, 0xa7, 0x91, 0x3f, 0xb9, 0xa4, 0x47,
+ 0x82, 0x4a, 0x79, 0xc0, 0x03, 0x73, 0x32, 0xab, 0x1f, 0x9d, 0xb2, 0xd9,
+ 0x3c, 0x0d, 0xcd, 0x0d, 0x27, 0xfe, 0x8a, 0x2d, 0xbf, 0xcd, 0x10, 0xde,
+ 0x62, 0x40, 0x3f, 0x97, 0xef, 0x4f, 0x65, 0x1b, 0xf3, 0x58, 0xe0, 0x75,
+ 0xb2, 0x82, 0x07, 0x86, 0xe6, 0x3b, 0x4f, 0xfa, 0xb5, 0x3f, 0xb2, 0x3b,
+ 0x69, 0xf5, 0x1d, 0x02, 0x21, 0xc5, 0xde, 0xdd, 0xdf, 0x7a, 0x4a, 0x60,
+ 0xd2, 0x22, 0x3c, 0xcf, 0xc6, 0x25, 0x1b, 0x14, 0x33, 0x73, 0xd8, 0x34,
+ 0x26, 0x0e, 0xd9, 0xd7, 0x45, 0x06, 0x53, 0x4d, 0x70, 0x5d, 0x64, 0xbb,
+ 0xf9, 0x32, 0x7e, 0xe4, 0x4a, 0xfd, 0x06, 0x3b, 0x75, 0x60, 0xee, 0x1d,
+ 0xdd, 0x00, 0x9f, 0xca, 0x92, 0x97, 0xbb, 0x66, 0xc6, 0x99, 0x82, 0x34,
+ 0x81, 0xdc, 0x8d, 0x35, 0x55, 0x1f, 0x59, 0xfb, 0x4b, 0x5d, 0x11, 0xea,
+ 0x56, 0xe6, 0xc7, 0x9b, 0x1c, 0x1c, 0x3f, 0x2a, 0x3b, 0x6c, 0xf4, 0x81,
+ 0xaa, 0xba, 0xc0, 0x69, 0x97, 0x17, 0x1f, 0x71, 0x24, 0xea, 0x75, 0x72,
+ 0x8d, 0x39, 0x16, 0x5a, 0xc6, 0xd8, 0xf6, 0xba, 0xb7, 0x99, 0xf6, 0x3a,
+ 0x01, 0x1d, 0xbb, 0x24, 0xa4, 0x8d, 0xc7, 0x76, 0xd2, 0x26, 0x1a, 0x74,
+ 0xd7, 0x48, 0x44, 0x34, 0xd2, 0x19, 0x06, 0xc0, 0x74, 0xed, 0xaf, 0xe4,
+ 0x54, 0xdc, 0xec, 0x87, 0x5c, 0x18, 0x1a, 0x0d, 0x5b, 0x4e, 0xe2, 0x75,
+ 0x20, 0xf6, 0x0a, 0xc5, 0x6c, 0x78, 0x11, 0x32, 0x3c, 0xf4, 0x09, 0x29,
+ 0x86, 0x26, 0x38, 0xc7, 0xad, 0xc2, 0xd7, 0xba, 0xf7, 0x13, 0x3b, 0x8e,
+ 0x83, 0xf1, 0xd5, 0x1c, 0x64, 0x55, 0x2d, 0xad, 0xa4, 0x07, 0xd8, 0x0e,
+ 0xd6, 0xf2, 0x61, 0xbc, 0xc7, 0xc1, 0x3b, 0x2b, 0x6b, 0xa4, 0x1d, 0x4f,
+ 0x22, 0x06, 0xb3, 0xfd, 0xea, 0x55, 0x56, 0x06, 0xd9, 0xe7, 0x96, 0xc0,
+ 0x8f, 0xb9, 0x25, 0x3e, 0x75, 0xf5, 0xca, 0xa7, 0x33, 0xab, 0xfa, 0xae,
+ 0x10, 0xeb, 0xea, 0x63, 0x9d, 0x1f, 0xbc, 0xd9, 0xac, 0xff, 0x00, 0xd4,
+ 0xac, 0x15, 0xd9, 0x7f, 0x8c, 0x2a, 0x08, 0xb7, 0x16, 0xfe, 0xc7, 0x7b,
+ 0x7c, 0xb5, 0x0d, 0x70, 0xfe, 0x2b, 0x8d, 0x49, 0x4a, 0x49, 0x24, 0x92,
+ 0x52, 0x94, 0xe9, 0x6e, 0xfb, 0xab, 0x67, 0xef, 0x38, 0x0f, 0xbc, 0xa8,
+ 0x2b, 0x18, 0x0d, 0xdd, 0x9d, 0x8e, 0x22, 0x7f, 0x48, 0xc9, 0xff, 0x00,
+ 0x38, 0x24, 0xa7, 0xd2, 0x72, 0x71, 0x3d, 0x66, 0xc5, 0x6e, 0x87, 0xd4,
+ 0x49, 0x69, 0xf1, 0x91, 0xc2, 0xc4, 0xba, 0xeb, 0x99, 0xbe, 0xec, 0x80,
+ 0x43, 0xc3, 0x89, 0x87, 0x68, 0x61, 0xa0, 0x34, 0x1f, 0xc1, 0x6e, 0xd7,
+ 0x7b, 0x06, 0x27, 0xda, 0x1d, 0x20, 0x90, 0x34, 0xfc, 0x8b, 0x95, 0xea,
+ 0x99, 0x8e, 0xc9, 0xb4, 0xb0, 0x70, 0x49, 0x00, 0xf2, 0x92, 0x9c, 0xee,
+ 0xb2, 0xf6, 0xe4, 0x52, 0xdb, 0xc3, 0x43, 0x5c, 0xc7, 0x41, 0x23, 0xbe,
+ 0xe1, 0xff, 0x00, 0x98, 0xae, 0x83, 0xa4, 0xd7, 0x63, 0x71, 0xe9, 0xe7,
+ 0x69, 0x63, 0x48, 0x3f, 0x20, 0xb9, 0xee, 0xb0, 0x05, 0x18, 0xd8, 0xf4,
+ 0x0d, 0x37, 0xcd, 0x87, 0xe5, 0xa0, 0xfc, 0xa5, 0x6c, 0x63, 0xf5, 0x2a,
+ 0xf1, 0xfa, 0x4e, 0x39, 0x26, 0x6d, 0xd8, 0xdd, 0xac, 0x07, 0x5d, 0x34,
+ 0x93, 0xf7, 0x24, 0xa7, 0x4b, 0x3b, 0x2c, 0x51, 0x8e, 0x6a, 0x04, 0x17,
+ 0xdb, 0x23, 0x4f, 0x05, 0xcf, 0x75, 0x61, 0x1d, 0x34, 0xcc, 0x6a, 0xf6,
+ 0xc7, 0xe5, 0x52, 0x65, 0xd6, 0x65, 0x38, 0xd8, 0xe7, 0x82, 0x5c, 0x62,
+ 0x3c, 0xbb, 0xe8, 0x14, 0x7a, 0xf3, 0x76, 0x60, 0xd4, 0xdd, 0x67, 0x7c,
+ 0xeb, 0xfb, 0xb1, 0xa2, 0x4a, 0x79, 0xf4, 0x92, 0x49, 0x25, 0x29, 0x24,
+ 0x92, 0x49, 0x4a, 0x5b, 0x1f, 0x55, 0x84, 0xf5, 0x38, 0xf1, 0x61, 0xff,
+ 0x00, 0xaa, 0x6a, 0xc7, 0x5b, 0x5f, 0x54, 0xff, 0x00, 0xe5, 0x76, 0xff,
+ 0x00, 0x51, 0xdf, 0x94, 0x24, 0xa7, 0xd1, 0xb0, 0xc1, 0x39, 0xb9, 0x6c,
+ 0x11, 0xfc, 0xd0, 0x88, 0xfe, 0xb9, 0x47, 0xad, 0xfa, 0x6c, 0x77, 0x63,
+ 0x10, 0xab, 0x61, 0x12, 0xde, 0xa9, 0x90, 0x27, 0xda, 0x68, 0x07, 0xe7,
+ 0xea, 0x1f, 0x04, 0x6a, 0xa2, 0xc7, 0xc9, 0x1b, 0xa1, 0xc6, 0x7b, 0x1f,
+ 0x04, 0x94, 0xc8, 0x65, 0x55, 0x6e, 0xf6, 0xb2, 0x7d, 0x84, 0x49, 0x8e,
+ 0x41, 0xd2, 0x42, 0xab, 0x99, 0xb8, 0xd6, 0xc3, 0xc1, 0xf5, 0x40, 0x81,
+ 0xf0, 0x72, 0xb4, 0xcc, 0x7a, 0x71, 0xab, 0x71, 0x6b, 0x84, 0x76, 0xf2,
+ 0x93, 0x3a, 0xa0, 0xe6, 0x31, 0xc7, 0x1d, 0x91, 0xf4, 0xbd, 0x40, 0x74,
+ 0xf8, 0x1f, 0x14, 0x94, 0xb5, 0x52, 0xe0, 0x7b, 0x7f, 0x72, 0x35, 0x64,
+ 0x49, 0xdc, 0xd0, 0x60, 0x68, 0xa2, 0xca, 0xde, 0xd6, 0x49, 0x11, 0xe3,
+ 0xf1, 0x44, 0xac, 0x49, 0xd0, 0xcc, 0xf1, 0x3c, 0x24, 0xa4, 0x6c, 0xdc,
+ 0xe7, 0xb5, 0x9e, 0x67, 0xee, 0x8e, 0x55, 0xd8, 0x2f, 0x66, 0xe3, 0xc8,
+ 0x11, 0xfe, 0xa1, 0x57, 0xae, 0x91, 0xea, 0x16, 0x82, 0x49, 0x8d, 0x15,
+ 0x98, 0x63, 0x47, 0xa9, 0xb4, 0xbb, 0x64, 0xc1, 0x03, 0xdd, 0xf2, 0x49,
+ 0x4c, 0x31, 0x09, 0x63, 0xce, 0x3b, 0xdc, 0xd7, 0x38, 0x02, 0xe6, 0x99,
+ 0x87, 0x6d, 0x26, 0x38, 0xf8, 0xa3, 0x43, 0x77, 0x73, 0xe7, 0x1f, 0xc1,
+ 0x61, 0xdd, 0xd5, 0x59, 0xfb, 0x42, 0xc7, 0x06, 0x16, 0xba, 0x90, 0x2b,
+ 0x06, 0x06, 0xef, 0xde, 0x9f, 0x9a, 0x2f, 0xed, 0x3b, 0xbd, 0x29, 0xf7,
+ 0x47, 0x3f, 0x43, 0x5f, 0xf3, 0x52, 0x52, 0x0a, 0xf2, 0xec, 0xba, 0xa1,
+ 0x61, 0xdc, 0xc1, 0xac, 0x36, 0x36, 0x9f, 0xb9, 0x07, 0x28, 0xde, 0xf3,
+ 0x5e, 0xd8, 0xdb, 0xbb, 0xf4, 0x85, 0xc7, 0x5d, 0xb1, 0xd9, 0x1c, 0x82,
+ 0x49, 0x27, 0x50, 0x38, 0x82, 0x7f, 0xb9, 0x38, 0x00, 0x88, 0x0e, 0x13,
+ 0xcc, 0x01, 0xfd, 0xe9, 0x29, 0x4d, 0xad, 0xc4, 0x02, 0x00, 0x81, 0xdf,
+ 0x95, 0x20, 0xcd, 0x63, 0xc7, 0xc0, 0x29, 0x4e, 0xd6, 0x88, 0x31, 0x3c,
+ 0xf6, 0xfe, 0x09, 0xab, 0xa6, 0x2c, 0x7d, 0xa6, 0xc2, 0xe2, 0xf0, 0x06,
+ 0xd2, 0x7d, 0xad, 0x8e, 0xed, 0x1e, 0x25, 0x25, 0x32, 0x15, 0xc8, 0x2d,
+ 0xf1, 0x12, 0x24, 0xa9, 0x06, 0x08, 0x81, 0x10, 0x3c, 0x12, 0x8d, 0xba,
+ 0xc1, 0x83, 0xc2, 0x85, 0x37, 0xb2, 0xe6, 0x6f, 0xfc, 0xcd, 0x5b, 0x2e,
+ 0xd0, 0xc8, 0x31, 0xc2, 0x4a, 0x67, 0xb6, 0x48, 0xfe, 0xf4, 0x43, 0x58,
+ 0x3b, 0x87, 0x72, 0x20, 0xc4, 0xf7, 0xef, 0x28, 0x2f, 0xb0, 0x32, 0xb7,
+ 0x9a, 0x9c, 0xc7, 0x59, 0x07, 0x68, 0x26, 0x04, 0x8f, 0x13, 0x29, 0x9d,
+ 0x90, 0xda, 0x58, 0x1f, 0x7b, 0x9b, 0x5b, 0x60, 0x6e, 0x7b, 0xec, 0x6b,
+ 0x1b, 0x3d, 0xe2, 0x52, 0x52, 0x5a, 0xab, 0x6d, 0x75, 0x36, 0xbd, 0xee,
+ 0x3b, 0x40, 0x1b, 0x9c, 0x44, 0x98, 0xf1, 0x4f, 0x6d, 0x86, 0xb6, 0x3a,
+ 0xc1, 0x59, 0xb0, 0xb4, 0x4c, 0x37, 0x93, 0x1e, 0x13, 0xdd, 0x64, 0x5d,
+ 0xf5, 0x97, 0xa7, 0xd5, 0x21, 0x87, 0xd7, 0x27, 0xfd, 0x0c, 0xbf, 0xf1,
+ 0x88, 0xfc, 0x54, 0x1b, 0xd6, 0x6f, 0xca, 0x1b, 0xb1, 0xba, 0x71, 0x20,
+ 0x47, 0xbe, 0xd7, 0x06, 0x81, 0xf2, 0x00, 0x94, 0x94, 0x83, 0xeb, 0xc5,
+ 0x22, 0xfe, 0x99, 0xeb, 0xc0, 0x9a, 0xb6, 0x3f, 0x4e, 0xda, 0x96, 0x1e,
+ 0x3f, 0xac, 0xbc, 0xf9, 0x7a, 0x4f, 0x54, 0x66, 0x5e, 0x4f, 0x48, 0xcb,
+ 0x66, 0x53, 0x58, 0xd7, 0x7a, 0x0e, 0x75, 0x4c, 0xac, 0x10, 0xcf, 0x68,
+ 0xdf, 0xde, 0x75, 0xf6, 0xaf, 0x36, 0x49, 0x4a, 0x49, 0x24, 0x92, 0x52,
+ 0x95, 0xee, 0x8d, 0xb5, 0xb9, 0xec, 0xb9, 0xff, 0x00, 0x42, 0x99, 0x79,
+ 0xfc, 0x83, 0xf1, 0x2a, 0x8c, 0x2b, 0xdd, 0x27, 0x33, 0xec, 0x99, 0x5b,
+ 0x8b, 0x1b, 0x63, 0x6c, 0x1b, 0x08, 0x79, 0x81, 0xc8, 0x20, 0xca, 0x4a,
+ 0x76, 0xf2, 0x3a, 0x8f, 0x54, 0xcd, 0x70, 0xa3, 0x04, 0x1f, 0x41, 0xba,
+ 0x12, 0x34, 0xfc, 0x42, 0xb1, 0x89, 0xd2, 0x5e, 0xdf, 0x75, 0xc4, 0x1b,
+ 0x5d, 0xd8, 0x19, 0x03, 0xef, 0x57, 0x31, 0x2c, 0xb4, 0xb6, 0x46, 0x37,
+ 0xa2, 0xf2, 0x63, 0xda, 0x5a, 0x5a, 0xe0, 0x7c, 0x1c, 0xd9, 0x8f, 0x9a,
+ 0x28, 0x7e, 0x61, 0x7e, 0xe6, 0xe2, 0xc8, 0xe2, 0x43, 0xc1, 0x8f, 0x92,
+ 0x4a, 0x79, 0x5f, 0xad, 0x16, 0x07, 0x75, 0x47, 0x54, 0xd2, 0x0b, 0x68,
+ 0x63, 0x58, 0x23, 0xfc, 0xef, 0xe2, 0xb5, 0x3a, 0x00, 0x17, 0xf4, 0xe6,
+ 0xd2, 0xf6, 0xee, 0x73, 0x4f, 0xb7, 0x4f, 0xcd, 0x27, 0xf8, 0x2c, 0x4e,
+ 0xbb, 0x51, 0xaf, 0xa9, 0xdc, 0x0f, 0x2e, 0x21, 0xc6, 0x79, 0x04, 0xf6,
+ 0x5a, 0xfd, 0x1a, 0xda, 0x31, 0xb1, 0x19, 0x63, 0x9e, 0x4b, 0xec, 0x10,
+ 0xda, 0xeb, 0x05, 0xcf, 0x24, 0x7b, 0x49, 0x80, 0x0c, 0x24, 0xa6, 0xf5,
+ 0x75, 0xe2, 0xe2, 0x17, 0x58, 0xf8, 0x0e, 0x1a, 0x4f, 0x7f, 0x80, 0x58,
+ 0xdd, 0x63, 0x21, 0x99, 0x4c, 0x7b, 0xa0, 0x82, 0xd1, 0x2c, 0x69, 0xec,
+ 0x01, 0x0b, 0x62, 0xbc, 0x1a, 0xac, 0xf7, 0xd9, 0x4d, 0xae, 0x71, 0xd7,
+ 0xde, 0xc7, 0x4c, 0x7c, 0x21, 0x0f, 0xaa, 0xe2, 0x56, 0xde, 0x97, 0x7d,
+ 0xb5, 0xb0, 0xb3, 0x63, 0x20, 0x82, 0xd2, 0xd3, 0xc8, 0x8d, 0x0f, 0xc5,
+ 0x25, 0x3c, 0x72, 0x96, 0xd8, 0x12, 0x78, 0xec, 0x99, 0x15, 0xb4, 0x12,
+ 0x01, 0x71, 0x80, 0x78, 0xee, 0x92, 0x90, 0xa7, 0x11, 0xdc, 0xa2, 0x1a,
+ 0x9a, 0x38, 0x32, 0x98, 0xd6, 0x00, 0x99, 0x13, 0xf1, 0x49, 0x4c, 0x34,
+ 0xf1, 0x5b, 0x3f, 0x54, 0xbf, 0xe5, 0xaa, 0x80, 0xee, 0xd7, 0xfe, 0x45,
+ 0x8f, 0xb4, 0xad, 0x6f, 0xab, 0x1e, 0xa3, 0x7a, 0xc5, 0x46, 0xb6, 0x6f,
+ 0x7c, 0x3a, 0x1a, 0x74, 0x1a, 0x88, 0x3f, 0x70, 0x49, 0x4f, 0xa3, 0x50,
+ 0xd3, 0xfb, 0x5d, 0xec, 0x03, 0x57, 0x63, 0x9d, 0x7f, 0xeb, 0x8a, 0x76,
+ 0x8b, 0x28, 0x8b, 0x1a, 0x67, 0x79, 0x21, 0xe3, 0xf7, 0x75, 0xfa, 0x4a,
+ 0x38, 0xaf, 0x1f, 0xb6, 0xdc, 0x01, 0x93, 0xf6, 0x77, 0x69, 0xf0, 0xb1,
+ 0xab, 0x42, 0xfa, 0xc3, 0xab, 0xf7, 0x47, 0x74, 0x94, 0xd3, 0x73, 0xc5,
+ 0x84, 0xc1, 0xf6, 0x9f, 0xa2, 0x7b, 0x78, 0x20, 0xe4, 0x92, 0xe7, 0xd3,
+ 0x4b, 0x75, 0x87, 0xf3, 0x3e, 0x0d, 0x76, 0x89, 0xdc, 0xc2, 0x5f, 0xb2,
+ 0xb3, 0x00, 0x44, 0xf7, 0xd0, 0x1d, 0x53, 0x5a, 0x43, 0x33, 0x2a, 0x60,
+ 0xd4, 0x97, 0xc9, 0xed, 0xf9, 0xa5, 0x25, 0x36, 0x00, 0x79, 0x66, 0xd7,
+ 0x19, 0x8e, 0x27, 0xfd, 0x8a, 0x9e, 0x56, 0x2b, 0xf7, 0x35, 0xef, 0xcb,
+ 0xb6, 0xb6, 0x6e, 0xd4, 0x56, 0x43, 0x67, 0xcb, 0x41, 0x2b, 0x46, 0x00,
+ 0x3a, 0xe9, 0x3c, 0x2c, 0xfe, 0xb4, 0x4b, 0x70, 0x5c, 0xe0, 0x35, 0x6b,
+ 0x98, 0x40, 0x1f, 0xd6, 0x84, 0x94, 0xdf, 0x69, 0x6d, 0x75, 0x83, 0x04,
+ 0x98, 0x10, 0x7e, 0x97, 0xce, 0x4a, 0xab, 0x9f, 0x93, 0x7d, 0x8c, 0x2d,
+ 0x69, 0xfb, 0x3b, 0x5a, 0x04, 0x49, 0x1b, 0x89, 0x9e, 0xf0, 0x56, 0x5e,
+ 0x35, 0xf6, 0xdf, 0x5d, 0x77, 0xb2, 0xeb, 0x18, 0x1b, 0x21, 0xac, 0x71,
+ 0x81, 0x13, 0xdd, 0xbd, 0xd6, 0x8d, 0x83, 0xd7, 0xaf, 0xf4, 0xad, 0x12,
+ 0x46, 0x9b, 0x74, 0x49, 0x4e, 0x6e, 0x63, 0x6a, 0xc9, 0xb7, 0xd5, 0x7d,
+ 0x9b, 0x5e, 0x44, 0x30, 0x30, 0x6d, 0x24, 0x7f, 0x29, 0xe0, 0x89, 0xfb,
+ 0x90, 0xff, 0x00, 0x67, 0xe4, 0x6d, 0x9f, 0x55, 0xfe, 0x9c, 0x46, 0xdd,
+ 0xe7, 0x6f, 0xdf, 0xcf, 0xe2, 0xac, 0x8c, 0x4f, 0x4f, 0x40, 0xd9, 0xda,
+ 0x3d, 0xbf, 0xed, 0x44, 0xde, 0x7d, 0x2d, 0xb2, 0x3d, 0x4e, 0x3d, 0x3f,
+ 0xfc, 0xc9, 0x25, 0x32, 0xaf, 0x28, 0xe4, 0x59, 0x63, 0x59, 0x49, 0x6f,
+ 0xa6, 0xed, 0xb2, 0xe3, 0xf4, 0xb4, 0xd4, 0x80, 0x9d, 0xd6, 0x5f, 0x5e,
+ 0xd3, 0x45, 0x02, 0xdd, 0xa4, 0x6e, 0x6b, 0x4e, 0xa0, 0x1e, 0xf0, 0x16,
+ 0x4b, 0xbe, 0xb0, 0x66, 0xe4, 0x90, 0x70, 0x7a, 0x79, 0x1b, 0x4e, 0xf0,
+ 0xeb, 0x9c, 0x06, 0xb1, 0x13, 0xb5, 0x83, 0xf8, 0xa5, 0x8f, 0x5f, 0xd6,
+ 0x0c, 0xf6, 0x9b, 0xdd, 0x7b, 0x31, 0x9c, 0x49, 0x63, 0xcd, 0x2c, 0x01,
+ 0xda, 0x1d, 0xb1, 0xbd, 0xd2, 0x52, 0x53, 0xbb, 0x59, 0x7d, 0xfb, 0x88,
+ 0x2d, 0x6e, 0xcd, 0x5c, 0xc2, 0x08, 0x81, 0xe6, 0x5c, 0x02, 0xcf, 0xc8,
+ 0xeb, 0x38, 0xf8, 0xb6, 0x1a, 0xef, 0xba, 0xa0, 0x78, 0x86, 0xd8, 0x1d,
+ 0x1f, 0xd9, 0x63, 0x49, 0x41, 0x1f, 0x56, 0x9a, 0xe6, 0x91, 0x95, 0x75,
+ 0xb7, 0x97, 0x4c, 0x87, 0xbc, 0x90, 0x4f, 0xc2, 0x61, 0x5d, 0xc5, 0xe8,
+ 0xb8, 0x14, 0x97, 0x31, 0xb5, 0xb3, 0x73, 0x43, 0x5d, 0x00, 0x78, 0xa4,
+ 0xa6, 0x87, 0xed, 0xcb, 0x6e, 0x3b, 0x31, 0xb1, 0x5f, 0x90, 0x0f, 0x0e,
+ 0xda, 0xea, 0xda, 0x7e, 0x6e, 0x20, 0xfe, 0x0a, 0x75, 0x64, 0x75, 0x9b,
+ 0x01, 0x65, 0x58, 0x94, 0x63, 0x88, 0xfc, 0xf0, 0x6d, 0x3a, 0xf3, 0xe0,
+ 0x16, 0xb5, 0x0d, 0x73, 0x32, 0xdf, 0x4d, 0x75, 0x45, 0x60, 0x4c, 0xe9,
+ 0xf9, 0xb1, 0x1f, 0x7a, 0xb4, 0xe6, 0x0f, 0x56, 0x22, 0x01, 0x1c, 0x00,
+ 0x92, 0x9e, 0x4a, 0xae, 0x93, 0x9b, 0x6d, 0x8e, 0x76, 0x5e, 0x5b, 0x9a,
+ 0x0b, 0x9c, 0xd2, 0x2a, 0x02, 0xb1, 0xa1, 0xfe, 0x4e, 0xaa, 0xf5, 0x3f,
+ 0x56, 0x70, 0x18, 0xe1, 0x63, 0xc1, 0xb9, 0xc3, 0x42, 0xe7, 0x92, 0xe3,
+ 0xff, 0x00, 0x49, 0x6a, 0x9a, 0x59, 0xbe, 0xc9, 0x89, 0x96, 0xbb, 0x4f,
+ 0x31, 0x1f, 0xc1, 0x58, 0x93, 0x2c, 0xfd, 0xd7, 0x24, 0xa6, 0x9b, 0xfa,
+ 0x45, 0x02, 0x80, 0xca, 0x5a, 0xd6, 0x19, 0x1a, 0xc0, 0x88, 0x57, 0x31,
+ 0xb1, 0x6b, 0xae, 0xad, 0x90, 0x34, 0x44, 0xd2, 0x03, 0x4f, 0x0e, 0x91,
+ 0x1e, 0x3d, 0xd4, 0x9a, 0x47, 0xbb, 0xc9, 0x25, 0x22, 0xcb, 0xa6, 0xbb,
+ 0xf1, 0x4d, 0x4e, 0x64, 0xcb, 0x0b, 0x74, 0xd0, 0xfb, 0x9a, 0x42, 0xf3,
+ 0x76, 0xfd, 0x4f, 0xea, 0x6e, 0x25, 0xa1, 0xf5, 0xcf, 0x1f, 0x9d, 0xff,
+ 0x00, 0x91, 0x5e, 0x98, 0xf6, 0xee, 0x63, 0x48, 0x31, 0x23, 0x5e, 0xdc,
+ 0x2c, 0xd7, 0x3d, 0x94, 0xb9, 0xcc, 0x8f, 0x73, 0x49, 0xf7, 0xed, 0x9d,
+ 0xc4, 0x7c, 0xd2, 0x53, 0xc7, 0x33, 0xea, 0x17, 0x53, 0x7b, 0x67, 0xd7,
+ 0xa4, 0x1f, 0xed, 0xff, 0x00, 0xe4, 0x54, 0xdb, 0xf5, 0x03, 0xa8, 0x6a,
+ 0x1f, 0x91, 0x4e, 0xef, 0x01, 0xbc, 0xff, 0x00, 0xdf, 0x17, 0x6d, 0x4e,
+ 0x51, 0xf4, 0x45, 0x65, 0xbb, 0xda, 0x79, 0xdc, 0xdf, 0xf6, 0xa2, 0xb6,
+ 0xeb, 0xb7, 0x7e, 0xaf, 0x58, 0x6b, 0x3f, 0x3b, 0xb0, 0xfe, 0x25, 0x25,
+ 0x3c, 0x50, 0xff, 0x00, 0x17, 0x97, 0xec, 0xdc, 0xec, 0xe6, 0x03, 0xe0,
+ 0x2b, 0x77, 0xf1, 0x21, 0x59, 0xc0, 0xfa, 0x95, 0x8b, 0x87, 0x79, 0xb7,
+ 0x36, 0xe3, 0x95, 0xe9, 0x80, 0xe6, 0xd6, 0xd6, 0xed, 0x6c, 0xf8, 0xba,
+ 0x67, 0x70, 0x5d, 0xb5, 0x62, 0xd2, 0xd1, 0x61, 0xd4, 0x90, 0x0c, 0x10,
+ 0xde, 0xfd, 0xa5, 0x49, 0xf4, 0x0b, 0x5b, 0xb1, 0xec, 0x04, 0x1d, 0x67,
+ 0x49, 0x06, 0x64, 0x41, 0x8e, 0xc9, 0x29, 0xc7, 0x35, 0xe2, 0x37, 0x0e,
+ 0xdb, 0x69, 0xfc, 0xc2, 0xe6, 0x3b, 0xbb, 0x43, 0x99, 0xe3, 0x0b, 0x2a,
+ 0x8b, 0x3a, 0xae, 0x6b, 0x43, 0x2b, 0xc3, 0xbb, 0x11, 0xfc, 0xba, 0xc0,
+ 0xd6, 0xbd, 0xa4, 0x76, 0xda, 0x49, 0x1c, 0xf9, 0x85, 0xb7, 0xf6, 0x07,
+ 0xd6, 0xd6, 0x61, 0xb2, 0xa0, 0xda, 0x83, 0x9c, 0xf7, 0x59, 0xba, 0x5e,
+ 0xfd, 0xc7, 0x71, 0xdc, 0xd8, 0x1a, 0xcf, 0x75, 0xab, 0x53, 0x76, 0x57,
+ 0xe9, 0xb0, 0x16, 0xed, 0x11, 0xdb, 0x8f, 0x9c, 0xa4, 0xa7, 0x80, 0xbf,
+ 0xea, 0x46, 0x6e, 0x5d, 0xc7, 0x27, 0x21, 0xe6, 0x92, 0x74, 0x2c, 0x8d,
+ 0xc7, 0x4e, 0xe4, 0xca, 0xb1, 0x4f, 0xd5, 0xec, 0xde, 0x9a, 0xd2, 0x71,
+ 0xc7, 0xda, 0x07, 0x2c, 0xc7, 0x07, 0x63, 0x1c, 0xfe, 0xda, 0xbb, 0x85,
+ 0xdc, 0x12, 0xee, 0xd3, 0xf1, 0xd1, 0x31, 0xae, 0xf2, 0x5a, 0xe1, 0x66,
+ 0xd6, 0xb4, 0x7d, 0x08, 0x07, 0xef, 0x3c, 0xa4, 0xa7, 0x16, 0x9c, 0x5c,
+ 0x57, 0x62, 0xb1, 0xd9, 0x82, 0x2c, 0x70, 0x01, 0xf2, 0x4e, 0x8f, 0xee,
+ 0xdd, 0x0f, 0x8a, 0xab, 0xd4, 0xba, 0x75, 0x39, 0x38, 0x96, 0x61, 0x56,
+ 0x5f, 0xba, 0xc8, 0x6e, 0xc1, 0x2e, 0x3c, 0xfd, 0x1d, 0x64, 0xfe, 0x6a,
+ 0xd2, 0xcf, 0xc1, 0xc9, 0xba, 0xab, 0xa9, 0xa9, 0xac, 0x2c, 0xbf, 0x97,
+ 0x19, 0x96, 0x9f, 0x16, 0xf3, 0xaa, 0x97, 0x4f, 0xe9, 0xd7, 0xd7, 0x6f,
+ 0xad, 0x92, 0xe6, 0x3a, 0xde, 0x01, 0x0d, 0x88, 0x07, 0x98, 0xf8, 0xa4,
+ 0xa7, 0x9f, 0xa3, 0xfc, 0x5d, 0x60, 0x91, 0x36, 0x3a, 0xd9, 0x3d, 0xb7,
+ 0x01, 0x1f, 0xf4, 0x51, 0x07, 0xf8, 0xba, 0xc1, 0x63, 0xa4, 0x5d, 0x70,
+ 0x1e, 0x4e, 0x69, 0xff, 0x00, 0xbe, 0xae, 0xc7, 0x69, 0x90, 0x49, 0x13,
+ 0xc6, 0x89, 0x3a, 0xa9, 0xe4, 0x02, 0xee, 0xd2, 0x4c, 0x7d, 0xc9, 0x29,
+ 0xe4, 0x19, 0xfe, 0x2e, 0xba, 0x5f, 0xd3, 0xb6, 0xcb, 0xde, 0x3c, 0x03,
+ 0x98, 0x34, 0xff, 0x00, 0x31, 0x1d, 0xdf, 0x51, 0x7a, 0x23, 0x43, 0x05,
+ 0x78, 0xef, 0xb3, 0x73, 0xb6, 0xb9, 0xde, 0xa1, 0x3b, 0x44, 0x7d, 0x23,
+ 0xa8, 0xfc, 0x17, 0x54, 0x19, 0x03, 0x58, 0x4d, 0xb4, 0x6e, 0xf0, 0xd2,
+ 0x74, 0x00, 0x24, 0xa7, 0x9c, 0xff, 0x00, 0x99, 0x1d, 0x0c, 0x37, 0x69,
+ 0xc7, 0x12, 0x78, 0x3b, 0x9c, 0x7f, 0x8a, 0x93, 0x7e, 0xac, 0x74, 0xec,
+ 0x27, 0xb6, 0xec, 0x4a, 0x1a, 0xcb, 0x6b, 0x1e, 0xd2, 0x27, 0x77, 0xe2,
+ 0x56, 0xfb, 0xd8, 0xc7, 0x00, 0x5d, 0xa8, 0x9f, 0x1d, 0x15, 0x3c, 0xab,
+ 0xea, 0x63, 0x4b, 0x3d, 0x42, 0xd3, 0xc4, 0x1d, 0x7f, 0x2a, 0x4a, 0x68,
+ 0x61, 0x3e, 0xb7, 0x7d, 0x63, 0xb2, 0xb0, 0x62, 0xc6, 0x63, 0x38, 0xb9,
+ 0x84, 0x11, 0x01, 0xcf, 0x64, 0x1d, 0x46, 0xab, 0x52, 0xd6, 0xef, 0x21,
+ 0xad, 0xe0, 0x15, 0x95, 0xd3, 0x59, 0x5b, 0xba, 0xd5, 0xd7, 0xb5, 0xe0,
+ 0xd8, 0xec, 0x70, 0xc2, 0x3c, 0x03, 0x5d, 0xf7, 0x2d, 0x62, 0x43, 0x09,
+ 0x27, 0xe8, 0xb6, 0x4f, 0xc5, 0x25, 0x35, 0x3d, 0x1f, 0x4a, 0xc7, 0x46,
+ 0xa1, 0xdc, 0x85, 0x9d, 0x78, 0xb0, 0x66, 0xd0, 0xe0, 0x74, 0x07, 0x5e,
+ 0xfe, 0x20, 0x7e, 0x55, 0xa3, 0x66, 0x4d, 0x5b, 0xe5, 0xc1, 0xc3, 0x52,
+ 0x01, 0x0a, 0x86, 0x45, 0xf4, 0xbb, 0x26, 0x96, 0xb3, 0x52, 0xd7, 0x03,
+ 0xa7, 0xcd, 0x25, 0x3a, 0xed, 0xf6, 0xd7, 0xb9, 0xe3, 0x5e, 0x1b, 0xf1,
+ 0x59, 0xdd, 0x4a, 0x3e, 0xc7, 0x61, 0x76, 0x83, 0x42, 0x7e, 0x00, 0xab,
+ 0xc6, 0xd0, 0x04, 0x1d, 0x5a, 0x74, 0x21, 0x53, 0xea, 0x2f, 0x27, 0x06,
+ 0xed, 0x90, 0xd2, 0x18, 0x4b, 0x4b, 0x84, 0xb7, 0x4f, 0x14, 0x94, 0xe7,
+ 0xd2, 0x4d, 0xac, 0xd8, 0x03, 0x4b, 0x4f, 0x04, 0xf7, 0xf9, 0x2b, 0x14,
+ 0xd7, 0x66, 0xc8, 0x36, 0x18, 0x6f, 0x1a, 0x0f, 0xb9, 0x06, 0x97, 0x41,
+ 0x15, 0x58, 0xd6, 0xb5, 0xc7, 0x89, 0xf2, 0x1d, 0x91, 0x9d, 0xea, 0x91,
+ 0xb0, 0x6a, 0x3e, 0xf4, 0x94, 0xd8, 0x78, 0x65, 0x9a, 0x01, 0x23, 0xc5,
+ 0x37, 0xd8, 0xeb, 0x8f, 0x52, 0x3f, 0xba, 0x10, 0xd8, 0x2e, 0x6b, 0x21,
+ 0xad, 0x0e, 0x3c, 0x71, 0x1f, 0x04, 0xb7, 0xdd, 0x31, 0xb7, 0x58, 0xe2,
+ 0x7d, 0xb3, 0xc7, 0x31, 0xfc, 0x12, 0x52, 0xf8, 0xb8, 0xd5, 0x0a, 0x58,
+ 0x43, 0x40, 0x31, 0x06, 0x11, 0x71, 0x5a, 0xc6, 0x1b, 0xd8, 0x06, 0x81,
+ 0xdb, 0x80, 0x1f, 0xca, 0x0d, 0x77, 0xe5, 0x4b, 0x11, 0xc0, 0x00, 0x07,
+ 0x1c, 0x00, 0x8d, 0x56, 0xd6, 0x65, 0x3c, 0x71, 0xb9, 0xad, 0x27, 0xe4,
+ 0x48, 0xfe, 0x29, 0x29, 0x9b, 0xd8, 0x08, 0x04, 0x0f, 0x9a, 0xae, 0xd6,
+ 0x96, 0x67, 0x80, 0x62, 0x1f, 0x5c, 0x13, 0xf0, 0x95, 0x69, 0xf1, 0xb4,
+ 0x96, 0xf1, 0x2a, 0xb6, 0xbe, 0xb3, 0xcb, 0xc4, 0x6c, 0x2d, 0x70, 0x3f,
+ 0xc9, 0x94, 0x94, 0x9d, 0xa3, 0x6e, 0x4d, 0x4f, 0x6f, 0x0e, 0x6b, 0x98,
+ 0xef, 0x3d, 0x37, 0x0f, 0xc8, 0x88, 0xf6, 0xb4, 0x58, 0xde, 0x75, 0xe4,
+ 0x0e, 0x3e, 0x65, 0x31, 0x21, 0xaf, 0x6c, 0xe9, 0xaf, 0xc4, 0x92, 0x9a,
+ 0xc7, 0x48, 0xf2, 0x1c, 0x1e, 0xd2, 0x92, 0x9a, 0xf7, 0x80, 0xcb, 0x49,
+ 0x1d, 0xeb, 0x22, 0x3c, 0xda, 0x67, 0xf2, 0x39, 0x26, 0x39, 0xc7, 0x18,
+ 0xc8, 0xf7, 0xb0, 0x98, 0x1e, 0x23, 0x90, 0x14, 0x72, 0x77, 0x5c, 0x59,
+ 0xb4, 0x1f, 0xa5, 0x1b, 0x8e, 0x92, 0x1c, 0xd3, 0x29, 0x3b, 0x2b, 0x0f,
+ 0x1d, 0x8e, 0x75, 0xd7, 0x31, 0x84, 0x01, 0x23, 0x70, 0x9d, 0x3c, 0x86,
+ 0xa9, 0x29, 0x77, 0x5b, 0x21, 0x84, 0x08, 0x83, 0xdb, 0xb2, 0x23, 0xe5,
+ 0xcf, 0x3e, 0x6b, 0x16, 0xef, 0xac, 0x5d, 0x3e, 0xb9, 0x2c, 0xad, 0xf7,
+ 0x3b, 0xf9, 0x20, 0x06, 0xcf, 0xc5, 0xdf, 0xdc, 0xab, 0xd9, 0xf5, 0x9b,
+ 0x32, 0xd0, 0xd1, 0x4e, 0x3b, 0x6a, 0x92, 0x40, 0xdc, 0x4b, 0x9d, 0xc7,
+ 0x7e, 0x02, 0x4a, 0x7a, 0x6b, 0x2b, 0x77, 0xd9, 0x25, 0xba, 0x90, 0x78,
+ 0x59, 0xee, 0x0c, 0x17, 0x45, 0xbf, 0x4b, 0x92, 0x3e, 0x2b, 0x27, 0xed,
+ 0xfd, 0x4a, 0xff, 0x00, 0xa7, 0x73, 0xa0, 0x8f, 0xa0, 0xdf, 0x68, 0xfb,
+ 0x9a, 0x8f, 0x53, 0x2e, 0x7c, 0x12, 0x40, 0x27, 0xf3, 0xf9, 0x49, 0x4e,
+ 0xdd, 0x2d, 0xa1, 0xa7, 0x5a, 0xc7, 0x8c, 0x98, 0x85, 0x69, 0xb7, 0x33,
+ 0x69, 0x68, 0x01, 0xa0, 0x68, 0x61, 0x63, 0x56, 0xc7, 0x96, 0x06, 0x92,
+ 0x60, 0x69, 0xa9, 0x3a, 0xfc, 0xd1, 0x98, 0x3f, 0x95, 0xa7, 0x70, 0x4c,
+ 0xca, 0x4a, 0x75, 0x85, 0xb4, 0xb4, 0x41, 0x30, 0x04, 0x6a, 0x98, 0xe6,
+ 0x63, 0xb1, 0xa0, 0xb9, 0xf0, 0x0e, 0x80, 0x9f, 0xe0, 0xb2, 0xad, 0xb7,
+ 0xd4, 0xdc, 0x1c, 0xf1, 0x1c, 0x43, 0x4c, 0x1f, 0x15, 0x54, 0x59, 0x50,
+ 0x6f, 0xa3, 0xb5, 0xc6, 0xb9, 0x97, 0x6a, 0xee, 0xda, 0xea, 0x79, 0x49,
+ 0x4f, 0x40, 0xcb, 0x9b, 0x63, 0x4b, 0x98, 0x0c, 0xb2, 0x34, 0x3a, 0x4c,
+ 0xf0, 0xab, 0xdb, 0x96, 0xea, 0x5e, 0x03, 0xda, 0x5c, 0x48, 0x92, 0x47,
+ 0xe6, 0x8e, 0xd2, 0x02, 0xad, 0x80, 0x72, 0xed, 0x7b, 0xb3, 0x73, 0x88,
+ 0xad, 0x8e, 0x66, 0xec, 0x7c, 0x76, 0xe8, 0x2b, 0x68, 0xe5, 0xee, 0x2e,
+ 0xe5, 0xdf, 0xc1, 0x64, 0xe2, 0xf5, 0x86, 0xe6, 0xe6, 0x65, 0x58, 0xea,
+ 0xdc, 0x2a, 0x70, 0x35, 0xd4, 0xe3, 0x2d, 0xf6, 0x8d, 0x03, 0x80, 0xef,
+ 0x3c, 0xca, 0x4a, 0x7a, 0x2f, 0x53, 0x29, 0xe2, 0x6b, 0xa8, 0x90, 0x75,
+ 0x04, 0xe8, 0x0a, 0xaf, 0x97, 0xd4, 0xdf, 0x87, 0xb4, 0x64, 0x34, 0x30,
+ 0xbc, 0xfb, 0x44, 0xce, 0xe0, 0x39, 0x54, 0x87, 0x54, 0xcb, 0x65, 0x61,
+ 0x8d, 0xc8, 0x2f, 0x70, 0x81, 0xb9, 0xc0, 0x4e, 0x88, 0x5b, 0xfd, 0x5b,
+ 0x0d, 0x97, 0x3f, 0xd7, 0xb2, 0x20, 0x6f, 0x3e, 0xd0, 0x3c, 0x42, 0x4a,
+ 0x6c, 0x0f, 0xac, 0x55, 0xbb, 0x46, 0x56, 0xe2, 0xe2, 0x76, 0x80, 0x06,
+ 0x9f, 0x15, 0x61, 0xdd, 0x42, 0xd7, 0x7d, 0x16, 0xfc, 0xf5, 0x1f, 0x82,
+ 0xcb, 0xb2, 0xb0, 0xe7, 0xef, 0xd8, 0xdf, 0xb8, 0x91, 0x3e, 0x30, 0x84,
+ 0xea, 0xb7, 0x12, 0xf2, 0xd7, 0x6a, 0x44, 0x00, 0x48, 0x1f, 0x95, 0x25,
+ 0x3b, 0x3f, 0x6d, 0xbb, 0x46, 0x17, 0xcb, 0xb9, 0xe2, 0x10, 0xdf, 0xd4,
+ 0x6f, 0x60, 0x71, 0x25, 0xda, 0x71, 0xa0, 0x83, 0xf0, 0xe5, 0x67, 0x07,
+ 0x38, 0x92, 0x1a, 0x35, 0x10, 0x35, 0xe4, 0x26, 0x3e, 0xab, 0xe1, 0x91,
+ 0x60, 0x11, 0xa1, 0x02, 0x07, 0xde, 0x12, 0x53, 0xa9, 0x57, 0x50, 0xb6,
+ 0xff, 0x00, 0x60, 0xb7, 0xd3, 0x74, 0x7b, 0x77, 0x0e, 0x7f, 0x22, 0x9b,
+ 0xac, 0xcd, 0x0e, 0x1b, 0x1e, 0xd2, 0x3b, 0xcc, 0x92, 0x7c, 0xbc, 0x96,
+ 0x25, 0x9f, 0x68, 0x63, 0xc3, 0x8e, 0xe7, 0x82, 0x21, 0xcd, 0x76, 0xba,
+ 0x03, 0x20, 0x85, 0xb7, 0x8b, 0x93, 0x89, 0x95, 0x50, 0x6c, 0x11, 0x63,
+ 0x46, 0xaf, 0x23, 0xd8, 0x48, 0xf3, 0xf1, 0xf2, 0x49, 0x4c, 0x5f, 0x66,
+ 0x48, 0xf7, 0x10, 0xf2, 0x1b, 0xcb, 0x5a, 0x77, 0x6a, 0xab, 0x59, 0x6d,
+ 0x84, 0x3c, 0x57, 0x5e, 0xf7, 0x44, 0xb4, 0x1d, 0x4b, 0x9d, 0xfb, 0xb3,
+ 0x01, 0x57, 0xc8, 0xcf, 0x1e, 0xab, 0xdb, 0x5c, 0x16, 0x83, 0xb5, 0x91,
+ 0xdc, 0xf7, 0x21, 0x1f, 0x0d, 0xf6, 0xb4, 0x32, 0xc2, 0x60, 0xb7, 0x52,
+ 0xd8, 0x96, 0x8f, 0x82, 0x4a, 0x4b, 0x85, 0x83, 0x7e, 0x3d, 0x9e, 0xb3,
+ 0x83, 0xcd, 0xb6, 0x30, 0x87, 0xb7, 0x64, 0x06, 0x99, 0x1a, 0x04, 0x6b,
+ 0x5b, 0x9a, 0xe6, 0x8f, 0x5c, 0xe8, 0x39, 0x80, 0x40, 0x3e, 0x08, 0xcd,
+ 0xea, 0x4f, 0xb4, 0x7e, 0x88, 0x83, 0xac, 0x12, 0xd0, 0x77, 0x0f, 0x93,
+ 0x93, 0xbb, 0x25, 0xd6, 0x1d, 0xb6, 0x12, 0x0f, 0x3b, 0x52, 0x53, 0x47,
+ 0xde, 0xc0, 0x09, 0x3b, 0x48, 0xd0, 0xba, 0x24, 0x9f, 0x35, 0x46, 0xdc,
+ 0x72, 0xfb, 0x5b, 0x73, 0x5e, 0x18, 0x58, 0x66, 0x47, 0xe7, 0x47, 0x1b,
+ 0x87, 0x2b, 0x6d, 0xee, 0x86, 0xea, 0xcd, 0xd3, 0xe5, 0xd9, 0x03, 0xd3,
+ 0x64, 0xb8, 0x86, 0xf3, 0xf7, 0x24, 0xa7, 0x3c, 0x5f, 0xd5, 0x6b, 0x20,
+ 0x3d, 0xf8, 0xdb, 0x27, 0xdc, 0x5c, 0x2c, 0x2f, 0x0d, 0xec, 0x61, 0xa7,
+ 0xc5, 0x47, 0x2f, 0x2f, 0x2d, 0xb5, 0x01, 0xea, 0xd4, 0x77, 0xb0, 0x91,
+ 0x65, 0x4d, 0x31, 0x3f, 0xdb, 0x26, 0x15, 0xab, 0xa8, 0x33, 0x0d, 0xa8,
+ 0x9e, 0xe3, 0x5e, 0x7e, 0xe4, 0x1a, 0xba, 0x68, 0xf4, 0x6d, 0xad, 0xb5,
+ 0x8a, 0x85, 0xa6, 0x1f, 0x20, 0x78, 0x73, 0x25, 0x25, 0x2b, 0xa7, 0x3f,
+ 0xed, 0x41, 0xa3, 0x3e, 0xc6, 0x9b, 0x99, 0xf4, 0x08, 0x10, 0x60, 0xf7,
+ 0x25, 0x68, 0x1c, 0x50, 0xc2, 0x22, 0xc6, 0xbf, 0x4e, 0x38, 0x76, 0x9e,
+ 0x0a, 0x95, 0x3d, 0x39, 0xa1, 0xcd, 0xd7, 0x7b, 0xc6, 0x8d, 0x8e, 0x21,
+ 0x5c, 0x60, 0xb0, 0xbc, 0xb5, 0xcd, 0x10, 0xdd, 0x0f, 0xc9, 0x25, 0x30,
+ 0x03, 0x71, 0xf6, 0x83, 0xf3, 0xe5, 0x3f, 0xa6, 0xee, 0x11, 0x00, 0x69,
+ 0x70, 0x03, 0xbf, 0x9a, 0x9e, 0xc3, 0xbb, 0x6e, 0xbf, 0x72, 0x4a, 0x69,
+ 0xe0, 0xcc, 0xc1, 0x10, 0xe9, 0xd2, 0x15, 0xbb, 0xd8, 0x5b, 0x75, 0x2f,
+ 0x07, 0x47, 0x07, 0xb4, 0x8f, 0x90, 0x77, 0xfd, 0xf5, 0x73, 0x2c, 0xfa,
+ 0xce, 0x6b, 0x91, 0x4e, 0x21, 0x7c, 0x70, 0x5c, 0x76, 0x8f, 0xfa, 0x32,
+ 0x9d, 0xfd, 0x6b, 0xaf, 0xe7, 0x53, 0x15, 0xb1, 0x95, 0x10, 0xe0, 0xe6,
+ 0x16, 0x08, 0x0d, 0xf8, 0xee, 0x99, 0xd0, 0xa4, 0xa7, 0xa7, 0x68, 0x20,
+ 0xed, 0x71, 0xd0, 0x73, 0xaf, 0x0a, 0xa6, 0x4f, 0x54, 0xe9, 0x98, 0xb3,
+ 0xeb, 0xe4, 0x31, 0xa4, 0x82, 0xd2, 0xd6, 0x9d, 0xee, 0xed, 0xd9, 0xb2,
+ 0xb9, 0xb7, 0x74, 0xee, 0xb1, 0x99, 0xa6, 0x55, 0xee, 0x73, 0x7b, 0x82,
+ 0xff, 0x00, 0xe0, 0x34, 0x45, 0xab, 0xea, 0xd9, 0xac, 0xc9, 0x20, 0xc7,
+ 0x12, 0x65, 0x25, 0x37, 0xef, 0xfa, 0xd7, 0x88, 0x21, 0xb8, 0xf4, 0x59,
+ 0x7b, 0xfb, 0x17, 0x43, 0x41, 0x20, 0x6b, 0xe2, 0x55, 0x1b, 0xfe, 0xb0,
+ 0x75, 0x9c, 0x98, 0x65, 0x35, 0xd7, 0x43, 0x49, 0xec, 0x0b, 0x88, 0xf9,
+ 0xbb, 0x45, 0xaa, 0xde, 0x95, 0x89, 0x5b, 0x18, 0x68, 0xa7, 0x6d, 0xa3,
+ 0xe9, 0x3c, 0x9d, 0xda, 0x7c, 0x0a, 0xb7, 0x45, 0x34, 0xd6, 0xcd, 0x29,
+ 0x00, 0x47, 0x31, 0xee, 0x25, 0x25, 0x3c, 0xef, 0xd9, 0x7a, 0xb6, 0x6b,
+ 0x47, 0xda, 0x2d, 0x79, 0x68, 0x23, 0xdb, 0x24, 0x0d, 0x3c, 0x95, 0x8a,
+ 0x7e, 0xaf, 0x93, 0x25, 0xd0, 0x1c, 0x79, 0x5b, 0x4e, 0x75, 0x8d, 0x3e,
+ 0xda, 0x9c, 0xed, 0xda, 0x93, 0x20, 0x00, 0x9c, 0x65, 0x0d, 0xdb, 0x5d,
+ 0x59, 0x1d, 0xa7, 0xb2, 0x4a, 0x73, 0x6b, 0xfa, 0xbd, 0x8c, 0xc3, 0xa9,
+ 0x26, 0x3c, 0x11, 0xc7, 0x4f, 0xc1, 0xa0, 0x00, 0xf8, 0x1f, 0xba, 0x5d,
+ 0x1c, 0xab, 0xce, 0x20, 0x91, 0x3e, 0xc9, 0x30, 0x1a, 0x4e, 0xa5, 0x46,
+ 0xdc, 0x3a, 0x6e, 0x11, 0x60, 0x79, 0x73, 0x4c, 0x82, 0x1c, 0x5b, 0xa7,
+ 0x86, 0x89, 0x29, 0x1b, 0x31, 0xe9, 0xac, 0x97, 0xb5, 0x8c, 0x90, 0x23,
+ 0x51, 0xb8, 0x6b, 0xde, 0x13, 0x96, 0x8a, 0xd8, 0x3d, 0xb3, 0xe1, 0xa6,
+ 0x91, 0xc6, 0x88, 0x6e, 0x63, 0x7d, 0x60, 0xca, 0xe9, 0x2f, 0x03, 0x5d,
+ 0xc5, 0xce, 0x3a, 0x8d, 0x20, 0xea, 0xae, 0x07, 0x52, 0xd6, 0x82, 0xe8,
+ 0x61, 0x1d, 0xdc, 0x07, 0xf1, 0x49, 0x4d, 0x37, 0x39, 0xd3, 0xc4, 0x79,
+ 0x05, 0x07, 0x9f, 0x61, 0xec, 0x46, 0xa4, 0x8f, 0xf6, 0x2b, 0x8e, 0x75,
+ 0x64, 0x4b, 0x40, 0xf3, 0x2a, 0xb5, 0xce, 0x00, 0x18, 0x70, 0x83, 0xdb,
+ 0x5e, 0x12, 0x53, 0x49, 0xc6, 0x63, 0x68, 0x74, 0x78, 0xc6, 0x8a, 0xdf,
+ 0x4d, 0xc1, 0x36, 0x97, 0x5d, 0x6f, 0xb7, 0x1d, 0xba, 0x46, 0xb0, 0xf7,
+ 0x1e, 0xde, 0x61, 0x35, 0x58, 0xa6, 0xf7, 0x8a, 0xd8, 0xef, 0x67, 0x2e,
+ 0x76, 0xa3, 0x6b, 0x67, 0x58, 0x56, 0x3a, 0xa5, 0xff, 0x00, 0x67, 0xc7,
+ 0xf4, 0x31, 0x7d, 0x96, 0x3c, 0x7a, 0x74, 0xc7, 0xe6, 0xe9, 0xee, 0x7f,
+ 0xf6, 0x47, 0xe2, 0x92, 0x9a, 0x1d, 0x6b, 0xa8, 0x9c, 0x97, 0xbf, 0xa7,
+ 0xe2, 0x49, 0x69, 0x86, 0xe4, 0x5a, 0xde, 0xc0, 0x72, 0xc0, 0x7c, 0x4a,
+ 0x8b, 0x31, 0x58, 0xd6, 0x86, 0xd2, 0x36, 0xf6, 0x1e, 0x41, 0x3e, 0x0e,
+ 0x20, 0xc6, 0xa4, 0x56, 0xc1, 0xba, 0x39, 0xee, 0x75, 0xee, 0xad, 0xfb,
+ 0x58, 0xd9, 0x78, 0xed, 0xc7, 0x82, 0x4a, 0x6a, 0xfa, 0x0e, 0x04, 0x09,
+ 0xd3, 0xc3, 0xb1, 0xf8, 0x26, 0xba, 0xb7, 0x8d, 0xbb, 0x1a, 0x5e, 0xef,
+ 0x21, 0x1a, 0x7c, 0xe1, 0x59, 0x2e, 0xa5, 0xce, 0xdc, 0x5b, 0xa7, 0x13,
+ 0xaf, 0xf7, 0xa9, 0xba, 0xa6, 0x10, 0x4b, 0x1a, 0x66, 0x20, 0x76, 0x84,
+ 0x94, 0x87, 0x15, 0x96, 0xe9, 0xb4, 0xed, 0x27, 0xb1, 0xef, 0x08, 0xb7,
+ 0x34, 0xb8, 0xee, 0x3e, 0xd3, 0xfb, 0xa3, 0xba, 0x85, 0x94, 0xe4, 0x12,
+ 0x06, 0xa1, 0xad, 0xfb, 0xbc, 0x94, 0xc5, 0x76, 0x93, 0xee, 0x70, 0x3e,
+ 0x5d, 0xd2, 0x52, 0xd5, 0x16, 0x80, 0x37, 0x30, 0xf3, 0xae, 0x9c, 0x2b,
+ 0x95, 0xd5, 0x5d, 0x84, 0x47, 0x7f, 0x87, 0x75, 0x5e, 0xb7, 0x96, 0x99,
+ 0x7f, 0xbd, 0xa0, 0xeb, 0x25, 0x58, 0x65, 0xb5, 0x07, 0x02, 0xc6, 0xc4,
+ 0xf6, 0x3a, 0xa4, 0xa6, 0xc3, 0xf0, 0x2a, 0x2d, 0x05, 0xcc, 0x06, 0x39,
+ 0x54, 0x8f, 0x48, 0xc6, 0x3b, 0xfd, 0x32, 0xea, 0xc5, 0x9a, 0x3c, 0x30,
+ 0xc0, 0x20, 0x79, 0x78, 0xab, 0xcc, 0xb2, 0xa2, 0x3d, 0xc4, 0xc9, 0x9d,
+ 0x3e, 0x08, 0x8d, 0xba, 0xae, 0x7f, 0x04, 0x94, 0xe6, 0xd7, 0xd2, 0x2a,
+ 0xa6, 0xb0, 0x00, 0xde, 0x46, 0x92, 0xed, 0x49, 0x8f, 0x1e, 0x25, 0x11,
+ 0xd8, 0x9b, 0x99, 0xe9, 0xb4, 0x9a, 0xc8, 0xee, 0xdd, 0x25, 0x68, 0xfa,
+ 0x8d, 0x23, 0xda, 0x24, 0x79, 0x26, 0x96, 0x92, 0x41, 0x07, 0xe7, 0xc2,
+ 0x4a, 0x69, 0x83, 0xd4, 0xab, 0x70, 0x0d, 0xae, 0x81, 0x58, 0xfa, 0x5b,
+ 0x64, 0x38, 0xfe, 0x10, 0xaa, 0x59, 0x5f, 0x55, 0x7e, 0x5b, 0xad, 0x7b,
+ 0x3f, 0x43, 0x00, 0x35, 0x80, 0xb4, 0x93, 0xe3, 0x2e, 0x9d, 0x16, 0xc6,
+ 0xd0, 0x75, 0x1a, 0xfc, 0x4a, 0x60, 0x36, 0xc9, 0xf6, 0xfc, 0x67, 0x54,
+ 0x94, 0xd3, 0x05, 0xbf, 0x44, 0x9d, 0x9a, 0x4e, 0xa1, 0x48, 0x31, 0x84,
+ 0x19, 0x71, 0x1f, 0x8c, 0xab, 0x0f, 0x2c, 0x8d, 0x48, 0xd5, 0x09, 0xd4,
+ 0xd6, 0xe1, 0x31, 0xaf, 0xc6, 0x12, 0x52, 0x31, 0x55, 0x1c, 0x8d, 0x4f,
+ 0xdc, 0x9c, 0xd2, 0x1e, 0x0b, 0x35, 0x83, 0xa4, 0xcc, 0x7d, 0xc8, 0x82,
+ 0x96, 0xb4, 0xee, 0x9d, 0xa7, 0xc8, 0xff, 0x00, 0x04, 0xed, 0x73, 0x80,
+ 0x3b, 0x4c, 0x83, 0xe2, 0x92, 0x9a, 0xe5, 0x8d, 0xaa, 0x24, 0x6f, 0x0d,
+ 0xf3, 0xd5, 0x04, 0xe5, 0x52, 0xc9, 0x0c, 0x80, 0x20, 0x9d, 0x06, 0x8a,
+ 0xe3, 0xdd, 0x11, 0xb9, 0x9b, 0xbc, 0x00, 0xee, 0x98, 0x54, 0x2c, 0x6c,
+ 0xfd, 0x98, 0x49, 0xec, 0x40, 0x49, 0x4d, 0x7a, 0x43, 0xaf, 0x21, 0xd1,
+ 0xa7, 0x68, 0x0a, 0xdf, 0xa3, 0x6f, 0x13, 0xa4, 0x73, 0x21, 0x0c, 0x8b,
+ 0x18, 0x36, 0xb6, 0xb0, 0xc1, 0xc4, 0x34, 0xe9, 0x09, 0xb7, 0x98, 0x8d,
+ 0xe2, 0x38, 0xf9, 0xf2, 0x92, 0x9e, 0x73, 0x1f, 0xa6, 0x30, 0x3b, 0xd8,
+ 0xc1, 0xa7, 0x0a, 0xdd, 0x74, 0x06, 0x8d, 0xb2, 0x39, 0xe0, 0x05, 0x67,
+ 0x78, 0x06, 0x5a, 0xde, 0x04, 0x18, 0x50, 0x6b, 0x7b, 0x16, 0x90, 0x35,
+ 0xf7, 0x46, 0xb3, 0xe2, 0x92, 0x96, 0x78, 0xa8, 0x08, 0xb1, 0xdb, 0x47,
+ 0x04, 0x4c, 0x25, 0x5e, 0x2d, 0x4f, 0x3f, 0xa3, 0x12, 0x5a, 0x78, 0x91,
+ 0xf8, 0x4f, 0x28, 0xac, 0xa9, 0xcf, 0x04, 0x41, 0x90, 0x75, 0x24, 0x73,
+ 0x1e, 0x29, 0xfd, 0x07, 0x37, 0xe9, 0xb3, 0x8e, 0x25, 0x25, 0x21, 0x35,
+ 0xd4, 0x1c, 0xed, 0xc4, 0xb4, 0xcf, 0x8c, 0x7d, 0xc9, 0x36, 0xda, 0xaa,
+ 0x30, 0xcb, 0x1c, 0x27, 0x80, 0xe7, 0x4a, 0x9b, 0x70, 0xea, 0xb0, 0xc9,
+ 0x71, 0x68, 0x3c, 0xb6, 0x25, 0x3b, 0xba, 0x7d, 0x4c, 0x10, 0xd3, 0xed,
+ 0xe4, 0x69, 0x22, 0x7e, 0x25, 0x25, 0x27, 0x65, 0x8e, 0x7c, 0x06, 0xb8,
+ 0x3b, 0x49, 0x56, 0x1b, 0x8b, 0xea, 0x34, 0x8b, 0x1b, 0xc6, 0xb3, 0xc1,
+ 0xfb, 0xd5, 0x2a, 0xb1, 0xdb, 0xac, 0x3d, 0xa6, 0xcf, 0x2d, 0x63, 0xf8,
+ 0x2b, 0x2c, 0xaa, 0x97, 0x34, 0x6e, 0x7b, 0x9e, 0x46, 0x9e, 0x01, 0x25,
+ 0x24, 0xb3, 0x1f, 0x1d, 0xe2, 0x1c, 0xed, 0x07, 0x04, 0x90, 0x9c, 0x63,
+ 0x7a, 0x6d, 0xfd, 0x13, 0xe5, 0xc0, 0xc8, 0xdd, 0xee, 0x31, 0xe0, 0xa0,
+ 0xfc, 0x7a, 0x8b, 0x9b, 0xfa, 0x39, 0x03, 0x88, 0x31, 0x00, 0x25, 0xe8,
+ 0x56, 0x0e, 0xd6, 0x12, 0x27, 0xe3, 0x29, 0x29, 0x57, 0x7d, 0xa8, 0x58,
+ 0x1c, 0x2b, 0x80, 0x79, 0xdb, 0x07, 0x8d, 0x50, 0x1d, 0xea, 0xdc, 0x76,
+ 0x96, 0x73, 0xc6, 0x93, 0x1f, 0x72, 0x37, 0xa2, 0xc6, 0xb8, 0x97, 0x3c,
+ 0xc7, 0x24, 0xcf, 0x64, 0xee, 0xbb, 0x1e, 0xb0, 0x25, 0xd0, 0xd1, 0xdc,
+ 0xcc, 0xcf, 0xc9, 0x25, 0x20, 0xf4, 0x6e, 0x00, 0x37, 0x6b, 0x77, 0x1f,
+ 0x13, 0x1c, 0x2a, 0xf7, 0xd7, 0x63, 0x80, 0x60, 0x6b, 0x46, 0xed, 0x04,
+ 0x19, 0x24, 0xf8, 0x2b, 0x37, 0x5e, 0x36, 0x91, 0x5f, 0xd2, 0x8f, 0xbb,
+ 0xe4, 0x9b, 0x1a, 0xab, 0x37, 0x0b, 0x1f, 0xc9, 0xd7, 0x5f, 0xcd, 0xfe,
+ 0xe4, 0x94, 0xce, 0x8a, 0x9b, 0x83, 0x8a, 0x77, 0x38, 0x6f, 0xe6, 0xd7,
+ 0x9d, 0x40, 0x8d, 0x7e, 0xe0, 0xb2, 0xa9, 0x6b, 0xf3, 0xb2, 0x5d, 0x96,
+ 0xe3, 0xec, 0xfa, 0x34, 0xb4, 0xf1, 0xb4, 0x78, 0xfc, 0x79, 0x2a, 0x79,
+ 0x59, 0x37, 0x75, 0x1b, 0x36, 0x52, 0xd2, 0x71, 0x2a, 0x3f, 0xa5, 0xd4,
+ 0x03, 0x63, 0x87, 0x00, 0x7f, 0x72, 0xd2, 0xc4, 0xab, 0x6d, 0x25, 0x8e,
+ 0xfd, 0x1b, 0xc8, 0x90, 0xd3, 0xc2, 0x4a, 0x47, 0x4d, 0x4e, 0x1b, 0x80,
+ 0x20, 0x39, 0xbc, 0x81, 0xc6, 0xa8, 0x76, 0x7b, 0x5d, 0x0e, 0xf7, 0x93,
+ 0xc4, 0x4f, 0x2a, 0xcf, 0xae, 0xca, 0xb7, 0x56, 0xdd, 0x1f, 0x31, 0x31,
+ 0x22, 0x78, 0xe5, 0x02, 0xd6, 0xbc, 0x17, 0x16, 0xec, 0x3b, 0x0e, 0xae,
+ 0x0e, 0x31, 0xe6, 0x49, 0x29, 0x29, 0x97, 0xd8, 0xae, 0xb7, 0x46, 0x80,
+ 0x1d, 0xe1, 0x20, 0x7e, 0x45, 0x0b, 0x69, 0x7d, 0x6e, 0x2c, 0x70, 0x82,
+ 0x34, 0x24, 0x14, 0x6a, 0xa9, 0xca, 0x7b, 0x43, 0xe8, 0x27, 0x5d, 0x77,
+ 0xce, 0x9f, 0x8a, 0x95, 0xb4, 0x58, 0xc6, 0x88, 0x79, 0xb6, 0xe9, 0x87,
+ 0xf6, 0x03, 0xe6, 0x52, 0x53, 0x58, 0x38, 0x81, 0x1c, 0xca, 0x95, 0x75,
+ 0xda, 0xe7, 0x43, 0x19, 0xb9, 0xc3, 0x91, 0x1d, 0xbc, 0xd5, 0x9a, 0xb0,
+ 0xdb, 0x65, 0x61, 0xd7, 0x91, 0x55, 0x84, 0x99, 0x6c, 0xee, 0x31, 0xf1,
+ 0x45, 0xb1, 0xee, 0x0d, 0x2c, 0xa9, 0xc0, 0x16, 0xf0, 0x46, 0x87, 0x4e,
+ 0xfa, 0x24, 0xa7, 0x35, 0xcd, 0x7b, 0x1d, 0xef, 0xaf, 0x6b, 0x89, 0x30,
+ 0x08, 0x81, 0x1e, 0x1e, 0x09, 0x85, 0x93, 0xf4, 0x4c, 0x47, 0x74, 0x4b,
+ 0xad, 0xbe, 0xf7, 0x12, 0xfa, 0xe5, 0x95, 0x88, 0xd0, 0x92, 0x3e, 0x26,
+ 0x55, 0x7d, 0xa3, 0xdd, 0xb5, 0xbe, 0xde, 0xfa, 0xfd, 0xe9, 0x29, 0xb7,
+ 0x4b, 0xed, 0x80, 0xd1, 0xc1, 0xd0, 0x12, 0x3f, 0x8a, 0x3b, 0x5f, 0x63,
+ 0x80, 0x10, 0x07, 0x8c, 0xac, 0xfa, 0xaf, 0x7b, 0x5c, 0x03, 0x64, 0x40,
+ 0xd0, 0x76, 0x28, 0x8e, 0xbc, 0xc1, 0x91, 0xdb, 0x4d, 0x75, 0x1a, 0xff,
+ 0x00, 0x14, 0x94, 0xe8, 0x32, 0xd2, 0xd7, 0x90, 0x4e, 0x91, 0xcc, 0x42,
+ 0x63, 0x9a, 0xd6, 0xba, 0x08, 0x20, 0x41, 0x24, 0x82, 0x08, 0xd1, 0x67,
+ 0xc0, 0x73, 0x76, 0xed, 0x68, 0xdd, 0xfb, 0xa6, 0x08, 0xee, 0x54, 0x8d,
+ 0x75, 0x44, 0x3c, 0xe9, 0x00, 0x01, 0xdc, 0xa4, 0xa6, 0xe9, 0xea, 0x38,
+ 0xe5, 0xb2, 0xdf, 0x73, 0xbf, 0x74, 0x03, 0x3f, 0x25, 0x4a, 0xdc, 0xe1,
+ 0x32, 0xcd, 0x0f, 0x8e, 0xb0, 0x50, 0xec, 0xad, 0x81, 0xc2, 0xca, 0x9c,
+ 0x7c, 0xc7, 0x84, 0x7c, 0x10, 0xc1, 0x1e, 0xe0, 0xe8, 0x71, 0x71, 0x99,
+ 0x84, 0x94, 0x91, 0xd9, 0x57, 0xba, 0x4b, 0xdd, 0x15, 0x9e, 0x1c, 0x44,
+ 0xfe, 0x45, 0x0a, 0xb3, 0x2c, 0x32, 0x2c, 0x1b, 0x5e, 0x09, 0x0d, 0x6b,
+ 0x4c, 0xc8, 0xf1, 0x40, 0x7b, 0xac, 0x20, 0xcb, 0x60, 0x4c, 0x02, 0x01,
+ 0x3a, 0xa1, 0x12, 0xf6, 0x3b, 0x6b, 0xe6, 0x40, 0x11, 0xa6, 0xa9, 0x29,
+ 0xd1, 0xab, 0xa9, 0xd8, 0xd1, 0x04, 0x12, 0x7c, 0x08, 0xd6, 0x51, 0xff,
+ 0x00, 0x6b, 0x31, 0x9f, 0x4d, 0xa5, 0x93, 0xf2, 0x83, 0xf3, 0x58, 0xce,
+ 0x2e, 0x1f, 0xa4, 0x24, 0x86, 0x8e, 0x24, 0x4e, 0x9f, 0x25, 0x0f, 0x52,
+ 0xb3, 0x64, 0x58, 0xdf, 0x66, 0x84, 0x3d, 0x9a, 0xba, 0x7c, 0x08, 0x29,
+ 0x29, 0xd6, 0x1d, 0x5e, 0xb6, 0x97, 0x6d, 0x7b, 0x9f, 0xaf, 0x04, 0xb4,
+ 0x8f, 0xbe, 0x11, 0x47, 0x5b, 0x0e, 0xd1, 0x8d, 0x81, 0xdc, 0xc8, 0x3a,
+ 0xac, 0x33, 0x5b, 0x2c, 0x24, 0xd6, 0x07, 0x26, 0x01, 0xd0, 0x91, 0xf9,
+ 0x14, 0xfe, 0xcd, 0x63, 0x04, 0x35, 0xa0, 0xbc, 0xc7, 0xb6, 0x74, 0x8f,
+ 0x92, 0x4a, 0x75, 0xec, 0xea, 0x21, 0xdf, 0x49, 0xe2, 0x3c, 0x82, 0x96,
+ 0xeb, 0xb6, 0xef, 0xda, 0x76, 0xfc, 0x96, 0x3b, 0x1a, 0xef, 0x53, 0x8d,
+ 0x47, 0xd2, 0x9d, 0x74, 0x3d, 0xf5, 0x46, 0xf5, 0x3f, 0x47, 0xf4, 0x4f,
+ 0x87, 0x1d, 0xbc, 0x52, 0x53, 0xac, 0xd2, 0xc3, 0x59, 0x76, 0xc2, 0x09,
+ 0xe4, 0x70, 0xa4, 0x01, 0x73, 0xa1, 0xb5, 0xb9, 0xc2, 0x27, 0x70, 0xfc,
+ 0x8b, 0x23, 0x27, 0x37, 0xa9, 0x1b, 0x37, 0x56, 0xf1, 0xb4, 0x0d, 0x18,
+ 0x59, 0x2e, 0xec, 0x85, 0x85, 0xd4, 0x3a, 0xae, 0x3b, 0x8b, 0x9c, 0x5d,
+ 0x7f, 0xbb, 0x71, 0x16, 0x8e, 0x07, 0x71, 0x2d, 0x21, 0x25, 0x3d, 0x1b,
+ 0x2a, 0xb5, 0xf6, 0x34, 0x1f, 0x6b, 0x48, 0x93, 0x00, 0x18, 0xfe, 0x49,
+ 0xe2, 0x0f, 0xc9, 0x4f, 0x23, 0x16, 0xb1, 0x51, 0x2d, 0xdd, 0xb9, 0xa0,
+ 0x91, 0x1a, 0xc9, 0xec, 0x16, 0x18, 0xeb, 0xd9, 0x2f, 0xbb, 0x56, 0x0a,
+ 0xeb, 0x10, 0x44, 0x07, 0x13, 0xee, 0xd3, 0xda, 0x3e, 0x2a, 0xc6, 0x1f,
+ 0x57, 0xcb, 0x2f, 0x7b, 0x2c, 0xa3, 0xd3, 0x69, 0x74, 0x56, 0xf2, 0x77,
+ 0x0f, 0xed, 0x0d, 0x0f, 0xfa, 0xf0, 0x92, 0x97, 0xfb, 0x2e, 0x4e, 0xd2,
+ 0xed, 0xcf, 0x1e, 0x12, 0xed, 0x15, 0x9a, 0xf1, 0x09, 0x07, 0xd7, 0xb0,
+ 0x9e, 0xc2, 0x4c, 0x0d, 0x3c, 0x02, 0x37, 0xdb, 0x6a, 0xb1, 0x81, 0xa5,
+ 0xa1, 0xef, 0x93, 0x2d, 0x61, 0x12, 0x3c, 0x34, 0x3a, 0xaa, 0x17, 0xd9,
+ 0x73, 0x00, 0x26, 0x5a, 0x44, 0xcb, 0x0f, 0xe5, 0x92, 0x92, 0x9b, 0xac,
+ 0xc4, 0x1b, 0x89, 0x2e, 0xd0, 0x70, 0xd3, 0xa0, 0xe1, 0x14, 0x30, 0xb7,
+ 0x82, 0x20, 0x76, 0x1f, 0xde, 0xb2, 0x87, 0x50, 0x78, 0x70, 0x61, 0xb4,
+ 0x49, 0xf9, 0xe9, 0xfd, 0x94, 0x41, 0x9e, 0x1e, 0xc0, 0x44, 0x6e, 0x13,
+ 0xa9, 0xd3, 0x77, 0xc0, 0x24, 0xa6, 0xf3, 0xa9, 0x83, 0x33, 0xa9, 0x9f,
+ 0x77, 0x70, 0x3c, 0x02, 0x5f, 0xa1, 0x8d, 0xa2, 0xce, 0x34, 0x89, 0x13,
+ 0xf1, 0x59, 0xef, 0xcf, 0xad, 0xac, 0x90, 0x7d, 0x57, 0x83, 0xa3, 0x78,
+ 0x01, 0x05, 0xb9, 0xf6, 0x3d, 0xee, 0x22, 0xa0, 0x46, 0x9b, 0x5f, 0x3c,
+ 0xf3, 0x29, 0x29, 0xd1, 0x2c, 0x13, 0xb1, 0x84, 0x47, 0x81, 0xd7, 0x54,
+ 0x9d, 0x8a, 0x5c, 0xc8, 0x73, 0x9b, 0x3c, 0x68, 0x04, 0x47, 0x60, 0x65,
+ 0x52, 0x66, 0x46, 0x53, 0x9f, 0xb4, 0x96, 0xd6, 0x0c, 0x46, 0xee, 0x14,
+ 0xdc, 0xe3, 0x53, 0x43, 0xac, 0x25, 0xf6, 0x78, 0x48, 0x80, 0x3b, 0x24,
+ 0xa4, 0xf6, 0x62, 0x3a, 0xba, 0x1c, 0xec, 0x73, 0x53, 0xf2, 0x74, 0xda,
+ 0xdb, 0x49, 0x0d, 0x27, 0xc0, 0xed, 0xd5, 0x53, 0x19, 0x3d, 0x55, 0xec,
+ 0x38, 0xb9, 0x18, 0xa3, 0x1d, 0xef, 0x70, 0x6d, 0x97, 0xd7, 0x60, 0xb1,
+ 0xbb, 0x0f, 0xd2, 0x23, 0x82, 0x0f, 0xc5, 0x0e, 0xec, 0xbb, 0x6d, 0x92,
+ 0x5d, 0x01, 0xa7, 0xb3, 0x4f, 0xfd, 0x52, 0x87, 0xae, 0x41, 0xda, 0x5a,
+ 0xe6, 0x02, 0x26, 0x4c, 0xf7, 0xef, 0x10, 0x92, 0x99, 0x61, 0xe0, 0xb3,
+ 0x16, 0xa6, 0x40, 0x78, 0xb9, 0xdc, 0xb1, 0xc4, 0x6c, 0x9f, 0x1d, 0x16,
+ 0x8b, 0x2a, 0x16, 0x3b, 0x7d, 0x8e, 0x2d, 0x0d, 0x9d, 0x0b, 0xa6, 0x0f,
+ 0x96, 0xab, 0x2c, 0xbf, 0x24, 0x9d, 0x84, 0x8d, 0xa7, 0xe8, 0xb8, 0x6a,
+ 0xe9, 0xd7, 0xb0, 0xee, 0x8d, 0xb2, 0xe1, 0x50, 0x71, 0x30, 0x18, 0x0e,
+ 0xd2, 0xe7, 0x00, 0xed, 0x34, 0x74, 0xb4, 0x14, 0x94, 0xdc, 0x76, 0x2b,
+ 0x0e, 0xd0, 0x5c, 0xd9, 0x3c, 0x41, 0x74, 0x99, 0xef, 0xf8, 0xa1, 0x57,
+ 0x83, 0x88, 0xc2, 0x6c, 0x65, 0x6e, 0xb2, 0xc2, 0x75, 0xfa, 0x4d, 0x9f,
+ 0x18, 0x2e, 0x54, 0xf7, 0x65, 0x58, 0xf3, 0x6b, 0x36, 0x86, 0x90, 0x09,
+ 0x64, 0xea, 0x63, 0xbf, 0xdc, 0xad, 0xb3, 0x37, 0x25, 0xd5, 0x97, 0x34,
+ 0x1b, 0x47, 0x6d, 0x9a, 0x71, 0xfd, 0x64, 0x94, 0x96, 0xdc, 0xbc, 0xa6,
+ 0xc3, 0x68, 0x60, 0xad, 0x83, 0x42, 0xe7, 0x12, 0x4e, 0xbe, 0x01, 0xa1,
+ 0x12, 0x8c, 0xea, 0x6b, 0x60, 0xa9, 0xe0, 0xbc, 0x83, 0x2e, 0x7e, 0xba,
+ 0xf8, 0xca, 0x6b, 0x2f, 0x73, 0x60, 0xd9, 0x5f, 0xa9, 0x22, 0x75, 0x74,
+ 0x80, 0x3c, 0xfb, 0x25, 0xf6, 0xba, 0xc7, 0xb5, 0xd4, 0xb5, 0xae, 0x69,
+ 0x1a, 0x34, 0x8d, 0x3c, 0x52, 0x53, 0x0b, 0xfa, 0xa3, 0x09, 0x73, 0x69,
+ 0x6b, 0xc4, 0x0f, 0x10, 0xd1, 0xa7, 0xc4, 0x2a, 0x76, 0xe5, 0xba, 0xa8,
+ 0xb1, 0xef, 0x0c, 0x98, 0xf7, 0x38, 0xed, 0xe7, 0x81, 0xaa, 0xd1, 0x37,
+ 0x56, 0x41, 0x7f, 0xa0, 0x24, 0xeb, 0x27, 0x92, 0x80, 0x6a, 0xa3, 0x21,
+ 0xbb, 0x5f, 0x40, 0x7c, 0x90, 0x43, 0x1c, 0x03, 0xb5, 0x1f, 0x14, 0x94,
+ 0xd2, 0xae, 0xc2, 0xe3, 0xb9, 0x8f, 0x96, 0x1e, 0x76, 0x99, 0x9f, 0x19,
+ 0x84, 0x46, 0x82, 0xe6, 0xc5, 0x6d, 0x24, 0x93, 0xa3, 0xa2, 0x3c, 0xa1,
+ 0x5d, 0x35, 0x32, 0x96, 0x83, 0xe9, 0x88, 0x3d, 0xa0, 0x47, 0xe0, 0x93,
+ 0x2e, 0x69, 0x86, 0x06, 0x10, 0x39, 0x80, 0xd3, 0xa7, 0xde, 0x92, 0x9a,
+ 0x8d, 0x16, 0x6f, 0x73, 0x5e, 0x38, 0xef, 0x1d, 0xfc, 0x14, 0x85, 0x6f,
+ 0x30, 0x44, 0xb4, 0x9f, 0x8a, 0xbe, 0x5a, 0x08, 0xf6, 0x30, 0xee, 0xfd,
+ 0xe3, 0x3c, 0x25, 0xb2, 0xfe, 0x41, 0x0d, 0x6e, 0x9a, 0x6d, 0x3a, 0xa4,
+ 0xa6, 0x81, 0xa6, 0xdd, 0xc2, 0xc7, 0x00, 0x37, 0x49, 0x9e, 0xff, 0x00,
+ 0x14, 0xe3, 0x05, 0xae, 0x71, 0x73, 0x77, 0x87, 0x91, 0xa0, 0x0e, 0x24,
+ 0x4f, 0xc1, 0x6a, 0xb2, 0xb6, 0x90, 0x04, 0x49, 0x1c, 0xf2, 0x06, 0xaa,
+ 0x0e, 0xf5, 0x1b, 0xa3, 0x2b, 0x86, 0x0e, 0x08, 0x74, 0x04, 0x94, 0xe7,
+ 0x7d, 0x9b, 0x25, 0xae, 0x90, 0xf2, 0x2b, 0x23, 0xda, 0xd8, 0x93, 0xa7,
+ 0x9a, 0x1b, 0xf1, 0xed, 0x99, 0x20, 0xcc, 0x48, 0x1c, 0x09, 0x3c, 0xea,
+ 0xaf, 0xbd, 0xd7, 0x35, 0xda, 0xb2, 0x34, 0xd2, 0x4c, 0xf1, 0xdd, 0x26,
+ 0xfd, 0xa0, 0xb7, 0x7e, 0x80, 0x44, 0xcc, 0xf0, 0x92, 0x9c, 0xdb, 0x28,
+ 0xc8, 0x05, 0xae, 0x80, 0x0b, 0x5c, 0x07, 0x8e, 0xee, 0xd0, 0x07, 0x82,
+ 0x83, 0xf1, 0x6c, 0x02, 0x23, 0xe8, 0xfb, 0xbc, 0x60, 0x2d, 0x66, 0x49,
+ 0x6f, 0x62, 0x48, 0x99, 0x99, 0xd1, 0x43, 0xd2, 0x63, 0xb7, 0x6e, 0x12,
+ 0x1a, 0x60, 0x6b, 0x33, 0x3f, 0x34, 0x94, 0xe3, 0x1a, 0x5e, 0x00, 0x04,
+ 0x17, 0x3a, 0x74, 0x8f, 0x03, 0xd8, 0xa8, 0xd5, 0x8e, 0xf2, 0x76, 0xb8,
+ 0x0f, 0x71, 0xf1, 0x20, 0x03, 0xe6, 0xb7, 0x03, 0x2a, 0x0f, 0x3b, 0x40,
+ 0x24, 0x7c, 0x10, 0xcf, 0xa7, 0xb8, 0x16, 0xd4, 0x1c, 0x7b, 0x76, 0x82,
+ 0x3e, 0x29, 0x29, 0xc6, 0xf4, 0xdb, 0x50, 0x21, 0xcc, 0x24, 0x3a, 0x4f,
+ 0xb4, 0x11, 0x11, 0xfb, 0xa9, 0xab, 0x65, 0xcd, 0x1b, 0xde, 0x1d, 0x68,
+ 0x89, 0x04, 0x06, 0xb5, 0xc1, 0xce, 0xe3, 0x4e, 0xeb, 0x61, 0xcf, 0xd8,
+ 0xd2, 0xe3, 0x56, 0xd8, 0x3d, 0xf5, 0xfc, 0x56, 0x6f, 0x50, 0xcf, 0xb9,
+ 0x92, 0xc6, 0xb0, 0x81, 0x3f, 0x49, 0xa0, 0x9d, 0xc3, 0xf8, 0x24, 0xa5,
+ 0xda, 0xc2, 0x1e, 0x4b, 0x9a, 0x5c, 0x62, 0x76, 0x8d, 0x76, 0xf9, 0x68,
+ 0x8b, 0x1f, 0xa3, 0x9d, 0x76, 0x7e, 0xec, 0x19, 0x8f, 0x05, 0x9d, 0x89,
+ 0x99, 0x16, 0x0d, 0xcf, 0x75, 0x41, 0xdf, 0x4d, 0xdc, 0x81, 0x2a, 0xe7,
+ 0xed, 0x37, 0xc4, 0x6e, 0x77, 0xa5, 0x3b, 0x7d, 0x5d, 0x9a, 0xfc, 0x63,
+ 0x88, 0x49, 0x4f, 0xff, 0xd9
+};
+size_t demo_007_jpg_len = 22901;
+
+const uint8_t demo_008_jpg[] = {
+ 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01,
+ 0x02, 0x00, 0x00, 0x64, 0x00, 0x64, 0x00, 0x00, 0xff, 0xec, 0x00, 0x59,
+ 0x44, 0x75, 0x63, 0x6b, 0x79, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00,
+ 0x1e, 0x00, 0x02, 0x00, 0x44, 0x00, 0x00, 0x00, 0x20, 0x00, 0x46, 0x00,
+ 0x53, 0x00, 0x41, 0x00, 0x2f, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00,
+ 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x38, 0x00,
+ 0x62, 0x00, 0x33, 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00,
+ 0x5c, 0x00, 0x38, 0x00, 0x62, 0x00, 0x33, 0x00, 0x32, 0x00, 0x30, 0x00,
+ 0x32, 0x00, 0x33, 0x00, 0x61, 0x00, 0x2e, 0x00, 0x74, 0x00, 0x69, 0x00,
+ 0x66, 0x00, 0x00, 0xff, 0xee, 0x00, 0x0e, 0x41, 0x64, 0x6f, 0x62, 0x65,
+ 0x00, 0x64, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xdb, 0x00, 0x84, 0x00,
+ 0x10, 0x0b, 0x0b, 0x0b, 0x0c, 0x0b, 0x10, 0x0c, 0x0c, 0x10, 0x17, 0x0f,
+ 0x0d, 0x0f, 0x17, 0x1b, 0x14, 0x10, 0x10, 0x14, 0x1b, 0x1f, 0x17, 0x17,
+ 0x17, 0x17, 0x17, 0x1f, 0x1e, 0x17, 0x1a, 0x1a, 0x1a, 0x1a, 0x17, 0x1e,
+ 0x1e, 0x23, 0x25, 0x27, 0x25, 0x23, 0x1e, 0x2f, 0x2f, 0x33, 0x33, 0x2f,
+ 0x2f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x01, 0x11, 0x0f, 0x0f, 0x11, 0x13, 0x11, 0x15,
+ 0x12, 0x12, 0x15, 0x14, 0x11, 0x14, 0x11, 0x14, 0x1a, 0x14, 0x16, 0x16,
+ 0x14, 0x1a, 0x26, 0x1a, 0x1a, 0x1c, 0x1a, 0x1a, 0x26, 0x30, 0x23, 0x1e,
+ 0x1e, 0x1e, 0x1e, 0x23, 0x30, 0x2b, 0x2e, 0x27, 0x27, 0x27, 0x2e, 0x2b,
+ 0x35, 0x35, 0x30, 0x30, 0x35, 0x35, 0x40, 0x40, 0x3f, 0x40, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xff, 0xc0, 0x00,
+ 0x11, 0x08, 0x01, 0x90, 0x01, 0x2c, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11,
+ 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x01, 0x3f, 0x00, 0x00, 0x01, 0x05,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x03, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
+ 0x0b, 0x01, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x04, 0x05,
+ 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x01, 0x04, 0x01, 0x03,
+ 0x02, 0x04, 0x02, 0x05, 0x07, 0x06, 0x08, 0x05, 0x03, 0x0c, 0x33, 0x01,
+ 0x00, 0x02, 0x11, 0x03, 0x04, 0x21, 0x12, 0x31, 0x05, 0x41, 0x51, 0x61,
+ 0x13, 0x22, 0x71, 0x81, 0x32, 0x06, 0x14, 0x91, 0xa1, 0xb1, 0x42, 0x23,
+ 0x24, 0x15, 0x52, 0xc1, 0x62, 0x33, 0x34, 0x72, 0x82, 0xd1, 0x43, 0x07,
+ 0x25, 0x92, 0x53, 0xf0, 0xe1, 0xf1, 0x63, 0x73, 0x35, 0x16, 0xa2, 0xb2,
+ 0x83, 0x26, 0x44, 0x93, 0x54, 0x64, 0x45, 0xc2, 0xa3, 0x74, 0x36, 0x17,
+ 0xd2, 0x55, 0xe2, 0x65, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3,
+ 0x46, 0x27, 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5,
+ 0xb5, 0xc5, 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6,
+ 0xc6, 0xd6, 0xe6, 0xf6, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7,
+ 0xb7, 0xc7, 0xd7, 0xe7, 0xf7, 0x11, 0x00, 0x02, 0x02, 0x01, 0x02, 0x04,
+ 0x04, 0x03, 0x04, 0x05, 0x06, 0x07, 0x07, 0x06, 0x05, 0x35, 0x01, 0x00,
+ 0x02, 0x11, 0x03, 0x21, 0x31, 0x12, 0x04, 0x41, 0x51, 0x61, 0x71, 0x22,
+ 0x13, 0x05, 0x32, 0x81, 0x91, 0x14, 0xa1, 0xb1, 0x42, 0x23, 0xc1, 0x52,
+ 0xd1, 0xf0, 0x33, 0x24, 0x62, 0xe1, 0x72, 0x82, 0x92, 0x43, 0x53, 0x15,
+ 0x63, 0x73, 0x34, 0xf1, 0x25, 0x06, 0x16, 0xa2, 0xb2, 0x83, 0x07, 0x26,
+ 0x35, 0xc2, 0xd2, 0x44, 0x93, 0x54, 0xa3, 0x17, 0x64, 0x45, 0x55, 0x36,
+ 0x74, 0x65, 0xe2, 0xf2, 0xb3, 0x84, 0xc3, 0xd3, 0x75, 0xe3, 0xf3, 0x46,
+ 0x94, 0xa4, 0x85, 0xb4, 0x95, 0xc4, 0xd4, 0xe4, 0xf4, 0xa5, 0xb5, 0xc5,
+ 0xd5, 0xe5, 0xf5, 0x56, 0x66, 0x76, 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6,
+ 0xe6, 0xf6, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97, 0xa7, 0xb7,
+ 0xc7, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11,
+ 0x00, 0x3f, 0x00, 0xe2, 0x49, 0x3e, 0x9b, 0x47, 0x80, 0x43, 0x3e, 0x0a,
+ 0x6e, 0x8d, 0x8d, 0x89, 0x9d, 0x66, 0x7f, 0x82, 0x8c, 0x6a, 0x92, 0x91,
+ 0xff, 0x00, 0x84, 0x1f, 0x14, 0x52, 0xe3, 0xb7, 0x68, 0x03, 0x53, 0x24,
+ 0xf7, 0xf8, 0x28, 0x11, 0xef, 0x68, 0x1e, 0x2a, 0x6d, 0x99, 0xe1, 0x25,
+ 0x2c, 0x1a, 0x79, 0xee, 0x8e, 0xe6, 0x1b, 0x05, 0x63, 0x70, 0x9e, 0x25,
+ 0xba, 0x08, 0xed, 0x3e, 0x6a, 0x04, 0x18, 0x24, 0x7c, 0x15, 0x8c, 0x56,
+ 0xb5, 0x81, 0x8e, 0x91, 0xcc, 0x94, 0x94, 0xd7, 0xb2, 0x8b, 0x2a, 0xef,
+ 0x29, 0x9a, 0x4b, 0x9b, 0xa9, 0x5a, 0xc1, 0x95, 0x5f, 0xeb, 0x56, 0x61,
+ 0xae, 0xe4, 0x38, 0x9e, 0x0f, 0x84, 0xac, 0xa8, 0xd4, 0x81, 0xe3, 0x13,
+ 0xf0, 0x49, 0x4c, 0x1c, 0xd0, 0x5b, 0xe7, 0xd8, 0xa1, 0x84, 0x57, 0x14,
+ 0x32, 0x06, 0xed, 0x35, 0x49, 0x49, 0x1d, 0xf4, 0x47, 0xc1, 0x0c, 0x04,
+ 0x47, 0xfd, 0x11, 0xf0, 0x50, 0x09, 0x29, 0x92, 0x44, 0x77, 0x4e, 0x91,
+ 0x49, 0x4b, 0xb3, 0x47, 0x26, 0x3c, 0xa7, 0x67, 0xd2, 0x4c, 0xed, 0x1c,
+ 0x92, 0x94, 0xe1, 0xec, 0x1f, 0x15, 0x16, 0xa9, 0x3b, 0x84, 0x98, 0x92,
+ 0x99, 0x3f, 0xb0, 0x42, 0xb0, 0x41, 0x84, 0x57, 0x72, 0x86, 0xfe, 0x52,
+ 0x52, 0x36, 0x7d, 0x2f, 0x92, 0x3b, 0x50, 0x59, 0xf4, 0x91, 0x98, 0x92,
+ 0x91, 0x34, 0x27, 0x6a, 0x43, 0xba, 0x60, 0x35, 0x84, 0x94, 0xa6, 0x85,
+ 0x18, 0xf7, 0x1f, 0x81, 0x45, 0x68, 0x51, 0xdb, 0xef, 0xf9, 0x14, 0x94,
+ 0x8b, 0xc1, 0x19, 0xa3, 0xd9, 0x28, 0x4d, 0x1a, 0xa9, 0x07, 0x11, 0x00,
+ 0xe8, 0x92, 0x99, 0x80, 0x08, 0x26, 0x40, 0x81, 0xdf, 0xbf, 0xc1, 0x05,
+ 0xdc, 0xa3, 0x04, 0x27, 0x24, 0xa5, 0xcc, 0x16, 0xa2, 0x61, 0x09, 0xcb,
+ 0xa0, 0x77, 0x36, 0x30, 0x78, 0x7e, 0x70, 0x43, 0x8f, 0x64, 0xa2, 0xe0,
+ 0x8f, 0xd7, 0xb1, 0xbc, 0xed, 0xaf, 0x8e, 0x7e, 0x90, 0x49, 0x4f, 0xa6,
+ 0xd4, 0xe1, 0x56, 0x03, 0x5a, 0xe7, 0x06, 0x89, 0x32, 0x4f, 0xc5, 0x12,
+ 0x8c, 0x9a, 0xef, 0x0d, 0xf4, 0x5c, 0xd7, 0xbd, 0x9f, 0x48, 0x34, 0xc9,
+ 0x85, 0x00, 0x03, 0x29, 0x68, 0xfc, 0xe7, 0x77, 0xec, 0x25, 0x67, 0xe4,
+ 0x65, 0xd3, 0x8a, 0xf6, 0x5e, 0x03, 0xad, 0x76, 0xe8, 0x1b, 0x00, 0x2e,
+ 0x33, 0xd8, 0xf1, 0xed, 0x49, 0x4e, 0xd5, 0x0c, 0xb9, 0x96, 0x35, 0xee,
+ 0x10, 0xd9, 0xee, 0x44, 0x91, 0xc2, 0xe3, 0x7a, 0xb7, 0xd4, 0xfe, 0xb3,
+ 0x9b, 0xd4, 0xf2, 0xb2, 0xa8, 0x15, 0x9a, 0xed, 0xb1, 0xce, 0x6c, 0xbe,
+ 0x0c, 0x1f, 0x11, 0x0b, 0xa3, 0xb3, 0xae, 0x3b, 0xd0, 0x65, 0xff, 0x00,
+ 0x67, 0xba, 0x87, 0x57, 0x0f, 0x7d, 0x7e, 0x91, 0xb0, 0x58, 0xd2, 0x63,
+ 0xdb, 0x67, 0xd1, 0x07, 0xe2, 0xae, 0xd1, 0xd4, 0x06, 0x61, 0x16, 0x62,
+ 0xd7, 0x68, 0x0d, 0x8f, 0x54, 0xda, 0xdf, 0x49, 0xc0, 0x1e, 0xed, 0x0e,
+ 0x1e, 0xef, 0x92, 0x4a, 0x78, 0x23, 0xf5, 0x1b, 0xaf, 0x06, 0x93, 0xb6,
+ 0xad, 0x35, 0xfe, 0x70, 0x70, 0x87, 0xff, 0x00, 0x34, 0x3a, 0x8c, 0xed,
+ 0xf5, 0xf1, 0xf7, 0x78, 0x6f, 0x77, 0xe5, 0xd8, 0xbd, 0x3d, 0xcf, 0x0e,
+ 0xf6, 0xba, 0x0f, 0xc4, 0x03, 0xf8, 0x85, 0x4f, 0xec, 0x75, 0x7a, 0x9b,
+ 0xa2, 0xbd, 0xb1, 0x1e, 0x9e, 0xc1, 0xb6, 0x37, 0x4c, 0xf8, 0xcf, 0x64,
+ 0x94, 0xf9, 0x37, 0xe6, 0xc2, 0x77, 0x68, 0x47, 0xc1, 0x47, 0xb2, 0x93,
+ 0xbb, 0x24, 0xa4, 0x7a, 0xef, 0x1e, 0x1d, 0x91, 0xea, 0x12, 0x47, 0xe4,
+ 0xf1, 0x41, 0x33, 0xbc, 0x2b, 0x14, 0x34, 0xc8, 0xfc, 0xa9, 0x29, 0x9b,
+ 0x80, 0x80, 0x22, 0x35, 0x3a, 0xa3, 0x1a, 0x8f, 0xaa, 0x6b, 0xe3, 0x69,
+ 0xd6, 0x13, 0x96, 0xb4, 0xd6, 0xed, 0xc4, 0x78, 0xb4, 0x78, 0x82, 0xac,
+ 0x32, 0x1e, 0xda, 0xaf, 0x02, 0x7d, 0x41, 0x0e, 0xd3, 0x87, 0x33, 0x47,
+ 0x04, 0x94, 0xc7, 0x16, 0xd2, 0x2c, 0x7b, 0x8c, 0x92, 0x09, 0xd4, 0x6a,
+ 0x74, 0x59, 0xfb, 0x1e, 0x3d, 0xe5, 0xa4, 0x31, 0xda, 0xee, 0xed, 0x32,
+ 0xb4, 0x08, 0x14, 0x55, 0x6d, 0x8e, 0x1f, 0x48, 0x90, 0xcf, 0x19, 0x2a,
+ 0x95, 0xac, 0xb2, 0xab, 0x3d, 0x33, 0xd8, 0x35, 0xae, 0x1e, 0x71, 0x29,
+ 0x29, 0x13, 0x84, 0x0e, 0x10, 0x9c, 0x21, 0xdf, 0x72, 0xb1, 0x60, 0x31,
+ 0xe6, 0x54, 0x32, 0x04, 0x5c, 0x5b, 0x11, 0xb4, 0x06, 0x98, 0xf2, 0x09,
+ 0x29, 0x6b, 0x34, 0x00, 0x79, 0x04, 0x30, 0x54, 0xec, 0xfe, 0x0a, 0x1b,
+ 0x4f, 0x25, 0x25, 0x32, 0x04, 0x24, 0x5c, 0x0a, 0x76, 0xd7, 0xa6, 0xaa,
+ 0x05, 0xa2, 0x74, 0xe1, 0x25, 0x24, 0x61, 0x12, 0xa2, 0xfe, 0x65, 0x36,
+ 0xd2, 0x38, 0xd0, 0xa6, 0x3a, 0xf3, 0xca, 0x4a, 0x67, 0x32, 0x02, 0x7a,
+ 0xf9, 0x51, 0x1c, 0x05, 0x26, 0x03, 0x1b, 0xbb, 0x71, 0x3e, 0x69, 0x29,
+ 0x44, 0xc9, 0x0a, 0x2e, 0xfa, 0x45, 0x49, 0xa3, 0xdc, 0x14, 0x5d, 0xc9,
+ 0x49, 0x48, 0xdb, 0xf4, 0x91, 0xd9, 0xc2, 0x0b, 0x46, 0xb3, 0xe0, 0x8f,
+ 0x5e, 0xa0, 0xa4, 0xa4, 0x61, 0x30, 0xfa, 0x4a, 0x4d, 0xee, 0x98, 0x7f,
+ 0x38, 0x12, 0x52, 0xed, 0x13, 0xa2, 0x44, 0x0d, 0xe7, 0xe0, 0x54, 0x87,
+ 0x2a, 0x27, 0xe9, 0x9f, 0x81, 0x49, 0x48, 0x87, 0x21, 0x4c, 0xb7, 0x73,
+ 0x3c, 0xc7, 0x08, 0x7f, 0x9c, 0x00, 0x46, 0x63, 0x4b, 0x80, 0x6f, 0xe2,
+ 0x92, 0x91, 0xb7, 0x50, 0xa0, 0xed, 0x75, 0x46, 0x73, 0x36, 0xb8, 0x88,
+ 0x41, 0x78, 0x8d, 0x12, 0x52, 0xe4, 0xfb, 0x21, 0x58, 0xc0, 0x07, 0xf6,
+ 0x86, 0x27, 0x6f, 0xd2, 0xd7, 0x1f, 0xe7, 0x05, 0x5b, 0x6c, 0x34, 0x9e,
+ 0xea, 0xd7, 0x4f, 0x1f, 0xe5, 0x3c, 0x30, 0x78, 0xf5, 0x6a, 0xf2, 0xfc,
+ 0xe0, 0x92, 0x9e, 0xef, 0x36, 0xbe, 0xaf, 0x64, 0xbb, 0x1d, 0xf5, 0x8c,
+ 0x72, 0x00, 0x6d, 0x6e, 0x6f, 0x71, 0xe6, 0x16, 0x7b, 0x31, 0xba, 0xe5,
+ 0x0f, 0x16, 0x35, 0xb5, 0x18, 0x76, 0xa6, 0x6c, 0x12, 0x0f, 0x63, 0x2e,
+ 0x2b, 0xa6, 0xaa, 0xb3, 0x65, 0x0d, 0x8e, 0xc4, 0xfd, 0xf2, 0xa4, 0x2b,
+ 0xde, 0xc2, 0xd2, 0x01, 0xd4, 0x0f, 0xc5, 0x25, 0x38, 0xb5, 0xb7, 0xeb,
+ 0x0b, 0x80, 0x61, 0x75, 0x2c, 0x13, 0x0d, 0x00, 0x3b, 0x48, 0xfe, 0xd2,
+ 0xc3, 0xea, 0x3f, 0x5a, 0xba, 0xce, 0x06, 0x6d, 0xf8, 0x60, 0xd4, 0x4d,
+ 0x2e, 0xd8, 0x5d, 0xb4, 0x92, 0x63, 0xe2, 0xe5, 0xde, 0x54, 0xc1, 0x33,
+ 0xdf, 0x91, 0xf9, 0x57, 0x95, 0xfd, 0x61, 0x78, 0x7f, 0x5c, 0xce, 0x70,
+ 0xe3, 0xd6, 0x78, 0xfb, 0x8c, 0x24, 0xa6, 0xf3, 0x7e, 0xba, 0xf5, 0xd0,
+ 0x23, 0x7d, 0x67, 0xe2, 0xcf, 0xf6, 0xa2, 0x7f, 0xcf, 0x7e, 0xb1, 0xe9,
+ 0xf1, 0x5e, 0xfe, 0x37, 0x41, 0x8f, 0xf3, 0x65, 0x73, 0xa0, 0x25, 0xac,
+ 0x24, 0xa4, 0xca, 0x6e, 0x03, 0xf0, 0x51, 0x03, 0xdc, 0x07, 0x28, 0x8e,
+ 0x1f, 0x91, 0x25, 0x22, 0x77, 0xd3, 0x6a, 0xb5, 0x59, 0xe0, 0x01, 0xa8,
+ 0xee, 0x15, 0x76, 0xeb, 0x63, 0x42, 0xb0, 0x58, 0x5b, 0x24, 0x0f, 0x8f,
+ 0xc1, 0x25, 0x27, 0x07, 0xd6, 0x70, 0x6b, 0x44, 0x01, 0xc9, 0xfe, 0x0a,
+ 0x56, 0x38, 0xe3, 0x3c, 0x32, 0xbf, 0x75, 0x2e, 0x3b, 0x88, 0xf1, 0x20,
+ 0x42, 0x0b, 0x1d, 0x03, 0x49, 0x83, 0xcf, 0xfa, 0xf8, 0xab, 0x76, 0x7b,
+ 0xf1, 0x84, 0xc4, 0x81, 0xf0, 0x49, 0x48, 0x8b, 0xcb, 0x7d, 0xe5, 0x87,
+ 0x7f, 0xe6, 0x6f, 0xfa, 0x2d, 0xf3, 0x8f, 0x1f, 0x05, 0x00, 0xc2, 0x65,
+ 0xce, 0x24, 0x93, 0xac, 0x9f, 0x0e, 0xe5, 0x3d, 0x4e, 0x0f, 0x12, 0x75,
+ 0x3c, 0x72, 0x49, 0xfc, 0x53, 0xb9, 0xec, 0x68, 0x3a, 0xf6, 0x25, 0x25,
+ 0x24, 0xe9, 0xb8, 0x4d, 0xcc, 0xce, 0x6b, 0x1c, 0x62, 0x9a, 0xfd, 0xf6,
+ 0x38, 0xf0, 0x1a, 0x35, 0xd5, 0x53, 0xea, 0x22, 0xa3, 0xd4, 0x32, 0x0d,
+ 0x0e, 0x0e, 0xa4, 0xd8, 0x76, 0x38, 0x70, 0x42, 0xb7, 0x6d, 0x8f, 0xc3,
+ 0xc1, 0x35, 0x83, 0xb7, 0x23, 0x30, 0x4b, 0xc7, 0x76, 0xd3, 0xd8, 0x1f,
+ 0x37, 0x2c, 0xd0, 0x34, 0x09, 0x29, 0x4f, 0x12, 0xe8, 0x4e, 0xd6, 0x82,
+ 0xed, 0x78, 0x02, 0x53, 0xc7, 0xe9, 0x3e, 0xe5, 0x26, 0x81, 0xea, 0xc1,
+ 0xd2, 0x74, 0x49, 0x4b, 0x6d, 0x73, 0x86, 0x82, 0x1a, 0x91, 0x66, 0x9a,
+ 0x88, 0x56, 0x5a, 0xc7, 0x12, 0x63, 0x48, 0xe4, 0x76, 0x51, 0x73, 0x41,
+ 0xd4, 0x99, 0xf0, 0x01, 0x25, 0x35, 0x5c, 0x08, 0x89, 0x49, 0xec, 0xf6,
+ 0x6f, 0x1f, 0x35, 0x2b, 0x7e, 0x94, 0x22, 0x16, 0xfe, 0xac, 0xe2, 0x7e,
+ 0x49, 0x29, 0xae, 0xde, 0x14, 0x9a, 0x34, 0x95, 0x16, 0x04, 0x46, 0x0d,
+ 0x3f, 0x82, 0x4a, 0x58, 0x7d, 0x24, 0x33, 0xc9, 0x45, 0x8d, 0x4a, 0x19,
+ 0xe5, 0x25, 0x31, 0x1c, 0x22, 0xd4, 0x20, 0x21, 0xff, 0x00, 0x72, 0x35,
+ 0x51, 0xb0, 0xf6, 0x49, 0x4c, 0x1b, 0xc9, 0x4d, 0x1e, 0xf0, 0xa4, 0x39,
+ 0x29, 0xa0, 0x6f, 0x09, 0x29, 0x9f, 0x06, 0x14, 0x48, 0xf7, 0x9f, 0x30,
+ 0x54, 0xdc, 0x25, 0xda, 0x26, 0x8f, 0xd2, 0x19, 0xec, 0xd2, 0x52, 0x53,
+ 0x56, 0x3d, 0xff, 0x00, 0x34, 0x6a, 0x4f, 0xbc, 0x41, 0x42, 0x1a, 0xbd,
+ 0x12, 0x90, 0x77, 0xca, 0x4a, 0x49, 0x6f, 0xd2, 0x2e, 0xef, 0xdb, 0xe2,
+ 0xab, 0xbc, 0x6a, 0xad, 0x58, 0x15, 0x77, 0x0d, 0x52, 0x53, 0x13, 0x1b,
+ 0x0c, 0x6a, 0x55, 0xbc, 0x00, 0x3f, 0x6a, 0x61, 0x78, 0x9b, 0x6b, 0xff,
+ 0x00, 0xaa, 0x0a, 0xa1, 0x1a, 0x2b, 0x78, 0x03, 0xfc, 0xab, 0x87, 0x3a,
+ 0x0f, 0x56, 0xbf, 0xfa, 0xa0, 0x92, 0x9f, 0x55, 0xc7, 0x00, 0x62, 0xd7,
+ 0xa6, 0xb3, 0xcf, 0xcd, 0x26, 0x8f, 0x71, 0x31, 0xa6, 0xef, 0x70, 0xfc,
+ 0x14, 0x1a, 0xf2, 0x31, 0xe9, 0x23, 0xc4, 0xfe, 0x54, 0x51, 0xb5, 0xaf,
+ 0x7c, 0xf2, 0x40, 0x29, 0x29, 0x25, 0x50, 0x1c, 0xd3, 0xf0, 0xd7, 0xf0,
+ 0x5e, 0x45, 0xd6, 0x89, 0x77, 0x58, 0xce, 0x27, 0x59, 0xc8, 0xb7, 0xfe,
+ 0xad, 0xcb, 0xd7, 0x1c, 0xf0, 0xc8, 0x70, 0x00, 0xc1, 0x1f, 0x95, 0x79,
+ 0x17, 0x58, 0x11, 0xd5, 0xb3, 0xbf, 0xf0, 0xc5, 0xbf, 0xf5, 0x65, 0x25,
+ 0x35, 0x87, 0xd1, 0x9f, 0x8a, 0x5f, 0x98, 0x93, 0x44, 0xb3, 0xe6, 0xa3,
+ 0xd9, 0x25, 0x36, 0x6a, 0x6e, 0xeb, 0x61, 0x49, 0xfc, 0x90, 0x35, 0x4d,
+ 0x5b, 0x7d, 0xee, 0xf8, 0x27, 0xfc, 0xe2, 0x92, 0x98, 0xd6, 0x3f, 0x4a,
+ 0x3e, 0x3f, 0xc5, 0x68, 0x81, 0x13, 0xe1, 0x0a, 0x8d, 0x66, 0x6c, 0x68,
+ 0x23, 0x8f, 0xef, 0x5a, 0x00, 0x48, 0x25, 0x25, 0x35, 0x5e, 0x22, 0xc3,
+ 0xb4, 0xed, 0x52, 0x6d, 0xc0, 0xb4, 0xb7, 0xb0, 0xf0, 0xfc, 0xaa, 0x36,
+ 0xff, 0x00, 0x38, 0xe5, 0x06, 0x34, 0xed, 0x79, 0x07, 0x40, 0x0f, 0xcd,
+ 0x25, 0x33, 0x65, 0x76, 0xb9, 0xfb, 0x58, 0x04, 0x9f, 0xde, 0x70, 0x03,
+ 0xf1, 0x2a, 0x4f, 0x2d, 0xa5, 0xe0, 0x87, 0x36, 0xdb, 0x47, 0x70, 0x3d,
+ 0x8d, 0x3f, 0x3e, 0x50, 0x2b, 0xec, 0x9d, 0xdc, 0xca, 0x4a, 0x62, 0xe7,
+ 0x3d, 0xee, 0x73, 0xec, 0x71, 0x73, 0x9d, 0xa9, 0x71, 0xe4, 0x94, 0xa3,
+ 0x84, 0x86, 0xb2, 0x53, 0xa4, 0xa5, 0x38, 0x43, 0xcb, 0xbb, 0x08, 0x4c,
+ 0xe0, 0x4f, 0xb8, 0x7d, 0xe9, 0xdf, 0x24, 0xbc, 0x0f, 0x29, 0x50, 0x6b,
+ 0x8b, 0x0c, 0x72, 0x12, 0x53, 0x65, 0x97, 0xc0, 0xec, 0x7c, 0x41, 0xf1,
+ 0x51, 0x7d, 0xa7, 0x50, 0xdf, 0x68, 0xf2, 0x51, 0x06, 0xb7, 0x79, 0x15,
+ 0x3f, 0x4a, 0xbe, 0x49, 0x30, 0x92, 0x91, 0xd7, 0x51, 0xb0, 0xc8, 0xe3,
+ 0xb2, 0x9e, 0x5c, 0x32, 0xb1, 0x50, 0xe7, 0x92, 0x14, 0xc6, 0x43, 0x6b,
+ 0x6c, 0x33, 0xe9, 0x71, 0x2a, 0xbb, 0xc1, 0x23, 0x73, 0xb9, 0x29, 0x29,
+ 0x83, 0x02, 0x23, 0x00, 0xf9, 0xf6, 0x50, 0x62, 0x23, 0x4c, 0x32, 0x3b,
+ 0x93, 0xa2, 0x4a, 0x5a, 0x39, 0x42, 0x23, 0xdc, 0x8b, 0xe2, 0xa1, 0xf9,
+ 0xc9, 0x29, 0x8c, 0x6a, 0x11, 0x1a, 0x40, 0x67, 0xc4, 0xa8, 0xf7, 0xfb,
+ 0xd3, 0x86, 0xcb, 0x47, 0xc5, 0x25, 0x2c, 0xde, 0x52, 0x1f, 0x4c, 0x14,
+ 0x9b, 0xdd, 0x3c, 0x9d, 0xc1, 0x25, 0x24, 0x6c, 0x19, 0x9e, 0x7b, 0x28,
+ 0xb8, 0x7e, 0x91, 0xc3, 0xf9, 0x25, 0x49, 0xbc, 0x4a, 0x56, 0x69, 0x63,
+ 0xbf, 0xaa, 0x52, 0x53, 0x52, 0xbd, 0x5e, 0x14, 0xe9, 0xfa, 0x51, 0xe6,
+ 0xa3, 0x56, 0x96, 0x05, 0x3a, 0x7f, 0x9c, 0xf9, 0xa4, 0xa6, 0xc5, 0xad,
+ 0x80, 0xaa, 0x3a, 0x63, 0xe2, 0xaf, 0x5e, 0xdd, 0x15, 0x37, 0xb6, 0x08,
+ 0x1e, 0x09, 0x29, 0x67, 0x0f, 0x6a, 0xb7, 0x82, 0x1c, 0xde, 0xa9, 0x82,
+ 0x48, 0xe6, 0xd6, 0x47, 0xf9, 0xc1, 0x55, 0x73, 0x74, 0x57, 0xb1, 0x09,
+ 0xfd, 0xa9, 0x82, 0x4e, 0xb1, 0x6b, 0x23, 0xe4, 0x42, 0x4a, 0x7d, 0x20,
+ 0x4f, 0xa5, 0x54, 0x0e, 0x09, 0x8f, 0xbd, 0x58, 0x79, 0x97, 0xba, 0x0f,
+ 0x61, 0x3f, 0x09, 0x55, 0xeb, 0xd6, 0xba, 0xc7, 0x8e, 0xbf, 0x7b, 0x8a,
+ 0xb0, 0xe1, 0x17, 0xbc, 0x7f, 0x24, 0x7e, 0x54, 0x94, 0xc1, 0xf2, 0x5b,
+ 0x1d, 0xb4, 0xe3, 0xe2, 0xbc, 0xa3, 0xac, 0x69, 0xd5, 0xb3, 0x7f, 0xe3,
+ 0xed, 0xff, 0x00, 0xab, 0x2b, 0xd6, 0x5f, 0x5b, 0x9d, 0x0d, 0x6f, 0xd2,
+ 0x27, 0x43, 0xf3, 0x5e, 0x4f, 0xd6, 0x07, 0xf9, 0x5b, 0x37, 0xbf, 0xe9,
+ 0xed, 0xff, 0x00, 0xaa, 0x29, 0x29, 0x05, 0x5f, 0xcd, 0x93, 0xe6, 0x87,
+ 0x07, 0x6a, 0x2d, 0x3f, 0xcd, 0xbb, 0xe2, 0xa3, 0x03, 0xd3, 0x8f, 0x3e,
+ 0x52, 0x53, 0x65, 0xad, 0xe4, 0xa8, 0x8e, 0x4a, 0x29, 0x69, 0x0c, 0xf8,
+ 0xa1, 0x86, 0x80, 0x24, 0xfc, 0x92, 0x52, 0xaa, 0xfe, 0x70, 0x69, 0x11,
+ 0xdd, 0x68, 0x37, 0x82, 0x7c, 0xf8, 0x54, 0xa9, 0x69, 0xde, 0x3c, 0x15,
+ 0xca, 0x65, 0xcc, 0x91, 0xe7, 0xf9, 0x52, 0x52, 0x0b, 0x41, 0x97, 0x14,
+ 0x36, 0x82, 0x58, 0xf2, 0x38, 0x00, 0xe8, 0x8f, 0x6c, 0x87, 0x47, 0x8f,
+ 0x3f, 0x24, 0x16, 0x7d, 0x0b, 0x27, 0x90, 0x0a, 0x4a, 0x46, 0xce, 0x02,
+ 0x91, 0xd4, 0xa5, 0x5f, 0x0a, 0x51, 0x32, 0x47, 0x64, 0x94, 0x8f, 0xb9,
+ 0x4f, 0xc9, 0x4e, 0x01, 0x48, 0x0f, 0x70, 0x49, 0x4a, 0x6c, 0xc5, 0xd1,
+ 0xdf, 0x43, 0xf0, 0x08, 0x47, 0xe9, 0x0f, 0x82, 0xb1, 0x5d, 0x64, 0xfa,
+ 0xc4, 0x7e, 0x6b, 0x49, 0x28, 0x04, 0x43, 0x87, 0xc1, 0x25, 0x32, 0xdb,
+ 0x30, 0x13, 0x86, 0x8e, 0x0a, 0x93, 0x46, 0xa1, 0x3c, 0x70, 0x92, 0x98,
+ 0xed, 0x01, 0xc3, 0x44, 0xad, 0xfa, 0x23, 0xcd, 0x4c, 0xfd, 0x21, 0xe2,
+ 0x9a, 0xf6, 0xc5, 0x6c, 0x77, 0x88, 0x49, 0x48, 0x47, 0x03, 0xe6, 0x8a,
+ 0xcd, 0xc1, 0x9a, 0x09, 0x07, 0xbf, 0x82, 0x10, 0xd4, 0x01, 0xf1, 0x56,
+ 0x18, 0xc7, 0x1a, 0xb4, 0xfa, 0x3f, 0x9d, 0xf2, 0x49, 0x48, 0x8a, 0x80,
+ 0xe4, 0xa9, 0xc6, 0x8a, 0x1e, 0x29, 0x29, 0x4d, 0x12, 0xe8, 0xf2, 0x2a,
+ 0x6c, 0x6c, 0x36, 0x3c, 0x14, 0x1a, 0x0e, 0xef, 0x91, 0x44, 0x66, 0xac,
+ 0x9e, 0xf2, 0x92, 0x91, 0x37, 0x94, 0xe6, 0x34, 0x4e, 0xc1, 0xa9, 0x4c,
+ 0xe1, 0x09, 0x29, 0x33, 0x74, 0x6c, 0xa8, 0xb8, 0x6e, 0xbe, 0x3c, 0x5a,
+ 0x7f, 0x22, 0x9b, 0x41, 0xf4, 0xbe, 0x2a, 0x04, 0xed, 0xb8, 0x3b, 0xc0,
+ 0x1f, 0xc8, 0x92, 0x9a, 0xa2, 0x5b, 0x60, 0xf8, 0xa9, 0xd5, 0xfc, 0xe7,
+ 0xcd, 0x45, 0xc3, 0xf4, 0x9f, 0x12, 0x89, 0x50, 0xfd, 0x24, 0xf8, 0x14,
+ 0x94, 0xdb, 0xb4, 0xcb, 0x44, 0x77, 0x54, 0xec, 0x32, 0xe9, 0x0a, 0xf3,
+ 0xda, 0x4b, 0x34, 0xd2, 0x15, 0x37, 0xb4, 0x02, 0x63, 0xb4, 0x24, 0xa6,
+ 0x36, 0x7d, 0x1f, 0x8a, 0xbb, 0x8c, 0x67, 0xa8, 0xe1, 0x47, 0x22, 0xe6,
+ 0x7e, 0x50, 0xa9, 0xd9, 0xab, 0x40, 0x0a, 0xc6, 0x01, 0x3f, 0xb4, 0xf0,
+ 0xc9, 0xe0, 0xdc, 0xcf, 0xfa, 0xa0, 0x92, 0x9f, 0x4d, 0xaa, 0x03, 0x2b,
+ 0x2e, 0xf1, 0xff, 0x00, 0xbf, 0x2b, 0x0e, 0x03, 0xd5, 0x71, 0xfe, 0x48,
+ 0xfc, 0xaa, 0xab, 0x1a, 0x4d, 0x60, 0x01, 0xac, 0x9d, 0x7e, 0x6a, 0xcc,
+ 0x45, 0xa4, 0x72, 0x4b, 0x04, 0xfd, 0xe9, 0x29, 0x90, 0x61, 0xf5, 0x18,
+ 0xe9, 0xfc, 0xe1, 0xf9, 0x57, 0x92, 0xf5, 0xa0, 0x07, 0x56, 0xcd, 0x1c,
+ 0x7e, 0x9e, 0xdd, 0x3f, 0xb4, 0x57, 0xae, 0x48, 0x0e, 0x69, 0x3c, 0xb4,
+ 0x83, 0xf8, 0xaf, 0x26, 0xeb, 0xc3, 0xfc, 0xb3, 0x9d, 0xff, 0x00, 0x86,
+ 0x2d, 0xff, 0x00, 0xaa, 0x29, 0x29, 0xab, 0x47, 0xf3, 0x4f, 0xf8, 0x85,
+ 0x1d, 0xa7, 0xd3, 0xfe, 0xd2, 0x9e, 0x38, 0xfd, 0x1d, 0x9f, 0x24, 0xa3,
+ 0xf4, 0x73, 0xe6, 0x92, 0x9b, 0xee, 0xac, 0xfa, 0x7e, 0x70, 0xa0, 0x6a,
+ 0xd0, 0x78, 0x15, 0x6d, 0xcd, 0xf6, 0x7e, 0x45, 0x1b, 0x6b, 0x86, 0xb7,
+ 0x6a, 0x4a, 0x6b, 0x56, 0x00, 0x2e, 0x3d, 0xc0, 0x56, 0xb1, 0x84, 0xd0,
+ 0x3e, 0x0a, 0x95, 0x9b, 0x9b, 0x60, 0x1c, 0x12, 0xdf, 0xc2, 0x55, 0xde,
+ 0x9a, 0xe6, 0xbd, 0xde, 0x94, 0xc9, 0x02, 0x42, 0x4a, 0x47, 0x63, 0x41,
+ 0x07, 0xcb, 0xf8, 0xa1, 0x35, 0x91, 0x55, 0x86, 0x79, 0x1c, 0x2b, 0x17,
+ 0x31, 0xc1, 0xd6, 0x34, 0x72, 0x38, 0x50, 0x63, 0x1d, 0xf6, 0x7b, 0x49,
+ 0x12, 0x43, 0x79, 0xf0, 0x49, 0x4d, 0x46, 0xe8, 0x02, 0x2d, 0x4d, 0x96,
+ 0xb8, 0x9e, 0x38, 0x53, 0xaa, 0xb0, 0x59, 0x31, 0xaa, 0x99, 0xaf, 0x6e,
+ 0xe3, 0xf9, 0xae, 0x10, 0x47, 0xdc, 0x92, 0x90, 0xb1, 0xbe, 0xe1, 0x3d,
+ 0x82, 0x89, 0x6c, 0x10, 0x8e, 0xd1, 0xee, 0xf9, 0x21, 0x91, 0xdd, 0x25,
+ 0x33, 0xa0, 0x7b, 0x72, 0x4c, 0xc0, 0xdb, 0xc7, 0x8a, 0xa8, 0xe1, 0x36,
+ 0x7c, 0x82, 0xb8, 0xcd, 0xad, 0xf5, 0x67, 0x97, 0x08, 0x01, 0x56, 0xb0,
+ 0x45, 0xd1, 0xf0, 0x49, 0x4c, 0xea, 0x6e, 0xbf, 0x22, 0xa4, 0x1b, 0xe2,
+ 0xa7, 0x4b, 0x24, 0x13, 0xc0, 0x00, 0xfe, 0x44, 0x46, 0x33, 0x49, 0x1a,
+ 0xa4, 0xa4, 0x05, 0xb0, 0xef, 0x82, 0x85, 0xe3, 0xf4, 0x75, 0xf9, 0x0f,
+ 0xe2, 0x8e, 0xe1, 0xcf, 0x90, 0x42, 0xb8, 0x7e, 0x85, 0x9f, 0x04, 0x94,
+ 0x80, 0xc4, 0x35, 0x5b, 0x60, 0x77, 0xd9, 0xe2, 0x34, 0x3a, 0x93, 0xf0,
+ 0x55, 0x08, 0x80, 0xdf, 0x32, 0xaf, 0x6e, 0xdb, 0x8f, 0xb0, 0xfe, 0x74,
+ 0x47, 0xe4, 0x29, 0x29, 0xad, 0x12, 0xd0, 0x84, 0x04, 0x92, 0xac, 0x01,
+ 0xcc, 0x7c, 0x90, 0x40, 0xfa, 0x5f, 0x04, 0x94, 0xb5, 0x40, 0x7a, 0xa0,
+ 0x1e, 0x08, 0x21, 0x19, 0x95, 0x6d, 0x64, 0x1e, 0x50, 0xaa, 0xfe, 0x72,
+ 0x7c, 0x01, 0x28, 0x96, 0xd8, 0xe2, 0x00, 0x61, 0x87, 0x14, 0x94, 0x8a,
+ 0xb1, 0xa9, 0x48, 0xb7, 0x52, 0xa4, 0xc1, 0xa9, 0x84, 0xfb, 0x0e, 0xa7,
+ 0xc4, 0x68, 0x92, 0x92, 0x35, 0xbf, 0xa2, 0x50, 0x2d, 0xfd, 0x38, 0x07,
+ 0xc0, 0xfe, 0x44, 0x76, 0x8f, 0x60, 0xf8, 0x28, 0x00, 0x0e, 0x4b, 0x3e,
+ 0x7f, 0x91, 0x25, 0x34, 0x5f, 0xfc, 0xe0, 0x46, 0xc7, 0x68, 0x73, 0x9e,
+ 0x3b, 0xcc, 0x81, 0xe4, 0xa3, 0x6b, 0x7f, 0x4a, 0x3e, 0x28, 0xb8, 0xac,
+ 0xfd, 0x24, 0xf6, 0x05, 0x25, 0x36, 0xed, 0x6c, 0x55, 0xf2, 0x59, 0xee,
+ 0x6c, 0x12, 0x07, 0x92, 0xd7, 0xbd, 0x9f, 0xa2, 0xf9, 0x2c, 0xdb, 0x40,
+ 0x04, 0x94, 0x94, 0x84, 0xeb, 0x01, 0x5b, 0xc3, 0x00, 0x75, 0x3c, 0x30,
+ 0xd1, 0x3b, 0x2e, 0x67, 0xe5, 0x55, 0x49, 0xfe, 0x0a, 0xe7, 0x4f, 0x61,
+ 0x1d, 0x5b, 0x14, 0x9e, 0x0d, 0xcd, 0xfc, 0x0a, 0x4a, 0x7d, 0x1e, 0xb3,
+ 0xfa, 0x16, 0x19, 0xee, 0xe9, 0xfb, 0xca, 0x38, 0x70, 0x36, 0x98, 0xfd,
+ 0xdf, 0xe2, 0xa9, 0xd2, 0xf9, 0x66, 0xd2, 0x62, 0x4b, 0xa3, 0xef, 0x2a,
+ 0xd3, 0x24, 0x38, 0x4f, 0x10, 0x75, 0xed, 0xa2, 0x4a, 0x64, 0xf2, 0x48,
+ 0x1e, 0x13, 0xfd, 0xeb, 0xcb, 0x7a, 0xeb, 0x7f, 0xca, 0xd9, 0x87, 0xbf,
+ 0xac, 0xff, 0x00, 0xca, 0xbd, 0x4d, 0xe4, 0x36, 0x07, 0x62, 0xe1, 0x11,
+ 0xc9, 0x12, 0xbc, 0xc7, 0xaf, 0x88, 0xea, 0xd9, 0xb1, 0xfe, 0x99, 0xff,
+ 0x00, 0x95, 0x25, 0x34, 0xb1, 0x1b, 0x35, 0xdd, 0xf2, 0x4b, 0x6f, 0xe8,
+ 0xfe, 0x6a, 0xcf, 0x4a, 0xad, 0xaf, 0xf5, 0x83, 0xb8, 0x80, 0xa5, 0xe8,
+ 0x37, 0xd4, 0xd9, 0x1e, 0xdd, 0xf1, 0x29, 0x29, 0xb6, 0xd0, 0x5a, 0x1a,
+ 0x0e, 0xa4, 0xb7, 0xdd, 0xf1, 0x2a, 0x4d, 0x6e, 0xe0, 0xd0, 0x39, 0x6f,
+ 0x28, 0xef, 0xa8, 0x8e, 0x3b, 0x42, 0x86, 0xc3, 0x05, 0xc3, 0x8d, 0x34,
+ 0x49, 0x4e, 0x76, 0x5b, 0x7f, 0x4e, 0x5b, 0xc7, 0xb4, 0x7f, 0x14, 0xdd,
+ 0x3c, 0x58, 0xcc, 0xca, 0xe0, 0x10, 0x67, 0x55, 0x66, 0xfa, 0xb7, 0xd8,
+ 0xf7, 0x6b, 0xb9, 0xa1, 0xa3, 0xe5, 0xa9, 0x5a, 0x5d, 0x2b, 0x1d, 0xa6,
+ 0xb7, 0x64, 0x58, 0x35, 0xe1, 0xa9, 0x29, 0xa9, 0x98, 0xc8, 0x7b, 0xcc,
+ 0x76, 0x55, 0xeb, 0xdc, 0x71, 0x6f, 0x03, 0x80, 0x04, 0x9f, 0x9a, 0xbf,
+ 0x98, 0x3d, 0xcf, 0x71, 0xf0, 0xe1, 0x52, 0x65, 0x6f, 0x38, 0xd6, 0xbc,
+ 0x18, 0x60, 0x1e, 0xe1, 0xe3, 0x29, 0x29, 0x8d, 0x2c, 0x86, 0x4f, 0x68,
+ 0x52, 0x78, 0x30, 0x23, 0x59, 0x3c, 0x29, 0x52, 0xd9, 0xae, 0x07, 0x82,
+ 0x33, 0xea, 0x77, 0xb7, 0x61, 0x0d, 0x70, 0x89, 0x27, 0xcd, 0x25, 0x34,
+ 0xf6, 0x10, 0x4f, 0x88, 0x50, 0x2d, 0xd0, 0x47, 0x72, 0xad, 0x39, 0xa0,
+ 0xb9, 0xd1, 0xfe, 0xa1, 0x08, 0xb2, 0x76, 0xfc, 0x7f, 0x8a, 0x4a, 0x60,
+ 0x47, 0xb5, 0xc2, 0x39, 0x3c, 0xf7, 0x55, 0xde, 0x3f, 0x58, 0x8f, 0x87,
+ 0xe4, 0x57, 0xb2, 0x69, 0x70, 0xad, 0xae, 0x69, 0x89, 0x27, 0x72, 0xab,
+ 0xb0, 0x8c, 0x92, 0xde, 0xe2, 0x3f, 0x22, 0x4a, 0x4f, 0x5b, 0x4f, 0xa6,
+ 0xe0, 0x39, 0x31, 0xfc, 0x51, 0x58, 0xd9, 0x66, 0x89, 0x06, 0xed, 0x6e,
+ 0xe3, 0xc6, 0x83, 0xef, 0x95, 0x31, 0xab, 0x64, 0x68, 0x3b, 0x7d, 0xe9,
+ 0x29, 0xa9, 0x6b, 0x61, 0xc4, 0x72, 0x85, 0x68, 0xfd, 0x0b, 0x55, 0x8b,
+ 0x01, 0x9d, 0x7c, 0xd0, 0x1c, 0xcd, 0xdb, 0x5a, 0x7e, 0x8b, 0xb6, 0xcf,
+ 0xc0, 0x98, 0x49, 0x4d, 0xfe, 0x99, 0xf5, 0x7e, 0xde, 0xa1, 0x4b, 0x2e,
+ 0x7b, 0xcd, 0x75, 0xfe, 0x68, 0x68, 0x97, 0x1f, 0xbf, 0x85, 0xd0, 0xd1,
+ 0xf5, 0x6b, 0x05, 0xad, 0xdb, 0x61, 0x75, 0x9b, 0x3b, 0x93, 0xdc, 0xfc,
+ 0x14, 0xb0, 0x5e, 0x03, 0x59, 0x5d, 0x6d, 0x30, 0xd0, 0x01, 0x00, 0x0e,
+ 0xc3, 0x40, 0x3f, 0xbd, 0x5f, 0xaa, 0xf7, 0x6c, 0x00, 0xb4, 0xee, 0x7b,
+ 0xb4, 0x32, 0x20, 0xfc, 0x92, 0x53, 0x41, 0xff, 0x00, 0x56, 0xba, 0x76,
+ 0xd0, 0xda, 0xdb, 0x05, 0xdc, 0xcf, 0x2b, 0x2f, 0x2f, 0xea, 0xc3, 0x1b,
+ 0xb8, 0xd4, 0x4b, 0x3b, 0x69, 0xa8, 0xfb, 0x8a, 0xea, 0x8d, 0x87, 0xd5,
+ 0x82, 0x1c, 0x03, 0x44, 0xea, 0x37, 0x42, 0x15, 0xcc, 0xf5, 0x19, 0x2d,
+ 0xe4, 0x9d, 0x46, 0x9a, 0xa4, 0xa7, 0x80, 0xc8, 0xe9, 0x39, 0x98, 0xc5,
+ 0xc4, 0xb7, 0x7b, 0x36, 0x91, 0xb9, 0xbf, 0xf9, 0x1e, 0x55, 0x5a, 0x18,
+ 0xf7, 0xe4, 0x86, 0xfe, 0xe0, 0x97, 0x2e, 0xc3, 0x2e, 0x9b, 0x37, 0xba,
+ 0xd0, 0xd9, 0x0d, 0x99, 0x6f, 0x07, 0x4f, 0x25, 0x82, 0xee, 0x9d, 0x93,
+ 0x8a, 0x2c, 0xc8, 0x70, 0x1e, 0x9d, 0xce, 0x73, 0x98, 0xf0, 0x41, 0xf6,
+ 0x76, 0xf3, 0x49, 0x4e, 0x7d, 0x1c, 0x99, 0xf1, 0x47, 0x27, 0x58, 0xed,
+ 0xfe, 0xc4, 0x1a, 0x74, 0x04, 0xab, 0x2d, 0x6b, 0x48, 0x1d, 0xa7, 0xf2,
+ 0x84, 0x94, 0xb8, 0x12, 0xd0, 0x23, 0xb2, 0x0b, 0x44, 0x65, 0xb0, 0x78,
+ 0x93, 0xf9, 0x15, 0xb6, 0xed, 0x2d, 0x07, 0xc0, 0x2a, 0xe7, 0xfa, 0x65,
+ 0x50, 0x27, 0x5f, 0xe0, 0x92, 0x9a, 0xb9, 0x0d, 0x8b, 0xa3, 0xcd, 0x1b,
+ 0x06, 0xb2, 0xeb, 0x88, 0xfe, 0x51, 0x51, 0xc9, 0x00, 0x5e, 0x27, 0xf7,
+ 0x86, 0x8a, 0xd7, 0x4c, 0x60, 0x37, 0xbc, 0xf6, 0x6b, 0x8f, 0xe5, 0x49,
+ 0x4d, 0x8c, 0xdd, 0xb5, 0xb0, 0x0e, 0x01, 0xd4, 0xac, 0xd7, 0x7a, 0x6e,
+ 0x6c, 0xb7, 0xe3, 0xaf, 0xe2, 0xb5, 0x73, 0x9a, 0x1c, 0x01, 0x76, 0xb1,
+ 0xdb, 0xe2, 0xb2, 0x9d, 0x59, 0x0f, 0x02, 0x38, 0xd0, 0x84, 0x94, 0xd6,
+ 0xb4, 0xcd, 0xa1, 0xa3, 0x89, 0x0b, 0x47, 0x1a, 0x3f, 0x69, 0xe3, 0x6d,
+ 0x33, 0xb6, 0xe6, 0xea, 0x3c, 0xca, 0xa5, 0xe9, 0xc5, 0x9b, 0x8f, 0x00,
+ 0xea, 0xaf, 0x60, 0xd2, 0x2b, 0xcd, 0xc7, 0x8e, 0x5b, 0x70, 0x9f, 0x9b,
+ 0xb4, 0x49, 0x4f, 0x7b, 0x43, 0x86, 0xd9, 0xec, 0x4b, 0xbf, 0x2a, 0xb9,
+ 0xea, 0x38, 0x9d, 0x91, 0xc8, 0x3c, 0x2a, 0x78, 0xcd, 0x8a, 0xda, 0x3c,
+ 0xce, 0x9f, 0x35, 0x6e, 0xbd, 0x01, 0x24, 0x77, 0x31, 0xf7, 0x24, 0xa6,
+ 0x57, 0xb0, 0x1d, 0xa4, 0x70, 0xde, 0x00, 0xed, 0x0b, 0xcd, 0x7a, 0xfb,
+ 0x08, 0xea, 0xd9, 0x93, 0xde, 0xd7, 0xfe, 0x55, 0xe9, 0x2e, 0x32, 0x34,
+ 0xf3, 0xd5, 0x79, 0xef, 0xd6, 0x06, 0xff, 0x00, 0x95, 0xb2, 0xcf, 0x6f,
+ 0x50, 0xa4, 0xa6, 0x8f, 0x4d, 0x25, 0xa2, 0xf8, 0xd1, 0xd0, 0x20, 0xa6,
+ 0x93, 0xe9, 0x7a, 0x9f, 0x9d, 0xbe, 0x7e, 0x6a, 0x78, 0x0d, 0xf7, 0x5c,
+ 0x3f, 0x92, 0x3f, 0x2a, 0x96, 0xdf, 0xd5, 0xfc, 0xb7, 0xff, 0x00, 0x04,
+ 0x94, 0xec, 0x9a, 0xc9, 0x1a, 0x0d, 0x49, 0x92, 0x87, 0x5b, 0x0b, 0x77,
+ 0x07, 0x70, 0x0c, 0xc2, 0xb6, 0x1b, 0xa1, 0x3d, 0xc2, 0x03, 0xd8, 0xe2,
+ 0x4e, 0xbe, 0xc1, 0xcf, 0xcb, 0x52, 0x92, 0x9a, 0xcc, 0x60, 0x79, 0xc8,
+ 0xb2, 0x78, 0x64, 0x7e, 0x45, 0xa1, 0x82, 0xd1, 0xfb, 0x3d, 0xa4, 0x1e,
+ 0x49, 0x55, 0x30, 0xdc, 0x1f, 0x46, 0x5e, 0x90, 0x7d, 0xa1, 0x5b, 0xe9,
+ 0xe0, 0xfe, 0xcf, 0x6c, 0xf6, 0x27, 0xf2, 0xa4, 0xa6, 0xa6, 0x78, 0x1b,
+ 0x9d, 0xa7, 0x60, 0xa8, 0xfa, 0x92, 0xc7, 0x56, 0x7f, 0x39, 0xae, 0x31,
+ 0xf7, 0x2d, 0x2c, 0xc6, 0x88, 0xd3, 0x52, 0x55, 0x03, 0x51, 0x6d, 0x56,
+ 0xbe, 0x01, 0x21, 0x9a, 0x9f, 0x00, 0x4f, 0x64, 0x94, 0xb6, 0x28, 0x05,
+ 0x8d, 0xd3, 0x5d, 0x7e, 0xe4, 0x6c, 0x82, 0x77, 0x18, 0xd2, 0x23, 0xf2,
+ 0x28, 0x62, 0x4f, 0xa4, 0x1c, 0x04, 0xc0, 0x56, 0x6c, 0xa8, 0x00, 0xf2,
+ 0xe3, 0xee, 0x3a, 0x8f, 0x84, 0x24, 0xa6, 0xa3, 0x44, 0x82, 0x4e, 0xa7,
+ 0xb2, 0x8b, 0x9b, 0xf4, 0x07, 0xf2, 0x87, 0xe5, 0x46, 0x6b, 0x7d, 0x84,
+ 0xa8, 0x1f, 0xa7, 0x5e, 0x9c, 0xbc, 0x24, 0xa4, 0x97, 0x33, 0x71, 0x0c,
+ 0xe3, 0x53, 0xf9, 0x55, 0x3b, 0x18, 0x06, 0x7d, 0x9e, 0x51, 0xf9, 0x16,
+ 0x85, 0x8c, 0x1f, 0x6a, 0x60, 0xf1, 0x06, 0x55, 0x4b, 0x07, 0xeb, 0xf7,
+ 0x78, 0x02, 0x3f, 0x22, 0x4a, 0x4d, 0xb0, 0xbe, 0x97, 0x0f, 0x9f, 0xf9,
+ 0xa3, 0xfd, 0xa9, 0xa2, 0x29, 0x04, 0x1d, 0x78, 0x3f, 0x7a, 0x9b, 0xc8,
+ 0x63, 0x20, 0xf7, 0x0e, 0x8f, 0xb8, 0x25, 0xb0, 0x31, 0x84, 0x0d, 0x48,
+ 0xee, 0x52, 0x53, 0x52, 0xee, 0x0b, 0x8f, 0x3c, 0x2a, 0xda, 0xef, 0xae,
+ 0x48, 0x0d, 0x00, 0x39, 0xc4, 0xf6, 0x6b, 0x4c, 0x95, 0x6a, 0xe1, 0xa1,
+ 0xdd, 0xcf, 0x8a, 0x0e, 0x4d, 0x40, 0xe2, 0xd6, 0x43, 0x77, 0x39, 0xe0,
+ 0x36, 0x3e, 0x27, 0x54, 0x94, 0xf4, 0x18, 0xf9, 0x39, 0x39, 0xe4, 0x33,
+ 0x08, 0x7b, 0x08, 0x96, 0xd9, 0x67, 0xb0, 0x19, 0xfc, 0x55, 0xc6, 0xe2,
+ 0x75, 0x46, 0x38, 0x4b, 0xa8, 0x86, 0x80, 0x4b, 0x7d, 0xd3, 0xa8, 0xf1,
+ 0x1c, 0xac, 0xac, 0x50, 0xea, 0xb1, 0x5f, 0x7d, 0x81, 0x95, 0x3d, 0x8e,
+ 0x86, 0x41, 0x77, 0xa8, 0xf6, 0x0e, 0xe5, 0xd3, 0xa4, 0x7c, 0x15, 0xae,
+ 0xa1, 0x66, 0x45, 0x9d, 0x2f, 0x1e, 0xf6, 0x0f, 0xd3, 0x96, 0x6e, 0x93,
+ 0x2d, 0xd0, 0xe8, 0x24, 0x84, 0x94, 0xdf, 0x9e, 0xa8, 0xd6, 0xbd, 0xc0,
+ 0x55, 0x27, 0xe8, 0x92, 0xe7, 0x81, 0xf3, 0x10, 0xa8, 0xbf, 0xaa, 0x75,
+ 0x7a, 0xa1, 0xae, 0x6d, 0x2d, 0xd8, 0x60, 0xea, 0x79, 0xfb, 0x91, 0x71,
+ 0x6a, 0xce, 0xa7, 0x1a, 0x97, 0x59, 0x49, 0x2f, 0x2c, 0x06, 0xc7, 0x30,
+ 0x92, 0xd1, 0x1f, 0x9a, 0xf1, 0xdf, 0xe2, 0x10, 0x3a, 0xbb, 0x0b, 0x59,
+ 0x30, 0x03, 0x8c, 0x1d, 0x7f, 0x8a, 0x4a, 0x66, 0xce, 0xae, 0x5d, 0x0d,
+ 0xcd, 0xac, 0x56, 0xf3, 0x3b, 0x6d, 0xac, 0xee, 0xad, 0xd2, 0x3c, 0xf5,
+ 0x0a, 0xee, 0x6f, 0x4d, 0xaf, 0x1b, 0xa1, 0x6e, 0xb0, 0x4d, 0x9b, 0x5c,
+ 0xf8, 0x3a, 0x86, 0x6f, 0x13, 0xb4, 0x79, 0x2e, 0x53, 0xa8, 0xdf, 0x6f,
+ 0xd9, 0x9b, 0x1b, 0x5a, 0x27, 0x46, 0x3b, 0x49, 0x1f, 0xc9, 0x56, 0xb0,
+ 0xfa, 0xe6, 0x6d, 0xb8, 0x97, 0x61, 0x65, 0xbc, 0xd9, 0x5d, 0x8d, 0x2d,
+ 0xa8, 0x9f, 0xcd, 0x31, 0xa4, 0x79, 0x24, 0xa7, 0x1e, 0x97, 0x8d, 0x07,
+ 0x89, 0x57, 0x18, 0xdd, 0x09, 0xe2, 0x09, 0x2b, 0x3e, 0xb2, 0x5a, 0x47,
+ 0x91, 0x5a, 0xdd, 0x1f, 0x0b, 0xf6, 0x86, 0x50, 0xc7, 0x73, 0xcb, 0x01,
+ 0x1b, 0x9c, 0xe0, 0x24, 0xfc, 0x02, 0x4a, 0x61, 0x53, 0x81, 0x67, 0xc2,
+ 0x50, 0xab, 0x21, 0xd9, 0xb4, 0xfc, 0x4f, 0xe4, 0x5d, 0xcb, 0x3e, 0xa1,
+ 0xf4, 0xe1, 0x5f, 0xf4, 0x8b, 0xa4, 0x89, 0x9f, 0x6f, 0xf7, 0x2e, 0x43,
+ 0xa8, 0x60, 0xb7, 0xa7, 0x75, 0x96, 0xe3, 0xb5, 0xe5, 0xec, 0x69, 0x96,
+ 0xb8, 0x88, 0x30, 0x47, 0x74, 0x94, 0xe7, 0xe4, 0xb0, 0xbf, 0x2d, 0xa3,
+ 0xc5, 0xc3, 0xf2, 0xab, 0xd8, 0x2c, 0x70, 0xbe, 0xc8, 0xe3, 0x71, 0xfc,
+ 0x0a, 0xad, 0x1b, 0xb2, 0xdb, 0x3f, 0xbc, 0x15, 0xec, 0x16, 0xfe, 0xb2,
+ 0xf8, 0xe3, 0x73, 0xa7, 0xef, 0x49, 0x49, 0xf3, 0xaa, 0x77, 0xa5, 0xbb,
+ 0xbc, 0x72, 0xb2, 0x98, 0xc2, 0xe9, 0x71, 0xe7, 0xba, 0xde, 0xc9, 0x13,
+ 0x8d, 0xa8, 0xd0, 0x03, 0xaf, 0xcd, 0x63, 0x50, 0xc3, 0x06, 0x35, 0xf7,
+ 0x47, 0xdc, 0x92, 0x9a, 0xb7, 0x69, 0xcf, 0x88, 0xfc, 0xaa, 0xfe, 0x25,
+ 0x60, 0x66, 0x50, 0x66, 0x49, 0xb5, 0xa4, 0xf9, 0x7b, 0x95, 0x1c, 0x81,
+ 0xee, 0xd7, 0xc4, 0x69, 0xf3, 0x5a, 0x38, 0xd5, 0x1f, 0xb7, 0x56, 0x78,
+ 0x06, 0xc6, 0x39, 0xa7, 0xca, 0x52, 0x53, 0xdb, 0xe3, 0x96, 0xfa, 0x6c,
+ 0x93, 0xdd, 0xd3, 0xfe, 0x72, 0x23, 0x27, 0x50, 0x7e, 0x8e, 0xe1, 0xb5,
+ 0x41, 0xad, 0x03, 0x1d, 0x8e, 0xf0, 0x2e, 0x1f, 0x22, 0x51, 0x18, 0x48,
+ 0x0d, 0x91, 0x24, 0x9f, 0xef, 0x49, 0x4b, 0xb8, 0x9d, 0x83, 0x59, 0xf1,
+ 0xf1, 0xe1, 0x70, 0x9d, 0x75, 0x85, 0xdd, 0x53, 0x2c, 0x0e, 0xcf, 0x27,
+ 0xf0, 0x5d, 0xe3, 0x89, 0x1b, 0x64, 0x41, 0xd3, 0x4f, 0x90, 0x5c, 0x1f,
+ 0xd6, 0x39, 0xfd, 0xab, 0x94, 0x39, 0xfd, 0x21, 0xfc, 0x81, 0x25, 0x39,
+ 0xd8, 0x8f, 0x15, 0xbe, 0xd2, 0xe0, 0x60, 0xb4, 0x01, 0xf3, 0x28, 0xf1,
+ 0xfa, 0xbc, 0xff, 0x00, 0x2e, 0x3f, 0x04, 0x2c, 0x46, 0x6e, 0xb2, 0xd6,
+ 0x9f, 0xdd, 0x07, 0xee, 0x70, 0x57, 0x7d, 0x31, 0xe8, 0xed, 0x8d, 0x77,
+ 0xa4, 0xa7, 0x57, 0x78, 0x87, 0x34, 0x05, 0x5d, 0xdb, 0x80, 0x31, 0xdc,
+ 0xc7, 0xdd, 0xca, 0xb2, 0x5a, 0x03, 0xc9, 0x1e, 0x68, 0x4e, 0x20, 0x3c,
+ 0x40, 0xd1, 0xb3, 0x23, 0xe2, 0x92, 0x91, 0x62, 0x56, 0x5b, 0x5e, 0x46,
+ 0x91, 0xb8, 0x8e, 0x55, 0xbc, 0x06, 0x4e, 0x0b, 0x44, 0xe8, 0x09, 0x91,
+ 0xf3, 0x48, 0x34, 0x6d, 0xb0, 0x8d, 0x24, 0xe8, 0xa5, 0xd3, 0xd9, 0xb7,
+ 0x13, 0x69, 0xe7, 0x71, 0x3f, 0x8a, 0x4a, 0x69, 0xe4, 0xb4, 0xb4, 0xc4,
+ 0x7f, 0xac, 0x95, 0x52, 0xda, 0xc7, 0xd9, 0xee, 0x73, 0x9d, 0x04, 0x0f,
+ 0x60, 0xf1, 0x2b, 0x4a, 0xd6, 0x87, 0xee, 0x72, 0xad, 0x75, 0x64, 0x62,
+ 0xde, 0x63, 0xdb, 0xb6, 0x09, 0xfc, 0x89, 0x29, 0xaf, 0x85, 0x0c, 0x69,
+ 0x69, 0x32, 0x08, 0x00, 0x04, 0x7c, 0xb6, 0x39, 0xfb, 0x48, 0xd0, 0x03,
+ 0x04, 0x20, 0x62, 0xb4, 0x1d, 0x86, 0x60, 0x8e, 0xde, 0x50, 0xad, 0x64,
+ 0x4e, 0xc6, 0xbb, 0xc5, 0xc3, 0x4f, 0x92, 0x4a, 0x40, 0xc6, 0xfe, 0x8e,
+ 0x3c, 0x50, 0xf6, 0x93, 0x6d, 0x5f, 0xd6, 0x0a, 0xe3, 0x6b, 0x96, 0x4a,
+ 0x10, 0xaa, 0x32, 0x2a, 0x68, 0xfd, 0xe9, 0x49, 0x4b, 0xe5, 0x30, 0x7a,
+ 0xcd, 0x6f, 0x1b, 0x81, 0xd5, 0x67, 0xed, 0x27, 0x32, 0xc1, 0x3c, 0x46,
+ 0xbf, 0x20, 0xb5, 0x6e, 0x68, 0x37, 0x30, 0x3b, 0xfd, 0x75, 0x59, 0xe1,
+ 0x91, 0x9d, 0x78, 0x1a, 0xc1, 0x01, 0x25, 0x36, 0x4d, 0x41, 0xcd, 0xd4,
+ 0xcc, 0x34, 0x9f, 0xc5, 0x22, 0xdd, 0x23, 0xb1, 0xd4, 0x2b, 0x14, 0x31,
+ 0xa4, 0x12, 0x74, 0x04, 0x40, 0xf8, 0x92, 0x50, 0xf6, 0x7b, 0x47, 0xc2,
+ 0x12, 0x53, 0x99, 0x92, 0x76, 0x87, 0x03, 0xcc, 0xa7, 0x89, 0xaa, 0x82,
+ 0x75, 0x03, 0x69, 0x8f, 0x9a, 0x7c, 0xb3, 0x3b, 0xb4, 0x44, 0x6b, 0x37,
+ 0x62, 0x50, 0x5b, 0xc8, 0x00, 0x9f, 0x1e, 0xe9, 0x29, 0xbd, 0x6d, 0xb8,
+ 0x85, 0x8c, 0xa2, 0xdb, 0x3d, 0x36, 0xb8, 0x0d, 0xef, 0x8d, 0x36, 0x93,
+ 0x11, 0x3e, 0x25, 0x5f, 0xbf, 0xad, 0x74, 0x8a, 0x9e, 0x29, 0xc6, 0xb9,
+ 0xb7, 0x86, 0xb4, 0x7a, 0x94, 0x89, 0x92, 0x07, 0xb4, 0xec, 0x31, 0xb4,
+ 0xb8, 0x0e, 0xdc, 0xac, 0xba, 0x3a, 0x6d, 0x97, 0xde, 0xc1, 0x91, 0xfa,
+ 0x1a, 0xa0, 0x39, 0xe5, 0xfa, 0x1f, 0x2d, 0x3f, 0xbd, 0x59, 0xb1, 0xae,
+ 0x65, 0xfb, 0x7a, 0x57, 0x4a, 0x6d, 0xec, 0x68, 0xfe, 0x7d, 0xfa, 0x00,
+ 0xef, 0xed, 0x7f, 0x04, 0x94, 0xec, 0x8c, 0x96, 0x0a, 0x9a, 0xfa, 0x48,
+ 0xb2, 0x87, 0x09, 0x6b, 0x81, 0xe4, 0x79, 0xae, 0x7b, 0xaa, 0x65, 0xbb,
+ 0x2a, 0xd7, 0x03, 0xa3, 0x46, 0x80, 0x7f, 0x7a, 0x2b, 0x33, 0x9c, 0xe0,
+ 0x5a, 0xda, 0x19, 0x8a, 0xd6, 0x4b, 0x5d, 0x55, 0x64, 0xc6, 0xfe, 0x5d,
+ 0x32, 0xb3, 0xb2, 0xee, 0x6b, 0x6b, 0x3b, 0x75, 0x82, 0x5c, 0xf3, 0xd9,
+ 0x25, 0x35, 0xfa, 0xb3, 0x3d, 0x0c, 0x58, 0x32, 0x03, 0x9c, 0xdf, 0x49,
+ 0xae, 0xe7, 0xe8, 0x99, 0x3f, 0x0d, 0x7f, 0xd6, 0x52, 0xc5, 0xe9, 0xb6,
+ 0x33, 0xa5, 0x3b, 0x32, 0xeb, 0x36, 0xd8, 0xd7, 0x03, 0x55, 0x03, 0x57,
+ 0x3d, 0xbe, 0x7d, 0xc2, 0x26, 0x55, 0x79, 0x99, 0xb9, 0x63, 0x2b, 0x0a,
+ 0x2c, 0x2c, 0x68, 0x15, 0xd2, 0xf8, 0x26, 0x07, 0x2e, 0xaf, 0x78, 0xda,
+ 0xe9, 0xf2, 0x42, 0x3d, 0x7f, 0xab, 0x52, 0xe3, 0x5d, 0xa7, 0x63, 0xdb,
+ 0xa3, 0x9a, 0xea, 0xc0, 0x20, 0xf9, 0x8d, 0xa1, 0x25, 0x2b, 0x06, 0xbc,
+ 0x6b, 0xdc, 0xcb, 0x2f, 0xc6, 0xb5, 0xad, 0x75, 0xad, 0xad, 0xc4, 0x3b,
+ 0xda, 0x37, 0x7f, 0x27, 0x47, 0x7e, 0x2b, 0xa4, 0x0c, 0xe9, 0xf8, 0x1f,
+ 0x59, 0xb1, 0x2a, 0xe9, 0xa0, 0x0a, 0x2d, 0xac, 0x7a, 0xb3, 0xba, 0x1a,
+ 0xe3, 0xda, 0x5c, 0x4e, 0xab, 0x03, 0x13, 0xaa, 0x66, 0xf5, 0x0c, 0xba,
+ 0xe9, 0xbd, 0xc1, 0xd5, 0x80, 0x49, 0x0d, 0x68, 0x1c, 0x0f, 0x25, 0xa8,
+ 0x1a, 0x77, 0x36, 0xa6, 0x8f, 0x6f, 0x27, 0xc6, 0x65, 0x25, 0x3e, 0x93,
+ 0x20, 0x89, 0x07, 0x4f, 0x15, 0xe5, 0xbf, 0x59, 0xdc, 0xe1, 0xf5, 0x8d,
+ 0x91, 0xc7, 0x8f, 0xde, 0xae, 0xbe, 0x2c, 0x69, 0x63, 0x09, 0x6b, 0x84,
+ 0x0d, 0xc0, 0x9e, 0xea, 0x97, 0x53, 0xbb, 0xec, 0x6f, 0xa5, 0xad, 0x01,
+ 0xc5, 0xcc, 0x25, 0xdb, 0xc4, 0xf7, 0x89, 0x49, 0x4d, 0x3f, 0x4e, 0xf6,
+ 0xe4, 0x55, 0x65, 0xac, 0x73, 0x58, 0xf7, 0x7b, 0x1c, 0x44, 0x07, 0x47,
+ 0x82, 0xb5, 0x84, 0x4f, 0xdb, 0x2c, 0x11, 0x03, 0x7b, 0x90, 0xb1, 0xfa,
+ 0xed, 0xb8, 0xf6, 0x9b, 0x7d, 0x2a, 0xde, 0x4b, 0x76, 0x80, 0xe9, 0x86,
+ 0xf9, 0x80, 0x89, 0x5f, 0xd6, 0x8b, 0x9a, 0xcd, 0x8e, 0xa5, 0x96, 0x1e,
+ 0x49, 0x98, 0x27, 0xba, 0x4a, 0x74, 0x32, 0xe3, 0xec, 0xe2, 0x7b, 0x03,
+ 0x23, 0xb2, 0xa0, 0xda, 0xda, 0xd6, 0x4b, 0x7f, 0x3a, 0x5d, 0xf7, 0xab,
+ 0x38, 0xdd, 0x7a, 0xcc, 0xc0, 0xe6, 0x1c, 0x36, 0x35, 0x81, 0xa7, 0x73,
+ 0x89, 0xd0, 0x7e, 0x0a, 0xb3, 0x6c, 0x0d, 0xaa, 0x09, 0x10, 0x01, 0x12,
+ 0x92, 0x9c, 0xfc, 0x9d, 0x1e, 0x07, 0x9b, 0x7f, 0x2a, 0xd6, 0xa0, 0x83,
+ 0xd4, 0x69, 0x02, 0x74, 0x7b, 0x46, 0xbd, 0xbd, 0xcb, 0x0e, 0xeb, 0x5d,
+ 0x65, 0x93, 0xfc, 0xa1, 0xf7, 0x4a, 0xda, 0xc5, 0x0e, 0x1d, 0x45, 0x8e,
+ 0xe4, 0x0b, 0x59, 0xa7, 0x94, 0xa4, 0xa7, 0xb3, 0x00, 0x1c, 0x4a, 0xf5,
+ 0xd6, 0x4c, 0x8f, 0x9a, 0x98, 0x69, 0xda, 0xc2, 0x0f, 0x7e, 0x3e, 0xf4,
+ 0xed, 0x68, 0x38, 0x62, 0x39, 0xd7, 0xf2, 0xa4, 0x1d, 0x0d, 0x6f, 0x68,
+ 0x22, 0x4a, 0x4a, 0x66, 0xe8, 0xb1, 0xa4, 0xbb, 0x43, 0xa4, 0x1f, 0x90,
+ 0x5c, 0x27, 0xd6, 0x16, 0xff, 0x00, 0x95, 0x72, 0x9d, 0xfc, 0xbf, 0xfb,
+ 0xe8, 0x5d, 0xe8, 0x2d, 0x0c, 0x9e, 0x47, 0x7f, 0xb9, 0x70, 0x5d, 0x7c,
+ 0x03, 0xd5, 0xb2, 0xfc, 0x9f, 0xff, 0x00, 0x7d, 0x09, 0x29, 0xcf, 0xc3,
+ 0x6b, 0xbd, 0x7b, 0x00, 0xe4, 0xb3, 0xf8, 0x85, 0x7b, 0xdf, 0xf6, 0x7d,
+ 0xdf, 0x9f, 0xbb, 0x95, 0x5b, 0x00, 0x7e, 0xb6, 0xff, 0x00, 0xea, 0x15,
+ 0xa5, 0xb4, 0xfa, 0x13, 0xb7, 0x59, 0xe1, 0x25, 0x37, 0x4b, 0x49, 0x6f,
+ 0x97, 0x8a, 0x85, 0x94, 0xb7, 0x6c, 0x93, 0xee, 0x07, 0x8f, 0xc1, 0x58,
+ 0x00, 0x48, 0x1f, 0x7a, 0x1b, 0xde, 0xd1, 0x0f, 0x22, 0x64, 0x11, 0xf8,
+ 0xa4, 0xa6, 0x35, 0x99, 0xaf, 0x4f, 0xdf, 0x21, 0x1b, 0x18, 0x45, 0x41,
+ 0xbe, 0x68, 0x35, 0x6d, 0x14, 0xb9, 0xc0, 0x68, 0xd7, 0x13, 0x3f, 0x72,
+ 0xb3, 0x8f, 0xab, 0x44, 0x6a, 0x39, 0x49, 0x48, 0x1d, 0x58, 0x87, 0xfc,
+ 0x90, 0x6e, 0x61, 0xfb, 0x2d, 0xdf, 0xbb, 0xb7, 0x5f, 0x9f, 0x0a, 0xdc,
+ 0x41, 0xb3, 0xe4, 0x81, 0x70, 0x77, 0xa3, 0x63, 0xa3, 0xda, 0x46, 0xd3,
+ 0xf3, 0x49, 0x4e, 0x6e, 0x2b, 0x7e, 0x8a, 0xb9, 0x7b, 0x06, 0xc1, 0x1c,
+ 0x4b, 0x4f, 0xde, 0xaa, 0x62, 0x88, 0x1a, 0xf6, 0x98, 0x57, 0xaf, 0x6f,
+ 0xb0, 0x02, 0x78, 0x00, 0xa4, 0xa6, 0x2d, 0x03, 0x60, 0x50, 0xda, 0x0e,
+ 0x5d, 0x31, 0xc9, 0x21, 0x1a, 0xb0, 0x3d, 0x21, 0xe1, 0xdd, 0x41, 0xad,
+ 0x03, 0x3a, 0x86, 0x8e, 0xee, 0x09, 0x29, 0x9e, 0x4b, 0x1a, 0x2c, 0x69,
+ 0x3a, 0x41, 0xd0, 0xac, 0xa7, 0x9f, 0xd7, 0xf2, 0x08, 0xe3, 0x7f, 0xf7,
+ 0x2e, 0x87, 0x32, 0xb6, 0x7a, 0x8d, 0x9e, 0x23, 0x85, 0x80, 0xe6, 0xfe,
+ 0xbd, 0x7c, 0x7f, 0xa4, 0x84, 0x94, 0xdb, 0x67, 0xd0, 0x00, 0x8f, 0xa4,
+ 0xf1, 0xf8, 0x0f, 0xf6, 0xa3, 0x55, 0x45, 0xb7, 0xd8, 0xda, 0x68, 0x61,
+ 0xb2, 0xce, 0x36, 0xb7, 0xf8, 0xa8, 0x55, 0x4d, 0xb6, 0x59, 0x4d, 0x55,
+ 0x8d, 0xcf, 0x7b, 0xf4, 0x1f, 0x70, 0x5d, 0xae, 0x0e, 0x05, 0x58, 0x58,
+ 0xc2, 0x9a, 0xe3, 0x71, 0xd6, 0xc7, 0xf7, 0x73, 0x8a, 0x4a, 0x79, 0x7c,
+ 0x7f, 0xa9, 0xb9, 0x77, 0x5c, 0x5d, 0x9a, 0xf6, 0xd3, 0x41, 0xd4, 0xb6,
+ 0xb3, 0xb9, 0xe7, 0xc8, 0x76, 0x0b, 0x46, 0xbc, 0x0c, 0x6e, 0x9c, 0xd7,
+ 0xd7, 0x4e, 0x23, 0x87, 0xa2, 0xdf, 0x65, 0x84, 0x87, 0x92, 0x40, 0x90,
+ 0x75, 0x33, 0xca, 0xdb, 0x6b, 0x88, 0x8d, 0x7c, 0xb5, 0xf1, 0x08, 0x19,
+ 0xed, 0x75, 0x98, 0xd6, 0xbd, 0x9f, 0x4c, 0x56, 0xf6, 0xfe, 0x05, 0x25,
+ 0x3c, 0x86, 0x13, 0xeb, 0xb4, 0x1f, 0x5d, 0xc4, 0xda, 0xf9, 0x71, 0x7f,
+ 0x8b, 0x8e, 0xba, 0xad, 0x02, 0xd2, 0xda, 0xd9, 0x16, 0x39, 0xcc, 0xb0,
+ 0x4b, 0x98, 0xc9, 0x60, 0x6f, 0xce, 0x75, 0x59, 0x38, 0x70, 0x36, 0xcf,
+ 0x81, 0xfc, 0x8a, 0xd6, 0x45, 0xae, 0xa7, 0xa7, 0xda, 0xf0, 0x40, 0x86,
+ 0x98, 0x91, 0x3a, 0xf2, 0x92, 0x9c, 0xfe, 0xb1, 0x40, 0xc7, 0xb0, 0x5c,
+ 0xc6, 0xb9, 0x8d, 0x76, 0x8f, 0x0e, 0x32, 0x5c, 0x7c, 0x65, 0x64, 0xbd,
+ 0xae, 0xb8, 0x9d, 0xfa, 0x4e, 0x80, 0x76, 0x5a, 0x43, 0x27, 0x6f, 0x4f,
+ 0x2d, 0xc8, 0xb8, 0x5d, 0x63, 0xfd, 0x8c, 0xa8, 0x81, 0x23, 0xf9, 0x41,
+ 0x02, 0x9a, 0x77, 0x90, 0xd8, 0xfb, 0x92, 0x53, 0xa1, 0xf5, 0x46, 0x8a,
+ 0xdd, 0x7e, 0x5e, 0x0d, 0xcd, 0x9a, 0xdc, 0xda, 0xed, 0xab, 0xc5, 0x8e,
+ 0x92, 0xd2, 0x5a, 0xba, 0x4c, 0xbe, 0x81, 0x87, 0xd4, 0x31, 0xdd, 0x4e,
+ 0x7b, 0x7f, 0x48, 0xc1, 0xfa, 0x1c, 0x96, 0x8f, 0xd2, 0x37, 0xca, 0x7b,
+ 0xfc, 0x0a, 0xc1, 0xe8, 0x81, 0xd4, 0xf5, 0x5a, 0x23, 0xfc, 0x23, 0x5c,
+ 0xcd, 0x7c, 0x86, 0xf1, 0xf9, 0x17, 0x66, 0xeb, 0xea, 0x90, 0xc2, 0x4b,
+ 0x9d, 0x3a, 0x00, 0x27, 0x5f, 0x3e, 0xc9, 0x29, 0xe4, 0xd9, 0xf5, 0x1f,
+ 0x27, 0x0f, 0x28, 0xdb, 0x89, 0x73, 0x6f, 0x68, 0x69, 0x1b, 0x5e, 0x3d,
+ 0x37, 0x49, 0xfb, 0xc2, 0x06, 0x40, 0xc9, 0xc3, 0xb4, 0xd7, 0x91, 0x51,
+ 0xa5, 0xf0, 0x47, 0xbb, 0xb8, 0x3d, 0xc7, 0x88, 0x5d, 0xdb, 0x09, 0x2d,
+ 0x73, 0x88, 0x82, 0x40, 0x31, 0xe0, 0xaa, 0xf5, 0x8e, 0x98, 0xce, 0xa7,
+ 0x81, 0x65, 0x11, 0xfa, 0x66, 0x89, 0xa5, 0xfd, 0xc3, 0x87, 0x6f, 0x81,
+ 0xe0, 0xa4, 0xa7, 0x89, 0x19, 0x2d, 0x6b, 0x25, 0xa3, 0x52, 0x44, 0x9f,
+ 0x25, 0x5b, 0x31, 0x9f, 0x6a, 0xbd, 0xae, 0xd0, 0xb4, 0x36, 0x3d, 0xdc,
+ 0xaa, 0xed, 0xba, 0xc6, 0xd9, 0xb4, 0x8e, 0x5d, 0x0e, 0x07, 0xb1, 0x1d,
+ 0x91, 0x6a, 0xea, 0x38, 0xad, 0xb0, 0x50, 0xe9, 0xf5, 0x4b, 0xa2, 0x03,
+ 0x49, 0x49, 0x4b, 0x0e, 0x9f, 0x51, 0x80, 0xe6, 0xb4, 0xcf, 0xc1, 0x26,
+ 0xf4, 0xec, 0x66, 0x98, 0x35, 0x07, 0x77, 0x82, 0x3f, 0xb9, 0x5a, 0xfb,
+ 0x55, 0x44, 0xed, 0x0d, 0x76, 0xef, 0x0d, 0xa6, 0x54, 0x5d, 0x99, 0x88,
+ 0xd7, 0x43, 0x9e, 0x03, 0x86, 0x8e, 0x06, 0x46, 0xbe, 0x7a, 0x24, 0xa6,
+ 0x75, 0xd2, 0xca, 0xa9, 0x2d, 0xaa, 0xaf, 0x4d, 0xa4, 0x3a, 0x79, 0xd7,
+ 0x4f, 0x35, 0x49, 0xb5, 0x1f, 0x4d, 0xc2, 0x64, 0x38, 0x92, 0x3c, 0x82,
+ 0xd2, 0x63, 0xdb, 0x60, 0x6f, 0xa4, 0xe0, 0xe6, 0xc3, 0xa6, 0x3b, 0x2a,
+ 0x75, 0x30, 0xfa, 0x6e, 0x07, 0x4d, 0xa4, 0x8f, 0xc5, 0x25, 0x39, 0x76,
+ 0xb0, 0x31, 0xda, 0x0e, 0xe3, 0xf2, 0xad, 0xac, 0x16, 0x1f, 0xb5, 0x8d,
+ 0x75, 0xf5, 0x59, 0xaf, 0xcd, 0x65, 0xe5, 0x32, 0x1e, 0x07, 0x6d, 0x0c,
+ 0xfc, 0xd6, 0xdd, 0x35, 0xfa, 0x79, 0x95, 0x6d, 0xfd, 0xe6, 0x93, 0xf7,
+ 0xa4, 0xa7, 0xa8, 0x04, 0x8c, 0x7a, 0xf5, 0xfd, 0xef, 0xca, 0x8a, 0x1b,
+ 0x35, 0x47, 0x98, 0x3a, 0x7c, 0x54, 0x1b, 0xfc, 0xd5, 0x22, 0x3b, 0x19,
+ 0xf9, 0x95, 0x2a, 0x60, 0xb6, 0xd0, 0x20, 0x96, 0xf0, 0x7c, 0xa5, 0x25,
+ 0x2d, 0x90, 0xf1, 0x55, 0x7f, 0x15, 0xc4, 0xf5, 0xb9, 0x77, 0x50, 0xbd,
+ 0xf1, 0xf4, 0x9c, 0x0f, 0xfd, 0x10, 0xbb, 0x7b, 0xa0, 0x83, 0x33, 0x3a,
+ 0xc4, 0x7c, 0xd7, 0x1b, 0xd5, 0xd9, 0xfa, 0xe5, 0xfa, 0x6a, 0x08, 0xff,
+ 0x00, 0xa9, 0x09, 0x29, 0xa3, 0xd3, 0x5b, 0xbb, 0x38, 0xb7, 0xc5, 0xa4,
+ 0xad, 0x9d, 0x9e, 0xdd, 0xb1, 0xdd, 0x64, 0xf4, 0xa0, 0x7f, 0x69, 0x8f,
+ 0x36, 0x39, 0x6f, 0xfa, 0x67, 0x8e, 0xe9, 0x29, 0x1b, 0x9f, 0x00, 0x99,
+ 0xe7, 0x40, 0x85, 0x2d, 0x73, 0x00, 0x98, 0x06, 0x63, 0xef, 0x52, 0x68,
+ 0x24, 0x35, 0xa7, 0x53, 0x1a, 0x91, 0xe2, 0xa1, 0x6d, 0x7b, 0x6b, 0x10,
+ 0x38, 0x0e, 0x49, 0x4c, 0x69, 0xb0, 0x36, 0x8b, 0x58, 0x79, 0x04, 0x88,
+ 0x3e, 0x48, 0xbd, 0x2a, 0xed, 0xf4, 0xea, 0x65, 0xc0, 0x41, 0xf9, 0x15,
+ 0x92, 0xeb, 0x1e, 0x6c, 0x76, 0xb0, 0x0b, 0x8a, 0xb3, 0xd2, 0xdf, 0xe9,
+ 0xe5, 0x10, 0x0c, 0xb5, 0xed, 0xd7, 0xfb, 0xd2, 0x53, 0xa7, 0x69, 0xda,
+ 0x1c, 0x46, 0x93, 0x1f, 0xc5, 0x09, 0xef, 0x6b, 0xf0, 0xee, 0x67, 0xe7,
+ 0x1f, 0x7f, 0xc9, 0xb0, 0x3f, 0x8a, 0x9e, 0x4f, 0x0e, 0x23, 0xc3, 0x85,
+ 0x4a, 0xc7, 0x6d, 0x63, 0xff, 0x00, 0x95, 0x5b, 0xbf, 0x02, 0x92, 0x90,
+ 0x55, 0x21, 0xa4, 0x8e, 0x00, 0x28, 0xf6, 0x3d, 0xcf, 0x68, 0x71, 0xf0,
+ 0x40, 0xc7, 0x20, 0xd4, 0xf8, 0xe6, 0x38, 0x47, 0x70, 0x86, 0xed, 0x27,
+ 0x50, 0xd6, 0x90, 0x92, 0x99, 0x35, 0xe0, 0x56, 0x24, 0xfc, 0x65, 0x26,
+ 0x1f, 0xd7, 0x68, 0x77, 0xf2, 0x81, 0x4c, 0xd6, 0xb1, 0xe1, 0x8c, 0xb5,
+ 0xa0, 0xd6, 0xe3, 0x0f, 0x07, 0xc0, 0x98, 0x55, 0xb1, 0xaa, 0x34, 0x75,
+ 0x0f, 0x40, 0xbb, 0xd8, 0xcb, 0x20, 0x49, 0xe2, 0x12, 0x53, 0xb9, 0x69,
+ 0x0f, 0x2e, 0x79, 0x3f, 0x43, 0x8f, 0x99, 0x58, 0x0e, 0xfe, 0x99, 0x7f,
+ 0xf5, 0xce, 0xab, 0x53, 0x22, 0xc7, 0xb6, 0xbb, 0x00, 0x9f, 0x76, 0x87,
+ 0xe4, 0x25, 0x64, 0xd5, 0x06, 0xe7, 0x9f, 0x17, 0x12, 0x92, 0x9d, 0xef,
+ 0xab, 0x8d, 0x0f, 0xea, 0x5e, 0xa3, 0x86, 0x95, 0xd6, 0x40, 0xf2, 0x2e,
+ 0x3f, 0xed, 0x5d, 0x60, 0x71, 0x6f, 0x3c, 0x78, 0xf8, 0x2e, 0x5f, 0xea,
+ 0xdb, 0x00, 0x37, 0xbc, 0x73, 0x2d, 0x1f, 0x70, 0x5d, 0x2b, 0x5e, 0x1e,
+ 0xdf, 0x1f, 0x14, 0x94, 0xb1, 0x1e, 0xf7, 0x37, 0xcc, 0x39, 0xbe, 0x68,
+ 0x37, 0x3c, 0x37, 0x1a, 0xf7, 0x38, 0xe8, 0xd6, 0x38, 0x13, 0xf2, 0xd1,
+ 0x1d, 0xdd, 0x88, 0xd1, 0xcd, 0xe2, 0x56, 0x4f, 0x5f, 0xbb, 0xec, 0xfd,
+ 0x3e, 0xf6, 0xb7, 0x4f, 0x59, 0xa1, 0xa3, 0xe2, 0x4c, 0x14, 0x94, 0xf3,
+ 0x7d, 0x3e, 0xbf, 0x50, 0x69, 0xd8, 0x05, 0x6b, 0x23, 0x0c, 0xe6, 0x32,
+ 0xcc, 0x42, 0xe3, 0x5b, 0x5d, 0x59, 0xfd, 0x20, 0x1a, 0x35, 0xc7, 0xe8,
+ 0xee, 0xf2, 0x9e, 0x55, 0x7c, 0x1b, 0x1d, 0x45, 0x5a, 0x05, 0xbb, 0xd1,
+ 0x9a, 0xd7, 0xb2, 0xc3, 0x60, 0x91, 0x69, 0x2d, 0x83, 0xdc, 0x34, 0x0d,
+ 0x3f, 0x14, 0x94, 0xf1, 0xd5, 0xe0, 0x91, 0x38, 0xf9, 0x6c, 0x2d, 0xb6,
+ 0xb3, 0xc1, 0xe5, 0xae, 0x0a, 0xe5, 0x6d, 0x86, 0x10, 0xd8, 0xf3, 0x2b,
+ 0x67, 0xad, 0xf4, 0xd7, 0x82, 0x2f, 0x66, 0xaf, 0xac, 0x43, 0x8f, 0x77,
+ 0x56, 0x38, 0x71, 0xf3, 0x6f, 0x07, 0xc9, 0x63, 0x93, 0xb1, 0x85, 0xc4,
+ 0xe8, 0x35, 0x49, 0x4d, 0xff, 0x00, 0xab, 0x98, 0x26, 0xdc, 0xb6, 0xda,
+ 0xe2, 0x5d, 0x56, 0x13, 0x4c, 0x39, 0xdd, 0xec, 0x78, 0x81, 0xf7, 0x09,
+ 0x5d, 0x81, 0x6b, 0x36, 0x0d, 0xa2, 0x16, 0x47, 0xd5, 0xdc, 0x67, 0x63,
+ 0x74, 0x7c, 0x7f, 0x53, 0xf9, 0xeb, 0xc7, 0xad, 0x61, 0xf3, 0x7e, 0xa0,
+ 0x7c, 0x9b, 0x0b, 0x55, 0x8f, 0x06, 0x5a, 0x74, 0x0d, 0xf6, 0xea, 0x92,
+ 0x99, 0x49, 0xda, 0x4c, 0xf6, 0x82, 0x8b, 0xbc, 0xb6, 0xb9, 0xe0, 0x93,
+ 0xa7, 0xcc, 0xa0, 0x13, 0x0d, 0x27, 0xf3, 0x63, 0x5f, 0x92, 0x42, 0xcf,
+ 0x51, 0xc0, 0x76, 0x68, 0xdd, 0xf3, 0x49, 0x4f, 0x27, 0xf5, 0xb3, 0xa7,
+ 0x32, 0x8c, 0xaa, 0xf3, 0xeb, 0x00, 0x33, 0x20, 0x1d, 0xe0, 0x7f, 0xa4,
+ 0x6f, 0x7f, 0x98, 0x5c, 0xc3, 0x7f, 0xa7, 0xe3, 0xb8, 0x77, 0x78, 0x5d,
+ 0xd7, 0xd6, 0xca, 0x85, 0x9d, 0x15, 0x8f, 0xfc, 0xea, 0xec, 0x07, 0xe4,
+ 0xef, 0x63, 0xbf, 0x2a, 0xe1, 0x5c, 0x36, 0xe7, 0xe3, 0x8e, 0x3f, 0x48,
+ 0x3f, 0x2a, 0x4a, 0x76, 0x28, 0x93, 0x93, 0x33, 0xc2, 0xad, 0xd4, 0x9e,
+ 0xd6, 0x3d, 0xf0, 0x01, 0x25, 0xd2, 0x67, 0xba, 0xb3, 0x8e, 0x26, 0xe7,
+ 0x90, 0x74, 0x0e, 0x8f, 0xb9, 0x51, 0xea, 0x8c, 0x3e, 0xa9, 0x77, 0x00,
+ 0x92, 0x92, 0x9b, 0x78, 0x59, 0xcd, 0xb2, 0xdd, 0x81, 0xa1, 0xb3, 0x04,
+ 0x7c, 0x0c, 0x23, 0xdb, 0x53, 0x6b, 0xdc, 0x00, 0x26, 0x5c, 0x5d, 0x3f,
+ 0xd6, 0x2b, 0x17, 0x0d, 0xbb, 0xad, 0x68, 0x76, 0xa0, 0x1d, 0x63, 0x98,
+ 0x2b, 0x76, 0xca, 0x9c, 0xd0, 0x1a, 0x4c, 0x90, 0x22, 0x7c, 0x63, 0xbf,
+ 0xdc, 0x92, 0x9c, 0x6c, 0xa6, 0x92, 0xe0, 0x07, 0x77, 0x0f, 0xca, 0xb7,
+ 0x05, 0xd5, 0xbf, 0xa8, 0x56, 0xd6, 0x9f, 0xa2, 0xf0, 0xd2, 0xb2, 0xb2,
+ 0x9b, 0x06, 0x7f, 0x74, 0x8f, 0xca, 0xaf, 0xe1, 0x56, 0x06, 0x65, 0x56,
+ 0x4c, 0x97, 0x38, 0x12, 0x3c, 0xe7, 0xfd, 0xa9, 0x29, 0xea, 0x89, 0xfd,
+ 0x0d, 0x5d, 0xb4, 0x3f, 0x95, 0x3d, 0x51, 0x2f, 0xf3, 0x1c, 0x28, 0xc8,
+ 0x15, 0x55, 0xf0, 0x3f, 0x95, 0x3d, 0x5f, 0x48, 0x80, 0x22, 0x5a, 0x52,
+ 0x52, 0x6b, 0x08, 0x76, 0xa3, 0x4f, 0x35, 0xc7, 0x75, 0x7f, 0x6e, 0x6e,
+ 0x40, 0x76, 0xa4, 0x11, 0xff, 0x00, 0x52, 0x17, 0x62, 0x07, 0xb4, 0x77,
+ 0x91, 0xc2, 0xe3, 0xba, 0xec, 0x8e, 0xa5, 0x90, 0x3f, 0xab, 0xff, 0x00,
+ 0x52, 0xd4, 0x94, 0xd0, 0xe9, 0x24, 0x7e, 0xd5, 0x61, 0xfe, 0x4b, 0xbf,
+ 0x22, 0xe8, 0xb7, 0x69, 0x3d, 0xa5, 0x73, 0x9d, 0x38, 0x47, 0x53, 0xaf,
+ 0xfa, 0xae, 0xfc, 0x8b, 0x77, 0x77, 0xb2, 0x3b, 0xff, 0x00, 0xb1, 0x25,
+ 0x33, 0xda, 0x08, 0x3f, 0x95, 0x33, 0x86, 0x9e, 0xfe, 0x48, 0x81, 0x3e,
+ 0x6a, 0x43, 0xdc, 0x08, 0xf1, 0x98, 0x43, 0x70, 0x2e, 0xf6, 0xc4, 0x41,
+ 0x09, 0x29, 0xe7, 0xf2, 0x9f, 0xee, 0xb0, 0x8d, 0x36, 0x3c, 0xfe, 0x58,
+ 0x50, 0xc5, 0xce, 0xb6, 0x8b, 0x03, 0xb6, 0xf9, 0xfc, 0x91, 0x5f, 0x59,
+ 0x36, 0xdf, 0x5b, 0x86, 0x8e, 0x73, 0x8c, 0xf6, 0x99, 0x41, 0xb4, 0xd4,
+ 0x5c, 0x41, 0x06, 0x00, 0xd0, 0x77, 0x90, 0x92, 0x9e, 0x80, 0xdc, 0xcb,
+ 0xaa, 0x16, 0x34, 0xc8, 0x73, 0x41, 0x0a, 0xb5, 0x80, 0xfa, 0x6f, 0x71,
+ 0x1a, 0x6c, 0x70, 0xfc, 0x42, 0x86, 0x08, 0xdb, 0x4b, 0xd8, 0x4f, 0x11,
+ 0x1e, 0x52, 0x25, 0x19, 0xc7, 0xf5, 0x4b, 0x41, 0xfd, 0xef, 0xca, 0x12,
+ 0x53, 0x5f, 0x09, 0x92, 0xd7, 0x01, 0xa1, 0x23, 0x55, 0x62, 0xe6, 0x6d,
+ 0xf7, 0xf3, 0x02, 0x15, 0x6c, 0x5d, 0xcd, 0x69, 0x3e, 0x5f, 0xdc, 0xac,
+ 0xdd, 0xb8, 0xb0, 0x0e, 0xc6, 0x25, 0x25, 0x30, 0x0e, 0x06, 0x98, 0x3e,
+ 0x1f, 0xc6, 0x55, 0x5e, 0xb3, 0x59, 0xf5, 0x1e, 0xf1, 0xf9, 0xec, 0x6b,
+ 0xc1, 0xf9, 0x05, 0x77, 0xd3, 0x69, 0xac, 0x7f, 0x54, 0xa0, 0xf5, 0x00,
+ 0xd7, 0xd5, 0x8e, 0x5d, 0xc3, 0x99, 0xb1, 0xc7, 0xe0, 0x7f, 0xda, 0x92,
+ 0x9c, 0xda, 0xb2, 0x2e, 0x6b, 0x44, 0x3c, 0xc7, 0x71, 0x28, 0xb5, 0x5b,
+ 0x0e, 0x73, 0xb4, 0x74, 0xea, 0x55, 0xb7, 0x74, 0x76, 0x32, 0xb0, 0x5a,
+ 0xfd, 0xd3, 0x31, 0xc8, 0x30, 0x04, 0xf9, 0xaa, 0x6d, 0xa9, 0xbb, 0x9c,
+ 0x1a, 0x1c, 0x08, 0xe6, 0x60, 0xff, 0x00, 0x10, 0x92, 0x9e, 0x93, 0xea,
+ 0xcd, 0xdb, 0xdb, 0x71, 0x88, 0x01, 0xcd, 0x3f, 0x7c, 0xae, 0x91, 0xa0,
+ 0x03, 0xaf, 0x1d, 0x88, 0x5c, 0xbf, 0xd5, 0x79, 0x65, 0x97, 0xd4, 0xe0,
+ 0x64, 0x86, 0xbb, 0x8e, 0xc0, 0x96, 0xae, 0xa2, 0xb9, 0x02, 0x0e, 0xa3,
+ 0xb2, 0x4a, 0x49, 0xdb, 0x5d, 0x42, 0xe6, 0x7e, 0xb5, 0xd8, 0x0b, 0xb1,
+ 0xf1, 0xdb, 0xf4, 0x9e, 0x4b, 0xdc, 0x7c, 0x9b, 0xed, 0x5d, 0x46, 0x80,
+ 0x1f, 0x25, 0xc5, 0xf5, 0x8b, 0xfe, 0xd7, 0xd6, 0xac, 0x0d, 0xd5, 0x94,
+ 0x01, 0x5c, 0xf9, 0x8d, 0x5d, 0xf8, 0xa4, 0xa4, 0x55, 0xb2, 0x04, 0x79,
+ 0x2e, 0x8b, 0xa0, 0xb1, 0xae, 0xe9, 0x8f, 0xdd, 0xac, 0x5a, 0xe2, 0x3c,
+ 0xb4, 0x6a, 0xc1, 0x8d, 0x7c, 0x16, 0xcf, 0x43, 0xca, 0xae, 0xac, 0x3b,
+ 0x18, 0xf7, 0x00, 0x7d, 0x42, 0x40, 0xf8, 0x80, 0x92, 0x9b, 0x79, 0x24,
+ 0x35, 0xb0, 0xff, 0x00, 0x75, 0x7e, 0x3c, 0xc4, 0xfe, 0x50, 0xb9, 0x2c,
+ 0xee, 0x9d, 0x91, 0xf6, 0xd1, 0x8f, 0x53, 0x4b, 0xb1, 0x6d, 0x73, 0x08,
+ 0xb0, 0x7d, 0x10, 0xc7, 0x38, 0x02, 0x27, 0xc9, 0x75, 0x4f, 0xc9, 0xad,
+ 0xc4, 0xb1, 0x9e, 0xe6, 0x9f, 0xcd, 0xe2, 0x3c, 0x95, 0x5b, 0xb1, 0x1e,
+ 0xdd, 0xbb, 0x6d, 0xda, 0xd6, 0xbc, 0x58, 0x5b, 0x12, 0x60, 0x19, 0xda,
+ 0x3e, 0x29, 0x29, 0xd1, 0xfa, 0x44, 0x35, 0xa7, 0x65, 0x6c, 0xd0, 0x01,
+ 0xe0, 0x14, 0xcb, 0xab, 0x0c, 0x21, 0xd0, 0x1a, 0x35, 0x92, 0xaa, 0xd4,
+ 0xf6, 0x44, 0x6e, 0x98, 0xe4, 0x95, 0x2d, 0xed, 0x9f, 0x16, 0x77, 0xee,
+ 0x12, 0x53, 0x77, 0x96, 0x90, 0x38, 0x20, 0xa1, 0x62, 0x02, 0x29, 0x05,
+ 0xda, 0x39, 0xc0, 0x13, 0xf2, 0xd0, 0x28, 0xe3, 0x65, 0x57, 0x79, 0x22,
+ 0xb9, 0xf6, 0xf2, 0x08, 0x84, 0x4a, 0x5c, 0x0c, 0x01, 0xf4, 0x5a, 0x12,
+ 0x53, 0x5b, 0xad, 0x62, 0x3b, 0x37, 0xa6, 0xe4, 0x63, 0x33, 0xe9, 0x06,
+ 0x07, 0x30, 0x78, 0xb9, 0xa7, 0x7c, 0x7e, 0x0b, 0xce, 0x2e, 0x71, 0x3d,
+ 0x42, 0x83, 0xe0, 0xf6, 0xaf, 0x57, 0xac, 0x72, 0x7b, 0x93, 0x25, 0x79,
+ 0xa7, 0xd6, 0x0c, 0x13, 0x85, 0xf5, 0x91, 0xf5, 0x37, 0x46, 0x3a, 0xc6,
+ 0xd9, 0x57, 0xf5, 0x6c, 0xf7, 0x47, 0xc8, 0xe8, 0x92, 0x9b, 0xb8, 0x84,
+ 0x00, 0x4f, 0x89, 0x24, 0xfe, 0x28, 0x59, 0x80, 0x58, 0xe7, 0xc8, 0x27,
+ 0x6b, 0xb5, 0xfb, 0x91, 0xb1, 0xe3, 0x60, 0xed, 0xa9, 0x9f, 0xb9, 0x3b,
+ 0xc4, 0xbd, 0xc0, 0x76, 0x70, 0x27, 0xe7, 0x01, 0x25, 0x39, 0xfd, 0x3a,
+ 0x90, 0xcb, 0xb7, 0x11, 0x33, 0x2b, 0x5d, 0xff, 0x00, 0x44, 0x13, 0xf4,
+ 0x88, 0x93, 0xf3, 0x42, 0xc6, 0x60, 0x63, 0x1a, 0xd2, 0xd9, 0x7b, 0xbd,
+ 0xad, 0xf8, 0x9f, 0x6a, 0xb3, 0x63, 0x3d, 0xef, 0x8f, 0xa2, 0xd8, 0x1f,
+ 0x77, 0xfb, 0x92, 0x53, 0x97, 0x9a, 0xd6, 0xee, 0xe7, 0x49, 0xd4, 0x2b,
+ 0x98, 0x95, 0x9a, 0xb3, 0xab, 0x24, 0xe9, 0x6c, 0x58, 0xdf, 0x2e, 0x74,
+ 0x55, 0x73, 0x87, 0xbf, 0x67, 0xef, 0x77, 0x56, 0xf1, 0xd8, 0xf1, 0x9b,
+ 0x59, 0x78, 0x80, 0xe7, 0x82, 0xcf, 0x81, 0xd3, 0xf8, 0x24, 0xa7, 0xa5,
+ 0x71, 0x69, 0xa2, 0xbe, 0xf0, 0x0f, 0xe5, 0x4f, 0x53, 0xeb, 0x0e, 0x0e,
+ 0x1e, 0x04, 0x14, 0x8b, 0x40, 0xc7, 0xa8, 0x77, 0x33, 0xc2, 0x7a, 0x40,
+ 0x36, 0x36, 0x39, 0x03, 0x9e, 0xe9, 0x29, 0x21, 0x32, 0xd6, 0x91, 0xcc,
+ 0x69, 0xf8, 0x2e, 0x4b, 0xaf, 0x09, 0xea, 0x59, 0x07, 0xbc, 0xb7, 0xfe,
+ 0xa5, 0xab, 0xad, 0x0e, 0x21, 0xac, 0x9d, 0x07, 0xfb, 0x97, 0x29, 0xd7,
+ 0xa3, 0xf6, 0x95, 0xff, 0x00, 0xd9, 0xd7, 0xfb, 0x21, 0x25, 0x39, 0x98,
+ 0x53, 0xf6, 0xf6, 0x3b, 0xc8, 0xad, 0xa8, 0xf6, 0x79, 0xff, 0x00, 0xb1,
+ 0x62, 0xe1, 0x7f, 0x4d, 0x6f, 0xdc, 0xb7, 0x3f, 0x32, 0x12, 0x53, 0x21,
+ 0xc4, 0xf7, 0x12, 0xa1, 0x2e, 0x69, 0x6c, 0xf2, 0x35, 0x3f, 0x05, 0x27,
+ 0x12, 0x2b, 0xf0, 0x80, 0x87, 0x6b, 0x9c, 0x76, 0xc9, 0xd0, 0x98, 0x29,
+ 0x29, 0xab, 0x93, 0x8c, 0x5d, 0x56, 0xf6, 0xf0, 0x1c, 0x66, 0x3c, 0x09,
+ 0x54, 0xbf, 0x67, 0x5f, 0x6b, 0x83, 0x80, 0x86, 0xfd, 0xeb, 0x75, 0x8c,
+ 0x6b, 0xb1, 0x86, 0x92, 0x0e, 0xa8, 0x95, 0x52, 0xd1, 0x5c, 0x8e, 0x40,
+ 0x94, 0x94, 0xe6, 0xd7, 0x8d, 0xe9, 0x31, 0xad, 0x92, 0x4e, 0xe0, 0x4f,
+ 0xdc, 0x50, 0x6c, 0xfc, 0x08, 0xd4, 0x79, 0xad, 0x1b, 0x41, 0x9d, 0x74,
+ 0xd4, 0x7e, 0x45, 0x50, 0x34, 0x07, 0x99, 0xd7, 0x70, 0x80, 0x92, 0x98,
+ 0xe3, 0x8e, 0xdc, 0x05, 0x66, 0xe6, 0xe9, 0x20, 0x69, 0xa0, 0x42, 0xa9,
+ 0x84, 0x47, 0x99, 0x84, 0x7b, 0x24, 0xdb, 0xb7, 0xb4, 0x71, 0xf0, 0x49,
+ 0x48, 0xa0, 0xfa, 0x62, 0x3c, 0x15, 0x6c, 0xe6, 0xce, 0x33, 0x47, 0x76,
+ 0x38, 0x8f, 0xbc, 0x7f, 0xb1, 0x5e, 0x2d, 0xda, 0xd0, 0x15, 0x5c, 0xad,
+ 0x1b, 0x63, 0x63, 0x82, 0xd7, 0x1f, 0x9e, 0x89, 0x29, 0xb5, 0x59, 0x16,
+ 0x62, 0x54, 0xe8, 0xe4, 0x73, 0xf2, 0x59, 0x4c, 0x11, 0x63, 0x87, 0x99,
+ 0x93, 0xf3, 0x56, 0xf1, 0x7a, 0x96, 0x23, 0x31, 0x1b, 0x8e, 0xfb, 0x36,
+ 0xda, 0xc9, 0x04, 0x10, 0x7c, 0x74, 0xd6, 0x3c, 0x15, 0x26, 0xdb, 0x5f,
+ 0xaa, 0xf3, 0x30, 0xd2, 0x49, 0x1d, 0xbe, 0x09, 0x29, 0xdf, 0xfa, 0xb6,
+ 0x37, 0x66, 0x59, 0xff, 0x00, 0x12, 0x3f, 0x17, 0x4a, 0xe9, 0xaa, 0x1d,
+ 0x97, 0x35, 0xf5, 0x72, 0xc6, 0x0c, 0xf7, 0x37, 0x73, 0x76, 0xba, 0xbd,
+ 0xad, 0xd7, 0x9d, 0xb1, 0xc2, 0xea, 0x98, 0xd0, 0x75, 0x6e, 0xbe, 0x49,
+ 0x29, 0xa9, 0xd5, 0xf3, 0x46, 0x06, 0x05, 0x97, 0xfe, 0x7c, 0x6d, 0xa8,
+ 0x78, 0xbd, 0xda, 0x37, 0xfb, 0xd7, 0x13, 0x8a, 0xd3, 0xea, 0x17, 0xb8,
+ 0xcb, 0x8e, 0xa4, 0xf7, 0x25, 0x5f, 0xeb, 0x7d, 0x49, 0x9d, 0x43, 0x30,
+ 0x32, 0x97, 0xef, 0xc6, 0xc7, 0x90, 0x1d, 0xf9, 0xae, 0xb2, 0x61, 0xce,
+ 0x6f, 0x90, 0xe0, 0x15, 0x4e, 0xbd, 0x35, 0xf1, 0x49, 0x4d, 0x91, 0xa9,
+ 0x2a, 0xe7, 0x4c, 0xa9, 0xef, 0xf5, 0x36, 0x89, 0x01, 0xdc, 0xfc, 0x95,
+ 0x16, 0x92, 0x01, 0x57, 0x7a, 0x35, 0xaf, 0x66, 0x4b, 0xf5, 0xf6, 0x38,
+ 0x00, 0x47, 0x9a, 0x4a, 0x74, 0x1d, 0x8f, 0x5b, 0x4d, 0x64, 0xb4, 0x6a,
+ 0x4e, 0xe3, 0xf0, 0x08, 0x55, 0xd2, 0x24, 0xb9, 0xfe, 0xe6, 0xb8, 0xf3,
+ 0xdd, 0xbf, 0x05, 0x67, 0x21, 0xf1, 0xb5, 0xdf, 0x1f, 0xc5, 0x47, 0x11,
+ 0x85, 0xed, 0x70, 0xf0, 0x3a, 0x24, 0xa4, 0x66, 0xbb, 0x1a, 0x0c, 0x19,
+ 0x1d, 0x8f, 0x2a, 0x17, 0xd8, 0x69, 0xa5, 0xee, 0x7d, 0x87, 0xd8, 0x24,
+ 0x91, 0xe3, 0xd8, 0x2b, 0x36, 0x34, 0xb4, 0xed, 0x6c, 0xc3, 0xbb, 0xfc,
+ 0x16, 0x67, 0x51, 0x77, 0xb7, 0x60, 0x1e, 0x70, 0x7c, 0x92, 0x52, 0xfd,
+ 0x0a, 0xf2, 0xec, 0xbb, 0x1d, 0xbe, 0x03, 0xc9, 0x8a, 0xe7, 0x57, 0x11,
+ 0xc9, 0x5b, 0x74, 0x11, 0xb0, 0x01, 0xa4, 0xfd, 0xfa, 0xae, 0x57, 0x0c,
+ 0xd9, 0x45, 0x95, 0xd9, 0x58, 0x01, 0xcc, 0x71, 0x76, 0xe3, 0xdc, 0x1e,
+ 0x42, 0xe8, 0x70, 0xae, 0x04, 0x97, 0x3d, 0xc2, 0x5c, 0x4c, 0x49, 0xf1,
+ 0x29, 0x29, 0xd6, 0xac, 0x2e, 0x3f, 0xeb, 0xbd, 0x00, 0x75, 0x5e, 0x9b,
+ 0x78, 0x1a, 0xd9, 0xec, 0x27, 0xcd, 0x8e, 0x91, 0xff, 0x00, 0x54, 0xba,
+ 0xf6, 0x38, 0x80, 0x27, 0x45, 0xcb, 0x7d, 0x78, 0x6b, 0x9d, 0x67, 0x49,
+ 0x78, 0xd5, 0xa2, 0xe7, 0x82, 0x7c, 0xce, 0xd2, 0x07, 0xe0, 0x92, 0x9c,
+ 0xda, 0x18, 0x43, 0x4f, 0xc4, 0xfe, 0x44, 0xf7, 0x0d, 0xb6, 0x3b, 0xe4,
+ 0x53, 0xd4, 0xe8, 0x63, 0xbc, 0x49, 0x3f, 0x72, 0x8e, 0x53, 0xa5, 0xfa,
+ 0x1e, 0xc2, 0x12, 0x53, 0x76, 0x86, 0x56, 0x3d, 0xef, 0xfa, 0x4c, 0xf7,
+ 0x37, 0xe6, 0x94, 0x12, 0x5d, 0x3c, 0xcc, 0x28, 0x35, 0xb6, 0x59, 0xb0,
+ 0xb0, 0x7b, 0x49, 0x2d, 0x79, 0xf0, 0x83, 0x28, 0xcf, 0xd4, 0xf3, 0xc9,
+ 0x27, 0xf1, 0x49, 0x4e, 0x4e, 0x7e, 0x96, 0xb7, 0xcb, 0x5f, 0xc8, 0xad,
+ 0x57, 0x2f, 0xcc, 0xa8, 0x83, 0xa3, 0x5e, 0xdf, 0xc1, 0xba, 0xaa, 0x99,
+ 0xdf, 0xce, 0x1d, 0x66, 0x00, 0xfc, 0xa1, 0x5b, 0xc6, 0x83, 0x95, 0x5f,
+ 0x9d, 0x93, 0xf7, 0x24, 0xa7, 0xa5, 0x7b, 0x67, 0x1a, 0xa7, 0x01, 0xac,
+ 0x4c, 0x26, 0xa4, 0xcd, 0x9a, 0xe9, 0xa6, 0xa8, 0x8d, 0xf7, 0xd0, 0xc0,
+ 0x39, 0x0d, 0x3f, 0x91, 0x46, 0xa6, 0xc1, 0x74, 0xf2, 0x06, 0x9f, 0x39,
+ 0x49, 0x4c, 0xab, 0x73, 0x9c, 0x3d, 0xec, 0xdb, 0x07, 0x4f, 0x3e, 0x17,
+ 0x2b, 0xd7, 0x34, 0xcf, 0xc8, 0x1d, 0xc3, 0x9b, 0xff, 0x00, 0x52, 0x17,
+ 0x58, 0x1a, 0x63, 0x43, 0x3c, 0x68, 0x7e, 0x4b, 0x91, 0xeb, 0xa1, 0xcd,
+ 0xcf, 0xc8, 0x1d, 0xf7, 0x37, 0x5f, 0xec, 0x84, 0x94, 0xd0, 0xc2, 0x3f,
+ 0xac, 0xb5, 0xc3, 0x59, 0x2b, 0x66, 0x04, 0x73, 0xdb, 0xf8, 0xac, 0x4c,
+ 0x0f, 0xe7, 0x5b, 0xe3, 0x21, 0x6c, 0x4f, 0x7f, 0x97, 0xe2, 0x92, 0x93,
+ 0x81, 0x2c, 0x83, 0xca, 0x19, 0x6c, 0xb7, 0x51, 0xa0, 0x33, 0x28, 0x80,
+ 0xb6, 0x48, 0xf1, 0x88, 0x50, 0xb4, 0xb1, 0xe4, 0x82, 0x74, 0x6e, 0x80,
+ 0x79, 0xa4, 0xa4, 0xb5, 0x00, 0x31, 0x84, 0x6b, 0xed, 0x47, 0xa8, 0x0d,
+ 0x91, 0xd8, 0x00, 0x81, 0x41, 0x27, 0x1d, 0xbd, 0x8e, 0xd8, 0xfc, 0x11,
+ 0x6a, 0x71, 0xdb, 0xaf, 0x3a, 0x24, 0xa4, 0x17, 0x89, 0x74, 0x0e, 0x34,
+ 0x54, 0x9e, 0x61, 0xcd, 0xd2, 0x62, 0x65, 0x5d, 0xbb, 0xe9, 0x3b, 0xe4,
+ 0xa8, 0xbe, 0x77, 0x40, 0xe0, 0xc8, 0x29, 0x29, 0x2f, 0xbb, 0x73, 0x74,
+ 0xd1, 0x4d, 0xcd, 0x8b, 0xbc, 0x22, 0x35, 0x44, 0x60, 0x25, 0x82, 0x34,
+ 0xf3, 0x4c, 0xff, 0x00, 0xe7, 0x5d, 0x22, 0x49, 0x1a, 0x14, 0x94, 0xbb,
+ 0xa0, 0x35, 0xa4, 0x2a, 0x59, 0xc4, 0x91, 0x60, 0x1d, 0xda, 0x09, 0xf9,
+ 0x15, 0x68, 0xb8, 0x96, 0x34, 0x77, 0x54, 0x6f, 0x76, 0xe7, 0xbc, 0x78,
+ 0xb4, 0x8f, 0xb8, 0x24, 0xa7, 0x21, 0xe2, 0xd3, 0x73, 0x8d, 0x75, 0xb9,
+ 0xdc, 0x12, 0x5a, 0xd2, 0x7f, 0x22, 0xb7, 0xd3, 0x6a, 0xc8, 0xcd, 0xc9,
+ 0x18, 0xe1, 0xdb, 0x00, 0x05, 0xd6, 0x12, 0xdd, 0x43, 0x47, 0xc4, 0x29,
+ 0xf4, 0xa2, 0x0d, 0xef, 0x0e, 0x24, 0x1e, 0xf0, 0xb7, 0xf0, 0x30, 0x9d,
+ 0x53, 0x2d, 0xb8, 0x82, 0x5d, 0x90, 0xe8, 0x68, 0xfe, 0x48, 0xe1, 0x25,
+ 0x32, 0xc7, 0xc5, 0xab, 0x01, 0xad, 0xb1, 0x84, 0x39, 0xcd, 0x74, 0xc9,
+ 0xe7, 0xe0, 0x15, 0x3e, 0xb9, 0xf5, 0x9e, 0xec, 0x9b, 0xdf, 0xd2, 0xb0,
+ 0x83, 0xa8, 0xc6, 0x04, 0xb2, 0xec, 0x81, 0xa3, 0xad, 0xf1, 0x6b, 0x0f,
+ 0x66, 0xf9, 0xf7, 0x57, 0x9f, 0x83, 0x65, 0xa3, 0x69, 0x02, 0x49, 0x04,
+ 0x89, 0x8d, 0xcd, 0xd6, 0x42, 0xa3, 0x9d, 0xd2, 0xee, 0xb1, 0xa4, 0x32,
+ 0xa7, 0x02, 0x0c, 0xb1, 0xd1, 0x30, 0x47, 0xc1, 0x25, 0x39, 0xb4, 0x06,
+ 0xb2, 0xb6, 0xb4, 0x08, 0x00, 0x40, 0x1f, 0x05, 0x61, 0xae, 0x11, 0xaa,
+ 0xcd, 0xf5, 0xed, 0xaa, 0xff, 0x00, 0x46, 0xfa, 0xdd, 0x53, 0xc7, 0x21,
+ 0xe0, 0xb7, 0xf2, 0xa3, 0xdb, 0x93, 0x58, 0x10, 0x0f, 0xc4, 0xa4, 0xa6,
+ 0xf6, 0xf0, 0x19, 0xca, 0xb1, 0xd3, 0xb2, 0x6a, 0x63, 0x5e, 0xf2, 0x49,
+ 0x76, 0xed, 0xa1, 0x8d, 0x12, 0xe2, 0x7c, 0x82, 0xc5, 0x6d, 0xee, 0xb1,
+ 0xc1, 0x8c, 0x32, 0x5d, 0xa0, 0x5a, 0x18, 0xc7, 0xa8, 0xd4, 0xdf, 0xd1,
+ 0x0a, 0xe4, 0x79, 0x6a, 0x7e, 0x25, 0x25, 0x3d, 0x0e, 0x3d, 0x79, 0x99,
+ 0x4f, 0xdf, 0x78, 0x14, 0x51, 0xfb, 0x93, 0x2f, 0x3f, 0x1e, 0xc1, 0x69,
+ 0x57, 0x5d, 0x40, 0x45, 0x66, 0x7c, 0x63, 0x85, 0xc9, 0x7e, 0xd9, 0xcf,
+ 0xad, 0xed, 0x66, 0x48, 0x63, 0x5a, 0x79, 0x20, 0x3a, 0x47, 0xca, 0x78,
+ 0xf8, 0x2d, 0x36, 0xf5, 0x8c, 0x0c, 0x4d, 0xb7, 0x5f, 0x9b, 0x5d, 0x65,
+ 0xe2, 0x5a, 0xc9, 0xfa, 0x43, 0xe0, 0x92, 0x9d, 0x8b, 0x9b, 0x0c, 0x71,
+ 0xef, 0xc8, 0xf9, 0x2c, 0x3b, 0xdb, 0xea, 0x38, 0xd8, 0x4e, 0xad, 0x71,
+ 0x8f, 0x98, 0x85, 0x71, 0xdd, 0x6b, 0xa7, 0xe4, 0x33, 0xf4, 0x19, 0x35,
+ 0xd8, 0xd7, 0x73, 0xb5, 0xc0, 0x91, 0xf1, 0x59, 0x19, 0x3d, 0x4a, 0xba,
+ 0xc6, 0xca, 0xc7, 0xaa, 0x5a, 0x4f, 0x1c, 0x7d, 0xe9, 0x29, 0x39, 0xbf,
+ 0x17, 0x0a, 0x93, 0x6e, 0x51, 0xd4, 0xce, 0xca, 0xdb, 0xab, 0x9d, 0xf0,
+ 0x0a, 0xd7, 0x45, 0xce, 0xc5, 0xc9, 0x70, 0xa8, 0xb9, 0xad, 0x2e, 0xfa,
+ 0x2c, 0x77, 0xb1, 0xc0, 0xf8, 0x09, 0xe5, 0x73, 0x2e, 0x36, 0x5d, 0x71,
+ 0xba, 0xe7, 0x6f, 0xb1, 0xdd, 0xfb, 0x01, 0xe0, 0x3c, 0x02, 0x77, 0x3d,
+ 0xac, 0x12, 0x4c, 0x42, 0x4a, 0x7d, 0x1d, 0xbb, 0x5b, 0xed, 0x3f, 0x08,
+ 0x2b, 0x97, 0xfa, 0xeb, 0x9b, 0x48, 0x38, 0x38, 0x4d, 0x13, 0x71, 0xb4,
+ 0x5c, 0x7f, 0x92, 0xd6, 0xcb, 0x47, 0xde, 0x4a, 0x37, 0xd5, 0xee, 0xb3,
+ 0x93, 0x91, 0x8e, 0xea, 0xf2, 0x81, 0x7d, 0x4d, 0xfe, 0x63, 0x24, 0xfe,
+ 0x74, 0x18, 0x2d, 0x3e, 0x31, 0xe2, 0xb9, 0xbf, 0xac, 0x59, 0x2f, 0xc8,
+ 0xeb, 0xa6, 0xd7, 0x34, 0xb5, 0xad, 0x73, 0x59, 0x5c, 0xf7, 0x6b, 0x0f,
+ 0x3f, 0x3e, 0x52, 0x53, 0x63, 0x19, 0xdb, 0x9a, 0xe2, 0x7e, 0x5f, 0x82,
+ 0x8e, 0x5b, 0xda, 0x1e, 0x63, 0x96, 0xb5, 0x45, 0x84, 0x8a, 0x5e, 0x1b,
+ 0xa3, 0x8c, 0xed, 0x3f, 0x72, 0x8b, 0xd8, 0x5d, 0x7d, 0xa0, 0x99, 0x25,
+ 0xad, 0xf9, 0xfb, 0x44, 0xa4, 0xa7, 0x57, 0x10, 0x9f, 0x40, 0x91, 0xa9,
+ 0x90, 0x60, 0x79, 0x80, 0x51, 0x1b, 0xa0, 0x83, 0xe0, 0x07, 0xf1, 0xfe,
+ 0x28, 0x58, 0xa4, 0x32, 0xa7, 0xe9, 0xc0, 0x03, 0xfe, 0x88, 0x08, 0xc4,
+ 0x46, 0xef, 0x1d, 0x7f, 0x04, 0x94, 0xe4, 0x66, 0x02, 0x6d, 0x70, 0x1a,
+ 0xc9, 0x00, 0x7d, 0xea, 0xd6, 0x16, 0xef, 0xb4, 0x30, 0xf7, 0xdf, 0xa2,
+ 0xa9, 0x96, 0xe1, 0xea, 0x92, 0x34, 0x20, 0x83, 0xf8, 0xab, 0xb8, 0x2d,
+ 0x2d, 0xbe, 0x92, 0x7b, 0xc3, 0xbf, 0x2a, 0x4a, 0x7a, 0x5a, 0x1e, 0xd3,
+ 0x55, 0x44, 0x09, 0x6b, 0x9b, 0xf9, 0x65, 0x49, 0xc7, 0x69, 0xb2, 0x35,
+ 0x10, 0xdd, 0x3e, 0xf5, 0x16, 0x4f, 0xa3, 0x59, 0x3a, 0x3a, 0x23, 0x44,
+ 0xce, 0x25, 0xcf, 0x73, 0x4f, 0x30, 0xdd, 0x7e, 0x12, 0x92, 0x93, 0x32,
+ 0x34, 0x1c, 0x71, 0x3f, 0x82, 0xe3, 0xba, 0xee, 0x9d, 0x4f, 0x2d, 0xb3,
+ 0xc5, 0x91, 0xf7, 0x00, 0xbb, 0x0a, 0xe6, 0x47, 0x7f, 0xf7, 0x95, 0xc7,
+ 0x75, 0xef, 0xf9, 0x5f, 0x32, 0x75, 0xfd, 0x21, 0x9f, 0xb8, 0x24, 0xa6,
+ 0x86, 0x18, 0x8b, 0x07, 0xf5, 0x82, 0xd8, 0xed, 0x3d, 0xe5, 0x64, 0x62,
+ 0xe9, 0x63, 0x7f, 0xac, 0x16, 0xc7, 0xe6, 0xfc, 0xd2, 0x52, 0x46, 0xea,
+ 0x75, 0xed, 0xaf, 0xe0, 0x83, 0xbb, 0x52, 0x0f, 0x02, 0x49, 0xf9, 0x04,
+ 0x49, 0x8d, 0x3b, 0x77, 0x4d, 0xb5, 0x9b, 0x1e, 0xef, 0x10, 0x4f, 0xe0,
+ 0x92, 0x99, 0xd3, 0xfc, 0xcf, 0xcb, 0xf8, 0x23, 0xce, 0x9e, 0x0a, 0xad,
+ 0x6f, 0x69, 0xaf, 0x6f, 0x7d, 0x21, 0x19, 0x84, 0x10, 0x4f, 0x6f, 0xf6,
+ 0xa4, 0xa4, 0x6e, 0x32, 0xe7, 0x4a, 0xae, 0xe7, 0x00, 0x4f, 0x9a, 0x23,
+ 0x8e, 0xae, 0xd5, 0x06, 0x5b, 0xb5, 0xf2, 0x27, 0x4f, 0x6a, 0x4a, 0x4f,
+ 0x53, 0xf4, 0x09, 0xec, 0x79, 0xde, 0x76, 0x8e, 0x44, 0xca, 0x0d, 0x67,
+ 0x69, 0x6f, 0x74, 0xe5, 0xf2, 0xe7, 0x03, 0xa4, 0x04, 0x94, 0xa7, 0xbe,
+ 0x1b, 0x23, 0xb8, 0x95, 0x49, 0xaf, 0x9b, 0xdc, 0x0f, 0x70, 0x7f, 0x22,
+ 0xb2, 0x63, 0x6c, 0x15, 0x4a, 0x08, 0xc9, 0x9f, 0x10, 0x47, 0xde, 0x92,
+ 0x95, 0xd1, 0x18, 0x6c, 0xea, 0x8d, 0xac, 0x0d, 0x1f, 0xed, 0xfe, 0x3f,
+ 0xc1, 0x77, 0x10, 0xd6, 0x80, 0x00, 0xd1, 0xa3, 0x45, 0x83, 0xf5, 0x4f,
+ 0xa7, 0x16, 0x8b, 0x7a, 0x8d, 0x83, 0xe9, 0xfe, 0x8e, 0x90, 0x7b, 0x06,
+ 0xfd, 0x37, 0x7f, 0x05, 0xbb, 0xea, 0x34, 0xb5, 0xc4, 0xe9, 0xaa, 0x4a,
+ 0x40, 0x2c, 0x36, 0x58, 0xe3, 0x05, 0xbb, 0x74, 0xd5, 0x4a, 0xa3, 0xb9,
+ 0xd1, 0xf9, 0xa3, 0xf1, 0x4b, 0xe9, 0x19, 0x03, 0x9f, 0x15, 0x36, 0xc3,
+ 0x5a, 0x60, 0x6b, 0xc2, 0x4a, 0x48, 0xfa, 0x71, 0xac, 0x8f, 0x56, 0x96,
+ 0x59, 0xb3, 0x82, 0xe6, 0x87, 0x47, 0xc2, 0x65, 0x4a, 0xbc, 0x2e, 0x9a,
+ 0xe0, 0x2c, 0x6e, 0x35, 0x24, 0xbf, 0x5d, 0xdb, 0x1b, 0xaf, 0xe0, 0xa1,
+ 0x5b, 0x8b, 0xa4, 0x46, 0x83, 0x52, 0x8f, 0x21, 0xdb, 0x49, 0x31, 0xde,
+ 0x12, 0x53, 0x33, 0x89, 0x85, 0x20, 0x9a, 0x2b, 0x31, 0xe0, 0xd0, 0x23,
+ 0xf0, 0x50, 0xb7, 0xa3, 0xf4, 0xfb, 0x86, 0x8d, 0x2c, 0xf3, 0x1a, 0xc7,
+ 0xde, 0xa4, 0x25, 0xae, 0xdd, 0x33, 0x3a, 0x14, 0x72, 0xf6, 0xec, 0x04,
+ 0x1f, 0xbd, 0x25, 0x3c, 0xff, 0x00, 0x51, 0xe8, 0x38, 0xed, 0x07, 0x66,
+ 0x53, 0x77, 0x34, 0x4e, 0xd7, 0x89, 0x3f, 0xc5, 0x72, 0x5d, 0x43, 0xa4,
+ 0x13, 0x90, 0x6a, 0xf5, 0x2b, 0xb3, 0xf7, 0x9c, 0xd9, 0x71, 0x1e, 0x5a,
+ 0xe8, 0xba, 0x7f, 0xac, 0x36, 0x57, 0x6d, 0xe2, 0x9a, 0x03, 0x85, 0xc7,
+ 0xdd, 0x6b, 0xda, 0x60, 0x35, 0xbe, 0x07, 0xe3, 0x0b, 0x1a, 0x8b, 0x1b,
+ 0x65, 0x8f, 0x15, 0x0f, 0xd1, 0x54, 0x76, 0x4f, 0x8b, 0xbf, 0x38, 0xa4,
+ 0xa6, 0xb6, 0x17, 0x49, 0xa7, 0x18, 0x4b, 0x5b, 0xee, 0x23, 0x57, 0xbb,
+ 0x53, 0xfe, 0xc5, 0x62, 0xd0, 0x00, 0x1b, 0x75, 0xf8, 0xab, 0x0e, 0x70,
+ 0x88, 0xe2, 0x39, 0x55, 0x40, 0xb6, 0xeb, 0x05, 0x75, 0x0d, 0xce, 0x77,
+ 0xe1, 0x3d, 0xca, 0x4a, 0x69, 0xdf, 0x92, 0xe0, 0xe6, 0xd3, 0x43, 0x4d,
+ 0x97, 0x3c, 0xed, 0x65, 0x6d, 0xd4, 0x92, 0xb7, 0x7a, 0x37, 0xd5, 0xa7,
+ 0x37, 0xf5, 0xae, 0xad, 0x16, 0xd8, 0x75, 0x65, 0x03, 0x5a, 0xd9, 0xfd,
+ 0x6f, 0xde, 0x3f, 0x82, 0xb1, 0xd3, 0xba, 0x5d, 0x78, 0x4f, 0xf5, 0x6b,
+ 0x67, 0xda, 0x2f, 0x2d, 0x8d, 0xe5, 0x85, 0xa5, 0xa4, 0x9d, 0x76, 0x97,
+ 0x7e, 0x6a, 0xd6, 0x0c, 0xb4, 0x8d, 0xd6, 0xb8, 0xff, 0x00, 0x57, 0x81,
+ 0xf0, 0x49, 0x4c, 0x9b, 0x8f, 0x5e, 0xd2, 0xd6, 0xb4, 0x35, 0xa3, 0x40,
+ 0xd0, 0x21, 0xbf, 0x72, 0x1d, 0x98, 0x94, 0x5e, 0xc3, 0x4e, 0x43, 0x1a,
+ 0xf6, 0x7e, 0x68, 0x23, 0x8f, 0x31, 0xe0, 0x8f, 0xbb, 0xe8, 0xf8, 0x9e,
+ 0x53, 0xbc, 0x34, 0x10, 0xe1, 0xf7, 0x24, 0xa7, 0x8f, 0xea, 0x38, 0xaf,
+ 0xc2, 0xc8, 0xf4, 0x1c, 0x7d, 0xae, 0xd6, 0xb7, 0xfe, 0xf3, 0x49, 0x55,
+ 0x9e, 0xe2, 0xdc, 0xa7, 0x13, 0xe0, 0x01, 0xf8, 0x11, 0x0b, 0xa4, 0xfa,
+ 0xc3, 0x8a, 0x2f, 0xc7, 0xa6, 0xf3, 0xcd, 0x4f, 0x8f, 0x38, 0x70, 0xff,
+ 0x00, 0x62, 0xe7, 0xb2, 0x5a, 0xd1, 0x92, 0x40, 0xe5, 0xc1, 0xbf, 0x80,
+ 0x49, 0x4d, 0xfb, 0x2c, 0xd9, 0x8e, 0xf2, 0xce, 0x4b, 0x9b, 0xf7, 0x18,
+ 0x47, 0x36, 0x7d, 0x33, 0xe2, 0x62, 0x3e, 0x65, 0x53, 0x1e, 0xec, 0x39,
+ 0x26, 0x7e, 0x89, 0x27, 0xe1, 0x0a, 0xc3, 0x84, 0x17, 0x6b, 0xa6, 0x83,
+ 0xef, 0x24, 0xa4, 0xa7, 0x2f, 0x2d, 0xd3, 0x65, 0x8d, 0xf0, 0xd0, 0x7d,
+ 0xea, 0xf6, 0x01, 0x27, 0x25, 0xa2, 0x78, 0x74, 0x7d, 0xc1, 0x66, 0xe4,
+ 0x4f, 0xa9, 0x61, 0xf1, 0x3f, 0xc5, 0x5e, 0xe9, 0xc4, 0x1c, 0xa6, 0xc7,
+ 0x77, 0xfe, 0x46, 0xa4, 0xa7, 0xac, 0x1f, 0xcc, 0x56, 0x46, 0xa4, 0x47,
+ 0xe4, 0x43, 0x6c, 0x9b, 0x49, 0x3d, 0xc0, 0x31, 0xf7, 0xa3, 0x37, 0x56,
+ 0x56, 0xd1, 0xa1, 0x80, 0x98, 0x34, 0x7a, 0x80, 0x77, 0x00, 0x7e, 0x52,
+ 0x92, 0x95, 0x8f, 0xb9, 0xc2, 0x4f, 0x80, 0x3f, 0x89, 0x5c, 0x5f, 0x5e,
+ 0xb2, 0x3a, 0xc6, 0x60, 0x27, 0x9b, 0x4f, 0xe2, 0x02, 0xed, 0x99, 0xa0,
+ 0x1e, 0x10, 0x3f, 0x2a, 0xe1, 0xfe, 0xb0, 0x81, 0xfb, 0x67, 0x2a, 0x38,
+ 0x36, 0x4e, 0xbf, 0xd5, 0x09, 0x29, 0xab, 0x8a, 0x7d, 0xec, 0x3f, 0xca,
+ 0x0b, 0x6b, 0xbc, 0x79, 0xcf, 0xe0, 0xb1, 0x30, 0xce, 0xad, 0x1f, 0xcb,
+ 0x6a, 0xda, 0xfc, 0xe4, 0x94, 0xca, 0x1c, 0xe7, 0x69, 0xe6, 0xa0, 0x77,
+ 0x36, 0x97, 0xf6, 0x01, 0x8e, 0x84, 0x6a, 0x9a, 0x7d, 0x48, 0x3d, 0xa6,
+ 0x25, 0x3e, 0x43, 0x22, 0x97, 0x47, 0x01, 0xa5, 0x25, 0x35, 0x6a, 0x24,
+ 0x34, 0x77, 0x3b, 0x64, 0xab, 0x2c, 0x7c, 0x30, 0x76, 0x9f, 0xee, 0x55,
+ 0x87, 0x12, 0x07, 0x68, 0x46, 0x04, 0x6d, 0x01, 0x25, 0x22, 0x04, 0x9d,
+ 0xd3, 0xe1, 0x3f, 0x8a, 0x19, 0x9f, 0xca, 0x8b, 0x54, 0x1d, 0xe3, 0xe0,
+ 0x98, 0x86, 0xed, 0x33, 0xe0, 0x92, 0x96, 0x0e, 0x0d, 0x03, 0xcd, 0x4c,
+ 0x0f, 0x76, 0xba, 0x92, 0x25, 0x0c, 0xbb, 0x6b, 0x98, 0x3c, 0x51, 0x1b,
+ 0x60, 0x75, 0x8e, 0x6c, 0x6a, 0x38, 0x3f, 0x95, 0x25, 0x2d, 0xb6, 0x41,
+ 0x95, 0x4d, 0xed, 0x03, 0x29, 0xba, 0xe9, 0x3c, 0xab, 0xee, 0x1c, 0xfd,
+ 0xca, 0xa5, 0xad, 0xfd, 0x65, 0x92, 0x40, 0x13, 0xdd, 0x25, 0x3d, 0x8b,
+ 0x1b, 0x4d, 0x34, 0x32, 0xba, 0x40, 0x6d, 0x41, 0xa0, 0x33, 0xc2, 0x16,
+ 0x7d, 0xf9, 0x00, 0x3f, 0x65, 0x43, 0xd4, 0xb7, 0xcf, 0xe8, 0xb7, 0xe2,
+ 0xaa, 0x51, 0x92, 0x1f, 0x50, 0x63, 0x9f, 0xf4, 0x74, 0x80, 0x7b, 0x0e,
+ 0x34, 0x52, 0xfb, 0x4e, 0x3d, 0x60, 0xc3, 0xbd, 0xde, 0x49, 0x29, 0xb7,
+ 0x53, 0x8d, 0x44, 0x0b, 0xec, 0x97, 0xda, 0x67, 0xe0, 0x7c, 0x02, 0xb1,
+ 0x00, 0xb8, 0x34, 0x0e, 0x78, 0x0b, 0x15, 0xf7, 0xb0, 0xb9, 0xaf, 0xb6,
+ 0x48, 0x6e, 0xa3, 0xe2, 0xb6, 0x7a, 0x73, 0xdd, 0x6e, 0x3b, 0x72, 0x2d,
+ 0x6e, 0xd2, 0xef, 0xa0, 0x0f, 0x87, 0x8a, 0x4a, 0x6c, 0xb5, 0x85, 0xb5,
+ 0x86, 0x8e, 0xfc, 0x95, 0x30, 0x03, 0x59, 0x09, 0xda, 0x77, 0x09, 0x8d,
+ 0x10, 0x9e, 0xf1, 0x30, 0x0a, 0x4a, 0x48, 0x0c, 0x0d, 0x75, 0x4e, 0x2d,
+ 0x63, 0xbd, 0xbc, 0x89, 0xe1, 0x08, 0x3c, 0x93, 0xaf, 0x05, 0x42, 0xd2,
+ 0xf6, 0xeb, 0xa7, 0x9f, 0x82, 0x4a, 0x73, 0xfa, 0xa6, 0x2d, 0xa2, 0xab,
+ 0xe5, 0xed, 0xa9, 0xaf, 0x0e, 0x71, 0xbd, 0xa2, 0x6c, 0x23, 0xe7, 0xe0,
+ 0xb9, 0xec, 0x7a, 0x46, 0x2e, 0x35, 0x35, 0x01, 0x1b, 0xce, 0xbe, 0x24,
+ 0x9d, 0x75, 0x5a, 0xbd, 0x5e, 0xd7, 0xdb, 0x60, 0xaf, 0x77, 0xe8, 0x80,
+ 0x97, 0x99, 0xef, 0xd8, 0x2c, 0x4c, 0x4c, 0x9f, 0xb4, 0xe6, 0x3e, 0xc3,
+ 0xfc, 0xc6, 0x30, 0x2d, 0xaf, 0xb6, 0xe7, 0xbb, 0xe9, 0x3b, 0xe4, 0x12,
+ 0x53, 0x66, 0xc7, 0x38, 0x17, 0x4a, 0xd6, 0xfa, 0xb5, 0x8a, 0xd7, 0x0b,
+ 0xb2, 0xdd, 0xa8, 0x27, 0xd3, 0x67, 0xcb, 0xdc, 0x56, 0x2b, 0xc8, 0xb1,
+ 0x81, 0xc0, 0xeb, 0x69, 0x2e, 0x68, 0xf0, 0x60, 0xd0, 0x2e, 0xa7, 0xa7,
+ 0xd4, 0x71, 0xb1, 0x2b, 0xa4, 0x7b, 0x76, 0x89, 0x77, 0xc4, 0xea, 0x52,
+ 0x53, 0x6c, 0xbc, 0x0d, 0x01, 0xd7, 0x90, 0x54, 0x5c, 0xe2, 0xe1, 0xb4,
+ 0xf2, 0x53, 0x43, 0x43, 0x77, 0x0e, 0x0e, 0xba, 0xa4, 0xd8, 0x93, 0x3f,
+ 0x48, 0xff, 0x00, 0x04, 0x94, 0xab, 0xa1, 0x9b, 0x23, 0x80, 0x0a, 0x63,
+ 0x6e, 0xf7, 0x34, 0x0e, 0xe8, 0x79, 0x4f, 0x05, 0xc0, 0x0f, 0x0d, 0x53,
+ 0xd6, 0x22, 0xc1, 0xf0, 0xec, 0x92, 0x96, 0xea, 0x60, 0x1e, 0x9f, 0x68,
+ 0x1a, 0x96, 0xb4, 0x93, 0xf2, 0xd4, 0x2e, 0x37, 0x21, 0xc0, 0xde, 0x08,
+ 0xe4, 0x81, 0xf9, 0x17, 0x59, 0xd6, 0x6c, 0x35, 0x74, 0xab, 0xdf, 0xc4,
+ 0xc3, 0x7e, 0xf2, 0x02, 0xe4, 0x2e, 0xf7, 0xda, 0x08, 0xfd, 0xde, 0x12,
+ 0x53, 0x69, 0xaf, 0xfd, 0x52, 0x1a, 0x75, 0x73, 0x75, 0xf9, 0x38, 0x88,
+ 0x57, 0x9d, 0xee, 0x9f, 0x88, 0x1f, 0x70, 0x0b, 0x34, 0x81, 0x55, 0x75,
+ 0xb5, 0xe0, 0x4e, 0xa0, 0x34, 0x99, 0xee, 0x0e, 0xab, 0x40, 0x7b, 0x5a,
+ 0xed, 0x66, 0x0f, 0xf0, 0x49, 0x4e, 0x55, 0xff, 0x00, 0xce, 0xb8, 0x8e,
+ 0x67, 0xf8, 0xab, 0x9d, 0x34, 0x39, 0xb9, 0x94, 0xee, 0x31, 0xb9, 0xe4,
+ 0x8f, 0x86, 0xd5, 0x47, 0x20, 0xfb, 0xdd, 0x1d, 0xbf, 0xbd, 0x5f, 0xe9,
+ 0xa4, 0x59, 0x9b, 0x4b, 0x89, 0xfa, 0x30, 0xd8, 0xfb, 0xd2, 0x53, 0xd8,
+ 0x01, 0xfa, 0x26, 0x49, 0xec, 0x35, 0xee, 0x21, 0x26, 0x93, 0xea, 0x4b,
+ 0xb5, 0x90, 0x98, 0x1f, 0xd0, 0x8e, 0x38, 0x09, 0x44, 0x3d, 0x87, 0xb1,
+ 0x69, 0x9f, 0xbc, 0x24, 0xa6, 0x40, 0x9f, 0xa5, 0x3a, 0xc7, 0xe4, 0x2b,
+ 0x8c, 0xfa, 0xc2, 0xdf, 0xf2, 0xbe, 0x41, 0xe2, 0x5c, 0x3f, 0xea, 0x1a,
+ 0xbb, 0x16, 0x9f, 0x68, 0xf9, 0x8f, 0xc5, 0x72, 0x3f, 0x58, 0x3f, 0xe5,
+ 0x4b, 0xc7, 0x60, 0x47, 0xfd, 0x43, 0x52, 0x53, 0x93, 0x8a, 0x61, 0xed,
+ 0x3e, 0x0f, 0x6f, 0xe5, 0x5b, 0x7b, 0xbd, 0xf1, 0xe6, 0xb1, 0x6a, 0xf6,
+ 0xc7, 0xf5, 0xda, 0xb5, 0xb5, 0xdf, 0x3d, 0xe7, 0xf8, 0x24, 0xa7, 0x4c,
+ 0x31, 0xbb, 0xc9, 0xf0, 0x1a, 0x7d, 0xea, 0x39, 0x23, 0x6d, 0x0f, 0x3e,
+ 0x0d, 0xd5, 0x16, 0xb1, 0x32, 0xe1, 0xc6, 0x80, 0x1f, 0x82, 0x8e, 0x61,
+ 0x1f, 0x65, 0xb0, 0x78, 0x89, 0x49, 0x4d, 0x16, 0xb3, 0x70, 0x13, 0xe3,
+ 0xf9, 0x12, 0x78, 0x3b, 0x8f, 0xc0, 0x7e, 0x54, 0x7a, 0xdb, 0x0d, 0x6a,
+ 0x6b, 0x40, 0x02, 0x7e, 0x09, 0x29, 0x05, 0x03, 0xdc, 0xf1, 0xdb, 0x45,
+ 0x22, 0x3d, 0xa6, 0x3c, 0x0e, 0x9e, 0x49, 0xb1, 0xe0, 0x9b, 0x08, 0x3d,
+ 0xc2, 0x4e, 0x12, 0xe0, 0xed, 0x74, 0x07, 0x84, 0x94, 0xc0, 0xb2, 0x6c,
+ 0x68, 0x1d, 0x82, 0x37, 0xa2, 0x7d, 0x62, 0xee, 0x07, 0x6f, 0xb9, 0x41,
+ 0xa3, 0xf4, 0xa0, 0xfc, 0x91, 0xc3, 0xfd, 0xee, 0x9e, 0x34, 0x01, 0x25,
+ 0x2c, 0x41, 0x20, 0xe8, 0xaa, 0x5d, 0x50, 0x76, 0x43, 0x01, 0x3a, 0x6a,
+ 0x3e, 0x64, 0x2b, 0xed, 0x82, 0xd0, 0x7b, 0xaa, 0xaf, 0x07, 0xed, 0x0c,
+ 0xd3, 0xf3, 0x92, 0x53, 0x91, 0x9e, 0xc7, 0x07, 0x00, 0x24, 0xb8, 0xcc,
+ 0x38, 0x18, 0x81, 0xf7, 0xa0, 0xd7, 0x95, 0x9d, 0x51, 0x01, 0x97, 0x13,
+ 0xe4, 0xf0, 0x1d, 0xf9, 0x42, 0xd3, 0x7b, 0x5d, 0xf6, 0xb6, 0x17, 0x6a,
+ 0xd7, 0x1b, 0x36, 0xfc, 0x23, 0x45, 0x4b, 0x3c, 0xfe, 0xba, 0xf0, 0x3c,
+ 0x04, 0x0f, 0x92, 0x4a, 0x74, 0xfa, 0x25, 0x5d, 0x47, 0xa8, 0xe4, 0x03,
+ 0x6b, 0x99, 0xf6, 0x5a, 0xe0, 0xda, 0xe0, 0xcf, 0x73, 0xbc, 0x18, 0x0f,
+ 0x9a, 0xea, 0xc4, 0x7d, 0x10, 0x34, 0xec, 0x3c, 0x00, 0x50, 0xc1, 0xc3,
+ 0xaf, 0x0f, 0x0e, 0xba, 0x2a, 0x00, 0xe8, 0x1c, 0xe3, 0xdc, 0xb8, 0x89,
+ 0x71, 0x46, 0x15, 0xf0, 0x67, 0x94, 0x94, 0xc8, 0x10, 0xd6, 0x79, 0x2a,
+ 0xce, 0x74, 0xc9, 0x22, 0x02, 0x2b, 0x9c, 0x00, 0x25, 0x05, 0xfc, 0x7b,
+ 0x4e, 0x81, 0x25, 0x33, 0x69, 0x00, 0x02, 0x47, 0x0a, 0x2e, 0x21, 0xe0,
+ 0x82, 0x62, 0x78, 0x41, 0xde, 0x03, 0xf6, 0x03, 0xee, 0x89, 0xf9, 0x29,
+ 0xea, 0xd3, 0xae, 0xa0, 0xf7, 0x49, 0x4e, 0x17, 0x59, 0xc7, 0x76, 0xc0,
+ 0xc0, 0xe8, 0x7b, 0xc9, 0xef, 0xa7, 0xc4, 0xac, 0x66, 0x63, 0xb9, 0xfb,
+ 0x31, 0xb1, 0xea, 0x71, 0x6b, 0x46, 0xa4, 0x0d, 0x5d, 0xe3, 0xaf, 0xf1,
+ 0x5d, 0xb3, 0xf1, 0xe9, 0xb0, 0x87, 0x39, 0xba, 0x8e, 0x0f, 0x81, 0x4c,
+ 0xdc, 0x7a, 0xaa, 0x6c, 0x31, 0xa0, 0x0f, 0x00, 0x92, 0x9c, 0x3e, 0x8f,
+ 0xd1, 0x6d, 0x66, 0x43, 0x6e, 0xcc, 0x6e, 0x95, 0x7f, 0x35, 0x5c, 0xc8,
+ 0xf2, 0x27, 0xc9, 0x74, 0x44, 0x86, 0xeb, 0xd8, 0x72, 0x7c, 0x10, 0x9a,
+ 0xe2, 0x0c, 0xc2, 0x90, 0x2e, 0xdc, 0x35, 0xf6, 0x78, 0x42, 0x4a, 0x49,
+ 0x63, 0x9b, 0x04, 0x11, 0xd9, 0x05, 0xad, 0x7c, 0x83, 0x11, 0xe3, 0xaa,
+ 0x9b, 0x98, 0x49, 0xd3, 0x44, 0x98, 0x0b, 0x01, 0x2f, 0x3d, 0x92, 0x53,
+ 0x51, 0xee, 0xdd, 0x69, 0x1e, 0x10, 0x15, 0xba, 0xab, 0xf7, 0x17, 0x76,
+ 0xf3, 0x59, 0xf5, 0xb9, 0xd7, 0x64, 0xb8, 0x47, 0x2e, 0xed, 0xe4, 0xb5,
+ 0x68, 0x69, 0x2c, 0x6e, 0xe1, 0xab, 0x8c, 0xfc, 0x82, 0x4a, 0x72, 0x7e,
+ 0xb8, 0x3b, 0xd3, 0xe8, 0xa1, 0xbc, 0x6f, 0xb5, 0x83, 0x4f, 0x9b, 0xbf,
+ 0x82, 0xe4, 0x1b, 0x79, 0xad, 0xf5, 0x9b, 0xbd, 0xc0, 0x68, 0x48, 0x3d,
+ 0xbb, 0x6a, 0xba, 0xef, 0xae, 0x25, 0xaf, 0xc0, 0xc7, 0xa4, 0x89, 0x16,
+ 0x5a, 0x49, 0x03, 0x4d, 0x18, 0xd3, 0x3f, 0x95, 0x72, 0x74, 0xe3, 0xee,
+ 0x0d, 0x73, 0xb5, 0x60, 0x02, 0x1a, 0x47, 0x87, 0x74, 0x94, 0x9e, 0xf7,
+ 0x6e, 0xa2, 0xa3, 0x20, 0x43, 0xe1, 0xb1, 0x24, 0x99, 0x89, 0xd5, 0x6a,
+ 0x12, 0xdf, 0x49, 0xfa, 0xfd, 0xdf, 0x35, 0x9b, 0x97, 0x0e, 0x65, 0x04,
+ 0x37, 0x68, 0xde, 0xe2, 0x47, 0x1e, 0x0b, 0x49, 0xac, 0x0e, 0x63, 0x80,
+ 0xd0, 0x4f, 0xf7, 0xa4, 0xa7, 0x1b, 0x22, 0x5b, 0x63, 0x4f, 0x89, 0x1f,
+ 0x95, 0x68, 0xf4, 0xda, 0xf6, 0xe7, 0xb6, 0x39, 0x2f, 0xd3, 0xee, 0x2a,
+ 0x86, 0x58, 0x3b, 0xab, 0x91, 0xcb, 0x80, 0xfc, 0x56, 0x9f, 0x4e, 0xd7,
+ 0xa8, 0x30, 0x11, 0xf4, 0x0b, 0x84, 0xfc, 0x8a, 0x4a, 0x7a, 0xa2, 0xd3,
+ 0xe9, 0x33, 0x6e, 0xbe, 0xd0, 0x0f, 0x91, 0x29, 0x00, 0x43, 0x9a, 0x3b,
+ 0xed, 0xfe, 0x21, 0x4e, 0x25, 0x8c, 0x33, 0xae, 0x83, 0xf0, 0x0a, 0x2e,
+ 0x77, 0xbc, 0x08, 0xd6, 0x0e, 0xbf, 0x30, 0x92, 0x96, 0x6c, 0x73, 0xf1,
+ 0xfc, 0xa1, 0x72, 0x5d, 0x7c, 0x13, 0xd4, 0xaf, 0x9e, 0x64, 0x7f, 0xd4,
+ 0x85, 0xd6, 0x34, 0x18, 0x69, 0xf1, 0x04, 0xfe, 0x2b, 0x96, 0xea, 0xa0,
+ 0x3f, 0x3f, 0x20, 0xf3, 0xee, 0x3a, 0xfc, 0x80, 0x49, 0x4e, 0x4e, 0xc2,
+ 0x18, 0x0f, 0xf2, 0x9b, 0xf9, 0x56, 0xb4, 0x15, 0x42, 0xc1, 0xb6, 0xb2,
+ 0x47, 0x88, 0x95, 0xa3, 0x1f, 0xa3, 0x9e, 0xc9, 0x29, 0xd5, 0xdc, 0xd0,
+ 0x36, 0x81, 0x00, 0x76, 0xf0, 0x40, 0xcd, 0xda, 0x30, 0xdc, 0x4f, 0x2e,
+ 0x88, 0xfb, 0xd4, 0xc3, 0x46, 0xd2, 0x7c, 0x4a, 0xaf, 0x9e, 0x63, 0x18,
+ 0x13, 0xe5, 0xf9, 0x52, 0x52, 0xcc, 0x74, 0x32, 0x7c, 0x54, 0x2e, 0x7f,
+ 0xb6, 0x0a, 0x66, 0xbb, 0xf4, 0x6d, 0xee, 0x50, 0xef, 0x78, 0x88, 0xf1,
+ 0xee, 0x92, 0x98, 0x62, 0x19, 0x0f, 0xf8, 0xa2, 0x3c, 0xfe, 0x42, 0xab,
+ 0xe2, 0xbc, 0x80, 0xfe, 0x39, 0x84, 0xd7, 0x64, 0xb5, 0x9a, 0x38, 0x13,
+ 0xcc, 0x6d, 0x49, 0x4d, 0x96, 0xbe, 0x08, 0x3f, 0x04, 0x85, 0x92, 0xef,
+ 0x98, 0x27, 0xe0, 0xa3, 0x8a, 0xe6, 0x59, 0xb4, 0x39, 0xb2, 0x4e, 0xa6,
+ 0x5c, 0x78, 0x56, 0xac, 0xc2, 0xac, 0x3b, 0x6e, 0xc8, 0xdc, 0x01, 0x69,
+ 0xdc, 0x4f, 0xf1, 0x49, 0x4b, 0x55, 0x60, 0x73, 0x79, 0x9f, 0x05, 0x4d,
+ 0xce, 0x73, 0xb3, 0x86, 0xba, 0x12, 0x03, 0x5b, 0x3f, 0x8a, 0x96, 0x76,
+ 0x35, 0xb8, 0xf8, 0xc6, 0xea, 0x43, 0x5b, 0x58, 0x12, 0x5e, 0x1c, 0x79,
+ 0x1a, 0x42, 0xa1, 0x89, 0x95, 0xbf, 0x22, 0xa7, 0x13, 0x30, 0xe9, 0x9f,
+ 0x92, 0x4a, 0x6d, 0x66, 0x58, 0x2b, 0xb9, 0x8f, 0x76, 0x84, 0x38, 0x81,
+ 0x3c, 0x00, 0x41, 0xf0, 0x59, 0xd9, 0x59, 0x57, 0xba, 0xc7, 0x1a, 0x83,
+ 0x64, 0xeb, 0xea, 0x11, 0xac, 0x01, 0xc2, 0xd3, 0xca, 0xb2, 0xd7, 0x5f,
+ 0x0d, 0x63, 0x0d, 0x2f, 0x30, 0x37, 0x89, 0xe0, 0x72, 0xaa, 0xd9, 0x43,
+ 0x9c, 0x08, 0xf4, 0x99, 0xaf, 0xee, 0x92, 0x12, 0x53, 0xe8, 0x14, 0x34,
+ 0x1a, 0x98, 0xed, 0x4f, 0xb1, 0xa4, 0x7c, 0xda, 0x13, 0x38, 0x68, 0x7c,
+ 0x5a, 0x89, 0x82, 0xf1, 0x66, 0x0e, 0x3b, 0xc7, 0x7a, 0xd9, 0xff, 0x00,
+ 0x52, 0x12, 0xb0, 0x46, 0x83, 0xe6, 0x92, 0x9a, 0x16, 0x38, 0xba, 0x47,
+ 0x8e, 0x9a, 0x72, 0xa0, 0xc6, 0x38, 0x82, 0x0f, 0x1d, 0x91, 0x6d, 0xda,
+ 0xd7, 0x13, 0xe0, 0x9a, 0x4c, 0x07, 0x4c, 0x8e, 0x52, 0x52, 0x2d, 0xaf,
+ 0x24, 0x33, 0x96, 0xf8, 0xa2, 0x16, 0x86, 0x88, 0x3f, 0x7a, 0x98, 0x23,
+ 0xe8, 0xfc, 0x60, 0xa4, 0xf6, 0xcb, 0x41, 0x22, 0x52, 0x53, 0x02, 0x40,
+ 0xd3, 0xbf, 0x92, 0x79, 0x98, 0x3f, 0x7a, 0x18, 0x24, 0xcc, 0x1d, 0x02,
+ 0x2b, 0x4c, 0xb6, 0x02, 0x4a, 0x61, 0xb4, 0x6e, 0x2e, 0xd5, 0x44, 0x17,
+ 0x06, 0x92, 0x06, 0x81, 0x15, 0xbe, 0xe0, 0x41, 0x94, 0xbd, 0x32, 0x3e,
+ 0x25, 0x25, 0x22, 0xdf, 0xba, 0x08, 0x32, 0x96, 0x43, 0xc8, 0xaf, 0xc3,
+ 0x44, 0xb6, 0xb8, 0x59, 0xc6, 0x87, 0xc1, 0x2c, 0xa6, 0x82, 0xc0, 0xd2,
+ 0x35, 0x29, 0x29, 0xa3, 0xd3, 0x01, 0x7e, 0x63, 0xdc, 0x38, 0x68, 0x26,
+ 0x3e, 0x6b, 0x67, 0x18, 0x97, 0x34, 0xb8, 0x68, 0xdf, 0xa2, 0xd5, 0x9b,
+ 0xd2, 0xe8, 0x8b, 0xdc, 0x4e, 0x81, 0xc0, 0x8f, 0x9c, 0xad, 0x9a, 0x83,
+ 0x5a, 0xd8, 0x10, 0x1a, 0xd1, 0xf7, 0x78, 0x92, 0x92, 0x9e, 0x3b, 0xeb,
+ 0x9d, 0xc5, 0xdd, 0x43, 0x0f, 0x19, 0x8e, 0x03, 0xd1, 0x61, 0xb1, 0xed,
+ 0x9e, 0xf6, 0x18, 0x1f, 0x83, 0x56, 0x1d, 0x5f, 0x68, 0x93, 0x5b, 0x6c,
+ 0x68, 0x93, 0xa1, 0x3c, 0x29, 0xe7, 0xe7, 0x7e, 0xd1, 0xea, 0xd9, 0x19,
+ 0xa0, 0x6e, 0xad, 0xef, 0x22, 0xb1, 0xfc, 0x86, 0xfb, 0x59, 0xf8, 0x05,
+ 0x7b, 0x1d, 0xc1, 0xe3, 0x68, 0x1b, 0x52, 0x53, 0x56, 0xd6, 0xe7, 0x37,
+ 0xf4, 0x76, 0x5d, 0x53, 0x9a, 0x35, 0x9d, 0xa6, 0x75, 0xf8, 0x15, 0x7b,
+ 0xa7, 0xd9, 0x7d, 0xbe, 0xa3, 0x5e, 0x01, 0xad, 0xac, 0x9d, 0xcd, 0x04,
+ 0x7b, 0x87, 0xc7, 0xe2, 0x81, 0x76, 0x82, 0x16, 0x97, 0x49, 0xa1, 0xe7,
+ 0x10, 0xbf, 0xdd, 0x0e, 0x24, 0x7b, 0x48, 0x01, 0x25, 0x38, 0xbd, 0x49,
+ 0xa5, 0x81, 0xbe, 0x4f, 0x1f, 0x94, 0x2d, 0x5c, 0x0f, 0xe9, 0xed, 0xf3,
+ 0x24, 0xfe, 0x0a, 0xaf, 0x5e, 0xa1, 0xb5, 0x56, 0xc7, 0x33, 0x70, 0x97,
+ 0x80, 0x5a, 0xee, 0x74, 0x23, 0xb8, 0x47, 0xe9, 0xd6, 0x35, 0xdd, 0x41,
+ 0xa3, 0x5d, 0xc3, 0x73, 0x63, 0xe0, 0x0a, 0x4a, 0x7a, 0xc2, 0xef, 0xd0,
+ 0xb4, 0xf7, 0x1b, 0x63, 0xf2, 0x15, 0x13, 0x25, 0xc3, 0xb9, 0x00, 0xeb,
+ 0xf3, 0x09, 0xc1, 0xfd, 0x13, 0x64, 0x41, 0xf6, 0xa8, 0xeb, 0xb8, 0x4f,
+ 0xf2, 0xbf, 0x28, 0x49, 0x4a, 0x6b, 0x64, 0x01, 0x31, 0x20, 0x85, 0xc8,
+ 0x3c, 0x69, 0x1c, 0xc4, 0x89, 0xf8, 0x68, 0xbb, 0x06, 0x88, 0x0d, 0x1e,
+ 0x6e, 0x5c, 0x93, 0xc6, 0xa7, 0xe2, 0x52, 0x53, 0x5a, 0xd0, 0x7d, 0x17,
+ 0x2b, 0xff, 0x00, 0xe0, 0x22, 0x3b, 0xaa, 0x97, 0xb6, 0x31, 0xdc, 0x7c,
+ 0xd5, 0x8d, 0xe3, 0xec, 0xfd, 0xfe, 0x94, 0x24, 0xa7, 0x47, 0xd4, 0x6c,
+ 0x0d, 0x47, 0x92, 0xab, 0xd4, 0x2e, 0x6b, 0xa8, 0x20, 0x6a, 0x5a, 0x46,
+ 0x83, 0xc2, 0x55, 0x93, 0x6b, 0x47, 0x31, 0xae, 0x81, 0x48, 0xbd, 0x91,
+ 0xc0, 0x49, 0x4e, 0x55, 0x77, 0x8d, 0x1a, 0x41, 0x13, 0xaf, 0x08, 0x76,
+ 0xda, 0xd7, 0x38, 0xc4, 0xc0, 0xf2, 0x5a, 0x62, 0x4b, 0xf7, 0x48, 0xd3,
+ 0xb2, 0x93, 0x9c, 0xd8, 0xd4, 0x4c, 0x78, 0x24, 0xa7, 0x12, 0x87, 0x0f,
+ 0x77, 0x61, 0x20, 0xf8, 0x28, 0xdd, 0xad, 0x8d, 0x74, 0x8e, 0x79, 0x5a,
+ 0xce, 0x73, 0x08, 0x21, 0xba, 0x15, 0x4f, 0x30, 0x56, 0x69, 0x7c, 0x08,
+ 0x77, 0x2d, 0x3d, 0xd2, 0x53, 0x0a, 0x7d, 0x7b, 0x6d, 0x61, 0xae, 0x1d,
+ 0x3a, 0x1d, 0x16, 0xb3, 0x05, 0x96, 0x5c, 0x06, 0xa7, 0x6c, 0x87, 0x0e,
+ 0x20, 0x01, 0xc0, 0x59, 0xdd, 0x27, 0x23, 0x1d, 0x96, 0x4d, 0xae, 0xdb,
+ 0x1f, 0x76, 0x9c, 0xab, 0xf4, 0xbf, 0x2a, 0xf2, 0xdb, 0x29, 0x61, 0x35,
+ 0x12, 0x48, 0x77, 0x3a, 0x4a, 0x4a, 0x47, 0xd6, 0x29, 0x8e, 0x99, 0x63,
+ 0x80, 0x86, 0xb5, 0xa7, 0x42, 0x7b, 0x9d, 0x74, 0x5c, 0xd7, 0x4b, 0xd7,
+ 0x22, 0x9f, 0xeb, 0x70, 0xba, 0x7e, 0xb3, 0x90, 0x1f, 0xd2, 0xed, 0xa9,
+ 0xc2, 0x1e, 0xd1, 0xaf, 0xcf, 0x45, 0xce, 0xf4, 0xd0, 0x3d, 0x6a, 0x7c,
+ 0xc8, 0x49, 0x4e, 0xde, 0x67, 0xf8, 0x26, 0xf7, 0xdd, 0x22, 0x3e, 0x08,
+ 0x3b, 0x08, 0x83, 0xe2, 0xac, 0xe5, 0x34, 0xfa, 0xb5, 0x0e, 0xd3, 0xfc,
+ 0x0a, 0x68, 0xd2, 0x3b, 0x24, 0xa7, 0xa8, 0xe8, 0x96, 0x6f, 0xe9, 0x74,
+ 0x8e, 0xec, 0x96, 0x1f, 0xec, 0x9f, 0xee, 0x56, 0xad, 0xfa, 0x3e, 0x7d,
+ 0x96, 0x4f, 0xd5, 0xec, 0xa1, 0x5f, 0xa9, 0x89, 0x61, 0x01, 0xbf, 0xce,
+ 0x31, 0xc7, 0x4f, 0x27, 0x05, 0x6b, 0xa8, 0xf5, 0xac, 0x0c, 0x5a, 0x89,
+ 0x16, 0x36, 0xdb, 0x7f, 0x36, 0xb6, 0x19, 0x93, 0xe6, 0x47, 0x01, 0x25,
+ 0x32, 0x35, 0x02, 0x64, 0xf0, 0x10, 0xf6, 0x81, 0x2d, 0x8d, 0x3c, 0x57,
+ 0x3c, 0xce, 0xb1, 0x99, 0x93, 0xd5, 0x71, 0xab, 0xba, 0xef, 0x4e, 0x87,
+ 0x93, 0x15, 0xb7, 0xda, 0xd7, 0x12, 0xd3, 0xb4, 0x7d, 0xeb, 0xa5, 0xc5,
+ 0xa8, 0x3d, 0xb2, 0xef, 0x87, 0xdc, 0x92, 0x98, 0x56, 0xc9, 0xd4, 0x19,
+ 0x44, 0x73, 0x4e, 0xc2, 0x3f, 0x05, 0x0b, 0xa8, 0x7b, 0x5d, 0xfa, 0x37,
+ 0xb9, 0xbf, 0x02, 0x80, 0xe7, 0x5e, 0xdf, 0xf0, 0x87, 0x5d, 0x12, 0x52,
+ 0x76, 0x50, 0x22, 0x5d, 0xdd, 0x10, 0x57, 0x58, 0x1e, 0xe7, 0x01, 0x1e,
+ 0x6a, 0xa0, 0xf5, 0x9c, 0x36, 0x97, 0x93, 0x3c, 0xca, 0x8b, 0xa8, 0x2e,
+ 0x92, 0xed, 0x49, 0xee, 0x52, 0x53, 0x61, 0xf6, 0x31, 0x82, 0x03, 0x9b,
+ 0x3e, 0x65, 0x05, 0xb9, 0x0d, 0x92, 0xed, 0xdf, 0x76, 0xaa, 0x2d, 0xc5,
+ 0x0d, 0x1a, 0xf2, 0x9c, 0x55, 0x13, 0x03, 0x84, 0x94, 0xcb, 0xed, 0x95,
+ 0xb7, 0x5d, 0xa5, 0xdf, 0x82, 0x0b, 0xf2, 0x9d, 0x61, 0xf6, 0xd7, 0x03,
+ 0xc4, 0x99, 0x44, 0x34, 0x89, 0xd4, 0x79, 0x22, 0x55, 0x8d, 0xb8, 0x80,
+ 0x06, 0x9f, 0xdc, 0x92, 0x96, 0xc6, 0xad, 0xdb, 0x0d, 0xaf, 0xfa, 0x4e,
+ 0xfa, 0x02, 0x20, 0x09, 0x40, 0xfa, 0xc9, 0x76, 0x6d, 0x7d, 0x1e, 0xea,
+ 0x7a, 0x7d, 0x2f, 0xbb, 0x2b, 0x28, 0x7a, 0x2d, 0x15, 0x89, 0x2d, 0x6b,
+ 0xbe, 0x9b, 0xb4, 0xfe, 0x4e, 0x9f, 0x35, 0xa7, 0x65, 0x45, 0xa5, 0x95,
+ 0x8f, 0x89, 0x5c, 0xf3, 0xbe, 0xb4, 0xbc, 0xf5, 0x8b, 0xf0, 0x31, 0x0b,
+ 0x4b, 0x31, 0xfd, 0xad, 0x9d, 0x45, 0x85, 0xbf, 0x4e, 0x3e, 0x05, 0x25,
+ 0x3c, 0xf7, 0x4d, 0xfa, 0xaf, 0xf5, 0x80, 0xd7, 0x07, 0x0d, 0xd5, 0xc7,
+ 0xef, 0x90, 0xdf, 0xca, 0x56, 0xe6, 0x1f, 0xd5, 0x7e, 0xae, 0xd8, 0x75,
+ 0x8d, 0x63, 0x3c, 0x8b, 0xe4, 0xfe, 0x12, 0xb5, 0xeb, 0xeb, 0xd9, 0x9f,
+ 0x9d, 0x8e, 0xc3, 0xf0, 0x24, 0x2b, 0x15, 0xf5, 0x9b, 0x9d, 0xce, 0x34,
+ 0x7c, 0x1d, 0xfe, 0xc4, 0x94, 0xe3, 0x5b, 0xf5, 0x4f, 0xa8, 0xd9, 0xae,
+ 0xfa, 0x87, 0xcc, 0xff, 0x00, 0x72, 0x2e, 0x3f, 0xd5, 0xfe, 0xa7, 0x8f,
+ 0x4b, 0x6a, 0xdc, 0xc3, 0x12, 0x74, 0x3a, 0x73, 0xe6, 0xb6, 0xdb, 0xd5,
+ 0x1e, 0x7f, 0xed, 0x3b, 0xbf, 0xce, 0x0a, 0x63, 0x3d, 0xce, 0xff, 0x00,
+ 0x00, 0xef, 0xbc, 0x24, 0xa7, 0x95, 0xea, 0x5f, 0x57, 0x7a, 0xae, 0x54,
+ 0x06, 0xec, 0xf6, 0x90, 0x75, 0x76, 0x88, 0x38, 0xfd, 0x17, 0xaa, 0xe2,
+ 0xf5, 0x16, 0x64, 0xdc, 0xc6, 0x8c, 0x76, 0x97, 0x12, 0x43, 0x81, 0xd0,
+ 0x82, 0x06, 0x9f, 0x15, 0xd8, 0xfa, 0xee, 0x76, 0xbe, 0x8b, 0xfe, 0xf0,
+ 0xaa, 0x75, 0x17, 0xb9, 0x98, 0x76, 0xda, 0x6b, 0x70, 0x6b, 0x44, 0x92,
+ 0x48, 0xf1, 0x1e, 0x49, 0x29, 0x76, 0x7d, 0x06, 0xf7, 0xe3, 0xf0, 0x51,
+ 0x2e, 0x88, 0x23, 0xb3, 0x9c, 0x23, 0xe6, 0x9d, 0x8e, 0x05, 0x8c, 0x81,
+ 0xda, 0x44, 0x7c, 0x02, 0x00, 0x74, 0x91, 0xe3, 0xbc, 0xa4, 0xa4, 0xed,
+ 0x82, 0x40, 0xf3, 0x26, 0x3e, 0x21, 0x71, 0x9e, 0xa5, 0x85, 0xc4, 0x18,
+ 0x70, 0x92, 0x34, 0xec, 0xbb, 0x56, 0x0f, 0xd2, 0x0f, 0xeb, 0x03, 0xf8,
+ 0x2f, 0x3e, 0xb7, 0xed, 0x4e, 0x71, 0x68, 0x21, 0xa3, 0x71, 0xd4, 0x73,
+ 0xca, 0x4a, 0x75, 0x2f, 0xc6, 0xb9, 0xd8, 0xae, 0x01, 0x84, 0xba, 0x78,
+ 0x08, 0x9b, 0x1f, 0xe8, 0x47, 0xa6, 0xed, 0xdc, 0xf0, 0xb3, 0xc3, 0xb2,
+ 0x1a, 0x1a, 0xfa, 0x9c, 0xed, 0xcd, 0xf3, 0x9d, 0xdf, 0x19, 0x4f, 0xfb,
+ 0x47, 0xad, 0x47, 0xa7, 0xed, 0xdb, 0xcf, 0xab, 0x1a, 0xed, 0xf0, 0x8f,
+ 0x8a, 0x4a, 0x6d, 0x0b, 0x73, 0x1f, 0x1a, 0xb4, 0x0f, 0x18, 0x3f, 0x86,
+ 0xaa, 0x60, 0x65, 0x13, 0xad, 0x82, 0x3c, 0x36, 0x9f, 0xef, 0x56, 0x4e,
+ 0xd2, 0x7d, 0xbc, 0x79, 0xa7, 0xd5, 0x25, 0x21, 0x0c, 0xc8, 0xef, 0x68,
+ 0xf9, 0xb5, 0x45, 0xd5, 0xdb, 0xfe, 0x93, 0xee, 0x6f, 0xfb, 0x55, 0x93,
+ 0x24, 0x68, 0xa0, 0x44, 0x1f, 0x73, 0xa1, 0x25, 0x35, 0xfd, 0x1b, 0x8f,
+ 0x0f, 0x20, 0x7c, 0x02, 0xaf, 0x91, 0x49, 0x60, 0x82, 0xf2, 0xf7, 0xbf,
+ 0xe8, 0xb0, 0x01, 0xb9, 0xca, 0xcb, 0xb2, 0x9c, 0xf7, 0x9a, 0xf1, 0xc8,
+ 0x71, 0x1a, 0x39, 0xe7, 0xe8, 0xb4, 0xff, 0x00, 0x12, 0xa5, 0x55, 0x42,
+ 0xa9, 0x71, 0x3b, 0x9e, 0xef, 0xa4, 0xf7, 0x72, 0x7c, 0x92, 0x53, 0x9a,
+ 0xde, 0x9c, 0xf6, 0x91, 0x2e, 0x3b, 0x4f, 0xd2, 0xd2, 0x61, 0x5f, 0xc4,
+ 0xb7, 0x27, 0x0c, 0xb7, 0x64, 0xb8, 0x30, 0x43, 0x24, 0x01, 0xc8, 0xee,
+ 0x25, 0x1f, 0x78, 0x8e, 0xc1, 0x3c, 0xb4, 0x02, 0x74, 0x49, 0x4d, 0x2c,
+ 0xff, 0x00, 0xb4, 0xe6, 0x30, 0xb1, 0xc5, 0xac, 0x07, 0x9f, 0x9f, 0xc1,
+ 0x54, 0xc3, 0xe9, 0xb6, 0xe3, 0xdd, 0x55, 0x9e, 0xa0, 0x73, 0x58, 0xe0,
+ 0x48, 0xf1, 0x5a, 0x65, 0x85, 0xc6, 0x60, 0xfc, 0x82, 0x73, 0x59, 0x0d,
+ 0x98, 0x22, 0x3c, 0x42, 0x4a, 0x56, 0x6b, 0xaa, 0xf5, 0x59, 0xbd, 0xdb,
+ 0x1c, 0x35, 0x61, 0x8d, 0x0f, 0x92, 0x80, 0xf5, 0x6c, 0x91, 0x4b, 0xeb,
+ 0x79, 0xf0, 0x26, 0x3f, 0x2a, 0x59, 0xa5, 0xd6, 0x1a, 0xbd, 0x31, 0x2f,
+ 0xdd, 0xed, 0xf0, 0x1e, 0x7f, 0x24, 0x4a, 0xf1, 0x69, 0x63, 0x43, 0x5d,
+ 0xee, 0x3c, 0x92, 0x79, 0x24, 0xf2, 0x52, 0x53, 0x52, 0xc7, 0xf5, 0x10,
+ 0x60, 0x54, 0x0c, 0x78, 0x11, 0xfd, 0xe9, 0xb1, 0xea, 0xca, 0xb6, 0xf1,
+ 0xf6, 0x86, 0xc3, 0x60, 0xf7, 0x1c, 0xf8, 0x68, 0xae, 0x1c, 0x6c, 0x6f,
+ 0xe5, 0x02, 0x38, 0x82, 0x42, 0x25, 0x14, 0x91, 0x68, 0x2d, 0x71, 0x3c,
+ 0xe8, 0xef, 0x34, 0x94, 0xe5, 0x75, 0x6c, 0x67, 0x3a, 0xca, 0x45, 0x63,
+ 0x59, 0x90, 0x26, 0x20, 0xb7, 0x51, 0xa8, 0x5d, 0x8f, 0xd5, 0xeb, 0xed,
+ 0xc9, 0xe9, 0xf5, 0xd9, 0x7c, 0x0b, 0x44, 0xb5, 0xf1, 0xac, 0x90, 0x62,
+ 0x7e, 0x6b, 0x97, 0xea, 0xcd, 0xb9, 0xf6, 0x56, 0x31, 0xe4, 0x38, 0x1d,
+ 0x22, 0x27, 0xcf, 0x95, 0xbf, 0xf5, 0x39, 0xd7, 0x8c, 0x5b, 0xa8, 0xc8,
+ 0x1e, 0xf6, 0x3c, 0x38, 0x1d, 0x0f, 0xb5, 0xc3, 0xcb, 0xcc, 0x24, 0xa7,
+ 0x6a, 0xc6, 0x49, 0x55, 0xdd, 0x40, 0x74, 0x3b, 0xef, 0xf2, 0x2a, 0xed,
+ 0x91, 0x20, 0x21, 0x32, 0x7d, 0xc0, 0x0f, 0x30, 0x92, 0x9a, 0xcd, 0xc6,
+ 0xd4, 0x1f, 0x39, 0x2a, 0x66, 0x91, 0x1c, 0x2b, 0x03, 0x91, 0x23, 0xe2,
+ 0x85, 0x76, 0x4e, 0x3d, 0x72, 0x5f, 0x6b, 0x1a, 0x39, 0xd5, 0xc1, 0x25,
+ 0x23, 0x75, 0x4a, 0x3e, 0x90, 0x80, 0x84, 0xee, 0xad, 0xd3, 0x9a, 0x09,
+ 0x39, 0x0d, 0x70, 0x6c, 0xee, 0xdb, 0x26, 0x23, 0xe0, 0x15, 0x13, 0xf5,
+ 0xa7, 0xa0, 0x86, 0xeb, 0x96, 0x07, 0x3a, 0x6d, 0x7c, 0xff, 0x00, 0xd4,
+ 0xa4, 0xa7, 0x4f, 0xd3, 0x92, 0x3e, 0x2a, 0xcd, 0x55, 0x43, 0xc7, 0x80,
+ 0x58, 0x7f, 0xf3, 0xb7, 0xa0, 0x34, 0xb6, 0x32, 0x0b, 0xa3, 0x58, 0x6d,
+ 0x6f, 0xff, 0x00, 0xc8, 0xad, 0x3e, 0x99, 0xd5, 0xf0, 0x3a, 0x8b, 0x1d,
+ 0x6e, 0x15, 0x9e, 0xa3, 0x18, 0x76, 0xbc, 0x10, 0x5a, 0xe6, 0x9e, 0x75,
+ 0x07, 0x54, 0x94, 0xd5, 0xfa, 0xc7, 0x9c, 0xfc, 0x3c, 0x1b, 0x5f, 0x49,
+ 0xdb, 0x7d, 0x87, 0xd1, 0xa5, 0xff, 0x00, 0xba, 0x48, 0xf7, 0x3b, 0xe4,
+ 0x17, 0x9e, 0x53, 0x86, 0xfa, 0x32, 0x19, 0x91, 0x5d, 0xd1, 0x63, 0x1d,
+ 0xbb, 0x59, 0xd7, 0xc6, 0x7e, 0x2b, 0xb1, 0xfa, 0xc4, 0xd7, 0xe5, 0x64,
+ 0x33, 0x1c, 0x3b, 0xd9, 0x4c, 0x92, 0x3f, 0x96, 0xfd, 0x4f, 0xe0, 0xb1,
+ 0x8f, 0x47, 0x7b, 0xb8, 0x29, 0x29, 0xd9, 0xc2, 0xca, 0xae, 0xe6, 0x07,
+ 0xb4, 0x8d, 0x79, 0x1e, 0x05, 0x69, 0x52, 0xe6, 0xae, 0x43, 0xf6, 0x5f,
+ 0x50, 0xa1, 0xdb, 0xe8, 0xb3, 0x6f, 0x89, 0x07, 0x4f, 0x9a, 0xd3, 0xc6,
+ 0x39, 0xac, 0x63, 0x45, 0xc6, 0xcd, 0xf1, 0xab, 0x9a, 0x1a, 0xe6, 0x9f,
+ 0xc8, 0x92, 0x9e, 0xa2, 0xb2, 0xd5, 0x65, 0x9b, 0x57, 0x3b, 0x55, 0xef,
+ 0x8d, 0x6f, 0x73, 0x7e, 0x35, 0x9f, 0xe0, 0xac, 0xb3, 0x24, 0x01, 0xae,
+ 0x51, 0xe3, 0x81, 0x53, 0xa5, 0x25, 0x3b, 0xcd, 0x2d, 0x54, 0xba, 0xd6,
+ 0xd7, 0x74, 0xfb, 0x1a, 0x75, 0x92, 0xdd, 0x3f, 0xb4, 0x15, 0x06, 0xe7,
+ 0xd0, 0xfa, 0xbd, 0x4a, 0xb2, 0x2d, 0xb8, 0x1e, 0x36, 0xb0, 0x37, 0xe4,
+ 0x77, 0x70, 0xb3, 0xcb, 0xf3, 0x6e, 0xb3, 0x75, 0xf6, 0x1f, 0x4c, 0x49,
+ 0x0d, 0xed, 0xe4, 0x92, 0x9d, 0x13, 0xb8, 0x70, 0x79, 0x02, 0x3e, 0x29,
+ 0xaa, 0x78, 0x73, 0x88, 0x22, 0x08, 0x7c, 0x90, 0xa6, 0xf0, 0xd2, 0x0f,
+ 0x68, 0x03, 0xf8, 0x28, 0x56, 0xc9, 0x2c, 0x7f, 0x12, 0x49, 0x9f, 0x99,
+ 0x49, 0x4d, 0xba, 0x64, 0xbf, 0xcb, 0x9f, 0xc1, 0x70, 0x85, 0xd6, 0xbe,
+ 0xdf, 0x55, 0x84, 0x39, 0xa1, 0xce, 0xde, 0xde, 0xe3, 0x5e, 0x21, 0x77,
+ 0x54, 0x72, 0xf2, 0x75, 0x8e, 0x57, 0x23, 0x91, 0x84, 0x37, 0x9b, 0x5a,
+ 0x76, 0x58, 0x49, 0xf7, 0x0e, 0xfa, 0xf7, 0x1d, 0xd2, 0x53, 0x54, 0xe4,
+ 0xe4, 0x9f, 0xa1, 0x5b, 0x0b, 0x3b, 0x7b, 0xa0, 0x8f, 0xc1, 0x13, 0xed,
+ 0x57, 0xed, 0x8f, 0x4d, 0xbf, 0x09, 0x52, 0x0e, 0xd8, 0x63, 0x21, 0x9b,
+ 0x4f, 0x01, 0xe0, 0x7b, 0x4a, 0x36, 0xc6, 0xc4, 0xc6, 0x9e, 0x29, 0x29,
+ 0xb7, 0xb5, 0xde, 0x0a, 0x41, 0x8e, 0xf0, 0x53, 0xbe, 0xca, 0xe8, 0x69,
+ 0x75, 0xae, 0x0c, 0x6b, 0x44, 0x9d, 0x78, 0x58, 0xd6, 0xf5, 0x6b, 0xf3,
+ 0x1e, 0xea, 0x7a, 0x70, 0x37, 0x34, 0x7d, 0x2b, 0x27, 0x6b, 0x1b, 0xf1,
+ 0x77, 0xf0, 0x09, 0x29, 0xbd, 0x91, 0x95, 0x4e, 0x38, 0xf7, 0x10, 0x5d,
+ 0xe0, 0x35, 0x2a, 0xb8, 0x65, 0xf9, 0x10, 0xeb, 0x7f, 0x45, 0x59, 0xd4,
+ 0x56, 0x0f, 0xb8, 0xff, 0x00, 0x5b, 0xc1, 0x3e, 0x2e, 0x17, 0xa7, 0xfa,
+ 0x5b, 0x66, 0xdb, 0xbb, 0xbc, 0x8f, 0x68, 0x27, 0xf7, 0x02, 0xb4, 0x64,
+ 0x08, 0x80, 0x92, 0x91, 0x8a, 0xc3, 0x40, 0x6b, 0x40, 0x68, 0x1d, 0x82,
+ 0x8e, 0xcd, 0xc7, 0xba, 0x28, 0x24, 0xf2, 0xd0, 0x3c, 0xb9, 0x44, 0x0d,
+ 0xd3, 0x41, 0x12, 0x92, 0x90, 0xfa, 0x62, 0x34, 0x26, 0x53, 0xfa, 0x4e,
+ 0xd0, 0x93, 0x3e, 0x2a, 0xcb, 0x6b, 0x6b, 0x44, 0x9f, 0xc1, 0x42, 0xc7,
+ 0xb5, 0x8d, 0xde, 0xee, 0x09, 0x01, 0xa0, 0x72, 0xe2, 0x7b, 0x04, 0x94,
+ 0xc5, 0xad, 0x20, 0x44, 0xc7, 0x82, 0x16, 0x45, 0x8d, 0xa6, 0xbd, 0xf6,
+ 0x3e, 0x1b, 0xa0, 0xf9, 0x9d, 0x00, 0x47, 0x63, 0x48, 0xf7, 0x38, 0x82,
+ 0xee, 0xe0, 0x76, 0xf2, 0x0a, 0x9d, 0x75, 0xfd, 0xb6, 0xf1, 0x91, 0x6f,
+ 0xb6, 0x9a, 0xe7, 0xec, 0xf5, 0x90, 0x7d, 0xc7, 0x83, 0x63, 0xbf, 0x82,
+ 0x4a, 0x49, 0x64, 0x34, 0xb0, 0xb7, 0x4e, 0x7f, 0x22, 0x63, 0x7b, 0xf8,
+ 0x47, 0x7e, 0x23, 0x2c, 0x80, 0x5c, 0x4c, 0x78, 0x26, 0x38, 0xc1, 0xbc,
+ 0x48, 0x49, 0x4d, 0x7d, 0xf6, 0xf6, 0x1a, 0x23, 0xe0, 0x39, 0xff, 0x00,
+ 0x69, 0x87, 0x0f, 0xcd, 0x30, 0xa0, 0x6a, 0x77, 0x89, 0x2a, 0x78, 0xed,
+ 0x73, 0x6d, 0x69, 0x1c, 0xa4, 0xa6, 0x19, 0xe7, 0xd3, 0xbd, 0x85, 0xba,
+ 0xf2, 0x4c, 0x79, 0xca, 0x3f, 0x4a, 0xeb, 0x0c, 0xe9, 0xf6, 0xda, 0xfb,
+ 0x2a, 0x7b, 0xc5, 0x81, 0xa2, 0x1b, 0x1a, 0x6d, 0x9f, 0x1f, 0x8a, 0xad,
+ 0x9b, 0x0e, 0xb7, 0x41, 0x1a, 0x2a, 0x6f, 0x91, 0xa4, 0x80, 0x0a, 0x4a,
+ 0x6f, 0x75, 0xff, 0x00, 0xac, 0x79, 0x59, 0x4d, 0x60, 0xc5, 0xdf, 0x8a,
+ 0xc2, 0xe0, 0xc7, 0x43, 0xbd, 0xd0, 0x75, 0x27, 0x48, 0xec, 0x16, 0x2d,
+ 0x59, 0x3d, 0x44, 0x36, 0x06, 0x6d, 0x8d, 0x61, 0x32, 0x7f, 0x49, 0x66,
+ 0xa9, 0xef, 0x05, 0xf7, 0xd5, 0x5c, 0x88, 0x6e, 0xe7, 0xb8, 0x7c, 0xb6,
+ 0x8f, 0xca, 0x8e, 0xca, 0x1c, 0xf3, 0xbd, 0xcd, 0x00, 0x93, 0x20, 0x0e,
+ 0x02, 0x4a, 0x6c, 0xd2, 0x5e, 0xf6, 0x03, 0x63, 0xdf, 0x64, 0xf9, 0x9f,
+ 0xc6, 0x4a, 0x2d, 0x40, 0x06, 0x96, 0x46, 0xd0, 0xde, 0x07, 0xc5, 0x2c,
+ 0x5a, 0xe2, 0x3d, 0x41, 0x0d, 0xf8, 0x94, 0xb3, 0x58, 0xe0, 0xdf, 0x52,
+ 0xa7, 0x7b, 0x58, 0x61, 0xdf, 0x02, 0x92, 0x95, 0x1b, 0x2c, 0x03, 0xf3,
+ 0x2c, 0xf6, 0xbb, 0xc9, 0xdd, 0x8f, 0xcd, 0x62, 0xdd, 0x4d, 0x6c, 0xe9,
+ 0xf6, 0x3c, 0x8f, 0x79, 0x73, 0x5a, 0xd3, 0xdf, 0x43, 0xaa, 0xb9, 0x5e,
+ 0x43, 0xf7, 0xbe, 0x97, 0xda, 0x74, 0x87, 0x02, 0x40, 0x3e, 0xd3, 0xfd,
+ 0xc4, 0x21, 0x64, 0x57, 0x47, 0xd9, 0x4d, 0x62, 0xdd, 0xee, 0xdd, 0xbb,
+ 0x51, 0x1c, 0xa4, 0xa6, 0x8e, 0x1d, 0x6d, 0xe7, 0xc5, 0x6f, 0x74, 0xdb,
+ 0x8e, 0x1d, 0xe3, 0x23, 0x1d, 0xc1, 0x96, 0x70, 0x74, 0xd1, 0xcd, 0xf0,
+ 0x70, 0xee, 0xb0, 0xaa, 0x1b, 0x1d, 0xb4, 0x98, 0xd5, 0x6a, 0x61, 0xb8,
+ 0x6e, 0x87, 0x76, 0xd6, 0x67, 0xc5, 0x25, 0x3b, 0x4f, 0xb1, 0xf7, 0x5c,
+ 0xfb, 0x5d, 0x13, 0x61, 0xdd, 0xa7, 0x1a, 0xa9, 0x80, 0x63, 0x55, 0x5e,
+ 0xad, 0xad, 0x6e, 0xe9, 0x1b, 0x4f, 0x98, 0x85, 0x62, 0xb7, 0xd6, 0x4c,
+ 0x09, 0x3e, 0x3e, 0x09, 0x29, 0x98, 0x00, 0xa8, 0x02, 0x6a, 0x30, 0x09,
+ 0xd9, 0xfb, 0xbd, 0xc7, 0xc1, 0x1b, 0x69, 0x9f, 0x24, 0x8d, 0x61, 0xcd,
+ 0xda, 0x40, 0x3f, 0x14, 0x94, 0xa0, 0x64, 0x48, 0xd6, 0x52, 0x92, 0xa2,
+ 0xc9, 0xad, 0xe1, 0x8f, 0x3e, 0xd7, 0x68, 0xd2, 0x78, 0x9f, 0x09, 0xfe,
+ 0xf4, 0x57, 0x56, 0x48, 0xd0, 0x11, 0xe6, 0x12, 0x53, 0x4a, 0xf6, 0xd9,
+ 0x43, 0x8e, 0x46, 0x38, 0x24, 0xf3, 0x6d, 0x43, 0xf3, 0xc7, 0x88, 0xfe,
+ 0x52, 0x2b, 0x2f, 0xaf, 0x23, 0x1f, 0xd4, 0x61, 0x90, 0x61, 0x1f, 0xd3,
+ 0x90, 0xa9, 0x1c, 0x23, 0x8f, 0x7b, 0xae, 0xa9, 0xdb, 0x6a, 0x7f, 0xf3,
+ 0x95, 0xf6, 0xdd, 0x3a, 0x38, 0x78, 0x24, 0xa7, 0x64, 0xe9, 0x3f, 0xd5,
+ 0x51, 0xa8, 0xfe, 0x81, 0xa4, 0x7e, 0x6c, 0x94, 0xce, 0x7e, 0x87, 0xe0,
+ 0x52, 0xae, 0x3d, 0x28, 0x22, 0x0c, 0x7e, 0x29, 0x29, 0xb1, 0x4b, 0xa1,
+ 0xa3, 0xbe, 0xe9, 0x95, 0x90, 0xea, 0xe7, 0xb0, 0x5a, 0xd4, 0x47, 0xa6,
+ 0x0f, 0xe7, 0x05, 0x9c, 0xe8, 0x8d, 0xdf, 0x80, 0x49, 0x4d, 0x67, 0x57,
+ 0x22, 0x0b, 0x41, 0xf8, 0xa0, 0xfd, 0x91, 0x9e, 0x7b, 0x79, 0xd9, 0xd9,
+ 0x5c, 0xd3, 0x98, 0x91, 0xdf, 0xba, 0x24, 0x37, 0x6c, 0xc2, 0x4a, 0x79,
+ 0xac, 0x3e, 0x8f, 0xd4, 0x7a, 0x94, 0x5d, 0xd5, 0x6d, 0x75, 0x78, 0xe7,
+ 0x56, 0xd0, 0xd1, 0x0e, 0x77, 0xcb, 0xb0, 0xf8, 0xae, 0x86, 0x9c, 0x6a,
+ 0x28, 0xa9, 0xb5, 0x55, 0x58, 0x6b, 0x1b, 0xa0, 0x68, 0x57, 0xc5, 0x4c,
+ 0x22, 0x4f, 0xca, 0x54, 0x5d, 0x5d, 0x6d, 0x3a, 0x24, 0xa6, 0x9b, 0xa9,
+ 0x69, 0xd6, 0x23, 0xe6, 0xa3, 0xe8, 0x37, 0xf7, 0x49, 0xf0, 0x85, 0x6d,
+ 0xce, 0x6c, 0xfa, 0x6d, 0x6f, 0xb8, 0x0f, 0x71, 0x03, 0xf2, 0xf8, 0x27,
+ 0x6f, 0xa7, 0xde, 0x4f, 0x8a, 0x4a, 0x6a, 0x8c, 0x61, 0xc8, 0x6a, 0x7f,
+ 0xb3, 0xb7, 0xf7, 0x61, 0x5e, 0x6b, 0xab, 0x3a, 0x06, 0x8d, 0x3c, 0x90,
+ 0x4e, 0x45, 0x76, 0xb8, 0xb6, 0xb0, 0x08, 0x1a, 0x69, 0xae, 0xe3, 0xe4,
+ 0x92, 0x9a, 0xc7, 0x1e, 0x62, 0x07, 0xc0, 0x0e, 0x49, 0xf0, 0x4c, 0xdc,
+ 0x07, 0x97, 0xfa, 0x96, 0x9d, 0xf6, 0x0f, 0xa3, 0xdd, 0xac, 0x1e, 0x0d,
+ 0xfe, 0xf5, 0xa1, 0x4d, 0x2e, 0x61, 0x2e, 0x78, 0x2e, 0xb0, 0xf3, 0x1c,
+ 0x34, 0x78, 0x04, 0x3c, 0x8c, 0x92, 0xe7, 0x1c, 0x6a, 0x0e, 0xdb, 0x00,
+ 0x06, 0xd7, 0xe9, 0xfa, 0x36, 0x9f, 0xfb, 0xf1, 0xec, 0x92, 0x9a, 0x16,
+ 0xd2, 0xeb, 0x2c, 0x75, 0x55, 0x3b, 0xda, 0x34, 0xb5, 0xfc, 0x11, 0xfc,
+ 0x91, 0xe6, 0x88, 0xda, 0x1c, 0xc0, 0x00, 0x1c, 0x68, 0x02, 0xd0, 0xc5,
+ 0xab, 0x19, 0xd5, 0x86, 0xd2, 0x25, 0xad, 0xd2, 0x40, 0x9f, 0xc7, 0xba,
+ 0xb5, 0xf6, 0x71, 0xa7, 0xb3, 0xef, 0x49, 0x4e, 0x47, 0xa4, 0xff, 0x00,
+ 0x0e, 0x11, 0x71, 0xb0, 0x9d, 0x90, 0xfd, 0xa7, 0x46, 0xc7, 0x69, 0xd4,
+ 0xfc, 0x56, 0x89, 0xc6, 0x6f, 0xee, 0xc1, 0x3e, 0x49, 0xda, 0xec, 0x8a,
+ 0x46, 0xc6, 0x16, 0x46, 0xa4, 0x03, 0x32, 0x09, 0xee, 0x52, 0x53, 0x8f,
+ 0x6e, 0x1b, 0xab, 0x24, 0x3d, 0xa4, 0x10, 0x60, 0x98, 0xee, 0xa0, 0x31,
+ 0x20, 0x87, 0x83, 0xa8, 0xe1, 0x6d, 0xbd, 0xbe, 0xa8, 0x6b, 0xac, 0x0d,
+ 0xf5, 0x7f, 0x3c, 0xb6, 0x60, 0xfc, 0x8a, 0x18, 0xa1, 0xa6, 0x34, 0xd3,
+ 0xb2, 0x4a, 0x70, 0x6c, 0xe9, 0xc6, 0xc7, 0xee, 0x7b, 0xdc, 0x7e, 0x00,
+ 0x01, 0xf8, 0x21, 0xbb, 0xa6, 0xb4, 0x70, 0x27, 0xe2, 0xba, 0x51, 0x43,
+ 0x07, 0x65, 0x17, 0xd1, 0x50, 0x12, 0xed, 0x07, 0x74, 0x94, 0xf1, 0x83,
+ 0x10, 0xbf, 0x33, 0x25, 0xd0, 0x03, 0x29, 0x6b, 0x2a, 0xd7, 0xcc, 0x7a,
+ 0x8e, 0xfc, 0xa1, 0x69, 0x0a, 0x2a, 0x15, 0xb5, 0xed, 0x87, 0x1d, 0x1b,
+ 0x1e, 0x13, 0xdc, 0xad, 0x2e, 0x93, 0x88, 0xdb, 0x71, 0xac, 0xc8, 0x73,
+ 0x41, 0xfb, 0x55, 0xb6, 0x5a, 0x3f, 0xa8, 0x5d, 0xb5, 0x9f, 0xf4, 0x5a,
+ 0x11, 0x5d, 0xd1, 0x70, 0x9f, 0xcb, 0x0b, 0x35, 0x07, 0xda, 0xe2, 0x04,
+ 0x8f, 0x2e, 0x12, 0x53, 0x87, 0xea, 0x47, 0xaa, 0xe2, 0x21, 0xb5, 0xbb,
+ 0xd2, 0x33, 0xdc, 0xc8, 0x12, 0xac, 0x53, 0x4b, 0xf2, 0x6e, 0x75, 0x00,
+ 0x34, 0x16, 0xb4, 0x13, 0xa4, 0x07, 0x03, 0x3d, 0xb5, 0xf0, 0x5a, 0x96,
+ 0x74, 0x5c, 0x47, 0xb1, 0xc1, 0xcf, 0x78, 0xde, 0xe0, 0xf2, 0x7d, 0xb3,
+ 0xb9, 0xa4, 0x11, 0x07, 0x6f, 0x1a, 0x29, 0x8e, 0x9d, 0x53, 0xad, 0x17,
+ 0x3c, 0xbc, 0x5a, 0x1b, 0xb3, 0xd8, 0x76, 0x88, 0x07, 0x4e, 0x02, 0x4a,
+ 0x79, 0xf6, 0x74, 0xbc, 0x6b, 0x6f, 0x74, 0x69, 0x76, 0x39, 0x35, 0xdb,
+ 0x5f, 0x91, 0xf7, 0x03, 0xfd, 0xc8, 0xee, 0xfa, 0xbf, 0x4b, 0xb8, 0x0b,
+ 0x42, 0xda, 0x29, 0xc1, 0xcd, 0xab, 0x26, 0xb3, 0xb4, 0xe4, 0x45, 0x77,
+ 0x03, 0xae, 0xf6, 0xc8, 0x6b, 0x1f, 0xaf, 0x70, 0x5c, 0xb5, 0x1a, 0x2b,
+ 0x31, 0x09, 0x29, 0xe4, 0xad, 0xfa, 0xb1, 0x5b, 0xb4, 0x68, 0xda, 0x7c,
+ 0x5a, 0x4a, 0x18, 0xe8, 0x59, 0xb4, 0xb6, 0x18, 0xcf, 0x5a, 0x38, 0x20,
+ 0xc1, 0x23, 0xce, 0x57, 0x64, 0x6b, 0x67, 0x68, 0x43, 0x7b, 0x5b, 0x1c,
+ 0x69, 0xe4, 0x92, 0x9e, 0x6a, 0xba, 0x29, 0x0c, 0xfb, 0x25, 0xf5, 0x58,
+ 0xdb, 0x2e, 0x9f, 0x44, 0xc4, 0x10, 0xe6, 0x8d, 0xde, 0xde, 0xda, 0x2b,
+ 0x38, 0x98, 0x97, 0xfa, 0x15, 0xfa, 0xad, 0x2d, 0xbc, 0x88, 0xb6, 0x62,
+ 0x01, 0x1e, 0x60, 0x95, 0x7b, 0x3e, 0x8f, 0x52, 0xad, 0xd5, 0xe9, 0x6d,
+ 0x44, 0x58, 0xc3, 0xe6, 0xde, 0xdf, 0x31, 0xa2, 0x95, 0x4f, 0x6d, 0xb5,
+ 0xb6, 0xd6, 0xce, 0xd7, 0x8d, 0xc3, 0x44, 0x94, 0xa6, 0xe3, 0x9e, 0xe7,
+ 0x5f, 0x05, 0x31, 0x54, 0x78, 0x4a, 0x9b, 0x4f, 0x71, 0xf8, 0xa6, 0xb2,
+ 0xc0, 0xd3, 0x06, 0x35, 0x49, 0x48, 0xdd, 0x8e, 0xc7, 0x08, 0x7c, 0x10,
+ 0x79, 0x10, 0x86, 0x08, 0xa4, 0x86, 0x3b, 0xdd, 0x59, 0xd0, 0x38, 0xea,
+ 0x41, 0x3e, 0x28, 0xb3, 0x3a, 0xfd, 0xc8, 0x19, 0x1e, 0xab, 0x3d, 0xcd,
+ 0x1b, 0x98, 0x7e, 0x93, 0x63, 0x5f, 0x92, 0x4a, 0x63, 0xd4, 0x59, 0x6b,
+ 0xf1, 0x2d, 0x18, 0x92, 0x32, 0x03, 0x49, 0xab, 0xb0, 0x2e, 0x1d, 0xbe,
+ 0x6a, 0x8d, 0x39, 0x75, 0x66, 0x63, 0x35, 0xfb, 0x4d, 0x77, 0xb4, 0x86,
+ 0xd9, 0x59, 0x9d, 0x08, 0xe7, 0x42, 0xaf, 0x57, 0x7c, 0xb6, 0x40, 0x24,
+ 0x76, 0xee, 0xa8, 0xe5, 0xb2, 0xa3, 0x78, 0xc8, 0x68, 0x2c, 0xb2, 0x08,
+ 0x79, 0x1c, 0x3b, 0xc3, 0x77, 0x98, 0x49, 0x4d, 0xab, 0x6f, 0x6e, 0xf0,
+ 0xc9, 0xda, 0x1c, 0x62, 0x4f, 0x1c, 0xad, 0x1b, 0x71, 0xea, 0xa6, 0xa0,
+ 0xe1, 0x26, 0x08, 0x0e, 0x24, 0xfe, 0x69, 0x30, 0x4a, 0xe6, 0x32, 0x32,
+ 0x77, 0x5d, 0x48, 0x6c, 0x10, 0xe7, 0x16, 0xb8, 0x83, 0xc4, 0x02, 0x57,
+ 0x51, 0x47, 0xa5, 0xd4, 0x7a, 0x78, 0x65, 0xbe, 0xef, 0x6e, 0xc7, 0xf6,
+ 0x32, 0x3b, 0xe8, 0x92, 0x91, 0x32, 0xdd, 0xad, 0xb0, 0x4f, 0x07, 0x4f,
+ 0xbe, 0x02, 0xac, 0xfe, 0x04, 0xf0, 0x85, 0x9c, 0x3e, 0xc2, 0xea, 0x58,
+ 0xd2, 0x7d, 0x27, 0x96, 0x89, 0x24, 0x93, 0xed, 0xf1, 0x2a, 0x07, 0x28,
+ 0x98, 0x86, 0xc8, 0x89, 0x9e, 0xd1, 0xf1, 0x49, 0x49, 0xeb, 0xa6, 0xe7,
+ 0xee, 0x75, 0x40, 0xbb, 0x64, 0x1d, 0x07, 0x20, 0xa5, 0xbc, 0xc6, 0xcd,
+ 0xbe, 0xef, 0x05, 0x0e, 0x9d, 0x99, 0x91, 0x8d, 0x6b, 0xc3, 0x68, 0x7b,
+ 0xea, 0x74, 0xb8, 0xc9, 0x0d, 0x97, 0x49, 0x30, 0xd3, 0xe6, 0x79, 0x95,
+ 0x77, 0xf6, 0xc6, 0x4f, 0xa7, 0x3f, 0x62, 0xfd, 0x63, 0x8d, 0xb2, 0xde,
+ 0x12, 0x53, 0x8f, 0x67, 0x5f, 0xc5, 0xd4, 0x36, 0xd6, 0x90, 0x4c, 0x17,
+ 0x49, 0x31, 0xf0, 0x50, 0xb3, 0xeb, 0x06, 0x3b, 0x9a, 0x59, 0x53, 0xda,
+ 0xc7, 0x91, 0xa3, 0x8b, 0x4b, 0xb6, 0xc7, 0x27, 0x4e, 0x74, 0xe1, 0x63,
+ 0x8a, 0x5b, 0x2d, 0x96, 0x76, 0x80, 0x23, 0xfd, 0xaa, 0xc5, 0x58, 0xf8,
+ 0xc0, 0xee, 0x2c, 0x68, 0x3a, 0xcc, 0x98, 0x3e, 0x49, 0x29, 0xd9, 0xab,
+ 0xab, 0x60, 0x1a, 0xce, 0xcb, 0x18, 0x01, 0xfc, 0xe9, 0xef, 0x1d, 0xfc,
+ 0xd0, 0x6a, 0xeb, 0x0c, 0xc8, 0xc8, 0x65, 0x75, 0xbd, 0xad, 0xc5, 0x6b,
+ 0x43, 0xed, 0x3a, 0x6f, 0xde, 0x26, 0x5a, 0xd9, 0xfc, 0xde, 0x0c, 0xac,
+ 0xb6, 0xe3, 0xd0, 0xfd, 0x1c, 0xc8, 0x13, 0xce, 0x92, 0x91, 0xc4, 0xaa,
+ 0x5f, 0xb4, 0x9e, 0x3b, 0x6a, 0x74, 0x1a, 0x44, 0x94, 0x94, 0xe9, 0xf5,
+ 0x5e, 0xb7, 0x4b, 0xb1, 0x45, 0x38, 0xc4, 0x7a, 0x8f, 0x30, 0xed, 0xa6,
+ 0x3d, 0xa3, 0xfb, 0xd3, 0xf4, 0x5c, 0xc7, 0x33, 0x18, 0xd9, 0x73, 0x43,
+ 0x9e, 0xf7, 0x18, 0xd6, 0x40, 0x6b, 0x74, 0x80, 0x56, 0x76, 0x07, 0x4d,
+ 0x66, 0x66, 0x57, 0xa4, 0x00, 0xac, 0x01, 0xb9, 0xd2, 0x7b, 0x0d, 0x3b,
+ 0x2d, 0x63, 0xf5, 0x56, 0xcf, 0x53, 0x7d, 0x57, 0xfa, 0x55, 0x46, 0xac,
+ 0x97, 0x10, 0x52, 0x53, 0x74, 0x75, 0x16, 0x6d, 0x79, 0x0c, 0xda, 0xe8,
+ 0x26, 0x49, 0xee, 0x07, 0x75, 0xca, 0xe4, 0x5d, 0x6d, 0xd9, 0x16, 0x64,
+ 0xd7, 0x71, 0xad, 0xae, 0x20, 0xea, 0x25, 0xa6, 0x38, 0x25, 0x6f, 0x59,
+ 0xf5, 0x7a, 0x90, 0x08, 0xb7, 0x30, 0x35, 0xa4, 0x6d, 0x2d, 0xd7, 0xbf,
+ 0xcd, 0x56, 0x7f, 0x45, 0xe9, 0x2d, 0x6e, 0xc3, 0x91, 0x63, 0x87, 0x8b,
+ 0x5a, 0x4c, 0xfe, 0x29, 0x29, 0x54, 0x7d, 0x66, 0xa5, 0x8c, 0x6d, 0x35,
+ 0xd8, 0x58, 0x18, 0x3e, 0x8b, 0x98, 0x4c, 0x81, 0xf0, 0xf1, 0x56, 0xd9,
+ 0xf5, 0xaf, 0x14, 0x40, 0x7b, 0xa7, 0xc4, 0x43, 0xbf, 0xb9, 0x51, 0x1d,
+ 0x13, 0xa6, 0xf1, 0x48, 0xb6, 0x49, 0xfa, 0x44, 0x44, 0xfd, 0xea, 0x63,
+ 0xea, 0xe8, 0x23, 0x73, 0x09, 0x8f, 0x38, 0x49, 0x4d, 0x83, 0xf5, 0x9a,
+ 0x8a, 0xed, 0x7d, 0x8f, 0xbf, 0xd4, 0x65, 0x86, 0x2b, 0x6b, 0x5a, 0x7d,
+ 0x81, 0xa3, 0xf3, 0xfe, 0x25, 0x4a, 0xbf, 0xac, 0xb8, 0x6e, 0x2c, 0x6d,
+ 0xd6, 0xb0, 0x1d, 0xdb, 0x9c, 0xe0, 0x4c, 0x18, 0x1d, 0xfc, 0x8a, 0xa6,
+ 0xdf, 0xab, 0xec, 0x69, 0x3b, 0xad, 0x60, 0x27, 0x8e, 0x1c, 0x9c, 0xf4,
+ 0x1a, 0xb5, 0x8b, 0x03, 0xbb, 0xc6, 0xc9, 0x13, 0xf8, 0x24, 0xa7, 0x43,
+ 0xfe, 0x71, 0xe1, 0x12, 0xd8, 0xba, 0xa0, 0x0f, 0xd2, 0xf7, 0x7d, 0xc8,
+ 0xcf, 0xeb, 0xf8, 0x20, 0xb7, 0x65, 0x8c, 0x2d, 0xef, 0xef, 0x69, 0x1e,
+ 0x1d, 0x96, 0x2f, 0xfc, 0xdb, 0x6e, 0xbb, 0xac, 0x90, 0x7f, 0x34, 0x34,
+ 0x7f, 0x12, 0x9f, 0xfe, 0x6d, 0x63, 0xba, 0x00, 0x79, 0x1e, 0x23, 0x68,
+ 0x49, 0x4f, 0x45, 0xfb, 0x57, 0x1b, 0x66, 0xff, 0x00, 0xcd, 0x02, 0x4b,
+ 0xa4, 0x40, 0x55, 0x72, 0xba, 0xa5, 0x39, 0x3d, 0x3a, 0xe7, 0xe3, 0x3c,
+ 0x02, 0xe6, 0x38, 0xb4, 0xc8, 0xdd, 0x23, 0xc9, 0x62, 0x8f, 0xaa, 0xdd,
+ 0x3d, 0xb6, 0x8b, 0x1e, 0xfb, 0x1c, 0xee, 0xed, 0xec, 0xef, 0x88, 0x47,
+ 0x67, 0x40, 0xe9, 0xcd, 0x78, 0x21, 0x8f, 0xdd, 0xf1, 0xd3, 0xf0, 0x49,
+ 0x4d, 0x7c, 0x4e, 0xb9, 0xd5, 0x19, 0x5e, 0x36, 0x38, 0x3b, 0x01, 0xf4,
+ 0xd9, 0x10, 0xd8, 0x63, 0x24, 0x35, 0xce, 0xdc, 0x09, 0x5d, 0x5d, 0xb9,
+ 0xb4, 0x35, 0xe6, 0xb6, 0xeb, 0x61, 0xed, 0x20, 0x76, 0x59, 0x27, 0xa4,
+ 0xf4, 0xc2, 0xc1, 0x35, 0xbb, 0x41, 0xfb, 0xca, 0xbf, 0xec, 0x6e, 0x9f,
+ 0xbb, 0xd5, 0x0c, 0xb0, 0x3c, 0x12, 0x64, 0xd8, 0x4e, 0xa7, 0x94, 0x94,
+ 0xee, 0x1c, 0xbc, 0x6a, 0xc4, 0xe4, 0x5a, 0xdd, 0x84, 0x13, 0x2e, 0x10,
+ 0x27, 0x90, 0xb3, 0xed, 0xfa, 0xc3, 0x86, 0xf3, 0x14, 0xb8, 0x96, 0x69,
+ 0xa8, 0x05, 0xbf, 0x96, 0x10, 0x2a, 0xc2, 0xc5, 0xad, 0x9a, 0xb7, 0x7b,
+ 0x75, 0x80, 0xe7, 0x17, 0x7e, 0x54, 0x7a, 0x5d, 0x4d, 0x22, 0x6b, 0xa1,
+ 0x9a, 0xe9, 0x04, 0x03, 0xfc, 0x12, 0x53, 0x4b, 0x2e, 0xf1, 0x90, 0xca,
+ 0xde, 0xeb, 0xb6, 0x39, 0x8f, 0xdc, 0x1d, 0xb6, 0x41, 0x64, 0xcf, 0xa6,
+ 0x67, 0x8e, 0x39, 0x53, 0xab, 0xaf, 0x31, 0xb7, 0xd5, 0x55, 0x9a, 0x31,
+ 0xe6, 0x0b, 0xe3, 0xdb, 0x27, 0xe1, 0xc6, 0xaa, 0xfd, 0x99, 0xd7, 0xda,
+ 0xc1, 0x56, 0xd6, 0x7a, 0x60, 0xc9, 0x68, 0x6f, 0x0a, 0x9e, 0x47, 0xe9,
+ 0x58, 0xe1, 0xb1, 0xb1, 0x3a, 0x13, 0xa2, 0x4a, 0x75, 0x46, 0x53, 0x5a,
+ 0x5d, 0xb5, 0xdb, 0xa0, 0x69, 0xb7, 0x59, 0x2a, 0x15, 0xf5, 0x2a, 0xef,
+ 0x0c, 0x06, 0x58, 0x5e, 0xdd, 0x41, 0x03, 0x47, 0x77, 0x03, 0xe0, 0xb9,
+ 0xd7, 0xe3, 0x96, 0xb7, 0x63, 0x5b, 0xb5, 0xc4, 0xce, 0xe6, 0x39, 0xc0,
+ 0xfe, 0x04, 0x21, 0x7a, 0x79, 0x92, 0x4b, 0x6f, 0x78, 0x03, 0xce, 0x75,
+ 0x1d, 0xfb, 0xa4, 0xa7, 0x6e, 0xfc, 0xf1, 0x57, 0x4e, 0x75, 0xcd, 0x02,
+ 0xcb, 0xa9, 0x3b, 0x0b, 0x09, 0xda, 0x49, 0x6b, 0xb6, 0x38, 0xe9, 0xe5,
+ 0xaa, 0xc0, 0x7d, 0xfd, 0x5e, 0x9c, 0x06, 0x7a, 0x59, 0x0d, 0xdb, 0x63,
+ 0xde, 0x03, 0x60, 0xee, 0x02, 0x49, 0x1c, 0x0f, 0x03, 0xaf, 0x65, 0x67,
+ 0x1a, 0x8c, 0x91, 0xa1, 0xb0, 0x98, 0x3b, 0xa2, 0x35, 0x24, 0x99, 0x32,
+ 0xaf, 0x16, 0xde, 0x59, 0xef, 0x79, 0x00, 0xfc, 0x02, 0x4a, 0x67, 0x89,
+ 0xd4, 0xb1, 0x1d, 0x8a, 0xdb, 0x5e, 0xed, 0xa4, 0x30, 0x07, 0xee, 0x20,
+ 0x7b, 0x80, 0x82, 0xab, 0xdb, 0xd7, 0x3a, 0x73, 0x2f, 0xad, 0xad, 0x2e,
+ 0x3b, 0xe3, 0xdd, 0x23, 0x69, 0x03, 0x9e, 0xe8, 0x56, 0x61, 0xd6, 0x5c,
+ 0x77, 0x30, 0x3a, 0x44, 0x10, 0x75, 0xf9, 0xa6, 0x6e, 0x0d, 0x2c, 0x61,
+ 0x05, 0xad, 0x8f, 0x0d, 0xa0, 0x4a, 0x4a, 0x74, 0x47, 0x54, 0xc7, 0x7b,
+ 0x83, 0x2a, 0x83, 0x22, 0x64, 0xc2, 0x27, 0xdb, 0x68, 0x75, 0x7b, 0x9c,
+ 0xf6, 0xea, 0x60, 0x02, 0x40, 0x2b, 0x19, 0xd8, 0x14, 0xd8, 0xe9, 0x2d,
+ 0x1e, 0x40, 0x84, 0xdf, 0xb3, 0xe9, 0x6e, 0x8c, 0xac, 0x7c, 0x74, 0x49,
+ 0x4d, 0xbb, 0x3a, 0x86, 0x3b, 0x73, 0xa9, 0xae, 0xb7, 0xb7, 0x6d, 0xad,
+ 0x78, 0x7e, 0xe7, 0x40, 0xdc, 0xd0, 0x0b, 0x64, 0xf6, 0x4f, 0x93, 0xd4,
+ 0xf0, 0xcc, 0x06, 0x96, 0x38, 0x8d, 0x08, 0x04, 0x1e, 0x3e, 0x7d, 0xd5,
+ 0x27, 0xe1, 0x54, 0xd1, 0x0e, 0x00, 0xc6, 0xb0, 0xa9, 0x5f, 0x8b, 0x53,
+ 0x7e, 0x8b, 0x7e, 0x70, 0x92, 0x90, 0x66, 0x1c, 0x43, 0xd4, 0x69, 0xcb,
+ 0xc7, 0x6f, 0xa7, 0x60, 0x25, 0xaf, 0x68, 0x27, 0x6b, 0xa7, 0x83, 0x1f,
+ 0x02, 0xba, 0xfe, 0x89, 0x91, 0xb5, 0xee, 0xa8, 0x9d, 0x1e, 0x03, 0x87,
+ 0xc5, 0x71, 0xc6, 0xbd, 0xa5, 0xae, 0x02, 0x36, 0xad, 0xee, 0x9f, 0x7b,
+ 0x98, 0x6b, 0xb6, 0x20, 0xb4, 0xc1, 0xf8, 0x24, 0xa7, 0x4b, 0xeb, 0x4d,
+ 0x37, 0x0e, 0x99, 0x66, 0x46, 0x3c, 0xfa, 0x98, 0xa4, 0x5a, 0xd0, 0x3b,
+ 0xb4, 0x68, 0xf1, 0xfe, 0x6a, 0xe7, 0x9b, 0xd6, 0x4d, 0x78, 0xc2, 0xd6,
+ 0x81, 0x6b, 0x5f, 0x13, 0x58, 0x88, 0x04, 0xf8, 0x4f, 0x8f, 0x75, 0xdb,
+ 0xbb, 0x65, 0xd5, 0x41, 0xd6, 0xbb, 0x1b, 0x04, 0x78, 0x87, 0x08, 0x5c,
+ 0x1e, 0x4f, 0x4b, 0x38, 0xf9, 0x76, 0xe3, 0xeb, 0xb5, 0x84, 0x00, 0x07,
+ 0x06, 0x07, 0x3f, 0x30, 0x92, 0x92, 0x57, 0xd7, 0x2e, 0x36, 0x6a, 0xc3,
+ 0x5b, 0x60, 0x08, 0xdb, 0x20, 0xf9, 0xf9, 0x15, 0x6f, 0xf6, 0xed, 0x7b,
+ 0x36, 0xef, 0x66, 0xff, 0x00, 0xeb, 0x69, 0xfd, 0xff, 0x00, 0x25, 0x5d,
+ 0x98, 0x4d, 0x6e, 0xd0, 0x4f, 0x06, 0x60, 0xac, 0x6f, 0x4b, 0xf5, 0xfd,
+ 0xbd, 0xbd, 0x5f, 0xfb, 0xf2, 0x4a, 0x76, 0x8d, 0x3b, 0x5a, 0x06, 0xd2,
+ 0x00, 0xee, 0x7f, 0xdc, 0x9a, 0xb0, 0xcd, 0x43, 0x84, 0x78, 0x1f, 0x35,
+ 0x17, 0x58, 0x48, 0x99, 0x31, 0xdc, 0xa9, 0x06, 0x86, 0xfb, 0x88, 0x1a,
+ 0xa4, 0xa6, 0x7b, 0x98, 0x0c, 0x40, 0x88, 0xd7, 0xc1, 0x57, 0x36, 0x39,
+ 0xb2, 0x41, 0x82, 0xad, 0x00, 0xd2, 0xcd, 0x5a, 0x4c, 0xe9, 0xdf, 0xf8,
+ 0x2a, 0xf9, 0x1b, 0x03, 0x83, 0x43, 0x7d, 0xa0, 0x82, 0xe8, 0x71, 0x92,
+ 0x92, 0x9b, 0xdd, 0x1f, 0x2c, 0xd4, 0x6c, 0xb8, 0xb2, 0x1c, 0x7d, 0xa1,
+ 0xed, 0x89, 0x8d, 0x0c, 0x70, 0xae, 0xbb, 0xa8, 0x5b, 0x74, 0xb4, 0xb5,
+ 0xce, 0x6f, 0x8b, 0x9e, 0x7f, 0x20, 0x54, 0xb1, 0xee, 0xa6, 0xd2, 0xef,
+ 0xb2, 0x54, 0x2b, 0x63, 0x7b, 0x44, 0x9f, 0xc6, 0x4a, 0x29, 0x66, 0x43,
+ 0xb5, 0x07, 0x6f, 0xc8, 0x24, 0xa6, 0x63, 0x20, 0x83, 0x3e, 0x93, 0x23,
+ 0xe1, 0x2a, 0x4e, 0xcb, 0xb3, 0x6f, 0xb4, 0x34, 0x1e, 0xda, 0x28, 0x57,
+ 0x87, 0x91, 0xba, 0x4b, 0xa5, 0xa4, 0x77, 0x99, 0x95, 0x60, 0xe1, 0x34,
+ 0x34, 0x3b, 0x92, 0x7b, 0x19, 0x49, 0x48, 0x59, 0x7e, 0x43, 0xb9, 0x74,
+ 0x7c, 0x34, 0x44, 0x22, 0xd7, 0x6a, 0x4f, 0xc2, 0x65, 0x1a, 0xba, 0x0f,
+ 0x07, 0x41, 0xe4, 0x88, 0xda, 0x80, 0x33, 0x1f, 0x7f, 0x29, 0x29, 0xaa,
+ 0xc6, 0x59, 0xdd, 0x1e, 0xaa, 0x9e, 0xf3, 0x04, 0xc0, 0xf1, 0x46, 0xf4,
+ 0xe0, 0xe9, 0xa2, 0x98, 0x1a, 0x44, 0xc4, 0x73, 0xaa, 0x4a, 0x59, 0xb5,
+ 0x36, 0x7d, 0xce, 0x3f, 0x20, 0xa2, 0xe7, 0x54, 0x0c, 0x34, 0x12, 0x63,
+ 0xc5, 0x12, 0x18, 0x07, 0x8a, 0x88, 0xd8, 0x07, 0x1e, 0xef, 0x24, 0x94,
+ 0xc0, 0x39, 0xa3, 0x46, 0x80, 0x0f, 0x33, 0xa9, 0x2a, 0x1a, 0x12, 0x27,
+ 0x99, 0xd3, 0xb2, 0x23, 0xdc, 0x07, 0x97, 0x03, 0xcc, 0x92, 0xa1, 0xb0,
+ 0x17, 0xee, 0x24, 0x47, 0x92, 0x4a, 0x5b, 0xb1, 0x9d, 0x3b, 0x26, 0x05,
+ 0xa3, 0x91, 0xf1, 0xf2, 0xfc, 0x54, 0xb6, 0xd6, 0x34, 0x71, 0x13, 0xe0,
+ 0xa2, 0x6c, 0xab, 0x81, 0xa0, 0x1c, 0x94, 0x94, 0xc3, 0x76, 0xee, 0xc2,
+ 0x07, 0x09, 0xc3, 0x8f, 0x23, 0x48, 0x4e, 0x4d, 0x7f, 0x9b, 0xa8, 0xf1,
+ 0xff, 0x00, 0x7a, 0x69, 0x60, 0xf2, 0xf3, 0x29, 0x29, 0x13, 0xec, 0x32,
+ 0x43, 0x41, 0x77, 0xfa, 0xf9, 0x21, 0xb8, 0x5c, 0x5d, 0xb2, 0x08, 0x1f,
+ 0x87, 0x9a, 0xb8, 0x1b, 0x58, 0xd6, 0x44, 0x94, 0x37, 0x5b, 0x53, 0x46,
+ 0xe2, 0x35, 0x1a, 0x0f, 0x8a, 0x4a, 0x40, 0x29, 0x92, 0x26, 0x1c, 0xee,
+ 0xca, 0x62, 0x82, 0x01, 0x10, 0x04, 0xf7, 0x02, 0x4a, 0x23, 0x6e, 0x06,
+ 0x5c, 0x46, 0xa3, 0x84, 0xc2, 0xc2, 0x49, 0x2e, 0xd0, 0xa4, 0xa5, 0xea,
+ 0x63, 0x1a, 0x49, 0x70, 0x92, 0x04, 0x00, 0xa4, 0x03, 0x66, 0x76, 0xc9,
+ 0x51, 0x0e, 0xd4, 0xc7, 0x07, 0xb4, 0x80, 0x13, 0x8b, 0x5a, 0x0e, 0xae,
+ 0x1f, 0x7a, 0x4a, 0x56, 0xc1, 0xb8, 0x9d, 0xa2, 0x7c, 0xf5, 0x43, 0x2d,
+ 0x36, 0x3e, 0x1d, 0x00, 0x0f, 0x04, 0xf6, 0x64, 0x56, 0xdd, 0x37, 0xb6,
+ 0x67, 0x5d, 0x47, 0x74, 0x27, 0x65, 0xe2, 0xb0, 0x81, 0xeb, 0x56, 0x0f,
+ 0x9b, 0x87, 0xf7, 0xa4, 0xa4, 0xde, 0x88, 0x1a, 0x34, 0x0f, 0x9a, 0x1d,
+ 0xad, 0x73, 0x78, 0xe4, 0xf6, 0x0a, 0x0f, 0xea, 0x18, 0x91, 0x3f, 0x68,
+ 0xab, 0xc3, 0xe9, 0xb7, 0x9f, 0xbd, 0x00, 0xf5, 0x4c, 0x1d, 0x5c, 0x72,
+ 0xaa, 0x8e, 0xde, 0xe0, 0x92, 0x99, 0xbd, 0xac, 0x69, 0x31, 0xac, 0xfc,
+ 0x95, 0x3b, 0x00, 0x2d, 0x2e, 0x23, 0xe4, 0xa4, 0xee, 0xaf, 0xd3, 0x5c,
+ 0xe3, 0xfa, 0xc3, 0x04, 0x0e, 0x64, 0x76, 0xf8, 0x2a, 0x77, 0x75, 0x4c,
+ 0x03, 0x3b, 0x6e, 0x6e, 0x9e, 0x7f, 0xec, 0x49, 0x4c, 0x2d, 0x6e, 0x82,
+ 0x07, 0x0b, 0x46, 0x82, 0x3d, 0x26, 0x79, 0x68, 0x56, 0x45, 0xfd, 0x4f,
+ 0x0c, 0x8d, 0x2e, 0x04, 0xf2, 0x20, 0x1f, 0xee, 0x5a, 0x98, 0x84, 0x1a,
+ 0xdc, 0xce, 0xe4, 0x48, 0x49, 0x4f, 0x49, 0xd2, 0xed, 0x2f, 0xc7, 0xd8,
+ 0x4c, 0xb9, 0x9f, 0x91, 0x67, 0x75, 0xfc, 0x6d, 0xb7, 0x57, 0x90, 0xd0,
+ 0x4b, 0x5f, 0xec, 0x79, 0x1e, 0x23, 0x85, 0x3e, 0x95, 0x71, 0x6d, 0xcd,
+ 0x69, 0xe1, 0xfa, 0x1f, 0x9a, 0xd6, 0xcf, 0xa3, 0xd5, 0xc6, 0x7b, 0x36,
+ 0xee, 0x78, 0x1b, 0x98, 0x3b, 0xee, 0x1a, 0x84, 0x94, 0xf3, 0x94, 0xb4,
+ 0x06, 0xe8, 0xdd, 0xa3, 0x9d, 0xc7, 0x95, 0x8f, 0x38, 0xdf, 0x6f, 0xf4,
+ 0x7e, 0xcf, 0xfa, 0x5f, 0x5b, 0xf9, 0xdd, 0xc6, 0x66, 0x66, 0x61, 0x68,
+ 0x55, 0xd4, 0x71, 0x49, 0x20, 0x92, 0x1d, 0xdc, 0x6d, 0x32, 0x85, 0xf6,
+ 0x9c, 0x6d, 0xf1, 0xe9, 0x18, 0xf5, 0xbd, 0x5f, 0x53, 0xbc, 0xf1, 0x31,
+ 0xca, 0x4a, 0x6d, 0x7e, 0xcf, 0x6b, 0x9b, 0xb9, 0x8e, 0x04, 0x0f, 0x8f,
+ 0xf1, 0x52, 0x6e, 0x1b, 0x47, 0x69, 0x23, 0xcd, 0x5b, 0x65, 0x7a, 0x19,
+ 0xd4, 0x26, 0xac, 0xd2, 0xd2, 0x4c, 0x4c, 0x73, 0x04, 0x04, 0x94, 0xd5,
+ 0x2c, 0x2d, 0x91, 0xb3, 0x5e, 0xd0, 0xdd, 0x3f, 0xea, 0x90, 0x2d, 0xc7,
+ 0x0f, 0xd5, 0xcd, 0x20, 0x03, 0x13, 0xc2, 0xd2, 0x7b, 0x18, 0xe6, 0xb9,
+ 0xed, 0x6e, 0xd6, 0x34, 0x4b, 0x9e, 0x4c, 0x81, 0xf3, 0x30, 0x82, 0xcf,
+ 0x4d, 0xe4, 0x35, 0x8e, 0x24, 0xfe, 0xef, 0x84, 0xfd, 0xe9, 0x29, 0xab,
+ 0x84, 0xfa, 0x70, 0x9f, 0x61, 0xb5, 0x8e, 0xda, 0xe8, 0xdb, 0xb4, 0x4f,
+ 0x1f, 0x15, 0x68, 0xf5, 0x7c, 0x70, 0x74, 0xa6, 0xd2, 0x3e, 0x03, 0xf8,
+ 0x95, 0x2f, 0xb3, 0x59, 0x24, 0xc1, 0xdb, 0xf1, 0x1f, 0xdc, 0x87, 0x66,
+ 0x28, 0x8e, 0x4e, 0xef, 0x0e, 0x52, 0x53, 0x27, 0x75, 0xdc, 0x71, 0xaf,
+ 0xa3, 0x64, 0x71, 0xf9, 0xbf, 0xde, 0xa2, 0xff, 0x00, 0xac, 0x15, 0x44,
+ 0x0c, 0x7b, 0x08, 0xf1, 0x96, 0xaa, 0xee, 0xc7, 0xd3, 0x5f, 0xc7, 0x45,
+ 0x11, 0x43, 0x08, 0xe3, 0x5f, 0x2e, 0xe9, 0x29, 0x3f, 0xfc, 0xe0, 0x6f,
+ 0x6c, 0x67, 0x0f, 0x32, 0xf1, 0xfd, 0xc9, 0xbf, 0xe7, 0x07, 0x66, 0xe3,
+ 0xeb, 0xfd, 0x7f, 0xfc, 0xc5, 0x07, 0xec, 0xc3, 0xe4, 0x7e, 0x4a, 0x5e,
+ 0x87, 0x71, 0x30, 0x0a, 0x4a, 0x49, 0xfb, 0x76, 0xd2, 0x67, 0xec, 0xd2,
+ 0x3c, 0xde, 0x78, 0xff, 0x00, 0x35, 0x48, 0xf5, 0xeb, 0xb8, 0x6e, 0x33,
+ 0x1b, 0x13, 0x32, 0xf2, 0x7e, 0x5f, 0x45, 0x44, 0x54, 0x48, 0x02, 0x5a,
+ 0x3e, 0x1c, 0xfe, 0x29, 0x9d, 0x40, 0xe7, 0x53, 0xf0, 0xff, 0x00, 0xcc,
+ 0x52, 0x53, 0x01, 0xd7, 0xf3, 0x8c, 0x8f, 0xb3, 0xd7, 0xf1, 0x92, 0x53,
+ 0x1e, 0xbb, 0xd4, 0x5c, 0x0c, 0x51, 0x58, 0x3f, 0xda, 0xfe, 0xf4, 0xce,
+ 0xc7, 0x74, 0x71, 0xa7, 0x69, 0x50, 0x14, 0xba, 0x46, 0x82, 0x7b, 0xeb,
+ 0xaf, 0xdc, 0x92, 0x96, 0x3d, 0x67, 0xa9, 0x4c, 0x6c, 0xac, 0x78, 0x7b,
+ 0x4e, 0x9f, 0x8a, 0x5f, 0xb5, 0xba, 0xa7, 0x11, 0x5c, 0xf8, 0xed, 0x3f,
+ 0x90, 0x94, 0x41, 0x4c, 0x19, 0x3a, 0x0f, 0x3f, 0xf6, 0xa7, 0x15, 0x30,
+ 0x0d, 0x34, 0x71, 0xe6, 0x4a, 0x4a, 0x6b, 0x9e, 0xa1, 0xd5, 0x04, 0xcd,
+ 0x8d, 0x20, 0x9f, 0xdc, 0x0a, 0x27, 0x3f, 0xaa, 0x6b, 0xfa, 0x66, 0x8d,
+ 0x79, 0xd8, 0xd0, 0x55, 0x87, 0x56, 0xd3, 0xf4, 0x80, 0x01, 0x33, 0xa8,
+ 0x6b, 0x80, 0xdb, 0xa1, 0xf1, 0x09, 0x29, 0xae, 0x7a, 0x87, 0x54, 0x24,
+ 0x4e, 0x4f, 0xdc, 0xd6, 0xc7, 0xfd, 0x4a, 0x87, 0xda, 0x3a, 0x8b, 0x8c,
+ 0xbb, 0x21, 0xdf, 0x1d, 0x07, 0xf0, 0x56, 0x5b, 0x40, 0x99, 0xe6, 0x51,
+ 0x1b, 0x4c, 0x47, 0x87, 0x89, 0x13, 0xfc, 0x52, 0x53, 0x48, 0xd9, 0x9c,
+ 0xe1, 0xae, 0x4d, 0x91, 0xe0, 0x1d, 0xfd, 0xc9, 0x13, 0x96, 0x47, 0xbe,
+ 0xfb, 0x7e, 0xf2, 0xb4, 0x3d, 0x02, 0x4c, 0xb7, 0xe2, 0x98, 0x54, 0x09,
+ 0xdb, 0x00, 0x6a, 0x92, 0x9c, 0xd3, 0x55, 0xce, 0x01, 0xbe, 0xa5, 0x91,
+ 0xe6, 0xf2, 0xa2, 0xec, 0x77, 0x97, 0x6a, 0xf7, 0x13, 0xdf, 0x53, 0xfd,
+ 0xeb, 0x55, 0xf4, 0xb4, 0x1d, 0x07, 0xc4, 0x94, 0x03, 0x50, 0xe4, 0x24,
+ 0xa6, 0x81, 0xc5, 0x21, 0xba, 0x4a, 0x9d, 0x78, 0xed, 0xdb, 0xe9, 0xbb,
+ 0x5a, 0xdc, 0x65, 0xc3, 0x9d, 0xae, 0x1c, 0x38, 0x2b, 0xc2, 0xb9, 0x01,
+ 0xa7, 0x89, 0xfa, 0x2a, 0x6d, 0xa6, 0xad, 0xdc, 0x13, 0x3d, 0xc4, 0x68,
+ 0x92, 0x9c, 0xc7, 0xe0, 0x06, 0x8d, 0x5b, 0xa7, 0x68, 0xee, 0xa2, 0x3a,
+ 0x49, 0x2d, 0xdc, 0xe0, 0xda, 0xda, 0xee, 0x0d, 0x84, 0x36, 0x7e, 0x1d,
+ 0xd6, 0xeb, 0x2b, 0x10, 0x5a, 0x5b, 0xea, 0x30, 0x7b, 0x80, 0x3c, 0x83,
+ 0xe3, 0xf0, 0xf1, 0x54, 0xae, 0x6b, 0x9c, 0xf2, 0xe7, 0xea, 0x4f, 0x8a,
+ 0x4a, 0x73, 0x5d, 0xd2, 0x6d, 0x6b, 0x5c, 0xe6, 0x34, 0x58, 0xd0, 0x24,
+ 0xba, 0xb2, 0x1f, 0xf7, 0x81, 0xaa, 0xa8, 0xec, 0x61, 0xdb, 0xef, 0x5a,
+ 0x84, 0x3e, 0xbb, 0x03, 0x98, 0x4b, 0x5c, 0x3e, 0x8b, 0x87, 0xd2, 0x1f,
+ 0x34, 0xb2, 0x43, 0x6e, 0xa8, 0x64, 0xb5, 0xa0, 0x59, 0xbb, 0x65, 0xc0,
+ 0x68, 0x37, 0x1d, 0x5a, 0xfd, 0x3f, 0x7b, 0xf2, 0xa4, 0xa7, 0x1c, 0xe3,
+ 0x69, 0xe1, 0xf2, 0x51, 0x38, 0xa4, 0x6a, 0x74, 0x95, 0x7c, 0x31, 0xa5,
+ 0xc6, 0x5c, 0xd8, 0xf0, 0xee, 0x54, 0x1f, 0x4e, 0xd0, 0x4c, 0x6e, 0x03,
+ 0xc4, 0x24, 0xa6, 0x83, 0xf1, 0xda, 0xd1, 0xe3, 0xe6, 0xba, 0x3c, 0x47,
+ 0x3b, 0xd3, 0x6b, 0x87, 0x25, 0xad, 0x3f, 0x82, 0xcc, 0xde, 0xf7, 0x34,
+ 0x35, 0x98, 0xec, 0x79, 0xf2, 0xd3, 0xef, 0x5a, 0xb8, 0x1a, 0xd1, 0x5c,
+ 0xb7, 0x69, 0x00, 0x34, 0xb7, 0xc1, 0x25, 0x3a, 0x18, 0xef, 0x87, 0x07,
+ 0x37, 0x83, 0x07, 0xe6, 0xba, 0x6a, 0xdd, 0xea, 0x54, 0xcb, 0x3b, 0xc6,
+ 0xbf, 0x15, 0xcc, 0xe3, 0x36, 0x3d, 0xbd, 0xc7, 0x1f, 0x25, 0xd0, 0x74,
+ 0xc3, 0xb9, 0xaf, 0xad, 0xc7, 0x51, 0x04, 0x42, 0x4a, 0x79, 0xfc, 0x9e,
+ 0x94, 0xda, 0x3a, 0xad, 0xed, 0x0d, 0xf6, 0x3c, 0x1b, 0x19, 0xf0, 0x76,
+ 0xbf, 0x81, 0x55, 0x3e, 0xc6, 0xef, 0xb4, 0xcc, 0x7b, 0x7f, 0x8a, 0xec,
+ 0x33, 0x30, 0xdb, 0x61, 0x65, 0xa3, 0xe9, 0x30, 0x16, 0x9f, 0xea, 0x95,
+ 0x91, 0xf6, 0x5f, 0xd6, 0x22, 0x3c, 0x92, 0x53, 0xff, 0xd9
+};
+size_t demo_008_jpg_len = 17842;
diff --git a/lib/libesp32/JPEGDEC/examples/esp32_jpeg/esp32_jpeg.ino b/lib/libesp32/JPEGDEC/examples/esp32_jpeg/esp32_jpeg.ino
new file mode 100644
index 000000000..694c27120
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/esp32_jpeg/esp32_jpeg.ino
@@ -0,0 +1,92 @@
+//
+// JPEG thumbnail decode test
+//
+// This example sketch decodes an EXIF thumbnail image
+// embedded in a 12 megapixel photo taken on a mobile phone
+//
+// It's written to run on an ESP32 connected to a ILI9341 LCD
+// although it can certainly be compiled on other target MCUs and displays
+//
+#include
+#include "JPEGDEC.h"
+#include "../test_images/thumb_test.h"
+
+// These pin definitions are for a custom ESP32
+// board. Please change them to match the display
+// and board you're using
+
+#define CS_PIN 4
+#define DC_PIN 12
+#define LED_PIN 16
+#define RESET_PIN -1
+#define MISO_PIN 19
+#define MOSI_PIN 23
+#define SCK_PIN 18
+
+// Static instance of the JPEGDEC structure. It requires about
+// 17.5K of RAM. You can allocate it dynamically too. Internally it
+// does not allocate or free any memory; all memory management decisions
+// are left to you
+JPEGDEC jpeg;
+
+// The LCD display library instance
+SPILCD lcd;
+//
+// Pixel drawing callback
+// called once for each set of MCUs (minimum coded units).
+// JPEGDEC will try to send as many pixels as it can per call.
+// In this case, it's as many as can fit in
+// the internal 4K pixel buffer. This allows it to run more
+// efficiently than calling this for every MCU. For this demo, the
+// MCUs are only 4x4 pixels each since we ask to decode the image
+// at 1/4 size
+//
+int drawMCUs(JPEGDRAW *pDraw)
+{
+ int iCount;
+ iCount = pDraw->iWidth * pDraw->iHeight; // number of pixels to draw in this call
+// Serial.printf("Draw pos = %d,%d. size = %d x %d\n", pDraw->x, pDraw->y, pDraw->iWidth, pDraw->iHeight);
+ spilcdSetPosition(&lcd, pDraw->x, pDraw->y, pDraw->iWidth, pDraw->iHeight, DRAW_TO_LCD);
+ spilcdWriteDataBlock(&lcd, (uint8_t *)pDraw->pPixels, iCount*2, DRAW_TO_LCD | DRAW_WITH_DMA);
+ return 1; // returning true (1) tells JPEGDEC to continue decoding. Returning false (0) would quit decoding immediately.
+} /* drawMCUs() */
+
+void setup()
+{
+ Serial.begin(115200);
+ while (!Serial) {};
+ spilcdInit(&lcd, LCD_ILI9341, FLAGS_NONE, 40000000, CS_PIN, DC_PIN, RESET_PIN, LED_PIN, MISO_PIN, MOSI_PIN, SCK_PIN);
+ spilcdSetOrientation(&lcd, LCD_ORIENTATION_90);
+ spilcdFill(&lcd, 0, DRAW_TO_LCD); // erase display to black
+ spilcdWriteString(&lcd, 46,0,(char *)"JPEG Thumbnail test", 0x7e0,0,FONT_12x16, DRAW_TO_LCD);
+ delay(4000);
+} /* setup() */
+
+void loop() {
+long lTime;
+char szTemp[64];
+
+ // Open a large JPEG image stored in FLASH memory (included as thumb_test.h)
+ // This image is 12 megapixels, but has a 320x240 embedded thumbnail in it
+ if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), drawMCUs))
+ {
+ Serial.println("Successfully opened JPEG image");
+ Serial.printf("Image size: %d x %d, orientation: %d, bpp: %d\n", jpeg.getWidth(),
+ jpeg.getHeight(), jpeg.getOrientation(), jpeg.getBpp());
+ if (jpeg.hasThumb())
+ Serial.printf("Thumbnail present: %d x %d\n", jpeg.getThumbWidth(), jpeg.getThumbHeight());
+ jpeg.setPixelType(RGB565_BIG_ENDIAN); // The SPI LCD wants the 16-bit pixels in big-endian order
+ lTime = micros();
+ // Draw the thumbnail image in the middle of the display (upper left corner = 120,100) at 1/4 scale
+ if (jpeg.decode(120,100,JPEG_SCALE_QUARTER | JPEG_EXIF_THUMBNAIL))
+ {
+ lTime = micros() - lTime;
+ sprintf(szTemp, "Successfully decoded image in %d us", (int)lTime);
+ Serial.println(szTemp);
+ spilcdWriteString(&lcd, 0, 200, szTemp, 0xffe0, 0, FONT_8x8, DRAW_TO_LCD);
+ }
+ jpeg.close();
+ }
+
+ delay(10000); // repeat every 10 seconds
+}
diff --git a/lib/libesp32/JPEGDEC/examples/jpeg_perf_test/jpeg_perf_test.ino b/lib/libesp32/JPEGDEC/examples/jpeg_perf_test/jpeg_perf_test.ino
new file mode 100644
index 000000000..f17951160
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/examples/jpeg_perf_test/jpeg_perf_test.ino
@@ -0,0 +1,55 @@
+//
+// Perf Test
+//
+#include
+#include "../test_images/tulips.h" // 640x480 56k byte test image
+JPEGDEC jpeg;
+
+int JPEGDraw(JPEGDRAW *pDraw)
+{
+ // do nothing
+ return 1; // continue decode
+} /* JPEGDraw() */
+
+void setup() {
+ Serial.begin(115200);
+ delay(100); // allow time for Serial to start
+} /* setup() */
+
+void loop() {
+long lTime;
+
+ if (jpeg.openFLASH((uint8_t *)tulips, sizeof(tulips), JPEGDraw)) {
+ lTime = micros();
+ if (jpeg.decode(0,0,0)) { // full sized decode
+ lTime = micros() - lTime;
+ // Serial.printf("full sized decode in %d us\n", (int)lTime);
+ }
+ jpeg.close();
+ }
+ if (jpeg.openFLASH((uint8_t *)tulips, sizeof(tulips), JPEGDraw)) {
+ lTime = micros();
+ if (jpeg.decode(0,0,JPEG_SCALE_HALF)) { // 1/2 sized decode
+ lTime = micros() - lTime;
+ // Serial.printf("half sized decode in %d us\n", (int)lTime);
+ }
+ jpeg.close();
+ }
+ if (jpeg.openFLASH((uint8_t *)tulips, sizeof(tulips), JPEGDraw)) {
+ lTime = micros();
+ if (jpeg.decode(0,0,JPEG_SCALE_QUARTER)) { // 1/4 sized decode
+ lTime = micros() - lTime;
+ // Serial.printf("quarter sized decode in %d us\n", (int)lTime);
+ }
+ jpeg.close();
+ }
+ if (jpeg.openFLASH((uint8_t *)tulips, sizeof(tulips), JPEGDraw)) {
+ lTime = micros();
+ if (jpeg.decode(0,0,JPEG_SCALE_EIGHTH)) { // 1/8 sized decode
+ lTime = micros() - lTime;
+ // Serial.printf("eighth sized decode in %d us\n", (int)lTime);
+ }
+ jpeg.close();
+ }
+ delay(5000);
+} /* loop() */
diff --git a/lib/libesp32/JPEGDEC/library.json b/lib/libesp32/JPEGDEC/library.json
new file mode 100644
index 000000000..4219b8101
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/library.json
@@ -0,0 +1,20 @@
+{
+ "name": "JPEGDEC",
+ "version": "1.2.7",
+ "description": "A fast JPEG library with a unique set of functions to make viewing image on microcontrollers easy. Includes fast downscaling options and the ability to view Exif embedded thumbnails. Supports baseline grayscale and color images with Huffman encoding.",
+ "repository":
+ {
+ "type": "git",
+ "url": "https://github.com/bitbank2/JPEGDEC"
+ },
+ "authors":
+ [
+ {
+ "name": "Larry Bank"
+ }
+ ],
+ "license": "Apache License 2.0",
+ "homepage": "https://github.com/bitbank2/JPEGDEC",
+ "frameworks": "*",
+ "platforms": "*"
+}
diff --git a/lib/libesp32/JPEGDEC/library.properties b/lib/libesp32/JPEGDEC/library.properties
new file mode 100644
index 000000000..65f5d4417
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/library.properties
@@ -0,0 +1,10 @@
+name=JPEGDEC
+version=1.5.0
+author=Larry Bank
+maintainer=Larry Bank
+sentence=Optimized JPEG decoder for MCUs with 32K+ RAM.
+paragraph=A fast JPEG library with a unique set of functions to make viewing image on microcontrollers easy. Includes fast downscaling options and the ability to view Exif embedded thumbnails. Supports baseline grayscale and color images with Huffman encoding.
+category=Display
+url=https://github.com/bitbank2/JPEGDEC
+architectures=*
+includes=JPEGDEC.h
diff --git a/lib/libesp32/JPEGDEC/linux/main.c b/lib/libesp32/JPEGDEC/linux/main.c
new file mode 100644
index 000000000..525a8634a
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/linux/main.c
@@ -0,0 +1,301 @@
+// JPEG perf test
+// Written by Larry Bank
+//
+// Will open an arbitrary JPEG file if passed on the command line
+// or will use the sample image (tulips)
+//
+#include
+#include
+#include
+#include "JPEGDEC.h"
+#include "jpeg.inl"
+#include "../test_images/tulips.h"
+
+// Human readable error messages
+const char *szErrors[] = {"Success", "Invalid parameter", "Decode error", "Unsupported feature", "Invalid file"};
+
+/* Windows BMP header for RGB565 images */
+uint8_t winbmphdr_rgb565[138] =
+ {0x42,0x4d,0,0,0,0,0,0,0,0,0x8a,0,0,0,0x7c,0,
+ 0,0,0,0,0,0,0,0,0,0,1,0,8,0,3,0,
+ 0,0,0,0,0,0,0x13,0x0b,0,0,0x13,0x0b,0,0,0,0,
+ 0,0,0,0,0,0,0,0xf8,0,0,0xe0,0x07,0,0,0x1f,0,
+ 0,0,0,0,0,0,0x42,0x47,0x52,0x73,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0};
+
+/* Windows BMP header for 8/24/32-bit images (54 bytes) */
+uint8_t winbmphdr[54] =
+ {0x42,0x4d,
+ 0,0,0,0, /* File size */
+ 0,0,0,0,0x36,4,0,0,0x28,0,0,0,
+ 0,0,0,0, /* Xsize */
+ 0,0,0,0, /* Ysize */
+ 1,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* number of planes, bits per pel */
+ 0,0,0,0};
+
+JPEGIMAGE jpg;
+uint8_t *pFrame;
+int iDestPitch;
+//uint8_t ucDitherBuffer[1024 * 16];
+int ucPixelType = RGB565_BIG_ENDIAN; // default output used for SPI LCDs
+
+//
+// Minimal code to save frames as Windows BMP files
+//
+void WriteBMP(char *fname, uint8_t *pBitmap, uint8_t *pPalette, int cx, int cy, int bpp, int iDestPitch)
+{
+FILE * oHandle;
+int i, bsize, lsize;
+uint32_t *l;
+uint8_t *s;
+uint8_t *ucTemp;
+uint8_t *pHdr;
+int iHeaderSize;
+
+ ucTemp = (uint8_t *)malloc(cx * 4);
+
+ if (bpp == 16) {
+ pHdr = winbmphdr_rgb565;
+ iHeaderSize = sizeof(winbmphdr_rgb565);
+ } else {
+ pHdr = winbmphdr;
+ iHeaderSize = sizeof(winbmphdr);
+ }
+
+ oHandle = fopen(fname, "w+b");
+ bsize = (cx * bpp) >> 3;
+ lsize = (bsize + 3) & 0xfffc; /* Width of each line */
+ pHdr[26] = 1; // number of planes
+ pHdr[28] = (uint8_t)bpp;
+
+ /* Write the BMP header */
+ l = (uint32_t *)&pHdr[2];
+ i =(cy * lsize) + iHeaderSize;
+ if (bpp <= 8)
+ i += 1024;
+ *l = (uint32_t)i; /* Store the file size */
+ l = (uint32_t *)&pHdr[34]; // data size
+ i = (cy * lsize);
+ *l = (uint32_t)i; // store data size
+ l = (uint32_t *)&pHdr[18];
+ *l = (uint32_t)cx; /* width */
+ *(l+1) = (uint32_t)cy; /* height */
+ l = (uint32_t *)&pHdr[10]; // OFFBITS
+ if (bpp <= 8) {
+ *l = iHeaderSize + 1024;
+ } else { // no palette
+ *l = iHeaderSize;
+ }
+ fwrite(pHdr, 1, iHeaderSize, oHandle);
+ if (bpp <= 8) {
+ if (pPalette == NULL) {// create a grayscale palette
+ int iDelta, iCount = 1<=0; i--)
+ {
+ s = &pBitmap[i*iDestPitch];
+ if (bpp == 24) { // swap R/B for Windows BMP byte order
+ int j, iBpp = bpp/8;
+ uint8_t *d = ucTemp;
+ for (j=0; j \n\n");
+
+ if (argc == 1 || argc == 2) {
+ rc = PerfTest(argc, argv);
+ } else if (argc == 3) {
+ rc = ConvertFileTest(argv, 1); // change the 1 to 2/4/8 for fractional decode
+ } else {
+ printf("Invalid number of parameters (re-read the above)\n");
+ return rc;
+ }
+ return rc;
+} /* main() */
diff --git a/lib/libesp32/JPEGDEC/linux/makefile b/lib/libesp32/JPEGDEC/linux/makefile
new file mode 100755
index 000000000..2e8020b23
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/linux/makefile
@@ -0,0 +1,13 @@
+CFLAGS=-c -Wall -O2 -I../src -D__LINUX__
+LIBS = -lm -lpthread
+
+all: jpegdec
+
+jpegdec: main.o
+ $(CC) main.o $(LIBS) -o jpegdec
+
+main.o: main.c ../src/JPEGDEC.h makefile
+ $(CC) $(CFLAGS) main.c
+
+clean:
+ rm *.o jpegdec
diff --git a/lib/libesp32/JPEGDEC/perf.jpg b/lib/libesp32/JPEGDEC/perf.jpg
new file mode 100644
index 000000000..e00faaf63
Binary files /dev/null and b/lib/libesp32/JPEGDEC/perf.jpg differ
diff --git a/lib/libesp32/JPEGDEC/squirrel_dither.jpg b/lib/libesp32/JPEGDEC/squirrel_dither.jpg
new file mode 100644
index 000000000..c093d5514
Binary files /dev/null and b/lib/libesp32/JPEGDEC/squirrel_dither.jpg differ
diff --git a/lib/libesp32/JPEGDEC/src/JPEGDEC.cpp b/lib/libesp32/JPEGDEC/src/JPEGDEC.cpp
new file mode 100644
index 000000000..584fdbb42
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/src/JPEGDEC.cpp
@@ -0,0 +1,250 @@
+//
+// JPEG Decoder
+//
+// written by Larry Bank
+// bitbank@pobox.com
+// Arduino port started 8/2/2020
+// Original JPEG code written 26+ years ago :)
+// The goal of this code is to decode baseline JPEG images
+// using no more than 18K of RAM (if sent directly to an LCD display)
+//
+// Copyright 2020 BitBank Software, Inc. All Rights Reserved.
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//===========================================================================
+//
+#include "JPEGDEC.h"
+
+// forward references
+JPEG_STATIC int JPEGInit(JPEGIMAGE *pJPEG);
+JPEG_STATIC int JPEGParseInfo(JPEGIMAGE *pPage, int bExtractThumb);
+JPEG_STATIC void JPEGGetMoreData(JPEGIMAGE *pPage);
+JPEG_STATIC int DecodeJPEG(JPEGIMAGE *pImage);
+JPEG_STATIC void JPEG_setFramebuffer(JPEGIMAGE *pPage, void *pFramebuffer);
+void JPEG_setCropArea(JPEGIMAGE *pJPEG, int x, int y, int w, int h);
+void JPEG_getCropArea(JPEGIMAGE *pJPEG, int *x, int *y, int *w, int *h);
+void JPEG_setFramebuffer(JPEGIMAGE *pJPEG, void *pFramebuffer);
+
+// Include the C code which does the actual work
+#include "jpeg.inl"
+
+void JPEGDEC::setFramebuffer(void *pFramebuffer)
+{
+ JPEG_setFramebuffer(&_jpeg, pFramebuffer);
+} /* setFramebuffer() */
+
+void JPEGDEC::setPixelType(int iType)
+{
+ if (iType >= 0 && iType < INVALID_PIXEL_TYPE)
+ _jpeg.ucPixelType = (uint8_t)iType;
+ else
+ _jpeg.iError = JPEG_INVALID_PARAMETER;
+} /* setPixelType() */
+
+void JPEGDEC::setMaxOutputSize(int iMaxMCUs)
+{
+ if (iMaxMCUs < 1)
+ iMaxMCUs = 1; // don't allow invalid value
+ _jpeg.iMaxMCUs = iMaxMCUs;
+} /* setMaxOutputSize() */
+//
+// Memory initialization
+//
+int JPEGDEC::openRAM(uint8_t *pData, int iDataSize, JPEG_DRAW_CALLBACK *pfnDraw)
+{
+ memset(&_jpeg, 0, sizeof(JPEGIMAGE));
+ _jpeg.ucMemType = JPEG_MEM_RAM;
+ _jpeg.pfnRead = readRAM;
+ _jpeg.pfnSeek = seekMem;
+ _jpeg.pfnDraw = pfnDraw;
+ _jpeg.pfnOpen = NULL;
+ _jpeg.pfnClose = NULL;
+ _jpeg.JPEGFile.iSize = iDataSize;
+ _jpeg.JPEGFile.pData = pData;
+ _jpeg.iMaxMCUs = 1000; // set to an unnaturally high value to start
+ return JPEGInit(&_jpeg);
+} /* openRAM() */
+
+int JPEGDEC::openFLASH(uint8_t *pData, int iDataSize, JPEG_DRAW_CALLBACK *pfnDraw)
+{
+ memset(&_jpeg, 0, sizeof(JPEGIMAGE));
+ _jpeg.ucMemType = JPEG_MEM_FLASH;
+ _jpeg.pfnRead = readFLASH;
+ _jpeg.pfnSeek = seekMem;
+ _jpeg.pfnDraw = pfnDraw;
+ _jpeg.pfnOpen = NULL;
+ _jpeg.pfnClose = NULL;
+ _jpeg.JPEGFile.iSize = iDataSize;
+ _jpeg.JPEGFile.pData = pData;
+ _jpeg.iMaxMCUs = 1000; // set to an unnaturally high value to start
+ return JPEGInit(&_jpeg);
+} /* openRAM() */
+
+int JPEGDEC::getOrientation()
+{
+ return (int)_jpeg.ucOrientation;
+} /* getOrientation() */
+
+int JPEGDEC::getLastError()
+{
+ return _jpeg.iError;
+} /* getLastError() */
+
+int JPEGDEC::getWidth()
+{
+ return _jpeg.iWidth;
+} /* getWidth() */
+
+int JPEGDEC::getHeight()
+{
+ return _jpeg.iHeight;
+} /* getHeight() */
+
+int JPEGDEC::hasThumb()
+{
+ return (int)_jpeg.ucHasThumb;
+} /* hasThumb() */
+
+int JPEGDEC::getThumbWidth()
+{
+ return _jpeg.iThumbWidth;
+} /* getThumbWidth() */
+
+int JPEGDEC::getThumbHeight()
+{
+ return _jpeg.iThumbHeight;
+} /* getThumbHeight() */
+
+int JPEGDEC::getBpp()
+{
+ return (int)_jpeg.ucBpp;
+} /* getBpp() */
+
+int JPEGDEC::getSubSample()
+{
+ return (int)_jpeg.ucSubSample;
+} /* getSubSample() */
+
+void JPEGDEC::setCropArea(int x, int y, int w, int h)
+{
+ JPEG_setCropArea(&_jpeg, x, y, w, h);
+} /* setCropArea() */
+
+void JPEGDEC::getCropArea(int *x, int *y, int *w, int *h)
+{
+ JPEG_getCropArea(&_jpeg, x, y, w, h);
+} /* getCropArea() */
+
+//
+// File (SD/MMC) based initialization
+//
+int JPEGDEC::open(const char *szFilename, JPEG_OPEN_CALLBACK *pfnOpen, JPEG_CLOSE_CALLBACK *pfnClose, JPEG_READ_CALLBACK *pfnRead, JPEG_SEEK_CALLBACK *pfnSeek, JPEG_DRAW_CALLBACK *pfnDraw)
+{
+ memset(&_jpeg, 0, sizeof(JPEGIMAGE));
+ _jpeg.pfnRead = pfnRead;
+ _jpeg.pfnSeek = pfnSeek;
+ _jpeg.pfnDraw = pfnDraw;
+ _jpeg.pfnOpen = pfnOpen;
+ _jpeg.pfnClose = pfnClose;
+ _jpeg.iMaxMCUs = 1000; // set to an unnaturally high value to start
+ _jpeg.JPEGFile.fHandle = (*pfnOpen)(szFilename, &_jpeg.JPEGFile.iSize);
+ if (_jpeg.JPEGFile.fHandle == NULL)
+ return 0;
+ return JPEGInit(&_jpeg);
+
+} /* open() */
+
+//
+// data stream initialization
+//
+int JPEGDEC::open(void *fHandle, int iDataSize, JPEG_CLOSE_CALLBACK *pfnClose, JPEG_READ_CALLBACK *pfnRead, JPEG_SEEK_CALLBACK *pfnSeek, JPEG_DRAW_CALLBACK *pfnDraw)
+{
+ memset(&_jpeg, 0, sizeof(JPEGIMAGE));
+ _jpeg.pfnRead = pfnRead;
+ _jpeg.pfnSeek = pfnSeek;
+ _jpeg.pfnDraw = pfnDraw;
+ _jpeg.pfnClose = pfnClose;
+ _jpeg.iMaxMCUs = 1000; // set to an unnaturally high value to start
+ _jpeg.JPEGFile.iSize = iDataSize;
+ _jpeg.JPEGFile.fHandle = fHandle;
+ return JPEGInit(&_jpeg);
+} /* open() */
+
+#ifdef FS_H
+static int32_t FileRead(JPEGFILE *handle, uint8_t *buffer, int32_t length)
+{
+ return ((File *)(handle->fHandle))->read(buffer, length);
+}
+static int32_t FileSeek(JPEGFILE *handle, int32_t position)
+{
+ return ((File *)(handle->fHandle))->seek(position);
+}
+static void FileClose(void *handle)
+{
+ ((File *)handle)->close();
+}
+
+int JPEGDEC::open(File &file, JPEG_DRAW_CALLBACK *pfnDraw)
+{
+ if (!file) return 0;
+ memset(&_jpeg, 0, sizeof(JPEGIMAGE));
+ _jpeg.pfnRead = FileRead;
+ _jpeg.pfnSeek = FileSeek;
+ _jpeg.pfnClose = FileClose;
+ _jpeg.pfnDraw = pfnDraw;
+ _jpeg.iMaxMCUs = 1000;
+ _jpeg.JPEGFile.fHandle = &file;
+ _jpeg.JPEGFile.iSize = file.size();
+ return JPEGInit(&_jpeg);
+}
+#endif // FS_H
+
+void JPEGDEC::close()
+{
+ if (_jpeg.pfnClose)
+ (*_jpeg.pfnClose)(_jpeg.JPEGFile.fHandle);
+} /* close() */
+
+//
+// Decode the image
+// returns:
+// 1 = good result
+// 0 = error
+//
+int JPEGDEC::decode(int x, int y, int iOptions)
+{
+ _jpeg.iXOffset = x;
+ _jpeg.iYOffset = y;
+ _jpeg.iOptions = iOptions;
+ return DecodeJPEG(&_jpeg);
+} /* decode() */
+//
+// set draw callback user pointer variable
+//
+void JPEGDEC::setUserPointer(void *p)
+{
+ _jpeg.pUser = p;
+}
+
+int JPEGDEC::decodeDither(int x, int y, uint8_t *pDither, int iOptions)
+{
+ _jpeg.iXOffset = x;
+ _jpeg.iYOffset = y;
+ _jpeg.iOptions = iOptions;
+ _jpeg.pDitherBuffer = pDither;
+ return DecodeJPEG(&_jpeg);
+}
+
+int JPEGDEC::decodeDither(uint8_t *pDither, int iOptions)
+{
+ _jpeg.iOptions = iOptions;
+ _jpeg.pDitherBuffer = pDither;
+ return DecodeJPEG(&_jpeg);
+}
diff --git a/lib/libesp32/JPEGDEC/src/JPEGDEC.h b/lib/libesp32/JPEGDEC/src/JPEGDEC.h
new file mode 100644
index 000000000..5c808ec2d
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/src/JPEGDEC.h
@@ -0,0 +1,309 @@
+//
+// Copyright 2020 BitBank Software, Inc. All Rights Reserved.
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//===========================================================================
+//
+#ifndef __JPEGDEC__
+#define __JPEGDEC__
+#if defined( __MACH__ ) || defined( __LINUX__ ) || defined( __MCUXPRESSO ) || defined( ESP_PLATFORM )
+#include
+#include
+#include
+#include
+#else
+#include
+#if !defined(HAL_ESP32_HAL_H_) && defined(__has_include) && __has_include()
+#include
+#endif
+#endif
+#ifndef PROGMEM
+#define memcpy_P memcpy
+#define PROGMEM
+#endif
+// Cortex-M4/M7 allow unaligned access to SRAM
+#if defined(HAL_ESP32_HAL_H_) || defined(TEENSYDUINO) || defined(ARM_MATH_CM4) || defined(ARM_MATH_CM7) || defined (__x86_64__) || defined(TEENSYDUINO)
+#define ALLOWS_UNALIGNED
+#endif
+
+#if defined (__aarch64__) || defined (__arm64__)
+#define HAS_NEON
+#define ALLOWS_UNALIGNED
+#endif // __aarch64
+//
+// JPEG Decoder
+// Written by Larry Bank
+// Copyright (c) 2020 BitBank Software, Inc.
+//
+// Designed to decode baseline JPEG images (8 or 24-bpp)
+// using less than 22K of RAM
+//
+
+/* Defines and variables */
+#define FILE_HIGHWATER 1536
+#define JPEG_FILE_BUF_SIZE 2048
+#define HUFF_TABLEN 273
+#define HUFF11SIZE (1<<11)
+#define DC_TABLE_SIZE 1024
+#define DCTSIZE 64
+#define MAX_MCU_COUNT 6
+#define MAX_COMPS_IN_SCAN 4
+#define MAX_BUFFERED_PIXELS 2048
+#define MCU_SKIP -8
+
+// Decoder options
+#define JPEG_AUTO_ROTATE 1
+#define JPEG_SCALE_HALF 2
+#define JPEG_SCALE_QUARTER 4
+#define JPEG_SCALE_EIGHTH 8
+#define JPEG_LE_PIXELS 16
+#define JPEG_EXIF_THUMBNAIL 32
+#define JPEG_LUMA_ONLY 64
+
+#define MCU0 (DCTSIZE * 0)
+#define MCU1 (DCTSIZE * 1)
+#define MCU2 (DCTSIZE * 2)
+#define MCU3 (DCTSIZE * 3)
+#define MCU4 (DCTSIZE * 4)
+#define MCU5 (DCTSIZE * 5)
+
+#if defined(__arm64__) || defined(__aarch64__) || defined (__x86_64__)
+#define REGISTER_WIDTH 64
+typedef uint64_t my_ulong;
+typedef int64_t my_long;
+#else
+#define REGISTER_WIDTH 32
+typedef uint32_t my_ulong;
+typedef int32_t my_long;
+#endif
+
+// Pixel types (defaults to little endian RGB565)
+enum {
+ RGB565_LITTLE_ENDIAN = 0,
+ RGB565_BIG_ENDIAN,
+ RGB8888,
+ EIGHT_BIT_GRAYSCALE,
+ FOUR_BIT_DITHERED,
+ TWO_BIT_DITHERED,
+ ONE_BIT_DITHERED,
+ INVALID_PIXEL_TYPE
+};
+
+enum {
+ JPEG_MEM_RAM=0,
+ JPEG_MEM_FLASH
+};
+
+// Error codes returned by getLastError()
+enum {
+ JPEG_SUCCESS = 0,
+ JPEG_INVALID_PARAMETER,
+ JPEG_DECODE_ERROR,
+ JPEG_UNSUPPORTED_FEATURE,
+ JPEG_INVALID_FILE
+};
+
+typedef struct buffered_bits
+{
+unsigned char *pBuf; // buffer pointer
+my_ulong ulBits; // buffered bits
+uint32_t ulBitOff; // current bit offset
+} BUFFERED_BITS;
+
+typedef struct jpeg_file_tag
+{
+ int32_t iPos; // current file position
+ int32_t iSize; // file size
+ uint8_t *pData; // memory file pointer
+ void * fHandle; // class pointer to File/SdFat or whatever you want
+} JPEGFILE;
+
+typedef struct jpeg_draw_tag
+{
+ int x, y; // upper left corner of current MCU
+ int iWidth, iHeight; // size of this pixel block
+ int iWidthUsed; // clipped size for odd/edges
+ int iBpp; // bit depth of the pixels (8 or 16)
+ uint16_t *pPixels; // 16-bit pixels
+ void *pUser;
+} JPEGDRAW;
+
+// Callback function prototypes
+typedef int32_t (JPEG_READ_CALLBACK)(JPEGFILE *pFile, uint8_t *pBuf, int32_t iLen);
+typedef int32_t (JPEG_SEEK_CALLBACK)(JPEGFILE *pFile, int32_t iPosition);
+typedef int (JPEG_DRAW_CALLBACK)(JPEGDRAW *pDraw);
+typedef void * (JPEG_OPEN_CALLBACK)(const char *szFilename, int32_t *pFileSize);
+typedef void (JPEG_CLOSE_CALLBACK)(void *pHandle);
+
+/* JPEG color component info */
+typedef struct _jpegcompinfo
+{
+// These values are fixed over the whole image
+// For compression, they must be supplied by the user interface
+// for decompression, they are read from the SOF marker.
+unsigned char component_needed; /* do we need the value of this component? */
+unsigned char component_id; /* identifier for this component (0..255) */
+unsigned char component_index; /* its index in SOF or cinfo->comp_info[] */
+//unsigned char h_samp_factor; /* horizontal sampling factor (1..4) */
+//unsigned char v_samp_factor; /* vertical sampling factor (1..4) */
+unsigned char quant_tbl_no; /* quantization table selector (0..3) */
+// These values may vary between scans
+// For compression, they must be supplied by the user interface
+// for decompression, they are read from the SOS marker.
+unsigned char dc_tbl_no; /* DC entropy table selector (0..3) */
+unsigned char ac_tbl_no; /* AC entropy table selector (0..3) */
+// These values are computed during compression or decompression startup
+//int true_comp_width; /* component's image width in samples */
+//int true_comp_height; /* component's image height in samples */
+// the above are the logical dimensions of the downsampled image
+// These values are computed before starting a scan of the component
+//int MCU_width; /* number of blocks per MCU, horizontally */
+//int MCU_height; /* number of blocks per MCU, vertically */
+//int MCU_blocks; /* MCU_width * MCU_height */
+//int downsampled_width; /* image width in samples, after expansion */
+//int downsampled_height; /* image height in samples, after expansion */
+// the above are the true_comp_xxx values rounded up to multiples of
+// the MCU dimensions; these are the working dimensions of the array
+// as it is passed through the DCT or IDCT step. NOTE: these values
+// differ depending on whether the component is interleaved or not!!
+// This flag is used only for decompression. In cases where some of the
+// components will be ignored (eg grayscale output from YCbCr image),
+// we can skip IDCT etc. computations for the unused components.
+} JPEGCOMPINFO;
+
+//
+// our private structure to hold a JPEG image decode state
+//
+typedef struct jpeg_image_tag
+{
+ int iWidth, iHeight; // image size
+ int iThumbWidth, iThumbHeight; // thumbnail size (if present)
+ int iThumbData; // offset to image data
+ int iXOffset, iYOffset; // placement on the display
+ int iCropX, iCropY, iCropCX, iCropCY; // crop area
+ uint8_t ucBpp, ucSubSample, ucHuffTableUsed;
+ uint8_t ucMode, ucOrientation, ucHasThumb, b11Bit;
+ uint8_t ucComponentsInScan, cApproxBitsLow, cApproxBitsHigh;
+ uint8_t iScanStart, iScanEnd, ucFF, ucNumComponents;
+ uint8_t ucACTable, ucDCTable;
+ uint8_t ucMemType, ucPixelType;
+ uint16_t u16MCUFlags;
+ int iEXIF; // Offset to EXIF 'TIFF' file
+ int iError;
+ int iOptions;
+ int iVLCOff; // current VLC data offset
+ int iVLCSize; // current quantity of data in the VLC buffer
+ int iResInterval, iResCount; // restart interval
+ int iMaxMCUs; // max MCUs of pixels per JPEGDraw call
+ JPEG_READ_CALLBACK *pfnRead;
+ JPEG_SEEK_CALLBACK *pfnSeek;
+ JPEG_DRAW_CALLBACK *pfnDraw;
+ JPEG_OPEN_CALLBACK *pfnOpen;
+ JPEG_CLOSE_CALLBACK *pfnClose;
+ JPEGCOMPINFO JPCI[MAX_COMPS_IN_SCAN]; /* Max color components */
+ JPEGFILE JPEGFile;
+ BUFFERED_BITS bb;
+ void *pUser;
+ uint8_t *pDitherBuffer; // provided externally to do Floyd-Steinberg dithering
+ uint16_t *usPixels; // needs to be 16-byte aligned for S3 SIMD
+ uint16_t usUnalignedPixels[MAX_BUFFERED_PIXELS+8];
+ int16_t *sMCUs; // needs to be 16-byte aligned for S3 SIMD
+ int16_t sUnalignedMCUs[8+(DCTSIZE * MAX_MCU_COUNT)]; // 4:2:0 needs 6 DCT blocks per MCU
+ void *pFramebuffer;
+ int16_t sQuantTable[DCTSIZE*4]; // quantization tables
+ uint8_t ucFileBuf[JPEG_FILE_BUF_SIZE]; // holds temp data and pixel stack
+ uint8_t ucHuffDC[DC_TABLE_SIZE * 2]; // up to 2 'short' tables
+ uint16_t usHuffAC[HUFF11SIZE * 2];
+} JPEGIMAGE;
+
+#ifdef __cplusplus
+#if defined(__has_include) && __has_include()
+#include "FS.h"
+#endif
+#define JPEG_STATIC static
+//
+// The JPEGDEC class wraps portable C code which does the actual work
+//
+class JPEGDEC
+{
+ public:
+ int openRAM(uint8_t *pData, int iDataSize, JPEG_DRAW_CALLBACK *pfnDraw);
+ int openFLASH(uint8_t *pData, int iDataSize, JPEG_DRAW_CALLBACK *pfnDraw);
+ int open(const char *szFilename, JPEG_OPEN_CALLBACK *pfnOpen, JPEG_CLOSE_CALLBACK *pfnClose, JPEG_READ_CALLBACK *pfnRead, JPEG_SEEK_CALLBACK *pfnSeek, JPEG_DRAW_CALLBACK *pfnDraw);
+ int open(void *fHandle, int iDataSize, JPEG_CLOSE_CALLBACK *pfnClose, JPEG_READ_CALLBACK *pfnRead, JPEG_SEEK_CALLBACK *pfnSeek, JPEG_DRAW_CALLBACK *pfnDraw);
+ void setFramebuffer(void *pFramebuffer);
+ void setCropArea(int x, int y, int w, int h);
+ void getCropArea(int *x, int *y, int *w, int *h);
+
+#ifdef FS_H
+ int open(File &file, JPEG_DRAW_CALLBACK *pfnDraw);
+#endif
+ void close();
+ int decode(int x, int y, int iOptions);
+ int decodeDither(uint8_t *pDither, int iOptions);
+ int decodeDither(int x, int y, uint8_t *pDither, int iOptions);
+ int getOrientation();
+ int getWidth();
+ int getHeight();
+ int getBpp();
+ void setUserPointer(void *p);
+ int getSubSample();
+ int hasThumb();
+ int getThumbWidth();
+ int getThumbHeight();
+ int getLastError();
+ void setPixelType(int iType); // defaults to little endian
+ void setMaxOutputSize(int iMaxMCUs);
+
+ private:
+ JPEGIMAGE _jpeg;
+};
+#else
+#define JPEG_STATIC
+int JPEG_openRAM(JPEGIMAGE *pJPEG, uint8_t *pData, int iDataSize, JPEG_DRAW_CALLBACK *pfnDraw);
+void JPEG_setFramebuffer(JPEGIMAGE *pJPEG, void *pFramebuffer);
+void JPEG_setCropArea(JPEGIMAGE *pJPEG, int x, int y, int w, int h);
+void JPEG_getCropArea(JPEGIMAGE *pJPEG, int *x, int *y, int *w, int *h);
+int JPEG_openFile(JPEGIMAGE *pJPEG, const char *szFilename, JPEG_DRAW_CALLBACK *pfnDraw);
+int JPEG_getWidth(JPEGIMAGE *pJPEG);
+int JPEG_getHeight(JPEGIMAGE *pJPEG);
+int JPEG_decode(JPEGIMAGE *pJPEG, int x, int y, int iOptions);
+int JPEG_decodeDither(JPEGIMAGE *pJPEG, uint8_t *pDither, int iOptions);
+void JPEG_close(JPEGIMAGE *pJPEG);
+int JPEG_getLastError(JPEGIMAGE *pJPEG);
+int JPEG_getOrientation(JPEGIMAGE *pJPEG);
+int JPEG_getBpp(JPEGIMAGE *pJPEG);
+int JPEG_getSubSample(JPEGIMAGE *pJPEG);
+int JPEG_hasThumb(JPEGIMAGE *pJPEG);
+int JPEG_getThumbWidth(JPEGIMAGE *pJPEG);
+int JPEG_getThumbHeight(JPEGIMAGE *pJPEG);
+int JPEG_getLastError(JPEGIMAGE *pJPEG);
+void JPEG_setPixelType(JPEGIMAGE *pJPEG, int iType); // defaults to little endian
+void JPEG_setMaxOutputSize(JPEGIMAGE *pJPEG, int iMaxMCUs);
+#endif // __cplusplus
+
+#ifdef ALLOWS_UNALIGNED
+#define INTELSHORT(p) (*(uint16_t *)p)
+#define INTELLONG(p) (*(uint32_t *)p)
+#define MOTOSHORT(p) __builtin_bswap16(*(uint16_t *)p)
+#if REGISTER_WIDTH == 64
+#define MOTOLONG(p) __builtin_bswap64(*(uint64_t *)p)
+#else
+#define MOTOLONG(p) __builtin_bswap32(*(uint32_t *)p)
+#endif
+#else
+// Due to unaligned memory causing an exception, we have to do these macros the slow way
+#define INTELSHORT(p) ((*p) + (*(p+1)<<8))
+#define INTELLONG(p) ((*p) + (*(p+1)<<8) + (*(p+2)<<16) + (*(p+3)<<24))
+#define MOTOSHORT(p) (((*(p))<<8) + (*(p+1)))
+#define MOTOLONG(p) (((*p)<<24) + ((*(p+1))<<16) + ((*(p+2))<<8) + (*(p+3)))
+#endif // ALLOWS_UNALIGNED
+
+#endif // __JPEGDEC__
diff --git a/lib/libesp32/JPEGDEC/src/jpeg.inl b/lib/libesp32/JPEGDEC/src/jpeg.inl
new file mode 100644
index 000000000..aad686997
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/src/jpeg.inl
@@ -0,0 +1,4967 @@
+//
+// JPEG Decoder
+//
+// written by Larry Bank
+// bitbank@pobox.com
+// Arduino port started 8/2/2020
+// Original JPEG code written 26+ years ago :)
+// The goal of this code is to decode baseline JPEG images
+// using no more than 18K of RAM (if sent directly to an LCD display)
+//
+// Copyright 2020 BitBank Software, Inc. All Rights Reserved.
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//===========================================================================
+//
+#include "JPEGDEC.h"
+
+#ifdef TEENSYDUINO
+#include "my_cm4_simd.h"
+//#define HAS_SIMD
+#endif
+
+#if !defined(NO_SIMD) && (defined(ARM_MATH_CM4) || defined(ARM_MATH_CM7))
+//#define HAS_SIMD
+#endif
+
+#if defined (ARDUINO_ARCH_ESP32) && !defined(NO_SIMD)
+#include "dsps_fft2r_platform.h"
+#if (dsps_fft2r_sc16_aes3_enabled == 1)
+#define ESP32S3_SIMD
+extern "C" {
+void s3_ycbcr_convert_444(uint8_t *pY, uint8_t *pCB, uint8_t *pCR, uint16_t *pOut, int16_t *pConsts, uint8_t ucPixelType);
+void s3_ycbcr_convert_420(uint8_t *pY, uint8_t *pCB, uint8_t *pCR, uint16_t *pOut, int16_t *pConsts, uint8_t ucPixelType);
+void s3_dequant(int16_t *pMCU, int16_t *pQuant);
+}
+int16_t i16_Consts[8] = {0x80, 113, 90, 22, 46, 1,32,2048};
+#endif // S3 SIMD
+#endif // ESP32
+
+#if defined( __x86_64__ ) && !defined(NO_SIMD)
+#define HAS_SSE
+#include
+#include
+#include
+//#include // AVX2
+#endif
+
+#if !defined(HAS_SIMD) && !defined(NO_SIMD) && (defined(__arm64__) || defined(__aarch64__))
+#include
+#define HAS_NEON
+#endif
+
+// forward references
+static int JPEGInit(JPEGIMAGE *pJPEG);
+static int JPEGParseInfo(JPEGIMAGE *pPage, int bExtractThumb);
+static void JPEGGetMoreData(JPEGIMAGE *pPage);
+static int DecodeJPEG(JPEGIMAGE *pImage);
+static int32_t readRAM(JPEGFILE *pFile, uint8_t *pBuf, int32_t iLen);
+static int32_t seekMem(JPEGFILE *pFile, int32_t iPosition);
+#if defined (__MACH__) || defined( __LINUX__ ) || defined( __MCUXPRESSO )
+static int32_t readFile(JPEGFILE *pFile, uint8_t *pBuf, int32_t iLen);
+static int32_t seekFile(JPEGFILE *pFile, int32_t iPosition);
+static void closeFile(void *handle);
+#endif
+static void JPEGDither(JPEGIMAGE *pJPEG, int iWidth, int iHeight);
+/* JPEG tables */
+// zigzag ordering of DCT coefficients
+static const unsigned char cZigZag[64] = {0,1,5,6,14,15,27,28,
+ 2,4,7,13,16,26,29,42,
+ 3,8,12,17,25,30,41,43,
+ 9,11,18,24,31,40,44,53,
+ 10,19,23,32,39,45,52,54,
+ 20,22,33,38,46,51,55,60,
+ 21,34,37,47,50,56,59,61,
+ 35,36,48,49,57,58,62,63};
+
+// un-zigzag ordering
+static const unsigned char cZigZag2[64] = {0,1,8,16,9,2,3,10,
+ 17,24,32,25,18,11,4,5,
+ 12,19,26,33,40,48,41,34,
+ 27,20,13,6,7,14,21,28,
+ 35,42,49,56,57,50,43,36,
+ 29,22,15,23,30,37,44,51,
+ 58,59,52,45,38,31,39,46,
+ 53,60,61,54,47,55,62,63};
+
+#ifdef HAS_NEON
+// 16-bit constants for NEON ycc->rgb conversion
+static const int16_t __attribute__((aligned(16))) sYCCRGBConstants[4] = {5742/2, -2925/2, -1409/2, 7258/2};
+// 16-bit constants for IDCT calculation
+static const int16_t __attribute__((aligned(16))) s0414[8] = {1697*2,1697*2,1697*2,1697*2,1697*2,1697*2,1697*2,1697*2}; // 1.414213562 - 1.0
+static const int16_t __attribute__((aligned(16))) s1414[8] = {5793*2,5793*2,5793*2,5793*2,5793*2,5793*2,5793*2,5793*2}; // 1.414213562
+static const int16_t __attribute__((aligned(16))) s1847[8] = {7568*2,7568*2,7568*2,7568*2,7568*2,7568*2,7568*2,7568*2}; // 1.8477
+static const int16_t __attribute__((aligned(16))) s2613[8] = {-10703,-10703,-10703,-10703,-10703,-10703,-10703,-10703}; // -2.6131259
+static const int16_t __attribute__((aligned(16))) sp2613[8] = {10703,10703,10703,10703,10703,10703,10703,10703}; // 2.6131259
+static const int16_t __attribute__((aligned(16))) s1082[8] = {4433*2,4433*2,4433*2,4433*2,4433*2,4433*2,4433*2,4433*2}; // 1.08239
+#endif // HAS_NEON
+
+#ifdef HAS_SSE
+#if defined ( __GNUC__ ) || defined( _GCC_ANDROID ) || defined( __APPLE__)
+signed short s1402[8] __attribute__((aligned(16))) = { 5742, 5742, 5742, 5742, 5742, 5742, 5742, 5742 };
+signed short s0714[8] __attribute__((aligned(16))) = { -2925, -2925, -2925, -2925, -2925, -2925, -2925, -2925 };
+signed short s0344[8] __attribute__((aligned(16))) = { -1409, -1409, -1409, -1409, -1409, -1409, -1409, -1409 };
+signed short s1772[8] __attribute__((aligned(16))) = { 7258, 7258, 7258, 7258, 7258, 7258, 7258, 7258 };
+// 16-bit constants for IDCT calculation
+signed short s0414[8] __attribute__((aligned(16))) = { 1697 * 4, 1697 * 4, 1697 * 4, 1697 * 4, 1697 * 4, 1697 * 4, 1697 * 4, 1697 * 4 }; // 1.414213562 - 1.0
+signed short s1414[8] __attribute__((aligned(16))) = { 5793 * 4, 5793 * 4, 5793 * 4, 5793 * 4, 5793 * 4, 5793 * 4, 5793 * 4, 5793 * 4 }; // 1.414213562
+signed short s1847[8] __attribute__((aligned(16))) = { 7568 * 4, 7568 * 4, 7568 * 4, 7568 * 4, 7568 * 4, 7568 * 4, 7568 * 4, 7568 * 4 }; // 1.8477
+signed short s2613[8] __attribute__((aligned(16))) = { -10703 * 2, -10703 * 2, -10703 * 2, -10703 * 2, -10703 * 2, -10703 * 2, -10703 * 2, -10703 * 2 }; // -2.6131259
+signed short sp2613[8] __attribute__((aligned(16))) = { 10703 * 2, 10703 * 2, 10703 * 2, 10703 * 2, 10703 * 2, 10703 * 2, 10703 * 2, 10703 * 2 }; // 2.6131259
+signed short s1082[8] __attribute__((aligned(16))) = { 4433 * 4, 4433 * 4, 4433 * 4, 4433 * 4, 4433 * 4, 4433 * 4, 4433 * 4, 4433 * 4 }; // 1.08239
+signed short sfastDCT[8] __attribute__((aligned(16))) = { 4096, 4096, 4096, 4096, -815, 2320, 3472, 4096 };
+#else
+// 16-bit Constants for SSE ycc->rgb conversion
+__declspec(align(16)) signed short s1402[8] = {5742,5742,5742,5742,5742,5742,5742,5742};
+__declspec(align(16)) signed short s0714[8] = {-2925,-2925,-2925,-2925,-2925,-2925,-2925,-2925};
+__declspec(align(16)) signed short s0344[8] = {-1409,-1409,-1409,-1409,-1409,-1409,-1409,-1409};
+__declspec(align(16)) signed short s1772[8] = {7258,7258,7258,7258,7258,7258,7258,7258};
+// 16-bit constants for IDCT calculation
+__declspec(align(16)) signed short s0414[8] = {1697*4,1697*4,1697*4,1697*4,1697*4,1697*4,1697*4,1697*4}; // 1.414213562 - 1.0
+__declspec(align(16)) signed short s1414[8] = {5793*4,5793*4,5793*4,5793*4,5793*4,5793*4,5793*4,5793*4}; // 1.414213562
+__declspec(align(16)) signed short s1847[8] = {7568*4,7568*4,7568*4,7568*4,7568*4,7568*4,7568*4,7568*4}; // 1.8477
+__declspec(align(16)) signed short s2613[8] = {-10703*2,-10703*2,-10703*2,-10703*2,-10703*2,-10703*2,-10703*2,-10703*2}; // -2.6131259
+__declspec(align(16)) signed short sp2613[8] = {10703*2,10703*2,10703*2,10703*2,10703*2,10703*2,10703*2,10703*2}; // 2.6131259
+__declspec(align(16)) signed short s1082[8] = {4433*4,4433*4,4433*4,4433*4,4433*4,4433*4,4433*4,4433*4}; // 1.08239
+__declspec(align(16)) signed short sfastDCT[8] = {4096,4096,4096,4096,-815,2320,3472,4096};
+#endif // GCC
+#endif // HAS_SSE
+
+// For AA&N IDCT method, multipliers are equal to quantization
+// coefficients scaled by scalefactor[row]*scalefactor[col], where
+// scalefactor[0] = 1
+// scalefactor[k] = cos(k*PI/16) * sqrt(2) for k=1..7
+// For integer operation, the multiplier table is to be scaled by
+// IFAST_SCALE_BITS.
+static const int iScaleBits[64] = {16384, 22725, 21407, 19266, 16384, 12873, 8867, 4520,
+ 22725, 31521, 29692, 26722, 22725, 17855, 12299, 6270,
+ 21407, 29692, 27969, 25172, 21407, 16819, 11585, 5906,
+ 19266, 26722, 25172, 22654, 19266, 15137, 10426, 5315,
+ 16384, 22725, 21407, 19266, 16384, 12873, 8867, 4520,
+ 12873, 17855, 16819, 15137, 12873, 10114, 6967, 3552,
+ 8867, 12299, 11585, 10426, 8867, 6967, 4799, 2446,
+ 4520, 6270, 5906, 5315, 4520, 3552, 2446, 1247};
+//
+// Range clip and shift for RGB565 output
+// input value is 0 to 255, then another 256 for overflow to FF, then 512 more for negative values wrapping around
+// Trims a few instructions off the final output stage
+//
+static const uint8_t ucRangeTable[] = {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,
+ 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,
+ 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,
+ 0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,
+ 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,
+ 0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf,
+ 0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,
+ 0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
+ 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,
+ 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,
+ 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
+ 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,
+ 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,
+ 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,
+ 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f};
+
+//
+// Convert 8-bit grayscale into RGB565
+//
+static const uint16_t usGrayTo565[] = {0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020, // 0
+ 0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,
+ 0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,
+ 0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,
+ 0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,
+ 0x2945,0x2945,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,
+ 0x3186,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,
+ 0x39c7,0x39c7,0x39c7,0x39c7,0x39e7,0x39e7,0x39e7,0x39e7,
+ 0x4208,0x4208,0x4208,0x4208,0x4228,0x4228,0x4228,0x4228,
+ 0x4a49,0x4a49,0x4a49,0x4a49,0x4a69,0x4a69,0x4a69,0x4a69,
+ 0x528a,0x528a,0x528a,0x528a,0x52aa,0x52aa,0x52aa,0x52aa,
+ 0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,
+ 0x630c,0x630c,0x630c,0x630c,0x632c,0x632c,0x632c,0x632c,
+ 0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,
+ 0x738e,0x738e,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,
+ 0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x7bef,0x7bef,0x7bef,
+ 0x8410,0x8410,0x8410,0x8410,0x8430,0x8430,0x8430,0x8430,
+ 0x8c51,0x8c51,0x8c51,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,
+ 0x9492,0x9492,0x9492,0x9492,0x94b2,0x94b2,0x94b2,0x94b2,
+ 0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,
+ 0xa514,0xa514,0xa514,0xa514,0xa534,0xa534,0xa534,0xa534,
+ 0xad55,0xad55,0xad55,0xad55,0xad75,0xad75,0xad75,0xad75,
+ 0xb596,0xb596,0xb596,0xb596,0xb5b6,0xb5b6,0xb5b6,0xb5b6,
+ 0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,
+ 0xc618,0xc618,0xc618,0xc618,0xc638,0xc638,0xc638,0xc638,
+ 0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,
+ 0xd69a,0xd69a,0xd69a,0xd69a,0xd6ba,0xd6ba,0xd6ba,0xd6ba,
+ 0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,
+ 0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,
+ 0xef5d,0xef5d,0xef5d,0xef5d,0xef7d,0xef7d,0xef7d,0xef7d,
+ 0xf79e,0xf79e,0xf79e,0xf79e,0xf7be,0xf7be,0xf7be,0xf7be,
+ 0xffdf,0xffdf,0xffdf,0xffdf,0xffff,0xffff,0xffff,0xffff};
+//
+// Clip and convert red value into 5-bits for RGB565
+//
+static const uint16_t usRangeTableR[] = {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, // 0
+ 0x0800,0x0800,0x0800,0x0800,0x0800,0x0800,0x0800,0x0800,
+ 0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+ 0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,
+ 0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,
+ 0x2800,0x2800,0x2800,0x2800,0x2800,0x2800,0x2800,0x2800,
+ 0x3000,0x3000,0x3000,0x3000,0x3000,0x3000,0x3000,0x3000,
+ 0x3800,0x3800,0x3800,0x3800,0x3800,0x3800,0x3800,0x3800,
+ 0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,
+ 0x4800,0x4800,0x4800,0x4800,0x4800,0x4800,0x4800,0x4800,
+ 0x5000,0x5000,0x5000,0x5000,0x5000,0x5000,0x5000,0x5000,
+ 0x5800,0x5800,0x5800,0x5800,0x5800,0x5800,0x5800,0x5800,
+ 0x6000,0x6000,0x6000,0x6000,0x6000,0x6000,0x6000,0x6000,
+ 0x6800,0x6800,0x6800,0x6800,0x6800,0x6800,0x6800,0x6800,
+ 0x7000,0x7000,0x7000,0x7000,0x7000,0x7000,0x7000,0x7000,
+ 0x7800,0x7800,0x7800,0x7800,0x7800,0x7800,0x7800,0x7800,
+ 0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,
+ 0x8800,0x8800,0x8800,0x8800,0x8800,0x8800,0x8800,0x8800,
+ 0x9000,0x9000,0x9000,0x9000,0x9000,0x9000,0x9000,0x9000,
+ 0x9800,0x9800,0x9800,0x9800,0x9800,0x9800,0x9800,0x9800,
+ 0xa000,0xa000,0xa000,0xa000,0xa000,0xa000,0xa000,0xa000,
+ 0xa800,0xa800,0xa800,0xa800,0xa800,0xa800,0xa800,0xa800,
+ 0xb000,0xb000,0xb000,0xb000,0xb000,0xb000,0xb000,0xb000,
+ 0xb800,0xb800,0xb800,0xb800,0xb800,0xb800,0xb800,0xb800,
+ 0xc000,0xc000,0xc000,0xc000,0xc000,0xc000,0xc000,0xc000,
+ 0xc800,0xc800,0xc800,0xc800,0xc800,0xc800,0xc800,0xc800,
+ 0xd000,0xd000,0xd000,0xd000,0xd000,0xd000,0xd000,0xd000,
+ 0xd800,0xd800,0xd800,0xd800,0xd800,0xd800,0xd800,0xd800,
+ 0xe000,0xe000,0xe000,0xe000,0xe000,0xe000,0xe000,0xe000,
+ 0xe800,0xe800,0xe800,0xe800,0xe800,0xe800,0xe800,0xe800,
+ 0xf000,0xf000,0xf000,0xf000,0xf000,0xf000,0xf000,0xf000,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800, // 256
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,0xf800,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 512
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 768
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+//
+// Clip and convert green value into 5-bits for RGB565
+//
+static const uint16_t usRangeTableG[] = {0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020, // 0
+ 0x0040,0x0040,0x0040,0x0040,0x0060,0x0060,0x0060,0x0060,
+ 0x0080,0x0080,0x0080,0x0080,0x00a0,0x00a0,0x00a0,0x00a0,
+ 0x00c0,0x00c0,0x00c0,0x00c0,0x00e0,0x00e0,0x00e0,0x00e0,
+ 0x0100,0x0100,0x0100,0x0100,0x0120,0x0120,0x0120,0x0120,
+ 0x0140,0x0140,0x0140,0x0140,0x0160,0x0160,0x0160,0x0160,
+ 0x0180,0x0180,0x0180,0x0180,0x01a0,0x01a0,0x01a0,0x01a0,
+ 0x01c0,0x01c0,0x01c0,0x01c0,0x01e0,0x01e0,0x01e0,0x01e0,
+ 0x0200,0x0200,0x0200,0x0200,0x0220,0x0220,0x0220,0x0220,
+ 0x0240,0x0240,0x0240,0x0240,0x0260,0x0260,0x0260,0x0260,
+ 0x0280,0x0280,0x0280,0x0280,0x02a0,0x02a0,0x02a0,0x02a0,
+ 0x02c0,0x02c0,0x02c0,0x02c0,0x02e0,0x02e0,0x02e0,0x02e0,
+ 0x0300,0x0300,0x0300,0x0300,0x0320,0x0320,0x0320,0x0320,
+ 0x0340,0x0340,0x0340,0x0340,0x0360,0x0360,0x0360,0x0360,
+ 0x0380,0x0380,0x0380,0x0380,0x03a0,0x03a0,0x03a0,0x03a0,
+ 0x03c0,0x03c0,0x03c0,0x03c0,0x03e0,0x03e0,0x03e0,0x03e0,
+ 0x0400,0x0400,0x0400,0x0400,0x0420,0x0420,0x0420,0x0420,
+ 0x0440,0x0440,0x0440,0x0440,0x0460,0x0460,0x0460,0x0460,
+ 0x0480,0x0480,0x0480,0x0480,0x04a0,0x04a0,0x04a0,0x04a0,
+ 0x04c0,0x04c0,0x04c0,0x04c0,0x04e0,0x04e0,0x04e0,0x04e0,
+ 0x0500,0x0500,0x0500,0x0500,0x0520,0x0520,0x0520,0x0520,
+ 0x0540,0x0540,0x0540,0x0540,0x0560,0x0560,0x0560,0x0560,
+ 0x0580,0x0580,0x0580,0x0580,0x05a0,0x05a0,0x05a0,0x05a0,
+ 0x05c0,0x05c0,0x05c0,0x05c0,0x05e0,0x05e0,0x05e0,0x05e0,
+ 0x0600,0x0600,0x0600,0x0600,0x0620,0x0620,0x0620,0x0620,
+ 0x0640,0x0640,0x0640,0x0640,0x0660,0x0660,0x0660,0x0660,
+ 0x0680,0x0680,0x0680,0x0680,0x06a0,0x06a0,0x06a0,0x06a0,
+ 0x06c0,0x06c0,0x06c0,0x06c0,0x06e0,0x06e0,0x06e0,0x06e0,
+ 0x0700,0x0700,0x0700,0x0700,0x0720,0x0720,0x0720,0x0720,
+ 0x0740,0x0740,0x0740,0x0740,0x0760,0x0760,0x0760,0x0760,
+ 0x0780,0x0780,0x0780,0x0780,0x07a0,0x07a0,0x07a0,0x07a0,
+ 0x07c0,0x07c0,0x07c0,0x07c0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0, // 256
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,0x07e0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 512
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 768
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+//
+// Clip and convert blue value into 5-bits for RGB565
+//
+static const uint16_t usRangeTableB[] = {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, // 0
+ 0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,
+ 0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,
+ 0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,
+ 0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,
+ 0x0005,0x0005,0x0005,0x0005,0x0005,0x0005,0x0005,0x0005,
+ 0x0006,0x0006,0x0006,0x0006,0x0006,0x0006,0x0006,0x0006,
+ 0x0007,0x0007,0x0007,0x0007,0x0007,0x0007,0x0007,0x0007,
+ 0x0008,0x0008,0x0008,0x0008,0x0008,0x0008,0x0008,0x0008,
+ 0x0009,0x0009,0x0009,0x0009,0x0009,0x0009,0x0009,0x0009,
+ 0x000a,0x000a,0x000a,0x000a,0x000a,0x000a,0x000a,0x000a,
+ 0x000b,0x000b,0x000b,0x000b,0x000b,0x000b,0x000b,0x000b,
+ 0x000c,0x000c,0x000c,0x000c,0x000c,0x000c,0x000c,0x000c,
+ 0x000d,0x000d,0x000d,0x000d,0x000d,0x000d,0x000d,0x000d,
+ 0x000e,0x000e,0x000e,0x000e,0x000e,0x000e,0x000e,0x000e,
+ 0x000f,0x000f,0x000f,0x000f,0x000f,0x000f,0x000f,0x000f,
+ 0x0010,0x0010,0x0010,0x0010,0x0010,0x0010,0x0010,0x0010,
+ 0x0011,0x0011,0x0011,0x0011,0x0011,0x0011,0x0011,0x0011,
+ 0x0012,0x0012,0x0012,0x0012,0x0012,0x0012,0x0012,0x0012,
+ 0x0013,0x0013,0x0013,0x0013,0x0013,0x0013,0x0013,0x0013,
+ 0x0014,0x0014,0x0014,0x0014,0x0014,0x0014,0x0014,0x0014,
+ 0x0015,0x0015,0x0015,0x0015,0x0015,0x0015,0x0015,0x0015,
+ 0x0016,0x0016,0x0016,0x0016,0x0016,0x0016,0x0016,0x0016,
+ 0x0017,0x0017,0x0017,0x0017,0x0017,0x0017,0x0017,0x0017,
+ 0x0018,0x0018,0x0018,0x0018,0x0018,0x0018,0x0018,0x0018,
+ 0x0019,0x0019,0x0019,0x0019,0x0019,0x0019,0x0019,0x0019,
+ 0x001a,0x001a,0x001a,0x001a,0x001a,0x001a,0x001a,0x001a,
+ 0x001b,0x001b,0x001b,0x001b,0x001b,0x001b,0x001b,0x001b,
+ 0x001c,0x001c,0x001c,0x001c,0x001c,0x001c,0x001c,0x001c,
+ 0x001d,0x001d,0x001d,0x001d,0x001d,0x001d,0x001d,0x001d,
+ 0x001e,0x001e,0x001e,0x001e,0x001e,0x001e,0x001e,0x001e,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f, // 256
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 512
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 768
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+#if defined (__MACH__) || defined( __LINUX__ ) || defined( __MCUXPRESSO )
+//
+// API for C
+//
+
+//
+// Memory initialization
+//
+int JPEG_openRAM(JPEGIMAGE *pJPEG, uint8_t *pData, int iDataSize, JPEG_DRAW_CALLBACK *pfnDraw)
+{
+ memset(pJPEG, 0, sizeof(JPEGIMAGE));
+ pJPEG->ucMemType = JPEG_MEM_RAM;
+ pJPEG->pfnRead = readRAM;
+ pJPEG->pfnSeek = seekMem;
+ pJPEG->pfnDraw = pfnDraw;
+ pJPEG->pfnOpen = NULL;
+ pJPEG->pfnClose = NULL;
+ pJPEG->JPEGFile.iSize = iDataSize;
+ pJPEG->JPEGFile.pData = pData;
+ pJPEG->iMaxMCUs = 1000; // set to an unnaturally high value to start
+ return JPEGInit(pJPEG);
+} /* JPEG_openRAM() */
+//
+// File initialization
+//
+int JPEG_openFile(JPEGIMAGE *pJPEG, const char *szFilename, JPEG_DRAW_CALLBACK *pfnDraw)
+{
+ memset(pJPEG, 0, sizeof(JPEGIMAGE));
+ pJPEG->ucMemType = JPEG_MEM_RAM;
+ pJPEG->pfnRead = readFile;
+ pJPEG->pfnSeek = seekFile;
+ pJPEG->pfnDraw = pfnDraw;
+ pJPEG->pfnOpen = NULL;
+ pJPEG->pfnClose = closeFile;
+ pJPEG->iMaxMCUs = 1000; // set to an unnaturally high value to start
+ pJPEG->JPEGFile.fHandle = fopen(szFilename, "r+b");
+ if (pJPEG->JPEGFile.fHandle == NULL)
+ return 0;
+ fseek((FILE *)pJPEG->JPEGFile.fHandle, 0, SEEK_END);
+ pJPEG->JPEGFile.iSize = (int)ftell((FILE *)pJPEG->JPEGFile.fHandle);
+ fseek((FILE *)pJPEG->JPEGFile.fHandle, 0, SEEK_SET);
+ return JPEGInit(pJPEG);
+} /* JPEG_openFile() */
+
+int JPEG_getLastError(JPEGIMAGE *pJPEG)
+{
+ return pJPEG->iError;
+} /* JPEG_getLastError() */
+
+int JPEG_getWidth(JPEGIMAGE *pJPEG)
+{
+ return pJPEG->iWidth;
+} /* JPEG_getWidth() */
+
+int JPEG_getHeight(JPEGIMAGE *pJPEG)
+{
+ return pJPEG->iHeight;
+} /* JPEG_getHeight() */
+
+int JPEG_getOrientation(JPEGIMAGE *pJPEG)
+{
+ return (int)pJPEG->ucOrientation;
+} /* JPEG_getOrientation() */
+
+int JPEG_getBpp(JPEGIMAGE *pJPEG)
+{
+ return (int)pJPEG->ucBpp;
+} /* JPEG_getBpp() */
+int JPEG_getSubSample(JPEGIMAGE *pJPEG)
+{
+ return (int)pJPEG->ucSubSample;
+} /* JPEG_getSubSample() */
+int JPEG_hasThumb(JPEGIMAGE *pJPEG)
+{
+ return (int)pJPEG->ucHasThumb;
+} /* JPEG_hasThumb() */
+
+int JPEG_getThumbWidth(JPEGIMAGE *pJPEG)
+{
+ return pJPEG->iThumbWidth;
+} /* JPEG_getThumbWidth() */
+
+int JPEG_getThumbHeight(JPEGIMAGE *pJPEG)
+{
+ return pJPEG->iThumbHeight;
+} /* JPEG_getThumbHeight() */
+
+void JPEG_setPixelType(JPEGIMAGE *pJPEG, int iType)
+{
+ pJPEG->ucPixelType = (uint8_t)iType;
+} /* JPEG_setPixelType() */
+
+void JPEG_setMaxOutputSize(JPEGIMAGE *pJPEG, int iMaxMCUs)
+{
+ if (iMaxMCUs < 1)
+ iMaxMCUs = 1; // don't allow invalid value
+ pJPEG->iMaxMCUs = iMaxMCUs;
+} /* JPEG_setMaxOutputSize() */
+
+int JPEG_decode(JPEGIMAGE *pJPEG, int x, int y, int iOptions)
+{
+ pJPEG->iXOffset = x;
+ pJPEG->iYOffset = y;
+ pJPEG->iOptions = iOptions;
+ return DecodeJPEG(pJPEG);
+} /* JPEG_decode() */
+
+int JPEG_decodeDither(JPEGIMAGE *pJPEG, uint8_t *pDither, int iOptions)
+{
+ pJPEG->iOptions = iOptions;
+ pJPEG->pDitherBuffer = pDither;
+ return DecodeJPEG(pJPEG);
+} /* JPEG_decodeDither() */
+
+void JPEG_close(JPEGIMAGE *pJPEG)
+{
+ if (pJPEG->pfnClose)
+ (*pJPEG->pfnClose)(pJPEG->JPEGFile.fHandle);
+} /* JPEG_close() */
+
+#endif // !__cplusplus
+
+//
+// Validate/adjust the requested crop area to land on MCU boundaries
+// (expand in all directions if needed)
+//
+void JPEG_setCropArea(JPEGIMAGE *pJPEG, int x, int y, int w, int h)
+{
+ int mcuCX=0, mcuCY=0;
+
+ if (x < 0)
+ x = 0;
+ if (y < 0)
+ y = 0;
+ switch (pJPEG->ucSubSample) // set up the parameters for the different subsampling options
+ {
+ case 0x00: // fake value to handle grayscale
+ case 0x01: // fake value to handle sRGB/CMYK
+ case 0x11:
+ mcuCX = mcuCY = 8;
+ break;
+ case 0x12:
+ mcuCX = 8;
+ mcuCY = 16;
+ break;
+ case 0x21:
+ mcuCX = 16;
+ mcuCY = 8;
+ break;
+ case 0x22:
+ mcuCX = mcuCY = 16;
+ break;
+ default: // to suppress compiler warning
+ break;
+ }
+ if (w & (mcuCX-1)) {
+ w &= ~(mcuCX-1);
+ w += mcuCX;
+ }
+ if (h & (mcuCY-1)) {
+ h &= ~(mcuCY-1);
+ h += mcuCY;
+ }
+ if (x > pJPEG->iWidth-mcuCX) x = pJPEG->iWidth-mcuCX;
+ if (y > pJPEG->iHeight-mcuCY) y = pJPEG->iHeight-mcuCY;
+ if (x + w > pJPEG->iWidth) w = pJPEG->iWidth - mcuCX;
+ if (y + h > pJPEG->iHeight) h = pJPEG->iHeight - mcuCY;
+ x &= ~(mcuCX-1);
+ y &= ~(mcuCY-1);
+ pJPEG->iCropX = x; pJPEG->iCropY = y;
+ pJPEG->iCropCX = w; pJPEG->iCropCY = h;
+} /* JPEG_setCropArea() */
+
+void JPEG_getCropArea(JPEGIMAGE *pJPEG, int *x, int *y, int *w, int *h)
+{
+ *x = pJPEG->iCropX; *y = pJPEG->iCropY;
+ *w = pJPEG->iCropCX; *h = pJPEG->iCropCY;
+} /* JPEG_getCropArea() */
+
+void JPEG_setFramebuffer(JPEGIMAGE *pJPEG, void *pFramebuffer)
+{
+ pJPEG->pFramebuffer = pFramebuffer;
+} /* JPEG_setFramebuffer() */
+
+//
+// Helper functions for memory based images
+//
+static int32_t readRAM(JPEGFILE *pFile, uint8_t *pBuf, int32_t iLen)
+{
+ int32_t iBytesRead;
+
+ iBytesRead = iLen;
+ if ((pFile->iSize - pFile->iPos) < iLen)
+ iBytesRead = pFile->iSize - pFile->iPos;
+ if (iBytesRead <= 0)
+ return 0;
+ memcpy(pBuf, &pFile->pData[pFile->iPos], iBytesRead);
+ pFile->iPos += iBytesRead;
+ return iBytesRead;
+} /* readRAM() */
+
+static int32_t readFLASH(JPEGFILE *pFile, uint8_t *pBuf, int32_t iLen)
+{
+ int32_t iBytesRead;
+
+ iBytesRead = iLen;
+ if ((pFile->iSize - pFile->iPos) < iLen)
+ iBytesRead = pFile->iSize - pFile->iPos;
+ if (iBytesRead <= 0)
+ return 0;
+ memcpy_P(pBuf, &pFile->pData[pFile->iPos], iBytesRead);
+ pFile->iPos += iBytesRead;
+ return iBytesRead;
+} /* readFLASH() */
+
+static int32_t seekMem(JPEGFILE *pFile, int32_t iPosition)
+{
+ if (iPosition < 0) iPosition = 0;
+ else if (iPosition >= pFile->iSize) iPosition = pFile->iSize-1;
+ pFile->iPos = iPosition;
+ return iPosition;
+} /* seekMem() */
+
+#if defined (__MACH__) || defined( __LINUX__ ) || defined( __MCUXPRESSO )
+
+static void closeFile(void *handle)
+{
+ fclose((FILE *)handle);
+} /* closeFile() */
+
+static int32_t seekFile(JPEGFILE *pFile, int32_t iPosition)
+{
+ if (iPosition < 0) iPosition = 0;
+ else if (iPosition >= pFile->iSize) iPosition = pFile->iSize-1;
+ pFile->iPos = iPosition;
+ fseek((FILE *)pFile->fHandle, iPosition, SEEK_SET);
+ return iPosition;
+} /* seekFile() */
+
+static int32_t readFile(JPEGFILE *pFile, uint8_t *pBuf, int32_t iLen)
+{
+ int32_t iBytesRead;
+
+ iBytesRead = iLen;
+ if ((pFile->iSize - pFile->iPos) < iLen)
+ iBytesRead = pFile->iSize - pFile->iPos;
+ if (iBytesRead <= 0)
+ return 0;
+ iBytesRead = (int)fread(pBuf, 1, iBytesRead, (FILE *)pFile->fHandle);
+ pFile->iPos += iBytesRead;
+ return iBytesRead;
+} /* readFile() */
+
+#endif // __LINUX__
+//
+// The following functions are written in plain C and have no
+// 3rd party dependencies, not even the C runtime library
+//
+//
+// Initialize a JPEG file and callback access from a file on SD or memory
+// returns 1 for success, 0 for failure
+// Fills in the basic image info fields of the JPEGIMAGE structure
+//
+static int JPEGInit(JPEGIMAGE *pJPEG)
+{
+ return JPEGParseInfo(pJPEG, 0); // gather info for image
+} /* JPEGInit() */
+//
+// Unpack the Huffman tables
+//
+static int JPEGGetHuffTables(uint8_t *pBuf, int iLen, JPEGIMAGE *pJPEG)
+{
+ int i, j, iOffset, iTableOffset;
+ uint8_t ucTable, *pHuffVals;
+
+ iOffset = 0;
+ pHuffVals = (uint8_t *)pJPEG->usPixels; // temp holding area to save RAM
+ while (iLen > 17) // while there are tables to copy (we may have combined more than 1 table together)
+ {
+ ucTable = pBuf[iOffset++]; // get table index
+ if (ucTable & 0x10) // convert AC offset of 0x10 into offset of 4
+ ucTable ^= 0x14;
+ pJPEG->ucHuffTableUsed |= (1 << ucTable); // mark this table as being defined
+ if (ucTable <= 7) // tables are 0-3, AC+DC
+ {
+ iTableOffset = ucTable * HUFF_TABLEN;
+ j = 0; // total bits
+ for (i=0; i<16; i++)
+ {
+ j += pBuf[iOffset];
+ pHuffVals[iTableOffset+i] = pBuf[iOffset++];
+ }
+ iLen -= 17; // subtract length of bit lengths
+ if (j == 0 || j > 256 || j > iLen) // bogus bit lengths
+ {
+ return -1;
+ }
+ iTableOffset += 16;
+ for (i=0; ib11Bit = 1; // indicate we're using the bigger A/C decode tables
+ // first do DC components (up to 4 tables of 12-bit codes)
+ // we can save time and memory for the DC codes by knowing that there exist short codes (<= 6 bits)
+ // and long codes (>6 bits, but the first 5 bits are 1's). This allows us to create 2 tables: a 6-bit and 7 or 8-bit
+ // to handle any DC codes
+ iMaxLength = 12; // assume DC codes can be 12-bits
+ iMaxMask = 0x7f; // lower 7 bits after truncate 5 leading 1's
+ if (pJPEG->ucMode == 0xc3) // create 13-bit tables for lossless mode
+ {
+ iMaxLength = 13;
+ iMaxMask = 0xff;
+ }
+ for (iTable = 0; iTable < 2; iTable++)
+ {
+ if (pJPEG->ucHuffTableUsed & (1<huffdcFast[iTable] = (int *)PILIOAlloc(0x180); // short table = 128 bytes, long table = 256 bytes
+ pucShort = (unsigned char *)&pJPEG->ucHuffDC[iTable*DC_TABLE_SIZE];
+ // pJPEG->huffdc[iTable] = pJPEG->huffdcFast[iTable] + 0x20; // 0x20 longs = 128 bytes
+ pucLong = (unsigned char *)&pJPEG->ucHuffDC[iTable*DC_TABLE_SIZE + 128];
+ pBits = &pJPEG->ucHuffVals[iTable * HUFF_TABLEN];
+ p = pBits;
+ p += 16; // point to bit data
+ cc = 0; // start with a code of 0
+ for (iBitNum = 1; iBitNum <= 16; iBitNum++)
+ {
+ iLen = *pBits++; // get number of codes for this bit length
+ if (iBitNum > iMaxLength && iLen > 0) // we can't handle codes longer a certain length
+ {
+ return -1;
+ }
+ while (iLen)
+ {
+ // if (iBitNum > 6) // do long table
+ if ((cc >> (iBitNum-5)) == 0x1f) // first 5 bits are 1 - use long table
+ {
+ count = iMaxLength - iBitNum;
+ codestart = cc << count;
+ pucTable = &pucLong[codestart & iMaxMask]; // use lower 7/8 bits of code
+ }
+ else // do short table
+ {
+ count = 6 - iBitNum;
+ if (count < 0)
+ return -1; // DEBUG - something went wrong
+ codestart = cc << count;
+ pucTable = &pucShort[codestart];
+ }
+ ucCode = *p++; // get actual huffman code
+ if (ucCode == 16 && pJPEG->ucMode == 0xc3) // lossless mode
+ {
+ // in lossless mode, this code won't fit in 4 bits, so save it's length in the next slot
+ ucCode = 255;
+ pucLong[256] = (unsigned char)iBitNum;
+ }
+ // does precalculating the DC value save time on ARM?
+#ifndef USE_ARM_ASM
+ if (ucCode != 0 && (ucCode + iBitNum) <= 6 && pJPEG->ucMode != 0xc2) // we can fit the magnitude value in the code lookup (not for progressive)
+ {
+ int k, iLoop;
+ unsigned char ucCoeff;
+ unsigned char *d = &pucTable[512];
+ unsigned char ucMag = ucCode;
+ ucCode |= ((iBitNum+ucCode) << 4); // add magnitude bits to length
+ repeat = 1<ucHuffTableUsed & (1<<(iTable+4))) // if this table is defined
+ {
+ pBits = &pJPEG->ucHuffVals[(iTable+4) * HUFF_TABLEN];
+ p = pBits;
+ p += 16; // point to bit data
+ pShort = &pJPEG->usHuffAC[iTable*HUFF11SIZE];
+ pLong = &pJPEG->usHuffAC[iTable*HUFF11SIZE + 1024]; // long codes start here
+ cc = 0; // start with a code of 0
+ // construct the decode table
+ for (iBitNum = 1; iBitNum <= 16; iBitNum++)
+ {
+ iLen = *pBits++; // get number of codes for this bit length
+ while (iLen)
+ {
+ if ((cc >> (iBitNum-4)) == 0xf) // first 4 bits are 1 - use long table
+ {
+ count = 16 - iBitNum;
+ codestart = cc << count;
+ pTable = &pLong[codestart & 0xfff]; // use lower 12 bits of code
+ }
+ else
+ {
+ count = 12 - iBitNum;
+ if (count < 0) // a 13-bit? code - that doesn't fit our optimized scheme, see if we can do a bigger table version
+ {
+ return -1; // DEBUG - fatal error, we currently don't support it
+ }
+ codestart = cc << count;
+ pTable = &pShort[codestart]; // 11 bits or shorter
+ }
+ code = *p++; // get actual huffman code
+ if (bThumbnail && code != 0) // add "extra" bits to code length since we skip these codes
+ {
+ // get rid of extra bits in code and add increment (1) for AC index
+ code = ((iBitNum+(code & 0xf)) << 8) | ((code >> 4)+1);
+ }
+ else
+ {
+ code |= (iBitNum << 8);
+ }
+ if (count) // do it as dwords to save time
+ {
+ repeat = 1 << (count-1); // store as dwords (/2)
+ ul = code | (code << 16);
+ pLongTable = (uint32_t *)pTable;
+ for (j=0; jusPixels;
+ for (j=0; j<4; j++)
+ {
+ if (pJPEG->ucHuffTableUsed & (1 << j))
+ iTablesUsed++;
+ }
+ // first do DC components (up to 4 tables of 12-bit codes)
+ // we can save time and memory for the DC codes by knowing that there exist short codes (<= 6 bits)
+ // and long codes (>6 bits, but the first 5 bits are 1's). This allows us to create 2 tables: a 6-bit and 7 or 8-bit
+ // to handle any DC codes
+ iMaxLength = 12; // assume DC codes can be 12-bits
+ iMaxMask = 0x7f; // lower 7 bits after truncate 5 leading 1's
+ for (iTable = 0; iTable < 4; iTable++)
+ {
+ if (pJPEG->ucHuffTableUsed & (1 << iTable))
+ {
+ // pJPEG->huffdcFast[iTable] = (int *)PILIOAlloc(0x180); // short table = 128 bytes, long table = 256 bytes
+ pucShort = &pJPEG->ucHuffDC[iTable*DC_TABLE_SIZE];
+ // pJPEG->huffdc[iTable] = pJPEG->huffdcFast[iTable] + 0x20; // 0x20 longs = 128 bytes
+ pucLong = &pJPEG->ucHuffDC[iTable*DC_TABLE_SIZE + 128];
+ pBits = &pHuffVals[iTable * HUFF_TABLEN];
+ p = pBits;
+ p += 16; // point to bit data
+ cc = 0; // start with a code of 0
+ for (iBitNum = 1; iBitNum <= 16; iBitNum++)
+ {
+ iLen = *pBits++; // get number of codes for this bit length
+ if (iBitNum > iMaxLength && iLen > 0) // we can't handle codes longer a certain length
+ {
+ return 0;
+ }
+ while (iLen)
+ {
+ // if (iBitNum > 6) // do long table
+ if ((cc >> (iBitNum-5)) == 0x1f) // first 5 bits are 1 - use long table
+ {
+ count = iMaxLength - iBitNum;
+ codestart = cc << count;
+ pucTable = &pucLong[codestart & iMaxMask]; // use lower 7/8 bits of code
+ }
+ else // do short table
+ {
+ count = 6 - iBitNum;
+ if (count < 0)
+ return 0; // DEBUG - something went wrong
+ codestart = cc << count;
+ pucTable = &pucShort[codestart];
+ }
+ ucCode = *p++; // get actual huffman code
+ // does precalculating the DC value save time on ARM?
+#ifndef USE_ARM_ASM
+ if (ucCode != 0 && (ucCode + iBitNum) <= 6 && pJPEG->ucMode != 0xc2) // we can fit the magnitude value in the code lookup (not for progressive)
+ {
+ int k, iLoop;
+ unsigned char ucCoeff;
+ unsigned char *d = &pucTable[512];
+ unsigned char ucMag = ucCode;
+ ucCode |= ((iBitNum+ucCode) << 4); // add magnitude bits to length
+ repeat = 1<ucHuffTableUsed & (1 << (iTable+4))) // if this table is defined
+ {
+ pBits = &pHuffVals[(iTable+4) * HUFF_TABLEN];
+ p = pBits;
+ p += 16; // point to bit data
+ if (iTable * HUFF11SIZE >= sizeof(pJPEG->usHuffAC) / 2)
+ return 0;
+ pShort = &pJPEG->usHuffAC[iTable*HUFF11SIZE];
+ pLong = &pJPEG->usHuffAC[iTable*HUFF11SIZE + 1024];
+ cc = 0; // start with a code of 0
+ // construct the decode table
+ for (iBitNum = 1; iBitNum <= 16; iBitNum++)
+ {
+ iLen = *pBits++; // get number of codes for this bit length
+ while (iLen)
+ {
+ if ((cc >> (iBitNum-6)) == 0x3f) // first 6 bits are 1 - use long table
+ {
+ count = 16 - iBitNum;
+ codestart = cc << count;
+ pTable = &pLong[codestart & 0x3ff]; // use lower 10 bits of code
+ }
+ else
+ {
+ count = 10 - iBitNum;
+ if (count < 0) // an 11/12-bit? code - that doesn't fit our optimized scheme, see if we can do a bigger table version
+ {
+ if (count == -1 && iTablesUsed <= 4) // we need to create "slow" tables
+ { // DEBUG
+// j = JPEGMakeHuffTables_Slow(pJPEG, bThumbnail);
+ return 0;
+ }
+ else
+ return 0; // DEBUG - fatal error, more than 2 big tables we currently don't support
+ }
+ codestart = cc << count;
+ pTable = &pShort[codestart]; // 10 bits or shorter
+ }
+ code = *p++; // get actual huffman code
+ if (bThumbnail && code != 0) // add "extra" bits to code length since we skip these codes
+ {
+ // get rid of extra bits in code and add increment (1) for AC index
+ code = ((iBitNum+(code & 0xf)) << 8) | ((code >> 4)+1);
+ }
+#ifdef BOGUS // precalculating the AC coeff makes it run slightly slower
+ else if ((code & 0xf) != 0 && (code + iBitNum) <= 10) // we can fit the magnitude value + huffman code in a single read
+ {
+ int k, iLoop;
+ unsigned short usCoeff;
+ unsigned short *d = &pTable[4096]; // use unused table slots 2+3 for extra coeff data
+ unsigned char ucMag = (unsigned char)(code & 0xf);
+ code |= ((iBitNum + (code & 0xf)) << 8); // add magnitude bits to length
+ repeat = 1< 1)
+ {
+ iType = 4;
+ }
+ switch (iType)
+ {
+ case 3: /* Short */
+ i = TIFFSHORT(p+8, bMotorola);
+ break;
+ case 4: /* Long */
+ case 7: // undefined (treat it as a long since it's usually a multibyte buffer)
+ i = TIFFLONG(p+8, bMotorola);
+ break;
+ case 6: // signed byte
+ i = (signed char)p[8];
+ break;
+ case 2: /* ASCII */
+ case 5: /* Unsigned Rational */
+ case 10: /* Signed Rational */
+ i = TIFFLONG(p+8, bMotorola);
+ break;
+ default: /* to suppress compiler warning */
+ i = 0;
+ break;
+ }
+ return i;
+
+} /* TIFFVALUE() */
+static void GetTIFFInfo(JPEGIMAGE *pPage, int bMotorola, int iOffset)
+{
+ int iTag, iTagCount, i;
+ uint8_t *cBuf = pPage->ucFileBuf;
+
+ iTagCount = TIFFSHORT(&cBuf[iOffset], bMotorola); /* Number of tags in this dir */
+ if (iTagCount < 1 || iTagCount > 256) // invalid tag count
+ return; /* Bad header info */
+ /*--- Search the TIFF tags ---*/
+ for (i=0; iucOrientation = TIFFVALUE(p, bMotorola);
+ }
+ else if (iTag == 256) // width of thumbnail
+ {
+ pPage->iThumbWidth = TIFFVALUE(p, bMotorola);
+ }
+ else if (iTag == 257) // height of thumbnail
+ {
+ pPage->iThumbHeight = TIFFVALUE(p, bMotorola);
+ }
+ else if (iTag == 513) // offset to JPEG data
+ {
+ pPage->iThumbData = TIFFVALUE(p, bMotorola);
+ }
+ }
+} /* GetTIFFInfo() */
+
+static int JPEGGetSOS(JPEGIMAGE *pJPEG, int *iOff)
+{
+ int16_t sLen;
+ int iOffset = *iOff;
+ int i, j;
+ uint8_t uc,c,cc;
+ uint8_t *buf = pJPEG->ucFileBuf;
+
+ sLen = MOTOSHORT(&buf[iOffset]);
+ iOffset += 2;
+
+ // Assume no components in this scan
+ for (i=0; i<4; i++)
+ pJPEG->JPCI[i].component_needed = 0;
+
+ uc = buf[iOffset++]; // get number of components
+ pJPEG->ucComponentsInScan = uc;
+ sLen -= 3;
+ if (uc < 1 || uc > MAX_COMPS_IN_SCAN || sLen != (uc*2+3)) // check length of data packet
+ return 1; // error
+ for (i=0; iJPCI[j].component_id == cc)
+ break;
+ }
+ if (j == 4) // error, not found
+ return 1;
+ if ((c & 0xf) > 3 || (c & 0xf0) > 0x30)
+ return 1; // bogus table numbers
+ pJPEG->JPCI[j].dc_tbl_no = c >> 4;
+ pJPEG->JPCI[j].ac_tbl_no = c & 0xf;
+ pJPEG->JPCI[j].component_needed = 1; // mark this component as being included in the scan
+ }
+ pJPEG->iScanStart = buf[iOffset++]; // Get the scan start (or lossless predictor) for this scan
+ pJPEG->iScanEnd = buf[iOffset++]; // Get the scan end for this scan
+ c = buf[iOffset++]; // successive approximation bits
+ pJPEG->cApproxBitsLow = c & 0xf; // also point transform in lossless mode
+ pJPEG->cApproxBitsHigh = c >> 4;
+
+ *iOff = iOffset;
+ return 0;
+
+} /* JPEGGetSOS() */
+//
+// Remove markers from the data stream to allow faster decode
+// Stuffed zeros and restart interval markers aren't needed to properly decode
+// the data, but they make reading VLC data slower, so I pull them out first
+//
+static int JPEGFilter(uint8_t *pBuf, uint8_t *d, int iLen, uint8_t *bFF)
+{
+#ifdef HAS_SSE
+ __m128i xmmIn, xmmOut;
+ __m128i xmmFF = _mm_cmpeq_epi8(xmmIn, xmmIn);
+#endif // HAS_SSE
+#ifdef HAS_NEON
+ uint8x16_t u816FF = vdupq_n_u8(0xff);
+ uint8x16_t u816In, u816Out;
+#ifdef OLD_NEON
+ uint8x8_t u88Merged;
+ uint32x2_t u322merged;
+#endif // OLD_NEON
+#endif // HAS_NEON
+
+ unsigned char c, *s, *pEnd, *pStart;
+
+ pStart = d;
+ s = pBuf;
+ pEnd = &s[iLen-1]; // stop just shy of the end to not miss a final marker/stuffed 0
+ if (*bFF) // last byte was a FF, check the next one
+ {
+ if (s[0] == 0) // stuffed 0, keep the FF
+ *d++ = 0xff;
+ s++;
+ *bFF = 0;
+ }
+#ifdef HAS_SSE
+ while (s < pEnd-16)
+ {
+ xmmIn = _mm_loadu_si128((__m128i*)s);
+ xmmOut = _mm_cmpeq_epi8(xmmFF, xmmIn); // any FF's in these 16 bytes?
+ if (_mm_movemask_epi8(xmmOut) == 0) // no FF's, just copy this block
+ {
+ _mm_storeu_si128((__m128i*)d, xmmIn);
+ s += 16;
+ d += 16;
+ }
+ else
+ {
+ int i = 16; // do these 16 bytes the slow way
+ while (i) {
+ c = *d++ = *s++;
+ if (c == 0xff) { // marker or stuffed zeros?
+ if (s[0] != 0) { // it's a marker, skip both
+ d--;
+ }
+ s++; // for stuffed 0's, store the FF, skip the 00
+ } // found FF
+ i--;
+ } // while processing the 16 "slow" bytes
+ }
+ } // while SSE filtering
+#endif // HAS_SSE
+#ifdef HAS_NEON
+ while (s < pEnd - 16)
+ {
+ u816In = vld1q_u8(s);
+ u816Out = vceqq_u8(u816FF, u816In); // any FF's in these 16 bytes?
+#ifdef OLD_NEON
+ u88Merged = vpadd_u8(vget_high_u8(u816Out), vget_low_u8(u816Out));
+ u322merged = vpadd_u32 (vreinterpret_u32_u8(u88Merged), vreinterpret_u32_u8(u88Merged));
+ if (vget_lane_u32 (u322merged, 0) == 0) // no FF's, just copy this block
+#else
+ if (vaddvq_u8(u816Out) == 0) // any byte != 0 means FFs
+#endif
+ {
+ vst1q_u8(d, u816In);
+ s += 16;
+ d += 16;
+ }
+ else
+ {
+ int i = 16; // do these 16 bytes the slow way
+ while (i) {
+ c = *d++ = *s++;
+ if (c == 0xff) { // marker or stuffed zeros?
+ if (s[0] != 0) { // it's a marker, skip both
+ d--;
+ }
+ s++; // for stuffed 0's, store the FF, skip the 00
+ } // found FF
+ i--;
+ } // while processing the 16 "slow" bytes
+ } // if need to remove stuffed FF's or markers
+ } // while processing buffer with SIMD
+#endif // HAS_NEON
+
+ while (s < pEnd)
+ {
+ c = *d++ = *s++;
+ if (c == 0xff) // marker or stuffed zeros?
+ {
+ if (s[0] != 0) // it's a marker, skip both
+ {
+ d--;
+ }
+ s++; // for stuffed 0's, store the FF, skip the 00
+ }
+ }
+ if (s == pEnd) // need to test the last byte
+ {
+ c = s[0];
+ if (c == 0xff) // last byte is FF, take care of it next time through
+ *bFF = 1; // take care of it next time through
+ else
+ *d++ = c; // nope, just store it
+ }
+ return (int)(d-pStart); // filtered output length
+} /* JPEGFilter() */
+//
+// Read and filter more VLC data for decoding
+//
+static void JPEGGetMoreData(JPEGIMAGE *pPage)
+{
+ int iDelta = pPage->iVLCSize - pPage->iVLCOff;
+// printf("Getting more data...size=%d, off=%d\n", pPage->iVLCSize, pPage->iVLCOff);
+ // move any existing data down
+ if (iDelta >= (JPEG_FILE_BUF_SIZE-64) || iDelta < 0)
+ return; // buffer is already full; no need to read more data
+ if (pPage->iVLCOff != 0)
+ {
+ memcpy(pPage->ucFileBuf, &pPage->ucFileBuf[pPage->iVLCOff], pPage->iVLCSize - pPage->iVLCOff);
+ pPage->iVLCSize -= pPage->iVLCOff;
+ pPage->iVLCOff = 0;
+ pPage->bb.pBuf = pPage->ucFileBuf; // reset VLC source pointer too
+ }
+ if (pPage->JPEGFile.iPos < pPage->JPEGFile.iSize && pPage->iVLCSize < JPEG_FILE_BUF_SIZE-64)
+ {
+ int i;
+ // Try to read enough to fill the buffer
+ i = (*pPage->pfnRead)(&pPage->JPEGFile, &pPage->ucFileBuf[pPage->iVLCSize], JPEG_FILE_BUF_SIZE - pPage->iVLCSize); // max length we can read
+ // Filter out the markers
+ pPage->iVLCSize += JPEGFilter(&pPage->ucFileBuf[pPage->iVLCSize], &pPage->ucFileBuf[pPage->iVLCSize], i, &pPage->ucFF);
+ }
+} /* JPEGGetMoreData() */
+
+//
+// Parse the JPEG header, gather necessary info to decode the image
+// Returns 1 for success, 0 for failure
+//
+static int JPEGParseInfo(JPEGIMAGE *pPage, int bExtractThumb)
+{
+ int iBytesRead;
+ int i, iOffset, iTableOffset;
+ uint8_t ucTable, *s = pPage->ucFileBuf;
+ uint16_t usMarker, usLen = 0;
+ int iFilePos = 0;
+
+ pPage->pFramebuffer = NULL; // this must be set AFTER calling this function
+ // make sure usPixels is 16-byte aligned for S3 SIMD (and possibly others)
+ i = (int)(int64_t)pPage->usUnalignedPixels;
+ i &= 15;
+ if (i == 0) i = 16; // already 16-byte aligned
+ pPage->usPixels = &pPage->usUnalignedPixels[(16-i)>>1];
+ // do the same for the MCU buffers
+ i = (int)(int64_t)pPage->sUnalignedMCUs;
+ i &= 15;
+ if (i == 0) i = 16;
+ pPage->sMCUs = &pPage->sUnalignedMCUs[(16-i)>>1];
+
+ if (bExtractThumb) // seek to the start of the thumbnail image
+ {
+ iFilePos = pPage->iThumbData;
+ (*pPage->pfnSeek)(&pPage->JPEGFile, iFilePos);
+ }
+ iBytesRead = (*pPage->pfnRead)(&pPage->JPEGFile, s, JPEG_FILE_BUF_SIZE);
+ if (iBytesRead < 256) // a JPEG file this tiny? probably bad
+ {
+ pPage->iError = JPEG_INVALID_FILE;
+ return 0;
+ }
+ iFilePos += iBytesRead;
+ if (MOTOSHORT(pPage->ucFileBuf) != 0xffd8)
+ {
+ pPage->iError = JPEG_INVALID_FILE;
+ return 0; // not a JPEG file
+ }
+ iOffset = 2; /* Start at offset of first marker */
+ usMarker = 0; /* Search for SOFx (start of frame) marker */
+ while (usMarker != 0xffda && iOffset < pPage->JPEGFile.iSize)
+ {
+ if (iOffset >= JPEG_FILE_BUF_SIZE/2) // too close to the end, read more data
+ {
+ // Do we need to seek first?
+ if (iOffset >= JPEG_FILE_BUF_SIZE)
+ {
+ iFilePos += (iOffset - iBytesRead);
+ iOffset = 0;
+ (*pPage->pfnSeek)(&pPage->JPEGFile, iFilePos);
+ iBytesRead = 0; // throw away any old data
+ }
+ // move existing bytes down
+ if (iOffset)
+ {
+ memcpy(pPage->ucFileBuf, &pPage->ucFileBuf[iOffset], iBytesRead - iOffset);
+ iBytesRead -= iOffset;
+ iOffset = 0;
+ }
+ i = (*pPage->pfnRead)(&pPage->JPEGFile, &pPage->ucFileBuf[iBytesRead], JPEG_FILE_BUF_SIZE-iBytesRead);
+ iFilePos += i;
+ iBytesRead += i;
+ }
+ usMarker = MOTOSHORT(&s[iOffset]);
+ iOffset += 2;
+ usLen = MOTOSHORT(&s[iOffset]); // marker length
+
+ if (usMarker < 0xffc0 || usMarker == 0xffff) // invalid marker, could be generated by "Arles Image Web Page Creator" or Accusoft
+ {
+ iOffset++;
+ continue; // skip 1 byte and try to resync
+ }
+ switch (usMarker)
+ {
+ case 0xffc1:
+ case 0xffc2:
+ case 0xffc3:
+ pPage->iError = JPEG_UNSUPPORTED_FEATURE;
+ return 0; // currently unsupported modes
+
+ case 0xffe1: // App1 (EXIF?)
+ if (s[iOffset+2] == 'E' && s[iOffset+3] == 'x' && (s[iOffset+8] == 'M' || s[iOffset+8] == 'I')) // the EXIF data we want
+ {
+ int bMotorola, IFD, iTagCount;
+ pPage->iEXIF = iFilePos - iBytesRead + iOffset + 8; // start of TIFF file
+ // Get the orientation value (if present)
+ bMotorola = (s[iOffset+8] == 'M');
+ IFD = TIFFLONG(&s[iOffset+12], bMotorola);
+ iTagCount = TIFFSHORT(&s[iOffset+16], bMotorola);
+ GetTIFFInfo(pPage, bMotorola, IFD+iOffset+8);
+ // The second IFD defines the thumbnail (if present)
+ if (iTagCount >= 1 && iTagCount < 32) // valid number of tags for EXIF data 'page'
+ {
+ // point to next IFD
+ IFD += (12 * iTagCount) + 2;
+ IFD = TIFFLONG(&s[IFD + iOffset + 8], bMotorola);
+ if (IFD != 0) // Thumbnail present?
+ {
+ pPage->ucHasThumb = 1;
+ GetTIFFInfo(pPage, bMotorola, IFD+iOffset+8); // info for second 'page' of TIFF
+ pPage->iThumbData += iOffset + 8; // absolute offset in the file
+ }
+ }
+ }
+ break;
+ case 0xffc0: // SOFx - start of frame
+ pPage->ucMode = (uint8_t)usMarker;
+ pPage->ucBpp = s[iOffset+2]; // bits per sample
+ pPage->iCropX = pPage->iCropY = 0; // initialize crop rectangle to full image size
+ pPage->iCropCY = pPage->iHeight = MOTOSHORT(&s[iOffset+3]);
+ pPage->iCropCX = pPage->iWidth = MOTOSHORT(&s[iOffset+5]);
+ pPage->ucNumComponents = s[iOffset+7];
+ pPage->ucBpp = pPage->ucBpp * pPage->ucNumComponents; /* Bpp = number of components * bits per sample */
+ if (pPage->ucNumComponents == 1)
+ pPage->ucSubSample = 0; // use this to differentiate from color 1:1
+ else
+ {
+ usLen -= 8;
+ iOffset += 8;
+// pPage->ucSubSample = s[iOffset+9]; // subsampling option for the second color component
+ for (i=0; iucNumComponents; i++)
+ {
+ uint8_t ucSamp;
+ pPage->JPCI[i].component_id = s[iOffset++];
+ pPage->JPCI[i].component_index = (unsigned char)i;
+ ucSamp = s[iOffset++]; // get the h+v sampling factor
+ if (i == 0) // Y component?
+ pPage->ucSubSample = ucSamp;
+// pPage->JPCI[i].h_samp_factor = ucSamp >> 4;
+// pPage->JPCI[i].v_samp_factor = ucSamp & 0xf;
+ pPage->JPCI[i].quant_tbl_no = s[iOffset++]; // quantization table number
+ if (pPage->JPCI[i].quant_tbl_no > 3)
+ {
+ pPage->iError = JPEG_DECODE_ERROR;
+ return 0; // error
+ }
+ usLen -= 3;
+ }
+ }
+ break;
+ case 0xffdd: // Restart Interval
+ if (usLen == 4)
+ pPage->iResInterval = MOTOSHORT(&s[iOffset+2]);
+ break;
+ case 0xffc4: /* M_DHT */ // get Huffman tables
+ iOffset += 2; // skip length
+ usLen -= 2; // subtract length length
+ if (JPEGGetHuffTables(&s[iOffset], usLen, pPage) != 0) // bad tables?
+ {
+ pPage->iError = JPEG_DECODE_ERROR;
+ return 0; // error
+ }
+ break;
+ case 0xffdb: /* M_DQT */
+ /* Get the quantization tables */
+ /* first byte has PPPPNNNN where P = precision and N = table number 0-3 */
+ iOffset += 2; // skip length
+ usLen -= 2; // subtract length length
+ while (usLen > 0)
+ {
+ ucTable = s[iOffset++]; // table number
+ if ((ucTable & 0xf) > 3) // invalid table number
+ {
+ pPage->iError = JPEG_DECODE_ERROR;
+ return 0;
+ }
+ iTableOffset = (ucTable & 0xf) * DCTSIZE;
+ if (ucTable & 0xf0) // if word precision
+ {
+ for (i=0; isQuantTable[i+iTableOffset] = MOTOSHORT(&s[iOffset]);
+ iOffset += 2;
+ }
+ usLen -= (DCTSIZE*2 + 1);
+ }
+ else // byte precision
+ {
+ for (i=0; isQuantTable[i+iTableOffset] = (unsigned short)s[iOffset++];
+ }
+ usLen -= (DCTSIZE + 1);
+ }
+ }
+ break;
+ } // switch on JPEG marker
+ iOffset += usLen;
+ } // while
+ if (usMarker == 0xffda) // start of image
+ {
+ if (pPage->ucBpp != 8) // need to match up table IDs
+ {
+ iOffset -= usLen;
+ JPEGGetSOS(pPage, &iOffset); // get Start-Of-Scan info for decoding
+ }
+ if (!JPEGMakeHuffTables(pPage, 0)) //int bThumbnail) DEBUG
+ {
+ pPage->iError = JPEG_UNSUPPORTED_FEATURE;
+ return 0;
+ }
+ // Now the offset points to the start of compressed data
+ i = JPEGFilter(&pPage->ucFileBuf[iOffset], pPage->ucFileBuf, iBytesRead-iOffset, &pPage->ucFF);
+ pPage->iVLCOff = 0;
+ pPage->iVLCSize = i;
+ JPEGGetMoreData(pPage); // read more VLC data
+ return 1;
+ }
+ pPage->iError = JPEG_DECODE_ERROR;
+ return 0;
+} /* JPEGParseInfo() */
+//
+// Fix and reorder the quantization table for faster decoding.*
+//
+static void JPEGFixQuantD(JPEGIMAGE *pJPEG)
+{
+ int iTable, iTableOffset;
+ signed short sTemp[DCTSIZE];
+ int i;
+ uint16_t *p;
+
+ for (iTable=0; iTableucNumComponents; iTable++)
+ {
+ iTableOffset = iTable * DCTSIZE;
+ p = (uint16_t *)&pJPEG->sQuantTable[iTableOffset];
+ for (i=0; isQuantTable[iTableOffset], sTemp, DCTSIZE*sizeof(short)); // copy back to original spot
+
+ // Prescale for DCT multiplication
+ p = (uint16_t *)&pJPEG->sQuantTable[iTableOffset];
+ for (i=0; i> 12);
+ }
+ }
+} /* JPEGFixQuantD() */
+//
+// Decode the DC and 2-63 AC coefficients of the current DCT block
+// For 1/4 and 1/8 scaled images, we don't store most of the AC values since we
+// won't use them. For skipped MCUs (outside crop area), we don't decode any AC values
+//
+static int JPEGDecodeMCU(JPEGIMAGE *pJPEG, int iMCU, int *iDCPredictor)
+{
+ my_ulong ulCode, ulTemp;
+ uint8_t *pZig;
+ signed char cCoeff;
+ unsigned short *pFast;
+ unsigned char ucHuff, *pucFast;
+ uint32_t usHuff; // this prevents an unnecessary & 65535 for shorts
+ uint32_t ulBitOff;
+ my_ulong ulBits; // local copies to allow compiler to use register vars
+ uint8_t *pBuf, *pEnd, *pEnd2;
+ signed short *pMCU = &pJPEG->sMCUs[iMCU];
+ uint16_t u16MCUFlags;
+
+ #define MIN_DCT_THRESHOLD 8
+
+ ulBitOff = pJPEG->bb.ulBitOff;
+ ulBits = pJPEG->bb.ulBits;
+ pBuf = pJPEG->bb.pBuf;
+
+ if (ulBitOff > (REGISTER_WIDTH-17)) { // need to get more data
+ pBuf += (ulBitOff >> 3);
+ ulBitOff &= 7;
+ ulBits = MOTOLONG(pBuf);
+ }
+ if (iMCU < 0) { // skip this block (cropped, or grayscale output from color)
+ pEnd2 = (uint8_t *)&cZigZag2[1]; // we only capture the DC value
+ } else if (pJPEG->iOptions & (JPEG_SCALE_QUARTER | JPEG_SCALE_EIGHTH)) { // reduced size DCT
+ pMCU[1] = pMCU[8] = pMCU[9] = 0;
+ pEnd2 = (uint8_t *)&cZigZag2[5]; // we only need to store the 4 elements we care about
+ } else { // decode all the AC coefficients
+ memset(pMCU, 0, 64*sizeof(short)); // pre-fill with zero since we may skip coefficients
+ pEnd2 = (uint8_t *)&cZigZag2[64];
+ }
+ u16MCUFlags = 0;
+ pZig = (unsigned char *)&cZigZag2[1];
+ pEnd = (unsigned char *)&cZigZag2[64];
+
+ // get the DC component
+ pucFast = &pJPEG->ucHuffDC[pJPEG->ucDCTable * DC_TABLE_SIZE];
+ ulCode = (ulBits >> (REGISTER_WIDTH - 12 - ulBitOff)) & 0xfff; // get as lower 12 bits
+ if (ulCode >= 0xf80) // it's a long code
+ ulCode = (ulCode & 0xff); // point to long table and trim to 7-bits + 0x80 offset into long table
+ else
+ ulCode >>= 6; // it's a short code, use first 6 bits only
+ ucHuff = pucFast[ulCode];
+ cCoeff = (signed char)pucFast[ulCode+512]; // get pre-calculated extra bits for "small" values
+ if (ucHuff == 0) // invalid code
+ return -1;
+ ulBitOff += (ucHuff >> 4); // add the Huffman length
+ ucHuff &= 0xf; // get the actual code (SSSS)
+ if (ucHuff) // if there is a change to the DC value
+ { // get the 'extra' bits
+ if (cCoeff)
+ {
+ (*iDCPredictor) += cCoeff;
+ }
+ else
+ {
+ if (ulBitOff > (REGISTER_WIDTH - 17)) // need to get more data
+ {
+ pBuf += (ulBitOff >> 3);
+ ulBitOff &= 7;
+ ulBits = MOTOLONG(pBuf);
+ }
+ ulCode = ulBits << ulBitOff;
+ ulTemp = ~(my_ulong)(((my_long)ulCode)>>(REGISTER_WIDTH-1)); // slide sign bit across other 63/31 bits
+ ulCode >>= (REGISTER_WIDTH - ucHuff);
+ ulCode -= ulTemp>>(REGISTER_WIDTH-ucHuff);
+ ulBitOff += ucHuff; // add bit length
+ (*iDCPredictor) += (int)ulCode;
+ }
+ }
+ if (iMCU >= 0) { // non-skipped block
+ pMCU[0] = (short)*iDCPredictor; // store in MCU[0]
+ }
+ if (pJPEG->ucACTable > 1) // unsupported
+ return -1;
+ // Now get the other 63 AC coefficients
+ pFast = &pJPEG->usHuffAC[pJPEG->ucACTable * HUFF11SIZE];
+ if (pJPEG->b11Bit) // 11-bit "slow" tables used
+ {
+// if (pJPEG->pHuffACFast == pJPEG->huffacFast[1]) // second table
+// pFast = &pJPEG->ucAltHuff[0];
+ while (pZig < pEnd)
+ {
+ if (ulBitOff >(REGISTER_WIDTH - 17)) // need to get more data
+ {
+ pBuf += (ulBitOff >> 3);
+ ulBitOff &= 7;
+ ulBits = MOTOLONG(pBuf);
+ }
+ ulCode = (ulBits >> (REGISTER_WIDTH - 16 - ulBitOff)) & 0xffff; // get as lower 16 bits
+ if (ulCode >= 0xf000) // first 4 bits = 1, use long table
+ ulCode = (ulCode & 0x1fff);
+ else
+ ulCode >>= 4; // use lower 12 bits (short table)
+ usHuff = pFast[ulCode];
+ if (usHuff == 0) // invalid code
+ return -1;
+ ulBitOff += (usHuff >> 8); // add length
+ usHuff &= 0xff; // get code (RRRR/SSSS)
+ if (usHuff == 0) // no more AC components
+ {
+ goto mcu_done;
+ }
+ pZig += (usHuff >> 4); // get the skip amount (RRRR)
+ usHuff &= 0xf; // get (SSSS) - extra length
+ if (pZig < pEnd2 && usHuff)
+ {
+ ulCode = ulBits << ulBitOff;
+ ulTemp = ~(my_ulong) (((my_long) ulCode) >> (REGISTER_WIDTH-1)); // slide sign bit across other 63 bits
+ ulCode >>= (REGISTER_WIDTH - usHuff);
+ ulCode -= ulTemp >> (REGISTER_WIDTH - usHuff);
+ u16MCUFlags |= 1<<(*pZig & 7); // keep track of occupied columns
+ u16MCUFlags |= *pZig << 8; // for testing occupied rows
+ pMCU[*pZig] = (signed short)ulCode; // store AC coefficient (already reordered)
+ }
+ ulBitOff += usHuff; // add (SSSS) extra length
+ pZig++;
+ if (ulBitOff > (REGISTER_WIDTH - 17)) // need to get more data
+ {
+ pBuf += (ulBitOff >> 3);
+ ulBitOff &= 7;
+ ulBits = MOTOLONG(pBuf);
+ }
+ } // while
+ }
+ else // 10-bit "fast" tables used
+ {
+ while (pZig < pEnd)
+ {
+ if (ulBitOff >(REGISTER_WIDTH - 17)) // need to get more data
+ {
+ pBuf += (ulBitOff >> 3);
+ ulBitOff &= 7;
+ ulBits = MOTOLONG(pBuf);
+ }
+ ulCode = (ulBits >> (REGISTER_WIDTH - 16 - ulBitOff)) & 0xffff; // get as lower 16 bits
+ if (ulCode >= 0xfc00) // first 6 bits = 1, use long table
+ ulCode = (ulCode & 0x7ff); // (ulCode & 0x3ff) + 0x400;
+ else
+ ulCode >>= 6; // use lower 10 bits (short table)
+ usHuff = pFast[ulCode];
+ if (usHuff == 0) // invalid code
+ return -1;
+ ulBitOff += (usHuff >> 8); // add length
+ usHuff &= 0xff; // get code (RRRR/SSSS)
+ if (usHuff == 0) // no more AC components
+ {
+ goto mcu_done;
+ }
+ pZig += (usHuff >> 4); // get the skip amount (RRRR)
+ usHuff &= 0xf; // get (SSSS) - extra length
+ if (pZig < pEnd2 && usHuff)
+ {
+ ulCode = ulBits << ulBitOff;
+ ulTemp = ~(my_ulong) (((my_long) ulCode) >> (REGISTER_WIDTH-1)); // slide sign bit across other 63 bits
+ ulCode >>= (REGISTER_WIDTH - usHuff);
+ ulCode -= ulTemp >> (REGISTER_WIDTH - usHuff);
+ u16MCUFlags |= 1<<(*pZig & 7); // keep track of occupied columns
+ u16MCUFlags |= *pZig << 8; // for testing occupied rows
+ pMCU[*pZig] = (signed short)ulCode; // store AC coefficient (already reordered)
+ }
+ ulBitOff += usHuff; // add (SSSS) extra length
+ pZig++;
+ if (ulBitOff >(REGISTER_WIDTH - 17)) // need to get more data
+ {
+ pBuf += (ulBitOff >> 3);
+ ulBitOff &= 7;
+ ulBits = MOTOLONG(pBuf);
+ }
+ } // while
+ } // 10-bit tables
+mcu_done:
+ pJPEG->bb.pBuf = pBuf;
+ pJPEG->iVLCOff = (int)(pBuf - pJPEG->ucFileBuf);
+ pJPEG->bb.ulBitOff = ulBitOff;
+ pJPEG->bb.ulBits = ulBits;
+ pJPEG->u16MCUFlags = u16MCUFlags;
+ return 0;
+} /* JPEGDecodeMCU() */
+//
+// Inverse DCT
+//
+static void JPEGIDCT(JPEGIMAGE *pJPEG, int iMCUOffset, int iQuantTable)
+{
+ int iRow;
+ unsigned char ucColMask;
+ int iCol;
+ signed int tmp6,tmp7,tmp10,tmp11,tmp12,tmp13;
+ signed int z5,z10,z11,z12,z13;
+ signed int tmp0,tmp1,tmp2,tmp3,tmp4,tmp5;
+ signed short *pQuant;
+ unsigned char *pOutput;
+ uint16_t u16MCUFlags;
+ int16_t *pMCUSrc = &pJPEG->sMCUs[iMCUOffset];
+#ifdef HAS_SSE
+__m128i mmxRow0, mmxRow1, mmxRow2, mmxRow3, mmxRow4, mmxRow5, mmxRow6, mmxRow7;
+__m128i mmxTemp, mmxTemp0, mmxTemp1, mmxTemp2, mmxTemp3, mmxTemp4, mmxTemp5, mmxTemp6, mmxTemp7, mmxTemp10, mmxTemp11, mmxTemp12, mmxTemp13;
+__m128i mmxZ5, mmxZ10, mmxZ11, mmxZ12, mmxZ13;
+#endif // HAS_SSE
+#ifdef HAS_NEON
+int16x8_t mmxRow0, mmxRow1, mmxRow2, mmxRow3, mmxRow4, mmxRow5, mmxRow6, mmxRow7;
+int16x8_t mmxTemp, mmxTemp0, mmxTemp1, mmxTemp2, mmxTemp3, mmxTemp4, mmxTemp5, mmxTemp6, mmxTemp7, mmxTemp10, mmxTemp11, mmxTemp12, mmxTemp13;
+int16x8_t mmxZ5, mmxZ10, mmxZ11, mmxZ12, mmxZ13;
+#endif // HAS_NEON
+
+ u16MCUFlags = pJPEG->u16MCUFlags;
+
+ // my shortcut method appears to violate patent 20020080052
+ // but the patent is invalidated by prior art:
+ // http://netilium.org/~mad/dtj/DTJ/DTJK04/
+ pQuant = &pJPEG->sQuantTable[iQuantTable * DCTSIZE];
+ if (pJPEG->iOptions & JPEG_SCALE_QUARTER) // special case
+ {
+ /* Column 0 */
+ tmp4 = pMCUSrc[0] * pQuant[0];
+ tmp5 = pMCUSrc[8] * pQuant[8];
+ tmp0 = tmp4 + tmp5;
+ tmp2 = tmp4 - tmp5;
+ /* Column 1 */
+ tmp4 = pMCUSrc[1] * pQuant[1];
+ tmp5 = pMCUSrc[9] * pQuant[9];
+ tmp1 = tmp4 + tmp5;
+ tmp3 = tmp4 - tmp5;
+ /* Pass 2: process 2 rows, store into output array. */
+ /* Row 0 */
+ pOutput = (unsigned char *)pMCUSrc; // store output pixels back into MCU
+ pOutput[0] = ucRangeTable[(((tmp0 + tmp1)>>5) & 0x3ff)];
+ pOutput[1] = ucRangeTable[(((tmp0 - tmp1)>>5) & 0x3ff)];
+ /* Row 1 */
+ pOutput[2] = ucRangeTable[(((tmp2 + tmp3)>>5) & 0x3ff)];
+ pOutput[3] = ucRangeTable[(((tmp2 - tmp3)>>5) & 0x3ff)];
+ return;
+ }
+#ifdef HAS_SSE // SSE2 version
+ // Columns first
+ // even part
+ if ((u16MCUFlags & 0x2000) == 0) // rows 4-7 are not populated, simpler calculations
+ {
+ // even part
+ mmxTemp10 = _mm_loadu_si128((__m128i *)&pMCUSrc[0]); // row 0
+ mmxTemp1 = _mm_loadu_si128((__m128i *)&pMCUSrc[16]); // row 2
+ mmxTemp = _mm_loadu_si128((__m128i *)&pQuant[0]);
+ mmxTemp2 = _mm_loadu_si128((__m128i *)&pQuant[16]);
+ mmxTemp10 = _mm_mullo_epi16(mmxTemp10, mmxTemp); // dequant row 0
+ mmxTemp1 = _mm_mullo_epi16(mmxTemp1, mmxTemp2); // dequant row 2
+ mmxTemp = _mm_loadu_si128((__m128i *)&s0414[0]); // 0.414
+ mmxTemp12 = _mm_mulhi_epi16(_mm_slli_epi16(mmxTemp1, 2), mmxTemp); // tmp12 = ((tmp1*106)>>8)
+ mmxTemp0 = _mm_add_epi16(mmxTemp10, mmxTemp1); // 0+2
+ mmxTemp3 = _mm_sub_epi16(mmxTemp10, mmxTemp1); // 0-2
+ mmxTemp1 = _mm_add_epi16(mmxTemp10, mmxTemp12); // 10+12
+ mmxTemp2 = _mm_sub_epi16(mmxTemp10, mmxTemp12); // 10-12
+ // odd part
+ mmxTemp4 = _mm_loadu_si128((__m128i *)&pMCUSrc[8]); // row 1
+ mmxTemp5 = _mm_loadu_si128((__m128i *)&pMCUSrc[24]); // row 3
+ mmxTemp = _mm_loadu_si128((__m128i *)&pQuant[8]);
+ mmxTemp11 = _mm_loadu_si128((__m128i *)&pQuant[24]);
+ mmxTemp4 = _mm_mullo_epi16(mmxTemp4, mmxTemp); // dequant row 1
+ mmxTemp5 = _mm_mullo_epi16(mmxTemp5, mmxTemp11); // dequant row 3
+ mmxTemp7 = _mm_add_epi16(mmxTemp4, mmxTemp5); // tmp7 = tmp4 + tmp5
+ mmxTemp = _mm_loadu_si128((__m128i *)&s1414[0]); // load 1.414213562 constant
+ mmxTemp11 = _mm_mulhi_epi16(_mm_slli_epi16(_mm_sub_epi16(mmxTemp4, mmxTemp5), 2), mmxTemp); // tmp11 = (((tmp4-tmp5)*362)>>8)
+ mmxTemp = _mm_loadu_si128((__m128i *)&s1847[0]); // 1.8477
+ mmxZ5 = _mm_mulhi_epi16(_mm_slli_epi16(_mm_sub_epi16(mmxTemp4, mmxTemp5), 2), mmxTemp); // z5 = (((tmp4-tmp5)*473)>>8)
+ mmxTemp = _mm_loadu_si128((__m128i*)&sp2613[0]); // positive 2.6131259
+ mmxTemp12 = _mm_mulhi_epi16(_mm_slli_epi16(mmxTemp5, 2), mmxTemp); // tmp12 = ((-tmp5 * -669)>>8) + z5
+ // can't make that constant without overflowing, so double it after
+ mmxTemp12 = _mm_add_epi16(mmxTemp12, mmxTemp12);
+ mmxTemp12 = _mm_add_epi16(mmxTemp12, mmxZ5);
+ mmxTemp6 = _mm_sub_epi16(mmxTemp12, mmxTemp7); // tmp6 = tmp12 - tmp7
+ mmxTemp5 = _mm_sub_epi16(mmxTemp11, mmxTemp6); // tmp5 = tmp11 - tmp6
+ mmxTemp = _mm_loadu_si128((__m128i *)&s1082[0]); // 1.08239
+ mmxTemp10 = _mm_sub_epi16(_mm_mulhi_epi16(_mm_slli_epi16(mmxTemp4, 2), mmxTemp), mmxZ5); // tmp10 = ((tmp4 * 277)>>8) - z5
+ mmxTemp4 = _mm_add_epi16(mmxTemp10, mmxTemp5); // tmp4 = tmp10 + tmp5
+ }
+ else // need to do full calculation
+ {
+ // even part
+ mmxTemp0 = _mm_loadu_si128((__m128i *)&pMCUSrc[0]); // get row 0
+ mmxTemp2 = _mm_loadu_si128((__m128i *)&pMCUSrc[32]); // get row 4
+ mmxTemp10 = _mm_loadu_si128((__m128i *)&pQuant[0]);
+ mmxTemp11 = _mm_loadu_si128((__m128i *)&pQuant[32]);
+ mmxTemp0 = _mm_mullo_epi16(mmxTemp0, mmxTemp10); // dequant row 0
+ mmxTemp2 = _mm_mullo_epi16(mmxTemp2, mmxTemp11); // dequant row 4
+ mmxTemp10 = _mm_add_epi16(mmxTemp0, mmxTemp2); // 0+4
+ mmxTemp11 = _mm_sub_epi16(mmxTemp0, mmxTemp2); // 0-4
+ mmxTemp1 = _mm_loadu_si128((__m128i *)&pMCUSrc[16]); // get row 2
+ mmxTemp3 = _mm_loadu_si128((__m128i *)&pMCUSrc[48]); // get row 6
+ mmxTemp = _mm_loadu_si128((__m128i *)&pQuant[16]);
+ mmxTemp12 = _mm_loadu_si128((__m128i *)&pQuant[48]);
+ mmxTemp1 = _mm_mullo_epi16(mmxTemp1, mmxTemp); // dequant row 2
+ mmxTemp3 = _mm_mullo_epi16(mmxTemp3, mmxTemp12); // dequant row 6
+ mmxTemp13 = _mm_add_epi16(mmxTemp1, mmxTemp3); // 1+3
+ mmxTemp = _mm_loadu_si128((__m128i *)&s1414[0]); // load 1.414213562 constant
+ mmxTemp12 = _mm_sub_epi16(_mm_mulhi_epi16(_mm_slli_epi16(_mm_sub_epi16(mmxTemp1,mmxTemp3),2), mmxTemp), mmxTemp13); // tmp12 = (((tmp1 - tmp3) * 1.414) - tmp13;
+ mmxTemp0 = _mm_add_epi16(mmxTemp10, mmxTemp13); // tmp0 = tmp10 + tmp13
+ mmxTemp3 = _mm_sub_epi16(mmxTemp10, mmxTemp13); // tmp3 = tmp10 - tmp13
+ mmxTemp1 = _mm_add_epi16(mmxTemp11, mmxTemp12); // tmp1 = tmp11 + tmp12
+ mmxTemp2 = _mm_sub_epi16(mmxTemp11, mmxTemp12); // tmp2 = tmp11 - tmp12
+ // odd part
+ mmxTemp5 = _mm_loadu_si128((__m128i *)&pMCUSrc[24]); // get row 3
+ mmxTemp6 = _mm_loadu_si128((__m128i *)&pMCUSrc[40]); // get row 5
+ mmxTemp10 = _mm_loadu_si128((__m128i *)&pQuant[24]);
+ mmxTemp11 = _mm_loadu_si128((__m128i *)&pQuant[40]);
+ mmxTemp5 = _mm_mullo_epi16(mmxTemp5, mmxTemp10); // dequant row 3
+ mmxTemp6 = _mm_mullo_epi16(mmxTemp6, mmxTemp11); // dequant row 5
+ mmxZ13 = _mm_add_epi16(mmxTemp6, mmxTemp5); // z13 = tmp6 + tmp5;
+ mmxZ10 = _mm_sub_epi16(mmxTemp6, mmxTemp5); // z10 = tmp6 - tmp5;
+ mmxTemp4 = _mm_loadu_si128((__m128i *)&pMCUSrc[8]); // get row 1
+ mmxTemp7 = _mm_loadu_si128((__m128i *)&pMCUSrc[56]); // get row 7
+ mmxTemp10 = _mm_loadu_si128((__m128i *)&pQuant[8]);
+ mmxTemp11 = _mm_loadu_si128((__m128i *)&pQuant[56]);
+ mmxTemp4 = _mm_mullo_epi16(mmxTemp4, mmxTemp10); // dequant row 1
+ mmxTemp7 = _mm_mullo_epi16(mmxTemp7, mmxTemp11); // dequant row 7
+ mmxZ11 = _mm_add_epi16(mmxTemp4, mmxTemp7); // z11 = tmp4 + tmp7;
+ mmxZ12 = _mm_sub_epi16(mmxTemp4, mmxTemp7); // z12 = tmp4 - tmp7;
+ mmxTemp7 = _mm_add_epi16(mmxZ11, mmxZ13); // tmp7 = z11 + z13;
+ mmxTemp11 = _mm_mulhi_epi16(_mm_slli_epi16(_mm_sub_epi16(mmxZ11, mmxZ13),2), mmxTemp); // tmp11 = ((z11 - z13) * 1.1414);
+ mmxTemp = _mm_loadu_si128((__m128i *)&s1847[0]); // 1.8477
+ mmxZ5 = _mm_mulhi_epi16(_mm_slli_epi16(_mm_add_epi16(mmxZ10, mmxZ12),2), mmxTemp); // z5 = ((z10+z12)*1.8477);
+ mmxTemp = _mm_loadu_si128((__m128i *)&s2613[0]); // -2.6131259
+ mmxTemp12 = _mm_mulhi_epi16(_mm_slli_epi16(mmxZ10,2), mmxTemp); // tmp12 = (z10 * -2.6131259) + z5;
+ // can't make that constant without overflowing, so double it after
+ mmxTemp12 = _mm_add_epi16(mmxTemp12, mmxTemp12);
+ mmxTemp12 = _mm_add_epi16(mmxTemp12, mmxZ5);
+ mmxTemp = _mm_loadu_si128((__m128i *)&s1082[0]); // 1.08239
+ mmxTemp6 = _mm_sub_epi16(mmxTemp12, mmxTemp7); // tmp6 = tmp12 - tmp7
+ mmxTemp5 = _mm_sub_epi16(mmxTemp11, mmxTemp6); // tmp5 = tmp11 - tmp6
+ mmxTemp10 = _mm_sub_epi16(_mm_mulhi_epi16(_mm_slli_epi16(mmxZ12,2), mmxTemp), mmxZ5); // tmp10 = (z12 * 1.08239) - z5;
+ mmxTemp4 = _mm_add_epi16(mmxTemp10, mmxTemp5); // tmp4 = tmp10 + tmp5;
+ }
+ mmxRow0 = _mm_add_epi16(mmxTemp0, mmxTemp7); // row 0
+ _mm_storeu_si128((__m128i *)&pMCUSrc[0], mmxRow0);
+ mmxRow1 = _mm_add_epi16(mmxTemp1, mmxTemp6); // row 1
+ _mm_storeu_si128((__m128i *)&pMCUSrc[8], mmxRow1);
+ mmxRow2 = _mm_add_epi16(mmxTemp2, mmxTemp5); // row 2
+ _mm_storeu_si128((__m128i *)&pMCUSrc[16], mmxRow2);
+ mmxRow3 = _mm_sub_epi16(mmxTemp3, mmxTemp4); // row 3
+ _mm_storeu_si128((__m128i *)&pMCUSrc[24], mmxRow3);
+ mmxRow4 = _mm_add_epi16(mmxTemp3, mmxTemp4); // row 4
+ _mm_storeu_si128((__m128i *)&pMCUSrc[32], mmxRow4);
+ mmxRow5 = _mm_sub_epi16(mmxTemp2, mmxTemp5); // row 5
+ _mm_storeu_si128((__m128i *)&pMCUSrc[40], mmxRow5);
+ mmxRow6 = _mm_sub_epi16(mmxTemp1, mmxTemp6); // row 6
+ _mm_storeu_si128((__m128i *)&pMCUSrc[48], mmxRow6);
+ mmxRow7 = _mm_sub_epi16(mmxTemp0, mmxTemp7); // row 7
+ _mm_storeu_si128((__m128i *)&pMCUSrc[56], mmxRow7);
+#endif // HAS_SSE
+#ifdef HAS_NEON
+ if ((u16MCUFlags & 0x2000) == 0) // rows 4-7 are not populated, simpler calculations
+ {
+ // even part
+ mmxTemp10 = vld1q_s16(&pMCUSrc[0]); // row 0
+ mmxTemp1 = vld1q_s16(&pMCUSrc[16]); // row 2
+ mmxTemp = vld1q_s16(&pQuant[0]);
+ mmxTemp2 = vld1q_s16(&pQuant[16]);
+ mmxTemp10 = vmulq_s16(mmxTemp10, mmxTemp); // dequant row 0
+ mmxTemp1 = vmulq_s16(mmxTemp1, mmxTemp2); // dequant row 2
+ mmxTemp = vld1q_s16(&s0414[0]); // 0.414
+ mmxTemp12 = vqdmulhq_s16(vshlq_n_s16(mmxTemp1, 2), mmxTemp); // tmp12 = ((tmp1*106)>>8)
+ mmxTemp0 = vaddq_s16(mmxTemp10, mmxTemp1); // 0+2
+ mmxTemp3 = vsubq_s16(mmxTemp10, mmxTemp1); // 0-2
+ mmxTemp1 = vaddq_s16(mmxTemp10, mmxTemp12); // 10+12
+ mmxTemp2 = vsubq_s16(mmxTemp10, mmxTemp12); // 10-12
+ // odd part
+ mmxTemp4 = vld1q_s16(&pMCUSrc[8]); // row 1
+ mmxTemp5 = vld1q_s16(&pMCUSrc[24]); // row 3
+ mmxTemp = vld1q_s16(&pQuant[8]);
+ mmxTemp11 = vld1q_s16(&pQuant[24]);
+ mmxTemp4 = vmulq_s16(mmxTemp4, mmxTemp); // dequant row 1
+ mmxTemp5 = vmulq_s16(mmxTemp5, mmxTemp11); // dequant row 3
+ mmxTemp7 = vaddq_s16(mmxTemp4, mmxTemp5); // tmp7 = tmp4 + tmp5
+ mmxTemp = vld1q_s16(&s1414[0]); // load 1.414213562 constant
+ mmxTemp11 = vqdmulhq_s16(vshlq_n_s16(vsubq_s16(mmxTemp4, mmxTemp5), 2), mmxTemp); // tmp11 = (((tmp4-tmp5)*362)>>8)
+ mmxTemp = vld1q_s16(&s1847[0]); // 1.8477
+ mmxZ5 = vqdmulhq_s16(vshlq_n_s16(vsubq_s16(mmxTemp4, mmxTemp5), 2), mmxTemp); // z5 = (((tmp4-tmp5)*473)>>8)
+ mmxTemp = vld1q_s16(&sp2613[0]); // positive 2.6131259
+ mmxTemp12 = vqdmulhq_s16(vshlq_n_s16(mmxTemp5, 2), mmxTemp); // tmp12 = ((-tmp5 * -669)>>8) + z5
+ // can't make that constant without overflowing, so double it after
+ mmxTemp12 = vaddq_s16(mmxTemp12, mmxTemp12);
+ mmxTemp12 = vaddq_s16(mmxTemp12, mmxZ5);
+ mmxTemp6 = vsubq_s16(mmxTemp12, mmxTemp7); // tmp6 = tmp12 - tmp7
+ mmxTemp5 = vsubq_s16(mmxTemp11, mmxTemp6); // tmp5 = tmp11 - tmp6
+ mmxTemp = vld1q_s16(&s1082[0]); // 1.08239
+ mmxTemp10 = vsubq_s16(vqdmulhq_s16(vshlq_n_s16(mmxTemp4, 2), mmxTemp), mmxZ5); // tmp10 = ((tmp4 * 277)>>8) - z5
+ mmxTemp4 = vaddq_s16(mmxTemp10, mmxTemp5); // tmp4 = tmp10 + tmp5
+ }
+ else // need to do full calculation
+ {
+ // even part
+ mmxTemp0 = vld1q_s16(&pMCUSrc[0]); // get row 0
+ mmxTemp2 = vld1q_s16(&pMCUSrc[32]); // get row 4
+ mmxTemp10 = vld1q_s16(&pQuant[0]);
+ mmxTemp11 = vld1q_s16(&pQuant[32]);
+ mmxTemp0 = vmulq_s16(mmxTemp0, mmxTemp10); // dequant row 0
+ mmxTemp2 = vmulq_s16(mmxTemp2, mmxTemp11); // dequant row 4
+ mmxTemp10 = vaddq_s16(mmxTemp0, mmxTemp2); // 0+4
+ mmxTemp11 = vsubq_s16(mmxTemp0, mmxTemp2); // 0-4
+ mmxTemp1 = vld1q_s16(&pMCUSrc[16]); // get row 2
+ mmxTemp3 = vld1q_s16(&pMCUSrc[48]); // get row 6
+ mmxTemp = vld1q_s16(&pQuant[16]);
+ mmxTemp12 = vld1q_s16(&pQuant[48]);
+ mmxTemp1 = vmulq_s16(mmxTemp1, mmxTemp); // dequant row 2
+ mmxTemp3 = vmulq_s16(mmxTemp3, mmxTemp12); // dequant row 6
+ mmxTemp13 = vaddq_s16(mmxTemp1, mmxTemp3); // 1+3
+ mmxTemp = vld1q_s16(&s1414[0]); // load 1.414213562 constant
+ mmxTemp12 = vsubq_s16(vqdmulhq_s16(vshlq_n_s16(vsubq_s16(mmxTemp1,mmxTemp3),2), mmxTemp), mmxTemp13); // tmp12 = (((tmp1 - tmp3) * 1.414) - tmp13;
+ mmxTemp0 = vaddq_s16(mmxTemp10, mmxTemp13); // tmp0 = tmp10 + tmp13
+ mmxTemp3 = vsubq_s16(mmxTemp10, mmxTemp13); // tmp3 = tmp10 - tmp13
+ mmxTemp1 = vaddq_s16(mmxTemp11, mmxTemp12); // tmp1 = tmp11 + tmp12
+ mmxTemp2 = vsubq_s16(mmxTemp11, mmxTemp12); // tmp2 = tmp11 - tmp12
+ // odd part
+ mmxTemp5 = vld1q_s16(&pMCUSrc[24]); // get row 3
+ mmxTemp6 = vld1q_s16(&pMCUSrc[40]); // get row 5
+ mmxTemp10 = vld1q_s16(&pQuant[24]);
+ mmxTemp11 = vld1q_s16(&pQuant[40]);
+ mmxTemp5 = vmulq_s16(mmxTemp5, mmxTemp10); // dequant row 3
+ mmxTemp6 = vmulq_s16(mmxTemp6, mmxTemp11); // dequant row 5
+ mmxZ13 = vaddq_s16(mmxTemp6, mmxTemp5); // z13 = tmp6 + tmp5;
+ mmxZ10 = vsubq_s16(mmxTemp6, mmxTemp5); // z10 = tmp6 - tmp5;
+ mmxTemp4 = vld1q_s16(&pMCUSrc[8]); // get row 1
+ mmxTemp7 = vld1q_s16(&pMCUSrc[56]); // get row 7
+ mmxTemp10 = vld1q_s16(&pQuant[8]);
+ mmxTemp11 = vld1q_s16(&pQuant[56]);
+ mmxTemp4 = vmulq_s16(mmxTemp4, mmxTemp10); // dequant row 1
+ mmxTemp7 = vmulq_s16(mmxTemp7, mmxTemp11); // dequant row 7
+ mmxZ11 = vaddq_s16(mmxTemp4, mmxTemp7); // z11 = tmp4 + tmp7;
+ mmxZ12 = vsubq_s16(mmxTemp4, mmxTemp7); // z12 = tmp4 - tmp7;
+ mmxTemp7 = vaddq_s16(mmxZ11, mmxZ13); // tmp7 = z11 + z13;
+ mmxTemp11 = vqdmulhq_s16(vshlq_n_s16(vsubq_s16(mmxZ11, mmxZ13),2), mmxTemp); // tmp11 = ((z11 - z13) * 1.1414);
+ mmxTemp = vld1q_s16(&s1847[0]); // 1.8477
+ mmxZ5 = vqdmulhq_s16(vshlq_n_s16(vaddq_s16(mmxZ10, mmxZ12),2), mmxTemp); // z5 = ((z10+z12)*1.8477);
+ mmxTemp = vld1q_s16(&s2613[0]); // -2.6131259
+ mmxTemp12 = vqdmulhq_s16(vshlq_n_s16(mmxZ10,2), mmxTemp); // tmp12 = (z10 * -2.6131259) + z5;
+ // can't make that constant without overflowing, so double it after
+ mmxTemp12 = vaddq_s16(mmxTemp12, mmxTemp12);
+ mmxTemp12 = vaddq_s16(mmxTemp12, mmxZ5);
+ mmxTemp = vld1q_s16(&s1082[0]); // 1.08239
+ mmxTemp6 = vsubq_s16(mmxTemp12, mmxTemp7); // tmp6 = tmp12 - tmp7
+ mmxTemp5 = vsubq_s16(mmxTemp11, mmxTemp6); // tmp5 = tmp11 - tmp6
+ mmxTemp10 = vsubq_s16(vqdmulhq_s16(vshlq_n_s16(mmxZ12,2), mmxTemp), mmxZ5); // tmp10 = (z12 * 1.08239) - z5;
+ mmxTemp4 = vaddq_s16(mmxTemp10, mmxTemp5); // tmp4 = tmp10 + tmp5;
+ }
+ mmxRow0 = vaddq_s16(mmxTemp0, mmxTemp7); // row 0
+ vst1q_s16(&pMCUSrc[0], mmxRow0);
+ mmxRow1 = vaddq_s16(mmxTemp1, mmxTemp6); // row 1
+ vst1q_s16(&pMCUSrc[8], mmxRow1);
+ mmxRow2 = vaddq_s16(mmxTemp2, mmxTemp5); // row 2
+ vst1q_s16(&pMCUSrc[16], mmxRow2);
+ mmxRow3 = vsubq_s16(mmxTemp3, mmxTemp4); // row 3
+ vst1q_s16(&pMCUSrc[24], mmxRow3);
+ mmxRow4 = vaddq_s16(mmxTemp3, mmxTemp4); // row 4
+ vst1q_s16(&pMCUSrc[32], mmxRow4);
+ mmxRow5 = vsubq_s16(mmxTemp2, mmxTemp5); // row 5
+ vst1q_s16(&pMCUSrc[40], mmxRow5);
+ mmxRow6 = vsubq_s16(mmxTemp1, mmxTemp6); // row 6
+ vst1q_s16(&pMCUSrc[48], mmxRow6);
+ mmxRow7 = vsubq_s16(mmxTemp0, mmxTemp7); // row 7
+ vst1q_s16(&pMCUSrc[56], mmxRow7);
+#endif // HAS_NEON
+#if !defined (HAS_SSE) && !defined(HAS_NEON)
+ // do columns first
+ u16MCUFlags |= 1; // column 0 must always be calculated
+ for (iCol = 0; iCol < 8 && u16MCUFlags; iCol++)
+ {
+ if (u16MCUFlags & (1<>8); // used to be 362 - 1 (256)
+ tmp0 = tmp10 + tmp1;
+ tmp3 = tmp10 - tmp1;
+ tmp1 = tmp10 + tmp12;
+ tmp2 = tmp10 - tmp12;
+ // odd part
+ tmp4 = pMCUSrc[iCol+8] * pQuant[iCol+8]; // get 1st row
+ tmp5 = pMCUSrc[iCol+24];
+ if (tmp5) // this value is usually 0
+ {
+ tmp5 *= pQuant[iCol+24]; // get 3rd row
+ tmp7 = tmp4 + tmp5;
+ tmp11 = (((tmp4 - tmp5) * 362) >> 8); // 362>>8 = 1.414213562
+ z5 = (((tmp4-tmp5) * 473) >> 8); // 473>>8 = 1.8477
+ tmp12 = ((-tmp5 * -669)>>8) + z5; // -669>>8 = -2.6131259
+ tmp6 = tmp12 - tmp7;
+ tmp5 = tmp11 - tmp6;
+ tmp10 = ((tmp4 * 277)>>8) - z5; // 277>>8 = 1.08239
+ tmp4 = tmp10 + tmp5;
+ }
+ else // simpler case when we only have 1 odd row to calculate
+ {
+ tmp7 = tmp4;
+ tmp5 = (145*tmp4) >> 8;
+ tmp6 = (217*tmp4) >> 8;
+ tmp4 = (-51*tmp4) >> 8;
+ }
+ pMCUSrc[iCol] = (short)(tmp0 + tmp7); // row0
+ pMCUSrc[iCol+8] = (short)(tmp1 + tmp6); // row 1
+ pMCUSrc[iCol+16] = (short)(tmp2 + tmp5); // row 2
+ pMCUSrc[iCol+24] = (short)(tmp3 - tmp4); // row 3
+ pMCUSrc[iCol+32] = (short)(tmp3 + tmp4); // row 4
+ pMCUSrc[iCol+40] = (short)(tmp2 - tmp5); // row 5
+ pMCUSrc[iCol+48] = (short)(tmp1 - tmp6); // row 6
+ pMCUSrc[iCol+56] = (short)(tmp0 - tmp7); // row 7
+ }
+ else // need to do full column calculation
+ {
+ // even part
+ tmp0 = pMCUSrc[iCol] * pQuant[iCol];
+ tmp2 = pMCUSrc[iCol+32]; // get 4th row
+ if (tmp2) // 4th row is most likely 0
+ {
+ tmp2 = tmp2 * pQuant[iCol+32];
+ tmp10 = tmp0 + tmp2;
+ tmp11 = tmp0 - tmp2;
+ }
+ else
+ {
+ tmp10 = tmp11 = tmp0;
+ }
+ tmp1 = pMCUSrc[iCol+16] * pQuant[iCol+16]; // get 2nd row
+ tmp3 = pMCUSrc[iCol+48]; // get 6th row
+ if (tmp3) // 6th row is most likely 0
+ {
+ tmp3 = tmp3 * pQuant[iCol+48];
+ tmp13 = tmp1 + tmp3;
+ tmp12 = (((tmp1 - tmp3) * 362) >> 8) - tmp13; // 362>>8 = 1.414213562
+ }
+ else
+ {
+ tmp13 = tmp1;
+ tmp12 = ((tmp1*362)>>8) - tmp1;
+ }
+ tmp0 = tmp10 + tmp13;
+ tmp3 = tmp10 - tmp13;
+ tmp1 = tmp11 + tmp12;
+ tmp2 = tmp11 - tmp12;
+ // odd part
+ tmp5 = pMCUSrc[iCol+24] * pQuant[iCol+24]; // get 3rd row
+ tmp6 = pMCUSrc[iCol+40]; // get 5th row
+ if (tmp6) // very likely that row 5 = 0
+ {
+ tmp6 = tmp6 * pQuant[iCol+40];
+ z13 = tmp6 + tmp5;
+ z10 = tmp6 - tmp5;
+ }
+ else
+ {
+ z13 = tmp5;
+ z10 = -tmp5;
+ }
+ tmp4 = pMCUSrc[iCol+8] * pQuant[iCol+8]; // get 1st row
+ tmp7 = pMCUSrc[iCol+56]; // get 7th row
+ if (tmp7) // very likely that row 7 = 0
+ {
+ tmp7 = tmp7 * pQuant[iCol+56];
+ z11 = tmp4 + tmp7;
+ z12 = tmp4 - tmp7;
+ }
+ else
+ {
+ z11 = z12 = tmp4;
+ }
+ tmp7 = z11 + z13;
+ tmp11 = (((z11 - z13) * 362) >> 8); // 362>>8 = 1.414213562
+ z5 = (((z10 + z12) * 473) >> 8); // 473>>8 = 1.8477
+ tmp12 = ((z10 * -669)>>8) + z5; // -669>>8 = -2.6131259
+ tmp6 = tmp12 - tmp7;
+ tmp5 = tmp11 - tmp6;
+ tmp10 = ((z12 * 277)>>8) - z5; // 277>>8 = 1.08239
+ tmp4 = tmp10 + tmp5;
+ pMCUSrc[iCol] = (short)(tmp0 + tmp7); // row0
+ pMCUSrc[iCol+8] = (short)(tmp1 + tmp6); // row 1
+ pMCUSrc[iCol+16] = (short)(tmp2 + tmp5); // row 2
+ pMCUSrc[iCol+24] = (short)(tmp3 - tmp4); // row 3
+ pMCUSrc[iCol+32] = (short)(tmp3 + tmp4); // row 4
+ pMCUSrc[iCol+40] = (short)(tmp2 - tmp5); // row 5
+ pMCUSrc[iCol+48] = (short)(tmp1 - tmp6); // row 6
+ pMCUSrc[iCol+56] = (short)(tmp0 - tmp7); // row 7
+ } // full calculation needed
+ } // if column has data in it
+ } // for each column
+#endif // NO SIMD
+ // now do rows
+ u16MCUFlags = pJPEG->u16MCUFlags;
+ pOutput = (unsigned char *)pMCUSrc; // store output pixels back into MCU
+ for (iRow=0; iRow<64; iRow+=8) // all rows must be calculated
+ {
+ // even part
+ if ((u16MCUFlags & 0xf0) == 0) // quick and dirty calculation (right 4 columns are all 0's)
+ {
+ if ((u16MCUFlags & 0xfc) == 0) // very likely case (1 or 2 columns occupied)
+ {
+ // even part
+ tmp0 = tmp1 = tmp2 = tmp3 = pMCUSrc[iRow+0];
+ // odd part
+ tmp7 = pMCUSrc[iRow+1];
+ tmp6 = (tmp7 * 217)>>8; // * 0.8477
+ tmp5 = (tmp7 * 145)>>8; // * 0.5663
+ tmp4 = -((tmp7 * 51)>>8); // * -0.199
+ }
+ else
+ {
+ tmp10 = pMCUSrc[iRow+0];
+ tmp13 = pMCUSrc[iRow+2];
+ tmp12 = ((tmp13 * 106)>>8); // 2-6 * 1.414
+ tmp0 = tmp10 + tmp13;
+ tmp3 = tmp10 - tmp13;
+ tmp1 = tmp10 + tmp12;
+ tmp2 = tmp10 - tmp12;
+ // odd part
+ z13 = pMCUSrc[iRow+3];
+ z11 = pMCUSrc[iRow+1];
+ tmp7 = z11 + z13;
+ tmp11 = ((z11 - z13)*362)>>8; // * 1.414
+ z5 = ((z11 - z13)*473)>>8; // * 1.8477
+ tmp10 = ((z11*277)>>8) - z5; // * 1.08239
+ tmp12 = ((z13*669)>>8) + z5; // * 2.61312
+ tmp6 = tmp12 - tmp7;
+ tmp5 = tmp11 - tmp6;
+ tmp4 = tmp10 + tmp5;
+ }
+ }
+ else // need to do the full calculation
+ {
+ tmp10 = pMCUSrc[iRow+0] + pMCUSrc[iRow+4];
+ tmp11 = pMCUSrc[iRow+0] - pMCUSrc[iRow+4];
+ tmp13 = pMCUSrc[iRow+2] + pMCUSrc[iRow+6];
+ tmp12 = (((pMCUSrc[iRow+2] - pMCUSrc[iRow+6]) * 362)>>8) - tmp13; // 2-6 * 1.414
+ tmp0 = tmp10 + tmp13;
+ tmp3 = tmp10 - tmp13;
+ tmp1 = tmp11 + tmp12;
+ tmp2 = tmp11 - tmp12;
+ // odd part
+ z13 = pMCUSrc[iRow+5] + pMCUSrc[iRow+3];
+ z10 = pMCUSrc[iRow+5] - pMCUSrc[iRow+3];
+ z11 = pMCUSrc[iRow+1] + pMCUSrc[iRow+7];
+ z12 = pMCUSrc[iRow+1] - pMCUSrc[iRow+7];
+ tmp7 = z11 + z13;
+ tmp11 = ((z11 - z13)*362)>>8; // * 1.414
+ z5 = ((z10 + z12)*473)>>8; // * 1.8477
+ tmp10 = ((z12*277)>>8) - z5; // * 1.08239
+ tmp12 = ((z10*-669)>>8) + z5; // * 2.61312
+ tmp6 = tmp12 - tmp7;
+ tmp5 = tmp11 - tmp6;
+ tmp4 = tmp10 + tmp5;
+ }
+ // final output stage - scale down and range limit
+#ifdef HAS_SIMD
+ {
+ uint32_t ul, ulOut;
+ const uint32_t ulAdj = 0x800080;
+ ulOut = __SSAT16((((tmp0+tmp7)>>5) & 0xffff) | (((tmp2+tmp5)>>5)<<16), 8);
+ ulOut = __SADD16(ulOut, ulAdj); // adjust
+ ul = __SSAT16((((tmp1+tmp6)>>5) & 0xffff) | (((tmp3-tmp4)>>5)<<16), 8);
+ ul = __SADD16(ul, ulAdj); // adjust
+ ulOut |= (ul << 8); // combine 4 outputs
+ *(uint32_t *)pOutput = ulOut; // store first 4
+ ulOut = __SSAT16((((tmp3+tmp4)>>5) & 0xffff) | (((tmp1-tmp6)>>5)<<16), 8);
+ ulOut = __SADD16(ulOut, ulAdj); // adjust
+ ul = __SSAT16((((tmp2-tmp5)>>5) & 0xffff) | (((tmp0-tmp7)>>5)<<16), 8);
+ ul = __SADD16(ul, ulAdj); // adjust
+ ulOut |= (ul << 8); // combine 4 outputs
+ *(uint32_t *)&pOutput[4] = ulOut; // store second 4
+ }
+#else
+ // I've tried various things to speed this up, but it always seems to take the same amount of time
+#ifdef HAS_NEON
+ {
+ int16x4_t L_in_16x4, R_in_16x4, L_out, R_out;
+ int8x8_t LR_out_8x8;
+ int16x8_t LR_out;
+ L_in_16x4 = vdup_n_s16(tmp0); // suppresses warning of setting lane 0 of uninitialized var
+ L_in_16x4 = vset_lane_s16(tmp1, L_in_16x4, 1);
+ L_in_16x4 = vset_lane_s16(tmp2, L_in_16x4, 2);
+ L_in_16x4 = vset_lane_s16(tmp3, L_in_16x4, 3);
+ R_in_16x4 = vdup_n_s16(tmp7);
+ R_in_16x4 = vset_lane_s16(tmp6, R_in_16x4, 1);
+ R_in_16x4 = vset_lane_s16(tmp5, R_in_16x4, 2);
+ R_in_16x4 = vset_lane_s16(-tmp4, R_in_16x4, 3);
+ L_out = vadd_s16(L_in_16x4, R_in_16x4); // tmp0 + tmp7, tmp1 + tmp6, ...
+ R_out = vsub_s16(L_in_16x4, R_in_16x4); // tmp0 - tmp7, tmp1 - tmp6, ...
+ R_out = vrev64_s16(R_out); // flip order of 4-7
+ LR_out = vcombine_s16(L_out, R_out);
+ LR_out = vaddq_s16(LR_out, vdupq_n_s16(0x80 << 5)); // adjust output +0x80
+ LR_out_8x8 = vqshrun_n_s16(LR_out, 5); // shift, narrow and clip to 0-255
+ vst1_u8(pOutput, LR_out_8x8);
+ }
+#else
+ pOutput[0] = ucRangeTable[(((tmp0 + tmp7)>>5) & 0x3ff)];
+ pOutput[1] = ucRangeTable[(((tmp1 + tmp6)>>5) & 0x3ff)];
+ pOutput[2] = ucRangeTable[(((tmp2 + tmp5)>>5) & 0x3ff)];
+ pOutput[3] = ucRangeTable[(((tmp3 - tmp4)>>5) & 0x3ff)];
+ pOutput[4] = ucRangeTable[(((tmp3 + tmp4)>>5) & 0x3ff)];
+ pOutput[5] = ucRangeTable[(((tmp2 - tmp5)>>5) & 0x3ff)];
+ pOutput[6] = ucRangeTable[(((tmp1 - tmp6)>>5) & 0x3ff)];
+ pOutput[7] = ucRangeTable[(((tmp0 - tmp7)>>5) & 0x3ff)];
+#endif // !HAS_NEON
+#endif
+ pOutput += 8;
+ } // for each row
+} /* JPEGIDCT() */
+static void JPEGPutMCU8BitGray(JPEGIMAGE *pJPEG, int x, int iPitch)
+{
+ int i, j, xcount, ycount;
+ uint8_t *pDest, *pSrc = (uint8_t *)&pJPEG->sMCUs[0];
+
+ if (pJPEG->pDitherBuffer)
+ pDest = &pJPEG->pDitherBuffer[x];
+ else
+ pDest = (uint8_t *)&pJPEG->usPixels[x/2];
+
+ if (pJPEG->ucSubSample <= 0x11) // single Y
+ {
+ if (pJPEG->iOptions & JPEG_SCALE_HALF) // special handling of 1/2 size (pixel averaging)
+ {
+ int pix;
+ for (i=0; i<4; i++)
+ {
+ for (j=0; j<4; j++)
+ {
+ pix = (pSrc[0] + pSrc[1] + pSrc[8] + pSrc[9] + 2) >> 2; // average 2x2 block
+ pDest[j] = (uint8_t)pix;
+ pSrc += 2;
+ }
+ pSrc += 8; // skip extra line
+ pDest += iPitch;
+ }
+ return;
+ }
+ xcount = ycount = 8; // debug
+ if (pJPEG->iOptions & JPEG_SCALE_QUARTER)
+ xcount = ycount = 2;
+ else if (pJPEG->iOptions & JPEG_SCALE_EIGHTH)
+ xcount = ycount = 1;
+ for (i=0; iucSubSample == 0x21) // stacked horizontally
+ {
+ if (pJPEG->iOptions & JPEG_SCALE_EIGHTH)
+ {
+ // only 2 pixels emitted
+ pDest[0] = pSrc[0];
+ pDest[1] = pSrc[128];
+ return;
+ } /* 1/8 */
+ if (pJPEG->iOptions & JPEG_SCALE_HALF)
+ {
+ for (i=0; i<4; i++)
+ {
+ for (j=0; j<4; j++)
+ {
+ int pix;
+ pix = (pSrc[j*2] + pSrc[j*2+1] + pSrc[j*2 + 8] + pSrc[j*2 + 9] + 2) >> 2;
+ pDest[j] = (uint8_t)pix;
+ pix = (pSrc[j*2 + 128] + pSrc[j*2+129] + pSrc[j*2 + 136] + pSrc[j*2 + 137] + 2) >> 2;
+ pDest[j+4] = (uint8_t)pix;
+ }
+ pSrc += 16;
+ pDest += iPitch;
+ }
+ return;
+ }
+ if (pJPEG->iOptions & JPEG_SCALE_QUARTER)
+ {
+ // each MCU contributes a 2x2 block
+ pDest[0] = pSrc[0]; // Y0
+ pDest[1] = pSrc[1];
+ pDest[iPitch] = pSrc[2];
+ pDest[iPitch+1] = pSrc[3];
+
+ pDest[2] = pSrc[128]; // Y`
+ pDest[3] = pSrc[129];
+ pDest[iPitch+2] = pSrc[130];
+ pDest[iPitch+3] = pSrc[131];
+ return;
+ }
+ for (i=0; i<8; i++)
+ {
+ for (j=0; j<8; j++)
+ {
+ pDest[j] = pSrc[j];
+ pDest[j+8] = pSrc[128 + j];
+ }
+ pSrc += 8;
+ pDest += iPitch;
+ }
+ } // 0x21
+ if (pJPEG->ucSubSample == 0x12) // stacked vertically
+ {
+ if (pJPEG->iOptions & JPEG_SCALE_EIGHTH)
+ {
+ // only 2 pixels emitted
+ pDest[0] = pSrc[0];
+ pDest[iPitch] = pSrc[128];
+ return;
+ } /* 1/8 */
+ if (pJPEG->iOptions & JPEG_SCALE_HALF)
+ {
+ for (i=0; i<4; i++)
+ {
+ for (j=0; j<4; j++)
+ {
+ int pix;
+ pix = (pSrc[j*2] + pSrc[j*2+1] + pSrc[j*2 + 8] + pSrc[j*2 + 9] + 2) >> 2;
+ pDest[j] = (uint8_t)pix;
+ pix = (pSrc[j*2 + 128] + pSrc[j*2+129] + pSrc[j*2 + 136] + pSrc[j*2 + 137] + 2) >> 2;
+ pDest[4*iPitch+j] = (uint8_t)pix;
+ }
+ pSrc += 16;
+ pDest += iPitch;
+ }
+ return;
+ }
+ if (pJPEG->iOptions & JPEG_SCALE_QUARTER)
+ {
+ // each MCU contributes a 2x2 block
+ pDest[0] = pSrc[0]; // Y0
+ pDest[1] = pSrc[1];
+ pDest[iPitch] = pSrc[2];
+ pDest[iPitch+1] = pSrc[3];
+
+ pDest[iPitch*2] = pSrc[128]; // Y`
+ pDest[iPitch*2+1] = pSrc[129];
+ pDest[iPitch*3] = pSrc[130];
+ pDest[iPitch*3+1] = pSrc[131];
+ return;
+ }
+ for (i=0; i<8; i++)
+ {
+ for (j=0; j<8; j++)
+ {
+ pDest[j] = pSrc[j];
+ pDest[8*iPitch + j] = pSrc[128 + j];
+ }
+ pSrc += 8;
+ pDest += iPitch;
+ }
+ } // 0x12
+ if (pJPEG->ucSubSample == 0x22)
+ {
+ if (pJPEG->iOptions & JPEG_SCALE_EIGHTH)
+ {
+ // each MCU contributes 1 pixel
+ pDest[0] = pSrc[0]; // Y0
+ pDest[1] = pSrc[128]; // Y1
+ pDest[iPitch] = pSrc[256]; // Y2
+ pDest[iPitch + 1] = pSrc[384]; // Y3
+ return;
+ }
+ if (pJPEG->iOptions & JPEG_SCALE_QUARTER)
+ {
+ // each MCU contributes 2x2 pixels
+ pDest[0] = pSrc[0]; // Y0
+ pDest[1] = pSrc[1];
+ pDest[iPitch] = pSrc[2];
+ pDest[iPitch+1] = pSrc[3];
+
+ pDest[2] = pSrc[128]; // Y1
+ pDest[3] = pSrc[129];
+ pDest[iPitch+2] = pSrc[130];
+ pDest[iPitch+3] = pSrc[131];
+
+ pDest[iPitch*2] = pSrc[256]; // Y2
+ pDest[iPitch*2+1] = pSrc[257];
+ pDest[iPitch*3] = pSrc[258];
+ pDest[iPitch*3+1] = pSrc[259];
+
+ pDest[iPitch*2+2] = pSrc[384]; // Y3
+ pDest[iPitch*2+3] = pSrc[385];
+ pDest[iPitch*3+2] = pSrc[386];
+ pDest[iPitch*3+3] = pSrc[387];
+ return;
+ }
+ if (pJPEG->iOptions & JPEG_SCALE_HALF)
+ {
+ for (i=0; i<4; i++)
+ {
+ for (j=0; j<4; j++)
+ {
+ int pix;
+ pix = (pSrc[j*2] + pSrc[j*2+1] + pSrc[j*2 + 8] + pSrc[j*2 + 9] + 2) >> 2;
+ pDest[j] = (uint8_t)pix; // Y0
+ pix = (pSrc[j*2+128] + pSrc[j*2+129] + pSrc[j*2 + 136] + pSrc[j*2 + 137] + 2) >> 2;
+ pDest[j+4] = (uint8_t)pix; // Y1
+ pix = (pSrc[j*2+256] + pSrc[j*2+257] + pSrc[j*2 + 264] + pSrc[j*2 + 265] + 2) >> 2;
+ pDest[iPitch*4 + j] = (uint8_t)pix; // Y2
+ pix = (pSrc[j*2+384] + pSrc[j*2+385] + pSrc[j*2 + 392] + pSrc[j*2 + 393] + 2) >> 2;
+ pDest[iPitch*4 + j + 4] = (uint8_t)pix; // Y3
+ }
+ pSrc += 16;
+ pDest += iPitch;
+ }
+ return;
+ }
+#ifdef ALLOWS_UNALIGNED
+ for (i=0; i<8; i++)
+ {
+ *(uint32_t *)pDest = *(uint32_t *)pSrc; // Y0
+ *(uint32_t *)&pDest[4] = *(uint32_t *)&pSrc[4]; // Y0
+ *(uint32_t *)&pDest[8] = *(uint32_t *)&pSrc[128]; // Y1
+ *(uint32_t *)&pDest[12] = *(uint32_t *)&pSrc[132]; // Y1
+ *(uint32_t *)&pDest[iPitch*8] = *(uint32_t *)&pSrc[256]; // Y2
+ *(uint32_t *)&pDest[(iPitch*8)+4] = *(uint32_t *)&pSrc[260]; // Y2
+ *(uint32_t *)&pDest[(iPitch*8) + 8] = *(uint32_t *)&pSrc[384]; // Y3
+ *(uint32_t *)&pDest[(iPitch*8) + 12] = *(uint32_t *)&pSrc[388]; // Y3
+ pSrc += 8;
+ pDest += iPitch;
+ }
+#else
+ for (i=0; i<8; i++)
+ {
+ for (j=0; j<8; j++)
+ {
+ pDest[j] = pSrc[j]; // Y0
+ pDest[j+8] = pSrc[j+128]; // Y1
+ pDest[iPitch*8 + j] = pSrc[j+256]; // Y2
+ pDest[iPitch*8 + j + 8] = pSrc[j + 384]; // Y3
+ }
+ pSrc += 8;
+ pDest += iPitch;
+ }
+#endif
+ } // 0x22
+} /* JPEGMPutMCU8BitGray() */
+
+static void JPEGPutMCUGray(JPEGIMAGE *pJPEG, int x, int iPitch)
+{
+ uint16_t *usDest = (uint16_t *)&pJPEG->usPixels[x];
+ int i, j, xcount, ycount;
+ uint8_t *pSrc = (uint8_t *)&pJPEG->sMCUs[0];
+
+ if (pJPEG->iOptions & JPEG_SCALE_HALF) // special handling of 1/2 size (pixel averaging)
+ {
+ int pix;
+ for (i=0; i<4; i++)
+ {
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ {
+ for (j=0; j<4; j++)
+ {
+ pix = (pSrc[0] + pSrc[1] + pSrc[8] + pSrc[9] + 2) >> 2; // average 2x2 block
+ usDest[j] = usGrayTo565[pix];
+ pSrc += 2;
+ }
+ }
+ else
+ {
+ for (j=0; j<4; j++)
+ {
+ pix = (pSrc[0] + pSrc[1] + pSrc[8] + pSrc[9] + 2) >> 2; // average 2x2 block
+ usDest[j] = __builtin_bswap16(usGrayTo565[pix]);
+ pSrc += 2;
+ }
+ }
+ pSrc += 8; // skip extra line
+ usDest += iPitch;
+ }
+ return;
+ }
+ xcount = ycount = 8; // debug
+ if (pJPEG->iOptions & JPEG_SCALE_QUARTER)
+ xcount = ycount = 2;
+ else if (pJPEG->iOptions & JPEG_SCALE_EIGHTH)
+ xcount = ycount = 1;
+ for (i=0; iucPixelType == RGB565_LITTLE_ENDIAN)
+ {
+ for (j=0; j> 14; // G
+ ulPixel = __USAT16(ulPixel, 6) << 5; // range limit to 6 bits
+ ulTmp = __SMLAD(7258, iCb, iY) >> 15; // Blue
+ ulTmp = __USAT16(ulTmp, 5); // range limit to 5 bits
+ ulPixel |= ulTmp; // now we have G + B
+ ulTmp = __SMLAD(5742, iCr, iY) >> 15; // Red
+ ulTmp = __USAT16(ulTmp, 5); // range limit to 5 bits
+ ulPixel |= (ulTmp << 11); // now we have R + G + B
+ pDest[0] = (uint16_t)ulPixel;
+#else
+ int iCBB, iCBG, iCRG, iCRR;
+ unsigned short usPixel;
+
+ iCBB = 7258 * (iCb-0x80);
+ iCBG = -1409 * (iCb-0x80);
+ iCRG = -2925 * (iCr-0x80);
+ iCRR = 5742 * (iCr-0x80);
+ usPixel = usRangeTableB[((iCBB + iY) >> 12) & 0x3ff]; // blue pixel
+ usPixel |= usRangeTableG[((iCBG + iCRG + iY) >> 12) & 0x3ff]; // green pixel
+ usPixel |= usRangeTableR[((iCRR + iY) >> 12) & 0x3ff]; // red pixel
+ pDest[0] = usPixel;
+#endif
+} /* JPEGPixelLE() */
+
+static void JPEGPixelBE(uint16_t *pDest, int iY, int iCb, int iCr)
+{
+ int iCBB, iCBG, iCRG, iCRR;
+ unsigned short usPixel;
+
+ iCBB = 7258 * (iCb-0x80);
+ iCBG = -1409 * (iCb-0x80);
+ iCRG = -2925 * (iCr-0x80);
+ iCRR = 5742 * (iCr-0x80);
+ usPixel = usRangeTableB[((iCBB + iY) >> 12) & 0x3ff]; // blue pixel
+ usPixel |= usRangeTableG[((iCBG + iCRG + iY) >> 12) & 0x3ff]; // green pixel
+ usPixel |= usRangeTableR[((iCRR + iY) >> 12) & 0x3ff]; // red pixel
+ pDest[0] = __builtin_bswap16(usPixel);
+} /* JPEGPixelBE() */
+
+static void JPEGPixelRGB(uint32_t *pDest, int iY, int iCb, int iCr)
+{
+ int iCBB, iCBG, iCRG, iCRR;
+ uint32_t u32Pixel;
+ int32_t i32;
+
+ iCBB = 7258 * (iCb-0x80);
+ iCBG = -1409 * (iCb-0x80);
+ iCRG = -2925 * (iCr-0x80);
+ iCRR = 5742 * (iCr-0x80);
+ u32Pixel = 0xff000000; // Alpha = 0xff
+ i32 = ((iCBB + iY) >> 12);
+ if (i32 < 0) i32 = 0;
+ else if (i32 > 255) i32 = 255;
+ u32Pixel |= (uint32_t)i32; // blue
+ i32 = ((iCBG + iCRG + iY) >> 12); // green pixel
+ if (i32 < 0) i32 = 0;
+ else if (i32 > 255) i32 = 255;
+ u32Pixel |= (uint32_t)(i32 << 8);
+ i32 = ((iCRR + iY) >> 12); // red pixel
+ if (i32 < 0) i32 = 0;
+ else if (i32 > 255) i32 = 255;
+ u32Pixel |= (uint32_t)(i32 << 16);
+ pDest[0] = u32Pixel;
+} /* JPEGPixelRGB() */
+
+static void JPEGPixel2LE(uint16_t *pDest, int iY1, int iY2, int iCb, int iCr)
+{
+ uint32_t ulPixel1, ulPixel2;
+//
+// Cortex-M4/M7 has some SIMD instructions which can shave a few cycles
+// off of this function (e.g. Teensy, Arduino Nano 33 BLE, Portenta, etc)
+//
+#ifdef HAS_SIMD
+ uint32_t ulCbCr;
+ uint32_t ulTmp2 ,ulTmp = 0xfa7f /*-1409*/ | 0xf4930000 /*(-2925 << 16)*/; // for green calc
+ iCb -= 0x80; iCr -= 0x80;
+ ulCbCr = (iCb | (iCr << 16));
+ //ulCbCr = __SSUB16(ulCbCr, 0x00800080); // dual 16-bit subtraction
+ ulPixel1 = __SMLAD(ulCbCr, ulTmp, iY1) >> 14; // G for pixel 1
+ ulPixel2 = __SMLAD(ulCbCr, ulTmp, iY2) >> 14; // G for pixel 2
+ ulPixel1 |= (ulPixel2 << 16);
+ ulPixel1 = __USAT16(ulPixel1, 6) << 5; // range limit both to 6 bits
+ ulTmp = __SMLAD(7258, iCb, iY1) >> 15; // Blue 1
+ ulTmp2 = __SMLAD(7258, iCb, iY2) >> 15; // Blue 2
+ ulTmp = __USAT16(ulTmp | (ulTmp2 << 16), 5); // range limit both to 5 bits
+ ulPixel1 |= ulTmp; // now we have G + B
+ ulTmp = __SMLAD(5742, iCr, iY1) >> 15; // Red 1
+ ulTmp2 = __SMLAD(5742, iCr, iY2) >> 15; // Red 2
+ ulTmp = __USAT16(ulTmp | (ulTmp2 << 16), 5); // range limit both to 5 bits
+ ulPixel1 |= (ulTmp << 11); // now we have R + G + B
+ *(uint32_t *)&pDest[0] = ulPixel1;
+#else
+ int iCBB, iCBG, iCRG, iCRR;
+ iCBB = 7258 * (iCb-0x80);
+ iCBG = -1409 * (iCb-0x80);
+ iCRG = -2925 * (iCr-0x80);
+ iCRR = 5742 * (iCr-0x80);
+ ulPixel1 = usRangeTableB[((iCBB + iY1) >> 12) & 0x3ff]; // blue pixel
+ ulPixel1 |= usRangeTableG[((iCBG + iCRG + iY1) >> 12) & 0x3ff]; // green pixel
+ ulPixel1 |= usRangeTableR[((iCRR + iY1) >> 12) & 0x3ff]; // red pixel
+
+ ulPixel2 = usRangeTableB[((iCBB + iY2) >> 12) & 0x3ff]; // blue pixel
+ ulPixel2 |= usRangeTableG[((iCBG + iCRG + iY2) >> 12) & 0x3ff]; // green pixel
+ ulPixel2 |= usRangeTableR[((iCRR + iY2) >> 12) & 0x3ff]; // red pixel
+ *(uint32_t *)&pDest[0] = (ulPixel1 | (ulPixel2<<16));
+#endif
+} /* JPEGPixel2LE() */
+
+static void JPEGPixel2BE(uint16_t *pDest, int32_t iY1, int32_t iY2, int32_t iCb, int32_t iCr)
+{
+ int32_t iCBB, iCBG, iCRG, iCRR;
+ uint32_t ulPixel1, ulPixel2;
+
+ iCBB = 7258L * (iCb-0x80);
+ iCBG = -1409L * (iCb-0x80);
+ iCRG = -2925L * (iCr-0x80);
+ iCRR = 5742L * (iCr-0x80);
+ ulPixel1 = usRangeTableB[((iCBB + iY1) >> 12) & 0x3ff]; // blue pixel
+ ulPixel1 |= usRangeTableG[((iCBG + iCRG + iY1) >> 12) & 0x3ff]; // green pixel
+ ulPixel1 |= usRangeTableR[((iCRR + iY1) >> 12) & 0x3ff]; // red pixel
+
+ ulPixel2 = usRangeTableB[((iCBB + iY2) >> 12) & 0x3ff]; // blue pixel
+ ulPixel2 |= usRangeTableG[((iCBG + iCRG + iY2) >> 12) & 0x3ff]; // green pixel
+ ulPixel2 |= usRangeTableR[((iCRR + iY2) >> 12) & 0x3ff]; // red pixel
+ *(uint32_t *)&pDest[0] = __builtin_bswap16(ulPixel1) | ((uint32_t)__builtin_bswap16(ulPixel2)<<16);
+} /* JPEGPixel2BE() */
+
+static void JPEGPixel2RGB(uint32_t *pDest, int32_t iY1, int32_t iY2, int32_t iCb, int32_t iCr)
+{
+ int32_t iCBB, iCBG, iCRG, iCRR;
+ uint32_t u32Pixel1, u32Pixel2;
+ int32_t i32;
+
+ iCBB = 7258L * (iCb-0x80);
+ iCBG = -1409L * (iCb-0x80);
+ iCRG = -2925L * (iCr-0x80);
+ iCRR = 5742L * (iCr-0x80);
+ i32 = ((iCBB + iY1) >> 12); // blue pixel
+ if (i32 < 0) i32 = 0;
+ else if (i32 > 255) i32 = 255;
+ u32Pixel1 = u32Pixel2 = 0xff000000; // Alpha = 255
+ u32Pixel1 |= (uint32_t)i32; // blue
+ i32 = ((iCBG + iCRG + iY1) >> 12); // green pixel
+ if (i32 < 0) i32 = 0;
+ else if (i32 > 255) i32 = 255;
+ u32Pixel1 |= (uint32_t)(i32 << 8); // green
+ i32 = ((iCRR + iY1) >> 12); // red pixel
+ if (i32 < 0) i32 = 0;
+ else if (i32 > 255) i32 = 255;
+ u32Pixel1 |= (uint32_t)(i32 << 16); // red
+
+ i32 = ((iCBB + iY2) >> 12); // blue pixel
+ if (i32 < 0) i32 = 0;
+ else if (i32 > 255) i32 = 255;
+ u32Pixel2 |= (uint32_t)i32;
+ i32 = ((iCBG + iCRG + iY2) >> 12); // green pixel
+ if (i32 < 0) i32 = 0;
+ else if (i32 > 255) i32 = 255;
+ u32Pixel2 |= (uint32_t)(i32 << 8);
+ i32 = ((iCRR + iY2) >> 12); // red pixel
+ if (i32 < 0) i32 = 0;
+ else if (i32 > 255) i32 = 255;
+ u32Pixel2 |= (uint32_t)(i32 << 16);
+ pDest[0] = u32Pixel1;
+ pDest[1] = u32Pixel2;
+} /* JPEGPixel2RGB() */
+
+static void JPEGPutMCU11(JPEGIMAGE *pJPEG, int x, int iPitch)
+{
+ int iCr, iCb;
+ signed int Y;
+ int iCol;
+ int iRow;
+ uint8_t *pY, *pCr, *pCb;
+ uint16_t *pOutput = &pJPEG->usPixels[x];
+
+ if (pJPEG->ucPixelType == RGB8888) {
+ pOutput += x; // 4 bytes per pixel, not 2
+ }
+
+ pY = (unsigned char *)&pJPEG->sMCUs[0*DCTSIZE];
+ pCb = (unsigned char *)&pJPEG->sMCUs[1*DCTSIZE];
+ pCr = (unsigned char *)&pJPEG->sMCUs[2*DCTSIZE];
+
+ if (pJPEG->iOptions & JPEG_SCALE_HALF)
+ {
+ for (iRow=0; iRow<4; iRow++) // up to 8 rows to do
+ {
+ for (iCol=0; iCol<4; iCol++) // up to 4x2 cols to do
+ {
+ iCr = (pCr[0] + pCr[1] + pCr[8] + pCr[9] + 2) >> 2;
+ iCb = (pCb[0] + pCb[1] + pCb[8] + pCb[9] + 2) >> 2;
+ Y = (pY[0] + pY[1] + pY[8] + pY[9]) << 10;
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ JPEGPixelLE(pOutput+iCol, Y, iCb, iCr);
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ JPEGPixelBE(pOutput+iCol, Y, iCb, iCr);
+ else
+ JPEGPixelRGB((uint32_t *)&pOutput[iCol*2], Y, iCb, iCr);
+ pCr += 2;
+ pCb += 2;
+ pY += 2;
+ } // for col
+ pCr += 8;
+ pCb += 8;
+ pY += 8;
+ pOutput += (pJPEG->ucPixelType == RGB8888) ? iPitch*2 : iPitch;
+ } // for row
+ return;
+ }
+ if (pJPEG->iOptions & JPEG_SCALE_EIGHTH) // special case for 1/8 scaling
+ {
+ // only 4 pixels to draw, so no looping needed
+ iCr = pCr[0];
+ iCb = pCb[0];
+ Y = (int)(pY[0]) << 12;
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ JPEGPixelLE(pOutput, Y, iCb, iCr);
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ JPEGPixelBE(pOutput, Y, iCb, iCr);
+ else
+ JPEGPixelRGB((uint32_t *)pOutput, Y, iCb, iCr);
+ return;
+ }
+ if (pJPEG->iOptions & JPEG_SCALE_QUARTER) // special case for 1/4 scaling
+ {
+ // only 4 pixels to draw, so no looping needed
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ {
+ iCr = *pCr++;
+ iCb = *pCb++;
+ Y = (int)(*pY++) << 12;
+ JPEGPixelLE(pOutput, Y, iCb, iCr);
+ iCr = *pCr++;
+ iCb = *pCb++;
+ Y = (int)(*pY++) << 12;
+ JPEGPixelLE(pOutput+1, Y, iCb, iCr);
+ iCr = *pCr++;
+ iCb = *pCb++;
+ Y = (int)(*pY++) << 12;
+ JPEGPixelLE(pOutput+iPitch, Y, iCb, iCr);
+ iCr = *pCr++;
+ iCb = *pCb++;
+ Y = (int)(*pY++) << 12;
+ JPEGPixelLE(pOutput+1+iPitch, Y, iCb, iCr);
+ }
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ {
+ iCr = *pCr++;
+ iCb = *pCb++;
+ Y = (int)(*pY++) << 12;
+ JPEGPixelBE(pOutput, Y, iCb, iCr);
+ iCr = *pCr++;
+ iCb = *pCb++;
+ Y = (int)(*pY++) << 12;
+ JPEGPixelBE(pOutput+1, Y, iCb, iCr);
+ iCr = *pCr++;
+ iCb = *pCb++;
+ Y = (int)(*pY++) << 12;
+ JPEGPixelBE(pOutput+iPitch, Y, iCb, iCr);
+ iCr = *pCr++;
+ iCb = *pCb++;
+ Y = (int)(*pY++) << 12;
+ JPEGPixelBE(pOutput+1+iPitch, Y, iCb, iCr);
+ } else { // RGB8888
+ iCr = *pCr++;
+ iCb = *pCb++;
+ Y = (int)(*pY++) << 12;
+ JPEGPixelRGB((uint32_t *)pOutput, Y, iCb, iCr);
+ iCr = *pCr++;
+ iCb = *pCb++;
+ Y = (int)(*pY++) << 12;
+ JPEGPixelRGB((uint32_t *)&pOutput[2], Y, iCb, iCr);
+ iCr = *pCr++;
+ iCb = *pCb++;
+ Y = (int)(*pY++) << 12;
+ JPEGPixelRGB((uint32_t *)&pOutput[iPitch*2], Y, iCb, iCr);
+ iCr = *pCr++;
+ iCb = *pCb++;
+ Y = (int)(*pY++) << 12;
+ JPEGPixelRGB((uint32_t *)&pOutput[2+iPitch*2], Y, iCb, iCr);
+ }
+ return;
+ }
+// full size
+#ifdef ESP32S3_SIMD
+ if (pJPEG->ucPixelType == RGB8888) iPitch *= 2;
+ for (iRow=0; iRow<8; iRow++) {
+ s3_ycbcr_convert_444(pY, pCb, pCr, pOutput, i16_Consts, pJPEG->ucPixelType);
+ pCb += 8; pCr += 8; pY += 8; pOutput += iPitch;
+ }
+ return;
+#endif // ESP32S3_SIMD
+
+#ifdef HAS_SSE
+// SSE2 version
+// R = Y + 1.40200 * Cr
+// G = Y - 0.34414 * Cb + 0.28586 * Cr - Cr
+// B = Y - 0.22800 * Cb + Cb + Cb
+
+ if (pJPEG->ucPixelType == RGB8888) {
+ __m128i mmxY, mmxCr, mmxCb, mmxTemp;
+ __m128i mmxTemp2, mmxR, mmxG, mmxB;
+ iPitch *= 2; // points to 32-bit values, not 16-bit
+ mmxTemp2 = _mm_cmpeq_epi16(_mm_setzero_si128(), _mm_setzero_si128()); // fix Cr/Cb values by subtracting 0x80
+ mmxTemp2 = _mm_slli_epi16 (mmxTemp2, 15); // now has 0x8000, 0x8000...
+ for (iRow=0; iRow<8; iRow++) { // do 8 rows
+ mmxCr = _mm_loadl_epi64((__m128i *)pCr); // load 1 row of Cr
+ mmxCb = _mm_loadl_epi64((__m128i *)pCb); // load 1 row of Cb
+ mmxY = _mm_loadl_epi64((__m128i *)pY); // load 1 row of Y
+ pCr += 8;
+ pCb += 8;
+ pY += 8;
+ mmxCr = _mm_unpacklo_epi8 (_mm_setzero_si128(), mmxCr); // zero-extend 8 Cr values to 16-bits
+ mmxCb = _mm_unpacklo_epi8 (_mm_setzero_si128(), mmxCb); // zero-extend 8 Cb values to 16-bits
+ mmxY = _mm_unpacklo_epi8 (mmxY, _mm_setzero_si128()); // zero-extend 8 Y values to 16-bits
+ mmxCr = _mm_add_epi16(mmxCr, mmxTemp2); // subtract 0x80
+ mmxCb = _mm_add_epi16(mmxCb, mmxTemp2); // subtract 0x80
+ mmxY = _mm_slli_epi16(mmxY, 4); // x16 to put on par with Cr/Cb values
+ mmxTemp = _mm_loadu_si128((__m128i *)&s1402[0]); // load the 1.402 constant
+ mmxTemp = _mm_mulhi_epi16(mmxCr, mmxTemp); // almost ready with R
+ mmxR = _mm_add_epi16(mmxTemp, mmxY); // now we have 8 R values
+ mmxTemp = _mm_loadu_si128((__m128i *)&s0714[0]);
+ mmxR = _mm_srai_epi16(mmxR, 4);
+ mmxR = _mm_packus_epi16 (mmxR, mmxR); // i16->u8 bit and saturate
+ mmxTemp = _mm_mulhi_epi16(mmxCr, mmxTemp); // Y-0.71414*Cr
+ mmxG = _mm_add_epi16(mmxY, mmxTemp);
+ mmxTemp = _mm_loadu_si128((__m128i *)&s0344[0]); // Y -= 0.34414*Cb
+ mmxTemp = _mm_mulhi_epi16(mmxCb, mmxTemp);
+ mmxG = _mm_add_epi16(mmxG, mmxTemp); // now we have 8 G values
+ mmxG = _mm_srai_epi16(mmxG, 4);
+ mmxG = _mm_packus_epi16 (mmxG, mmxG); // i16->u8 bit and saturate
+ mmxTemp = _mm_loadu_si128((__m128i *)&s1772[0]); // B = Y - 1.772*Cb
+ mmxTemp = _mm_mulhi_epi16(mmxCb, mmxTemp);
+ mmxB = _mm_add_epi16(mmxY, mmxTemp); // now we have 8 B values
+ mmxB = _mm_srai_epi16(mmxB, 4);
+ mmxB = _mm_packus_epi16 (mmxB, mmxB); // i16->u8 bit and saturate
+ mmxTemp = _mm_cmpeq_epi16(mmxTemp, mmxTemp); // Alpha set to FFFF
+ mmxCr = _mm_unpacklo_epi8(mmxB, mmxG); // interleave 8 B's and 8 G's
+ mmxCb = _mm_unpacklo_epi8(mmxR, mmxTemp); // interlave 8 R's and 8 A's
+ mmxTemp = _mm_unpacklo_epi16(mmxCr, mmxCb); // interleave 4 BG's and 4 RA's
+ mmxCr = _mm_unpackhi_epi16(mmxCr, mmxCb); // interleave 4 BG's and 4 RA's
+// _mm_stream_si128((__m128i*)pOutput, mmxTemp);
+// _mm_stream_si128((__m128i*)(pOutput+8), mmxCr);
+ _mm_storeu_si128((__m128i *)pOutput, mmxTemp); // write 4 RGBA pixels
+ _mm_storeu_si128((__m128i *)(pOutput+8), mmxCr); // write 4 RGBA pixels
+ pOutput += iPitch;
+ } // for each row
+ return;
+ } else { // 16-bpp
+ __m128i mmxY, mmxCr, mmxCb, mmxTemp;
+ __m128i mmxTemp2, mmxR, mmxG, mmxB;
+ for (iRow=0; iRow<8; iRow++) { // do 8 rows
+ mmxCr = _mm_loadl_epi64((__m128i *)pCr); // load 1 row of Cr
+ mmxCb = _mm_loadl_epi64((__m128i *)pCb); // load 1 row of Cb
+ mmxY = _mm_loadl_epi64((__m128i *)pY); // load 1 row of Y
+ pCr += 8;
+ pCb += 8;
+ pY += 8;
+ mmxTemp = _mm_cmpeq_epi16(mmxY, mmxY); // fix Cr/Cb values by subtracting 0x80
+ mmxTemp = _mm_slli_epi16 (mmxTemp, 15); // now has 0x8000, 0x8000...
+ mmxTemp2 = _mm_setzero_si128(); // zero it to use to set upper bits to 0
+ mmxCr = _mm_unpacklo_epi8 (mmxTemp2, mmxCr); // zero-extend 8 Cr values to 16-bits
+ mmxCb = _mm_unpacklo_epi8 (mmxTemp2, mmxCb); // zero-extend 8 Cb values to 16-bits
+ mmxY = _mm_unpacklo_epi8 (mmxY, mmxTemp2); // zero-extend 8 Y values to 16-bits
+ mmxY = _mm_slli_epi16(mmxY, 4); // x16 to put on par with Cr/Cb values
+ mmxCr = _mm_add_epi16(mmxCr, mmxTemp); // subtract 0x80
+ mmxCb = _mm_add_epi16(mmxCb, mmxTemp); // subtract 0x80
+ mmxTemp = _mm_loadu_si128((__m128i *)&s1402[0]); // load the 1.402 constant
+ mmxTemp = _mm_mulhi_epi16(mmxCr, mmxTemp); // almost ready with R
+ mmxR = _mm_add_epi16(mmxTemp, mmxY); // now we have 8 R values
+ mmxTemp = _mm_loadu_si128((__m128i *)&s0714[0]);
+ mmxR = _mm_srai_epi16(mmxR, 4);
+ mmxTemp = _mm_mulhi_epi16(mmxCr, mmxTemp); // Y-0.71414*Cr
+ mmxR = _mm_packus_epi16 (mmxR, mmxR); // i16->u8 bit and saturate
+ mmxG = _mm_add_epi16(mmxY, mmxTemp);
+ mmxTemp = _mm_loadu_si128((__m128i *)&s0344[0]); // Y -= 0.34414*Cb
+ mmxTemp = _mm_mulhi_epi16(mmxCb, mmxTemp);
+ mmxG = _mm_add_epi16(mmxG, mmxTemp); // now we have 8 G values
+ mmxG = _mm_srai_epi16(mmxG, 4);
+ mmxG = _mm_packus_epi16 (mmxG, mmxG); // i16->u8 bit and saturate
+ mmxTemp = _mm_loadu_si128((__m128i *)&s1772[0]); // B = Y - 1.772*Cb
+ mmxTemp = _mm_mulhi_epi16(mmxCb, mmxTemp);
+ mmxB = _mm_add_epi16(mmxY, mmxTemp); // now we have 8 B values
+ mmxB = _mm_srai_epi16(mmxB, 4);
+ mmxTemp = _mm_setzero_si128(); // interleave with 0 to get back to 16-bit values
+ mmxB = _mm_packus_epi16 (mmxB, mmxB); // i16->u8 bit and saturate
+ mmxR = _mm_unpacklo_epi8(mmxR, mmxTemp); // zero-extend to 16-bits again
+ mmxB = _mm_unpacklo_epi8(mmxB, mmxTemp);
+ mmxG = _mm_unpacklo_epi8(mmxG, mmxTemp);
+ mmxR = _mm_srli_epi16(mmxR, 3); // reduce to 5-bits
+ mmxR = _mm_slli_epi16(mmxR, 11); // set in proper position
+ mmxB = _mm_srli_epi16(mmxB, 3); // reduce to 5-bits
+ mmxG = _mm_srli_epi16(mmxG, 2); // reduce to 6-bits
+ mmxG = _mm_slli_epi16(mmxG, 5); // set in proper position
+ mmxTemp = _mm_or_si128(mmxR, mmxG); // R+G
+ mmxTemp = _mm_or_si128(mmxTemp, mmxB); // R+G+B
+ _mm_storeu_si128((__m128i *)pOutput, mmxTemp); // write 8 RGB565 pixels
+ pOutput += iPitch;
+ } // for each row
+ return;
+ }
+#endif // HAS_SSE
+
+ for (iRow=0; iRow<8; iRow++) // up to 8 rows to do
+ {
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ {
+ for (iCol=0; iCol<8; iCol++) // up to 4x2 cols to do
+ {
+ iCr = *pCr++;
+ iCb = *pCb++;
+ Y = (int)(*pY++) << 12;
+ JPEGPixelLE(pOutput+iCol, Y, iCb, iCr);
+ } // for col
+ }
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ {
+ for (iCol=0; iCol<8; iCol++) // up to 4x2 cols to do
+ {
+ iCr = *pCr++;
+ iCb = *pCb++;
+ Y = (int)(*pY++) << 12;
+ JPEGPixelBE(pOutput+iCol, Y, iCb, iCr);
+ } // for col
+ } else { // RGB888
+ for (iCol=0; iCol<8; iCol++) // up to 4x2 cols to do
+ {
+ iCr = *pCr++;
+ iCb = *pCb++;
+ Y = (int)(*pY++) << 12;
+ JPEGPixelRGB((uint32_t *)&pOutput[iCol*2], Y, iCb, iCr);
+ } // for col
+ }
+ pOutput += (pJPEG->ucPixelType == RGB8888) ? iPitch*2 : iPitch;
+ } // for row
+} /* JPEGPutMCU11() */
+
+static void JPEGPutMCU22(JPEGIMAGE *pJPEG, int x, int iPitch)
+{
+ uint32_t Cr,Cb;
+ signed int Y1, Y2, Y3, Y4;
+ int iRow, iCol, iXCount1, iXCount2, iYCount;
+ unsigned char *pY, *pCr, *pCb;
+ int bUseOdd1, bUseOdd2; // special case where 24bpp odd sized image can clobber first column
+ uint16_t *pOutput = &pJPEG->usPixels[x];
+ if (pJPEG->ucPixelType == RGB8888) {
+ pOutput += x; // 4 bytes per pixel, not 2
+ }
+ pY = (unsigned char *)&pJPEG->sMCUs[0*DCTSIZE];
+ pCb = (unsigned char *)&pJPEG->sMCUs[4*DCTSIZE];
+ pCr = (unsigned char *)&pJPEG->sMCUs[5*DCTSIZE];
+
+ if (pJPEG->iOptions & JPEG_SCALE_HALF) // special handling of 1/2 size (pixel averaging)
+ {
+ for (iRow=0; iRow<4; iRow++) // 16x16 becomes 8x8 of 2x2 pixels
+ {
+ for (iCol=0; iCol<4; iCol++)
+ {
+ Y1 = (pY[iCol*2] + pY[iCol*2+1] + pY[iCol*2+8] + pY[iCol*2+9]) << 10;
+ Cb = pCb[iCol];
+ Cr = pCr[iCol];
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ JPEGPixelLE(pOutput+iCol, Y1, Cb, Cr); // top left
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ JPEGPixelBE(pOutput+iCol, Y1, Cb, Cr);
+ else
+ JPEGPixelRGB((uint32_t *)&pOutput[iCol*2], Y1, Cb, Cr);
+ Y1 = (pY[iCol*2+(DCTSIZE*2)] + pY[iCol*2+1+(DCTSIZE*2)] + pY[iCol*2+8+(DCTSIZE*2)] + pY[iCol*2+9+(DCTSIZE*2)]) << 10;
+ Cb = pCb[iCol+4];
+ Cr = pCr[iCol+4];
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ JPEGPixelLE(pOutput+iCol+4, Y1, Cb, Cr); // top right
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ JPEGPixelBE(pOutput+iCol+4, Y1, Cb, Cr);
+ else
+ JPEGPixelRGB((uint32_t *)&pOutput[(iCol*2)+8], Y1, Cb, Cr);
+ Y1 = (pY[iCol*2+(DCTSIZE*4)] + pY[iCol*2+1+(DCTSIZE*4)] + pY[iCol*2+8+(DCTSIZE*4)] + pY[iCol*2+9+(DCTSIZE*4)]) << 10;
+ Cb = pCb[iCol+32];
+ Cr = pCr[iCol+32];
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ JPEGPixelLE(pOutput+iCol+iPitch*4, Y1, Cb, Cr); // bottom left
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ JPEGPixelBE(pOutput+iCol+iPitch*4, Y1, Cb, Cr);
+ else
+ JPEGPixelRGB((uint32_t *)&pOutput[(iCol+iPitch*4)*2], Y1, Cb, Cr);
+ Y1 = (pY[iCol*2+(DCTSIZE*6)] + pY[iCol*2+1+(DCTSIZE*6)] + pY[iCol*2+8+(DCTSIZE*6)] + pY[iCol*2+9+(DCTSIZE*6)]) << 10;
+ Cb = pCb[iCol+32+4];
+ Cr = pCr[iCol+32+4];
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ JPEGPixelLE(pOutput+iCol+4+iPitch*4, Y1, Cb, Cr); // bottom right
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ JPEGPixelBE(pOutput+iCol+4+iPitch*4, Y1, Cb, Cr);
+ else
+ JPEGPixelRGB((uint32_t *)&pOutput[(iCol+4+iPitch*4)*2], Y1, Cb, Cr);
+ }
+ pY += 16;
+ pCb += 8;
+ pCr += 8;
+ pOutput += (pJPEG->ucPixelType == RGB8888) ? iPitch*2 : iPitch;
+ }
+ return;
+ }
+ if (pJPEG->iOptions & JPEG_SCALE_EIGHTH)
+ {
+ Y1 = pY[0] << 12; // scale to level of conversion table
+ Cb = pCb[0];
+ Cr = pCr[0];
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ JPEGPixelLE(pOutput, Y1, Cb, Cr);
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ JPEGPixelBE(pOutput, Y1, Cb, Cr);
+ else
+ JPEGPixelRGB((uint32_t *)pOutput, Y1, Cb, Cr);
+ // top right block
+ Y1 = pY[DCTSIZE*2] << 12; // scale to level of conversion table
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ JPEGPixelLE(pOutput + 1, Y1, Cb, Cr);
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ JPEGPixelBE(pOutput + 1, Y1, Cb, Cr);
+ else
+ JPEGPixelRGB((uint32_t *)&pOutput[2], Y1, Cb, Cr);
+ // bottom left block
+ Y1 = pY[DCTSIZE*4] << 12; // scale to level of conversion table
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ JPEGPixelLE(pOutput+iPitch, Y1, Cb, Cr);
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ JPEGPixelBE(pOutput+iPitch, Y1, Cb, Cr);
+ else
+ JPEGPixelRGB((uint32_t *)&pOutput[iPitch*2], Y1, Cb, Cr);
+ // bottom right block
+ Y1 = pY[DCTSIZE*6] << 12; // scale to level of conversion table
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ JPEGPixelLE(pOutput+ 1 + iPitch, Y1, Cb, Cr);
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ JPEGPixelBE(pOutput+ 1 + iPitch, Y1, Cb, Cr);
+ else
+ JPEGPixelRGB((uint32_t *)&pOutput[2 + iPitch*2], Y1, Cb, Cr);
+ return;
+ }
+ if (pJPEG->iOptions & JPEG_SCALE_QUARTER) // special case of 1/4
+ {
+ for (iRow=0; iRow<2; iRow++)
+ {
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ {
+ for (iCol=0; iCol<2; iCol++)
+ {
+ // top left block
+ Y1 = pY[iCol] << 12; // scale to level of conversion table
+ Cb = pCb[0];
+ Cr = pCr[0];
+ JPEGPixelLE(pOutput + iCol, Y1, Cb, Cr);
+ // top right block
+ Y1 = pY[iCol+(DCTSIZE*2)] << 12; // scale to level of conversion table
+ Cb = pCb[1];
+ Cr = pCr[1];
+ JPEGPixelLE(pOutput + 2+iCol, Y1, Cb, Cr);
+ // bottom left block
+ Y1 = pY[iCol+DCTSIZE*4] << 12; // scale to level of conversion table
+ Cb = pCb[2];
+ Cr = pCr[2];
+ JPEGPixelLE(pOutput+iPitch*2 + iCol, Y1, Cb, Cr);
+ // bottom right block
+ Y1 = pY[iCol+DCTSIZE*6] << 12; // scale to level of conversion table
+ Cb = pCb[3];
+ Cr = pCr[3];
+ JPEGPixelLE(pOutput+iPitch*2 + 2+iCol, Y1, Cb, Cr);
+ } // for each column
+ }
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ {
+ for (iCol=0; iCol<2; iCol++)
+ {
+ // top left block
+ Y1 = pY[iCol] << 12; // scale to level of conversion table
+ Cb = pCb[0];
+ Cr = pCr[0];
+ JPEGPixelBE(pOutput + iCol, Y1, Cb, Cr);
+ // top right block
+ Y1 = pY[iCol+(DCTSIZE*2)] << 12; // scale to level of conversion table
+ Cb = pCb[1];
+ Cr = pCr[1];
+ JPEGPixelBE(pOutput + 2+iCol, Y1, Cb, Cr);
+ // bottom left block
+ Y1 = pY[iCol+DCTSIZE*4] << 12; // scale to level of conversion table
+ Cb = pCb[2];
+ Cr = pCr[2];
+ JPEGPixelBE(pOutput+iPitch*2 + iCol, Y1, Cb, Cr);
+ // bottom right block
+ Y1 = pY[iCol+DCTSIZE*6] << 12; // scale to level of conversion table
+ Cb = pCb[3];
+ Cr = pCr[3];
+ JPEGPixelBE(pOutput+iPitch*2 + 2+iCol, Y1, Cb, Cr);
+ } // for each column
+ } else { // RGB8888
+ for (iCol=0; iCol<2; iCol++)
+ {
+ // top left block
+ Y1 = pY[iCol] << 12; // scale to level of conversion table
+ Cb = pCb[0];
+ Cr = pCr[0];
+ JPEGPixelRGB((uint32_t *)&pOutput[iCol*2], Y1, Cb, Cr);
+ // top right block
+ Y1 = pY[iCol+(DCTSIZE*2)] << 12; // scale to level of conversion table
+ Cb = pCb[1];
+ Cr = pCr[1];
+ JPEGPixelRGB((uint32_t *)&pOutput[(2+iCol)*2], Y1, Cb, Cr);
+ // bottom left block
+ Y1 = pY[iCol+DCTSIZE*4] << 12; // scale to level of conversion table
+ Cb = pCb[2];
+ Cr = pCr[2];
+ JPEGPixelRGB((uint32_t *)&pOutput[(iPitch*2 + iCol)*2], Y1, Cb, Cr);
+ // bottom right block
+ Y1 = pY[iCol+DCTSIZE*6] << 12; // scale to level of conversion table
+ Cb = pCb[3];
+ Cr = pCr[3];
+ JPEGPixelRGB((uint32_t *)&pOutput[(iPitch*2 + 2+iCol)*2], Y1, Cb, Cr);
+ } // for each column
+ }
+ pY += 2; // skip 1 line of source pixels
+ pOutput += (pJPEG->ucPixelType == RGB8888) ? iPitch*2 : iPitch;
+ }
+ return;
+ }
+// full size
+#ifdef ESP32S3_SIMD
+ if (pJPEG->ucPixelType == RGB8888) iPitch *= 2;
+ for (iRow=0; iRow<4; iRow++) { // top L+R, 4 pairs of lines x 16 pixels
+ // each call converts 16 pixels
+ s3_ycbcr_convert_420(pY, pCb, pCr, pOutput, i16_Consts, pJPEG->ucPixelType);
+ s3_ycbcr_convert_420(pY+8, pCb, pCr, pOutput+iPitch, i16_Consts, pJPEG->ucPixelType);
+ pCb += 8; pCr += 8; pY += 16; pOutput += iPitch*2;
+ }
+ pY += (256 - 64);
+ for (iRow=0; iRow<4; iRow++) { // bottom L+R
+ s3_ycbcr_convert_420(pY, pCb, pCr, pOutput, i16_Consts, pJPEG->ucPixelType);
+ s3_ycbcr_convert_420(pY+8, pCb, pCr, pOutput+iPitch, i16_Consts, pJPEG->ucPixelType);
+ pCb += 8; pCr += 8; pY += 16; pOutput += iPitch*2;
+ }
+ return;
+#endif // ESP32S3_SIMD
+
+#ifdef HAS_NEON
+ if (pJPEG->ucPixelType == RGB8888) {
+ int8x8_t i88Cr, i88Cb;
+ uint8x16_t u816YL, u816YR;
+ int16x8_t i168Cr, i168Cb, i168Y, i168Temp;
+ int16x4_t i164Constants;
+ int16x8_t i168R, i168G, i168B;
+ uint8x8_t u88R, u88G, u88B, u88A;
+ int16x8x2_t i168Crx2, i168Cbx2;
+ uint8x8x4_t u884Hack;
+ i164Constants = vld1_s16(&sYCCRGBConstants[0]); // 4 different constants used for "lane" multiplications by scalar
+ u88A = vdup_n_u8(0xff); // Alpha set to FF
+
+ for (iRow=0; iRow<8; iRow++) { // do 8 rows
+ i88Cr = vld1_s8((const int8_t *)pCr); // load 1 row of Cr
+ i88Cb = vld1_s8((const int8_t *) pCb); // load 1 row of Cb
+ u816YL = vld1q_u8(pY); // load 2 rows of Y (left block)
+ u816YR = vld1q_u8(pY+128); // load 2 rows of Y (right block)
+ // top left block
+ i168Temp = vdupq_n_s16((int16_t)0x8000); // fix Cr/Cb values by subtracting 0x80
+ i168Cr = vshll_n_s8(i88Cr, 8); // widen 8 Cr values and shift left 8
+ i168Cb = vshll_n_s8(i88Cb, 8); // widen 8 Cb values and shift left 8
+ i168Y = vreinterpretq_s16_u16(vshll_n_u8(vget_low_u8(u816YL), 4)); // widen and x16 to put on par with Cr/Cb values
+ i168Cr = vsubq_s16(i168Cr, i168Temp); // fix Cr/Cb (-0x80)
+ i168Cb = vsubq_s16(i168Cb, i168Temp);
+ i168Crx2 = vzipq_s16(i168Cr, i168Cr); // double elements in horizonal direction
+ i168Cbx2 = vzipq_s16(i168Cb, i168Cb);
+ i168Temp = vqdmulhq_lane_s16(i168Crx2.val[0], i164Constants, 0); // Cr x 1.402
+ i168R = vaddq_s16(i168Temp, i168Y); // now we have 8 R values
+ i168Temp = vqdmulhq_lane_s16(i168Crx2.val[0], i164Constants, 1); // Cr x -0.71414
+ u88R = vqshrun_n_s16(i168R, 4); // narrow and saturate to 8-bit unsigned
+ i168G = vaddq_s16(i168Y, i168Temp);
+ i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[0], i164Constants, 2); // Cb x -0.34414
+ i168G = vaddq_s16(i168G, i168Temp); // now we have 8 G values
+ u88G = vqrshrun_n_s16(i168G, 4); // shift right, narrow and saturate to 8-bit unsigned
+ i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[0], i164Constants, 3); // Cb x -1.772
+ i168B = vaddq_s16(i168Y, i168Temp); // now we have 8 B values
+ i168Y = vreinterpretq_s16_u16(vshll_n_u8(vget_low_u8(u816YR), 4)); // widen and x16 to put on par with Cr/Cb values (right block)
+ u88B = vqrshrun_n_s16(i168B, 4); // shift right, narrow and saturate to 8-bit unsigned
+ // ugly hack due to bug in GCC of vst4 intrinsics
+ u884Hack.val[0] = u88B;
+ u884Hack.val[1] = u88G;
+ u884Hack.val[2] = u88R;
+ u884Hack.val[3] = u88A;
+ vst4_u8((uint8_t *)pOutput, u884Hack);
+ // top right block
+ i168Temp = vqdmulhq_lane_s16(i168Crx2.val[1], i164Constants, 0); // Cr x 1.402
+ i168R = vaddq_s16(i168Temp, i168Y); // now we have 8 R values
+ i168Temp = vqdmulhq_lane_s16(i168Crx2.val[1], i164Constants, 1); // Cr x -0.71414
+ u88R = vqshrun_n_s16(i168R, 4); // narrow and saturate to 8-bit unsigned
+ i168G = vaddq_s16(i168Y, i168Temp);
+ i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[1], i164Constants, 2); // Cb x -0.34414
+ i168G = vaddq_s16(i168G, i168Temp); // now we have 8 G values
+ u88G = vqrshrun_n_s16(i168G, 4); // shift right, narrow and saturate to 8-bit unsigned
+ i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[1], i164Constants, 3); // Cb x -1.772
+ i168B = vaddq_s16(i168Y, i168Temp); // now we have 8 B values
+ i168Y = vreinterpretq_s16_u16(vshll_n_u8(vget_high_u8(u816YL), 4)); // widen and x16 to put on par with Cr/Cb values (right block)
+ u88B = vqrshrun_n_s16(i168B, 4); // shift right, narrow and saturate to 8-bit unsigned
+ // ugly hack due to bug in GCC of vst4 intrinsics
+ u884Hack.val[0] = u88B;
+ u884Hack.val[1] = u88G;
+ u884Hack.val[2] = u88R;
+ u884Hack.val[3] = u88A;
+ vst4_u8((uint8_t *)(pOutput+16), u884Hack);
+ // bottom left block
+ i168Temp = vqdmulhq_lane_s16(i168Crx2.val[0], i164Constants, 0); // Cr x 1.402
+ i168R = vaddq_s16(i168Temp, i168Y); // now we have 8 R values
+ i168Temp = vqdmulhq_lane_s16(i168Crx2.val[0], i164Constants, 1); // Cr x -0.71414
+ u88R = vqshrun_n_s16(i168R, 4); // narrow and saturate to 8-bit unsigned
+ i168G = vaddq_s16(i168Y, i168Temp);
+ i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[0], i164Constants, 2); // Cb x -0.34414
+ i168G = vaddq_s16(i168G, i168Temp); // now we have 8 G values
+ u88G = vqrshrun_n_s16(i168G, 4); // shift right, narrow and saturate to 8-bit unsigned
+ i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[0], i164Constants, 3); // Cb x -1.772
+ i168B = vaddq_s16(i168Y, i168Temp); // now we have 8 B values
+ i168Y = vreinterpretq_s16_u16(vshll_n_u8(vget_high_u8(u816YR), 4)); // widen and x16 to put on par with Cr/Cb values (bottom right block)
+ u88B = vqrshrun_n_s16(i168B, 4); // shift right, narrow and saturate to 8-bit unsigned
+ // ugly hack due to bug in GCC of vst4 intrinsics
+ u884Hack.val[0] = u88B;
+ u884Hack.val[1] = u88G;
+ u884Hack.val[2] = u88R;
+ u884Hack.val[3] = u88A;
+ vst4_u8((uint8_t *)(pOutput+iPitch*2), u884Hack);
+ // bottom right block
+ i168Temp = vqdmulhq_lane_s16(i168Crx2.val[1], i164Constants, 0); // Cr x 1.402
+ i168R = vaddq_s16(i168Temp, i168Y); // now we have 8 R values
+ i168Temp = vqdmulhq_lane_s16(i168Crx2.val[1], i164Constants, 1); // Cr x -0.71414
+ u88R = vqshrun_n_s16(i168R, 4); // narrow and saturate to 8-bit unsigned
+ i168G = vaddq_s16(i168Y, i168Temp);
+ i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[1], i164Constants, 2); // Cb x -0.34414
+ i168G = vaddq_s16(i168G, i168Temp); // now we have 8 G values
+ u88G = vqrshrun_n_s16(i168G, 4); // shift right, narrow and saturate to 8-bit unsigned
+ i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[1], i164Constants, 3); // Cb x -1.772
+ i168B = vaddq_s16(i168Y, i168Temp); // now we have 8 B values
+ u88B = vqrshrun_n_s16(i168B, 4); // shift right, narrow and saturate to 8-bit unsigned
+ // ugly hack due to bug in GCC of vst4 intrinsics
+ u884Hack.val[0] = u88B;
+ u884Hack.val[1] = u88G;
+ u884Hack.val[2] = u88R;
+ u884Hack.val[3] = u88A;
+ vst4_u8((uint8_t *)(pOutput+iPitch*2+16), u884Hack);
+ pCr += 8;
+ pCb += 8;
+ if (iRow == 3) // bottom 4 rows Y values are in 2 other MCUs
+ pY += 16 + 192; // skip to other 2 Y blocks
+ else
+ pY += 16;
+ pOutput += 4*iPitch;
+ } // for each row
+ return; // 32bpp
+ } else { // 16bpp
+ int8x8_t i88Cr, i88Cb;
+ uint8x16_t u816YL, u816YR;
+ int16x8_t i168Cr, i168Cb, i168Y, i168Temp;
+ int16x4_t i164Constants;
+ int16x8x2_t i168Crx2, i168Cbx2;
+ int16x8_t i168R, i168G, i168B;
+ uint8x8_t u88R, u88G, u88B;
+ uint16x8_t u168Temp, u168Temp2;
+ uint8_t ucPixelType = pJPEG->ucPixelType;
+ i164Constants = vld1_s16(&sYCCRGBConstants[0]); // 4 different constants used for "lane" multiplications by scalar
+
+ for (iRow=0; iRow<8; iRow++) { // do 8 rows
+ i88Cr = vld1_s8((const int8_t *) pCr); // load 1 row of Cr
+ i88Cb = vld1_s8((const int8_t *) pCb); // load 1 row of Cb
+ u816YL = vld1q_u8(pY); // load 2 rows of Y (left block)
+ u816YR = vld1q_u8(pY+128); // load 2 rows of Y (right block)
+ // top left block
+ i168Temp = vdupq_n_s16((int16_t) 0x8000); // fix Cr/Cb values by subtracting 0x80
+ i168Cr = vshll_n_s8(i88Cr, 8); // widen 8 Cr values and shift left 8
+ i168Cb = vshll_n_s8(i88Cb, 8); // widen 8 Cb values and shift left 8
+ i168Y = vreinterpretq_s16_u16(vshll_n_u8(vget_low_u8(u816YL), 4)); // widen and x16 to put on par with Cr/Cb values
+ i168Cr = vsubq_s16(i168Cr, i168Temp); // fix Cr/Cb (-0x80)
+ i168Cb = vsubq_s16(i168Cb, i168Temp);
+ i168Crx2 = vzipq_s16(i168Cr, i168Cr); // double elements in horizonal direction
+ i168Cbx2 = vzipq_s16(i168Cb, i168Cb);
+ i168Temp = vqdmulhq_lane_s16(i168Crx2.val[0], i164Constants, 0); // Cr x 1.402
+ i168R = vaddq_s16(i168Temp, i168Y); // now we have 8 R values
+ i168Temp = vqdmulhq_lane_s16(i168Crx2.val[0], i164Constants, 1); // Cr x -0.71414
+ u88R = vqshrun_n_s16(i168R, 4); // narrow and saturate to 8-bit unsigned
+ i168G = vaddq_s16(i168Y, i168Temp);
+ i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[0], i164Constants, 2); // Cb x -0.34414
+ i168G = vaddq_s16(i168G, i168Temp); // now we have 8 G values
+ u88G = vqrshrun_n_s16(i168G, 4); // shift right, narrow and saturate to 8-bit unsigned
+ i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[0], i164Constants, 3); // Cb x -1.772
+ i168B = vaddq_s16(i168Y, i168Temp); // now we have 8 B values
+ i168Y = vreinterpretq_s16_u16(vshll_n_u8(vget_low_u8(u816YR), 4)); // widen and x16 to put on par with Cr/Cb values (right block)
+ u88B = vqrshrun_n_s16(i168B, 4); // shift right, narrow and saturate to 8-bit unsigned
+ u168Temp = vshll_n_u8(u88R, 8); // place red in upper part of 16-bit words
+ u168Temp2 = vshll_n_u8(u88G, 8); // shift green elements to top of 16-bit words
+ u168Temp = vsriq_n_u16(u168Temp, u168Temp2, 5); // shift green elements right and insert red elements
+ u168Temp2 = vshll_n_u8(u88B, 8); // shift blue elements to top of 16-bit words
+ u168Temp = vsriq_n_u16(u168Temp, u168Temp2, 11); // shift blue elements right and insert
+ if (ucPixelType == RGB565_BIG_ENDIAN) { // reverse the bytes
+ u168Temp = vreinterpretq_u16_u8(vrev16q_u8(vreinterpretq_u8_u16(u168Temp)));
+ }
+ vst1q_u16((uint16_t *)pOutput, u168Temp); // top left block
+ // top right block
+ i168Temp = vqdmulhq_lane_s16(i168Crx2.val[1], i164Constants, 0); // Cr x 1.402
+ i168R = vaddq_s16(i168Temp, i168Y); // now we have 8 R values
+ i168Temp = vqdmulhq_lane_s16(i168Crx2.val[1], i164Constants, 1); // Cr x -0.71414
+ u88R = vqshrun_n_s16(i168R, 4); // narrow and saturate to 8-bit unsigned
+ i168G = vaddq_s16(i168Y, i168Temp);
+ i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[1], i164Constants, 2); // Cb x -0.34414
+ i168G = vaddq_s16(i168G, i168Temp); // now we have 8 G values
+ u88G = vqrshrun_n_s16(i168G, 4); // shift right, narrow and saturate to 8-bit unsigned
+ i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[1], i164Constants, 3); // Cb x -1.772
+ i168B = vaddq_s16(i168Y, i168Temp); // now we have 8 B values
+ i168Y = vreinterpretq_s16_u16(vshll_n_u8(vget_high_u8(u816YL), 4)); // widen and x16 to put on par with Cr/Cb values (right block)
+ u88B = vqrshrun_n_s16(i168B, 4); // shift right, narrow and saturate to 8-bit unsigned
+ u168Temp = vshll_n_u8(u88R, 8); // place red in upper part of 16-bit words
+ u168Temp2 = vshll_n_u8(u88G, 8); // shift green elements to top of 16-bit words
+ u168Temp = vsriq_n_u16(u168Temp, u168Temp2, 5); // shift green elements right and insert red elements
+ u168Temp2 = vshll_n_u8(u88B, 8); // shift blue elements to top of 16-bit words
+ u168Temp = vsriq_n_u16(u168Temp, u168Temp2, 11); // shift blue elements right and insert
+ if (ucPixelType == RGB565_BIG_ENDIAN) { // reverse the bytes
+ u168Temp = vreinterpretq_u16_u8(vrev16q_u8(vreinterpretq_u8_u16(u168Temp)));
+ }
+ vst1q_u16((uint16_t *)(pOutput+8), u168Temp); // top right block
+ // bottom left block
+ i168Temp = vqdmulhq_lane_s16(i168Crx2.val[0], i164Constants, 0); // Cr x 1.402
+ i168R = vaddq_s16(i168Temp, i168Y); // now we have 8 R values
+ i168Temp = vqdmulhq_lane_s16(i168Crx2.val[0], i164Constants, 1); // Cr x -0.71414
+ u88R = vqshrun_n_s16(i168R, 4); // narrow and saturate to 8-bit unsigned
+ i168G = vaddq_s16(i168Y, i168Temp);
+ i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[0], i164Constants, 2); // Cb x -0.34414
+ i168G = vaddq_s16(i168G, i168Temp); // now we have 8 G values
+ u88G = vqrshrun_n_s16(i168G, 4); // shift right, narrow and saturate to 8-bit unsigned
+ i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[0], i164Constants, 3); // Cb x -1.772
+ i168B = vaddq_s16(i168Y, i168Temp); // now we have 8 B values
+ i168Y = vreinterpretq_s16_u16(vshll_n_u8(vget_high_u8(u816YR), 4)); // widen and x16 to put on par with Cr/Cb values (bottom right block)
+ u88B = vqrshrun_n_s16(i168B, 4); // shift right, narrow and saturate to 8-bit unsigned
+ u168Temp = vshll_n_u8(u88R, 8); // place red in upper part of 16-bit words
+ u168Temp2 = vshll_n_u8(u88G, 8); // shift green elements to top of 16-bit words
+ u168Temp = vsriq_n_u16(u168Temp, u168Temp2, 5); // shift green elements right and insert red elements
+ u168Temp2 = vshll_n_u8(u88B, 8); // shift blue elements to top of 16-bit words
+ u168Temp = vsriq_n_u16(u168Temp, u168Temp2, 11); // shift blue elements right and insert
+ if (ucPixelType == RGB565_BIG_ENDIAN) { // reverse the bytes
+ u168Temp = vreinterpretq_u16_u8(vrev16q_u8(vreinterpretq_u8_u16(u168Temp)));
+ }
+ vst1q_u16((uint16_t *)(pOutput+iPitch), u168Temp); // bottom left block
+ // bottom right block
+ i168Temp = vqdmulhq_lane_s16(i168Crx2.val[1], i164Constants, 0); // Cr x 1.402
+ i168R = vaddq_s16(i168Temp, i168Y); // now we have 8 R values
+ i168Temp = vqdmulhq_lane_s16(i168Crx2.val[1], i164Constants, 1); // Cr x -0.71414
+ u88R = vqshrun_n_s16(i168R, 4); // narrow and saturate to 8-bit unsigned
+ i168G = vaddq_s16(i168Y, i168Temp);
+ i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[1], i164Constants, 2); // Cb x -0.34414
+ i168G = vaddq_s16(i168G, i168Temp); // now we have 8 G values
+ u88G = vqrshrun_n_s16(i168G, 4); // shift right, narrow and saturate to 8-bit unsigned
+ i168Temp = vqdmulhq_lane_s16(i168Cbx2.val[1], i164Constants, 3); // Cb x -1.772
+ i168B = vaddq_s16(i168Y, i168Temp); // now we have 8 B values
+ u88B = vqrshrun_n_s16(i168B, 4); // shift right, narrow and saturate to 8-bit unsigned
+ u168Temp = vshll_n_u8(u88R, 8); // place red in upper part of 16-bit words
+ u168Temp2 = vshll_n_u8(u88G, 8); // shift green elements to top of 16-bit words
+ u168Temp = vsriq_n_u16(u168Temp, u168Temp2, 5); // shift green elements right and insert red elements
+ u168Temp2 = vshll_n_u8(u88B, 8); // shift blue elements to top of 16-bit words
+ u168Temp = vsriq_n_u16(u168Temp, u168Temp2, 11); // shift blue elements right and insert
+ if (ucPixelType == RGB565_BIG_ENDIAN) { // reverse the bytes
+ u168Temp = vreinterpretq_u16_u8(vrev16q_u8(vreinterpretq_u8_u16(u168Temp)));
+ }
+ vst1q_u16((uint16_t *)(pOutput+iPitch+8), u168Temp); // bottom right block
+ // advance to next pair of lines
+ pCr += 8;
+ pCb += 8;
+ if (iRow == 3) // bottom 4 rows Y values are in 2 other MCUs
+ pY += 16 + 192; // skip to other 2 Y blocks
+ else
+ pY += 16;
+ pOutput += iPitch*2;
+ } // for each row
+ return;
+ } // 16bpp
+#endif // HAS_NEON
+
+#ifdef HAS_SSE
+// SSE2 version
+// R = Y + 1.40200 * Cr
+// G = Y - 0.34414 * Cb + 0.28586 * Cr - Cr
+// B = Y - 0.22800 * Cb + Cb + Cb
+
+ if (pJPEG->ucPixelType == RGB8888) {
+ __m128i mmxY, mmxCr, mmxCb, mmxTemp;
+ __m128i mmxTemp2, mmxR, mmxG, mmxB;
+ __m128i mmxConst1402, mmxConst0714, mmxConst0344, mmxConst1772;
+ mmxConst0344 = _mm_load_si128((__m128i *)&s0344[0]);
+ mmxConst1402 = _mm_load_si128((__m128i *)&s1402[0]);
+ mmxConst0714 = _mm_load_si128((__m128i *)&s0714[0]);
+ mmxConst1772 = _mm_load_si128((__m128i *)&s1772[0]);
+ iPitch *= 2; // destination is 32-bit values, not 16
+ for (iRow = 0; iRow<8; iRow++) // do 8 pairs of rows in 4 quadrants
+ {
+ // left block
+ mmxCr = _mm_loadl_epi64((__m128i *)pCr); // load 1 row of Cr
+ mmxCb = _mm_loadl_epi64((__m128i *)pCb); // load 1 row of Cb
+ mmxY = _mm_loadl_epi64((__m128i *)pY); // load 1 row of Y (top left block)
+ mmxTemp = _mm_cmpeq_epi16(mmxY, mmxY); // fix Cr/Cb values by subtracting 0x80
+ mmxTemp = _mm_slli_epi16 (mmxTemp, 15); // now has 0x8000, 0x8000...
+ mmxTemp2 = _mm_setzero_si128(); // zero it to use to set upper bits to 0
+ mmxCr = _mm_unpacklo_epi8 (mmxTemp2, mmxCr); // zero-extend 8 Cr values to 16-bits
+ mmxCb = _mm_unpacklo_epi8 (mmxTemp2, mmxCb); // zero-extend 8 Cb values to 16-bits (left shifted 8)
+ mmxY = _mm_unpacklo_epi8 (mmxY, mmxTemp2); // zero-extend 8 Y values to 16-bits
+ mmxY = _mm_slli_epi16(mmxY, 4); // x16 to put on par with Cr/Cb values
+ mmxCr = _mm_add_epi16(mmxCr, mmxTemp); // subtract 0x80
+ mmxCb = _mm_add_epi16(mmxCb, mmxTemp); // subtract 0x80
+ mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst1402); // almost ready with R
+ mmxR = _mm_add_epi16(_mm_unpacklo_epi16(mmxTemp, mmxTemp), mmxY); // now we have 8 R values
+ mmxR = _mm_srai_epi16(mmxR, 4);
+ mmxR = _mm_packus_epi16 (mmxR, mmxR); // i16->u8 bit and saturate
+ mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst0714); // Y-0.71414*Cr
+ mmxG = _mm_add_epi16(mmxY, _mm_unpacklo_epi16(mmxTemp, mmxTemp));
+ mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst0344);
+ mmxG = _mm_add_epi16(mmxG, _mm_unpacklo_epi16(mmxTemp, mmxTemp)); // now we have 8 G values
+ mmxG = _mm_srai_epi16(mmxG, 4);
+ mmxG = _mm_packus_epi16 (mmxG, mmxG); // i16->u8 bit and saturate
+ mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst1772);
+ mmxB = _mm_add_epi16(mmxY, _mm_unpacklo_epi16(mmxTemp, mmxTemp)); // now we have 8 B values
+ mmxB = _mm_srai_epi16(mmxB, 4);
+ mmxB = _mm_packus_epi16 (mmxB, mmxB); // i16->u8 bit and saturate
+ mmxTemp = _mm_cmpeq_epi16(mmxTemp, mmxTemp); // Alpha set to FFFF
+ mmxY = _mm_unpacklo_epi8(mmxB, mmxG); // interleave 8 B's and 8 G's
+ mmxTemp2 = _mm_unpacklo_epi8(mmxR, mmxTemp); // interlave 8 R's and 8 A's
+ mmxTemp = _mm_unpacklo_epi16(mmxY, mmxTemp2); // interleave 4 BG's and 4 RA's
+ mmxTemp2 = _mm_unpackhi_epi16(mmxY, mmxTemp2); // interleave 4 BG's and 4 RA's
+ // store first row of pair
+ _mm_storeu_si128((__m128i *)pOutput, mmxTemp); // write 4 RGBA pixels
+ _mm_storeu_si128((__m128i *)(pOutput+8), mmxTemp2); // write 4 RGBA pixels
+ // second row of left block
+ mmxY = _mm_loadl_epi64((__m128i *)(pY+8)); // load 1 row of Y (top left block)
+ mmxTemp2 = _mm_setzero_si128(); // zero it to use to set upper bits to 0
+ mmxY = _mm_unpacklo_epi8 (mmxY, mmxTemp2); // zero-extend 8 Y values to 16-bits
+ mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst1402); // almost ready with R
+ mmxY = _mm_slli_epi16(mmxY, 4); // x16 to put on par with Cr/Cb values
+ mmxR = _mm_add_epi16(_mm_unpacklo_epi16(mmxTemp, mmxTemp), mmxY); // now we have 8 R values
+ mmxR = _mm_srai_epi16(mmxR, 4);
+ mmxR = _mm_packus_epi16 (mmxR, mmxR); // i16->u8 bit and saturate
+ mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst0714); // Y-0.71414*Cr
+ mmxG = _mm_add_epi16(mmxY, _mm_unpacklo_epi16(mmxTemp, mmxTemp));
+ mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst0344); // Y -= 0.34414*Cb
+ mmxG = _mm_add_epi16(mmxG, _mm_unpacklo_epi16(mmxTemp, mmxTemp)); // now we have 8 G values
+ mmxG = _mm_srai_epi16(mmxG, 4);
+ mmxG = _mm_packus_epi16 (mmxG, mmxG); // i16->u8 bit and saturate
+ mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst1772); // B = Y - 1.772*Cb
+ mmxB = _mm_add_epi16(mmxY, _mm_unpacklo_epi16(mmxTemp, mmxTemp)); // now we have 8 B values
+ mmxB = _mm_srai_epi16(mmxB, 4);
+ mmxB = _mm_packus_epi16 (mmxB, mmxB); // i16->u8 bit and saturate
+ mmxTemp = _mm_cmpeq_epi16(mmxTemp, mmxTemp); // Alpha set to FFFF
+ mmxY = _mm_unpacklo_epi8(mmxB, mmxG); // interleave 8 B's and 8 G's
+ mmxTemp2 = _mm_unpacklo_epi8(mmxR, mmxTemp); // interlave 8 R's and 8 A's
+ mmxTemp = _mm_unpacklo_epi16(mmxY, mmxTemp2); // interleave 4 BG's and 4 RA's
+ mmxTemp2 = _mm_unpackhi_epi16(mmxY, mmxTemp2); // interleave 4 BG's and 4 RA's
+ // store second row of pair
+ _mm_storeu_si128((__m128i *)(pOutput+iPitch), mmxTemp); // write 4 RGBA pixels
+ _mm_storeu_si128((__m128i *)(pOutput+iPitch+8), mmxTemp2); // write 4 RGBA pixels
+ // right block
+ mmxY = _mm_loadl_epi64((__m128i *)(pY+128)); // load 1 row of Y (right block)
+ mmxTemp2 = _mm_setzero_si128(); // zero it to use to set upper bits to 0
+ mmxY = _mm_unpacklo_epi8 (mmxY, mmxTemp2); // zero-extend 8 Y values to 16-bits
+ mmxY = _mm_slli_epi16(mmxY, 4); // x16 to put on par with Cr/Cb values
+ mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst1402); // almost ready with R
+ mmxR = _mm_add_epi16(_mm_unpackhi_epi16(mmxTemp, mmxTemp), mmxY); // now we have 8 R values
+ mmxR = _mm_srai_epi16(mmxR, 4);
+ mmxR = _mm_packus_epi16 (mmxR, mmxR); // i16->u8 bit and saturate
+ mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst0714); // Y-0.71414*Cr
+ mmxG = _mm_add_epi16(mmxY, _mm_unpackhi_epi16(mmxTemp, mmxTemp));
+ mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst0344);
+ mmxG = _mm_add_epi16(mmxG, _mm_unpackhi_epi16(mmxTemp, mmxTemp)); // now we have 8 G values
+ mmxG = _mm_srai_epi16(mmxG, 4);
+ mmxG = _mm_packus_epi16 (mmxG, mmxG); // i16->u8 bit and saturate
+ mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst1772);
+ mmxB = _mm_add_epi16(mmxY, _mm_unpackhi_epi16(mmxTemp, mmxTemp)); // now we have 8 B values
+ mmxB = _mm_srai_epi16(mmxB, 4);
+ mmxB = _mm_packus_epi16 (mmxB, mmxB); // i16->u8 bit and saturate
+ mmxTemp = _mm_cmpeq_epi16(mmxTemp, mmxTemp); // Alpha set to FFFF
+ mmxY = _mm_unpacklo_epi8(mmxB, mmxG); // interleave 8 B's and 8 G's
+ mmxTemp2 = _mm_unpacklo_epi8(mmxR, mmxTemp); // interlave 8 R's and 8 A's
+ mmxTemp = _mm_unpacklo_epi16(mmxY, mmxTemp2); // interleave 4 BG's and 4 RA's
+ mmxTemp2 = _mm_unpackhi_epi16(mmxY, mmxTemp2); // interleave 4 BG's and 4 RA's
+ // store first row of right block
+ _mm_storeu_si128((__m128i *)(pOutput+16), mmxTemp); // write 4 RGBA pixels
+ _mm_storeu_si128((__m128i *)(pOutput+24), mmxTemp2); // write 4 RGBA pixels
+ // prepare second row of right block
+ mmxY = _mm_loadl_epi64((__m128i *)(pY+136)); // load 1 row of Y (right block)
+ mmxTemp2 = _mm_setzero_si128(); // zero it to use to set upper bits to 0
+ mmxY = _mm_unpacklo_epi8 (mmxY, mmxTemp2); // zero-extend 8 Y values to 16-bits
+ mmxY = _mm_slli_epi16(mmxY, 4); // x16 to put on par with Cr/Cb values
+ mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst1402); // almost ready with R
+ mmxR = _mm_add_epi16(_mm_unpackhi_epi16(mmxTemp, mmxTemp), mmxY); // now we have 8 R values
+ mmxR = _mm_srai_epi16(mmxR, 4);
+ mmxR = _mm_packus_epi16 (mmxR, mmxR); // i16->u8 bit and saturate
+ mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst0714); // Y-0.71414*Cr
+ mmxG = _mm_add_epi16(mmxY, _mm_unpackhi_epi16(mmxTemp, mmxTemp));
+ mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst0344);
+ mmxG = _mm_add_epi16(mmxG, _mm_unpackhi_epi16(mmxTemp, mmxTemp)); // now we have 8 G values
+ mmxG = _mm_srai_epi16(mmxG, 4);
+ mmxG = _mm_packus_epi16 (mmxG, mmxG); // i16->u8 bit and saturate
+ mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst1772);
+ mmxB = _mm_add_epi16(mmxY, _mm_unpackhi_epi16(mmxTemp, mmxTemp)); // now we have 8 B values
+ mmxB = _mm_srai_epi16(mmxB, 4);
+ mmxB = _mm_packus_epi16 (mmxB, mmxB); // i16->u8 bit and saturate
+ mmxTemp = _mm_cmpeq_epi16(mmxTemp, mmxTemp); // Alpha set to FFFF
+ mmxY = _mm_unpacklo_epi8(mmxB, mmxG); // interleave 8 B's and 8 G's
+ mmxTemp2 = _mm_unpacklo_epi8(mmxR, mmxTemp); // interlave 8 R's and 8 A's
+ mmxTemp = _mm_unpacklo_epi16(mmxY, mmxTemp2); // interleave 4 BG's and 4 RA's
+ mmxTemp2 = _mm_unpackhi_epi16(mmxY, mmxTemp2); // interleave 4 BG's and 4 RA's
+ // store second row of right block
+ _mm_storeu_si128((__m128i *)(pOutput+iPitch+16), mmxTemp); // write 4 RGBA pixels
+ _mm_storeu_si128((__m128i *)(pOutput+iPitch+24), mmxTemp2); // write 4 RGBA pixels
+
+ pOutput += iPitch*2;
+ pCr += 8;
+ pCb += 8;
+ if (iRow == 3) // bottom 4 rows Y values are in 2 other MCUs
+ pY += 16 + 192; // skip to other 2 Y blocks
+ else
+ pY += 16;
+ } // for each row
+ return;
+ } else { // 16-bit pixels
+ __m128i mmxY, mmxCr, mmxCb, mmxTemp;
+ __m128i mmxTemp2, mmxR, mmxG, mmxB;
+ __m128i mmxConst1402, mmxConst0714, mmxConst0344, mmxConst1772;
+ mmxConst0344 = _mm_load_si128((__m128i *)&s0344[0]);
+ mmxConst1402 = _mm_load_si128((__m128i *)&s1402[0]);
+ mmxConst0714 = _mm_load_si128((__m128i *)&s0714[0]);
+ mmxConst1772 = _mm_load_si128((__m128i *)&s1772[0]);
+ for (iRow = 0; iRow<8; iRow++) // do 8 pairs of rows in 4 quadrants
+ {
+ // left block
+ mmxCr = _mm_loadl_epi64((__m128i *)pCr); // load 1 row of Cr
+ mmxCb = _mm_loadl_epi64((__m128i *)pCb); // load 1 row of Cb
+ mmxY = _mm_loadl_epi64((__m128i *)pY); // load 1 row of Y (top left block)
+ mmxTemp = _mm_cmpeq_epi16(mmxY, mmxY); // fix Cr/Cb values by subtracting 0x80
+ mmxTemp = _mm_slli_epi16 (mmxTemp, 7); // now has 0xff80, 0xff80...
+ mmxTemp2 = _mm_setzero_si128(); // zero it to use to set upper bits to 0
+ mmxCr = _mm_unpacklo_epi8 (mmxCr, mmxTemp2); // zero-extend 8 Cr values to 16-bits
+ mmxCb = _mm_unpacklo_epi8 (mmxCb, mmxTemp2); // zero-extend 8 Cb values to 16-bits
+ mmxY = _mm_unpacklo_epi8 (mmxY, mmxTemp2); // zero-extend 8 Y values to 16-bits
+ mmxY = _mm_slli_epi16(mmxY, 4); // x16 to put on par with Cr/Cb values
+ mmxCr = _mm_add_epi16(mmxCr, mmxTemp); // subtract 0x80
+ mmxCb = _mm_add_epi16(mmxCb, mmxTemp); // subtract 0x80
+ mmxCr = _mm_slli_epi16(mmxCr, 8); // put in top half of 16-bits
+ mmxCb = _mm_slli_epi16(mmxCb, 8); // put in top half of 16-bits
+ mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst1402); // almost ready with R
+ mmxR = _mm_add_epi16(_mm_unpacklo_epi16(mmxTemp, mmxTemp), mmxY); // now we have 8 R values
+ mmxR = _mm_srai_epi16(mmxR, 4);
+ mmxR = _mm_packus_epi16 (mmxR, mmxR); // i16->u8 bit and saturate
+ mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst0714); // Y-0.71414*Cr
+ mmxG = _mm_add_epi16(mmxY, _mm_unpacklo_epi16(mmxTemp, mmxTemp));
+ mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst0344); // Y -= 0.34414*Cb
+ mmxG = _mm_add_epi16(mmxG, _mm_unpacklo_epi16(mmxTemp, mmxTemp)); // now we have 8 G values
+ mmxG = _mm_srai_epi16(mmxG, 4);
+ mmxG = _mm_packus_epi16 (mmxG, mmxG); // i16->u8 bit and saturate
+ mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst1772); // B = Y - 1.772*Cb
+ mmxB = _mm_add_epi16(mmxY, _mm_unpacklo_epi16(mmxTemp, mmxTemp)); // now we have 8 B values
+ mmxB = _mm_srai_epi16(mmxB, 4);
+ mmxB = _mm_packus_epi16 (mmxB, mmxB); // i16->u8 bit and saturate
+ mmxTemp = _mm_setzero_si128(); // interleave with 0 to get back to 16-bit values
+ mmxR = _mm_unpacklo_epi8(mmxR, mmxTemp); // zero-extend to 16-bits again
+ mmxB = _mm_unpacklo_epi8(mmxB, mmxTemp);
+ mmxG = _mm_unpacklo_epi8(mmxG, mmxTemp);
+ mmxR = _mm_srli_epi16(mmxR, 3); // reduce to 5-bits
+ mmxR = _mm_slli_epi16(mmxR, 11); // set in proper position
+ mmxB = _mm_srli_epi16(mmxB, 3); // reduce to 5-bits
+ mmxG = _mm_srli_epi16(mmxG, 2); // reduce to 6-bits
+ mmxG = _mm_slli_epi16(mmxG, 5); // set in proper position
+ mmxTemp = _mm_or_si128(mmxR, mmxG); // R+G
+ mmxTemp = _mm_or_si128(mmxTemp, mmxB); // R+G+B
+ // store first row of pair
+ _mm_storeu_si128((__m128i *)pOutput, mmxTemp); // write 8 RGB565 pixels
+ // second row of left block
+ mmxY = _mm_loadl_epi64((__m128i *)(pY+8)); // load 1 row of Y (top left block)
+ mmxTemp2 = _mm_setzero_si128(); // zero it to use to set upper bits to 0
+ mmxY = _mm_unpacklo_epi8 (mmxY, mmxTemp2); // zero-extend 8 Y values to 16-bits
+ mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst1402); // almost ready with R
+ mmxY = _mm_slli_epi16(mmxY, 4); // x16 to put on par with Cr/Cb values
+ mmxR = _mm_add_epi16(_mm_unpacklo_epi16(mmxTemp, mmxTemp), mmxY); // now we have 8 R values
+ mmxR = _mm_srai_epi16(mmxR, 4);
+ mmxR = _mm_packus_epi16 (mmxR, mmxR); // i16->u8 bit and saturate
+ mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst0714); // Y-0.71414*Cr
+ mmxG = _mm_add_epi16(mmxY, _mm_unpacklo_epi16(mmxTemp, mmxTemp));
+ mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst0344);
+ mmxG = _mm_add_epi16(mmxG, _mm_unpacklo_epi16(mmxTemp, mmxTemp)); // now we have 8 G values
+ mmxG = _mm_srai_epi16(mmxG, 4);
+ mmxG = _mm_packus_epi16 (mmxG, mmxG); // i16->u8 bit and saturate
+ mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst1772); // B = Y - 1.772*Cb
+ mmxB = _mm_add_epi16(mmxY, _mm_unpacklo_epi16(mmxTemp, mmxTemp)); // now we have 8 B values
+ mmxB = _mm_srai_epi16(mmxB, 4);
+ mmxB = _mm_packus_epi16 (mmxB, mmxB); // i16->u8 bit and saturate
+ mmxTemp = _mm_setzero_si128(); // interleave with 0 to get back to 16-bit values
+ mmxR = _mm_unpacklo_epi8(mmxR, mmxTemp); // zero-extend to 16-bits again
+ mmxB = _mm_unpacklo_epi8(mmxB, mmxTemp);
+ mmxG = _mm_unpacklo_epi8(mmxG, mmxTemp);
+ mmxR = _mm_srli_epi16(mmxR, 3); // reduce to 5-bits
+ mmxR = _mm_slli_epi16(mmxR, 11); // set in proper position
+ mmxB = _mm_srli_epi16(mmxB, 3); // reduce to 5-bits
+ mmxG = _mm_srli_epi16(mmxG, 2); // reduce to 6-bits
+ mmxG = _mm_slli_epi16(mmxG, 5); // set in proper position
+ mmxTemp = _mm_or_si128(mmxR, mmxG); // R+G
+ mmxTemp = _mm_or_si128(mmxTemp, mmxB); // R+G+B
+ // store second row of pair
+ _mm_storeu_si128((__m128i *)(pOutput+iPitch), mmxTemp); // write 8 RGB565 pixels
+ // right block
+ mmxY = _mm_loadl_epi64((__m128i *)(pY+128)); // load 1 row of Y (right block)
+ mmxTemp2 = _mm_setzero_si128(); // zero it to use to set upper bits to 0
+ mmxY = _mm_unpacklo_epi8 (mmxY, mmxTemp2); // zero-extend 8 Y values to 16-bits
+ mmxY = _mm_slli_epi16(mmxY, 4); // x16 to put on par with Cr/Cb values
+ mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst1402); // almost ready with R
+ mmxR = _mm_add_epi16(_mm_unpackhi_epi16(mmxTemp, mmxTemp), mmxY); // now we have 8 R values
+ mmxR = _mm_srai_epi16(mmxR, 4);
+ mmxR = _mm_packus_epi16 (mmxR, mmxR); // i16->u8 bit and saturate
+ mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst0714); // Y-0.71414*Cr
+ mmxG = _mm_add_epi16(mmxY, _mm_unpackhi_epi16(mmxTemp, mmxTemp));
+ mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst0344); // Y -= 0.34414*Cb
+ mmxG = _mm_add_epi16(mmxG, _mm_unpackhi_epi16(mmxTemp, mmxTemp)); // now we have 8 G values
+ mmxG = _mm_srai_epi16(mmxG, 4);
+ mmxG = _mm_packus_epi16 (mmxG, mmxG); // i16->u8 bit and saturate
+ mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst1772); // B = Y - 1.772*Cb
+ mmxB = _mm_add_epi16(mmxY, _mm_unpackhi_epi16(mmxTemp, mmxTemp)); // now we have 8 B values
+ mmxB = _mm_srai_epi16(mmxB, 4);
+ mmxB = _mm_packus_epi16 (mmxB, mmxB); // i16->u8 bit and saturate
+ mmxTemp = _mm_setzero_si128(); // interleave with 0 to get back to 16-bit values
+ mmxR = _mm_unpacklo_epi8(mmxR, mmxTemp); // zero-extend to 16-bits again
+ mmxB = _mm_unpacklo_epi8(mmxB, mmxTemp);
+ mmxG = _mm_unpacklo_epi8(mmxG, mmxTemp);
+ mmxR = _mm_srli_epi16(mmxR, 3); // reduce to 5-bits
+ mmxR = _mm_slli_epi16(mmxR, 11); // set in proper position
+ mmxB = _mm_srli_epi16(mmxB, 3); // reduce to 5-bits
+ mmxG = _mm_srli_epi16(mmxG, 2); // reduce to 6-bits
+ mmxG = _mm_slli_epi16(mmxG, 5); // set in proper position
+ mmxTemp = _mm_or_si128(mmxR, mmxG); // R+G
+ mmxTemp = _mm_or_si128(mmxTemp, mmxB); // R+G+B
+ // store first row of right block
+ _mm_storeu_si128((__m128i *)(pOutput+16), mmxTemp); // write 8 RGB565 pixels
+ // prepare second row of right block
+ mmxY = _mm_loadl_epi64((__m128i *)(pY+136)); // load 1 row of Y (right block)
+ mmxTemp2 = _mm_setzero_si128(); // zero it to use to set upper bits to 0
+ mmxY = _mm_unpacklo_epi8 (mmxY, mmxTemp2); // zero-extend 8 Y values to 16-bits
+ mmxY = _mm_slli_epi16(mmxY, 4); // x16 to put on par with Cr/Cb values
+ mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst1402); // almost ready with R
+ mmxR = _mm_add_epi16(_mm_unpackhi_epi16(mmxTemp, mmxTemp), mmxY); // now we have 8 R values
+ mmxR = _mm_srai_epi16(mmxR, 4);
+ mmxR = _mm_packus_epi16 (mmxR, mmxR); // i16->u8 bit and saturate
+ mmxTemp = _mm_mulhi_epi16(mmxCr, mmxConst0714); // Y-0.71414*Cr
+ mmxG = _mm_add_epi16(mmxY, _mm_unpackhi_epi16(mmxTemp, mmxTemp));
+ mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst0344);
+ mmxG = _mm_add_epi16(mmxG, _mm_unpackhi_epi16(mmxTemp, mmxTemp)); // now we have 8 G values
+ mmxG = _mm_srai_epi16(mmxG, 4);
+ mmxG = _mm_packus_epi16 (mmxG, mmxG); // i16->u8 bit and saturate
+ mmxTemp = _mm_mulhi_epi16(mmxCb, mmxConst1772); // B = Y - 1.772*Cb
+ mmxB = _mm_add_epi16(mmxY, _mm_unpackhi_epi16(mmxTemp, mmxTemp)); // now we have 8 B values
+ mmxB = _mm_srai_epi16(mmxB, 4);
+ mmxB = _mm_packus_epi16 (mmxB, mmxB); // i16->u8 bit and saturate
+ mmxTemp = _mm_setzero_si128(); // interleave with 0 to get back to 16-bit values
+ mmxR = _mm_unpacklo_epi8(mmxR, mmxTemp); // zero-extend to 16-bits again
+ mmxB = _mm_unpacklo_epi8(mmxB, mmxTemp);
+ mmxG = _mm_unpacklo_epi8(mmxG, mmxTemp);
+ mmxR = _mm_srli_epi16(mmxR, 3); // reduce to 5-bits
+ mmxR = _mm_slli_epi16(mmxR, 11); // set in proper position
+ mmxB = _mm_srli_epi16(mmxB, 3); // reduce to 5-bits
+ mmxG = _mm_srli_epi16(mmxG, 2); // reduce to 6-bits
+ mmxG = _mm_slli_epi16(mmxG, 5); // set in proper position
+ mmxTemp = _mm_or_si128(mmxR, mmxG); // R+G
+ mmxTemp = _mm_or_si128(mmxTemp, mmxB); // R+G+B
+ // store second row of right block
+ _mm_storeu_si128((__m128i *)(pOutput+16+iPitch), mmxTemp); // write 8 RGB565 pixels
+
+ pOutput += iPitch*2;
+ pCr += 8;
+ pCb += 8;
+ if (iRow == 3) // bottom 4 rows Y values are in 2 other MCUs
+ pY += 16 + 192; // skip to other 2 Y blocks
+ else
+ pY += 16;
+ } // for each row
+ return;
+ } // 16bpp
+#endif // HAS_SSE
+ /* Reference C code */
+ /* Convert YCC pixels into RGB pixels and store in output image */
+ iYCount = 4;
+ bUseOdd1 = bUseOdd2 = 1; // assume odd column can be used
+ if ((x+15) >= pJPEG->iWidth)
+ {
+ iCol = (((pJPEG->iWidth & 15)+1) >> 1);
+ if (iCol >= 4)
+ {
+ iXCount1 = 4;
+ iXCount2 = iCol-4;
+ if (pJPEG->iWidth & 1 && (iXCount2 * 2) + 8 + (x * 16) > pJPEG->iWidth)
+ bUseOdd2 = 0;
+ }
+ else
+ {
+ iXCount1 = iCol;
+ iXCount2 = 0;
+ if (pJPEG->iWidth & 1 && (iXCount1 * 2) + (x * 16) > pJPEG->iWidth)
+ bUseOdd1 = 0;
+ }
+ }
+ else
+ iXCount1 = iXCount2 = 4;
+ for (iRow=0; iRowucPixelType == RGB565_LITTLE_ENDIAN)
+ {
+ if (bUseOdd1 || iCol != (iXCount1-1)) // only render if it won't go off the right edge
+ {
+ JPEGPixel2LE(pOutput + (iCol<<1), Y1, Y2, Cb, Cr);
+ JPEGPixel2LE(pOutput+iPitch + (iCol<<1), Y3, Y4, Cb, Cr);
+ }
+ else
+ {
+ JPEGPixelLE(pOutput + (iCol<<1), Y1, Cb, Cr);
+ JPEGPixelLE(pOutput+iPitch + (iCol<<1), Y3, Cb, Cr);
+ }
+ }
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ {
+ if (bUseOdd1 || iCol != (iXCount1-1)) // only render if it won't go off the right edge
+ {
+ JPEGPixel2BE(pOutput + (iCol<<1), Y1, Y2, Cb, Cr);
+ JPEGPixel2BE(pOutput+iPitch + (iCol<<1), Y3, Y4, Cb, Cr);
+ }
+ else
+ {
+ JPEGPixelBE(pOutput + (iCol<<1), Y1, Cb, Cr);
+ JPEGPixelBE(pOutput+iPitch + (iCol<<1), Y3, Cb, Cr);
+ }
+ } else { // RGB8888
+ if (bUseOdd1 || iCol != (iXCount1-1)) // only render if it won't go off the right edge
+ {
+ JPEGPixel2RGB((uint32_t *)&pOutput[iCol<<2], Y1, Y2, Cb, Cr);
+ JPEGPixel2RGB((uint32_t *)&pOutput[2*(iPitch + (iCol<<1))], Y3, Y4, Cb, Cr);
+ }
+ else
+ {
+ JPEGPixelRGB((uint32_t *)&pOutput[iCol<<2], Y1, Cb, Cr);
+ JPEGPixelRGB((uint32_t *)&pOutput[(iPitch + (iCol<<1))*2], Y3, Cb, Cr);
+ }
+ } // RGB8888
+ // for top right block
+ if (iCol < iXCount2)
+ {
+ Y1 = pY[iCol*2+DCTSIZE*2];
+ Y2 = pY[iCol*2+1+DCTSIZE*2];
+ Y3 = pY[iCol*2+8+DCTSIZE*2];
+ Y4 = pY[iCol*2+9+DCTSIZE*2];
+ Y1 <<= 12; // scale to level of conversion table
+ Y2 <<= 12;
+ Y3 <<= 12;
+ Y4 <<= 12;
+ Cb = pCb[iCol+4];
+ Cr = pCr[iCol+4];
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ {
+ if (bUseOdd2 || iCol != (iXCount2-1)) // only render if it won't go off the right edge
+ {
+ JPEGPixel2LE(pOutput + 8+(iCol<<1), Y1, Y2, Cb, Cr);
+ JPEGPixel2LE(pOutput+iPitch + 8+(iCol<<1), Y3, Y4, Cb, Cr);
+ }
+ else
+ {
+ JPEGPixelLE(pOutput+ 8+(iCol<<1), Y1, Cb, Cr);
+ JPEGPixelLE(pOutput+iPitch+ 8+(iCol<<1), Y3, Cb, Cr);
+ }
+ }
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ {
+ if (bUseOdd2 || iCol != (iXCount2-1)) // only render if it won't go off the right edge
+ {
+ JPEGPixel2BE(pOutput + 8+(iCol<<1), Y1, Y2, Cb, Cr);
+ JPEGPixel2BE(pOutput+iPitch + 8+(iCol<<1), Y3, Y4, Cb, Cr);
+ }
+ else
+ {
+ JPEGPixelBE(pOutput+ 8+(iCol<<1), Y1, Cb, Cr);
+ JPEGPixelBE(pOutput+iPitch+ 8+(iCol<<1), Y3, Cb, Cr);
+ }
+ } else { // RGB8888
+ if (bUseOdd2 || iCol != (iXCount2-1)) // only render if it won't go off the right edge
+ {
+ JPEGPixel2RGB((uint32_t *)&pOutput[16+(iCol<<2)], Y1, Y2, Cb, Cr);
+ JPEGPixel2RGB((uint32_t *)&pOutput[2*(iPitch + 8+(iCol<<1))], Y3, Y4, Cb, Cr);
+ }
+ else
+ {
+ JPEGPixelRGB((uint32_t *)&pOutput[16+(iCol<<2)], Y1, Cb, Cr);
+ JPEGPixelRGB((uint32_t *)&pOutput[2*(iPitch+ 8+(iCol<<1))], Y3, Cb, Cr);
+ }
+ } // RGB8888
+ }
+ // for bottom left block
+ Y1 = pY[iCol*2+DCTSIZE*4];
+ Y2 = pY[iCol*2+1+DCTSIZE*4];
+ Y3 = pY[iCol*2+8+DCTSIZE*4];
+ Y4 = pY[iCol*2+9+DCTSIZE*4];
+ Y1 <<= 12; // scale to level of conversion table
+ Y2 <<= 12;
+ Y3 <<= 12;
+ Y4 <<= 12;
+ Cb = pCb[iCol+32];
+ Cr = pCr[iCol+32];
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ {
+ if (bUseOdd1 || iCol != (iXCount1-1)) // only render if it won't go off the right edge
+ {
+ JPEGPixel2LE(pOutput+iPitch*8+ (iCol<<1), Y1, Y2, Cb, Cr);
+ JPEGPixel2LE(pOutput+iPitch*9+ (iCol<<1), Y3, Y4, Cb, Cr);
+ }
+ else
+ {
+ JPEGPixelLE(pOutput+iPitch*8+ (iCol<<1), Y1, Cb, Cr);
+ JPEGPixelLE(pOutput+iPitch*9+ (iCol<<1), Y3, Cb, Cr);
+ }
+ }
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ {
+ if (bUseOdd1 || iCol != (iXCount1-1)) // only render if it won't go off the right edge
+ {
+ JPEGPixel2BE(pOutput+iPitch*8+ (iCol<<1), Y1, Y2, Cb, Cr);
+ JPEGPixel2BE(pOutput+iPitch*9+ (iCol<<1), Y3, Y4, Cb, Cr);
+ }
+ else
+ {
+ JPEGPixelBE(pOutput+iPitch*8+ (iCol<<1), Y1, Cb, Cr);
+ JPEGPixelBE(pOutput+iPitch*9+ (iCol<<1), Y3, Cb, Cr);
+ }
+ } else { // RGB8888
+ if (bUseOdd1 || iCol != (iXCount1-1)) // only render if it won't go off the right edge
+ {
+ JPEGPixel2RGB((uint32_t *)&pOutput[2*(iPitch*8+ (iCol<<1))], Y1, Y2, Cb, Cr);
+ JPEGPixel2RGB((uint32_t *)&pOutput[2*(iPitch*9+ (iCol<<1))], Y3, Y4, Cb, Cr);
+ }
+ else
+ {
+ JPEGPixelRGB((uint32_t *)&pOutput[2*(iPitch*8+(iCol<<1))], Y1, Cb, Cr);
+ JPEGPixelRGB((uint32_t *)&pOutput[2*(iPitch*9+ (iCol<<1))], Y3, Cb, Cr);
+ }
+ } // RGB8888
+ // for bottom right block
+ if (iCol < iXCount2)
+ {
+ Y1 = pY[iCol*2+DCTSIZE*6];
+ Y2 = pY[iCol*2+1+DCTSIZE*6];
+ Y3 = pY[iCol*2+8+DCTSIZE*6];
+ Y4 = pY[iCol*2+9+DCTSIZE*6];
+ Y1 <<= 12; // scale to level of conversion table
+ Y2 <<= 12;
+ Y3 <<= 12;
+ Y4 <<= 12;
+ Cb = pCb[iCol+36];
+ Cr = pCr[iCol+36];
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ {
+ if (bUseOdd2 || iCol != (iXCount2-1)) // only render if it won't go off the right edge
+ {
+ JPEGPixel2LE(pOutput+iPitch*8+ 8+(iCol<<1), Y1, Y2, Cb, Cr);
+ JPEGPixel2LE(pOutput+iPitch*9+ 8+(iCol<<1), Y3, Y4, Cb, Cr);
+ }
+ else
+ {
+ JPEGPixelLE(pOutput+iPitch*8+ 8+(iCol<<1), Y1, Cb, Cr);
+ JPEGPixelLE(pOutput+iPitch*9+ 8+(iCol<<1), Y3, Cb, Cr);
+ }
+ }
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ {
+ if (bUseOdd2 || iCol != (iXCount2-1)) // only render if it won't go off the right edge
+ {
+ JPEGPixel2BE(pOutput+iPitch*8+ 8+(iCol<<1), Y1, Y2, Cb, Cr);
+ JPEGPixel2BE(pOutput+iPitch*9+ 8+(iCol<<1), Y3, Y4, Cb, Cr);
+ }
+ else
+ {
+ JPEGPixelBE(pOutput+iPitch*8+ 8+(iCol<<1), Y1, Cb, Cr);
+ JPEGPixelBE(pOutput+iPitch*9+ 8+(iCol<<1), Y3, Cb, Cr);
+ }
+ } else { // RGB8888
+ if (bUseOdd2 || iCol != (iXCount2-1)) // only render if it won't go off the right edge
+ {
+ JPEGPixel2RGB((uint32_t *)&pOutput[2*(iPitch*8+ 8+(iCol<<1))], Y1, Y2, Cb, Cr);
+ JPEGPixel2RGB((uint32_t *)&pOutput[2*(iPitch*9+ 8+(iCol<<1))], Y3, Y4, Cb, Cr);
+ }
+ else
+ {
+ JPEGPixelRGB((uint32_t *)&pOutput[2*(iPitch*8+ 8+(iCol<<1))], Y1, Cb, Cr);
+ JPEGPixelRGB((uint32_t *)&pOutput[2*(iPitch*9+ 8+(iCol<<1))], Y3, Cb, Cr);
+ }
+ } // RGB8888
+ }
+ } // for each column
+ pY += 16; // skip to next line of source pixels
+ pCb += 8;
+ pCr += 8;
+ pOutput += iPitch*2;
+ if (pJPEG->ucPixelType == RGB8888) {
+ pOutput += iPitch*2;
+ }
+ }
+} /* JPEGPutMCU22() */
+
+static void JPEGPutMCU12(JPEGIMAGE *pJPEG, int x, int iPitch)
+{
+ uint32_t Cr,Cb;
+ signed int Y1, Y2;
+ int iRow, iCol, iXCount, iYCount;
+ uint8_t *pY, *pCr, *pCb;
+ uint16_t *pOutput = &pJPEG->usPixels[x];
+
+ if (pJPEG->ucPixelType == RGB8888) {
+ pOutput += x; // 4 bytes per pixel, not 2
+ }
+
+ pY = (uint8_t *)&pJPEG->sMCUs[0*DCTSIZE];
+ pCb = (uint8_t *)&pJPEG->sMCUs[2*DCTSIZE];
+ pCr = (uint8_t *)&pJPEG->sMCUs[3*DCTSIZE];
+
+ if (pJPEG->iOptions & JPEG_SCALE_HALF)
+ {
+ for (iRow=0; iRow<8; iRow++)
+ {
+ for (iCol=0; iCol<4; iCol++)
+ {
+ Y1 = (pY[0] + pY[1] + pY[8] + pY[9]) << 10;
+ Cb = (pCb[0] + pCb[1] + 1) >> 1;
+ Cr = (pCr[0] + pCr[1] + 1) >> 1;
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ JPEGPixelLE(pOutput+iCol, Y1, Cb, Cr);
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ JPEGPixelBE(pOutput+iCol, Y1, Cb, Cr);
+ else
+ JPEGPixelRGB((uint32_t *)&pOutput[iCol*2], Y1, Cb, Cr);
+ pCb += 2;
+ pCr += 2;
+ pY += 2;
+ }
+ pY += 8;
+ if (iRow == 3) // skip to next Y MCU block
+ pY += 64;
+ pOutput += (pJPEG->ucPixelType == RGB8888) ? iPitch*2 : iPitch;
+ }
+ return;
+ }
+ if (pJPEG->iOptions & JPEG_SCALE_EIGHTH)
+ {
+ Y1 = pY[0] << 12;
+ Y2 = pY[DCTSIZE*2] << 12;
+ Cb = pCb[0];
+ Cr = pCr[0];
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ {
+ JPEGPixelLE(pOutput, Y1, Cb, Cr);
+ JPEGPixelLE(pOutput + iPitch, Y2, Cb, Cr);
+ }
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ {
+ JPEGPixelBE(pOutput, Y1, Cb, Cr);
+ JPEGPixelBE(pOutput + iPitch, Y2, Cb, Cr);
+ }
+ else { // RGB8888
+ JPEGPixelRGB((uint32_t *)pOutput, Y1, Cb, Cr);
+ JPEGPixelRGB((uint32_t *)&pOutput[iPitch*2], Y2, Cb, Cr);
+ }
+ return;
+ }
+ if (pJPEG->iOptions & JPEG_SCALE_QUARTER)
+ { // draw a 2x4 block
+ Y1 = pY[0] << 12;
+ Y2 = pY[2] << 12;
+ Cb = pCb[0];
+ Cr = pCr[0];
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ {
+ JPEGPixelLE(pOutput, Y1, Cb, Cr);
+ JPEGPixelLE(pOutput + iPitch, Y2, Cb, Cr);
+ }
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ {
+ JPEGPixelBE(pOutput, Y1, Cb, Cr);
+ JPEGPixelBE(pOutput + iPitch, Y2, Cb, Cr);
+ } else { // RGB8888
+ JPEGPixelRGB((uint32_t *)&pOutput, Y1, Cb, Cr);
+ JPEGPixelRGB((uint32_t *)&pOutput[iPitch*2], Y2, Cb, Cr);
+ }
+ Y1 = pY[1] << 12;
+ Y2 = pY[3] << 12;
+ Cb = pCb[1];
+ Cr = pCr[1];
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ {
+ JPEGPixelLE(pOutput + 1, Y1, Cb, Cr);
+ JPEGPixelLE(pOutput + 1 + iPitch, Y2, Cb, Cr);
+ }
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ {
+ JPEGPixelBE(pOutput + 1, Y1, Cb, Cr);
+ JPEGPixelBE(pOutput + 1 + iPitch, Y2, Cb, Cr);
+ } else { // RGB8888
+ JPEGPixelRGB((uint32_t *)&pOutput[2], Y1, Cb, Cr);
+ JPEGPixelRGB((uint32_t *)&pOutput[(1 + iPitch)*2], Y2, Cb, Cr);
+ }
+ pY += DCTSIZE*2; // next Y block below
+ Y1 = pY[0] << 12;
+ Y2 = pY[2] << 12;
+ Cb = pCb[2];
+ Cr = pCr[2];
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ {
+ JPEGPixelLE(pOutput + iPitch*2, Y1, Cb, Cr);
+ JPEGPixelLE(pOutput + iPitch*3, Y2, Cb, Cr);
+ }
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ {
+ JPEGPixelBE(pOutput + iPitch*2, Y1, Cb, Cr);
+ JPEGPixelBE(pOutput + iPitch*3, Y2, Cb, Cr);
+ } else { // RGB8888
+ JPEGPixelRGB((uint32_t *)&pOutput[iPitch*4], Y1, Cb, Cr);
+ JPEGPixelRGB((uint32_t *)&pOutput[iPitch*6], Y2, Cb, Cr);
+ }
+ Y1 = pY[1] << 12;
+ Y2 = pY[3] << 12;
+ Cb = pCb[3];
+ Cr = pCr[3];
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ {
+ JPEGPixelLE(pOutput + 1 + iPitch*2, Y1, Cb, Cr);
+ JPEGPixelLE(pOutput + 1 + iPitch*3, Y2, Cb, Cr);
+ }
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ {
+ JPEGPixelBE(pOutput + 1 + iPitch*2, Y1, Cb, Cr);
+ JPEGPixelBE(pOutput + 1 + iPitch*3, Y2, Cb, Cr);
+ }
+ else { // RGB8888
+ JPEGPixelRGB((uint32_t *)&pOutput[2 + iPitch*4], Y1, Cb, Cr);
+ JPEGPixelRGB((uint32_t *)&pOutput[2 + iPitch*6], Y2, Cb, Cr);
+ }
+ return;
+ }
+// full size
+ /* Convert YCC pixels into RGB pixels and store in output image */
+ iYCount = 16;
+ iXCount = 8;
+ for (iRow=0; iRowucPixelType == RGB565_LITTLE_ENDIAN)
+ {
+ JPEGPixelLE(pOutput + iCol, Y1, Cb, Cr);
+ JPEGPixelLE(pOutput + iPitch + iCol, Y2, Cb, Cr);
+ }
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ {
+ JPEGPixelBE(pOutput + iCol, Y1, Cb, Cr);
+ JPEGPixelBE(pOutput + iPitch + iCol, Y2, Cb, Cr);
+ } else { // RGB8888
+ JPEGPixelRGB((uint32_t *)&pOutput[iCol*2], Y1, Cb, Cr);
+ JPEGPixelRGB((uint32_t *)&pOutput[2*(iPitch + iCol)], Y2, Cb, Cr);
+ } // RGB8888
+ }
+ pY += 16; // skip to next 2 lines of source pixels
+ if (iRow == 6) // next MCU block, skip ahead to correct spot
+ pY += (128-64);
+ pCb += 8;
+ pCr += 8;
+ pOutput += (pJPEG->ucPixelType == RGB8888) ? iPitch*4 : iPitch*2; // next 2 lines of dest pixels
+ }
+} /* JPEGPutMCU12() */
+
+static void JPEGPutMCU21(JPEGIMAGE *pJPEG, int x, int iPitch)
+{
+ int iCr, iCb;
+ signed int Y1, Y2;
+ int iCol;
+ int iRow;
+ uint8_t *pY, *pCr, *pCb;
+ uint16_t *pOutput = &pJPEG->usPixels[x];
+
+ if (pJPEG->ucPixelType == RGB8888) {
+ pOutput += x; // 4 bytes per pixel, not 2
+ }
+
+ pY = (uint8_t *)&pJPEG->sMCUs[0*DCTSIZE];
+ pCb = (uint8_t *)&pJPEG->sMCUs[2*DCTSIZE];
+ pCr = (uint8_t *)&pJPEG->sMCUs[3*DCTSIZE];
+
+ if (pJPEG->iOptions & JPEG_SCALE_HALF)
+ {
+ for (iRow=0; iRow<4; iRow++)
+ {
+ for (iCol=0; iCol<4; iCol++)
+ { // left block
+ iCr = (pCr[0] + pCr[8] + 1) >> 1;
+ iCb = (pCb[0] + pCb[8] + 1) >> 1;
+ Y1 = (signed int)(pY[0] + pY[1] + pY[8] + pY[9]) << 10;
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ JPEGPixelLE(pOutput+iCol, Y1, iCb, iCr);
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ JPEGPixelBE(pOutput+iCol, Y1, iCb, iCr);
+ else
+ JPEGPixelRGB((uint32_t *)&pOutput[iCol*2], Y1, iCb, iCr);
+ // right block
+ iCr = (pCr[4] + pCr[12] + 1) >> 1;
+ iCb = (pCb[4] + pCb[12] + 1) >> 1;
+ Y1 = (signed int)(pY[128] + pY[129] + pY[136] + pY[137]) << 10;
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ JPEGPixelLE(pOutput+iCol+4, Y1, iCb, iCr);
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ JPEGPixelBE(pOutput+iCol+4, Y1, iCb, iCr);
+ else
+ JPEGPixelRGB((uint32_t *)&pOutput[(iCol+4)*2], Y1, iCb, iCr);
+ pCb++;
+ pCr++;
+ pY += 2;
+ }
+ pCb += 12;
+ pCr += 12;
+ pY += 8;
+ pOutput += (pJPEG->ucPixelType == RGB8888) ? iPitch*2 : iPitch;
+ }
+ return;
+ }
+ if (pJPEG->iOptions & JPEG_SCALE_EIGHTH)
+ { // draw 2 pixels
+ iCr = pCr[0];
+ iCb = pCb[0];
+ Y1 = (signed int)(pY[0]) << 12;
+ Y2 = (signed int)(pY[DCTSIZE*2]) << 12;
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ JPEGPixel2LE(pOutput, Y1, Y2, iCb, iCr);
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ JPEGPixel2BE(pOutput, Y1, Y2, iCb, iCr);
+ else
+ JPEGPixel2RGB((uint32_t *)pOutput, Y1, Y2, iCb, iCr);
+ return;
+ }
+ if (pJPEG->iOptions & JPEG_SCALE_QUARTER)
+ { // draw 4x2 pixels
+ // top left
+ iCr = pCr[0];
+ iCb = pCb[0];
+ Y1 = (signed int)(pY[0]) << 12;
+ Y2 = (signed int)(pY[1]) << 12;
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ JPEGPixel2LE(pOutput, Y1, Y2, iCb, iCr);
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ JPEGPixel2BE(pOutput, Y1, Y2, iCb, iCr);
+ else
+ JPEGPixel2RGB((uint32_t *)pOutput, Y1, Y2, iCb, iCr);
+ // top right
+ iCr = pCr[1];
+ iCb = pCb[1];
+ Y1 = (signed int)pY[DCTSIZE*2] << 12;
+ Y2 = (signed int)pY[DCTSIZE*2+1] << 12;
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ JPEGPixel2LE(pOutput + 2, Y1, Y2, iCb, iCr);
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ JPEGPixel2BE(pOutput + 2, Y1, Y2, iCb, iCr);
+ else
+ JPEGPixel2RGB((uint32_t *)&pOutput[4], Y1, Y2, iCb, iCr);
+ // bottom left
+ iCr = pCr[2];
+ iCb = pCb[2];
+ Y1 = (signed int)(pY[2]) << 12;
+ Y2 = (signed int)(pY[3]) << 12;
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ JPEGPixel2LE(pOutput + iPitch, Y1, Y2, iCb, iCr);
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ JPEGPixel2BE(pOutput + iPitch, Y1, Y2, iCb, iCr);
+ else
+ JPEGPixel2RGB((uint32_t *)&pOutput[iPitch*2], Y1, Y2, iCb, iCr);
+ // bottom right
+ iCr = pCr[3];
+ iCb = pCb[3];
+ Y1 = (signed int)pY[DCTSIZE*2+2] << 12;
+ Y2 = (signed int)pY[DCTSIZE*2+3] << 12;
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ JPEGPixel2LE(pOutput + iPitch + 2, Y1, Y2, iCb, iCr);
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ JPEGPixel2BE(pOutput + iPitch + 2, Y1, Y2, iCb, iCr);
+ else
+ JPEGPixel2RGB((uint32_t *)&pOutput[(iPitch+2)*2], Y1, Y2, iCb, iCr);
+ return;
+ }
+// Full size
+ /* Convert YCC pixels into RGB pixels and store in output image */
+ for (iRow=0; iRow<8; iRow++) // up to 8 rows to do
+ {
+ for (iCol=0; iCol<4; iCol++) // up to 4x2 cols to do
+ { // left block
+ iCr = *pCr++;
+ iCb = *pCb++;
+ Y1 = (signed int)(*pY++) << 12;
+ Y2 = (signed int)(*pY++) << 12;
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ JPEGPixel2LE(pOutput + iCol*2, Y1, Y2, iCb, iCr);
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ JPEGPixel2BE(pOutput + iCol*2, Y1, Y2, iCb, iCr);
+ else // RGB8888
+ JPEGPixel2RGB((uint32_t *)&pOutput[iCol*4], Y1, Y2, iCb, iCr);
+ // right block
+ iCr = pCr[3];
+ iCb = pCb[3];
+ Y1 = (signed int)pY[126] << 12;
+ Y2 = (signed int)pY[127] << 12;
+ if (pJPEG->ucPixelType == RGB565_LITTLE_ENDIAN)
+ JPEGPixel2LE(pOutput + 8 + iCol*2, Y1, Y2, iCb, iCr);
+ else if (pJPEG->ucPixelType == RGB565_BIG_ENDIAN)
+ JPEGPixel2BE(pOutput + 8 + iCol*2, Y1, Y2, iCb, iCr);
+ else // RGB8888
+ JPEGPixel2RGB((uint32_t *)&pOutput[16 + iCol*4], Y1, Y2, iCb, iCr);
+ } // for col
+ pCb += 4;
+ pCr += 4;
+ pOutput += (pJPEG->ucPixelType == RGB8888) ? iPitch*2 : iPitch;
+ } // for row
+} /* JPEGPutMCU21() */
+
+// Dither the 8-bit gray pixels into 1, 2, or 4-bit gray
+static void JPEGDither(JPEGIMAGE *pJPEG, int iWidth, int iHeight)
+{
+int x, y, xmask=0, iDestPitch=0;
+int32_t cNew, lFErr, v=0, h;
+int32_t e1,e2,e3,e4;
+uint8_t cOut, ucPixelType; // forward errors for gray
+uint8_t *pSrc, *pDest, *errors, *pErrors=NULL, *d, *pPixels; // destination 8bpp image
+uint8_t pixelmask=0, shift=0;
+
+ ucPixelType = pJPEG->ucPixelType;
+ errors = (uint8_t *)pJPEG->usPixels; // plenty of space here
+ errors[0] = errors[1] = errors[2] = 0;
+ pDest = pSrc = pJPEG->pDitherBuffer; // write the new pixels over the original
+ switch (ucPixelType)
+ {
+ case FOUR_BIT_DITHERED:
+ iDestPitch = (iWidth+1)/2;
+ pixelmask = 0xf0;
+ shift = 4;
+ xmask = 1;
+ break;
+ case TWO_BIT_DITHERED:
+ iDestPitch = (iWidth+3)/4;
+ pixelmask = 0xc0;
+ shift = 2;
+ xmask = 3;
+ break;
+ case ONE_BIT_DITHERED:
+ iDestPitch = (iWidth+7)/8;
+ pixelmask = 0x80;
+ shift = 1;
+ xmask = 7;
+ break;
+ }
+ for (y=0; y 255) cNew = 255; // clip to uint8_t
+ cOut <<= shift; // pack new pixels into a byte
+ cOut |= (cNew >> (8-shift)); // keep top N bits
+ if ((x & xmask) == xmask) // store it when the byte is full
+ {
+ *d++ = cOut;
+ cOut = 0;
+ }
+ // calculate the Floyd-Steinberg error for this pixel
+ v = cNew - (cNew & pixelmask); // new error for N-bit gray output (always positive)
+ h = v >> 1;
+ e1 = (7*h)>>3; // 7/16
+ e2 = h - e1; // 1/16
+ e3 = (5*h) >> 3; // 5/16
+ e4 = h - e3; // 3/16
+ // distribute error to neighbors
+ lFErr = e1 + pErrors[1];
+ pErrors[1] = (uint8_t)e2;
+ pErrors[0] += e3;
+ pErrors[-1] += e4;
+ pErrors++;
+ } // for x
+ } // for y
+} /* JPEGDither() */
+
+//
+// Decode the image
+// returns 0 for error, 1 for success
+//
+static int DecodeJPEG(JPEGIMAGE *pJPEG)
+{
+ int cx, cy, x, y, mcuCX, mcuCY;
+ int iLum0, iLum1, iLum2, iLum3, iCr, iCb;
+ signed int iDCPred0, iDCPred1, iDCPred2;
+ int i, iQuant1, iQuant2, iQuant3, iErr;
+ int iSkipMask, bSkipRow;
+ uint8_t c;
+ int iMCUCount, xoff, iPitch, bThumbnail = 0;
+ int bContinue = 1; // early exit if the DRAW callback wants to stop
+ uint32_t l, *pl;
+ unsigned char cDCTable0, cACTable0, cDCTable1, cACTable1, cDCTable2, cACTable2;
+ JPEGDRAW jd;
+ int iMaxFill = 16, iScaleShift = 0;
+
+ // Requested the Exif thumbnail
+ if (pJPEG->iOptions & JPEG_EXIF_THUMBNAIL)
+ {
+ if (pJPEG->iThumbData == 0 || pJPEG->iThumbWidth == 0) // doesn't exist
+ {
+ pJPEG->iError = JPEG_INVALID_PARAMETER;
+ return 0;
+ }
+ if (!JPEGParseInfo(pJPEG, 1)) // parse the embedded thumbnail file header
+ return 0; // something went wrong
+ }
+ // Fast downscaling options
+ if (pJPEG->iOptions & JPEG_SCALE_HALF)
+ iScaleShift = 1;
+ else if (pJPEG->iOptions & JPEG_SCALE_QUARTER)
+ {
+ iScaleShift = 2;
+ iMaxFill = 1;
+ }
+ else if (pJPEG->iOptions & JPEG_SCALE_EIGHTH)
+ {
+ iScaleShift = 3;
+ iMaxFill = 1;
+ bThumbnail = 1;
+ }
+
+ // reorder and fix the quantization table for decoding
+ JPEGFixQuantD(pJPEG);
+ pJPEG->bb.ulBits = MOTOLONG(&pJPEG->ucFileBuf[0]); // preload first 4/8 bytes
+ pJPEG->bb.pBuf = pJPEG->ucFileBuf;
+ pJPEG->bb.ulBitOff = 0;
+
+ cDCTable0 = pJPEG->JPCI[0].dc_tbl_no;
+ cACTable0 = pJPEG->JPCI[0].ac_tbl_no;
+ cDCTable1 = pJPEG->JPCI[1].dc_tbl_no;
+ cACTable1 = pJPEG->JPCI[1].ac_tbl_no;
+ cDCTable2 = pJPEG->JPCI[2].dc_tbl_no;
+ cACTable2 = pJPEG->JPCI[2].ac_tbl_no;
+ iDCPred0 = iDCPred1 = iDCPred2 = mcuCX = mcuCY = 0;
+
+ switch (pJPEG->ucSubSample) // set up the parameters for the different subsampling options
+ {
+ case 0x00: // fake value to handle grayscale
+ case 0x01: // fake value to handle sRGB/CMYK
+ case 0x11:
+ cx = (pJPEG->iWidth + 7) >> 3; // number of MCU blocks
+ cy = (pJPEG->iCropY + pJPEG->iCropCY) >> 3;
+ iCr = MCU1;
+ iCb = MCU2;
+ mcuCX = mcuCY = 8;
+ break;
+ case 0x12:
+ cx = (pJPEG->iWidth + 7) >> 3; // number of MCU blocks
+ cy = (pJPEG->iCropY + pJPEG->iCropCY) >> 4;
+ iCr = MCU2;
+ iCb = MCU3;
+ mcuCX = 8;
+ mcuCY = 16;
+ break;
+ case 0x21:
+ cx = (pJPEG->iWidth + 15) >> 4; // number of MCU blocks
+ cy = (pJPEG->iCropY + pJPEG->iCropCY) >> 3;
+ iCr = MCU2;
+ iCb = MCU3;
+ mcuCX = 16;
+ mcuCY = 8;
+ break;
+ case 0x22:
+ cx = (pJPEG->iWidth + 15) >> 4; // number of MCU blocks
+ cy = (pJPEG->iCropY + pJPEG->iCropCY) >> 4;
+ iCr = MCU4;
+ iCb = MCU5;
+ mcuCX = mcuCY = 16;
+ break;
+ default: // to suppress compiler warning
+ cx = cy = 0;
+ iCr = iCb = 0;
+ break;
+ }
+ // Scale down the MCUs by the requested amount
+ mcuCX >>= iScaleShift;
+ mcuCY >>= iScaleShift;
+
+ iQuant1 = pJPEG->sQuantTable[pJPEG->JPCI[0].quant_tbl_no*DCTSIZE]; // DC quant values
+ iQuant2 = pJPEG->sQuantTable[pJPEG->JPCI[1].quant_tbl_no*DCTSIZE];
+ iQuant3 = pJPEG->sQuantTable[pJPEG->JPCI[2].quant_tbl_no*DCTSIZE];
+ // luminance values are always in these positions
+ iLum0 = MCU0;
+ iLum1 = MCU1;
+ iLum2 = MCU2;
+ iLum3 = MCU3;
+ iErr = 0;
+ pJPEG->iResCount = pJPEG->iResInterval;
+ // Calculate how many MCUs we can fit in the pixel buffer to maximize LCD drawing speed
+ iMCUCount = MAX_BUFFERED_PIXELS / (mcuCX * mcuCY);
+ if (pJPEG->ucPixelType == RGB8888) {
+ iMCUCount /= 2; // half as many will fit
+ }
+ if (pJPEG->ucPixelType == EIGHT_BIT_GRAYSCALE)
+ iMCUCount *= 2; // each pixel is only 1 byte
+ if (iMCUCount > cx)
+ iMCUCount = cx; // don't go wider than the image
+ if (iMCUCount > pJPEG->iMaxMCUs) // did the user set an upper bound on how many pixels per JPEGDraw callback?
+ iMCUCount = pJPEG->iMaxMCUs;
+ if (pJPEG->ucPixelType > EIGHT_BIT_GRAYSCALE) // dithered, override the max MCU count
+ iMCUCount = cx; // do the whole row
+ jd.iBpp = 16;
+ switch (pJPEG->ucPixelType)
+ {
+ case RGB8888:
+ jd.iBpp = 32;
+ break;
+ case EIGHT_BIT_GRAYSCALE:
+ jd.iBpp = 8;
+ break;
+ case FOUR_BIT_DITHERED:
+ jd.iBpp = 4;
+ break;
+ case TWO_BIT_DITHERED:
+ jd.iBpp = 2;
+ break;
+ case ONE_BIT_DITHERED:
+ jd.iBpp = 1;
+ break;
+ }
+ if (pJPEG->ucPixelType > EIGHT_BIT_GRAYSCALE)
+ jd.pPixels = (uint16_t *)pJPEG->pDitherBuffer;
+ else
+ jd.pPixels = pJPEG->usPixels;
+ jd.iHeight = mcuCY;
+ for (y = 0; y < cy && bContinue && iErr == 0; y++)
+ {
+ bSkipRow = (y*mcuCY < pJPEG->iCropY);
+ jd.x = pJPEG->iXOffset;
+ xoff = 0; // start of new LCD output group
+ if (pJPEG->pFramebuffer) { // user-supplied buffer is full width
+ int ty = (y * mcuCY) - pJPEG->iCropY;
+ iPitch = pJPEG->iCropCX; // size of cropped width
+ pJPEG->usPixels = (uint16_t *)pJPEG->pFramebuffer;
+ if (pJPEG->ucPixelType >= EIGHT_BIT_GRAYSCALE) {
+ pJPEG->usPixels += (ty * iPitch/2); // 1 byte per pixel
+ } else if (pJPEG->ucPixelType == RGB8888) {
+ pJPEG->usPixels += (ty * iPitch*2); // 4 bytes per pixel
+ } else { // 2 bytes per pixel
+ pJPEG->usPixels += (ty * iPitch);
+ }
+ } else { // use our internal buffer to do it a block at a time
+ iPitch = iMCUCount * mcuCX; // pixels per line of LCD buffer
+ }
+ for (x = 0; x < cx && bContinue && iErr == 0; x++)
+ {
+ iSkipMask = 0; // assume not skipping
+ if (bSkipRow || x*mcuCX < pJPEG->iCropX || x*mcuCX >= pJPEG->iCropX+pJPEG->iCropCX) {
+ iSkipMask = MCU_SKIP;
+ }
+ pJPEG->ucACTable = cACTable0;
+ pJPEG->ucDCTable = cDCTable0;
+ // do the first luminance component
+ iErr = JPEGDecodeMCU(pJPEG, iLum0 | iSkipMask, &iDCPred0);
+ if (pJPEG->u16MCUFlags == 0 || bThumbnail) // no AC components, save some time
+ {
+ pl = (uint32_t *)&pJPEG->sMCUs[iLum0];
+ c = ucRangeTable[((iDCPred0 * iQuant1) >> 5) & 0x3ff];
+ l = c | ((uint32_t) c << 8) | ((uint32_t) c << 16) | ((uint32_t) c << 24);
+ // dct stores byte values
+ for (i = 0; iJPCI[0].quant_tbl_no); // first quantization table
+ }
+ // do the second luminance component
+ if (pJPEG->ucSubSample > 0x11) // subsampling
+ {
+ iErr |= JPEGDecodeMCU(pJPEG, iLum1 | iSkipMask, &iDCPred0);
+ if (pJPEG->u16MCUFlags == 0 || bThumbnail) // no AC components, save some time
+ {
+ c = ucRangeTable[((iDCPred0 * iQuant1) >> 5) & 0x3ff];
+ l = c | ((uint32_t) c << 8) | ((uint32_t) c << 16) | ((uint32_t) c << 24);
+ // dct stores byte values
+ pl = (uint32_t *)&pJPEG->sMCUs[iLum1];
+ for (i = 0; iJPCI[0].quant_tbl_no); // first quantization table
+ }
+ if (pJPEG->ucSubSample == 0x22)
+ {
+ iErr |= JPEGDecodeMCU(pJPEG, iLum2 | iSkipMask, &iDCPred0);
+ if (pJPEG->u16MCUFlags == 0 || bThumbnail) // no AC components, save some time
+ {
+ c = ucRangeTable[((iDCPred0 * iQuant1) >> 5) & 0x3ff];
+ l = c | ((uint32_t) c << 8) | ((uint32_t) c << 16) | ((uint32_t) c << 24);
+ // dct stores byte values
+ pl = (uint32_t *)&pJPEG->sMCUs[iLum2];
+ for (i = 0; iJPCI[0].quant_tbl_no); // first quantization table
+ }
+ iErr |= JPEGDecodeMCU(pJPEG, iLum3 | iSkipMask, &iDCPred0);
+ if (pJPEG->u16MCUFlags == 0 || bThumbnail) // no AC components, save some time
+ {
+ c = ucRangeTable[((iDCPred0 * iQuant1) >> 5) & 0x3ff];
+ l = c | ((uint32_t) c << 8) | ((uint32_t) c << 16) | ((uint32_t) c << 24);
+ // dct stores byte values
+ pl = (uint32_t *)&pJPEG->sMCUs[iLum3];
+ for (i = 0; iJPCI[0].quant_tbl_no); // first quantization table
+ }
+ } // if 2:2 subsampling
+ } // if subsampling used
+ if (pJPEG->ucSubSample && pJPEG->ucNumComponents == 3) // if color (not CMYK)
+ {
+ // first chroma
+ pJPEG->ucACTable = cACTable1;
+ pJPEG->ucDCTable = cDCTable1;
+ if (pJPEG->ucPixelType >= EIGHT_BIT_GRAYSCALE) {
+ // We're not going to use the color channels, so avoid as much work as possible
+ iErr |= JPEGDecodeMCU(pJPEG, MCU_SKIP, &iDCPred1); // decode Cr block
+ iErr |= JPEGDecodeMCU(pJPEG, MCU_SKIP, &iDCPred2); // decode Cb block
+ } else {
+ iErr |= JPEGDecodeMCU(pJPEG, iCr | iSkipMask, &iDCPred1);
+ if (pJPEG->u16MCUFlags == 0 || bThumbnail) // no AC components, save some time
+ {
+ c = ucRangeTable[((iDCPred1 * iQuant2) >> 5) & 0x3ff];
+ l = c | ((uint32_t) c << 8) | ((uint32_t) c << 16) | ((uint32_t) c << 24);
+ // dct stores byte values
+ pl = (uint32_t *)&pJPEG->sMCUs[iCr];
+ for (i = 0; iJPCI[1].quant_tbl_no); // second quantization table
+ }
+ // second chroma
+ pJPEG->ucACTable = cACTable2;
+ pJPEG->ucDCTable = cDCTable2;
+ iErr |= JPEGDecodeMCU(pJPEG, iCb | iSkipMask, &iDCPred2);
+ if (pJPEG->u16MCUFlags == 0 || bThumbnail) // no AC components, save some time
+ {
+ c = ucRangeTable[((iDCPred2 * iQuant3) >> 5) & 0x3ff];
+ l = c | ((uint32_t) c << 8) | ((uint32_t) c << 16) | ((uint32_t) c << 24);
+ // dct stores byte values
+ pl = (uint32_t *)&pJPEG->sMCUs[iCb];
+ for (i = 0; iJPCI[2].quant_tbl_no);
+ }
+ }
+ } // if color components present
+ if (!iSkipMask) { // this MCU is not skipped
+ if (pJPEG->ucPixelType >= EIGHT_BIT_GRAYSCALE) {
+ JPEGPutMCU8BitGray(pJPEG, xoff, iPitch); // grayscale or color is being drawn as grayscale
+ } else {
+ switch (pJPEG->ucSubSample) {
+ case 0x00: // grayscale
+ JPEGPutMCUGray(pJPEG, xoff, iPitch);
+ break;
+ case 0x11:
+ JPEGPutMCU11(pJPEG, xoff, iPitch);
+ break;
+ case 0x12:
+ JPEGPutMCU12(pJPEG, xoff, iPitch);
+ break;
+ case 0x21:
+ JPEGPutMCU21(pJPEG, xoff, iPitch);
+ break;
+ case 0x22:
+ JPEGPutMCU22(pJPEG, xoff, iPitch);
+ break;
+ } // switch on color option
+ } // normal MCU drawing
+ xoff += mcuCX;
+ } // if not skipped
+ if (pJPEG->pFramebuffer == NULL && (xoff == iPitch || x == cx-1) && !bSkipRow) // time to draw
+ {
+ jd.iWidth = jd.iWidthUsed = iPitch; // width of each LCD block group
+ jd.pUser = pJPEG->pUser;
+ if (pJPEG->ucPixelType > EIGHT_BIT_GRAYSCALE) // dither to 4/2/1 bits
+ JPEGDither(pJPEG, cx * mcuCX, mcuCY);
+ if ((x+1)*mcuCX > pJPEG->iWidth) { // right edge has clipped pixels
+ jd.iWidthUsed = iPitch - (cx*mcuCX - pJPEG->iWidth);
+ } else if (jd.x + iPitch > pJPEG->iCropCX) { // not a full width
+ jd.iWidthUsed = pJPEG->iCropCX - jd.x;
+ }
+ jd.y = pJPEG->iYOffset + (y * mcuCY) - pJPEG->iCropY;
+ if ((jd.y - pJPEG->iYOffset + mcuCY) > (pJPEG->iHeight>>iScaleShift)) { // last row needs to be trimmed
+ jd.iHeight = (pJPEG->iHeight>>iScaleShift) - (jd.y - pJPEG->iYOffset);
+ }
+ bContinue = (*pJPEG->pfnDraw)(&jd);
+ jd.x += iPitch;
+ if ((cx - 1 - x) < iMCUCount) // change pitch for the last set of MCUs on this row
+ iPitch = (cx - 1 - x) * mcuCX;
+ xoff = 0;
+ }
+ if (pJPEG->iResInterval)
+ {
+ if (--pJPEG->iResCount == 0)
+ {
+ pJPEG->iResCount = pJPEG->iResInterval;
+ iDCPred0 = iDCPred1 = iDCPred2 = 0; // reset DC predictors
+ if (pJPEG->bb.ulBitOff & 7) // need to start at the next even byte
+ {
+ pJPEG->bb.ulBitOff += (8 - (pJPEG->bb.ulBitOff & 7)); // new restart interval starts on byte boundary
+ }
+ } // if restart interval needs to reset
+ } // if there is a restart interval
+ // See if we need to feed it more data
+ if (pJPEG->iVLCOff >= FILE_HIGHWATER)
+ JPEGGetMoreData(pJPEG); // need more 'filtered' VLC data
+ } // for x
+ } // for y
+ if (iErr != 0)
+ pJPEG->iError = JPEG_DECODE_ERROR;
+ return (iErr == 0);
+} /* DecodeJPEG() */
diff --git a/lib/libesp32/JPEGDEC/src/my_cm4_simd.h b/lib/libesp32/JPEGDEC/src/my_cm4_simd.h
new file mode 100644
index 000000000..a849c3c60
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/src/my_cm4_simd.h
@@ -0,0 +1,57 @@
+//
+// Adds Cortex-M4/M7 SIMD instruction intrinsics for M4/M7 targets missing
+// this support in their board support packages (e.g. Teensyduino)
+//
+#ifndef __CM4_SIMD__
+#define __CM4_SIMD__
+
+#define __SSAT16(ARG1, ARG2) \
+__extension__ \
+({ \
+ int32_t __RES, __ARG1 = (ARG1); \
+ __asm volatile ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \
+ __RES; \
+ })
+
+#define __USAT16(ARG1, ARG2) \
+__extension__ \
+({ \
+ uint32_t __RES, __ARG1 = (ARG1); \
+ __asm volatile ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \
+ __RES; \
+ })
+
+__attribute__((always_inline)) static inline uint32_t __SADD16(uint32_t op1, uint32_t op2)
+{
+ uint32_t result;
+
+ __asm volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+ return(result);
+}
+
+__attribute__((always_inline)) static inline uint32_t __SSUB16(uint32_t op1, uint32_t op2)
+{
+ uint32_t result;
+
+ __asm volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+ return(result);
+}
+
+__attribute__((always_inline)) static inline uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3)
+{
+ uint32_t result;
+
+ __asm volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
+ return(result);
+}
+
+__attribute__((always_inline)) static inline uint32_t __QADD16(uint32_t op1, uint32_t op2)
+{
+ uint32_t result;
+
+ __asm ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
+ return(result);
+}
+
+#endif
+
diff --git a/lib/libesp32/JPEGDEC/src/s3_simd_420.S b/lib/libesp32/JPEGDEC/src/s3_simd_420.S
new file mode 100644
index 000000000..5f0ebf227
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/src/s3_simd_420.S
@@ -0,0 +1,128 @@
+//
+// ESP32-S3 SIMD optimized code
+// Written by Larry Bank
+// Copyright (c) 2024 BitBank Software, Inc.
+// Project started Jan 21, 2024
+//
+#ifdef ARDUINO_ARCH_ESP32
+#include "dsps_fft2r_platform.h"
+#if (dsps_fft2r_sc16_aes3_enabled == 1)
+ .text
+ .align 4
+
+ .global s3_ycbcr_convert_420
+ .type s3_ycbcr_convert_420,@function
+
+// Convert 16 pixels of YCbCr 4:2:0 to RGB565
+// A2 A3 A4 A5 A6 A7
+// Call as void s3_ycbcr_convert_420(uint8_t *pY, uint8_t *pCB, uint8_t *pCR, uint16_t *pOut, int16_t *pConsts, uint8_t ucPixelType);
+ s3_ycbcr_convert_420:
+// supported pixel types: 0 = RGB656_LE, 1 = RGB565_BE, 2 = RGBA8888
+ # no idea what this frequency keyword does
+# .frequency 1.000 0.000
+ .align 4
+ entry a1,64
+ movi.n a8,2 # iteration count
+ ee.vld.l.64.ip q0,a2,128 # load left 8 Y values into Q0 and point to right DCT block for next load
+ ee.vld.l.64.ip q1,a3,0 # load 8 Cb values into Q1
+ ee.vld.l.64.ip q2,a4,0 # load 8 Cr values into Q2
+ ee.movi.32.a q1,a3,1 # save upper 4 values of Cb for later
+ ee.movi.32.a q2,a4,1 # save upper 4 values of Cr for later
+.convert_420_loop:
+ ee.vldbc.16.ip q3,a6,2 # get constant 0x80 as 16-bits in all 128 bits of q3
+ ee.xorq q4,q4,q4 # load Q4 with 0's
+ ee.vzip.8 q0,q4 # expand 8-bit Y data to 16-bits
+ ee.xorq q4,q4,q4 # need to reset to 0's
+ ee.vzip.8 q1,q4 # expand 8-bit Cb data to 16-bits
+ ee.xorq q4,q4,q4
+ ee.vzip.8 q2,q4 # expand 8-bit Cr data to 16-bits
+ mv.qr q5,q1
+ ee.vzip.16 q1,q5 # duplicate Cb values since it's subsampled
+ mv.qr q5,q2
+ ee.vzip.16 q2,q5 # duplicate Cr values
+
+ ee.vsubs.s16 q1,q1,q3 # subtract 0x0080 from Cb's
+ ee.vsubs.s16 q2,q2,q3 # subtract 0x0080 from Cr's
+ ee.vldbc.16.ip q3,a6,2 # get constant 1.77200 as 16-bits in all 128 bits of q3
+ movi.n a9,6 # load the shift register with 6
+ wsr.sar a9 # put it in the SAR (shift amount register)
+ ee.vmul.s16 q6,q1,q3 # (Cb *= 1.77200) >> 6
+ ee.vldbc.16.ip q3,a6,2 # get constant 1.402 as 16-bits in all 128 bits of q3
+ ee.vadds.s16 q6,q6,q0 # Cb += y (8 blue pixels in q6)
+ ee.vmul.s16 q7,q2,q3 # (Cr *= 1.402) >> 6
+ ee.vadds.s16 q7,q7,q0 # Cr += y (8 red pixels in q7)
+ ee.vldbc.16.ip q3,a6,2 # get constant 0.34414 as 16-bits in all 128 bits of q3
+ movi.n a9,0 # load the shift register with 0
+ wsr.sar a9 # put it in the SAR (shift amount register)
+ ee.vmul.s16 q4,q1,q3 # (Cb * 0.34414) >> 0
+ ee.vldbc.16.ip q3,a6,2 # get constant 0.71414 as 16-bits in all 128 bits of q3
+ ee.vmul.s16 q3,q2,q3 # (Cr * 0.71414) >> 0
+ ee.vadds.s16 q3,q3,q4 # (Cb * 0.34414) + (Cr * 0.71414)
+ ee.vldbc.16.ip q4,a6,2 # get constant 1 (so we can do a 16-bit shift)
+ movi.n a9,6 # load the shift register with 6
+ wsr.sar a9 # put it in the SAR (shift amount register)
+ ee.vmul.s16 q3,q3,q4 # shift right by 6
+ ee.vsubs.s16 q3,q0,q3 # Y - ((Cb * 0.34414) + (Cr * 0.71414)) = green in Q3
+// saturate to 8 bits
+ ee.xorq q0,q0,q0
+ ee.vmax.s16 q3,q3,q0
+ ee.vmax.s16 q6,q6,q0
+ ee.vmax.s16 q7,q7,q0
+ ee.vcmp.eq.s16 q1,q1,q1 # create 255
+ ee.vzip.8 q1,q0
+ ee.vmin.s16 q3,q3,q1 # clamp to 255
+ ee.vmin.s16 q6,q6,q1
+ ee.vmin.s16 q7,q7,q1
+ beqi a7,2,.rgba8888_output # 32-bit RGBA pixels
+ movi.n a9,3 # load the shift register with 3 (for blue and red)
+ wsr.sar a9 # put it in the SAR (shift amount register)
+ ee.vmul.s16 q6,q4,q6 # shift blue right by 3
+ ee.vmul.s16 q7,q4,q7 # shift red right by 3
+ movi.n a9,2 # load the shift register with 2 (for green)
+ wsr.sar a9 # put it in the SAR (shift amount register)
+ ee.vmul.s16 q3,q4,q3 # shift green right by 2
+// now combine to form RGB565 pixels
+ movi.n a9,0
+ wsr.sar a9 # no shift after multiply
+ ee.vldbc.16.ip q4,a6,2 # get constant value 32 (to shift green left by 5 bits)
+ ee.vldbc.16.ip q5,a6,2 # get constant value 2048 (to shift red left by 11 bits)
+ ee.vmul.s16 q3,q4,q3 # shift green left by 5
+ ee.vmul.s16 q7,q5,q7 # shift red left by 11
+ ee.orq q6,q6,q3 # combine blue + green
+ ee.orq q6,q6,q7 # combine blue + green + red
+ mv.qr q5,q6 # in case we're generating little endian output
+ beqi a7,0,.rgb565_le # RGB565 little endian?
+ ee.vunzip.8 q6,q5 # swap the byte order to be big-endian
+ ee.vzip.8 q5,q6
+.rgb565_le:
+ ee.vst.128.ip q5,a5,16 # store 8 RGB565 pixels
+ addi.n a6,a6,-16 # restore pointer to start of 16-bit constants
+ ee.vld.l.64.ip q0,a2,0 # load right 8 Y values into Q0
+ ee.movi.32.q q1,a3,0 # restore second 4 values of Cb
+ ee.movi.32.q q2,a4,0 # restore second 4 values of Cr
+ addi.n a8,a8,-1
+ bnez.n a8,.convert_420_loop
+
+ # return value of 0
+ retw.n
+.rgba8888_output: # generate RGBA 32-bit pixels
+ movi.n a9,8 # shift 8 bits
+ wsr.sar a9
+ ee.vsl.32 q3,q3 # shift green over 8 bits
+ ee.orq q7,q7,q3 # combine red and green
+ ee.vcmp.eq.s16 q1,q1,q1 # create FFs
+ ee.xorq q2,q2,q2 # create 00s
+ ee.vzip.8 q2,q1 # create FF00 for Alpha
+ ee.orq q2,q2,q6 # combine blue + alpha
+ ee.vzip.16 q7,q2 # create RGB8888 pixels
+ ee.vst.128.ip q7,a5,16 # store 8 x RGB8888 pixels = 32 bytes
+ ee.vst.128.ip q2,a5,16
+ addi.n a6,a6,-16 # restore pointer to start of 16-bit constants
+ ee.vld.l.64.ip q0,a2,0 # load right 8 Y values into Q0
+ ee.movi.32.q q1,a3,0 # restore second 4 values of Cb
+ ee.movi.32.q q2,a4,0 # restore second 4 values of Cr
+ addi.n a8,a8,-1
+ bnez.n a8,.convert_420_loop
+ retw.n
+#endif // dsps_fft2r_sc16_aes3_enabled
+#endif // ESP32
diff --git a/lib/libesp32/JPEGDEC/src/s3_simd_444.S b/lib/libesp32/JPEGDEC/src/s3_simd_444.S
new file mode 100644
index 000000000..368a82c8f
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/src/s3_simd_444.S
@@ -0,0 +1,109 @@
+//
+// ESP32-S3 SIMD optimized code
+// Written by Larry Bank
+// Copyright (c) 2024 BitBank Software, Inc.
+// Project started Jan 21, 2024
+//
+#ifdef ARDUINO_ARCH_ESP32
+
+#include "dsps_fft2r_platform.h"
+#if (dsps_fft2r_sc16_aes3_enabled == 1)
+ .text
+ .align 4
+
+// Convert 8 pixels of YCbCr 4:4:4 to RGB565
+// A2 A3 A4 A5 A6 A7
+// Call as void s3_ycbcr_convert_444(uint8_t *pY, uint8_t *pCB, uint8_t *pCR, uint16_t *pOut, int16_t *pConsts, uint8_t ucPixelType);
+// supported pixel types: 0 = RGB656_LE, 1 = RGB565_BE, 2 = RGBA8888
+ .global s3_ycbcr_convert_444
+ .type s3_ycbcr_convert_444,@function
+
+s3_ycbcr_convert_444:
+ # no idea what this frequency keyword does
+# .frequency 1.000 0.000
+ entry a1,16
+ ee.xorq q4,q4,q4 # load Q4 with 0's
+ ee.vldbc.16.ip q3,a6,2 # get constant 0x80 as 16-bits in all 128 bits of q3
+ ee.vld.l.64.ip q0,a2,0 # load 8 Y values into Q0
+ ee.vld.l.64.ip q1,a3,0 # load 8 Cb values into Q1
+ ee.vld.l.64.ip q2,a4,0 # load 8 Cr values into Q2
+ ee.vzip.8 q0,q4 # expand 8-bit Y data to 16-bits
+ ee.xorq q4,q4,q4 # need to reset to 0's
+ ee.vzip.8 q1,q4 # expand 8-bit Cb data to 16-bits
+ ee.xorq q4,q4,q4
+ ee.vzip.8 q2,q4 # expand 8-bit Cr data to 16-bits
+
+ ee.vsubs.s16 q1,q1,q3 # subtract 0x0080 from Cb's
+ ee.vsubs.s16 q2,q2,q3 # subtract 0x0080 from Cr's
+ ee.vldbc.16.ip q3,a6,2 # get constant 1.77200 as 16-bits in all 128 bits of q3
+ movi.n a2,6 # load the shift register with 6
+ wsr.sar a2 # put it in the SAR (shift amount register)
+ ee.vmul.s16 q6,q1,q3 # (Cb *= 1.77200) >> 6
+ ee.vadds.s16 q6,q6,q0 # Cb += y (8 blue pixels in q6)
+ ee.vldbc.16.ip q3,a6,2 # get constant 1.402 as 16-bits in all 128 bits of q3
+ ee.vmul.s16 q7,q2,q3 # (Cr *= 1.402) >> 6
+ ee.vadds.s16 q7,q7,q0 # Cr += y (8 red pixels in q7)
+ ee.vldbc.16.ip q3,a6,2 # get constant 0.34414 as 16-bits in all 128 bits of q3
+ movi.n a2,0 # load the shift register with 0
+ wsr.sar a2 # put it in the SAR (shift amount register)
+ ee.vmul.s16 q4,q1,q3 # (Cb * 0.34414) >> 0
+ ee.vldbc.16.ip q3,a6,2 # get constant 0.71414 as 16-bits in all 128 bits of q3
+ ee.vmul.s16 q3,q2,q3 # (Cr * 0.71414) >> 0
+ ee.vadds.s16 q3,q3,q4 # (Cb * 0.34414) + (Cr * 0.71414)
+ ee.vldbc.16.ip q4,a6,2 # get constant 1 (so we can do a 16-bit shift)
+ movi.n a2,6 # load the shift register with 6
+ wsr.sar a2 # put it in the SAR (shift amount register)
+ ee.vmul.s16 q3,q3,q4 # shift right by 6
+ ee.vsubs.s16 q3,q0,q3 # Y - ((Cb * 0.34414) + (Cr * 0.71414)) = green in Q3
+// saturate to 8 bits
+ ee.xorq q0,q0,q0
+ ee.vmax.s16 q3,q3,q0
+ ee.vmax.s16 q6,q6,q0
+ ee.vmax.s16 q7,q7,q0
+ ee.vcmp.eq.s16 q1,q1,q1 # create 255
+ ee.vzip.8 q1,q0
+ ee.vmin.s16 q3,q3,q1 # clamp to 255
+ ee.vmin.s16 q6,q6,q1
+ ee.vmin.s16 q7,q7,q1
+// Now we have RGB888, is that the output pixel type?
+ beqi a7,2,.rgb8888_output
+// either RGB565 LE or BE from here
+ movi.n a2,3 # load the shift register with 3 (for blue and red)
+ wsr.sar a2 # put it in the SAR (shift amount register)
+ ee.vmul.s16 q6,q4,q6 # shift blue right by 3
+ ee.vmul.s16 q7,q4,q7 # shift red right by 3
+ movi.n a2,2 # load the shift register with 2 (for green)
+ wsr.sar a2 # put it in the SAR (shift amount register)
+ ee.vmul.s16 q3,q4,q3 # shift green right by 2
+// now combine to form RGB565 pixels
+ movi.n a2,0
+ wsr.sar a2 # no shift after multiply
+ ee.vldbc.16.ip q4,a6,2 # get constant value 32 (to shift green left by 5 bits)
+ ee.vldbc.16.ip q5,a6,2 # get constant value 2048 (to shift red left by 11 bits)
+ ee.vmul.s16 q3,q4,q3 # shift green left by 5
+ ee.vmul.s16 q7,q5,q7 # shift red left by 11
+ ee.orq q6,q6,q3 # combine blue + green
+ ee.orq q6,q6,q7 # combine blue + green + red
+ mv.qr q5,q6 # in case we're generating little endian output
+ beqi a7,0,.rgb565_exit # RGB565 little endian?
+ ee.vunzip.8 q6,q5 # swap the byte order to be big-endian
+ ee.vzip.8 q5,q6
+.rgb565_exit:
+ ee.vst.128.ip q5,a5,0 # store the 8 RGB565 pixels
+ retw.n
+// Create RGBA (32-bit) pixels
+.rgb8888_output:
+ movi.n a2,8 # shift 8 bits
+ wsr.sar a2
+ ee.vsl.32 q3,q3 # shift green over 8 bits
+ ee.orq q7,q7,q3 # combine red and green
+ ee.vcmp.eq.s16 q1,q1,q1 # create FFs
+ ee.xorq q2,q2,q2 # create 00s
+ ee.vzip.8 q2,q1 # create FF00 for Alpha
+ ee.orq q2,q2,q6 # combine blue + alpha
+ ee.vzip.16 q7,q2 # create RGB8888 pixels
+ ee.vst.128.ip q7,a5,16 # store 8 x RGB8888 pixels = 32 bytes
+ ee.vst.128.ip q2,a5,0
+ retw.n # done
+#endif // dsps_fft2r_sc16_aes3_enabled
+#endif // ESP32
diff --git a/lib/libesp32/JPEGDEC/src/s3_simd_dequant.S b/lib/libesp32/JPEGDEC/src/s3_simd_dequant.S
new file mode 100644
index 000000000..1b30f9ed0
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/src/s3_simd_dequant.S
@@ -0,0 +1,64 @@
+//
+// ESP32-S3 SIMD optimized code
+// Written by Larry Bank
+// Copyright (c) 2024 BitBank Software, Inc.
+// Project started Jan 21, 2024
+//
+#ifdef ARDUINO_ARCH_ESP32
+
+#include "dsps_fft2r_platform.h"
+#if (dsps_fft2r_sc16_aes3_enabled == 1)
+ .text
+ .align 4
+//
+// Inverse DCT dequantization for JPEG decompression
+// A2 A3
+// Call as void s3_dequant(int16_t *pMCU, int16_t *pQuant);
+ .global s3_dequant
+ .type s3_dequant,@function
+
+s3_dequant:
+ # no idea what this frequency keyword does
+# .frequency 1.000 0.000
+ entry a1,16
+ ee.vld.128.ip q0,a2,16 # load MCU rows 0-3 into Q0,Q1,Q2,Q3
+ ee.vld.128.ip q4,a3,16 # load quantization values into Q4,Q5,Q6,Q7
+ ee.vld.128.ip q1,a2,16
+ ee.vld.128.ip q5,a3,16
+ ee.vld.128.ip q2,a2,16
+ ee.vld.128.ip q6,a3,16
+ ee.vld.128.ip q3,a2,16
+ ee.vld.128.ip q7,a3,16
+ movi.n a4,0 # load the shift register with 0
+ wsr.sar a2 # put it in the SAR (shift amount register)
+ ee.vmul.s16 q0,q0,q4 # de-quantize each row
+ ee.vmul.s16 q1,q1,q5
+ ee.vmul.s16 q2,q2,q6
+ ee.vmul.s16 q3,q3,q7
+ addi.n a2,a2,64 # point to first row of MCUs to store dequantized values
+ ee.vst.128.ip q0,a2,16 # write back dequantized rows 0-3
+ ee.vst.128.ip q1,a2,16
+ ee.vst.128.ip q2,a2,16
+ ee.vst.128.ip q3,a2,16
+// repeat for rows 4-7
+ ee.vld.128.ip q0,a2,16 # load MCU rows 4-7 into Q0,Q1,Q2,Q3
+ ee.vld.128.ip q4,a3,16 # load quantization values into Q4,Q5,Q6,Q7
+ ee.vld.128.ip q1,a2,16
+ ee.vld.128.ip q5,a3,16
+ ee.vld.128.ip q2,a2,16
+ ee.vld.128.ip q6,a3,16
+ ee.vld.128.ip q3,a2,16
+ ee.vld.128.ip q7,a3,16
+
+ ee.vmul.s16 q0,q0,q4 # de-quantize rows 4-7
+ ee.vmul.s16 q1,q1,q5
+ ee.vmul.s16 q2,q2,q6
+ ee.vmul.s16 q3,q3,q7
+ addi.n a2,a2,64 # point to 4th row of MCUs
+ ee.vst.128.ip q0,a2,16 # write back dequantized rows 4-7
+ ee.vst.128.ip q1,a2,16
+ ee.vst.128.ip q2,a2,16
+ ee.vst.128.ip q3,a2,16
+ retw.n # done
+#endif // dsps_fft2r_sc16_aes3_enabled
+#endif // ESP32
diff --git a/lib/libesp32/JPEGDEC/test_images/sciopero.h b/lib/libesp32/JPEGDEC/test_images/sciopero.h
new file mode 100644
index 000000000..4b6cf5322
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/test_images/sciopero.h
@@ -0,0 +1,2292 @@
+//
+// sciopero
+//
+const uint8_t sciopero[] PROGMEM = { 0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x00,0x00,0x01,
+ 0x00,0x01,0x00,0x00,0xff,0xfe,0x00,0x3b,0x43,0x52,0x45,0x41,0x54,0x4f,0x52,0x3a,
+ 0x20,0x67,0x64,0x2d,0x6a,0x70,0x65,0x67,0x20,0x76,0x31,0x2e,0x30,0x20,0x28,0x75,
+ 0x73,0x69,0x6e,0x67,0x20,0x49,0x4a,0x47,0x20,0x4a,0x50,0x45,0x47,0x20,0x76,0x36,
+ 0x32,0x29,0x2c,0x20,0x71,0x75,0x61,0x6c,0x69,0x74,0x79,0x20,0x3d,0x20,0x39,0x30,
+ 0x0a,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x03,0x03,0x03,
+ 0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,0x07,0x06,0x08,
+ 0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,0x0e,0x11,0x0e,
+ 0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,0x17,0x18,0x16,
+ 0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,0x04,0x05,0x04,
+ 0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,0x00,0x11,0x08,
+ 0x01,0x2c,0x01,0x2c,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4,
+ 0x00,0x1f,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0xff,
+ 0xc4,0x00,0xb5,0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,
+ 0x00,0x00,0x01,0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,
+ 0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,
+ 0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,
+ 0x25,0x26,0x27,0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,
+ 0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,
+ 0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,
+ 0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,
+ 0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,
+ 0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,
+ 0xd9,0xda,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,
+ 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xc4,0x00,0x1f,0x01,0x00,0x03,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,
+ 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0xff,0xc4,0x00,0xb5,0x11,0x00,0x02,0x01,0x02,
+ 0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01,0x02,0x03,
+ 0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,
+ 0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,
+ 0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,0x27,0x28,0x29,0x2a,
+ 0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,
+ 0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,
+ 0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,
+ 0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,
+ 0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,
+ 0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe2,0xe3,0xe4,0xe5,
+ 0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xda,
+ 0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xf4,0xbf,0x13,0xfe,
+ 0xd7,0x31,0xeb,0xd6,0xb6,0x36,0x77,0xfa,0x53,0x49,0x69,0x69,0x32,0x4b,0x1c,0x50,
+ 0xc9,0xe4,0x83,0xb4,0x8c,0x29,0x0a,0x31,0x8e,0x3f,0x53,0x5d,0xed,0x9f,0xfc,0x14,
+ 0x4b,0x4e,0xdb,0xb2,0xfb,0xc2,0xb3,0x20,0xe8,0x5e,0x0b,0xb0,0x48,0xfc,0x0a,0xff,
+ 0x00,0x5a,0xf8,0x1f,0x5a,0xd6,0x1a,0x1e,0x4b,0x6e,0x73,0xd0,0x67,0xa5,0x70,0x3e,
+ 0x2d,0xf1,0xb4,0xfa,0x52,0x2c,0x51,0xb6,0xf9,0x9b,0x9e,0x4f,0x4f,0xf3,0xcd,0x7c,
+ 0x75,0x1a,0xd5,0x9d,0x67,0x0a,0x3b,0xbf,0x4e,0x87,0xee,0x98,0xec,0x9b,0x27,0xc3,
+ 0x61,0x5d,0x7c,0x55,0x3b,0x42,0x3d,0x9b,0xeb,0xd9,0x27,0xd4,0xfd,0x49,0xd0,0xff,
+ 0x00,0x6e,0x3f,0x08,0x7f,0x67,0x5a,0x59,0x2b,0xdf,0xda,0x32,0xab,0x89,0x6e,0xaf,
+ 0xa2,0x12,0xb9,0x24,0x1d,0xb8,0xd8,0x71,0xd4,0x8e,0x48,0xed,0xd2,0xbd,0x03,0xc0,
+ 0xff,0x00,0xb4,0x3f,0xc3,0x7b,0xf9,0x6d,0x24,0x7f,0x17,0xdb,0x3d,0xd2,0xc0,0xca,
+ 0xd2,0xdf,0xb3,0x23,0x96,0x66,0xcb,0x0c,0xb0,0x00,0x0e,0x07,0x03,0x8a,0xfc,0x55,
+ 0x83,0xe2,0x4e,0xb7,0x6f,0x1a,0xc8,0x81,0x6e,0x10,0xfd,0xe0,0x70,0x31,0xec,0x07,
+ 0x7a,0xd5,0xb3,0xf8,0xc9,0x72,0x84,0x0b,0x8b,0x36,0x1e,0xea,0x6b,0xd3,0x50,0xc7,
+ 0x52,0x49,0x72,0xa6,0x97,0xf5,0xe4,0x7c,0x4b,0xa5,0xc3,0x78,0x8b,0xf2,0x55,0x9d,
+ 0x36,0xfb,0xab,0xfe,0x8f,0xf3,0x3f,0x75,0xee,0xfe,0x20,0x69,0x3e,0x20,0xd2,0xaf,
+ 0xa3,0xd0,0xb5,0x2b,0x1d,0x45,0xc4,0x0e,0x3c,0xc8,0xee,0x15,0x90,0x1d,0xa7,0xa0,
+ 0x07,0x2c,0x7d,0x87,0x1d,0xb2,0x2b,0xe2,0xcf,0xda,0x83,0x49,0x96,0xd6,0x6f,0x0f,
+ 0x41,0x7b,0x71,0x2c,0xda,0x91,0xba,0xb5,0x06,0x39,0x80,0x55,0x45,0xdf,0x3b,0x7c,
+ 0xb1,0x8e,0x3f,0x8f,0xa9,0xcb,0x73,0xc9,0xaf,0x87,0x6c,0x3e,0x35,0x45,0x16,0x1b,
+ 0x37,0x10,0x63,0xf8,0x95,0x88,0xc5,0x75,0x76,0x5f,0xb4,0x14,0xd2,0x98,0x41,0xd6,
+ 0xe7,0x90,0x46,0x43,0x22,0x5c,0xb7,0x98,0x14,0xfa,0x80,0xdd,0x2a,0x9e,0x2e,0xb4,
+ 0x75,0xa9,0x49,0xfc,0x82,0x3c,0x3f,0x80,0xab,0xfe,0xed,0x8e,0x8b,0xf2,0x7a,0x3f,
+ 0xcf,0xf4,0x3f,0x56,0xbe,0x22,0x5e,0xdc,0x5a,0x78,0x67,0x52,0x8e,0xc6,0x0b,0x76,
+ 0xbe,0x8e,0xc2,0x0d,0x92,0x5c,0x16,0x3b,0x98,0xcd,0x1e,0x01,0x39,0xe9,0xf3,0x1e,
+ 0x95,0xea,0x7e,0x1a,0x43,0x17,0x87,0x74,0xb4,0xfe,0xed,0xac,0x43,0xff,0x00,0x1c,
+ 0x15,0xf9,0x4d,0x63,0xfb,0x64,0xf8,0xaa,0xfa,0x03,0x0d,0xe6,0xb5,0x6b,0xab,0xc4,
+ 0xe1,0x54,0x8b,0xb8,0x50,0xb6,0x14,0x82,0x3e,0x60,0x01,0x1d,0x07,0x43,0x5e,0xe1,
+ 0xe1,0x4f,0xf8,0x28,0xae,0xb3,0x6d,0x6f,0x04,0x1a,0x87,0x87,0xb4,0xeb,0xd8,0xa3,
+ 0x50,0x80,0xda,0xca,0xd1,0xb6,0x00,0xc7,0x7d,0xc2,0xb3,0xa7,0x98,0x52,0x8d,0x4b,
+ 0xce,0xeb,0x4b,0x6c,0x45,0x6e,0x14,0xc7,0xaa,0x4b,0xd8,0xb8,0xcf,0x5b,0xe9,0x2f,
+ 0x4e,0xf6,0x3e,0xf9,0x62,0x76,0x9a,0xf9,0xe7,0xf6,0xae,0x9c,0xc3,0xf0,0xeb,0xe2,
+ 0x0c,0xa3,0x20,0x2f,0x87,0xe4,0x8b,0x8f,0xf6,0x83,0x0f,0xfd,0x9e,0xb9,0xbd,0x0f,
+ 0xfe,0x0a,0x0d,0xe0,0xeb,0xe0,0xab,0xa9,0xe8,0xda,0x9e,0x9e,0xc7,0xa9,0x88,0xa4,
+ 0xcb,0xfc,0xd4,0xfe,0x95,0x61,0x3e,0x3d,0x7c,0x39,0xf8,0x9a,0x6f,0x2d,0x2f,0xbc,
+ 0x41,0x61,0xa7,0xd9,0xde,0xfc,0xb3,0x43,0xa9,0x40,0xd2,0xb4,0x8b,0x9c,0x85,0x3b,
+ 0xd7,0x60,0x1c,0x74,0xc7,0xa7,0x26,0xba,0x6a,0xe3,0xa8,0x3b,0x72,0xca,0xef,0xfa,
+ 0xef,0x6f,0xc4,0xf1,0x27,0x91,0x66,0x54,0x2e,0xea,0x50,0x92,0x5d,0xed,0x7f,0xca,
+ 0xe5,0x5f,0x87,0x3a,0x96,0x9f,0xe1,0xff,0x00,0x82,0x7e,0x13,0x8a,0xe6,0xfa,0x15,
+ 0x9e,0xef,0x47,0xb1,0x86,0x1b,0x68,0xf2,0xef,0x92,0x90,0x92,0x5f,0x68,0x3b,0x06,
+ 0x33,0xcb,0x62,0xbd,0xe3,0xc1,0xb7,0xb7,0x76,0xbe,0x17,0xd2,0xf4,0xfb,0x4b,0x5f,
+ 0x36,0x4b,0x7b,0x74,0x8d,0xe6,0x6e,0x23,0xdc,0x17,0x9c,0x77,0x3c,0xfa,0xe2,0xb1,
+ 0xfc,0x37,0xa3,0xfc,0x39,0xd6,0xe0,0x88,0x58,0x5f,0x69,0x9a,0xcb,0x00,0xa0,0x14,
+ 0xbb,0x49,0x0f,0x1d,0x3e,0x50,0xde,0xc3,0xaf,0x6e,0x2b,0xd2,0x2d,0x92,0x28,0x62,
+ 0x48,0xe1,0x55,0x48,0xd0,0x05,0x55,0x51,0x80,0x07,0xa0,0x14,0xa9,0x53,0xad,0x56,
+ 0x7e,0xd1,0xc9,0x45,0x5a,0xda,0x6a,0xfe,0xfd,0x8f,0x32,0xab,0x50,0x8f,0xb3,0x69,
+ 0xde,0xf7,0xd7,0x43,0x1d,0xbc,0x3f,0x36,0xa4,0x3f,0xe2,0x65,0x70,0xd2,0xa1,0xff,
+ 0x00,0x96,0x29,0xc2,0x7e,0x23,0xbf,0xe3,0x9a,0xbd,0xa7,0x68,0x36,0x3a,0x4c,0x92,
+ 0xbd,0xa5,0xac,0x70,0x3c,0xb8,0xde,0xca,0x39,0x6c,0x74,0xc9,0xab,0xf9,0xaa,0xda,
+ 0x86,0xa9,0x69,0xa4,0xdb,0x3d,0xc5,0xf5,0xd4,0x36,0x76,0xe8,0x32,0xd2,0xcf,0x20,
+ 0x45,0x5f,0xa9,0x3c,0x57,0x74,0x30,0xf4,0xa9,0xbe,0x7b,0x5d,0xf7,0x7a,0xbf,0xbc,
+ 0xe5,0xe6,0x93,0xd0,0xb3,0x93,0x46,0x71,0x5e,0x3f,0xe2,0xcf,0xda,0x77,0xc2,0xda,
+ 0x29,0x68,0x74,0x64,0xb8,0xf1,0x35,0xe6,0x70,0x05,0x90,0xdb,0x06,0x7b,0x66,0x66,
+ 0xf9,0x48,0xf7,0x4d,0xd5,0xc3,0x6b,0x5f,0x12,0x3c,0x71,0xe2,0x0d,0x2f,0xed,0x9a,
+ 0xd6,0xb9,0xa7,0x7c,0x3c,0xd2,0x1c,0x90,0x01,0xfd,0xdc,0xee,0xbe,0xcd,0x20,0xdc,
+ 0xdf,0x54,0x55,0x3c,0x56,0x15,0x71,0xf4,0x29,0x69,0x7b,0xbf,0x23,0x58,0xd0,0x9c,
+ 0xb5,0xb5,0xbd,0x4f,0x46,0xf8,0xa5,0xf1,0x87,0xc2,0x9a,0x5d,0xae,0xbd,0xe1,0x7b,
+ 0xad,0x5e,0x2b,0x7d,0x59,0xec,0x64,0x8d,0x83,0xa9,0xf2,0xe3,0x79,0x23,0x6d,0x8a,
+ 0xcd,0xd0,0x31,0xea,0x17,0xa9,0xaf,0x39,0xf0,0x67,0xc7,0xdf,0xec,0x0f,0x05,0xe8,
+ 0xde,0x1f,0xf0,0xe7,0x87,0xee,0xbc,0x41,0xab,0x41,0x6c,0x91,0xc9,0x3b,0xa9,0x82,
+ 0x02,0xe0,0x60,0x95,0x1b,0x4c,0x8c,0x07,0xfb,0x80,0x71,0xd6,0xbe,0x6d,0x83,0xe2,
+ 0x97,0x86,0xf4,0x5f,0x1a,0x78,0x8e,0x39,0x6d,0xef,0x3c,0x47,0xa9,0xcd,0xa8,0x86,
+ 0x81,0xae,0x65,0x78,0xad,0xef,0xad,0xd6,0x05,0x54,0x76,0x66,0x06,0x43,0x26,0xfd,
+ 0xcd,0xd3,0x3d,0x79,0xe4,0xd6,0xb5,0xc7,0xc6,0x1f,0x16,0xeb,0xf1,0x7d,0x8f,0x4c,
+ 0x96,0xdb,0xc3,0x76,0xd3,0x9c,0x0b,0x1d,0x02,0x1d,0x92,0xc9,0x9e,0xdb,0xd4,0x97,
+ 0x63,0xff,0x00,0x03,0x07,0xda,0xbc,0x1c,0x46,0x63,0x53,0x9f,0x9a,0x3a,0x69,0xa7,
+ 0x5d,0xff,0x00,0x03,0xd2,0x86,0x11,0x72,0xd9,0xff,0x00,0x97,0xfc,0x13,0xd9,0x7c,
+ 0x61,0xe2,0x6f,0x16,0xdf,0xc2,0x27,0xf1,0xbf,0x8d,0xad,0x7c,0x1b,0x62,0xdc,0x8d,
+ 0x32,0xce,0x43,0x04,0xae,0xbe,0xc8,0x85,0xa6,0x6e,0x3b,0x16,0xc7,0xb5,0x79,0xb4,
+ 0x9f,0x12,0xfc,0x11,0xe1,0x73,0x22,0x78,0x5f,0xc3,0x57,0x3e,0x23,0xbe,0x27,0x73,
+ 0x5e,0x6a,0xdf,0xba,0x87,0x77,0x73,0xe5,0xae,0x59,0xbf,0xe0,0x64,0x53,0x3c,0x2b,
+ 0xfb,0x35,0x78,0xd7,0xc5,0xd2,0x7d,0xaa,0x5d,0x28,0xe9,0xf1,0xca,0x77,0x3d,0xde,
+ 0xb9,0x21,0x8d,0x9b,0xdf,0xcb,0xc1,0x72,0x7f,0xdf,0x5f,0xc6,0xbd,0x9f,0xc2,0x5f,
+ 0xb1,0xfe,0x8b,0x6d,0x12,0xcb,0xe2,0x0d,0x5a,0xeb,0x54,0x91,0x46,0x45,0xb5,0xa7,
+ 0xfa,0x34,0x03,0xaf,0xa6,0x5b,0xf2,0x2b,0xf4,0xae,0x07,0xed,0xf1,0x12,0xd7,0xf1,
+ 0xfe,0xbf,0x43,0x47,0x2a,0x14,0x55,0xaf,0xf7,0x7f,0x5f,0xa9,0xf3,0xc6,0xbf,0xf1,
+ 0x27,0xc6,0xbe,0x3b,0x65,0xb0,0xba,0xd5,0xa5,0x82,0xde,0x51,0xb5,0x34,0xad,0x1a,
+ 0x2f,0x2d,0x58,0x7a,0x6c,0x8f,0x96,0xfc,0x59,0xbe,0x95,0xbf,0xe1,0x6f,0xd9,0x8b,
+ 0xc6,0x1a,0xcd,0xb4,0x77,0x2d,0xa5,0x43,0xa4,0x59,0xb9,0x05,0x65,0xd5,0x1c,0x6f,
+ 0x7c,0x9e,0x08,0x89,0x41,0x3d,0xff,0x00,0x89,0x57,0xeb,0x5f,0x67,0xf8,0x7b,0xc1,
+ 0x1a,0x0f,0x83,0x34,0xc7,0x8b,0x45,0xd2,0x6d,0x34,0xd5,0x68,0xf0,0xc6,0x08,0x80,
+ 0x79,0x0e,0x3a,0xb3,0x75,0x63,0xee,0x49,0xad,0x2d,0x46,0xea,0xda,0xd1,0xad,0x96,
+ 0xe2,0x68,0xe0,0x89,0x49,0x72,0x64,0x60,0xa3,0x00,0x71,0xc9,0xf7,0x22,0xb4,0xfa,
+ 0xa6,0x8e,0x53,0x7a,0xe9,0xf8,0x9c,0xff,0x00,0x5c,0x6b,0x4a,0x71,0xb2,0x3c,0x67,
+ 0xc2,0x5f,0xb2,0x1f,0x86,0xf4,0xe3,0x1c,0xda,0xf5,0xfd,0xe7,0x88,0x2e,0x17,0x92,
+ 0x81,0x8d,0xbc,0x03,0xe8,0xaa,0x4b,0xfe,0x05,0xf1,0xed,0x5e,0xb3,0xa1,0xf8,0x0f,
+ 0xc3,0xbe,0x1d,0x8d,0xa0,0xd3,0x34,0x3b,0x0b,0x18,0x40,0x03,0x6c,0x16,0xea,0xb9,
+ 0xeb,0xc9,0x38,0xe4,0xf3,0xd4,0xd5,0xa4,0xf1,0x00,0x9b,0x8b,0x1b,0x3b,0x9b,0xc2,
+ 0x7a,0x3e,0xcf,0x2d,0x3e,0xbb,0x9b,0x19,0x1f,0xee,0xe6,0x9d,0xf6,0x3d,0x56,0xe8,
+ 0x13,0x2d,0xcc,0x5a,0x78,0x27,0xe6,0x5b,0x65,0xf3,0x5b,0x1c,0x63,0x0e,0xc0,0x01,
+ 0xdf,0xf8,0x4d,0x7b,0x54,0xe9,0x53,0x51,0x8f,0xb2,0x85,0xfb,0xfd,0xdd,0xd9,0xc1,
+ 0x3a,0x95,0x27,0xf1,0xc8,0x92,0xe7,0x4c,0xb2,0x86,0x09,0x02,0xaf,0xd9,0xd7,0x6f,
+ 0x3e,0x54,0x8d,0x18,0xff,0x00,0xc7,0x48,0xac,0xa7,0xd7,0x2c,0xd1,0xd6,0x2d,0x3e,
+ 0xea,0xee,0xf6,0x46,0x38,0x09,0x69,0x89,0x54,0xfa,0x8d,0xec,0x0a,0x83,0xf5,0x61,
+ 0x5a,0x16,0xde,0x1e,0xb3,0x3e,0x5c,0xd3,0xab,0xde,0xcc,0xa7,0x76,0xfb,0xb7,0x32,
+ 0x61,0xba,0xe5,0x41,0xe1,0x4f,0xd0,0x0a,0xe2,0x3e,0x3f,0xb4,0x89,0xe0,0x70,0x21,
+ 0x59,0xb7,0x99,0x90,0x0f,0xb3,0x2c,0x85,0xfe,0xf0,0x18,0x02,0x37,0x47,0xe9,0x91,
+ 0xf2,0x92,0x7d,0x8f,0x4a,0xd7,0x92,0x52,0xf7,0x95,0x95,0xed,0xb7,0xf5,0xfa,0x19,
+ 0xe9,0xb1,0xab,0xa8,0xeb,0x9a,0x8d,0xa4,0x37,0x0e,0xfa,0x8e,0x9f,0x6a,0x90,0xc4,
+ 0xf7,0x06,0x0b,0x92,0xb2,0xdc,0x15,0x41,0xb9,0xb8,0x46,0x55,0x5e,0x9d,0x72,0x71,
+ 0x9a,0xf8,0xaf,0xe3,0x5f,0xed,0xd7,0x75,0xf0,0xf3,0xc4,0x33,0x69,0xb0,0x69,0x77,
+ 0x5e,0x23,0xb9,0x8d,0xc2,0xdb,0x5e,0x9b,0xb0,0xb6,0xae,0x76,0xe4,0x8f,0x26,0x3c,
+ 0x09,0x14,0x67,0x01,0x8b,0x03,0xc5,0x7a,0x4f,0xc3,0xc4,0x82,0x6d,0x43,0xc4,0xa8,
+ 0xf1,0x46,0xb7,0x0b,0xa0,0xde,0x87,0x2c,0xd1,0xf9,0xe0,0x14,0xc6,0x18,0xb0,0x8e,
+ 0x61,0xd7,0xfe,0x5a,0x46,0xdf,0xef,0x7a,0xfc,0x7d,0xe2,0x0f,0x0a,0xe9,0xed,0xe3,
+ 0x8f,0x06,0x58,0xea,0x71,0xb3,0x58,0x9b,0xa7,0x49,0x8a,0x0f,0x9b,0x60,0xc0,0x38,
+ 0x18,0x1e,0xb5,0xbd,0x2c,0x2d,0x37,0x2f,0x7a,0xee,0xdd,0xc6,0xe5,0x65,0x71,0x35,
+ 0x2f,0xda,0x27,0xe2,0xe7,0xc4,0x85,0xf2,0xb4,0x99,0xd3,0xc3,0x96,0x43,0x88,0xe1,
+ 0xd3,0xe2,0x30,0x98,0xc1,0xea,0x15,0x94,0xef,0xc7,0xb1,0x72,0x2b,0xe8,0x4f,0xd9,
+ 0xfb,0x47,0xd5,0x7c,0x33,0xf0,0x63,0x77,0x89,0x1a,0xe6,0xea,0xee,0xe3,0x5e,0xb9,
+ 0xba,0x92,0x7b,0x8b,0x70,0x40,0x1e,0x45,0xb8,0x1c,0x98,0xca,0x8e,0x73,0xcb,0x3a,
+ 0x1f,0x46,0xcd,0x7d,0x43,0xf0,0xe7,0xf6,0x76,0xf0,0x47,0x86,0x74,0xdb,0x69,0x2c,
+ 0xf4,0x88,0xe7,0x0c,0x81,0xd6,0x49,0xfe,0x62,0x41,0x19,0x07,0x1c,0x55,0x5f,0x8e,
+ 0x76,0x76,0x9a,0x3c,0x9e,0x1b,0xb7,0xb3,0x8a,0x3b,0x46,0x5f,0xb4,0x18,0xd6,0x00,
+ 0xb1,0xb6,0x7f,0x76,0x0e,0xdd,0xae,0x8f,0x9f,0xf7,0x1b,0x27,0xba,0xb7,0x6d,0x77,
+ 0x4e,0xca,0xc8,0x9b,0xf6,0x3c,0xf7,0xc6,0x93,0xda,0x4f,0xf0,0x85,0xd2,0xee,0xd6,
+ 0x4b,0xe9,0x1f,0x53,0x69,0x22,0x49,0x16,0x42,0x54,0xac,0x1f,0x2c,0x83,0x79,0x1c,
+ 0x2f,0x27,0x21,0xe4,0x51,0xea,0x7a,0x0f,0x79,0xf0,0x9d,0xee,0xad,0x73,0xe1,0xdd,
+ 0x2e,0x3b,0x2b,0x38,0x2d,0xa2,0x16,0xf1,0x93,0x2d,0xec,0xbf,0x30,0xca,0x83,0x8f,
+ 0x2d,0x73,0xc8,0x27,0x04,0x12,0x3a,0x57,0x89,0xea,0xd6,0xf3,0x2f,0xc2,0xf1,0x0a,
+ 0xdb,0x2c,0x51,0xc9,0x7c,0xd2,0x33,0x84,0xc3,0x31,0x2f,0x0a,0x1d,0xc3,0xc9,0x53,
+ 0x9e,0x47,0x2c,0x14,0xf3,0xf7,0x8f,0x19,0xfa,0x71,0x6c,0xe0,0x92,0x30,0x65,0x89,
+ 0x1c,0x81,0x8c,0xb2,0x8a,0xe2,0x8d,0x2f,0x6b,0x88,0x72,0x4d,0xab,0x2f,0xcf,0xfe,
+ 0x18,0xd9,0xca,0xd4,0xd2,0x31,0x4f,0x87,0xaf,0x2f,0x1d,0x57,0x50,0xd5,0xee,0x25,
+ 0x42,0x09,0x31,0x59,0xff,0x00,0xa3,0xa7,0xe6,0x32,0xff,0x00,0xf8,0xf5,0x68,0xdb,
+ 0x68,0x7a,0x7e,0x9d,0x2b,0x5c,0x45,0x69,0x0c,0x53,0x95,0x01,0xae,0x36,0x8f,0x31,
+ 0x80,0x18,0xe5,0xba,0x9e,0x07,0x73,0x55,0xef,0xae,0x74,0x9d,0x25,0x84,0xb7,0x17,
+ 0x11,0xda,0x46,0xa3,0x04,0xf9,0xa5,0x06,0x49,0x18,0x18,0x07,0xad,0x51,0x3a,0xf7,
+ 0xdb,0xbe,0x5d,0x36,0xc7,0x54,0xb9,0x8d,0xb8,0x32,0xb4,0x5e,0x5a,0x01,0xeb,0x99,
+ 0xb0,0x48,0xff,0x00,0x77,0x35,0xb4,0x5d,0x2a,0x6d,0xf7,0x5f,0x37,0xb7,0xde,0x65,
+ 0xef,0x31,0xda,0xe4,0xab,0x25,0xed,0xa5,0xcc,0x6e,0xaf,0x12,0x5b,0xca,0xdb,0x94,
+ 0x8c,0x10,0x50,0x90,0x41,0xff,0x00,0x80,0xd7,0xcb,0xb6,0x17,0x32,0xdd,0x49,0x13,
+ 0x3b,0x67,0x62,0x90,0x14,0x90,0x46,0x49,0x24,0x1f,0x5e,0xb8,0xf5,0xe8,0x2b,0xdc,
+ 0x6f,0xec,0x7c,0x41,0xa7,0x78,0x7a,0xf2,0x0b,0x61,0xa5,0x68,0xcb,0x05,0xa0,0x10,
+ 0x5b,0xcb,0xbe,0x75,0xb6,0x8b,0x64,0xb9,0x2d,0xb4,0x28,0xc8,0xe8,0x15,0x41,0x03,
+ 0x1d,0x48,0xaf,0x00,0xb7,0xb5,0xf1,0x3d,0xa7,0x98,0x20,0xd5,0x34,0x1b,0xa8,0x99,
+ 0xb0,0x64,0xf3,0x1a,0x2d,0xc7,0xdb,0x2a,0x4f,0xe5,0x5e,0x1e,0x26,0x4e,0x72,0x72,
+ 0x92,0xb3,0x3d,0x2c,0x3e,0x89,0xd8,0xdf,0x9e,0x36,0x80,0x47,0x13,0xdc,0xbb,0x1b,
+ 0x87,0x23,0x01,0x48,0xe3,0x77,0x50,0x01,0xcf,0x6c,0xf3,0x8f,0xd2,0xbc,0x0b,0xe3,
+ 0xfc,0x30,0x1f,0x8b,0x5e,0x20,0x53,0xb8,0xec,0x9c,0xa8,0xe0,0xf4,0xce,0x71,0xf7,
+ 0x87,0xad,0x7a,0xda,0x6b,0xba,0xe2,0xf8,0xd7,0x47,0xd3,0xce,0x9b,0x63,0x70,0x92,
+ 0xcf,0x6b,0x0c,0x97,0x4b,0x30,0x68,0xce,0xf9,0x30,0xc8,0x98,0x5e,0x76,0xa8,0x07,
+ 0x9c,0x75,0xaf,0x1d,0xf8,0xba,0xd3,0xdc,0x7c,0x4b,0xf1,0x13,0x8b,0x96,0x00,0xdd,
+ 0xb9,0xc1,0x63,0xc6,0x79,0xc7,0xb0,0xe6,0xbd,0x2c,0xa1,0x59,0xcd,0xfa,0x19,0xe3,
+ 0x1a,0x56,0x47,0xcb,0x1a,0x84,0xc6,0xe2,0xf1,0xc9,0x39,0x55,0xed,0xec,0x2b,0xca,
+ 0xbc,0x7f,0x39,0x97,0x56,0x65,0x1d,0x48,0x09,0xef,0xd3,0x3f,0xd6,0xbd,0x26,0x49,
+ 0x81,0x46,0xc7,0x56,0x3d,0x6b,0xc9,0x7c,0x69,0x31,0x6d,0x66,0xe0,0xa9,0xe4,0x31,
+ 0x07,0xd8,0x01,0x8f,0xe9,0x5c,0x39,0x32,0xe6,0xc4,0x4a,0x4f,0xb7,0xea,0x8f,0xd7,
+ 0x78,0xda,0xa7,0x26,0x5d,0x0a,0x6b,0xac,0x97,0xe0,0x99,0xa5,0xa1,0xba,0xbd,0xb9,
+ 0x11,0x2b,0xcb,0xb4,0xe3,0x08,0x09,0x03,0xd6,0xb4,0xd7,0xcb,0x62,0x49,0x51,0xbb,
+ 0xfb,0x84,0x64,0xd7,0x37,0xe1,0xfb,0xb4,0x8e,0xc8,0xa9,0x98,0xe3,0x71,0xe1,0x48,
+ 0x02,0xba,0x5d,0x2a,0x48,0xae,0x9b,0x72,0x92,0xe0,0x00,0x18,0xe0,0x9c,0x0f,0xc6,
+ 0xbe,0xb2,0x6a,0xc7,0xe2,0x71,0xd5,0xd8,0xaf,0x7b,0x6d,0x0b,0xba,0xc4,0xd1,0xa9,
+ 0x1c,0x12,0x10,0x64,0xf3,0x50,0x9d,0x1e,0xd8,0xee,0x66,0x0d,0x16,0x38,0x03,0x77,
+ 0x39,0xa8,0x6e,0xef,0xe4,0x96,0x47,0x21,0x80,0x0b,0xd0,0x01,0x9e,0x3f,0x95,0x58,
+ 0x82,0x6c,0x58,0xce,0xf2,0xb6,0x5d,0xd0,0x94,0x19,0xc7,0x3f,0x41,0xf8,0xd0,0xd3,
+ 0x48,0x69,0xa7,0x21,0x91,0x78,0x66,0xe1,0x63,0x4b,0x9b,0x75,0xb9,0x16,0xec,0xdb,
+ 0x7c,0xe0,0x87,0x66,0x7e,0xb5,0x62,0x6b,0x5d,0x6a,0xc6,0x50,0xd6,0xf7,0x8c,0xb1,
+ 0xe3,0xe5,0x1b,0xb0,0xdc,0x0e,0xb8,0xae,0xdf,0xe1,0x9e,0xb1,0x75,0x69,0x69,0x79,
+ 0x6f,0xb9,0x45,0xbc,0x56,0xaf,0x38,0x18,0x48,0xce,0xe0,0xc3,0x19,0x62,0x37,0x11,
+ 0xc9,0xe0,0x1c,0x9e,0x2b,0x17,0x51,0xbc,0x6f,0x17,0x78,0xb4,0x5c,0x4d,0x2c,0x56,
+ 0xf2,0x5c,0xc9,0x1c,0x2c,0xa0,0x12,0x00,0x00,0x2e,0xe2,0x58,0xfb,0x67,0xad,0x79,
+ 0x8b,0x11,0x39,0x56,0x9d,0x3a,0x91,0x5c,0xb1,0xeb,0xbf,0xe0,0x7b,0x8e,0x84,0x69,
+ 0x61,0xe9,0x55,0xc3,0xd4,0x6a,0x73,0x7b,0x6d,0xf8,0xaf,0x33,0x37,0x4a,0xf1,0x77,
+ 0x89,0x62,0x99,0xe3,0x6b,0xe5,0xf2,0xd6,0x32,0xfb,0xa4,0xe7,0x76,0x3b,0x0f,0x73,
+ 0x5d,0x1d,0xa7,0x8f,0x75,0xc8,0x6d,0xcc,0xb3,0x45,0x1c,0x81,0x62,0xf3,0x8f,0xae,
+ 0x3d,0x3e,0xb5,0xbf,0x1e,0x83,0xe1,0xcb,0xc6,0x5d,0x31,0x57,0x6d,0xd2,0x82,0xaf,
+ 0x75,0x11,0x67,0x32,0x36,0xe3,0xc6,0x49,0x55,0x24,0x0c,0x1c,0x01,0x82,0x3b,0xd7,
+ 0x9d,0xea,0xed,0xf6,0x09,0x6f,0xec,0x4c,0x21,0x64,0x8e,0x5d,0x84,0x06,0xde,0x01,
+ 0x53,0x8c,0x64,0x70,0x47,0x04,0x57,0x3d,0x1f,0xab,0x63,0x1b,0x4a,0x9d,0x9e,0xfb,
+ 0x5b,0x4e,0xe7,0xa5,0x5b,0x1b,0x9a,0xe5,0xb1,0x4f,0xeb,0x2e,0x4b,0x6d,0xef,0x67,
+ 0xd9,0xde,0xe7,0x67,0xa4,0x7c,0x71,0x60,0xe0,0x1b,0x79,0xe2,0x65,0x20,0x16,0x8d,
+ 0xba,0x57,0xa6,0x78,0x5f,0xf6,0xb6,0xd7,0xfc,0x3d,0xb4,0x58,0x78,0xab,0x54,0xb0,
+ 0x55,0x00,0xec,0x17,0x4f,0xb7,0x1f,0x4c,0xe2,0xbc,0x67,0x43,0x92,0x15,0xf0,0x84,
+ 0xc0,0x58,0xbb,0xde,0x4b,0x72,0x48,0x95,0x10,0x6d,0x64,0x0a,0x06,0xdc,0xfd,0x49,
+ 0xe0,0x57,0x45,0xe3,0x3f,0x84,0x93,0xf8,0x6b,0x47,0xb6,0xbc,0xb8,0xd3,0x91,0x92,
+ 0x48,0xd0,0xba,0xa3,0x02,0xd1,0xb3,0x05,0xc6,0xe1,0xd7,0x39,0xcd,0x63,0x57,0x0d,
+ 0x84,0xa7,0x55,0x42,0xee,0x2d,0xed,0xae,0xff,0x00,0x79,0xd5,0x4b,0x88,0x73,0x4a,
+ 0xb4,0xdc,0xaa,0x42,0x35,0x62,0xb7,0xbc,0x7f,0xca,0xc7,0xd4,0x5e,0x1a,0xff,0x00,
+ 0x82,0x82,0xf8,0xde,0xd2,0x30,0x8d,0xaf,0xda,0xea,0x2b,0x8c,0x01,0x75,0x02,0x16,
+ 0x1f,0x88,0x00,0xfe,0x75,0x6e,0xc7,0xf6,0xa5,0xb6,0xf1,0x06,0xb7,0x0e,0xa3,0xe3,
+ 0x0b,0x4b,0x9f,0x12,0x94,0x25,0x96,0x37,0xd4,0x36,0xa2,0x13,0xfd,0xc4,0x2a,0x55,
+ 0x7f,0xe0,0x20,0x57,0xc4,0x5a,0x56,0x9d,0x69,0x69,0x7d,0x29,0x7b,0x47,0x9c,0x94,
+ 0x3b,0x23,0x61,0xb4,0xab,0x9c,0x72,0x07,0x3d,0x2b,0x62,0xf3,0xc3,0x1a,0xed,0xa4,
+ 0x16,0xf3,0x41,0x14,0x89,0x1d,0xc2,0xef,0x88,0x7f,0x11,0x1c,0x72,0x70,0x7d,0xea,
+ 0x6a,0xe0,0xa7,0x25,0xcb,0xed,0x9d,0xbc,0xff,0x00,0xe1,0xca,0xa5,0x9c,0x60,0x2a,
+ 0x26,0xeb,0xe0,0x63,0x7e,0xf1,0xbc,0x7f,0x4f,0xd4,0xfb,0x83,0x54,0xfd,0xa5,0x46,
+ 0xa6,0x4c,0x3e,0x1f,0x96,0xcf,0xc1,0xd6,0xa7,0x8d,0xf6,0xf6,0x59,0xb8,0xc7,0xbc,
+ 0xdf,0x33,0x7f,0xdf,0x3b,0x2b,0x2f,0xc2,0xda,0x45,0xb7,0x8f,0xb5,0xb6,0xf3,0x7c,
+ 0x4f,0xa5,0x2c,0xf2,0x60,0xbd,0xfe,0xb9,0xa8,0x94,0xdd,0x9f,0x4c,0xe5,0x89,0xf6,
+ 0x6c,0x8f,0x7a,0xf9,0x23,0x48,0xf0,0x9f,0x8c,0x67,0xb5,0x92,0xe0,0xcd,0x15,0xba,
+ 0x23,0x05,0x08,0xc4,0xb1,0x6c,0x81,0xd3,0xf3,0xf5,0xa7,0xdb,0xea,0x7e,0x26,0xd3,
+ 0x42,0x9b,0xa4,0xb6,0x75,0xe3,0x04,0x4c,0x01,0xeb,0x8e,0x9c,0xd7,0x9b,0x3c,0xba,
+ 0xad,0xf7,0x52,0xf9,0xff,0x00,0xc3,0x1d,0x8a,0xb6,0x45,0x5a,0x3e,0xea,0x9d,0x26,
+ 0xfa,0xd9,0x49,0x7e,0xac,0xfb,0xdb,0xe2,0xcf,0xec,0xd3,0xa1,0x78,0x67,0xe1,0x25,
+ 0xdf,0x89,0x3f,0xb7,0xd3,0x5f,0xd4,0xec,0xe5,0x81,0xed,0x7e,0xc4,0x12,0x1b,0x64,
+ 0x73,0x2a,0x0e,0xc4,0x9e,0x84,0x82,0x77,0x01,0xdf,0x1c,0x57,0xd2,0xbf,0x01,0x3c,
+ 0x25,0x0e,0x87,0xe0,0x3b,0x7b,0xc9,0xb4,0x7b,0x2d,0x2e,0xfb,0x50,0x61,0x3b,0x0b,
+ 0x58,0x55,0x3e,0x52,0xab,0xb7,0x9e,0x49,0x18,0x19,0xe4,0x9e,0xb9,0xef,0x5f,0x92,
+ 0x1a,0x5f,0xc4,0xfd,0x5b,0x4c,0x02,0x44,0x7b,0x8b,0x71,0xc0,0x2f,0x0c,0xa4,0x03,
+ 0xdf,0x1d,0x45,0x7a,0x8f,0x87,0x7f,0x6d,0x2f,0x1d,0xf8,0x6a,0x14,0xb3,0x1e,0x26,
+ 0xbc,0x10,0xaa,0x6d,0x58,0x6e,0xd8,0x48,0x02,0xf2,0x30,0x0b,0x0c,0x81,0xc1,0xe8,
+ 0x46,0x31,0x4e,0x31,0xa9,0x45,0x35,0x2a,0x4f,0xf3,0x39,0x67,0x93,0x61,0xf1,0x51,
+ 0xb6,0x1b,0x1b,0x09,0x3f,0xef,0x7b,0xa7,0xeb,0x1d,0xe6,0xa7,0x69,0xa7,0x26,0x27,
+ 0x9a,0x24,0x66,0xfb,0xab,0x90,0x19,0x8f,0xa0,0x1d,0x4f,0xe1,0x5c,0x4f,0x8d,0x3e,
+ 0x31,0xe8,0x5e,0x02,0xb1,0x37,0x1a,0xac,0xf1,0x58,0xa3,0x31,0x50,0xf7,0xd2,0xfd,
+ 0x9d,0x15,0xb6,0x83,0xb4,0x96,0x19,0x04,0xe7,0x20,0x11,0xcf,0x35,0xf0,0xc6,0x91,
+ 0xfb,0x79,0xeb,0x86,0x13,0x1b,0xc3,0x67,0x6e,0xd2,0x05,0x59,0x6e,0xb4,0xe0,0x22,
+ 0x9d,0xc0,0x39,0x27,0x73,0x07,0x19,0xf7,0xc5,0x72,0x7f,0x18,0xfe,0x2b,0xd9,0x7c,
+ 0x71,0x37,0xa2,0x6d,0x52,0xe2,0xce,0x09,0xed,0x22,0x8a,0x2b,0x1b,0xc6,0xf3,0xa2,
+ 0x49,0xd2,0x3d,0x86,0x62,0xeb,0xc9,0x2d,0xdc,0xec,0xfc,0xeb,0xa2,0x9e,0x22,0x8c,
+ 0xa4,0x94,0xe7,0xcb,0xe5,0x63,0x86,0xaf,0x0b,0xe6,0x94,0xd5,0xe1,0x4f,0x9d,0x77,
+ 0x8b,0x4c,0xfa,0x0b,0xe2,0x0f,0xfc,0x14,0x4f,0xc1,0x7a,0x2c,0xcf,0x6b,0xa4,0xea,
+ 0x12,0x6b,0x32,0x21,0xc2,0x5b,0xd8,0x41,0xd4,0x8f,0xe1,0x90,0x92,0x4f,0xd1,0x93,
+ 0xf2,0xae,0xd7,0xc1,0x3f,0x18,0x35,0x6f,0x14,0xf8,0x37,0x47,0xd6,0xb4,0xeb,0x18,
+ 0x34,0xbb,0xad,0x4a,0xc7,0xed,0x8f,0x2d,0xca,0x9b,0xcb,0xd8,0xf3,0x2c,0x8a,0xa0,
+ 0x86,0x21,0xb6,0x85,0x51,0xc8,0x0d,0xd4,0xf1,0xeb,0xf2,0xbf,0xec,0xfb,0xf0,0x03,
+ 0xe1,0x6f,0xd9,0x2d,0x8e,0xb7,0xe3,0x8d,0x3a,0xda,0xf7,0x60,0x0f,0x6f,0xb1,0xa3,
+ 0x01,0xbb,0xfc,0xce,0x14,0x1a,0xfa,0x8f,0x56,0xd2,0xb4,0xbb,0x3b,0xcb,0x4d,0x1f,
+ 0x43,0xb9,0x4d,0x43,0x47,0xb3,0xb6,0x86,0x3b,0x77,0x85,0x96,0xe6,0x3c,0x01,0xcb,
+ 0x00,0xb8,0x75,0x39,0x27,0xe7,0x8d,0x8e,0x3b,0x8e,0x2b,0xd5,0x83,0xa0,0xdd,0xe9,
+ 0xbb,0xbe,0xe7,0xcf,0x57,0xc1,0xe2,0x70,0xda,0x57,0xa6,0xe2,0xfc,0xd3,0x47,0xab,
+ 0xfc,0x2a,0xd4,0x6e,0x2e,0x7c,0x65,0xe3,0xb8,0x67,0xb9,0x69,0x2d,0xed,0x6e,0xad,
+ 0x52,0x35,0x63,0xf2,0x23,0x1b,0x58,0xd9,0xc8,0x1c,0x63,0x25,0xb2,0x78,0x15,0xde,
+ 0x4d,0xe2,0x7b,0x02,0xcd,0x1c,0x12,0xb5,0xec,0x83,0x82,0x96,0x68,0x66,0xc1,0xf4,
+ 0x25,0x41,0x03,0xf1,0xc5,0x79,0x77,0xc1,0x8d,0x2b,0x4e,0xd7,0xfc,0x47,0xf1,0x0f,
+ 0x56,0x96,0x24,0xbc,0xf3,0x35,0x91,0x6e,0xa1,0x9c,0xbc,0x25,0x63,0x86,0x3d,0xac,
+ 0x14,0x92,0xb9,0xf9,0x8f,0xcc,0x06,0x70,0x05,0x7b,0x04,0x48,0xb1,0x2b,0x2a,0xaa,
+ 0xaa,0x83,0x80,0xa0,0x60,0x01,0x53,0x4b,0x9d,0x45,0xab,0xe8,0xdb,0x39,0x2a,0x59,
+ 0x4b,0xee,0x32,0x8d,0xde,0xac,0xd1,0xed,0x86,0xce,0x2b,0x65,0xe0,0x19,0x6e,0xa5,
+ 0xc9,0xfa,0x84,0x5c,0xe4,0x7d,0x58,0x57,0x98,0xfe,0xd0,0x3e,0x75,0xa7,0x83,0xa0,
+ 0x4d,0x43,0x50,0x8a,0x7f,0xb4,0x4e,0xa8,0x23,0x68,0xed,0xe3,0x8f,0x23,0x9c,0x01,
+ 0x38,0x65,0x24,0xfa,0x33,0x0f,0x62,0x0d,0x7a,0xfd,0xf5,0xe4,0x16,0x70,0xef,0xb8,
+ 0x9a,0x38,0x10,0x72,0x5e,0x46,0x0a,0x00,0x1c,0xe7,0x26,0xbc,0x7b,0xf6,0x82,0xbc,
+ 0x4d,0x5b,0xc3,0xda,0x55,0xd6,0x99,0x77,0x72,0xc6,0xde,0xe8,0xab,0x3d,0xa7,0x9e,
+ 0x11,0x95,0xa3,0x6c,0xee,0x68,0x91,0xf2,0xa3,0x68,0xea,0xac,0xa3,0x8c,0x8e,0x95,
+ 0x71,0x8a,0x8c,0xd4,0x39,0xaf,0x6b,0x7f,0x56,0x27,0x7e,0x87,0x9b,0x7c,0x3d,0x86,
+ 0x7b,0x05,0xf1,0x11,0xb8,0x32,0xa4,0x6b,0xa2,0xcf,0xe5,0xc6,0xfe,0x72,0x00,0x19,
+ 0x91,0x72,0xa8,0xfb,0x80,0x1c,0xf5,0x8a,0x5d,0xbe,0xdd,0x08,0xf9,0x33,0xc4,0x88,
+ 0x2e,0x3e,0x26,0xf8,0x2d,0x32,0x0e,0xe7,0x9d,0xbf,0x54,0xff,0x00,0x1a,0xfa,0x77,
+ 0xc2,0xbe,0x54,0x7e,0x0a,0xf1,0xe5,0xcc,0x73,0x43,0x3a,0xa6,0x96,0x54,0x88,0x96,
+ 0x1f,0x2c,0xb1,0x91,0x73,0x9f,0x2d,0xc2,0x13,0xec,0xd1,0x23,0x7d,0x79,0xaf,0x98,
+ 0xd6,0xc4,0xdc,0x7c,0x5f,0xf0,0x55,0xb3,0x7c,0xdf,0x23,0xbe,0x07,0x1d,0x5e,0x3f,
+ 0xf0,0xaf,0x42,0x8a,0x5c,0xcd,0x99,0xcf,0xe1,0x3f,0x53,0x34,0x8d,0x52,0xc7,0x4f,
+ 0xd2,0x6d,0x22,0x79,0xe3,0x42,0xb1,0xaa,0xed,0x0d,0x92,0x30,0x05,0x79,0x6f,0xc7,
+ 0x8b,0xd7,0xbb,0xd4,0xf4,0x75,0x83,0xcc,0x28,0x20,0x9c,0xb4,0x6b,0xb9,0xb7,0x82,
+ 0xc8,0x32,0x51,0x43,0xe4,0x71,0xd4,0xc2,0xe3,0xdd,0x7b,0xfa,0xe6,0x8f,0xa2,0xd9,
+ 0x69,0xf6,0xd1,0x08,0x2d,0xa3,0x42,0x00,0x3b,0xb6,0xf2,0x7f,0x1e,0xb5,0xe3,0x7f,
+ 0xb4,0x00,0xdf,0xe2,0x5d,0x38,0x49,0x84,0xb4,0x8e,0xd3,0x7b,0x3c,0x88,0x36,0x03,
+ 0xbc,0xe3,0xe6,0x74,0xd8,0xa7,0x8f,0xf9,0xeb,0x13,0x7b,0xd3,0x9d,0x94,0x2c,0x85,
+ 0x0e,0x6f,0xb4,0x72,0x7e,0x25,0x7b,0x9b,0x9f,0x86,0x3e,0x1e,0xfb,0x35,0xd4,0x76,
+ 0x93,0x1b,0xb9,0x0c,0x6c,0x21,0x49,0x54,0x11,0x3c,0x21,0x46,0x37,0xe0,0x0d,0xd8,
+ 0xce,0x36,0x91,0xc8,0xd8,0x39,0x15,0xef,0xb6,0xbe,0x12,0x9a,0xfa,0x0b,0x67,0xd5,
+ 0x35,0x9b,0xeb,0xe3,0xb3,0x2e,0x88,0xe2,0xdd,0x18,0x90,0x3b,0x47,0xb4,0xe0,0x60,
+ 0xf0,0x49,0xeb,0xc9,0x35,0xe0,0xfe,0x25,0x99,0x6e,0x3c,0x3b,0xe0,0x08,0x25,0x9c,
+ 0xb3,0x4b,0x7a,0x70,0x5e,0x42,0x4b,0x83,0x38,0xc1,0xe6,0x56,0x24,0x7c,0x83,0xbb,
+ 0x8e,0x9c,0x8e,0x0d,0x7d,0x04,0x7c,0x5b,0xa4,0xda,0x7e,0xe0,0x5e,0xad,0xc5,0xc2,
+ 0x8d,0xad,0x0d,0xb2,0x99,0xa4,0x52,0x3b,0x6d,0x40,0x4d,0x78,0xcb,0xd9,0x3c,0x4c,
+ 0xd5,0x5d,0xac,0x8e,0xc7,0x75,0x4e,0x36,0xf3,0x2e,0x59,0xe8,0x5a,0x7e,0x8d,0x1c,
+ 0x82,0xca,0xce,0x0b,0x62,0xe3,0xe7,0x68,0xd0,0x02,0xde,0xe4,0xf5,0x3f,0x8d,0x5c,
+ 0x03,0x6c,0x6b,0xf4,0x03,0x8a,0xc4,0x3e,0x20,0xbf,0xd4,0x09,0x8a,0xcb,0x45,0xba,
+ 0x39,0x1f,0xeb,0xae,0x99,0x60,0x50,0x3d,0x70,0x49,0x7f,0xfc,0x76,0xab,0xdf,0xe9,
+ 0xba,0xde,0xa7,0x2e,0xd9,0x75,0x58,0x74,0xdb,0x70,0xc7,0x11,0xd9,0xc6,0x4c,0x8e,
+ 0x3b,0x65,0xd8,0xe0,0x1f,0x60,0xbf,0x8d,0x75,0xca,0xac,0x62,0xaf,0x4e,0x3a,0x7d,
+ 0xcb,0xf1,0xb1,0x87,0x2d,0xdf,0xbc,0xca,0x1e,0x3d,0x7f,0xf8,0x94,0x78,0x85,0xf0,
+ 0x36,0x8d,0x35,0xba,0x9c,0x7f,0x0c,0x83,0xaf,0xe3,0x5f,0x3b,0x69,0xfa,0x74,0x09,
+ 0x6e,0x92,0x15,0x79,0xae,0x59,0x43,0x80,0x0e,0xe5,0xc7,0xcc,0x37,0x67,0xd3,0xa7,
+ 0x20,0xfd,0x33,0x5e,0xe5,0xe3,0x8d,0x06,0xd0,0x78,0x67,0x57,0x8a,0xfa,0xe7,0x52,
+ 0xb8,0xb5,0x8a,0xd8,0x3c,0xb2,0xc5,0x71,0xb6,0x69,0x00,0xc1,0xdb,0x90,0x00,0xc7,
+ 0x3d,0x31,0x5f,0x39,0x5a,0xe8,0x9a,0x1d,0xd4,0xac,0x90,0xde,0xeb,0x96,0xb1,0xb3,
+ 0x6d,0xf2,0xda,0x68,0xd8,0xf5,0xe0,0x1e,0x00,0x35,0xf3,0xf8,0x99,0x4d,0xc9,0xb9,
+ 0x1e,0x96,0x1e,0xc9,0x68,0x69,0x5e,0xc5,0x24,0xbe,0x22,0xf0,0xba,0x46,0xdb,0x5e,
+ 0x7d,0x52,0x14,0x8d,0xe2,0x52,0xc9,0x19,0xdd,0xc6,0x72,0x7a,0x01,0xcf,0x19,0xaf,
+ 0x9f,0x3e,0x22,0xdf,0x35,0xcf,0x8e,0x75,0xb9,0x01,0x91,0x77,0x5c,0xb7,0xcb,0x9c,
+ 0x63,0xda,0xbe,0x88,0xf0,0xf6,0x81,0x00,0xf1,0x56,0x85,0x2c,0x7a,0xf6,0xa3,0x78,
+ 0xd6,0xd7,0x71,0xc8,0xb0,0x30,0x47,0x45,0x1b,0x87,0x5e,0x98,0xeb,0x8c,0x8f,0x5e,
+ 0x95,0xf3,0x77,0x8d,0xae,0xc3,0xf8,0xbb,0x57,0x65,0x58,0xd8,0x1b,0x97,0xe4,0xfd,
+ 0x6b,0xd8,0xca,0x7e,0x09,0x18,0x62,0xee,0xda,0xb9,0xf2,0xeb,0xb6,0xd0,0x7d,0x00,
+ 0xe9,0xef,0x5e,0x31,0xe2,0xc9,0x5a,0x6d,0x5a,0x62,0xad,0xc3,0x33,0x67,0xfe,0xfa,
+ 0x35,0xec,0x13,0x49,0x88,0x98,0xfe,0x35,0xe2,0xda,0xdb,0x96,0xbb,0x2f,0xc6,0x08,
+ 0xe0,0xfe,0x3f,0xfd,0x7a,0xcb,0x22,0x8f,0xbd,0x52,0x5e,0x9f,0xa9,0xfa,0x5f,0x1d,
+ 0x55,0xf7,0x30,0xf4,0xfc,0xe4,0xff,0x00,0x2f,0xf3,0x2f,0xe8,0x29,0xb6,0xd5,0x4a,
+ 0x9d,0xa4,0x93,0xce,0x40,0xf5,0xf5,0xae,0x9f,0x4e,0x91,0xad,0x2c,0x9d,0xc1,0xcb,
+ 0xc8,0x0a,0xe7,0x04,0xf1,0xf5,0x3c,0x57,0x3d,0xa2,0x00,0x96,0x31,0x36,0x00,0xc9,
+ 0xc8,0x6e,0x07,0x73,0x5b,0x33,0x48,0x45,0xaa,0x63,0xe6,0x5e,0x47,0x4c,0xfe,0xa6,
+ 0xbe,0xa2,0xa2,0xbb,0xb1,0xf9,0x24,0x5d,0xb5,0x19,0x15,0xbb,0x4d,0x01,0x62,0x55,
+ 0x95,0x47,0x23,0x76,0x4f,0xe4,0x31,0x4d,0x69,0x86,0xc1,0x18,0xe9,0x8c,0x72,0x71,
+ 0xfa,0x0a,0x64,0x6a,0xd2,0xc7,0xb4,0x93,0xd7,0xee,0xf5,0x1f,0x90,0xab,0xb6,0xd6,
+ 0x2d,0x2c,0x45,0xfe,0xe8,0x43,0x83,0xfc,0x39,0xfc,0xaa,0x3d,0x46,0x76,0x3f,0x0f,
+ 0x65,0x78,0x74,0xfd,0x6e,0x74,0x56,0x08,0xb6,0x2d,0x19,0x6c,0xaa,0x63,0x2a,0xc7,
+ 0xab,0x73,0xdb,0xb7,0x35,0x43,0xc1,0x56,0x0f,0x73,0xe2,0xbb,0x29,0x02,0x99,0x18,
+ 0x5c,0x2b,0x1d,0xaa,0x0f,0xf1,0x03,0xd5,0xb8,0xfc,0xf8,0xae,0x8b,0xc1,0x9a,0x5a,
+ 0xc1,0xe1,0x6d,0x66,0x52,0xbc,0xe1,0x13,0x21,0x57,0xe5,0x05,0x5f,0xf8,0x9b,0xa7,
+ 0xe1,0x5b,0x5f,0x0e,0x7f,0xb3,0xec,0x35,0x88,0x41,0x50,0xed,0x96,0x38,0xdb,0xb8,
+ 0x9c,0x29,0x3c,0xe7,0x1e,0x95,0xf3,0x93,0x9d,0xbe,0xb3,0x24,0xbf,0xae,0x53,0xea,
+ 0x63,0x0f,0x77,0x09,0x17,0xfd,0x7b,0xc5,0x0d,0x2f,0x45,0x92,0x6f,0x88,0xb7,0x2b,
+ 0xbc,0x4b,0x9b,0x89,0x5b,0xcb,0x71,0xe6,0x13,0x8d,0xdf,0x40,0x7e,0xbd,0x2b,0x23,
+ 0xc7,0x7a,0x21,0x79,0xa7,0x96,0x2b,0x52,0x63,0x49,0x64,0x67,0xbb,0x39,0x21,0xd9,
+ 0x9f,0xee,0x80,0xa3,0x6f,0x1f,0x5a,0xf4,0xcf,0x04,0x5e,0xda,0xdc,0xfc,0x53,0xba,
+ 0x6b,0xa8,0x23,0x76,0xcc,0xaa,0x86,0x55,0x2e,0x40,0xf9,0xb2,0x36,0xaf,0x1d,0xcf,
+ 0x4f,0x6a,0xda,0xbf,0xd7,0xf4,0xcb,0xb8,0xe4,0xb5,0xfb,0x30,0xbe,0x04,0xe1,0xa3,
+ 0x58,0xcb,0x29,0xeb,0xd8,0x03,0xfc,0xeb,0x9e,0x8d,0x49,0x43,0x10,0x9d,0xb6,0x8c,
+ 0x7f,0x51,0xe2,0xa2,0xa5,0x86,0x71,0x7d,0x67,0x27,0xf9,0x18,0xff,0x00,0x0e,0x6c,
+ 0x6e,0xed,0xb4,0xbb,0x0b,0x13,0xa7,0x66,0xdd,0x11,0xfe,0x79,0x5f,0x60,0x6d,0xe0,
+ 0x9e,0x36,0xe4,0x93,0x92,0x00,0xe9,0xda,0xba,0xd8,0xbc,0x45,0x73,0xa1,0x5f,0xde,
+ 0x4b,0xad,0xcf,0x1b,0x69,0x92,0x70,0x2d,0x51,0x19,0x01,0xc7,0x18,0xef,0xdb,0xdb,
+ 0x9a,0xc8,0xb6,0xf1,0xd3,0x69,0x17,0x56,0xc5,0x61,0x86,0xca,0x08,0x64,0x52,0x44,
+ 0xd3,0x25,0xbf,0xca,0x08,0xe0,0x64,0x93,0xd3,0xda,0xb1,0xfe,0x23,0xd8,0xe9,0x7e,
+ 0x26,0xb7,0xb8,0xd5,0xf4,0x19,0xed,0x75,0x6b,0xb8,0x9c,0x49,0x3c,0x30,0xc7,0x2b,
+ 0xaa,0xa6,0x39,0x3b,0xce,0x17,0x8e,0x32,0x31,0xd3,0x27,0x3c,0x57,0x25,0x68,0x42,
+ 0x58,0x9e,0x6a,0xea,0xca,0x4a,0xd7,0xf3,0xbf,0x7e,0x9d,0x0d,0xf0,0xf3,0xa8,0xf0,
+ 0xdc,0xb8,0x77,0xac,0x5b,0x6d,0x77,0x56,0xed,0xd7,0xa9,0xa3,0xa2,0x6a,0xfe,0x1d,
+ 0x5b,0xfd,0x43,0x59,0x92,0x33,0x2f,0xd9,0x40,0x70,0xd1,0xa2,0xa3,0x0e,0xb8,0x04,
+ 0xb3,0x63,0x3c,0x76,0x19,0xa9,0xbc,0x41,0xe3,0xeb,0x1f,0x13,0xf8,0x71,0x35,0x3b,
+ 0x7b,0x39,0x92,0x5b,0x79,0x3e,0xce,0x04,0x21,0xd0,0x37,0x4c,0x0c,0xa9,0xe7,0x82,
+ 0x3b,0xd7,0x96,0xf8,0x7f,0xc4,0x37,0x31,0x78,0x4f,0xc4,0xf3,0x47,0x1d,0xbc,0x12,
+ 0x2a,0xc6,0xb8,0x8e,0xdc,0x36,0xdc,0xb1,0x07,0x04,0x82,0x07,0xd6,0xb8,0xc6,0xf1,
+ 0x6e,0xa7,0x3c,0x4b,0x19,0xd4,0x26,0xda,0xa3,0x68,0x45,0x7c,0x60,0x7d,0x06,0x2b,
+ 0xb2,0x18,0x35,0x5a,0xbc,0xe6,0x9d,0x9c,0x5a,0xb7,0xa5,0x95,0xd7,0xce,0xe6,0x55,
+ 0x71,0x2b,0x0f,0x87,0xa7,0x19,0x2b,0xa9,0xc5,0xbf,0x9d,0xda,0x4f,0xe5,0x63,0xe9,
+ 0x1f,0x07,0x6b,0xf6,0x9a,0x87,0x87,0xe4,0x69,0x74,0x6b,0xb8,0xda,0xd5,0x77,0xcb,
+ 0x2a,0x29,0xf9,0xb2,0xc4,0x8c,0x16,0x6f,0x41,0xd4,0x8a,0xc4,0xb1,0xba,0xd4,0xf5,
+ 0xdd,0x5d,0xed,0xf4,0xab,0x28,0x85,0xb3,0x3b,0x14,0x2d,0x24,0x45,0x82,0x76,0x2c,
+ 0x3b,0x76,0xfc,0x6b,0x84,0xf0,0x1d,0xa4,0xda,0xa7,0x81,0xbc,0x53,0x3b,0x6e,0x95,
+ 0x82,0xc6,0x83,0x7b,0x12,0x7a,0x9e,0x83,0xbf,0x5f,0xc3,0xf1,0xac,0x9f,0x01,0x2c,
+ 0x96,0xaf,0xaf,0xf9,0xa8,0x15,0xa2,0xd3,0xe5,0x18,0x91,0xfc,0xbc,0x1e,0x3d,0x3a,
+ 0x9f,0x6a,0xc3,0x91,0xd2,0x78,0x89,0xc6,0x57,0xb3,0x49,0x27,0xaa,0xd5,0x2f,0xf3,
+ 0x3a,0x63,0x18,0x62,0x3e,0xad,0x4e,0x49,0x2b,0xa6,0xdb,0x5b,0xe8,0xdf,0xe8,0x8f,
+ 0x4b,0xf1,0xc9,0xd4,0xfc,0x37,0x6e,0x93,0xc7,0x71,0x63,0x73,0x6e,0x0e,0x19,0x63,
+ 0x96,0x32,0x54,0xe3,0xee,0x90,0x33,0xfc,0xfb,0x56,0x04,0x7a,0x2e,0xab,0xad,0x68,
+ 0x49,0xa9,0x1b,0x4b,0x39,0x83,0xa9,0x74,0x8e,0x17,0x8c,0xca,0x79,0x3c,0x6d,0x51,
+ 0x9c,0xe7,0x35,0x53,0xc2,0x7a,0x74,0xf7,0xdf,0x0b,0xf5,0x47,0x94,0x5c,0x3d,0xbb,
+ 0xdc,0x85,0x20,0x30,0x54,0x1b,0x48,0x27,0xeb,0xff,0x00,0xd6,0xac,0xfb,0x9f,0x10,
+ 0x5e,0xe8,0x5e,0x0c,0xf0,0xea,0x58,0xcc,0xd1,0x24,0xd2,0x4a,0xce,0xaa,0xa5,0x03,
+ 0x00,0xfc,0x02,0xdc,0x16,0x07,0x3c,0xfe,0x14,0xd5,0x6a,0xf0,0x8f,0xb3,0x8d,0x9c,
+ 0xd4,0xad,0x76,0xb7,0x56,0xb9,0x4b,0x09,0x86,0xa9,0x3f,0x6b,0x2b,0xc6,0x1c,0x8a,
+ 0x56,0x5d,0x1d,0xed,0xd4,0xe4,0x25,0xd2,0xe5,0xfe,0xd6,0xba,0xb4,0x2c,0x63,0xb8,
+ 0x61,0xb4,0x2c,0x6e,0x32,0x87,0xd3,0x92,0x39,0xf5,0xaa,0x11,0xcd,0xae,0x69,0xd1,
+ 0xfe,0xef,0x52,0xdc,0x41,0xc0,0x49,0x4e,0xec,0xfa,0xfa,0xd7,0xa1,0xde,0x59,0xc2,
+ 0x7e,0x2c,0x59,0xaa,0x22,0x0f,0x9e,0x39,0x1d,0x60,0x6e,0x33,0xb7,0x71,0x3b,0x8d,
+ 0x61,0xf8,0xa7,0xc4,0xdf,0xf0,0x93,0x6b,0x90,0x40,0x6c,0x2d,0xad,0xfc,0x99,0x99,
+ 0x37,0xc0,0x32,0xd2,0x82,0x40,0xf9,0x98,0xf5,0xe9,0xfa,0x9a,0xf4,0x21,0x8a,0xfa,
+ 0xc3,0x8c,0x5d,0x34,0xd3,0x8a,0x93,0xbd,0xb4,0x38,0xa5,0x85,0xa9,0x81,0x53,0x9d,
+ 0x3a,0xee,0x32,0x52,0x71,0x56,0xba,0xbe,0xdd,0x56,0xdb,0x95,0xed,0x7c,0x6b,0xab,
+ 0xd8,0x45,0x99,0x15,0x88,0x4f,0xbc,0x46,0x40,0x07,0xf1,0xc0,0xfc,0x2b,0x6b,0x49,
+ 0xf8,0xf3,0x71,0xa3,0xdc,0x29,0x5b,0x8b,0x9b,0x77,0x1f,0xf2,0xd2,0x26,0x23,0xf9,
+ 0x62,0xb7,0xb5,0x0b,0x2d,0x2b,0x52,0x97,0x56,0xd0,0x34,0xe4,0x93,0x4f,0xbe,0x86,
+ 0x36,0x75,0x54,0x73,0x24,0x72,0x10,0x01,0x20,0xe5,0xb0,0x38,0xef,0x8e,0x2b,0x83,
+ 0xf0,0xb7,0x83,0x47,0x89,0x85,0xcb,0xdc,0xcb,0x0d,0xa5,0x95,0xb8,0x25,0xee,0x0a,
+ 0xee,0x20,0xf6,0x1d,0x40,0xfc,0x49,0xae,0x28,0x7d,0x46,0xb4,0x25,0x52,0x70,0x70,
+ 0xb5,0xbc,0xb7,0xdb,0x6e,0xe7,0xbd,0xf5,0xfc,0xf3,0x09,0x56,0x34,0x29,0xd6,0x55,
+ 0x39,0xaf,0xbd,0x9a,0xd3,0x74,0xdb,0x57,0xd0,0xfa,0x13,0xe1,0xef,0xed,0xbf,0xe2,
+ 0x7f,0x08,0x97,0x1a,0x6f,0x89,0xdd,0x16,0x59,0x3c,0xd9,0x63,0xb9,0x55,0x90,0x48,
+ 0xf8,0x00,0xb3,0x6f,0x07,0x27,0x00,0x0c,0xe7,0x3c,0x57,0xb8,0x78,0x77,0xfe,0x0a,
+ 0x1b,0xac,0xde,0xba,0x0d,0x5e,0xde,0x0b,0xdb,0x6c,0x7c,0xcb,0x63,0x29,0xb6,0x67,
+ 0xf7,0x2c,0x03,0x11,0xf8,0x11,0x5f,0x9f,0x7e,0x25,0xf0,0x6a,0x78,0x77,0x53,0x96,
+ 0xce,0x65,0x12,0x74,0x64,0x91,0x0f,0xdf,0x04,0x64,0x11,0x83,0xfd,0x6b,0x9c,0x5b,
+ 0x23,0x6d,0x26,0x6d,0xee,0xe7,0x81,0xb3,0xd1,0x4d,0x74,0xc7,0x2f,0x8d,0x48,0x29,
+ 0x61,0xeb,0x3b,0x3d,0xba,0xaf,0xd0,0xf3,0xeb,0x67,0x54,0x9d,0x49,0x53,0xcc,0x30,
+ 0x50,0x72,0x5a,0x36,0xbd,0xd7,0xf7,0xab,0x9f,0xb1,0xde,0x0d,0xfd,0xb5,0x7e,0x16,
+ 0xea,0x86,0x2f,0xed,0x2d,0x2e,0xf3,0x4d,0xb9,0xc8,0x63,0x3c,0xc0,0x5d,0xe0,0x8e,
+ 0x99,0x7c,0x97,0x38,0xfa,0x56,0xb7,0xc6,0x5f,0x8a,0xbe,0x14,0xf8,0x8f,0xe1,0xcd,
+ 0x30,0xf8,0x73,0x57,0xb4,0xd5,0x8c,0x17,0x22,0x67,0x8d,0x42,0x79,0x89,0xf2,0x30,
+ 0x07,0x63,0xc9,0x13,0x8e,0xb8,0xcc,0x6d,0xbb,0x9e,0x33,0x93,0x5f,0x8e,0x76,0xda,
+ 0xd6,0xb7,0x6b,0x1e,0x20,0xbd,0x33,0x48,0x0f,0xdc,0x93,0x91,0xf8,0x57,0x4b,0xe1,
+ 0xcf,0x8a,0x9a,0xc6,0x99,0xab,0x5b,0xc3,0x74,0xc6,0x06,0xdc,0x00,0x92,0x37,0xe8,
+ 0x7b,0x71,0x55,0xc9,0x8c,0xa0,0xaf,0x68,0xc9,0x2e,0xda,0x33,0x38,0xd3,0xc8,0xb1,
+ 0xd2,0x51,0x84,0xa7,0x4a,0x4f,0x4d,0x6d,0x28,0xfd,0xfb,0x9f,0xa7,0xfe,0x1c,0xb9,
+ 0x94,0xf8,0x03,0xc7,0xd7,0x32,0xef,0x33,0x45,0x63,0x02,0x91,0x2b,0x4c,0x65,0x19,
+ 0x97,0xbf,0x9b,0x1a,0xca,0x07,0x1d,0xdd,0xc7,0x1d,0x47,0x5a,0xf9,0xbf,0x45,0x87,
+ 0xed,0x3f,0xb4,0x5f,0x85,0xe0,0xce,0x7c,0xbb,0x58,0xcf,0xe7,0x29,0xff,0x00,0x0a,
+ 0xea,0xbe,0x10,0xfc,0x60,0x8f,0x55,0xf8,0x43,0xe3,0x3d,0x1e,0xf4,0x05,0xbb,0x9e,
+ 0x18,0xb6,0x94,0x04,0x82,0xca,0xfb,0x87,0xc9,0xf7,0x46,0x72,0xc4,0xb6,0x33,0xc7,
+ 0x39,0xe0,0x57,0x96,0x78,0x1b,0x5d,0xd5,0xa4,0xfd,0xa1,0xa4,0x92,0x1c,0x4f,0xb6,
+ 0x68,0x6d,0xa0,0x96,0x58,0xbe,0x58,0x40,0x27,0xe5,0xdc,0x06,0x73,0x92,0x5b,0x19,
+ 0xaf,0x43,0x0b,0x56,0x35,0x69,0xba,0x91,0xd8,0xf9,0xdc,0xc7,0x03,0x53,0x01,0x5e,
+ 0x58,0x6a,0xbb,0xaf,0xc7,0xcc,0xfd,0x6c,0x1a,0x85,0xad,0x94,0x28,0x67,0xb8,0x8a,
+ 0x00,0xdc,0x2f,0x98,0xe1,0x72,0x7d,0x06,0x6b,0xc3,0x3e,0x37,0xdc,0x41,0x27,0x8f,
+ 0x6c,0x66,0x42,0x9e,0x72,0xd8,0x21,0x8d,0x81,0x45,0x97,0x99,0x24,0xfb,0xa7,0x72,
+ 0x49,0xdb,0xa2,0x97,0x1f,0xec,0x77,0x3c,0x94,0xfe,0x3b,0xd7,0x6c,0x75,0x48,0x84,
+ 0x57,0x76,0x96,0x2b,0x19,0xf2,0xe2,0x29,0x01,0x22,0x55,0xe7,0x7b,0x33,0x31,0x19,
+ 0x38,0xc7,0xce,0x33,0x93,0x90,0x3f,0x88,0x0e,0x8f,0xc6,0x1a,0x4e,0xab,0xe2,0x5b,
+ 0x9b,0x3b,0xf8,0x04,0xc7,0x4c,0x7b,0x08,0x92,0x4b,0xc9,0x6e,0x04,0x10,0x6e,0xde,
+ 0xfc,0x33,0x33,0xb2,0x91,0xf3,0x01,0x86,0x85,0xba,0x8e,0x79,0xa7,0xed,0x39,0x93,
+ 0x47,0x9e,0x91,0x0e,0xa7,0xa5,0xc3,0xa9,0xdd,0xf8,0x02,0xc2,0xff,0x00,0x4d,0x8e,
+ 0xea,0xda,0xe6,0x78,0x45,0xc2,0x5d,0xc2,0x4e,0x33,0x24,0xcd,0x82,0xad,0x1a,0x60,
+ 0x9f,0x2c,0x67,0x2a,0x0f,0xd7,0x24,0x9f,0xa3,0x61,0x8a,0x38,0x57,0x11,0xc6,0xa8,
+ 0xb9,0xc8,0x0a,0x31,0x5f,0x2e,0x47,0xe2,0xfd,0x11,0x7e,0x21,0xf8,0x2f,0x49,0xd3,
+ 0xae,0xa2,0xd6,0xee,0x34,0x8f,0x21,0x2e,0x2d,0xf4,0x4d,0x97,0x7e,0x59,0x02,0xe3,
+ 0x39,0x31,0x46,0x14,0x60,0xb2,0x93,0xca,0xe3,0x3f,0x77,0x8c,0x8f,0xa3,0x4e,0xa9,
+ 0xab,0xdc,0xff,0x00,0xc7,0xb6,0x8a,0xd1,0x03,0xfc,0x57,0xb3,0xaa,0x0f,0xc9,0x37,
+ 0x9a,0xe3,0xa1,0x38,0xc6,0xa4,0xdd,0xb5,0xf2,0x4d,0xf4,0x37,0x9a,0x6d,0x44,0xd6,
+ 0x88,0x83,0x3b,0x91,0x8c,0xed,0x1d,0x3e,0xa6,0xa2,0x9a,0x36,0x67,0xdc,0x39,0x04,
+ 0xe3,0x1e,0x95,0x47,0xec,0x5a,0xbd,0xc4,0x79,0x92,0xee,0x0b,0x49,0x18,0xfc,0xdf,
+ 0x67,0x88,0xbe,0x07,0xa0,0x2c,0x7a,0xfb,0xe3,0xf0,0xa8,0x9f,0xc2,0x50,0x5c,0x73,
+ 0x7b,0x7f,0x7d,0x7a,0x3a,0xe2,0x4b,0x83,0x1a,0xff,0x00,0xdf,0x31,0xed,0x07,0xf1,
+ 0xad,0xa5,0x09,0xd5,0x87,0x27,0x27,0x5b,0xea,0xed,0xfe,0x66,0x49,0x25,0xd4,0xe4,
+ 0x3e,0x2c,0x5f,0x25,0x87,0x83,0xfc,0x46,0xc6,0xe1,0x62,0x2f,0x1a,0xc1,0x1b,0x33,
+ 0x05,0xc9,0x6f,0x2c,0x63,0x27,0xea,0x6b,0xe7,0x5d,0x1d,0xbc,0xc7,0x8a,0x38,0x0d,
+ 0xba,0x64,0x86,0x77,0x2e,0x0e,0xe1,0xd3,0x93,0xfc,0x20,0x0c,0xe4,0x0a,0xf6,0x2f,
+ 0x8d,0x30,0x68,0xf6,0xd7,0x76,0x7a,0x38,0x4b,0x55,0xb6,0xf2,0xbc,0xd3,0x6c,0xe1,
+ 0x4a,0xe4,0x92,0x37,0x60,0xf7,0x38,0xeb,0x5e,0x5f,0x6f,0xe1,0x8f,0x0e,0x07,0x3b,
+ 0x74,0xbb,0x37,0xe4,0xe3,0x80,0x7f,0x95,0x7c,0xfe,0x2a,0xea,0xa4,0xa2,0xfa,0x1e,
+ 0xa5,0x04,0x94,0x6f,0xdc,0xd3,0xb6,0x9e,0x3f,0xed,0xcd,0x3e,0x46,0x78,0x20,0xb7,
+ 0x37,0x27,0x68,0xb7,0x89,0x4b,0x7c,0xa1,0xbe,0x66,0x2b,0xd3,0x9c,0x1e,0xbc,0xe0,
+ 0xfe,0x3f,0x1f,0xf8,0x9a,0x58,0xaf,0xfc,0x41,0xa8,0xdc,0x0b,0xb9,0x00,0x92,0x77,
+ 0x60,0x14,0x48,0x46,0x0b,0x1e,0xe1,0x48,0xfc,0x8d,0x7d,0x4f,0xab,0xfc,0x3d,0xd1,
+ 0x2f,0xad,0x19,0xa2,0xb4,0xfb,0x2c,0xc1,0x48,0x49,0x2d,0x6e,0x24,0x89,0xd7,0x23,
+ 0x1c,0x15,0x60,0x47,0x06,0xbc,0xd9,0xfe,0x09,0x05,0x6d,0xb1,0xdd,0xea,0x01,0x07,
+ 0x4f,0xf8,0x98,0x4e,0x7f,0x9b,0xd6,0xd8,0x2c,0x75,0x3c,0x2c,0x5c,0x64,0x9e,0xa3,
+ 0xad,0x41,0xd6,0x69,0xa6,0x7c,0x0f,0x71,0x76,0xb3,0xc1,0x2c,0x71,0xe1,0x9c,0xa9,
+ 0x03,0x6b,0xa9,0x04,0xe3,0xb7,0x35,0xe6,0xda,0x87,0x86,0x35,0x19,0x80,0x63,0x6b,
+ 0x29,0xd8,0x48,0xd8,0x17,0x3c,0x7f,0x9c,0x57,0x43,0x3f,0xc3,0x4d,0x66,0xd1,0xca,
+ 0xa3,0x4a,0x08,0xef,0x95,0x6f,0xea,0x2a,0xbb,0xf8,0x6f,0xc4,0xb6,0x58,0x28,0xf3,
+ 0x71,0xdc,0xa3,0x0f,0xe5,0x9a,0xfb,0x3c,0x3e,0x5d,0x0c,0x22,0x7e,0xcb,0xa9,0x86,
+ 0x63,0x9e,0x56,0xcd,0x9c,0x1e,0x25,0xaf,0x76,0xf6,0xb2,0xb6,0xff,0x00,0xf0,0xc6,
+ 0x65,0x94,0xe7,0x4d,0xb4,0x8e,0x19,0xa1,0x9a,0x37,0x5c,0xe7,0x28,0x71,0x57,0xed,
+ 0xaf,0xad,0x27,0x5c,0x34,0xc0,0x2a,0xfc,0xc7,0x78,0xc7,0x3f,0x88,0xa7,0x7d,0xbb,
+ 0xc4,0xb6,0xa7,0x0e,0xde,0x67,0xa8,0x66,0xeb,0xf9,0xd3,0x5b,0x5c,0xd4,0x71,0x8b,
+ 0x8d,0x2a,0x29,0x7e,0x91,0xa9,0x27,0xf2,0xae,0x87,0x46,0x4c,0xf2,0x15,0x44,0xf6,
+ 0x66,0xee,0x9f,0x36,0x8e,0x61,0x74,0x99,0xe5,0x52,0xfc,0x29,0x89,0x95,0xc0,0xfc,
+ 0x0e,0x3d,0xaa,0x3f,0x3a,0x38,0x76,0xc3,0x01,0x2c,0x82,0x4d,0xfd,0x31,0xbb,0xd3,
+ 0x23,0xff,0x00,0xaf,0x58,0x4d,0xab,0xd8,0x30,0xcd,0xd6,0x84,0x17,0xd4,0x80,0xc9,
+ 0xfc,0xaa,0x25,0xbd,0xd0,0x9b,0x22,0x35,0xba,0xb4,0xcf,0x68,0xe5,0xe3,0xf5,0xac,
+ 0x9d,0x22,0xd3,0xea,0x7b,0x0e,0x8d,0xe2,0xff,0x00,0x0e,0x43,0xa3,0x49,0x69,0x77,
+ 0x04,0xa2,0x79,0xb6,0x79,0xf2,0x47,0x16,0xe2,0xe4,0x75,0xf9,0x8b,0x9d,0xbd,0x4f,
+ 0x41,0xde,0xb3,0xb4,0xef,0x10,0x8d,0x1f,0xc4,0x82,0xf2,0xd2,0x28,0x5f,0x4f,0x59,
+ 0x18,0x44,0x93,0x44,0x1c,0xec,0x39,0x00,0x90,0x71,0x93,0x8e,0x7e,0xa2,0xbc,0xe2,
+ 0x26,0xd3,0xdb,0xfd,0x5e,0xb3,0x71,0x11,0xf4,0x95,0x03,0xd6,0xfc,0x1a,0x82,0xb2,
+ 0x2c,0x63,0x51,0xb6,0xb8,0x03,0x03,0x74,0x80,0xa9,0xfe,0x55,0xe4,0xac,0xb6,0x10,
+ 0xe7,0xb3,0x6d,0x4f,0x75,0x73,0xd9,0x96,0x67,0x56,0x6a,0x9f,0x32,0x49,0xc3,0x66,
+ 0x91,0xed,0x16,0xba,0x9d,0x96,0x8b,0xa8,0xff,0x00,0xc2,0x43,0x15,0xed,0xbc,0xa1,
+ 0xd0,0x95,0x81,0x4c,0x48,0xca,0x4a,0xfc,0xc0,0xaa,0x64,0x8c,0x93,0xed,0xf9,0x57,
+ 0x14,0x34,0xfd,0x7b,0xc4,0x2e,0xc4,0xcd,0x79,0x2c,0x2c,0x73,0xcb,0x79,0x71,0x81,
+ 0xf8,0x91,0x9f,0xc3,0x35,0x9f,0xa0,0xf8,0x92,0x2d,0x1a,0xe3,0xed,0x3f,0xd9,0xf1,
+ 0x5f,0x32,0xae,0x15,0x44,0xeb,0xc1,0xf5,0x19,0xcf,0x3c,0x7e,0xb5,0x35,0xef,0xc5,
+ 0x4d,0x60,0xb2,0xaa,0x69,0x12,0x43,0x18,0x3b,0x4b,0x46,0x44,0x87,0x1e,0xbd,0x6b,
+ 0x8b,0x0f,0x81,0xab,0x86,0x93,0x6b,0xde,0x6e,0xca,0xef,0xb2,0xd8,0xe8,0xc5,0xe3,
+ 0xe9,0xe2,0x94,0x57,0x2a,0x8a,0x57,0xd1,0x77,0x7d,0x4e,0x8b,0x43,0xf8,0x4a,0x75,
+ 0x0d,0x62,0xca,0xce,0xe6,0xee,0x3b,0x57,0x98,0x3b,0x03,0x1e,0x64,0x27,0x68,0x1c,
+ 0x73,0xb7,0xd6,0xba,0xad,0x2b,0xc2,0xd6,0x5e,0x08,0x4d,0x7b,0xed,0x53,0x43,0x3d,
+ 0xc4,0x76,0x72,0x05,0x89,0xd4,0xfc,0xc7,0x1c,0xe0,0x82,0x7f,0xc2,0xb9,0x68,0x3c,
+ 0x59,0xa1,0x4d,0xae,0xc7,0x35,0xcd,0xdd,0xc4,0xf2,0x47,0x08,0x2a,0xb2,0xa3,0x11,
+ 0xbd,0x9b,0x27,0x00,0x0c,0x0c,0x6d,0x1f,0x9d,0x66,0x7c,0x55,0xf8,0x91,0x2f,0x88,
+ 0xae,0xe1,0xb3,0xfb,0x5a,0x47,0x65,0x1c,0x40,0xf9,0x29,0xb6,0x3c,0x92,0x73,0xc8,
+ 0x5e,0x3d,0x2b,0x96,0xbd,0x0c,0x56,0x22,0xa2,0xa7,0x7f,0x75,0xda,0xfe,0x56,0x77,
+ 0xd3,0xb9,0xbe,0x17,0x11,0x85,0xc3,0x41,0xd4,0x6b,0xde,0x57,0xb5,0xba,0xdd,0x5b,
+ 0x5e,0xc3,0xa0,0x86,0xda,0xe3,0xc1,0xfe,0x23,0x30,0xa1,0x4f,0x34,0xc2,0x7c,0xb3,
+ 0x26,0xdc,0x61,0xbf,0xba,0x3e,0xf7,0xaf,0xa0,0xe6,0xb8,0x99,0xfc,0x31,0x35,0x8e,
+ 0x8a,0x9a,0x94,0xc3,0x16,0xd2,0xcb,0xe5,0xa1,0xce,0x0e,0x79,0xff,0x00,0x0a,0xeb,
+ 0xbc,0x09,0xae,0x7f,0x65,0x49,0x2c,0x8d,0x2c,0x52,0xdb,0x18,0xbc,0xa9,0x2d,0x44,
+ 0x8a,0x1a,0x50,0x47,0xa9,0x07,0x03,0xa6,0x4f,0xe1,0x58,0xff,0x00,0x10,0xbc,0x58,
+ 0xda,0xdd,0xe4,0x56,0x50,0x5a,0x8b,0x0b,0x2b,0x55,0x5d,0xb6,0xe4,0x6e,0x60,0x71,
+ 0xdc,0x9f,0xaf,0x60,0x3e,0x95,0xb5,0x38,0xe2,0x29,0x62,0x65,0x08,0xc6,0xf1,0x6e,
+ 0xed,0xf9,0x5a,0xd6,0xf5,0x2e,0xac,0xf0,0x95,0xf0,0x71,0x9c,0xe5,0xef,0xc6,0x36,
+ 0x4b,0xce,0xf7,0xbd,0xfb,0x6a,0x6d,0xf8,0x53,0x56,0x9f,0x4a,0xf8,0x6b,0xe2,0x13,
+ 0x68,0xf2,0xc7,0x13,0xc9,0x16,0x42,0x28,0xc1,0x3b,0x87,0x52,0x7a,0x76,0xa8,0x7c,
+ 0x1b,0x78,0xd7,0x9a,0x6f,0x88,0xaf,0x15,0x36,0x4a,0xd6,0x6c,0x8c,0x51,0x37,0xe4,
+ 0x9c,0xf4,0x3f,0xc3,0xf5,0xab,0x76,0x97,0x1e,0x15,0x7f,0x09,0xbe,0x9c,0xd7,0xd2,
+ 0xda,0xcb,0x28,0x8c,0xce,0x65,0xdc,0xc7,0xcc,0x55,0x19,0x0a,0x02,0xe3,0x19,0x1d,
+ 0xcd,0x58,0xf8,0x58,0x60,0x9e,0xcb,0x51,0xd1,0xe6,0x31,0xc4,0xba,0x82,0x04,0x59,
+ 0x24,0x7f,0x2c,0xee,0x19,0xc7,0x63,0x90,0x73,0xed,0xf9,0x91,0x5c,0x35,0x5b,0xf6,
+ 0x55,0xe5,0xc8,0xd3,0xe6,0x4f,0x6e,0x9a,0x6d,0xdf,0x63,0xd1,0xa4,0xa3,0x0a,0xd8,
+ 0x68,0xa9,0xc5,0xae,0x56,0xb4,0x6b,0x7d,0x7e,0xed,0xd1,0x9d,0x1a,0xcb,0x6b,0xf0,
+ 0xb0,0x94,0x99,0x55,0x9b,0x50,0x1c,0x07,0x25,0xc8,0xd9,0xcf,0x1d,0x31,0x5b,0x0f,
+ 0x67,0xa0,0x0d,0x0b,0xc3,0xc9,0xac,0xdc,0xcb,0x68,0xd1,0x42,0x25,0x89,0x64,0x25,
+ 0x92,0x40,0x48,0x27,0x85,0x07,0x1f,0x98,0xad,0xff,0x00,0x18,0xf8,0x4a,0x0f,0x0e,
+ 0xf8,0x36,0xd7,0x48,0x37,0x44,0xc8,0xf7,0x2b,0x3c,0xa5,0x50,0x18,0xc7,0x05,0x47,
+ 0x38,0x07,0x9c,0x8c,0x7e,0x35,0xce,0x78,0xab,0xc2,0xf2,0x6a,0xcf,0xa3,0xc1,0x07,
+ 0x94,0xc9,0x15,0x84,0x59,0x92,0x31,0x8e,0x49,0x23,0x9c,0xf7,0xe0,0xd7,0x3c,0x1c,
+ 0x71,0x2e,0x2d,0x49,0xc5,0x4a,0x52,0x77,0xeb,0x6b,0x1d,0x7e,0xd1,0xe1,0x61,0x3f,
+ 0x75,0x49,0xc6,0x11,0x56,0x7b,0x5e,0xe5,0x0d,0x0b,0x56,0x8f,0xc4,0xbf,0x14,0x12,
+ 0xfd,0xa2,0x8d,0x6d,0xd8,0xb6,0xdf,0xb4,0x0c,0x28,0x55,0x8c,0x80,0x48,0x1d,0x3a,
+ 0x0e,0x3f,0x53,0x59,0x57,0x5a,0x76,0x97,0x6d,0xe3,0x4d,0x36,0x3d,0x3a,0xf8,0x6a,
+ 0x50,0x4d,0x3a,0x33,0x3b,0x27,0x96,0xaa,0x4b,0xe3,0x69,0x1d,0x7f,0xfd,0x75,0xbb,
+ 0xf0,0xfb,0xc3,0x77,0x7a,0x3f,0x89,0xd6,0xe6,0x6b,0x7d,0x91,0xc7,0x13,0x9d,0xe0,
+ 0x07,0x1f,0x74,0xf6,0x15,0xca,0xf8,0x66,0x25,0x6f,0x1b,0xe9,0xe4,0xa2,0xc0,0x3e,
+ 0xd4,0x87,0x0c,0x77,0x81,0xf3,0x03,0xd3,0xbf,0xd2,0xbb,0x79,0x23,0x0a,0xb5,0x3d,
+ 0x9c,0xb4,0x8c,0x12,0xb7,0xde,0x70,0x46,0xa3,0xab,0x46,0x97,0xb5,0x8d,0xdc,0xea,
+ 0x37,0x7e,0xdf,0x0f,0xe6,0x77,0xb3,0xe9,0x17,0x5a,0x3e,0xb7,0xe2,0x3d,0x76,0xea,
+ 0xdd,0xa3,0xb1,0x11,0x4a,0xb0,0xba,0xfc,0xa8,0xdb,0xbe,0x55,0xc6,0x3b,0x7f,0x88,
+ 0xae,0x3a,0x36,0x27,0xe1,0xb5,0xcb,0x2c,0x8d,0x99,0x35,0x25,0x52,0x8a,0x30,0xbc,
+ 0x26,0x79,0x3f,0xd2,0xb7,0xf5,0x0d,0x4a,0xeb,0xc5,0x10,0x78,0x93,0x4c,0xb8,0xb8,
+ 0x92,0x54,0xb3,0x96,0x4b,0xc8,0x64,0x9a,0x42,0x02,0x05,0x62,0x0a,0x6d,0xf4,0x20,
+ 0xf0,0x06,0x31,0x58,0x57,0x31,0x18,0xbe,0x1a,0x5b,0xaf,0xef,0x0a,0x4b,0xa9,0x96,
+ 0xc7,0x44,0x04,0x47,0x8e,0x3d,0x4d,0x73,0x61,0xe3,0x24,0xa2,0xaa,0x7c,0x5c,0xd1,
+ 0x5a,0x76,0x4a,0xe8,0xf4,0x71,0x12,0x83,0x94,0x9d,0x2b,0xf2,0xf2,0xcd,0xeb,0xbd,
+ 0xdb,0xb3,0x2d,0x78,0xd8,0x44,0x34,0xfd,0x21,0x19,0x77,0xcc,0x9a,0x64,0x05,0x7c,
+ 0xbe,0x8a,0x4e,0x49,0xdd,0xef,0xcd,0x79,0xfe,0xd0,0xf2,0x32,0xfd,0xde,0x71,0x8c,
+ 0x7f,0x5a,0xf4,0x3f,0x1e,0x4a,0xa9,0x7d,0x6d,0x6b,0x24,0xa3,0xcb,0x8f,0x4e,0x85,
+ 0x07,0x96,0xa0,0x00,0x42,0xe4,0x7f,0x3f,0xd6,0xbc,0xfe,0xe0,0x14,0x76,0x19,0x0c,
+ 0x72,0x7e,0xe7,0x02,0xbd,0xec,0xbb,0xfd,0xda,0x07,0xc8,0x66,0xcf,0xfd,0xb2,0xa7,
+ 0x96,0x9f,0x72,0x26,0xb2,0x21,0x2e,0x92,0x33,0x26,0x14,0x11,0x80,0x39,0x00,0xfa,
+ 0xf5,0xf7,0xac,0x4d,0x70,0x3a,0x6a,0xf1,0xbb,0xbe,0x08,0x20,0x82,0x07,0x5e,0x78,
+ 0xfa,0x56,0xac,0x52,0x36,0xd6,0xc0,0xd8,0xc9,0xd0,0xa7,0xf8,0xd7,0x33,0x7d,0x3b,
+ 0xff,0x00,0x6a,0x22,0x3b,0x96,0xcb,0x2f,0x04,0xd7,0xa6,0xa3,0xad,0xcf,0x21,0x1f,
+ 0x64,0xfe,0xce,0x6f,0x2e,0xa1,0xe3,0x1b,0x4d,0x1d,0x5d,0x54,0xea,0xb1,0x9b,0x40,
+ 0x5d,0x8a,0x8d,0xdd,0x79,0x3d,0x86,0x01,0x1f,0x42,0x6b,0xeb,0x9f,0x86,0x7f,0xb0,
+ 0x26,0xb3,0xe1,0xaf,0x88,0x37,0x3e,0x2a,0xd5,0x7c,0x51,0x63,0x0b,0xcf,0x2e,0xf7,
+ 0xb6,0xb2,0x81,0xe6,0x2e,0xbc,0xfc,0x85,0x98,0xa8,0x03,0x90,0x7a,0x1e,0x54,0x57,
+ 0xc4,0xbf,0x06,0xb5,0x37,0xd2,0x7c,0x77,0xe1,0xeb,0x84,0x6d,0xac,0x97,0x91,0x60,
+ 0x8e,0xd9,0x20,0x1a,0xfd,0x8a,0xb7,0xf0,0xed,0xfe,0xa3,0x0c,0x72,0xdd,0xf8,0x8a,
+ 0xf9,0xd2,0x45,0x0d,0xe5,0x5a,0x24,0x70,0x47,0x83,0xe8,0x42,0x97,0x1f,0xf7,0xdd,
+ 0x7c,0xbe,0x51,0x2e,0x6a,0x73,0x85,0xaf,0xa9,0xfa,0x37,0x1a,0x52,0xe4,0xc5,0xd2,
+ 0xab,0xde,0x3f,0x91,0xca,0xc7,0xfb,0x3f,0xf8,0x5d,0x2f,0x7e,0xd7,0x74,0x67,0x99,
+ 0x82,0x80,0x62,0x59,0x04,0x71,0x8c,0x77,0x00,0x7c,0xc0,0xfb,0xee,0xec,0x2b,0x1b,
+ 0xc6,0x9f,0x0b,0x7e,0x15,0x6b,0xa5,0x2c,0xb5,0x8b,0xb2,0xc9,0x14,0x4b,0x02,0xe9,
+ 0xb1,0x6b,0x13,0x6d,0x08,0xbd,0x07,0x92,0xb2,0x73,0xf9,0x57,0xa4,0x7f,0xc2,0x01,
+ 0xa1,0xc9,0xcd,0xd5,0x91,0xd4,0x8f,0xae,0xa3,0x2b,0xdd,0x7f,0xe8,0xc2,0xd8,0xfc,
+ 0x2b,0x52,0xc7,0x4e,0xb4,0xd3,0xdd,0xe3,0xb5,0xb6,0x8a,0xda,0x20,0x00,0x09,0x0a,
+ 0x05,0x03,0xaf,0x61,0x5e,0xd4,0xa0,0xf4,0x8f,0x2a,0xd7,0xe7,0xfe,0x47,0xe7,0xbc,
+ 0xd6,0xd5,0x33,0xc5,0xbe,0x1d,0x7c,0x2f,0xf0,0x47,0xc3,0x7b,0x95,0xbf,0xf0,0xdf,
+ 0x85,0xb5,0x59,0xef,0xa2,0x79,0x0c,0x72,0x47,0x6f,0x24,0x43,0x6b,0x12,0x14,0x7e,
+ 0xf8,0xa2,0x9f,0x94,0x81,0x5e,0xa2,0x35,0x3f,0x13,0x5e,0x82,0x6d,0xf4,0x5b,0x4b,
+ 0x25,0x3d,0x1a,0xfa,0xf7,0xe7,0x1f,0xf0,0x08,0xd1,0x81,0xff,0x00,0xbe,0xeb,0xa0,
+ 0x9c,0x0d,0x83,0x8e,0xe3,0xf9,0xd4,0xa3,0x00,0x76,0xa2,0x9d,0x2e,0x46,0xe0,0x9d,
+ 0x97,0x90,0x4a,0x7c,0xce,0xec,0xe5,0xe5,0xd2,0xfc,0x4b,0x75,0x1f,0xfa,0x46,0xbf,
+ 0x05,0x98,0x27,0xa6,0x9f,0x62,0x03,0x0f,0xf8,0x14,0xac,0xe0,0xff,0x00,0xdf,0x22,
+ 0x9c,0xbe,0x04,0xb5,0x9b,0x26,0xff,0x00,0x50,0xd4,0xf5,0x33,0xdc,0x4f,0x78,0xe8,
+ 0x87,0xea,0x91,0x95,0x43,0xff,0x00,0x7c,0xd7,0x41,0x33,0x82,0x06,0x0f,0x71,0xfc,
+ 0xe9,0xd2,0x5c,0x47,0x14,0x65,0x9d,0xd5,0x14,0x77,0x63,0x8a,0xb5,0x08,0x73,0x3b,
+ 0xeb,0xea,0xc9,0xbb,0xe8,0x78,0x4f,0xc4,0x6f,0x00,0x78,0x4a,0xd3,0x4b,0xd6,0xf5,
+ 0x47,0xf0,0xde,0x8b,0xf6,0x9b,0x77,0x48,0xa2,0x92,0x6b,0x24,0x6c,0x64,0xf3,0xc6,
+ 0x39,0x27,0xd4,0xe6,0xbc,0x72,0x38,0x3c,0x24,0x9f,0xbd,0xb8,0xf0,0xce,0x92,0x8a,
+ 0xd1,0x92,0xa5,0x6d,0x42,0x6e,0x6f,0xf6,0x42,0x1e,0x9d,0xbb,0xe3,0xdc,0xd7,0xb2,
+ 0xfc,0x68,0xf1,0x35,0x85,0x97,0x83,0xef,0xd4,0xdd,0xdb,0x17,0xb9,0xbd,0x06,0x15,
+ 0x67,0xc8,0x93,0x6b,0xbe,0x71,0x80,0x78,0xe3,0x19,0xe9,0xef,0x5e,0x0f,0x67,0xae,
+ 0x5b,0x5f,0xea,0x51,0x49,0x2c,0xf6,0x70,0x44,0xa3,0x1b,0x59,0xb7,0x00,0x33,0x9e,
+ 0xc3,0xdf,0xa6,0x3b,0x57,0xca,0x57,0xb7,0x3b,0xe5,0xfe,0xb5,0x3d,0x6a,0x2a,0xea,
+ 0xcc,0xe8,0x34,0xef,0x0f,0x78,0x5b,0xc4,0x3a,0xd4,0x11,0x8f,0x0f,0x0b,0x58,0x4d,
+ 0x94,0xd2,0x24,0x51,0xb4,0xd0,0x89,0x25,0xc1,0x2a,0x4e,0x1f,0x3b,0x46,0x31,0xc1,
+ 0xa8,0x3f,0xe1,0x18,0xf0,0xb6,0x49,0x3a,0x6c,0x51,0x02,0x72,0xa1,0xb5,0x7b,0xa4,
+ 0xc8,0xf5,0xc0,0x9a,0xad,0x69,0xfe,0x24,0x86,0x5d,0x6e,0x7b,0x99,0x2e,0x60,0x2a,
+ 0xb6,0x93,0xac,0x6c,0x57,0x60,0x42,0x54,0x85,0x00,0x01,0xf8,0x0c,0x7a,0xd5,0x0d,
+ 0x3e,0xf6,0xd7,0xec,0xf8,0xb8,0x5b,0x67,0x90,0x1f,0xbc,0xf1,0xf3,0x8f,0xfb,0xe0,
+ 0xd7,0x13,0xba,0x7a,0x9d,0x09,0x2d,0x91,0xf0,0xad,0xf1,0x5b,0x9d,0xb3,0x2f,0xca,
+ 0xff,0x00,0xc4,0x2a,0x8a,0xca,0xa4,0x9c,0xb0,0x24,0x1a,0x98,0x4c,0x49,0x75,0xe0,
+ 0x1c,0x55,0x5d,0x91,0x4e,0xca,0xa5,0xd5,0x66,0x7e,0x40,0x27,0xef,0x7f,0x9e,0x6b,
+ 0xf6,0x56,0x92,0xdc,0xf8,0x45,0xae,0xc4,0xdf,0x2b,0x8c,0x15,0x47,0x1d,0xf3,0x50,
+ 0xc9,0xa6,0xd9,0x4f,0xfe,0xb2,0xca,0x06,0xcf,0xfb,0x03,0x34,0x35,0xb0,0x43,0x86,
+ 0xe0,0xd3,0x22,0x3b,0x77,0x61,0x88,0xe7,0x03,0x9a,0x39,0x46,0x43,0x2f,0x85,0xb4,
+ 0xa9,0x89,0xcd,0x90,0x4f,0xf7,0x58,0xaf,0xf5,0xaa,0x57,0x1f,0x0f,0xf4,0x99,0xc1,
+ 0x05,0x25,0x50,0x7d,0x18,0x1f,0xe6,0x2b,0x5b,0xcd,0x90,0x1e,0x1b,0x3f,0x5a,0x92,
+ 0x2b,0xa9,0xb7,0x72,0x15,0xb1,0x53,0xca,0xc2,0xec,0xe4,0x6e,0x7e,0x13,0xe9,0xd2,
+ 0x9c,0xc7,0x20,0x5f,0xf7,0xa1,0x1f,0xcc,0x62,0xb3,0x67,0xf8,0x40,0xbf,0xf2,0xc6,
+ 0x68,0xfd,0xbe,0x66,0x5f,0xf1,0xaf,0x5a,0xb2,0xd4,0x6d,0x5e,0x10,0xb3,0xa1,0x56,
+ 0x1d,0xf6,0xe6,0xa4,0x0d,0x61,0x2b,0x12,0x65,0x8c,0x73,0xc6,0x41,0x1c,0x7e,0x55,
+ 0x9b,0x4b,0xaa,0x35,0xe6,0x69,0x68,0xcf,0x11,0x9b,0xe1,0x4e,0xa3,0x1f,0x31,0x4a,
+ 0xe7,0xb0,0xd9,0x28,0x3f,0xcc,0x0a,0xa6,0xfe,0x08,0xf1,0x0d,0x99,0xfd,0xdc,0x97,
+ 0x18,0xf6,0x5d,0xdf,0xc8,0xd7,0xbe,0x0b,0x3b,0x27,0x3f,0x2c,0x88,0x7b,0xf0,0xf4,
+ 0xe1,0xa4,0x46,0xdf,0x75,0xcf,0xe0,0x6b,0x27,0x18,0x75,0x45,0xf3,0xd4,0xee,0x7c,
+ 0xf5,0x25,0xa7,0x89,0x2c,0xd7,0x0e,0xc4,0x81,0xff,0x00,0x3d,0x15,0x87,0xf3,0x15,
+ 0x56,0x4b,0xcd,0x54,0x13,0xe7,0x58,0x41,0x70,0x3b,0xfc,0xaa,0x4d,0x7d,0x1c,0x74,
+ 0x53,0x8e,0x24,0x38,0xe9,0xc8,0xaa,0xd7,0x1e,0x1f,0x8e,0x55,0xfd,0xe4,0x50,0xc8,
+ 0x0f,0x1f,0x3a,0x8a,0x9e,0x48,0x3e,0xa5,0x7b,0x59,0x47,0x73,0xe7,0x61,0xab,0x2c,
+ 0x32,0x07,0x97,0x47,0x2b,0x20,0x39,0x0c,0xa0,0x8c,0x53,0x66,0xd4,0xec,0x6e,0x67,
+ 0x69,0x64,0x7b,0xb8,0x64,0x63,0xf3,0x62,0x4e,0x3f,0x23,0x5e,0xf5,0x71,0xe0,0x9b,
+ 0x29,0x08,0x26,0xc6,0x2e,0x7a,0xed,0x18,0xaa,0x17,0x1f,0x0e,0xf4,0xf9,0x41,0x06,
+ 0xd1,0xd3,0x3f,0xdd,0x24,0xff,0x00,0x8d,0x66,0xe9,0xc6,0xe6,0x9e,0xdb,0xba,0x3c,
+ 0x81,0xb5,0x4b,0x6b,0x82,0x0a,0x6a,0x06,0x2c,0x4a,0xd2,0xe1,0xa1,0x07,0x96,0xc7,
+ 0x1f,0x41,0x8a,0xea,0xec,0xbc,0x5f,0x6e,0x8b,0x68,0xd1,0x3d,0xb2,0xbc,0x0c,0x08,
+ 0x64,0x5c,0x16,0xc7,0xd7,0xdf,0x15,0xbd,0x7d,0xf0,0x9b,0x4d,0x9c,0x1c,0x23,0x27,
+ 0xfb,0xc8,0x0f,0xf4,0x15,0x8b,0x73,0xf0,0x7e,0xdd,0x48,0x11,0x4a,0xa5,0xbb,0x03,
+ 0x95,0xfe,0xa6,0xb1,0x9e,0x1e,0x33,0x5a,0xa3,0x68,0x57,0x6b,0x63,0x76,0x6f,0x1c,
+ 0x45,0xac,0xc0,0x62,0xbb,0x96,0x78,0xd3,0x8f,0x9a,0x07,0x8c,0x9c,0x8e,0xfd,0x2b,
+ 0x52,0xd7,0xc5,0x96,0x68,0x90,0x47,0x1e,0xa5,0x7a,0xb1,0x41,0x1f,0x94,0x8b,0x73,
+ 0x08,0x60,0xa0,0x03,0x80,0x0f,0xa0,0x27,0x38,0xaf,0x3f,0x97,0xe1,0x0d,0xea,0xe7,
+ 0xc9,0xb8,0x24,0xff,0x00,0xb3,0x27,0xf8,0x8a,0xa7,0x2f,0xc3,0xbf,0x10,0xda,0x03,
+ 0xe5,0x49,0x23,0x63,0x9e,0x00,0x3f,0xc8,0xd7,0x1c,0xf0,0x14,0xda,0xd3,0xf4,0x3a,
+ 0xe3,0x8c,0x93,0xea,0x77,0x37,0x7e,0x3f,0xbb,0xd0,0x6f,0x16,0x5b,0x5d,0x4a,0xd6,
+ 0x61,0x22,0x14,0x20,0xa1,0x5c,0x7a,0xe7,0xa6,0x2a,0x39,0x3c,0x4b,0x2d,0xe6,0xa1,
+ 0xa7,0xf8,0x84,0xc1,0x66,0x5e,0xd5,0x96,0x39,0x23,0xb5,0x9b,0x0c,0xcc,0x0f,0x07,
+ 0xe6,0x2c,0x72,0x73,0xd7,0xda,0xbc,0xfd,0xf4,0x8f,0x13,0x59,0x9f,0x9e,0x36,0x75,
+ 0x1c,0x7c,0xea,0x7f,0xc2,0xa0,0x69,0x75,0x48,0x81,0x49,0x74,0xe8,0x99,0x49,0xc9,
+ 0x0a,0x00,0xcd,0x61,0x2c,0xb6,0x93,0x7c,0xcd,0x6a,0xd5,0xaf,0xe4,0x75,0x43,0x32,
+ 0xaf,0x08,0xa8,0x29,0x68,0x9d,0xd2,0xf3,0xee,0x7a,0x2e,0xa5,0xe2,0x31,0xa4,0xc7,
+ 0x79,0x15,0xcd,0x98,0x4b,0x8b,0xfb,0x69,0x18,0x3e,0xe0,0xe4,0x17,0x7c,0xe4,0x9e,
+ 0x3b,0x0c,0x66,0xa7,0xf0,0xc6,0xb1,0xa1,0x5e,0x68,0x1f,0xd9,0xba,0xe9,0x68,0xe3,
+ 0x8a,0x71,0x71,0x0c,0x99,0x62,0x33,0xfc,0x4a,0x42,0x83,0xe9,0x5e,0x5d,0x75,0x78,
+ 0x6e,0x1c,0x3d,0xd6,0x99,0x3e,0xf0,0x36,0xee,0x47,0x70,0x71,0xe9,0xc1,0xa6,0xa6,
+ 0xa1,0x66,0x8a,0x17,0xce,0xbd,0xb6,0xe7,0xf8,0x98,0x30,0x1f,0x81,0x15,0x8d,0x4c,
+ 0xae,0x12,0x83,0x8d,0xda,0x6d,0xa7,0x75,0xe5,0xd8,0xe8,0xa7,0x9a,0xd6,0xa7,0x35,
+ 0x3d,0x1a,0x49,0xab,0x3d,0x9a,0x6e,0xee,0xff,0x00,0x33,0xd0,0xbc,0x5f,0xac,0xc3,
+ 0xae,0xf8,0x8a,0xe6,0x64,0x8f,0xf7,0x5b,0x02,0x46,0x0f,0x18,0x55,0x5d,0xa3,0x8e,
+ 0xdd,0x8d,0x72,0x0c,0x8c,0xca,0x18,0x95,0x18,0x38,0xc0,0x1f,0x8d,0x24,0xda,0xaa,
+ 0x6a,0x37,0x0f,0x2a,0xea,0x51,0xab,0x37,0x69,0x20,0xc6,0x3f,0x23,0x53,0xda,0x5a,
+ 0xc8,0xec,0x54,0xdd,0x59,0xcc,0x84,0xe7,0x0b,0x21,0x43,0xff,0x00,0x8f,0x0a,0xea,
+ 0xa3,0x43,0xea,0xf4,0xe3,0x4e,0x3b,0x23,0xce,0xaf,0x5e,0x58,0x9a,0xb2,0xab,0x3d,
+ 0xdb,0xb9,0x25,0xa4,0x4a,0xf6,0xd2,0xb0,0x51,0xbb,0xd8,0x74,0xe3,0xad,0x71,0x92,
+ 0xab,0x5c,0x6b,0x01,0xb0,0x4a,0x89,0x17,0xb7,0xd2,0xbb,0xd4,0xb7,0xbb,0x87,0x70,
+ 0x4b,0x49,0x25,0x81,0xf2,0x18,0x43,0x22,0x39,0xc7,0xe1,0x5c,0xfc,0xba,0x55,0xdc,
+ 0x7a,0xa0,0x76,0xb6,0x9d,0x60,0x32,0x7c,0xa1,0xd4,0x8c,0x0e,0xd9,0xad,0x56,0x97,
+ 0x32,0x4b,0x54,0x7b,0x8f,0x83,0xa6,0x36,0x5a,0xc5,0x84,0xc0,0xe0,0xc5,0x22,0x37,
+ 0xd3,0x0c,0x0d,0x7e,0xcf,0xf8,0x73,0xc5,0x36,0x11,0x78,0x57,0x43,0x96,0xe6,0xea,
+ 0x28,0x0c,0xd6,0x50,0xb9,0x69,0x5b,0x6a,0xf2,0x80,0xf5,0x3c,0x57,0xe2,0xce,0x8c,
+ 0x47,0xda,0x10,0x82,0x0f,0x23,0x90,0x7d,0xeb,0xf6,0x37,0xe1,0x0d,0xa5,0x8b,0xfc,
+ 0x3b,0xf0,0xe5,0xdc,0x36,0x36,0xeb,0x3b,0xd9,0xc7,0xbe,0x54,0x89,0x43,0x31,0x03,
+ 0x04,0x93,0x8e,0x4f,0x15,0xf1,0x59,0x64,0xe5,0x4e,0x53,0x51,0xd0,0xfd,0x4f,0x8d,
+ 0x54,0x65,0x1a,0x13,0xf5,0xfd,0x0e,0x90,0xf8,0xcb,0x4d,0x72,0x7e,0xcf,0x33,0x5e,
+ 0x7f,0xd7,0xa4,0x12,0x4d,0xfa,0xa2,0x91,0x40,0xd6,0x6e,0xe4,0x53,0x2c,0x1a,0x4d,
+ 0xe4,0x81,0x9b,0x1f,0x3e,0xc8,0xb0,0x00,0xea,0x43,0x30,0x38,0xfc,0x3b,0x55,0xe9,
+ 0xf2,0xd2,0x42,0x3b,0x6f,0xce,0x07,0xb0,0x3f,0xfd,0x6a,0x90,0x21,0x23,0xef,0xe7,
+ 0x92,0x6b,0xdd,0x73,0xa9,0x37,0xab,0xfb,0xb4,0xfc,0xef,0xdc,0xfc,0xb5,0xdb,0xa2,
+ 0x39,0x7d,0x4f,0xc5,0x7a,0xa6,0x9d,0x7d,0x67,0x6d,0x36,0x94,0xa4,0x5c,0xa3,0xcc,
+ 0x3c,0x89,0xfc,0xd7,0x54,0x42,0x80,0x92,0xa4,0x28,0xea,0xeb,0xc0,0x27,0xbd,0x56,
+ 0x8f,0xc5,0x2d,0x38,0xff,0x00,0x4b,0xd5,0xee,0x34,0xf5,0xcf,0x2e,0xba,0x3c,0xb0,
+ 0xa8,0xff,0x00,0x81,0xca,0x19,0x6b,0x47,0x56,0xc3,0x78,0xcb,0x4a,0x42,0x58,0x67,
+ 0x4d,0xbb,0x19,0x1d,0xbf,0x79,0x6d,0x55,0x2f,0x0d,0xce,0x94,0x16,0xe8,0xf9,0x92,
+ 0x24,0x11,0x84,0xfb,0x34,0x11,0x8f,0xde,0x30,0x23,0x05,0x73,0x8e,0xdb,0x86,0x3d,
+ 0xc7,0x7a,0xf2,0xeb,0x62,0x67,0x46,0xab,0x8a,0xd5,0x7a,0xbf,0xd2,0xc6,0xd1,0x8a,
+ 0x92,0x2d,0x69,0xb3,0xe9,0x1a,0x8d,0xc9,0x0b,0xe2,0x36,0xd5,0x25,0x07,0x02,0x34,
+ 0xbc,0x4f,0x4e,0xeb,0x1e,0x3f,0x95,0x5b,0xb8,0xf0,0xe6,0x97,0x66,0xa2,0x58,0x74,
+ 0x98,0x6f,0xa6,0x04,0x64,0xcd,0xfb,0xc7,0x03,0xb9,0x0c,0xd9,0x39,0xf6,0xac,0xdb,
+ 0xdd,0x35,0x7c,0x45,0x71,0x13,0x5c,0x5b,0xc1,0x35,0xa2,0x3b,0x66,0x29,0x17,0x78,
+ 0x90,0x10,0x30,0x70,0x7a,0x11,0x8e,0x9e,0xfe,0xd5,0x88,0xc6,0xc7,0xc1,0xb3,0x6a,
+ 0x1a,0xa0,0x47,0xb6,0x82,0xdf,0x53,0x8e,0x26,0x11,0x1d,0xa8,0x22,0x68,0x23,0x04,
+ 0x11,0x90,0x36,0x86,0x62,0xdd,0x3a,0x8a,0xd6,0x18,0xa8,0xb6,0xd3,0x87,0xcf,0xfe,
+ 0x1c,0x6a,0x0d,0xec,0xcc,0xdf,0x89,0xb2,0x43,0x61,0xe1,0xab,0xc9,0x85,0x8d,0x9c,
+ 0xeb,0x14,0xc0,0x14,0xb8,0x89,0x4a,0x04,0x12,0xc9,0xc7,0x23,0x03,0xad,0x78,0xb5,
+ 0x9c,0xf6,0xb7,0x64,0x33,0x68,0x3a,0x3e,0xc2,0x4b,0x31,0x92,0x22,0xd9,0x04,0xf1,
+ 0x80,0x0f,0xbd,0x7a,0x57,0xc6,0xaf,0x15,0x69,0x7a,0x57,0x85,0x88,0x96,0x7b,0x67,
+ 0x7b,0xdb,0xc3,0xe4,0x2c,0x92,0x1c,0x38,0x12,0x12,0x58,0x63,0x93,0xc1,0xfd,0x7a,
+ 0xd7,0x8e,0xd8,0x78,0x9b,0x4d,0x16,0xe2,0x38,0xee,0xec,0xb7,0xb8,0x1e,0x61,0xb8,
+ 0x2d,0x81,0x93,0xd1,0x78,0xce,0x71,0x9c,0x9e,0xc3,0xb9,0x26,0xbc,0xfa,0xd6,0xe6,
+ 0x6c,0xf4,0x28,0xaf,0x74,0xe8,0x63,0xd2,0xb4,0x99,0x92,0x49,0x67,0xf0,0xae,0x9b,
+ 0xf6,0x70,0xc5,0x98,0x24,0x45,0x43,0x60,0x70,0x4e,0x58,0x01,0xff,0x00,0xd7,0xa9,
+ 0xfc,0x17,0xf0,0xe7,0xc2,0x7a,0xfd,0x85,0xdd,0xd6,0xa1,0xa6,0x20,0x97,0xed,0x4e,
+ 0xa8,0xb0,0x86,0x0a,0xa9,0x85,0x20,0x71,0xf5,0x35,0x42,0x1d,0x63,0x4e,0x23,0xcb,
+ 0x37,0xda,0x5a,0xa0,0x1b,0xe4,0xda,0xd9,0x38,0x0b,0x85,0x51,0x9e,0xfc,0xf2,0x3f,
+ 0xfa,0xd5,0xd8,0xfc,0x33,0xfb,0x3c,0x9a,0x04,0xce,0xe1,0x58,0xb5,0xcb,0x90,0x49,
+ 0x03,0x23,0x0b,0xee,0x2b,0x8e,0x4e,0xea,0xe8,0xdf,0x97,0xa2,0x3f,0x31,0xcc,0x8a,
+ 0x66,0x52,0x4f,0xce,0x17,0x21,0x47,0xa6,0x71,0x9a,0xf3,0x1d,0x47,0x55,0x9e,0xda,
+ 0x58,0xd2,0x43,0xb1,0xa1,0x91,0xd4,0x1c,0x9c,0x8f,0x98,0x9e,0x7f,0x9f,0xe3,0x5d,
+ 0x0c,0xda,0xc3,0xdb,0xf8,0xe7,0xec,0xcc,0xff,0x00,0x23,0x29,0x40,0x0f,0xba,0x03,
+ 0xfc,0xc5,0x71,0xde,0x35,0x99,0x6c,0xf5,0xab,0x98,0x80,0xdd,0xb8,0x86,0xe4,0xff,
+ 0x00,0x7b,0xb7,0xb7,0xff,0x00,0x5a,0xbf,0x52,0xc4,0xcb,0x9e,0x37,0x5d,0x1d,0x8f,
+ 0x8f,0xa2,0xac,0xf5,0xea,0x8e,0xc7,0xc2,0xfe,0x35,0x5d,0x49,0xe1,0xb1,0xbe,0x23,
+ 0xcd,0x3c,0x2c,0xe5,0xba,0xf5,0xc6,0x6b,0xa9,0x36,0x2c,0x84,0x91,0xeb,0xc5,0x78,
+ 0x23,0xdd,0xc8,0xad,0x2a,0x41,0x88,0xd1,0x06,0xe3,0x80,0x49,0x1c,0xfe,0x95,0xdd,
+ 0xf8,0x3b,0xe2,0x5f,0x92,0x45,0xbe,0xa7,0xba,0x78,0x81,0xc2,0xb9,0x39,0x75,0x1e,
+ 0xfe,0xb4,0xa8,0x62,0x5c,0x55,0xa6,0x5d,0x4a,0x09,0xeb,0x13,0xbb,0x62,0x50,0xe0,
+ 0x8f,0xca,0x84,0x90,0x86,0x38,0x1c,0x9e,0x84,0xd6,0x8d,0x84,0xb6,0x3a,0xc4,0x46,
+ 0x4b,0x39,0x92,0x75,0xea,0x76,0x9e,0x47,0xd4,0x76,0xa5,0x97,0x4f,0x21,0x87,0xcb,
+ 0xd0,0xd7,0xa8,0xa7,0x19,0x2b,0xa3,0x89,0xa6,0x9d,0x99,0x5a,0xd9,0xdc,0x93,0xd3,
+ 0xa5,0x2b,0x32,0x33,0x16,0x27,0xaf,0x60,0x2a,0xc2,0x5a,0x94,0x8d,0xc8,0x5e,0xd8,
+ 0xaa,0xef,0x66,0x55,0x88,0x1d,0x05,0x2d,0x18,0x87,0xa3,0xc4,0x3a,0x21,0x27,0xde,
+ 0x95,0xa4,0xec,0xbf,0x21,0x3d,0xd6,0xa1,0xf2,0x18,0x60,0x8f,0xd7,0xbd,0x3b,0x6b,
+ 0x7a,0x73,0x4d,0xa4,0x02,0x89,0xee,0x60,0xe5,0x26,0x93,0x1f,0xef,0x1a,0x7a,0x6b,
+ 0x37,0xaa,0x31,0xe6,0x96,0xc1,0xfe,0x20,0x0d,0x42,0xc9,0x2e,0xf5,0x65,0x72,0x00,
+ 0x3c,0xae,0x3a,0xd3,0xd9,0xa3,0x55,0xde,0xe5,0x50,0x0e,0x85,0xbf,0xfa,0xf5,0x95,
+ 0x93,0x7b,0x15,0x76,0x8b,0x0b,0xe2,0x0b,0x95,0xfb,0xdb,0x18,0x7b,0xad,0x58,0x5f,
+ 0x13,0xb2,0xae,0x64,0x86,0x30,0x07,0x53,0x9c,0x57,0x3d,0x33,0xca,0xc7,0x29,0x19,
+ 0x0a,0x4f,0xdf,0x71,0xb4,0x7e,0x5d,0x7f,0x95,0x22,0xc1,0xf7,0x5e,0x46,0x32,0x37,
+ 0x6c,0xf4,0x07,0xd8,0x7f,0x93,0x51,0xc9,0x1e,0xc3,0xe7,0x67,0x48,0x3c,0x4e,0xb3,
+ 0x29,0xdb,0x6e,0xc8,0x98,0xfb,0xf9,0xeb,0xf4,0x06,0xa0,0x8f,0x59,0x80,0xb6,0x19,
+ 0x30,0x09,0xe4,0x91,0x93,0x5c,0x76,0xb9,0xaa,0x79,0x6e,0xa9,0x14,0xfb,0x65,0x19,
+ 0xcc,0x69,0x86,0x2d,0xfd,0x3f,0x31,0x55,0xed,0xf5,0xbd,0x96,0xcc,0xb7,0x2b,0x1c,
+ 0x72,0xf1,0xb7,0x6f,0x7f,0xae,0x0f,0xeb,0x5c,0xee,0x50,0x8c,0xac,0x6c,0x93,0x6a,
+ 0xe7,0xd5,0x3f,0xb3,0x6d,0xe5,0xad,0xe6,0xa9,0xac,0x58,0x25,0xac,0x37,0x86,0x48,
+ 0x12,0x6d,0x92,0x46,0x0f,0xdd,0x6d,0xa7,0xa8,0xff,0x00,0x6c,0x55,0xbf,0x8f,0xbe,
+ 0x1c,0xd2,0xac,0xe2,0xd3,0x75,0x08,0x6c,0xa2,0xd3,0x8c,0x93,0x3c,0x32,0x79,0x70,
+ 0x88,0x83,0x1c,0x02,0x33,0x80,0x33,0xd1,0xab,0xe6,0xaf,0x86,0x5f,0x19,0xf5,0x6f,
+ 0x85,0x9e,0x24,0x3a,0xb6,0x9d,0x0c,0x37,0xac,0xf0,0x35,0xbb,0x5b,0xdd,0xee,0x28,
+ 0xca,0xc4,0x1e,0xcc,0x0f,0xf0,0x8a,0xe9,0xbe,0x28,0xfe,0xd4,0xd7,0xdf,0x12,0xfc,
+ 0x35,0x06,0x9d,0x79,0xa2,0xd9,0xe9,0x6f,0x6f,0x72,0xb3,0xa5,0xc5,0xb3,0xb7,0x24,
+ 0x06,0x04,0x60,0x8e,0x98,0x6f,0x5a,0xe4,0x95,0x44,0xdd,0xe2,0xcb,0x8c,0x1f,0x32,
+ 0xba,0x2f,0xff,0x00,0x65,0x2b,0xae,0xe4,0x39,0x52,0x38,0x23,0xa5,0x2b,0x68,0x11,
+ 0xce,0x0e,0xe4,0x47,0x3f,0xed,0xa8,0x35,0xc2,0xd8,0x7c,0x4a,0xb6,0x6b,0x38,0x9a,
+ 0xea,0x67,0xb5,0xe3,0x6e,0x48,0x3b,0x7f,0x02,0x38,0xad,0x9b,0x2f,0x88,0x56,0xd7,
+ 0x0f,0xb2,0x3d,0x56,0x10,0xbb,0x86,0x37,0x38,0x07,0xf0,0xcf,0x5a,0xcb,0xeb,0x09,
+ 0x74,0x3a,0x3d,0x9a,0x36,0xe5,0xf0,0x2d,0x95,0xc2,0x7c,0xd6,0x16,0xec,0x7d,0x42,
+ 0x60,0xfe,0x95,0x9f,0x71,0xf0,0xb6,0xc2,0x60,0x7f,0xd0,0x0a,0xfb,0xa4,0x87,0xfa,
+ 0x9a,0xd3,0xb1,0xf1,0xce,0xe9,0xc8,0x9e,0x78,0x2e,0x62,0x60,0x3e,0x44,0xc0,0xeb,
+ 0xda,0xba,0x68,0xbc,0x47,0x6b,0x70,0x36,0xc2,0xae,0x84,0x8e,0x19,0x80,0x20,0x7e,
+ 0x19,0xad,0x61,0x89,0x8c,0xba,0x90,0xe9,0x58,0xf3,0x1b,0xaf,0x83,0x1a,0x6c,0xbc,
+ 0x88,0x65,0x42,0x7f,0xbc,0x8a,0xdf,0xd2,0xb2,0xa7,0xf8,0x2d,0x6a,0x87,0xe4,0x9c,
+ 0xa7,0xd5,0x0a,0xff,0x00,0x23,0x5e,0xc8,0xfe,0x24,0xb5,0x8f,0x72,0x98,0xd8,0xba,
+ 0x81,0xf7,0x7b,0xe7,0xeb,0x54,0xa6,0xf1,0x34,0x73,0x44,0xc4,0x22,0xa8,0x1e,0xab,
+ 0x82,0x7e,0x99,0xce,0x69,0x7d,0x66,0x9b,0xea,0x54,0x61,0x24,0x78,0xe9,0xf8,0x43,
+ 0x74,0xa0,0x9b,0x5b,0xe5,0x62,0x3b,0x09,0x30,0x7f,0x51,0x51,0x49,0xe0,0x7f,0x13,
+ 0xe9,0x31,0xb3,0xc7,0x72,0xfe,0x5a,0x8c,0x92,0x1c,0x7f,0x8d,0x7a,0x45,0xf5,0xc4,
+ 0x32,0x87,0x9e,0xdd,0x02,0x4e,0x4e,0xe1,0xd0,0x82,0x7d,0xc7,0xff,0x00,0xae,0xb3,
+ 0xee,0xf5,0x09,0xe6,0x89,0xa0,0x77,0x2e,0x37,0x65,0xb9,0xfd,0x3f,0xfa,0xd5,0xce,
+ 0xf1,0x10,0xb6,0xa8,0xda,0xcc,0xe0,0xec,0x35,0x0f,0x11,0xd9,0xdc,0xc4,0x1a,0xdd,
+ 0x6e,0x49,0x20,0x0d,0xf1,0x8c,0x9f,0x4e,0x48,0x1f,0xce,0xbf,0x5d,0x3f,0x62,0x3f,
+ 0x88,0x37,0x1f,0x11,0x3e,0x01,0xe9,0x17,0x37,0x88,0x12,0xeb,0x4f,0xb8,0x9b,0x4f,
+ 0x97,0x68,0xc6,0x4a,0x10,0xc0,0x9f,0x7c,0x38,0x1f,0x85,0x7e,0x5a,0x68,0xba,0xdc,
+ 0x63,0xc5,0xba,0x65,0xba,0x39,0x65,0x17,0x31,0xf9,0x81,0xb9,0x18,0x0c,0x38,0x15,
+ 0xfa,0x41,0xfb,0x07,0xea,0xfa,0x46,0x81,0xe0,0x8f,0x19,0x78,0x76,0x6d,0x52,0xce,
+ 0x0b,0xfb,0x6f,0x17,0xea,0x28,0x96,0x92,0x4e,0xab,0x29,0x40,0x22,0x00,0x85,0x27,
+ 0x24,0x64,0x1e,0x71,0xda,0xb8,0xea,0xc1,0x54,0x49,0xd8,0xdb,0xda,0x49,0xc7,0x95,
+ 0xbd,0x0f,0xa8,0xf6,0x15,0xbb,0x4f,0x94,0x9c,0x2b,0x70,0x7d,0xc8,0xff,0x00,0x03,
+ 0x4b,0x7d,0x31,0xb4,0xb6,0x91,0xc2,0x86,0x6e,0x8a,0x99,0xfb,0xcc,0x78,0x03,0xf3,
+ 0x22,0x96,0x1c,0xc8,0xee,0xe4,0xf4,0x0a,0xbf,0xd7,0xfa,0xd5,0x63,0x38,0xbf,0xd4,
+ 0xd2,0x20,0x0f,0x95,0x6f,0x97,0x27,0xd5,0xba,0x01,0xff,0x00,0xa1,0x7e,0x42,0xb0,
+ 0xb2,0x51,0xd3,0x77,0xa2,0xfc,0xbf,0xe0,0x92,0x91,0xe0,0x5f,0x1f,0x3f,0x68,0xa3,
+ 0xf0,0x5f,0xc7,0x1a,0x5d,0xb5,0xde,0x80,0x35,0x7b,0x89,0x2c,0x24,0x78,0xe6,0xb7,
+ 0xbb,0xf2,0x44,0x71,0xbc,0xa0,0x60,0xab,0x23,0x64,0xfe,0xe4,0x73,0x90,0x3a,0xf1,
+ 0x5e,0x79,0x27,0xed,0xe3,0xa7,0xdc,0x23,0x25,0xe7,0x87,0x35,0x78,0xc1,0x39,0xc4,
+ 0x17,0x70,0x1c,0x73,0xc6,0x0f,0x96,0x0d,0x72,0xbf,0xb6,0xc5,0xbd,0xd7,0x89,0x3e,
+ 0x3f,0xe8,0x9a,0x35,0x92,0x19,0x6e,0xa5,0xd3,0x6d,0x6d,0xa2,0x8c,0x77,0x91,0xe6,
+ 0x97,0x03,0xf5,0x15,0xd1,0xfe,0xd4,0x3f,0x07,0xbc,0x31,0xe1,0xef,0x82,0xd6,0x12,
+ 0x78,0x76,0xca,0xcc,0x6a,0x7e,0x1b,0xbc,0x82,0xc7,0x53,0xbb,0xb7,0x89,0x56,0x59,
+ 0x0b,0x42,0x33,0xe6,0x30,0x19,0x62,0x59,0xe3,0x3c,0xff,0x00,0x7a,0xbe,0x7b,0x13,
+ 0x2a,0xd2,0xab,0x59,0xc2,0xdc,0xb0,0xef,0xd7,0x43,0xf5,0xcc,0xb7,0x28,0xc9,0x7e,
+ 0xad,0x80,0x58,0xc8,0x49,0xd5,0xc4,0x5f,0x54,0xec,0x96,0xb6,0x4d,0xfa,0xbb,0x24,
+ 0x69,0xdb,0xfe,0xdd,0x3e,0x0a,0x90,0x22,0xdd,0x78,0x63,0xc4,0x72,0x61,0xb7,0x7c,
+ 0xb3,0xc4,0xd9,0xe7,0xb8,0xf3,0x54,0x1e,0x7b,0xd6,0xa6,0x99,0xf1,0x97,0xc3,0x5f,
+ 0x1a,0xee,0xed,0x2d,0x34,0xad,0x0e,0xfa,0x0b,0x5f,0xed,0x2f,0x3a,0x78,0xf5,0x58,
+ 0xe1,0xf2,0xce,0x6d,0xca,0x28,0xc2,0xc8,0xfb,0xb1,0xb4,0x1c,0x9e,0x95,0xcb,0xf8,
+ 0x8b,0xf6,0x74,0xd0,0x34,0x3f,0xd9,0x76,0xe8,0x1b,0x0b,0x63,0xe3,0xdb,0x1d,0x3a,
+ 0x1d,0x62,0xee,0x7d,0xbf,0xe9,0x11,0xa3,0xc8,0x58,0xa1,0xf6,0x08,0xae,0xbf,0x54,
+ 0x35,0xe7,0x7f,0xb3,0x06,0xab,0xa7,0x68,0x8f,0x1d,0xc6,0xa3,0x7b,0x15,0x94,0x4d,
+ 0x75,0x28,0x32,0x5c,0x30,0x44,0xf9,0x52,0x2e,0xac,0x78,0x1c,0x33,0x0f,0xc6,0xb9,
+ 0xe7,0x2a,0xd4,0xad,0x4e,0xa4,0x57,0xbd,0x1b,0xe8,0xb5,0x23,0x15,0x95,0x64,0xd3,
+ 0xc0,0x57,0xc6,0xe0,0x1c,0xef,0x4e,0x6a,0x1a,0xbb,0xa7,0xaa,0xd5,0x79,0x35,0xb1,
+ 0xf4,0x47,0x89,0xb5,0x9d,0x3e,0xdb,0xc0,0xcf,0x0d,0xc5,0x8d,0xad,0xe4,0xd6,0xb7,
+ 0x06,0x24,0x89,0xed,0xd1,0xbf,0x77,0xf2,0x85,0xc6,0x47,0x00,0x02,0x7a,0x62,0xb8,
+ 0x3b,0x2d,0x1b,0x47,0xd5,0x91,0x99,0x74,0x9b,0x28,0xc7,0x99,0x82,0xee,0x36,0xed,
+ 0x04,0x70,0x3f,0x3c,0xd3,0xbe,0x20,0xf8,0x9b,0x4e,0x58,0x2c,0x1a,0x3b,0xeb,0x77,
+ 0x92,0x57,0xf3,0x40,0x12,0x2f,0x28,0x51,0x76,0xbf,0xa6,0x0f,0xf4,0xaa,0x9a,0x3f,
+ 0x8c,0xb4,0x99,0xf6,0xc6,0xd7,0x96,0xf0,0xa1,0x52,0x1d,0x5d,0x86,0x5b,0xf2,0xe3,
+ 0x9c,0xe3,0xbe,0x07,0x7a,0x57,0x76,0xb9,0xf0,0x96,0x51,0x7c,0xb6,0x35,0x2c,0xbc,
+ 0x03,0xe1,0xfb,0xa9,0x75,0x7b,0xa7,0xd3,0xe1,0x6b,0x7b,0x58,0x62,0x29,0x10,0x62,
+ 0xa0,0xb3,0xbe,0xd0,0x49,0xeb,0xfa,0x55,0x59,0xad,0x3c,0x25,0x6c,0x56,0x39,0x34,
+ 0x83,0x2b,0x2a,0xe3,0x28,0xf2,0x6d,0x51,0xd8,0x0f,0x98,0x7e,0xbc,0xd6,0xdc,0x3a,
+ 0x9e,0x99,0xfd,0x8f,0xe2,0x30,0xb7,0xb6,0xeb,0x04,0x86,0xd2,0x38,0xd9,0x24,0x00,
+ 0x30,0x0e,0x49,0xc6,0x3d,0x00,0xcd,0x71,0xd7,0x92,0xd9,0x5c,0x5c,0x3b,0x67,0xce,
+ 0x50,0x4a,0xab,0x2b,0x85,0x1b,0x41,0xc0,0xe0,0x8f,0x4a,0x95,0xbb,0xbb,0x1a,0xd6,
+ 0xf7,0x3f,0x33,0x3c,0x69,0x31,0xb2,0xf1,0xf5,0xbc,0xb9,0x0a,0xbe,0x64,0x6e,0x48,
+ 0xea,0x00,0x03,0x3f,0xd6,0xb1,0xfe,0x21,0x84,0x7d,0x79,0xa6,0x53,0xbb,0xcc,0x55,
+ 0xc7,0xfd,0xf3,0x90,0x6b,0x4b,0xe2,0xb1,0x16,0xfe,0x2f,0xb2,0x99,0xc0,0x28,0x56,
+ 0x32,0xc3,0xb6,0x37,0x1c,0xd7,0x3f,0xae,0xdc,0x3d,0xe3,0x30,0x89,0x04,0xa7,0x60,
+ 0x8d,0x48,0x42,0xc4,0x2e,0x77,0x02,0x3d,0x0f,0x00,0x7d,0x33,0xeb,0x5f,0xa4,0xd6,
+ 0x95,0xb9,0xa3,0xe6,0x7c,0xa5,0x25,0x75,0x19,0x79,0x19,0x96,0x3a,0x8c,0x4b,0x78,
+ 0x5a,0x66,0x2b,0x1c,0xff,0x00,0x2b,0xb0,0x39,0xfc,0xc7,0x7e,0xd4,0xe2,0xbf,0x67,
+ 0x90,0x43,0x2a,0x1b,0x73,0x92,0x0c,0xbc,0x9c,0xe7,0xa0,0x61,0xf8,0x74,0xaa,0x30,
+ 0xe9,0xf7,0x09,0x3c,0x6b,0x2a,0xac,0x2b,0x93,0x80,0xdc,0x1f,0x5e,0xf5,0xe8,0x13,
+ 0xc8,0x92,0xdb,0x58,0xdd,0x4c,0xd1,0x49,0x0e,0xa1,0x01,0x8a,0xf2,0x18,0xc0,0x01,
+ 0x9d,0x4e,0x03,0xf4,0xfb,0xdc,0x03,0xc7,0x53,0xf9,0x56,0x70,0x5d,0x0d,0x64,0xec,
+ 0x75,0x7f,0x0f,0x21,0xbe,0xf0,0xec,0x81,0xae,0xe0,0x31,0xc3,0x34,0xa2,0x19,0x24,
+ 0x41,0xb9,0x33,0x81,0xb5,0xb3,0xd9,0x4e,0x7a,0xe7,0x1e,0xd5,0xea,0x3e,0x50,0x66,
+ 0x2a,0xc9,0x8e,0x32,0x18,0x74,0x35,0x8f,0xe1,0x2d,0x73,0x4d,0x9a,0xc2,0xda,0xc4,
+ 0x4e,0x1e,0x58,0x21,0x0a,0xd2,0x36,0x48,0x60,0x38,0xfb,0xc7,0x83,0xf9,0xf7,0xe2,
+ 0xb4,0xad,0xb5,0xa9,0x2e,0x92,0x74,0xd0,0xb4,0x7b,0xdd,0x74,0xc1,0x92,0xcf,0x61,
+ 0x6b,0x24,0xc9,0x18,0x1f,0x78,0x33,0x28,0xda,0xb8,0xff,0x00,0x68,0x8a,0xeb,0x53,
+ 0x54,0x63,0xab,0xd0,0xe7,0x70,0x75,0x1d,0xec,0x4a,0xd6,0x23,0xc9,0x90,0x81,0xbb,
+ 0x38,0xe2,0xa8,0xb5,0xba,0xca,0x5f,0x60,0x2b,0x27,0x3f,0x2b,0xf0,0x47,0xd4,0x57,
+ 0x3d,0xe2,0x4f,0x89,0x7a,0x86,0x8f,0x00,0xfb,0x56,0x9d,0x6d,0x6d,0xe6,0x91,0xb0,
+ 0x1b,0xe8,0x59,0x87,0xae,0xe4,0x88,0xc8,0xca,0x79,0x1c,0x1c,0x1e,0xbe,0x86,0xb9,
+ 0x3b,0x6d,0x66,0x5f,0x1b,0x6b,0x2d,0x19,0xbf,0x82,0xc2,0xe1,0x09,0xf2,0x1e,0x38,
+ 0xa5,0x90,0x16,0x04,0x64,0x02,0xce,0x39,0xc7,0x6c,0x63,0xad,0x67,0x3c,0x6c,0x21,
+ 0x1e,0x66,0xee,0x8a,0x8e,0x16,0x53,0x76,0xb1,0xe9,0x01,0x23,0x64,0x5c,0xb2,0xef,
+ 0xc6,0x0a,0xaf,0xcc,0x41,0xfc,0x2a,0xbc,0x8a,0xd1,0x12,0xac,0xab,0xb9,0x8f,0xc8,
+ 0x58,0xed,0x04,0x7e,0xbc,0xd7,0x41,0xe1,0x2f,0x86,0x43,0xc6,0x16,0x04,0xeb,0x1e,
+ 0x21,0xbf,0x95,0x21,0x98,0xa2,0x2d,0xbc,0x51,0x40,0x7e,0x55,0x56,0xce,0x42,0x9e,
+ 0xed,0x8a,0xe4,0x3e,0x36,0xe9,0x5e,0x15,0xf0,0x6e,0x9f,0x05,0x85,0xbb,0x5c,0xcf,
+ 0xaf,0x4a,0xcb,0x21,0x37,0x72,0x4c,0xff,0x00,0xbb,0x3b,0xc6,0x72,0x70,0x9d,0x40,
+ 0xf7,0xaf,0x31,0x67,0x74,0xa5,0x53,0xd9,0xc2,0x2d,0xb3,0x77,0x97,0xce,0x31,0xbc,
+ 0x9d,0x8a,0xef,0xac,0xda,0x25,0xd1,0x8a,0xe6,0xfe,0x18,0x02,0x91,0xc4,0x67,0x07,
+ 0xe8,0x73,0xfd,0x2a,0xb3,0x78,0xa7,0x49,0xb3,0x69,0x24,0x81,0x67,0xbb,0x18,0x2a,
+ 0xce,0x91,0x92,0x41,0xfa,0xbe,0x33,0xf9,0xd7,0x93,0xd9,0xde,0x35,0xd5,0xc2,0xba,
+ 0x0d,0xa4,0xbe,0xd5,0x42,0x80,0x11,0xcf,0x38,0x27,0xbf,0x5a,0xbb,0x7d,0x0c,0xf6,
+ 0x17,0x97,0xd6,0xf7,0x73,0x95,0x36,0x92,0xb4,0x0c,0x5d,0xcb,0x2b,0x15,0x38,0x3b,
+ 0x47,0x19,0x1c,0x7a,0x57,0x53,0xc6,0xce,0x4e,0xc9,0x19,0x2a,0x11,0x5b,0x9d,0x1d,
+ 0xd7,0x8f,0x2e,0x12,0x57,0x96,0x16,0x47,0x88,0x61,0xbc,0xa6,0x2b,0x9c,0x7a,0x63,
+ 0x39,0xfc,0x6a,0x8c,0xbe,0x3a,0x97,0x0b,0x34,0x6f,0x87,0x00,0xab,0x2b,0x61,0x57,
+ 0x39,0xeb,0x8f,0xa7,0xb5,0x73,0x16,0xb1,0x5a,0x4a,0xe1,0x4a,0xce,0x84,0xae,0x57,
+ 0x18,0xe4,0x0e,0xf8,0xf4,0xf7,0x15,0xb3,0xa3,0xe8,0x96,0x37,0xf7,0x1b,0xa6,0x32,
+ 0x18,0x5f,0xfd,0x5b,0x08,0x87,0xcd,0x8e,0xa0,0x7c,0xdd,0x47,0x15,0xcf,0xf5,0x99,
+ 0xee,0xe4,0xcd,0x3d,0x94,0x7b,0x16,0x35,0x3f,0x10,0x43,0xae,0xa4,0x0c,0x55,0x63,
+ 0x98,0x28,0xf3,0x4a,0xb0,0x01,0x8e,0x78,0xe8,0x72,0x2a,0xb4,0xd7,0x04,0x09,0x0b,
+ 0x16,0x32,0x13,0x95,0x04,0x7c,0xa7,0xd7,0xbe,0x6b,0x4a,0x0d,0x3b,0x48,0xb4,0x0c,
+ 0xf3,0xd9,0xcc,0xec,0xa3,0x6e,0xd0,0xfb,0x18,0xf7,0xce,0x0f,0x51,0xee,0x09,0xef,
+ 0x55,0x2f,0x6d,0x6c,0x67,0xb5,0x4f,0x22,0x4c,0x4c,0x4e,0x0c,0x65,0xfe,0x52,0x3e,
+ 0xbf,0xfe,0xaa,0x4f,0x10,0x9e,0xa3,0xf6,0x68,0xcb,0x93,0x54,0x3f,0x72,0x30,0xdf,
+ 0x21,0xc8,0x28,0x72,0x33,0xdc,0x01,0xd7,0xa7,0xd6,0xb3,0xd6,0xfa,0x6f,0xb4,0x34,
+ 0x72,0x38,0x7e,0x92,0x12,0x41,0x3d,0xb3,0x8e,0x6a,0xda,0xd9,0x9b,0x6b,0x66,0x63,
+ 0x6e,0xcf,0x04,0xdf,0xea,0xdd,0x5c,0x7c,0xb8,0xf6,0xf5,0xf7,0xac,0xcb,0xbd,0x34,
+ 0x97,0x6d,0x86,0x56,0x56,0x19,0x5f,0x2c,0x67,0x23,0xdc,0x0e,0x9d,0x28,0x52,0x52,
+ 0xd4,0x76,0xb0,0xe9,0xb5,0xd9,0x24,0x08,0xd8,0x54,0x45,0x38,0x0a,0xcc,0x39,0xf7,
+ 0x19,0x1e,0xd5,0x2a,0xeb,0x85,0xa4,0x25,0xe0,0x0e,0x71,0xc9,0x0e,0x08,0x1c,0x7d,
+ 0x2b,0x2a,0xe3,0x4c,0x76,0x85,0x19,0x8c,0x63,0xe5,0xc1,0x05,0x82,0xb0,0xe7,0x1d,
+ 0xf0,0x6a,0xbc,0x70,0xcd,0x68,0x85,0x96,0x42,0x06,0x7a,0xa0,0xef,0xf5,0xaa,0xb0,
+ 0xb5,0x3a,0xa8,0x75,0x15,0x86,0x7f,0x31,0xa4,0x9e,0xdc,0xb0,0xca,0x00,0x99,0x07,
+ 0xe9,0x90,0x2b,0x5a,0xd3,0xc5,0x73,0x5b,0xa3,0xb4,0x79,0x19,0x18,0x0c,0xd2,0x61,
+ 0xb3,0xf8,0x60,0x7e,0x9d,0xeb,0x84,0xb7,0x12,0x23,0x02,0x3c,0xb2,0x0f,0x6c,0x72,
+ 0x7f,0x3a,0xdd,0xfb,0x4b,0x1b,0x74,0x69,0x44,0x92,0x38,0xe8,0x8d,0x82,0xa0,0x76,
+ 0xef,0xfd,0x2b,0x37,0x02,0xce,0xb5,0xbc,0x5f,0xa8,0x24,0x88,0x0d,0xc3,0x87,0x70,
+ 0x08,0x0b,0x30,0x38,0xfa,0x8a,0xea,0x6f,0x2e,0xf5,0xbd,0x1f,0x42,0xb3,0xd5,0xae,
+ 0x67,0xb6,0x96,0xca,0x62,0xa0,0x34,0x57,0x70,0x3b,0xe5,0x81,0x60,0x19,0x15,0xcb,
+ 0x29,0xc0,0x39,0xc8,0x18,0xe8,0x70,0x78,0xaf,0x30,0x2f,0x73,0x34,0x7e,0x62,0x47,
+ 0x22,0x67,0x82,0xcd,0xd0,0x7a,0x72,0x07,0x14,0x34,0x81,0x6d,0x53,0xcd,0x5f,0x9c,
+ 0x9c,0xe4,0x82,0x7e,0x98,0xc5,0x47,0x2b,0x56,0xb1,0x4a,0xce,0xf7,0x3d,0x23,0x52,
+ 0xf1,0x0f,0x89,0x74,0x3d,0x45,0x6c,0xf5,0x3d,0x37,0xec,0x13,0xc9,0x1f,0x9b,0x14,
+ 0x52,0x42,0xdb,0xe4,0x43,0x9f,0x98,0x1c,0xf2,0x38,0x3c,0x8f,0x43,0x5e,0xe7,0xf0,
+ 0x4f,0xe0,0x65,0xdf,0xc6,0xbf,0x0b,0xf8,0xa7,0x59,0xb6,0xf1,0x35,0xbd,0x8c,0x3a,
+ 0x16,0x9d,0xf6,0xf9,0x6d,0x2d,0x2c,0x9e,0xe6,0xe9,0x9b,0x12,0x91,0x0e,0xc2,0xca,
+ 0x03,0x1f,0x2b,0x8c,0x6e,0xce,0xe1,0xd7,0xa5,0x7c,0xf3,0xa1,0xea,0x7a,0x96,0x86,
+ 0xf1,0xdf,0x59,0x4b,0x73,0x67,0xa8,0x5b,0x29,0x96,0x0b,0xc8,0x72,0x92,0xc3,0xf2,
+ 0x75,0x0c,0x0e,0x54,0xf6,0xeb,0xde,0xbe,0xcb,0xf8,0x0f,0xfb,0x4f,0xbf,0x8a,0x35,
+ 0x0d,0x27,0x56,0x95,0x12,0xdb,0xc6,0x16,0xda,0x5d,0xd6,0x81,0x7d,0x15,0xac,0x6b,
+ 0x1a,0xea,0x21,0xa1,0x79,0x2d,0xa6,0x23,0xa6,0xef,0x32,0x35,0xcf,0x65,0xf9,0xcf,
+ 0x01,0xb1,0x5c,0x55,0x65,0x28,0xa4,0xd2,0xd3,0xab,0x3a,0x5d,0x1b,0x7e,0x87,0xc6,
+ 0x7e,0x1f,0xb9,0x92,0xdf,0x54,0x81,0xf7,0x6f,0x95,0x58,0xb9,0xf5,0xc8,0x39,0xfe,
+ 0xb5,0xd5,0x7c,0x70,0xd4,0x25,0xd3,0x3e,0x34,0xf8,0xa9,0xa0,0x91,0xa3,0x12,0x6a,
+ 0x33,0x4e,0xbb,0x4e,0x3e,0xf3,0x07,0xcf,0xfe,0x3d,0x5c,0x95,0x96,0x3f,0xb7,0x0c,
+ 0xd9,0x20,0x1c,0x36,0xe3,0xd7,0x07,0x2b,0x4e,0xf8,0xbf,0xae,0xcd,0xa9,0xfc,0x40,
+ 0xbc,0xbe,0x6d,0xaa,0xf2,0x15,0x3f,0x28,0xc8,0x20,0x47,0x18,0x07,0x9f,0x50,0x01,
+ 0xfa,0xd7,0xa9,0x49,0xde,0x56,0x39,0x5a,0xb1,0xf6,0xdf,0xfc,0x13,0xfb,0xf6,0x80,
+ 0xd6,0x07,0x8e,0x4f,0x86,0xb5,0x6d,0x5e,0xe6,0x7d,0x22,0xee,0xd5,0xc4,0x71,0x4e,
+ 0xed,0x24,0x70,0xca,0xa0,0x30,0x70,0x39,0xda,0x30,0x08,0x27,0xa6,0x3a,0xf4,0xc8,
+ 0xfd,0x18,0xd3,0xad,0x56,0x10,0xec,0xab,0x85,0x2d,0x90,0xd9,0xc9,0x6e,0x00,0xcf,
+ 0xe9,0xfa,0xd7,0xe1,0xe7,0xc0,0x5f,0x10,0xde,0x5b,0x78,0x8a,0x19,0x60,0x98,0xdb,
+ 0xdd,0xc6,0x03,0x45,0x34,0x38,0x8d,0xd4,0x82,0x79,0x0d,0xc7,0xb5,0x7e,0xbf,0x78,
+ 0x13,0x55,0xf1,0x45,0xf7,0xc3,0xbd,0x0c,0xb3,0x23,0xdc,0xcd,0x14,0x4d,0x2d,0xcc,
+ 0x28,0xbb,0xf6,0x7f,0x18,0x54,0x66,0x0a,0xad,0xe8,0x49,0x20,0x67,0xee,0x8e,0x00,
+ 0xe4,0xaf,0x25,0x0a,0xb6,0x6a,0xe8,0xd5,0x42,0xf0,0xba,0x3c,0x73,0xc5,0x2f,0xa2,
+ 0xc1,0xfb,0x5c,0xf8,0x93,0xc5,0x3a,0xf5,0xed,0xb4,0x16,0x5e,0x15,0xd2,0x22,0x9e,
+ 0x28,0xa6,0x95,0x55,0xa5,0x9b,0xc9,0xca,0xaa,0x02,0x7e,0x62,0x37,0x31,0xe3,0xb8,
+ 0x5a,0xe7,0xff,0x00,0x65,0x7f,0x19,0xd9,0xfc,0x51,0xd4,0x7e,0x21,0xe8,0xbe,0x2b,
+ 0x78,0xde,0x0d,0x5a,0xe6,0x2d,0x68,0xc7,0x33,0x80,0xac,0xeb,0x2e,0xe6,0x1c,0xf6,
+ 0xe2,0x21,0x8f,0x41,0x5c,0xc7,0xc7,0xff,0x00,0x80,0x5e,0x3c,0xf8,0x81,0xf1,0x4f,
+ 0x5e,0xd7,0xf4,0x4d,0x32,0x1b,0xbd,0x3e,0x63,0x12,0xc3,0x11,0xbd,0x53,0x70,0xa1,
+ 0x22,0x48,0xc8,0x65,0x19,0x00,0xe5,0x1b,0xb9,0xfc,0xeb,0x8a,0xff,0x00,0x86,0x46,
+ 0xf8,0x81,0x0c,0x6a,0x65,0x86,0xc2,0x16,0x65,0x0c,0x56,0x69,0xde,0x20,0xa4,0xff,
+ 0x00,0x0e,0xe7,0x45,0x5c,0xfd,0x09,0xaf,0x98,0xac,0xf1,0x30,0xc4,0x73,0xc2,0x9d,
+ 0xe3,0x76,0xf7,0xde,0xfa,0x7e,0x47,0xed,0x78,0x1f,0xec,0x4c,0x4e,0x56,0xa9,0x57,
+ 0xc6,0xa8,0x55,0x94,0x29,0xc5,0x68,0xff,0x00,0x77,0xc8,0xf9,0xb4,0xef,0x79,0x5d,
+ 0xbd,0x7f,0x23,0xd8,0x3e,0x16,0x7c,0x55,0x8b,0xe2,0x9f,0xed,0x29,0xe3,0xad,0x3a,
+ 0xe2,0x6d,0xda,0x2f,0x88,0x74,0xe9,0xf4,0xcb,0x54,0x27,0xe5,0x31,0xc4,0x30,0x84,
+ 0x7d,0x57,0xcc,0x6f,0xab,0x1a,0xe6,0xbf,0x67,0x1f,0x87,0xb2,0x2f,0x84,0xbc,0x63,
+ 0x25,0xcd,0xb4,0x6f,0xa8,0x68,0x3a,0xa2,0x32,0x34,0xa8,0x0e,0x0a,0xb3,0x24,0x83,
+ 0x9e,0xd8,0x4c,0xe3,0xbe,0xd1,0x5f,0x38,0xfc,0x5b,0xf0,0xae,0xb3,0xf0,0x27,0x56,
+ 0xd3,0x2d,0xfc,0x4b,0x18,0xb4,0x9b,0x51,0x80,0xdc,0xda,0x4b,0x67,0x3a,0x4e,0xae,
+ 0x80,0xed,0x27,0x72,0x31,0xc7,0x3e,0xb5,0xf6,0xaf,0xec,0x45,0xab,0xe8,0x83,0xe1,
+ 0x13,0xdc,0xdc,0xdd,0x20,0x3a,0x92,0x3c,0xae,0x93,0x7f,0xac,0x91,0x56,0x69,0x90,
+ 0x9c,0x75,0x3e,0x94,0x50,0x85,0x7a,0x8f,0xfd,0xa6,0x0e,0x3f,0x13,0xbb,0xdb,0x5b,
+ 0x68,0x71,0xf1,0x25,0x4c,0xb2,0x86,0x0d,0xac,0xaf,0x11,0x19,0xa9,0x7b,0x28,0xf2,
+ 0x2d,0xfd,0xc5,0x25,0xcd,0xf3,0x56,0x4f,0x4d,0xce,0x7a,0xfe,0x28,0x5b,0x4e,0xb2,
+ 0x58,0x2d,0xe3,0xb7,0x56,0x9d,0xa4,0x6f,0x90,0x11,0x21,0xda,0xbb,0xb3,0x91,0xcf,
+ 0x4f,0xd6,0xa3,0x8b,0x40,0xb7,0x8e,0x55,0x9d,0xed,0x6c,0xa6,0x6e,0xbb,0x25,0xb4,
+ 0x8d,0xd7,0xf5,0x5a,0x8f,0xc6,0xf7,0x91,0x78,0x4f,0x57,0x4d,0x36,0x77,0x6c,0x46,
+ 0x44,0x80,0x34,0x6c,0x01,0x04,0x0e,0x73,0x8e,0xbd,0xaa,0x85,0xaf,0xc4,0x7d,0x25,
+ 0xd5,0x55,0xa7,0x54,0x19,0xc6,0xed,0xc3,0x1f,0xd2,0xb3,0xb3,0x5a,0x1f,0x9d,0x5d,
+ 0x37,0x73,0xb4,0x57,0xb4,0x3a,0x45,0xcf,0xda,0x3c,0x2f,0xa0,0x3d,0xb4,0x09,0xb9,
+ 0x5a,0x3d,0x36,0x3d,0xd9,0x24,0x0e,0xa4,0x1c,0x54,0x7e,0x14,0xf8,0x7f,0xe1,0xcd,
+ 0x4b,0x44,0x86,0x66,0xd2,0x60,0x92,0x62,0xce,0x25,0x25,0x07,0xde,0xde,0x48,0xfa,
+ 0x0c,0x11,0xc0,0xac,0x05,0xf8,0x8b,0xa6,0x41,0x63,0x79,0x6e,0x97,0xb0,0xed,0xb9,
+ 0x40,0x84,0x17,0x5f,0x97,0x9c,0xe4,0x66,0xae,0xe8,0x1e,0x21,0xd1,0x6d,0x74,0xf0,
+ 0x97,0x3a,0xe4,0x76,0x72,0xee,0x27,0xcb,0x0f,0xdb,0xb1,0xe2,0xb1,0x71,0x76,0x29,
+ 0x35,0x7d,0x11,0xf9,0x71,0xf1,0xea,0xc1,0xec,0x35,0x6b,0x78,0xe4,0xdb,0xe6,0x24,
+ 0x2a,0xd9,0x8d,0xc3,0x03,0xc9,0x3d,0x41,0x20,0xd7,0x45,0xe0,0xdf,0x84,0x1e,0x11,
+ 0xf1,0x3f,0x87,0x85,0xfe,0xb9,0xf1,0x4b,0x4e,0xf0,0xf5,0xd0,0x8b,0xcd,0x1a,0x73,
+ 0xc0,0x4b,0x9c,0xa2,0xb0,0x1b,0x99,0x94,0x0c,0x86,0x03,0xbf,0x20,0xfa,0x55,0xcf,
+ 0xdb,0x06,0x09,0x60,0xf1,0xf4,0x3e,0x7e,0x9b,0xfd,0x93,0x29,0xb4,0x40,0xd6,0xa1,
+ 0x91,0x80,0x3b,0x7a,0xfc,0x84,0x8c,0x1f,0xff,0x00,0x5d,0x49,0xf1,0x43,0x5f,0x93,
+ 0x49,0xd1,0x7c,0x2d,0xa5,0x68,0x5a,0x9c,0xd0,0x69,0xf7,0x3e,0x1d,0xb0,0x9a,0xfa,
+ 0x08,0xa5,0x70,0xaf,0x72,0xd0,0xa8,0x7d,0xd9,0xeb,0xc0,0x51,0x81,0xc0,0x00,0x01,
+ 0xd2,0xbe,0xef,0x11,0x39,0x4d,0x2e,0x57,0x66,0xff,0x00,0xaf,0x33,0xe7,0x69,0xc5,
+ 0x45,0x59,0xad,0x8a,0x1e,0x11,0xf8,0x67,0xf0,0xbe,0x78,0xfc,0x27,0x71,0xa8,0xf8,
+ 0xa1,0xae,0x6e,0xee,0xef,0x2f,0x63,0xd4,0xad,0xa4,0xbf,0x8a,0x15,0x8e,0x38,0xed,
+ 0x9e,0x48,0x48,0xe3,0x29,0xbe,0x40,0x8b,0x92,0x79,0x39,0x03,0x9a,0x9b,0x57,0xf0,
+ 0xef,0x83,0xac,0x7e,0x11,0x69,0x77,0xd6,0x97,0x16,0xff,0x00,0xda,0x9f,0xda,0x21,
+ 0x25,0x99,0x2e,0x77,0xcd,0xe5,0xfd,0x9d,0x49,0x3e,0x5e,0xef,0x95,0x7c,0xc0,0xfd,
+ 0x87,0x41,0xea,0x33,0xdd,0x7e,0xcf,0x5a,0x26,0x97,0xe2,0x6f,0x8a,0x3f,0x0f,0xb4,
+ 0x4d,0x4b,0x49,0xb2,0x9e,0xcb,0xcd,0xb9,0xbb,0x76,0x96,0x04,0x63,0x26,0xcb,0x27,
+ 0x6d,0x8d,0x90,0x77,0x2e,0x40,0x38,0x3d,0xeb,0xec,0x7b,0xff,0x00,0x84,0xff,0x00,
+ 0x0b,0x27,0x82,0x38,0x2e,0x7c,0x31,0xe1,0x23,0x24,0x8e,0x4b,0x31,0xd3,0xed,0xf2,
+ 0xc0,0x28,0xc7,0x3b,0x7f,0xce,0x6b,0xca,0xa9,0x8b,0xf6,0x13,0x57,0x6d,0xf5,0xfc,
+ 0x59,0xd9,0x0a,0x5e,0xd2,0x3a,0x58,0xf8,0x1b,0xf6,0x80,0xd7,0x74,0x3b,0x3f,0x04,
+ 0xfc,0x2f,0xb3,0xd0,0x0c,0x06,0x49,0xb4,0x6f,0x3e,0xf2,0x3b,0x40,0xb1,0x34,0xb2,
+ 0x36,0xd5,0xcc,0xc1,0x39,0x2d,0xf2,0xb7,0x1d,0xfb,0xd7,0xa7,0xfe,0xcb,0x6b,0x73,
+ 0xa7,0x7c,0x15,0xf8,0xa2,0x85,0x14,0x4b,0x7b,0xa4,0xca,0xc6,0x26,0x8c,0x02,0x13,
+ 0xcb,0x94,0x70,0x3e,0x8d,0x9a,0xf2,0x7f,0x8d,0xf6,0x5a,0x17,0x86,0xbf,0x68,0x5f,
+ 0x11,0x69,0x76,0x9a,0x4d,0x8d,0x9d,0x84,0x17,0x49,0x6f,0x04,0x36,0xf1,0x24,0x70,
+ 0xc6,0x0c,0x4b,0x9c,0x05,0x51,0xdf,0x24,0xf3,0xdc,0xfa,0x57,0x75,0xe1,0xad,0x63,
+ 0x5f,0x3f,0x0d,0xed,0x24,0xb6,0x9c,0xda,0x5d,0xdb,0xc1,0x75,0xa6,0x5e,0x04,0x21,
+ 0x44,0xd0,0x39,0x77,0x21,0xb8,0xe9,0x82,0xa0,0x00,0x3b,0x7e,0x5a,0x54,0x72,0xab,
+ 0x4e,0x31,0xef,0xae,0xbf,0x7f,0xfc,0x03,0x48,0x46,0x31,0xbc,0x8f,0x21,0xf1,0x1e,
+ 0x89,0x1d,0xcc,0x76,0x88,0x66,0x58,0x7f,0x7d,0xb7,0x9c,0xe0,0x1f,0x4e,0x33,0xef,
+ 0x5d,0xaf,0xc2,0x9f,0x07,0xd8,0xf8,0xb7,0xc1,0xfa,0xac,0x30,0x42,0x5b,0x55,0xb7,
+ 0xbd,0x79,0xad,0xa4,0x96,0x4f,0x29,0xd2,0x45,0x09,0x95,0xc1,0x56,0x1c,0xe3,0x19,
+ 0xe7,0xe9,0xc5,0x70,0xfe,0x24,0x92,0xf0,0x5d,0x45,0x1b,0x40,0x5c,0x49,0x22,0xed,
+ 0x09,0xce,0x5f,0x38,0xea,0x3f,0xcf,0x15,0xea,0x3f,0x0a,0xda,0xf2,0x3d,0x2e,0xe5,
+ 0xc4,0x46,0x32,0x26,0x63,0x2b,0x92,0x17,0x71,0x03,0x1e,0xb9,0xce,0x00,0x1d,0x2b,
+ 0x2c,0x74,0xa5,0x0a,0x37,0x8b,0xec,0x5e,0x15,0xc5,0xcf,0xde,0x3b,0xcf,0x00,0x7c,
+ 0x55,0xd0,0xac,0xbc,0x19,0x77,0x7b,0xab,0xd9,0x35,0xac,0xf6,0x77,0xcd,0x6f,0x3d,
+ 0xb3,0x36,0x26,0x81,0x8a,0x2a,0xab,0x30,0x00,0x0c,0x70,0x79,0x03,0xb6,0x3b,0x57,
+ 0x9f,0x7c,0x60,0x97,0xc3,0xff,0x00,0x11,0xd1,0x75,0x1d,0x3d,0xa4,0xb4,0xd7,0xac,
+ 0x57,0xc9,0x8e,0x35,0x60,0xd1,0x4b,0x1a,0x96,0x2c,0x0e,0x72,0x41,0x39,0x05,0x4e,
+ 0x71,0x92,0x47,0x5a,0xe0,0x7c,0x77,0xe2,0x3f,0x33,0xc7,0x7a,0xf4,0x56,0x70,0xcd,
+ 0x14,0x77,0x12,0x46,0x27,0x48,0xf2,0xdb,0xca,0x80,0x0f,0x18,0x1c,0x92,0x3d,0xeb,
+ 0x13,0x59,0xd7,0x8a,0xe9,0xd6,0x76,0x86,0x39,0xad,0xdb,0x27,0x12,0x49,0x18,0x5c,
+ 0x0c,0x93,0x85,0x3d,0x7b,0xb7,0x7e,0xf5,0xc9,0x4b,0x09,0xcb,0x38,0xd6,0x8e,0x8d,
+ 0xff,0x00,0x90,0xea,0x62,0x13,0x52,0x84,0x95,0xfc,0xcc,0x88,0x2d,0xee,0x24,0xf2,
+ 0x6e,0x56,0x70,0x58,0x5c,0xac,0x66,0xdd,0xce,0xe6,0xe4,0xf5,0x03,0x18,0xc7,0x51,
+ 0xd6,0x9d,0xaa,0xb4,0x77,0x77,0x9a,0xa4,0xb2,0x3a,0xc9,0x39,0x77,0x91,0xce,0xd2,
+ 0x03,0x65,0x8e,0x79,0xce,0x38,0xff,0x00,0x1a,0xd0,0xb2,0xd6,0x44,0x1a,0xcd,0xa5,
+ 0xd4,0x96,0xb0,0x5d,0x2c,0x4e,0x8a,0xab,0x26,0xe0,0x5d,0x81,0x5f,0x9c,0x01,0xd4,
+ 0xe4,0x73,0x9e,0x0e,0x6a,0xb3,0x69,0xba,0x82,0xc7,0x7f,0x2c,0x56,0xab,0x1c,0x97,
+ 0x24,0xb8,0x3b,0x94,0xf1,0xc9,0xc6,0x33,0x8e,0xfe,0x86,0xbd,0xb8,0x35,0x7b,0xb3,
+ 0xcc,0xb5,0xf4,0x48,0xad,0x2e,0x89,0xaa,0xe8,0x3a,0x74,0x77,0xe9,0x6f,0xbe,0xc1,
+ 0x86,0xf1,0x28,0x75,0x24,0x02,0x71,0x9c,0x03,0xc0,0x39,0xc6,0x71,0xc9,0xa9,0xe2,
+ 0x92,0x24,0xb4,0x59,0x64,0xd4,0xac,0x22,0x95,0xa2,0x12,0x08,0x90,0xb3,0xb8,0x04,
+ 0x8f,0x94,0xe0,0x10,0x1c,0x8f,0xc7,0x8e,0xd5,0x8f,0x25,0xcd,0xfd,0xd6,0xa3,0x1d,
+ 0xac,0xe2,0xe2,0x49,0x30,0x22,0x68,0xda,0x63,0x82,0xc3,0x85,0x1b,0x78,0xc8,0x03,
+ 0x80,0x3e,0x9c,0x9e,0x94,0xd1,0x61,0x1c,0x32,0x4b,0x25,0xe5,0xac,0xb3,0xcf,0x13,
+ 0xb2,0xe1,0xd9,0x81,0x6f,0x5e,0x9d,0x31,0xef,0xf8,0xd5,0x59,0x3d,0xc1,0x9b,0x1a,
+ 0x96,0xa7,0x15,0xfd,0xec,0x2d,0x67,0x78,0x6d,0xd2,0x44,0x19,0x79,0x54,0xc6,0x01,
+ 0x03,0x18,0x3d,0x79,0xc0,0x1c,0xe6,0xa1,0x17,0xb7,0x02,0x38,0x51,0x0f,0x98,0xfb,
+ 0x77,0x0f,0x30,0xf3,0x9e,0x3f,0x0a,0xcd,0x31,0xa6,0xa1,0x6b,0xe6,0x46,0xd3,0x4a,
+ 0x02,0xaa,0x24,0x57,0x25,0x87,0x94,0xdc,0x64,0x8c,0xbf,0x7f,0xcb,0xe9,0x4f,0x5d,
+ 0x3e,0xfd,0x6c,0xd5,0xbe,0xd3,0x10,0x8e,0x1f,0x9f,0xcc,0x8a,0x65,0x24,0xf3,0xf4,
+ 0xef,0x8a,0x6a,0x31,0x5a,0x13,0xb9,0xa9,0xa4,0xdd,0x3c,0x70,0x6c,0x92,0x3f,0xb4,
+ 0x00,0x48,0xdf,0x0b,0x0c,0x71,0xe9,0xc1,0xa1,0x23,0x4b,0xbb,0x9f,0xde,0x36,0x55,
+ 0x0f,0xdc,0xce,0xe0,0x3e,0xa4,0x62,0x96,0xcb,0x4b,0xbf,0xb8,0xb4,0x56,0x8a,0xde,
+ 0x50,0x8a,0x9e,0x72,0xca,0x54,0xc8,0x85,0x73,0xfc,0x47,0xa0,0x19,0xf6,0xfa,0xd2,
+ 0x5a,0x42,0xad,0x2a,0x88,0x5b,0x73,0xb0,0x1c,0x32,0x61,0x43,0xf7,0x04,0xf2,0x7a,
+ 0xff,0x00,0x3a,0x12,0x49,0x8e,0xcc,0xee,0xbe,0x21,0x69,0x7a,0x6c,0xda,0x6f,0x86,
+ 0x26,0xd2,0x74,0xf8,0x61,0xb7,0xb7,0xd1,0xe1,0x8a,0xf2,0x54,0x54,0x5f,0x36,0xe8,
+ 0xc9,0x2b,0x16,0x27,0x82,0x4e,0xd2,0x80,0x9e,0x7a,0x63,0xb0,0xae,0x46,0xeb,0xc3,
+ 0x56,0xa6,0x31,0x9b,0x98,0x22,0x96,0x68,0xc4,0xd1,0xac,0x72,0x2c,0x98,0xe8,0x70,
+ 0x46,0xee,0x0f,0xb6,0x01,0xeb,0xc5,0x5d,0xd7,0xa1,0xb9,0xb5,0xfb,0x0a,0xde,0xf9,
+ 0x4e,0x1e,0xdb,0x30,0x8b,0x5c,0x38,0x20,0x31,0x38,0x7c,0xb7,0x1c,0xe7,0xf4,0xe2,
+ 0xad,0xf8,0x3f,0xc2,0x16,0xde,0x2f,0x6d,0x49,0x23,0xb3,0xdd,0x2d,0x9a,0x79,0xe6,
+ 0xd9,0x24,0xd8,0xe5,0x3f,0x89,0x81,0x27,0x07,0x1c,0x64,0x70,0x79,0xe0,0xe7,0xac,
+ 0x36,0xa1,0x0b,0xdf,0x44,0x6b,0x05,0xcd,0x2d,0x8a,0x1e,0x1e,0xf8,0x7a,0xda,0xfd,
+ 0xea,0xdb,0xc7,0x77,0x0c,0x2a,0xd1,0x19,0x22,0x9d,0xfe,0x58,0xce,0xd2,0x03,0x0d,
+ 0xcf,0xb7,0x91,0x91,0xf9,0xd6,0xa6,0xbb,0xf0,0xaa,0xfb,0x47,0x4b,0x79,0x7c,0xeb,
+ 0x59,0xed,0x64,0xc2,0xfd,0xa2,0x2b,0x84,0x70,0x0f,0x38,0xce,0x1b,0x8e,0x84,0x67,
+ 0xa7,0x6a,0xb7,0xa8,0x78,0x27,0xfb,0x3e,0xce,0xda,0x5b,0x4b,0x95,0xbc,0x8c,0xdc,
+ 0x79,0x44,0x29,0x68,0xd9,0x0b,0x70,0x13,0xef,0x1c,0x0c,0xe3,0xf3,0xef,0x57,0xa1,
+ 0xf0,0x74,0xfa,0x7c,0x33,0x4b,0x7d,0x19,0x8e,0x14,0x87,0x26,0x4d,0xc1,0xca,0xe4,
+ 0x74,0xea,0x33,0x8e,0x38,0xac,0x3e,0xb3,0x1b,0xa6,0xa5,0xbf,0x43,0xad,0xe1,0xaa,
+ 0x59,0xae,0x5f,0x99,0xcb,0x5f,0x78,0x6e,0xf2,0xdb,0xf7,0x4d,0x31,0xc0,0x01,0xc4,
+ 0x7d,0x14,0x02,0x38,0xee,0x47,0x43,0x5d,0x96,0xb3,0xf0,0x5e,0xfb,0xc3,0xbf,0x0e,
+ 0x34,0x4f,0x17,0x4f,0x77,0x6e,0xda,0x6e,0xa5,0x37,0x95,0x14,0x51,0x4c,0x0c,0xbb,
+ 0x83,0x38,0x3b,0x94,0x0e,0x3f,0xd5,0xb5,0x73,0xb7,0x77,0x72,0x69,0x21,0xed,0x64,
+ 0x53,0x2c,0x8a,0x41,0xf3,0x62,0x7e,0x07,0x19,0x18,0xe3,0xdf,0xaf,0x39,0xc7,0xe3,
+ 0x5e,0xcd,0xe2,0x6d,0x0b,0x4d,0xbd,0xfd,0x92,0xfc,0x2f,0xaf,0x43,0xa7,0x45,0x16,
+ 0xba,0x35,0x93,0x66,0xf7,0xaa,0x3f,0x7a,0xd1,0x31,0xb9,0x6d,0xa4,0xfa,0x7c,0x8a,
+ 0x7d,0x38,0xfa,0xd4,0x57,0xa9,0x38,0x72,0x79,0xbb,0x1c,0xd0,0x85,0xef,0xe8,0x7a,
+ 0x1e,0xb1,0xff,0x00,0x04,0xf7,0xf8,0xa7,0x61,0xe1,0x69,0xb5,0x48,0xbf,0xb0,0xaf,
+ 0x6d,0xc5,0xb9,0xbb,0x29,0x6d,0x7c,0x77,0xec,0xd9,0xbb,0xf8,0xe3,0x5e,0x71,0x5e,
+ 0x21,0xad,0x7c,0x18,0xf8,0x8f,0xf0,0x1f,0x5e,0x8e,0xfb,0x51,0xd2,0x26,0xd3,0x7c,
+ 0xd8,0xcc,0x1e,0x64,0x17,0x31,0x4d,0x95,0x96,0x39,0x14,0xae,0x50,0xb6,0x32,0x9b,
+ 0xfb,0x67,0xbf,0x1c,0x57,0xed,0x0d,0xc3,0x47,0x17,0xc3,0x87,0x49,0x43,0x34,0x47,
+ 0x4c,0xd9,0x23,0x2b,0x01,0xb5,0x7c,0xae,0x49,0x39,0x18,0xc7,0xb5,0x7e,0x76,0x7e,
+ 0xd0,0xa9,0x1c,0xbe,0x28,0x11,0xc7,0xa8,0xcf,0x76,0x92,0x5b,0xcd,0x2a,0x2a,0xb4,
+ 0x64,0xae,0xd2,0x51,0x79,0x00,0x64,0x60,0x9e,0x4e,0x4f,0xbd,0x62,0xaa,0x49,0x34,
+ 0x92,0x56,0x6b,0x53,0x68,0xfe,0xf5,0x7b,0xcf,0x6d,0x8f,0x90,0x6f,0x62,0x63,0x73,
+ 0x6e,0x23,0xb3,0xfb,0x3a,0x7d,0x99,0x06,0xe8,0xd8,0xb8,0x72,0xa4,0x1d,0xc4,0x9f,
+ 0x72,0x39,0xf7,0xf7,0xac,0xdf,0x8a,0x36,0xc1,0x7c,0x4d,0x06,0x1b,0x02,0x4b,0x58,
+ 0x24,0x07,0xdc,0xc1,0x11,0x3f,0xae,0x6b,0x4f,0x4a,0x9c,0xdd,0x3b,0x70,0x41,0x30,
+ 0xc8,0x36,0x93,0x91,0xc2,0xc4,0x47,0xf2,0xcd,0x2f,0xc4,0x7d,0x03,0x55,0xd5,0x2f,
+ 0x34,0xeb,0xbd,0x3f,0x4d,0xba,0xbf,0x8e,0x1b,0x18,0xbc,0xe7,0xb6,0x85,0x9c,0x46,
+ 0x30,0x50,0x16,0x20,0x71,0xfe,0xac,0xf5,0xf4,0xaf,0x52,0x84,0xad,0x2d,0x4c,0x2a,
+ 0x43,0x5f,0x74,0xb1,0xf0,0x0e,0x31,0x37,0x8d,0xf4,0xeb,0x66,0x3e,0x61,0xba,0xb9,
+ 0x8e,0x0c,0xb1,0xec,0x58,0x76,0xfa,0x8a,0xfd,0xb9,0x7d,0x33,0x59,0xd1,0xf4,0xfd,
+ 0x2a,0x1d,0x22,0x6b,0x3b,0x68,0x96,0x01,0x1c,0xdf,0x6b,0x46,0x65,0x0e,0x14,0x05,
+ 0xc0,0x5c,0x71,0xd7,0x3c,0xf5,0xc5,0x7e,0x29,0xfe,0xcd,0x7a,0x25,0xee,0xb1,0xf1,
+ 0x9b,0xc1,0xfa,0x7c,0x36,0xd2,0x19,0x64,0xd5,0xad,0x77,0xae,0x0f,0xca,0x9e,0x62,
+ 0xee,0x63,0xe8,0x02,0xe4,0xd7,0xeb,0x1f,0xed,0x85,0xe2,0x5d,0x4f,0x47,0xf8,0x53,
+ 0x14,0x3a,0x64,0x8f,0x14,0x7a,0x85,0xe2,0x5a,0xdc,0xcb,0x11,0xc3,0x08,0xf6,0x33,
+ 0x6d,0xc8,0xe9,0x92,0xa0,0x7e,0x9d,0xeb,0x58,0x61,0x5e,0x37,0x17,0x4f,0x0f,0x17,
+ 0x6e,0x6d,0x2e,0x73,0x57,0xc4,0x7d,0x57,0x0f,0x2a,0xd2,0x57,0x51,0xd4,0xd9,0x1a,
+ 0x28,0xbe,0xbb,0x9e,0x58,0xf4,0xdf,0x0d,0xeb,0x37,0x70,0xca,0xf2,0xb2,0x69,0xb7,
+ 0xa6,0x39,0x03,0x33,0xee,0xf9,0xb1,0xd3,0x24,0x2e,0x73,0xe8,0x7d,0x6b,0xb1,0xf1,
+ 0x16,0xb9,0x75,0x6b,0xf0,0xe7,0x5f,0xd4,0xb5,0x2b,0x11,0xa7,0x4d,0x6f,0x67,0x31,
+ 0x08,0x24,0x0e,0x1b,0x11,0xf0,0xc0,0x8e,0x99,0x27,0xa5,0x7c,0x73,0xaf,0xd8,0xda,
+ 0xfc,0x35,0xb3,0xf0,0x0d,0xdf,0x87,0xa7,0xba,0x8f,0xc5,0x90,0x48,0x60,0xb9,0x01,
+ 0x15,0x7c,0xe7,0x24,0x48,0x52,0x40,0xbf,0xc4,0x04,0xa8,0xa5,0x49,0x63,0x87,0x00,
+ 0xfd,0xda,0xfa,0x33,0xf6,0xa1,0xf1,0x34,0x9e,0x1a,0xf8,0x0d,0xe2,0x87,0x20,0x89,
+ 0xa7,0x81,0x60,0x8c,0x0f,0xef,0x3b,0x01,0x8a,0xbc,0xcb,0x2e,0x86,0x0b,0xd9,0xd4,
+ 0x84,0xf9,0xa3,0x3b,0xda,0xea,0xcf,0xdd,0x76,0x7a,0x6b,0xa3,0xdd,0x19,0x60,0xb1,
+ 0x72,0xc5,0x39,0x42,0x71,0xb4,0xa3,0x6d,0x9d,0xd6,0xaa,0xff,0x00,0x7a,0xea,0x7c,
+ 0x0b,0xfb,0x70,0x69,0x52,0xd8,0x6a,0xbf,0x0c,0xf4,0x92,0xa8,0x1e,0xd7,0xc2,0x76,
+ 0xf2,0xc8,0xa8,0x30,0x04,0x92,0xcb,0x2b,0xb7,0x1e,0xb9,0xaf,0xb6,0x7f,0x62,0x6d,
+ 0x29,0x63,0xfd,0x98,0x34,0xcb,0x56,0x25,0x49,0x86,0x4c,0xf1,0x82,0xa5,0x87,0x98,
+ 0x0f,0xfe,0x3f,0x9a,0xd7,0xbc,0xf8,0x05,0xf0,0xef,0xc4,0x71,0x45,0x73,0xaa,0xe9,
+ 0xf7,0xda,0xc4,0x90,0xc2,0x91,0x79,0xd7,0x5a,0x48,0x92,0x40,0x01,0x1b,0x42,0x9f,
+ 0xb3,0xee,0xc7,0x5e,0x9c,0x0c,0xf6,0xae,0xef,0xc3,0xb6,0xba,0x17,0x80,0xfc,0x23,
+ 0x73,0xa4,0xe8,0x3a,0x7e,0xa5,0x0d,0xac,0x51,0x33,0x45,0x6e,0xf6,0x52,0xc6,0x33,
+ 0xb0,0x28,0x55,0xdc,0xaa,0x3a,0x01,0xc0,0xf4,0x35,0xe5,0x4f,0x11,0x09,0xc1,0x2b,
+ 0xec,0x77,0x28,0xb4,0xcf,0x10,0xf8,0xa7,0xa9,0xbc,0xd6,0x7a,0x36,0xe8,0xa4,0x7b,
+ 0xab,0x15,0x71,0x7e,0x90,0x46,0xcc,0xdb,0x44,0x84,0x1c,0x05,0xc9,0xe8,0x41,0xfc,
+ 0xeb,0x87,0xd2,0xf5,0x85,0xd5,0xad,0x92,0xe6,0xdc,0xa9,0x82,0x42,0x59,0x0b,0x8f,
+ 0xe1,0xed,0xd7,0xa7,0x15,0xdd,0xfc,0x5e,0xd6,0x06,0x85,0xe2,0x88,0x2e,0xe1,0xd3,
+ 0x75,0x25,0x85,0x11,0xd2,0xe2,0x58,0xed,0x1f,0xcb,0x94,0xf9,0xae,0x4e,0x1b,0x18,
+ 0x24,0x0c,0x7b,0x71,0x5e,0x43,0x67,0xe2,0x6d,0x2a,0xda,0xd9,0x14,0x25,0xc4,0x11,
+ 0xaa,0xff,0x00,0xcb,0x38,0x25,0x0a,0x47,0xa9,0xc8,0x3f,0xa7,0x15,0xf3,0xaa,0xfb,
+ 0x74,0x3d,0x55,0x6e,0x44,0xd1,0xd5,0x3c,0x16,0x96,0xf1,0x5f,0x5d,0x3d,0xa5,0xbd,
+ 0xc3,0x79,0x88,0xb9,0x68,0x81,0xfe,0x1f,0xe5,0xcd,0x40,0xa9,0x6d,0x2a,0x87,0x6b,
+ 0x0b,0x40,0x5b,0x9c,0x34,0x4b,0x91,0x54,0x2c,0x3c,0x6d,0xa4,0x4d,0x05,0xd0,0x17,
+ 0x43,0xe7,0x95,0x4a,0x2b,0x23,0x63,0x01,0x47,0x5e,0x38,0xfa,0x1a,0xb4,0x9e,0x27,
+ 0xd1,0xc8,0xff,0x00,0x8f,0xa8,0x4f,0xb9,0xeb,0xfc,0xa9,0x79,0x14,0x95,0xcf,0x84,
+ 0xbf,0x6d,0x5d,0x4f,0xed,0xdf,0x15,0xa7,0x42,0x09,0x36,0xf1,0xac,0x2e,0xe4,0xfd,
+ 0xe2,0xb8,0x04,0xfb,0x0c,0xf4,0x1e,0x98,0xa9,0xfe,0x22,0xe8,0x5e,0x12,0xb9,0xb1,
+ 0xf0,0xe5,0xc5,0xbe,0xbb,0x67,0x6a,0xa3,0x45,0xb1,0x13,0xc1,0x05,0xc2,0x39,0x49,
+ 0x45,0xbc,0x7e,0x61,0x3f,0x31,0xc1,0x2c,0xc4,0x11,0x8e,0x08,0x35,0x95,0xfb,0x65,
+ 0xf8,0x6e,0xc7,0xc2,0x3f,0x15,0x1f,0x47,0xd3,0xfc,0xc3,0x69,0x05,0xb4,0x5b,0x0c,
+ 0x8d,0xb9,0x89,0x60,0x18,0xe4,0xfd,0x4d,0x75,0x5a,0x8f,0xc3,0xaf,0x0c,0xbe,0x93,
+ 0xa4,0x79,0x5a,0x2a,0xda,0x4a,0xd6,0x50,0x99,0x16,0x55,0x2c,0xec,0xcd,0x1a,0x96,
+ 0x27,0x24,0xf0,0x5b,0x2c,0x0f,0xbd,0x7d,0x5d,0x49,0x46,0x2a,0x0d,0x37,0x6f,0xf8,
+ 0x63,0xc9,0xa5,0x4e,0x75,0x64,0xe1,0x15,0xab,0x7f,0xe6,0x41,0xf0,0x97,0xe2,0x3f,
+ 0x84,0xbc,0x31,0xf1,0x57,0xc2,0x17,0x7a,0x96,0xb7,0x1c,0x5a,0x4e,0x9f,0x05,0xe2,
+ 0x4b,0x3e,0xc9,0x24,0x01,0x9a,0xd8,0xa4,0x61,0x95,0x01,0xdd,0x96,0x23,0x23,0x04,
+ 0x1e,0x73,0xc5,0x7d,0x4b,0xa8,0xfe,0xdd,0xdf,0x0d,0x74,0x6b,0x5b,0x45,0x3a,0xee,
+ 0xa1,0xab,0x49,0x04,0x5b,0x24,0x96,0xd3,0x4d,0x91,0x04,0x8f,0x81,0x92,0x15,0x82,
+ 0xe3,0x24,0x66,0xbc,0xd3,0xf6,0x5c,0xf8,0x61,0xe1,0xe7,0xf1,0xd5,0xd4,0xd3,0x68,
+ 0xf6,0x13,0xc7,0x15,0x8b,0x90,0x2e,0xac,0x62,0x91,0x32,0x5a,0x3c,0x10,0x18,0x10,
+ 0x08,0xce,0x33,0xf5,0xaf,0xae,0x6c,0xf4,0x8d,0x13,0x49,0x76,0xb7,0x86,0xc7,0x4c,
+ 0xb4,0xd8,0x43,0x81,0x04,0x31,0x21,0x50,0x73,0xd8,0x01,0x8e,0xd5,0xe1,0x62,0x6a,
+ 0x51,0x73,0xb3,0x4d,0xdb,0xcf,0xfe,0x01,0xe8,0x2a,0x15,0xa9,0x7b,0xb2,0xb2,0x7f,
+ 0x79,0xf9,0x33,0xf1,0xab,0xc5,0xf6,0xff,0x00,0x11,0xfe,0x25,0x6b,0x9e,0x24,0xd3,
+ 0x16,0x58,0x74,0xcb,0xeb,0xa3,0x2a,0x0b,0x94,0x11,0xba,0x8c,0x9d,0xb9,0x00,0x9e,
+ 0x71,0x9e,0x01,0xaf,0x59,0xbd,0xb5,0xf1,0x66,0xa5,0xe1,0xfb,0x6b,0x2f,0x0b,0xf8,
+ 0x6e,0xff,0x00,0x58,0x06,0xdd,0x5e,0xea,0xea,0xda,0x2c,0xc6,0x87,0xa7,0x27,0x04,
+ 0x03,0x82,0x3d,0xf1,0x9e,0xd4,0x7e,0xdc,0x1a,0x9c,0x7a,0x97,0xc6,0x8b,0x1b,0x57,
+ 0x58,0x96,0xde,0xda,0xca,0x28,0xe2,0x10,0xa6,0x37,0x96,0x95,0x8e,0xe6,0xf5,0x3c,
+ 0x91,0x9f,0x4c,0x7a,0x57,0x5f,0xa1,0x7c,0x56,0xf1,0x47,0x84,0xac,0xa7,0xf0,0xf6,
+ 0x8f,0x05,0xcf,0xf6,0x44,0xd2,0x23,0xdc,0x0b,0x68,0x4b,0x17,0x26,0x30,0xa4,0x16,
+ 0x1e,0xca,0x38,0xf7,0xaf,0x69,0x3b,0x50,0x8b,0x8c,0x7b,0x1c,0x3f,0x6d,0xa6,0xcf,
+ 0x0d,0xf1,0x9e,0x91,0xaf,0xe9,0xa2,0xdc,0x6b,0x96,0xf7,0x5a,0x54,0xc6,0x64,0x6d,
+ 0x97,0x37,0x51,0xbe,0x00,0xc8,0x3f,0x74,0x0d,0xa3,0x27,0xa1,0xe6,0xb0,0xc5,0xe7,
+ 0x93,0x94,0x17,0x64,0x41,0x71,0xcf,0xee,0xa5,0xce,0x72,0x71,0x86,0x5e,0xc7,0x83,
+ 0xd7,0x07,0x1c,0xd7,0xd3,0x9f,0xb7,0xdd,0xf4,0x53,0x78,0xbb,0xc2,0x96,0x90,0xca,
+ 0x92,0x44,0xd6,0x38,0x3b,0x08,0x20,0x7c,0xef,0xc7,0x1e,0xc2,0xbe,0x46,0xd0,0x6d,
+ 0x64,0x8f,0x53,0x9d,0x6e,0x63,0xda,0xbb,0xf8,0x0c,0x3a,0x11,0xc6,0x31,0xf8,0x0a,
+ 0x8a,0x72,0xf6,0xb4,0x94,0xe5,0xa1,0x55,0x23,0xcb,0x27,0x18,0x97,0x34,0xd8,0x2e,
+ 0x6e,0xfc,0x45,0x70,0x6c,0xae,0x12,0x29,0x63,0x00,0x6e,0x95,0x58,0xf9,0x9c,0x7b,
+ 0x02,0x78,0xaa,0x9a,0xfa,0xde,0x41,0x78,0x9f,0x6d,0xbe,0x49,0x63,0x59,0x08,0x45,
+ 0x43,0x82,0xbc,0x1d,0xa7,0x27,0xa6,0x71,0x8c,0xe0,0x75,0xe6,0xb4,0xac,0xe4,0x9a,
+ 0xcb,0xc5,0x5a,0x7d,0xe3,0x47,0xe6,0x42,0x66,0x40,0xc8,0xc0,0x6d,0xe4,0x80,0x40,
+ 0x19,0xa9,0x3c,0x4d,0xa5,0x2e,0xad,0xe2,0x15,0xb6,0x10,0x8b,0x64,0x92,0xe8,0x44,
+ 0x3c,0xcf,0xdd,0x20,0x63,0xd0,0x67,0xa7,0x42,0x0f,0x27,0x9a,0xae,0x6b,0x54,0x4b,
+ 0xa5,0x8c,0x94,0x2f,0x0b,0xf9,0x94,0x7c,0x34,0xa6,0xee,0x56,0x94,0xac,0xa2,0xe6,
+ 0x37,0x08,0xb1,0x04,0xcb,0xb3,0x0e,0x49,0x04,0x91,0x91,0x80,0x73,0x81,0xd7,0x15,
+ 0xb3,0x6d,0xaa,0x26,0xa3,0x68,0x2d,0xef,0x22,0xfb,0x53,0x2c,0x48,0x85,0xd1,0x01,
+ 0x78,0xc0,0x3d,0x4e,0xdc,0x64,0x63,0x03,0x2c,0x72,0x0d,0x4d,0x63,0xe1,0xdb,0xaf,
+ 0x07,0x78,0x98,0x45,0x77,0x67,0x73,0x14,0x72,0x0d,0x8a,0xee,0xc4,0xa3,0xe5,0x41,
+ 0xdc,0x4e,0x30,0xc0,0xe3,0xea,0x38,0xf4,0xac,0x9c,0x46,0xf6,0xf7,0x71,0x5a,0xbb,
+ 0xc4,0x0c,0x23,0x09,0x1c,0x5b,0xf7,0x00,0xc4,0xf5,0x1d,0x71,0xcf,0x24,0x76,0xa6,
+ 0xad,0x53,0x6d,0x89,0x77,0x85,0xae,0x66,0xf8,0x86,0xca,0xce,0x45,0xb7,0xb8,0x57,
+ 0x95,0x6e,0xce,0x7c,0xe4,0x57,0x12,0x24,0x43,0x8d,0x81,0x4e,0x49,0xcf,0x27,0x20,
+ 0xf4,0xe3,0x9e,0xa0,0x52,0x1a,0xd5,0xb4,0x8d,0x04,0x16,0xd1,0x8d,0xc3,0x9d,0xa5,
+ 0xb7,0x12,0xd8,0x3f,0x78,0x91,0x8c,0x64,0x7e,0xb5,0x72,0xeb,0xc2,0x77,0x5a,0x65,
+ 0x82,0xb9,0x49,0xbc,0xb9,0x4e,0x63,0x95,0xad,0x8b,0x09,0x06,0x33,0x80,0x4f,0xd3,
+ 0xad,0x6a,0x78,0x37,0x42,0x59,0xf5,0x6b,0x7d,0x3a,0xfa,0xd3,0xec,0xce,0x57,0x7c,
+ 0x86,0x15,0x32,0xc8,0x10,0x8c,0xe7,0x6a,0xa9,0x39,0xe3,0x1e,0xd8,0xfa,0xe6,0xb9,
+ 0xe2,0xa1,0xcd,0x7b,0xd8,0x95,0x09,0x4a,0x5c,0xb6,0xdc,0xe7,0x6e,0xee,0xef,0xad,
+ 0xd5,0x37,0x2c,0x0e,0x58,0x6e,0x02,0x1b,0x60,0x01,0x38,0xe5,0x09,0x18,0xfb,0xb8,
+ 0xc7,0x1f,0x9d,0x6b,0xf8,0x65,0x6d,0xde,0xdc,0x4b,0xaa,0x58,0x4d,0x70,0xfc,0x3a,
+ 0xc7,0x0a,0x85,0x56,0x5e,0x73,0x9c,0x7c,0xc7,0xb0,0xc7,0xd7,0xd2,0xbd,0x1b,0x4c,
+ 0xf8,0x41,0x68,0x2f,0xe2,0x8c,0x5f,0x3e,0xbf,0x1b,0xb6,0xd4,0xb6,0xb6,0x96,0x0b,
+ 0x69,0xd3,0x39,0xe5,0xfc,0xdc,0xb0,0x51,0xd3,0x80,0x4f,0xf2,0xaf,0x40,0xbe,0xfd,
+ 0x9f,0xe7,0x8f,0x4d,0x49,0x34,0xb8,0x63,0xb2,0xbd,0xb7,0x90,0xce,0x82,0x4b,0x83,
+ 0x2f,0x98,0xdb,0x0f,0x00,0xaa,0x28,0x19,0x38,0x1c,0xf4,0x07,0x20,0xe6,0xb2,0x9e,
+ 0x22,0x9d,0xbd,0x4d,0x55,0x19,0xde,0xcd,0x1e,0x02,0xf6,0x97,0x5a,0x4a,0x5d,0xde,
+ 0xc6,0xf1,0x47,0x65,0x26,0x11,0x6d,0xae,0x1a,0x44,0x90,0x72,0x4a,0xa2,0x02,0x30,
+ 0x71,0x82,0x3e,0x61,0x8c,0xf4,0xf5,0xab,0x36,0x1a,0x74,0xd1,0xda,0xda,0x5c,0x4d,
+ 0x6c,0xaf,0x6c,0xe4,0x30,0x97,0x95,0xc1,0x24,0xf0,0x1b,0x38,0x3f,0xe4,0x57,0xac,
+ 0xc9,0x3f,0x87,0x34,0xdd,0x3b,0x4d,0xba,0x97,0x4e,0xd5,0x75,0x89,0x2e,0xbe,0x44,
+ 0x82,0x68,0x61,0x9a,0x34,0x93,0x76,0x0a,0x32,0x95,0xdc,0x36,0xb9,0xda,0x7a,0xf2,
+ 0x3d,0x45,0x72,0xf7,0xda,0x1e,0xa5,0x2f,0x8a,0x6e,0x91,0xb4,0xe7,0xd3,0x23,0x98,
+ 0x3b,0x43,0x69,0x30,0x26,0x20,0xd8,0xf9,0xfc,0xbc,0xe1,0x0f,0x52,0x78,0xe9,0xce,
+ 0x3d,0xa6,0x35,0xdb,0xdd,0x58,0xd3,0xd8,0xae,0x8e,0xe5,0x0d,0x6e,0xc2,0x7b,0x9b,
+ 0x5b,0x21,0x6f,0xb2,0x05,0x58,0xc0,0x2c,0x8d,0xbb,0x20,0x96,0xcf,0x5e,0xc3,0x3d,
+ 0x73,0x5b,0x3f,0x0e,0xf4,0x4b,0xff,0x00,0x09,0xeb,0xf6,0xda,0xd4,0x52,0x5a,0xdc,
+ 0xc5,0xe5,0x32,0x49,0x6b,0xf6,0x80,0xad,0x22,0xb2,0xe3,0x04,0xf3,0x83,0x9c,0x1f,
+ 0xc2,0xb6,0xbc,0x67,0xe0,0x2b,0xcd,0x1f,0x45,0xf0,0x9d,0xde,0x9e,0x5b,0x50,0x13,
+ 0x69,0x66,0xea,0xf5,0x10,0xf9,0x89,0x0b,0x89,0xa4,0x5d,0xa7,0x63,0x65,0x4e,0xd0,
+ 0xa7,0x1c,0x75,0xeb,0xcd,0x72,0x07,0xc7,0x96,0xb6,0x51,0xbc,0x70,0xda,0x69,0x90,
+ 0xca,0x17,0x28,0xdf,0x65,0x6d,0xe5,0xbd,0x0b,0x79,0x99,0xfe,0x74,0x3e,0x7a,0x91,
+ 0x6a,0x9b,0xba,0x63,0x85,0xa9,0xca,0xf5,0x11,0xd5,0x78,0xad,0x1a,0x4d,0x31,0xaf,
+ 0x01,0x5b,0x3b,0xd8,0x19,0x09,0x85,0x65,0x0c,0x26,0x45,0x61,0x8c,0xf4,0xce,0x0e,
+ 0x3f,0x23,0xeb,0x5b,0x3e,0x28,0xbf,0x8b,0x50,0x8b,0x4d,0xb3,0x89,0x43,0x1d,0x42,
+ 0x64,0x52,0xa1,0x48,0xc4,0x63,0xe6,0x62,0x47,0xe0,0x3f,0x3a,0xe2,0xbc,0x4b,0x0b,
+ 0x69,0xba,0x87,0x87,0x6f,0x75,0x66,0x8e,0x7b,0x49,0x6d,0x85,0xc6,0xf8,0xf7,0x6d,
+ 0x7c,0xfc,0xc0,0x7c,0xc4,0xe7,0xaa,0xf5,0xae,0x8b,0x49,0x80,0xdc,0x89,0x75,0x6b,
+ 0xe9,0xcb,0xdc,0x94,0x2a,0x21,0x43,0x81,0x0a,0x1e,0x76,0xfd,0x71,0x8c,0xd7,0x9f,
+ 0x3a,0x7e,0xca,0x30,0x6d,0xed,0x7f,0xf8,0x6f,0x91,0xec,0xd3,0xa9,0xed,0x9c,0x94,
+ 0x56,0xf6,0xbf,0xf9,0xfc,0xf6,0x33,0x7c,0x73,0xa3,0x45,0x7b,0x21,0xd5,0xe5,0xba,
+ 0xb6,0x8e,0xe6,0x65,0x40,0x6d,0xa3,0x56,0x50,0x14,0x28,0x03,0x03,0x27,0x9c,0x01,
+ 0xc5,0x53,0xbe,0xf8,0x8b,0xa8,0x0f,0x87,0xb6,0x5e,0x0b,0x68,0x63,0x3a,0x7c,0x17,
+ 0xe2,0xff,0x00,0xcf,0x12,0xb9,0x93,0x70,0x57,0x01,0x0a,0x6e,0xda,0x07,0xef,0x18,
+ 0xe7,0x68,0x27,0xd6,0xb9,0xbd,0x43,0xc4,0xeb,0xaa,0xdc,0x85,0x19,0x8e,0x48,0xf7,
+ 0xb6,0x41,0xc2,0xe0,0x02,0x40,0x01,0x40,0xc0,0xc0,0xc5,0x75,0x37,0x71,0x78,0x5d,
+ 0xfe,0x10,0x58,0x5f,0x46,0x90,0x27,0x8c,0x65,0xd7,0x3c,0x96,0xfd,0xf9,0xf3,0x4d,
+ 0x98,0x83,0x76,0x7c,0xbc,0xfd,0xdd,0xf8,0xf9,0xb1,0xd4,0x91,0x9a,0xf4,0x9d,0x37,
+ 0x18,0x45,0x54,0xd7,0x53,0xc7,0x9c,0xd4,0xe6,0xdc,0x15,0x8f,0xd9,0xdb,0xcf,0x0b,
+ 0x0b,0x8f,0x00,0x3c,0x76,0xf2,0xdf,0x3c,0xb2,0xe9,0xa5,0x4a,0xcd,0x79,0x71,0x28,
+ 0x39,0x8f,0x18,0x09,0xbf,0x04,0xf6,0xe8,0x7e,0x87,0xa5,0x7c,0x11,0xe2,0xcf,0x87,
+ 0x3e,0x21,0xd2,0xfc,0x75,0x71,0xfd,0xab,0x60,0xd0,0xa1,0xb6,0x9a,0x68,0xe4,0x75,
+ 0xda,0x04,0x65,0xdc,0xaf,0x50,0x31,0xd7,0xa6,0x2b,0xef,0x7d,0x53,0xc6,0xb6,0x3a,
+ 0x0f,0xc3,0xc9,0xaf,0x5d,0xbc,0xff,0x00,0xb2,0xe9,0x8d,0x71,0xe5,0xed,0x6f,0x9c,
+ 0x2a,0x13,0x8e,0x14,0xf0,0x71,0xd7,0x9a,0xfc,0xdf,0xfd,0xb2,0xfe,0x2a,0x0f,0x89,
+ 0x52,0x59,0xea,0x1a,0x74,0x17,0x3a,0x62,0xe9,0x96,0x88,0xb2,0x79,0x73,0x3e,0x1d,
+ 0x64,0x7f,0x42,0x17,0x8e,0x0f,0x5a,0xf1,0x70,0xd3,0x94,0x9f,0x27,0x7b,0x1b,0x52,
+ 0xd1,0x36,0xfa,0x1f,0x2c,0xe8,0x57,0x6f,0x26,0xa6,0xb1,0xab,0x60,0xf9,0x52,0x36,
+ 0xc1,0xc7,0xfc,0xb1,0xc9,0x3f,0x8e,0x2b,0xea,0x6f,0x83,0xdf,0x14,0xb4,0x4f,0x85,
+ 0xb0,0x8b,0xbd,0x4e,0x19,0xaf,0x24,0xbf,0xd3,0x22,0x8a,0xc6,0xca,0xda,0xdd,0xa6,
+ 0x9e,0xf1,0x85,0xd5,0xc7,0xc8,0x8a,0xbd,0x48,0xe7,0x24,0x90,0x00,0x23,0xd7,0x07,
+ 0xe5,0x4d,0x01,0x55,0x75,0xab,0x7f,0x98,0x13,0x96,0x8b,0x9f,0xfa,0xe5,0x82,0x2b,
+ 0xd0,0xbc,0x69,0x73,0x69,0x0f,0x85,0x7c,0x19,0x35,0xf9,0x74,0x8a,0x2b,0x59,0xa3,
+ 0x2f,0x0a,0x86,0x20,0xee,0x0f,0xc0,0x2c,0xbf,0xde,0xf5,0xaf,0x7a,0x74,0xd4,0xfd,
+ 0xc7,0xb3,0x39,0xe3,0x51,0xc5,0xa6,0xb7,0x3e,0xb1,0xf0,0x5a,0x6a,0xfe,0x28,0xf8,
+ 0x93,0x07,0xc4,0x8d,0x7a,0xde,0xcb,0xc2,0x86,0xc6,0xd4,0x5a,0x69,0x7a,0x55,0xcd,
+ 0xc7,0x9b,0x3e,0x0c,0x85,0xda,0x69,0x8a,0xfd,0xd2,0x73,0xb4,0x2f,0x60,0x7b,0x60,
+ 0x67,0xd0,0xfc,0x69,0xfb,0x61,0x78,0x66,0x2b,0xa9,0xfc,0x1d,0xaf,0xe8,0x13,0x78,
+ 0xa6,0x27,0x00,0x4e,0x74,0x57,0x32,0x88,0xd8,0x10,0x7b,0x85,0x65,0x75,0xeb,0xf2,
+ 0xe7,0x04,0x75,0xcd,0x7e,0x75,0x69,0x7e,0x22,0xd2,0x6f,0xfc,0x45,0xa9,0x5f,0xe9,
+ 0x16,0x2d,0x6b,0x6d,0x67,0x6c,0x27,0x82,0x09,0x65,0x12,0xb2,0xb8,0xd9,0x18,0x62,
+ 0x73,0xfd,0xf6,0x0f,0x8e,0x83,0xa5,0x7d,0x53,0xf0,0x6f,0x46,0xd3,0xbc,0x0f,0xe0,
+ 0xad,0x3e,0xfa,0xe1,0x63,0x17,0xba,0x9c,0x69,0x3d,0xc5,0xcb,0x02,0xce,0xc5,0xc6,
+ 0xe0,0xb9,0xe4,0xe0,0x02,0x38,0xf5,0xc9,0xa9,0xa5,0x4e,0x71,0xa8,0x9a,0x96,0xdb,
+ 0x74,0xb1,0xe8,0xca,0x34,0xbe,0xaf,0x2a,0xb5,0x63,0x7b,0xbb,0x5a,0xfb,0xbe,0xb7,
+ 0xf2,0x3d,0x63,0xc1,0xdf,0x1a,0xbe,0x05,0xf8,0x67,0x57,0xb6,0xd5,0xaf,0x25,0xf1,
+ 0x35,0xb5,0xf4,0x37,0x4f,0x75,0x1a,0xf8,0x8e,0xde,0x47,0x8a,0x39,0x9f,0x01,0xdd,
+ 0x48,0x18,0x2f,0xf2,0x8e,0x58,0x93,0x95,0x15,0xe8,0xbf,0x19,0x3e,0x27,0x78,0x57,
+ 0xe3,0x4f,0x85,0xbc,0x2b,0x63,0xe1,0x7d,0x5e,0x1d,0x62,0xda,0xf7,0x5e,0xb6,0x12,
+ 0xb4,0x00,0xf0,0x23,0x26,0x42,0x08,0x23,0x3f,0xc2,0x33,0xd8,0x64,0x67,0x19,0x15,
+ 0xe6,0x13,0xf8,0x43,0x48,0xf1,0x36,0x9e,0xdb,0xed,0x2d,0xe6,0x49,0x57,0xe6,0x49,
+ 0x50,0x32,0xb0,0x3f,0x5e,0x95,0xe7,0x9f,0x03,0xb4,0x4d,0x5f,0xc2,0x5f,0x1b,0xc7,
+ 0x81,0xb4,0xdb,0xb9,0x21,0xd2,0x06,0xa7,0x6f,0xa9,0x4b,0x66,0xcb,0xbf,0xcc,0x8d,
+ 0x0a,0xb6,0xd5,0xe0,0xe1,0xb0,0xcb,0xc8,0xc6,0x76,0x0c,0xd3,0xcc,0x27,0x5a,0xbf,
+ 0xbd,0x39,0xb9,0x3b,0x59,0x5c,0xe4,0xc2,0x61,0xa9,0x2a,0x53,0x74,0xa3,0xcb,0xcb,
+ 0xad,0xbb,0xab,0xdb,0xf0,0x3f,0x4c,0x6d,0xc3,0xa4,0x10,0x05,0x38,0x51,0x1a,0x8d,
+ 0xa3,0xe9,0x51,0xeb,0xa4,0xb6,0x85,0xa8,0x67,0x9f,0xf4,0x69,0x3a,0xff,0x00,0xba,
+ 0x6a,0xa3,0x6b,0xaf,0x04,0x9f,0x67,0x1a,0x56,0xa1,0x2b,0xa2,0xe3,0x74,0x71,0xae,
+ 0x0f,0x6c,0x83,0xbb,0xa5,0x53,0xd6,0x75,0xab,0xa9,0xf4,0xbb,0xc8,0x93,0x44,0xd4,
+ 0x14,0xc9,0x0b,0x20,0x69,0x3c,0xa5,0x51,0x90,0x46,0x49,0xf3,0x3a,0x73,0x5e,0x6c,
+ 0x5b,0x82,0x7a,0xbf,0xc4,0xe4,0x49,0xb6,0x99,0xe3,0x5f,0x15,0x75,0x9b,0x8b,0x6f,
+ 0x10,0x59,0xc5,0x64,0x76,0x3b,0x23,0x33,0xb3,0x90,0x17,0x1b,0xd9,0x80,0xc9,0xc6,
+ 0x0f,0x5e,0x41,0xf4,0xaf,0x36,0x92,0xfb,0xfb,0x2b,0x56,0xb9,0xc0,0x5b,0xbb,0x42,
+ 0x00,0x76,0x31,0xe7,0x00,0xe3,0xe6,0x00,0xf7,0xce,0x7e,0x9d,0x2b,0xab,0xf8,0xb9,
+ 0x7f,0x79,0x3e,0xbd,0x6e,0xb1,0x68,0x3a,0xc4,0xd6,0xeb,0x0a,0x93,0x34,0x16,0xac,
+ 0xe9,0x2e,0x00,0x3c,0x6d,0xce,0x46,0x73,0xd7,0x15,0xc1,0x47,0x3c,0x51,0xcc,0xfe,
+ 0x7e,0x97,0xaa,0xc0,0x1f,0xa2,0xb6,0x9e,0xe3,0x03,0x93,0xe9,0x5e,0x43,0xb2,0x6d,
+ 0x9e,0xc4,0x6f,0xca,0x91,0x43,0x5c,0xd3,0x35,0x1d,0x03,0xc6,0x1a,0x6d,0xca,0x4e,
+ 0xe7,0x4b,0xd5,0x6d,0x1a,0x55,0x41,0x8c,0x07,0x57,0xda,0x40,0x39,0x27,0x8e,0x3f,
+ 0x3a,0xd0,0x92,0xfc,0xdb,0x47,0x02,0x24,0x51,0xe0,0x46,0x3a,0xb1,0x15,0x9b,0xe2,
+ 0x8d,0x71,0x6d,0xee,0xfc,0x3b,0x6b,0x20,0xb8,0x30,0x43,0x05,0xc4,0xd0,0x34,0xb1,
+ 0x36,0xe2,0xaf,0x28,0x52,0xb8,0xc6,0x41,0x0d,0x1b,0x7e,0x75,0x89,0xa9,0x78,0xb2,
+ 0xc9,0x2e,0x7c,0xa2,0xb7,0x65,0xa3,0x50,0x8d,0xe5,0xc2,0xd8,0xc8,0xfc,0xab,0xab,
+ 0x92,0x75,0x39,0x54,0x55,0xdd,0x91,0x8f,0x32,0x8d,0xdb,0xee,0x7c,0x4d,0xfb,0x62,
+ 0x5c,0x19,0xfe,0x2f,0xdd,0x87,0x75,0x77,0x10,0xc1,0xb8,0xa7,0xdd,0xdd,0xb0,0x67,
+ 0x1f,0x8d,0x7a,0xaf,0xc4,0x16,0x66,0x5d,0x35,0xc3,0x60,0xc7,0x69,0x0c,0x61,0x81,
+ 0xe4,0xed,0x40,0x3f,0x4c,0x57,0x8b,0xfe,0xd4,0x77,0x89,0x77,0xf1,0x5e,0xff,0x00,
+ 0x6e,0xd2,0x12,0x28,0x95,0xb1,0xd0,0x30,0x8d,0x4f,0xf5,0x15,0xec,0xdf,0x11,0xce,
+ 0x26,0xb6,0x00,0xaf,0x96,0x61,0x8c,0x26,0x3a,0x05,0xc1,0x02,0xbd,0xfa,0xe9,0x35,
+ 0x0b,0x7f,0x5b,0x1e,0x4a,0x93,0x8c,0x5b,0xf3,0x3d,0x8b,0xe0,0xea,0xe9,0x5f,0x0c,
+ 0xaf,0xac,0xfc,0xb8,0x6e,0xbc,0x49,0xac,0x6a,0x6e,0xd6,0xef,0x24,0x30,0xa0,0x8e,
+ 0xcf,0x60,0x8a,0x46,0xc8,0x7c,0x96,0xc6,0xec,0x96,0x07,0x90,0x2b,0xd6,0xf5,0xef,
+ 0x8b,0x5a,0x2d,0xb7,0x86,0x6f,0x42,0xe9,0x2d,0x27,0x8a,0x61,0x80,0x5d,0x49,0x75,
+ 0xf6,0x54,0x36,0xdb,0x7c,0xc0,0xbf,0x31,0xf7,0x5e,0x06,0x7b,0xd7,0x95,0x78,0x16,
+ 0x5f,0x2f,0xc7,0xf6,0x68,0x13,0x28,0x2f,0x35,0x4e,0x71,0x9c,0x62,0x18,0xd4,0x7f,
+ 0x2a,0xda,0xd6,0xe1,0xc7,0x82,0x7c,0x6e,0xca,0x30,0xc6,0xca,0xc5,0x07,0xb8,0x32,
+ 0x33,0x11,0xfa,0x57,0x99,0x1a,0x30,0xa9,0x37,0x29,0xae,0x87,0x52,0xab,0x28,0xc6,
+ 0xd1,0x67,0xc7,0x3f,0xb4,0xc5,0xf9,0xf1,0x37,0xed,0x13,0x6c,0xce,0x77,0x79,0xf1,
+ 0x44,0x42,0xe7,0x80,0x0c,0x8e,0xcb,0xf9,0x74,0xaf,0x58,0xf8,0x61,0x79,0x6d,0x27,
+ 0xc5,0x5b,0x0d,0x3f,0x59,0xd5,0x75,0x0f,0xec,0x10,0xc5,0xaf,0xb4,0xeb,0x1b,0xf9,
+ 0x21,0x2c,0x12,0x22,0xe7,0x0a,0x8c,0x39,0xf9,0x46,0x7d,0x47,0xb5,0x79,0x47,0xc6,
+ 0xbb,0x38,0x6d,0xbf,0x68,0x6d,0x28,0x84,0xf2,0x2d,0xa2,0x58,0x61,0x58,0x63,0x5c,
+ 0x22,0x80,0xec,0x88,0x00,0x1d,0x80,0xe3,0x03,0xa5,0x74,0x1f,0x08,0x77,0x5f,0x7e,
+ 0xd1,0x17,0x32,0xb0,0x38,0x5b,0x6b,0xf5,0x3e,0xff,0x00,0xe8,0x92,0x01,0x5e,0xc5,
+ 0xaf,0x4a,0x29,0x76,0x39,0x94,0x97,0x33,0xb9,0xdd,0xff,0x00,0xc1,0x40,0x7c,0x63,
+ 0xa4,0xf8,0xb7,0xc5,0xde,0x0c,0xd5,0x34,0x98,0x2e,0x2d,0xec,0x64,0xd3,0x55,0xa2,
+ 0x5b,0x85,0xda,0xe7,0x13,0x4c,0x09,0xc7,0xbe,0x38,0xfc,0x2b,0xe6,0x3d,0x4e,0xf4,
+ 0x1d,0x54,0xca,0x57,0x72,0x4b,0x87,0x5d,0xc3,0x1c,0xe0,0x67,0x35,0xf4,0x8f,0xed,
+ 0xa5,0xa3,0xc9,0xe2,0x2f,0x1d,0xfc,0x31,0xd0,0x2d,0xe7,0x16,0xb3,0x4f,0xa3,0xd8,
+ 0x5b,0x89,0x36,0xee,0xdb,0xbb,0xcd,0xe7,0x1f,0x52,0x2b,0xe6,0xaf,0x8a,0x1e,0x0b,
+ 0xd4,0xbc,0x03,0xaa,0x59,0xd8,0x6a,0xf2,0x41,0x75,0x2c,0x96,0xe5,0x91,0xe0,0x72,
+ 0xca,0xc4,0x31,0x19,0xe4,0x02,0x0f,0x18,0xe9,0x58,0x42,0x30,0x4e,0x34,0xba,0xd9,
+ 0x9d,0x0a,0x52,0xb3,0x9f,0x42,0xe4,0xd7,0x5b,0xb5,0x4b,0x78,0xa3,0xdb,0xe6,0x3c,
+ 0xaa,0x09,0xdb,0xc6,0xed,0xc3,0x9e,0x7d,0x38,0xe7,0xd8,0x54,0xda,0xce,0x8d,0x13,
+ 0xcb,0x75,0x7d,0xa9,0x5d,0x34,0xc4,0x06,0x9a,0x34,0x0a,0x7e,0x70,0x83,0xa8,0x18,
+ 0xc6,0x49,0xc5,0x73,0x3a,0xd5,0xb5,0x84,0x57,0xf6,0x73,0xbd,0x9d,0xc4,0x93,0xdc,
+ 0x5b,0xab,0x96,0xb7,0x93,0x80,0x41,0xc7,0x46,0xef,0xc5,0x77,0x1a,0x76,0x89,0xa7,
+ 0xf8,0xe3,0x52,0x44,0xb8,0x7b,0xa8,0xae,0xa5,0xc4,0x3b,0xee,0x1c,0xe1,0x72,0x0f,
+ 0xcf,0x8e,0x98,0x19,0x27,0x8f,0xeb,0x44,0xa0,0xa9,0xda,0x57,0x2d,0x35,0x3b,0xc5,
+ 0x44,0x8e,0xc2,0xe2,0x5f,0x18,0xc1,0xa7,0x6a,0x11,0xd9,0x2d,0x8e,0x9e,0x8e,0x6d,
+ 0xc4,0xa6,0x33,0x21,0x77,0x1f,0x2f,0x5e,0x87,0x00,0xa9,0xed,0x9e,0x07,0x3d,0x6b,
+ 0x14,0xda,0xcf,0xa4,0x5d,0x45,0x05,0xed,0xba,0x24,0x6b,0xe5,0x3b,0xdb,0xdc,0x13,
+ 0x10,0x75,0xdd,0xc8,0x6c,0x1e,0x17,0xdf,0xb7,0xe1,0x5e,0x89,0xf0,0xbb,0xc2,0xb6,
+ 0x11,0x78,0x3f,0x5b,0x8a,0x5b,0x59,0x1b,0x51,0x85,0xda,0x7b,0x79,0x2e,0x93,0x2f,
+ 0xfe,0xaf,0x1f,0x2f,0xa6,0x18,0x0f,0xce,0xba,0x6f,0x1e,0x78,0x76,0x3f,0x15,0x5a,
+ 0xc3,0x78,0xd7,0xf6,0xda,0x4f,0xd9,0x60,0xc4,0x6d,0x7a,0x85,0x3c,0xc2,0x4e,0xe0,
+ 0x01,0x24,0x64,0x7e,0x1c,0x67,0xbe,0x78,0xc1,0x55,0x50,0xa8,0xe9,0xdb,0xdd,0x2a,
+ 0x54,0xb9,0xa0,0xaa,0x37,0xa9,0xd4,0x5a,0x68,0x9a,0x66,0xae,0xf6,0xf7,0x17,0xb6,
+ 0x51,0xcd,0xe7,0x40,0x20,0x65,0x90,0xef,0x0a,0x8c,0x30,0xc0,0x76,0xe8,0x7a,0x8e,
+ 0xb5,0xe0,0x3e,0x10,0x8d,0x7c,0x17,0xe2,0xb9,0x6d,0xe5,0xd8,0xb7,0x3a,0x6e,0xa7,
+ 0x25,0xa4,0xae,0x40,0xdc,0xe8,0xc3,0x8f,0xc0,0x18,0x9f,0xfe,0xfe,0x0a,0xf4,0x2b,
+ 0x2d,0x5a,0xfb,0x51,0x82,0xe9,0xee,0xfc,0x63,0x04,0x17,0xac,0xc0,0xc6,0x9a,0x7c,
+ 0x22,0x55,0x23,0xf8,0xbb,0x13,0x9f,0xca,0xae,0x5b,0x69,0xba,0x21,0x82,0xee,0x7b,
+ 0xbd,0x56,0xfa,0x5d,0x4e,0xe2,0x4d,0xf2,0xdc,0x2d,0xbe,0xd3,0x27,0x03,0x96,0xf9,
+ 0x39,0xef,0xc9,0xf5,0xac,0xb0,0x74,0x27,0x4e,0x33,0x84,0xf5,0x4f,0xd4,0xdf,0x13,
+ 0x5a,0x15,0x25,0x09,0xc3,0x46,0x8f,0x50,0xd3,0xb4,0xfb,0x7d,0x6a,0xcd,0xad,0xaf,
+ 0xa0,0x82,0xea,0x2f,0xbe,0x91,0xcf,0x18,0x75,0x1e,0xbc,0x1e,0x3d,0x2a,0xfd,0xb7,
+ 0x85,0x74,0xa4,0x8c,0x47,0x1c,0x93,0x58,0xb6,0x3e,0x54,0xb3,0xbc,0x92,0x0c,0x7f,
+ 0xc0,0x56,0x40,0x0f,0xe2,0x2b,0xcb,0xac,0x57,0x42,0x79,0xe2,0xf3,0xb5,0x6b,0xeb,
+ 0x98,0xc6,0x0e,0xd9,0x6e,0xf6,0x71,0xff,0x00,0x7d,0x2e,0x3f,0x2e,0x2b,0x2f,0xc4,
+ 0xfa,0xdf,0x86,0xb4,0xf8,0x5a,0x6b,0x08,0x67,0xb8,0x91,0x1f,0x3b,0x64,0xd4,0x02,
+ 0x1c,0x10,0x41,0xc3,0x79,0x9c,0x11,0xbb,0x3c,0xf0,0x71,0x53,0x1c,0x1c,0xa1,0x1e,
+ 0x54,0xde,0x9f,0xd7,0x71,0xd4,0xaf,0x19,0xcb,0x9a,0xd6,0x3a,0x6f,0x11,0xe8,0xeb,
+ 0xe0,0x1d,0x3a,0x68,0xa1,0xba,0xb5,0xd4,0x74,0xe5,0x12,0x4c,0x23,0xd4,0xe3,0x06,
+ 0x64,0x2c,0xdb,0x98,0xa4,0xa3,0xef,0x1c,0xf3,0x82,0x33,0xc7,0xde,0x15,0xe7,0xbf,
+ 0xdb,0x36,0xfa,0xbe,0x9a,0xd3,0x8f,0x3e,0xfe,0xda,0x1b,0x85,0x91,0x15,0x91,0xb0,
+ 0x80,0xf1,0x22,0x30,0x39,0x00,0x15,0x3e,0xc3,0x27,0x81,0x8e,0x6b,0x3e,0x6f,0x12,
+ 0xf8,0x6e,0xf2,0xda,0xdd,0x21,0x79,0xaf,0x25,0x7c,0x23,0xcd,0x77,0x70,0xc3,0x6e,
+ 0x32,0x49,0xfb,0xe4,0x1c,0x9e,0x08,0xce,0x0f,0x07,0x3c,0x56,0x1c,0x57,0xf6,0x9a,
+ 0x55,0x8f,0x91,0x34,0x56,0xf2,0xcc,0xaf,0xba,0x3b,0x9b,0x49,0x83,0x6f,0x1d,0xf7,
+ 0x8d,0xc4,0x7e,0x02,0xbb,0x29,0x61,0x24,0xd5,0xe4,0xb5,0x39,0x2a,0x57,0xb3,0xf7,
+ 0x59,0xf7,0xdf,0xec,0xff,0x00,0xe0,0x1f,0x82,0xfa,0xb7,0xc3,0x7d,0x22,0xe7,0x53,
+ 0xbb,0xb6,0x1a,0xe5,0xd5,0x99,0x17,0xb6,0xc6,0xf8,0x7e,0xed,0x8b,0xb1,0x00,0xa0,
+ 0x3f,0x2f,0x18,0xec,0x38,0xed,0x57,0x3f,0xe1,0x44,0x7e,0xce,0x16,0xb2,0x11,0x3c,
+ 0x9a,0x39,0x64,0x25,0x59,0x5e,0xe9,0x0f,0x3e,0xf9,0xe8,0x7e,0x98,0xaf,0x8a,0x7e,
+ 0x1d,0x6b,0x10,0x07,0xd5,0x25,0x6b,0x48,0xe7,0x8c,0xcc,0x80,0x02,0x71,0x81,0xb4,
+ 0x67,0x18,0x3c,0xf5,0xef,0x5a,0x3e,0x24,0xd4,0xac,0x84,0x85,0xd2,0xde,0x41,0x6d,
+ 0xbf,0x7a,0xc7,0x9e,0x9e,0xa3,0x39,0xe9,0x5c,0xaa,0x8b,0x85,0x47,0x08,0xb7,0xa9,
+ 0xa4,0xab,0x2a,0x91,0x52,0x92,0xd4,0xdc,0xfd,0xa6,0x6c,0xfc,0x23,0x7f,0xf1,0x0a,
+ 0xef,0x40,0xf0,0xe5,0xea,0xc3,0xa2,0x69,0x50,0x2a,0x59,0xad,0x99,0x8d,0xd1,0x9b,
+ 0xc9,0xb6,0x38,0xc8,0xc6,0x13,0x0f,0x28,0xe0,0x1f,0x99,0x40,0xef,0x5e,0x99,0xfb,
+ 0x1a,0xda,0xe9,0x3a,0x97,0xfc,0x24,0xab,0x71,0x67,0x63,0xa9,0x35,0xa8,0xb6,0x45,
+ 0x96,0xf2,0xde,0x39,0xf6,0xb1,0x12,0x86,0x2a,0x5c,0x1e,0xa1,0x57,0xf4,0xf4,0xaf,
+ 0x94,0xfe,0xdf,0x0d,0xf7,0x8b,0xaf,0x56,0xde,0xdc,0xa3,0x2c,0x6f,0x85,0xea,0x48,
+ 0xc4,0x7c,0x7b,0xf5,0xaf,0x7a,0xfd,0x87,0x2f,0x6e,0x53,0xc5,0x7e,0x22,0xb2,0xb6,
+ 0x96,0xd6,0xd7,0xed,0x10,0x23,0x31,0xbb,0xde,0x54,0x15,0x27,0x18,0x0b,0x93,0x9f,
+ 0x98,0xfb,0x75,0xaa,0xc6,0x51,0xb6,0x19,0xab,0xec,0x89,0xa1,0x55,0xfb,0x4f,0x53,
+ 0xec,0x6b,0x6f,0x0d,0xe8,0xd1,0x0c,0xdb,0xe9,0x9a,0x5c,0x32,0x0c,0xe5,0xa2,0xb0,
+ 0x80,0x75,0x1d,0x38,0x4f,0x5a,0xf1,0x3f,0xdb,0x6b,0x46,0xb3,0xb7,0xf8,0x59,0xa1,
+ 0xdd,0x45,0x6b,0x6f,0x14,0xbf,0xf0,0x90,0x40,0x86,0x48,0xa1,0x55,0x38,0xfb,0x2c,
+ 0xa7,0x19,0x03,0xa7,0x4f,0xca,0xbd,0xde,0x1d,0x3b,0x52,0xdf,0xb9,0x6f,0x74,0xc1,
+ 0x80,0xc0,0xcb,0x12,0xcc,0x17,0x77,0x1c,0x74,0xe3,0xae,0x7a,0x62,0xbc,0x3f,0xf6,
+ 0xd3,0xbc,0x6b,0x6f,0x85,0x9a,0x0c,0x53,0xc9,0x61,0x72,0xa7,0x5d,0x86,0x4f,0xdc,
+ 0x99,0x37,0x2f,0xfa,0x34,0x8a,0xbf,0x78,0x00,0x41,0xda,0xc6,0xbe,0x67,0x09,0x29,
+ 0x3a,0xf0,0x57,0xea,0x7a,0x15,0x52,0x50,0x6e,0xc7,0xdf,0x9e,0x3d,0x9d,0xed,0x7e,
+ 0x11,0xeb,0x92,0xa0,0x52,0xd1,0xe8,0xf3,0x30,0xde,0xa1,0x86,0x44,0x24,0xf2,0x0f,
+ 0x04,0x57,0xe5,0x9f,0xc6,0xfd,0x4e,0xe7,0x5f,0xb0,0xf1,0x6b,0xde,0xa5,0xac,0x49,
+ 0x6b,0x65,0x69,0x1a,0x9b,0x78,0x96,0x23,0x82,0xdc,0x93,0x81,0xc9,0xc8,0x23,0xf1,
+ 0xaf,0xd3,0x0f,0x88,0x37,0xba,0xb3,0x7c,0x1d,0xd7,0xe4,0x78,0x6c,0x55,0x3f,0xb1,
+ 0xa6,0x63,0x89,0x9c,0x10,0x3c,0x93,0xfe,0xcd,0x7e,0x53,0xfc,0x4d,0xbe,0x32,0xda,
+ 0x7c,0x40,0x24,0xe2,0x40,0x6c,0xa2,0x20,0x1c,0x82,0x72,0x7a,0x7b,0x71,0x5f,0x43,
+ 0x19,0xaa,0x95,0x54,0x96,0xd6,0x5f,0x99,0xe6,0xd3,0xba,0x4d,0x1e,0x37,0x05,0xbd,
+ 0xbd,0xb9,0xb6,0x99,0x5b,0x6b,0x0b,0xbf,0x97,0x23,0xef,0x0c,0x21,0xcf,0xfe,0x3c,
+ 0x7f,0x3a,0xe8,0xbe,0x2b,0x15,0x1f,0x0b,0xbc,0x31,0x36,0xef,0x94,0xb5,0xd4,0x5d,
+ 0x73,0x82,0x16,0x25,0xe7,0xf1,0x22,0xb8,0xe9,0x26,0xf3,0xac,0xac,0x43,0xca,0x77,
+ 0x07,0xc9,0x40,0x0e,0x0f,0x08,0xbc,0x9f,0xf8,0x0d,0x7b,0x0f,0x84,0x7c,0x1f,0xe1,
+ 0xef,0x1f,0xf8,0x67,0xc2,0x5a,0x6f,0x8a,0x6f,0x5f,0x4c,0xd2,0x16,0xfa,0xf3,0xcd,
+ 0xbc,0x12,0x84,0xf2,0xff,0x00,0x77,0x0e,0x39,0x23,0x1d,0x78,0xfc,0x6b,0xd9,0xb5,
+ 0x9a,0x67,0x2a,0x7a,0x33,0xe7,0xff,0x00,0x87,0x5a,0x9c,0x1a,0x76,0xbb,0x24,0x77,
+ 0x32,0xac,0x16,0xd7,0xb0,0x3d,0xab,0xc8,0xdd,0x14,0xb6,0x0a,0xb1,0xf4,0x01,0xd5,
+ 0x49,0xf6,0x06,0xbe,0xee,0xf8,0x27,0xac,0x45,0xe2,0xbf,0x04,0xa6,0x9f,0x7d,0x00,
+ 0x96,0xef,0x44,0x45,0x82,0x6f,0x36,0x31,0xb7,0x00,0x10,0x84,0x13,0xc6,0x76,0x8e,
+ 0x7e,0x99,0xe8,0x6b,0x94,0xba,0xfd,0x8e,0x3e,0x08,0xcd,0x1e,0xfb,0x0f,0x8a,0x66,
+ 0x37,0x23,0x20,0x35,0xec,0x0d,0xff,0x00,0xb2,0x54,0x5a,0x17,0xc3,0x09,0x34,0xbf,
+ 0x07,0xea,0x1a,0x4e,0x85,0xa8,0x5c,0x78,0x83,0x4a,0xb6,0xbc,0xb9,0x5b,0xcd,0x45,
+ 0x27,0x20,0x1b,0x34,0x86,0x00,0x99,0xda,0x46,0x40,0x79,0xca,0x77,0xe1,0xc8,0xe9,
+ 0x4a,0xa4,0xd5,0x39,0x46,0x5d,0xf4,0x3d,0x0c,0x2c,0xe3,0x5e,0x8c,0xf0,0xf2,0xd9,
+ 0x7b,0xd7,0xed,0xb2,0x7a,0x75,0xba,0x3d,0xdd,0xfc,0x53,0xa3,0x78,0x23,0x46,0x37,
+ 0x57,0xb7,0x4b,0x63,0x07,0x2c,0x22,0x77,0x05,0xc9,0xf4,0x55,0x04,0x93,0xf8,0x52,
+ 0x7e,0xcb,0x1e,0x0b,0xd5,0x3e,0x2b,0x7c,0x46,0xd6,0xfe,0x20,0xdd,0x41,0x73,0x63,
+ 0xa7,0x40,0x51,0xed,0x9d,0x14,0xe6,0x4c,0x3a,0x85,0x45,0x38,0xe7,0x84,0xe4,0x8e,
+ 0xeb,0xef,0x5d,0x8f,0xc2,0xcf,0xd8,0x43,0xc2,0x49,0xa6,0x68,0x7a,0xe6,0xa7,0x67,
+ 0x7b,0xac,0x25,0xc5,0xa4,0x57,0x6d,0x69,0x25,0xea,0xc7,0x16,0x59,0x15,0xb6,0x9c,
+ 0x0d,0xc4,0x0c,0x9e,0x33,0x5b,0xde,0x33,0xd4,0x6c,0x2d,0x7c,0x53,0x07,0x86,0x2d,
+ 0x6f,0xac,0x74,0x6b,0x68,0xc9,0xdb,0xa1,0xc7,0x2a,0x2e,0x02,0x92,0x06,0x23,0x1d,
+ 0x7e,0x50,0x46,0x6b,0x8d,0xb9,0x62,0x25,0x66,0xac,0xbe,0x67,0x5a,0x9d,0x0a,0x34,
+ 0x67,0x4e,0x83,0x6d,0xcb,0x46,0xde,0x9a,0x5f,0x64,0x93,0x7b,0x9f,0x57,0x40,0x84,
+ 0x48,0xcc,0x3a,0xec,0x1f,0xcc,0xd4,0x3a,0xd9,0xdd,0xa3,0xdd,0x2e,0x7e,0xf2,0x15,
+ 0xfc,0xf8,0xfe,0xb5,0xcf,0xf8,0x26,0x5b,0xeb,0x1f,0x07,0xe8,0xb1,0x8d,0x2e,0x43,
+ 0xb2,0xca,0x08,0xf6,0xac,0xa9,0xc8,0x08,0x3e,0x6e,0x4f,0xe9,0x57,0x75,0x7d,0x46,
+ 0xe8,0xe9,0xee,0x25,0xb0,0x96,0xd9,0x1a,0x48,0xd4,0xc9,0x2c,0xb1,0xed,0x50,0x5c,
+ 0x64,0xf0,0xc4,0xfe,0x95,0x92,0x7c,0x94,0xda,0xd7,0x67,0xd1,0x9e,0x32,0x5e,0xf2,
+ 0x3e,0x7a,0xf8,0xd5,0xad,0xdf,0x59,0x6a,0xba,0x74,0x56,0xb7,0x26,0xdd,0x3e,0xcc,
+ 0x16,0x40,0x64,0x2a,0xac,0xa6,0x28,0x8f,0x38,0xe7,0xae,0x79,0x1e,0xfd,0x33,0x9a,
+ 0xf2,0xbb,0x1d,0x63,0x5a,0xb9,0xf2,0xc2,0xea,0xb7,0x80,0xf9,0xbc,0xa2,0x5c,0xb9,
+ 0x04,0xfa,0x63,0x71,0xe8,0x00,0xe4,0xfa,0xf5,0xae,0xe3,0xe2,0xfb,0xeb,0xba,0xbe,
+ 0xae,0xa1,0x3c,0x3d,0x39,0xb4,0x58,0x22,0x2b,0x24,0x6d,0x13,0xbb,0xaf,0x94,0x98,
+ 0xdc,0x03,0xe5,0x7a,0x74,0x3e,0xb5,0xe7,0xb6,0x1a,0xa9,0xd3,0xaf,0x52,0x17,0xd3,
+ 0x25,0x13,0x16,0x32,0x08,0xa5,0xf2,0x8f,0x4c,0x67,0xe5,0x2f,0xd8,0x7f,0x3e,0x6b,
+ 0xe7,0x27,0x52,0x10,0xbb,0x9b,0xb1,0xf4,0x54,0x30,0xf5,0x2b,0x25,0x1a,0x51,0x72,
+ 0xd3,0xa6,0xbf,0x91,0xa1,0xf1,0x1a,0xfa,0x44,0x97,0xc3,0x81,0x5d,0x95,0xc5,0xa5,
+ 0xc3,0xb1,0x5e,0xa4,0x9b,0xa9,0x7a,0xff,0x00,0xdf,0x35,0x77,0xc1,0x97,0x5a,0x36,
+ 0xa1,0xa2,0x87,0xd4,0xe2,0xb3,0xb8,0xbb,0x49,0x19,0x19,0xa6,0x93,0x0c,0x07,0x50,
+ 0x0f,0xe7,0x55,0xbe,0x21,0xd8,0xeb,0x1a,0xb5,0xf6,0x9d,0x76,0xba,0x05,0xfc,0x5a,
+ 0x74,0x16,0x0b,0x12,0xcc,0xb1,0xee,0x19,0x32,0xc8,0xfb,0x9b,0x91,0xb7,0x3e,0x60,
+ 0xc7,0x27,0xa6,0x7b,0xd7,0x27,0x2c,0x3e,0x10,0x9e,0x28,0x0e,0xa5,0xa8,0xdb,0x58,
+ 0x5f,0xaa,0xb2,0xcd,0x0c,0xd7,0x0b,0x1c,0x80,0x87,0x6c,0x16,0x53,0xd0,0xe3,0x1f,
+ 0x86,0x2b,0xd6,0xc2,0x56,0xa6,0xeb,0x46,0xf2,0x4b,0xdd,0x5d,0x7c,0x91,0xc9,0x3c,
+ 0x2d,0x7e,0x46,0xd5,0x36,0xf5,0xec,0xcf,0xcf,0xdf,0x8e,0x3a,0x8d,0xbe,0xb9,0xf1,
+ 0x0a,0xfe,0xfe,0xd2,0x68,0xe6,0xb5,0x98,0xa3,0x24,0x91,0x9c,0xab,0x01,0x1a,0x03,
+ 0x8f,0xc7,0x35,0xed,0x7f,0x11,0x3c,0x5d,0xa2,0xea,0x72,0xe9,0xbe,0x5e,0xb7,0xa7,
+ 0x1f,0xb4,0xac,0x60,0x4a,0x2e,0x17,0x60,0x1b,0x98,0x6e,0xea,0x78,0x1d,0xeb,0xe7,
+ 0x5f,0x12,0xf9,0xc9,0x60,0x85,0xcc,0x65,0x40,0x00,0xe0,0x73,0x8c,0xfd,0x2a,0x4d,
+ 0x56,0xd9,0x2f,0xfc,0x3d,0xa0,0x3b,0xaa,0xc8,0xd1,0x89,0x11,0x98,0x01,0x8c,0x2b,
+ 0xe7,0xf9,0x30,0xfc,0x85,0x7d,0x1b,0xa0,0xa4,0x92,0xbe,0xc7,0x83,0x29,0x5e,0xfe,
+ 0x6c,0xfb,0xe3,0x46,0xd7,0xfc,0x21,0x6d,0xe3,0x3b,0x79,0x20,0xf1,0x46,0x9b,0x24,
+ 0x26,0x2d,0x42,0xf5,0xe5,0x1a,0x94,0x24,0x07,0x67,0x5d,0xab,0x90,0x40,0xc1,0xdb,
+ 0xc0,0xf4,0xf5,0xe4,0x56,0x79,0xf8,0xcb,0xe1,0xcd,0x67,0x4d,0xf1,0xb6,0x8b,0x25,
+ 0xc4,0x51,0xc7,0x1c,0x36,0x8c,0x6e,0x1e,0x75,0xf2,0xdd,0x63,0xdc,0x1b,0x69,0x07,
+ 0x9e,0x0e,0x78,0xf4,0xaf,0x87,0xec,0xe2,0x79,0xe2,0x44,0x16,0x76,0xed,0xb9,0x0f,
+ 0x02,0x35,0x18,0x19,0xc6,0x7f,0x2a,0xa0,0x65,0x37,0xf2,0x88,0xe3,0x85,0x23,0x10,
+ 0x49,0x92,0xe8,0xa0,0x67,0x00,0x81,0xcf,0xe7,0xf9,0xd7,0x12,0xc2,0x72,0xcb,0xe2,
+ 0x35,0x55,0x6e,0xad,0xca,0x7a,0x97,0x89,0x3c,0x45,0x6f,0xf1,0x5f,0xe3,0x4d,0xb6,
+ 0xa1,0xa7,0xc0,0x2d,0x60,0x82,0xe1,0x59,0x1a,0x41,0x82,0x61,0x8a,0x42,0x73,0xf5,
+ 0x27,0xaf,0xe5,0x5d,0x5f,0xc0,0x69,0x12,0x7f,0x8d,0x5a,0xa5,0xe3,0xe1,0x42,0x5a,
+ 0xdf,0x36,0xe6,0x7c,0xee,0xca,0x3a,0x64,0x7a,0x75,0x1c,0x57,0x96,0x7c,0x20,0xb0,
+ 0xf2,0x7c,0x75,0x34,0x8e,0xc5,0x84,0x76,0xb2,0x36,0x48,0xf5,0x3d,0x3d,0xf1,0x58,
+ 0xba,0x7c,0x56,0xd7,0xd3,0xab,0xaf,0x98,0xac,0x5d,0xcb,0x1d,0xc4,0x99,0x18,0xb3,
+ 0x11,0x81,0xcf,0x50,0x40,0xae,0xce,0x55,0x18,0xa4,0x88,0x5a,0xbb,0x9f,0x59,0x7e,
+ 0xd7,0x1a,0xcf,0xf6,0x3f,0xc5,0x58,0x2f,0x04,0x11,0xc9,0x75,0xa4,0x69,0x56,0x11,
+ 0xdb,0x17,0x20,0x6d,0x3e,0x4e,0xed,0xe3,0x20,0xf2,0x0b,0xe3,0xf0,0xaf,0x9a,0x3c,
+ 0x7d,0xe2,0x81,0xe3,0x8d,0x4a,0xd6,0xf3,0x54,0xb8,0x56,0x9a,0xd9,0x36,0x26,0xcc,
+ 0x7f,0x7b,0x73,0x73,0xdf,0xa9,0xae,0x67,0xc4,0x57,0x66,0x2b,0x6b,0x04,0x79,0x66,
+ 0x4b,0x79,0x65,0x90,0xbe,0xf9,0x77,0x31,0xf9,0x53,0x1d,0x85,0x63,0xdb,0xc5,0x1d,
+ 0xac,0xd1,0x48,0xbe,0x6d,0xc2,0x48,0x46,0x16,0x5f,0xfe,0xb0,0xa8,0x54,0x62,0xa4,
+ 0xaa,0x75,0x35,0x53,0x7c,0xbc,0x9d,0x0e,0xf2,0xd7,0x5d,0xb0,0xb5,0xd5,0xa3,0x64,
+ 0xb3,0x8e,0xe6,0x71,0x0a,0xf9,0x30,0xb8,0x2d,0xb9,0x71,0xc8,0xc7,0x4c,0xe7,0x26,
+ 0xba,0x9f,0x05,0xf8,0xc2,0x2d,0x3f,0x54,0x95,0x13,0x43,0x97,0x50,0x92,0x66,0x0f,
+ 0x1a,0x2d,0x90,0x66,0x0c,0x07,0x40,0x37,0x0e,0x31,0x9a,0xf2,0x8f,0x13,0xc7,0x73,
+ 0x63,0x77,0x61,0x77,0x6a,0x1e,0x27,0x96,0x35,0x02,0x48,0xd4,0xfc,0xbc,0x0e,0x87,
+ 0xf1,0xae,0xbb,0xc2,0x5a,0xde,0xa9,0x77,0xe1,0x5d,0x6e,0x10,0x6f,0x6e,0xe5,0x68,
+ 0x64,0x58,0xd9,0x18,0x12,0xa4,0x10,0x01,0x51,0x8c,0xe7,0xaf,0x4a,0xc2,0xb5,0x2b,
+ 0xae,0x63,0xaa,0x8d,0x44,0xbd,0xd3,0xdd,0x74,0x7f,0x1e,0x78,0x9a,0xfe,0x0d,0x42,
+ 0x28,0x74,0x88,0x6c,0x5c,0x41,0x94,0x13,0xcd,0x1c,0x44,0xf5,0xfe,0x12,0x09,0xfd,
+ 0x6b,0x90,0xf1,0x0d,0xbe,0xa9,0xaa,0xf8,0x75,0x35,0x5d,0x72,0xee,0xcf,0x4c,0xb0,
+ 0x85,0x63,0x5f,0x3a,0x01,0x3f,0x9b,0x1a,0x83,0x80,0x03,0x2e,0x41,0xeb,0x8f,0xc6,
+ 0xb1,0x7c,0x07,0xe1,0xad,0x73,0x4b,0xb8,0xf0,0xfc,0xef,0xa2,0xde,0x59,0x44,0x1a,
+ 0x76,0xbd,0xb8,0x96,0xdf,0x6b,0x48,0xa7,0x94,0xdc,0x48,0x2c,0x7b,0xf6,0xa9,0xbc,
+ 0x4d,0xe3,0xad,0x06,0xfb,0xc2,0x77,0xba,0x12,0x4f,0x33,0xdf,0x3e,0x50,0x46,0x96,
+ 0xdf,0x2e,0xe5,0x93,0x3c,0xb8,0xc7,0xa7,0xa1,0xae,0x65,0x4f,0x96,0x4a,0x30,0xd7,
+ 0x6d,0xba,0x0e,0x52,0x4d,0x37,0x2d,0x0f,0x3a,0x4d,0x2e,0x59,0x25,0x32,0x59,0x5f,
+ 0xdd,0x5e,0x42,0xcc,0x58,0x79,0xa5,0x89,0x1f,0x51,0x93,0x8a,0x7d,0xae,0xa1,0x16,
+ 0x8d,0xa9,0xc4,0xf7,0x31,0xfd,0xa7,0xca,0xce,0xf8,0x5c,0x70,0xf9,0x1d,0x33,0x5d,
+ 0xaf,0x83,0x64,0xd2,0xec,0x34,0x89,0x22,0xbd,0xd2,0x6f,0xae,0x2f,0x7c,0xd6,0x92,
+ 0x39,0x6c,0xe3,0xc1,0xc1,0x50,0x30,0x49,0xeb,0xc8,0xcf,0x4a,0xc0,0xf1,0x15,0xbc,
+ 0xba,0xaf,0x88,0xac,0xb5,0x18,0x34,0x0d,0x48,0xdb,0xc0,0x62,0x32,0xc0,0xf6,0xfc,
+ 0xca,0x53,0x03,0x3c,0x63,0x82,0x2b,0xe8,0x23,0x35,0x04,0xe1,0x35,0xa7,0x73,0xce,
+ 0x71,0x6f,0xde,0x8b,0x28,0xbc,0xb6,0x5a,0xad,0xf1,0x16,0x88,0xf6,0xb2,0x48,0xbb,
+ 0xbc,0xa0,0xc0,0x82,0x31,0x9e,0x33,0xed,0xda,0xb6,0xad,0xef,0xa6,0xb2,0xf0,0xfd,
+ 0xc5,0xaa,0x69,0x71,0x5e,0x32,0x07,0x19,0x9e,0x19,0x01,0xe8,0x4e,0x32,0x30,0x2b,
+ 0x26,0xc3,0x4a,0x9b,0x4d,0xf1,0x25,0xa6,0xa3,0x0f,0x85,0x35,0xab,0xcb,0x28,0xe3,
+ 0xd9,0x24,0x13,0xc5,0xb5,0x99,0x80,0x21,0x48,0x60,0x08,0x1d,0x47,0x6e,0xde,0xf5,
+ 0xe8,0xba,0x67,0x8d,0xb5,0x6b,0x5b,0x39,0x52,0xdf,0xc0,0x7a,0x84,0x10,0xab,0x16,
+ 0xdd,0x71,0x29,0x39,0xcb,0x03,0xd7,0xcb,0x1d,0xeb,0x92,0xae,0x25,0xbf,0x76,0x0a,
+ 0xeb,0xd4,0xd6,0x14,0xfa,0xcb,0xf2,0x3c,0x6b,0x40,0xd3,0x2e,0x1a,0xdf,0x64,0xa8,
+ 0xc1,0xc9,0x25,0x47,0x7d,0xa7,0x9f,0xf3,0xf8,0x56,0xa2,0x59,0xcd,0xa7,0xdd,0x86,
+ 0x78,0x72,0x91,0xb8,0x62,0x26,0x04,0x2e,0x7d,0xfd,0xab,0xd2,0xcd,0xee,0xb3,0x6b,
+ 0x7f,0x2d,0xcc,0x7e,0x08,0x4b,0x57,0x3f,0x31,0x9d,0xaf,0x9d,0xdf,0x9e,0xca,0x33,
+ 0xf2,0xf5,0x35,0x07,0x88,0xee,0x3c,0x49,0xe2,0x68,0x66,0xb5,0x6d,0x14,0x59,0xee,
+ 0x04,0x97,0xfb,0x4b,0x92,0x3a,0x7c,0xa5,0x4b,0x60,0xe7,0xd3,0x15,0xa4,0x71,0x35,
+ 0x25,0x15,0x64,0x92,0xf5,0x44,0xba,0x30,0x8b,0x7d,0xfd,0x0e,0x2a,0x1f,0x18,0xea,
+ 0xf6,0xec,0xd1,0x5a,0xa4,0x76,0xe3,0x71,0xcb,0x2c,0x6b,0x18,0x3c,0x7d,0x09,0x23,
+ 0xf0,0xab,0x62,0x6b,0x9d,0x72,0x33,0xf6,0xad,0x59,0x16,0xe0,0x60,0xf9,0x45,0x18,
+ 0xf1,0xeb,0xc9,0x03,0xf2,0xac,0x9b,0x5d,0x7e,0xf7,0x4f,0xb2,0x9e,0xce,0x4d,0x36,
+ 0xce,0x74,0xc9,0x55,0x90,0x67,0x7c,0x67,0xbe,0x0e,0x7d,0x87,0x06,0xae,0x6a,0x1a,
+ 0xd3,0x6a,0x61,0x67,0x96,0xc4,0x46,0xf0,0xc6,0x90,0xe6,0x29,0x78,0x00,0x74,0xf9,
+ 0x4e,0x4f,0xeb,0x5b,0xa8,0x53,0x6a,0xfb,0x79,0xe8,0x62,0xdb,0x28,0xe9,0x50,0x6a,
+ 0x10,0xf8,0xa2,0x58,0x59,0xcc,0x66,0x14,0xf3,0x62,0x95,0x62,0xff,0x00,0x5c,0xb8,
+ 0x51,0xea,0x38,0xe4,0x8e,0xbd,0xab,0xd6,0xbe,0x1e,0xf8,0xbf,0x5e,0xf8,0x1f,0x25,
+ 0xb7,0x8d,0x23,0xb1,0xb4,0xbb,0xf0,0xf4,0x97,0xa2,0xce,0xee,0xdc,0xed,0x13,0x82,
+ 0x57,0x96,0x5e,0x32,0x32,0x37,0x00,0x41,0xc7,0x1c,0x8a,0xf2,0xc8,0xb5,0x29,0x16,
+ 0x68,0x9a,0xea,0x12,0x63,0x00,0xae,0x24,0x4c,0xa8,0x42,0x3e,0x9c,0xe6,0xa0,0x6b,
+ 0x6d,0x27,0x59,0xd4,0x2c,0xa0,0xbd,0x73,0xa7,0xd9,0x47,0x20,0x32,0xcb,0x6f,0x00,
+ 0x67,0xd8,0x5c,0x03,0xb4,0x0c,0x03,0x85,0x24,0xf3,0xdc,0x63,0xbd,0x70,0x57,0xa7,
+ 0xed,0x2f,0x0d,0xe2,0x74,0xc1,0xf2,0xc5,0x4b,0x69,0x1f,0xae,0x96,0xb7,0x51,0x5d,
+ 0x59,0xac,0xb0,0x32,0xf9,0x52,0x28,0x6c,0x1f,0x97,0x72,0xb0,0xef,0xe9,0xd3,0xf4,
+ 0xaf,0x9a,0x3f,0x6e,0x49,0xa0,0xb8,0xf8,0x7f,0xa0,0x8c,0xc6,0x08,0xd6,0xe3,0x2d,
+ 0xb4,0x8c,0x1f,0xdc,0xcd,0xc9,0x3d,0x87,0xd2,0xbc,0x03,0x48,0xf8,0x4b,0xf0,0x7e,
+ 0xea,0x14,0x8e,0x0f,0x8b,0x7a,0xae,0x9f,0xe7,0x1e,0x45,0xe6,0x8a,0xf9,0x3d,0x3b,
+ 0xab,0x90,0x3f,0xfa,0xe6,0xbd,0x47,0xc1,0x3f,0xb1,0x2e,0x93,0xe3,0x6b,0x88,0xef,
+ 0xbc,0x3f,0xf1,0x76,0x2d,0x4a,0xd2,0x25,0x31,0xfe,0xe7,0x4e,0x59,0x36,0x8e,0x46,
+ 0x18,0x79,0xd9,0x5c,0x8f,0x51,0x9a,0xf9,0x4a,0x78,0x6a,0x38,0x4a,0x8a,0xa4,0xa6,
+ 0xf4,0xef,0x16,0x8f,0x45,0xd4,0x95,0x68,0xf2,0xa5,0xf8,0xa3,0xeb,0xcf,0xda,0x33,
+ 0xf6,0xb8,0xf8,0x7d,0xe1,0x5f,0x82,0x57,0xb6,0x3a,0x36,0xbd,0xa6,0x78,0xaf,0x5a,
+ 0xd5,0x2c,0x8e,0x9d,0x05,0x8e,0x97,0x7f,0x14,0x9e,0x59,0x68,0x88,0x67,0x95,0x81,
+ 0x3b,0x11,0x79,0xe4,0xf5,0x38,0x1e,0xb8,0xfc,0xd6,0xd7,0xbc,0x7d,0x1e,0xbd,0xe1,
+ 0xff,0x00,0x16,0x4f,0x7a,0xd6,0xb6,0x97,0x57,0x97,0x36,0xbe,0x5c,0x71,0xcc,0x09,
+ 0x70,0x1a,0x42,0xdb,0x47,0x53,0x81,0x8f,0xce,0xbd,0x8f,0x57,0xfd,0x85,0x74,0xf1,
+ 0xaf,0x26,0x8b,0x0f,0xc5,0xcd,0x22,0x5d,0x55,0x99,0x91,0xec,0x25,0xb6,0x55,0x9c,
+ 0x0d,0x84,0xe0,0x44,0x26,0xdc,0x48,0xc0,0xe0,0xe3,0x8c,0x9e,0xd8,0x3e,0x21,0xf1,
+ 0x27,0xe0,0x5c,0xff,0x00,0x0f,0x35,0xab,0xe8,0x5f,0x5b,0x5b,0xe9,0x34,0xeb,0xe2,
+ 0x0c,0x91,0x42,0x54,0xc9,0x80,0x38,0xc6,0xe3,0x8e,0x7e,0xb5,0xe9,0xe1,0x7e,0xac,
+ 0xbd,0xd8,0x4a,0xed,0xeb,0xb3,0x39,0x9c,0x6a,0x43,0x5b,0x68,0x71,0x36,0x93,0x2c,
+ 0xb0,0x22,0xbb,0x0f,0xbd,0x80,0xc4,0x77,0xde,0x78,0xfc,0x96,0xbd,0x51,0xed,0xa7,
+ 0xd4,0x7e,0x11,0x7d,0x8e,0x06,0x61,0x34,0xb3,0xce,0xa9,0xe5,0xf0,0x46,0x1e,0xdd,
+ 0xb3,0xfe,0x7b,0x57,0x8f,0xd9,0x44,0x7e,0xd3,0x1c,0x08,0x77,0x49,0x24,0x81,0x94,
+ 0x74,0x3c,0x93,0xdf,0xea,0xd5,0xea,0x1a,0x84,0xb1,0x49,0xf0,0xa6,0xde,0x27,0xba,
+ 0x5b,0x13,0xe7,0x49,0xba,0x67,0xc9,0x0b,0x93,0x6f,0xe9,0xcf,0x63,0x5e,0xdb,0x4d,
+ 0xb4,0x97,0x73,0x92,0x2d,0x24,0xdb,0xec,0x79,0xf1,0xf0,0xd5,0xcd,0xaf,0x88,0xa1,
+ 0xb0,0xb8,0x9e,0x77,0x72,0xfc,0xc6,0xef,0xbb,0x2b,0xf8,0x57,0xd8,0x3f,0x03,0xae,
+ 0x60,0xf0,0xaf,0xc2,0xad,0x4b,0x45,0x61,0x2d,0xbd,0xf6,0xa8,0x2f,0x6d,0xed,0xe3,
+ 0x31,0xb7,0x1b,0x6f,0x6c,0x4b,0x6e,0x3d,0x86,0xd5,0xef,0xd7,0x23,0x15,0xf1,0xaf,
+ 0x87,0xe4,0x32,0x78,0x9e,0xcc,0x8b,0xd6,0x9f,0xf7,0xaa,0xa0,0xa9,0xe1,0x86,0x47,
+ 0x3f,0xad,0x7d,0x8b,0xf0,0xaf,0x4b,0x5b,0xcd,0x3f,0xe1,0xf2,0x12,0x55,0xa6,0xd4,
+ 0x35,0x21,0xc0,0xce,0x4b,0x5e,0xc4,0x06,0x7f,0xef,0xd5,0x72,0x62,0xd4,0xa3,0xec,
+ 0xdb,0x7b,0x4b,0xf2,0x8b,0x3b,0xb0,0x73,0x8f,0xef,0x12,0x5b,0xc7,0xf3,0x92,0x3f,
+ 0x52,0x3c,0x29,0x1a,0x5b,0x78,0x6b,0x47,0x82,0x31,0x88,0xd2,0xca,0x15,0x50,0x7b,
+ 0x01,0x1a,0xe0,0x57,0xc8,0x7e,0x28,0xf0,0x04,0x3a,0x8f,0xc5,0xb3,0xe3,0x0b,0x89,
+ 0x14,0xde,0xc3,0x03,0xc6,0xab,0xc1,0xdd,0x95,0x1c,0xe7,0xae,0x46,0x09,0x03,0xfd,
+ 0xb3,0x5f,0x5c,0x68,0x56,0x7a,0xa2,0xe8,0x3a,0x68,0xfb,0x4d,0xa1,0x6f,0xb3,0x47,
+ 0x95,0x30,0xb0,0xc7,0xc8,0x3b,0xef,0xaf,0x9b,0xfc,0x2f,0xe1,0x0f,0x11,0x5f,0xfc,
+ 0x4d,0xf1,0x26,0x85,0x7d,0x33,0xdf,0xde,0x5a,0xb2,0xcf,0x12,0xc9,0x14,0x70,0xa4,
+ 0x50,0x30,0x00,0x6c,0x6c,0xfc,0xe3,0xe6,0xc6,0x7f,0xd9,0x35,0xcd,0x84,0x8b,0xa7,
+ 0x7f,0x68,0xed,0x7d,0xbc,0xce,0x79,0x4d,0x46,0xe9,0x75,0x3e,0xa6,0xb0,0xb7,0x16,
+ 0x96,0x56,0xf6,0xe3,0x81,0x14,0x6b,0x18,0x1e,0x80,0x00,0x2b,0x2b,0xc5,0xc7,0x7e,
+ 0x92,0xca,0x7e,0xe1,0x9a,0x00,0x7d,0x3f,0xd7,0x25,0x5b,0x67,0xd5,0xf7,0x36,0xc8,
+ 0x2d,0x5b,0x9e,0x82,0x63,0xc0,0xff,0x00,0xbe,0x6b,0x0f,0xc5,0x57,0x9a,0x8c,0x5a,
+ 0x67,0xfa,0x55,0xa2,0x45,0x09,0x9a,0x2f,0x9c,0x4a,0xbd,0x9c,0x11,0xc7,0xbe,0x2b,
+ 0xcf,0xad,0xcd,0xcb,0x2b,0x27,0x6d,0x7a,0x05,0x35,0x79,0x23,0xe7,0xef,0x8b,0x9a,
+ 0xa1,0xb0,0xd7,0xd9,0x62,0x94,0x43,0x24,0xa2,0x35,0xc8,0x4c,0xbb,0x28,0x8d,0x14,
+ 0xa8,0xe7,0x80,0x70,0x3a,0x57,0xcf,0x97,0xde,0x27,0x87,0x46,0xd7,0xaf,0x35,0x4b,
+ 0xcb,0x4d,0x50,0x3c,0xb0,0x7d,0x9e,0x61,0x17,0x23,0x0a,0xc0,0x82,0x81,0x64,0xc8,
+ 0x1c,0x72,0x08,0xe9,0x8f,0xc7,0xd4,0x7f,0x68,0x9f,0x10,0x6b,0xda,0x04,0x7a,0xce,
+ 0xbc,0x3c,0x25,0x3e,0xa9,0x15,0xa3,0xab,0x45,0x0c,0x37,0x68,0x44,0x9d,0x14,0x02,
+ 0x10,0xee,0x1c,0xe3,0x20,0x0c,0x8e,0x6b,0xc0,0x7c,0x05,0xf1,0xae,0x4d,0x5b,0xc4,
+ 0xb1,0x68,0x9e,0x25,0xd1,0x2c,0xac,0x75,0x69,0xf3,0x15,0xb5,0xb4,0x6c,0x37,0xbb,
+ 0xee,0x23,0x08,0xac,0x41,0x39,0xc3,0x75,0x19,0xca,0xfb,0xd7,0x93,0xf5,0x6f,0xac,
+ 0xc1,0xbf,0x5b,0xd9,0xea,0x7d,0x86,0x1b,0x13,0x53,0x02,0x94,0xe0,0x96,0xb6,0xdd,
+ 0x69,0xa7,0x67,0xdc,0xf7,0x1d,0x47,0xf6,0xd1,0xf0,0x9e,0xb7,0xe1,0xdb,0xed,0x36,
+ 0x11,0xab,0xc1,0xba,0xda,0x28,0x44,0x72,0x58,0x9d,0x80,0xa1,0x5e,0x4b,0x64,0x9f,
+ 0xe0,0x61,0x8c,0x7f,0x15,0x7c,0x79,0xac,0x78,0xcb,0x4f,0xd6,0x75,0xad,0x42,0xfa,
+ 0xe6,0xd6,0x76,0x9a,0x7b,0x87,0x90,0xed,0xb6,0x90,0xe0,0x13,0x90,0x0e,0x01,0x19,
+ 0xc1,0x15,0xed,0xda,0xb7,0x82,0xe2,0xd1,0xf5,0x99,0xac,0xa4,0xd3,0xe4,0x26,0x4b,
+ 0x38,0x25,0x2a,0xb1,0x13,0xe5,0xb4,0x9b,0xa4,0x3b,0x89,0x27,0x9f,0x9c,0x70,0x3a,
+ 0x57,0x1d,0xac,0xfc,0x32,0x58,0xa7,0x8a,0xf1,0xb5,0x2d,0x32,0xc9,0x35,0x04,0x37,
+ 0x11,0xdb,0x4f,0x39,0x49,0x63,0x50,0xcd,0x16,0x1d,0x47,0x42,0x4c,0x44,0xfd,0x08,
+ 0xae,0xe5,0x97,0x51,0xc5,0x56,0xf7,0xdb,0xd2,0x2b,0x67,0xff,0x00,0x03,0xcc,0xc7,
+ 0x0d,0x9d,0xe2,0x32,0xea,0x4e,0x34,0x61,0x1d,0x5b,0x6e,0xe9,0xbd,0x7e,0xff,0x00,
+ 0x23,0xe3,0x7b,0xfd,0x1a,0x5b,0xcd,0x1e,0x5b,0xa0,0x50,0x45,0x1b,0x2a,0xb6,0x5b,
+ 0x07,0x9e,0xe3,0xd7,0xf9,0xf3,0x53,0xd8,0x69,0x97,0xc3,0xc3,0x11,0x41,0x6f,0x65,
+ 0x3d,0xd9,0xf3,0xa4,0x0a,0xde,0x4b,0x92,0x03,0xaa,0xe0,0x8d,0xa7,0xaf,0xcb,0xc7,
+ 0x6a,0x8a,0x58,0xe4,0x96,0xc0,0x4a,0xaa,0xcf,0x02,0x91,0xb8,0x8e,0x81,0x8f,0x4f,
+ 0xeb,0x5e,0xd9,0xe0,0x0d,0x67,0x36,0xba,0x14,0x62,0x66,0xfb,0x40,0x07,0xed,0x61,
+ 0x98,0x9d,0xa7,0x20,0x47,0x9c,0xf0,0x3e,0x5c,0xe3,0xda,0xbe,0xe5,0xa4,0x96,0x9b,
+ 0x9f,0x0f,0x2b,0xb7,0x63,0xc8,0x34,0xcf,0x0f,0x6a,0x50,0x3c,0x56,0xb3,0xb4,0xd6,
+ 0x13,0xdc,0x2b,0x04,0xfb,0x6a,0x98,0x81,0x1d,0xcf,0xcd,0xd7,0xb0,0xe2,0xb1,0x1a,
+ 0x69,0x6d,0x57,0x11,0x4c,0x71,0x9c,0xba,0x93,0xf7,0x49,0x27,0xa8,0xf4,0xaf,0x44,
+ 0xf8,0xaf,0x61,0x71,0xad,0x5f,0x68,0xd6,0x30,0x4f,0x2d,0xd4,0xd0,0xa5,0xc4,0x7b,
+ 0xb2,0x0b,0x10,0x26,0x72,0x49,0x3f,0x4e,0x73,0x5e,0x5f,0x69,0x73,0x22,0xa4,0x47,
+ 0x76,0x79,0x38,0x62,0x79,0xce,0x4f,0xf8,0xd6,0x12,0xa6,0xd1,0x51,0x97,0x32,0xb9,
+ 0xe9,0xff,0x00,0x06,0x2f,0x44,0x12,0x6b,0xf7,0x8e,0xa2,0x66,0x8a,0xca,0x4d,0xb9,
+ 0x03,0x00,0x90,0x7a,0x7e,0x59,0xff,0x00,0x39,0xae,0x5b,0xc1,0xad,0xa9,0x45,0x75,
+ 0x6e,0x6d,0x83,0x88,0xe0,0x9b,0xcc,0x9a,0x48,0xe3,0xc9,0x8d,0x07,0xde,0xdc,0x71,
+ 0xc0,0xc5,0x75,0x5f,0x0e,0x15,0x87,0x85,0x3c,0x53,0x3a,0x01,0x34,0x9b,0x0c,0x4a,
+ 0x54,0x67,0x27,0x04,0x67,0xf5,0xad,0x4f,0x0e,0x69,0x45,0x34,0x89,0xa2,0x9a,0xee,
+ 0xd3,0x4f,0x17,0x24,0xf9,0xa6,0xf0,0xf0,0xa0,0x01,0x8e,0x07,0x5e,0x72,0x3a,0xfe,
+ 0x15,0x94,0xd5,0x95,0x8d,0x61,0xb9,0xc3,0x78,0x8b,0xc1,0x37,0xa9,0xa7,0x68,0xe6,
+ 0xe1,0x56,0xd4,0x5c,0x3c,0x93,0xa9,0x23,0x3b,0x94,0x81,0xf3,0x7f,0x3f,0xca,0xa7,
+ 0x93,0x4e,0xb2,0x86,0x2b,0x68,0x0c,0xa3,0x11,0x9d,0x92,0x6d,0x3b,0x7a,0x63,0x24,
+ 0x9f,0xf0,0x3d,0xab,0xb8,0xd7,0x7c,0x37,0x15,0xeb,0x69,0x7b,0xfc,0x53,0xa5,0x43,
+ 0xe4,0x06,0x4d,0x81,0x24,0x01,0xd0,0x28,0x00,0xfc,0xaa,0x7a,0xe0,0x1c,0xf7,0xcd,
+ 0x79,0x45,0xea,0xc9,0x6d,0xa9,0x08,0xd6,0x46,0x92,0x24,0x91,0x9a,0x42,0x89,0x22,
+ 0x87,0xe7,0x38,0xc6,0x33,0xed,0x4d,0x5e,0x48,0xa9,0x59,0x4b,0xdd,0xd8,0xed,0x8e,
+ 0xaf,0x67,0x14,0x76,0x70,0xbd,0xd2,0x79,0x16,0x8a,0x7c,0xa8,0xe4,0x5c,0x9c,0x11,
+ 0x91,0xd7,0x3e,0xdd,0xfb,0x57,0xae,0x7c,0x39,0x7b,0x7b,0xad,0x24,0x4f,0xa7,0x87,
+ 0xba,0x9a,0x56,0x2a,0x15,0x57,0xcb,0xf3,0x39,0xe0,0x00,0x5b,0xa7,0xd0,0x57,0x81,
+ 0xcd,0xac,0xc2,0x6d,0x9a,0x5b,0x73,0x77,0x6b,0x70,0x25,0x52,0x1e,0x28,0x32,0x42,
+ 0xe0,0xf1,0xb8,0x8f,0x71,0xe9,0xd2,0xbb,0x7b,0x8f,0x8a,0x57,0x97,0x36,0x03,0x4f,
+ 0xd2,0x9f,0x5a,0x88,0xc5,0x07,0x96,0xa6,0xd4,0x4a,0xb2,0x79,0x9b,0x18,0x64,0x90,
+ 0x7a,0x67,0x1c,0x7b,0x57,0x14,0xe8,0x4a,0x76,0x4c,0xea,0x8d,0x48,0x45,0x5d,0x6e,
+ 0x7a,0xf4,0x37,0xbe,0x2b,0x95,0x5d,0xd3,0xc1,0xf3,0xb4,0x20,0xb4,0x69,0xe6,0xdc,
+ 0xaa,0x48,0xd8,0xe0,0x92,0x8b,0x09,0x65,0x04,0x82,0x41,0x27,0x91,0x8f,0x5a,0xf3,
+ 0x9d,0x76,0xef,0xc6,0x1e,0x0f,0xd2,0x6c,0xef,0xdb,0xc1,0x77,0xb6,0x56,0xf0,0x23,
+ 0x19,0xa5,0x8a,0x42,0x77,0x06,0xee,0xc0,0x8e,0x31,0x8f,0x4e,0xf5,0xe7,0x1a,0x9f,
+ 0x88,0x35,0xcd,0xe6,0xe2,0xec,0x6a,0xe2,0x60,0x5c,0x3c,0xd3,0x89,0x30,0x41,0x45,
+ 0x55,0x18,0x3d,0x39,0xdc,0x7f,0x11,0x5c,0xcf,0x88,0x35,0x18,0xf5,0x7b,0x49,0x04,
+ 0x71,0x4c,0xb2,0x61,0x37,0x48,0xe1,0x98,0x6e,0x03,0xe6,0x27,0xeb,0x5d,0x34,0xb0,
+ 0xd1,0x84,0xae,0x92,0x39,0xa5,0x56,0x4d,0x5a,0xe7,0xac,0x78,0x7f,0xe2,0x6f,0x88,
+ 0x3c,0x6b,0x2c,0x96,0x16,0x36,0x20,0xbb,0xc7,0xbc,0x97,0xb8,0x55,0x38,0x5c,0x67,
+ 0x07,0x6e,0x73,0xff,0x00,0xd7,0xa7,0xea,0x9a,0xaf,0x8e,0xf4,0xd8,0x74,0xf5,0x97,
+ 0x4b,0x78,0xe4,0xba,0x7d,0x96,0xfb,0xa6,0x8f,0xe6,0x3b,0x78,0x56,0x1d,0xf8,0x07,
+ 0xef,0x7a,0xd7,0x9e,0xf8,0x13,0xc7,0xb6,0x5e,0x0a,0xbd,0x86,0xf2,0x3b,0x47,0x9d,
+ 0x84,0x06,0x27,0xdd,0x2e,0x03,0xb6,0x54,0x92,0x32,0xa7,0x1d,0x3a,0x7b,0xd7,0x65,
+ 0xae,0x7c,0x6d,0xb6,0xf1,0x3b,0xe9,0xc8,0xba,0x53,0xac,0xb6,0xf7,0x09,0x3a,0x05,
+ 0x60,0xc5,0x88,0x18,0xc0,0x01,0x07,0x5c,0xfb,0xfd,0x2b,0xae,0x51,0x7c,0xf6,0x8c,
+ 0x55,0xbc,0xfd,0x08,0x8d,0xb9,0x2f,0x26,0xee,0x67,0xe9,0x9f,0x15,0xf5,0xdb,0x7d,
+ 0x67,0xcd,0x1a,0x5f,0xda,0x25,0x90,0xfc,0xf6,0xc6,0x45,0x21,0xb2,0x30,0x30,0xbd,
+ 0x17,0xb7,0x41,0xfc,0xeb,0xaf,0xba,0xf1,0xcf,0x8c,0x04,0x4e,0xef,0xe0,0x99,0xa1,
+ 0x8c,0x75,0x60,0xab,0xeb,0xfe,0xed,0x79,0x94,0x9a,0xf5,0x9c,0x97,0x91,0xfd,0x9b,
+ 0x49,0x78,0xa6,0x8d,0xb2,0xe3,0x6b,0x39,0x6c,0x77,0x20,0x8e,0x0f,0x5c,0x9e,0x9e,
+ 0xc2,0xbd,0x03,0x51,0xf8,0xaf,0x77,0x2d,0xb5,0xcf,0x9b,0xe1,0x4b,0xc4,0x82,0x44,
+ 0x20,0xb1,0x87,0x68,0x19,0xee,0x4f,0x97,0xfe,0x15,0xcb,0x8a,0xa5,0x0e,0x68,0xca,
+ 0x9c,0x13,0x7f,0xd6,0xc6,0x94,0x27,0x24,0x9a,0x9c,0x8d,0x9d,0x43,0xc7,0x7e,0x35,
+ 0xfb,0x22,0xb4,0xbe,0x0f,0x9e,0x05,0x23,0x01,0x81,0xc6,0x7f,0x21,0x58,0x9e,0x21,
+ 0xf8,0x9d,0xae,0xdb,0x59,0xca,0xfa,0x97,0x86,0xae,0x6d,0xe1,0xce,0x1e,0x41,0x3c,
+ 0x8a,0x17,0xea,0x47,0x4a,0xdb,0xba,0xf8,0xa3,0x2d,0xfd,0xaa,0x42,0xbe,0x00,0xd5,
+ 0x90,0x81,0x91,0xf3,0x1e,0x9f,0xf7,0xec,0x55,0x2d,0x6f,0xe2,0x63,0xc9,0x6c,0x23,
+ 0x8f,0xc2,0xb7,0xb0,0x4b,0x36,0x54,0xb5,0xce,0x76,0x30,0xee,0x31,0xc0,0xae,0x28,
+ 0x42,0x5c,0xc9,0x3a,0x6a,0xde,0xbf,0xf0,0x4d,0xdc,0xd5,0xbe,0x27,0xf7,0x1e,0x73,
+ 0x7d,0xf1,0x2c,0xea,0x97,0x27,0xed,0x56,0x82,0xe0,0x27,0x24,0x3b,0x7c,0xd8,0xff,
+ 0x00,0x7c,0x00,0x4d,0x54,0x5f,0x17,0x45,0x32,0x79,0x7b,0x24,0x28,0x3e,0xe0,0x77,
+ 0x0d,0xb4,0x7a,0x76,0xe3,0x3c,0xd7,0x61,0x69,0xe0,0xbd,0x4b,0xe2,0x15,0xf4,0xd6,
+ 0x7a,0x37,0x84,0xb1,0xa9,0x79,0x66,0x46,0x11,0x34,0x51,0x80,0x3f,0xbd,0xcb,0x00,
+ 0x07,0x23,0xa5,0x4f,0xff,0x00,0x0c,0xbd,0xf1,0x08,0x94,0x29,0xa0,0x2a,0x92,0xb8,
+ 0x60,0xd7,0xf6,0xfd,0x73,0xdb,0xf7,0x95,0xec,0x53,0xa5,0x16,0xaf,0x14,0x79,0xf5,
+ 0x2a,0xf2,0xbb,0x33,0x98,0xb5,0xd4,0xe4,0x7b,0x56,0x88,0x5a,0x99,0x23,0xc0,0x21,
+ 0xb6,0x2e,0x41,0xfc,0xe9,0x25,0x06,0x55,0x02,0x38,0x65,0x61,0xdc,0x6c,0xe7,0xdf,
+ 0x80,0x4d,0x7a,0xf7,0xfc,0x32,0x2f,0x8b,0xed,0xb4,0x24,0xd5,0x2c,0x6e,0xec,0x57,
+ 0x52,0xf2,0x95,0xdf,0x45,0x2e,0x72,0x4e,0x39,0x51,0x26,0x76,0xee,0x1f,0x5c,0x1f,
+ 0x5a,0xd6,0xf8,0x6b,0xf0,0x7b,0xc2,0x5e,0x38,0xb5,0x6b,0x39,0x3c,0x43,0xa8,0xe9,
+ 0x7e,0x2b,0x87,0x31,0xdd,0x69,0x97,0xb0,0x24,0x6d,0x6b,0x28,0x18,0x1b,0x90,0x92,
+ 0xce,0x99,0x23,0xe6,0x18,0xe0,0xf3,0x82,0x71,0x5a,0xfb,0x26,0x8c,0x7d,0xb2,0x7b,
+ 0x1e,0x1a,0x03,0xc7,0x22,0xb6,0xd6,0x89,0x76,0x80,0xae,0x54,0x82,0x0f,0xd4,0x8a,
+ 0xde,0xf0,0xc6,0xbd,0x7b,0xa1,0x4e,0xd2,0xe9,0xba,0xc6,0xa3,0xa5,0x49,0x30,0x30,
+ 0x4f,0x3d,0xa5,0xc3,0xc6,0xdb,0x09,0x1b,0x87,0xca,0x41,0x23,0xb9,0x19,0xe6,0xbd,
+ 0x43,0xc4,0x5f,0xb3,0x6f,0x88,0xb4,0xc7,0x68,0x1a,0x7b,0x29,0x99,0x1b,0x0c,0x77,
+ 0x15,0xc7,0xa7,0x51,0xce,0x7d,0xab,0x16,0xd7,0xe0,0xbf,0x88,0xf4,0xcb,0xa2,0xa5,
+ 0xad,0x19,0xd4,0xe4,0xc7,0x26,0xf6,0x56,0x1d,0x71,0xf7,0x08,0x3e,0xb9,0xcd,0x62,
+ 0xe9,0x39,0xab,0x25,0x71,0xca,0xaa,0x83,0x52,0x6e,0xc8,0xd2,0xf8,0x0d,0xe1,0x3f,
+ 0x09,0x9f,0x8d,0xfe,0x1f,0x6d,0x4b,0x5f,0x76,0xb4,0x86,0x75,0xbc,0x82,0xe1,0x37,
+ 0x42,0xb2,0x5d,0x2b,0x06,0x44,0x72,0xdd,0x01,0x23,0x24,0xe7,0x9c,0x63,0x3c,0xd6,
+ 0xd7,0xed,0x1f,0x34,0xf3,0x6b,0xfa,0xcc,0xd6,0xac,0x5c,0xdc,0x6a,0x8e,0xca,0xea,
+ 0x71,0xb8,0x01,0x9e,0x3f,0x2a,0xc5,0x4f,0x81,0x7e,0x26,0xbd,0x92,0x31,0x6b,0x04,
+ 0x2b,0x31,0x04,0xa9,0x59,0x0c,0x63,0x77,0xfb,0x24,0x80,0x33,0xc7,0xad,0x60,0x7c,
+ 0x46,0xf1,0x6d,0xfe,0xa9,0x75,0x3d,0xad,0xed,0xbb,0x5b,0x5f,0x5b,0x5c,0x83,0x38,
+ 0x76,0x26,0x41,0x28,0x52,0x1f,0x3e,0x87,0x3f,0x5a,0xf3,0xea,0x61,0x24,0xeb,0xaa,
+ 0x97,0xe9,0x63,0xb6,0x9e,0x22,0x2e,0x9b,0x89,0xe5,0xb6,0xb7,0xa0,0xea,0xf0,0x02,
+ 0xa1,0x64,0x46,0x8d,0xb7,0xf5,0x6c,0xaa,0x63,0xf1,0xaf,0x4b,0xd4,0xe7,0xb6,0xb5,
+ 0xf8,0x5e,0x16,0xe0,0xa4,0x63,0x33,0xc6,0x19,0xf8,0x1b,0x8f,0x95,0x8e,0xbe,0xf5,
+ 0xc1,0xda,0x68,0x33,0xdf,0x78,0x9e,0xd6,0xd6,0xc6,0xdc,0xcb,0x73,0x2c,0xa8,0x44,
+ 0x68,0x3e,0x62,0x00,0x20,0xf1,0xfa,0xfe,0x15,0xd7,0xf8,0xdd,0xcd,0xbf,0x80,0x74,
+ 0xa4,0xb9,0x40,0xe9,0x34,0xd3,0x4e,0xaa,0x83,0x77,0xc9,0xca,0x8c,0x81,0xdf,0x28,
+ 0x7f,0x2a,0xdd,0xa6,0xd1,0x31,0xb5,0xce,0x13,0xc1,0x29,0x61,0x17,0x88,0x2c,0xe3,
+ 0x8e,0x48,0x18,0xfd,0xa5,0x01,0x11,0x13,0x83,0xfb,0xcf,0x53,0x9e,0xd8,0xff,0x00,
+ 0xf5,0xd7,0xde,0xff,0x00,0xb3,0xc6,0x92,0x9a,0x94,0xff,0x00,0x0c,0xe3,0x2b,0xfe,
+ 0xac,0xea,0xf7,0x4c,0x7b,0x00,0x97,0x17,0x0c,0x09,0xfc,0x54,0x57,0xc0,0x5e,0x14,
+ 0xb5,0xb5,0x6f,0x17,0x5b,0xcf,0x04,0x97,0x50,0x83,0x7b,0x1b,0xac,0x41,0x08,0x8f,
+ 0x1b,0x81,0x39,0xe3,0xd8,0xfe,0x55,0xfa,0x15,0xfb,0x31,0x5f,0x48,0xda,0xff,0x00,
+ 0xc3,0x7d,0x3e,0x07,0x11,0xb4,0xba,0x4e,0xa8,0x19,0xb6,0xee,0xc0,0x7b,0x8b,0xb2,
+ 0x0f,0xfe,0x3a,0x2b,0x87,0x1c,0xbf,0x77,0x17,0xeb,0xff,0x00,0xa4,0xbf,0xf3,0x3a,
+ 0xb0,0xad,0x73,0x4f,0xe5,0xff,0x00,0xa5,0x23,0xf4,0x76,0xc1,0x36,0x5a,0xc2,0x9b,
+ 0x70,0xab,0x1a,0x80,0x7f,0xe0,0x22,0xbc,0x2f,0xe0,0xe5,0xdb,0xea,0xff,0x00,0xb4,
+ 0x3f,0xc5,0x2b,0xa6,0x95,0xa6,0x5b,0x64,0xb5,0xb7,0x8f,0x73,0x96,0x08,0xa5,0xa4,
+ 0x3b,0x40,0xed,0xca,0xd7,0xb4,0xc1,0x63,0x7f,0x04,0x4b,0x8d,0x45,0x65,0x21,0x40,
+ 0xfd,0xed,0xb8,0x3f,0xc8,0x8a,0xf9,0x87,0xf6,0x5a,0xd6,0xee,0x9b,0xe2,0x0f,0xc6,
+ 0x3b,0xf2,0xd1,0x31,0x6d,0x52,0xde,0x1c,0x98,0x98,0xe7,0x62,0x48,0x78,0x2a,0x78,
+ 0xe5,0xfd,0x2b,0x9d,0x3b,0x42,0xed,0x6d,0x6e,0xc6,0x09,0x5d,0xe8,0xcf,0xab,0xd5,
+ 0xfe,0x79,0x3b,0x60,0x81,0xfa,0x57,0x2f,0xf1,0x04,0x96,0xd1,0xa3,0x5e,0xa7,0xcd,
+ 0x56,0x00,0x9e,0xe3,0x9a,0xb3,0x06,0xa1,0xaa,0x5d,0x43,0xbe,0xde,0xde,0xd6,0x47,
+ 0x62,0x5b,0x6b,0x4a,0xe8,0x08,0x18,0x1c,0x12,0x87,0x3c,0xe6,0xbc,0xef,0xe3,0x4f,
+ 0x8b,0x35,0x0f,0x0b,0x78,0x1f,0x52,0xd7,0xb5,0x6b,0x78,0xb4,0xeb,0x1d,0x2a,0x19,
+ 0x6e,0x5e,0x61,0x32,0x32,0x96,0xf2,0xd9,0x51,0x47,0x39,0x24,0xbb,0x20,0x03,0x6f,
+ 0x53,0x5e,0x6e,0x26,0xb4,0xe5,0x07,0x4d,0x45,0xeb,0xfe,0x67,0x4e,0x1e,0x9a,0xf6,
+ 0x8b,0x99,0xa4,0x7c,0x7b,0xfb,0x5a,0x7c,0x5f,0x97,0x4b,0xd7,0xf5,0xaf,0x0e,0xc0,
+ 0xab,0xf6,0xaf,0xb5,0x4a,0x9e,0x6e,0x46,0x56,0x3f,0x30,0x9c,0x75,0xef,0x93,0xf9,
+ 0x57,0x80,0x6b,0xff,0x00,0x09,0x74,0x4b,0xbf,0x10,0xf8,0x2e,0xe3,0x4f,0xd7,0xdf,
+ 0xc4,0x5a,0xae,0xad,0x2c,0x37,0x16,0xab,0x0d,0xdc,0x6a,0xd6,0x50,0x97,0x38,0x67,
+ 0x51,0xbb,0x6b,0x6e,0x19,0x2b,0x8c,0x8c,0x1c,0xd7,0x97,0x78,0xef,0xe2,0x06,0xad,
+ 0xe3,0x9f,0x16,0xea,0xda,0x9d,0xdb,0xb5,0xcd,0xfd,0xdb,0x3d,0xc3,0x14,0x04,0xf5,
+ 0xc6,0x71,0x8f,0xa9,0xad,0xef,0xd9,0x1d,0x85,0x87,0xc4,0x8b,0x7d,0x52,0xf9,0x66,
+ 0x85,0xad,0xb3,0x23,0x19,0x70,0x3e,0x57,0x1d,0xb7,0x63,0x00,0xef,0x62,0x4e,0x78,
+ 0xaf,0x42,0x18,0x5a,0x94,0x70,0xeb,0x97,0xe3,0x4b,0x5b,0x75,0xeb,0x63,0xda,0xaf,
+ 0x8f,0xa3,0x5a,0xb3,0xa5,0x15,0xfb,0xa5,0xb5,0xef,0xba,0x49,0x39,0x79,0x5e,0xd7,
+ 0xf2,0x3e,0xda,0xf8,0x9f,0x32,0xcb,0xe3,0x99,0xed,0x51,0x64,0x57,0xb4,0xb4,0xb3,
+ 0xb7,0x91,0xdd,0xf7,0x19,0x58,0x40,0x84,0xb7,0x41,0x82,0x77,0x7f,0x5a,0xe5,0x7c,
+ 0x5b,0x6b,0xe0,0x88,0x86,0x8e,0x2f,0x52,0xfb,0xed,0xc6,0xc8,0x9b,0x8d,0x8a,0x0a,
+ 0xee,0x33,0x4b,0xd3,0xdb,0x1b,0x7f,0x5a,0xd7,0xf8,0x95,0xa9,0x34,0x7f,0x13,0xbc,
+ 0x40,0x23,0xb7,0x9a,0x62,0x5e,0xdc,0x86,0x8d,0x43,0x2e,0x3e,0xcf,0x17,0x19,0x07,
+ 0xf9,0x7e,0xb5,0xe7,0x1e,0x37,0x73,0xa8,0xea,0x36,0x92,0xb5,0x9d,0xce,0xef,0xb3,
+ 0x28,0x38,0x38,0xe7,0x73,0x76,0xc7,0x15,0x86,0x15,0xca,0x35,0x2f,0x6e,0x8b,0xf4,
+ 0x3c,0x9a,0x89,0x4a,0x3b,0xf5,0x3e,0x1a,0x85,0xaf,0xd3,0x43,0x6b,0x64,0x2e,0x20,
+ 0x60,0x18,0xc6,0x0e,0x37,0x10,0x3b,0xfe,0x55,0x42,0xd2,0xd6,0xee,0x18,0x65,0x32,
+ 0xa6,0xc2,0x5c,0x15,0x56,0x23,0xa5,0x76,0x36,0x7f,0xd9,0xb1,0xdb,0x16,0xf3,0x42,
+ 0x38,0xcf,0xca,0xca,0xde,0xd8,0xfe,0x7f,0xa5,0x54,0x92,0x7b,0x29,0x6e,0x14,0x4b,
+ 0x28,0xd8,0x0f,0x38,0x46,0xe6,0xbe,0xc9,0xc1,0x9e,0x17,0x3d,0xdd,0x8c,0x18,0x8d,
+ 0xe4,0x52,0xac,0xa8,0xeb,0x1c,0xf9,0xce,0xf0,0xc3,0x23,0x9f,0x5a,0xbd,0xa0,0x68,
+ 0xee,0xfa,0x95,0x98,0x16,0xf0,0x5d,0xc8,0x24,0x5f,0xdc,0x4a,0x49,0x57,0x6e,0x83,
+ 0x38,0xeb,0xcf,0x38,0xad,0x2b,0x8d,0x5f,0x4d,0x52,0x56,0x14,0x1b,0xb2,0x7f,0x78,
+ 0xd1,0x13,0x8f,0xa6,0x45,0x3e,0x2d,0x72,0xcd,0x10,0x09,0x2e,0x09,0x0a,0x38,0x0b,
+ 0x19,0xe0,0xfa,0xf4,0xeb,0x50,0xe3,0x29,0x2b,0xb4,0x6c,0xe4,0xa2,0xed,0x13,0xac,
+ 0x5d,0x52,0x18,0x34,0x9d,0x6b,0x48,0xb6,0x92,0xde,0xd6,0x6b,0x87,0x5f,0x9a,0x24,
+ 0x08,0x87,0x18,0x07,0x90,0x38,0xe4,0x37,0x41,0xe9,0xd7,0xad,0x62,0xdf,0xe8,0x96,
+ 0xf6,0xda,0x24,0x2e,0x75,0x05,0x9e,0xf0,0xb3,0x0c,0x45,0xe6,0x3b,0x01,0xc7,0x04,
+ 0x6d,0xe3,0x3c,0x9c,0xe4,0xfe,0x15,0x4a,0x3f,0x13,0x59,0x5b,0xc7,0xfb,0xbd,0xc1,
+ 0x57,0x81,0x85,0xff,0x00,0x1a,0x43,0xe3,0x3b,0x55,0x3c,0x09,0x3f,0xef,0x91,0xfd,
+ 0x4d,0x43,0xa7,0xa6,0x80,0xa5,0xa9,0xbc,0x74,0xbb,0x49,0x6c,0xec,0x2f,0x16,0xfd,
+ 0xbe,0xd2,0x9b,0x14,0xc0,0x61,0x2a,0x46,0x48,0x52,0x07,0x7e,0x95,0x97,0x24,0x16,
+ 0xa2,0x4b,0x4b,0x56,0xbb,0x65,0x86,0xe6,0x55,0x6b,0x89,0x01,0x2b,0xf2,0xf3,0x95,
+ 0xce,0x3d,0xf3,0xf9,0x55,0x36,0xf1,0xcd,0xba,0xf4,0x2e,0x0f,0x6f,0xb9,0xd7,0xf3,
+ 0xaa,0x17,0xbe,0x25,0xb8,0x99,0x0a,0x22,0x7d,0x9e,0x33,0xf3,0x07,0x7c,0x16,0x3f,
+ 0x4c,0x1a,0x95,0x49,0xde,0xef,0x62,0x9c,0xd5,0xb4,0x3a,0xab,0xdb,0x2f,0x0d,0x5b,
+ 0x5b,0xec,0x8e,0x60,0xa8,0x32,0x49,0x69,0x98,0xe4,0xfe,0x03,0x9f,0xff,0x00,0x5d,
+ 0x60,0x69,0x9e,0x2a,0x5d,0x25,0xbc,0xcd,0x31,0x4c,0x57,0x00,0x90,0xf7,0x93,0x93,
+ 0xb7,0x19,0x38,0xc2,0x7f,0xfa,0xeb,0x91,0xbf,0xd5,0xe3,0x8d,0xc9,0x77,0x69,0x65,
+ 0xff,0x00,0x6c,0xe4,0xff,0x00,0xf5,0xa9,0x2d,0x75,0x6b,0x41,0xf3,0xdc,0x6f,0x96,
+ 0x4f,0x42,0x57,0x6a,0xfd,0x06,0x7f,0x5f,0xe5,0x4d,0x42,0x29,0x5b,0x71,0xf3,0x49,
+ 0xbb,0xec,0x75,0x09,0xa6,0xdc,0xf8,0xa6,0xfe,0x39,0xaf,0xe5,0x9e,0x54,0xb8,0x62,
+ 0x1a,0xee,0xeb,0x38,0x3c,0x12,0x76,0x22,0x8c,0x01,0xc7,0x60,0x6b,0x7a,0x3f,0x0b,
+ 0xf8,0x74,0x0f,0x27,0xc9,0x4f,0x31,0x5b,0x61,0x92,0x77,0x71,0xf8,0xfc,0xbc,0x63,
+ 0xf0,0xae,0x10,0x78,0x8e,0xd5,0x17,0x0a,0x84,0xff,0x00,0xbd,0x20,0xa8,0xc7,0x89,
+ 0x21,0xc0,0x07,0x70,0xf5,0xc3,0x8a,0x39,0x5e,0xe8,0x77,0xb7,0x43,0xa8,0xd6,0x2c,
+ 0x2c,0x74,0x0b,0xd1,0xf6,0x18,0xd2,0xe2,0x43,0x10,0x21,0x50,0x6f,0x55,0x25,0x88,
+ 0x23,0x92,0x79,0xc0,0xcf,0xe3,0x4b,0xa1,0x68,0x60,0xeb,0xf6,0x53,0xa8,0x75,0x91,
+ 0x24,0x59,0x24,0x6c,0xe3,0x81,0x82,0x47,0x4c,0x70,0x05,0x73,0x51,0x78,0xa6,0x08,
+ 0x07,0xc8,0xad,0xc9,0xe4,0x33,0x03,0xfd,0x2a,0xed,0xb7,0xc4,0x21,0x6b,0xbc,0xa4,
+ 0x08,0x59,0x94,0xa9,0x25,0xbb,0x1e,0x0f,0x6f,0x7a,0xce,0xa4,0x65,0x28,0x4a,0x29,
+ 0x6a,0xc7,0x09,0x28,0xc9,0x49,0xec,0x8d,0x3b,0x3b,0x37,0xf3,0xe4,0xba,0x49,0x1d,
+ 0x1e,0x62,0xc7,0xcc,0x69,0x39,0x00,0x93,0x91,0x80,0x39,0xcf,0xbd,0x6f,0xeb,0xda,
+ 0xcc,0x77,0xf6,0x12,0xdb,0xf9,0x97,0x52,0x06,0x51,0xf7,0x9f,0x23,0xae,0x7d,0x2b,
+ 0x87,0x5f,0x1d,0x08,0xd4,0x08,0xed,0xe2,0xe3,0xb6,0xe6,0xa3,0xfe,0x16,0x03,0xff,
+ 0x00,0xcf,0xbc,0x23,0xdb,0x0d,0xfe,0x34,0x9d,0x36,0xda,0xd3,0x61,0xdc,0xdf,0xd2,
+ 0x35,0x69,0xa0,0x67,0x53,0x98,0xbe,0x5c,0x02,0xbc,0x67,0xeb,0x5b,0x09,0x71,0x15,
+ 0xd4,0x58,0x9a,0x56,0x63,0x8c,0xe0,0x9e,0xf5,0xc3,0x1f,0x1e,0x49,0xb7,0x02,0xde,
+ 0x2f,0xfb,0xe4,0xff,0x00,0x8d,0x43,0xff,0x00,0x09,0xcc,0x84,0xf1,0x0a,0x03,0xec,
+ 0xbf,0xfd,0x7a,0xaf,0x67,0x77,0x72,0x53,0x3b,0x9b,0x0b,0xfb,0xad,0x13,0x52,0x82,
+ 0xf3,0x4e,0xb8,0x92,0xde,0x68,0xce,0x63,0x95,0x1c,0x87,0x53,0xf5,0x15,0xf5,0x37,
+ 0xc1,0xdf,0x8a,0x8f,0xf1,0x07,0x48,0x36,0xd7,0x8c,0x91,0xeb,0x96,0xa0,0x19,0x54,
+ 0x0c,0x09,0x97,0xb3,0xa8,0xf5,0xf5,0x03,0xfa,0xd7,0xc3,0xdf,0xf0,0x99,0xcc,0xb9,
+ 0x38,0xeb,0xec,0x2a,0xff,0x00,0x87,0xbe,0x27,0xea,0xfe,0x17,0xd5,0x61,0xd4,0xb4,
+ 0xcb,0x96,0xb5,0xbc,0x8b,0x21,0x5c,0x00,0x47,0xd0,0x82,0x30,0x7f,0x1a,0xe9,0xa7,
+ 0x27,0x13,0x9e,0xa5,0x2e,0x7d,0x4f,0xd1,0x1d,0x7e,0x4d,0x71,0x74,0xf8,0xe4,0xd2,
+ 0x9a,0x36,0xb8,0x4c,0xe6,0x17,0x18,0xf3,0x06,0x7b,0x13,0xd0,0xd7,0x87,0xfc,0x4f,
+ 0xf8,0x49,0xe2,0xcf,0x19,0xdd,0x2f,0x88,0xed,0x04,0x3a,0x57,0x8a,0x2c,0xa3,0xdc,
+ 0x92,0x43,0x37,0x97,0x24,0xdb,0x7a,0x46,0x4a,0xf1,0x9e,0xb8,0x6c,0x8c,0x74,0x39,
+ 0x07,0x8f,0x12,0x9b,0xf6,0xb4,0xf8,0x8f,0x38,0x3f,0xf1,0x3c,0x54,0xf7,0x4b,0x48,
+ 0x07,0xfe,0xc9,0x59,0x3a,0x97,0xed,0x1b,0xe3,0xed,0x51,0x0a,0x4d,0xe2,0x2b,0x9d,
+ 0xa7,0xfe,0x79,0x85,0x43,0xf9,0xa8,0x15,0xac,0xaa,0x27,0xa3,0x30,0x8d,0x19,0x47,
+ 0x54,0x7b,0x3f,0x80,0x7f,0x68,0x4b,0x3f,0x16,0x88,0x3c,0x33,0xf1,0x25,0xae,0x34,
+ 0xfb,0xeb,0x59,0x3e,0xce,0x9a,0xc2,0x13,0x1b,0xc2,0xd9,0xc6,0xcb,0x84,0x1d,0xb3,
+ 0xfc,0x58,0xe3,0xd0,0x72,0x4f,0xd2,0xda,0x57,0xc2,0xb8,0x20,0xd2,0x73,0x6f,0x3c,
+ 0x4f,0x64,0x32,0xf0,0xdd,0x3d,0xd8,0x90,0x48,0x0e,0x0e,0x43,0x0c,0xe4,0x1c,0xe4,
+ 0x63,0x8e,0x4d,0x7e,0x5c,0xeb,0x1a,0xde,0xa5,0xa8,0xea,0x92,0x6a,0x73,0xdc,0xc9,
+ 0x77,0x74,0xff,0x00,0xeb,0x64,0x99,0xd9,0xda,0x41,0xdb,0x24,0x93,0x9c,0x0a,0xed,
+ 0x3c,0x2d,0xf1,0x77,0xc4,0x76,0x3a,0x3a,0xe9,0xfa,0x67,0x88,0x75,0x2b,0x2b,0x44,
+ 0x3b,0x85,0xac,0x37,0x2c,0xaa,0x8d,0xea,0x06,0x7a,0x57,0x33,0x6e,0x32,0xe6,0x8b,
+ 0xd4,0xe9,0x95,0x25,0x38,0xf2,0xcb,0x6e,0xc7,0xe8,0xcc,0x1f,0x0b,0xee,0x05,0xda,
+ 0xcc,0x97,0x71,0xc6,0xca,0x80,0xac,0x82,0xeb,0x68,0xdc,0x71,0xc8,0x18,0xf4,0xf5,
+ 0x1c,0xf1,0x5e,0x71,0xfb,0x42,0x7c,0x38,0xb4,0x93,0xfe,0x2a,0x3b,0x74,0x86,0x46,
+ 0x5f,0x2e,0x3d,0x47,0x69,0x04,0xc8,0x8a,0xca,0x44,0x9c,0x63,0x9c,0x0d,0x84,0x8f,
+ 0x51,0xd0,0x0a,0xf8,0xd2,0xe3,0xe2,0xaf,0x8c,0x5d,0x88,0x97,0xc4,0x7a,0x93,0xe0,
+ 0x90,0x33,0x76,0xe7,0x23,0xdb,0x9e,0x95,0x9f,0x71,0xe3,0x9d,0x72,0xfc,0x30,0xb8,
+ 0xd5,0x6f,0x27,0xdc,0x30,0xc1,0xe6,0x62,0x08,0xf7,0xe6,0xa3,0x91,0xde,0xf7,0x14,
+ 0x61,0x6b,0x79,0x1e,0xcd,0xe1,0x3d,0x0a,0x5b,0x7f,0x88,0x36,0x13,0xd8,0x09,0x1c,
+ 0xa4,0xc7,0x79,0x50,0x41,0x11,0xef,0xc1,0xcf,0xb6,0x0e,0x0f,0xd7,0xde,0xb1,0x3c,
+ 0x49,0x2c,0x52,0x78,0x73,0x46,0x43,0xb2,0x47,0x8f,0x68,0x97,0x76,0x48,0x51,0xfb,
+ 0xce,0xa0,0x76,0x3f,0x28,0xcd,0x79,0xa6,0x9f,0xac,0xdd,0x89,0xc3,0x8b,0xb9,0x91,
+ 0xdb,0x20,0x91,0x23,0x02,0x47,0xbf,0x35,0xdc,0x78,0x48,0x4d,0x78,0xda,0x8c,0x06,
+ 0x79,0x9a,0x33,0x69,0x33,0x6c,0x32,0x31,0x07,0x11,0x31,0x03,0x19,0xf6,0xac,0x9b,
+ 0xe4,0xd4,0xe8,0xb7,0x36,0x87,0x2f,0xf6,0x71,0x6b,0xaa,0x45,0x7a,0x97,0x08,0xaa,
+ 0xae,0x87,0x62,0xa1,0xc1,0x23,0xae,0x3e,0xb9,0xfd,0x6b,0xef,0x3f,0xd8,0xda,0xee,
+ 0x2b,0xff,0x00,0x8a,0x3e,0x06,0x57,0x52,0x52,0x0d,0x22,0x73,0x8f,0x4c,0x86,0x6f,
+ 0xe7,0x35,0x7c,0x05,0x7e,0xe2,0x06,0x28,0x24,0x2a,0x33,0xc8,0x07,0x03,0xf9,0xd7,
+ 0xe8,0x07,0xec,0x2b,0xe0,0xbd,0x44,0x6a,0xfa,0x47,0x89,0xd9,0xa3,0x6d,0x36,0xcb,
+ 0x4c,0x58,0x64,0x79,0x1f,0x0d,0xe6,0x48,0xd6,0xf8,0x00,0x1f,0x6c,0x8f,0xca,0xb8,
+ 0x73,0x09,0x2f,0x63,0x29,0x49,0xff,0x00,0xc3,0xb3,0x6c,0x2c,0x39,0x65,0xcb,0x05,
+ 0xb9,0xfa,0x51,0xa9,0x5e,0x8b,0x3d,0x32,0xe6,0x7f,0xf9,0xe5,0x13,0x39,0xc7,0xb0,
+ 0x27,0xfa,0x57,0xca,0xdf,0xb0,0x7f,0x8b,0x8c,0xbe,0x13,0xf1,0xfe,0xab,0x35,0xb4,
+ 0xd7,0x31,0x5c,0x78,0x96,0x60,0x25,0x86,0x2c,0x9f,0x96,0x28,0xfe,0xf7,0xfd,0xf5,
+ 0xfc,0xeb,0xda,0x3c,0x7b,0xe2,0xb2,0xbe,0x0b,0xf1,0x09,0x86,0x41,0x01,0x16,0x37,
+ 0x18,0xdf,0xd7,0x3e,0x5b,0x01,0x8f,0xc7,0x15,0xe2,0x1f,0xb0,0x83,0x27,0x85,0xbe,
+ 0x0c,0x6a,0x50,0xac,0x8b,0x2c,0x73,0xf8,0x82,0xf2,0x51,0x33,0xae,0xd2,0xc3,0xe4,
+ 0x5c,0xf7,0x1f,0xc1,0xeb,0x5e,0x1d,0x2c,0x6b,0x85,0x19,0x55,0xf3,0x4b,0xf3,0x36,
+ 0x58,0x79,0xdf,0x95,0xa3,0xea,0x3b,0x2d,0x66,0x4d,0x46,0xf2,0xee,0x47,0xb7,0xfb,
+ 0x3d,0xbc,0x6a,0x0c,0x7b,0xf8,0x66,0x04,0x64,0x93,0xf9,0x57,0xcd,0x7f,0xf0,0x50,
+ 0x9d,0x49,0x13,0xf6,0x6a,0xd6,0x80,0x98,0xaf,0x99,0x77,0x69,0x19,0x55,0x38,0xdd,
+ 0x99,0x41,0x39,0x03,0xe8,0x3a,0xfa,0x7b,0x57,0xbf,0x5c,0x78,0x94,0x14,0x72,0xbb,
+ 0x4a,0x96,0xdb,0x8c,0x73,0xce,0x6b,0xc2,0xff,0x00,0x68,0x69,0x34,0x8f,0x11,0x7c,
+ 0x3e,0xd7,0x34,0xdd,0x7a,0x18,0xef,0x6c,0x4a,0xac,0xd1,0xc2,0xcc,0xeb,0xf3,0xa1,
+ 0x05,0x0e,0x54,0x82,0x48,0x61,0xd3,0xb9,0xec,0x6b,0xcf,0xfa,0xc3,0xaf,0x88,0x8c,
+ 0xda,0xea,0x8e,0x98,0x61,0xa5,0x66,0xde,0x87,0xc2,0x1f,0xb2,0x4e,0xb3,0xa6,0x68,
+ 0x5a,0x37,0x8b,0xa7,0x92,0xd6,0xda,0x7b,0xcf,0xb5,0x5a,0x46,0x6e,0xef,0xa1,0x67,
+ 0x82,0x18,0x7f,0x79,0xbb,0x73,0xf4,0x51,0x9d,0xd9,0xe8,0x48,0xfc,0x31,0x91,0x77,
+ 0xe0,0x9b,0x3d,0x67,0xe2,0xc7,0x8b,0x0a,0xa4,0x11,0x38,0x11,0x5d,0xdb,0x4f,0x1c,
+ 0x26,0x38,0xf9,0x54,0x60,0xc0,0x77,0x56,0xc7,0x27,0xf8,0xb2,0x4e,0x4e,0x73,0x5d,
+ 0xd7,0xc3,0xcb,0xfd,0x03,0xe1,0xb7,0x84,0xf5,0x88,0xae,0xa6,0x10,0x47,0xab,0xdd,
+ 0xcd,0x73,0x35,0xba,0xa3,0x0f,0x2a,0x3f,0xb9,0x1a,0xbb,0x63,0x6a,0x0e,0x0f,0x07,
+ 0x1f,0x7b,0x8a,0xc7,0xf8,0x6d,0x73,0xe0,0x43,0xe2,0x8b,0xed,0x37,0x4c,0x4d,0x4a,
+ 0xfb,0xfb,0x46,0x03,0x93,0x75,0x29,0x8a,0x38,0x23,0x0c,0x4b,0x6c,0xc0,0xdc,0x40,
+ 0x1f,0x28,0xe4,0x0f,0x9f,0xaf,0x19,0x1e,0x86,0x17,0x32,0x8d,0x3c,0x7d,0x57,0x38,
+ 0xb7,0x15,0xa6,0x8b,0xb1,0xf6,0x38,0xde,0x1d,0x9a,0xc9,0x68,0xd6,0x8c,0x92,0x93,
+ 0xd5,0xdd,0xdb,0x47,0xaa,0xb7,0x9d,0xba,0x75,0x3b,0xff,0x00,0x0e,0xcd,0x14,0x73,
+ 0x04,0x87,0x71,0x4d,0x91,0x2a,0x6f,0x6e,0x70,0xb1,0x46,0xa7,0xf0,0xc8,0x38,0xaa,
+ 0x9f,0x10,0xe0,0x07,0xc4,0x40,0x79,0x6f,0xc5,0xbc,0x3d,0x06,0x3a,0xa0,0x3f,0xd6,
+ 0x9a,0xd1,0x43,0xa0,0x78,0xc3,0x53,0xd2,0xed,0x65,0x92,0x5b,0x4b,0x2b,0xc9,0x2d,
+ 0xad,0xde,0x66,0xcb,0xed,0x53,0xea,0x00,0xcd,0x7d,0x4b,0xfb,0x34,0x7c,0x3e,0xd0,
+ 0x7e,0x27,0x78,0x3b,0x59,0xd4,0xf5,0xcd,0x32,0xd2,0xfe,0xea,0xdf,0x57,0x92,0xc6,
+ 0x39,0x6e,0x20,0x59,0x18,0x47,0x1c,0x10,0x85,0x19,0x3d,0xb9,0x3f,0x9d,0x74,0x35,
+ 0xcd,0x5e,0x72,0x87,0x5f,0xf3,0x3e,0x26,0x5e,0xed,0x28,0xa9,0x1f,0x87,0xed,0x7f,
+ 0x3b,0x0f,0x9a,0x57,0x3f,0x52,0x6a,0x16,0xb8,0x90,0xb7,0xdf,0x38,0xfa,0xd3,0x58,
+ 0xfb,0xf4,0xa6,0xe7,0x3f,0x5a,0xfb,0x63,0xc4,0xd0,0x79,0x99,0xb1,0xd4,0xfe,0x26,
+ 0x90,0xc8,0x48,0xe4,0x91,0xed,0x51,0xb1,0xc0,0xa6,0x17,0xc0,0x20,0x73,0x59,0xe8,
+ 0xca,0xd4,0x9c,0xc8,0x13,0x06,0x49,0x96,0x3c,0xf2,0x03,0x12,0x4f,0xe4,0x01,0xa9,
+ 0x2d,0xec,0xee,0xae,0xa4,0xc2,0x8d,0xb0,0xf7,0x94,0xf2,0x3f,0x0a,0xab,0xa7,0xb8,
+ 0xb7,0xbc,0xf3,0x65,0x51,0x22,0x9c,0xe1,0x9b,0xa6,0x6b,0x57,0x50,0xf1,0x09,0x7b,
+ 0x7f,0x2a,0x30,0x33,0x9e,0xbe,0x95,0x12,0x9f,0x44,0x68,0xa3,0xdc,0xb7,0x69,0xf6,
+ 0x3d,0x3a,0x1f,0x33,0x05,0xa6,0x52,0x43,0x49,0x2f,0x24,0x11,0xe8,0x3a,0x0a,0xa5,
+ 0x7b,0xae,0x49,0x70,0xc4,0x45,0x90,0x0f,0xf1,0xb7,0x53,0x59,0x0d,0x23,0x4c,0xdb,
+ 0x98,0xe4,0xfa,0xd4,0xb1,0xae,0xf0,0x2a,0x77,0xdc,0x36,0xd8,0x72,0x92,0x49,0x66,
+ 0x39,0x6e,0xb9,0x34,0xe0,0xc7,0xa7,0x5a,0x57,0x4d,0x84,0xf2,0x38,0xc5,0x37,0x39,
+ 0xcf,0x23,0x14,0x5d,0x58,0x4a,0xf7,0x1f,0x82,0x4f,0x00,0xf1,0xd7,0x34,0x67,0x07,
+ 0xa5,0x22,0x6f,0x91,0xb0,0x39,0xfa,0x55,0xc8,0xb4,0xbb,0xe9,0x80,0xf2,0xac,0xee,
+ 0x24,0xcf,0xf7,0x22,0x66,0xfe,0x42,0xa1,0xd4,0x84,0x77,0x66,0xca,0x13,0x96,0xc8,
+ 0xaa,0x0e,0x7a,0x0f,0xd2,0x80,0x6b,0x5a,0x2f,0x08,0x6b,0xd7,0x07,0xf7,0x5a,0x2e,
+ 0xa2,0xde,0xeb,0x6a,0xe7,0xfa,0x55,0xb8,0x7e,0x1c,0xf8,0xa6,0x62,0x36,0xe8,0x17,
+ 0xd9,0x3c,0x8d,0xd0,0x95,0xfe,0x78,0xae,0x69,0x62,0xf0,0xf0,0xf8,0xaa,0x25,0xf3,
+ 0x47,0x44,0x70,0x98,0x89,0x7c,0x34,0xdb,0xf9,0x33,0x05,0x5b,0x14,0x33,0x31,0xe7,
+ 0xf0,0xae,0xba,0x0f,0x84,0x9e,0x2f,0x9b,0x1f,0xf1,0x24,0x95,0x7d,0x9e,0x48,0xd7,
+ 0xf9,0xb5,0x5f,0x4f,0x82,0x3e,0x2d,0x93,0x6e,0xeb,0x08,0xa1,0x2d,0xd3,0x7d,0xcc,
+ 0x7f,0xd0,0x9a,0xe6,0x96,0x67,0x82,0x8e,0xf5,0xa3,0xf7,0xa3,0x68,0xe5,0xb8,0xc9,
+ 0x6d,0x46,0x5f,0x73,0x38,0x3d,0xc4,0x75,0x34,0x06,0xf6,0xc7,0x6e,0x2b,0xd0,0x6d,
+ 0x7e,0x07,0xeb,0xf7,0x77,0x32,0x5b,0x2d,0xd6,0x97,0xf6,0x84,0xe5,0xe3,0xfb,0x56,
+ 0xe7,0x5f,0xa8,0x55,0x38,0xad,0x1b,0x5f,0xd9,0xff,0x00,0x59,0x9a,0xe6,0x4b,0x7f,
+ 0xed,0x2d,0x3b,0xcf,0x40,0x19,0xe2,0x47,0x76,0x65,0x07,0xa1,0x23,0x6f,0x19,0xc5,
+ 0x65,0x3c,0xe3,0x01,0x0d,0xea,0xa3,0x78,0x64,0xf8,0xe9,0xea,0xa9,0x33,0xcc,0x33,
+ 0x9e,0x45,0x38,0x73,0xce,0x33,0x5e,0xbd,0x6b,0xfb,0x39,0x6a,0x12,0x96,0x07,0x59,
+ 0x80,0x32,0x9c,0x30,0x5b,0x76,0x38,0x3f,0x89,0x15,0xa5,0x0f,0xec,0xd1,0x36,0x33,
+ 0x26,0xb4,0xc4,0x7f,0xb1,0x69,0xff,0x00,0xd9,0xd7,0x24,0xf8,0x8b,0x2c,0xa7,0xa3,
+ 0xab,0xf8,0x3f,0xf2,0x3a,0xa1,0xc3,0xf9,0x8c,0xf6,0xa7,0xf8,0xaf,0xf3,0x3c,0x3d,
+ 0x47,0xb6,0x29,0xea,0x3d,0xbf,0x3a,0xf7,0xc8,0x3f,0x66,0x8b,0x61,0xfe,0xb7,0x53,
+ 0xbc,0x6f,0xf7,0x63,0x55,0xff,0x00,0x1a,0xb3,0xff,0x00,0x0c,0xe9,0xa4,0xc1,0x16,
+ 0xe3,0x36,0xa1,0x70,0x7f,0xba,0x65,0x45,0xcf,0xfe,0x39,0x5c,0xcf,0x8a,0x72,0xcb,
+ 0xda,0x33,0x6f,0xe5,0xfe,0x67,0x42,0xe1,0xac,0xc6,0xd7,0x71,0x4b,0xe7,0xfe,0x47,
+ 0xcf,0x2e,0x37,0x1e,0x98,0xaa,0x92,0x5b,0xbc,0x32,0x2c,0xd6,0xc4,0xc5,0x30,0x39,
+ 0xe9,0xc1,0xaf,0xa8,0x20,0xfd,0x9f,0x3c,0x3c,0xab,0x96,0x82,0xe2,0x43,0xe8,0xf7,
+ 0x07,0xfa,0x62,0xad,0x47,0xf0,0x23,0xc3,0xa8,0x46,0x34,0xd2,0x7f,0xde,0x96,0x43,
+ 0xff,0x00,0xb3,0x57,0x2c,0xb8,0xb7,0x00,0xb4,0x4a,0x4f,0xe4,0xbf,0xcc,0xe9,0x8f,
+ 0x0a,0xe3,0x9e,0xf2,0x8f,0xde,0xff,0x00,0xc8,0xf9,0xca,0xd2,0xf9,0x6e,0xac,0xe3,
+ 0x4b,0x98,0xf6,0xc8,0x0e,0x4b,0x53,0x14,0x91,0xdf,0x03,0x3d,0x6b,0xea,0x2b,0x4f,
+ 0x83,0x1e,0x1e,0xb7,0x23,0x1a,0x2c,0x0d,0x8f,0xef,0xc7,0xbb,0xf9,0xd6,0xdd,0x9f,
+ 0xc3,0x1d,0x2a,0xdd,0x71,0x16,0x91,0x69,0x1f,0xa1,0x5b,0x74,0x1f,0xd2,0xb9,0x1f,
+ 0x17,0xe1,0xa3,0xf0,0xd3,0x6f,0xfa,0xf9,0x9d,0x31,0xe1,0x3a,0xef,0xe3,0xa8,0x97,
+ 0xf5,0xf2,0x3e,0x52,0xb0,0x8e,0x59,0x25,0x02,0x18,0xde,0x63,0x9e,0x91,0xa9,0x6f,
+ 0xe5,0x5f,0x49,0x7e,0xcb,0x9f,0x0e,0x35,0xff,0x00,0x14,0xfc,0x41,0xb0,0x96,0x3b,
+ 0x19,0x6c,0x60,0x84,0x17,0x79,0xef,0x63,0x31,0x2e,0x02,0x9e,0x80,0x82,0x4e,0x7e,
+ 0x84,0x7a,0xd7,0xa2,0x7c,0x36,0xf0,0x3a,0xa7,0x88,0x35,0xdb,0x68,0xad,0xc2,0x39,
+ 0x8e,0xde,0xe1,0x50,0x0c,0x6e,0x4f,0x9d,0x72,0x3e,0x85,0x7f,0x51,0x5e,0xcf,0xe0,
+ 0x83,0x37,0xc3,0xcd,0x42,0x6d,0x62,0xee,0xc6,0x79,0x2c,0xa2,0x42,0xb2,0x18,0x00,
+ 0x2c,0x33,0xc0,0xc6,0x6b,0xea,0x29,0xe2,0x5e,0x33,0x0d,0x1a,0xf0,0x5a,0x49,0x5c,
+ 0xf9,0x6a,0xd8,0x75,0x84,0xc4,0xca,0x84,0x9d,0xf9,0x59,0xda,0xaf,0xc1,0x6b,0xd9,
+ 0x18,0x85,0x8e,0xc2,0xf4,0x75,0xf9,0x4e,0xd2,0x7f,0x32,0x95,0x5b,0xe0,0x85,0x86,
+ 0xa9,0x73,0xe0,0x4d,0x60,0x59,0x58,0x3b,0x43,0x75,0xac,0xa3,0xac,0x91,0x0c,0x9c,
+ 0x2d,0xcc,0x25,0x80,0x00,0xf0,0x02,0xa9,0x39,0xf6,0xab,0xe3,0xe3,0xcf,0x86,0xe6,
+ 0xb3,0x9d,0xb7,0xdf,0x41,0x2e,0xc6,0x2a,0x24,0x84,0x75,0xc7,0x03,0x22,0xb2,0x3e,
+ 0x08,0x7c,0x42,0xf0,0xff,0x00,0x87,0x7e,0x1f,0x69,0xb6,0x57,0x97,0xd2,0x45,0x79,
+ 0xba,0x49,0x25,0x55,0x89,0x8e,0x09,0x91,0xb1,0xce,0x39,0xe3,0x15,0xe7,0x4e,0x9b,
+ 0x74,0x9a,0x92,0xea,0xbf,0x53,0xa2,0x0e,0x31,0x9a,0xe5,0x7d,0x19,0xde,0xfc,0x7d,
+ 0xd6,0x75,0x3f,0x0c,0xfc,0x15,0xf1,0xa5,0xe4,0xae,0xde,0x7a,0xd8,0x38,0x40,0xf9,
+ 0xe3,0x38,0x03,0xae,0x33,0xd4,0xd6,0x17,0xec,0x85,0x1b,0xc5,0xfb,0x3f,0x78,0x70,
+ 0xcb,0xb0,0x19,0xda,0xea,0x67,0x91,0x98,0x0c,0xb3,0x5c,0x49,0xff,0x00,0xd6,0xae,
+ 0x6f,0xf6,0x9a,0xf8,0xab,0xa3,0x6a,0x3f,0x01,0x3c,0x61,0x65,0x63,0xa8,0xcd,0x2d,
+ 0xc4,0xd6,0xab,0x1a,0x46,0x51,0xd4,0x1c,0xca,0x99,0xed,0xe9,0x56,0x3f,0x65,0xef,
+ 0x88,0x3a,0x55,0x87,0xc0,0x4f,0x07,0x59,0xdd,0x99,0xa4,0x9e,0x2b,0x77,0x66,0x1f,
+ 0x66,0x2e,0x01,0x32,0xb9,0xc8,0xf9,0x4f,0xad,0x73,0x4b,0x0f,0xfe,0xcb,0x6f,0xef,
+ 0x7e,0x87,0x47,0xb5,0x4a,0xbf,0xcb,0xf5,0x3d,0xe2,0xe2,0xec,0x5b,0x3e,0x58,0x06,
+ 0x8d,0x01,0x6d,0xd1,0xb7,0x4c,0xfd,0x39,0xcf,0x5f,0xce,0xbe,0x39,0xfd,0xb5,0xbe,
+ 0x27,0x78,0xaf,0xc2,0x96,0xd6,0x3a,0x7e,0x8f,0xa1,0xdc,0x38,0xbd,0xc4,0x91,0xea,
+ 0x4d,0x11,0x74,0x51,0x82,0x30,0xbc,0x11,0x91,0x82,0x4e,0xe2,0x07,0x4e,0x08,0xaf,
+ 0xa8,0xe4,0xf1,0xce,0x93,0xa9,0x03,0x1e,0xc9,0xdd,0x3a,0xff,0x00,0xc7,0x8c,0x83,
+ 0x1f,0x8a,0xad,0x79,0xdf,0xc5,0x1f,0x87,0x1a,0x17,0xc4,0x8b,0xdb,0x39,0xf5,0x0b,
+ 0xe7,0x8c,0x5a,0xc0,0x20,0x84,0x08,0x59,0x19,0x54,0x63,0x03,0x78,0x01,0xc8,0x18,
+ 0xe8,0xc4,0x8e,0xbc,0x73,0x51,0x85,0xa7,0x1a,0x35,0x39,0xe6,0xae,0x55,0x79,0xb9,
+ 0xc3,0x96,0x27,0xc9,0xfe,0x34,0xf1,0xcc,0x09,0xf0,0x8b,0x46,0x4d,0x2a,0xc6,0x79,
+ 0xef,0xbc,0x94,0xb7,0x92,0x5b,0x86,0x5c,0x24,0x81,0x76,0xbc,0xa0,0x83,0xc9,0xdc,
+ 0x32,0x0e,0x3f,0x8b,0x3d,0xab,0xce,0xb4,0x8f,0x11,0xdd,0xf8,0x03,0xc5,0x7e,0x16,
+ 0x11,0x79,0x81,0x6f,0x88,0xb7,0xba,0xf2,0x54,0xe0,0x29,0x21,0x54,0x82,0x7b,0x82,
+ 0x58,0xe7,0xd3,0xd2,0xbd,0x13,0xe2,0x0d,0xbd,0x94,0x1a,0xb7,0x88,0xbc,0x2d,0xa4,
+ 0x42,0x9e,0x56,0x8f,0x2a,0xb7,0x97,0x86,0x0b,0x30,0x63,0xcb,0x2a,0x86,0x18,0xe4,
+ 0x77,0xe0,0x64,0x73,0xcd,0x7b,0xa7,0x84,0x74,0xcf,0x85,0x56,0x7a,0x0d,0xb5,0xd6,
+ 0xb1,0xa4,0x59,0x8b,0xf7,0x96,0x2b,0x84,0xb6,0xbf,0x0e,0x5e,0x12,0x01,0x05,0x18,
+ 0x23,0x49,0xb9,0x7a,0x1c,0x06,0xdb,0xc0,0x24,0x1a,0xe5,0xca,0xd2,0x8d,0x5a,0xfc,
+ 0xd1,0xdd,0xbf,0xb9,0xec,0x7d,0xe7,0x16,0x4d,0xbc,0x06,0x02,0x34,0xe7,0x74,0xe0,
+ 0x9b,0xd5,0x3b,0x49,0x59,0x3f,0xce,0xc7,0x8a,0xeb,0x9a,0x93,0x8f,0x1d,0xf8,0x86,
+ 0x16,0x6c,0x3a,0x6a,0x97,0x3f,0x30,0x6f,0xfa,0x6a,0x47,0xf4,0xaf,0xb9,0x7f,0x61,
+ 0x82,0xfa,0x77,0xc2,0x9d,0x76,0x3b,0xa6,0x02,0x56,0xf1,0x05,0xcc,0x83,0x3d,0xd5,
+ 0xa1,0x80,0xa9,0xfc,0x41,0x06,0xbe,0x6c,0xf1,0x97,0x86,0xbc,0x17,0xe2,0xdd,0x55,
+ 0x6e,0x6d,0xae,0xb4,0x4d,0x2a,0x28,0xc1,0x0b,0x1d,0x8c,0x17,0x68,0xcf,0x93,0x92,
+ 0xd2,0x10,0x41,0x76,0x27,0xb9,0x3f,0x40,0x2b,0xd6,0xbe,0x16,0xf8,0xba,0xdf,0xc2,
+ 0x5e,0x1d,0x96,0xcf,0x4f,0xbf,0x86,0xe2,0x06,0x9f,0x7e,0xeb,0x74,0x91,0x14,0x11,
+ 0x1a,0x20,0x18,0x76,0x2d,0x9c,0x22,0xf2,0x4f,0x35,0xee,0x46,0x12,0xe6,0x6e,0x27,
+ 0xe6,0x53,0xe5,0x94,0x6c,0xcf,0x8b,0x2e,0x3f,0x66,0x6f,0x05,0x31,0x22,0x3d,0x32,
+ 0xf0,0x67,0xfe,0x9a,0x8f,0xe8,0xa2,0xb3,0xee,0xff,0x00,0x65,0xff,0x00,0x0b,0x88,
+ 0xa4,0x31,0x59,0x5d,0xa1,0x00,0xe0,0x97,0x26,0xbf,0x41,0xae,0xbc,0x05,0xa3,0x42,
+ 0x3f,0xd5,0xa9,0x3e,0xa0,0x0c,0x56,0x35,0xff,0x00,0x84,0xb4,0xd3,0x1c,0x91,0x2d,
+ 0xba,0x61,0x94,0x8c,0xd7,0xd3,0xba,0x33,0x6b,0x73,0xc2,0x55,0xe3,0xd8,0xfc,0xc7,
+ 0xd1,0x7e,0x03,0x68,0x1a,0xce,0x99,0x05,0xec,0x8f,0xa8,0xc6,0xf3,0x02,0xc6,0x38,
+ 0xa6,0x5d,0x8b,0xc9,0xe9,0x95,0x27,0xf5,0xad,0x01,0xfb,0x3c,0xf8,0x79,0x46,0x41,
+ 0xd4,0x58,0xfb,0xce,0xbf,0xd1,0x6b,0xdb,0x3c,0x19,0xa2,0xa5,0xbe,0x91,0x71,0x61,
+ 0x2a,0x0f,0xb4,0x69,0x97,0x97,0x16,0x52,0x92,0x39,0xdc,0x92,0xb0,0xfe,0x58,0xad,
+ 0x96,0xd3,0x23,0x8d,0x3e,0xe0,0xfc,0x05,0x7e,0x25,0x8e,0xcd,0xf3,0x0a,0x58,0x9a,
+ 0xb4,0xfd,0xb3,0x49,0x49,0xaf,0xc4,0xfd,0xbb,0x05,0x95,0x60,0x2a,0xe1,0xa9,0xd4,
+ 0xf6,0x49,0xb7,0x14,0xff,0x00,0x03,0xe7,0x63,0xfb,0x3f,0x68,0x0a,0x46,0xd8,0xae,
+ 0xdb,0xd4,0x3c,0xf9,0xfe,0x95,0x6e,0xdf,0xe0,0x56,0x85,0x1e,0x07,0xf6,0x6b,0x48,
+ 0x47,0x77,0x95,0xff,0x00,0xa1,0xaf,0x75,0x6b,0x05,0x63,0xc2,0xe0,0x7a,0x11,0x8a,
+ 0x16,0xc3,0x20,0x8c,0x7e,0x95,0xc7,0xfd,0xaf,0x8d,0x92,0xd6,0xb3,0xfb,0xce,0xcf,
+ 0xec,0xac,0x14,0x5d,0xd5,0x18,0xfd,0xc8,0xf1,0xeb,0x6f,0x82,0xbe,0x1f,0x5d,0xbf,
+ 0xf1,0x22,0x80,0x9e,0xe5,0xcb,0x1f,0xe6,0x6b,0x5a,0xdb,0xe0,0xe6,0x80,0xa4,0x11,
+ 0xa0,0x69,0xe3,0x1f,0xde,0x85,0x5b,0xf9,0xd7,0xa8,0x45,0xa6,0xef,0x19,0x18,0xfc,
+ 0x6a,0xd4,0x56,0xaa,0x01,0x0d,0x80,0x6b,0x9a,0x79,0x8e,0x26,0x5b,0xd5,0x97,0xde,
+ 0xce,0x98,0x60,0x70,0xd0,0x5a,0x52,0x8f,0xdc,0x8f,0x37,0x5f,0x85,0xda,0x5c,0x00,
+ 0x1b,0x7d,0x17,0x4c,0x46,0xce,0x39,0xb4,0x8f,0xfc,0x2b,0x66,0xcf,0xc0,0xf6,0x50,
+ 0x20,0xdb,0x63,0x6d,0x19,0xff,0x00,0x62,0x14,0x1f,0xd2,0xbb,0x25,0x89,0x7d,0x45,
+ 0x48,0x23,0x41,0xc9,0xc6,0x3e,0xb5,0xc9,0x53,0x15,0x52,0x4a,0xce,0x4c,0xe9,0x8e,
+ 0x1e,0x9c,0x5d,0xe3,0x14,0x73,0x29,0xe1,0x68,0x97,0xee,0xa0,0x5f,0x61,0x81,0xfd,
+ 0x2a,0x75,0xf0,0xe2,0x8e,0x0b,0x71,0xe9,0xb8,0xd7,0x41,0xba,0x25,0x03,0x25,0x47,
+ 0xbe,0x69,0x44,0xd0,0x77,0x2b,0x5c,0x6e,0xaa,0x7b,0xb3,0x65,0x14,0xb6,0x31,0x57,
+ 0xc3,0x70,0x63,0xe6,0x19,0xe3,0x8c,0x93,0x4c,0xb7,0xf0,0xd4,0x50,0x82,0xb9,0xdc,
+ 0x01,0xfe,0x2e,0x6b,0x73,0xed,0x70,0xf6,0x61,0x81,0xfe,0xcf,0xf8,0xd2,0x7d,0xb6,
+ 0x15,0xe8,0x19,0xbb,0xfc,0xa0,0x1a,0xcf,0xda,0xa4,0x9a,0xbe,0x8f,0xcc,0x2c,0x9b,
+ 0xbf,0x53,0xc7,0x75,0xcf,0x06,0x3c,0xbe,0x2a,0xd6,0x6e,0x6e,0xbc,0x3b,0xa8,0x6a,
+ 0xf6,0xaa,0xd1,0xbc,0x4f,0x0d,0xc1,0x85,0x15,0x04,0x6b,0x9d,0xab,0x91,0xbc,0xe7,
+ 0x3c,0x0a,0x97,0x55,0xb7,0xf3,0xb5,0x7f,0x0f,0x78,0xaa,0xd3,0x53,0x96,0xe7,0x4e,
+ 0xbc,0x92,0x4b,0x48,0x91,0xe2,0x44,0x5b,0x53,0x22,0x15,0x5e,0x83,0xb3,0x8c,0x12,
+ 0x7d,0x2b,0xbc,0xd7,0x34,0xb8,0xb5,0x5b,0xbf,0xb5,0xdb,0xea,0x57,0xba,0x55,0xd6,
+ 0xcf,0x29,0xa5,0xb5,0x90,0x00,0xeb,0xe8,0x55,0x81,0x19,0xf7,0xc6,0x6a,0x2b,0x3f,
+ 0x0a,0xe9,0x09,0xe1,0x31,0xe1,0xe5,0x8d,0xe6,0xb1,0x1c,0x92,0xd2,0x1f,0x30,0xb6,
+ 0xed,0xdb,0xb7,0x0c,0x60,0xe7,0xd2,0xbe,0xa2,0x19,0xb6,0x16,0x30,0xa7,0x29,0xea,
+ 0xd2,0x51,0x6a,0xcf,0xe1,0x6a,0xcf,0x77,0x6b,0xec,0xd7,0x2d,0xaf,0xad,0xcf,0x9e,
+ 0xa9,0x97,0xd7,0x72,0x9a,0x8e,0xcd,0xf3,0x27,0xa7,0xc5,0x7b,0xad,0xb5,0xb6,0xe9,
+ 0xde,0xf6,0xd2,0xc7,0x9e,0x59,0x68,0x56,0xba,0x77,0xc3,0xab,0x5f,0x10,0x59,0x44,
+ 0x61,0xd7,0x74,0x69,0xcb,0x5e,0x13,0x81,0x2b,0xb0,0x7c,0x4b,0x1c,0x87,0xbe,0x41,
+ 0xcf,0x3e,0xd5,0xd1,0x68,0xde,0x1f,0xb6,0xf0,0xbf,0x8f,0x6d,0xdd,0x25,0xb9,0xb8,
+ 0xb3,0xd7,0xad,0x32,0xb3,0x5d,0x4c,0x5d,0x8c,0xc9,0xf3,0x00,0x49,0xf5,0x43,0xc0,
+ 0xf6,0xae,0x8f,0x59,0xf0,0x8e,0x85,0xac,0xdc,0x79,0xf7,0xd6,0xa8,0x66,0x60,0xbe,
+ 0x61,0xf3,0x59,0x04,0xd8,0xe9,0xbc,0x2b,0x00,0xdf,0x88,0xad,0x3b,0xc6,0xb3,0xba,
+ 0xfb,0x37,0x9c,0xb6,0xd2,0x7d,0x99,0xc4,0xb0,0xe5,0x33,0xe5,0xb8,0x1c,0x15,0xe3,
+ 0x8a,0xc6,0xbe,0x71,0x46,0xa4,0x5a,0xb3,0x7c,0xdc,0xd7,0xdb,0x44,0xec,0xd2,0x4e,
+ 0xfa,0xa8,0xcb,0x55,0xb6,0x85,0xd1,0xcb,0x67,0x4e,0x49,0xdd,0x2e,0x5e,0x5b,0x6f,
+ 0xab,0x5a,0x37,0xb6,0x97,0x8e,0x8f,0x73,0x44,0x69,0x30,0xc6,0x41,0x11,0x28,0x3e,
+ 0xb9,0xa7,0xae,0x9e,0x98,0xe1,0x10,0x56,0x54,0x9a,0xeb,0xe7,0x89,0xb7,0x63,0xd0,
+ 0x62,0xa3,0x3a,0xe4,0xb8,0xfb,0xdf,0xad,0x7c,0xbf,0xb5,0x5b,0x28,0x9f,0x45,0xc9,
+ 0xcc,0x6e,0x0b,0x05,0xeb,0x85,0x1f,0x85,0x28,0xb0,0x40,0x09,0x20,0x7d,0x31,0x5c,
+ 0xef,0xf6,0xc5,0xc3,0x1f,0xf5,0x98,0xfd,0x6a,0x23,0xa9,0xcc,0xc4,0xfe,0xf4,0xd3,
+ 0x55,0xa4,0xf6,0x45,0x38,0x25,0xd4,0xe8,0xda,0xd5,0x54,0x60,0x30,0x1f,0x5a,0x48,
+ 0xe1,0x8a,0x2c,0xef,0x95,0x1b,0xd0,0x02,0x2b,0x9b,0x17,0xf2,0xe7,0xfd,0x69,0xfc,
+ 0xeb,0x85,0xf8,0xc9,0xe2,0x0b,0xfd,0x2f,0xc2,0x22,0x5b,0x1b,0xc9,0x6d,0x6e,0x1a,
+ 0xe1,0x13,0xcc,0x89,0xb0,0xdb,0x48,0x24,0xf3,0xf8,0x0a,0xeb,0xc2,0x53,0xab,0x8c,
+ 0xc4,0x42,0x84,0x34,0x72,0x76,0x39,0x71,0x35,0x61,0x85,0xa1,0x3a,0xd3,0xd5,0x45,
+ 0x5c,0xf6,0x03,0x35,0x9a,0x72,0x5d,0x73,0xf5,0xa3,0xfb,0x66,0xc2,0x01,0x96,0x65,
+ 0xe3,0xde,0xbe,0x7f,0xf8,0x07,0xe1,0xb3,0xf1,0x3f,0x56,0xd4,0xe1,0xd7,0xf5,0xbd,
+ 0x45,0x6d,0xed,0x52,0x36,0x0e,0xfa,0xa3,0x40,0x83,0x71,0x7c,0xee,0x62,0x1b,0x8f,
+ 0x94,0x74,0x15,0xed,0x3a,0x57,0xc1,0x5f,0x02,0xda,0xeb,0x0b,0x6c,0xda,0x7d,0xcf,
+ 0x89,0xa2,0x72,0x18,0x5d,0xc7,0x75,0x23,0x46,0x41,0xce,0x00,0xdc,0x7e,0x6e,0x31,
+ 0xce,0x07,0xd2,0xbe,0xf5,0x70,0x96,0x21,0x3b,0x4e,0xba,0xf9,0x2f,0xf8,0x27,0xc3,
+ 0xcb,0x8a,0xe8,0xbf,0x86,0x93,0xfb,0xcb,0x49,0xf1,0x1b,0x49,0xf0,0xb7,0x89,0xf4,
+ 0x3d,0x5c,0x5d,0x5b,0xc4,0xb1,0xdc,0x7d,0x92,0xe4,0x3c,0xaa,0x03,0x5b,0xcb,0xf2,
+ 0xb6,0x79,0xe8,0xac,0x11,0xf3,0xdb,0x69,0xf5,0xaf,0x46,0x93,0xf6,0x87,0xf0,0xae,
+ 0xaf,0x37,0xf6,0x3d,0xb5,0xe5,0xae,0xa6,0xf7,0x23,0xc8,0x58,0xad,0x98,0xca,0x49,
+ 0x3d,0x39,0x50,0x40,0x23,0xaf,0x27,0xb5,0x64,0x5c,0x7c,0x29,0xf0,0x06,0x94,0xd0,
+ 0x2d,0x9f,0x85,0xde,0xd9,0xb8,0xc8,0xba,0x86,0x32,0x0b,0x01,0x9f,0x4c,0xe3,0xfa,
+ 0x57,0x35,0xaf,0x59,0xe9,0xba,0x7f,0x8d,0x74,0x41,0x6c,0x62,0x8e,0x17,0x59,0x18,
+ 0x08,0x22,0x08,0x17,0xf7,0x6c,0x9c,0x71,0xd4,0x57,0xda,0x65,0xb8,0x6a,0x99,0x76,
+ 0x17,0xea,0xce,0x7c,0xc9,0x36,0xf6,0xb7,0xc8,0xf8,0xdc,0xc3,0x15,0x0c,0xc7,0x13,
+ 0xed,0xd4,0x39,0x6e,0x92,0xde,0xe6,0x9e,0xb4,0x12,0xd7,0x4b,0xbd,0x60,0x0e,0x44,
+ 0x4d,0x82,0xc3,0x1d,0xb8,0xab,0xde,0x14,0x10,0xa6,0x87,0x63,0xb9,0x55,0x89,0x89,
+ 0x58,0xe7,0xdc,0x67,0xfa,0xd7,0x9d,0x4f,0xe1,0xed,0x5e,0x54,0x6f,0xb3,0xf8,0x92,
+ 0x4b,0xe8,0xd9,0x4c,0x6d,0x6b,0x71,0x81,0xb8,0xe3,0xd7,0xb6,0x38,0x3d,0x2a,0xe5,
+ 0x95,0x97,0x8e,0xb4,0xbb,0x58,0x62,0x56,0xd3,0xee,0x82,0x28,0x50,0xb7,0x31,0xec,
+ 0x61,0x8c,0x70,0x08,0xcf,0x4a,0xef,0x70,0x4d,0x58,0xe0,0x53,0x69,0xde,0xc7,0xa2,
+ 0x78,0xab,0x4a,0xb0,0xf1,0x0e,0x85,0x71,0xa7,0x5d,0x40,0xb2,0x5b,0xce,0x00,0x74,
+ 0xc9,0x19,0xc1,0x07,0xb1,0x1d,0xc5,0x68,0xf8,0x2e,0x38,0x7c,0x33,0xa0,0x59,0xe9,
+ 0xd6,0x17,0x13,0xda,0x5b,0x5b,0x2e,0xd4,0x89,0x25,0x62,0x14,0x67,0x3f,0xd6,0xbc,
+ 0xc8,0x78,0xcb,0xc5,0x16,0xe5,0x92,0xeb,0xc3,0x9e,0x66,0xd5,0xe4,0x41,0x78,0xbc,
+ 0xfd,0x01,0x3f,0xa6,0x2b,0x43,0x4e,0xf8,0x88,0x63,0x75,0x4b,0xdd,0x27,0x52,0xd3,
+ 0x58,0x9c,0x07,0x9e,0xdc,0x34,0x64,0xff,0x00,0xbc,0x2b,0x17,0x45,0xf2,0xf2,0xa3,
+ 0x45,0x55,0x5f,0x98,0xf6,0x35,0xf1,0x86,0xa9,0x10,0x22,0x1d,0x4a,0x52,0x07,0x66,
+ 0xc3,0x7f,0x3a,0x82,0x6f,0x88,0x1a,0xd4,0x7c,0xb4,0xcb,0x30,0x1e,0xab,0x8f,0xe5,
+ 0x5e,0x79,0x6b,0xf1,0x3b,0x47,0xb9,0x77,0x8c,0x6a,0xf6,0x51,0x32,0x70,0x43,0xe5,
+ 0x7f,0x5e,0x45,0x5b,0x1e,0x20,0xb6,0xd4,0x62,0xf3,0x21,0xbe,0xb3,0xb9,0x5f,0x58,
+ 0x6e,0x14,0xff,0x00,0x3c,0x56,0x1e,0xc1,0xa7,0xaa,0x36,0xf6,0xcb,0xa3,0x37,0xb5,
+ 0xdf,0x15,0x59,0xf8,0x8a,0xda,0x4b,0x7d,0x67,0x40,0xb7,0xbe,0x46,0x18,0x2c,0xb2,
+ 0xbc,0x4f,0x8c,0x60,0x80,0xc3,0x91,0xf9,0xd5,0x6d,0x1f,0x52,0xf0,0x8e,0x97,0x6f,
+ 0x0d,0xbc,0x7e,0x19,0x96,0x18,0x21,0x50,0xb1,0xa0,0xbc,0x79,0x02,0x01,0xd0,0x00,
+ 0xc6,0xb0,0xe4,0x77,0x99,0xb0,0xaa,0x78,0xf4,0xe7,0xf9,0x55,0x77,0x59,0x13,0x3b,
+ 0x95,0x80,0xf7,0x18,0xad,0xe1,0x49,0x2d,0xc7,0x3a,0x9c,0xf6,0xf2,0x3d,0x06,0x3d,
+ 0x53,0xe1,0xfd,0xd3,0x87,0x9f,0x43,0x64,0x93,0xfb,0xcd,0x18,0x63,0xfc,0xe9,0x93,
+ 0xeb,0x7a,0x05,0x94,0xcd,0x16,0x96,0xeb,0x6f,0x6b,0xc1,0xd8,0xdf,0x29,0xce,0x39,
+ 0xe0,0xd7,0x9e,0x9e,0x47,0x52,0x0f,0xd7,0x35,0x24,0x71,0x02,0xa3,0x2f,0xcd,0x5c,
+ 0x69,0xa8,0xbb,0xa6,0x62,0xfd,0xe5,0x63,0xdf,0x35,0x3f,0xda,0x4b,0xe1,0x3c,0x2a,
+ 0xcd,0xff,0x00,0x09,0xa6,0x8c,0xde,0xc2,0xf1,0x0f,0xf5,0xae,0x4b,0x52,0xfd,0xac,
+ 0x7e,0x13,0xdb,0xe4,0x0f,0x15,0x69,0xcf,0x8e,0x9b,0x65,0x06,0xbe,0x47,0xd0,0xbe,
+ 0x12,0x78,0x28,0x5d,0xdd,0x2e,0xa9,0xa2,0x0d,0x90,0x7c,0x98,0x84,0xb0,0xcb,0xf5,
+ 0xc6,0x4b,0x73,0xf8,0x7a,0x57,0xa2,0xd9,0x7c,0x35,0xf8,0x3b,0x6b,0xa7,0x92,0x9e,
+ 0x14,0xba,0x79,0x82,0x9c,0x19,0xf6,0xed,0xdd,0x8e,0x3d,0x78,0xaf,0x73,0xeb,0x0f,
+ 0xa1,0xe2,0xfb,0x04,0x71,0x5a,0xdf,0xc6,0xff,0x00,0x07,0x2f,0xc4,0x7f,0x1a,0xdd,
+ 0xd9,0x6a,0xf6,0xe3,0x4b,0xbe,0xbb,0x86,0xea,0xdd,0xb2,0x76,0xb3,0x34,0x2b,0xe6,
+ 0x91,0xc7,0x3f,0x38,0x35,0x4a,0xe7,0xf6,0x81,0xf0,0xba,0x7f,0xcc,0x4c,0x49,0x8e,
+ 0xd1,0xc1,0x23,0x7f,0x4a,0xf5,0x2b,0x1f,0x87,0x5e,0x03,0xb8,0x96,0x35,0xb0,0xd0,
+ 0xa0,0xb4,0xdc,0x06,0x41,0x85,0x0e,0xe3,0xf5,0xc5,0x75,0x5e,0x27,0xf8,0x57,0x61,
+ 0xa3,0xf8,0x5a,0x3b,0xed,0x37,0x4b,0x81,0x24,0x8d,0xc2,0xa2,0xc3,0x0f,0xce,0xec,
+ 0x79,0x00,0xf1,0x9c,0x70,0x49,0xf6,0x06,0xbe,0x1f,0x15,0xc3,0x78,0x6c,0x6e,0x26,
+ 0x75,0xe7,0x36,0x9c,0xb5,0xb2,0x6b,0xfc,0x8f,0xb7,0xc3,0x71,0x2e,0x27,0x09,0x87,
+ 0x85,0x08,0x41,0x35,0x15,0x6b,0xbb,0xff,0x00,0x99,0xf3,0xd7,0xfc,0x2f,0xbd,0x22,
+ 0xe5,0x8a,0xda,0x5b,0x6a,0x37,0x9f,0xf5,0xc2,0xc9,0xcf,0xf3,0xac,0x9d,0x6b,0xf6,
+ 0x8d,0xb6,0xd1,0x36,0x09,0xf4,0x2d,0x5d,0x3c,0xc3,0x84,0xf3,0xa1,0x58,0xc3,0x7d,
+ 0x32,0xd5,0xf4,0x97,0x85,0x45,0xca,0x69,0xcb,0x77,0xab,0xe9,0x9a,0xcd,0xf6,0x9f,
+ 0x1b,0x79,0x57,0x10,0xda,0xdb,0xfd,0x9a,0xdd,0xd0,0x67,0x86,0x71,0xf3,0x30,0xce,
+ 0x38,0x23,0x1e,0x95,0xf2,0xdf,0xed,0x9b,0x31,0x9f,0xc5,0x5a,0x2b,0xa6,0x94,0xda,
+ 0x45,0xb4,0x81,0xa4,0xb7,0xb6,0x23,0x91,0x17,0xcd,0xb0,0xfb,0xe4,0x73,0xd2,0xa6,
+ 0x9f,0x0a,0xe0,0x39,0xac,0xf9,0x9f,0xcf,0xfc,0x90,0xe7,0xc5,0x38,0xf6,0xb4,0x51,
+ 0x5f,0x2f,0xf3,0x65,0x7b,0x9f,0xda,0x9e,0x65,0x6f,0xf4,0x6d,0x00,0x91,0xd8,0xcb,
+ 0x72,0x07,0xf2,0x53,0x5e,0xa5,0xe1,0xff,0x00,0x15,0x5e,0xeb,0x3a,0x64,0x17,0x57,
+ 0x02,0x3b,0x66,0x99,0x16,0x41,0x1a,0x36,0x40,0x04,0x67,0xae,0x2b,0xe3,0x56,0x63,
+ 0x80,0xb8,0xaf,0xac,0x3c,0x39,0x85,0xd0,0x74,0xe0,0x3a,0xfd,0x9a,0x3f,0xfd,0x04,
+ 0x57,0xce,0x71,0x3e,0x55,0x85,0xcb,0x69,0xd2,0x58,0x68,0xd9,0xc9,0xbb,0xea,0xde,
+ 0xd6,0xee,0xcf,0xa5,0xe1,0xcc,0xcf,0x13,0x98,0xce,0xaf,0xd6,0x25,0x75,0x14,0xad,
+ 0xa2,0x5b,0xdf,0xb1,0xd5,0x9d,0x48,0x8f,0xbd,0x23,0x37,0xd0,0xd3,0xd7,0x56,0x8c,
+ 0x2e,0x0c,0x3b,0xcf,0xa9,0x6a,0xc8,0x46,0x6c,0x71,0x80,0x69,0xc5,0x9c,0x74,0x61,
+ 0x8a,0xfc,0xf3,0x92,0xda,0xd8,0xfb,0x83,0x57,0xfb,0x6e,0x40,0x3e,0x48,0x10,0x7a,
+ 0x75,0xa6,0x9d,0x62,0xe4,0xf0,0x02,0xaf,0xe1,0x59,0x44,0x48,0x7b,0x9a,0x4f,0x9f,
+ 0x39,0xe4,0x8a,0x2c,0xc7,0xa1,0xa0,0x6f,0xe7,0x39,0xe3,0x19,0xf4,0x5c,0x54,0x96,
+ 0x42,0xe3,0x52,0xbe,0x82,0xd9,0x65,0x0a,0xf2,0xb6,0xc5,0x2f,0x9c,0x66,0xb3,0x44,
+ 0x8e,0xbe,0xbc,0x1a,0xd1,0xf0,0xf5,0xe2,0x43,0xe2,0x0d,0x3d,0xee,0x26,0x58,0x60,
+ 0x12,0x12,0xd2,0x48,0xdb,0x40,0xf9,0x4f,0x52,0x7a,0x57,0x5e,0x0e,0x84,0x2b,0xe2,
+ 0x69,0xd2,0xa9,0xb4,0x9a,0x4f,0xd1,0xb3,0x97,0x15,0x56,0x54,0x70,0xf5,0x2a,0x41,
+ 0x6b,0x14,0xda,0xfb,0x8d,0x39,0x3c,0x39,0x71,0x1d,0xb6,0xa7,0x27,0xda,0x62,0x26,
+ 0xc1,0xf6,0x4b,0x1a,0xe7,0x27,0xe5,0x0d,0x91,0xc7,0x4c,0x37,0xe8,0x6a,0xcd,0x87,
+ 0x85,0x45,0xe3,0x44,0xb2,0xdf,0x79,0x0c,0xf6,0xa2,0xe8,0xaf,0x96,0x58,0xaa,0x93,
+ 0xc7,0x71,0xef,0xf9,0x55,0xcb,0x7d,0x6b,0x45,0x83,0x51,0xd6,0xd2,0x6d,0x5a,0x36,
+ 0x86,0xfd,0x02,0x82,0x8a,0xcc,0x17,0x00,0xae,0x77,0x63,0x04,0xfc,0xdf,0xa5,0x47,
+ 0x1f,0x8c,0xf4,0x4b,0x5d,0x6a,0xea,0xe1,0x2e,0x6e,0x36,0x34,0x02,0xde,0x36,0x5b,
+ 0x76,0x21,0x02,0xf4,0xc7,0x73,0xc9,0x27,0xa6,0x2b,0xef,0xe1,0x92,0xe5,0x54,0xe6,
+ 0xa5,0x51,0xab,0x6a,0xac,0xe5,0xd9,0xbd,0x77,0xea,0xac,0x7c,0x34,0xf3,0x6c,0xd2,
+ 0xa4,0x1c,0x69,0xc5,0xdf,0x47,0x75,0x17,0xd5,0x2d,0x36,0xe8,0xee,0x43,0xa4,0xf8,
+ 0x7f,0x4d,0xd5,0xae,0xe6,0xf2,0xb5,0x39,0x64,0xb5,0xb7,0x8b,0xcc,0x95,0xcc,0x0d,
+ 0x1b,0x64,0x9e,0x00,0x0d,0xdb,0x00,0x9c,0xf3,0xd3,0xde,0x97,0x4b,0xd3,0x34,0x2d,
+ 0x42,0x2d,0x42,0xf6,0x37,0xbd,0x92,0xd2,0xce,0x20,0xde,0x5b,0x80,0xac,0xed,0xf3,
+ 0x13,0xdb,0xa6,0x00,0xe3,0x82,0x49,0xea,0x31,0x55,0xe1,0xf1,0xae,0x9b,0x61,0x73,
+ 0x71,0x21,0xfe,0xd1,0xd4,0xc5,0xd4,0x62,0x29,0xa4,0x91,0x51,0x0e,0xd1,0x9c,0x60,
+ 0x71,0xea,0x7f,0x3a,0xa9,0x67,0xe2,0xdd,0x2f,0x4a,0x59,0xe0,0xb3,0xd2,0xe7,0x92,
+ 0xce,0xe5,0x36,0xcc,0x2e,0x27,0x0a,0xe7,0xaf,0x40,0x32,0x3b,0xfa,0x8f,0xd2,0xa5,
+ 0x61,0xf2,0x9a,0x6e,0x3f,0xc3,0xb5,0xdd,0xee,0xdb,0xd7,0xec,0xf5,0x7a,0x77,0x34,
+ 0x75,0x73,0x4a,0x8a,0x56,0xe7,0xe9,0x6b,0x24,0xb4,0xfb,0x57,0xd1,0x6b,0xdb,0x62,
+ 0x7d,0x56,0xca,0xc6,0x5d,0x12,0xd7,0x53,0xb2,0x8a,0x6b,0x65,0x92,0x43,0x1b,0x41,
+ 0x2b,0x02,0x47,0x2c,0x33,0x9f,0xf8,0x09,0xef,0x58,0x21,0xf0,0x7a,0x1a,0xbd,0xad,
+ 0x78,0xac,0x6a,0xd6,0xd6,0xd6,0x90,0x5b,0x25,0x85,0x9c,0x1c,0xac,0x6a,0xdb,0x8b,
+ 0x36,0x3a,0x93,0x8f,0x73,0xf5,0xcd,0x65,0xfd,0xa4,0x02,0x47,0x98,0x0f,0xbe,0x2b,
+ 0xe4,0x33,0x55,0x87,0x96,0x23,0xfd,0x99,0x2b,0x59,0x5e,0xca,0xca,0xfd,0x6d,0xe4,
+ 0x7d,0x56,0x5a,0xb1,0x10,0xa1,0x6a,0xf7,0xbd,0xdd,0xae,0xee,0xed,0x7d,0x2e,0xfb,
+ 0x96,0x0c,0xab,0x8e,0x49,0x06,0x93,0x7f,0x19,0xdf,0x54,0xde,0xfd,0x17,0x39,0x60,
+ 0x47,0xb0,0xa6,0xa6,0xa5,0x11,0x5c,0x96,0x23,0xf0,0xaf,0x29,0x53,0x76,0xbd,0x8f,
+ 0x51,0xbb,0x97,0x19,0x87,0xf7,0x89,0xfa,0x0a,0xf3,0xdf,0x8d,0x52,0x13,0xe1,0x48,
+ 0x86,0x33,0xfe,0x92,0x9c,0x1f,0xa1,0xae,0xc1,0xf5,0x28,0xb1,0xcb,0xf3,0xf5,0xae,
+ 0x73,0xc5,0xf6,0xfa,0x7f,0x88,0xf4,0xb7,0xb3,0xb9,0xbb,0x6b,0x60,0x19,0x5d,0x24,
+ 0x40,0x1b,0x04,0x1e,0xe0,0x91,0x9e,0x33,0xde,0xbd,0x7c,0xa9,0xac,0x3e,0x36,0x95,
+ 0x69,0xec,0x9a,0x6c,0xf3,0x73,0x1a,0x72,0xaf,0x84,0xab,0x4a,0x1b,0xb4,0xd2,0x3b,
+ 0x2f,0xd8,0x4f,0x55,0xb6,0xd1,0xe6,0xf1,0xc4,0xd2,0xdb,0x69,0x57,0x77,0x2b,0x6f,
+ 0x6a,0xd0,0xc1,0xab,0xc5,0xbe,0x19,0x70,0x66,0x05,0x33,0x91,0xb4,0x9d,0xc3,0x07,
+ 0xd4,0x01,0x5d,0x4d,0xef,0x8b,0xa6,0x17,0x09,0x14,0xd7,0x36,0xbe,0x1b,0x8a,0x23,
+ 0xb7,0xca,0x8a,0xec,0xc6,0xbf,0x2e,0x47,0xb9,0x03,0x8e,0xe2,0xbe,0x6e,0x83,0x4e,
+ 0xf0,0xb6,0x86,0x92,0x0b,0x9f,0x10,0xcf,0xf3,0x0c,0x3a,0xa5,0xda,0x40,0x18,0x0e,
+ 0x80,0xe0,0x13,0xfa,0xd5,0x4b,0x9f,0x13,0xfc,0x38,0xb3,0x3f,0x38,0x4b,0xc3,0xe9,
+ 0x71,0x73,0x3d,0xc6,0x7f,0xf1,0xec,0x7e,0x95,0xfa,0xec,0xb3,0x8a,0x52,0x7f,0xba,
+ 0xa5,0x39,0x7a,0x44,0xfc,0xa1,0x64,0x75,0xe2,0xbf,0x7d,0x52,0x11,0xf5,0x91,0xf4,
+ 0x8e,0xb1,0xf1,0x5b,0x4a,0xd1,0xed,0x8c,0x57,0x7e,0x29,0xb5,0xb9,0x19,0x0c,0xae,
+ 0x97,0x9e,0x60,0x5c,0x0c,0x0c,0x82,0x07,0x38,0xf5,0xae,0x56,0xdf,0xc6,0x56,0x5e,
+ 0x39,0xf8,0x85,0xa5,0xb6,0x8f,0x34,0xf7,0xf1,0xaa,0x30,0x91,0xb6,0x8d,0xa1,0x88,
+ 0x6f,0xe2,0x51,0x8c,0x72,0x39,0x38,0xea,0x78,0xe2,0xbc,0x40,0xfc,0x5b,0xf0,0xbe,
+ 0x9f,0x35,0xb3,0x69,0x1a,0x0d,0xb9,0x68,0xdf,0x7f,0xfa,0x25,0x84,0x61,0x88,0xc7,
+ 0x4c,0x91,0x93,0x93,0x8e,0xb5,0xe8,0x5f,0x0e,0x7e,0x23,0x6b,0x5e,0x3a,0xd7,0x16,
+ 0xd6,0xeb,0x4a,0xd4,0xf4,0xdd,0x2b,0x6e,0x56,0x56,0x38,0x52,0x7d,0x0a,0xfa,0x7d,
+ 0x01,0xae,0xca,0x78,0x95,0x3a,0x5e,0xd2,0xa4,0x1c,0x3d,0x77,0x39,0x27,0x80,0xa8,
+ 0xab,0x2a,0x58,0x77,0xed,0x3c,0xe3,0xb1,0xec,0xd0,0xdb,0xb3,0xdb,0x4a,0xc6,0xe6,
+ 0x56,0xc6,0xe3,0xbc,0x60,0xee,0x19,0x27,0xfc,0x91,0x57,0xe7,0x6b,0xe6,0x4b,0x69,
+ 0x16,0xea,0x71,0x19,0x38,0x65,0xc8,0xc1,0xc8,0xf5,0xe6,0xa8,0x4f,0x12,0x4d,0x6a,
+ 0x60,0x0c,0xdb,0x71,0x8d,0xdd,0x4d,0x4a,0xb7,0x7b,0xe3,0x89,0x64,0xca,0x88,0xdb,
+ 0x24,0xa9,0x03,0x3e,0x84,0x72,0x7d,0xaa,0xb5,0x6a,0xe8,0xe5,0xb7,0x2b,0xe5,0x7d,
+ 0x07,0xc7,0x64,0x64,0xb8,0x91,0x24,0x41,0x33,0xe4,0x14,0x67,0x73,0x9c,0x7e,0x43,
+ 0xb8,0xed,0x57,0x63,0xba,0x9e,0x2b,0x2b,0x79,0x48,0x2f,0x2c,0x67,0x12,0x21,0xc8,
+ 0x18,0xe8,0xd8,0x1d,0x6a,0xb7,0xf6,0xa4,0x52,0x5d,0xa4,0x8c,0xcc,0x00,0x42,0xa7,
+ 0x7b,0x0e,0x79,0x1f,0x9f,0xe1,0x42,0xea,0x98,0xbb,0xbb,0x58,0xe5,0x18,0x65,0x56,
+ 0xc2,0xe1,0xb1,0xc6,0x0f,0x1f,0x80,0xa4,0xe4,0xf6,0xb0,0x24,0x93,0x26,0xb8,0xb9,
+ 0xfb,0x4c,0xd2,0x43,0x73,0x67,0x0b,0xac,0xa3,0x29,0xe7,0x44,0x1b,0xea,0x06,0x33,
+ 0x9f,0xc6,0xb3,0x8f,0x87,0xf4,0x8b,0xbc,0x49,0x36,0x93,0x6b,0x0b,0xc6,0x70,0xc1,
+ 0x14,0xa9,0x61,0xeb,0xc6,0x07,0x23,0xf5,0xa9,0x6d,0x25,0xcc,0x0d,0x17,0x9a,0xcd,
+ 0xe5,0x1c,0x29,0xc1,0xe9,0xd4,0x1a,0x63,0xea,0x8b,0x2c,0x26,0x42,0x76,0x3a,0x9c,
+ 0x3a,0xb6,0x7a,0xf7,0xc5,0x54,0x59,0x2f,0xb9,0x9d,0x71,0xa1,0xe8,0xb0,0xba,0x3c,
+ 0x09,0x71,0x6e,0x8f,0xc2,0xb4,0x17,0x2c,0x31,0x9f,0xab,0x10,0x3f,0x2a,0x7d,0xa5,
+ 0xb2,0xa1,0x61,0x6f,0xad,0x6a,0x68,0xf8,0xc8,0x8e,0x47,0x12,0x60,0x7e,0x55,0x65,
+ 0x6f,0x23,0x7d,0xb2,0x2b,0x16,0x56,0x38,0x23,0x04,0x11,0xef,0x4f,0x69,0xc7,0x75,
+ 0x67,0xc9,0x3b,0x5f,0xa6,0xdf,0x6f,0x7f,0xfe,0xb5,0x5d,0xd9,0x9b,0xdf,0x42,0x2c,
+ 0xeb,0x90,0x80,0x63,0xd7,0xbc,0xe5,0xec,0x2e,0xac,0xc0,0x3f,0x89,0xa9,0xf1,0xe2,
+ 0x13,0xfe,0xac,0xe8,0xf3,0x0f,0xef,0x15,0x65,0x24,0xfd,0x01,0xa8,0xcc,0xca,0xea,
+ 0xc4,0xc5,0xb9,0xc7,0x07,0x27,0x19,0x1f,0x43,0x52,0x5a,0x49,0x1b,0x40,0xa4,0x65,
+ 0x73,0xc9,0x56,0xe4,0xaf,0xb7,0x34,0x0b,0x7d,0x8c,0x5d,0x07,0xc6,0x5a,0x0c,0x5a,
+ 0x03,0xe9,0x92,0xc4,0xd1,0xdd,0x16,0x2e,0x1e,0x51,0x93,0xbd,0xb1,0x92,0x72,0x4f,
+ 0x7f,0x4e,0xc2,0xb0,0x6f,0xfc,0x4d,0x71,0x65,0xa8,0x5b,0xc9,0x1d,0xda,0x6a,0xb6,
+ 0xbb,0x72,0xc8,0x90,0xb2,0xa2,0x93,0x83,0x8e,0x9c,0xe3,0x1d,0x6b,0xcf,0x8f,0x83,
+ 0x7c,0x7d,0x1d,0xc4,0x73,0xff,0x00,0xc4,0x86,0x27,0x43,0x90,0xd2,0x6a,0xf0,0x3e,
+ 0x3f,0x00,0x5a,0xb7,0xa0,0xba,0xf8,0xa7,0x6b,0x65,0x25,0xb4,0x7e,0x2f,0xf0,0xfd,
+ 0x94,0x32,0x2e,0xd6,0x45,0x91,0x9f,0x8f,0x4f,0x96,0x0a,0xf4,0x23,0x4e,0x31,0xb9,
+ 0xca,0xe4,0xd9,0xea,0xbe,0x07,0xf1,0xf4,0xba,0x46,0x24,0xfb,0x26,0xe2,0x5c,0xb1,
+ 0x56,0x8d,0xb0,0x32,0x7a,0x03,0xc1,0x1d,0xba,0x1e,0xd5,0xea,0x1e,0x1c,0xf8,0xaf,
+ 0x69,0x1e,0xa3,0x09,0xb8,0x8d,0x5a,0x29,0x57,0xc9,0x91,0x5d,0xfe,0x54,0xdc,0xa5,
+ 0x77,0x64,0x63,0x07,0x24,0x72,0x73,0xd4,0xd7,0xc4,0xcc,0xfe,0x36,0xd4,0x2f,0x2f,
+ 0x2d,0x67,0xf1,0xac,0x0a,0xd6,0x72,0xf9,0x4c,0xd6,0xd1,0x4a,0x51,0x89,0x50,0xd9,
+ 0x5f,0xbb,0xd9,0x87,0x50,0x29,0xcf,0xe1,0x8d,0x4a,0xf5,0xcb,0xea,0x1e,0x33,0xbc,
+ 0xb8,0x73,0xc9,0x22,0x12,0x7f,0xf4,0x39,0x0d,0x78,0x35,0xf3,0x1c,0x0e,0x1e,0xaf,
+ 0xef,0x65,0xef,0x47,0xc9,0xff,0x00,0x91,0xef,0xd0,0xca,0xb1,0xd8,0x8a,0x49,0xd3,
+ 0x87,0xbb,0x2f,0x35,0xfe,0x67,0xdb,0xbf,0x1a,0x7c,0x77,0xaf,0xf8,0x66,0x25,0xb7,
+ 0xf0,0xe7,0x8b,0x6e,0x6e,0x34,0x6b,0xf8,0x44,0x97,0x36,0x6d,0x70,0x85,0xe2,0x72,
+ 0x58,0x32,0xba,0xf5,0x52,0x08,0xed,0xfe,0x04,0xfc,0x4b,0xfb,0x5a,0x78,0xde,0x4f,
+ 0x1f,0x78,0xab,0xc3,0x73,0xb3,0x46,0xd2,0xda,0xe9,0xd1,0x5b,0x4a,0x22,0x65,0x65,
+ 0x05,0x37,0xae,0x78,0xee,0x78,0x3c,0xf3,0xcd,0x44,0x7c,0x0d,0xa4,0x9c,0xb5,0xce,
+ 0xb7,0xa9,0x4a,0x4f,0x53,0xba,0x24,0xcf,0xfe,0x38,0x4d,0x52,0xbc,0xf0,0xa7,0x82,
+ 0x62,0x28,0xf7,0x72,0x4f,0x2b,0x20,0xe1,0xa6,0xbf,0x2b,0x8f,0xcb,0x15,0x8f,0xfa,
+ 0xc3,0x84,0x4f,0xdc,0x52,0x7e,0x8b,0xfc,0xce,0xa5,0xc3,0x58,0xe6,0xbd,0xfb,0x2f,
+ 0x56,0x79,0x33,0xc4,0x42,0x83,0xeb,0x5f,0x54,0x69,0x39,0x8b,0x45,0xd3,0xd4,0x82,
+ 0x3f,0xd1,0xe3,0xff,0x00,0xd0,0x45,0x79,0x28,0xb8,0xf8,0x75,0xa5,0x3a,0xb9,0xfb,
+ 0x24,0x8c,0xa4,0x10,0x26,0xbb,0x92,0x5e,0x7e,0x9b,0xb1,0xfa,0x56,0xbe,0xa5,0xf1,
+ 0xf3,0x41,0x90,0xaf,0x99,0x7c,0x24,0x28,0x36,0xa8,0x8a,0x23,0x80,0x3d,0xb0,0x2b,
+ 0xe6,0x73,0xea,0xd5,0x73,0x9f,0x66,0xb0,0xf4,0x65,0x68,0xdf,0x75,0xde,0xc7,0xd3,
+ 0xe4,0x78,0x5a,0x79,0x3f,0xb4,0x78,0x9a,0xd1,0xbc,0xad,0xb3,0xed,0x7f,0x4e,0xe7,
+ 0xa6,0xfd,0xa3,0x07,0xa9,0xfc,0xea,0x44,0xb9,0x38,0xeb,0x5e,0x2d,0x37,0xc7,0xfd,
+ 0x29,0x4f,0xee,0x61,0xbb,0x9f,0xd3,0x6c,0x78,0xcf,0xe6,0x6a,0xa3,0xfc,0x70,0xbf,
+ 0xb9,0x6c,0x58,0xf8,0x76,0xfe,0x7c,0xf4,0x3b,0x48,0xfe,0x40,0xd7,0xcc,0xc7,0x23,
+ 0xc7,0x4b,0x78,0x5b,0xd6,0xcb,0xf3,0x3e,0x9f,0xfb,0x5b,0x05,0x7b,0x2a,0x89,0xfa,
+ 0x5d,0xfe,0x57,0x3d,0xdb,0xed,0xa0,0x70,0x58,0x53,0x7f,0xb4,0x40,0xe8,0x46,0x07,
+ 0x6a,0xf0,0x91,0xf1,0x07,0xc7,0x17,0xe7,0x36,0xbe,0x18,0x78,0xb3,0xd0,0xca,0x4f,
+ 0xf5,0xc5,0x21,0xbd,0xf8,0x9f,0xa8,0x7d,0xdb,0x5b,0x3b,0x25,0x3f,0xde,0x23,0x23,
+ 0xf5,0x35,0xa4,0x72,0x0a,0xdf,0x6e,0x71,0x5e,0xb2,0x5f,0xa1,0xa2,0xc7,0x73,0x7f,
+ 0x0e,0x8c,0xe5,0xe9,0x09,0x7e,0xa9,0x1e,0xea,0x35,0x31,0xfd,0xe1,0xf8,0xd4,0x52,
+ 0xeb,0x09,0xb4,0xe6,0x45,0x1f,0x8d,0x78,0x69,0xf0,0xd7,0xc4,0x0b,0xe1,0xfe,0x93,
+ 0xe2,0x1b,0x7b,0x5c,0xf6,0x8c,0xff,0x00,0x80,0xa4,0x3f,0x0c,0x35,0x8b,0xac,0xfd,
+ 0xbb,0xc6,0x17,0x2c,0x0f,0x55,0x8f,0x77,0xff,0x00,0x15,0x5b,0x47,0x23,0xa6,0xbe,
+ 0x3a,0xeb,0xe4,0x9b,0xfd,0x0d,0x55,0x5c,0x6c,0xfe,0x0c,0x24,0xbe,0x6e,0x2b,0xf3,
+ 0x67,0xb3,0x49,0xe2,0x3b,0x68,0x3e,0xf4,0xe8,0xb8,0xf5,0x22,0xb3,0x6e,0xbe,0x22,
+ 0xe8,0xb6,0x87,0xf7,0xda,0x9d,0xb4,0x78,0xfe,0xf4,0xab,0xfe,0x35,0xe5,0x6b,0xf0,
+ 0x5f,0x4a,0x6e,0x6e,0xb5,0x8b,0xeb,0x93,0xdf,0x2c,0x06,0x7f,0x4a,0xbf,0x6b,0xf0,
+ 0x87,0xc2,0x90,0xf2,0xd6,0xf3,0x5c,0x11,0xde,0x59,0x88,0xfe,0x55,0xd0,0xb2,0xac,
+ 0x0c,0x7e,0x2a,0xad,0xfa,0x2f,0xf3,0x65,0x2a,0x39,0xac,0xf6,0xa3,0x18,0xfa,0xcf,
+ 0xfc,0x93,0x3a,0xdb,0xbf,0x8d,0x3e,0x1a,0xb6,0xc9,0x6d,0x56,0x27,0x23,0xb4,0x79,
+ 0x6f,0xe5,0x58,0x57,0xbf,0xb4,0x1f,0x87,0xa3,0xf9,0x63,0x69,0xe7,0x3d,0xbc,0xb8,
+ 0x88,0xfe,0x78,0xa7,0xdb,0xf8,0x1b,0xc2,0xb6,0x6c,0x36,0xe9,0x36,0xa4,0x8e,0xf2,
+ 0x02,0xf5,0xa1,0x05,0x96,0x93,0x68,0x3f,0x71,0x61,0x6b,0x11,0x1d,0xd2,0x11,0x5a,
+ 0x47,0x05,0x96,0xc3,0xec,0xca,0x5f,0x34,0xbf,0x43,0x6f,0xa8,0x66,0xb2,0xd1,0xd4,
+ 0xa7,0x1f,0x45,0x27,0xfa,0xa3,0x9b,0x93,0xe3,0xe8,0x9b,0xe5,0xb2,0xd1,0xaf,0xae,
+ 0x4f,0x6c,0x20,0xe7,0xf2,0xcd,0x47,0xff,0x00,0x0b,0x63,0xc5,0xd7,0xe0,0x8b,0x3f,
+ 0x09,0xdc,0x80,0x7a,0x19,0x4b,0x0f,0xe8,0x2b,0xb1,0xfe,0xd3,0xb7,0x80,0x64,0x61,
+ 0x00,0xf4,0x55,0x5a,0x61,0xd6,0xbc,0xd5,0xcc,0x6e,0x4a,0xf4,0xfb,0xd9,0xad,0xd5,
+ 0x3c,0x0c,0x7e,0x1c,0x3f,0xde,0xdf,0xfc,0x02,0xd6,0x4d,0x8a,0x93,0xb4,0xf1,0x6f,
+ 0xe5,0x14,0xbf,0x3b,0x9c,0x77,0xf6,0xef,0xc4,0xdd,0x43,0x1e,0x5e,0x93,0x6b,0x66,
+ 0x0f,0x79,0x18,0x71,0xff,0x00,0x8f,0x52,0x9d,0x23,0xe2,0x4d,0xf0,0xc4,0xfa,0xd5,
+ 0x95,0x92,0x1e,0xc9,0x8c,0x8f,0xfc,0x76,0xba,0x96,0xbc,0x95,0xff,0x00,0x8d,0x89,
+ 0xa6,0x6f,0x90,0x8e,0x49,0x35,0xa2,0xaf,0x08,0xff,0x00,0x0e,0x8c,0x17,0xca,0xff,
+ 0x00,0x99,0xd3,0x1e,0x1f,0xa3,0x6f,0xde,0xd7,0xa9,0x2f,0xfb,0x7a,0xdf,0x92,0x47,
+ 0x2a,0xff,0x00,0x0e,0xfc,0x43,0x7b,0x9f,0xb7,0x78,0xd2,0x65,0x07,0xa8,0x87,0x70,
+ 0xfe,0xa2,0x9b,0x1f,0xc1,0xfd,0x36,0x55,0x22,0xf7,0x5b,0xd4,0x2f,0x58,0x9e,0x79,
+ 0x1c,0xfe,0x79,0xae,0xaf,0x73,0x67,0xd3,0xf1,0xa8,0xa6,0x95,0xd1,0x0e,0x08,0x0d,
+ 0x8c,0x02,0x79,0xc5,0x6c,0xb1,0x95,0xd6,0x90,0x69,0x7a,0x24,0xbf,0x42,0xbf,0xb0,
+ 0x32,0xd4,0xaf,0x3a,0x6e,0x5e,0xb2,0x93,0xfc,0xd9,0x91,0x6d,0xf0,0x87,0xc2,0xb6,
+ 0xd8,0xdd,0x69,0x71,0x70,0xdf,0xf4,0xd6,0x62,0x33,0xf9,0x56,0xbd,0xaf,0x83,0x3c,
+ 0x3b,0x62,0x33,0x16,0x89,0x67,0xc7,0x19,0x93,0xe7,0x35,0x8f,0xad,0xde,0x5d,0x59,
+ 0x69,0xcf,0x22,0x5c,0xbf,0x9a,0x48,0x55,0xc2,0x80,0x07,0x35,0xca,0x36,0xa7,0xa8,
+ 0x4f,0x9f,0x32,0xf6,0x76,0xff,0x00,0x75,0xf6,0xff,0x00,0x2c,0x57,0xa7,0x87,0xc3,
+ 0xe3,0x31,0xb1,0xe7,0xf6,0x9a,0x7a,0xb3,0xe7,0x33,0x0c,0xc3,0x26,0xc8,0xea,0xaa,
+ 0x3f,0x56,0x4e,0x56,0xbe,0x91,0x8f,0xe6,0xfd,0x0f,0x50,0x6b,0xab,0x6d,0x2e,0xdd,
+ 0x8d,0xbd,0xbd,0xad,0xa0,0x41,0x91,0xe5,0xc4,0xab,0xd3,0xde,0xa7,0xff,0x00,0x84,
+ 0xd2,0x04,0x00,0x1b,0xa6,0x9d,0xc7,0xf0,0xa1,0x2f,0xf9,0x81,0x5e,0x69,0x79,0xbc,
+ 0xf8,0x5b,0x73,0xe5,0xe5,0x24,0xe2,0x46,0xe5,0x88,0xdd,0xeb,0x58,0x6b,0xab,0x5e,
+ 0xcd,0xb6,0x25,0xb8,0x91,0xb1,0xc0,0x54,0xef,0xf9,0x56,0xd8,0x4c,0xb1,0x56,0xe6,
+ 0x75,0x27,0xf0,0xbb,0x18,0x66,0xdc,0x4d,0x2c,0x1a,0xa5,0x1c,0x3d,0x2f,0x8e,0x2a,
+ 0x5d,0xad,0x7f,0x24,0x8f,0xb3,0x7c,0x1d,0xa8,0xae,0xbd,0xa4,0x42,0xd1,0x16,0x92,
+ 0x68,0xa2,0x43,0x32,0x9e,0x4a,0x96,0x07,0x19,0xfc,0x8d,0x6c,0x32,0x6d,0xe1,0xc1,
+ 0x07,0xe9,0x5e,0x4b,0xf0,0x12,0xde,0xfb,0xc3,0x7a,0x5d,0xe5,0xc6,0xa3,0x04,0xb1,
+ 0x7d,0xac,0xc6,0xd1,0x16,0x3f,0x3e,0xd0,0x1b,0x9f,0x6f,0xbd,0x5e,0xc7,0x6b,0xe2,
+ 0xf8,0x6e,0x00,0x5f,0x39,0xb6,0x8e,0x71,0x32,0x2b,0x83,0xff,0x00,0x7d,0x03,0x5e,
+ 0xeb,0x5c,0x9e,0xea,0xd5,0x23,0xf2,0x59,0x4b,0xda,0xc9,0xce,0x5a,0x36,0xee,0x53,
+ 0xca,0x91,0x82,0x01,0x1e,0xf4,0xc6,0x85,0x0a,0xb0,0x3c,0xe7,0xae,0x79,0x15,0xba,
+ 0x2f,0x2c,0x6f,0x4f,0xef,0x2d,0x2c,0xa5,0x27,0xf8,0xa0,0x66,0x89,0x87,0xe4,0x58,
+ 0x7e,0x82,0x9a,0x74,0xbd,0x32,0x62,0x76,0xcf,0x73,0x6a,0xdd,0x70,0x55,0x65,0x1f,
+ 0xa1,0x07,0xf4,0xa5,0xce,0xba,0x91,0xec,0xd9,0x80,0x88,0xf0,0x42,0xc9,0x13,0xac,
+ 0x7c,0xe7,0x90,0x7f,0xa1,0x15,0x1a,0xda,0xb2,0x17,0xf2,0xa7,0x21,0x5c,0x96,0x70,
+ 0xe9,0xbb,0x9f,0x6f,0x98,0x7e,0xb9,0xad,0xbf,0xf8,0x46,0x5e,0x77,0x22,0xd2,0xfe,
+ 0xd2,0x77,0xff,0x00,0x9e,0x66,0x5f,0x2d,0xc7,0xe0,0xe0,0x55,0x5b,0xcd,0x07,0x52,
+ 0xb0,0x05,0xae,0x2d,0x65,0x8d,0x3a,0x09,0x0c,0x7f,0x29,0xfa,0x37,0x4a,0xae,0x64,
+ 0xfa,0x90,0xd3,0x46,0x51,0x8e,0x4b,0x7d,0xc1,0x97,0xcd,0x52,0x4e,0x1b,0x80,0x70,
+ 0x7d,0x6a,0x17,0xba,0x61,0x6d,0x24,0x72,0x83,0x19,0x04,0x85,0x25,0x8f,0x4e,0xdf,
+ 0x37,0x4a,0xb7,0x9e,0xbd,0x7f,0x0a,0x40,0x54,0x67,0x0a,0x0f,0x1d,0x4d,0x5d,0x91,
+ 0x0d,0xb2,0x0b,0x6b,0xff,0x00,0xb4,0x46,0x9b,0xa6,0x55,0x9a,0x3c,0x61,0x99,0x87,
+ 0x3c,0x7f,0x23,0x53,0x6c,0xb4,0xbc,0x26,0x46,0x84,0x33,0x67,0x69,0x20,0xe3,0x91,
+ 0x4d,0x9d,0x56,0xe0,0x2e,0xf0,0x18,0x81,0x8d,0xdd,0xea,0x15,0xb3,0x8c,0x67,0x85,
+ 0x14,0xec,0x49,0xf2,0xcb,0x6b,0x7f,0x13,0x65,0x3c,0x68,0xf6,0xf1,0x67,0xd4,0x0f,
+ 0xfe,0x2a,0x9a,0x1b,0xe2,0x7d,0xc8,0xe4,0xda,0xdb,0x03,0xdf,0x8f,0xfe,0xbd,0x75,
+ 0xa7,0xc4,0x12,0xb8,0x3b,0xee,0x01,0x19,0xf5,0xc5,0x56,0x93,0x5d,0x55,0x18,0x6b,
+ 0xb5,0xc7,0xbc,0x95,0xf2,0xcf,0x36,0xc4,0x3d,0x14,0x57,0xe3,0xfe,0x67,0xee,0x31,
+ 0xe0,0xdc,0xb6,0x3f,0x15,0x49,0x3f,0x9a,0xff,0x00,0xe4,0x4e,0x46,0xd3,0xc2,0xbe,
+ 0x39,0x79,0xee,0x90,0xeb,0x10,0x5b,0x48,0xed,0xe6,0xc8,0x47,0x25,0x89,0xe3,0x3d,
+ 0x3f,0xd9,0xfd,0x2a,0x63,0xf0,0xdb,0xc4,0x97,0x07,0x17,0x5e,0x2d,0x65,0xcf,0xf7,
+ 0x09,0xff,0x00,0x11,0x5b,0x11,0xeb,0x90,0x35,0xf4,0x85,0x6e,0x15,0xc7,0x96,0x01,
+ 0xda,0x73,0xdc,0xd2,0x5e,0x78,0x9e,0xce,0xc7,0x06,0x69,0x1d,0x77,0x74,0x1e,0x5b,
+ 0x1c,0xfe,0x95,0xcd,0x2c,0x4e,0x22,0xa4,0xfd,0xd8,0x2b,0xbf,0xee,0xab,0xfe,0x47,
+ 0x6c,0x32,0x3c,0xab,0x0f,0x47,0x9a,0xa4,0xdf,0x2a,0xef,0x36,0x97,0xe0,0xd2,0x32,
+ 0x47,0xc1,0xb8,0xe6,0xe6,0xf7,0xc4,0xd7,0x12,0x9e,0xe0,0x7f,0xf5,0xc9,0xab,0x30,
+ 0x7c,0x19,0xf0,0xd2,0x9f,0xdf,0x5d,0xde,0x5c,0x1e,0xe7,0x76,0x07,0xf2,0xa4,0x97,
+ 0xc7,0xb6,0x7f,0xc1,0x1c,0xcf,0xfe,0xea,0x01,0xfc,0xcd,0x40,0xbe,0x3d,0x12,0x4e,
+ 0x89,0x1d,0xb4,0x88,0x1d,0x82,0xee,0x77,0x1c,0x67,0xe9,0x5b,0xff,0x00,0xc2,0x93,
+ 0x57,0xb3,0x4b,0xd2,0xc7,0x34,0x63,0xc3,0x10,0x92,0x87,0xb9,0x26,0xf4,0xdd,0xcb,
+ 0xf5,0x66,0xcc,0x1f,0x0c,0xfc,0x1f,0x6a,0x3f,0xe3,0xc9,0xa6,0x23,0xbc,0x92,0x13,
+ 0x9f,0xd6,0xaf,0x5b,0xf8,0x77,0xc3,0x56,0x98,0xf2,0xb4,0x5b,0x4e,0x38,0xc9,0x8c,
+ 0x13,0xfd,0x6b,0x38,0xdc,0x5e,0x38,0xe1,0xa2,0x4f,0xc0,0x9a,0x9e,0xdd,0xe5,0x0b,
+ 0xfb,0xd6,0x0e,0xc7,0xb8,0x18,0xaf,0x32,0x75,0xeb,0x4b,0xe2,0x9b,0xfb,0xcf,0xaa,
+ 0xa3,0x80,0xc1,0x53,0x7f,0xbb,0xa1,0x15,0xff,0x00,0x6e,0xa3,0x6a,0x29,0xec,0xad,
+ 0xb0,0xb0,0x59,0x5b,0xc4,0x07,0x4d,0xb1,0x01,0x53,0xa6,0xb5,0xb4,0x90,0x06,0x07,
+ 0xa0,0x00,0x56,0x19,0x90,0x11,0xd3,0xf1,0xa6,0x96,0xe3,0xbd,0x73,0x36,0xde,0xec,
+ 0xf4,0xa3,0x68,0xe8,0x95,0x8d,0xc9,0x35,0xa6,0x1f,0xc2,0x3f,0xe0,0x4d,0x9a,0x84,
+ 0xea,0xee,0xc7,0xf8,0x2b,0x27,0x07,0xd7,0x8a,0x3a,0x8e,0x2a,0x6c,0x3b,0x9a,0x33,
+ 0xea,0xb2,0x47,0x1b,0x48,0xd2,0x2a,0xa0,0x19,0x24,0x0e,0x95,0x4b,0xfb,0x4e,0xee,
+ 0x6f,0xb9,0x6b,0x21,0xcf,0x42,0xec,0xab,0xfa,0x75,0xaa,0xb7,0x64,0x88,0x90,0x03,
+ 0xff,0x00,0x2d,0x13,0xff,0x00,0x42,0x15,0x6e,0x12,0x4c,0x8a,0x3d,0xc5,0x69,0x08,
+ 0xc7,0x4d,0x37,0x30,0xab,0x39,0x24,0xf9,0x5e,0xc8,0xd0,0xd0,0x34,0x4f,0x10,0xf8,
+ 0xaa,0xf5,0xad,0xb4,0xbb,0x24,0xb9,0x99,0x53,0xcc,0x2a,0x8c,0xcf,0x85,0xc8,0x19,
+ 0xe8,0x06,0x39,0x1d,0xfb,0xd7,0x5f,0x6d,0xf0,0x1f,0xc7,0xb7,0x40,0x34,0x90,0x5b,
+ 0xda,0x27,0x72,0xec,0x99,0x1f,0xf8,0xf9,0xfe,0x54,0x78,0x10,0xdd,0xe8,0xba,0x7c,
+ 0xd7,0x51,0xca,0x21,0x37,0x56,0x11,0xc9,0x19,0x17,0x8d,0x6b,0x94,0xfb,0x4a,0xa1,
+ 0x06,0x45,0xe5,0x32,0x51,0xba,0x75,0x1f,0x5a,0xf6,0x4d,0x36,0x3b,0x8d,0x56,0xd7,
+ 0xc4,0xf1,0xdc,0x5d,0xcf,0x24,0x4b,0x2d,0xbb,0xaf,0xdb,0x2d,0x5a,0x61,0x24,0x4b,
+ 0xb5,0xd9,0x4c,0x6a,0x72,0x41,0x98,0x5c,0xa3,0x2f,0x5c,0x0c,0x74,0x02,0xbf,0x47,
+ 0xc6,0x70,0xf6,0x17,0x05,0x57,0xd9,0xa6,0xde,0x88,0xfe,0x7c,0xa1,0xc7,0x59,0xa6,
+ 0x3a,0x97,0x3f,0xbb,0x1d,0x5e,0xc9,0xff,0x00,0x99,0xe4,0xd1,0x7c,0x03,0xd4,0x51,
+ 0xe4,0x5d,0x4b,0xc5,0xba,0x55,0x9b,0x44,0xca,0xb2,0x47,0xf6,0xa5,0xdc,0x8c,0xdf,
+ 0x74,0x11,0xb4,0x60,0x9e,0xc3,0x3c,0xd4,0xba,0xd7,0xc0,0xed,0x1b,0x45,0xd1,0xaf,
+ 0xaf,0x6e,0x3c,0x58,0xb7,0x77,0x10,0x42,0xd2,0x24,0x31,0xa3,0xb2,0xbb,0x7c,0xb8,
+ 0x04,0x87,0xe8,0x4c,0x91,0xf6,0xfe,0x21,0x5e,0x8f,0xa3,0xf8,0x7f,0x55,0xb2,0x82,
+ 0xda,0x58,0x2d,0xb5,0x15,0xd4,0x22,0x8a,0xc7,0x12,0x18,0xa0,0x45,0x8e,0x65,0xb6,
+ 0x78,0xca,0xe5,0x86,0x5a,0x11,0xbc,0x96,0x1c,0xb0,0x67,0x38,0xe7,0x38,0xe4,0xf5,
+ 0x8f,0x0f,0x6b,0x3a,0x42,0x8b,0xbd,0x6f,0x54,0xd3,0x61,0xb1,0xb4,0xd4,0x2e,0xee,
+ 0x27,0xb3,0x69,0x63,0x2f,0x73,0x67,0xb6,0xdf,0xc8,0x88,0x29,0xea,0xd9,0x88,0xe4,
+ 0x77,0xc0,0xf5,0xa5,0x47,0x2e,0xc2,0xc6,0x71,0x4e,0x3d,0x51,0xc7,0x5f,0x88,0xf3,
+ 0x5a,0xb0,0x7f,0xbe,0x7f,0x24,0xbf,0xc8,0xf1,0x7d,0x43,0x48,0xb7,0xd3,0xf5,0x07,
+ 0x81,0xa0,0xb7,0x62,0xa8,0xad,0xb9,0x57,0x76,0x49,0xcf,0x73,0x9f,0x4a,0xad,0x0a,
+ 0x2d,0xbd,0xd4,0xa6,0x24,0x08,0x19,0x14,0x90,0xa3,0x03,0x39,0x3c,0xd6,0xdf,0x89,
+ 0xef,0xf4,0xcd,0x4b,0x5c,0x79,0xb4,0x8b,0x63,0x6b,0x65,0xe4,0xa2,0x84,0x2d,0x9c,
+ 0xb6,0x58,0x93,0xd4,0xfa,0x8e,0x33,0x58,0x73,0xcc,0xb0,0xdc,0x1c,0x9c,0x7c,0xa3,
+ 0xf9,0x9a,0xf9,0x3c,0xe2,0x94,0x69,0xe3,0xaa,0xd3,0xa3,0xf0,0xab,0x7e,0x4b,0xd7,
+ 0xaf,0x99,0xfb,0x47,0x0d,0x56,0xa9,0x57,0x28,0xa1,0x5f,0x13,0x7e,0x77,0x7b,0xb7,
+ 0xbe,0xee,0xdb,0xdb,0xa1,0x70,0x4a,0xde,0xb8,0xa0,0x31,0xcf,0x5f,0xd6,0xb3,0x9f,
+ 0x51,0x8d,0x39,0xde,0x38,0xf7,0xa8,0x24,0xd6,0xe0,0x8f,0xfe,0x5a,0x0f,0xa5,0x78,
+ 0xf1,0xa3,0x37,0xb2,0x3e,0x8e,0x78,0xaa,0x50,0xd6,0x52,0x46,0xb0,0x73,0xd2,0x9c,
+ 0x85,0x09,0x1b,0xd8,0x85,0xee,0x57,0x9a,0xc9,0x82,0xfa,0xe2,0xf0,0xff,0x00,0xa3,
+ 0x5a,0x5c,0x5c,0x67,0xa7,0x95,0x13,0x36,0x7f,0x21,0x5b,0x3a,0x77,0x83,0xfc,0x53,
+ 0xad,0x91,0xf6,0x4d,0x1a,0x52,0x0f,0x46,0x95,0xd2,0x3f,0xfd,0x08,0x83,0x5d,0x31,
+ 0xc2,0x55,0x7a,0xf2,0x9e,0x55,0x6c,0xeb,0x05,0x4b,0x49,0x55,0x5f,0x79,0x5e,0xfe,
+ 0xda,0xca,0xf6,0xdd,0xa1,0x91,0xa6,0x21,0x88,0x3b,0x97,0x00,0x8c,0x1c,0xfb,0xd5,
+ 0x08,0xb4,0x6d,0x32,0x2e,0xb0,0x33,0xf7,0xcc,0x92,0x93,0xfc,0xb1,0x5d,0xbd,0x9f,
+ 0xc0,0xff,0x00,0x16,0x5e,0x73,0x71,0x3d,0x8d,0x9a,0xf7,0x0d,0x2b,0x3b,0x7e,0x40,
+ 0x63,0xf5,0xad,0x41,0xfb,0x3f,0x5d,0xf9,0x39,0x6d,0x74,0x49,0x20,0x23,0x31,0xa4,
+ 0x3b,0x01,0xf5,0xf9,0x89,0x3f,0x9e,0x3f,0x0a,0xf4,0x68,0xd1,0xc4,0x41,0x72,0x42,
+ 0x76,0x5e,0xa7,0xc9,0xe3,0x33,0x7c,0x9a,0xb5,0x4f,0x6b,0x5a,0x0a,0x72,0x5a,0x6d,
+ 0x73,0xce,0x2f,0x26,0x81,0xed,0x7c,0x83,0x1c,0x42,0x2f,0x95,0x76,0x05,0x18,0xc6,
+ 0x69,0x74,0x3d,0x1e,0x3b,0xab,0xf8,0xed,0xec,0x6d,0x4c,0xb2,0x33,0x00,0xa9,0x12,
+ 0x57,0xa4,0x5a,0xfc,0x28,0xb5,0xd0,0xae,0x0c,0x97,0xba,0x64,0x9a,0x9a,0xa9,0xc8,
+ 0xdf,0x3b,0x15,0x1f,0x5d,0x83,0x2d,0xff,0x00,0x7c,0x57,0x73,0xa1,0x6b,0x1a,0x4e,
+ 0x98,0xa2,0xda,0xdf,0x4b,0x5b,0x06,0xc7,0x29,0x04,0x3f,0x33,0x7b,0xed,0x5c,0xb6,
+ 0x3d,0xdb,0x15,0xdb,0x4f,0x03,0x28,0xaf,0x7a,0x57,0x3c,0x2c,0x5f,0x13,0xd1,0x9b,
+ 0xfd,0xcd,0x2d,0x76,0x4d,0xf4,0x2a,0x41,0x63,0x25,0x8d,0xad,0xbc,0x0e,0x36,0x48,
+ 0xaa,0x17,0x95,0xc6,0x70,0x28,0x8e,0x4d,0x8c,0x41,0x7d,0xc3,0xb0,0x3c,0x1f,0xe5,
+ 0x5d,0x4c,0x1a,0xa5,0x95,0xfe,0xe0,0x8c,0x8e,0x57,0xa8,0xdc,0x08,0x5f,0xae,0x38,
+ 0x15,0x24,0x9a,0x7d,0x94,0xeb,0x81,0x02,0x85,0x61,0xc1,0x43,0x8e,0x7f,0x0e,0x2b,
+ 0xd5,0x55,0x12,0xd1,0xa3,0xf3,0xf9,0xc1,0xca,0x4e,0x57,0x39,0x90,0xcf,0xb7,0x72,
+ 0x95,0xe3,0xee,0xe0,0xf2,0x4d,0x58,0x83,0x5f,0xbc,0xb7,0x5c,0x89,0x5c,0x6d,0xc6,
+ 0x72,0x43,0x63,0xfa,0xd6,0x8c,0x9e,0x1c,0x0e,0x41,0x4c,0xa6,0x09,0x20,0x85,0xc7,
+ 0xd6,0xa9,0xdd,0x68,0x17,0x71,0xc6,0xdb,0x17,0x72,0xf7,0xe0,0x1a,0xd1,0x4a,0x32,
+ 0x33,0x71,0x94,0x4b,0x09,0xe2,0x7b,0xa6,0x53,0xe6,0x45,0x1c,0xab,0x8c,0xe0,0x13,
+ 0x9f,0xca,0xae,0xd9,0xf8,0x98,0xdb,0xb6,0xf8,0x9a,0x7b,0x4e,0x39,0xf2,0x9c,0xa8,
+ 0xfd,0x0f,0xf4,0xae,0x5a,0x6d,0x3e,0x7b,0x60,0x43,0x2b,0x82,0xb8,0xc7,0xca,0x47,
+ 0xd6,0xa2,0xdc,0x54,0x85,0x65,0x27,0x6f,0xf7,0xc6,0x6a,0x9d,0x38,0xb1,0x29,0xc9,
+ 0x1d,0xcb,0x6b,0xa2,0xef,0x26,0x57,0x86,0xe1,0xcf,0x1f,0xbe,0x8c,0x6e,0xfc,0xc6,
+ 0x0f,0xeb,0x4d,0xdf,0x6b,0x20,0xc3,0x44,0xd1,0x93,0xde,0x27,0xdd,0xfa,0x1f,0xf1,
+ 0xae,0x20,0x5c,0x79,0x6d,0x90,0xcc,0x3e,0x99,0xe4,0x53,0x97,0x51,0x92,0x16,0x20,
+ 0x12,0xa0,0xf5,0xc9,0xa1,0x53,0x69,0x68,0x3f,0x68,0x9e,0xe8,0xeb,0xe4,0xb3,0x89,
+ 0x89,0xf2,0xee,0x00,0xf6,0x91,0x0a,0xfe,0xa3,0x22,0x98,0xba,0x6b,0xe0,0xed,0x28,
+ 0xe3,0xd4,0x48,0xa7,0xfa,0xd6,0x02,0x6b,0x73,0x42,0x87,0x8d,0xf8,0x1d,0x4f,0x19,
+ 0xfc,0xaa,0x6f,0xed,0xb0,0xdd,0x63,0x52,0x7f,0xda,0x34,0xd4,0x64,0x85,0xee,0x33,
+ 0xe2,0xf7,0xf1,0x02,0xe7,0x29,0x6a,0xa3,0xea,0x6a,0x16,0xd7,0xa5,0x3f,0x76,0x24,
+ 0x5f,0xc0,0xd7,0x3a,0x97,0x52,0xc8,0xc0,0x16,0xfc,0x85,0x5c,0xb6,0x84,0xce,0xdf,
+ 0x34,0xae,0x3e,0x98,0xff,0x00,0x0a,0xed,0x72,0xa5,0x0f,0xb3,0xf8,0x22,0xa3,0x2c,
+ 0x4d,0x6d,0x1d,0x46,0xfd,0x5b,0x3a,0x9f,0x0a,0xea,0x73,0xcf,0xa9,0x32,0xb1,0x50,
+ 0xbb,0x79,0x0a,0x31,0x9a,0xb5,0xe2,0x90,0xcf,0xaa,0x2f,0x98,0xd8,0x43,0x1a,0xec,
+ 0xcf,0x43,0xd7,0x34,0xdf,0x05,0x69,0xf1,0x43,0xa8,0xce,0x4e,0xe9,0x08,0x8d,0x48,
+ 0xde,0x7a,0x64,0x9f,0x4f,0xa0,0xae,0xce,0xe1,0xa3,0x9d,0x55,0x64,0xb7,0x81,0xc2,
+ 0xf2,0x03,0xc6,0x1b,0x1f,0x9d,0x7c,0xbe,0x23,0x19,0x1c,0x3e,0x3b,0xda,0xf2,0xdf,
+ 0x4b,0x1f,0xaa,0x65,0xd9,0x3d,0x5c,0x7e,0x45,0xf5,0x47,0x52,0xcd,0xca,0xf7,0xdf,
+ 0x66,0x79,0xa9,0x28,0x0e,0x03,0x06,0x3e,0xd5,0xa7,0xa3,0x68,0xd7,0x3a,0x9d,0xe4,
+ 0x29,0x1c,0x12,0x79,0x61,0x83,0x33,0x94,0x21,0x40,0x1c,0x9e,0x6b,0xb3,0x49,0xda,
+ 0x3c,0x88,0xc2,0xc6,0x07,0x40,0x8a,0x17,0xf9,0x52,0x34,0xd2,0x33,0x73,0x23,0x1f,
+ 0xa9,0xa5,0x5b,0x3a,0x72,0x83,0x8c,0x21,0x6b,0xf9,0x8b,0x07,0xc1,0x70,0xa3,0x56,
+ 0x35,0x2b,0x56,0xe6,0xe5,0x69,0xd9,0x2b,0x5e,0xde,0x77,0x2f,0x0d,0x3e,0x72,0x72,
+ 0x54,0x28,0xff,0x00,0x69,0x80,0xa2,0xe2,0x35,0x85,0xc2,0x87,0x0f,0xc7,0x25,0x4f,
+ 0x15,0x43,0xce,0x62,0x70,0x4e,0x78,0xcd,0x34,0xb9,0xcf,0xe3,0x5f,0x2f,0x6e,0xa7,
+ 0xea,0x1c,0xf6,0x2d,0xee,0x1f,0x85,0x26,0xf1,0xff,0x00,0xd6,0xac,0xe7,0xb8,0x7c,
+ 0xf5,0xef,0x8a,0xa7,0x35,0xec,0xaa,0x78,0x35,0x4a,0x9d,0xcc,0xe5,0x5d,0x47,0xa1,
+ 0xba,0x25,0xf5,0x3c,0x53,0x4d,0xca,0x01,0xf7,0xb8,0x15,0xca,0x5c,0xea,0xb7,0x0a,
+ 0x18,0x86,0x1c,0x7b,0x56,0x45,0xe6,0xbb,0x76,0xa3,0x21,0xc7,0x4c,0xf4,0xae,0xb8,
+ 0x61,0x1c,0xfa,0x9e,0x6d,0x6c,0xce,0x14,0x17,0x33,0x8b,0x3b,0xb9,0xaf,0x11,0xb6,
+ 0x2e,0xe0,0x3e,0x75,0xff,0x00,0xd0,0x85,0x59,0x3a,0x95,0xbc,0x0e,0x09,0x95,0x38,
+ 0x39,0xc6,0x6b,0xc5,0xf5,0x0f,0x13,0xdf,0xa9,0xe2,0x41,0xf2,0x9e,0x38,0xa9,0xb4,
+ 0x0d,0x52,0xe7,0x56,0xbd,0xf2,0x6e,0x24,0x25,0x5b,0xba,0xf0,0x47,0x15,0xe9,0x47,
+ 0x2a,0x93,0x49,0xf3,0x1f,0x25,0x5f,0x8b,0xe8,0xd3,0xe6,0x8f,0xb2,0x6e,0xfe,0x87,
+ 0xba,0xe8,0x3f,0x16,0xaf,0xbc,0x28,0xe8,0xd6,0x97,0xb0,0x96,0x8e,0xdf,0xec,0xc9,
+ 0xe6,0x40,0xae,0x11,0x37,0xef,0xe0,0x36,0x46,0x77,0x12,0x7f,0x1a,0xb9,0x77,0xf1,
+ 0xf3,0xc5,0xba,0xb6,0x42,0xeb,0x5a,0x84,0xa4,0x9e,0x96,0xa8,0xb1,0xff,0x00,0xe8,
+ 0x0a,0x2b,0xcb,0x34,0x29,0x7c,0xab,0x97,0x5d,0x88,0xdb,0x1b,0x01,0x99,0x41,0x35,
+ 0xe8,0x36,0x77,0xd2,0x85,0x00,0x60,0x0c,0x74,0x02,0xbd,0x7c,0x44,0xb1,0x35,0x65,
+ 0xcf,0x5a,0xb3,0x93,0xfb,0x8f,0x86,0xa5,0x98,0xe5,0xf4,0x23,0xcb,0x86,0xc1,0x41,
+ 0x2f,0x3d,0x7f,0x3b,0x89,0x26,0xb9,0xe2,0xff,0x00,0x10,0x1c,0x3a,0x6a,0x77,0x60,
+ 0xff,0x00,0xcf,0xe5,0xc3,0x63,0xff,0x00,0x1f,0x6a,0x7d,0xb7,0x82,0x7c,0x4b,0x77,
+ 0xf7,0x96,0xce,0xc4,0x1e,0x49,0x96,0x4c,0xe3,0xfe,0xf9,0x06,0xb4,0x21,0xbd,0x95,
+ 0x08,0xda,0xd8,0xfa,0x13,0x56,0xe4,0xd7,0x2f,0x0c,0x4d,0x19,0x93,0xe5,0x23,0xb8,
+ 0xae,0x2f,0xab,0xa9,0x3f,0x79,0xdf,0xd5,0xb3,0xa1,0x67,0xf8,0x98,0xaf,0xdd,0x46,
+ 0x30,0x5e,0x51,0x48,0xb5,0xa5,0xfc,0x18,0xbf,0xd4,0x5d,0x45,0xc7,0x89,0x20,0x89,
+ 0x48,0xe4,0x43,0x03,0x31,0xcf,0xa7,0x24,0x57,0x5b,0x61,0xfb,0x3a,0x68,0x0a,0xea,
+ 0xf7,0x7a,0xf5,0xed,0xcb,0x9c,0x65,0x32,0xa8,0xbf,0x4e,0x06,0x7f,0x5a,0xe7,0x74,
+ 0x4d,0x62,0xf0,0xe7,0x13,0xb2,0x14,0x1c,0x14,0x38,0x3d,0x2b,0xbb,0xd0,0x35,0x29,
+ 0xb5,0x16,0xf2,0xe7,0x21,0xf6,0x90,0x03,0x63,0xe6,0xed,0xce,0x6a,0x95,0x38,0x53,
+ 0x76,0xe5,0x47,0x1d,0x4c,0xd7,0x1d,0x5d,0x7b,0xd5,0x59,0xbb,0xa6,0x7c,0x09,0xf8,
+ 0x78,0x96,0xf9,0x3a,0x71,0x92,0x60,0x39,0x33,0xcf,0x23,0x83,0xf9,0xb6,0x3f,0x4a,
+ 0xb8,0x3e,0x0a,0xe9,0x96,0xb0,0x09,0x34,0x6b,0x6b,0x7b,0x66,0xcf,0x29,0x34,0x0b,
+ 0xc7,0xaf,0xcc,0xbf,0xd7,0xfa,0xd3,0x60,0xb9,0x9a,0xd7,0x25,0x24,0x6c,0xa1,0xc0,
+ 0xcf,0x7a,0xeb,0xf4,0x8d,0x42,0x4c,0x2b,0xed,0x5d,0xcb,0x8c,0x1c,0xb7,0x7f,0x6c,
+ 0xe2,0xba,0xa3,0x68,0xec,0x79,0x13,0xab,0x52,0xa7,0xc7,0x26,0xfe,0x67,0x9b,0xea,
+ 0xfe,0x06,0xd5,0x34,0x60,0xae,0xf6,0x8e,0xc0,0x74,0x92,0xd4,0x02,0x98,0xf5,0xc8,
+ 0xe4,0x63,0xe9,0x58,0x4e,0xb3,0xd9,0xb6,0x37,0x30,0x71,0xc8,0x51,0xc9,0x1e,0xbd,
+ 0x39,0xfd,0x2b,0xdc,0xad,0x7c,0x51,0x7f,0x23,0xc8,0xac,0xe8,0x55,0x72,0x06,0x50,
+ 0x67,0xf3,0xeb,0x5e,0x63,0xe2,0xbf,0x16,0xdd,0xea,0x4d,0x25,0xbc,0xb0,0x5a,0xaa,
+ 0x83,0xb4,0x3a,0x45,0x86,0xc0,0xc8,0xeb,0x9a,0xea,0x8b,0x91,0xc9,0x25,0x63,0x16,
+ 0x1f,0x10,0xea,0x16,0x64,0xa8,0xb8,0x38,0xe3,0x89,0x17,0x76,0x47,0xe3,0x5a,0x50,
+ 0x78,0xb5,0x9d,0x01,0x96,0x10,0xc3,0xf8,0x8a,0x13,0xd3,0xd7,0x1f,0xfd,0x7a,0xe6,
+ 0x1b,0xf7,0x93,0x85,0x63,0x90,0x40,0xfd,0x71,0x51,0xb1,0x31,0xca,0x81,0x4e,0x07,
+ 0x7f,0x7e,0x71,0x57,0xec,0xe1,0x2e,0x84,0x2a,0x93,0x8e,0x97,0x3b,0xb8,0x35,0xbb,
+ 0x4b,0x81,0xf2,0xc8,0x15,0xb3,0xfc,0x5c,0x53,0xae,0x6d,0xed,0x2f,0xd5,0x44,0xf0,
+ 0xc7,0x38,0x1c,0xe1,0x86,0x45,0x70,0xc4,0xe5,0x03,0x63,0x04,0x9c,0x12,0x3d,0xbf,
+ 0xfd,0x75,0x6e,0xda,0xea,0x68,0x89,0x09,0x2b,0x28,0x03,0x8c,0x1a,0x9f,0x63,0xfc,
+ 0xac,0xd1,0x57,0xfe,0x64,0x74,0x92,0x68,0xb1,0x3c,0xa1,0xe2,0xb8,0x78,0xd9,0x7a,
+ 0x47,0x32,0x2c,0xd1,0x8f,0x65,0x57,0x04,0x2f,0xd5,0x70,0x69,0x5a,0x3b,0x9b,0x45,
+ 0x24,0x5b,0x6e,0xc7,0x57,0xb3,0xb8,0x65,0x2d,0xee,0x56,0x5f,0x30,0x9f,0xa2,0xb2,
+ 0x0a,0xa9,0xa2,0x6a,0x53,0xdd,0xb8,0x49,0x48,0x6e,0xbc,0xe3,0x07,0xef,0x11,0x5b,
+ 0x79,0x21,0x41,0x0c,0x54,0xfb,0x56,0x4d,0xca,0x2e,0xcc,0xd1,0x59,0xab,0xa2,0x8c,
+ 0x7a,0xe3,0xae,0x04,0x97,0x49,0x01,0xf4,0xbd,0x85,0xa2,0xfc,0x01,0x1b,0xd0,0x7d,
+ 0x5a,0x45,0xad,0x08,0xf5,0x4b,0x85,0xb5,0x6b,0x96,0xb7,0x2f,0x68,0xbf,0xf2,0xf5,
+ 0x03,0x89,0xe0,0x1f,0x59,0x50,0x94,0xfc,0x37,0x1a,0x6a,0xa8,0x9e,0x25,0x2e,0x01,
+ 0x3c,0x8e,0x95,0x95,0x71,0xa0,0x5a,0x40,0xdf,0x6e,0xb7,0xf3,0x2c,0xef,0x07,0x22,
+ 0x7b,0x59,0x0c,0x52,0x0f,0xf8,0x12,0xe0,0xfe,0xb4,0x7b,0xad,0xda,0xc4,0xb7,0x25,
+ 0xd4,0xd6,0x17,0xd6,0xb7,0xb0,0xae,0x1d,0x5d,0x5f,0xd3,0xf8,0xbe,0x9e,0xbf,0x85,
+ 0x41,0x75,0xa7,0xdb,0xc9,0xfc,0x18,0x3d,0x8a,0x9c,0x57,0x19,0xad,0x78,0x8a,0xf7,
+ 0x4c,0x6f,0x32,0x46,0x5d,0x40,0xb7,0x56,0xba,0x5f,0xde,0x1f,0xac,0xc9,0xb6,0x53,
+ 0xf8,0xb9,0xad,0xbd,0x66,0x59,0x74,0x5f,0x0e,0xe9,0xda,0x8d,0xbc,0xac,0x5e,0xe5,
+ 0x41,0x30,0xbf,0x31,0xa7,0xd3,0xb9,0xeb,0xdc,0x9a,0xd1,0x41,0xc5,0xe8,0xc4,0xa4,
+ 0xa5,0xb9,0x3d,0xce,0x8b,0x0e,0xd2,0x53,0xe6,0x6c,0xf1,0xb8,0xd5,0x19,0x74,0x7f,
+ 0x2d,0x40,0x0a,0xdc,0x82,0x72,0xa7,0x35,0x6e,0xde,0xed,0x9d,0xe0,0x52,0x91,0xe6,
+ 0x48,0xcb,0xb3,0x05,0xc1,0xcd,0x69,0x32,0xed,0x4f,0x94,0x95,0xfa,0x55,0xf3,0x35,
+ 0xa0,0xb9,0x23,0x2d,0x51,0xc9,0x3d,0x8c,0xf1,0x11,0xb5,0x76,0x8c,0x71,0x9e,0xbf,
+ 0x4a,0x42,0xf2,0xa7,0x0c,0xc1,0x0f,0x70,0x40,0x15,0xd5,0x83,0xb8,0x00,0x40,0x35,
+ 0x5e,0x45,0x50,0xd9,0xda,0x0e,0x46,0x79,0xad,0x39,0xfb,0x90,0xe9,0xb5,0xd4,0xff,
+ 0xd9};
diff --git a/lib/libesp32/JPEGDEC/test_images/st_peters.h b/lib/libesp32/JPEGDEC/test_images/st_peters.h
new file mode 100644
index 000000000..dffa105a1
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/test_images/st_peters.h
@@ -0,0 +1,1845 @@
+//
+// st_peters
+//
+const uint8_t st_peters[] PROGMEM = { 0xff,0xd8,0xff,0xdb,0x00,0x43,0x00,0x04,0x03,0x03,0x04,0x03,0x03,0x04,0x04,0x03,
+ 0x04,0x05,0x04,0x04,0x05,0x06,0x0a,0x07,0x06,0x06,0x06,0x06,0x0d,0x09,0x0a,0x08,
+ 0x0a,0x0f,0x0d,0x10,0x10,0x0f,0x0d,0x0f,0x0e,0x11,0x13,0x18,0x14,0x11,0x12,0x17,
+ 0x12,0x0e,0x0f,0x15,0x1c,0x15,0x17,0x19,0x19,0x1b,0x1b,0x1b,0x10,0x14,0x1d,0x1f,
+ 0x1d,0x1a,0x1f,0x18,0x1a,0x1b,0x1a,0xff,0xdb,0x00,0x43,0x01,0x04,0x05,0x05,0x06,
+ 0x05,0x06,0x0c,0x07,0x07,0x0c,0x1a,0x11,0x0f,0x11,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0xff,0xc0,0x00,0x11,
+ 0x08,0x01,0x40,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff,
+ 0xc4,0x00,0x1d,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x04,0x02,0x03,0x05,0x06,0x07,0x08,0x01,0x00,0x09,0xff,0xc4,
+ 0x00,0x42,0x10,0x00,0x02,0x01,0x02,0x05,0x03,0x02,0x04,0x04,0x04,0x04,0x04,0x05,
+ 0x04,0x03,0x00,0x01,0x02,0x03,0x04,0x11,0x00,0x05,0x12,0x21,0x31,0x06,0x13,0x41,
+ 0x22,0x51,0x07,0x14,0x61,0x71,0x23,0x32,0x81,0x91,0x08,0x42,0xa1,0xc1,0x15,0x52,
+ 0xb1,0xf0,0x24,0x33,0xd1,0xe1,0x16,0x25,0x43,0x62,0xf1,0x34,0x72,0x92,0xa2,0x26,
+ 0x82,0xc2,0xff,0xc4,0x00,0x1b,0x01,0x00,0x02,0x03,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x03,0x04,0x05,0x06,0x07,0xff,
+ 0xc4,0x00,0x32,0x11,0x00,0x01,0x04,0x01,0x03,0x02,0x04,0x05,0x03,0x04,0x03,0x01,
+ 0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x03,0x11,0x21,0x04,0x12,0x31,0x41,0x51,0x05,
+ 0x13,0x61,0xf0,0x22,0x71,0x81,0x91,0xa1,0x14,0xb1,0xd1,0x32,0x42,0xc1,0xe1,0x06,
+ 0x15,0x52,0xf1,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,
+ 0x00,0xde,0x1f,0x26,0x86,0x9e,0xf6,0x81,0x01,0xd5,0xc9,0x4d,0xc6,0xf8,0x83,0xeb,
+ 0x5e,0x86,0xa4,0xcf,0x32,0xc8,0xce,0xa6,0x86,0xa1,0x2f,0xda,0x95,0x46,0xca,0x7e,
+ 0xa3,0xc8,0xc6,0x8f,0x9c,0x65,0x72,0xc8,0xc1,0xe1,0x62,0x15,0x6f,0x75,0xb7,0xf5,
+ 0xc0,0x15,0x2a,0xe9,0x97,0x90,0xca,0xd6,0x0b,0x71,0xb7,0xf6,0xc7,0x64,0x3c,0x83,
+ 0x61,0x73,0x08,0x07,0x0b,0x8f,0x6a,0xe1,0x7a,0x79,0xe5,0x8a,0x40,0x35,0xa3,0x15,
+ 0x6d,0x26,0xe2,0xe0,0xda,0xe3,0xe8,0x79,0xc0,0xc7,0x16,0xfe,0xbb,0xcb,0x63,0xa3,
+ 0xea,0x1a,0xa4,0x8a,0x74,0x92,0xe5,0x49,0xd2,0x00,0xb6,0xa1,0x7b,0x5b,0x15,0x39,
+ 0x13,0x4b,0x10,0x0e,0x3b,0x6c,0x76,0xe0,0x0a,0xe7,0x38,0x51,0x48,0x02,0xf8,0x50,
+ 0xd8,0xe3,0xc5,0xc1,0x31,0x45,0xa9,0x75,0x94,0x25,0x7c,0x90,0x2f,0x87,0xba,0x4a,
+ 0x97,0xa5,0xa3,0x55,0x63,0x71,0xf5,0xfa,0xe2,0x4a,0x82,0xa1,0xa4,0x95,0x63,0x91,
+ 0xa4,0x05,0x8d,0x81,0x4e,0x6f,0xf6,0xc0,0xab,0x33,0x28,0x2c,0x09,0xdd,0x6c,0x47,
+ 0x8f,0xdb,0x04,0xd3,0x44,0x86,0x48,0x99,0x1f,0xb2,0xea,0x35,0x5c,0x7b,0xf8,0xc5,
+ 0x67,0x21,0x58,0x30,0xac,0xed,0x93,0xc8,0x66,0x14,0xea,0xe2,0x60,0xc9,0x74,0x63,
+ 0xe9,0x24,0x9f,0xa7,0x83,0x89,0xde,0x98,0xc8,0x27,0x8a,0xb8,0x3d,0x4e,0xb8,0xe2,
+ 0x45,0x37,0x75,0x6d,0xc3,0x7d,0x70,0xe7,0x48,0xe4,0x6b,0x9b,0x47,0xdf,0x9c,0x09,
+ 0xa4,0x08,0x50,0x36,0xa3,0xb0,0xbd,0x89,0xfb,0xff,0x00,0xd3,0x1a,0xe6,0x51,0xd3,
+ 0x6b,0x0c,0x08,0x92,0x01,0x29,0x55,0xb1,0x63,0xcb,0x63,0x03,0xe4,0xac,0x2d,0x4d,
+ 0x6f,0x55,0x19,0x98,0x65,0x12,0xd3,0x43,0x0f,0xc8,0xc6,0x67,0x8a,0x4b,0x36,0x95,
+ 0x36,0x2a,0x4f,0xf9,0x6f,0xf5,0xf1,0x85,0x53,0x64,0xeb,0x5c,0xc3,0x51,0x60,0xe8,
+ 0xa0,0x9b,0x0d,0xef,0xf7,0xfb,0x8b,0x62,0xf6,0x28,0x99,0x20,0x55,0x8c,0x00,0x11,
+ 0x2c,0x07,0xb6,0xd8,0x1f,0x2e,0x80,0xeb,0x66,0x90,0x0e,0xdc,0x87,0x75,0xb7,0xef,
+ 0x8c,0xdb,0xd5,0x94,0xa3,0xc6,0x50,0x90,0xd1,0xa9,0x9a,0xe8,0xc0,0x5f,0x57,0xb7,
+ 0xd3,0x11,0x79,0x94,0x26,0x32,0x52,0x5f,0x5a,0xaa,0x03,0xaa,0xf6,0x0c,0x0e,0x2f,
+ 0xcf,0x44,0xb2,0xc1,0x22,0x28,0xe5,0x6f,0x72,0x71,0x58,0x93,0x29,0x14,0xf3,0x91,
+ 0x3a,0x96,0x8d,0xc9,0xf3,0xe3,0x6f,0x18,0x8d,0x72,0x84,0x20,0x72,0xba,0x64,0x57,
+ 0x8e,0x90,0x40,0xa3,0xb6,0x35,0x23,0x69,0x1b,0x8f,0x3f,0xeb,0x8b,0x1d,0x6c,0x91,
+ 0x51,0x96,0x10,0xa8,0x11,0xf6,0xc5,0xd5,0x79,0xf6,0xb8,0xc0,0x95,0x54,0x91,0x51,
+ 0x3c,0x55,0x10,0x36,0x8b,0xaf,0xa8,0xfb,0x0f,0x18,0xad,0x67,0x0f,0x26,0x61,0xdd,
+ 0x9e,0x95,0xc2,0x4d,0x11,0x31,0xa8,0x2c,0x46,0xb0,0x70,0xe3,0xe2,0x29,0x78,0x47,
+ 0x66,0x95,0xed,0x47,0x32,0xd1,0xca,0x83,0xb5,0x21,0x28,0x1b,0x92,0x86,0xdb,0x9f,
+ 0xae,0x2b,0xd4,0x95,0x70,0xd0,0xd4,0xcd,0x4c,0x41,0x9a,0x19,0x59,0x95,0xd0,0x1d,
+ 0x96,0xe7,0x62,0x2f,0xc6,0xc7,0xfa,0x60,0x7c,0xc3,0x36,0x90,0x01,0xdc,0x0c,0xb3,
+ 0x46,0x34,0xca,0x1f,0x72,0x0f,0x8f,0xef,0xc6,0x30,0x3c,0xdb,0xf8,0x89,0xa4,0xa1,
+ 0xce,0xf3,0x40,0xb9,0x25,0x55,0x45,0x3c,0x52,0x4b,0x08,0x70,0x3b,0x4d,0x2b,0x84,
+ 0x51,0x18,0x0d,0x72,0x09,0x69,0x18,0xdc,0x7e,0x65,0x55,0x37,0x5b,0xde,0xcd,0x24,
+ 0xd1,0xe9,0x9a,0x0c,0x9d,0x7e,0xbf,0x5f,0x92,0xae,0x9c,0xf3,0xf0,0xab,0x67,0xc5,
+ 0x5a,0xea,0x6e,0x9e,0xe9,0x3e,0xa5,0x92,0xa2,0x5b,0x03,0x45,0x24,0x30,0xe8,0x46,
+ 0x76,0xd6,0xeb,0x65,0x3a,0x55,0x83,0x59,0x6e,0x09,0x6b,0x80,0xa0,0x5c,0xfb,0x1e,
+ 0x36,0xcc,0x5a,0xa6,0x4c,0xcf,0x2e,0x76,0xa7,0xa9,0xa5,0x86,0x3a,0x68,0xea,0x53,
+ 0xf1,0x19,0xcc,0xda,0xd4,0x99,0x6a,0x49,0x7b,0x0f,0xc6,0x91,0x4e,0xe0,0x71,0xa4,
+ 0x0b,0x80,0x09,0xb7,0xd4,0xe7,0x39,0xc7,0x57,0x75,0x0e,0x69,0x9c,0x57,0xb5,0x3d,
+ 0x16,0x65,0x5f,0x10,0x72,0xb2,0x4a,0x22,0x82,0x9d,0x08,0x08,0xc8,0x5d,0xb7,0x50,
+ 0x55,0x55,0x02,0x9d,0xc8,0x53,0x7d,0xc8,0xc7,0xdd,0x5c,0xd5,0x59,0xa7,0xc3,0xfc,
+ 0xb1,0x69,0x92,0x5a,0xca,0x9e,0x9e,0xa8,0x92,0x9b,0x3c,0xa5,0x99,0x04,0xb2,0x65,
+ 0x42,0xe4,0x44,0x10,0x8e,0x21,0x21,0x24,0xd4,0x09,0xd2,0x18,0x29,0x36,0xb8,0xbf,
+ 0x07,0x53,0xab,0x93,0x5c,0xf7,0x00,0x28,0x01,0x8e,0xe4,0x5f,0x3f,0x63,0xd3,0xb7,
+ 0xa2,0xbe,0x38,0xfc,0xa1,0xf3,0x54,0xd8,0x33,0x1a,0x58,0x2b,0x8d,0x44,0x8e,0x44,
+ 0x74,0x0e,0x19,0x29,0xc0,0x90,0xb4,0x8c,0x41,0xb2,0xab,0x8f,0xca,0x41,0x17,0x07,
+ 0x90,0x6c,0x6e,0x78,0xc3,0x59,0xdc,0x33,0x6b,0x49,0xa6,0x4a,0x88,0x75,0x5d,0xae,
+ 0x2f,0x20,0x62,0x00,0x5d,0x3a,0xae,0x74,0x9d,0x85,0xc1,0xdf,0x8b,0xf2,0x31,0x1c,
+ 0xcc,0x92,0xac,0x55,0x31,0x3b,0x58,0xc6,0x5c,0x5d,0x4e,0xa2,0x46,0xc2,0xff,0x00,
+ 0x5b,0x01,0xfd,0xaf,0x87,0x72,0xda,0xe3,0xdc,0x8a,0x2d,0x71,0x53,0x47,0x34,0x1f,
+ 0x27,0xae,0x74,0x12,0x24,0x69,0x25,0x95,0xdc,0x82,0x36,0x20,0x1d,0x57,0x1e,0xa1,
+ 0x60,0x41,0xb8,0x18,0xe5,0x06,0x7c,0x40,0x85,0xa6,0xd0,0x0b,0xa5,0x35,0xa9,0x84,
+ 0x4c,0x35,0xea,0x2c,0xa0,0x83,0x6f,0xa1,0xbf,0xd6,0xc0,0x1f,0x27,0x7f,0x6c,0x6b,
+ 0x19,0x5f,0x56,0x66,0x74,0xfd,0x0c,0xf2,0x64,0xb4,0xfd,0x35,0x35,0x36,0x57,0x54,
+ 0xf3,0x50,0x24,0xe5,0xa2,0xae,0xca,0xd6,0x73,0x28,0xb4,0x32,0xd9,0x18,0xf6,0x9c,
+ 0x17,0x59,0xda,0x42,0x35,0xb2,0xa8,0xf5,0x16,0x4c,0x55,0x3a,0x37,0xa4,0x33,0xde,
+ 0xa5,0xea,0x29,0x68,0xfa,0x3f,0x2d,0xa3,0xea,0x09,0x72,0xd1,0x3d,0x44,0x91,0x55,
+ 0x15,0xec,0xd4,0x22,0x02,0x01,0x2a,0x58,0x03,0xa8,0x13,0xa5,0x43,0x0e,0x2f,0x7d,
+ 0xb0,0x1b,0x52,0xc7,0x06,0x51,0x98,0x43,0x2f,0x51,0xba,0x43,0x49,0x3b,0x25,0x36,
+ 0x5d,0x4f,0x09,0x97,0xba,0xdf,0x84,0xa3,0x5c,0xe1,0x44,0x7a,0x19,0x4c,0xa2,0xfa,
+ 0x8d,0x9a,0x21,0x75,0xb3,0x86,0x1d,0x18,0x1c,0xe6,0x5b,0x87,0xc9,0x0a,0x07,0x0a,
+ 0xfd,0xd0,0xb4,0xfd,0x21,0x9a,0xe4,0x39,0x9d,0x2f,0x51,0x75,0x4d,0x47,0x47,0xf5,
+ 0x1d,0x45,0x09,0xa3,0x95,0x73,0x39,0x04,0x70,0xc4,0xe2,0xec,0xf3,0x10,0x8b,0xdc,
+ 0x70,0xc0,0x2a,0xac,0x25,0x56,0xc5,0xc9,0xd5,0x20,0xd9,0x68,0x31,0x66,0x71,0xcb,
+ 0x52,0xd9,0x7e,0x50,0xcc,0xb4,0xd3,0xf6,0xd6,0x48,0x8c,0xc7,0xfe,0x2d,0x90,0x6a,
+ 0x66,0x53,0xb1,0x20,0xb2,0xb1,0x51,0x60,0x4f,0xa4,0x5a,0xf8,0x89,0xa4,0xaa,0x31,
+ 0xc9,0x2a,0x4d,0x1d,0x2d,0x78,0x92,0x09,0x04,0xa2,0xa1,0x59,0x96,0x20,0x53,0x42,
+ 0xba,0xd9,0x83,0x83,0x1f,0xa4,0xae,0xfb,0x10,0x2e,0x0a,0xdc,0x60,0xcc,0xb7,0x31,
+ 0xea,0x0a,0x5e,0x9d,0xac,0x34,0x8e,0xab,0x95,0x3c,0xb1,0x47,0x57,0x50,0x90,0x6a,
+ 0x36,0x00,0x91,0x16,0xb2,0x47,0xa5,0xb4,0x12,0x50,0x1b,0x13,0x60,0x6d,0x7b,0x63,
+ 0x3b,0xb6,0x90,0x31,0x5e,0xfe,0xc8,0xd6,0x56,0x85,0xd1,0xfd,0x4a,0x99,0x24,0x94,
+ 0xb9,0xcf,0x54,0x65,0xd4,0x75,0xbd,0x2b,0x02,0xd4,0x41,0x24,0x39,0x9c,0x4a,0x3e,
+ 0x76,0x69,0xe9,0xec,0x26,0x08,0x6e,0x58,0x04,0xd2,0xa1,0x57,0xfe,0x5a,0xb2,0xb5,
+ 0xc9,0x66,0x26,0xd1,0x92,0xfc,0x60,0xc9,0xfa,0x38,0xe4,0xd9,0xdd,0x7c,0x15,0xf9,
+ 0x97,0x52,0x41,0x4e,0x64,0xaa,0xa3,0x97,0x2f,0x68,0xc5,0x4d,0x0c,0xc8,0xc0,0xc0,
+ 0x2a,0x9a,0x3e,0xe2,0xa2,0xa5,0x80,0x7d,0x2c,0x34,0x33,0x69,0x23,0xce,0x21,0x43,
+ 0x15,0x56,0x65,0x9a,0xd2,0xd7,0xe6,0xb1,0x4f,0x3c,0x52,0xe6,0x1d,0xe9,0x23,0xa6,
+ 0xed,0xd2,0xb9,0x25,0xc3,0xb7,0x6f,0x6e,0xdc,0x4c,0xdc,0x0d,0x2b,0x65,0xf4,0xdf,
+ 0x6b,0x03,0xb3,0x67,0x9d,0x51,0x95,0xff,0x00,0x8f,0x47,0xd6,0x95,0xb4,0x03,0x24,
+ 0xcd,0x5e,0x8e,0xbe,0x94,0xc1,0x97,0xd5,0x54,0x66,0x75,0x7f,0x38,0xac,0xa2,0x9a,
+ 0x7a,0x99,0xeb,0x5c,0x89,0x51,0xc1,0xd2,0x4a,0x17,0xf4,0xa9,0x0d,0xce,0x85,0xa6,
+ 0x48,0x9a,0xe1,0xe6,0x17,0x65,0xbc,0x74,0xe7,0x1d,0x8f,0x38,0xfb,0x58,0xe1,0x11,
+ 0x41,0x65,0xb9,0x9d,0x45,0x21,0x92,0x79,0x5a,0x07,0xa3,0x85,0xd8,0x4b,0x05,0x34,
+ 0x61,0x82,0xd2,0xc7,0xaa,0xc2,0x33,0x23,0x0d,0x52,0x00,0x2c,0xb7,0x20,0x13,0xcd,
+ 0xf6,0xde,0x3f,0xe7,0x3e,0x56,0xae,0x09,0x67,0x5a,0x67,0x04,0x87,0x78,0xbb,0xbd,
+ 0xc8,0xd9,0x54,0xea,0x55,0x7e,0x35,0x26,0xd6,0x2b,0x71,0x70,0x6d,0x7e,0x31,0x2f,
+ 0x9c,0xe5,0x14,0x2f,0x56,0x94,0xd9,0x55,0x6e,0x61,0x99,0x46,0xd4,0xe4,0x2c,0x95,
+ 0xd4,0x69,0x06,0xa9,0xbf,0x98,0x22,0x2c,0x8d,0x68,0xc1,0x0d,0x67,0x62,0x0b,0x5c,
+ 0x1b,0x6f,0x8a,0xbc,0x29,0x0d,0x4d,0x69,0x58,0x7b,0x6b,0xde,0x71,0x1c,0x48,0xec,
+ 0x4e,0x92,0x4e,0xc0,0x9b,0x7b,0x01,0x7b,0x62,0xa1,0x56,0x7d,0x3b,0x25,0x36,0xbf,
+ 0x66,0xbb,0x22,0x45,0xbd,0xaf,0x81,0x2a,0xf2,0xc4,0x9a,0x22,0xac,0xb7,0x07,0xc6,
+ 0x15,0x43,0x5e,0x8e,0x8a,0x2f,0x89,0x68,0xca,0xc8,0x3d,0xf1,0xea,0x38,0x54,0x2e,
+ 0x77,0xeb,0x1f,0x87,0x14,0xd0,0x66,0x75,0xd3,0x53,0xc6,0x62,0x19,0x85,0x83,0x9b,
+ 0xdc,0x06,0xf7,0xdf,0xc7,0xd3,0x18,0x9e,0x69,0xd3,0xb5,0x19,0x76,0x62,0xf4,0x52,
+ 0x80,0xb2,0x28,0xf2,0x76,0x3b,0x1b,0x1b,0xfd,0x6d,0x8e,0xe2,0xcd,0xf2,0x98,0x6b,
+ 0x62,0x65,0x92,0x30,0xe0,0x8d,0xae,0x31,0x8d,0xf5,0xbf,0xc3,0x7a,0x7c,0xec,0xc9,
+ 0x2a,0x3c,0x91,0x4b,0xa4,0xa8,0x2a,0x7f,0x9b,0xc1,0x38,0xdb,0x0c,0xe5,0xb8,0x2a,
+ 0x97,0xc7,0xbb,0x85,0xcc,0xd8,0x91,0xa1,0x0a,0xf1,0x95,0x67,0xb5,0x8e,0xa0,0x3d,
+ 0xc5,0xb7,0xc7,0x99,0xbe,0x57,0x55,0x95,0x56,0x49,0x05,0x62,0x10,0xca,0x6c,0x1a,
+ 0xdb,0x36,0x05,0x81,0xda,0x36,0xba,0xf3,0x62,0x31,0xd6,0xc3,0x86,0x16,0x2e,0x0e,
+ 0x54,0xb7,0x6a,0x27,0xb3,0x12,0x42,0x69,0xd4,0x74,0xda,0xfa,0x7c,0x91,0xfa,0xe1,
+ 0xd8,0x63,0xa5,0x4f,0x51,0x62,0xc4,0x31,0xb0,0x3c,0x9f,0x6d,0xb1,0xe5,0x24,0x67,
+ 0x30,0xa2,0x48,0x62,0xa7,0x0d,0x34,0x44,0xfa,0x97,0xf3,0xe9,0x3f,0xea,0x2f,0x87,
+ 0x46,0x43,0x5e,0x95,0x2a,0x25,0xa6,0x78,0xa2,0x36,0xf5,0xc8,0x2c,0x00,0xf3,0xea,
+ 0xc5,0x58,0xe0,0x95,0x66,0x7a,0x2d,0x37,0xa0,0xb3,0x47,0x2c,0x62,0x65,0xed,0x82,
+ 0x0b,0x12,0x12,0xc0,0x82,0x7d,0xbd,0xf1,0xb4,0xe4,0x75,0xd1,0xd4,0xc4,0xa5,0x4e,
+ 0xeb,0xb1,0x07,0x9c,0x60,0x99,0x1d,0x31,0xcb,0x6a,0x23,0x94,0x48,0xe9,0xdc,0x16,
+ 0x4b,0x9b,0x8d,0xb9,0x07,0x1b,0x27,0x4c,0xd4,0xc4,0xc9,0x19,0x7f,0x4b,0x95,0x06,
+ 0xc7,0x6d,0xf1,0xce,0x94,0x0b,0xb5,0xa9,0xbc,0x2b,0xb9,0x52,0xe5,0x08,0xd8,0x13,
+ 0xb8,0xc1,0x15,0x34,0xaa,0x23,0x50,0xbe,0x96,0xb5,0xef,0x6c,0x35,0x03,0x2a,0x32,
+ 0xeb,0xdc,0x93,0x82,0xa7,0xa8,0xd5,0xb0,0x1c,0x63,0x29,0xe5,0x5a,0x9b,0xa1,0x56,
+ 0x0d,0x67,0x37,0x5b,0x6f,0xf7,0xc3,0x95,0x94,0x51,0xcd,0x3a,0x29,0x03,0x7d,0xed,
+ 0xef,0x6c,0x7d,0x11,0x11,0x82,0x79,0xbe,0xe7,0x09,0x15,0x2a,0xd5,0x01,0xc8,0xdc,
+ 0x6c,0x09,0xf0,0x30,0x28,0xdd,0xa8,0xab,0x9d,0x4d,0x48,0x25,0x80,0x53,0xc5,0xaa,
+ 0xe5,0xb8,0x5e,0x76,0xc5,0x5a,0x2a,0x77,0x8e,0x0a,0x99,0xaa,0x2c,0xed,0x1d,0x88,
+ 0x0a,0x3f,0x30,0xe3,0x71,0x8b,0xfe,0x6d,0x22,0xda,0x49,0x58,0x5b,0x4a,0xd8,0x62,
+ 0x02,0x94,0x45,0xa9,0xc7,0x6d,0x54,0x2c,0x7a,0x59,0x40,0xb8,0x20,0x8c,0x68,0x69,
+ 0xc2,0x42,0xb2,0x6c,0xff,0x00,0x32,0xa7,0x49,0x4a,0x28,0x24,0xc9,0xea,0x3e,0xa0,
+ 0xc4,0x6f,0x7f,0x3e,0x37,0xc7,0x20,0x7c,0x44,0xe9,0x1a,0xbe,0x9a,0xcd,0x69,0x28,
+ 0x72,0xfa,0x1c,0xba,0x9e,0x8a,0xa2,0xb2,0xa3,0x32,0xa5,0xad,0x6a,0x9e,0xc0,0x06,
+ 0x46,0xd0,0x61,0xfc,0x46,0xed,0xa2,0xa8,0x0a,0x01,0xb5,0xef,0x7f,0x56,0xf6,0x1d,
+ 0x51,0xf1,0x0a,0x8a,0xbb,0xa7,0xe1,0xcc,0x2b,0x62,0xa1,0x4a,0x81,0x04,0x6e,0xd0,
+ 0xa9,0x93,0x48,0x75,0x41,0xa8,0x82,0xde,0xfa,0x6f,0xf7,0xb6,0x38,0xdb,0xad,0x33,
+ 0xe7,0xeb,0x6a,0xa3,0x98,0xcb,0x45,0x3a,0xe7,0xa9,0x50,0xd1,0x25,0x38,0x8c,0x10,
+ 0xd4,0xce,0x1d,0xb4,0x30,0xb0,0x2a,0x62,0x1e,0x90,0xc6,0xe4,0xea,0x37,0xb1,0x03,
+ 0x14,0xf8,0x94,0x91,0x36,0x10,0xc3,0xc9,0xcf,0xa5,0x75,0xcf,0xb2,0xab,0x80,0x3f,
+ 0x79,0x3d,0x10,0xb4,0x79,0x74,0x73,0x55,0xac,0x29,0xd4,0x34,0x70,0xe5,0xf1,0xcf,
+ 0x2b,0x9a,0xda,0x5a,0x23,0x32,0x24,0x43,0x47,0x71,0xe4,0x8c,0xae,0xa7,0x40,0x2e,
+ 0x06,0xa2,0x45,0xc7,0x00,0x5c,0xe3,0x4e,0xcc,0x2a,0x3a,0x9b,0xa8,0xb2,0x8c,0xd3,
+ 0xa0,0xfa,0x27,0xa7,0xe3,0xe9,0x18,0x73,0x24,0x19,0xad,0x34,0x10,0xa7,0xe1,0x57,
+ 0xd1,0x34,0x7f,0x8a,0xb3,0xca,0xfc,0x4c,0x08,0x8c,0x8d,0x22,0xc0,0x8d,0x17,0x1a,
+ 0x16,0xed,0x45,0xf0,0xf7,0xa8,0xba,0xab,0xa4,0xa0,0xa6,0xea,0x68,0xe8,0x32,0xea,
+ 0xdc,0x89,0x16,0x9f,0x20,0x69,0xa6,0x0b,0x23,0x5c,0xab,0x9f,0x44,0x6e,0x13,0x52,
+ 0x85,0xd2,0x35,0x11,0xbb,0x31,0x6b,0x6d,0x8d,0x27,0xa0,0xfa,0xc0,0x65,0x19,0x74,
+ 0x5d,0x37,0x35,0x26,0x71,0x9d,0x2d,0x14,0x2d,0x3a,0xd7,0x65,0x14,0x7f,0x3b,0x1b,
+ 0x26,0xaf,0x5f,0x72,0x38,0x9d,0x99,0x34,0xc8,0x5d,0x14,0xae,0xb5,0x70,0xa2,0xd6,
+ 0x20,0xa8,0xaf,0x47,0xa5,0x31,0x92,0x24,0x76,0xd0,0xfe,0x30,0x01,0xf5,0x6f,0x7f,
+ 0x63,0xba,0x79,0x64,0x04,0x5b,0x45,0x91,0xee,0xd7,0x36,0x75,0xdf,0x46,0x66,0x7f,
+ 0x0f,0x7a,0x82,0x0c,0x93,0x35,0xcc,0x20,0xcc,0xaa,0x12,0x9e,0x09,0x75,0x65,0xec,
+ 0x59,0x04,0xce,0xa6,0xca,0x08,0xb1,0x04,0x1d,0x4b,0xf7,0x1a,0xad,0xb8,0xc5,0x79,
+ 0x68,0xa0,0xaf,0xaf,0x8d,0x18,0x4d,0x14,0x0a,0xbe,0xb9,0xe2,0xa7,0x0e,0x51,0x89,
+ 0xd2,0x09,0xb1,0x00,0x8d,0x44,0x0e,0x76,0xbf,0xd3,0x1d,0x11,0xf1,0xf5,0xfa,0x2b,
+ 0x3d,0xe9,0x7a,0x6c,0xf7,0xa6,0xeb,0x72,0xac,0xc3,0xa9,0xa3,0xa9,0x8d,0x24,0xf9,
+ 0x39,0x87,0x7d,0xa0,0xd2,0xc0,0x99,0xe3,0xd6,0xae,0x81,0x2e,0x2c,0x59,0x2f,0xa9,
+ 0x94,0x1b,0x63,0x10,0x39,0xcc,0xb4,0x7d,0x17,0x06,0x4d,0x97,0xc3,0x12,0x2c,0x19,
+ 0x9c,0xd5,0xaf,0x52,0x26,0x7d,0x55,0x7a,0xa1,0x58,0xd6,0x27,0x51,0x60,0x04,0x7a,
+ 0x5c,0x83,0x7d,0xcb,0x9d,0x80,0xdf,0x1c,0x6d,0x54,0x22,0x19,0x9c,0xc0,0xef,0x97,
+ 0xf8,0x57,0xc6,0xf2,0xf6,0x82,0x54,0x46,0x53,0x51,0x5d,0x93,0x57,0x2c,0xf9,0x5c,
+ 0x52,0xd5,0xce,0x63,0x92,0x9a,0x68,0xa1,0xac,0x92,0x2e,0xec,0x4c,0x34,0xc8,0x8c,
+ 0x63,0x2a,0xda,0x59,0x6e,0xa5,0x6f,0x63,0xbd,0xc1,0x02,0xd8,0x92,0x8e,0x04,0x8c,
+ 0xd6,0x64,0x19,0x7e,0x7c,0x29,0xf2,0xfa,0x99,0x44,0xcb,0x05,0x55,0x43,0x25,0x21,
+ 0xb4,0x64,0x83,0x39,0x56,0x31,0x87,0x50,0x00,0x5f,0x4b,0x12,0xc5,0x45,0xd6,0xd8,
+ 0x67,0x26,0xa8,0x87,0xa7,0x3a,0x8a,0x96,0xbe,0x9a,0xbe,0x92,0xa1,0xe8,0x64,0x49,
+ 0x92,0x43,0x4e,0xd5,0x30,0x19,0x04,0x77,0x0a,0x50,0x85,0x32,0x5a,0xfa,0x2c,0x6c,
+ 0x2f,0xcd,0xc5,0xef,0xb4,0xb7,0x52,0x7c,0x26,0x8b,0x26,0xed,0x74,0x97,0x49,0x65,
+ 0x95,0x39,0xe2,0xd3,0xc6,0x6a,0x67,0xcd,0xa8,0xa7,0x14,0xec,0x8f,0x1b,0x47,0x2a,
+ 0xc4,0x0c,0xa4,0x99,0x86,0xa5,0x62,0xe4,0x05,0x66,0x1e,0x91,0xb8,0x00,0xc2,0x1a,
+ 0xe6,0x97,0x39,0xe0,0x01,0xdf,0xfc,0x7b,0xff,0x00,0x6c,0xe7,0x6d,0xc5,0x5a,0xe7,
+ 0xca,0x3a,0x06,0xab,0xb4,0xe9,0x55,0x0f,0x7b,0xb4,0xcd,0xd9,0x96,0x32,0xcc,0xfa,
+ 0x50,0xb8,0x11,0x28,0x56,0xdc,0x05,0x00,0x96,0xb7,0x23,0x7b,0x5c,0x82,0xf2,0x89,
+ 0x62,0xcc,0x2b,0xa8,0x11,0x32,0x94,0xae,0x98,0x42,0x61,0x45,0xa7,0xa8,0x78,0xdd,
+ 0xe6,0x24,0x88,0xa6,0x62,0xe4,0xad,0xc3,0xb2,0x1b,0x0b,0x2b,0x05,0xb5,0x96,0xf7,
+ 0xc1,0xff,0x00,0x2b,0x9c,0x64,0x11,0xd3,0x66,0x39,0x7d,0x64,0x34,0xf5,0x10,0x24,
+ 0x12,0x35,0x76,0x5b,0x2b,0x77,0x62,0x90,0xdd,0x7b,0x6a,0x41,0x0c,0x1b,0xd5,0xa5,
+ 0x99,0x7d,0x37,0xb0,0x04,0x8c,0x25,0x69,0x22,0x81,0xaa,0x1a,0xcf,0x0d,0x1b,0x30,
+ 0x67,0xa4,0x8e,0x73,0xdb,0x0a,0xaf,0x74,0x0c,0xdf,0x98,0xaa,0x8f,0x7b,0x13,0xfe,
+ 0x99,0x1c,0xf0,0x3a,0xe5,0x59,0x61,0x5b,0xba,0x12,0xab,0x2a,0xaa,0xea,0x9c,0x91,
+ 0xba,0xfd,0xa3,0x8f,0x2d,0x6a,0x98,0xa6,0xcd,0x51,0x22,0x59,0x19,0xc2,0x79,0x28,
+ 0x2c,0x7d,0x45,0x50,0x36,0x96,0x17,0x17,0xdc,0x5e,0xd8,0x4f,0x5c,0x75,0xe4,0xbd,
+ 0x65,0x2e,0x59,0x3e,0x6d,0x4b,0x43,0x4d,0x36,0x5b,0x95,0xa5,0x25,0x3c,0x14,0x10,
+ 0x32,0x43,0x14,0x4b,0x2c,0xb2,0x2e,0x84,0xd5,0x68,0xc8,0xee,0x85,0x54,0x5b,0x05,
+ 0x0a,0xa7,0x9c,0x42,0x8a,0xda,0xfa,0x3c,0xbe,0x58,0x5a,0x69,0xcd,0x24,0x85,0x27,
+ 0x48,0x15,0x14,0x44,0x64,0xd0,0x54,0xcc,0x6e,0x0d,0xde,0xc4,0xef,0x7d,0x86,0xc6,
+ 0xfe,0x2b,0x15,0x75,0x55,0x48,0xa8,0xd1,0xbc,0x7d,0xd4,0x91,0x90,0x28,0x2a,0xcc,
+ 0x0f,0xd0,0x7d,0x37,0xfd,0x48,0xc5,0x11,0x92,0xef,0x87,0xa2,0x1e,0x88,0x88,0x33,
+ 0x42,0xed,0x54,0x51,0x67,0x50,0xeb,0xdb,0x95,0xd5,0x3b,0x92,0x7b,0x9f,0x24,0x03,
+ 0xb9,0x1b,0xed,0xb7,0x17,0xc2,0xf2,0xaa,0x6a,0x78,0x2b,0xa1,0x96,0x48,0x22,0x6a,
+ 0x78,0x1c,0x87,0x88,0xb3,0x6a,0x28,0x6e,0xba,0xc1,0x00,0x82,0x54,0xfa,0xbc,0x5a,
+ 0xd6,0x18,0x51,0x31,0x2c,0xf7,0x86,0xf1,0x2a,0xc5,0xb4,0x85,0xc1,0x2c,0xd6,0x00,
+ 0xde,0xdb,0x7e,0x97,0xdb,0x6f,0x6c,0x01,0x33,0x9c,0xc2,0x66,0x55,0x2a,0x1d,0x63,
+ 0x00,0xc8,0xcf,0xa0,0x85,0x1b,0x59,0x97,0xea,0x48,0xb6,0xf7,0x38,0xb4,0x53,0xf0,
+ 0x05,0x04,0x17,0xeb,0x0e,0x5f,0x58,0x54,0x80,0x4e,0x2d,0xf9,0x6d,0x5e,0xb5,0x17,
+ 0x38,0xcd,0xa8,0x2a,0x09,0x61,0x73,0xc6,0x2d,0xb9,0x6d,0x55,0xad,0xbe,0x3d,0x49,
+ 0x0b,0x32,0xbb,0x29,0x12,0x2d,0xb1,0x03,0x9b,0xe5,0x23,0xfe,0x6c,0x77,0x37,0x3e,
+ 0xa4,0x1c,0x1c,0x48,0x51,0xcf,0x7b,0x6f,0x83,0x65,0x22,0x44,0x23,0x15,0x70,0x53,
+ 0xf2,0x17,0x36,0x75,0xe7,0xc3,0xc8,0x26,0x59,0x5a,0x10,0x41,0xd4,0x59,0x09,0xfc,
+ 0xe0,0x11,0xef,0xe7,0xdb,0xf6,0xc6,0x15,0x2c,0x12,0x51,0x54,0xc9,0x0c,0xea,0xcb,
+ 0x24,0x4e,0x55,0x83,0x0d,0x37,0xb7,0xd3,0x1d,0xb5,0xd4,0x59,0x77,0x71,0x1d,0xe3,
+ 0x17,0x00,0x6e,0xa7,0xc8,0xf3,0x8e,0x6c,0xf8,0xa1,0x90,0x98,0xeb,0x65,0xaf,0x88,
+ 0x6d,0x60,0x18,0x5b,0x72,0x07,0x1f,0xd0,0xe3,0xab,0xa6,0x9b,0x3b,0x4a,0xc9,0x2b,
+ 0x3a,0x85,0x46,0xc9,0x85,0x4c,0x99,0x85,0x22,0x51,0xef,0x2f,0x70,0x00,0x0f,0x9f,
+ 0xbe,0x36,0x0c,0x9d,0x59,0xcc,0x94,0x95,0x72,0xaa,0x54,0xae,0xea,0xe4,0x59,0x49,
+ 0xdf,0x62,0xbe,0xd8,0xc8,0xfa,0x6d,0xcc,0x19,0xed,0x2c,0x8a,0xe6,0x32,0x85,0x89,
+ 0x23,0xe8,0x31,0xb5,0x65,0xc2,0x46,0x61,0x34,0x89,0xa8,0x3d,0xec,0x6d,0xc2,0x9c,
+ 0x59,0xa8,0xc1,0x42,0x2e,0x13,0xd4,0xf4,0xa2,0xa2,0x0f,0x94,0xac,0x89,0x29,0xe6,
+ 0x17,0x31,0x32,0x2e,0xc7,0x6f,0xfa,0xdf,0x13,0x19,0x55,0x4d,0x45,0x0c,0x29,0x04,
+ 0xf3,0x77,0x00,0x6f,0x4b,0x80,0x36,0x1e,0xc7,0x04,0x65,0xd0,0x17,0x55,0xf9,0x9b,
+ 0x2b,0x0f,0xf9,0x6f,0xc9,0x1b,0x70,0x70,0x5d,0x25,0x3c,0x31,0x44,0x56,0x75,0x5d,
+ 0x77,0xdd,0xb1,0x8a,0xd5,0xea,0xcd,0x92,0xd5,0x4d,0x5c,0xa1,0xa6,0x25,0x55,0x76,
+ 0x22,0xe3,0x16,0x0a,0x54,0x8c,0xca,0x53,0x55,0xed,0xf5,0xc5,0x0a,0x80,0x9a,0x49,
+ 0xd1,0x10,0x96,0x88,0xb5,0x99,0x83,0x5c,0xe2,0xdb,0x4d,0x2f,0x6d,0xd5,0x9b,0x8f,
+ 0x0c,0x3f,0xbe,0x2b,0x21,0x32,0x97,0xae,0xb4,0x48,0xc1,0x76,0x00,0x62,0x26,0xa5,
+ 0x9a,0x08,0x1a,0xae,0x29,0x41,0x52,0x2f,0xa5,0xbd,0xc6,0x1c,0xcc,0x33,0x48,0x5b,
+ 0x4c,0x62,0x5b,0x48,0xdb,0x8b,0x73,0x8a,0xf4,0x99,0x9c,0x94,0x69,0x69,0x6c,0xf0,
+ 0x19,0x00,0x52,0x0e,0xf7,0x3c,0x93,0xfa,0x62,0x34,0x1a,0x50,0x95,0x37,0x05,0x78,
+ 0xaf,0xa7,0x02,0x4f,0x50,0x75,0xd5,0x62,0xb6,0x3f,0x4c,0x47,0xb3,0x45,0x03,0xbc,
+ 0x8a,0xbd,0xb6,0xb0,0x16,0xfa,0x7b,0x62,0xbb,0x9b,0xf5,0x04,0x34,0xd3,0x23,0x25,
+ 0x48,0x56,0x6d,0x8c,0x60,0xef,0x87,0x6a,0x73,0x88,0x6a,0x74,0x91,0x27,0xa8,0x2e,
+ 0xc0,0x70,0x47,0x9b,0xe2,0xe0,0xc2,0x92,0xd6,0x51,0xfc,0x43,0x53,0x36,0x61,0xd2,
+ 0xf9,0x9e,0x5b,0x49,0x51,0x3a,0x3d,0x5d,0x2e,0xae,0xe5,0x35,0x33,0x55,0x49,0x66,
+ 0x75,0x0d,0x18,0x89,0x48,0x2c,0x48,0xf6,0xe0,0x13,0xcf,0x18,0xe3,0x5c,0xab,0x27,
+ 0xce,0x7a,0x8f,0x31,0x8f,0x28,0x97,0x5d,0x09,0xab,0xfc,0x26,0xef,0x44,0x63,0x8a,
+ 0x1a,0x88,0xee,0x51,0x46,0x95,0x36,0x72,0xe1,0xb6,0xf3,0x76,0x27,0x7d,0xc7,0x74,
+ 0x75,0xb5,0x9f,0x2d,0xa7,0xa8,0xd2,0xab,0x32,0xca,0x57,0x56,0xaf,0x56,0x9f,0x1f,
+ 0xdf,0x19,0x14,0x3d,0x03,0x91,0x0e,0xaf,0x6e,0xaa,0x58,0x6a,0x13,0x35,0x32,0x2c,
+ 0xb6,0x8e,0x62,0x90,0x89,0x02,0x69,0x2f,0xa0,0x0b,0x6a,0x3b,0x12,0x7d,0xc7,0xd4,
+ 0xe2,0xbd,0x5e,0x81,0xda,0xb6,0xb5,0xcc,0xab,0x18,0xca,0xad,0xb3,0x08,0xc9,0x05,
+ 0x54,0x32,0x28,0x33,0xfc,0xff,0x00,0xa7,0xa8,0x3a,0xa3,0xa8,0x12,0x01,0x04,0x27,
+ 0xe7,0x6a,0x27,0xa8,0x90,0xd1,0xcd,0x51,0x0d,0x95,0x9d,0x61,0xd0,0x15,0x62,0x8a,
+ 0xeb,0xaa,0xed,0x63,0x23,0x6a,0xd4,0xd6,0xd3,0x71,0x2a,0x6b,0xba,0x8b,0x27,0xeb,
+ 0x79,0x26,0xe9,0x58,0xcd,0x1c,0x79,0xf4,0xc9,0x5a,0xb2,0xd1,0xd1,0x34,0xee,0x62,
+ 0x99,0x2c,0x75,0x1f,0xf9,0x22,0x54,0x29,0x6b,0x82,0x15,0x75,0xff,0x00,0xf8,0xee,
+ 0x09,0xf8,0xda,0x96,0x60,0x25,0x12,0x29,0x57,0x56,0xdc,0x30,0x22,0xc4,0x1f,0xd3,
+ 0x0d,0x64,0xbd,0x23,0x45,0x43,0x53,0x96,0xc3,0x97,0xd5,0x57,0x65,0xf9,0x4d,0x15,
+ 0x23,0xd1,0x47,0x94,0x41,0x3e,0x9a,0x22,0x8f,0x7d,0x4c,0xd1,0xdb,0x53,0x39,0xb9,
+ 0x25,0x8b,0x12,0x4f,0x38,0xba,0x5f,0x0c,0x3c,0xb1,0xe6,0xf1,0x9e,0xb6,0x31,0x7f,
+ 0x6f,0xd8,0x61,0x54,0x35,0x03,0x82,0x31,0xd9,0x73,0x67,0x5b,0x66,0x59,0x95,0x7e,
+ 0x57,0x2e,0x49,0x94,0x67,0xff,0x00,0xf8,0xa5,0xe8,0x33,0x08,0x92,0xb2,0x55,0x65,
+ 0x95,0xea,0x2a,0x25,0xfc,0x30,0xf0,0xb9,0x01,0xe4,0x5d,0xb4,0xb6,0xe5,0x55,0x8f,
+ 0x9d,0x5a,0xb1,0x9f,0x43,0x90,0x66,0x99,0x9e,0x5b,0x32,0xa2,0xa3,0x88,0x64,0x58,
+ 0xa5,0x51,0x29,0xd6,0xa9,0xea,0xf5,0x32,0xdb,0xf2,0x02,0xae,0x0b,0xde,0xd7,0x52,
+ 0x0f,0x8b,0xf4,0xe7,0xf1,0x0d,0x93,0x64,0xfd,0x39,0x2f,0x45,0x35,0x3d,0x36,0x6b,
+ 0x57,0x57,0x48,0x2a,0x97,0x2d,0xa4,0x85,0x0f,0xca,0x29,0x04,0x76,0xf5,0x2d,0xbc,
+ 0x48,0xf7,0x2a,0xac,0x08,0x00,0x6d,0xc1,0xc7,0x35,0xe7,0xd9,0xf6,0x6c,0x99,0x5c,
+ 0x34,0xa3,0x30,0x76,0x8a,0x68,0xc8,0xd0,0xfa,0xd5,0x99,0x5c,0xea,0x90,0x36,0xe4,
+ 0x85,0x2e,0x3f,0x2f,0x07,0x4d,0xc8,0x1b,0xe3,0xc7,0xea,0xa2,0x7c,0x33,0xf9,0x77,
+ 0x67,0x19,0xc9,0xcf,0xd7,0x38,0xf5,0x5d,0x28,0xdc,0x1c,0xdb,0xa5,0x5a,0xa9,0x99,
+ 0x62,0x8c,0xc2,0xd0,0x0e,0xfb,0xaa,0x90,0xd1,0xb8,0xb4,0x66,0xf7,0x1e,0xf7,0xda,
+ 0xc2,0xdb,0x5a,0xe7,0x0f,0xe4,0xd5,0xac,0x64,0x6a,0x62,0xcc,0x86,0x74,0x24,0x59,
+ 0x42,0x02,0xe3,0x7b,0x9f,0xd2,0xff,0x00,0xbe,0x22,0x67,0x91,0x05,0xcd,0x34,0xf6,
+ 0x23,0x7d,0x7a,0xac,0x1d,0x87,0x2d,0x6f,0x03,0x9b,0x7f,0x5c,0x4a,0xe5,0x94,0x60,
+ 0x9f,0x9e,0xac,0x8c,0xbc,0x51,0x0b,0x46,0x0f,0xe6,0x95,0xbc,0x14,0x03,0xcf,0x1c,
+ 0xf3,0x7c,0x2c,0x81,0xbb,0x0d,0xa6,0xa5,0x39,0x49,0x5f,0x21,0xa2,0xa8,0xa6,0x48,
+ 0xe8,0x50,0x15,0x8d,0xa6,0xa8,0x90,0x0d,0x61,0x23,0x2c,0xca,0xa8,0xe7,0x74,0xb9,
+ 0x3b,0x85,0xfc,0xd6,0x17,0xc0,0xd4,0x25,0xa8,0x8d,0x4b,0x55,0xb2,0x3a,0xf6,0x82,
+ 0xa7,0x70,0x33,0x17,0x70,0xdb,0x94,0x61,0xb0,0x1c,0x73,0xcd,0xf0,0x1d,0x44,0xfd,
+ 0xb2,0x4f,0x6e,0x5d,0x2d,0xf9,0x84,0x8a,0x41,0x55,0xb6,0xe0,0x83,0xfa,0xfe,0xd8,
+ 0x67,0x5b,0xd5,0xc3,0xa6,0xfd,0xf8,0x50,0x90,0xfa,0xce,0x95,0x09,0x61,0x60,0xa4,
+ 0x1f,0x1a,0x79,0xbf,0x9c,0x51,0xb2,0xc7,0xa2,0x96,0xbd,0xcc,0xea,0x27,0xcd,0x02,
+ 0xf6,0x16,0x57,0x2c,0x0f,0xe0,0xc4,0xc6,0x46,0x64,0xbd,0xcd,0xc0,0xf1,0x7e,0x47,
+ 0xbd,0xf0,0xd5,0x35,0x21,0xa4,0x29,0xf3,0x68,0xe1,0x0e,0xb5,0xd2,0x1d,0x75,0x6e,
+ 0x2c,0xc6,0xc4,0xdf,0x7b,0x9d,0xf6,0x3e,0x41,0xdb,0x0b,0xa2,0x44,0xa9,0xa5,0x99,
+ 0x44,0x91,0x40,0x46,0xfd,0xf5,0x20,0x38,0x51,0x63,0xe7,0x7b,0x5c,0x7e,0xa7,0xed,
+ 0x8f,0xa7,0x45,0xa7,0x55,0x95,0x12,0x5a,0x9a,0x89,0x9b,0x53,0x4b,0x61,0x22,0x2d,
+ 0xdb,0x50,0xd2,0x06,0xf7,0xba,0xf9,0xbf,0x9c,0x58,0x31,0xf0,0x85,0x02,0x44,0xc2,
+ 0x14,0x28,0x94,0xcc,0x63,0xa7,0x2c,0x15,0xd2,0x13,0xea,0x66,0x6b,0x7a,0x45,0xf6,
+ 0xb9,0xdb,0x7f,0xdf,0x07,0xcb,0x32,0x54,0x3c,0x45,0xe9,0xc8,0x00,0x39,0xed,0x1b,
+ 0x1b,0x6d,0xc1,0xf6,0xb7,0xed,0x89,0x4c,0x8e,0x80,0xd3,0xd4,0x43,0x2d,0x67,0x6f,
+ 0xe6,0xcc,0x6c,0x62,0x84,0x0d,0x7d,0xbd,0x2b,0xcf,0xb5,0xf7,0x37,0xb7,0xb8,0xe7,
+ 0x10,0x15,0x59,0x84,0x2d,0x40,0xdf,0x27,0x03,0x03,0x33,0xaf,0x7a,0xa8,0xc6,0x57,
+ 0x57,0x27,0x48,0x63,0xc0,0xc5,0x40,0x97,0x90,0x06,0x7d,0x54,0x5f,0xa6,0xb9,0x7b,
+ 0x07,0xb1,0x5c,0x59,0x68,0x99,0x97,0x15,0xdc,0x9e,0x12,0x40,0xdb,0x6c,0x5a,0xe9,
+ 0xe0,0xb2,0xa9,0xc7,0xb2,0x72,0xce,0x14,0xf5,0x0c,0xc6,0xc3,0x13,0x0b,0x2e,0xa5,
+ 0xb6,0x2b,0xd4,0x46,0xc4,0x03,0x89,0xe8,0x54,0x15,0x1b,0xe2,0xa2,0x99,0x45,0x66,
+ 0xd2,0x48,0x8c,0xaa,0xa3,0x5a,0x10,0x75,0x03,0x8c,0x1f,0xe2,0x0f,0x50,0xa5,0xe6,
+ 0x4a,0x58,0xa3,0xef,0x23,0x15,0xb4,0x8b,0x75,0xdb,0xfa,0x13,0xf4,0xc7,0x43,0x54,
+ 0xd3,0x86,0x61,0xf4,0xc6,0x2b,0xf1,0x63,0xa3,0xfb,0x19,0x5d,0x6e,0x6d,0x45,0x17,
+ 0x72,0x78,0x24,0x13,0x38,0x17,0xbb,0x28,0xfc,0xc0,0xfd,0x2d,0x8d,0x10,0x6d,0xde,
+ 0x2d,0x56,0xfb,0xac,0x2c,0x02,0x88,0x19,0xf3,0x68,0xd1,0xcb,0x46,0xf2,0x48,0x55,
+ 0xb4,0x8d,0xc1,0xf3,0x8d,0xf7,0x2d,0x68,0xc5,0x30,0x0d,0xe9,0x2b,0xb1,0x07,0xc6,
+ 0x30,0x5c,0xaa,0xaf,0xe5,0x2b,0x85,0x43,0x8b,0xde,0xe4,0x91,0xc8,0xbf,0xb6,0x34,
+ 0x2a,0x2e,0xa1,0x69,0xd2,0x77,0x43,0xf9,0x80,0x6b,0x83,0xc5,0xbf,0xf8,0xc7,0x47,
+ 0x50,0xc2,0xea,0x59,0x62,0x70,0x0b,0x58,0xa0,0xa8,0x84,0x39,0x49,0x4e,0xf6,0xd8,
+ 0x9c,0x05,0x99,0xcf,0x2d,0x3c,0xab,0x25,0x20,0xd6,0xcd,0xca,0xea,0xb0,0x23,0x15,
+ 0x2c,0x97,0xa9,0xd5,0x2a,0xed,0x23,0xa7,0xfc,0xb0,0x6e,0xfb,0x12,0x4e,0x0a,0xcc,
+ 0xf3,0x73,0x3b,0x6a,0xa2,0x0c,0xc4,0xf2,0xc0,0xec,0x06,0x31,0x6c,0x20,0xad,0x1b,
+ 0x85,0x2b,0xae,0x59,0x5b,0x1a,0x98,0x8b,0xa8,0x40,0xc7,0xc9,0xe0,0x9c,0x58,0x73,
+ 0x1a,0x85,0x14,0xba,0x51,0xb4,0x90,0x2e,0x08,0x36,0xdf,0x18,0xdd,0x37,0x51,0xfc,
+ 0xac,0xca,0xb2,0x3b,0xca,0x97,0xbd,0x88,0xe3,0xfd,0x9c,0x5b,0xa8,0xf3,0x9a,0x8a,
+ 0x88,0xcc,0xea,0x23,0x96,0x1d,0x24,0x15,0x07,0x7f,0xbe,0x03,0x98,0x42,0x81,0xd6,
+ 0xbe,0xcc,0x33,0xda,0xea,0xa9,0xe9,0x96,0x92,0x98,0x4b,0x30,0x56,0x66,0xb1,0xb5,
+ 0xec,0x38,0x1f,0xd7,0x10,0xd5,0x5d,0x4d,0x55,0x53,0x97,0xa4,0x54,0x70,0x99,0x25,
+ 0x91,0xf4,0xad,0xce,0x9d,0x27,0xdf,0x7f,0xbe,0x03,0x83,0x3c,0x34,0xf9,0xba,0xb7,
+ 0xaa,0x35,0x53,0x62,0xc4,0xdc,0xb0,0xfe,0xd8,0x51,0xaa,0xa7,0x85,0xe5,0x9e,0x89,
+ 0xbb,0x45,0xda,0xf2,0x06,0x5d,0xce,0x2e,0x6b,0x6b,0xa2,0x52,0x6f,0xaa,0xa8,0x66,
+ 0xa7,0x32,0xa5,0xab,0x0b,0x98,0xeb,0x32,0xb2,0x77,0x0e,0xa1,0xe2,0xe7,0x61,0xf6,
+ 0xc4,0xa3,0x54,0x15,0xa7,0xee,0x47,0x34,0x91,0x32,0x5b,0x47,0x90,0xde,0x6d,0x86,
+ 0xba,0x97,0x36,0x7a,0xc8,0xe3,0xd6,0x43,0x83,0x70,0xa4,0x9d,0xc5,0xfc,0xe2,0x06,
+ 0x2a,0xb9,0x44,0x7a,0x0b,0xdd,0x07,0x00,0xef,0x6c,0x6f,0x68,0x2e,0x02,0xd6,0x57,
+ 0x10,0x0a,0x97,0xce,0x33,0x59,0xab,0x9a,0x18,0xa5,0x93,0x54,0x70,0xa6,0xc0,0x71,
+ 0xa8,0xf2,0x70,0x14,0x47,0xdb,0x02,0x16,0x67,0x6d,0xf0,0xfc,0x37,0xbe,0x34,0x34,
+ 0x50,0xa0,0xa8,0x26,0xcd,0xa9,0x13,0x55,0x15,0x1d,0x34,0xb5,0x55,0x72,0x08,0x60,
+ 0x85,0x4b,0x3b,0x9f,0x03,0xfb,0x93,0xc0,0x1e,0x4e,0x22,0xba,0xa7,0xae,0xd7,0x22,
+ 0xe8,0x26,0xea,0x2c,0xbe,0xea,0xcc,0x21,0x68,0x4c,0x94,0xe2,0x57,0x8c,0xbb,0x03,
+ 0xa6,0x48,0xb5,0x02,0x2e,0x2e,0xa6,0xdb,0xa6,0xab,0x90,0x6d,0x63,0xee,0x7d,0x4f,
+ 0x57,0x59,0x92,0x54,0xc3,0x96,0x50,0x51,0x66,0x55,0x63,0x4b,0xc7,0x4f,0x59,0xf9,
+ 0x4b,0x29,0xd4,0x0a,0x8b,0x10,0x5c,0x30,0x1a,0x75,0x7a,0x6f,0xf9,0xb6,0xb8,0x38,
+ 0x46,0x7d,0x36,0x6f,0x95,0xe6,0xd9,0x8f,0x4e,0x51,0x50,0xe6,0x74,0x15,0x54,0x13,
+ 0x54,0x4b,0x94,0xd3,0xc3,0xa9,0x58,0xa4,0xb1,0xac,0x55,0x12,0xab,0x3b,0xdb,0xb7,
+ 0x29,0xd6,0x75,0x9d,0x46,0xce,0xf6,0x00,0x36,0xdc,0xaf,0x10,0xd5,0x3f,0x4f,0x80,
+ 0x30,0x45,0x63,0xb9,0xf5,0xf4,0x16,0xb4,0x41,0x10,0x93,0x27,0xd8,0x41,0xf5,0xe7,
+ 0xc4,0x7c,0xc7,0xe2,0x4e,0x63,0x1d,0x26,0x7d,0x99,0x55,0xae,0x57,0x41,0x55,0x2c,
+ 0xf4,0x14,0x0f,0x18,0x89,0xe1,0xd4,0x5b,0xfe,0x65,0xac,0x01,0x54,0xd2,0xb7,0x20,
+ 0x9f,0x1e,0xf8,0xce,0xeb,0x2a,0xe2,0x86,0x8c,0xd3,0xa4,0x70,0x54,0x95,0x89,0x60,
+ 0x0a,0x91,0xe8,0x98,0x30,0x42,0x23,0x7b,0xaf,0x3b,0xb9,0x24,0x72,0xc5,0x56,0xf8,
+ 0x3e,0xba,0xad,0xb2,0x68,0xea,0x28,0xb3,0x0c,0x9a,0x5a,0x3c,0xc2,0x96,0x46,0x57,
+ 0x82,0xad,0xb5,0x38,0x63,0xa4,0x31,0x6b,0xd9,0xc3,0x7a,0x7f,0x29,0xe2,0xc0,0x9f,
+ 0x37,0x82,0xa9,0x83,0xbd,0x35,0x45,0x46,0x55,0xdc,0x64,0xa7,0x92,0x29,0x1a,0x48,
+ 0x63,0x28,0x54,0xb2,0x82,0xa6,0xfc,0x8b,0x35,0xc5,0xfd,0xc7,0xd4,0x63,0xc4,0xbb,
+ 0xcc,0x74,0x84,0xbc,0xda,0xeb,0x00,0x1a,0x28,0x21,0x0c,0xb0,0x66,0x2f,0x51,0x3d,
+ 0x55,0x45,0x3c,0x2d,0x4d,0x0a,0x1e,0xdf,0x68,0xc7,0xde,0x28,0xca,0xbd,0xa5,0x08,
+ 0x84,0x2b,0x69,0xf5,0x5d,0xac,0x3d,0x06,0xfb,0x90,0x0c,0x85,0x62,0xd3,0xd0,0x28,
+ 0xa0,0xa7,0x88,0x49,0x6d,0xe5,0x95,0xa3,0x28,0xcc,0x4a,0xee,0xe4,0x1f,0xca,0x10,
+ 0x7a,0x76,0xdb,0x66,0x6b,0x0d,0x43,0x11,0xcd,0x59,0x2b,0xc1,0x05,0x35,0x50,0x8d,
+ 0x84,0x1d,0xd7,0x87,0x61,0xa8,0x96,0xdd,0x87,0x91,0x6b,0xee,0x76,0xf1,0xf7,0xc1,
+ 0x59,0x45,0x5b,0xc2,0xff,0x00,0x37,0x57,0x54,0x88,0xf6,0x92,0x35,0x79,0x5d,0xc4,
+ 0x84,0xe9,0x00,0x8b,0x8d,0xb7,0xbd,0xae,0x6f,0xba,0x8f,0xbe,0x19,0xde,0x89,0x89,
+ 0x4a,0x8a,0x29,0x69,0x73,0x28,0x69,0x6b,0x29,0xe4,0x92,0xe3,0x80,0xba,0x06,0xb0,
+ 0x09,0xb8,0x1c,0x37,0xef,0x73,0x71,0xf6,0xc2,0xa2,0xa4,0xab,0x79,0x1f,0xb6,0xf1,
+ 0x46,0x80,0x37,0x70,0xbb,0x7a,0x5a,0xfc,0x12,0x37,0x3b,0xed,0xbf,0x1e,0x70,0x5c,
+ 0x2d,0x34,0xf3,0xd4,0xa3,0xa3,0x38,0x55,0x25,0x24,0x66,0x0c,0xc1,0x80,0xd2,0x58,
+ 0x7d,0x6f,0x6d,0xed,0xe7,0x13,0x59,0x74,0x74,0x54,0x10,0x43,0x53,0x52,0xcf,0x2d,
+ 0x5c,0x94,0xa5,0x64,0x69,0x09,0x32,0x46,0xfb,0x02,0x16,0xe3,0x4a,0x8b,0x81,0xe7,
+ 0xeb,0xee,0x31,0x95,0xce,0x23,0xa6,0x52,0xda,0x1f,0x2d,0x9e,0x0a,0x68,0x5d,0x5e,
+ 0x05,0x99,0xd5,0x49,0x69,0x5a,0x3d,0x28,0xaf,0xb7,0xa5,0x05,0xfe,0xff,0x00,0x5f,
+ 0xe9,0x81,0xe4,0xcc,0x7b,0xfa,0x4a,0xc2,0xb4,0xfa,0xe5,0x2e,0xe6,0x05,0x0a,0xc5,
+ 0xf4,0x90,0x38,0xb5,0xb6,0x3e,0x7d,0xf0,0xba,0xa5,0x97,0x4a,0xc5,0x34,0xee,0xcb,
+ 0x0c,0x37,0x75,0x20,0x11,0xdc,0x26,0xeb,0x63,0xb0,0x07,0xfa,0x9b,0xf8,0xc4,0x4b,
+ 0x4b,0x2a,0x49,0x3c,0xbd,0xc5,0xf5,0x3e,0x96,0xf4,0x81,0x76,0xf6,0x3f,0x5d,0xf9,
+ 0xc5,0x02,0x36,0xb8,0x92,0x39,0x53,0x94,0x52,0xbc,0xe6,0xa8,0x24,0x4f,0x28,0x29,
+ 0x19,0x25,0x51,0xf5,0x33,0x6e,0x0d,0x85,0xad,0x7d,0xb6,0xb6,0xdc,0x7b,0xe2,0x46,
+ 0x79,0xa6,0x3d,0xa5,0xaa,0x08,0x22,0x52,0x34,0x51,0xa4,0x57,0x76,0x16,0xb9,0xb9,
+ 0xb9,0xb0,0xf2,0x40,0xe3,0x6f,0x38,0x82,0xcb,0xaa,0x1a,0xa5,0x9e,0xaa,0x39,0x0c,
+ 0x28,0xa5,0x86,0xab,0x0b,0x9d,0xbe,0xbc,0x8b,0x5e,0xe7,0xf4,0xc7,0x95,0x35,0x3a,
+ 0x6a,0xc3,0x48,0xc8,0xd2,0xad,0x95,0x7b,0x8c,0x15,0x6c,0x6c,0x6e,0x6c,0x78,0xdc,
+ 0x1b,0x6d,0x7d,0xb1,0xa1,0xa2,0x9e,0x2c,0x5d,0x28,0x7d,0x57,0xe9,0xf6,0x47,0x54,
+ 0xaf,0x02,0xea,0xb1,0x27,0x92,0x31,0x67,0x8e,0x75,0xd2,0x31,0x46,0xc9,0x1d,0x20,
+ 0x1d,0xa4,0xbe,0x95,0x36,0xdf,0x91,0x8b,0x6d,0x3f,0xa8,0x02,0xb7,0xc7,0xb1,0x78,
+ 0xca,0xce,0x0e,0x14,0x82,0x56,0xac,0x6c,0x37,0xb6,0x25,0x20,0xcd,0x57,0x4f,0x38,
+ 0xa8,0xe6,0x0c,0xf1,0x90,0x46,0xdb,0xef,0x8f,0xa3,0xab,0xd0,0x97,0x27,0x15,0xed,
+ 0xb4,0x6d,0x5d,0x96,0xb4,0x4a,0x37,0x6b,0x62,0x37,0x3e,0x0b,0x3e,0x57,0x59,0x1f,
+ 0x26,0x48,0x99,0x7f,0x71,0x88,0x9a,0x1c,0xc8,0x33,0x59,0xd8,0x7d,0xf0,0x3e,0x79,
+ 0x9f,0xd3,0xd3,0x21,0x49,0x58,0x00,0x45,0x8d,0xfe,0xb8,0x60,0xd3,0x6a,0x5e,0x17,
+ 0x2d,0x2e,0x4f,0x3a,0x55,0x49,0x4c,0x0a,0xf7,0x23,0x72,0xbb,0x1e,0x4f,0x8b,0x0c,
+ 0x5b,0x7a,0x56,0x28,0x7e,0x66,0x6a,0x4a,0xe4,0x01,0x88,0x00,0xf8,0xb8,0xe7,0x0a,
+ 0xea,0xe8,0xa9,0xb2,0xbc,0xf4,0x55,0xd1,0x0f,0x4d,0x40,0x60,0xc3,0xeb,0x6d,0x88,
+ 0xf6,0xff,0x00,0xe3,0x11,0xf4,0x19,0x82,0xc9,0x58,0xd3,0xcf,0x72,0xe2,0x3b,0x47,
+ 0xe7,0x7f,0xaf,0xe9,0xb6,0x3b,0x66,0xe4,0x65,0xae,0x78,0xa6,0xb9,0x11,0xd5,0x0a,
+ 0x99,0x7d,0x78,0x7a,0x77,0x46,0x8a,0x41,0xa9,0x46,0x9d,0xc5,0xbc,0x7d,0xbe,0xb8,
+ 0xfb,0xfc,0x4a,0xb2,0x1c,0xb2,0xfa,0x1a,0x13,0x21,0x16,0x37,0xb1,0xb5,0xb9,0x18,
+ 0x32,0xa2,0x37,0xad,0xa2,0xef,0x94,0x45,0x65,0x7d,0x05,0x67,0x3e,0xa1,0xf5,0x0b,
+ 0xe3,0xdf,0x11,0xb2,0xd5,0xac,0x51,0x49,0x12,0xb1,0x99,0x23,0xb2,0xd9,0xf7,0x24,
+ 0x7b,0xdf,0x08,0x05,0x80,0x11,0x26,0x8d,0xa4,0xd0,0x67,0x26,0x91,0x98,0x55,0xa7,
+ 0x78,0xde,0xeb,0xe2,0xc7,0xea,0x71,0x6c,0xcb,0x33,0x7e,0xec,0x4e,0x32,0xf8,0x5d,
+ 0x4b,0xee,0x6c,0xba,0x82,0xfe,0xdb,0x0c,0x51,0x23,0x8e,0x29,0x88,0x2e,0xc5,0x6c,
+ 0x77,0xfb,0x63,0x44,0xe8,0xfa,0xca,0x2a,0x08,0x24,0xa0,0x79,0x56,0x48,0xa7,0x62,
+ 0x56,0x40,0xba,0x49,0x3f,0x53,0x81,0x2b,0x40,0x17,0x48,0xc6,0xe2,0x4d,0x28,0xea,
+ 0xc9,0xa3,0x96,0x9a,0x46,0x52,0x35,0xa1,0xb5,0x8a,0x80,0x41,0xbd,0xf9,0xc4,0x3a,
+ 0x66,0xec,0x5a,0x38,0xe4,0x53,0xa0,0x1f,0x53,0x5f,0x7c,0x4d,0x75,0x2e,0x42,0x99,
+ 0x62,0x7c,0xc5,0x19,0xd4,0xb2,0x38,0xd3,0xa4,0xdc,0x0f,0xb8,0xc5,0x60,0x3a,0x86,
+ 0x0b,0x3c,0x56,0xd3,0xe0,0x1b,0x61,0xa3,0x68,0x23,0x08,0x3c,0x90,0x51,0x92,0xca,
+ 0x65,0xd4,0xb2,0x22,0xbc,0x41,0xc9,0x53,0xed,0x7f,0x63,0xe3,0x03,0x48,0x54,0x49,
+ 0x60,0x34,0x28,0xda,0xc7,0xfb,0xe1,0xda,0x60,0x1d,0xd5,0x09,0x52,0x37,0x17,0x3f,
+ 0xdf,0x1a,0x47,0x4d,0xaa,0x50,0xd0,0x49,0x03,0x76,0xe6,0x69,0x94,0x02,0x64,0x8d,
+ 0x58,0x93,0xc0,0x04,0x6f,0x7d,0xb6,0xc5,0x8e,0x77,0x96,0x38,0x48,0x06,0xf5,0x9c,
+ 0x04,0x5b,0x5d,0x6f,0x7c,0x3d,0x1c,0x60,0xfd,0x0e,0x2f,0xf5,0x5f,0x0c,0xab,0x67,
+ 0x76,0x92,0x82,0x90,0xd3,0x46,0xc4,0x69,0x52,0x76,0x5e,0x2f,0xfd,0x31,0x1f,0xff,
+ 0x00,0x81,0x2b,0xa1,0xd6,0x75,0xc7,0xe8,0x52,0xc5,0x49,0xf5,0xed,0xf4,0xf6,0xfa,
+ 0xe1,0x9b,0x34,0x67,0xaa,0x53,0x1b,0x87,0x44,0x06,0x5f,0x4f,0xde,0x68,0xd9,0x29,
+ 0xda,0x69,0x22,0x1a,0x9d,0x87,0x00,0x7d,0x6d,0xfe,0xce,0x32,0x8e,0xb6,0xe8,0xae,
+ 0x83,0xf8,0x75,0x9e,0xc5,0x99,0xe5,0xf9,0x1d,0x17,0x50,0x66,0xb9,0x85,0x74,0x12,
+ 0xc3,0x92,0xb5,0x77,0xff,0x00,0x40,0x8b,0x7b,0x3c,0x54,0xaa,0x0c,0xb3,0x21,0x73,
+ 0xff,0x00,0x2f,0x4b,0x01,0x6b,0xda,0xc2,0xe3,0x68,0xcb,0x67,0xac,0xcb,0x5d,0xa1,
+ 0x45,0x56,0x32,0xa6,0x85,0x52,0x7d,0x24,0xdb,0x6d,0x40,0x6f,0xcd,0xb6,0xc7,0x32,
+ 0xfc,0x4a,0xeb,0x7e,0xa1,0xcc,0xba,0xaf,0x2b,0xa4,0x32,0xd2,0xd5,0xcb,0x43,0x58,
+ 0xf1,0xe5,0xb3,0x65,0x06,0x38,0x2a,0xe7,0x9d,0x75,0x44,0x65,0x12,0xa9,0x2f,0x00,
+ 0x66,0x24,0x2c,0x64,0x9e,0x0b,0x6c,0x58,0x1c,0x73,0x7c,0x49,0xec,0x63,0x03,0x9c,
+ 0x2c,0xf4,0xc5,0xf6,0xf7,0xfe,0xd6,0x8d,0x38,0x24,0xd5,0xfc,0xfa,0x2a,0x5f,0xc4,
+ 0xfa,0x59,0x73,0x6c,0xe2,0xb3,0x37,0xe9,0x9e,0x9d,0xce,0x20,0xca,0x0d,0x39,0x39,
+ 0x85,0x7c,0x8f,0x2d,0x5c,0x32,0xce,0xae,0x12,0x43,0xae,0xc0,0x46,0xab,0xe9,0x42,
+ 0x8d,0x66,0x07,0x9b,0x02,0x31,0x42,0xcb,0xe2,0x0b,0x3d,0x3a,0x54,0x8f,0x95,0x64,
+ 0x91,0x6c,0xef,0x1e,0xbd,0x16,0x60,0xc0,0x08,0xef,0xa5,0xc9,0x1c,0x07,0xb6,0xe2,
+ 0xd8,0xb7,0xe6,0x5d,0x51,0x2c,0xb4,0x2d,0x47,0x0c,0x50,0xad,0x53,0xd3,0x54,0x49,
+ 0x59,0x53,0x14,0xef,0x19,0x56,0x9c,0x9f,0x98,0x81,0x9e,0xf6,0x70,0xd6,0xb9,0x0c,
+ 0x0f,0xe6,0x20,0x1f,0x48,0x26,0xa7,0xa2,0x1a,0x9a,0x99,0xa6,0x84,0x77,0xa4,0x48,
+ 0x0b,0xab,0xcb,0x25,0x87,0x70,0x0b,0xb9,0xd3,0x63,0x7b,0x5e,0xdb,0x5a,0xfc,0xdf,
+ 0xc6,0x3c,0x8c,0xcf,0x69,0x93,0x73,0x3e,0x65,0x74,0x99,0x6d,0x14,0x81,0x93,0x32,
+ 0x9e,0x86,0xbe,0xac,0x51,0x28,0xb4,0xe1,0xe3,0x61,0x51,0x08,0x3a,0xd6,0xe6,0xea,
+ 0x53,0x85,0xb8,0xb5,0xc0,0xfb,0x71,0x83,0xaa,0x3a,0x75,0x8e,0x4b,0x94,0xd5,0x53,
+ 0xcb,0x42,0xf4,0xb5,0x9d,0xd7,0x11,0xad,0x6a,0xc9,0x52,0x85,0x08,0x59,0x0b,0xc4,
+ 0x3d,0x48,0x2e,0x7d,0x37,0xfc,0xc1,0x6e,0x09,0xdf,0x0d,0xcc,0x1f,0x44,0x74,0xcd,
+ 0x20,0x24,0xde,0xe0,0x5b,0x48,0x16,0x16,0xdc,0x9e,0x7d,0x86,0x3d,0xcb,0xaa,0x62,
+ 0x9b,0xe6,0xa3,0x85,0xe2,0x89,0x22,0x8d,0x98,0xb3,0x12,0xd2,0x31,0x27,0xc1,0xb6,
+ 0xf7,0x27,0xcf,0x1f,0x5c,0x67,0x2e,0xf8,0x6c,0x23,0x69,0xe2,0x23,0xa7,0x59,0xa3,
+ 0x24,0xca,0xae,0x91,0xa8,0x06,0x41,0x64,0x53,0xee,0x00,0x37,0x24,0xdf,0xdb,0xfa,
+ 0x6e,0x14,0x3d,0x45,0x57,0x06,0x5b,0x2c,0x66,0x5b,0xc6,0xba,0x95,0x55,0x23,0x3d,
+ 0xd3,0x1d,0xbc,0xc9,0xc2,0x81,0xbd,0x8d,0x89,0xe7,0xc5,0xb0,0xcd,0x54,0xd6,0xa2,
+ 0x15,0x00,0xcf,0x11,0x63,0x66,0x62,0x07,0xe5,0x1f,0xcb,0x71,0xef,0x7e,0x77,0xfa,
+ 0xe0,0x7a,0x01,0x34,0x35,0x59,0x7d,0x43,0xb8,0x82,0x39,0xdd,0x87,0x76,0xa0,0x68,
+ 0x46,0x4e,0x0d,0x89,0xe7,0x6f,0x3e,0xe4,0x61,0x5a,0xc1,0x44,0x9c,0xa2,0xde,0xe5,
+ 0x4e,0x97,0x94,0x52,0x9f,0x94,0x44,0x9a,0x4f,0xc3,0x31,0x2b,0x1b,0xdc,0xda,0xe5,
+ 0xb7,0xd2,0x0b,0x0d,0xb6,0xb0,0xf3,0x6c,0x7b,0x2d,0x13,0xc2,0x41,0xcd,0x1c,0xba,
+ 0x4d,0x11,0x9d,0x83,0x1d,0x0a,0x92,0x13,0x73,0x19,0xf1,0xb0,0xdc,0x83,0xe7,0xec,
+ 0x30,0x5c,0x15,0xf3,0x43,0x35,0x72,0xd4,0x34,0x72,0x1d,0x02,0x40,0xb1,0x82,0xcc,
+ 0x41,0x3c,0x13,0xc5,0xff,0x00,0x7f,0xa0,0xf7,0x0a,0x1a,0xc9,0x58,0xcd,0x04,0x86,
+ 0xd3,0x53,0xdd,0x40,0x9c,0x83,0xa5,0x8d,0x80,0x26,0xe2,0xdc,0xff,0x00,0xa6,0x2a,
+ 0xcf,0x40,0x12,0xe5,0x09,0x58,0xd3,0x31,0x2e,0xb3,0x24,0xba,0x4e,0x98,0xd6,0x9d,
+ 0x43,0x6a,0x16,0xfc,0xde,0x06,0xdb,0xfe,0xd8,0x8b,0x31,0x37,0xcc,0x2c,0x42,0x06,
+ 0xee,0x8b,0x97,0x46,0x03,0x6d,0x85,0x8f,0xd4,0x9e,0x7f,0x6c,0x3d,0x22,0x57,0xab,
+ 0xb8,0x9c,0x34,0x15,0x25,0xc2,0x6c,0xbe,0xfb,0xeb,0x2d,0xc0,0xe3,0xc7,0xf4,0xc3,
+ 0x35,0x10,0xc9,0x4f,0x32,0x8a,0x79,0x5a,0xb1,0xda,0xeb,0x3c,0x8b,0x19,0xd2,0x1c,
+ 0x9d,0x86,0xae,0x0f,0x23,0xf5,0x36,0xc6,0x96,0xd8,0xc7,0x74,0xf4,0xbf,0x49,0x72,
+ 0x9c,0xc6,0x11,0x7a,0x80,0x6e,0x5e,0xc5,0x85,0xf7,0x18,0xb9,0xe5,0xd9,0xdc,0x2a,
+ 0xa0,0x96,0x0c,0xb6,0xda,0xc7,0x19,0x54,0x19,0x92,0xc4,0xe5,0x66,0x1a,0x5a,0xde,
+ 0xa0,0x47,0x3f,0x4b,0xe2,0x6e,0x86,0x55,0x72,0x9f,0x28,0x09,0x8c,0x8f,0x7e,0x31,
+ 0xed,0xe4,0x87,0xba,0xe6,0x36,0x45,0xa6,0x4b,0x3d,0x35,0x6a,0xd8,0xb0,0xb9,0xe3,
+ 0x11,0x72,0x03,0x11,0x2b,0x7b,0xae,0x23,0xa8,0xe1,0x66,0x55,0x91,0x25,0x60,0xc4,
+ 0x5b,0x6c,0x01,0x5d,0x9a,0x4d,0x47,0x53,0xdb,0x90,0x13,0x7f,0xca,0x47,0x0d,0x8c,
+ 0xc2,0x3c,0xd0,0x56,0x97,0x61,0x7b,0x36,0x70,0x68,0x2b,0x0d,0xee,0xc8,0x64,0xd1,
+ 0x61,0xe0,0xe0,0x4e,0xa7,0xce,0x25,0xaa,0xcb,0x97,0xe5,0xe0,0x2d,0x24,0x8d,0xa5,
+ 0x4f,0x95,0x38,0x47,0xce,0xac,0x8c,0xf2,0xb6,0xfd,0xc6,0xe0,0xef,0xbe,0x3d,0x9e,
+ 0x68,0xd6,0x99,0xa6,0x60,0x1a,0xfb,0xaf,0x9b,0x1c,0x69,0x0c,0x00,0x83,0x4a,0xb2,
+ 0xeb,0x0a,0x91,0x99,0x65,0x95,0x59,0x8c,0x51,0x09,0xe4,0x01,0xc6,0xea,0x34,0x6e,
+ 0x3e,0x87,0xf5,0xc4,0x54,0x59,0x5d,0x4c,0x4a,0xe6,0x68,0xc4,0x41,0x00,0xd5,0xa8,
+ 0x5f,0x9f,0x63,0x8d,0x71,0x5e,0x1c,0xc6,0x86,0x2b,0xaa,0x6b,0xbe,0xa0,0xd6,0xe1,
+ 0xbc,0x8b,0xe2,0x1f,0x3a,0xca,0x0c,0xf4,0x0d,0x2d,0x3c,0xba,0xbb,0x76,0xd4,0x02,
+ 0x5c,0x85,0xbf,0x8b,0x7d,0xff,0x00,0xa6,0x34,0x32,0x5f,0xed,0x55,0x16,0x0e,0x54,
+ 0x0d,0x0d,0x21,0xab,0xa0,0x49,0x90,0x82,0xdb,0xdf,0x40,0x37,0x24,0x7d,0x0f,0x91,
+ 0x81,0xe4,0xe9,0x82,0x94,0x89,0x35,0x33,0x34,0xaf,0x29,0xf5,0x5b,0x80,0x3c,0xdf,
+ 0xed,0xce,0x2c,0xdd,0x2c,0xb0,0x54,0xd2,0xbd,0x3d,0x5c,0x5a,0x26,0x86,0x5d,0x2c,
+ 0x54,0x9d,0x2c,0x3c,0x37,0xed,0x8b,0x98,0x8e,0x08,0x07,0xe4,0x42,0x84,0x69,0x36,
+ 0x1b,0x62,0xb7,0x48,0x58,0xea,0x09,0x83,0x43,0x85,0xac,0x2a,0xa3,0x23,0xae,0xa6,
+ 0x52,0xcf,0x01,0x00,0x1b,0x6d,0xed,0xe0,0xe0,0x7a,0x79,0x9e,0x37,0x52,0xa4,0x8d,
+ 0x26,0xf6,0xc6,0x8d,0x9f,0x98,0xc3,0x4e,0xb2,0x5b,0x4b,0x7e,0x55,0xfe,0x56,0x1e,
+ 0x71,0x43,0xa8,0x8e,0x30,0xea,0xd1,0xa8,0x52,0xfb,0xec,0x76,0x1f,0x4c,0x6c,0x8d,
+ 0xc5,0xe3,0x2b,0x3b,0x9b,0xb4,0xe1,0x4b,0x2f,0x51,0x54,0x59,0x04,0xe9,0x1c,0xc8,
+ 0x2e,0x77,0x1b,0xef,0x88,0xc9,0x43,0xd4,0xca,0xd2,0x90,0x48,0x63,0x61,0xf6,0xf6,
+ 0xc3,0xb4,0x94,0xd1,0x48,0x1a,0x29,0x5c,0x21,0x3b,0x86,0x3f,0xdb,0x16,0x1c,0xb7,
+ 0x20,0x42,0x89,0x30,0x97,0xb9,0x1e,0xc1,0xc9,0x16,0x1c,0xec,0x3d,0xf7,0xc4,0xf8,
+ 0x63,0x53,0x2e,0x55,0xc8,0x13,0x41,0xdd,0x49,0x20,0xf1,0x7b,0x5c,0x0e,0x71,0xad,
+ 0xf4,0x61,0x5b,0xa0,0x64,0x12,0x4d,0x21,0x56,0x21,0x86,0xc0,0xf3,0xcf,0x38,0x94,
+ 0xa2,0xe8,0xfa,0x5e,0xd5,0x24,0x0f,0x4c,0x95,0x10,0xc8,0x64,0x3a,0xa4,0x92,0xfa,
+ 0x1b,0x4d,0xec,0xab,0x6d,0xfc,0xdf,0x71,0xc0,0xe7,0x17,0x7c,0x9f,0xa5,0xe9,0xa8,
+ 0x68,0xe9,0xe2,0x8c,0x5c,0xc4,0x2c,0x0d,0xf8,0x17,0xe3,0x18,0x26,0xd4,0x31,0xc2,
+ 0x96,0x98,0xe2,0x2d,0x36,0xa5,0xf2,0xdd,0x4f,0x00,0xef,0x58,0x13,0xbd,0x81,0xbd,
+ 0xb1,0x50,0xeb,0x88,0x3e,0x56,0x1e,0xf5,0x39,0x78,0x1d,0x5b,0x76,0x55,0xb8,0x20,
+ 0xe2,0xe1,0x02,0x1a,0x57,0x21,0xb7,0x07,0x8c,0x05,0x9f,0x40,0x33,0x0c,0xbe,0x45,
+ 0x04,0x2c,0x80,0x7a,0x4e,0x30,0xc6,0xea,0x7d,0xf4,0x5a,0x1c,0x2d,0xb4,0xb9,0x8f,
+ 0xe2,0x6f,0x57,0x4b,0xd1,0xd9,0x48,0xcf,0x29,0x20,0x57,0x73,0x98,0x53,0x42,0xd0,
+ 0xb5,0x3b,0x4a,0x48,0x72,0x75,0x69,0x55,0x65,0x3a,0x8d,0xb6,0xe7,0x7b,0x0b,0x6f,
+ 0x8e,0x2d,0xea,0x39,0xcc,0xf3,0x56,0xd7,0xe9,0x15,0x30,0x56,0x57,0xd4,0x1b,0xd5,
+ 0x84,0x4a,0xad,0x5a,0x99,0xac,0xea,0x87,0xd2,0xf6,0x73,0xb8,0xf4,0x93,0x70,0x37,
+ 0x06,0xdd,0xf9,0xd5,0xdd,0x1d,0x49,0x9b,0x64,0x92,0xd2,0x67,0x34,0x4f,0x35,0x2b,
+ 0xcd,0x1f,0x79,0x4b,0x15,0xdd,0x58,0x32,0x15,0x20,0x83,0x70,0xc0,0x10,0x7e,0x98,
+ 0xe1,0xaf,0x89,0x23,0x2d,0x7e,0xb5,0xea,0x38,0xe9,0x2b,0x1b,0x32,0x91,0xb3,0x09,
+ 0x5c,0xc6,0x6a,0x7e,0x65,0x55,0xf5,0x9f,0xfd,0x4b,0x5e,0x53,0x6e,0x76,0x1a,0x6c,
+ 0x54,0xea,0xe4,0xd3,0xe2,0xec,0x73,0x9a,0xc7,0xdf,0xc2,0x3f,0x75,0x5e,0x98,0x80,
+ 0x48,0xac,0xa0,0xeb,0xea,0x29,0xe7,0xc9,0x7a,0x64,0x38,0xac,0xa8,0x34,0xb4,0x6c,
+ 0x73,0x15,0x8e,0x08,0xb5,0x46,0x1e,0xa5,0x8c,0x7f,0x90,0x13,0x27,0xa0,0x81,0x79,
+ 0x74,0xee,0xca,0xa2,0xc1,0x46,0x23,0x04,0xd4,0xb4,0xb5,0x52,0x1c,0xa2,0xa1,0xd6,
+ 0x92,0x70,0xfa,0x24,0x54,0x31,0x7f,0xc3,0xdc,0x10,0xac,0x35,0x31,0xf0,0x09,0x56,
+ 0x2c,0x2f,0x7d,0xcf,0x26,0x06,0x35,0xa8,0x86,0x46,0x88,0x4b,0x25,0x00,0x58,0xce,
+ 0xb9,0x51,0x8a,0x82,0x83,0xd4,0xa3,0x63,0xef,0xfe,0x83,0x0e,0x54,0xd5,0x43,0x1d,
+ 0x14,0x6b,0x09,0x69,0x10,0xa0,0xf5,0x48,0xd6,0x3f,0xa0,0x1e,0xd6,0x23,0xdb,0x1e,
+ 0x6d,0xe2,0xea,0x96,0xec,0xa1,0x2b,0xb3,0x48,0x25,0x90,0xfe,0x11,0x92,0x08,0xc6,
+ 0x98,0xef,0x25,0x98,0x81,0xb9,0x26,0xdc,0xdc,0xff,0x00,0xaf,0xe9,0x84,0xe4,0xb3,
+ 0x27,0xcd,0xcb,0x24,0xba,0x75,0x34,0x65,0x62,0x40,0xb7,0x7d,0x5b,0x58,0x0b,0x0b,
+ 0x01,0xa4,0x9b,0x9f,0xa5,0xb1,0x11,0x25,0xe4,0x72,0xc8,0x77,0xb5,0xec,0x7d,0x86,
+ 0x27,0x32,0xec,0xb4,0x46,0xaf,0xf3,0x08,0x63,0xab,0xd0,0x5e,0x35,0xd4,0x41,0x54,
+ 0xdb,0x73,0x63,0xc9,0x07,0x60,0x6d,0x7d,0xae,0x6c,0x71,0x63,0x9a,0xd6,0xb2,0x95,
+ 0x84,0x00,0x11,0xd9,0x25,0x3b,0x7f,0x8e,0xfe,0x05,0x5d,0x24,0x23,0x4b,0xb9,0x9a,
+ 0xa5,0x03,0x22,0x71,0x62,0xa0,0x90,0x35,0xee,0x00,0xc4,0xcd,0x5d,0x4a,0x4b,0xdc,
+ 0xcb,0xa9,0x62,0x86,0x48,0x5c,0xc6,0x15,0xa3,0x90,0x2a,0xc4,0x47,0xe7,0x31,0x9b,
+ 0xdd,0x6e,0x09,0x63,0x6b,0xda,0xe4,0x5c,0xdf,0x00,0x7f,0x86,0xd2,0xc8,0xd5,0x14,
+ 0xe6,0x2a,0x68,0x29,0xa0,0x8c,0xcc,0xd3,0x98,0x99,0x89,0x22,0xde,0x96,0x63,0xf9,
+ 0x4f,0x3f,0xb9,0xb0,0xc3,0x95,0x32,0x3d,0x3e,0x5c,0x94,0xd1,0x0e,0xcd,0x33,0x33,
+ 0x48,0xf2,0x21,0xb6,0xa3,0xc6,0x85,0x04,0x82,0x14,0x8e,0x01,0x17,0xe7,0x19,0x6e,
+ 0xdc,0x0f,0xbf,0xba,0x4b,0xc2,0x77,0x34,0x96,0xae,0x8c,0x25,0x5d,0x18,0x99,0x62,
+ 0x2c,0x51,0x6a,0xd6,0x2b,0x85,0x62,0x6d,0xb0,0xdc,0xef,0x6b,0x0f,0x7d,0xf0,0x15,
+ 0x34,0xf4,0xf5,0x14,0xcf,0x25,0x51,0xed,0x95,0xe5,0xd4,0xb5,0xae,0x39,0x73,0x7d,
+ 0xef,0x6e,0x00,0xf2,0x48,0xe4,0xe1,0xf9,0x6a,0x6a,0x32,0xbc,0xb9,0x29,0x3b,0x8b,
+ 0x4c,0xcf,0x50,0x44,0x50,0x89,0x14,0xb5,0xac,0xa4,0x96,0x3b,0x69,0x17,0x1b,0x5f,
+ 0xf4,0x38,0x1b,0x34,0xfc,0x68,0x69,0x66,0x79,0x44,0xa3,0x48,0x0c,0xe0,0xde,0xec,
+ 0x77,0xda,0xdb,0x7d,0x8e,0xf8,0x56,0x6e,0x68,0xe3,0xea,0x82,0x8c,0x9e,0xa6,0x5b,
+ 0x39,0x86,0x46,0x8e,0xf6,0xba,0x97,0xe7,0xd8,0x37,0xb9,0xff,0x00,0x63,0x1e,0x2d,
+ 0x59,0x95,0xe9,0xd5,0xed,0x34,0xc2,0x32,0x15,0x42,0x95,0x00,0x16,0xbd,0xac,0x0e,
+ 0xf6,0xb5,0xef,0xb6,0x1a,0x12,0xbc,0x86,0xec,0xd2,0x01,0x13,0x5c,0x21,0x1a,0x8b,
+ 0x9b,0xdc,0x8b,0x5f,0xde,0xf8,0x22,0x58,0xcc,0x0f,0x32,0x2b,0xab,0xc6,0xb7,0x2a,
+ 0xda,0xb4,0x89,0x05,0xb9,0xb1,0xde,0xc3,0x8b,0x11,0xf4,0xc6,0xc0,0x28,0x26,0x3c,
+ 0x2e,0xf1,0xad,0xa8,0x56,0xa5,0x30,0xe8,0x66,0x2c,0x03,0x16,0x07,0x7b,0xe0,0x2c,
+ 0xba,0xb6,0x6a,0x69,0x00,0x49,0x4d,0xb8,0xde,0xfb,0x7d,0x6d,0x86,0xda,0xa6,0x49,
+ 0x24,0x2f,0x70,0x58,0xdb,0x72,0x30,0x87,0x91,0x9a,0x41,0x20,0xf4,0xb7,0x9b,0x63,
+ 0xe9,0x82,0x3c,0x52,0xf3,0x65,0xf9,0xb5,0xa5,0xe5,0xb9,0xc9,0x68,0x06,0xa3,0xea,
+ 0xb6,0xfb,0x62,0x0b,0x3b,0xcc,0x2a,0x26,0x91,0x40,0x2b,0xa4,0x5f,0xd7,0x72,0x3f,
+ 0xa6,0x2b,0xf4,0xb5,0xe6,0x35,0x1d,0xc2,0xee,0x47,0x00,0x1b,0x61,0x13,0xd7,0xcd,
+ 0x35,0x81,0x36,0x51,0xb8,0x1c,0xef,0x8c,0xed,0xd3,0xed,0x75,0xab,0x4c,0xd6,0x29,
+ 0x4a,0xd2,0x54,0xd6,0xc9,0x22,0xb2,0xba,0x04,0x53,0x76,0x20,0xf2,0x3d,0xc8,0xc4,
+ 0xb5,0x5d,0x51,0x5c,0xb1,0xe3,0xee,0x6a,0x71,0x72,0x4f,0xb8,0xb6,0x29,0x41,0xdd,
+ 0x6f,0xa5,0xad,0x7c,0x1e,0xf9,0x93,0x98,0x3b,0x76,0x07,0xd1,0xa2,0xf6,0xe0,0x61,
+ 0xdd,0x0d,0x90,0x52,0x89,0x30,0xa6,0x68,0x73,0xe6,0xa7,0xa2,0x45,0x7d,0x80,0x17,
+ 0xb0,0x3b,0x9d,0xf9,0xc7,0xa7,0xa8,0xd6,0x14,0x74,0x84,0x91,0x7b,0xff,0x00,0x36,
+ 0xdb,0xe2,0xb4,0x25,0x1a,0x19,0x48,0xbd,0xfd,0xf0,0x33,0x02,0x0e,0xdc,0x61,0xbc,
+ 0x86,0x95,0x3c,0xd2,0x14,0xcd,0x3e,0x66,0xcd,0x3c,0x67,0x5c,0x91,0xbb,0x3d,0x8b,
+ 0x23,0x1f,0x3e,0xf8,0xb5,0x54,0xf5,0x18,0x08,0xa6,0x26,0x36,0x26,0xc7,0xdb,0x19,
+ 0xec,0x77,0x46,0x05,0x49,0x07,0xdf,0x04,0xac,0xac,0x54,0x29,0x26,0xc2,0xf8,0x8e,
+ 0x80,0x38,0xa0,0xd9,0x48,0x52,0x99,0xa5,0x7f,0x7e,0x40,0x5f,0x76,0xbd,0xcd,0xcd,
+ 0xec,0x71,0x0f,0x21,0xbb,0xec,0x36,0xc3,0x8d,0xea,0x38,0xf0,0x46,0x4e,0xe0,0x5e,
+ 0xd8,0x76,0xb0,0x34,0x25,0x2e,0xb4,0xed,0x3a,0x92,0xe0,0x0d,0xfe,0x96,0xc5,0xfb,
+ 0xa7,0xea,0x23,0x29,0x12,0x40,0xfe,0xb0,0x6d,0x22,0x3e,0xc4,0x81,0xe4,0x62,0x9b,
+ 0x0e,0x59,0x50,0x63,0x8a,0x60,0x17,0x4b,0xf0,0x03,0xfa,0xad,0x7b,0x71,0xce,0x34,
+ 0x4e,0x98,0xe9,0x63,0x4d,0x56,0xa7,0x36,0xee,0xd3,0x30,0x5d,0x80,0xb0,0xf5,0x7d,
+ 0xfd,0xf1,0x9a,0x7d,0xa1,0xbc,0xab,0xe2,0xbb,0x57,0x15,0xac,0xff,0x00,0xcf,0x3a,
+ 0x66,0x95,0x8c,0x48,0x5d,0x2b,0x65,0x08,0xf0,0xab,0xb3,0xac,0x70,0xa5,0x8a,0xb1,
+ 0xdd,0x6c,0xce,0x38,0xbd,0xf8,0xc5,0xc2,0x9b,0x30,0xb1,0x55,0x0d,0xce,0x31,0x7a,
+ 0x8c,0xfa,0x04,0xf8,0xf1,0x94,0xe5,0xc2,0x57,0x34,0xd9,0x56,0x47,0xda,0x3f,0x88,
+ 0x00,0x59,0x67,0x3d,0xd6,0xbd,0xff,0x00,0x37,0xa0,0xc3,0x70,0x3d,0xf1,0xa2,0x57,
+ 0x4c,0x69,0xa7,0x56,0x81,0xc0,0x4f,0xbd,0xc0,0xc7,0x9f,0x65,0x48,0xf7,0x05,0xd3,
+ 0x77,0xc2,0xd0,0x55,0xbe,0x52,0xd5,0x4b,0xa6,0x25,0x66,0x7f,0xfd,0xa2,0xe7,0x18,
+ 0xef,0x5c,0xfc,0x69,0xe9,0xbe,0x84,0x35,0x54,0xf5,0x59,0x8f,0xf8,0xa6,0x61,0x15,
+ 0x2c,0xf3,0xad,0x36,0x5e,0xa6,0xa4,0xb3,0x46,0xba,0xbb,0x2c,0xe8,0x19,0x23,0x72,
+ 0x2e,0x46,0xa2,0x2c,0x15,0x89,0xb0,0x1b,0xc6,0x7c,0x6d,0xcc,0xe5,0xa9,0xf8,0x63,
+ 0x9a,0x66,0x90,0x66,0x95,0x39,0x54,0x9d,0x3d,0x51,0x4b,0x9b,0x77,0x29,0xe4,0x65,
+ 0x13,0x08,0xa6,0x5b,0xc6,0xda,0x4a,0xb5,0x9b,0x56,0xd6,0x23,0xd5,0x6f,0x17,0xc7,
+ 0x3e,0xf4,0x24,0xdd,0x37,0xf1,0x20,0xd2,0xf4,0xfc,0xd9,0xae,0x5f,0x94,0xcf,0x9b,
+ 0x67,0xb5,0x95,0x99,0x7e,0x59,0x4d,0x49,0x24,0xd5,0x34,0xf4,0xb3,0x0b,0xd5,0xa4,
+ 0xaa,0xba,0x92,0x29,0x74,0x8b,0x44,0xc0,0xb3,0x0b,0xfa,0xc9,0xd2,0x31,0x5b,0xde,
+ 0xe8,0xa4,0xf2,0xc0,0x45,0xa0,0x3c,0x6e,0x53,0x3f,0x17,0xbf,0x89,0x3c,0xc3,0x32,
+ 0xc9,0x27,0xa7,0xe8,0xba,0xee,0xcd,0x16,0x6c,0xa3,0xe4,0xe7,0x5a,0x56,0xa5,0xae,
+ 0xa3,0x11,0x3a,0x77,0x19,0xdc,0xea,0x56,0x59,0x07,0x71,0x51,0xd3,0xc5,0xef,0x62,
+ 0xbb,0xf2,0x37,0x52,0xf5,0x56,0x63,0xd4,0x99,0x95,0x56,0x63,0x98,0xd5,0xbd,0x55,
+ 0x75,0x4c,0x9a,0xea,0xea,0x3b,0x69,0x1f,0x71,0xf5,0x5a,0xf6,0x40,0x07,0x03,0xdb,
+ 0x93,0x82,0xb3,0x5c,0xcd,0xb3,0x4a,0x9a,0xe6,0x35,0x13,0x2a,0xa3,0xb0,0x48,0xdc,
+ 0x97,0x5a,0x78,0xf5,0x9b,0x28,0x22,0xcb,0x60,0x00,0xd8,0x2a,0xf9,0x3b,0x5f,0x10,
+ 0x73,0xd1,0xc5,0x2d,0x60,0x32,0x10,0xe8,0xf2,0xd9,0x63,0x59,0x40,0x3b,0x83,0x62,
+ 0xc4,0x02,0x07,0xd8,0x0c,0x72,0x24,0x95,0xd2,0x9f,0x88,0xab,0x9a,0xd0,0x0a,0x7a,
+ 0x95,0x27,0xa8,0x12,0x19,0x67,0x28,0xb1,0x3f,0x73,0x44,0xad,0x60,0x16,0xf7,0x2d,
+ 0x6b,0x7a,0xb8,0xe3,0xfe,0xb8,0xf2,0xa6,0xb2,0x23,0x36,0x84,0x13,0x4a,0xef,0xa4,
+ 0xbc,0x81,0x8c,0x8c,0x47,0xf9,0x40,0xf0,0x37,0x3e,0x7c,0xe0,0xed,0x1f,0xe2,0x0f,
+ 0x0e,0x5f,0x4e,0x81,0x09,0x72,0xcc,0x7d,0x56,0x23,0x6b,0xb3,0xed,0x72,0xb7,0xda,
+ 0xff,0x00,0x51,0x8f,0xb2,0xfc,0xa6,0xa0,0x14,0x54,0xef,0x51,0xcd,0x19,0x79,0x9a,
+ 0x75,0x99,0x80,0x10,0x8d,0x21,0x53,0x55,0xec,0x6e,0xc0,0xed,0x60,0x7e,0xb6,0xe3,
+ 0x30,0x70,0x39,0x3d,0x13,0x82,0x10,0xb5,0x59,0x5d,0x14,0x71,0x95,0xfc,0x45,0x97,
+ 0xd6,0xcf,0xf8,0x8b,0x29,0x8a,0xd6,0x3a,0x54,0x2d,0xb5,0xb5,0x86,0xe7,0x8d,0xc9,
+ 0xf1,0x89,0x58,0x56,0x99,0xa9,0xe0,0x8a,0x69,0x66,0xa4,0xd4,0x09,0x08,0xac,0x1e,
+ 0x46,0xb9,0xba,0xeb,0x24,0xda,0x3b,0x82,0x36,0x16,0xb5,0x89,0x3b,0xd8,0x62,0x3e,
+ 0x4a,0x86,0x86,0xab,0xe7,0x5a,0x91,0xd8,0x3b,0x90,0x26,0x93,0x52,0xae,0x92,0x48,
+ 0xb6,0xf6,0xd8,0x83,0xc5,0xb0,0x64,0x13,0x09,0x29,0xa5,0x8c,0xc2,0xc1,0xa5,0xfc,
+ 0x47,0x10,0x1b,0x77,0x54,0x0b,0x20,0x7b,0xee,0x08,0x60,0x78,0xd8,0xfe,0xe7,0x00,
+ 0x59,0xab,0x28,0x12,0x57,0x93,0x4c,0xc8,0xc6,0x2a,0x09,0x41,0x80,0x00,0x01,0x8d,
+ 0x6c,0xc3,0xd5,0x61,0xbb,0xd8,0xdc,0x91,0xf9,0xb7,0xfb,0xd8,0x62,0x1b,0x30,0x86,
+ 0xaa,0x4f,0x4b,0x15,0xa9,0xd8,0x2a,0x49,0x1b,0x0b,0x6a,0x2d,0xc1,0xbd,0x89,0xff,
+ 0x00,0x5f,0x27,0x12,0xb9,0x8d,0x70,0x48,0xda,0x33,0x2e,0xa9,0x4d,0xd5,0x8a,0x20,
+ 0x8c,0x96,0x3e,0x08,0x1b,0x11,0x6b,0xe2,0x12,0x9e,0xa0,0xa4,0x7d,0xd7,0x99,0xb5,
+ 0x12,0x54,0x28,0x23,0x83,0xcd,0xfe,0x86,0xdf,0xaf,0x18,0x0d,0xb3,0x90,0x10,0x1d,
+ 0xc2,0x98,0xce,0x62,0x54,0xed,0x99,0x92,0x16,0xac,0x95,0x50,0xb4,0x10,0x2d,0x96,
+ 0x0d,0xad,0xa4,0x9e,0x06,0xd6,0x36,0xde,0xd7,0xfb,0xe1,0x99,0x2a,0xe1,0xaf,0x82,
+ 0xfa,0x5d,0x2a,0xe5,0x70,0x8a,0x3b,0xd7,0x57,0x23,0x62,0xe5,0xfe,0xfb,0x69,0x00,
+ 0x6d,0x6b,0x6d,0x86,0xe2,0x9a,0x9a,0xaa,0x69,0x1c,0x43,0x24,0x8c,0x80,0x14,0x32,
+ 0x2d,0xf5,0x80,0x40,0xd4,0x6d,0xe6,0xfc,0x0e,0x00,0xf7,0xc3,0x15,0xa9,0x1c,0xcc,
+ 0xe4,0xa2,0xa9,0x11,0xe9,0x0a,0x91,0x15,0x2b,0x63,0xc9,0xfb,0xf8,0xfb,0x0c,0x06,
+ 0xb4,0x03,0x47,0xa2,0x23,0xd5,0x1c,0xc9,0x23,0xc7,0x59,0x25,0x2c,0x4f,0x23,0x28,
+ 0x69,0x24,0x98,0x2d,0xd5,0x11,0xdd,0x55,0x58,0x00,0x36,0xdc,0x80,0x0e,0xf7,0xbe,
+ 0xd8,0x8a,0x9e,0x19,0x24,0x51,0x6b,0x69,0x43,0xa5,0xca,0x82,0x77,0x27,0x65,0xd4,
+ 0x46,0xdf,0xf7,0xc3,0xf4,0xd3,0x23,0xbc,0x0b,0x34,0x06,0x69,0x14,0x94,0x0a,0xcd,
+ 0x76,0xba,0xad,0x90,0x71,0xb5,0xbd,0x87,0xdc,0x9d,0xb0,0x4d,0xbf,0xe1,0xe5,0x98,
+ 0xc4,0xc6,0x14,0x65,0x1f,0x82,0xe0,0x28,0x26,0xf6,0x17,0x3b,0x8b,0x91,0x7b,0xef,
+ 0xc6,0x2e,0xb0,0xda,0x47,0x20,0xae,0xd8,0x41,0x6c,0x2c,0xa5,0xce,0x1c,0x09,0x85,
+ 0x84,0xc7,0xd6,0x0b,0x57,0x92,0xb4,0xc8,0x5b,0x71,0x85,0x5a,0xfc,0xe1,0xdd,0x18,
+ 0xfb,0x46,0x17,0x6a,0x96,0x99,0x64,0xdb,0x09,0xd1,0x82,0x74,0x63,0xcd,0x18,0x9b,
+ 0x54,0x43,0x69,0xc7,0xdd,0xbb,0xf8,0xc1,0x3d,0xbc,0x7c,0x23,0xc4,0xda,0xa2,0x1d,
+ 0x63,0xc3,0xaa,0x98,0x74,0x47,0x85,0x88,0xf0,0x0b,0x51,0xb2,0x9a,0x0b,0x82,0x29,
+ 0x63,0x53,0x3a,0x89,0x09,0x0a,0xd7,0x17,0x1e,0x30,0xe7,0xcb,0x8b,0x2d,0x98,0x31,
+ 0x61,0x70,0x07,0x8f,0xbe,0x3c,0xd0,0x63,0x37,0x1c,0xe1,0x36,0xa6,0x0e,0xa5,0x2d,
+ 0x92,0x66,0x11,0x65,0x92,0x48,0xf3,0x29,0xd6,0x37,0x8d,0x94,0x06,0x20,0xfd,0x6f,
+ 0x8b,0xb6,0x4d,0xd5,0x90,0x54,0x38,0x49,0xee,0x5e,0x59,0x02,0x5c,0x8e,0x09,0x38,
+ 0xcd,0x43,0x17,0x16,0x63,0x73,0xe3,0x02,0xe6,0xf9,0xc1,0xe9,0xfc,0x8f,0x34,0xcd,
+ 0x18,0xdb,0xe4,0x69,0x25,0x9d,0x7f,0xfb,0x82,0xfa,0x7f,0xfd,0x8a,0xe3,0x34,0x90,
+ 0x31,0xc0,0xb9,0xca,0xe6,0x4a,0xe0,0x68,0x21,0x3a,0x47,0xa8,0x07,0x54,0xf5,0xdf,
+ 0x51,0xf5,0x0f,0xc9,0x6b,0x8a,0xb7,0x36,0xaa,0x68,0x26,0x6a,0x8d,0x0c,0xb1,0x22,
+ 0x2c,0x31,0xc6,0x10,0xf9,0xd3,0x08,0x62,0x4f,0x1c,0x62,0xe8,0xbd,0x4d,0x57,0x56,
+ 0xa9,0x2c,0x73,0xc8,0x88,0xd7,0xdb,0x71,0x6b,0x12,0x0e,0xc7,0x7e,0x41,0xc6,0x3b,
+ 0xf0,0xc7,0xfe,0x13,0xff,0x00,0x0f,0xd2,0xb0,0x2e,0x57,0x2f,0x2d,0x31,0xb8,0xbd,
+ 0xe4,0x46,0x72,0x7f,0x5b,0xff,0x00,0x5c,0x6a,0x35,0x2d,0x7a,0x99,0x48,0x24,0x82,
+ 0x43,0x6e,0x41,0xe4,0x03,0xe3,0x6f,0x38,0xe0,0xf8,0x51,0x0f,0x9d,0xed,0x3d,0x45,
+ 0xfd,0x8f,0xfb,0x5d,0x5d,0x70,0x2d,0x89,0xa4,0x74,0x35,0xf8,0xff,0x00,0x4b,0x2d,
+ 0xf8,0xd2,0x6a,0xaa,0xf3,0x8c,0xb6,0x4a,0xee,0xb9,0xff,0x00,0x0f,0xa2,0x30,0xbd,
+ 0x5d,0x0e,0x48,0xd1,0xcd,0x19,0x69,0xa1,0x00,0x97,0x57,0x8d,0x58,0x12,0x5b,0x60,
+ 0xcf,0xbc,0x7a,0xb5,0xa8,0xb2,0x13,0x8c,0x2f,0xa7,0xba,0xdf,0x33,0xe9,0x6c,0xce,
+ 0x5c,0xce,0x9b,0x3b,0xce,0xb2,0xfa,0x8c,0xc2,0x43,0x35,0x5d,0x5e,0x5d,0x50,0x7b,
+ 0xba,0x19,0x83,0x4b,0xa0,0x1b,0x34,0x85,0x99,0x50,0x1d,0x6c,0x01,0x0a,0x49,0x06,
+ 0xe2,0xdd,0x1f,0xd7,0x9f,0x0e,0x69,0xba,0xee,0x6c,0xb6,0xa2,0x3a,0x86,0xa0,0xcc,
+ 0xe9,0x64,0x58,0xfe,0x64,0x4c,0xeb,0xaa,0x94,0xeb,0x2f,0x0a,0x8d,0xd5,0x4b,0x96,
+ 0x00,0xb9,0x56,0xb0,0xf0,0x6d,0x63,0xca,0x59,0xfe,0x51,0x57,0x94,0x66,0xb5,0xf0,
+ 0xd7,0xd3,0x56,0x65,0xe2,0x1d,0x42,0x28,0x26,0x47,0xee,0x4a,0xaa,0xc4,0x20,0x0c,
+ 0x55,0x4b,0x2d,0xd7,0xf3,0x69,0x17,0xb7,0x03,0x81,0x87,0xc5,0xe1,0x92,0x09,0xbc,
+ 0xc0,0x28,0x13,0xdf,0xdd,0x29,0xa5,0x91,0xaf,0x65,0x5e,0x54,0x2d,0x74,0xef,0x1c,
+ 0x50,0x45,0x18,0x3a,0x63,0x8d,0x56,0xe6,0x3d,0x22,0x30,0x45,0xc8,0x16,0xdc,0x9b,
+ 0xef,0xb9,0xbe,0x1b,0xa6,0x9a,0x7d,0x71,0xa5,0xcc,0x7d,0xdd,0x5f,0x8d,0x24,0x67,
+ 0x53,0x58,0x01,0x6d,0xbc,0x1f,0x4f,0xeb,0x85,0xcd,0x51,0x1e,0xa9,0x5c,0xb9,0x2e,
+ 0x4e,0xa3,0x62,0x6c,0xcd,0xb5,0xc9,0x6f,0x3f,0xd3,0xce,0x03,0x9a,0xa5,0xda,0x9e,
+ 0x30,0xce,0x04,0x40,0xfa,0x09,0x6b,0x86,0x51,0xb6,0xca,0x38,0x1c,0xe3,0x82,0xde,
+ 0x2a,0x96,0xe0,0x8d,0xcb,0xf2,0x9c,0xd2,0xba,0x8e,0xbb,0x36,0xa0,0x65,0x5a,0x2c,
+ 0xad,0x83,0x55,0x4e,0x2b,0x22,0x85,0xd4,0x35,0xc0,0xf4,0x3b,0x02,0xcc,0xc0,0x90,
+ 0x00,0x06,0xfb,0xf3,0xbe,0x0d,0xab,0xa8,0xbe,0x57,0x08,0xa4,0x90,0xd4,0x53,0xc6,
+ 0x59,0x5c,0x19,0x4d,0xd9,0xb5,0x79,0x03,0x70,0x2d,0xc0,0xdb,0xc1,0xdb,0x15,0x68,
+ 0xa7,0x96,0x09,0xe3,0x92,0x94,0xe8,0x99,0x6f,0x66,0x51,0xbd,0xc8,0xb1,0x38,0x90,
+ 0xca,0x5b,0x4b,0xd4,0xb3,0xc4,0x9a,0x56,0x1d,0x0f,0xa9,0xed,0xa4,0x1d,0xbf,0x29,
+ 0xfc,0xc7,0xfd,0x30,0xd2,0x81,0xb4,0x57,0x44,0xc5,0xa8,0x83,0x9b,0x4b,0x24,0x85,
+ 0x27,0x8e,0x39,0x23,0x1b,0xe9,0x90,0xea,0xd4,0x00,0x1e,0xfc,0x9c,0x2a,0xae,0x78,
+ 0x9e,0x25,0x77,0x55,0x97,0x51,0x21,0x65,0x91,0xb4,0x30,0x1e,0x54,0x11,0xb5,0x87,
+ 0x1b,0x83,0x84,0x97,0x49,0xc1,0x48,0x61,0x80,0x12,0xda,0x40,0x68,0xc0,0xf1,0xcd,
+ 0xfe,0xc0,0xf1,0xfd,0xf0,0x2a,0xc4,0x27,0x45,0xd7,0xa7,0xb4,0x97,0x28,0x5b,0x6d,
+ 0x27,0xff,0x00,0x77,0xfb,0xdb,0x15,0xd0,0xe5,0x28,0x01,0x3c,0x73,0x27,0xa2,0xa9,
+ 0xa5,0x31,0xd3,0xa2,0xf6,0x00,0xd1,0x05,0x4c,0x41,0xd0,0x6f,0xb1,0x2a,0x4f,0xaa,
+ 0xfb,0xde,0xfb,0x7d,0x0e,0x13,0x5e,0x61,0xaf,0xce,0x2a,0x64,0xa3,0xcb,0xd2,0x9a,
+ 0x0a,0x86,0x33,0x43,0x4d,0x18,0x60,0xb1,0x83,0xe1,0x59,0xb7,0x2b,0xf5,0xe3,0xda,
+ 0xd8,0x0a,0xa4,0x12,0xd2,0x85,0x76,0x95,0x09,0xd4,0x5a,0x55,0xf5,0x1f,0xfa,0x79,
+ 0xfe,0x98,0xf6,0x73,0x51,0x52,0x1c,0xcc,0xcc,0xd2,0x1b,0x2f,0xac,0x9b,0x90,0x2c,
+ 0x00,0x1f,0xa5,0xb6,0xf6,0x18,0xbb,0x76,0x29,0x38,0xa0,0x89,0x8c,0xaa,0xc8,0xd0,
+ 0xa8,0xed,0xa6,0x8d,0x61,0x4d,0xca,0x93,0xb6,0xe4,0xf9,0x17,0xff,0x00,0x7b,0x63,
+ 0xda,0x98,0xfe,0x5e,0x46,0x57,0x93,0xf1,0x6e,0x17,0xd0,0xd6,0x08,0x9c,0x9b,0xf8,
+ 0x27,0xc0,0xfe,0xb8,0x72,0x9a,0x8e,0x78,0xe0,0x5a,0xb2,0x08,0x47,0x52,0x15,0xa4,
+ 0x65,0xf5,0x0b,0xda,0xe0,0x93,0x7b,0x5f,0x6b,0xf1,0x87,0x28,0xbb,0x12,0x39,0x39,
+ 0xcd,0x4b,0x53,0x50,0x45,0x04,0x83,0xb7,0x18,0x5e,0xf3,0xbd,0xad,0xdb,0x17,0x16,
+ 0x17,0x62,0xb7,0x3e,0x17,0x7f,0xa6,0x29,0x3c,0xa8,0x06,0x50,0x34,0x52,0xc3,0x15,
+ 0x5b,0x1b,0x97,0x8c,0x3d,0xc2,0xb2,0x06,0x06,0xcc,0x2d,0x7b,0xdc,0x7d,0xff,0x00,
+ 0xe9,0xbe,0x0e,0xcd,0xa4,0x6a,0x7a,0xbe,0xc5,0x5c,0xa2,0x49,0xa0,0x91,0x92,0x64,
+ 0x48,0xd1,0xbb,0x64,0x82,0xa5,0x41,0xbe,0x92,0x41,0x1f,0xa5,0xee,0x08,0xc3,0x14,
+ 0x79,0x54,0xb1,0x24,0x95,0x35,0x34,0xce,0x61,0x48,0x75,0x3d,0xa4,0xd2,0x35,0x11,
+ 0x75,0x0d,0xb1,0xd8,0xda,0xe4,0x6d,0xb7,0x91,0x89,0x6c,0xd7,0x21,0xf9,0x1e,0x91,
+ 0xca,0xb3,0x39,0x32,0xf4,0x81,0x6b,0x2a,0xe7,0x64,0xad,0x59,0xc3,0x89,0xd1,0x74,
+ 0xaf,0x6c,0x05,0xba,0xc7,0x62,0xac,0x74,0xb7,0xa9,0xb5,0x5f,0xf2,0x81,0x7b,0x36,
+ 0xd9,0xf9,0x29,0x80,0x57,0x6f,0x76,0xb1,0xf7,0x6f,0x7c,0x13,0xdb,0xc7,0xda,0x31,
+ 0xf5,0xca,0x5e,0x2c,0x26,0x3b,0x67,0x1f,0x18,0x8e,0x09,0xd3,0xf4,0xc7,0xba,0x7e,
+ 0x98,0x94,0xa2,0x13,0xb5,0x8f,0x44,0x67,0xdb,0x04,0x85,0xc2,0xc4,0x63,0x02,0x94,
+ 0x42,0x68,0x38,0xf4,0x26,0x0b,0xed,0xe3,0xee,0xd8,0xc0,0xa5,0x2d,0x0c,0x13,0x0b,
+ 0x11,0xe1,0xfe,0xd8,0xc7,0xda,0x2d,0x81,0x49,0xad,0x36,0x17,0x4f,0x1c,0xe1,0x2f,
+ 0x77,0x20,0x9d,0xf6,0xb6,0x1e,0x03,0x1e,0x14,0xc0,0xa4,0x77,0x26,0x42,0xe2,0x83,
+ 0xf1,0x9e,0xb8,0xd2,0xf4,0x47,0xc8,0xc7,0x6e,0xf6,0x6d,0x5b,0x15,0x3a,0x8b,0xf2,
+ 0xab,0xf8,0x8d,0xfd,0x42,0x0f,0xd7,0x1a,0x28,0x4c,0x63,0xbf,0x15,0xab,0x17,0x30,
+ 0xeb,0xee,0x97,0xc9,0x47,0xae,0x3a,0x34,0x49,0xe5,0x5f,0x05,0xa5,0x90,0x35,0x8f,
+ 0xff,0x00,0xd2,0x25,0xff,0x00,0xf2,0xc6,0x0f,0x10,0x7f,0x95,0xa6,0x71,0xef,0x8f,
+ 0xbf,0xfa,0x5a,0xf4,0x8d,0xdf,0x3b,0x47,0x6c,0xab,0x1f,0x4b,0x11,0x1f,0x54,0x51,
+ 0xa2,0x46,0x58,0xa1,0x10,0x8d,0x3b,0x5a,0xc8,0x57,0x63,0x6f,0xa5,0xb1,0xa1,0xcf,
+ 0xc5,0x39,0x2d,0xa9,0x9a,0x04,0xd5,0x7e,0x41,0x17,0x5d,0xff,0x00,0x45,0x1f,0xbe,
+ 0x33,0x9e,0x93,0x3a,0xfa,0x9e,0x86,0x74,0x05,0x48,0xa9,0x2c,0x7b,0x6a,0x1b,0x51,
+ 0xb1,0xdb,0x8d,0xf7,0x1f,0x7e,0x79,0xc6,0x9b,0x34,0x21,0x61,0xa4,0x1a,0x58,0x36,
+ 0x87,0x04,0x9e,0x0f,0xa8,0x11,0xf6,0xe4,0xed,0xf5,0xc7,0x96,0xf0,0xb7,0xed,0xd7,
+ 0x34,0x77,0x04,0x7e,0x2f,0xfc,0x2e,0xde,0xb9,0xb7,0xa6,0x71,0xec,0x41,0xff,0x00,
+ 0x09,0x84,0x47,0x20,0xb2,0x42,0xf3,0x69,0xdf,0x4a,0x1b,0x13,0xf4,0x04,0xed,0x7f,
+ 0x6c,0x71,0x6f,0xc5,0x3e,0xb5,0xae,0xeb,0xee,0xa1,0x5a,0xac,0xc2,0x9e,0x2a,0x41,
+ 0x0c,0x09,0x4f,0x4a,0x02,0x32,0x84,0x88,0x39,0x37,0x25,0xac,0xcd,0x76,0x27,0x9f,
+ 0xd0,0x01,0x8e,0xa3,0xeb,0x9c,0x8b,0xa9,0x6b,0x2a,0x72,0xdc,0xd7,0xa2,0x6b,0xe0,
+ 0xa4,0xad,0xcb,0x60,0xa8,0x1d,0xb9,0x89,0x3d,0xd3,0x26,0x95,0x05,0x54,0x90,0x9a,
+ 0x91,0x4b,0xb8,0x66,0xe0,0x8d,0x81,0x27,0x1c,0x9d,0xd5,0x14,0xb9,0x4c,0x82,0x99,
+ 0x68,0xdd,0xe2,0xcd,0xa0,0x6d,0x15,0xd1,0x49,0xad,0xe2,0x79,0x8d,0xd8,0xb4,0x6d,
+ 0x21,0x2c,0x00,0x1a,0x41,0x0c,0x49,0xbf,0x85,0xe4,0xee,0xf1,0xd9,0x1e,0x40,0x8f,
+ 0x80,0x3f,0x3c,0x71,0xf2,0xce,0x17,0x3f,0x40,0xd6,0xe5,0xdc,0x9f,0xd9,0x55,0x63,
+ 0x13,0xc7,0x31,0x99,0x82,0x3c,0x71,0x92,0x47,0x71,0xac,0x0b,0x00,0x00,0xd2,0x07,
+ 0x1b,0xf1,0xf6,0xc3,0x55,0x75,0x52,0x4c,0x6f,0xe2,0x35,0xd3,0xc0,0x3f,0xf6,0x3e,
+ 0x6e,0x7c,0xdf,0x0b,0xae,0x73,0x3c,0xad,0x1b,0x6a,0x76,0x8c,0x69,0x17,0x16,0x16,
+ 0x03,0x91,0xfb,0x63,0xc8,0xe9,0x69,0xa4,0xa2,0x95,0x9a,0xb9,0xe3,0xab,0x59,0x11,
+ 0x22,0x81,0xa3,0xf4,0x4a,0x8d,0xab,0x5b,0x19,0x2f,0xe9,0xb1,0x0b,0xb1,0x06,0xf7,
+ 0x26,0xe2,0xdb,0xf9,0x30,0x2f,0x2b,0xb2,0x3b,0x94,0xba,0x4d,0x71,0xc2,0xb1,0x88,
+ 0x15,0xe6,0x77,0x06,0x11,0x12,0x5d,0xd8,0xb0,0xb1,0x1b,0x72,0x36,0xd8,0x0d,0xef,
+ 0x7c,0x4e,0x27,0x46,0xe7,0x07,0xa3,0x2b,0x3a,0x95,0xea,0x56,0x1c,0x9a,0x0a,0xaa,
+ 0x78,0xcb,0xa0,0x2f,0xad,0xa4,0x52,0x48,0xd4,0x36,0x0e,0x80,0xa5,0xd1,0x88,0x27,
+ 0x58,0x23,0x83,0x8a,0xed,0x4c,0x3d,0x8a,0xc7,0x84,0x4d,0x03,0x98,0xae,0xaf,0x34,
+ 0x4f,0xad,0x01,0x1e,0x15,0x85,0xee,0x2e,0x0d,0x88,0x3b,0xdc,0x11,0xce,0x2e,0x99,
+ 0x7e,0x6d,0x57,0x45,0xd3,0xf4,0x5f,0xf9,0x9d,0x36,0x61,0x94,0x4f,0x17,0xca,0x55,
+ 0xc1,0x51,0xeb,0x7a,0x21,0xea,0x36,0x58,0x18,0x9d,0xc2,0xc9,0xe9,0xa8,0x09,0x70,
+ 0x5c,0x88,0xcd,0xd0,0x9c,0x68,0x89,0x8d,0x25,0xdb,0xc2,0x8e,0xbe,0x42,0x84,0xaa,
+ 0x8a,0x9a,0x04,0x1a,0x6a,0xd1,0xa1,0x64,0xee,0x47,0x24,0x8e,0x19,0xdd,0x2c,0x74,
+ 0x8f,0x45,0xc0,0x90,0x9d,0x8a,0x7f,0x29,0x06,0xed,0x7d,0xf1,0x0f,0xf8,0x91,0x86,
+ 0x8f,0x41,0x50,0xc7,0x6d,0x62,0xf6,0x00,0xdf,0x6f,0x6b,0xff,0x00,0xdb,0x13,0x99,
+ 0xad,0x7e,0x58,0xd5,0xeb,0x0e,0x4d,0x4d,0xdb,0xa5,0x44,0x58,0xee,0xf1,0xaa,0x2a,
+ 0xc9,0xa5,0x44,0x81,0x08,0x79,0x35,0x8d,0x44,0xd8,0x86,0xf5,0x02,0x09,0xb6,0x22,
+ 0xa2,0x8c,0xba,0xf6,0xfb,0xb1,0x9d,0x6c,0x74,0x48,0x1f,0x4e,0xb3,0xa7,0x71,0xf5,
+ 0x03,0xc9,0xc6,0x47,0x7c,0x0e,0x21,0x11,0xc2,0x00,0x03,0x30,0xd0,0xd2,0x73,0x72,
+ 0x37,0x23,0xea,0x4d,0xf8,0xc4,0x86,0x53,0x92,0x54,0x67,0x95,0xb4,0xb4,0x99,0x7d,
+ 0x44,0x66,0xa2,0xa2,0xa1,0x22,0x8f,0xe6,0x25,0x54,0x40,0xce,0x48,0x0c,0xcc,0x6c,
+ 0x00,0xb8,0xe7,0xed,0xef,0x85,0x44,0xa6,0x49,0x5c,0xb4,0x41,0xa0,0x03,0x44,0x8c,
+ 0xa0,0xdd,0x0b,0x02,0xba,0xbc,0x6e,0x2f,0x7b,0x79,0x20,0x0b,0xe2,0xd5,0xd3,0xd4,
+ 0xd0,0x53,0x56,0x49,0xd4,0xed,0x43,0x51,0x53,0xd2,0xf9,0x7d,0x74,0x7a,0x52,0xbc,
+ 0xe8,0x7a,0x88,0xd1,0x89,0x4a,0x76,0x75,0x42,0x0b,0xb2,0x8b,0x90,0xa3,0x4f,0xa7,
+ 0x72,0x2e,0x30,0xcd,0x69,0x7f,0x05,0x42,0x68,0x5a,0x98,0xcd,0xa2,0xac,0xe9,0x64,
+ 0x8b,0x2a,0xce,0x72,0xfa,0x19,0x25,0x9a,0xa9,0xa9,0xea,0x69,0x25,0x96,0x58,0x12,
+ 0xa6,0x24,0x91,0xd4,0x2c,0x82,0x21,0xa6,0xcb,0x34,0x41,0x81,0x12,0x96,0x23,0x48,
+ 0x51,0x66,0x6b,0xd4,0xb3,0x6c,0xa6,0x78,0x62,0xcc,0xab,0x04,0xd4,0x30,0xd1,0x89,
+ 0x9f,0xb6,0x24,0x66,0x32,0xd4,0x15,0x3d,0xbb,0xc6,0x24,0x44,0x76,0x17,0x66,0x04,
+ 0xdb,0x90,0x6e,0x01,0x18,0x77,0xaa,0xba,0x99,0x3a,0xa3,0xa8,0xa5,0xcc,0x3e,0x56,
+ 0x8f,0x24,0xa3,0x92,0x55,0x58,0x20,0xa4,0x8d,0x92,0x0a,0x24,0x5b,0x5b,0xb4,0xaa,
+ 0x01,0xf1,0xc9,0x1a,0x8d,0xc9,0x37,0x24,0x9c,0x2f,0x32,0xca,0xe4,0xc8,0xba,0x4e,
+ 0x80,0xbd,0x4d,0x14,0xb3,0x67,0x32,0xad,0x42,0xc0,0x64,0x2f,0x51,0xd9,0x54,0x2c,
+ 0x09,0x42,0xb7,0x8d,0x75,0xb3,0x02,0x49,0x05,0xc8,0xba,0x86,0x4d,0xf1,0x69,0x0c,
+ 0x37,0xb4,0x60,0x71,0xdf,0xeb,0xf3,0x41,0xa4,0xd6,0x7a,0xa0,0x29,0x23,0xcd,0x73,
+ 0xfc,0xd2,0x25,0xa9,0x92,0x49,0xe5,0xae,0x24,0xcc,0x62,0x89,0x7b,0xaf,0x18,0x61,
+ 0xa8,0xec,0x18,0x8d,0xc5,0xf8,0x03,0xc9,0xdb,0x7c,0x47,0x55,0xe5,0xad,0x91,0x67,
+ 0x35,0xb4,0x79,0x8c,0x31,0xc9,0x3d,0x34,0xce,0x8c,0x24,0x2c,0x51,0xad,0x7b,0x36,
+ 0xd6,0x6b,0x1d,0x88,0x3b,0x5c,0x11,0xe0,0xe2,0x4b,0x20,0xea,0x9c,0xdb,0xa3,0xab,
+ 0xea,0x6a,0xb2,0x3a,0xb6,0x41,0x59,0x4a,0x68,0xea,0x2e,0x10,0x34,0x91,0x38,0x02,
+ 0x45,0x0c,0x41,0x31,0xdf,0x70,0x19,0x48,0x60,0x0d,0xae,0x2e,0x6f,0x75,0xf8,0xa7,
+ 0xd3,0x59,0x7e,0x53,0x47,0x47,0x51,0x91,0x57,0x52,0x55,0x09,0x16,0x2a,0xda,0x88,
+ 0xe2,0x8a,0x99,0xbb,0x71,0xce,0xa0,0xa0,0x6a,0x84,0x92,0xf2,0x3f,0x70,0xc8,0xbd,
+ 0xa0,0xa7,0x40,0x8e,0xe5,0x8a,0xd8,0x90,0x00,0x2c,0x2e,0x1c,0xde,0x7d,0xfb,0xec,
+ 0x8e,0xe2,0x0d,0x2e,0xbf,0x60,0x8b,0xf9,0x9d,0x07,0xa8,0x2e,0xed,0x6f,0x57,0xb7,
+ 0xdf,0xe9,0x8f,0xb4,0xaf,0x3a,0x97,0x6e,0x77,0xfe,0xd8,0xa7,0x43,0x5d,0x22,0x26,
+ 0xb3,0x32,0x98,0x94,0x69,0x11,0x0d,0xf4,0xa9,0x04,0xab,0x00,0x6e,0x4d,0x82,0xdf,
+ 0x6f,0x6e,0x45,0x8e,0x1c,0x9b,0x39,0x75,0xa3,0x7e,0xf4,0x8b,0x1f,0x65,0x9c,0xa3,
+ 0x46,0x01,0xbc,0x80,0x6f,0xeb,0xf3,0xc8,0x3f,0xbf,0xd2,0xfd,0x46,0xff,0x00,0xcb,
+ 0x5c,0xe0,0x49,0x8c,0x0f,0x4e,0x73,0xf3,0xb1,0xfb,0x7d,0x17,0x28,0xf8,0x53,0x47,
+ 0xf7,0x7b,0xfb,0x2b,0x60,0x0a,0xd6,0x21,0x87,0x17,0xb1,0x36,0x36,0xc2,0xbb,0x78,
+ 0x85,0xa5,0xcd,0x23,0x34,0x09,0x22,0x54,0x68,0x33,0xaa,0xb2,0x48,0x6c,0x44,0x84,
+ 0x91,0xc6,0xdc,0x6f,0x6b,0x11,0xcf,0xf5,0x94,0xa7,0xad,0x95,0x85,0xe7,0x8f,0xd2,
+ 0xa4,0xab,0x37,0x04,0x69,0x04,0x93,0x61,0xb0,0x1c,0x5b,0x1d,0xcd,0x37,0xfc,0x82,
+ 0x29,0x1a,0xc3,0x20,0xe7,0x92,0x3a,0x1f,0x51,0xcf,0xae,0x2f,0xd2,0xd6,0x39,0x7c,
+ 0x3d,0xcd,0x27,0x69,0xe3,0xdf,0x29,0xfd,0x1b,0x63,0xdd,0x18,0x7c,0x28,0x3f,0x94,
+ 0xab,0x73,0xc1,0xbf,0x18,0xfb,0x46,0x3d,0x43,0x5c,0x1e,0x37,0x34,0xd8,0x5c,0xb2,
+ 0x0b,0x4d,0x14,0xc8,0x5c,0x7b,0xa7,0x0e,0x69,0xc7,0xda,0x70,0x69,0x4b,0x4d,0xdb,
+ 0x1f,0x05,0xbe,0x1c,0xd1,0x8f,0x42,0x60,0x52,0x96,0x9b,0xd1,0x8f,0x7b,0x78,0x78,
+ 0x26,0x15,0xa7,0x6e,0x30,0x29,0x1b,0x4c,0xa4,0x26,0x47,0x54,0x51,0xea,0x62,0x00,
+ 0xfd,0x71,0xcd,0xf3,0x66,0x69,0x9f,0x7c,0x53,0xce,0xf3,0x60,0xea,0x60,0x8e,0x7a,
+ 0x8e,0xc9,0x61,0x7b,0x47,0x0a,0x76,0x90,0xfd,0xb6,0xbf,0xeb,0x8e,0x82,0xea,0x7c,
+ 0xea,0x3e,0x99,0xe9,0xbc,0xdb,0x38,0x95,0xc2,0x1a,0x4a,0x57,0x30,0xdc,0xdb,0x54,
+ 0xcc,0x34,0xc4,0xa3,0xea,0x5c,0xa8,0x03,0x1c,0xbd,0x92,0xe5,0xf2,0x64,0x99,0x65,
+ 0x44,0x55,0x9d,0xb9,0x2a,0xf3,0x0a,0x55,0x87,0xb6,0x37,0x31,0xa1,0x20,0x9b,0xfd,
+ 0x58,0xfe,0xd8,0xf3,0x7e,0x35,0x26,0x1b,0x17,0xd7,0xfc,0x7f,0x2b,0xb3,0xe1,0xac,
+ 0xcb,0x9f,0xf4,0xf7,0xf8,0x5b,0x1e,0x41,0x0c,0xd4,0x99,0xbe,0x5c,0xd5,0x33,0x01,
+ 0x15,0x64,0xf1,0xbc,0x67,0xb9,0x70,0x6c,0x6f,0xaa,0xe2,0xe7,0x6b,0xdb,0xed,0xb5,
+ 0xb6,0xc6,0x89,0x4d,0xad,0xe1,0xa7,0x2b,0xa4,0xc2,0xae,0xc0,0x1d,0x5f,0xe6,0x06,
+ 0xc6,0xc3,0x8b,0x91,0xfd,0x0f,0xb6,0x32,0x3a,0x2c,0xde,0xba,0x89,0x68,0xd6,0x5a,
+ 0xa9,0x33,0x3a,0xd8,0x66,0xee,0x04,0xa9,0x95,0x12,0xdb,0x83,0xda,0x53,0x1a,0x0d,
+ 0x80,0x50,0x37,0x04,0xdc,0x93,0xbf,0x18,0xd2,0xb2,0x3c,0xd3,0x2c,0xcd,0xb2,0x49,
+ 0x33,0xac,0x9e,0x72,0xd0,0xc6,0xad,0x2c,0xb0,0x4b,0x11,0xef,0xc6,0xc9,0xbb,0x44,
+ 0x55,0x41,0xbc,0x80,0x03,0x60,0x3f,0x36,0xc4,0x73,0x8f,0x33,0x04,0x9e,0x4e,0xa2,
+ 0x39,0x0f,0x00,0x8b,0xf9,0x5e,0x7f,0x0b,0xb7,0x2b,0x3c,0xc8,0x5e,0xc1,0xd4,0x14,
+ 0x9e,0xa9,0x19,0xc5,0x25,0x34,0x39,0xc7,0x4f,0xe6,0xcb,0x40,0xf9,0x4a,0xcb,0x3d,
+ 0x45,0x25,0x44,0x1d,0xda,0x7a,0xc8,0xf4,0x6e,0x1c,0x0f,0x56,0xa5,0xdd,0x96,0xc7,
+ 0x9d,0xac,0x71,0xc7,0x1d,0x67,0x43,0x4b,0x47,0x9f,0x37,0x62,0xa6,0x2a,0xfa,0x2a,
+ 0xc2,0xf5,0x11,0x32,0xdb,0xbc,0xea,0xfb,0xe8,0x94,0x7e,0x6e,0xe8,0x27,0xd4,0x08,
+ 0x04,0x1b,0x80,0x48,0x18,0xee,0xe3,0x16,0x96,0x23,0x63,0x63,0x8a,0xa7,0x51,0x7c,
+ 0x38,0xca,0x73,0xc4,0xea,0x4a,0xaa,0x4a,0x7a,0x4a,0x3c,0xff,0x00,0x3d,0xa5,0x10,
+ 0x4b,0x99,0x4f,0x4a,0xb5,0x26,0x32,0x36,0xd6,0x8a,0xdf,0x91,0x8a,0xfa,0x49,0x52,
+ 0x2f,0xb1,0x37,0x20,0x63,0xd7,0x78,0xa7,0x86,0xbb,0x58,0x2d,0x87,0x23,0xf8,0xe9,
+ 0xd3,0xb7,0x6e,0xf6,0xbc,0xce,0x97,0x54,0xd8,0x70,0xe0,0xb8,0x56,0xa9,0x5f,0x44,
+ 0x92,0xd6,0xb8,0x62,0x01,0x05,0x98,0xdc,0x36,0xd6,0x00,0x0f,0xd0,0x62,0x32,0x33,
+ 0xa2,0xd7,0x88,0xbf,0x21,0x83,0x86,0xd2,0x4d,0xf6,0x20,0x03,0xcf,0xef,0xf6,0xc6,
+ 0xa1,0xf1,0x43,0xe1,0x75,0x47,0xc3,0xda,0xea,0x2a,0x69,0xa7,0x7a,0xd3,0x3a,0xb2,
+ 0xc5,0x5b,0xa5,0x60,0x8e,0x76,0xda,0xca,0xaa,0xcc,0x48,0x1b,0x91,0x76,0xb0,0x3a,
+ 0x4d,0xaf,0x66,0xb5,0x1b,0x25,0x6c,0xae,0x5c,0xe6,0x9a,0x2e,0xab,0xa8,0xad,0xa7,
+ 0xcb,0x8b,0x98,0xe6,0x7a,0x05,0x59,0x25,0x8a,0xed,0x62,0xc1,0x5b,0x63,0x6d,0xc9,
+ 0x1c,0x9b,0x5b,0x6b,0xdc,0x78,0x67,0x42,0xf8,0x5e,0x63,0x90,0x51,0x5e,0x8a,0x37,
+ 0x87,0x37,0x73,0x72,0x11,0x14,0xa0,0x56,0x56,0xcd,0x15,0x12,0xc9,0x95,0xb4,0x90,
+ 0x2c,0x64,0xc6,0xed,0xb3,0x69,0x0a,0xcc,0xe7,0x9b,0x30,0x0e,0x58,0x02,0xaa,0x35,
+ 0x9f,0xe5,0x5b,0x60,0x9a,0x3e,0x91,0xea,0x5c,0xcd,0x69,0xf2,0xfc,0x9e,0x0a,0xac,
+ 0xc2,0x92,0x6a,0x81,0x47,0xdd,0xa4,0x46,0x92,0x00,0xd6,0x59,0x0a,0x92,0x05,0xec,
+ 0x35,0x6a,0x24,0xd8,0x7a,0x49,0xb9,0xb5,0xf1,0x2f,0xd7,0xc3,0x2e,0x83,0xaa,0x16,
+ 0x93,0xa7,0x72,0xea,0x4a,0x5c,0xac,0xc3,0x1b,0x41,0x48,0xbd,0xc8,0x9a,0x4d,0x2b,
+ 0x6e,0xe3,0xa3,0x92,0x61,0x9a,0x45,0x01,0x98,0x6a,0xb0,0xb8,0x22,0xf7,0x18,0xbc,
+ 0xf4,0x8b,0x66,0xd5,0x79,0xbe,0x51,0x9b,0xf4,0x55,0x55,0x76,0x57,0xd2,0x0f,0x99,
+ 0xc4,0x4d,0x2d,0x16,0x71,0x19,0x7a,0x4a,0x91,0x10,0x94,0xc7,0x31,0x91,0x17,0xba,
+ 0x00,0xa7,0x8e,0x46,0x25,0x19,0x40,0x21,0x2e,0x48,0x38,0xd5,0x1c,0x21,0xcf,0x2d,
+ 0x76,0x73,0xd3,0xdf,0x09,0x5c,0xf2,0xd6,0xd8,0xfc,0xaa,0x7e,0x51,0xd0,0x47,0xa8,
+ 0x7a,0x85,0xba,0x59,0x2a,0xa3,0xca,0x6a,0xa8,0xc5,0x45,0x4b,0xd5,0x66,0x37,0x86,
+ 0x37,0x58,0xe2,0x2d,0xb4,0x41,0x49,0x55,0x3a,0x79,0x66,0xb9,0xd5,0xc0,0x26,0xc6,
+ 0xbd,0xd4,0x94,0xd9,0x74,0x74,0x99,0x72,0x64,0xb9,0xab,0x67,0x6e,0xf1,0x39,0x7a,
+ 0x85,0xa1,0x7a,0x70,0x02,0x80,0x02,0xa8,0x3f,0x9a,0xd6,0x3a,0x9a,0xc0,0x9b,0x0b,
+ 0x83,0xc9,0xd1,0xba,0xd7,0xe2,0x19,0xea,0x7c,0xab,0x33,0x81,0x60,0xa8,0xff,0x00,
+ 0xf9,0x04,0x89,0x99,0xe6,0x31,0x32,0x41,0x51,0x2a,0x11,0x00,0x30,0x40,0x34,0x20,
+ 0xb4,0x40,0x2a,0x36,0xa5,0x21,0xb6,0x72,0xc0,0x1d,0xb1,0x56,0x3d,0x53,0x5f,0xd7,
+ 0x39,0xae,0x55,0x43,0x9d,0xd5,0x53,0x0c,0xb2,0x8d,0x56,0x86,0x98,0x53,0xa4,0x94,
+ 0xc9,0x43,0x4e,0xe5,0x17,0x5a,0x98,0xd0,0xd8,0x5c,0xdc,0x97,0x0d,0x7d,0x46,0xf7,
+ 0x3a,0x6c,0x25,0x64,0x39,0x63,0x32,0x6f,0x9f,0x67,0x14,0x3f,0x8f,0x54,0x1a,0x5e,
+ 0x72,0xec,0x7a,0x2a,0x65,0x54,0x62,0x16,0xa6,0x86,0x72,0xf0,0xdd,0x01,0x69,0xe4,
+ 0xd6,0xb7,0x24,0x9b,0x3d,0x80,0xbe,0x9d,0x2c,0xbc,0x5f,0x82,0x77,0xbe,0x2e,0x1d,
+ 0x43,0x9c,0x66,0x34,0xcb,0x1d,0x08,0xea,0x0a,0x73,0x94,0xc1,0x40,0x68,0x12,0x4c,
+ 0xa6,0x42,0x60,0xa9,0x85,0x64,0xb8,0x89,0xb6,0x05,0x75,0x2a,0x87,0x3a,0xb5,0x10,
+ 0x0a,0x86,0xdf,0xd2,0x27,0x7e,0x31,0x43,0x90,0x36,0x64,0x99,0x57,0x42,0x65,0xc9,
+ 0x96,0x50,0xe5,0xcd,0x51,0x18,0xa7,0x8c,0x2b,0x2c,0xae,0x92,0x39,0x9e,0x56,0x76,
+ 0x3a,0xd8,0xad,0x92,0x21,0x7e,0x44,0x6d,0xa4,0x5b,0x76,0x7f,0xe1,0x1e,0x61,0x97,
+ 0x53,0x75,0x65,0x16,0x5b,0x53,0xd3,0xf9,0xad,0x6d,0x26,0x65,0x2b,0x52,0xcb,0x4b,
+ 0x4d,0x54,0xd1,0x5e,0x4b,0xc6,0x10,0xdc,0x5b,0x59,0x47,0x25,0xda,0xc0,0x14,0xb8,
+ 0x23,0xf2,0xe2,0x9f,0x23,0x64,0xde,0x4d,0xf5,0xe7,0xa7,0xbc,0xa3,0xbf,0xe0,0xdf,
+ 0x5f,0x45,0x55,0xa1,0xc8,0x68,0x73,0x2c,0xf3,0x46,0x57,0x98,0x7c,0xb5,0x6b,0x4e,
+ 0xb3,0xd2,0xa0,0x54,0xab,0x81,0x23,0xd4,0x35,0x09,0x25,0x60,0xa1,0x84,0x71,0x87,
+ 0x63,0x25,0x8a,0x92,0x85,0x74,0x8b,0x92,0x20,0x33,0x89,0x68,0x9e,0xbe,0x17,0xc8,
+ 0xd2,0xa6,0x38,0xd2,0xda,0xa1,0x90,0xac,0x84,0xc8,0xac,0x47,0xa4,0x82,0x75,0x29,
+ 0x50,0xb6,0x04,0x93,0xc8,0xdc,0x01,0x8e,0x87,0xeb,0x8f,0x86,0xb9,0xf6,0x4b,0x3e,
+ 0x70,0x99,0x4d,0x1d,0x07,0x50,0xe7,0x75,0x14,0xd5,0xf5,0xbd,0x43,0x4b,0x46,0x85,
+ 0x68,0xe8,0x19,0xe1,0x7e,0xdb,0x98,0xc0,0x29,0x0b,0x85,0x92,0x46,0x45,0x27,0x51,
+ 0x5d,0x4c,0xe0,0x06,0x5b,0xe4,0x59,0x5f,0x40,0xd5,0x67,0xf9,0xb5,0x75,0x1e,0x48,
+ 0x2a,0xea,0xba,0xad,0x2b,0x97,0xe5,0xf2,0x6a,0x7a,0x46,0xec,0xc3,0x1f,0x78,0x2b,
+ 0x34,0xf2,0x33,0x2e,0x88,0xc0,0x70,0x3d,0x20,0xd8,0x30,0xd5,0xa4,0x5e,0xd7,0x3f,
+ 0x4a,0xf6,0x1d,0x95,0xc9,0xf7,0x4a,0x36,0x56,0xb8,0x6e,0xbc,0x29,0xaf,0x86,0x59,
+ 0x6f,0x49,0x55,0xdb,0x3b,0xcf,0x7a,0x83,0x21,0xe9,0xfc,0x83,0x2a,0x99,0x7b,0xf4,
+ 0xd9,0xac,0x6d,0x5b,0x59,0x39,0x2a,0xe5,0x62,0x4a,0x54,0x16,0xa8,0x41,0x21,0x0d,
+ 0xa9,0xc2,0xef,0xe9,0x6b,0xa8,0xb6,0x23,0xb3,0xea,0x0a,0x57,0x34,0xbd,0x3b,0xd2,
+ 0x99,0xff,0x00,0x4f,0x75,0x65,0x0e,0x63,0x3a,0xe6,0x02,0xae,0x9b,0x2b,0x92,0x96,
+ 0x68,0x6a,0xe5,0xfc,0x03,0x08,0xd7,0x1e,0xb0,0x03,0x59,0xc4,0x48,0x0d,0xd2,0x30,
+ 0xd6,0x1c,0x62,0xd9,0xf1,0x50,0xf5,0x14,0x3d,0x51,0x2d,0x07,0x5c,0xcd,0xd2,0x9f,
+ 0xe1,0x63,0x30,0xa7,0xae,0xcd,0x21,0xe9,0xda,0x7f,0x9a,0x83,0x2f,0x9b,0xb3,0xd8,
+ 0x8f,0xbd,0x35,0x8c,0xab,0x60,0xa4,0x76,0x4b,0xd8,0xf6,0xcd,0x85,0xca,0x16,0xc8,
+ 0xf2,0x6c,0x9e,0xb3,0x39,0x58,0xd3,0xa7,0xfb,0xf3,0x57,0xc3,0xdb,0x99,0x9d,0x51,
+ 0xc3,0xc2,0xfa,0xbb,0x6a,0x3b,0x83,0x61,0xae,0x49,0x10,0x29,0x60,0x05,0xca,0xad,
+ 0xc1,0xe6,0x38,0x06,0x1d,0x80,0x7f,0x25,0x16,0xfc,0x5f,0x19,0x3c,0xfd,0x97,0x42,
+ 0x65,0xb9,0x93,0x49,0x9e,0xd3,0x53,0xe6,0x66,0x65,0xa4,0x59,0x5a,0x18,0x94,0xc6,
+ 0x59,0x5e,0xda,0xb5,0x07,0x3b,0x34,0x71,0x82,0xa7,0x7d,0xfd,0x5b,0x58,0x03,0xab,
+ 0x13,0x35,0x30,0x54,0xc7,0x93,0xd3,0xc7,0x47,0x13,0xd6,0x52,0x4b,0x4e,0x3b,0x73,
+ 0x34,0xc2,0x46,0x54,0x01,0x8f,0xa6,0x35,0x2a,0xec,0x34,0x9d,0xc8,0xdc,0x8f,0xbd,
+ 0xf1,0x49,0xeb,0x0a,0x79,0x68,0xea,0x28,0xa7,0x55,0xa4,0xa2,0xa8,0x65,0x64,0xac,
+ 0xac,0x92,0xb7,0xbe,0xee,0x0b,0x10,0x15,0x52,0x37,0xee,0x49,0xa5,0x6d,0x70,0x55,
+ 0x4f,0xe5,0xe7,0xc8,0xe3,0x3a,0x5a,0x2c,0xfe,0x09,0x28,0x63,0x8a,0x7c,0xc1,0x35,
+ 0xc4,0x22,0x88,0xe8,0x26,0x22,0xba,0xac,0xce,0x14,0x38,0x7f,0x4e,0xa3,0x6d,0xef,
+ 0xcf,0x24,0x63,0xca,0x16,0x97,0x9d,0xcd,0x5a,0x2e,0xb9,0x5a,0xae,0x5d,0x99,0xc8,
+ 0xf9,0xa5,0x3e,0x5a,0x63,0x32,0x3d,0x2d,0x38,0xa7,0x67,0x91,0xbb,0x65,0x27,0x21,
+ 0xc9,0x65,0x53,0xe9,0xd1,0xa5,0x35,0x05,0xe0,0x06,0x17,0x22,0xc4,0xe2,0x58,0x67,
+ 0x54,0xff,0x00,0xe2,0x8d,0x92,0xc2,0xb3,0x1e,0xd4,0x01,0x9e,0x49,0x63,0xd7,0xde,
+ 0x46,0x02,0xe3,0x52,0x82,0x48,0x0c,0x09,0xb8,0xb2,0x9b,0x11,0xee,0x71,0x9d,0x47,
+ 0x9f,0xc3,0x4f,0x55,0x44,0x52,0x82,0x79,0x73,0x29,0x24,0x8e,0x10,0x8d,0x48,0xcd,
+ 0x2c,0x68,0xcf,0xaa,0x56,0x8e,0x26,0x21,0xc2,0xdc,0x15,0xd4,0xc3,0x4b,0x59,0x85,
+ 0xec,0x06,0x35,0xec,0x8f,0x20,0x87,0x25,0xa4,0x9e,0x64,0x92,0x64,0xa9,0x99,0x3f,
+ 0x16,0x59,0x6a,0x02,0x33,0x36,0xa6,0x25,0x6f,0xab,0xd4,0x54,0xd8,0x59,0xad,0x60,
+ 0x83,0xdb,0x7e,0x9e,0x80,0x3e,0x46,0x08,0xae,0x80,0x36,0x4e,0x05,0x00,0x3a,0x72,
+ 0x72,0x40,0x07,0xa0,0xc2,0xcb,0x33,0x83,0x0e,0xee,0x7a,0x57,0xbe,0xca,0x52,0x8e,
+ 0x58,0xe5,0xd1,0x23,0x98,0xe1,0x1a,0x03,0x04,0x0f,0xb8,0xb9,0x37,0xbf,0xd8,0x9b,
+ 0x7b,0x1c,0x48,0x68,0xbf,0x1b,0xe0,0x16,0xf9,0x97,0x82,0x9e,0x3a,0xe9,0xde,0x08,
+ 0xd6,0xcd,0x23,0xb4,0xd1,0xbb,0xc8,0xdc,0x85,0x24,0x0d,0x2d,0x7b,0x92,0x2d,0xed,
+ 0x73,0xe3,0x05,0x06,0xb2,0xc6,0xdd,0xd8,0xe0,0x85,0x41,0x5f,0x5b,0x85,0xd8,0x1f,
+ 0x00,0xfe,0x9b,0xf1,0x8f,0xa1,0xf8,0x5e,0xad,0xe0,0x08,0xe4,0x38,0x00,0x73,0xc8,
+ 0x3d,0x8e,0x78,0x1c,0x5d,0x0e,0x29,0x70,0xb5,0x51,0x0b,0xdc,0xde,0xa7,0xdf,0xf3,
+ 0xf5,0x4e,0x76,0x89,0xc7,0xdd,0xaf,0xa6,0x0a,0x8d,0x43,0xa2,0xb2,0xee,0x08,0xc3,
+ 0xbd,0xaf,0xa6,0x3d,0x10,0x70,0x70,0xb0,0xb9,0xa7,0x18,0x40,0x88,0x8f,0xb6,0x1e,
+ 0x5a,0x4d,0x50,0x99,0x10,0xec,0xa7,0xd4,0x0e,0x0c,0x40,0x52,0xfa,0x7c,0x8c,0x27,
+ 0x41,0xb1,0xb7,0x9e,0x70,0x2c,0xa8,0x81,0xed,0x1c,0x7a,0x22,0x3e,0x06,0x0b,0x11,
+ 0xe1,0x6b,0x11,0x90,0x85,0x51,0x73,0xf4,0xc3,0x28,0xb2,0x7f,0x88,0xd5,0xd0,0x54,
+ 0x67,0x54,0x59,0x4e,0x63,0x96,0x66,0xf3,0xc3,0x48,0x82,0xae,0x36,0xa7,0x68,0x04,
+ 0x0f,0x23,0x82,0x16,0x42,0x5a,0x40,0xc1,0x96,0xcc,0xa2,0xe3,0x6b,0xb1,0x17,0xe7,
+ 0x14,0xba,0x3a,0x1c,0xa6,0x9e,0xaa,0x4a,0x9a,0x9a,0x0c,0xfe,0x5a,0x89,0x80,0x31,
+ 0xb9,0x9a,0x8a,0x15,0x8d,0x7f,0x98,0x0d,0xf9,0x3b,0x0b,0x9d,0xad,0xe2,0xe6,0xf8,
+ 0xb9,0x7c,0x45,0x82,0x49,0xfa,0x9e,0x1a,0x8a,0x60,0x4d,0x2c,0xb4,0x71,0x76,0x24,
+ 0x2d,0x71,0x30,0x17,0x05,0x94,0x73,0xa7,0x51,0x20,0x37,0x0d,0x63,0x6d,0xb7,0xc5,
+ 0x33,0x32,0xa7,0xaa,0x19,0x5e,0x64,0x23,0x1f,0x88,0x29,0x1c,0x46,0x4a,0xb1,0x00,
+ 0xed,0x71,0x60,0x09,0x1c,0xf2,0x2e,0x45,0xb6,0x18,0xf9,0x7f,0x88,0x6a,0x1f,0x26,
+ 0xad,0xe5,0xae,0xb1,0x74,0x17,0xb5,0xd2,0x46,0xd6,0x40,0xc0,0x45,0x61,0x1c,0xdf,
+ 0xe0,0xf5,0x08,0x42,0x65,0x39,0xcc,0xad,0xea,0x7d,0x0b,0x9b,0xd2,0x02,0x3d,0x87,
+ 0x06,0xde,0x39,0xfe,0x98,0x7f,0x25,0xad,0xa7,0xe9,0xec,0xd6,0xa2,0xa7,0x21,0xe9,
+ 0xfc,0xf1,0xeb,0x2a,0x90,0x47,0x35,0x31,0xcf,0x29,0x4a,0x54,0x93,0x7d,0x20,0x03,
+ 0x15,0xc3,0x86,0x37,0x06,0xff,0x00,0xeb,0x8a,0xc7,0x45,0xc5,0x5b,0x0d,0x05,0x72,
+ 0xce,0x6a,0x6a,0x27,0x69,0xd1,0x8c,0x92,0x46,0x54,0x8b,0xa7,0x1b,0xdb,0x60,0x76,
+ 0xe0,0x7d,0xaf,0x7b,0xdb,0xb2,0x29,0x29,0x93,0xaa,0x72,0x24,0xcc,0xab,0xa1,0xcb,
+ 0x10,0xd7,0xc0,0xcb,0x35,0x61,0x2b,0x10,0x2b,0x22,0x9f,0x5b,0xef,0xa0,0x11,0x7b,
+ 0x31,0x16,0xb8,0xb1,0x22,0xf7,0xc7,0x3d,0xcf,0x94,0x58,0x25,0x6c,0x01,0x87,0x2b,
+ 0x65,0xa1,0x9a,0x3c,0xc2,0x86,0x92,0xb2,0x0b,0x98,0xaa,0xa0,0x8e,0x64,0xbf,0xb3,
+ 0x28,0x3f,0xde,0xd8,0x7e,0x4d,0x10,0x44,0xf2,0xcc,0x42,0x46,0xbb,0xb1,0x3c,0x0c,
+ 0x42,0xf4,0x75,0x7c,0x23,0xe7,0x7a,0x7a,0x48,0xa4,0xa7,0xae,0xca,0xaa,0x27,0xed,
+ 0xa3,0x59,0x92,0x5a,0x46,0x9d,0x9a,0x19,0x23,0x91,0x49,0x56,0x5d,0x0e,0x83,0x63,
+ 0xed,0x8a,0x87,0xc5,0xce,0xb6,0xcc,0xba,0x72,0xb6,0x96,0x8b,0x28,0x96,0xb2,0x90,
+ 0x22,0x89,0x2a,0xdf,0xe5,0x41,0x46,0x42,0xa4,0x6c,0xc4,0xee,0x34,0xb5,0xfe,0x8e,
+ 0x8b,0xc7,0x9f,0xa4,0x9f,0x13,0x89,0xba,0x36,0xea,0x5d,0xd6,0xbb,0x72,0x7e,0xdc,
+ 0x2f,0x16,0x74,0x8f,0x1a,0x83,0x0f,0x6f,0xdb,0xfd,0xab,0x4e,0x5d,0x9e,0xf4,0xef,
+ 0x5a,0x54,0x7c,0x83,0xd1,0x0a,0xd3,0x0e,0xa9,0x61,0x5a,0xfa,0x00,0xc9,0x72,0x19,
+ 0x0b,0x2e,0xa0,0x74,0xbd,0x83,0x8b,0x10,0x08,0x00,0xf8,0xc6,0x65,0xfc,0x42,0xfc,
+ 0x3d,0xe9,0x68,0xf2,0x29,0xba,0xa1,0x93,0x2d,0xc9,0xb3,0x48,0xc5,0xbd,0x0d,0xd9,
+ 0x7a,0xd6,0xb1,0x0b,0x1c,0x71,0x86,0x09,0xac,0x97,0x2c,0xcd,0xa5,0x89,0x0b,0xbd,
+ 0x86,0xf8,0x80,0xe9,0x8c,0xde,0x4a,0xde,0xaa,0x8f,0xa9,0x73,0x2c,0xe2,0x3f,0x97,
+ 0x8e,0x58,0xa4,0x9e,0xa6,0x8e,0x13,0x1b,0xf7,0x5c,0x5c,0xaa,0xc2,0x41,0x12,0xdc,
+ 0x93,0x21,0x52,0x76,0x1a,0xc0,0x03,0x4a,0xe2,0xdf,0xf1,0x43,0xe3,0x6d,0x04,0x3d,
+ 0x33,0x2c,0x9d,0x2a,0xc8,0x33,0x0a,0x7c,0xc9,0x40,0x69,0x8a,0x19,0xe1,0x40,0xaa,
+ 0xc9,0x53,0x14,0x45,0x4e,0xb8,0xde,0xf2,0x46,0xc4,0x32,0xba,0xee,0x45,0xc5,0xef,
+ 0xc1,0x67,0x88,0xc3,0xac,0xd3,0x48,0xdd,0x49,0x1b,0xba,0x63,0x24,0x77,0xae,0xe0,
+ 0xe1,0x6d,0x3a,0x77,0xc3,0x33,0x4c,0x57,0x5d,0x57,0x2f,0x74,0xff,0x00,0x5b,0x35,
+ 0x0e,0x4f,0x9a,0x65,0x59,0xeb,0x47,0x99,0xe5,0x75,0x74,0x2a,0xb1,0xd1,0xbd,0x2a,
+ 0x48,0x8b,0x34,0x68,0x7b,0x2c,0x64,0x57,0x47,0x40,0xa7,0x4d,0xc8,0x62,0x5b,0x4a,
+ 0x86,0x57,0x08,0x06,0x24,0xbe,0x1d,0xfc,0x39,0xac,0xea,0x1c,0xfb,0x27,0xa6,0xa8,
+ 0xca,0xeb,0x68,0xe2,0xcd,0xa1,0x2f,0x43,0x5c,0x29,0xbb,0x91,0x84,0xf5,0x46,0x67,
+ 0x90,0x12,0xa1,0x22,0x0f,0x63,0xdc,0xd5,0x75,0x20,0x58,0x35,0xf6,0x3b,0xaa,0xe5,
+ 0xc8,0xf3,0x2c,0xe7,0x38,0xcc,0xe9,0x65,0xc9,0x85,0x2d,0x6d,0x19,0x5c,0xbb,0x2a,
+ 0xcb,0x97,0xbf,0xf2,0xb2,0x82,0x83,0xb4,0x75,0x47,0x19,0x41,0x72,0xe5,0x0c,0x6b,
+ 0xbf,0xb3,0x0b,0xde,0xc3,0xf0,0xdf,0xa8,0xf3,0x9e,0x8c,0x96,0x7a,0x5a,0x5c,0xb2,
+ 0x29,0x73,0x08,0x28,0xeb,0xa3,0xcd,0x62,0x6c,0xc7,0xb5,0x23,0xc1,0x0c,0x6e,0xc6,
+ 0x78,0x2a,0x35,0x85,0x8f,0xb6,0x41,0x03,0xb2,0x41,0x27,0x50,0x21,0xb8,0xc7,0x26,
+ 0x36,0xb4,0xca,0xd1,0x21,0xb0,0x3b,0x7c,0xd7,0x4d,0xee,0x76,0xc2,0x59,0x82,0x56,
+ 0xc7,0xf3,0xdd,0x0d,0x57,0x58,0xb9,0xae,0x62,0xf9,0x43,0x47,0x93,0xa3,0xd1,0xe4,
+ 0xf3,0xfc,0xaf,0x72,0xb4,0xc7,0x1b,0x2d,0x3a,0x53,0x53,0xa8,0x55,0x5a,0xd9,0x09,
+ 0xbb,0x6a,0xb4,0x8a,0x82,0x60,0x1c,0x31,0x6b,0x2e,0x01,0xd7,0x52,0x74,0xfe,0x7b,
+ 0x5a,0x73,0xc7,0xcd,0xe9,0xaa,0xcd,0x5d,0x62,0x50,0x54,0x45,0x2d,0x29,0xa4,0x9f,
+ 0x2d,0x8d,0x15,0x10,0x49,0x2c,0x51,0x80,0x64,0xb2,0x2e,0xc2,0x21,0xa4,0x69,0xbb,
+ 0x6e,0x42,0x60,0xaf,0x84,0x39,0x34,0x39,0x97,0x5c,0x64,0x75,0x19,0x7e,0x55,0x9a,
+ 0xd7,0x55,0x4c,0xc8,0xb0,0xc4,0x99,0xb1,0xa4,0x51,0xa8,0x13,0x34,0x46,0x5d,0x3d,
+ 0xc0,0x04,0x4c,0xce,0xcc,0x84,0xed,0x20,0xd5,0x65,0x63,0x8e,0x87,0xca,0xbe,0x17,
+ 0x57,0xfc,0x34,0xeb,0x1e,0x9f,0x3d,0x15,0x91,0xd2,0xf5,0x0e,0x45,0x58,0xad,0x4f,
+ 0x5b,0x53,0x98,0x94,0x9e,0xab,0x2a,0x06,0xda,0xc4,0x6e,0xca,0xa3,0xb6,0xc8,0x19,
+ 0x45,0xef,0x76,0x24,0x9d,0x3e,0x91,0x8e,0xa8,0x12,0x6b,0x63,0xfe,0x90,0x05,0xf6,
+ 0x27,0x3d,0x0f,0xbe,0x02,0xc6,0x4b,0x34,0xaf,0x22,0xcd,0xd7,0xa7,0xbf,0xe5,0x33,
+ 0x94,0x7f,0x0c,0xdd,0x03,0x92,0xd0,0x65,0xf5,0x15,0x91,0x66,0x95,0xd5,0x74,0xd0,
+ 0xba,0xcf,0x34,0x06,0x6a,0x71,0x53,0xae,0x37,0x8d,0x64,0x34,0xec,0x4b,0x23,0x28,
+ 0x75,0x6f,0xcc,0x2e,0x53,0x75,0x00,0x95,0xc3,0xbd,0x3f,0xd0,0x55,0xdf,0x0b,0xe9,
+ 0xba,0xab,0xaa,0x8d,0x5d,0x76,0x69,0x35,0x1e,0x5b,0x53,0x2e,0x59,0x5d,0x99,0x2c,
+ 0x11,0x54,0x53,0x4a,0x69,0x84,0x6f,0x34,0xec,0xd2,0xb6,0x95,0x26,0x28,0xca,0xd8,
+ 0x16,0x3c,0x10,0xc4,0x81,0x8d,0x77,0x32,0x99,0xa9,0xe2,0x96,0xa2,0xaa,0xb1,0xe9,
+ 0xa4,0x70,0x56,0x08,0x62,0x75,0xb3,0x1e,0x05,0xf5,0x29,0x2e,0x6e,0x6e,0x48,0x02,
+ 0xc0,0x58,0x02,0x79,0xcd,0x3a,0xdf,0x22,0xeb,0x6a,0x5c,0xd7,0xa6,0xeb,0x72,0x9a,
+ 0xbc,0x9b,0x31,0xca,0x12,0xb6,0x31,0x15,0x2f,0x51,0x19,0xaa,0xa5,0xa7,0xac,0x70,
+ 0xc2,0x24,0x48,0x12,0xd1,0xca,0x58,0xaa,0x95,0x2c,0xac,0xd1,0xc8,0xec,0x6e,0xa8,
+ 0x9a,0x87,0x5a,0x6d,0x34,0x10,0x32,0xd8,0xcc,0x8f,0x76,0xb9,0xf1,0xcd,0x24,0xa6,
+ 0x9e,0xee,0x7b,0xfe,0xca,0x43,0x35,0xe8,0xb1,0x59,0xf0,0xda,0x9b,0x22,0xab,0xae,
+ 0x4f,0xf0,0x6a,0x58,0xe9,0xa5,0xcc,0x72,0xd8,0x09,0xa5,0x93,0x30,0x89,0xac,0x5e,
+ 0x7a,0xc9,0x3d,0x53,0x07,0x7b,0x8a,0x96,0x00,0x02,0x74,0x15,0x25,0x8e,0xe3,0x1e,
+ 0xe9,0xce,0xb5,0xa2,0xf8,0x09,0xd0,0x92,0xae,0x59,0x51,0x5b,0x9f,0xe7,0x39,0xcd,
+ 0x55,0x35,0x7d,0x34,0x89,0x41,0x12,0x52,0xd0,0x09,0x62,0xbc,0xd1,0xc5,0xae,0x42,
+ 0xce,0xcc,0x23,0x54,0x62,0x17,0x48,0xb0,0xb9,0x66,0x8c,0x8c,0x55,0x3a,0x8b,0xad,
+ 0x3a,0xba,0x93,0x2f,0xea,0xce,0xa4,0xcb,0xf2,0x8a,0xac,0x95,0xf3,0xba,0xb3,0x0d,
+ 0x5d,0x5b,0xcf,0x05,0x4c,0xb0,0x99,0x1e,0x68,0xe5,0xa6,0x8e,0xa9,0xa3,0x13,0x00,
+ 0xcf,0x03,0x05,0x88,0x33,0x5a,0x34,0xb9,0x36,0xd2,0x71,0x95,0x57,0x75,0x13,0xd5,
+ 0x7f,0x83,0xc1,0x36,0x5b,0x34,0xf4,0x51,0xa5,0x33,0xb3,0x48,0xa1,0x6a,0x27,0x54,
+ 0x41,0x1b,0x76,0xdc,0x2f,0xa1,0x0a,0xa8,0x00,0x00,0xc4,0x14,0x07,0x51,0x20,0xe3,
+ 0x85,0xa8,0xd5,0xb0,0x10,0x5a,0x29,0xd5,0xca,0xea,0x45,0xa7,0x34,0x5a,0xf3,0x62,
+ 0xd0,0x1d,0x4b,0x9e,0xc9,0xd4,0x79,0xb5,0x7e,0x7d,0x53,0xd8,0x49,0x33,0x6a,0xba,
+ 0x9a,0xa9,0xe0,0x86,0x32,0x88,0x8e,0xec,0x59,0x85,0xad,0xa7,0x97,0x20,0x6e,0x4d,
+ 0x80,0xbd,0xb6,0xc5,0x8f,0xa2,0x24,0x7e,0x88,0x49,0xba,0xb2,0x9f,0xaa,0x5f,0x23,
+ 0xcf,0x29,0x92,0x27,0xca,0xf2,0xc8,0xa9,0xa4,0x69,0x33,0x48,0xde,0x46,0x57,0x1a,
+ 0x88,0x0a,0xa8,0x3b,0x7c,0x9d,0x5b,0xd8,0x81,0x75,0xc5,0x36,0x8a,0xa1,0xde,0x3a,
+ 0x58,0x6b,0x65,0x9e,0x6c,0xa5,0x27,0x69,0x1e,0x05,0x67,0x7e,0xda,0x9d,0x06,0x47,
+ 0x54,0xd4,0xab,0x76,0x50,0x01,0xdc,0x13,0xa6,0xd7,0x1b,0x1c,0x5d,0x33,0x9e,0xba,
+ 0xea,0x1e,0xb1,0xa0,0x9e,0x9d,0xfa,0x82,0x4c,0xce,0x88,0x4c,0x66,0x9e,0x9e,0x58,
+ 0xa0,0xa5,0x73,0x4d,0x4b,0x1e,0x98,0x59,0x82,0xda,0xca,0x11,0xd8,0x2c,0x28,0xcc,
+ 0xaa,0x6f,0xa6,0xe4,0xdf,0x1c,0x98,0xcd,0x12,0xfe,0xbd,0x3e,0x7f,0x75,0xd0,0x2d,
+ 0xc5,0x74,0x52,0x74,0x2f,0x55,0xd5,0xfd,0x6b,0x33,0x28,0x69,0xb3,0x3c,0xce,0x76,
+ 0x71,0x1d,0x1c,0x61,0x14,0x38,0x56,0x27,0x70,0xc9,0x66,0x00,0x29,0x5d,0xfc,0x6f,
+ 0x8d,0x42,0x2e,0x9c,0xcb,0x2b,0x72,0xd6,0xcd,0x73,0x98,0x23,0x88,0x54,0x4e,0xec,
+ 0x92,0xa5,0x53,0x14,0x81,0x1d,0x14,0x3c,0x01,0xc0,0x8f,0x62,0x15,0xd6,0x42,0x41,
+ 0x25,0x98,0x10,0x77,0x27,0x11,0xbd,0x63,0xd2,0x19,0x5d,0x1d,0x15,0x7d,0x76,0x52,
+ 0x3b,0x13,0xe4,0x75,0x0b,0x35,0x2b,0x4f,0x0b,0x09,0xe9,0x44,0x4e,0x8a,0xcc,0xe5,
+ 0x10,0xa1,0x88,0xb2,0x39,0x0a,0x54,0x05,0xb9,0x0b,0x7b,0x36,0x21,0xcd,0x7e,0x65,
+ 0x92,0x52,0x64,0x39,0x8e,0x74,0x61,0xcc,0x32,0x5a,0xa5,0x3a,0x26,0xca,0x5d,0xa0,
+ 0x9e,0x48,0x64,0x60,0xb7,0x0c,0x41,0x48,0x7f,0xf4,0xd6,0xc7,0x7f,0x48,0xd8,0x10,
+ 0x6f,0xc2,0x99,0x84,0x81,0xb4,0xd7,0xbf,0x5a,0x56,0x37,0x82,0xac,0x10,0xd1,0xe4,
+ 0x74,0xb5,0x27,0x2c,0xc8,0xe9,0xb3,0x33,0x2d,0x38,0x2d,0x49,0x5b,0x04,0x49,0x2b,
+ 0x34,0x4d,0x22,0x02,0x11,0x81,0xba,0x59,0x4b,0xaf,0xa4,0x12,0x2d,0xaa,0xe7,0x49,
+ 0x38,0xb8,0xd2,0xe7,0xf9,0xd6,0x6c,0xf0,0xe4,0xff,0x00,0xe1,0x34,0x99,0x5c,0x30,
+ 0x37,0x71,0xea,0xea,0x43,0x34,0x92,0x2e,0xa5,0xd7,0x02,0x69,0x05,0x9e,0xda,0xb7,
+ 0x91,0x48,0x1e,0x90,0x6e,0x43,0x1c,0x50,0xf2,0xca,0xd6,0x7c,0xf6,0xa7,0x2e,0xa4,
+ 0xa7,0x7a,0xfa,0x22,0x15,0x2b,0x63,0x98,0xac,0x55,0x48,0xb1,0xb9,0x4b,0x4b,0xa4,
+ 0xaf,0x69,0xd4,0x31,0x36,0x04,0xee,0x7c,0x6d,0x8d,0x23,0x20,0xcb,0x68,0xb2,0x1a,
+ 0x6c,0xc9,0x85,0x32,0xc3,0x3c,0xd0,0x85,0x82,0x75,0x62,0x5a,0x99,0x62,0xb0,0x0b,
+ 0x18,0x0e,0xda,0x15,0x48,0xd4,0xd6,0x24,0x10,0x49,0xc2,0x43,0x20,0x8d,0xf4,0xe7,
+ 0x10,0x08,0xce,0x4f,0xe6,0xb3,0xf8,0x55,0x3d,0xa5,0xc2,0xeb,0x2a,0x6c,0x41,0x2e,
+ 0x52,0x92,0xc7,0x2c,0xd3,0xe6,0x55,0x51,0x47,0xde,0x49,0x98,0x2f,0x72,0xeb,0xab,
+ 0xd0,0xb6,0x01,0x51,0xb4,0x58,0x82,0x05,0xaf,0xe4,0xf3,0x80,0x72,0xee,0xbc,0xab,
+ 0xa6,0xae,0x78,0xea,0xaa,0xa0,0x08,0xaa,0xc0,0xc7,0x36,0xb9,0x82,0xa8,0xb6,0xe0,
+ 0xa8,0xbb,0x92,0x4e,0xd6,0x00,0x1b,0x80,0x4a,0x8b,0xd9,0xa8,0x03,0x9a,0x8b,0xd7,
+ 0xa3,0xbd,0x3d,0x64,0x71,0x2e,0xaa,0x6f,0xc3,0x12,0xb5,0xef,0xab,0x6b,0xaa,0x8d,
+ 0xc0,0xd8,0xef,0x6d,0xed,0xe2,0x43,0xe6,0x16,0x0a,0x69,0x6b,0x23,0xcb,0x82,0x12,
+ 0xe1,0xe4,0x10,0x40,0x08,0xd5,0x6d,0x2a,0xe5,0x6c,0x50,0x32,0xd8,0xa8,0x2d,0xb7,
+ 0x3b,0x8b,0xe0,0xc1,0xaf,0x3a,0x6d,0x56,0xe6,0xfc,0x22,0xc7,0x17,0xfb,0x5e,0x7d,
+ 0x7b,0xa6,0x7c,0x4d,0x92,0x2d,0xa7,0x3f,0x3f,0xfe,0x2d,0x0b,0x2b,0xcc,0x69,0xb3,
+ 0x8a,0x71,0x51,0x46,0x4a,0xa9,0xf5,0x08,0xdc,0x81,0x22,0xa1,0xfc,0xa5,0x94,0x1f,
+ 0x45,0xc6,0xe0,0x1d,0xed,0x6c,0x48,0x68,0xc6,0x6f,0xd3,0x5d,0x71,0x95,0x65,0x75,
+ 0x99,0x7e,0x58,0x63,0x5a,0x5a,0x7c,0xce,0x45,0xff,0x00,0x8d,0x34,0xef,0xdb,0x9e,
+ 0xa5,0xd3,0x50,0x22,0x4d,0x47,0xb8,0x64,0x50,0x34,0x85,0xbd,0xbc,0x9e,0x17,0x1a,
+ 0x91,0x88,0xab,0x15,0x22,0xc4,0x6c,0x71,0xf5,0xfd,0x06,0xba,0x2d,0x74,0x02,0x46,
+ 0x3a,0xfb,0xf4,0xcf,0xc9,0x79,0x0d,0x44,0x2e,0x82,0x4d,0xa4,0x52,0x17,0xb5,0xf4,
+ 0xc7,0xa6,0x3d,0xb6,0xc4,0xcd,0x1c,0x34,0xbd,0xb6,0xf9,0x81,0xea,0xbf,0x25,0xad,
+ 0xb6,0x07,0xab,0x58,0x5a,0x62,0x69,0xc1,0x0a,0x79,0xbf,0xbe,0x36,0x87,0xdb,0xaa,
+ 0x95,0x45,0xb4,0x2e,0xd0,0x34,0xd4,0x13,0x56,0x4c,0xb1,0x53,0x26,0xb7,0x60,0x48,
+ 0xb9,0x00,0x6d,0xf5,0x38,0x86,0xf8,0x9b,0x93,0xcf,0x95,0x74,0x15,0x79,0xad,0x92,
+ 0x96,0x29,0xf3,0x73,0x1e,0x5d,0x96,0x42,0x65,0xd4,0xd5,0x75,0x12,0xb8,0xb2,0x28,
+ 0x1b,0x00,0x14,0x33,0x31,0x3b,0x00,0x31,0x62,0x44,0xd0,0xc1,0x87,0x20,0xf8,0xc5,
+ 0x67,0xe2,0x6d,0x7c,0xf9,0xae,0x67,0xf0,0xcf,0x27,0x17,0x1d,0xdc,0xf9,0xa4,0xb0,
+ 0xe1,0x74,0xa2,0x0f,0xd0,0x58,0x9f,0xdf,0x1c,0x9f,0x18,0x9e,0x58,0x34,0x8f,0x73,
+ 0x2a,0xab,0x3f,0x55,0xbf,0xc3,0xe3,0x8e,0x59,0xda,0xd7,0x73,0x6b,0x2c,0xea,0xba,
+ 0x58,0xa1,0xad,0x83,0x2a,0x3d,0xa7,0x4c,0xa3,0x2c,0xa3,0xa2,0xd4,0xb1,0xd9,0x0b,
+ 0x24,0x64,0xb3,0x01,0xe0,0x5d,0x8e,0xde,0x31,0x11,0x4b,0x97,0x7c,0xed,0x54,0x14,
+ 0xf4,0xb4,0xf0,0x77,0x9e,0xc6,0xfa,0x00,0x00,0x0b,0x02,0x58,0xf0,0xa3,0x71,0xb9,
+ 0xf3,0x61,0xb9,0xc1,0x39,0xf5,0x43,0x57,0x67,0x59,0x9d,0x49,0x75,0xd2,0xf5,0x6f,
+ 0xa9,0x80,0xd5,0xb0,0xb8,0x5d,0xad,0xc5,0x97,0x1f,0x64,0x59,0xb4,0xf9,0x26,0x62,
+ 0xb2,0x23,0x5e,0x39,0x19,0x52,0x68,0x98,0x5d,0x5c,0x58,0xef,0x6f,0x24,0x0b,0xed,
+ 0xc1,0x04,0xf0,0x6c,0x47,0xcd,0x23,0x6b,0x6c,0x07,0x70,0xbd,0x9c,0x8e,0x34,0x4b,
+ 0x53,0x39,0xa6,0x54,0xd9,0x45,0x48,0xa6,0xa8,0xa5,0x82,0x5b,0xdd,0x95,0x9d,0x34,
+ 0x87,0x1c,0xdd,0x49,0xe2,0xc7,0x90,0x78,0xe3,0x10,0xf9,0xeb,0xd1,0x65,0x35,0x19,
+ 0x35,0x4d,0x3d,0x2a,0x46,0xb4,0xf3,0xad,0x44,0xdd,0xab,0x07,0x90,0x23,0xa3,0x10,
+ 0x4f,0x1c,0x0d,0xaf,0xb6,0xf8,0xb1,0x75,0x16,0x72,0xd9,0xdd,0x52,0x24,0x01,0x69,
+ 0x28,0x69,0xb4,0x88,0x61,0x45,0xd2,0xbb,0x22,0x81,0xb7,0xd0,0x6c,0x07,0xb7,0xb9,
+ 0xc5,0x6f,0xaa,0x18,0x30,0xa4,0x42,0x60,0x68,0x64,0x85,0xd4,0x99,0x63,0x12,0x01,
+ 0x75,0xb5,0xed,0x71,0x63,0x7b,0x6f,0x70,0x7e,0xa3,0x16,0x3f,0x64,0x6f,0x71,0x6e,
+ 0x42,0xa8,0x17,0x16,0x02,0xee,0x55,0xfb,0xe2,0x8f,0x5e,0xe4,0x59,0x26,0x78,0xc9,
+ 0xd3,0xd3,0x53,0x89,0x6b,0xe8,0x69,0x66,0x0a,0xa8,0xd4,0x8c,0x84,0x49,0x23,0xc8,
+ 0xae,0x85,0x6d,0xad,0xa1,0x9c,0x1b,0x1b,0x82,0x00,0x20,0xf1,0x8c,0xc7,0x30,0xa5,
+ 0xcd,0x7a,0xaa,0x9f,0x37,0xa1,0xcd,0x6a,0x68,0x2a,0x23,0x6a,0x11,0x53,0x25,0x5c,
+ 0xb0,0x16,0x73,0x98,0x23,0xf6,0xd5,0x63,0x94,0xdb,0xb6,0x64,0x88,0x06,0x08,0xc5,
+ 0x93,0x60,0x06,0x92,0xc0,0x0f,0xaa,0xf3,0x45,0xea,0xba,0x9c,0xc2,0x93,0xa8,0x5a,
+ 0xb0,0xc5,0x32,0x43,0x0a,0x2d,0x35,0xe7,0x58,0x1e,0x20,0xa8,0x92,0xc2,0xc5,0x41,
+ 0x52,0x96,0x53,0xa5,0x8e,0xe3,0xd2,0x0f,0x23,0x14,0x6c,0xd2,0x70,0x32,0x7c,0xd6,
+ 0x86,0x0c,0xd5,0x73,0x08,0x69,0x6a,0x4f,0x65,0x6a,0x22,0xf9,0x69,0xe4,0x4d,0x7a,
+ 0x5a,0xca,0x35,0x21,0x1a,0xaf,0xe9,0xd6,0x58,0x5e,0xe0,0x58,0x0c,0x26,0x96,0x69,
+ 0x03,0x76,0x01,0x8e,0xd7,0xf9,0xff,0x00,0x1d,0xd6,0x79,0xc0,0x7b,0xf7,0x75,0x56,
+ 0x48,0xeb,0xa3,0xae,0x92,0xa6,0xba,0x86,0x68,0xc5,0x35,0x41,0x8e,0x47,0xa4,0x82,
+ 0x94,0x45,0x1d,0x3c,0x89,0xa7,0x51,0x48,0xcb,0x2d,0xd5,0xec,0xda,0x88,0x03,0x7f,
+ 0x16,0xc0,0x15,0xca,0x5d,0xa3,0x39,0x74,0x6f,0x45,0x9d,0xa4,0x1a,0x61,0xa9,0x03,
+ 0x5c,0xd0,0x31,0x7d,0x32,0x2b,0x3f,0x2b,0x66,0x2a,0x14,0x03,0xe9,0xb3,0x6f,0x6e,
+ 0x47,0xc9,0x6a,0xf2,0x78,0xf3,0x4a,0x4f,0x97,0xaa,0xae,0x83,0x5a,0x87,0x9c,0x54,
+ 0x20,0x63,0x1b,0x12,0x01,0x2c,0x40,0x17,0x05,0x6e,0xb6,0x02,0xc3,0x51,0x22,0xd7,
+ 0xb6,0x00,0xcc,0x16,0xab,0x26,0xd1,0x43,0x4e,0x8d,0x55,0x4d,0x2c,0xaf,0xeb,0x11,
+ 0x18,0x9b,0xb6,0x1c,0x22,0xb1,0x7b,0x9d,0x2c,0xcc,0x01,0xd7,0x75,0xb9,0xdc,0xdc,
+ 0x5a,0xf9,0x68,0xb9,0xf6,0x4e,0x7d,0x7a,0xa9,0xd1,0x56,0xdf,0xa1,0xb3,0x9a,0x79,
+ 0x6a,0x22,0x10,0xc6,0xd3,0x6a,0x34,0xc8,0xc9,0x53,0x6b,0x3b,0x02,0x5c,0x47,0xa7,
+ 0x9b,0xaa,0x95,0x3a,0xac,0x3d,0x44,0x7d,0x70,0x04,0xf5,0x19,0x96,0x4d,0x2d,0x24,
+ 0x79,0x9a,0xd5,0x08,0x60,0x32,0x34,0x54,0x6c,0x3f,0xe5,0xdf,0x8b,0xad,0xc0,0x0a,
+ 0x76,0xff,0x00,0xda,0x42,0x9d,0x88,0xdb,0x1a,0x15,0x12,0x00,0xec,0x94,0xd0,0x54,
+ 0xca,0xf4,0x33,0xc9,0x31,0x07,0x54,0x0f,0x31,0x61,0xa4,0xdc,0xfe,0x50,0x14,0x0e,
+ 0x7f,0x96,0xc7,0x6b,0x5c,0xe2,0xad,0xd5,0x54,0xf2,0xd1,0xf5,0x13,0xbd,0x6c,0x8b,
+ 0x57,0x15,0x64,0x62,0x65,0x92,0xc3,0xb8,0x55,0x0f,0x69,0x90,0xec,0x00,0x20,0xa3,
+ 0x0e,0x2d,0xb0,0x3b,0xe3,0x53,0x1e,0xf0,0x69,0xc5,0x03,0x54,0xb4,0x9e,0x86,0xf8,
+ 0x91,0x55,0xd0,0xdd,0x42,0x33,0x9c,0x93,0xa3,0xf2,0xe3,0x96,0x66,0x11,0x45,0x06,
+ 0x6c,0xb4,0xf2,0x76,0x6f,0x06,0xe5,0x55,0x2e,0xec,0x23,0x75,0x37,0xe0,0x58,0x88,
+ 0xed,0xbe,0xe7,0x1b,0xaf,0x49,0xfc,0x68,0xa5,0xcd,0xb3,0xec,0xb7,0xa7,0xb3,0x68,
+ 0xa1,0xcb,0xa4,0xae,0x59,0xa3,0xa6,0xad,0x6a,0x8b,0xfe,0x2c,0x65,0x42,0xa3,0x06,
+ 0x50,0xac,0x5f,0x50,0x01,0x85,0xbd,0x5e,0x0d,0xf1,0xc6,0x92,0x66,0xf5,0x30,0xd0,
+ 0x22,0x43,0x11,0x2f,0x1d,0x4b,0x76,0xea,0x16,0x45,0x25,0x94,0x28,0x03,0x50,0x5e,
+ 0x48,0xbe,0xd7,0x1c,0x36,0x18,0x19,0xcc,0xd5,0x81,0xa5,0x93,0x34,0x6a,0x2a,0x8a,
+ 0x38,0xcc,0xf0,0xc5,0x1c,0x04,0x97,0x9c,0x5e,0xca,0x45,0xac,0x09,0xbd,0xef,0xc6,
+ 0xf8,0xe9,0xe9,0x3c,0x47,0x53,0xa7,0x20,0x07,0x7c,0x3d,0x96,0x39,0x74,0xb1,0x4d,
+ 0x92,0x33,0xdd,0x7e,0x92,0x54,0xb5,0x1e,0x45,0x4d,0x3d,0x76,0x65,0x51,0x1d,0x2c,
+ 0x6a,0xba,0xe6,0xaa,0xaa,0x71,0x72,0x17,0x7e,0x7c,0xdb,0xc2,0xa8,0xfb,0x0b,0x9c,
+ 0x56,0xba,0xdf,0xaf,0xba,0x73,0xa0,0xfa,0x5e,0x9f,0xad,0x73,0x59,0x1f,0x33,0xa4,
+ 0x75,0x55,0xca,0x92,0x94,0x16,0x33,0x97,0x21,0x59,0xa1,0x62,0x34,0xa1,0x28,0xe4,
+ 0x97,0x62,0x2e,0xa2,0xc0,0xfa,0xb7,0xe2,0x67,0xf8,0xd3,0xd5,0x99,0x55,0x36,0x79,
+ 0x43,0x45,0x9b,0x4f,0x59,0x41,0x9e,0x1a,0x98,0xaa,0x05,0x6c,0x8d,0x24,0xb5,0x09,
+ 0x51,0x0c,0x70,0xb6,0xad,0x57,0x70,0x15,0x22,0x88,0x21,0x04,0x10,0x63,0x1b,0x91,
+ 0x75,0xc5,0x1b,0xa8,0xf3,0x85,0xce,0xab,0x9e,0xa2,0xa2,0xba,0xb5,0xe6,0x92,0x35,
+ 0x32,0xcd,0x5c,0xdd,0xe6,0xa8,0x95,0x54,0x29,0x92,0xd7,0x21,0x76,0x1a,0x46,0xed,
+ 0xb2,0xdb,0x6e,0x31,0xde,0x9b,0xc6,0x4b,0x9a,0x43,0x1b,0x4b,0x24,0x7e,0x1a,0x01,
+ 0xb7,0x39,0x6c,0x3f,0xc4,0x1f,0xc7,0x0c,0xbf,0xe2,0xb4,0x39,0x64,0x39,0x25,0x46,
+ 0x65,0x06,0x5f,0x4b,0x3c,0xda,0x29,0x26,0xa2,0x58,0xe2,0x21,0x95,0x0a,0xc9,0xaf,
+ 0x5b,0x31,0x94,0x9b,0xa9,0xd8,0x6c,0x2e,0x3f,0x31,0xc6,0x0f,0x2d,0x5f,0xcd,0xcb,
+ 0xdd,0x9d,0x54,0xca,0x3f,0x28,0x42,0x63,0x0a,0x2f,0xc0,0x02,0xc0,0x79,0xd8,0x7d,
+ 0x70,0x46,0x5d,0x51,0x48,0xd2,0x88,0x6b,0x1e,0xa1,0x60,0xdc,0x49,0x2c,0x65,0x59,
+ 0x80,0xff,0x00,0x30,0x56,0xfc,0xd6,0x36,0x24,0x02,0x3f,0x2f,0x8e,0x43,0xb2,0xe5,
+ 0x10,0xd5,0x19,0xe4,0x7c,0xea,0x88,0xcb,0x1c,0x71,0x4a,0xa1,0xc3,0x8e,0xee,0xb5,
+ 0xbe,0x90,0x40,0xbe,0xb1,0xc1,0x16,0xe4,0xf3,0xe7,0x1e,0x72,0x49,0x0c,0x8e,0x2f,
+ 0x77,0x25,0x75,0x99,0x18,0x63,0x43,0x46,0x02,0x88,0x49,0xcb,0xb9,0x13,0x49,0x3c,
+ 0x34,0xee,0x42,0x4a,0xc8,0x35,0x59,0x6f,0x7b,0x69,0xb8,0x0d,0xc0,0x36,0x24,0x6e,
+ 0x06,0xe3,0x16,0x1c,0xde,0xb5,0x3f,0xc5,0x5e,0x59,0xeb,0xea,0xf3,0x53,0x62,0x63,
+ 0x35,0x51,0x96,0x95,0x41,0xbe,0x94,0x66,0x24,0x71,0xcd,0x87,0xa6,0xfc,0x7b,0xe2,
+ 0x32,0xb6,0x8a,0x68,0x1d,0x0e,0x64,0x22,0x88,0xb2,0x86,0x11,0xc2,0xaa,0xba,0x97,
+ 0xdc,0xe9,0xfd,0xbd,0xef,0x81,0x0c,0x8b,0x21,0x52,0x8a,0x13,0x48,0xb0,0x04,0x5d,
+ 0x7e,0x84,0xdf,0x61,0xce,0x10,0x83,0x4a,0xdc,0x1c,0x05,0xdc,0xdd,0x35,0x45,0x26,
+ 0x43,0x4b,0x9b,0x51,0x45,0x5d,0x1d,0x5d,0x0d,0x6d,0x3e,0x8a,0x3a,0x5a,0xd1,0x27,
+ 0xcb,0x43,0x1b,0x17,0x63,0x0a,0xc6,0xc6,0xc3,0xd6,0x77,0x27,0x8d,0x17,0xb0,0x0c,
+ 0x6f,0x5f,0xad,0xf8,0x7d,0xff,0x00,0x97,0x2e,0x5f,0x49,0x32,0xe5,0xd4,0x33,0x48,
+ 0xf0,0x54,0xd3,0x53,0x52,0xd3,0xc3,0x4e,0xfa,0x8a,0xb8,0x01,0x64,0x26,0xed,0xdc,
+ 0x52,0x75,0x29,0x52,0x55,0x15,0x6f,0xb0,0xc4,0x6c,0x3d,0x63,0x9b,0x53,0xc9,0x9a,
+ 0x2e,0x6b,0x20,0xab,0xa4,0xa1,0x8f,0xe6,0xdd,0xd2,0x07,0x7a,0xb6,0xa4,0x8d,0xe3,
+ 0x43,0x2a,0xa3,0x05,0x06,0x00,0xda,0x94,0x11,0xac,0xae,0x83,0x71,0x63,0x71,0x6e,
+ 0xc8,0xfa,0x8f,0xff,0x00,0x10,0xe5,0xd1,0x66,0x39,0x35,0x65,0x3d,0x4d,0x1b,0xa9,
+ 0x83,0xb9,0x03,0x5d,0xfb,0xa5,0x03,0x94,0x78,0xc1,0xb2,0x48,0x06,0x91,0xb9,0xb9,
+ 0x01,0x81,0xe3,0x7f,0x39,0x2c,0x9a,0x96,0x80,0x1e,0x70,0x38,0xf4,0xf7,0xea,0x83,
+ 0x58,0xd1,0x65,0xbd,0x55,0x67,0x2f,0xa5,0xca,0x72,0xac,0x9a,0x92,0x9f,0x35,0x58,
+ 0x63,0xf9,0x09,0xe5,0x9e,0x28,0x69,0x2b,0x26,0x99,0x15,0x1d,0x8b,0x3f,0x76,0x19,
+ 0x1c,0x3e,0xc0,0xdb,0x50,0x20,0x79,0x03,0x63,0x7f,0x32,0x39,0x28,0x11,0x2a,0xe9,
+ 0x21,0xaa,0x92,0x48,0x68,0xe4,0x74,0xee,0x7c,0xb7,0x76,0x23,0x7d,0x94,0x91,0xe5,
+ 0x7c,0x69,0x20,0x0e,0x39,0x6d,0xcc,0x97,0x50,0xd7,0x74,0xb5,0x5e,0x6b,0x55,0x94,
+ 0xe7,0x53,0xe5,0xd4,0xd5,0xe9,0x34,0x75,0x75,0x0f,0x52,0x02,0x85,0x89,0xe1,0x1a,
+ 0x81,0x94,0x6c,0xe6,0xc4,0x00,0xd6,0xd1,0x74,0x00,0x8f,0x65,0x55,0x47,0x02,0x65,
+ 0x11,0x53,0x43,0x04,0x2d,0x03,0xe9,0xf9,0xa9,0x94,0x2c,0x67,0x47,0xa5,0xbb,0xc0,
+ 0xae,0xa0,0xbb,0xab,0x58,0x6c,0x03,0x1d,0x88,0x06,0xd8,0xa4,0xb8,0x91,0x9b,0xca,
+ 0x39,0x05,0x48,0x4d,0x93,0xd2,0xd4,0x54,0x8a,0xe8,0xd6,0xa2,0x19,0xa5,0x58,0xe4,
+ 0xd0,0x95,0x7b,0x23,0xd8,0xb1,0x66,0x5d,0x80,0x16,0xb1,0xb5,0xbd,0x23,0xc0,0x1b,
+ 0xe1,0x50,0x56,0x56,0x65,0xf9,0x83,0x09,0xe5,0x96,0xbe,0x38,0x51,0x26,0x49,0x48,
+ 0x31,0xac,0x88,0xd6,0xe0,0x0b,0xd8,0x83,0x64,0xbd,0xc0,0x21,0x5a,0xe0,0x05,0xc3,
+ 0x34,0x19,0x49,0xa8,0x68,0xe9,0xe9,0xe7,0x95,0xeb,0xe2,0x32,0xcf,0x97,0xe6,0x51,
+ 0x57,0x85,0x95,0xe5,0x0a,0x03,0x96,0x51,0xa4,0x85,0xd2,0xd6,0xb3,0x06,0x1b,0x93,
+ 0xb1,0x18,0xcf,0x60,0xeb,0xa7,0xe9,0x38,0x29,0x6a,0x26,0xab,0xcc,0x21,0xa6,0xa9,
+ 0xa9,0x10,0x49,0x2d,0x54,0x97,0x13,0x4d,0x7d,0x4d,0x2c,0x6e,0x85,0xa3,0xbe,0xa3,
+ 0xea,0x07,0x81,0xb8,0x03,0x08,0xc6,0x99,0x6d,0xa3,0x3e,0x89,0xf8,0x5a,0xde,0x5d,
+ 0x55,0x52,0xd2,0xc9,0x97,0x50,0x08,0x60,0x6a,0xaa,0x58,0xcc,0x2d,0x32,0x68,0x94,
+ 0x28,0x27,0xd3,0xac,0xaf,0xa0,0x06,0xb0,0x16,0x17,0x1b,0x90,0x2c,0x71,0x7b,0xcb,
+ 0x3a,0x8b,0xbb,0x91,0xe5,0xd3,0x40,0x62,0xa9,0x2d,0x10,0x49,0x26,0x1b,0x02,0xcb,
+ 0xe9,0x6b,0x28,0xe3,0x71,0x6b,0x1f,0x3e,0x05,0xf1,0x8f,0xd4,0xe6,0x19,0x76,0x6e,
+ 0xd3,0x07,0x93,0xbe,0x8d,0x48,0xef,0x4c,0x23,0x92,0x47,0x6a,0x66,0x1a,0x59,0xd5,
+ 0x60,0x1b,0x5f,0x4f,0x95,0xdd,0xae,0x36,0x3a,0x76,0xb3,0x54,0xe6,0xc6,0x87,0xa4,
+ 0xeb,0xaa,0x62,0xcd,0x21,0xa6,0x92,0x9d,0x96,0x9f,0xb6,0x60,0xd0,0x45,0x89,0x56,
+ 0x56,0x17,0xba,0x5f,0xd3,0xea,0xde,0xcd,0x6b,0x8d,0xf1,0xe8,0xfc,0x1f,0x5e,0xfd,
+ 0x16,0xfd,0xb7,0xb6,0xb8,0xf5,0xaf,0x53,0xfb,0x0b,0x58,0x35,0x30,0x36,0x7a,0xbe,
+ 0x56,0x81,0x47,0xd4,0x6e,0xc1,0x25,0xac,0xde,0x16,0x04,0x5a,0x28,0x1b,0x56,0xaf,
+ 0xfa,0x0d,0xee,0x7c,0x9d,0x86,0x27,0xa8,0xea,0x69,0xf3,0x2a,0x75,0xa8,0xa3,0x91,
+ 0x66,0x85,0xb8,0x65,0xff,0x00,0x42,0x3c,0x1f,0xa6,0x29,0x74,0x49,0x0d,0x63,0xc7,
+ 0x53,0x21,0xf9,0x78,0x2c,0x44,0x74,0xe5,0xc8,0x94,0x05,0xf4,0x0d,0x40,0x0d,0xaf,
+ 0x6f,0x40,0x5b,0xea,0x0c,0x09,0xb7,0x18,0xbe,0x74,0x16,0x5f,0x95,0xc7,0x5b,0x56,
+ 0x33,0x19,0xe8,0xa4,0x7a,0xa2,0x3f,0x0c,0xca,0x23,0xb3,0x16,0x21,0x46,0xc4,0x5d,
+ 0x86,0xe0,0x81,0x7f,0xbd,0xf1,0xec,0x74,0x3a,0xfd,0x43,0x40,0x7b,0xc8,0x2c,0xfa,
+ 0x93,0xf7,0x27,0xdf,0xa7,0x07,0x97,0x3e,0x9a,0x37,0x9a,0x6e,0x0f,0xe1,0x07,0x9b,
+ 0x66,0x79,0x7f,0x4f,0x65,0x55,0x79,0xae,0x79,0x52,0x29,0x32,0xfa,0x45,0x0d,0x34,
+ 0xa4,0x5c,0xee,0x6c,0xaa,0xab,0xcb,0x3b,0x1b,0x05,0x51,0xb9,0x27,0x18,0x57,0x4e,
+ 0xf5,0x4e,0x67,0xd7,0x7f,0x12,0x13,0xa8,0xf3,0x55,0x6a,0x5c,0xa7,0x24,0xa5,0xa8,
+ 0xab,0xa0,0xa0,0x46,0x0c,0x20,0x8d,0x22,0xbd,0x89,0xf3,0x23,0x17,0x56,0x77,0x1e,
+ 0x54,0x2a,0xec,0x06,0x24,0xbf,0x8b,0x19,0xea,0xa0,0xeb,0x5e,0x9f,0xca,0xa9,0xe9,
+ 0xe4,0xa7,0xc9,0xe1,0xcb,0x1a,0xaa,0x15,0x13,0x21,0x82,0xa2,0x72,0xe5,0x5a,0x55,
+ 0x45,0x25,0x83,0x22,0xd9,0x2e,0xfe,0xe7,0x48,0x00,0xb1,0x34,0x5f,0x87,0x33,0x76,
+ 0xb2,0x5e,0xa9,0x94,0x6a,0x27,0xfc,0x2b,0xb0,0x36,0xdf,0x54,0xd5,0x31,0x21,0x17,
+ 0xb7,0xf9,0x55,0xb1,0xcc,0xf1,0x8f,0x10,0x7e,0xa8,0x79,0x4d,0xc3,0x7f,0x75,0xd2,
+ 0xf0,0xed,0x23,0x60,0x3e,0x63,0xb2,0x7f,0x64,0xb4,0x77,0x05,0x5a,0x42,0x5c,0xb0,
+ 0x2c,0xcd,0xa4,0x9f,0x1b,0x9f,0xeb,0x81,0xcb,0x8e,0xcc,0xb5,0x35,0x52,0x4d,0x1d,
+ 0x32,0xcc,0xc8,0xaa,0x9a,0x57,0x53,0x05,0xb8,0x55,0xd8,0x91,0x65,0x0c,0xc4,0x9d,
+ 0xbf,0x5c,0x15,0xda,0xa6,0xa9,0xa8,0x3f,0x35,0x1a,0xc9,0xa4,0xed,0xa9,0x8a,0x90,
+ 0x6d,0xc0,0xb1,0x03,0xfd,0x9c,0x56,0x3a,0xaa,0xb1,0xa9,0x12,0x8e,0x9e,0x98,0x35,
+ 0x34,0x02,0x4a,0xc9,0x3b,0x6a,0xc4,0x0f,0xf9,0x04,0x6f,0xef,0xb9,0xc7,0x00,0x37,
+ 0xcc,0x7e,0xd5,0xd7,0xbd,0xad,0xb5,0x23,0x0d,0x67,0xcd,0x0a,0x59,0x68,0xe4,0x9e,
+ 0x64,0x67,0x4f,0x43,0x30,0x1c,0xc7,0xac,0x0e,0x07,0x22,0xc4,0x7e,0xa3,0x9b,0xe2,
+ 0x23,0xab,0xf3,0x6a,0x49,0x68,0xa8,0xe8,0xbe,0x75,0x45,0x78,0xd4,0x92,0x53,0xa0,
+ 0x67,0x93,0xd4,0x7f,0x2e,0xc2,0xc0,0x9d,0xb6,0x3e,0x3e,0x98,0x06,0x17,0xae,0xa8,
+ 0xc9,0xf3,0x11,0x96,0xcc,0x05,0x44,0x0f,0x4a,0xd1,0x87,0x75,0x00,0x05,0xa7,0x5b,
+ 0xdb,0x57,0xa7,0x72,0x6d,0xe2,0xf7,0xc6,0x79,0x9b,0xcf,0x2a,0xd6,0xbd,0x43,0xc2,
+ 0x28,0xe9,0xe6,0x25,0x84,0x4c,0x8f,0xa0,0xdf,0x70,0x05,0xce,0xc0,0x9d,0x5b,0xdf,
+ 0x6f,0x57,0x8b,0x60,0x3a,0x32,0xd7,0x90,0xaa,0x74,0x96,0xce,0x15,0x91,0xb5,0x53,
+ 0xe5,0x92,0xcd,0x91,0x4d,0x59,0x58,0x2a,0x21,0x47,0xa9,0x4a,0x7f,0x4c,0x71,0xc8,
+ 0x84,0x7a,0x24,0x1e,0x4a,0x5c,0x7a,0x88,0x0a,0x0b,0x6c,0x49,0xc3,0x55,0x03,0x37,
+ 0xaa,0xa8,0xa4,0x96,0x47,0x33,0x53,0x66,0x92,0x27,0xcb,0x08,0x0f,0x68,0xc9,0x50,
+ 0x6d,0xa4,0xea,0x2a,0x50,0x0d,0x57,0x53,0xc1,0x37,0x22,0xf6,0x38,0x83,0xa1,0xa8,
+ 0x8f,0x2e,0xad,0xad,0x95,0xe6,0xa8,0xf9,0xa7,0x17,0xa5,0xf9,0x3a,0xa6,0xa7,0x0c,
+ 0xea,0x54,0x82,0x4a,0x58,0x9b,0x58,0x9d,0x88,0x3a,0x93,0x93,0x6d,0xca,0xca,0x24,
+ 0x3a,0xaa,0x28,0xe6,0xcc,0x1a,0x96,0x09,0xcf,0x7a,0xa5,0xe5,0x8c,0x31,0xb6,0xab,
+ 0x99,0x22,0xdc,0x12,0xf7,0x07,0x6e,0x46,0xe4,0x1f,0x18,0x76,0x82,0x30,0xc3,0x95,
+ 0x99,0xc4,0x1c,0xa3,0x28,0xb2,0x38,0xaa,0xb2,0xe9,0x6b,0x60,0xaa,0x9e,0x7a,0xe5,
+ 0x96,0x46,0xf9,0x74,0x8e,0x3f,0x4b,0x05,0xf5,0x46,0x7f,0x99,0x58,0x00,0x46,0xa3,
+ 0xb1,0x27,0x6d,0xc1,0x24,0xba,0x08,0x69,0x33,0x2c,0x9a,0x9e,0x9e,0xa2,0xb3,0xf3,
+ 0xd1,0x98,0x6a,0x22,0xa8,0x8a,0x4f,0xc2,0x94,0x17,0x74,0x20,0x06,0x07,0x72,0xe3,
+ 0xf3,0x6e,0x0a,0xec,0x4e,0xd8,0x84,0x9b,0x2f,0x39,0x7d,0x6e,0x67,0xf2,0x75,0xb1,
+ 0x1a,0x8a,0x3a,0x95,0x82,0x41,0x21,0x1a,0x1e,0x29,0x40,0x22,0x54,0x6b,0xd9,0x45,
+ 0xc6,0xed,0xea,0xb6,0xa0,0x6f,0x63,0x81,0x2a,0x33,0x3a,0x69,0x18,0x9a,0x39,0x21,
+ 0x8a,0x9f,0xb8,0x42,0x2d,0xcc,0xa1,0x08,0x52,0xa2,0xcc,0x6e,0x2c,0x4e,0xf6,0xff,
+ 0x00,0xae,0x2a,0x73,0x1f,0x90,0x4f,0x05,0x11,0x5c,0xab,0x76,0x67,0x97,0xd4,0x65,
+ 0x94,0xb5,0x3d,0x3f,0x52,0x68,0xb2,0xf9,0x12,0x6f,0x9b,0x4e,0xc2,0x3c,0x61,0xc0,
+ 0xb2,0x00,0x9f,0xca,0x41,0x0a,0xad,0xc8,0xb9,0xbd,0xcf,0x8c,0x67,0xf9,0x85,0x0f,
+ 0xca,0x4f,0x51,0x49,0x0c,0xb3,0xcb,0x2c,0x32,0x59,0x52,0x64,0x75,0x93,0x46,0xe6,
+ 0xe6,0xfe,0xf7,0xf1,0x71,0xb8,0xdc,0xf3,0x89,0x8a,0xbc,0xfe,0xa6,0xab,0x2b,0x8a,
+ 0x82,0xa6,0xaa,0x59,0x44,0x04,0x4c,0x19,0x98,0xb6,0xe7,0x73,0xb3,0x1f,0x4f,0x00,
+ 0x01,0x6f,0x7f,0x7c,0x57,0x5e,0x58,0xe4,0x8e,0xa5,0x3e,0x61,0xcc,0x6c,0x7d,0x25,
+ 0x9e,0xec,0x78,0xdc,0x8e,0x6f,0x6d,0xb9,0x00,0x5b,0x0f,0x16,0xfa,0xf8,0x8a,0x86,
+ 0xba,0x26,0x22,0x7a,0x8a,0xc9,0xe1,0xa5,0x11,0x49,0xdd,0x63,0xe8,0x50,0x06,0xb2,
+ 0x2d,0xb2,0x8d,0xef,0xbd,0xc6,0x03,0x9c,0xd4,0x51,0xd4,0x48,0x93,0xc2,0x69,0xa5,
+ 0x46,0x2a,0xe8,0xfb,0x3a,0x10,0x6d,0x62,0x39,0xb8,0xc3,0x85,0x20,0x0b,0x1a,0x19,
+ 0x03,0x28,0x42,0xa1,0x6c,0x75,0x5c,0xf2,0x47,0xbd,0xce,0x0c,0xa0,0x8e,0x91,0xb2,
+ 0xf9,0xd2,0xa2,0x2a,0xc6,0xcc,0xe3,0x91,0x64,0x8e,0xa1,0xa3,0x62,0x91,0x43,0xfc,
+ 0xc4,0xa0,0xfa,0xd8,0xdf,0x70,0x46,0xdb,0x6c,0x71,0x78,0xc2,0x34,0x10,0x22,0x1a,
+ 0x88,0xda,0x91,0x04,0x73,0x05,0x99,0x35,0x29,0x40,0xc4,0xbf,0x3b,0xd8,0x73,0x6b,
+ 0x1d,0xb1,0xf3,0x41,0x58,0x52,0x26,0x9a,0xe9,0x13,0x2f,0xe1,0xb9,0x1a,0x75,0x5c,
+ 0x91,0x70,0x6d,0xf7,0xdc,0xe2,0xf1,0xd1,0x31,0xa1,0x66,0x97,0x2c,0xcd,0xf3,0x19,
+ 0x73,0x79,0x10,0xad,0x0d,0x0d,0x04,0xb0,0x99,0x27,0x77,0xb8,0x75,0x65,0x97,0x4e,
+ 0x82,0xca,0xa2,0xdd,0xb1,0x23,0x1f,0x4a,0xda,0xe4,0x62,0xb7,0x53,0x93,0x56,0x55,
+ 0xd1,0x9c,0xcb,0x33,0x9f,0x2f,0xa0,0x06,0x46,0xa6,0x45,0x92,0x55,0x89,0xd4,0xc4,
+ 0x2c,0x50,0xc2,0x9e,0xa5,0xb0,0xb0,0xb9,0x00,0x13,0xb5,0xcb,0x62,0x03,0x7c,0x23,
+ 0x4a,0x07,0xb2,0x62,0x31,0xd8,0x2c,0x8e,0x7c,0x01,0x7b,0x8f,0x16,0xf2,0x4e,0x0d,
+ 0xa5,0x9e,0xa0,0x21,0x8e,0x18,0x13,0x52,0x42,0xea,0xd2,0xac,0x2a,0xcc,0xaa,0xc6,
+ 0xf7,0x26,0xc3,0x72,0x49,0x17,0x24,0x9b,0x1b,0x0b,0x0c,0x7b,0x17,0xcd,0x51,0xcf,
+ 0x52,0xb4,0x93,0x4c,0x62,0x74,0x29,0x23,0x22,0x08,0xd9,0x91,0xb9,0x1b,0xdc,0xad,
+ 0xc6,0xdf,0xd3,0x04,0xc2,0x8f,0x4b,0x14,0x72,0x35,0x34,0xf0,0x51,0x4f,0x12,0x8e,
+ 0xd2,0xb1,0xbd,0x43,0x0d,0x4b,0xa8,0x1b,0x02,0x45,0xc9,0x06,0xd7,0xf3,0x63,0xe0,
+ 0x4b,0x46,0xd2,0xb2,0x45,0xc9,0xd2,0xad,0x1b,0x30,0x06,0x7a,0x78,0xc6,0xb9,0x23,
+ 0x91,0xc4,0x28,0xfb,0x7e,0x52,0x40,0xd4,0x77,0xbf,0x16,0x3b,0x6c,0x0e,0x0f,0xa9,
+ 0xcb,0x97,0x4d,0x7c,0xab,0x4a,0xf4,0xf6,0x97,0xb9,0x45,0x10,0x8c,0x31,0x0a,0xf7,
+ 0x6d,0xd9,0x01,0xd6,0xc3,0x48,0x16,0x24,0x05,0xdc,0xf3,0x71,0x83,0x0f,0x66,0x16,
+ 0xa4,0x9e,0x4a,0x55,0x65,0xa6,0x86,0x15,0x68,0xe4,0x20,0x84,0xd0,0x49,0xb1,0x0d,
+ 0xc7,0xeb,0xf5,0xbd,0xf6,0xc3,0x99,0xe4,0x93,0x65,0xed,0x2a,0xc0,0xd4,0x91,0xb4,
+ 0x32,0x19,0x17,0xfc,0x39,0x95,0x0a,0x92,0xc4,0x30,0x91,0x2d,0xb1,0xb0,0xf0,0x00,
+ 0x20,0x13,0x62,0x0e,0x09,0xba,0xb4,0x2d,0x6d,0xbf,0x14,0xa3,0xe9,0xda,0xee,0x87,
+ 0x56,0xcd,0x23,0xaa,0x86,0x4a,0x69,0x25,0x6a,0x6a,0x9a,0x79,0x94,0xcf,0x14,0x93,
+ 0x6c,0xf1,0x95,0x73,0xf8,0x91,0x13,0xfc,0x80,0xad,0xbf,0xcd,0xb1,0x26,0xb7,0xd0,
+ 0xb9,0xdd,0x34,0x72,0x57,0xcf,0x9c,0x85,0xa0,0xa5,0x92,0x9d,0x3f,0xc3,0x6a,0x6b,
+ 0x63,0xec,0xac,0xf4,0xd0,0x48,0x43,0xa3,0x76,0xce,0x89,0x24,0x0a,0xda,0x83,0x32,
+ 0xb3,0x0d,0xac,0x40,0x37,0xc2,0xbe,0x2c,0x3d,0x3d,0x3e,0x5f,0x54,0x90,0x9a,0x73,
+ 0x25,0x5e,0x6c,0x12,0xb0,0xce,0x19,0xdc,0x24,0x63,0x5a,0x22,0x69,0x5d,0x48,0x1c,
+ 0xab,0x5b,0x41,0xd2,0x47,0x36,0x23,0x6a,0xaf,0x4f,0x64,0xd9,0x4e,0x6b,0x57,0x9b,
+ 0x4b,0x55,0x51,0x49,0x96,0x64,0x82,0x99,0xaa,0xc9,0xaa,0xa9,0x34,0xb0,0xcd,0x18,
+ 0x1f,0xf2,0xe3,0xd4,0xa0,0x99,0x08,0x2a,0xab,0xa4,0x12,0x4a,0xee,0x79,0xc7,0x33,
+ 0x0f,0x8b,0xad,0x7d,0xd4,0x60,0x73,0x9c,0x00,0xe5,0x1b,0xd6,0xdd,0x6b,0x4f,0xd7,
+ 0x31,0xc1,0x57,0x55,0x94,0x99,0x28,0xf2,0xd9,0xa7,0x8a,0x9e,0xa5,0x04,0x51,0x55,
+ 0x1a,0x6b,0xaf,0x64,0x48,0xa4,0x90,0x10,0x1b,0xb1,0x16,0x20,0xb1,0x61,0xe9,0xf3,
+ 0x37,0xd2,0x7d,0x63,0x2e,0x6b,0x3d,0x21,0xea,0x3c,0xab,0x30,0x8e,0xb5,0x23,0x5a,
+ 0x79,0xe6,0xa4,0x89,0xe1,0x86,0x54,0xee,0x5d,0x4b,0x32,0x06,0x24,0x9d,0x62,0xea,
+ 0xc0,0xad,0xc2,0x90,0x31,0x96,0xd7,0xe6,0xbd,0x3d,0x45,0x99,0x47,0x36,0x5d,0x92,
+ 0x35,0x0c,0xb4,0xb5,0x05,0xc4,0x15,0xb2,0xc9,0x50,0xac,0x6e,0x34,0xa4,0xa1,0x82,
+ 0xfa,0x39,0x24,0x15,0x37,0x02,0xde,0x70,0xff,0x00,0x50,0xe6,0xb4,0x90,0xbd,0x1d,
+ 0x6f,0x4e,0xe7,0x94,0x52,0x85,0x60,0x63,0xa6,0xcb,0xa9,0xa6,0xa3,0x92,0x09,0xb6,
+ 0x67,0x72,0x2c,0x05,0xaf,0x6d,0x27,0x51,0xe2,0xde,0x31,0x61,0x81,0xa5,0xa1,0x80,
+ 0x2b,0x0b,0x76,0x9e,0x6d,0x74,0xd6,0x5b,0x1c,0x90,0x66,0x55,0xd5,0x2d,0xd5,0xd5,
+ 0x14,0x48,0xbf,0xf0,0xf0,0xa3,0xc0,0x8c,0xca,0xc0,0x17,0x69,0x15,0xf9,0x72,0xb6,
+ 0x24,0x01,0x7d,0x9c,0xdc,0x90,0x06,0x2a,0x7d,0x6f,0xd0,0xb0,0xd6,0x53,0xcb,0x5d,
+ 0xf2,0xb4,0x0c,0xdf,0xe2,0xb4,0x6e,0x33,0x4c,0xbe,0x0e,0xc4,0xb5,0x46,0x76,0x2a,
+ 0xc2,0x5d,0x2e,0x55,0x6f,0xf8,0x4e,0x00,0x5b,0x5f,0x56,0x92,0x2e,0x46,0x2a,0xdd,
+ 0x01,0xd5,0xf4,0xdd,0x3f,0xd2,0x47,0x2f,0xa8,0xa3,0xab,0xcf,0xa9,0xab,0xa0,0x86,
+ 0x78,0xe8,0x5e,0x38,0xe5,0xec,0xc8,0xbb,0x1f,0x55,0x8d,0x96,0xdb,0xad,0xd4,0x1f,
+ 0x17,0xda,0xf8,0xd3,0xf2,0x8e,0xbf,0xa3,0xa0,0x35,0x33,0xe5,0xbd,0x27,0x9f,0x49,
+ 0x4f,0x53,0x1d,0xd2,0x21,0x97,0x2a,0x6a,0x3a,0xf5,0xe9,0xee,0x33,0x01,0x75,0x56,
+ 0x36,0xff,0x00,0x28,0xb1,0x16,0xf3,0xca,0x31,0xcb,0x0c,0x96,0xd1,0x7f,0x60,0x96,
+ 0xc1,0xc2,0x0d,0xa8,0x85,0x6d,0x55,0x73,0xd2,0xc5,0xdb,0xa9,0x7a,0xc7,0x92,0x1a,
+ 0x84,0x76,0x12,0x92,0x03,0x21,0xb2,0xb3,0x06,0x2b,0xb5,0x81,0x02,0xc4,0x7f,0x9a,
+ 0xdb,0x54,0x2a,0x3e,0x20,0x49,0x55,0x4d,0x63,0x1c,0x52,0x24,0xec,0x88,0x59,0x67,
+ 0xed,0x29,0x5e,0x55,0x02,0xb0,0xd4,0x1a,0xde,0xc6,0xe0,0xee,0x47,0x8c,0x4d,0xcf,
+ 0xf1,0x06,0x7c,0xb2,0xa4,0x1a,0x4e,0x9d,0x49,0x2b,0xe5,0x82,0x34,0x30,0x36,0x5f,
+ 0x2a,0x0a,0x73,0xdd,0x66,0xb3,0x3e,0x9d,0x7b,0x2e,0x9e,0x01,0x0c,0xce,0xc4,0x00,
+ 0x4e,0x03,0xcf,0x7e,0x20,0xa4,0x86,0xb6,0x29,0xfa,0x2a,0x1a,0xd8,0x6a,0xa6,0x8a,
+ 0x6b,0xcf,0x4b,0x2a,0x47,0x51,0x2c,0x67,0xd2,0xec,0x5d,0x4b,0xab,0x00,0x81,0x6e,
+ 0x34,0x96,0x00,0x06,0xda,0xd8,0xbd,0xa1,0xc4,0xfc,0x51,0xdf,0xd4,0x24,0x18,0x5a,
+ 0x2f,0x4f,0x66,0xf9,0xaf,0x4f,0x64,0x75,0x44,0xe5,0x4d,0x57,0x99,0xac,0x2a,0x69,
+ 0xbb,0x92,0xbd,0x4a,0xc5,0x33,0xa5,0x95,0x2e,0x58,0x69,0x55,0xb0,0x3c,0x69,0xdb,
+ 0x8f,0x50,0xbe,0x49,0x55,0x9d,0xf5,0x57,0x59,0xf5,0x17,0x51,0x56,0x4e,0xc6,0x6c,
+ 0xcf,0x28,0x55,0x8a,0xa5,0x22,0x04,0x2c,0x69,0x1b,0xe9,0x40,0x06,0xd6,0x25,0x95,
+ 0x6d,0x61,0x73,0xb1,0xbd,0xee,0x70,0xe4,0x5d,0x69,0xd4,0x39,0x87,0x50,0x31,0x8f,
+ 0x2c,0x14,0x14,0xec,0xd2,0x34,0xb4,0x60,0xb5,0x82,0x1b,0x00,0x08,0x25,0x2e,0x03,
+ 0x0f,0x1e,0x01,0xc1,0x94,0xdd,0x5d,0xd5,0x09,0x54,0x2a,0x5f,0x27,0x53,0x51,0x26,
+ 0xd2,0x3c,0x5a,0x53,0x58,0x25,0x75,0x10,0x55,0xb9,0x24,0x03,0x7d,0xfe,0xe7,0x8c,
+ 0x68,0x63,0xf5,0x4c,0x88,0xb1,0xa2,0xc1,0x37,0x5e,0xaa,0x16,0xb5,0xce,0xdd,0x59,
+ 0xe1,0x47,0x67,0xb5,0xb9,0xf5,0x6c,0x59,0x6c,0x59,0xfc,0xb3,0x54,0x1a,0x1a,0x63,
+ 0x4b,0x47,0x24,0xab,0x64,0x8e,0x1d,0x5a,0xac,0x1e,0xdb,0x80,0x5b,0x7e,0x4a,0x83,
+ 0x6f,0x18,0xd1,0x7a,0x3b,0xa7,0xe9,0xf2,0x0e,0x88,0xea,0xda,0xbc,0xf9,0xd8,0x56,
+ 0xc7,0x5b,0x05,0x0c,0x50,0xa3,0x90,0x82,0x55,0x1a,0x94,0x11,0xe6,0xcd,0x23,0x39,
+ 0x3c,0x1d,0x2b,0xfa,0xd3,0xeb,0xb3,0xbe,0xb0,0xcd,0x65,0xae,0xef,0x52,0x4b,0x0e,
+ 0x56,0xcc,0xae,0xb4,0xbf,0x24,0x18,0x2b,0x2d,0xad,0xa4,0xb3,0x05,0x46,0x23,0x9f,
+ 0x16,0x3b,0xec,0x6d,0x8b,0x2e,0x63,0xd6,0xbd,0x4c,0x29,0xd6,0x2c,0xb3,0x20,0xcb,
+ 0xe7,0x8d,0xd9,0x84,0xd1,0xd5,0xd6,0xc5,0x12,0xbc,0xa2,0x38,0xc7,0x74,0x11,0x31,
+ 0x07,0x65,0x23,0x62,0x06,0xc3,0x8b,0xe1,0xdd,0x36,0xa0,0xed,0x0e,0x6f,0xcf,0x3f,
+ 0xca,0xb6,0x32,0x1b,0x78,0x4c,0x54,0xc5,0x22,0x30,0x90,0xc4,0xda,0x25,0x46,0x91,
+ 0x48,0x5b,0xfa,0x16,0xde,0xab,0x78,0x16,0x37,0x3f,0x42,0x0f,0x9c,0x43,0x66,0xf9,
+ 0x34,0x75,0x28,0x95,0x35,0x89,0x1c,0xeb,0xa9,0x91,0x10,0xb9,0x56,0x02,0x44,0xb5,
+ 0xc8,0xb8,0x3b,0x80,0x47,0xd3,0xf5,0xc1,0x99,0x8e,0x7d,0xd5,0x92,0x52,0xe5,0xc3,
+ 0x2f,0xf9,0x5a,0x4c,0xd4,0x34,0x8b,0x2b,0x45,0x14,0x45,0x12,0x6d,0x5a,0x75,0x77,
+ 0x9e,0x5d,0x2c,0x96,0x0b,0xa7,0x4d,0x88,0xb6,0xf7,0x18,0x81,0xcd,0x33,0x5e,0xb0,
+ 0xcd,0x2a,0x57,0xe6,0xe3,0xa6,0xee,0xc6,0xc5,0x99,0xa3,0x11,0xc8,0xf3,0x29,0x3e,
+ 0x9f,0x51,0x6f,0x72,0x48,0x02,0xdb,0x1f,0xa6,0x1e,0x39,0x25,0x2e,0xbd,0xb4,0x89,
+ 0x7d,0xe0,0x84,0xfd,0x2d,0x05,0x14,0x51,0xce,0x8d,0x04,0x3f,0x2f,0x50,0x80,0x49,
+ 0x1c,0xad,0x75,0x91,0x80,0x00,0x0d,0xcf,0x20,0x28,0xe3,0xdb,0x14,0x2e,0xb5,0xa0,
+ 0x34,0xf5,0x62,0x28,0xe2,0x99,0xd6,0x55,0x88,0x40,0xcd,0x19,0x11,0x85,0xb1,0x05,
+ 0x4e,0xc2,0xfe,0x0e,0xcd,0x7f,0x1a,0x76,0xc4,0xcd,0x64,0x1d,0x4f,0xa5,0x98,0xc7,
+ 0x52,0xf0,0x30,0x65,0xd6,0x0d,0x3a,0x05,0x5b,0x8f,0x50,0x1a,0xce,0xe1,0x89,0x07,
+ 0x7b,0x7d,0xae,0x30,0x56,0x5f,0x43,0x9a,0x4f,0x01,0xff,0x00,0x1f,0xa4,0x82,0x62,
+ 0x1c,0x2a,0x29,0x95,0x18,0xe9,0xd3,0x6e,0x03,0x5a,0xe4,0x72,0x7f,0xae,0xf8,0xbc,
+ 0x6f,0x73,0xac,0x84,0xbb,0x81,0x1b,0x69,0x51,0xa9,0xf2,0xe1,0xd4,0x34,0xe1,0x29,
+ 0xa8,0xe3,0xcb,0x24,0xa5,0x8a,0x38,0x63,0x82,0x2a,0x8e,0xe3,0x4f,0x3a,0x80,0xa3,
+ 0xf0,0x4d,0xe5,0x0e,0xf6,0x66,0xb8,0xb2,0x2d,0xac,0x00,0xc4,0x4d,0x6e,0x55,0x5b,
+ 0x43,0x97,0xfc,0xf4,0x94,0xeb,0x40,0x76,0x98,0x99,0x1e,0xcd,0x2c,0x65,0x8a,0x82,
+ 0x82,0xfb,0x0b,0xa9,0xb8,0x36,0xde,0xc7,0xf9,0x85,0xfa,0x2b,0xa9,0x23,0xe8,0xf9,
+ 0xfe,0x05,0x41,0xd3,0xd9,0x14,0x39,0x75,0x1f,0x59,0x53,0x53,0xd3,0x3b,0x43,0x4f,
+ 0x44,0xd1,0xd4,0x34,0xe9,0x31,0x33,0x09,0x2a,0x0e,0xa5,0x60,0x51,0xc8,0xb8,0x71,
+ 0x73,0xa4,0x5e,0xc0,0x8c,0x64,0x05,0xfa,0xf7,0xe5,0xc5,0x13,0x66,0x59,0xa5,0x46,
+ 0x5e,0x82,0x35,0x58,0x25,0xce,0x3b,0xb0,0x88,0xc0,0x3b,0x69,0x67,0x2b,0x65,0x0a,
+ 0xb6,0x5b,0x60,0xb0,0x39,0xd6,0x48,0xac,0xf5,0x56,0x96,0x30,0x0c,0x9b,0x54,0x3a,
+ 0x1a,0x90,0x95,0xb5,0x0d,0x0c,0x7f,0xf0,0xdd,0xb7,0x90,0x32,0xb6,0x9b,0x10,0xb7,
+ 0x24,0x6c,0x45,0xc5,0xfc,0xed,0xbe,0x09,0xad,0xce,0x29,0x6a,0x74,0xd4,0xda,0x63,
+ 0x98,0xbc,0xc1,0xcc,0x61,0x0b,0xab,0x21,0xd8,0x2b,0x02,0x74,0xf8,0x16,0xb6,0xfb,
+ 0xfd,0x31,0x37,0x92,0x74,0x5e,0x6f,0x0f,0x50,0x51,0x0c,0xf3,0x29,0x92,0x6c,0x9c,
+ 0xce,0xaf,0x56,0x21,0x99,0x48,0x28,0x77,0x20,0x30,0x60,0x4f,0x8b,0x8d,0xb7,0x18,
+ 0x99,0xce,0x7a,0x36,0xa7,0xa7,0xf3,0xe9,0x92,0x83,0x29,0x5c,0xf2,0x86,0x9e,0x56,
+ 0x31,0xf6,0x64,0x52,0x93,0x12,0xaa,0x55,0x99,0xc1,0xd5,0xe9,0x66,0x20,0x81,0x63,
+ 0xb1,0xb1,0x1c,0xe1,0xb0,0x64,0xdb,0x5d,0x3e,0x8a,0x82,0x3a,0xaa,0x44,0x35,0xdd,
+ 0xf8,0x92,0x93,0xe5,0x74,0xcd,0x24,0x97,0x89,0x8b,0x6a,0x31,0x9f,0x37,0x5b,0x73,
+ 0x6d,0xb9,0xdb,0xf4,0xc4,0x4c,0xf3,0x40,0xd2,0x22,0x46,0x04,0x8d,0xe9,0x05,0x0d,
+ 0xf7,0x36,0xdb,0x6f,0xaf,0x9f,0x6c,0x58,0x33,0xcc,0x83,0x3c,0xa0,0xa7,0x6a,0x8a,
+ 0xcc,0xae,0xae,0x90,0x77,0xc8,0x32,0x0d,0xd0,0xea,0xbd,0x90,0x58,0x92,0x47,0x23,
+ 0xde,0xc3,0x06,0x65,0xff,0x00,0x0d,0xb3,0xbe,0xa4,0xa5,0x59,0x3a,0x53,0x2e,0xae,
+ 0xae,0xcc,0xa2,0x9a,0xf5,0x34,0xa9,0x09,0x42,0x23,0x22,0xeb,0x20,0x0c,0x05,0x80,
+ 0x21,0x94,0xee,0x6f,0xb1,0xf2,0x70,0xe1,0xbb,0x4a,0x80,0x5a,0xaa,0xad,0x61,0x85,
+ 0x6f,0x49,0x14,0x71,0x8f,0xcc,0x48,0x16,0x24,0xdc,0x7f,0xfe,0xac,0x3e,0xd8,0x91,
+ 0xa1,0xcc,0xf3,0x0c,0xaa,0xb5,0x1e,0x8e,0x55,0x8a,0x51,0x19,0x00,0xa8,0x25,0x55,
+ 0x49,0x17,0x52,0x0d,0xc1,0x1c,0x7f,0xda,0xd8,0xb6,0x27,0xc0,0x8f,0x89,0x75,0x70,
+ 0xc8,0xa9,0xd1,0xd5,0xe0,0xac,0xaa,0xf2,0x6b,0x28,0x8a,0x43,0x1e,0x43,0x16,0xb1,
+ 0xdf,0x73,0x6d,0x80,0x17,0x3b,0x71,0x66,0xa3,0xfe,0x1e,0xba,0xe1,0x2a,0x60,0x35,
+ 0x79,0x6e,0x5e,0xd4,0x8a,0x43,0x48,0xe3,0x36,0x86,0xcd,0x6d,0x3e,0x9b,0xdc,0xef,
+ 0x72,0x41,0x3b,0x81,0xb9,0xf0,0x2f,0x54,0x92,0xc4,0xdc,0x39,0xc3,0xee,0x89,0x00,
+ 0x72,0x84,0xca,0xf2,0x8c,0x9a,0x7c,0x82,0x8e,0xb7,0x3e,0x6a,0x0a,0x91,0x3e,0x64,
+ 0xd4,0x95,0xf4,0xd9,0x7a,0x45,0x0d,0x54,0x09,0x24,0x41,0xa3,0xaa,0x57,0x6d,0x45,
+ 0x42,0xc8,0x40,0x2c,0x14,0xad,0xb5,0x70,0x6f,0x8a,0xad,0x1e,0x5d,0x1d,0x34,0x46,
+ 0x21,0x49,0x1b,0xd7,0x24,0xa2,0x20,0xee,0x0e,0xbd,0x7c,0x8d,0x2a,0xdb,0x93,0x6b,
+ 0x9d,0xb8,0xbf,0x82,0x77,0xd3,0xeb,0xfe,0x0a,0xf5,0xcd,0x4d,0x05,0x54,0x47,0x2f,
+ 0xc8,0x7b,0xf3,0x5d,0x51,0xc6,0x6c,0xa6,0x48,0xaf,0x62,0x10,0x39,0xe4,0x7a,0x02,
+ 0x91,0xc1,0xbf,0xdc,0x89,0x7c,0xb7,0xe0,0x07,0x51,0x4f,0x06,0x63,0xf3,0xd9,0x86,
+ 0x5f,0x4d,0x55,0x99,0x50,0xc1,0x1c,0x69,0x21,0x23,0xe5,0x99,0x98,0x19,0x43,0x6a,
+ 0x89,0xaf,0x62,0xaa,0xa0,0xa3,0x29,0xb1,0x36,0x36,0x04,0x15,0x6e,0xa2,0x10,0x28,
+ 0xb8,0x25,0xa2,0x78,0x58,0xb5,0x2e,0x47,0x5f,0x9a,0x4f,0x48,0x20,0xa6,0x9c,0xcb,
+ 0x54,0xe2,0x38,0x74,0x45,0xac,0xc8,0xcd,0xf9,0x41,0x6b,0xd8,0x5e,0xf7,0xde,0xd6,
+ 0x1b,0xe2,0xd6,0x32,0xb3,0x97,0xe4,0xf4,0xf5,0xd4,0x52,0xe5,0x95,0xb4,0xdd,0xf8,
+ 0x23,0xab,0xa8,0x90,0x3b,0x4b,0x97,0x86,0x32,0x81,0x4e,0x23,0x92,0x44,0x25,0x1c,
+ 0x6b,0x91,0x8a,0x29,0x17,0xd0,0x19,0x81,0x36,0x37,0x6c,0xbf,0xe0,0x07,0x5a,0xc7,
+ 0x57,0x1c,0xa6,0xbf,0xa6,0x29,0xe6,0x81,0x3b,0x4a,0x64,0xcc,0xa5,0x50,0x81,0x3d,
+ 0x0d,0x6b,0x43,0xc6,0xfe,0x92,0x4e,0xd7,0xe7,0x03,0xc5,0xfc,0x3a,0xf5,0x5f,0xcd,
+ 0x49,0x4f,0x3d,0x7f,0x4b,0x53,0xac,0x31,0xc9,0x0a,0x46,0xd9,0x8c,0xc4,0xe8,0x2c,
+ 0x40,0xff,0x00,0xd2,0x17,0xde,0xdb,0xb1,0xb1,0xd8,0x90,0x4e,0x2c,0x1a,0x88,0xbf,
+ 0xf4,0x13,0x88,0xdd,0xd9,0x50,0x6a,0x3a,0x6e,0xa9,0x3a,0x45,0xb3,0xea,0x4c,0xd2,
+ 0x39,0xe8,0xe2,0xcd,0x2a,0x32,0xe9,0x95,0xeb,0x4a,0x4b,0x51,0xa6,0x01,0x51,0x1b,
+ 0x0a,0x42,0xba,0x95,0x42,0xac,0x80,0x16,0x36,0x2d,0x65,0xf4,0x9e,0x43,0xae,0xd3,
+ 0x4d,0x0d,0x04,0x55,0x33,0xb6,0x6c,0x69,0x03,0x47,0xac,0x37,0xa2,0x0d,0xc0,0x54,
+ 0xd5,0x72,0x0a,0x85,0x0a,0xc1,0x94,0xdb,0xd6,0x54,0xa8,0x2b,0xbe,0x93,0x57,0xfc,
+ 0x3d,0xf5,0xec,0x8c,0x63,0xf9,0x6e,0x93,0x8a,0x5a,0x5e,0xdf,0x75,0xe1,0xcd,0x57,
+ 0xbb,0x2b,0x2f,0x70,0xab,0xbb,0xdb,0x92,0xae,0x41,0x3b,0x5f,0x42,0x92,0x3c,0x96,
+ 0xf2,0x5f,0xe1,0x97,0xaa,0xea,0xea,0x22,0x4c,0xde,0xa3,0x25,0xca,0xa8,0x22,0x0a,
+ 0x66,0x92,0x1c,0xc5,0x27,0x72,0xe9,0x7b,0x02,0x80,0x5c,0xde,0xe4,0x91,0xbd,0xc0,
+ 0x1e,0x71,0x0e,0xa2,0x1a,0xfe,0xa0,0x98,0x44,0xf3,0x80,0x10,0x59,0x8f,0x4a,0x66,
+ 0xd9,0xee,0x5b,0x41,0x40,0xf9,0xe5,0x6f,0x50,0xac,0x75,0x0d,0x5a,0x20,0x93,0x2b,
+ 0x58,0x5a,0xe5,0x34,0x10,0x1d,0x24,0x62,0xb1,0x80,0x09,0x03,0x48,0xe4,0xec,0x0e,
+ 0x34,0x1c,0x93,0xa3,0xba,0xc2,0x6c,0xb2,0x1c,0xbf,0x29,0xa1,0xcd,0x06,0x4f,0x04,
+ 0x04,0x22,0x24,0x4d,0x04,0x2c,0x1c,0xdd,0xc0,0x4d,0x81,0x52,0x49,0xba,0xf2,0x45,
+ 0xaf,0x7b,0x03,0x8e,0xab,0x35,0xf5,0x0a,0xaa,0xb1,0x88,0xe2,0x8e,0xc0,0x5a,0x08,
+ 0x54,0x59,0x47,0x80,0x6d,0x8f,0xa5,0xcc,0xea,0x5f,0x53,0x77,0xa6,0x66,0x1e,0xa1,
+ 0xf8,0x83,0xf4,0xfe,0xa3,0x1e,0x71,0xfa,0xe0,0x45,0x06,0xae,0x88,0xd2,0xc6,0xde,
+ 0x72,0xb1,0x28,0x3a,0x63,0xad,0xea,0x44,0xf1,0x66,0xcb,0x0d,0x5c,0x46,0x25,0x82,
+ 0x78,0xaa,0x28,0xfb,0x82,0x68,0x41,0x3a,0x75,0x92,0x7d,0x5f,0x99,0xac,0x05,0xc8,
+ 0xb0,0x1b,0x79,0x6b,0x3b,0xf8,0x33,0x3f,0x55,0x4f,0x4d,0xff,0x00,0x88,0x3a,0x6e,
+ 0x86,0xa8,0x68,0x54,0x92,0x45,0xa4,0x85,0x2a,0x1f,0x4b,0x29,0x1a,0xa5,0x1e,0xa0,
+ 0xa0,0x0d,0x21,0x41,0x16,0x17,0xdf,0xc6,0x37,0x29,0x2b,0x0d,0x4b,0x05,0x62,0x51,
+ 0x80,0xf0,0x77,0x17,0x1b,0xef,0x80,0x64,0x91,0x98,0x01,0xdd,0x74,0xb3,0x10,0x08,
+ 0x62,0x6f,0xec,0x0f,0xfa,0x63,0x27,0x9e,0xe0,0x6d,0xa2,0xbe,0x89,0xfc,0xa8,0xc1,
+ 0x14,0xd5,0x91,0x52,0x7f,0x0c,0xdd,0x39,0x48,0xd1,0xb4,0x54,0x73,0x50,0xcb,0x1e,
+ 0xf1,0x98,0x9e,0xe2,0x32,0x41,0xb8,0x20,0x92,0x0f,0x3e,0x79,0xdb,0xda,0xf8,0x36,
+ 0xaf,0xf8,0x7b,0xca,0x33,0x08,0x04,0x35,0x95,0x95,0xd2,0x15,0x20,0xc0,0xe9,0x65,
+ 0x28,0x00,0xb7,0x3b,0x82,0x49,0xb9,0xbf,0x3b,0xfe,0xfa,0xa4,0x71,0x8e,0xe2,0xca,
+ 0xf5,0x9a,0x0d,0xc2,0x82,0x49,0x20,0x01,0xb7,0x1b,0x6f,0xcf,0xf4,0xc3,0x92,0xce,
+ 0x14,0xd8,0xcb,0x1b,0xee,0xda,0x75,0x0e,0x7e,0xb6,0xff,0x00,0x7c,0x61,0xff,0x00,
+ 0x55,0x28,0xfe,0xe5,0x36,0x44,0x6e,0xc5,0x2c,0x7e,0x9b,0xf8,0x7e,0xca,0xf2,0xe9,
+ 0x92,0x5e,0x9f,0xaf,0xaf,0xcb,0xe5,0xee,0x96,0x69,0x26,0x91,0x9c,0xb2,0x8e,0x14,
+ 0xe9,0x2b,0xb5,0xcd,0xfe,0xb8,0x32,0x6f,0x83,0xe1,0xca,0x41,0x2f,0x52,0x66,0x55,
+ 0x12,0xbd,0x9b,0xbb,0x24,0xec,0xc2,0xf7,0x26,0xd7,0xbf,0x91,0xfb,0x58,0x7b,0x63,
+ 0x54,0x35,0x4d,0x33,0x15,0x6d,0x3a,0x85,0xbf,0x29,0xd4,0xa6,0xd7,0xdf,0xfd,0x70,
+ 0xd0,0xa9,0x75,0x4b,0xc8,0x80,0x84,0xdf,0x49,0x50,0x07,0xdf,0x7c,0x0f,0xd6,0x4c,
+ 0x78,0x71,0x44,0x47,0x10,0xc0,0x16,0xb2,0xf8,0x3e,0x03,0x89,0x2a,0x0a,0xc5,0xd4,
+ 0x52,0x11,0x19,0x2b,0x51,0x2b,0xa3,0x6a,0xa9,0xb8,0xb8,0x20,0xdc,0x90,0x05,0xed,
+ 0x62,0x7c,0x7d,0x70,0xdb,0x7f,0x0f,0xff,0x00,0x2d,0x1c,0xa4,0xe7,0x94,0xd3,0x4d,
+ 0x24,0xa4,0xac,0xc6,0x9d,0x95,0xc5,0xce,0xfc,0x35,0xb8,0x24,0xf1,0xc8,0xfd,0x31,
+ 0xb0,0xad,0x76,0xa8,0xec,0x8c,0x16,0xdc,0x70,0x07,0x36,0xd8,0xff,0x00,0x4c,0x30,
+ 0xb5,0xd2,0x95,0x60,0xa1,0x92,0x4d,0xcd,0xb7,0x25,0x87,0x37,0xdb,0xeb,0x87,0xfd,
+ 0x4c,0xc4,0x7f,0x52,0xb0,0xc5,0x1d,0x70,0xb2,0xf3,0xfc,0x3f,0x65,0x33,0x18,0xbe,
+ 0x73,0x39,0x9d,0x91,0x17,0x6e,0xd5,0x30,0x8e,0xe2,0xfb,0xee,0xc4,0x90,0x76,0xe7,
+ 0xeb,0x84,0x0f,0x80,0x59,0x74,0x35,0x31,0xcd,0x06,0x64,0xd4,0xc9,0x0a,0x9e,0xd2,
+ 0xf6,0x15,0x98,0x1b,0xec,0x7d,0x88,0xb5,0xad,0xb7,0x8c,0x6a,0x52,0x57,0x56,0x10,
+ 0x77,0xd4,0x8b,0xb2,0x15,0x17,0x36,0xb7,0xfb,0xfd,0xb0,0xd4,0x72,0xcc,0xf2,0x1b,
+ 0x33,0x2b,0x5e,0xdb,0x83,0x7f,0xb5,0xbf,0x5c,0x21,0xd5,0xcd,0xdd,0x03,0x1c,0x7d,
+ 0x96,0x4e,0xff,0x00,0x02,0x69,0x27,0xab,0x81,0x9b,0x39,0xa9,0xab,0x58,0xed,0xe8,
+ 0x78,0x59,0x6f,0xc5,0xc0,0xde,0xeb,0x82,0xe5,0xf8,0x0f,0x43,0x24,0x2b,0x1d,0x66,
+ 0x79,0x53,0x1e,0x8d,0x25,0x34,0x52,0xa9,0x36,0x17,0xbd,0xf7,0xdc,0x92,0x79,0x38,
+ 0xd3,0x0c,0xf2,0xb3,0xe8,0x91,0xae,0xcc,0x80,0xdd,0x9b,0x7b,0xde,0xf7,0xbf,0x8c,
+ 0x2d,0xd2,0x49,0xae,0x23,0x3a,0x3d,0x57,0x37,0x37,0xd2,0x7f,0xdf,0xe9,0x83,0xfa,
+ 0xe9,0x4f,0xf7,0x25,0x11,0x44,0x73,0x4b,0x32,0x8f,0xf8,0x78,0xc8,0x3b,0x7f,0x8b,
+ 0x9a,0x56,0xcc,0xec,0xba,0x47,0xfc,0x2c,0x48,0x37,0xde,0xe2,0xc2,0xe4,0xdf,0xdf,
+ 0xd8,0x7b,0x0c,0x2e,0x93,0xf8,0x7a,0xe9,0xd8,0xe4,0x67,0xcc,0x33,0x3a,0xfa,0x94,
+ 0xb1,0x58,0xc2,0xc7,0x1a,0x15,0x06,0xfb,0x12,0x06,0xff,0x00,0xf6,0xbf,0xd3,0x1a,
+ 0x6b,0xd2,0x31,0x75,0x78,0xe6,0x91,0x80,0xb8,0x3b,0xe1,0x0c,0x9f,0x2e,0x17,0x5b,
+ 0x11,0xaa,0xc6,0xc0,0x93,0xab,0x6b,0x8b,0x0f,0xb6,0xff,0x00,0x6b,0xe1,0xbf,0x59,
+ 0xa8,0x3c,0x39,0x37,0x95,0x17,0x34,0xb3,0xc9,0x7f,0x87,0xee,0x92,0x77,0x95,0x23,
+ 0xaf,0xcc,0x61,0x33,0xa8,0x50,0x54,0xa0,0x31,0x8e,0x75,0x01,0x6b,0x13,0xb0,0xe7,
+ 0xc6,0x1e,0x9b,0xf8,0x7a,0xe8,0x57,0xa5,0x11,0x4a,0xf9,0x97,0x7c,0xa9,0x3d,0xd8,
+ 0xe6,0xdf,0x57,0x3a,0x82,0xf1,0xb6,0xfb,0x0f,0x7c,0x68,0x14,0xf3,0xc1,0x50,0xb1,
+ 0xf6,0x2a,0x96,0x45,0x70,0x1e,0x32,0xad,0x7b,0x8b,0x80,0x3e,0xdb,0xfb,0xfe,0xb8,
+ 0x1e,0x3a,0xf8,0x64,0x69,0x74,0x16,0x91,0xa2,0x6b,0x34,0x76,0xb1,0x6e,0x2e,0x41,
+ 0xfa,0x5c,0x7e,0xff,0x00,0x4c,0x27,0xeb,0x35,0x3f,0xfa,0x28,0x06,0xc2,0x3a,0x2c,
+ 0xe8,0xff,0x00,0x0f,0x5d,0x27,0x25,0x54,0xd2,0x7c,0xfe,0x6e,0xb4,0xf2,0xb8,0x22,
+ 0x18,0xc4,0x4a,0x00,0xff,0x00,0x28,0x36,0x26,0xd7,0xfd,0x71,0xea,0x7f,0x0e,0x1d,
+ 0x23,0xc7,0xf8,0x96,0x75,0x60,0x40,0x37,0x96,0x21,0xa9,0x47,0xf2,0x9f,0x4f,0xfa,
+ 0x5b,0x17,0xb7,0xea,0x5a,0x58,0x5d,0xe2,0xa8,0x47,0x49,0x23,0x2c,0xac,0xd2,0x11,
+ 0x62,0x00,0xb8,0xdc,0x72,0x4d,0xb6,0x1e,0x7f,0x7c,0x37,0x27,0x50,0x47,0x4c,0xae,
+ 0xd5,0x34,0xd2,0x91,0x03,0x2a,0x35,0xf6,0xbe,0xae,0x0e,0xfc,0x81,0xb5,0xfd,0x81,
+ 0x18,0x3f,0xaa,0xd5,0x75,0x25,0x56,0x7c,0x90,0x68,0x85,0x96,0xe7,0x9f,0xc3,0x2e,
+ 0x51,0x5f,0x97,0xcd,0x47,0x07,0x54,0x57,0x52,0x24,0xae,0x8c,0x1e,0x5a,0x44,0x96,
+ 0xda,0x6f,0x6d,0xc1,0x1b,0x12,0xdf,0xa7,0xbe,0x21,0x32,0x0f,0xe1,0xb3,0x28,0xe9,
+ 0xf1,0x53,0x4f,0x9e,0x67,0x15,0x19,0xc4,0xd3,0x30,0x65,0x6f,0x97,0x44,0x89,0x6d,
+ 0x7f,0xe5,0x66,0x37,0xde,0xfe,0x71,0xb7,0x26,0x6d,0x24,0x93,0xb4,0x49,0x09,0x46,
+ 0x0b,0xa8,0xe9,0x42,0xcc,0x00,0x3b,0x92,0x00,0x24,0x5b,0x8f,0xf6,0x30,0xd5,0x4b,
+ 0xf7,0xc8,0xd3,0xa6,0x49,0x34,0x89,0x51,0x2d,0xa7,0xb8,0xa4,0xdb,0x6f,0x1b,0x1f,
+ 0x7f,0xed,0x80,0xfd,0x6e,0xa8,0x01,0x44,0xfd,0x87,0xf0,0xb3,0xc9,0xb6,0xbe,0x00,
+ 0xa9,0xb0,0x7c,0x21,0x5a,0x99,0xa9,0x53,0xff,0x00,0x10,0x48,0x99,0x6d,0x3e,0x85,
+ 0x8e,0x8a,0x8a,0x9d,0x61,0xed,0xa8,0x16,0x00,0x4b,0xbd,0xed,0x7b,0xee,0x2c,0x74,
+ 0x80,0x76,0xbe,0x0d,0x83,0xe0,0xc5,0x35,0x2a,0x54,0xb6,0x61,0x9e,0xe6,0x19,0x9d,
+ 0x4b,0x31,0x68,0x66,0x90,0x88,0x84,0x44,0xa8,0x53,0xf8,0x6a,0x34,0xdf,0x60,0x41,
+ 0xf0,0x6f,0xf6,0xc5,0x82,0x92,0xa6,0xa6,0x96,0x66,0xf9,0xaf,0xf8,0x7d,0x0f,0xb2,
+ 0xc4,0xd7,0xd4,0xbb,0x58,0xb0,0xb6,0xde,0xd8,0x91,0x7c,0xea,0x9a,0x39,0x96,0x32,
+ 0xec,0x25,0x71,0x60,0x24,0x25,0x75,0x0e,0x46,0xe4,0x7b,0x63,0x37,0xeb,0x5e,0x2c,
+ 0x5a,0xad,0x86,0x1a,0xf8,0x9a,0xa2,0x07,0xc3,0xda,0x6e,0xe4,0x6a,0xa1,0x1a,0x05,
+ 0xb0,0x64,0x92,0x43,0x7b,0x0f,0xf2,0xb5,0xf6,0xdc,0x03,0xfb,0xfb,0xe2,0x51,0x7a,
+ 0x3a,0x96,0x38,0x80,0x35,0x15,0x0c,0xa1,0x19,0x2c,0x92,0x81,0xa4,0x93,0xce,0xde,
+ 0x7d,0xbf,0xad,0xf1,0x1f,0x5d,0xd6,0xd9,0x6e,0x59,0x3c,0x71,0xd5,0x92,0x1e,0x5b,
+ 0xa0,0x24,0x90,0x01,0xb5,0xd0,0x1b,0x8d,0xf5,0x1d,0xae,0x38,0xdb,0xed,0x8a,0xe9,
+ 0xf8,0xc1,0xd3,0x8b,0x5c,0x22,0x0c,0xe8,0x0b,0xe8,0x1a,0x9c,0x85,0xbd,0xce,0xad,
+ 0xc0,0xda,0xc7,0xcf,0xeb,0xb8,0xe2,0x33,0xce,0x97,0xe2,0x0d,0xb0,0xaf,0xdd,0x0d,
+ 0x70,0x15,0xb4,0x74,0x4e,0x5d,0xf3,0x33,0x3b,0xbd,0x7d,0xa5,0x5f,0x5a,0xb5,0x67,
+ 0xa5,0xbd,0x3a,0x75,0x0d,0xae,0xa4,0x80,0x3e,0x9b,0x71,0x89,0x06,0xe9,0xec,0xae,
+ 0xa2,0x47,0x67,0x89,0xe5,0x66,0x26,0xd7,0x90,0xb0,0x06,0xc6,0xf6,0x3f,0xdb,0xdc,
+ 0x62,0x94,0x9f,0x16,0xb2,0x37,0x9b,0xb3,0x4d,0x20,0x59,0x17,0xf2,0x86,0x1b,0x0b,
+ 0xed,0x6b,0x7b,0x7f,0x6f,0xbd,0xf0,0x83,0xf1,0x97,0x28,0xcb,0x27,0x8a,0x29,0x6a,
+ 0x20,0x25,0xd9,0xc4,0x9d,0xb9,0x4f,0xa1,0xd7,0x6f,0x6d,0x81,0xb1,0xdb,0x8b,0x5b,
+ 0x16,0x6d,0x98,0x9f,0xe9,0xfc,0x28,0x24,0x88,0x74,0x0a,0xe0,0xbd,0x2d,0x93,0xc1,
+ 0x56,0x6a,0xa1,0xa5,0x65,0x9c,0x69,0xbd,0xea,0x5c,0x02,0x40,0xb0,0x24,0x71,0x7e,
+ 0x77,0xc3,0x75,0x19,0x0d,0x3c,0xf4,0xcf,0x4e,0x63,0xab,0x86,0x9d,0xc5,0x88,0x8a,
+ 0xa2,0xd7,0x1e,0x54,0xed,0xe4,0x62,0x9f,0x55,0xf1,0xbb,0x28,0xa4,0x96,0x31,0xdd,
+ 0x86,0xa8,0x32,0x35,0xda,0x32,0x6f,0x19,0x06,0xfa,0x9a,0xc3,0xf2,0xf2,0x2c,0x3d,
+ 0xbd,0xb0,0x34,0xdf,0x1b,0xe8,0x55,0x7e,0x62,0x37,0x68,0x9d,0x89,0xed,0x32,0xc7,
+ 0xaa,0xde,0xe0,0xdc,0x5b,0x6b,0x7f,0xfb,0x0b,0xda,0xd8,0x43,0x1e,0xa9,0xd9,0xdb,
+ 0xf8,0x55,0x99,0x23,0x3c,0x2d,0x15,0xd3,0xe5,0xda,0x11,0x31,0x8d,0x44,0x8d,0xcb,
+ 0x37,0x20,0x29,0x24,0xfd,0x00,0xb7,0xf4,0xc3,0x89,0x00,0xa8,0x10,0xbc,0x25,0x11,
+ 0x65,0x1a,0xd5,0x1d,0x06,0xaf,0x1b,0x11,0xe3,0x63,0x7c,0x67,0xd0,0x75,0xc4,0x55,
+ 0x99,0x85,0x22,0xa0,0x74,0x98,0xc1,0xaa,0xd2,0x36,0xa0,0x49,0x21,0x4e,0x9e,0x41,
+ 0x3b,0x7b,0x7e,0x5d,0xb9,0xe5,0x35,0xbf,0x10,0x17,0x2f,0xa5,0x15,0x14,0xfa,0x2a,
+ 0x9a,0x39,0x3b,0x71,0xc9,0x13,0x5b,0xbc,0x8e,0xfe,0x36,0xba,0x90,0x05,0xc7,0xd5,
+ 0x77,0xf6,0x36,0x88,0xa5,0xba,0xa5,0xd0,0x12,0xc6,0x05,0x2d,0x11,0xe9,0x60,0x45,
+ 0xd3,0x50,0xe0,0x13,0xf8,0x7a,0x49,0x23,0x83,0xc1,0xf6,0x3b,0x5b,0xea,0x71,0xf2,
+ 0xb5,0x3d,0x3c,0x8e,0xa2,0xc8,0x03,0x6a,0x2b,0xa8,0x8f,0x51,0x17,0xde,0xff,0x00,
+ 0x7b,0xdb,0x18,0x31,0xf8,0x85,0x5d,0x19,0xa1,0xa1,0x4a,0xe3,0x54,0xb0,0xd5,0xc7,
+ 0xaa,0xa1,0x89,0x1f,0x86,0x62,0x60,0xc0,0x80,0x7f,0xcd,0x23,0x6f,0xe2,0xcb,0xe7,
+ 0x07,0xcf,0xf1,0x56,0x57,0x92,0xa9,0xe2,0xa7,0x48,0xc8,0x94,0x93,0x26,0xe5,0xc8,
+ 0x04,0x14,0x04,0x0b,0x6c,0x01,0x3b,0x7b,0x6f,0x8b,0xce,0x8e,0x6e,0x81,0x53,0xe7,
+ 0x46,0x72,0x56,0xce,0x2b,0x23,0x58,0xc2,0xa9,0xd2,0x85,0x05,0xee,0xbc,0xf9,0xbe,
+ 0xdf,0xa8,0xf7,0xdb,0x0c,0x49,0x3d,0x34,0x41,0x2f,0xa1,0x49,0xbb,0x28,0x1e,0x17,
+ 0x55,0x80,0xbd,0xfe,0xff,0x00,0xdf,0x9c,0x60,0xcb,0xf1,0x22,0xbd,0xa8,0x94,0x4f,
+ 0x2c,0x89,0x24,0xae,0x41,0x48,0xec,0x00,0x60,0x00,0xb8,0x27,0x7e,0x3d,0xbe,0x87,
+ 0x9b,0xe0,0x0c,0xcb,0xae,0x6b,0xb3,0x29,0x24,0xee,0x05,0x8c,0x24,0x61,0x02,0x86,
+ 0x27,0x70,0x47,0xaa,0xf6,0xe7,0x60,0x7e,0xf8,0x61,0xa2,0x94,0x9a,0x2a,0xa3,0xa8,
+ 0x6d,0xf0,0xb6,0x5e,0xa0,0xeb,0x5c,0xb3,0x22,0xcb,0x62,0xad,0x8c,0xa4,0xc1,0xe5,
+ 0x48,0x0c,0x70,0xbf,0xab,0xd4,0x4a,0xeb,0xb5,0xbc,0x35,0xcf,0xff,0x00,0x23,0x0f,
+ 0x43,0xd5,0x79,0x74,0xf9,0x6d,0x25,0x4c,0x93,0x43,0x0b,0xcd,0x12,0xb5,0x9c,0x1b,
+ 0x03,0xc1,0x1e,0x6d,0xbd,0xf1,0xcf,0x35,0xd9,0x85,0x6d,0x74,0x12,0xc5,0x3d,0x45,
+ 0xfb,0xcc,0x19,0xbd,0x24,0x5a,0xc4,0x1b,0xdb,0xee,0x06,0xd8,0x0f,0xe6,0x1c,0x08,
+ 0xed,0x3c,0xc1,0x51,0x34,0x9f,0xc4,0xb0,0xb6,0xe3,0x61,0xc5,0xb7,0xe3,0x1a,0x87,
+ 0x87,0x12,0x28,0xb9,0x21,0xd4,0x13,0xc2,0xe9,0x7a,0x9e,0xa6,0xa2,0x86,0x39,0x1b,
+ 0xe6,0xe0,0x13,0x12,0x14,0x58,0xdc,0x2e,0xda,0xb7,0x3e,0xdf,0xef,0x63,0x6c,0x57,
+ 0xb3,0x6f,0x8a,0x74,0x19,0x56,0x62,0xd0,0xc2,0xa2,0xa2,0x17,0xa7,0x2c,0x9a,0x64,
+ 0xbe,0x86,0x0c,0x01,0x5f,0xa0,0x65,0x20,0x8f,0xb1,0xc6,0x06,0x73,0x06,0x60,0x8c,
+ 0x5e,0x46,0x64,0x4b,0x6e,0x7d,0xb8,0xdb,0x9f,0x3f,0xd7,0x03,0x54,0x55,0xac,0x95,
+ 0x31,0x06,0x46,0x21,0x81,0x24,0xda,0xdb,0x71,0x6f,0xeb,0xe2,0xd7,0xfd,0xf0,0xcd,
+ 0xf0,0xe6,0x8f,0xea,0x75,0xaa,0x5d,0x33,0xbb,0xad,0xec,0xfc,0x5a,0xa2,0x94,0xd8,
+ 0x54,0x04,0x47,0x2c,0xbf,0xf2,0xc8,0x61,0xb0,0x3c,0xfb,0x6f,0xed,0xc8,0xc0,0xf3,
+ 0x7c,0x56,0x82,0x42,0x4a,0xd4,0x22,0xaf,0x82,0x0e,0x96,0x8c,0xef,0xbd,0xb7,0x1c,
+ 0xf8,0x3e,0x39,0xf1,0x8c,0x2b,0xe7,0x14,0xc9,0x25,0x9c,0x0d,0xec,0x58,0x1f,0xfd,
+ 0xbe,0xdf,0xae,0x3c,0x96,0xa9,0x4a,0xd8,0x49,0x63,0x18,0xd4,0x14,0xad,0xee,0x0f,
+ 0x3f,0xef,0xfd,0x30,0xff,0x00,0xf5,0xf1,0x04,0x9e,0x6b,0xfb,0xad,0xa6,0x2f,0x8a,
+ 0xcf,0x14,0xac,0xb2,0xd4,0x2c,0xa3,0x4d,0x94,0xad,0x85,0xed,0xed,0x6f,0x36,0x6f,
+ 0xe9,0xb0,0xc4,0x7b,0xfc,0x64,0xed,0x98,0x18,0xf7,0x25,0x8b,0xb6,0xc9,0x2e,0xb4,
+ 0x06,0xe7,0x57,0xb6,0xde,0x09,0x1e,0x3c,0x71,0x6c,0x63,0x72,0x55,0x2f,0x6c,0x90,
+ 0x3f,0x2d,0xc5,0xd4,0x81,0x60,0x46,0xdf,0xd7,0x0c,0x3d,0x54,0x7d,0xb6,0xe6,0x4b,
+ 0x70,0x5b,0x8e,0x76,0xbf,0xed,0x8b,0x3f,0x41,0x0f,0x64,0x0c,0xee,0xee,0xb6,0x39,
+ 0x7e,0x31,0x55,0x18,0x99,0x02,0xae,0xa4,0x6e,0xea,0x48,0x81,0x89,0x2c,0x2f,0xb1,
+ 0xdf,0x8d,0x3b,0x7f,0x6d,0xf6,0xad,0x57,0xfc,0x4b,0xcd,0x2b,0xaa,0x4c,0xb1,0xcc,
+ 0x4a,0x59,0x74,0xf7,0x08,0xd4,0x8c,0x06,0xdc,0x71,0xbe,0x9e,0x3f,0xbe,0x28,0x51,
+ 0x00,0x5b,0xb7,0xac,0xdf,0x72,0xba,0x4e,0xa0,0x7c,0x9f,0xd7,0xef,0x86,0xea,0x03,
+ 0x59,0xd2,0x39,0x4a,0x84,0xba,0x12,0xdc,0x0b,0x83,0xbf,0xb8,0xf6,0xc5,0x8d,0xd3,
+ 0x44,0xcc,0x80,0xab,0x33,0x3c,0xf5,0x56,0xb8,0x3e,0x21,0x66,0x59,0x70,0xa4,0x14,
+ 0xf5,0x05,0x52,0x34,0x96,0x14,0x5d,0xae,0x85,0x8e,0xad,0xcf,0xf3,0x79,0x17,0xe7,
+ 0x8f,0x6c,0x58,0xe8,0xbe,0x2b,0xe7,0x75,0x13,0xa4,0x0f,0x50,0x52,0x30,0xe4,0x2b,
+ 0x9f,0xe4,0xb9,0x04,0x1b,0xed,0xbd,0xc0,0xdf,0xff,0x00,0x8c,0x64,0x73,0x46,0xaa,
+ 0x97,0x42,0xd2,0x29,0x6f,0xcc,0xc6,0xe3,0x63,0xbd,0xad,0xf4,0x36,0xc2,0x97,0x78,
+ 0xf5,0x43,0x23,0x47,0x6b,0x95,0x62,0x75,0x00,0x34,0xed,0x61,0xe7,0xef,0x88,0xe8,
+ 0x18,0xee,0x42,0xaf,0xcd,0x78,0xea,0xb5,0x9a,0xdf,0x8b,0x59,0x88,0xcc,0x1e,0xa5,
+ 0xd5,0x64,0x9d,0xb8,0x2b,0x60,0x01,0x06,0xea,0x58,0x58,0x82,0x6f,0xbe,0xdf,0xde,
+ 0xd8,0x91,0x8b,0xe2,0xd5,0xe0,0x76,0xcc,0x62,0x61,0x52,0xc1,0x87,0x72,0x37,0x0d,
+ 0x70,0x00,0x20,0xdf,0x7b,0x1b,0x5c,0x5f,0xf4,0x38,0xc3,0x96,0xa5,0x04,0xea,0xa5,
+ 0x92,0x53,0x28,0xba,0xeb,0x36,0x27,0x7b,0x91,0xb7,0x9b,0x8f,0xd8,0xe1,0xc8,0xab,
+ 0x35,0x48,0x7b,0x93,0x2c,0xa5,0x8a,0xad,0x8a,0x10,0x75,0x9e,0x6f,0x7f,0xd6,0xff,
+ 0x00,0x4b,0x62,0xbf,0xd3,0xc4,0x45,0x52,0x22,0x47,0x77,0x5a,0xae,0x6d,0xf1,0x9e,
+ 0xb5,0xff,0x00,0xfa,0x56,0xec,0x92,0x44,0x91,0xaa,0xa0,0x08,0xae,0x1a,0xe0,0x85,
+ 0x3b,0x02,0x45,0xbd,0x40,0x1e,0x30,0xfe,0x59,0xf1,0xb3,0xf1,0x23,0x39,0x82,0x82,
+ 0xf6,0x64,0xee,0x69,0x6f,0x55,0xb7,0xd2,0xc7,0xca,0x9b,0x01,0x61,0xc1,0x37,0xc6,
+ 0x32,0xad,0x1d,0x44,0x6a,0xc5,0xdd,0x26,0x54,0x73,0xab,0x92,0x3e,0x82,0xe7,0xd8,
+ 0x5e,0xff,0x00,0xf7,0xc4,0x79,0x35,0xb4,0x8b,0x26,0xa7,0x01,0x24,0x74,0x95,0x2c,
+ 0xbb,0x1b,0x83,0xa9,0x48,0xe4,0x11,0xb6,0xfe,0x77,0xc1,0xfd,0x3c,0x45,0xb5,0x48,
+ 0x79,0xae,0x5b,0xfd,0x6f,0xc6,0x14,0x35,0x2e,0xf9,0x6e,0x65,0x25,0x3e,0x98,0x18,
+ 0x80,0x49,0x31,0xb3,0xfa,0xb4,0x8b,0x30,0xd8,0x1d,0xb6,0xfa,0x8f,0x63,0x8a,0xe5,
+ 0x7f,0xc4,0xca,0xdc,0xcd,0x02,0xf7,0x84,0x09,0xa4,0xa4,0x9d,0x85,0xd5,0xdc,0x60,
+ 0x3d,0x2c,0x63,0x36,0xdc,0x10,0x40,0xb1,0xb0,0x1c,0xdc,0xdf,0x19,0x22,0x57,0x35,
+ 0xa2,0x2e,0x55,0xa4,0x92,0xca,0x51,0x49,0x04,0x0b,0x80,0x6f,0x7f,0xbf,0x38,0x79,
+ 0x73,0x35,0xee,0x04,0x72,0xb1,0xa8,0xd9,0x55,0x8d,0xaf,0xb8,0x04,0xfd,0x0f,0x8c,
+ 0x54,0x34,0x50,0x91,0xc2,0x4d,0xd6,0xa7,0xb3,0x7e,0xa1,0xaa,0xcc,0xea,0x8c,0xf5,
+ 0x52,0x3c,0x3a,0xde,0xd6,0x91,0xc9,0x61,0xa4,0x00,0x37,0xff,0x00,0x28,0x1b,0xdf,
+ 0x8c,0x00,0xd9,0x8b,0x4c,0xc8,0x63,0x66,0x66,0x22,0xe4,0x11,0x62,0x3e,0xc3,0xdc,
+ 0x62,0x2e,0xa3,0xe4,0xea,0xc5,0xaa,0x53,0x8b,0xeb,0x46,0x95,0x82,0x9b,0xec,0x6f,
+ 0x63,0xbf,0xd3,0x09,0x44,0x54,0x42,0x81,0x54,0x43,0x1a,0x69,0x8c,0x2d,0xc9,0x07,
+ 0xeb,0xbf,0x3e,0x2f,0x8d,0x2c,0x61,0x63,0x40,0x0a,0x02,0xa6,0x7f,0xc4,0x1d,0x80,
+ 0xbc,0xa1,0xc9,0x41,0xab,0xd5,0x7d,0xbc,0xed,0xfb,0x63,0xc7,0xcd,0xac,0x4a,0x44,
+ 0x10,0x6a,0x24,0xae,0xb2,0x05,0xed,0xed,0xe2,0xd8,0xae,0x54,0x55,0xa2,0x2c,0x4c,
+ 0xa8,0x23,0x00,0x16,0x0f,0x71,0x63,0xef,0xc7,0xfb,0xfd,0x70,0x0b,0x55,0x41,0x1a,
+ 0x83,0x13,0x1b,0x10,0x4f,0xe6,0xd4,0x40,0xf7,0x23,0xdb,0xda,0xdf,0xae,0x2c,0xa2,
+ 0x79,0x50,0xb9,0x59,0xff,0x00,0xc5,0x44,0x24,0x2a,0x3a,0x36,0xc1,0x01,0xf2,0x45,
+ 0xee,0x6f,0xe3,0x8c,0x22,0x2c,0xd4,0x00,0x91,0x4b,0x2b,0xe8,0x17,0xd1,0xea,0x37,
+ 0xf1,0x6f,0xfe,0x71,0x53,0x6a,0xe6,0x71,0xf9,0x98,0x31,0xdb,0xd0,0x4e,0xe7,0x62,
+ 0x7f,0x5e,0x31,0xf5,0x63,0x49,0x77,0xee,0x13,0x1b,0x17,0x2c,0x4f,0x04,0xdc,0x82,
+ 0x06,0xdc,0x1f,0xe9,0xbe,0x0e,0xc0,0x79,0x42,0xd7,0x41,0x51,0xd7,0x54,0x50,0x3e,
+ 0xaa,0x59,0x1d,0x15,0x0e,0xce,0xce,0x35,0x06,0x3c,0x5b,0xd8,0x81,0xb5,0xfe,0x98,
+ 0x12,0xa2,0xa0,0xa2,0x2c,0x65,0xda,0x5d,0x27,0xd2,0x58,0xee,0x17,0xfd,0xdf,0xff,
+ 0x00,0x9c,0x45,0xbb,0x16,0x81,0x47,0xa8,0x4b,0x2b,0x33,0x6a,0x2e,0x0e,0xe7,0x7f,
+ 0xcc,0x36,0x23,0x61,0x63,0xf5,0xb6,0x18,0x28,0xb3,0xf7,0xae,0x1b,0xb9,0xe8,0x0d,
+ 0x26,0x92,0x34,0x80,0x01,0x17,0x3c,0x11,0x7d,0xbd,0xef,0x7c,0x35,0x0e,0x69,0x69,
+ 0xdc,0x4a,0x92,0x8e,0xbe,0x37,0xef,0xcd,0x13,0xad,0x86,0xa3,0xac,0xf0,0x6c,0x38,
+ 0xfe,0xdb,0xf3,0x71,0x7c,0x29,0xb3,0x0e,0xc4,0xa6,0x20,0x55,0xee,0x75,0x33,0x03,
+ 0xa5,0xb8,0xe0,0x82,0x7d,0xad,0xfd,0x31,0x17,0x2c,0x5d,0x99,0x2a,0x5a,0x05,0xee,
+ 0xc4,0xc8,0x4c,0xbf,0x8a,0x19,0x5d,0x2c,0xbe,0x06,0xea,0xc2,0xff,0x00,0x7f,0xcd,
+ 0x84,0x8a,0xa8,0xda,0x37,0x75,0xd1,0xad,0x89,0x32,0x96,0x1c,0x80,0xa0,0x2b,0x6d,
+ 0xb8,0x36,0xf7,0xc3,0x0f,0x54,0x96,0x54,0x93,0x66,0x1d,0x98,0xe5,0x05,0x2c,0x89,
+ 0x70,0xdb,0x7a,0x40,0xbf,0xfa,0x6d,0xfe,0xb8,0x6a,0x4a,0xb6,0x65,0x32,0x4c,0xb6,
+ 0xd2,0x3d,0x57,0x6b,0x17,0x16,0xdc,0x71,0xc9,0xc4,0x44,0xf5,0x7a,0x9c,0x47,0xdb,
+ 0x78,0xa4,0x41,0xe0,0x6a,0x42,0xdb,0x83,0x71,0xf5,0xbd,0x8f,0x8b,0xf1,0x81,0xa5,
+ 0xab,0x30,0x98,0xa5,0x05,0xbb,0x91,0xfe,0x29,0x93,0x4d,0xc0,0x43,0xb6,0xc4,0xf8,
+ 0xbd,0x81,0xbf,0x9b,0xe0,0xee,0x08,0x17,0x00,0xa4,0x24,0xab,0x92,0x94,0xc6,0x6a,
+ 0x01,0x87,0xb8,0x0e,0x80,0x6d,0xab,0x63,0xc6,0xc7,0xdb,0x7b,0xf9,0xbe,0x19,0x15,
+ 0xb7,0x74,0xef,0x30,0x25,0x95,0xb5,0xb2,0xb6,0xa4,0x52,0x05,0xed,0x6f,0x1e,0xd8,
+ 0x01,0x83,0x55,0xc0,0xff,0x00,0x86,0xfd,0xc7,0x3f,0x84,0xac,0x6c,0xba,0xc1,0xdc,
+ 0x5c,0xf8,0x2b,0xc5,0xbc,0xfd,0xb0,0xc0,0x81,0xa3,0x88,0xb2,0xaa,0xb8,0x92,0x2f,
+ 0x43,0x12,0x54,0x3a,0x82,0x18,0x7e,0xb7,0x53,0xed,0xe7,0x8d,0xb1,0x2d,0x2d,0x9a,
+ 0xb4,0x5b,0x66,0x0a,0xba,0x34,0xf7,0x51,0x99,0x76,0x37,0xb0,0x0a,0x09,0xf3,0xfa,
+ 0x0e,0x36,0xc2,0x5a,0xa9,0xe5,0x8c,0xc8,0xcf,0xd9,0x8d,0x94,0xd9,0x9d,0xbd,0x36,
+ 0xf3,0x7f,0x6b,0x8e,0x3e,0xd8,0x5b,0xda,0x41,0x08,0x02,0x35,0xf4,0x17,0x2c,0x00,
+ 0x61,0x19,0xbd,0xc7,0xfa,0x8d,0xfe,0xa7,0x02,0xa8,0xf4,0x18,0xa4,0x7d,0x52,0x03,
+ 0xe9,0x65,0x0c,0xc6,0xe2,0xc2,0xd6,0x1c,0xfb,0xf9,0xc2,0xee,0x4a,0x4a,0x72,0x6a,
+ 0x81,0x1b,0x58,0x92,0xec,0xe6,0xe4,0xab,0x7e,0x5d,0xad,0xbf,0xd0,0xe1,0x7d,0xd1,
+ 0x1b,0x6a,0x90,0xab,0x68,0xd2,0xa0,0xdc,0x37,0x3b,0x73,0xe7,0x8b,0x78,0xe7,0x0c,
+ 0xe8,0x0a,0xd5,0x0f,0x4c,0x0b,0xab,0x20,0x60,0xd1,0x9f,0xca,0x2e,0x78,0xb6,0xdf,
+ 0xf6,0xfa,0xe1,0x50,0x25,0xea,0x0b,0x77,0xa3,0x74,0x91,0x95,0x59,0x95,0x2c,0x4d,
+ 0xf9,0x1a,0x6d,0xec,0x3c,0xfe,0xf8,0x3b,0x91,0xb5,0xf6,0xa7,0x32,0xd9,0x88,0x45,
+ 0x12,0x11,0xea,0xbe,0xdb,0x03,0xfa,0x8f,0xbf,0xdf,0x0d,0x09,0x65,0xd4,0x1d,0x4c,
+ 0x8c,0x85,0x0e,0xbd,0x3e,0x2c,0x79,0xbf,0xd7,0xfe,0x98,0x4c,0xac,0x03,0x33,0x10,
+ 0x1a,0x06,0x72,0x14,0x1b,0xa9,0x71,0x6d,0x22,0xdf,0x4b,0x83,0xbf,0xd7,0x0e,0xcc,
+ 0x20,0x8a,0x16,0x91,0x04,0x71,0x37,0x2f,0xeb,0xd5,0xab,0x7b,0xdc,0x8d,0xed,0x71,
+ 0xb5,0xfe,0x98,0x04,0x92,0x96,0xc9,0xe1,0x10,0x65,0xa9,0x31,0x8d,0x12,0xbc,0x25,
+ 0x7d,0x46,0x35,0x37,0x0d,0xbf,0x03,0x9f,0xb6,0xf8,0x12,0x4a,0x99,0xa3,0x94,0x33,
+ 0x8d,0x4f,0xa6,0xee,0x87,0x7b,0xa9,0x1c,0x5e,0xdb,0xff,0x00,0xd2,0xd8,0x18,0xd5,
+ 0xac,0x32,0xc2,0x8d,0xdc,0x91,0x9c,0x32,0xa3,0x06,0x50,0xe4,0x80,0x08,0x20,0xf0,
+ 0x79,0xb1,0xfd,0x0f,0xd7,0x0d,0x7c,0xbf,0x7a,0x68,0xc4,0x90,0xc9,0x4d,0x3c,0xa9,
+ 0xae,0x30,0xcd,0xea,0x71,0xaa,0xde,0x95,0xe6,0xdb,0x6f,0xb8,0x1b,0x62,0x74,0x42,
+ 0xd3,0xdf,0x38,0x25,0x7d,0x36,0x50,0xea,0x2c,0x23,0x16,0x6d,0x5e,0xc3,0x9b,0xe0,
+ 0x67,0x91,0xc2,0x2c,0x51,0x85,0x3a,0x4b,0x95,0x50,0x49,0x24,0x93,0x72,0x02,0xdf,
+ 0x63,0x73,0xfb,0xe1,0xb9,0xa2,0x13,0xb4,0xb1,0xd3,0xa3,0x86,0x45,0x2a,0x5e,0x41,
+ 0xa6,0xdb,0x6e,0x09,0xe3,0xfe,0xf8,0x76,0x78,0x62,0xa1,0x68,0x8b,0x4a,0xd0,0xc8,
+ 0x13,0x4b,0xea,0xb6,0x91,0xc6,0xc0,0xf3,0x70,0x47,0x38,0xaf,0x94,0xa7,0x29,0xbe,
+ 0xe4,0x94,0xb5,0x2c,0x34,0x68,0x8c,0xdc,0x34,0x81,0x35,0x15,0x22,0xd6,0xe3,0xdc,
+ 0xf3,0x83,0x0d,0x64,0xed,0x4f,0x57,0x15,0x43,0xb0,0x74,0x3a,0x58,0x89,0xfd,0x12,
+ 0x6e,0x74,0x86,0x4b,0x78,0x24,0x90,0xdf,0x5b,0x7d,0xa3,0xe7,0x88,0xa4,0x2d,0x5d,
+ 0x34,0x2e,0xda,0xa5,0x5d,0x4b,0x7f,0x41,0x53,0x7b,0x90,0x6d,0xf9,0x89,0xd3,0xee,
+ 0x0e,0xfe,0xf8,0x0a,0x69,0x0c,0x32,0x54,0xc6,0xf1,0xc9,0x3b,0xaa,0xfa,0x64,0x46,
+ 0x01,0x18,0x13,0xb8,0xf7,0xf3,0xb1,0xbd,0x8e,0x00,0xb7,0x7c,0x90,0xb2,0x11,0xf2,
+ 0x56,0x49,0x2c,0x6a,0xc2,0x45,0x55,0x55,0x09,0xa4,0x91,0xe0,0x6d,0x7d,0xb6,0x16,
+ 0xbd,0xff,0x00,0x7f,0x18,0x19,0xa4,0x9b,0xb6,0x57,0xb8,0x08,0xed,0x85,0x5f,0xe6,
+ 0xde,0xe6,0xc4,0x5f,0x7d,0xaf,0xe3,0x7d,0xfe,0xb8,0x57,0xa1,0x65,0x71,0x25,0xa9,
+ 0xd6,0x22,0x03,0xb0,0x50,0x41,0xdf,0xd2,0xde,0xfe,0x76,0x23,0x1e,0x55,0xe9,0xfc,
+ 0x3d,0x41,0x08,0x70,0x01,0xf1,0x7f,0x57,0x20,0xfd,0x3f,0xdd,0xf1,0x36,0xe1,0x1a,
+ 0xc5,0xa0,0xda,0x25,0x63,0x1c,0x84,0xad,0xaf,0xa8,0xa9,0x3c,0xaf,0x16,0xdf,0xeb,
+ 0x87,0x66,0x2d,0x1d,0x32,0x06,0x3f,0x30,0xd7,0x3e,0x96,0x8c,0x86,0x3b,0x01,0xcd,
+ 0xec,0x7d,0xee,0x3d,0xf0,0x1d,0x6d,0x4c,0x70,0x56,0x08,0x19,0x3b,0x92,0x22,0x95,
+ 0xd5,0xab,0x95,0xb9,0x37,0xbf,0x9b,0x0d,0xf8,0xfb,0xe1,0xa3,0x98,0x9a,0x95,0x57,
+ 0x82,0x68,0xdc,0x3f,0xe5,0x41,0xe9,0x25,0x41,0xe7,0x9f,0xdc,0xec,0x2f,0x87,0x6b,
+ 0x68,0x25,0x4e,0x3e,0x62,0xa9,0x75,0x8e,0xd2,0xc4,0xc2,0xe0,0xdf,0xc9,0xda,0xdf,
+ 0x43,0xfd,0x30,0xe2,0x4c,0xf3,0x21,0x68,0xe3,0x71,0x1a,0xf0,0xca,0x0e,0x9b,0xde,
+ 0xd6,0xf6,0x18,0x18,0xc5,0xf3,0x2a,0xe9,0x33,0x69,0x3a,0x86,0x97,0x43,0xb8,0xb9,
+ 0xbf,0xed,0x7e,0x77,0x38,0xf2,0x2a,0x87,0x56,0xec,0x36,0x92,0x8d,0xac,0xdd,0x97,
+ 0x48,0x37,0x1c,0x02,0x38,0x1b,0x62,0xc0,0x02,0x8b,0xe9,0xaa,0x8e,0xbb,0x37,0xa1,
+ 0x88,0x1a,0x6d,0xb5,0xc5,0xbf,0xef,0x81,0x44,0x91,0x97,0xb4,0x6c,0xac,0xe1,0xb6,
+ 0xd4,0x77,0xff,0x00,0x5d,0xb8,0xfd,0x70,0xaa,0xc6,0xa7,0x5d,0x11,0xcf,0x15,0x44,
+ 0x4c,0x13,0x52,0x8e,0xe0,0x2a,0x9b,0x71,0xe6,0xd7,0x3e,0x37,0xc3,0x15,0x6e,0x27,
+ 0x68,0x45,0xd0,0x3c,0x6b,0xc3,0x92,0x7f,0x4d,0x88,0x1e,0xfc,0x7d,0x70,0x68,0x23,
+ 0xc2,0x6f,0xe7,0x23,0x59,0xe3,0x8e,0xa0,0xcc,0x8a,0xb2,0x33,0xf7,0x52,0x2d,0x45,
+ 0xbd,0xc8,0x3f,0xa7,0xd7,0x0d,0x4f,0x5a,0xcd,0x53,0x24,0x6c,0x11,0x2c,0x49,0xd8,
+ 0x9d,0x26,0xe0,0x6e,0x36,0xfb,0x60,0xaf,0x97,0x54,0x40,0xc6,0x0d,0x74,0xc0,0x37,
+ 0xe4,0xb8,0x64,0x26,0xf6,0x56,0xb9,0xe3,0xf6,0xbf,0xb9,0xc7,0x95,0x94,0x25,0xf5,
+ 0x4d,0x15,0x23,0xc3,0x2b,0xc6,0x42,0x96,0x52,0xa3,0x58,0x51,0xb7,0xb7,0xdf,0xf5,
+ 0x38,0x60,0x01,0x44,0x2d,0xda,0x57,0x89,0x5a,0x38,0xa1,0x4e,0xd4,0x9f,0xf3,0x7b,
+ 0x65,0x34,0x80,0x3c,0xb6,0xfe,0xfe,0x3e,0x96,0xfa,0x61,0x21,0xc4,0x8b,0x0c,0x61,
+ 0x9e,0x18,0x98,0x10,0x3c,0x09,0x14,0x01,0x70,0x6f,0xb7,0xd7,0xc6,0xe4,0xe3,0xe9,
+ 0xe6,0x0d,0x2b,0xca,0xac,0x63,0x65,0xfc,0xfa,0x4f,0xe6,0xdf,0x6b,0x9f,0x6b,0x81,
+ 0xcf,0x18,0x1f,0x5f,0xcb,0xd4,0x24,0x0f,0xe8,0x21,0x4d,0x80,0x50,0x15,0x96,0xe1,
+ 0x81,0x1b,0x79,0x0d,0xfd,0xf1,0x4e,0xe5,0xa6,0xe9,0x36,0x06,0xb4,0xf9,0xb8,0x92,
+ 0x28,0xcb,0x23,0x02,0xaa,0x4b,0x5c,0x80,0x00,0x16,0xbd,0xec,0x40,0xf2,0x3d,0xc5,
+ 0xf0,0xdc,0x34,0xdd,0xd0,0xd1,0xf7,0x0b,0x26,0x8f,0x51,0x26,0xe6,0xd6,0x16,0x24,
+ 0x9f,0x3f,0xaf,0x8d,0xf1,0x20,0x62,0x96,0x55,0x1a,0x5c,0x15,0x68,0xcd,0xc1,0xdc,
+ 0xa8,0x3b,0x6a,0x07,0xc7,0xb1,0x38,0x16,0x46,0x8c,0x06,0x88,0xa2,0x22,0x37,0xad,
+ 0xb7,0x3b,0x82,0xd7,0x27,0xea,0x3f,0xe9,0x89,0x69,0x6d,0x32,0xee,0xdf,0x2b,0xb1,
+ 0x48,0x98,0x82,0xb2,0x8b,0x0d,0x23,0xd5,0xa8,0x92,0x39,0x07,0x6e,0x37,0x1e,0xde,
+ 0x70,0x9a,0xb8,0x52,0x51,0x50,0x08,0x47,0x4a,0x85,0x28,0x64,0x57,0x2b,0xa0,0x92,
+ 0x6f,0xb6,0xe3,0x93,0x7b,0x5f,0xfd,0x30,0x9a,0x8a,0x86,0x8e,0xae,0x59,0x54,0x2a,
+ 0x5a,0xe5,0x87,0xf9,0x90,0x82,0xd7,0xdf,0x6b,0x72,0x31,0x1e,0x33,0x17,0x7b,0x5c,
+ 0xee,0xd2,0x1d,0x51,0x03,0x70,0x2d,0xb0,0xb0,0xf3,0xe3,0x02,0xfb,0xaa,0xc9,0x44,
+ 0xe6,0x0d,0x32,0xd0,0x18,0xdd,0x64,0x12,0x6a,0x76,0x22,0x45,0x07,0x4a,0xda,0xfb,
+ 0x1f,0x06,0xd7,0x3b,0xed,0xbd,0xf0,0x2a,0x98,0x99,0x60,0x63,0x0c,0xdd,0xb9,0x63,
+ 0x65,0x88,0x87,0xf4,0x86,0x24,0x9d,0x47,0x72,0x3d,0x81,0x1c,0xee,0x48,0xc3,0xd3,
+ 0x54,0x22,0xea,0x49,0x96,0x39,0x60,0x90,0x69,0x06,0xc4,0x97,0x1b,0x58,0x86,0xf6,
+ 0x20,0x9b,0xfb,0xd8,0x0c,0x39,0x64,0x0a,0xc8,0xa8,0xb1,0x44,0xc7,0x5a,0x06,0x22,
+ 0xea,0x7f,0x4f,0xd7,0xf7,0xc4,0xb5,0x39,0x40,0xc9,0x49,0xdb,0x68,0xd2,0x99,0x41,
+ 0x86,0x11,0xa2,0xa1,0x81,0xb1,0xb1,0x16,0xdf,0xd8,0x6f,0xce,0xfc,0x5f,0x6c,0x21,
+ 0xef,0x1d,0x51,0x2b,0x32,0xba,0x33,0x0f,0x5b,0x13,0xe9,0x20,0x5d,0x4d,0x87,0xd0,
+ 0x10,0x70,0x6b,0x44,0x8f,0xa1,0x7b,0xc2,0x58,0xa6,0x52,0x48,0x3c,0x87,0xb0,0xbe,
+ 0xfc,0x81,0xc7,0xf5,0xc3,0x62,0x92,0x24,0x95,0x52,0x6b,0x02,0xa2,0xe1,0x5d,0x2d,
+ 0xe8,0x3c,0xef,0xc5,0xfe,0xfb,0xee,0x39,0xdf,0x0a,0x4a,0x05,0x46,0x44,0xb2,0xc4,
+ 0xef,0x34,0x2a,0xc4,0x12,0x4b,0x82,0x3d,0x25,0x4e,0xe1,0x87,0xed,0x7f,0xda,0xd8,
+ 0x32,0x39,0x24,0x7a,0x99,0x22,0x8a,0x36,0x90,0x5b,0xd2,0x5d,0x80,0x36,0x51,0xc0,
+ 0x36,0xde,0xf6,0x23,0x7f,0xfa,0xe1,0x11,0x94,0xed,0x3c,0x31,0x92,0x10,0x8b,0x19,
+ 0x0b,0x80,0x6e,0x2d,0xe9,0x37,0xe7,0xd2,0x2f,0xbe,0x09,0x95,0x19,0x48,0xed,0x15,
+ 0x3a,0x26,0x00,0xc6,0x13,0xd7,0x62,0xcc,0x6c,0x1b,0xca,0xfa,0xbf,0x5c,0x46,0xa0,
+ 0x02,0x62,0xaa,0x44,0xd1,0x35,0x91,0x3b,0x6c,0x6e,0x11,0xc6,0x8e,0xcb,0x6d,0xbf,
+ 0x16,0xfd,0x07,0x3c,0xdb,0x0c,0xa2,0x23,0x8f,0x96,0x99,0x5a,0x05,0x2a,0x59,0x18,
+ 0xcb,0xab,0x4b,0x83,0x60,0x54,0xdb,0xde,0xd7,0xb9,0xde,0xf8,0x1e,0x6d,0x7e,0xa9,
+ 0x12,0x54,0x10,0xbb,0x1b,0x7a,0xee,0x35,0x58,0x6d,0xfb,0x1f,0x3e,0xff,0x00,0x5c,
+ 0x2e,0x08,0xd6,0x09,0x99,0x76,0x4b,0x22,0xa8,0x71,0xcd,0x8b,0x5f,0x50,0xf6,0xfa,
+ 0x9f,0x38,0x6b,0xca,0x23,0x9b,0x48,0x6a,0x74,0xa8,0x96,0x67,0x92,0x26,0x8a,0x33,
+ 0x09,0x8f,0xf1,0x23,0x00,0xea,0x00,0xea,0xb1,0x1b,0x5f,0x8f,0x16,0xb0,0xfb,0x8c,
+ 0x3f,0x1d,0x50,0xcb,0x22,0x93,0xb1,0x3c,0x55,0x0a,0x4a,0x1e,0xec,0x77,0x8f,0x41,
+ 0x71,0x67,0x04,0x5e,0xc7,0x6f,0x36,0xde,0xfe,0x41,0xc3,0xf5,0xc8,0x91,0xc4,0xb1,
+ 0x9b,0xf7,0x95,0xd6,0xc4,0xb0,0x1d,0xc1,0xc1,0xbd,0xb9,0xda,0xd6,0x3f,0x4c,0x45,
+ 0xa4,0xea,0x20,0xed,0xa2,0xc8,0xab,0xa9,0x5f,0xd2,0xc3,0x4d,0xcf,0x92,0x0f,0x8d,
+ 0xbc,0x71,0xfa,0x60,0x6e,0xcd,0xa1,0xfd,0x28,0xea,0x80,0x5a,0x65,0xd2,0x89,0x24,
+ 0x22,0xea,0xbb,0xec,0x1b,0xc8,0x3b,0xde,0xf6,0x00,0xdf,0xfa,0x8e,0x70,0xda,0xda,
+ 0x60,0x15,0x19,0x62,0x89,0x1c,0x69,0x08,0x34,0x48,0x7d,0x27,0x6b,0xf2,0xdf,0x5b,
+ 0x1b,0x9f,0x18,0x12,0xb2,0x56,0xa6,0xa7,0x9d,0xcb,0x9d,0x6a,0xca,0x76,0xb1,0x53,
+ 0xba,0xd8,0x7d,0x6e,0x0e,0xde,0x70,0x34,0xf3,0x32,0xb3,0xf6,0xa5,0x31,0xa0,0x1a,
+ 0xb4,0xff,0x00,0x30,0x51,0xb9,0x20,0x91,0xcf,0x9d,0x3f,0xd3,0x7c,0x30,0x39,0x4c,
+ 0x4d,0x70,0xa5,0x9a,0xae,0xa1,0x61,0x9a,0x13,0x2c,0x71,0x14,0x91,0x48,0x0c,0xba,
+ 0x81,0xf4,0xec,0x41,0x03,0xc6,0xfb,0x7d,0x78,0x38,0x8a,0x9d,0x20,0x8d,0xa6,0x54,
+ 0xa5,0x56,0x69,0x35,0x80,0x63,0x20,0xe8,0xd4,0x07,0xa7,0x8d,0xd4,0x9f,0xbf,0xd2,
+ 0xd7,0xc0,0xef,0x58,0xb1,0x2a,0x3c,0xe6,0x28,0xde,0x69,0x55,0xd9,0x34,0xff,0x00,
+ 0x2e,0xa0,0xa5,0x88,0xdb,0x81,0xcf,0xdf,0x03,0xd4,0x02,0xb5,0x6d,0x0c,0x52,0x2c,
+ 0x88,0x7f,0x23,0x06,0xd5,0xb7,0x27,0x49,0x5f,0xb1,0xfd,0x2e,0x7c,0x61,0x6a,0xb8,
+ 0x48,0x78,0xb4,0xf4,0x91,0x45,0x24,0x0d,0x10,0xee,0xc2,0xe5,0xfd,0x60,0xb1,0x2d,
+ 0x7f,0xf3,0x2f,0xb5,0xbc,0x8c,0x34,0x1a,0x14,0x90,0x09,0x5d,0x9c,0xaa,0xe9,0x1e,
+ 0xb0,0xa5,0xae,0x36,0x6f,0x3b,0xff,0x00,0x6d,0xef,0x8f,0xa9,0xcb,0x3c,0xdd,0xaa,
+ 0xc7,0xd3,0x29,0x5b,0x99,0x4b,0x5c,0x16,0x16,0xfc,0xde,0x38,0xe4,0xf3,0xfb,0x61,
+ 0x80,0xd5,0x51,0x95,0x11,0xb7,0x62,0x20,0xc1,0x38,0xd2,0x12,0xc7,0x7d,0x40,0x8f,
+ 0x73,0x7f,0xa5,0xcf,0x83,0x82,0x0f,0x74,0x13,0xfd,0xa8,0x25,0xa7,0x96,0x2a,0x86,
+ 0x1a,0xb5,0x13,0x1f,0x78,0xde,0xfb,0x6f,0x63,0xca,0xf3,0x6b,0xff,0x00,0xad,0xb0,
+ 0x3d,0x46,0x47,0x1d,0x3c,0xb1,0x4b,0x4f,0x4a,0xba,0x5d,0x0d,0xc2,0x48,0x01,0x0e,
+ 0x38,0x00,0x70,0x46,0xe7,0x61,0xc9,0x07,0x8d,0x86,0x13,0xa9,0xa0,0x97,0xbb,0x34,
+ 0xd7,0x73,0x76,0x20,0x5c,0xb3,0x6c,0x2c,0x40,0x1b,0xdb,0x8f,0xa7,0xf5,0xc7,0xcf,
+ 0x32,0x6a,0xee,0x99,0x82,0x33,0x1d,0x57,0x08,0x46,0xa2,0x06,0xec,0x3d,0xbd,0xb7,
+ 0xfe,0xb7,0xc3,0x87,0x56,0x14,0xb4,0x80,0xe4,0xaa,0x2c,0x60,0x3b,0xc8,0xc5,0x4e,
+ 0xc4,0x11,0xb7,0x36,0x22,0xc2,0xff,0x00,0xae,0xd8,0x1d,0x51,0x6f,0xdd,0x42,0x21,
+ 0x70,0x0a,0x9f,0x0a,0xc3,0xee,0x76,0xbf,0xdb,0xc1,0xd8,0xe0,0x90,0xda,0xe3,0x3f,
+ 0xc8,0xff,0x00,0x9b,0x51,0x24,0x9b,0x01,0xb7,0x27,0x6d,0xfc,0x8b,0x1e,0x30,0xd5,
+ 0x4c,0xc9,0x33,0xac,0xf2,0xe8,0x0c,0x54,0x05,0x57,0x05,0x40,0x20,0x70,0x46,0x00,
+ 0x4b,0xc2,0x7e,0x30,0x1e,0x86,0x55,0x63,0x26,0xa1,0x17,0x70,0x6c,0x3d,0x20,0x72,
+ 0xa4,0x1d,0xad,0xf5,0xb8,0x23,0xf5,0xd9,0xa3,0x1a,0xcc,0xa5,0xdd,0x5b,0x50,0xf4,
+ 0xc6,0x18,0x5c,0xad,0xcd,0xc8,0xb1,0x1c,0xdb,0xe9,0x8f,0x26,0xcc,0x4a,0xcb,0xa2,
+ 0xe0,0xc8,0xbb,0x0d,0x7b,0x86,0x02,0xc4,0x02,0x3c,0xf1,0xe7,0x6d,0xb1,0xed,0x6d,
+ 0x5c,0x7d,0xc3,0xdd,0x74,0x57,0x75,0xd4,0x34,0x9d,0x40,0x03,0xb8,0x1b,0x6c,0x08,
+ 0x04,0x7f,0xa6,0x0d,0x77,0x46,0xd2,0xd2,0x4e,0xc4,0x11,0xeb,0x8e,0x29,0xc1,0x7d,
+ 0x44,0xc8,0x8b,0x6b,0x71,0xbd,0xbf,0xd3,0x8d,0xf0,0xdb,0x4a,0xac,0xd2,0xe9,0x96,
+ 0x52,0x65,0x05,0x89,0x43,0xf9,0xae,0x7d,0x87,0xf4,0xc2,0x63,0x48,0xeb,0x6a,0xa3,
+ 0x8a,0x47,0x5a,0x64,0x60,0x43,0xb8,0x1a,0x82,0x5b,0x92,0x00,0xfd,0x3f,0xa9,0xc1,
+ 0xb5,0xe3,0xb7,0x14,0x91,0xd7,0x49,0x4d,0x31,0x36,0x30,0xcc,0x4b,0x17,0xdf,0xca,
+ 0xdb,0xf2,0x0b,0x71,0x7d,0xb6,0xb6,0x0b,0x51,0x19,0x0b,0x57,0x7a,0x95,0x41,0xa9,
+ 0xe9,0x9e,0x1a,0x73,0x6b,0x80,0xac,0x09,0xf5,0x03,0xa8,0x0d,0xc9,0xb6,0xfe,0x39,
+ 0xd8,0x78,0x18,0x19,0x99,0xb5,0x44,0xa2,0x49,0x59,0x95,0x09,0x45,0x0c,0x6c,0xc0,
+ 0x0f,0x7f,0xe6,0x36,0xdc,0x5c,0x7d,0xbd,0xb0,0xaa,0xb8,0x8c,0x93,0x2b,0x49,0x2d,
+ 0x9a,0x38,0x94,0x14,0x90,0x06,0xd8,0x1d,0xad,0xc7,0xa7,0x63,0x6e,0x6c,0x38,0xe7,
+ 0x0d,0x84,0x31,0xa4,0x15,0x51,0xaa,0xd3,0xc2,0xa0,0x77,0x22,0xb3,0x14,0xed,0xd8,
+ 0xd8,0x58,0x8e,0x77,0x00,0x0c,0x55,0x4a,0xdb,0x29,0x68,0x1e,0x5f,0x9d,0xae,0x88,
+ 0x13,0x1a,0x93,0x62,0xd2,0xea,0xb1,0x2d,0xc1,0x53,0x66,0x20,0x8b,0x0d,0x5c,0x5c,
+ 0x5b,0x7c,0x30,0x47,0xcc,0xcc,0x24,0x2e,0xa5,0xca,0x80,0xe4,0xc8,0x74,0x84,0xb1,
+ 0x1a,0x4d,0xb7,0x04,0x81,0x61,0xe0,0xdc,0x79,0xc2,0x25,0x8e,0x48,0xcb,0xc5,0x5a,
+ 0x20,0x62,0x54,0x84,0x70,0xc1,0x80,0x8c,0x90,0x56,0xd7,0xb5,0xc5,0x8f,0xde,0xc2,
+ 0xde,0x30,0x3d,0x3d,0x5b,0xaa,0x35,0x83,0x0d,0x08,0xc3,0x4c,0xdb,0x0d,0x4b,0xe7,
+ 0xe9,0xce,0xdf,0x6f,0xae,0xe1,0x04,0xfd,0x6b,0xa4,0x70,0x52,0x4e,0x46,0xa4,0x63,
+ 0xa2,0xe4,0x92,0x40,0xb5,0x8a,0xb1,0xb8,0xdc,0x12,0x4f,0xb6,0xf8,0x00,0x44,0xcc,
+ 0xcf,0x0d,0x1c,0xaa,0x91,0xb1,0x2c,0xcb,0xc6,0xa1,0xf9,0x6e,0x0f,0xde,0xc0,0x5c,
+ 0xed,0x83,0x7b,0x92,0x53,0x53,0x2c,0x32,0x46,0xec,0x2e,0x49,0xba,0x83,0x62,0x45,
+ 0xf6,0xf7,0xf6,0xfb,0xe0,0x44,0xae,0x27,0x30,0x88,0x24,0x8a,0x89,0x2f,0xa3,0x59,
+ 0x3a,0x5d,0xbc,0x90,0xad,0xc5,0xc8,0x27,0x7f,0xb9,0xdf,0x8c,0x02,0x7b,0x25,0x24,
+ 0x03,0x49,0x6d,0x07,0x6e,0x12,0x64,0x1a,0x1e,0xc1,0xe2,0x01,0x8a,0x9d,0x89,0xbd,
+ 0xc9,0xd8,0xaf,0x1f,0xb7,0xd7,0x0b,0x4b,0xd5,0x2a,0xcb,0x4f,0x1a,0x47,0x10,0x60,
+ 0x3b,0x71,0x2e,0x9d,0x0f,0x60,0x06,0xd6,0xe2,0xe2,0xd7,0x17,0xe3,0x7d,0xf0,0xc5,
+ 0x45,0x29,0x58,0xda,0x3a,0x7d,0x6f,0x04,0x70,0x31,0x11,0xcc,0x6c,0xdb,0xec,0x74,
+ 0xb0,0xda,0xfb,0xdb,0xea,0x2e,0x46,0x16,0x2b,0x52,0x56,0x86,0x09,0x54,0xc1,0x19,
+ 0x62,0x23,0xfc,0x56,0x55,0xe5,0x6e,0x34,0xfd,0xce,0xff,0x00,0xa6,0x00,0xf5,0x40,
+ 0x25,0xbb,0x32,0xca,0xba,0x48,0xd5,0x23,0x6c,0x09,0xdd,0xd8,0x8b,0x5a,0xde,0x08,
+ 0xb3,0x70,0x37,0xb8,0xc3,0x1b,0x89,0x8b,0x4a,0x64,0x20,0x0b,0x20,0xd3,0x70,0xa6,
+ 0xf7,0xb7,0xdb,0xcd,0xce,0x1d,0x92,0x86,0x69,0x59,0xd9,0x95,0x4c,0xa9,0x21,0x78,
+ 0xfd,0x44,0x69,0x1e,0xeb,0xf5,0xdc,0x11,0xfe,0xec,0x0a,0x03,0x35,0x7a,0xb2,0xd5,
+ 0x44,0xb2,0x3a,0x5d,0x51,0xe4,0xd1,0xa8,0x06,0xe7,0x7d,0xae,0x2c,0x49,0xfa,0x1c,
+ 0x43,0x94,0x09,0x3c,0x22,0x6a,0x21,0x84,0x6b,0x55,0xb1,0x51,0xa5,0x91,0x88,0xb8,
+ 0xb7,0x16,0xbf,0xde,0xc7,0xec,0x70,0x05,0x4a,0xca,0x40,0xb2,0xb8,0x94,0x5d,0xb4,
+ 0x09,0x08,0xb5,0xb9,0x1f,0xfe,0xa0,0xff,0x00,0x7e,0x70,0x55,0x3d,0x50,0x85,0xcc,
+ 0x55,0x11,0xfa,0x15,0x49,0x45,0x00,0x06,0x8c,0x8d,0xac,0x2f,0xe0,0x5e,0xe3,0xdc,
+ 0x61,0x25,0x9a,0x12,0xf5,0x31,0xcd,0xa5,0xf6,0x59,0x03,0x1b,0xa9,0x6e,0x41,0x1c,
+ 0x5e,0xf7,0x1b,0x1f,0x38,0x03,0xd1,0x0b,0x41,0xe8,0xd6,0xb1,0x09,0x02,0x4b,0x2c,
+ 0x91,0x69,0x56,0x06,0xdb,0x93,0xfd,0x37,0xdb,0x6f,0xef,0x82,0x4b,0x49,0x14,0x71,
+ 0x99,0x40,0xee,0x85,0x55,0xd1,0x6d,0x24,0x02,0x48,0x04,0x7e,0xdf,0xbe,0x17,0x21,
+ 0xef,0x36,0x89,0x57,0x53,0x2e,0xa0,0x80,0xa8,0xd8,0xed,0xb5,0x87,0xd2,0xc3,0xce,
+ 0x3e,0xa1,0xa3,0x69,0xd3,0x4d,0x43,0x08,0xa6,0xd0,0xe2,0x24,0x24,0x10,0x5a,0xe6,
+ 0xea,0xd6,0xb1,0x1c,0x83,0xfa,0x9d,0xbc,0xe1,0x72,0x4a,0x9f,0x24,0xcd,0x61,0xd7,
+ 0xdb,0x5f,0xfd,0x31,0xa5,0x95,0xad,0xab,0x4a,0xea,0x20,0x5f,0xf5,0xf4,0xe0,0x58,
+ 0x75,0xa4,0x51,0xb0,0xf9,0x73,0x34,0x6c,0xb2,0x0d,0x5f,0x9d,0x85,0xaf,0xb0,0xe0,
+ 0x8b,0x6f,0x63,0xbf,0xb5,0xf8,0xc4,0xc4,0x90,0x41,0x1d,0x3c,0x2e,0xb0,0x88,0x04,
+ 0xeb,0xb3,0x45,0x3b,0xb4,0x5a,0x4d,0x95,0xec,0xaf,0xea,0x00,0x72,0x45,0xf6,0x6f,
+ 0x71,0x70,0x01,0xf9,0x60,0xba,0xe2,0x57,0xed,0xbc,0x0a,0x8c,0x80,0x9b,0x6a,0x5b,
+ 0x8b,0x7d,0xc7,0xbf,0xd0,0xfd,0x30,0xdc,0x28,0x54,0x76,0x67,0x44,0x24,0xca,0x21,
+ 0x96,0x15,0x70,0xc9,0x50,0x21,0x90,0xfa,0x58,0x11,0x6b,0xab,0x58,0x1d,0xb6,0xbd,
+ 0xc1,0xe3,0x6f,0x7d,0x85,0xa6,0x9c,0x4d,0x4f,0x40,0xf3,0x69,0x90,0x17,0x28,0xc8,
+ 0x36,0x2a,0xdc,0x32,0xdf,0x9d,0xb9,0xbf,0x9f,0xe9,0x89,0x12,0x16,0x59,0x6a,0x1e,
+ 0x56,0x31,0x77,0x62,0xb3,0x82,0xb6,0x04,0x82,0x19,0x6c,0x47,0x91,0xfd,0x78,0xc4,
+ 0x45,0x3d,0x0c,0xd4,0xfd,0xc7,0x0c,0x5d,0x63,0x73,0xa7,0xb4,0xe0,0xad,0xd9,0x5b,
+ 0xf3,0x2f,0x27,0x7b,0x9d,0xbf,0xb6,0x18,0x10,0x8d,0xda,0x72,0x1d,0x6b,0x15,0x28,
+ 0xa7,0x90,0x05,0xdd,0x5d,0x38,0x25,0x43,0x1b,0x8b,0xf8,0x36,0xdf,0x6f,0x6c,0x79,
+ 0x98,0x21,0x8e,0x9a,0x1f,0x95,0x95,0x5c,0xc1,0x2a,0x58,0xba,0x05,0x6f,0x6e,0x57,
+ 0x90,0x4b,0x7d,0xc5,0xce,0x25,0xe8,0x22,0x96,0xb6,0x9d,0x54,0xc3,0x14,0xd3,0x42,
+ 0xe0,0xa0,0x0c,0x23,0x2c,0x0e,0xdb,0xf1,0xa9,0x40,0xb3,0x5f,0xc7,0xd4,0x5c,0x61,
+ 0x8a,0x68,0xa2,0x66,0x96,0x32,0x9f,0x27,0x30,0x9e,0xc8,0xee,0x49,0xb1,0x37,0x05,
+ 0x48,0xe6,0xf7,0x1c,0x8f,0xa1,0xe3,0x04,0x12,0xa7,0x2a,0x2a,0x58,0x94,0x3b,0xbc,
+ 0x65,0xfb,0x63,0x4b,0x6e,0xf7,0x62,0x42,0xe9,0xff,0x00,0xf2,0x17,0x37,0xf1,0xb0,
+ 0xd8,0x5f,0x05,0xac,0x69,0x2a,0x0e,0xdc,0x92,0x2a,0x54,0x04,0x63,0xb6,0xa5,0x46,
+ 0x50,0x75,0x15,0x6f,0xfe,0xdb,0x5c,0x7d,0x7e,0x98,0x4d,0x4d,0x23,0x30,0x94,0x8a,
+ 0x72,0x03,0xfa,0xa4,0x42,0x84,0x3d,0x98,0xf1,0x71,0x7b,0x5b,0x9f,0xb1,0xc2,0xe1,
+ 0x91,0xe8,0x50,0x45,0xde,0x75,0x62,0xc5,0xd8,0xad,0x95,0x1c,0xdc,0x69,0x36,0x17,
+ 0xff,0x00,0x5f,0x27,0xdc,0xe1,0x46,0x0e,0x51,0x06,0x94,0x45,0x44,0x93,0xd1,0xca,
+ 0xb1,0x54,0xea,0x5b,0xb7,0xa1,0x03,0x6a,0x04,0x31,0xd8,0xf3,0xb8,0x26,0xfc,0xe1,
+ 0x99,0xd5,0xe6,0x8a,0x21,0x4c,0xe0,0x33,0x59,0x9d,0x5e,0x4d,0x66,0x30,0x4d,0xef,
+ 0x61,0x6b,0xee,0x36,0xfb,0xfd,0x31,0x36,0x60,0x10,0x4d,0x23,0x46,0x44,0xf0,0x4a,
+ 0xb6,0x7b,0xa6,0xa0,0x11,0xec,0x46,0xaf,0xf2,0xee,0x0e,0xde,0x2e,0x71,0x12,0x62,
+ 0x55,0x81,0x5e,0x2d,0x1a,0x43,0x8b,0xb0,0x36,0x65,0x28,0x2c,0x01,0xbe,0xe0,0xde,
+ 0xc0,0x79,0xb1,0x36,0xdf,0x0c,0x30,0xa0,0x34,0x69,0x7c,0xf0,0xf7,0xa9,0xda,0xa0,
+ 0x2a,0x08,0xd5,0x3f,0x29,0x24,0xb2,0xb0,0xb5,0x9b,0xf5,0x07,0x9d,0xcd,0xf6,0x3b,
+ 0xf2,0x33,0x54,0x4e,0x92,0x83,0x24,0x2f,0x02,0x03,0x76,0xee,0xa1,0x0a,0xbc,0x6e,
+ 0x58,0xf9,0xb1,0x1b,0x73,0xbe,0x24,0x21,0x41,0x3c,0x90,0x33,0x6a,0x49,0x63,0x00,
+ 0x49,0x1c,0x65,0x49,0x60,0x41,0x21,0x80,0x3b,0x1d,0xc5,0xae,0x7d,0xaf,0xf4,0xc1,
+ 0x15,0xb5,0x2b,0x28,0x32,0x2c,0x82,0x5a,0x69,0x57,0xf0,0xd1,0xd0,0x1d,0x3e,0x08,
+ 0x6b,0xf3,0xa4,0x9d,0xb7,0x04,0xdb,0x6f,0xa5,0xc0,0x22,0x45,0xe5,0x42,0xc8,0xc2,
+ 0xa2,0x12,0x10,0xb5,0x34,0xe3,0x62,0xa5,0xb4,0xa9,0xf6,0x24,0xb6,0xe2,0xe3,0x7b,
+ 0x13,0xb7,0xb6,0x06,0x7a,0x1a,0xa8,0xad,0x0d,0x44,0x36,0x67,0x6d,0x70,0xbb,0x30,
+ 0x21,0xdb,0xc5,0xad,0xee,0x31,0x2d,0x1e,0x5d,0x35,0x53,0x81,0x98,0x55,0x77,0x9c,
+ 0xb2,0x24,0x10,0x14,0x29,0xde,0x24,0x0d,0xd1,0x6d,0xa4,0x93,0x71,0xe9,0x62,0x0f,
+ 0xe8,0x30,0xb9,0x29,0x57,0x2e,0xac,0x5a,0x68,0xe5,0x6b,0xa8,0x62,0x63,0x90,0x69,
+ 0x31,0xf2,0x2c,0x45,0xae,0x6c,0x6f,0xcd,0xbc,0xed,0x82,0x55,0x75,0x4a,0xbe,0x6b,
+ 0x3b,0x01,0x2b,0x24,0x55,0x3f,0x87,0x61,0x1f,0x8b,0x91,0x6b,0x12,0x0d,0xed,0x7b,
+ 0xdc,0x0f,0xa6,0xe3,0x0e,0xf7,0x63,0x78,0xd2,0xa1,0x4b,0x49,0x4d,0x76,0x56,0xd2,
+ 0xc2,0xca,0x41,0x1a,0x88,0x04,0x93,0xa4,0x7f,0x5e,0x71,0x2f,0x1e,0x48,0x90,0xbb,
+ 0xb1,0x92,0x36,0x8d,0xb7,0xed,0xd8,0x86,0x17,0x04,0x30,0x26,0xd6,0xb1,0xdb,0x6f,
+ 0xeb,0x81,0x69,0xb2,0x5a,0x4a,0x55,0x78,0x29,0x6b,0x9b,0x5a,0xb1,0x92,0x3b,0x05,
+ 0xbb,0x73,0xb7,0x9e,0x37,0xdf,0xe9,0xf5,0xc4,0x04,0x27,0xc6,0xd5,0xa5,0x55,0x54,
+ 0x89,0x2a,0xf4,0xab,0x2b,0x36,0xa5,0x0a,0xde,0x58,0x16,0x01,0xb5,0x78,0xb6,0x9f,
+ 0xb0,0xc1,0xd3,0x4c,0x26,0xb7,0x67,0x5d,0x1d,0x41,0x5d,0x50,0x08,0x9b,0x65,0x02,
+ 0xde,0x9b,0x9f,0xa3,0x1b,0xdb,0x8d,0xf1,0xec,0x94,0xf1,0xe6,0x14,0x74,0xb5,0xd4,
+ 0x63,0xb7,0x3c,0x54,0xc3,0xbe,0x00,0x01,0x08,0x05,0x48,0x36,0x1c,0x36,0x96,0x37,
+ 0xf1,0xb8,0x36,0xf1,0x80,0x92,0xaf,0xf0,0xcc,0x57,0xee,0x2c,0x73,0x77,0x89,0x71,
+ 0xaf,0xd2,0xed,0xb8,0xdf,0x7b,0x69,0xe2,0xdf,0x94,0x81,0xe2,0xf8,0xac,0x04,0xe0,
+ 0x52,0x90,0xec,0x2c,0x0d,0x45,0x24,0x52,0x46,0x59,0xa9,0x47,0xe3,0xa4,0x97,0x5b,
+ 0x6a,0x37,0x37,0xde,0xf6,0x24,0x7e,0xc4,0x61,0xa6,0x8b,0xb7,0xda,0x9e,0x09,0x25,
+ 0x30,0x88,0x43,0x3b,0xbb,0xad,0xc8,0xf2,0x01,0x26,0xf6,0xdf,0xdb,0x6e,0x70,0x9a,
+ 0x49,0x0c,0x13,0xb4,0x3d,0xb3,0x3d,0x29,0x81,0x66,0x48,0xde,0x3d,0x60,0xa9,0xe4,
+ 0xa8,0x3b,0x83,0xbd,0x8f,0x3b,0xae,0x1b,0x8d,0x0c,0x31,0x46,0xd5,0x0d,0xdc,0xa5,
+ 0x96,0x50,0x85,0x91,0xc3,0x58,0x5a,0xe4,0x03,0xfe,0x61,0xa6,0xc4,0x1e,0x3e,0xb7,
+ 0x18,0x54,0xc5,0x15,0x00,0xb5,0x6a,0xc3,0x3a,0x88,0x8f,0xcc,0x29,0x2e,0xc7,0x75,
+ 0x04,0x15,0xb1,0xdb,0xff,0x00,0x78,0x3b,0x73,0x63,0x80,0x23,0xa5,0x93,0xb4,0xcb,
+ 0xd8,0x8e,0x37,0x88,0xb9,0x30,0x68,0x22,0xe7,0x55,0xae,0xb7,0xbe,0xd6,0x04,0x8d,
+ 0xfe,0xd8,0x79,0x9c,0x47,0x50,0xe0,0x86,0xa9,0x82,0x58,0xc8,0x92,0x40,0x86,0xd1,
+ 0x3b,0x32,0xaa,0x39,0x07,0xf9,0x75,0x69,0xe3,0xdf,0x9e,0x46,0x1a,0xad,0xd0,0x29,
+ 0xa4,0x0b,0x23,0xfe,0x0a,0x92,0x43,0x90,0x34,0x30,0xdb,0x7b,0x73,0xe6,0xe3,0xe9,
+ 0x85,0x72,0x47,0x70,0x93,0x0a,0x77,0x27,0xaa,0x10,0x32,0xe9,0x8e,0x33,0x22,0xc6,
+ 0x0e,0xe2,0x23,0xbd,0xc0,0xf3,0x6b,0x5f,0xdc,0x6c,0x6d,0xce,0x3d,0x9e,0x05,0x58,
+ 0x66,0x31,0xc8,0x62,0xac,0xed,0x17,0x4b,0xd9,0xb5,0xdc,0x73,0x63,0xb6,0xd6,0xb6,
+ 0xdc,0x86,0xb6,0xfb,0x60,0x5a,0x97,0x32,0x49,0x38,0x40,0x88,0xdd,0x93,0x22,0x28,
+ 0x5f,0x20,0x00,0x77,0x1b,0xf3,0xe3,0xd8,0x8c,0x3b,0x51,0x34,0x68,0xe6,0xef,0x1c,
+ 0xce,0x2c,0xc1,0xa2,0x6b,0x91,0xc5,0xad,0xf7,0xe3,0xf5,0xc2,0x83,0xd5,0x57,0x78,
+ 0x5e,0xd4,0x54,0x4c,0xd4,0xdd,0xe8,0xe2,0x68,0x15,0xe3,0xd4,0xea,0x1b,0x4d,0x94,
+ 0x9b,0x12,0x05,0xc0,0x24,0x1f,0xe5,0xfb,0x62,0x30,0xac,0x10,0x33,0x4a,0x1e,0x69,
+ 0xd4,0x2e,0xa9,0x84,0x71,0x77,0x04,0x45,0x0f,0x36,0xe7,0xf5,0xb0,0xf3,0x89,0x08,
+ 0xa9,0x51,0x29,0xea,0x23,0x12,0x05,0x46,0xd2,0xe6,0x20,0xc4,0x69,0x2c,0xa7,0x50,
+ 0x06,0xfe,0x2d,0x6b,0x73,0xc6,0x19,0x45,0x44,0xbd,0x4b,0xa1,0x99,0x19,0xc9,0x90,
+ 0x04,0xbf,0xa6,0xd6,0x2b,0x71,0xe0,0xdc,0x8e,0x7f,0x98,0x9f,0x18,0xb0,0x1c,0xa8,
+ 0x72,0x53,0x95,0x30,0x4e,0xb5,0x72,0xab,0xc3,0x24,0xb1,0x47,0x52,0xa4,0xb7,0x6c,
+ 0x31,0x7d,0x47,0x7f,0x50,0xbf,0x9b,0x0b,0x71,0xce,0x3c,0xac,0x8d,0x0c,0xc6,0x18,
+ 0xa5,0x12,0x86,0x1b,0x34,0x60,0xbe,0xa0,0x14,0x32,0x80,0x47,0x9e,0x0f,0xb8,0x38,
+ 0x72,0x92,0x57,0x02,0x7d,0xde,0x29,0x4c,0x4a,0x19,0x48,0xe4,0xea,0x1a,0x48,0xbe,
+ 0xf7,0x1e,0x1b,0xe9,0x81,0x25,0x99,0xe4,0xae,0x5d,0x53,0x6a,0x98,0xb8,0x6b,0x90,
+ 0x40,0x75,0x16,0x0a,0x49,0x1e,0x78,0xdf,0x6d,0xfe,0xf8,0xac,0x90,0x05,0xa8,0x40,
+ 0xa4,0x85,0x8d,0xc4,0xef,0x28,0x32,0x53,0x33,0x03,0xa0,0xb1,0x37,0x0c,0x6d,0xb8,
+ 0x06,0xc7,0x8d,0xad,0xf5,0xc3,0xd0,0xc2,0x93,0xc7,0x51,0xd8,0x31,0x1d,0x69,0x78,
+ 0xf9,0x12,0x6b,0x17,0x04,0x0f,0x16,0x37,0xfc,0xa7,0x92,0x45,0xbc,0x8c,0x3d,0x3d,
+ 0x4c,0x72,0x46,0xa4,0xfe,0x24,0x71,0x36,0xb6,0xb9,0x25,0xd8,0x03,0x66,0xfd,0x8e,
+ 0xf7,0xe4,0x82,0x0f,0xd9,0x48,0x6e,0xc6,0x2a,0x5b,0xc7,0x47,0x32,0xac,0x92,0xc3,
+ 0x72,0xed,0x20,0x5b,0x5e,0xc6,0xd7,0x2d,0xfe,0x5e,0x7f,0x28,0xf2,0x70,0x80,0x02,
+ 0x50,0x01,0x11,0x12,0x4d,0x3c,0x8f,0x51,0x2c,0x55,0x12,0xd3,0x22,0x90,0xc7,0x4b,
+ 0x32,0x10,0x6c,0x75,0x5b,0x80,0xc2,0xe3,0x7e,0x78,0xb9,0xc4,0x7e,0xa6,0x0d,0x46,
+ 0x4b,0x77,0x62,0x8c,0x58,0x12,0x75,0xc6,0x2e,0x2c,0x1b,0x71,0xb7,0xb1,0x1e,0xeb,
+ 0x7c,0x19,0x96,0x07,0x81,0xbf,0xe2,0x51,0xd6,0x64,0x71,0x34,0x0d,0xa8,0x10,0xcd,
+ 0xa0,0x1d,0x24,0x8f,0xca,0xf7,0x1e,0x4e,0xf6,0x1e,0xf8,0x7e,0x2a,0x83,0x52,0xe6,
+ 0x39,0xbb,0x62,0x47,0xb1,0x8d,0xa4,0x83,0x5a,0x6b,0x5d,0x37,0xb9,0xd8,0xdb,0xed,
+ 0xc5,0xef,0x6c,0x39,0xca,0x7e,0x79,0x55,0xda,0x89,0x91,0xa2,0x11,0x04,0x80,0x4c,
+ 0xd1,0x9b,0xac,0x60,0x21,0x17,0x3a,0x6d,0x7b,0xef,0x70,0x0d,0x85,0xb8,0x00,0x8f,
+ 0x37,0x2e,0xa1,0x20,0x8a,0x68,0x7b,0xb2,0xc6,0x89,0x3c,0x7a,0x52,0x50,0x81,0x23,
+ 0xb9,0x00,0x86,0x75,0x6b,0x15,0x60,0x4f,0x23,0xef,0xbd,0xf1,0xf6,0x67,0x1c,0x53,
+ 0xc8,0x92,0x26,0x9a,0x7d,0x43,0xe6,0x54,0x9b,0x48,0xcb,0x20,0x7f,0x5a,0x96,0x02,
+ 0xcc,0x01,0x00,0xaf,0xd0,0x0b,0x73,0x85,0xc9,0x01,0x95,0xa3,0x8e,0x76,0x66,0x89,
+ 0x42,0xcc,0x58,0x9d,0x40,0x70,0x09,0x55,0x27,0x62,0x08,0xb9,0x1b,0xde,0xe7,0x10,
+ 0x61,0xc9,0x47,0x28,0x1a,0x28,0x9a,0x29,0x4c,0x1f,0x2e,0xdd,0xe8,0x37,0x68,0x9d,
+ 0xec,0x54,0x82,0x6e,0xa0,0xff,0x00,0x37,0x9e,0x3f,0xae,0x14,0x69,0x8c,0x55,0x28,
+ 0x61,0x45,0x31,0xc6,0xa1,0x5d,0x5a,0xc3,0x72,0x2c,0x6c,0x0d,0xb9,0x5f,0x17,0xc2,
+ 0x2a,0x69,0xd8,0xcb,0x18,0xac,0x12,0xcd,0x11,0x60,0x45,0x40,0xb9,0x27,0x49,0xb7,
+ 0xdc,0x81,0x72,0x2f,0xc8,0x20,0x60,0xbf,0x96,0x35,0xf0,0xc5,0x2c,0x93,0x33,0x86,
+ 0x40,0x35,0x91,0xf9,0xd4,0x86,0x2b,0xfb,0x1b,0xe2,0x55,0x25,0xaa,0x29,0xa3,0x43,
+ 0x09,0x87,0xb7,0xdd,0xed,0xbc,0x3c,0x90,0x4d,0x80,0xb0,0x06,0xff,0x00,0x4e,0x47,
+ 0x9d,0xf9,0xc3,0xf0,0xd3,0xc1,0xdb,0x8d,0x69,0xdc,0x07,0x6b,0x68,0xbe,0x8b,0x86,
+ 0x16,0x04,0x05,0x06,0xfc,0xfd,0x4f,0x9d,0xb0,0x2b,0x40,0xd1,0x25,0x3f,0x78,0x87,
+ 0x76,0x36,0x64,0x0e,0x00,0x4f,0x04,0x91,0xe7,0x71,0xc8,0xe7,0xec,0x70,0xc5,0x45,
+ 0x35,0x4c,0x54,0xd3,0x4f,0x4e,0x2f,0x1a,0x10,0x74,0xa3,0xdd,0x8a,0xe9,0xb8,0x6b,
+ 0x6c,0x2d,0x7d,0xb6,0xbe,0x2c,0x6a,0xb1,0x22,0x57,0x14,0x73,0x68,0x0a,0x83,0xd4,
+ 0x49,0x2a,0xfc,0x1f,0xca,0x48,0x23,0x7b,0xdb,0x6d,0xcf,0x8f,0xbe,0x1e,0xcc,0x28,
+ 0xe3,0x92,0x9e,0x66,0xee,0x53,0xbe,0x99,0x1b,0x57,0x70,0x15,0x91,0x97,0xc0,0xf2,
+ 0x2d,0xf7,0xc7,0x95,0xd5,0xf4,0xd0,0xa4,0x91,0xd5,0xfe,0x1b,0xbb,0x77,0xb4,0x38,
+ 0x2c,0xaf,0xec,0x4b,0x71,0xfc,0xd6,0xfe,0xe3,0x01,0xd2,0xd4,0xc2,0xcf,0xae,0x37,
+ 0x5e,0xd8,0xb2,0xd8,0x6f,0x71,0xbe,0xc7,0xc8,0x3b,0x61,0xd4,0xe1,0x03,0x47,0x45,
+ 0x1b,0xd3,0xb1,0x59,0xc4,0x4c,0xde,0x90,0xd7,0x00,0x44,0xa4,0x5b,0x51,0xda,0xcc,
+ 0x6f,0x7b,0x01,0xc7,0x3b,0x6c,0x70,0xeb,0x54,0xd3,0x88,0xa6,0xa6,0x96,0x66,0x9a,
+ 0x02,0x3b,0xc4,0x29,0x2a,0x8c,0xd7,0xd2,0x08,0x3b,0x05,0x6b,0x30,0xd8,0xdd,0x4d,
+ 0xb9,0x3b,0xda,0x5c,0x50,0x53,0x55,0x22,0x40,0x24,0x30,0x4e,0x5c,0x76,0xde,0xe4,
+ 0x80,0xf7,0x24,0x73,0xb8,0xfd,0xec,0x71,0x1a,0x72,0x86,0x59,0x87,0xcc,0x29,0x8c,
+ 0x93,0xa0,0xc8,0x06,0xa5,0x00,0xee,0x2c,0x79,0x2b,0x66,0xda,0xdc,0x6f,0xc0,0xc4,
+ 0x69,0xda,0x38,0x50,0x5d,0x55,0x25,0x54,0xb4,0xb0,0x46,0x23,0x78,0x56,0x60,0xbb,
+ 0xac,0x9e,0x9f,0x58,0xb7,0xa4,0xb0,0xe4,0x8e,0x0d,0xed,0xfa,0xe3,0xd8,0x63,0x30,
+ 0xbb,0xa4,0x0c,0xb2,0xd4,0xf6,0x89,0xd3,0x34,0xac,0x5a,0xfc,0xb2,0xa0,0x23,0xd4,
+ 0xff,0x00,0xca,0x2f,0xf5,0x02,0xe7,0x11,0x95,0xd4,0x3a,0x54,0x56,0x52,0x46,0x52,
+ 0x7a,0x67,0x00,0xc5,0xa8,0x95,0x95,0x45,0xbd,0x5e,0x48,0x23,0x7b,0x8e,0x3d,0x57,
+ 0x1e,0xc1,0xee,0xe7,0xcc,0xe5,0x0e,0x93,0xcc,0x5a,0x48,0x77,0x49,0x14,0x10,0xcb,
+ 0x6e,0x48,0xbe,0xed,0xa4,0xe8,0xdb,0xf5,0xc3,0xdd,0xa1,0x5b,0x93,0x73,0xb2,0x24,
+ 0x74,0x93,0x54,0x48,0xc6,0x99,0xe1,0xfc,0x54,0x63,0x79,0x0f,0x3a,0x94,0xed,0xb1,
+ 0xdd,0x74,0xdf,0xdc,0x1f,0x71,0x86,0xdd,0xe5,0xa3,0x57,0x53,0xa2,0xa2,0x9d,0xdc,
+ 0x15,0xb0,0xd2,0x83,0x55,0x8a,0x38,0x20,0xea,0x50,0x56,0xde,0x76,0x23,0x7b,0xe3,
+ 0xc9,0xea,0xde,0x66,0x95,0xe1,0x89,0x14,0xcd,0xa5,0x54,0x3d,0xd5,0x1a,0x41,0x7b,
+ 0xbb,0x16,0x36,0x03,0xf5,0xe4,0x9f,0x7c,0x26,0x29,0x67,0xcb,0xe5,0x85,0x26,0x96,
+ 0x4a,0x59,0xcc,0x77,0x24,0xcb,0xa7,0x40,0xdc,0x85,0x20,0x78,0x00,0x8f,0x50,0xb7,
+ 0x38,0x0e,0xf4,0x4b,0x4b,0xff,0xd9};
diff --git a/lib/libesp32/JPEGDEC/test_images/thumb_test.h b/lib/libesp32/JPEGDEC/test_images/thumb_test.h
new file mode 100644
index 000000000..0b43b0074
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/test_images/thumb_test.h
@@ -0,0 +1,1286 @@
+//
+// thumb_test
+//
+const uint8_t thumb_test[] PROGMEM = { 0xff,0xd8,0xff,0xe1,0x1e,0x28,0x45,0x78,0x69,0x66,0x00,0x00,0x4d,0x4d,0x00,0x2a,
+ 0x00,0x00,0x00,0x08,0x00,0x0d,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x0f,0xc0,
+ 0x00,0x00,0x01,0x01,0x00,0x03,0x00,0x00,0x00,0x01,0x0b,0xd0,0x00,0x00,0x01,0x0f,
+ 0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xaa,0x01,0x10,0x00,0x02,0x00,0x00,
+ 0x00,0x0a,0x00,0x00,0x00,0xb2,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x06,
+ 0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xbc,0x01,0x1b,
+ 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xc4,0x01,0x28,0x00,0x03,0x00,0x00,
+ 0x00,0x01,0x00,0x02,0x00,0x00,0x01,0x31,0x00,0x02,0x00,0x00,0x00,0x0f,0x00,0x00,
+ 0x00,0xcc,0x01,0x32,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xdc,0x02,0x13,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x87,0x69,0x00,0x04,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x00,0xf0,0x88,0x25,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x03,0x20,0x00,0x00,0x03,0x26,0x73,0x61,0x6d,0x73,0x75,0x6e,0x67,0x00,0x53,0x4d,
+ 0x2d,0x47,0x39,0x36,0x35,0x55,0x31,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,
+ 0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x47,0x39,0x36,0x35,0x55,0x31,0x55,0x45,
+ 0x53,0x37,0x44,0x54,0x45,0x31,0x00,0x00,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a,
+ 0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x1f,0x82,0x9a,
+ 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x6a,0x82,0x9d,0x00,0x05,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x02,0x72,0x88,0x22,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x02,
+ 0x00,0x00,0x88,0x27,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0xfa,0x00,0x00,0x90,0x00,
+ 0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x32,0x32,0x30,0x90,0x03,0x00,0x02,0x00,0x00,
+ 0x00,0x14,0x00,0x00,0x02,0x7a,0x90,0x04,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x00,
+ 0x02,0x8e,0x91,0x01,0x00,0x07,0x00,0x00,0x00,0x04,0x01,0x02,0x03,0x00,0x92,0x01,
+ 0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xa2,0x92,0x02,0x00,0x05,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x02,0xaa,0x92,0x03,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x02,0xb2,0x92,0x04,0x00,0x0a,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xba,0x92,0x05,
+ 0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xc2,0x92,0x07,0x00,0x03,0x00,0x00,
+ 0x00,0x01,0x00,0x02,0x00,0x00,0x92,0x09,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0x92,0x0a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0xca,0x92,0x90,
+ 0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,0x02,0xd2,0x92,0x91,0x00,0x02,0x00,0x00,
+ 0x00,0x07,0x00,0x00,0x02,0xda,0x92,0x92,0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,
+ 0x02,0xe2,0xa0,0x00,0x00,0x07,0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0xa0,0x01,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa0,0x02,0x00,0x04,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x0f,0xc0,0xa0,0x03,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x0b,0xd0,0xa0,0x05,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x02,0xa2,0x17,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0xa3,0x01,0x00,0x01,0x00,0x00,
+ 0x00,0x01,0x01,0x00,0x00,0x00,0xa4,0x02,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0xa4,0x03,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x05,
+ 0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x1a,0x00,0x00,0xa4,0x06,0x00,0x03,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x00,0x00,0xa4,0x20,0x00,0x02,0x00,0x00,0x00,0x18,0x00,0x00,
+ 0x02,0xea,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x3c,0x00,0x00,
+ 0x00,0xf0,0x00,0x00,0x00,0x64,0x32,0x30,0x32,0x30,0x3a,0x30,0x38,0x3a,0x30,0x39,
+ 0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x32,0x30,0x32,0x30,0x3a,0x30,
+ 0x38,0x3a,0x30,0x39,0x20,0x31,0x34,0x3a,0x34,0x32,0x3a,0x31,0x33,0x00,0x00,0x00,
+ 0x17,0x12,0x00,0x00,0x03,0xe8,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x64,0x00,0x00,
+ 0x00,0xa6,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,
+ 0x00,0x74,0x00,0x00,0x00,0x64,0x00,0x00,0x10,0xcc,0x00,0x00,0x03,0xe8,0x38,0x37,
+ 0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37,0x35,0x37,0x31,0x39,0x00,0x00,0x38,0x37,
+ 0x35,0x37,0x31,0x39,0x00,0x00,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56,
+ 0x4d,0x20,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31,0x56,0x41,0x00,0x00,0x02,
+ 0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x04,0x52,0x39,0x38,0x00,0x00,0x02,0x00,0x07,
+ 0x00,0x00,0x00,0x04,0x30,0x31,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x09,0x01,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x40,
+ 0x01,0x01,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x03,
+ 0x00,0x00,0x00,0x01,0x00,0x06,0x00,0x00,0x01,0x12,0x00,0x03,0x00,0x00,0x00,0x01,
+ 0x00,0x06,0x00,0x00,0x01,0x1a,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x98,
+ 0x01,0x1b,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0xa0,0x01,0x28,0x00,0x03,
+ 0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x02,0x01,0x00,0x04,0x00,0x00,0x00,0x01,
+ 0x00,0x00,0x03,0xa8,0x02,0x02,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x1a,0x78,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x48,
+ 0x00,0x00,0x00,0x01,0xff,0xd8,0xff,0xdb,0x00,0x84,0x00,0x17,0x10,0x11,0x14,0x11,
+ 0x0e,0x17,0x14,0x13,0x14,0x1a,0x18,0x17,0x1b,0x22,0x39,0x25,0x22,0x1f,0x1f,0x22,
+ 0x46,0x32,0x35,0x29,0x39,0x53,0x49,0x57,0x56,0x51,0x49,0x50,0x4f,0x5b,0x67,0x83,
+ 0x6f,0x5b,0x61,0x7c,0x63,0x4f,0x50,0x72,0x9c,0x74,0x7c,0x88,0x8c,0x93,0x95,0x93,
+ 0x59,0x6e,0xa1,0xad,0xa0,0x8f,0xab,0x83,0x90,0x93,0x8d,0x01,0x18,0x1a,0x1a,0x22,
+ 0x1e,0x22,0x43,0x25,0x25,0x43,0x8d,0x5e,0x50,0x5e,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0xff,0xc0,0x00,0x11,
+ 0x08,0x00,0xf0,0x01,0x40,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xff,
+ 0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,
+ 0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01,
+ 0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,
+ 0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,
+ 0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,
+ 0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,
+ 0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,
+ 0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,
+ 0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,
+ 0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,
+ 0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,
+ 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,
+ 0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,
+ 0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02,
+ 0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,
+ 0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,
+ 0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,
+ 0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,
+ 0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,
+ 0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,
+ 0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,
+ 0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,
+ 0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,
+ 0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,
+ 0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,
+ 0x00,0xe4,0xe8,0xa0,0x0c,0xf4,0xa9,0xa3,0x87,0x72,0x96,0x3d,0xa8,0x02,0x20,0x09,
+ 0x35,0x32,0x42,0x4f,0xde,0x38,0xa7,0x46,0xb8,0xed,0x53,0xaa,0xd2,0x00,0x8e,0x35,
+ 0x5e,0x82,0xa6,0x51,0x48,0xab,0x52,0xaa,0xd0,0x00,0xa2,0xa3,0x9d,0x70,0x41,0x20,
+ 0x91,0x8e,0x82,0xac,0x2a,0xd2,0xc9,0x19,0x29,0xf2,0xfd,0xe1,0xc8,0xa1,0x3b,0x31,
+ 0x34,0x67,0x32,0x81,0x27,0x00,0x81,0x8e,0x86,0x96,0x9f,0x26,0xe2,0xe4,0xc9,0x9d,
+ 0xc7,0xae,0x69,0x95,0xd7,0x15,0x64,0x73,0xb7,0x76,0x32,0x53,0x85,0x3e,0xf5,0x00,
+ 0x5f,0x5a,0x7c,0xc4,0xee,0xc5,0x47,0x5c,0xf3,0x77,0x67,0x44,0x55,0x90,0xed,0xc0,
+ 0x74,0xa4,0x27,0x34,0x94,0x54,0x0c,0x28,0xa2,0x8a,0x00,0x2a,0x68,0x46,0xd1,0xb8,
+ 0xd4,0x20,0x64,0xe2,0xae,0x42,0x22,0xda,0x44,0x85,0x87,0xa6,0x06,0x6a,0x92,0x6f,
+ 0x61,0x37,0x61,0x73,0x91,0xc7,0x35,0x13,0xf5,0xdc,0xc3,0x1f,0xad,0x5a,0xf2,0xa3,
+ 0xc0,0x11,0xce,0xbc,0x76,0x3c,0x7f,0x3e,0x29,0xaf,0x6d,0x29,0x19,0x1c,0x81,0xdc,
+ 0x00,0x47,0xe9,0x51,0x66,0xb7,0x1d,0xd3,0x21,0x8c,0x82,0x38,0x39,0xc7,0xbe,0x6a,
+ 0xb4,0xed,0xba,0x53,0xe8,0x38,0xab,0x25,0x7c,0x88,0xd8,0x9e,0xbd,0x6a,0x90,0xe4,
+ 0xd3,0x40,0x4b,0x08,0xe6,0xad,0x2d,0x41,0x18,0xc0,0xa9,0x94,0xd0,0xc0,0x94,0x1a,
+ 0x5c,0xd3,0x01,0xa3,0x34,0x80,0x76,0x68,0xcd,0x37,0x34,0x99,0xa0,0x07,0xe6,0x93,
+ 0x34,0xdc,0xd2,0x66,0x80,0x1d,0x9a,0x4c,0xd2,0x66,0x93,0x34,0x00,0xec,0xd2,0x66,
+ 0x9b,0x9a,0x33,0x40,0xc5,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xec,0xd2,0x66,0x9b,
+ 0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6,0x93,0x34,0x00,0xc5,0x50,0x3a,0x54,0xe3,
+ 0xe5,0xb7,0x3e,0xe6,0xa3,0x41,0x52,0xb8,0xc4,0x6a,0x29,0x88,0x48,0xd7,0x8a,0x99,
+ 0x45,0x35,0x05,0x4a,0xa2,0x81,0x8e,0x51,0x52,0xa8,0xa6,0xad,0x48,0xb4,0x80,0x7a,
+ 0x8a,0x76,0x29,0x05,0x2d,0x02,0x22,0x92,0x14,0x72,0x0b,0x0e,0x47,0x43,0x50,0x3c,
+ 0xa1,0x3e,0x59,0x6d,0x91,0xc0,0xee,0x38,0x3f,0xa5,0x5b,0x34,0xc2,0xa1,0xba,0x8c,
+ 0xd3,0x4d,0xa1,0x35,0x72,0x91,0x6b,0x57,0xed,0x2c,0x7f,0x5e,0x45,0x30,0xdb,0x46,
+ 0xfc,0xa4,0x88,0x7e,0xbc,0x55,0xa7,0x81,0x0f,0x6c,0x54,0x1e,0x57,0x96,0x18,0x2e,
+ 0x30,0xdd,0x73,0x4e,0xe1,0xa9,0x03,0x59,0xb8,0xe4,0x29,0x23,0xd5,0x79,0xa8,0x8c,
+ 0x24,0x77,0xfc,0xea,0x42,0x25,0x43,0x90,0xd9,0xa3,0xed,0x33,0x0e,0x1f,0xe6,0xfa,
+ 0xd0,0x17,0x64,0x25,0x18,0x76,0xa6,0xd4,0xfe,0x7a,0x1f,0xbd,0x1e,0x3e,0x94,0x6e,
+ 0x8d,0xba,0x31,0x1f,0x5a,0x02,0xe4,0x51,0x8f,0x9b,0x35,0x2e,0x68,0xda,0x07,0x42,
+ 0x0d,0x37,0x70,0x3d,0x0d,0x6b,0x0d,0x11,0x9c,0xb5,0x1d,0x9a,0x37,0x32,0xe0,0xf2,
+ 0x3d,0xe8,0x52,0x37,0x0c,0xf4,0xa5,0x76,0xf9,0x58,0x33,0x03,0x9e,0x94,0xe5,0x2b,
+ 0x3b,0x02,0x88,0xdb,0x89,0x9d,0xe3,0x08,0xce,0xcc,0x09,0xee,0x73,0x55,0xd4,0x64,
+ 0xd2,0xb9,0xc9,0xfa,0x52,0xa0,0xac,0xa4,0xf5,0x2d,0x6c,0x4c,0xb5,0x20,0xa8,0xd6,
+ 0x9d,0x50,0x50,0xfc,0xd1,0x9a,0x6d,0x2d,0x00,0x2e,0x68,0xcd,0x25,0x14,0x00,0x66,
+ 0x8c,0xd1,0x82,0x7a,0x0a,0x70,0x8d,0xcf,0x45,0x34,0x00,0xcc,0xd1,0x52,0x8b,0x79,
+ 0x0f,0x6a,0x78,0xb2,0x90,0xf6,0xfd,0x28,0x02,0xb5,0x15,0x75,0x74,0xf6,0x3d,0x73,
+ 0x52,0x2e,0x9e,0x3b,0x91,0x40,0x19,0xb4,0x60,0x9e,0x80,0xd6,0xb2,0xd9,0x46,0x3a,
+ 0xfe,0x94,0xf1,0x6f,0x1a,0xf6,0xfc,0x69,0x85,0xcc,0x81,0x1b,0x9f,0xe1,0x34,0xe1,
+ 0x03,0x9e,0xd5,0xad,0xe5,0xa0,0xfe,0x11,0x4a,0x00,0xec,0x00,0xa0,0x2e,0x65,0x0b,
+ 0x49,0x0f,0x6a,0x91,0x2c,0x58,0xf5,0xfe,0x75,0xa2,0x69,0xa7,0x27,0xa9,0x3f,0x4a,
+ 0x02,0xe6,0x30,0x38,0x35,0x2c,0x87,0xe6,0x0b,0xe8,0x2a,0x1c,0xa9,0x20,0xd2,0x97,
+ 0x05,0xc9,0xcf,0x5a,0x00,0xb0,0xb5,0x2a,0xd5,0x55,0x71,0xeb,0x52,0x2c,0x9e,0xf4,
+ 0x01,0x65,0x6a,0x45,0x35,0x59,0x64,0xa9,0x16,0x5a,0x40,0x59,0x06,0x97,0x35,0x5c,
+ 0x4a,0x29,0x7c,0xd1,0xeb,0x40,0x12,0x93,0x40,0xa8,0x7c,0xd0,0x6a,0x45,0x39,0x5a,
+ 0x00,0x47,0x3c,0x54,0x0d,0x52,0x48,0xd5,0x0b,0x1a,0x00,0x6b,0x54,0x4c,0x33,0x4f,
+ 0x26,0x9a,0x68,0x02,0x26,0x8c,0x1e,0xd4,0xcd,0x85,0x4e,0x54,0xd4,0xd4,0x6c,0x27,
+ 0xa0,0x26,0x98,0x15,0x4a,0xb0,0x39,0x14,0xd2,0x08,0xab,0xc2,0xda,0x46,0xe8,0x86,
+ 0xa4,0x5d,0x36,0x66,0xfe,0x1c,0x0a,0x00,0xcd,0x0c,0xc3,0xbd,0x1b,0xc9,0xad,0x65,
+ 0xd1,0xd8,0xfd,0xe6,0xa9,0x57,0x47,0x84,0x7d,0xe3,0x9f,0xc6,0x9d,0xc4,0x61,0xf7,
+ 0xa9,0x91,0x4e,0x38,0x15,0xba,0x9a,0x75,0xb2,0x7f,0x08,0xfa,0xe2,0xa6,0x5b,0x78,
+ 0x97,0x8d,0x9d,0x29,0x01,0x84,0xb1,0x39,0xe8,0xa6,0xa5,0x5b,0x59,0x5b,0xf8,0x6b,
+ 0x68,0x22,0x8e,0x40,0x1f,0x5c,0x53,0xbe,0x9d,0x7d,0xe8,0x03,0x21,0x6c,0x25,0x35,
+ 0x2a,0xe9,0xad,0xfc,0x47,0x15,0xa4,0x08,0x6e,0x0f,0x06,0x9b,0x9c,0x70,0x68,0x02,
+ 0xa2,0xe9,0xc8,0x3a,0x9a,0x91,0x6c,0xa2,0x1f,0x5a,0xb0,0x0f,0xaf,0xe6,0x28,0x34,
+ 0x01,0x18,0x82,0x31,0xfc,0x34,0xed,0x88,0x3f,0x84,0x52,0xe6,0x9a,0xc7,0x8e,0x28,
+ 0x10,0xa4,0xe3,0x8e,0x28,0x07,0xeb,0xf4,0xa8,0x3c,0xd0,0x4e,0x2a,0x45,0xe4,0x71,
+ 0x40,0xc7,0x73,0xcf,0xa7,0xa5,0x07,0xa6,0x7a,0x8f,0x5a,0x06,0x09,0xc6,0xfc,0x1f,
+ 0x7a,0x4c,0x95,0x3d,0x28,0x00,0x3e,0xa4,0x63,0xde,0x93,0xa0,0xe3,0xf5,0xa3,0x9e,
+ 0xdc,0x7b,0x50,0x06,0x3a,0x1e,0x68,0x00,0xce,0x3a,0x7c,0xa7,0xd0,0xd2,0x12,0x0f,
+ 0x4a,0x31,0xea,0x29,0x0f,0xb7,0x5a,0x00,0x4c,0x60,0xf3,0x4b,0xd4,0x62,0x8f,0xaf,
+ 0x22,0x93,0xe9,0x92,0x28,0x03,0x9f,0x2d,0x4d,0xcd,0x3c,0xc6,0x47,0x26,0x90,0x29,
+ 0x3d,0xa9,0x8c,0x4c,0xd3,0x83,0x53,0x4f,0x06,0x81,0x40,0x8b,0x2b,0x9c,0x53,0xb2,
+ 0x6a,0x21,0x27,0xb5,0x28,0x93,0x27,0x81,0x48,0x09,0x77,0x1f,0x5a,0x4d,0xc6,0xaf,
+ 0x43,0xa6,0x3b,0xa0,0x67,0x60,0xb9,0xe7,0x15,0x3a,0x69,0x90,0x8f,0xbc,0xc4,0xd0,
+ 0x06,0x6c,0x44,0x96,0xab,0xa0,0xe1,0x6a,0xe2,0x5a,0x40,0x9d,0x13,0xf3,0xa9,0x02,
+ 0x22,0xf0,0x11,0x47,0xe1,0x40,0x19,0x66,0x37,0x73,0xf2,0xa9,0xa5,0x5b,0x19,0x9f,
+ 0xb6,0x2b,0x57,0x24,0x0c,0x8f,0xca,0x94,0x1d,0xe3,0x23,0xa8,0xed,0x45,0x87,0x73,
+ 0x35,0x74,0xc6,0xfe,0x26,0x02,0xa4,0x5d,0x3a,0x25,0xfb,0xc4,0x9a,0xba,0x47,0xff,
+ 0x00,0xaa,0x90,0x9c,0x0e,0x7f,0x03,0x40,0x88,0x16,0xd6,0x05,0xe8,0x99,0xa9,0x04,
+ 0x48,0xbd,0x10,0x52,0x6f,0xf9,0xb0,0x3f,0x2a,0x90,0x7f,0x9f,0x6a,0x00,0x40,0x00,
+ 0xe4,0x74,0xf6,0xe2,0x8e,0x73,0xd6,0x97,0x1d,0xe8,0xc6,0x69,0x80,0xd2,0x71,0x48,
+ 0x0e,0x6a,0xb5,0xc5,0xca,0x47,0x2e,0xc0,0xe3,0x77,0x71,0x9a,0x9e,0x16,0x0c,0x01,
+ 0xe7,0x9e,0x86,0x90,0x0f,0xc7,0x6a,0x5f,0xf2,0x29,0x70,0x7d,0x31,0xf5,0xa3,0x1e,
+ 0xf4,0xc0,0x6e,0x3f,0x0a,0x0f,0xbd,0x2f,0x43,0xc8,0xfc,0x69,0x0e,0x00,0xc9,0x3f,
+ 0x8d,0x00,0x43,0x70,0xe1,0x13,0x73,0x1c,0x7b,0xd4,0x31,0x4f,0xe6,0x1f,0x5a,0xcd,
+ 0xd5,0x99,0xde,0xeb,0x68,0x3b,0x95,0x47,0x18,0xa9,0x74,0x72,0xde,0x63,0x2e,0x38,
+ 0x1c,0xd2,0x03,0x5d,0x41,0xc7,0x50,0x05,0x38,0x0f,0x6f,0xc2,0x98,0x5b,0x61,0xce,
+ 0xc0,0x45,0x28,0x64,0x3d,0x10,0x50,0x02,0x90,0x3b,0x11,0x54,0x35,0x1b,0xcf,0xb3,
+ 0xc5,0x84,0x1f,0x31,0x38,0x19,0xed,0x57,0xb7,0xec,0x3b,0x5a,0x35,0xc7,0xa8,0xaa,
+ 0x57,0xd6,0x8b,0x70,0x41,0x24,0xa1,0x1c,0x02,0x46,0x41,0xfa,0xd3,0x03,0x36,0xd2,
+ 0xe1,0xe4,0xb8,0x0a,0xe7,0x3b,0xab,0x6d,0x71,0xc0,0x3f,0x9d,0x67,0x5a,0xe9,0xc6,
+ 0x29,0x83,0xb9,0x0d,0x83,0xc0,0x4e,0x95,0xa5,0x8e,0x06,0x40,0x3c,0x74,0xa0,0x00,
+ 0xaf,0xa8,0xa0,0x64,0x0c,0x67,0x23,0xde,0x80,0x48,0x1e,0xab,0xef,0x4a,0x46,0x79,
+ 0x1c,0x8f,0xe5,0x48,0x04,0xa4,0x34,0xa7,0x81,0xde,0x93,0xaf,0x7a,0x00,0x4e,0xbd,
+ 0xe8,0xa5,0xc5,0x21,0xa0,0x02,0x93,0xa7,0x3c,0xfd,0x45,0x2f,0xf9,0xff,0x00,0x3e,
+ 0xb4,0x87,0x9a,0x00,0xc3,0x77,0x14,0xdd,0xf8,0x07,0x15,0x16,0xe3,0x49,0x92,0x69,
+ 0x8c,0x52,0x79,0xa2,0x95,0x63,0x77,0xce,0xd5,0x24,0x0e,0xb4,0xe1,0x18,0xc7,0x27,
+ 0x14,0x00,0x8b,0x92,0x70,0x2a,0x78,0x53,0x32,0xa2,0xf5,0x24,0x81,0x4d,0x1c,0x0c,
+ 0x0f,0xce,0xac,0x59,0x2e,0x6f,0x21,0x1f,0xed,0x8a,0x40,0x74,0x2c,0xbc,0x9a,0x4c,
+ 0x7e,0x74,0xa4,0xf3,0x49,0x9a,0x04,0x28,0xc6,0x3d,0xbf,0x95,0x27,0x5f,0xf0,0xa4,
+ 0xef,0xef,0xfc,0xe9,0x0f,0x34,0x00,0xbc,0x8e,0x47,0x4f,0x4a,0x69,0x1c,0xe4,0x64,
+ 0x1f,0x5a,0x5c,0xff,0x00,0x9f,0x5a,0x3a,0x8c,0x8a,0x00,0x50,0x77,0x7a,0x06,0xf4,
+ 0xaa,0x9a,0x85,0xe0,0xb3,0x8b,0x3b,0x77,0x33,0x1c,0x00,0x6a,0xc9,0xe4,0x8a,0xa7,
+ 0xa9,0x5a,0x9b,0x98,0xc6,0xde,0x59,0x4e,0x70,0x69,0x81,0x52,0xc2,0xed,0xae,0x2e,
+ 0x36,0x9e,0x0f,0x5a,0xd9,0x5f,0xbb,0xc6,0x3f,0x3a,0xcd,0xd3,0x2c,0x0d,0xbb,0xb4,
+ 0x92,0xe3,0x71,0x18,0x00,0x76,0x15,0xa1,0x81,0xd8,0xd0,0x03,0x87,0x1e,0x98,0xa8,
+ 0xee,0x49,0x11,0x31,0x8c,0xf3,0x8e,0xd4,0xe0,0x40,0xe3,0x6f,0x3e,0xf4,0xbb,0xc9,
+ 0x04,0x64,0x8f,0x61,0xc5,0x00,0x72,0x9b,0x1f,0x7f,0xab,0x13,0xeb,0xc9,0x35,0xd2,
+ 0xc2,0x36,0x40,0x81,0xfa,0x80,0x01,0x23,0xd6,0x9f,0xe4,0x44,0xcf,0xbb,0x0b,0xbf,
+ 0xd7,0x60,0xcf,0xe7,0x4e,0x23,0x03,0x03,0x8c,0x50,0x03,0x4a,0x81,0xd4,0xb6,0x3d,
+ 0x45,0x18,0x00,0xe0,0xee,0xfc,0x4d,0x03,0x23,0xfc,0x29,0x78,0xc7,0x1c,0xaf,0xa7,
+ 0xa5,0x20,0x10,0x8c,0x75,0x1f,0x91,0xa4,0xe0,0x73,0xc7,0xd7,0x14,0xec,0x52,0x63,
+ 0xd3,0xf2,0xf5,0xa6,0x05,0x79,0x6d,0x23,0x9c,0x8f,0x35,0x50,0x91,0xd3,0xb7,0x1f,
+ 0x51,0x52,0x45,0x02,0xc0,0x81,0x10,0x2a,0x01,0xc8,0x51,0xc8,0x34,0xfe,0xdc,0x74,
+ 0xf4,0x3d,0xa8,0xe8,0x3a,0x64,0x50,0x01,0x9c,0xf6,0xc1,0xa6,0x91,0xea,0x3f,0x11,
+ 0x4f,0xed,0x91,0xcd,0x20,0xa0,0x04,0x04,0xff,0x00,0xbc,0x3f,0x5a,0x00,0xc0,0xca,
+ 0xf2,0x3b,0xad,0x29,0x5f,0x4f,0xd2,0x93,0x9e,0xe0,0x9f,0x71,0xd6,0x90,0x0b,0x9d,
+ 0xc3,0x20,0xe7,0xf9,0x8a,0x6e,0x73,0xf5,0xfe,0x74,0xa5,0x4e,0x72,0x3a,0xfa,0xd1,
+ 0xd7,0x20,0xf0,0xde,0x9e,0xb4,0x00,0x9c,0x73,0xeb,0xde,0x9b,0x8c,0x72,0xbc,0x53,
+ 0x8f,0xbf,0x6a,0x4f,0xf3,0xfe,0x7d,0x28,0x00,0x52,0x09,0xc7,0x46,0xf4,0xa0,0x8c,
+ 0x7e,0x14,0x84,0x03,0xfe,0x71,0x8f,0xf0,0xa0,0x31,0x1c,0x37,0x20,0x77,0xee,0x28,
+ 0x00,0xa4,0x34,0xe2,0x3b,0x8e,0x9f,0xe7,0xf2,0xa6,0xff,0x00,0x4f,0xf3,0xf8,0x50,
+ 0x00,0x69,0x3f,0xad,0x2d,0x21,0x00,0xf0,0x7f,0x2a,0x00,0xc2,0x74,0xd8,0xd8,0xc7,
+ 0xe9,0x4d,0x15,0x79,0xa2,0x57,0x1b,0x76,0xfd,0x08,0xaa,0xf3,0x40,0xd0,0xb0,0x0c,
+ 0x31,0x9a,0x0b,0x68,0x8c,0x12,0x07,0x14,0xaa,0x41,0xeb,0x40,0x14,0xa0,0x0a,0x09,
+ 0x0c,0xf3,0xc5,0x5b,0xd3,0x06,0xeb,0xf8,0xbd,0x89,0x3f,0xa5,0x55,0x15,0x77,0x48,
+ 0x5c,0xde,0x83,0xe8,0xa4,0xd0,0x06,0xcb,0x52,0x70,0x7f,0x1a,0x53,0x49,0xef,0xd8,
+ 0xd0,0x20,0x34,0x75,0xfa,0xd1,0x49,0xd6,0x80,0x0c,0x51,0xdf,0xfc,0xf3,0x40,0x39,
+ 0xe0,0xf5,0xa3,0x93,0xf2,0x9e,0xbd,0x8f,0xad,0x00,0x06,0x80,0x48,0xe9,0x47,0xb1,
+ 0xeb,0x46,0xd6,0x3d,0x06,0x7e,0x94,0x00,0xbd,0xbd,0xe9,0xa7,0xae,0x45,0x4a,0xb1,
+ 0x39,0xf4,0x1f,0x8d,0x3c,0x5b,0xb1,0xff,0x00,0xf5,0x1a,0x60,0x57,0xeb,0xdb,0xea,
+ 0x29,0x4a,0xd5,0x91,0x6a,0xde,0x8d,0xf9,0x52,0xfd,0x9d,0x47,0x52,0x3f,0x16,0x14,
+ 0x01,0x50,0xaf,0xff,0x00,0x58,0xd2,0x83,0xeb,0xd6,0xad,0x08,0xa3,0x1f,0xc4,0xbf,
+ 0x9e,0x69,0xac,0xd6,0xa9,0xf7,0xa5,0x41,0xfa,0x7f,0x3a,0x00,0xaf,0x8a,0x36,0x1c,
+ 0xe4,0x53,0xda,0xfa,0xc5,0x3a,0xcc,0x0f,0xd3,0x15,0x13,0xeb,0x36,0x29,0xd0,0xb3,
+ 0x7e,0x26,0x80,0x1f,0xe5,0xb7,0xf7,0x4f,0xd2,0x97,0xc9,0x3e,0xd5,0x51,0xfc,0x41,
+ 0x6c,0x3e,0xe4,0x39,0xfa,0x8a,0x85,0xfc,0x48,0xdf,0xf2,0xce,0x10,0xb4,0x01,0xa4,
+ 0x20,0x27,0xff,0x00,0xac,0x29,0xe2,0xd9,0x8f,0x66,0xfc,0xab,0x09,0xfc,0x43,0x74,
+ 0xdd,0x36,0xaf,0xd0,0x54,0x0f,0xac,0x5e,0xbf,0x59,0x4f,0xe5,0x40,0x1d,0x2f,0xd9,
+ 0x71,0xd4,0x63,0xea,0x68,0x30,0xa2,0xf2,0xce,0x83,0xea,0x6b,0x93,0x6b,0xdb,0xa7,
+ 0xeb,0x2b,0xff,0x00,0xdf,0x46,0xa2,0x69,0x24,0x27,0x25,0xbf,0x5a,0x2c,0x07,0x5c,
+ 0x65,0xb4,0x4f,0xbd,0x73,0x18,0xf6,0x15,0x13,0x6a,0x1a,0x7a,0x75,0x99,0x8f,0xd1,
+ 0x6b,0x94,0x3b,0x8f,0x7a,0x4e,0x7d,0x69,0xd8,0x0e,0x9d,0xb5,0x9b,0x15,0x38,0x0b,
+ 0x2b,0x7d,0x0f,0xff,0x00,0x5e,0xa5,0x9b,0x6c,0xaa,0x92,0x21,0x38,0x61,0x95,0xfa,
+ 0x1a,0xe4,0xeb,0xa6,0xb4,0x60,0xfa,0x6c,0x04,0xe3,0x84,0x03,0x9f,0x6e,0x29,0x00,
+ 0xe0,0xdd,0x03,0x75,0xec,0x68,0x23,0x14,0x1e,0x9e,0xab,0x49,0x9c,0x7b,0x8f,0xf3,
+ 0xd6,0x90,0x09,0xfe,0x7f,0xcf,0xf8,0x52,0x1f,0xf3,0xfe,0x7f,0xa5,0x38,0x8f,0x4f,
+ 0xf3,0xfe,0x34,0x9d,0x7f,0x1a,0x00,0x68,0xca,0xf2,0xbf,0x95,0x28,0x21,0xba,0x70,
+ 0x47,0x6a,0x29,0xa4,0x67,0xfa,0x63,0xfc,0xfe,0x94,0x00,0xa7,0x8f,0xf3,0x8f,0xff,
+ 0x00,0x55,0x21,0x19,0x1f,0xe7,0xfc,0x8a,0x04,0x9d,0x03,0xfd,0x03,0x0a,0x71,0x18,
+ 0xc7,0xe8,0x45,0x00,0x50,0x69,0x41,0x18,0x55,0x0b,0x50,0xcc,0x73,0xb7,0x3c,0xd4,
+ 0xa1,0x41,0x15,0x0c,0xc9,0xf3,0x50,0x8d,0xa5,0xb0,0xcc,0x52,0x62,0x8c,0x95,0xa7,
+ 0x2b,0x03,0x4c,0xc8,0x69,0xab,0xfa,0x30,0xff,0x00,0x49,0x73,0xe8,0x87,0xf9,0x8a,
+ 0xa4,0xc2,0xb4,0x34,0x65,0xc3,0x4c,0x7f,0xd9,0x02,0x80,0x34,0x8d,0x20,0xeb,0xc7,
+ 0x5f,0xe7,0x4a,0x69,0x0f,0x23,0xe9,0x48,0x41,0xd3,0xe9,0xdc,0x7a,0x50,0x48,0xfc,
+ 0xfb,0xd0,0x0e,0x7a,0x7d,0xee,0xfe,0xf4,0x9d,0xb8,0xe9,0xfc,0xa8,0x00,0xc0,0xe9,
+ 0xfe,0x45,0x1d,0x78,0x34,0x99,0xc7,0x04,0xfd,0x0f,0xa5,0x2f,0xd7,0x83,0x40,0x0b,
+ 0x9e,0xcd,0xf8,0x1f,0x5a,0x64,0xae,0xd1,0xae,0xe1,0xd4,0x7b,0x53,0xb1,0xeb,0xd2,
+ 0xa2,0xb9,0xff,0x00,0x55,0xfd,0x68,0x02,0x84,0x9a,0xed,0xdc,0x6d,0x80,0xc3,0xf2,
+ 0xa8,0x9b,0x5e,0xbc,0x6f,0xe2,0xac,0xf9,0x8e,0xe6,0x53,0xed,0x49,0x4c,0x0b,0xaf,
+ 0xac,0x5e,0x3f,0xf1,0x81,0xf4,0x51,0x51,0x36,0xa1,0x76,0xdf,0xf2,0xd9,0xc7,0xd1,
+ 0xb1,0x55,0xe8,0xa6,0x03,0x9a,0x69,0x9f,0xef,0x48,0xc7,0xea,0x69,0xb9,0x63,0xd5,
+ 0x8d,0x2d,0x2e,0x29,0xd8,0x06,0x6d,0xf7,0xa3,0x6d,0x3f,0x14,0x62,0x9d,0x80,0x66,
+ 0xd1,0x4b,0x8a,0x76,0xda,0x36,0x9f,0x4a,0x2c,0x03,0x71,0x45,0x4a,0xb6,0xf3,0x3f,
+ 0xdc,0x89,0xdb,0xe8,0xa4,0xd3,0x24,0x8d,0xa3,0x72,0x8e,0xa5,0x58,0x75,0x04,0x60,
+ 0x8a,0x00,0x65,0x14,0xb4,0x94,0x08,0x29,0x29,0x69,0x28,0x01,0xa6,0xba,0x3d,0x2d,
+ 0xb3,0xa6,0x47,0xea,0x09,0x1f,0xad,0x73,0xad,0x5b,0xfa,0x2b,0x6e,0xd3,0xd8,0x7a,
+ 0x39,0xfe,0x42,0xa5,0x8c,0xb3,0xdf,0x8c,0x83,0xdc,0x51,0x9f,0x4e,0x94,0x11,0x9f,
+ 0xf1,0x14,0x67,0xd4,0xf3,0xeb,0x52,0x02,0x63,0x00,0xfa,0x7a,0x50,0x46,0x79,0x1f,
+ 0xe7,0xfc,0xfa,0xd2,0xe0,0xf5,0xa4,0xe9,0xfe,0x71,0xff,0x00,0xea,0xa0,0x06,0x9f,
+ 0xf3,0xfe,0x7b,0xd2,0x1f,0xf3,0xfe,0x7b,0xd3,0xb8,0x3c,0x74,0xfd,0x3f,0xfd,0x54,
+ 0x84,0x11,0xfe,0x7f,0xce,0x28,0x01,0xa4,0x7a,0xf7,0xfc,0x7f,0xfd,0x74,0x83,0x29,
+ 0xd3,0x95,0x3d,0xa9,0x79,0x5f,0x71,0xe8,0x7b,0x51,0xdb,0x8e,0x47,0x70,0x68,0x02,
+ 0x90,0x5e,0x7a,0xd4,0x6e,0x39,0xeb,0x52,0x6e,0xc0,0xf7,0xa8,0xf9,0x26,0x9a,0x35,
+ 0x90,0xdd,0xa0,0xd3,0x1e,0x32,0x3a,0x54,0xb8,0xa5,0xc5,0x33,0x32,0xb8,0x6c,0x75,
+ 0xad,0x6d,0x23,0xee,0x4c,0x7e,0x83,0xf9,0xd6,0x73,0x46,0x0d,0x69,0xe9,0x08,0x56,
+ 0xda,0x4f,0x77,0xfe,0x94,0x98,0x8b,0x86,0x90,0xe4,0x1e,0x94,0xa7,0xff,0x00,0xd6,
+ 0x29,0x3b,0x71,0xfa,0xd2,0x01,0x3a,0xf2,0xbd,0x68,0x1c,0xf3,0xdf,0xb8,0xa3,0x83,
+ 0xce,0x71,0x48,0x7a,0xe4,0x70,0x47,0x51,0x40,0x0b,0xc1,0x19,0xed,0x40,0xf4,0x34,
+ 0x03,0x9f,0x99,0x7a,0xf7,0x14,0xa3,0x91,0x91,0xf9,0x50,0x02,0x63,0x15,0x0d,0xd7,
+ 0xfa,0xa3,0x56,0x2a,0xbd,0xdf,0xfa,0xa3,0x40,0x1c,0xdc,0x83,0x05,0x7e,0x9f,0xd6,
+ 0x96,0x89,0xbe,0xfa,0x7f,0xba,0x28,0xaa,0x00,0xa2,0x8a,0x5a,0x60,0x15,0xd1,0xe8,
+ 0x7a,0x15,0xb6,0xa1,0x65,0xe7,0xcc,0xf2,0x86,0xdc,0x57,0x0a,0x40,0x1f,0xca,0xb9,
+ 0xd1,0x5d,0xaf,0x85,0x3f,0xe4,0x12,0x7f,0xeb,0xa9,0xfe,0x42,0x98,0x02,0xf8,0x7f,
+ 0x4a,0x4c,0xe5,0x59,0xf1,0xd7,0xe7,0xff,0x00,0x0a,0x7f,0xf6,0x6e,0x95,0x0e,0x3f,
+ 0xd1,0x13,0xfe,0x04,0xc7,0xfa,0x9a,0x86,0xf5,0xe0,0x5b,0xf9,0x0c,0xe8,0xc5,0x7f,
+ 0xba,0x3b,0xfe,0xb4,0xd7,0xbc,0xb3,0xdc,0x36,0xda,0x97,0x03,0xa1,0x69,0x38,0xed,
+ 0xfe,0x15,0x56,0x15,0xd1,0x75,0x60,0xb1,0x8c,0x02,0xb6,0x76,0xe0,0x1e,0x87,0x68,
+ 0xa1,0xef,0x60,0x83,0x0a,0xa9,0x1a,0x93,0xd3,0x67,0xff,0x00,0x5a,0xa9,0xfd,0xb2,
+ 0xdf,0xaa,0xda,0x40,0x31,0xcf,0x20,0x9f,0xe4,0xb5,0x1c,0xd7,0xb1,0x60,0x79,0x16,
+ 0xab,0xe6,0x64,0xb1,0x65,0x53,0xc1,0xc1,0xc7,0xa5,0x3e,0x51,0x29,0xa3,0x62,0xca,
+ 0x65,0xbb,0x81,0x67,0x08,0x54,0x37,0x4c,0xf7,0xae,0x33,0xc4,0x89,0xb7,0x5b,0xb8,
+ 0xf7,0xc1,0xfd,0x05,0x76,0x1a,0x3a,0xba,0xe9,0xd1,0xab,0xf5,0x1e,0xd5,0xca,0xf8,
+ 0xa9,0x71,0xac,0x31,0xf5,0x45,0x3f,0xa5,0x67,0xd4,0xbb,0xdd,0x18,0x94,0x94,0xa6,
+ 0x8a,0x64,0x89,0x45,0x14,0x50,0x03,0x5b,0xa5,0x6d,0xe8,0x27,0x36,0xf3,0x2f,0xa1,
+ 0x07,0xf4,0xff,0x00,0xeb,0x56,0x2b,0x74,0xad,0x6f,0x0f,0xb7,0xcd,0x3a,0xfa,0x80,
+ 0x7f,0x9f,0xf8,0xd4,0xb1,0x9a,0x4d,0x9c,0xf7,0xcd,0x27,0xeb,0x4a,0x71,0xd0,0x51,
+ 0xc5,0x48,0x00,0x19,0xe4,0x7e,0x54,0xdf,0xf3,0xfe,0x7f,0xc2,0x82,0x49,0xe9,0x41,
+ 0xe7,0xaf,0x5e,0xf4,0x00,0x87,0x9f,0xe9,0x8f,0xf3,0xfa,0x52,0x06,0x20,0xff,0x00,
+ 0x9f,0xf3,0xf8,0x52,0x9e,0x7a,0xff,0x00,0x9f,0xf1,0xa4,0x3e,0xff,0x00,0xe3,0xff,
+ 0x00,0xeb,0xa0,0x03,0x83,0xca,0xfe,0x5f,0xe1,0x4c,0x23,0x1c,0x83,0x83,0xfe,0x7f,
+ 0x2a,0x71,0xe3,0x9f,0xf3,0xff,0x00,0xd7,0xa3,0x83,0xfe,0x7f,0xce,0x68,0x02,0x93,
+ 0x2e,0xe2,0x70,0x2a,0x3a,0x99,0xf0,0xa3,0x03,0xbd,0x31,0x57,0x34,0xd1,0xac,0xf7,
+ 0x1a,0x05,0x18,0xe6,0xa4,0x0b,0x49,0x8a,0x66,0x63,0x42,0xd6,0xa5,0x80,0xc5,0xa7,
+ 0x5c,0x12,0xc6,0xb3,0xb1,0x5a,0x76,0xa3,0x16,0x69,0xc7,0x52,0x7f,0x9d,0x26,0x22,
+ 0x4c,0xf7,0xfc,0x08,0xa3,0x19,0xfa,0xd1,0x8f,0xc7,0xd3,0xdc,0x52,0x73,0xd4,0x75,
+ 0x1f,0xad,0x20,0x02,0x4e,0x79,0x1c,0x8e,0xbe,0xe2,0x90,0x73,0xdf,0x91,0xd2,0x94,
+ 0xf3,0xfd,0x0d,0x21,0x19,0xf6,0x34,0x00,0x9c,0x83,0x91,0xc1,0x1d,0x45,0x3b,0xaf,
+ 0x23,0xaf,0x71,0x48,0x3e,0x6f,0xad,0x1d,0x39,0x14,0x00,0xee,0xa2,0xab,0xdd,0xff,
+ 0x00,0xaa,0x35,0x3d,0x57,0xbd,0x3f,0xba,0x3f,0x4a,0x00,0xe7,0x65,0xfb,0xeb,0xfe,
+ 0xea,0xff,0x00,0x2a,0x5a,0x49,0x7f,0xd6,0x8f,0xa0,0xfe,0x54,0xb4,0xc6,0x14,0x51,
+ 0x45,0x31,0x0a,0x2b,0xb4,0xf0,0x9f,0xfc,0x82,0x9f,0xfe,0xba,0x9f,0xe4,0x2b,0x8c,
+ 0x15,0xd9,0x78,0x4b,0xfe,0x41,0x72,0x7f,0xd7,0x53,0xfc,0x85,0x37,0xb0,0x0f,0xd4,
+ 0x24,0x56,0xb8,0x97,0x04,0x12,0xa3,0xf5,0xaa,0x3b,0x9d,0x42,0xb9,0x72,0x09,0xce,
+ 0x07,0xe3,0x8f,0xe9,0x56,0xae,0xd1,0xe3,0xb9,0x96,0x4c,0x15,0x3b,0x89,0xf4,0xc8,
+ 0xaa,0xe5,0x5a,0x79,0xf0,0xb9,0x66,0x6e,0xe7,0x8c,0xd5,0xbd,0x11,0xc1,0x55,0xea,
+ 0xfb,0x8b,0x3c,0xdb,0x94,0x2a,0xb1,0xe9,0xcf,0x02,0xb3,0x5a,0x66,0x59,0xb8,0x6c,
+ 0xe3,0xd6,0xb4,0x9a,0xd2,0x40,0x8c,0xd9,0x52,0x17,0xae,0x18,0x1a,0xac,0x65,0xb6,
+ 0x8c,0x8c,0x88,0xcb,0xf5,0x39,0x5c,0xd2,0x4f,0x52,0x29,0xb6,0xa5,0xef,0x23,0xa0,
+ 0xd2,0x5c,0xbe,0x9f,0x1b,0x1e,0xf9,0xae,0x6b,0xc5,0xeb,0x8d,0x4d,0x0f,0xac,0x43,
+ 0xf9,0x9a,0xe9,0x74,0x96,0x0d,0x62,0xa5,0x71,0x8c,0x9c,0x62,0xb9,0xff,0x00,0x18,
+ 0xaf,0xfa,0x5c,0x0d,0xeb,0x19,0x1f,0xad,0x4f,0x53,0xbe,0x9f,0xc0,0x8e,0x6c,0xd2,
+ 0x52,0x9a,0x4a,0x65,0x09,0x45,0x2d,0x25,0x00,0x21,0xe9,0x5a,0x3a,0x01,0xff,0x00,
+ 0x4b,0x71,0xea,0x87,0xf9,0x8a,0xce,0x3d,0x2a,0xee,0x88,0xd8,0xd4,0x14,0x7a,0xa9,
+ 0x1f,0xa5,0x26,0x33,0x71,0xf3,0x9f,0xe4,0x4d,0x37,0x9f,0x41,0xfe,0x34,0xf7,0xc0,
+ 0x63,0xd2,0x99,0x8c,0xf4,0xfc,0xaa,0x00,0x5c,0x86,0xf6,0x3e,0x94,0xdf,0xf3,0xe9,
+ 0xff,0x00,0xea,0xa0,0x8c,0xe3,0xfa,0x7f,0x9f,0xd2,0x8f,0xf3,0xfe,0x7f,0xc2,0x80,
+ 0x03,0xfe,0x7b,0x7f,0xfa,0xa9,0xbf,0xe7,0xd3,0xff,0x00,0xd5,0x4b,0xfe,0x7f,0xcf,
+ 0xad,0x14,0x00,0xd3,0xfe,0x7f,0xcf,0x6a,0x43,0x4e,0xff,0x00,0x23,0xfc,0xff,0x00,
+ 0x4a,0x4f,0xa7,0xe1,0x8f,0xf3,0xfa,0x50,0x05,0x32,0x39,0xa5,0x15,0x69,0x2d,0xd5,
+ 0xc1,0x27,0x23,0x9e,0x31,0x41,0xb4,0xf4,0x6f,0xcc,0x53,0x34,0x96,0xe5,0x62,0x0d,
+ 0x26,0x39,0xab,0x0d,0x6c,0xe3,0xa6,0x0f,0xe3,0x51,0x18,0x9c,0x75,0x53,0x41,0x0c,
+ 0x65,0x6a,0x5b,0xf1,0x6b,0x10,0xf6,0xfe,0xb5,0x96,0x6b,0x56,0x2e,0x2d,0xa2,0xff,
+ 0x00,0x74,0x50,0xc4,0x03,0xe5,0x38,0x61,0xf2,0x9e,0x94,0xac,0x0a,0x9f,0xf3,0xcd,
+ 0x19,0x19,0xd9,0x27,0x43,0xd0,0xd0,0xa4,0xa9,0xf2,0xdc,0xff,0x00,0xba,0x69,0x00,
+ 0x9f,0xc8,0xf5,0xa4,0xfe,0x7f,0xce,0x94,0x82,0xa4,0x9c,0x7d,0x45,0x04,0x64,0x64,
+ 0x1a,0x00,0x43,0xc8,0xc8,0xa5,0x07,0x3f,0x5a,0x40,0x7b,0xf7,0xee,0x29,0x71,0xdc,
+ 0x50,0x02,0xd5,0x4b,0xf3,0xfb,0x86,0xfa,0x7a,0xd5,0xac,0x7f,0x9f,0x5a,0xa9,0xa8,
+ 0xf1,0x6e,0xff,0x00,0x4a,0x00,0xc0,0x9b,0xfd,0x77,0xe0,0x3f,0x95,0x2d,0x24,0xdf,
+ 0xeb,0xcd,0x2d,0x31,0x85,0x14,0x51,0x4c,0x43,0x85,0x76,0x3e,0x12,0xff,0x00,0x90,
+ 0x6c,0xbf,0xf5,0xd4,0xff,0x00,0x21,0x5c,0x70,0xae,0xc3,0xc2,0x3f,0xf1,0xe1,0x37,
+ 0xfd,0x74,0xfe,0x82,0x9f,0x40,0x24,0xd5,0x03,0x35,0xd1,0x22,0x40,0x9c,0x85,0xea,
+ 0x33,0xfa,0xd3,0x0d,0xa2,0x88,0xb9,0x90,0x99,0x43,0x05,0xcf,0xb1,0xef,0x8a,0xd2,
+ 0xbc,0x86,0x2b,0x86,0x55,0x62,0x81,0x93,0x9c,0xb5,0x66,0xc8,0x5d,0xa6,0x0e,0xdb,
+ 0x43,0x28,0x1c,0x8e,0x71,0x55,0xba,0xb1,0xcd,0x55,0x42,0x1e,0xf3,0x43,0x1e,0xd0,
+ 0x41,0x6b,0x21,0x3c,0x31,0x7e,0x3e,0x94,0xdb,0x38,0x99,0xa2,0x53,0xb4,0x91,0x93,
+ 0x9e,0x3d,0xea,0x5b,0x89,0xde,0x48,0xf6,0x99,0x03,0x03,0xd7,0xe5,0x22,0xab,0x7c,
+ 0xc7,0x6a,0xee,0xe3,0xea,0x70,0x2a,0x69,0xc5,0xc0,0xc6,0x75,0xe3,0xcf,0x74,0x6d,
+ 0x69,0x99,0x10,0xc8,0xb8,0xc6,0x24,0x35,0x87,0xe3,0x24,0xf9,0xad,0x5f,0xd9,0x87,
+ 0xf2,0xad,0xad,0x2d,0x3c,0x8b,0x62,0x19,0x89,0xdc,0xe4,0xfd,0xdc,0x62,0xb2,0x7c,
+ 0x61,0xb5,0xad,0x6d,0xd8,0x10,0x70,0xc4,0x7e,0x94,0x75,0x3b,0x60,0x9f,0x2e,0xa7,
+ 0x24,0x69,0x29,0x4d,0x25,0x31,0x85,0x25,0x14,0x50,0x01,0x56,0x34,0x96,0xdb,0xa9,
+ 0x45,0xf5,0x23,0xf4,0xaa,0xf5,0x25,0x8b,0x6d,0xbf,0x84,0xff,0x00,0xd3,0x41,0xfc,
+ 0xe9,0x31,0x9d,0x34,0x84,0x67,0x9c,0xe2,0xa3,0x20,0x83,0xea,0x3d,0x6a,0x59,0x07,
+ 0x35,0x1f,0xb7,0x4a,0x80,0x17,0xaf,0x5e,0xfd,0xfb,0x1a,0x69,0xef,0x9f,0xc7,0x3f,
+ 0xe7,0xf5,0xa3,0x07,0xa0,0xfc,0x47,0xad,0x1e,0x9c,0xe7,0xd3,0xfc,0xff,0x00,0x4a,
+ 0x00,0x69,0xef,0x9f,0xd7,0xfc,0xfe,0xb4,0x87,0xdf,0xf5,0xff,0x00,0x3f,0xad,0x3b,
+ 0xe9,0xfa,0x7f,0x4f,0xf0,0xa4,0xf4,0xfe,0x9f,0xe7,0xf4,0xa0,0x04,0xf5,0xcf,0xe3,
+ 0x9f,0xeb,0xfe,0x34,0x87,0xbf,0xeb,0x9f,0xeb,0xfe,0x34,0xbf,0xe4,0x63,0xfa,0x7f,
+ 0x85,0x27,0xa7,0xe9,0x8f,0xe9,0xfe,0x14,0x01,0x24,0x6c,0x3a,0x73,0x9a,0x92,0xa0,
+ 0x40,0x7d,0x31,0x53,0x03,0x48,0xd2,0x5b,0x8b,0x49,0x4b,0x9a,0x43,0x41,0x22,0x10,
+ 0x0f,0x51,0x9f,0xa8,0xab,0x04,0x7c,0xaa,0xa3,0x81,0xb4,0x7e,0x15,0x5f,0x3c,0xd5,
+ 0x97,0xeb,0x8c,0xe3,0x8a,0x62,0x64,0x58,0x07,0xf7,0x72,0x77,0xfb,0xa6,0x8c,0x12,
+ 0x36,0xbf,0x55,0xe8,0x69,0x58,0x03,0xf2,0xb7,0xd4,0x1f,0x4a,0x39,0x3c,0x37,0xde,
+ 0x1f,0xa8,0xa0,0x40,0x1b,0x3c,0x77,0xe9,0xf5,0xa6,0xfd,0xd3,0xea,0x0d,0x04,0x66,
+ 0x94,0x12,0xc3,0xa6,0x7d,0x68,0x01,0x3d,0x30,0x7e,0x86,0x94,0x50,0x72,0x28,0xa0,
+ 0x05,0xf6,0xaa,0x3a,0x9f,0xfc,0x7b,0xbf,0xfb,0xa6,0xae,0xd5,0x0d,0x50,0xff,0x00,
+ 0xa3,0x3f,0xfb,0xbe,0xb9,0xa0,0x0c,0x49,0xbf,0xe3,0xe5,0xbe,0xb4,0xb4,0x93,0xff,
+ 0x00,0xc7,0xd3,0xfd,0x69,0x69,0x8c,0x28,0xa2,0x8a,0x60,0x38,0x57,0x5f,0xe1,0x0f,
+ 0xf8,0xf2,0x9b,0xfe,0xba,0x7f,0x4a,0xe3,0xc5,0x75,0xde,0x10,0x3f,0xe8,0x93,0xff,
+ 0x00,0xbe,0x3f,0x95,0x02,0x37,0x7c,0x84,0xf3,0x19,0xc8,0xc9,0x6c,0x75,0xf6,0xa8,
+ 0xd6,0xca,0x35,0x89,0x50,0x76,0x18,0xcf,0xad,0x58,0xa2,0x8b,0xb1,0x4a,0x2a,0x4a,
+ 0xcd,0x10,0x2d,0xaa,0x0c,0xe7,0x04,0x9e,0xf8,0xa8,0x64,0xd3,0x91,0xd4,0xfc,0xc7,
+ 0x3d,0xb8,0x15,0x76,0x8a,0x2e,0xc8,0x74,0x60,0xd5,0x9a,0x32,0x61,0xd2,0xe7,0x03,
+ 0x12,0x4f,0xf2,0xe7,0x21,0x47,0x18,0xac,0xff,0x00,0x14,0x5a,0x08,0x74,0xe8,0x9c,
+ 0x12,0x48,0x93,0x1d,0x7d,0x8d,0x74,0xd5,0x8d,0xe2,0xa5,0xdd,0xa3,0x13,0xfd,0xd7,
+ 0x53,0x4e,0xed,0x9a,0xad,0x15,0x91,0xc3,0x9a,0x4a,0x53,0x4d,0xa6,0x48,0x51,0x45,
+ 0x25,0x00,0x2d,0x10,0xb6,0xdb,0x84,0x3e,0x8c,0x0d,0x25,0x34,0xf0,0xd4,0x98,0xd1,
+ 0xd7,0x4a,0x39,0xed,0xf8,0xd4,0x7d,0xb1,0x9a,0x91,0x8e,0xe4,0x04,0x1e,0xa3,0xd2,
+ 0xa3,0xef,0xef,0xe9,0x50,0x02,0x63,0x1d,0x69,0x0f,0x7f,0xd7,0x3f,0xe7,0xf5,0xa7,
+ 0x73,0xdb,0xa8,0xed,0x48,0x7d,0xa8,0x01,0x0d,0x21,0xf7,0xfd,0x68,0xff,0x00,0x3e,
+ 0xbf,0xfe,0xb1,0x48,0x7a,0xff,0x00,0x9f,0xf3,0x8a,0x00,0x3d,0x7f,0xaf,0xf9,0xfd,
+ 0x69,0x0f,0x7f,0xd7,0x3f,0xd7,0xfc,0x69,0x69,0x3f,0xcf,0x1f,0xd2,0x80,0x24,0x06,
+ 0x9c,0x3d,0xea,0x31,0x52,0x03,0xc5,0x22,0x85,0xa4,0x26,0x8a,0x42,0x71,0x40,0x06,
+ 0x6a,0xcc,0x98,0xdd,0xc9,0xe2,0xa9,0x83,0xf3,0x0a,0xbb,0x27,0xde,0x3d,0xe9,0x88,
+ 0x60,0xe7,0xe5,0x07,0x9e,0xa0,0xd2,0x11,0xcf,0x3d,0x68,0x24,0x95,0xc8,0xe0,0x8a,
+ 0x5f,0xbe,0xb9,0x07,0x9a,0x04,0x27,0x51,0x9c,0x7d,0x69,0xbc,0x8e,0x47,0x5a,0x50,
+ 0x70,0x72,0x0f,0x1d,0xc5,0x07,0x8f,0xa5,0x00,0x2f,0x50,0x0f,0xaf,0xe9,0x45,0x34,
+ 0x1d,0xbd,0x79,0x53,0xde,0x9c,0x7e,0xf6,0x3f,0xc9,0xa0,0x04,0xac,0xfd,0x54,0xe2,
+ 0xdd,0xfe,0x95,0xa1,0xfe,0x45,0x66,0xea,0xc7,0xfd,0x1d,0xb1,0x40,0x18,0xd2,0x9c,
+ 0xdc,0xbf,0xfb,0xc6,0x9d,0x4c,0x7f,0xf5,0xc7,0xeb,0x4f,0xa6,0x30,0xa2,0x92,0x8a,
+ 0x00,0x70,0xad,0x4d,0x27,0x5a,0x93,0x4c,0x8e,0x44,0x48,0x95,0xf7,0x90,0x7e,0x63,
+ 0xd2,0xb2,0xa8,0xa6,0x07,0x48,0x7c,0x5b,0x71,0xda,0xde,0x2f,0xd7,0xfc,0x69,0xa7,
+ 0xc5,0x97,0x5d,0xa1,0x87,0xf2,0x3f,0xe3,0x5c,0xf6,0x68,0xcd,0x16,0x41,0x73,0xa0,
+ 0x3e,0x2c,0xbc,0xff,0x00,0x9e,0x50,0x7e,0x47,0xfc,0x69,0xa7,0xc5,0x77,0xbf,0xdc,
+ 0x87,0xfe,0xf9,0x3f,0xe3,0x58,0x39,0xa4,0xa7,0x64,0x17,0x37,0x4f,0x8a,0xaf,0xff,
+ 0x00,0xbb,0x0f,0xfd,0xf3,0xff,0x00,0xd7,0xaa,0xd7,0xda,0xf5,0xdd,0xf5,0xb3,0x41,
+ 0x2f,0x97,0xb1,0x88,0x27,0x0b,0x8a,0xcb,0xa4,0xa2,0xc2,0xb8,0x1a,0x4a,0x29,0x29,
+ 0x88,0x29,0x29,0x69,0x28,0x00,0xa6,0xb7,0x5a,0x75,0x35,0xba,0xd2,0x63,0x47,0x57,
+ 0x11,0xdf,0x6b,0x11,0xe7,0x94,0x1d,0x3e,0x94,0xdc,0xe7,0xe5,0x6e,0xbd,0x88,0xa6,
+ 0x59,0x9d,0xda,0x7c,0x1d,0xfe,0x40,0x3a,0xd4,0x9c,0x36,0x47,0xf3,0xa9,0x00,0xcf,
+ 0x66,0xea,0x3a,0x11,0x48,0x4e,0x68,0x07,0xb1,0xe4,0x7a,0xff,0x00,0x8d,0x0d,0xc7,
+ 0xd2,0x90,0x09,0xfe,0x7d,0x3f,0xfd,0x46,0x93,0xfc,0xfa,0x7f,0xfa,0x8d,0x2d,0x21,
+ 0xa0,0x04,0xff,0x00,0x3f,0xe7,0xd0,0xd0,0x7f,0xcf,0xf9,0xec,0x68,0xc7,0xf9,0xff,
+ 0x00,0x3d,0xa8,0xff,0x00,0x3f,0xe7,0xda,0x80,0x05,0x34,0xfc,0x8a,0x80,0xb8,0x55,
+ 0xe4,0x8e,0x29,0x8d,0x70,0x00,0x3e,0xd4,0x8a,0x2c,0x96,0xc5,0x31,0xe4,0xaa,0x92,
+ 0x5c,0x1f,0x9b,0xdb,0x15,0x0b,0xcc,0x72,0xdc,0xf4,0xe9,0x40,0x17,0x92,0x41,0xe6,
+ 0x2f,0xd4,0x56,0xa3,0x8e,0x6b,0x9f,0xb7,0x62,0xf7,0x48,0xa0,0xf5,0x75,0xfe,0x75,
+ 0xd1,0x95,0x34,0x21,0x32,0xbe,0x30,0xd9,0x14,0x83,0x28,0x4e,0x3a,0x54,0xe5,0x29,
+ 0xa5,0x46,0x3d,0xe9,0x81,0x11,0x19,0x39,0x1d,0x7b,0xfb,0xd0,0x31,0xfe,0x34,0xf2,
+ 0xa3,0x1e,0xf4,0xd2,0xb9,0xeb,0xd7,0xd6,0x81,0x0d,0xc6,0x09,0x1e,0xbd,0xbd,0x68,
+ 0xed,0x8f,0xca,0x9d,0x8c,0x70,0x7f,0x0a,0x4d,0xbe,0xc6,0x80,0x13,0x39,0x1e,0xfd,
+ 0xeb,0x33,0x56,0xcf,0x94,0x47,0x3d,0x45,0x6a,0x6d,0x3e,0xf9,0xf5,0xc5,0x46,0xf1,
+ 0x24,0xa3,0x0c,0x8b,0xee,0x0d,0x00,0x72,0xae,0x7f,0x7a,0xc7,0xdf,0x34,0xbb,0xfd,
+ 0xab,0xa4,0x36,0x36,0xe7,0xfe,0x59,0x27,0xe7,0x4d,0xfb,0x05,0xb7,0xfc,0xf1,0x5f,
+ 0xfb,0xe8,0x53,0x19,0xce,0xef,0xf6,0xa3,0x7f,0xb5,0x74,0x5f,0xd9,0xf6,0xdf,0xf3,
+ 0xc1,0x7f,0x31,0x47,0xf6,0x75,0xbf,0xfc,0xfb,0x8f,0xc0,0x8f,0xf0,0xa0,0x0e,0x77,
+ 0x7f,0xb5,0x1b,0xfd,0xab,0xa1,0x3a,0x7d,0xae,0x71,0xe4,0x7f,0x2a,0x3f,0xb3,0x6d,
+ 0xbf,0xe7,0x88,0x14,0x5c,0x0e,0x7f,0x7f,0xb5,0x1b,0xfd,0xab,0xa0,0xfe,0xcc,0xb6,
+ 0xff,0x00,0x9e,0x60,0x52,0x7f,0x65,0xdb,0x7f,0x70,0x51,0x70,0x30,0x37,0xfb,0x52,
+ 0x6f,0xf6,0xad,0xff,0x00,0xec,0xbb,0x6f,0xee,0x8a,0x3f,0xb2,0xed,0xff,0x00,0xba,
+ 0x28,0xb8,0x8c,0x0d,0xfe,0xd4,0x9b,0xfd,0xab,0x7f,0xfb,0x2a,0xdf,0xfb,0xa2,0x8f,
+ 0xec,0xab,0x7f,0xee,0x8a,0x2e,0x07,0x3f,0xbf,0xda,0x8d,0xfe,0xd5,0xd0,0x7f,0x65,
+ 0x5b,0xff,0x00,0x74,0x51,0xfd,0x97,0x6f,0xfd,0xd1,0xf9,0x51,0x70,0x39,0xfd,0xfe,
+ 0xd4,0x9b,0xbd,0xab,0xa1,0xfe,0xcb,0x80,0x7f,0x00,0xfc,0xa8,0xfe,0xcc,0x83,0xfb,
+ 0x8b,0xf9,0x51,0x70,0x39,0xed,0xde,0xd4,0x84,0xe6,0xba,0x3f,0xec,0xd8,0x07,0xf0,
+ 0xaf,0xe5,0x47,0xf6,0x7c,0x03,0xf8,0x16,0x8b,0x8c,0x4d,0x31,0xf7,0x69,0xf1,0x8e,
+ 0x38,0x1d,0xfe,0xb5,0x60,0x8c,0xfb,0x11,0x48,0x90,0x88,0xc6,0x13,0x81,0xe8,0x29,
+ 0xd8,0xa4,0x21,0x07,0x3f,0x5f,0x4a,0x3a,0x76,0xa0,0x8a,0x42,0x7d,0x68,0x00,0xe8,
+ 0x32,0xbc,0x8f,0x4a,0x33,0xdc,0x74,0xed,0xed,0x49,0x82,0x0e,0x47,0xff,0x00,0xae,
+ 0x97,0xef,0x72,0x3a,0xf7,0x14,0x00,0x80,0x9f,0xf0,0xf6,0xa0,0xf3,0xdb,0xe9,0x8a,
+ 0x5e,0x0f,0xd6,0x97,0x3e,0xbc,0x83,0xde,0x81,0x99,0xf3,0x1f,0x98,0xfb,0xa5,0x56,
+ 0x32,0x64,0x7d,0x56,0xb4,0x85,0xac,0x52,0x04,0x77,0x62,0x32,0x0f,0x7c,0x53,0x64,
+ 0xfb,0x2c,0x16,0x6e,0x23,0x40,0xec,0x00,0x61,0x8e,0x70,0x47,0xaf,0xb6,0x09,0xa9,
+ 0x19,0x9c,0x59,0x98,0x13,0x83,0x83,0xc1,0xe3,0xbd,0x29,0x86,0x63,0xb8,0xf9,0x6c,
+ 0x36,0xf0,0xd9,0xed,0x53,0xc9,0x77,0x34,0xaf,0x36,0x2d,0x94,0x09,0xa2,0x0c,0x57,
+ 0x70,0xfb,0xc3,0xf8,0x87,0xe3,0xdb,0xdc,0xd2,0x0b,0x8b,0xb9,0x24,0x53,0xfb,0xac,
+ 0xcd,0x06,0xc3,0x9c,0xe1,0xf0,0x3f,0x9f,0x4f,0xca,0x9d,0x82,0xe3,0x63,0xb4,0xb8,
+ 0x0e,0x4e,0x30,0xd1,0xa8,0x90,0xfa,0xe3,0x8e,0x7f,0x5a,0xe9,0xe0,0xb8,0x82,0x51,
+ 0x0e,0xe6,0x0b,0x24,0xcb,0xb9,0x57,0xd7,0xd7,0x1f,0x91,0xae,0x66,0x26,0xba,0x26,
+ 0xd6,0x4f,0xb4,0x6d,0xc2,0x98,0x83,0x05,0xc9,0x1d,0x78,0x3e,0xbd,0x4d,0x35,0x61,
+ 0x99,0x63,0x87,0x74,0xb2,0x8f,0x26,0x42,0x76,0x83,0x82,0xbe,0xac,0xbe,0xdc,0x53,
+ 0xb0,0xae,0x75,0x5f,0x6a,0xb3,0xf2,0xc4,0x9e,0x7a,0x6c,0x66,0xd8,0x1b,0x3c,0x67,
+ 0xd2,0x86,0x9e,0xcc,0x33,0xab,0x5c,0x46,0xa6,0x33,0x87,0x05,0xc0,0xda,0x7d,0xeb,
+ 0x91,0x78,0x22,0x09,0x22,0x99,0x37,0x30,0x7d,0xcb,0x97,0xe1,0xc7,0xf8,0xd2,0x98,
+ 0xad,0x08,0x90,0xa9,0x5d,0x8e,0x00,0x53,0xce,0x55,0xbd,0x29,0x88,0xeb,0x03,0xda,
+ 0x3f,0xdd,0xb9,0x8c,0xfd,0x24,0x06,0x9e,0x20,0x8d,0xbe,0xeb,0x83,0xf4,0x35,0xcb,
+ 0xaa,0xc0,0xac,0xd2,0x1f,0x28,0x79,0x6b,0xb5,0xd0,0x0f,0xbd,0x9e,0xeb,0x56,0xad,
+ 0xec,0x83,0xbd,0xbc,0x49,0x30,0x2d,0xb3,0xcc,0x89,0xc0,0xfb,0xdc,0x7d,0xd3,0xef,
+ 0xda,0x80,0x37,0x8d,0xa0,0xfe,0xf1,0xa6,0x9b,0x3f,0xf6,0xab,0x1d,0x6d,0x56,0x38,
+ 0xc5,0xdc,0x4c,0xdf,0x3b,0x10,0xcb,0xfd,0xc3,0xff,0x00,0xd7,0xab,0x50,0x48,0xfb,
+ 0x41,0xde,0xdf,0x9d,0x21,0x97,0x0d,0x99,0xec,0xd4,0x86,0xd1,0xf3,0x90,0xdc,0xfd,
+ 0x6a,0x31,0x34,0x9f,0xdf,0x6f,0xce,0x94,0x5c,0x49,0xfd,0xf3,0x40,0x0e,0x36,0x92,
+ 0x7f,0x78,0xfe,0x74,0x7d,0x95,0xfd,0x4f,0xe7,0x49,0xf6,0x89,0x7f,0xbf,0xfa,0x0a,
+ 0x5f,0xb4,0xcb,0xfd,0xef,0xd0,0x50,0x02,0x7d,0x9a,0x4f,0x53,0xf9,0xd3,0x4d,0xab,
+ 0xfb,0x9a,0x7f,0xda,0xa4,0x1d,0x48,0xfc,0xa9,0x1a,0xf1,0xd5,0x4b,0x1d,0xb8,0x1e,
+ 0xd4,0xc0,0x6f,0xd9,0xdc,0x0e,0xf4,0x9e,0x43,0x7a,0x56,0x5b,0x6b,0xf7,0xca,0xc7,
+ 0x10,0xc0,0xc3,0xe8,0x7f,0xc6,0x81,0xe2,0x1b,0xbe,0xf6,0xb1,0x7e,0x04,0xd1,0x61,
+ 0x1a,0x7e,0x43,0x0f,0xe1,0xe2,0x93,0xc9,0x6f,0x43,0x54,0x07,0x88,0x67,0x18,0xcd,
+ 0xa2,0x7e,0x0f,0x4f,0xff,0x00,0x84,0x80,0x96,0x21,0x6d,0x43,0x60,0x67,0xef,0xff,
+ 0x00,0xf5,0xa9,0xa8,0xb6,0x17,0x2e,0x79,0x2d,0xfd,0xde,0x28,0xf2,0x4f,0xa1,0xaa,
+ 0x3f,0xf0,0x92,0x60,0xf3,0x69,0xff,0x00,0x8f,0xff,0x00,0xf5,0xaa,0x55,0xf1,0x02,
+ 0x3f,0xfc,0xbb,0xff,0x00,0xe3,0xff,0x00,0xfd,0x6a,0x1c,0x5a,0xdc,0x2e,0x58,0xf2,
+ 0x58,0x7f,0x0f,0x14,0x79,0x27,0x3d,0x2a,0x21,0xad,0xa1,0xff,0x00,0x97,0x73,0xff,
+ 0x00,0x7d,0xff,0x00,0xf5,0xa9,0xe3,0x58,0x8c,0xff,0x00,0xcb,0x13,0xff,0x00,0x7d,
+ 0x52,0x01,0xde,0x49,0xf4,0xa4,0x30,0x9e,0xc3,0x9a,0x51,0xaa,0x46,0x7f,0xe5,0x91,
+ 0xfc,0xe9,0xc3,0x52,0x8c,0xff,0x00,0xcb,0x33,0xf9,0xd2,0x01,0x9e,0x51,0xf4,0xa0,
+ 0xc4,0x7d,0x2a,0x4f,0xed,0x08,0xbf,0xe7,0x9b,0x52,0xfd,0xbe,0x2f,0xee,0x35,0x00,
+ 0x43,0xe5,0x9f,0x4a,0x4f,0x2c,0xe3,0xa5,0x4f,0xf6,0xf8,0x7f,0xb8,0xff,0x00,0xa5,
+ 0x1f,0x6d,0x83,0xfb,0xaf,0xf9,0x50,0x05,0x7d,0x84,0x76,0xc8,0xa3,0xcb,0x3e,0x86,
+ 0xa7,0xfb,0x64,0x1e,0x8d,0xf9,0x51,0xf6,0xb8,0x7f,0xda,0xfc,0xa8,0x19,0x07,0x96,
+ 0x7d,0x29,0x3c,0xb3,0xdc,0x55,0x8f,0xb5,0xc1,0xfe,0xd7,0xe5,0x47,0xda,0xe0,0xf7,
+ 0xfc,0xa8,0x02,0xb1,0x8c,0xe6,0x8f,0x2c,0x9c,0x1c,0x60,0xd5,0x9f,0xb5,0x41,0xea,
+ 0x7f,0x2a,0x3e,0xd3,0x07,0xf7,0xbf,0x4a,0x00,0xad,0xb0,0x91,0xc8,0xc1,0xa4,0xf2,
+ 0xbd,0xb1,0x56,0xbe,0xd3,0x07,0xf7,0xbf,0x4a,0x4f,0xb4,0xc1,0xfd,0xef,0xd2,0x80,
+ 0x30,0x25,0x6e,0x41,0xcf,0xdd,0x38,0xfc,0xea,0x21,0x30,0x8b,0x95,0x3c,0xa9,0xc7,
+ 0x3d,0xc5,0x2d,0xc7,0xdc,0x90,0xff,0x00,0xb4,0x05,0x53,0x90,0x90,0x5c,0x7a,0x62,
+ 0x90,0xcb,0x2f,0x7a,0x54,0x91,0x1a,0x2a,0x05,0x5c,0x2f,0x19,0xdb,0xd3,0xa1,0xff,
+ 0x00,0x3d,0x6a,0x36,0xbb,0x90,0xe4,0x03,0xb4,0x05,0x1c,0x28,0x03,0x1d,0x39,0x1e,
+ 0x86,0xab,0xb7,0x56,0xfc,0xa9,0x09,0x1f,0x35,0x31,0x13,0x35,0xc4,0xac,0x7e,0x69,
+ 0x18,0xfc,0x98,0x3c,0xf5,0x14,0xc0,0xc4,0x95,0xcf,0x65,0xa6,0x12,0x32,0x7e,0x98,
+ 0xa3,0x77,0xf2,0xc5,0x00,0x39,0x5b,0x98,0xfe,0xb4,0xd0,0xfd,0x3d,0x8e,0x69,0x01,
+ 0xc1,0x1e,0xd4,0x2f,0xde,0x1f,0x5a,0x60,0x38,0x39,0x39,0x1e,0xf9,0xad,0x4b,0x49,
+ 0x1f,0x64,0x60,0x1c,0x6c,0x6d,0xca,0x47,0x50,0x7f,0xc8,0xac,0xe4,0x52,0x52,0x4c,
+ 0x2e,0x48,0x23,0x1c,0x56,0x85,0xba,0xed,0x8c,0x7a,0xd2,0x03,0x5a,0x19,0x06,0xc9,
+ 0x90,0x8c,0xac,0xb8,0x3f,0x46,0xf5,0xfe,0x75,0x22,0x70,0x31,0x55,0x61,0x6c,0x8a,
+ 0xb2,0xb9,0x22,0x90,0x0f,0xa5,0xcd,0x32,0x97,0x24,0x53,0x01,0xd9,0xa3,0x34,0xdc,
+ 0xd1,0x40,0x0e,0xeb,0x50,0x5e,0xf3,0x67,0x2f,0xfb,0xa6,0xa5,0xcd,0x43,0x77,0xcd,
+ 0xa4,0xbf,0xee,0x1f,0xe5,0x42,0xdc,0x47,0x3b,0x45,0x25,0x15,0xd4,0x66,0x0d,0xf7,
+ 0x4d,0x58,0xd2,0xf0,0xd7,0x04,0x1e,0xe8,0x6a,0xb3,0x7d,0xd3,0x56,0x34,0x93,0xfe,
+ 0x96,0x3f,0xdd,0x35,0x12,0x65,0x22,0xe5,0xc5,0x98,0x6c,0xb2,0xf5,0xac,0xf9,0x23,
+ 0x78,0x8f,0xf5,0xad,0xd2,0x2a,0x19,0x61,0x57,0x18,0x22,0x85,0x3b,0xe9,0x21,0x38,
+ 0xdb,0x63,0x2e,0x39,0xbb,0x37,0xe7,0x56,0x15,0xea,0x2b,0x8b,0x52,0x87,0x22,0xa0,
+ 0x57,0x68,0xce,0x0e,0x7e,0x86,0x94,0xa1,0xd8,0x6a,0x46,0x82,0xc9,0x52,0xab,0xd5,
+ 0x24,0x90,0x38,0xc8,0x35,0x28,0x62,0x2b,0x1b,0x16,0x5b,0x0d,0x4b,0xba,0xab,0x07,
+ 0xa7,0x86,0xa0,0x09,0xf3,0x46,0xea,0x88,0x35,0x2e,0xea,0x40,0x49,0x9a,0x33,0x4c,
+ 0xdd,0x46,0x68,0x02,0x4c,0xd2,0x66,0x9b,0x9a,0x33,0x40,0x0e,0xcd,0x19,0xa6,0xe6,
+ 0x8c,0xd0,0x03,0xb3,0x45,0x37,0x34,0xb9,0xa0,0x0f,0xff,0xd9,0xff,0xe4,0x13,0x4b,
+ 0x51,0x54,0x49,0x20,0x44,0x65,0x62,0x75,0x67,0x20,0x4d,0x65,0x74,0x61,0x64,0x61,
+ 0x74,0x61,0x00,0x49,0x13,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x52,0x43,0xae,0xae,0xae,0xae,0x86,0x02,0x00,0x00,0xe8,0x05,0x00,
+ 0x00,0x7b,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0xaa,0x01,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x06,0x11,0xa5,0x88,0x03,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x4c,0x09,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x25,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x34,0x00,0x00,0x00,0xab,0x06,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x50,0x00,0x00,
+ 0x00,0x50,0x09,0x00,0x00,0x0b,0x00,0x00,0x00,0x44,0x09,0x00,0x00,0x73,0x02,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
+ 0x00,0x40,0x01,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xaa,0x01,0x00,0x00,0xe8,0x05,0x00,0x00,0xee,0xee,0xee,
+ 0xee,0x15,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x01,0x00,
+ 0x00,0x22,0x41,0x00,0x00,0x94,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x22,0x41,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0xf7,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xe6,0x0b,0x00,
+ 0x00,0x2f,0x08,0x00,0x00,0xe6,0x0b,0x00,0x00,0x10,0x00,0x00,0x00,0x31,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x94,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x68,0x00,0x00,
+ 0x00,0x26,0x09,0x00,0x00,0x87,0x08,0x00,0x00,0x0b,0x09,0x00,0x00,0xc6,0x08,0x00,
+ 0x00,0x25,0x09,0x00,0x00,0x09,0x09,0x00,0x00,0x1b,0x09,0x00,0x00,0x1d,0x09,0x00,
+ 0x00,0x21,0x09,0x00,0x00,0x3e,0x09,0x00,0x00,0x43,0x09,0x00,0x00,0x12,0x09,0x00,
+ 0x00,0x29,0x09,0x00,0x00,0x12,0x09,0x00,0x00,0x04,0x09,0x00,0x00,0xc7,0x08,0x00,
+ 0x00,0x56,0x08,0x00,0x00,0x69,0x07,0x00,0x00,0xc8,0x05,0x00,0x00,0x52,0x05,0x00,
+ 0x00,0x2b,0x09,0x00,0x00,0x27,0x09,0x00,0x00,0x67,0x08,0x00,0x00,0xc8,0x05,0x00,
+ 0x00,0x5f,0x08,0x00,0x00,0x32,0x0a,0x00,0x00,0x67,0x0a,0x00,0x00,0xa1,0x07,0x00,
+ 0x00,0x6d,0x05,0x00,0x00,0x04,0x08,0x00,0x00,0x2f,0x09,0x00,0x00,0x31,0x09,0x00,
+ 0x00,0x66,0x08,0x00,0x00,0xe8,0x05,0x00,0x00,0xf9,0x09,0x00,0x00,0xab,0x0a,0x00,
+ 0x00,0xe9,0x0a,0x00,0x00,0xf2,0x08,0x00,0x00,0x7e,0x05,0x00,0x00,0xdc,0x07,0x00,
+ 0x00,0x31,0x09,0x00,0x00,0x5a,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xee,0x09,0x00,
+ 0x00,0x73,0x0a,0x00,0x00,0xc5,0x0a,0x00,0x00,0x50,0x09,0x00,0x00,0x86,0x05,0x00,
+ 0x00,0x31,0x09,0x00,0x00,0x4e,0x08,0x00,0x00,0xf4,0x05,0x00,0x00,0xe2,0x09,0x00,
+ 0x00,0x2b,0x0b,0x00,0x00,0xdc,0x0a,0x00,0x00,0x5c,0x09,0x00,0x00,0x86,0x05,0x00,
+ 0x00,0x38,0x09,0x00,0x00,0x3e,0x08,0x00,0x00,0xee,0x05,0x00,0x00,0xcf,0x09,0x00,
+ 0x00,0xe6,0x0b,0x00,0x00,0xd4,0x0b,0x00,0x00,0xdd,0x09,0x00,0x00,0x76,0x05,0x00,
+ 0x00,0xe8,0x05,0x00,0x00,0x06,0x06,0x00,0x00,0x3b,0x06,0x00,0x00,0x1c,0x06,0x00,
+ 0x00,0x33,0x08,0x00,0x00,0x1e,0x08,0x00,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xfe,0xff,0xff,0xff,0xbc,0x08,0x00,
+ 0x00,0x44,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x2b,0x00,0x00,0x00,0x29,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x96,0x09,0x00,
+ 0x00,0xf9,0x0b,0x00,0x00,0xba,0x05,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0d,0x00,
+ 0x00,0x00,0x1d,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x8b,0xfe,0xff,
+ 0xff,0xdc,0xfe,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xad,0x06,0x00,0x00,0xad,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x06,0x00,
+ 0x00,0x7c,0x00,0x00,0x00,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf5,0x0a,0x00,0x00,0x86,0x09,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0xde,0x00,0x00,0x00,0xbb,0x00,0x00,
+ 0x00,0x17,0x00,0x00,0x00,0x1d,0x00,0x00,0x00,0xb6,0x00,0x00,0x00,0xa5,0x00,0x00,
+ 0x00,0xc1,0xff,0xff,0xff,0x3c,0x00,0x00,0x00,0xef,0xff,0xff,0xff,0xed,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,
+ 0x00,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x10,0x00,
+ 0x00,0x00,0x13,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x26,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0b,0x00,0x00,0xdf,0xff,0xff,
+ 0xff,0x64,0x08,0x00,0x00,0xa4,0x0a,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x0a,0x1e,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa7,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x6c,0x97,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xa5,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x92,0x02,0x00,0x00,0x8a,0x04,0x00,0x00,0xe4,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x5d,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,
+ 0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00,
+ 0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x4a,0x4b,0x4a,0x4b,0x21,0x07,0x0a,
+ 0x9c,0x24,0xfa,0x00,0x00,0xac,0xfa,0x00,0x00,0x2e,0x77,0x00,0x00,0x2c,0x7e,0x00,
+ 0x00,0xd6,0xea,0x01,0x00,0x50,0xb1,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0xaa,0x01,
+ 0x00,0x00,0xaa,0x01,0x00,0x02,0x00,0x35,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x02,
+ 0x00,0x00,0x00,0x76,0x00,0x75,0x18,0x7e,0x5b,0x02,0x00,0x00,0x00,0x01,0x00,0x87,
+ 0xb3,0x01,0x00,0x17,0x92,0x01,0x00,0xbb,0x6b,0xff,0xff,0x2d,0x02,0x00,0x00,0x69,
+ 0xdd,0xff,0xff,0x26,0x46,0x01,0x00,0x71,0xdc,0xff,0xff,0x70,0x0f,0x00,0x00,0x19,
+ 0x4f,0xff,0xff,0x76,0xa1,0x01,0x00,0xff,0xff,0x40,0x30,0x00,0x00,0x18,0x00,0x00,
+ 0x12,0x12,0x00,0x08,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x10,0x12,
+ 0x12,0x12,0x12,0x13,0x13,0x00,0x00,0x00,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x13,0x00,0x13,0x12,0x13,0x13,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x01,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x07,0x08,0x12,0x12,0x12,0x12,0x01,
+ 0x06,0x12,0x12,0x12,0x12,0x08,0x15,0x00,0x00,0x14,0x15,0x06,0x12,0x12,0x12,0x01,
+ 0x06,0x12,0x12,0x12,0x12,0x08,0x08,0x15,0x00,0x15,0x15,0x06,0x12,0x12,0x12,0x01,
+ 0x06,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x15,0x15,0x07,0x12,0x12,0x12,0x06,
+ 0x12,0x12,0x12,0x12,0x12,0x07,0x07,0x00,0x00,0x14,0x15,0x08,0x12,0x12,0x12,0x06,
+ 0x06,0x12,0x12,0x12,0x12,0x06,0x07,0x16,0x08,0x00,0x08,0x08,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x06,0x07,0x01,0x01,0x07,0x08,0x08,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x08,0x15,0x15,0x12,0x12,0x12,0x12,0x12,0x12,0x00,
+ 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xf9,0x0d,0x00,0x10,0x00,
+ 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xc3,
+ 0x0a,0x00,0x10,0xca,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x02,
+ 0x08,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x1b,
+ 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x25,0x4c,0x00,0x00,0x00,0x0e,
+ 0x18,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88,
+ 0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,
+ 0x1e,0x08,0x1b,0xfc,0x21,0xa8,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4c,0x24,0x38,0x1f,0x42,
+ 0x23,0x2f,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c,
+ 0x27,0x09,0x1e,0xf0,0x27,0xec,0x1b,0x2b,0x28,0x67,0x1c,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x67,0x2a,0x04,0x18,0x00,0x27,0x5d,0x19,0x7b,0x25,0x3d,0x16,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x2e,0x2d,0x15,0xd3,0x2b,0x56,0x16,0xa2,
+ 0x29,0x12,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xab,
+ 0x1c,0x9c,0x1a,0x7b,0x25,0x77,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x5d,0x1d,0x93,0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa1,0x26,0x42,0x20,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c,
+ 0x27,0x57,0x1e,0x75,0x27,0xc0,0x1d,0x83,0x28,0x72,0x1c,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x80,0x27,0x12,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf2,0x1f,0x1d,0x15,0xd2,
+ 0x24,0x83,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20,0xe6,0x1d,0x88,
+ 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,
+ 0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x88,0x20,0xe6,0x1d,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x04,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x55,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x12,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x0f,0x00,0x1c,0x01,0xe8,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x13,
+ 0x01,0x07,0x00,0x00,0x00,0x00,0x00,0x2f,0x00,0x71,0x00,0x13,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0xc8,0x00,0x9b,
+ 0x01,0x00,0x00,0x00,0x00,0x04,0x00,0x5a,0x00,0xe8,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x0c,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x16,0x00,0x0b,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xf7,0x1f,0xfe,0xb7,0x15,0xfe,0xb7,0x15,
+ 0xe2,0x17,0x10,0xe2,0x17,0x10,0x00,0x88,0x20,0x00,0x10,0xe6,0x1d,0x06,0x00,0x00,
+ 0x00,0x5a,0x50,0x64,0x55,0x64,0x2d,0x64,0x10,0x64,0x10,0x64,0x10,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x67,0x00,0x00,0x00,0x01,0x00,0x0c,0x00,0x13,
+ 0x00,0x09,0x00,0x06,0x00,0x67,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x65,0x26,0xba,0x1b,0x65,
+ 0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x65,0x26,0xba,0x1b,0x84,0x25,0x27,0x1b,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x59,0x00,0x00,0x00,0xda,0x02,0x83,
+ 0x03,0x00,0x00,0x75,0x19,0x00,0x00,0x60,0x3d,0x00,0x00,0x00,0xaa,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x05,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x4e,0x00,0xa4,0x00,0x8d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x03,0x00,0x9d,0x00,0x6a,0x01,0x4b,
+ 0x04,0x01,0x00,0x57,0x01,0x28,0x00,0x01,0x00,0xd6,0xc9,0x33,0x01,0x00,0x00,0x00,
+ 0x00,0x46,0x41,0x46,0x41,0x28,0x00,0x66,0x01,0x32,0x00,0xad,0xff,0xda,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0x93,0x59,0x01,0x9c,0x04,0x32,0x00,0xad,0xff,0xda,0xff,0xa8,
+ 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0x59,0x01,0x14,0x00,0xc2,0xff,0xd7,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0x93,0x58,0x01,0x58,0x01,0xc2,0xff,0x00,0x00,0xec,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x58,0x01,0xd0,0xff,0xe3,0xff,0xf1,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xa3,0x57,0x01,0x57,0x01,0xf7,0xff,0x03,0x00,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xe3,0x56,0x01,0x9c,0x04,0xf7,0xff,0x03,0x00,0xff,0xff,0xa8,
+ 0xce,0x02,0x01,0x28,0x07,0x20,0x09,0xe8,0x03,0xf7,0xff,0x03,0x00,0xff,0xff,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x57,0x01,0xd4,0xff,0x10,0x00,0xf7,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x2c,0x00,0x14,0x00,0xfc,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x00,0x00,0x29,0x00,0x00,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe1,0xff,0x15,0x00,0x02,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd8,0xff,0xf0,0xff,0xf3,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x23,0x00,0x23,0x00,0x0e,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd2,0xff,0x1f,0x00,0x0c,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc5,0xff,0xd6,0xff,0xf4,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x25,0x00,0x1c,0x00,0x00,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x18,0x00,0xf5,0xff,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xc2,0xff,0xe8,0xff,0x03,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0c,0x00,0x28,0x00,0xfe,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x03,0x00,0xe1,0xff,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf8,0xff,0xe9,0xff,0xf9,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xd0,0xff,0x1d,0x00,0x05,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xf6,0xff,0xe1,0xff,0xf8,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x1d,0x00,0xed,0xff,0xeb,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xde,0xff,0xf3,0xff,0x06,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0x0d,0x00,0x02,0x00,0xf0,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xfe,0xff,0xea,0xff,0x01,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xe6,0xff,0xf8,0xff,0x04,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xfa,0xff,0xf2,0xff,0xf7,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x11,0x00,0x08,0x00,0x08,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xc2,0xff,0xeb,0xff,0x02,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x27,0x00,0x05,0x00,0x00,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x19,0x00,0x0c,0x00,0xfc,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd3,0xff,0xe9,0xff,0xfe,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x06,0x00,0x07,0x00,0xf2,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0xd5,0xff,0x1a,0x00,0x03,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x09,0x00,0x18,0x00,0x03,0x00,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0x57,0x01,0xef,0xff,0x23,0x00,0xff,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x56,0x01,0x57,0x01,0x01,0x00,0xf7,0xff,0xf3,0xff,0x76,
+ 0x00,0x00,0x00,0xe7,0xc3,0x57,0x01,0xaa,0x01,0x00,0x00,0xb8,0x00,0x05,0xd0,0x0a,
+ 0x00,0x01,0x00,0x00,0x00,0x60,0x07,0x00,0x04,0x70,0x08,0x40,0x05,0x18,0x00,0x01,
+ 0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x46,0x41,0x46,0x41,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xe5,0x00,0xa2,0x00,0x73,0x73,
+ 0x6f,0x69,0x73,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c,
+ 0x30,0x31,0x20,0x4f,0x38,0x36,0x4b,0x4c,0x30,0x31,0x20,0x30,0x20,0x32,0x73,0x73,
+ 0x6d,0x74,0x66,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x53,0x53,0x43,0x41,0x4c,
+ 0x20,0x50,0x49,0x31,0x32,0x51,0x53,0x4b,0x46,0x30,0x36,0x56,0x4d,0x30,0x30,0x33,
+ 0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0x4d,0x38,0x44,0x30,0x31,0x44,0x30,0x31,
+ 0x53,0x31,0x34,0x53,0x41,0x33,0x2f,0x49,0x31,0x32,0x51,0x53,0x4b,0x4c,0x30,0x31,
+ 0x56,0x4d,0x30,0x30,0x33,0x46,0x46,0x46,0x46,0x46,0x52,0x31,0x34,0xff,0xdb,0x00,
+ 0x84,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x02,0x03,0x02,0x02,0x02,0x02,0x02,0x04,0x03,0x03,0x02,0x03,0x05,0x04,0x05,0x05,
+ 0x05,0x04,0x04,0x04,0x05,0x06,0x07,0x06,0x05,0x05,0x07,0x06,0x04,0x04,0x06,0x09,
+ 0x06,0x07,0x08,0x08,0x08,0x08,0x08,0x05,0x06,0x09,0x0a,0x09,0x08,0x0a,0x07,0x08,
+ 0x08,0x08,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x04,0x02,0x02,0x04,0x08,0x05,0x04,
+ 0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0xff,0xc0,0x00,0x11,0x08,0x0b,0xd0,0x0f,0xc0,0x03,0x01,0x22,0x00,
+ 0x02,0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x01,0xa2,0x00,0x00,0x01,0x05,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,
+ 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,
+ 0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7d,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,
+ 0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,
+ 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,
+ 0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,
+ 0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,
+ 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,
+ 0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,
+ 0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,
+ 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,
+ 0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,
+ 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0x01,0x00,0x03,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,
+ 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,
+ 0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,
+ 0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,
+ 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,
+ 0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,
+ 0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,
+ 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,
+ 0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,
+ 0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,
+ 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,
+ 0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,
+ 0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xda,0x00,0x0c,0x03,0x01,
+ 0x00,0x02,0x11,0x03,0x11,0x00,0x3f,0x00,0xfe,0x15,0xec,0x27,0x9b,0x03,0x68,0x86,
+ 0x7b,0x88,0xd4,0xc8,0x79,0x3c,0xaf,0xa0,0xf5,0xa5,0xd4,0xee,0xa7,0x96,0x66,0x79,
+ 0x84,0x31,0x16,0x0a,0x56,0x35,0xe7,0x23,0x03,0x05,0x4f,0x73,0x4c,0x64,0x68,0x55,
+ 0xa4,0x8d,0x19,0xe4,0x60,0xc5,0x59,0x57,0xf7,0x80,0x0e,0xad,0x8f,0x4a,0xa5,0x78,
+ 0xd3,0xac,0x7e,0x73,0xfc,0xb7,0x48,0xd9,0xd9,0x13,0x75,0x4c,0x0e,0x40,0xec,0x6b,
+ 0x5a,0x56,0x8b,0x76,0xd8,0xa7,0xb6,0xe5,0x5b,0xcb,0x91,0x72,0x8b,0x10,0x49,0x9a,
+ 0xe2,0x32,0x59,0x97,0x1c,0x36,0x7a,0x67,0xdc,0x7f,0x5a,0xc6,0x69,0x84,0x51,0x29,
+ 0x96,0x24,0x17,0x2e,0x08,0x90,0x96,0xe8,0x33,0xd4,0x0f,0x6a,0x7d,0xdd,0xfb,0x99,
+ 0x66,0x91,0x96,0x74,0x47,0x60,0xe1,0x07,0xf0,0xf1,0xfe,0x26,0xb3,0x1f,0xf7,0xa5,
+ 0x5a,0x42,0x17,0x92,0xcc,0x1b,0xa6,0x08,0xcf,0x5a,0xd9,0x69,0xea,0x38,0xbe,0xdb,
+ 0x8b,0x31,0x4d,0xea,0xe2,0x32,0x8c,0x7e,0x63,0xf3,0x7b,0x53,0x99,0xd9,0xc2,0x48,
+ 0xb2,0x14,0xc8,0xc7,0xb1,0x3e,0x87,0xf5,0xa8,0xc7,0xef,0x44,0x86,0x42,0x25,0x7c,
+ 0x64,0x16,0x24,0x02,0x3d,0xa9,0xc1,0x62,0x88,0xb1,0x07,0xcc,0x21,0x70,0x14,0x8e,
+ 0x09,0xc7,0x5f,0xd6,0xb3,0xb5,0xda,0x46,0xb1,0x6e,0xde,0x45,0x9b,0x74,0x2d,0x29,
+ 0x8e,0x4d,0xe7,0x9c,0x20,0x03,0xe5,0x07,0xbf,0xcd,0x57,0x62,0xb8,0x8d,0x54,0x5a,
+ 0x95,0x77,0x53,0x21,0x90,0x10,0x00,0x39,0x1e,0xe7,0xa8,0xe0,0xd6,0x51,0x21,0xc3,
+ 0x29,0x2a,0x50,0x90,0x48,0x50,0x7b,0x0e,0xbe,0xd5,0x0a,0xca,0x70,0x14,0x64,0xe4,
+ 0x6d,0x04,0x73,0xf4,0xa6,0xe7,0x74,0x6a,0xa5,0x65,0x66,0x69,0xb6,0xa5,0x2b,0x26,
+ 0xf5,0x48,0xe0,0x07,0xe5,0x11,0x8f,0x98,0x15,0x07,0xee,0xf3,0xda,0xb3,0x6e,0x6e,
+ 0x24,0xb8,0x9c,0xca,0xe4,0x8c,0x03,0x81,0x8e,0xf4,0xc1,0xf7,0x31,0x8c,0x91,0x91,
+ 0x80,0x69,0xa4,0x8d,0xa3,0xe7,0x79,0x30,0x70,0x73,0xc6,0x6b,0x36,0xee,0x65,0x29,
+ 0x5d,0x0e,0x21,0x4e,0xc5,0x00,0xbb,0x91,0x92,0x48,0xc6,0x29,0x1b,0x18,0xdc,0x0f,
+ 0x07,0x92,0xa4,0xd3,0xbe,0xeb,0x85,0x0a,0x4e,0x46,0x5c,0x16,0xe0,0xd3,0x24,0x3b,
+ 0x8e,0x55,0x36,0x8e,0x80,0x9e,0x70,0x3d,0x2a,0x6e,0xaf,0x70,0x77,0xb6,0xa3,0xfe,
+ 0x53,0x86,0xd8,0x23,0x5c,0xe5,0x80,0x27,0xe5,0xc7,0xf8,0xd3,0x3e,0x67,0xc0,0xcf,
+ 0x3d,0x17,0x8e,0xb4,0xe5,0xf2,0xc3,0xfd,0xe2,0x40,0x18,0xe4,0x75,0xa6,0xee,0x57,
+ 0x2a,0x4e,0xd5,0xc9,0xc6,0x73,0xd2,0x9a,0xf2,0x13,0xdb,0x50,0x07,0x24,0x00,0x01,
+ 0x5f,0xe2,0xcf,0x7f,0x6a,0x92,0x45,0x28,0xa8,0x81,0x48,0x56,0xf9,0x81,0x6e,0xf8,
+ 0xeb,0x4c,0x2c,0x79,0x51,0xb1,0x80,0x38,0x0d,0x8c,0x64,0x53,0xb7,0xf9,0x8c,0xa6,
+ 0x4c,0xb9,0x55,0xc2,0xfb,0x7e,0x14,0xac,0x17,0x5b,0x75,0x00,0x33,0xe5,0x39,0x01,
+ 0x01,0x38,0xce,0x38,0x1f,0x5f,0xca,0x85,0x8c,0xb9,0xf2,0xf2,0x23,0xc8,0xc3,0x36,
+ 0x3a,0x73,0xff,0x00,0xea,0xa9,0x0e,0x76,0xaa,0xb1,0xf3,0x3e,0x52,0x00,0x66,0xfb,
+ 0xbf,0x41,0x50,0xee,0x0d,0xb4,0xc8,0xbb,0xbd,0xb3,0xd7,0x9e,0xd4,0xed,0xd1,0x15,
+ 0x64,0x9e,0xa4,0x8d,0x9c,0xe0,0x47,0xc2,0xae,0xc3,0x93,0xd7,0xde,0x83,0xe5,0x85,
+ 0xe3,0x73,0xa9,0x20,0xe0,0xf1,0xcd,0x26,0x64,0xd9,0x86,0xc6,0x47,0x20,0xe7,0xef,
+ 0x0f,0x42,0x29,0x8c,0x40,0x6c,0x01,0x9c,0x9c,0x92,0x3b,0x52,0xb8,0x9b,0xb2,0xbb,
+ 0x1c,0x0b,0x49,0x8d,0xc4,0x28,0x04,0xf2,0x4f,0x27,0xd8,0x52,0x86,0x5d,0xa8,0x54,
+ 0x67,0xae,0x09,0x1d,0x29,0x8a,0x03,0x07,0xcb,0x28,0x5e,0xa4,0x9e,0xd4,0xae,0xe5,
+ 0xd0,0x0c,0x15,0x8d,0x4e,0x40,0x03,0xa5,0x17,0xbe,0xe1,0x7d,0x2e,0x3f,0xe6,0x90,
+ 0x9c,0x97,0xda,0x48,0xdc,0x47,0x6f,0x4a,0x8b,0xa9,0xce,0xdd,0xa0,0x73,0xc9,0x3f,
+ 0x35,0x48,0xac,0x8d,0xbf,0x71,0x65,0x24,0x64,0x11,0xd6,0x9b,0x82,0xc0,0x05,0x0c,
+ 0x79,0xce,0x0f,0x6f,0x6a,0x1e,0x81,0x7d,0x04,0xf9,0x9c,0xaf,0x4c,0x93,0xc0,0x14,
+ 0xec,0xb4,0x85,0x54,0x16,0x2d,0x93,0x80,0x47,0x5a,0x06,0x41,0x2e,0xa4,0x8c,0x8c,
+ 0xe4,0x0e,0x83,0xd0,0xd1,0x9d,0xe0,0xc8,0xcc,0x01,0x3d,0x40,0xa5,0xd7,0x52,0x55,
+ 0xed,0xa8,0xbf,0xbc,0x8c,0xe6,0x37,0x2a,0x40,0xc1,0x1d,0x87,0x14,0xd4,0x0a,0x10,
+ 0xe5,0x72,0xac,0x38,0x70,0x3a,0x73,0x4f,0x45,0x52,0x15,0xc6,0x36,0x9e,0xcc,0x79,
+ 0xe2,0x98,0x5d,0xc0,0x2e,0x1f,0x60,0x03,0x21,0x40,0xe8,0x3d,0x05,0x3e,0x81,0xe6,
+ 0xc7,0xb2,0x92,0x54,0x1d,0xa3,0xe5,0xe4,0x7a,0x8f,0x7f,0xd2,0x90,0x30,0x63,0x1a,
+ 0x94,0x43,0x8e,0x4e,0x49,0xf9,0xbe,0xb4,0x63,0x77,0xcc,0x18,0x73,0xc6,0x09,0xf9,
+ 0x89,0xfa,0x53,0x57,0x69,0x47,0x3c,0x96,0x18,0x03,0x1e,0x94,0x5f,0xb0,0xef,0xad,
+ 0xd1,0x20,0xdb,0x87,0x00,0x17,0x19,0x00,0x00,0x39,0xfc,0x0d,0x1b,0x54,0x71,0x11,
+ 0x63,0xb5,0xb9,0x0d,0xc1,0x14,0xd5,0x3c,0xe7,0x83,0x96,0xe7,0xb6,0x29,0x15,0x24,
+ 0x32,0x32,0xae,0x43,0xfd,0xe5,0xc9,0x03,0x23,0x3e,0xb4,0x3d,0x5d,0xc2,0xfb,0x0e,
+ 0x72,0x09,0x03,0x2c,0xbb,0x41,0x1c,0xf6,0xa5,0x68,0x1f,0xe4,0x72,0x8b,0x86,0x19,
+ 0x52,0x0f,0xde,0xa5,0x62,0xa1,0xbf,0x78,0xae,0x24,0x27,0x70,0x6c,0xf2,0x0f,0xb8,
+ 0xee,0x2a,0x47,0x92,0x69,0x7c,0xb5,0x57,0x2a,0x8a,0x70,0xa8,0xa3,0xee,0xd3,0x69,
+ 0x12,0xd5,0xc7,0x47,0x85,0x0f,0x1c,0xc9,0xfb,0x89,0x14,0x3a,0xae,0x30,0x48,0xcf,
+ 0x7e,0xf5,0x66,0x0b,0xd9,0xa3,0x9a,0xdb,0x71,0x59,0x46,0x4a,0xa6,0x1b,0x1b,0x47,
+ 0x40,0x6a,0xa9,0x2c,0x42,0xac,0xef,0xe6,0x72,0x63,0x50,0xc7,0x86,0x1e,0xa4,0xf6,
+ 0xa8,0xa4,0xc1,0x90,0x00,0xaa,0x13,0x1b,0x71,0x8e,0xc0,0x74,0x5f,0x7a,0x4a,0xef,
+ 0x51,0xe8,0x8e,0xdc,0xbc,0x33,0xda,0xc8,0xca,0xb1,0x73,0x21,0x80,0xc4,0xf9,0xc0,
+ 0x39,0xce,0x57,0xf5,0xe9,0x5c,0xc4,0x8d,0x0c,0x72,0x3b,0xc5,0x2a,0xa4,0xc9,0x23,
+ 0x2b,0x46,0xe7,0xef,0x9f,0x51,0xec,0x79,0xc5,0x6e,0xd9,0x18,0xf1,0xb3,0xfd,0x25,
+ 0xa6,0x03,0x2b,0x95,0xce,0xd1,0x8f,0xbc,0x7d,0x3f,0xfa,0xf5,0x8f,0x7c,0xb6,0xd0,
+ 0x48,0xcc,0xd6,0xed,0x35,0xe0,0x38,0x62,0x41,0x0a,0x33,0xdf,0xeb,0xc8,0xa7,0x77,
+ 0xaa,0x7b,0x99,0xa7,0x77,0x66,0x55,0x77,0x61,0x12,0x4a,0x98,0x18,0x93,0x25,0x07,
+ 0x04,0x0f,0x6a,0x0a,0x87,0x4c,0x83,0x20,0x85,0x8e,0x1d,0x40,0xe4,0x73,0x50,0x2c,
+ 0x4f,0x2c,0x71,0xc2,0x5d,0x41,0x27,0xe6,0x52,0x4e,0x57,0x9e,0xa0,0x7a,0x55,0x9b,
+ 0x86,0x8d,0xa4,0x8d,0x62,0x66,0x8a,0x75,0x52,0x03,0x38,0xe0,0x8f,0x4f,0xf3,0xeb,
+ 0x49,0xf9,0x6e,0x17,0x4f,0x61,0x53,0x74,0x67,0x0e,0x9f,0x28,0x3f,0x2a,0xae,0x32,
+ 0x3e,0xa6,0x9a,0xd7,0x06,0x59,0x63,0x0d,0x18,0x87,0xf8,0x94,0xe7,0x9c,0xe7,0xbf,
+ 0xa5,0x31,0x58,0x3b,0x85,0x74,0x29,0x91,0x87,0x20,0x7d,0xdf,0x43,0xc7,0x5e,0x94,
+ 0x2b,0xec,0xdc,0xe8,0xa6,0x50,0xc7,0x00,0xb7,0x7f,0x72,0x2a,0x5e,0xe1,0xab,0x5a,
+ 0x16,0x04,0x4a,0x65,0x70,0xc2,0x4c,0x96,0x24,0x9e,0xb9,0xf7,0x22,0x88,0xb7,0xda,
+ 0xaa,0x38,0x71,0x1e,0x09,0x0a,0xc7,0xa9,0x51,0xc9,0x1e,0xd4,0x92,0x43,0x24,0x0d,
+ 0x14,0x8c,0xa2,0x30,0x64,0x05,0xd4,0x3e,0x30,0x31,0xc7,0xf9,0x35,0x34,0x33,0x99,
+ 0xa7,0xf2,0xfc,0xd6,0x9e,0x4d,0xc2,0x4d,0xa4,0x0e,0x83,0xb5,0x2f,0x24,0x2b,0xb7,
+ 0xb0,0xcf,0x2a,0xdc,0xf9,0x53,0x30,0x95,0x56,0x40,0xc4,0x44,0x8d,0x92,0xa3,0xd4,
+ 0x8a,0x96,0x39,0x7c,0xdb,0x99,0x23,0x01,0xfe,0x45,0x2e,0x18,0x0f,0x6a,0x58,0xde,
+ 0x39,0x66,0x5b,0x7b,0x68,0x9c,0xdc,0x33,0xf9,0x8c,0xc4,0x60,0xa7,0xb7,0x34,0x93,
+ 0x5b,0x5f,0x2a,0x32,0x49,0xba,0xd5,0x43,0x15,0xda,0xbf,0x79,0x81,0x39,0x04,0x0e,
+ 0xd4,0xf4,0xb8,0xf4,0xd9,0x16,0xa0,0x92,0xdc,0x84,0xcc,0x52,0xcb,0x74,0xc3,0x00,
+ 0x6d,0x23,0x8f,0x6f,0xa5,0x0b,0x05,0xcc,0xb7,0x50,0x42,0x92,0xe5,0x5f,0x0a,0xcc,
+ 0xe7,0x86,0x6f,0xad,0x58,0xb5,0xd3,0x75,0x2d,0x46,0xee,0x0d,0xb1,0x38,0x8c,0xa9,
+ 0x53,0x29,0x60,0x0a,0x26,0x3d,0x7b,0x9e,0x7a,0x57,0x57,0x6f,0x65,0x67,0xa5,0x5a,
+ 0x40,0xb2,0x34,0xb7,0xae,0xe5,0xe4,0x50,0xc7,0x04,0x10,0x78,0x19,0xef,0x9f,0x4e,
+ 0xd4,0x45,0x5d,0xe8,0x24,0xef,0xa2,0x30,0xf4,0x9f,0x0f,0xea,0x17,0x3a,0x88,0x16,
+ 0xf1,0xaa,0x07,0x61,0xe6,0xb4,0xad,0xb7,0x68,0xe8,0x70,0x07,0x7e,0x6b,0xa4,0xd3,
+ 0xfc,0x31,0x6f,0x61,0x24,0xf6,0x77,0xb1,0xc7,0x75,0x2c,0x92,0x09,0x0b,0x4a,0xc5,
+ 0x55,0x54,0x02,0x57,0x68,0xef,0xdb,0x35,0x1b,0x6a,0xb6,0xdb,0xae,0x3e,0xcf,0x23,
+ 0xad,0xe0,0x8c,0x31,0x07,0x80,0xdc,0xf7,0xf7,0xeb,0x58,0x57,0x9a,0xd5,0xcd,0xcc,
+ 0x83,0xed,0x2a,0xeb,0x1b,0xa1,0x50,0xc5,0xf8,0x04,0x63,0xe6,0x1e,0x86,0xa2,0x2d,
+ 0xbd,0xc7,0x66,0xec,0x96,0xe7,0x5c,0x35,0x6b,0x6f,0xb4,0xfd,0xa5,0xd1,0xe3,0x98,
+ 0x2e,0x52,0x40,0xa7,0x8c,0x00,0x36,0xe4,0xf5,0x1f,0xca,0xb9,0x0d,0x43,0x5e,0x9a,
+ 0x70,0xb6,0xd6,0x10,0x18,0xe2,0x70,0xcc,0x54,0x00,0x4a,0x8c,0xfa,0xf7,0xe7,0xf9,
+ 0xd6,0x50,0x13,0x39,0x91,0x56,0x58,0xa5,0xf2,0xd0,0xb0,0x77,0x3c,0x36,0x7f,0xaf,
+ 0x4a,0xd1,0x86,0x35,0xcd,0xbb,0x3c,0x66,0xdd,0x59,0x48,0x56,0x88,0xe3,0x67,0xf8,
+ 0x0e,0x2a,0xb6,0xb1,0x32,0x76,0x10,0x79,0x79,0xb7,0x22,0x22,0xa3,0x76,0x19,0xc7,
+ 0x6e,0x32,0x78,0xad,0x9d,0x36,0xd9,0xe7,0x0d,0xe7,0xcd,0x30,0x00,0x92,0x11,0x9c,
+ 0x8d,0xab,0xd0,0x7f,0x3e,0x95,0x4e,0x29,0xa0,0x82,0x48,0xe4,0x4f,0xde,0xc6,0x8d,
+ 0xb3,0x32,0x0e,0x65,0x38,0xe7,0x1e,0xd5,0x5e,0x4b,0x99,0x2f,0x6e,0x26,0xde,0x8f,
+ 0x1c,0x6c,0xc0,0xb9,0x88,0x10,0xff,0x00,0x40,0x3f,0xcf,0x41,0x54,0xda,0x4a,0xec,
+ 0x97,0x25,0x77,0x62,0xed,0xcd,0xec,0x5a,0x6b,0xcf,0x6b,0x68,0x3c,0xe4,0x99,0xc2,
+ 0xbc,0x6b,0x1e,0xed,0xa3,0x8c,0x12,0x3b,0x1a,0x8e,0x4d,0x46,0x4b,0x7b,0x88,0x61,
+ 0x9a,0x39,0xa6,0x8c,0x21,0x76,0x8c,0x9d,0x9b,0xc1,0x1e,0xbe,0x94,0xfd,0x3e,0xc2,
+ 0x69,0xad,0x1e,0xee,0x14,0xbc,0x59,0x4b,0x31,0x40,0xb1,0x90,0xcd,0x83,0x8c,0x32,
+ 0xd7,0xa8,0x78,0x27,0xe1,0x86,0xa3,0xae,0xde,0x5b,0xdd,0xcb,0x71,0x3c,0xd1,0xaa,
+ 0xed,0x05,0xa3,0x18,0x0b,0xdb,0x23,0xd7,0xde,0x93,0x9c,0x52,0xe6,0x93,0x45,0xc6,
+ 0x17,0x69,0x27,0xad,0xcf,0x1e,0xb7,0x5d,0x42,0xe9,0x64,0xfb,0x3d,0x92,0x4b,0xb8,
+ 0x8c,0xa8,0x3c,0xc4,0x01,0xfe,0x13,0xf4,0xeb,0x5e,0xa1,0xe0,0xbf,0x00,0x6a,0x1a,
+ 0xc4,0x52,0x35,0xee,0x85,0x85,0x59,0x03,0x19,0x6e,0x98,0xa6,0xf5,0x23,0x82,0x07,
+ 0x7e,0xb5,0xf4,0x3f,0x86,0x3e,0x12,0x68,0x9a,0x2c,0xcb,0xaa,0x5f,0x5a,0x23,0xea,
+ 0x88,0x58,0xb3,0xa8,0xdc,0xb8,0x07,0x90,0x46,0x70,0x7b,0x76,0xaf,0x58,0x58,0x61,
+ 0x78,0x9a,0x31,0x68,0x2c,0xec,0x43,0x2b,0x18,0xd8,0x1c,0x13,0xd4,0x00,0x3a,0x81,
+ 0xde,0xb8,0x6a,0xd4,0xbb,0xb4,0x7a,0x19,0xce,0x0d,0x2b,0x23,0xcd,0xbc,0x31,0xf0,
+ 0x8b,0x45,0xb3,0x4b,0xc9,0xf5,0x2d,0x3a,0x3b,0xbb,0x56,0x11,0xb4,0x05,0x80,0x5f,
+ 0xb2,0xb8,0xeb,0x8c,0x1f,0xbb,0xef,0xeb,0x5e,0xb9,0x67,0x63,0x00,0x48,0x12,0x11,
+ 0xb6,0x55,0x24,0x29,0x74,0x03,0x6f,0x61,0x83,0xe9,0xc5,0x5c,0xb3,0x37,0xa8,0xb3,
+ 0xc3,0x1c,0xa4,0x70,0x1b,0x3e,0x83,0x3d,0x3d,0xc5,0x5e,0x88,0x91,0x28,0x2d,0x1a,
+ 0xed,0x03,0xc9,0xda,0x46,0x33,0xee,0x00,0xe9,0x59,0x36,0xde,0xa9,0xff,0x00,0x5e,
+ 0x85,0xc6,0xc9,0xde,0x3f,0xd7,0xa0,0xb8,0x97,0xce,0x26,0xe0,0xa4,0x51,0x48,0xc1,
+ 0x09,0xc6,0x76,0x01,0xe9,0x8a,0x59,0x50,0xf9,0xe9,0xfb,0xa6,0x8e,0x35,0x1b,0x43,
+ 0x81,0x96,0x38,0xf7,0xa8,0x56,0x40,0xd0,0x47,0x0a,0x2c,0x92,0x66,0x4c,0xb3,0x10,
+ 0x46,0xd1,0x9e,0xc4,0xfd,0x0d,0x5e,0x51,0xe5,0xaf,0xdb,0x18,0x42,0x57,0x19,0x0a,
+ 0x09,0xc8,0x1f,0x4e,0xf4,0x6a,0x95,0xec,0x16,0xd6,0xef,0x64,0x32,0x19,0x87,0x98,
+ 0xf3,0x2b,0x8d,0xca,0xa1,0x76,0x3c,0x78,0x52,0x47,0x62,0x7f,0xad,0x6a,0x71,0x38,
+ 0x12,0x05,0x03,0xcc,0x00,0x30,0x00,0x9d,0xbe,0xa7,0x27,0xd3,0x34,0xb6,0x76,0x71,
+ 0x4b,0x03,0x79,0xd2,0xee,0x04,0x16,0x25,0x81,0x24,0x7b,0x81,0xd4,0xd3,0xe6,0x8a,
+ 0x3b,0x93,0x6e,0x6d,0x75,0x03,0x02,0xa1,0x2c,0xea,0x23,0x38,0x6c,0x7a,0x7d,0x78,
+ 0xa4,0xfb,0xbd,0xc3,0x56,0x90,0xfb,0x78,0xc8,0xf3,0x65,0x69,0xee,0x65,0x70,0x32,
+ 0x08,0x40,0xd8,0x03,0xbf,0xd3,0x8a,0xb2,0x18,0xc8,0x8a,0x77,0x95,0x66,0x19,0x06,
+ 0x38,0xf0,0x7e,0xa0,0x0e,0x29,0x63,0x89,0x23,0x64,0x6b,0x42,0xe9,0x70,0xc3,0xac,
+ 0x83,0x3b,0x7d,0x82,0xfa,0x53,0xfc,0xc9,0x62,0x46,0x04,0xa1,0x81,0x50,0x33,0x61,
+ 0x7e,0x60,0xb9,0xea,0xa3,0xf5,0xac,0x6c,0xad,0x6d,0x02,0x4e,0xda,0xbd,0x8d,0x4b,
+ 0x74,0x72,0xdf,0xba,0x26,0x49,0x62,0x19,0x0f,0x9c,0x97,0xe0,0x75,0x23,0xf9,0x54,
+ 0xe9,0x3f,0x96,0x24,0x68,0xf7,0xa4,0x6e,0x30,0xa7,0x1c,0x1f,0x50,0x4d,0x67,0xaa,
+ 0x83,0x19,0x9a,0x09,0xe4,0x5d,0x8d,0x84,0x84,0x28,0x05,0x81,0xee,0x7e,0xb5,0x6d,
+ 0x70,0x89,0x0c,0xf7,0x4e,0xbe,0x56,0xe0,0xcf,0x18,0x1c,0x37,0xf8,0x74,0xeb,0x54,
+ 0xae,0xde,0xf7,0x1b,0xd1,0xb4,0xd7,0xcc,0x58,0xee,0x66,0x95,0xfc,0x87,0x7c,0x32,
+ 0x28,0x0c,0xe4,0x7d,0xff,0x00,0x6c,0x7e,0x55,0x65,0x0a,0xf9,0x8e,0x1d,0xbe,0xd8,
+ 0x80,0x6d,0x46,0xc6,0x4a,0xf1,0xc8,0xf6,0x1c,0xd5,0x29,0x0c,0x32,0xcb,0xbe,0x68,
+ 0xbc,0x98,0x54,0x92,0xdb,0x57,0x27,0x9e,0x80,0x55,0xad,0x90,0xee,0x40,0xff,0x00,
+ 0x69,0x40,0x06,0xd0,0x43,0x61,0x4f,0xd5,0x47,0xf8,0xd4,0xe8,0xd6,0xaf,0xfe,0x09,
+ 0x31,0x7a,0x3b,0x34,0xd1,0x20,0x8d,0xbe,0xca,0x18,0x34,0xd1,0x5d,0x96,0x3b,0x42,
+ 0x63,0x2e,0x07,0xad,0x53,0x69,0xac,0x45,0xd1,0x8a,0xe6,0x63,0x3c,0xee,0xdb,0x52,
+ 0x43,0x90,0x48,0x03,0x38,0x23,0xb6,0x29,0xaa,0x91,0x34,0xf1,0xc9,0x09,0xbc,0x68,
+ 0xa2,0x20,0x2e,0xe4,0x2a,0x54,0x93,0xce,0x3d,0x47,0x5a,0xb4,0xc9,0x15,0xcb,0x19,
+ 0x77,0x5b,0x24,0x6e,0xce,0x50,0x0f,0xbc,0x47,0xb8,0xed,0xd3,0x8c,0xd3,0xbb,0x7b,
+ 0x83,0xb3,0x56,0x44,0xfb,0xdf,0x1b,0xcb,0x90,0x48,0x0b,0x19,0x07,0xe6,0x20,0xf1,
+ 0x82,0x07,0xe3,0x53,0x44,0x2d,0xe2,0x97,0x6b,0x96,0x98,0x9e,0x58,0x4a,0x84,0x80,
+ 0x71,0xd8,0xfe,0x55,0x25,0x9b,0x18,0x49,0x40,0xca,0x51,0x41,0x20,0x30,0x3f,0x37,
+ 0xf8,0xd3,0xd5,0x58,0x98,0x21,0x32,0xfe,0xf5,0xb2,0x57,0x2a,0x46,0xe2,0x79,0xe4,
+ 0xd6,0x5a,0xad,0xcd,0x6d,0xd5,0x12,0x45,0x05,0xc2,0x4a,0x9e,0x7b,0xca,0x24,0xc8,
+ 0x90,0x01,0xce,0xe5,0xf7,0xfd,0x2a,0x47,0xb6,0x92,0x69,0x59,0x2c,0xed,0xf1,0x8e,
+ 0x46,0x0e,0x00,0xf7,0x19,0xef,0xd6,0x9e,0x66,0x85,0xd2,0x4b,0x9b,0x97,0x73,0x6d,
+ 0x1a,0x9d,0x9b,0x46,0x19,0x8f,0xf5,0xad,0x08,0x6c,0xcd,0xc2,0x45,0x24,0xcd,0x21,
+ 0x02,0x30,0xf9,0x56,0x2a,0x5c,0x9f,0x51,0xed,0xcd,0x3b,0x59,0xdc,0x69,0xdd,0xe9,
+ 0xa9,0x96,0xe1,0x43,0x4f,0x0c,0x52,0x38,0x90,0x20,0x70,0xc1,0x0a,0x8e,0x9d,0x30,
+ 0x6a,0x58,0x04,0x4c,0xb1,0xf9,0x13,0x94,0x62,0xe1,0xca,0x67,0x24,0x9f,0x5c,0x1e,
+ 0xf5,0xb0,0xd1,0xac,0x0f,0x1c,0x2c,0xad,0x32,0x95,0xdd,0xb1,0x81,0xe3,0xd4,0x66,
+ 0xaa,0xc3,0x11,0x9a,0xec,0x4a,0x55,0x8c,0x4a,0x33,0x93,0xf2,0xed,0xe3,0xa6,0x3b,
+ 0xd0,0xae,0xb7,0x12,0x77,0x76,0x4f,0x52,0xd9,0x64,0x9c,0xdc,0xdc,0x46,0x85,0x7e,
+ 0x65,0x2d,0x1b,0xf5,0x93,0xdf,0x1e,0xb5,0x35,0xb4,0x8f,0xb6,0x56,0x04,0xc7,0xe6,
+ 0x86,0x50,0x1c,0x10,0x10,0x67,0xa7,0xd6,0xa0,0x33,0xc9,0x20,0x32,0x46,0x6e,0x1d,
+ 0x90,0x9c,0xb0,0x4c,0x02,0x3a,0x62,0xa2,0x86,0x49,0x64,0x64,0x96,0x26,0x26,0x31,
+ 0xc2,0xaa,0x0c,0x14,0x3e,0xa4,0x1e,0xf5,0x3d,0x3b,0x06,0xb7,0xba,0xd4,0x0a,0xcc,
+ 0xb1,0x3b,0xbc,0x52,0xb9,0x51,0xb5,0x19,0x46,0x77,0x73,0xd0,0x9f,0x4e,0x2b,0x5a,
+ 0xda,0xdb,0xcd,0x02,0x43,0x19,0x2a,0xa7,0x20,0x16,0xc6,0x78,0xe8,0x05,0x40,0x91,
+ 0x32,0xc7,0x11,0x57,0x31,0x6d,0x62,0xc5,0xbc,0xdc,0x93,0x9f,0x5f,0xd6,0xb6,0x7c,
+ 0xa0,0x86,0x38,0x87,0xde,0x03,0x71,0x75,0x5e,0x06,0x7a,0x80,0x6a,0x1b,0x57,0xb2,
+ 0x60,0xf4,0x6f,0xb6,0x83,0x1d,0x84,0x65,0x43,0xc8,0x0a,0xa9,0xf9,0x16,0x43,0x92,
+ 0x3d,0x87,0xa5,0x49,0x13,0x12,0x03,0xc3,0x1c,0x6b,0x1b,0x95,0xc1,0x27,0x1c,0x63,
+ 0x9c,0x8f,0xce,0xa7,0x68,0x8c,0x71,0x34,0x4a,0x16,0x42,0x41,0x21,0x08,0xf9,0x9f,
+ 0x8e,0xb9,0xf6,0xa6,0x44,0xa6,0xdc,0xc6,0xaf,0xe6,0x3c,0xb8,0x20,0x06,0x00,0x67,
+ 0xdc,0xd4,0xad,0x37,0x1a,0xbd,0xda,0x5b,0x0e,0x40,0x51,0x23,0x58,0x83,0x95,0x2e,
+ 0x59,0x25,0xd9,0xc0,0x18,0xe4,0x1a,0x6a,0x5a,0x5b,0xee,0x73,0x25,0xcb,0x21,0x07,
+ 0x7a,0xa4,0x40,0x8f,0x34,0xe7,0xa1,0x3e,0xde,0xd4,0xbe,0x60,0x62,0x12,0x5d,0xe6,
+ 0x47,0x24,0x04,0x50,0x76,0xa8,0x15,0x64,0x24,0x4c,0xd1,0x31,0xdf,0x34,0xaa,0x0b,
+ 0x21,0x04,0x8c,0x7d,0x07,0xa7,0x34,0xaf,0x6d,0xc4,0x9a,0x76,0x4b,0x61,0x66,0xb7,
+ 0x61,0x27,0xda,0x21,0x51,0x24,0x2c,0x32,0x11,0x46,0x08,0x6f,0x7f,0x7a,0x8e,0x18,
+ 0xaf,0x1d,0xe2,0x87,0x6a,0x99,0x08,0x3b,0x41,0xc6,0x19,0x7d,0x2b,0x46,0xdd,0x7e,
+ 0x6f,0x24,0xc8,0x50,0x48,0x01,0x5c,0x1e,0x5b,0xfd,0x9c,0x76,0xab,0xcf,0x04,0x8f,
+ 0x19,0x8f,0x6c,0xa2,0x3d,0xc4,0xb0,0x55,0xc0,0x03,0xbf,0x34,0xd7,0x92,0x06,0xf4,
+ 0xb5,0x8c,0x3b,0x98,0x5f,0xc9,0x05,0x98,0x46,0x77,0x63,0x69,0x41,0xf2,0xf1,0xd8,
+ 0xfa,0x55,0x24,0xb0,0x9a,0xe7,0xcb,0xc4,0xad,0x96,0x62,0x08,0x20,0x2b,0x37,0xb8,
+ 0x3d,0xeb,0xa9,0x96,0x03,0xe4,0x34,0x6f,0x14,0x6b,0x1b,0x2e,0xd8,0xcb,0x92,0x0f,
+ 0x5e,0x32,0x69,0x2d,0xed,0x84,0x09,0x9d,0xd2,0x48,0xe5,0x71,0x2b,0x81,0xfe,0xa9,
+ 0xc7,0x65,0xf6,0xe9,0x43,0xbb,0x57,0x46,0x4e,0xc9,0x9c,0xab,0xe9,0x91,0xa5,0xc8,
+ 0x99,0xa0,0x95,0x95,0x57,0x12,0x12,0x39,0x71,0xed,0xed,0x55,0xe7,0xb1,0x49,0x6d,
+ 0xef,0x3c,0x88,0xfc,0xc6,0xf9,0x70,0xa1,0x70,0x47,0xbe,0x3b,0x62,0xbb,0x06,0x80,
+ 0x4c,0xa1,0x56,0x59,0x95,0x88,0x3b,0x5c,0x2e,0x48,0x3e,0xf4,0xe1,0x6f,0x1c,0x4e,
+ 0xad,0x34,0xd2,0xc0,0xcc,0xbc,0xca,0x0f,0x41,0xec,0x3d,0xea,0xe3,0x7b,0x5d,0x82,
+ 0x4d,0x6a,0x70,0x56,0x3a,0x0c,0xc7,0xed,0x6c,0xd1,0xcb,0x3e,0x79,0x8d,0x33,0xd7,
+ 0xb6,0x0f,0xa7,0x4a,0xe4,0x75,0xbd,0x13,0x4f,0xb5,0x84,0x5c,0xbb,0xb3,0xba,0x80,
+ 0xa2,0x24,0x5f,0xbc,0x7b,0x86,0x35,0xed,0xf1,0x89,0x04,0x2b,0x6d,0xe4,0xc8,0x1a,
+ 0x42,0x50,0x3c,0x68,0x77,0x20,0xec,0x4f,0xe7,0x5e,0x63,0xe3,0x0b,0x35,0xb7,0xd3,
+ 0x2f,0xd9,0x10,0x5b,0xf9,0x2b,0xb8,0x31,0x7c,0xb3,0x1c,0xf7,0x1e,0xf9,0xaf,0xb6,
+ 0xe1,0x28,0x73,0xe2,0xa1,0x1b,0xea,0xdd,0x8f,0x9a,0xe2,0x1a,0xce,0x96,0x1a,0x53,
+ 0x4b,0x64,0xd9,0xf2,0xaf,0x89,0x2e,0x61,0xb9,0x9a,0x25,0x8a,0x05,0x81,0x2d,0xe4,
+ 0x25,0x63,0x50,0x06,0x38,0xe7,0x35,0xcc,0xb2,0x31,0x55,0xb9,0x1e,0x60,0x57,0x25,
+ 0x55,0x00,0xe0,0x0f,0x5c,0x56,0x97,0xdb,0x56,0x27,0x95,0xaf,0x1e,0x21,0x79,0x2b,
+ 0xef,0x78,0x99,0x0f,0xee,0xfd,0x85,0x56,0xb6,0xd8,0x43,0x34,0x2d,0x22,0x96,0xea,
+ 0x4b,0x67,0x3e,0xc3,0xd0,0x73,0x5f,0xdc,0xd9,0x75,0x38,0xd3,0xa3,0x1a,0x71,0x7a,
+ 0x24,0x7f,0x20,0xe3,0xaa,0xca,0x75,0x5d,0x49,0xbd,0x58,0xb1,0x46,0x52,0x16,0x95,
+ 0x0c,0x41,0xcf,0x47,0x55,0xc6,0x0f,0x61,0x9a,0x8f,0xfd,0x60,0x39,0x8f,0x0e,0x83,
+ 0x00,0xb3,0x60,0x63,0xb9,0x35,0x79,0x23,0x90,0x85,0x8c,0x2c,0x6a,0xca,0x4b,0xa9,
+ 0x23,0x21,0xbd,0x8d,0x56,0xc4,0x85,0x55,0xa6,0x89,0x1c,0x4c,0x19,0x98,0x29,0xca,
+ 0x81,0xe9,0x5e,0x82,0xd3,0x46,0x79,0xb7,0xd6,0xec,0xad,0x2c,0x71,0x43,0xb9,0x6e,
+ 0x5b,0xef,0x36,0xe2,0x4a,0xe7,0x77,0xbe,0x7d,0x29,0xb1,0xbf,0x97,0x2c,0xd1,0x42,
+ 0x60,0x94,0x0c,0x15,0xc8,0xe4,0x91,0xd8,0x03,0xf8,0x54,0xf2,0xc4,0xd2,0xed,0x46,
+ 0x78,0xd0,0x07,0x00,0x10,0x00,0x03,0x9e,0xf5,0x4a,0x79,0x5a,0x07,0xfb,0x43,0xca,
+ 0x7c,0xdd,0xc5,0x87,0x00,0xf7,0xe8,0x2a,0x2a,0xcd,0x25,0xa9,0xb5,0x3b,0xc9,0xd8,
+ 0xa9,0x73,0x71,0xb0,0xba,0xc7,0x19,0xf2,0xc2,0x92,0xe4,0x8e,0x5b,0x3d,0x4e,0x3b,
+ 0x0a,0xe4,0x6e,0x89,0x80,0x30,0x81,0xcc,0xae,0x18,0x2a,0xbc,0x87,0x84,0x5c,0xf2,
+ 0x6b,0x6e,0xfe,0x48,0xcc,0xb7,0x0b,0x14,0xc6,0x62,0xca,0x37,0x6e,0xc8,0x31,0x82,
+ 0x7d,0x3d,0x6b,0x9e,0x9c,0xc6,0x8c,0xd0,0x22,0xc9,0x33,0x91,0x9f,0x90,0xf2,0x4e,
+ 0x3b,0x9a,0xf2,0xab,0xe2,0x22,0xde,0x87,0xbf,0x81,0xa3,0x6e,0x86,0x14,0x92,0x49,
+ 0x34,0xf2,0x62,0xe1,0x99,0x09,0x2c,0x02,0x81,0x83,0xcf,0x51,0x51,0x35,0xd4,0x50,
+ 0xc4,0x89,0x71,0x26,0xc8,0x99,0x4b,0x02,0x14,0x6d,0x53,0xfd,0xd3,0xdf,0x9a,0x1d,
+ 0xfe,0x79,0x22,0x8d,0x23,0x24,0x10,0x36,0xa8,0xc9,0x8f,0xf1,0xf4,0xe6,0xb0,0xae,
+ 0x15,0x71,0x38,0xfb,0x9d,0x94,0x96,0xc8,0x18,0xf6,0xf4,0xed,0x5e,0x3d,0x5a,0xd6,
+ 0x7a,0x6c,0x7d,0x4d,0x0a,0x2a,0x4a,0xdd,0x0d,0xcf,0xed,0x0b,0x67,0x89,0x52,0x38,
+ 0xf6,0x4c,0x79,0x67,0x2b,0xc1,0x20,0xf6,0xa7,0x25,0xc2,0x4b,0x16,0x51,0x97,0xcb,
+ 0x2c,0x18,0x02,0x39,0x2b,0x9e,0x40,0xae,0x59,0x8e,0xc8,0xfc,0xe8,0xf2,0xcd,0x90,
+ 0x58,0x32,0x1d,0xcb,0xce,0x3f,0x2a,0xb5,0xe6,0x4b,0x1c,0x91,0xf9,0x1b,0x38,0x00,
+ 0x31,0x75,0x1f,0x2f,0x1d,0xbd,0xab,0x9d,0x57,0x77,0xd8,0xe9,0x96,0x0d,0x25,0xa1,
+ 0xd0,0x3d,0xc2,0x22,0xa3,0x79,0x42,0x71,0x9e,0x40,0x53,0x8c,0xf5,0xe7,0xf0,0xa9,
+ 0xad,0x9a,0xde,0x46,0x3e,0x74,0x72,0xec,0x60,0x64,0x20,0x92,0x18,0x8e,0xa3,0x8a,
+ 0xc3,0x17,0x8f,0xb4,0xf9,0xb2,0x61,0x49,0xc0,0x2a,0xb8,0x0a,0x7e,0x9f,0xd6,0xb5,
+ 0x61,0xb9,0x53,0x1b,0x48,0x64,0x96,0xe1,0x11,0xb0,0xca,0x0f,0xce,0x47,0xfb,0x27,
+ 0xf1,0x15,0xdb,0x4e,0x69,0xbb,0xdc,0xe4,0xa9,0x45,0xa4,0x5f,0x4f,0x2c,0xc6,0xe5,
+ 0x81,0xde,0xee,0x1d,0x57,0x39,0x2b,0xef,0x5b,0x88,0xa8,0x16,0x36,0x69,0x43,0x86,
+ 0x60,0xc5,0x81,0x3f,0x37,0x6e,0x07,0x63,0x59,0x6b,0x25,0xbf,0x99,0x6b,0xb1,0x64,
+ 0x89,0x9d,0x19,0xd8,0xe3,0x88,0xf9,0xe8,0x4d,0x6c,0xc4,0x1d,0x84,0x46,0x23,0x10,
+ 0x66,0x04,0x72,0xa4,0xee,0x39,0xee,0x7d,0x79,0xaf,0x4e,0x8e,0xbb,0x9e,0x4e,0x2a,
+ 0x4d,0x2b,0x33,0x4e,0x06,0xc4,0x9b,0x80,0x2c,0x19,0x48,0xdc,0x0f,0x2a,0x0f,0x62,
+ 0x2a,0xc4,0x7e,0x5a,0x02,0x92,0xc7,0x1c,0x51,0x2e,0x46,0x58,0x72,0x78,0xf4,0xa6,
+ 0xc1,0x6e,0xcf,0x98,0xa4,0x91,0x43,0x2a,0x86,0x63,0x8c,0x63,0xdf,0x3f,0x81,0xab,
+ 0x70,0x46,0x50,0xa7,0x96,0x18,0x2b,0x36,0x00,0x60,0x09,0x7f,0xf3,0x9a,0xf5,0x69,
+ 0xed,0xcc,0x8f,0x0e,0xac,0x92,0xd8,0x8f,0x7f,0x9b,0xb2,0x64,0x6c,0x42,0xe3,0xe4,
+ 0x52,0x0f,0xc8,0x07,0xa8,0xfc,0xaa,0x78,0xa0,0x67,0x69,0x11,0x01,0x91,0x80,0xc8,
+ 0x52,0xa7,0xe5,0x1d,0x73,0x9a,0x91,0x6d,0xe0,0x42,0xad,0x82,0x58,0x12,0xd9,0x07,
+ 0x18,0xe7,0xa0,0x14,0xf9,0x0f,0x98,0x10,0x99,0xa5,0xb7,0x42,0xc0,0x15,0x66,0xc8,
+ 0x61,0x9e,0x87,0x1d,0xeb,0xa5,0x6a,0xb4,0x38,0xe5,0x34,0xf4,0x43,0x7c,0xa8,0x58,
+ 0x2e,0xd7,0x99,0xc3,0xf3,0x80,0xd8,0xcb,0x75,0xc9,0xa1,0x11,0x5c,0x07,0x2f,0xb4,
+ 0x29,0xdb,0x21,0x23,0x18,0xe3,0xd2,0x9c,0x30,0x8a,0xec,0x77,0x37,0xca,0x43,0x48,
+ 0xbd,0xbe,0xa0,0x54,0xab,0xe5,0x2c,0x4a,0x1c,0xa8,0x4d,0xd8,0x2b,0xbb,0x39,0xcf,
+ 0xf5,0xaa,0xb5,0xcc,0x5c,0x99,0x54,0x05,0x2b,0xbc,0x33,0xc8,0xa0,0x65,0x50,0x8e,
+ 0x87,0xd4,0x9a,0x0c,0x32,0xce,0x63,0x48,0xc3,0xc5,0x32,0x92,0x4a,0xa3,0x00,0x1b,
+ 0x8e,0xbe,0xe7,0xad,0x4a,0x58,0x49,0x0b,0x34,0x78,0xda,0xac,0x15,0x8b,0x1e,0x83,
+ 0xfc,0xe6,0x9e,0xe3,0xe7,0x67,0x3b,0x63,0x40,0xdb,0x95,0x76,0xe7,0x8f,0xc3,0xf1,
+ 0xaa,0x5a,0x3b,0xfa,0x87,0x33,0x5a,0x91,0xac,0x03,0xcc,0x01,0x63,0x81,0xa4,0x75,
+ 0x19,0x3e,0x84,0x7b,0x74,0xcf,0x4a,0x8e,0x34,0x76,0x94,0x01,0x12,0xec,0x04,0xe0,
+ 0x8c,0x02,0xc3,0xb8,0x14,0xbb,0xa3,0x2e,0x5e,0x34,0x96,0x58,0x40,0xc9,0x20,0x60,
+ 0xa8,0xf5,0xc5,0x3d,0x18,0x7c,0x87,0x63,0xa3,0x02,0x19,0x0a,0x9e,0xb9,0x1e,0xff,
+ 0x00,0x5a,0x2d,0x6d,0x3a,0x8d,0xb7,0xd4,0x8a,0xe0,0x19,0x9a,0x1c,0x08,0xe2,0x65,
+ 0x24,0x92,0x17,0xee,0xaf,0xa6,0x3b,0x9e,0xb4,0x60,0x22,0xbb,0x4c,0xa8,0xc0,0x80,
+ 0x76,0x97,0x3c,0x0e,0xdc,0xfa,0xd5,0x97,0xb9,0x56,0x05,0x4b,0x15,0x0a,0xd9,0x6d,
+ 0xcb,0x8c,0x1f,0x4c,0xfb,0xd0,0x52,0x20,0xa1,0x23,0x5f,0x33,0x7f,0x24,0x8e,0x8a,
+ 0x7a,0xf1,0x50,0xed,0x60,0xe6,0x76,0x49,0x95,0x11,0x4f,0x9f,0xbc,0x46,0xe0,0x9c,
+ 0xb3,0x33,0x72,0x00,0x23,0xa6,0x2a,0x48,0x95,0x84,0x2b,0x95,0x2c,0x81,0x98,0x30,
+ 0xc7,0x1c,0x74,0x6c,0x55,0x81,0x39,0x28,0xc2,0x28,0xd9,0xca,0x7c,0xae,0x49,0x23,
+ 0x03,0xfb,0xc7,0xf3,0xa6,0x48,0x91,0xed,0x63,0x0c,0xa5,0xa0,0x27,0x6a,0x93,0xfc,
+ 0x27,0xbf,0xe7,0x4f,0x96,0xca,0xe0,0xe4,0xdb,0xd4,0xaf,0x3a,0xb9,0x91,0x8c,0x6e,
+ 0x25,0x84,0xf2,0x59,0x46,0x02,0x8f,0x42,0x29,0xca,0xaf,0x1a,0x2c,0x0c,0x18,0xf3,
+ 0xf3,0x33,0x8c,0xe5,0x7d,0xaa,0x79,0x3f,0xe5,0xbd,0xc3,0xa1,0x57,0x2a,0x0e,0xc8,
+ 0xc8,0xda,0x38,0xc0,0xcf,0xbd,0x43,0x8f,0x2d,0x08,0x4f,0x94,0x90,0x36,0x86,0x27,
+ 0x29,0x9e,0xd9,0xac,0x5a,0x6b,0x46,0x3e,0x66,0xd5,0x81,0xd8,0x9d,0xb1,0xab,0x80,
+ 0xaa,0x70,0x48,0x51,0x93,0xef,0x50,0x94,0x32,0xb5,0xc3,0x86,0x45,0x8c,0x31,0x08,
+ 0xb9,0x3d,0x31,0x4a,0xdb,0x64,0x91,0x4f,0x98,0xe8,0x89,0xc1,0xe7,0x2c,0xc7,0x1d,
+ 0xcf,0xa7,0xf8,0xd4,0xd2,0x33,0x81,0x2b,0x31,0x8c,0x60,0x85,0x52,0x46,0xde,0x4f,
+ 0xa6,0x2a,0x24,0xb4,0xb0,0xd6,0x9b,0x10,0xbe,0xd4,0x89,0x26,0x21,0x5e,0x3c,0x6d,
+ 0x27,0xae,0x46,0x31,0xd2,0x9e,0x21,0x8e,0x48,0xd1,0x58,0xfe,0xf0,0x49,0x94,0x60,
+ 0x00,0x18,0xc7,0x43,0xf9,0xd4,0x65,0xe4,0x85,0xdc,0x3a,0x3b,0x28,0x20,0x31,0x55,
+ 0xeb,0xcd,0x58,0x78,0xe4,0xd8,0x89,0x16,0xd3,0x03,0x12,0x49,0x51,0xca,0x9c,0xfa,
+ 0xd4,0xc9,0x36,0x92,0x29,0xbb,0x34,0x54,0x71,0x1f,0x99,0x20,0x50,0x59,0xd0,0x82,
+ 0x1b,0x04,0xee,0xf5,0x18,0xfc,0x2a,0x10,0x8c,0xd8,0x71,0x1b,0x27,0x19,0x55,0x00,
+ 0x63,0x6f,0xf9,0x35,0x61,0xd8,0xab,0xf9,0x3b,0x40,0x51,0xc8,0x7d,0xc7,0x0d,0xfe,
+ 0xce,0x7f,0x2a,0x4f,0xb3,0xa4,0x99,0x0d,0x33,0xab,0xa0,0xda,0x06,0xe1,0x84,0xff,
+ 0x00,0x1a,0xe5,0x95,0xbe,0x24,0x6a,0x9e,0x80,0xa9,0x84,0x90,0x4a,0x16,0x04,0x58,
+ 0x7c,0xc0,0xe4,0x83,0xb3,0x27,0xb5,0x42,0xc1,0xc8,0xc3,0x32,0xe7,0xd8,0x0f,0x9b,
+ 0x8f,0x4f,0xeb,0x53,0x15,0x9a,0x2f,0x2d,0x8c,0x42,0x58,0x9b,0x81,0x23,0x01,0xf3,
+ 0x63,0xb6,0x3d,0x2a,0x32,0xeb,0x87,0x7d,0x87,0x7b,0x0c,0x12,0x4e,0x00,0xe7,0xa0,
+ 0xa9,0xa8,0x92,0xdc,0xa8,0xbb,0xbd,0x08,0x27,0x8c,0x7e,0xed,0x80,0xf3,0x10,0xaf,
+ 0x00,0x8f,0x9b,0x77,0xa5,0x66,0xc5,0x2c,0x57,0x38,0x00,0xc6,0xcc,0x8f,0x90,0x54,
+ 0x8c,0x9f,0x62,0x2b,0x42,0xee,0x45,0xf2,0xb6,0x3c,0x92,0x44,0x8a,0x01,0x2a,0xa4,
+ 0x9d,0xa7,0x3f,0xc2,0x7f,0x0a,0xa5,0xa6,0x23,0xb5,0xc8,0x22,0x05,0x46,0x70,0x5c,
+ 0x30,0x00,0x17,0x6f,0x56,0x3d,0xb1,0x5f,0x95,0xf8,0x93,0x8f,0x86,0x1f,0x01,0x39,
+ 0xc9,0xea,0x8f,0xd2,0xbc,0x34,0xcb,0xe5,0x8a,0xcc,0xa1,0x4f,0xa7,0x52,0xc2,0x16,
+ 0x17,0xc5,0xe0,0x3b,0xae,0x18,0xec,0x74,0x2b,0x8d,0xe7,0xb0,0xc7,0x4c,0x57,0x98,
+ 0x7c,0x50,0x96,0x08,0x73,0x69,0x3a,0xf9,0xa4,0x7f,0xad,0x68,0xdb,0x25,0x1b,0x1f,
+ 0x70,0x11,0xdb,0x91,0x5e,0xb2,0xb7,0x71,0xda,0xcb,0x3c,0xf7,0x8c,0x2d,0x22,0x45,
+ 0x20,0x3b,0x60,0x2b,0x49,0x8e,0x09,0x3f,0x95,0x7c,0xa7,0xe3,0x1d,0x5a,0xea,0xeb,
+ 0x5b,0xd4,0xb4,0xf9,0x5a,0x4d,0xe6,0x40,0x23,0x9d,0x48,0x29,0x23,0x60,0x1c,0x81,
+ 0xd3,0xd6,0xbf,0x88,0x70,0x3f,0xbd,0xae,0xe6,0xdf,0x99,0xfd,0xc9,0x99,0x35,0x47,
+ 0x0c,0xa9,0xbd,0xb6,0x38,0x0f,0x3a,0x25,0x92,0x65,0x89,0x84,0xea,0xcf,0xb9,0x5d,
+ 0xc1,0x04,0x2f,0xf7,0x4f,0xd2,0x89,0x1e,0x36,0x45,0xde,0xce,0x54,0x13,0x93,0x8e,
+ 0x57,0xdb,0x3e,0x9c,0xd4,0xb3,0xc3,0x1e,0x43,0x2c,0x2d,0x14,0xe3,0x3b,0xc1,0x38,
+ 0xc8,0x3d,0x0f,0xf3,0xa8,0x4c,0x22,0x38,0x1c,0x12,0x77,0x13,0xb4,0x64,0x7d,0xff,
+ 0x00,0x6c,0xfb,0x57,0xd2,0xd9,0x2b,0x24,0x7c,0x17,0xc2,0xec,0x3c,0xcd,0x24,0x61,
+ 0x24,0xb7,0xb7,0x4f,0x38,0x9c,0x00,0xdd,0x09,0xed,0x9a,0xa0,0x3c,0xd0,0x5b,0xcd,
+ 0x55,0x0e,0x41,0x06,0x35,0xfb,0xbf,0x85,0x58,0x69,0x23,0x58,0x41,0x7b,0x96,0xde,
+ 0xaa,0x40,0x56,0xec,0xa7,0xd0,0xfa,0xe6,0xa1,0x82,0x21,0x6d,0x08,0x66,0x7b,0xab,
+ 0xc0,0x48,0x90,0x4e,0xe7,0xe6,0x45,0xc6,0x36,0xf3,0xef,0x8a,0x13,0x56,0x2a,0x4d,
+ 0xdc,0x8a,0x72,0xc1,0xbc,0xc0,0x16,0x67,0x11,0x80,0x14,0x0c,0x79,0x7e,0xe4,0xd5,
+ 0x95,0x99,0x15,0x00,0x86,0x35,0x91,0xdc,0xe2,0x32,0x0f,0x04,0xf7,0xa6,0xec,0x01,
+ 0xd5,0x54,0xb1,0x04,0x16,0xce,0x0f,0x4f,0xf6,0xaa,0x05,0x22,0x68,0xce,0xd8,0xde,
+ 0x68,0xce,0x43,0x32,0x1c,0x6d,0x1e,0xdf,0xe3,0x55,0xa6,0xc4,0x4a,0xe9,0xde,0xe6,
+ 0x94,0x91,0xf0,0x24,0x90,0xbb,0x31,0x5d,0xcd,0xb4,0x63,0x77,0xae,0x69,0x77,0xa1,
+ 0xfb,0x0c,0x91,0xbf,0x93,0x21,0x7d,0x9b,0x31,0x93,0x27,0xb0,0xa8,0x7f,0xd1,0xe2,
+ 0x8a,0x01,0xbd,0xd6,0xe4,0x00,0x42,0x64,0x9c,0x8f,0x73,0x52,0xdb,0x30,0x56,0xdf,
+ 0x11,0x67,0x85,0x8e,0x63,0x95,0x9b,0x07,0x77,0x5e,0x3d,0x29,0xe9,0xbb,0x33,0x6d,
+ 0x26,0xd2,0x64,0x87,0xc9,0x32,0xc9,0x07,0xce,0x42,0xbe,0x11,0x40,0xc6,0x70,0x7f,
+ 0x8b,0xd3,0xbd,0x3a,0x1f,0x35,0x65,0x3e,0x6e,0x50,0x6f,0x3b,0x4a,0x81,0xc7,0xa0,
+ 0x02,0x9b,0x29,0xb9,0x31,0xc9,0x00,0x78,0x83,0x74,0x46,0x50,0x01,0x1f,0x5c,0xd4,
+ 0x51,0x4b,0x22,0x85,0xb3,0x04,0x24,0x9b,0x77,0x49,0x23,0x0f,0xbb,0xeb,0xc9,0xa4,
+ 0xae,0xd6,0xa3,0x4e,0xd2,0x44,0x97,0x11,0x5c,0x16,0x7b,0x8f,0x2b,0xe4,0x38,0x65,
+ 0x2c,0xf9,0x04,0x7a,0x11,0xeb,0xcd,0x3d,0x67,0xb7,0x51,0xe6,0x0c,0x25,0xa1,0x3b,
+ 0xd9,0x19,0x39,0xdc,0x3f,0xfd,0x54,0xe4,0x8e,0xcc,0x25,0xb7,0x94,0x26,0xf2,0xcb,
+ 0x13,0xb9,0xd8,0x92,0x4f,0xb0,0x35,0x04,0xb2,0x49,0x88,0x0c,0x33,0x08,0x95,0x9c,
+ 0xa1,0xca,0x83,0x90,0x7b,0x1f,0xd6,0xb2,0xde,0xe9,0x93,0x76,0x95,0xdd,0xae,0x68,
+ 0xb5,0xea,0xcc,0x24,0x36,0xf0,0xc7,0x24,0x45,0x43,0xc8,0xa4,0x6d,0xe3,0xb1,0xaa,
+ 0xd2,0x9d,0xf7,0x2c,0xd8,0x2c,0x5d,0x41,0x85,0x40,0x23,0xaf,0x50,0x05,0x2c,0x51,
+ 0x96,0x6d,0xf1,0x2a,0x2f,0x99,0xf2,0x8c,0x31,0x6d,0xd8,0xed,0xed,0x4d,0x8e,0x06,
+ 0x2d,0x6f,0x1a,0xbc,0x92,0x30,0x39,0x0e,0x3f,0x80,0x0e,0xe6,0xa5,0xd9,0xbb,0x83,
+ 0xba,0x63,0xe1,0x46,0x69,0xe5,0x9a,0x78,0xda,0x06,0x0c,0x32,0x8a,0x32,0x08,0xe9,
+ 0x91,0xed,0x56,0xad,0x63,0x94,0xf9,0xb3,0xc6,0x72,0x44,0xa0,0x81,0x90,0x0b,0x0a,
+ 0x7a,0xa4,0x39,0x96,0x45,0x99,0xb6,0xc8,0x32,0x58,0x2f,0xe8,0x7d,0x0d,0x48,0xf0,
+ 0xa6,0x03,0x16,0x22,0x00,0x01,0x27,0x6f,0x47,0xec,0x09,0xfc,0xeb,0x16,0xd0,0xd7,
+ 0x46,0x87,0xfd,0x94,0x47,0x6f,0x77,0x71,0x1c,0x91,0xc5,0xe6,0xb6,0xf5,0x8d,0xdc,
+ 0xb1,0x42,0x0e,0x2a,0x78,0x62,0x90,0x96,0x86,0xed,0x0a,0x66,0x3f,0x33,0x70,0x18,
+ 0xe9,0xd0,0xd4,0x42,0xce,0xea,0x5b,0x81,0x31,0x36,0xf3,0xdb,0xc6,0x40,0x08,0x10,
+ 0x92,0xe7,0xdc,0xf3,0xc5,0x74,0x32,0x24,0x89,0x14,0x6d,0x24,0x61,0xe7,0x41,0xe5,
+ 0xa3,0x60,0x00,0xd9,0xf5,0x03,0xb8,0xcd,0x28,0xdd,0x26,0x9e,0xac,0xcd,0xeb,0xae,
+ 0xc6,0x65,0xba,0x5b,0x42,0x19,0x9a,0x44,0x46,0x72,0x24,0x91,0x51,0x72,0x1d,0x80,
+ 0xe9,0xc7,0x4c,0x8a,0xd9,0x8a,0xd9,0xa4,0x32,0x4e,0xb1,0x85,0x24,0xee,0x11,0x81,
+ 0x80,0xca,0x7a,0xfc,0xdd,0xa9,0x91,0x59,0x5c,0xc9,0x3d,0xb0,0xb4,0x16,0xf1,0x95,
+ 0x04,0xc9,0x1c,0x83,0xa9,0xf5,0x1f,0xe1,0x5b,0x16,0xb1,0x5c,0x25,0xb8,0xb6,0x95,
+ 0x5c,0xc6,0x37,0x10,0x50,0x83,0x93,0x9e,0xa6,0xa9,0x35,0xab,0x47,0x3c,0x93,0x7d,
+ 0x35,0x26,0x8e,0xdd,0x21,0x87,0xcb,0x57,0xdd,0xe6,0x2e,0x47,0x6d,0xbe,0xd9,0xfc,
+ 0xaa,0xe4,0x20,0x45,0x6d,0x6b,0x04,0xa5,0xa7,0xdb,0xd4,0xe0,0x1c,0x8c,0xf0,0x29,
+ 0x0a,0x04,0x31,0xc3,0x02,0x03,0x0a,0xae,0xec,0x93,0xf7,0x8e,0x2a,0x78,0x36,0x2b,
+ 0x2a,0xc4,0xb9,0x68,0xc7,0xcc,0x48,0xe7,0xf2,0xad,0xe3,0xbe,0xda,0x09,0x6a,0x4e,
+ 0xd6,0xf2,0xc7,0xf6,0x97,0xf3,0x67,0x95,0x37,0xe6,0x31,0x8c,0x28,0xc8,0xe9,0x8a,
+ 0xa3,0x26,0xc6,0x50,0xcf,0x1c,0xa1,0x49,0xce,0xd2,0x00,0x0b,0xee,0x6a,0xca,0xc9,
+ 0x21,0x25,0x8b,0x48,0xc1,0x38,0x40,0x73,0xb4,0x9a,0x89,0xd9,0x8a,0xe2,0x48,0x56,
+ 0x71,0x8e,0x65,0x63,0x85,0x1e,0xbc,0x56,0x91,0xb5,0xcc,0x56,0xd6,0x65,0x6f,0xdc,
+ 0x90,0x92,0xa2,0x9d,0xbb,0xb1,0xf2,0x9f,0xbc,0x3d,0x45,0x4a,0x84,0xc6,0xca,0xfb,
+ 0x0a,0xa9,0x6c,0x90,0xe3,0x9f,0x4e,0x0f,0xe5,0x40,0xb3,0x44,0x75,0x96,0x39,0xd9,
+ 0x6d,0x99,0x37,0x15,0x23,0x2a,0xa4,0x0e,0xd5,0x2b,0xda,0x99,0x00,0x43,0x77,0xbc,
+ 0xb0,0xcb,0x48,0xc0,0xe7,0x23,0xa0,0x51,0xd3,0x15,0xa2,0x5d,0xcd,0x55,0xd2,0xd4,
+ 0xaa,0x65,0x96,0x4b,0xbd,0x87,0x60,0x66,0xf9,0x40,0x04,0x0c,0x83,0xdf,0x35,0x78,
+ 0x40,0xbc,0x34,0xcd,0x1c,0x4e,0xa7,0x6a,0x92,0x79,0x23,0xfd,0x91,0xf8,0x0a,0xb1,
+ 0x65,0x60,0x8d,0x12,0x4e,0xb1,0xfc,0xce,0xa0,0xab,0x33,0x0c,0x9e,0x7a,0x81,0xf8,
+ 0x1a,0x97,0xec,0xd1,0x97,0x71,0x00,0x69,0x25,0x2b,0x97,0x66,0x03,0x93,0xeb,0x9e,
+ 0xdd,0x2a,0xd4,0x93,0x76,0x44,0x36,0xd9,0x5b,0x2e,0xe9,0x03,0xba,0x94,0x50,0x48,
+ 0xc2,0x8e,0x01,0x3e,0xa7,0xd6,0x9d,0x1a,0xa2,0xc5,0x2b,0x06,0x59,0x58,0x0c,0x15,
+ 0x61,0xc9,0x3f,0xec,0x9e,0xd4,0xcb,0x99,0x26,0xb5,0x8c,0xab,0x8f,0xdc,0xed,0x0f,
+ 0x21,0x2f,0xf2,0x9f,0xfe,0xbd,0x62,0x0d,0x59,0x27,0x45,0x9d,0x10,0xa9,0x04,0x90,
+ 0x58,0xf2,0x4f,0x6a,0x7d,0x35,0x13,0x76,0x76,0x7b,0x97,0x67,0x76,0xdc,0x54,0xc8,
+ 0x64,0x98,0x00,0x00,0x03,0x38,0xf5,0xe3,0xbd,0x50,0xbb,0xba,0xf2,0x24,0xde,0x44,
+ 0x91,0xae,0x15,0x91,0x82,0x74,0x3d,0xc0,0xa8,0x2e,0x59,0xed,0xdd,0xa5,0x0c,0x8c,
+ 0x76,0x83,0x80,0x4e,0x14,0xd6,0x65,0xce,0xa8,0x24,0x84,0xc9,0x24,0xed,0x3b,0x29,
+ 0x04,0xa2,0x13,0x83,0x83,0xcf,0xe1,0x59,0x37,0x61,0x68,0x9e,0xba,0x15,0xaf,0x35,
+ 0x49,0xe7,0xf3,0xad,0xde,0x36,0x85,0x96,0x5d,0xcc,0xcc,0x06,0x5c,0x1c,0x72,0x3d,
+ 0xbe,0xb5,0x89,0x71,0xe7,0xa3,0x98,0x5a,0x7d,0xca,0x49,0x25,0x88,0x00,0x01,0xe8,
+ 0x00,0xa7,0xdc,0xcb,0x25,0xc3,0x17,0x57,0x31,0xa1,0x6d,0xfb,0x1b,0xab,0x8e,0xc0,
+ 0x54,0x11,0xb1,0x11,0x83,0xfe,0xa7,0x73,0x6d,0x55,0x24,0x1d,0xbd,0xf1,0x49,0x34,
+ 0xb5,0x63,0xd5,0xbd,0x0a,0xf7,0x11,0xc2,0x8a,0xd2,0x4d,0xfb,0xb9,0xe4,0x1b,0x30,
+ 0x0e,0x03,0x7a,0x60,0x76,0x3c,0xd4,0x12,0xc0,0x8b,0x34,0x68,0xfe,0x6e,0x59,0x44,
+ 0x8c,0xb1,0x9c,0x83,0x8e,0xa3,0x77,0x6a,0xb3,0x33,0x29,0x02,0x25,0x73,0xb8,0x36,
+ 0xe7,0x2c,0xbf,0x78,0x7a,0xe4,0xfd,0x2a,0xb0,0x8c,0x80,0x17,0xf7,0x92,0x31,0x7c,
+ 0x17,0x5c,0x7c,0xc0,0xf4,0x18,0xed,0x4e,0xcb,0x4b,0x6e,0x68,0xec,0xba,0x12,0x44,
+ 0xc9,0x00,0x9e,0x45,0x66,0x50,0xf2,0x86,0xda,0xa4,0x10,0xa0,0xf6,0x04,0xfa,0xd2,
+ 0xbc,0x49,0x83,0x22,0x4d,0x80,0x5f,0x6c,0x79,0x6c,0x10,0x3b,0x91,0xed,0xd6,0x96,
+ 0x3f,0x2a,0x25,0x4f,0x2d,0x8a,0x80,0xdb,0x55,0x58,0x70,0x4e,0x3a,0x91,0xe9,0xcd,
+ 0x32,0x68,0xf6,0x42,0x1b,0xf7,0x7d,0x76,0xb1,0xc1,0x25,0x89,0xa5,0xb3,0xb0,0x35,
+ 0xa6,0xa5,0x84,0x0d,0x75,0x23,0x24,0x92,0xb4,0xa4,0x28,0x25,0x98,0x6d,0x04,0x8e,
+ 0xc7,0xd6,0xa3,0xf3,0x21,0x91,0xd1,0x04,0xc2,0x1b,0x86,0x23,0x2c,0x46,0x01,0xfa,
+ 0x0f,0x4e,0xb4,0x05,0xf3,0xad,0xed,0x5a,0x45,0x24,0x97,0xf9,0x40,0x6c,0x63,0x1d,
+ 0xf1,0x53,0x00,0x26,0x12,0x6d,0x30,0xc8,0x8a,0x31,0xf3,0x2f,0xdc,0xfa,0x1e,0xf9,
+ 0xc0,0xa1,0x19,0xbd,0x75,0xe8,0x4f,0x04,0x32,0x36,0xd6,0xb8,0x48,0x8d,0xb8,0x62,
+ 0x7c,0xc6,0x07,0x73,0x0c,0xf4,0xcd,0x58,0xdb,0xf6,0x89,0x54,0x5a,0xc7,0x21,0xf3,
+ 0x01,0x91,0x83,0x11,0x94,0x3d,0x87,0xd6,0xaa,0x2d,0xd2,0x98,0xbe,0xfe,0x55,0x53,
+ 0x74,0x7b,0xf3,0x8c,0x77,0x03,0xde,0xb4,0xa1,0xd4,0xa3,0x96,0xd5,0x25,0x68,0xe2,
+ 0x32,0xf9,0x7e,0x66,0xd5,0xf9,0x5f,0x3d,0x32,0x69,0x5f,0xaa,0x07,0xb5,0xd3,0x32,
+ 0x27,0x8d,0x96,0x1d,0x8a,0xac,0x8c,0x55,0x89,0x62,0x37,0x64,0x7f,0x43,0x59,0xd6,
+ 0xec,0x9b,0x06,0x0c,0x9f,0x3b,0x01,0xe6,0xe7,0x86,0xcf,0x18,0xc7,0xb5,0x5f,0x92,
+ 0xe6,0x43,0x12,0x3d,0xbb,0xb4,0x77,0x04,0x12,0xa0,0x10,0x46,0xd2,0x3a,0xe3,0xe9,
+ 0x9a,0xaf,0x10,0x84,0x79,0x51,0x43,0x2e,0xe6,0x61,0xe6,0x04,0xce,0x00,0x03,0xad,
+ 0x36,0xf5,0x6e,0xc4,0xea,0xf4,0x8f,0x62,0xb5,0xca,0xc8,0xf6,0xe2,0xe1,0x23,0x99,
+ 0xd9,0x72,0xb3,0x39,0x38,0xf2,0xc0,0x3d,0x73,0xef,0x53,0x79,0x93,0x1f,0x20,0x6e,
+ 0x06,0x39,0x41,0x20,0x85,0xce,0x17,0xdc,0xf5,0xcf,0x02,0x97,0xe5,0x25,0x21,0x45,
+ 0x61,0x10,0x70,0xcc,0x15,0xb2,0xa7,0xda,0xa6,0x89,0x03,0x3b,0x48,0x91,0xca,0x96,
+ 0xc8,0x4a,0xa6,0xf6,0xe5,0xce,0x3a,0x00,0x3a,0x51,0x7b,0x59,0x31,0xb6,0x9b,0xd3,
+ 0xcb,0xfe,0x09,0x55,0xa6,0xb5,0x99,0xe3,0x8b,0x63,0x6c,0xdd,0x96,0x2a,0x39,0x60,
+ 0x07,0x7c,0x74,0xef,0x42,0x08,0x19,0x03,0xa3,0xcf,0xb0,0x92,0xc0,0xc8,0x3a,0x7d,
+ 0x6a,0x41,0x33,0x47,0x34,0x51,0xc7,0x69,0x6c,0x9b,0xc1,0x62,0xca,0xdd,0x0e,0x3b,
+ 0xfb,0xd4,0x6a,0x7f,0x73,0xe6,0x4d,0x91,0x2b,0x36,0x0e,0x07,0xde,0xc7,0x6c,0x76,
+ 0xa3,0x44,0x0e,0xca,0xf7,0xb0,0xa5,0xa2,0x59,0x63,0x97,0xcd,0x56,0x97,0x70,0xca,
+ 0xa9,0xe5,0x97,0xdf,0xf2,0xa6,0xee,0x8a,0x58,0xc3,0x09,0x95,0x22,0x47,0xdc,0x14,
+ 0x75,0x45,0x27,0xaf,0xbd,0x24,0x5f,0xe9,0x12,0xf9,0x8f,0x6d,0x10,0x86,0x3c,0xb6,
+ 0xd5,0x60,0x0b,0x9f,0x5c,0xfe,0x26,0x88,0x08,0x75,0x69,0xd1,0x4f,0x96,0xe4,0x01,
+ 0x12,0xae,0x72,0x33,0xcf,0x26,0x85,0x65,0xa2,0x0d,0x5a,0x4a,0xfa,0x0f,0x0e,0x67,
+ 0xca,0x98,0x88,0x55,0x18,0x32,0x84,0xf9,0x40,0xf4,0x35,0x3a,0x3d,0xc2,0x4b,0x0c,
+ 0x51,0x24,0x72,0x92,0xa4,0xe7,0x83,0xb4,0x7a,0x81,0x50,0x2a,0x48,0xb1,0xcf,0x09,
+ 0x69,0x56,0xdd,0xa4,0xca,0x8c,0xf2,0xfc,0x74,0x2c,0x3a,0x63,0xf2,0xa6,0x6d,0x90,
+ 0x48,0xd2,0x24,0x8e,0xee,0x06,0xc6,0xca,0xf5,0x1f,0xe3,0x43,0xba,0xd1,0x82,0xbb,
+ 0xd5,0xad,0x42,0xe5,0x25,0x26,0x2b,0x79,0xa4,0x67,0x0c,0x0b,0x87,0x2a,0x42,0x8c,
+ 0x7f,0x08,0x35,0x2d,0xb7,0x9a,0x11,0x67,0x55,0x65,0x50,0xe5,0x52,0x22,0xbb,0xb2,
+ 0xb5,0x18,0x68,0x67,0x5f,0x29,0x9d,0xd8,0xc4,0xc4,0x22,0xb1,0xc0,0x43,0xf4,0xa7,
+ 0x20,0x94,0x22,0xb9,0x93,0x64,0x4e,0x76,0x07,0xdb,0x90,0x00,0xe3,0xad,0x0f,0x55,
+ 0xa0,0x2b,0x37,0x74,0xf4,0x1a,0xac,0xc7,0x6b,0x66,0xdd,0x4a,0x92,0xc5,0x72,0x73,
+ 0xf4,0xc5,0x43,0x2c,0x8a,0xec,0xd2,0x59,0xa8,0x90,0x13,0x87,0x3b,0x49,0x23,0xe9,
+ 0x57,0x66,0x60,0x21,0x40,0x22,0x57,0xc0,0xc0,0x75,0x19,0x2d,0xcf,0x4f,0xfe,0xbd,
+ 0x54,0x8d,0x02,0x4a,0x90,0x81,0x24,0x40,0xb6,0xd0,0x43,0x60,0x0c,0xff,0x00,0x78,
+ 0x51,0xe6,0x0d,0xbb,0xea,0x2a,0x79,0x5b,0xf0,0xd2,0x63,0xe5,0x23,0x68,0x1f,0x77,
+ 0xdb,0x8f,0xad,0x35,0x83,0x11,0x94,0x94,0x21,0x1f,0x38,0x0e,0xd8,0x0a,0x71,0x8e,
+ 0x2a,0x49,0xad,0xe3,0x90,0xbc,0x0b,0xb8,0xa2,0xf0,0xa5,0x49,0x39,0x6f,0x7f,0x5a,
+ 0x8e,0x50,0xd2,0x24,0x47,0x70,0xf3,0x46,0x3e,0x52,0xbf,0x73,0x07,0xa0,0xa5,0x16,
+ 0xba,0xb0,0x6b,0xb8,0xf8,0x98,0x22,0xc1,0xe5,0x4a,0x53,0x19,0x66,0x7c,0xf4,0x3d,
+ 0xf2,0x69,0x81,0xcc,0xb1,0xef,0x52,0x24,0x99,0xdc,0xa2,0xaf,0x96,0x09,0x41,0xea,
+ 0x4f,0xe7,0x4f,0x13,0x2a,0x48,0x87,0xf7,0x8c,0xa7,0x90,0xaa,0xb9,0xc3,0x51,0x13,
+ 0x3b,0x4d,0x0a,0x3e,0xc3,0x2b,0x6e,0x24,0x2f,0x46,0xfa,0x0e,0xd4,0xfa,0x05,0xde,
+ 0x8d,0xbb,0xa0,0x49,0x62,0x8d,0xcc,0x6a,0x90,0xbc,0xc9,0xd3,0x04,0xfe,0xf3,0xd7,
+ 0x1e,0x94,0x4b,0x22,0xf9,0x6b,0x13,0xac,0x29,0x83,0xe6,0x7c,0xc3,0x87,0x27,0x1d,
+ 0x08,0xeb,0xd4,0xd5,0xd8,0x96,0xdd,0x81,0xda,0xe8,0xcc,0x48,0x09,0x18,0xfb,0xdd,
+ 0x7b,0xd5,0x18,0xe0,0x7b,0x48,0xe3,0x0a,0x0b,0x2a,0xb9,0xc0,0x00,0x12,0xbc,0xf4,
+ 0xcd,0x1a,0x27,0xa8,0x3b,0xa5,0x77,0xb0,0xfc,0x19,0x21,0xf3,0x87,0x33,0x3b,0x95,
+ 0x64,0x03,0x05,0x31,0xfe,0x35,0x18,0x68,0xe2,0x94,0xcd,0x02,0xc1,0x24,0x85,0x72,
+ 0xc4,0xb1,0xc6,0x07,0x40,0x3d,0xf9,0xa7,0xae,0x6d,0xf6,0x3e,0xff,0x00,0xb1,0x93,
+ 0x23,0x79,0x8b,0x27,0x40,0x71,0xc6,0x33,0x51,0xac,0x62,0x40,0xee,0x8a,0x81,0x1a,
+ 0x5c,0x82,0xca,0x40,0x63,0x8e,0x83,0xf2,0xa2,0xf6,0xdc,0x7a,0xb7,0x74,0x04,0x87,
+ 0x59,0xca,0xf9,0x6b,0x38,0x01,0xca,0xbb,0x1e,0x7d,0x87,0xbd,0x33,0x31,0xca,0xed,
+ 0xbe,0x31,0x80,0xca,0x3e,0x62,0x78,0x24,0xe3,0x9f,0x5a,0x4d,0x81,0x5c,0x16,0x10,
+ 0xa0,0x20,0x86,0x2a,0x09,0x1b,0xb3,0xd6,0x9d,0xc3,0xb4,0x78,0x54,0x13,0x28,0x20,
+ 0x85,0xcf,0x3f,0x53,0x4d,0xe9,0xb0,0xae,0xd2,0xbb,0x7a,0x93,0x4b,0x1e,0x47,0x98,
+ 0x8c,0xab,0x29,0x7d,0xa4,0xf6,0x2b,0xeb,0x9f,0x4f,0xc2,0x95,0x76,0x79,0xf1,0xaa,
+ 0x31,0x85,0x50,0xe0,0xab,0xa0,0xc1,0xf7,0x07,0xf3,0xa8,0x50,0x18,0x03,0x34,0xea,
+ 0x64,0x79,0x86,0x54,0x80,0x48,0x5e,0x7a,0x8a,0x7a,0xb2,0x42,0xb1,0x79,0xe4,0xf0,
+ 0x09,0x60,0x72,0xd9,0xe3,0xb1,0xa2,0xcf,0xa0,0x24,0xaf,0x76,0x58,0xdc,0xab,0x23,
+ 0xe0,0x91,0x19,0x24,0xb2,0xed,0xc6,0x38,0xe2,0xaa,0x47,0x13,0xc5,0x14,0x09,0x22,
+ 0x89,0x26,0x29,0xf3,0x80,0x33,0x95,0xce,0x79,0xa1,0x5c,0xcd,0x13,0xee,0x8c,0x24,
+ 0x81,0x49,0x76,0x66,0xe0,0x7d,0x29,0x76,0xc8,0xe2,0x19,0x63,0x18,0x91,0x87,0xc8,
+ 0x08,0xe4,0xfa,0x81,0x49,0x3b,0x0f,0x56,0xee,0xf6,0x0f,0x2f,0xcf,0xd9,0xe5,0xbc};
diff --git a/lib/libesp32/JPEGDEC/test_images/tulips.h b/lib/libesp32/JPEGDEC/test_images/tulips.h
new file mode 100644
index 000000000..edd8e2d88
--- /dev/null
+++ b/lib/libesp32/JPEGDEC/test_images/tulips.h
@@ -0,0 +1,3504 @@
+//
+// tulips
+//
+const uint8_t tulips[] PROGMEM = { 0xff,0xd8,0xff,0xc0,0x00,0x11,0x08,0x01,0xe0,0x02,0x80,0x03,0x01,0x22,0x00,0x02,
+ 0x11,0x01,0x03,0x11,0x01,0xff,0xc4,0x00,0x1f,0x00,0x00,0x01,0x05,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,
+ 0x06,0x07,0x08,0x09,0x0a,0x0b,0xff,0xc4,0x00,0xb5,0x10,0x00,0x02,0x01,0x03,0x03,
+ 0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7d,0x01,0x02,0x03,0x00,0x04,
+ 0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,
+ 0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,
+ 0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,0x29,0x2a,0x34,0x35,0x36,
+ 0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,
+ 0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,
+ 0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,
+ 0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,
+ 0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,
+ 0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,
+ 0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xc4,0x00,
+ 0x1f,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0xff,0xc4,
+ 0x00,0xb5,0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,
+ 0x01,0x02,0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,
+ 0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,
+ 0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,
+ 0x19,0x1a,0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,
+ 0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,
+ 0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,
+ 0x85,0x86,0x87,0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,
+ 0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,
+ 0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,
+ 0xd8,0xd9,0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,
+ 0xf6,0xf7,0xf8,0xf9,0xfa,0xff,0xdb,0x00,0x43,0x00,0x02,0x02,0x02,0x02,0x02,0x02,
+ 0x03,0x02,0x02,0x03,0x04,0x03,0x03,0x03,0x04,0x05,0x04,0x04,0x04,0x04,0x05,0x06,
+ 0x05,0x05,0x05,0x05,0x05,0x06,0x08,0x06,0x06,0x06,0x06,0x06,0x06,0x08,0x08,0x08,
+ 0x08,0x08,0x08,0x08,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x0b,0x0b,0x0b,0x0b,0x0b,
+ 0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0xff,0xdb,0x00,0x43,0x01,0x02,
+ 0x02,0x02,0x03,0x03,0x03,0x05,0x03,0x03,0x05,0x0d,0x09,0x07,0x09,0x0d,0x0d,0x0d,
+ 0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,
+ 0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,
+ 0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0xff,
+ 0xdd,0x00,0x04,0x00,0x28,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,
+ 0x00,0x3f,0x00,0xfc,0x75,0xb8,0x88,0x2f,0xcc,0x3f,0x5a,0xcf,0x7f,0x41,0x57,0x2e,
+ 0x6e,0x17,0xa0,0xeb,0x59,0x8e,0xe1,0xbe,0x6f,0x4a,0xf0,0xe5,0xa1,0xcf,0x07,0xa9,
+ 0xaf,0xa7,0xcb,0x87,0x19,0xfc,0x2b,0xd0,0xad,0x2e,0x80,0x80,0x0c,0xf4,0xaf,0x30,
+ 0xb5,0x6d,0x8c,0x18,0xd6,0xf4,0x57,0xfb,0x78,0xdd,0x8a,0xc1,0xc9,0xdc,0x55,0x23,
+ 0x73,0xb5,0x92,0x7f,0x4a,0xc5,0xbd,0x97,0x72,0x9c,0xd6,0x57,0xf6,0x8e,0xec,0x8c,
+ 0xf4,0xef,0x50,0x9b,0x93,0x37,0x4e,0xb5,0xcf,0x51,0x6b,0x76,0x55,0x38,0xb4,0xc9,
+ 0x6d,0xd7,0x74,0x9f,0xca,0xb5,0x13,0x83,0xcf,0x15,0x52,0x04,0xc6,0x1b,0xd6,0xad,
+ 0xa8,0x6e,0x48,0xc8,0xc5,0x44,0x67,0x64,0x6c,0xcd,0xdb,0x35,0x1b,0x73,0x8e,0xb5,
+ 0x34,0xed,0x8e,0x07,0x7e,0x0d,0x65,0x25,0xcf,0x96,0x81,0x68,0x5b,0x8c,0xb0,0xe7,
+ 0x35,0xa3,0xd5,0x68,0x8e,0x7b,0xfb,0xda,0x9a,0x76,0xe8,0xa0,0xf4,0xeb,0x5d,0x0d,
+ 0x84,0x59,0x20,0xf6,0xee,0x2b,0x02,0xd9,0x80,0x5d,0xef,0x5b,0xd6,0x73,0x05,0xe4,
+ 0xf3,0x5e,0x7c,0xb5,0x96,0x84,0xcc,0xed,0x2d,0x24,0x48,0xd7,0x8a,0x75,0xde,0xa4,
+ 0xaa,0xb8,0x06,0xb9,0xa9,0x2f,0xc4,0x69,0x80,0x7d,0xcd,0x60,0x5e,0xea,0xa4,0xee,
+ 0x39,0xe9,0x5d,0x34,0x68,0x36,0xf4,0x39,0xb9,0x5f,0x35,0xcd,0x2d,0x43,0x54,0xc8,
+ 0x38,0x35,0xe7,0x9a,0xb6,0xa0,0x5b,0x3c,0xd3,0xaf,0xf5,0x02,0x41,0x20,0xe7,0xd2,
+ 0xb8,0x8d,0x42,0xeb,0x39,0xaf,0x67,0x0d,0x85,0x4b,0x73,0xae,0x9c,0x3a,0x99,0x7a,
+ 0x95,0xe1,0x90,0xe0,0x1a,0xe5,0xe4,0xe5,0x8d,0x6a,0x4e,0x4b,0x12,0x5b,0xe9,0x59,
+ 0xaf,0xc7,0x22,0xbd,0x38,0xc3,0x95,0x58,0xe9,0x48,0xaa,0x46,0x2a,0x26,0x5f,0x4a,
+ 0xb0,0x41,0xce,0xd3,0x50,0x91,0xeb,0xd0,0x55,0x5a,0xe3,0xb9,0x03,0x0e,0xe2,0xa1,
+ 0x2b,0xcf,0x15,0x39,0x19,0x15,0x13,0x71,0xc1,0xe6,0x95,0x84,0x42,0x4e,0x29,0x9f,
+ 0xd2,0xa4,0xc6,0x38,0xa8,0xdb,0xa0,0x26,0xa9,0x00,0x94,0x52,0x51,0xd2,0xa8,0x96,
+ 0xc7,0x00,0x7b,0x74,0xa9,0x00,0xc7,0x02,0xa3,0x03,0x07,0x1d,0xea,0x65,0xaa,0x8e,
+ 0x8f,0x52,0x18,0xf0,0xbd,0xba,0xd3,0xd7,0x38,0xc7,0x6a,0x60,0x07,0x19,0x35,0x2a,
+ 0xfd,0xda,0xd3,0xcc,0x68,0x91,0x73,0xda,0xa7,0x51,0xc0,0xa8,0x57,0xa6,0x7d,0x6a,
+ 0x45,0xce,0x69,0xdd,0x0e,0xc4,0xa0,0xe3,0xbe,0x3a,0x54,0x80,0x72,0x6a,0x21,0x52,
+ 0xa9,0x60,0x2a,0x5c,0xfb,0x02,0x44,0xa3,0xdf,0xad,0x28,0xe0,0xe6,0x99,0x9c,0x9a,
+ 0x70,0x39,0xa3,0x9d,0x0e,0xc3,0xc2,0xfa,0xd3,0xb1,0x93,0xc8,0xe9,0xd2,0x99,0x9f,
+ 0x5a,0x78,0x39,0x14,0x73,0x26,0x3e,0x54,0x29,0xe4,0x62,0x8c,0x7a,0x73,0x8a,0x29,
+ 0x4f,0x07,0xd2,0x9f,0x3a,0x0b,0x0e,0x24,0x8c,0x1a,0x76,0x3a,0x67,0xb0,0xa6,0x1c,
+ 0x8f,0xbd,0x4b,0x9f,0xc7,0x34,0xee,0x85,0x61,0xdc,0xe6,0x82,0x0e,0x70,0x7f,0x0a,
+ 0x3f,0x0a,0x78,0xc1,0x3c,0x76,0xa5,0x7b,0x02,0x43,0x4a,0x9e,0xe2,0x9d,0xb3,0x1c,
+ 0x66,0x9c,0x07,0x71,0x4e,0x19,0xcd,0x2b,0x6e,0xae,0x3b,0x08,0x10,0x1a,0x04,0x60,
+ 0xff,0x00,0x2a,0x9b,0x19,0xfa,0xd4,0x80,0x1e,0x28,0xb0,0xc8,0x3c,0x9c,0x52,0x79,
+ 0x3d,0xaa,0xe8,0x5c,0x9e,0x47,0xeb,0x4e,0x0b,0xed,0x47,0x27,0x60,0x28,0x79,0x34,
+ 0x9e,0x51,0x03,0x35,0xa5,0xb3,0x18,0x03,0xf1,0xa8,0xca,0x0c,0xf5,0xa7,0xca,0x80,
+ 0xcd,0x31,0x91,0xfd,0x2a,0x36,0x42,0x30,0xb5,0xa2,0x57,0x9e,0x7a,0xd4,0x0e,0xa3,
+ 0x1d,0x2a,0x79,0x7a,0xb0,0x28,0x14,0xc7,0xb6,0x6a,0x33,0xc7,0x15,0x69,0xc6,0x3f,
+ 0x0a,0xae,0xc0,0xa9,0xf4,0xf4,0xfc,0x6a,0x2d,0xd5,0x01,0x0b,0x71,0xc8,0xe7,0xda,
+ 0xa0,0x24,0x8e,0xdd,0x6a,0x76,0x1c,0xfd,0x6a,0x36,0xc8,0xe4,0x7e,0x34,0x80,0x8f,
+ 0x14,0x01,0x91,0x8a,0x3e,0x9c,0xd2,0x73,0x9a,0x0a,0x57,0x6c,0x7e,0xde,0x31,0x8c,
+ 0x54,0xa8,0x07,0xe5,0x50,0x73,0x52,0xae,0x4f,0x20,0xe6,0x83,0x62,0xd2,0xe7,0xa7,
+ 0xf5,0xa7,0xe3,0x18,0xc8,0xa8,0xd3,0x9a,0x94,0x7c,0xbd,0x45,0x69,0x18,0xa6,0x86,
+ 0x90,0xab,0x80,0x48,0xc6,0x29,0xe3,0x3d,0x38,0xa5,0xc6,0x69,0xc3,0xdf,0xbd,0x2e,
+ 0x4d,0x6c,0x3e,0x83,0x76,0x9c,0xe2,0x9d,0x82,0x30,0x00,0xc5,0x2e,0x4e,0x07,0x14,
+ 0xb4,0xf9,0x09,0x13,0x04,0xe7,0x3d,0x29,0x06,0x7a,0x63,0x14,0xee,0x83,0xd4,0xd1,
+ 0xed,0x59,0x34,0x03,0x7a,0x7a,0x0a,0x8c,0xf3,0xc8,0xe2,0xa4,0x38,0x1c,0xe3,0xfa,
+ 0x54,0x44,0xe3,0x3c,0xfe,0x5d,0xab,0x36,0x93,0x13,0x7a,0x11,0xe6,0x98,0x72,0x45,
+ 0x3f,0x8e,0xa6,0xa2,0x27,0x38,0x15,0x95,0x8c,0xb9,0x80,0x9e,0xe3,0xf2,0x35,0x19,
+ 0xe3,0x8e,0xc6,0x95,0xb3,0x9f,0x5a,0x6f,0x4e,0xdc,0xd0,0xd5,0x85,0x70,0xe9,0x4d,
+ 0xf9,0xbb,0x53,0xf1,0x9e,0x46,0x2a,0x41,0xc9,0xfa,0x7e,0x14,0xbd,0x01,0x76,0x21,
+ 0x50,0x70,0x09,0x14,0xf0,0xac,0x73,0x81,0x81,0x53,0xa8,0xf4,0xeb,0x52,0x2a,0x8c,
+ 0x72,0x05,0x22,0x9c,0x59,0xff,0xd0,0xfc,0x4d,0x37,0x1b,0xbe,0xa6,0xad,0x44,0x41,
+ 0xc7,0x6a,0xc4,0x59,0x09,0xe2,0xb5,0xad,0xd8,0x6d,0xe0,0x57,0x8b,0x35,0x73,0x08,
+ 0x23,0x44,0x7a,0x8a,0x9c,0x23,0x63,0x3f,0xfd,0x6c,0xd1,0x6d,0x17,0x9a,0x72,0x7a,
+ 0x56,0xda,0xc0,0x1c,0x05,0x51,0xcf,0x35,0x9c,0x7a,0xa2,0xcc,0x98,0xe3,0x6c,0xfa,
+ 0xd6,0x9d,0xa4,0x04,0x72,0x7a,0x55,0xe8,0x6c,0x72,0xc0,0x62,0xb5,0xe0,0xb2,0x21,
+ 0x80,0xdb,0x5c,0x98,0xa5,0x65,0xa3,0x2a,0x24,0xb6,0x16,0x2d,0x27,0x40,0x6b,0x56,
+ 0x5d,0x31,0x91,0x4f,0x04,0x7a,0xd7,0x4f,0xa1,0xd8,0x29,0x51,0x91,0x93,0xd6,0xba,
+ 0x2b,0xad,0x3d,0x02,0x1e,0x3a,0xd6,0x38,0x5a,0x4e,0x57,0x93,0x22,0xa4,0xed,0xb1,
+ 0xe3,0x97,0x50,0x98,0xf3,0xf4,0xfe,0x75,0x95,0x04,0xdb,0x5f,0xf1,0xae,0xdb,0x58,
+ 0xb2,0x08,0xa4,0xe2,0xb8,0x20,0xbb,0x67,0xf9,0x45,0x69,0x5a,0x9b,0x4d,0x22,0x61,
+ 0xdc,0xe9,0xad,0xa6,0x67,0xdb,0xc7,0x15,0xb3,0x1c,0xc5,0x00,0xe7,0x18,0xac,0x0b,
+ 0x60,0x17,0xb7,0xbd,0x5d,0x79,0xb0,0x38,0xfd,0x6b,0xa3,0x0f,0x84,0xbd,0x9b,0x14,
+ 0xec,0x58,0xb8,0xba,0x73,0x9f,0x61,0x58,0x17,0x73,0x9e,0x72,0x6a,0x69,0xa5,0xc0,
+ 0x23,0xaf,0xad,0x63,0xcf,0x23,0x30,0x35,0xeb,0xd1,0xc3,0x28,0xea,0xc5,0x05,0xad,
+ 0xd9,0x99,0x77,0x2f,0x5c,0x74,0xae,0x76,0xe0,0x82,0x4f,0xa8,0xad,0x99,0xf0,0x57,
+ 0x35,0x8b,0x36,0x17,0xfa,0x57,0x5a,0x49,0x1d,0x0b,0xb9,0x91,0x2e,0x32,0x78,0x23,
+ 0xbf,0x3e,0xf5,0x41,0xc6,0x7f,0xad,0x68,0xcd,0xb4,0x9a,0xcf,0x73,0x92,0x7e,0xb4,
+ 0x9e,0xc3,0x2b,0x11,0xd8,0xd4,0x45,0x73,0xf8,0xff,0x00,0x4a,0x98,0x9c,0x9c,0xd4,
+ 0x27,0xad,0x2d,0xc0,0x8d,0x86,0x7a,0xff,0x00,0x9f,0x4a,0x84,0xa8,0x1c,0xd5,0x8c,
+ 0x7f,0x0f,0xeb,0x51,0x9c,0xe7,0xda,0xaa,0xc0,0x55,0x23,0x07,0x15,0x1e,0x39,0x03,
+ 0x26,0xac,0x37,0xd3,0x3c,0xd4,0x78,0xf5,0xe2,0x8b,0x08,0x83,0x04,0x1d,0xb4,0xf0,
+ 0x0f,0x04,0xf4,0x15,0xaf,0x61,0xa4,0xdd,0x6a,0x12,0x05,0x89,0x0f,0xd7,0xad,0x77,
+ 0xd6,0x7f,0x0d,0x2f,0xee,0x22,0xde,0xc0,0x83,0xf4,0xac,0x2a,0xe2,0xe9,0x53,0xd2,
+ 0x52,0x3d,0xdc,0xb7,0x86,0x73,0x2c,0xc2,0x2e,0x58,0x5a,0x2d,0xa3,0xcb,0x14,0x63,
+ 0x9f,0x5a,0x93,0x81,0x9c,0x0c,0x62,0xbb,0xdb,0xff,0x00,0x00,0x6a,0x76,0x7c,0xa8,
+ 0x2c,0x3d,0xc5,0x72,0x77,0x5a,0x65,0xe5,0x99,0xdb,0x34,0x78,0x1e,0xb5,0x54,0x71,
+ 0x74,0x6a,0xbb,0x46,0x66,0x79,0x87,0x0e,0xe6,0x38,0x2f,0xf7,0x9a,0x0d,0x7c,0x8a,
+ 0x35,0x20,0xe3,0x8a,0x12,0x39,0x1f,0x2a,0xaa,0x4d,0x68,0xc7,0xa5,0xdf,0x48,0x37,
+ 0x2c,0x4c,0x7f,0x0a,0xe8,0xa9,0x56,0x2b,0x79,0x1e,0x65,0x2c,0x35,0x6a,0x9f,0xc3,
+ 0x83,0x7e,0x8a,0xe5,0x25,0xe3,0xaf,0x4a,0x7e,0xe1,0x81,0xfa,0x56,0x9c,0x7a,0x26,
+ 0xa4,0xe7,0x1f,0x67,0x7e,0x7d,0xaa,0x69,0x34,0x1d,0x4e,0x15,0xdd,0x24,0x0c,0x06,
+ 0x3a,0xe3,0xa5,0x60,0xf1,0x34,0x93,0xb7,0x3a,0x3b,0x56,0x4f,0x8e,0x71,0xe6,0x54,
+ 0x25,0x6f,0x46,0x65,0x03,0x9f,0x6a,0x78,0xea,0x29,0x8e,0x92,0x46,0xdb,0x24,0x52,
+ 0x31,0xd8,0x8c,0x52,0x83,0x93,0x80,0x2b,0x4e,0x64,0xf6,0x67,0x9f,0x28,0x4a,0x2f,
+ 0x95,0xad,0x49,0x43,0x7e,0x15,0x22,0xe7,0xae,0x3a,0xf7,0xa4,0x58,0xe4,0x23,0x24,
+ 0x1f,0xca,0x93,0x95,0xf6,0xa5,0xcc,0x81,0xc5,0xad,0xd1,0x2d,0x3c,0x64,0x0e,0x05,
+ 0x30,0x73,0xc0,0xa7,0xa9,0xe3,0x20,0xf3,0x54,0x48,0xff,0x00,0x61,0x47,0x41,0xd7,
+ 0xad,0x1f,0x4a,0x32,0x07,0xf5,0xa0,0x00,0x8e,0xf4,0x94,0xe3,0xcf,0x6a,0x43,0xf4,
+ 0xa0,0x05,0x00,0xe7,0xd2,0x9c,0x0e,0x6a,0x31,0xf5,0xc5,0x3b,0x76,0x0f,0x3d,0x69,
+ 0x73,0x01,0x2e,0x73,0x9c,0xf7,0xa9,0x57,0x39,0xe8,0x7d,0xaa,0xb8,0x6c,0x60,0x93,
+ 0xd7,0xf4,0xa7,0xe7,0xa7,0xb5,0x30,0x2d,0x03,0xc7,0x4f,0x4a,0x90,0x7a,0xfa,0xd5,
+ 0x75,0x61,0x8e,0x7a,0x67,0xb5,0x4c,0x1c,0x6e,0xe4,0x67,0x35,0x71,0x7a,0x81,0x61,
+ 0x46,0x38,0xef,0x53,0x01,0xfa,0x54,0x0a,0xdd,0x8d,0x4a,0xac,0x0e,0x2b,0x50,0x1f,
+ 0xd3,0xad,0x45,0x80,0x0f,0x27,0x14,0xed,0xc3,0xb5,0x30,0xb0,0xc8,0xcd,0x00,0x31,
+ 0xb8,0x1c,0x55,0x67,0x03,0x27,0x15,0x3b,0x11,0x9f,0x5c,0xd5,0x77,0x24,0x8e,0x68,
+ 0x60,0x57,0x61,0x93,0xeb,0x55,0x9f,0x8e,0x33,0x56,0x1c,0xe7,0x8a,0xae,0xdd,0x0e,
+ 0x4d,0x64,0xd2,0xee,0x34,0x57,0x6e,0xb4,0xc6,0x5e,0x78,0xa9,0x89,0xe3,0xd2,0xa0,
+ 0x62,0x7b,0xff,0x00,0xfa,0xea,0x04,0x46,0x41,0xcf,0x1d,0x29,0x31,0x8e,0x7b,0xd3,
+ 0xa8,0xa0,0x69,0x8a,0x3d,0x3f,0xfa,0xd5,0x2a,0x12,0x41,0xe7,0xad,0x45,0x8c,0xf4,
+ 0xa9,0x97,0x8c,0x9a,0x7a,0x1b,0x24,0xba,0x16,0x17,0xd6,0xa4,0x07,0x27,0x26,0x98,
+ 0xa0,0xf0,0x3b,0xd4,0xa3,0x3d,0xc5,0x6b,0x17,0xa1,0x43,0x81,0x04,0x64,0x50,0x07,
+ 0x6c,0x66,0x93,0xa0,0xe7,0xf0,0xa5,0xce,0x07,0xd6,0xa8,0x1b,0x0f,0x9b,0x1e,0xd4,
+ 0xbb,0x8d,0x26,0x79,0xc8,0xa4,0xce,0x46,0x0f,0x18,0xe7,0xe9,0x49,0x88,0x71,0x39,
+ 0x06,0x8c,0xe7,0x8c,0xd3,0x33,0x8c,0xf3,0x48,0xcd,0x8e,0x01,0xe9,0xda,0xb0,0x62,
+ 0x7d,0xd0,0xec,0xfa,0xd4,0x24,0xe3,0x9e,0xb4,0xe2,0xc7,0xe8,0x2a,0x26,0x6e,0x2b,
+ 0x36,0x29,0x3d,0x35,0x06,0xc7,0x6e,0x4d,0x30,0x90,0x38,0xa5,0x39,0xfa,0xd4,0x7b,
+ 0x8d,0x43,0x5d,0x4c,0xc0,0xf5,0xa3,0x1c,0xf1,0x46,0x72,0x7d,0x33,0x4f,0x1c,0x8c,
+ 0x73,0xf5,0xa8,0x91,0x21,0x80,0x47,0x4e,0x95,0x22,0xa8,0x3d,0x7f,0x3a,0x45,0x53,
+ 0x90,0x6a,0x61,0xe8,0x6a,0x4d,0x16,0xd6,0x41,0x80,0x47,0x1d,0x69,0x72,0x40,0xcf,
+ 0x5f,0x7a,0x55,0xce,0x31,0x4a,0x69,0x5c,0xa4,0xad,0xa1,0xff,0xd1,0xfc,0x3d,0x8a,
+ 0x22,0x79,0x3c,0x0a,0xd1,0xb7,0x18,0xa8,0xb0,0xaa,0x31,0xe9,0x52,0x20,0xf9,0xb0,
+ 0x3a,0xf5,0xc5,0x78,0x72,0xd9,0x92,0x91,0xd2,0x58,0x37,0x38,0xc7,0x3d,0xff,0x00,
+ 0xc2,0xbb,0x8d,0x3a,0xcc,0xcc,0x01,0xc7,0xd6,0xb8,0x7d,0x34,0x00,0xc0,0x9e,0x79,
+ 0xcd,0x7a,0xae,0x8c,0xb9,0x45,0xe9,0x9a,0xe7,0xe7,0x7b,0x03,0x44,0xd0,0xe9,0xaa,
+ 0x07,0x6e,0xb5,0x69,0x2d,0xd5,0x64,0x02,0xb6,0x19,0x76,0x27,0xca,0x39,0x35,0x4c,
+ 0x00,0x8f,0xb9,0x87,0xe1,0x53,0x57,0xdf,0x12,0x67,0x45,0xa5,0xed,0x89,0x43,0x30,
+ 0xe8,0x05,0x5f,0xba,0xb9,0x40,0x33,0x91,0xc0,0xe9,0x5c,0xbf,0xdb,0x76,0x77,0xc5,
+ 0x50,0xbd,0xd4,0x88,0x52,0x33,0x5b,0x50,0x8a,0x8c,0x6c,0x8c,0x6a,0x2b,0xc8,0xab,
+ 0xad,0x5c,0x2c,0xaa,0xe3,0xa0,0xae,0x00,0x80,0x67,0xe9,0x5a,0xf7,0x57,0x65,0xf3,
+ 0xce,0x47,0x35,0x92,0xa4,0x19,0x89,0x3d,0xfa,0xfb,0xd5,0xc2,0x17,0x9d,0xd9,0x51,
+ 0x5c,0xa8,0xd8,0x8b,0x00,0x7b,0x53,0xe4,0x6e,0xa0,0x7e,0x35,0x1c,0x67,0x00,0x63,
+ 0xad,0x0e,0xc4,0x1c,0x8e,0xd5,0xea,0xd2,0x8a,0x48,0x8b,0x95,0x24,0x39,0xcf,0xa9,
+ 0xac,0xa9,0xc7,0x07,0xf1,0xed,0x5a,0xb2,0x60,0xa9,0xea,0x31,0x59,0x33,0xfc,0xc0,
+ 0xe0,0xf5,0xad,0x93,0x2a,0x09,0x98,0xf3,0x91,0xdb,0xe9,0x58,0xd3,0xf0,0x0d,0x6c,
+ 0x5c,0x64,0xf0,0xd9,0xff,0x00,0x1a,0xc5,0xb8,0xe7,0xa7,0x6a,0xa3,0x74,0x65,0x4a,
+ 0x49,0x3f,0xd2,0xb3,0xdf,0x39,0xe3,0xbd,0x5e,0x97,0x81,0xfc,0xeb,0x3e,0x4c,0x83,
+ 0xd6,0xa5,0xb4,0x32,0x33,0xc1,0xc5,0x31,0xb2,0x45,0x2f,0x39,0xf5,0xa8,0xcf,0x06,
+ 0x92,0x01,0x31,0xeb,0xcd,0x30,0xae,0x06,0x4f,0x1c,0x54,0x9e,0xf4,0x80,0x60,0x62,
+ 0xaa,0xe0,0x57,0x2b,0xf8,0xd6,0xc6,0x93,0xa5,0x4b,0x7f,0x32,0xae,0xd3,0x8c,0x8a,
+ 0xa9,0x0c,0x4d,0x34,0xaa,0xa0,0x71,0x9a,0xf7,0x1f,0x05,0x68,0xaa,0x36,0x48,0xe3,
+ 0x9c,0x0f,0xf3,0xd6,0xbc,0xfc,0xc7,0x18,0xa8,0x53,0xf3,0x3e,0xd7,0x82,0x38,0x62,
+ 0x59,0xce,0x3a,0x34,0x6d,0xee,0xf5,0x3a,0xaf,0x06,0x78,0x3e,0x28,0x84,0x6d,0x22,
+ 0x82,0x7e,0x95,0xef,0x96,0x1a,0x3d,0xa2,0x44,0x01,0x51,0xc0,0xc7,0x4a,0xe4,0xec,
+ 0x7c,0xbb,0x48,0x41,0x5c,0x70,0x2b,0x46,0x2d,0x4a,0x56,0x3c,0x37,0x1e,0xc6,0xbf,
+ 0x35,0xcc,0x73,0x3a,0x8d,0xbe,0x53,0xfb,0xf7,0x84,0x38,0x3f,0x07,0x82,0xc3,0x46,
+ 0x9c,0x60,0xb4,0x34,0x35,0x3f,0x0f,0xda,0xcc,0xa4,0x04,0x04,0x63,0x8a,0xf2,0x6f,
+ 0x10,0x78,0x0e,0x0b,0x80,0x71,0x1f,0xe4,0x31,0x5e,0xcb,0x6b,0x76,0x5c,0x72,0x72,
+ 0x29,0xd7,0x69,0x1c,0xb1,0x92,0x79,0xcd,0x79,0xb8,0x4c,0x6e,0x21,0x4b,0x9a,0xf6,
+ 0x3d,0xfc,0xdb,0x84,0xf2,0xec,0x5d,0x17,0x4a,0xad,0x34,0xef,0xe4,0x7c,0xcb,0x65,
+ 0xe0,0x18,0xa2,0x9f,0x0c,0xbc,0x7a,0x62,0xbd,0x4b,0x44,0xf0,0x45,0x99,0x0a,0x1d,
+ 0x01,0xae,0x8e,0x4b,0x55,0x56,0xf9,0x57,0x26,0xb5,0x6c,0x6e,0x5e,0x0c,0x65,0x47,
+ 0x07,0xd2,0xbb,0x31,0x39,0xcd,0x59,0xbd,0x59,0xe0,0x65,0x5e,0x1a,0x65,0x78,0x45,
+ 0x6a,0x74,0x52,0xf9,0x23,0x52,0xcb,0xc0,0x1a,0x6c,0x88,0xbb,0xa3,0x5c,0xf5,0xe8,
+ 0x2a,0xed,0xcf,0xc3,0x9d,0x32,0x58,0x0e,0x11,0x49,0xfa,0x54,0xd0,0xeb,0x92,0x40,
+ 0xb9,0xc7,0x35,0x62,0x3f,0x13,0x96,0xf9,0x5e,0xb8,0x5e,0x3d,0xc9,0x9e,0xff,0x00,
+ 0xfa,0xa7,0x83,0x49,0xae,0x45,0xf7,0x23,0xc4,0xfc,0x41,0xf0,0x8a,0xd2,0x57,0x6f,
+ 0x2e,0x15,0xe7,0xdb,0x15,0xcc,0x59,0x7c,0x1c,0x85,0x26,0x04,0xc7,0xd4,0xf4,0xc6,
+ 0x6b,0xe9,0x9f,0xed,0x58,0x27,0xe5,0x88,0xf7,0xa8,0x66,0xd5,0x2d,0x20,0x1b,0xf8,
+ 0x15,0xea,0x61,0x73,0x7a,0x8a,0x36,0xe7,0x76,0x3e,0x2b,0x33,0xf0,0xa3,0x29,0xc4,
+ 0x56,0xf6,0xd2,0xc3,0xc6,0xfe,0x87,0x9e,0x69,0x7f,0x05,0x6d,0x2e,0xa0,0xc9,0x85,
+ 0x49,0xfa,0x73,0x5c,0x67,0x8b,0xbe,0x03,0xc9,0x67,0x1b,0x4d,0x6d,0x11,0x1d,0x48,
+ 0xc5,0x7d,0x43,0xe1,0xaf,0x15,0xd8,0x99,0x55,0x33,0xd4,0xe0,0xe7,0xa5,0x7b,0x3a,
+ 0xdb,0xe9,0xda,0xd5,0xa6,0xdc,0x2b,0x06,0x15,0xb4,0x33,0x8a,0x8a,0x77,0x8c,0x9d,
+ 0xcf,0x3b,0x1f,0xe1,0x4e,0x55,0x5e,0x8b,0xa7,0x3a,0x0a,0xde,0x87,0xe3,0x1e,0xbb,
+ 0xe1,0xad,0x47,0x44,0x9d,0xa3,0x9d,0x0e,0xd0,0x48,0xce,0x3a,0x62,0xb9,0xe0,0x4f,
+ 0x41,0x5f,0xa5,0x3f,0x14,0x7e,0x17,0x5a,0xdc,0xc1,0x2c,0xb1,0x46,0x08,0x20,0x9e,
+ 0x05,0x7e,0x7f,0x78,0x9f,0xc3,0xb3,0xe8,0x57,0xd2,0x44,0xca,0x42,0xe7,0x8a,0xfb,
+ 0x7c,0xa7,0x37,0x8e,0x25,0x72,0x4b,0xe2,0x3f,0x93,0xbc,0x46,0xf0,0xda,0xbe,0x43,
+ 0x55,0xd6,0xa0,0x9b,0xa4,0xff,0x00,0x03,0x9b,0xa7,0xfc,0xc4,0x54,0x6b,0xd3,0x15,
+ 0x28,0x07,0x39,0xcd,0x7b,0xc7,0xe4,0xa1,0xf7,0x47,0xad,0x34,0x83,0x8e,0x6a,0x5c,
+ 0x70,0x0f,0xe7,0x41,0x53,0x9c,0x7e,0xb4,0x01,0x09,0x0c,0x07,0x4e,0x29,0xbc,0xd4,
+ 0xc5,0x79,0xa6,0x6d,0x39,0xf6,0xfe,0x74,0x98,0x0c,0x39,0x3e,0xd4,0xfc,0x90,0x30,
+ 0x3e,0xb4,0x85,0x4f,0x6a,0x00,0x1d,0x33,0xcf,0xa5,0x34,0x03,0xc3,0x90,0x33,0x52,
+ 0x87,0x23,0xf1,0xaa,0xf8,0xec,0x69,0x79,0x53,0x40,0x17,0x56,0x42,0xa7,0xf9,0xd4,
+ 0x82,0x5c,0x0a,0xcf,0xdf,0xcf,0x4a,0x51,0x26,0x3a,0x53,0xb8,0x1a,0x26,0x52,0x3a,
+ 0x53,0x0c,0xbe,0x95,0x4b,0xcc,0x34,0x17,0xf7,0xe7,0xd6,0xaf,0x9c,0x0b,0x46,0x4c,
+ 0x73,0x50,0xbb,0xe4,0x75,0xa8,0x0b,0xe4,0xf5,0xeb,0x4d,0x2d,0xf8,0xd2,0xe6,0x7d,
+ 0xc0,0x73,0x37,0x6c,0xf6,0xa8,0x4f,0xaf,0xe9,0x46,0xe3,0x4d,0x39,0x3c,0xd4,0xdc,
+ 0x06,0x37,0xde,0xa8,0xdb,0xa5,0x48,0x57,0x39,0xe7,0x35,0x13,0x67,0xf3,0xa3,0xd4,
+ 0x06,0x72,0x31,0x47,0x34,0x11,0x9e,0x05,0x1c,0xd2,0x2a,0x2d,0x75,0x0c,0x9e,0x95,
+ 0x32,0x03,0x9e,0x9c,0x54,0x3d,0x78,0xa9,0x80,0xec,0x28,0x35,0xf3,0x2c,0xa3,0x1f,
+ 0xca,0xa5,0x05,0xbd,0x33,0x9a,0x85,0x4f,0x4f,0x6a,0x97,0x90,0x0f,0x6a,0xd2,0xf7,
+ 0x5a,0xb1,0x8f,0xa4,0x39,0xa6,0xee,0xa4,0x2c,0x7a,0xd5,0xdc,0x3a,0x8a,0x77,0x73,
+ 0x8a,0x6e,0x78,0xc7,0xe9,0x41,0x3c,0xf3,0x4c,0x3d,0x2b,0x39,0x7a,0x80,0xbb,0xb1,
+ 0xd2,0x9a,0x4f,0xbd,0x21,0x6a,0x84,0xb9,0xc1,0xf6,0xac,0xa4,0x64,0xe5,0xa9,0x31,
+ 0x6a,0x66,0xe2,0x7b,0x53,0x32,0xdd,0x3f,0xcf,0xf3,0xa6,0xe4,0xe3,0xfa,0xd4,0x90,
+ 0x3f,0x24,0x63,0xfa,0xd2,0x1e,0x95,0x1f,0x6c,0x0a,0x52,0xdd,0xba,0x8a,0xc5,0xbd,
+ 0x75,0x1d,0xc7,0x82,0x69,0xeb,0x9c,0x63,0x14,0xc0,0x3d,0x05,0x4c,0xab,0xcf,0xad,
+ 0x3d,0x47,0xb6,0xc4,0x8b,0xd0,0x66,0xa6,0x55,0x34,0x8a,0xb8,0xeb,0xd6,0xa6,0x03,
+ 0xff,0x00,0xd5,0x50,0xca,0x8b,0xbb,0x1a,0x01,0xc8,0x3d,0x69,0x4a,0x62,0xa6,0x55,
+ 0x3d,0xa9,0xfb,0x4f,0x42,0x40,0xa5,0xca,0x3e,0x6d,0x4f,0xff,0xd2,0xfc,0x45,0x04,
+ 0x1f,0xad,0x58,0x89,0x79,0xf5,0xcd,0x51,0x57,0x22,0xae,0xc0,0xc4,0x9c,0x7e,0x95,
+ 0xe3,0x34,0x47,0x31,0xd2,0xe9,0xd8,0xf3,0x00,0x1d,0x07,0x5a,0xf5,0x5d,0x14,0x61,
+ 0x14,0xfe,0x15,0xe5,0x9a,0x68,0xf9,0xc5,0x7a,0x76,0x99,0x28,0x48,0xc5,0x70,0x57,
+ 0x7c,0xb2,0xb2,0x2a,0x3e,0xf1,0xd5,0x49,0x2a,0xaa,0x8e,0xf8,0xac,0xb9,0xee,0x77,
+ 0x1c,0xe7,0xa5,0x36,0x4b,0x8d,0xdc,0x0e,0xf5,0x91,0x2c,0xd8,0x27,0x9a,0xca,0x9d,
+ 0x5b,0xe8,0x37,0x1b,0x12,0xb5,0xc1,0x24,0x93,0x9e,0x2b,0x1e,0xfe,0xe4,0xaa,0xed,
+ 0xce,0x2a,0x67,0x97,0x3c,0xf7,0x15,0x89,0x7f,0x36,0xe6,0xc0,0xfc,0x6b,0xae,0xed,
+ 0x22,0x6d,0x72,0xab,0xca,0x59,0xb0,0x49,0xab,0x16,0xea,0x3a,0xd5,0x05,0x52,0x71,
+ 0xea,0x78,0xad,0x58,0x14,0x85,0x07,0xbf,0xf8,0x56,0xf4,0x13,0x66,0x35,0x37,0x2f,
+ 0x0e,0x80,0x74,0x26,0x86,0xe8,0x73,0x48,0x32,0x7a,0x0c,0x7a,0x73,0x48,0xc0,0xf7,
+ 0x39,0xaf,0x52,0x9c,0x19,0x09,0x37,0xb1,0x59,0xf2,0x06,0x05,0x66,0x4b,0x92,0x0e,
+ 0xea,0xd2,0x95,0x4a,0xf4,0xac,0xc9,0x41,0xc6,0x0d,0x75,0x46,0x9f,0x73,0x75,0xd8,
+ 0xc7,0x9c,0x64,0x7b,0x76,0xac,0x6b,0x80,0x00,0x3f,0x95,0x6d,0xce,0x08,0xc9,0x15,
+ 0x87,0x70,0xbc,0x1c,0xf3,0x53,0x25,0xae,0x86,0x88,0xc7,0x9b,0xf9,0xd5,0x07,0x00,
+ 0x74,0xab,0xf3,0xe7,0xa6,0x7a,0x76,0xac,0xe9,0x57,0x9c,0x67,0xf2,0xac,0xdb,0x01,
+ 0x94,0xc3,0xcf,0x1d,0x29,0x0f,0x5e,0x69,0x29,0x00,0x67,0x8a,0x71,0xc6,0x33,0x8a,
+ 0x6d,0x2a,0xf5,0xe7,0x8f,0x6a,0x7e,0x60,0x6f,0xe8,0x76,0xde,0x6d,0xc0,0x27,0x9c,
+ 0x1a,0xfa,0x0f,0x40,0x41,0x6f,0x02,0x9c,0x62,0xbc,0x6b,0xc3,0x96,0xff,0x00,0x32,
+ 0x93,0xed,0x5e,0xc3,0x69,0x21,0x48,0x80,0x15,0xf1,0x7c,0x41,0x89,0xbc,0xb9,0x4f,
+ 0xea,0xef,0x04,0xf2,0x55,0x4a,0x8f,0xd6,0x24,0xb5,0x67,0x5a,0x2f,0x8b,0x9d,0xa0,
+ 0xe6,0xb6,0x2d,0xc4,0xdb,0x43,0x63,0x8a,0xcf,0xf0,0xf6,0x9a,0xd7,0x72,0xa9,0x3c,
+ 0xe7,0xf4,0xaf,0x53,0x7d,0x0d,0x2d,0xed,0x77,0xb0,0xc7,0x15,0xf1,0x73,0xa1,0x29,
+ 0xea,0x7f,0x54,0xe1,0x71,0x5c,0xa9,0x24,0x71,0x0b,0x7a,0x60,0x38,0x63,0x83,0x56,
+ 0x06,0xa6,0x18,0x63,0x27,0x9a,0xe6,0xf5,0x89,0x56,0x39,0x4a,0xa9,0xe7,0x35,0x97,
+ 0x1d,0xcb,0x8c,0x10,0x79,0xeb,0x58,0xb4,0xf9,0x6c,0x8f,0x56,0x96,0x21,0x37,0x76,
+ 0x7a,0x14,0x12,0xa3,0x60,0xe7,0x93,0xd6,0xb4,0x90,0x28,0x03,0x15,0xc0,0xdb,0x5f,
+ 0x90,0x46,0x4d,0x74,0xb6,0x97,0x9b,0x80,0xe7,0xe9,0x9a,0xe2,0xad,0x4d,0xee,0x7a,
+ 0xd4,0xeb,0x46,0x4a,0xc6,0xe1,0xe4,0x53,0x63,0xb6,0x69,0x64,0xda,0x9d,0x7a,0x52,
+ 0xc6,0xde,0x60,0xe3,0xad,0x74,0xba,0x4d,0xa6,0x5c,0x31,0x19,0xf5,0x35,0x95,0x3a,
+ 0x72,0x93,0xe5,0x47,0x3d,0x7a,0x8a,0x0a,0xec,0x7d,0xb7,0x86,0xe7,0x96,0x3d,0xe3,
+ 0x27,0xe9,0x5c,0xb6,0xbd,0xa2,0xdd,0xda,0xa9,0x38,0x6a,0xf7,0xbb,0x0b,0x8b,0x4b,
+ 0x78,0x47,0x99,0x85,0xe3,0xbd,0x73,0xda,0xf9,0xb4,0xbe,0x89,0x82,0x81,0xd3,0xb7,
+ 0x7a,0xf4,0xa3,0x84,0xe5,0xeb,0xa9,0xe7,0x7d,0x72,0x52,0x7b,0x1f,0x37,0xd9,0xea,
+ 0x33,0x59,0x5c,0x03,0xc8,0x39,0xe6,0xbe,0x81,0xf0,0x47,0x8c,0x58,0x05,0x8d,0x9f,
+ 0x8f,0xad,0x78,0xae,0xb7,0xa3,0xba,0x4e,0xce,0x83,0xad,0x37,0x46,0xba,0x9a,0xc6,
+ 0x75,0x1c,0x8c,0x1a,0x7e,0xce,0xce,0xec,0xd2,0x52,0x4d,0x1f,0x64,0x6a,0x0f,0x0e,
+ 0xab,0x66,0xd9,0xc1,0xc8,0xfa,0xd7,0xc6,0x7f,0x16,0x7c,0x0b,0x1d,0xc2,0xca,0xf1,
+ 0xc7,0xcf,0x24,0x1c,0x7e,0x35,0xf4,0x6f,0x86,0x35,0xe5,0xb8,0x89,0x63,0x76,0xed,
+ 0xdc,0xd4,0x7e,0x2a,0xd3,0xe1,0xbe,0xb6,0x72,0x40,0x39,0x53,0x5d,0x98,0x3c,0x54,
+ 0xa8,0xd5,0x4d,0x33,0xe3,0xf8,0xa3,0x87,0xa8,0x66,0x78,0x3a,0x94,0x2a,0xc2,0xe9,
+ 0xa3,0xf2,0x9e,0xfe,0xca,0x4b,0x0b,0xa7,0xb7,0x90,0x60,0xa9,0xa8,0x06,0x3b,0x73,
+ 0x8a,0xf6,0xdf,0x89,0xbe,0x17,0xfb,0x2d,0xc3,0x5c,0x46,0x98,0x39,0xe6,0xbc,0x6e,
+ 0x3b,0x69,0xa4,0x38,0x45,0x27,0xe8,0x2b,0xf5,0x8c,0x06,0x2a,0x35,0xa9,0x29,0xb6,
+ 0x7f,0x9d,0x3c,0x5f,0xc3,0xd5,0x32,0x6c,0xca,0xae,0x0e,0x6b,0x44,0xf4,0xf4,0x21,
+ 0xc9,0xe8,0x07,0x5a,0x90,0x60,0x9e,0x7d,0x2a,0xd4,0x96,0x17,0x11,0x2e,0xe6,0x53,
+ 0x8e,0xd5,0x5c,0x2f,0x24,0x1e,0xd5,0xde,0x94,0x5e,0xa9,0x9f,0x30,0x34,0x80,0x47,
+ 0x3d,0xa9,0x36,0x8e,0x38,0xa9,0x82,0x91,0xcf,0x6a,0x36,0xf7,0x1f,0x85,0x57,0x2a,
+ 0x60,0x41,0xb7,0xa0,0x1f,0x9d,0x47,0x8c,0x71,0xd2,0xae,0x6d,0xda,0x29,0xa5,0x0f,
+ 0xf1,0x1c,0xd4,0xf2,0x30,0x2a,0x10,0x08,0xa6,0xe0,0x0a,0xb2,0x50,0x0c,0xf3,0xd4,
+ 0xf1,0x4c,0x2b,0xe9,0x49,0xc5,0xa0,0x2b,0x9c,0x75,0xa6,0x67,0x9c,0x67,0x02,0xa6,
+ 0x2b,0xcf,0xd6,0xa1,0x39,0x23,0x9e,0xd5,0x20,0x21,0x62,0x39,0xed,0x49,0xb8,0xf7,
+ 0xa3,0x14,0xcd,0xc3,0xad,0x00,0x38,0x90,0x3a,0xf1,0x4d,0x63,0x82,0x30,0x69,0xb9,
+ 0x1d,0x71,0xfa,0xd2,0x50,0x04,0x84,0x8a,0x07,0x53,0xde,0xa3,0xc6,0x7a,0x53,0xc1,
+ 0x02,0x81,0x83,0xe3,0xd3,0x9a,0x89,0xba,0x53,0xce,0x05,0x44,0x4f,0x39,0xa6,0x21,
+ 0xbf,0x85,0x26,0x41,0x19,0x34,0xa7,0x9e,0xb4,0xce,0x71,0xc7,0x4a,0x40,0x3e,0xa5,
+ 0x53,0x81,0xc5,0x40,0x0e,0x3a,0x9a,0x91,0x4e,0x29,0x75,0x35,0xbd,0x91,0x68,0x13,
+ 0xd3,0xb7,0xa5,0x48,0x0e,0x39,0xf4,0xa8,0x41,0xc8,0x19,0xef,0x52,0x29,0xe8,0x3a,
+ 0x55,0xc5,0xd8,0xa8,0xbb,0xa1,0xc7,0xaf,0x19,0xa4,0x2d,0x8a,0x69,0x38,0xe8,0x78,
+ 0xa4,0xcf,0x4a,0x4d,0x8a,0x4d,0x06,0xe3,0x4c,0x2d,0x9f,0xad,0x0d,0xd3,0xeb,0xe9,
+ 0x51,0x96,0xe3,0x34,0x88,0x72,0x7d,0x18,0x16,0xc5,0x43,0x91,0xd6,0x95,0x9a,0xa3,
+ 0xcd,0x45,0x89,0xbf,0x71,0xe0,0xe6,0x94,0x9c,0x71,0x51,0x52,0x9c,0x9a,0x4d,0x01,
+ 0x26,0x7a,0xd2,0x82,0x39,0xf5,0xa6,0xa9,0x27,0x93,0x4f,0x03,0x3c,0xf5,0xf6,0xac,
+ 0xf9,0x6c,0xf4,0x11,0x20,0x07,0x38,0x1f,0x85,0x59,0x51,0xc0,0x3d,0xea,0x14,0x19,
+ 0xe9,0xf8,0x55,0xb4,0x53,0x81,0x8a,0xbb,0x77,0x02,0x45,0x15,0x69,0x01,0x27,0x9f,
+ 0xe5,0x51,0xae,0x09,0xab,0x6b,0x91,0xd2,0xa3,0x93,0x52,0xf9,0xac,0xac,0xc4,0x54,
+ 0xc7,0x51,0xf8,0xd3,0xf6,0x54,0xc8,0x06,0x39,0xa0,0x8c,0xfe,0x35,0xa2,0x44,0xdd,
+ 0x1f,0xff,0xd3,0xfc,0x3c,0x1c,0x1a,0xb5,0x11,0xda,0x7a,0x8a,0xa3,0x91,0x9c,0x13,
+ 0xd7,0xf0,0xa9,0xa3,0x71,0x9c,0x0a,0xf2,0x0e,0x79,0x26,0x75,0xfa,0x74,0xbb,0x5c,
+ 0x03,0xd6,0xbb,0xfb,0x09,0xc6,0xdf,0x5c,0x57,0x98,0x59,0xb8,0xc8,0x3f,0x85,0x77,
+ 0x76,0x13,0xfc,0x81,0x4e,0x6b,0x83,0x12,0xb5,0x36,0xa3,0x23,0xa7,0x69,0x4f,0x5a,
+ 0xcc,0x9e,0x7f,0x98,0xe7,0xa5,0x06,0x53,0x8c,0x0a,0xcd,0x9a,0x5e,0xa7,0xb7,0xd6,
+ 0xb9,0xe9,0x53,0xbc,0x8d,0xaa,0x3d,0x07,0xc9,0x71,0x8f,0xe7,0x59,0x4e,0xfb,0xc9,
+ 0x63,0x8c,0x9a,0x86,0x69,0x42,0x93,0xcf,0x5e,0xd5,0x5e,0x37,0x32,0x1e,0x3b,0x1a,
+ 0xec,0xe5,0x6e,0x4a,0x26,0x37,0x34,0xe1,0x52,0xcd,0xd3,0x8a,0xd7,0x8e,0x31,0xb7,
+ 0x3d,0x3d,0x3d,0xaa,0x95,0xac,0x64,0x00,0x3a,0x7b,0xfa,0xd6,0xa0,0x52,0x71,0xe9,
+ 0xfe,0x15,0xec,0xe1,0xe8,0xe8,0x88,0xe5,0xbb,0x05,0x4e,0x07,0xb7,0x4a,0x56,0xc0,
+ 0xed,0x4f,0xc7,0x4f,0xe5,0x4d,0x6c,0x81,0xc7,0x43,0x5e,0x94,0x62,0x90,0xd2,0xb6,
+ 0xc5,0x29,0x09,0x03,0xfc,0xf4,0xac,0xb9,0xb2,0x4e,0x08,0xad,0x59,0xbf,0xc8,0xac,
+ 0xa9,0xce,0x46,0x28,0x93,0x43,0xb1,0x91,0x3e,0x6b,0x16,0x65,0xc9,0xc7,0x7a,0xdc,
+ 0x9b,0xa1,0xf7,0xe2,0xb1,0x2e,0x17,0x1f,0x85,0x61,0x27,0xa9,0x68,0xc6,0x98,0x70,
+ 0x49,0xac,0xd9,0x0d,0x69,0xcc,0x07,0x5a,0xcb,0x94,0x60,0xe0,0x1a,0xca,0x40,0x56,
+ 0xe3,0x27,0xb8,0xa0,0xe3,0xb5,0x21,0x07,0x38,0xe9,0x8a,0x50,0xa4,0xf4,0xfc,0xe8,
+ 0xb8,0x01,0xc7,0x6a,0x92,0x30,0x0b,0x0c,0x8e,0xf4,0xdd,0xa4,0x0c,0x9c,0x7d,0x2a,
+ 0x48,0xb8,0x65,0xfa,0xd2,0x6f,0x42,0xe9,0xfc,0x49,0x1e,0x97,0xe1,0xb8,0xc0,0x55,
+ 0x22,0xbd,0x2e,0xdd,0x73,0xb5,0x4f,0x35,0xe7,0x1e,0x1e,0x38,0xc7,0xa8,0xaf,0x47,
+ 0xb4,0x3c,0xae,0x2b,0xf3,0xcc,0xe6,0x57,0xac,0xee,0x7f,0x70,0xf8,0x5f,0x08,0xc7,
+ 0x2c,0x82,0x47,0xb3,0xf8,0x26,0x34,0xf3,0x14,0x1c,0x64,0xd7,0xb2,0x6a,0x76,0x0d,
+ 0x3e,0x9f,0x88,0x86,0xec,0xae,0x32,0x2b,0xe7,0xad,0x03,0x51,0xfb,0x1c,0xaa,0xd9,
+ 0x38,0xe3,0x8a,0xfa,0x37,0xc3,0xfa,0xcd,0xa5,0xdd,0xa7,0x96,0xec,0x36,0xb0,0xe7,
+ 0x9a,0xf1,0x67,0x59,0x28,0xf2,0x1f,0xb1,0x45,0xfb,0xaa,0x47,0xca,0x5a,0xf5,0xad,
+ 0xcd,0x9e,0xa1,0x22,0x4f,0x9c,0x12,0x71,0x9e,0x38,0xac,0x94,0x7c,0xd7,0xb5,0x7c,
+ 0x49,0xd2,0xe0,0x6d,0xd3,0x42,0x39,0xed,0x8a,0xf0,0xf8,0x11,0xe4,0x71,0x1a,0x75,
+ 0x3c,0x57,0x2d,0x36,0xdc,0x6c,0xf7,0x37,0x85,0x6b,0x33,0x4a,0x37,0x3d,0x73,0x83,
+ 0x5b,0x56,0x57,0x2d,0x90,0xb4,0xeb,0x4f,0x0d,0x5d,0xcc,0x9b,0xd4,0x13,0xe9,0x4e,
+ 0x1a,0x45,0xe5,0xa3,0xf2,0xa7,0x19,0xf4,0xa5,0x52,0x9e,0x8b,0x99,0x58,0xf5,0x68,
+ 0x62,0x8f,0x44,0xd0,0x94,0x4e,0xc9,0x9e,0x6b,0xd6,0xac,0x6c,0x63,0x58,0x83,0x0c,
+ 0x63,0x15,0xe4,0x9e,0x1b,0x56,0x4c,0x66,0xbd,0x46,0x0d,0x47,0xca,0x40,0xb9,0xe2,
+ 0xbd,0x0c,0x16,0x1a,0x11,0x8f,0x3b,0x5a,0x9c,0x18,0xdc,0x74,0xa7,0x2b,0x5f,0x41,
+ 0x9a,0x9c,0x12,0x2e,0x4a,0x93,0xed,0x5c,0xf2,0xcd,0x22,0x92,0xaf,0xd4,0x56,0xfc,
+ 0xda,0x94,0x72,0x9d,0x84,0xf5,0xe9,0x58,0xf3,0xc6,0x18,0xee,0x4e,0xb5,0xcb,0x89,
+ 0x8d,0xa7,0x74,0x76,0xe1,0x55,0xe0,0x8a,0xb3,0xda,0xc5,0x70,0xb9,0x7a,0xe0,0x75,
+ 0x4b,0x41,0x0c,0x85,0xd0,0x63,0x1d,0x2b,0xb5,0x9e,0x77,0x44,0x3e,0xdd,0x6b,0x8b,
+ 0xd4,0x66,0x32,0x31,0xcf,0x7e,0x94,0xe3,0x52,0x2d,0x59,0xa0,0x9c,0x65,0x16,0x59,
+ 0xd0,0xf5,0xa7,0xb6,0x94,0x21,0x6c,0x63,0x8e,0x6b,0xd6,0xad,0xf5,0x31,0x7b,0x6d,
+ 0xb4,0x9c,0xe4,0x57,0xce,0x2d,0x33,0x45,0x36,0xe5,0xe9,0xe9,0x5e,0x81,0xe1,0xfd,
+ 0x5c,0x8d,0xaa,0x49,0xe6,0xb8,0xea,0x7b,0xaf,0x43,0x54,0xd3,0x89,0x5f,0xc6,0x3e,
+ 0x13,0x3a,0xd0,0x68,0xd5,0x78,0x6e,0xbc,0x57,0x99,0x59,0xfc,0x31,0x96,0xdc,0xb2,
+ 0x88,0xbb,0xf5,0xc5,0x7d,0x5d,0xa7,0x24,0x17,0x48,0xbb,0x86,0x49,0xf5,0xf7,0xae,
+ 0x85,0xb4,0x8b,0x44,0x88,0x92,0xa3,0x38,0xeb,0x5d,0xb8,0x3c,0xf6,0xad,0x24,0xe0,
+ 0x9e,0x87,0xf1,0xef,0x8e,0xf9,0x44,0x25,0x89,0x86,0x22,0x31,0xd4,0xf8,0x57,0xc4,
+ 0x7e,0x0d,0xfe,0xcf,0x84,0x9d,0xbc,0x01,0xdc,0x57,0x85,0xea,0x36,0xe9,0x0d,0xd3,
+ 0x22,0xf4,0xaf,0xb2,0xfe,0x2a,0xde,0xd8,0x69,0xf1,0x3c,0x6a,0xc0,0xb6,0x08,0xc0,
+ 0xe6,0xbe,0x2c,0xbd,0x9b,0xce,0xba,0x91,0x8f,0x27,0x35,0xfa,0x37,0x0e,0x62,0xaa,
+ 0x62,0x29,0xb9,0xcb,0x63,0xf9,0x93,0x13,0x05,0x17,0x64,0x45,0xdb,0x9a,0x76,0x38,
+ 0xa8,0xd4,0x9c,0x71,0xcf,0xe9,0x4f,0xfa,0x57,0xd3,0x1c,0xe4,0x98,0x04,0x9a,0x69,
+ 0x5f,0xca,0x90,0x1e,0x72,0x69,0xd9,0xed,0xd7,0x34,0x01,0x19,0x5e,0xc6,0xa3,0x23,
+ 0x93,0x53,0x12,0x71,0x51,0x9c,0x7e,0x34,0x3d,0x80,0xae,0xca,0x0d,0x40,0xc3,0x8c,
+ 0x91,0xf4,0xab,0x2d,0xd4,0x9a,0xac,0xfc,0x8c,0xd6,0x73,0xb0,0x10,0x30,0xcf,0xe3,
+ 0x51,0x90,0x09,0xa9,0x8e,0x7b,0x54,0x44,0x67,0xf1,0xa8,0x60,0x47,0x83,0x49,0x8e,
+ 0xb4,0xed,0xbd,0x68,0xc7,0xa0,0xe2,0x90,0x06,0x38,0xf7,0xa3,0x07,0xa8,0xa4,0x00,
+ 0x9f,0x7c,0xfb,0xd2,0x91,0x80,0x29,0xa6,0x02,0x1e,0xb9,0x34,0xc6,0xe3,0xfa,0xd3,
+ 0x8f,0x1d,0x06,0x6a,0x33,0xcf,0x7f,0xc2,0x85,0x6e,0xa0,0x47,0xcf,0x51,0xf9,0x51,
+ 0x90,0x71,0x41,0x07,0xeb,0xef,0x4c,0xa1,0xf9,0x0c,0x50,0x70,0x0e,0x79,0xa7,0xab,
+ 0x1c,0x71,0x51,0xf0,0x07,0xb5,0x28,0xe3,0xbf,0x15,0x37,0x29,0x68,0xac,0x5c,0x52,
+ 0x7a,0x7f,0x9c,0xd3,0xea,0xb2,0xf5,0xff,0x00,0xeb,0xd4,0xbc,0x75,0xfd,0x28,0xb8,
+ 0xde,0x9a,0x22,0x4a,0x4c,0x8a,0x60,0xc8,0x1c,0x53,0x7a,0x8e,0x38,0xa7,0x71,0x37,
+ 0xd1,0x8e,0x27,0xa9,0xed,0x50,0x1c,0xe3,0xd8,0x53,0xdb,0x07,0x18,0xa8,0x9b,0x3f,
+ 0x81,0xa0,0x80,0x63,0xc5,0x44,0x4e,0x7e,0x5a,0x53,0xc9,0xe7,0x1c,0xfe,0xb5,0x1e,
+ 0x3a,0x67,0x8a,0x06,0x98,0xf5,0xc9,0x1c,0xd3,0xf8,0xc0,0xa6,0xa8,0x27,0xa7,0xe5,
+ 0x4e,0x1e,0xfc,0xe6,0xa5,0xd8,0x44,0x9d,0xb9,0xe2,0xb5,0x6c,0x74,0xe9,0xef,0x58,
+ 0x24,0x4b,0x9f,0xa5,0x66,0x22,0xe7,0xaf,0x5a,0xfa,0x67,0xe0,0xff,0x00,0x83,0x06,
+ 0xb3,0x24,0x65,0xd3,0x39,0x23,0xb7,0xad,0x78,0xd9,0xde,0x6d,0x4f,0x2f,0xc3,0x3a,
+ 0xf3,0x67,0x76,0x5d,0x82,0x96,0x2a,0xb2,0xa5,0x13,0xc8,0x1f,0xc1,0xba,0xca,0xc3,
+ 0xe7,0xc7,0x0b,0x30,0x03,0xd2,0xb9,0xf3,0x1b,0xc4,0xe5,0x64,0x05,0x58,0x71,0xf4,
+ 0xaf,0xd9,0x8f,0x0b,0xfc,0x0d,0xb1,0xbd,0xd3,0x14,0x49,0x02,0x93,0xb7,0x9e,0x2b,
+ 0xe5,0x5f,0x8d,0x9f,0xb3,0x8d,0xc6,0x9b,0x24,0xfa,0x8e,0x93,0x09,0x56,0x5c,0x92,
+ 0x00,0xc0,0x3e,0xd5,0xf9,0xbe,0x49,0xe2,0xd6,0x03,0x13,0x8b,0xfa,0xae,0x21,0xda,
+ 0xfb,0x33,0xe9,0xf3,0x0e,0x0e,0xaf,0x4a,0x8f,0xb5,0xa3,0xad,0xba,0x1f,0x09,0xae,
+ 0x73,0x56,0x57,0x8e,0x79,0x34,0xeb,0xab,0x2b,0x8b,0x0b,0x97,0xb6,0xb9,0x42,0x92,
+ 0x46,0x70,0xc0,0xf0,0x45,0x44,0xa7,0xb5,0x7e,0xc1,0x0a,0x91,0x9a,0x52,0x8b,0xba,
+ 0x67,0xc6,0x4a,0x2e,0x2e,0xd2,0xdc,0xb2,0xac,0x7a,0xd2,0x93,0x9c,0xf3,0x51,0xe7,
+ 0xb1,0x1c,0xd0,0x7f,0xfd,0x75,0xa2,0xb7,0x52,0x4f,0xff,0xd4,0xfc,0x2f,0x2f,0x93,
+ 0x53,0x44,0x73,0x8a,0xa7,0x8e,0xf8,0xe6,0xac,0x42,0x3e,0x60,0x3d,0x6b,0xcf,0x9c,
+ 0x15,0xae,0x63,0x28,0xdc,0xea,0x34,0xe1,0x9c,0x73,0x5d,0xb5,0x9a,0x9c,0x03,0x5c,
+ 0xa6,0x93,0x11,0x2a,0x0d,0x76,0xd6,0xd1,0xed,0x51,0xf9,0x9a,0xf2,0xf1,0x05,0xc5,
+ 0x13,0x33,0x1c,0x66,0xb2,0xae,0x66,0x03,0xa5,0x68,0x5c,0x7c,0xa9,0x93,0x5c,0xed,
+ 0xd4,0xb8,0x24,0xe3,0xeb,0xcd,0x69,0x85,0xa6,0xac,0xd9,0x4d,0x14,0xe6,0x95,0x8b,
+ 0x6d,0x07,0x15,0x7a,0xd1,0x39,0x18,0x1f,0x5a,0xca,0x8f,0xe7,0x93,0xd4,0x7e,0x75,
+ 0xd1,0x59,0x2e,0x3a,0xfe,0x15,0xd5,0x4e,0x0b,0x98,0x96,0x6e,0x5b,0x81,0xb4,0x70,
+ 0x07,0xf9,0xef,0x56,0x41,0xe7,0x9e,0x7f,0x4a,0xac,0xa5,0x57,0x1d,0xf1,0xf9,0x52,
+ 0x6f,0xe7,0xae,0x6b,0xd8,0xa5,0x68,0xad,0x58,0x16,0xcb,0x0c,0xf5,0xcf,0xf5,0xa8,
+ 0x4b,0x92,0x7a,0xf4,0xa4,0x39,0x61,0xcf,0x02,0x98,0x54,0x8c,0xe3,0xae,0x28,0x75,
+ 0x93,0x76,0x44,0x39,0x2d,0x8a,0xf2,0x37,0x35,0x9f,0x2e,0x39,0xab,0xd2,0x06,0x39,
+ 0x3d,0x6a,0x94,0xaa,0xd8,0xc7,0x73,0x52,0x52,0x32,0xa7,0x3d,0x47,0xf9,0x35,0x91,
+ 0x30,0x38,0x27,0x06,0xba,0x65,0xb4,0x2f,0xce,0x33,0x4a,0x74,0xb6,0x93,0x9d,0xbc,
+ 0x54,0xca,0x69,0x6e,0x3e,0x74,0xba,0x9e,0x7f,0x70,0x87,0xb0,0xac,0xf6,0xb6,0x99,
+ 0xcf,0x03,0x8e,0x95,0xea,0x1f,0xf0,0x8f,0xb3,0x9c,0x04,0x27,0xd2,0xac,0xc7,0xe1,
+ 0x9c,0x7c,0xce,0xb8,0xae,0x5a,0xb8,0xb8,0xc7,0x41,0xa9,0x1e,0x53,0x16,0x9a,0xef,
+ 0x9d,0xc3,0xeb,0x56,0x5a,0xc7,0x62,0xe0,0x76,0xaf,0x4c,0x9b,0x49,0x8e,0x20,0x46,
+ 0x30,0x3d,0xeb,0x9c,0xbd,0x80,0x46,0x08,0x1c,0x11,0x5c,0xbf,0x59,0x72,0x7b,0x94,
+ 0xe2,0xec,0x71,0x32,0x44,0x10,0x8e,0x9f,0x95,0x55,0x43,0x89,0x00,0x26,0xb4,0x6e,
+ 0xce,0xd3,0xd4,0x56,0x4a,0xb9,0x32,0x03,0xd8,0x1a,0xec,0xa7,0x77,0x16,0xc7,0x4b,
+ 0xe2,0x47,0xa6,0xf8,0x79,0xb0,0xa3,0xf3,0xaf,0x4f,0xb4,0xc1,0x0a,0x7b,0x75,0xcd,
+ 0x79,0x2f,0x87,0xe6,0x39,0x51,0xdf,0x3f,0xa5,0x7a,0xe6,0x9c,0x37,0x05,0x35,0xf0,
+ 0x79,0xba,0xb5,0x56,0xcf,0xed,0xcf,0x0b,0x6b,0xaa,0x99,0x7c,0x20,0x8e,0x92,0xdf,
+ 0x72,0xa8,0xc7,0x6a,0xec,0xb4,0x5d,0x66,0x7b,0x63,0xb7,0x77,0x1e,0xdf,0xe3,0x5c,
+ 0xac,0x0b,0xc0,0xad,0x6b,0x78,0x81,0x61,0xb6,0xbe,0x71,0xd4,0x5c,0xc7,0xee,0x54,
+ 0xf0,0xcd,0xc3,0x73,0xa2,0xd7,0x75,0x27,0xbd,0xb6,0x3b,0x8e,0x78,0xc5,0x71,0xde,
+ 0x1e,0xd3,0x44,0xb7,0xff,0x00,0x30,0xfb,0xcd,0x5d,0x6c,0x56,0x0f,0x70,0xbb,0x71,
+ 0x91,0xe9,0x5d,0x1e,0x8f,0xa2,0x08,0x24,0x0e,0x57,0x15,0xdd,0x42,0x2a,0x72,0x4e,
+ 0xc7,0x35,0x5a,0x52,0x8b,0xb2,0x67,0xa9,0xe8,0x1a,0x1d,0xa7,0xd8,0xd4,0xb8,0x00,
+ 0xe3,0xa5,0x17,0xbe,0x14,0xb6,0xb9,0x72,0xe8,0xa3,0x9e,0x9c,0x55,0x28,0x75,0x0f,
+ 0xb3,0x2a,0xa0,0x38,0x00,0x76,0xe2,0xb5,0xed,0x75,0xf4,0x38,0x0e,0x46,0x07,0x39,
+ 0xaf,0x5f,0x11,0x0a,0x75,0x20,0x95,0x8c,0xe9,0x39,0xc2,0x57,0x6c,0xe7,0x1b,0xc2,
+ 0xef,0x6a,0x77,0x20,0xc6,0x0f,0xa5,0x66,0xde,0x47,0x73,0x10,0x61,0x8c,0xe0,0x7f,
+ 0x2a,0xf5,0x51,0xaa,0x5a,0xcc,0x9b,0x49,0x04,0x9f,0x7a,0xc4,0xbf,0xb6,0xb5,0xb9,
+ 0x53,0x8c,0x03,0x5e,0x67,0x2c,0xe9,0xad,0x19,0xd5,0x28,0xa9,0xea,0x78,0xe4,0x97,
+ 0xef,0x1c,0x98,0x27,0x15,0xbb,0x65,0x78,0x26,0x50,0xbd,0x4d,0x45,0xae,0xe8,0xb8,
+ 0xcb,0xa0,0xce,0x3a,0x57,0x27,0x6b,0x3c,0xd6,0x92,0xec,0x63,0xc0,0x35,0xc7,0x2b,
+ 0xb7,0xb1,0xd7,0x87,0xa9,0xc9,0xa1,0xd9,0x5e,0x40,0x1c,0x16,0x1e,0xff,0x00,0x85,
+ 0x79,0xfe,0xa4,0xa6,0x36,0x21,0xba,0x7a,0xd7,0x77,0x15,0xc2,0xcd,0x16,0xec,0xe6,
+ 0xb9,0x2d,0x69,0x07,0x20,0x77,0xe6,0xb3,0xf6,0x76,0x67,0x55,0x6a,0x89,0xa3,0x84,
+ 0xba,0x27,0x39,0xe3,0x35,0x73,0x4c,0xbc,0x31,0xc8,0xbc,0xd6,0x65,0xdb,0x61,0x8a,
+ 0xf3,0x55,0xa0,0x90,0xa3,0xf5,0x35,0x35,0x23,0x7d,0x4e,0x78,0x55,0xb1,0xef,0xba,
+ 0x16,0xb1,0xb1,0x17,0x2d,0xd3,0xfa,0x56,0xa6,0xbd,0xe3,0x34,0xb3,0xb1,0x73,0xbf,
+ 0x07,0x07,0xa5,0x79,0x5e,0x97,0x78,0x44,0x63,0x9f,0xc2,0xb0,0x7c,0x57,0x74,0x5a,
+ 0xd5,0xb7,0x37,0x6f,0x5a,0xe5,0xa5,0x81,0x55,0x2a,0xa3,0xf1,0xaf,0x17,0xb2,0x88,
+ 0xe2,0x72,0xe9,0xd4,0x4b,0x54,0x79,0x1f,0x8e,0x7c,0x47,0x26,0xa1,0x2c,0x92,0xbb,
+ 0xe7,0x24,0x90,0x0f,0x6a,0xf1,0x96,0x93,0x73,0x17,0x27,0xad,0x6e,0xf8,0x82,0xeb,
+ 0x32,0x32,0x13,0xd4,0xd7,0x2a,0x1b,0xb1,0xfa,0xe6,0xbf,0x62,0xca,0x30,0xea,0x8d,
+ 0x05,0x14,0x7f,0x07,0xd5,0x6f,0x99,0xdc,0xbe,0xaf,0xc5,0x48,0x1f,0xa0,0xcf,0x4a,
+ 0xa0,0x1b,0xf1,0xfc,0x69,0xe1,0xbb,0xd7,0xab,0x19,0x77,0x33,0x2f,0xee,0xe3,0xaf,
+ 0x3e,0xf4,0xec,0x8e,0xbe,0x95,0x48,0x39,0x1c,0xd4,0x8a,0xc4,0xf4,0xe4,0x9a,0x7c,
+ 0xc8,0x2c,0x4e,0x4e,0x46,0x33,0x9a,0x6b,0x11,0xdc,0xd6,0xe6,0x99,0xe1,0xfd,0x43,
+ 0x54,0x20,0x40,0x84,0xe4,0xf1,0x80,0x79,0xab,0xfa,0x9f,0x81,0xfc,0x43,0xa7,0x01,
+ 0x23,0xda,0xc8,0xc8,0x7b,0x85,0x35,0x4f,0x6e,0x6e,0x87,0x44,0x70,0x95,0x9c,0x79,
+ 0x94,0x1d,0x8e,0x45,0x88,0xc7,0x18,0xaa,0xc7,0xa1,0xab,0xb7,0x16,0x77,0x76,0xff,
+ 0x00,0x2c,0xd1,0x3a,0x1e,0xe0,0x8c,0x56,0x7b,0x0c,0x1c,0x54,0x39,0xa6,0xb4,0x66,
+ 0x32,0x84,0xa3,0xf1,0x22,0x32,0x7b,0x7e,0x94,0xc3,0x8e,0xc3,0x14,0xe2,0x46,0x29,
+ 0xb8,0x3d,0xbb,0xd6,0x6d,0x92,0x07,0xda,0x93,0xa8,0xc8,0x3d,0x6a,0xd4,0x56,0x57,
+ 0x37,0x04,0x08,0x91,0xb9,0xe9,0x5d,0x2d,0x87,0x84,0x75,0x0b,0xb2,0x32,0x84,0x67,
+ 0xb6,0x0d,0x2b,0xa3,0xb2,0x86,0x03,0x11,0x59,0xfe,0xee,0x0d,0x9c,0x76,0x31,0x4b,
+ 0xce,0x31,0xde,0xbd,0x70,0x7c,0x37,0xd4,0x24,0x80,0xc8,0xb1,0x37,0x4e,0xe2,0xb8,
+ 0x0d,0x57,0xc3,0xda,0x8e,0x9b,0x31,0x8e,0x68,0x9b,0x68,0x3c,0x11,0xe9,0x57,0x28,
+ 0x4a,0x3b,0xa3,0x7c,0x4e,0x4f,0x8b,0xa1,0x1e,0x6a,0x94,0xdd,0x8c,0x12,0x72,0x3a,
+ 0xd4,0x0c,0x30,0x71,0xda,0xb7,0xac,0xb4,0x4d,0x43,0x50,0x7d,0x96,0xd0,0xb3,0x12,
+ 0x71,0xd2,0xa6,0xbf,0xf0,0xa6,0xb7,0xa7,0x27,0x9b,0x75,0x6b,0x22,0xae,0x3a,0x90,
+ 0x71,0x4a,0xcc,0xe1,0x54,0x2a,0x35,0x7e,0x56,0x73,0x18,0xe7,0x8a,0x8c,0xf3,0xd6,
+ 0xa7,0x74,0x2b,0xc3,0x0c,0x1e,0xe2,0xa3,0xdb,0xfa,0xd0,0x67,0x66,0x33,0xeb,0xde,
+ 0x94,0x1c,0x1a,0x5d,0xa4,0xfb,0x50,0x17,0x9e,0x6a,0x19,0x71,0xee,0x4a,0x32,0x39,
+ 0xa7,0x8f,0x4c,0xd3,0x10,0x54,0x80,0x73,0xc5,0x48,0x34,0xf6,0x48,0x39,0xa6,0x67,
+ 0x23,0x3f,0x95,0x3b,0x69,0x03,0xa6,0x3e,0xb4,0xc2,0x39,0xc0,0xaa,0xb9,0x2e,0x2d,
+ 0x0d,0x35,0x19,0xe6,0xa4,0x23,0x3d,0x2a,0x2e,0x7b,0x51,0xa0,0x72,0xb1,0x08,0x1d,
+ 0x4f,0x6a,0x41,0xf3,0x1f,0xe9,0x4b,0xdb,0x1d,0x69,0x51,0x77,0x10,0x07,0x53,0xe9,
+ 0x43,0x7e,0x61,0xb6,0xe3,0xe2,0x89,0xa4,0x3b,0x10,0x12,0x7e,0x95,0xad,0x1e,0x8d,
+ 0xa9,0x48,0xbb,0x92,0xdd,0xca,0xf5,0xe1,0x6b,0xd8,0xbe,0x15,0xfc,0x38,0xba,0xf1,
+ 0x1d,0xd4,0x6c,0xd1,0x92,0xac,0x41,0x3c,0x57,0xe9,0xaf,0x80,0xbf,0x66,0x8b,0x3b,
+ 0xad,0x31,0x0c,0xb6,0xc0,0xb3,0x0e,0xeb,0x5f,0x9a,0xf1,0x4f,0x88,0xb8,0x4c,0xa2,
+ 0xa7,0xb2,0x6b,0x99,0x9f,0x4d,0x95,0x70,0xcd,0x6c,0x64,0x7d,0xa3,0x76,0x47,0xe3,
+ 0x96,0x9f,0xa3,0xdd,0xcb,0x77,0x1c,0x12,0x44,0xca,0x59,0x87,0x04,0x1a,0xfd,0x24,
+ 0xfd,0x9d,0xbc,0x1c,0xf1,0xf9,0x0e,0xf1,0xf5,0xc1,0x39,0x15,0xed,0x3a,0xff,0x00,
+ 0xec,0xb3,0x63,0x65,0x2f,0xda,0xd2,0xdc,0x06,0xdd,0x91,0x85,0xaf,0x67,0xf8,0x4f,
+ 0xf0,0xf0,0x68,0xe5,0x13,0xcb,0xfb,0x84,0x0e,0x98,0xe9,0x5f,0x90,0x71,0xdf,0x89,
+ 0xb8,0x7c,0xcb,0x01,0xec,0xa8,0x2b,0x1f,0x67,0xc3,0xdc,0x2f,0x2c,0x25,0x77,0x52,
+ 0x6e,0xe7,0xd2,0x7e,0x0d,0xd0,0xe0,0x8b,0x4e,0x42,0x50,0x03,0xb6,0xb1,0xfc,0x6d,
+ 0xe0,0x3b,0x4d,0x62,0xce,0x54,0x31,0x06,0x2c,0x0f,0x6a,0xf4,0xcd,0x36,0x01,0x6b,
+ 0x02,0x20,0xed,0x5b,0x0f,0x12,0x4e,0x98,0x61,0xc1,0xaf,0xe6,0x9f,0xaf,0xd4,0x8d,
+ 0x6f,0x69,0x07,0xa9,0xfa,0x24,0xe1,0x1b,0x72,0xc9,0x68,0x7e,0x18,0xfe,0xd1,0x5f,
+ 0xb3,0xfc,0xf6,0x53,0x4d,0xac,0x69,0x30,0x6d,0x74,0xc9,0x60,0x07,0xde,0x1f,0x85,
+ 0x7c,0x0d,0x3d,0xbc,0xd6,0xb3,0x3c,0x33,0xab,0x23,0xa1,0x20,0xa9,0x1d,0xeb,0xfa,
+ 0x60,0xf8,0x8b,0xe0,0x3b,0x3d,0x6e,0xc6,0x60,0x63,0x0d,0x90,0x7b,0x66,0xbf,0x1a,
+ 0xbe,0x3f,0x7c,0x0b,0xd4,0x34,0xdd,0x5d,0xf5,0x0d,0x1e,0xdd,0xb6,0xbb,0x7c,0xe0,
+ 0x0e,0xd9,0xeb,0x5f,0xd5,0xde,0x13,0x78,0x9a,0xaa,0xc2,0x39,0x6e,0x61,0x3f,0x46,
+ 0xff,0x00,0x23,0xf2,0xfe,0x2c,0xe1,0x8d,0x5e,0x2b,0x0c,0xbd,0x51,0xf1,0x80,0x6c,
+ 0xd3,0x89,0xcd,0x7b,0x36,0x93,0xf0,0x53,0xc4,0xda,0x86,0x09,0x89,0x95,0x4f,0xb5,
+ 0x7a,0xce,0x83,0xfb,0x33,0xea,0x77,0x0c,0xa6,0xe1,0x59,0xb3,0xd4,0x60,0xd7,0xec,
+ 0x98,0xee,0x39,0xc9,0xf0,0x97,0xf6,0x95,0xd3,0xb7,0x63,0xe2,0xe8,0x70,0xf6,0x3a,
+ 0xb3,0xf7,0x69,0x9f,0xff,0xd5,0xfc,0x2c,0xc7,0x61,0x56,0xed,0x94,0xb3,0x80,0x05,
+ 0x35,0x62,0x24,0xe7,0x06,0xb6,0x74,0xdb,0x52,0xf2,0x83,0x8e,0xfc,0x57,0x15,0x59,
+ 0xa5,0x1d,0x48,0xd0,0xea,0xf4,0x98,0x0e,0x06,0x47,0x5a,0xed,0x22,0x87,0x0b,0xcf,
+ 0x15,0x9b,0xa6,0xd9,0x10,0xa3,0x23,0x1f,0x4a,0xe8,0x76,0x00,0x0d,0x78,0x35,0x6a,
+ 0x5d,0xe8,0x6b,0x18,0xf5,0x39,0xeb,0xe3,0xc1,0xef,0x5c,0x95,0xce,0x49,0x24,0xf7,
+ 0xae,0xce,0xf6,0x2c,0xee,0xc7,0x27,0xa5,0x73,0xf2,0xda,0xfa,0x83,0xf4,0xae,0x8a,
+ 0x35,0xa3,0x18,0x58,0x52,0xdd,0x99,0x36,0xeb,0xb7,0xaf,0xe5,0x5d,0x05,0xb6,0x7a,
+ 0x8e,0xff,0x00,0xd2,0xa8,0xad,0xa9,0x1d,0x06,0x6b,0x5a,0xd2,0x12,0x47,0x03,0xa5,
+ 0x74,0x53,0xc4,0x25,0x7b,0x98,0xc9,0xd8,0x98,0x96,0x62,0x17,0xfc,0x9a,0x96,0x35,
+ 0x07,0x92,0x3f,0xfa,0xd5,0x61,0x6d,0xf9,0x04,0xe7,0x03,0x8a,0x93,0x62,0xaf,0x34,
+ 0xe7,0x98,0x59,0x5a,0xe6,0x4e,0x4c,0x55,0xf4,0xa9,0xd6,0x2d,0xdd,0xaa,0x38,0x8e,
+ 0xe9,0x30,0x06,0x05,0x6c,0x5b,0xc6,0x87,0x93,0xfc,0xaa,0x29,0xe2,0xdb,0x33,0xb9,
+ 0x8c,0xd6,0xd9,0x3f,0x2d,0x46,0x2c,0x58,0xfd,0x6b,0xa9,0x10,0x27,0x07,0xbf,0xb5,
+ 0x39,0x62,0x40,0x70,0x07,0x23,0xf1,0xfd,0x6b,0x79,0xe3,0x39,0x56,0xe3,0x52,0x6f,
+ 0x46,0x62,0x5a,0xe9,0x8e,0xe7,0x95,0xeb,0xfc,0xab,0xa8,0xb3,0xd0,0xd4,0xe0,0xba,
+ 0xe6,0x96,0x17,0x8d,0x08,0x6e,0xd8,0xad,0x64,0xd4,0xa2,0x8d,0x3b,0x57,0x15,0x4c,
+ 0x64,0xa4,0xcd,0x21,0x1b,0xea,0x03,0x4d,0x86,0x2e,0x40,0x18,0xac,0xab,0xb8,0xa3,
+ 0x45,0xcf,0x19,0xf7,0xa2,0xf7,0x5e,0x8d,0x32,0x01,0xe9,0xd6,0xb8,0x2d,0x5f,0xc4,
+ 0x83,0x04,0x6e,0xfc,0x2b,0x04,0xe7,0x27,0x74,0x75,0xc6,0x36,0xd5,0x93,0x6a,0xd7,
+ 0x31,0x20,0x6c,0xe2,0xbc,0xcb,0x55,0xd4,0x13,0x07,0xbd,0x43,0xa9,0xeb,0xa6,0x42,
+ 0x42,0x9e,0x6b,0x92,0x96,0x67,0x9d,0xb7,0x13,0x9c,0xd7,0xa5,0x86,0xc3,0x3d,0xe6,
+ 0x39,0x4a,0xfa,0x0d,0x9e,0x76,0x95,0xb9,0xe3,0x15,0x5b,0xb8,0xfa,0xd3,0x8a,0xfa,
+ 0x73,0x51,0xe4,0x03,0x5e,0x9c,0x52,0xb1,0x2b,0x73,0xb8,0xd0,0xa4,0xc3,0xa9,0xe9,
+ 0x5e,0xd9,0xa4,0x30,0x31,0xa9,0x03,0xf1,0xeb,0x5e,0x01,0xa4,0x4a,0x04,0x8a,0x4f,
+ 0xaf,0x4a,0xf6,0xfd,0x0a,0x60,0x55,0x73,0xe8,0x2b,0xe2,0x38,0x82,0x95,0xa5,0x74,
+ 0x7f,0x58,0xf8,0x37,0x98,0xa7,0x4b,0xd9,0xb6,0x7a,0x14,0x07,0x81,0xce,0x73,0xd6,
+ 0xba,0x5d,0x36,0x03,0x2b,0x01,0xef,0x5c,0xbd,0xa3,0x6e,0x00,0xd7,0x75,0xa3,0x6c,
+ 0x46,0x56,0x35,0xf1,0xf1,0x85,0xe5,0x66,0x7f,0x53,0xd0,0xa9,0xee,0x23,0xb8,0xd3,
+ 0xac,0x52,0x38,0xc3,0x11,0x93,0x8a,0xb9,0x2c,0xc2,0x1e,0x17,0xa0,0xa8,0x12,0xed,
+ 0x3c,0xac,0x29,0xe3,0xd2,0xb2,0x2e,0x6e,0x79,0xe3,0xb5,0x7a,0x1f,0x5a,0x8d,0x35,
+ 0xca,0x91,0xab,0xc2,0xf3,0x7b,0xe5,0x89,0xee,0xd8,0x83,0xcd,0x52,0x1a,0x83,0x27,
+ 0x39,0xe9,0x55,0xda,0x5c,0xa9,0xc1,0xe4,0xd6,0x64,0xbd,0x73,0xf8,0xd7,0x75,0x3a,
+ 0xe9,0xc4,0xf3,0x71,0x11,0xb3,0x68,0xe9,0x93,0x5a,0x91,0x7a,0x31,0xe9,0x53,0x2f,
+ 0x89,0x24,0x53,0xf3,0x36,0x6b,0x89,0x69,0x08,0x3e,0xd5,0x56,0x49,0x8e,0x79,0xce,
+ 0x6b,0x1a,0xd5,0x17,0x73,0x28,0x4a,0xc7,0xa5,0xbe,0xb1,0x15,0xcc,0x7b,0x58,0x8f,
+ 0xc6,0xb9,0x2d,0x4a,0x20,0xcd,0xbe,0x21,0x58,0x71,0x5c,0x95,0x7e,0xb5,0xd7,0x69,
+ 0xb1,0xad,0xd0,0x0a,0x7b,0xd6,0x1c,0xdc,0xde,0xeb,0x34,0xe7,0x4c,0xc9,0xb3,0xb8,
+ 0x96,0x35,0xda,0xd9,0xe3,0x81,0x9a,0xa3,0xa8,0xce,0x1b,0x83,0xd3,0x15,0xe8,0x32,
+ 0x68,0x4a,0xcb,0xbd,0x07,0x18,0xae,0x0f,0x5c,0xb1,0x92,0x0c,0xe3,0xad,0x65,0x52,
+ 0x0e,0x3b,0xa2,0xdc,0xdd,0xac,0x79,0xed,0xf3,0x61,0x8b,0x0a,0xcb,0x49,0x70,0xdc,
+ 0x55,0xcb,0xd6,0x3b,0x8e,0x4d,0x63,0x87,0xc3,0x70,0x6a,0x1c,0x74,0x30,0x55,0x55,
+ 0xce,0xd7,0x4e,0xba,0xda,0x98,0xac,0x4f,0x13,0x5c,0x93,0x68,0xc0,0xf4,0xc1,0xa6,
+ 0x59,0x4d,0xd7,0x9f,0xa5,0x51,0xf1,0x03,0x97,0xb2,0x71,0xdf,0x15,0xb6,0x0a,0x3f,
+ 0xbd,0x57,0x47,0xcb,0x71,0xa5,0x35,0x57,0x2d,0xa9,0x1f,0x26,0x7c,0xdd,0xad,0x4a,
+ 0x5a,0xf1,0xc7,0xfb,0x44,0xd6,0x50,0x7c,0x7a,0x0a,0xbb,0xac,0x71,0x78,0xe7,0xd6,
+ 0xb3,0x33,0x82,0x41,0x35,0xfa,0xae,0x1d,0xaf,0x67,0x1b,0x1f,0xe7,0x76,0x61,0x4b,
+ 0x93,0x13,0x52,0x2b,0xbb,0x2c,0x79,0x9e,0xf4,0xf0,0xfc,0x75,0xaa,0x99,0xcf,0x14,
+ 0xfd,0xe0,0x1e,0x6b,0x6e,0x63,0x8e,0xc6,0x9d,0xaa,0x49,0x71,0x28,0x8e,0x3e,0x4b,
+ 0x10,0x2b,0xdf,0xbc,0x05,0xf0,0x9a,0xef,0x5e,0xdb,0x33,0x46,0x58,0x70,0x7a,0x57,
+ 0x92,0x78,0x32,0xdd,0x6e,0x35,0x18,0xf7,0x60,0xfc,0xc2,0xbf,0x4f,0xfe,0x15,0x59,
+ 0xd8,0x58,0xe9,0x31,0x3b,0x01,0x9d,0xbd,0x31,0xea,0x2b,0xdb,0xc9,0x32,0xd8,0x63,
+ 0x2a,0xb5,0x51,0xe8,0x8f,0xb7,0xe1,0x7c,0x86,0x9e,0x2b,0xf7,0xb5,0x36,0x39,0x1f,
+ 0x07,0x7c,0x2c,0xb2,0xd1,0x1a,0x23,0x76,0x80,0x11,0x83,0xc8,0x15,0xf5,0x36,0x97,
+ 0xf0,0xef,0xc3,0x1a,0xf5,0xbc,0x71,0xcf,0x0a,0x36,0x06,0x3a,0x0a,0xf3,0x0d,0x77,
+ 0x51,0x67,0x93,0x10,0x0d,0xa0,0x7a,0x57,0x49,0xe1,0x6f,0x11,0xcf,0x6e,0x55,0x77,
+ 0xe0,0x66,0xbe,0xff,0x00,0x0f,0x80,0xc3,0xc1,0x7b,0x05,0x15,0x63,0xf5,0x5a,0x39,
+ 0x75,0x1a,0x34,0x6d,0x18,0x9d,0x36,0xb7,0xfb,0x2b,0xf8,0x4b,0x5c,0xb7,0x63,0x14,
+ 0x08,0x09,0x1d,0x94,0x77,0xaf,0x85,0xfe,0x30,0xfe,0xc9,0x3a,0xaf,0x87,0x04,0xb7,
+ 0xda,0x1a,0x33,0x22,0xe5,0xb6,0x81,0x91,0x5f,0xaa,0x9e,0x1a,0xf1,0x9e,0xf4,0x54,
+ 0x66,0x0c,0x0e,0x32,0x2b,0xaf,0xbf,0xb7,0xd3,0x35,0xeb,0x56,0x8a,0x65,0x57,0x0e,
+ 0x39,0x04,0x66,0xb8,0x33,0x2e,0x14,0xa1,0x51,0x73,0x51,0x8d,0x9f,0x91,0xe4,0x62,
+ 0xf2,0x5c,0x26,0x26,0x2e,0x15,0x60,0x7f,0x33,0x77,0xba,0x3d,0xfd,0x8d,0xeb,0xd8,
+ 0xdd,0x44,0xd1,0xca,0x8d,0xb4,0xa9,0x18,0xf6,0xae,0xbf,0xc3,0xfe,0x09,0xba,0xd4,
+ 0x5d,0x77,0x21,0x39,0xf6,0xaf,0xd3,0xff,0x00,0x8c,0x9f,0xb3,0x5d,0x8d,0xfd,0xf3,
+ 0xeb,0x3a,0x5c,0x01,0x5c,0x12,0xc7,0x68,0xaf,0x37,0xf0,0x9f,0xc3,0xc8,0xb4,0xd7,
+ 0x10,0xcd,0x10,0x56,0x53,0xce,0x47,0xa5,0x7c,0x15,0x5c,0xb6,0xbd,0x1a,0x8e,0x9d,
+ 0x65,0xff,0x00,0x04,0xf2,0x32,0x8f,0x0f,0xe3,0x2c,0x43,0x75,0x25,0x78,0x9e,0x3b,
+ 0xe0,0xef,0x83,0xed,0x71,0xb3,0xcd,0x8f,0xaf,0xb5,0x7d,0x65,0xe0,0xcf,0x80,0xb6,
+ 0x72,0x79,0x66,0x48,0x07,0x6e,0x48,0xaf,0x54,0xf0,0x87,0x85,0x20,0x8d,0x16,0x4f,
+ 0x2c,0x00,0x31,0xda,0xbd,0xc7,0x4e,0x9a,0xdb,0x4e,0x8c,0x05,0x00,0x15,0xc0,0x15,
+ 0xf4,0xb9,0x4f,0x0f,0xba,0xab,0x9a,0xa2,0xb2,0x3e,0xf6,0x54,0x70,0x59,0x7c,0x7d,
+ 0x9d,0x18,0x6a,0x79,0xd5,0xb7,0xec,0xf3,0xa3,0xc9,0x6d,0xb7,0xca,0x40,0x76,0xfa,
+ 0x57,0xce,0x5f,0x11,0x7f,0x67,0x2b,0x5b,0x3b,0xc3,0x22,0x45,0x98,0xd8,0x9c,0xf1,
+ 0xc6,0x2b,0xef,0x64,0xf1,0x5a,0xc4,0x9c,0x30,0x00,0x57,0x1b,0xe2,0x4d,0x7e,0xca,
+ 0xfd,0x0a,0xcd,0x86,0xeb,0xcd,0x7b,0x58,0xde,0x1c,0xa4,0xe9,0x7e,0xef,0x73,0x9f,
+ 0x0f,0x5e,0x18,0x89,0x72,0x55,0x85,0xd1,0xf2,0x4f,0x80,0x3e,0x01,0x68,0x70,0x3a,
+ 0xdd,0x5d,0x42,0xa1,0x47,0x3c,0x81,0xcd,0x7a,0x4f,0x8b,0x7e,0x11,0xf8,0x3e,0xff,
+ 0x00,0x4f,0x6b,0x61,0x6d,0x1e,0x4a,0xe3,0x20,0x0a,0xdb,0x9b,0x5e,0x30,0x96,0x82,
+ 0xd1,0xb0,0xa3,0x8e,0x0d,0x54,0x6d,0x52,0x67,0x1c,0xb1,0x3f,0xca,0xae,0x8d,0x4c,
+ 0x36,0x1e,0x92,0xc3,0xa8,0x2f,0x33,0x07,0xc2,0xf4,0xdc,0xa5,0x28,0xc7,0x46,0x7e,
+ 0x7f,0xfc,0x40,0xfd,0x99,0x19,0x6e,0xa4,0xb9,0xd1,0xb3,0x82,0x4f,0x00,0x7f,0x4a,
+ 0xf0,0xed,0x4f,0xe0,0x47,0x89,0x2c,0x63,0x67,0x48,0xdc,0xe3,0xd4,0x57,0xeb,0xb4,
+ 0x2f,0x05,0xc1,0x1e,0x72,0x8e,0x7b,0xd6,0x8d,0xf6,0x83,0xa2,0xdc,0xd9,0x11,0xb1,
+ 0x09,0x23,0xd0,0x57,0xcb,0xe6,0x99,0x3d,0x06,0xdd,0x5a,0x0f,0x97,0xc8,0xf2,0xff,
+ 0x00,0xd4,0x7c,0x1d,0x79,0x35,0x38,0xd9,0xb3,0xf1,0x87,0x44,0xf8,0x59,0xa9,0x5c,
+ 0x5d,0xfd,0x96,0xea,0x16,0x0d,0x9c,0x57,0xa0,0xea,0xbf,0x00,0x6f,0xa2,0xb3,0x37,
+ 0x10,0xc4,0x41,0xc6,0x78,0x15,0xf7,0xa5,0xef,0x84,0xf4,0x9b,0x4d,0x4b,0xed,0x31,
+ 0xc6,0xbc,0x1e,0xc2,0xba,0xc8,0xec,0xac,0xf5,0x08,0xd6,0xde,0x34,0x18,0xc6,0x0d,
+ 0x7c,0xfa,0xc3,0x41,0x3e,0x59,0xbb,0xb3,0xdc,0xc2,0xf8,0x69,0x83,0x8e,0x1d,0xaa,
+ 0x91,0xf9,0x9f,0x90,0xa3,0xe1,0x87,0x88,0x9a,0xff,0x00,0xec,0x62,0x07,0xc6,0x71,
+ 0x9c,0x57,0xd0,0x3e,0x0d,0xfd,0x98,0xb5,0xad,0x51,0x63,0x9e,0xe2,0x26,0x21,0xb1,
+ 0xc1,0x1c,0x57,0xe8,0xc6,0x87,0xf0,0xaf,0x49,0x9a,0xe5,0x6e,0xe6,0x81,0x70,0x0e,
+ 0x79,0x1d,0x6b,0xd9,0x23,0x93,0x42,0xd0,0x6d,0x84,0x11,0x22,0x65,0x06,0x38,0x03,
+ 0xb5,0x7d,0x06,0x07,0x86,0x3d,0xa4,0x3d,0xad,0x69,0x69,0xd1,0x1f,0x25,0x4f,0x83,
+ 0x30,0x94,0x2b,0xc9,0x35,0x74,0x7e,0x54,0xf8,0xdf,0xf6,0x60,0x9b,0x44,0xd2,0x9e,
+ 0xf1,0x14,0x06,0x45,0x24,0x8c,0x7a,0x57,0xc3,0x5a,0xa6,0x9f,0x2e,0x9f,0x7b,0x2d,
+ 0x9c,0x9f,0x2b,0x44,0xc5,0x79,0xe2,0xbf,0x76,0x3e,0x23,0x6b,0x70,0xea,0x96,0x12,
+ 0x5b,0x22,0x80,0x08,0x22,0xbf,0x2a,0xbe,0x33,0xf8,0x0c,0x69,0xf2,0xbe,0xad,0x6a,
+ 0x0f,0x2c,0x58,0xe3,0xd3,0xbd,0x73,0x67,0x39,0x5c,0x28,0x25,0x2a,0x31,0xb2,0x5b,
+ 0x9e,0x5f,0x14,0xf0,0xc4,0x29,0xd1,0xfa,0xc6,0x1a,0x3b,0x6e,0x7c,0xd0,0x4f,0x61,
+ 0xd6,0x99,0xdb,0xeb,0x4f,0x61,0xcf,0x5e,0x2a,0x30,0x0f,0x7e,0xb5,0xf3,0xf7,0x3f,
+ 0x2f,0x76,0xd9,0x87,0x5c,0x8a,0xef,0xfc,0x11,0xe1,0x89,0xb5,0xcd,0x46,0x25,0x55,
+ 0x25,0x4b,0x01,0xd2,0xb8,0xcb,0x1b,0x57,0xbd,0x9d,0x21,0x8c,0x67,0x71,0x1f,0xce,
+ 0xbe,0xfd,0xf8,0x05,0xf0,0xeb,0xcd,0x92,0xde,0x57,0x8f,0x24,0x91,0xda,0xbe,0x3b,
+ 0x8c,0xf8,0x82,0x19,0x66,0x06,0x73,0xbf,0xbc,0xcf,0x67,0x22,0xcb,0x1e,0x2b,0x10,
+ 0x93,0xd9,0x1f,0x52,0xfe,0xcf,0x7f,0x0a,0x52,0xd9,0x60,0x92,0x48,0x47,0x18,0xed,
+ 0x5f,0xa8,0xbe,0x18,0xf0,0xed,0xa6,0x9f,0x60,0x88,0x23,0x03,0x0a,0x2b,0xc5,0xbe,
+ 0x19,0x78,0x72,0x0d,0x2e,0xce,0x26,0xd8,0x06,0xd0,0x31,0xc5,0x7d,0x09,0x6d,0x74,
+ 0xa1,0x30,0x31,0x8a,0xfe,0x27,0xce,0xb3,0x8a,0x98,0xdc,0x44,0xaa,0xd4,0x77,0xb9,
+ 0xfb,0x35,0x0c,0x3a,0xa3,0x49,0x42,0x99,0xce,0xf8,0x8f,0x4a,0xb6,0x96,0x32,0xa1,
+ 0x01,0x3f,0x4a,0xe4,0xb4,0xbd,0x1e,0x2b,0x1f,0x9c,0x28,0x07,0xaf,0xa5,0x76,0x9a,
+ 0x95,0xd0,0x66,0xe3,0x9a,0xc3,0x67,0x24,0xf3,0xde,0xbe,0x0b,0x17,0x8b,0x94,0xa4,
+ 0xe3,0x7d,0x0f,0xa0,0xc2,0xd1,0xb4,0x53,0x92,0xd4,0xbb,0x1b,0x0c,0xe6,0xb4,0xa0,
+ 0x7c,0x74,0xac,0x48,0xcf,0x38,0xf4,0xad,0x7b,0x6e,0x4e,0x2b,0x86,0x32,0x5d,0x59,
+ 0x75,0xe2,0xac,0x58,0xba,0xb6,0x4b,0x84,0x2a,0x46,0x72,0x2b,0xc6,0xfc,0x5b,0xf0,
+ 0xc2,0xc7,0x5c,0x24,0xc9,0x12,0xb6,0x7a,0x82,0x07,0x7a,0xf7,0x54,0xc6,0x31,0x48,
+ 0xca,0x9d,0xc5,0x77,0xe1,0xf1,0xb3,0xa0,0xf9,0xa0,0xec,0x79,0xdc,0xe9,0xfb,0xb2,
+ 0x57,0x3e,0x6c,0xd1,0xfe,0x0b,0x69,0x56,0x6a,0x33,0x0a,0x8c,0x7b,0x57,0x77,0x69,
+ 0xf0,0xf3,0x4a,0xb5,0x03,0x11,0x2f,0x1e,0xd5,0xe9,0xef,0x22,0x2f,0x00,0x55,0x29,
+ 0x25,0x27,0xbd,0x56,0x23,0x3b,0xc4,0x54,0x7a,0xcd,0x9d,0x14,0xe2,0xbe,0xcc,0x4f,
+ 0xff,0xd6,0xfc,0x87,0xb8,0xf0,0x55,0xe5,0x87,0x32,0x46,0x48,0x1c,0xf4,0xab,0x5a,
+ 0x6e,0x94,0x51,0xc0,0x2b,0x8a,0xfb,0xff,0x00,0xc7,0x3f,0x0d,0x61,0xb6,0x81,0xb6,
+ 0x44,0x31,0x83,0xd0,0x57,0xcb,0x17,0x5e,0x1b,0x9a,0xce,0xf9,0xe3,0x2b,0x85,0xcf,
+ 0x15,0xf9,0xd6,0x27,0x34,0xa9,0x09,0xba,0x55,0x1e,0xa7,0xe8,0x3c,0x5d,0xc0,0x18,
+ 0x9c,0xa9,0xc6,0x74,0x93,0x71,0x66,0x25,0x9d,0x92,0xa2,0x02,0x07,0x1f,0xca,0xac,
+ 0xbd,0xba,0x85,0xc8,0xe7,0x3c,0x57,0x40,0xb6,0x42,0x34,0xe7,0xad,0x67,0xdc,0x61,
+ 0x07,0x4f,0xce,0xb9,0xe3,0x8c,0x94,0x8f,0x86,0xc4,0x60,0xab,0xd0,0x8d,0xea,0x46,
+ 0xc7,0x3c,0xf6,0x4a,0xc7,0x01,0x7a,0xd4,0x47,0x4c,0x46,0xe7,0x6d,0x6b,0x09,0x50,
+ 0x1c,0x91,0xd6,0x9a,0x6e,0x93,0x91,0x8f,0xfe,0xb5,0x3f,0x6f,0x3e,0xa7,0x9c,0xe6,
+ 0xd9,0x8c,0x74,0xd5,0x53,0x90,0x31,0x52,0x25,0x90,0x50,0x38,0xfc,0xab,0x47,0xcd,
+ 0x52,0x00,0xa8,0xda,0x55,0x5c,0xd7,0x55,0x3a,0xd2,0xb1,0x32,0x93,0x2a,0x3c,0x48,
+ 0x06,0x7f,0x95,0x63,0xdc,0xb2,0xa7,0xd3,0x35,0x7a,0xea,0xe9,0x76,0xf5,0xe2,0xb9,
+ 0xbb,0xa9,0x8f,0x4c,0xf1,0x5a,0x29,0x49,0xea,0x46,0xe5,0xa8,0xee,0x30,0x70,0x0e,
+ 0x7d,0x6b,0x6e,0xda,0xe0,0x11,0xf4,0x15,0xc4,0x47,0x36,0xd6,0xce,0x6b,0x56,0x1b,
+ 0xa2,0x17,0xaf,0x5f,0xcf,0x35,0xe8,0x61,0x60,0xe4,0x1c,0xba,0x5c,0xec,0x0d,0xd8,
+ 0x50,0x49,0x3f,0xad,0x54,0x7d,0x48,0x0e,0x73,0xdb,0xa5,0x60,0x3d,0xc1,0xc1,0xc1,
+ 0x35,0x42,0x5b,0x86,0x63,0xde,0xbd,0x48,0x60,0x64,0xfd,0xe9,0x1b,0x42,0x16,0xd4,
+ 0xea,0x4e,0xa2,0x4a,0xe7,0x35,0x9d,0x77,0xac,0x88,0xc1,0x25,0xbb,0x74,0xac,0xbc,
+ 0x4a,0xeb,0x90,0x7a,0x7f,0x5a,0xc5,0xd4,0x22,0x7c,0x1e,0xb4,0xa5,0x87,0x8a,0x66,
+ 0xca,0x5d,0x8a,0xba,0x97,0x88,0x1c,0x93,0x82,0x72,0x7d,0xeb,0x8d,0xbc,0xd4,0x67,
+ 0x9c,0x9c,0xb1,0xeb,0xeb,0x53,0x5f,0x0d,0xb9,0xcd,0x63,0x13,0xb9,0xab,0xbe,0x95,
+ 0x18,0x28,0xdc,0xd2,0xed,0x80,0x06,0x47,0xc7,0xad,0x6b,0x41,0x60,0xce,0xbd,0x2a,
+ 0xce,0x99,0xa7,0x99,0x98,0x64,0x75,0xaf,0x4c,0xb0,0xd0,0x43,0x46,0x0e,0x31,0xc5,
+ 0x73,0x62,0x31,0x4a,0x0f,0x96,0xe4,0xb6,0x79,0x5c,0xd6,0x2c,0xa3,0xa6,0x2b,0x1e,
+ 0x48,0x48,0x70,0x3a,0x66,0xbd,0x93,0x53,0xd1,0x7c,0xb4,0xc8,0x5e,0xde,0x95,0xc5,
+ 0x1d,0x24,0xbd,0xce,0x00,0xc8,0xcd,0x4d,0x1c,0x6a,0xb5,0xc4,0x57,0xd1,0xec,0x66,
+ 0x66,0x52,0x01,0xc6,0x6b,0xd6,0xb4,0x78,0x64,0x85,0x57,0x20,0x8a,0xbb,0xe1,0x8f,
+ 0x0b,0x3c,0xa8,0x08,0x5c,0xf1,0x9f,0xc2,0xbb,0xb9,0x3c,0x39,0x25,0xb4,0x79,0x2b,
+ 0x8e,0x2b,0xe5,0xf3,0x8c,0x52,0xa8,0x9a,0x3f,0x60,0xf0,0xc3,0x3a,0x78,0x4c,0x54,
+ 0x62,0xde,0x85,0x6b,0x19,0x07,0x19,0xe2,0xba,0xdb,0x4b,0x9f,0x29,0x46,0x0e,0x08,
+ 0xf5,0xae,0x12,0x12,0x60,0x98,0xa1,0xea,0x0f,0x02,0xb6,0xa3,0x98,0x85,0x19,0x39,
+ 0xaf,0x9c,0x8a,0x4b,0x53,0xfb,0x6b,0x2e,0xc7,0x2a,0x94,0xe3,0x2b,0x9e,0x83,0x6d,
+ 0x7e,0x59,0x70,0x4f,0xe7,0x52,0xcb,0x73,0x93,0x9c,0xd7,0x0f,0x05,0xe3,0x0e,0xf8,
+ 0xad,0x01,0x7b,0x91,0x83,0xd6,0xb8,0xe7,0x4d,0xb9,0x6a,0x7d,0x2c,0x31,0xf0,0xe5,
+ 0x3a,0x1f,0x39,0x7a,0xe7,0x8f,0xe7,0x50,0x3c,0xaa,0x7b,0xf3,0x58,0x7f,0x6d,0x3f,
+ 0x8d,0x35,0xae,0xbb,0x8e,0x2b,0xd3,0xc3,0xa9,0x72,0x6a,0x78,0xd8,0x9c,0x6c,0x39,
+ 0x9b,0x46,0x9c,0xb2,0x0e,0xa7,0xbd,0x67,0x49,0x20,0xfa,0x7f,0x9e,0x6a,0xb7,0x9e,
+ 0x7b,0xd5,0x47,0x94,0x9e,0xf5,0xab,0xa5,0x75,0x73,0x8d,0xe3,0x16,0xe5,0xd5,0x97,
+ 0x2e,0x3d,0xab,0xbb,0xd0,0xa5,0xc0,0x53,0xe9,0x5e,0x62,0xb2,0xfc,0xd9,0x06,0xba,
+ 0xdd,0x37,0x52,0x58,0x90,0x03,0xc1,0xc5,0x6b,0x87,0xa4,0x9c,0xbd,0xe3,0x9e,0xb6,
+ 0x35,0xa6,0xb9,0x4f,0x55,0xfe,0xd5,0x44,0xc2,0x31,0xc6,0x7b,0x57,0x3f,0xac,0xbc,
+ 0x37,0x31,0x33,0x2d,0x71,0xd7,0x3a,0xa1,0x77,0x18,0x34,0x7f,0x69,0x19,0x13,0x69,
+ 0x3d,0x29,0x55,0x56,0x93,0x89,0xd9,0x43,0x16,0xa7,0x4e,0xf2,0xdc,0xe1,0x35,0x84,
+ 0x58,0xe5,0x20,0x57,0x2e,0xef,0x86,0xe4,0x75,0xae,0xaf,0x59,0x1e,0x63,0x33,0x29,
+ 0xae,0x2e,0x57,0xc3,0x75,0xae,0x37,0x16,0x72,0x54,0xad,0xae,0x86,0xbd,0xb4,0xb8,
+ 0x23,0x26,0xab,0x6b,0x13,0xee,0xb5,0x61,0xed,0x50,0x45,0x26,0x06,0x73,0x59,0x9a,
+ 0xc4,0xf8,0xb6,0x60,0x6b,0x5c,0x1c,0x7f,0x7a,0x8f,0x17,0x89,0x6b,0xdb,0x2f,0xa9,
+ 0x7e,0xc7,0x86,0xeb,0x44,0x7d,0xb1,0x8f,0xd7,0xf9,0xd6,0x36,0x6b,0x43,0x57,0x72,
+ 0xd7,0x6d,0x81,0x59,0x65,0xbd,0x7b,0xd7,0xea,0x14,0x3f,0x86,0x8f,0xf3,0xef,0x35,
+ 0x92,0xfa,0xe5,0x57,0xe6,0xc9,0x37,0x0a,0x50,0x7b,0x1c,0xe6,0xa2,0xe3,0xf2,0xa0,
+ 0x1e,0xe2,0xb6,0x3c,0xee,0x67,0xb9,0xea,0x3e,0x00,0x5c,0xdf,0x46,0x7d,0xc7,0xf3,
+ 0xaf,0xd1,0xaf,0x07,0x4c,0xf1,0xe9,0x71,0x00,0x71,0x95,0x15,0xf9,0xeb,0xf0,0xca,
+ 0xca,0x4b,0x9d,0x46,0x15,0x8d,0x49,0x25,0x86,0x00,0x1e,0xf5,0xfa,0x5d,0xa7,0xf8,
+ 0x43,0x5d,0xd0,0xbc,0x3d,0x67,0xa9,0xea,0x36,0x72,0x41,0x6b,0x73,0x84,0x8e,0x47,
+ 0x18,0x56,0x38,0xce,0x06,0x7d,0xbd,0xab,0xe9,0x72,0x19,0x38,0x46,0x73,0x3f,0x6d,
+ 0xe0,0x3c,0x3a,0x78,0x74,0xa5,0xd7,0x62,0xdc,0xcb,0xe6,0xa6,0xe3,0xcd,0x66,0xc5,
+ 0x74,0xd6,0xf2,0x61,0x7b,0x7a,0x76,0xab,0xbe,0x70,0xd9,0xb7,0xdb,0x15,0x89,0x27,
+ 0x33,0x63,0xb5,0x7d,0x0a,0xc7,0x38,0xb5,0x2b,0x9f,0xa6,0x4f,0x04,0x9d,0xa2,0x7a,
+ 0x5f,0x86,0xfc,0x43,0x2c,0x72,0x00,0x58,0xf5,0xe3,0x9a,0xf7,0xcf,0x0f,0xf8,0x82,
+ 0x46,0x0a,0x09,0xfa,0xd7,0xcc,0xbe,0x1d,0xd3,0x2e,0xaf,0xae,0xd2,0x0b,0x54,0x2c,
+ 0xcc,0xd8,0xe0,0x66,0xbe,0x92,0x8b,0x4c,0x87,0xc2,0x3a,0x7c,0x72,0x5e,0x2f,0x9f,
+ 0x7b,0x20,0xca,0xc1,0x9c,0x05,0xf7,0x73,0xd7,0xf0,0xaf,0x7f,0x07,0x98,0xa9,0x52,
+ 0x73,0x9e,0xcb,0x76,0x78,0xb9,0x86,0x0d,0x29,0xc6,0x10,0xf8,0x9f,0x43,0xaf,0xd5,
+ 0x3c,0x43,0x69,0x6d,0x6c,0x53,0x50,0x85,0x58,0x4d,0x88,0xd0,0xb7,0x76,0x3d,0x48,
+ 0xf5,0xc7,0x7a,0xe4,0xf5,0x2f,0x00,0xdb,0xc8,0xf1,0x6a,0x16,0xea,0x36,0x48,0x03,
+ 0x82,0xa3,0x83,0x9e,0x78,0x35,0xe4,0x5a,0xdd,0xfe,0xa3,0xa9,0xea,0x46,0xea,0xfa,
+ 0x52,0xe4,0x1c,0x22,0x03,0x85,0x41,0xe8,0xa3,0xd2,0xbd,0x77,0xc1,0xfe,0x30,0xd4,
+ 0x6c,0xad,0x52,0xc6,0xe4,0xad,0xcd,0xb8,0xff,0x00,0x96,0x6e,0x33,0x8c,0xfa,0x1e,
+ 0xa3,0xf0,0x35,0xf3,0xb5,0xf3,0x2c,0x36,0x2b,0x10,0xd5,0x48,0xe9,0xd1,0x9d,0xb4,
+ 0xb2,0x7c,0x45,0x0a,0x3c,0xd1,0x95,0xe5,0xd4,0xd5,0x86,0xcd,0x2c,0x20,0x11,0x80,
+ 0x05,0x61,0xea,0x97,0x6c,0x01,0x11,0xb7,0x35,0xe8,0x57,0x9a,0x52,0x6b,0x76,0xcd,
+ 0x73,0xa1,0xbe,0xf9,0x31,0xb9,0xad,0xdb,0x1b,0xc7,0xae,0xdf,0xef,0x0f,0xa5,0x79,
+ 0x86,0xa7,0x61,0x73,0x6d,0x60,0x9a,0x89,0x91,0x65,0x0d,0x24,0x91,0xcd,0x1a,0x83,
+ 0xba,0x06,0x46,0x0a,0x3c,0xc1,0xe8,0xdd,0x88,0xee,0x30,0x79,0xaf,0x45,0xe2,0xdc,
+ 0x74,0x8a,0xd3,0xcb,0x63,0x96,0x8e,0x16,0x9c,0xa4,0xbd,0xa3,0xd5,0x9c,0xcd,0xde,
+ 0xab,0x75,0x19,0x28,0x09,0xc1,0xae,0x72,0xea,0xf6,0x79,0xb7,0x02,0xc7,0x06,0xb6,
+ 0xa4,0x02,0x62,0x48,0x19,0x3e,0x95,0x8d,0x79,0x0f,0x96,0xa4,0xe3,0x1c,0x9a,0x72,
+ 0xc7,0x49,0xc1,0xa6,0xcf,0x45,0x60,0x61,0x09,0x2b,0x22,0x95,0xb2,0x49,0x21,0xe0,
+ 0x12,0x4e,0x6b,0x42,0x5b,0x6b,0xd8,0x57,0x7c,0x90,0xba,0xaf,0xa9,0x53,0x5b,0x7e,
+ 0x11,0x7b,0x78,0x6e,0x8b,0xcd,0x82,0x40,0xc8,0x0c,0x33,0xcd,0x7b,0x15,0xa7,0x88,
+ 0x2d,0x9a,0x2f,0x2e,0x65,0x46,0x52,0x30,0x41,0x00,0x8c,0x7d,0x0d,0x78,0x95,0x67,
+ 0x06,0xef,0x29,0x6a,0x7a,0xad,0x4d,0x68,0xa3,0x73,0xc9,0xbc,0x2f,0x65,0x6d,0xa8,
+ 0x5c,0x7f,0xa5,0x49,0xb1,0x41,0xe8,0x3a,0x9f,0x61,0x5d,0xfe,0xad,0xe1,0x9b,0x39,
+ 0xad,0xf7,0xe9,0x32,0x18,0xe4,0x0a,0x4e,0xc7,0x6e,0x1f,0x8e,0x80,0xf6,0x3e,0x95,
+ 0xc2,0xf8,0x9f,0x53,0xd2,0xb4,0x7d,0x4c,0xcf,0xa7,0x5b,0x3a,0xb4,0xb8,0xca,0xc6,
+ 0x71,0x12,0xe4,0xf2,0xd8,0xeb,0xf8,0x74,0xad,0x49,0x3c,0x40,0x8c,0x2d,0xc7,0x99,
+ 0x94,0x91,0x73,0x8f,0xad,0x44,0xab,0x28,0xb5,0x1b,0xdd,0x33,0x86,0xae,0x12,0xa4,
+ 0xa5,0xed,0x63,0x74,0x79,0x16,0xb3,0x05,0xd2,0xdc,0xed,0xc1,0xeb,0xc8,0xaf,0x40,
+ 0xf0,0x8e,0x8d,0x90,0xb3,0x4c,0x38,0x18,0xeb,0x5d,0x29,0xd2,0x2d,0xf5,0x98,0x57,
+ 0x51,0x45,0x01,0xb7,0x84,0x97,0x1e,0xa7,0xa3,0x7e,0x23,0xf5,0xad,0xb9,0x2d,0xa3,
+ 0xd3,0x2c,0xfc,0xb8,0xf8,0x38,0xab,0xc0,0xe4,0xf4,0x95,0x6f,0x6e,0xf5,0x8f,0x41,
+ 0x62,0xb3,0xba,0xb3,0xa3,0xec,0x63,0xa4,0xb6,0x1f,0x7f,0xab,0xc1,0x65,0x6e,0x62,
+ 0x88,0x80,0x71,0x8a,0xf2,0x0d,0x67,0x59,0x96,0x59,0x1d,0x83,0x9a,0xb3,0xad,0x5d,
+ 0x4a,0x18,0x9c,0xfa,0xd7,0x9d,0xea,0x7a,0x86,0x03,0x64,0xfa,0x8a,0xfa,0x4a,0x98,
+ 0xa4,0xa3,0x65,0xa1,0xe3,0xd1,0xc2,0xd9,0x73,0x37,0x76,0x66,0xea,0x7a,0x9b,0xca,
+ 0xcc,0xac,0x72,0x2b,0xc0,0x3e,0x28,0xda,0xc7,0x79,0xa1,0xdc,0x23,0xa8,0x24,0x29,
+ 0xeb,0x5e,0xb7,0x3d,0xc0,0x66,0x24,0x9a,0xf2,0xdf,0x1f,0x48,0x3f,0xb2,0xe7,0x0d,
+ 0xdd,0x4d,0x7c,0xae,0x3a,0xb2,0x9c,0x26,0xd9,0xc5,0x9a,0xc1,0x4b,0x0f,0x38,0x3e,
+ 0xc7,0xe7,0x5d,0xda,0x18,0x6e,0x24,0x8c,0x7f,0x0b,0x11,0x55,0x38,0xcf,0xad,0x69,
+ 0xea,0xe3,0x1a,0x8c,0xe0,0x7f,0x7c,0xd6,0x60,0xfb,0xd8,0xf5,0xaf,0x89,0x8e,0xc7,
+ 0xf3,0x9d,0x68,0xf2,0xd4,0x92,0x5d,0x0f,0x52,0xf8,0x6d,0xa2,0x8d,0x47,0x52,0x8f,
+ 0x2b,0x91,0xb8,0x57,0xec,0x1f,0xc0,0xcf,0x09,0xc3,0x6f,0x6b,0x0c,0x81,0x30,0x70,
+ 0x3a,0x8a,0xfc,0xcc,0xf8,0x27,0xa5,0x89,0x2f,0xa1,0x72,0xbf,0xc4,0x33,0x5f,0xb1,
+ 0x7f,0x0b,0x2d,0x92,0xda,0xc2,0x12,0x30,0x30,0xa0,0x8a,0xfe,0x5c,0xf1,0x8f,0x37,
+ 0x94,0xb1,0x0e,0x8c,0x5e,0x87,0xea,0x1c,0x21,0x83,0x8c,0x68,0x7b,0x4e,0xa7,0xd2,
+ 0x5a,0x40,0x4b,0x78,0x92,0x34,0xe8,0xa0,0x57,0x65,0x0c,0xb8,0x4a,0xe0,0x74,0xf9,
+ 0x47,0x15,0xd5,0xc3,0x36,0x50,0x0a,0xfe,0x77,0xa9,0x2d,0x19,0xf6,0xf0,0x8d,0xdd,
+ 0x86,0x5c,0xb9,0x32,0x1a,0xa8,0x5b,0x27,0xde,0x9f,0x70,0xd9,0x7a,0xa9,0xf3,0xd7,
+ 0xcb,0x55,0xbf,0x33,0xb9,0xef,0xc3,0x63,0x42,0x26,0xad,0x48,0x66,0x0b,0xf8,0x57,
+ 0x38,0x24,0x91,0x39,0xc1,0xa4,0x17,0x64,0x1c,0x13,0x59,0x73,0x04,0xa9,0x73,0xe8,
+ 0x76,0x22,0xe9,0x31,0x8f,0x4a,0x6b,0x5c,0xe7,0x8a,0xe6,0xa3,0xba,0x38,0xe6,0xad,
+ 0x2c,0xdc,0x54,0x39,0xa3,0x9d,0xe0,0x92,0xd4,0xd3,0x79,0x72,0x6a,0xa3,0x3f,0x35,
+ 0x07,0x9a,0x48,0xa6,0x96,0x24,0xe0,0xd3,0x8e,0xa6,0x91,0xa5,0x63,0xff,0xd7,0xe9,
+ 0x3c,0x67,0x6b,0x0d,0xdc,0x2c,0x02,0x8e,0x95,0xf2,0x4f,0x89,0xfc,0x3f,0xb2,0x77,
+ 0x72,0x31,0xd6,0xbe,0xa3,0x9f,0x54,0x5b,0x95,0xc3,0x1c,0xf1,0xde,0xbc,0xa7,0xc5,
+ 0x16,0x6b,0x3a,0x16,0x41,0x9e,0xbd,0xab,0xf3,0x7c,0xff,0x00,0x0a,0xa5,0x2f,0x6a,
+ 0x8f,0xf4,0x8a,0x96,0x49,0x87,0xc6,0xc5,0x46,0xb4,0x53,0x3e,0x67,0xba,0xb4,0x3b,
+ 0x8a,0x01,0xdf,0x9a,0xe7,0xee,0xb4,0x69,0xa6,0x6c,0xa0,0xeb,0xf8,0xd7,0xaf,0xbe,
+ 0x85,0x2c,0xd3,0x9d,0xc3,0x83,0x5d,0x4e,0x9d,0xe1,0x18,0xd8,0x06,0x74,0xf4,0xaf,
+ 0x17,0x0f,0x4a,0xa4,0xb5,0x89,0xf3,0x5c,0x47,0xe1,0x9e,0x59,0x8a,0x87,0x23,0x82,
+ 0x3e,0x6a,0x5f,0x08,0xdf,0x4a,0x72,0xa0,0xff,0x00,0x9e,0xd4,0x93,0x78,0x1b,0x50,
+ 0x00,0xb0,0xdd,0xc7,0x61,0xda,0xbe,0xbe,0x83,0xc3,0x16,0x91,0x28,0xdc,0xa3,0x83,
+ 0xde,0xad,0x5c,0xe8,0x36,0x46,0x32,0x36,0x0a,0xf4,0xe1,0x86,0xab,0x6b,0xc9,0x9f,
+ 0x9c,0xd7,0xf0,0x43,0x2f,0x71,0xb4,0x11,0xf0,0x85,0xf6,0x8f,0xa8,0x59,0x1c,0x90,
+ 0x48,0xe7,0xb5,0x61,0xb1,0x93,0x04,0x73,0xef,0x9a,0xfa,0xf3,0x5d,0xf0,0xb4,0x12,
+ 0x83,0xb5,0x07,0xe1,0x5e,0x21,0xaf,0x78,0x4c,0xc5,0xbd,0xe3,0x52,0x31,0x5d,0x38,
+ 0x4c,0x45,0x39,0x54,0xf6,0x55,0x37,0x3f,0x28,0xe2,0xdf,0x08,0x31,0xb9,0x7c,0x65,
+ 0x5f,0x0c,0xaf,0x15,0xd0,0xf2,0x49,0x41,0x27,0x23,0xd2,0xb2,0x6e,0x14,0x9e,0x17,
+ 0x93,0x5d,0x2c,0xd6,0xb2,0x09,0x4c,0x44,0x73,0x9c,0x62,0xbb,0x1d,0x0b,0xc1,0x72,
+ 0x5e,0x28,0x92,0x44,0xeb,0x5e,0xfe,0x23,0x0f,0x0a,0x50,0x4c,0xfc,0xd7,0x26,0xe1,
+ 0xdc,0x5e,0x3e,0xbf,0xd5,0xe9,0x43,0x55,0xb9,0xe2,0xb2,0x24,0xcb,0xf3,0x15,0x38,
+ 0xab,0x10,0x31,0xc8,0xcf,0x35,0xee,0x3a,0xbf,0x81,0x7e,0xcd,0x11,0x91,0x57,0xa0,
+ 0xe7,0x8a,0xf2,0x5b,0xfd,0x38,0xd9,0xce,0x42,0xf0,0x33,0xcd,0x4e,0x5b,0x5e,0x2e,
+ 0xa7,0x2b,0x3d,0x9e,0x22,0xe0,0xbc,0x66,0x53,0x05,0x52,0xae,0xc5,0x66,0x3b,0x86,
+ 0x0f,0x5f,0x5a,0x96,0x0b,0x7d,0xed,0x44,0x20,0x9e,0x2b,0x7e,0xca,0xd7,0x77,0x38,
+ 0xaf,0xa3,0xad,0x2e,0x58,0xe8,0x7c,0x64,0x9e,0x81,0x6f,0x66,0x0a,0x93,0x8e,0x82,
+ 0xb2,0xb5,0x3b,0x45,0xe4,0xe3,0xa7,0x6a,0xf4,0x0b,0x6b,0x55,0x2b,0xc2,0xf6,0xac,
+ 0x4d,0x5e,0xdd,0x44,0x6c,0x47,0x15,0xf2,0xd5,0xb1,0x32,0x75,0x35,0x22,0x32,0xe8,
+ 0xcf,0x0b,0xd5,0xa2,0xda,0xc7,0x8c,0x7a,0xff,0x00,0x4a,0xc7,0xb5,0xb7,0x69,0x1c,
+ 0x67,0xd6,0xba,0xed,0x5e,0xdb,0x74,0x9c,0x8f,0xf2,0x29,0x9a,0x4e,0x9f,0x99,0x46,
+ 0x47,0xd3,0xde,0xbd,0x68,0xd7,0x51,0xa5,0x74,0x6a,0x99,0xd3,0xe8,0x1a,0x66,0x76,
+ 0xe4,0x7a,0x57,0xb0,0xd8,0x69,0xb1,0x88,0x73,0x8e,0x80,0x57,0x2b,0xa1,0x59,0xaa,
+ 0x05,0x38,0xc7,0xa1,0xae,0xed,0x24,0x58,0x63,0xc6,0x3a,0x0e,0x7d,0xeb,0xe7,0x71,
+ 0x55,0xa4,0xe5,0x72,0x8e,0x43,0x5b,0x81,0x19,0x31,0x81,0x91,0x9a,0xe6,0xb4,0xed,
+ 0x2d,0x5e,0xef,0x81,0x9a,0xe8,0xf5,0x39,0x8c,0x92,0x1c,0x1e,0x33,0x9e,0x2a,0xc6,
+ 0x84,0x83,0xed,0x03,0x23,0x38,0x34,0x7b,0x46,0xa3,0x61,0xc7,0x74,0x7b,0x77,0x82,
+ 0x74,0x04,0xf2,0xd5,0xca,0xf6,0xcf,0x4a,0xeb,0x35,0xed,0x1e,0x11,0x6e,0x4f,0x42,
+ 0x07,0xe5,0x50,0x78,0x62,0x6f,0x22,0xdd,0x46,0x7b,0x53,0xfc,0x45,0xa9,0x28,0x8d,
+ 0x86,0xee,0x00,0xaf,0x1e,0xbd,0x27,0x26,0xcf,0x7f,0x27,0xc6,0x3c,0x3e,0x22,0x33,
+ 0x47,0x80,0x6a,0xd0,0x7d,0x9e,0xec,0xb0,0xf5,0xc1,0xa8,0x12,0x5c,0x8f,0x6e,0x94,
+ 0xed,0x7e,0xfa,0x37,0x98,0xec,0x6e,0xf5,0x9f,0x04,0xa1,0x80,0x20,0xf2,0x7d,0x6b,
+ 0x89,0x45,0xc5,0x5b,0xa1,0xfd,0xb5,0xc1,0x19,0xc2,0xc4,0xe0,0x20,0xcd,0x64,0x72,
+ 0x32,0x4d,0x4c,0xb2,0x91,0xcf,0x5a,0xa2,0xa4,0x10,0x72,0x69,0xc1,0xf0,0x32,0x69,
+ 0x58,0xfb,0x49,0xe2,0x2c,0xb4,0x2f,0x99,0x49,0x1d,0x69,0x7c,0xf2,0x31,0x9e,0x6b,
+ 0x3b,0x70,0x38,0x3e,0xb4,0xcf,0x30,0xfa,0xd7,0x45,0x19,0x5b,0x43,0xcc,0xaf,0x88,
+ 0xbb,0xb9,0x79,0xa6,0xe7,0x9e,0xa2,0x98,0x66,0xe7,0xd0,0x55,0x13,0x27,0x7a,0x8f,
+ 0xcc,0xcf,0x5a,0xd9,0x6e,0x65,0xed,0xee,0x8d,0x14,0x71,0x9e,0xa3,0xda,0xad,0x2c,
+ 0xcc,0xa3,0x83,0x8a,0xc5,0x49,0x40,0xc7,0x27,0xd2,0xae,0xab,0x02,0xa3,0x3d,0x31,
+ 0x5d,0x09,0x5d,0x09,0x55,0x65,0xb6,0xb9,0x63,0xc5,0x4d,0x15,0xc9,0xc6,0x3f,0xad,
+ 0x63,0x48,0xdc,0xe2,0x91,0x24,0x28,0xdf,0xca,0xb1,0x9a,0x7d,0x4e,0x8a,0x75,0xdd,
+ 0xec,0x5f,0xd4,0x24,0x57,0x42,0x3b,0xd7,0x0d,0x71,0xf2,0xc8,0x41,0xae,0x92,0x79,
+ 0xb2,0x87,0x9a,0xe5,0xae,0xbe,0xf9,0xac,0x3a,0x8e,0xbd,0x5d,0x13,0x25,0x8d,0xff,
+ 0x00,0xfd,0x75,0x8f,0xac,0xc9,0x88,0x1b,0x3c,0xf1,0xd6,0xb4,0x22,0x70,0x07,0x27,
+ 0xa5,0x60,0xeb,0x77,0x1f,0xb9,0x23,0xd7,0x35,0xd5,0x82,0xa7,0x7a,0xa8,0xf9,0x4e,
+ 0x2e,0xc7,0x28,0x65,0xd3,0xd7,0xa1,0xe3,0xda,0x8e,0x3e,0xd2,0xd8,0xe7,0x15,0x9f,
+ 0x90,0x4d,0x59,0xbd,0x60,0xd7,0x0c,0xdd,0xf3,0x55,0x72,0x6b,0xf4,0x6a,0x5a,0x45,
+ 0x1f,0xc2,0xf8,0xd9,0x73,0x57,0x9b,0xf3,0x17,0x85,0xf7,0xa7,0xae,0x09,0x04,0x77,
+ 0xa8,0xa9,0xe9,0x80,0xc3,0xdb,0xf5,0xad,0x4e,0x55,0xb9,0xf6,0xff,0x00,0xec,0x8f,
+ 0xe1,0x6b,0x6d,0x77,0xc6,0x30,0xdc,0x5f,0x20,0x6b,0x5b,0x15,0xfb,0x4c,0xc0,0x8e,
+ 0x08,0x5e,0x15,0x4f,0xfb,0xcd,0xfc,0xab,0xf6,0x63,0x5e,0xf0,0x5d,0xff,0x00,0xc5,
+ 0x1f,0x07,0xa5,0xac,0x17,0x31,0xd8,0xda,0xd8,0xc8,0x92,0x41,0x2c,0x83,0x11,0xef,
+ 0xc1,0x4d,0xbc,0x73,0xce,0x71,0xc7,0x4a,0xfc,0xbf,0xfd,0x8b,0xfc,0x3f,0x24,0xfa,
+ 0x6d,0xd5,0xce,0x0a,0x8b,0xdb,0x84,0x89,0x9c,0xff,0x00,0x0c,0x51,0x0d,0xcc,0x4f,
+ 0xb6,0x4f,0x35,0xfa,0x2b,0xab,0xeb,0x53,0xeb,0x76,0xb2,0xe8,0x7a,0x5d,0xc3,0xc7,
+ 0xa7,0xa2,0x98,0x6d,0xf6,0x31,0x40,0x70,0x3f,0xd6,0x1c,0x60,0x92,0x4f,0x23,0x3d,
+ 0x06,0x31,0x5f,0xa5,0xe5,0xb0,0xa7,0x86,0xc9,0xa3,0xcf,0x1b,0xf3,0xfe,0x3d,0xbf,
+ 0x0b,0x1f,0xb7,0xf0,0xe5,0x09,0x42,0x8d,0x09,0xc5,0xd9,0xad,0x7d,0x0f,0x92,0x75,
+ 0xcd,0x36,0xf3,0xc3,0xda,0xcd,0xee,0x89,0x7f,0xb7,0xcf,0xb2,0x95,0xa2,0x72,0x87,
+ 0x2a,0x48,0xee,0xa7,0xb8,0x23,0x91,0x5b,0x5e,0x0e,0xf0,0x2e,0xbb,0xe3,0x3d,0x56,
+ 0x3b,0x4d,0x2a,0x06,0x97,0x71,0xe4,0x81,0xc2,0x83,0xdd,0x8f,0x40,0x2a,0xee,0x9d,
+ 0xe0,0x7d,0x7f,0x56,0xf1,0x82,0xe8,0x97,0xca,0xe6,0x56,0x60,0x5e,0x57,0xcb,0x0d,
+ 0x83,0x8d,0xdb,0x8f,0x51,0x8e,0x9f,0x95,0x7d,0xe7,0xe1,0x2b,0x0d,0x2f,0xc1,0x76,
+ 0x91,0x69,0xba,0x64,0x20,0x6d,0x00,0xc8,0xc0,0x7c,0xf2,0xbf,0xa9,0x3f,0xc8,0x76,
+ 0xac,0x32,0xac,0xaa,0x78,0xc4,0xe4,0xf4,0x8a,0xfe,0xac,0x7e,0x8f,0x9a,0xe6,0x8b,
+ 0x0f,0x08,0xf2,0x3b,0xc9,0xaf,0xe9,0x9e,0x70,0x9f,0x0a,0xbc,0x59,0xf0,0xe7,0x45,
+ 0x3a,0x9e,0x99,0xa5,0x2d,0xe4,0xa8,0x85,0xa4,0xb9,0x56,0x0f,0xe5,0xe0,0x64,0xe1,
+ 0x07,0x39,0x1e,0xbc,0xd7,0x8a,0x4b,0xab,0xcf,0x79,0x71,0x2c,0xf7,0x72,0xb4,0x92,
+ 0xca,0x49,0x62,0xdd,0x4d,0x7e,0x82,0x59,0xeb,0xfa,0xc5,0xdd,0x93,0xc7,0x02,0xc1,
+ 0x99,0x32,0xa2,0x36,0x75,0x27,0x6f,0x4e,0x79,0x3f,0xca,0xbe,0x3b,0xf8,0x93,0xf0,
+ 0xcf,0xc5,0x7a,0x65,0xcd,0xdf,0x8a,0x57,0x4d,0x44,0xd3,0x9d,0x8b,0x48,0x6d,0x9c,
+ 0x48,0x23,0x27,0xab,0x32,0x8e,0x54,0x1f,0xca,0x96,0x73,0x82,0xaf,0x46,0x09,0x73,
+ 0x7b,0xab,0xa2,0x3c,0xec,0x8b,0x1f,0x1a,0x95,0xa4,0xb1,0x56,0xe6,0x7b,0x3e,0xbe,
+ 0x9a,0xfe,0x87,0x8e,0x5c,0xb0,0x69,0xdd,0xc8,0xc8,0xf5,0xab,0xd6,0x1a,0x91,0x84,
+ 0xaa,0xa9,0xc5,0x61,0x92,0xd2,0x97,0xc0,0xc9,0x27,0xf3,0xaf,0x7f,0xf8,0x6f,0xe0,
+ 0x0d,0x22,0xca,0x25,0xd6,0x3c,0x53,0x18,0xb9,0x99,0x86,0xf8,0xad,0x5f,0xfd,0x5a,
+ 0x67,0x91,0xe6,0x0f,0xe2,0x6f,0xf6,0x7a,0x0e,0xf5,0xe3,0xe0,0x72,0xda,0xd8,0x9a,
+ 0x8a,0x14,0x91,0xf5,0x18,0xec,0xc7,0x0f,0x83,0xa7,0xcf,0x59,0xfc,0xbb,0x99,0xda,
+ 0x3d,0xde,0xac,0xd6,0xcd,0x77,0x04,0x72,0xac,0x7f,0xc3,0x28,0x04,0x2e,0xee,0xc0,
+ 0x1e,0xe7,0xe9,0x5d,0x7f,0xc3,0xad,0x02,0xf2,0x0b,0xb7,0xbb,0xd4,0x17,0xed,0x29,
+ 0x70,0xfe,0x5c,0xd1,0x48,0x37,0x24,0xa8,0xc4,0x97,0x0e,0x0f,0x07,0x24,0xd7,0x5d,
+ 0xab,0xc9,0x1d,0xeb,0x43,0x6e,0x10,0x44,0x80,0xfe,0xed,0x50,0x61,0x54,0x7b,0x28,
+ 0xc0,0x18,0xc7,0x15,0xd6,0xe9,0x8f,0x6f,0x63,0x66,0xbc,0x63,0xb9,0xf5,0x25,0x7a,
+ 0x57,0xe9,0x19,0x4e,0x51,0x0c,0x35,0x27,0x19,0xbe,0x66,0xcf,0xce,0xf3,0x1c,0xe5,
+ 0xd6,0x97,0x34,0x23,0x64,0x69,0xcf,0xf0,0x67,0xc2,0x2e,0xed,0xaa,0x68,0x56,0xa2,
+ 0x19,0x82,0x86,0xfb,0x14,0x92,0x13,0x0b,0x9e,0xfb,0x09,0xc9,0x5f,0xa6,0x71,0xe9,
+ 0x8a,0xf3,0x4d,0x5a,0xdb,0xc1,0x37,0x2d,0x2e,0x95,0x7b,0xa4,0x0b,0x6b,0x98,0xce,
+ 0xd6,0x03,0x28,0xca,0x47,0xb5,0x7a,0xf5,0xae,0xb5,0x32,0x85,0x70,0x79,0x07,0xa7,
+ 0xf9,0xff,0x00,0x22,0xb9,0xef,0x19,0xe9,0x96,0xfe,0x23,0x51,0xac,0xdb,0x45,0x8b,
+ 0xeb,0x58,0xc8,0x97,0x18,0x1e,0x6c,0x63,0x90,0x47,0xab,0x2d,0x79,0x39,0x9e,0x47,
+ 0x5a,0xdc,0xd4,0xa5,0x65,0xe8,0x85,0x97,0x66,0xd2,0x75,0x39,0x6b,0xb7,0x2e,0xd7,
+ 0x7a,0xa3,0xe6,0x6d,0x67,0xc0,0xd6,0xb1,0xbb,0x4f,0xa2,0x5c,0xec,0xea,0x56,0x39,
+ 0x7f,0x90,0x61,0xfd,0x6b,0xcf,0xa4,0xbe,0xbf,0xd3,0xe6,0x7b,0x6b,0xcc,0xa3,0x29,
+ 0xe8,0x7f,0xa1,0xef,0x5e,0xa1,0xaf,0x5d,0x11,0x16,0x63,0x6e,0x40,0xaf,0x32,0x9e,
+ 0xce,0xf3,0x58,0xb8,0x58,0xad,0xe3,0x79,0xa6,0x3c,0x05,0x50,0x58,0xfe,0x18,0xaf,
+ 0x8d,0xc5,0x61,0x6b,0x26,0xa2,0xd5,0xdf,0x91,0xfa,0x26,0x5b,0x5e,0x2e,0x2d,0xce,
+ 0x5a,0x79,0x9a,0x4b,0x63,0x73,0xaf,0x46,0xab,0x69,0x03,0xdc,0x4c,0xe7,0x6a,0xa4,
+ 0x6a,0x59,0xd8,0xfb,0x01,0xd6,0xb9,0xad,0x6a,0xcb,0x54,0xd0,0x9e,0x2b,0x5d,0x4a,
+ 0xda,0x7b,0x63,0x9f,0x94,0x4f,0x1b,0xc6,0x4f,0xb0,0xdc,0x06,0x6b,0xea,0x8f,0x85,
+ 0x1e,0x17,0xb9,0xf0,0xb5,0xe4,0x1a,0x86,0xa3,0xb0,0xce,0x53,0x28,0x17,0xe6,0x54,
+ 0x2d,0xd3,0x27,0xd7,0xf9,0x57,0xd4,0x17,0xfa,0x9e,0x95,0xad,0xd8,0x36,0x97,0xe2,
+ 0x3b,0x2b,0x6b,0xf8,0xa4,0xeb,0x1d,0xc4,0x49,0x22,0xfe,0x19,0x07,0xf4,0xaf,0x56,
+ 0x97,0x0f,0x62,0x55,0x38,0xd4,0x92,0xd5,0xf4,0x3e,0x57,0x1d,0xc5,0xd1,0xa1,0x8b,
+ 0x74,0xe9,0xc1,0x4e,0x3e,0xb6,0xfb,0xb4,0x67,0xe7,0xdf,0x80,0x35,0x03,0x70,0xd3,
+ 0x69,0xc4,0x8c,0xdc,0x26,0xd4,0xcf,0x69,0x17,0xe6,0x41,0xf8,0x9e,0x2b,0x6f,0x5a,
+ 0x98,0xba,0x72,0x39,0xe7,0x23,0xd0,0xf7,0xae,0xcb,0xe2,0x77,0xc2,0xc8,0x3c,0x2f,
+ 0x75,0x1f,0x88,0xfc,0x00,0x18,0xda,0xcb,0x34,0x62,0x5b,0x24,0x25,0xde,0xdd,0xd8,
+ 0xe1,0x4c,0x7d,0x49,0x52,0xdc,0x60,0xfd,0xd3,0xed,0xd3,0xbf,0xf0,0x8f,0x81,0xfc,
+ 0x3f,0xae,0xc0,0x75,0x4f,0x13,0x45,0x32,0xcf,0x27,0xcb,0x25,0x98,0x63,0x16,0xc9,
+ 0x07,0xdf,0xdc,0x47,0x3c,0x9e,0x40,0xe2,0xbd,0x1c,0x2d,0x1a,0xd1,0x8b,0xa2,0xe3,
+ 0xb1,0x86,0x23,0x1d,0x41,0xcb,0xeb,0xb0,0xf8,0x65,0xd3,0xaa,0x67,0xc6,0x5a,0xc3,
+ 0x63,0x76,0x46,0x7a,0xd7,0x92,0x6b,0x13,0x2a,0xb1,0x5c,0x9f,0xf0,0xaf,0xd4,0x9b,
+ 0xef,0x84,0x7f,0x09,0xb5,0x1c,0xb3,0x69,0xb3,0x46,0x43,0x0e,0x22,0xb9,0x93,0x07,
+ 0x1d,0x77,0x06,0x27,0xaf,0x7a,0xf0,0x1f,0x88,0x3f,0xb2,0xac,0x37,0xd1,0x5c,0x6a,
+ 0x5f,0x0f,0xf5,0x2d,0xf2,0x22,0xbc,0x82,0xc2,0xf0,0x05,0x2c,0x73,0x90,0x91,0xc9,
+ 0x9e,0x30,0xbc,0x0d,0xc0,0xf4,0x19,0x3c,0xe6,0xb1,0xc6,0xe1,0xb1,0x0a,0x0d,0xa8,
+ 0x9a,0x61,0xf8,0x83,0x09,0x57,0xdd,0xd5,0x7a,0xff,0x00,0xc0,0xb9,0xf0,0x79,0x63,
+ 0x82,0x6b,0xca,0x3e,0x21,0x5d,0x6d,0xd3,0xa6,0x04,0xe3,0xe5,0x35,0xec,0x5a,0xae,
+ 0x93,0xa8,0x68,0xb7,0x73,0xe9,0xda,0xad,0xbc,0x96,0xb7,0x56,0xcc,0x52,0x58,0xa4,
+ 0x1b,0x5d,0x18,0x76,0x20,0xfe,0x87,0xa1,0xed,0x5e,0x09,0xf1,0x33,0xcd,0x3a,0x6c,
+ 0xcc,0xbc,0x64,0x1e,0x95,0xf2,0xb9,0x8d,0x4f,0x67,0x45,0xf3,0x1c,0x19,0xbd,0x55,
+ 0x1a,0x13,0x97,0x91,0xf1,0x1e,0xa8,0x4b,0x5f,0x4e,0x47,0xf7,0xcd,0x41,0x67,0x19,
+ 0x96,0x74,0x50,0x7a,0x9a,0x7d,0xec,0x52,0x24,0xee,0x5c,0x1f,0x98,0x93,0xcd,0x6a,
+ 0xf8,0x6a,0xcd,0xae,0x75,0x08,0xc0,0x1f,0xc4,0x2b,0xe5,0x2b,0xd6,0x50,0xa1,0x29,
+ 0xdf,0x64,0x7f,0x3d,0x38,0xfb,0x4a,0xfc,0xab,0xab,0x3e,0xcc,0xf8,0x1d,0xa3,0x91,
+ 0x3c,0x0c,0x57,0xb8,0xff,0x00,0x3c,0x57,0xea,0x87,0x82,0x10,0x41,0x65,0x1a,0xe3,
+ 0x19,0x02,0xbe,0x0d,0xf8,0x23,0xa0,0x6d,0x58,0x5c,0xaf,0xa5,0x7e,0x80,0xf8,0x7e,
+ 0x03,0x1c,0x51,0xa0,0x04,0x0c,0x57,0xf1,0x47,0x88,0xb9,0x82,0xc4,0xe3,0xa7,0xa9,
+ 0xfb,0x96,0x4b,0x85,0xf6,0x58,0x68,0xa3,0xd6,0x34,0xc7,0x24,0x2e,0x3b,0x57,0x5d,
+ 0x6e,0x4e,0xde,0x6b,0x94,0xd2,0x60,0x66,0x55,0xcd,0x76,0x50,0xc7,0xb1,0x00,0x3f,
+ 0x8d,0x7e,0x59,0x29,0x5c,0xf6,0x62,0xac,0xc5,0x30,0xf3,0x9a,0x9e,0x28,0x63,0xcf,
+ 0x3c,0x55,0x77,0x71,0xeb,0x50,0x3d,0xd3,0xa7,0x43,0x58,0x42,0x85,0x3b,0xdd,0x9b,
+ 0x4a,0xb4,0xfa,0x1b,0xc2,0xce,0x06,0x5e,0xbc,0xd6,0x4d,0xc6,0x96,0x18,0x92,0xbf,
+ 0xa5,0x50,0x3a,0x8d,0xc6,0xec,0x2f,0x4c,0xd6,0xc5,0xa5,0xc3,0x30,0xcb,0x71,0x45,
+ 0x5c,0x3d,0x09,0xe8,0x95,0x87,0x4f,0x11,0x52,0x3e,0xf3,0x39,0xc9,0x21,0x9a,0xd5,
+ 0xb0,0xc3,0x8f,0x5a,0x96,0x39,0xb3,0xd4,0xd7,0x69,0xf6,0x38,0xae,0xd3,0x38,0xe6,
+ 0xb9,0xcb,0xbd,0x26,0x48,0x5c,0x94,0x1c,0x57,0x97,0x8c,0xcb,0x67,0x4f,0xde,0x5a,
+ 0xa3,0xd1,0xc3,0xe3,0x61,0x3d,0x25,0xb9,0x0c,0x6d,0x9e,0x95,0x7e,0x18,0x8b,0x1e,
+ 0x95,0x0d,0xad,0xb3,0x16,0x01,0x81,0x04,0x56,0xf4,0x50,0x84,0x03,0x34,0xb0,0x78,
+ 0x6b,0xea,0xf6,0x23,0x15,0x88,0x4b,0x44,0x7f,0xff,0xd0,0xe3,0x21,0xbe,0x6d,0xe4,
+ 0x67,0x19,0x34,0xb7,0x78,0x9d,0x39,0xe4,0x11,0xcd,0x62,0x43,0x26,0x64,0xc9,0x3d,
+ 0xfa,0x56,0xa1,0x90,0x6d,0xce,0x7f,0x3a,0xf8,0xac,0x7c,0x39,0xe0,0xd1,0xfe,0x9c,
+ 0x61,0x25,0xca,0xca,0x11,0x59,0x44,0x8f,0x92,0x3a,0xfe,0x35,0xb3,0xf6,0x88,0xa0,
+ 0x8f,0x19,0xed,0x9a,0xc1,0x9e,0xf3,0xcb,0x1c,0x9c,0x62,0xb9,0xeb,0xbd,0x4f,0x3f,
+ 0x28,0x27,0x35,0xe6,0x61,0xe5,0x18,0xc2,0xc8,0xde,0xb4,0x65,0x39,0x5c,0xde,0xbf,
+ 0xd6,0xc4,0x45,0x82,0x9a,0xc3,0x5d,0x7e,0x77,0x7d,0xa1,0xf8,0xcd,0x73,0xf3,0xca,
+ 0xd3,0x37,0x3c,0xd4,0x70,0x44,0xd9,0x18,0xef,0xc5,0x53,0xbc,0x99,0x50,0x8a,0x89,
+ 0xdb,0x47,0x30,0xba,0x4f,0x98,0x83,0x5c,0xc6,0xbb,0xa3,0xc7,0x2c,0x44,0xa8,0x19,
+ 0x39,0xad,0x3b,0x5d,0xe9,0x8c,0x55,0xe9,0xff,0x00,0x7a,0xb8,0x3d,0x87,0xf9,0xe2,
+ 0xbc,0x7c,0x5c,0x65,0x4e,0xaf,0x32,0x0c,0x46,0x0e,0x96,0x2a,0x8b,0xa7,0x34,0x78,
+ 0x04,0x9e,0x11,0xdf,0x7a,0x24,0x0b,0xdf,0x91,0x8a,0xf6,0x4f,0x0e,0xe8,0x31,0xc3,
+ 0x00,0xca,0xe7,0x8e,0x46,0x3a,0x55,0xe8,0xac,0x61,0x66,0xce,0x39,0xf5,0xae,0xa6,
+ 0xdf,0x52,0xd2,0xb4,0xeb,0x71,0x0b,0x28,0x69,0x1c,0x63,0x19,0xe9,0xf8,0x0a,0xf6,
+ 0xbe,0xbc,0xdd,0x35,0x2a,0x8f,0x44,0x7c,0x46,0x4d,0xc0,0x98,0x6c,0x1e,0x26,0x75,
+ 0x68,0xc3,0x56,0x79,0xaf,0x8b,0x2d,0xed,0xe1,0x81,0x95,0x54,0x64,0x82,0x2b,0xe4,
+ 0xdf,0x12,0x47,0x8b,0x97,0x0b,0xc0,0xcd,0x7d,0x65,0xe3,0x18,0x9b,0x69,0x99,0x79,
+ 0x46,0x19,0x07,0xaf,0x15,0xf2,0xff,0x00,0x88,0xa2,0xcd,0xc1,0x6f,0x7c,0xfd,0x6b,
+ 0x7c,0xb2,0xa7,0x3e,0x21,0x48,0xfc,0x8f,0xc7,0x3b,0x51,0xc1,0xfb,0x3b,0x59,0x9c,
+ 0x6c,0x09,0xf3,0x73,0x5d,0x55,0x9a,0x63,0x19,0xeb,0xc5,0x61,0x47,0x19,0xce,0x6b,
+ 0x76,0xd3,0x77,0x5a,0xfa,0xbc,0x74,0xed,0x4e,0xe7,0xf2,0x5b,0x95,0xb7,0x3a,0x7b,
+ 0x6d,0x98,0xc6,0x7b,0x1a,0xc2,0xd5,0xf9,0x46,0x03,0xf0,0xf7,0xad,0x58,0x88,0xdb,
+ 0x9e,0xd5,0x9b,0xa9,0x65,0x90,0x90,0x2b,0xe5,0x25,0x3b,0xcc,0x7b,0x9e,0x53,0x7f,
+ 0x06,0x64,0x3e,0xf9,0xad,0x4d,0x1e,0xc8,0x96,0x0c,0x7a,0xfb,0x54,0xb7,0x56,0xd9,
+ 0x97,0xd4,0x9a,0xe8,0x74,0x6b,0x5f,0x9c,0x64,0x1e,0x3d,0xab,0xd1,0x8c,0xbd,0xcd,
+ 0x46,0xd9,0xd8,0xe9,0x76,0x0a,0x63,0x1f,0xa5,0x6c,0xcd,0x6a,0x22,0x88,0x9c,0x73,
+ 0x5a,0xda,0x4d,0x89,0x64,0x0d,0x8e,0x98,0xe2,0xae,0xea,0x10,0x08,0xd1,0xb2,0x3b,
+ 0x57,0x02,0xa6,0x9c,0xb5,0x0e,0x63,0xc7,0xf5,0x34,0xda,0xe7,0x6e,0x2a,0x4d,0x1e,
+ 0x46,0x59,0x83,0x67,0x1c,0xd3,0xf5,0x72,0x15,0xd8,0x77,0xaa,0x9a,0x4b,0x13,0x38,
+ 0x00,0x67,0x9f,0xd2,0xbb,0x15,0x15,0xcb,0xa0,0x5d,0xa3,0xdd,0xf4,0xab,0xe9,0x05,
+ 0xb0,0x19,0xc7,0x02,0xb9,0x3f,0x13,0x6a,0xf2,0x6d,0x61,0xbb,0xaf,0x15,0x72,0xde,
+ 0x72,0x96,0xb9,0xce,0x38,0xae,0x23,0x5a,0x73,0x21,0x6c,0xfb,0xf5,0xae,0x37,0x46,
+ 0x37,0xd4,0xb8,0xcd,0xad,0x51,0xc0,0xdd,0x5c,0xcd,0x2d,0xc9,0x24,0x9e,0xbf,0x9d,
+ 0x6d,0x5a,0x48,0xc6,0x30,0x5f,0x93,0xdf,0xe9,0x59,0x52,0x42,0x0c,0xa5,0xbd,0x4d,
+ 0x6b,0x5b,0xc6,0x11,0x33,0xfa,0x9a,0xe5,0xcc,0x30,0xca,0x29,0x4a,0x27,0xf4,0x2f,
+ 0x85,0xdc,0x51,0xcb,0x6c,0x3c,0xe4,0x6a,0x24,0xa4,0x63,0xff,0x00,0xd7,0x4e,0x32,
+ 0x8e,0xa2,0xb3,0x84,0x98,0x24,0xd3,0x8c,0x87,0xbd,0x79,0x51,0x82,0xb9,0xfd,0x05,
+ 0xfd,0xa0,0x9c,0x6d,0x72,0xef,0x99,0xc6,0x0f,0x4a,0x42,0xe4,0xf1,0x9e,0xbd,0xaa,
+ 0x88,0x93,0x1d,0x0f,0x4a,0x7e,0xfc,0xf3,0x56,0xd5,0x8e,0x59,0xe2,0xae,0x4a,0x5f,
+ 0x03,0x19,0xa6,0x19,0x08,0x18,0x1f,0x9d,0x44,0xcd,0xc7,0xa1,0x1d,0xea,0x02,0xc0,
+ 0x1a,0xd1,0x32,0x21,0x89,0x77,0xd4,0xb6,0x24,0xea,0x3f,0x1a,0xb9,0x1c,0xc7,0x1e,
+ 0xb5,0x8e,0xcd,0x8e,0x86,0x84,0x9b,0x07,0x8a,0xb8,0x49,0xec,0x6a,0xf1,0x16,0x36,
+ 0xda,0x40,0x46,0x33,0xd2,0x99,0xbf,0x1d,0x2b,0x3d,0x67,0xc1,0x1c,0x8e,0x69,0xe5,
+ 0xce,0x32,0x3a,0x56,0x8c,0x23,0x8a,0x4b,0x76,0x3e,0x69,0x38,0xce,0x41,0x35,0x83,
+ 0x76,0x39,0x24,0x74,0xad,0x17,0x62,0x4f,0x1c,0x55,0x09,0xd4,0xb1,0xae,0x66,0xb5,
+ 0x37,0x96,0x26,0x2e,0x37,0x66,0x79,0x93,0x6a,0x92,0x7f,0x5f,0x6a,0xe3,0xb5,0xdb,
+ 0xaf,0x90,0x80,0xde,0xb5,0xd2,0x5e,0xc8,0x62,0x43,0xec,0x2b,0xcd,0x35,0x9b,0xbd,
+ 0xe4,0x8c,0xfe,0x55,0xed,0x65,0x34,0x39,0xa6,0x99,0xf9,0x57,0x88,0xb9,0xdc,0x29,
+ 0xe0,0xe5,0x04,0xce,0x5e,0x66,0x2f,0x21,0x62,0x7a,0xfe,0x75,0x18,0xa0,0x9c,0xf3,
+ 0xeb,0xda,0x8a,0xfb,0x64,0xb4,0x47,0xf2,0x94,0xe7,0xcd,0x27,0x26,0x1f,0x53,0xcd,
+ 0x49,0x12,0x97,0x95,0x53,0xa9,0x26,0xa3,0xae,0xef,0xe1,0xcf,0x86,0xdb,0xc4,0xfe,
+ 0x2c,0xd3,0xf4,0x9c,0x12,0x93,0x4c,0xbe,0x61,0x03,0xa4,0x63,0xe6,0x73,0xf9,0x0c,
+ 0x7d,0x4d,0x6b,0x4a,0x9c,0xaa,0x4d,0x42,0x3b,0xb3,0x6c,0x26,0x1e,0x55,0xeb,0x42,
+ 0x94,0x37,0x6c,0xfd,0x3d,0xfd,0x9a,0xe5,0x93,0xc2,0x9f,0x0c,0x2c,0x63,0x28,0x52,
+ 0xf3,0x59,0x32,0x88,0xf2,0x3e,0xec,0x0e,0x73,0x23,0xfd,0x4a,0xe0,0x0f,0xad,0x7d,
+ 0x41,0xa2,0xde,0x18,0xc0,0x1d,0x30,0x3f,0x4a,0xf0,0x7d,0x2d,0xed,0x93,0x57,0xb3,
+ 0xd3,0xec,0xd3,0x6c,0x5a,0x65,0x92,0xc3,0xb7,0xa0,0x05,0x8e,0x78,0x1f,0x42,0x2b,
+ 0xb9,0xba,0xd5,0x0d,0x95,0xb8,0x48,0xdb,0xf7,0xd2,0x1d,0xaa,0x2b,0xf4,0xec,0x46,
+ 0x1f,0xf7,0x70,0xc3,0xc7,0x68,0xa4,0x8f,0xe8,0x9c,0xbb,0x05,0x1a,0x70,0x85,0x35,
+ 0xdb,0xf2,0x3e,0x8f,0xf0,0xed,0xfd,0xbc,0xce,0xfa,0x86,0x15,0x7e,0xce,0xa4,0x19,
+ 0x31,0xd4,0x2f,0x38,0x2d,0xe9,0x5e,0x45,0x71,0xf1,0x46,0xfb,0x51,0xf1,0x24,0xd7,
+ 0x50,0x33,0x7d,0x9f,0x79,0x8e,0x18,0xc1,0xc0,0x08,0x0e,0x37,0x1f,0x76,0xc6,0x7e,
+ 0x94,0xcd,0x4b,0x55,0x9f,0x4f,0xf0,0x8c,0x1a,0x65,0xb9,0x2b,0x25,0xc6,0x7c,0xc2,
+ 0x0f,0x3b,0x40,0xcb,0x73,0xee,0x70,0x2b,0xcb,0xb4,0x60,0x23,0xb8,0xd8,0xb9,0xf3,
+ 0x19,0xb3,0xcf,0x5f,0xc3,0xde,0xbe,0xa2,0x84,0x3d,0x8d,0x38,0x50,0x8e,0xc8,0xee,
+ 0xa7,0x86,0x8c,0xa5,0x29,0xc9,0x5f,0xa2,0x3e,0xad,0xd0,0x3c,0x41,0x3c,0xa5,0x6e,
+ 0xda,0x4f,0x27,0x9c,0xf5,0xc0,0xcf,0x71,0xef,0x5e,0xed,0xa4,0x78,0x84,0xdc,0x5a,
+ 0x30,0x69,0x41,0x59,0x06,0xcd,0x8c,0x32,0xac,0xbd,0xc1,0xc8,0xc6,0x3e,0xb5,0xf2,
+ 0x3e,0x97,0x3a,0xba,0x21,0x95,0xc6,0x62,0xc2,0xe7,0x1c,0x8c,0x9e,0x80,0x77,0xf6,
+ 0xef,0x5e,0x97,0x75,0xae,0x4d,0xa3,0xe9,0x90,0xda,0x16,0x6d,0xd3,0x65,0xbc,0xb1,
+ 0xc6,0x09,0x1c,0x67,0xf0,0xae,0x9a,0x95,0x23,0xcb,0x6a,0x8a,0xfe,0x47,0xcf,0x63,
+ 0x70,0xd2,0x9d,0x45,0xc8,0xed,0xfa,0x17,0x35,0xef,0x09,0x78,0x3a,0x0f,0x12,0xff,
+ 0x00,0x6b,0xe9,0x11,0x85,0x94,0x82,0xd2,0xc0,0xb8,0xfb,0x38,0x97,0x3c,0x3a,0x8e,
+ 0xdf,0xee,0xf4,0xcf,0x35,0x73,0xed,0x91,0x47,0x01,0x25,0xb9,0x2d,0xb4,0x13,0xdc,
+ 0x8e,0x2b,0x88,0x6d,0x52,0x08,0xd7,0xce,0xdf,0x99,0x1b,0x00,0x67,0x8e,0x71,0xc5,
+ 0x47,0xfd,0xa7,0x0f,0x92,0x76,0xe4,0x30,0xc7,0x1d,0x46,0x7b,0x9c,0x1a,0xe6,0xa1,
+ 0x42,0x9d,0x04,0xfd,0x9c,0x6d,0x72,0x6b,0xba,0xb5,0xb9,0x55,0x49,0x37,0x6d,0x8e,
+ 0xad,0xb5,0x46,0xfb,0x69,0x0c,0x78,0x8c,0x05,0x1c,0xfa,0xf3,0x9f,0xe5,0x5a,0x52,
+ 0xf8,0x9a,0x28,0xe1,0x8a,0xdc,0xb6,0xd2,0xf2,0x7f,0x16,0x31,0x85,0xef,0xef,0x5e,
+ 0x4b,0x7b,0xa8,0x3c,0x73,0x47,0x87,0xf9,0x9d,0x77,0x63,0xb7,0xcd,0xd3,0x26,0xb2,
+ 0x6f,0xaf,0xee,0xa6,0x98,0x42,0xfc,0x05,0xc2,0xa0,0x07,0xd3,0x96,0x35,0xa3,0xc4,
+ 0xc6,0x3b,0x9b,0xe1,0x72,0xc7,0x5a,0xcf,0xa1,0xef,0x43,0xc4,0xe3,0xcc,0x11,0xc2,
+ 0xd9,0x40,0x30,0xed,0x9e,0xc3,0xde,0xba,0xad,0x1b,0xc4,0x70,0x4c,0xeb,0x14,0x07,
+ 0xe6,0x1c,0xe7,0x19,0x24,0x1f,0x73,0xc0,0xaf,0x9a,0x22,0x9d,0x91,0x17,0x6b,0xb2,
+ 0xc3,0x80,0x4e,0x39,0x2e,0x7d,0xab,0xa5,0xb1,0xd6,0x99,0x66,0x8d,0xa0,0xf9,0x14,
+ 0x10,0x39,0xfb,0xa3,0xff,0x00,0xaf,0x5d,0x54,0x31,0x31,0x9a,0xd7,0x62,0x31,0x39,
+ 0x3c,0xa1,0xf0,0x9e,0x95,0xaa,0xf8,0x43,0x4a,0xd5,0x75,0x87,0x93,0x7b,0xc4,0x8f,
+ 0x97,0x78,0xd3,0x90,0xc4,0x9e,0x76,0x37,0x6f,0x53,0xd7,0xda,0xbb,0x0d,0x17,0xc3,
+ 0xf6,0x9a,0x3c,0x65,0x74,0xc8,0x16,0x10,0x46,0xd9,0x18,0x0f,0x99,0x87,0x7d,0xcd,
+ 0xd7,0x06,0xb8,0xdb,0x5d,0x56,0x6b,0x89,0xa1,0x9e,0x12,0x24,0x31,0x70,0xcc,0x4f,
+ 0x18,0x3d,0xbf,0x1f,0x6a,0xee,0x2f,0xbc,0x5e,0x4d,0xb2,0xc5,0xb3,0x09,0x12,0xf0,
+ 0xa7,0xef,0x0e,0x39,0x53,0x8f,0xcc,0x57,0x22,0xa3,0x46,0x8c,0xdc,0x94,0x0e,0x6c,
+ 0x6e,0x27,0x19,0x52,0x9c,0x29,0xc1,0xdd,0x3d,0x1a,0x2d,0xce,0x20,0xb0,0xb5,0xf3,
+ 0x41,0x07,0x61,0x3b,0x0e,0x72,0x09,0x3f,0xe7,0xad,0x71,0x9f,0xf0,0x99,0x79,0xf3,
+ 0xb7,0xce,0x77,0x44,0x49,0xc7,0x4c,0x8a,0xe4,0xf5,0xbf,0x15,0xca,0x85,0xe0,0xb7,
+ 0x38,0x88,0x8c,0xe3,0xae,0x7b,0xfe,0x15,0xe6,0xed,0xaa,0x6f,0x98,0x96,0x23,0x39,
+ 0x20,0xe3,0xb8,0x6e,0xff,0x00,0x9d,0x74,0xc2,0xbc,0x5b,0xba,0x0c,0x1e,0x55,0x24,
+ 0x9c,0xaa,0x2d,0x4f,0x79,0xb2,0xd7,0x2e,0xda,0x58,0x24,0x47,0xcb,0x5c,0xce,0xb1,
+ 0xaf,0x7e,0x09,0xdc,0x71,0x5d,0x15,0xa6,0xa1,0xb2,0x6d,0x5c,0xbb,0x03,0xfb,0xd0,
+ 0xf9,0x3d,0x72,0x46,0x09,0xfd,0x2b,0xc9,0x7c,0x2f,0x74,0xf1,0xea,0x1a,0x6c,0x12,
+ 0x37,0x99,0x1a,0xab,0x4d,0xc0,0xe5,0x58,0x1c,0x03,0x5b,0xe7,0x55,0x54,0xbb,0xbe,
+ 0x90,0x2e,0x4c,0x91,0xab,0x0c,0xe0,0x67,0x39,0xc5,0x5f,0x34,0x39,0xb9,0x98,0xab,
+ 0xa6,0xef,0x4d,0x6c,0x75,0x71,0x78,0xa6,0x1b,0x6d,0x40,0x09,0x59,0x42,0x92,0x00,
+ 0x5c,0x9e,0x73,0xde,0xb7,0x5f,0x5f,0x17,0x20,0x0b,0x66,0xe4,0xf0,0x31,0xe9,0xeb,
+ 0xf8,0xd7,0xcf,0x77,0xa6,0x4f,0x3d,0x27,0x57,0x39,0x52,0x73,0x8f,0xe9,0x5d,0xa6,
+ 0x93,0xa9,0x18,0xd1,0x5b,0x6f,0x1d,0x71,0xcf,0xcc,0x7d,0x49,0xac,0xe7,0x88,0x83,
+ 0x7a,0x9c,0xf5,0xf2,0xe9,0xf2,0xa9,0x53,0x0f,0x8b,0x3f,0x0e,0xac,0xfe,0x22,0xe8,
+ 0xbb,0xd5,0x52,0x3d,0x66,0xd2,0x3f,0xf4,0x4b,0xae,0x9b,0xf1,0xc9,0x86,0x52,0x3a,
+ 0xab,0x1e,0x84,0xe4,0xa9,0xe4,0x77,0xaf,0xca,0xcf,0x88,0x7e,0x18,0xbc,0xb7,0x86,
+ 0xef,0x4e,0xbe,0x85,0xa1,0xb9,0xb7,0x66,0x8e,0x58,0xdc,0x61,0x95,0x97,0xa8,0x3f,
+ 0xe7,0x9e,0xd5,0xfb,0x0c,0xba,0x83,0xcb,0x08,0xc7,0xca,0xaa,0x79,0x19,0xc7,0xff,
+ 0x00,0xae,0xbe,0x60,0xfd,0xa1,0x7c,0x17,0x6f,0xae,0x69,0x2f,0xe2,0x8b,0x68,0xc2,
+ 0xdd,0x5b,0x00,0x97,0x4a,0xa3,0x99,0x21,0x1d,0x1c,0xfb,0xc7,0xff,0x00,0xa0,0xfd,
+ 0x2b,0xf3,0xee,0x38,0xca,0x5d,0x5c,0x14,0xf1,0x18,0x55,0xef,0x45,0x5e,0xdd,0xd1,
+ 0xc7,0x88,0xc5,0x55,0xfa,0xad,0x4a,0x32,0xd4,0xfc,0x43,0xf1,0x4f,0x87,0x9a,0xd6,
+ 0x36,0x7d,0xa4,0x10,0x6a,0xdf,0xc3,0x3d,0x20,0xdd,0x6a,0x51,0xee,0x5e,0x37,0x57,
+ 0xb1,0x7c,0x43,0xd1,0xd0,0x46,0xc9,0x1a,0x8e,0xb5,0x5f,0xe1,0x6e,0x82,0x63,0xd4,
+ 0xe3,0xca,0xf1,0xb8,0x57,0xf3,0xee,0x6f,0x9b,0x72,0x65,0x75,0x24,0xd9,0xf9,0xee,
+ 0x4b,0x86,0x8d,0x5c,0x6c,0x2e,0x7e,0x83,0xfc,0x1e,0xf0,0xf6,0xcb,0x58,0x4e,0xde,
+ 0xc2,0xbe,0xbf,0xd2,0x34,0xa2,0x36,0x2e,0x2b,0xc8,0x7e,0x15,0xe9,0xa9,0x15,0x94,
+ 0x38,0x03,0x80,0x2b,0xe9,0xad,0x3a,0xde,0x28,0xd4,0x31,0x1d,0x85,0x7f,0x14,0x67,
+ 0x78,0x97,0x5b,0x15,0x39,0x48,0xfd,0xd6,0x9c,0x39,0x20,0xa2,0x8d,0x5b,0x0b,0x35,
+ 0x86,0x30,0x48,0xed,0x57,0x5d,0xc6,0x30,0x2a,0x8c,0xb7,0xaa,0xa3,0x6a,0x1e,0xdd,
+ 0xaa,0x01,0x72,0x18,0x0c,0x1a,0xf9,0xaa,0xb3,0xd6,0xc8,0xe8,0xa7,0x1b,0xea,0xcb,
+ 0x12,0x39,0x03,0x35,0x54,0xbe,0x4d,0x24,0xaf,0xf2,0x8c,0x54,0x6a,0xc4,0x9a,0x22,
+ 0xd2,0x45,0x72,0x17,0x21,0x40,0x5b,0x38,0xcd,0x5f,0x1f,0x29,0x18,0xe2,0xaa,0x42,
+ 0xa7,0x8a,0x9b,0x77,0xcc,0x41,0xea,0x2b,0x09,0x4a,0xec,0xa7,0x1d,0x2c,0x74,0x56,
+ 0x53,0x6d,0x20,0x1e,0x9e,0xb5,0xb6,0x23,0x8e,0x75,0xc3,0x57,0x31,0x6a,0xdc,0xfa,
+ 0xd6,0xfd,0xbc,0x98,0x00,0x1a,0xef,0xa1,0x89,0xbf,0xbb,0x2d,0x8e,0x0a,0xf4,0x9c,
+ 0x75,0x88,0x8d,0x62,0x89,0xc8,0xfd,0x2a,0xa4,0x83,0xb1,0xad,0xcd,0xc1,0x87,0x35,
+ 0x99,0x71,0x1e,0xd2,0x58,0x56,0x78,0x9a,0x6a,0x1e,0xf4,0x76,0x22,0x8d,0x56,0xdd,
+ 0xa4,0xcf,0xff,0xd1,0xf1,0x88,0x6f,0x30,0xf8,0xcf,0x7e,0xf5,0xac,0xb7,0x25,0xa3,
+ 0x35,0xc7,0x23,0x1d,0xd9,0x15,0xb9,0x09,0xf9,0x06,0x6b,0xe3,0x6a,0x2b,0xa6,0x8f,
+ 0xf4,0xce,0x13,0x5a,0x58,0xa7,0x7f,0x2b,0x63,0x9e,0x95,0xcb,0xcb,0x31,0x12,0x73,
+ 0xd3,0xa5,0x74,0x1a,0x83,0x0c,0x1a,0xe5,0x64,0x7f,0x9a,0xbc,0x18,0x46,0xd5,0x1a,
+ 0x3d,0x47,0x2b,0xc2,0xe5,0xe8,0xd8,0xb1,0xad,0xfb,0x38,0xc1,0xea,0x3f,0xc8,0xae,
+ 0x6e,0xd9,0xba,0x7a,0x66,0xba,0x6b,0x37,0x0a,0xa5,0xbd,0xab,0xd5,0xa1,0x05,0xb9,
+ 0xc1,0x39,0xea,0x6a,0xed,0x54,0x8c,0xd6,0x75,0xcd,0xc0,0x89,0x4b,0x74,0xa9,0x65,
+ 0xb8,0xf9,0x33,0xd3,0xb9,0xcf,0x6a,0xe6,0xa4,0x99,0xf5,0x0b,0xd1,0x6f,0x1f,0xdd,
+ 0xcf,0x5f,0xe7,0x5c,0x78,0xd8,0xa6,0xee,0xd1,0xd3,0x87,0xbf,0x43,0xa0,0xb4,0xbb,
+ 0x02,0xd6,0x5b,0xb9,0x86,0x15,0x47,0xcb,0x5c,0x9a,0x5e,0x79,0xd3,0x34,0xd9,0x24,
+ 0x13,0xc5,0x6b,0x78,0x87,0x50,0x45,0x8a,0x2d,0x07,0x4c,0x4f,0x32,0x56,0xc0,0x21,
+ 0x39,0x3f,0xa5,0x7a,0x4f,0x83,0x3e,0x03,0x78,0x87,0x56,0xb5,0x4d,0x43,0x57,0x99,
+ 0x34,0xf8,0x58,0x06,0x0a,0xfc,0xc8,0x41,0xff,0x00,0x64,0x74,0xaf,0x27,0x11,0x85,
+ 0xaf,0x88,0x92,0xc3,0xe1,0xa3,0xcd,0x6d,0xed,0xfe,0x67,0xb1,0x43,0x17,0x87,0xc2,
+ 0x41,0xd6,0xc4,0x4a,0xd7,0xdb,0xfe,0x18,0xe2,0x6d,0x9a,0x0b,0xfb,0x49,0x2c,0xa7,
+ 0xc6,0xe6,0xfb,0xa4,0xf3,0x83,0x5f,0x38,0xf8,0xdf,0x43,0xb9,0xd2,0xee,0xd8,0x49,
+ 0x1f,0xc8,0x4e,0x01,0xc5,0x7d,0x57,0xf1,0x0f,0xc2,0x1f,0xf0,0x82,0xea,0x90,0xc1,
+ 0x6b,0x3b,0x4f,0x0c,0x8a,0x08,0x72,0x31,0xcf,0x70,0x6b,0xcf,0x7c,0x41,0x6b,0x6d,
+ 0xe2,0x2d,0x2c,0xc7,0x3a,0x83,0x32,0x8e,0x18,0xf7,0xf6,0xff,0x00,0x0a,0x8c,0xb7,
+ 0x1b,0x2c,0x16,0x2b,0xd9,0x62,0x15,0xad,0xa1,0xf9,0xc7,0x8a,0xdc,0x07,0x1e,0x29,
+ 0xca,0x1d,0x6c,0x03,0xfd,0xe2,0x57,0x5e,0x7e,0x47,0xca,0x22,0x3c,0xb6,0x2b,0x6a,
+ 0xd9,0x06,0x00,0x23,0xdb,0x14,0xeb,0xdd,0x2e,0x5b,0x0b,0xc6,0x82,0x41,0x8c,0x64,
+ 0x0f,0x71,0x5a,0x76,0x96,0x8c,0xe4,0x05,0x52,0xc7,0xdb,0xff,0x00,0xad,0x5f,0xa2,
+ 0xe2,0xa7,0x19,0xd2,0x52,0x4f,0x43,0xfc,0xef,0xc7,0x60,0xab,0xe1,0xb1,0x13,0xc3,
+ 0x56,0x83,0x53,0x8b,0xb3,0x5d,0x6e,0x4d,0x0c,0x59,0x03,0xda,0xab,0xde,0xc0,0x59,
+ 0x0f,0x1f,0x4a,0xea,0x22,0xd3,0xa6,0x44,0x25,0xe2,0x60,0x3e,0x86,0xa9,0x5e,0xdb,
+ 0xe2,0x33,0xc7,0x6f,0xff,0x00,0x5d,0x7c,0xf6,0x92,0x96,0x86,0x1e,0xce,0xa4,0x74,
+ 0x94,0x59,0xe6,0x17,0x10,0x11,0x2e,0x4f,0x63,0xc7,0x6a,0xe9,0x34,0x68,0x81,0x75,
+ 0xaa,0x77,0x71,0x7c,0xc7,0x3d,0x3a,0x56,0x9e,0x92,0x76,0x9c,0x70,0x6b,0xbe,0xd6,
+ 0x86,0xa2,0xdf,0x4b,0x1e,0xb3,0xa6,0x91,0x14,0x4a,0x07,0xa0,0xef,0x59,0xfa,0xed,
+ 0xd0,0x8e,0x33,0xcf,0x4e,0xd4,0xb6,0x73,0xa2,0xc5,0xc7,0x04,0x0a,0xe7,0x35,0xeb,
+ 0xad,0xd1,0xb0,0xfc,0xbd,0x73,0x5e,0x7c,0x27,0x79,0x8e,0x2a,0xda,0x1e,0x5b,0xae,
+ 0x5f,0xb3,0xcc,0x40,0xeb,0xfe,0x35,0x7b,0xc3,0xeb,0xf3,0x06,0x3d,0x6b,0x53,0xc3,
+ 0x9e,0x09,0xd5,0x3c,0x65,0xac,0x0b,0x0d,0x3d,0x72,0xec,0x4e,0x33,0xc0,0xfc,0xcf,
+ 0x4a,0xe9,0x35,0xcf,0x04,0xea,0xde,0x05,0xbf,0x16,0x1a,0xbc,0x7b,0x18,0x8e,0x0f,
+ 0xad,0x7a,0xb0,0x9d,0x34,0xb9,0x6f,0xb9,0xea,0xcb,0x21,0xcc,0x1e,0x09,0xe6,0x1e,
+ 0xc5,0xfb,0x25,0xf6,0xad,0xa1,0xa8,0x24,0x0b,0x6f,0xd7,0xb7,0xe1,0x5c,0x4e,0xab,
+ 0x70,0x32,0x79,0xad,0x29,0xef,0x88,0x8b,0x19,0xfc,0x33,0x5c,0x4e,0xa1,0x76,0xce,
+ 0xf8,0xcf,0x26,0xb9,0x66,0xd2,0x67,0x94,0xb6,0x23,0xf3,0x83,0x49,0xe9,0x8a,0xd0,
+ 0x17,0x20,0x26,0xde,0xbf,0xfd,0x7a,0xe5,0x9a,0x71,0x17,0x23,0xef,0xd3,0x52,0xe5,
+ 0x8b,0x8e,0x78,0xae,0x4c,0x42,0xe7,0x56,0x3d,0xec,0x8b,0x32,0x9e,0x13,0x13,0x19,
+ 0xa7,0xa1,0xd4,0x09,0x32,0x06,0x29,0xdb,0x8f,0x4a,0xca,0x86,0x70,0xd8,0xc1,0xab,
+ 0xc1,0xb7,0x7f,0x9c,0xd7,0x9f,0xec,0xad,0xa3,0x3f,0xa8,0xf2,0x3c,0xfa,0x9e,0x2b,
+ 0x0f,0x19,0x73,0x6a,0x4e,0x1f,0x27,0x07,0xff,0x00,0xd5,0x53,0x8e,0x9c,0x63,0xda,
+ 0xa9,0x0e,0xbc,0xfe,0x35,0x6e,0x33,0xd8,0xd4,0xce,0x16,0x5a,0x1f,0x49,0x43,0x10,
+ 0xa4,0xec,0x31,0xc9,0x19,0x07,0xb7,0x5a,0xaa,0xd2,0x11,0xd4,0xd5,0xc9,0x3a,0x63,
+ 0x39,0xac,0xd9,0xb2,0x3b,0xf5,0xa5,0x18,0xab,0x6a,0x4d,0x5a,0xbc,0x92,0xb8,0xef,
+ 0x30,0x90,0x30,0x7f,0xfa,0xd9,0xa4,0xdf,0xcf,0xf5,0xaa,0x2d,0x25,0x33,0xcd,0xad,
+ 0x52,0xe8,0x4b,0xc6,0x68,0x7a,0x0f,0x81,0x74,0xbd,0x3b,0x5e,0xf1,0x35,0x8e,0x97,
+ 0xaa,0xdc,0x0b,0x6b,0x59,0xe6,0x44,0x92,0x42,0x70,0x00,0x66,0x00,0x93,0xf4,0xeb,
+ 0x5f,0xb0,0x9a,0x6f,0xec,0x73,0xfb,0x39,0xf8,0x8f,0xc2,0xf0,0xc1,0xa6,0xeb,0x8c,
+ 0xba,0x88,0x41,0xba,0x60,0x54,0x2b,0x36,0x3b,0x0c,0xe7,0x1f,0x8d,0x7e,0x1e,0xc7,
+ 0x75,0x24,0x52,0x07,0x8d,0xb6,0xb2,0x9e,0x08,0xeb,0x5e,0xe1,0xe0,0xef,0x8d,0x5e,
+ 0x29,0xd0,0x02,0xc1,0xf6,0xc9,0x0c,0x6a,0x00,0x1f,0x31,0xc8,0x02,0xbc,0x9c,0xe2,
+ 0x8e,0x2e,0x54,0xff,0x00,0xd9,0xa2,0x9f,0x7b,0xdd,0x3f,0x95,0x99,0xf9,0xb7,0x1b,
+ 0x4b,0x36,0x9a,0x55,0xf2,0xca,0x8f,0xdd,0xde,0x29,0xda,0xfe,0x7e,0x67,0xdb,0xbe,
+ 0x29,0xff,0x00,0x82,0x7e,0xde,0xac,0xce,0xfe,0x13,0xd7,0xad,0xee,0xd0,0x13,0xb5,
+ 0x59,0x80,0x6f,0xd6,0xbc,0x2f,0xc4,0x9f,0xb1,0x6f,0xc6,0x1d,0x11,0x59,0x93,0x4d,
+ 0x37,0x2a,0x3a,0x34,0x43,0x77,0x03,0xe9,0x9a,0xeb,0x3c,0x31,0xfb,0x4b,0x6b,0x08,
+ 0x63,0x69,0x6e,0x9d,0xb1,0x8f,0x98,0x37,0x4f,0xad,0x7d,0x35,0xe1,0x6f,0xda,0x96,
+ 0xfc,0xc6,0xa8,0xf7,0x82,0x50,0x07,0xdd,0x6a,0xf0,0x70,0xb5,0xb1,0x7c,0xfc,0xb5,
+ 0x1b,0x5f,0x73,0xfc,0xd7,0xea,0x7e,0x55,0x4f,0xc5,0x5c,0xef,0x08,0xfd,0x8e,0x27,
+ 0x56,0xbb,0xa3,0xf2,0x37,0xc7,0x9f,0x0a,0x7e,0x20,0x78,0x68,0x3a,0x6a,0x3a,0x35,
+ 0xd4,0x7b,0x73,0xc8,0x8c,0x91,0xc7,0xeb,0x5f,0x33,0xea,0xb6,0xd7,0x70,0xce,0xd1,
+ 0xcf,0x13,0xc6,0xc0,0xf2,0x19,0x48,0x23,0xf0,0x35,0xfd,0x30,0x59,0x7c,0x73,0xf0,
+ 0x9f,0x89,0x63,0x10,0x78,0x87,0x4e,0xb6,0xb9,0x56,0xe1,0xbc,0xc4,0x56,0xcf,0xe7,
+ 0x5c,0xc7,0x89,0x3e,0x07,0xfe,0xcd,0x9f,0x15,0x50,0x9b,0x9d,0x36,0x1b,0x0b,0x99,
+ 0x7f,0x8e,0x1c,0x2e,0x09,0xf6,0xaf,0xb2,0xca,0xb3,0xb9,0xd0,0xd1,0xc1,0x3f,0xc1,
+ 0xfe,0xa7,0x89,0x9d,0xf1,0xa4,0xb3,0x64,0x95,0x56,0x91,0xfc,0xd6,0x11,0x8c,0x52,
+ 0x62,0xbf,0x67,0x7e,0x27,0xff,0x00,0xc1,0x33,0xad,0x66,0x82,0x4d,0x4b,0xe1,0xa6,
+ 0xac,0x93,0x0e,0x59,0x60,0x73,0xc9,0xf6,0xe4,0xff,0x00,0x5a,0xfc,0xd6,0xf8,0x93,
+ 0xfb,0x3f,0x7c,0x4a,0xf8,0x63,0x7b,0x2d,0xb7,0x88,0x74,0x99,0x92,0x38,0xc9,0x02,
+ 0x55,0x52,0x50,0x81,0xdf,0x35,0xf6,0x18,0x5c,0xf7,0x0b,0x59,0xa8,0xb7,0xca,0xfc,
+ 0xff,0x00,0xcf,0x63,0xe7,0x9c,0x6d,0xa9,0xe1,0xb8,0xcf,0x4e,0x6b,0xec,0x6f,0xd9,
+ 0x6b,0xc2,0x4f,0x75,0xa8,0x5d,0xf8,0x8e,0x64,0xf9,0x21,0x51,0x0c,0x6c,0xdd,0x32,
+ 0xd8,0x77,0x3f,0x80,0x02,0xbe,0x43,0x8e,0x26,0x12,0x84,0x75,0xdb,0x83,0xce,0x7f,
+ 0x5a,0xfd,0x2c,0xf8,0x73,0x62,0x3c,0x29,0xf0,0xce,0x36,0x8f,0xe4,0x95,0x6c,0xc1,
+ 0x62,0x07,0xfc,0xb5,0xba,0x20,0xb1,0xe9,0xfe,0xd6,0x3f,0x0a,0xfb,0x9e,0x1a,0xa3,
+ 0x19,0xe3,0x15,0x49,0x6d,0x05,0x73,0xec,0xb8,0x23,0x03,0xed,0xb1,0xae,0xaf,0xf2,
+ 0xaf,0xc5,0xe8,0x7a,0x2f,0x86,0x75,0x56,0xbc,0xd5,0xb5,0x0b,0xf9,0x08,0x26,0x59,
+ 0x31,0x91,0xe8,0x3e,0xee,0x3e,0x8a,0x05,0x75,0xfa,0x5c,0xa7,0x57,0xd7,0x24,0xdc,
+ 0x73,0x14,0x03,0x68,0xf7,0x23,0xa9,0xaf,0x12,0xf0,0xc6,0xa8,0x2c,0x6d,0x6e,0x24,
+ 0x6e,0xa0,0x33,0x0f,0xa8,0x18,0x15,0xeb,0xbe,0x00,0x57,0x5b,0x59,0x2f,0x1b,0x3b,
+ 0xb6,0xb3,0x1f,0x5c,0x9a,0xfb,0xec,0x0b,0xe7,0x9a,0x6f,0xd4,0xfd,0xef,0x0f,0x41,
+ 0x46,0x2e,0x5d,0x95,0x8f,0x45,0xd6,0x24,0xf3,0x23,0x8d,0x24,0x7f,0x95,0x10,0xb9,
+ 0xf4,0xc1,0xc0,0x03,0xf4,0xaf,0x3f,0xb1,0xbb,0x48,0xae,0x8e,0xd6,0xe4,0x93,0xf3,
+ 0x67,0xa0,0xcf,0x3f,0x9f,0x41,0x5d,0x46,0xa8,0xe6,0x68,0xe4,0x2a,0xf8,0xf2,0xe3,
+ 0x55,0x39,0x3d,0xf9,0xe3,0xfa,0xd7,0x07,0xa5,0xc0,0xf7,0x5a,0x9a,0x5b,0xc0,0x3e,
+ 0x79,0x5c,0x00,0x3d,0x06,0x7f,0xa0,0xe6,0xbd,0x4c,0x45,0x65,0x17,0x14,0x8d,0x30,
+ 0xd4,0xd7,0x23,0x93,0x3e,0x91,0xf0,0x7c,0x62,0x40,0x97,0xb2,0xa6,0x42,0x0f,0xdd,
+ 0x46,0x7b,0xfb,0x9f,0x5a,0xd9,0xbe,0xbb,0x9a,0xee,0xfa,0x5b,0x97,0xf9,0xc8,0x0c,
+ 0x00,0xfe,0xee,0x39,0x35,0x99,0xa0,0xdc,0xc5,0x1c,0xce,0x84,0x6d,0x8e,0x28,0x44,
+ 0x31,0xfe,0x1d,0x4f,0xe3,0x58,0x7a,0xbe,0xad,0x2e,0x9e,0x0b,0x40,0x46,0xe7,0xdd,
+ 0x80,0x7f,0xda,0xe6,0xba,0x9b,0x4a,0x3a,0x9f,0x35,0x88,0xe6,0xab,0x36,0xa2,0x8a,
+ 0xf7,0xda,0x8b,0xf9,0xb1,0x92,0xbc,0xfd,0xe2,0x01,0xc0,0xc6,0x7f,0xc2,0x9b,0x1d,
+ 0xf4,0x9b,0x0b,0x96,0xcb,0x4b,0x93,0x80,0x73,0x8f,0xa7,0x7a,0xe2,0x3f,0xb4,0x25,
+ 0xb9,0x67,0x60,0xc0,0x31,0x18,0x3f,0xcb,0x00,0x1a,0xd9,0xb7,0x7d,0xa8,0xce,0x4e,
+ 0x42,0x8e,0xfe,0xd5,0xc3,0x5e,0xba,0x47,0x42,0xc2,0xea,0x5f,0xb9,0xd4,0x77,0xde,
+ 0x8f,0x35,0x8b,0xaa,0xa8,0x00,0x64,0x02,0x31,0xf5,0xf4,0xab,0xf1,0xcd,0x1b,0xb2,
+ 0x94,0x27,0x6a,0xe0,0x65,0x8e,0x4e,0x3f,0xfa,0xf5,0xe7,0xe9,0x39,0x9e,0xf6,0x42,
+ 0x58,0x90,0x09,0x39,0xf5,0x1d,0x2b,0x61,0xe7,0x78,0xce,0x10,0xe3,0xa1,0x26,0xbc,
+ 0xca,0x98,0xab,0xb3,0xea,0x70,0x18,0x28,0xc6,0x2a,0xdb,0x9e,0x85,0x04,0xde,0x73,
+ 0xfc,0xc0,0x24,0x63,0xe5,0x24,0x75,0x39,0xec,0x2b,0x7e,0xcd,0x12,0x52,0x37,0xa9,
+ 0x28,0xa4,0x10,0xbd,0x15,0x7e,0xbe,0xbe,0xf5,0xe6,0x36,0x5a,0x9c,0x8d,0x2f,0xfd,
+ 0x33,0x5f,0x95,0x79,0xe4,0x7b,0x03,0xdb,0xde,0xba,0x08,0xf5,0x97,0x8b,0xe7,0x77,
+ 0x5c,0x27,0x40,0xc7,0xe5,0x1f,0xe2,0x6b,0xb7,0x0d,0x5f,0x99,0xa4,0x83,0x19,0x84,
+ 0x4a,0x2e,0xfa,0x1e,0x93,0x6d,0x7b,0x76,0x97,0x29,0x83,0x88,0xb3,0xb4,0xb1,0xe1,
+ 0x7d,0xb0,0x2a,0xd6,0xa7,0xae,0x4b,0x01,0x58,0xa5,0x39,0x32,0x30,0x8c,0x71,0x83,
+ 0xcd,0x71,0x03,0x5d,0x33,0x46,0x2e,0xcb,0x91,0x1a,0x73,0xb8,0x90,0x3f,0x21,0xe9,
+ 0xef,0xfa,0xd4,0x97,0x77,0x69,0xae,0x49,0x6e,0x6d,0x37,0x7e,0xe7,0xf7,0x83,0x27,
+ 0xae,0x3b,0x91,0xfc,0xab,0xd8,0x94,0xef,0x49,0xc5,0x76,0x3e,0x3e,0x14,0x52,0xae,
+ 0xae,0xb4,0xb9,0x4f,0x52,0xb9,0xe3,0x24,0x90,0x57,0x3d,0x7f,0xbb,0xeb,0x9f,0x6a,
+ 0xc9,0xd3,0xa7,0x85,0xe4,0x45,0x95,0xba,0xe5,0x49,0xeb,0x81,0xd6,0xae,0xea,0x7b,
+ 0x8f,0x32,0x72,0x7d,0xfd,0x3b,0x8f,0xc0,0xd6,0x1d,0xbc,0x18,0xb8,0xf9,0x4f,0x07,
+ 0x9f,0xc0,0x77,0x15,0xe0,0xe1,0xeb,0x4a,0x33,0xb3,0x3e,0xb2,0xa6,0x16,0x32,0xa5,
+ 0x75,0xa1,0xeb,0x7e,0x1e,0xbb,0x10,0x6a,0x33,0x18,0xe4,0xde,0x90,0xc4,0x11,0x4f,
+ 0xfc,0x04,0x92,0x07,0xe7,0x5b,0xf7,0x0f,0xc0,0x63,0xf3,0x13,0x0a,0x02,0x3f,0x5a,
+ 0xf3,0xef,0x0d,0x7c,0x96,0xb7,0x17,0x6e,0x49,0x2c,0xcc,0x07,0xa8,0xec,0x2b,0xb0,
+ 0xd4,0x2f,0x11,0x5d,0x47,0x50,0x22,0x5c,0x57,0xa2,0xeb,0x29,0x24,0x91,0xf2,0x8f,
+ 0x0d,0xfb,0xe6,0xac,0x62,0xde,0xbc,0x88,0xe9,0xbf,0xa6,0x73,0x81,0xc7,0x3e,0x95,
+ 0xd1,0x69,0x73,0x93,0x17,0x98,0x9d,0x78,0xc7,0xa7,0xeb,0x5c,0x95,0xe4,0xe5,0x91,
+ 0x66,0x63,0x95,0xdd,0xf3,0x0e,0xe4,0xd5,0xed,0x2a,0xf2,0x47,0x5d,0xad,0x85,0xe7,
+ 0x85,0xe9,0xb7,0xff,0x00,0xad,0x58,0x39,0x6a,0xd1,0xe8,0xd6,0xa1,0x7a,0x5a,0x23,
+ 0xd2,0xad,0x6f,0x1c,0x26,0xe9,0x58,0x71,0xc8,0x1d,0x87,0xb9,0x06,0xa1,0xd4,0xad,
+ 0xe3,0xd4,0x2d,0x66,0xb6,0x94,0x19,0x23,0x9d,0x19,0x1c,0x11,0xc3,0x2b,0x0c,0x1f,
+ 0xce,0xb9,0xe8,0xaf,0x14,0xb8,0x0b,0xf3,0xf3,0xcf,0xb9,0xae,0x96,0xca,0x74,0x2b,
+ 0xb5,0x7e,0x67,0x27,0xe6,0x39,0xf9,0x47,0xb0,0xae,0x7a,0xb5,0xd3,0xf7,0x7a,0x75,
+ 0x3e,0x77,0x13,0x85,0x5a,0xb6,0x8f,0xc9,0x7f,0x8a,0xde,0x11,0x9f,0x41,0xf1,0x2d,
+ 0xee,0x87,0x70,0xa7,0x36,0xf2,0x9f,0x2c,0x9f,0xe2,0x89,0xbe,0x68,0xdb,0xf1,0x5c,
+ 0x7e,0x34,0xcf,0x87,0x9a,0x28,0x86,0xf6,0x32,0x57,0x3c,0x8e,0x6b,0xea,0xbf,0xda,
+ 0x53,0xc1,0x53,0x1b,0xeb,0x1f,0x17,0xc2,0xa0,0xc7,0x20,0xfb,0x24,0xe4,0x76,0x60,
+ 0x4b,0x44,0xc7,0xeb,0x96,0x5f,0xca,0xbc,0x67,0xc1,0xf6,0x62,0x2b,0x94,0x20,0x74,
+ 0x35,0xfc,0x9b,0xe2,0x66,0x07,0xea,0x12,0xaf,0x86,0x8a,0xf7,0x77,0x5e,0x8f,0x63,
+ 0xf3,0x8c,0xbb,0x08,0xf0,0xb9,0xab,0xa6,0xf6,0x4f,0x4f,0x46,0x7d,0xa3,0xe0,0x19,
+ 0x56,0x0b,0x48,0x94,0xfa,0x0a,0xf6,0xc8,0x75,0x12,0x22,0x00,0x1c,0x57,0xcf,0x7e,
+ 0x16,0xb9,0xf2,0xe0,0x45,0xce,0x38,0xed,0x5e,0x9f,0x05,0xe6,0x54,0x64,0xf6,0xcd,
+ 0x7f,0x13,0xe6,0x49,0xfb,0x59,0x1f,0xb2,0xc5,0x5e,0x29,0xa3,0xb0,0x7b,0xd2,0xd9,
+ 0xe6,0xae,0x5a,0xdc,0x93,0x80,0x4e,0x4d,0x72,0x0b,0x70,0x0f,0x27,0xad,0x69,0xdb,
+ 0x5c,0x63,0x19,0xaf,0x36,0x30,0xb6,0xa6,0xd1,0x4e,0xc7,0x61,0xe6,0x64,0x54,0x91,
+ 0xd6,0x54,0x12,0xee,0x51,0xe9,0x5a,0x90,0x90,0xc7,0x35,0x84,0xf7,0x65,0x58,0xd9,
+ 0x80,0x71,0x93,0x4a,0xe7,0x0d,0xf5,0xa6,0x47,0x22,0x85,0xcd,0x50,0xba,0xbb,0x44,
+ 0x38,0xe9,0x59,0x32,0x92,0xb1,0xbd,0x6d,0x2a,0x86,0xc8,0x3c,0xfa,0x56,0xa2,0xdd,
+ 0xa8,0x39,0x26,0xbc,0xf8,0x6a,0xca,0xa7,0xaf,0x4a,0x0e,0xb3,0x9e,0x01,0xfd,0x68,
+ 0x8d,0xcc,0xaa,0x45,0x34,0x7a,0x52,0x5f,0x03,0x8e,0x7f,0x2a,0x96,0x4b,0x85,0x64,
+ 0x39,0xae,0x0a,0xce,0xfc,0xc8,0x47,0x35,0xba,0x2e,0x37,0x2e,0x3f,0xfa,0xf5,0xe9,
+ 0xc6,0x4a,0x70,0xb1,0xc1,0xc8,0x94,0x8f,0xff,0xd2,0xf9,0xd0,0xca,0x03,0xe7,0x1d,
+ 0xfa,0x56,0x82,0x5d,0x61,0x71,0x9f,0x97,0x15,0xce,0xbc,0x98,0xe9,0xeb,0xf9,0x52,
+ 0xac,0xe6,0xbe,0x3a,0xa3,0xea,0x7f,0xa5,0x50,0x92,0x2f,0xde,0xdc,0x6e,0x15,0x80,
+ 0xcd,0x93,0xc5,0x4b,0x75,0x39,0xcf,0x1c,0x9a,0xce,0x46,0x3b,0x86,0x6b,0xc8,0xe5,
+ 0xb5,0x46,0xcf,0x46,0x55,0x7d,0xc3,0x5e,0x0c,0x9c,0x1c,0x67,0x15,0xd0,0x40,0xe5,
+ 0x62,0x24,0xd6,0x35,0x98,0x04,0x81,0x8a,0xdb,0x94,0xf9,0x36,0xe5,0x98,0xf4,0x19,
+ 0xaf,0x52,0x8d,0x3f,0x75,0xc9,0x9e,0x7c,0xe7,0xae,0xa6,0x1e,0xaf,0xa9,0xac,0x09,
+ 0xb3,0x38,0x27,0xb5,0x61,0xe9,0xb7,0x5a,0x85,0xfd,0xda,0xe9,0xba,0x14,0x4d,0x2d,
+ 0xd4,0xc7,0x6e,0x47,0x38,0xcd,0x61,0x5c,0x47,0x7b,0xae,0xea,0x86,0xde,0xcc,0x17,
+ 0x25,0xb6,0x80,0x2b,0xea,0xaf,0x87,0x1e,0x15,0xb2,0xf0,0x76,0x9e,0x2f,0xe5,0x41,
+ 0x2d,0xd4,0x83,0x0d,0x21,0xff,0x00,0xd0,0x45,0x79,0xb4,0x70,0xf5,0x71,0xb5,0xda,
+ 0x86,0x91,0x5d,0x7f,0xc8,0xeb,0x78,0xc8,0x61,0xe9,0xab,0xee,0xf6,0x47,0x41,0xe0,
+ 0x1f,0x87,0x56,0xbe,0x0c,0x8d,0x75,0x6d,0x65,0x56,0xef,0x55,0x95,0x77,0x65,0xf9,
+ 0x58,0x89,0xf4,0xcf,0x52,0x3d,0x6b,0xd9,0xf4,0x9b,0xe9,0xaf,0x49,0x9d,0x89,0xdb,
+ 0xd1,0x00,0xe9,0xee,0x6b,0xcb,0xaf,0xf5,0x89,0x75,0x29,0x52,0x18,0x58,0x83,0x21,
+ 0xda,0x07,0x70,0xa3,0xad,0x7a,0x3d,0x91,0x4d,0x3e,0xc2,0x04,0x90,0x05,0x66,0x5e,
+ 0x0e,0x7b,0x57,0xda,0xe0,0xf0,0x74,0xa8,0x43,0xd9,0xd2,0x56,0x4b,0xf3,0x3c,0x6c,
+ 0x5d,0x69,0xbf,0x7e,0xab,0xbb,0x7f,0x82,0x3c,0xef,0xe2,0xf6,0x95,0x1e,0xb1,0xa5,
+ 0xb4,0xb1,0xa8,0x69,0xe0,0xf9,0xd4,0x8e,0x78,0x1d,0x45,0x7c,0xa7,0x6a,0xb3,0xcb,
+ 0x27,0x92,0x8a,0x49,0x07,0x15,0xf6,0xf6,0xa6,0x6d,0xe7,0x89,0x8e,0x03,0x64,0x73,
+ 0xee,0x0f,0x15,0xf3,0x6e,0xb5,0x62,0xba,0x0e,0xa1,0x2c,0xb6,0xa8,0x02,0x48,0x49,
+ 0x57,0xc6,0x71,0x9a,0xfc,0xd7,0x8a,0x30,0x9c,0x98,0x8f,0x6f,0xd1,0x9f,0x71,0xc3,
+ 0x58,0x8f,0x69,0x41,0x51,0x5b,0xa3,0x88,0x1f,0x09,0xe6,0xf1,0x0c,0xc9,0x71,0x71,
+ 0x88,0x54,0x72,0x4b,0x71,0xc5,0x75,0xba,0x6f,0x85,0xfc,0x03,0xe1,0x53,0x8b,0xe9,
+ 0x85,0xc4,0x8b,0xfc,0x28,0x33,0xcf,0xd6,0xb2,0xe6,0xd5,0x2f,0x66,0xe3,0xcd,0x72,
+ 0x08,0xec,0x4d,0x3a,0xc3,0x41,0xb9,0xd4,0x9b,0xcd,0xf2,0xc9,0x04,0xf2,0xc6,0xb8,
+ 0xf0,0xf8,0xfc,0x45,0x4a,0x71,0xa3,0x46,0x2d,0xa5,0xdc,0xf2,0xf1,0x5e,0x1f,0xf0,
+ 0xfc,0x31,0xf5,0x33,0x4c,0x55,0x08,0xba,0xb2,0xdd,0xd8,0xea,0x06,0xa9,0xe1,0x0d,
+ 0x49,0xcc,0x31,0x69,0x4c,0x10,0x70,0xac,0x3a,0x9a,0xdd,0xb1,0xf8,0x61,0xe1,0x7f,
+ 0x11,0xd9,0x4a,0xf1,0x43,0x2c,0x0e,0x41,0xdb,0xbc,0x7a,0xfe,0x1c,0xd6,0xc6,0x83,
+ 0x61,0xa1,0xf8,0x71,0x63,0xb9,0xba,0x45,0x9a,0x51,0xc8,0x04,0x74,0xc7,0x5a,0xf7,
+ 0x7f,0x0c,0xf8,0xdf,0x41,0xd4,0x99,0x20,0x30,0x42,0x0a,0xe3,0x8c,0x01,0x9a,0xf5,
+ 0x70,0xd8,0x2a,0xdc,0xeb,0xeb,0x15,0x16,0xbd,0x12,0xfd,0x74,0x3c,0x2c,0xfb,0x27,
+ 0xc9,0xaa,0xc7,0x9e,0x8e,0x5d,0x19,0xdb,0xad,0x96,0xde,0x96,0x3f,0x2d,0x3e,0x25,
+ 0x78,0x02,0xff,0x00,0xc2,0x3a,0x9b,0xc4,0x63,0x66,0x84,0x9c,0x82,0x01,0x20,0x57,
+ 0x9d,0x58,0xe5,0x5b,0xb8,0x19,0xc7,0x5a,0xfd,0xa8,0xf1,0x47,0x85,0x3c,0x17,0xe2,
+ 0x47,0xf2,0xaf,0x6c,0xa2,0x92,0x39,0x53,0x2b,0x91,0x9c,0x1c,0x74,0x06,0xbe,0x2d,
+ 0xf8,0x8d,0xfb,0x3b,0x59,0xc1,0x2c,0xb7,0xfe,0x17,0x6d,0xa0,0x64,0x98,0x4f,0x5f,
+ 0xc3,0xd6,0xbd,0x0a,0xd5,0x31,0x18,0x38,0x72,0x62,0x17,0x34,0x7b,0xaf,0xd5,0x1f,
+ 0xcc,0x7c,0x5b,0xe0,0xec,0xb1,0x95,0xa7,0x8d,0xe1,0xf5,0x64,0xf5,0xf6,0x4f,0x4f,
+ 0x5e,0x57,0xb7,0xc8,0xf9,0x5a,0x1b,0x81,0xe5,0x8c,0x1c,0x71,0x51,0x2e,0x9b,0x71,
+ 0xab,0x5c,0xac,0x10,0x29,0x66,0x63,0x8e,0x06,0x71,0x9a,0x5b,0xed,0x36,0xff,0x00,
+ 0x4a,0xbf,0x6d,0x36,0xea,0x32,0x92,0x86,0xdb,0x83,0xdf,0xde,0xbe,0x86,0xf8,0x79,
+ 0xe1,0x78,0xec,0xad,0x05,0xf5,0xc2,0x65,0xdb,0x91,0x91,0x5e,0x5d,0x7c,0xc6,0x14,
+ 0x20,0xa7,0x1d,0x5b,0xd8,0xf8,0xcf,0x0d,0xfc,0x2f,0xc6,0xf1,0x1e,0x71,0x2c,0x0d,
+ 0x78,0xb8,0x42,0x9f,0xc6,0xda,0xdb,0xcb,0xd5,0x91,0x78,0x2f,0xc2,0x9f,0xf0,0x8c,
+ 0x24,0x57,0x83,0xe5,0x98,0x90,0x58,0x8e,0x0e,0x3d,0x29,0xff,0x00,0x1e,0xb4,0xeb,
+ 0xcb,0xed,0x2a,0x0d,0x58,0x44,0x4a,0xc4,0x07,0xcc,0x07,0x41,0xf5,0xaf,0x4a,0x9e,
+ 0xd0,0x5c,0xc9,0x1c,0x08,0x7f,0x88,0x71,0xf8,0xd1,0xe3,0x88,0x57,0x54,0xd1,0x65,
+ 0xd2,0xa4,0x62,0x54,0x46,0x55,0x41,0xfa,0x57,0x2e,0x0b,0x15,0x29,0xd3,0x9d,0x79,
+ 0xef,0x75,0x6f,0x91,0xfd,0xaf,0xc4,0xdc,0x13,0x83,0x79,0x14,0xb2,0x0c,0x14,0x14,
+ 0x61,0xc8,0xd2,0xd3,0xf1,0xfb,0xcf,0xce,0x7b,0xab,0xcd,0xdc,0x29,0xfc,0x2b,0x12,
+ 0x59,0x19,0x81,0x61,0x9c,0xfa,0xd5,0xfd,0x66,0xd1,0xf4,0xdd,0x56,0xe2,0xc6,0x43,
+ 0x83,0x1b,0x90,0x38,0xed,0xda,0xb3,0xf7,0x2e,0x07,0xaf,0x7a,0xfa,0x2d,0x5c,0x54,
+ 0xd7,0x53,0xfc,0xdb,0xc6,0xe1,0x2a,0x61,0x2b,0xd4,0xc3,0xd6,0x56,0x94,0x5b,0x4f,
+ 0xd5,0x19,0xf2,0x0e,0xa7,0xd7,0xd2,0x98,0x14,0x8e,0xd5,0x74,0xaa,0x31,0xc9,0xa0,
+ 0x42,0xbc,0x96,0xe3,0xf1,0xf5,0xaa,0x53,0x39,0x93,0x22,0x8a,0x42,0xb8,0xcf,0xff,
+ 0x00,0xae,0xb6,0xa0,0xb8,0x18,0xf9,0xb1,0x93,0xd6,0xb0,0xe6,0x0a,0x83,0x83,0x9c,
+ 0x55,0x31,0x79,0xe5,0x91,0x9e,0xc6,0xb5,0x8d,0x1e,0x63,0xec,0x78,0x7f,0x88,0xaa,
+ 0x60,0xdf,0x2b,0x7a,0x1d,0xc2,0xed,0x24,0x15,0xab,0x51,0x82,0x48,0xe2,0xb8,0xfb,
+ 0x7d,0x5d,0x07,0xca,0xc7,0xa7,0xaf,0x41,0x5b,0x76,0xfa,0x8c,0x4e,0x01,0x07,0x8a,
+ 0x2a,0x60,0xa5,0x6b,0x9f,0xb2,0xe5,0x3c,0x53,0x4a,0xad,0xaf,0x23,0x59,0x87,0x15,
+ 0x42,0x64,0x07,0x8c,0xd5,0xe8,0xe7,0x49,0x78,0x07,0x9e,0xd4,0x92,0x42,0x5f,0x2c,
+ 0xb5,0xe7,0x4e,0x0e,0x2e,0xcc,0xfa,0xaf,0xed,0x08,0x54,0x8d,0xd3,0x39,0xb9,0x41,
+ 0x04,0xd5,0x42,0x7b,0x73,0x9f,0x4a,0xd7,0xb9,0xb7,0x61,0xc8,0xe3,0x35,0x44,0x5b,
+ 0xb9,0x39,0xc5,0x6d,0x0b,0x1c,0x35,0x71,0xb1,0x5f,0x68,0x64,0x60,0xfa,0x75,0xfe,
+ 0x55,0x7e,0x28,0xc9,0xe9,0xc7,0x34,0xe8,0x6c,0x9c,0xf3,0x8f,0xa5,0x6a,0x43,0x6e,
+ 0x7f,0x88,0x62,0xad,0xcd,0x23,0xe6,0xf3,0x0e,0x21,0xa5,0x41,0x39,0x39,0x10,0x45,
+ 0x73,0x35,0x99,0xdc,0x84,0x8c,0x7f,0x4a,0xeb,0x74,0x2f,0x1a,0x43,0x04,0xe2,0x3b,
+ 0xa9,0x0c,0x2d,0x9e,0xb9,0xe2,0xb8,0xeb,0xed,0xa8,0x84,0x7e,0x7f,0xfd,0x6a,0xf2,
+ 0xdd,0x6e,0xe9,0x95,0x89,0x43,0x82,0x3b,0xd6,0x6b,0x2c,0xa5,0x8b,0x4e,0x2c,0xfc,
+ 0x77,0x8a,0x73,0x7a,0x19,0x85,0x4e,0x65,0x05,0xcd,0xdc,0xfb,0xf7,0x49,0xd7,0xae,
+ 0x25,0x81,0x25,0x82,0x7c,0xf4,0x21,0x94,0xd7,0xa2,0x69,0x7e,0x39,0xd6,0xac,0xf6,
+ 0x03,0x21,0x20,0x77,0x04,0xe6,0xbf,0x37,0x7c,0x13,0xf1,0x3f,0x51,0xd0,0x27,0x48,
+ 0x6e,0x58,0xcd,0x6f,0x9e,0x55,0x8f,0x4f,0xa5,0x7d,0x8b,0xe1,0x4f,0x14,0xe9,0x5e,
+ 0x21,0xb6,0x13,0xd8,0xcc,0x18,0x91,0xca,0x67,0x90,0x7b,0xd7,0xc4,0x67,0x59,0x6e,
+ 0x3f,0x2b,0xa8,0xe6,0xfd,0xe8,0x77,0x3e,0x22,0xa6,0x1e,0x9b,0x76,0x68,0xfb,0x13,
+ 0xc3,0xdf,0x1b,0x35,0xad,0x3f,0x62,0xc7,0x76,0xf8,0x03,0x95,0x24,0x91,0x5e,0xb1,
+ 0xff,0x00,0x0b,0x57,0xc3,0x9e,0x2f,0xb1,0x3a,0x67,0x8c,0x2c,0x6d,0xef,0x21,0x94,
+ 0x61,0x8c,0xa8,0x1b,0xaf,0x1c,0x67,0xa5,0x7c,0x24,0xe5,0x82,0x83,0x19,0x2b,0x8c,
+ 0x9c,0x55,0xeb,0x5d,0x52,0xe2,0x10,0x03,0x13,0xc7,0x6f,0xfe,0xbd,0x70,0xe1,0xb3,
+ 0xc8,0xcf,0x49,0xe8,0xcc,0x95,0x0a,0xb4,0xb5,0xa7,0x23,0xb7,0xf8,0xb1,0xfb,0x1d,
+ 0xf8,0x03,0xc6,0x4b,0x27,0x88,0x7e,0x1d,0xcc,0xb6,0x57,0x04,0x17,0x6b,0x62,0x46,
+ 0xc3,0xea,0x01,0xaf,0x39,0xd6,0xbc,0xbb,0x1f,0x04,0x1b,0x71,0x20,0x0c,0xd3,0x5b,
+ 0xc5,0xb4,0x71,0xb8,0x47,0x9c,0xfe,0x19,0x5a,0xf4,0x2b,0x0f,0x1a,0xea,0x7a,0x64,
+ 0x2c,0xb1,0x4c,0xfb,0x76,0x91,0x8c,0xd6,0x67,0x87,0x3c,0x37,0x61,0xe3,0x4d,0x0a,
+ 0xe7,0x45,0x9c,0x04,0xbf,0x95,0x77,0x59,0x4e,0x49,0x01,0x66,0x19,0xc0,0x6f,0xf6,
+ 0x5b,0xee,0x9f,0xad,0x7e,0xeb,0xe1,0x76,0x2e,0xa6,0x22,0x58,0x8a,0x71,0x95,0xf4,
+ 0xd0,0xfd,0x53,0xc3,0x49,0x4e,0x4e,0xbc,0xaa,0x2f,0x86,0xdf,0xa9,0xe1,0x7a,0x4b,
+ 0x19,0xe6,0x16,0xaa,0x7e,0xf1,0x19,0x1f,0x4e,0x6b,0xe9,0x7f,0x0b,0x81,0x67,0xa7,
+ 0x6d,0xc1,0xc1,0x3d,0x7b,0xe3,0xad,0x7c,0xf5,0xa1,0x69,0x17,0xb6,0x7a,0xfd,0xd5,
+ 0x96,0xa1,0x13,0x43,0x73,0x6b,0x33,0x43,0x24,0x6d,0xc1,0x56,0x43,0xb4,0x8f,0xf0,
+ 0xf5,0x1c,0xd7,0xd0,0x1a,0x3c,0xa3,0xec,0x64,0xb7,0x01,0x38,0x3f,0x5c,0x62,0xbf,
+ 0x62,0xc9,0xae,0x97,0x33,0xfe,0xac,0x7e,0xfb,0x4e,0x17,0xa2,0xac,0x6f,0xc7,0x6d,
+ 0x2d,0xdd,0x84,0xd7,0x44,0x6e,0x4e,0xe7,0x9e,0x38,0xc0,0xcf,0xf4,0xac,0x7f,0x0b,
+ 0x5a,0xb4,0x9a,0xf3,0xb2,0xf1,0xb1,0x59,0xc1,0xf5,0xc5,0x74,0xf6,0x8a,0x06,0x8f,
+ 0x3a,0xab,0x32,0xfd,0xe1,0xec,0x71,0x59,0xde,0x09,0x56,0x9b,0x55,0x99,0x93,0xe5,
+ 0x22,0x26,0xc7,0xa1,0xc7,0x3c,0xd7,0xa7,0x52,0x6d,0xd6,0xa6,0x89,0xae,0x9d,0x3c,
+ 0x05,0x49,0x79,0x1e,0x91,0x6d,0x26,0xc2,0x12,0x1c,0x94,0x00,0x85,0x39,0xe7,0x1e,
+ 0xe6,0xb8,0xdf,0x10,0xdc,0xee,0xb8,0x2a,0x8b,0xc2,0x02,0x46,0x79,0xeb,0xc1,0xe6,
+ 0xb5,0x9a,0xe9,0xa2,0xbb,0xd8,0x9f,0x2a,0x1f,0x94,0x2f,0x3c,0x77,0xe9,0x58,0x5a,
+ 0xba,0xa4,0xae,0xf2,0xf3,0xb8,0x9c,0x01,0xeb,0x5b,0xe2,0x6b,0xfb,0xa7,0x83,0x80,
+ 0xc3,0xb9,0x34,0xd9,0xcf,0xdb,0xb1,0x33,0xae,0xee,0x03,0x30,0xe9,0xe8,0x07,0x7a,
+ 0xe8,0xa7,0x9f,0xc9,0x88,0x80,0x70,0x08,0xc8,0xfa,0x57,0x3f,0x11,0x11,0x90,0xa0,
+ 0x15,0x63,0xeb,0xdb,0x26,0xae,0x5d,0x4a,0x55,0x06,0x06,0x41,0x15,0xe1,0xd6,0xac,
+ 0xd9,0xef,0xc7,0x07,0x18,0xb4,0xba,0x99,0x49,0x34,0x89,0x31,0x76,0x07,0x1f,0x77,
+ 0xd0,0x7c,0xd5,0xa1,0x71,0x74,0x01,0x00,0x0e,0x83,0xaf,0x70,0x07,0xa5,0x60,0xa2,
+ 0x0d,0xc3,0xcc,0x24,0x82,0xe4,0xfe,0x47,0xbd,0x4b,0x75,0x75,0x14,0x4a,0x4b,0x90,
+ 0x40,0xfe,0x9d,0x3f,0x0a,0xe0,0x75,0x35,0xdc,0xf6,0xe8,0xd3,0x4a,0x1a,0x96,0x9b,
+ 0x5a,0xfb,0x1b,0x13,0xd0,0xe3,0x21,0x41,0xe0,0x0f,0x52,0x6b,0x98,0xbe,0xf1,0x24,
+ 0xb2,0xdc,0x79,0x9b,0xb8,0x07,0x85,0xcf,0x5a,0xe5,0xb5,0x1d,0x4d,0xa6,0x91,0xd8,
+ 0x92,0xc8,0xcd,0xc2,0x8e,0x32,0x7d,0xc5,0x52,0xb7,0x68,0x81,0xcb,0xae,0xf7,0x73,
+ 0xc2,0xfa,0x1e,0xd5,0xe9,0xd1,0xae,0xe3,0xa4,0x4f,0x33,0x11,0x2e,0x79,0xdd,0x9e,
+ 0xa9,0x61,0xab,0x5c,0xdd,0x40,0x7c,0xc9,0x0b,0x0c,0x0c,0x0d,0xdf,0x28,0xfc,0x3b,
+ 0xd7,0xb7,0x78,0x2a,0xe7,0xec,0xf6,0xb1,0x5d,0x48,0x1a,0xe2,0x46,0xc9,0x23,0x18,
+ 0x03,0x1c,0x2a,0x8e,0xe7,0x8f,0x6a,0xf9,0xdf,0x45,0x8e,0x38,0xc8,0x96,0xe1,0xd6,
+ 0x42,0x78,0x28,0x30,0x00,0x1e,0x84,0x9f,0xe5,0x5e,0xad,0xe1,0xaf,0x13,0xc5,0x04,
+ 0x9b,0x24,0xe0,0xef,0xc0,0xc0,0xc0,0x50,0x7b,0x81,0xfd,0x2b,0xdd,0xc2,0x4f,0x54,
+ 0xe6,0xcf,0x9e,0xc6,0xd1,0x72,0x4d,0x41,0x1e,0x85,0xac,0xc3,0x2a,0x48,0x25,0x99,
+ 0x4a,0x89,0x58,0x91,0xc7,0x1c,0xf2,0x45,0x60,0x4a,0xff,0x00,0x67,0x80,0xca,0xb8,
+ 0x18,0x07,0x00,0xf3,0x5e,0x9c,0xf0,0x9f,0x13,0x68,0x2d,0x16,0x98,0x3c,0xc6,0x41,
+ 0xe6,0x65,0x8e,0x59,0x98,0x0e,0x83,0xf9,0x60,0x57,0x90,0xdf,0x4b,0x27,0x94,0x6d,
+ 0x58,0x15,0x6d,0xc1,0x58,0x1e,0x36,0x9c,0xf2,0x08,0xec,0x7d,0x6b,0x97,0x31,0xa7,
+ 0xec,0x6a,0x39,0xae,0xa7,0x7e,0x57,0x88,0xf6,0xd8,0x77,0x19,0x7c,0x51,0xd2,0xdf,
+ 0x93,0x3b,0x3b,0x69,0xbe,0xc9,0xa5,0xc5,0x16,0xef,0xbf,0xb5,0x71,0xee,0x7e,0x9f,
+ 0x5a,0xdd,0xb9,0xbb,0x8d,0xa6,0x89,0xc3,0x10,0x02,0xe3,0x27,0xb5,0x79,0xdc,0xf7,
+ 0x8b,0xe7,0xdb,0xc0,0xa7,0x3c,0x97,0xe7,0xfd,0x9a,0xd0,0xb8,0xbe,0x24,0x6c,0x43,
+ 0x97,0xc7,0x1c,0xfa,0xf7,0xae,0x1a,0x38,0x8b,0xc9,0x23,0x28,0x61,0x14,0xa7,0xcc,
+ 0x74,0x57,0x37,0x24,0xc2,0x78,0x05,0x77,0x64,0x93,0xd7,0xda,0xab,0x69,0xf3,0x99,
+ 0x18,0xe0,0x90,0x84,0xfc,0xec,0x7d,0x3f,0xc4,0xd7,0x3d,0x2d,0xfb,0x2a,0x05,0x27,
+ 0xf7,0x60,0xe1,0x88,0x3d,0xfd,0xe8,0xb1,0xbe,0x67,0x73,0x0c,0x7c,0x73,0xc0,0x27,
+ 0xab,0x1a,0x75,0xeb,0xab,0xee,0x76,0x7d,0x55,0xa8,0x34,0x91,0xe9,0x76,0x5a,0x84,
+ 0x49,0x98,0xe0,0x0a,0xa4,0x0c,0x0f,0xc7,0xaf,0x6e,0xb5,0xd3,0x58,0x5c,0xc6,0xc5,
+ 0x43,0x7f,0x11,0xe0,0x03,0x8c,0xfb,0x8f,0x6a,0xf3,0x18,0xee,0xc4,0x5c,0x10,0x1d,
+ 0xf3,0x8f,0xc7,0xeb,0xfc,0xeb,0xa9,0xd2,0x6f,0x95,0x5c,0xbc,0xff,0x00,0x3c,0xa7,
+ 0xb0,0xe9,0xed,0x5c,0x92,0xae,0xad,0xcb,0x73,0xc2,0xc5,0xe1,0x5d,0x9c,0x92,0x36,
+ 0xbc,0x7f,0xa1,0xff,0x00,0xc2,0x4b,0xe1,0x3d,0x47,0x49,0x00,0x31,0x92,0x06,0xf2,
+ 0xfd,0xa4,0x4f,0x99,0x0f,0xb6,0x18,0x0a,0xf8,0x7b,0xc3,0xb1,0x14,0x99,0x72,0xbb,
+ 0x58,0x1c,0x11,0xe8,0x7b,0x8f,0xc2,0xbf,0x40,0x61,0x9c,0xcf,0x06,0x00,0xea,0x3a,
+ 0x7a,0xd7,0xc7,0xda,0xa7,0x87,0x9b,0x46,0xf1,0x6e,0xa3,0x67,0xb7,0x0a,0x2e,0x1a,
+ 0x44,0xe3,0xf8,0x24,0xf9,0xc7,0xf3,0x22,0xbf,0x0d,0xf1,0xab,0x09,0xcd,0x97,0x53,
+ 0xc5,0xc5,0x6a,0xaf,0x17,0xf9,0xaf,0xd4,0xf8,0x3c,0x76,0x15,0x47,0x19,0x4a,0xb2,
+ 0x5e,0x47,0xa3,0xe8,0x0e,0x56,0x35,0xfa,0x0e,0x2b,0xd0,0x2d,0xee,0x0e,0x01,0xae,
+ 0x0b,0x49,0x8b,0xca,0x89,0x73,0xe8,0x2b,0xac,0xb6,0x7f,0x7e,0x9f,0xa5,0x7f,0x03,
+ 0x63,0xa1,0x7a,0xb2,0x3e,0xf2,0x8b,0xf7,0x51,0xd6,0xc3,0x2e,0x79,0xf4,0xad,0x28,
+ 0x26,0x39,0xc8,0xae,0x72,0x07,0x38,0x15,0xa7,0x04,0x87,0x3e,0x99,0xaf,0x3e,0x54,
+ 0xb4,0x35,0x3b,0x4b,0x29,0x0e,0x01,0x35,0xb7,0x1c,0xbb,0x46,0x6b,0x93,0xb2,0x97,
+ 0x00,0x67,0xf9,0xd6,0x8b,0xdc,0xed,0x19,0xcd,0x79,0xd5,0x23,0x66,0x34,0x6c,0xcf,
+ 0xa8,0x04,0x07,0x07,0xf0,0xae,0x5a,0xf7,0x52,0x67,0x3c,0x1e,0x2a,0xb4,0xf7,0x45,
+ 0xc9,0xe7,0xde,0xb1,0x2e,0x26,0xf9,0x8d,0x2a,0x74,0xd3,0x14,0x9b,0xb1,0x6f,0xed,
+ 0x72,0x11,0xc9,0xab,0x31,0xdc,0xb0,0x1c,0x9a,0xe7,0x84,0xd9,0x3e,0x95,0x65,0x26,
+ 0xce,0x2b,0x49,0x53,0x5d,0x0e,0x76,0x77,0x3a,0x7d,0xe1,0x04,0x73,0x5d,0x8d,0xbc,
+ 0xfb,0x90,0x1c,0x93,0x81,0x5e,0x59,0x65,0x71,0x82,0x39,0xea,0x6b,0xb5,0xb4,0xbb,
+ 0xf9,0x07,0x35,0xb5,0x05,0xd0,0xc6,0x67,0xff,0xd3,0xf9,0x52,0x69,0x39,0x20,0x55,
+ 0x6f,0x38,0x93,0x80,0x71,0x4b,0x39,0x1c,0x9e,0x98,0xac,0xe3,0x27,0x3c,0xfa,0x57,
+ 0xc6,0xe2,0x15,0x92,0x47,0xfa,0x3d,0x42,0xa5,0xd2,0x2d,0xc8,0xe4,0xf7,0xce,0x3a,
+ 0x7b,0xd4,0x51,0xb6,0x5f,0x8e,0x05,0x46,0x5f,0xd3,0x93,0x4d,0x8d,0xf0,0xf9,0x1d,
+ 0xab,0xcd,0x6b,0xf7,0x87,0xa2,0xdf,0xb9,0xa1,0xd5,0x58,0xb7,0xcc,0x0e,0x7f,0x3a,
+ 0x6e,0xbd,0x75,0x21,0xb7,0x5b,0x68,0x32,0xd2,0x4a,0x76,0xa8,0x1e,0xf5,0x56,0xd2,
+ 0x4c,0x00,0xc4,0xfe,0x35,0xd5,0x78,0x4f,0x47,0x3a,0xa6,0xa0,0xda,0xa5,0xd0,0xcc,
+ 0x56,0xe7,0x6c,0x43,0xb1,0x61,0xde,0xbd,0x25,0x79,0x53,0xf6,0x71,0xdd,0x9c,0x55,
+ 0x66,0xa3,0xab,0x3b,0x0f,0x00,0x78,0x1e,0x2d,0x27,0x4e,0x6b,0xe9,0xd0,0x35,0xc3,
+ 0x2e,0xe6,0x27,0xb6,0x7b,0x57,0x61,0x79,0xa8,0x6d,0xb7,0x4b,0x60,0x36,0xfc,0xc4,
+ 0xf5,0xea,0x7f,0xfa,0xd5,0x60,0xde,0x5b,0xc5,0x66,0xf0,0x64,0xab,0x95,0xc9,0x03,
+ 0xbf,0xa5,0x73,0x76,0xf6,0xed,0x3c,0xdb,0xdb,0x3f,0x2e,0x48,0x07,0xf3,0xaf,0x62,
+ 0x8d,0x18,0x61,0xe9,0xa8,0x52,0x47,0x25,0x27,0x2a,0xd5,0x5c,0xea,0x74,0x3a,0xbf,
+ 0x0f,0x5a,0x3c,0x97,0x02,0x76,0x3b,0x81,0x18,0xe3,0xb1,0xad,0xdd,0x73,0x53,0x9e,
+ 0x26,0x4b,0x3d,0xdb,0x59,0x7d,0xf3,0x59,0x9a,0x48,0x78,0xa1,0x05,0x5b,0x1b,0x7e,
+ 0x62,0x7f,0x9d,0x72,0x9e,0x27,0xd4,0xbe,0xcf,0x76,0xd2,0x82,0x49,0x6e,0x00,0xef,
+ 0xee,0x6a,0xea,0x57,0x51,0xa6,0xd1,0xa5,0xa5,0x57,0x12,0x97,0x43,0xd0,0x52,0xec,
+ 0xb4,0x06,0x39,0xc8,0xcb,0x2f,0x23,0x3e,0xd5,0xc4,0xeb,0x70,0x47,0x7d,0x6d,0x25,
+ 0x91,0xc7,0x04,0x94,0x27,0xd7,0xd0,0x57,0x35,0x6b,0xae,0x30,0x60,0x4f,0x6e,0xc4,
+ 0xe6,0xb4,0xee,0xee,0xd2,0x58,0x84,0xf1,0x31,0x0c,0x0e,0x6b,0xe6,0xf3,0x58,0xc3,
+ 0x15,0x41,0xc6,0xdb,0x1f,0x43,0x96,0xf3,0x50,0xa9,0x7b,0x98,0xfa,0x17,0x87,0xc3,
+ 0x39,0x7b,0x81,0x85,0x8c,0xf4,0x3f,0xd6,0xba,0x9d,0x43,0x51,0x83,0x4e,0x87,0x64,
+ 0x43,0x18,0x03,0x91,0x5c,0xe9,0xf1,0x02,0xc7,0x13,0x14,0x38,0x6f,0xe7,0x5c,0x3e,
+ 0xab,0xae,0xb5,0xc1,0x3c,0x9c,0x74,0xfa,0x57,0x99,0x86,0xaf,0x4e,0x8d,0x04,0xa2,
+ 0xac,0xce,0xbc,0x44,0x2a,0xd6,0xac,0xdc,0xde,0x86,0xa6,0xa5,0xe2,0x59,0xe4,0x94,
+ 0x80,0xc4,0x29,0xcf,0x15,0xa3,0xe1,0x9d,0x5e,0xe2,0xd3,0x52,0x8a,0x50,0xc4,0xa9,
+ 0x6c,0xf5,0xaf,0x2d,0x9e,0x72,0xc7,0x3f,0xa8,0x35,0xd0,0xe8,0x57,0x24,0xca,0xb8,
+ 0xe5,0x81,0x06,0xb1,0xa5,0x56,0x55,0x2a,0xa6,0xce,0x97,0x4d,0x42,0x9b,0x48,0xfa,
+ 0xb6,0xef,0xc7,0x42,0x3b,0x52,0xb1,0x37,0xcf,0x01,0x5e,0xfd,0x8d,0x68,0x9d,0x74,
+ 0x6a,0x36,0xc9,0x3a,0x10,0x59,0xd4,0x12,0x3e,0xb5,0xf2,0xf5,0xce,0xae,0xc9,0x35,
+ 0xc4,0x6a,0xc7,0x6e,0xd1,0x91,0x5d,0xb6,0x85,0xaf,0x88,0xac,0x10,0xe4,0x9f,0x63,
+ 0x5e,0xb3,0xaf,0xed,0x39,0xa9,0xcb,0x63,0xcd,0x96,0x1e,0x9c,0x22,0xa5,0x18,0xea,
+ 0x49,0xe3,0xaf,0x03,0xe9,0xba,0xf5,0xdc,0x3a,0xb4,0x2a,0xa9,0x71,0x13,0x0d,0xe0,
+ 0x77,0x1e,0xb5,0x76,0x0b,0x55,0xb4,0xb6,0x58,0x90,0x61,0x54,0x01,0x5a,0x09,0xa8,
+ 0xac,0xf2,0x89,0x49,0xe0,0x8e,0x6a,0x8d,0xe5,0xe4,0x19,0x74,0x06,0xbe,0x1f,0x37,
+ 0xc3,0xfb,0x1a,0xb7,0x5b,0x74,0x3d,0xde,0x1f,0xc2,0x61,0xa9,0xce,0xa5,0x6a,0x34,
+ 0xd2,0x9c,0xda,0xe6,0x6b,0xad,0xb6,0xb9,0x8f,0x1d,0xd0,0x4b,0xf5,0x19,0x20,0x66,
+ 0xa1,0xd5,0xf5,0x14,0x69,0x0c,0x6c,0x72,0x79,0xac,0x59,0x27,0xc6,0xa0,0x8c,0x0e,
+ 0x79,0xac,0x3d,0x66,0xe9,0x44,0xc7,0x9c,0x1c,0xd7,0x46,0x02,0xab,0xfa,0xa3,0x8b,
+ 0xee,0x77,0x66,0x30,0x5f,0x58,0x4f,0xc8,0xf9,0x3f,0xe2,0xd5,0xaa,0xdb,0x78,0x99,
+ 0xa7,0x51,0x81,0x38,0xdd,0xc7,0xb5,0x79,0x68,0x91,0xb1,0x83,0x5e,0xd7,0xf1,0x6a,
+ 0x31,0x71,0x35,0xbc,0xcb,0xd4,0x64,0x1a,0xf1,0x66,0x88,0xf6,0xe9,0x5f,0x65,0x80,
+ 0x9a,0x95,0x08,0xdc,0xff,0x00,0x37,0xbc,0x5b,0xc1,0xc7,0x0f,0xc5,0x58,0xd8,0xc5,
+ 0x59,0x36,0x9f,0xde,0x86,0x34,0xa7,0xab,0x1e,0x83,0xd6,0x98,0x6e,0x0f,0x4c,0xfe,
+ 0x14,0x8f,0x0b,0x75,0x35,0x46,0x64,0x65,0xe4,0x1a,0xf4,0x29,0xd1,0x8c,0x99,0xf9,
+ 0xb6,0xc4,0xb2,0x5d,0xae,0x09,0x3f,0x8d,0x62,0xdc,0xdc,0x0e,0x70,0x79,0xa2,0x67,
+ 0x6e,0x49,0xe7,0xf4,0xac,0x69,0xcb,0x36,0x7b,0x57,0xb1,0x43,0x0c,0xad,0x7b,0x02,
+ 0x77,0x14,0xde,0xc8,0x87,0x1b,0xaa,0xed,0xb6,0xaf,0x22,0x63,0x9f,0xd6,0xb1,0x18,
+ 0x12,0x39,0xa5,0x8e,0x22,0xce,0x00,0xfc,0x6b,0xad,0xd1,0x83,0x56,0x68,0xeb,0xa3,
+ 0x8c,0xab,0x4b,0x58,0x48,0xf5,0x8d,0x17,0x53,0x69,0xb6,0x86,0x3c,0xd7,0xa5,0xd9,
+ 0xc0,0x26,0x8c,0x1c,0x7d,0x6b,0xca,0x7c,0x35,0x64,0xc4,0xae,0x07,0xa7,0xe5,0x5e,
+ 0xd5,0x61,0x18,0x8a,0x11,0x9c,0xd7,0xcd,0xe3,0xa1,0x04,0xee,0x7b,0x54,0xf8,0xb3,
+ 0x15,0x04,0xa1,0x73,0x22,0xe3,0x4e,0x52,0x7a,0x53,0xad,0xb4,0x6d,0xfc,0x91,0x5a,
+ 0xcd,0x20,0x66,0xc1,0xad,0xfd,0x3d,0x11,0x86,0x2b,0xe4,0xb1,0xd8,0x97,0x4d,0x7b,
+ 0xa7,0x4f,0xfa,0xd3,0x89,0xa8,0xac,0xd9,0x82,0x34,0x75,0x54,0xdd,0x83,0xc5,0x62,
+ 0xdd,0x45,0xe4,0xee,0x1d,0x00,0xaf,0x57,0x92,0xdd,0x4c,0x47,0x23,0x07,0x18,0xaf,
+ 0x2d,0xf1,0x16,0x62,0x7c,0xf6,0xae,0x7c,0x26,0x2d,0xd5,0x7c,0xac,0xf0,0xb1,0xd8,
+ 0xda,0xb5,0x75,0x94,0x8e,0x0b,0x59,0xb9,0xda,0xac,0x33,0x5e,0x41,0xab,0x4d,0xb9,
+ 0xc8,0xc9,0xff,0x00,0x0a,0xef,0xf5,0xbb,0x8e,0xa0,0x1f,0x5f,0xc2,0xbc,0xbe,0xf1,
+ 0xf7,0xca,0x4d,0x7d,0xfe,0x51,0x4b,0x4e,0x6b,0x1e,0x6c,0x7b,0x94,0x72,0x31,0xd2,
+ 0xba,0x5f,0x0f,0xf8,0x9f,0x53,0xd0,0x2e,0x92,0xe6,0xc6,0x56,0x52,0xa7,0xa0,0x3c,
+ 0x57,0x38,0xc0,0x64,0x71,0x40,0x5e,0xc7,0xbd,0x7b,0x75,0xa8,0x42,0xb4,0x1d,0x3a,
+ 0x8a,0xe9,0x94,0xf5,0x3e,0xe0,0xf0,0x27,0xc5,0xbb,0x0d,0x76,0x38,0xec,0xf5,0x06,
+ 0x10,0xdc,0x70,0x37,0x13,0xc3,0x1a,0xf6,0xc8,0x18,0x49,0x86,0x5f,0x99,0x5b,0xbe,
+ 0x6b,0xf2,0xf2,0xd6,0xea,0x6b,0x39,0x56,0x58,0x58,0xab,0x29,0xcf,0x15,0xf5,0x3f,
+ 0xc3,0x0f,0x8a,0xc5,0xd6,0x3d,0x2b,0x57,0x7e,0x38,0x0a,0xec,0x7a,0x7a,0x0a,0xfc,
+ 0x7f,0x8a,0xb8,0x1d,0xd1,0x4f,0x13,0x80,0x5a,0x76,0xff,0x00,0x23,0x9a,0x6a,0x50,
+ 0xd6,0x3b,0x1f,0x53,0x3c,0x52,0xec,0x3b,0x79,0x03,0xfc,0xf4,0xae,0x87,0xc1,0x97,
+ 0x2f,0x6b,0x89,0x03,0xed,0x08,0xcc,0x30,0x3a,0xe4,0x37,0x15,0x87,0x6b,0x72,0xb3,
+ 0xc3,0xe6,0x44,0x43,0xab,0x2e,0x72,0x3f,0xc6,0x99,0xa3,0xde,0x08,0x65,0x96,0x32,
+ 0x42,0xe5,0xd8,0x01,0xdf,0xd7,0x15,0xec,0xf8,0x2b,0x8c,0xab,0x1c,0x7d,0x7a,0x32,
+ 0x7d,0x13,0xfb,0x8f,0xd4,0x3c,0x32,0xc4,0x45,0xe2,0x2b,0x42,0xfb,0xa5,0xfd,0x7e,
+ 0x27,0x79,0xe3,0x8d,0x3b,0xcf,0xf1,0x05,0xbf,0x89,0x55,0x46,0x35,0x4b,0x65,0x49,
+ 0x58,0x10,0x73,0x3c,0x23,0x1b,0x8e,0x3b,0x95,0xdb,0xcf,0xb5,0x3b,0x48,0xda,0xd6,
+ 0x92,0xf1,0xf7,0x9b,0x18,0xcd,0x6c,0x4e,0x5e,0xf7,0xc0,0xfe,0x7c,0x70,0x19,0x4d,
+ 0xa5,0xc2,0x48,0x65,0x50,0x4e,0xc4,0x3f,0x29,0x07,0xdb,0x07,0x9a,0xc4,0xd0,0xbc,
+ 0xb9,0x20,0x0a,0x08,0x4d,0xf2,0xf0,0x4f,0x4c,0x16,0xcf,0x35,0xfd,0x59,0x28,0x72,
+ 0xd4,0x6f,0xba,0xbf,0xdf,0xb9,0xfb,0xa6,0x5f,0x57,0x9b,0x0d,0x25,0xfc,0xad,0xa3,
+ 0xd3,0x6c,0xec,0x1a,0xf3,0x41,0x69,0x2c,0x93,0xce,0x66,0x05,0x42,0xc6,0x79,0xcb,
+ 0x70,0x38,0xeb,0x55,0x3c,0x3b,0x62,0x74,0xcb,0xd6,0x5b,0x80,0x03,0x95,0xd8,0x7d,
+ 0x89,0xff,0x00,0xeb,0x57,0x9f,0x79,0x33,0xe9,0xf6,0x86,0xf6,0x29,0x65,0x8c,0x43,
+ 0x73,0x96,0x78,0x5c,0x86,0xd8,0x5b,0x95,0x5c,0x1e,0x9d,0xc5,0x7a,0x15,0xbc,0xe2,
+ 0x19,0x92,0xe2,0x46,0x66,0x0c,0x40,0x25,0xbe,0xf7,0xcc,0x72,0x73,0xee,0x06,0x33,
+ 0x5b,0x51,0x9a,0x9a,0x4d,0xc6,0xcd,0x1c,0xd9,0xad,0x67,0xec,0xa3,0x46,0x2f,0x46,
+ 0xff,0x00,0x23,0x43,0x55,0x84,0x41,0x21,0x69,0x9c,0x9c,0xb1,0x39,0x1c,0x7d,0x05,
+ 0x73,0x37,0x65,0x9a,0x32,0x07,0xcc,0x36,0xf4,0xef,0xcf,0x43,0x5d,0x4e,0xb7,0x3a,
+ 0xdd,0x4a,0xa5,0x32,0x41,0x53,0xc6,0x3b,0x71,0x83,0x5c,0xa5,0xc8,0x40,0x8c,0x47,
+ 0xde,0xec,0x7b,0x57,0x16,0x25,0xde,0x4c,0xeb,0xc0,0x43,0x96,0x92,0xee,0xcc,0xc0,
+ 0x06,0xe2,0x1b,0xee,0x8c,0x01,0xed,0x49,0x7d,0x20,0x65,0x41,0x8c,0x02,0x7f,0x41,
+ 0x49,0x1c,0xd9,0x8f,0x6e,0x32,0xc4,0x9c,0xfe,0x7c,0x52,0xdf,0x3b,0x00,0x04,0x9c,
+ 0x15,0x1f,0xd6,0xbc,0x9a,0x8f,0xa1,0xde,0x9f,0xbc,0x8e,0x79,0x58,0xa1,0x79,0x18,
+ 0xe3,0x2d,0x9c,0x77,0xeb,0xcd,0x73,0xda,0xdd,0xe7,0x97,0x0e,0xde,0xa5,0xb9,0xff,
+ 0x00,0x1a,0xe8,0xe4,0xdb,0x19,0xc3,0x9c,0x92,0x70,0x3e,0xbd,0x6b,0x83,0xd4,0x99,
+ 0x65,0xb8,0x76,0x7e,0x8b,0xc0,0x19,0xae,0x78,0xc6,0x52,0x91,0xd7,0x52,0xb7,0x2c,
+ 0x1a,0x31,0x81,0x66,0x62,0xed,0x85,0x03,0x85,0xcf,0xa7,0xd6,0xa7,0x0c,0xa3,0x39,
+ 0xce,0xef,0x4a,0xaa,0xce,0xef,0x2f,0xcb,0xf2,0x81,0xd0,0xe3,0xa0,0xef,0x4d,0x2e,
+ 0xea,0x36,0xa9,0x1b,0x46,0x31,0x8f,0x7f,0xe9,0x5d,0x90,0x9a,0x8b,0xb5,0xcf,0x25,
+ 0xbb,0xea,0xce,0x93,0x4d,0xb9,0xdb,0x20,0xdb,0x9f,0x4f,0x5f,0xc8,0x7f,0x5a,0xdb,
+ 0x5d,0x52,0x2d,0x3e,0x62,0x23,0x62,0xa5,0xb9,0x66,0x27,0x2c,0x7d,0x8d,0x72,0x70,
+ 0xdc,0xcb,0x09,0x45,0x24,0x04,0x18,0xe0,0x0e,0x4f,0xf9,0xf7,0xa5,0xbb,0x31,0xc9,
+ 0xfb,0xc3,0x80,0x7f,0xbb,0x9c,0xfe,0x64,0x57,0x74,0x71,0x4e,0x31,0xd0,0xc5,0xd9,
+ 0xca,0xef,0x63,0xd7,0x7c,0x39,0xf1,0x4f,0x54,0xd1,0xae,0x45,0xbe,0x90,0xdb,0x5d,
+ 0x8e,0x3c,0xc7,0xc9,0x03,0xe8,0x2b,0xad,0xbe,0xd5,0xae,0xaf,0xf5,0x15,0x97,0x51,
+ 0x7d,0xf7,0x32,0xb7,0x9b,0x31,0x20,0x0c,0xb3,0x0c,0xee,0xc0,0xe3,0xd2,0xbe,0x7c,
+ 0xd2,0x0d,0xbf,0x9b,0x1c,0xac,0x36,0x90,0x79,0xfa,0xfa,0xd7,0xa9,0x49,0xa8,0x9b,
+ 0x8b,0xf4,0x7c,0x72,0x61,0x4e,0x87,0xb2,0x8c,0x0a,0xcb,0x19,0x8d,0x9c,0xe8,0x5e,
+ 0x72,0xd1,0x1b,0xe1,0x70,0xf4,0x95,0x77,0xcb,0x1d,0x5a,0xd5,0x9d,0x6c,0x57,0x51,
+ 0xc9,0xa8,0x36,0x4e,0x4c,0x51,0x9c,0x03,0xea,0xc7,0xb5,0x2d,0xde,0xa4,0xeb,0x2b,
+ 0x2a,0x9c,0x74,0x51,0xcf,0xa5,0x73,0xfa,0x64,0xe1,0xe6,0xb8,0x97,0x3c,0xee,0x0b,
+ 0x9f,0xa0,0xcd,0x57,0xba,0x98,0xf9,0x86,0x42,0x32,0xc4,0xd7,0x8e,0xb1,0x96,0xbb,
+ 0x67,0xa9,0x87,0xc2,0xad,0x2e,0x75,0x71,0xdf,0xc7,0xf6,0x7d,0x85,0xb0,0x72,0x09,
+ 0x63,0xcf,0xe9,0x4b,0x6d,0x7d,0x1c,0x12,0xef,0x66,0xc1,0x3d,0xc1,0xe7,0x1e,0x95,
+ 0xc4,0x5a,0xcc,0xaf,0x34,0x88,0xdb,0x9c,0xa2,0x82,0x70,0x7a,0x64,0xf5,0xfc,0x2a,
+ 0x70,0xd2,0xf9,0x84,0x06,0xfa,0x31,0xe3,0x03,0xfc,0x6b,0x8a,0x79,0x9b,0x72,0x7a,
+ 0x1d,0xb1,0xc0,0xa6,0x99,0xea,0x36,0xfa,0x97,0xda,0x1b,0x72,0xf0,0x78,0xe7,0xd2,
+ 0xbb,0x1d,0x2a,0x62,0x1b,0xf7,0x7c,0xbb,0x72,0x7d,0xbd,0xcf,0xf4,0x15,0xe5,0xba,
+ 0x72,0x38,0x0a,0xaa,0x48,0x18,0x1c,0xf5,0xcf,0xe3,0x5d,0xfe,0x9a,0xfe,0x52,0x02,
+ 0xf8,0x0a,0x48,0x1c,0x7d,0xe3,0xf8,0xd6,0x94,0xb1,0x4e,0x47,0xcf,0xe6,0x18,0x55,
+ 0x18,0xfb,0xa7,0xb3,0xe9,0x72,0x3f,0x90,0xa7,0x1d,0xba,0xd7,0x91,0xf8,0xbb,0x4e,
+ 0x5b,0x8f,0x14,0x7d,0xa5,0x79,0xdf,0x12,0x64,0xfb,0xa9,0x22,0xbb,0x9d,0x22,0xed,
+ 0xe4,0x55,0x50,0x58,0x27,0x41,0xd8,0x9f,0xf0,0x15,0x5f,0x54,0xd3,0xd4,0xca,0x2e,
+ 0xb2,0x0f,0x51,0xf4,0x1e,0xb5,0xf9,0xff,0x00,0x8b,0x31,0x9d,0x4e,0x19,0xc4,0xca,
+ 0x9a,0xbf,0x2d,0xa5,0xf2,0x4f,0x5f,0xb9,0x33,0xe0,0x71,0xd8,0x4d,0x55,0xfb,0x9c,
+ 0x9a,0x46,0x21,0x8c,0x55,0xdb,0x56,0x39,0xaa,0x77,0x4c,0x0c,0x98,0x1d,0x05,0x49,
+ 0x6a,0x46,0x41,0xee,0x6b,0xfc,0xfe,0xad,0x16,0xef,0x26,0x7a,0xd4,0xb4,0x89,0xd4,
+ 0xc2,0x78,0x00,0x56,0x8c,0x4c,0x49,0x06,0xb2,0xad,0xc8,0xdb,0xed,0x5a,0x91,0x64,
+ 0x9c,0xd7,0x05,0x58,0xe8,0x6b,0x19,0x6a,0x6e,0x42,0xe1,0x40,0x1f,0xd6,0x9f,0x35,
+ 0xc7,0xcb,0x8a,0xad,0x11,0xe3,0xe9,0x51,0xce,0x48,0x3d,0x6b,0xce,0x9c,0x6e,0xec,
+ 0x68,0x99,0x0c,0xb2,0x7c,0xb9,0x35,0x91,0x34,0xb8,0xe4,0x75,0xab,0x92,0xbf,0x1c,
+ 0x56,0x45,0xc3,0x1e,0xd4,0x46,0x01,0x2d,0x46,0x19,0x8e,0xff,0x00,0xc6,0xa6,0x59,
+ 0xce,0x39,0xac,0x87,0x93,0x9c,0x9a,0x95,0x25,0xc7,0x18,0xad,0x39,0x34,0x39,0x9e,
+ 0x87,0x49,0x6d,0x71,0x86,0xae,0xaa,0xda,0xec,0x84,0x18,0x35,0xe7,0xb0,0xca,0x78,
+ 0x15,0xd0,0x41,0x72,0x76,0xf5,0x35,0x31,0x8d,0x88,0x67,0xff,0xd4,0xf8,0xf6,0xee,
+ 0x6c,0x67,0xd2,0xb2,0x0d,0xc6,0x1b,0xae,0x29,0x6e,0xa7,0xe4,0x80,0x71,0xef,0x58,
+ 0x8f,0x39,0x53,0xd7,0x83,0x5f,0x13,0x88,0x9d,0xd9,0xfe,0x8a,0x51,0xa9,0x64,0x91,
+ 0xb8,0x6e,0xba,0xd4,0x90,0x4d,0x96,0xcd,0x72,0xcd,0x77,0xce,0x01,0xe3,0xd2,0xb4,
+ 0xad,0x2e,0x47,0x04,0xf4,0xe9,0x5c,0x37,0xbc,0xce,0xd8,0xd5,0xd3,0x46,0x77,0x36,
+ 0x7b,0xa7,0x91,0x20,0x8f,0xab,0xe0,0x0f,0xc7,0xda,0xbe,0x8a,0xf0,0xf5,0xa5,0x8e,
+ 0x95,0xa3,0x18,0x9d,0x77,0x3a,0xa0,0xd8,0x47,0xf7,0x8f,0x24,0xd7,0x84,0x78,0x2e,
+ 0xdb,0xed,0x37,0x7f,0x68,0x7e,0x15,0x4e,0x17,0xea,0x6b,0xdf,0x99,0x56,0x0d,0x39,
+ 0x0b,0x0f,0xbc,0x4e,0x6b,0xdf,0xc0,0xc6,0xd1,0xf6,0x8c,0xe5,0xa9,0x25,0x39,0xd8,
+ 0xa4,0xb3,0x00,0x42,0x4a,0xa0,0x92,0xd9,0xce,0x7f,0x4a,0xd0,0xb6,0x88,0x49,0x74,
+ 0xd2,0xed,0xc2,0x93,0xd0,0x7f,0x2a,0x64,0x91,0x44,0xf0,0xac,0x85,0x46,0x66,0x00,
+ 0xa9,0xee,0x00,0xa9,0xad,0x1e,0x48,0xd4,0x6d,0xc0,0x75,0x5c,0x71,0xc9,0xc6,0x6b,
+ 0xa3,0xda,0x73,0x6b,0xd1,0x02,0x9d,0xe2,0xda,0xdc,0xda,0x92,0x39,0x21,0xb6,0xf3,
+ 0xbe,0xea,0xb0,0xe3,0x8a,0xf3,0x0d,0x76,0x37,0xb9,0x2d,0x24,0x99,0xfd,0xd8,0x3b,
+ 0x6b,0xbd,0xbd,0xbe,0x93,0xcb,0x51,0x93,0x8f,0x7a,0xe2,0x35,0xa9,0x23,0x89,0x30,
+ 0xcc,0x70,0xdc,0x9f,0x7a,0xf3,0x71,0x35,0x39,0x9b,0x3b,0x72,0xd8,0xb5,0x2b,0xb3,
+ 0x8d,0x85,0x95,0x5c,0x61,0x86,0x3d,0xeb,0x79,0x6f,0x04,0x96,0xe6,0x30,0x38,0xfc,
+ 0xab,0x8e,0x9a,0x74,0x7b,0x82,0x10,0x00,0x07,0x6a,0xdb,0xb0,0x76,0x92,0x32,0xa0,
+ 0x8e,0x2b,0xcb,0x8c,0xaf,0xee,0x9f,0x45,0x52,0x2a,0xd7,0x46,0x26,0xa3,0x3f,0x95,
+ 0xb9,0x54,0x61,0x8e,0x6b,0x98,0x92,0x67,0x3c,0xb7,0x19,0xeb,0x5d,0x4e,0xa7,0x6b,
+ 0xc3,0x4b,0x2b,0x67,0xd3,0x15,0xc6,0x4d,0x2b,0x6d,0x35,0xe1,0xe2,0x93,0x8c,0x8f,
+ 0x43,0x0e,0xb9,0xa2,0xc3,0xcc,0x27,0x2a,0xdc,0xe6,0xba,0x7f,0x0f,0xa9,0xfb,0x52,
+ 0xaf,0xad,0x71,0x71,0x48,0x4f,0xe1,0x5d,0xbf,0x87,0x1b,0x13,0x2c,0x83,0x92,0x38,
+ 0xf4,0xad,0xb0,0x4e,0xf3,0x47,0x36,0x2e,0xa5,0xa9,0xc8,0x65,0xf4,0x87,0xed,0xd7,
+ 0x4b,0xce,0x40,0x02,0xb5,0xf4,0xeb,0xc9,0x13,0x4e,0x01,0x7a,0x83,0x9c,0x8e,0xb5,
+ 0x91,0x76,0x58,0xde,0xdf,0x13,0x8a,0xb1,0x6b,0x83,0x62,0x1b,0x3c,0x9f,0x4f,0x4a,
+ 0xf4,0x62,0xbd,0xf6,0xfd,0x7f,0x33,0xcf,0x8d,0x5b,0xc1,0x2f,0x43,0xab,0xd3,0x35,
+ 0xa6,0x8d,0x04,0x6c,0x7e,0x6c,0x55,0x46,0xd4,0xe4,0xfb,0x44,0xbb,0xce,0x03,0xf2,
+ 0x2b,0x97,0xb7,0x97,0xe7,0x27,0xdf,0x15,0x77,0x55,0x90,0x2c,0x09,0x34,0x67,0x91,
+ 0xd7,0xd6,0xb8,0x31,0xb4,0x7d,0xbd,0x16,0x9e,0xe8,0xf4,0xb2,0xfa,0xde,0xc6,0xb2,
+ 0x7d,0xcb,0xab,0x7f,0x89,0xcb,0xb9,0xc9,0x00,0xe3,0x3d,0xab,0x97,0xd4,0xaf,0x99,
+ 0xa4,0x25,0x9b,0x70,0xcd,0x56,0xbb,0xb8,0x7f,0x21,0xa5,0x46,0xc7,0x1d,0x7e,0xb5,
+ 0xce,0x1b,0xc3,0x29,0xc3,0xe4,0x9a,0xf1,0xb0,0xc9,0xc6,0x8f,0x2f,0x99,0xeb,0x63,
+ 0xea,0xaf,0x69,0x73,0x83,0xf8,0x8b,0x22,0xc8,0xb0,0x1f,0x7a,0xf2,0xad,0x83,0x3e,
+ 0xf5,0xe8,0x9e,0x3f,0x90,0x6e,0xb7,0x4f,0xa9,0xaf,0x35,0x32,0x01,0x80,0x7b,0x57,
+ 0xd9,0x65,0xd4,0x24,0xe8,0xa6,0x91,0xfe,0x74,0x78,0xc9,0x5f,0xda,0xf1,0x56,0x29,
+ 0xae,0x96,0x5f,0x80,0xe6,0x88,0x60,0xf1,0xfe,0x7d,0xab,0x36,0x6b,0x7e,0x0f,0xa1,
+ 0xab,0x8d,0x72,0x14,0x60,0x7f,0x3a,0xa1,0x35,0xd6,0x47,0x5e,0xbf,0xe7,0xad,0x7b,
+ 0xd8,0x6c,0x34,0xfb,0x1f,0x96,0x98,0xb7,0x11,0x81,0x9a,0xc2,0x99,0x00,0xfb,0xbc,
+ 0x56,0xe4,0xf2,0x06,0x24,0x1e,0x6b,0x2a,0x40,0x49,0xe3,0xbd,0x7b,0x34,0xa0,0xe2,
+ 0x8a,0x48,0xcd,0x64,0xe3,0xa6,0x71,0x57,0xec,0x2d,0x8b,0xca,0x32,0x3b,0xd4,0x66,
+ 0x3e,0xc3,0xad,0x75,0x7a,0x1d,0x91,0x91,0xd7,0x8f,0x43,0x45,0x69,0x35,0x16,0x39,
+ 0x3d,0x0e,0xff,0x00,0xc3,0x76,0x58,0x0a,0x78,0xcf,0xa1,0xaf,0x40,0x97,0xf7,0x30,
+ 0x01,0xea,0x2b,0x33,0x45,0xb5,0x11,0xc6,0x0e,0x31,0xf5,0xab,0xb7,0xee,0x01,0x23,
+ 0xa0,0xaf,0x91,0xc7,0x4f,0x99,0xb3,0x9d,0xbd,0x74,0x28,0x24,0x84,0xbf,0xb5,0x75,
+ 0xba,0x4b,0xfc,0xcb,0xeb,0x5c,0x64,0x67,0x2d,0x5d,0x4e,0x98,0xd8,0x65,0xfe,0xb5,
+ 0xf2,0x59,0x9c,0x1b,0x8b,0x37,0xa1,0x27,0x7d,0xce,0xeb,0xef,0x46,0x48,0xf4,0xaf,
+ 0x23,0xf1,0x82,0x04,0x0e,0x7d,0x3b,0x57,0xac,0x23,0x81,0x15,0x79,0x37,0x8d,0x1b,
+ 0xf7,0x6f,0xcf,0x63,0x5e,0x7e,0x51,0x77,0x5d,0x23,0xa6,0xa2,0xbc,0x4f,0x9f,0xf5,
+ 0xb9,0xf3,0x9a,0xe1,0xdc,0x96,0x62,0xd5,0xd0,0x6a,0xd2,0x16,0x91,0x97,0x35,0x85,
+ 0xb4,0x1e,0x4e,0x78,0xaf,0xd8,0xb0,0x51,0xe5,0xa6,0x91,0x8c,0x6f,0xd0,0x80,0x80,
+ 0x79,0x22,0x8c,0x73,0xff,0x00,0xd7,0xa9,0x31,0xed,0x49,0x8f,0x4e,0x6b,0xb0,0x1b,
+ 0x18,0x79,0x1e,0x86,0xac,0x5a,0xdc,0x49,0x6b,0x20,0x92,0x33,0xb4,0x83,0xd8,0xfa,
+ 0x54,0x45,0x78,0xeb,0x8a,0x02,0x86,0x1c,0x9a,0x52,0x49,0xa6,0x98,0x35,0xdc,0xfa,
+ 0xe3,0xe1,0x37,0xc4,0xd2,0x51,0x34,0x8d,0x4d,0xf2,0x38,0x08,0xcc,0x7f,0x4a,0xf7,
+ 0x5d,0x32,0x74,0x9f,0x53,0x9c,0xc6,0xdf,0xbb,0x67,0xcf,0x07,0x19,0xe3,0x8a,0xfc,
+ 0xe2,0xd3,0xef,0x26,0xb2,0x9d,0x25,0x85,0x88,0x2a,0x41,0xeb,0x8a,0xfb,0xa3,0xe1,
+ 0x65,0xec,0xba,0x96,0x99,0x6b,0x75,0x33,0x12,0xee,0xb9,0x27,0x19,0xe7,0x38,0xfc,
+ 0xeb,0x8b,0x85,0xf2,0x0a,0x38,0x3c,0xe6,0x58,0xba,0x4a,0xca,0x4a,0xd6,0xf9,0x9f,
+ 0x71,0xe1,0xed,0x3f,0x67,0x8d,0xab,0x24,0xf4,0x71,0xfd,0x4f,0xb5,0xbe,0x1c,0x6b,
+ 0x90,0xdb,0x5b,0xbe,0x97,0x34,0x60,0xc5,0x2a,0x10,0xcb,0xdb,0xe6,0xeb,0xbb,0xeb,
+ 0x9e,0x95,0xca,0xcb,0xa7,0xa6,0x91,0xac,0xcd,0xa6,0xc0,0x77,0x45,0x0c,0xcc,0x50,
+ 0x9f,0xee,0x11,0xb9,0x7f,0x20,0x71,0x50,0xf8,0x4e,0x1d,0xf3,0x85,0x8e,0x42,0x8c,
+ 0x0f,0x27,0x39,0x1d,0x7d,0x7d,0x7d,0xff,0x00,0x2a,0xd0,0xf1,0x5a,0x3d,0x87,0x88,
+ 0xd3,0x73,0x16,0xf3,0x6d,0x77,0x9f,0x5f,0x94,0x15,0xe2,0xbf,0xa0,0x2b,0xbb,0xd0,
+ 0x84,0x9f,0x43,0xf6,0x2c,0xae,0xaf,0x26,0x22,0xa4,0x13,0xf8,0x97,0xe2,0x8b,0xd6,
+ 0x31,0xc0,0x74,0x56,0x96,0x65,0xca,0x93,0xb8,0x75,0xec,0x72,0x2a,0x8e,0xa5,0x3c,
+ 0x91,0xc5,0x0e,0xd3,0x9c,0x60,0xb6,0x47,0x52,0xdc,0xfd,0x2b,0x63,0x51,0x48,0xad,
+ 0x74,0x9d,0x36,0xd9,0x65,0xc3,0x3a,0x96,0x60,0x78,0xe0,0x7a,0xfe,0x35,0xcc,0x5d,
+ 0xdc,0x79,0x80,0xc6,0x87,0x72,0xab,0x6e,0x24,0xfb,0xf4,0xfc,0xab,0x9a,0xaa,0x4b,
+ 0xdd,0xb6,0xc6,0xf5,0x6a,0x7b,0x4c,0x4a,0x6b,0x64,0x6e,0x2d,0xec,0x81,0x54,0x6e,
+ 0x25,0xf1,0xb4,0xf5,0xe7,0xda,0xab,0x49,0xd0,0xe7,0x8e,0x0f,0x1e,0xb5,0x55,0xa4,
+ 0xc4,0xdb,0x3f,0xba,0xd9,0x3c,0x1d,0xa7,0x1e,0xfc,0xd1,0x3d,0xe3,0x2b,0x71,0x8c,
+ 0x91,0x8e,0x3e,0xbd,0xbd,0xeb,0xce,0xaa,0xb5,0xd4,0xf6,0xe9,0x55,0x52,0x8a,0x48,
+ 0x08,0x22,0x34,0x2d,0xc9,0x19,0xf6,0x15,0x4e,0xe9,0xf7,0x12,0xe4,0xf0,0x5b,0x9c,
+ 0x9f,0x4f,0x7a,0xb2,0xb7,0x02,0x66,0x07,0x19,0xda,0x71,0x9e,0xb5,0x99,0x7b,0x21,
+ 0xc3,0x60,0x79,0x60,0x29,0xed,0x9e,0x4f,0x53,0x5e,0x65,0x45,0xef,0x58,0xde,0x33,
+ 0x7d,0x4c,0x6d,0x52,0xe5,0x63,0x87,0x03,0x6b,0x64,0x9e,0x86,0xbc,0xf6,0xe9,0xdd,
+ 0x8e,0xd1,0x91,0x9c,0xf7,0xe7,0xf1,0xae,0x8b,0x52,0xb8,0xf3,0x24,0x0a,0x07,0xdd,
+ 0xce,0x7f,0x0a,0xe6,0x81,0x0e,0xce,0xd9,0xf6,0x03,0xfc,0xf6,0x34,0x72,0xb4,0xac,
+ 0x45,0x4a,0xfc,0xcf,0x95,0x6c,0x57,0x4e,0xbb,0x79,0xc8,0xfe,0x58,0xa1,0x8c,0xa5,
+ 0x95,0x71,0xd7,0xa7,0xa9,0xfa,0xd5,0xc8,0xe1,0x4c,0xe1,0xb8,0x63,0xc7,0x07,0x8a,
+ 0x64,0xd2,0x22,0x7c,0x90,0x64,0x38,0xe1,0x99,0xb9,0xfc,0x69,0x4a,0x2d,0x46,0xed,
+ 0x89,0xdf,0xa1,0x56,0x40,0x10,0xee,0x07,0x39,0xe3,0x24,0xf1,0x57,0x51,0x7c,0xd8,
+ 0x86,0x5f,0x00,0x75,0x3d,0x17,0xf0,0xf5,0xac,0x29,0xd8,0xc8,0x44,0x49,0xf2,0x63,
+ 0xef,0x1c,0xd6,0xae,0x9f,0x89,0x53,0xca,0x77,0x3c,0x77,0xef,0xf8,0x2f,0x6f,0xad,
+ 0x44,0x2a,0x2e,0x6b,0x11,0x24,0xd2,0xb8,0xa6,0x43,0x1b,0x84,0x8c,0xe4,0x64,0x11,
+ 0xec,0x7f,0xc6,0xbd,0x07,0x44,0x70,0x21,0x92,0xea,0x53,0xca,0xa0,0x5f,0xf1,0xae,
+ 0x46,0xde,0xd6,0x0d,0xc3,0x81,0x8c,0xf7,0xf5,0xef,0x5d,0x6d,0xc7,0x97,0x06,0x96,
+ 0xa2,0x16,0x04,0xcd,0xb7,0xe5,0x1d,0x8f,0x4a,0xc3,0x1d,0x19,0x7b,0x07,0x27,0xdc,
+ 0xdf,0x01,0x3f,0xdf,0xa4,0x6c,0x5b,0xce,0x2d,0xb4,0xf5,0x76,0xff,0x00,0x96,0xee,
+ 0xd2,0x03,0xea,0x09,0xc0,0xfe,0x55,0x46,0xf7,0x50,0x31,0xaa,0xe4,0xf2,0xf9,0x20,
+ 0x55,0x4d,0x42,0x5f,0x25,0x56,0x11,0x9c,0x42,0x81,0x46,0x4f,0x70,0x2b,0x1f,0x49,
+ 0x8d,0xb5,0x3d,0x4d,0x23,0x91,0xbe,0x54,0xe4,0x93,0xd9,0x57,0x93,0x5f,0x3f,0xcc,
+ 0xde,0x87,0xd7,0x42,0x1b,0x44,0xf4,0xdd,0x06,0xde,0x04,0xb5,0xdc,0xc3,0x75,0xe4,
+ 0x87,0x7b,0xa9,0xe1,0x79,0x03,0x0a,0x3e,0x83,0xd3,0xbd,0x69,0x25,0xba,0x34,0xc2,
+ 0x46,0x53,0xc7,0x40,0x3a,0x0a,0xe7,0x05,0xee,0xd9,0xf7,0x87,0xc1,0x66,0xc0,0x6a,
+ 0xdd,0x8e,0xe5,0xa5,0x60,0x50,0x75,0xe3,0x35,0x9a,0xa5,0x77,0x74,0x69,0x64,0xaf,
+ 0x63,0xaa,0xb4,0x01,0x48,0xea,0x00,0xec,0x05,0x75,0xba,0x6b,0xc5,0xe6,0x8d,0xdc,
+ 0xb6,0x78,0x5a,0xe5,0xb4,0xb3,0x98,0xcb,0x49,0x9e,0x78,0xcd,0x74,0xba,0x74,0x8b,
+ 0x14,0x9b,0xb6,0xfe,0x9c,0xfe,0x75,0xd7,0x49,0xd9,0xad,0x4f,0x9c,0xcc,0x23,0x75,
+ 0x23,0xd1,0xf4,0xaf,0x9b,0xe7,0x71,0xb5,0x57,0xa6,0x07,0x53,0xf5,0xa9,0xf5,0xe7,
+ 0x61,0x6a,0x36,0xa8,0x19,0x3c,0x9e,0x9f,0xa5,0x67,0xe9,0x93,0xfc,0xe0,0x13,0xd7,
+ 0xf1,0xe2,0xa7,0xf1,0x14,0xe5,0x21,0x8a,0x32,0x71,0xb8,0x92,0x05,0x7c,0xef,0x88,
+ 0xd5,0xe9,0xd3,0xe1,0x9c,0x7c,0xa5,0xb7,0x23,0x5f,0x7e,0x8b,0xf1,0x3e,0x03,0x15,
+ 0x17,0xcf,0x63,0x83,0x9a,0x4f,0x9c,0x9a,0xb1,0x6b,0x2f,0x35,0x9d,0x75,0x27,0xcf,
+ 0xcd,0x25,0xbc,0xc4,0x1f,0x97,0x8a,0xff,0x00,0x3e,0x2a,0xa4,0xd1,0xbc,0x34,0x47,
+ 0x6b,0x6d,0x29,0x3c,0xfb,0x57,0x41,0x6e,0x77,0x63,0xb5,0x71,0x96,0x72,0x1d,0xc3,
+ 0x9a,0xeb,0xec,0x32,0xc0,0x1e,0xd5,0xe4,0xd5,0xea,0x33,0xa0,0x85,0x41,0x50,0x7d,
+ 0x2a,0xb5,0xc8,0xad,0x08,0xb8,0x4a,0xa1,0x79,0xdc,0x0e,0xf5,0xc3,0x6b,0xc8,0x6e,
+ 0x4c,0xc5,0x91,0xab,0x2a,0x7e,0x7a,0xfe,0x75,0x76,0x63,0xf3,0x10,0x7b,0x55,0x09,
+ 0x4e,0x73,0x5d,0x51,0xa4,0xbb,0x12,0xe6,0xd9,0x9c,0xe3,0x92,0x29,0x53,0x34,0xae,
+ 0x00,0x39,0x14,0xab,0xd2,0xae,0x50,0xb1,0x1c,0xd7,0x64,0xa8,0xd8,0x38,0xad,0x18,
+ 0xa6,0x20,0x64,0x56,0x56,0x71,0xcf,0x4a,0x53,0x2e,0x14,0x1f,0xca,0xb9,0xe6,0x9a,
+ 0xb9,0x51,0x57,0x67,0xff,0xd5,0xf8,0x3a,0xe2,0x7c,0x92,0x05,0x62,0xdc,0xdc,0x00,
+ 0x0f,0x35,0x3d,0xcc,0xa1,0x41,0x3d,0x2b,0x9a,0xbc,0xb9,0xea,0x09,0xaf,0xcf,0xea,
+ 0xd5,0xde,0xe7,0xfa,0x07,0x0a,0xfa,0x16,0x0d,0xc9,0xdf,0xc9,0x3f,0xe7,0xd6,0xb6,
+ 0x2d,0xee,0x36,0xa8,0xc1,0xe4,0xd7,0x17,0x1c,0xdb,0x9f,0x77,0xad,0x6e,0x59,0xcd,
+ 0xba,0x44,0x4c,0xe7,0x24,0x0a,0xe5,0x8c,0xae,0xee,0x8e,0x8a,0x75,0x8f,0xa5,0x3c,
+ 0x25,0x04,0xb1,0x58,0xc5,0x24,0x63,0x90,0x03,0x9f,0xad,0x7b,0x0d,0xb4,0xf7,0x3a,
+ 0x95,0x88,0x52,0xb8,0x8c,0x61,0x73,0x8e,0xa6,0xbc,0x9f,0xc3,0xd7,0x42,0xd2,0xc3,
+ 0xe5,0x60,0x32,0xa0,0x11,0xdf,0xa5,0x77,0x1a,0x66,0xa9,0x73,0xf6,0x63,0x1c,0x7c,
+ 0x2a,0x65,0xfd,0x39,0xed,0x5f,0x4f,0x05,0xc9,0x05,0xe8,0x55,0x2a,0xcd,0xa7,0xa6,
+ 0xab,0xa9,0xd4,0x4b,0x0c,0xd6,0xb2,0x2c,0x64,0x6e,0x58,0xfe,0x51,0x8e,0xe4,0x0e,
+ 0x71,0x53,0x5b,0xc6,0xc8,0xde,0x72,0x75,0x90,0x77,0xf7,0xac,0xfb,0x3b,0xb7,0xf2,
+ 0x8d,0xe1,0xf9,0xcf,0x20,0xee,0xe8,0x09,0xab,0x56,0xf3,0x19,0xbc,0xd9,0x3e,0xe8,
+ 0x40,0x31,0x9f,0xe9,0x53,0xcc,0xb9,0x2c,0x5a,0x6e,0xcd,0x4b,0xa0,0x9a,0x84,0xe2,
+ 0x15,0x31,0xbf,0x2c,0x06,0x7f,0xc8,0xae,0x13,0x5b,0xb9,0xfb,0x46,0xd5,0x27,0x18,
+ 0x1c,0x9e,0xf5,0xd0,0x5c,0x4c,0x6e,0x26,0xc8,0x1b,0xdd,0x4f,0x39,0xae,0x5b,0x56,
+ 0x78,0xe5,0x60,0x47,0x6e,0x5b,0x1e,0xbe,0x95,0xc1,0x1f,0x7b,0x99,0x9e,0x9d,0x3a,
+ 0x8e,0x9d,0x97,0x53,0x8d,0x2d,0xf3,0xb0,0xc1,0x1e,0xb5,0xb1,0xa6,0xdc,0x95,0x1b,
+ 0x71,0xc6,0x6b,0x0e,0xe4,0xb0,0x0e,0xc7,0xa1,0xfe,0x7e,0x95,0x1d,0x8c,0xd3,0x11,
+ 0x86,0x3b,0x79,0xfe,0x55,0xc1,0x51,0xf2,0xca,0xe7,0xb9,0x49,0xf3,0x47,0x53,0xaa,
+ 0xbe,0x58,0x67,0x8c,0x84,0x1c,0xe7,0x91,0xd2,0xb8,0x2d,0x4e,0x25,0x8a,0x43,0xb7,
+ 0x9f,0x5f,0x6a,0xed,0x62,0x3e,0x64,0x64,0x74,0xae,0x47,0x58,0x45,0x89,0xce,0x3a,
+ 0xe7,0x39,0xfa,0xd7,0x9f,0x8b,0x87,0x32,0xb9,0xd9,0x42,0x7c,0xba,0x1c,0xf8,0x56,
+ 0x0d,0xb8,0x72,0x2b,0xb6,0xf0,0xfb,0x79,0x2c,0xb9,0x1c,0x1a,0xe3,0x33,0x92,0x07,
+ 0x42,0x6b,0xab,0xd1,0xdc,0xa3,0x6d,0x93,0xa0,0x1c,0x54,0x60,0xd5,0xa5,0xa1,0x8e,
+ 0x3a,0x77,0x83,0x06,0x73,0x25,0xd5,0xf3,0x72,0x70,0x0f,0x4a,0x9a,0x39,0x15,0x74,
+ 0xe0,0x99,0xc1,0x23,0xf2,0xaa,0x31,0x3b,0x79,0x77,0x92,0x8c,0xe0,0x92,0x33,0xed,
+ 0xd2,0xa4,0x88,0x23,0x5a,0x29,0xcf,0xcd,0x8a,0xec,0xbb,0xfc,0xff,0x00,0x33,0xcf,
+ 0x87,0xf9,0x10,0xc5,0x28,0xfc,0x01,0xc0,0xa9,0xef,0x6e,0x73,0x01,0x8c,0xf0,0x48,
+ 0xaa,0x00,0xec,0x6c,0xe6,0xb2,0x66,0xb9,0x67,0x77,0xcf,0x3d,0x86,0x6b,0x25,0xee,
+ 0xab,0x1e,0x9c,0x57,0x51,0x97,0x17,0x05,0x6d,0x04,0x7d,0x39,0x26,0xb9,0xf1,0x31,
+ 0x12,0x7c,0xb5,0x2d,0xd5,0xcb,0x93,0xb0,0xfd,0x3e,0x95,0x52,0x01,0x99,0x46,0x4d,
+ 0x79,0xad,0x29,0x4a,0xc8,0x31,0x75,0xf9,0x60,0xe4,0xde,0xa7,0x9d,0xf8,0xf6,0x66,
+ 0xfb,0x74,0x51,0xe7,0x05,0x53,0x9f,0xc6,0xbc,0xf5,0x9f,0xf8,0x6b,0xad,0xf1,0x94,
+ 0x86,0x6d,0x66,0x41,0xfd,0xd0,0x07,0x15,0xc8,0x94,0xce,0x7d,0x3b,0x57,0xdc,0x65,
+ 0x95,0xa1,0x0a,0x31,0x8b,0x3f,0xce,0x4e,0x3f,0xc5,0xfd,0x67,0x88,0x31,0x95,0x6f,
+ 0x7f,0x79,0xfe,0x1a,0x14,0xe5,0x62,0x7a,0x71,0xed,0x54,0x1c,0x9f,0x53,0x5a,0xaf,
+ 0x18,0xfc,0xaa,0x94,0xa8,0x00,0xfe,0x95,0xf4,0x34,0x6a,0x46,0x4a,0xd1,0x3e,0x3d,
+ 0x33,0x35,0x93,0x3d,0x7e,0xa6,0xa0,0x64,0xf6,0xab,0xe5,0x4f,0x5a,0x81,0x97,0x9c,
+ 0x57,0x4d,0xba,0x97,0x72,0x38,0x21,0xf3,0x24,0x00,0xd7,0xa6,0xf8,0x7a,0xc1,0xb7,
+ 0x2e,0x16,0xb8,0xed,0x2e,0xd7,0xcd,0x70,0x71,0xe9,0x5e,0xcd,0xa0,0x58,0xed,0x45,
+ 0x38,0xe3,0x8a,0xf2,0xf1,0xf5,0xb9,0x55,0x96,0xe6,0x35,0x25,0xd0,0xe8,0x20,0x87,
+ 0xca,0x83,0x70,0xe2,0xb1,0x6e,0xd8,0x6e,0xe3,0x22,0xba,0x1b,0xbf,0xdd,0xc6,0x14,
+ 0xf1,0x8a,0xe5,0x2e,0x5f,0xe6,0x27,0xa5,0x7c,0x95,0x67,0x7d,0x4c,0x37,0x21,0x4f,
+ 0xbd,0xd3,0xa5,0x75,0x1a,0x73,0x8c,0x67,0x35,0xc8,0x47,0x27,0xcd,0x81,0xd2,0xba,
+ 0x4d,0x39,0xc1,0xc5,0x78,0xd8,0xf8,0xfb,0xa6,0xf4,0x5a,0x4e,0xc7,0x70,0x1f,0xfd,
+ 0x1f,0x8e,0xb5,0xe4,0xfe,0x33,0x7f,0xdd,0x3f,0xd3,0x35,0xea,0x6a,0x73,0x6e,0x30,
+ 0x6b,0xca,0x3c,0x60,0x33,0x1b,0x73,0xd8,0xf6,0xaf,0x3b,0x25,0x85,0xab,0xa4,0x76,
+ 0xee,0x7c,0xe1,0x7e,0x73,0x3b,0xfb,0x1a,0xa0,0x46,0x09,0xcd,0x69,0x5e,0x2f,0xfa,
+ 0x43,0xfd,0x4d,0x52,0xc7,0x1c,0xf3,0x5f,0xb2,0x53,0x8f,0xba,0x92,0x30,0x6a,0xda,
+ 0x15,0xd8,0x10,0x32,0x46,0x29,0xb8,0x35,0x3e,0xdc,0x75,0x34,0xd3,0x82,0x31,0x9c,
+ 0xff,0x00,0x8d,0x5b,0x40,0x43,0x8e,0xf8,0xeb,0x47,0xbd,0x48,0x40,0xcf,0xbd,0x2e,
+ 0x3b,0xd2,0x01,0x23,0x18,0x65,0x3e,0xf5,0xf6,0xa7,0xc2,0x77,0x90,0x78,0x72,0xc8,
+ 0x29,0xda,0x5b,0x70,0xdd,0xd8,0x61,0xba,0xd7,0xc5,0xcb,0xd4,0x0a,0xfb,0x37,0xe1,
+ 0x4c,0x86,0x2f,0x0e,0xd8,0xa6,0xdc,0xb3,0xef,0x23,0xdb,0x2e,0x79,0xaf,0x43,0x2b,
+ 0x76,0xc4,0x26,0x7d,0xef,0x02,0x4b,0xfd,0xb2,0x56,0xec,0x7d,0x2f,0xa4,0xdf,0xcd,
+ 0x0c,0x91,0x25,0xb6,0xe0,0xab,0xd5,0xb3,0xf3,0x12,0x3d,0x71,0x5a,0x5a,0xf6,0xa7,
+ 0x2c,0x9a,0xb4,0x12,0xcc,0xee,0x73,0x6c,0xca,0xa1,0xf8,0x23,0xe6,0x1f,0xe3,0x59,
+ 0x9a,0x10,0x13,0x3a,0x94,0x27,0xcb,0x38,0xc3,0x0e,0x37,0x7b,0xfd,0x3b,0x0a,0xd5,
+ 0xf1,0xac,0x56,0xd1,0xc9,0xa7,0x35,0xb1,0x2c,0x5f,0x74,0x67,0x3d,0x72,0x70,0x7a,
+ 0xfd,0x45,0x7e,0xac,0xe7,0x27,0x86,0xe6,0xbe,0x87,0xea,0xd8,0x3a,0xd1,0x8e,0x26,
+ 0x29,0xae,0xe7,0x49,0x7d,0x20,0xba,0x4d,0xd2,0xb6,0x56,0x38,0xd7,0x6f,0xb7,0x73,
+ 0xcd,0x73,0x11,0x5d,0xe6,0x46,0x20,0x70,0x54,0x8c,0xf5,0xce,0x3a,0x7a,0x53,0x66,
+ 0xd4,0x32,0x3c,0xb6,0x3f,0x29,0x56,0x53,0xec,0x47,0x1f,0xd2,0xb2,0xad,0x64,0x5d,
+ 0xeb,0x86,0x0c,0xc4,0x12,0x47,0x4a,0xc5,0xd4,0x4d,0xdd,0x9b,0x51,0x93,0xe6,0x94,
+ 0x9f,0x53,0xaa,0x91,0xe4,0xda,0x03,0x39,0xe9,0x90,0x3d,0x41,0xe6,0xa8,0x0b,0xa2,
+ 0xac,0xbb,0xb0,0x48,0x20,0x9c,0x75,0xc6,0x7d,0x7d,0x6a,0x4b,0xb9,0x9c,0xc6,0x8e,
+ 0xa5,0x7e,0x65,0x50,0x48,0x1c,0x9c,0x75,0xac,0x58,0xdc,0x17,0x55,0x63,0x90,0x18,
+ 0x93,0xf4,0xc1,0xac,0x6b,0x24,0xd1,0xdf,0x42,0xbd,0x99,0xd6,0x59,0x48,0x8e,0xdb,
+ 0xcf,0x46,0xce,0x01,0xeb,0xcd,0x66,0xdf,0x5c,0x72,0xce,0x70,0xca,0xa0,0x8c,0x03,
+ 0x8a,0x92,0xd0,0xa6,0xcc,0xc9,0x90,0xc0,0xf5,0xae,0x77,0x56,0xba,0x58,0xc9,0x8f,
+ 0xa8,0x76,0xc6,0x41,0xe0,0x0c,0x7e,0xb5,0xe6,0xa5,0xfb,0xcb,0x33,0xb6,0x75,0x17,
+ 0x2f,0x32,0x30,0x35,0x12,0xcc,0x18,0xa8,0x6d,0xc5,0x47,0x51,0xc9,0xdc,0x7b,0x9a,
+ 0xcb,0x8e,0x3d,0xbc,0xee,0x3f,0x8f,0x63,0xff,0x00,0xd6,0xad,0xd6,0x89,0xe6,0x57,
+ 0x45,0x61,0xb9,0x54,0x03,0xd7,0xd3,0xf9,0xd4,0x26,0x03,0x0c,0x18,0x7c,0x79,0x87,
+ 0x9c,0xf6,0xc0,0xff,0x00,0x38,0xad,0xa7,0x16,0xf5,0x15,0x09,0xab,0x5f,0xa9,0x98,
+ 0x71,0xb8,0x2b,0x80,0x0e,0x3a,0xfa,0x0a,0x63,0xc6,0x8f,0xfb,0xa6,0x2a,0xa9,0x8f,
+ 0x9b,0x3d,0x4f,0xa7,0x3d,0xaa,0x85,0xcd,0xc3,0xac,0x81,0x8f,0xaf,0x6f,0x5f,0xfe,
+ 0xb5,0x59,0x51,0xe7,0x4a,0x25,0x99,0x82,0x8c,0xfd,0xd1,0xce,0x7d,0xcd,0x73,0x3a,
+ 0x91,0x7a,0x23,0xb6,0x6d,0x46,0x2a,0x46,0x60,0x8a,0x25,0x7f,0x32,0x30,0x63,0x8f,
+ 0x3d,0x5b,0x93,0xf4,0x15,0x3d,0x84,0xcb,0x0d,0xcb,0x6f,0x23,0x6e,0x71,0x8c,0xe3,
+ 0xf3,0x35,0x35,0xe9,0x57,0xda,0xee,0x30,0x8a,0x0f,0xb0,0xff,0x00,0x80,0x8f,0xea,
+ 0x6b,0x18,0x79,0x6f,0x26,0xf5,0x1b,0x40,0xe9,0x9f,0x5a,0xe1,0x72,0xe5,0x95,0xd1,
+ 0x97,0x37,0x3a,0xd4,0xef,0x21,0x45,0xbb,0x70,0x88,0xb8,0x8f,0xfb,0xdd,0x3f,0x01,
+ 0x9a,0xdd,0x9a,0xd9,0x63,0xba,0xb1,0xb7,0x53,0x95,0xdd,0xbd,0xbf,0xe0,0x03,0x3f,
+ 0xe1,0x5c,0x95,0x9d,0xd4,0x92,0xaa,0x2a,0x1f,0xbb,0x8c,0x83,0xe9,0xea,0x71,0x5d,
+ 0x5a,0x4c,0x9b,0x9a,0xe9,0x58,0x95,0x8e,0x3d,0xaa,0x7f,0xda,0x73,0xcf,0xe8,0x2b,
+ 0x7c,0x6c,0xe3,0x2c,0x33,0x2b,0x2c,0xe6,0x58,0xb8,0xa5,0xe6,0x67,0x6b,0xb7,0x45,
+ 0xf2,0x41,0xfb,0xdc,0x7f,0x8d,0x69,0xf8,0x7a,0xdd,0x6d,0xb4,0xd9,0xef,0xdb,0xe5,
+ 0x69,0x3e,0x55,0x27,0xd0,0xf2,0x78,0xfa,0x71,0x5c,0x76,0xa3,0x27,0xda,0x2f,0x63,
+ 0x87,0x90,0x09,0xe9,0x9e,0xd5,0xd5,0xea,0x17,0x9e,0x45,0xad,0xbe,0x9c,0x87,0xfd,
+ 0x5a,0x82,0xe3,0xdd,0xb9,0xfe,0x58,0xaf,0x9d,0x8c,0x37,0x67,0xd9,0xd2,0xea,0xcd,
+ 0x3b,0x16,0x13,0x5d,0x2e,0x08,0x3c,0x72,0x05,0x76,0xd6,0x51,0xaa,0xc8,0x3f,0x8b,
+ 0xd0,0x0a,0xf3,0xad,0x15,0xf3,0x2b,0xb0,0x04,0x01,0xd0,0x1e,0xb8,0xf7,0xc5,0x7a,
+ 0x1e,0x9d,0x3a,0x6e,0x50,0xa3,0x27,0x8c,0x01,0xd3,0xeb,0x5a,0xc2,0x3a,0x6a,0x39,
+ 0xcf,0x4d,0x0e,0xf2,0x08,0xf1,0x0a,0xa8,0x00,0x02,0x73,0xc1,0xe9,0xf9,0x56,0xd5,
+ 0xab,0xa8,0xe0,0xe5,0x9f,0x1f,0x85,0x64,0x43,0xb9,0x82,0x86,0x39,0xc6,0x38,0xf7,
+ 0xad,0xab,0x50,0xb1,0x1c,0x95,0xc9,0x63,0x81,0x59,0x35,0x66,0x78,0x18,0x97,0x78,
+ 0xbb,0x9d,0xae,0x8e,0x9f,0x3a,0xb9,0x3d,0x3b,0x7a,0xfd,0x3d,0x2b,0x91,0xf1,0x9e,
+ 0xbe,0xb1,0xea,0xe9,0x60,0x1c,0x7e,0xea,0x30,0x5b,0x9e,0xed,0xd3,0xf4,0xae,0x81,
+ 0x6f,0xd3,0x4d,0xb1,0x9b,0x53,0xb9,0x6f,0x2e,0x2b,0x78,0xda,0x46,0xf4,0x00,0x0c,
+ 0xfe,0x35,0xf2,0x9c,0x9e,0x21,0xba,0xd5,0xf5,0x5b,0x8d,0x46,0xe0,0x92,0xf7,0x12,
+ 0x97,0xe7,0xb0,0x3f,0x74,0x7e,0x03,0x8a,0xfc,0xff,0x00,0xc5,0x0a,0x9e,0xd7,0x25,
+ 0x96,0x05,0x3d,0x67,0x6b,0xfa,0x2d,0x7f,0x33,0xf2,0xbe,0x25,0xce,0x23,0x85,0xaf,
+ 0x4e,0x95,0xfd,0xe7,0xf9,0x1e,0xd2,0x2f,0x44,0xca,0x0e,0x7a,0xd4,0xb0,0xcd,0x87,
+ 0x15,0xc1,0xe9,0xf7,0xcc,0x40,0xcb,0x67,0xf1,0xae,0x8a,0xde,0xeb,0x73,0x0c,0x9a,
+ 0xfe,0x29,0xc4,0xe1,0x1d,0x29,0xca,0x1d,0x8f,0x4f,0x0b,0x5b,0xda,0x41,0x48,0xf4,
+ 0x2b,0x19,0x32,0x41,0xae,0xd7,0x4f,0x94,0x00,0x31,0xde,0xbc,0xce,0xc2,0xe8,0x0c,
+ 0x67,0xa8,0xae,0xb2,0xd6,0xf9,0x54,0x0c,0x9c,0x57,0xce,0x62,0x93,0xe6,0x3a,0x8f,
+ 0x45,0x8e,0x71,0x80,0x2a,0xbd,0xc4,0xa0,0x8e,0x3d,0x2b,0x99,0x4d,0x48,0x74,0xdd,
+ 0x4d,0x96,0xff,0x00,0x77,0x7e,0xb5,0xcd,0x4e,0x0e,0xe2,0x6c,0x7d,0xc3,0x7c,0xe4,
+ 0xe7,0xbd,0x52,0x77,0x18,0xe6,0xa9,0x4d,0x76,0xb9,0xc8,0x3d,0x6a,0xa3,0xdd,0x8c,
+ 0x72,0x6b,0xd1,0x50,0xb6,0xa8,0xe6,0x96,0xe5,0xa9,0x24,0x19,0xc0,0x3c,0x0a,0x6a,
+ 0x3e,0x38,0x15,0x9a,0xf7,0x39,0x3c,0x77,0xa9,0x23,0x97,0xbf,0xa5,0x66,0xe3,0xcc,
+ 0xc1,0x2b,0x75,0x34,0x0b,0x82,0x6a,0x27,0x6c,0x8c,0x67,0xff,0x00,0xac,0x2a,0xb4,
+ 0x93,0x0c,0xf1,0x50,0x19,0xc1,0x07,0x1d,0xab,0x3a,0x90,0x4b,0x43,0xa2,0x9a,0xd2,
+ 0xe7,0xff,0xd6,0xfc,0xe4,0xbb,0x98,0x8e,0xf5,0xcb,0x5c,0x48,0xc4,0xf4,0xcd,0x6c,
+ 0x5d,0x49,0xbb,0x8e,0x6a,0x82,0xd9,0xc9,0x30,0xcf,0x35,0xf9,0x8e,0x22,0xa2,0xbe,
+ 0xa7,0xf7,0x6c,0x6b,0xa4,0xb7,0x28,0x23,0x10,0x73,0x9c,0x7b,0xd7,0x41,0xa1,0x93,
+ 0x3e,0xa5,0x0a,0x75,0x1b,0xab,0x36,0x7b,0x26,0x89,0x49,0x61,0x5a,0x9e,0x12,0x8c,
+ 0xc9,0xaa,0xaf,0xfb,0x23,0xff,0x00,0xad,0x46,0x1d,0x29,0xce,0x29,0x77,0x2e,0x96,
+ 0x21,0xb7,0xa3,0x3e,0x8c,0xb1,0x75,0x43,0x11,0x7f,0xbb,0x90,0xa7,0xf2,0xaf,0x40,
+ 0xd3,0x2e,0x23,0x67,0x2a,0x87,0x6e,0x72,0x01,0xf6,0xaf,0x36,0xd2,0xe0,0x6b,0x99,
+ 0x15,0x1f,0x21,0x47,0x3e,0x95,0xd4,0x69,0xd9,0x9a,0x47,0xdb,0x26,0xd2,0x99,0xe3,
+ 0xa7,0xb5,0x7d,0x4d,0x46,0xd4,0x5b,0x46,0xae,0xb2,0x52,0x69,0xbd,0x8e,0xb9,0x6f,
+ 0xa6,0x5b,0x73,0x12,0xfd,0xcd,0xe4,0xe3,0xd7,0x15,0x34,0xb7,0xee,0xb6,0xc0,0x15,
+ 0xda,0x4f,0x39,0x35,0xce,0x5b,0xc8,0x41,0x3b,0xdb,0x20,0x1c,0x1c,0x7a,0xd4,0x97,
+ 0xf7,0x39,0x2b,0x1a,0xf2,0x0f,0x4e,0x6b,0x9a,0xa4,0xd3,0x85,0x8e,0xca,0x38,0x85,
+ 0xed,0x12,0xe8,0x68,0x47,0x34,0x90,0xfe,0xfc,0x49,0x86,0x97,0x3c,0x01,0xd2,0xb3,
+ 0x5f,0x19,0x1b,0x97,0x3c,0x92,0x7f,0xda,0x35,0x5e,0xdd,0xe5,0x98,0xa4,0x6a,0x77,
+ 0x1e,0x87,0x8a,0x9a,0x77,0x45,0xfd,0xd8,0x6c,0xb2,0x83,0xd0,0xe6,0xb2,0xa4,0xb9,
+ 0x61,0xcc,0x8f,0x4d,0x56,0x75,0x27,0xa1,0xcf,0x5d,0xa2,0x15,0x90,0x15,0x0b,0x93,
+ 0x93,0xfd,0x2b,0x0e,0x12,0xb1,0x9c,0x9c,0x8c,0x67,0xad,0x6f,0xdd,0x94,0x48,0x99,
+ 0x86,0x73,0xd7,0x9a,0xe5,0x7c,0xed,0xdd,0x46,0x3d,0xab,0xcf,0xc5,0x4b,0x54,0xe4,
+ 0x7d,0x16,0x0a,0x4a,0xcc,0xdc,0xb7,0xb9,0x63,0xf2,0x86,0xc7,0x6a,0xc0,0xd7,0x6e,
+ 0x57,0x7a,0xa2,0x9c,0x9f,0x5a,0x87,0xed,0x12,0x6f,0xd8,0xbc,0x0e,0x84,0xd5,0x1b,
+ 0xe8,0xdd,0x4a,0x3b,0x1c,0xe4,0xf1,0x5c,0x35,0xa5,0x78,0x3b,0x1d,0xbc,0xd6,0x68,
+ 0x96,0x36,0x49,0x0a,0xb7,0x4c,0x73,0xed,0x5d,0x1d,0xa7,0xee,0xe3,0x69,0x54,0xf2,
+ 0x16,0xb9,0x88,0x87,0xcb,0xc6,0x6b,0xa5,0x83,0x02,0xca,0x4c,0xf3,0xf2,0xd6,0x74,
+ 0x36,0x47,0x36,0x2a,0x77,0x4c,0x65,0xa8,0xce,0x9b,0x72,0xcd,0x9c,0x93,0x9a,0x7c,
+ 0x4a,0x45,0x92,0xec,0xe7,0x02,0xab,0xc6,0xdb,0x34,0xb9,0x07,0x20,0x13,0x8e,0x2a,
+ 0xcc,0x4c,0x1a,0xcc,0x60,0xe3,0x03,0xa5,0x75,0xc1,0x6d,0x7e,0xc7,0x0c,0x26,0xee,
+ 0xdf,0x99,0x8b,0x3b,0x6d,0x8d,0xb0,0x6b,0x2e,0x28,0xf7,0xc4,0xee,0x4f,0x0b,0xde,
+ 0xa4,0xbf,0x99,0x53,0xe5,0xcf,0xbf,0x15,0x0b,0xca,0x3e,0xc6,0xa5,0x0e,0x09,0xc9,
+ 0x22,0xb9,0x6a,0xb5,0xa9,0xed,0xc2,0x5a,0x1c,0xed,0xd3,0x11,0x21,0x06,0xac,0xda,
+ 0xa8,0x0a,0x5c,0x8c,0x60,0x7f,0x4a,0xad,0x39,0xdc,0xf4,0xb3,0x4c,0x2d,0xac,0x24,
+ 0x93,0x3d,0x14,0xff,0x00,0x2a,0xe6,0xc3,0x43,0x9a,0xa2,0x48,0xf1,0x73,0xdc,0x52,
+ 0xa3,0x87,0xa9,0x36,0xf6,0x4c,0xf1,0x8f,0x10,0x5c,0x8b,0x8d,0x5a,0x77,0x1d,0x37,
+ 0x10,0x2b,0x1b,0x39,0x3c,0x53,0xee,0x64,0xf3,0x27,0x77,0x27,0xef,0x31,0x27,0xf3,
+ 0xe2,0xaa,0xee,0x2b,0xd0,0xe3,0x35,0xf7,0xb4,0x72,0xc6,0xa2,0x8f,0xf3,0x73,0x33,
+ 0xc4,0x3c,0x46,0x2e,0xb5,0x6f,0xe6,0x93,0x7f,0x89,0x2b,0xf7,0x3c,0xfb,0xd5,0x27,
+ 0x51,0xc8,0xfc,0x2a,0x56,0x6c,0x75,0xa8,0x64,0x6e,0x79,0xe3,0xde,0xbd,0x2a,0x14,
+ 0x1c,0x4e,0x24,0xba,0x95,0x4a,0xe0,0x1c,0xf6,0xa8,0x95,0x77,0x30,0x00,0xf5,0xab,
+ 0x07,0x9e,0x6a,0x5b,0x68,0x77,0xcb,0x5d,0xd7,0xb6,0xa5,0x37,0xa1,0xd5,0xe8,0x16,
+ 0x7b,0x99,0x41,0x18,0x15,0xed,0x3a,0x6d,0xa8,0x8e,0x10,0x4f,0xa6,0x6b,0xcf,0xbc,
+ 0x39,0x6a,0x4e,0xd3,0x8e,0x78,0xaf,0x53,0x45,0xf2,0xe0,0xf7,0xf7,0xaf,0x9b,0xcc,
+ 0x6a,0xdd,0xd9,0x9c,0x73,0x91,0x83,0xa8,0xb1,0xc9,0x2a,0x7a,0x57,0x2b,0x71,0x83,
+ 0xf9,0xff,0x00,0x9e,0xd5,0xd1,0xdf,0x1c,0x93,0x9f,0xaf,0xe9,0x58,0x13,0x63,0x93,
+ 0xfe,0x4d,0x78,0x4d,0x6b,0xa9,0x26,0x76,0x48,0x60,0x7d,0x3a,0x57,0x45,0xa6,0x39,
+ 0xc8,0xf4,0xae,0x6c,0x9e,0x72,0x2b,0x7f,0x4b,0xc6,0xe1,0x8a,0xf2,0xf1,0xe9,0x72,
+ 0xb3,0xa2,0x9b,0x77,0x3b,0xb4,0x24,0xdb,0x67,0x15,0xe5,0xbe,0x2e,0xc1,0x89,0xfe,
+ 0x87,0x18,0xaf,0x4d,0x0c,0x45,0xb6,0x0e,0x3a,0x77,0xeb,0x5e,0x5d,0xe2,0xb2,0x36,
+ 0x30,0xe3,0x07,0x3d,0x2b,0x8b,0x28,0x8f,0xfb,0x42,0x47,0x62,0x92,0x6a,0xcc,0xf9,
+ 0xfe,0xf8,0x7f,0xa4,0x38,0xe9,0x54,0x8a,0xfc,0xb9,0xe9,0x5a,0x77,0x6a,0x1a,0x77,
+ 0xcf,0x63,0x54,0x8a,0x03,0x5f,0xae,0xd3,0x5e,0xea,0x32,0x2a,0x90,0x00,0xa6,0x11,
+ 0xc7,0x35,0x73,0x6f,0xe7,0xda,0xa2,0x2a,0x8d,0xc2,0xba,0xb9,0x1c,0x1d,0xac,0x1b,
+ 0x07,0xd0,0xe0,0xf0,0x7d,0xaa,0xb6,0x02,0xb1,0x1e,0xdf,0xad,0x28,0x5f,0xee,0xd4,
+ 0xdb,0x38,0x04,0x51,0x80,0x79,0x22,0x80,0x23,0x45,0xcb,0x0c,0x0e,0x86,0xbe,0xca,
+ 0xf0,0x06,0x20,0xf0,0xee,0x9f,0x91,0x80,0xd1,0x0c,0x81,0xd4,0x82,0x79,0x1f,0x8d,
+ 0x7c,0x77,0x10,0x01,0xc0,0xf7,0x15,0xf6,0x57,0x84,0x86,0xdf,0x0c,0x69,0xbc,0x01,
+ 0xfb,0x84,0xfc,0x85,0x75,0xe0,0xe5,0xcb,0x37,0x2f,0xeb,0x73,0xef,0x38,0x13,0x4c,
+ 0x45,0x47,0xe4,0xbf,0x33,0xe9,0x3f,0x0c,0x30,0x32,0xa1,0x20,0x3e,0xe5,0x5f,0x94,
+ 0x7a,0x63,0x81,0x5b,0xbe,0x3f,0x68,0x60,0x7d,0x1a,0x49,0x36,0xc6,0xcd,0x30,0xd9,
+ 0x10,0xfe,0x10,0x14,0x92,0x4d,0x65,0xf8,0x22,0x34,0xb9,0xb8,0xb6,0x44,0xdc,0x4b,
+ 0x63,0x1e,0xa0,0x63,0xa9,0xf7,0x35,0xd4,0xfc,0x58,0xd0,0x64,0x8e,0xdf,0x4b,0xbc,
+ 0x1c,0x08,0xdc,0xb1,0xe3,0xd1,0x48,0xe3,0x15,0xfa,0xd4,0x14,0xa5,0x81,0x93,0x48,
+ 0xfb,0xef,0x6e,0xa3,0x8c,0x8c,0x5b,0xee,0x79,0x0d,0xd5,0xe9,0x8d,0xca,0x6e,0xc6,
+ 0x3a,0x7b,0x86,0x39,0xcf,0xeb,0x4e,0xb3,0xb9,0x50,0x19,0xb2,0x77,0x67,0xaf,0x71,
+ 0xf8,0xd7,0x39,0xa9,0xcc,0xc6,0xe1,0x54,0x9e,0x4a,0x8c,0x12,0x38,0xca,0x8f,0x5f,
+ 0x70,0x6a,0xd5,0x8c,0xc6,0x44,0xc6,0x48,0x2c,0x41,0x07,0xdf,0xff,0x00,0xd5,0x5e,
+ 0x24,0x2b,0xbd,0x8f,0x7a,0x94,0x92,0x8a,0x67,0x79,0x73,0x74,0x65,0x8d,0x30,0x71,
+ 0x83,0xc7,0xa0,0xe3,0x81,0x9f,0x6a,0x83,0x6f,0x96,0x50,0x81,0x9d,0xc0,0x92,0x7b,
+ 0x91,0x59,0xd1,0xb0,0x40,0x15,0xba,0x6e,0xe0,0x67,0xa7,0xf8,0xd6,0xb6,0xe8,0xe4,
+ 0x81,0x4a,0x70,0x40,0x3c,0x7e,0x75,0xd4,0xa4,0xa4,0x88,0xf6,0x96,0xd8,0x7c,0xd7,
+ 0x04,0x5b,0xed,0x04,0xfc,0xc3,0x07,0xd8,0x56,0x65,0xdc,0x25,0xd6,0x38,0x43,0x72,
+ 0x06,0x4f,0x1d,0x47,0x15,0x32,0x11,0x24,0x4e,0xcc,0x32,0x10,0x64,0x9e,0x86,0xb3,
+ 0xda,0x4f,0x36,0x22,0xe1,0xba,0x02,0x06,0x4f,0x38,0x1e,0x95,0x8d,0x97,0x35,0xec,
+ 0x5f,0xb7,0x77,0xe5,0x65,0xab,0x6f,0x2e,0x33,0x20,0x63,0xb4,0x83,0x81,0xea,0x40,
+ 0x15,0x9b,0xa9,0xdc,0x24,0x51,0xec,0xfb,0xcc,0xfc,0x1e,0x7b,0x55,0xfc,0xc6,0xaa,
+ 0xcc,0x13,0x73,0x92,0x73,0xf4,0xc5,0x60,0x6b,0x0d,0xe5,0xa0,0xe0,0x1c,0x8f,0xf3,
+ 0xcf,0x35,0x15,0xa7,0x68,0x9e,0xc5,0x0b,0x5d,0x1c,0x95,0xdd,0xcb,0x46,0xe7,0x03,
+ 0xe5,0x07,0xaf,0xff,0x00,0x5a,0x9d,0x6b,0x79,0x2c,0xef,0xb1,0xdb,0x68,0xf4,0xf6,
+ 0xf6,0xaa,0x73,0x18,0xe6,0x7d,0xb2,0x31,0x08,0xa7,0x9f,0x51,0xeb,0x8a,0xaf,0x0c,
+ 0xa3,0x78,0xd8,0xa1,0x77,0x1c,0x01,0xc9,0xc0,0xaf,0x0a,0x55,0x64,0xa4,0x7a,0x73,
+ 0xd6,0x2d,0x0f,0xba,0xbc,0x98,0xbb,0x45,0xb8,0x90,0x7b,0x13,0x9c,0xfd,0x68,0x8a,
+ 0xe8,0x85,0x1f,0x37,0xcc,0x38,0x1d,0xff,0x00,0x2a,0xaf,0xa9,0xb8,0x49,0x02,0xa8,
+ 0xce,0x71,0xbb,0xeb,0xfe,0x7b,0x54,0x36,0xc8,0xc3,0x24,0xf0,0x4f,0xad,0x71,0xfb,
+ 0x49,0x73,0xd8,0xe1,0x55,0x52,0x47,0x77,0xa2,0x7e,0xf7,0xe5,0x77,0x2a,0xa7,0x93,
+ 0x9f,0x5f,0x73,0xdf,0xe9,0x5d,0x6d,0xc4,0xeb,0x0d,0xb9,0x88,0x74,0x63,0xdf,0xbe,
+ 0x2b,0xcf,0x34,0xbb,0xc8,0xe0,0x99,0x41,0x6d,0xd9,0x39,0xf6,0xad,0xcb,0xfd,0x43,
+ 0x81,0x92,0x40,0x41,0xdb,0xf3,0xae,0xac,0x45,0x54,0xe9,0xf2,0xa3,0xbb,0x2d,0xd2,
+ 0xac,0xaa,0xbe,0xc5,0xbd,0x25,0x05,0xee,0xb3,0x9e,0x36,0x29,0xc1,0x27,0xb0,0x1d,
+ 0x7f,0x2a,0xd6,0xbc,0x78,0x1e,0xe1,0xa4,0xce,0x4b,0xb1,0x61,0xf4,0xec,0x3f,0x2a,
+ 0xc0,0xd1,0x83,0xc3,0x68,0xf7,0xb9,0xc1,0x62,0xc3,0x3c,0x0e,0x83,0x9f,0xe7,0x55,
+ 0x92,0xf5,0x64,0x94,0x8c,0x0e,0x3f,0x4a,0xe6,0xf6,0x69,0x45,0x5f,0xa9,0xee,0xd2,
+ 0xc6,0x2f,0x85,0x1e,0x83,0xa3,0x26,0xf5,0x20,0x9c,0x06,0x6c,0x90,0x3b,0x7d,0x6b,
+ 0xd2,0xb4,0x58,0x93,0xcc,0x50,0x30,0xa4,0x73,0x9c,0x75,0x1e,0x95,0xe7,0x1a,0x26,
+ 0xc3,0x0a,0x34,0x7f,0xc7,0xd7,0x77,0x7a,0xf5,0x5d,0x0a,0x20,0x00,0x7c,0x73,0xe8,
+ 0x7d,0x6b,0x45,0x17,0x63,0x5a,0xd5,0x7d,0xc6,0xce,0xa5,0x77,0x70,0x14,0xf5,0xf4,
+ 0x1d,0xab,0x7a,0xc1,0x48,0x0a,0x5b,0x93,0x9f,0xa9,0xf7,0xac,0x84,0x56,0x32,0xec,
+ 0x88,0x12,0x3b,0xf6,0x1c,0xfb,0xd7,0x57,0xa7,0x40,0xb1,0x95,0x24,0x03,0xd3,0x81,
+ 0x5c,0xdf,0x6b,0x53,0xc3,0xc5,0xd6,0x4a,0x1a,0x1c,0x5f,0xc5,0x3d,0x49,0xac,0x3c,
+ 0x28,0xb6,0x4a,0x70,0xd7,0xb2,0x2c,0x60,0x7f,0xb0,0xbf,0x33,0x1f,0xc7,0x18,0xaf,
+ 0x9e,0x74,0xf1,0x96,0x55,0x23,0xf1,0xaf,0x47,0xf8,0xb1,0xab,0x0b,0xed,0x71,0x34,
+ 0xf8,0x8e,0x63,0xb2,0x4c,0x63,0xfd,0xb7,0xe5,0xbf,0x21,0x8a,0xf3,0x4b,0x39,0x3c,
+ 0xb6,0x19,0xe7,0x9e,0xd5,0xf9,0x3f,0x1b,0x56,0x78,0x9a,0xd3,0x50,0xda,0x2a,0xdf,
+ 0xe6,0x7f,0x36,0x67,0xf9,0x9a,0xaf,0x9d,0xce,0x57,0xd2,0x3a,0x7f,0x9f,0xe2,0x7a,
+ 0x25,0x86,0x15,0x3f,0x0a,0xd4,0x8a,0x7c,0x35,0x72,0xb6,0xd7,0xa3,0x6e,0x33,0xd4,
+ 0x56,0x8a,0x5c,0xe7,0x90,0x6b,0xf9,0x77,0x36,0xc3,0x4a,0x35,0xa7,0xcc,0x7e,0x91,
+ 0x81,0xc4,0xa9,0x52,0x8b,0x8b,0x3b,0x4b,0x7b,0xd2,0x84,0x13,0x5b,0x10,0xea,0x85,
+ 0x71,0xce,0x3f,0x1a,0xf3,0xe8,0xee,0xb6,0x81,0x83,0x57,0x63,0xbb,0x3d,0x3a,0xf7,
+ 0xeb,0x5f,0x27,0x5b,0x0b,0x77,0xa9,0xea,0xc6,0xab,0xb1,0xe8,0xd1,0xea,0x65,0x8f,
+ 0x5f,0xc6,0xb4,0xd6,0xf3,0x70,0xce,0x4d,0x79,0xd5,0xbd,0xd1,0xc7,0x5e,0xb5,0xb3,
+ 0x15,0xd8,0xc6,0x01,0xfc,0xeb,0x93,0xea,0xe9,0x3d,0x0b,0x53,0xbe,0xe7,0x49,0x35,
+ 0xd6,0x1b,0x3d,0x79,0xaa,0x66,0xe7,0x9a,0xc7,0x7b,0xb0,0xdd,0xf3,0xf4,0xa8,0xfe,
+ 0xd0,0x0e,0x07,0xe9,0x5b,0x46,0x9a,0x33,0x93,0xbb,0x36,0xc4,0xec,0x4e,0x3f,0x9d,
+ 0x5d,0x8e,0x42,0x00,0x35,0x81,0x0c,0xb9,0x3c,0xf7,0xab,0xe2,0x4d,0xab,0xef,0x55,
+ 0x1a,0x4b,0x74,0x85,0x17,0xa9,0x62,0xe6,0xe7,0x68,0xeb,0xda,0xab,0xa5,0xd0,0x2b,
+ 0x9a,0xc6,0xbd,0xb9,0x23,0xf0,0xaa,0x71,0x5d,0x71,0xc9,0xeb,0x5c,0xf2,0xa6,0xe5,
+ 0x3b,0x9d,0xb3,0x56,0xa4,0x7f,0xff,0xd7,0xfc,0xdd,0x7b,0x47,0x69,0x39,0xe9,0x9a,
+ 0xec,0xb4,0x9d,0x25,0x19,0x41,0x22,0x89,0x6d,0x55,0x5b,0x8c,0x66,0xb5,0xb4,0xe9,
+ 0xd6,0x20,0x40,0x23,0x8a,0xfc,0xbe,0xa6,0x1e,0x72,0x67,0xf4,0x5e,0x3b,0x8c,0xe3,
+ 0xcb,0x68,0x48,0xe7,0x75,0xed,0x39,0x22,0x8c,0x80,0x3b,0x70,0x6b,0x0b,0xc2,0x51,
+ 0x63,0x52,0x90,0x83,0x80,0x38,0xae,0xaf,0x5d,0x66,0x95,0x4f,0xd2,0xb0,0x3c,0x37,
+ 0x1b,0x45,0x77,0x23,0x9f,0xca,0xba,0x30,0x54,0x1c,0x6a,0xab,0x9f,0x5b,0xc3,0xb9,
+ 0xbf,0xb7,0x51,0xbb,0xd4,0xf5,0xeb,0x69,0x19,0x11,0x36,0x1e,0x73,0xc9,0xf5,0xad,
+ 0x6b,0x09,0x9d,0x49,0x60,0x78,0x66,0xc1,0x1e,0xd5,0xcd,0xf9,0xe4,0x22,0x95,0xe4,
+ 0x63,0xf1,0xad,0x5b,0x39,0xc0,0x9a,0x16,0x23,0xe5,0xea,0x46,0x78,0xaf,0x7b,0x15,
+ 0x2b,0x72,0xa3,0xed,0xb9,0xed,0x76,0xce,0xad,0x94,0x43,0x18,0x95,0x5f,0x82,0xdc,
+ 0x7a,0x9a,0xab,0x70,0xe0,0x4b,0xbc,0xb1,0x3b,0x70,0x3e,0xa2,0xa8,0xbc,0xb2,0x4f,
+ 0x3a,0x7c,0xff,0x00,0x2f,0x50,0x33,0xf9,0x54,0x73,0x31,0x49,0xb2,0x79,0xcf,0x6f,
+ 0x7a,0xe3,0x9c,0xb9,0xba,0x1a,0xe1,0xea,0x3b,0xae,0x66,0x75,0x30,0x5c,0xad,0x84,
+ 0x06,0x48,0x86,0xe7,0x6c,0x05,0x1e,0xe6,0xab,0x39,0x68,0x0b,0x3c,0xe3,0xe7,0x23,
+ 0x27,0xb7,0x5e,0x95,0x8f,0xe7,0xb4,0x92,0x20,0xce,0xdd,0xbc,0xf1,0x56,0x2e,0x9f,
+ 0x2e,0x1e,0x47,0x25,0x88,0xa5,0x3a,0x97,0xb2,0x5b,0x1e,0xce,0x15,0x46,0x2e,0xcb,
+ 0xa8,0xc9,0x90,0x36,0xe6,0x24,0x15,0x61,0x5c,0xbc,0xbf,0x33,0x90,0x70,0xa0,0x73,
+ 0xcd,0x75,0x29,0x26,0xf8,0xb2,0x3b,0xfa,0xd7,0x2b,0x75,0xf2,0x39,0xc8,0xc9,0x3c,
+ 0x8c,0xfb,0xf7,0xae,0x4c,0x43,0x56,0x4c,0xfa,0x0c,0x2c,0xb7,0x33,0x26,0x94,0x89,
+ 0x32,0xa7,0xa7,0xf2,0xaa,0xb7,0xd3,0x34,0xad,0x1a,0x9f,0xae,0x2a,0x79,0xf0,0xb9,
+ 0x63,0xc7,0xa5,0x66,0xa3,0x09,0xe5,0x62,0x46,0x36,0xf4,0xaf,0x2e,0xb4,0xad,0x06,
+ 0xbb,0x9d,0xc9,0xdd,0xab,0x9a,0x00,0x38,0x03,0x24,0xff,0x00,0x5a,0xe8,0x1e,0x46,
+ 0x87,0x4d,0x63,0x19,0xe1,0xb8,0xac,0x18,0x83,0xb6,0x33,0x57,0xef,0x98,0xa5,0xa0,
+ 0x55,0x3c,0x66,0xb2,0xa3,0x3b,0x45,0xb3,0x93,0x13,0x3d,0x91,0x62,0x49,0x3c,0xbd,
+ 0x2c,0x64,0xe3,0x26,0x88,0xa5,0xff,0x00,0x43,0x18,0x3c,0x0e,0x48,0xac,0xcb,0xd9,
+ 0x91,0x2c,0xe1,0x88,0x9e,0x4f,0x26,0xa5,0x8a,0x58,0xc5,0xa9,0xc7,0xa5,0x74,0x46,
+ 0xa2,0xe6,0xf9,0x1c,0xb0,0x96,0x97,0xf3,0x39,0x8d,0x52,0x6f,0xde,0xe3,0x3c,0x77,
+ 0xa8,0x64,0x99,0x70,0x02,0x1e,0x31,0x8a,0xaf,0x7f,0x3a,0xc9,0x29,0x07,0xd6,0xb3,
+ 0xd9,0xca,0x9e,0x0d,0x72,0x56,0xa9,0x76,0x7a,0xd0,0xab,0x68,0x97,0x39,0x2c,0x09,
+ 0x1f,0x85,0x65,0x6b,0xf7,0x22,0x0d,0x2e,0x71,0x9e,0xab,0x8e,0x7d,0x4d,0x6a,0xdb,
+ 0xb1,0x73,0x90,0x6b,0x91,0xf1,0xb5,0xc8,0x4b,0x51,0x00,0x3c,0xb9,0xfd,0x2b,0xd2,
+ 0xc9,0xe8,0x7b,0x4a,0xf0,0x49,0x75,0x3f,0x32,0xf1,0x1f,0x37,0x58,0x4c,0x9f,0x13,
+ 0x55,0xbf,0xb2,0xd7,0xdf,0xa1,0xe5,0x64,0x9e,0xa6,0xa3,0x39,0x3d,0xf1,0x8a,0x90,
+ 0x8e,0x31,0x49,0x83,0x9f,0x6a,0xfd,0x35,0x2b,0x9f,0xc2,0x2c,0x85,0x81,0xa6,0x91,
+ 0x52,0x95,0xc7,0x1c,0x9c,0xd3,0x0f,0x61,0x8a,0x42,0x64,0x24,0x60,0x56,0xae,0x99,
+ 0x6e,0x5a,0x41,0x9e,0xf8,0xac,0xf0,0x01,0xae,0xb7,0x44,0xb5,0x2c,0xeb,0xc6,0x6b,
+ 0x3a,0xae,0xd1,0x64,0x4d,0xda,0x27,0xa4,0x78,0x7e,0xd4,0x84,0x00,0x8a,0xec,0x2e,
+ 0x78,0x8c,0x03,0xdb,0xd0,0xf4,0xaa,0x5a,0x45,0xb8,0x48,0xc6,0x45,0x58,0xbc,0x7e,
+ 0xde,0x9d,0x6b,0xe4,0x31,0x72,0x4e,0x4c,0xf3,0xe7,0x25,0x7b,0x1c,0xf5,0xce,0x72,
+ 0x47,0xad,0x60,0xcf,0x92,0x0e,0x73,0xc7,0xf3,0xad,0xcb,0x87,0xc9,0xe7,0x91,0xfa,
+ 0x62,0xb0,0xe7,0x1b,0xba,0x76,0xaf,0x3a,0xa3,0x45,0xa6,0xba,0x19,0x85,0x0e,0x7d,
+ 0xab,0x7f,0x4d,0x1f,0x32,0x9e,0x79,0xac,0x72,0x8d,0x90,0x2b,0x7b,0x4e,0x4e,0x46,
+ 0x7f,0x1a,0xf3,0x31,0x6e,0xf1,0x66,0xd4,0xf7,0x3a,0xa9,0x09,0x58,0x09,0xf6,0xe6,
+ 0xbc,0xa7,0xc5,0x2e,0x4a,0xb9,0x35,0xea,0x52,0x63,0xc9,0xc7,0xb5,0x79,0x3f,0x8a,
+ 0x5c,0x90,0xe3,0xb5,0x4e,0x43,0x0e,0x6c,0x42,0xb9,0xd6,0x99,0xe3,0x77,0x03,0x32,
+ 0x36,0x3d,0x6a,0xb0,0x8d,0x8b,0x60,0x0c,0x9a,0xbf,0x2a,0x6f,0x94,0xfb,0x9c,0xf3,
+ 0xd0,0x7e,0x35,0xf6,0xef,0xc0,0xbf,0x80,0xba,0x5e,0x9b,0xa7,0xdb,0x7c,0x4a,0xf8,
+ 0xa7,0x6c,0x5e,0x17,0x02,0x6d,0x2b,0x46,0x94,0x73,0x3f,0x42,0xb7,0x17,0x4a,0x46,
+ 0x44,0x7d,0xd2,0x3f,0xe2,0xea,0xdd,0x80,0xfd,0x1b,0x31,0xcc,0x68,0x60,0x30,0xef,
+ 0x11,0x89,0x95,0x92,0xfc,0x7c,0x91,0x32,0x92,0x8a,0xb9,0xc6,0xfc,0x14,0xfd,0x9c,
+ 0xdf,0x5d,0xb3,0x83,0xe2,0x17,0xc4,0x76,0xfe,0xcc,0xf0,0xd2,0x30,0x7b,0x5b,0x59,
+ 0x06,0xdb,0x9d,0x50,0x8e,0x7e,0x45,0x3c,0xa5,0xbf,0x62,0xe7,0x97,0xfe,0x1e,0x39,
+ 0x6f,0x75,0xfd,0xb0,0xe5,0xf0,0xaf,0xc4,0x8f,0x87,0xda,0x47,0x88,0x3c,0x37,0xa1,
+ 0xe9,0x5a,0x45,0xef,0x83,0xa2,0x16,0xcc,0x74,0xeb,0x64,0xb7,0x33,0xe9,0x84,0x6d,
+ 0x75,0x93,0x66,0x03,0x18,0x9b,0x6c,0x80,0x9e,0x70,0xa4,0x0e,0xa6,0xaf,0xfc,0x43,
+ 0xf1,0xb6,0xa5,0xe2,0x5b,0xaf,0x2d,0x1b,0x11,0xae,0x15,0x23,0x41,0xb5,0x15,0x47,
+ 0x0a,0xaa,0xa3,0x80,0x07,0x40,0x05,0x79,0xc6,0xa8,0xcf,0x71,0xa6,0xcd,0xa4,0xce,
+ 0x33,0x1c,0xb0,0x49,0x1c,0xa0,0xf4,0x3e,0x62,0xe0,0xff,0x00,0x3a,0xfc,0xc6,0x97,
+ 0x11,0xe2,0xf1,0x98,0xf8,0x62,0x93,0xe5,0x82,0x7f,0x0f,0x97,0x9f,0xa9,0xc7,0x1c,
+ 0x5b,0xe6,0xe5,0xe8,0x7c,0x00,0xe8,0x41,0xe4,0x73,0x4d,0xd9,0x9e,0x0f,0x4c,0x55,
+ 0xb7,0x81,0xe2,0x63,0x0b,0xf2,0xd1,0x92,0x8c,0x4f,0xf7,0x97,0x86,0xfd,0x45,0x30,
+ 0xa7,0x39,0x35,0xfa,0xfa,0xd5,0x5d,0x1d,0xc4,0x31,0x2f,0xce,0xbd,0xb9,0xaf,0xaf,
+ 0x7c,0x28,0x73,0xe1,0xdb,0x35,0x1d,0x16,0x05,0x03,0x9f,0x6c,0xd7,0xc9,0x71,0xa0,
+ 0xde,0xbd,0x7a,0xd7,0xd4,0xbe,0x12,0x9c,0x9d,0x0a,0xc8,0x74,0xfd,0xd0,0xff,0x00,
+ 0x0a,0xd6,0x93,0xb3,0x68,0xfb,0x8e,0x09,0x9d,0xaa,0xd6,0xf4,0xfd,0x4f,0xa9,0x3e,
+ 0x18,0xcf,0x3c,0xfa,0x85,0xa7,0x99,0x81,0x1a,0xf2,0xc3,0xa0,0x26,0xbd,0xa3,0xe2,
+ 0xac,0x4c,0x3c,0x26,0xb7,0x12,0x31,0x64,0x49,0x02,0xa0,0xcf,0x00,0x35,0x7c,0xcf,
+ 0xf0,0xf3,0x5a,0x6b,0x5b,0xd8,0x44,0xb8,0x11,0xa1,0xc7,0x3c,0x7d,0x6b,0xd1,0x3e,
+ 0x2b,0xf8,0xc6,0x09,0x34,0x2d,0x3e,0xca,0xde,0x42,0x0c,0xb7,0x19,0x61,0x9c,0x82,
+ 0x88,0xa4,0xf2,0x3e,0xb8,0xaf,0xd5,0xf0,0x98,0xa8,0x2c,0xba,0x57,0x7d,0x0f,0xb3,
+ 0xad,0x4e,0x55,0x31,0x94,0xf9,0x4f,0x11,0xd4,0x98,0x4e,0x52,0x4d,0xc0,0xb2,0x6e,
+ 0x07,0x9e,0x72,0x3a,0x67,0xeb,0x57,0xb4,0xd9,0x10,0xc6,0xae,0x59,0x81,0xec,0x3d,
+ 0xfd,0xab,0x97,0x79,0xf7,0x5d,0x48,0xb9,0xf9,0x65,0xc1,0x1f,0x5c,0x56,0xbd,0xb2,
+ 0xee,0xc0,0xdd,0x80,0x0e,0x46,0x3d,0x0d,0x7c,0xad,0x2c,0x43,0x96,0xa7,0xd2,0x29,
+ 0x69,0x63,0xb7,0x13,0x28,0xdb,0xe6,0x36,0x40,0xc1,0xc8,0xed,0x9f,0x7f,0x6a,0x9a,
+ 0x1b,0x99,0x7e,0x74,0xdd,0x91,0xbf,0x0a,0x07,0x6e,0x3b,0x56,0x22,0xbe,0x62,0x40,
+ 0xca,0x4e,0xdf,0x5e,0x3a,0x56,0xf6,0x97,0xe5,0x99,0x01,0x19,0x38,0xeb,0x9f,0x4f,
+ 0xad,0x7a,0x34,0xf1,0x17,0x1c,0x75,0x34,0x90,0x2c,0x76,0x8c,0x17,0x86,0x1d,0x77,
+ 0x57,0x2f,0x2e,0x48,0x0a,0xce,0x07,0x3c,0x81,0x8f,0xad,0x75,0x53,0xe5,0xed,0x65,
+ 0x18,0xcf,0x5c,0xe3,0x23,0x18,0x35,0xc6,0xb4,0x88,0xf3,0x30,0x23,0xe7,0x0d,0xd7,
+ 0xb7,0x15,0xbf,0xb4,0xd0,0xcf,0x58,0xd4,0x26,0x69,0x59,0x22,0x0c,0x5c,0xa8,0x52,
+ 0x58,0x7d,0x7a,0x56,0x2d,0xfc,0xee,0xf1,0x86,0x70,0x77,0x37,0x1b,0x8f,0xa7,0xbd,
+ 0x5e,0xb9,0x97,0x64,0x7b,0x78,0xe9,0x8f,0xc0,0x57,0x3d,0x7b,0x21,0xdb,0xe5,0x0c,
+ 0xe4,0xf2,0x3b,0xfe,0x55,0xc1,0x88,0x9b,0xb3,0xb9,0xee,0x61,0xab,0x24,0x91,0x8d,
+ 0x31,0x05,0x89,0xcf,0x1c,0xf2,0x29,0x96,0x84,0x6f,0xcb,0x72,0xc4,0xfe,0x95,0x14,
+ 0xce,0x5b,0xe5,0x00,0x92,0x33,0xcd,0x25,0x84,0x4e,0x27,0x39,0xcf,0xae,0x6b,0xc9,
+ 0x5a,0xcd,0x5c,0xed,0xab,0x5e,0xf1,0x76,0x67,0x4d,0x77,0xa5,0xc9,0x73,0x0f,0x98,
+ 0x98,0x04,0x0c,0xfb,0x63,0xfc,0x6b,0x97,0x2e,0x63,0x63,0x0a,0xf6,0xfa,0x8a,0xf4,
+ 0x5b,0x32,0x64,0xb4,0x30,0xcc,0x70,0xe3,0x83,0x8f,0xe8,0x7d,0x6a,0xb5,0xe7,0x83,
+ 0xcc,0xec,0xb7,0x51,0x4a,0x14,0x30,0xe8,0x7b,0x71,0x5d,0x58,0x8c,0x14,0xac,0xa7,
+ 0x4f,0xe6,0x78,0x92,0xc4,0xb8,0xc9,0xa9,0x3d,0x0e,0x5f,0x4b,0x50,0xf7,0x27,0x70,
+ 0xe2,0x35,0x27,0x03,0xd7,0xb0,0xad,0x1b,0xa5,0x72,0xc1,0x33,0xf7,0x8f,0x4f,0x6e,
+ 0xa6,0xb4,0x6d,0x34,0x86,0xd3,0xee,0x5a,0xd8,0x61,0x89,0x1b,0xf7,0x73,0xcf,0x1e,
+ 0xf4,0xdf,0xb3,0xb4,0xb7,0x98,0xea,0x3a,0x13,0xda,0xb9,0x7d,0x9d,0xb4,0x7b,0x9e,
+ 0xce,0x0f,0x17,0xcd,0x4d,0x16,0xaf,0x12,0x68,0x74,0xcb,0x6b,0x65,0xe0,0x15,0x67,
+ 0x38,0x38,0xfb,0xcd,0xdf,0xf0,0x15,0x81,0x03,0x18,0x65,0x2b,0x9c,0xe7,0x18,0xf7,
+ 0xcf,0x15,0xd2,0x78,0x8a,0x45,0xb6,0x6f,0x28,0x9f,0x99,0x51,0x50,0x60,0x72,0x30,
+ 0x3a,0x7e,0x75,0xcd,0x69,0x87,0xcf,0xbd,0x89,0x71,0x93,0x9c,0x9f,0xc3,0xb0,0xad,
+ 0xa7,0x1b,0xb4,0x8f,0x46,0x9d,0x5d,0x13,0x67,0xbc,0x78,0x7e,0xdd,0x23,0x82,0x20,
+ 0x40,0x0d,0xb4,0x64,0xf5,0x39,0x3d,0xab,0xd3,0xf4,0x98,0xa3,0x8e,0x33,0x3b,0x1c,
+ 0xe3,0xa6,0x7f,0xc2,0xbc,0xd3,0x42,0x90,0x36,0x14,0x7c,0x9b,0x7f,0x9d,0x7a,0xbd,
+ 0x95,0xba,0xbd,0xb2,0x46,0x18,0x90,0x79,0x23,0xbe,0x7d,0x2a,0x2b,0x5d,0x2b,0x1d,
+ 0x8e,0xbf,0x34,0x77,0x36,0xec,0xdb,0x79,0xdf,0xd7,0x9c,0xe3,0xff,0x00,0xaf,0x5a,
+ 0xda,0x9e,0xab,0x16,0x81,0xa3,0xcb,0xa9,0xc9,0xc9,0x00,0xac,0x48,0x7f,0x8a,0x43,
+ 0xc0,0x1f,0xe3,0xed,0x4d,0xb0,0xb6,0x48,0xc0,0xce,0x00,0x51,0xb8,0x93,0xd0,0x63,
+ 0xd6,0xbc,0x6f,0xc7,0x9e,0x25,0xfe,0xdc,0xbe,0x5b,0x6b,0x63,0xfe,0x89,0x6b,0x91,
+ 0x1e,0x38,0x0e,0xc7,0xef,0x3f,0xf4,0x1e,0xd5,0xf3,0xb9,0xd6,0x64,0xb0,0x94,0x1c,
+ 0xd7,0xc4,0xf6,0xff,0x00,0x33,0xf3,0xee,0x37,0xe2,0x3a,0x79,0x76,0x11,0xf2,0x3f,
+ 0x7e,0x5a,0x2f,0xeb,0xc8,0xf3,0xcb,0xfb,0x99,0x6e,0x6e,0x24,0xba,0x9c,0x97,0x79,
+ 0x1c,0xb3,0x1e,0xe4,0xb7,0x5a,0xca,0x0f,0xb5,0x81,0xe4,0x7f,0x3a,0xb5,0x31,0xc1,
+ 0x2d,0xd7,0x35,0x98,0xcf,0x93,0xc7,0xe1,0xed,0x5f,0x97,0x37,0xcf,0x77,0x27,0x7b,
+ 0x9f,0xcd,0x4e,0xb4,0xb9,0xb9,0xdb,0xbb,0x36,0xad,0xae,0x48,0xe8,0x78,0xad,0x88,
+ 0x6e,0x8b,0x0c,0x66,0xb8,0xc4,0x9b,0x1d,0x78,0xad,0x28,0x6e,0x7d,0x3f,0xc6,0xbf,
+ 0x34,0xe2,0xcc,0x89,0xca,0xf5,0x69,0xa3,0xf4,0x7e,0x1a,0xce,0xa3,0x65,0x4e,0x6c,
+ 0xec,0xa3,0xb9,0x18,0xe3,0x8a,0xb9,0x1d,0xc7,0x20,0xfe,0x7c,0xd7,0x25,0x1d,0xd1,
+ 0x3c,0x67,0xde,0xb4,0xe1,0x9f,0x27,0x93,0xcf,0x1d,0x6b,0xf2,0xdc,0x46,0x11,0xc5,
+ 0xb4,0xd1,0xfa,0x05,0x2c,0x44,0x5a,0xd1,0x9d,0x6c,0x37,0x27,0x1e,0x95,0xa1,0x1d,
+ 0xe1,0x1c,0x1a,0xe5,0x56,0x6c,0x00,0x73,0x9a,0x53,0x75,0x8e,0x0f,0x4a,0xf3,0x1e,
+ 0x1e,0xe7,0x52,0xaa,0xac,0x75,0xeb,0x76,0x5b,0xbd,0x4e,0x93,0x02,0x72,0x78,0xcd,
+ 0x72,0x51,0x5d,0x83,0x8c,0xfa,0xd6,0xa4,0x17,0x5c,0xf2,0x79,0x35,0x0e,0x8d,0xb4,
+ 0x64,0xfb,0x4e,0xe7,0x5f,0x6e,0xfc,0x67,0x3d,0x2b,0x40,0xcb,0xf2,0x70,0x7b,0x66,
+ 0xb9,0xdb,0x6b,0x81,0x57,0x64,0xba,0x01,0x39,0xaa,0x50,0xb2,0x08,0x4d,0xf3,0x68,
+ 0x66,0xdf,0xcb,0xf3,0xe2,0xaa,0xc7,0x29,0xe3,0xd3,0xbd,0x54,0xba,0x9f,0x73,0xe7,
+ 0x3d,0x2a,0xb7,0x9f,0xd8,0xfe,0x59,0xac,0x61,0x45,0xdf,0x43,0xbb,0x13,0x55,0x28,
+ 0xa4,0x8f,0xff,0xd0,0xf8,0x26,0xf6,0xef,0x27,0x62,0xd5,0xad,0x2d,0x5e,0x62,0x30,
+ 0x09,0x1f,0xce,0xaa,0xe9,0xfa,0x55,0xc6,0xa9,0x38,0x89,0x01,0xc1,0xee,0x2b,0xe8,
+ 0x8f,0x07,0x7c,0x37,0x67,0x89,0x59,0xa3,0x24,0x90,0x33,0x5f,0x99,0x63,0x33,0xbc,
+ 0x26,0x12,0x37,0xa9,0x23,0xdf,0xc3,0xd1,0xc4,0x57,0x69,0xc4,0xf2,0x0b,0x9d,0x22,
+ 0x59,0x63,0xce,0xce,0x71,0xfe,0x4d,0x61,0x45,0xa7,0xbe,0x9f,0x33,0x19,0x06,0x33,
+ 0xda,0xbe,0xd6,0x5f,0x86,0xd9,0x41,0x98,0xfa,0x0f,0x4a,0xf0,0xcf,0x8a,0x5e,0x1e,
+ 0x1a,0x04,0xc9,0x95,0xdb,0x91,0x91,0x5f,0x3b,0x97,0x71,0xbe,0x13,0x15,0x98,0x43,
+ 0x0b,0x4f,0x76,0x7e,0xab,0xc2,0x34,0xb1,0x34,0x71,0x34,0xf9,0xf6,0x3c,0xd6,0x36,
+ 0xe0,0x0a,0xdf,0xb4,0x9d,0x64,0x75,0x85,0xb8,0x20,0x75,0xf5,0xae,0x52,0x07,0x52,
+ 0x73,0xdc,0x73,0x5b,0x70,0x48,0x1a,0xe3,0x74,0x63,0x18,0x1f,0xd2,0xbe,0xef,0x19,
+ 0x3b,0x72,0x9f,0xb4,0x4a,0xb5,0xdd,0x8e,0x85,0x40,0x88,0x6e,0x53,0xc8,0xf5,0xac,
+ 0xc9,0xae,0xcb,0x4f,0x8c,0x9e,0xbd,0x4d,0x48,0xad,0x80,0x77,0x1f,0x4c,0xe6,0xa9,
+ 0xce,0x80,0xb8,0x76,0x38,0x19,0xef,0x5c,0x55,0x24,0xd2,0xd0,0xea,0xc2,0x55,0xf7,
+ 0xaf,0x23,0x54,0x5c,0x6f,0x65,0x2a,0x70,0xc8,0x3d,0x7a,0xd5,0xdf,0xb4,0xe2,0x16,
+ 0x04,0x0d,0xed,0xdf,0xd0,0x7a,0x56,0x14,0x52,0x00,0xd5,0x34,0xd7,0x27,0x6f,0x20,
+ 0x62,0xb0,0x75,0xec,0xdd,0xd9,0xf4,0x14,0x2a,0x5c,0xd2,0xb7,0x9d,0x72,0x50,0x30,
+ 0xce,0x33,0xed,0x59,0x57,0x6f,0x1b,0xb1,0xcb,0x7d,0x49,0xfe,0x55,0x0d,0xac,0x91,
+ 0x89,0x7e,0x6e,0xf9,0x3e,0xd5,0x8d,0x3c,0xec,0xce,0xd8,0x3d,0x09,0xae,0x5a,0xf8,
+ 0xcb,0x2e,0x56,0x7b,0xb8,0x6a,0x89,0xc9,0xa3,0xa8,0xb1,0xd3,0x23,0xd5,0x71,0x18,
+ 0x20,0x1e,0x99,0xcd,0x45,0xad,0x78,0x75,0xb4,0x46,0x59,0x13,0xe6,0x8e,0x4e,0xa7,
+ 0xd0,0xd6,0x7e,0x91,0xa9,0xa5,0xb4,0x9f,0x33,0x1d,0xdd,0x02,0x8a,0xed,0x35,0x4b,
+ 0xf1,0x79,0xa4,0x34,0x72,0x10,0xc7,0x6e,0x47,0xb6,0x28,0xb5,0x3a,0xd4,0x5d,0xb7,
+ 0x3d,0x05,0x34,0x8f,0x3f,0x49,0x17,0x70,0x00,0xf5,0x3e,0x94,0xfd,0x51,0xc2,0x45,
+ 0x1c,0x60,0xe7,0x9e,0x6a,0xa4,0x04,0x79,0x9c,0xf1,0x8a,0xad,0xa9,0xcd,0xba,0x75,
+ 0x8c,0x74,0x1c,0x9f,0xc3,0x9a,0xf1,0xe3,0x55,0xa4,0xce,0x1c,0x4c,0x95,0xf4,0x23,
+ 0xba,0x9c,0x49,0x2a,0x46,0xad,0xf7,0x47,0x7a,0x9e,0x59,0x7c,0xb8,0x00,0x3c,0x71,
+ 0x8a,0xcd,0x8b,0x0f,0x21,0x6f,0x53,0xfa,0x0f,0x4a,0x5b,0xe9,0x42,0xae,0xde,0x2b,
+ 0x48,0x54,0x72,0x77,0x64,0x5e,0xd6,0x89,0x8d,0x72,0xc4,0xb1,0x23,0x8c,0xf1,0x55,
+ 0x01,0xe3,0x24,0xd5,0xc2,0x37,0xa7,0x03,0x38,0xe9,0x55,0xca,0x61,0x73,0x8c,0xe6,
+ 0xad,0xa6,0xe5,0x73,0xa7,0x13,0x53,0x92,0x16,0x25,0x81,0xca,0x36,0x47,0x4f,0xf1,
+ 0xaf,0x33,0xf1,0x5d,0xe7,0xda,0x2f,0xcc,0x6a,0x72,0x23,0x18,0xfa,0x9a,0xef,0xe6,
+ 0x6f,0x22,0x07,0x95,0xb8,0x55,0x04,0xe6,0xbc,0x82,0xe6,0x73,0x35,0xc4,0x92,0x13,
+ 0x9d,0xcd,0x9c,0xd7,0xd8,0xf0,0xc6,0x1a,0xee,0x55,0x6d,0xb1,0xfc,0xcb,0xe3,0x66,
+ 0x7a,0xbd,0x95,0x3c,0x04,0x25,0xac,0x9d,0xdf,0xa2,0x2a,0xd3,0x4a,0x8c,0x70,0x3f,
+ 0x1a,0x7f,0xd7,0xf3,0xa6,0x9c,0x03,0x9a,0xfb,0x58,0x23,0xf9,0xb8,0x6e,0xd0,0x38,
+ 0xa6,0xe2,0x9d,0x8c,0xf0,0x0d,0x37,0xa9,0xa9,0xf5,0x01,0x62,0x8c,0xb4,0x80,0x0e,
+ 0x7f,0x0c,0xd7,0xa6,0xf8,0x7a,0xcf,0x25,0x78,0xeb,0x5c,0x16,0x9d,0x11,0x79,0x41,
+ 0xc6,0x47,0xa5,0x7b,0x0f,0x87,0xad,0x88,0x0a,0x71,0xfa,0x57,0x9b,0x98,0x55,0xe5,
+ 0x89,0xcb,0x59,0xd8,0xed,0x2d,0x62,0x11,0x42,0x09,0xeb,0x8a,0xc9,0xbb,0x70,0xcc,
+ 0x49,0xe3,0xeb,0x5a,0xf3,0x3f,0x97,0x0e,0x17,0x8a,0xe7,0x6e,0x1f,0x2d,0xd7,0x83,
+ 0x5f,0x1d,0x5a,0xb5,0xe4,0xce,0x06,0xf5,0x32,0xae,0x4f,0x53,0xeb,0x59,0x8e,0xa0,
+ 0x9e,0x6b,0x4e,0x44,0x3d,0x4f,0x5a,0xa6,0x63,0x1c,0x9f,0xf3,0xf8,0xd7,0x24,0x9b,
+ 0xdc,0xb8,0xbb,0x15,0x02,0x0c,0xee,0xe8,0x49,0xae,0x83,0x4f,0x4e,0x57,0x3d,0xeb,
+ 0x31,0x23,0xcb,0x0e,0x3a,0xf4,0xae,0x82,0xc9,0x31,0x8c,0x77,0xaf,0x33,0x16,0xd9,
+ 0xd5,0x4d,0xea,0x5d,0xb9,0x62,0x20,0x3f,0xe7,0xf2,0xaf,0x1b,0xf1,0x43,0x9c,0xb0,
+ 0xe9,0xfe,0x35,0xeb,0xba,0x8c,0x85,0x61,0x60,0x7b,0x56,0x07,0x84,0xbc,0x09,0x37,
+ 0x8f,0xfc,0x46,0x60,0x9d,0x8c,0x1a,0x5d,0x9f,0xef,0xf5,0x0b,0x91,0xff,0x00,0x2c,
+ 0xe1,0x07,0xee,0x21,0xff,0x00,0x9e,0x92,0x7d,0xd4,0xfc,0x4f,0x6e,0x7d,0x2c,0x8e,
+ 0x50,0xa4,0xdd,0x7a,0xae,0xd1,0x8e,0xa7,0x4d,0xd2,0x46,0xdf,0xc0,0x3f,0x85,0x96,
+ 0x57,0xee,0x7e,0x23,0xf8,0xc6,0x10,0xda,0x26,0x9f,0x29,0x16,0x76,0xae,0x3f,0xe3,
+ 0xfa,0xee,0x33,0xc6,0x41,0xeb,0x14,0x47,0x96,0xfe,0xf3,0x7c,0xbd,0x01,0xcf,0xd1,
+ 0xba,0xdf,0x88,0x6f,0xfc,0x43,0x75,0x25,0xd5,0xd4,0x84,0x03,0xf7,0x47,0x40,0x14,
+ 0x74,0x00,0x0e,0x00,0x03,0xa5,0x57,0xbd,0xbc,0x8e,0xe8,0x41,0xa6,0xe9,0xb0,0x2d,
+ 0x96,0x97,0x60,0x8b,0x05,0xad,0xb4,0x63,0x09,0x1c,0x48,0x30,0x14,0x0f,0xd4,0x9e,
+ 0xe6,0xa9,0xc8,0xaa,0xbf,0xbb,0x51,0xdf,0xbd,0x7c,0x5f,0x11,0x67,0x55,0x33,0x4c,
+ 0x4b,0x9b,0xd2,0x0b,0xe1,0x5f,0xaf,0xab,0x3c,0x9c,0x46,0x2d,0x49,0xd9,0x6c,0x8c,
+ 0x47,0x89,0x22,0x47,0xbd,0x93,0xee,0xc7,0xf7,0x47,0xab,0x1e,0x82,0xb8,0xed,0x42,
+ 0x5d,0xaa,0xc5,0x89,0xdd,0xb7,0x76,0x47,0xa9,0x39,0xae,0x8f,0x56,0xba,0x17,0x0e,
+ 0x2d,0xa0,0x19,0x86,0x2c,0xf3,0xfd,0xe6,0x3d,0x4d,0x72,0x5a,0x9c,0x85,0x5a,0x53,
+ 0xeb,0x81,0xf8,0x01,0x5d,0xb9,0x6d,0x35,0x0a,0x77,0x7b,0xb3,0x92,0x32,0xbc,0xae,
+ 0x7c,0x7f,0xad,0xdb,0xf9,0x1a,0xcd,0xf4,0x3f,0xdd,0xb9,0x9b,0xf2,0x2e,0x58,0x7f,
+ 0x3a,0xca,0xd8,0x07,0xd6,0xba,0xcf,0x18,0x44,0x13,0xc4,0x77,0xdd,0xb7,0x48,0x18,
+ 0x7e,0x28,0xb5,0xcc,0xed,0xc7,0x02,0xbf,0x6d,0xc2,0x4f,0x9a,0x85,0x39,0x77,0x48,
+ 0xfa,0x28,0x7c,0x28,0x84,0x29,0x07,0x38,0xaf,0xa1,0x7c,0x1b,0x73,0xe6,0xe8,0x96,
+ 0xa1,0x49,0xf9,0x37,0x2f,0xb7,0x0d,0x5e,0x02,0x46,0x3a,0x0e,0x6b,0xd9,0x3c,0x03,
+ 0x74,0x1b,0x4f,0x96,0xdf,0xbc,0x72,0x02,0x07,0xfb,0xc3,0xfc,0x45,0x6d,0xcd,0xca,
+ 0xee,0x7d,0x47,0x0b,0x62,0x15,0x3c,0x5f,0x2f,0x74,0xd1,0xeb,0x9a,0x65,0xeb,0x5a,
+ 0xdc,0x27,0x3b,0x40,0x6c,0x1c,0x7a,0x66,0xa4,0xf1,0x0e,0xab,0x2e,0xa7,0x7d,0xb5,
+ 0xb2,0x63,0x85,0x76,0x2e,0x4f,0x7e,0xa4,0xd6,0x28,0x9f,0x7c,0xaa,0x38,0x00,0x63,
+ 0x3e,0xfe,0xff,0x00,0xd2,0x92,0x17,0xf3,0x66,0x70,0xe3,0x80,0xdc,0x7a,0x8f,0x4f,
+ 0xc2,0xbe,0x86,0x9e,0x2e,0x5e,0xc5,0x42,0xfa,0x1f,0xac,0x65,0x69,0x4e,0xab,0x9b,
+ 0xe8,0x8b,0x4b,0x2a,0xbe,0xc7,0xce,0x3a,0x7e,0x02,0xba,0xed,0x31,0xc1,0x64,0x0f,
+ 0xcf,0x3d,0x4f,0xaf,0xa5,0x70,0xf1,0x2e,0xc9,0x9e,0x06,0xce,0x01,0xc8,0xfc,0x7d,
+ 0x2b,0xb4,0xd3,0x51,0x99,0x15,0x97,0xef,0x21,0xe7,0x3c,0x54,0xd0,0xab,0x67,0x64,
+ 0x6c,0xea,0x28,0xb7,0x16,0x75,0xb7,0x11,0x10,0xa8,0x7a,0x17,0xce,0x47,0xa5,0x68,
+ 0xe8,0xc3,0x13,0x15,0x27,0x3b,0xb8,0xf5,0xa6,0x60,0x4b,0x0e,0xd3,0xc3,0x11,0xc1,
+ 0xcd,0x4d,0xa3,0x97,0x4b,0xc1,0x8e,0x98,0xdb,0x9c,0x7f,0x2a,0xf4,0x1d,0x64,0x9e,
+ 0x81,0x42,0xad,0xdd,0x99,0xb9,0x70,0x0f,0xd9,0x5f,0xe5,0xc6,0x3a,0xfd,0x6b,0xcf,
+ 0x6e,0x42,0x2b,0x36,0xde,0x18,0x92,0x46,0x3b,0x8f,0x5f,0x6a,0xf4,0x9d,0x43,0x77,
+ 0xd9,0x64,0x0c,0x78,0xc1,0x1e,0xd5,0xe4,0x97,0xac,0x52,0x63,0xf3,0x75,0xec,0x2b,
+ 0x45,0x8a,0x8d,0x85,0x29,0x7e,0xf3,0x41,0x6e,0x1d,0x1d,0x55,0x77,0x1f,0x9b,0xd7,
+ 0x8f,0x7a,0xc8,0xb8,0x62,0x0f,0x5e,0x84,0xe0,0x8e,0xdf,0x85,0x58,0x9d,0xd8,0x14,
+ 0x39,0xeb,0x54,0x26,0x05,0x41,0x60,0x32,0x7b,0x7b,0x57,0x3c,0xeb,0x73,0x6a,0x7a,
+ 0x14,0x6a,0x2b,0x22,0xbb,0x6c,0x3b,0x4a,0xf0,0xc7,0x8f,0x53,0x5a,0xd6,0x78,0x85,
+ 0x73,0xc7,0x98,0xdd,0x3d,0x80,0xef,0xf5,0xac,0x68,0xf2,0x4e,0xd1,0xf7,0xb3,0x9a,
+ 0xb6,0x27,0x0a,0x73,0x81,0x9c,0xe6,0x95,0x29,0xa4,0xf9,0x99,0xd1,0x39,0xb6,0xac,
+ 0x74,0xd6,0xfa,0x8c,0x56,0xf3,0x8f,0x30,0x01,0xce,0x78,0xf4,0xf5,0xad,0xb4,0xd5,
+ 0x7e,0xd0,0xbb,0xe1,0xfb,0x83,0xa0,0x3d,0xfd,0xeb,0xcd,0x1e,0x59,0x65,0x90,0xee,
+ 0xe8,0x71,0xde,0xbb,0x1d,0x1e,0x22,0xea,0x0e,0x78,0xae,0xaf,0xae,0xb7,0xa2,0x39,
+ 0xea,0xc5,0x34,0xa4,0xcd,0x98,0x4c,0x9e,0x63,0xce,0xc3,0x27,0x69,0xe4,0xfe,0x55,
+ 0x73,0x45,0xd3,0x8c,0xd7,0x68,0xac,0xbf,0x79,0x87,0xe3,0xcf,0x02,0xb5,0xb4,0xeb,
+ 0x03,0x75,0x0b,0x49,0xb4,0xe0,0x9d,0xab,0xee,0x07,0xf8,0x9a,0xeb,0xf4,0x7d,0x27,
+ 0xc8,0x9c,0xc8,0xa3,0x98,0xd4,0xb7,0x3d,0x32,0x01,0xc5,0x73,0xf3,0x27,0x3b,0x9d,
+ 0x34,0x2b,0x28,0xc2,0xd7,0xd4,0xf1,0x6f,0x12,0x44,0xdf,0xda,0x13,0x37,0x52,0xce,
+ 0xd9,0xf6,0xe7,0xa5,0x47,0xa2,0x59,0xbc,0x57,0x41,0xc7,0x65,0x19,0xc7,0x4e,0xb5,
+ 0xaf,0xa8,0x44,0xdf,0x68,0x2f,0x37,0xcc,0xe7,0x9c,0x62,0xb4,0x34,0x78,0x9e,0x47,
+ 0x05,0x53,0x8c,0xe3,0xe9,0x5a,0xa8,0x5e,0x47,0xa9,0xed,0xbd,0xdb,0x5c,0xee,0x74,
+ 0x88,0x9c,0x32,0xbb,0xfc,0xa0,0x74,0xe7,0xf9,0x57,0xb0,0xe8,0xaf,0xe7,0x44,0xa8,
+ 0xb8,0x1e,0xb9,0xaf,0x2d,0xb0,0xb7,0x6c,0xaf,0x5e,0x2b,0xad,0x93,0x53,0x5d,0x26,
+ 0xc1,0xa4,0x1d,0x71,0x80,0x3b,0xb1,0x3d,0x05,0x65,0x8a,0x50,0x85,0x37,0x39,0xbb,
+ 0x25,0xd4,0xe2,0xc4,0xe6,0x70,0xc3,0xd3,0x95,0x4a,0x8e,0xc9,0x1b,0x5e,0x34,0xf1,
+ 0x22,0xd9,0xd9,0x0d,0x1a,0xc1,0xf1,0x24,0x83,0x12,0xb0,0xea,0x17,0xd3,0x3e,0xf5,
+ 0xe2,0xb3,0x3e,0xee,0x33,0xd6,0x96,0xee,0xfe,0x5b,0xc9,0xde,0xe2,0x63,0x96,0x76,
+ 0xc9,0xf4,0x1e,0xd5,0x41,0xa5,0xca,0xf2,0x79,0xf4,0xaf,0xc6,0xf3,0x6c,0x7b,0xc5,
+ 0xd7,0x75,0x3e,0xcf,0x4f,0x43,0xf9,0xcb,0x88,0xf3,0x9a,0x99,0x96,0x2e,0x75,0xdf,
+ 0xc3,0xb2,0x5e,0x45,0x4b,0x8c,0x11,0xd7,0xd7,0x1c,0x56,0x43,0x92,0x3d,0xb3,0x5a,
+ 0x33,0x3f,0xe9,0x59,0x72,0x12,0x0e,0x4d,0x79,0xf0,0x8d,0xb6,0x3e,0x75,0x81,0x63,
+ 0x9a,0x7a,0x4a,0xcb,0x8c,0xd5,0x53,0xc9,0xa4,0x07,0x0d,0x8a,0x27,0x42,0x35,0x13,
+ 0x8c,0x8d,0x28,0xd7,0x9d,0x37,0x78,0xb3,0x66,0x29,0xcd,0x6b,0xc1,0x70,0x31,0x8f,
+ 0x4a,0xe6,0xa3,0x62,0xab,0xcd,0x5b,0x8e,0x76,0x18,0x27,0xa7,0x5a,0xf9,0xac,0xc3,
+ 0x85,0x30,0xf5,0xaf,0x24,0x8f,0xa6,0xc1,0x71,0x3d,0x5a,0x76,0x52,0x3a,0xb3,0x71,
+ 0x85,0x04,0x1e,0x40,0xaa,0xed,0x76,0x00,0x39,0x35,0xcf,0x4b,0xa8,0x2a,0x2f,0x5a,
+ 0xe7,0x2f,0x35,0xe4,0x88,0xe0,0x93,0x8a,0xf8,0x5c,0x7f,0x08,0xba,0x57,0x95,0x34,
+ 0x7d,0x86,0x5f,0xc4,0x70,0xad,0x68,0xc8,0xf4,0x58,0xef,0x86,0xee,0xa2,0xb5,0x20,
+ 0xd4,0x01,0xfe,0x2e,0x2b,0xc7,0x13,0xc4,0x08,0x48,0xcb,0x7b,0xf1,0x57,0xe2,0xf1,
+ 0x08,0xcf,0x0d,0xda,0xbe,0x7a,0xbe,0x41,0x51,0x74,0x3d,0xd5,0x99,0x53,0xb6,0xac,
+ 0xf7,0x08,0x35,0x00,0x17,0xef,0x54,0x93,0xea,0xc8,0x14,0xfc,0xd5,0xe3,0x6b,0xe2,
+ 0x54,0x51,0xcb,0xd5,0x39,0xfc,0x56,0xa7,0x80,0xdd,0x7d,0xeb,0x9a,0x39,0x05,0x79,
+ 0x68,0xa2,0x52,0xcd,0x28,0xc7,0x57,0x23,0xd3,0xe5,0xd5,0x17,0x77,0xde,0xef,0x54,
+ 0xe5,0xd5,0xd5,0x7f,0x88,0x1c,0xd7,0x92,0x4b,0xe2,0x70,0x4f,0xde,0xac,0x5b,0x9f,
+ 0x13,0x31,0x24,0x64,0xfe,0x7c,0x57,0xa5,0x84,0xe1,0x6a,0xb2,0x6a,0xf1,0x38,0xf1,
+ 0x7c,0x45,0x49,0x2d,0x19,0xff,0xd1,0xf0,0x8f,0x87,0x5e,0x15,0x59,0x5a,0x37,0x75,
+ 0xea,0x47,0x38,0xaf,0xb8,0xbc,0x1d,0xe1,0x78,0x05,0xba,0x0d,0xa3,0x20,0x0e,0xd5,
+ 0xf3,0xdf,0x81,0x6c,0x56,0x05,0x8c,0xe3,0x18,0xc1,0xaf,0xa7,0xfc,0x3d,0xa8,0x8b,
+ 0x74,0x54,0x07,0x18,0xaf,0xe1,0x2e,0x26,0xcf,0xeb,0xd6,0xc4,0x4a,0x1c,0xda,0x1f,
+ 0xb5,0xe4,0xf9,0x74,0x21,0x42,0x2e,0xc7,0x5d,0x27,0x87,0xad,0xa3,0x8f,0xee,0x8c,
+ 0xd7,0xc2,0xbf,0xb5,0x36,0x9e,0x6c,0xa3,0xb7,0xb9,0x8d,0x70,0xbb,0x80,0x3f,0x9d,
+ 0x7e,0x81,0x45,0x70,0x27,0x8c,0x1e,0xb9,0x15,0xf3,0x07,0xed,0x23,0xe1,0x6f,0xed,
+ 0xaf,0x0b,0xcb,0x34,0x69,0xb9,0xa2,0xf9,0x85,0x79,0xdc,0x2b,0x8c,0xf6,0x19,0xce,
+ 0x1b,0x11,0x37,0xa7,0x32,0x3e,0xaf,0x01,0x25,0x4e,0xa2,0x3f,0x37,0xec,0xe7,0xdb,
+ 0x22,0x9c,0xf6,0xae,0x9a,0xc9,0xf7,0xba,0xbe,0x71,0xeb,0xc5,0x71,0x11,0x93,0x0c,
+ 0xdb,0x58,0x15,0x20,0xe0,0xfd,0x47,0x6a,0xea,0x2d,0x64,0xd8,0x54,0x11,0xd7,0xf5,
+ 0xaf,0xec,0x2c,0x64,0xaf,0x18,0xb3,0xeb,0x29,0xd7,0x52,0x5a,0x33,0xa8,0x27,0xe6,
+ 0xdd,0xd7,0x8a,0x86,0xe1,0x97,0x68,0x5e,0x33,0xef,0x50,0x09,0x89,0xc6,0xde,0x82,
+ 0xab,0xdd,0x48,0x55,0x77,0x1a,0xe1,0x73,0xba,0x3b,0xb0,0xb5,0xda,0x44,0x8b,0x20,
+ 0x80,0x33,0x8e,0xbd,0x87,0xb5,0x44,0xd7,0x1b,0xc1,0x23,0x9c,0xf3,0x50,0xf9,0x82,
+ 0x44,0x05,0x97,0x39,0xe9,0x50,0x04,0x6d,0xdc,0x9f,0x7a,0xf3,0xeb,0xd4,0x77,0xd0,
+ 0xfa,0x0c,0x1e,0x23,0xbe,0xe5,0xbb,0x5c,0xbb,0xbe,0x4f,0x45,0x3c,0x9f,0x5c,0x56,
+ 0x6b,0x62,0x12,0x77,0x0c,0x8c,0xff,0x00,0x3a,0xbd,0x18,0x65,0x2d,0xb7,0xbf,0x5f,
+ 0x7a,0xa9,0x74,0x9b,0x81,0x23,0x80,0x2b,0xcd,0x72,0xd6,0xec,0xf7,0x70,0xd8,0x8f,
+ 0x79,0xea,0x52,0x69,0x71,0x9d,0xbc,0x10,0x6b,0x66,0x2d,0x78,0x35,0x9b,0xdb,0x49,
+ 0xf7,0x80,0xc0,0xc5,0x72,0x72,0x96,0xdc,0x40,0xcd,0x41,0x01,0x0b,0x70,0x19,0xf9,
+ 0x1f,0xce,0x9d,0x0c,0x44,0x95,0x4b,0x27,0xb9,0xed,0x42,0xa5,0xe3,0xa9,0xd3,0x5b,
+ 0xc8,0x19,0xb2,0x4f,0x03,0x9f,0xc2,0xb2,0x6e,0xa5,0x57,0x99,0x88,0xee,0x71,0x57,
+ 0x16,0x41,0x0d,0xbb,0x31,0x1c,0xe2,0xb0,0xb7,0x16,0x6c,0xb7,0x3f,0xa7,0x5a,0xe4,
+ 0x52,0xd1,0x9c,0x92,0x7c,0xd3,0x34,0xe0,0xe3,0xee,0xf6,0xe9,0x59,0xf7,0x72,0x33,
+ 0xc9,0x8c,0xe4,0xd5,0x98,0xd8,0x84,0x2e,0x78,0x26,0xb2,0x8b,0x16,0x73,0x91,0x91,
+ 0x5a,0xd0,0x76,0xd4,0xe8,0xa5,0x14,0xdd,0xd9,0x69,0x30,0x30,0x73,0x52,0x00,0x1f,
+ 0x81,0x4c,0x81,0x57,0xbe,0x6a,0x59,0x1d,0x21,0x89,0x9c,0xf5,0x1d,0xcf,0xa5,0x7a,
+ 0x14,0x2f,0x29,0x69,0xd4,0xf3,0x33,0x9c,0x64,0x69,0x53,0x94,0xa4,0xf6,0x38,0xef,
+ 0x16,0x5f,0x79,0x36,0x82,0xd5,0x0e,0x0c,0x87,0x1f,0x85,0x79,0x96,0x49,0x38,0xad,
+ 0xbd,0x76,0xf8,0xdf,0x5e,0xbb,0xe7,0xe4,0x4e,0x16,0xb0,0xab,0xf5,0x2c,0xaf,0x08,
+ 0xa8,0x61,0xe3,0x1e,0xa7,0xf0,0xc7,0x19,0xe7,0x6f,0x34,0xcd,0x6a,0xd7,0xbf,0xba,
+ 0xb4,0x5e,0x88,0x0f,0x3d,0xe9,0xad,0xd2,0x9d,0x48,0xc7,0x1c,0xd7,0xa3,0xf3,0x3e,
+ 0x52,0xe3,0x4f,0x3c,0xf6,0xa4,0x23,0x03,0x9e,0xf4,0xb8,0x3c,0x66,0x95,0x46,0x5f,
+ 0x03,0xa6,0x45,0x26,0x26,0xce,0x83,0x46,0x80,0xb3,0xa9,0xaf,0x6a,0xd1,0x61,0xd9,
+ 0x12,0xe7,0x80,0x31,0x5e,0x65,0xa0,0xdb,0x6e,0x2b,0x8a,0xf6,0x0d,0x3e,0x22,0x91,
+ 0x0f,0x6e,0x95,0xf2,0xf9,0xce,0x23,0x5b,0x1c,0x18,0x8a,0x9b,0xa2,0x3b,0xc7,0x24,
+ 0xed,0x15,0x89,0x28,0xcf,0x23,0xbd,0x6e,0x5d,0x26,0x4e,0x7d,0x7a,0x7f,0x8d,0x64,
+ 0xba,0x10,0xf8,0xf4,0xaf,0x95,0x77,0x5a,0xa3,0x86,0x33,0xd4,0xa2,0xcb,0xeb,0x50,
+ 0x32,0x62,0xaf,0x84,0x39,0xc5,0x47,0x22,0x05,0x19,0xa4,0xe7,0xa1,0x69,0xbb,0x94,
+ 0xa3,0x40,0x4e,0x7f,0x4e,0xb5,0xbd,0x6a,0x81,0x71,0xdb,0xfa,0x56,0x4c,0x63,0x2c,
+ 0x31,0xd3,0xdb,0xd6,0xb7,0xac,0xe2,0x79,0x30,0xa8,0x09,0x66,0x20,0x00,0x07,0x24,
+ 0x9f,0x4a,0xf3,0xb1,0x73,0xbb,0xb2,0x3b,0xa9,0xf4,0x64,0x90,0xe8,0xf7,0xbe,0x20,
+ 0xd4,0x60,0xd1,0xb4,0xe5,0xdf,0x35,0xcb,0x84,0x5c,0xf0,0xa3,0xfb,0xcc,0xc7,0xb2,
+ 0xa8,0xe4,0x9f,0x4a,0xf6,0x88,0x2d,0x74,0xdd,0x0b,0x4f,0x8f,0xc2,0x9a,0x0e,0x1a,
+ 0xda,0x03,0xbe,0xea,0xe7,0x18,0x6b,0xab,0x8e,0x8f,0x23,0x7b,0x0e,0x88,0x3b,0x2d,
+ 0x49,0x6d,0xa5,0xc5,0xe0,0xcd,0x2f,0xfb,0x3d,0x36,0x9d,0x73,0x50,0x40,0x6f,0x24,
+ 0x1c,0xfd,0x92,0x06,0xe5,0x6d,0xd4,0xf6,0x76,0xe0,0xc8,0x7e,0x8b,0x54,0x80,0x4b,
+ 0x78,0xf1,0x9c,0xf3,0xf3,0x13,0xd7,0xe9,0x5e,0x4e,0x3f,0x14,0xdd,0x3f,0xab,0xc5,
+ 0xe9,0xd7,0xcd,0xf6,0x39,0x31,0x98,0x9b,0xbe,0x48,0xed,0xd4,0xb0,0x5e,0x38,0x14,
+ 0x91,0x91,0x80,0x7f,0x4a,0xe7,0x67,0xbd,0x79,0x98,0xc5,0x19,0xeb,0xc1,0x3d,0xf9,
+ 0x3f,0xd6,0x96,0xfa,0xe5,0xdf,0x28,0xbd,0xfa,0xd5,0x32,0xc2,0xde,0x22,0x0f,0xde,
+ 0xc7,0x5e,0xf9,0x3f,0xe1,0xd2,0xbc,0xbc,0x35,0x15,0x29,0x73,0x34,0x79,0xbc,0xda,
+ 0xe8,0x54,0xb8,0x20,0x48,0x71,0xf2,0xa8,0x21,0x41,0xec,0x7d,0x6b,0x95,0xd4,0x26,
+ 0x2e,0x64,0x3d,0xcb,0x1a,0xdd,0x92,0x41,0x21,0x0d,0xdb,0x9a,0xe7,0xae,0xce,0xf4,
+ 0x38,0xc7,0xde,0x38,0xaf,0x7e,0x93,0xb2,0x56,0x47,0x45,0x28,0x6b,0x76,0x7c,0xef,
+ 0xe3,0x88,0xb6,0xeb,0xac,0xe4,0x71,0x24,0x48,0xdf,0xcc,0x7f,0x4a,0xe3,0x82,0xf2,
+ 0x48,0xed,0xda,0xbd,0x1f,0xc7,0xf0,0xe3,0x50,0xb7,0x9b,0x1c,0xb4,0x45,0x4f,0xfc,
+ 0x05,0xbf,0xfa,0xf5,0xe7,0xec,0x09,0x38,0xe9,0x5f,0xae,0x64,0xf5,0x39,0xf0,0x54,
+ 0x9d,0xba,0x1f,0x41,0x4d,0xfb,0xa8,0x83,0x67,0xe1,0x5d,0xa7,0x83,0x6e,0xcd,0xae,
+ 0xa3,0xe5,0x1e,0x16,0x55,0xda,0x7e,0xbd,0x45,0x72,0x5b,0x46,0x79,0xfa,0xfa,0x55,
+ 0x9b,0x59,0x1e,0xde,0x78,0xe4,0x5e,0x36,0x9c,0x8f,0xa8,0xaf,0x42,0x51,0xba,0xb1,
+ 0xd7,0x84,0xae,0xe8,0xd6,0x8d,0x55,0xd1,0x9e,0xfc,0xb2,0x08,0x6e,0x53,0x77,0x21,
+ 0xc6,0x70,0x3d,0xab,0xaa,0xb6,0xb3,0x73,0x20,0x90,0xa9,0x1b,0xc6,0xe1,0xf4,0x35,
+ 0xc3,0xdb,0xce,0xb7,0xb6,0x70,0x5c,0xa6,0x4e,0x00,0xe9,0xdb,0xeb,0x5f,0x45,0x69,
+ 0x3a,0x22,0x6a,0x7e,0x19,0xb2,0xd4,0x2d,0xc6,0x64,0x8d,0x31,0xc7,0x7c,0x70,0x45,
+ 0x74,0x61,0x2b,0x7d,0x96,0x7e,0xb9,0x96,0x66,0x30,0x84,0xd3,0x93,0xd2,0x47,0x97,
+ 0xea,0x76,0x66,0x16,0x8e,0xe8,0x0c,0x06,0xf9,0x18,0xff,0x00,0x2a,0xdd,0xd2,0x48,
+ 0x1b,0x4e,0x77,0x0e,0xe3,0x1d,0xc5,0x74,0xd7,0xba,0x1b,0xdd,0x58,0x4b,0x01,0x00,
+ 0xb1,0x04,0xaf,0x1f,0xc4,0xbc,0x8a,0xe1,0xf4,0x89,0xda,0x19,0x04,0x32,0x8d,0xa4,
+ 0x12,0xac,0x0f,0x62,0x2b,0x77,0x3e,0x5a,0x96,0x67,0x7e,0x3a,0xa2,0x8c,0xf9,0x97,
+ 0x53,0xd5,0x2c,0x7c,0x89,0xd1,0x71,0x9c,0x81,0xc7,0xb1,0xf7,0xfc,0x2b,0x5f,0x4d,
+ 0x87,0xca,0xbb,0x51,0xd7,0x07,0xaf,0xa5,0x73,0xfa,0x7c,0x90,0xc6,0x41,0x88,0xf0,
+ 0x71,0x8f,0xaf,0x7a,0xea,0x22,0xb8,0x8e,0x09,0x04,0xcd,0xce,0xee,0x72,0x31,0xc5,
+ 0x6b,0x3a,0xb7,0x47,0x9f,0x1c,0x53,0x84,0xcd,0x9d,0x42,0x0d,0xeb,0x28,0x51,0xd5,
+ 0x77,0x01,0x5e,0x4b,0x79,0x6c,0x0c,0x85,0x98,0x73,0x93,0xda,0xbd,0x62,0x2b,0xd4,
+ 0x91,0xf9,0x23,0xe6,0x5c,0x1e,0xe0,0x57,0x9d,0x6b,0x3b,0x6d,0xae,0x5b,0xfb,0xa4,
+ 0xe4,0x8a,0xe1,0x96,0x29,0xc5,0xd8,0xb5,0x8c,0x94,0xa6,0xd2,0x39,0x7b,0x8b,0x2f,
+ 0xdd,0x2b,0xe0,0x93,0x9e,0xb5,0x9e,0xf6,0xe5,0x72,0xfd,0xc0,0xc6,0x3b,0x66,0xb7,
+ 0xbc,0xd0,0x55,0xd4,0x1c,0x81,0xc0,0xc5,0x42,0x61,0x2c,0xbb,0xb1,0xcf,0x5c,0x7b,
+ 0xd6,0xd4,0x71,0x2d,0x9e,0x86,0x17,0x12,0xd3,0xd5,0xe8,0x73,0x9f,0x66,0x2a,0xcc,
+ 0xed,0xcf,0x3c,0x01,0x4a,0x6d,0xf7,0x10,0x71,0x8c,0x7e,0xb5,0xd1,0x3d,0x93,0xb3,
+ 0x01,0xb0,0xf4,0x19,0x23,0xd6,0x91,0xac,0x19,0x9d,0x40,0x5c,0xe3,0x8a,0xee,0x8d,
+ 0x4d,0x35,0x3d,0x05,0x8a,0xec,0x73,0xe2,0x00,0xef,0x90,0xbe,0x9f,0xa5,0x7a,0x1e,
+ 0x99,0x66,0xc6,0x08,0xd1,0x38,0xdd,0x8e,0x9f,0xa5,0x50,0x87,0x4e,0x24,0x00,0x07,
+ 0x3f,0xce,0xbd,0xa3,0xc0,0xde,0x19,0x97,0x54,0xbe,0xb7,0xb7,0x54,0xcf,0x20,0xb7,
+ 0xb2,0x8e,0x4d,0x35,0x55,0x45,0x6a,0x2a,0xb8,0xa8,0xc6,0x0e,0x4c,0xe8,0x74,0xaf,
+ 0x0d,0x1b,0x6d,0x36,0x0f,0x97,0x0d,0xb7,0x24,0x63,0x92,0xcd,0xcf,0xe9,0x5b,0xb6,
+ 0x3a,0x54,0x36,0xf2,0x32,0xb7,0x24,0x82,0x5f,0x1f,0xc2,0x31,0x5e,0x9b,0xfd,0x8c,
+ 0xd6,0xaa,0x40,0x18,0x93,0x18,0x03,0x8f,0x94,0x7a,0xd5,0x28,0xb4,0xeb,0x74,0x0c,
+ 0x99,0x05,0xc9,0xe4,0x9e,0x99,0xac,0xb0,0xf5,0xdc,0xe7,0x65,0xd4,0xf2,0x23,0x99,
+ 0x37,0x7d,0x4f,0x93,0x2f,0x34,0xe5,0x7b,0xb6,0x65,0x50,0x40,0x3c,0xe7,0xf4,0xad,
+ 0x7d,0x2f,0x4c,0xf3,0x0f,0xca,0xbb,0x00,0xea,0x45,0x7a,0xa6,0xb3,0xe0,0xeb,0x7b,
+ 0x5b,0xe6,0x70,0xdb,0xd6,0x62,0x5c,0x11,0xd0,0x7a,0x81,0xf4,0x3d,0xe9,0xf1,0x69,
+ 0xb6,0xda,0x6d,0xb1,0xbc,0xbc,0x65,0x8a,0x25,0x19,0x00,0xf1,0x9c,0x77,0x26,0xbd,
+ 0xd5,0x51,0x46,0x2d,0xcb,0x43,0xd7,0x79,0xb4,0x15,0x3e,0x66,0xf4,0x39,0x91,0x6d,
+ 0x1e,0x9f,0x6e,0x67,0xb8,0x6d,0xa8,0xbd,0xcf,0x7f,0x4a,0xe0,0x75,0x7d,0x4e,0x5b,
+ 0xc9,0x0c,0x8d,0xc2,0x2f,0x08,0x99,0xe8,0x3f,0xc6,0xb4,0x75,0xcd,0x69,0xf5,0x4b,
+ 0x92,0x63,0xc8,0x81,0x3e,0xe2,0xf4,0xfc,0x4f,0xf4,0xf4,0xae,0x3e,0xea,0x5c,0x57,
+ 0xe6,0x1c,0x49,0xc4,0x2f,0x19,0x2f,0xab,0xd0,0x7f,0xbb,0x5f,0x8f,0xfc,0x03,0xf2,
+ 0x5e,0x28,0xe2,0x59,0x63,0x65,0xec,0x29,0x3f,0xdd,0xaf,0xc5,0xff,0x00,0x91,0x1b,
+ 0x4f,0x92,0x5b,0x38,0xfc,0x2a,0x1f,0x37,0x9e,0x0e,0x2a,0x93,0x4a,0x39,0x03,0xa5,
+ 0x31,0x4f,0x6a,0xf9,0x47,0x13,0xe2,0x65,0x2e,0xe5,0xc9,0x1b,0x23,0x1e,0xd5,0x4d,
+ 0xcf,0xad,0x21,0x93,0xae,0x3b,0x54,0x4e,0xe0,0xe3,0xeb,0x5b,0x41,0x3b,0x12,0xd8,
+ 0xc7,0xeb,0x83,0xc7,0x1d,0x69,0xa1,0xb8,0x00,0x1f,0x61,0x48,0xe7,0x19,0x6e,0x95,
+ 0x5c,0xb7,0xb5,0x52,0x4a,0xe4,0xb6,0x5d,0xde,0x07,0x3d,0x71,0xda,0x9a,0xd7,0x03,
+ 0x93,0xde,0xa8,0xb4,0x84,0x12,0x31,0x83,0x54,0x66,0x9c,0xaa,0x9a,0xa7,0x1d,0x00,
+ 0x35,0x0b,0xd5,0x54,0x3c,0xfd,0x2b,0xcc,0x35,0x7d,0x4d,0xf7,0x9d,0xac,0x4f,0x3c,
+ 0xfa,0x57,0x4b,0xaa,0x5d,0x91,0x19,0x01,0xab,0xcc,0x75,0x09,0xcb,0xcb,0xc9,0xf7,
+ 0xae,0x1a,0xf4,0x14,0x92,0xe6,0x3d,0x9c,0xb9,0x3d,0xcd,0x68,0xf5,0x49,0x40,0x00,
+ 0x9e,0xbd,0xea,0xc2,0x6a,0xf2,0xae,0x08,0x63,0x5c,0xba,0x12,0x71,0x8e,0x9f,0x4a,
+ 0xb4,0xb9,0xff,0x00,0x3f,0x5a,0xe3,0x9e,0x06,0x95,0xbe,0x13,0xb3,0x13,0x8b,0xab,
+ 0x1d,0xa4,0x74,0x87,0x57,0x98,0xe3,0x06,0xa1,0x3a,0x84,0xc7,0x9c,0xf5,0xac,0x85,
+ 0x3c,0xe4,0xd5,0x80,0x70,0x3d,0x73,0x53,0x1c,0x35,0x28,0xed,0x13,0x82,0x58,0x9a,
+ 0xb2,0xde,0x45,0xc3,0x73,0x29,0x19,0x27,0x14,0xd4,0x66,0x27,0xe6,0xcf,0x06,0xab,
+ 0xa9,0xdd,0x9c,0x0e,0xf5,0x6e,0x21,0x8a,0xbe,0x48,0xc7,0x64,0x67,0xce,0xde,0xec,
+ 0xff,0xd2,0x6f,0x86,0x57,0xc9,0x44,0xc7,0x1c,0x57,0xab,0x69,0xb7,0x24,0x60,0x83,
+ 0x8a,0xf2,0xad,0x27,0xf7,0x71,0xe7,0x35,0xdb,0xd8,0xdc,0x15,0xc5,0x7f,0x9e,0x58,
+ 0xf8,0xb9,0x55,0x93,0x67,0xf4,0x2e,0x16,0x2a,0x34,0xa2,0x91,0xed,0x7a,0x3d,0xfe,
+ 0xe0,0x14,0xd3,0x7c,0x5d,0xa5,0xc7,0xab,0xe8,0x57,0x56,0xce,0x37,0x6e,0x8d,0xb1,
+ 0x9f,0xa5,0x72,0x1a,0x5d,0xd8,0x52,0x08,0x35,0xe8,0xd6,0x72,0x2d,0xd4,0x26,0x36,
+ 0xee,0x31,0x5c,0x94,0x5b,0x84,0xd4,0x96,0xe8,0xe9,0x8c,0xb9,0x5d,0xcf,0xc6,0x2f,
+ 0x19,0xe9,0xad,0xa3,0x78,0x96,0xee,0xd1,0x97,0x6e,0xc9,0x49,0x03,0xa7,0x53,0x4b,
+ 0x6b,0x32,0xb4,0x4a,0xc3,0x8e,0x2b,0xd7,0xff,0x00,0x69,0x0f,0x0d,0x36,0x8d,0xe3,
+ 0x49,0x66,0x54,0xc4,0x73,0x1d,0xc0,0xfd,0x6b,0xc4,0x34,0xe9,0x03,0x21,0x0d,0xda,
+ 0xbf,0xb0,0xf2,0x5c,0x72,0xc7,0xe5,0x14,0x6b,0xc5,0xdd,0xb4,0xbe,0xf5,0xb9,0xec,
+ 0xd3,0xad,0xcb,0x28,0xbe,0x87,0x51,0x13,0xe5,0x49,0x0d,0x44,0x98,0x91,0x48,0x27,
+ 0x91,0x51,0xdb,0xa6,0x52,0xa3,0x91,0x98,0x12,0xb8,0x3e,0x94,0xdb,0x7d,0x4f,0x63,
+ 0x0f,0x57,0x57,0xa8,0x8a,0xed,0x8d,0xb8,0xc6,0xdf,0xd6,0xa5,0x59,0x97,0xf8,0xaa,
+ 0x04,0x04,0x03,0x9e,0x73,0xe9,0x51,0x1f,0xf5,0x9f,0xa5,0x70,0xd6,0x96,0xe7,0xb7,
+ 0x86,0xa8,0x9a,0xd1,0x97,0xed,0xe5,0x22,0x42,0x5b,0x90,0x7a,0x52,0x38,0x3b,0x09,
+ 0x6f,0xc2,0xa2,0x45,0x1b,0x47,0xf2,0xa7,0x34,0xcc,0x46,0xc6,0x03,0x8e,0x95,0xe6,
+ 0x4a,0x57,0x77,0x3e,0x82,0x84,0xec,0xd3,0x30,0xee,0x82,0xa1,0x66,0x0b,0x8e,0x3e,
+ 0xb5,0x8c,0xa7,0xcc,0xb8,0x03,0x18,0x15,0xb3,0x72,0xe0,0xe5,0x00,0xac,0x88,0x76,
+ 0x89,0xc9,0x1d,0xa8,0x8d,0xb5,0x95,0xf5,0x3d,0xc8,0xcd,0xd8,0xbd,0x77,0x28,0x58,
+ 0xd6,0x21,0x9f,0xaf,0xb5,0x54,0x8c,0x67,0x1d,0x70,0x69,0xd2,0x45,0x24,0xb9,0x98,
+ 0xaf,0xcb,0x9a,0x72,0xe1,0x17,0x71,0xe0,0x56,0x5e,0x42,0xa1,0x51,0x4a,0xed,0x0e,
+ 0xbd,0x93,0xcb,0x88,0x20,0xeb,0x59,0x91,0xb0,0x0a,0x33,0x4d,0x96,0x46,0xb9,0x9f,
+ 0x83,0xf2,0xad,0x3e,0x25,0x0c,0xfd,0x80,0x1f,0xe7,0xad,0x6d,0x4e,0xeb,0x4b,0x1d,
+ 0x92,0xa8,0xa3,0x1b,0x96,0xad,0xd8,0x96,0xc9,0xe0,0x57,0x3f,0xe2,0x7d,0x48,0xdb,
+ 0x40,0x62,0x46,0xe5,0xff,0x00,0xad,0x6d,0xcf,0x34,0x70,0x23,0x31,0xe3,0x02,0xbc,
+ 0xa3,0x59,0xbe,0x37,0xb7,0x4c,0x73,0xf2,0xaf,0x03,0xbd,0x7d,0x7f,0x0e,0x60,0x1d,
+ 0x6a,0xaa,0xa3,0x5a,0x23,0xf0,0x5f,0x15,0xb8,0xb5,0x61,0x70,0xb2,0xc2,0xd1,0x7e,
+ 0xfc,0xb4,0x31,0xd9,0xb9,0xce,0x7b,0xf2,0x69,0xb9,0x3d,0x7d,0x68,0xe4,0xf3,0x47,
+ 0xf3,0xaf,0xd1,0xd4,0xac,0x7f,0x2b,0xbd,0x43,0x24,0xf5,0xa4,0xe4,0xf4,0xe2,0x8f,
+ 0xa0,0xa3,0x1c,0xd2,0xd0,0x62,0x60,0xfa,0xfe,0x95,0x35,0xb2,0x96,0x99,0x7d,0x49,
+ 0xe9,0x50,0x1d,0xd9,0xe2,0xb4,0xb4,0xb8,0xf7,0xca,0xa7,0xaf,0x22,0xa2,0x6e,0xc9,
+ 0xb3,0x39,0xbd,0x19,0xe9,0x5e,0x1d,0xb7,0xce,0xdc,0x8e,0x7a,0x57,0xaa,0x41,0x16,
+ 0xc8,0x07,0x1c,0xe3,0xda,0xb8,0xcf,0x0d,0xda,0x10,0xa0,0x81,0x9a,0xef,0x99,0x42,
+ 0x20,0xcf,0x6a,0xf8,0x5c,0xce,0xad,0xea,0x1e,0x36,0x26,0x7a,0xd8,0xc8,0x9a,0x30,
+ 0x3d,0xff,0x00,0xa5,0x65,0x4b,0x1e,0x39,0x3c,0xd6,0xdc,0xe3,0x3d,0x6b,0x39,0xd7,
+ 0x3c,0xd7,0x95,0x39,0xab,0x68,0x73,0xa6,0x67,0x08,0xf9,0xf7,0xa8,0x66,0x04,0x1c,
+ 0x75,0x15,0xa4,0x50,0x73,0x8e,0xbd,0x6a,0xa4,0x83,0x3c,0x01,0xc9,0xac,0x79,0xae,
+ 0x6d,0x4d,0xb6,0xec,0x54,0x86,0x3c,0xbe,0x2b,0xda,0x7c,0x25,0xa7,0x43,0xe1,0xbb,
+ 0x08,0xfc,0x51,0xa8,0x46,0x1a,0xea,0x6c,0x8d,0x32,0x06,0xc7,0xde,0x1c,0x1b,0x96,
+ 0x1f,0xdd,0x5f,0xe0,0xcf,0x56,0xe7,0xb5,0x72,0xfe,0x0b,0xf0,0xd5,0xb6,0xa0,0xd3,
+ 0x6b,0x3a,0xce,0x63,0xd2,0xac,0x30,0xd3,0x9c,0xe1,0xa6,0x73,0xf7,0x20,0x43,0xfd,
+ 0xe7,0xef,0xfd,0xd5,0xc9,0xf4,0xae,0x9b,0x53,0xd4,0xa5,0xd6,0x2f,0x0d,0xf5,0xd0,
+ 0x11,0x8c,0x6c,0x8e,0x25,0x18,0x58,0xe3,0x51,0x85,0x55,0x1d,0x80,0x1d,0x2b,0xc6,
+ 0xc7,0x56,0xb3,0xb2,0x7a,0x9d,0x35,0xab,0x72,0x45,0x25,0xb8,0xe1,0x3c,0xc6,0x49,
+ 0x2e,0xee,0x1f,0x7c,0xb2,0x92,0xce,0xcc,0x72,0x49,0x27,0x39,0xe6,0xa9,0x4b,0x76,
+ 0x25,0x6c,0x83,0xf2,0x28,0xfd,0x7d,0xab,0x36,0x7b,0xb7,0x90,0x84,0x42,0x08,0x38,
+ 0xcf,0xd2,0xa0,0x95,0xc2,0xe1,0x00,0xe9,0x5e,0x4c,0xa0,0xdd,0x91,0xe6,0x34,0xd9,
+ 0x69,0x64,0xf3,0x18,0xca,0x79,0xdb,0xd3,0x3e,0xb5,0x4a,0xea,0x52,0xec,0x13,0x3c,
+ 0x01,0xfe,0x4d,0x48,0xaf,0xb1,0x46,0xec,0x74,0xe7,0xf9,0xd5,0x07,0xf9,0xbe,0x6c,
+ 0xf5,0x20,0xd7,0x64,0x62,0xa2,0xb9,0x52,0x35,0xa7,0x4c,0x64,0xb8,0x48,0xf6,0x8e,
+ 0xc3,0x1d,0x7b,0xd6,0x34,0xa3,0x6d,0xb8,0x66,0xea,0x7b,0x55,0xb9,0x64,0x0d,0xbc,
+ 0xe7,0xae,0x6b,0xd1,0x7e,0x16,0x78,0x2e,0xdb,0xc6,0x9e,0x24,0x86,0xc6,0xf9,0x59,
+ 0xac,0xad,0xd1,0xae,0x27,0x0a,0x70,0x59,0x17,0x00,0x28,0x3d,0xb7,0x31,0x02,0xbb,
+ 0xa8,0xc1,0xcd,0xa8,0xa4,0x75,0x41,0x25,0xa9,0xf3,0x8f,0x8a,0x7c,0x25,0xaf,0x6b,
+ 0xe2,0xd5,0xb4,0x7b,0x0b,0x9b,0xc7,0x52,0xc1,0x96,0x08,0x9e,0x52,0x01,0xc6,0x32,
+ 0x11,0x49,0xe4,0xf4,0xad,0x0f,0x0f,0xfe,0xcc,0xbf,0x1a,0x7c,0x48,0xcb,0xfd,0x9f,
+ 0xe1,0x6d,0x43,0x6b,0x1e,0x1e,0x58,0xbc,0x85,0xfc,0xe5,0x29,0x5f,0xb8,0xbf,0x0f,
+ 0x3c,0x2f,0xe1,0xdf,0x0d,0xe9,0xd0,0xda,0xe9,0x16,0x50,0x5a,0x83,0xd4,0xaa,0x65,
+ 0xce,0x3d,0x58,0xf2,0x7e,0xa6,0xbd,0xb2,0xc9,0x61,0x8a,0x01,0x21,0x1b,0x98,0xf3,
+ 0x8c,0x63,0x8e,0xd5,0xf7,0xd9,0x7e,0x32,0xad,0x1c,0x3c,0x28,0xab,0x04,0xb3,0x07,
+ 0x15,0x68,0x9f,0x85,0xfa,0x5f,0xec,0x13,0xf1,0xbf,0x51,0x0d,0xe7,0xc1,0xa7,0xd9,
+ 0x30,0xc7,0xcb,0x3d,0xda,0x83,0xcf,0x5c,0xec,0x57,0xc7,0xd3,0xbd,0x7a,0x16,0x8f,
+ 0xff,0x00,0x04,0xe6,0xf8,0x8f,0x3c,0xeb,0xfd,0xab,0xad,0x69,0x96,0x9d,0x0b,0x79,
+ 0x7e,0x75,0xc1,0x03,0xf0,0x58,0xff,0x00,0x9d,0x7e,0xce,0xc7,0x14,0x5c,0x0d,0x80,
+ 0x1c,0xee,0x6e,0x3a,0x93,0x5a,0x10,0xdb,0xae,0x4b,0x91,0xd0,0x77,0xcf,0xf9,0xe9,
+ 0x5d,0x9f,0xda,0x15,0x5a,0xdc,0xe3,0x9e,0x67,0x5b,0xa3,0x3f,0x32,0x7c,0x3d,0xfb,
+ 0x01,0xda,0x69,0x36,0x66,0xdf,0x55,0xf1,0x34,0xb2,0xb6,0x78,0xf2,0x2d,0x80,0x03,
+ 0x3d,0xbe,0x77,0x6c,0xd7,0xb1,0xe8,0x1f,0xb3,0x26,0x8b,0xe1,0x6d,0x31,0x74,0xf5,
+ 0xd5,0x6e,0x6e,0x13,0x71,0x61,0xbe,0x34,0x07,0x2c,0x3a,0x00,0x2b,0xed,0x42,0x11,
+ 0x59,0x99,0x97,0x07,0x1f,0x2f,0xa0,0xf5,0xaa,0x52,0xd9,0xf9,0xf8,0x04,0x7d,0xee,
+ 0x4b,0x7a,0x0a,0x29,0x62,0xaa,0x36,0xe4,0xd9,0x6b,0x88,0x31,0xea,0x3c,0x91,0xaa,
+ 0xd2,0x3e,0x40,0x1f,0xb3,0xa7,0x86,0xe5,0xb9,0xc2,0x4d,0x74,0x37,0x75,0x38,0x5d,
+ 0xa0,0xfe,0x02,0xb9,0xdb,0xef,0xd8,0xe7,0xc1,0xd7,0xb7,0x92,0x5e,0xc7,0x7d,0x7d,
+ 0x0b,0x39,0xcb,0x2a,0x6c,0xc6,0xef,0x50,0x0a,0xf7,0xaf,0xba,0xa0,0xb2,0x58,0x10,
+ 0x95,0x25,0x8e,0x46,0x40,0xfd,0x33,0x4a,0xf6,0xcc,0x58,0x6e,0x50,0x7d,0x4e,0x71,
+ 0xf9,0x8e,0xf5,0xb2,0xc4,0xd5,0x9b,0xbb,0x91,0x4f,0x8a,0x33,0x4e,0xb8,0x89,0x1f,
+ 0x06,0x5b,0xfe,0xc8,0xda,0x64,0x64,0x24,0x5a,0xad,0xe1,0x50,0x0f,0x2e,0xb1,0x8c,
+ 0x63,0xd8,0x0e,0x6a,0x96,0xa3,0xfb,0x29,0xdd,0x00,0x3f,0xb3,0xb5,0xed,0xaa,0x0f,
+ 0x1e,0x7c,0x24,0x90,0x3d,0x3e,0x42,0x33,0xf9,0x57,0xdf,0x82,0xd8,0x83,0x95,0x19,
+ 0x35,0x38,0xb6,0x44,0x1b,0xb0,0x1b,0xb7,0x23,0x35,0xbf,0xd6,0x2a,0x47,0x55,0x22,
+ 0xa9,0xf1,0x56,0x64,0x9f,0x37,0xb6,0x6f,0xee,0x3f,0x38,0xff,0x00,0xe1,0x97,0xbc,
+ 0x5f,0x02,0x9b,0x8b,0x5d,0x52,0xd2,0x70,0x3f,0xbc,0xb2,0x45,0x9f,0xcf,0x38,0xaf,
+ 0x3d,0xf1,0x77,0xec,0xfb,0xf1,0x0c,0x46,0xef,0x6b,0x6d,0x15,0xcb,0x8e,0xbe,0x5c,
+ 0xaa,0x79,0xed,0x8d,0xc0,0x75,0xaf,0xd5,0xc5,0xb3,0x0e,0x5b,0x77,0xcd,0xed,0xcf,
+ 0x1e,0xb5,0x87,0xad,0xdb,0x69,0x1a,0x16,0x97,0x79,0xe2,0x0d,0x6a,0xe1,0x2c,0xf4,
+ 0xeb,0x08,0x24,0xb9,0xb9,0x9e,0x53,0x85,0x8a,0x18,0xc6,0xe7,0x72,0x7d,0x00,0xae,
+ 0x2a,0x98,0xba,0xae,0x49,0x27,0x76,0xcf,0x46,0x87,0x1a,0x66,0x51,0x95,0xdc,0x93,
+ 0xf9,0x1f,0x88,0xda,0xe7,0x82,0xbc,0x6b,0xe1,0x54,0xff,0x00,0x8a,0x83,0x49,0xba,
+ 0xb1,0x42,0x70,0x24,0x74,0xfd,0xd9,0xc7,0xfb,0x6b,0x95,0xfd,0x6b,0x12,0xd2,0xe1,
+ 0x83,0x79,0x72,0x2e,0x42,0xfa,0x9e,0xbf,0x5a,0xf6,0x0f,0x1a,0xfe,0xd7,0x3a,0xc7,
+ 0x89,0x7c,0x4b,0x73,0x6b,0xe1,0xbb,0x78,0x34,0xef,0x0e,0x09,0x0a,0x5b,0x43,0x35,
+ 0xba,0xc9,0x35,0xc4,0x40,0xe0,0x3d,0xc9,0x94,0x1e,0x5c,0x72,0x53,0x68,0xdb,0xd0,
+ 0xf3,0x9c,0x65,0xae,0x93,0xa1,0xf8,0xba,0x19,0x35,0xcf,0x0f,0x2c,0x56,0xb7,0x04,
+ 0x6e,0xbb,0xb2,0x41,0x84,0x5c,0xff,0x00,0xcb,0x48,0x07,0x64,0xf5,0x4f,0xe1,0xed,
+ 0xc5,0x61,0x47,0x3e,0xa2,0xab,0x3a,0x12,0x76,0x7d,0xfa,0x3f,0x43,0xed,0xf2,0x6e,
+ 0x31,0xf6,0xd3,0x54,0x71,0x50,0xe5,0x6f,0x66,0xb6,0x67,0x3b,0x6a,0x21,0x90,0xed,
+ 0xdb,0xdb,0xb0,0xad,0xe8,0x74,0x90,0xf8,0xc2,0xf2,0x70,0x0d,0x36,0xd7,0x47,0x9e,
+ 0xd6,0x74,0x46,0x53,0x81,0xd7,0x8e,0xb8,0xaf,0x45,0xd2,0xb4,0xd6,0x91,0x86,0xc5,
+ 0xce,0x0f,0x7e,0x95,0xee,0x53,0xce,0x29,0xb5,0xf1,0x1f,0x5c,0xf3,0x14,0xb5,0x8b,
+ 0x39,0x9b,0x0d,0x10,0xbc,0xc1,0x0a,0xfb,0x03,0x8a,0xfa,0xeb,0xe1,0x4f,0x83,0x4d,
+ 0x9d,0xa3,0xea,0x73,0x2e,0x19,0xc6,0xc4,0xc8,0xe8,0xa3,0xef,0x1f,0xe9,0x5c,0x3f,
+ 0x83,0xbc,0x19,0x3e,0xa9,0xa8,0x47,0xfb,0xbc,0x46,0x0e,0x58,0xe3,0xa0,0xaf,0xb0,
+ 0xb4,0x8d,0x11,0x60,0xb4,0x8e,0xd6,0x08,0xf6,0xc7,0x1a,0x80,0x06,0x3b,0x57,0x97,
+ 0x8e,0xcf,0x62,0xea,0xc6,0x84,0x1d,0xcf,0x3f,0x31,0xcd,0x25,0x2a,0x5c,0x89,0x9e,
+ 0x7d,0x7d,0xa0,0xf9,0xc8,0xe2,0x35,0xdb,0xbb,0xab,0x0e,0xa6,0xb8,0xeb,0xcf,0x03,
+ 0xdd,0xba,0x95,0xb7,0x73,0x1a,0x93,0x96,0x27,0xab,0x7e,0x1f,0xfe,0xaa,0xf6,0xff,
+ 0x00,0x10,0x6b,0x9e,0x18,0xf0,0x85,0x93,0x6a,0x1e,0x22,0xbf,0xb6,0xb0,0xb7,0x4f,
+ 0xbd,0x24,0xf2,0x2c,0x6a,0x09,0xf5,0x2c,0x40,0xaf,0x97,0xfc,0x51,0xfb,0x51,0x78,
+ 0x3a,0x77,0x7d,0x3f,0xc0,0x78,0xd5,0x66,0xc9,0x5f,0xb5,0xe0,0x8b,0x60,0x7d,0x55,
+ 0x8f,0x2f,0xff,0x00,0x01,0xe3,0xde,0xbd,0x9a,0x19,0x85,0x2a,0x70,0xe6,0x9b,0xff,
+ 0x00,0x33,0xe7,0xe3,0x9b,0xd5,0xa4,0xec,0x85,0xd5,0xf4,0xdd,0x13,0xc2,0xb6,0xbf,
+ 0x6b,0xd7,0x6e,0x09,0x54,0xfb,0xa2,0x4e,0x72,0x7d,0x15,0x07,0x24,0x9f,0x4e,0x6b,
+ 0xe6,0x9f,0x16,0xf8,0xae,0x6f,0x11,0xde,0xe2,0x14,0x30,0x59,0xa3,0x7e,0xee,0x3c,
+ 0xfc,0xcd,0xfe,0xd3,0xe3,0x8c,0xfb,0x0e,0x9e,0xf5,0x7b,0xc4,0xda,0xce,0xa5,0xe2,
+ 0x19,0x7f,0xb4,0x75,0x49,0xda,0x79,0x9f,0xb9,0xe1,0x54,0x7a,0x2a,0x8e,0x14,0x7d,
+ 0x3f,0x1a,0xe1,0x19,0x32,0xf8,0x35,0xe1,0xe7,0x59,0xf5,0x6c,0x4a,0xf6,0x50,0x76,
+ 0x8f,0xe6,0x79,0xd9,0x8e,0x73,0x5f,0x11,0x1e,0x4b,0xda,0x3f,0x99,0x1c,0xac,0x46,
+ 0x4d,0x62,0x5d,0x49,0x93,0x9e,0xa6,0xb5,0xa7,0x38,0x53,0xc7,0xe3,0x5c,0xed,0xcb,
+ 0x92,0xdd,0xeb,0xe6,0x61,0xb9,0xf3,0xef,0x7b,0x10,0x6e,0x39,0xf5,0xf6,0xa6,0x6e,
+ 0xe0,0x1a,0x8f,0x76,0x78,0xcf,0x5a,0x09,0x05,0x70,0xa7,0xd4,0x57,0x44,0x6d,0xb2,
+ 0x25,0xa1,0xad,0x27,0xa7,0x24,0xd2,0x07,0x1d,0x3b,0xf7,0xa8,0x98,0x81,0x51,0xee,
+ 0x38,0x18,0xe7,0x35,0x76,0x25,0xb2,0x77,0x6c,0x8e,0x3b,0x54,0x24,0xe0,0x9c,0xf1,
+ 0x4b,0x91,0x8c,0xfe,0x14,0xc2,0x48,0xf5,0xcd,0x54,0x49,0x22,0x72,0x4f,0x5a,0xca,
+ 0xb9,0x66,0x0a,0x7d,0xb3,0x8c,0xd6,0x8b,0x64,0x8c,0xe2,0xb3,0x2f,0x06,0x10,0x8c,
+ 0x55,0xc9,0xdc,0xb8,0x2b,0xbb,0x1c,0x56,0xaf,0x31,0x0a,0x40,0x3f,0x4a,0xf3,0xcb,
+ 0x87,0x26,0x53,0xcf,0x53,0xde,0xbb,0x3d,0x6a,0x52,0x37,0x57,0x0b,0x27,0xdf,0x24,
+ 0x73,0xcd,0x73,0x55,0x7a,0xd9,0x1f,0x41,0x83,0x8f,0x2d,0x3b,0x96,0x62,0xcf,0xd0,
+ 0x56,0x8c,0x68,0x06,0x3d,0xba,0xd5,0x2b,0x75,0x2c,0x46,0x2b,0x50,0x2e,0x14,0x7a,
+ 0xd7,0x3d,0x49,0x23,0x93,0x17,0x2b,0xca,0xc2,0xaa,0xe6,0xa7,0x08,0x70,0x01,0x1c,
+ 0x9a,0x12,0x32,0x00,0x26,0xa6,0x55,0xc9,0xe0,0x62,0xb9,0xa4,0xd1,0xcc,0xbb,0x04,
+ 0x68,0x09,0xe7,0xad,0x5c,0x2b,0x85,0xff,0x00,0x3d,0x69,0x21,0x8f,0x18,0xc8,0xff,
+ 0x00,0xeb,0x53,0xae,0x0e,0xd5,0x27,0xda,0x9d,0x28,0xb9,0x48,0xab,0x1f,0xff,0xd3,
+ 0x9e,0xce,0x33,0x1a,0x80,0xdd,0xb8,0xc5,0x74,0x36,0xac,0x47,0xd2,0x8b,0xab,0x78,
+ 0xd5,0x83,0xc4,0x00,0xcf,0x38,0xa4,0x85,0x47,0x7a,0xfe,0x18,0xe2,0x1c,0x8f,0x11,
+ 0x97,0xe2,0x5d,0x2a,0xcb,0xd1,0xf4,0x68,0xfd,0xc3,0x21,0xce,0xb0,0xf9,0x86,0x1e,
+ 0x35,0x68,0xbf,0x54,0x75,0x36,0x33,0x00,0x47,0x35,0xe8,0x3a,0x3d,0xee,0x1d,0x79,
+ 0xe3,0x8a,0xf2,0xeb,0x76,0x2a,0x46,0x3e,0x95,0xd7,0x69,0xb7,0x3b,0x59,0x73,0xde,
+ 0xbe,0x66,0x54,0xcf,0x6d,0xb3,0x83,0xfd,0xa1,0xfe,0x1f,0x2f,0x8a,0x74,0x55,0xd5,
+ 0xed,0x53,0x74,0xb1,0x29,0x0d,0x8e,0xa3,0xde,0xbf,0x3a,0x65,0xd2,0x67,0xd3,0xae,
+ 0x9a,0x19,0x94,0xa9,0x52,0x41,0xc8,0xaf,0xd9,0x2b,0x76,0x86,0xfe,0xd1,0xed,0x6e,
+ 0x14,0x3a,0x48,0xb8,0x20,0xf3,0x5e,0x0d,0xa8,0x7e,0xcc,0x17,0xdf,0x10,0xfc,0x45,
+ 0x35,0xa7,0x87,0x65,0xb7,0xb5,0x65,0x89,0xae,0x1a,0x59,0xc9,0x54,0x0a,0x08,0xe3,
+ 0xe5,0x56,0x24,0xf3,0xc0,0xc7,0xbd,0x7e,0xbd,0xe1,0xd7,0x16,0xd2,0xc1,0xd3,0x96,
+ 0x07,0x17,0x2b,0x47,0x74,0xff,0x00,0x33,0x97,0x17,0x8d,0x95,0x18,0x73,0xad,0x91,
+ 0xf0,0x46,0x9f,0x6e,0x48,0x1d,0xe9,0x6f,0xec,0xe4,0x84,0xf9,0x8a,0x38,0x3c,0x57,
+ 0xd3,0x3e,0x2d,0xfd,0x9b,0xbe,0x22,0xfc,0x3e,0x2d,0x73,0xa8,0x58,0x7d,0xb3,0x4e,
+ 0x53,0x81,0x79,0x66,0x7c,0xf8,0x0f,0xbe,0xf5,0xe9,0xff,0x00,0x02,0x00,0xfb,0x57,
+ 0x95,0x5d,0xe9,0x5b,0x94,0xc5,0x2a,0x94,0x6f,0xee,0x91,0x5f,0xa9,0xd2,0xc6,0xe1,
+ 0x71,0x4b,0x9f,0x0d,0x51,0x4a,0x2f,0xb3,0x32,0xa3,0xc5,0x14,0xe1,0x52,0x3c,0xcf,
+ 0x73,0xc9,0x8c,0x52,0xa7,0xcc,0x7a,0x1a,0x90,0x21,0x6d,0xa3,0x1f,0x53,0x5d,0x45,
+ 0xee,0x9a,0xf1,0xae,0x07,0x4a,0xc5,0x16,0xec,0x37,0x60,0x7c,0xbf,0x5a,0xe6,0xae,
+ 0xb7,0x47,0xdd,0x65,0xf9,0xa4,0x26,0xb9,0xa2,0xca,0xce,0x8b,0xbb,0x39,0xe6,0xb3,
+ 0x64,0x20,0x31,0x03,0x93,0xf5,0xab,0xb2,0xa4,0x88,0x32,0x41,0xf6,0xaa,0x13,0x27,
+ 0x57,0xe9,0x8e,0xf5,0xe5,0xb8,0xea,0x7d,0x86,0x0f,0x11,0x17,0xd4,0xc2,0xb9,0x90,
+ 0xee,0x65,0xcf,0x26,0xac,0xe8,0x3a,0x5c,0xfa,0x95,0xe2,0xc5,0x18,0x27,0x71,0xc1,
+ 0x35,0x42,0x75,0x67,0x9c,0x22,0x83,0x96,0x38,0xaf,0x7b,0xf0,0x86,0x8f,0x6b,0xa4,
+ 0x5b,0x43,0x2b,0x8c,0xcf,0x20,0x07,0xe9,0x9a,0x99,0xbb,0x23,0x1e,0x27,0xe2,0x6a,
+ 0x59,0x66,0x1a,0xf7,0xf7,0xa5,0xb1,0x4f,0x5d,0xf0,0x7a,0x69,0xfa,0x3c,0x7e,0x5a,
+ 0xe5,0x80,0xe4,0x8f,0x5a,0xf0,0xdd,0x45,0x9e,0x22,0x61,0x4c,0x83,0xde,0xbe,0xbb,
+ 0xf1,0x3d,0xdc,0x2b,0xa3,0x31,0x93,0x9c,0x2f,0x19,0xaf,0x93,0x2e,0x93,0xcd,0xba,
+ 0x92,0x52,0x38,0x2c,0x71,0xf9,0xd6,0x54,0x24,0xdb,0x72,0x92,0x39,0xf8,0x0f,0x38,
+ 0xab,0x89,0xc3,0x49,0xd6,0xd5,0xdc,0xce,0xb7,0x8c,0xaa,0x9c,0x81,0xcf,0x53,0x52,
+ 0xee,0x09,0xd3,0x15,0x69,0x62,0xc0,0xdc,0xdc,0x01,0xdf,0x15,0xc5,0x6b,0xba,0xd2,
+ 0xc6,0x1a,0xda,0xd4,0xf3,0x9c,0x16,0x15,0xef,0xe5,0x59,0x5d,0x6c,0x65,0x54,0xa0,
+ 0xb4,0xea,0xc3,0x8c,0xb8,0xe7,0x09,0x94,0xe1,0xe5,0xcd,0x2b,0xcb,0xa2,0xea,0x50,
+ 0xd7,0xb5,0x7d,0xc4,0xdb,0x44,0xdf,0x52,0x2b,0x8c,0x3d,0xcf,0xaf,0x7a,0x9e,0x46,
+ 0xdc,0x4b,0x30,0xc9,0xa8,0x49,0xc0,0xf5,0xc5,0x7e,0xb1,0x82,0xc1,0xc3,0x0d,0x45,
+ 0x53,0x82,0x3f,0x8f,0x33,0xac,0xe6,0xbe,0x65,0x8a,0x96,0x26,0xbb,0xd5,0xfe,0x04,
+ 0x78,0x03,0x9a,0x4c,0x71,0x4f,0x39,0xfa,0x53,0x41,0xc7,0x6a,0xeb,0x4d,0x76,0x3c,
+ 0x87,0x61,0x3a,0x74,0xe0,0xf3,0x48,0x41,0xfc,0x29,0xfe,0x84,0x75,0xa6,0xff,0x00,
+ 0x9e,0x29,0x68,0x16,0x1b,0x93,0xd0,0x0a,0xe8,0xf4,0x48,0x77,0x48,0xbf,0x5a,0xe7,
+ 0x86,0x73,0x8e,0xff,0x00,0xce,0xbb,0x6f,0x0e,0xdb,0x92,0xeb,0xc5,0x73,0xe2,0xe6,
+ 0xa1,0x4d,0xb3,0x3a,0xae,0xd1,0x3d,0x87,0xc3,0xf0,0xed,0x89,0x78,0xed,0xfa,0x57,
+ 0x4d,0x74,0x36,0xf0,0x3a,0x1a,0xa3,0xa2,0x45,0xb2,0x25,0x38,0xe9,0x57,0x2e,0x79,
+ 0x63,0xf5,0xe9,0xd2,0xbf,0x38,0xc7,0x56,0x72,0xa8,0xd9,0xe0,0xd7,0x9f,0xbd,0x73,
+ 0x26,0x5c,0x9e,0x9d,0xbb,0xd5,0x46,0xcf,0xf9,0xe6,0xb4,0x1d,0x09,0xe7,0xd6,0x98,
+ 0x22,0xf4,0xef,0xd2,0xbc,0xd9,0x4d,0x99,0xc6,0x4b,0xa1,0x44,0xaf,0xaf,0x35,0xad,
+ 0xe1,0xef,0x0e,0x5c,0xf8,0x87,0x52,0x5b,0x28,0x98,0x45,0x1a,0xa9,0x92,0x79,0xe4,
+ 0xe1,0x20,0x85,0x39,0x79,0x18,0xfb,0x0e,0x83,0xb9,0xc0,0xef,0x4f,0xb4,0xd3,0xee,
+ 0x75,0x0b,0x98,0xac,0xad,0xa3,0x69,0x66,0x95,0x82,0x22,0xaf,0x52,0x4f,0x41,0xfe,
+ 0x7a,0x57,0x69,0xac,0xdc,0xda,0x68,0x96,0x27,0xc1,0xfa,0x1c,0x8b,0x23,0xb1,0x0d,
+ 0xa9,0xdd,0xa1,0xff,0x00,0x5b,0x2a,0xf4,0x89,0x0f,0xfc,0xf2,0x8f,0x9c,0x7f,0x79,
+ 0xb2,0x6b,0x3a,0xb5,0xe3,0x4a,0x17,0xea,0xcd,0xe3,0x25,0x15,0xce,0xc8,0xf5,0x7d,
+ 0x4a,0xd6,0xef,0xc9,0xd2,0x74,0x75,0x30,0x69,0x16,0x03,0x6c,0x2a,0xdf,0x7a,0x56,
+ 0xfe,0x39,0x64,0xf5,0x77,0x3c,0x9f,0x41,0x80,0x2b,0x9d,0x9e,0x60,0x57,0x00,0xf0,
+ 0x78,0x3d,0xa9,0x10,0x13,0x18,0x8d,0x0e,0x11,0x47,0x35,0x51,0x87,0x98,0xc1,0x14,
+ 0x60,0x01,0xc7,0xe1,0xde,0xbc,0x07,0x3e,0x69,0x5d,0xee,0x62,0xdd,0xf5,0x64,0xe9,
+ 0xf2,0xc7,0xe6,0x39,0xc6,0xee,0x87,0xaf,0x4f,0x7a,0x82,0x3c,0xcd,0x26,0x09,0x38,
+ 0x1f,0x8d,0x32,0x49,0x4c,0x9c,0x2f,0x00,0x1d,0xa0,0x7a,0x01,0x53,0x8f,0xdd,0xa7,
+ 0x03,0xa7,0xf3,0xad,0x62,0x9d,0xf9,0x8a,0x84,0x6e,0xc7,0x4c,0x77,0xf4,0xe1,0x54,
+ 0x62,0xa8,0xb1,0xe3,0x23,0x8e,0x09,0x23,0xf9,0x54,0x8f,0x23,0x08,0xf6,0x9c,0x11,
+ 0x55,0x59,0x8e,0x71,0x8e,0xc3,0x35,0xac,0x23,0x73,0xa9,0x22,0x8b,0x15,0x0a,0x7d,
+ 0x5a,0xbe,0xa8,0xfd,0x9b,0xad,0x36,0x5c,0x6a,0x97,0x67,0x1c,0x0b,0x78,0xbf,0xf1,
+ 0xe6,0x73,0xcf,0xe0,0x2b,0xe5,0x86,0xc6,0x40,0xfb,0xc4,0xf4,0x1f,0x8d,0x7d,0x59,
+ 0xf0,0x0c,0xb2,0x69,0xb7,0xa4,0x63,0xe6,0xbb,0x88,0x67,0xd7,0x08,0x7f,0xc6,0xbd,
+ 0x8c,0xae,0x3f,0xbe,0x4f,0xc9,0x8a,0xbe,0x94,0x64,0xcf,0xbe,0x74,0x7b,0xb8,0xcf,
+ 0x96,0x91,0xb8,0x04,0x00,0x30,0x3b,0x76,0xff,0x00,0xeb,0xd7,0xa6,0x45,0x38,0x12,
+ 0xa2,0xf5,0x1c,0x1f,0xae,0x3a,0x57,0x88,0x78,0x79,0xcc,0x53,0x46,0x5f,0x23,0x6b,
+ 0x75,0x1f,0x9f,0xe9,0x5e,0x97,0x05,0xf0,0x2e,0x15,0xdb,0x0b,0x8c,0x64,0xd7,0xd7,
+ 0xd0,0xd5,0xbb,0x9e,0x17,0x36,0x87,0xa1,0x43,0x29,0xc8,0x63,0xdf,0x1c,0x7a,0xd6,
+ 0xe4,0x6c,0xad,0x1e,0xd3,0xd7,0xbf,0x6e,0x4f,0x6a,0xe1,0xa0,0xbe,0x22,0x45,0x8d,
+ 0x88,0x18,0x03,0xdc,0x1e,0x3d,0x6b,0x5e,0x0b,0xcf,0xde,0x16,0x56,0xe3,0x04,0xf7,
+ 0xcf,0x1d,0xf9,0xae,0x8a,0xbb,0x58,0xcd,0x16,0x6e,0xef,0x89,0xd4,0x21,0xb4,0x4e,
+ 0x15,0x73,0xbf,0xf0,0x1c,0x7e,0x66,0xb5,0xa3,0x6d,0xd8,0x00,0xe4,0x9e,0xbe,0xd8,
+ 0xae,0x39,0xae,0x96,0x4d,0x47,0xce,0x1c,0xbb,0x00,0xa4,0xfa,0x63,0x9e,0xd5,0xb4,
+ 0xb7,0x19,0x91,0x41,0xfb,0xa7,0x19,0x23,0xb0,0xf7,0x34,0x53,0xd2,0x24,0xb5,0xa9,
+ 0xb9,0x2f,0xee,0xd1,0x42,0x0f,0x66,0x23,0xd6,0xa0,0x67,0x52,0xdb,0x4f,0x51,0xd3,
+ 0x35,0x9c,0x35,0x18,0xf7,0xba,0xa9,0x38,0xe7,0x39,0xc9,0x18,0xfa,0xd5,0x63,0x7f,
+ 0x1a,0xb8,0xe7,0x03,0xae,0x7d,0x6b,0xaa,0x96,0x88,0x96,0xae,0x6c,0x16,0x0a,0x48,
+ 0xe3,0x03,0xf9,0xd4,0x46,0x4d,0xe3,0x81,0x8f,0x5f,0x6f,0xa5,0x73,0xb3,0x6a,0x61,
+ 0x99,0xb6,0x0f,0x9b,0x3f,0x98,0xef,0x44,0x3a,0xab,0xcc,0x4a,0x00,0x3e,0x6e,0x84,
+ 0x9e,0x3d,0x29,0x54,0x9f,0x42,0x3d,0x99,0xd8,0xda,0x3a,0xbf,0x07,0x9c,0x90,0x06,
+ 0x3d,0x2b,0xf3,0xaf,0xfe,0x0a,0x21,0xf1,0x79,0xb4,0x8f,0x0d,0x69,0x3f,0x08,0x74,
+ 0x7b,0x80,0x97,0x1a,0xde,0x35,0x1d,0x58,0x21,0x3b,0x96,0xce,0x07,0xc5,0xbc,0x24,
+ 0x82,0x30,0x26,0x94,0x6e,0x20,0xf0,0xc8,0x8c,0x3b,0xd7,0xde,0xb0,0xdf,0x24,0x1c,
+ 0x16,0x55,0xe0,0xe4,0xf4,0xc0,0xea,0x4f,0xe0,0x2b,0xf9,0xe8,0xfd,0xa0,0x3c,0x7f,
+ 0x71,0xf1,0x3f,0xe3,0x17,0x89,0xfc,0x5b,0x23,0xb1,0x82,0x6b,0xe7,0xb4,0xb2,0x53,
+ 0x8f,0x92,0xce,0xc8,0x9b,0x78,0x55,0x48,0xea,0xad,0xb5,0xa4,0x1f,0xef,0xd7,0x9d,
+ 0x8b,0xad,0xec,0xa9,0x4a,0xa2,0xdf,0x65,0xfd,0x7a,0x1e,0x9e,0x06,0x92,0x72,0xd4,
+ 0xf2,0xd4,0x9c,0xee,0x57,0x24,0xe4,0xfe,0xb5,0xea,0xbe,0x03,0xf1,0x75,0xee,0x87,
+ 0xa8,0xc1,0x3c,0x2e,0x41,0x8d,0xfb,0x9c,0x82,0x0f,0x04,0x11,0xe8,0x47,0x06,0xbc,
+ 0x7a,0x3c,0x6d,0xc1,0xed,0xdf,0xf1,0xae,0x82,0xc6,0x42,0xb2,0xe4,0x77,0xc1,0xc7,
+ 0xe1,0x9a,0xf8,0xcc,0x44,0x9b,0x47,0xb6,0xa1,0x7f,0x7b,0xa9,0xfa,0x27,0x68,0xfa,
+ 0x7e,0xaf,0x63,0x06,0xa9,0x69,0xb7,0xc8,0xb9,0x5c,0xa8,0xcf,0x28,0xc3,0xef,0x46,
+ 0x7d,0xd4,0xfe,0x98,0xaf,0x46,0xf0,0xb7,0x87,0xa1,0x9d,0xb7,0xc9,0x22,0xac,0x6b,
+ 0xc9,0xee,0x40,0xfa,0x0a,0xf9,0x47,0xe1,0x56,0xb5,0x2d,0xd5,0xb4,0xda,0x0c,0x8f,
+ 0xcc,0xeb,0xe6,0xda,0xee,0xfe,0x19,0xd0,0x74,0xfa,0x38,0xca,0xfe,0x55,0xee,0x1e,
+ 0x1a,0xf1,0x54,0xd1,0xa3,0x06,0x38,0xc7,0x18,0xf4,0xc7,0xf8,0x1a,0xe5,0x58,0xba,
+ 0xd1,0xb4,0xa0,0xfd,0xdf,0xc9,0x9f,0x69,0x80,0xcc,0x23,0x52,0x92,0xe7,0xf8,0x8f,
+ 0xa7,0x7f,0xe1,0x35,0xf0,0xc7,0x81,0xf4,0xb9,0x2e,0xae,0x1d,0x2d,0x6d,0xad,0x90,
+ 0xbc,0xd3,0xcd,0x85,0x55,0x55,0xe4,0xb3,0x1e,0x80,0x0a,0xf3,0x4f,0x10,0x7e,0xd6,
+ 0xff,0x00,0x0c,0x6d,0xf4,0xe9,0x27,0xb6,0xf1,0xae,0x91,0x03,0x05,0x25,0x77,0x5c,
+ 0x29,0xe7,0xd3,0xcb,0x42,0x19,0x8f,0xb0,0xe6,0xbf,0x3c,0x3f,0x69,0x2f,0x89,0x5a,
+ 0xae,0xb3,0x72,0xfe,0x1b,0xb6,0xb9,0x2b,0x63,0x16,0x0c,0xca,0xa7,0x89,0x25,0xea,
+ 0x01,0xf5,0x55,0xf4,0xf5,0xaf,0x88,0x2f,0x66,0x72,0xc4,0x6e,0x39,0xcf,0x63,0x5f,
+ 0x67,0x91,0x64,0x51,0xad,0x45,0x62,0x2a,0x36,0xae,0x4e,0x2f,0x14,0xd2,0xd0,0xfb,
+ 0xc7,0xf6,0x94,0xf8,0xa9,0xe0,0x0f,0x8a,0x3a,0x55,0x96,0xa1,0xa3,0x78,0xcc,0xea,
+ 0x9a,0x9d,0x85,0xca,0x49,0xfd,0x9e,0xe9,0x2c,0x56,0xcf,0x19,0x52,0xae,0x61,0x8d,
+ 0x93,0x0d,0x30,0x38,0x60,0xce,0xc5,0x82,0x86,0x0a,0x46,0x4e,0x78,0xaf,0x86,0xba,
+ 0x99,0x63,0x18,0xdd,0x9c,0xd7,0xc6,0x11,0xcc,0xe9,0x2a,0x93,0xeb,0x5f,0x44,0x7c,
+ 0x3a,0xd5,0x4a,0x49,0x10,0xdd,0xc7,0x15,0xf4,0x38,0x8c,0x1c,0x69,0x53,0xe4,0x86,
+ 0xc7,0x8b,0x2a,0x97,0x95,0xd9,0xf7,0x34,0x4f,0xe7,0x59,0x8c,0x63,0x38,0xcd,0x73,
+ 0xf3,0x64,0x39,0x27,0x8f,0x6a,0xb1,0xa1,0x5e,0x09,0xec,0xd4,0x03,0xd5,0x6a,0x0b,
+ 0xe3,0x87,0x35,0xf3,0x18,0xa5,0x66,0x67,0x3d,0x8c,0xcb,0xa6,0x18,0x38,0xe3,0x35,
+ 0xcd,0x4e,0xe7,0x24,0xd6,0xcd,0xcb,0xe3,0x23,0xfc,0xe2,0xb0,0xe5,0x39,0xcf,0x35,
+ 0x85,0x37,0xae,0x87,0x33,0xdc,0xac,0x0e,0x79,0xc5,0x48,0x4f,0x18,0xcd,0x35,0x3e,
+ 0x6e,0xbd,0xba,0xd3,0x8e,0x73,0xd2,0xb7,0x5b,0x92,0x42,0xc7,0xe8,0x6a,0x0a,0x99,
+ 0xf2,0x39,0xc7,0xe1,0xeb,0x50,0x76,0xce,0x71,0xde,0xb5,0x25,0xb1,0xe0,0x73,0x82,
+ 0x3a,0xd2,0x11,0xeb,0x4b,0x92,0x3b,0xd2,0x1c,0x1e,0x33,0x91,0xfe,0x78,0xa6,0x21,
+ 0x9e,0xb9,0xed,0xda,0xb1,0x2f,0xcf,0xca,0xdd,0x6b,0x70,0x9c,0x0c,0xe6,0xb9,0xad,
+ 0x56,0x50,0x10,0x91,0xef,0x41,0xd1,0x87,0x8f,0x34,0xb5,0x3c,0xdb,0x5c,0x9b,0x39,
+ 0x5f,0x5e,0x95,0xca,0x28,0xf9,0xb3,0x9c,0x56,0xde,0xab,0x31,0x79,0x58,0x0e,0x05,
+ 0x64,0x46,0x32,0xde,0xb5,0xcf,0x29,0x6a,0x7d,0x0c,0x97,0x25,0x33,0x4a,0xd6,0x3e,
+ 0x7f,0x5a,0xd5,0x54,0x39,0xeb,0xc5,0x55,0xb4,0x5c,0x60,0xf7,0xad,0x64,0x8c,0xff,
+ 0x00,0x8d,0x73,0xcd,0xf6,0x3c,0x6a,0x92,0xbc,0x98,0xc5,0x53,0xc7,0x7a,0x9e,0x34,
+ 0x00,0xe4,0xfe,0x55,0x32,0xc5,0xeb,0xc5,0x5a,0x8a,0x2f,0xef,0x57,0x3b,0xd5,0x93,
+ 0xb0,0x8a,0xa1,0x17,0x9f,0xad,0x73,0x5a,0xcd,0xe2,0xc3,0x1b,0x1c,0xe3,0x8a,0xe8,
+ 0xee,0xa5,0x58,0x95,0x89,0xc7,0xf9,0xf6,0xaf,0x2a,0xf1,0x26,0xa3,0xd4,0x03,0xc6,
+ 0x2b,0xd8,0xcb,0xf0,0xaa,0x4d,0x3b,0x0a,0xf7,0x3f,0xff,0xd4,0xda,0xb6,0xbe,0x5b,
+ 0x80,0x37,0x11,0x9c,0x75,0x15,0xa4,0x02,0x0c,0x32,0x77,0xaf,0x39,0xd2,0xae,0x3e,
+ 0x6d,0xaf,0xc0,0xef,0xfd,0x2b,0xac,0x86,0xe8,0xba,0xed,0xce,0x00,0xff,0x00,0x39,
+ 0xaf,0xc6,0xb3,0x8c,0xaa,0x86,0x63,0x86,0x95,0x1c,0x4a,0xf4,0x7d,0x53,0xee,0x78,
+ 0xd9,0x36,0x75,0x88,0xcb,0x6b,0xaa,0xd4,0x1e,0x9d,0x57,0x73,0xa8,0x80,0xe3,0x15,
+ 0xb7,0x6b,0x29,0x46,0x04,0x1f,0x7a,0xe6,0xe2,0x94,0x05,0x5e,0x72,0x0f,0x7a,0xd6,
+ 0x82,0x5c,0xf2,0x3e,0xbc,0x57,0xf3,0xce,0x7d,0x91,0x62,0x32,0xcc,0x43,0xa5,0x55,
+ 0x69,0xd1,0xf4,0x68,0xfe,0x89,0xc9,0x33,0xba,0x19,0x9e,0x1d,0x55,0xa4,0xf5,0xea,
+ 0xbb,0x1e,0x8b,0xa5,0xde,0x63,0x1e,0x95,0xeb,0xbf,0x0d,0xf5,0x53,0x67,0xe2,0xdb,
+ 0x46,0x53,0x85,0x97,0x72,0x37,0xb8,0xc5,0x7c,0xf9,0x61,0x71,0x82,0x06,0x71,0x5e,
+ 0xbb,0xe0,0x38,0xa6,0xba,0xd6,0xa0,0xb9,0x8f,0x3b,0x6d,0xd8,0x33,0x11,0xef,0xc0,
+ 0x15,0xe2,0xd1,0xd2,0xa4,0x5a,0xee,0x75,0xe3,0xe2,0xbd,0x84,0xe3,0x2e,0xa8,0xf7,
+ 0x9b,0xbd,0x4e,0x4d,0x23,0x5d,0xbf,0xb5,0x85,0xb1,0x03,0x48,0x4f,0x96,0x40,0x28,
+ 0xca,0xe3,0x38,0x2a,0x78,0x23,0x9c,0x72,0x2b,0x9b,0xd5,0xfe,0x1b,0xfc,0x27,0xf1,
+ 0x84,0x6c,0xda,0xd7,0x87,0xed,0x63,0x9d,0xfa,0xcf,0x69,0x9b,0x77,0xcf,0xa9,0x0b,
+ 0xf2,0xfe,0x95,0x8f,0xab,0xdf,0xc9,0x71,0xaa,0xdc,0xcc,0xc4,0xe7,0xcc,0x2b,0xf8,
+ 0x28,0xc5,0x3e,0xde,0xfa,0x4d,0xa0,0x83,0xc0,0xe2,0xbe,0x7d,0x66,0xf8,0x9c,0x26,
+ 0x22,0x73,0xc2,0xd5,0x71,0x57,0x7b,0x1e,0x5c,0xb0,0x70,0xab,0x08,0xf3,0xad,0x6c,
+ 0x79,0x3f,0x88,0xff,0x00,0x63,0x4f,0x04,0xea,0xe5,0x9b,0xc3,0x7a,0xf3,0xda,0x2b,
+ 0x9e,0x22,0xbb,0x8c,0x36,0xdf,0x60,0xca,0x46,0x7f,0x2a,0xf2,0xdd,0x6f,0xf6,0x0f,
+ 0xf1,0x64,0x16,0xfe,0x6e,0x81,0xab,0x59,0x5f,0xb0,0xe7,0xcb,0x0d,0xb1,0x8f,0xfd,
+ 0xf4,0x00,0xfd,0x6b,0xec,0x48,0x35,0x39,0x10,0xe4,0xb5,0x75,0xda,0x7e,0xb4,0x40,
+ 0x07,0x77,0xcd,0xf5,0xaf,0xab,0xc2,0x78,0x8f,0x9a,0xab,0x46,0x73,0xba,0xfe,0xbb,
+ 0x93,0x0a,0x35,0xb0,0xff,0x00,0xee,0xf5,0x2c,0x7e,0x36,0xf8,0xdf,0xf6,0x7c,0xf8,
+ 0x97,0xe0,0xf7,0x7f,0xed,0x7d,0x1a,0x75,0x8a,0x3e,0xb2,0x2a,0x16,0x4c,0x7b,0x30,
+ 0xe3,0xf5,0xaf,0x25,0x3e,0x16,0xba,0x7f,0xdd,0x34,0x4c,0xad,0xdc,0x10,0x41,0xfd,
+ 0x6b,0xfa,0x1a,0x87,0x52,0x5b,0xa8,0x0c,0x33,0xed,0x96,0x17,0x18,0x64,0x90,0x07,
+ 0x52,0x3d,0x08,0x3c,0x57,0x97,0xeb,0x9f,0x07,0x7e,0x18,0x6a,0xba,0xa4,0x3a,0x9d,
+ 0xc6,0x8d,0x12,0xcd,0x13,0x6f,0x68,0xe3,0x26,0x38,0xa4,0x3d,0x46,0xf4,0x1d,0xbd,
+ 0x40,0xc0,0x3d,0xeb,0xea,0xf0,0x3e,0x25,0x47,0x95,0xbc,0x55,0x3f,0xb8,0xf5,0xf0,
+ 0xfc,0x49,0x8e,0xa2,0x95,0x36,0xb5,0x3f,0x1d,0x7c,0x23,0xfb,0x31,0xfc,0x4b,0xf1,
+ 0x6d,0xb3,0x78,0x93,0x46,0xd2,0x1e,0xe2,0xca,0x37,0xc2,0x96,0x64,0x8c,0xca,0x7f,
+ 0xe9,0x98,0x72,0x0b,0x01,0xdc,0x8e,0x3f,0xa1,0xab,0x78,0x7b,0x5e,0xf0,0x66,0xb3,
+ 0x2e,0x8f,0xe2,0x8b,0x29,0x6c,0x2f,0xa0,0xc6,0xe8,0x65,0x18,0x20,0x11,0x90,0x46,
+ 0x38,0x20,0x83,0xc1,0x19,0x15,0xfb,0x8a,0x12,0x1b,0x74,0x48,0x6d,0xe2,0x48,0xe2,
+ 0x8d,0x42,0x22,0x20,0x0a,0xaa,0xa3,0x80,0x14,0x0c,0x00,0x3d,0xab,0x95,0xf1,0x5f,
+ 0xc2,0xcf,0x01,0x7c,0x47,0x74,0x87,0xc5,0x7a,0x54,0x37,0x37,0x06,0x1f,0xb3,0xc7,
+ 0x76,0x09,0x4b,0x88,0x93,0x24,0x80,0x8e,0x0e,0x38,0x3c,0xf2,0x0e,0x7b,0xd7,0x2e,
+ 0x03,0xc4,0xe9,0x4b,0x14,0xe1,0x8a,0xa5,0xee,0x37,0xa5,0xb7,0x5f,0xa1,0xe5,0x67,
+ 0xf8,0xac,0x46,0x60,0xd5,0x6a,0xd2,0xd5,0x2f,0x91,0xf8,0xa1,0xe2,0x2b,0x5b,0xed,
+ 0x43,0x4f,0xc4,0x59,0x54,0x61,0xd7,0xda,0xbc,0x5f,0x50,0xb5,0xb6,0xd3,0x55,0xde,
+ 0xe9,0xd5,0x15,0x79,0x39,0x3d,0x6b,0xec,0x6f,0xda,0xa7,0xe0,0xf7,0xc4,0xaf,0x82,
+ 0x6a,0xd7,0x5a,0x75,0x9b,0x6a,0x1e,0x19,0x73,0x88,0xb5,0x28,0x46,0x44,0x79,0xe8,
+ 0x93,0xa8,0xfb,0x8d,0xdb,0x9e,0x0f,0x63,0x5f,0x9b,0x1a,0x96,0xa3,0x7d,0xa9,0x4a,
+ 0x64,0xbb,0x95,0x9c,0x9e,0xa3,0xb5,0x7f,0x40,0x70,0xd6,0x55,0x43,0x34,0xa6,0xb1,
+ 0x31,0xa8,0x9c,0x3b,0x75,0xf4,0x6b,0xa1,0xe4,0xc3,0xc4,0x0c,0x66,0x59,0x86,0x78,
+ 0x3c,0x34,0x6c,0xdf,0x52,0xee,0xbd,0xe2,0x4f,0xb5,0x66,0xda,0xc8,0x18,0xe2,0x1d,
+ 0x5b,0xb9,0xae,0x19,0xc9,0x72,0x49,0x3c,0x9a,0xbd,0x24,0x59,0x3d,0x31,0xef,0x55,
+ 0x24,0x52,0x1b,0xa6,0x2b,0xf5,0x4c,0x26,0x1a,0x95,0x08,0x2a,0x74,0xa3,0x64,0x7e,
+ 0x73,0x8e,0xcc,0x31,0x18,0xda,0xae,0xb6,0x22,0x6d,0xb2,0x9b,0x2f,0xa9,0xc5,0x26,
+ 0xd3,0x8f,0x7f,0x4a,0xb7,0x0d,0xbc,0x93,0xcc,0xb1,0x44,0xa5,0x99,0x8e,0xd0,0xa0,
+ 0x72,0x49,0xe3,0x15,0xfa,0xbd,0xfb,0x26,0xfe,0xc0,0x91,0xf8,0xeb,0x4a,0x4f,0x1b,
+ 0x7c,0x58,0x13,0xd9,0xe9,0x93,0x00,0x6d,0x6d,0x13,0x0b,0x2d,0xc7,0x7d,0xd9,0x61,
+ 0xc2,0x7b,0xe0,0xe4,0xf4,0xf5,0xaf,0x1f,0x88,0x78,0x93,0x05,0x93,0xd0,0xf6,0xd8,
+ 0xb9,0x6f,0xb2,0x5b,0xbf,0x43,0x1c,0x36,0x1e,0x75,0x65,0x68,0xa3,0xf2,0x6a,0x2b,
+ 0x59,0xa6,0x7f,0x2e,0x34,0x66,0x2d,0xd0,0x7d,0x2b,0xd5,0xbc,0x4b,0xf0,0x23,0xe2,
+ 0xc7,0x84,0x7c,0x1f,0x6b,0xe3,0xff,0x00,0x11,0xf8,0x5b,0x52,0xd3,0xfc,0x3f,0x76,
+ 0xd1,0xac,0x5a,0x84,0xf0,0xec,0x84,0x99,0x78,0x8f,0x3c,0xee,0x50,0xc7,0x1b,0x4b,
+ 0x28,0x0c,0x7a,0x13,0x91,0x5f,0xd0,0xf7,0x86,0xff,0x00,0x62,0xbf,0xd9,0xe3,0xc2,
+ 0x3a,0xe5,0x8e,0xbf,0xa6,0xf8,0x77,0xcd,0xb8,0xd3,0xdf,0xcc,0x89,0x6e,0xe5,0x37,
+ 0x11,0x17,0x03,0xe5,0x67,0x89,0x86,0xd6,0xdb,0xd4,0x02,0x31,0x9c,0x1c,0x71,0x5e,
+ 0x93,0xf1,0x47,0xc1,0x5a,0x17,0xc4,0xbf,0x08,0x6b,0x7f,0x0e,0x7c,0x43,0x19,0x93,
+ 0x49,0xd7,0x2d,0x24,0xb2,0x9c,0xa9,0x21,0xd0,0xb2,0xfc,0x92,0x23,0x0f,0xba,0xd1,
+ 0xb6,0x19,0x48,0xe4,0x11,0xc5,0x7e,0x3f,0x99,0x78,0xdd,0x08,0x62,0x69,0x53,0xc2,
+ 0x61,0xfd,0xcb,0xfb,0xcd,0xef,0x6f,0x2b,0x75,0xf5,0x3d,0xdc,0x2e,0x43,0xed,0x13,
+ 0xe6,0x9e,0xbe,0x47,0xf2,0x70,0x54,0x8c,0xd3,0x0a,0xf0,0x47,0xad,0x7a,0x0f,0xc4,
+ 0xbf,0x00,0x6b,0xbf,0x0c,0x7c,0x6d,0xac,0xf8,0x17,0xc4,0x88,0x53,0x50,0xd1,0xee,
+ 0xde,0xda,0x56,0xdb,0x85,0x94,0x2f,0x31,0xcc,0x9f,0xec,0x4a,0x85,0x5d,0x71,0x9c,
+ 0x03,0x8e,0xa0,0xd7,0x02,0x41,0xe8,0x39,0xaf,0xdd,0xb0,0xb8,0x8a,0x78,0x8a,0x30,
+ 0xc4,0x51,0x95,0xe3,0x24,0x9a,0x7e,0x4c,0xf9,0xfa,0x94,0xa5,0x09,0x38,0x4f,0x74,
+ 0x11,0x8c,0xc8,0x38,0xcf,0x35,0xea,0x3e,0x1a,0xb6,0x05,0x95,0x80,0xeb,0x5e,0x71,
+ 0x67,0x16,0xf9,0x41,0xe9,0x8a,0xf6,0x8f,0x0a,0xda,0x8f,0x91,0xb1,0xcd,0x79,0xd9,
+ 0xcd,0x5e,0x5a,0x36,0x38,0x71,0x12,0x69,0x68,0x7a,0x8e,0x9f,0x6e,0x12,0x00,0x7d,
+ 0x85,0x36,0x64,0x00,0x73,0xd6,0xb4,0x6d,0xd1,0x56,0x01,0xce,0x33,0x55,0x65,0x1c,
+ 0x1c,0x9e,0xdd,0x6b,0xf3,0x8a,0x95,0x6e,0xdb,0x3e,0x7e,0xa3,0xd4,0xcf,0xf2,0xc1,
+ 0x19,0x3d,0xfb,0x8a,0x68,0x88,0xb6,0x06,0x3a,0xd5,0x9c,0x6e,0xc7,0xcb,0xf5,0xae,
+ 0xd3,0x4d,0x8e,0xd7,0xc2,0xfa,0x60,0xf1,0x2e,0xa9,0x1a,0xcd,0x79,0x3e,0x57,0x4c,
+ 0xb5,0x61,0x90,0xee,0x38,0xfb,0x43,0x8e,0xe8,0x87,0xee,0x8f,0xe2,0x6f,0x61,0x5c,
+ 0xb5,0x2b,0x42,0x11,0xe6,0x93,0x1d,0x28,0x39,0x32,0x09,0xc8,0xf0,0x86,0x9b,0xf6,
+ 0x48,0x30,0x75,0xcd,0x42,0x3c,0x39,0x1d,0x6c,0xed,0xdc,0x74,0xcf,0x69,0x64,0x1d,
+ 0x7f,0xba,0xbc,0x75,0x35,0xc3,0x44,0xbb,0x33,0x1c,0x5c,0xb3,0x7d,0xe6,0x3d,0xf3,
+ 0x56,0xa5,0xfb,0x4c,0xad,0x35,0xf5,0xe3,0xb4,0xb7,0x57,0x04,0xb4,0x8e,0x4f,0x39,
+ 0x6e,0x4f,0xe3,0x51,0xa1,0xf2,0x46,0xf0,0x39,0x22,0xbc,0x2a,0xd5,0xdd,0x49,0x39,
+ 0x36,0x6d,0x27,0x77,0x6e,0x84,0xd2,0x4a,0x90,0x21,0x8f,0x9c,0xb0,0xe6,0xa9,0x6e,
+ 0x30,0x47,0xbc,0x93,0xb9,0xc7,0x03,0xd0,0x0f,0x7a,0x69,0x3b,0xdc,0x89,0x0f,0x72,
+ 0x48,0xf6,0xa6,0xb3,0x86,0x52,0x5b,0xb9,0xc0,0x1d,0x80,0x15,0x30,0x8f,0x57,0xb8,
+ 0x28,0xea,0x42,0x84,0xe3,0xe5,0xe3,0x27,0xeb,0x56,0xdc,0xa8,0x5c,0xf1,0x55,0x90,
+ 0xa8,0x6c,0x0e,0xdc,0x9c,0xf4,0xc9,0xab,0x0f,0xb0,0xfc,0xbf,0xa9,0xae,0xa4,0xb4,
+ 0x56,0x37,0x8a,0xb6,0x85,0x59,0x1c,0x04,0x00,0xf2,0x73,0xc5,0x56,0x2d,0x92,0xc4,
+ 0x8e,0x0f,0x4a,0xb5,0x21,0x1c,0x7f,0x3f,0x7a,0xa4,0xe7,0x9c,0xf7,0xe6,0xba,0xe9,
+ 0x6c,0x5a,0xd7,0x42,0x00,0x41,0x2b,0x9e,0xb5,0xf5,0x4f,0xc0,0xc9,0x23,0x8f,0x4b,
+ 0xba,0x66,0xcf,0x17,0xa8,0x70,0x3f,0xeb,0x95,0x7c,0xaa,0x09,0x12,0xaf,0x19,0xaf,
+ 0xa8,0x7e,0x09,0x4e,0xb1,0x69,0xf7,0xaa,0xe7,0x0a,0xb7,0x51,0xe4,0xfd,0x63,0x3f,
+ 0xe1,0x5e,0xae,0x5c,0xb9,0x6a,0x5d,0x8b,0x10,0xaf,0x42,0x47,0xd8,0xde,0x19,0xd4,
+ 0x16,0x4d,0xa5,0xd9,0x9b,0x61,0x3f,0x88,0xff,0x00,0xeb,0x57,0x72,0xda,0x8c,0x11,
+ 0xb0,0x55,0xcb,0x6e,0xe7,0x81,0x92,0x3d,0xab,0xc6,0xf4,0x99,0xd1,0x5b,0x31,0x9d,
+ 0xa0,0xe4,0x77,0xee,0x32,0x0f,0xd6,0xba,0xb6,0xd4,0x04,0x61,0x9d,0x1f,0x39,0x38,
+ 0x07,0xfa,0x57,0xd1,0x50,0xab,0x24,0xda,0x3e,0x79,0xdc,0xf5,0x58,0x75,0x38,0xd9,
+ 0x01,0x57,0xf9,0xb8,0xeb,0xe9,0x8e,0x45,0x4a,0x7c,0x49,0xb5,0x0b,0x20,0x65,0xda,
+ 0x36,0xb1,0x3c,0x67,0x3e,0xd9,0x35,0xe3,0x2b,0xaa,0x3c,0x72,0xbc,0x8a,0xdd,0x33,
+ 0xc2,0x9c,0x8c,0x8f,0xad,0x69,0xda,0xea,0xac,0xf0,0xb2,0xdc,0x32,0xbb,0x60,0x75,
+ 0xe4,0x83,0xf8,0x56,0xb2,0xad,0x29,0x3e,0x54,0x24,0x7a,0x5d,0x87,0x88,0x22,0x7b,
+ 0x86,0x8d,0xcf,0xcc,0xdd,0x48,0x3c,0x76,0xcf,0x4a,0xdb,0x8f,0x5a,0x5e,0x51,0x19,
+ 0x97,0x6e,0x7a,0xe4,0xe4,0xe3,0xda,0xbc,0x02,0x1d,0x42,0x65,0x9d,0x93,0x3c,0x10,
+ 0x58,0xe0,0x63,0x9c,0xf6,0xff,0x00,0xeb,0x57,0x48,0x9a,0xab,0x49,0x19,0xdd,0x94,
+ 0xc6,0x3b,0xe3,0x3c,0x7f,0x8d,0x3a,0x35,0xa4,0xdb,0x4c,0x1b,0x3d,0x36,0xe3,0x58,
+ 0x5e,0x9b,0xb0,0x14,0x73,0x93,0x83,0x9f,0xa7,0xa5,0x57,0x83,0x57,0x08,0x0b,0xc8,
+ 0xe5,0x8e,0x72,0x02,0x8c,0xf5,0xaf,0x34,0xba,0xd5,0x96,0x0d,0xc8,0xaa,0xdb,0xd8,
+ 0x64,0x93,0xcf,0x07,0x9a,0xa5,0x07,0x88,0x04,0x7b,0xda,0x4c,0x1c,0x74,0x1e,0x98,
+ 0xfc,0xeb,0xbd,0x56,0xb4,0x75,0x33,0x7c,0xdd,0x0f,0x5b,0x1a,0x99,0x72,0x64,0xe7,
+ 0x0c,0x0f,0xca,0x7a,0xe3,0xd7,0xda,0x9c,0xba,0x94,0x91,0xb8,0x45,0xcf,0x63,0xea,
+ 0x2b,0xcd,0x63,0xf1,0x13,0xcd,0x1c,0x7b,0x02,0xa1,0xec,0x79,0xe8,0x39,0x3c,0x56,
+ 0xdd,0xbe,0xb6,0xd2,0x29,0x13,0x27,0x18,0xc8,0x65,0xc7,0x7a,0xc1,0xe2,0x13,0x2a,
+ 0x3e,0x66,0x6f,0xc6,0x9f,0x1d,0xcb,0xe0,0xef,0x85,0x1e,0x2a,0xf1,0x24,0x4c,0x12,
+ 0x68,0x74,0xf9,0x20,0xb5,0x3d,0x3f,0xd2,0x2e,0x47,0x93,0x1e,0x3d,0xf2,0xd5,0xf8,
+ 0x3d,0xe5,0x84,0x09,0x12,0xf2,0x13,0x6a,0xe4,0x9e,0x70,0x38,0xe7,0xeb,0x8a,0xfd,
+ 0x35,0xfd,0xb3,0xfc,0x59,0x2d,0xbf,0x81,0x34,0x2f,0x0c,0x42,0xdc,0xeb,0x1a,0x83,
+ 0x5c,0xcd,0x83,0xd6,0x1b,0x45,0xca,0xf1,0xff,0x00,0x5d,0x0a,0xd7,0xe6,0xd0,0x8d,
+ 0x49,0x04,0xf2,0x72,0x07,0xd2,0xbc,0x3c,0xde,0xbf,0xc1,0x0f,0x9f,0xdf,0xff,0x00,
+ 0x00,0xf6,0xb0,0x91,0xb5,0x3b,0x90,0x79,0x5b,0x46,0xdc,0x67,0x35,0xa5,0x0c,0x2e,
+ 0x0a,0x9d,0xb8,0xc8,0x1f,0xcb,0x15,0x79,0x6d,0xb7,0x32,0x67,0xa3,0x01,0x9f,0x71,
+ 0x5d,0xd6,0x8b,0xa0,0x2d,0xe2,0x2b,0x71,0x9e,0x2b,0xc8,0xe4,0xe7,0xd0,0xea,0x55,
+ 0x54,0x09,0x7c,0x19,0xa9,0x4f,0x61,0x75,0x04,0xb1,0xb1,0x0d,0x1b,0x82,0x0f,0xa1,
+ 0x07,0x35,0xf4,0xa6,0xa5,0x73,0x1d,0xba,0x5c,0x6a,0xb0,0x60,0x47,0x71,0x0f,0xda,
+ 0x00,0x1d,0x03,0x30,0xf9,0x80,0xff,0x00,0x81,0x57,0x83,0x1f,0x0e,0x4d,0xa7,0x4b,
+ 0x90,0x3b,0xe7,0x23,0xde,0xbd,0x2a,0x0b,0x89,0x2e,0x7c,0x28,0xe9,0x21,0xc9,0x8d,
+ 0x8c,0x7e,0xf8,0xfb,0xd5,0xe7,0xd3,0xa2,0xfd,0xb4,0xa8,0x74,0x7a,0xff,0x00,0x5f,
+ 0x23,0xdc,0xcb,0x2a,0xc6,0x57,0x91,0xf1,0xbf,0xc4,0x8b,0x86,0x9a,0xf2,0x47,0x90,
+ 0xe5,0x99,0x89,0x24,0xf5,0xc9,0x39,0x35,0xe1,0x77,0x1f,0x78,0xd7,0xb4,0x7c,0x46,
+ 0x6f,0xf4,0x97,0xc1,0xef,0x5e,0x29,0x2f,0x53,0xe9,0x5f,0xb1,0x65,0x71,0x5f,0x57,
+ 0x8d,0x8e,0x8a,0xf2,0xd6,0xc5,0x27,0xe1,0x87,0xb5,0x7a,0x3f,0x82,0xb5,0x3f,0x22,
+ 0x74,0x19,0xe8,0x7a,0x57,0x9b,0x31,0xed,0x5a,0xfa,0x25,0xc9,0x82,0xe9,0x4a,0x9f,
+ 0x7e,0xbd,0x2b,0xa3,0x11,0x0e,0x68,0x1c,0xe7,0xe8,0x67,0x81,0xf5,0x8f,0x3e,0xd9,
+ 0x57,0x77,0x6a,0xed,0x75,0x3e,0x54,0x48,0xbd,0x0d,0x7c,0xe5,0xf0,0xf7,0x59,0xc2,
+ 0xa2,0x16,0xf4,0xaf,0x7e,0x37,0x0b,0x3d,0xb7,0x62,0x71,0xc7,0x3d,0xeb,0xe2,0xb1,
+ 0xd0,0x6a,0x4c,0x96,0xcc,0x6b,0x97,0xe4,0x82,0x6b,0x22,0x43,0xcf,0xbf,0xd7,0xbd,
+ 0x5c,0xb8,0x7d,0xad,0xcd,0x66,0x92,0x4b,0x7a,0xfa,0x57,0x24,0x6d,0xd4,0xe7,0x95,
+ 0x89,0x93,0x1d,0xf8,0xa4,0x38,0xc7,0xad,0x0a,0x71,0x9c,0xf4,0x3d,0xe8,0x27,0x23,
+ 0x1d,0x2b,0x58,0x90,0x44,0xe7,0x07,0xa7,0x1e,0xb5,0x59,0x8f,0x15,0x3c,0x87,0x8c,
+ 0x7b,0xd5,0x56,0x3c,0xe3,0xd2,0xb4,0x21,0xb1,0xdb,0xfb,0xf5,0xff,0x00,0x3e,0xb4,
+ 0xcc,0xe7,0x9a,0x84,0xb1,0xe8,0x39,0xa4,0x0f,0xc8,0x3d,0xe9,0xa0,0x27,0x91,0xb0,
+ 0x99,0xe9,0x9a,0xe3,0x35,0x99,0x82,0xa3,0x64,0xf1,0x5d,0x34,0xd2,0x8c,0x1c,0x7f,
+ 0x9f,0xc6,0xb8,0x3d,0x72,0x71,0xb5,0xbb,0xd4,0xce,0x56,0x57,0x3d,0x5c,0x1d,0x34,
+ 0xda,0x38,0x2b,0xd6,0xdf,0x21,0xc7,0xad,0x45,0x6f,0x1e,0xf6,0xe9,0x9a,0x1c,0x65,
+ 0xba,0x72,0x6b,0x42,0xc2,0x0d,0xc7,0x1e,0xfc,0xfb,0x57,0x3b,0x49,0x23,0xb7,0x15,
+ 0x2f,0x76,0xc6,0xc5,0xac,0x24,0x0c,0xe3,0xd2,0xb6,0x22,0x83,0xbe,0x3a,0x71,0x4e,
+ 0xb4,0xb5,0x23,0x01,0x87,0x35,0xa9,0xb0,0x01,0xc7,0x6e,0x2b,0x9a,0xa1,0xe4,0xb7,
+ 0xd4,0xa6,0x22,0x07,0x8c,0x72,0x69,0xcc,0x16,0x34,0xf9,0xb8,0xab,0x1b,0x4e,0x78,
+ 0x1f,0xd6,0xa2,0xb8,0xb2,0xd4,0x64,0x8c,0xba,0x5b,0xc8,0x54,0x7a,0x29,0x35,0xad,
+ 0x18,0x45,0xbd,0x59,0x9b,0x93,0x7a,0x23,0x90,0xd6,0x6f,0x04,0x68,0xc4,0x9e,0x39,
+ 0xaf,0x14,0xd7,0x2f,0x5a,0x79,0x0a,0x67,0x22,0xbb,0xff,0x00,0x12,0x5c,0x4d,0x19,
+ 0x68,0xd9,0x59,0x4f,0xa3,0x0c,0x1f,0xca,0xbc,0x9e,0xec,0xb3,0xb1,0x24,0x77,0xaf,
+ 0xb2,0xcb,0xe8,0x24,0xb9,0x91,0x70,0x85,0xb5,0x3f,0xff,0xd5,0xf3,0x9d,0x2f,0x56,
+ 0x49,0xb6,0xa8,0x3f,0x38,0xf7,0xeb,0x5d,0xa5,0xbd,0xc3,0xb0,0x1b,0x49,0x00,0x75,
+ 0x35,0xe0,0xda,0x34,0xd7,0x28,0xaa,0xce,0xdf,0x30,0xe4,0x1e,0x9c,0x57,0xa9,0x69,
+ 0xfa,0xa1,0x11,0xa9,0x71,0x9d,0xdd,0x7f,0xfa,0xd5,0xf8,0xec,0x2b,0xca,0xcd,0x54,
+ 0x3e,0x4e,0x50,0xb6,0xc7,0xa4,0x5a,0x5d,0x06,0xc2,0xbf,0x4c,0xd7,0x49,0x1c,0xa1,
+ 0x40,0x24,0x8e,0x7a,0x57,0x9b,0x2d,0xd9,0x0b,0xbc,0x1f,0x73,0x8e,0x2b,0x4e,0x2d,
+ 0x41,0xa5,0x00,0x06,0xed,0xc7,0xb7,0xbd,0x79,0xf9,0xbe,0x03,0x0d,0x98,0x61,0xde,
+ 0x1a,0xba,0xd7,0xa3,0xea,0x8f,0x63,0x23,0xce,0x2b,0xe5,0xd8,0x85,0x5a,0x93,0xd3,
+ 0xaa,0xee,0x7a,0x85,0xac,0xfc,0x83,0x9e,0xbd,0x6b,0xe9,0xff,0x00,0x06,0xda,0x2e,
+ 0x97,0xe1,0x95,0xbd,0xce,0x26,0x95,0x7c,0xd2,0x73,0xdc,0xf0,0xa3,0xf0,0x18,0xaf,
+ 0x91,0x34,0x09,0x24,0xbd,0xbb,0x82,0xcc,0x65,0x9e,0x47,0x54,0xc0,0xea,0x72,0x6b,
+ 0xeb,0x1f,0xb6,0x93,0x6f,0x15,0x84,0x7f,0x2c,0x51,0x00,0x00,0xc7,0x71,0xc5,0x7f,
+ 0x39,0xf1,0x06,0x12,0xae,0x59,0x56,0x54,0x2a,0xab,0x4b,0xa7,0x9f,0x99,0xfb,0xbd,
+ 0x3c,0xca,0x9e,0x61,0x42,0x9d,0x4a,0x0f,0x47,0xab,0x23,0xde,0xc5,0xd8,0xb9,0xc9,
+ 0x63,0x92,0x7d,0xfb,0xd5,0xeb,0x76,0xc0,0x22,0xaa,0x48,0x3e,0x51,0x9e,0x7d,0xea,
+ 0xd5,0xbb,0x8d,0xbf,0x4a,0xf8,0x19,0xbe,0xa8,0xef,0x86,0xc5,0xc8,0xe4,0x71,0xc5,
+ 0x6a,0x5b,0x5d,0x95,0x61,0x83,0xd2,0x9d,0xa4,0x68,0x17,0xba,0xcc,0xcc,0x96,0x8a,
+ 0x02,0x8e,0x59,0xd8,0xe1,0x47,0xb7,0xa9,0xad,0x6d,0x23,0xc3,0x37,0xad,0xaa,0xbd,
+ 0xad,0xe2,0x14,0x48,0x08,0x32,0x67,0xa1,0xf4,0x19,0xef,0x9a,0xcd,0x46,0x6a,0xd2,
+ 0xb6,0xe3,0x75,0x22,0xae,0x9b,0xd5,0x1d,0x86,0x85,0x0c,0xaf,0x08,0xb8,0x9b,0x38,
+ 0x3f,0x70,0x74,0xcf,0xbf,0xf8,0x56,0xbb,0xc6,0xa5,0xb7,0x0c,0xd5,0xb0,0x85,0x06,
+ 0xc1,0x80,0x07,0x1c,0x54,0x32,0x64,0x1a,0xe8,0x9d,0x4d,0x2c,0x70,0xf3,0xf3,0x4a,
+ 0xe8,0xa5,0x2b,0x60,0x1c,0x54,0x85,0xd9,0x52,0x39,0x97,0xb1,0xfd,0x2a,0x39,0x30,
+ 0x47,0xa5,0x49,0x1a,0xef,0xb7,0x75,0xef,0x8a,0xe5,0x8c,0xdc,0xa4,0xe2,0xba,0xa3,
+ 0x7d,0x39,0x55,0xce,0x99,0xe2,0xd2,0xfc,0x55,0xa4,0xdc,0x78,0x6b,0xc4,0xb6,0xd1,
+ 0x5f,0x59,0xde,0xc4,0xd1,0x49,0x0c,0xca,0x1d,0x25,0x46,0x18,0x2a,0xc0,0xf7,0xef,
+ 0x9a,0xfc,0x32,0xfd,0xb0,0xbf,0x63,0xbd,0x5b,0xe1,0x16,0xb1,0x71,0xe3,0x3f,0x04,
+ 0xdb,0x49,0x75,0xe0,0xfb,0xb6,0xde,0x36,0x02,0xef,0x60,0xec,0x7f,0xd5,0x4a,0x7a,
+ 0xed,0x27,0xee,0xbf,0xa7,0x07,0x9e,0xbf,0xb5,0xd6,0x32,0xb1,0x88,0x6d,0x25,0x5d,
+ 0x3a,0x11,0xd4,0x11,0x5b,0xed,0x3e,0x97,0xe2,0x3b,0x09,0xf4,0x3d,0x7a,0xde,0x2b,
+ 0x88,0x2e,0x63,0x30,0xcd,0x0c,0xaa,0x1d,0x25,0x46,0x18,0x20,0xa9,0xe3,0x9f,0x4a,
+ 0xfd,0x4b,0x82,0xf8,0xfb,0x13,0x95,0xd5,0x84,0xe3,0x3d,0x5f,0x7d,0xa4,0xbb,0x3f,
+ 0x35,0xd1,0x9f,0x2d,0x9a,0xe5,0x11,0x92,0x92,0x51,0xf7,0x7c,0xb7,0x5e,0x68,0xfe,
+ 0x4a,0xe4,0x80,0x83,0xc8,0xe9,0x54,0x64,0x8b,0xb1,0x19,0xaf,0xd3,0x9f,0xdb,0x47,
+ 0xf6,0x41,0x3f,0x0c,0xef,0x64,0xf8,0x85,0xf0,0xf2,0xd5,0xe4,0xf0,0xbd,0xcb,0x13,
+ 0x73,0x6e,0x80,0xb1,0xb0,0x95,0x8e,0x71,0xff,0x00,0x5c,0x9b,0xf8,0x49,0xe8,0x78,
+ 0x3d,0xab,0xf3,0x7e,0x48,0x32,0xd8,0xc7,0x35,0xfd,0x75,0xc3,0xdc,0x5b,0x87,0xcd,
+ 0x30,0xca,0xbd,0x17,0xaf,0x55,0xd5,0x3e,0xcf,0xfc,0xcf,0x80,0xc4,0xe1,0x27,0x87,
+ 0x9f,0x24,0xb6,0xef,0xdc,0xfa,0x67,0xf6,0x3b,0xf8,0x15,0x3f,0xc6,0x0f,0x8a,0x76,
+ 0x50,0x5c,0x0c,0x69,0xba,0x73,0x8b,0xab,0xa9,0x0a,0x96,0x5d,0xb1,0x9d,0xc5,0x4e,
+ 0x3f,0xbd,0xd0,0x7b,0x9a,0xfe,0x94,0x21,0x8e,0x0b,0x3b,0x78,0xed,0x2d,0x50,0x47,
+ 0x14,0x08,0xb1,0xa2,0x28,0xc0,0x55,0x51,0x85,0x00,0x7a,0x01,0x5f,0x98,0xff,0x00,
+ 0xf0,0x4d,0x4d,0x0b,0x4b,0xb1,0xf0,0x2e,0xb9,0xad,0xc6,0xee,0xb7,0xd7,0x17,0x09,
+ 0x0c,0x88,0x57,0x0b,0xb1,0x72,0xca,0xc1,0xbb,0xe7,0xa6,0x3b,0x57,0xe9,0x6c,0x92,
+ 0x95,0xef,0x9a,0xfe,0x7a,0xf1,0x2f,0x88,0x2a,0x62,0xf3,0x7a,0xb1,0x93,0xf7,0x61,
+ 0xee,0xaf,0xd7,0xf1,0x3e,0xa3,0x2e,0xc2,0xa8,0xd1,0x85,0xba,0xea,0x3e,0x69,0xb8,
+ 0x23,0xf5,0xac,0x74,0x80,0x3a,0x79,0x98,0xc8,0x62,0x77,0x67,0xae,0x73,0xd4,0x53,
+ 0xee,0x25,0x3b,0x4f,0x35,0x1e,0x99,0x7a,0x1f,0x74,0x44,0x0e,0x0f,0x7f,0x7a,0xfc,
+ 0xb3,0x0b,0x88,0x8c,0xf1,0x1c,0xb5,0x3a,0xa3,0xdd,0x85,0x19,0x46,0x9b,0x94,0x51,
+ 0xf9,0x81,0xff,0x00,0x05,0x22,0xfd,0x9f,0xd3,0xc4,0x3e,0x17,0x83,0xe3,0x97,0x87,
+ 0x2d,0xc1,0xd4,0x74,0x28,0x56,0xd7,0x5b,0x08,0x06,0x66,0xd3,0xb7,0x7e,0xee,0xe1,
+ 0xbd,0x4d,0xb3,0x31,0xdc,0x49,0xe2,0x36,0x63,0xce,0x05,0x7e,0x1e,0x32,0x10,0x48,
+ 0x6e,0xd5,0xfd,0x7f,0x6b,0xfa,0x36,0x9f,0xae,0xe9,0x37,0x9a,0x1e,0xaf,0x0a,0xdc,
+ 0x58,0x6a,0x50,0x49,0x6d,0x71,0x13,0x80,0x55,0xa2,0x95,0x4a,0x3a,0x91,0xe8,0x41,
+ 0x35,0xfc,0xac,0xfc,0x70,0xf8,0x65,0x7f,0xf0,0x87,0xe2,0x87,0x88,0x7e,0x1f,0xdf,
+ 0x07,0xc6,0x93,0x7a,0xf1,0xdb,0x48,0xc0,0xfe,0xf6,0xd1,0xff,0x00,0x79,0x6d,0x20,
+ 0x27,0xef,0x6e,0x89,0x97,0x27,0xbb,0x06,0xf4,0xaf,0xea,0x1f,0x08,0x38,0x8e,0x55,
+ 0x68,0x4f,0x29,0xac,0xf5,0x86,0xb1,0xf4,0xbe,0xab,0xe4,0xdf,0xe2,0x7c,0xb6,0x7b,
+ 0x85,0x5e,0xee,0x22,0x2b,0x7d,0x1f,0xe9,0xfe,0x47,0x9e,0x69,0x51,0x16,0x94,0x13,
+ 0xc6,0x6b,0xde,0x7c,0x2f,0x6f,0x85,0x52,0x7d,0x2b,0xc6,0x74,0x18,0x43,0xc8,0x84,
+ 0x0c,0x66,0xbe,0x82,0xf0,0xe5,0xbe,0xd8,0x97,0x8e,0xa0,0x57,0xdf,0x71,0x15,0x7b,
+ 0x7b,0xac,0xf8,0xcc,0x6c,0xf4,0xb1,0xd7,0x7c,0xab,0x1a,0xae,0x3b,0x55,0x19,0x46,
+ 0x49,0x1c,0x73,0x57,0x26,0x38,0x18,0x53,0xd2,0xae,0xe8,0x5a,0x3d,0xce,0xbd,0xa9,
+ 0x45,0x61,0x6c,0x00,0x2e,0x49,0x77,0x6e,0x12,0x34,0x03,0x2e,0xec,0x7b,0x2a,0x8e,
+ 0x4d,0x7c,0x14,0xe6,0x78,0x91,0x8b,0x93,0x51,0x45,0x9f,0x0f,0x68,0xf6,0x92,0x2c,
+ 0xfa,0xd6,0xb2,0x4a,0x69,0x56,0x00,0x34,0xbc,0xe0,0xcc,0xe7,0xee,0x40,0x87,0xfb,
+ 0xcf,0xdc,0xf6,0x19,0x3e,0x95,0xcb,0xea,0xba,0xb5,0xe7,0x88,0xf5,0x76,0xd6,0xef,
+ 0x15,0x55,0x47,0xc9,0x04,0x4b,0xc2,0x47,0x1a,0xf0,0x88,0x83,0xa0,0x0a,0x38,0x15,
+ 0xb9,0xe3,0x2d,0x6a,0x0d,0x46,0x68,0xf4,0x2d,0x18,0x95,0xd2,0x34,0xf2,0x55,0x3b,
+ 0x19,0xa4,0xe8,0xf3,0x3f,0xa9,0x63,0xd3,0xd0,0x60,0x57,0x1f,0x3c,0x87,0x7c,0x71,
+ 0xa3,0x60,0x77,0x1f,0x4a,0xf0,0xea,0xe2,0x1d,0x59,0x5d,0x6c,0xb6,0xff,0x00,0x33,
+ 0xb2,0x49,0x41,0x72,0x47,0xe6,0x59,0x33,0x09,0x59,0xdc,0x83,0x80,0x70,0x2a,0xa4,
+ 0xb7,0x0c,0x57,0x60,0x18,0xe7,0x20,0x77,0x34,0xd6,0x9a,0x25,0x93,0x68,0x3c,0x82,
+ 0x00,0x35,0x55,0x98,0x4b,0x23,0x12,0x78,0x1f,0x28,0xac,0x92,0x76,0xb5,0x89,0x68,
+ 0x7e,0x02,0x8f,0x56,0x6f,0xd2,0x99,0xc1,0xf9,0x53,0x81,0xe9,0xec,0x29,0x03,0x00,
+ 0xd8,0x27,0xa0,0x22,0x93,0x1b,0x01,0x73,0xc7,0xb5,0x76,0x50,0xa6,0xde,0xac,0x70,
+ 0x5a,0x92,0x46,0xc3,0x1c,0x70,0x49,0xef,0xe9,0x51,0xbc,0x9f,0x3f,0xca,0x7d,0xff,
+ 0x00,0xc9,0xa8,0x59,0x80,0x52,0x49,0xc0,0xef,0x51,0xef,0x24,0x00,0x79,0xae,0xe5,
+ 0x04,0x95,0x8d,0x5a,0xb9,0x66,0x43,0x8e,0x49,0xe0,0xe7,0x9e,0xf5,0x55,0x41,0x76,
+ 0x61,0xdb,0x19,0x15,0x24,0xaf,0xc7,0xb8,0xed,0x4e,0x89,0x42,0xa0,0xe7,0xa0,0xad,
+ 0x60,0xf5,0x49,0x15,0x14,0x40,0x36,0xb4,0x99,0x3c,0xf7,0xcd,0x7d,0x23,0xf0,0x63,
+ 0x1f,0x64,0xd4,0x95,0xba,0x09,0x20,0x6c,0x7e,0x0c,0x0f,0xf8,0x57,0xcd,0xd1,0x80,
+ 0x6e,0x31,0xd0,0x67,0xf2,0xaf,0xa3,0x7e,0x0d,0x32,0xf9,0x9a,0x95,0xb8,0x5d,0xdb,
+ 0x92,0x17,0x07,0xe8,0xc4,0x63,0x1f,0x8d,0x7a,0x18,0x3f,0x8c,0x2a,0xdd,0xd2,0x67,
+ 0xd1,0xf6,0xd7,0xa9,0x14,0x6a,0xc0,0x05,0x54,0xf5,0xe7,0x9f,0xa5,0x5e,0x7d,0x5d,
+ 0xd8,0xed,0xf9,0x4a,0xe0,0x72,0x38,0xed,0xe9,0x5c,0xb4,0xe3,0x08,0x63,0x7e,0xbd,
+ 0x87,0xbf,0xd6,0xb2,0x6f,0x26,0x9e,0x21,0xc3,0x7c,0x8b,0x92,0x71,0xce,0x2b,0xe8,
+ 0x23,0x17,0x19,0x5e,0xe7,0x85,0xca,0x75,0xed,0xa9,0x15,0x60,0xa7,0x25,0x37,0x1e,
+ 0x84,0x63,0x9a,0x7a,0x6b,0xa5,0x1d,0xd1,0xc9,0x66,0x3c,0x00,0x3d,0x3e,0xb5,0xe7,
+ 0x93,0x6a,0x25,0x15,0x03,0xe4,0xe4,0x80,0x33,0xc6,0x73,0x53,0xcf,0x74,0xbe,0x59,
+ 0x50,0x54,0x1e,0x17,0x6f,0x5e,0xa7,0x35,0x94,0xea,0x5a,0x4e,0xdb,0x94,0xa1,0xdc,
+ 0xeb,0x13,0x56,0x64,0x94,0x92,0xcc,0xa5,0x4f,0xcb,0x96,0xec,0x4f,0x6f,0xf0,0xad,
+ 0x78,0x75,0x45,0x11,0x90,0x92,0x96,0x27,0x20,0xf3,0xdf,0x3c,0x13,0x5e,0x43,0x3d,
+ 0xfb,0xb4,0xff,0x00,0xbb,0x63,0xb7,0x20,0x1e,0xff,0x00,0x95,0x5a,0x1a,0x92,0x46,
+ 0x8a,0xb1,0xb1,0x03,0x23,0x1d,0xa9,0xd1,0x96,0xad,0xd8,0x52,0x86,0xba,0x1e,0xa3,
+ 0x26,0xb4,0xec,0x8c,0x8e,0xcd,0x81,0xc1,0x27,0x03,0x83,0x59,0x6b,0xaa,0xf9,0x43,
+ 0x01,0x81,0x5f,0x41,0xfc,0xf9,0xae,0x22,0xef,0x56,0x76,0xdc,0x33,0x85,0x03,0x19,
+ 0x18,0xcf,0xff,0x00,0xae,0xb0,0xae,0x35,0x13,0x82,0xca,0xc4,0xab,0x63,0xef,0x1c,
+ 0x1a,0xeb,0x9d,0x5b,0x45,0x89,0x53,0xb3,0x3d,0xb6,0xdb,0x5b,0x31,0x0d,0xe8,0x01,
+ 0xf5,0x02,0xba,0x4b,0x2d,0x5c,0xce,0x9c,0x36,0x06,0x7b,0x57,0xcf,0xf6,0x1a,0xe3,
+ 0xef,0xda,0xa5,0x46,0xd1,0x8e,0xbc,0xfe,0x35,0xde,0xe8,0x57,0x8d,0x23,0x2a,0x33,
+ 0x60,0xb1,0x1f,0x5c,0x7e,0x1c,0x57,0x37,0x3d,0xd0,0xdd,0x34,0xcf,0x92,0x3f,0x6b,
+ 0x9d,0x6a,0x4d,0x47,0xe2,0x0e,0x9b,0xa5,0x6e,0xca,0x69,0x7a,0x64,0x6a,0x00,0xe8,
+ 0x1a,0xe1,0xcb,0xb7,0xfe,0x82,0x2b,0xe6,0x24,0x4d,0xa7,0x38,0xea,0x6b,0xd7,0x3e,
+ 0x3d,0xea,0x2b,0xaa,0x7c,0x5c,0xf1,0x14,0xa8,0x72,0x90,0xdc,0xc7,0x6c,0xb8,0x3d,
+ 0x04,0x30,0xa0,0xfe,0x79,0xaf,0x2e,0x87,0x66,0xef,0x52,0x5b,0x8f,0xeb,0x5e,0x2e,
+ 0x39,0xb7,0x56,0x57,0xe9,0xa7,0xdc,0x7a,0xb1,0x49,0x2b,0x1d,0x1d,0x9c,0x6b,0xe4,
+ 0xc5,0xb8,0x67,0x07,0x69,0xfc,0x2b,0xd5,0x3c,0x29,0x19,0xc8,0x0a,0x80,0xe4,0xe0,
+ 0xe4,0xf4,0xaf,0x33,0xb0,0x20,0x40,0x55,0xb9,0xda,0xdd,0x7d,0x33,0x5e,0x9d,0xe1,
+ 0x8c,0x87,0x01,0x30,0x06,0x7b,0xf4,0x35,0xc6,0xe4,0xef,0x14,0x8c,0xe6,0xf7,0xd4,
+ 0xf4,0x89,0xf4,0x82,0x63,0x2c,0xc3,0x9d,0x99,0x1e,0xe6,0xb2,0x6c,0xf1,0x05,0x85,
+ 0xf5,0x93,0x8e,0x31,0xbf,0x91,0xdc,0x75,0xfe,0x75,0xea,0x1a,0x54,0x7e,0x7c,0x2a,
+ 0xb2,0x05,0x2a,0xe3,0xf4,0xc5,0x70,0x1a,0xb5,0xaf,0xd9,0xee,0x6f,0xcc,0x63,0x68,
+ 0x5b,0x69,0x18,0x1f,0x65,0x22,0xbb,0xa8,0x61,0x7f,0x7d,0x1a,0xab,0xfa,0xd0,0xf4,
+ 0x72,0x9a,0x9e,0xf3,0x4f,0xb1,0xf0,0xcf,0xc4,0xc1,0xfe,0x9b,0x28,0x1f,0xde,0x35,
+ 0xe2,0xd2,0x77,0xc1,0xaf,0x66,0xf8,0x9c,0xe4,0x6a,0x12,0x67,0xd4,0xfb,0x57,0x8d,
+ 0x49,0x8c,0x57,0xe9,0x79,0x6d,0xfd,0x84,0x6c,0x7b,0x13,0xd6,0x57,0x33,0xdb,0x1f,
+ 0x8d,0x4b,0x6a,0x71,0x2a,0x9c,0xf4,0x3d,0x69,0x8e,0x70,0x39,0xa7,0x5b,0x60,0x48,
+ 0x0f,0xbd,0x76,0xc9,0x68,0x67,0x27,0x64,0x7d,0x01,0xe0,0x5b,0xe6,0x8c,0xc6,0x09,
+ 0xef,0x5f,0x4e,0xe9,0x97,0xc2,0x4b,0x65,0x04,0xf5,0x1d,0x2b,0xe4,0x0f,0x09,0x4d,
+ 0xe5,0xba,0x8c,0xe0,0x02,0x33,0x5f,0x47,0xe8,0x77,0xdf,0xba,0x03,0x3c,0x91,0xeb,
+ 0x5f,0x23,0x99,0x51,0xbb,0xba,0x39,0xb9,0x9e,0xc7,0x5b,0x78,0x46,0x4e,0x3a,0x55,
+ 0x0d,0xdb,0xbe,0x95,0x6e,0x46,0x0e,0x9b,0xb2,0x09,0xc7,0x26,0xab,0x63,0x9e,0x7a,
+ 0xd7,0x93,0x05,0x6f,0x52,0x1b,0x1c,0x0f,0x34,0xa4,0x9c,0x13,0xd3,0xda,0x9b,0x8f,
+ 0x7c,0xd2,0x93,0xc7,0x26,0xb4,0x8d,0xc9,0xb1,0x13,0xfa,0xd5,0x37,0x7c,0x8f,0x4f,
+ 0x7a,0x9e,0x56,0xf7,0xc7,0x1f,0xca,0xa8,0xb3,0x1a,0xd0,0x52,0x5a,0x6a,0x35,0x98,
+ 0xe6,0x9a,0x1c,0x0c,0x9f,0xe5,0x51,0xbb,0x64,0x63,0x83,0xfc,0xea,0x26,0x6c,0x8c,
+ 0xff,0x00,0x9e,0x28,0x2a,0x1a,0xd8,0x86,0xea,0xe0,0x2a,0x9e,0x71,0x5e,0x79,0xab,
+ 0xcc,0x24,0xe9,0xcd,0x75,0xd7,0xf3,0x00,0xa4,0x7b,0x57,0x0b,0x74,0x0c,0x8e,0xc4,
+ 0xf3,0x5c,0xf5,0x67,0xad,0x8f,0x73,0x0a,0x94,0x61,0x73,0x2d,0x22,0xc9,0xcf,0xa9,
+ 0xfe,0x75,0xd1,0xe9,0xf0,0x0c,0x83,0x8c,0xf1,0x59,0x71,0x26,0x18,0x57,0x41,0x6b,
+ 0x85,0x5e,0x4f,0x35,0x94,0xda,0x4a,0xe7,0x36,0x2a,0xa9,0xb7,0x12,0x85,0x03,0xda,
+ 0xae,0xda,0xdb,0x4d,0x7d,0x3a,0xdb,0xdb,0x21,0x77,0x63,0x80,0x07,0x35,0x9b,0x6a,
+ 0xb2,0xde,0xce,0xb6,0xd6,0xe3,0x73,0x39,0x00,0x0c,0x57,0xdd,0xdf,0x00,0xfe,0x07,
+ 0xc9,0xaa,0xdc,0x41,0x3d,0xc4,0x3b,0x9d,0x88,0x62,0x58,0x74,0xcd,0x7c,0xe6,0x75,
+ 0x9d,0x51,0xcb,0xe9,0x3a,0x95,0x1e,0xbd,0x89,0xc0,0x60,0x6a,0x62,0xea,0x72,0x41,
+ 0x18,0x5f,0x06,0x7f,0x67,0x8b,0xef,0x13,0x5d,0x43,0x25,0xec,0x1b,0xf7,0x63,0x82,
+ 0x0e,0x00,0xaf,0xd1,0x8d,0x03,0xf6,0x52,0xf0,0x8c,0x36,0x29,0x1e,0xa0,0x8a,0x58,
+ 0x8e,0x42,0xa8,0xe2,0xbd,0xab,0xc0,0xfe,0x0e,0xd2,0xbc,0x27,0x62,0x90,0x5a,0xc6,
+ 0xbb,0xc0,0x01,0x9f,0x1f,0xa5,0x7a,0x30,0x9b,0x68,0xaf,0xc2,0xb3,0x5e,0x2d,0xc6,
+ 0x63,0x2a,0xb9,0x29,0xd9,0x76,0x47,0xdd,0xd2,0xcb,0xa9,0x61,0x60,0xa9,0xc2,0x29,
+ 0xbe,0xac,0xf8,0x1f,0xc7,0xff,0x00,0xb0,0xc7,0x81,0x75,0xc5,0x33,0x59,0x2c,0x48,
+ 0xfd,0xf7,0x28,0x07,0xf0,0x22,0xbf,0x37,0x3e,0x36,0x7e,0xc4,0x97,0xbe,0x0a,0xf1,
+ 0x55,0xb3,0xe8,0xff,0x00,0xe9,0x1a,0x6d,0xd3,0x05,0xf9,0x41,0xc0,0x63,0xfc,0xab,
+ 0xf7,0x9b,0xc5,0x1a,0xf2,0xdb,0x22,0x5b,0x23,0x7c,0xf2,0x9c,0x1c,0x76,0x02,0xb2,
+ 0xee,0xfc,0x3f,0xa5,0x78,0x9a,0xca,0x15,0xbf,0x89,0x65,0xda,0xc1,0xc6,0x46,0x48,
+ 0x23,0xbd,0x46,0x03,0xc4,0x1c,0xdb,0x03,0x27,0x1a,0x15,0x5b,0x4b,0x74,0xd9,0xdc,
+ 0xb2,0xac,0x3d,0x4a,0x6a,0x75,0xa1,0x66,0x7f,0xff,0xd6,0xf9,0x33,0x44,0xd4,0xe4,
+ 0x42,0xa9,0x30,0xe0,0xf4,0x3d,0x6b,0xd2,0xb4,0x8b,0xf4,0x12,0x98,0xe4,0xfb,0xac,
+ 0x38,0xe7,0x8c,0xfe,0x15,0xe1,0xa2,0xe5,0xa1,0x6d,0x85,0x71,0xb6,0xbb,0x9d,0x22,
+ 0xfc,0x5c,0x05,0x11,0xe0,0x1e,0x33,0x5f,0x89,0xce,0xa7,0x36,0x8b,0x74,0x7c,0xdc,
+ 0xe1,0x6d,0x59,0xed,0x70,0xce,0xcd,0x88,0xc6,0x02,0x9e,0xe7,0xa5,0x6d,0xa8,0x1b,
+ 0x03,0x03,0xfe,0xe9,0xae,0x12,0xc6,0xec,0x3c,0x61,0x24,0xce,0xe5,0x03,0xff,0x00,
+ 0xd7,0x5d,0x1d,0xb5,0xe0,0x68,0x84,0x6c,0x7a,0x77,0xac,0xe7,0x51,0x37,0xae,0xe6,
+ 0x71,0x8b,0x3e,0xa6,0xfd,0x9e,0xb4,0x34,0xd6,0x3c,0x54,0x35,0x9b,0xf5,0x06,0x0d,
+ 0x30,0x2e,0x01,0x19,0xdd,0x24,0x83,0x03,0xfe,0xf9,0x19,0x3f,0x95,0x7b,0x15,0xca,
+ 0xad,0xbd,0xfd,0xc4,0x08,0xdb,0x96,0x39,0x5d,0x55,0x87,0x70,0x18,0xe2,0xb8,0xbf,
+ 0x83,0x50,0xb6,0x89,0xe0,0x49,0x75,0x05,0xf9,0x64,0xbb,0x32,0x4a,0x1b,0x3c,0xf3,
+ 0xf2,0x29,0xfc,0x00,0xad,0x78,0xe6,0x25,0x88,0xce,0x4e,0x73,0xf5,0xf7,0xaf,0xe7,
+ 0x2e,0x3e,0xcd,0x5e,0x2f,0x30,0x92,0x7f,0x67,0x45,0xe8,0xbf,0xe0,0x9f,0xb5,0xf0,
+ 0x96,0x07,0xd8,0x60,0xa0,0xde,0xf2,0xd4,0xea,0x8b,0x6e,0x42,0x7b,0x11,0x49,0x6c,
+ 0xfc,0x94,0x3e,0xbd,0x2a,0xac,0x12,0x87,0x5c,0x8e,0xb8,0xa7,0xd9,0x86,0xfb,0x6c,
+ 0x69,0xdb,0x76,0x4f,0xf3,0xaf,0xce,0xde,0xba,0x36,0x7d,0x8c,0x56,0x87,0xac,0x78,
+ 0x7f,0x51,0x7d,0x34,0xa2,0xa6,0x36,0x84,0x01,0xc7,0xa9,0xce,0x49,0xfa,0xe6,0xbd,
+ 0x0a,0x3d,0x42,0xde,0xe9,0x7c,0xec,0x18,0x8b,0x0e,0x41,0x20,0xf2,0x38,0x1c,0xfb,
+ 0xd7,0x91,0x69,0xf2,0xa8,0x0f,0x2b,0x9e,0x14,0x92,0x49,0xe3,0xa7,0x6a,0xd9,0xb1,
+ 0xbd,0x33,0x49,0x1a,0x6e,0xfb,0xc3,0x71,0x3e,0x9f,0xe4,0x57,0xa3,0x1a,0xde,0xf7,
+ 0xb3,0x6a,0xe8,0xca,0xae,0x0e,0x32,0x4a,0x7d,0x4f,0x40,0x79,0x1d,0x14,0x31,0xe4,
+ 0x37,0xdd,0x3e,0xbe,0xb5,0x0b,0x49,0xb8,0x71,0x5a,0xfa,0x6b,0x5a,0x98,0xbe,0xc9,
+ 0x28,0xde,0xae,0x39,0xf5,0x07,0xd4,0x1e,0xd5,0x87,0xa9,0xda,0xc9,0x61,0x29,0x47,
+ 0x04,0xa9,0xe5,0x5b,0xb1,0x15,0x8e,0x3f,0x03,0x2a,0x34,0x95,0x68,0x6b,0x1e,0xbe,
+ 0x47,0x1d,0x09,0xc6,0x55,0x1d,0x26,0xac,0xff,0x00,0x32,0x19,0x18,0x63,0x15,0x3d,
+ 0x8b,0x72,0x41,0xe8,0x78,0xac,0x93,0x36,0x2a,0xc5,0x8c,0xd8,0x93,0x19,0xaf,0x0a,
+ 0x9d,0x6b,0x54,0x4c,0xef,0xa9,0x45,0xfb,0x36,0x8b,0x71,0x1f,0x26,0xe9,0xe3,0xc6,
+ 0x32,0x78,0xa5,0x9d,0xfc,0xa9,0xc4,0x8a,0x71,0xce,0x78,0xf5,0xa8,0x6f,0x0e,0xcb,
+ 0xa4,0x7e,0xc7,0x8a,0x75,0xef,0x28,0x18,0x0a,0xe8,0x9b,0xb4,0x27,0x15,0xd1,0xdc,
+ 0x85,0x1b,0xb8,0xb7,0xd5,0x1d,0x48,0x4d,0x37,0xc5,0x1a,0x4d,0xce,0x83,0xad,0xc1,
+ 0x1d,0xd5,0xbd,0xd4,0x2d,0x0d,0xc4,0x32,0x80,0xc9,0x2c,0x4e,0x30,0x41,0x07,0xda,
+ 0xbf,0x1f,0x7e,0x34,0xff,0x00,0xc1,0x3e,0x7c,0x5f,0xa7,0x78,0x8b,0x58,0xd7,0x3e,
+ 0x1a,0x35,0xbd,0xee,0x82,0x98,0xba,0xb7,0xb3,0x92,0x52,0x2f,0x02,0x1c,0x99,0x22,
+ 0x8d,0x02,0x91,0x21,0x4c,0x71,0xc8,0x2c,0x31,0x8c,0x9a,0xfd,0x79,0xd2,0x2c,0x54,
+ 0x22,0x5e,0xdd,0x12,0x98,0x19,0x50,0xa7,0x04,0xfd,0x69,0xf7,0xba,0x97,0xef,0xf3,
+ 0x16,0x30,0xa7,0xb7,0x6c,0x57,0xe9,0xbc,0x2f,0xc4,0x79,0x9e,0x57,0x4a,0x38,0x8a,
+ 0x73,0xb4,0x9f,0xce,0xeb,0xcd,0x7f,0x4c,0xf9,0x6c,0x66,0x5d,0x42,0xbd,0x49,0x53,
+ 0x4a,0xf1,0xfc,0x9f,0x93,0x3c,0x6f,0xf6,0x67,0xf8,0x2b,0x2f,0xc3,0xaf,0x87,0xba,
+ 0x76,0x9f,0xa9,0x87,0xb4,0xbb,0x65,0x12,0xcf,0x0a,0xe0,0x31,0x66,0x19,0xf9,0xcf,
+ 0x6c,0x74,0xc6,0x2b,0xe9,0x3b,0xcb,0x0b,0x74,0x8b,0x29,0x90,0x47,0x7c,0xf5,0xa8,
+ 0x93,0x5c,0x8d,0xe1,0x52,0x81,0x55,0x88,0x19,0xff,0x00,0x1a,0xc1,0xbe,0xd4,0xd9,
+ 0x73,0x96,0xcd,0x76,0xe6,0x98,0xfc,0x17,0xb3,0x9c,0xd7,0xbf,0x39,0x6a,0xe5,0xe6,
+ 0xce,0x6a,0x54,0xb1,0x33,0x9a,0x8b,0xd1,0x2d,0x91,0x9b,0x76,0xc6,0x22,0x54,0xff,
+ 0x00,0x3a,0xc5,0xb6,0xbd,0xf2,0x2e,0xc9,0xeb,0x9a,0x6d,0xd5,0xf7,0x98,0xdc,0x9e,
+ 0x2b,0x9d,0xb9,0x91,0xbe,0xf2,0x1d,0xa4,0x1e,0x0d,0x7e,0x70,0xf1,0xaa,0x15,0xa3,
+ 0x51,0x74,0x3e,0xba,0x86,0x11,0xca,0x9b,0x8b,0xdd,0x9e,0xbd,0x6f,0x32,0x5d,0xc1,
+ 0x83,0x83,0x91,0xf4,0xaf,0xc9,0xcf,0xf8,0x29,0x9f,0xc1,0xe5,0xd4,0xfc,0x3d,0xa3,
+ 0xfc,0x60,0xd2,0xed,0xff,0x00,0xd2,0xb4,0x79,0x57,0x4b,0xd5,0x5d,0x47,0x2f,0x69,
+ 0x39,0xff,0x00,0x46,0x91,0xb0,0x32,0x4c,0x73,0x1d,0x99,0x3d,0x15,0xcd,0x7e,0x87,
+ 0x69,0x9e,0x21,0x9a,0xd8,0x86,0x90,0x36,0x33,0xc9,0xeb,0x59,0x7f,0x10,0x6c,0xb4,
+ 0x3f,0x8a,0x9e,0x0f,0xd7,0xbc,0x07,0x7e,0x9e,0x65,0xbe,0xaf,0xa7,0xcd,0x6b,0x28,
+ 0x23,0xa1,0x91,0x48,0x56,0x1e,0xe1,0xb0,0x46,0x3a,0x11,0x5f,0xa9,0x70,0xaf,0x12,
+ 0xbc,0x0e,0x3a,0x86,0x36,0x0f,0xe1,0x6b,0xe6,0x9e,0xeb,0xee,0x3e,0x77,0x17,0x97,
+ 0x39,0x42,0x74,0xa4,0xb4,0x67,0xf3,0x33,0xe1,0xbb,0x62,0x5d,0x46,0x38,0xaf,0x7d,
+ 0xd1,0xa0,0xf2,0xe1,0x04,0x83,0xc5,0x79,0xbe,0x9d,0xa1,0x5d,0xe8,0xda,0xc5,0xde,
+ 0x8f,0xa8,0x26,0xdb,0xab,0x0b,0x99,0x6d,0x66,0x04,0x63,0xf7,0xb0,0x39,0x8d,0xf8,
+ 0xff,0x00,0x78,0x1c,0x57,0xaf,0x58,0xc3,0xb6,0x0e,0x9d,0xab,0xfa,0x57,0x3e,0xc7,
+ 0x46,0xb5,0xa7,0x17,0xa3,0x3f,0x1c,0xc7,0xb6,0xa4,0xe0,0xf7,0x21,0x90,0x33,0x30,
+ 0x0b,0xd4,0xff,0x00,0x9c,0xd7,0x5b,0xaf,0x5c,0x7f,0xc2,0x1b,0xe1,0xf5,0xd1,0xad,
+ 0xce,0xdd,0x57,0x55,0x88,0x3d,0xd9,0x1f,0x7a,0x1b,0x76,0xc1,0x48,0x7d,0x8b,0x70,
+ 0xcf,0xf8,0x0a,0xd0,0xf0,0xbe,0x91,0x6f,0x0a,0xdc,0x78,0x9b,0x53,0x50,0x6c,0x74,
+ 0xd0,0x1f,0x6b,0x74,0x96,0x73,0xfe,0xae,0x2f,0x7c,0x9f,0x99,0xbd,0x87,0xbd,0x79,
+ 0x66,0xa9,0x79,0x75,0xad,0x6a,0xd7,0x1a,0x9d,0xe3,0x17,0x92,0x77,0x67,0x24,0xfd,
+ 0x73,0xff,0x00,0xea,0x15,0xf0,0x98,0xec,0x4a,0x72,0x54,0x6f,0xeb,0xfe,0x5f,0x33,
+ 0x0a,0x10,0xe4,0x87,0x3f,0x57,0xb1,0x92,0x8f,0xe5,0xa8,0xd9,0x90,0x7a,0x9c,0xf3,
+ 0x48,0x85,0x8f,0xef,0x9c,0xe3,0x76,0x7f,0x2a,0x9e,0xe9,0x0e,0x11,0x33,0xf3,0x3f,
+ 0xa0,0xed,0xde,0xaa,0xc8,0x41,0x8c,0xff,0x00,0xb3,0xd2,0xa2,0x92,0x44,0xd9,0xde,
+ 0xcc,0xac,0xbb,0x77,0x49,0x23,0x72,0x77,0x63,0x8e,0xd4,0x81,0x88,0x90,0xb2,0x72,
+ 0x00,0xfd,0x6a,0x22,0xa5,0x46,0xd0,0xdd,0x06,0x4f,0x7e,0xbd,0x69,0xb1,0x3f,0xee,
+ 0xb7,0x37,0xf1,0x1f,0xd2,0xba,0xe2,0x9b,0xd0,0x76,0x27,0x2d,0xb2,0x40,0x71,0xcb,
+ 0x13,0xee,0x78,0xa8,0x65,0x96,0x56,0x21,0x73,0x81,0xfc,0xea,0x21,0x27,0x99,0x36,
+ 0xee,0xca,0x39,0xa6,0xb3,0x02,0xe7,0xb6,0x39,0x15,0xdd,0x46,0x29,0x2b,0x1a,0xae,
+ 0xc4,0x8e,0x72,0xaa,0xbe,0xa7,0xd6,0x9f,0x13,0x2f,0x95,0xcf,0x27,0x27,0xff,0x00,
+ 0xaf,0x50,0x15,0x04,0x67,0xae,0x05,0x46,0xae,0x00,0x00,0x7a,0xd6,0xd6,0xbb,0x2a,
+ 0xc5,0x86,0x91,0x98,0xee,0x1e,0xbd,0x2a,0xe4,0x87,0xf7,0x79,0x1c,0x60,0x01,0x54,
+ 0xc0,0x40,0x46,0x07,0xbd,0x5c,0x51,0x90,0x46,0x32,0x07,0x7a,0xd2,0x9b,0xf7,0x8a,
+ 0x51,0xd4,0x82,0x16,0x26,0x55,0xc8,0xe7,0x39,0xaf,0xa0,0xbe,0x0e,0x4c,0x53,0x5b,
+ 0xbc,0xb6,0x5e,0x7c,0xdb,0x37,0x23,0x9c,0x72,0x8c,0xa7,0xfc,0x6b,0xc0,0xe3,0x0a,
+ 0xb2,0x73,0xdc,0xf5,0xaf,0x60,0xf8,0x4f,0x33,0x43,0xe3,0x0b,0x49,0x3e,0xe8,0x99,
+ 0x64,0x80,0xe4,0xf5,0xf3,0x14,0x81,0xc9,0xf7,0xc5,0x76,0x61,0x1a,0x55,0x95,0xca,
+ 0x92,0xbd,0x36,0xac,0x7d,0x15,0x79,0x3c,0x8c,0xc4,0x3f,0xcb,0xb3,0xe6,0x23,0xb6,
+ 0x3d,0x6b,0x22,0x56,0x70,0xbb,0xb1,0x80,0xc7,0xaf,0x51,0x8a,0xe9,0x6f,0x74,0xf0,
+ 0xcb,0xe6,0xb9,0xf9,0xb1,0xc8,0xc7,0x6a,0xe6,0x2e,0xe0,0x96,0x06,0xdf,0x83,0xb0,
+ 0x73,0xd6,0xbe,0x83,0x9a,0xf6,0x67,0x82,0x8c,0x59,0x8c,0x8c,0x36,0x31,0x2e,0x58,
+ 0xe4,0xf0,0x07,0xf9,0xfc,0x2a,0x7b,0x16,0x03,0x7e,0x5f,0x93,0xc7,0x23,0xa6,0x31,
+ 0xd6,0xa8,0x5e,0x3e,0x63,0x2b,0xe5,0x93,0x91,0xd8,0xe7,0xa5,0x63,0xdb,0x5e,0xdc,
+ 0x5a,0x02,0xd2,0x72,0xad,0x9d,0xb9,0xed,0x9a,0xce,0x6e,0xd3,0x4e,0xc5,0xd8,0x4b,
+ 0xeb,0xd7,0x5b,0x99,0x10,0xb2,0x8e,0x0b,0x02,0xbc,0x0c,0x83,0xda,0xab,0x1b,0xb3,
+ 0x07,0x0e,0xc5,0x98,0xf3,0xb8,0xfa,0xf4,0xcd,0x64,0x6b,0x92,0xca,0xee,0x93,0xa7,
+ 0xcd,0xd8,0xae,0x79,0xe7,0xd0,0x7b,0x55,0x78,0xe5,0x95,0xa2,0x55,0x20,0x75,0x18,
+ 0xef,0xed,0x58,0x46,0xa7,0xbf,0x27,0x62,0xa5,0x13,0x5e,0x6b,0xf9,0x1c,0x96,0x07,
+ 0x7f,0x70,0x3d,0xfd,0x6a,0x94,0x97,0x12,0x49,0x27,0xce,0x76,0x82,0x33,0xf8,0xd5,
+ 0x79,0xd0,0x8c,0x05,0x18,0x6c,0xf2,0x08,0xe0,0x7d,0x2a,0xed,0xb2,0x13,0x19,0x12,
+ 0x2e,0x09,0x07,0x19,0xe7,0xa7,0x7a,0xd9,0xcb,0x41,0x58,0x9a,0xda,0x46,0x66,0xca,
+ 0x93,0x9c,0x75,0x1f,0xe2,0x6b,0xd9,0xbc,0x18,0xef,0x3c,0xf0,0x09,0x86,0x15,0x1b,
+ 0x24,0xe7,0x9c,0x0e,0x6b,0xca,0x74,0x9b,0x17,0x95,0xc2,0xa8,0xc0,0x03,0x8c,0x8c,
+ 0xd7,0xaa,0x5d,0x4e,0x3c,0x37,0xe0,0xcd,0x67,0x5e,0x93,0x0a,0x34,0xfd,0x3a,0x79,
+ 0xb8,0xe9,0xbb,0x61,0x0a,0x3e,0xa4,0x9a,0x98,0x45,0xde,0xe6,0x94,0xd2,0x72,0x47,
+ 0xe7,0x37,0x8a,0x75,0x21,0xac,0xf8,0xbb,0x5a,0xd4,0xc1,0x04,0x5c,0xea,0x37,0x32,
+ 0x02,0x3a,0x15,0x32,0xb0,0x53,0x9f,0xa0,0x15,0x9a,0xc5,0x4b,0x84,0xee,0x79,0x26,
+ 0xb2,0x56,0x37,0x4d,0xa5,0xba,0x8e,0x0e,0x7d,0x47,0x7a,0xd5,0x70,0x50,0x29,0x3d,
+ 0x40,0xe6,0xbc,0x7c,0x44,0xef,0x29,0x33,0xba,0xd6,0x56,0x3a,0x9d,0x37,0xf7,0x90,
+ 0xb1,0x18,0xcf,0x04,0x0f,0x7a,0xf4,0xbf,0x0b,0x48,0x04,0x8a,0x0e,0x47,0xb6,0x33,
+ 0xcf,0xb5,0x79,0x8e,0x9e,0xe8,0xaa,0x1b,0xb3,0x28,0xfe,0x75,0xda,0x78,0x6a,0xf0,
+ 0x45,0x71,0x93,0xc0,0x53,0xd0,0xf6,0xe6,0xb9,0x26,0xed,0x67,0x73,0x96,0xac,0x5e,
+ 0xa7,0xd4,0xfa,0x0a,0xc5,0x71,0x6e,0xa1,0x38,0x2a,0x47,0x5f,0xf3,0xeb,0x59,0x1e,
+ 0x2c,0xb2,0x48,0x6d,0x2f,0xe6,0x24,0x82,0x20,0x90,0x2f,0xe2,0x01,0xab,0x9e,0x08,
+ 0xc5,0xcc,0x6b,0x21,0x20,0xf2,0x41,0x00,0xfa,0xd6,0x87,0xc4,0x08,0x92,0x2d,0x22,
+ 0xec,0xf7,0x16,0xef,0xf9,0xf1,0x5f,0x55,0x97,0xa7,0x3a,0x4e,0x6d,0x74,0x3a,0xf2,
+ 0xc7,0x66,0xfb,0x9f,0x99,0x1f,0x13,0xf1,0xfd,0xa9,0x20,0xf5,0x3c,0xd7,0x8d,0xc8,
+ 0x7a,0xf1,0xc5,0x7b,0x27,0xc5,0x03,0xff,0x00,0x13,0x56,0xcf,0x72,0x6b,0xc7,0x24,
+ 0x04,0x66,0xbe,0xcf,0x2e,0xff,0x00,0x77,0x81,0xee,0x45,0xdd,0x26,0x8a,0x0d,0xda,
+ 0x9f,0x6f,0x80,0xe3,0x1d,0x33,0x4d,0x90,0x73,0xc5,0x25,0xb9,0x05,0xc6,0x7a,0x8a,
+ 0xec,0x61,0x27,0x64,0x7a,0x87,0x87,0x24,0x2a,0xca,0x4f,0xad,0x7b,0xbe,0x8d,0x77,
+ 0xb5,0x54,0xfe,0x7c,0xd7,0xcf,0xfe,0x1f,0x3d,0x38,0xce,0x0f,0x5a,0xf5,0xbd,0x2e,
+ 0xe0,0xaa,0xa8,0xf4,0xaf,0x9c,0xc7,0xea,0x8e,0x26,0xec,0xf5,0x3d,0xaa,0xd6,0x7f,
+ 0x31,0x76,0x8a,0x90,0x2f,0x61,0xf8,0x8f,0x5a,0xe5,0xb4,0xbb,0xd0,0xc0,0x2e,0x79,
+ 0xe2,0xba,0x95,0x21,0x86,0xe1,0x5e,0x14,0xb4,0x1d,0xf4,0x1d,0x48,0xc4,0x0c,0x81,
+ 0xd2,0x9d,0xbb,0xbd,0x46,0xc7,0x8c,0x7a,0xe6,0x9c,0x6e,0x2b,0x94,0xe5,0x20,0x93,
+ 0xcf,0x4a,0xa6,0xca,0x59,0x80,0x1d,0x4f,0xad,0x5f,0x75,0x3e,0x99,0xcf,0x7a,0x9e,
+ 0xd6,0xd5,0x9d,0xf3,0x8a,0xa7,0x34,0x95,0xd8,0x8c,0x93,0x6c,0xe4,0x71,0xfa,0xd6,
+ 0x74,0xd9,0x4c,0x9e,0xe2,0xbd,0x36,0xdf,0x48,0xf3,0x53,0x24,0x63,0xd2,0xb8,0x9d,
+ 0x7a,0xd3,0xec,0xb2,0xf0,0x0e,0x07,0x51,0x58,0xac,0x44,0x1d,0xd5,0xcd,0x69,0x24,
+ 0xd9,0xc3,0x5f,0x12,0x47,0x7c,0xd7,0x3b,0x3c,0x7b,0xb8,0xad,0xfb,0xb2,0x5b,0x3e,
+ 0x9c,0xd6,0x1c,0xae,0xa3,0x3d,0xbe,0x95,0xc9,0x2a,0xaa,0xed,0x9e,0x85,0x5a,0xdc,
+ 0xb1,0x2b,0xa8,0xc7,0x53,0xc8,0xe9,0x57,0x23,0x77,0x77,0x11,0xc5,0xc9,0x63,0x81,
+ 0x54,0x77,0xb3,0xb6,0xd4,0xe4,0x0e,0xe4,0xd7,0xb0,0x7c,0x31,0xf0,0x64,0x9a,0xee,
+ 0xa7,0x13,0xba,0x6e,0x40,0x46,0x38,0xcf,0x7a,0xe1,0xc6,0xe2,0xe3,0x42,0x8c,0xab,
+ 0x54,0x7a,0x23,0x8a,0x94,0x27,0x88,0xa8,0xa9,0xc3,0x76,0x7a,0xf7,0xc1,0x0f,0x85,
+ 0xf7,0x1a,0xb5,0xfc,0x37,0x37,0x31,0x6e,0x77,0x60,0x46,0x47,0x41,0x5f,0xaf,0x3e,
+ 0x04,0xd0,0xec,0x3c,0x1b,0xa4,0xc7,0x0a,0x2a,0xfd,0xa1,0x94,0x64,0xe3,0xa6,0x6b,
+ 0xc7,0x7e,0x13,0x78,0x16,0xd3,0xc3,0x1a,0x4c,0x77,0xd3,0xc6,0x04,0x85,0x46,0xde,
+ 0x07,0x1c,0x75,0xaf,0x59,0x17,0x4f,0x24,0x9b,0xc9,0x27,0x26,0xbf,0x9b,0xb8,0xa3,
+ 0x88,0x2a,0x66,0x38,0x86,0xa2,0xf4,0x3f,0x5b,0xc9,0xf2,0xa8,0xe0,0xe8,0x2e,0xe7,
+ 0xaf,0x69,0xfa,0x97,0x9b,0x82,0x4f,0xbd,0x6a,0xde,0xea,0x4b,0x6b,0x6c,0xd3,0x3b,
+ 0x6d,0x00,0x77,0xaf,0x2f,0xb1,0xbf,0x68,0x88,0x22,0xb0,0x7c,0x4d,0xe2,0x09,0x66,
+ 0x4f,0xb3,0x23,0x13,0xeb,0x8a,0xf9,0xee,0x5f,0x65,0x4d,0xb6,0x77,0x4a,0x9a,0x94,
+ 0x88,0xaf,0x75,0x79,0x35,0x3d,0x51,0xa5,0x27,0x2a,0x1b,0x8f,0xc2,0xbd,0x57,0xc3,
+ 0xb7,0x27,0xc9,0x0b,0x9c,0x9c,0x57,0x87,0x69,0x71,0x3b,0x38,0x27,0x35,0xec,0x1a,
+ 0x16,0xf0,0x83,0x8c,0x57,0x93,0x4d,0xbe,0x77,0xe6,0x76,0x4e,0x09,0xd3,0xe5,0x3f,
+ 0xff,0xd7,0xf8,0xde,0xf2,0xde,0x29,0x3e,0x74,0x1f,0xfd,0x7a,0xa7,0x65,0x78,0xd6,
+ 0x97,0x00,0x27,0x03,0x35,0x6d,0x26,0x04,0xf9,0x52,0x0e,0xa7,0x00,0xd6,0x6d,0xf8,
+ 0x11,0xb8,0x29,0xd7,0x1d,0x6b,0xf1,0x3a,0x9e,0xfc,0x79,0xfa,0x9f,0x3f,0x6d,0x3d,
+ 0xe3,0xd4,0xed,0x2f,0x83,0x2c,0x73,0x6e,0x23,0xd4,0x7a,0xd7,0x61,0x63,0x2b,0x4a,
+ 0xcb,0xb7,0x9c,0x9e,0x3f,0xc2,0xbc,0x6f,0x46,0xbe,0x7d,0xbe,0x5b,0xf2,0x47,0x20,
+ 0xd7,0xa9,0xf8,0x5a,0xe4,0x5c,0xde,0xdb,0x40,0x58,0x1d,0xd2,0xa0,0xe7,0xdd,0x85,
+ 0x79,0xd8,0xc7,0xcb,0x17,0x51,0x69,0xa0,0xe9,0x53,0xbc,0x92,0x3f,0x45,0x74,0x8f,
+ 0xf8,0x97,0xf8,0x46,0xce,0xc5,0x30,0x11,0x22,0x89,0x3f,0x4c,0x9a,0xae,0x92,0x90,
+ 0x7d,0x87,0xa7,0x6a,0x50,0xec,0x34,0xe8,0x50,0x72,0x3e,0x5e,0xbe,0xc2,0xa9,0x87,
+ 0x39,0xca,0xf0,0x7d,0x2b,0xf9,0x47,0x35,0xa8,0xe7,0x5e,0x72,0x91,0xfd,0x09,0x83,
+ 0x82,0x85,0x38,0xc5,0x74,0x3a,0x2b,0x4b,0x9c,0x1c,0x8e,0x95,0xb9,0x62,0xe1,0x6e,
+ 0x8c,0xc7,0xa2,0x23,0x1f,0xe9,0x5c,0x4c,0x52,0x84,0x23,0x6f,0x4e,0xb8,0xae,0x86,
+ 0xd6,0x6d,0xf1,0xc8,0x17,0x3f,0x30,0x55,0xfc,0xcd,0x79,0x14,0xbe,0x34,0x7a,0x6d,
+ 0x7b,0xb7,0x3a,0xe9,0x2f,0x8a,0xda,0x24,0x2b,0xd5,0xc8,0x07,0xf1,0xe4,0xd6,0xa5,
+ 0x8d,0xea,0x43,0x76,0x03,0x1c,0x05,0x00,0x7e,0x1d,0x6b,0x93,0xdd,0x9b,0x88,0x13,
+ 0xb2,0x29,0x3f,0x9f,0x4a,0x94,0x4b,0x89,0x98,0xf6,0xdd,0x9f,0xc0,0x74,0xaf,0x56,
+ 0x9a,0x49,0xf3,0x18,0xd4,0x6d,0xa4,0x7b,0xc6,0x97,0xac,0xae,0x57,0x60,0xc0,0xf5,
+ 0xae,0xc0,0x5e,0xc7,0x7d,0x6e,0xf6,0x92,0xb0,0xd8,0xeb,0x8e,0x79,0x20,0xf6,0x3f,
+ 0x85,0x78,0x36,0x9f,0xa8,0x1d,0xa0,0x67,0xf0,0xae,0xf7,0x47,0x9e,0x6b,0x99,0x56,
+ 0x28,0x43,0x3c,0x8c,0x78,0x55,0xff,0x00,0x3d,0x2b,0xb6,0x8e,0x36,0x69,0xfb,0x3d,
+ 0xef,0xd0,0xe0,0xaf,0x84,0x8b,0xf7,0x9e,0x96,0x2b,0xea,0x11,0x4d,0xa7,0xdc,0x9b,
+ 0x7b,0x8f,0x4c,0xab,0x0e,0x8c,0x3d,0x45,0x5a,0x48,0x6e,0x2c,0xae,0x12,0x3b,0x95,
+ 0x28,0xce,0xa1,0xd7,0x3d,0xd5,0xba,0x57,0x51,0xad,0xc7,0x65,0xa7,0xe9,0xe2,0xeb,
+ 0x58,0x0a,0xd2,0x45,0xf3,0xc7,0x1e,0x79,0xc8,0xf5,0x3e,0x9e,0xa2,0xb9,0xcf,0x0d,
+ 0x6b,0x7a,0x7f,0x89,0x96,0x48,0x35,0x41,0xb5,0xc4,0xa7,0xc9,0x99,0x78,0x64,0x18,
+ 0xe9,0xee,0x33,0xda,0xb8,0x6a,0x70,0xbb,0xe6,0x92,0xa7,0x2b,0x49,0xd9,0xc5,0x3e,
+ 0x9e,0x4f,0xf4,0x37,0x59,0xba,0x74,0xd7,0x34,0x6e,0xb6,0x6d,0x7e,0x9f,0xaf,0xe0,
+ 0x5c,0xbf,0xda,0x62,0x49,0x07,0x6a,0xbf,0x66,0xab,0x38,0x46,0x97,0xee,0xaf,0x27,
+ 0xf0,0xad,0x0b,0xff,0x00,0x0e,0xdc,0xc1,0x10,0xc1,0xf3,0xad,0xcf,0xfc,0xb4,0x4f,
+ 0x4f,0x71,0xda,0xaa,0xc8,0xf1,0xda,0xc2,0x12,0x31,0x84,0x51,0x8f,0x7a,0xce,0x9e,
+ 0x57,0x5f,0x0f,0x5d,0xbc,0x54,0x79,0x74,0xeb,0xd7,0xfc,0xd1,0x92,0xc5,0x53,0xab,
+ 0x49,0x46,0x93,0xb9,0x5f,0x5a,0xd6,0x76,0xc6,0x51,0x5b,0x04,0xf0,0x31,0xed,0x5c,
+ 0x4a,0xea,0xa7,0x71,0x21,0xf2,0x58,0xf3,0xef,0x51,0xea,0x9f,0x3b,0x33,0x1c,0xe0,
+ 0xfe,0x63,0xde,0xb9,0x69,0x64,0xf2,0x5c,0x96,0xfc,0x71,0xc6,0x7d,0xfe,0xb5,0xdb,
+ 0x2c,0x44,0xa7,0x3b,0xc9,0x9a,0x47,0x0f,0x15,0x0b,0x44,0xf4,0xb4,0xd5,0x8c,0x76,
+ 0xe9,0x2a,0x13,0xe5,0xfd,0xc7,0x1d,0x76,0x93,0xd0,0x8f,0x63,0x51,0x5e,0xea,0x5e,
+ 0x62,0xf0,0x78,0xc5,0x72,0x5a,0x4d,0xe2,0xcd,0x0c,0xd6,0xcc,0x78,0x2b,0xf3,0x7b,
+ 0x83,0xde,0xa9,0x47,0x73,0x2a,0x6f,0xb4,0x97,0xef,0x44,0xd8,0x1f,0xee,0xf6,0xac,
+ 0xab,0xcb,0x75,0xdc,0x54,0xe9,0x5d,0xfa,0x1d,0x0b,0xdd,0x0c,0x9c,0x1f,0x7a,0x1a,
+ 0x4f,0x32,0x10,0xdd,0xeb,0x9a,0x37,0x3f,0x36,0x33,0xcd,0x6d,0xe8,0xd3,0xaf,0xda,
+ 0x51,0x5c,0x06,0x50,0xc1,0xb0,0x7a,0x71,0x5f,0x3d,0x35,0xcd,0x57,0x91,0x75,0x3d,
+ 0x8a,0x7e,0xed,0x3e,0x63,0xd1,0x74,0x2d,0x01,0x86,0x9a,0x65,0xbe,0x45,0x0d,0x31,
+ 0xdc,0xaa,0xdf,0x78,0x2e,0x3b,0xfd,0x6b,0x36,0x5d,0x1a,0xdb,0x4d,0x95,0xe7,0x84,
+ 0x05,0x27,0x24,0xe2,0xac,0x49,0xad,0xc9,0x2f,0xca,0x64,0xc7,0xb0,0xff,0x00,0x1a,
+ 0xa5,0x75,0x3e,0xf8,0x19,0xb2,0x4f,0x07,0x19,0xaf,0xd1,0x28,0xd2,0xa3,0x0a,0x70,
+ 0x85,0x35,0xb2,0x3e,0x56,0x55,0x2a,0x4a,0x72,0x9c,0xde,0xe7,0xe2,0x67,0xed,0x11,
+ 0xe1,0x48,0x74,0x3f,0x8e,0xde,0x23,0xfb,0x2a,0x84,0x87,0x50,0x96,0x2d,0x45,0x14,
+ 0x0c,0x00,0x6e,0x10,0x6f,0xc6,0x3d,0x5d,0x58,0xfd,0x4d,0x73,0xfa,0x36,0x97,0x3e,
+ 0xa1,0x34,0x36,0x36,0xe9,0xbe,0x49,0x99,0x55,0x54,0x75,0x24,0x9c,0x01,0x5e,0xe7,
+ 0xfb,0x52,0x59,0xab,0xfc,0x53,0x8a,0xe3,0x1c,0xbe,0x9f,0x10,0x27,0xd7,0x6c,0x8f,
+ 0xfe,0x35,0xc8,0x78,0x7c,0x43,0xe1,0xaf,0x0d,0xdf,0x78,0xaa,0x60,0x3c,0xf5,0x5f,
+ 0xb3,0xd9,0xaf,0x42,0x66,0x71,0xf3,0x38,0xe9,0xf7,0x17,0xf5,0x35,0xfb,0xe6,0x5f,
+ 0x98,0x7f,0xc2,0x4d,0x0a,0xb5,0x3a,0x47,0xf2,0xd0,0xfc,0x87,0x3a,0xa0,0x9e,0x65,
+ 0x52,0x0b,0x6b,0xff,0x00,0xc1,0x39,0x3f,0x88,0xba,0x95,0xbd,0xa8,0xb7,0xf0,0x86,
+ 0x92,0xc1,0xad,0xf4,0xfc,0x89,0xca,0xf4,0x96,0xe0,0xe3,0x7b,0xfe,0x07,0xe5,0x1e,
+ 0xc2,0xbc,0xc8,0xc0,0xb1,0xa6,0xf2,0x3a,0x8c,0xf1,0x56,0xd5,0xa6,0xb8,0x99,0xee,
+ 0x26,0x39,0x67,0x62,0x4e,0x7a,0x9c,0xd4,0x57,0x6e,0x31,0xd3,0x04,0x70,0x6b,0xe7,
+ 0xe3,0x39,0x4a,0x5e,0xd2,0x5b,0xb7,0x7f,0xeb,0xd0,0xf3,0xe7,0x25,0x27,0x75,0xb1,
+ 0x81,0x21,0x69,0x26,0xe7,0x8c,0x8d,0xa3,0x3d,0xbd,0xff,0x00,0x1a,0xa3,0x2a,0xa2,
+ 0xa3,0xe7,0xd8,0x56,0x9c,0xc9,0xf3,0xee,0x1d,0x14,0x71,0xf5,0xac,0xe6,0x39,0x42,
+ 0x71,0xce,0x79,0xaf,0x56,0x94,0xec,0x62,0xd7,0x72,0x8b,0x90,0x13,0x77,0x76,0xfe,
+ 0x55,0x0a,0x29,0x31,0x10,0x4f,0xb7,0x35,0x72,0x45,0x0c,0x02,0xa8,0x18,0x15,0x46,
+ 0x65,0xf2,0xd7,0x18,0xea,0x3f,0x9d,0x7a,0x54,0xaa,0x5f,0x61,0xa4,0x88,0x93,0x08,
+ 0xa5,0x79,0x24,0xff,0x00,0x4a,0x8b,0x39,0x63,0xb7,0x07,0x1d,0xe8,0x2f,0x96,0x0d,
+ 0xdb,0x15,0x03,0x39,0x01,0xc8,0xe9,0xfa,0xd7,0xa9,0x05,0x74,0x86,0x3a,0x59,0xb0,
+ 0x38,0xef,0xfe,0x34,0x47,0x92,0xa0,0x93,0xda,0xa9,0x33,0x06,0x23,0x77,0x1c,0x55,
+ 0x80,0x41,0x00,0xf7,0x02,0xb6,0x94,0x74,0xd0,0xaf,0x23,0x44,0x3e,0xcc,0x01,0xce,
+ 0x45,0x68,0xe3,0x2b,0xed,0x58,0xa1,0xc0,0x20,0xfa,0x8a,0xd6,0x8d,0xb6,0xaf,0xaf,
+ 0xa8,0xab,0xa3,0x12,0x90,0xc8,0x89,0x69,0xc0,0x1d,0x1a,0xbd,0x73,0xc0,0x12,0x8b,
+ 0x7d,0x7e,0xc2,0x65,0xff,0x00,0x96,0x73,0xc6,0xd9,0xfa,0x30,0xaf,0x20,0x8b,0x2b,
+ 0x30,0xf6,0xaf,0x51,0xf0,0x73,0x9f,0xed,0x2b,0x76,0xee,0x18,0x57,0x4d,0x25,0x6a,
+ 0xab,0xe4,0x4d,0x49,0x25,0x4a,0x47,0xde,0x3a,0x86,0x9e,0x08,0x74,0x60,0xbb,0x73,
+ 0x85,0x3d,0xf9,0xe4,0x63,0xf0,0xaf,0x3c,0xd5,0x34,0xd9,0x22,0xf9,0x98,0x92,0xa0,
+ 0x9f,0x97,0x1d,0x71,0xef,0x5e,0xc7,0x63,0x6e,0x35,0x3d,0x0f,0x4d,0xd4,0x41,0xff,
+ 0x00,0x5f,0x02,0x96,0x23,0xae,0xf8,0xf2,0x8d,0xfc,0xab,0x9d,0xd6,0xb4,0xd8,0xfc,
+ 0xa2,0xa5,0x4b,0x94,0x23,0x0c,0x3e,0x9d,0xeb,0xdf,0xd9,0xf2,0x3e,0x87,0x81,0x7b,
+ 0x48,0xf0,0x7d,0x40,0xbe,0x0f,0xd9,0xd4,0x07,0x6e,0xa7,0xba,0x8c,0x74,0xae,0x50,
+ 0x47,0x11,0x62,0x81,0xdb,0x20,0x61,0x87,0x61,0xf8,0x57,0xa5,0x6a,0x76,0xae,0x0f,
+ 0x94,0xc3,0x6b,0x2f,0x18,0x1d,0xc1,0x35,0xc0,0xdf,0x5b,0x85,0x00,0x2a,0x13,0x82,
+ 0x49,0x71,0xc1,0x1e,0x80,0xd6,0x55,0xdb,0x4b,0x98,0xda,0x2c,0xc4,0x92,0xca,0x37,
+ 0x1b,0xd5,0xb9,0xc0,0x03,0x9f,0xd3,0x26,0xb3,0x12,0x07,0x70,0x62,0x63,0xd1,0x89,
+ 0xc7,0x4d,0xbd,0x30,0x2b,0x5a,0x48,0xe7,0xda,0xff,0x00,0x29,0x65,0xce,0x31,0x9e,
+ 0x83,0xd7,0x3e,0xf4,0xcb,0x33,0x04,0x4c,0x43,0x01,0x86,0x03,0x01,0x8f,0x23,0x1c,
+ 0x67,0xd7,0x9a,0xc7,0x9e,0xed,0x76,0x2c,0xb1,0xe5,0x8f,0x27,0x2d,0x82,0x00,0xf4,
+ 0xef,0xfd,0x6a,0xcc,0x16,0xe2,0x4c,0x34,0x4f,0x9e,0x8b,0xc8,0xe9,0xeb,0x5a,0x30,
+ 0xdb,0x97,0x8f,0x70,0x55,0x03,0x38,0xc6,0x73,0x9c,0x77,0xad,0xcb,0x3b,0x04,0x40,
+ 0x02,0x10,0xcc,0x46,0x70,0x39,0xef,0xeb,0x5d,0x5c,0xb7,0xd8,0x96,0xcd,0x5d,0x1b,
+ 0x4f,0x2a,0xea,0xc8,0xa1,0xb2,0x00,0x1e,0xc7,0xe9,0x58,0x1f,0xb4,0x4e,0xa0,0x74,
+ 0x0f,0x85,0x1f,0xd9,0x9e,0x66,0xd9,0xb5,0xbb,0xd8,0x2d,0xb1,0xdc,0xc5,0x17,0xef,
+ 0xe4,0x1f,0x4c,0x26,0x3f,0x1a,0xf5,0x7f,0x0d,0x5a,0x03,0x81,0x2a,0xed,0xc1,0xe3,
+ 0x9e,0xb5,0xf2,0x7f,0xed,0x79,0xe2,0x01,0x3f,0x89,0xf4,0x1f,0x0c,0x46,0xfc,0x69,
+ 0xd6,0x4d,0x75,0x32,0xf5,0xfd,0xe5,0xdb,0xed,0x8f,0x9f,0x64,0x8d,0xbf,0x3a,0xaa,
+ 0x9e,0xe5,0x36,0xcd,0xf0,0xfa,0xc8,0xf9,0x37,0x77,0x21,0x3f,0xda,0xfe,0x95,0xa5,
+ 0x26,0xdf,0x2c,0x1c,0x70,0x46,0x0f,0xe5,0x58,0xad,0x2e,0x5f,0xe5,0xfd,0x6b,0x4e,
+ 0x33,0xe6,0x21,0x0c,0x73,0x8c,0x60,0xf6,0xaf,0x12,0xa2,0xba,0x67,0x63,0x5a,0xdc,
+ 0xd8,0x82,0x43,0xe5,0x28,0x43,0x9f,0x5f,0x6e,0x6b,0xa5,0xd2,0xe5,0x11,0x5e,0x1c,
+ 0xb6,0x73,0xf9,0xe6,0xb8,0xfb,0x69,0x0a,0xc7,0x93,0xd7,0x35,0xab,0x04,0x84,0x4c,
+ 0x08,0x3c,0x83,0x8f,0xce,0xb8,0x2a,0xc5,0x58,0x89,0x46,0xce,0xc7,0xd4,0x9f,0x0e,
+ 0xf5,0xb4,0xb5,0xba,0x58,0x37,0x6e,0x52,0x72,0x7f,0x1f,0x4a,0xf4,0x4f,0x89,0x4d,
+ 0xe6,0x68,0x37,0x32,0x8e,0x37,0x43,0xfc,0xc8,0xaf,0x9e,0xbc,0x0b,0x73,0xe5,0x6a,
+ 0x31,0x34,0xa0,0xfc,0xc4,0x6d,0xc7,0xae,0x6b,0xde,0xbe,0x25,0xb2,0x8f,0x0a,0x19,
+ 0x07,0x1b,0xe3,0x03,0xaf,0xa1,0x15,0xee,0x65,0x35,0x6d,0x87,0xab,0xcc,0xf6,0x5b,
+ 0x1b,0xe0,0xa2,0x9c,0x9a,0x47,0xe6,0x6f,0xc4,0xf1,0x8d,0x54,0x8c,0xe7,0x9a,0xf2,
+ 0x29,0x7e,0xbc,0x57,0xaa,0x7c,0x4a,0x62,0xfa,0xb3,0x75,0xc5,0x79,0x54,0x9d,0xfb,
+ 0xe6,0xbe,0xff,0x00,0x2e,0xff,0x00,0x77,0x81,0xeb,0x51,0x77,0x82,0x29,0x3f,0xb7,
+ 0x4a,0x4b,0x71,0xf3,0x8c,0xf6,0x3f,0x5a,0x49,0x3e,0x5f,0xc0,0x54,0x96,0xa3,0xe6,
+ 0x1e,0xdd,0x6b,0xb1,0x9a,0x37,0xa5,0xcf,0x44,0xd0,0x57,0xee,0xfb,0x62,0xbd,0x22,
+ 0xdd,0x8c,0x6a,0x33,0xd3,0x1d,0x6b,0xcf,0xbc,0x3e,0xbb,0x82,0x81,0xcf,0x6a,0xf4,
+ 0xc8,0x6d,0x1c,0xc4,0x0f,0xf2,0xaf,0x9c,0xc6,0x49,0x26,0xee,0x79,0xf3,0xbb,0x7a,
+ 0x1b,0xda,0x65,0xe6,0x24,0x00,0xf4,0xcd,0x7a,0x3d,0x8c,0xc6,0x44,0x07,0xd6,0xbc,
+ 0xcf,0x4f,0xb3,0x60,0xe3,0x8c,0x57,0xa7,0x69,0x30,0x30,0x55,0x04,0xe2,0xbe,0x76,
+ 0xac,0xd7,0x30,0xd1,0xa4,0xb1,0x36,0x4f,0xad,0x5c,0x8a,0xcd,0x9c,0x8c,0x8a,0xd1,
+ 0x82,0xd8,0x36,0x32,0x39,0xff,0x00,0x1a,0xe8,0x2d,0xad,0x51,0x46,0x08,0xa8,0xf6,
+ 0xad,0xe8,0x26,0xd2,0xdc,0xe7,0x53,0x4b,0x67,0xe7,0x19,0xfa,0x55,0xd8,0x34,0xd3,
+ 0x1b,0x72,0x30,0x3f,0xc2,0xba,0x81,0xe4,0x46,0xb9,0x3f,0xe4,0x56,0x6d,0xc5,0xec,
+ 0x6a,0x70,0x98,0xfc,0x6b,0x1a,0x93,0xb4,0x6e,0xcc,0xe7,0x25,0x6b,0x9a,0x36,0xd1,
+ 0xec,0x8c,0xa8,0x19,0x38,0xae,0x43,0x5c,0xd1,0x9e,0x7d,0xd2,0x81,0xc1,0xea,0x6b,
+ 0xaf,0xd3,0xa5,0x0c,0x7e,0x6a,0xe8,0x9e,0xce,0x29,0xe2,0xe9,0xd7,0xa8,0xaf,0x3d,
+ 0x41,0xdb,0x99,0x18,0x52,0xc4,0x72,0xbb,0xb3,0xe4,0x6d,0x66,0xc6,0x5b,0x52,0xd8,
+ 0xe9,0x5c,0x34,0x92,0x34,0x8f,0xf3,0x70,0x3d,0xab,0xea,0x6f,0x12,0x78,0x5d,0x67,
+ 0x56,0x2a,0xbd,0xb3,0xe9,0x5e,0x0f,0xab,0x78,0x7a,0x4b,0x59,0x49,0x03,0xea,0x31,
+ 0x44,0x54,0x94,0xaf,0x2d,0x8d,0xa5,0x88,0xe7,0xd0,0xca,0xd1,0xec,0x5e,0xf2,0xe6,
+ 0x38,0x23,0x19,0x2c,0x47,0xbd,0x7e,0x97,0xfe,0xcf,0x3f,0x0e,0xd1,0x8c,0x13,0xcb,
+ 0x1f,0xc8,0x80,0x31,0x24,0x57,0xc4,0xdf,0x0a,0xfc,0x36,0xfa,0x86,0xaf,0x19,0x75,
+ 0x27,0x0c,0x00,0x1f,0x8d,0x7e,0xc0,0xfc,0x33,0xd0,0xe3,0xd1,0x34,0x18,0x46,0xdd,
+ 0xae,0xe0,0x67,0x8c,0x71,0x5f,0x9a,0xf8,0x89,0x9c,0xca,0x10,0x58,0x4a,0x6f,0x7d,
+ 0xcf,0xbc,0xe0,0xfc,0xb5,0x49,0xbc,0x44,0xd1,0xe9,0x8f,0x08,0x11,0x2c,0x69,0xf2,
+ 0xc6,0x80,0x00,0x3e,0x95,0x4d,0x10,0x67,0x00,0x71,0x4f,0x9e,0xe7,0xcc,0x3b,0x14,
+ 0xf1,0x51,0x2b,0x94,0x5d,0xd5,0xf8,0xfe,0x17,0x0f,0x6f,0x7d,0x9f,0xa1,0x56,0x9e,
+ 0x96,0x2d,0x4d,0x74,0x2d,0xe1,0xc7,0xf1,0x57,0x28,0x54,0xdc,0xdc,0x66,0x4e,0xf5,
+ 0x7e,0xe2,0x5f,0x31,0xba,0xf4,0x34,0x96,0xc8,0xbb,0x80,0x1c,0x9f,0x5a,0xe7,0xc7,
+ 0x4f,0x9b,0x45,0xd0,0x9a,0x51,0xb2,0xb9,0xd1,0x69,0xb6,0xea,0x14,0x63,0x1c,0x57,
+ 0xa3,0x69,0x80,0x24,0x78,0xae,0x2b,0x4f,0x81,0x80,0x5c,0xd7,0x59,0x03,0xf9,0x71,
+ 0xf1,0xd7,0xbd,0x79,0xaa,0x56,0xd5,0x9d,0x51,0x8f,0x32,0xb2,0x3f,0xff,0xd0,0xf8,
+ 0xc9,0x3c,0xb7,0x8f,0x7e,0x79,0xc7,0xe5,0x55,0xee,0x82,0x4a,0x06,0xdf,0xbd,0xe9,
+ 0xf4,0xaa,0x1a,0x7d,0xc9,0x0c,0x63,0x7e,0xc7,0xa0,0xad,0x09,0xfa,0x79,0x89,0xd3,
+ 0xd0,0xd7,0xe2,0x90,0xbb,0x4c,0xf0,0x5c,0x6d,0x2b,0x0d,0xb5,0x95,0x60,0x6d,0xa4,
+ 0xe3,0xb6,0x6b,0xd0,0xbc,0x35,0x76,0xbf,0xda,0xd6,0x6d,0x1b,0xe3,0xf7,0xf1,0x67,
+ 0x1f,0xef,0x8a,0xf2,0xe9,0xd9,0x7a,0x8c,0x55,0xff,0x00,0x0f,0xea,0x12,0xdb,0xea,
+ 0x16,0xe7,0x3c,0x99,0xa3,0xc7,0xd7,0x70,0xc5,0x72,0x63,0xbd,0xea,0x32,0x83,0xda,
+ 0xc5,0xd2,0x56,0xa8,0xa4,0x7e,0xb3,0x45,0x2f,0x99,0x6b,0x10,0x07,0xa2,0x8e,0x7d,
+ 0xf1,0x50,0xbb,0x93,0xc8,0x38,0x6a,0x9f,0x4e,0x68,0xe4,0xd1,0x51,0x1a,0x3c,0xb8,
+ 0x55,0x7d,0xc3,0xa8,0xe0,0x64,0x56,0x6c,0xa7,0xe6,0x38,0x3f,0xd0,0xd7,0xf2,0x46,
+ 0x63,0x1e,0x5a,0xd2,0x3f,0xa1,0x70,0x6e,0xf1,0x4c,0xb4,0xb3,0x91,0xce,0x7e,0xb5,
+ 0xd2,0xe9,0x12,0x79,0x84,0x8f,0x42,0x2b,0x86,0xf3,0x88,0x23,0xeb,0x5d,0x77,0x87,
+ 0xdc,0xb0,0x73,0xe9,0x8a,0xf3,0x29,0xff,0x00,0x10,0xf4,0xa4,0xbd,0xc3,0xae,0x81,
+ 0xf3,0x75,0x2b,0xe4,0xe1,0x40,0x5f,0xea,0x6a,0x24,0x90,0x92,0x18,0xf2,0x0f,0xeb,
+ 0x50,0xda,0xc8,0x7c,0x9b,0x87,0xf5,0x2d,0x5d,0x47,0x85,0xb4,0x11,0xaa,0xc8,0xb3,
+ 0xde,0x92,0x96,0x91,0x60,0xb1,0xe8,0x64,0x6f,0xee,0xaf,0xf5,0x35,0xe8,0xd2,0x52,
+ 0x9b,0xe5,0x89,0xc9,0x36,0xa2,0xae,0xcb,0x3a,0x35,0xa5,0xed,0xdb,0x05,0xb7,0x89,
+ 0xdf,0x07,0x04,0xa8,0xe0,0x7d,0x4f,0x41,0x5e,0xb9,0xa7,0xde,0xdb,0x78,0x6e,0xd4,
+ 0xa4,0x44,0x35,0xc3,0x8f,0xde,0x37,0xf4,0x1e,0xc2,0xb3,0x2e,0xf5,0xa8,0xec,0x6d,
+ 0xd6,0xc6,0xc5,0x56,0x28,0x54,0x60,0x2a,0x8c,0x74,0xf5,0xf5,0xae,0x16,0xff,0x00,
+ 0x51,0x69,0x5c,0x9c,0xe7,0x2b,0x9c,0xd7,0xa1,0x4e,0x11,0xa0,0xf9,0xa9,0xbb,0xcb,
+ 0xbf,0xf9,0x19,0x72,0x3a,0xca,0xd3,0x5a,0x0b,0xe3,0x4f,0x12,0x4d,0xa9,0x29,0x8c,
+ 0x3f,0x7e,0x82,0xb2,0x7c,0x23,0x7e,0xd6,0x92,0x02,0x1b,0xa9,0xac,0xd9,0x62,0x5b,
+ 0x8c,0x86,0xe7,0x8a,0x6e,0x9b,0x18,0x81,0x89,0x04,0x8c,0x73,0xfa,0xd7,0x66,0x1a,
+ 0xb3,0x53,0xe7,0x91,0x15,0xf0,0xd7,0x56,0x8e,0xc7,0xd3,0x7a,0x4f,0x89,0xb6,0x22,
+ 0xa3,0x38,0xc6,0x06,0x79,0xed,0xde,0x93,0x51,0xb9,0xd1,0xe5,0x76,0x95,0x32,0x4b,
+ 0x73,0xe5,0x83,0x85,0xcf,0xf9,0xed,0x5e,0x37,0x6d,0xab,0x0f,0x2f,0x64,0x4d,0x93,
+ 0x8c,0x7b,0x8a,0xb7,0x0d,0xeb,0x86,0xde,0xcd,0x8f,0x6c,0xd7,0x56,0x37,0x12,0xea,
+ 0x53,0xe5,0x92,0xba,0x5f,0x81,0xe6,0x53,0xc2,0xa8,0x4f,0x9a,0x2e,0xcc,0xee,0xae,
+ 0x34,0xed,0x3f,0x51,0x42,0xb6,0xe4,0x5b,0xdc,0x7f,0x08,0xcf,0xc8,0xde,0xc7,0x3d,
+ 0x33,0xeb,0x5e,0x71,0xa9,0x59,0xcd,0x6d,0x33,0xdb,0xdc,0xc6,0x52,0x45,0x3d,0x0f,
+ 0x6f,0xfe,0xb7,0xbd,0x69,0xc9,0xa9,0x49,0x1b,0x86,0x53,0x8c,0x7b,0xf1,0x5d,0x85,
+ 0x9d,0xce,0x95,0xe2,0x3b,0x31,0x67,0xaa,0x80,0x27,0x8c,0x61,0x25,0x1f,0x78,0x7e,
+ 0x3d,0xc7,0xb1,0xaf,0x19,0x51,0x85,0x5d,0x23,0x65,0x2f,0xc1,0x9d,0xb1,0xab,0x3a,
+ 0x5a,0xcb,0x55,0xf8,0xa3,0xcb,0x34,0xed,0xc9,0x77,0xe5,0xa8,0xc0,0x60,0x7f,0x11,
+ 0xe9,0x53,0xdd,0x1f,0x2e,0x74,0xb9,0x3f,0xc6,0xbb,0x5b,0xea,0x2b,0x6f,0x52,0xd0,
+ 0x2f,0x74,0x6b,0xc4,0x91,0xd7,0xcc,0x81,0x8f,0xc9,0x32,0x72,0xa7,0x3e,0xfd,0x8f,
+ 0xb5,0x61,0x6a,0x0c,0xdb,0x25,0x4c,0xfd,0xd6,0xdc,0x3f,0x1a,0xe1,0xc5,0x46,0x50,
+ 0x4d,0x4d,0x6a,0x8e,0xda,0x72,0x8c,0x9a,0x94,0x1e,0xe5,0x06,0x94,0xe6,0xb5,0x74,
+ 0xd9,0xf1,0x70,0x87,0xdc,0x0a,0xe6,0xbc,0xed,0xd9,0x3f,0x8d,0x5c,0xb3,0x9f,0x0c,
+ 0x8f,0xd3,0x04,0x1a,0xf9,0xda,0xb2,0xb4,0xd4,0xbc,0xcf,0x62,0x8c,0x2f,0x0e,0x53,
+ 0xd6,0xa3,0x58,0x76,0xef,0x21,0x79,0xe9,0x9e,0xff,0x00,0xa5,0x54,0xba,0xb8,0x40,
+ 0xbb,0x14,0x06,0xc5,0x47,0x05,0xfc,0x13,0xc6,0xa1,0xe4,0x3b,0x88,0xe8,0x57,0xfa,
+ 0x8a,0xad,0x79,0x1c,0x6a,0x85,0x95,0xfb,0x70,0x6b,0xf4,0x7a,0x72,0x4e,0x29,0xc4,
+ 0xf9,0x1a,0x91,0xb4,0xac,0xcf,0xcf,0x7f,0xda,0x7b,0x4a,0x37,0x1e,0x3c,0xd1,0xee,
+ 0x22,0x4f,0xf8,0xf8,0xb5,0x78,0x87,0xd5,0x64,0x1f,0xfc,0x55,0x7c,0xe7,0xf1,0x1f,
+ 0x51,0x10,0xcf,0x6d,0xe1,0x98,0x18,0x08,0x74,0xf8,0xc2,0x36,0xde,0x86,0x53,0x83,
+ 0x21,0xfa,0xe7,0x8f,0xc2,0xbe,0xe5,0xf8,0xe5,0xa5,0x43,0x25,0xfe,0x8f,0xaf,0x4d,
+ 0x83,0x1e,0x9e,0xd3,0xbb,0x9f,0xf7,0x63,0xde,0x07,0xe2,0xca,0x2b,0xf3,0x6f,0x59,
+ 0xb9,0x3a,0x8e,0xa9,0x71,0x79,0x31,0xcb,0x4b,0x21,0x62,0x49,0xee,0x4e,0x6b,0xf4,
+ 0xbc,0xbb,0x16,0xea,0xe5,0xd8,0x7a,0x37,0xda,0xf7,0xf9,0x3d,0x0f,0xcd,0x38,0x86,
+ 0x87,0xb3,0xc6,0x55,0x9f,0xf3,0x5b,0xf2,0x21,0x2e,0x22,0x8f,0x70,0xfa,0x7f,0x8d,
+ 0x66,0x5c,0x4a,0xec,0x49,0x1c,0xe4,0xe6,0xb4,0x26,0x01,0x21,0x55,0x3c,0x9c,0x67,
+ 0x27,0xfc,0x2b,0x19,0xe5,0x46,0x93,0x81,0x8c,0x03,0x8f,0xad,0x7a,0x74,0x22,0xf9,
+ 0xae,0x8f,0x99,0x9e,0x85,0x79,0x70,0xb8,0x7c,0xe7,0x3d,0x79,0xa8,0x24,0x29,0xc6,
+ 0xde,0xe7,0x3d,0x29,0xd7,0x2e,0xaa,0xa5,0x57,0xb7,0xf9,0xcd,0x56,0x52,0x18,0x29,
+ 0xea,0x05,0x7a,0xb4,0xaf,0x6d,0x88,0x65,0x67,0x60,0x1f,0x68,0xea,0x4f,0xe9,0x55,
+ 0xee,0xdc,0x90,0x47,0xe3,0x56,0x48,0x0f,0x37,0x5e,0x49,0xe3,0xde,0xa8,0xdf,0x14,
+ 0x53,0xb4,0x1e,0x7a,0x57,0xa3,0x87,0xb3,0xe8,0x2b,0x19,0xc0,0x9e,0xfd,0xaa,0x06,
+ 0x6c,0xa3,0xe7,0xaf,0xf4,0xa6,0x99,0x0e,0xe6,0x5e,0x9c,0xf5,0xed,0x4c,0x19,0x21,
+ 0x81,0xf4,0xe6,0xbd,0x68,0xe8,0xb5,0x05,0xa9,0x11,0x90,0x82,0x06,0x6a,0xd8,0xcf,
+ 0x96,0x39,0xc6,0x45,0x56,0x31,0xe0,0xee,0x1d,0xf3,0x8a,0x9c,0xb6,0x50,0x2d,0x75,
+ 0x53,0x57,0x5a,0x14,0xf4,0x2c,0x02,0x0e,0x0f,0x61,0xd2,0xb5,0xed,0x9b,0x79,0x03,
+ 0xd4,0x56,0x30,0x20,0xb0,0x1d,0xab,0x5a,0x05,0xc8,0x04,0x56,0x91,0xd2,0x48,0xa5,
+ 0x7e,0x84,0xe1,0x42,0xca,0x39,0xe3,0x3d,0x2b,0xd2,0xbc,0x1f,0xff,0x00,0x21,0x08,
+ 0x4f,0x60,0xd5,0xe6,0xe0,0x61,0x87,0xe1,0x5e,0x8d,0xe1,0x0c,0xff,0x00,0x68,0x42,
+ 0x07,0x72,0x3f,0x4a,0xe8,0x85,0xbd,0xaa,0xb1,0x8e,0x21,0xfe,0xea,0x47,0xe8,0x8f,
+ 0xc3,0x09,0x24,0xd4,0xbc,0x1a,0x6d,0x8e,0x09,0xb1,0xb9,0x65,0xe7,0xae,0xc9,0xc6,
+ 0xe1,0xf8,0x64,0x1a,0xd1,0xd5,0x2c,0xa5,0x45,0x65,0x61,0xb7,0x1c,0xfd,0x79,0xac,
+ 0x1f,0x82,0x32,0xa8,0xbd,0xb8,0xd2,0xa5,0x3f,0x25,0xf4,0x04,0x28,0x3c,0x7e,0xf2,
+ 0x2f,0x9d,0x3f,0x3e,0x45,0x7a,0xae,0xb7,0xa6,0x96,0xb7,0x2f,0x1a,0x64,0x60,0xe7,
+ 0xb6,0x07,0xbd,0x7d,0x24,0xe9,0xa6,0xd4,0x97,0x63,0xc2,0x92,0xd1,0x33,0xe7,0x0d,
+ 0x5a,0xce,0x3f,0x32,0x52,0x9c,0x9e,0xa3,0xfc,0xf5,0xaf,0x3f,0xd4,0x74,0xf9,0x5d,
+ 0x5c,0x42,0x57,0x07,0x20,0xf1,0xd3,0xeb,0x5e,0xbd,0xac,0x59,0xb4,0x33,0x9c,0xfd,
+ 0xd6,0x5c,0x11,0xd0,0xf1,0xd7,0x83,0x5c,0x2b,0xc5,0x13,0xbb,0x05,0x7f,0x9b,0x9e,
+ 0x87,0x1d,0x38,0xae,0x7a,0xeb,0x9a,0x3c,0xa5,0xc2,0x47,0x9f,0xdc,0xd9,0x95,0x46,
+ 0x79,0x18,0x2e,0x54,0x67,0x1c,0x8f,0xca,0xb3,0xed,0xf4,0xe8,0x9c,0xf9,0x9b,0x03,
+ 0x83,0x8e,0x4f,0x5c,0xfd,0x2b,0xb9,0xbd,0xd3,0x8c,0x9b,0x4c,0x6a,0x36,0x9c,0x7d,
+ 0xf3,0xd4,0x81,0x83,0x8a,0xca,0xb6,0xb2,0x54,0x6c,0xa6,0x51,0x81,0xc6,0x05,0x44,
+ 0x21,0xaa,0x56,0x2c,0x8a,0x38,0x15,0x23,0x08,0x17,0x69,0xcf,0xcb,0x8e,0xff,0x00,
+ 0xe1,0x5b,0xf6,0x36,0x45,0x64,0x59,0x31,0xcf,0xa7,0x6a,0xa7,0xe4,0x32,0x26,0x24,
+ 0xf9,0x81,0x3f,0x4f,0xd6,0xba,0x9d,0x2a,0x1f,0x94,0x30,0xc9,0x07,0xa0,0xae,0x8e,
+ 0x56,0x96,0xc3,0x7a,0x1d,0x9f,0x87,0x2d,0xe3,0x32,0x99,0x1f,0x3f,0x2f,0xe4,0x07,
+ 0xd6,0xbf,0x2c,0xbe,0x2c,0xf8,0xa4,0x78,0xbb,0xe2,0x1e,0xbd,0xe2,0x05,0x62,0xf0,
+ 0xcb,0x7b,0x24,0x36,0xfe,0x82,0x0b,0x6f,0xdc,0xc7,0x8f,0x62,0x13,0x70,0xff,0x00,
+ 0x7a,0xbf,0x48,0xbe,0x25,0x78,0x82,0x2f,0x02,0xfc,0x2f,0xd7,0x3c,0x47,0x03,0xf9,
+ 0x77,0x46,0xd5,0xa0,0xb6,0x04,0xf5,0xb8,0xb9,0xfd,0xd4,0x60,0x7e,0x2d,0x9f,0xc2,
+ 0xbf,0x24,0xf6,0xec,0x45,0x50,0x72,0xab,0x80,0x09,0xf4,0xc7,0x7a,0xe2,0xc7,0x54,
+ 0xb2,0x8c,0x11,0xdb,0x84,0x8e,0xf2,0x2c,0x1f,0x96,0x45,0x71,0xdf,0xf4,0xcd,0x68,
+ 0x5b,0xb6,0xec,0xee,0x1f,0x2f,0x0d,0xf5,0xaa,0x03,0x24,0x29,0x60,0x0f,0xf9,0xf5,
+ 0xab,0x96,0xea,0x0b,0xfb,0x11,0x8c,0x1c,0xd7,0x9e,0xd2,0x3b,0x6d,0x6d,0x8b,0xd0,
+ 0xb6,0x15,0x83,0x1e,0x33,0xd3,0xe9,0x53,0x2d,0xc1,0x42,0x17,0x3c,0xd5,0x65,0xc6,
+ 0xf2,0x31,0x80,0x41,0xe2,0x9f,0x26,0xd0,0x43,0x0f,0xc0,0xfb,0xd7,0x25,0x58,0xdf,
+ 0x50,0x6a,0xfa,0x1e,0xc5,0xe0,0xfb,0x86,0x32,0xc4,0xdb,0xf9,0xdc,0x3e,0xbd,0x6b,
+ 0xe8,0x5f,0x1e,0xdc,0x89,0x7c,0x0d,0x18,0x27,0x27,0x24,0x16,0xff,0x00,0x80,0x64,
+ 0x57,0xca,0xde,0x11,0xbe,0x78,0xe7,0x8f,0x60,0xfe,0x21,0xd7,0x9a,0xfa,0x3b,0xc5,
+ 0x33,0x09,0xbc,0x16,0x85,0x78,0x5d,0xe4,0x15,0xf4,0x3b,0x0d,0x3c,0x2c,0x9a,0x52,
+ 0xb7,0x6b,0x1b,0xe5,0xea,0xd5,0xec,0x7e,0x77,0x7c,0x44,0xcf,0xf6,0x99,0x15,0xe5,
+ 0xf2,0xe3,0x9c,0x57,0xa6,0xfc,0x42,0x2a,0x75,0x52,0x17,0x9a,0xe0,0xa2,0xb3,0x7b,
+ 0x86,0xc6,0x0d,0x7e,0xa7,0x97,0x4a,0xd8,0x58,0x3f,0x23,0xae,0x8b,0xf7,0x51,0x8a,
+ 0x62,0x79,0x0e,0x17,0x9a,0xd8,0xd3,0xb4,0xc7,0x67,0x04,0x8c,0xd7,0x55,0xa7,0x78,
+ 0x7d,0xe5,0x20,0x6d,0xaf,0x47,0xd2,0x7c,0x2d,0x80,0x19,0x85,0x61,0x8c,0xcc,0x23,
+ 0x4d,0x34,0x8a,0x9c,0xd5,0xb5,0x28,0x78,0x6f,0x49,0x60,0x07,0xcb,0x83,0x9a,0xf5,
+ 0x6b,0x4d,0x2c,0x04,0x00,0x80,0x69,0xb6,0x1a,0x7c,0x36,0x91,0x8d,0xc0,0x64,0x62,
+ 0xb6,0xd2,0x7d,0xa7,0x6a,0x0e,0x95,0xf2,0xf8,0x8c,0x4c,0xaa,0x36,0xd1,0xe7,0xd4,
+ 0xaa,0x93,0xb1,0x3d,0xad,0x84,0x6a,0x77,0x10,0x05,0x74,0xf6,0x82,0x38,0xc0,0x0b,
+ 0xc9,0xae,0x76,0x07,0x2c,0xc3,0x3c,0xe7,0xad,0x6f,0xda,0xa8,0x04,0x1c,0xd6,0x11,
+ 0xa5,0x7d,0x59,0xcd,0x2a,0xaf,0x74,0x74,0x56,0xf2,0x1e,0xb8,0xfc,0xeb,0x41,0x66,
+ 0x28,0xb9,0x3e,0x99,0xac,0xc8,0xdd,0x51,0x47,0xe7,0x54,0xef,0x6f,0x02,0xae,0x03,
+ 0x53,0x9c,0x63,0x15,0xb0,0xd3,0x6f,0x56,0xcb,0x57,0xba,0xa0,0x51,0x80,0x71,0x8e,
+ 0xb5,0x83,0xfd,0xa0,0x5d,0xf9,0x35,0xcf,0xdf,0x5e,0xb3,0x1f,0xad,0x54,0x86,0x76,
+ 0xdd,0xc7,0x4c,0xf4,0x35,0xe3,0x56,0x9b,0x93,0xdc,0x99,0xcb,0xb1,0xea,0xba,0x6d,
+ 0xe8,0x18,0xc9,0xae,0xe6,0xd6,0xfc,0x00,0x01,0x35,0xe3,0x16,0x37,0xa5,0x4a,0xfb,
+ 0xd7,0x69,0x61,0x7c,0x70,0x3b,0xfe,0x94,0xa9,0xdf,0x63,0x9d,0x9d,0xec,0xbe,0x5c,
+ 0xe8,0x41,0xe4,0x9a,0xf3,0x9d,0x7f,0x41,0x8e,0x7c,0x95,0x5e,0xf5,0xd6,0xc1,0x75,
+ 0x90,0x01,0xe2,0xaf,0x43,0x10,0xbb,0x95,0x53,0x1d,0xc7,0x5a,0xee,0x4a,0xf0,0x7c,
+ 0xc3,0x8f,0xc4,0x8e,0x9f,0xe0,0xb7,0x83,0x40,0xd4,0x20,0xcc,0x7f,0xc4,0x0e,0x71,
+ 0x5f,0xa2,0x10,0x94,0xb6,0xb5,0x8e,0x14,0xfe,0x15,0x02,0xbe,0x71,0xf8,0x4f,0xa3,
+ 0xad,0xb9,0x17,0x1b,0x71,0xb0,0x71,0x5e,0xfe,0x19,0x9b,0x8a,0xfe,0x71,0xe2,0xda,
+ 0xae,0xb6,0x65,0x34,0xde,0xc7,0xee,0x79,0x05,0x2f,0x63,0x82,0x8a,0x2f,0x24,0x80,
+ 0x67,0x3c,0xd2,0x4f,0x71,0x91,0x81,0xd6,0xa8,0xc9,0x30,0xdc,0x40,0xaa,0x8d,0x31,
+ 0xe7,0xd0,0x57,0xcd,0xd5,0x6a,0x11,0xb2,0x3d,0x65,0xef,0x4b,0x52,0xd4,0xb2,0x63,
+ 0xbe,0x6a,0x6b,0x19,0xf6,0xb8,0x24,0xf2,0x4d,0x60,0xc9,0x31,0x66,0xce,0x73,0x56,
+ 0x6c,0xe7,0x42,0xfc,0xf5,0xaf,0x07,0x15,0x57,0xaa,0x3a,0xe1,0x1b,0xbb,0x1e,0x93,
+ 0x69,0x78,0xaa,0x06,0x48,0xcd,0x6f,0x0b,0xc4,0x31,0xf2,0x47,0x22,0xbc,0xd5,0x67,
+ 0x28,0xbb,0xb2,0x71,0x5a,0x16,0xd7,0x8e,0xf8,0x62,0xdf,0x41,0x5e,0x7c,0xab,0x3b,
+ 0x58,0xf4,0x29,0xd2,0x48,0xff,0xd1,0xf8,0x73,0x58,0xd3,0xa4,0xd2,0xf5,0x19,0x21,
+ 0x20,0x8c,0x31,0x23,0xfa,0x52,0xc7,0x23,0x32,0x93,0x9c,0xe4,0x7e,0x55,0xec,0x7f,
+ 0x12,0x3c,0x27,0x7f,0x67,0x2c,0xd1,0xdf,0xdb,0x3c,0x17,0x76,0xac,0x63,0x9d,0x18,
+ 0x60,0xab,0x0f,0x5f,0x71,0x5e,0x1f,0x03,0x18,0xa6,0x31,0x3f,0x5a,0xfc,0x62,0xb4,
+ 0x1c,0x65,0xa9,0xe3,0xd4,0x5d,0x49,0x65,0x56,0x23,0x27,0xbf,0x6a,0xaf,0x66,0xcd,
+ 0x6f,0x77,0x0c,0xb8,0xfb,0x92,0xa3,0x11,0x8f,0xee,0xb0,0x35,0xa1,0x21,0x0c,0x30,
+ 0x3d,0x39,0xc7,0x6a,0xa5,0xf2,0xab,0x85,0x7e,0xbf,0xd6,0xb9,0xab,0x45,0x49,0x38,
+ 0x93,0x19,0x58,0xfd,0x63,0xd0,0xf5,0x03,0x2e,0x97,0x16,0xcc,0x91,0x2c,0x2b,0xd3,
+ 0xd0,0xad,0x24,0xb2,0x64,0x60,0x9c,0x9e,0xd5,0xc3,0x7c,0x34,0xd6,0x46,0xa3,0xe1,
+ 0x1d,0x26,0xf4,0x72,0x5a,0xda,0x30,0xdf,0x55,0x18,0x3f,0xca,0xbb,0x2b,0xc7,0x55,
+ 0x95,0xb6,0xf0,0x3b,0x77,0xe0,0xd7,0xf2,0x86,0x79,0x46,0x54,0xf1,0x33,0x83,0xe8,
+ 0xda,0x3f,0x7e,0xca,0xaa,0x2a,0x94,0xa0,0xd7,0x54,0x99,0x06,0xfd,0xa4,0x8c,0xd7,
+ 0x5f,0xe1,0xa9,0x32,0x26,0x07,0xb6,0x0d,0x70,0xa5,0xce,0xe2,0x73,0xd6,0xbb,0xff,
+ 0x00,0x03,0xd8,0x4b,0x7f,0x24,0xec,0x72,0xb0,0x26,0xdf,0x32,0x4f,0x4c,0xf4,0x03,
+ 0x3d,0x49,0xf4,0xaf,0x0a,0x10,0x94,0xea,0xa8,0xc1,0x6a,0x7b,0x55,0x1a,0x85,0x36,
+ 0xd9,0xdc,0xf8,0x6f,0x4f,0xfe,0xd2,0x2e,0x26,0x3b,0x60,0x0c,0x4c,0x8d,0xd3,0x23,
+ 0xfb,0xa3,0xdc,0xd7,0xa5,0x4f,0x7d,0x0d,0xbd,0xba,0xdb,0xdb,0x0d,0x91,0xa0,0x0a,
+ 0x80,0x74,0x02,0xb8,0x49,0x2e,0x60,0xb0,0x8c,0x5a,0xd8,0x82,0x91,0xa7,0xe2,0x49,
+ 0xf5,0x27,0xb9,0xaa,0x0f,0xab,0x4b,0x8c,0x13,0x9f,0x7a,0xf7,0x69,0xd0,0xf6,0x51,
+ 0xe4,0x5b,0xf5,0x3c,0xbf,0x69,0xcd,0x2e,0x76,0x75,0x13,0x5d,0x17,0xcf,0x39,0x35,
+ 0x95,0x24,0xa3,0x18,0xee,0xbc,0x57,0x3d,0xfd,0xab,0x21,0x90,0x8f,0xc6,0xaa,0xc9,
+ 0xa9,0x48,0xa1,0x80,0xe3,0x3c,0xd5,0x7b,0x27,0x62,0xbe,0xb0,0x8e,0x9e,0x29,0x14,
+ 0x72,0xc7,0xb6,0x79,0xac,0x1b,0xad,0x40,0x46,0xc5,0x10,0xf2,0x57,0x02,0xa0,0x1a,
+ 0x96,0x10,0x9c,0xf3,0xb7,0xf5,0xae,0x7e,0xe2,0x67,0x33,0xee,0x39,0x39,0xeb,0xfc,
+ 0xeb,0x6a,0x30,0x7b,0x30,0x75,0x93,0xd2,0x27,0x61,0xa5,0x6a,0x04,0x4a,0x77,0x36,
+ 0x32,0x3e,0xb5,0xde,0x29,0x59,0xa1,0x13,0x29,0x07,0x1c,0xe4,0x57,0x8b,0xdb,0x5d,
+ 0xaa,0x49,0xc8,0xc0,0xff,0x00,0x39,0xaf,0x46,0xd3,0x35,0x31,0xf6,0x73,0x08,0x3c,
+ 0x00,0x00,0xae,0x95,0x15,0x24,0xe0,0xce,0x69,0xde,0xea,0x44,0x97,0x37,0x8d,0x1c,
+ 0xa5,0x73,0xb4,0x7d,0x79,0xab,0x76,0x9a,0xbb,0xc0,0xea,0x54,0xe0,0x8e,0xf5,0x8f,
+ 0x72,0x03,0x65,0xf9,0x24,0x73,0xcf,0x63,0x58,0xaf,0x73,0xe5,0xb1,0x52,0x41,0x3e,
+ 0xc7,0xa5,0x78,0xb3,0x4e,0x33,0xb3,0x36,0xb2,0x68,0xfa,0x2b,0x44,0xf1,0x1a,0x5e,
+ 0xdb,0xfd,0x8e,0xe8,0x09,0x22,0x71,0x86,0x56,0x19,0x15,0xca,0x78,0xbb,0x45,0x3a,
+ 0x6b,0x7d,0xb2,0xd7,0x32,0x5a,0xcc,0x08,0x07,0xa9,0x46,0xfe,0xe9,0xfe,0x86,0xbc,
+ 0xfb,0x49,0xd7,0x1a,0xd2,0x45,0xea,0x54,0x9e,0x79,0xaf,0x68,0xd2,0xf5,0x4b,0x3d,
+ 0x56,0xcd,0xad,0x2e,0x86,0xf8,0x66,0x5d,0xac,0xbe,0x99,0xee,0x3d,0xf3,0xd2,0xbb,
+ 0x79,0x63,0x8a,0xa4,0xe9,0x4d,0xfb,0xdd,0x19,0xcf,0x16,0xe8,0x54,0xe6,0x8e,0xdd,
+ 0x4f,0x0a,0x59,0x70,0xf5,0x76,0xde,0x51,0xb8,0x10,0x69,0x7c,0x4d,0xa3,0x5d,0x78,
+ 0x77,0x51,0x36,0xd3,0xfc,0xd1,0x3f,0xcf,0x0c,0x98,0xc0,0x74,0x3d,0xfe,0xa3,0xb8,
+ 0xf5,0xac,0x88,0x2e,0x00,0x23,0x9a,0xf8,0xbc,0x4d,0x39,0x53,0x9c,0xa1,0x35,0x66,
+ 0x8f,0xaa,0xc2,0xc9,0x4e,0x2a,0x51,0xd8,0xf4,0x9d,0x32,0x6d,0xcb,0x85,0x50,0xc4,
+ 0x76,0x3d,0x6b,0x51,0xd6,0x59,0x10,0xf9,0x89,0xc7,0xd7,0x35,0xc8,0x69,0x57,0x12,
+ 0x19,0x14,0xc4,0x79,0xe8,0x45,0x76,0x72,0x33,0x47,0x0e,0x5d,0xf6,0x93,0xed,0xfd,
+ 0x0d,0x7d,0x96,0x4d,0x5d,0x55,0xc3,0xc5,0xf6,0xd0,0xf9,0xec,0xd2,0x9b,0xa7,0x59,
+ 0xf9,0x9f,0x34,0xfe,0xd0,0x8a,0xd0,0x78,0x16,0xfa,0x48,0x17,0x05,0x30,0x49,0xce,
+ 0x78,0x3c,0x1f,0xe7,0x5f,0x98,0x26,0x1d,0xed,0xc6,0x49,0x24,0xe7,0xf1,0xaf,0xd4,
+ 0xaf,0x8e,0x90,0xbd,0xdf,0x82,0x35,0x68,0x47,0xcc,0x7e,0xce,0xed,0x90,0x3d,0x39,
+ 0xfe,0x95,0xf9,0x86,0xaa,0x55,0xb9,0x1d,0x73,0xcf,0xf2,0xaf,0xd0,0xf2,0x09,0xda,
+ 0x9c,0x91,0xf9,0x8f,0x15,0xaf,0xdf,0x41,0xf7,0x46,0x35,0xcb,0x30,0x3e,0x51,0x07,
+ 0xbd,0x63,0xf2,0xa5,0x88,0x18,0xad,0xe9,0xcf,0xce,0xef,0xd7,0x1c,0x67,0xf9,0xd6,
+ 0x2d,0xd0,0xf9,0x8e,0x33,0x8f,0xa7,0x6c,0x57,0xd8,0x61,0xe7,0xa6,0xc7,0xc6,0x4f,
+ 0x56,0x67,0x4c,0xc5,0xb2,0xd8,0xe3,0x81,0xcd,0x45,0x90,0xa0,0x77,0xd9,0x9f,0xd6,
+ 0xa2,0x76,0x70,0xc0,0x63,0xe5,0x34,0xe9,0x4a,0x86,0x18,0xef,0x5e,0xb5,0x35,0x65,
+ 0x62,0x4a,0x85,0x98,0x4c,0x5c,0xe7,0xe9,0xdf,0x35,0x4a,0xe9,0xf7,0x31,0x62,0x06,
+ 0x6a,0xca,0xc8,0xbb,0xd8,0xb1,0x1c,0xf1,0x9a,0xce,0xba,0x6c,0x64,0x02,0x70,0x45,
+ 0x77,0xd0,0x57,0x48,0x76,0xd0,0xa8,0xbb,0x8f,0x3d,0xbd,0x69,0xe3,0x80,0x45,0x46,
+ 0xcf,0x85,0x50,0x78,0xff,0x00,0xeb,0x54,0x31,0xcd,0x9e,0x0f,0xaf,0xd3,0xbd,0x7a,
+ 0x91,0xb3,0x40,0xac,0x58,0x90,0xfc,0xb9,0xec,0x01,0xcd,0x20,0xe5,0x15,0xbf,0x3a,
+ 0xad,0x33,0x3c,0x9b,0xf6,0x1c,0x62,0xa5,0x8c,0x7e,0xe5,0x72,0x72,0x41,0xae,0xb8,
+ 0xe8,0xb4,0x02,0xd4,0x7f,0x78,0x56,0xd5,0xa9,0xe3,0x04,0xf7,0xe9,0x58,0x90,0x1c,
+ 0x30,0xcf,0x35,0xb3,0x03,0x83,0x85,0xe8,0x07,0x5c,0x73,0x46,0xaf,0x74,0x08,0xbe,
+ 0xdc,0xe3,0xde,0xbd,0x27,0xc1,0x69,0x9d,0x46,0x06,0xf7,0x15,0xe6,0xb8,0xc2,0x64,
+ 0x7d,0xec,0xd7,0xa3,0xf8,0x0e,0x5c,0xea,0x11,0x23,0x7f,0x78,0x57,0x55,0x3d,0x2a,
+ 0x45,0x99,0xd5,0x57,0x83,0x3e,0xd3,0xf0,0x5d,0xec,0x9a,0x4c,0xd0,0x6a,0x10,0x9c,
+ 0x3c,0x2e,0xae,0xbf,0x55,0x39,0xfd,0x7a,0x57,0xd7,0x17,0x7e,0x5e,0xa5,0x66,0x97,
+ 0x76,0xc0,0x34,0x17,0x71,0x2c,0xc8,0x7d,0x15,0xc6,0xec,0x71,0xe8,0x72,0x2b,0xe3,
+ 0x5b,0x69,0x3e,0xcf,0x66,0xbb,0x7f,0xbb,0x5e,0xff,0x00,0xf0,0xab,0xc4,0x8f,0xaa,
+ 0x68,0xb7,0x3a,0x14,0xd2,0x06,0x9b,0x4e,0x6f,0x36,0x20,0x4f,0x26,0x19,0x0f,0x23,
+ 0xe8,0xad,0xf9,0x03,0x5e,0xea,0xaf,0x7a,0x8a,0x07,0x91,0x6d,0x0e,0x6b,0xc5,0xda,
+ 0x62,0x23,0x6f,0x8b,0x80,0x0e,0x30,0x06,0x30,0x3b,0x1c,0xd7,0x93,0xcb,0x6c,0x32,
+ 0xde,0x5a,0x90,0xce,0x49,0x24,0xf3,0x9c,0x7b,0xd7,0xbb,0xf8,0xb6,0xca,0x52,0xec,
+ 0xed,0x21,0x08,0xa7,0x01,0x41,0xe3,0xd6,0xbc,0xc6,0x68,0x51,0x24,0x25,0xb8,0x2b,
+ 0xdf,0xbd,0x39,0xcd,0x73,0x58,0xe7,0xd9,0x9c,0x14,0xb6,0xf1,0xcd,0x12,0x96,0x66,
+ 0x46,0x43,0x9c,0x0e,0x87,0x9c,0x7e,0x15,0x98,0xaa,0x11,0xc3,0xa0,0xf9,0x73,0xc1,
+ 0xef,0x5d,0x4e,0xa1,0x16,0xd2,0x5d,0x33,0xbb,0xb1,0xe9,0x9a,0xa1,0x02,0x61,0x00,
+ 0x6c,0x65,0x48,0xe7,0xeb,0xd7,0x20,0xd2,0x4d,0xa6,0x8d,0x79,0x8c,0xe8,0xed,0xf7,
+ 0xb1,0xc0,0x24,0xb1,0xef,0xdb,0xde,0xbb,0x0d,0x2e,0xd3,0x2d,0x94,0x1c,0x60,0x60,
+ 0x8e,0x3a,0xfb,0x56,0x2a,0x43,0xe6,0x36,0xd8,0xf0,0xef,0xbb,0xa8,0x1c,0x57,0x6b,
+ 0xa2,0xda,0xc8,0xcc,0xc5,0x86,0xdd,0xa3,0x92,0x78,0xad,0xf7,0xd0,0x7e,0x87,0xc9,
+ 0xdf,0xb5,0xff,0x00,0x8a,0x02,0x59,0xe8,0x1e,0x08,0xb5,0x38,0x2d,0xbf,0x52,0xba,
+ 0x03,0xd1,0x47,0x95,0x00,0x61,0xee,0x4b,0x30,0xff,0x00,0x76,0xbe,0x1a,0x44,0x2c,
+ 0x9b,0x5b,0xf8,0x4d,0x7a,0x97,0xc6,0x5f,0x16,0x7f,0xc2,0x5f,0xf1,0x13,0x5a,0xd6,
+ 0x23,0x7d,0xd6,0xeb,0x70,0x6d,0x2d,0xb1,0xd0,0x41,0x6b,0xfb,0xb5,0x03,0xd8,0xb0,
+ 0x66,0xfc,0x6b,0xcb,0xed,0xf2,0xce,0xc0,0x7a,0x1e,0x7f,0x5a,0xf1,0x31,0x55,0x39,
+ 0xa6,0xdf,0x63,0xda,0xa3,0x1e,0x58,0x24,0x48,0x14,0x0c,0x29,0xe7,0x07,0x8f,0xa5,
+ 0x4f,0x10,0x64,0x75,0xc0,0xe0,0x1a,0xa9,0x20,0x70,0xe7,0xd7,0x1d,0x6a,0xec,0x24,
+ 0x81,0x91,0xfe,0x7e,0x95,0x0d,0xf6,0x2c,0xb4,0xbf,0x7b,0x27,0xa0,0x3c,0x7e,0x35,
+ 0x71,0x63,0xf3,0x2d,0xcb,0xfb,0xd5,0x69,0x54,0x81,0x9e,0xb8,0x23,0xf0,0xab,0xf6,
+ 0x63,0x2b,0x22,0xb9,0xc0,0xc6,0x00,0xfa,0xf4,0xac,0x54,0xfd,0xeb,0x77,0x1c,0x9b,
+ 0xd0,0xbd,0xa1,0x5c,0x3c,0x37,0x38,0x1e,0xa2,0xbe,0x91,0x7b,0xa7,0xbd,0xf0,0x0d,
+ 0xd3,0x64,0xb3,0x44,0x55,0xcf,0xb7,0x38,0x35,0xf3,0x2e,0x9e,0x5a,0x3b,0xbc,0xf6,
+ 0x06,0xbe,0x8b,0xf0,0xf3,0xad,0xc7,0x85,0x75,0x4b,0x61,0x9c,0x35,0xbb,0x91,0xff,
+ 0x00,0x01,0x19,0xfe,0x75,0x85,0x25,0x69,0xee,0x6b,0x87,0x97,0x2d,0x65,0x26,0x7c,
+ 0x3d,0xe2,0x6b,0x67,0xbb,0xd6,0x18,0x1e,0x70,0x4f,0x4a,0xb9,0xa4,0xe8,0x26,0x52,
+ 0x32,0xbc,0x57,0x58,0xfa,0x61,0x9f,0x53,0x91,0xc8,0xe0,0x1a,0xeb,0x6d,0x6d,0xa3,
+ 0xb4,0x4e,0x9c,0x8a,0xfb,0x6a,0xb9,0x8f,0x25,0x18,0xc2,0x05,0xce,0xa2,0x8c,0x75,
+ 0x29,0xe9,0xfa,0x34,0x36,0xc8,0xbb,0xc0,0x02,0xb6,0xc4,0x91,0xc4,0x00,0x84,0x63,
+ 0x1d,0xcd,0x52,0x92,0x62,0xc7,0x93,0x80,0x3b,0x54,0x5e,0x61,0xc0,0xe6,0xbc,0x87,
+ 0x37,0x37,0x79,0x1c,0x75,0x2b,0x36,0xf4,0x34,0x96,0x4d,0xc7,0x9e,0xb5,0x75,0x0e,
+ 0xee,0x9d,0x6b,0x19,0x25,0x3c,0x0c,0xd5,0xf8,0x64,0x27,0xae,0x6b,0x68,0xa5,0xb1,
+ 0x94,0xaf,0xd4,0xda,0xb7,0xe1,0xba,0xf5,0xfe,0x75,0xd0,0x41,0x2e,0xd5,0x04,0xf5,
+ 0x1e,0xbc,0x57,0x2f,0x0b,0x90,0x40,0xc7,0x4a,0xb8,0xb7,0x07,0x1c,0x1e,0xbc,0x50,
+ 0xe6,0x93,0xb0,0xa2,0x93,0xd0,0xe9,0x5a,0xef,0x6a,0x9c,0x1f,0x7f,0xa5,0x62,0x5d,
+ 0x5c,0x97,0xc8,0xce,0x7e,0x9e,0xf5,0x13,0x4e,0x42,0x92,0x3f,0x5a,0xa4,0xce,0x1c,
+ 0xfd,0x6b,0x9a,0xb4,0xd5,0xac,0x12,0xd0,0xa8,0xfb,0x9d,0xb8,0xe7,0x35,0x34,0x70,
+ 0x3e,0x7a,0x55,0xc8,0x6d,0xf7,0x7b,0xd6,0xbc,0x36,0x63,0x00,0xd7,0x1c,0x29,0x26,
+ 0xee,0x67,0x29,0x15,0x2d,0x63,0x75,0x22,0xba,0xab,0x46,0x65,0xfe,0x75,0x9e,0x90,
+ 0x00,0x72,0x01,0xf6,0xad,0x08,0xba,0x72,0x72,0x6a,0x9c,0x16,0xe8,0x86,0xce,0x82,
+ 0xde,0x73,0x81,0xcd,0x77,0x9e,0x17,0x80,0xdd,0x5d,0xa9,0xc6,0x79,0xc5,0x79,0xcd,
+ 0xb0,0x6e,0x33,0xeb,0xd2,0xbd,0xe3,0xe1,0xd6,0x92,0xd3,0xdc,0x45,0x91,0xd4,0x83,
+ 0x5e,0x7e,0x65,0x8a,0x54,0x30,0xd3,0x9b,0x3b,0xf2,0xaa,0x0e,0xb6,0x22,0x30,0x3e,
+ 0xa8,0xf0,0x3d,0x80,0xb5,0xd3,0x50,0xb0,0xc1,0x22,0xbb,0x76,0x93,0xcb,0x4d,0xd9,
+ 0xe7,0xa5,0x67,0x58,0xc6,0xb6,0x96,0x89,0x10,0xe0,0x2a,0x8a,0xac,0xf7,0x7b,0xe6,
+ 0x23,0x39,0x0b,0x5f,0xce,0x98,0xda,0x9c,0xf5,0x67,0x5a,0x4f,0x56,0xcf,0xdc,0x68,
+ 0x47,0x92,0x9a,0x82,0xe8,0x68,0x34,0x84,0x0c,0xf7,0x3c,0x9a,0xcf,0x9a,0x7c,0x1d,
+ 0xb5,0x04,0xd7,0x65,0x7b,0xd5,0x0f,0x3f,0x7b,0xff,0x00,0x3f,0x4a,0xf9,0xba,0xf3,
+ 0xe6,0x6c,0xef,0xa6,0xb4,0x2f,0xee,0xc8,0x35,0x2d,0x9b,0x95,0x73,0xf8,0x7b,0x56,
+ 0x5c,0xd3,0xed,0xf9,0x72,0x39,0xa7,0xdb,0xdc,0x81,0x96,0xcd,0x78,0xf5,0xde,0xb6,
+ 0x3b,0x28,0xef,0x73,0xae,0x13,0x09,0x14,0x00,0x7a,0x53,0xd2,0xeb,0xcb,0x20,0x74,
+ 0xae,0x6e,0x1b,0xe0,0x11,0x8d,0x02,0xf0,0x3b,0x63,0x3c,0x7a,0xd7,0x33,0x4b,0x76,
+ 0x76,0xf3,0x3b,0x68,0x7f,0xff,0xd2,0x4f,0x1f,0x7c,0x51,0xd2,0x34,0xcd,0x6a,0x1d,
+ 0x27,0xc6,0xda,0x42,0xdf,0xd9,0xde,0xda,0x43,0x75,0x1d,0xd4,0x64,0x79,0xdb,0x65,
+ 0x04,0x30,0x39,0xc1,0xe1,0x81,0xe8,0x7f,0x0a,0xf2,0x4b,0xff,0x00,0x08,0xfc,0x18,
+ 0xf1,0x33,0xb5,0xe6,0x85,0xe2,0x51,0xa5,0x4b,0x2e,0x4f,0x93,0x7e,0xa4,0x05,0xf6,
+ 0xdc,0x02,0x9f,0xc7,0x06,0xb1,0x7e,0x2f,0x5c,0x26,0xb7,0xe1,0xed,0x0f,0x5a,0x4c,
+ 0x13,0x6b,0xbe,0xce,0x43,0xdc,0x6e,0x01,0xd0,0x7e,0x8d,0x5f,0x3f,0x45,0x7a,0x63,
+ 0xe3,0x71,0x1c,0xf2,0x3d,0x45,0x7e,0x29,0x88,0xc5,0x55,0xa7,0x37,0x07,0x15,0x25,
+ 0xe7,0xfe,0x6a,0xcc,0xf1,0xa3,0x4b,0x99,0x73,0xa7,0xb9,0xed,0xf7,0xbf,0x08,0xf5,
+ 0x78,0x95,0xa7,0xd0,0xaf,0x2c,0xb5,0x98,0x31,0x90,0xd6,0x73,0xa4,0xa7,0x1e,0xbb,
+ 0x32,0x1f,0xf4,0xaf,0x28,0xd4,0xb4,0xbb,0xcd,0x3e,0x63,0x1d,0xd4,0x4d,0x1b,0xa9,
+ 0xe4,0x30,0x20,0x83,0xee,0x0f,0x35,0x56,0x2d,0x45,0xe1,0x22,0x48,0x1f,0x63,0x29,
+ 0xc8,0x20,0x90,0x46,0x3d,0xc5,0x77,0x9a,0x67,0x8e,0xa5,0x9d,0x16,0xd7,0xc4,0x11,
+ 0xa6,0xab,0x6a,0xd8,0x18,0x9b,0xfd,0x6a,0x8f,0x54,0x94,0x7c,0xc3,0xf1,0x24,0x7b,
+ 0x57,0x14,0xb1,0xb1,0xeb,0x0b,0x2f,0xbf,0xfa,0xfc,0x7d,0x06,0xa9,0xb5,0xb9,0xf4,
+ 0x97,0xec,0xff,0x00,0xac,0x35,0xd7,0x84,0xcd,0x93,0x9e,0x6d,0x27,0x78,0xf1,0xd3,
+ 0x00,0x9d,0xc3,0xf9,0xd7,0xd3,0x89,0x61,0x6d,0x7d,0x6f,0xc3,0x14,0x90,0x0e,0x08,
+ 0xe9,0xf8,0xd7,0xc9,0xbf,0x0c,0x3f,0xb0,0xf4,0xf9,0xe7,0x9f,0x42,0xba,0xdf,0x6d,
+ 0x76,0xca,0xde,0x4c,0x9f,0x2c,0xd1,0x48,0x07,0x21,0x80,0xe0,0x82,0x3a,0x30,0xe3,
+ 0xe9,0x5f,0x51,0xe9,0x77,0x86,0x4d,0x91,0x23,0x63,0x79,0x51,0xf9,0xd7,0xe0,0x3c,
+ 0x6f,0x84,0xe4,0xcc,0xaa,0xf2,0xea,0xa5,0xaa,0xf9,0x9f,0xae,0xf0,0xce,0x25,0xcb,
+ 0x03,0x4d,0xa7,0xaa,0xd0,0x93,0x4c,0xf0,0xa6,0xb5,0xab,0xde,0x4b,0x69,0x63,0x00,
+ 0x63,0x12,0xef,0x91,0x99,0x82,0x22,0xa9,0xe8,0x4b,0x1e,0x39,0xed,0xde,0xbd,0x52,
+ 0xdd,0x60,0xd1,0xf4,0xd8,0xb4,0xcb,0x6c,0x0d,0x8b,0x99,0x18,0x75,0x79,0x0f,0xde,
+ 0x63,0xfc,0x87,0xb5,0x24,0x77,0xa9,0xa6,0x44,0xb6,0x56,0x87,0xe4,0xc6,0x19,0xf1,
+ 0x82,0xe4,0xf3,0x93,0x8f,0xd3,0xd0,0x56,0x5c,0xd2,0xb3,0x36,0xe1,0xcf,0xad,0x7c,
+ 0xed,0x1c,0x2c,0x28,0xfc,0x3f,0x13,0xdf,0xfe,0x01,0xef,0xd6,0xc5,0x4e,0xae,0x8f,
+ 0x61,0xd2,0x4a,0xdf,0x78,0xf2,0x4d,0x40,0x72,0x9c,0x67,0x21,0xbb,0x54,0xbe,0x59,
+ 0x65,0xde,0xbd,0x3d,0x2a,0x29,0x13,0xe5,0xc8,0x1d,0xab,0x46,0xb5,0x39,0x9d,0x42,
+ 0x09,0x1f,0x00,0x11,0x80,0x56,0xa1,0x92,0x40,0xc0,0x7a,0xf4,0xc9,0xf7,0xa6,0xc8,
+ 0x70,0xd9,0x27,0xeb,0x55,0x25,0x24,0x30,0x61,0xd2,0xae,0x3a,0xe8,0x09,0xdf,0x63,
+ 0x41,0x46,0xd1,0x9e,0xa2,0xb3,0xee,0x01,0x56,0x5f,0x73,0x56,0xd2,0x40,0x54,0x1e,
+ 0x9c,0xd6,0x7d,0xe4,0x99,0x5f,0xa3,0x50,0x96,0xba,0xa3,0x6a,0x7a,0x95,0x0c,0xb8,
+ 0x7c,0x74,0x39,0xae,0x83,0x4d,0xbe,0x75,0x28,0x49,0xea,0x47,0x35,0xca,0x4a,0xc0,
+ 0x1c,0xfb,0xe6,0xa6,0xb5,0xb8,0x01,0x87,0x38,0x03,0x9a,0x1c,0x5a,0x77,0x46,0xee,
+ 0x37,0x47,0xa5,0x5e,0x5c,0x80,0x9f,0x29,0x39,0x23,0x24,0xd6,0x04,0xd2,0xfc,0xdf,
+ 0x31,0x07,0x3f,0x85,0x39,0x27,0x13,0xaa,0x9e,0xa1,0x40,0xaa,0x33,0x15,0x27,0x27,
+ 0x9c,0x9c,0xe0,0x57,0x26,0x32,0x0d,0xbe,0x64,0x3a,0x6e,0xfa,0x16,0x12,0x7d,0xad,
+ 0xf4,0xff,0x00,0x22,0xbb,0x0d,0x07,0xc4,0x0d,0x65,0x3a,0xa3,0x9c,0xa1,0x22,0xbc,
+ 0xe5,0xe5,0x20,0xfc,0xa7,0x83,0x4f,0x4b,0xa2,0x83,0x1d,0x2b,0x8a,0x0d,0xc5,0xde,
+ 0x3b,0x97,0x28,0x5d,0x34,0x7d,0x51,0xa8,0x5b,0xe9,0xfe,0x30,0xd1,0xd6,0xca,0x47,
+ 0x02,0x41,0xf3,0xc3,0x2f,0x52,0x8f,0x8e,0xfe,0xc7,0xb8,0xaf,0x00,0xbe,0xb6,0xbb,
+ 0xd2,0x6f,0x5e,0xc2,0xf1,0x76,0x49,0x1b,0x60,0xfa,0x11,0xea,0x0f,0x70,0x7a,0x83,
+ 0x5a,0x1e,0x19,0xf1,0x7b,0x69,0x52,0x85,0x95,0x8b,0x46,0x72,0x39,0xed,0x5d,0x27,
+ 0x8b,0x65,0xb6,0xd7,0xec,0xd2,0xee,0x02,0xad,0x34,0x40,0xb2,0x30,0xea,0xc9,0xdd,
+ 0x7f,0x0e,0xd5,0x39,0x9e,0x1e,0x38,0x9a,0x7e,0xd5,0x7c,0x6b,0xf1,0x35,0xcb,0xab,
+ 0x3a,0x33,0xf6,0x72,0xf8,0x59,0x8d,0xa4,0x5f,0x88,0xe6,0x43,0x9c,0x00,0x6b,0xd4,
+ 0xe5,0xd9,0x7b,0x6a,0xb3,0x2b,0x12,0xa4,0x75,0x3c,0x0a,0xf9,0xf2,0xce,0xe9,0x90,
+ 0xef,0x3c,0x2a,0x9e,0x49,0xe8,0x0d,0x77,0x7a,0x37,0x8f,0xe2,0xd3,0x65,0x31,0x4b,
+ 0xfb,0xdb,0x42,0xa7,0x7a,0x9e,0x0a,0xb7,0xf7,0x97,0x3d,0x41,0xee,0x3f,0x1a,0xe3,
+ 0xc8,0x6b,0xca,0x94,0xe5,0x4e,0x51,0xf7,0x5f,0x5e,0xcc,0xeb,0xce,0xa9,0x42,0x70,
+ 0x52,0x52,0x5c,0xcb,0xa7,0x74,0x73,0x1f,0x11,0xad,0xda,0x5d,0x1e,0xee,0xda,0x46,
+ 0x0c,0xb2,0x46,0xeb,0x8f,0xa8,0xaf,0xca,0x19,0x9a,0x48,0xee,0x26,0x89,0xf8,0xf2,
+ 0x9d,0x97,0x9f,0x55,0x38,0x35,0xfa,0x9f,0xe3,0x3f,0x10,0x58,0x6a,0xf0,0xc9,0x2d,
+ 0xbf,0x00,0x83,0x80,0x46,0x3b,0x7b,0x76,0xaf,0xcc,0xcf,0x17,0x58,0x35,0xa7,0x88,
+ 0xb5,0x08,0x93,0xe5,0x06,0x76,0x61,0xf4,0x7f,0x9b,0xfa,0xd7,0xea,0xbc,0x39,0x55,
+ 0x7b,0xea,0xe7,0xe5,0x1c,0x59,0x49,0xba,0x74,0xe5,0x63,0x8d,0x59,0x4b,0xb3,0xaf,
+ 0x50,0xe6,0xab,0x48,0xc3,0xcc,0x75,0x6e,0x80,0x54,0x72,0x07,0x89,0xd9,0x73,0xc8,
+ 0x38,0xcd,0x35,0xe4,0x18,0x6c,0x9c,0x13,0x5f,0x77,0x4a,0x2a,0xe8,0xf8,0x3d,0x76,
+ 0x33,0xe5,0x50,0x1c,0x30,0x1f,0x85,0x55,0x93,0x73,0x1f,0x9f,0xe8,0x3d,0x2a,0x63,
+ 0x2a,0xb3,0x85,0xcf,0x35,0x1c,0xee,0xa5,0x82,0xa8,0xc9,0xf6,0xaf,0x46,0x92,0xb2,
+ 0x0b,0x23,0x26,0x58,0x48,0x24,0x8e,0x07,0x4a,0xa5,0x3c,0x44,0xb7,0x96,0x46,0x7d,
+ 0xcd,0x68,0xdc,0x3e,0xd6,0x23,0xf3,0xac,0xf9,0x1c,0xb1,0xf6,0xf7,0xaf,0x56,0x8a,
+ 0x76,0x05,0x72,0xab,0x28,0xc1,0xda,0xb9,0xaa,0x41,0x50,0x63,0x23,0x06,0xb4,0xb7,
+ 0xa8,0x53,0x8f,0xad,0x64,0xc9,0x29,0xf3,0x06,0x2b,0xd0,0xa3,0xb2,0x4c,0x45,0x94,
+ 0x6c,0x3b,0x28,0x18,0xcf,0xeb,0x4f,0x43,0xb9,0x38,0xfe,0x1a,0x81,0x3e,0xf1,0x63,
+ 0xce,0x07,0xf3,0xa7,0xc2,0x41,0x46,0x00,0xe3,0xad,0x75,0xc6,0x5a,0xd8,0x0b,0x00,
+ 0x60,0xa9,0x1d,0x6b,0x52,0xda,0x4d,0xad,0x59,0x28,0x46,0xd0,0x8d,0xc7,0xbd,0x5f,
+ 0x83,0x1b,0x4e,0x0f,0x7f,0xce,0xb4,0x8a,0xb8,0x1d,0x0e,0xc2,0xf1,0xef,0x1d,0x2b,
+ 0xa5,0xf0,0xc5,0xd3,0x5a,0xdf,0xc6,0xe0,0xe3,0x04,0x1f,0x7a,0xe6,0xad,0xd8,0x98,
+ 0x82,0xf6,0x1c,0x56,0xb6,0x9c,0xc2,0x39,0x94,0x9c,0x60,0x1a,0xda,0x4b,0x41,0x4b,
+ 0x54,0xcf,0xb4,0xa0,0xd4,0x3c,0xfd,0x3e,0x07,0x43,0xd5,0x06,0x7e,0xb5,0xa5,0xe0,
+ 0xdf,0x17,0xbf,0x85,0x3c,0x53,0x67,0xaa,0xf5,0x89,0x1f,0xcb,0xb8,0x5f,0xef,0x42,
+ 0xff,0x00,0x2c,0x83,0xf2,0xe4,0x7b,0x81,0x5e,0x57,0xe1,0xdd,0x4b,0xcd,0xd3,0x23,
+ 0x4d,0xd9,0xda,0x31,0xcf,0xb5,0x59,0x9e,0xe3,0x9d,0xd9,0xfa,0x54,0xba,0xcd,0x54,
+ 0x53,0x8e,0xe7,0x92,0xd5,0x9d,0x8f,0xd0,0xbf,0x11,0x58,0x5a,0x5c,0xdb,0x9b,0x98,
+ 0xcf,0x9a,0x93,0x20,0x64,0x65,0xe8,0xca,0x46,0x55,0xbf,0x10,0x6b,0xc2,0xf5,0x6b,
+ 0x45,0x88,0x90,0x01,0x40,0x4f,0x2d,0xdb,0xaf,0x4a,0xea,0x7e,0x10,0x78,0xb3,0xfe,
+ 0x12,0x3f,0x05,0xbe,0x91,0x70,0xe1,0xef,0x34,0x62,0x22,0xc1,0xe5,0x8d,0xb3,0xf3,
+ 0x19,0xf7,0xda,0x72,0x9f,0x95,0x4d,0xad,0xd9,0xa9,0x76,0x28,0x3b,0xe3,0x69,0xe4,
+ 0x64,0xfa,0x1a,0xfa,0x09,0x49,0x4e,0x31,0x9c,0x4e,0x5a,0x8b,0x53,0xcb,0x6e,0xe1,
+ 0xd8,0x32,0x7e,0x60,0xa7,0x20,0x91,0x9e,0x95,0xcb,0xc7,0xb1,0xae,0xd8,0x8c,0xa9,
+ 0x66,0x3c,0x30,0xe0,0xe0,0x75,0xaf,0x40,0xba,0x8f,0x64,0x3e,0x5b,0xae,0x70,0xc7,
+ 0x07,0x3c,0xf3,0xd3,0x35,0xce,0x1b,0x78,0x52,0xe1,0x0c,0x9c,0xff,0x00,0x77,0x1c,
+ 0xe0,0xd4,0xc9,0x6c,0x41,0x35,0x94,0x25,0xb0,0xc3,0x2a,0x77,0x1e,0xc3,0x1c,0x56,
+ 0x4f,0xc4,0xff,0x00,0x14,0x1f,0x04,0x7c,0x31,0xd6,0xb5,0x98,0xd8,0x2d,0xd3,0xc5,
+ 0xf6,0x5b,0x42,0x7b,0xcf,0x73,0xfb,0xb4,0x3f,0x86,0x77,0x7d,0x05,0x76,0xb6,0x91,
+ 0xc5,0x14,0x1e,0x62,0x2e,0x4f,0x38,0x2d,0xc7,0x3f,0x43,0x5f,0x1e,0xfe,0xd5,0x7e,
+ 0x28,0x92,0x69,0xb4,0x5f,0x08,0xc4,0xdf,0xbb,0x88,0x3d,0xfd,0xc2,0x83,0xc1,0x91,
+ 0xbf,0x77,0x16,0x40,0xf4,0x1b,0x8d,0x3a,0xf5,0x55,0x2a,0x6e,0x57,0xd4,0xe9,0xc3,
+ 0x53,0x73,0x9a,0x5d,0x0f,0x89,0xdd,0x09,0x04,0x67,0x21,0x71,0xd7,0xaf,0x1c,0x7e,
+ 0x74,0xdb,0x7e,0x24,0x08,0x3a,0x74,0xab,0xaf,0x10,0x52,0x4e,0x3a,0x93,0xfe,0x73,
+ 0x50,0x22,0x61,0xc3,0x01,0xc6,0x6b,0xc1,0x8d,0x9a,0x77,0x3d,0xcb,0x5b,0x42,0xc4,
+ 0xaa,0xab,0x26,0x1b,0xa1,0x1c,0x1a,0x91,0x06,0x0f,0x18,0xc8,0xe7,0x1f,0xca,0x9f,
+ 0x2c,0x61,0x95,0x5b,0xdf,0x1f,0x8d,0x42,0x5b,0x03,0xdc,0x71,0x5a,0x45,0x59,0x5c,
+ 0x76,0x2c,0x9e,0x43,0x02,0x33,0x91,0xff,0x00,0xd7,0xab,0x96,0x72,0x2e,0x59,0x58,
+ 0x67,0x81,0xfe,0x7f,0x0a,0xa1,0x17,0x07,0x69,0x38,0xff,0x00,0xeb,0xd5,0xab,0x62,
+ 0x9e,0x67,0x23,0x8c,0x71,0x8e,0xf5,0xc9,0x55,0x3e,0x85,0xf2,0x5d,0x58,0xd6,0x84,
+ 0x27,0x9f,0xe6,0xf4,0x39,0xe8,0x7b,0xd7,0xd0,0x9e,0x0c,0x8d,0x3e,0xc1,0x71,0x1b,
+ 0x10,0x3c,0xcb,0x69,0xb1,0xee,0x0a,0x1a,0xf9,0xea,0x1d,0xce,0xdb,0x30,0x7d,0x47,
+ 0xe1,0xd2,0xbd,0xaf,0xc1,0xf3,0xc9,0x25,0xa3,0xee,0xe4,0x2c,0x6e,0x31,0xdf,0x90,
+ 0x68,0x8c,0xed,0x34,0xec,0x42,0x56,0x6a,0xe7,0x8f,0xec,0x48,0xa4,0x2f,0xc1,0xe6,
+ 0xa2,0x92,0xe3,0x71,0x20,0xd5,0x39,0xee,0x1b,0x79,0x5c,0xf0,0x4d,0x53,0xf3,0x73,
+ 0xce,0x73,0x5e,0xc4,0x5b,0xd1,0xb3,0x09,0xcd,0xbd,0x8d,0x0f,0x30,0xb7,0x00,0xd2,
+ 0xaa,0x92,0x70,0x3f,0x2a,0xab,0x1b,0x1c,0xd5,0xd8,0xb2,0x5b,0xf4,0x35,0xd7,0x4a,
+ 0x3a,0xea,0x64,0xef,0xbb,0x26,0x09,0xc6,0xe1,0x9f,0xc2,0xad,0xa1,0xda,0x31,0xda,
+ 0x9a,0xaa,0x36,0xf0,0x7b,0xf5,0xa8,0x9e,0x40,0xbc,0x66,0xb6,0x9a,0x49,0x16,0x9d,
+ 0xcd,0x14,0x9b,0x27,0x19,0xeb,0xf9,0xd6,0x84,0x79,0xc8,0x35,0x83,0x0b,0x73,0xd7,
+ 0xa5,0x6e,0x40,0xdd,0xcd,0x73,0xc5,0x75,0x0b,0x24,0x3d,0xf7,0x76,0xcd,0x2c,0x00,
+ 0x31,0x19,0xa7,0x48,0xca,0x40,0x07,0xa9,0xed,0x4b,0x00,0x19,0x04,0x7d,0x3d,0xeb,
+ 0x0a,0xa9,0x5f,0x53,0x29,0x48,0xda,0xb5,0x40,0x46,0x31,0x8c,0x73,0x5d,0x0c,0x10,
+ 0xe7,0x07,0x00,0x56,0x1d,0x9b,0x0c,0xe0,0xf5,0xae,0x9e,0xd5,0xd3,0x1d,0x3a,0xff,
+ 0x00,0x9e,0x6a,0x29,0xab,0x99,0x54,0xb5,0xb5,0x0f,0x21,0xbd,0x3a,0x53,0xd2,0x12,
+ 0x3a,0xe4,0x7a,0x71,0x5a,0xaa,0x14,0x8c,0x54,0xc2,0x20,0x7a,0x73,0x5b,0xca,0x96,
+ 0x9a,0x18,0xa6,0x26,0x9b,0x6e,0x64,0x99,0x50,0xff,0x00,0x7a,0xbe,0xb6,0xf8,0x5f,
+ 0xa6,0x6c,0xd9,0x31,0x03,0x0a,0x2b,0xe6,0x9d,0x06,0xdb,0x75,0xda,0x82,0x3b,0xd7,
+ 0xd7,0x7e,0x0c,0x55,0xb4,0xd3,0x83,0xf7,0x20,0x57,0xe7,0x7c,0x73,0x89,0xf6,0x38,
+ 0x6f,0x67,0xdc,0xfb,0x9e,0x0d,0xc3,0x73,0x55,0x75,0x5f,0x43,0xd2,0x6f,0x2f,0x56,
+ 0x18,0xca,0xaf,0x53,0xc5,0x61,0x47,0x75,0x86,0x27,0x3c,0xd6,0x7d,0xed,0xee,0xef,
+ 0x9b,0x3c,0x0a,0xca,0x6b,0xc2,0x0f,0x26,0xbf,0x0f,0xc6,0x4d,0xf2,0xd8,0xfd,0x52,
+ 0x85,0x3b,0xbb,0x9d,0x0c,0xd7,0x2c,0xed,0x80,0x78,0xa5,0x49,0x95,0x07,0x7f,0xff,
+ 0x00,0x5d,0x60,0xc7,0x38,0x73,0xcd,0x58,0xf3,0x49,0xc8,0xcd,0x78,0xd5,0x15,0x93,
+ 0x3d,0x18,0xd3,0x2d,0x5c,0x4e,0x4f,0x3f,0xfe,0xaa,0x89,0x2f,0xf6,0xa1,0x07,0xb5,
+ 0x56,0x62,0x79,0xcf,0xf9,0xc5,0x63,0xb4,0x87,0x26,0xbc,0xd7,0x0b,0xbb,0x9d,0x0a,
+ 0x27,0x4b,0x1d,0xd9,0x65,0xf9,0x4f,0x15,0x7e,0xde,0x52,0x06,0x7d,0xab,0x02,0xd4,
+ 0x33,0x21,0xc7,0x6f,0xeb,0x57,0xc4,0x82,0x28,0xce,0xee,0x0d,0x71,0xe3,0x3d,0xd8,
+ 0x3b,0x1d,0x78,0x58,0x73,0x4d,0x23,0xff,0xd3,0xf9,0x5d,0x6f,0xa5,0xd4,0xfc,0x01,
+ 0xa9,0xdb,0x11,0xbc,0xc0,0x60,0xb9,0xdc,0x7b,0x04,0x6d,0xac,0x7f,0x23,0x5e,0x28,
+ 0xf2,0x30,0x63,0x9e,0x33,0x5e,0x97,0xe1,0x09,0xd6,0xe7,0x4a,0xd5,0x74,0xe7,0x6c,
+ 0xf9,0xf6,0x32,0xa0,0x1c,0x9e,0x54,0x6f,0x1d,0x3b,0xfc,0xb5,0xe5,0x52,0x9e,0x4e,
+ 0x7f,0xcf,0xe1,0x5f,0x8e,0xe3,0x61,0xfb,0xc3,0xcf,0xc1,0xab,0xd3,0x71,0xec,0xcb,
+ 0x4b,0x29,0x19,0xc1,0xef,0x57,0xe1,0xbb,0x58,0xf0,0x13,0xbf,0x5e,0x2b,0x9e,0xf3,
+ 0x70,0x70,0x33,0x4e,0x59,0x8f,0xaf,0x7f,0xca,0xb8,0xe5,0x43,0x9b,0x73,0xa5,0xc1,
+ 0x5b,0x43,0xdb,0xfe,0x1c,0xeb,0xcf,0x69,0xe2,0x4b,0x55,0xdf,0x85,0x95,0x8a,0x11,
+ 0xdb,0x91,0x5f,0x79,0x78,0x76,0xf8,0xc9,0x34,0x2e,0xc7,0x8d,0xcb,0x5f,0x96,0xba,
+ 0x66,0xaa,0xf6,0x77,0x90,0xdc,0xa3,0x61,0xa2,0x75,0x7e,0x31,0xd8,0xd7,0xe8,0x37,
+ 0x83,0xb5,0xb8,0xee,0xed,0x6d,0xae,0x22,0x6c,0xab,0x84,0x60,0x6b,0xf2,0x3f,0x10,
+ 0x32,0xe7,0x0a,0x94,0xeb,0xa5,0xbe,0x9f,0x71,0xf6,0x9c,0x21,0x5b,0xdc,0xa9,0x41,
+ 0xfa,0x9f,0x58,0x28,0x67,0x1f,0xd0,0xd5,0xf8,0xa1,0x18,0xf9,0xce,0x73,0x54,0xec,
+ 0x1b,0xce,0x89,0x24,0xfe,0xf0,0x1f,0xad,0x5f,0xf2,0xd9,0x1b,0x04,0xfb,0x8f,0xa5,
+ 0x7e,0x7b,0x08,0xe8,0x7d,0x5c,0xe5,0xd0,0x98,0xc7,0xb1,0x78,0xe9,0x50,0x92,0xa3,
+ 0x04,0x01,0x8a,0x0c,0xcc,0xa7,0x9e,0x95,0x52,0x79,0x14,0x72,0x08,0xa1,0xad,0x48,
+ 0x2b,0xdc,0xaa,0x02,0x4f,0x63,0xcd,0x62,0x4e,0xdb,0x5b,0x1f,0xa5,0x68,0xcb,0x71,
+ 0x80,0x47,0x50,0x7f,0xcf,0x7a,0xc3,0xbb,0x94,0x06,0xe0,0xe7,0x22,0x92,0x8a,0xe8,
+ 0x6d,0x04,0xf6,0x2d,0x09,0x0a,0xa1,0xc9,0x04,0xf5,0xac,0x8b,0x99,0x9f,0x73,0xf3,
+ 0xf2,0x90,0x38,0xa6,0x3d,0xd0,0xdd,0x8c,0xfe,0x1d,0x6b,0x26,0xe6,0xe0,0x92,0x70,
+ 0x49,0xe2,0xae,0x14,0xfd,0xe3,0xb2,0x9c,0x2c,0x5f,0x79,0x4b,0x22,0xe6,0xa2,0x59,
+ 0xb0,0xde,0xfe,0xd5,0x98,0x27,0xcc,0x4b,0x93,0xf5,0xa3,0xed,0x07,0x21,0x87,0x3c,
+ 0xd6,0x92,0x83,0xdc,0xd4,0xee,0x74,0xdb,0x8f,0x31,0x18,0x13,0x8e,0x9f,0x95,0x59,
+ 0x9e,0x46,0x39,0xe9,0xf5,0x15,0xca,0xd8,0x5c,0x6c,0x94,0x2e,0x78,0x35,0xb9,0x2c,
+ 0xa1,0x81,0x00,0xf2,0x6b,0x0a,0x94,0xf9,0xa0,0x4a,0x49,0x32,0xbc,0xb3,0x61,0xb2,
+ 0x0e,0x71,0x48,0x92,0xef,0x19,0x7e,0x3e,0xb5,0x48,0x9c,0x70,0x72,0x3d,0x2a,0x37,
+ 0x76,0xe8,0xa7,0x1e,0xbf,0x4a,0xf2,0x65,0x0e,0x86,0xd2,0x5a,0x23,0x5f,0x25,0x70,
+ 0xc8,0x72,0x0d,0x6d,0x69,0xda,0xbc,0x96,0xeb,0xe5,0x31,0x25,0x4f,0x4f,0x63,0xed,
+ 0x5c,0xb2,0x4e,0x40,0xda,0x0f,0xa5,0x48,0x24,0xc3,0x7e,0xb4,0x92,0xb6,0x84,0x4a,
+ 0x36,0x36,0xf5,0x2b,0xa0,0xcb,0xb1,0x00,0x50,0x49,0xc8,0x1e,0xa7,0x9c,0xd7,0x3e,
+ 0xf2,0xed,0xc8,0xcd,0x32,0xe2,0xe3,0x77,0x5e,0x9d,0x2b,0x3e,0x49,0x7b,0x7e,0x5d,
+ 0xab,0x3c,0x3d,0x2e,0x59,0x38,0x95,0x53,0x54,0xa4,0x54,0xbf,0xb9,0x68,0xe3,0x6f,
+ 0xf6,0xab,0xe3,0xef,0x89,0xc0,0x5b,0xeb,0xc6,0x7e,0x9e,0x6c,0x6a,0xdf,0x88,0xe2,
+ 0xbe,0xad,0xd4,0x26,0xfd,0xd9,0xc9,0xc6,0x05,0x7c,0xad,0xf1,0x79,0x57,0xed,0xb6,
+ 0x92,0x74,0xca,0x32,0x93,0xef,0x90,0x6b,0xee,0xb8,0x65,0x5a,0xb2,0x8b,0x3e,0x33,
+ 0x8b,0x29,0x39,0x61,0x1c,0x92,0xda,0xc7,0x8e,0xcd,0x30,0x73,0x9e,0xfb,0xb3,0x54,
+ 0xcc,0xa8,0x51,0xd7,0x38,0x27,0x34,0x8e,0x87,0x6e,0x7a,0x73,0xf9,0xd6,0x6a,0xf0,
+ 0xf9,0xe7,0x07,0x39,0xaf,0xd3,0xa9,0x41,0x68,0x7e,0x5b,0x25,0x6d,0xc5,0xc3,0x6e,
+ 0x07,0x39,0xc0,0xe7,0xa0,0xa6,0xb1,0xcb,0x1d,0xbf,0x98,0xa7,0x3c,0xa3,0xa8,0xa8,
+ 0x03,0xfc,0xc4,0x0e,0xe2,0xbd,0x08,0xbe,0xac,0x91,0x92,0x61,0xb2,0x5b,0x9e,0x3f,
+ 0x2a,0xcf,0xb8,0x62,0x4f,0xd3,0xad,0x5d,0x2d,0x96,0x29,0xd7,0x8a,0xa5,0x2b,0x0c,
+ 0xf3,0xd7,0xd2,0xbd,0x0a,0x6a,0xda,0x8e,0xec,0xa8,0x39,0x18,0x1f,0x4a,0xa1,0xe5,
+ 0x82,0xf9,0x39,0xe0,0xd5,0xd6,0xda,0x0e,0x47,0x23,0x1d,0x2a,0xb2,0xb7,0xef,0x0a,
+ 0x9e,0xbf,0xce,0xbb,0xa9,0xb7,0x61,0x12,0x48,0x14,0x1c,0x0e,0xf5,0x0c,0x6c,0x39,
+ 0x1c,0xf1,0xf8,0x54,0x92,0x86,0x1d,0x07,0x18,0xa8,0x21,0xff,0x00,0x59,0x8c,0x0e,
+ 0x45,0x76,0x25,0xcd,0xb3,0x13,0x34,0x60,0x50,0xc7,0x07,0x19,0xf4,0xfa,0xd5,0xc8,
+ 0x80,0x1e,0xbf,0xfe,0xaa,0xcf,0xb6,0x3b,0x64,0xc6,0x39,0xab,0xb1,0x83,0xd3,0x38,
+ 0xef,0x4a,0x17,0xde,0xe1,0x7b,0x1b,0xb6,0x8f,0xc6,0xd6,0x3e,0xf5,0xaf,0x6d,0x8d,
+ 0xf9,0xc7,0x7c,0xe2,0xb0,0x2c,0xc9,0x3c,0x1a,0xda,0xb6,0x38,0x6c,0xf5,0xae,0xad,
+ 0x1a,0x4a,0xe0,0xd9,0xeb,0xbe,0x18,0xbf,0x68,0xe2,0x30,0x93,0xd6,0xba,0xe3,0x20,
+ 0x7c,0x75,0xaf,0x2a,0xd1,0xa7,0x68,0xae,0x14,0x12,0x7a,0xff,0x00,0x3a,0xf4,0x25,
+ 0x9d,0x87,0x53,0xc1,0xac,0x39,0x1a,0x9d,0xfa,0x1e,0x75,0x65,0x69,0x36,0x8f,0x49,
+ 0xf8,0x67,0xe2,0xdf,0xf8,0x44,0x7c,0x63,0x69,0x75,0x3b,0x1f,0xb1,0xdc,0x13,0x6b,
+ 0x74,0xb9,0xeb,0x14,0xbc,0x13,0xf5,0x53,0x86,0x1f,0x4a,0xfb,0x33,0x59,0xb1,0x53,
+ 0x28,0x99,0x09,0x6c,0xa8,0xc1,0xe0,0x86,0x07,0xa1,0x1f,0x51,0xcd,0x7e,0x70,0x4d,
+ 0x70,0xdb,0xc1,0x07,0xe9,0xeb,0x5f,0x7a,0xfc,0x2d,0xd7,0x97,0xc4,0xbe,0x0f,0xb7,
+ 0x49,0x5f,0x7d,0xcd,0x92,0x08,0x9f,0x77,0x2c,0x53,0xf8,0x0f,0xe1,0xd2,0xbd,0x3c,
+ 0x16,0x21,0xc2,0xa7,0xb1,0x96,0xcf,0x6f,0x53,0x1a,0xd4,0xef,0x05,0x23,0x23,0x51,
+ 0xb5,0x0a,0x8d,0xb0,0x61,0xf3,0xc1,0x3c,0xd7,0x3f,0x34,0x08,0xd2,0x26,0x46,0x79,
+ 0xcf,0x4c,0x9e,0x7a,0xe2,0xbd,0x2f,0x50,0x81,0x13,0x7e,0xf4,0x5f,0x5c,0xe3,0xfc,
+ 0x6b,0x94,0x91,0x26,0x13,0xc6,0x22,0x42,0x73,0xd4,0x81,0xd6,0xbd,0x39,0x68,0xce,
+ 0x12,0x91,0x8d,0x56,0xd4,0xcb,0x20,0x65,0x48,0xf2,0x79,0x1d,0x00,0xe4,0x9a,0xfc,
+ 0xb9,0xf8,0xb5,0xaf,0x4d,0xe2,0x4f,0x1d,0xea,0x9a,0x83,0x1c,0xa2,0xcc,0x61,0x88,
+ 0x74,0xc2,0x47,0xc0,0x03,0xf1,0xcd,0x7e,0x92,0xf8,0xff,0x00,0x51,0x7d,0x17,0xc3,
+ 0x37,0x53,0xc8,0xea,0xbb,0xd1,0x91,0x79,0x39,0xc0,0x04,0xb1,0xfc,0x85,0x7e,0x56,
+ 0x5f,0x3b,0x4f,0x2c,0xd7,0x12,0x1e,0x64,0x91,0x9c,0xe7,0xd5,0x8e,0x7f,0xad,0x78,
+ 0x79,0x96,0x25,0xca,0xb4,0x69,0xf6,0x3d,0x9c,0xba,0x9e,0x8e,0x6c,0xe7,0xe4,0x04,
+ 0x10,0xcc,0x3a,0xd5,0x71,0xf7,0x88,0x23,0x91,0xc8,0xab,0xb3,0x70,0x43,0x30,0xce,
+ 0x2a,0xb9,0x01,0x99,0x48,0x18,0x04,0x66,0xb2,0x8b,0xd2,0xc7,0x7c,0x9d,0xcb,0x88,
+ 0xbb,0xed,0x3a,0xf2,0x87,0x39,0xfe,0x55,0x9e,0xea,0x77,0x37,0x27,0x1f,0xe3,0x5a,
+ 0xd6,0xd1,0xe5,0x1f,0x9e,0x31,0xc8,0xaa,0x17,0x71,0x85,0xe4,0x7f,0x9c,0xf1,0x5d,
+ 0x10,0x4f,0xd9,0x27,0xd8,0x94,0xec,0xf5,0x23,0x4c,0xf5,0x3c,0xf4,0xe6,0xac,0x43,
+ 0x91,0x20,0xc7,0xaf,0xe8,0x6a,0xa4,0x67,0xe5,0xc8,0xeb,0xdb,0xd2,0xac,0xc4,0xc4,
+ 0x48,0x3e,0xa0,0x9a,0xe6,0x92,0x6e,0xe6,0xe9,0x9d,0x45,0xa8,0x2d,0xb7,0xfd,0xd2,
+ 0x09,0x3f,0x5a,0xf5,0xff,0x00,0x01,0xa1,0x9a,0x37,0x03,0xa8,0x18,0x1f,0x95,0x79,
+ 0x34,0x28,0x52,0x2f,0x30,0x67,0x1e,0x83,0xdf,0xde,0xbd,0x53,0xe1,0xbd,0xc3,0x7d,
+ 0xac,0xc6,0xbc,0x8c,0xf2,0x2b,0x15,0x27,0x29,0x45,0x32,0x1c,0x52,0x67,0x82,0xdd,
+ 0xfc,0x97,0x32,0xc6,0xd9,0xca,0x3b,0x2e,0x3d,0x30,0x48,0xa8,0x14,0x82,0x7d,0xaa,
+ 0xce,0xb8,0xad,0x0e,0xb7,0x7f,0x01,0xfe,0x1b,0xa9,0x87,0xfe,0x3e,0xc6,0xaa,0x22,
+ 0x9c,0xe7,0xae,0x05,0x7b,0xb4,0xd7,0xba,0x99,0xc0,0xf7,0x34,0x21,0xe9,0xc7,0xf8,
+ 0x55,0xf4,0x21,0x4e,0x7a,0x7b,0x7f,0x2a,0xa5,0x10,0x23,0x93,0x56,0x89,0xe3,0x35,
+ 0xd5,0x4f,0x6b,0xa1,0x36,0x89,0xde,0x66,0xc7,0x06,0xaa,0x09,0x32,0x70,0x0d,0x41,
+ 0x2c,0x98,0xfb,0xbd,0x7d,0xea,0x04,0x7c,0x9c,0xd0,0xde,0xa5,0x3b,0x58,0xe8,0xa0,
+ 0x1d,0x09,0xe2,0xb4,0x83,0x9c,0x67,0x35,0x83,0x6d,0x36,0x06,0x3b,0x56,0x89,0xb8,
+ 0x1b,0x7a,0xf6,0xc6,0x2a,0x5b,0xb2,0xb8,0x37,0xd8,0xb4,0xd3,0x91,0x9f,0x9b,0x81,
+ 0xc7,0x35,0x6a,0xde,0x73,0xf8,0x9e,0x2b,0x01,0xa5,0xc9,0x04,0xf1,0xed,0x53,0xc5,
+ 0x38,0xc8,0xe6,0xbc,0xfa,0x8e,0xec,0xcd,0xbb,0x9d,0x5d,0xbd,0xc3,0x07,0x07,0x35,
+ 0xd1,0xda,0x5d,0x93,0x8c,0x57,0x0b,0x04,0xfb,0x88,0xad,0xbb,0x59,0x7b,0xf4,0xc0,
+ 0xef,0x4a,0x9c,0x59,0x12,0xd1,0x6a,0x77,0x90,0xdd,0x83,0xde,0xb6,0xad,0xe5,0xca,
+ 0x8f,0xce,0xb8,0x18,0xae,0x48,0x6e,0xb5,0xd0,0xd9,0xdd,0x02,0x00,0xae,0xa5,0x36,
+ 0x9d,0xd9,0x8b,0xee,0x7a,0xa7,0x86,0x63,0x0d,0x70,0xa7,0xaf,0x35,0xf4,0xbe,0x9d,
+ 0x73,0xe4,0xd8,0xa4,0x63,0xd2,0xbe,0x70,0xf0,0x83,0x23,0xcc,0x9d,0x85,0x7b,0x9a,
+ 0x4e,0x36,0x05,0x5e,0x80,0x63,0xd6,0xbf,0x1c,0xf1,0x0b,0x16,0xe7,0x5e,0x14,0xd1,
+ 0xfa,0xbf,0x06,0xe1,0xf9,0x70,0xee,0x6c,0xdb,0x9a,0xeb,0x72,0x92,0x0f,0x02,0xa9,
+ 0x7d,0xa8,0x31,0xc1,0x39,0x35,0x93,0x73,0x74,0x15,0x42,0x03,0xcf,0x7a,0xa6,0x97,
+ 0x00,0x90,0x41,0xaf,0xcb,0x71,0x7a,0x34,0x99,0xf7,0xd8,0x65,0x76,0xda,0x3a,0xf8,
+ 0xae,0x00,0x20,0x83,0x5a,0x2b,0x39,0x22,0xb9,0x5b,0x79,0x81,0xe7,0xa6,0x6b,0x5a,
+ 0x29,0x09,0x19,0xcf,0xd2,0xbc,0x5a,0xf2,0x67,0xa5,0x18,0x5f,0x53,0x49,0xe6,0x60,
+ 0xa7,0x06,0xb1,0x9a,0x70,0xa7,0xaf,0x7a,0xb7,0x2c,0x83,0xcb,0xc9,0xec,0x2b,0x0e,
+ 0x46,0x39,0x3e,0x95,0xcf,0x04,0xec,0xcb,0xb7,0xbc,0x76,0xda,0x35,0xcc,0x6c,0xe1,
+ 0x5c,0xf0,0xdc,0x1f,0x4a,0x9f,0x58,0xc4,0x38,0x54,0x39,0xe6,0xb9,0x2b,0x5b,0x93,
+ 0x11,0x52,0x0f,0x35,0xbd,0x71,0x76,0xb7,0x11,0x8c,0x9c,0x9e,0x95,0xcb,0x8a,0xa7,
+ 0xcd,0x49,0xa3,0xa2,0x84,0xb9,0x2b,0x26,0x7f,0xff,0xd4,0xf8,0x67,0xc0,0x77,0x3b,
+ 0x35,0x54,0x8d,0xcf,0x12,0x12,0xa4,0x74,0xc0,0x60,0x57,0xb7,0xd6,0xb8,0x2b,0xaf,
+ 0xdd,0xcb,0x2c,0x3d,0x4a,0xb1,0x5c,0xfd,0x0e,0x2b,0xa0,0xf0,0xac,0xff,0x00,0x66,
+ 0xd6,0x2d,0xd9,0xf1,0x8f,0x31,0x72,0x3f,0x1f,0x5a,0xc8,0xf1,0x0a,0x7d,0x9f,0x5b,
+ 0xbe,0x83,0xa6,0xc9,0xe4,0x18,0xc6,0x3f,0x8b,0x35,0xf9,0x66,0x65,0x49,0x73,0xec,
+ 0x79,0xd8,0x3d,0x39,0x91,0x83,0x23,0x85,0x6c,0x0e,0xbd,0xe9,0x9e,0x79,0x03,0x82,
+ 0x7d,0xbf,0xad,0x36,0x60,0x18,0x16,0xf4,0xef,0xd6,0xb3,0x5a,0x56,0x5c,0x01,0xd4,
+ 0xd7,0x3d,0x38,0x29,0x2d,0x4e,0xcb,0x6b,0x73,0x51,0x6e,0xb0,0xd8,0xcd,0x7d,0x87,
+ 0xf0,0x67,0xc4,0x66,0xf3,0x40,0x8e,0x16,0x6f,0x9a,0xdd,0xbc,0xbf,0xcb,0xa7,0xe9,
+ 0x5f,0x11,0x99,0x4f,0x5c,0xf4,0xfd,0x2b,0xda,0xfe,0x0c,0x6b,0x4f,0x6f,0xaa,0x4f,
+ 0x60,0xcc,0x71,0x28,0x0e,0x07,0xb8,0xeb,0x5f,0x2d,0xc6,0x59,0x5c,0x71,0x19,0x6c,
+ 0xe4,0x96,0xb1,0xd4,0xf6,0xf8,0x7e,0xbf,0xb2,0xc6,0x47,0xcf,0x43,0xf5,0xdf,0xc3,
+ 0x77,0xde,0x76,0x9b,0x0b,0x93,0xc1,0x45,0xfc,0xf1,0x5d,0x4a,0x4e,0x4a,0xfc,0xd8,
+ 0x20,0x57,0x92,0x78,0x3e,0xfc,0x0b,0x08,0x50,0xf2,0x02,0x28,0xfd,0x2b,0xbc,0x5b,
+ 0xdd,0xbf,0x2e,0x72,0x0e,0x7f,0x0a,0xfe,0x7b,0xb1,0xfa,0x14,0xa0,0x6a,0x4b,0x39,
+ 0xf4,0x3b,0x6b,0x36,0xe6,0x50,0x47,0xcb,0x51,0xbc,0xdc,0x1c,0x63,0x06,0xb3,0xa4,
+ 0x98,0x80,0x43,0x76,0xea,0x28,0x50,0xbb,0x05,0x1d,0x75,0x19,0x2d,0xcb,0x28,0x20,
+ 0x9c,0x81,0x58,0xb7,0x97,0x38,0x1b,0xc5,0x4d,0x71,0x70,0x17,0x70,0x38,0xcd,0x73,
+ 0xd7,0xd7,0x1c,0x64,0x1e,0xb5,0xb4,0x69,0x6a,0x74,0x53,0x5d,0x86,0x4d,0x76,0x56,
+ 0x43,0x93,0x8a,0xa9,0x25,0xce,0xe3,0x8f,0xf3,0x8a,0xca,0x9a,0x7f,0x98,0xf3,0xf5,
+ 0xaa,0xed,0x33,0x31,0xeb,0x5d,0x2a,0x91,0xdf,0x17,0x64,0x6c,0xc5,0x3e,0x57,0x1e,
+ 0x86,0xac,0xac,0x9d,0xc8,0xfa,0x73,0x58,0x10,0xc9,0xcb,0x64,0xe3,0xd2,0xaf,0x47,
+ 0x36,0x70,0xb9,0xe6,0xad,0xd3,0xd2,0xc6,0x6f,0x46,0x6e,0x45,0x70,0x44,0x80,0xf7,
+ 0xae,0xaa,0x06,0x0d,0x0a,0x9e,0xa4,0xd7,0x9f,0x07,0xc1,0x1c,0xfb,0xd7,0x53,0xa6,
+ 0xdc,0x6e,0x8f,0x63,0x1c,0xf6,0xae,0x59,0xd3,0xd7,0x54,0x29,0x3e,0xc5,0xdb,0x87,
+ 0x64,0x3e,0xdd,0xbe,0x95,0x47,0xcc,0xc1,0xc9,0xa9,0x2e,0x9b,0xb0,0xe7,0x22,0xb2,
+ 0x4c,0x9b,0x79,0xe4,0x57,0x99,0x89,0xa1,0xca,0xee,0x6f,0x4d,0xdd,0x68,0x69,0x79,
+ 0xc7,0x00,0x9a,0x78,0xb8,0x05,0x40,0xc9,0xcf,0xf8,0x56,0x70,0x97,0x28,0x39,0xc6,
+ 0x29,0xa6,0x50,0xa3,0xaf,0x1d,0x6b,0x91,0xc3,0x66,0x53,0xb6,0xc5,0x99,0xe6,0x0c,
+ 0xb9,0x3c,0xd5,0x36,0xb8,0xfd,0xde,0xec,0xe4,0xf7,0xaa,0x13,0x5c,0x8e,0x80,0xe3,
+ 0x35,0x4a,0x69,0xb0,0x30,0x2b,0x58,0xd3,0xf7,0x93,0x21,0xb4,0xe2,0xd0,0xcb,0xd9,
+ 0xf7,0x29,0x1d,0x73,0x5f,0x33,0x7c,0x63,0x3c,0xda,0x30,0xe7,0xe7,0x23,0x3f,0x85,
+ 0x7d,0x0b,0x3d,0xc6,0x33,0xec,0x2b,0xe6,0x3f,0x8c,0x77,0x61,0xee,0x6d,0x62,0xce,
+ 0x79,0x66,0x3f,0x87,0x15,0xf6,0x7c,0x37,0x4d,0xbc,0x5c,0x12,0xfe,0xb4,0x3e,0x57,
+ 0x89,0xda,0x58,0x29,0x9e,0x53,0xe6,0x97,0x05,0x47,0x14,0xc1,0xb4,0x2e,0x78,0xc8,
+ 0xfc,0x6b,0x32,0x19,0x70,0x73,0x9c,0x90,0x7a,0xd5,0xcf,0x39,0xb6,0xe3,0xad,0x7e,
+ 0x99,0xec,0xda,0x7a,0x1f,0x94,0xd8,0xab,0x32,0xe6,0x41,0xd0,0x7a,0xd4,0x4f,0x90,
+ 0x06,0x3d,0x2a,0x56,0x6c,0xbe,0x7f,0x4a,0xae,0xd9,0x61,0xc7,0x6c,0x8a,0xec,0xa4,
+ 0xb5,0x46,0x4d,0x59,0x80,0x23,0x38,0xe9,0x55,0x67,0x51,0x80,0xdd,0x7d,0xe8,0xdc,
+ 0x36,0x13,0x9c,0x9f,0xf0,0xa8,0xe4,0xc9,0x40,0x7b,0x57,0x7c,0x62,0xd6,0xcc,0x2e,
+ 0x9e,0xa5,0x7e,0x1a,0xa9,0xb2,0x15,0x93,0x39,0xfc,0x2a,0xfa,0x65,0x8e,0x17,0xd7,
+ 0x15,0x04,0xa0,0xac,0x80,0x1a,0xee,0xa6,0xf4,0x33,0x19,0x28,0x3e,0x50,0xc7,0x5f,
+ 0xad,0x45,0x1f,0xde,0x19,0xe0,0xd2,0xce,0xcd,0xc7,0x3c,0x0a,0xae,0x87,0xf7,0xa1,
+ 0x8f,0x71,0x5a,0xa1,0x17,0x22,0x2f,0xe6,0xf1,0xd7,0xde,0xae,0x21,0x20,0xf5,0xe0,
+ 0xfe,0x35,0x4a,0x13,0xfb,0xed,0xb5,0x73,0x70,0x0e,0x00,0xe3,0x68,0xe2,0xba,0xa1,
+ 0x1b,0x2b,0x89,0xb3,0x6a,0xcc,0x32,0x30,0x63,0xc0,0x3d,0x2b,0x52,0x29,0x3c,0xbe,
+ 0x49,0xcd,0x60,0xdb,0xcb,0xd8,0x7d,0x31,0x5a,0x4b,0x36,0x48,0x23,0xb5,0x68,0xa4,
+ 0xad,0x61,0x1d,0x6d,0x94,0xec,0x93,0x24,0x80,0xe3,0x15,0xea,0x70,0x1f,0xb4,0xd9,
+ 0x89,0x62,0xe4,0x80,0x33,0x5e,0x39,0x0b,0x7c,0x88,0xc5,0xb9,0xc5,0x7a,0x47,0x85,
+ 0xb5,0x2c,0xaf,0xd9,0xe4,0x23,0x06,0xb5,0xa5,0x66,0xad,0x2e,0xa6,0x15,0x62,0x99,
+ 0x64,0xc9,0xb6,0x4c,0x31,0xe8,0x4f,0x15,0xf4,0x37,0xc0,0xef,0x13,0x1d,0x2b,0x5c,
+ 0x16,0x92,0xb7,0xee,0x26,0xfd,0xdb,0x83,0xd3,0x6b,0xff,0x00,0x81,0xaf,0x9e,0x75,
+ 0x28,0x5e,0x2b,0x9d,0xeb,0xca,0xf5,0x15,0xd7,0xf8,0x36,0xf0,0xda,0x6a,0xb6,0xf2,
+ 0x83,0x8d,0xcc,0x07,0xf8,0x57,0x36,0x29,0x4a,0x31,0x53,0x5b,0xc5,0xdc,0x23,0x4a,
+ 0xf4,0xe4,0x8f,0xd0,0xad,0x62,0xd2,0x54,0xdf,0x1b,0x00,0x15,0xb9,0x5d,0xa3,0x39,
+ 0xf4,0x23,0xd8,0xd7,0x37,0xf6,0x01,0x16,0x18,0x67,0x38,0xc7,0xf9,0xc5,0x75,0xda,
+ 0x04,0xad,0xab,0xf8,0x76,0xde,0xe6,0x46,0x3e,0x6c,0x48,0x23,0x61,0xea,0x07,0x43,
+ 0xf9,0x55,0x1b,0xf8,0x96,0x15,0x7b,0x86,0x25,0x52,0x24,0x2e,0xe0,0x8e,0xb8,0x1c,
+ 0x73,0x5f,0x40,0xab,0x46,0x74,0xd5,0x55,0xb3,0xd4,0xf2,0x25,0x1f,0x78,0xf9,0x0f,
+ 0xf6,0x88,0xd5,0x85,0xb6,0x8b,0x73,0x6a,0xac,0x00,0x8e,0x35,0x8b,0x83,0xfc,0x73,
+ 0x10,0x08,0xfc,0xab,0xf3,0xfe,0x78,0xf7,0x2b,0xe0,0x63,0x8f,0xaf,0xe3,0x5e,0xe5,
+ 0xfb,0x5d,0xf8,0xa6,0x68,0x34,0x9d,0x3e,0xca,0x09,0x4a,0xdc,0x6a,0x37,0xed,0x3b,
+ 0x90,0x70,0x7c,0xb8,0x54,0xb7,0xfe,0x84,0x54,0x57,0xc6,0xba,0x6f,0x8e,0x2e,0xa1,
+ 0x5f,0x2a,0xf8,0x79,0x8a,0x46,0x37,0x0e,0xbf,0x95,0x7c,0xe3,0xc1,0x62,0x71,0x11,
+ 0xfa,0xdc,0x35,0x4d,0xbd,0x0f,0xa1,0xc1,0xc6,0xd4,0x8e,0xee,0xe5,0x4b,0x1f,0x6a,
+ 0xad,0xb0,0x85,0x50,0xdc,0x7d,0x7d,0x2a,0xb5,0xae,0xb5,0x67,0xa8,0x20,0x10,0xb0,
+ 0x2d,0x8c,0x15,0x3c,0x1a,0xd5,0x25,0x73,0x81,0xc0,0xe0,0xe7,0xfa,0x55,0xc2,0xf1,
+ 0x95,0xa7,0xa1,0x72,0x8b,0x5a,0x97,0x34,0xf8,0xc9,0x91,0xe3,0xfe,0xf2,0x1f,0xc7,
+ 0x1c,0xd5,0x4b,0xc8,0x77,0x29,0x6e,0x84,0x0c,0x81,0x5b,0xda,0x62,0xaa,0xdd,0xc4,
+ 0xc4,0x8c,0x39,0xc6,0x7e,0xa3,0x14,0x9a,0x8d,0xb0,0x8a,0x4c,0x1e,0xe4,0xfd,0x2b,
+ 0xd2,0xc3,0xa5,0x25,0x24,0x8c,0x1c,0xec,0xce,0x32,0x14,0x61,0x8d,0xa0,0x9c,0xd5,
+ 0xc4,0x0b,0xc0,0x1f,0x7b,0xa5,0x68,0x5b,0x29,0x78,0xb0,0x38,0xda,0x48,0x14,0xb1,
+ 0x59,0x92,0xa2,0x5c,0x0c,0xe4,0x8e,0xb9,0xa8,0xf6,0x36,0x49,0xa3,0x78,0xcc,0xdc,
+ 0xb5,0x50,0x6c,0xc3,0x31,0xe6,0xbb,0x9f,0x00,0xce,0xd0,0x5e,0xb6,0x4f,0xbf,0xe1,
+ 0x5c,0x34,0x3b,0x96,0xcb,0x71,0xe8,0x0f,0xf4,0xae,0xa3,0xc1,0xae,0xa6,0xf4,0x16,
+ 0x3d,0x54,0xfe,0x75,0x87,0xb2,0xb5,0x9d,0xb5,0x07,0x2b,0x9e,0x7f,0xe3,0x35,0x0b,
+ 0xe2,0xfd,0x58,0xaf,0x4f,0xb4,0x16,0x1f,0xf0,0x20,0x0d,0x64,0xc6,0x09,0x23,0xb8,
+ 0x1d,0xab,0x5f,0xc6,0xaf,0xff,0x00,0x15,0x56,0xa2,0x70,0x4f,0xef,0x47,0x3f,0x54,
+ 0x5a,0xc8,0xb7,0x6c,0x36,0x47,0x39,0x1f,0xce,0xbd,0x4c,0x3f,0xc2,0x91,0xc5,0x35,
+ 0x76,0xcd,0x18,0xc6,0x00,0xcd,0x3d,0x9f,0x8e,0x6a,0x16,0x7c,0x0a,0xa5,0x24,0xc4,
+ 0x8c,0x73,0x5d,0x37,0x25,0x31,0xb2,0x39,0x62,0x5b,0xde,0xa1,0x12,0x60,0xe6,0x86,
+ 0x6c,0x80,0x7b,0x1a,0xa6,0xe7,0x1d,0xf9,0xa5,0x2d,0x87,0xd4,0xd9,0x86,0x70,0x3a,
+ 0xf5,0xab,0xa2,0x6c,0x82,0x3b,0x63,0x8a,0xe7,0x12,0x50,0x1b,0x1d,0xc7,0xa5,0x5b,
+ 0xf3,0xf8,0x18,0x35,0x85,0x46,0x9c,0x6c,0xc5,0x26,0x6b,0x6f,0x24,0x60,0x76,0xfc,
+ 0xa9,0x52,0x4d,0xa6,0xb3,0x56,0x72,0xdd,0x38,0xc1,0xab,0x08,0xd9,0x3c,0x57,0x32,
+ 0xa7,0xad,0xc8,0x3a,0x4b,0x79,0x06,0x06,0x4f,0xbd,0x6d,0xdb,0xcd,0xfa,0x74,0xae,
+ 0x4a,0x39,0x02,0x80,0x7f,0x33,0x5a,0x90,0xce,0x06,0x32,0x6b,0x5a,0x7f,0x11,0x32,
+ 0x57,0x47,0x52,0x26,0xe9,0x83,0xf8,0xd6,0x8d,0x9d,0xce,0x5d,0x40,0x6e,0xf5,0xcb,
+ 0xac,0xc0,0xaf,0x5a,0xb7,0x04,0xf8,0x61,0x82,0x3e,0xb4,0xab,0x6e,0xda,0x22,0xd6,
+ 0x7a,0x1f,0x45,0xf8,0x2e,0xe0,0xee,0x56,0xcd,0x7b,0x4d,0xbd,0xc9,0x2b,0x9a,0xf9,
+ 0xbf,0xc1,0x37,0xd8,0x65,0x04,0xe6,0xbd,0xbe,0x1b,0xb0,0x22,0x19,0xc5,0x7e,0x1d,
+ 0xc5,0xe9,0xcb,0x1f,0x76,0x8f,0xd9,0xb8,0x5f,0x95,0x60,0x95,0x8d,0x49,0xae,0xcb,
+ 0xca,0x72,0x78,0xe9,0x56,0x21,0x60,0xdd,0x2b,0x95,0x7b,0x82,0xce,0x4e,0x6b,0x5e,
+ 0xce,0xe0,0x60,0x1c,0xfb,0x57,0xc0,0x63,0x23,0xce,0xdb,0x3e,0xbf,0x0b,0x24,0x99,
+ 0xd6,0x40,0x48,0x3c,0xd6,0xb4,0x52,0xe0,0xfe,0x15,0xce,0xc5,0x38,0x20,0x60,0xe3,
+ 0x35,0xa5,0x1b,0x93,0xc5,0x78,0x75,0x22,0xb5,0x3d,0x5a,0x7b,0x1a,0x97,0x12,0x82,
+ 0x9f,0x28,0xe4,0x56,0x3b,0x48,0x7a,0x66,0xac,0x3b,0x1c,0x56,0x7c,0x83,0x9e,0x3f,
+ 0x0a,0xce,0x10,0x68,0xb4,0xb5,0x2d,0xc3,0x26,0x46,0xd1,0x5a,0xb6,0xb3,0x85,0x70,
+ 0x18,0xf1,0x5c,0xe8,0x73,0x12,0xe4,0x9c,0x1a,0x64,0x57,0x64,0x1c,0xe6,0xb2,0x94,
+ 0x1c,0xa6,0x97,0x63,0x7e,0x5b,0x46,0xe7,0xff,0xd9};
diff --git a/lib/libesp32/berry/berry.exe b/lib/libesp32/berry/berry.exe
index 01fe9434b..49b7fca66 100644
Binary files a/lib/libesp32/berry/berry.exe and b/lib/libesp32/berry/berry.exe differ
diff --git a/lib/libesp32/berry/default/be_modtab.c b/lib/libesp32/berry/default/be_modtab.c
index 511a4fb88..153bce872 100644
--- a/lib/libesp32/berry/default/be_modtab.c
+++ b/lib/libesp32/berry/default/be_modtab.c
@@ -56,6 +56,9 @@ be_extern_native_module(mdns);
#ifdef USE_ZIGBEE
be_extern_native_module(zigbee);
#endif // USE_ZIGBEE
+#ifdef USE_BERRY_CAM
+be_extern_native_module(cam);
+#endif // USE_BERRY_CAM
// BLE
be_extern_native_module(MI32);
be_extern_native_module(BLE);
@@ -183,6 +186,9 @@ BERRY_LOCAL const bntvmodule_t* const be_module_table[] = {
&be_native_module(MI32),
&be_native_module(BLE),
#endif //USE_MI_ESP32
+#ifdef USE_BERRY_CAM
+ &be_native_module(cam),
+#endif
#ifdef USE_DISCOVERY
&be_native_module(mdns),
#endif // USE_DISCOVERY
@@ -225,6 +231,7 @@ be_extern_native_class(udp);
be_extern_native_class(webclient);
be_extern_native_class(tcpclient);
be_extern_native_class(tcpclientasync);
+be_extern_native_class(webserver_async);
be_extern_native_class(tcpserver);
be_extern_native_class(energy_struct);
// LVGL core classes
@@ -243,6 +250,10 @@ be_extern_native_class(lv_clock_icon);
be_extern_native_class(int64);
+#ifdef USE_BERRY_IMAGE
+be_extern_native_class(img);
+#endif // USE_BERRY_IMAGE
+
BERRY_LOCAL bclass_array be_class_table = {
#ifdef TASMOTA
/* first list are direct classes */
@@ -273,6 +284,9 @@ BERRY_LOCAL bclass_array be_class_table = {
&be_native_class(webclient),
&be_native_class(tcpclient),
&be_native_class(tcpclientasync),
+#ifdef USE_BERRY_DEBUG
+ &be_native_class(webserver_async), // include only when USE_BERRY_DEBUG is enabled
+#endif // USE_BERRY_DEBUG
#endif // USE_WEBCLIENT
#ifdef USE_BERRY_TCPSERVER
&be_native_class(tcpserver),
@@ -298,6 +312,10 @@ BERRY_LOCAL bclass_array be_class_table = {
&be_native_class(lv_clock_icon),
#endif // USE_LVGL
+#ifdef USE_BERRY_IMAGE
+ &be_native_class(img),
+#endif // USE_BERRY_IMAGE
+
#if defined(USE_I2S_AUDIO_BERRY) && (ESP_IDF_VERSION_MAJOR >= 5)
&be_native_class(AudioGenerator),
&be_native_class(AudioFileSource),
diff --git a/lib/libesp32/berry/src/be_bytecode.c b/lib/libesp32/berry/src/be_bytecode.c
index a636567fa..79ed503bd 100644
--- a/lib/libesp32/berry/src/be_bytecode.c
+++ b/lib/libesp32/berry/src/be_bytecode.c
@@ -297,6 +297,13 @@ static void save_global_info(bvm *vm, void *fp)
}
}
+void be_bytecode_save_to_fs(bvm *vm, void *fp, bproto *proto)
+{
+ save_header(fp);
+ save_global_info(vm, fp);
+ save_proto(vm, fp, proto);
+}
+
void be_bytecode_save(bvm *vm, const char *filename, bproto *proto)
{
void *fp = be_fopen(filename, "wb");
@@ -304,9 +311,7 @@ void be_bytecode_save(bvm *vm, const char *filename, bproto *proto)
bytecode_error(vm, be_pushfstring(vm,
"can not open file '%s'.", filename));
} else {
- save_header(fp);
- save_global_info(vm, fp);
- save_proto(vm, fp, proto);
+ be_bytecode_save_to_fs(vm, fp, proto);
be_fclose(fp);
}
}
diff --git a/lib/libesp32/berry/src/be_bytecode.h b/lib/libesp32/berry/src/be_bytecode.h
index 61223952c..4e1d54a3b 100644
--- a/lib/libesp32/berry/src/be_bytecode.h
+++ b/lib/libesp32/berry/src/be_bytecode.h
@@ -11,6 +11,7 @@
#include "be_object.h"
void be_bytecode_save(bvm *vm, const char *filename, bproto *proto);
+void be_bytecode_save_to_fs(bvm *vm, void *fp, bproto *proto);
bclosure* be_bytecode_load(bvm *vm, const char *filename);
bclosure* be_bytecode_load_from_fs(bvm *vm, void *fp);
bbool be_bytecode_check(const char *path);
diff --git a/lib/libesp32/berry/src/be_byteslib.c b/lib/libesp32/berry/src/be_byteslib.c
index 1789dca94..e2f2257e0 100644
--- a/lib/libesp32/berry/src/be_byteslib.c
+++ b/lib/libesp32/berry/src/be_byteslib.c
@@ -16,28 +16,7 @@
#include "be_constobj.h"
#include
#include
-
-#define BYTES_DEFAULT_SIZE 28 // default pre-reserved size for buffer (keep 4 bytes for len/size)
-#define BYTES_OVERHEAD 4 // bytes overhead to be added when allocating (used to store len and size)
-#define BYTES_HEADROOM 8 // keep a natural headroom of 8 bytes when resizing
-
-#define BYTES_SIZE_FIXED -1 // if size is -1, then the bytes object cannot be reized
-#define BYTES_SIZE_MAPPED -2 // if size is -2, then the bytes object is mapped to a fixed memory region, i.e. cannot be resized
-
-#define BYTES_RESIZE_ERROR "attribute_error"
-#define BYTES_RESIZE_MESSAGE "bytes object size if fixed and cannot be resized"
-/* be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); */
-
-typedef struct buf_impl {
- int32_t size; // size in bytes of the buffer
- int32_t len; // current size of the data in buffer. Invariant: len <= size
- uint8_t *bufptr; // the actual data
- int32_t prev_size; // previous value read from the instance
- int32_t prev_len; // previous value read from the instance
- uint8_t *prev_bufptr;
- bbool fixed; // is size fixed? (actually encoded as negative size)
- bbool mapped;
-} buf_impl;
+#include "be_byteslib.h"
/********************************************************************
** Base64 lib from https://github.com/Densaugeo/base64_arduino
@@ -244,7 +223,7 @@ static unsigned int decode_base64(unsigned char input[], unsigned char output[])
// shrink or increase. If increase, fill with zeores. Cannot go beyond `size`
static void buf_set_len(buf_impl* attr, const size_t len)
{
- uint16_t old_len = attr->len;
+ int32_t old_len = attr->len;
attr->len = ((int32_t)len <= attr->size) ? (int32_t)len : attr->size;
if (old_len < attr->len) {
memset((void*) &attr->bufptr[old_len], 0, attr->len - old_len);
@@ -481,7 +460,16 @@ static void buf_add_hex(buf_impl* attr, const char *hex, size_t len)
********************************************************************/
/* if the bufptr is null, don't try to dereference and raise an exception instead */
-static void check_ptr(bvm *vm, buf_impl* attr) {
+static void check_ptr(bvm *vm, const buf_impl* attr) {
+ if (!attr->bufptr) {
+ be_raise(vm, "value_error", "operation not allowed on pointer");
+ }
+}
+
+static void check_ptr_modifiable(bvm *vm, const buf_impl* attr) {
+ if (attr->solidified) {
+ be_raise(vm, "value_error", BYTES_READ_ONLY_MESSAGE);
+ }
if (!attr->bufptr) {
be_raise(vm, "value_error", "operation not allowed on pointer");
}
@@ -504,10 +492,14 @@ buf_impl m_read_attributes(bvm *vm, int idx)
int32_t signed_size = be_toint(vm, -1);
attr.fixed = bfalse;
attr.mapped = bfalse;
+ attr.solidified = bfalse;
if (signed_size < 0) {
if (signed_size == BYTES_SIZE_MAPPED) {
attr.mapped = btrue;
}
+ if (signed_size == BYTES_SIZE_SOLIDIFIED) {
+ attr.solidified = btrue;
+ }
signed_size = attr.len;
attr.fixed = btrue;
}
@@ -516,10 +508,18 @@ buf_impl m_read_attributes(bvm *vm, int idx)
return attr;
}
+static void m_assert_not_readlonly(bvm *vm, const buf_impl* attr)
+{
+ if (attr->solidified) {
+ be_raise(vm, "value_error", BYTES_READ_ONLY_MESSAGE);
+ }
+}
+
/* Write back attributes to the bytes instance, only if values changed after loading */
/* stack item 1 must contain the instance */
void m_write_attributes(bvm *vm, int rel_idx, const buf_impl * attr)
{
+ m_assert_not_readlonly(vm, attr);
int idx = be_absindex(vm, rel_idx);
if (attr->bufptr != attr->prev_bufptr) {
be_pushcomptr(vm, attr->bufptr);
@@ -549,6 +549,7 @@ void m_write_attributes(bvm *vm, int rel_idx, const buf_impl * attr)
// buf_impl * bytes_realloc(bvm *vm, buf_impl *oldbuf, int32_t size)
void bytes_realloc(bvm *vm, buf_impl * attr, int32_t size)
{
+ m_assert_not_readlonly(vm, attr);
if (!attr->fixed && size < 4) { size = 4; }
if (size > vm->bytesmaxsize) { size = vm->bytesmaxsize; }
size_t oldsize = attr->bufptr ? attr->size : 0;
@@ -590,7 +591,7 @@ static void bytes_new_object(bvm *vm, size_t size)
static int m_init(bvm *vm)
{
int argc = be_top(vm);
- buf_impl attr = { 0, 0, NULL, 0, -1, NULL, bfalse, bfalse }; /* initialize prev_values to invalid to force a write at the end */
+ buf_impl attr = { 0, 0, NULL, 0, -1, NULL, bfalse, bfalse, bfalse }; /* initialize prev_values to invalid to force a write at the end */
/* size cannot be 0, len cannot be negative */
const char * hex_in = NULL;
@@ -713,7 +714,7 @@ buf_impl bytes_check_data(bvm *vm, size_t add_size) {
return attr;
}
-static size_t tohex(char * out, size_t outsz, const uint8_t * in, size_t insz) {
+size_t be_bytes_tohex(char * out, size_t outsz, const uint8_t * in, size_t insz) {
static const char * hex = "0123456789ABCDEF";
const uint8_t * pin = in;
char * pout = out;
@@ -745,7 +746,7 @@ static int m_tostring(bvm *vm)
char * hex_out = be_pushbuffer(vm, hex_len);
size_t l = be_strlcpy(hex_out, "bytes('", hex_len);
- l += tohex(&hex_out[l], hex_len - l, attr.bufptr, len);
+ l += be_bytes_tohex(&hex_out[l], hex_len - l, attr.bufptr, len);
if (truncated) {
l += be_strlcpy(&hex_out[l], "...", hex_len - l);
}
@@ -767,7 +768,7 @@ static int m_tohex(bvm *vm)
size_t hex_len = len * 2 + 1;
char * hex_out = be_pushbuffer(vm, hex_len);
- size_t l = tohex(hex_out, hex_len, attr.bufptr, len);
+ size_t l = be_bytes_tohex(hex_out, hex_len, attr.bufptr, len);
be_pushnstring(vm, hex_out, l); /* make escape string from buffer */
be_remove(vm, -2); /* remove buffer */
@@ -795,7 +796,7 @@ static int m_fromstring(bvm *vm)
const char *s = be_tostring(vm, 2);
int32_t len = be_strlen(vm, 2); /* calling be_strlen to support null chars in string */
buf_impl attr = bytes_check_data(vm, 0);
- check_ptr(vm, &attr);
+ check_ptr_modifiable(vm, &attr);
if (attr.fixed && attr.len != len) {
be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE);
}
@@ -823,7 +824,7 @@ static int m_add(bvm *vm)
{
int argc = be_top(vm);
buf_impl attr = bytes_check_data(vm, 4); /* we reserve 4 bytes anyways */
- check_ptr(vm, &attr);
+ check_ptr_modifiable(vm, &attr);
if (attr.fixed) { be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); }
if (argc >= 2 && be_isint(vm, 2)) {
int32_t v = be_toint(vm, 2);
@@ -867,9 +868,15 @@ static int m_get(bvm *vm, bbool sign)
if (argc >= 3 && be_isint(vm, 3)) {
vsize = be_toint(vm, 3);
}
+ if (idx < 0) {
+ idx = attr.len + idx; /* if index is negative, count from end */
+ }
+ if (idx < 0) {
+ vsize = 0; /* if still negative, then invalid, return 0 */
+ }
int ret = 0;
switch (vsize) {
- case 0: break;
+ case 0: break;
case -1: /* fallback below */
case 1: ret = buf_get1(&attr, idx);
if (sign) { ret = (int8_t)(uint8_t) ret; }
@@ -891,11 +898,7 @@ static int m_get(bvm *vm, bbool sign)
default: be_raise(vm, "type_error", "size must be -4, -3, -2, -1, 0, 1, 2, 3 or 4.");
}
be_pop(vm, argc - 1);
- if (vsize != 0) {
- be_pushint(vm, ret);
- } else {
- be_pushnil(vm);
- }
+ be_pushint(vm, ret);
be_return(vm);
}
be_return_nil(vm);
@@ -912,14 +915,20 @@ static int m_getfloat(bvm *vm)
check_ptr(vm, &attr);
if (argc >=2 && be_isint(vm, 2)) {
int32_t idx = be_toint(vm, 2);
- bbool be = bfalse; /* little endian? */
- if (argc >= 3) {
- be = be_tobool(vm, 3);
+ float ret_f = 0;
+ if (idx < 0) {
+ idx = attr.len + idx; /* if index is negative, count from end */
+ }
+ if (idx >= 0) {
+ bbool be = bfalse; /* little endian? */
+ if (argc >= 3) {
+ be = be_tobool(vm, 3);
+ }
+ int32_t ret_i = be ? buf_get4_be(&attr, idx) : buf_get4_le(&attr, idx);
+ ret_f = *(float*) &ret_i;
}
- int32_t ret_i = be ? buf_get4_be(&attr, idx) : buf_get4_le(&attr, idx);
- float* ret_f = (float*) &ret_i;
be_pop(vm, argc - 1);
- be_pushreal(vm, *ret_f);
+ be_pushreal(vm, ret_f);
be_return(vm);
}
be_return_nil(vm);
@@ -949,7 +958,7 @@ static int m_set(bvm *vm)
{
int argc = be_top(vm);
buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */
- check_ptr(vm, &attr);
+ check_ptr_modifiable(vm, &attr);
if (argc >=3 && be_isint(vm, 2) && be_isint(vm, 3)) {
int32_t idx = be_toint(vm, 2);
int32_t value = be_toint(vm, 3);
@@ -957,8 +966,14 @@ static int m_set(bvm *vm)
if (argc >= 4 && be_isint(vm, 4)) {
vsize = be_toint(vm, 4);
}
+ if (idx < 0) {
+ idx = attr.len + idx; /* if index is negative, count from end */
+ }
+ if (idx < 0) {
+ vsize = 0; /* if still negative, then invalid, do nothing */
+ }
switch (vsize) {
- case 0: break;
+ case 0: break;
case -1: /* fallback below */
case 1: buf_set1(&attr, idx, value); break;
case 2: buf_set2_le(&attr, idx, value); break;
@@ -970,7 +985,7 @@ static int m_set(bvm *vm)
default: be_raise(vm, "type_error", "size must be -4, -3, -2, -1, 0, 1, 2, 3 or 4.");
}
be_pop(vm, argc - 1);
- m_write_attributes(vm, 1, &attr); /* update attributes */
+ // m_write_attributes(vm, 1, &attr); /* update attributes */
be_return_nil(vm);
}
be_return_nil(vm);
@@ -985,18 +1000,23 @@ static int m_setfloat(bvm *vm)
{
int argc = be_top(vm);
buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */
- check_ptr(vm, &attr);
+ check_ptr_modifiable(vm, &attr);
if (argc >=3 && be_isint(vm, 2) && (be_isint(vm, 3) || be_isreal(vm, 3))) {
int32_t idx = be_toint(vm, 2);
- float val_f = (float) be_toreal(vm, 3);
- int32_t* val_i = (int32_t*) &val_f;
- bbool be = bfalse;
- if (argc >= 4) {
- be = be_tobool(vm, 4);
+ if (idx < 0) {
+ idx = attr.len + idx; /* if index is negative, count from end */
+ }
+ if (idx >= 0) {
+ float val_f = (float) be_toreal(vm, 3);
+ int32_t* val_i = (int32_t*) &val_f;
+ bbool be = bfalse;
+ if (argc >= 4) {
+ be = be_tobool(vm, 4);
+ }
+ if (be) { buf_set4_be(&attr, idx, *val_i); } else { buf_set4_le(&attr, idx, *val_i); }
+ be_pop(vm, argc - 1);
+ // m_write_attributes(vm, 1, &attr); /* update attributes */
}
- if (be) { buf_set4_be(&attr, idx, *val_i); } else { buf_set4_le(&attr, idx, *val_i); }
- be_pop(vm, argc - 1);
- m_write_attributes(vm, 1, &attr); /* update attributes */
be_return_nil(vm);
}
be_return_nil(vm);
@@ -1011,7 +1031,7 @@ static int m_addfloat(bvm *vm)
{
int argc = be_top(vm);
buf_impl attr = bytes_check_data(vm, 4); /* we reserve 4 bytes anyways */
- check_ptr(vm, &attr);
+ check_ptr_modifiable(vm, &attr);
if (attr.fixed) { be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); }
if (argc >=2 && (be_isint(vm, 2) || be_isreal(vm, 2))) {
float val_f = (float) be_toreal(vm, 2);
@@ -1040,12 +1060,15 @@ static int m_setbytes(bvm *vm)
{
int argc = be_top(vm);
buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */
- check_ptr(vm, &attr);
+ check_ptr_modifiable(vm, &attr);
if (argc >=3 && be_isint(vm, 2) && (be_isbytes(vm, 3))) {
int32_t idx = be_toint(vm, 2);
size_t from_len_total;
const uint8_t* buf_ptr = (const uint8_t*) be_tobytes(vm, 3, &from_len_total);
- if (idx < 0) { idx = 0; }
+ if (idx < 0) {
+ idx = attr.len + idx; /* if index is negative, count from end */
+ }
+ if (idx < 0) { idx = 0; } /* if still negative, start from offset 0 */
if (idx >= attr.len) { idx = attr.len; }
int32_t from_byte = 0;
@@ -1084,7 +1107,7 @@ static int m_reverse(bvm *vm)
{
int argc = be_top(vm);
buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */
- check_ptr(vm, &attr);
+ check_ptr_modifiable(vm, &attr);
int32_t idx = 0; /* start from index 0 */
int32_t len = attr.len; /* entire len */
@@ -1092,6 +1115,7 @@ static int m_reverse(bvm *vm)
if (argc >= 2 && be_isint(vm, 2)) {
idx = be_toint(vm, 2);
+ if (idx < 0) { idx = attr.len + idx; } /* if negative, count from end */
if (idx < 0) { idx = 0; } /* railguards */
if (idx > attr.len) { idx = attr.len; }
}
@@ -1135,13 +1159,16 @@ static int m_setitem(bvm *vm)
{
int argc = be_top(vm);
buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */
- check_ptr(vm, &attr);
+ check_ptr_modifiable(vm, &attr);
if (argc >=3 && be_isint(vm, 2) && be_isint(vm, 3)) {
int index = be_toint(vm, 2);
int val = be_toint(vm, 3);
+ if (index < 0) {
+ index += attr.len; /* if index is negative, count from end */
+ }
if (index >= 0 && index < attr.len) {
buf_set1(&attr, index, val);
- m_write_attributes(vm, 1, &attr); /* update attributes */
+ // m_write_attributes(vm, 1, &attr); /* update attributes */
be_return_nil(vm);
}
}
@@ -1153,7 +1180,7 @@ static int m_item(bvm *vm)
{
int argc = be_top(vm);
buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */
- check_ptr(vm, &attr);
+ check_ptr_modifiable(vm, &attr);
if (argc >=2 && be_isint(vm, 2)) { /* single byte */
int index = be_toint(vm,2);
if (index < 0) {
@@ -1215,6 +1242,7 @@ static int m_resize(bvm *vm)
{
int argc = be_top(vm);
buf_impl attr = m_read_attributes(vm, 1);
+ check_ptr_modifiable(vm, &attr);
if (argc <= 1 || !be_isint(vm, 2)) {
be_raise(vm, "type_error", "size must be of type 'int'");
@@ -1237,6 +1265,7 @@ static int m_resize(bvm *vm)
static int m_clear(bvm *vm)
{
buf_impl attr = m_read_attributes(vm, 1);
+ check_ptr_modifiable(vm, &attr);
if (attr.fixed) { be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); }
attr.len = 0;
m_write_attributes(vm, 1, &attr); /* update instance */
@@ -1293,7 +1322,7 @@ static int m_connect(bvm *vm)
{
int argc = be_top(vm);
buf_impl attr = m_read_attributes(vm, 1);
- check_ptr(vm, &attr);
+ check_ptr_modifiable(vm, &attr);
if (attr.fixed) { be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); }
if (argc >= 2 && (be_isbytes(vm, 2) || be_isint(vm, 2) || be_isstring(vm, 2))) {
if (be_isint(vm, 2)) {
@@ -1390,7 +1419,7 @@ static int m_fromb64(bvm *vm)
int32_t bin_len = decode_base64_length((unsigned char*)s); /* do a first pass to calculate the buffer size */
buf_impl attr = m_read_attributes(vm, 1);
- check_ptr(vm, &attr);
+ check_ptr_modifiable(vm, &attr);
if (attr.fixed && attr.len != bin_len) {
be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE);
}
@@ -1429,7 +1458,7 @@ static int m_fromhex(bvm *vm)
int32_t bin_len = (s_len - from) / 2;
buf_impl attr = m_read_attributes(vm, 1);
- check_ptr(vm, &attr);
+ check_ptr_modifiable(vm, &attr);
if (attr.fixed && attr.len != bin_len) {
be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE);
}
@@ -1483,6 +1512,18 @@ static int m_is_mapped(bvm *vm)
be_return(vm);
}
+/*
+ * Returns `btrue` if the buffer is solidified and read only
+ *
+ * `isreadonly() -> bool`
+ */
+static int m_is_readonly(bvm *vm)
+{
+ buf_impl attr = m_read_attributes(vm, 1);
+ be_pushbool(vm, attr.solidified);
+ be_return(vm);
+}
+
/*
* Change the pointer to a mapped buffer.
*
@@ -1497,6 +1538,9 @@ static int m_change_buffer(bvm *vm)
int argc = be_top(vm);
if (argc >= 2 && be_iscomptr(vm, 2)) {
buf_impl attr = m_read_attributes(vm, 1);
+ if (attr.solidified) {
+ be_raise(vm, "value_error", BYTES_READ_ONLY_MESSAGE);
+ }
if (!attr.mapped) {
be_raise(vm, "type_error", "bytes() object must be mapped");
}
@@ -1764,11 +1808,12 @@ void be_load_byteslib(bvm *vm)
{
static const bnfuncinfo members[] = {
{ ".p", NULL },
- { ".size", NULL },
{ ".len", NULL },
+ { ".size", NULL },
{ "_buffer", m_buffer },
{ "_change_buffer", m_change_buffer },
{ "ismapped", m_is_mapped },
+ { "isreadonly", m_is_readonly },
{ "init", m_init },
{ "deinit", m_deinit },
{ "tostring", m_tostring },
@@ -1810,14 +1855,18 @@ void be_load_byteslib(bvm *vm)
be_regclass(vm, "bytes", members);
}
#else
+
+#include "../generate/be_const_bytes_def.h"
+
/* @const_object_info_begin
class be_class_bytes (scope: global, name: bytes) {
.p, var
- .size, var
.len, var
+ .size, var
_buffer, func(m_buffer)
_change_buffer, func(m_change_buffer)
ismapped, func(m_is_mapped)
+ isreadonly, func(m_is_readonly)
init, func(m_init)
deinit, func(m_deinit)
tostring, func(m_tostring)
diff --git a/lib/libesp32/berry/src/be_byteslib.h b/lib/libesp32/berry/src/be_byteslib.h
new file mode 100644
index 000000000..bcf98d125
--- /dev/null
+++ b/lib/libesp32/berry/src/be_byteslib.h
@@ -0,0 +1,44 @@
+/********************************************************************
+** Copyright (c) 2018-2020 Guan Wenliang - Stephan Hadinger
+** This file is part of the Berry default interpreter.
+** skiars@qq.com, https://github.com/Skiars/berry
+** See Copyright Notice in the LICENSE file or at
+** https://github.com/Skiars/berry/blob/master/LICENSE
+********************************************************************/
+#ifndef __BE_BYTESLIB_H
+#define __BE_BYTESLIB_H
+
+#include "be_object.h"
+
+#define BYTES_DEFAULT_SIZE 28 /* default pre-reserved size for buffer (keep 4 bytes for len/size) */
+#define BYTES_OVERHEAD 4 /* bytes overhead to be added when allocating (used to store len and size) */
+#define BYTES_HEADROOM 8 /* keep a natural headroom of 8 bytes when resizing */
+
+#define BYTES_SIZE_FIXED -1 /* if size is -1, then the bytes object cannot be reized */
+#define BYTES_SIZE_MAPPED -2 /* if size is -2, then the bytes object is mapped to a fixed memory region, i.e. cannot be resized */
+#define BYTES_SIZE_SOLIDIFIED -3 /* is size is -3, then the bytes object is solidified and cannot be resized nor modified */
+
+#define BYTES_RESIZE_ERROR "attribute_error"
+#define BYTES_RESIZE_MESSAGE "bytes object size if fixed and cannot be resized"
+#define BYTES_READ_ONLY_MESSAGE "bytes object is read only"
+/* be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); */
+
+typedef struct buf_impl {
+ int32_t size; // size in bytes of the buffer
+ int32_t len; // current size of the data in buffer. Invariant: len <= size
+ uint8_t *bufptr; // the actual data
+ int32_t prev_size; // previous value read from the instance
+ int32_t prev_len; // previous value read from the instance
+ uint8_t *prev_bufptr;
+ bbool fixed; // is size fixed? (actually encoded as negative size)
+ bbool mapped;
+ bbool solidified;
+} buf_impl;
+
+size_t be_bytes_tohex(char * out, size_t outsz, const uint8_t * in, size_t insz);
+
+#if BE_USE_PRECOMPILED_OBJECT
+#include "../generate/be_const_bytes.h"
+#endif
+
+#endif
diff --git a/lib/libesp32/berry/src/be_class.h b/lib/libesp32/berry/src/be_class.h
index f80ca8799..12f317b5f 100644
--- a/lib/libesp32/berry/src/be_class.h
+++ b/lib/libesp32/berry/src/be_class.h
@@ -49,6 +49,16 @@ struct binstance {
bvalue members[1]; /* members variable data field */
};
+/* special structure accepting 3 instance variables used only for bytes() solidification */
+struct binstance_arg3 {
+ bcommon_header;
+ struct binstance *super;
+ struct binstance *sub;
+ bclass *_class;
+ bgcobject *gray; /* for gc gray list */
+ bvalue members[3]; /* members variable data field */
+};
+
bclass* be_newclass(bvm *vm, bstring *name, bclass *super);
void be_class_compress(bvm *vm, bclass *c);
int be_class_attribute(bvm *vm, bclass *c, bstring *attr);
diff --git a/lib/libesp32/berry/src/be_code.c b/lib/libesp32/berry/src/be_code.c
index ba8ea7dba..4213d54a2 100644
--- a/lib/libesp32/berry/src/be_code.c
+++ b/lib/libesp32/berry/src/be_code.c
@@ -307,7 +307,7 @@ static int exp2const(bfuncinfo *finfo, bexpdesc *e)
{
int idx = findconst(finfo, e); /* does the constant already exist? */
if (idx == -1) { /* if not add it */
- bvalue k;
+ bvalue k = {};
switch (e->type) {
case ETINT:
k.type = BE_INT;
@@ -882,7 +882,7 @@ void be_code_index(bfuncinfo *finfo, bexpdesc *c, bexpdesc *k)
void be_code_class(bfuncinfo *finfo, bexpdesc *dst, bclass *c)
{
int src;
- bvalue var;
+ bvalue var = {};
var_setclass(&var, c); /* new var of CLASS type */
src = newconst(finfo, &var); /* allocate a new constant and return kreg */
if (dst->type == ETLOCAL) { /* if target is a local variable, just assign */
@@ -965,7 +965,7 @@ void be_code_raise(bfuncinfo *finfo, bexpdesc *e1, bexpdesc *e2)
void be_code_implicit_class(bfuncinfo *finfo, bexpdesc *e, bclass *c)
{
- bvalue k;
+ bvalue k = {};
k.type = BE_CLASS;
k.v.p = c;
int idx = newconst(finfo, &k); /* create new constant */
diff --git a/lib/libesp32/berry/src/be_constobj.h b/lib/libesp32/berry/src/be_constobj.h
index 34245050a..86a871563 100644
--- a/lib/libesp32/berry/src/be_constobj.h
+++ b/lib/libesp32/berry/src/be_constobj.h
@@ -19,6 +19,7 @@ extern "C" {
#include "be_class.h"
#include "be_string.h"
#include "be_module.h"
+#include "be_byteslib.h"
#ifndef __cplusplus
@@ -27,6 +28,40 @@ extern "C" {
.type = (_t), \
.marked = GC_CONST
+#define be_define_const_bytes(_name, ...) \
+ const binstance_arg3 be_const_instance_##_name = { \
+ be_const_header(BE_INSTANCE), \
+ .super = NULL, \
+ .sub = NULL, \
+ ._class = (bclass*) &be_class_bytes, \
+ .members = { \
+ {.v.c = (const void*) & (const uint8_t[]) { __VA_ARGS__ }, \
+ .type = BE_COMPTR }, \
+ be_const_int(sizeof(#_name) / 2), \
+ be_const_int(BYTES_SIZE_SOLIDIFIED) \
+ } \
+ }
+
+/* special version to define a default empty bytes */
+#define be_define_const_bytes_empty() \
+ const binstance_arg3 be_const_instance_ = { \
+ be_const_header(BE_INSTANCE), \
+ .super = NULL, \
+ .sub = NULL, \
+ ._class = (bclass*) &be_class_bytes, \
+ .members = { \
+ {.v.c = (const void*) & (const uint8_t[]) { 0x00 }, \
+ .type = BE_COMPTR }, \
+ be_const_int(0), \
+ be_const_int(BYTES_SIZE_SOLIDIFIED) \
+ } \
+ }
+
+#define be_const_bytes_instance(_bytes) { \
+ .v.c = &be_const_instance_##_bytes, \
+ .type = BE_INSTANCE \
+}
+
#define be_define_const_str_weak(_name, _s, _len) \
const bcstring be_const_str_##_name = { \
.next = NULL, \
@@ -232,6 +267,27 @@ const bntvmodule_t be_native_module(_module) = { \
.members = _members \
}
+#define be_nested_simple_instance_1_arg(_class_ptr, arg0) \
+ & (const binstance) { \
+ be_const_header(BE_INSTANCE), \
+ .super = NULL, \
+ .sub = NULL, \
+ ._class = (bclass*) _class_ptr, \
+ .members = { arg0 } \
+ }
+
+
+/* only instances with no super and no sub instance are supported */
+/* primarily for `list` and `map`*/
+#define be_nested_simple_instance_3_args(_class_ptr, arg0, arg1, arg2) \
+ & (const binstance_arg3) { \
+ be_const_header(BE_INSTANCE), \
+ .super = NULL, \
+ .sub = NULL, \
+ ._class = (bclass*) _class_ptr, \
+ .members = { arg0, arg1, arg2 } \
+ }
+
#define be_nested_map(_size, _slots) \
& (const bmap) { \
be_const_header(BE_MAP), \
@@ -298,6 +354,9 @@ const bntvmodule_t be_native_module(_module) = { \
#else
+// #define be_define_const_bytes(_name, ...) \
+// const uint8_t be_const_bin_##_name[] = { __VA_ARGS__ }
+
#define be_define_const_str_weak(_name, _s, _len) \
const bcstring be_const_str_##_name = { \
NULL, \
@@ -440,6 +499,7 @@ const bntvmodule_t be_native_module_##_module = { \
/* provide pointers to map and list classes for solidified code */
extern const bclass be_class_list;
extern const bclass be_class_map;
+extern const bclass be_class_bytes;
#ifdef __cplusplus
}
diff --git a/lib/libesp32/berry/src/be_filelib.c b/lib/libesp32/berry/src/be_filelib.c
index 87691809b..cfb882b11 100644
--- a/lib/libesp32/berry/src/be_filelib.c
+++ b/lib/libesp32/berry/src/be_filelib.c
@@ -9,6 +9,7 @@
#include "be_mem.h"
#include "be_sys.h"
#include "be_gc.h"
+#include "be_bytecode.h"
#include
#define READLINE_STEP 100
@@ -26,7 +27,10 @@ static int i_write(bvm *vm)
} else {
data = be_tobytes(vm, 2, &size);
}
- be_fwrite(fh, data, size);
+ size_t bw = be_fwrite(fh, data, size);
+ if (bw != size) {
+ be_raise(vm, "io_error", "write failed");
+ }
}
be_return_nil(vm);
}
@@ -79,15 +83,17 @@ static int i_readbytes(bvm *vm)
be_call(vm, 2); /* call b.resize(size) */
be_pop(vm, 3); /* bytes() instance is at top */
- char *buffer = (char*) be_tobytes(vm, -1, NULL); /* we get the address of the internam buffer of size 'size' */
- size = be_fread(fh, buffer, size);
+ char *buffer = (char*) be_tobytes(vm, -1, NULL); /* we get the address of the internal buffer of size 'size' */
+ size_t read_size = be_fread(fh, buffer, size);
- /* resize if something went wrong */
- be_getmember(vm, -1, "resize");
- be_pushvalue(vm, -2);
- be_pushint(vm, size);
- be_call(vm, 2); /* call b.resize(size) */
- be_pop(vm, 3); /* bytes() instance is at top */
+ if (size != read_size) {
+ /* resize if something went wrong */
+ be_getmember(vm, -1, "resize");
+ be_pushvalue(vm, -2);
+ be_pushint(vm, read_size);
+ be_call(vm, 2); /* call b.resize(size) */
+ be_pop(vm, 3); /* bytes() instance is at top */
+ }
} else {
be_pushbytes(vm, NULL, 0);
}
@@ -176,6 +182,26 @@ static int i_close(bvm *vm)
be_return_nil(vm);
}
+static int i_savecode(bvm *vm)
+{
+ int argc = be_top(vm);
+ if (argc >= 2 && be_isclosure(vm, 2)) {
+ be_getmember(vm, 1, ".p");
+ if (be_iscomptr(vm, -1)) {
+ void *fh = be_tocomptr(vm, -1);
+ bvalue *v = be_indexof(vm, 2);
+ if (var_isclosure(v)) {
+ bclosure *cl = var_toobj(v);
+ bproto *pr = cl->proto;
+ be_bytecode_save_to_fs(vm, fh, pr);
+ }
+ }
+ } else {
+ be_raise(vm, "type_error", "closure expected");
+ }
+ be_return_nil(vm);
+}
+
#if !BE_USE_PRECOMPILED_OBJECT
static int m_open(bvm *vm)
#else
@@ -196,6 +222,7 @@ int be_nfunc_open(bvm *vm)
{ "flush", i_flush },
{ "close", i_close },
{ "deinit", i_close },
+ { "savecode", i_savecode },
{ NULL, NULL }
};
fname = argc >= 1 && be_isstring(vm, 1) ? be_tostring(vm, 1) : NULL;
diff --git a/lib/libesp32/berry/src/be_gc.c b/lib/libesp32/berry/src/be_gc.c
index ee5e1a062..35b0737f7 100644
--- a/lib/libesp32/berry/src/be_gc.c
+++ b/lib/libesp32/berry/src/be_gc.c
@@ -320,7 +320,11 @@ static void free_proto(bvm *vm, bgcobject *obj)
bproto *proto = cast_proto(obj);
gc_try (proto != NULL) {
be_free(vm, proto->upvals, proto->nupvals * sizeof(bupvaldesc));
- be_free(vm, proto->ktab, proto->nconst * sizeof(bvalue));
+ if (!(proto->varg & BE_VA_SHARED_KTAB)) { /* do not free shared ktab */
+ /*caveat: the shared ktab is never GCed, in practice this is not a problem */
+ /* since shared ktab are primarily meant for solidification hence not gc-able */
+ be_free(vm, proto->ktab, proto->nconst * sizeof(bvalue));
+ }
be_free(vm, proto->ptab, proto->nproto * sizeof(bproto*));
be_free(vm, proto->code, proto->codesize * sizeof(binstruction));
#if BE_DEBUG_RUNTIME_INFO
diff --git a/lib/libesp32/berry/src/be_mathlib.c b/lib/libesp32/berry/src/be_mathlib.c
index 52abeffd7..0cef918e0 100644
--- a/lib/libesp32/berry/src/be_mathlib.c
+++ b/lib/libesp32/berry/src/be_mathlib.c
@@ -89,6 +89,17 @@ static int m_floor(bvm *vm)
be_return(vm);
}
+static int m_round(bvm *vm)
+{
+ if (be_top(vm) >= 1 && be_isnumber(vm, 1)) {
+ breal x = be_toreal(vm, 1);
+ be_pushreal(vm, mathfunc(round)(x));
+ } else {
+ be_pushreal(vm, (breal)0.0);
+ }
+ be_return(vm);
+}
+
static int m_sin(bvm *vm)
{
if (be_top(vm) >= 1 && be_isnumber(vm, 1)) {
@@ -292,6 +303,61 @@ static int m_rand(bvm *vm)
be_return(vm);
}
+/* check that all arguments are either int or real, and return true if at least one is real */
+static int m_check_int_or_has_real(bvm *vm)
+{
+ int argc = be_top(vm);
+ int has_real = 0;
+ for (int i = 1; i <= argc; ++i) {
+ if (be_isreal(vm, i)) {
+ has_real = 1;
+ } else if (!be_isint(vm, i)) {
+ be_raise(vm, "type_error", "arguments must be numbers");
+ }
+ }
+ return has_real;
+}
+
+static int m_min_max(bvm *vm, int is_min) {
+ int argc = be_top(vm);
+ if (argc > 0) {
+ /* see if at least one argument is float, else they are all ints */
+ int has_real = m_check_int_or_has_real(vm);
+ if (has_real) {
+ breal bound = be_toreal(vm, 1);
+ for (int i = 2; i <= argc; ++i) {
+ breal x = be_toreal(vm, i);
+ if (is_min ? (x < bound) : (x > bound)) {
+ bound = x;
+ }
+ }
+ be_pushreal(vm, bound);
+ } else {
+ bint bound = be_toint(vm, 1);
+ for (int i = 2; i <= argc; ++i) {
+ bint x = be_toint(vm, i);
+ if (is_min ? (x < bound) : (x > bound)) {
+ bound = x;
+ }
+ }
+ be_pushint(vm, bound);
+ }
+ be_return(vm);
+ }
+ be_return_nil(vm);
+
+}
+
+int m_min(bvm *vm)
+{
+ return m_min_max(vm, 1);
+}
+
+int m_max(bvm *vm)
+{
+ return m_min_max(vm, 0);
+}
+
#if !BE_USE_PRECOMPILED_OBJECT
be_native_module_attr_table(math) {
be_native_module_function("isnan", m_isnan),
@@ -299,6 +365,7 @@ be_native_module_attr_table(math) {
be_native_module_function("abs", m_abs),
be_native_module_function("ceil", m_ceil),
be_native_module_function("floor", m_floor),
+ be_native_module_function("round", m_round),
be_native_module_function("sin", m_sin),
be_native_module_function("cos", m_cos),
be_native_module_function("tan", m_tan),
@@ -318,6 +385,8 @@ be_native_module_attr_table(math) {
be_native_module_function("pow", m_pow),
be_native_module_function("srand", m_srand),
be_native_module_function("rand", m_rand),
+ be_native_module_function("min", m_min),
+ be_native_module_function("max", m_max),
be_native_module_real("pi", M_PI),
be_native_module_real("nan", NAN),
be_native_module_real("inf", INFINITY),
@@ -334,6 +403,7 @@ module math (scope: global, depend: BE_USE_MATH_MODULE) {
abs, func(m_abs)
ceil, func(m_ceil)
floor, func(m_floor)
+ round, func(m_round)
sin, func(m_sin)
cos, func(m_cos)
tan, func(m_tan)
@@ -353,6 +423,8 @@ module math (scope: global, depend: BE_USE_MATH_MODULE) {
pow, func(m_pow)
srand, func(m_srand)
rand, func(m_rand)
+ min, func(m_min)
+ max, func(m_max)
pi, real(M_PI)
nan, real(NAN)
inf, real(INFINITY)
diff --git a/lib/libesp32/berry/src/be_object.h b/lib/libesp32/berry/src/be_object.h
index e386cfa25..1c8d40572 100644
--- a/lib/libesp32/berry/src/be_object.h
+++ b/lib/libesp32/berry/src/be_object.h
@@ -42,6 +42,8 @@
#define BE_VA_VARARG (1 << 0) /* function has variable number of arguments */
#define BE_VA_METHOD (1 << 1) /* function is a method (this is only a hint) */
#define BE_VA_STATICMETHOD (1 << 2) /* the function is a static method and has the class as implicit '_class' variable */
+#define BE_VA_SHARED_KTAB (1 << 3) /* the funciton has a shared consolidated ktab */
+#define BE_VA_NOCOMPACT (1 << 4) /* the funciton has a shared consolidated ktab */
#define array_count(a) (sizeof(a) / sizeof((a)[0]))
#define bcommon_header \
@@ -62,6 +64,7 @@ typedef struct bclosure bclosure;
typedef struct bntvclos bntvclos;
typedef struct bclass bclass;
typedef struct binstance binstance;
+typedef struct binstance_arg3 binstance_arg3;
typedef struct blist blist;
typedef struct bmap bmap;
typedef struct bupval bupval;
diff --git a/lib/libesp32/berry/src/be_parser.c b/lib/libesp32/berry/src/be_parser.c
index 1bec0863f..6be271dd8 100644
--- a/lib/libesp32/berry/src/be_parser.c
+++ b/lib/libesp32/berry/src/be_parser.c
@@ -311,7 +311,7 @@ static void setupvals(bfuncinfo *finfo)
}
/* Function is complete, finalize bproto */
-static void end_func(bparser *parser, bclass *c)
+static void end_func(bparser *parser)
{
bvm *vm = parser->vm;
bfuncinfo *finfo = parser->finfo;
@@ -324,14 +324,8 @@ static void end_func(bparser *parser, bclass *c)
proto->codesize = finfo->pc;
proto->ktab = be_vector_release(vm, &finfo->kvec);
proto->nconst = be_vector_count(&finfo->kvec);
- /* special case here */
proto->nproto = be_vector_count(&finfo->pvec);
- if (proto->nproto == 0) {
- proto->ptab = (void*) c;
- } else {
- be_vector_push_c(vm, &finfo->pvec, (void*) &c);
- proto->ptab = be_vector_release(vm, &finfo->pvec);
- }
+ proto->ptab = be_vector_release(vm, &finfo->pvec);
#if BE_USE_MEM_ALIGNED
proto->code = be_move_to_aligned(vm, proto->code, proto->codesize * sizeof(binstruction)); /* move `code` to 4-bytes aligned memory region */
proto->ktab = be_move_to_aligned(vm, proto->ktab, proto->nconst * sizeof(bvalue)); /* move `ktab` to 4-bytes aligned memory region */
@@ -644,7 +638,7 @@ static bproto* funcbody(bparser *parser, bstring *name, bclass *c, int type)
finfo.proto->varg |= BE_VA_STATICMETHOD;
}
stmtlist(parser); /* parse statement without final `end` */
- end_func(parser, c); /* close function context */
+ end_func(parser); /* close function context */
match_token(parser, KeyEnd); /* skip 'end' */
return finfo.proto; /* return fully constructed `bproto` */
}
@@ -700,7 +694,7 @@ static void lambda_expr(bparser *parser, bexpdesc *e)
expr(parser, &e1);
check_var(parser, &e1);
be_code_ret(parser->finfo, &e1);
- end_func(parser, NULL);
+ end_func(parser);
init_exp(e, ETPROTO, be_code_proto(parser->finfo, finfo.proto));
be_stackpop(parser->vm, 1);
}
@@ -1827,7 +1821,7 @@ static void mainfunc(bparser *parser, bclosure *cl)
cl->proto = finfo.proto;
be_remove(parser->vm, -3); /* pop proto from stack */
stmtlist(parser);
- end_func(parser, NULL);
+ end_func(parser);
match_token(parser, TokenEOS); /* skip EOS */
}
diff --git a/lib/libesp32/berry/src/be_solidifylib.c b/lib/libesp32/berry/src/be_solidifylib.c
index 78d5c6b41..2afca6095 100644
--- a/lib/libesp32/berry/src/be_solidifylib.c
+++ b/lib/libesp32/berry/src/be_solidifylib.c
@@ -17,6 +17,8 @@
#include "be_decoder.h"
#include "be_sys.h"
#include "be_mem.h"
+#include "be_byteslib.h"
+#include "be_gc.h"
#include
#include
#include
@@ -24,6 +26,7 @@
extern const bclass be_class_list;
extern const bclass be_class_map;
+extern const bclass be_class_bytes;
#if BE_USE_SOLIDIFY_MODULE
#include
@@ -112,25 +115,9 @@ static void toidentifier(char *to, const char *p)
*to = 0; // final NULL
}
-/* return the parent class of a function, encoded in ptab, or NULL if none */
-static const bclass *m_solidify_get_parentclass(const bproto *pr)
-{
- const bclass *cla;
- if (pr->nproto > 0) {
- cla = (const bclass*) pr->ptab[pr->nproto];
- } else {
- cla = (const bclass*) pr->ptab;
- }
- if (cla && var_basetype(cla) == BE_CLASS) {
- return cla;
- } else {
- return NULL;
- }
-}
+static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, const char *prefix_name, const char *key, void* fout);
-static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, const char *prefixname, const char *key, void* fout);
-
-static void m_solidify_map(bvm *vm, bbool str_literal, const bmap * map, const char *prefixname, void* fout)
+static void m_solidify_map(bvm *vm, bbool str_literal, bmap * map, const char *prefix_name, void* fout)
{
// compact first
be_map_compact(vm, map);
@@ -158,14 +145,14 @@ static void m_solidify_map(bvm *vm, bbool str_literal, const bmap * map, const c
} else {
logfmt(" { be_const_key_weak(%s, %i), ", id_buf, key_next);
}
- m_solidify_bvalue(vm, str_literal, &node->value, prefixname, str(node->key.v.s), fout);
+ m_solidify_bvalue(vm, str_literal, &node->value, prefix_name, str(node->key.v.s), fout);
} else if (node->key.type == BE_INT) {
#if BE_INTGER_TYPE == 2
logfmt(" { be_const_key_int(%lli, %i), ", node->key.v.i, key_next);
#else
logfmt(" { be_const_key_int(%i, %i), ", node->key.v.i, key_next);
#endif
- m_solidify_bvalue(vm, str_literal, &node->value, prefixname, NULL, fout);
+ m_solidify_bvalue(vm, str_literal, &node->value, prefix_name, NULL, fout);
} else {
char error[64];
snprintf(error, sizeof(error), "Unsupported type in key: %i", node->key.type);
@@ -178,21 +165,21 @@ static void m_solidify_map(bvm *vm, bbool str_literal, const bmap * map, const c
}
-static void m_solidify_list(bvm *vm, bbool str_literal, const blist * list, const char *prefixname, void* fout)
+static void m_solidify_list(bvm *vm, bbool str_literal, const blist * list, const char *prefix_name, void* fout)
{
logfmt(" be_nested_list(%i,\n", list->count);
logfmt(" ( (struct bvalue*) &(const bvalue[]) {\n");
for (int i = 0; i < list->count; i++) {
logfmt(" ");
- m_solidify_bvalue(vm, str_literal, &list->data[i], prefixname, "", fout);
+ m_solidify_bvalue(vm, str_literal, &list->data[i], prefix_name, "", fout);
logfmt(",\n");
}
logfmt(" }))"); // TODO need terminal comma?
}
// pass key name in case of class, or NULL if none
-static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, const char *prefixname, const char *key, void* fout)
+static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, const char *prefix_name, const char *key, void* fout)
{
int type = var_primetype(value);
switch (type) {
@@ -259,15 +246,9 @@ static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value,
size_t id_len = toidentifier_length(func_name);
char func_name_id[id_len];
toidentifier(func_name_id, func_name);
- /* get parent class name if any */
- const bclass *parentclass = m_solidify_get_parentclass(clo->proto);
- const char *parentclass_name = parentclass ? str(parentclass->name) : NULL;
- const char *actualprefix = parentclass_name ? parentclass_name : prefixname;
-
- logfmt("be_const_%sclosure(%s%s%s%s_closure)",
+ logfmt("be_const_%sclosure(%s%s%s_closure)",
var_isstatic(value) ? "static_" : "",
- parentclass_name ? "class_" : "",
- actualprefix ? actualprefix : "", actualprefix ? "_" : "",
+ prefix_name ? prefix_name : "", prefix_name ? "_" : "",
func_name_id);
}
break;
@@ -275,41 +256,51 @@ static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value,
logfmt("be_const_class(be_class_%s)", str(((bclass*) var_toobj(value))->name));
break;
case BE_COMPTR:
- logfmt("be_const_comptr(&be_ntv_%s_%s)", prefixname ? prefixname : "unknown", key ? key : "unknown");
+ logfmt("be_const_comptr(&be_ntv_%s_%s)", prefix_name ? prefix_name : "unknown", key ? key : "unknown");
break;
case BE_NTVFUNC:
logfmt("be_const_%sfunc(be_ntv_%s_%s)",
var_isstatic(value) ? "static_" : "",
- prefixname ? prefixname : "unknown", key ? key : "unknown");
+ prefix_name ? prefix_name : "unknown", key ? key : "unknown");
break;
case BE_INSTANCE:
{
binstance * ins = (binstance *) var_toobj(value);
bclass * cl = ins->_class;
- if (ins->super || ins->sub) {
+
+ if (cl == &be_class_bytes) {
+ const void * bufptr = var_toobj(&ins->members[0]);
+ int32_t len = var_toint(&ins->members[1]);
+ size_t hex_len = len * 2 + 1;
+
+ char * hex_out = be_pushbuffer(vm, hex_len);
+ be_bytes_tohex(hex_out, hex_len, bufptr, len);
+ logfmt("be_const_bytes_instance(%s)", hex_out);
+ be_pop(vm, 1);
+ } else if (ins->super || ins->sub) {
be_raise(vm, "internal_error", "instance must not have a super/sub class");
- } else if (cl->nvar != 1) {
- be_raise(vm, "internal_error", "instance must have only one instance variable");
- } else if ((cl != &be_class_map && cl != &be_class_list) || 1) { // TODO
+ } else {
const char * cl_ptr = "";
if (cl == &be_class_map) { cl_ptr = "map"; }
- if (cl == &be_class_list) { cl_ptr = "list"; }
+ else if (cl == &be_class_list) { cl_ptr = "list"; }
+ else { be_raise(vm, "internal_error", "unsupported class"); }
+
logfmt("be_const_simple_instance(be_nested_simple_instance(&be_class_%s, {\n", cl_ptr);
if (cl == &be_class_map) {
logfmt(" be_const_map( * ");
} else {
logfmt(" be_const_list( * ");
}
- m_solidify_bvalue(vm, str_literal, &ins->members[0], prefixname, key, fout);
+ m_solidify_bvalue(vm, str_literal, &ins->members[0], prefix_name, key, fout);
logfmt(" ) } ))");
}
}
break;
case BE_MAP:
- m_solidify_map(vm, str_literal, (bmap *) var_toobj(value), prefixname, fout);
+ m_solidify_map(vm, str_literal, (bmap *) var_toobj(value), prefix_name, fout);
break;
case BE_LIST:
- m_solidify_list(vm, str_literal, (blist *) var_toobj(value), prefixname, fout);
+ m_solidify_list(vm, str_literal, (blist *) var_toobj(value), prefix_name, fout);
break;
default:
{
@@ -323,10 +314,11 @@ static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value,
static void m_solidify_subclass(bvm *vm, bbool str_literal, const bclass *cl, void* fout);
/* solidify any inner class */
-static void m_solidify_proto_inner_class(bvm *vm, bbool str_literal, const bproto *pr, void* fout)
+static void m_solidify_closure_inner_class(bvm *vm, bbool str_literal, const bclosure *clo, void* fout)
{
// parse any class in constants to output it first
- if (pr->nconst > 0) {
+ bproto *pr = clo->proto;
+ if ((!gc_isconst(clo)) && (pr->nconst > 0) && (!(pr->varg & BE_VA_SHARED_KTAB)) && (!(pr->varg & BE_VA_NOCOMPACT))) { /* if shared ktab or nocompact, skip */
for (int k = 0; k < pr->nconst; k++) {
if (var_type(&pr->ktab[k]) == BE_CLASS) {
if ((k == 0) && (pr->varg & BE_VA_STATICMETHOD)) {
@@ -340,12 +332,8 @@ static void m_solidify_proto_inner_class(bvm *vm, bbool str_literal, const bprot
}
}
-static void m_solidify_proto(bvm *vm, bbool str_literal, const bproto *pr, const char * func_name, const char *prefixname, int indent, void* fout)
+static void m_solidify_proto(bvm *vm, bbool str_literal, const bproto *pr, const char * func_name, int indent, const char * prefix_name, void* fout)
{
- /* get parent class name if any */
- const bclass *parentclass = m_solidify_get_parentclass(pr);
- const char *parentclass_name = parentclass ? str(parentclass->name) : NULL;
-
logfmt("%*sbe_nested_proto(\n", indent, "");
indent += 2;
@@ -366,38 +354,33 @@ static void m_solidify_proto(bvm *vm, bbool str_literal, const bproto *pr, const
logfmt("%*s%d, /* has sup protos */\n", indent, "", (pr->nproto > 0) ? 1 : 0);
if (pr->nproto > 0) {
- // if pr->nproto is not zero, we add a last value that is either NULL or the parent class
- logfmt("%*s( &(const struct bproto*[%2d]) {\n", indent, "", pr->nproto + 1); /* one more slot */
+ logfmt("%*s( &(const struct bproto*[%2d]) {\n", indent, "", pr->nproto);
for (int32_t i = 0; i < pr->nproto; i++) {
size_t sub_len = strlen(func_name) + 10;
char sub_name[sub_len];
snprintf(sub_name, sizeof(sub_name), "%s_%"PRId32, func_name, i);
- m_solidify_proto(vm, str_literal, pr->ptab[i], sub_name, NULL, indent+2, fout);
+ m_solidify_proto(vm, str_literal, pr->ptab[i], sub_name, indent+2, prefix_name, fout);
logfmt(",\n");
}
- if (parentclass_name) {
- logfmt("%*s&be_class_%s, \n", indent, "", parentclass_name);
- } else {
- logfmt("%*sNULL, \n", indent, "");
- }
logfmt("%*s}),\n", indent, "");
} else {
- if (parentclass_name) {
- logfmt("%*s&be_class_%s, \n", indent, "", parentclass_name);
- } else {
- logfmt("%*sNULL, \n", indent, "");
- }
- }
+ logfmt("%*sNULL, /* no sub protos */\n", indent, "");
+ }
logfmt("%*s%d, /* has constants */\n", indent, "", (pr->nconst > 0) ? 1 : 0);
if (pr->nconst > 0) {
- logfmt("%*s( &(const bvalue[%2d]) { /* constants */\n", indent, "", pr->nconst);
- for (int k = 0; k < pr->nconst; k++) {
- logfmt("%*s/* K%-3d */ ", indent, "", k);
- m_solidify_bvalue(vm, str_literal, &pr->ktab[k], NULL, NULL, fout);
- logfmt(",\n");
+ // we output the full table unless it's a shared ktab
+ if (pr->varg & BE_VA_SHARED_KTAB) {
+ logfmt("%*s&be_ktab_%s, /* shared constants */\n", indent, "", prefix_name);
+ } else {
+ logfmt("%*s( &(const bvalue[%2d]) { /* constants */\n", indent, "", pr->nconst);
+ for (int k = 0; k < pr->nconst; k++) {
+ logfmt("%*s/* K%-3d */ ", indent, "", k);
+ m_solidify_bvalue(vm, str_literal, &pr->ktab[k], NULL, NULL, fout);
+ logfmt(",\n");
+ }
+ logfmt("%*s}),\n", indent, "");
}
- logfmt("%*s}),\n", indent, "");
} else {
logfmt("%*sNULL, /* no const */\n", indent, "");
}
@@ -437,27 +420,11 @@ static void m_solidify_proto(bvm *vm, bbool str_literal, const bproto *pr, const
}
-static void m_solidify_closure(bvm *vm, bbool str_literal, const bclosure *clo, const char * prefixname, void* fout)
+static void m_solidify_closure(bvm *vm, bbool str_literal, const bclosure *clo, const char * prefix_name, void* fout)
{
bproto *pr = clo->proto;
const char * func_name = str(pr->name);
- /* get parent class name if any */
- const bclass *parentclass = m_solidify_get_parentclass(pr);
- const char *parentclass_name = parentclass ? str(parentclass->name) : NULL;
- if (parentclass_name) {
- /* check that the class name is the same as the prefix */
- /* meaning that we are solidifying a method from its own class */
- /* if they don't match, then the method is borrowed to another class and we don't export it */
- char parentclass_prefix[strlen(parentclass_name) + 10];
- snprintf(parentclass_prefix, sizeof(parentclass_prefix), "class_%s", parentclass_name);
- if (strcmp(parentclass_prefix, prefixname) != 0) {
- logfmt("// Borrowed method '%s' from class '%s'\n", func_name, parentclass_prefix);
- logfmt("extern bclosure *%s_%s;\n", parentclass_prefix, func_name);
- return;
- }
- }
-
if (clo->nupvals > 0) {
logfmt("--> Unsupported upvals in closure <---");
// be_raise(vm, "internal_error", "Unsupported upvals in closure");
@@ -465,28 +432,23 @@ static void m_solidify_closure(bvm *vm, bbool str_literal, const bclosure *clo,
int indent = 2;
- m_solidify_proto_inner_class(vm, str_literal, pr, fout);
+ m_solidify_closure_inner_class(vm, str_literal, clo, fout);
logfmt("\n");
logfmt("/********************************************************************\n");
logfmt("** Solidified function: %s\n", func_name);
logfmt("********************************************************************/\n");
- if (parentclass_name) {
- /* declare exten so we can have a pointer */
- logfmt("extern const bclass be_class_%s;\n", parentclass_name);
- }
-
{
size_t id_len = toidentifier_length(func_name);
char func_name_id[id_len];
toidentifier(func_name_id, func_name);
logfmt("be_local_closure(%s%s%s, /* name */\n",
- prefixname ? prefixname : "", prefixname ? "_" : "",
+ prefix_name ? prefix_name : "", prefix_name ? "_" : "",
func_name_id);
}
- m_solidify_proto(vm, str_literal, pr, func_name, prefixname, indent, fout);
+ m_solidify_proto(vm, str_literal, pr, func_name, indent, prefix_name, fout);
logfmt("\n");
// closure
@@ -494,11 +456,17 @@ static void m_solidify_closure(bvm *vm, bbool str_literal, const bclosure *clo,
logfmt("/*******************************************************************/\n\n");
}
+static void m_compact_class(bvm *vm, bbool str_literal, const bclass *cla, void* fout);
+
static void m_solidify_subclass(bvm *vm, bbool str_literal, const bclass *cla, void* fout)
{
const char * classname = str(cla->name);
- char prefixname[strlen(classname) + 10];
- snprintf(prefixname, sizeof(prefixname), "class_%s", classname);
+
+ /* TODO try compacting for now */
+ m_compact_class(vm, str_literal, cla, fout);
+
+ char prefix_name[strlen(classname) + 10];
+ snprintf(prefix_name, sizeof(prefix_name), "class_%s", classname);
/* pre-declare class to support '_class' implicit variable */
logfmt("\nextern const bclass be_class_%s;\n", classname);
@@ -509,7 +477,7 @@ static void m_solidify_subclass(bvm *vm, bbool str_literal, const bclass *cla, v
while ((node = be_map_next(cla->members, &iter)) != NULL) {
if (var_isstr(&node->key) && var_isclosure(&node->value)) {
bclosure *f = var_toobj(&node->value);
- m_solidify_closure(vm, str_literal, f, prefixname, fout);
+ m_solidify_closure(vm, str_literal, f, prefix_name, fout);
}
}
}
@@ -533,7 +501,7 @@ static void m_solidify_subclass(bvm *vm, bbool str_literal, const bclass *cla, v
}
if (cla->members) {
- m_solidify_map(vm, str_literal, cla->members, prefixname, fout);
+ m_solidify_map(vm, str_literal, cla->members, prefix_name, fout);
logfmt(",\n");
} else {
logfmt(" NULL,\n");
@@ -550,17 +518,17 @@ static void m_solidify_subclass(bvm *vm, bbool str_literal, const bclass *cla, v
logfmt(");\n");
}
-static void m_solidify_class(bvm *vm, bbool str_literal, const bclass *cl, void* fout)
+static void m_solidify_class(bvm *vm, bbool str_literal, bclass *cl, void* fout)
{
m_solidify_subclass(vm, str_literal, cl, fout);
}
-static void m_solidify_module(bvm *vm, bbool str_literal, const bmodule *ml, void* fout)
+static void m_solidify_module(bvm *vm, bbool str_literal, bmodule *ml, void* fout)
{
const char * modulename = be_module_name(ml);
if (!modulename) { modulename = ""; }
- // char prefixname[strlen(modulename) + 10];
- // snprintf(prefixname, sizeof(prefixname), "module_%s", modulename);
+ // char prefix_name[strlen(modulename) + 10];
+ // snprintf(prefix_name, sizeof(prefix_name), "module_%s", modulename);
/* iterate on members to dump closures and classes */
if (ml->table) {
@@ -616,12 +584,12 @@ static int m_dump(bvm *vm)
}
be_pop(vm, 1);
}
- const char *prefixname = NULL; /* allow to specify an explicit prefix */
+ const char *prefix_name = NULL; /* allow to specify an explicit prefix */
if (top >= 4 && be_isstring(vm, 4)) {
- prefixname = be_tostring(vm, 4);
+ prefix_name = be_tostring(vm, 4);
}
if (var_isclosure(v)) {
- m_solidify_closure(vm, str_literal, var_toobj(v), prefixname, fout);
+ m_solidify_closure(vm, str_literal, var_toobj(v), prefix_name, fout);
} else if (var_isclass(v)) {
m_solidify_class(vm, str_literal, var_toobj(v), fout);
} else if (var_ismodule(v)) {
@@ -633,9 +601,274 @@ static int m_dump(bvm *vm)
be_return_nil(vm);
}
+static void m_compact_class(bvm *vm, bbool str_literal, const bclass *cla, void* fout)
+{
+ const char * classname = str(cla->name);
+
+ /* reserve an array big enough for max size ktab (256) */
+ const int MAX_KTAB_SIZE = 256;
+ bvalue ktab[MAX_KTAB_SIZE]; /* size is 2048 byte for 32 bits, so fitting in ESP32, may need to be changed on smaller architectures */
+ int ktab_size = 0;
+
+ /* for statistics, keep the aggregate number of bvalues */
+ int ktab_total = 0;
+
+ /* iterate on members to dump closures */
+ if (cla->members) {
+ bmapnode *node;
+ bmapiter iter = be_map_iter();
+
+ /* first iteration to build the global ktab */
+ while ((node = be_map_next(cla->members, &iter)) != NULL) {
+ if (var_isstr(&node->key) && var_isclosure(&node->value)) {
+ bclosure *cl = var_toobj(&node->value);
+ bproto *pr = cl->proto;
+
+ if ((gc_isconst(cl)) || (pr->varg & BE_VA_SHARED_KTAB) || (pr->varg & BE_VA_NOCOMPACT)) { continue; }
+
+ // iterate on each bvalue in ktab
+ for (int i = 0; i < pr->nconst; i++) {
+ // look if the bvalue pair is already in ktab
+ int found = 0;
+ for (int j = 0; j < ktab_size; j++) {
+ // to avoid any size issue, we compare all bytes
+ // berry_log_C("// p1=%p p2=%p sz=%i", &pr->ktab[i], &ktab[j], sizeof(bvalue));
+ if ((pr->ktab[i].type == ktab[j].type) && (pr->ktab[i].v.i == ktab[j].v.i) && (pr->ktab[i].v.c == ktab[j].v.c)) {
+ // if (memcmp(&pr->ktab[i], &ktab[j], sizeof(bvalue)) == 0) {
+ found = 1;
+ break;
+ }
+ }
+ // if not already there, add it
+ if (!found) {
+ ktab[ktab_size++] = pr->ktab[i];
+ }
+ if (ktab_size >= MAX_KTAB_SIZE) {
+ logfmt("// ktab too big for class '%s' - skipping\n", classname);
+ return;
+ }
+ }
+ ktab_total += pr->nconst;
+ }
+ }
+
+ if (ktab_size == ktab_total) {
+ return; /* nothing to optimize, can happen for classes with zero or 1 method */
+ }
+ /* allocate a proper ktab */
+ bvalue *new_ktab = be_malloc(vm, sizeof(bvalue) * ktab_size);
+ memmove(new_ktab, ktab, sizeof(bvalue) * ktab_size);
+
+ /* second iteration to replace ktab and patch code */
+ iter = be_map_iter();
+ while ((node = be_map_next(cla->members, &iter)) != NULL) {
+ if (var_isstr(&node->key) && var_isclosure(&node->value)) {
+ bclosure *cl = var_toobj(&node->value);
+ bproto *pr = cl->proto;
+
+ if ((gc_isconst(cl)) || (pr->varg & BE_VA_SHARED_KTAB) || (pr->varg & BE_VA_NOCOMPACT)) { continue; }
+
+ uint8_t mapping_array[MAX_KTAB_SIZE];
+ // iterate in proto ktab to get the index in the global ktab
+ for (int i = 0; i < pr->nconst; i++) {
+ for (int j = 0; j < ktab_size; j++) {
+ // compare all bytes
+ if ((pr->ktab[i].type == ktab[j].type) && (pr->ktab[i].v.i == ktab[j].v.i) && (pr->ktab[i].v.c == ktab[j].v.c)) {
+ // if (memcmp(&pr->ktab[i], &ktab[j], sizeof(bvalue)) == 0) {
+ mapping_array[i] = j;
+ break;
+ }
+ }
+ }
+
+ // replace ktab
+ pr->ktab = new_ktab;
+ pr->nconst = ktab_size;
+ // flag as shared ktab
+ pr->varg |= BE_VA_SHARED_KTAB;
+ // parse code to replace any K reference
+ for (int pc = 0; pc < pr->codesize; pc++) {
+ uint32_t ins = pr->code[pc];
+ bopcode op = IGET_OP(ins);
+
+ /* handle all impacted opcodes */
+ /* Possibilities: */
+ /* "B" | "B and C" | "Bx" contain a constant code */
+ /* special case for OP_RET where "B" may not contain anything */
+ switch (op) {
+ case OP_ADD: case OP_SUB: case OP_MUL: case OP_DIV:
+ case OP_MOD: case OP_LT: case OP_LE: case OP_EQ:
+ case OP_NE: case OP_GT: case OP_GE: case OP_CONNECT:
+ case OP_GETMBR: case OP_SETMBR: case OP_GETMET: case OP_SETMET:
+ case OP_GETIDX: case OP_SETIDX: case OP_AND:
+ case OP_OR: case OP_XOR: case OP_SHL: case OP_SHR:
+ case OP_RAISE:
+ // B and C might contain 'K' constant
+ if (isKB(ins)) {
+ int kidx = IGET_RKB(ins) & KR_MASK;
+ if (kidx >= ktab_size) {
+ be_raise(vm, "value_error", "invalid ktab index");
+ }
+ ins = (ins & ~IRKB_MASK) | ISET_RKB(setK(mapping_array[kidx]));
+ }
+ if (isKC(ins)) {
+ int kidx = IGET_RKC(ins) & KR_MASK;
+ if (kidx >= ktab_size) {
+ be_raise(vm, "value_error", "invalid ktab index");
+ }
+ ins = (ins & ~IRKC_MASK) | ISET_RKC(setK(mapping_array[kidx]));
+ }
+ pr->code[pc] = ins;
+ break;
+ case OP_MOVE: case OP_SETSUPER: case OP_NEG: case OP_FLIP: case OP_IMPORT:
+ case OP_GETNGBL: case OP_SETNGBL:
+ // Only B might contain 'K' constant
+ if (isKB(ins)) {
+ int kidx = IGET_RKB(ins) & KR_MASK;
+ if (kidx >= ktab_size) {
+ be_raise(vm, "value_error", "invalid ktab index");
+ }
+ ins = (ins & ~IRKB_MASK) | ISET_RKB(setK(mapping_array[kidx]));
+ }
+ pr->code[pc] = ins;
+ break;
+ case OP_CLASS:
+ case OP_LDCONST:
+ // Bx contains the K
+ {
+ int kidx = IGET_Bx(ins);
+ if (kidx >= ktab_size) {
+ be_raise(vm, "value_error", "invalid ktab index");
+ }
+ ins = (ins & ~IBx_MASK) | ISET_Bx(mapping_array[kidx]);
+ pr->code[pc] = ins;
+ }
+ break;
+ case OP_RET:
+ if (IGET_RA(ins)) {
+ // Only B might contain 'K' constant
+ if (isKB(ins)) {
+ int kidx = IGET_RKB(ins) & KR_MASK;
+ if (kidx >= ktab_size) {
+ be_raise(vm, "value_error", "invalid ktab index");
+ }
+ ins = (ins & ~IRKB_MASK) | ISET_RKB(setK(mapping_array[kidx]));
+ }
+ }
+ pr->code[pc] = ins;
+ break;
+ /* The following opcodes are not impacted by shared constant table
+ case OP_GETUPV: case OP_SETUPV:
+ case OP_LDCONST:
+ case OP_CALL:
+ case OP_CLOSURE:
+ case OP_CLOSE: case OP_LDNIL:
+ case OP_EXBLK:
+ case OP_CATCH:
+ case OP_GETGBL: case OP_SETGBL:
+ case OP_JMP:
+ case OP_JMPT: case OP_JMPF:
+ case OP_LDINT:
+ case OP_LDBOOL: */
+ default:
+ break;
+ }
+
+ }
+ }
+ }
+ }
+ // logfmt("extern const bclass be_class_%s;\n", classname);
+ // scan classes and generate extern statements for classes
+ for (int k = 0; k < ktab_size; k++) {
+ // if it's a class, print an extern statement
+ if (var_isclass(&ktab[k])) {
+ bclass *cl = var_toobj(&ktab[k]);
+ logfmt("extern const bclass be_class_%s;\n", str(cl->name));
+ }
+ }
+
+ // scan again to export all sub-classes
+ for (int k = 0; k < ktab_size; k++) {
+ // if it's a class, print an extern statement
+ if (var_isclass(&ktab[k])) {
+ bclass *cl = var_toobj(&ktab[k]);
+ if (cl != cla) {
+ m_solidify_subclass(vm, str_literal, cl, fout);
+ }
+ }
+ }
+
+ // output shared ktab
+ int indent = 0;
+ logfmt("// compact class '%s' ktab size: %d, total: %d (saved %i bytes)\n", classname, ktab_size, ktab_total, (ktab_total - ktab_size) * 8);
+ logfmt("static const bvalue be_ktab_class_%s[%i] = {\n", classname, ktab_size);
+ for (int k = 0; k < ktab_size; k++) {
+ logfmt("%*s/* K%-3d */ ", indent + 2, "", k);
+ m_solidify_bvalue(vm, str_literal, &ktab[k], NULL, NULL, fout);
+ logfmt(",\n");
+ }
+ logfmt("%*s};\n", indent, "");
+ logfmt("\n");
+}
+
+// takes a class or a module
+// scans all first level bproto
+// build a consolidated 'ktab' array
+// check that the array is not bigger than 256 (which is the max acceptable constants)
+// (for now) print the potential saving
+static int m_compact(bvm *vm)
+{
+ int top = be_top(vm);
+ if (top >= 1) {
+ bvalue *v = be_indexof(vm, 1);
+ bbool str_literal = bfalse;
+ if (top >= 2) {
+ str_literal = be_tobool(vm, 2);
+ }
+ void* fout = NULL; /* output file */
+ if (top >= 3 && be_isinstance(vm, 3)) {
+ be_getmember(vm, 3, ".p");
+ if (be_iscomptr(vm, -1)) {
+ fout = be_tocomptr(vm, -1);
+ }
+ be_pop(vm, 1);
+ }
+ // const char *prefix_name = NULL; /* allow to specify an explicit prefix */
+ // if (top >= 4 && be_isstring(vm, 4)) {
+ // prefix_name = be_tostring(vm, 4);
+ // }
+ if (var_isclass(v)) {
+ m_compact_class(vm, str_literal, var_toobj(v), fout);
+ } else if (var_ismodule(v)) {
+ // TODO
+ } else {
+ be_raise(vm, "value_error", "unsupported type");
+ }
+ }
+ be_return_nil(vm);
+}
+
+static int m_nocompact(bvm *vm)
+{
+ int top = be_top(vm);
+ if (top >= 1) {
+ bvalue *v = be_indexof(vm, 1);
+ if (var_isclosure(v)) {
+ bclosure *cl = var_toobj(v);
+ bproto *pr = cl->proto;
+ pr->varg |= BE_VA_NOCOMPACT;
+ } else {
+ be_raise(vm, "value_error", "unsupported type");
+ }
+ }
+ be_return_nil(vm);
+}
+
#if !BE_USE_PRECOMPILED_OBJECT
be_native_module_attr_table(solidify) {
be_native_module_function("dump", m_dump),
+ be_native_module_function("compact", m_compact),
};
be_define_native_module(solidify, NULL);
@@ -643,6 +876,8 @@ be_define_native_module(solidify, NULL);
/* @const_object_info_begin
module solidify (scope: global, depend: BE_USE_SOLIDIFY_MODULE) {
dump, func(m_dump)
+ compact, func(m_compact)
+ nocompact, func(m_nocompact)
}
@const_object_info_end */
#include "../generate/be_fixed_solidify.h"
diff --git a/lib/libesp32/berry/tests/bytes.be b/lib/libesp32/berry/tests/bytes.be
index c4d4af3f6..1f58118e7 100644
--- a/lib/libesp32/berry/tests/bytes.be
+++ b/lib/libesp32/berry/tests/bytes.be
@@ -1,3 +1,12 @@
+def assert_error(f, error_type)
+ try
+ f()
+ assert(false, 'unexpected execution flow')
+ except .. as e, m
+ assert(e == error_type)
+ end
+end
+
#- basic initialization -#
b=bytes()
assert(str(b) == "bytes('')")
@@ -48,18 +57,22 @@ assert(str(b) == "bytes('227878567856341278567812345678')")
#- get -#
b=bytes("000102030405")
assert(b.get(0) == 0)
-assert(b.get(-1) == 0) #- could consider nil as well -#
-assert(b.get(6) == 0) #- could consider nil as well -#
+assert(b.get(-1) == 0x05) #- last byte -#
+assert(b.get(6) == 0)
assert(b.get(1) == 1)
assert(b.get(5) == 5)
+assert(b.get(-1000) == 0) # out of range, default to zero
+assert(b.get(1000) == 0) # out of range, default to zero
-assert(b.get(1,0) == nil)
assert(b.get(1,1) == 0x01)
assert(b.get(1,2) == 0x0201)
assert(b.get(1,4) == 0x04030201)
assert(b.get(1,-1) == 0x01)
assert(b.get(1,-2) == 0x0102) #- big endian -#
assert(b.get(1,-4) == 0x01020304)
+assert(b.get(1,0) == 0) # size zero is invalid, returns zero
+assert(b.get(-1000,1) == 0) # out of range, default to zero
+assert(b.get(1000,1) == 0) # out of range, default to zero
#- resize -#
assert(bytes().size() == 0)
@@ -76,6 +89,10 @@ assert(b.size() == 20)
b.resize(0)
assert(str(b) == "bytes('')")
assert(b.size() == 0)
+b=bytes("112233")
+b.resize(-5) # resize negative is equivalent to resize(0)
+assert(str(b) == "bytes('')")
+assert(b.size() == 0)
#- clear -#
b=bytes("aabb")
@@ -110,7 +127,7 @@ assert(str(b) == "bytes('AA')")
b = b1 + '01'
assert(str(b) == "bytes('AA3031')")
-#- .. and append as synonym-#
+#- .. and append as synonyms -#
b1 = bytes("1122")
b2 = bytes("334455")
b = b1..b2
@@ -143,6 +160,12 @@ b = bytes("334455")
assert(b[0] == 0x33)
assert(b[1] == 0x44)
assert(b[2] == 0x55)
+assert(b[-1] == 0x55)
+assert(b[-2] == 0x44)
+assert(b[-3] == 0x33)
+# out of range raises "index_error" exceptions
+assert_error(def () return b[-4] end, 'index_error')
+assert_error(def () return b[4] end, 'index_error')
#- item range -#
b = bytes("00112233445566778899AABBCCDDEEFF")
@@ -169,6 +192,14 @@ b[0]=0xBB
assert(str(b) =="bytes('BBAA33')")
b[2]=-1
assert(str(b) =="bytes('BBAAFF')")
+# negative indices, counting from end
+b[-1]=0xFE
+assert(str(b) =="bytes('BBAAFE')")
+b[-3]=0xBC
+assert(str(b) =="bytes('BCAAFE')")
+# out of range raises "index_error" exceptions
+assert_error(def () b[-4]=0x11 end, 'index_error')
+assert_error(def () b[4]=0x11 end, 'index_error')
#- resize -#
b=bytes()
@@ -191,9 +222,7 @@ b.fromstring("Aa0")
assert(str(b) =="bytes('416130')")
b=bytes()
b.fromstring("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.")
-assert(str(b) =="bytes('4C6F72656D20697073756D20646F6C6F722073697420616D65742C20636F6E73...')")
assert(b.tostring(0) =="bytes('4C6F72656D20697073756D20646F6C6F722073697420616D65742C20636F6E73656374657475722061646970697363696E6720656C69742C2073656420646F20656975736D6F642074656D706F7220696E6369646964756E74207574206C61626F726520657420646F6C6F7265206D61676E6120616C697175612E')")
-
assert(size(bytes('4C6F72656D20697073756D20646F6C6F722073697420616D65742C20636F6E73656374657475722061646970697363696E6720656C69742C2073656420646F20656975736D6F642074656D706F7220696E6369646964756E74207574206C61626F726520657420646F6C6F7265206D61676E6120616C697175612E')) == 123)
#- negative index -#
@@ -217,6 +246,13 @@ b.setfloat(0, 0.33)
assert(b == bytes('C3F5A83E'))
b = bytes("0000C03F")
assert(b.getfloat(0) == 1.5)
+b.addfloat(0.33)
+assert(b == bytes("0000C03FC3F5A83E"))
+b.addfloat(0.33, true) #- Big Endian -#
+assert(b == bytes("0000C03FC3F5A83E3EA8F5C3"))
+b = bytes("")
+b.addfloat(42) #- add integer -#
+assert(b == bytes("00002842"))
#- fromhex -#
b = bytes("112233")
@@ -264,7 +300,7 @@ assert(bytes("0011223344").reverse(3) == bytes("0011224433"))
assert(bytes("0011223344").reverse(4) == bytes("0011223344"))
assert(bytes("0011223344").reverse(5) == bytes("0011223344"))
assert(bytes("0011223344").reverse(15) == bytes("0011223344"))
-assert(bytes("0011223344").reverse(-2) == bytes("4433221100"))
+assert(bytes("0011223344").reverse(-2) == bytes("0011224433")) # reverse starting 2 from end
assert(bytes("0011223344").reverse(1,3) == bytes("0033221144"))
assert(bytes("0011223344").reverse(1,0) == bytes("0011223344"))
diff --git a/lib/libesp32/berry/tests/class.be b/lib/libesp32/berry/tests/class.be
index e175fcdca..06d78ee5d 100644
--- a/lib/libesp32/berry/tests/class.be
+++ b/lib/libesp32/berry/tests/class.be
@@ -57,4 +57,4 @@ c4 = Test_class()
assert(type(c4.c) == 'class')
c5 = c4.c()
assert(type(c5) == 'instance')
-assert(classname(c5) == 'map')
\ No newline at end of file
+assert(classname(c5) == 'map')
diff --git a/lib/libesp32/berry/tests/math.be b/lib/libesp32/berry/tests/math.be
index 232ffa285..9cc39a226 100644
--- a/lib/libesp32/berry/tests/math.be
+++ b/lib/libesp32/berry/tests/math.be
@@ -44,3 +44,42 @@ m_inf2 = {"v": -math.inf}
assert(json.dump(m_inf2) == '{"v":null}')
m_v = {"v": 3.5}
assert(json.dump(m_v) == '{"v":3.5}')
+
+# math.round
+assert(math.round(3) == 3)
+assert(math.round(3.2) == 3)
+assert(math.round(3.5) == 4)
+assert(math.round(3.6) == 4)
+
+assert(math.round(-3) == -3)
+assert(math.round(-3.2) == -3)
+assert(math.round(-3.5) == -4)
+assert(math.round(-3.6) == -4)
+
+assert(math.round() == 0)
+
+#- min and max -#
+def assert_error(f, error_type)
+ try
+ f()
+ assert(false, 'unexpected execution flow')
+ except .. as e, m
+ assert(e == error_type)
+ end
+end
+
+assert(math.min() == nil)
+assert(math.min(0) == 0)
+assert(math.min(0,2,10,56) == 0)
+assert(math.min(4, 2, -10, 3) == -10)
+assert(math.min(4, 2) == 2)
+
+# result is int unless one of the parameters is real
+assert(type(math.min(4, 2, -10, 3)) == 'int')
+assert(type(math.min(4, 2, -10.0, 3)) == 'real')
+
+assert(math.min(-3.4, 5) == -3.4)
+
+# test invalid parameters
+assert_error(def () return math.min(4, nil) end, 'type_error')
+assert_error(def () return math.min(4, "", 4.5) end, 'type_error')
diff --git a/lib/libesp32/berry/tools/coc/bytes_build.py b/lib/libesp32/berry/tools/coc/bytes_build.py
new file mode 100644
index 000000000..2fb6d3ed1
--- /dev/null
+++ b/lib/libesp32/berry/tools/coc/bytes_build.py
@@ -0,0 +1,41 @@
+import json
+
+class bytes_build:
+ def __init__(self, map):
+ self.map = map.copy()
+
+ def build(self, path):
+ prefix = path + "/be_const_bytes"
+ self.writefile(prefix + "_def.h", self.build_bytes_def())
+ self.writefile(prefix + ".h", self.build_bytes_ext())
+
+ def writefile(self, filename, text):
+ buf = ""
+ try:
+ with open(filename) as f:
+ buf = f.read()
+ except FileNotFoundError:
+ pass
+ if buf != text:
+ with open(filename, "w") as f:
+ f.write(text)
+
+ def build_bytes_def(self):
+ ostr = ""
+ ostr += "/* binary arrays */\n"
+ ostr += "be_define_const_bytes_empty();\n"
+ for k in self.map:
+ ostr += "be_define_const_bytes("
+ ostr += k + ", " + ", ".join( [ "0x" + k[i:i+2] for i in range(0, len(k), 2)] )
+ ostr += ");\n"
+
+ return ostr
+
+ def build_bytes_ext(self):
+ ostr = ""
+ ostr += "/* extern binary arrays */\n"
+ ostr += "extern const binstance_arg3 be_const_instance_;\n"
+ for k in self.map:
+ ostr += "extern const binstance_arg3 be_const_instance_" + k + ";\n"
+
+ return ostr
\ No newline at end of file
diff --git a/lib/libesp32/berry/tools/coc/coc b/lib/libesp32/berry/tools/coc/coc
index b80d0ac08..ffc833433 100755
--- a/lib/libesp32/berry/tools/coc/coc
+++ b/lib/libesp32/berry/tools/coc/coc
@@ -4,6 +4,7 @@ import re
import os
from coc_parser import *
from str_build import *
+from bytes_build import *
from block_builder import *
from macro_table import *
@@ -20,6 +21,7 @@ class builder:
self.strmap = {}
self.strmap_weak = {}
self.strmap_long = {}
+ self.bytesmap = {}
self.macro = macro_table()
for path in self.config:
@@ -30,6 +32,9 @@ class builder:
sb = str_build(self.strmap, self.strmap_weak, self.strmap_long)
sb.build(self.output)
+
+ sbytes = bytes_build(self.bytesmap)
+ sbytes.build(self.output)
def parse_file(self, filename):
if re.search(r"\.(h|c|cc|cpp)$", filename):
@@ -45,6 +50,8 @@ class builder:
self.strmap_weak[s] = 0
for s in parser.strtab_long:
self.strmap_long[s] = 0
+ for s in parser.bintab:
+ self.bytesmap[s] = 0
for obj in parser.objects:
builder = block_builder(obj, self.macro)
for s in builder.strtab:
diff --git a/lib/libesp32/berry/tools/coc/coc_parser.py b/lib/libesp32/berry/tools/coc/coc_parser.py
index 68c81a2ba..7319dc337 100644
--- a/lib/libesp32/berry/tools/coc/coc_parser.py
+++ b/lib/libesp32/berry/tools/coc/coc_parser.py
@@ -23,10 +23,12 @@ class coc_parser:
self.strtab = set()
self.strtab_weak = set()
self.strtab_long = set()
+ self.bintab = set()
self.text = text
self.parsers = {
"@const_object_info_begin": self.parse_object,
"be_const_str_": self.parse_string,
+ "be_const_bytes_instance(": self.parse_bin,
"be_const_key(": self.parse_string,
"be_nested_str(": self.parse_string,
"be_const_key_weak(": self.parse_string_weak,
@@ -77,6 +79,7 @@ class coc_parser:
def parse_word(self):
self.skip_space()
r = re.match(r"\w+", self.text)
+ if not r: return None
self.text = self.text[r.end(0):]
return r[0]
@@ -120,6 +123,7 @@ class coc_parser:
def parse_string(self):
if not self.text[0].isalnum() and self.text[0] != '_': return # do not proceed, maybe false positive in solidify
ident = self.parse_word()
+ if not ident: return
literal = unescape_operator(ident)
if not literal in self.strtab:
self.strtab.add(literal)
@@ -128,6 +132,7 @@ class coc_parser:
def parse_string_weak(self):
if not self.text[0].isalnum() and self.text[0] != '_': return # do not proceed, maybe false positive in solidify
ident = self.parse_word()
+ if not ident: return
literal = unescape_operator(ident)
if not literal in self.strtab:
self.strtab_weak.add(literal)
@@ -136,10 +141,19 @@ class coc_parser:
def parse_string_long(self):
if not self.text[0].isalnum() and self.text[0] != '_': return # do not proceed, maybe false positive in solidify
ident = self.parse_word()
+ if not ident: return
literal = unescape_operator(ident)
if not literal in self.strtab:
self.strtab_long.add(literal)
+ def parse_bin(self):
+ ident = self.parse_word()
+ if not ident: return
+ if not re.fullmatch(r"[0-9A-Za-z]*", ident): return
+ if not ident in self.bintab:
+ self.bintab.add(ident)
+ # print(f"str '{ident}' -> {literal}")
+
#################################################################################
# Parse a block of definition like module, class...
#################################################################################
diff --git a/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h b/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h
index 961c36ff6..440804ff2 100644
--- a/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h
+++ b/lib/libesp32/berry_animate/src/solidify/solidified_animate_1_core.h
@@ -3,28 +3,75 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Animate_core' ktab size: 48, total: 98 (saved 400 bytes)
+static const bvalue be_ktab_class_Animate_core[48] = {
+ /* K0 */ be_nested_str_weak(stop),
+ /* K1 */ be_nested_str_weak(strip),
+ /* K2 */ be_nested_str_weak(clear),
+ /* K3 */ be_nested_str_weak(set_bri),
+ /* K4 */ be_nested_str_weak(tasmota),
+ /* K5 */ be_nested_str_weak(scale_uint),
+ /* K6 */ be_nested_str_weak(bri),
+ /* K7 */ be_const_int(0),
+ /* K8 */ be_nested_str_weak(painters),
+ /* K9 */ be_nested_str_weak(remove),
+ /* K10 */ be_nested_str_weak(find),
+ /* K11 */ be_nested_str_weak(running),
+ /* K12 */ be_nested_str_weak(animators),
+ /* K13 */ be_const_int(1),
+ /* K14 */ be_nested_str_weak(remove_fast_loop),
+ /* K15 */ be_nested_str_weak(fast_loop_cb),
+ /* K16 */ be_nested_str_weak(set_strip_bri),
+ /* K17 */ be_nested_str_weak(push),
+ /* K18 */ be_nested_str_weak(time_reached),
+ /* K19 */ be_nested_str_weak(fast_loop_next),
+ /* K20 */ be_nested_str_weak(can_show),
+ /* K21 */ be_nested_str_weak(frame),
+ /* K22 */ be_nested_str_weak(fill_pixels),
+ /* K23 */ be_nested_str_weak(back_color),
+ /* K24 */ be_nested_str_weak(millis),
+ /* K25 */ be_nested_str_weak(FAST_LOOP_MIN),
+ /* K26 */ be_nested_str_weak(animate),
+ /* K27 */ be_nested_str_weak(layer),
+ /* K28 */ be_const_int(-16777216),
+ /* K29 */ be_nested_str_weak(paint),
+ /* K30 */ be_nested_str_weak(blend_pixels),
+ /* K31 */ be_nested_str_weak(obj),
+ /* K32 */ be_nested_str_weak(mth),
+ /* K33 */ be_nested_str_weak(paste_pixels),
+ /* K34 */ be_nested_str_weak(pixels_buffer),
+ /* K35 */ be_nested_str_weak(get_bri),
+ /* K36 */ be_nested_str_weak(get_gamma),
+ /* K37 */ be_nested_str_weak(dirty),
+ /* K38 */ be_nested_str_weak(show),
+ /* K39 */ be_nested_str_weak(global),
+ /* K40 */ be_nested_str_weak(_cur_anim),
+ /* K41 */ be_nested_str_weak(pixel_count),
+ /* K42 */ be_nested_str_weak(set_current),
+ /* K43 */ be_nested_str_weak(set_cb),
+ /* K44 */ be_nested_str_weak(set_back_color),
+ /* K45 */ be_nested_str_weak(add_animator),
+ /* K46 */ be_nested_str_weak(start),
+ /* K47 */ be_nested_str_weak(add_fast_loop),
+};
+
extern const bclass be_class_Animate_core;
/********************************************************************
** Solidified function: clear
********************************************************************/
-extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_clear, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_core,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(stop),
- /* K1 */ be_nested_str_weak(strip),
- /* K2 */ be_nested_str_weak(clear),
- }),
+ &be_ktab_class_Animate_core, /* shared constants */
be_str_weak(clear),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
@@ -43,36 +90,28 @@ be_local_closure(class_Animate_core_clear, /* name */
/********************************************************************
** Solidified function: set_strip_bri
********************************************************************/
-extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_set_strip_bri, /* name */
be_nested_proto(
10, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_core,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(strip),
- /* K1 */ be_nested_str_weak(set_bri),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(scale_uint),
- /* K4 */ be_nested_str_weak(bri),
- /* K5 */ be_const_int(0),
- }),
+ &be_ktab_class_Animate_core, /* shared constants */
be_str_weak(set_strip_bri),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0xB80E0400, // 0002 GETNGBL R3 K2
- 0x8C0C0703, // 0003 GETMET R3 R3 K3
- 0x88140104, // 0004 GETMBR R5 R0 K4
- 0x58180005, // 0005 LDCONST R6 K5
+ 0x88040101, // 0000 GETMBR R1 R0 K1
+ 0x8C040303, // 0001 GETMET R1 R1 K3
+ 0xB80E0800, // 0002 GETNGBL R3 K4
+ 0x8C0C0705, // 0003 GETMET R3 R3 K5
+ 0x88140106, // 0004 GETMBR R5 R0 K6
+ 0x58180007, // 0005 LDCONST R6 K7
0x541E0063, // 0006 LDINT R7 100
- 0x58200005, // 0007 LDCONST R8 K5
+ 0x58200007, // 0007 LDCONST R8 K7
0x542600FE, // 0008 LDINT R9 255
0x7C0C0C00, // 0009 CALL R3 6
0x7C040400, // 000A CALL R1 2
@@ -86,37 +125,31 @@ be_local_closure(class_Animate_core_set_strip_bri, /* name */
/********************************************************************
** Solidified function: remove_painter
********************************************************************/
-extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_remove_painter, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_core,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(painters),
- /* K1 */ be_nested_str_weak(remove),
- /* K2 */ be_nested_str_weak(find),
- /* K3 */ be_nested_str_weak(clear),
- }),
+ &be_ktab_class_Animate_core, /* shared constants */
be_str_weak(remove_painter),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x88080108, // 0000 GETMBR R2 R0 K8
0x4C0C0000, // 0001 LDNIL R3
0x200C0203, // 0002 NE R3 R1 R3
0x780E0005, // 0003 JMPF R3 #000A
- 0x8C0C0501, // 0004 GETMET R3 R2 K1
- 0x8C140502, // 0005 GETMET R5 R2 K2
+ 0x8C0C0509, // 0004 GETMET R3 R2 K9
+ 0x8C14050A, // 0005 GETMET R5 R2 K10
0x5C1C0200, // 0006 MOVE R7 R1
0x7C140400, // 0007 CALL R5 2
0x7C0C0400, // 0008 CALL R3 2
0x70020001, // 0009 JMP #000C
- 0x8C0C0503, // 000A GETMET R3 R2 K3
+ 0x8C0C0502, // 000A GETMET R3 R2 K2
0x7C0C0200, // 000B CALL R3 1
0x80000000, // 000C RET 0
})
@@ -128,47 +161,37 @@ be_local_closure(class_Animate_core_remove_painter, /* name */
/********************************************************************
** Solidified function: stop
********************************************************************/
-extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_stop, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_core,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(running),
- /* K1 */ be_nested_str_weak(animators),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(stop),
- /* K4 */ be_const_int(1),
- /* K5 */ be_nested_str_weak(tasmota),
- /* K6 */ be_nested_str_weak(remove_fast_loop),
- /* K7 */ be_nested_str_weak(fast_loop_cb),
- }),
+ &be_ktab_class_Animate_core, /* shared constants */
be_str_weak(stop),
&be_const_str_solidified,
( &(const binstruction[19]) { /* code */
0x50040000, // 0000 LDBOOL R1 0 0
- 0x90020001, // 0001 SETMBR R0 K0 R1
- 0x88040101, // 0002 GETMBR R1 R0 K1
- 0x58080002, // 0003 LDCONST R2 K2
+ 0x90021601, // 0001 SETMBR R0 K11 R1
+ 0x8804010C, // 0002 GETMBR R1 R0 K12
+ 0x58080007, // 0003 LDCONST R2 K7
0x600C000C, // 0004 GETGBL R3 G12
0x5C100200, // 0005 MOVE R4 R1
0x7C0C0200, // 0006 CALL R3 1
0x140C0403, // 0007 LT R3 R2 R3
0x780E0004, // 0008 JMPF R3 #000E
0x940C0202, // 0009 GETIDX R3 R1 R2
- 0x8C0C0703, // 000A GETMET R3 R3 K3
+ 0x8C0C0700, // 000A GETMET R3 R3 K0
0x7C0C0200, // 000B CALL R3 1
- 0x00080504, // 000C ADD R2 R2 K4
+ 0x0008050D, // 000C ADD R2 R2 K13
0x7001FFF5, // 000D JMP #0004
- 0xB80E0A00, // 000E GETNGBL R3 K5
- 0x8C0C0706, // 000F GETMET R3 R3 K6
- 0x88140107, // 0010 GETMBR R5 R0 K7
+ 0xB80E0800, // 000E GETNGBL R3 K4
+ 0x8C0C070E, // 000F GETMET R3 R3 K14
+ 0x8814010F, // 0010 GETMBR R5 R0 K15
0x7C0C0400, // 0011 CALL R3 2
0x80000000, // 0012 RET 0
})
@@ -180,24 +203,21 @@ be_local_closure(class_Animate_core_stop, /* name */
/********************************************************************
** Solidified function: get_bri
********************************************************************/
-extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_get_bri, /* name */
be_nested_proto(
3, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_core,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(bri),
- }),
+ &be_ktab_class_Animate_core, /* shared constants */
be_str_weak(get_bri),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x88080106, // 0000 GETMBR R2 R0 K6
0x80040400, // 0001 RET 1 R2
})
)
@@ -208,26 +228,22 @@ be_local_closure(class_Animate_core_get_bri, /* name */
/********************************************************************
** Solidified function: set_bri
********************************************************************/
-extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_set_bri, /* name */
be_nested_proto(
4, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_core,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(bri),
- /* K1 */ be_nested_str_weak(set_strip_bri),
- }),
+ &be_ktab_class_Animate_core, /* shared constants */
be_str_weak(set_bri),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x8C080101, // 0001 GETMET R2 R0 K1
+ 0x90020C01, // 0000 SETMBR R0 K6 R1
+ 0x8C080110, // 0001 GETMET R2 R0 K16
0x7C080200, // 0002 CALL R2 1
0x80000000, // 0003 RET 0
})
@@ -239,34 +255,29 @@ be_local_closure(class_Animate_core_set_bri, /* name */
/********************************************************************
** Solidified function: add_painter
********************************************************************/
-extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_add_painter, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_core,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(painters),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(push),
- }),
+ &be_ktab_class_Animate_core, /* shared constants */
be_str_weak(add_painter),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x88080108, // 0000 GETMBR R2 R0 K8
+ 0x8C08050A, // 0001 GETMET R2 R2 K10
0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
0x4C0C0000, // 0004 LDNIL R3
0x1C080403, // 0005 EQ R2 R2 R3
0x780A0003, // 0006 JMPF R2 #000B
- 0x88080100, // 0007 GETMBR R2 R0 K0
- 0x8C080502, // 0008 GETMET R2 R2 K2
+ 0x88080108, // 0007 GETMBR R2 R0 K8
+ 0x8C080511, // 0008 GETMET R2 R2 K17
0x5C100200, // 0009 MOVE R4 R1
0x7C080400, // 000A CALL R2 2
0x80000000, // 000B RET 0
@@ -279,72 +290,42 @@ be_local_closure(class_Animate_core_add_painter, /* name */
/********************************************************************
** Solidified function: fast_loop
********************************************************************/
-extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_fast_loop, /* name */
be_nested_proto(
13, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_core,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[28]) { /* constants */
- /* K0 */ be_nested_str_weak(running),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(time_reached),
- /* K3 */ be_nested_str_weak(fast_loop_next),
- /* K4 */ be_nested_str_weak(strip),
- /* K5 */ be_nested_str_weak(can_show),
- /* K6 */ be_nested_str_weak(frame),
- /* K7 */ be_nested_str_weak(fill_pixels),
- /* K8 */ be_nested_str_weak(back_color),
- /* K9 */ be_const_int(0),
- /* K10 */ be_nested_str_weak(millis),
- /* K11 */ be_nested_str_weak(FAST_LOOP_MIN),
- /* K12 */ be_nested_str_weak(animators),
- /* K13 */ be_nested_str_weak(animate),
- /* K14 */ be_const_int(1),
- /* K15 */ be_nested_str_weak(layer),
- /* K16 */ be_nested_str_weak(painters),
- /* K17 */ be_const_int(-16777216),
- /* K18 */ be_nested_str_weak(paint),
- /* K19 */ be_nested_str_weak(blend_pixels),
- /* K20 */ be_nested_str_weak(obj),
- /* K21 */ be_nested_str_weak(mth),
- /* K22 */ be_nested_str_weak(paste_pixels),
- /* K23 */ be_nested_str_weak(pixels_buffer),
- /* K24 */ be_nested_str_weak(get_bri),
- /* K25 */ be_nested_str_weak(get_gamma),
- /* K26 */ be_nested_str_weak(dirty),
- /* K27 */ be_nested_str_weak(show),
- }),
+ &be_ktab_class_Animate_core, /* shared constants */
be_str_weak(fast_loop),
&be_const_str_solidified,
( &(const binstruction[84]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804010B, // 0000 GETMBR R1 R0 K11
0x78060050, // 0001 JMPF R1 #0053
- 0xB8060200, // 0002 GETNGBL R1 K1
- 0x8C040302, // 0003 GETMET R1 R1 K2
- 0x880C0103, // 0004 GETMBR R3 R0 K3
+ 0xB8060800, // 0002 GETNGBL R1 K4
+ 0x8C040312, // 0003 GETMET R1 R1 K18
+ 0x880C0113, // 0004 GETMBR R3 R0 K19
0x7C040400, // 0005 CALL R1 2
0x7806004B, // 0006 JMPF R1 #0053
- 0x88040104, // 0007 GETMBR R1 R0 K4
- 0x8C040305, // 0008 GETMET R1 R1 K5
+ 0x88040101, // 0007 GETMBR R1 R0 K1
+ 0x8C040314, // 0008 GETMET R1 R1 K20
0x7C040200, // 0009 CALL R1 1
0x78060047, // 000A JMPF R1 #0053
- 0x88040106, // 000B GETMBR R1 R0 K6
- 0x8C040307, // 000C GETMET R1 R1 K7
- 0x880C0108, // 000D GETMBR R3 R0 K8
+ 0x88040115, // 000B GETMBR R1 R0 K21
+ 0x8C040316, // 000C GETMET R1 R1 K22
+ 0x880C0117, // 000D GETMBR R3 R0 K23
0x7C040400, // 000E CALL R1 2
- 0x58040009, // 000F LDCONST R1 K9
- 0xB80A0200, // 0010 GETNGBL R2 K1
- 0x8C08050A, // 0011 GETMET R2 R2 K10
+ 0x58040007, // 000F LDCONST R1 K7
+ 0xB80A0800, // 0010 GETNGBL R2 K4
+ 0x8C080518, // 0011 GETMET R2 R2 K24
0x7C080200, // 0012 CALL R2 1
- 0x880C010B, // 0013 GETMBR R3 R0 K11
+ 0x880C0119, // 0013 GETMBR R3 R0 K25
0x000C0403, // 0014 ADD R3 R2 R3
- 0x90020603, // 0015 SETMBR R0 K3 R3
+ 0x90022603, // 0015 SETMBR R0 K19 R3
0x600C000C, // 0016 GETGBL R3 G12
0x8810010C, // 0017 GETMBR R4 R0 K12
0x7C0C0200, // 0018 CALL R3 1
@@ -352,59 +333,59 @@ be_local_closure(class_Animate_core_fast_loop, /* name */
0x780E0006, // 001A JMPF R3 #0022
0x880C010C, // 001B GETMBR R3 R0 K12
0x940C0601, // 001C GETIDX R3 R3 R1
- 0x8C0C070D, // 001D GETMET R3 R3 K13
+ 0x8C0C071A, // 001D GETMET R3 R3 K26
0x5C140400, // 001E MOVE R5 R2
0x7C0C0400, // 001F CALL R3 2
- 0x0004030E, // 0020 ADD R1 R1 K14
+ 0x0004030D, // 0020 ADD R1 R1 K13
0x7001FFF3, // 0021 JMP #0016
- 0x58040009, // 0022 LDCONST R1 K9
- 0x880C0106, // 0023 GETMBR R3 R0 K6
- 0x8810010F, // 0024 GETMBR R4 R0 K15
+ 0x58040007, // 0022 LDCONST R1 K7
+ 0x880C0115, // 0023 GETMBR R3 R0 K21
+ 0x8810011B, // 0024 GETMBR R4 R0 K27
0x6014000C, // 0025 GETGBL R5 G12
- 0x88180110, // 0026 GETMBR R6 R0 K16
+ 0x88180108, // 0026 GETMBR R6 R0 K8
0x7C140200, // 0027 CALL R5 1
0x14140205, // 0028 LT R5 R1 R5
0x7816000D, // 0029 JMPF R5 #0038
- 0x8C140907, // 002A GETMET R5 R4 K7
- 0x581C0011, // 002B LDCONST R7 K17
+ 0x8C140916, // 002A GETMET R5 R4 K22
+ 0x581C001C, // 002B LDCONST R7 K28
0x7C140400, // 002C CALL R5 2
- 0x88140110, // 002D GETMBR R5 R0 K16
+ 0x88140108, // 002D GETMBR R5 R0 K8
0x94140A01, // 002E GETIDX R5 R5 R1
- 0x8C140B12, // 002F GETMET R5 R5 K18
+ 0x8C140B1D, // 002F GETMET R5 R5 K29
0x5C1C0800, // 0030 MOVE R7 R4
0x7C140400, // 0031 CALL R5 2
0x78160002, // 0032 JMPF R5 #0036
- 0x8C140713, // 0033 GETMET R5 R3 K19
+ 0x8C14071E, // 0033 GETMET R5 R3 K30
0x5C1C0800, // 0034 MOVE R7 R4
0x7C140400, // 0035 CALL R5 2
- 0x0004030E, // 0036 ADD R1 R1 K14
+ 0x0004030D, // 0036 ADD R1 R1 K13
0x7001FFEC, // 0037 JMP #0025
- 0x88140114, // 0038 GETMBR R5 R0 K20
- 0x88180115, // 0039 GETMBR R6 R0 K21
+ 0x8814011F, // 0038 GETMBR R5 R0 K31
+ 0x88180120, // 0039 GETMBR R6 R0 K32
0x78160003, // 003A JMPF R5 #003F
0x781A0002, // 003B JMPF R6 #003F
0x5C1C0C00, // 003C MOVE R7 R6
0x5C200A00, // 003D MOVE R8 R5
0x7C1C0200, // 003E CALL R7 1
- 0x8C1C010D, // 003F GETMET R7 R0 K13
+ 0x8C1C011A, // 003F GETMET R7 R0 K26
0x7C1C0200, // 0040 CALL R7 1
- 0x881C0106, // 0041 GETMBR R7 R0 K6
- 0x8C1C0F16, // 0042 GETMET R7 R7 K22
- 0x88240104, // 0043 GETMBR R9 R0 K4
- 0x8C241317, // 0044 GETMET R9 R9 K23
+ 0x881C0115, // 0041 GETMBR R7 R0 K21
+ 0x8C1C0F21, // 0042 GETMET R7 R7 K33
+ 0x88240101, // 0043 GETMBR R9 R0 K1
+ 0x8C241322, // 0044 GETMET R9 R9 K34
0x7C240200, // 0045 CALL R9 1
- 0x88280104, // 0046 GETMBR R10 R0 K4
- 0x8C281518, // 0047 GETMET R10 R10 K24
+ 0x88280101, // 0046 GETMBR R10 R0 K1
+ 0x8C281523, // 0047 GETMET R10 R10 K35
0x7C280200, // 0048 CALL R10 1
- 0x882C0104, // 0049 GETMBR R11 R0 K4
- 0x8C2C1719, // 004A GETMET R11 R11 K25
+ 0x882C0101, // 0049 GETMBR R11 R0 K1
+ 0x8C2C1724, // 004A GETMET R11 R11 K36
0x7C2C0200, // 004B CALL R11 1
0x7C1C0800, // 004C CALL R7 4
- 0x881C0104, // 004D GETMBR R7 R0 K4
- 0x8C1C0F1A, // 004E GETMET R7 R7 K26
+ 0x881C0101, // 004D GETMBR R7 R0 K1
+ 0x8C1C0F25, // 004E GETMET R7 R7 K37
0x7C1C0200, // 004F CALL R7 1
- 0x881C0104, // 0050 GETMBR R7 R0 K4
- 0x8C1C0F1B, // 0051 GETMET R7 R7 K27
+ 0x881C0101, // 0050 GETMBR R7 R0 K1
+ 0x8C1C0F26, // 0051 GETMET R7 R7 K38
0x7C1C0200, // 0052 CALL R7 1
0x80000000, // 0053 RET 0
})
@@ -416,37 +397,31 @@ be_local_closure(class_Animate_core_fast_loop, /* name */
/********************************************************************
** Solidified function: remove_animator
********************************************************************/
-extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_remove_animator, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_core,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(animators),
- /* K1 */ be_nested_str_weak(remove),
- /* K2 */ be_nested_str_weak(find),
- /* K3 */ be_nested_str_weak(clear),
- }),
+ &be_ktab_class_Animate_core, /* shared constants */
be_str_weak(remove_animator),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8808010C, // 0000 GETMBR R2 R0 K12
0x4C0C0000, // 0001 LDNIL R3
0x200C0203, // 0002 NE R3 R1 R3
0x780E0005, // 0003 JMPF R3 #000A
- 0x8C0C0501, // 0004 GETMET R3 R2 K1
- 0x8C140502, // 0005 GETMET R5 R2 K2
+ 0x8C0C0509, // 0004 GETMET R3 R2 K9
+ 0x8C14050A, // 0005 GETMET R5 R2 K10
0x5C1C0200, // 0006 MOVE R7 R1
0x7C140400, // 0007 CALL R5 2
0x7C0C0400, // 0008 CALL R3 2
0x70020001, // 0009 JMP #000C
- 0x8C0C0503, // 000A GETMET R3 R2 K3
+ 0x8C0C0502, // 000A GETMET R3 R2 K2
0x7C0C0200, // 000B CALL R3 1
0x80000000, // 000C RET 0
})
@@ -458,18 +433,17 @@ be_local_closure(class_Animate_core_remove_animator, /* name */
/********************************************************************
** Solidified function: animate
********************************************************************/
-extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_animate, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_core,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Animate_core, /* shared constants */
be_str_weak(animate),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -483,26 +457,22 @@ be_local_closure(class_Animate_core_animate, /* name */
/********************************************************************
** Solidified function: set_current
********************************************************************/
-extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_set_current, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_core,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(global),
- /* K1 */ be_nested_str_weak(_cur_anim),
- }),
+ &be_ktab_class_Animate_core, /* shared constants */
be_str_weak(set_current),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x90060200, // 0001 SETMBR R1 K1 R0
+ 0xB8064E00, // 0000 GETNGBL R1 K39
+ 0x90065000, // 0001 SETMBR R1 K40 R0
0x80000000, // 0002 RET 0
})
)
@@ -513,16 +483,15 @@ be_local_closure(class_Animate_core_set_current, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_init, /* name */
be_nested_proto(
7, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
2, /* nstack */
0, /* argc */
@@ -532,7 +501,7 @@ be_local_closure(class_Animate_core_init, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(fast_loop),
@@ -546,63 +515,46 @@ be_local_closure(class_Animate_core_init, /* name */
0x80000000, // 0003 RET 0
})
),
- &be_class_Animate_core,
}),
1, /* has constants */
- ( &(const bvalue[15]) { /* constants */
- /* K0 */ be_nested_str_weak(animate),
- /* K1 */ be_nested_str_weak(strip),
- /* K2 */ be_nested_str_weak(bri),
- /* K3 */ be_nested_str_weak(set_strip_bri),
- /* K4 */ be_nested_str_weak(running),
- /* K5 */ be_nested_str_weak(pixel_count),
- /* K6 */ be_nested_str_weak(animators),
- /* K7 */ be_nested_str_weak(painters),
- /* K8 */ be_nested_str_weak(clear),
- /* K9 */ be_nested_str_weak(frame),
- /* K10 */ be_nested_str_weak(layer),
- /* K11 */ be_nested_str_weak(fast_loop_cb),
- /* K12 */ be_nested_str_weak(back_color),
- /* K13 */ be_const_int(0),
- /* K14 */ be_nested_str_weak(set_current),
- }),
+ &be_ktab_class_Animate_core, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[37]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
+ 0xA40E3400, // 0000 IMPORT R3 K26
0x90020201, // 0001 SETMBR R0 K1 R1
0x4C100000, // 0002 LDNIL R4
0x1C100404, // 0003 EQ R4 R2 R4
0x78120000, // 0004 JMPF R4 #0006
0x540A0031, // 0005 LDINT R2 50
- 0x90020402, // 0006 SETMBR R0 K2 R2
- 0x8C100103, // 0007 GETMET R4 R0 K3
+ 0x90020C02, // 0006 SETMBR R0 K6 R2
+ 0x8C100110, // 0007 GETMET R4 R0 K16
0x7C100200, // 0008 CALL R4 1
0x50100000, // 0009 LDBOOL R4 0 0
- 0x90020804, // 000A SETMBR R0 K4 R4
- 0x8C100305, // 000B GETMET R4 R1 K5
+ 0x90021604, // 000A SETMBR R0 K11 R4
+ 0x8C100329, // 000B GETMET R4 R1 K41
0x7C100200, // 000C CALL R4 1
- 0x90020A04, // 000D SETMBR R0 K5 R4
+ 0x90025204, // 000D SETMBR R0 K41 R4
0x60100012, // 000E GETGBL R4 G18
0x7C100000, // 000F CALL R4 0
- 0x90020C04, // 0010 SETMBR R0 K6 R4
+ 0x90021804, // 0010 SETMBR R0 K12 R4
0x60100012, // 0011 GETGBL R4 G18
0x7C100000, // 0012 CALL R4 0
- 0x90020E04, // 0013 SETMBR R0 K7 R4
- 0x8C100108, // 0014 GETMET R4 R0 K8
+ 0x90021004, // 0013 SETMBR R0 K8 R4
+ 0x8C100102, // 0014 GETMET R4 R0 K2
0x7C100200, // 0015 CALL R4 1
- 0x8C100709, // 0016 GETMET R4 R3 K9
- 0x88180105, // 0017 GETMBR R6 R0 K5
+ 0x8C100715, // 0016 GETMET R4 R3 K21
+ 0x88180129, // 0017 GETMBR R6 R0 K41
0x7C100400, // 0018 CALL R4 2
- 0x90021204, // 0019 SETMBR R0 K9 R4
- 0x8C100709, // 001A GETMET R4 R3 K9
- 0x88180105, // 001B GETMBR R6 R0 K5
+ 0x90022A04, // 0019 SETMBR R0 K21 R4
+ 0x8C100715, // 001A GETMET R4 R3 K21
+ 0x88180129, // 001B GETMBR R6 R0 K41
0x7C100400, // 001C CALL R4 2
- 0x90021404, // 001D SETMBR R0 K10 R4
+ 0x90023604, // 001D SETMBR R0 K27 R4
0x84100000, // 001E CLOSURE R4 P0
- 0x90021604, // 001F SETMBR R0 K11 R4
- 0x9002190D, // 0020 SETMBR R0 K12 K13
- 0x8C10010E, // 0021 GETMET R4 R0 K14
+ 0x90021E04, // 001F SETMBR R0 K15 R4
+ 0x90022F07, // 0020 SETMBR R0 K23 K7
+ 0x8C10012A, // 0021 GETMET R4 R0 K42
0x7C100200, // 0022 CALL R4 1
0xA0000000, // 0023 CLOSE R0
0x80000000, // 0024 RET 0
@@ -615,26 +567,22 @@ be_local_closure(class_Animate_core_init, /* name */
/********************************************************************
** Solidified function: set_cb
********************************************************************/
-extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_set_cb, /* name */
be_nested_proto(
3, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_core,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(obj),
- /* K1 */ be_nested_str_weak(mth),
- }),
+ &be_ktab_class_Animate_core, /* shared constants */
be_str_weak(set_cb),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
+ 0x90023E01, // 0000 SETMBR R0 K31 R1
+ 0x90024002, // 0001 SETMBR R0 K32 R2
0x80000000, // 0002 RET 0
})
)
@@ -645,24 +593,21 @@ be_local_closure(class_Animate_core_set_cb, /* name */
/********************************************************************
** Solidified function: set_back_color
********************************************************************/
-extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_set_back_color, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_core,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(back_color),
- }),
+ &be_ktab_class_Animate_core, /* shared constants */
be_str_weak(set_back_color),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90022E01, // 0000 SETMBR R0 K23 R1
0x80000000, // 0001 RET 0
})
)
@@ -673,30 +618,25 @@ be_local_closure(class_Animate_core_set_back_color, /* name */
/********************************************************************
** Solidified function: add_background_animator
********************************************************************/
-extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_add_background_animator, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_core,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(set_cb),
- /* K1 */ be_nested_str_weak(set_back_color),
- /* K2 */ be_nested_str_weak(add_animator),
- }),
+ &be_ktab_class_Animate_core, /* shared constants */
be_str_weak(add_background_animator),
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
- 0x8C080300, // 0000 GETMET R2 R1 K0
+ 0x8C08032B, // 0000 GETMET R2 R1 K43
0x5C100000, // 0001 MOVE R4 R0
- 0x88140101, // 0002 GETMBR R5 R0 K1
+ 0x8814012C, // 0002 GETMBR R5 R0 K44
0x7C080600, // 0003 CALL R2 3
- 0x8C080102, // 0004 GETMET R2 R0 K2
+ 0x8C08012D, // 0004 GETMET R2 R0 K45
0x5C100200, // 0005 MOVE R4 R1
0x7C080400, // 0006 CALL R2 2
0x80000000, // 0007 RET 0
@@ -709,34 +649,29 @@ be_local_closure(class_Animate_core_add_background_animator, /* name */
/********************************************************************
** Solidified function: add_animator
********************************************************************/
-extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_add_animator, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_core,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(animators),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(push),
- }),
+ &be_ktab_class_Animate_core, /* shared constants */
be_str_weak(add_animator),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x8808010C, // 0000 GETMBR R2 R0 K12
+ 0x8C08050A, // 0001 GETMET R2 R2 K10
0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
0x4C0C0000, // 0004 LDNIL R3
0x1C080403, // 0005 EQ R2 R2 R3
0x780A0003, // 0006 JMPF R2 #000B
- 0x88080100, // 0007 GETMBR R2 R0 K0
- 0x8C080502, // 0008 GETMET R2 R2 K2
+ 0x8808010C, // 0007 GETMBR R2 R0 K12
+ 0x8C080511, // 0008 GETMET R2 R2 K17
0x5C100200, // 0009 MOVE R4 R1
0x7C080400, // 000A CALL R2 2
0x80000000, // 000B RET 0
@@ -749,31 +684,25 @@ be_local_closure(class_Animate_core_add_animator, /* name */
/********************************************************************
** Solidified function: remove
********************************************************************/
-extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_remove, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_core,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(clear),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(remove_fast_loop),
- /* K3 */ be_nested_str_weak(fast_loop_cb),
- }),
+ &be_ktab_class_Animate_core, /* shared constants */
be_str_weak(remove),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040102, // 0000 GETMET R1 R0 K2
0x7C040200, // 0001 CALL R1 1
- 0xB8060200, // 0002 GETNGBL R1 K1
- 0x8C040302, // 0003 GETMET R1 R1 K2
- 0x880C0103, // 0004 GETMBR R3 R0 K3
+ 0xB8060800, // 0002 GETNGBL R1 K4
+ 0x8C04030E, // 0003 GETMET R1 R1 K14
+ 0x880C010F, // 0004 GETMBR R3 R0 K15
0x7C040400, // 0005 CALL R1 2
0x80000000, // 0006 RET 0
})
@@ -785,49 +714,38 @@ be_local_closure(class_Animate_core_remove, /* name */
/********************************************************************
** Solidified function: start
********************************************************************/
-extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_start, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_core,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(running),
- /* K1 */ be_nested_str_weak(animators),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(start),
- /* K4 */ be_const_int(1),
- /* K5 */ be_nested_str_weak(fast_loop_next),
- /* K6 */ be_nested_str_weak(tasmota),
- /* K7 */ be_nested_str_weak(add_fast_loop),
- /* K8 */ be_nested_str_weak(fast_loop_cb),
- }),
+ &be_ktab_class_Animate_core, /* shared constants */
be_str_weak(start),
&be_const_str_solidified,
( &(const binstruction[20]) { /* code */
0x50040200, // 0000 LDBOOL R1 1 0
- 0x90020001, // 0001 SETMBR R0 K0 R1
- 0x88040101, // 0002 GETMBR R1 R0 K1
- 0x58080002, // 0003 LDCONST R2 K2
+ 0x90021601, // 0001 SETMBR R0 K11 R1
+ 0x8804010C, // 0002 GETMBR R1 R0 K12
+ 0x58080007, // 0003 LDCONST R2 K7
0x600C000C, // 0004 GETGBL R3 G12
0x5C100200, // 0005 MOVE R4 R1
0x7C0C0200, // 0006 CALL R3 1
0x140C0403, // 0007 LT R3 R2 R3
0x780E0004, // 0008 JMPF R3 #000E
0x940C0202, // 0009 GETIDX R3 R1 R2
- 0x8C0C0703, // 000A GETMET R3 R3 K3
+ 0x8C0C072E, // 000A GETMET R3 R3 K46
0x7C0C0200, // 000B CALL R3 1
- 0x00080504, // 000C ADD R2 R2 K4
+ 0x0008050D, // 000C ADD R2 R2 K13
0x7001FFF5, // 000D JMP #0004
- 0x90020B02, // 000E SETMBR R0 K5 K2
- 0xB80E0C00, // 000F GETNGBL R3 K6
- 0x8C0C0707, // 0010 GETMET R3 R3 K7
- 0x88140108, // 0011 GETMBR R5 R0 K8
+ 0x90022707, // 000E SETMBR R0 K19 K7
+ 0xB80E0800, // 000F GETNGBL R3 K4
+ 0x8C0C072F, // 0010 GETMET R3 R3 K47
+ 0x8814010F, // 0011 GETMBR R5 R0 K15
0x7C0C0400, // 0012 CALL R3 2
0x80000000, // 0013 RET 0
})
diff --git a/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h b/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h
index 1425a7234..28805c5fc 100644
--- a/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h
+++ b/lib/libesp32/berry_animate/src/solidify/solidified_animate_2_animate_effects.h
@@ -9,7 +9,6 @@ extern const bclass be_class_Animate_painter;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Animate_painter;
be_local_closure(class_Animate_painter_init, /* name */
be_nested_proto(
5, /* nstack */
@@ -18,7 +17,7 @@ be_local_closure(class_Animate_painter_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_painter,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str_weak(global),
@@ -46,7 +45,6 @@ be_local_closure(class_Animate_painter_init, /* name */
/********************************************************************
** Solidified function: paint
********************************************************************/
-extern const bclass be_class_Animate_painter;
be_local_closure(class_Animate_painter_paint, /* name */
be_nested_proto(
2, /* nstack */
@@ -55,7 +53,7 @@ be_local_closure(class_Animate_painter_paint, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_painter,
+ NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(paint),
@@ -81,26 +79,42 @@ be_local_class(Animate_painter,
})),
be_str_weak(Animate_painter)
);
+// compact class 'Animate_pulse' ktab size: 15, total: 28 (saved 104 bytes)
+static const bvalue be_ktab_class_Animate_pulse[15] = {
+ /* K0 */ be_nested_str_weak(pulse_size),
+ /* K1 */ be_nested_str_weak(slew_size),
+ /* K2 */ be_nested_str_weak(back_color),
+ /* K3 */ be_nested_str_weak(pos),
+ /* K4 */ be_nested_str_weak(color),
+ /* K5 */ be_nested_str_weak(init),
+ /* K6 */ be_const_int(16777215),
+ /* K7 */ be_const_int(1),
+ /* K8 */ be_const_int(0),
+ /* K9 */ be_const_int(-16777216),
+ /* K10 */ be_nested_str_weak(fill_pixels),
+ /* K11 */ be_nested_str_weak(pixel_size),
+ /* K12 */ be_nested_str_weak(blend),
+ /* K13 */ be_nested_str_weak(tasmota),
+ /* K14 */ be_nested_str_weak(scale_int),
+};
+
extern const bclass be_class_Animate_pulse;
/********************************************************************
** Solidified function: set_pulse_size
********************************************************************/
-extern const bclass be_class_Animate_pulse;
be_local_closure(class_Animate_pulse_set_pulse_size, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_pulse,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(pulse_size),
- }),
+ &be_ktab_class_Animate_pulse, /* shared constants */
be_str_weak(set_pulse_size),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
@@ -115,24 +129,21 @@ be_local_closure(class_Animate_pulse_set_pulse_size, /* name */
/********************************************************************
** Solidified function: set_slew_size
********************************************************************/
-extern const bclass be_class_Animate_pulse;
be_local_closure(class_Animate_pulse_set_slew_size, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_pulse,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(slew_size),
- }),
+ &be_ktab_class_Animate_pulse, /* shared constants */
be_str_weak(set_slew_size),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90020201, // 0000 SETMBR R0 K1 R1
0x80000000, // 0001 RET 0
})
)
@@ -143,24 +154,21 @@ be_local_closure(class_Animate_pulse_set_slew_size, /* name */
/********************************************************************
** Solidified function: set_back_color
********************************************************************/
-extern const bclass be_class_Animate_pulse;
be_local_closure(class_Animate_pulse_set_back_color, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_pulse,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(back_color),
- }),
+ &be_ktab_class_Animate_pulse, /* shared constants */
be_str_weak(set_back_color),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90020401, // 0000 SETMBR R0 K2 R1
0x80000000, // 0001 RET 0
})
)
@@ -171,24 +179,21 @@ be_local_closure(class_Animate_pulse_set_back_color, /* name */
/********************************************************************
** Solidified function: set_pos
********************************************************************/
-extern const bclass be_class_Animate_pulse;
be_local_closure(class_Animate_pulse_set_pos, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_pulse,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(pos),
- }),
+ &be_ktab_class_Animate_pulse, /* shared constants */
be_str_weak(set_pos),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90020601, // 0000 SETMBR R0 K3 R1
0x80000000, // 0001 RET 0
})
)
@@ -199,24 +204,21 @@ be_local_closure(class_Animate_pulse_set_pos, /* name */
/********************************************************************
** Solidified function: set_color
********************************************************************/
-extern const bclass be_class_Animate_pulse;
be_local_closure(class_Animate_pulse_set_color, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_pulse,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(color),
- }),
+ &be_ktab_class_Animate_pulse, /* shared constants */
be_str_weak(set_color),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90020801, // 0000 SETMBR R0 K4 R1
0x80000000, // 0001 RET 0
})
)
@@ -227,60 +229,48 @@ be_local_closure(class_Animate_pulse_set_color, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Animate_pulse;
be_local_closure(class_Animate_pulse_init, /* name */
be_nested_proto(
6, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_pulse,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_const_int(16777215),
- /* K2 */ be_const_int(1),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(color),
- /* K5 */ be_nested_str_weak(back_color),
- /* K6 */ be_const_int(-16777216),
- /* K7 */ be_nested_str_weak(pulse_size),
- /* K8 */ be_nested_str_weak(slew_size),
- /* K9 */ be_nested_str_weak(pos),
- }),
+ &be_ktab_class_Animate_pulse, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[29]) { /* code */
0x60100003, // 0000 GETGBL R4 G3
0x5C140000, // 0001 MOVE R5 R0
0x7C100200, // 0002 CALL R4 1
- 0x8C100900, // 0003 GETMET R4 R4 K0
+ 0x8C100905, // 0003 GETMET R4 R4 K5
0x7C100200, // 0004 CALL R4 1
0x4C100000, // 0005 LDNIL R4
0x1C100204, // 0006 EQ R4 R1 R4
0x78120000, // 0007 JMPF R4 #0009
- 0x58040001, // 0008 LDCONST R1 K1
+ 0x58040006, // 0008 LDCONST R1 K6
0x4C100000, // 0009 LDNIL R4
0x1C100404, // 000A EQ R4 R2 R4
0x78120000, // 000B JMPF R4 #000D
- 0x58080002, // 000C LDCONST R2 K2
+ 0x58080007, // 000C LDCONST R2 K7
0x4C100000, // 000D LDNIL R4
0x1C100604, // 000E EQ R4 R3 R4
0x78120000, // 000F JMPF R4 #0011
- 0x580C0003, // 0010 LDCONST R3 K3
+ 0x580C0008, // 0010 LDCONST R3 K8
0x90020801, // 0011 SETMBR R0 K4 R1
- 0x90020B06, // 0012 SETMBR R0 K5 K6
- 0x14100503, // 0013 LT R4 R2 K3
+ 0x90020509, // 0012 SETMBR R0 K2 K9
+ 0x14100508, // 0013 LT R4 R2 K8
0x78120000, // 0014 JMPF R4 #0016
- 0x58080003, // 0015 LDCONST R2 K3
- 0x90020E02, // 0016 SETMBR R0 K7 R2
- 0x14100703, // 0017 LT R4 R3 K3
+ 0x58080008, // 0015 LDCONST R2 K8
+ 0x90020002, // 0016 SETMBR R0 K0 R2
+ 0x14100708, // 0017 LT R4 R3 K8
0x78120000, // 0018 JMPF R4 #001A
- 0x580C0003, // 0019 LDCONST R3 K3
- 0x90021003, // 001A SETMBR R0 K8 R3
- 0x90021303, // 001B SETMBR R0 K9 K3
+ 0x580C0008, // 0019 LDCONST R3 K8
+ 0x90020203, // 001A SETMBR R0 K1 R3
+ 0x90020708, // 001B SETMBR R0 K3 K8
0x80000000, // 001C RET 0
})
)
@@ -291,46 +281,31 @@ be_local_closure(class_Animate_pulse_init, /* name */
/********************************************************************
** Solidified function: paint
********************************************************************/
-extern const bclass be_class_Animate_pulse;
be_local_closure(class_Animate_pulse_paint, /* name */
be_nested_proto(
22, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_pulse,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(back_color),
- /* K1 */ be_const_int(-16777216),
- /* K2 */ be_nested_str_weak(fill_pixels),
- /* K3 */ be_nested_str_weak(pos),
- /* K4 */ be_nested_str_weak(slew_size),
- /* K5 */ be_nested_str_weak(pulse_size),
- /* K6 */ be_nested_str_weak(color),
- /* K7 */ be_nested_str_weak(pixel_size),
- /* K8 */ be_const_int(0),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str_weak(blend),
- /* K11 */ be_nested_str_weak(tasmota),
- /* K12 */ be_nested_str_weak(scale_int),
- }),
+ &be_ktab_class_Animate_pulse, /* shared constants */
be_str_weak(paint),
&be_const_str_solidified,
( &(const binstruction[91]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x200C0501, // 0001 NE R3 R2 K1
+ 0x88080102, // 0000 GETMBR R2 R0 K2
+ 0x200C0509, // 0001 NE R3 R2 K9
0x780E0002, // 0002 JMPF R3 #0006
- 0x8C0C0302, // 0003 GETMET R3 R1 K2
+ 0x8C0C030A, // 0003 GETMET R3 R1 K10
0x5C140400, // 0004 MOVE R5 R2
0x7C0C0400, // 0005 CALL R3 2
0x880C0103, // 0006 GETMBR R3 R0 K3
- 0x88100104, // 0007 GETMBR R4 R0 K4
- 0x88140105, // 0008 GETMBR R5 R0 K5
- 0x88180106, // 0009 GETMBR R6 R0 K6
- 0x881C0307, // 000A GETMBR R7 R1 K7
+ 0x88100101, // 0007 GETMBR R4 R0 K1
+ 0x88140100, // 0008 GETMBR R5 R0 K0
+ 0x88180104, // 0009 GETMBR R6 R0 K4
+ 0x881C030B, // 000A GETMBR R7 R1 K11
0x4C200000, // 000B LDNIL R8
0x4C240000, // 000C LDNIL R9
0x5C200600, // 000D MOVE R8 R3
@@ -346,7 +321,7 @@ be_local_closure(class_Animate_pulse_paint, /* name */
0x142C1409, // 0017 LT R11 R10 R9
0x782E0002, // 0018 JMPF R11 #001C
0x98041406, // 0019 SETIDX R1 R10 R6
- 0x00281509, // 001A ADD R10 R10 K9
+ 0x00281507, // 001A ADD R10 R10 K7
0x7001FFFA, // 001B JMP #0017
0x242C0908, // 001C GT R11 R4 K8
0x782E003A, // 001D JMPF R11 #0059
@@ -362,21 +337,21 @@ be_local_closure(class_Animate_pulse_paint, /* name */
0x5C281000, // 0027 MOVE R10 R8
0x142C1409, // 0028 LT R11 R10 R9
0x782E000F, // 0029 JMPF R11 #003A
- 0x8C2C030A, // 002A GETMET R11 R1 K10
+ 0x8C2C030C, // 002A GETMET R11 R1 K12
0x5C340400, // 002B MOVE R13 R2
0x5C380C00, // 002C MOVE R14 R6
- 0xB83E1600, // 002D GETNGBL R15 K11
- 0x8C3C1F0C, // 002E GETMET R15 R15 K12
+ 0xB83E1A00, // 002D GETNGBL R15 K13
+ 0x8C3C1F0E, // 002E GETMET R15 R15 K14
0x5C441400, // 002F MOVE R17 R10
0x04480604, // 0030 SUB R18 R3 R4
- 0x04482509, // 0031 SUB R18 R18 K9
+ 0x04482507, // 0031 SUB R18 R18 K7
0x5C4C0600, // 0032 MOVE R19 R3
0x545200FE, // 0033 LDINT R20 255
0x58540008, // 0034 LDCONST R21 K8
0x7C3C0C00, // 0035 CALL R15 6
0x7C2C0800, // 0036 CALL R11 4
0x9804140B, // 0037 SETIDX R1 R10 R11
- 0x00281509, // 0038 ADD R10 R10 K9
+ 0x00281507, // 0038 ADD R10 R10 K7
0x7001FFED, // 0039 JMP #0028
0x002C0605, // 003A ADD R11 R3 R5
0x5C201600, // 003B MOVE R8 R11
@@ -392,14 +367,14 @@ be_local_closure(class_Animate_pulse_paint, /* name */
0x5C281000, // 0045 MOVE R10 R8
0x142C1409, // 0046 LT R11 R10 R9
0x782E0010, // 0047 JMPF R11 #0059
- 0x8C2C030A, // 0048 GETMET R11 R1 K10
+ 0x8C2C030C, // 0048 GETMET R11 R1 K12
0x5C340400, // 0049 MOVE R13 R2
0x5C380C00, // 004A MOVE R14 R6
- 0xB83E1600, // 004B GETNGBL R15 K11
- 0x8C3C1F0C, // 004C GETMET R15 R15 K12
+ 0xB83E1A00, // 004B GETNGBL R15 K13
+ 0x8C3C1F0E, // 004C GETMET R15 R15 K14
0x5C441400, // 004D MOVE R17 R10
0x00480605, // 004E ADD R18 R3 R5
- 0x04482509, // 004F SUB R18 R18 K9
+ 0x04482507, // 004F SUB R18 R18 K7
0x004C0605, // 0050 ADD R19 R3 R5
0x004C2604, // 0051 ADD R19 R19 R4
0x58500008, // 0052 LDCONST R20 K8
@@ -407,7 +382,7 @@ be_local_closure(class_Animate_pulse_paint, /* name */
0x7C3C0C00, // 0054 CALL R15 6
0x7C2C0800, // 0055 CALL R11 4
0x9804140B, // 0056 SETIDX R1 R10 R11
- 0x00281509, // 0057 ADD R10 R10 K9
+ 0x00281507, // 0057 ADD R10 R10 K7
0x7001FFEC, // 0058 JMP #0046
0x502C0200, // 0059 LDBOOL R11 1 0
0x80041600, // 005A RET 1 R11
diff --git a/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h b/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h
index e8a6202d1..36b654bd8 100644
--- a/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h
+++ b/lib/libesp32/berry_animate/src/solidify/solidified_animate_9_module.h
@@ -3,26 +3,37 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Animate_animator' ktab size: 10, total: 14 (saved 32 bytes)
+static const bvalue be_ktab_class_Animate_animator[10] = {
+ /* K0 */ be_nested_str_weak(running),
+ /* K1 */ be_nested_str_weak(global),
+ /* K2 */ be_nested_str_weak(_cur_anim),
+ /* K3 */ be_nested_str_weak(add_animator),
+ /* K4 */ be_nested_str_weak(origin),
+ /* K5 */ be_nested_str_weak(duration_ms),
+ /* K6 */ be_nested_str_weak(obj),
+ /* K7 */ be_nested_str_weak(mth),
+ /* K8 */ be_nested_str_weak(tasmota),
+ /* K9 */ be_nested_str_weak(millis),
+};
+
extern const bclass be_class_Animate_animator;
/********************************************************************
** Solidified function: is_running
********************************************************************/
-extern const bclass be_class_Animate_animator;
be_local_closure(class_Animate_animator_is_running, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_animator,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(running),
- }),
+ &be_ktab_class_Animate_animator, /* shared constants */
be_str_weak(is_running),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
@@ -39,18 +50,17 @@ be_local_closure(class_Animate_animator_is_running, /* name */
/********************************************************************
** Solidified function: beat
********************************************************************/
-extern const bclass be_class_Animate_animator;
be_local_closure(class_Animate_animator_beat, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_animator,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Animate_animator, /* shared constants */
be_str_weak(beat),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -64,31 +74,26 @@ be_local_closure(class_Animate_animator_beat, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Animate_animator;
be_local_closure(class_Animate_animator_init, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_animator,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(global),
- /* K1 */ be_nested_str_weak(_cur_anim),
- /* K2 */ be_nested_str_weak(add_animator),
- }),
+ &be_ktab_class_Animate_animator, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
+ 0xB8060200, // 0000 GETNGBL R1 K1
+ 0x88040302, // 0001 GETMBR R1 R1 K2
0x4C080000, // 0002 LDNIL R2
0x20080202, // 0003 NE R2 R1 R2
0x780A0002, // 0004 JMPF R2 #0008
- 0x8C080302, // 0005 GETMET R2 R1 K2
+ 0x8C080303, // 0005 GETMET R2 R1 K3
0x5C100000, // 0006 MOVE R4 R0
0x7C080400, // 0007 CALL R2 2
0x80000000, // 0008 RET 0
@@ -101,28 +106,24 @@ be_local_closure(class_Animate_animator_init, /* name */
/********************************************************************
** Solidified function: stop
********************************************************************/
-extern const bclass be_class_Animate_animator;
be_local_closure(class_Animate_animator_stop, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_animator,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(origin),
- /* K1 */ be_nested_str_weak(running),
- }),
+ &be_ktab_class_Animate_animator, /* shared constants */
be_str_weak(stop),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
0x4C040000, // 0000 LDNIL R1
- 0x90020001, // 0001 SETMBR R0 K0 R1
+ 0x90020801, // 0001 SETMBR R0 K4 R1
0x50040000, // 0002 LDBOOL R1 0 0
- 0x90020201, // 0003 SETMBR R0 K1 R1
+ 0x90020001, // 0003 SETMBR R0 K0 R1
0x80000000, // 0004 RET 0
})
)
@@ -133,24 +134,21 @@ be_local_closure(class_Animate_animator_stop, /* name */
/********************************************************************
** Solidified function: set_duration_ms
********************************************************************/
-extern const bclass be_class_Animate_animator;
be_local_closure(class_Animate_animator_set_duration_ms, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_animator,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(duration_ms),
- }),
+ &be_ktab_class_Animate_animator, /* shared constants */
be_str_weak(set_duration_ms),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90020A01, // 0000 SETMBR R0 K5 R1
0x80000000, // 0001 RET 0
})
)
@@ -161,26 +159,22 @@ be_local_closure(class_Animate_animator_set_duration_ms, /* name */
/********************************************************************
** Solidified function: set_cb
********************************************************************/
-extern const bclass be_class_Animate_animator;
be_local_closure(class_Animate_animator_set_cb, /* name */
be_nested_proto(
3, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_animator,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(obj),
- /* K1 */ be_nested_str_weak(mth),
- }),
+ &be_ktab_class_Animate_animator, /* shared constants */
be_str_weak(set_cb),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
+ 0x90020C01, // 0000 SETMBR R0 K6 R1
+ 0x90020E02, // 0001 SETMBR R0 K7 R2
0x80000000, // 0002 RET 0
})
)
@@ -191,28 +185,21 @@ be_local_closure(class_Animate_animator_set_cb, /* name */
/********************************************************************
** Solidified function: start
********************************************************************/
-extern const bclass be_class_Animate_animator;
be_local_closure(class_Animate_animator_start, /* name */
be_nested_proto(
4, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_animator,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(duration_ms),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(millis),
- /* K3 */ be_nested_str_weak(origin),
- /* K4 */ be_nested_str_weak(running),
- }),
+ &be_ktab_class_Animate_animator, /* shared constants */
be_str_weak(start),
&be_const_str_solidified,
( &(const binstruction[16]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x88080105, // 0000 GETMBR R2 R0 K5
0x4C0C0000, // 0001 LDNIL R3
0x1C080403, // 0002 EQ R2 R2 R3
0x780A0000, // 0003 JMPF R2 #0005
@@ -220,13 +207,13 @@ be_local_closure(class_Animate_animator_start, /* name */
0x4C080000, // 0005 LDNIL R2
0x1C080202, // 0006 EQ R2 R1 R2
0x780A0003, // 0007 JMPF R2 #000C
- 0xB80A0200, // 0008 GETNGBL R2 K1
- 0x8C080502, // 0009 GETMET R2 R2 K2
+ 0xB80A1000, // 0008 GETNGBL R2 K8
+ 0x8C080509, // 0009 GETMET R2 R2 K9
0x7C080200, // 000A CALL R2 1
0x5C040400, // 000B MOVE R1 R2
- 0x90020601, // 000C SETMBR R0 K3 R1
+ 0x90020801, // 000C SETMBR R0 K4 R1
0x50080200, // 000D LDBOOL R2 1 0
- 0x90020802, // 000E SETMBR R0 K4 R2
+ 0x90020002, // 000E SETMBR R0 K0 R2
0x80000000, // 000F RET 0
})
)
@@ -257,29 +244,71 @@ be_local_class(Animate_animator,
})),
be_str_weak(Animate_animator)
);
+extern const bclass be_class_Animate_palette;
+// compact class 'Animate_palette' ktab size: 43, total: 87 (saved 352 bytes)
+static const bvalue be_ktab_class_Animate_palette[43] = {
+ /* K0 */ be_const_class(be_class_Animate_palette),
+ /* K1 */ be_nested_str_weak(ptr),
+ /* K2 */ be_const_int(1),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_nested_str_weak(duration_ms),
+ /* K5 */ be_nested_str_weak(tasmota),
+ /* K6 */ be_nested_str_weak(millis),
+ /* K7 */ be_nested_str_weak(origin),
+ /* K8 */ be_nested_str_weak(scale_uint),
+ /* K9 */ be_nested_str_weak(slots),
+ /* K10 */ be_const_int(2),
+ /* K11 */ be_nested_str_weak(slots_arr),
+ /* K12 */ be_nested_str_weak(palette),
+ /* K13 */ be_nested_str_weak(get),
+ /* K14 */ be_nested_str_weak(color),
+ /* K15 */ be_nested_str_weak(set_rgb),
+ /* K16 */ be_nested_str_weak(bri),
+ /* K17 */ be_nested_str_weak(set_bri),
+ /* K18 */ be_nested_str_weak(r),
+ /* K19 */ be_nested_str_weak(g),
+ /* K20 */ be_nested_str_weak(b),
+ /* K21 */ be_nested_str_weak(obj),
+ /* K22 */ be_nested_str_weak(mth),
+ /* K23 */ be_nested_str_weak(ptr_to_palette),
+ /* K24 */ be_nested_str_weak(set_duration),
+ /* K25 */ be_nested_str_weak(range_min),
+ /* K26 */ be_nested_str_weak(range_max),
+ /* K27 */ be_nested_str_weak(set_range),
+ /* K28 */ be_nested_str_weak(parse_palette),
+ /* K29 */ be_nested_str_weak(background_X3Alinear_X2Dgradient_X28to_X20right),
+ /* K30 */ be_nested_str_weak(_X2C_X23_X2502X_X2502X_X2502X_X20_X25_X2E1f_X25_X25),
+ /* K31 */ be_const_real_hex(0x41200000),
+ /* K32 */ be_nested_str_weak(_X29_X3B),
+ /* K33 */ be_nested_str_weak(resize),
+ /* K34 */ be_nested_str_weak(scale_int),
+ /* K35 */ be_nested_str_weak(value_error),
+ /* K36 */ be_nested_str_weak(min_X20must_X20be_X20lower_X20than_X20mex),
+ /* K37 */ be_nested_str_weak(duration_ms_X20must_X20be_X20positive),
+ /* K38 */ be_nested_str_weak(init),
+ /* K39 */ be_nested_str_weak(running),
+ /* K40 */ be_nested_str_weak(light_state),
+ /* K41 */ be_nested_str_weak(RGB),
+ /* K42 */ be_nested_str_weak(set_palette),
+};
+
extern const bclass be_class_Animate_palette;
/********************************************************************
** Solidified function: ptr_to_palette
********************************************************************/
-extern const bclass be_class_Animate_palette;
be_local_closure(class_Animate_palette_ptr_to_palette, /* name */
be_nested_proto(
8, /* nstack */
1, /* argc */
- 4, /* varg */
+ 12, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_palette,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_const_class(be_class_Animate_palette),
- /* K1 */ be_nested_str_weak(ptr),
- /* K2 */ be_const_int(1),
- /* K3 */ be_const_int(0),
- }),
+ &be_ktab_class_Animate_palette, /* shared constants */
be_str_weak(ptr_to_palette),
&be_const_str_solidified,
( &(const binstruction[45]) { /* code */
@@ -337,44 +366,21 @@ be_local_closure(class_Animate_palette_ptr_to_palette, /* name */
/********************************************************************
** Solidified function: animate
********************************************************************/
-extern const bclass be_class_Animate_palette;
be_local_closure(class_Animate_palette_animate, /* name */
be_nested_proto(
26, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_palette,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[21]) { /* constants */
- /* K0 */ be_nested_str_weak(duration_ms),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(millis),
- /* K3 */ be_nested_str_weak(origin),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(scale_uint),
- /* K6 */ be_nested_str_weak(slots),
- /* K7 */ be_const_int(2),
- /* K8 */ be_nested_str_weak(slots_arr),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str_weak(palette),
- /* K11 */ be_nested_str_weak(get),
- /* K12 */ be_nested_str_weak(color),
- /* K13 */ be_nested_str_weak(set_rgb),
- /* K14 */ be_nested_str_weak(bri),
- /* K15 */ be_nested_str_weak(set_bri),
- /* K16 */ be_nested_str_weak(r),
- /* K17 */ be_nested_str_weak(g),
- /* K18 */ be_nested_str_weak(b),
- /* K19 */ be_nested_str_weak(obj),
- /* K20 */ be_nested_str_weak(mth),
- }),
+ &be_ktab_class_Animate_palette, /* shared constants */
be_str_weak(animate),
&be_const_str_solidified,
( &(const binstruction[193]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x88080104, // 0000 GETMBR R2 R0 K4
0x4C0C0000, // 0001 LDNIL R3
0x1C080403, // 0002 EQ R2 R2 R3
0x780A0000, // 0003 JMPF R2 #0005
@@ -382,55 +388,55 @@ be_local_closure(class_Animate_palette_animate, /* name */
0x4C080000, // 0005 LDNIL R2
0x1C080202, // 0006 EQ R2 R1 R2
0x780A0003, // 0007 JMPF R2 #000C
- 0xB80A0200, // 0008 GETNGBL R2 K1
- 0x8C080502, // 0009 GETMET R2 R2 K2
+ 0xB80A0A00, // 0008 GETNGBL R2 K5
+ 0x8C080506, // 0009 GETMET R2 R2 K6
0x7C080200, // 000A CALL R2 1
0x5C040400, // 000B MOVE R1 R2
- 0x88080103, // 000C GETMBR R2 R0 K3
+ 0x88080107, // 000C GETMBR R2 R0 K7
0x04080202, // 000D SUB R2 R1 R2
- 0x140C0504, // 000E LT R3 R2 K4
+ 0x140C0503, // 000E LT R3 R2 K3
0x780E0001, // 000F JMPF R3 #0012
- 0x58080004, // 0010 LDCONST R2 K4
- 0x88040103, // 0011 GETMBR R1 R0 K3
- 0x880C0100, // 0012 GETMBR R3 R0 K0
- 0xB8120200, // 0013 GETNGBL R4 K1
- 0x88100905, // 0014 GETMBR R4 R4 K5
+ 0x58080003, // 0010 LDCONST R2 K3
+ 0x88040107, // 0011 GETMBR R1 R0 K7
+ 0x880C0104, // 0012 GETMBR R3 R0 K4
+ 0xB8120A00, // 0013 GETNGBL R4 K5
+ 0x88100908, // 0014 GETMBR R4 R4 K8
0x28140403, // 0015 GE R5 R2 R3
0x78160005, // 0016 JMPF R5 #001D
0x0C180403, // 0017 DIV R6 R2 R3
0x08180C03, // 0018 MUL R6 R6 R3
- 0x88140103, // 0019 GETMBR R5 R0 K3
+ 0x88140107, // 0019 GETMBR R5 R0 K7
0x00140A06, // 001A ADD R5 R5 R6
- 0x90020605, // 001B SETMBR R0 K3 R5
+ 0x90020E05, // 001B SETMBR R0 K7 R5
0x10080403, // 001C MOD R2 R2 R3
- 0x88140106, // 001D GETMBR R5 R0 K6
- 0x04180B07, // 001E SUB R6 R5 K7
- 0x241C0D04, // 001F GT R7 R6 K4
+ 0x88140109, // 001D GETMBR R5 R0 K9
+ 0x04180B0A, // 001E SUB R6 R5 K10
+ 0x241C0D03, // 001F GT R7 R6 K3
0x781E0006, // 0020 JMPF R7 #0028
- 0x881C0108, // 0021 GETMBR R7 R0 K8
+ 0x881C010B, // 0021 GETMBR R7 R0 K11
0x941C0E06, // 0022 GETIDX R7 R7 R6
0x281C0407, // 0023 GE R7 R2 R7
0x781E0000, // 0024 JMPF R7 #0026
0x70020001, // 0025 JMP #0028
- 0x04180D09, // 0026 SUB R6 R6 K9
+ 0x04180D02, // 0026 SUB R6 R6 K2
0x7001FFF6, // 0027 JMP #001F
- 0x881C010A, // 0028 GETMBR R7 R0 K10
- 0x8C1C0F0B, // 0029 GETMET R7 R7 K11
+ 0x881C010C, // 0028 GETMBR R7 R0 K12
+ 0x8C1C0F0D, // 0029 GETMET R7 R7 K13
0x54260003, // 002A LDINT R9 4
0x08240C09, // 002B MUL R9 R6 R9
0x542A0003, // 002C LDINT R10 4
0x7C1C0600, // 002D CALL R7 3
- 0x8820010A, // 002E GETMBR R8 R0 K10
- 0x8C20110B, // 002F GETMET R8 R8 K11
- 0x00280D09, // 0030 ADD R10 R6 K9
+ 0x8820010C, // 002E GETMBR R8 R0 K12
+ 0x8C20110D, // 002F GETMET R8 R8 K13
+ 0x00280D02, // 0030 ADD R10 R6 K2
0x542E0003, // 0031 LDINT R11 4
0x0828140B, // 0032 MUL R10 R10 R11
0x542E0003, // 0033 LDINT R11 4
0x7C200600, // 0034 CALL R8 3
- 0x88240108, // 0035 GETMBR R9 R0 K8
+ 0x8824010B, // 0035 GETMBR R9 R0 K11
0x94241206, // 0036 GETIDX R9 R9 R6
- 0x00280D09, // 0037 ADD R10 R6 K9
- 0x882C0108, // 0038 GETMBR R11 R0 K8
+ 0x00280D02, // 0037 ADD R10 R6 K2
+ 0x882C010B, // 0038 GETMBR R11 R0 K11
0x9428160A, // 0039 GETIDX R10 R11 R10
0x5C300800, // 003A MOVE R12 R4
0x5C340400, // 003B MOVE R13 R2
@@ -472,8 +478,8 @@ be_local_closure(class_Animate_palette_animate, /* name */
0x544E00FE, // 005F LDINT R19 255
0x2C482413, // 0060 AND R18 R18 R19
0x7C340A00, // 0061 CALL R13 5
- 0x8838010C, // 0062 GETMBR R14 R0 K12
- 0x8C3C1D0D, // 0063 GETMET R15 R14 K13
+ 0x8838010E, // 0062 GETMBR R14 R0 K14
+ 0x8C3C1D0F, // 0063 GETMET R15 R14 K15
0x54460007, // 0064 LDINT R17 8
0x3C440E11, // 0065 SHR R17 R7 R17
0x544A00FE, // 0066 LDINT R18 255
@@ -487,8 +493,8 @@ be_local_closure(class_Animate_palette_animate, /* name */
0x545200FE, // 006E LDINT R20 255
0x2C4C2614, // 006F AND R19 R19 R20
0x7C3C0800, // 0070 CALL R15 4
- 0x883C1D0E, // 0071 GETMBR R15 R14 K14
- 0x8C401D0D, // 0072 GETMET R16 R14 K13
+ 0x883C1D10, // 0071 GETMBR R15 R14 K16
+ 0x8C401D0F, // 0072 GETMET R16 R14 K15
0x544A0007, // 0073 LDINT R18 8
0x3C481012, // 0074 SHR R18 R8 R18
0x544E00FE, // 0075 LDINT R19 255
@@ -502,7 +508,7 @@ be_local_closure(class_Animate_palette_animate, /* name */
0x545600FE, // 007D LDINT R21 255
0x2C502815, // 007E AND R20 R20 R21
0x7C400800, // 007F CALL R16 4
- 0x88401D0E, // 0080 GETMBR R16 R14 K14
+ 0x88401D10, // 0080 GETMBR R16 R14 K16
0x5C440800, // 0081 MOVE R17 R4
0x5C480400, // 0082 MOVE R18 R2
0x5C4C1200, // 0083 MOVE R19 R9
@@ -510,45 +516,45 @@ be_local_closure(class_Animate_palette_animate, /* name */
0x5C541E00, // 0085 MOVE R21 R15
0x5C582000, // 0086 MOVE R22 R16
0x7C440A00, // 0087 CALL R17 5
- 0x8C481D0D, // 0088 GETMET R18 R14 K13
+ 0x8C481D0F, // 0088 GETMET R18 R14 K15
0x5C501600, // 0089 MOVE R20 R11
0x5C541800, // 008A MOVE R21 R12
0x5C581A00, // 008B MOVE R22 R13
0x7C480800, // 008C CALL R18 4
- 0x8C481D0F, // 008D GETMET R18 R14 K15
+ 0x8C481D11, // 008D GETMET R18 R14 K17
0x5C502200, // 008E MOVE R20 R17
0x7C480400, // 008F CALL R18 2
- 0x882C1D10, // 0090 GETMBR R11 R14 K16
- 0x88301D11, // 0091 GETMBR R12 R14 K17
- 0x88341D12, // 0092 GETMBR R13 R14 K18
- 0x8848010E, // 0093 GETMBR R18 R0 K14
+ 0x882C1D12, // 0090 GETMBR R11 R14 K18
+ 0x88301D13, // 0091 GETMBR R12 R14 K19
+ 0x88341D14, // 0092 GETMBR R13 R14 K20
+ 0x88480110, // 0093 GETMBR R18 R0 K16
0x544E0063, // 0094 LDINT R19 100
0x204C2413, // 0095 NE R19 R18 R19
0x784E001A, // 0096 JMPF R19 #00B2
- 0xB84E0200, // 0097 GETNGBL R19 K1
- 0x8C4C2705, // 0098 GETMET R19 R19 K5
+ 0xB84E0A00, // 0097 GETNGBL R19 K5
+ 0x8C4C2708, // 0098 GETMET R19 R19 K8
0x5C541600, // 0099 MOVE R21 R11
- 0x58580004, // 009A LDCONST R22 K4
+ 0x58580003, // 009A LDCONST R22 K3
0x545E0063, // 009B LDINT R23 100
- 0x58600004, // 009C LDCONST R24 K4
+ 0x58600003, // 009C LDCONST R24 K3
0x5C642400, // 009D MOVE R25 R18
0x7C4C0C00, // 009E CALL R19 6
0x5C2C2600, // 009F MOVE R11 R19
- 0xB84E0200, // 00A0 GETNGBL R19 K1
- 0x8C4C2705, // 00A1 GETMET R19 R19 K5
+ 0xB84E0A00, // 00A0 GETNGBL R19 K5
+ 0x8C4C2708, // 00A1 GETMET R19 R19 K8
0x5C541800, // 00A2 MOVE R21 R12
- 0x58580004, // 00A3 LDCONST R22 K4
+ 0x58580003, // 00A3 LDCONST R22 K3
0x545E0063, // 00A4 LDINT R23 100
- 0x58600004, // 00A5 LDCONST R24 K4
+ 0x58600003, // 00A5 LDCONST R24 K3
0x5C642400, // 00A6 MOVE R25 R18
0x7C4C0C00, // 00A7 CALL R19 6
0x5C302600, // 00A8 MOVE R12 R19
- 0xB84E0200, // 00A9 GETNGBL R19 K1
- 0x8C4C2705, // 00AA GETMET R19 R19 K5
+ 0xB84E0A00, // 00A9 GETNGBL R19 K5
+ 0x8C4C2708, // 00AA GETMET R19 R19 K8
0x5C541A00, // 00AB MOVE R21 R13
- 0x58580004, // 00AC LDCONST R22 K4
+ 0x58580003, // 00AC LDCONST R22 K3
0x545E0063, // 00AD LDINT R23 100
- 0x58600004, // 00AE LDCONST R24 K4
+ 0x58600003, // 00AE LDCONST R24 K3
0x5C642400, // 00AF MOVE R25 R18
0x7C4C0C00, // 00B0 CALL R19 6
0x5C342600, // 00B1 MOVE R13 R19
@@ -558,8 +564,8 @@ be_local_closure(class_Animate_palette_animate, /* name */
0x38501814, // 00B5 SHL R20 R12 R20
0x304C2614, // 00B6 OR R19 R19 R20
0x304C260D, // 00B7 OR R19 R19 R13
- 0x88500113, // 00B8 GETMBR R20 R0 K19
- 0x88540114, // 00B9 GETMBR R21 R0 K20
+ 0x88500115, // 00B8 GETMBR R20 R0 K21
+ 0x88540116, // 00B9 GETMBR R21 R0 K22
0x78520004, // 00BA JMPF R20 #00C0
0x78560003, // 00BB JMPF R21 #00C0
0x5C582A00, // 00BC MOVE R22 R21
@@ -576,66 +582,55 @@ be_local_closure(class_Animate_palette_animate, /* name */
/********************************************************************
** Solidified function: set_palette
********************************************************************/
-extern const bclass be_class_Animate_palette;
be_local_closure(class_Animate_palette_set_palette, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_palette,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(ptr),
- /* K1 */ be_nested_str_weak(ptr_to_palette),
- /* K2 */ be_nested_str_weak(palette),
- /* K3 */ be_nested_str_weak(slots),
- /* K4 */ be_nested_str_weak(duration_ms),
- /* K5 */ be_nested_str_weak(set_duration),
- /* K6 */ be_nested_str_weak(range_min),
- /* K7 */ be_nested_str_weak(range_max),
- /* K8 */ be_nested_str_weak(set_range),
- }),
+ &be_ktab_class_Animate_palette, /* shared constants */
be_str_weak(set_palette),
&be_const_str_solidified,
( &(const binstruction[37]) { /* code */
0x60080004, // 0000 GETGBL R2 G4
0x5C0C0200, // 0001 MOVE R3 R1
0x7C080200, // 0002 CALL R2 1
- 0x1C080500, // 0003 EQ R2 R2 K0
+ 0x1C080501, // 0003 EQ R2 R2 K1
0x780A0003, // 0004 JMPF R2 #0009
- 0x8C080101, // 0005 GETMET R2 R0 K1
+ 0x8C080117, // 0005 GETMET R2 R0 K23
0x5C100200, // 0006 MOVE R4 R1
0x7C080400, // 0007 CALL R2 2
0x5C040400, // 0008 MOVE R1 R2
- 0x90020401, // 0009 SETMBR R0 K2 R1
+ 0x90021801, // 0009 SETMBR R0 K12 R1
0x6008000C, // 000A GETGBL R2 G12
0x5C0C0200, // 000B MOVE R3 R1
0x7C080200, // 000C CALL R2 1
0x540E0003, // 000D LDINT R3 4
0x0C080403, // 000E DIV R2 R2 R3
- 0x90020602, // 000F SETMBR R0 K3 R2
+ 0x90021202, // 000F SETMBR R0 K9 R2
0x88080104, // 0010 GETMBR R2 R0 K4
0x4C0C0000, // 0011 LDNIL R3
0x20080403, // 0012 NE R2 R2 R3
0x780A0003, // 0013 JMPF R2 #0018
- 0x8C080105, // 0014 GETMET R2 R0 K5
+ 0x8C080118, // 0014 GETMET R2 R0 K24
0x88100104, // 0015 GETMBR R4 R0 K4
0x7C080400, // 0016 CALL R2 2
0x7002000B, // 0017 JMP #0024
- 0x88080106, // 0018 GETMBR R2 R0 K6
+ 0x88080119, // 0018 GETMBR R2 R0 K25
0x4C0C0000, // 0019 LDNIL R3
0x20080403, // 001A NE R2 R2 R3
0x780A0007, // 001B JMPF R2 #0024
- 0x88080107, // 001C GETMBR R2 R0 K7
+ 0x8808011A, // 001C GETMBR R2 R0 K26
0x4C0C0000, // 001D LDNIL R3
0x20080403, // 001E NE R2 R2 R3
0x780A0003, // 001F JMPF R2 #0024
- 0x8C080108, // 0020 GETMET R2 R0 K8
- 0x88100106, // 0021 GETMBR R4 R0 K6
- 0x88140107, // 0022 GETMBR R5 R0 K7
+ 0x8C08011B, // 0020 GETMET R2 R0 K27
+ 0x88100119, // 0021 GETMBR R4 R0 K25
+ 0x8814011A, // 0022 GETMBR R5 R0 K26
0x7C080600, // 0023 CALL R2 3
0x80000000, // 0024 RET 0
})
@@ -647,29 +642,17 @@ be_local_closure(class_Animate_palette_set_palette, /* name */
/********************************************************************
** Solidified function: to_css_gradient
********************************************************************/
-extern const bclass be_class_Animate_palette;
be_local_closure(class_Animate_palette_to_css_gradient, /* name */
be_nested_proto(
17, /* nstack */
1, /* argc */
- 4, /* varg */
+ 12, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_palette,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_const_class(be_class_Animate_palette),
- /* K1 */ be_nested_str_weak(parse_palette),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(background_X3Alinear_X2Dgradient_X28to_X20right),
- /* K4 */ be_nested_str_weak(palette),
- /* K5 */ be_nested_str_weak(get),
- /* K6 */ be_nested_str_weak(_X2C_X23_X2502X_X2502X_X2502X_X20_X25_X2E1f_X25_X25),
- /* K7 */ be_const_real_hex(0x41200000),
- /* K8 */ be_const_int(1),
- /* K9 */ be_nested_str_weak(_X29_X3B),
- }),
+ &be_ktab_class_Animate_palette, /* shared constants */
be_str_weak(to_css_gradient),
&be_const_str_solidified,
( &(const binstruction[46]) { /* code */
@@ -677,20 +660,20 @@ be_local_closure(class_Animate_palette_to_css_gradient, /* name */
0x5C080200, // 0001 MOVE R2 R1
0x5C0C0000, // 0002 MOVE R3 R0
0x7C080200, // 0003 CALL R2 1
- 0x8C0C0501, // 0004 GETMET R3 R2 K1
- 0x58140002, // 0005 LDCONST R5 K2
+ 0x8C0C051C, // 0004 GETMET R3 R2 K28
+ 0x58140003, // 0005 LDCONST R5 K3
0x541A03E7, // 0006 LDINT R6 1000
0x7C0C0600, // 0007 CALL R3 3
- 0x58100003, // 0008 LDCONST R4 K3
- 0x58140002, // 0009 LDCONST R5 K2
+ 0x5810001D, // 0008 LDCONST R4 K29
+ 0x58140003, // 0009 LDCONST R5 K3
0x6018000C, // 000A GETGBL R6 G12
0x5C1C0600, // 000B MOVE R7 R3
0x7C180200, // 000C CALL R6 1
0x14180A06, // 000D LT R6 R5 R6
0x781A001C, // 000E JMPF R6 #002C
0x94180605, // 000F GETIDX R6 R3 R5
- 0x881C0504, // 0010 GETMBR R7 R2 K4
- 0x8C1C0F05, // 0011 GETMET R7 R7 K5
+ 0x881C050C, // 0010 GETMBR R7 R2 K12
+ 0x8C1C0F0D, // 0011 GETMET R7 R7 K13
0x54260003, // 0012 LDINT R9 4
0x08240A09, // 0013 MUL R9 R5 R9
0x542A0003, // 0014 LDINT R10 4
@@ -708,16 +691,16 @@ be_local_closure(class_Animate_palette_to_css_gradient, /* name */
0x542E00FE, // 0020 LDINT R11 255
0x2C28140B, // 0021 AND R10 R10 R11
0x602C0018, // 0022 GETGBL R11 G24
- 0x58300006, // 0023 LDCONST R12 K6
+ 0x5830001E, // 0023 LDCONST R12 K30
0x5C341000, // 0024 MOVE R13 R8
0x5C381200, // 0025 MOVE R14 R9
0x5C3C1400, // 0026 MOVE R15 R10
- 0x0C400D07, // 0027 DIV R16 R6 K7
+ 0x0C400D1F, // 0027 DIV R16 R6 K31
0x7C2C0A00, // 0028 CALL R11 5
0x0010080B, // 0029 ADD R4 R4 R11
- 0x00140B08, // 002A ADD R5 R5 K8
+ 0x00140B02, // 002A ADD R5 R5 K2
0x7001FFDD, // 002B JMP #000A
- 0x00100909, // 002C ADD R4 R4 K9
+ 0x00100920, // 002C ADD R4 R4 K32
0x80040800, // 002D RET 1 R4
})
)
@@ -728,27 +711,24 @@ be_local_closure(class_Animate_palette_to_css_gradient, /* name */
/********************************************************************
** Solidified function: set_bri
********************************************************************/
-extern const bclass be_class_Animate_palette;
be_local_closure(class_Animate_palette_set_bri, /* name */
be_nested_proto(
4, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_palette,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(bri),
- }),
+ &be_ktab_class_Animate_palette, /* shared constants */
be_str_weak(set_bri),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
0x60080009, // 0000 GETGBL R2 G9
0x5C0C0200, // 0001 MOVE R3 R1
0x7C080200, // 0002 CALL R2 1
- 0x90020002, // 0003 SETMBR R0 K0 R2
+ 0x90022002, // 0003 SETMBR R0 K16 R2
0x80000000, // 0004 RET 0
})
)
@@ -759,99 +739,89 @@ be_local_closure(class_Animate_palette_set_bri, /* name */
/********************************************************************
** Solidified function: parse_palette
********************************************************************/
-extern const bclass be_class_Animate_palette;
be_local_closure(class_Animate_palette_parse_palette, /* name */
be_nested_proto(
15, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_palette,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(slots),
- /* K1 */ be_nested_str_weak(resize),
- /* K2 */ be_nested_str_weak(palette),
- /* K3 */ be_nested_str_weak(get),
- /* K4 */ be_const_int(0),
- /* K5 */ be_const_int(1),
- /* K6 */ be_nested_str_weak(tasmota),
- /* K7 */ be_nested_str_weak(scale_int),
- }),
+ &be_ktab_class_Animate_palette, /* shared constants */
be_str_weak(parse_palette),
&be_const_str_solidified,
( &(const binstruction[71]) { /* code */
0x600C0012, // 0000 GETGBL R3 G18
0x7C0C0000, // 0001 CALL R3 0
- 0x88100100, // 0002 GETMBR R4 R0 K0
- 0x8C140701, // 0003 GETMET R5 R3 K1
+ 0x88100109, // 0002 GETMBR R4 R0 K9
+ 0x8C140721, // 0003 GETMET R5 R3 K33
0x5C1C0800, // 0004 MOVE R7 R4
0x7C140400, // 0005 CALL R5 2
- 0x88140102, // 0006 GETMBR R5 R0 K2
- 0x8C140B03, // 0007 GETMET R5 R5 K3
- 0x581C0004, // 0008 LDCONST R7 K4
- 0x58200005, // 0009 LDCONST R8 K5
+ 0x8814010C, // 0006 GETMBR R5 R0 K12
+ 0x8C140B0D, // 0007 GETMET R5 R5 K13
+ 0x581C0003, // 0008 LDCONST R7 K3
+ 0x58200002, // 0009 LDCONST R8 K2
0x7C140600, // 000A CALL R5 3
- 0x20140B04, // 000B NE R5 R5 K4
+ 0x20140B03, // 000B NE R5 R5 K3
0x78160024, // 000C JMPF R5 #0032
- 0x58140004, // 000D LDCONST R5 K4
- 0x58180004, // 000E LDCONST R6 K4
- 0x041C0905, // 000F SUB R7 R4 K5
+ 0x58140003, // 000D LDCONST R5 K3
+ 0x58180003, // 000E LDCONST R6 K3
+ 0x041C0902, // 000F SUB R7 R4 K2
0x141C0C07, // 0010 LT R7 R6 R7
0x781E0008, // 0011 JMPF R7 #001B
- 0x881C0102, // 0012 GETMBR R7 R0 K2
- 0x8C1C0F03, // 0013 GETMET R7 R7 K3
+ 0x881C010C, // 0012 GETMBR R7 R0 K12
+ 0x8C1C0F0D, // 0013 GETMET R7 R7 K13
0x54260003, // 0014 LDINT R9 4
0x08240C09, // 0015 MUL R9 R6 R9
- 0x58280005, // 0016 LDCONST R10 K5
+ 0x58280002, // 0016 LDCONST R10 K2
0x7C1C0600, // 0017 CALL R7 3
0x00140A07, // 0018 ADD R5 R5 R7
- 0x00180D05, // 0019 ADD R6 R6 K5
+ 0x00180D02, // 0019 ADD R6 R6 K2
0x7001FFF3, // 001A JMP #000F
- 0x581C0004, // 001B LDCONST R7 K4
- 0x58180004, // 001C LDCONST R6 K4
+ 0x581C0003, // 001B LDCONST R7 K3
+ 0x58180003, // 001C LDCONST R6 K3
0x14200C04, // 001D LT R8 R6 R4
0x78220011, // 001E JMPF R8 #0031
- 0xB8220C00, // 001F GETNGBL R8 K6
- 0x8C201107, // 0020 GETMET R8 R8 K7
+ 0xB8220A00, // 001F GETNGBL R8 K5
+ 0x8C201122, // 0020 GETMET R8 R8 K34
0x5C280E00, // 0021 MOVE R10 R7
- 0x582C0004, // 0022 LDCONST R11 K4
+ 0x582C0003, // 0022 LDCONST R11 K3
0x5C300A00, // 0023 MOVE R12 R5
0x5C340200, // 0024 MOVE R13 R1
0x5C380400, // 0025 MOVE R14 R2
0x7C200C00, // 0026 CALL R8 6
0x980C0C08, // 0027 SETIDX R3 R6 R8
- 0x88200102, // 0028 GETMBR R8 R0 K2
- 0x8C201103, // 0029 GETMET R8 R8 K3
+ 0x8820010C, // 0028 GETMBR R8 R0 K12
+ 0x8C20110D, // 0029 GETMET R8 R8 K13
0x542A0003, // 002A LDINT R10 4
0x08280C0A, // 002B MUL R10 R6 R10
- 0x582C0005, // 002C LDCONST R11 K5
+ 0x582C0002, // 002C LDCONST R11 K2
0x7C200600, // 002D CALL R8 3
0x001C0E08, // 002E ADD R7 R7 R8
- 0x00180D05, // 002F ADD R6 R6 K5
+ 0x00180D02, // 002F ADD R6 R6 K2
0x7001FFEB, // 0030 JMP #001D
0x70020013, // 0031 JMP #0046
- 0x58140004, // 0032 LDCONST R5 K4
+ 0x58140003, // 0032 LDCONST R5 K3
0x14180A04, // 0033 LT R6 R5 R4
0x781A0010, // 0034 JMPF R6 #0046
- 0x88180102, // 0035 GETMBR R6 R0 K2
- 0x8C180D03, // 0036 GETMET R6 R6 K3
+ 0x8818010C, // 0035 GETMBR R6 R0 K12
+ 0x8C180D0D, // 0036 GETMET R6 R6 K13
0x54220003, // 0037 LDINT R8 4
0x08200A08, // 0038 MUL R8 R5 R8
- 0x58240005, // 0039 LDCONST R9 K5
+ 0x58240002, // 0039 LDCONST R9 K2
0x7C180600, // 003A CALL R6 3
- 0xB81E0C00, // 003B GETNGBL R7 K6
- 0x8C1C0F07, // 003C GETMET R7 R7 K7
+ 0xB81E0A00, // 003B GETNGBL R7 K5
+ 0x8C1C0F22, // 003C GETMET R7 R7 K34
0x5C240C00, // 003D MOVE R9 R6
- 0x58280004, // 003E LDCONST R10 K4
+ 0x58280003, // 003E LDCONST R10 K3
0x542E00FE, // 003F LDINT R11 255
0x5C300200, // 0040 MOVE R12 R1
0x5C340400, // 0041 MOVE R13 R2
0x7C1C0C00, // 0042 CALL R7 6
0x980C0A07, // 0043 SETIDX R3 R5 R7
- 0x00140B05, // 0044 ADD R5 R5 K5
+ 0x00140B02, // 0044 ADD R5 R5 K2
0x7001FFEC, // 0045 JMP #0033
0x80040600, // 0046 RET 1 R3
})
@@ -863,38 +833,30 @@ be_local_closure(class_Animate_palette_parse_palette, /* name */
/********************************************************************
** Solidified function: set_range
********************************************************************/
-extern const bclass be_class_Animate_palette;
be_local_closure(class_Animate_palette_set_range, /* name */
be_nested_proto(
7, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_palette,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(value_error),
- /* K1 */ be_nested_str_weak(min_X20must_X20be_X20lower_X20than_X20mex),
- /* K2 */ be_nested_str_weak(range_min),
- /* K3 */ be_nested_str_weak(range_max),
- /* K4 */ be_nested_str_weak(slots_arr),
- /* K5 */ be_nested_str_weak(parse_palette),
- }),
+ &be_ktab_class_Animate_palette, /* shared constants */
be_str_weak(set_range),
&be_const_str_solidified,
( &(const binstruction[11]) { /* code */
0x280C0202, // 0000 GE R3 R1 R2
0x780E0000, // 0001 JMPF R3 #0003
- 0xB0060101, // 0002 RAISE 1 K0 K1
- 0x90020401, // 0003 SETMBR R0 K2 R1
- 0x90020602, // 0004 SETMBR R0 K3 R2
- 0x8C0C0105, // 0005 GETMET R3 R0 K5
+ 0xB0064724, // 0002 RAISE 1 K35 K36
+ 0x90023201, // 0003 SETMBR R0 K25 R1
+ 0x90023402, // 0004 SETMBR R0 K26 R2
+ 0x8C0C011C, // 0005 GETMET R3 R0 K28
0x5C140200, // 0006 MOVE R5 R1
0x5C180400, // 0007 MOVE R6 R2
0x7C0C0600, // 0008 CALL R3 3
- 0x90020803, // 0009 SETMBR R0 K4 R3
+ 0x90021603, // 0009 SETMBR R0 K11 R3
0x80000000, // 000A RET 0
})
)
@@ -905,75 +867,60 @@ be_local_closure(class_Animate_palette_set_range, /* name */
/********************************************************************
** Solidified function: set_value
********************************************************************/
-extern const bclass be_class_Animate_palette;
be_local_closure(class_Animate_palette_set_value, /* name */
be_nested_proto(
18, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_palette,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(range_min),
- /* K1 */ be_nested_str_weak(range_max),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(scale_int),
- /* K4 */ be_nested_str_weak(slots),
- /* K5 */ be_const_int(2),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(slots_arr),
- /* K8 */ be_const_int(1),
- /* K9 */ be_nested_str_weak(palette),
- /* K10 */ be_nested_str_weak(get),
- /* K11 */ be_nested_str_weak(obj),
- /* K12 */ be_nested_str_weak(mth),
- }),
+ &be_ktab_class_Animate_palette, /* shared constants */
be_str_weak(set_value),
&be_const_str_solidified,
( &(const binstruction[96]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x88080119, // 0000 GETMBR R2 R0 K25
0x4C0C0000, // 0001 LDNIL R3
0x1C080403, // 0002 EQ R2 R2 R3
0x740A0003, // 0003 JMPT R2 #0008
- 0x88080101, // 0004 GETMBR R2 R0 K1
+ 0x8808011A, // 0004 GETMBR R2 R0 K26
0x4C0C0000, // 0005 LDNIL R3
0x1C080403, // 0006 EQ R2 R2 R3
0x780A0001, // 0007 JMPF R2 #000A
0x4C080000, // 0008 LDNIL R2
0x80040400, // 0009 RET 1 R2
- 0xB80A0400, // 000A GETNGBL R2 K2
- 0x88080503, // 000B GETMBR R2 R2 K3
- 0x880C0104, // 000C GETMBR R3 R0 K4
- 0x04100705, // 000D SUB R4 R3 K5
- 0x24140906, // 000E GT R5 R4 K6
+ 0xB80A0A00, // 000A GETNGBL R2 K5
+ 0x88080522, // 000B GETMBR R2 R2 K34
+ 0x880C0109, // 000C GETMBR R3 R0 K9
+ 0x0410070A, // 000D SUB R4 R3 K10
+ 0x24140903, // 000E GT R5 R4 K3
0x78160006, // 000F JMPF R5 #0017
- 0x88140107, // 0010 GETMBR R5 R0 K7
+ 0x8814010B, // 0010 GETMBR R5 R0 K11
0x94140A04, // 0011 GETIDX R5 R5 R4
0x28140205, // 0012 GE R5 R1 R5
0x78160000, // 0013 JMPF R5 #0015
0x70020001, // 0014 JMP #0017
- 0x04100908, // 0015 SUB R4 R4 K8
+ 0x04100902, // 0015 SUB R4 R4 K2
0x7001FFF6, // 0016 JMP #000E
- 0x88140109, // 0017 GETMBR R5 R0 K9
- 0x8C140B0A, // 0018 GETMET R5 R5 K10
+ 0x8814010C, // 0017 GETMBR R5 R0 K12
+ 0x8C140B0D, // 0018 GETMET R5 R5 K13
0x541E0003, // 0019 LDINT R7 4
0x081C0807, // 001A MUL R7 R4 R7
0x54220003, // 001B LDINT R8 4
0x7C140600, // 001C CALL R5 3
- 0x88180109, // 001D GETMBR R6 R0 K9
- 0x8C180D0A, // 001E GETMET R6 R6 K10
- 0x00200908, // 001F ADD R8 R4 K8
+ 0x8818010C, // 001D GETMBR R6 R0 K12
+ 0x8C180D0D, // 001E GETMET R6 R6 K13
+ 0x00200902, // 001F ADD R8 R4 K2
0x54260003, // 0020 LDINT R9 4
0x08201009, // 0021 MUL R8 R8 R9
0x54260003, // 0022 LDINT R9 4
0x7C180600, // 0023 CALL R6 3
- 0x881C0107, // 0024 GETMBR R7 R0 K7
+ 0x881C010B, // 0024 GETMBR R7 R0 K11
0x941C0E04, // 0025 GETIDX R7 R7 R4
- 0x00200908, // 0026 ADD R8 R4 K8
- 0x88240107, // 0027 GETMBR R9 R0 K7
+ 0x00200902, // 0026 ADD R8 R4 K2
+ 0x8824010B, // 0027 GETMBR R9 R0 K11
0x94201208, // 0028 GETIDX R8 R9 R8
0x5C280400, // 0029 MOVE R10 R2
0x5C2C0200, // 002A MOVE R11 R1
@@ -1021,8 +968,8 @@ be_local_closure(class_Animate_palette_set_value, /* name */
0x3834140D, // 0054 SHL R13 R10 R13
0x3030180D, // 0055 OR R12 R12 R13
0x3030180B, // 0056 OR R12 R12 R11
- 0x8834010B, // 0057 GETMBR R13 R0 K11
- 0x8838010C, // 0058 GETMBR R14 R0 K12
+ 0x88340115, // 0057 GETMBR R13 R0 K21
+ 0x88380116, // 0058 GETMBR R14 R0 K22
0x78360004, // 0059 JMPF R13 #005F
0x783A0003, // 005A JMPF R14 #005F
0x5C3C1C00, // 005B MOVE R15 R14
@@ -1039,26 +986,17 @@ be_local_closure(class_Animate_palette_set_value, /* name */
/********************************************************************
** Solidified function: set_duration
********************************************************************/
-extern const bclass be_class_Animate_palette;
be_local_closure(class_Animate_palette_set_duration, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_palette,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(value_error),
- /* K2 */ be_nested_str_weak(duration_ms_X20must_X20be_X20positive),
- /* K3 */ be_nested_str_weak(duration_ms),
- /* K4 */ be_nested_str_weak(slots_arr),
- /* K5 */ be_nested_str_weak(parse_palette),
- /* K6 */ be_const_int(1),
- }),
+ &be_ktab_class_Animate_palette, /* shared constants */
be_str_weak(set_duration),
&be_const_str_solidified,
( &(const binstruction[14]) { /* code */
@@ -1066,15 +1004,15 @@ be_local_closure(class_Animate_palette_set_duration, /* name */
0x1C080202, // 0001 EQ R2 R1 R2
0x780A0000, // 0002 JMPF R2 #0004
0x80000400, // 0003 RET 0
- 0x18080300, // 0004 LE R2 R1 K0
+ 0x18080303, // 0004 LE R2 R1 K3
0x780A0000, // 0005 JMPF R2 #0007
- 0xB0060302, // 0006 RAISE 1 K1 K2
- 0x90020601, // 0007 SETMBR R0 K3 R1
- 0x8C080105, // 0008 GETMET R2 R0 K5
- 0x58100000, // 0009 LDCONST R4 K0
- 0x04140306, // 000A SUB R5 R1 K6
+ 0xB0064725, // 0006 RAISE 1 K35 K37
+ 0x90020801, // 0007 SETMBR R0 K4 R1
+ 0x8C08011C, // 0008 GETMET R2 R0 K28
+ 0x58100003, // 0009 LDCONST R4 K3
+ 0x04140302, // 000A SUB R5 R1 K2
0x7C080600, // 000B CALL R2 3
- 0x90020802, // 000C SETMBR R0 K4 R2
+ 0x90021602, // 000C SETMBR R0 K11 R2
0x80000000, // 000D RET 0
})
)
@@ -1085,46 +1023,36 @@ be_local_closure(class_Animate_palette_set_duration, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Animate_palette;
be_local_closure(class_Animate_palette_init, /* name */
be_nested_proto(
6, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_palette,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(duration_ms),
- /* K2 */ be_nested_str_weak(running),
- /* K3 */ be_nested_str_weak(bri),
- /* K4 */ be_nested_str_weak(color),
- /* K5 */ be_nested_str_weak(light_state),
- /* K6 */ be_nested_str_weak(RGB),
- /* K7 */ be_nested_str_weak(set_palette),
- }),
+ &be_ktab_class_Animate_palette, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[19]) { /* code */
0x600C0003, // 0000 GETGBL R3 G3
0x5C100000, // 0001 MOVE R4 R0
0x7C0C0200, // 0002 CALL R3 1
- 0x8C0C0700, // 0003 GETMET R3 R3 K0
+ 0x8C0C0726, // 0003 GETMET R3 R3 K38
0x7C0C0200, // 0004 CALL R3 1
- 0x90020202, // 0005 SETMBR R0 K1 R2
+ 0x90020802, // 0005 SETMBR R0 K4 R2
0x500C0000, // 0006 LDBOOL R3 0 0
- 0x90020403, // 0007 SETMBR R0 K2 R3
+ 0x90024E03, // 0007 SETMBR R0 K39 R3
0x540E0063, // 0008 LDINT R3 100
- 0x90020603, // 0009 SETMBR R0 K3 R3
- 0xB80E0A00, // 000A GETNGBL R3 K5
- 0xB8120A00, // 000B GETNGBL R4 K5
- 0x88100906, // 000C GETMBR R4 R4 K6
+ 0x90022003, // 0009 SETMBR R0 K16 R3
+ 0xB80E5000, // 000A GETNGBL R3 K40
+ 0xB8125000, // 000B GETNGBL R4 K40
+ 0x88100929, // 000C GETMBR R4 R4 K41
0x7C0C0200, // 000D CALL R3 1
- 0x90020803, // 000E SETMBR R0 K4 R3
- 0x8C0C0107, // 000F GETMET R3 R0 K7
+ 0x90021C03, // 000E SETMBR R0 K14 R3
+ 0x8C0C012A, // 000F GETMET R3 R0 K42
0x5C140200, // 0010 MOVE R5 R1
0x7C0C0400, // 0011 CALL R3 2
0x80000000, // 0012 RET 0
@@ -1163,27 +1091,48 @@ be_local_class(Animate_palette,
})),
be_str_weak(Animate_palette)
);
+// compact class 'Animate_oscillator' ktab size: 21, total: 38 (saved 136 bytes)
+static const bvalue be_ktab_class_Animate_oscillator[21] = {
+ /* K0 */ be_const_int(0),
+ /* K1 */ be_nested_str_weak(duty_cycle),
+ /* K2 */ be_nested_str_weak(a),
+ /* K3 */ be_nested_str_weak(b),
+ /* K4 */ be_const_int(1),
+ /* K5 */ be_nested_str_weak(form),
+ /* K6 */ be_nested_str_weak(phase),
+ /* K7 */ be_nested_str_weak(init),
+ /* K8 */ be_nested_str_weak(duration_ms),
+ /* K9 */ be_nested_str_weak(value),
+ /* K10 */ be_nested_str_weak(tasmota),
+ /* K11 */ be_nested_str_weak(millis),
+ /* K12 */ be_nested_str_weak(origin),
+ /* K13 */ be_nested_str_weak(scale_uint),
+ /* K14 */ be_nested_str_weak(beat),
+ /* K15 */ be_nested_str_weak(scale_int),
+ /* K16 */ be_const_int(2),
+ /* K17 */ be_const_int(3),
+ /* K18 */ be_nested_str_weak(sine_int),
+ /* K19 */ be_nested_str_weak(obj),
+ /* K20 */ be_nested_str_weak(mth),
+};
+
extern const bclass be_class_Animate_oscillator;
/********************************************************************
** Solidified function: set_duty_cycle
********************************************************************/
-extern const bclass be_class_Animate_oscillator;
be_local_closure(class_Animate_oscillator_set_duty_cycle, /* name */
be_nested_proto(
3, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_oscillator,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(duty_cycle),
- }),
+ &be_ktab_class_Animate_oscillator, /* shared constants */
be_str_weak(set_duty_cycle),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
@@ -1205,24 +1154,21 @@ be_local_closure(class_Animate_oscillator_set_duty_cycle, /* name */
/********************************************************************
** Solidified function: set_a
********************************************************************/
-extern const bclass be_class_Animate_oscillator;
be_local_closure(class_Animate_oscillator_set_a, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_oscillator,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(a),
- }),
+ &be_ktab_class_Animate_oscillator, /* shared constants */
be_str_weak(set_a),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90020401, // 0000 SETMBR R0 K2 R1
0x80000000, // 0001 RET 0
})
)
@@ -1233,24 +1179,21 @@ be_local_closure(class_Animate_oscillator_set_a, /* name */
/********************************************************************
** Solidified function: set_b
********************************************************************/
-extern const bclass be_class_Animate_oscillator;
be_local_closure(class_Animate_oscillator_set_b, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_oscillator,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(b),
- }),
+ &be_ktab_class_Animate_oscillator, /* shared constants */
be_str_weak(set_b),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90020601, // 0000 SETMBR R0 K3 R1
0x80000000, // 0001 RET 0
})
)
@@ -1261,29 +1204,25 @@ be_local_closure(class_Animate_oscillator_set_b, /* name */
/********************************************************************
** Solidified function: set_form
********************************************************************/
-extern const bclass be_class_Animate_oscillator;
be_local_closure(class_Animate_oscillator_set_form, /* name */
be_nested_proto(
3, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_oscillator,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_const_int(1),
- /* K1 */ be_nested_str_weak(form),
- }),
+ &be_ktab_class_Animate_oscillator, /* shared constants */
be_str_weak(set_form),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
0x4C080000, // 0000 LDNIL R2
0x1C080202, // 0001 EQ R2 R1 R2
0x780A0000, // 0002 JMPF R2 #0004
- 0x58040000, // 0003 LDCONST R1 K0
- 0x90020201, // 0004 SETMBR R0 K1 R1
+ 0x58040004, // 0003 LDCONST R1 K4
+ 0x90020A01, // 0004 SETMBR R0 K5 R1
0x80000000, // 0005 RET 0
})
)
@@ -1294,21 +1233,17 @@ be_local_closure(class_Animate_oscillator_set_form, /* name */
/********************************************************************
** Solidified function: set_phase
********************************************************************/
-extern const bclass be_class_Animate_oscillator;
be_local_closure(class_Animate_oscillator_set_phase, /* name */
be_nested_proto(
3, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_oscillator,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(phase),
- }),
+ &be_ktab_class_Animate_oscillator, /* shared constants */
be_str_weak(set_phase),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
@@ -1319,7 +1254,7 @@ be_local_closure(class_Animate_oscillator_set_phase, /* name */
0x24080202, // 0004 GT R2 R1 R2
0x780A0000, // 0005 JMPF R2 #0007
0x54060063, // 0006 LDINT R1 100
- 0x90020201, // 0007 SETMBR R0 K1 R1
+ 0x90020C01, // 0007 SETMBR R0 K6 R1
0x80000000, // 0008 RET 0
})
)
@@ -1330,49 +1265,37 @@ be_local_closure(class_Animate_oscillator_set_phase, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Animate_oscillator;
be_local_closure(class_Animate_oscillator_init, /* name */
be_nested_proto(
7, /* nstack */
5, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_oscillator,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(phase),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(duty_cycle),
- /* K4 */ be_nested_str_weak(a),
- /* K5 */ be_nested_str_weak(b),
- /* K6 */ be_nested_str_weak(duration_ms),
- /* K7 */ be_nested_str_weak(value),
- /* K8 */ be_const_int(1),
- /* K9 */ be_nested_str_weak(form),
- }),
+ &be_ktab_class_Animate_oscillator, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
0x60140003, // 0000 GETGBL R5 G3
0x5C180000, // 0001 MOVE R6 R0
0x7C140200, // 0002 CALL R5 1
- 0x8C140B00, // 0003 GETMET R5 R5 K0
+ 0x8C140B07, // 0003 GETMET R5 R5 K7
0x7C140200, // 0004 CALL R5 1
- 0x90020302, // 0005 SETMBR R0 K1 K2
+ 0x90020D00, // 0005 SETMBR R0 K6 K0
0x54160031, // 0006 LDINT R5 50
- 0x90020605, // 0007 SETMBR R0 K3 R5
- 0x90020801, // 0008 SETMBR R0 K4 R1
- 0x90020A02, // 0009 SETMBR R0 K5 R2
- 0x90020C03, // 000A SETMBR R0 K6 R3
- 0x90020E01, // 000B SETMBR R0 K7 R1
+ 0x90020205, // 0007 SETMBR R0 K1 R5
+ 0x90020401, // 0008 SETMBR R0 K2 R1
+ 0x90020602, // 0009 SETMBR R0 K3 R2
+ 0x90021003, // 000A SETMBR R0 K8 R3
+ 0x90021201, // 000B SETMBR R0 K9 R1
0x4C140000, // 000C LDNIL R5
0x1C140805, // 000D EQ R5 R4 R5
0x78160000, // 000E JMPF R5 #0010
- 0x58100008, // 000F LDCONST R4 K8
- 0x90021204, // 0010 SETMBR R0 K9 R4
+ 0x58100004, // 000F LDCONST R4 K4
+ 0x90020A04, // 0010 SETMBR R0 K5 R4
0x80000000, // 0011 RET 0
})
)
@@ -1383,43 +1306,21 @@ be_local_closure(class_Animate_oscillator_init, /* name */
/********************************************************************
** Solidified function: animate
********************************************************************/
-extern const bclass be_class_Animate_oscillator;
be_local_closure(class_Animate_oscillator_animate, /* name */
be_nested_proto(
18, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Animate_oscillator,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[20]) { /* constants */
- /* K0 */ be_nested_str_weak(duration_ms),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(millis),
- /* K3 */ be_nested_str_weak(origin),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(scale_uint),
- /* K6 */ be_nested_str_weak(duty_cycle),
- /* K7 */ be_nested_str_weak(beat),
- /* K8 */ be_nested_str_weak(a),
- /* K9 */ be_nested_str_weak(b),
- /* K10 */ be_nested_str_weak(value),
- /* K11 */ be_nested_str_weak(phase),
- /* K12 */ be_nested_str_weak(form),
- /* K13 */ be_const_int(1),
- /* K14 */ be_nested_str_weak(scale_int),
- /* K15 */ be_const_int(2),
- /* K16 */ be_const_int(3),
- /* K17 */ be_nested_str_weak(sine_int),
- /* K18 */ be_nested_str_weak(obj),
- /* K19 */ be_nested_str_weak(mth),
- }),
+ &be_ktab_class_Animate_oscillator, /* shared constants */
be_str_weak(animate),
&be_const_str_solidified,
( &(const binstruction[141]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x88080108, // 0000 GETMBR R2 R0 K8
0x4C0C0000, // 0001 LDNIL R3
0x1C080403, // 0002 EQ R2 R2 R3
0x780A0000, // 0003 JMPF R2 #0005
@@ -1427,24 +1328,24 @@ be_local_closure(class_Animate_oscillator_animate, /* name */
0x4C080000, // 0005 LDNIL R2
0x1C080202, // 0006 EQ R2 R1 R2
0x780A0003, // 0007 JMPF R2 #000C
- 0xB80A0200, // 0008 GETNGBL R2 K1
- 0x8C080502, // 0009 GETMET R2 R2 K2
+ 0xB80A1400, // 0008 GETNGBL R2 K10
+ 0x8C08050B, // 0009 GETMET R2 R2 K11
0x7C080200, // 000A CALL R2 1
0x5C040400, // 000B MOVE R1 R2
- 0x88080103, // 000C GETMBR R2 R0 K3
+ 0x8808010C, // 000C GETMBR R2 R0 K12
0x04080202, // 000D SUB R2 R1 R2
- 0x140C0504, // 000E LT R3 R2 K4
+ 0x140C0500, // 000E LT R3 R2 K0
0x780E0001, // 000F JMPF R3 #0012
- 0x58080004, // 0010 LDCONST R2 K4
- 0x88040103, // 0011 GETMBR R1 R0 K3
- 0x880C0100, // 0012 GETMBR R3 R0 K0
+ 0x58080000, // 0010 LDCONST R2 K0
+ 0x8804010C, // 0011 GETMBR R1 R0 K12
+ 0x880C0108, // 0012 GETMBR R3 R0 K8
0x4C100000, // 0013 LDNIL R4
- 0xB8160200, // 0014 GETNGBL R5 K1
- 0x8C140B05, // 0015 GETMET R5 R5 K5
- 0x881C0106, // 0016 GETMBR R7 R0 K6
- 0x58200004, // 0017 LDCONST R8 K4
+ 0xB8161400, // 0014 GETNGBL R5 K10
+ 0x8C140B0D, // 0015 GETMET R5 R5 K13
+ 0x881C0101, // 0016 GETMBR R7 R0 K1
+ 0x58200000, // 0017 LDCONST R8 K0
0x54260063, // 0018 LDINT R9 100
- 0x58280004, // 0019 LDCONST R10 K4
+ 0x58280000, // 0019 LDCONST R10 K0
0x5C2C0600, // 001A MOVE R11 R3
0x7C140C00, // 001B CALL R5 6
0x5C100A00, // 001C MOVE R4 R5
@@ -1452,71 +1353,71 @@ be_local_closure(class_Animate_oscillator_animate, /* name */
0x78160007, // 001E JMPF R5 #0027
0x0C180403, // 001F DIV R6 R2 R3
0x08180C03, // 0020 MUL R6 R6 R3
- 0x88140103, // 0021 GETMBR R5 R0 K3
+ 0x8814010C, // 0021 GETMBR R5 R0 K12
0x00140A06, // 0022 ADD R5 R5 R6
- 0x90020605, // 0023 SETMBR R0 K3 R5
+ 0x90021805, // 0023 SETMBR R0 K12 R5
0x10080403, // 0024 MOD R2 R2 R3
- 0x8C140107, // 0025 GETMET R5 R0 K7
+ 0x8C14010E, // 0025 GETMET R5 R0 K14
0x7C140200, // 0026 CALL R5 1
- 0x88140108, // 0027 GETMBR R5 R0 K8
- 0x88180109, // 0028 GETMBR R6 R0 K9
- 0x881C010A, // 0029 GETMBR R7 R0 K10
+ 0x88140102, // 0027 GETMBR R5 R0 K2
+ 0x88180103, // 0028 GETMBR R6 R0 K3
+ 0x881C0109, // 0029 GETMBR R7 R0 K9
0x5C200400, // 002A MOVE R8 R2
- 0x8824010B, // 002B GETMBR R9 R0 K11
- 0x24241304, // 002C GT R9 R9 K4
+ 0x88240106, // 002B GETMBR R9 R0 K6
+ 0x24241300, // 002C GT R9 R9 K0
0x7826000B, // 002D JMPF R9 #003A
- 0xB8260200, // 002E GETNGBL R9 K1
- 0x8C241305, // 002F GETMET R9 R9 K5
- 0x882C010B, // 0030 GETMBR R11 R0 K11
- 0x58300004, // 0031 LDCONST R12 K4
+ 0xB8261400, // 002E GETNGBL R9 K10
+ 0x8C24130D, // 002F GETMET R9 R9 K13
+ 0x882C0106, // 0030 GETMBR R11 R0 K6
+ 0x58300000, // 0031 LDCONST R12 K0
0x54360063, // 0032 LDINT R13 100
- 0x58380004, // 0033 LDCONST R14 K4
+ 0x58380000, // 0033 LDCONST R14 K0
0x5C3C0600, // 0034 MOVE R15 R3
0x7C240C00, // 0035 CALL R9 6
0x00201009, // 0036 ADD R8 R8 R9
0x24241003, // 0037 GT R9 R8 R3
0x78260000, // 0038 JMPF R9 #003A
0x04201003, // 0039 SUB R8 R8 R3
- 0x8824010C, // 003A GETMBR R9 R0 K12
- 0x1C24130D, // 003B EQ R9 R9 K13
+ 0x88240105, // 003A GETMBR R9 R0 K5
+ 0x1C241304, // 003B EQ R9 R9 K4
0x78260009, // 003C JMPF R9 #0047
- 0xB8260200, // 003D GETNGBL R9 K1
- 0x8C24130E, // 003E GETMET R9 R9 K14
+ 0xB8261400, // 003D GETNGBL R9 K10
+ 0x8C24130F, // 003E GETMET R9 R9 K15
0x5C2C1000, // 003F MOVE R11 R8
- 0x58300004, // 0040 LDCONST R12 K4
- 0x0434070D, // 0041 SUB R13 R3 K13
+ 0x58300000, // 0040 LDCONST R12 K0
+ 0x04340704, // 0041 SUB R13 R3 K4
0x5C380A00, // 0042 MOVE R14 R5
0x5C3C0C00, // 0043 MOVE R15 R6
0x7C240C00, // 0044 CALL R9 6
0x5C1C1200, // 0045 MOVE R7 R9
0x7002003B, // 0046 JMP #0083
- 0x8824010C, // 0047 GETMBR R9 R0 K12
- 0x1C24130F, // 0048 EQ R9 R9 K15
+ 0x88240105, // 0047 GETMBR R9 R0 K5
+ 0x1C241310, // 0048 EQ R9 R9 K16
0x78260015, // 0049 JMPF R9 #0060
0x14241004, // 004A LT R9 R8 R4
0x78260009, // 004B JMPF R9 #0056
- 0xB8260200, // 004C GETNGBL R9 K1
- 0x8C24130E, // 004D GETMET R9 R9 K14
+ 0xB8261400, // 004C GETNGBL R9 K10
+ 0x8C24130F, // 004D GETMET R9 R9 K15
0x5C2C1000, // 004E MOVE R11 R8
- 0x58300004, // 004F LDCONST R12 K4
- 0x0434090D, // 0050 SUB R13 R4 K13
+ 0x58300000, // 004F LDCONST R12 K0
+ 0x04340904, // 0050 SUB R13 R4 K4
0x5C380A00, // 0051 MOVE R14 R5
0x5C3C0C00, // 0052 MOVE R15 R6
0x7C240C00, // 0053 CALL R9 6
0x5C1C1200, // 0054 MOVE R7 R9
0x70020008, // 0055 JMP #005F
- 0xB8260200, // 0056 GETNGBL R9 K1
- 0x8C24130E, // 0057 GETMET R9 R9 K14
+ 0xB8261400, // 0056 GETNGBL R9 K10
+ 0x8C24130F, // 0057 GETMET R9 R9 K15
0x5C2C1000, // 0058 MOVE R11 R8
0x5C300800, // 0059 MOVE R12 R4
- 0x0434070D, // 005A SUB R13 R3 K13
+ 0x04340704, // 005A SUB R13 R3 K4
0x5C380C00, // 005B MOVE R14 R6
0x5C3C0A00, // 005C MOVE R15 R5
0x7C240C00, // 005D CALL R9 6
0x5C1C1200, // 005E MOVE R7 R9
0x70020022, // 005F JMP #0083
- 0x8824010C, // 0060 GETMBR R9 R0 K12
- 0x1C241310, // 0061 EQ R9 R9 K16
+ 0x88240105, // 0060 GETMBR R9 R0 K5
+ 0x1C241311, // 0061 EQ R9 R9 K17
0x78260005, // 0062 JMPF R9 #0069
0x14241004, // 0063 LT R9 R8 R4
0x78260001, // 0064 JMPF R9 #0067
@@ -1524,25 +1425,25 @@ be_local_closure(class_Animate_oscillator_animate, /* name */
0x70020000, // 0066 JMP #0068
0x5C1C0C00, // 0067 MOVE R7 R6
0x70020019, // 0068 JMP #0083
- 0x8824010C, // 0069 GETMBR R9 R0 K12
+ 0x88240105, // 0069 GETMBR R9 R0 K5
0x542A0003, // 006A LDINT R10 4
0x1C24120A, // 006B EQ R9 R9 R10
0x78260015, // 006C JMPF R9 #0083
- 0xB8260200, // 006D GETNGBL R9 K1
- 0x8C24130E, // 006E GETMET R9 R9 K14
+ 0xB8261400, // 006D GETNGBL R9 K10
+ 0x8C24130F, // 006E GETMET R9 R9 K15
0x5C2C1000, // 006F MOVE R11 R8
- 0x58300004, // 0070 LDCONST R12 K4
- 0x0434070D, // 0071 SUB R13 R3 K13
- 0x58380004, // 0072 LDCONST R14 K4
+ 0x58300000, // 0070 LDCONST R12 K0
+ 0x04340704, // 0071 SUB R13 R3 K4
+ 0x58380000, // 0072 LDCONST R14 K0
0x543E7FFE, // 0073 LDINT R15 32767
0x7C240C00, // 0074 CALL R9 6
- 0xB82A0200, // 0075 GETNGBL R10 K1
- 0x8C281511, // 0076 GETMET R10 R10 K17
+ 0xB82A1400, // 0075 GETNGBL R10 K10
+ 0x8C281512, // 0076 GETMET R10 R10 K18
0x54321FFF, // 0077 LDINT R12 8192
0x0430120C, // 0078 SUB R12 R9 R12
0x7C280400, // 0079 CALL R10 2
- 0xB82E0200, // 007A GETNGBL R11 K1
- 0x8C2C170E, // 007B GETMET R11 R11 K14
+ 0xB82E1400, // 007A GETNGBL R11 K10
+ 0x8C2C170F, // 007B GETMET R11 R11 K15
0x5C341400, // 007C MOVE R13 R10
0x5439EFFF, // 007D LDINT R14 -4096
0x543E0FFF, // 007E LDINT R15 4096
@@ -1550,9 +1451,9 @@ be_local_closure(class_Animate_oscillator_animate, /* name */
0x5C440C00, // 0080 MOVE R17 R6
0x7C2C0C00, // 0081 CALL R11 6
0x5C1C1600, // 0082 MOVE R7 R11
- 0x90021407, // 0083 SETMBR R0 K10 R7
- 0x88240112, // 0084 GETMBR R9 R0 K18
- 0x88280113, // 0085 GETMBR R10 R0 K19
+ 0x90021207, // 0083 SETMBR R0 K9 R7
+ 0x88240113, // 0084 GETMBR R9 R0 K19
+ 0x88280114, // 0085 GETMBR R10 R0 K20
0x78260004, // 0086 JMPF R9 #008C
0x782A0003, // 0087 JMPF R10 #008C
0x5C2C1400, // 0088 MOVE R11 R10
diff --git a/lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h b/lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h
index 92452cd4c..4e2246ae4 100644
--- a/lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h
+++ b/lib/libesp32/berry_animate/src/solidify/solidified_leds_frame_be_methods.h
@@ -3,26 +3,33 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Leds_frame_be' ktab size: 6, total: 7 (saved 8 bytes)
+static const bvalue be_ktab_class_Leds_frame_be[6] = {
+ /* K0 */ be_nested_str(set),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str(setitem),
+ /* K3 */ be_nested_str(get),
+ /* K4 */ be_nested_str(pixel_size),
+ /* K5 */ be_nested_str(init),
+};
+
extern const bclass be_class_Leds_frame_be;
/********************************************************************
** Solidified function: setitem
********************************************************************/
-extern const bclass be_class_Leds_frame_be;
be_local_closure(class_Leds_frame_be_setitem, /* name */
be_nested_proto(
8, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_frame_be,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(set),
- }),
+ &be_ktab_class_Leds_frame_be, /* shared constants */
&be_const_str_setitem,
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
@@ -42,28 +49,24 @@ be_local_closure(class_Leds_frame_be_setitem, /* name */
/********************************************************************
** Solidified function: set_pixel
********************************************************************/
-extern const bclass be_class_Leds_frame_be;
be_local_closure(class_Leds_frame_be_set_pixel, /* name */
be_nested_proto(
11, /* nstack */
6, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_frame_be,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str(setitem),
- }),
+ &be_ktab_class_Leds_frame_be, /* shared constants */
&be_const_str_set_pixel,
&be_const_str_solidified,
( &(const binstruction[26]) { /* code */
0x4C180000, // 0000 LDNIL R6
0x1C180A06, // 0001 EQ R6 R5 R6
0x781A0000, // 0002 JMPF R6 #0004
- 0x58140000, // 0003 LDCONST R5 K0
+ 0x58140001, // 0003 LDCONST R5 K1
0x541A00FE, // 0004 LDINT R6 255
0x2C180A06, // 0005 AND R6 R5 R6
0x541E0017, // 0006 LDINT R7 24
@@ -81,7 +84,7 @@ be_local_closure(class_Leds_frame_be_set_pixel, /* name */
0x541E00FE, // 0012 LDINT R7 255
0x2C1C0807, // 0013 AND R7 R4 R7
0x30180C07, // 0014 OR R6 R6 R7
- 0x8C1C0101, // 0015 GETMET R7 R0 K1
+ 0x8C1C0102, // 0015 GETMET R7 R0 K2
0x5C240200, // 0016 MOVE R9 R1
0x5C280C00, // 0017 MOVE R10 R6
0x7C1C0600, // 0018 CALL R7 3
@@ -95,24 +98,21 @@ be_local_closure(class_Leds_frame_be_set_pixel, /* name */
/********************************************************************
** Solidified function: item
********************************************************************/
-extern const bclass be_class_Leds_frame_be;
be_local_closure(class_Leds_frame_be_item, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_frame_be,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(get),
- }),
+ &be_ktab_class_Leds_frame_be, /* shared constants */
&be_const_str_item,
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C080103, // 0000 GETMET R2 R0 K3
0x54120003, // 0001 LDINT R4 4
0x08100204, // 0002 MUL R4 R1 R4
0x54160003, // 0003 LDINT R5 4
@@ -127,33 +127,28 @@ be_local_closure(class_Leds_frame_be_item, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Leds_frame_be;
be_local_closure(class_Leds_frame_be_init, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_frame_be,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str(pixel_size),
- /* K2 */ be_nested_str(init),
- }),
+ &be_ktab_class_Leds_frame_be, /* shared constants */
&be_const_str_init,
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
- 0x14080300, // 0000 LT R2 R1 K0
+ 0x14080301, // 0000 LT R2 R1 K1
0x780A0000, // 0001 JMPF R2 #0003
0x44040200, // 0002 NEG R1 R1
- 0x90020201, // 0003 SETMBR R0 K1 R1
+ 0x90020801, // 0003 SETMBR R0 K4 R1
0x60080003, // 0004 GETGBL R2 G3
0x5C0C0000, // 0005 MOVE R3 R0
0x7C080200, // 0006 CALL R2 1
- 0x8C080502, // 0007 GETMET R2 R2 K2
+ 0x8C080505, // 0007 GETMET R2 R2 K5
0x5411FFFB, // 0008 LDINT R4 -4
0x08100204, // 0009 MUL R4 R1 R4
0x7C080400, // 000A CALL R2 2
diff --git a/lib/libesp32/berry_int64/src/be_int64_class.c b/lib/libesp32/berry_int64/src/be_int64_class.c
index 48dfc923a..16f8dbbba 100644
--- a/lib/libesp32/berry_int64/src/be_int64_class.c
+++ b/lib/libesp32/berry_int64/src/be_int64_class.c
@@ -212,6 +212,16 @@ int64_t* int64_frombytes(bvm *vm, uint8_t* ptr, size_t len, int32_t idx) {
}
BE_FUNC_CTYPE_DECLARE(int64_frombytes, "int64", "@(bytes)~[i]")
+int32_t int64_low32(int64_t *i64) {
+ return (int32_t) *i64;
+}
+BE_FUNC_CTYPE_DECLARE(int64_low32, "i", "(int64)")
+
+int32_t int64_high32(int64_t *i64) {
+ return (int32_t) (*i64 >> 32);
+}
+BE_FUNC_CTYPE_DECLARE(int64_high32, "i", "(int64)")
+
/*
def toint64(i)
@@ -305,5 +315,8 @@ class be_class_int64 (scope: global, name: int64) {
tobytes, ctype_func(int64_tobytes)
frombytes, static_ctype_func(int64_frombytes)
+
+ low32, ctype_func(int64_low32) // return low 32 bits as int
+ high32, ctype_func(int64_high32) // return high 32 bits as int
}
@const_object_info_end */
diff --git a/lib/libesp32/berry_mapping/src/be_class_wrapper.c b/lib/libesp32/berry_mapping/src/be_class_wrapper.c
index 1c567306b..0e06ec1de 100644
--- a/lib/libesp32/berry_mapping/src/be_class_wrapper.c
+++ b/lib/libesp32/berry_mapping/src/be_class_wrapper.c
@@ -13,6 +13,13 @@
#include "be_exec.h"
#include
#include
+#include
+
+#if BE_USE_SINGLE_FLOAT
+ #define mathfunc(func) func##f
+#else
+ #define mathfunc(func) func
+#endif
/* Ubuntu 22.04 LTS seems to have an invalid or missing signature for strtok_r, forcing a correct one */
extern char *strtok_r(char *str, const char *delim, char **saveptr);
@@ -227,7 +234,15 @@ intptr_t be_convert_single_elt(bvm *vm, int idx, const char * arg_type, int *buf
type_ok = type_ok || (arg_type[0] == provided_type && arg_type[1] == 0); // or type is a match (single char only)
type_ok = type_ok || (ret == 0 && arg_type_len != 1); // or NULL is accepted for an instance
type_ok = type_ok || (ret == 0 && arg_type[0] == 's' && arg_type[1] == 0); // accept nil for string, can be dangerous
-
+ if (!type_ok) {
+ if ((provided_type == 'f') && (arg_type[0] == 'i') && (arg_type[1] == 0)) {
+ // special case: float is accepted as int
+ breal v_real = be_toreal(vm, idx);
+ ret = mathfunc(round)(v_real);
+ provided_type = 'i';
+ type_ok = btrue;
+ }
+ }
if (!type_ok) {
be_raisef(vm, "type_error", "Unexpected argument type '%c', expected '%s'", provided_type, arg_type);
}
diff --git a/lib/libesp32/berry_matter/generate/be_matter_events.h b/lib/libesp32/berry_matter/generate/be_matter_events.h
new file mode 100644
index 000000000..296f1236c
--- /dev/null
+++ b/lib/libesp32/berry_matter/generate/be_matter_events.h
@@ -0,0 +1,58 @@
+/*********************************************************************************\
+* Compact form for events
+*
+\*********************************************************************************/
+#include
+#include
+
+typedef struct {
+ uint16_t cluster;
+ uint8_t event;
+ const char* name;
+} matter_event_t;
+
+// Must be sorted, cluster first, then attribute
+
+const matter_event_t matter_Events[] = {
+ // 0x001F Access Control Cluster
+ { 0x001F, 0x00, "AccessControlEntryChanged" },
+ { 0x001F, 0x00, "AccessControlExtensionChanged" },
+ // 0x0025 Actions Cluster
+ { 0x0025, 0x00, "StateChanged" },
+ { 0x0025, 0x01, "ActionFailed" },
+ // 0x0028 Basic Information Cluster
+ { 0x0028, 0x00, "StartUp" },
+ { 0x0028, 0x01, "ShutDown" },
+ { 0x0028, 0x02, "Leave" },
+ { 0x0028, 0x03, "ReachableChanged" },
+ // 0x002F Power Source Cluster
+ { 0x002F, 0x00, "WiredFaultChange" },
+ { 0x002F, 0x01, "BatFaultChange" },
+ { 0x002F, 0x02, "BatChargeFaultChange" },
+ // 0x0033 General Diagnostics Cluster
+ { 0x0033, 0x00, "HardwareFaultChange" },
+ { 0x0033, 0x01, "RadioFaultChange" },
+ { 0x0033, 0x02, "NetworkFaultChange" },
+ { 0x0033, 0x03, "BootReason" },
+ // 0x0034 Software Diagnostics Cluster
+ { 0x0034, 0x00, "SoftwareFault" },
+ // 0x0035 Thread Network Diagnostics Cluster
+ // { 0x0035, 0x00, "ConnectionStatus" },
+ // { 0x0035, 0x01, "NetworkFaultChange" },
+ // 0x0036 Wi-Fi Network Diagnostics Cluster
+ { 0x0036, 0x00, "Disconnection" },
+ { 0x0036, 0x01, "AssociationFailure" },
+ { 0x0036, 0x02, "ConnectionStatus" },
+ // 0x0038 Time Synchronization Cluster
+ { 0x0038, 0x00, "DSTTableEmpty" },
+ { 0x0038, 0x01, "DSTStatus" },
+ { 0x0038, 0x02, "TimeZoneStatus" },
+ { 0x0038, 0x03, "TimeFailure" },
+ { 0x0038, 0x04, "MissingTrustedTimeSource" },
+ // 0x0039 Bridged Device Basic Information Cluster
+ { 0x0039, 0x00, "StartUp" },
+ { 0x0039, 0x01, "ShutDown" },
+ { 0x0039, 0x02, "Leave" },
+ { 0x0039, 0x03, "ReachableChanged" },
+ { 0xFFFF, 0xFF, NULL }
+};
diff --git a/lib/libesp32/berry_matter/solidify_all.be b/lib/libesp32/berry_matter/solidify_all.be
index 026d07cfc..d5b357707 100755
--- a/lib/libesp32/berry_matter/solidify_all.be
+++ b/lib/libesp32/berry_matter/solidify_all.be
@@ -12,7 +12,7 @@ import sys
sys.path().push('src/embedded') # allow to import from src/embedded
# globals that need to exist to make compilation succeed
-var globs = "path,ctypes_bytes_dyn,tasmota,ccronexpr,gpio,light,webclient,load,MD5,lv,light_state,udp,tcpclientasync,"
+var globs = "path,ctypes_bytes_dyn,tasmota,ccronexpr,gpio,light,webclient,load,MD5,lv,light_state,udp,tcpclientasync,log,"
"lv_clock,lv_clock_icon,lv_signal_arcs,lv_signal_bars,lv_wifi_arcs_icon,lv_wifi_arcs,"
"lv_wifi_bars_icon,lv_wifi_bars,"
"_lvgl,"
diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c
index 3d7233f48..d2c4051f6 100644
--- a/lib/libesp32/berry_matter/src/be_matter_module.c
+++ b/lib/libesp32/berry_matter/src/be_matter_module.c
@@ -85,6 +85,7 @@ extern const bclass be_class_Matter_QRCode;
#include "solidify/solidified_Matter_Module.h"
#include "../generate/be_matter_clusters.h"
+#include "../generate/be_matter_events.h"
#include "../generate/be_matter_opcodes.h"
#include "../generate/be_matter_vendors.h"
@@ -188,6 +189,16 @@ const char* matter_get_command_name(uint16_t cluster, uint16_t command) {
}
BE_FUNC_CTYPE_DECLARE(matter_get_command_name, "s", "ii")
+const char* matter_get_event_name(uint16_t cluster, uint8_t event) {
+ for (const matter_event_t * ev = matter_Events; ev->cluster != 0xFFFF; ev++) {
+ if (ev->cluster == cluster && ev->event == event) {
+ return ev->name;
+ }
+ }
+ return NULL;
+}
+BE_FUNC_CTYPE_DECLARE(matter_get_event_name, "s", "ii")
+
// Convert an IP address from string to raw bytes
extern const void* matter_get_ip_bytes(const char* ip_str, size_t* ret_len);
BE_FUNC_CTYPE_DECLARE(matter_get_ip_bytes, "&", "s")
@@ -198,7 +209,8 @@ extern int matter_publish_command(bvm *vm);
extern const bclass be_class_Matter_TLV; // need to declare it upfront because of circular reference
#include "solidify/solidified_Matter_Path_0.h"
-#include "solidify/solidified_Matter_Path_1_Generator.h"
+#include "solidify/solidified_Matter_Path_1_PathGenerator.h"
+#include "solidify/solidified_Matter_Path_1_EventGenerator.h"
#include "solidify/solidified_Matter_TLV.h"
#include "solidify/solidified_Matter_IM_Data.h"
#include "solidify/solidified_Matter_UDPServer.h"
@@ -210,14 +222,17 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because
#include "solidify/solidified_Matter_Session.h"
#include "solidify/solidified_Matter_Session_Store.h"
#include "solidify/solidified_Matter_Commissioning_Data.h"
-#include "solidify/solidified_Matter_Commissioning.h"
+#include "solidify/solidified_Matter_Commissioning_Context.h"
#include "solidify/solidified_Matter_Message.h"
#include "solidify/solidified_Matter_MessageHandler.h"
#include "solidify/solidified_Matter_IM_Message.h"
#include "solidify/solidified_Matter_IM_Subscription.h"
#include "solidify/solidified_Matter_IM.h"
+#include "solidify/solidified_Matter_EventHandler.h"
#include "solidify/solidified_Matter_Control_Message.h"
#include "solidify/solidified_Matter_Plugin_0.h"
+#include "solidify/solidified_Matter_z_Commissioning.h"
+#include "solidify/solidified_Matter_z_Autoconf.h"
#include "solidify/solidified_Matter_Base38.h"
#include "solidify/solidified_Matter_UI.h"
#include "solidify/solidified_Matter_Profiler.h"
@@ -227,15 +242,17 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because
#include "solidify/solidified_Matter_Plugin_1_Root.h"
#include "solidify/solidified_Matter_Plugin_1_Aggregator.h"
#include "solidify/solidified_Matter_Plugin_1_Device.h"
-#include "solidify/solidified_Matter_Plugin_2_OnOff.h"
+#include "solidify/solidified_Matter_Plugin_3_OnOff.h"
#include "solidify/solidified_Matter_Plugin_9_Virt_OnOff.h"
-#include "solidify/solidified_Matter_Plugin_3_Light0.h"
+#include "solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h"
+#include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Air_Quality.h"
+#include "solidify/solidified_Matter_Plugin_2_Light0.h"
#include "solidify/solidified_Matter_Plugin_9_Virt_Light0.h"
-#include "solidify/solidified_Matter_Plugin_2_Light1.h"
+#include "solidify/solidified_Matter_Plugin_3_Light1.h"
#include "solidify/solidified_Matter_Plugin_9_Virt_Light1.h"
-#include "solidify/solidified_Matter_Plugin_3_Light2.h"
+#include "solidify/solidified_Matter_Plugin_4_Light2.h"
#include "solidify/solidified_Matter_Plugin_9_Virt_Light2.h"
-#include "solidify/solidified_Matter_Plugin_3_Light3.h"
+#include "solidify/solidified_Matter_Plugin_4_Light3.h"
#include "solidify/solidified_Matter_Plugin_9_Virt_Light3.h"
#include "solidify/solidified_Matter_Plugin_2_Shutter.h"
#include "solidify/solidified_Matter_Plugin_3_ShutterTilt.h"
@@ -250,28 +267,34 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because
#include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Illuminance.h"
#include "solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h"
#include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Humidity.h"
-#include "solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h"
-#include "solidify/solidified_Matter_Plugin_2_Sensor_OnOff.h"
-#include "solidify/solidified_Matter_Plugin_2_Sensor_Contact.h"
-#include "solidify/solidified_Matter_Plugin_2_Sensor_Waterleak.h"
+#include "solidify/solidified_Matter_Plugin_2_Sensor_Boolean.h"
+#include "solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h"
+#include "solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h"
+#include "solidify/solidified_Matter_Plugin_3_Sensor_Contact.h"
+#include "solidify/solidified_Matter_Plugin_3_Sensor_Rain.h"
+#include "solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h"
+#include "solidify/solidified_Matter_Plugin_2_Fan.h"
+#include "solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h"
+#include "solidify/solidified_Matter_Plugin_9_Virt_Fan.h"
#include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Contact.h"
#include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Occupancy.h"
+#include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Rain.h"
#include "solidify/solidified_Matter_Plugin_9_Virt_Sensor_Waterleak.h"
-#include "solidify/solidified_Matter_Plugin_2_Bridge_HTTP.h"
-#include "solidify/solidified_Matter_Plugin_4_Bridge_OnOff.h"
-#include "solidify/solidified_Matter_Plugin_3_Bridge_Light0.h"
-#include "solidify/solidified_Matter_Plugin_4_Bridge_Light1.h"
-#include "solidify/solidified_Matter_Plugin_5_Bridge_Light2.h"
-#include "solidify/solidified_Matter_Plugin_5_Bridge_Light3.h"
-#include "solidify/solidified_Matter_Plugin_3_Bridge_Sensor.h"
-#include "solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Pressure.h"
-#include "solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Temp.h"
-#include "solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Illuminance.h"
-#include "solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Humidity.h"
-#include "solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Occupancy.h"
-#include "solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Contact.h"
-#include "solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Flow.h"
-#include "solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Waterleak.h"
+#include "solidify/solidified_Matter_Plugin_8_Bridge_OnOff.h"
+#include "solidify/solidified_Matter_Plugin_8_Bridge_Light0.h"
+#include "solidify/solidified_Matter_Plugin_8_Bridge_Light1.h"
+#include "solidify/solidified_Matter_Plugin_8_Bridge_Light2.h"
+#include "solidify/solidified_Matter_Plugin_8_Bridge_Light3.h"
+#include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Pressure.h"
+#include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Temp.h"
+#include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Illuminance.h"
+#include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Humidity.h"
+#include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Occupancy.h"
+#include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Contact.h"
+#include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Flow.h"
+#include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Air_Quality.h"
+#include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Rain.h"
+#include "solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Waterleak.h"
#include "solidify/solidified_Matter_Plugin_z_All.h"
#include "solidify/solidified_Matter_zz_Device.h"
@@ -321,6 +344,7 @@ module matter (scope: global, strings: weak) {
is_attribute_writable, ctype_func(matter_is_attribute_writable)
is_attribute_reportable, ctype_func(matter_is_attribute_reportable)
get_command_name, ctype_func(matter_get_command_name)
+ get_event_name, ctype_func(matter_get_event_name)
get_opcode_name, ctype_func(matter_get_opcode_name)
TLV, class(be_class_Matter_TLV)
sort, closure(module_matter_sort_closure)
@@ -330,6 +354,11 @@ module matter (scope: global, strings: weak) {
UC_LIST, closure(module_matter_UC_LIST_closure)
Profiler, class(be_class_Matter_Profiler)
+ // EVents priority levels
+ EVENT_DEBUG, int(0)
+ EVENT_INFO, int(1)
+ EVENT_CRITICAL, int(2)
+
// Status codes
SUCCESS, int(0x00)
FAILURE, int(0x01)
@@ -422,15 +451,20 @@ module matter (scope: global, strings: weak) {
Frame, class(be_class_Matter_Frame)
MessageHandler, class(be_class_Matter_MessageHandler)
+ // Event Handler
+ EventHandler, class(be_class_Matter_EventHandler)
+ EventQueued, class(be_class_Matter_EventQueued)
+
// Interation Model
Path, class(be_class_Matter_Path)
PathGenerator, class(be_class_Matter_PathGenerator)
+ EventGenerator, class(be_class_Matter_EventGenerator)
IM_Status, class(be_class_Matter_IM_Status)
IM_InvokeResponse, class(be_class_Matter_IM_InvokeResponse)
IM_WriteResponse, class(be_class_Matter_IM_WriteResponse)
- IM_ReportData, class(be_class_Matter_IM_ReportData)
- IM_ReportDataSubscribed, class(be_class_Matter_IM_ReportDataSubscribed)
- IM_SubscribeResponse, class(be_class_Matter_IM_SubscribeResponse)
+ IM_ReportData_Pull, class(be_class_Matter_IM_ReportData_Pull)
+ IM_ReportDataSubscribed_Pull, class(be_class_Matter_IM_ReportDataSubscribed_Pull)
+ IM_SubscribeResponse_Pull, class(be_class_Matter_IM_SubscribeResponse_Pull)
IM_SubscribedHeartbeat, class(be_class_Matter_IM_SubscribedHeartbeat)
IM_Subscription, class(be_class_Matter_IM_Subscription)
IM_Subscription_Shop, class(be_class_Matter_IM_Subscription_Shop)
@@ -438,6 +472,10 @@ module matter (scope: global, strings: weak) {
Control_Message, class(be_class_Matter_Control_Message)
UI, class(be_class_Matter_UI)
+ // Commissioning
+ Commissioning, class(be_class_Matter_Commissioning)
+ Autoconf, class(be_class_Matter_Autoconf)
+
// QR Code
QRCode, class(be_class_Matter_QRCode)
@@ -459,7 +497,7 @@ module matter (scope: global, strings: weak) {
// Plugins - only the core classes, all others are taken from `matter_device.plugins_classes`
Plugin_Root, class(be_class_Matter_Plugin_Root) // Generic behavior common to all devices
Plugin_Aggregator, class(be_class_Matter_Plugin_Aggregator) // Aggregator
- Plugin_Bridge_HTTP, class(be_class_Matter_Plugin_Bridge_HTTP) // HTTP bridge superclass
+ Plugin_Device, class(be_class_Matter_Plugin_Device) // Device
}
@const_object_info_end */
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_0_Inspect.be b/lib/libesp32/berry_matter/src/embedded/Matter_0_Inspect.be
index acca8d64c..0846415e7 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_0_Inspect.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_0_Inspect.be
@@ -55,9 +55,15 @@ def inspect(p)
import introspect
var keys = []
- for k : introspect.members(p)
- var v = introspect.get(p, k)
- if type(v) != 'function' keys.push(k) end
+ var o = p
+ while (o != nil)
+ for k : introspect.members(o)
+ var v = introspect.get(o, k)
+ if (type(v) != 'function') && (keys.find(k) == nil)
+ keys.push(k)
+ end
+ end
+ o = super(o) # move to superclass
end
keys = matter.sort(keys)
@@ -83,20 +89,35 @@ matter.inspect = inspect
# from the inheritance hierarchy
#@ solidify:matter.consolidate_clusters,weak
def consolidate_clusters(cl, m)
- var cl_parent = super(cl) != nil ? super(cl).CLUSTERS : {}
+ var cl_parent = (super(cl) != nil) ? super(cl).CLUSTERS : {}
var ret = {}
# clone cl_parent
for k: cl_parent.keys()
# print(f"{k=} {cl_parent[k]=}")
- ret[k] = cl_parent[k].copy()
+ # rebuild an actual list
+ var attr_arr = []
+ var attr_bytes = cl_parent[k]
+ var attr_bytes_sz = (attr_bytes != nil) ? size(attr_bytes) / 2 : 0
+ var idx = 0
+ while (idx < attr_bytes_sz)
+ attr_arr.push(attr_bytes.get(idx * 2, -2))
+ idx += 1
+ end
+ ret[k] = attr_arr
+ # ret[k] = cl_parent[k].copy()
end
# add all keys from m
# print("--- step 2")
for k: m.keys()
# print(f"{k=} {ret.find(k)=} {m[k]=}")
- var l = ret.find(k)
- if l == nil l = [] end
- ret[k] = l + m[k]
+ if !ret.contains(k)
+ ret[k] = []
+ end
+ for v: m[k]
+ if ret[k].find(v) == nil
+ ret[k].push(v)
+ end
+ end
end
# add all auto-attribbutes to each cluster
var AUTO_ATTRIBUTES = [ # pre-defined auto attributes for every cluster
@@ -114,6 +135,23 @@ def consolidate_clusters(cl, m)
end
end
end
+ # sort all lists
+ for k: ret.keys()
+ var attr_list = ret[k]
+ # sort in place
+ ret[k] = matter.sort(attr_list)
+ end
+ # convert back to bytes
+ for k: ret.keys()
+ var attr_arr = ret[k]
+ var attr_bytes = bytes()
+ var idx = 0
+ while (idx < size(attr_arr))
+ attr_bytes.add(attr_arr[idx], -2)
+ idx += 1
+ end
+ ret[k] = attr_bytes
+ end
# print(ret)
return ret
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning_Context.be
similarity index 67%
rename from lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be
rename to lib/libesp32/berry_matter/src/embedded/Matter_Commissioning_Context.be
index d2427a2ce..f0a611944 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning_Context.be
@@ -1,5 +1,5 @@
#
-# Matter_Commissioning.be - suppport for Matter Commissioning process PASE and CASE
+# Matter_Commissioning_Context.be - suppport for Matter Commissioning process PASE and CASE
#
# Copyright (C) 2023 Stephan Hadinger & Theo Arends
#
@@ -45,7 +45,7 @@ class Matter_Commisioning_Context
#############################################################
def add_session(local_session_id, initiator_session_id, i2r, r2i, ac)
# create session object
- tasmota.log(format("MTR: add_session local_session_id=%i initiator_session_id=%i", local_session_id, initiator_session_id), 4)
+ log(format("MTR: add_session local_session_id=%i initiator_session_id=%i", local_session_id, initiator_session_id), 4)
var session = self.device.sessions.create_session(local_session_id, initiator_session_id)
session.set_keys(i2r, r2i, ac)
@@ -53,12 +53,12 @@ class Matter_Commisioning_Context
def process_incoming(msg)
#
- if !self.device.is_commissioning_open() && msg.opcode >= 0x20 && msg.opcode <= 0x24
- tasmota.log("MTR: commissioning not open", 2)
+ if !self.device.commissioning.is_commissioning_open() && msg.opcode >= 0x20 && msg.opcode <= 0x24
+ log("MTR: commissioning not open", 2)
return false
end
- # tasmota.log("MTR: received message " + matter.inspect(msg), 4)
+ # log("MTR: received message " + matter.inspect(msg), 4)
if msg.opcode == 0x10
# don't need to do anything, the message is acked already before this call
elif msg.opcode == 0x20
@@ -74,7 +74,7 @@ class Matter_Commisioning_Context
elif msg.opcode == 0x40
return self.parse_StatusReport(msg)
else
- tasmota.log(format("MTR: >????????? Unknown OpCode (secure channel) %02X", msg.opcode), 2)
+ log(format("MTR: >????????? Unknown OpCode (secure channel) %02X", msg.opcode), 2)
return false
end
@@ -109,8 +109,8 @@ class Matter_Commisioning_Context
var session = msg.session
# sanity checks
if msg.opcode != 0x20 || msg.local_session_id != 0 || msg.protocol_id != 0
- tasmota.log("MTR: invalid PBKDFParamRequest message", 2)
- tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
+ log("MTR: invalid PBKDFParamRequest message", 2)
+ log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false
end
@@ -121,8 +121,8 @@ class Matter_Commisioning_Context
# sanity check for PBKDFParamRequest
if pbkdfparamreq.passcodeId != 0
- tasmota.log("MTR: non-zero passcode id", 2)
- tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
+ log("MTR: non-zero passcode id", 2)
+ log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false
end
@@ -130,7 +130,7 @@ class Matter_Commisioning_Context
# record the initiator_session_id
session.__future_initiator_session_id = pbkdfparamreq.initiator_session_id
session.__future_local_session_id = self.device.sessions.gen_local_session_id()
- tasmota.log(format("MTR: +Session (%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 3)
+ log(format("MTR: +Session (%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 3)
# prepare response
var pbkdfparamresp = matter.PBKDFParamResponse()
@@ -139,11 +139,11 @@ class Matter_Commisioning_Context
# generate 32 bytes random
pbkdfparamresp.responderRandom = crypto.random(32)
pbkdfparamresp.responderSessionId = session.__future_local_session_id
- pbkdfparamresp.pbkdf_parameters_salt = self.device.commissioning_salt
- pbkdfparamresp.pbkdf_parameters_iterations = self.device.commissioning_iterations
- # tasmota.log("MTR: pbkdfparamresp: " + str(matter.inspect(pbkdfparamresp)), 4)
+ pbkdfparamresp.pbkdf_parameters_salt = self.device.commissioning.commissioning_salt
+ pbkdfparamresp.pbkdf_parameters_iterations = self.device.commissioning.commissioning_iterations
+ # log("MTR: pbkdfparamresp: " + str(matter.inspect(pbkdfparamresp)), 4)
var pbkdfparamresp_raw = pbkdfparamresp.tlv2raw()
- # tasmota.log("MTR: pbkdfparamresp_raw: " + pbkdfparamresp_raw.tohex(), 4)
+ # log("MTR: pbkdfparamresp_raw: " + pbkdfparamresp_raw.tohex(), 4)
session.__Msg2 = pbkdfparamresp_raw
@@ -160,32 +160,32 @@ class Matter_Commisioning_Context
var session = msg.session
# sanity checks
if msg.opcode != 0x22 || msg.local_session_id != 0 || msg.protocol_id != 0
- tasmota.log("MTR: invalid Pake1 message", 3)
- tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
+ log("MTR: invalid Pake1 message", 3)
+ log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false
end
var pake1 = matter.Pake1().parse(msg.raw, msg.app_payload_idx)
var pA = pake1.pA
- # tasmota.log("MTR: received pA=" + pA.tohex(), 4)
+ # log("MTR: received pA=" + pA.tohex(), 4)
# instanciate SPAKE
# for testing purpose, we don't send `w1` to make sure
- var spake = crypto.SPAKE2P_Matter(self.device.commissioning_w0, nil, self.device.commissioning_L)
+ var spake = crypto.SPAKE2P_Matter(self.device.commissioning.commissioning_w0, nil, self.device.commissioning.commissioning_L)
# generate `y` nonce (not persisted)
var y = crypto.random(32) # 32 bytes random known only by verifier
# compute pB
spake.compute_pB(y)
- # tasmota.log("MTR: y=" + y.tohex(), 4)
- # tasmota.log("MTR: pb=" + spake.pB.tohex(), 4)
+ # log("MTR: y=" + y.tohex(), 4)
+ # log("MTR: pb=" + spake.pB.tohex(), 4)
# compute ZV
spake.compute_ZV_verifier(pA)
- # tasmota.log("MTR: Z=" + spake.Z.tohex(), 4)
- # tasmota.log("MTR: V=" + spake.V.tohex(), 4)
+ # log("MTR: Z=" + spake.Z.tohex(), 4)
+ # log("MTR: V=" + spake.V.tohex(), 4)
var context = crypto.SHA256()
context.update(bytes().fromstring(self.Matter_Context_Prefix))
@@ -193,7 +193,7 @@ class Matter_Commisioning_Context
context.update(session.__Msg2)
var context_hash = context.out()
- # tasmota.log("MTR: Context=" + context_hash.tohex(), 4)
+ # log("MTR: Context=" + context_hash.tohex(), 4)
# add pA
spake.pA = pA
@@ -201,31 +201,31 @@ class Matter_Commisioning_Context
spake.set_context(context_hash)
spake.compute_TT_hash(true) # `true` to indicate it's Matter variant to SPAKE2+
- # tasmota.log("MTR: ------------------------------", 4)
- # tasmota.log("MTR: Context = " + spake.Context.tohex(), 4)
- # tasmota.log("MTR: M = " + spake.M.tohex(), 4)
- # tasmota.log("MTR: N = " + spake.N.tohex(), 4)
- # tasmota.log("MTR: pA = " + spake.pA.tohex(), 4)
- # tasmota.log("MTR: pB = " + spake.pB.tohex(), 4)
- # tasmota.log("MTR: Z = " + spake.Z.tohex(), 4)
- # tasmota.log("MTR: V = " + spake.V.tohex(), 4)
- # tasmota.log("MTR: w0 = " + spake.w0.tohex(), 4)
- # tasmota.log("MTR: ------------------------------", 4)
+ # log("MTR: ------------------------------", 4)
+ # log("MTR: Context = " + spake.Context.tohex(), 4)
+ # log("MTR: M = " + spake.M.tohex(), 4)
+ # log("MTR: N = " + spake.N.tohex(), 4)
+ # log("MTR: pA = " + spake.pA.tohex(), 4)
+ # log("MTR: pB = " + spake.pB.tohex(), 4)
+ # log("MTR: Z = " + spake.Z.tohex(), 4)
+ # log("MTR: V = " + spake.V.tohex(), 4)
+ # log("MTR: w0 = " + spake.w0.tohex(), 4)
+ # log("MTR: ------------------------------", 4)
- # tasmota.log("MTR: Kmain =" + spake.Kmain.tohex(), 4)
+ # log("MTR: Kmain =" + spake.Kmain.tohex(), 4)
- # tasmota.log("MTR: KcA =" + spake.KcA.tohex(), 4)
- # tasmota.log("MTR: KcB =" + spake.KcB.tohex(), 4)
- # tasmota.log("MTR: K_shared=" + spake.K_shared.tohex(), 4)
- # tasmota.log("MTR: Ke =" + spake.Ke.tohex(), 4)
- # tasmota.log("MTR: cB=" + spake.cB.tohex(), 4)
+ # log("MTR: KcA =" + spake.KcA.tohex(), 4)
+ # log("MTR: KcB =" + spake.KcB.tohex(), 4)
+ # log("MTR: K_shared=" + spake.K_shared.tohex(), 4)
+ # log("MTR: Ke =" + spake.Ke.tohex(), 4)
+ # log("MTR: cB=" + spake.cB.tohex(), 4)
var pake2 = matter.Pake2()
pake2.pB = spake.pB
pake2.cB = spake.cB
- # tasmota.log("MTR: pake2: " + matter.inspect(pake2), 4)
+ # log("MTR: pake2: " + matter.inspect(pake2), 4)
var pake2_raw = pake2.tlv2raw()
- # tasmota.log("MTR: pake2_raw: " + pake2_raw.tohex(), 4)
+ # log("MTR: pake2_raw: " + pake2_raw.tohex(), 4)
session.__spake_cA = spake.cA
session.__spake_Ke = spake.Ke
@@ -235,7 +235,7 @@ class Matter_Commisioning_Context
var raw = resp.encode_frame(pake2_raw)
# log the fact that a new commissioning is starting
- tasmota.log(format("MTR: New Commissioning (PASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port), 2)
+ log(format("MTR: New Commissioning (PASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port), 2)
self.responder.send_response_frame(resp)
return true
@@ -246,20 +246,20 @@ class Matter_Commisioning_Context
var session = msg.session
# sanity checks
if msg.opcode != 0x24 || msg.local_session_id != 0 || msg.protocol_id != 0
- tasmota.log("MTR: invalid Pake3 message", 3)
- tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
+ log("MTR: invalid Pake3 message", 3)
+ log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false
end
var pake3 = matter.Pake3().parse(msg.raw, msg.app_payload_idx)
var cA = pake3.cA
- # tasmota.log("MTR: received cA=" + cA.tohex(), 4)
+ # log("MTR: received cA=" + cA.tohex(), 4)
# check the value against computed
if cA != session.__spake_cA
- tasmota.log("MTR: invalid cA received", 3)
- tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
+ log("MTR: invalid cA received", 3)
+ log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false
end
@@ -271,12 +271,12 @@ class Matter_Commisioning_Context
var R2IKey = session_keys[16..31]
var AttestationChallenge = session_keys[32..47]
- # tasmota.log("MTR: ******************************", 4)
- # tasmota.log("MTR: session_keys=" + session_keys.tohex(), 4)
- # tasmota.log("MTR: I2RKey =" + I2RKey.tohex(), 4)
- # tasmota.log("MTR: R2IKey =" + R2IKey.tohex(), 4)
- # tasmota.log("MTR: AC =" + AttestationChallenge.tohex(), 4)
- # tasmota.log("MTR: ******************************", 4)
+ # log("MTR: ******************************", 4)
+ # log("MTR: session_keys=" + session_keys.tohex(), 4)
+ # log("MTR: I2RKey =" + I2RKey.tohex(), 4)
+ # log("MTR: R2IKey =" + R2IKey.tohex(), 4)
+ # log("MTR: AC =" + AttestationChallenge.tohex(), 4)
+ # log("MTR: ******************************", 4)
# StatusReport(GeneralCode: SUCCESS, ProtocolId: SECURE_CHANNEL, ProtocolCode: SESSION_ESTABLISHMENT_SUCCESS)
self.send_status_report(msg, 0x00, 0x0000, 0x0000, false)
@@ -290,20 +290,20 @@ class Matter_Commisioning_Context
# Validate Sigma1 Destination ID, p.162
# traverse all existing fabrics
if tasmota.loglevel(4)
- tasmota.log("MTR: SEARCHING: destinationId=" + destinationId.tohex(), 4)
+ log("MTR: SEARCHING: destinationId=" + destinationId.tohex(), 4)
end
for fabric : self.device.sessions.fabrics
if fabric.noc == nil || fabric.fabric_id == nil || fabric.device_id == nil continue end
# compute candidateDestinationId, Section 4.13.2.4.1, "Destination Identifier"
var destinationMessage = initiatorRandom + fabric.get_ca_pub() + fabric.fabric_id + fabric.device_id
var key = fabric.get_ipk_group_key()
- # tasmota.log("MTR: SIGMA1: destinationMessage=" + destinationMessage.tohex(), 4)
- # tasmota.log("MTR: SIGMA1: key_ipk=" + key.tohex(), 4)
+ # log("MTR: SIGMA1: destinationMessage=" + destinationMessage.tohex(), 4)
+ # log("MTR: SIGMA1: key_ipk=" + key.tohex(), 4)
var h = crypto.HMAC_SHA256(key)
h.update(destinationMessage)
var candidateDestinationId = h.out()
if tasmota.loglevel(4)
- tasmota.log("MTR: SIGMA1: candidateDestinationId=" + candidateDestinationId.tohex(), 4)
+ log("MTR: SIGMA1: candidateDestinationId=" + candidateDestinationId.tohex(), 4)
end
if candidateDestinationId == destinationId
return fabric
@@ -311,7 +311,7 @@ class Matter_Commisioning_Context
end
# TODO if there is only 1 fabric, we can try to use it anyways
# if size(self.device.sessions.fabrics) == 1
- # tasmota.log("MTR: *** Could not find fabric, trying only fabric in store", 2)
+ # log("MTR: *** Could not find fabric, trying only fabric in store", 2)
# return self.device.sessions.fabrics[0]
# end
return nil
@@ -322,28 +322,26 @@ class Matter_Commisioning_Context
var session = msg.session
# sanity checks
if msg.opcode != 0x30 || msg.local_session_id != 0 || msg.protocol_id != 0
- # tasmota.log("MTR: invalid Sigma1 message", 3)
- tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
+ # log("MTR: invalid Sigma1 message", 3)
+ log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false
end
var sigma1 = matter.Sigma1().parse(msg.raw, msg.app_payload_idx)
- # tasmota.log(format("MTR: sigma1=%s", matter.inspect(sigma1)), 4)
+ # log(format("MTR: sigma1=%s", matter.inspect(sigma1)), 4)
session.__initiator_pub = sigma1.initiatorEphPubKey
# find session
var is_resumption = (sigma1.resumptionID != nil && sigma1.initiatorResumeMIC != nil)
- # tasmota.log(format("MTR: is_resumption=%i", is_resumption ? 1 : 0), 4)
- # TODO disable resumption until fixed
- is_resumption = false
# Check that it's a resumption
var session_resumption
if is_resumption
session_resumption = self.device.sessions.find_session_by_resumption_id(sigma1.resumptionID)
- # tasmota.log(format("MTR: session_resumption found session=%s session_resumption=%s", matter.inspect(session), matter.inspect(session_resumption)), 4)
+ # log(format("MTR: session_resumption found session=%s session_resumption=%s", matter.inspect(session), matter.inspect(session_resumption)), 4)
if session_resumption == nil || session_resumption._fabric == nil
+ log(f"MTR: Sigma1 Resumption FAILED, session not found resumption_id={sigma1.resumptionID}", 3)
is_resumption = false
end
end
@@ -351,6 +349,7 @@ class Matter_Commisioning_Context
# Check that it's a resumption
if is_resumption
# Resumption p.169
+ log("MTR: Sigma1 Resumption", 3)
var s1rk_salt = sigma1.initiatorRandom + sigma1.resumptionID
var s1rk_info = bytes().fromstring("Sigma1_Resume")
var s1rk = crypto.HKDF_SHA256().derive(session_resumption.shared_secret, s1rk_salt, s1rk_info, 16)
@@ -362,19 +361,21 @@ class Matter_Commisioning_Context
var Resume1MICPayload = ec.decrypt(encrypted)
var decrypted_tag = ec.tag()
- # tasmota.log("****************************************", 4)
- # tasmota.log("MTR: * s1rk = " + s1rk.tohex(), 4)
- # tasmota.log("MTR: * tag = " + tag.tohex(), 4)
- # tasmota.log("MTR: * Resume1MICPayload = " + Resume1MICPayload.tohex(), 4)
- # tasmota.log("MTR: * decrypted_tag = " + decrypted_tag.tohex(), 4)
- # tasmota.log("****************************************", 4)
+ # log("****************************************", 4)
+ # log("MTR: * initiatorRandom = " + sigma1.initiatorRandom.tohex(), 4)
+ # log("MTR: * ResumptionID = " + session_resumption.resumption_id.tohex(), 4)
+ # log("MTR: * s1rk = " + s1rk.tohex(), 4)
+ # log("MTR: * tag = " + tag.tohex(), 4)
+ # log("MTR: * Resume1MICPayload = " + Resume1MICPayload.tohex(), 4)
+ # log("MTR: * decrypted_tag = " + decrypted_tag.tohex(), 4)
+ # log("****************************************", 4)
if tag == decrypted_tag
session._fabric = session_resumption._fabric
session._source_node_id = msg.source_node_id
session.set_mode_CASE()
session.__future_initiator_session_id = sigma1.initiator_session_id # update initiator_session_id
session.__future_local_session_id = self.device.sessions.gen_local_session_id()
- tasmota.log(format("MTR: +Session (%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 3)
+ log(format("MTR: +Session (%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 3)
# Generate and Send Sigma2_Resume
session.shared_secret = session_resumption.shared_secret
@@ -392,19 +393,21 @@ class Matter_Commisioning_Context
var sigma2resume = matter.Sigma2Resume()
sigma2resume.resumptionID = session.resumption_id
- sigma2resume.responderSessionID = session.__future_local_session_id
sigma2resume.sigma2ResumeMIC = Resume2MIC
+ sigma2resume.responderSessionID = session.__future_local_session_id
- # tasmota.log("****************************************", 4)
- # tasmota.log("MTR: * s2rk = " + s2rk.tohex(), 4)
- # tasmota.log("MTR: * s2rk_salt = " + s2rk_salt.tohex(), 4)
- # tasmota.log("MTR: * new_resumption_id = " + session.resumption_id.tohex(), 4)
- # tasmota.log("MTR: * responderSessionID= " + str(session.__future_local_session_id), 4)
- # tasmota.log("MTR: * sigma2ResumeMIC = " + Resume2MIC.tohex(), 4)
- # tasmota.log("****************************************", 4)
+ # log("****************************************", 4)
+ # log("MTR: * s2rk = " + s2rk.tohex(), 4)
+ # log("MTR: * s2rk_salt = " + s2rk_salt.tohex(), 4)
+ # log("MTR: * new_resumption_id = " + session.resumption_id.tohex(), 4)
+ # log("MTR: * responderSessionID= " + str(session.__future_local_session_id), 4)
+ # log("MTR: * sigma2ResumeMIC = " + Resume2MIC.tohex(), 4)
+ # log("****************************************", 4)
# # compute session key, p.178
+ var salt_sessions = sigma1.initiatorRandom + session_resumption.resumption_id
+ # log("MTR: * salt_session = " + salt_sessions.tohex(), 4)
var session_keys = crypto.HKDF_SHA256().derive(session.shared_secret #- input key -#,
- sigma1.initiatorRandom + session.resumption_id #- salt -#,
+ salt_sessions #- salt -#,
bytes().fromstring("SessionResumptionKeys") #- info -#,
48)
var i2r = session_keys[0..15]
@@ -412,16 +415,16 @@ class Matter_Commisioning_Context
var ac = session_keys[32..47]
var created = tasmota.rtc_utc()
- # tasmota.log("MTR: ******************************", 4)
- # tasmota.log("MTR: I2RKey =" + i2r.tohex(), 4)
- # tasmota.log("MTR: R2IKey =" + r2i.tohex(), 4)
- # tasmota.log("MTR: AC =" + ac.tohex(), 4)
- # tasmota.log("MTR: ******************************", 4)
+ # log("MTR: ******************************", 4)
+ # log("MTR: I2RKey =" + i2r.tohex(), 4)
+ # log("MTR: R2IKey =" + r2i.tohex(), 4)
+ # log("MTR: AC =" + ac.tohex(), 4)
+ # log("MTR: ******************************", 4)
var sigma2resume_raw = sigma2resume.tlv2raw()
session.__Msg1 = nil
- # tasmota.log("MTR: sigma2resume: " + matter.inspect(sigma2resume), 4)
- # tasmota.log("MTR: sigma2resume_raw: " + sigma2resume_raw.tohex(), 4)
+ # log("MTR: sigma2resume: " + matter.inspect(sigma2resume), 4)
+ # log("MTR: sigma2resume_raw: " + sigma2resume_raw.tohex(), 4)
# now package the response message
var resp = msg.build_response(0x33 #-sigma-2-resume-#, true)
@@ -431,6 +434,7 @@ class Matter_Commisioning_Context
session.close()
session.set_keys(i2r, r2i, ac, created)
+ session.peer_node_id = session_resumption.peer_node_id # copy peer_node_id from session
# CASE Session completed, persist it
session._breadcrumb = 0 # clear breadcrumb
@@ -440,8 +444,10 @@ class Matter_Commisioning_Context
session.persist_to_fabric()
session.save()
+ log("MTR: Sigma1 Resumption SUCCEEDED", 3)
return true
else
+ log("MTR: Sigma1 Resumption FAILED, switching to CASE", 3)
is_resumption = false
# fall through normal sigma1 (non-resumption)
end
@@ -453,7 +459,7 @@ class Matter_Commisioning_Context
session._fabric = fabric
if session == nil || session._fabric == nil
- tasmota.log("MTR: StatusReport(GeneralCode: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: NO_SHARED_TRUST_ROOTS)", 3)
+ log("MTR: StatusReport(GeneralCode: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: NO_SHARED_TRUST_ROOTS)", 3)
self.send_status_report(msg, 0x01, 0x0000, 0x0001, false)
return false
end
@@ -462,26 +468,26 @@ class Matter_Commisioning_Context
session.__future_initiator_session_id = sigma1.initiator_session_id # update initiator_session_id
session.__future_local_session_id = self.device.sessions.gen_local_session_id()
- tasmota.log(format("MTR: +Session (%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 3)
+ log(format("MTR: +Session (%6i) from '[%s]:%i'", session.__future_local_session_id, msg.remote_ip, msg.remote_port), 3)
- # tasmota.log("MTR: fabric="+matter.inspect(session._fabric), 4)
- # tasmota.log("MTR: no_private_key="+session.get_pk().tohex(), 4)
- # tasmota.log("MTR: noc ="+session.get_noc().tohex(), 4)
+ # log("MTR: fabric="+matter.inspect(session._fabric), 4)
+ # log("MTR: no_private_key="+session.get_pk().tohex(), 4)
+ # log("MTR: noc ="+session.get_noc().tohex(), 4)
# if fabric.get_icac()
- # tasmota.log("MTR: icac ="+fabric.get_icac().tohex(), 4)
+ # log("MTR: icac ="+fabric.get_icac().tohex(), 4)
# end
- # tasmota.log("MTR: root_ca_cert ="+fabric.get_ca().tohex(), 4)
+ # log("MTR: root_ca_cert ="+fabric.get_ca().tohex(), 4)
# Compute Sigma2, p.162
session.resumption_id = crypto.random(16) # generate a new resumption id
session.__responder_priv = crypto.random(32)
session.__responder_pub = crypto.EC_P256().public_key(session.__responder_priv)
- # tasmota.log("MTR: ResponderEph_priv ="+session.__responder_priv.tohex(), 4)
- # tasmota.log("MTR: ResponderEph_pub ="+session.__responder_pub.tohex(), 4)
+ # log("MTR: ResponderEph_priv ="+session.__responder_priv.tohex(), 4)
+ # log("MTR: ResponderEph_pub ="+session.__responder_pub.tohex(), 4)
var responderRandom = crypto.random(32)
session.shared_secret = crypto.EC_P256().shared_key(session.__responder_priv, sigma1.initiatorEphPubKey)
- # tasmota.log("MTR: * shared_secret = " + session.shared_secret.tohex(), 4)
+ # log("MTR: * shared_secret = " + session.shared_secret.tohex(), 4)
var sigma2_tbsdata = matter.TLV.Matter_TLV_struct()
sigma2_tbsdata.add_TLV(1, matter.TLV.B2, fabric.get_noc())
@@ -490,10 +496,10 @@ class Matter_Commisioning_Context
sigma2_tbsdata.add_TLV(4, matter.TLV.B2, sigma1.initiatorEphPubKey)
var TBSData2Signature = crypto.EC_P256().ecdsa_sign_sha256(fabric.get_pk(), sigma2_tbsdata.tlv2raw())
- # tasmota.log("****************************************", 4)
- # tasmota.log("MTR: * fabric.get_pk = " + str(fabric.get_pk()), 4)
- # tasmota.log("MTR: * sigma2_tbsdata = " + str(sigma2_tbsdata), 4)
- # tasmota.log("MTR: * TBSData2Signature = " + TBSData2Signature.tohex(), 4)
+ # log("****************************************", 4)
+ # log("MTR: * fabric.get_pk = " + str(fabric.get_pk()), 4)
+ # log("MTR: * sigma2_tbsdata = " + str(sigma2_tbsdata), 4)
+ # log("MTR: * TBSData2Signature = " + TBSData2Signature.tohex(), 4)
var sigma2_tbedata = matter.TLV.Matter_TLV_struct()
sigma2_tbedata.add_TLV(1, matter.TLV.B2, fabric.get_noc())
@@ -502,47 +508,47 @@ class Matter_Commisioning_Context
sigma2_tbedata.add_TLV(4, matter.TLV.B2, session.resumption_id)
# compute TranscriptHash = Crypto_Hash(message = Msg1)
- # tasmota.log("****************************************", 4)
+ # log("****************************************", 4)
session.__Msg1 = sigma1.Msg1
- # tasmota.log("MTR: * resumptionid = " + session.resumption_id.tohex(), 4)
- # tasmota.log("MTR: * MSG1 = " + session.__Msg1.tohex(), 4)
+ # log("MTR: * resumptionid = " + session.resumption_id.tohex(), 4)
+ # log("MTR: * MSG1 = " + session.__Msg1.tohex(), 4)
var TranscriptHash = crypto.SHA256().update(session.__Msg1).out()
- # tasmota.log("MTR: TranscriptHash =" + TranscriptHash.tohex(), 4)
+ # log("MTR: TranscriptHash =" + TranscriptHash.tohex(), 4)
# Compute S2K, p.175
var s2k_info = bytes().fromstring(self.S2K_Info)
var s2k_salt = fabric.get_ipk_group_key() + responderRandom + session.__responder_pub + TranscriptHash
var s2k = crypto.HKDF_SHA256().derive(session.shared_secret, s2k_salt, s2k_info, 16)
- # tasmota.log("MTR: * SharedSecret = " + session.shared_secret.tohex(), 4)
- # tasmota.log("MTR: * s2k_salt = " + s2k_salt.tohex(), 4)
- # tasmota.log("MTR: * s2k = " + s2k.tohex(), 4)
+ # log("MTR: * SharedSecret = " + session.shared_secret.tohex(), 4)
+ # log("MTR: * s2k_salt = " + s2k_salt.tohex(), 4)
+ # log("MTR: * s2k = " + s2k.tohex(), 4)
var sigma2_tbedata_raw = sigma2_tbedata.tlv2raw()
- # tasmota.log("MTR: * TBEData2Raw = " + sigma2_tbedata_raw.tohex(), 4)
+ # log("MTR: * TBEData2Raw = " + sigma2_tbedata_raw.tohex(), 4)
# // `AES_CCM.init(secret_key:bytes(16 or 32), iv:bytes(7..13), aad:bytes(), data_len:int, tag_len:int) -> instance`
var aes = crypto.AES_CCM(s2k, bytes().fromstring(self.TBEData2_Nonce), bytes(), size(sigma2_tbedata_raw), 16)
var TBEData2Encrypted = aes.encrypt(sigma2_tbedata_raw) + aes.tag()
- # tasmota.log("MTR: * TBEData2Enc = " + TBEData2Encrypted.tohex(), 4)
- # tasmota.log("****************************************", 4)
+ # log("MTR: * TBEData2Enc = " + TBEData2Encrypted.tohex(), 4)
+ # log("****************************************", 4)
var sigma2 = matter.Sigma2()
sigma2.responderRandom = responderRandom
sigma2.responderSessionId = session.__future_local_session_id
sigma2.responderEphPubKey = session.__responder_pub
sigma2.encrypted2 = TBEData2Encrypted
- # tasmota.log("MTR: sigma2: " + matter.inspect(sigma2), 4)
+ # log("MTR: sigma2: " + matter.inspect(sigma2), 4)
var sigma2_raw = sigma2.tlv2raw()
session.__Msg2 = sigma2_raw
- # tasmota.log("MTR: sigma2_raw: " + sigma2_raw.tohex(), 4)
+ # log("MTR: sigma2_raw: " + sigma2_raw.tohex(), 4)
# now package the response message
var resp = msg.build_response(0x31 #-sigma-2-#, true) # no reliable flag
var raw = resp.encode_frame(sigma2_raw)
# log the fact that a new connection is starting
- tasmota.log(format("MTR: New Connection (CASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port), 2)
+ log(format("MTR: New Connection (CASE id=%i) from [%s]:%i", session.__future_local_session_id, session._ip, session._port), 2)
self.responder.send_response_frame(resp)
return true
@@ -555,29 +561,29 @@ class Matter_Commisioning_Context
import crypto
# sanity checks
if msg.opcode != 0x32 || msg.local_session_id != 0 || msg.protocol_id != 0
- tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
+ log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false
end
var session = msg.session
var sigma3 = matter.Sigma3().parse(msg.raw, msg.app_payload_idx)
- # tasmota.log("****************************************", 4)
+ # log("****************************************", 4)
# compute TranscriptHash = Crypto_Hash(message = Msg1 || Msg2)
var TranscriptHash = crypto.SHA256().update(session.__Msg1).update(session.__Msg2).out()
- # tasmota.log("MTR: * session = " + str(session), 4)
- # tasmota.log("MTR: .ipk_epoch_key=" + str(session.get_ipk_epoch_key()), 4)
- # tasmota.log("MTR: .fabric_compr = " + str(session.get_fabric_compressed()), 4)
- # tasmota.log("MTR: * ipk_group_key = " + session.get_ipk_group_key().tohex(), 4)
- # tasmota.log("MTR: * TranscriptHash= " + TranscriptHash.tohex(), 4)
+ # log("MTR: * session = " + str(session), 4)
+ # log("MTR: .ipk_epoch_key=" + str(session.get_ipk_epoch_key()), 4)
+ # log("MTR: .fabric_compr = " + str(session.get_fabric_compressed()), 4)
+ # log("MTR: * ipk_group_key = " + session.get_ipk_group_key().tohex(), 4)
+ # log("MTR: * TranscriptHash= " + TranscriptHash.tohex(), 4)
var s3k_info = bytes().fromstring(self.S3K_Info)
var s3k = crypto.HKDF_SHA256().derive(session.shared_secret, session.get_ipk_group_key() + TranscriptHash, s3k_info, 16)
- # tasmota.log("****************************************", 4)
- # tasmota.log("MTR: * s3k_salt = " + (session.get_ipk_group_key() + TranscriptHash).tohex(), 4)
- # tasmota.log("MTR: * s3k = " + s3k.tohex(), 4)
- # tasmota.log("****************************************", 4)
+ # log("****************************************", 4)
+ # log("MTR: * s3k_salt = " + (session.get_ipk_group_key() + TranscriptHash).tohex(), 4)
+ # log("MTR: * s3k = " + s3k.tohex(), 4)
+ # log("****************************************", 4)
# decrypt
var encrypted = sigma3.TBEData3Encrypted[0..-17]
@@ -585,75 +591,75 @@ class Matter_Commisioning_Context
var ec = crypto.AES_CCM(s3k, bytes().fromstring(self.TBEData3_Nonce), bytes(), size(encrypted), 16)
var TBEData3 = ec.decrypt(encrypted)
var TBETag3 = ec.tag()
- # tasmota.log("MTR: * TBEData3 = " + TBEData3.tohex(), 4)
- # tasmota.log("MTR: * TBETag3 = " + TBETag3.tohex(), 4)
- # tasmota.log("MTR: * tag_sent = " + tag.tohex(), 4)
- # tasmota.log("****************************************", 4)
+ # log("MTR: * TBEData3 = " + TBEData3.tohex(), 4)
+ # log("MTR: * TBETag3 = " + TBETag3.tohex(), 4)
+ # log("MTR: * tag_sent = " + tag.tohex(), 4)
+ # log("****************************************", 4)
if TBETag3 != tag
- tasmota.log("MTR: Tag don't match", 3)
- tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
+ log("MTR: Tag don't match", 3)
+ log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 3)
self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false
end
var TBEData3TLV = matter.TLV.parse(TBEData3)
- # tasmota.log("MTR: * TBEData3TLV = " + str(TBEData3TLV), 4)
+ # log("MTR: * TBEData3TLV = " + str(TBEData3TLV), 4)
var initiatorNOC = TBEData3TLV.findsubval(1)
var initiatorICAC = TBEData3TLV.findsubval(2)
var ec_signature = TBEData3TLV.findsubval(3)
- # tasmota.log("MTR: * initiatorNOC = " + str(initiatorNOC), 4)
- # tasmota.log("MTR: * initiatorICAC = " + str(initiatorICAC), 4)
- # tasmota.log("MTR: * ec_signature = " + str(ec_signature), 4)
+ # log("MTR: * initiatorNOC = " + str(initiatorNOC), 4)
+ # log("MTR: * initiatorICAC = " + str(initiatorICAC), 4)
+ # log("MTR: * ec_signature = " + str(ec_signature), 4)
# Success = Crypto_VerifyChain(certificates = [TBEData3.initiatorNOC, TBEData3.initiatorICAC, TrustedRCAC]), when TBEData3.initiatorICAC is present
# TODO
var initiatorNOCTLV = matter.TLV.parse(initiatorNOC)
- # tasmota.log("MTR: initiatorNOCTLV = " + str(initiatorNOCTLV), 4)
+ # log("MTR: initiatorNOCTLV = " + str(initiatorNOCTLV), 4)
var initiatorNOCPubKey = initiatorNOCTLV.findsubval(9)
var initiatorNOCListDN = initiatorNOCTLV.findsub(6)
var initiatorFabricId = initiatorNOCListDN.findsubval(17)
if type(initiatorFabricId) == 'int' session.peer_node_id = int64.fromu32(initiatorFabricId).tobytes() else session.peer_node_id = initiatorFabricId.tobytes() end
- # tasmota.log("MTR: initiatorFabricId="+str(session.peer_node_id), 4)
+ # log("MTR: initiatorFabricId="+str(session.peer_node_id), 4)
var sigma3_tbs = matter.TLV.Matter_TLV_struct()
sigma3_tbs.add_TLV(1, matter.TLV.B1, initiatorNOC)
sigma3_tbs.add_TLV(2, matter.TLV.B1, initiatorICAC)
sigma3_tbs.add_TLV(3, matter.TLV.B1, session.__initiator_pub)
sigma3_tbs.add_TLV(4, matter.TLV.B1, session.__responder_pub)
- # tasmota.log("MTR: * sigma3_tbs = " + str(sigma3_tbs), 4)
+ # log("MTR: * sigma3_tbs = " + str(sigma3_tbs), 4)
var sigma3_tbs_raw = sigma3_tbs.tlv2raw()
- # tasmota.log("MTR: * sigma3_tbs_raw= " + sigma3_tbs_raw.tohex(), 4)
+ # log("MTR: * sigma3_tbs_raw= " + sigma3_tbs_raw.tohex(), 4)
- # tasmota.log("MTR: * initiatorNOCPubKey= " + initiatorNOCPubKey.tohex(), 4)
- # tasmota.log("MTR: * ec_signature = " + ec_signature.tohex(), 4)
- # tasmota.log("****************************************", 4)
+ # log("MTR: * initiatorNOCPubKey= " + initiatorNOCPubKey.tohex(), 4)
+ # log("MTR: * ec_signature = " + ec_signature.tohex(), 4)
+ # log("****************************************", 4)
# `crypto.EC_P256().ecdsa_verify_sha256(public_key:bytes(65), message:bytes(), hash:bytes()) -> bool`
var sigma3_tbs_valid = crypto.EC_P256().ecdsa_verify_sha256(initiatorNOCPubKey, sigma3_tbs_raw, ec_signature)
if !sigma3_tbs_valid
- tasmota.log("MTR: sigma3_tbs does not have a valid signature", 2)
- tasmota.log("MTR: ******************* Invalid signature, trying anyways", 2)
- # tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
+ log("MTR: sigma3_tbs does not have a valid signature", 2)
+ log("MTR: ******************* Invalid signature, trying anyways", 2)
+ # log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
# self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
# return false
else
# All good, compute new keys
- tasmota.log("MTR: Sigma3 verified, computing new keys", 3)
+ log("MTR: Sigma3 verified, computing new keys", 3)
end
TranscriptHash = crypto.SHA256().update(session.__Msg1).update(session.__Msg2).update(sigma3.Msg3).out()
- # tasmota.log("MTR: * __Msg1 = " + session.__Msg1.tohex(), 4)
- # tasmota.log("MTR: * __Msg2 = " + session.__Msg2.tohex(), 4)
- # tasmota.log("MTR: * __Msg3 = " + sigma3.Msg3.tohex(), 4)
- # tasmota.log("MTR: * TranscriptHash = " + TranscriptHash.tohex(), 4)
+ # log("MTR: * __Msg1 = " + session.__Msg1.tohex(), 4)
+ # log("MTR: * __Msg2 = " + session.__Msg2.tohex(), 4)
+ # log("MTR: * __Msg3 = " + sigma3.Msg3.tohex(), 4)
+ # log("MTR: * TranscriptHash = " + TranscriptHash.tohex(), 4)
# we can now free __Msg1 and __Msg2
session.__Msg1 = nil
session.__Msg2 = nil
- # tasmota.log("MTR: ******************************", 4)
- # tasmota.log("MTR: shared_secret =" + session.shared_secret.tohex(), 4)
- # tasmota.log("MTR: ipk + hash =" + (session.get_ipk_group_key() + TranscriptHash).tohex(), 4)
+ # log("MTR: ******************************", 4)
+ # log("MTR: shared_secret =" + session.shared_secret.tohex(), 4)
+ # log("MTR: ipk + hash =" + (session.get_ipk_group_key() + TranscriptHash).tohex(), 4)
# compute session key
var session_keys = crypto.HKDF_SHA256().derive(session.shared_secret #- input key -#,
session.get_ipk_group_key() + TranscriptHash #- salt -#,
@@ -664,11 +670,11 @@ class Matter_Commisioning_Context
var ac = session_keys[32..47]
var created = tasmota.rtc_utc()
- # tasmota.log("MTR: ******************************", 4)
- # tasmota.log("MTR: I2RKey =" + i2r.tohex(), 4)
- # tasmota.log("MTR: R2IKey =" + r2i.tohex(), 4)
- # tasmota.log("MTR: AC =" + ac.tohex(), 4)
- # tasmota.log("MTR: ******************************", 4)
+ # log("MTR: ******************************", 4)
+ # log("MTR: I2RKey =" + i2r.tohex(), 4)
+ # log("MTR: R2IKey =" + r2i.tohex(), 4)
+ # log("MTR: AC =" + ac.tohex(), 4)
+ # log("MTR: ******************************", 4)
# StatusReport(GeneralCode: SUCCESS, ProtocolId: SECURE_CHANNEL, ProtocolCode: SESSION_ESTABLISHMENT_SUCCESS)
self.send_status_report(msg, 0x00, 0x0000, 0x0000, true)
@@ -691,7 +697,8 @@ class Matter_Commisioning_Context
# placeholder, nothing to run for now
def parse_StatusReport(msg)
var session = msg.session
- tasmota.log("MTR: >Status "+msg.raw[msg.app_payload_idx..].tohex(), 3)
+ var status_msg = msg.raw[msg.app_payload_idx..].tohex()
+ log(f"MTR: >Status {status_msg}", (status_msg != "0000000000000000") ? 3 : 4)
return false # we don't explicitly ack the message
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning_Data.be b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning_Data.be
index 6103b71f7..8f2fa8aed 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning_Data.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning_Data.be
@@ -41,8 +41,9 @@ class Matter_PBKDFParamRequest
var SLEEPY_ACTIVE_INTERVAL
def parse(b, idx)
+ var TLV = matter.TLV
if idx == nil idx = 0 end
- var val = matter.TLV.parse(b, idx)
+ var val = TLV.parse(b, idx)
self.initiatorRandom = val.getsubval(1)
self.initiator_session_id = val.getsubval(2)
@@ -71,18 +72,19 @@ class Matter_PBKDFParamResponse
var SLEEPY_ACTIVE_INTERVAL
def tlv2raw(b)
- var s = matter.TLV.Matter_TLV_struct()
+ var TLV = matter.TLV
+ var s = TLV.Matter_TLV_struct()
# initiatorRandom
- s.add_TLV(1, matter.TLV.B1, self.initiatorRandom)
- s.add_TLV(2, matter.TLV.B1, self.responderRandom)
- s.add_TLV(3, matter.TLV.U2, self.responderSessionId)
+ s.add_TLV(1, TLV.B1, self.initiatorRandom)
+ s.add_TLV(2, TLV.B1, self.responderRandom)
+ s.add_TLV(3, TLV.U2, self.responderSessionId)
var s_pbkdf = s.add_struct(4)
- s_pbkdf.add_TLV(1, matter.TLV.U4, self.pbkdf_parameters_iterations)
- s_pbkdf.add_TLV(2, matter.TLV.B1, self.pbkdf_parameters_salt)
+ s_pbkdf.add_TLV(1, TLV.U4, self.pbkdf_parameters_iterations)
+ s_pbkdf.add_TLV(2, TLV.B1, self.pbkdf_parameters_salt)
if self.SLEEPY_IDLE_INTERVAL != nil || self.SLEEPY_ACTIVE_INTERVAL != nil
var s2 = s.add_struct(5)
- s2.add_TLV(1, matter.TLV.U4, self.SLEEPY_IDLE_INTERVAL)
- s2.add_TLV(2, matter.TLV.U4, self.SLEEPY_ACTIVE_INTERVAL)
+ s2.add_TLV(1, TLV.U4, self.SLEEPY_IDLE_INTERVAL)
+ s2.add_TLV(2, TLV.U4, self.SLEEPY_ACTIVE_INTERVAL)
end
return s.tlv2raw(b)
end
@@ -98,7 +100,7 @@ class Matter_Pake1
def parse(b, idx)
if idx == nil idx = 0 end
var val = matter.TLV.parse(b, idx)
- # tasmota.log("MTR: parsed TLV: " + str(val), 4)
+ # log("MTR: parsed TLV: " + str(val), 4)
self.pA = val.getsubval(1)
return self
@@ -114,10 +116,11 @@ class Matter_Pake2
var cB # 32 bytes
def tlv2raw(b)
- var s = matter.TLV.Matter_TLV_struct()
+ var TLV = matter.TLV
+ var s = TLV.Matter_TLV_struct()
#
- s.add_TLV(1, matter.TLV.B1, self.pB)
- s.add_TLV(2, matter.TLV.B1, self.cB)
+ s.add_TLV(1, TLV.B1, self.pB)
+ s.add_TLV(2, TLV.B1, self.cB)
return s.tlv2raw(b)
end
end
@@ -130,7 +133,7 @@ class Matter_Pake3
def parse(b, idx)
if idx == nil idx = 0 end
var val = matter.TLV.parse(b, idx)
- # tasmota.log("MTR: parsed TLV: " + str(val), 4)
+ # log("MTR: parsed TLV: " + str(val), 4)
self.cA = val.getsubval(1)
return self
@@ -157,7 +160,7 @@ class Matter_Sigma1
if idx == nil idx = 0 end
var val = matter.TLV.parse(b, idx)
self.Msg1 = b[idx..]
- # tasmota.log("MTR: Sigma1 TLV=" + str(val), 4)
+ # log("MTR: Sigma1 TLV=" + str(val), 4)
self.initiatorRandom = val.getsubval(1)
self.initiator_session_id = val.getsubval(2)
@@ -187,16 +190,17 @@ class Matter_Sigma2
var SLEEPY_ACTIVE_INTERVAL
def tlv2raw(b)
- var s = matter.TLV.Matter_TLV_struct()
+ var TLV = matter.TLV
+ var s = TLV.Matter_TLV_struct()
# initiatorRandom
- s.add_TLV(1, matter.TLV.B1, self.responderRandom)
- s.add_TLV(2, matter.TLV.U2, self.responderSessionId)
- s.add_TLV(3, matter.TLV.B1, self.responderEphPubKey)
- s.add_TLV(4, matter.TLV.B1, self.encrypted2)
+ s.add_TLV(1, TLV.B1, self.responderRandom)
+ s.add_TLV(2, TLV.U2, self.responderSessionId)
+ s.add_TLV(3, TLV.B1, self.responderEphPubKey)
+ s.add_TLV(4, TLV.B1, self.encrypted2)
if self.SLEEPY_IDLE_INTERVAL != nil || self.SLEEPY_ACTIVE_INTERVAL != nil
var s2 = s.add_struct(5)
- s2.add_TLV(1, matter.TLV.U4, self.SLEEPY_IDLE_INTERVAL)
- s2.add_TLV(2, matter.TLV.U4, self.SLEEPY_ACTIVE_INTERVAL)
+ s2.add_TLV(1, TLV.U4, self.SLEEPY_IDLE_INTERVAL)
+ s2.add_TLV(2, TLV.U4, self.SLEEPY_ACTIVE_INTERVAL)
end
return s.tlv2raw(b)
end
@@ -214,15 +218,16 @@ class Matter_Sigma2Resume
var SLEEPY_ACTIVE_INTERVAL
def tlv2raw(b)
- var s = matter.TLV.Matter_TLV_struct()
+ var TLV = matter.TLV
+ var s = TLV.Matter_TLV_struct()
# initiatorRandom
- s.add_TLV(1, matter.TLV.B1, self.resumptionID)
- s.add_TLV(2, matter.TLV.B1, self.sigma2ResumeMIC)
- s.add_TLV(3, matter.TLV.U2, self.responderSessionID)
+ s.add_TLV(1, TLV.B1, self.resumptionID)
+ s.add_TLV(2, TLV.B1, self.sigma2ResumeMIC)
+ s.add_TLV(3, TLV.U2, self.responderSessionID)
if self.SLEEPY_IDLE_INTERVAL != nil || self.SLEEPY_ACTIVE_INTERVAL != nil
var s2 = s.add_struct(4)
- s2.add_TLV(1, matter.TLV.U4, self.SLEEPY_IDLE_INTERVAL)
- s2.add_TLV(2, matter.TLV.U4, self.SLEEPY_ACTIVE_INTERVAL)
+ s2.add_TLV(1, TLV.U4, self.SLEEPY_IDLE_INTERVAL)
+ s2.add_TLV(2, TLV.U4, self.SLEEPY_ACTIVE_INTERVAL)
end
return s.tlv2raw(b)
end
@@ -240,7 +245,7 @@ class Matter_Sigma3
if idx == nil idx = 0 end
var val = matter.TLV.parse(b, idx)
self.Msg3 = b[idx..]
- # tasmota.log("MTR: Sigma3 TLV=" + str(val), 4)
+ # log("MTR: Sigma3 TLV=" + str(val), 4)
self.TBEData3Encrypted = val.getsubval(1)
return self
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Control_Message.be b/lib/libesp32/berry_matter/src/embedded/Matter_Control_Message.be
index d00c0cd53..0d640253a 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Control_Message.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Control_Message.be
@@ -39,13 +39,13 @@ class Matter_Control_Message
def process_incoming_control_message(msg)
- tasmota.log("MTR: received control message " + matter.inspect(msg), 3)
+ log("MTR: received control message " + matter.inspect(msg), 3)
if msg.opcode == 0x00
return self.parse_MsgCounterSyncReq(msg)
elif msg.opcode == 0x01
return self.parse_MsgCounterSyncRsp(msg)
else
- tasmota.log(format("MTR: >????????? Unknown OpCode (control message) %02X", msg.opcode), 2)
+ log(format("MTR: >????????? Unknown OpCode (control message) %02X", msg.opcode), 2)
return false
end
@@ -58,7 +58,7 @@ class Matter_Control_Message
# Not yet implemented
def parse_MsgCounterSyncReq(msg)
var session = msg.session
- tasmota.log(format("MTR: >MCSyncReq * Not implemented %s", msg.raw[msg.app_payload_idx..].tohex()), 2)
+ log(format("MTR: >MCSyncReq * Not implemented %s", msg.raw[msg.app_payload_idx..].tohex()), 2)
return false # we don't explicitly ack the message
end
@@ -68,7 +68,7 @@ class Matter_Control_Message
# Not yet implemented
def parse_MsgCounterSyncRsp(msg)
var session = msg.session
- tasmota.log(format("MTR: >MCSyncRsp * Not implemented %s", msg.raw[msg.app_payload_idx..].tohex()), 2)
+ log(format("MTR: >MCSyncRsp * Not implemented %s", msg.raw[msg.app_payload_idx..].tohex()), 2)
return false # we don't explicitly ack the message
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_EventHandler.be b/lib/libesp32/berry_matter/src/embedded/Matter_EventHandler.be
new file mode 100644
index 000000000..c910077c6
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_EventHandler.be
@@ -0,0 +1,499 @@
+#
+# Matter_EventHandler.be - suppport for Matter Events
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+#@ solidify:Matter_EventHandler,weak
+#@ solidify:Matter_EventQueued,weak
+
+#################################################################################
+# Matter_Event_Queued class
+#
+# This class encapsulates any element within teh event queue
+# Takes a `Matter_EventDataIB`
+#
+# Invariants:
+# `priority` is guaranteed to be in range 0..2
+#################################################################################
+class Matter_EventQueued
+ # common elements
+ var endpoint
+ var cluster
+ var event_id
+ var is_urgent
+ var priority
+ var data0, data1, data2
+ var event_no
+ var epoch_timestamp
+ var raw_tlv # content encoded as full TLV
+
+ def init(event_no, endpoint, cluster, event_id, is_urgent, priority, data0, data1, data2)
+ self.event_no = event_no
+ self.endpoint = endpoint
+ self.cluster = cluster
+ self.event_id = event_id
+ self.is_urgent = is_urgent
+ self.priority = priority
+ # priority
+ if (self.priority < 0) self.priority = 0 end
+ if (self.priority > matter.EVENT_CRITICAL) self.priority = matter.EVENT_CRITICAL end
+ # epoch_time
+ self.epoch_timestamp = tasmota.rtc('utc')
+ if (self.epoch_timestamp < 1700000000)
+ self.epoch_timestamp = tasmota.rtc('config_time') # no valid time, take the last config time
+ end
+ self.data0 = data0
+ self.data1 = data1
+ self.data2 = data2
+ end
+
+ #################################################################################
+ # to_raw_bytes
+ #
+ # Computes a complete EventReportIB structure as bytes()
+ #
+ # It is memoized in self.raw_tlv, but is cleaned after sending messages to
+ # free up some space
+ def to_raw_bytes()
+ if (self.raw_tlv == nil)
+ self.raw_tlv = bytes(64)
+ self.eventreport2raw(self.raw_tlv, self.endpoint, self.cluster, self.event_id, self.is_urgent, self.priority, self.event_no, self.epoch_timestamp, self.data0, self.data1, self.data2)
+ # var event_report = matter.EventReportIB()
+ # var event_ib = matter.EventDataIB()
+ # event_report.event_data = event_ib
+ # var event_path = matter.EventPathIB()
+ # event_path.endpoint = self.endpoint
+ # event_path.cluster = self.cluster
+ # event_path.event = self.event_id
+ # event_path.is_urgent = self.is_urgent
+ # event_ib.path = event_path
+ # event_ib.priority = self.priority
+ # event_ib.event_number = self.event_no
+ # event_ib.epoch_timestamp = self.epoch_timestamp
+ # event_ib.data = matter.TLV.Matter_TLV_struct()
+ # if (self.data0 != nil) event_ib.data.add_obj(0, self.data0) end
+ # if (self.data1 != nil) event_ib.data.add_obj(1, self.data1) end
+ # if (self.data2 != nil) event_ib.data.add_obj(2, self.data2) end
+
+ # self.raw_tlv = event_report.to_TLV().tlv2raw() # bytes()
+ end
+ return self.raw_tlv
+ end
+
+ #############################################################
+ # eventreport2raw
+ #
+ # 15 = EventReportIB
+ # 3501 = EventDataIB
+ #
+ def eventreport2raw(raw, endpoint, cluster, event, is_urgent, priority, event_no, epoch_timestamp, data0, data1, data2)
+ # open struct EventReportIB
+ raw.add(0x15, 1) # add 15
+ # open sturct EventDataIB
+ raw.add(0x3501, -2) # add 3501
+ # add path
+ self.eventpath2raw(raw, endpoint, cluster, event, is_urgent)
+ # add EventNumber
+ raw.add(0x2701, -2) # 2701 FFFFFFFFFFFFFFFF
+ raw.add(event_no.low32(), 4) # int64 low part
+ raw.add(event_no.high32(), 4) # int64 high part
+ # priority
+ raw.add(0x2402, -2) # add 2402
+ raw.add(priority, 1) # add priority as one byte
+ # EpochTimestamp
+ raw.add(0x2603, -2) # add 2603
+ raw.add(epoch_timestamp, 4) # add epoch as 32 bits
+ # Data struct
+ raw.add(0x3507, -2) # add 3507
+
+ # data0
+ if (data0 != nil)
+ data0.tag_sub = 0
+ data0.tlv2raw(raw)
+ end
+ # data1
+ if (data1 != nil)
+ data1.tag_sub = 1
+ data1.tlv2raw(raw)
+ end
+ # data2
+ if (data2 != nil)
+ data2.tag_sub = 2
+ data2.tlv2raw(raw)
+ end
+
+ # close struct Data
+ raw.add(0x18, 1) # add 18
+ # close struct EventDataIB
+ raw.add(0x18, 1) # add 18
+ # close struct EventReportIB
+ raw.add(0x18, 1) # add 18
+ end
+
+ #############################################################
+ # eventpath2raw
+ #
+ # Encodes endpoint/cluster/attribute as `EventPathIB` elements
+ # Takes sub-tag
+ #
+ # 1 = EventPathIB
+ # 0 = Node
+ # 1 = Endpoint
+ # 2 = Cluster
+ # 3 = Event
+ # 4 = IsUrgent
+ #
+ # 3700 0 = LIST
+ # 2401 01 1 = 1U (U1)
+ # 2402 39 2 = 0x39U (U1)
+ # 2403 11 3 = 0x11U (U1)
+ # 2904 4 = true
+ # 18
+ def eventpath2raw(raw, endpoint, cluster, event, is_urgent)
+ # open struct
+ raw.add(0x3700, -2) # add 3700
+ # add endpoint
+ if endpoint <= 0xFF # endpoint is 16 bits max
+ raw.add(0x2401, -2) # add 2401
+ raw.add(endpoint, 1)
+ else
+ raw.add(0x2501, -2) # add 2501
+ raw.add(endpoint, 2)
+ end
+ # add cluster
+ if cluster <= 0xFF # cluster is 32 bits max
+ raw.add(0x2402, -2) # add 2402
+ raw.add(cluster, 1)
+ elif cluster <= 0xFFFF
+ raw.add(0x2502, -2) # add 2502
+ raw.add(cluster, 2)
+ else
+ raw.add(0x2602, -2) # add 2602
+ raw.add(cluster, 4)
+ end
+ # add event
+ if event <= 0xFF # cluster is 32 bits max
+ raw.add(0x2403, -2) # add 2403
+ raw.add(event, 1)
+ else
+ raw.add(0x2503, -2) # add 2503
+ raw.add(event, 2)
+ end
+ # IsUrgent
+ if is_urgent
+ raw.add(0x2904, -2) # add 2904
+ else
+ raw.add(0x2804, -2) # add 2804
+ end
+ # close
+ raw.add(0x18, 1) # add 18
+ end
+
+ #################################################################################
+ # compact
+ #
+ # Remove the local cache of `raw_tlv` to save space (it can always be recreated)
+ def compact()
+ self.raw_tlv = nil
+ end
+
+end
+matter.EventQueued = Matter_EventQueued
+
+# elements are made of `Matter_EventDataIB`
+# var path #
+ # var node # u64 as bytes
+ # var endpoint # u16
+ # var cluster # u32
+ # var event # u32
+ # var is_urgent # bool
+# var event_number # u64 as bytes
+# var priority # u8
+# # one of
+# var epoch_timestamp # u64
+# var system_timestamp # u64
+# var delta_epoch_timestamp # u64
+# var delta_system_timestamp # u64
+# # data
+# var data # any TLV
+
+# EVENT_DEBUG=0
+# EVENT_INFO=1
+# EVENT_CRITICAL=2
+
+#################################################################################
+# Matter_EventHandler class
+#
+# Keep track of events in 3 queues for DEBUG/INFO/CRITICAL levels
+#
+# Invariants:
+# All 3 queues (debug/info/critical) have events in sorted order by `event_no`
+#################################################################################
+class Matter_EventHandler
+ static var EVENT_NO_INCR = 1000 # counter increased when persisting, default value from Matter spec
+ static var EVENT_NO_KEY = "_matter_event_no"
+ static var EVENT_QUEUE_SIZE_MAX = 10 # each queue is 10 elements depth
+
+ # circular buffers
+ var queue_debug # queue of events for level DEBUG
+ var queue_info # queue of events for level INFO
+ var queue_critical # queue of events for level CRITICAL
+
+ var device # link back to matter_device top object
+ # Events
+ var counter_event_no # event number, monotonically increasing even after restarts
+ var counter_event_no_persisted # the nest number persisted for after the restart
+
+ def init(device)
+ self.device = device
+ self.queue_debug = []
+ self.queue_info = []
+ self.queue_critical = []
+ self.load_event_no_persisted() # initializes self.counter_event_no and self.counter_event_no_persisted
+ end
+
+ #####################################################################
+ # load_event_no_persisted
+ #
+ # Load the next acceptable event_no from `persist` and persist it
+ # with a predefined gap `self.EVENT_NO_INCR` (default 1000)
+ def load_event_no_persisted()
+ import persist
+ var event_no_str = str(persist.find(self.EVENT_NO_KEY, "0"))
+ self.counter_event_no = int64.fromstring(event_no_str)
+ self.counter_event_no_persisted = self.counter_event_no.add(self.EVENT_NO_INCR)
+ # save back next slot
+ persist.setmember(self.EVENT_NO_KEY, self.counter_event_no_persisted.tostring())
+ persist.save()
+ end
+
+ #####################################################################
+ # Enqueue event
+ #
+ # Takes `EventQueued`
+ #####################################################################
+ def queue_event(ev_queued)
+ var cur_prio = ev_queued.priority
+
+ # we reuse the same logic as connectedhomeip
+ # https://github.com/project-chip/connectedhomeip/blob/master/src/app/EventManagement.h
+ #
+ # Here is a copy of the original comment:
+
+ #---------------------------------------------------------------------------------
+ * A newly generated event will be placed in the lowest-priority (in practice
+ * DEBUG) buffer, the one associated with the first LogStorageResource. If
+ * there is no space in that buffer, space will be created by evicting the
+ * oldest event currently in that buffer, until enough space is available.
+ *
+ * When an event is evicted from a buffer, there are two possibilities:
+ *
+ * 1) If the next LogStorageResource has a priority that is no higher than the
+ * event's priority, the event will be moved to that LogStorageResource's
+ * buffer. This may in turn require events to be evicted from that buffer.
+ * 2) If the next LogStorageResource has a priority that is higher than the
+ * event's priority, then the event is just dropped.
+ *
+ * This means that LogStorageResources at a given priority level are reserved
+ * for events of that priority level or higher priority.
+ *
+ * As a simple example, assume there are only two priority levels, DEBUG and
+ * CRITICAL, and two LogStorageResources with those priorities. In that case,
+ * old CRITICAL events will not start getting dropped until both buffers are
+ * full, while old DEBUG events will start getting dropped once the DEBUG
+ * LogStorageResource buffer is full.
+ ---------------------------------------------------------------------------------#
+
+ # first step, always add to DEBUG queue
+ self.queue_debug.push(ev_queued)
+ # if DEBUG queue is full
+ if size(self.queue_debug) > self.EVENT_QUEUE_SIZE_MAX
+ # remove first (oldest element)
+ var ev_debug_removed = self.queue_debug.pop(0)
+ if ev_debug_removed.priority > matter.EVENT_DEBUG
+ # if removed item is higher than DEBUG, push to INFO queue
+ self.queue_info.push(ev_debug_removed)
+ # if INFO queue is full
+ if size(self.queue_info) > self.EVENT_QUEUE_SIZE_MAX
+ # remove first (oldest element)
+ var ev_info_removed = self.queue_info.pop(0)
+ if ev_info_removed.priority > matter.EVENT_INFO
+ # if removed item is higher than INFO, push to CRITICAL queue
+ self.queue_critical.push(ev_info_removed)
+ # if CRITICAL queue is full
+ if size(self.queue_critical) > self.EVENT_QUEUE_SIZE_MAX
+ # remove first (oldest element)
+ var ev_critical_removed = self.queue_critical.pop(0)
+ end
+ end
+ end
+ end
+ end
+ end
+
+ #############################################################
+ # dispatch every second click to sub-objects that need it
+ def every_second()
+ self.compact()
+ end
+
+ #####################################################################
+ # Enqueue event
+ #
+ # Remove the cached `raw_tlv` from all events in queues
+ # to save some space
+ def compact()
+ def compact_queue(q)
+ var i = 0
+ while i < size(q)
+ q[i].compact()
+ i += 1
+ end
+ end
+ compact_queue(self.queue_debug)
+ compact_queue(self.queue_info)
+ compact_queue(self.queue_critical)
+ end
+
+ #####################################################################
+ # Events handling
+ #####################################################################
+ # Get next event number
+ #
+ # Also make sure that we don't go above the persisted last number,
+ # in such case increase the persisted number and use the next chunk
+ def get_next_event_no()
+ self.counter_event_no = self.counter_event_no.add(1)
+ if self.counter_event_no >= self.counter_event_no_persisted
+ self.load_event_no_persisted() # force an increment like done during boot
+ end
+ return self.counter_event_no
+ end
+ # Get last event number (all events sent up to now are lower or equal than this value)
+ def get_last_event_no()
+ return self.counter_event_no
+ end
+
+ #####################################################################
+ # Dump events for debugging
+ #####################################################################
+ def dump()
+ tasmota.log(f"MTR: Events queues sizes: critical {size(self.queue_critical)}, info {size(self.queue_info)}, debug {size(self.queue_debug)}", 2)
+ var cnt = [0, 0, 0] # counters
+ for ev: self.queue_debug cnt[ev.priority] += 1 end
+ for ev: self.queue_info cnt[ev.priority] += 1 end
+ for ev: self.queue_critical cnt[ev.priority] += 1 end
+ tasmota.log(f"MTR: Events by types: critical {cnt[2]}, info {cnt[1]}, debug {cnt[0]}", 2)
+ end
+
+ #####################################################################
+ # find_min_no
+ #
+ # Find the next event number just above the provided value,
+ # or the smallest if nil is passed
+ #
+ # Arg:
+ # - event_min: minimal event number (strictly above),
+ # or `nil` if smallest number
+ #
+ # Returns:
+ # - event_no (int) or `nil` of none found
+ #####################################################################
+ def find_min_no(event_min_no)
+ # fail fast if `event_min_no` is the same as `counter_event_no`
+ # meaning that we dont have any more events since last report
+ if (event_min_no != nil) && (event_min_no >= self.counter_event_no)
+ return nil
+ end
+
+ #####################################################################
+ # Find the next available event right above `event_min_no`
+ #
+ # TODO: since queues are sorted, we can abort searching when we reach
+ # an event below `event_min_no`
+ #
+ # Arg
+ # - event_smallest: the event found up to now (from previous queues)
+ # - q: the queue oject
+ # - event_min_no: minimum acceptable event number (int64) or nil if any
+ def find_in_queue(event_smallest, q, event_min_no)
+ var i = size(q) - 1
+ while i >= 0
+ var cur_event = q[i]
+ # fail fast: since queues are sorted, we can abort searching when we reach an event below `event_min_no`
+ if (event_min_no != nil) && (cur_event.event_no <= event_min_no)
+ return event_smallest
+ end
+
+ # we know that event_no is in acceptable range, is it smaller?
+ if (event_smallest == nil) || (cur_event.event_no < event_smallest.event_no)
+ event_smallest = cur_event
+ end
+
+ i -= 1
+ end
+ return event_smallest
+ end
+
+ var event
+ # look in debug
+ event = find_in_queue(event, self.queue_debug, event_min_no)
+ # look in info
+ event = find_in_queue(event, self.queue_info, event_min_no)
+ # look in critical
+ event = find_in_queue(event, self.queue_critical, event_min_no)
+
+ return event
+ end
+
+ #############################################################
+ # generate a new event
+ #
+ def publish_event(endpoint, cluster, event_id, is_urgent, priority, data0, data1, data2)
+ var new_event = matter.EventQueued(self.get_next_event_no(), endpoint, cluster, event_id, is_urgent, priority, data0, data1, data2)
+ if tasmota.loglevel(3)
+ var data_str = ''
+ if (data0 != nil) data_str = str(data0) end
+ if (data1 != nil) data_str += ", " + str(data1) end
+ if (data2 != nil) data_str += ", " + str(data2) end
+ if (cluster == 0x0028) && (event_id == 0x00)
+ # put the software version in a readable format
+ var val = data0.val
+ data_str = format("%i.%i.%i.%i", (val >> 24) & 0xFF, (val >> 16) & 0xFF, (val >> 8) & 0xFF, val & 0xFF)
+ end
+ var priority_str = (priority == 2) ? "CRIT " : (priority == 1) ? "INFO " : "DEBUG "
+ var event_name = matter.get_event_name(cluster, event_id)
+ event_name = (event_name != nil) ? "(" + event_name + ") " : ""
+ log(f"MTR: +Add_Event ({priority_str}{new_event.event_no:8s}) [{new_event.endpoint:02X}]{new_event.cluster:04X}/{new_event.event_id:02X} {event_name}- {data_str}", 2)
+ end
+ self.queue_event(new_event)
+ # check if we have a subscription interested in this new event
+ self.device.message_handler.im.subs_shop.event_published(new_event)
+ end
+
+end
+matter.EventHandler = Matter_EventHandler
+
+#-
+
+# Unit tests
+
+
+-#
+
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be b/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be
index b77f1bd1a..a6f6ed3ed 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Fabric.be
@@ -193,7 +193,7 @@ class Matter_Fabric : Matter_Expirable
#
def counter_group_data_snd_next()
var next = self._counter_group_data_snd_impl.next()
- tasmota.log(f"MTR: . Counter_group_data_snd={next:i}", 3)
+ log(f"MTR: . Counter_group_data_snd={next:i}", 3)
if matter.Counter.is_greater(next, self.counter_group_data_snd)
self.counter_group_data_snd = next + self._GROUP_SND_INCR
if self.does_persist()
@@ -208,7 +208,7 @@ class Matter_Fabric : Matter_Expirable
#
def counter_group_ctrl_snd_next()
var next = self._counter_group_ctrl_snd_impl.next()
- tasmota.log(f"MTR: . Counter_group_ctrl_snd={next:i}", 3)
+ log(f"MTR: . Counter_group_ctrl_snd={next:i}", 3)
if matter.Counter.is_greater(next, self.counter_group_ctrl_snd)
self.counter_group_ctrl_snd = next + self._GROUP_SND_INCR
if self.does_persist()
@@ -222,13 +222,13 @@ class Matter_Fabric : Matter_Expirable
#############################################################
# Called before removal
def log_new_fabric()
- tasmota.log(format("MTR: +Fabric fab='%s' vendorid=%s", self.get_fabric_id().copy().reverse().tohex(), self.get_admin_vendor_name()), 3)
+ log(format("MTR: +Fabric fab='%s' vendorid=%s", self.get_fabric_id().copy().reverse().tohex(), self.get_admin_vendor_name()), 3)
end
#############################################################
# Called before removal
def before_remove()
- tasmota.log(format("MTR: -Fabric fab='%s' (removed)", self.get_fabric_id().copy().reverse().tohex()), 3)
+ log(format("MTR: -Fabric fab='%s' (removed)", self.get_fabric_id().copy().reverse().tohex()), 3)
end
#############################################################
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_remote.be b/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_remote.be
index b466dc83d..ee9620a6b 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_remote.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_HTTP_remote.be
@@ -49,6 +49,23 @@ class Matter_HTTP_remote : Matter_HTTP_async
# `nil` if current request is synchronous
var reachable # is the device reachable
var reachable_utc # last tick when the reachability was seen (avoids sending superfluous ping commands)
+
+ static var STATUS_PREFIX = [
+ "Status", # 0
+ "StatusPRM", # 1
+ "StatusFWR", # 2
+ "StatusLOG", # 3
+ "StatusMEM", # 4
+ "StatusNET", # 5
+ "StatusMQT", # 6
+ "StatusTIM", # 7
+ nil, # 8 is deprecated and synonym of 10
+ "StatusPTH", # 9
+ "StatusSNS", # 10
+ "StatusSTS", # 11
+ "StatusSTK", # 12
+ "StatusSHT" # 13
+ ]
# information gathered about the remote device (name, version...)
static var UPDATE_TIME = 5000 # update every 5s until first response
@@ -73,9 +90,9 @@ class Matter_HTTP_remote : Matter_HTTP_async
self.info = {}
if self.device
# we need different callbacks per command (don't create a single one for both calls)
- self.add_schedule(self.UPDATE_CMD0, self.UPDATE_TIME, / status,payload,cmd -> self.parse_status_response(status,payload,cmd))
- self.add_schedule(self.UPDATE_CMD2, self.UPDATE_TIME, / status,payload,cmd -> self.parse_status_response(status,payload,cmd))
- self.add_schedule(self.UPDATE_CMD5, self.UPDATE_TIME, / status,payload,cmd -> self.parse_status_response(status,payload,cmd))
+ self.add_schedule(self.UPDATE_CMD0, self.UPDATE_TIME, / status,payload,cmd -> self.parse_status_response_and_call_method(status,payload,cmd,self,self.parse_status_http))
+ self.add_schedule(self.UPDATE_CMD2, self.UPDATE_TIME, / status,payload,cmd -> self.parse_status_response_and_call_method(status,payload,cmd,self,self.parse_status_http))
+ self.add_schedule(self.UPDATE_CMD5, self.UPDATE_TIME, / status,payload,cmd -> self.parse_status_response_and_call_method(status,payload,cmd,self,self.parse_status_http))
end
end
@@ -87,28 +104,40 @@ class Matter_HTTP_remote : Matter_HTTP_async
#############################################################
# parse response for `Status` and `Status 2`
- def parse_status_response(status, payload, cmd)
+ #
+ # Payload can be a string (unparsed) or a map
+ def parse_status_response_and_call_method(status, payload, cmd, obj, method)
if status != nil && status > 0
# device is known to be reachable
self.device_is_alive(true)
- import json
- var j = json.load(payload)
- var code = nil # index of Status
- if j
- # filter
- if j.contains("Status") # Status 0 (actually `Status` wihtout any number)
- j = j["Status"]
- code = 0
- elif j.contains("StatusFWR") # Status 2
- j = j["StatusFWR"]
- code = 2
- elif j.contains("StatusNET") # Status 5
- j = j["StatusNET"]
- code = 5
+ var j = payload
+ if type(j) == 'string'
+ import json
+ j = json.load(j)
+ end
+ var code = nil # index of Status, nil of none
+ if j != nil
+
+ # detect any Status prefix and compute Status
+ var i = 0
+ var prefix_tab = self.STATUS_PREFIX # move to local variable to avoid many dereferencing
+ while i < size(prefix_tab)
+ var status_prefix = prefix_tab[i]
+ if status_prefix != nil
+ if j.contains(status_prefix)
+ j = j[status_prefix]
+ code = i
+ break
+ end
+ end
+ i = i + 1
end
- # convert to shadow values
- self.parse_update(j, code) # call parser
+
+ # dispatch to method in charge of converting to shadow values
+ method(obj, j, code)
+ else
+ log(f"MTR: *** failed to parse JSON response {payload=}", 3)
end
end
end
@@ -116,8 +145,8 @@ class Matter_HTTP_remote : Matter_HTTP_async
#############################################################
# Stub for updating shadow values (local copies of what we published to the Matter gateway)
#
- # This call is synnchronous and blocking.
- def parse_update(data, index)
+ # This call is synchronous and blocking.
+ def parse_status_http(data, index)
var changed = false
if index == 0 # Status
var device_name = data.find("DeviceName") # we consider 'Tasmota' as the non-information default
@@ -130,7 +159,7 @@ class Matter_HTTP_remote : Matter_HTTP_async
else
self.info.remove("name")
end
- tasmota.log(f"MTR: update '{self.addr}' name='{device_name}'", 3)
+ log(f"MTR: update '{self.addr}' name='{device_name}'", 3)
changed = true
end
@@ -146,7 +175,7 @@ class Matter_HTTP_remote : Matter_HTTP_async
else
self.info.remove('version')
end
- tasmota.log(f"MTR: update '{self.addr}' version='{version}'", 3)
+ log(f"MTR: update '{self.addr}' version='{version}'", 3)
changed = true
end
@@ -156,7 +185,7 @@ class Matter_HTTP_remote : Matter_HTTP_async
else
self.info.remove('hardware')
end
- tasmota.log(f"MTR: update '{self.addr}' hardware='{hardware}'", 3)
+ log(f"MTR: update '{self.addr}' hardware='{hardware}'", 3)
changed = true
end
@@ -172,7 +201,7 @@ class Matter_HTTP_remote : Matter_HTTP_async
else
self.info.remove("mac")
end
- tasmota.log(f"MTR: update '{self.addr}' mac='{mac}'", 3)
+ log(f"MTR: update '{self.addr}' mac='{mac}'", 3)
changed = true
end
@@ -254,7 +283,7 @@ class Matter_HTTP_remote : Matter_HTTP_async
self.current_cmd = cmd
var cmd_url = "/cm?cmnd=" + string.tr(cmd, ' ', '+')
- tasmota.log(format("MTR: HTTP async request 'http://%s:%i%s'", self.addr, self.port, cmd_url), 3)
+ log(format("MTR: HTTP async request 'http://%s:%i%s'", self.addr, self.port, cmd_url), 4)
var ret = self.begin(cmd_url)
end
@@ -273,11 +302,11 @@ class Matter_HTTP_remote : Matter_HTTP_async
self.current_cmd = nil
var cmd_url = "/cm?cmnd=" + string.tr(cmd, ' ', '+')
- tasmota.log(format("MTR: HTTP sync request 'http://%s:%i%s'", self.addr, self.port, cmd_url), 3)
+ log(format("MTR: HTTP sync request 'http://%s:%i%s'", self.addr, self.port, cmd_url), 4)
var ret = super(self).begin_sync(cmd_url, timeout)
var payload_short = (ret) ? ret : 'nil'
if size(payload_short) > 30 payload_short = payload_short[0..29] + '...' end
- tasmota.log(format("MTR: HTTP sync-resp in %i ms from %s: [%i] '%s'", tasmota.millis() - self.time_start, self.addr, size(self.payload), payload_short), 3)
+ log(format("MTR: HTTP sync-resp in %i ms from %s: [%i] '%s'", tasmota.millis() - self.time_start, self.addr, size(self.payload), payload_short), 3)
return ret
end
@@ -285,17 +314,17 @@ class Matter_HTTP_remote : Matter_HTTP_async
if self.current_cmd == nil return end # do nothing if sync request
var payload_short = (self.payload != nil) ? self.payload : 'nil'
if size(payload_short) > 30 payload_short = payload_short[0..29] + '...' end
- tasmota.log(format("MTR: HTTP async-resp in %i ms from %s: [%i] '%s'", tasmota.millis() - self.time_start, self.addr, size(self.payload), payload_short), 3)
+ log(format("MTR: HTTP async-resp in %i ms from %s: [%i] '%s'", tasmota.millis() - self.time_start, self.addr, size(self.payload), payload_short), 3)
self.dispatch_cb(self.http_status, self.payload)
end
def event_http_failed()
if self.current_cmd == nil return end # do nothing if sync request
- tasmota.log("MTR: HTTP failed", 3)
+ log("MTR: HTTP failed", 3)
self.dispatch_cb(self.http_status, nil)
end
def event_http_timeout()
if self.current_cmd == nil return end # do nothing if sync request
- tasmota.log(format("MTR: HTTP timeout http_status=%i phase=%i tcp_status=%i size_payload=%i", self.http_status, self.phase, self.status, size(self.payload)), 3)
+ log(format("MTR: HTTP timeout http_status=%i phase=%i tcp_status=%i size_payload=%i", self.http_status, self.phase, self.status, size(self.payload)), 3)
self.dispatch_cb(self.http_status, nil)
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be
index 1e4ca0a78..52949177b 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be
@@ -52,47 +52,51 @@ class Matter_IM
if opcode == 0x02 # Read Request
var read_request_solo = self.read_request_solo.from_raw(msg.raw, msg.app_payload_idx)
if read_request_solo != nil
- # tasmota.log(f"MTR: process_incoming {read_request_solo=}")
+ # log(f"MTR: process_incoming {read_request_solo=}")
return self.process_read_request_solo(msg, read_request_solo)
end
elif opcode == 0x08 # Invoke Request
var invoke_request_solo = self.invoke_request_solo.from_raw(msg.raw, msg.app_payload_idx)
- # tasmota.log(f"MTR: {invoke_request_solo=} {msg.raw[msg.app_payload_idx .. ].tohex()} {msg.app_payload_idx=} {msg.raw.tohex()}")
+ # log(f"MTR: {invoke_request_solo=} {msg.raw[msg.app_payload_idx .. ].tohex()} {msg.app_payload_idx=} {msg.raw.tohex()}")
if invoke_request_solo != nil
return self.process_invoke_request_solo(msg, invoke_request_solo)
end
end
- # tasmota.log("MTR: received IM message " + matter.inspect(msg), 3)
+ # log("MTR: received IM message " + matter.inspect(msg), 3)
var val = matter.TLV.parse(msg.raw, msg.app_payload_idx)
- # tasmota.log("MTR: IM TLV: " + str(val), 3)
+ # log("MTR: IM TLV: " + str(val), 3)
# var InteractionModelRevision = val.findsubval(0xFF)
- # tasmota.log("MTR: InteractionModelRevision=" + (InteractionModelRevision != nil ? str(InteractionModelRevision) : "nil"), 4)
+ # log("MTR: InteractionModelRevision=" + (InteractionModelRevision != nil ? str(InteractionModelRevision) : "nil"), 4)
if opcode == 0x01 # Status Response
return self.process_status_response(msg, val)
elif opcode == 0x02 # Read Request
- # self.send_ack_now(msg) # to improve latency, we don't automatically Ack on invoke request
- return self.process_read_request(msg, val)
+ self.send_ack_now(msg)
+ return self.process_read_request_pull(msg, val)
elif opcode == 0x03 # Subscribe Request
self.send_ack_now(msg)
return self.subscribe_request(msg, val)
elif opcode == 0x04 # Subscribe Response
- return self.subscribe_response(msg, val)
+ # return self.subscribe_response(msg, val)
+ return false # not implemented for Matter device
elif opcode == 0x05 # Report Data
- return self.report_data(msg, val)
+ # return self.report_data(msg, val)
+ return false # not implemented for Matter device
elif opcode == 0x06 # Write Request
self.send_ack_now(msg)
return self.process_write_request(msg, val)
elif opcode == 0x07 # Write Response
- return self.process_write_response(msg, val)
+ # return self.process_write_response(msg, val) # not implemented for Matter device
+ return false
elif opcode == 0x08 # Invoke Request
# self.send_ack_now(msg) # to improve latency, we don't automatically Ack on invoke request
return self.process_invoke_request(msg, val)
elif opcode == 0x09 # Invoke Response
- return self.process_invoke_response(msg, val)
+ # return self.process_invoke_response(msg, val)
+ return false # not implemented for Matter device
elif opcode == 0x0A # Timed Request
return self.process_timed_request(msg, val)
end
@@ -108,9 +112,13 @@ class Matter_IM
def process_incoming_ack(msg)
# check if there is an exchange_id interested in receiving this
var message = self.find_sendqueue_by_exchangeid(msg.exchange_id)
- # tasmota.log(format("MTR: process_incoming_ack exch=%i message=%i", msg.exchange_id, message != nil ? 1 : 0), 4)
+ # log(format("MTR: process_incoming_ack exch=%i message=%i", msg.exchange_id, message != nil ? 1 : 0), 3)
if message
- return message.ack_received(msg) # dispatch to IM_Message
+ var ret = message.ack_received(msg) # dispatch to IM_Message
+ if message.finished
+ self.remove_sendqueue_by_exchangeid(msg.exchange_id)
+ end
+ return ret
end
return false
end
@@ -134,13 +142,12 @@ class Matter_IM
while idx < size(self.send_queue)
var message = self.send_queue[idx]
- if !message.finish && message.ready
+ if !message.finished && message.ready
message.send_im(responder) # send message
end
- if message.finish
- tasmota.log("MTR: remove IM message exch="+str(message.resp.exchange_id), 4)
- self.send_queue.remove(idx)
+ if message.finished
+ self.remove_sendqueue_by_exchangeid(message.resp.exchange_id)
else
idx += 1
end
@@ -166,11 +173,12 @@ class Matter_IM
#############################################################
# find in send_queue by exchangeid
#
- def remove_sendqueue_by_exchangeid(exchangeid)
- if exchangeid == nil return end
+ def remove_sendqueue_by_exchangeid(exchange_id)
+ if exchange_id == nil return end
var idx = 0
while idx < size(self.send_queue)
- if self.send_queue[idx].get_exchangeid() == exchangeid
+ if self.send_queue[idx].get_exchangeid() == exchange_id
+ # log(f"MTR: remove IM message exch={exchange_id}", 3)
self.send_queue.remove(idx)
else
idx += 1
@@ -208,11 +216,11 @@ class Matter_IM
if message
return message.status_ok_received(msg) # re-arm the sending of next packets for the same exchange
else
- tasmota.log(format("MTR: >OK (%6i) exch=%i not found", msg.session.local_session_id, msg.exchange_id), 4) # don't show 'SUCCESS' to not overflow logs with non-information
+ log(format("MTR: >OK (%6i) exch=%i not found", msg.session.local_session_id, msg.exchange_id), 4) # don't show 'SUCCESS' to not overflow logs with non-information
end
else
# error
- tasmota.log(format("MTR: >Status ERROR = 0x%02X", status), 3)
+ log(format("MTR: >Status ERROR = 0x%02X", status), 3)
if message
message.status_error_received(msg)
self.remove_sendqueue_by_exchangeid(msg.exchange_id)
@@ -222,169 +230,83 @@ class Matter_IM
end
#############################################################
- # Inner code shared between read_attributes and subscribe_request
+ # read_single_attribute_to_bytes
#
- # query: `ReadRequestMessage` or `SubscribeRequestMessage`
- def _inner_process_read_request(session, query, msg, no_log)
-
- ### Inner function to be iterated upon
- # ret is the ReportDataMessage list to send back
- # ctx is the context with endpoint/cluster/attribute
- # direct is true if error is reported, false if error is silently ignored
- #
- # if `pi` is nil, just report the status for ctx.status
- #
- # should return true if answered, false if passing to next handler
- def read_single_attribute(ret, pi, ctx, direct)
- var TLV = matter.TLV
- var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute)
+ # Takes a concrete context (endpoint/cluster/attribute)
+ # and a plugin reference, return either the bytes object
+ # or an array of bytes() if the response does not fit in
+ # a single packet
+ #
+ # `pi` is the plugin object
+ # if `pi` is nil, just report the status for ctx.status
+ # `ctx` is the context with endpoint/cluster/attribute, `cts.status` is non-nil for direct request and contains the error message to show
+ # `session` is the current session
+ # `force_log` is false, then don't log normal values - typically used to not log wildcard requests
+ #
+ # return `true` if
+ def read_single_attribute_to_bytes(pi, ctx, session, force_log)
+ var TLV = matter.TLV
+ var attr_name
+ if tasmota.loglevel(3)
+ attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute)
attr_name = attr_name ? " (" + attr_name + ")" : ""
+ end
- # Special case to report unsupported item, if pi==nil
- ctx.status = nil # reset status, just in case
- var res = (pi != nil) ? pi.read_attribute(session, ctx, self.tlv_solo) : nil
- var found = true # stop expansion since we have a value
- var a1_raw_or_list # contains either a bytes() buffer to append, or a list of bytes(), or nil
- if res != nil
- var res_str = ""
- if !no_log
- res_str = res.to_str_val() # get the value with anonymous tag before it is tagged, for logging
- end
+ # Special case to report unsupported item, if pi==nil
+ var direct = (ctx.status != nil) # memorize if the request is 'direct', ctx.status may be changed later
+ var res
+ var ret_raw_or_list # contains either a bytes() buffer to append, or a list of bytes(), or nil
+ if (pi != nil)
+ res = pi.read_attribute(session, ctx, self.tlv_solo)
+ end
- # check if too big to encode as a single packet
- if (res.is_list || res.is_array) && res.encode_len() > matter.IM_ReportData.MAX_MESSAGE
- # tasmota.log(f"MTR: >>>>>> long response", 3)
- a1_raw_or_list = [] # we return a list of block
- var a1_raw = bytes(48)
- var empty_list = TLV.Matter_TLV_array()
- self.attributedata2raw(a1_raw, ctx, empty_list, false)
- a1_raw_or_list.push(a1_raw)
- # tasmota.log(f"MTR: >>>>>> long response global DELETE {a1_raw.tohex()}", 3)
+ # dispatch depending on the result of the `read_attribute` method
+ if res != nil # we got an actual value
+ # get the value with anonymous tag before it is tagged, for logging
+ var res_str = ""
+ if tasmota.loglevel(3) && force_log
+ res_str = res.to_str_val()
+ end
- for elt:res.val
- a1_raw = bytes(48)
- # var list_item = TLV.Matter_TLV_array()
- # list_item.val.push(elt)
- self.attributedata2raw(a1_raw, ctx, elt, true #- add ListIndex:null -#)
- # tasmota.log(f"MTR: >>>>>> long response global ADD {a1_raw.tohex()}", 3)
- a1_raw_or_list.push(a1_raw)
- end
- # tasmota.log(f"MTR: >>>>>> long response global {a1_raw_or_list}", 3)
- else
- # normal encoding
- # encode directly raw bytes()
- a1_raw_or_list = bytes(48) # pre-reserve 48 bytes
- self.attributedata2raw(a1_raw_or_list, ctx, res)
- end
+ # check if too big to encode as a single packet, only for list and array
+ if (res.is_list || res.is_array) && (res.encode_len() > matter.IM_ReportData_Pull.MAX_MESSAGE)
+ ret_raw_or_list = [] # we return a list of block
+ var a1_raw = bytes(48)
+ var empty_list = TLV.Matter_TLV_array()
+ self.attributedata2raw(a1_raw, ctx, empty_list, false)
+ ret_raw_or_list.push(a1_raw)
- if !no_log
- tasmota.log(f"MTR: >Read_Attr ({session.local_session_id:6i}) {ctx}{attr_name} - {res_str}", 3)
- end
- elif ctx.status != nil
- if direct # we report an error only if a concrete direct read, not with wildcards
- # encode directly raw bytes()
- a1_raw_or_list = bytes(48) # pre-reserve 48 bytes
- self.attributestatus2raw(a1_raw_or_list, ctx, ctx.status)
-
- if tasmota.loglevel(3)
- tasmota.log(format("MTR: >Read_Attr (%6i) %s%s - STATUS: 0x%02X %s", session.local_session_id, str(ctx), attr_name, ctx.status, ctx.status == matter.UNSUPPORTED_ATTRIBUTE ? "UNSUPPORTED_ATTRIBUTE" : ""), 3)
- end
+ for elt : res.val
+ a1_raw = bytes(48)
+ # var list_item = TLV.Matter_TLV_array()
+ # list_item.val.push(elt)
+ self.attributedata2raw(a1_raw, ctx, elt, true #- add ListIndex:null -#)
+ ret_raw_or_list.push(a1_raw)
end
else
- if !no_log
- tasmota.log(format("MTR: >Read_Attr (%6i) %s%s - IGNORED", session.local_session_id, str(ctx), attr_name), 3)
- end
- # ignore if content is nil and status is undefined
- if direct
- found = false
- end
+ # normal encoding
+ # encode directly raw bytes()
+ ret_raw_or_list = bytes(48) # pre-reserve 48 bytes
+ self.attributedata2raw(ret_raw_or_list, ctx, res)
end
- # a1_raw_or_list if either nil, bytes(), of list(bytes())
- var idx = isinstance(a1_raw_or_list, list) ? 0 : nil # index in list, or nil if non-list
- while a1_raw_or_list != nil
- var elt = (idx == nil) ? a1_raw_or_list : a1_raw_or_list[idx] # dereference
+ if tasmota.loglevel(3) && force_log
+ log(f"MTR: >Read_Attr ({session.local_session_id:6i}) {ctx}{attr_name} - {res_str}", 3)
+ end
+ # below, we didn't have a response from `read_attribute`, check if ctx.status contains some information
+ elif ctx.status != nil
+ if direct # we report an error only if a concrete direct read, not with wildcards
+ # encode directly raw bytes()
+ ret_raw_or_list = bytes(48) # pre-reserve 48 bytes
+ self.attributestatus2raw(ret_raw_or_list, ctx, ctx.status)
- if size(ret.attribute_reports) == 0
- ret.attribute_reports.push(elt) # push raw binary instead of a TLV
- else # already blocks present, see if we can add to the latest, or need to create a new block
- var last_block = ret.attribute_reports[-1]
- if size(last_block) + size(elt) <= matter.IM_ReportData.MAX_MESSAGE
- # add to last block
- last_block .. elt
- else
- ret.attribute_reports.push(elt) # push raw binary instead of a TLV
- end
- end
-
- if idx == nil
- a1_raw_or_list = nil # stop loop
- else
- idx += 1
- if idx >= size(a1_raw_or_list)
- a1_raw_or_list = nil # stop loop
- end
+ if tasmota.loglevel(3)
+ log(format("MTR: >Read_Attr (%6i) %s%s - STATUS: 0x%02X %s", session.local_session_id, str(ctx), attr_name, ctx.status, ctx.status == matter.UNSUPPORTED_ATTRIBUTE ? "UNSUPPORTED_ATTRIBUTE" : ""), 3)
end
end
-
- # check if we still have enough room in last block
- # if a1_raw_or_list # do we have bytes to add, and it's not zero size
- # if size(ret.attribute_reports) == 0
- # ret.attribute_reports.push(a1_raw_or_list) # push raw binary instead of a TLV
- # else # already blocks present, see if we can add to the latest, or need to create a new block
- # var last_block = ret.attribute_reports[-1]
- # if size(last_block) + size(a1_raw_or_list) <= matter.IM_ReportData.MAX_MESSAGE
- # # add to last block
- # last_block .. a1_raw_or_list
- # else
- # ret.attribute_reports.push(a1_raw_or_list) # push raw binary instead of a TLV
- # end
- # end
- # end
-
- return found # return true if we had a match
end
- var endpoints = self.device.get_active_endpoints()
- # structure is `ReadRequestMessage` 10.6.2 p.558
- var ctx = matter.Path()
- ctx.msg = msg
-
- # prepare the response
- var ret = matter.ReportDataMessage()
- # ret.suppress_response = true
- ret.attribute_reports = []
-
- for q:query.attributes_requests
- # need to do expansion here
- ctx.endpoint = q.endpoint
- ctx.cluster = q.cluster
- ctx.attribute = q.attribute
- ctx.fabric_filtered = query.fabric_filtered
- ctx.status = matter.UNSUPPORTED_ATTRIBUTE #default error if returned `nil`
-
- # expand endpoint
- if ctx.endpoint == nil || ctx.cluster == nil || ctx.attribute == nil
- # we need expansion, log first
- if ctx.cluster != nil && ctx.attribute != nil
- var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute)
- tasmota.log(format("MTR: >Read_Attr (%6i) %s", session.local_session_id, str(ctx) + (attr_name ? " (" + attr_name + ")" : "")), 3)
- else
- tasmota.log(format("MTR: >Read_Attr (%6i) %s", session.local_session_id, str(ctx)), 3)
- end
-
- end
-
- # implement concrete expansion
- self.device.process_attribute_expansion(ctx,
- / pi, ctx, direct -> read_single_attribute(ret, pi, ctx, direct)
- )
- end
-
- # tasmota.log("MTR: ReportDataMessage=" + str(ret), 3)
- # tasmota.log("MTR: ReportDataMessageTLV=" + str(ret.to_TLV()), 3)
-
- return ret
+ return ret_raw_or_list
end
#############################################################
@@ -397,7 +319,7 @@ class Matter_IM
# 0 = EnableTagCompression bool opt
# 1 = Node
# 2 = Endpoint
- # 3 = Cluste
+ # 3 = Cluster
# 4 = Attribute
# 5 = ListIndex (opt)
#
@@ -672,28 +594,163 @@ class Matter_IM
end
#############################################################
- # process IM 0x02 Read Request
+ # process IM 0x02 Read Request (Pull Mode)
#
# val is the TLV structure
+ #
+ # This version lazily reads attributes when building the response packets
+ #
# returns `true` if processed, `false` if silently ignored,
# or raises an exception
- def process_read_request(msg, val)
- matter.profiler.log("read_request_start")
- # matter.profiler.log(str(val))
+ def process_read_request_pull(msg, val)
var query = matter.ReadRequestMessage().from_TLV(val)
- # matter.profiler.log(str(query))
- if query.attributes_requests != nil
- var ret = self._inner_process_read_request(msg.session, query, msg)
- self.send_report_data(msg, ret)
- end
+ var generator_or_arr = self.process_read_or_subscribe_request_pull(query, msg)
+ var event_generator_or_arr = self.process_read_or_subscribe_request_event_pull(query, msg)
+
+ self.send_queue.push(matter.IM_ReportData_Pull(msg, generator_or_arr, event_generator_or_arr))
return true
end
+
#############################################################
- # process IM 0x02 Read Request
+ # process_read_or_subscribe_request_pull
+ #
+ # This version lazily reads attributes when building the response packets
+ #
+ def process_read_or_subscribe_request_pull(query, msg)
+ if (query.attributes_requests != nil)
+ var generator_or_arr # single path generator (common case) or array of generators
+
+ # structure is `ReadRequestMessage` 10.6.2 p.558
+ var size_requests = (query.attributes_requests ? size(query.attributes_requests) : 0)
+ # log(f"MTR: process_read_or_subscribe_request_pull {size_requests=}")
+ if (size_requests > 1)
+ generator_or_arr = []
+ end
+
+ for q : query.attributes_requests
+ var gen = matter.PathGenerator(self.device)
+ gen.start(q.endpoint, q.cluster, q.attribute, query.fabric_filtered)
+
+ if (size_requests > 1)
+ generator_or_arr.push(gen)
+ else
+ generator_or_arr = gen
+ end
+
+ if tasmota.loglevel(3)
+ # log read request if it contains expansion (wildcard), single reads are logged at concrete time
+ if q.endpoint == nil || q.cluster == nil || q.attribute == nil
+ # we need expansion, log first
+ var ctx = matter.Path()
+ ctx.endpoint = q.endpoint
+ ctx.cluster = q.cluster
+ ctx.attribute = q.attribute
+ ctx.fabric_filtered = query.fabric_filtered
+ var ctx_str = str(ctx)
+
+ if q.cluster != nil && q.attribute != nil
+ var attr_name = matter.get_attribute_name(q.cluster, q.attribute)
+ log(format("MTR: >Read_Attr (%6i) %s", msg.session.local_session_id, ctx_str + (attr_name ? " (" + attr_name + ")" : "")), 3)
+ else
+ log(format("MTR: >Read_Attr (%6i) %s", msg.session.local_session_id, ctx_str), 3)
+ end
+ end
+ end
+ end
+
+ return generator_or_arr
+ end
+ return nil
+ end
+
+ #############################################################
+ # parse_event_filters_min_no
+ #
+ # Parse an object EventFilters and extract the minimum event
+ # number (as int64) or nil if none
+ static def parse_event_filters_min_no(event_filters, node_id)
+ var event_no_min = nil # do we have a filter for minimum event_no (int64 or nil)
+ if event_filters != nil
+ for filter: event_filters # filter is an instance of `EventFilterIB`
+ # tasmota.log(f"MTR: EventFilter {filter=} {node_id=}", 3)
+ var filter_node = int64.toint64(filter.node) # nil or int64
+ if (filter_node && node_id) # there is a filter on node-id
+ if filter.node.tobytes() != node_id # the node id doesn't match
+ tasmota.log(f"MTR: node_id filter {filter_node.tobytes().tohex()} doesn't match {node_id.tohex()}")
+ continue
+ end
+ end
+ # specified minimum value
+ var new_event_no_min = int64.toint64(filter.event_min)
+ if (event_no_min == nil) || (event_no_min < new_event_no_min)
+ event_no_min = new_event_no_min
+ end
+ end
+ end
+ return event_no_min
+ end
+
+ #############################################################
+ # process_read_or_subscribe_request_event_pull
+ #
+ # This version converts event request to an EventGenerator, a list of EventGenerator or nil
+ #
+ # or raises an exception
+ def process_read_or_subscribe_request_event_pull(query, msg)
+ if (query.event_requests != nil)
+ var generator_or_arr # single path generator (common case) or array of generators
+ var node_id = (msg != nil) ? msg.get_node_id() : nil
+
+ # structure is `ReadRequestMessage` 10.6.2 p.558
+ var size_requests = (query.event_requests ? size(query.event_requests) : 0)
+ # log(f"MTR: process_read_or_subscribe_request_pull {size_requests=}")
+ if (size_requests > 1)
+ generator_or_arr = []
+ end
+
+ # parse event requests
+ # scan event filters
+ var event_no_min = self.parse_event_filters_min_no(query.event_filters, node_id)
+
+ # scan event filters
+ if query.event_requests
+ for q : query.event_requests
+ var gen = matter.EventGenerator(self.device)
+ gen.start(q.endpoint, q.cluster, q.event, event_no_min)
+
+ if (size_requests > 1)
+ generator_or_arr.push(gen)
+ else
+ generator_or_arr = gen
+ end
+
+ if tasmota.loglevel(3)
+ var event_name = ""
+ if (q.cluster != nil) && (q.event != nil)
+ event_name = matter.get_event_name(q.cluster, q.event)
+ event_name = (event_name != nil) ? "(" + event_name + ") " : ""
+ end
+ var ep_str = (q.endpoint != nil) ? f"{q.endpoint:02X}" : "**"
+ var cl_str = (q.cluster != nil) ? f"{q.cluster:04X}" : "****"
+ var ev_str = (q.event != nil) ? f"{q.event:02X}" : "**"
+ var event_no_min_str = (event_no_min != nil) ? f" (>{event_no_min})" : ""
+ log(f"MTR: >Read_Event({msg.session.local_session_id:6i}) [{ep_str}]{cl_str}/{ev_str} {event_name}{event_no_min_str}", 3)
+ end
+ end
+ end
+
+ return generator_or_arr
+ end
+ return nil
+ end
+
+ #############################################################
+ # process IM 0x02 Read Request - solo attribute
+ #
+ # ctx is the decoded context (cluster/attribute)
#
- # val is the TLV structure
# returns `true` if processed, `false` if silently ignored,
# or raises an exception
def process_read_request_solo(msg, ctx)
@@ -702,28 +759,25 @@ class Matter_IM
ctx.msg = msg
# find pi for this endpoint/cluster/attribute
- var pi = self.device.process_attribute_read_solo(ctx)
+ var pi = self.device.resolve_attribute_read_solo(ctx)
var res = nil
- # matter.profiler.log("read_request_solo pi ok")
- # tasmota.log(f"MTR: process_read_request_solo {pi=}")
var raw # this is the bytes() block we need to add to response (or nil)
if pi != nil
ctx.status = matter.UNSUPPORTED_ATTRIBUTE # new fallback error
res = pi.read_attribute(msg.session, ctx, self.tlv_solo)
end
- matter.profiler.log("read_request_solo read done")
if res != nil
# check if the payload is a complex structure and too long to fit in a single response packet
- if (res.is_list || res.is_array) && res.encode_len() > matter.IM_ReportData.MAX_MESSAGE
+ if (res.is_list || res.is_array) && (res.encode_len() > matter.IM_ReportData_Pull.MAX_MESSAGE)
# revert to standard
# the attribute will be read again, but it's hard to avoid it
res = nil # indicated to GC that we don't need it again
- tasmota.log(f"MTR: Response to big, revert to non-solo", 3)
+ log(f"MTR: Response to big, revert to non-solo", 3)
var val = matter.TLV.parse(msg.raw, msg.app_payload_idx)
- return self.process_read_request(msg, val)
+ return self.process_read_request_pull(msg, val)
end
# encode directly raw bytes()
raw = bytes(48) # pre-reserve 48 bytes
@@ -752,7 +806,7 @@ class Matter_IM
raw.add(0x18, 1) # add 18
else
- tasmota.log(f"MTR: >Read_Attr ({msg.session.local_session_id:6i}) {ctx} - IGNORED", 3)
+ log(f"MTR: >Read_Attr ({msg.session.local_session_id:6i}) {ctx} - IGNORED", 3)
return false
end
@@ -765,42 +819,42 @@ class Matter_IM
resp.encode_frame(raw, msg_raw) # payload in cleartext
resp.encrypt()
if tasmota.loglevel(4)
- tasmota.log(format("MTR: Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - {res_str}", 3)
- # tasmota.log(f"MTR: {res.tlv2raw().tohex()}", 3)
+ log(f"MTR: >Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - {res_str}", 3)
+ # log(f"MTR: {res.tlv2raw().tohex()}", 3)
end
# if matter.profiler.active && tasmota.loglevel(3)
- # tasmota.log(f"MTR: {raw=}", 3) # TODO remove before flight
+ # log(f"MTR: {raw=}", 3) # TODO remove before flight
# end
elif ctx.status != nil
var unsupported_attribute = (ctx.status == matter.UNSUPPORTED_ATTRIBUTE ? "UNSUPPORTED_ATTRIBUTE" : "")
if tasmota.loglevel(3)
- tasmota.log(f"MTR: >Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - STATUS: 0x{ctx.status:02X} {unsupported_attribute}", 3)
+ log(f"MTR: >Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - STATUS: 0x{ctx.status:02X} {unsupported_attribute}", 3)
end
# if matter.profiler.active && tasmota.loglevel(3)
- # tasmota.log(f"MTR: {raw=}", 3) # TODO remove before flight
+ # log(f"MTR: {raw=}", 3) # TODO remove before flight
# end
else
if tasmota.loglevel(3)
- tasmota.log(f"MTR: >Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - IGNORED", 3)
+ log(f"MTR: >Read_Attr1({msg.session.local_session_id:6i}) {ctx}{attr_name} - IGNORED", 3)
end
end
- # matter.profiler.log("read_request_solo end")
- return true
+ return true # always consider succesful even if empty
end
#############################################################
@@ -810,34 +864,36 @@ class Matter_IM
var query = matter.SubscribeRequestMessage().from_TLV(val)
if !query.keep_subscriptions
+ # log(f"MTR: remove all subscriptions for session {msg.session}", 3)
self.subs_shop.remove_by_session(msg.session) # if `keep_subscriptions`, kill all subscriptions from current session
end
- # tasmota.log("MTR: received SubscribeRequestMessage=" + str(query), 3)
-
var sub = self.subs_shop.new_subscription(msg.session, query)
-
+
# expand a string with all attributes requested
- var attr_req = []
- var ctx = matter.Path()
- ctx.msg = msg
- for q:query.attributes_requests
- ctx.endpoint = q.endpoint
- ctx.cluster = q.cluster
- ctx.attribute = q.attribute
- attr_req.push(str(ctx))
- end
- tasmota.log(format("MTR: >Subscribe (%6i) %s (min=%i, max=%i, keep=%i) sub=%i fabric_filtered=%s",
- msg.session.local_session_id, attr_req.concat(" "), sub.min_interval, sub.max_interval, query.keep_subscriptions ? 1 : 0, sub.subscription_id, query.fabric_filtered), 3)
- if query.event_requests != nil && size(query.event_requests) > 0
- tasmota.log(f"MTR: >Subscribe (%6i) event_requests_size={size(query.event_requests)}", 3)
+ if tasmota.loglevel(3) && (query.attributes_requests != nil)
+ var attr_req = []
+ var ctx = matter.Path()
+ ctx.msg = msg
+ for q:query.attributes_requests
+ ctx.endpoint = q.endpoint
+ ctx.cluster = q.cluster
+ ctx.attribute = q.attribute
+ attr_req.push(str(ctx))
+ end
+ log(format("MTR: >Subscribe (%6i) %s (min=%i, max=%i, keep=%i) sub=%i fabric_filtered=%s",
+ msg.session.local_session_id, attr_req.concat(" "), sub.min_interval, sub.max_interval, query.keep_subscriptions ? 1 : 0,
+ sub.subscription_id, query.fabric_filtered), 3)
end
- var ret = self._inner_process_read_request(msg.session, query, msg, true #-no_log-#)
- # ret is of type `Matter_ReportDataMessage`
- ret.subscription_id = sub.subscription_id # enrich with subscription id TODO
- self.send_subscribe_response(msg, ret, sub)
+ var generator_or_arr = self.process_read_or_subscribe_request_pull(query, msg)
+ var event_generator_or_arr = self.process_read_or_subscribe_request_event_pull(query, msg)
+
+ sub.set_event_generator_or_arr(event_generator_or_arr)
+
+ self.send_queue.push(matter.IM_SubscribeResponse_Pull(msg, generator_or_arr, event_generator_or_arr, sub))
return true
+
end
#############################################################
@@ -849,8 +905,7 @@ class Matter_IM
def process_invoke_request(msg, val)
# import debug
# structure is `ReadRequestMessage` 10.6.2 p.558
- # tasmota.log("MTR: IM:invoke_request processing start", 4)
- matter.profiler.log("invoke_request_start")
+ # log("MTR: IM:invoke_request processing start", 4)
var ctx = matter.Path()
ctx.msg = msg
@@ -870,10 +925,9 @@ class Matter_IM
var cmd_name = matter.get_command_name(ctx.cluster, ctx.command)
var ctx_str = str(ctx) # keep string before invoking, it is modified by response
var res = self.device.invoke_request(msg.session, q.command_fields, ctx)
- matter.profiler.log("COMMAND DONE")
var params_log = (ctx.log != nil) ? "(" + str(ctx.log) + ") " : ""
- tasmota.log(format("MTR: >Command (%6i) %s %s %s", msg.session.local_session_id, ctx_str, cmd_name ? cmd_name : "", params_log), 3)
- # tasmota.log("MTR: Perf/Command = " + str(debug.counters()), 4)
+ log(format("MTR: >Command (%6i) %s %s %s", msg.session.local_session_id, ctx_str, cmd_name ? cmd_name : "", params_log), 3)
+ # log("MTR: Perf/Command = " + str(debug.counters()), 4)
ctx.log = nil
var raw = bytes(32)
# var a1 = matter.InvokeResponseIB()
@@ -882,7 +936,7 @@ class Matter_IM
self.invokeresponse2raw(raw, ctx, nil)
ret.invoke_responses.push(raw)
if tasmota.loglevel(3)
- tasmota.log(f"MTR: 0
- self.send_invoke_response(msg, ret)
+ self.send_queue.push(matter.IM_InvokeResponse(msg, ret))
else
return false # we don't send anything, hence the responder sends a simple packet ack
end
@@ -924,19 +978,17 @@ class Matter_IM
# or raises an exception
def process_invoke_request_solo(msg, ctx)
# import debug
- matter.profiler.log("invoke_request_solo_start")
ctx.msg = msg
ctx.status = matter.UNSUPPORTED_COMMAND #default error if returned `nil`
var cmd_name = matter.get_command_name(ctx.cluster, ctx.command)
var ctx_str = str(ctx) # keep string before invoking, it is modified by response
var res = self.device.invoke_request(msg.session, ctx.command_fields, ctx)
- matter.profiler.log("COMMAND DONE")
var params_log = (ctx.log != nil) ? "(" + str(ctx.log) + ") " : ""
if tasmota.loglevel(3)
- tasmota.log(format("MTR: >Command1 (%6i) %s %s %s", msg.session.local_session_id, ctx_str, cmd_name ? cmd_name : "", params_log), 3)
+ log(format("MTR: >Command1 (%6i) %s %s %s", msg.session.local_session_id, ctx_str, cmd_name ? cmd_name : "", params_log), 3)
end
- # tasmota.log("MTR: Perf/Command = " + str(debug.counters()), 4)
+ # log("MTR: Perf/Command = " + str(debug.counters()), 4)
ctx.log = nil
var raw = bytes(48)
@@ -948,24 +1000,24 @@ class Matter_IM
self.invokeresponse2raw(raw, ctx, nil)
if tasmota.loglevel(3)
- tasmota.log(f"MTR: Write_Attr%s%s - %s STATUS: 0x%02X %s", str(ctx), attr_name, write_data, ctx.status, ctx.status == matter.SUCCESS ? "SUCCESS" : ""), (ctx.endpoint != 0) ? 2 : 3)
+ elif tasmota.loglevel(3)
+ log(format("MTR: >Write_Attr%s%s - IGNORED", str(ctx), attr_name), 3)
+ # ignore if content is nil and status is undefined
+ end
end
#############################################################
@@ -1010,98 +1095,64 @@ class Matter_IM
#
def process_write_request(msg, val)
var query = matter.WriteRequestMessage().from_TLV(val)
- # tasmota.log("MTR: received WriteRequestMessage=" + str(query), 3)
+ # log("MTR: received WriteRequestMessage=" + str(query), 3)
+ var ctx_log = matter.Path() # pre-allocate object for logging
var suppress_response = query.suppress_response
# var timed_request = query.timed_request # TODO not supported
# var more_chunked_messages = query.more_chunked_messages # TODO not supported
- var endpoints = self.device.get_active_endpoints()
-
- ### Inner function to be iterated upon
- # ret is the ReportDataMessage list to send back
- # ctx is the context with endpoint/cluster/attribute
- # val is the TLV object containing the value
- # direct is true if error is reported, false if error is silently ignored
- #
- # if `pi` is nil, just report the status for ctx.status
- #
- # should return true if answered, false if failed
- def write_single_attribute(ret, pi, ctx, write_data, direct)
- var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute)
- attr_name = attr_name ? " (" + attr_name + ")" : ""
- # tasmota.log(format("MTR: Read Attribute " + str(ctx) + (attr_name ? " (" + attr_name + ")" : ""), 2)
- # Special case to report unsupported item, if pi==nil
- ctx.status = matter.UNSUPPORTED_WRITE
- var res = (pi != nil) ? pi.write_attribute(msg.session, ctx, write_data) : nil
- if res ctx.status = matter.SUCCESS end # if the cb returns true, the request was processed
- if ctx.status != nil
- if direct
- var a1 = matter.AttributeStatusIB()
- a1.path = matter.AttributePathIB()
- a1.status = matter.StatusIB()
- a1.path.endpoint = ctx.endpoint
- a1.path.cluster = ctx.cluster
- a1.path.attribute = ctx.attribute
- a1.status.status = ctx.status
-
- ret.write_responses.push(a1)
- tasmota.log(format("MTR: Write_Attr %s%s - STATUS: 0x%02X %s", str(ctx), attr_name, ctx.status, ctx.status == matter.SUCCESS ? "SUCCESS" : ""), (ctx.endpoint != 0) ? 2 : 3)
- return true
- end
- else
- tasmota.log(format("MTR: Write_Attr %s%s - IGNORED", str(ctx), attr_name), 3)
- # ignore if content is nil and status is undefined
- end
- end
-
- # structure is `ReadRequestMessage` 10.6.2 p.558
- # tasmota.log("MTR: IM:write_request processing start", 4)
- var ctx = matter.Path()
- ctx.msg = msg
-
if query.write_requests != nil
# prepare the response
var ret = matter.WriteResponseMessage()
# ret.suppress_response = true
ret.write_responses = []
+ var generator = matter.PathGenerator(self.device)
for q:query.write_requests # q is AttributeDataIB
- var path = q.path
+ var write_path = q.path
var write_data = q.data
- # need to do expansion here
- ctx.endpoint = path.endpoint
- ctx.cluster = path.cluster
- ctx.attribute = path.attribute
- ctx.status = matter.UNSUPPORTED_ATTRIBUTE #default error if returned `nil`
+ ctx_log.copy(write_path) # copy endpoint/cluster/attribute in ctx_log for pretty logging
# return an error if the expansion is illegal
- if ctx.cluster == nil || ctx.attribute == nil
- # force INVALID_ACTION reporting
- ctx.status = matter.INVALID_ACTION
- write_single_attribute(ret, nil, ctx, nil, true)
+ if write_path.cluster == nil || write_path.attribute == nil
+ ctx_log.status = matter.INVALID_ACTION
+ self.write_single_attribute_status_to_bytes(ret, ctx_log, nil)
continue
end
- # expand endpoint
- if ctx.endpoint == nil
- # we need expansion, log first
- var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute)
- tasmota.log("MTR: Write_Attr " + str(ctx) + (attr_name ? " (" + attr_name + ")" : ""), 3)
+ # expansion is only allowed on endpoint number, log if it happens
+ if (write_path.endpoint == nil) && tasmota.loglevel(3)
+ var attr_name = matter.get_attribute_name(write_path.cluster, write_path.attribute)
+ log("MTR: Write_Attr " + str(ctx_log) + (attr_name ? " (" + attr_name + ")" : ""), 3)
end
- # implement concrete expansion
- self.device.process_attribute_expansion(ctx,
- / pi, ctx, direct -> write_single_attribute(ret, pi, ctx, write_data, direct)
- )
- end
+ generator.start(write_path.endpoint, write_path.cluster, write_path.attribute)
+ var direct = generator.is_direct()
+ var ctx
+ while (ctx := generator.next_attribute())
+ ctx.msg = msg # enrich with message
+ if ctx.status != nil # no match, return error because it was direct
+ ctx.status = nil # remove status to silence output
+ self.write_single_attribute_status_to_bytes(ret, ctx, write_data)
- # tasmota.log("MTR: ReportWriteMessage=" + str(ret), 4)
- # tasmota.log("MTR: ReportWriteMessageTLV=" + str(ret.to_TLV()), 3)
+ else # ctx.status is nil, it exists
+
+ var pi = generator.get_pi()
+ ctx.status = matter.UNSUPPORTED_WRITE
+ # ctx.status = matter.UNSUPPORTED_WRITE
+ var res = (pi != nil) ? pi.write_attribute(msg.session, ctx, write_data) : nil
+ if (res) ctx.status = matter.SUCCESS end # if the cb returns true, the request was processed
+
+ self.write_single_attribute_status_to_bytes(ret, ctx, write_data)
+ end
+ end
+
+ end
# send the reponse that may need to be chunked if too large to fit in a single UDP message
if !suppress_response
- self.send_write_response(msg, ret)
+ self.send_queue.push(matter.IM_WriteResponse(msg, ret))
end
end
return true
@@ -1110,29 +1161,29 @@ class Matter_IM
#############################################################
# process IM 0x07 Write Response
#
- def process_write_response(msg, val)
- var query = matter.WriteResponseMessage().from_TLV(val)
- # tasmota.log("MTR: received WriteResponseMessage=" + str(query), 4)
- return false
- end
+ # def process_write_response(msg, val)
+ # var query = matter.WriteResponseMessage().from_TLV(val)
+ # # log("MTR: received WriteResponseMessage=" + str(query), 4)
+ # return false
+ # end
#############################################################
# process IM 0x09 Invoke Response
#
- def process_invoke_response(msg, val)
- var query = matter.InvokeResponseMessage().from_TLV(val)
- # tasmota.log("MTR: received InvokeResponseMessage=" + str(query), 4)
- return false
- end
+ # def process_invoke_response(msg, val)
+ # var query = matter.InvokeResponseMessage().from_TLV(val)
+ # # log("MTR: received InvokeResponseMessage=" + str(query), 4)
+ # return false
+ # end
#############################################################
# process IM 0x0A Timed Request
#
def process_timed_request(msg, val)
var query = matter.TimedRequestMessage().from_TLV(val)
- # tasmota.log("MTR: received TimedRequestMessage=" + str(query), 3)
+ # log("MTR: received TimedRequestMessage=" + str(query), 3)
- tasmota.log(format("MTR: >Command (%6i) TimedRequest=%i", msg.session.local_session_id, query.timeout), 3)
+ log(format("MTR: >Command (%6i) TimedRequest=%i", msg.session.local_session_id, query.timeout), 3)
# Send success status report
self.send_status(msg, matter.SUCCESS)
@@ -1150,7 +1201,7 @@ class Matter_IM
var fake_read = matter.ReadRequestMessage()
fake_read.fabric_filtered = false
fake_read.attributes_requests = []
-
+ # build fake read request containing single read requests for all attributes that were changed
for ctx: sub.updates
var p1 = matter.AttributePathIB()
p1.endpoint = ctx.endpoint
@@ -1159,14 +1210,14 @@ class Matter_IM
fake_read.attributes_requests.push(p1)
end
- tasmota.log(format("MTR: >>: Matter_IM_ReportData_Pull send_im exch=%i ready=%i", self.resp.exchange_id, self.ready ? 1 : 0), 3)
+ var resp = self.resp # response frame object
+ var data = (self.data != nil) ? self.data : bytes() # bytes() object of the TLV encoded response
+ self.data = nil # we remove the data that was saved for next packet
- # the message were grouped by right-sized binaries upfront, we just need to send one block at time
- var elements = 1 # number of elements added
+ var not_full = true # marker used to exit imbricated loops
+ var debug = responder.device.debug # set debug flag in local variable to ease access below
- # tasmota.log(format("MTR: exch=%i elements=%i msg_sz=%i total=%i", self.get_exchangeid(), elements, msg_sz, sz_attribute_reports), 3)
- var next_elemnts
- if data.attribute_reports != nil
- next_elemnts = data.attribute_reports[elements .. ]
- data.attribute_reports = data.attribute_reports[0 .. elements - 1]
- data.more_chunked_messages = (size(next_elemnts) > 0)
- else
- data.more_chunked_messages = false
- end
+ var data_ev = (self.data_ev != nil) ? self.data_ev : ((self.event_generator_or_arr != nil) ? bytes() : nil) # bytes for events or nil if no event generators
+ # if event_generator_or_arr != nil then data_ev contains a bytes() object
- if was_chunked
- # tasmota.log(format("MTR: .Read_Attr next_chunk exch=%i", self.get_exchangeid()), 4)
- end
- if data.more_chunked_messages
- if !was_chunked
- # tasmota.log(format("MTR: .Read_Attr first_chunk exch=%i", self.get_exchangeid()), 4)
+ ########## Attributes
+ while not_full && (self.generator_or_arr != nil)
+ # get the current generator (first element of list or single object)
+ var current_generator = isinstance(self.generator_or_arr, list) ? self.generator_or_arr[0] : self.generator_or_arr
+ # log(f">>>: ReportData_Pull send_im start {current_generator.path_in_endpoint}/{current_generator.path_in_cluster}/{current_generator.path_in_attribute}",3)
+
+ var ctx
+ while not_full && (ctx := current_generator.next_attribute()) # 'not_full' must be first to avoid removing an item when we don't want
+ # log(f">>>: ReportData_Pull {ctx=}", 3)
+ var force_log = current_generator.is_direct() || debug
+ var elt_bytes = responder.im.read_single_attribute_to_bytes(current_generator.get_pi(), ctx, resp.session, force_log) # TODO adapt no_log
+ if (elt_bytes == nil) continue end # silently ignored, iterate to next
+ # check if we overflow
+ if (size(data) + size(elt_bytes) > self.MAX_MESSAGE)
+ self.data = elt_bytes # save response for later
+ not_full = false
+ else
+ data.append(elt_bytes) # append response since we have enough room
+ end
end
- # tasmota.log("MTR: sending TLV" + str(data), 4)
+
+ # if we are here, then we exhausted the current generator, and we need to move to the next one
+ if not_full
+ # log(f">>>: ReportData_Pull remove current generator",3)
+ if isinstance(self.generator_or_arr, list)
+ self.generator_or_arr.remove(0) # remove first element
+ if size(self.generator_or_arr) == 0
+ self.generator_or_arr = nil # empty array so we put nil
+ end
+ else
+ self.generator_or_arr = nil # there was a single entry, so replace with nil
+ end
+ end
+
end
- # print(">>>>> send elements before encode")
- var raw_tlv = self.data.to_TLV()
- # print(">>>>> send elements before encode 2")
- var encoded_tlv = raw_tlv.tlv2raw(bytes(self.MAX_MESSAGE)) # takes time
- # print(">>>>> send elements before encode 3")
- resp.encode_frame(encoded_tlv) # payload in cleartext, pre-allocate max buffer
- # print(">>>>> send elements after encode")
+ # do we have left-overs from events, i.e. self.data_ev is non-empty bytes()
+ if not_full && (self.data_ev != nil) && (size(self.data_ev) > 0)
+ # try to add self.data_ev
+ if (size(data) + size(self.data_ev) > self.MAX_MESSAGE)
+ not_full = false # skip until next iteration
+ data_ev = nil # don't output any value
+ else
+ self.data_ev = nil # we could add it, so remove from left-overs
+ end
+ end
+
+ ########## Events
+ while not_full && (self.event_generator_or_arr != nil)
+ # get the current generator (first element of list or single object)
+ var current_generator = isinstance(self.event_generator_or_arr, list) ? self.event_generator_or_arr[0] : self.event_generator_or_arr
+ # now events
+ var ev
+ while not_full && (ev := current_generator.next_event()) # 'not_full' must be first to avoid removing an item when we don't want
+ # conditional logging
+ if debug && tasmota.loglevel(3)
+ var data_str = ''
+ if (ev.data0 != nil) data_str = " - " + str(ev.data0) end
+ if (ev.data1 != nil) data_str += ", " + str(ev.data1) end
+ if (ev.data2 != nil) data_str += ", " + str(ev.data2) end
+ log(f"MTR: >Read_Event({resp.session.local_session_id:6i}|{ev.event_no:8s}) [{ev.endpoint:02X}]{ev.cluster:04X}/{ev.event_id:02X}{data_str}", 3)
+ end
+ # send bytes
+ var ev_bytes = ev.to_raw_bytes()
+ if (size(data) + size(data_ev) + size(ev_bytes) > self.MAX_MESSAGE)
+ self.data_ev = ev_bytes # save for next iteration
+ not_full = false
+ else
+ data_ev.append(ev_bytes) # append response since we have enough room
+ end
+ end
+
+ # if we are here, then we exhausted the current generator, and we need to move to the next one
+ if not_full
+ if isinstance(self.event_generator_or_arr, list)
+ self.event_generator_or_arr.remove(0) # remove first element
+ if size(self.event_generator_or_arr) == 0
+ self.event_generator_or_arr = nil # empty array so we put nil
+ end
+ else
+ self.event_generator_or_arr = nil # there was a single entry, so replace with nil
+ end
+ end
+
+ end
+
+ ########## Response
+ # prepare the response
+ # Manually craft payload
+ var more_chunked_messages = (self.data != nil) || (self.data_ev != nil)
+ var raw = bytes(self.MAX_MESSAGE)
+
+ # open struct ReportDataMessage
+ raw.add(0x15, 1) # add 15
+ # open sturct EventDataIB
+ if (self.subscription_id != nil)
+ raw.add(0x2500, -2) # add 2500
+ raw.add(self.subscription_id, 2) # add subscription_id as 16 bits
+ end
+ # do we have attributes?
+ if (data != nil && size(data) > 0)
+ raw.add(0x3601, -2) # add 3601
+ raw.append(data)
+ raw.add(0x18, 1) # add 18
+ end
+ # do we have events?
+ if (data_ev != nil && size(data_ev) > 0)
+ raw.add(0x3602, -2) # add 3601
+ raw.append(data_ev)
+ raw.add(0x18, 1) # add 18
+ end
+ # MoreChunkedMessages
+ if more_chunked_messages # we got more data to send
+ raw.add(0x2903, -2) # add 2903
+ else
+ raw.add(0x2803, -2) # add 2803
+ end
+ # SuppressResponse
+ if (self.suppress_response != nil)
+ if self.suppress_response
+ raw.add(0x2904, -2) # add 2904
+ else
+ raw.add(0x2804, -2) # add 2804
+ end
+ end
+ # InteractionModelRevision
+ raw.add(0x24FF, -2) # add 24FF
+ raw.add(0x01, 1) # add 01
+ # close struct ReportDataMessage
+ raw.add(0x18, 1) # add 18
+ # log(f">>>: {raw.tohex()}", 3)
+
+ # ##### Previous code
+ # var ret = matter.ReportDataMessage()
+ # ret.subscription_id = self.subscription_id
+ # ret.suppress_response = self.suppress_response
+ # if (data != nil && size(data) > 0)
+ # ret.attribute_reports = [data]
+ # end
+ # if (data_ev != nil && size(data_ev) > 0)
+ # ret.event_reports = [data_ev]
+ # end
+ # ret.more_chunked_messages = (self.data != nil) || (self.data_ev != nil) # we got more data to send
+ # var encoded_tlv = ret.to_TLV().tlv2raw(bytes(self.MAX_MESSAGE)) # takes time
+ # resp.encode_frame(encoded_tlv) # payload in cleartext, pre-allocate max buffer
+ # log(f">>>: {encoded_tlv.tohex()}", 3)
+ # ##### Previous code
+
+ resp.encode_frame(raw) # payload in cleartext, pre-allocate max buffer
resp.encrypt()
- # print(">>>>> send elements after encrypt")
- # tasmota.log(format("MTR: 0
- data.attribute_reports = next_elemnts
- # tasmota.log(format("MTR: to_be_sent_later size=%i exch=%i", size(data.attribute_reports), resp.exchange_id), 4)
+ if more_chunked_messages # we have more to send
self.ready = false # wait for Status Report before continuing sending
# keep alive
else
- self.finish = true # finished, remove
+ # log(f">>>: ReportData_Pull finished",3)
+ self.finishing = true # finishing, remove after final Ack
end
+
end
end
-matter.IM_ReportData = Matter_IM_ReportData
-
+matter.IM_ReportData_Pull = Matter_IM_ReportData_Pull
#################################################################################
-# Matter_IM_ReportDataSubscribed
+# Matter_IM_ReportDataSubscribed_Pull
#
# Main difference is that we are the spontaneous initiator
#################################################################################
-class Matter_IM_ReportDataSubscribed : Matter_IM_ReportData
+class Matter_IM_ReportDataSubscribed_Pull : Matter_IM_ReportData_Pull
+ # inherited from Matter_IM_Message
+ # static var MSG_TIMEOUT = 5000 # 5s
+ # var expiration # expiration time for the reporting
+ # var resp # response Frame object
+ # var ready # bool: ready to send (true) or wait (false)
+ # var finished # if true, the message is removed from the queue
+ # var data # TLV data of the response (if any)
+ # var last_counter # counter value of last sent packet (to match ack)
+ # inherited from Matter_IM_ReportData_Pull
+ # static var MAX_MESSAGE = 1200 # max bytes size for a single TLV worklaod
+ # var generator_or_arr # a PathGenerator or an array of PathGenerator
+ # var event_generator_or_arr # a EventGenerator, or array of EventGenerator, or nil
+ # var subscription_id # if not `nil`, subscription_id in response
var sub # subscription object
var report_data_phase # true during reportdata
- def init(message_handler, session, data, sub)
+ #################################################################################
+ def init(message_handler, session, ctx_generator_or_arr, event_generator_or_arr, sub)
+ super(self).init(nil, ctx_generator_or_arr, event_generator_or_arr) # send msg=nil to avoid creating a reponse
+ # we need to initiate a new virtual response, because it's a spontaneous message
self.resp = matter.Frame.initiate_response(message_handler, session, 0x05 #-Report Data-#, true)
- self.data = data
- self.ready = true # by default send immediately
- self.expiration = tasmota.millis() + self.MSG_TIMEOUT
#
self.sub = sub
self.report_data_phase = true
+ self.set_subscription_id(sub.subscription_id)
+ self.set_suppress_response(false)
end
+ #################################################################################
def reached_timeout()
+ # log(f"MTR: IM_ReportDataSubscribed_Pull reached_timeout()", 3)
self.sub.remove_self()
end
+ #################################################################################
# ack received, confirm the heartbeat
def ack_received(msg)
- # tasmota.log(format("MTR: IM_ReportDataSubscribed ack_received sub=%i", self.sub.subscription_id), 3)
+ # log(f"MTR: IM_ReportDataSubscribed_Pull ack_received sub={self.sub.subscription_id}", 3)
super(self).ack_received(msg)
if !self.report_data_phase
# if ack is received while all data is sent, means that it finished without error
if self.sub.is_keep_alive # only if keep-alive, for normal reports, re_arm is called at last StatusReport
self.sub.re_arm() # signal that we can proceed to next sub report
end
- return true # proceed to calling send() which removes the message
+ return false # proceed to calling send() which removes the message
else
return false # do nothing
end
end
+ #################################################################################
# we received an ACK error, remove subscription
def status_error_received(msg)
- # tasmota.log(format("MTR: IM_ReportDataSubscribed status_error_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3)
+ # log(f"MTR: IM_ReportDataSubscribed_Pull status_error_received sub={self.sub.subscription_id} exch={self.resp.exchange_id}", 3)
self.sub.remove_self()
end
+ #################################################################################
# ack received for previous message, proceed to next (if any)
# return true if we manage the ack ourselves, false if it needs to be done upper
def status_ok_received(msg)
- # tasmota.log(format("MTR: IM_ReportDataSubscribed status_ok_received sub=%i exch=%i", self.sub.subscription_id, self.resp.exchange_id), 3)
+ # log(f"MTR: IM_ReportDataSubscribed_Pull status_ok_received sub={self.sub.subscription_id} exch={self.resp.exchange_id}", 3)
if self.report_data_phase
return super(self).status_ok_received(msg)
else
@@ -288,32 +508,34 @@ class Matter_IM_ReportDataSubscribed : Matter_IM_ReportData
end
end
+ #################################################################################
# returns true if transaction is complete (remove object from queue)
# default responder for data
def send_im(responder)
- # tasmota.log(format("MTR: IM_ReportDataSubscribed send sub=%i exch=%i ready=%i", self.sub.subscription_id, self.resp.exchange_id, self.ready ? 1 : 0), 3)
- # tasmota.log(format("MTR: ReportDataSubscribed::send_im size(self.data.attribute_reports)=%i ready=%s report_data_phase=%s", size(self.data.attribute_reports), str(self.ready), str(self.report_data_phase)), 3)
+ # log(format("MTR: IM_ReportDataSubscribed_Pull send sub=%i exch=%i ready=%i", self.sub.subscription_id, self.resp.exchange_id, self.ready ? 1 : 0), 3)
if !self.ready return false end
- if size(self.data.attribute_reports) > 0 # do we have still attributes to send
+
+ if (self.generator_or_arr != nil) || (self.event_generator_or_arr != nil) # do we have still attributes or events to send
if self.report_data_phase
super(self).send_im(responder)
- # tasmota.log(format("MTR: ReportDataSubscribed::send_im called super finish=%i", self.finish), 3)
- if !self.finish return end # ReportData needs to continue
+ # log(format("MTR: ReportDataSubscribed::send_im called super finished=%i", self.finished), 3)
+ if !self.finishing return end # ReportData needs to continue
# ReportData is finished
self.report_data_phase = false
self.ready = false
- self.finish = false # while a ReadReport would stop here, we continue for subscription
+ self.finished = false # while a ReadReport would stop here, we continue for subscription
else
# send a simple ACK
var resp = self.resp.build_standalone_ack(false)
resp.encode_frame()
resp.encrypt()
if tasmota.loglevel(4)
- tasmota.log(format("MTR: Sub_OK (%6i) sub=%i", msg.session.local_session_id, self.sub.subscription_id), 3)
+ log(format("MTR: >Sub_OK (%6i) sub=%i", msg.session.local_session_id, self.sub.subscription_id), 3)
end
return super(self).status_ok_received(msg)
+ if !self.report_data_phase
+ self.finishing = true
+ end
end
-
+
end
-matter.IM_SubscribeResponse = Matter_IM_SubscribeResponse
+matter.IM_SubscribeResponse_Pull = Matter_IM_SubscribeResponse_Pull
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Subscription.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Subscription.be
index b9c67ae09..1712c6971 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Subscription.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Subscription.be
@@ -34,6 +34,7 @@ class Matter_IM_Subscription
var subscription_id # id of the subcription as known by requester
var session # the session it belongs to
var path_list # list of path subscibed to
+ var event_generators # list of EventGenerator filters for subscription
var min_interval # never send data more often than every `min_interval` seconds
var max_interval # always send data before `max_interal` seconds or the subscription is lost
var fabric_filtered
@@ -43,8 +44,10 @@ class Matter_IM_Subscription
var wait_status # if `true` wait for Status Response before sending anything new
var is_keep_alive # was the last message sent an empty keep-alive
# updates
- var updates
+ var updates # array of paths that will need to be updated at next window
+ var update_event_no # int64 or nil, contains the first event number from which we should send an update, or nil if none
+ #################################################################################
# req: SubscribeRequestMessage
def init(subs_shop, id, session, req)
self.subs_shop = subs_shop
@@ -64,49 +67,72 @@ class Matter_IM_Subscription
self.wait_status = false
self.fabric_filtered = req.fabric_filtered
+ var device = subs_shop.im.device # keep a local copy of master device object
- # get list of path from
+ # get list of attribute paths
self.path_list = []
-
- for q: req.attributes_requests
- var ctx = matter.Path()
- ctx.endpoint = q.endpoint
- ctx.cluster = q.cluster
- ctx.attribute = q.attribute
- self.path_list.push(ctx)
+ if (req.attributes_requests != nil)
+ for q: req.attributes_requests
+ self.path_list.push( matter.Path(q.endpoint, q.cluster, q.attribute) )
+ end
end
-
+
+ # scan event filters
+ var event_no_min = matter.IM.parse_event_filters_min_no(req.event_filters, nil)
+
# update next time interval
self.updates = []
+ # self.update_event_no = nil
self.clear_before_arm()
self.is_keep_alive = false
- # tasmota.log("MTR: new subsctiption " + matter.inspect(self), 3)
+ # log("MTR: new subsctiption " + matter.inspect(self), 3)
end
+ #################################################################################
+ # set the event generators
+ #
+ # Force to always be an actual array
+ def set_event_generator_or_arr(event_generator_or_arr)
+ # copy list of event paths, we will reuse each time we send events
+ if event_generator_or_arr == nil
+ self.event_generators = []
+ elif isinstance(event_generator_or_arr, list)
+ self.event_generators = event_generator_or_arr
+ else
+ self.event_generators = [ event_generator_or_arr ]
+ end
+ end
+
+ #################################################################################
# remove self from subs_shop list
def remove_self()
- tasmota.log("MTR: -Sub_Del ( ) sub=" + str(self.subscription_id), 3)
+ log("MTR: -Sub_Del ( ) sub=" + str(self.subscription_id), 3)
self.subs_shop.remove_sub(self)
end
+ #################################################################################
# clear log after it was sent, and re-arm next expiration
def clear_before_arm()
self.updates.clear()
self.wait_status = true
+ self.update_event_no = nil # rearm for next events
end
+ #################################################################################
# we received a complete ack for previous message, rearm
def re_arm()
+ if (!self.wait_status) return end # make it reentrant
self.wait_status = false
var now = tasmota.millis()
self.expiration = now + (self.max_interval - self.MAX_INTERVAL_MARGIN) * 1000
self.not_before = now + self.min_interval * 1000 - 1
if !self.is_keep_alive
- tasmota.log(format("MTR: .Sub_Done ( ) sub=%i", self.subscription_id), 3)
+ log(format("MTR: .Sub_Done ( ) sub=%i", self.subscription_id), 3)
end
end
+ #################################################################################
# signal that an attribute was updated, to add to the list of reportable
def attribute_updated_ctx(ctx, fabric_specific)
var idx = 0
@@ -123,6 +149,34 @@ class Matter_IM_Subscription
end
end
+ #################################################################################
+ # signal a new event, check if it matches any filter
+ #
+ # This is called whenever a new event is published.
+ # We now that the new event number is above any event previously seen, so we can optimize
+ #
+ # Hence we store only the first event number that matches this generator.
+ # We know that we don't need to go back in the past from this.
+ # And if events are published after, we already have our starting number in `update_event_no`
+ #
+ # Note: since the generator skips from the last seen event, we need to substract 1 because
+ # this event has not been sent in subscription updates
+ #
+ # Arg:
+ # - event: instance of Matter_EventQueued
+ def event_published(new_event)
+ if (self.update_event_no == nil) # if we have already an event to send updates, all events after this are potential candidates
+ var idx = 0
+ while idx < size(self.event_generators)
+ if self.event_generators[idx].event_is_match(new_event)
+ self.update_event_no = new_event.event_no.add(-1) # we need to substract 1 becaus ewe haven't parse this one yet
+ end
+ idx += 1
+ end
+ end
+ end
+
+ #################################################################################
# add an attribute path for an updated attribute, remove any duplicate
def _add_attribute_unique_path(ctx)
var idx = 0
@@ -138,6 +192,28 @@ class Matter_IM_Subscription
self.updates.push(ctx)
end
+ #################################################################################
+ # update_event_generator_array
+ #
+ # Returns an array, or single instance of nil, with generators
+ def update_event_generator_array()
+ if size(self.event_generators) == 0
+ return nil # empty, return nil
+ elif size(self.event_generators) == 1
+ self.event_generators[0].restart_from(self.update_event_no)
+ return self.event_generators[0] # single element, return just the instance (most common case)
+ else
+ var res = []
+ res.resize(size(self.event_generators))
+ var idx = 0
+ while idx < size(self.event_generators)
+ self.event_generators[idx].restart_from(self.update_event_no)
+ res[idx] = self.event_generators[idx]
+ idx += 1
+ end
+ end
+ end
+
end
matter.IM_Subscription = Matter_IM_Subscription
@@ -161,19 +237,20 @@ class Matter_IM_Subscription_Shop
# session object
# SubscribeRequestMessage request
# returns: new subscription
- def new_subscription(session, req)
+ def new_subscription(session, req, event_generator_or_arr)
import crypto
var id = crypto.random(2).get(0,2)
while self.get_by_id(id)
id = crypto.random(2).get(0,2)
end
- var sub = matter.IM_Subscription(self, id, session, req)
+ var sub = matter.IM_Subscription(self, id, session, req, event_generator_or_arr)
self.subs.push(sub)
return sub
end
+ #################################################################################
def remove_sub(sub)
var idx = 0
while idx < size(self.subs)
@@ -185,6 +262,7 @@ class Matter_IM_Subscription_Shop
end
end
+ #################################################################################
def get_by_id(id)
var idx = 0
while idx < size(self.subs)
@@ -195,6 +273,10 @@ class Matter_IM_Subscription_Shop
end
end
+ #################################################################################
+ # remove_by_session
+ #
+ # Cleaning: remove all subscriptions created by this sessions
def remove_by_session(session)
var idx = 0
while idx < size(self.subs)
@@ -206,6 +288,10 @@ class Matter_IM_Subscription_Shop
end
end
+ #################################################################################
+ # remove_by_fabric
+ #
+ # Cleaning: remove all subscriptions created by this fabric
def remove_by_fabric(fabric)
for session: fabric._sessions
self.remove_by_session(session)
@@ -213,15 +299,18 @@ class Matter_IM_Subscription_Shop
end
#############################################################
- # dispatch every 250ms click to sub-objects that need it
- def every_250ms()
+ # dispatch every 50ms click to sub-objects that need it
+ #
+ def every_50ms()
# any data ready to send?
var idx = 0
while idx < size(self.subs)
var sub = self.subs[idx]
- if !sub.wait_status && size(sub.updates) > 0 && tasmota.time_reached(sub.not_before)
- self.im.send_subscribe_update(sub)
- sub.clear_before_arm()
+ if (!sub.wait_status && tasmota.time_reached(sub.not_before)) # is the update window open (not in progress and minimum time has passed)
+ if (size(sub.updates) > 0) || (sub.update_event_no != nil) # we have updated attributes, or an event was published since last update
+ self.im.send_subscribe_update(sub)
+ sub.clear_before_arm()
+ end
end
idx += 1
end
@@ -239,6 +328,7 @@ class Matter_IM_Subscription_Shop
end
end
+ #################################################################################
# signal that an attribute was updated, to add to the list of reportable
def attribute_updated_ctx(ctx, fabric_specific)
# signal any relevant subscription
@@ -248,6 +338,16 @@ class Matter_IM_Subscription_Shop
idx += 1
end
end
+
+ #################################################################################
+ # signal that a new event was published, see if any subscription is interested
+ def event_published(new_event)
+ var idx = 0
+ while idx < size(self.subs)
+ self.subs[idx].event_published(new_event)
+ idx += 1
+ end
+ end
end
matter.IM_Subscription_Shop = Matter_IM_Subscription_Shop
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Message.be b/lib/libesp32/berry_matter/src/embedded/Matter_Message.be
index f70d2f2b0..1d418dfc0 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Message.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Message.be
@@ -215,7 +215,7 @@ class Matter_Frame
raw.add(self.x_flags, 1)
# opcode (mandatory)
raw.add(self.opcode, 1)
- raw.add(self.exchange_id & 0xFFFF, 2)
+ raw.add((self.exchange_id != nil) ? self.exchange_id & 0xFFFF : 0, 2)
raw.add(self.protocol_id, 2)
if self.x_flag_a raw.add(self.ack_message_counter, 4) end
# finally payload
@@ -224,7 +224,6 @@ class Matter_Frame
raw .. payload
end
- # self.debug(raw)
self.raw = raw
return raw
end
@@ -304,7 +303,7 @@ class Matter_Frame
if resp.local_session_id == 0
var op_name = matter.get_opcode_name(resp.opcode)
if !op_name op_name = format("0x%02X", resp.opcode) end
- tasmota.log(format("MTR: >>>>>>>>>>>>>>>>>>> Compute Privacy TODO", 2)
+ log("MTR: >>>>>>>>>>>>>>>>>>>> Compute Privacy TODO", 2)
var k = session.get_i2r_privacy()
var mic = raw[-16..] # take last 16 bytes as signature
var n = bytes().add(self.local_session_id, -2) + mic[5..15] # session in Big Endian
@@ -387,13 +386,13 @@ class Matter_Frame
n.resize(13) # add zeros
end
- # tasmota.log("MTR: ******************************", 4)
- # tasmota.log("MTR: raw =" + raw.tohex(), 4)
- # tasmota.log("MTR: i2r =" + i2r.tohex(), 4)
- # tasmota.log("MTR: p =" + raw[payload_idx .. -17].tohex(), 4)
- # tasmota.log("MTR: a =" + raw[0 .. payload_idx - 1].tohex(), 4)
- # tasmota.log("MTR: n =" + n.tohex(), 4)
- # tasmota.log("MTR: mic =" + raw[-16..].tohex(), 4)
+ # log("MTR: ******************************", 4)
+ # log("MTR: raw =" + raw.tohex(), 4)
+ # log("MTR: i2r =" + i2r.tohex(), 4)
+ # log("MTR: p =" + raw[payload_idx .. -17].tohex(), 4)
+ # log("MTR: a =" + raw[0 .. payload_idx - 1].tohex(), 4)
+ # log("MTR: n =" + n.tohex(), 4)
+ # log("MTR: mic =" + raw[-16..].tohex(), 4)
# decrypt
var ret = crypto.AES_CCM.decrypt1(i2r, # secret key
@@ -405,7 +404,7 @@ class Matter_Frame
# succcess
raw.resize(size(raw) - tag_len) # remove MIC
else
- tasmota.log("MTR: rejected packet due to invalid MIC", 3)
+ log("MTR: rejected packet due to invalid MIC", 3)
end
return ret
end
@@ -444,6 +443,14 @@ class Matter_Frame
end
+ #############################################################
+ # compute the node_id for this message, via session and fabric
+ #
+ # returns bytes(8)
+ def get_node_id()
+ return self.session ? self.session.get_node_id() : nil
+ end
+
#############################################################
# Decode a message we are about to send, to ease debug
def debug(raw)
@@ -451,7 +458,7 @@ class Matter_Frame
var r = matter.Frame(self.message_handler, raw)
r.decode_header()
r.decode_payload()
- # tasmota.log("MTR: sending decode: " + matter.inspect(r), 4)
+ # log("MTR: sending decode: " + matter.inspect(r), 4)
end
end
matter.Frame = Matter_Frame
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be b/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be
index 63336e4f7..e437d2d5e 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be
@@ -50,9 +50,11 @@ class Matter_MessageHandler
def send_simple_ack(frame, reliable)
if frame.x_flag_r # nothing to respond, check if we need a standalone ack
var resp = frame.build_standalone_ack(reliable)
+ # special case, the local_session_id is not the one from the session
+ resp.local_session_id = frame.local_session_id
resp.encode_frame()
if tasmota.loglevel(4)
- tasmota.log(format("MTR: Received (%6i) %s rid=%i exch=%i from [%s]:%i", session.local_session_id, op_name, frame.message_counter, frame.exchange_id, addr, port), 3)
+ log(format("MTR: >Received (%6i) %s from [%s]:%i", session.local_session_id, op_name, addr, port), 3)
+ # log(format("MTR: >Received (%6i) %s rid=%i exch=%i from [%s]:%i", session.local_session_id, op_name, frame.message_counter, frame.exchange_id, addr, port), 3)
end
else
if tasmota.loglevel(4)
- tasmota.log(format("MTR: >rcv Ack (%6i) rid=%i exch=%i ack=%s %sfrom [%s]:%i", session.local_session_id, frame.message_counter, frame.x_flag_r ? "{reliable} " : "", frame.exchange_id, str(frame.ack_message_counter), addr, port), 4)
+ log(format("MTR: >rcv Ack (%6i) rid=%i exch=%i ack=%s %sfrom [%s]:%i", session.local_session_id, frame.message_counter, frame.x_flag_r ? "{reliable} " : "", frame.exchange_id, str(frame.ack_message_counter), addr, port), 4)
end
end
ret = self.commissioning.process_incoming(frame)
@@ -141,14 +143,14 @@ class Matter_MessageHandler
# encrypted message
# matter.profiler.log("msg_received_header_encrypted_message_received")
if tasmota.loglevel(4)
- tasmota.log(format("MTR: decode header: local_session_id=%i message_counter=%i", frame.local_session_id, frame.message_counter), 4)
+ log(format("MTR: decode header: local_session_id=%i message_counter=%i", frame.local_session_id, frame.message_counter), 4)
end
var session = self.device.sessions.get_session_by_local_session_id(frame.local_session_id)
# matter.profiler.log("msg_received_header_session_retrieved")
if session == nil
- tasmota.log("MTR: unknown local_session_id="+str(frame.local_session_id), 3)
- # tasmota.log("MTR: frame="+matter.inspect(frame), 3)
+ log("MTR: unknown local_session_id="+str(frame.local_session_id), 3)
+ # log("MTR: frame="+matter.inspect(frame), 3)
return false
end
# matter.profiler.log("msg_received_session_found")
@@ -160,27 +162,27 @@ class Matter_MessageHandler
# check if it's a duplicate
if !session.counter_rcv_validate(frame.message_counter, true)
if tasmota.loglevel(3)
- tasmota.log("MTR: . Duplicate encrypted message = " + str(frame.message_counter) + " counter=" + str(session.counter_rcv), 3)
+ log("MTR: . Duplicate encrypted message = " + str(frame.message_counter) + " counter=" + str(session.counter_rcv), 3)
end
self.send_encrypted_ack(frame, false #-not reliable-#)
return false
end
var decrypt_ok = frame.decrypt()
- matter.profiler.log("msg_received_header_frame_decrypted")
+ # matter.profiler.log("msg_received_header_frame_decrypted")
if !decrypt_ok return false end
# matter.profiler.log("msg_received_payload_undecoded")
# continue decoding
- # tasmota.log(format("MTR: idx=%i clear=%s", frame.payload_idx, frame.raw.tohex()), 4)
+ # log(format("MTR: idx=%i clear=%s", frame.payload_idx, frame.raw.tohex()), 4)
frame.decode_payload()
# matter.profiler.log("msg_received_payload_decoded")
if tasmota.loglevel(4)
- tasmota.log("MTR: > Decrypted message: protocol_id:"+str(frame.protocol_id)+" opcode="+str(frame.opcode)+" exchange_id="+str(frame.exchange_id & 0xFFFF), 4)
+ log("MTR: > Decrypted message: protocol_id:"+str(frame.protocol_id)+" opcode="+str(frame.opcode)+" exchange_id="+str(frame.exchange_id & 0xFFFF), 4)
end
- # tasmota.log(format("MTR: >rcv (%6i) [%02X/%02X] rid=%i exch=%i ack=%s %sfrom [%s]:%i", session.local_session_id, frame.protocol_id, frame.opcode, frame.message_counter, frame.exchange_id, str(frame.ack_message_counter), frame.x_flag_r ? "{reliable} " : "", addr, port), 3)
+ # log(format("MTR: >rcv (%6i) [%02X/%02X] rid=%i exch=%i ack=%s %sfrom [%s]:%i", session.local_session_id, frame.protocol_id, frame.opcode, frame.message_counter, frame.exchange_id, str(frame.ack_message_counter), frame.x_flag_r ? "{reliable} " : "", addr, port), 3)
self.device.received_ack(frame) # remove acknowledge packet from sending list
@@ -188,7 +190,7 @@ class Matter_MessageHandler
var protocol_id = frame.protocol_id
if protocol_id == 0x0000 # PROTOCOL_ID_SECURE_CHANNEL
# it should not be encrypted
- # tasmota.log("MTR: PROTOCOL_ID_SECURE_CHANNEL " + matter.inspect(frame), 3)
+ # log("MTR: PROTOCOL_ID_SECURE_CHANNEL " + matter.inspect(frame), 3)
if frame.opcode == 0x10 # MRPStandaloneAcknowledgement
ret = self.im.process_incoming_ack(frame)
if ret
@@ -198,9 +200,7 @@ class Matter_MessageHandler
ret = true
elif protocol_id == 0x0001 # PROTOCOL_ID_INTERACTION_MODEL
# dispatch to IM Protocol Messages
- matter.profiler.log("process_IM_start")
ret = self.im.process_incoming(frame)
- matter.profiler.log("process_IM_end")
# if `ret` is true, we have something to send
if ret
self.im.send_enqueued(self)
@@ -212,21 +212,21 @@ class Matter_MessageHandler
# -- PROTOCOL_ID_BDX is used for file transfer between devices, not used in Tasmota
# elif protocol_id == 0x0002 # PROTOCOL_ID_BDX -- BDX not handled at all in Tasmota
- # tasmota.log("MTR: PROTOCOL_ID_BDX not yet handled", 2)
+ # log("MTR: PROTOCOL_ID_BDX not yet handled", 2)
# return false # ignore for now TODO
# -- PROTOCOL_ID_USER_DIRECTED_COMMISSIONING is only used by devices, as a device we will not receive any
# elif protocol_id == 0x0003 # PROTOCOL_ID_USER_DIRECTED_COMMISSIONING
- # tasmota.log("MTR: PROTOCOL_ID_USER_DIRECTED_COMMISSIONING not yet handled", 2)
+ # log("MTR: PROTOCOL_ID_USER_DIRECTED_COMMISSIONING not yet handled", 2)
# return false # ignore for now TODO
else
- tasmota.log("MTR: ignoring unhandled protocol_id:"+str(protocol_id), 3)
+ log("MTR: ignoring unhandled protocol_id:"+str(protocol_id), 3)
end
end
return ret
except .. as e, m
- tasmota.log("MTR: MessageHandler::msg_received exception: "+str(e)+";"+str(m), 2)
+ log("MTR: MessageHandler::msg_received exception: "+str(e)+";"+str(m), 2)
if tasmota._debug_present
import debug
debug.traceback()
@@ -247,7 +247,6 @@ class Matter_MessageHandler
# msg.exchange_id: exchange id (int)
# msg.local_session_id: local session (for logging)
def send_response_frame(msg)
- matter.profiler.log("send_response_frame")
self.device.msg_send(msg)
end
@@ -259,9 +258,9 @@ class Matter_MessageHandler
end
#############################################################
- # dispatch every 250ms click to sub-objects that need it
- def every_250ms()
- self.im.every_250ms()
+ # dispatch every 50ms click to sub-objects that need it
+ def every_50ms()
+ self.im.every_50ms()
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Path_0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Path_0.be
index ff675c136..6623d7875 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Path_0.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Path_0.be
@@ -36,6 +36,20 @@ class Matter_Path
var log # any string that needs to be logged (used to show significant parameters for commands)
var msg # reference of the original message
+ def init(endpoint, cluster, attribute) # fast initialization
+ self.endpoint = endpoint
+ self.cluster = cluster
+ self.attribute = attribute
+ end
+
+ # copy from an aobject that has also endpoint/cluster/attribute variables
+ def copy(c)
+ self.reset()
+ self.endpoint = c.endpoint
+ self.cluster = c.cluster
+ self.attribute = c.attribute
+ end
+
# reset the object, allows reuse of the same object
def reset()
var n = nil # it's actually more compact code to load `nil` into a register and assign all members
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_EventGenerator.be b/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_EventGenerator.be
new file mode 100644
index 000000000..a974daf11
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_EventGenerator.be
@@ -0,0 +1,147 @@
+#
+# Matter_Path_1_EventGenerator.be - suppport for Matter event path generator from available events
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+#@ solidify:Matter_EventGenerator,weak
+
+#################################################################################
+# Matter_EventGenerator
+#
+# Has the same interface as PathGenerator
+#
+# Returns a Path that reads an event patching the current pattern
+#################################################################################
+class Matter_EventGenerator
+ var device # reference of device main object
+ var path_in_endpoint # input endpoint filter (nil or int)
+ var path_in_cluster # input cluster filter (nil or int)
+ var path_in_event # input event filter (nil or int)
+ var path_in_event_min # input event filter for minimum event requested (nil or int)
+ # current status
+ var event_no # event number of the last one returned or nil of none returned yet
+
+ # reused at each output
+ var finished # finished (no more events matching)
+
+ #################################################################################
+ # simple constructor
+ #
+ def init(device)
+ self.device = device
+ end
+
+ #################################################################################
+ # start generator
+ #
+ # `in_endpoint`: endpoint number filter (int or nil for all)
+ # `in_cluster`: cluster number filter (int or nil for all)
+ # `in_attribute`: attribute number filter (int or nil for all)
+ # `in_fabric_filtered`: is the filter fabric-filtered (nil or false or true) - currently stored but ignored
+ def start(in_endpoint, in_cluster, in_event, in_event_min)
+ self.reset()
+ self.path_in_endpoint = in_endpoint
+ self.path_in_cluster = in_cluster
+ self.path_in_event = in_event
+ self.path_in_event_min = in_event_min
+ self.event_no = in_event_min
+ self.finished = false
+ end
+
+ #################################################################################
+ # reset
+ #
+ def reset()
+ var n = nil
+ self.event_no = n
+ self.finished = true
+ end
+
+ #################################################################################
+ # restart_from
+ #
+ # Restart from this event number (not included)
+ def restart_from(event_min)
+ self.finished = false
+ self.event_no = event_min
+ end
+
+ ################################################################################
+ # is_finished
+ #
+ # Returns `true` if we have exhausted the generator
+ def is_finished()
+ return self.finished
+ end
+
+ ################################################################################
+ # finished
+ #
+ # not used for events
+ def get_pi()
+ return nil
+ end
+
+ ################################################################################
+ # next_event
+ #
+ # Generate next concrete path
+ # Returns:
+ # - a path object (that is valid until next call)
+ # - if 'direct' (concrete path), ctx.status contains the appropriate error code if the path value is not supported
+ # - `nil` if no more objects
+ def next_event()
+ if (self.finished) return nil end
+ while true
+ var next_event = self.device.events.find_min_no(self.event_no)
+ if (next_event == nil) # eventually there are no events left, so the loop stops
+ self.reset()
+ return nil
+ end
+ # next_event != nil and we know that ((next_event.event_no > self.path_in_event_min) or (path_in_event_min == nil))
+ self.event_no = next_event.event_no # update smallest found event, even if it does not match, because we need it to find the next one matching
+ # check if the event matches the pattern
+
+ if self.event_is_match(next_event)
+ # log(f"MTR: Path generator([{self.path_in_endpoint}]{self.path_in_cluster}/{self.path_in_event}>{self.path_in_event_min}} event_no={self.event_no} event={matter.inspect(next_event)})", 3)
+ return next_event
+ end
+ end
+ end
+
+ ################################################################################
+ # event_is_match
+ #
+ # Returns true if the event passed as argument matches the filter
+ # but does not check the event number, because it is filtered out before
+ def event_is_match(next_event)
+ var match = true
+ if (self.path_in_endpoint != nil)
+ match = match && (self.path_in_endpoint == next_event.endpoint)
+ end
+ if (self.path_in_cluster != nil)
+ match = match && (self.path_in_cluster == next_event.cluster)
+ end
+ if (self.path_in_event != nil)
+ match = match && (self.path_in_event == next_event.event_id)
+ end
+ return match
+ end
+end
+matter.EventGenerator = Matter_EventGenerator
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_Generator.be b/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_PathGenerator.be
similarity index 55%
rename from lib/libesp32/berry_matter/src/embedded/Matter_Path_1_Generator.be
rename to lib/libesp32/berry_matter/src/embedded/Matter_Path_1_PathGenerator.be
index eae306543..96e74025b 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_Generator.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Path_1_PathGenerator.be
@@ -1,5 +1,5 @@
#
-# Matter_IM_Path_1.be - suppport for Matter concrete path generator
+# Matter_Path_1_Generator.be - suppport for Matter concrete path generator
#
# Copyright (C) 2023 Stephan Hadinger & Theo Arends
#
@@ -27,7 +27,6 @@ import matter
# INPUT: Takes a context:
# - plugin
# - path (abstract or concrete)
-# - session
#
# OUTPUT:
# - returns a concrete Path
@@ -35,10 +34,12 @@ import matter
#################################################################################
class Matter_PathGenerator
var device # reference of device main object
- var path_in # input path (abstract or concrete)
- var session # session object in which the request was made
+ var path_in_endpoint # input endpoint filter (nil or int)
+ var path_in_cluster # input cluster filter (nil or int)
+ var path_in_attribute # input attribute filter (nil or int)
+ var path_in_fabric_filtered # input flag for fabric filtered reads (not implemented yet)
# current status
- var pi # plugin object, `nil` waiting for value, `false` exhausted values
+ var pi # plugin object, `nil` waiting for value, `false` exhausted values, `true` if we responded a direct unmatched and it is the last one
var cluster # current cluster number, `nil` waiting for value, `false` exhausted values
var attribute # current attribute number, `nil` waiting for value, `false` exhausted values
# cache
@@ -49,49 +50,103 @@ class Matter_PathGenerator
var attribute_found # did we find a valid attribute?
# reused at each output
- var path_concrete # placeholder for output concrete path
+ var path_concrete # placeholder for output concrete path, contains 'matter.Path()' instance - WARNING it can be modified once provided
+ #################################################################################
+ # simple constructor
+ #
def init(device)
self.device = device
end
+ #################################################################################
# start generator
- def start(path_in, session)
+ #
+ # `in_endpoint`: endpoint number filter (int or nil for all)
+ # `in_cluster`: cluster number filter (int or nil for all)
+ # `in_attribute`: attribute number filter (int or nil for all)
+ # `in_fabric_filtered`: is the filter fabric-filtered (nil or false or true) - currently stored but ignored
+ def start(in_endpoint, in_cluster, in_attribute, in_fabric_filtered)
+ # log(f">>>: PathGenerator start ep:{in_endpoint} cluster:{in_cluster} attribute:{in_attribute}", 3)
self.path_concrete = matter.Path()
self.reset()
- self.path_in = path_in
- self.session = session
+ self.path_in_endpoint = in_endpoint
+ self.path_in_cluster = in_cluster
+ self.path_in_attribute = in_attribute
+ self.path_in_fabric_filtered = bool(in_fabric_filtered) # defaults to `false` if `nil`
+ self.pi = nil # ready to start
#
self.endpoint_found = false
self.cluster_found = false
self.attribute_found = false
end
+ #################################################################################
+ # reset and free memory
+ #
def reset()
var n = nil
- self.path_in = n
- self.session = n
self.path_concrete.reset()
#
- self.pi = n # pre-load first plugin
+ self.pi = false # mark as inactive
self.cluster = n
self.attribute = n
self.clusters = n
- self.clusters = n
end
- def get_pi()
- return self.pi
- end
################################################################################
- # next
+ # is_direct
+ #
+ # Returns true if the original path is concrete, i.e. no expansion.
+ # If not, errors while reading expanded attributes should not return an error
+ def is_direct()
+ return (self.path_in_endpoint != nil) && (self.path_in_cluster != nil) && (self.path_in_attribute != nil)
+ end
+
+ ################################################################################
+ # _default_status_error
+ #
+ # Get the default error if the read or write fails.
+ # This error is only reported if `direct` is true
+ def _default_status_error()
+ if self.is_direct()
+ if (!self.endpoint_found) return matter.UNSUPPORTED_ENDPOINT end
+ if (!self.cluster_found) return matter.UNSUPPORTED_CLUSTER end
+ if (!self.attribute_found) return matter.UNSUPPORTED_ATTRIBUTE end
+ return matter.UNREPORTABLE_ATTRIBUTE
+ end
+ return nil
+ end
+
+ ################################################################################
+ # is_finished
+ #
+ # Returns `true` if we have exhausted the generator
+ def is_finished()
+ return (self.pi != false)
+ end
+
+ ################################################################################
+ # get_pi
+ #
+ # Returns the endpoint object for the last context returned, or `nil` if not found or exhausted
+ def get_pi()
+ return ((self.pi == false) || (self.pi == true)) ? nil : self.pi
+ end
+
+ ################################################################################
+ # next_attribute
#
# Generate next concrete path
# Returns:
# - a path object (that is valid until next call)
+ # - if 'direct' (concrete path), ctx.status contains the appropriate error code if the path value is not supported
# - `nil` if no more objects
- def next()
- if (self.path_in == nil) return nil end
+ def next_attribute()
+ if (self.pi == true) || (self.pi != nil && self.is_direct()) # if we already answered a succesful or missing context for direct request, abort on second call
+ self.reset()
+ return nil
+ end
while (self.pi != false) # loop until we exhausted endpoints
# PRE: self.pi is not `false`
@@ -118,8 +173,27 @@ class Matter_PathGenerator
path_concrete.endpoint = self.pi.get_endpoint()
path_concrete.cluster = self.cluster
path_concrete.attribute = self.attribute
+ path_concrete.fabric_filtered = self.path_in_fabric_filtered
+ path_concrete.status = nil
+ # log(f">>>: PathGenerator next path_concrete:{path_concrete}", 3)
return path_concrete
end
+
+ # special case, if it was 'direct' and we are here, then we didn't find a match
+ # return the concrete path ans prepare status
+ if self.is_direct()
+ var path_concrete = self.path_concrete
+ path_concrete.reset()
+ path_concrete.endpoint = self.path_in_endpoint
+ path_concrete.cluster = self.path_in_cluster
+ path_concrete.attribute = self.path_in_attribute
+ path_concrete.fabric_filtered = self.path_in_fabric_filtered
+ path_concrete.status = self._default_status_error()
+ self.pi = true # next call will trigger Generator exhausted
+ # log(f">>>: PathGenerator next path_concrete:{path_concrete} direct", 3)
+ return path_concrete
+ end
+
# we exhausted all endpoints - finish and clean
self.reset()
return nil
@@ -131,7 +205,7 @@ class Matter_PathGenerator
if (self.pi == false) return false end # exhausted all possible values
var plugins = self.device.plugins # shortcut
- var ep_filter = self.path_in.endpoint
+ var ep_filter = self.path_in_endpoint
# cluster and attribute are now undefined
self.cluster = nil
self.attribute = nil
@@ -164,7 +238,7 @@ class Matter_PathGenerator
if (self.cluster == false) return false end # exhausted all possible values
var clusters = self.clusters
- var cl_filter = self.path_in.cluster
+ var cl_filter = self.path_in_cluster
# attribute is now undefined
self.attribute = nil
var idx = -1
@@ -192,17 +266,32 @@ class Matter_PathGenerator
def _next_attribute()
if (self.attribute == false) return false end # exhausted all possible values
- var attributes = self.pi.get_attribute_list(self.cluster)
- var attr_filter = self.path_in.attribute
+ var attributes_bytes = self.pi.get_attribute_list_bytes(self.cluster)
+ var attributes_bytes_sz = (attributes_bytes != nil) ? size(attributes_bytes) / 2 : 0
+ var attr_filter = self.path_in_attribute
+
var idx = -1
if (self.attribute != nil)
- idx = attributes.find(self.attribute) # find index in current list
+ var i = 0
+ while true
+ if (i < attributes_bytes_sz)
+ if attributes_bytes.get(i * 2, -2) == self.attribute
+ idx = i
+ break
+ end
+ i += 1
+ else
+ idx = nil
+ break
+ end
+ end
+ # idx = attributes.find(self.attribute) # finds index in current list
end
# safeguard
if (idx != nil)
- while (idx + 1 < size(attributes))
+ while (idx + 1 < attributes_bytes_sz)
idx += 1 # move to next item
- self.attribute = attributes[idx]
+ self.attribute = attributes_bytes.get(idx * 2, -2)
if (attr_filter == nil) || (attr_filter == self.attribute)
return self.attribute
end
@@ -222,13 +311,9 @@ matter.PathGenerator = Matter_PathGenerator
var gen = matter.PathGenerator(matter_device)
def gen_path_dump(endpoint, cluster, attribute)
- var path = matter.Path()
- path.endpoint = endpoint
- path.cluster = cluster
- path.attribute = attribute
- gen.start(path)
+ gen.start(endpoint, cluster, attribute)
var cp
- while (cp := gen.next())
+ while (cp := gen.next_attribute())
print(cp)
end
end
@@ -242,32 +327,4 @@ gen_path_dump(nil, nil, 0xFFFB)
gen_path_dump(4, 5, 5)
gen_path_dump(4, 5, 6)
-
-
-var gen = matter.PathGenerator(matter_device)
-var path = matter.Path()
-path.endpoint = nil
-gen.start(path)
-
-# print(gen._next_endpoint())
-# print(gen._next_cluster())
-# print(gen._next_attribute())
-
-
-
-var gen = matter.PathGenerator(matter_device)
-var path = matter.Path()
-path.endpoint = 4
-path.cluster = 5
-path.attribute = 1
-gen.start(path)
-
-
-
-
-var cp
-while (cp := gen.next())
- print(cp)
-end
-
-#
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be
index d8315c3ec..e40a37b5e 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_0.be
@@ -1,5 +1,5 @@
#
-# Matter_Plugin.be - generic superclass for all Matter plugins, used to define specific behaviors (light, switch, media...)
+# Matter_Plugin_0.be - generic superclass for all Matter plugins, used to define specific behaviors (light, switch, media...)
#
# Copyright (C) 2023 Stephan Hadinger & Theo Arends
#
@@ -34,6 +34,7 @@ class Matter_Plugin
# Behavior of the plugin, frequency at which `update_shadow()` is called
static var UPDATE_TIME = 5000 # default is every 5 seconds
static var VIRTUAL = false # set to true only for virtual devices
+ static var BRIDGE = false # set to true only for bridged devices (ESP8266 or OpenBK)
var update_next # next timestamp for update
# Configuration of the plugin: clusters and type
static var CLUSTERS = matter.consolidate_clusters(_class, {
@@ -47,6 +48,7 @@ class Matter_Plugin
static var FEATURE_MAPS = { # feature map per cluster
0x0031: 0x04, # Put Eth for now which should work for any on-network
0x0102: 1 + 4, # Lift + PA_LF
+ 0x0202: 2, # Fan: Auto
}
# `CLUSTER_REVISIONS` contains revision numbers for each cluster, or `1` if not present
static var CLUSTER_REVISIONS = {
@@ -67,6 +69,7 @@ class Matter_Plugin
# 0x0033: 1, # Initial Release
# 0x0034: 1, # Initial Release
0x0038: 2, #
+ # 0x003B: 1, # Initial Release
# 0x003C: 1, # Initial Release
# 0x003E: 1, # Initial Release
0x003F: 2, # Clarify KeySetWrite validation and behavior on invalid epoch key lengths
@@ -96,7 +99,6 @@ class Matter_Plugin
static var UPDATE_COMMANDS = []
var device # reference to the `device` global object
var endpoint # current endpoint
- var clusters # map from cluster to list of attributes, typically constructed from CLUSTERS hierachy
var tick # tick value when it was last updated
var node_label # name of the endpoint, used only in bridge mode, "" if none
@@ -115,7 +117,6 @@ class Matter_Plugin
def init(device, endpoint, config)
self.device = device
self.endpoint = endpoint
- self.clusters = self.consolidate_clusters()
self.parse_configuration(config)
self.node_label = config.find("name", "")
end
@@ -143,14 +144,14 @@ class Matter_Plugin
# Returns true if it's a local device, or false for a
# remotely device controlled via HTTP
def is_local_device()
- return true
+ return !(self.BRIDGE)
end
#############################################################
# Stub for updating shadow values (local copies of what we published to the Matter gateway)
#
# This method should collect the data from the local or remote device
- # and call `parse_update()` when data is available.
+ # and call `parse_status()` when data is available.
#
# TO BE OVERRIDDEN
# This call is synnchronous and blocking.
@@ -177,12 +178,52 @@ class Matter_Plugin
self.device.attribute_updated(self.endpoint, cluster, attribute, fabric_specific)
end
+ #############################################################
+ # generate a new event
+ #
+ def publish_event(cluster, event_id, priority, data0, data1, data2)
+ self.device.events.publish_event(self.endpoint, cluster, event_id, true #-urgent-#, priority, data0, data1, data2)
+ end
+ # def publish_event_non_urgent(cluster, event, priority, data0, data1, data2)
+ # self.device.events.publish_event(self.endpoint, cluster, event, false #-non_urgent-#, priority, data0, data1, data2)
+ # end
+#- testing
+
+var root = matter_device.plugins[0]
+var tlv_solo = matter.TLV.Matter_TLV_item()
+tlv_solo.set(matter.TLV.U4, 42)
+root.publish_event(0x001D, 0, matter.EVENT_CRITICAL, tlv_solo)
+matter_device.events.dump()
+
+-#
+
+# elements are made of `Matter_EventDataIB`
+# var path #
+ # var node # u64 as bytes
+ # var endpoint # u16
+ # var cluster # u32
+ # var event # u32
+ # var is_urgent # bool
+# var event_number # u64 as bytes
+# var priority # u8
+# # one of
+# var epoch_timestamp # u64
+# var system_timestamp # u64
+# var delta_epoch_timestamp # u64
+# var delta_system_timestamp # u64
+# # data
+# var data # any TLV
+
+# EVENT_DEBUG=0
+# EVENT_INFO=1
+# EVENT_CRITICAL=2
+
#############################################################
# consolidate_clusters
#
# Build a consolidated map of all the `CLUSTERS` static vars
# from the inheritance hierarchy
- def consolidate_clusters()
+ def get_clusters()
return self.CLUSTERS
# def real_super(o) return super(o) end # enclose `super()` in a static function to disable special behavior for super in instances
# var ret = {}
@@ -234,20 +275,26 @@ class Matter_Plugin
return self.endpoint
end
def get_cluster_list_sorted()
- return self.device.k2l(self.clusters)
+ return self.device.k2l(self.CLUSTERS)
end
def contains_cluster(cluster)
- return self.clusters.contains(cluster)
+ return self.CLUSTERS.contains(cluster)
end
- def get_attribute_list(cluster)
- return self.clusters.find(cluster, [])
+ # def get_attribute_list(cluster)
+ # return self.clusters.find(cluster, [])
+ # end
+ # returns as a constant bytes of 16-bit ints, big endian
+ def get_attribute_list_bytes(cluster)
+ return self.CLUSTERS.find(cluster, nil)
end
def contains_attribute(cluster, attribute)
- var attr_list = self.clusters.find(cluster)
+ var attr_list = self.CLUSTERS.find(cluster)
+ # log(f"MTR: contains_attribute {cluster=} {attribute=} {attr_list=}")
if attr_list != nil
var idx = 0
- while idx < size(attr_list)
- if attr_list[idx] == attribute
+ var attr_sz = size(attr_list) / 2 # group of 16-bit integers, big endian
+ while idx < attr_sz
+ if attr_list.get(idx * 2, -2) == attribute
return true
end
idx += 1
@@ -256,12 +303,6 @@ class Matter_Plugin
return false
end
- #############################################################
- # Does it handle this endpoint and this cluster
- def has(cluster, endpoint)
- return self.clusters.contains(cluster) && self.endpoints.find(endpoint) != nil
- end
-
def set_name(n)
if n != self.node_label
self.attribute_updated(0x0039, 0x0005)
@@ -320,19 +361,20 @@ class Matter_Plugin
if attribute == 0xFFF8 # GeneratedCommandList
var gcl = TLV.Matter_TLV_array()
return gcl # return empty list
- elif attribute == 0xFFF9 # AcceptedCommandList
+ elif attribute == 0xFFFB # AttributeList
var acli = TLV.Matter_TLV_array()
- var attr_list = self.get_attribute_list(cluster)
+ var attr_list_bytes = self.get_attribute_list_bytes(cluster)
+ var attr_list_bytes_sz = (attr_list_bytes != nil) ? size(attr_list_bytes) : 0
var idx = 0
- while idx < size(attr_list)
- acli.add_TLV(nil, TLV.U2, attr_list[idx])
+ while idx < attr_list_bytes_sz
+ acli.add_TLV(nil, TLV.U2, attr_list_bytes.get(idx * 2, -2))
idx += 1
end
return acli # TODO, empty list for now
elif attribute == 0xFFFA # EventList
var el = TLV.Matter_TLV_array()
return el # return empty list
- elif attribute == 0xFFFB # AttributeList
+ elif attribute == 0xFFF9 # AcceptedCommandList
var al = TLV.Matter_TLV_array()
return al # TODO
elif attribute == 0xFFFC # FeatureMap
@@ -480,10 +522,38 @@ class Matter_Plugin
# The map is pre-cleaned and contains only keys declared in
# `self.UPDATE_COMMANDS` with the adequate case
# (no need to handle case-insensitive)
- def update_virtual(payload_json)
+ def update_virtual(payload)
# pass
end
+ #######################################################################
+ # _parse_update_virtual: parse a single value out of MtrUpdate JSON
+ #
+ # Used internally by `update_virtual`
+ #
+ # Args
+ # payload: the native payload (converted from JSON) from MtrUpdate
+ # key: key name in the JSON payload to read from, do nothing if key does not exist or content is `null`
+ # old_val: previous value, used to detect a change or return the value unchanged
+ # type_func: type enforcer for value, typically `int`, `bool`, `str`, `number`, `real`
+ # cluster/attribute: in case the value has change, publish a change to cluster/attribute
+ #
+ # Returns:
+ # `old_val` if key does not exist, JSON value is `null`, or value is unchanged
+ # or new value from JSON (which is the new shadow value)
+ #
+ def _parse_update_virtual(payload, key, old_val, type_func, cluster, attribute)
+ var val = payload.find(key)
+ if (val != nil)
+ val = type_func(val)
+ if (val != old_val)
+ self.attribute_updated(cluster, attribute)
+ end
+ return val
+ end
+ return old_val
+ end
+
end
matter.Plugin = Matter_Plugin
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Aggregator.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Aggregator.be
index 6e8771736..2e45e036e 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Aggregator.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Aggregator.be
@@ -1,5 +1,5 @@
#
-# Matter_Plugin_Aggregator.be - implements the Aggregator endpoint
+# Matter_Plugin_1_Aggregator.be - implements the Aggregator endpoint
#
# Copyright (C) 2023 Stephan Hadinger & Theo Arends
#
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be
index 619646386..edae4f064 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Device.be
@@ -1,5 +1,5 @@
#
-# Matter_Plugin_Device.be - implements the behavior for a standard Device
+# Matter_Plugin_1_Device.be - implements the behavior for a standard Device
#
# Copyright (C) 2023 Stephan Hadinger & Theo Arends
#
@@ -19,9 +19,23 @@
import matter
+#@ solidify:Matter_Plugin_Device.GetOptionReader,weak
#@ solidify:Matter_Plugin_Device,weak
class Matter_Plugin_Device : Matter_Plugin
+ # Following arguments are specific to bridge devices
+ # static var TYPE = "" # name of the plug-in in json
+ # static var DISPLAY_NAME = "" # display name of the plug-in
+ # static var ARG = "" # additional argument name (or empty if none)
+ static var ARG_HTTP = "url" # domain name
+ # static var UPDATE_TIME = 3000 # update every 3s
+ static var UPDATE_CMD = "Status 11" # command to send for updates
+ static var PROBE_TIMEOUT = 1700 # timeout of 1800 ms for probing, which gives at least 1s for TCP recovery
+ static var SYNC_TIMEOUT = 500 # timeout of 700 ms for probing
+
+ var http_remote # instance of Matter_HTTP_remote
+
+ # clusters for general devices
static var CLUSTERS = matter.consolidate_clusters(_class, {
# 0x001D: inherited # Descriptor Cluster 9.5 p.453
0x0039: [3,5,0x0A,0x0F,0x11,0x12], # Bridged Device Basic Information 9.13 p.485
@@ -38,6 +52,18 @@ class Matter_Plugin_Device : Matter_Plugin
# var tick # tick value when it was last updated
# var node_label # name of the endpoint, used only in bridge mode, "" if none
+ #############################################################
+ # Constructor
+ def init(device, endpoint, arguments)
+ super(self).init(device, endpoint, arguments)
+
+ if self.BRIDGE
+ var addr = arguments.find(self.ARG_HTTP)
+ self.http_remote = self.device.register_http_remote(addr, self.PROBE_TIMEOUT)
+ self.register_cmd_cb()
+ end
+ end
+
#############################################################
# read an attribute
#
@@ -86,24 +112,47 @@ class Matter_Plugin_Device : Matter_Plugin
end
# ====================================================================================================
- elif cluster == 0x0039 # ========== Bridged Device Basic Information 9.13 p.485 ==========
+ elif cluster == 0x0039 # ========== Bridged Device Basic Information 9.13 p.485 ==========
import string
if attribute == 0x0003 # ---------- ProductName / string ----------
- return tlv_solo.set(TLV.UTF1, tasmota.cmd("DeviceName", true)['DeviceName'])
+ if self.BRIDGE
+ var name = self.http_remote.get_info().find("name")
+ return tlv_solo.set_or_nil(TLV.UTF1, name)
+ else
+ return tlv_solo.set(TLV.UTF1, tasmota.cmd("DeviceName", true)['DeviceName'])
+ end
elif attribute == 0x0005 # ---------- NodeLabel / string ----------
return tlv_solo.set(TLV.UTF1, self.get_name())
elif attribute == 0x000A # ---------- SoftwareVersionString / string ----------
- var version_full = tasmota.cmd("Status 2", true)['StatusFWR']['Version']
- var version_end = string.find(version_full, '(')
- if version_end > 0 version_full = version_full[0..version_end - 1] end
- return tlv_solo.set(TLV.UTF1, version_full)
- elif attribute == 0x000F # ---------- SerialNumber / string ----------
- return tlv_solo.set(TLV.UTF1, tasmota.wifi().find("mac", ""))
+ if self.BRIDGE
+ var version_full = self.http_remote.get_info().find("version")
+ if version_full
+ var version_end = string.find(version_full, '(')
+ if version_end > 0 version_full = version_full[0..version_end - 1] end
+ return tlv_solo.set(TLV.UTF1, version_full)
+ else
+ return tlv_solo.set(TLV.NULL, nil)
+ end
+ else
+ var version_full = tasmota.cmd("Status 2", true)['StatusFWR']['Version']
+ var version_end = string.find(version_full, '(')
+ if version_end > 0 version_full = version_full[0..version_end - 1] end
+ return tlv_solo.set(TLV.UTF1, version_full)
+ end
+ elif attribute == 0x000F || attribute == 0x0012 # ---------- SerialNumber / string ----------
+ if self.BRIDGE
+ var mac = self.http_remote.get_info().find("mac")
+ return tlv_solo.set_or_nil(TLV.UTF1, mac)
+ else
+ return tlv_solo.set(TLV.UTF1, tasmota.wifi().find("mac", ""))
+ end
elif attribute == 0x0011 # ---------- Reachable / bool ----------
- return tlv_solo.set(TLV.BOOL, 1) # by default we are reachable
- elif attribute == 0x0012 # ---------- UniqueID / string 32 max ----------
- return tlv_solo.set(TLV.UTF1, tasmota.wifi().find("mac", ""))
+ if self.BRIDGE
+ return tlv_solo.set(TLV.BOOL, self.http_remote.reachable) # TODO find a way to do a ping
+ else
+ return tlv_solo.set(TLV.BOOL, 1) # by default we are reachable
+ end
end
end
@@ -200,9 +249,194 @@ class Matter_Plugin_Device : Matter_Plugin
# sensors
_stats_json_inner("shadow_contact", "Contact")
_stats_json_inner("shadow_occupancy", "Occupancy")
+
+ # air quality
+ _stats_json_inner("shadow_air_quality", "AirQuality")
+ _stats_json_inner("shadow_co2", "CO2")
+ _stats_json_inner("shadow_pm1", "PM1")
+ _stats_json_inner("shadow_pm2_5", "PM2.5")
+ _stats_json_inner("shadow_pm10", "PM10")
+ _stats_json_inner("shadow_tvoc", "TVOC")
+
# print(ret)
return ret
end
+ #############################################################
+ # For Bridge devices
+ #############################################################
+ #############################################################
+ # register_cmd_cb
+ #
+ # Register recurrent command and callback
+ # Defined as a separate method to allow override
+ def register_cmd_cb()
+ self.http_remote.add_schedule(self.UPDATE_CMD, self.UPDATE_TIME,
+ / status,payload,cmd -> self.parse_http_response(status,payload,cmd))
+ end
+
+ #############################################################
+ # Stub for updating shadow values (local copies of what we published to the Matter gateway)
+ #
+ # This method should collect the data from the local or remote device
+ # and call `parse_status(, )` when data is available.
+ def update_shadow()
+ if self.BRIDGE && self.tick != self.device.tick # don't force an update if we just received it
+ var ret = self.call_remote_sync(self.UPDATE_CMD)
+ if ret
+ self.parse_http_response(1, ret, self.UPDATE_CMD)
+ end
+ end
+ self.tick = self.device.tick
+ end
+
+ #############################################################
+ # Stub for updating shadow values (local copies of what we published to the Matter gateway)
+ #
+ # TO BE OVERRIDDEN
+ def parse_status(data, index)
+ end
+
+ #############################################################
+ # call_remote_sync
+ #
+ # Call a remote Tasmota device, returns Berry native map or nil
+ # arg can be nil, in this case `cmd` has it all
+ def call_remote_sync(cmd, arg)
+ if self.BRIDGE
+ # if !self.http_remote return nil end
+ import json
+
+ var retry = 2 # try 2 times if first failed
+ if arg != nil cmd = cmd + ' ' + str(arg) end
+ while retry > 0
+ var ret = self.http_remote.call_sync(cmd, self.SYNC_TIMEOUT)
+ if ret != nil
+ self.http_remote.device_is_alive(true)
+ var j = json.load(ret)
+ return j
+ end
+ retry -= 1
+ log("MTR: HTTP GET retrying", 3)
+ end
+ self.http_remote.device_is_alive(false)
+ return nil
+ end
+ end
+
+ #############################################################
+ # parse_http_response
+ #
+ # Parse response from HTTP API and update shadows
+ # We support:
+ # `Status 8`: {"StatusSNS":{ [...] }}
+ # `Status 11`: {"StatusSTS":{ [...] }}
+ # `Status 13`: {"StatusSHT":{ [...] }}
+ def parse_http_response(status, payload, cmd)
+ if self.BRIDGE
+ self.tick = self.device.tick # avoid new force update in same tick
+ self.http_remote.parse_status_response_and_call_method(status, payload, cmd, self, self.parse_status)
+ end
+ end
+
+ #############################################################
+ # every_250ms
+ #
+ # check if the timer expired and update_shadow() needs to be called
+ def every_250ms()
+ if self.BRIDGE
+ self.http_remote.scheduler() # defer to HTTP scheduler
+ # avoid calling update_shadow() since it's not applicable for HTTP remote
+ else
+ super(self).every_250ms()
+ end
+ end
+
+ #############################################################
+ # web_values
+ #
+ # Show values of the remote device as HTML
+ static var PREFIX = "| %s "
+ def web_values()
+ import webserver
+ self.web_values_prefix()
+ webserver.content_send("<-- (" + self.DISPLAY_NAME + ") -->")
+ end
+
+ # Show prefix before web value
+ def web_values_prefix()
+ import webserver
+ var name = self.get_name()
+ webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : ""))
+ end
+
+ # Show on/off value as html
+ def web_value_onoff(onoff)
+ var onoff_html = (onoff != nil ? (onoff ? "On " : "Off") : "")
+ return onoff_html
+ end
+
+ #############################################################
+ # GetOption reader to decode `SetOption` values from `Status 3`
+ static class GetOptionReader
+ var flag, flag2, flag3, flag4, flag5, flag6
+
+ def init(j)
+ if j == nil raise "value_error", "invalid json" end
+ var so = j['SetOption']
+ self.flag = bytes().fromhex(so[0]).reverse()
+ self.flag2 = bytes().fromhex(so[1])
+ self.flag3 = bytes().fromhex(so[2]).reverse()
+ self.flag4 = bytes().fromhex(so[3]).reverse()
+ self.flag5 = bytes().fromhex(so[4]).reverse()
+ self.flag6 = bytes().fromhex(so[5]).reverse()
+ end
+ def getoption(x)
+ if x < 32 # SetOption0 .. 31 = Settings->flag
+ return self.flag.getbits(x, 1)
+ elif x < 50 # SetOption32 .. 49 = Settings->param
+ return self.flag2.get(x - 32, 1)
+ elif x < 82 # SetOption50 .. 81 = Settings->flag3
+ return self.flag3.getbits(x - 50, 1)
+ elif x < 114 # SetOption82 .. 113 = Settings->flag4
+ return self.flag4.getbits(x - 82, 1)
+ elif x < 146 # SetOption114 .. 145 = Settings->flag5
+ return self.flag5.getbits(x - 114, 1)
+ elif x < 178 # SetOption146 .. 177 = Settings->flag6
+ return self.flag6.getbits(x - 146, 1)
+ end
+ end
+ end
+ #############################################################
+ #############################################################
+
+ #######################################################################
+ # _parse_sensor_entry: internal helper function
+ #
+ # Used internally by `update_virtual`
+ #
+ # Args
+ # payload: the native payload (converted from JSON) from MtrUpdate
+ # key: key name in the JSON payload to read from, do nothing if key does not exist or content is `null`
+ # type_func: type enforcer for value, typically `int`, `bool`, `str`, `number`, `real`
+ # old_val: previous value, used to detect a change or return the value unchanged
+ # cluster/attribute: in case the value has change, publish a change to cluster/attribute
+ #
+ # Returns:
+ # `old_val` if key does not exist, JSON value is `null`, or value is unchanged
+ # or new value from JSON (which is the new shadow value)
+ #
+ def _parse_sensor_entry(payload, key, old_val, type_func, cluster, attribute)
+ var val = payload.find(key)
+ if (val != nil)
+ val = type_func(val)
+ if val != old_val
+ self.attribute_updated(cluster, attribute) # CurrentPositionTiltPercent100ths
+ end
+ return val
+ end
+ return old_val
+ end
+
end
matter.Plugin_Device = Matter_Plugin_Device
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be
index 086d335aa..21dd0851b 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be
@@ -1,5 +1,5 @@
#
-# Matter_Plugin_Root.be - implements the core features that a Matter device must implemment
+# Matter_Plugin_1_Root.be - implements the core features that a Matter device must implemment
#
# Copyright (C) 2023 Stephan Hadinger & Theo Arends
#
@@ -47,9 +47,11 @@ class Matter_Plugin_Root : Matter_Plugin
#############################################################
# Constructor
- # def init(device, endpoint, config)
- # super(self).init(device, endpoint, config)
- # end
+ def init(device, endpoint, config)
+ super(self).init(device, endpoint, config)
+ self.publish_event(0x0028, 0x00, matter.EVENT_CRITICAL, matter.TLV.Matter_TLV_item().set(matter.TLV.U4, tasmota.version())) # Event StartUp - Software Version
+ self.publish_event(0x0033, 0x03, matter.EVENT_CRITICAL, matter.TLV.Matter_TLV_item().set(matter.TLV.U1, 1)) # Event BootReason - PowerOnReboot - TODO if we need to refine
+ end
#############################################################
# read an attribute
@@ -94,13 +96,13 @@ class Matter_Plugin_Root : Matter_Plugin
eth.add_TLV(2, TLV.BOOL, 1) # OffPremiseServicesReachableIPv4
eth.add_TLV(3, TLV.NULL, nil) # OffPremiseServicesReachableIPv6
var mac = bytes().fromhex(string.replace(tas_eth.find("mac", ""), ":", ""))
- eth.add_TLV(4, TLV.B1, mac) # HardwareAddress
- var ip4 = eth.add_array(5) # IPv4Addresses
+ eth.add_TLV(4, TLV.B1, mac) # HardwareAddress
+ var ip4 = eth.add_array(5) # IPv4Addresses
ip4.add_TLV(nil, TLV.B1, matter.get_ip_bytes(tas_eth.find("ip", "")))
- var ip6 = eth.add_array(6) # IPv6Addresses
+ var ip6 = eth.add_array(6) # IPv6Addresses
ip6.add_TLV(nil, TLV.B1, matter.get_ip_bytes(tas_eth.find("ip6local", "")))
ip6.add_TLV(nil, TLV.B1, matter.get_ip_bytes(tas_eth.find("ip6", "")))
- eth.add_TLV(7, TLV.U1, 2) # InterfaceType, p646
+ eth.add_TLV(7, TLV.U1, 2) # InterfaceType, p646
end
var tas_wif = tasmota.wifi()
@@ -111,13 +113,13 @@ class Matter_Plugin_Root : Matter_Plugin
wif.add_TLV(2, TLV.BOOL, 1) # OffPremiseServicesReachableIPv4
wif.add_TLV(3, TLV.NULL, nil) # OffPremiseServicesReachableIPv6
var mac = bytes().fromhex(string.replace(tas_wif.find("mac", ""), ":", ""))
- wif.add_TLV(4, TLV.B1, mac) # HardwareAddress
- var ip4 = wif.add_array(5) # IPv4Addresses
+ wif.add_TLV(4, TLV.B1, mac) # HardwareAddress
+ var ip4 = wif.add_array(5) # IPv4Addresses
ip4.add_TLV(nil, TLV.B1, matter.get_ip_bytes(tas_wif.find("ip", "")))
- var ip6 = wif.add_array(6) # IPv6Addresses
+ var ip6 = wif.add_array(6) # IPv6Addresses
ip6.add_TLV(nil, TLV.B1, matter.get_ip_bytes(tas_wif.find("ip6local", "")))
ip6.add_TLV(nil, TLV.B1, matter.get_ip_bytes(tas_wif.find("ip6", "")))
- wif.add_TLV(7, TLV.U1, 1) # InterfaceType, p646
+ wif.add_TLV(7, TLV.U1, 1) # InterfaceType, p646
end
return nwi
elif attribute == 0x0001 # ---------- RebootCount u16 ----------
@@ -142,7 +144,7 @@ class Matter_Plugin_Root : Matter_Plugin
return tlv_solo.set(TLV.U1, 3) # MillisecondsGranularity (NTP every hour, i.e. 36ms max drift)
# TODO add some missing args
elif attribute == 0x0007 # ---------- LocalTime / epoch_us ----------
- var epoch_us = int64(tasmota.rtc()['local']) * int64(1000000)
+ var epoch_us = int64(tasmota.rtc('local')) * int64(1000000)
return tlv_solo.set(TLV.U8, epoch_us) # TODO test the conversion of int64()
end
@@ -194,23 +196,19 @@ class Matter_Plugin_Root : Matter_Plugin
# ====================================================================================================
elif cluster == 0x003C # ========== Administrator Commissioning Cluster 11.18 p.725 ==========
if attribute == 0x0000 # ---------- WindowStatus / u8 ----------
- var commissioning_open = self.device.is_commissioning_open()
- var basic_commissioning = self.device.is_root_commissioning_open()
+ var commissioning_open = self.device.commissioning.is_commissioning_open()
+ var basic_commissioning = self.device.commissioning.is_root_commissioning_open()
var val = commissioning_open ? (basic_commissioning ? 2 #-BasicWindowOpen-# : 1 #-EnhancedWindowOpen-#) : 0 #-WindowNotOpen-#
return tlv_solo.set(TLV.U1, val)
elif attribute == 0x0001 # ---------- AdminFabricIndex / u16 ----------
- var admin_fabric = self.device.commissioning_admin_fabric
+ var admin_fabric = self.device.commissioning.commissioning_admin_fabric
if admin_fabric != nil
- return tlv_solo.set(TLV.U2, admin_fabric.get_fabric_index())
- else
- return tlv_solo.set(TLV.NULL, nil)
+ return tlv_solo.set_or_nil(TLV.U2, admin_fabric.get_fabric_index())
end
elif attribute == 0x0002 # ---------- AdminVendorId / u16 ----------
- var admin_fabric = self.device.commissioning_admin_fabric
+ var admin_fabric = self.device.commissioning.commissioning_admin_fabric
if admin_fabric != nil
- return tlv_solo.set(TLV.U2, admin_fabric.get_admin_vendor())
- else
- return tlv_solo.set(TLV.NULL, nil)
+ return tlv_solo.set_or_nil(TLV.U2, admin_fabric.get_admin_vendor())
end
end
@@ -223,7 +221,7 @@ class Matter_Plugin_Root : Matter_Plugin
elif attribute == 0x0001 # ---------- VendorName / string ----------
return tlv_solo.set(TLV.UTF1, "Tasmota")
elif attribute == 0x0002 # ---------- VendorID / vendor-id ----------
- return tlv_solo.set(TLV.U2, self.device.vendorid) # Vendor ID reserved for development
+ return tlv_solo.set(TLV.U2, self.device.VENDOR_ID) # Vendor ID reserved for development
elif attribute == 0x0003 # ---------- ProductName / string ----------
return tlv_solo.set(TLV.UTF1, tasmota.cmd("DeviceName", true)['DeviceName'])
elif attribute == 0x0004 # ---------- ProductID / u16 (opt) ----------
@@ -237,7 +235,7 @@ class Matter_Plugin_Root : Matter_Plugin
elif attribute == 0x0008 # ---------- HardwareVersionString / string ----------
return tlv_solo.set(TLV.UTF1, tasmota.cmd("Status 2", true)['StatusFWR']['Hardware'])
elif attribute == 0x0009 # ---------- SoftwareVersion / u32 ----------
- return tlv_solo.set(TLV.U2, 1)
+ return tlv_solo.set(TLV.U4, tasmota.version())
elif attribute == 0x000A # ---------- SoftwareVersionString / string ----------
var version_full = tasmota.cmd("Status 2", true)['StatusFWR']['Version']
var version_end = string.find(version_full, '(')
@@ -389,7 +387,7 @@ class Matter_Plugin_Root : Matter_Plugin
ccr.add_TLV(1, TLV.UTF1, "") # DebugText = ""
ctx.command = 0x05 # CommissioningCompleteResponse
- self.device.start_commissioning_complete_deferred(session)
+ self.device.commissioning.start_commissioning_complete_deferred(session)
return ccr
else
raise "context_error", "CommissioningComplete: no fabric attached"
@@ -426,7 +424,7 @@ class Matter_Plugin_Root : Matter_Plugin
var ac = session.get_ac()
var attestation_tbs = attestation_message + ac
- # tasmota.log("MTR: attestation_tbs=" + attestation_tbs.tohex(), 4)
+ # log("MTR: attestation_tbs=" + attestation_tbs.tohex(), 4)
var attestation_signature = crypto.EC_P256().ecdsa_sign_sha256(matter.DAC_Priv_FFF1_8000(), attestation_tbs)
@@ -444,7 +442,7 @@ class Matter_Plugin_Root : Matter_Plugin
var CSRNonce = val.findsubval(0) # octstr 32
if size(CSRNonce) != 32 return nil end # check size on nonce
var IsForUpdateNOC = val.findsubval(1, false) # bool
- # tasmota.log(format("MTR: CSRRequest CSRNonce=%s IsForUpdateNOC=%s", str(CSRNonce), str(IsForUpdateNOC)), 4)
+ # log(format("MTR: CSRRequest CSRNonce=%s IsForUpdateNOC=%s", str(CSRNonce), str(IsForUpdateNOC)), 4)
var csr = session.gen_CSR()
@@ -454,7 +452,7 @@ class Matter_Plugin_Root : Matter_Plugin
var nocsr_elements_message = nocsr_elements.tlv2raw()
# sign with attestation challenge
var nocsr_tbs = nocsr_elements_message + session.get_ac()
- # tasmota.log("MTR: nocsr_tbs=" + nocsr_tbs.tohex(), 4)
+ # log("MTR: nocsr_tbs=" + nocsr_tbs.tohex(), 4)
var attestation_signature = crypto.EC_P256().ecdsa_sign_sha256(matter.DAC_Priv_FFF1_8000(), nocsr_tbs)
# create CSRResponse
@@ -470,12 +468,12 @@ class Matter_Plugin_Root : Matter_Plugin
var RootCACertificate = val.findsubval(0) # octstr 400 max
# TODO - additional tests are expected according to 11.17.7.13. AddTrustedRootCertificate Command
session.set_temp_ca(RootCACertificate)
- # tasmota.log("MTR: received ca_root="+RootCACertificate.tohex(), 4)
+ # log("MTR: received ca_root="+RootCACertificate.tohex(), 4)
ctx.status = matter.SUCCESS # OK
return nil # trigger a standalone ack
elif command == 0x0006 # ---------- AddNOC ----------
- tasmota.log("MTR: AddNoc Args=" + str(val), 4)
+ log("MTR: AddNoc Args=" + str(val), 4)
var NOCValue = val.findsubval(0) # octstr max 400
var ICACValue = val.findsubval(1) # octstr max 400
# Apple sends an empty ICAC instead of a missing attribute, fix this
@@ -483,14 +481,14 @@ class Matter_Plugin_Root : Matter_Plugin
var IpkValue = val.findsubval(2) # octstr max 16
var CaseAdminSubject = val.findsubval(3)
var AdminVendorId = val.findsubval(4)
- # tasmota.log("MTR: AddNoc NOCValue=" + (NOCValue ? NOCValue.tohex() : ""), 3)
- # tasmota.log("MTR: AddNoc ICACValue=" + (ICACValue ? ICACValue.tohex() : ""), 3)
- # tasmota.log("MTR: AddNoc IpkValue=" + str(IpkValue), 3)
- # tasmota.log("MTR: AddNoc CaseAdminSubject=" + str(CaseAdminSubject), 3)
- # tasmota.log("MTR: AddNoc AdminVendorId=" + str(AdminVendorId), 3)
+ # log("MTR: AddNoc NOCValue=" + (NOCValue ? NOCValue.tohex() : ""), 3)
+ # log("MTR: AddNoc ICACValue=" + (ICACValue ? ICACValue.tohex() : ""), 3)
+ # log("MTR: AddNoc IpkValue=" + str(IpkValue), 3)
+ # log("MTR: AddNoc CaseAdminSubject=" + str(CaseAdminSubject), 3)
+ # log("MTR: AddNoc AdminVendorId=" + str(AdminVendorId), 3)
if session.get_temp_ca() == nil
- tasmota.log("MTR: Error: AdNOC without CA", 2)
+ log("MTR: Error: AdNOC without CA", 2)
return nil
end
@@ -506,47 +504,47 @@ class Matter_Plugin_Root : Matter_Plugin
var dnlist = noc_cert.findsub(6)
var fabric_id = dnlist.findsubval(21)
var deviceid = dnlist.findsubval(17)
- # tasmota.log("MTR: AddNoc noc_cert=" + str(noc_cert), 3)
- # tasmota.log("MTR: AddNoc dnlist=" + str(dnlist), 3)
+ # log("MTR: AddNoc noc_cert=" + str(noc_cert), 3)
+ # log("MTR: AddNoc dnlist=" + str(dnlist), 3)
if !fabric_id || !deviceid
- tasmota.log("MTR: Error: no fabricid nor deviceid in NOC certificate", 2)
+ log("MTR: Error: no fabricid nor deviceid in NOC certificate", 2)
return false
end
# convert fo bytes(8)
if type(fabric_id) == 'int' fabric_id = int64.fromu32(fabric_id).tobytes() else fabric_id = fabric_id.tobytes() end
if type(deviceid) == 'int' deviceid = int64.fromu32(deviceid).tobytes() else deviceid = deviceid.tobytes() end
- # tasmota.log("MTR: AddNoc fabric_id=" + str(fabric_id), 3)
- # tasmota.log("MTR: AddNoc deviceid=" + str(deviceid), 3)
+ # log("MTR: AddNoc fabric_id=" + str(fabric_id), 3)
+ # log("MTR: AddNoc deviceid=" + str(deviceid), 3)
var root_ca_pub = session.get_temp_ca_pub()
- # tasmota.log("MTR: AddNoc root_ca_pub=" + str(root_ca_pub), 3)
- # tasmota.log("MTR: AddNoc root_ca_pub=" + root_ca_pub.tohex(), 3)
+ # log("MTR: AddNoc root_ca_pub=" + str(root_ca_pub), 3)
+ # log("MTR: AddNoc root_ca_pub=" + root_ca_pub.tohex(), 3)
root_ca_pub = root_ca_pub[1..] # remove first byte as per Matter specification
var info = bytes().fromstring("CompressedFabric") # as per spec, 4.3.2.2 p.99
var hk = crypto.HKDF_SHA256()
var fabric_rev = fabric_id.copy().reverse()
var k_fabric = hk.derive(root_ca_pub, fabric_rev, info, 8)
- var parent_fabric = session._fabric ? session._fabric : self.device.commissioning_admin_fabric # get parent fabric whether CASE or PASE
+ var parent_fabric = session._fabric ? session._fabric : self.device.commissioning.commissioning_admin_fabric # get parent fabric whether CASE or PASE
new_fabric.set_fabric_device(fabric_id, deviceid, k_fabric, parent_fabric)
- # tasmota.log("MTR: AddNoc k_fabric=" + str(k_fabric), 3)
+ # log("MTR: AddNoc k_fabric=" + str(k_fabric), 3)
# We have a candidate fabric, add it as expirable for 2 minutes
new_fabric.fabric_candidate()
# move to next step
- self.device.start_operational_discovery_deferred(new_fabric)
+ self.device.commissioning.start_operational_discovery_deferred(new_fabric)
# we keep the PASE session for 1 minute
if session.is_PASE()
session.set_expire_in_seconds(60)
end
- # tasmota.log("MTR: ------------------------------------------", 3)
- # tasmota.log("MTR: session=" + matter.inspect(session), 3)
- # tasmota.log("MTR: fabric=" + matter.inspect(session._fabric), 3)
- # tasmota.log("MTR: ------------------------------------------", 3)
+ # log("MTR: ------------------------------------------", 3)
+ # log("MTR: session=" + matter.inspect(session), 3)
+ # log("MTR: fabric=" + matter.inspect(session._fabric), 3)
+ # log("MTR: ------------------------------------------", 3)
new_fabric.log_new_fabric() # log that we registered a new fabric
new_fabric.assign_fabric_index()
# create NOCResponse
@@ -562,7 +560,7 @@ class Matter_Plugin_Root : Matter_Plugin
elif command == 0x0009 # ---------- UpdateFabricLabel ----------
var label = val.findsubval(0) # Label string max 32
session.set_fabric_label(label)
- tasmota.log(format("MTR: . Update fabric '%s' label='%s'", session._fabric.get_fabric_id().copy().reverse().tohex(), str(label)), 3)
+ log(format("MTR: . Update fabric '%s' label='%s'", session._fabric.get_fabric_id().copy().reverse().tohex(), str(label)), 3)
# create NOCResponse
# 0=StatusCode
@@ -580,7 +578,7 @@ class Matter_Plugin_Root : Matter_Plugin
for fab: self.device.sessions.active_fabrics()
if fab.get_fabric_index() == index
- # tasmota.log("MTR: removing fabric " + fab.get_fabric_id().copy().reverse().tohex(), 2)
+ # log("MTR: removing fabric " + fab.get_fabric_id().copy().reverse().tohex(), 2)
# defer actual removal to send a response
fab.mark_for_deletion() # this should not appear anymore in the list
tasmota.set_timer(2000, def () self.device.remove_fabric(fab) end)
@@ -596,7 +594,7 @@ class Matter_Plugin_Root : Matter_Plugin
return nocr
end
end
- tasmota.log("MTR: RemoveFabric fabric("+str(index)+") not found", 2)
+ log("MTR: RemoveFabric fabric("+str(index)+") not found", 2)
ctx.status = matter.INVALID_ACTION
return nil # trigger a standalone ack
@@ -612,7 +610,7 @@ class Matter_Plugin_Root : Matter_Plugin
var iterations = val.findsubval(3) # Iterations u4
var salt = val.findsubval(4) # Salt octstr
- tasmota.log(format("MTR: OpenCommissioningWindow(timeout=%i, passcode=%s, discriminator=%i, iterations=%i, salt=%s)",
+ log(format("MTR: OpenCommissioningWindow(timeout=%i, passcode=%s, discriminator=%i, iterations=%i, salt=%s)",
timeout, passcode_verifier.tohex(), discriminator, iterations, salt.tohex()), 4)
# check values
@@ -621,7 +619,7 @@ class Matter_Plugin_Root : Matter_Plugin
return nil # trigger a standalone ack
end
if size(passcode_verifier) != 32+65 || size(salt) < 16 || size(salt) > 32
- tasmota.log("MTR: wrong size for PAKE parameters", 2)
+ log("MTR: wrong size for PAKE parameters", 2)
ctx.status = matter.CONSTRAINT_ERROR
return nil # trigger a standalone ack
end
@@ -629,17 +627,17 @@ class Matter_Plugin_Root : Matter_Plugin
var w0 = passcode_verifier[0..31]
var L = passcode_verifier[32..]
- self.device.start_basic_commissioning(timeout, iterations, discriminator, salt, w0, #-w1,-# L, session.get_fabric())
+ self.device.commissioning.start_basic_commissioning(timeout, iterations, discriminator, salt, w0, #-w1,-# L, session.get_fabric())
# TODO announce in MDNS
return true # OK
elif command == 0x0001 # ---------- OpenBasicCommissioningWindow ----------
var commissioning_timeout = val.findsubval(0) # CommissioningTimeout
- tasmota.log("MTR: OpenBasicCommissioningWindow commissioning_timeout="+str(commissioning_timeout), 3)
- self.device.start_root_basic_commissioning(commissioning_timeout)
+ log("MTR: OpenBasicCommissioningWindow commissioning_timeout="+str(commissioning_timeout), 3)
+ self.device.commissioning.start_root_basic_commissioning(commissioning_timeout)
return true
elif command == 0x0002 # ---------- RevokeCommissioning ----------
# TODO add checks that the commissioning window was opened by the same fabric
- self.device.stop_basic_commissioning()
+ self.device.commissioning.stop_basic_commissioning()
return true
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Bridge_HTTP.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Bridge_HTTP.be
deleted file mode 100644
index 75b2316df..000000000
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Bridge_HTTP.be
+++ /dev/null
@@ -1,296 +0,0 @@
-#
-# Matter_Plugin_Bridge_HTTP.be - implements base class for a Bridge via HTTP
-#
-# Copyright (C) 2023 Stephan Hadinger & Theo Arends
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-#
-
-import matter
-
-# Matter plug-in for core behavior
-
-#@ solidify:Matter_Plugin_Bridge_HTTP.GetOptionReader,weak
-#@ solidify:Matter_Plugin_Bridge_HTTP,weak
-
-class Matter_Plugin_Bridge_HTTP : Matter_Plugin_Device
- static var TYPE = "" # name of the plug-in in json
- static var DISPLAY_NAME = "" # display name of the plug-in
- static var ARG = "" # additional argument name (or empty if none)
- static var ARG_HTTP = "url" # domain name
- static var UPDATE_TIME = 3000 # update every 3s
- static var UPDATE_CMD = "Status 11" # command to send for updates
- static var PROBE_TIMEOUT = 1700 # timeout of 1800 ms for probing, which gives at least 1s for TCP recovery
- static var SYNC_TIMEOUT = 500 # timeout of 700 ms for probing
- # static var CLUSTERS = {
- # # 0x001D: inherited # Descriptor Cluster 9.5 p.453
- # # 0x0003: inherited # Identify 1.2 p.16
- # # 0x0004: inherited # Groups 1.3 p.21
- # # 0x0005: inherited # Scenes 1.4 p.30 - no writable
- # # 0x0006: [0], # On/Off 1.5 p.48
-
- # # 0x0028: [0,1,2,3,4,5,6,7,8,9,0x0A,0x0F,0x12,0x13],# Basic Information Cluster cluster 11.1 p.565
- # # 0x0039: [0x11] # Bridged Device Basic Information 9.13 p.485
-
- # }
-
- var http_remote # instance of Matter_HTTP_remote
-
- #############################################################
- # Constructor
- def init(device, endpoint, arguments)
- super(self).init(device, endpoint, arguments)
-
- var addr = arguments.find(self.ARG_HTTP)
- self.http_remote = self.device.register_http_remote(addr, self.PROBE_TIMEOUT)
- self.register_cmd_cb()
- end
-
- #############################################################
- # is_local_device
- #
- # Returns true if it's a local device, or false for a
- # remotely device controlled via HTTP
- def is_local_device()
- return false
- end
-
- #############################################################
- # register_cmd_cb
- #
- # Register recurrent command and callback
- # Defined as a separate method to allow override
- def register_cmd_cb()
- self.http_remote.add_schedule(self.UPDATE_CMD, self.UPDATE_TIME,
- / status,payload,cmd -> self.parse_http_response(status,payload,cmd))
- end
-
- #############################################################
- # Stub for updating shadow values (local copies of what we published to the Matter gateway)
- #
- # This method should collect the data from the local or remote device
- # and call `parse_update()` when data is available.
- def update_shadow()
- self.tick = self.device.tick
- var ret = self.call_remote_sync(self.UPDATE_CMD)
- if ret
- self.parse_http_response(1, ret, self.UPDATE_CMD)
- end
- end
-
- #############################################################
- # Stub for updating shadow values (local copies of what we published to the Matter gateway)
- #
- # TO BE OVERRIDDEN
- def parse_update(data, index)
- end
-
- #############################################################
- # call_remote_sync
- #
- # Call a remote Tasmota device, returns Berry native map or nil
- # arg can be nil, in this case `cmd` has it all
- def call_remote_sync(cmd, arg)
- # if !self.http_remote return nil end
- import json
-
- var retry = 2 # try 2 times if first failed
- if arg != nil cmd = cmd + ' ' + str(arg) end
- while retry > 0
- var ret = self.http_remote.call_sync(cmd, self.SYNC_TIMEOUT)
- if ret != nil
- self.http_remote.device_is_alive(true)
- var j = json.load(ret)
- return j
- end
- retry -= 1
- tasmota.log("MTR: HTTP GET retrying", 3)
- end
- self.http_remote.device_is_alive(false)
- return nil
- end
-
- #############################################################
- # parse_http_response
- #
- # Parse response from HTTP API and update shadows
- # We support:
- # `Status 8`: {"StatusSNS":{ [...] }}
- # `Status 11`: {"StatusSTS":{ [...] }}
- # `Status 13`: {"StatusSHT":{ [...] }}
- def parse_http_response(status, payload, cmd)
- if status > 0
- # device is known to be reachable
- self.http_remote.device_is_alive(true)
- var tick = self.device.tick
-
- import json
- var j = json.load(payload)
- var code = nil # index of Status
- if j
- # filter
- if j.contains("StatusSNS") # Status 8
- j = j["StatusSNS"]
- code = 8
- elif j.contains("StatusSTS") # Status 11
- j = j["StatusSTS"]
- code = 11
- elif j.contains("StatusSHT") # Status 13
- j = j["StatusSTS"]
- code = 13
- end
- # convert to shadow values
- self.parse_update(j, code) # call parser
- end
- end
- end
-
- # #############################################################
- # # is_reachable()
- # #
- # # Pings the device and checks if it's reachable
- # def is_reachable_lazy_sync()
- # var cur_tick = self.device.tick
- # if cur_tick != self.tick
- # var ret = self.call_remote_sync("", "") # empty command works as a ping
- # self.http_remote.device_is_alive(ret != nil)
- # end
- # return self.http_remote.reachable
- # end
-
- #############################################################
- # read attribute
- #
- def read_attribute(session, ctx, tlv_solo)
- var TLV = matter.TLV
- var cluster = ctx.cluster
- var attribute = ctx.attribute
-
- # ====================================================================================================
- if cluster == 0x0039 # ========== Bridged Device Basic Information 9.13 p.485 ==========
- import string
-
- if attribute == 0x0003 # ---------- ProductName / string ----------
- var name = self.http_remote.get_info().find("name")
- if name
- return tlv_solo.set(TLV.UTF1, name)
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
- elif attribute == 0x000A # ---------- SoftwareVersionString / string ----------
- var version_full = self.http_remote.get_info().find("version")
- if version_full
- var version_end = string.find(version_full, '(')
- if version_end > 0 version_full = version_full[0..version_end - 1] end
- return tlv_solo.set(TLV.UTF1, version_full)
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
- elif attribute == 0x000F || attribute == 0x0012 # ---------- SerialNumber || UniqueID / string ----------
- var mac = self.http_remote.get_info().find("mac")
- if mac
- return tlv_solo.set(TLV.UTF1, mac)
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
- elif attribute == 0x0011 # ---------- Reachable / bool ----------
- # self.is_reachable_lazy_sync() # Not needed anymore
- return tlv_solo.set(TLV.BOOL, self.http_remote.reachable) # TODO find a way to do a ping
- end
-
- end
- return super(self).read_attribute(session, ctx, tlv_solo)
- end
-
- #############################################################
- # every_250ms
- #
- # check if the timer expired and update_shadow() needs to be called
- def every_250ms()
- self.http_remote.scheduler() # defer to HTTP scheduler
- # avoid calling update_shadow() since it's not applicable for HTTP remote
- end
-
- #############################################################
- # web_values
- #
- # Show values of the remote device as HTML
- static var PREFIX = "| %s "
- def web_values()
- import webserver
- self.web_values_prefix()
- webserver.content_send("<-- (" + self.DISPLAY_NAME + ") -->")
- end
-
- # Show prefix before web value
- def web_values_prefix()
- import webserver
- var name = self.get_name()
- webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : ""))
- end
-
- # Show on/off value as html
- def web_value_onoff(onoff)
- var onoff_html = (onoff != nil ? (onoff ? "On " : "Off") : "")
- return onoff_html
- end
-
- #############################################################
- # GetOption reader to decode `SetOption` values from `Status 3`
- static class GetOptionReader
- var flag, flag2, flag3, flag4, flag5, flag6
-
- def init(j)
- if j == nil raise "value_error", "invalid json" end
- var so = j['SetOption']
- self.flag = bytes().fromhex(so[0]).reverse()
- self.flag2 = bytes().fromhex(so[1])
- self.flag3 = bytes().fromhex(so[2]).reverse()
- self.flag4 = bytes().fromhex(so[3]).reverse()
- self.flag5 = bytes().fromhex(so[4]).reverse()
- self.flag6 = bytes().fromhex(so[5]).reverse()
- end
- def getoption(x)
- if x < 32 # SetOption0 .. 31 = Settings->flag
- return self.flag.getbits(x, 1)
- elif x < 50 # SetOption32 .. 49 = Settings->param
- return self.flag2.get(x - 32, 1)
- elif x < 82 # SetOption50 .. 81 = Settings->flag3
- return self.flag3.getbits(x - 50, 1)
- elif x < 114 # SetOption82 .. 113 = Settings->flag4
- return self.flag4.getbits(x - 82, 1)
- elif x < 146 # SetOption114 .. 145 = Settings->flag5
- return self.flag5.getbits(x - 114, 1)
- elif x < 178 # SetOption146 .. 177 = Settings->flag6
- return self.flag6.getbits(x - 146, 1)
- end
- end
- end
-
- #- Examples
-
- import json
-
- var p = '{"SerialLog":2,"WebLog":3,"MqttLog":0,"SysLog":0,"LogHost":"","LogPort":514,"SSId":["Livebox-781A",""],"TelePeriod":300,"Resolution":"558180C0","SetOption":["00008009","2805C80001800600003C5A0A192800000000","00000080","00006000","00006000","00000020"]}'
- var j = json.load(p)
-
- var gor = matter.Plugin_Bridge_HTTP.GetOptionReader(j)
- assert(gor.getoption(151) == 1)
- assert(gor.getoption(150) == 0)
- assert(gor.getoption(32) == 40)
- assert(gor.getoption(37) == 128)
-
- -#
-end
-matter.Plugin_Bridge_HTTP = Matter_Plugin_Bridge_HTTP
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Fan.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Fan.be
new file mode 100644
index 000000000..510926a1d
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Fan.be
@@ -0,0 +1,202 @@
+#
+# Matter_Plugin_2_Fan.be - implements the behavior for a generic Fan
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+# Matter plug-in for core behavior
+
+#@ solidify:Matter_Plugin_Fan,weak
+
+class Matter_Plugin_Fan : Matter_Plugin_Device
+ static var TYPE = "fan" # name of the plug-in in json
+ static var DISPLAY_NAME = "Fan" # display name of the plug-in
+ # static var ARG = "" # additional argument name (or empty if none)
+ static var CLUSTERS = matter.consolidate_clusters(_class, {
+ # 0x001D: inherited # Descriptor Cluster 9.5 p.453
+ # 0x0003: inherited # Identify 1.2 p.16
+ # 0x0004: inherited # Groups 1.3 p.21
+ # 0x0005: inherited # Scenes 1.4 p.30 - no writable
+ 0x0202: [0,1,2,3], # Fan
+ })
+ static var UPDATE_COMMANDS = matter.UC_LIST(_class, "FanMode", "FanSpeed", "FanSpeed255")
+ static var TYPES = { 0x002B: 2 } # Fan
+
+ # Inherited
+ # var device # reference to the `device` global object
+ # var endpoint # current endpoint
+ # var clusters # map from cluster to list of attributes, typically constructed from CLUSTERS hierachy
+ # var tick # tick value when it was last updated
+ # var node_label # name of the endpoint, used only in bridge mode, "" if none
+ var shadow_fan_mode
+ var shadow_fan_speed_pct
+ #############################################################
+ # FanMode:
+ # 0: Off
+ # 1: Low
+ # 2: Medium
+ # 3: High
+ # 4: On -- deprecated
+ # 5: Auto -- not declared as supported
+ # 6: Smart -- deprecated
+
+ #############################################################
+ # Constructor
+ def init(device, endpoint, config)
+ super(self).init(device, endpoint, config)
+ self.shadow_fan_mode = 0 # Off by default
+ self.shadow_fan_speed_pct = 0
+ end
+
+ #############################################################
+ # Model
+ #
+ def set_fan_mode(fan_mode)
+ fan_mode = int(fan_mode)
+ if (fan_mode < 0) fan_mode = 0 end # force positive
+ if fan_mode != self.shadow_fan_mode
+ self.attribute_updated(0x0202, 0x0000)
+ self.shadow_fan_mode = int(fan_mode)
+ # compute new speed
+ var new_speed_pct = self.shadow_fan_speed_pct
+ if self.shadow_fan_mode == 0 # set to Off, we need to adjust speed to 0 (4.4.6.1.1)
+ new_speed_pct = 0
+ elif self.shadow_fan_mode > 3 # Auto mode or unsupported modes, since we don't support AUTO, set speed to max
+ self.shadow_fan_mode = 3 # HIGH
+ new_speed_pct = 100
+ else # set to value
+ new_speed_pct = tasmota.scale_uint(fan_mode, 0, 3, 0, 100)
+ end
+ # adjust and advertize if speed changed
+ if self.shadow_fan_speed_pct != new_speed_pct
+ self.shadow_fan_speed_pct = new_speed_pct
+ self.attribute_updated(0x0202, 0x0002)
+ end
+ end
+ end
+
+ def set_fan_speed_pct(fan_speed_pct)
+ # guard value
+ fan_speed_pct = int(fan_speed_pct)
+ if (fan_speed_pct < 0) fan_speed_pct = 0 end
+ if (fan_speed_pct > 100) fan_speed_pct = 100 end
+ if fan_speed_pct != self.shadow_fan_speed_pct
+ self.attribute_updated(0x0202, 0x0002)
+ self.shadow_fan_speed_pct = fan_speed_pct
+ # adjust mode if needed
+ var new_mode = self.shadow_fan_mode
+ if (fan_speed_pct == 0)
+ new_mode = 0
+ else
+ new_mode = tasmota.scale_uint(fan_speed_pct, 1, 100, 1, 3)
+ end
+ # adjust and advertize if mode changed
+ if (new_mode != self.shadow_fan_mode)
+ self.shadow_fan_mode = new_mode
+ self.attribute_updated(0x0202, 0x0000)
+ end
+ end
+ end
+
+ #############################################################
+ # read an attribute
+ #
+ def read_attribute(session, ctx, tlv_solo)
+ var TLV = matter.TLV
+ var cluster = ctx.cluster
+ var attribute = ctx.attribute
+
+ # ====================================================================================================
+ if cluster == 0x0202 # ========== Fan ==========
+ self.update_shadow_lazy()
+ if attribute == 0x0000 # ---------- FanMode / enum8 ----------
+ return tlv_solo.set(TLV.U1, self.shadow_fan_mode)
+ elif attribute == 0x0001 # ---------- FanModeSequence / enum8 ----------
+ return tlv_solo.set(TLV.U1, 2) # Off/Low/Med/High/Auto
+ elif attribute == 0x0002 # ---------- PercentSetting / enum8 ----------
+ return tlv_solo.set(TLV.U1, self.shadow_fan_speed_pct)
+ elif attribute == 0x0003 # ---------- PercentSetting / enum8 ----------
+ return tlv_solo.set(TLV.U1, self.shadow_fan_speed_pct)
+ end
+
+ end
+ return super(self).read_attribute(session, ctx, tlv_solo)
+ end
+
+ #############################################################
+ # MVC Model
+ #
+ # Controller write attributes
+ #############################################################
+ #############################################################
+ # write attribute
+ def write_attribute(session, ctx, write_data)
+ var TLV = matter.TLV
+ var cluster = ctx.cluster
+ var attribute = ctx.attribute
+
+ # ====================================================================================================
+ if cluster == 0x0202 # ========== Fan ==========
+ self.update_shadow_lazy()
+ if attribute == 0x0000 # ---------- FanMode / enum8 ----------
+ if type(write_data) == 'int'
+ self.set_fan_mode(write_data)
+ self.publish_command('FanMode', self.shadow_fan_mode, 'FanSpeed', self.shadow_fan_speed_pct, 'FanSpeed255', tasmota.scale_uint(self.shadow_fan_speed_pct, 0, 100, 0, 255))
+ return true
+ else
+ ctx.status = matter.CONSTRAINT_ERROR
+ return false
+ end
+ elif attribute == 0x0002 # ---------- PercentSetting / enum8 ----------
+ if type(write_data) == 'int'
+ self.set_fan_speed_pct(write_data)
+ self.publish_command('FanMode', self.shadow_fan_mode, 'FanSpeed', self.shadow_fan_speed_pct, 'FanSpeed255', tasmota.scale_uint(self.shadow_fan_speed_pct, 0, 100, 0, 255))
+ return true
+ else
+ ctx.status = matter.CONSTRAINT_ERROR
+ return false
+ end
+ end
+
+ end
+ # return super(self).read_attribute(session, ctx, tlv_solo) # not useful as there is nothing in superclass
+ return nil
+ end
+
+ #############################################################
+ # update_virtual
+ #
+ # Update internal state for virtual devices
+ def update_virtual(payload)
+ var val_fan_mode = payload.find("FanMode")
+ if val_fan_mode != nil
+ self.set_fan_mode(int(val_fan_mode))
+ end
+ var val_fan_speed255 = payload.find("FanSpeed255")
+ if val_fan_speed255 != nil
+ self.set_fan_speed_pct(tasmota.scale_uint(int(val_fan_speed255), 0, 255, 0, 100))
+ end
+ var val_fan_speed = payload.find("FanSpeed")
+ if val_fan_speed != nil
+ self.set_fan_speed_pct(int(val_fan_speed))
+ end
+ # super(self).update_virtual(payload) # not useful as there is nothing in superclass
+ end
+
+end
+matter.Plugin_Fan = Matter_Plugin_Fan
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light0.be
similarity index 58%
rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_OnOff.be
rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light0.be
index 89f3a5430..48747460f 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_OnOff.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light0.be
@@ -1,5 +1,5 @@
#
-# Matter_Plugin_OnOff.be - implements the behavior for a Relay (OnOff)
+# Matter_Plugin_Light0.be - implements the behavior for a generic Lighting (OnOff only)
#
# Copyright (C) 2023 Stephan Hadinger & Theo Arends
#
@@ -21,11 +21,11 @@ import matter
# Matter plug-in for core behavior
-#@ solidify:Matter_Plugin_OnOff,weak
+#@ solidify:Matter_Plugin_Light0,weak
-class Matter_Plugin_OnOff : Matter_Plugin_Device
- static var TYPE = "relay" # name of the plug-in in json
- static var DISPLAY_NAME = "Relay" # display name of the plug-in
+class Matter_Plugin_Light0 : Matter_Plugin_Device
+ static var TYPE = "light0" # name of the plug-in in json
+ static var DISPLAY_NAME = "Light 0 On" # display name of the plug-in
static var ARG = "relay" # additional argument name (or empty if none)
static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
static var ARG_HINT = "Relay number"
@@ -38,7 +38,7 @@ class Matter_Plugin_OnOff : Matter_Plugin_Device
0x0006: [0], # On/Off 1.5 p.48
})
static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Power")
- static var TYPES = { 0x010A: 2 } # On/Off Plug-in Unit
+ static var TYPES = { 0x0100: 2 } # OnOff Light, but not actually used because Relay is managed by OnOff
# Inherited
# var device # reference to the `device` global object
@@ -46,14 +46,16 @@ class Matter_Plugin_OnOff : Matter_Plugin_Device
# var clusters # map from cluster to list of attributes, typically constructed from CLUSTERS hierachy
# var tick # tick value when it was last updated
# var node_label # name of the endpoint, used only in bridge mode, "" if none
+ var tasmota_relay_index # Relay number in Tasmota (1 based), may be nil for Lights 1/2/3 internal
+ var light_index # index number when using `light.get()` and `light.set()`
var shadow_onoff # (bool) status of the light power on/off
- var tasmota_relay_index # Relay number in Tasmota (zero based)
#############################################################
# Constructor
def init(device, endpoint, config)
- super(self).init(device, endpoint, config)
self.shadow_onoff = false
+ self.light_index = 0 # default is 0 for light object
+ super(self).init(device, endpoint, config)
end
#############################################################
@@ -61,21 +63,24 @@ class Matter_Plugin_OnOff : Matter_Plugin_Device
#
# Parse configuration map
def parse_configuration(config)
- self.tasmota_relay_index = int(config.find(self.ARG #-'relay'-#, 1))
- if self.tasmota_relay_index <= 0 self.tasmota_relay_index = 1 end
+ # with Light0 we always need relay number but we don't for Light1/2/3 so self.tasmota_relay_index may be `nil`
+ self.tasmota_relay_index = int(config.find(self.ARG #-'relay'-#, nil))
+ if (self.tasmota_relay_index != nil && self.tasmota_relay_index <= 0) self.tasmota_relay_index = 1 end
end
#############################################################
# Update shadow
#
def update_shadow()
- if !self.VIRTUAL
- var pow = tasmota.get_power(self.tasmota_relay_index - 1)
- if pow != nil
- if self.shadow_onoff != bool(pow)
- self.attribute_updated(0x0006, 0x0000)
+ if !self.VIRTUAL && !self.BRIDGE
+ if (self.tasmota_relay_index != nil)
+ var pow = tasmota.get_power(self.tasmota_relay_index - 1)
+ if pow != nil
+ if self.shadow_onoff != bool(pow)
+ self.attribute_updated(0x0006, 0x0000)
+ end
+ self.shadow_onoff = pow
end
- self.shadow_onoff = pow
end
end
super(self).update_shadow()
@@ -85,14 +90,26 @@ class Matter_Plugin_OnOff : Matter_Plugin_Device
# Model
#
def set_onoff(pow)
- if !self.VIRTUAL
- tasmota.set_power(self.tasmota_relay_index - 1, bool(pow))
- self.update_shadow()
- else
+ if self.BRIDGE
+ var ret = self.call_remote_sync("Power" + str(self.tasmota_relay_index), pow ? "1" : "0")
+ if ret != nil
+ self.parse_status(ret, 11) # update shadow from return value
+ # self.tick = self.device.tick # prevent an explicit Status11 for as it is not needed if the subscription update is sent in same tick
+ end
+ elif self.VIRTUAL
if pow != self.shadow_onoff
self.attribute_updated(0x0006, 0x0000)
self.shadow_onoff = pow
end
+ else
+ if (self.tasmota_relay_index != nil)
+ tasmota.set_power(self.tasmota_relay_index - 1, bool(pow))
+ self.update_shadow()
+ else
+ import light
+ light.set({'power':pow}, self.light_index)
+ self.update_shadow()
+ end
end
end
@@ -149,13 +166,59 @@ class Matter_Plugin_OnOff : Matter_Plugin_Device
# update_virtual
#
# Update internal state for virtual devices
- def update_virtual(payload_json)
- var val_onoff = payload_json.find("Power")
+ def update_virtual(payload)
+ var val_onoff = payload.find("Power")
if val_onoff != nil
self.set_onoff(bool(val_onoff))
end
- super(self).update_virtual(payload_json)
+ super(self).update_virtual(payload)
end
+ #############################################################
+ # For Bridge devices
+ #############################################################
+ #############################################################
+ # Stub for updating shadow values (local copies of what we published to the Matter gateway)
+ #
+ # This call is synnchronous and blocking.
+ def parse_status(data, index)
+ if index == 11 # Status 11
+ var state = false
+
+ if self.tasmota_relay_index == 1 && data.contains("POWER") # special case, can be `POWER` or `POWER1`
+ state = (data.find("POWER") == "ON")
+ else
+ state = (data.find("POWER" + str(self.tasmota_relay_index)) == "ON")
+ end
+
+ if self.shadow_onoff != bool(state)
+ self.attribute_updated(0x0006, 0x0000)
+ self.shadow_onoff = state
+ end
+ end
+ end
+
+ #############################################################
+ # web_values
+ #
+ # Show values of the remote device as HTML
+ def web_values()
+ import webserver
+ self.web_values_prefix() # display '| ' and name if present
+ webserver.content_send(format("%s", self.web_value_onoff(self.shadow_onoff)))
+ end
+
+ # Show prefix before web value
+ def web_values_prefix()
+ import webserver
+ var name = self.get_name()
+ if !name
+ name = "Power" + str(self.tasmota_relay_index)
+ end
+ webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : ""))
+ end
+ #############################################################
+ #############################################################
+
end
-matter.Plugin_OnOff = Matter_Plugin_OnOff
+matter.Plugin_Light0 = Matter_Plugin_Light0
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor.be
index a702a11af..7ea57693e 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor.be
@@ -26,11 +26,20 @@ import matter
class Matter_Plugin_Sensor : Matter_Plugin_Device
static var ARG = "filter" # additional argument name (or empty if none)
static var ARG_HINT = "Filter pattern"
+ static var UPDATE_CMD = "Status 10" # command to send for updates
static var UPDATE_TIME = 5000 # update sensor every 5s
static var JSON_NAME = "" # Name of the sensor attribute in JSON payloads
var tasmota_sensor_filter # Rule-type filter to the value, like "ESP32#Temperature"
var tasmota_sensor_matcher # Actual matcher object
var shadow_value # Last known value
+
+ var temp_unit # temperature unit, "C" or "F"
+ static var TEMP_C = "C"
+ static var TEMP_F = "F"
+ var pressure_unit # pressure unit, "hPa" or "mmHg" or "inHg"
+ static var PRESSURE_HPA = "hPa"
+ static var PRESSURE_MMHG = "mmHg"
+ static var PRESSURE_INHG = "inHg"
#############################################################
# Constructor
@@ -52,6 +61,8 @@ class Matter_Plugin_Sensor : Matter_Plugin_Device
if self.tasmota_sensor_filter
self.tasmota_sensor_matcher = tasmota.Rule_Matcher.parse(self.tasmota_sensor_filter)
end
+ self.temp_unit = self.TEMP_C
+ self.pressure_unit = self.PRESSURE_HPA
end
#############################################################
@@ -61,12 +72,14 @@ class Matter_Plugin_Sensor : Matter_Plugin_Device
# it to json.
def parse_sensors(payload)
if !self.VIRTUAL && self.tasmota_sensor_matcher
- var val = self.pre_value(real(self.tasmota_sensor_matcher.match(payload)))
- if val != nil
- if val != self.shadow_value
- self.value_changed()
- self.shadow_value = val
- end
+ var val = self.tasmota_sensor_matcher.match(payload)
+ if isinstance(val, map) # if the filter returns a map, we use the default JSON_NAME like "Temperature"
+ val = val.find(self.JSON_NAME)
+ end
+ val = self.pre_value(real(val))
+ if (val != nil) && (val != self.shadow_value)
+ self.value_changed()
+ self.shadow_value = val
end
end
end
@@ -93,8 +106,8 @@ class Matter_Plugin_Sensor : Matter_Plugin_Device
# update_virtual
#
# Update internal state for virtual devices
- def update_virtual(payload_json)
- var val = payload_json.find(self.JSON_NAME)
+ def update_virtual(payload)
+ var val = payload.find(self.JSON_NAME)
if val != nil
if type(val) == 'bool' val = int(val) end
@@ -103,8 +116,56 @@ class Matter_Plugin_Sensor : Matter_Plugin_Device
self.shadow_value = val
end
end
- super(self).update_virtual(payload_json)
+ super(self).update_virtual(payload)
end
+ #############################################################
+ # For Bridge devices
+ #############################################################
+ #############################################################
+ # Stub for updating shadow values (local copies of what we published to the Matter gateway)
+ #
+ # TO BE OVERRIDDEN
+ def parse_status(data, index)
+ if index == 10 # Status 10
+ if data.contains("TempUnit")
+ self.temp_unit = data["TempUnit"]
+ end
+ if data.contains("PressureUnit")
+ self.pressure_unit = data["PressureUnit"]
+ end
+ if self.tasmota_sensor_matcher
+ var val = self.pre_value(real(self.tasmota_sensor_matcher.match(data)))
+ if val != nil
+ if val != self.shadow_value
+ self.value_changed()
+ self.shadow_value = val
+ end
+ end
+ end
+ end
+ end
+
+ #############################################################
+ # Return the first item in the filter
+ def filter_name_html()
+ if self.tasmota_sensor_filter
+ import string
+ import webserver
+ return webserver.html_escape(string.split(self.tasmota_sensor_filter, '#')[0])
+ end
+ return ""
+ end
+
+ # Show prefix before web value
+ def web_values_prefix()
+ import webserver
+ var name = self.get_name()
+ if (!name) name = self.filter_name_html() end
+ webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : ""))
+ end
+ #############################################################
+ #############################################################
+
end
matter.Plugin_Sensor = Matter_Plugin_Sensor
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Air_Quality.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Air_Quality.be
new file mode 100644
index 000000000..35ad21d85
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Air_Quality.be
@@ -0,0 +1,249 @@
+#
+# Matter_Plugin_Sensor_Air_Quality.be - implements the behavior for a Air_Quality sensor
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+# Matter plug-in for core behavior
+
+#@ solidify:Matter_Plugin_Sensor_Air_Quality,weak
+
+class Matter_Plugin_Sensor_Air_Quality : Matter_Plugin_Device
+ static var TYPE = "airquality" # name of the plug-in in json
+ static var DISPLAY_NAME = "Air Quality" # display name of the plug-in
+ static var ARG = "airquality" # additional argument name (or empty if none)
+ static var ARG_HINT = "Device key (ex: SCD40)"
+# static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
+ static var JSON_NAME = "AirQuality" # Name of the sensor attribute in JSON payloads
+ static var UPDATE_TIME = 10000 # update every 10 s
+ static var UPDATE_COMMANDS = matter.UC_LIST(_class, "AirQuality", "CO2", "PM1", "PM2.5", "PM10", "TVOC", "NO2")
+ static var CLUSTERS = matter.consolidate_clusters(_class, {
+ 0x005B: [0], # Air Quality - no writable
+ 0x040D: [0,1,2,8,9], # Carbon Dioxide Concentration Measurement
+ 0x042C: [0,1,2,8,9], # PM1 Concentration Measurement
+ 0x042A: [0,1,2,8,9], # PM2.5 Concentration Measurement
+ 0x042D: [0,1,2,8,9], # PM10 Concentration Measurement
+ 0x042E: [0,1,2,8,9], # TVOC Total Volatile Organic Compounds Concentration Measurement
+ 0x0413: [0,1,2,8,9], # Nitrogen Dioxide Concentration Measurement
+ })
+
+ static var TYPES = { 0x002C: 1 } # Air Quality, rev 1
+
+ var prefix # key prefix in JSON
+ var shadow_air_quality # Human readable air quality index
+ # 0: Unknown
+ # 1: Good
+ # 4: Poor
+ # var shadow_pb0_3
+ # var shadow_pb0_5
+ # var shadow_pb1
+ # var shadow_pb2_5
+ # var shadow_pb5
+ # var shadow_pb10
+ var shadow_pm1
+ var shadow_pm2_5
+ # var shadow_pm5
+ var shadow_pm10
+ var shadow_co2
+ # var shadow_eco2
+ var shadow_no2
+ var shadow_tvoc
+
+ #############################################################
+ # Constructor
+ def init(device, endpoint, config)
+ super(self).init(device, endpoint, config)
+ self.shadow_air_quality = false
+ device.add_read_sensors_schedule(self.UPDATE_TIME)
+ end
+
+ #############################################################
+ # parse_configuration
+ #
+ # Parse configuration map
+ def parse_configuration(config)
+ self.prefix = str(config.find(self.ARG))
+ end
+
+
+ #############################################################
+ # parse sensor
+ #
+ # parse the output from `ShutterPosition`
+ # Ex: `{"Shutter1":{"Position":50,"Direction":0,"Target":50,"Tilt":30}}`
+ def _parse_sensor_entry(v, key, old_val, func, cluster, attribute)
+ var val = v.find(key)
+ if (val != nil)
+ val = func(val)
+ if (val != nil) && (val != old_val)
+ self.attribute_updated(cluster, attribute) # CurrentPositionTiltPercent100ths
+ end
+ return val
+ end
+ return old_val
+ end
+ #
+ def parse_sensors(payload)
+ var v = payload.find(self.prefix)
+ if (v != nil)
+ # CO2
+ self.shadow_co2 = self._parse_sensor_entry(v, "CarbonDioxide", self.shadow_co2, number, 0x040D, 0x0000)
+ # PM1
+ self.shadow_pm1 = self._parse_sensor_entry(v, "PM1", self.shadow_pm1, number, 0x042C, 0x0000)
+ # PM2.5
+ self.shadow_pm2_5 = self._parse_sensor_entry(v, "PM2.5", self.shadow_pm2_5, number, 0x042A, 0x0000)
+ # PM10
+ self.shadow_pm10 = self._parse_sensor_entry(v, "PM10", self.shadow_pm10, number, 0x042D, 0x0000)
+ # TVOC
+ self.shadow_tvoc = self._parse_sensor_entry(v, "TVOC", self.shadow_tvoc, number, 0x042E, 0x0000)
+ # NO2
+ self.shadow_no2 = self._parse_sensor_entry(v, "NO2", self.shadow_no2, number, 0x0413, 0x0000)
+ end
+ super(self).parse_sensors(payload) # parse other shutter values
+ end
+
+ #############################################################
+ # read an attribute
+ #
+ def read_attribute(session, ctx, tlv_solo)
+ var TLV = matter.TLV
+ var cluster = ctx.cluster
+ var attribute = ctx.attribute
+ var ret
+
+ # mutualize code for all values
+ # Args
+ # shadow_value: value of the shadow for the type
+ # unit: unit of value, `0`=PPM if not specified
+ #
+ # Returns
+ # `nil`: no attribute match
+ # : TLV value
+ def handle_value(shadow_value, unit)
+ if (unit == nil) unit = 0 end # default unit is `0` = PPM
+ if attribute == 0x0000 # ---------- Measured Value / float ----------
+ return tlv_solo.set_or_nil(TLV.FLOAT, shadow_value)
+ elif attribute == 0x0001 # ---------- MinMeasured Value / float ----------
+ return tlv_solo.set(TLV.NULL, nil)
+ elif attribute == 0x0002 # ---------- MaxMeasured Value / float ----------
+ return tlv_solo.set(TLV.NULL, nil)
+ elif attribute == 0x0008 # ---------- MeasurementUnit / u8 ----------
+ return tlv_solo.set(TLV.U1, unit)
+ elif attribute == 0x0009 # ---------- MeasurementMedium / u8 ----------
+ return tlv_solo.set(TLV.U1, 0) # 0 = Air
+ elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
+ return tlv_solo.set(TLV.U4, 1) # MEA = NumericMeasurement
+ end
+ return nil
+ end
+
+ # ====================================================================================================
+ if cluster == 0x005B # ========== Air Quality ==========
+ if attribute == 0x0000 # ---------- AirQuality / U8 ----------
+ return tlv_solo.set_or_nil(TLV.U1, self.shadow_air_quality)
+ # elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
+ # return tlv_solo.set(TLV.U4, 0) #
+ end
+
+ # ====================================================================================================
+ elif cluster == 0x040D # ========== Carbon Dioxide Concentration Measurement ==========
+ if (ret := handle_value(self.shadow_co2))
+ return ret
+ end
+ # ====================================================================================================
+ elif cluster == 0x042C # ========== PM1 Concentration Measurement ==========
+ if (ret := handle_value(self.shadow_pm1))
+ return ret
+ end
+ # ====================================================================================================
+ elif cluster == 0x042A # ========== PM2.5 Concentration Measurement ==========
+ if (ret := handle_value(self.shadow_pm2_5))
+ return ret
+ end
+ # ====================================================================================================
+ elif cluster == 0x042D # ========== PM10 Concentration Measurement ==========
+ if (ret := handle_value(self.shadow_pm10))
+ return ret
+ end
+ # ====================================================================================================
+ elif cluster == 0x042E # ========== TVOC ==========
+ if (ret := handle_value(self.shadow_tvoc))
+ return ret
+ end
+ # ====================================================================================================
+ elif cluster == 0x0413 # ========== NO2 ==========
+ if (ret := handle_value(self.shadow_no2))
+ return ret
+ end
+
+ end
+ return super(self).read_attribute(session, ctx, tlv_solo)
+ end
+
+ #######################################################################
+ # update_virtual
+ #
+ # Update internal state for virtual devices
+ def update_virtual(payload)
+ self.shadow_air_quality = self._parse_update_virtual(payload, "AirQuality", number, self.shadow_air_quality, 0x005B, 0x0000)
+ self.shadow_co2 = self._parse_update_virtual(payload, "CO2", self.shadow_co2, number, 0x040D, 0x0000)
+ self.shadow_pm1 = self._parse_update_virtual(payload, "PM1", self.shadow_pm1, number, 0x042C, 0x0000)
+ self.shadow_pm2_5 = self._parse_update_virtual(payload, "PM2.5", self.shadow_pm2_5, number, 0x042A, 0x0000)
+ self.shadow_pm10 = self._parse_update_virtual(payload, "PM10", self.shadow_pm10, number, 0x042D, 0x0000)
+ self.shadow_tvoc = self._parse_update_virtual(payload, "TVOC", self.shadow_tvoc, number, 0x042E, 0x0000)
+ super(self).update_virtual(payload)
+ end
+
+ #############################################################
+ # For Bridge devices
+ #############################################################
+ #############################################################
+ # Stub for updating shadow values (local copies of what we published to the Matter gateway)
+ #
+ # This call is synnchronous and blocking.
+ def parse_status(data, index)
+ if index == 10 # Status 10
+ var values = data.find(self.prefix)
+ end
+ end
+
+ #############################################################
+ # web_values
+ #
+ # Show values of the remote device as HTML
+ def web_values()
+ def web_values_single(name, val)
+ if val != nil
+ import webserver
+ webserver.content_send(f"{name}:{val:i} ")
+ end
+ end
+
+ self.web_values_prefix() # display '| ' and name if present
+ web_values_single("Air", self.shadow_air_quality)
+ web_values_single("PM1", self.shadow_pm1)
+ web_values_single("PM2.5", self.shadow_pm2_5)
+ web_values_single("PM10", self.shadow_pm10)
+ web_values_single("CO2", self.shadow_co2)
+ web_values_single("NO2", self.shadow_no2)
+ web_values_single("TVOC", self.shadow_tvoc)
+ end
+ #############################################################
+ #############################################################
+end
+matter.Plugin_Sensor_Air_Quality = Matter_Plugin_Sensor_Air_Quality
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Boolean.be
similarity index 52%
rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be
rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Boolean.be
index b7d683039..06d65baa8 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Contact.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Boolean.be
@@ -1,5 +1,5 @@
#
-# Matter_Plugin_Sensor_Contact.be - implements the behavior for a Contact Sensor
+# Matter_Plugin_Sensor_Boolean.be - implements the behavior for an abstract boolean sensor - to be inherited
#
# Copyright (C) 2023 Stephan Hadinger & Theo Arends
#
@@ -21,29 +21,24 @@ import matter
# Matter plug-in for core behavior
-#@ solidify:Matter_Plugin_Sensor_Contact,weak
+#@ solidify:Matter_Plugin_Sensor_Boolean,weak
-class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device
- static var TYPE = "contact" # name of the plug-in in json
- static var DISPLAY_NAME = "Contact" # display name of the plug-in
+class Matter_Plugin_Sensor_Boolean : Matter_Plugin_Device
+ # static var TYPE = "" # name of the plug-in in json
+ # static var DISPLAY_NAME = "" # display name of the plug-in
static var ARG = "switch" # additional argument name (or empty if none)
static var ARG_HINT = "Switch number"
static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
static var UPDATE_TIME = 750 # update every 750ms
- static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Contact")
- static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0045: [0], # Boolean State p.70 - no writable
- })
- static var TYPES = { 0x0015: 1 } # Contact Sensor, rev 1
var tasmota_switch_index # Switch number in Tasmota (one based)
- var shadow_contact
+ var shadow_bool_value
#############################################################
# Constructor
def init(device, endpoint, config)
super(self).init(device, endpoint, config)
- self.shadow_contact = false
+ self.shadow_bool_value = false
end
#############################################################
@@ -63,56 +58,47 @@ class Matter_Plugin_Sensor_Contact : Matter_Plugin_Device
if !self.VIRTUAL
var switch_str = "Switch" + str(self.tasmota_switch_index)
- var j = tasmota.cmd("Status 8", true)
+ var j = tasmota.cmd("Status 10", true)
if j != nil j = j.find("StatusSNS") end
if j != nil && j.contains(switch_str)
var state = (j.find(switch_str) == "ON")
- if (self.shadow_contact != state)
- self.attribute_updated(0x0045, 0x0000)
+ if (self.shadow_bool_value != state)
+ self.value_updated()
end
- self.shadow_contact = state
+ self.shadow_bool_value = state
end
end
end
#############################################################
- # read an attribute
+ # value_updated
#
- def read_attribute(session, ctx, tlv_solo)
- var TLV = matter.TLV
- var cluster = ctx.cluster
- var attribute = ctx.attribute
-
- # ====================================================================================================
- if cluster == 0x0045 # ========== Boolean State ==========
- if attribute == 0x0000 # ---------- StateValue / bool ----------
- if self.shadow_contact != nil
- return tlv_solo.set(TLV.BOOL, self.shadow_contact)
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
- end
-
- end
- return super(self).read_attribute(session, ctx, tlv_solo)
+ # This is triggered when a new value is changed, for subscription
+ # This method is meant to be overloaded and maximize shared code
+ def value_updated()
end
#############################################################
- # update_virtual
+ # For Bridge devices
+ #############################################################
+ #############################################################
+ # Stub for updating shadow values (local copies of what we published to the Matter gateway)
#
- # Update internal state for virtual devices
- def update_virtual(payload_json)
- var val_onoff = payload_json.find("Contact")
- if val_onoff != nil
- val_onoff = bool(val_onoff)
- if self.shadow_contact != val_onoff
- self.attribute_updated(0x0045, 0x0000)
- self.shadow_contact = val_onoff
- end
- end
- super(self).update_virtual(payload_json)
- end
+ # This call is synnchronous and blocking.
+ def parse_status(data, index)
+ if index == 10 # Status 10
+ var state = false
+ state = (data.find("Switch" + str(self.tasmota_switch_index)) == "ON")
+
+ if self.shadow_bool_value != nil && self.shadow_bool_value != bool(state)
+ self.value_updated()
+ end
+ self.shadow_bool_value = state
+ end
+ end
+ #############################################################
+ #############################################################
end
-matter.Plugin_Sensor_Contact = Matter_Plugin_Sensor_Contact
+matter.Plugin_Sensor_Boolean = Matter_Plugin_Sensor_Boolean
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_GenericSwitch_Btn.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_GenericSwitch_Btn.be
new file mode 100644
index 000000000..377259cca
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_GenericSwitch_Btn.be
@@ -0,0 +1,144 @@
+#
+# Matter_Plugin_Sensor_GenericSwitch_Btn.be - implements the behavior for a Generic Switch mapped to a Tasmota Button
+#
+# Copyright (C) 2023-2024 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+# Matter plug-in for core behavior
+
+#@ solidify:Matter_Plugin_Sensor_GenericSwitch_Btn,weak
+
+class Matter_Plugin_Sensor_GenericSwitch_Btn : Matter_Plugin_Device
+ static var TYPE = "gensw_btn" # name of the plug-in in json
+ static var DISPLAY_NAME = "Generic Switch/Button" # display name of the plug-in
+ static var ARG = "button" # additional argument name (or empty if none)
+ static var ARG_HINT = "Button number"
+ static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
+ # static var UPDATE_TIME = 750 # update every 750ms - TODO still necessary?
+ static var CLUSTERS = matter.consolidate_clusters(_class, {
+ # 0x001D: inherited # Descriptor Cluster 9.5 p.453
+ # 0x0039: [3,5,0x0A,0x0F,0x11,0x12], # Bridged Device Basic Information 9.13 p.485
+ # 0x0003: [0,1], # Identify 1.2 p.16
+ # 0x0004: [0], # Groups 1.3 p.21
+ # 0x0005: [0,1,2,3,4,5], # Scenes 1.4 p.30 - no writable
+ 0x003B: [0, 1, 2], # Switch 1.12
+ })
+ static var TYPES = { 0x000F: 2 } # Generic Switch, rev 2
+
+ var tasmota_switch_index # Switch number in Tasmota (one based)
+ var shadow_position
+
+ #############################################################
+ # parse_configuration
+ #
+ # Parse configuration map
+ def parse_configuration(config)
+ self.tasmota_switch_index = int(config.find(self.ARG #-'relay'-#, 1))
+ if self.tasmota_switch_index <= 0 self.tasmota_switch_index = 1 end
+ end
+
+ #############################################################
+ # Update shadow
+ #
+ # def update_shadow()
+ # super(self).update_shadow()
+ # self.shadow_position = false
+ # # TODO
+ # end
+
+ #############################################################
+ # Model
+ #
+ def set_position(position)
+ if position != self.shadow_position
+ self.attribute_updated(0x003B, 0x0001)
+ self.shadow_position = position
+ end
+ end
+
+ #############################################################
+ # read an attribute
+ #
+ def read_attribute(session, ctx, tlv_solo)
+ var TLV = matter.TLV
+ var cluster = ctx.cluster
+ var attribute = ctx.attribute
+
+ # ====================================================================================================
+ if cluster == 0x003B # ========== Generic Switch, 1.12 ==========
+ # self.update_shadow_lazy()
+ if attribute == 0x0000 # ---------- NumberOfPositions / uint8 ----------
+ return tlv_solo.set(TLV.U1, 2) # default to 2 positions
+ elif attribute == 0x0001 # ---------- CurrentPosition / uint8 ----------
+ return tlv_solo.set_or_nil(TLV.U1, self.shadow_position)
+ elif attribute == 0x0002 # ---------- MultiPressMax / uint8 ----------
+ return tlv_solo.set(TLV.U1, 5) # up to penta press
+
+ elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
+ return tlv_solo.set(TLV.U4, 0x16 #-0x02 | 0x04 | 0x10-#) # MomentarySwitch + MomentarySwitchRelease + MomentarySwitchMultiPress
+ end
+
+ end
+ return super(self).read_attribute(session, ctx, tlv_solo)
+ end
+
+ #############################################################
+ # append_state_json
+ #
+ # Output the current state in JSON
+ # New values need to be appended with `,"key":value` (including prefix comma)
+ #
+ # Override the default behavior to use the key `OnOff` instead of `Power`
+ def append_state_json()
+ return f',"Switch":{int(self.shadow_onoff)}'
+ end
+
+ #####################################################################
+ # button_handler - a button event happened
+ #
+ # Args:
+ # - button: (int) button number (base 1)
+ # - mode: (int) 0=static report every second, 1=button state changed (immediate), 2=multi-press status (delayed)
+ # - state: 1=button pressed, 0=button released, 2..5+=multi-press complete
+ def button_handler(button, mode, state, press_counter)
+ # if tasmota.loglevel(3) && (mode != 0) # only if actual action
+ # log(f"MTR: button_event {button}/{mode}:{state}", 3)
+ # end
+ # adjust value of position first, either regular secondly updates (mode==0) or change in state (mode==1)
+ if (mode == 0) || (mode == 1)
+ self.set_position(state)
+ end
+ # publish event for (mode==1), InitialPress and ShortRelease
+ if (mode == 1)
+ if state # InitialPress
+ self.publish_event(0x003B, 0x01, matter.EVENT_INFO, matter.TLV.Matter_TLV_item().set(matter.TLV.U1, 1)) # InitialPress, position hardcoded to 1
+ else
+ self.publish_event(0x003B, 0x03, matter.EVENT_INFO, matter.TLV.Matter_TLV_item().set(matter.TLV.U1, 1)) # ShortRelease, previous position hardcoded to 1
+ end
+ # check if there is an ungoing multi-press
+ if (state == 1) && (press_counter > 0)
+ # MultiPressOngoing
+ self.publish_event(0x003B, 0x05, matter.EVENT_INFO, matter.TLV.Matter_TLV_item().set(matter.TLV.U1, 1),
+ matter.TLV.Matter_TLV_item().set(matter.TLV.U1, press_counter + 1)) # MultiPressCom plete
+ end
+ elif (mode == 2) && (press_counter > 0) # Multipress
+ self.publish_event(0x003B, 0x06, matter.EVENT_INFO, matter.TLV.Matter_TLV_item().set(matter.TLV.U1, 1),
+ matter.TLV.Matter_TLV_item().set(matter.TLV.U1, press_counter)) # MultiPressCom plete
+ end
+ end
+
+end
+matter.Plugin_Sensor_GenericSwitch_Btn = Matter_Plugin_Sensor_GenericSwitch_Btn
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Waterleak.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Waterleak.be
deleted file mode 100644
index 04e8a4644..000000000
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Waterleak.be
+++ /dev/null
@@ -1,119 +0,0 @@
-#
-# Matter_Plugin_2_Sensor_Waterleak.be - implements the behavior for a Water leak Sensor
-#
-# Copyright (C) 2024 Stephan Hadinger & Theo Arends
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-#
-
-import matter
-
-# Matter plug-in for core behavior
-
-#@ solidify:Matter_Plugin_Sensor_Waterleak,weak
-
-class Matter_Plugin_Sensor_Waterleak : Matter_Plugin_Device
- static var TYPE = "waterleak" # name of the plug-in in json
- static var DISPLAY_NAME = "Waterleak" # display name of the plug-in
- static var ARG = "switch" # additional argument name (or empty if none)
- static var ARG_HINT = "Switch number"
- static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
- static var UPDATE_TIME = 750 # update every 750ms
- static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Waterleak")
- static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0045: [0], # Boolean State p.70 - no writable
- })
- # MATTER_WATER_LEAK_DETECTOR_DEVICE_TYPE_ID 0x0043
- static var TYPES = { 0x0043: 1 } # Waterleak Sensor, rev 1
-
- var tasmota_switch_index # Switch number in Tasmota (one based)
- var shadow_leak
-
- #############################################################
- # Constructor
- def init(device, endpoint, config)
- super(self).init(device, endpoint, config)
- self.shadow_leak = false
- end
-
- #############################################################
- # parse_configuration
- #
- # Parse configuration map
- def parse_configuration(config)
- self.tasmota_switch_index = int(config.find(self.ARG #-'switch'-#, 1))
- if self.tasmota_switch_index <= 0 self.tasmota_switch_index = 1 end
- end
-
- #############################################################
- # Update shadow
- #
- def update_shadow()
- super(self).update_shadow()
- if !self.VIRTUAL
- var switch_str = "Switch" + str(self.tasmota_switch_index)
-
- var j = tasmota.cmd("Status 8", true)
- if j != nil j = j.find("StatusSNS") end
- if j != nil && j.contains(switch_str)
- var state = (j.find(switch_str) == "ON")
-
- if (self.shadow_leak != state)
- self.attribute_updated(0x0045, 0x0000)
- end
- self.shadow_leak = state
- end
- end
- end
-
- #############################################################
- # read an attribute
- #
- def read_attribute(session, ctx, tlv_solo)
- var TLV = matter.TLV
- var cluster = ctx.cluster
- var attribute = ctx.attribute
-
- # ====================================================================================================
- if cluster == 0x0045 # ========== Boolean State ==========
- if attribute == 0x0000 # ---------- StateValue / bool ----------
- if self.shadow_leak != nil
- return tlv_solo.set(TLV.BOOL, self.shadow_leak)
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
- end
-
- end
- return super(self).read_attribute(session, ctx, tlv_solo)
- end
-
- #############################################################
- # update_virtual
- #
- # Update internal state for virtual devices
- def update_virtual(payload_json)
- var val_onoff = payload_json.find("Waterleak")
- if val_onoff != nil
- val_onoff = bool(val_onoff)
- if self.shadow_leak != val_onoff
- self.attribute_updated(0x0045, 0x0000)
- self.shadow_leak = val_onoff
- end
- end
- super(self).update_virtual(payload_json)
- end
-
-end
-matter.Plugin_Sensor_Waterleak = Matter_Plugin_Sensor_Waterleak
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Shutter.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Shutter.be
index 704b2a7b9..d0fadc4a2 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Shutter.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Shutter.be
@@ -65,10 +65,10 @@ class Matter_Plugin_Shutter : Matter_Plugin_Device
if r_st13.contains('StatusSHT')
r_st13 = r_st13['StatusSHT'] # skip root
var d = r_st13.find("SHT"+str(self.tasmota_shutter_index), {}).find('Opt')
- # tasmota.log("MTR: opt: "+str(d))
+ # log("MTR: opt: "+str(d))
if d != nil
self.shadow_shutter_inverted = int(d[size(d)-1]) # inverted is at the most right character
- # tasmota.log("MTR: Inverted flag: "+str(self.shadow_shutter_inverted))
+ # log("MTR: Inverted flag: "+str(self.shadow_shutter_inverted))
end
end
end
@@ -162,7 +162,7 @@ class Matter_Plugin_Shutter : Matter_Plugin_Device
self.update_shadow()
return true
elif command == 0x0005 # ---------- GoToLiftPercentage ----------
- tasmota.log("MTR: Tilt = "+str(val), 2)
+ log("MTR: Tilt = "+str(val), 2)
var pos_100 = val.findsubval(0)
if pos_100 != nil
pos_100 = pos_100 / 100
@@ -191,7 +191,7 @@ class Matter_Plugin_Shutter : Matter_Plugin_Device
var k = "Shutter" + str(self.tasmota_shutter_index + 1)
if payload.contains(k)
var v = payload[k]
- # tasmota.log(format("MTR: getting shutter values(%i): %s", self.endpoint, str(v)), 2)
+ # log(format("MTR: getting shutter values(%i): %s", self.endpoint, str(v)), 2)
# Position
var val_pos = v.find("Position")
if val_pos != nil
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Light0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Light0.be
deleted file mode 100644
index 87c0e22f9..000000000
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Light0.be
+++ /dev/null
@@ -1,156 +0,0 @@
-#
-# Matter_Plugin_Bridge_Light0.be - implements the behavior for a remote generic Lighting (OnOff only) via HTTP
-#
-# Copyright (C) 2023 Stephan Hadinger & Theo Arends
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-#
-
-import matter
-
-# Matter plug-in for core behavior
-
-#@ solidify:Matter_Plugin_Bridge_Light0,weak
-
-class Matter_Plugin_Bridge_Light0 : Matter_Plugin_Bridge_HTTP
- static var TYPE = "http_light0" # name of the plug-in in json
- static var DISPLAY_NAME = "Light 0 On" # display name of the plug-in
- static var ARG = "relay" # additional argument name (or empty if none)
- static var ARG_HINT = "Power number"
- static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
- # static var UPDATE_TIME = 3000 # update every 3s
- # static var UPDATE_CMD = "Status 11" # command to send for updates
- static var CLUSTERS = matter.consolidate_clusters(_class, {
- # 0x001D: inherited # Descriptor Cluster 9.5 p.453
- # 0x0003: inherited # Identify 1.2 p.16
- # 0x0004: inherited # Groups 1.3 p.21
- # 0x0005: inherited # Scenes 1.4 p.30 - no writable
- 0x0006: [0], # On/Off 1.5 p.48
- })
- static var TYPES = { 0x0100: 2 } # OnOff Light, but not actually used because Relay is managed by OnOff
-
- var tasmota_relay_index # Relay number in Tasmota (one based)
- var shadow_onoff # fake status for now # TODO
-
- #############################################################
- # Constructor
- def init(device, endpoint, arguments)
- super(self).init(device, endpoint, arguments)
- self.shadow_onoff = false
- self.tasmota_relay_index = int(arguments.find(self.ARG #-'relay'-#, 1))
- if self.tasmota_relay_index <= 0 self.tasmota_relay_index = 1 end
- end
-
- #############################################################
- # Stub for updating shadow values (local copies of what we published to the Matter gateway)
- #
- # This call is synnchronous and blocking.
- def parse_update(data, index)
- if index == 11 # Status 11
- var state = false
-
- if self.tasmota_relay_index == 1 && data.contains("POWER") # special case, can be `POWER` or `POWER1`
- state = (data.find("POWER") == "ON")
- else
- state = (data.find("POWER" + str(self.tasmota_relay_index)) == "ON")
- end
-
- if self.shadow_onoff != nil && self.shadow_onoff != bool(state)
- self.attribute_updated(0x0006, 0x0000)
- end
- self.shadow_onoff = state
- end
- end
-
- #############################################################
- # Model
- #
- def set_onoff(v)
- var ret = self.call_remote_sync("Power" + str(self.tasmota_relay_index), v ? "1" : "0")
- if ret != nil
- self.parse_update(ret, 11) # update shadow from return value
- # self.tick = self.device.tick # prevent an explicit Status11 for as it is not needed if the subscription update is sent in same tick
- end
- end
-
- #############################################################
- # read an attribute
- #
- def read_attribute(session, ctx, tlv_solo)
- var TLV = matter.TLV
- var cluster = ctx.cluster
- var attribute = ctx.attribute
-
- # ====================================================================================================
- if cluster == 0x0006 # ========== On/Off 1.5 p.48 ==========
- self.update_shadow_lazy()
- if attribute == 0x0000 # ---------- OnOff / bool ----------
- return tlv_solo.set(TLV.BOOL, self.shadow_onoff)
- end
-
- end
- return super(self).read_attribute(session, ctx, tlv_solo)
- end
-
- #############################################################
- # Invoke a command
- #
- # returns a TLV object if successful, contains the response
- # or an `int` to indicate a status
- def invoke_request(session, val, ctx)
- var TLV = matter.TLV
- var cluster = ctx.cluster
- var command = ctx.command
-
- # ====================================================================================================
- if cluster == 0x0006 # ========== On/Off 1.5 p.48 ==========
- if command == 0x0000 # ---------- Off ----------
- self.set_onoff(false)
- self.publish_command('Power', 0)
- return true
- elif command == 0x0001 # ---------- On ----------
- self.set_onoff(true)
- self.publish_command('Power', 1)
- return true
- elif command == 0x0002 # ---------- Toggle ----------
- self.set_onoff(!self.shadow_onoff)
- self.publish_command('Power', self.shadow_onoff ? 1 : 0)
- return true
- end
- end
-
- end
-
- #############################################################
- # web_values
- #
- # Show values of the remote device as HTML
- def web_values()
- import webserver
- self.web_values_prefix() # display '| ' and name if present
- webserver.content_send(format("%s", self.web_value_onoff(self.shadow_onoff)))
- end
-
- # Show prefix before web value
- def web_values_prefix()
- import webserver
- var name = self.get_name()
- if !name
- name = "Power" + str(self.tasmota_relay_index)
- end
- webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : ""))
- end
-
-end
-matter.Plugin_Bridge_Light0 = Matter_Plugin_Bridge_Light0
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor.be
deleted file mode 100644
index 301c1c02a..000000000
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor.be
+++ /dev/null
@@ -1,122 +0,0 @@
-#
-# Matter_Plugin_Bridge_Sensor.be - implements base class for a Sensor via HTTP to Tasmota
-#
-# Copyright (C) 2023 Stephan Hadinger & Theo Arends
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-#
-
-import matter
-
-# Matter plug-in for core behavior
-
-#@ solidify:Matter_Plugin_Bridge_Sensor,weak
-
-class Matter_Plugin_Bridge_Sensor : Matter_Plugin_Bridge_HTTP
- # static var TYPE = "" # name of the plug-in in json
- # static var DISPLAY_NAME = "" # display name of the plug-in
- static var ARG = "filter" # additional argument name (or empty if none)
- static var ARG_HTTP = "url" # domain name
- static var ARG_HINT = "Filter pattern"
- static var UPDATE_TIME = 5000 # update every 5s
- static var UPDATE_CMD = "Status 8" # command to send for updates
- static var PROBE_TIMEOUT = 1700 # timeout of 1700 ms for probing, which gives at least 1s for TCP recovery
- # static var SYNC_TIMEOUT = 500 # timeout of 700 ms for probing
- var tasmota_sensor_filter # Rule-type filter to the value, like "ESP32#Temperature"
- var tasmota_sensor_matcher # Actual matcher object
- var shadow_value # Last known value
- var temp_unit # temperature unit, "C" or "F"
- static var TEMP_C = "C"
- static var TEMP_F = "F"
- var pressure_unit # pressure unit, "hPa" or "mmHg" or "inHg"
- static var PRESSURE_HPA = "hPa"
- static var PRESSURE_MMHG = "mmHg"
- static var PRESSURE_INHG = "inHg"
-
- #############################################################
- # parse_configuration
- #
- # Parse configuration map
- def parse_configuration(config)
- self.tasmota_sensor_filter = config.find(self.ARG#-'filter'-#)
- if self.tasmota_sensor_filter
- self.tasmota_sensor_matcher = tasmota.Rule_Matcher.parse(self.tasmota_sensor_filter)
- end
- self.temp_unit = self.TEMP_C
- self.pressure_unit = self.PRESSURE_HPA
- end
-
- #############################################################
- # Stub for updating shadow values (local copies of what we published to the Matter gateway)
- #
- # TO BE OVERRIDDEN
- def parse_update(data, index)
- if index == 8 # Status 8
- if data.contains("TempUnit")
- self.temp_unit = data["TempUnit"]
- end
- if data.contains("PressureUnit")
- self.pressure_unit = data["PressureUnit"]
- end
- if self.tasmota_sensor_matcher
- var val = self.pre_value(real(self.tasmota_sensor_matcher.match(data)))
- if val != nil
- if val != self.shadow_value
- self.value_changed()
- self.shadow_value = val
- end
- end
- end
- end
- end
-
- #############################################################
- # Called when the value changed compared to shadow value
- #
- # This must be overriden.
- # This is where you call `self.attribute_updated(, )`
- def value_changed()
- # self.attribute_updated(0x0402, 0x0000)
- end
-
- #############################################################
- # Pre-process value
- #
- # This must be overriden.
- # This allows to convert the raw sensor value to the target one, typically int
- def pre_value(val)
- return val
- end
-
- #############################################################
- # Return the first item in the filter
- def filter_name_html()
- if self.tasmota_sensor_filter
- import string
- import webserver
- return webserver.html_escape(string.split(self.tasmota_sensor_filter, '#')[0])
- end
- return ""
- end
-
- # Show prefix before web value
- def web_values_prefix()
- import webserver
- var name = self.get_name()
- if (!name) name = self.filter_name_html() end
- webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : ""))
- end
-
-end
-matter.Plugin_Bridge_Sensor = Matter_Plugin_Bridge_Sensor
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Occupancy.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Occupancy.be
deleted file mode 100644
index 1ed2c5c59..000000000
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Occupancy.be
+++ /dev/null
@@ -1,114 +0,0 @@
-#
-# Matter_Plugin_Bridge_Sensor_Occupancy.be - implements base class for a Occupancy Sensor via HTTP to Tasmota
-#
-# Copyright (C) 2023 Stephan Hadinger & Theo Arends
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-#
-
-import matter
-
-# Matter plug-in for core behavior
-
-#@ solidify:Matter_Plugin_Bridge_Sensor_Occupancy,weak
-
-class Matter_Plugin_Bridge_Sensor_Occupancy : Matter_Plugin_Bridge_HTTP
- static var TYPE = "http_occupancy" # name of the plug-in in json
- static var DISPLAY_NAME = "Occupancy" # display name of the plug-in
- static var ARG = "switch" # additional argument name (or empty if none)
- static var ARG_HINT = "Switch number"
- static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
- static var UPDATE_TIME = 5000 # update every 5s
- static var UPDATE_CMD = "Status 8" # command to send for updates
-
- static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0406: [0,1,2], # Occupancy Sensing p.105 - no writable
- })
- static var TYPES = { 0x0107: 2 } # Occupancy Sensor, rev 2
-
- var tasmota_switch_index # Switch number in Tasmota (one based)
- var shadow_occupancy
-
- #############################################################
- # Constructor
- def init(device, endpoint, arguments)
- super(self).init(device, endpoint, arguments)
- self.tasmota_switch_index = int(arguments.find(self.ARG #-'relay'-#, 1))
- if self.tasmota_switch_index <= 0 self.tasmota_switch_index = 1 end
- end
-
- #############################################################
- # Stub for updating shadow values (local copies of what we published to the Matter gateway)
- #
- # This call is synnchronous and blocking.
- def parse_update(data, index)
- if index == 8 # Status 8
- var state = false
-
- state = (data.find("Switch" + str(self.tasmota_switch_index)) == "ON")
-
- if self.shadow_occupancy != nil && self.shadow_occupancy != bool(state)
- self.attribute_updated(0x0406, 0x0000)
- end
- self.shadow_occupancy = state
- end
- end
-
- #############################################################
- # read an attribute
- #
- def read_attribute(session, ctx, tlv_solo)
- var TLV = matter.TLV
- var cluster = ctx.cluster
- var attribute = ctx.attribute
-
- # ====================================================================================================
- if cluster == 0x0406 # ========== Occupancy Sensing ==========
- if attribute == 0x0000 # ---------- Occupancy / U8 ----------
- if self.shadow_occupancy != nil
- return tlv_solo.set(TLV.U1, self.shadow_occupancy)
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
- elif attribute == 0x0001 # ---------- OccupancySensorType / enum8 ----------
- return tlv_solo.set(TLV.U1, 3) # physical contact
- elif attribute == 0x0002 # ---------- OccupancySensorTypeBitmap / u8 ----------
- return tlv_solo.set(TLV.U1, 0) # unknown
- end
-
- end
- return super(self).read_attribute(session, ctx, tlv_solo)
- end
-
- #############################################################
- # web_values
- #
- # Show values of the remote device as HTML
- def web_values()
- import webserver
- self.web_values_prefix() # display '| ' and name if present
- webserver.content_send(format("Occupancy%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_occupancy)))
- end
-
- # Show prefix before web value
- def web_values_prefix()
- import webserver
- var name = self.get_name()
- if !name
- name = "Switch" + str(self.tasmota_switch_index)
- end
- webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : ""))
- end
-end
-matter.Plugin_Bridge_Sensor_Occupancy = Matter_Plugin_Bridge_Sensor_Occupancy
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light1.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light1.be
similarity index 64%
rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light1.be
rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light1.be
index ab6de67fe..501c11c60 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Light1.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light1.be
@@ -23,19 +23,21 @@ import matter
#@ solidify:Matter_Plugin_Light1,weak
-class Matter_Plugin_Light1 : Matter_Plugin_Device
+class Matter_Plugin_Light1 : Matter_Plugin_Light0
static var TYPE = "light1" # name of the plug-in in json
- static var DISPLAY_NAME = "Light 1 Dimmer" # display name of the plug-in
- static var UPDATE_TIME = 250 # update every 250ms
+ static var DISPLAY_NAME = "Light 1 Dimmer" # display name of the plug-in
+ static var ARG = "light" # additional argument name (or empty if none)
+ static var ARG_HINT = "(opt) Light number"
+ # static var UPDATE_TIME = 250 # update every 250ms
static var CLUSTERS = matter.consolidate_clusters(_class, {
# 0x001D: inherited # Descriptor Cluster 9.5 p.453
# 0x0003: inherited # Identify 1.2 p.16
# 0x0004: inherited # Groups 1.3 p.21
# 0x0005: inherited # Scenes 1.4 p.30 - no writable
- 0x0006: [0], # On/Off 1.5 p.48
+ # 0x0006: [0], # On/Off 1.5 p.48
0x0008: [0,2,3,0x0F,0x11], # Level Control 1.6 p.57
})
- static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Power", "Bri")
+ static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Bri")
static var TYPES = { 0x0101: 2 } # Dimmable Light
# Inherited
@@ -44,24 +46,51 @@ class Matter_Plugin_Light1 : Matter_Plugin_Device
# var clusters # map from cluster to list of attributes, typically constructed from CLUSTERS hierachy
# var tick # tick value when it was last updated
# var node_label # name of the endpoint, used only in bridge mode, "" if none
- var shadow_onoff # (bool) status of the light power on/off
+ # var tasmota_relay_index # Relay number in Tasmota (1 based), nil for internal light
+ # var shadow_onoff # (bool) status of the light power on/off
+ # var light_index # index number when using `light.get()` and `light.set()`
var shadow_bri # (int 0..254) brightness before Gamma correction - as per Matter 255 is not allowed
#############################################################
# Constructor
def init(device, endpoint, arguments)
- super(self).init(device, endpoint, arguments)
- self.shadow_onoff = false
self.shadow_bri = 0
+ super(self).init(device, endpoint, arguments)
+ end
+
+ #############################################################
+ # parse_configuration
+ #
+ # Parse configuration map
+ def parse_configuration(config)
+ # with Light0 we always need relay number but we don't for Light1/2/3 so self.tasmota_relay_index may be `nil`
+ if self.BRIDGE
+ self.tasmota_relay_index = int(config.find(self.ARG #-'relay'-#, nil))
+ if (self.tasmota_relay_index != nil && self.tasmota_relay_index <= 0) self.tasmota_relay_index = 1 end
+ else
+ if (self.tasmota_relay_index == nil) && (self.TYPE == "light1") # only if `light1` and not for subclasses
+ var light_index_arg = config.find(self.ARG #-'light'-#)
+ if (light_index_arg == nil)
+ if (tasmota.get_option(68) == 0) # if default mode, and `SO68 0`, check if we have split RGB/W
+ import light
+ if (light.get(1) != nil)
+ self.light_index = 1 # default value is `0` from superclass
+ end
+ end
+ else
+ self.light_index = int(light_index_arg) - 1 # internal is 0-based
+ end
+ end
+ end
end
#############################################################
# Update shadow
#
def update_shadow()
- if !self.VIRTUAL
+ if !self.VIRTUAL && !self.BRIDGE
import light
- var light_status = light.get()
+ var light_status = light.get(self.light_index)
if light_status != nil
var pow = light_status.find('power', nil)
if pow != self.shadow_onoff
@@ -81,19 +110,6 @@ class Matter_Plugin_Light1 : Matter_Plugin_Device
super(self).update_shadow() # superclass manages 'power'
end
- def set_onoff(pow)
- if !self.VIRTUAL
- import light
- light.set({'power':pow})
- self.update_shadow()
- else
- if pow != self.shadow_onoff
- self.attribute_updated(0x0006, 0x0000)
- self.shadow_onoff = pow
- end
- end
- end
-
#############################################################
# Set Bri
#
@@ -103,16 +119,13 @@ class Matter_Plugin_Light1 : Matter_Plugin_Device
if (bri_254 < 0) bri_254 = 0 end
if (bri_254 > 254) bri_254 = 254 end
pow = (pow != nil) ? bool(pow) : nil # nil or bool
- if !self.VIRTUAL
- import light
- var bri_255 = tasmota.scale_uint(bri_254, 0, 254, 0, 255)
- if pow == nil
- light.set({'bri': bri_255})
- else
- light.set({'bri': bri_255, 'power': pow})
+ if self.BRIDGE
+ var dimmer = tasmota.scale_uint(bri_254, 0, 254, 0, 100)
+ var ret = self.call_remote_sync("Dimmer", str(dimmer))
+ if ret != nil
+ self.parse_status(ret, 11) # update shadow from return value
end
- self.update_shadow()
- else
+ elif self.VIRTUAL
if (pow != nil) && (pow != self.shadow_onoff)
self.attribute_updated(0x0006, 0x0000)
self.shadow_onoff = pow
@@ -121,6 +134,15 @@ class Matter_Plugin_Light1 : Matter_Plugin_Device
self.attribute_updated(0x0008, 0x0000)
self.shadow_bri = bri_254
end
+ else
+ import light
+ var bri_255 = tasmota.scale_uint(bri_254, 0, 254, 0, 255)
+ if pow == nil
+ light.set({'bri': bri_255}, self.light_index)
+ else
+ light.set({'bri': bri_255, 'power': pow}, self.light_index)
+ end
+ self.update_shadow()
end
end
@@ -133,14 +155,7 @@ class Matter_Plugin_Light1 : Matter_Plugin_Device
var attribute = ctx.attribute
# ====================================================================================================
- if cluster == 0x0006 # ========== On/Off 1.5 p.48 ==========
- self.update_shadow_lazy()
- if attribute == 0x0000 # ---------- OnOff / bool ----------
- return tlv_solo.set(TLV.BOOL, self.shadow_onoff)
- end
-
- # ====================================================================================================
- elif cluster == 0x0008 # ========== Level Control 1.6 p.57 ==========
+ if cluster == 0x0008 # ========== Level Control 1.6 p.57 ==========
self.update_shadow_lazy()
if attribute == 0x0000 # ---------- CurrentLevel / u1 ----------
return tlv_solo.set(TLV.U1, self.shadow_bri)
@@ -170,23 +185,7 @@ class Matter_Plugin_Light1 : Matter_Plugin_Device
var command = ctx.command
# ====================================================================================================
- if cluster == 0x0006 # ========== On/Off 1.5 p.48 ==========
- self.update_shadow_lazy()
- if command == 0x0000 # ---------- Off ----------
- self.set_onoff(false)
- self.publish_command('Power', 0)
- return true
- elif command == 0x0001 # ---------- On ----------
- self.set_onoff(true)
- self.publish_command('Power', 1)
- return true
- elif command == 0x0002 # ---------- Toggle ----------
- self.set_onoff(!self.shadow_onoff)
- self.publish_command('Power', self.shadow_onoff ? 1 : 0)
- return true
- end
- # ====================================================================================================
- elif cluster == 0x0008 # ========== Level Control 1.6 p.57 ==========
+ if cluster == 0x0008 # ========== Level Control 1.6 p.57 ==========
self.update_shadow_lazy()
if command == 0x0000 # ---------- MoveToLevel ----------
var bri_254 = val.findsubval(0) # Hue 0..254
@@ -230,17 +229,59 @@ class Matter_Plugin_Light1 : Matter_Plugin_Device
# update_virtual
#
# Update internal state for virtual devices
- def update_virtual(payload_json)
- var val_onoff = payload_json.find("Power")
- var val_bri = payload_json.find("Bri")
+ def update_virtual(payload)
+ var val_onoff = payload.find("Power")
+ var val_bri = payload.find("Bri")
if val_bri != nil
self.set_bri(int(val_bri), val_onoff)
return # don't call super() because we already handeld 'Power'
- elif val_onoff != nil
- self.set_onoff(bool(val_onoff))
end
- super(self).update_virtual(payload_json)
+ super(self).update_virtual(payload)
end
+ #############################################################
+ # For Bridge devices
+ #############################################################
+ #############################################################
+ # Stub for updating shadow values (local copies of what we published to the Matter gateway)
+ #
+ # This call is synnchronous and blocking.
+ def parse_status(data, index)
+ super(self).parse_status(data, index)
+
+ if index == 11 # Status 11
+ var dimmer = int(data.find("Dimmer")) # 0..100
+ if dimmer != nil
+ var bri = tasmota.scale_uint(dimmer, 0, 100, 0, 254)
+ if bri != self.shadow_bri
+ self.attribute_updated(0x0008, 0x0000)
+ self.shadow_bri = bri
+ end
+ end
+ end
+ end
+
+ #############################################################
+ # web_values
+ #
+ # Show values of the remote device as HTML
+ def web_values()
+ import webserver
+ self.web_values_prefix() # display '| ' and name if present
+ webserver.content_send(format("%s %s", self.web_value_onoff(self.shadow_onoff), self.web_value_dimmer()))
+ end
+
+ # Show on/off value as html
+ def web_value_dimmer()
+ var bri_html = ""
+ if self.shadow_bri != nil
+ var bri = tasmota.scale_uint(self.shadow_bri, 0, 254, 0, 100)
+ bri_html = format("%i%%", bri)
+ end
+ return "🔅 " + bri_html;
+ end
+ #############################################################
+ #############################################################
+
end
matter.Plugin_Light1 = Matter_Plugin_Light1
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_OnOff.be
similarity index 69%
rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light0.be
rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_OnOff.be
index 9c2108ebf..806bfa875 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light0.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_OnOff.be
@@ -1,5 +1,5 @@
#
-# Matter_Plugin_Light0.be - implements the behavior for a generic Lighting (OnOff only)
+# Matter_Plugin_OnOff.be - implements the behavior for a Relay (OnOff)
#
# Copyright (C) 2023 Stephan Hadinger & Theo Arends
#
@@ -21,12 +21,13 @@ import matter
# Matter plug-in for core behavior
-#@ solidify:Matter_Plugin_Light0,weak
+#@ solidify:Matter_Plugin_OnOff,weak
-class Matter_Plugin_Light0 : Matter_Plugin_OnOff
- static var TYPE = "light0" # name of the plug-in in json
- static var DISPLAY_NAME = "Light 0 On" # display name of the plug-in
- static var TYPES = { 0x0100: 2 } # OnOff Light, but not actually used because Relay is managed by OnOff
+class Matter_Plugin_OnOff : Matter_Plugin_Light0
+ static var TYPE = "relay" # name of the plug-in in json
+ static var DISPLAY_NAME = "Relay" # display name of the plug-in
+
+ static var TYPES = { 0x010A: 2 } # On/Off Plug-in Unit
# Inherited
# var device # reference to the `device` global object
@@ -34,7 +35,8 @@ class Matter_Plugin_Light0 : Matter_Plugin_OnOff
# var clusters # map from cluster to list of attributes, typically constructed from CLUSTERS hierachy
# var tick # tick value when it was last updated
# var node_label # name of the endpoint, used only in bridge mode, "" if none
- # var shadow_onoff # (bool) status of the light power on/off
+ # var shadow_onoff # (bool) status of the light power on/off
+ # var tasmota_relay_index # Relay number in Tasmota (zero based)
end
-matter.Plugin_Light0 = Matter_Plugin_Light0
+matter.Plugin_OnOff = Matter_Plugin_OnOff
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Contact.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Contact.be
similarity index 56%
rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Contact.be
rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Contact.be
index fe8373987..abb2fa7f7 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Contact.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Contact.be
@@ -1,5 +1,5 @@
#
-# Matter_Plugin_Bridge_Sensor_Contact.be - implements Contact Sensor via HTTP to Tasmota
+# Matter_Plugin_3_Sensor_Contact.be - implements the behavior for a Contact Sensor
#
# Copyright (C) 2023 Stephan Hadinger & Theo Arends
#
@@ -21,48 +21,31 @@ import matter
# Matter plug-in for core behavior
-#@ solidify:Matter_Plugin_Bridge_Sensor_Contact,weak
+#@ solidify:Matter_Plugin_Sensor_Contact,weak
-class Matter_Plugin_Bridge_Sensor_Contact : Matter_Plugin_Bridge_HTTP
- static var TYPE = "http_contact" # name of the plug-in in json
+class Matter_Plugin_Sensor_Contact : Matter_Plugin_Sensor_Boolean
+ static var TYPE = "contact" # name of the plug-in in json
static var DISPLAY_NAME = "Contact" # display name of the plug-in
- static var ARG = "switch" # additional argument name (or empty if none)
- static var ARG_HINT = "Switch number"
- static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
- static var UPDATE_TIME = 5000 # update every 5s
- static var UPDATE_CMD = "Status 8" # command to send for updates
-
+ # static var ARG = "switch" # additional argument name (or empty if none)
+ # static var ARG_HINT = "Switch number"
+ # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
+ # static var UPDATE_TIME = 750 # update every 750ms
+ static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Contact")
static var CLUSTERS = matter.consolidate_clusters(_class, {
0x0045: [0], # Boolean State p.70 - no writable
})
static var TYPES = { 0x0015: 1 } # Contact Sensor, rev 1
- var tasmota_switch_index # Switch number in Tasmota (one based)
- var shadow_contact
+ # var tasmota_switch_index # Switch number in Tasmota (one based)
+ # var shadow_bool_value
#############################################################
- # Constructor
- def init(device, endpoint, arguments)
- super(self).init(device, endpoint, arguments)
- self.tasmota_switch_index = int(arguments.find(self.ARG #-'switch'-#, 1))
- if self.tasmota_switch_index <= 0 self.tasmota_switch_index = 1 end
- end
-
- #############################################################
- # Stub for updating shadow values (local copies of what we published to the Matter gateway)
+ # value_updated
#
- # This call is synnchronous and blocking.
- def parse_update(data, index)
- if index == 8 # Status 8
- var state = false
-
- state = (data.find("Switch" + str(self.tasmota_switch_index)) == "ON")
-
- if self.shadow_contact != nil && self.shadow_contact != bool(state)
- self.attribute_updated(0x0045, 0x0000)
- end
- self.shadow_contact = state
- end
+ # This is triggered when a new value is changed, for subscription
+ # This method is meant to be overloaded and maximize shared code
+ def value_updated()
+ self.attribute_updated(0x0045, 0x0000)
end
#############################################################
@@ -76,17 +59,25 @@ class Matter_Plugin_Bridge_Sensor_Contact : Matter_Plugin_Bridge_HTTP
# ====================================================================================================
if cluster == 0x0045 # ========== Boolean State ==========
if attribute == 0x0000 # ---------- StateValue / bool ----------
- if self.shadow_contact != nil
- return tlv_solo.set(TLV.BOOL, self.shadow_contact)
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
+ return tlv_solo.set_or_nil(TLV.BOOL, self.shadow_bool_value)
end
end
return super(self).read_attribute(session, ctx, tlv_solo)
end
+ #############################################################
+ # update_virtual
+ #
+ # Update internal state for virtual devices
+ def update_virtual(payload)
+ self.shadow_bool_value = self._parse_update_virtual(payload, "Contact", self.shadow_bool_value, bool, 0x0045, 0x0000)
+ super(self).update_virtual(payload)
+ end
+
+ #############################################################
+ # For Bridge devices
+ #############################################################
#############################################################
# web_values
#
@@ -94,7 +85,7 @@ class Matter_Plugin_Bridge_Sensor_Contact : Matter_Plugin_Bridge_HTTP
def web_values()
import webserver
self.web_values_prefix() # display '| ' and name if present
- webserver.content_send(format("Contact%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_contact)))
+ webserver.content_send(format("Contact%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_bool_value)))
end
# Show prefix before web value
@@ -106,5 +97,7 @@ class Matter_Plugin_Bridge_Sensor_Contact : Matter_Plugin_Bridge_HTTP
end
webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : ""))
end
+ #############################################################
+ #############################################################
end
-matter.Plugin_Bridge_Sensor_Contact = Matter_Plugin_Bridge_Sensor_Contact
+matter.Plugin_Sensor_Contact = Matter_Plugin_Sensor_Contact
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Flow.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Flow.be
index 9e418d453..1650cc7b2 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Flow.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Flow.be
@@ -62,11 +62,7 @@ class Matter_Plugin_Sensor_Flow : Matter_Plugin_Sensor
# ====================================================================================================
if cluster == 0x0404 # ========== Flow Measurement 2.4 p.98 ==========
if attribute == 0x0000 # ---------- MeasuredValue / i16 ----------
- if self.shadow_value != nil
- return tlv_solo.set(TLV.U2, int(self.shadow_value)) # MeasuredValue represents 10 x flow in m3/h.
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
+ return tlv_solo.set_or_nil(TLV.U2, int(self.shadow_value)) # MeasuredValue represents 10 x flow in m3/h.
elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ----------
return tlv_solo.set(TLV.U2, 0) # 0 m3/h
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
@@ -77,5 +73,20 @@ class Matter_Plugin_Sensor_Flow : Matter_Plugin_Sensor
return super(self).read_attribute(session, ctx, tlv_solo)
end
+ #############################################################
+ # For Bridge devices
+ #############################################################
+ #############################################################
+ # web_values
+ #
+ # Show values of the remote device as HTML
+ def web_values()
+ import webserver
+ self.web_values_prefix() # display '| ' and name if present
+ webserver.content_send(format("⛅ %i m³/h",
+ int(self.shadow_value)))
+ end
+ #############################################################
+ #############################################################
end
matter.Plugin_Sensor_Flow = Matter_Plugin_Sensor_Flow
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Humidity.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Humidity.be
index 94c7d4a90..2dd873f11 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Humidity.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Humidity.be
@@ -62,11 +62,7 @@ class Matter_Plugin_Sensor_Humidity : Matter_Plugin_Sensor
# ====================================================================================================
if cluster == 0x0405 # ========== Humidity Measurement 2.4 p.98 ==========
if attribute == 0x0000 # ---------- Humidity / u16 ----------
- if self.shadow_value != nil
- return tlv_solo.set(TLV.U2, int(self.shadow_value))
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
+ return tlv_solo.set_or_nil(TLV.U2, int(self.shadow_value))
elif attribute == 0x0001 # ---------- MinMeasuredValue / u16 ----------
return tlv_solo.set(TLV.U2, 500) # 0%
elif attribute == 0x0002 # ---------- MaxMeasuredValue / u16 ----------
@@ -77,5 +73,21 @@ class Matter_Plugin_Sensor_Humidity : Matter_Plugin_Sensor
return super(self).read_attribute(session, ctx, tlv_solo)
end
+ #############################################################
+ # For Bridge devices
+ #############################################################
+ #############################################################
+ # web_values
+ #
+ # Show values of the remote device as HTML
+ def web_values()
+ import webserver
+ self.web_values_prefix() # display '| ' and name if present
+ webserver.content_send(format("💧 %2.0f%%",
+ self.shadow_value != nil ? real(self.shadow_value) / 100 : nil))
+ end
+ #############################################################
+ #############################################################
+
end
matter.Plugin_Sensor_Humidity = Matter_Plugin_Sensor_Humidity
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Illuminance.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Illuminance.be
index ac6144b30..0c19a2a4e 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Illuminance.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Illuminance.be
@@ -69,11 +69,7 @@ class Matter_Plugin_Sensor_Illuminance : Matter_Plugin_Sensor
# ====================================================================================================
if cluster == 0x0400 # ========== Illuminance Measurement 2.2 p.95 ==========
if attribute == 0x0000 # ---------- MeasuredValue / i16 ----------
- if self.shadow_value != nil
- return tlv_solo.set(TLV.U2, int(self.shadow_value))
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
+ return tlv_solo.set_or_nil(TLV.U2, int(self.shadow_value))
elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ----------
return tlv_solo.set(TLV.U2, 1) # 1 lux
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
@@ -84,5 +80,21 @@ class Matter_Plugin_Sensor_Illuminance : Matter_Plugin_Sensor
return super(self).read_attribute(session, ctx, tlv_solo)
end
+ #############################################################
+ # For Bridge devices
+ #############################################################
+ #############################################################
+ # web_values
+ #
+ # Show values of the remote device as HTML
+ def web_values()
+ import webserver
+ self.web_values_prefix() # display '| ' and name if present
+ webserver.content_send(format("🔅 %i lux",
+ int(self.shadow_value)))
+ end
+ #############################################################
+ #############################################################
+
end
matter.Plugin_Sensor_Illuminance = Matter_Plugin_Sensor_Illuminance
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Occupancy.be
similarity index 56%
rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be
rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Occupancy.be
index 2d9f09323..c30193c9e 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_Occupancy.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Occupancy.be
@@ -1,5 +1,5 @@
#
-# Matter_Plugin_Sensor_Occupancy.be - implements the behavior for a Occupany Switch
+# Matter_Plugin_3_Sensor_Occupancy.be - implements the behavior for a Occupany Switch
#
# Copyright (C) 2023 Stephan Hadinger & Theo Arends
#
@@ -23,57 +23,29 @@ import matter
#@ solidify:Matter_Plugin_Sensor_Occupancy,weak
-class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device
+class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Sensor_Boolean
static var TYPE = "occupancy" # name of the plug-in in json
static var DISPLAY_NAME = "Occupancy" # display name of the plug-in
- static var ARG = "switch" # additional argument name (or empty if none)
- static var ARG_HINT = "Switch number"
- static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
- static var UPDATE_TIME = 750 # update every 750ms
+ # static var ARG = "switch" # additional argument name (or empty if none)
+ # static var ARG_HINT = "Switch number"
+ # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
+ # static var UPDATE_TIME = 750 # update every 750ms
static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Occupancy")
static var CLUSTERS = matter.consolidate_clusters(_class, {
0x0406: [0,1,2], # Occupancy Sensing p.105 - no writable
})
static var TYPES = { 0x0107: 2 } # Occupancy Sensor, rev 2
- var tasmota_switch_index # Switch number in Tasmota (one based)
- var shadow_occupancy
+ # var tasmota_switch_index # Switch number in Tasmota (one based)
+ # var shadow_bool_value
#############################################################
- # Constructor
- def init(device, endpoint, config)
- super(self).init(device, endpoint, config)
- self.shadow_occupancy = false
- end
-
- #############################################################
- # parse_configuration
+ # value_updated
#
- # Parse configuration map
- def parse_configuration(config)
- self.tasmota_switch_index = int(config.find(self.ARG #-'relay'-#, 1))
- if self.tasmota_switch_index <= 0 self.tasmota_switch_index = 1 end
- end
-
- #############################################################
- # Update shadow
- #
- def update_shadow()
- super(self).update_shadow()
- if !self.VIRTUAL
- var switch_str = "Switch" + str(self.tasmota_switch_index)
-
- var j = tasmota.cmd("Status 8", true)
- if j != nil j = j.find("StatusSNS") end
- if j != nil && j.contains(switch_str)
- var state = (j.find(switch_str) == "ON")
-
- if (self.shadow_occupancy != state)
- self.attribute_updated(0x0406, 0x0000)
- end
- self.shadow_occupancy = state
- end
- end
+ # This is triggered when a new value is changed, for subscription
+ # This method is meant to be overloaded and maximize shared code
+ def value_updated()
+ self.attribute_updated(0x0406, 0x0000)
end
#############################################################
@@ -87,11 +59,7 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device
# ====================================================================================================
if cluster == 0x0406 # ========== Occupancy Sensing ==========
if attribute == 0x0000 # ---------- Occupancy / U8 ----------
- if self.shadow_occupancy != nil
- return tlv_solo.set(TLV.U1, self.shadow_occupancy)
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
+ return tlv_solo.set_or_nil(TLV.U1, self.shadow_bool_value)
elif attribute == 0x0001 # ---------- OccupancySensorType / enum8 ----------
return tlv_solo.set(TLV.U1, 3) # physical contact
elif attribute == 0x0002 # ---------- OccupancySensorTypeBitmap / u8 ----------
@@ -106,17 +74,35 @@ class Matter_Plugin_Sensor_Occupancy : Matter_Plugin_Device
# update_virtual
#
# Update internal state for virtual devices
- def update_virtual(payload_json)
- var val_onoff = payload_json.find("Occupancy")
- if val_onoff != nil
- val_onoff = bool(val_onoff)
- if self.shadow_occupancy != val_onoff
- self.attribute_updated(0x0406, 0x0000)
- self.shadow_occupancy = val_onoff
- end
- end
- super(self).update_virtual(payload_json)
+ def update_virtual(payload)
+ self.shadow_bool_value = self._parse_update_virtual(payload, "Occupancy", self.shadow_bool_value, bool, 0x0406, 0x0000)
+ super(self).update_virtual(payload)
end
+ #############################################################
+ # For Bridge devices
+ #############################################################
+ #############################################################
+ # web_values
+ #
+ # Show values of the remote device as HTML
+ def web_values()
+ import webserver
+ self.web_values_prefix() # display '| ' and name if present
+ webserver.content_send(format("Occupancy%i %s", self.shadow_bool_value, self.web_value_onoff(self.shadow_occupancy)))
+ end
+
+ # Show prefix before web value
+ def web_values_prefix()
+ import webserver
+ var name = self.get_name()
+ if !name
+ name = "Switch" + str(self.shadow_bool_value)
+ end
+ webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : ""))
+ end
+ #############################################################
+ #############################################################
+
end
matter.Plugin_Sensor_Occupancy = Matter_Plugin_Sensor_Occupancy
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_OnOff.be
similarity index 60%
rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_OnOff.be
rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_OnOff.be
index a2d2af9e6..ae736e5bd 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_2_Sensor_OnOff.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_OnOff.be
@@ -1,5 +1,5 @@
#
-# Matter_Plugin_Sensor_OnOff.be - implements the behavior for a Occupany Switch
+# Matter_Plugin_3_Sensor_OnOff.be - implements the behavior for a Occupany Switch
#
# Copyright (C) 2023 Stephan Hadinger & Theo Arends
#
@@ -21,49 +21,28 @@
#@ solidify:Matter_Plugin_Sensor_OnOff,weak
-class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Device
+class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Sensor_Boolean
static var TYPE = "onoff" # name of the plug-in in json
static var DISPLAY_NAME = "OnOff Sensor" # display name of the plug-in
- static var ARG = "switch" # additional argument name (or empty if none)
- static var ARG_HINT = "Switch number"
- static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
- static var UPDATE_TIME = 750 # update every 750ms
+ # static var ARG = "switch" # additional argument name (or empty if none)
+ # static var ARG_HINT = "Switch number"
+ # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
+ # static var UPDATE_TIME = 750 # update every 750ms
static var CLUSTERS = matter.consolidate_clusters(_class, {
0x0006: [0], # On/Off 1.5 p.48
})
static var TYPES = { 0x0850: 2 } # OnOff Sensor, rev 2
- var tasmota_switch_index # Switch number in Tasmota (one based)
- var shadow_onoff
+ # var tasmota_switch_index # Switch number in Tasmota (one based)
+ # var shadow_bool_value
#############################################################
- # parse_configuration
+ # value_updated
#
- # Parse configuration map
- def parse_configuration(config)
- self.tasmota_switch_index = int(config.find(self.ARG #-'relay'-#, 1))
- if self.tasmota_switch_index <= 0 self.tasmota_switch_index = 1 end
- end
-
- #############################################################
- # Update shadow
- #
- def update_shadow()
- super(self).update_shadow()
- if !self.VIRTUAL
- var switch_str = "Switch" + str(self.tasmota_switch_index)
-
- var j = tasmota.cmd("Status 8", true)
- if j != nil j = j.find("StatusSNS") end
- if j != nil && j.contains(switch_str)
- var state = (j.find(switch_str) == "ON")
-
- if (self.shadow_onoff != state)
- self.attribute_updated(0x0006, 0x0000)
- end
- self.shadow_onoff = state
- end
- end
+ # This is triggered when a new value is changed, for subscription
+ # This method is meant to be overloaded and maximize shared code
+ def value_updated()
+ self.attribute_updated(0x0006, 0x0000)
end
#############################################################
@@ -78,7 +57,7 @@ class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Device
if cluster == 0x0006 # ========== On/Off 1.5 p.48 ==========
self.update_shadow_lazy()
if attribute == 0x0000 # ---------- OnOff / bool ----------
- return tlv_solo.set(TLV.BOOL, self.shadow_onoff)
+ return tlv_solo.set(TLV.BOOL, self.shadow_bool_value)
end
end
@@ -93,7 +72,7 @@ class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Device
#
# Override the default behavior to use the key `OnOff` instead of `Power`
def append_state_json()
- return f',"OnOff":{int(self.shadow_onoff)}'
+ return f',"OnOff":{int(self.shadow_bool_value)}'
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Pressure.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Pressure.be
index b41f21a97..e3918d1d4 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Pressure.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Pressure.be
@@ -62,11 +62,7 @@ class Matter_Plugin_Sensor_Pressure : Matter_Plugin_Sensor
# ====================================================================================================
if cluster == 0x0403 # ========== Pressure Measurement 2.4 p.98 ==========
if attribute == 0x0000 # ---------- MeasuredValue / i16 ----------
- if self.shadow_value != nil
- return tlv_solo.set(TLV.I2, int(self.shadow_value))
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
+ return tlv_solo.set_or_nil(TLV.I2, int(self.shadow_value))
elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ----------
return tlv_solo.set(TLV.I2, 500) # 500 hPA
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
@@ -77,5 +73,21 @@ class Matter_Plugin_Sensor_Pressure : Matter_Plugin_Sensor
return super(self).read_attribute(session, ctx, tlv_solo)
end
+ #############################################################
+ # For Bridge devices
+ #############################################################
+ #############################################################
+ # web_values
+ #
+ # Show values of the remote device as HTML
+ def web_values()
+ import webserver
+ self.web_values_prefix() # display '| ' and name if present
+ webserver.content_send(format("⛅ %i hPa",
+ int(self.shadow_value)))
+ end
+ #############################################################
+ #############################################################
+
end
matter.Plugin_Sensor_Pressure = Matter_Plugin_Sensor_Pressure
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Waterleak.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Rain.be
similarity index 50%
rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Waterleak.be
rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Rain.be
index aa7c7c7d1..970be52b8 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Bridge_Sensor_Waterleak.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Rain.be
@@ -1,5 +1,5 @@
#
-# Matter_Plugin_Bridge_Sensor_Waterleak.be - implements Waterleak Sensor via HTTP to Tasmota
+# Matter_Plugin_3_Sensor_Rain.be - implements the behavior for a Rain Sensor
#
# Copyright (C) 2024 Stephan Hadinger & Theo Arends
#
@@ -21,48 +21,32 @@ import matter
# Matter plug-in for core behavior
-#@ solidify:Matter_Plugin_Bridge_Sensor_Waterleak,weak
-
-class Matter_Plugin_Bridge_Sensor_Waterleak : Matter_Plugin_Bridge_HTTP
- static var TYPE = "http_waterleak" # name of the plug-in in json
- static var DISPLAY_NAME = "Waterleak" # display name of the plug-in
- static var ARG = "switch" # additional argument name (or empty if none)
- static var ARG_HINT = "Switch number"
- static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
- static var UPDATE_TIME = 5000 # update every 5s
- static var UPDATE_CMD = "Status 8" # command to send for updates
+#@ solidify:Matter_Plugin_Sensor_Rain,weak
+class Matter_Plugin_Sensor_Rain : Matter_Plugin_Sensor_Boolean
+ static var TYPE = "rain" # name of the plug-in in json
+ static var DISPLAY_NAME = "Rain" # display name of the plug-in
+ # static var ARG = "switch" # additional argument name (or empty if none)
+ # static var ARG_HINT = "Switch number"
+ # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
+ # static var UPDATE_TIME = 750 # update every 750ms
+ static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Rain")
static var CLUSTERS = matter.consolidate_clusters(_class, {
0x0045: [0], # Boolean State p.70 - no writable
})
- static var TYPES = { 0x0043: 1 } # Waterleak Sensor, rev 1
+ # MATTER_WATER_LEAK_DETECTOR_DEVICE_TYPE_ID 0x0043
+ static var TYPES = { 0x0044: 1 } # Rain Sensor, rev 1
- var tasmota_switch_index # Switch number in Tasmota (one based)
- var shadow_Waterleak
+ # var tasmota_switch_index # Switch number in Tasmota (one based)
+ # var shadow_bool_value
#############################################################
- # Constructor
- def init(device, endpoint, arguments)
- super(self).init(device, endpoint, arguments)
- self.tasmota_switch_index = int(arguments.find(self.ARG #-'switch'-#, 1))
- if self.tasmota_switch_index <= 0 self.tasmota_switch_index = 1 end
- end
-
- #############################################################
- # Stub for updating shadow values (local copies of what we published to the Matter gateway)
+ # value_updated
#
- # This call is synnchronous and blocking.
- def parse_update(data, index)
- if index == 8 # Status 8
- var state = false
-
- state = (data.find("Switch" + str(self.tasmota_switch_index)) == "ON")
-
- if self.shadow_Waterleak != nil && self.shadow_Waterleak != bool(state)
- self.attribute_updated(0x0045, 0x0000)
- end
- self.shadow_Waterleak = state
- end
+ # This is triggered when a new value is changed, for subscription
+ # This method is meant to be overloaded and maximize shared code
+ def value_updated()
+ self.attribute_updated(0x0045, 0x0000)
end
#############################################################
@@ -76,17 +60,25 @@ class Matter_Plugin_Bridge_Sensor_Waterleak : Matter_Plugin_Bridge_HTTP
# ====================================================================================================
if cluster == 0x0045 # ========== Boolean State ==========
if attribute == 0x0000 # ---------- StateValue / bool ----------
- if self.shadow_Waterleak != nil
- return tlv_solo.set(TLV.BOOL, self.shadow_Waterleak)
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
+ return tlv_solo.set(TLV.BOOL, self.shadow_bool_value)
end
end
return super(self).read_attribute(session, ctx, tlv_solo)
end
+ #############################################################
+ # update_virtual
+ #
+ # Update internal state for virtual devices
+ def update_virtual(payload)
+ self.shadow_bool_value = self._parse_update_virtual(payload, "Rain", self.shadow_bool_value, bool, 0x0045, 0x0000)
+ super(self).update_virtual(payload)
+ end
+
+ #############################################################
+ # For Bridge devices
+ #############################################################
#############################################################
# web_values
#
@@ -94,7 +86,7 @@ class Matter_Plugin_Bridge_Sensor_Waterleak : Matter_Plugin_Bridge_HTTP
def web_values()
import webserver
self.web_values_prefix() # display '| ' and name if present
- webserver.content_send(format("Waterleak%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_Waterleak)))
+ webserver.content_send(format("Rain%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_bool_value)))
end
# Show prefix before web value
@@ -106,5 +98,8 @@ class Matter_Plugin_Bridge_Sensor_Waterleak : Matter_Plugin_Bridge_HTTP
end
webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : ""))
end
+ #############################################################
+ #############################################################
+
end
-matter.Plugin_Bridge_Sensor_Waterleak = Matter_Plugin_Bridge_Sensor_Waterleak
+matter.Plugin_Sensor_Rain = Matter_Plugin_Sensor_Rain
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Temp.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Temp.be
index a6a540595..6a9ba5e4c 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Temp.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Temp.be
@@ -39,10 +39,18 @@ class Matter_Plugin_Sensor_Temp : Matter_Plugin_Sensor
# This must be overriden.
# This allows to convert the raw sensor value to the target one, typically int
def pre_value(val)
- if tasmota.get_option(8) == 1 # Fahrenheit
- val = (val - 32) / 1.8
+ # TODO simplify
+ if self.BRIDGE
+ if self.temp_unit == self.TEMP_F # Fahrenheit
+ val = (val - 32) / 1.8
+ end
+ return val != nil ? int(val * 100) : nil
+ else
+ if tasmota.get_option(8) == 1 # Fahrenheit
+ val = (val - 32) / 1.8
+ end
+ return val != nil ? int(val * 100) : nil
end
- return val != nil ? int(val * 100) : nil
end
#############################################################
@@ -65,11 +73,7 @@ class Matter_Plugin_Sensor_Temp : Matter_Plugin_Sensor
# ====================================================================================================
if cluster == 0x0402 # ========== Temperature Measurement 2.3 p.97 ==========
if attribute == 0x0000 # ---------- MeasuredValue / i16 (*100) ----------
- if self.shadow_value != nil
- return tlv_solo.set(TLV.I2, self.shadow_value)
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
+ return tlv_solo.set_or_nil(TLV.I2, self.shadow_value)
elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 (*100) ----------
return tlv_solo.set(TLV.I2, -5000) # -50 °C
elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 (*100) ----------
@@ -80,5 +84,21 @@ class Matter_Plugin_Sensor_Temp : Matter_Plugin_Sensor
return super(self).read_attribute(session, ctx, tlv_solo)
end
+ #############################################################
+ # For Bridge devices
+ #############################################################
+ #############################################################
+ # web_values
+ #
+ # Show values of the remote device as HTML
+ def web_values()
+ import webserver
+ self.web_values_prefix() # display '| ' and name if present
+ webserver.content_send(format("☀️ %.1f °C",
+ self.shadow_value != nil ? real(self.shadow_value) / 100 : nil))
+ end
+ #############################################################
+ #############################################################
+
end
matter.Plugin_Sensor_Temp = Matter_Plugin_Sensor_Temp
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Waterleak.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Waterleak.be
new file mode 100644
index 000000000..4a140e27e
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Sensor_Waterleak.be
@@ -0,0 +1,90 @@
+#
+# Matter_Plugin_2_Sensor_Waterleak.be - implements the behavior for a Water leak Sensor
+#
+# Copyright (C) 2024 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+# Matter plug-in for core behavior
+
+#@ solidify:Matter_Plugin_Sensor_Waterleak,weak
+
+class Matter_Plugin_Sensor_Waterleak : Matter_Plugin_Sensor_Boolean
+ static var TYPE = "waterleak" # name of the plug-in in json
+ static var DISPLAY_NAME = "Waterleak" # display name of the plug-in
+ # static var ARG = "switch" # additional argument name (or empty if none)
+ # static var ARG_HINT = "Switch number"
+ # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
+ # static var UPDATE_TIME = 750 # update every 750ms
+ static var UPDATE_COMMANDS = matter.UC_LIST(_class, "Waterleak")
+ static var CLUSTERS = matter.consolidate_clusters(_class, {
+ 0x0045: [0], # Boolean State p.70 - no writable
+ })
+ # MATTER_WATER_LEAK_DETECTOR_DEVICE_TYPE_ID 0x0043
+ static var TYPES = { 0x0043: 1 } # Waterleak Sensor, rev 1
+
+ # var tasmota_switch_index # Switch number in Tasmota (one based)
+ # var shadow_bool_value
+
+ #############################################################
+ # value_updated
+ #
+ # This is triggered when a new value is changed, for subscription
+ # This method is meant to be overloaded and maximize shared code
+ def value_updated = Matter_Plugin_Sensor_Rain.value_updated
+
+ #############################################################
+ # read an attribute
+ #
+ def read_attribute = Matter_Plugin_Sensor_Rain.read_attribute
+
+ #############################################################
+ # update_virtual
+ #
+ # Update internal state for virtual devices
+ def update_virtual(payload)
+ self.shadow_bool_value = self._parse_update_virtual(payload, "Waterleak", self.shadow_bool_value, bool, 0x0045, 0x0000)
+ super(self).update_virtual(payload)
+ end
+
+ #############################################################
+ # For Bridge devices
+ #############################################################
+ #############################################################
+ # web_values
+ #
+ # Show values of the remote device as HTML
+ def web_values()
+ import webserver
+ self.web_values_prefix() # display '| ' and name if present
+ webserver.content_send(format("Waterleak%i %s", self.tasmota_switch_index, self.web_value_onoff(self.shadow_bool_value)))
+ end
+
+ # Show prefix before web value
+ def web_values_prefix()
+ import webserver
+ var name = self.get_name()
+ if !name
+ name = "Switch" + str(self.tasmota_switch_index)
+ end
+ webserver.content_send(format(self.PREFIX, name ? webserver.html_escape(name) : ""))
+ end
+ #############################################################
+ #############################################################
+
+end
+matter.Plugin_Sensor_Waterleak = Matter_Plugin_Sensor_Waterleak
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Light1.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Light1.be
deleted file mode 100644
index e2ada8078..000000000
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Light1.be
+++ /dev/null
@@ -1,184 +0,0 @@
-#
-# Matter_Plugin_Bridge_Light1.be - implements the behavior for a remote generic Lighting (Dimmer) via HTTP
-#
-# Copyright (C) 2023 Stephan Hadinger & Theo Arends
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-#
-
-import matter
-
-# Matter plug-in for core behavior
-
-#@ solidify:Matter_Plugin_Bridge_Light1,weak
-
-class Matter_Plugin_Bridge_Light1 : Matter_Plugin_Bridge_Light0
- static var TYPE = "http_light1" # name of the plug-in in json
- static var DISPLAY_NAME = "Light 1 Dimmer" # display name of the plug-in
- # static var ARG = "relay" # additional argument name (or empty if none)
- # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
- static var CLUSTERS = matter.consolidate_clusters(_class, {
- # 0x001D: inherited # Descriptor Cluster 9.5 p.453
- # 0x0003: inherited # Identify 1.2 p.16
- # 0x0004: inherited # Groups 1.3 p.21
- # 0x0005: inherited # Scenes 1.4 p.30 - no writable
- # 0x0006: inherited # On/Off 1.5 p.48
- 0x0008: [0,2,3,0x0F,0x11], # Level Control 1.6 p.57
- })
- static var TYPES = { 0x0101: 2 } # Dimmable Light
-
- var shadow_bri
- # var tasmota_relay_index # ingerited
- # var shadow_onoff # inherited
-
- #############################################################
- # Stub for updating shadow values (local copies of what we published to the Matter gateway)
- #
- # This call is synnchronous and blocking.
- def parse_update(data, index)
- super(self).parse_update(data, index)
-
- if index == 11 # Status 11
- var dimmer = int(data.find("Dimmer")) # 0..100
- if dimmer != nil
- var bri = tasmota.scale_uint(dimmer, 0, 100, 0, 254)
- if bri != self.shadow_bri
- self.attribute_updated(0x0008, 0x0000)
- self.shadow_bri = bri
- end
- end
- end
- end
-
- #############################################################
- # Model
- #
- def set_bri(v)
- var dimmer = tasmota.scale_uint(v, 0, 254, 0, 100)
- var ret = self.call_remote_sync("Dimmer", str(dimmer))
- if ret != nil
- self.parse_update(ret, 11) # update shadow from return value
- end
- end
-
- #############################################################
- # read an attribute
- #
- def read_attribute(session, ctx, tlv_solo)
- var TLV = matter.TLV
- var cluster = ctx.cluster
- var attribute = ctx.attribute
-
- # ====================================================================================================
- if cluster == 0x0008 # ========== Level Control 1.6 p.57 ==========
- self.update_shadow_lazy()
- if attribute == 0x0000 # ---------- CurrentLevel / u1 ----------
- if self.shadow_bri != nil
- return tlv_solo.set(TLV.U1, self.shadow_bri)
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
- elif attribute == 0x0002 # ---------- MinLevel / u1 ----------
- return tlv_solo.set(TLV.U1, 0)
- elif attribute == 0x0003 # ---------- MaxLevel / u1 ----------
- return tlv_solo.set(TLV.U1, 254)
- elif attribute == 0x000F # ---------- Options / map8 ----------
- return tlv_solo.set(TLV.U1, 0) #
- elif attribute == 0x0011 # ---------- OnLevel / u1 ----------
- if self.shadow_bri != nil
- return tlv_solo.set(TLV.U1, self.shadow_bri)
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
- end
-
- end
- return super(self).read_attribute(session, ctx, tlv_solo)
- end
-
- #############################################################
- # Invoke a command
- #
- # returns a TLV object if successful, contains the response
- # or an `int` to indicate a status
- def invoke_request(session, val, ctx)
- var TLV = matter.TLV
- var cluster = ctx.cluster
- var command = ctx.command
-
- # ====================================================================================================
- if cluster == 0x0008 # ========== Level Control 1.6 p.57 ==========
- if command == 0x0000 # ---------- MoveToLevel ----------
- var bri_in = val.findsubval(0) # Hue 0..254
- self.set_bri(bri_in)
- ctx.log = "bri:"+str(bri_in)
- self.publish_command('Bri', tasmota.scale_uint(bri_in, 0, 254, 0, 255),
- 'Dimmer', tasmota.scale_uint(bri_in, 0, 254, 0, 100))
- return true
- elif command == 0x0001 # ---------- Move ----------
- # TODO, we don't really support it
- return true
- elif command == 0x0002 # ---------- Step ----------
- # TODO, we don't really support it
- return true
- elif command == 0x0003 # ---------- Stop ----------
- # TODO, we don't really support it
- return true
- elif command == 0x0004 # ---------- MoveToLevelWithOnOff ----------
- var bri_in = val.findsubval(0) # Hue 0..254
- self.set_bri(bri_in)
- var onoff = bri_in > 0
- self.set_onoff(onoff)
- ctx.log = "bri:"+str(bri_in)
- self.publish_command('Bri', tasmota.scale_uint(bri_in, 0, 254, 0, 255),
- 'Dimmer', tasmota.scale_uint(bri_in, 0, 254, 0, 100),
- 'Power', onoff ? 1 : 0)
- return true
- elif command == 0x0005 # ---------- MoveWithOnOff ----------
- # TODO, we don't really support it
- return true
- elif command == 0x0006 # ---------- StepWithOnOff ----------
- # TODO, we don't really support it
- return true
- elif command == 0x0007 # ---------- StopWithOnOff ----------
- # TODO, we don't really support it
- return true
- end
-
- else
- return super(self).invoke_request(session, val, ctx)
- end
- end
-
- #############################################################
- # web_values
- #
- # Show values of the remote device as HTML
- def web_values()
- import webserver
- self.web_values_prefix() # display '| ' and name if present
- webserver.content_send(format("%s %s", self.web_value_onoff(self.shadow_onoff), self.web_value_dimmer()))
- end
-
- # Show on/off value as html
- def web_value_dimmer()
- var bri_html = ""
- if self.shadow_bri != nil
- var bri = tasmota.scale_uint(self.shadow_bri, 0, 254, 0, 100)
- bri_html = format("%i%%", bri)
- end
- return "🔅 " + bri_html;
- end
-end
-matter.Plugin_Bridge_Light1 = Matter_Plugin_Bridge_Light1
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Flow.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Flow.be
deleted file mode 100644
index 24f765768..000000000
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Flow.be
+++ /dev/null
@@ -1,91 +0,0 @@
-#
-# Matter_Plugin_Bridge_Sensor_Flow.be - implements base class for a Flow Sensor via HTTP to Tasmota
-#
-# Copyright (C) 2023 Stephan Hadinger & Theo Arends
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-#
-
-import matter
-
-# Matter plug-in for core behavior
-
-#@ solidify:Matter_Plugin_Bridge_Sensor_Flow,weak
-
-class Matter_Plugin_Bridge_Sensor_Flow : Matter_Plugin_Bridge_Sensor
- static var TYPE = "http_flow" # name of the plug-in in json
- static var DISPLAY_NAME = "Flow" # display name of the plug-in
-
- static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0404: [0,1,2], # Flow Measurement
- })
- static var TYPES = { 0x0306: 1 } # Flow Sensor, rev 1
-
- #############################################################
- # Called when the value changed compared to shadow value
- #
- # This must be overriden.
- # This is where you call `self.attribute_updated(, )`
- def value_changed()
- self.attribute_updated(0x0404, 0x0000)
- end
-
- #############################################################
- # Pre-process value
- #
- # This must be overriden.
- # This allows to convert the raw sensor value to the target one, typically int
- def pre_value(val)
- return val != nil ? int(val * 10) : nil # MeasuredValue represents 10 x flow in m3/h
- end
-
- #############################################################
- # read an attribute
- #
- def read_attribute(session, ctx, tlv_solo)
- var TLV = matter.TLV
- var cluster = ctx.cluster
- var attribute = ctx.attribute
-
- # ====================================================================================================
- if cluster == 0x0404 # ========== Flow Measurement 2.1.2 p.127 ==========
- if attribute == 0x0000 # ---------- MeasuredValue / i16 ----------
- if self.shadow_value != nil
- return tlv_solo.set(TLV.U2, int(self.shadow_value)) # MeasuredValue represents 10 x flow in m3/h.
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
- elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ----------
- return tlv_solo.set(TLV.U2, 0) # 0 m3/h
- elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
- return tlv_solo.set(TLV.U2, 65534) # 65534 m3/h
- end
-
- end
- return super(self).read_attribute(session, ctx, tlv_solo)
- end
-
- #############################################################
- # web_values
- #
- # Show values of the remote device as HTML
- def web_values()
- import webserver
- self.web_values_prefix() # display '| ' and name if present
- webserver.content_send(format("⛅ %i m3/h",
- int(self.shadow_value)))
- end
-
-end
-matter.Plugin_Bridge_Sensor_Flow = Matter_Plugin_Bridge_Sensor_Flow
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Humidity.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Humidity.be
deleted file mode 100644
index 05e25437a..000000000
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Humidity.be
+++ /dev/null
@@ -1,91 +0,0 @@
-#
-# Matter_Plugin_Bridge_Sensor_Humidity.be - implements base class for a Humidity Sensor via HTTP to Tasmota
-#
-# Copyright (C) 2023 Stephan Hadinger & Theo Arends
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-#
-
-import matter
-
-# Matter plug-in for core behavior
-
-#@ solidify:Matter_Plugin_Bridge_Sensor_Humidity,weak
-
-class Matter_Plugin_Bridge_Sensor_Humidity : Matter_Plugin_Bridge_Sensor
- static var TYPE = "http_humidity" # name of the plug-in in json
- static var DISPLAY_NAME = "Humidity" # display name of the plug-in
-
- static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0405: [0,1,2], # Humidity Measurement p.102 - no writable
- })
- static var TYPES = { 0x0307: 2 } # Humidity Sensor, rev 2
-
- #############################################################
- # Called when the value changed compared to shadow value
- #
- # This must be overriden.
- # This is where you call `self.attribute_updated(, )`
- def value_changed()
- self.attribute_updated(0x0405, 0x0000)
- end
-
- #############################################################
- # Pre-process value
- #
- # This must be overriden.
- # This allows to convert the raw sensor value to the target one, typically int
- def pre_value(val)
- return val != nil ? int(val * 100) : nil # 1/100th of percentage
- end
-
- #############################################################
- # read an attribute
- #
- def read_attribute(session, ctx, tlv_solo)
- var TLV = matter.TLV
- var cluster = ctx.cluster
- var attribute = ctx.attribute
-
- # ====================================================================================================
- if cluster == 0x0405 # ========== Humidity Measurement 2.4 p.98 ==========
- if attribute == 0x0000 # ---------- Humidity / u16 ----------
- if self.shadow_value != nil
- return tlv_solo.set(TLV.U2, int(self.shadow_value))
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
- elif attribute == 0x0001 # ---------- MinMeasuredValue / u16 ----------
- return tlv_solo.set(TLV.U2, 500) # 0%
- elif attribute == 0x0002 # ---------- MaxMeasuredValue / u16 ----------
- return tlv_solo.set(TLV.U2, 10000) # 100%
- end
-
- end
- return super(self).read_attribute(session, ctx, tlv_solo)
- end
-
- #############################################################
- # web_values
- #
- # Show values of the remote device as HTML
- def web_values()
- import webserver
- self.web_values_prefix() # display '| ' and name if present
- webserver.content_send(format("💧 %2.0f%%",
- self.shadow_value != nil ? real(self.shadow_value) / 100 : nil))
- end
-
-end
-matter.Plugin_Bridge_Sensor_Humidity = Matter_Plugin_Bridge_Sensor_Humidity
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Illuminance.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Illuminance.be
deleted file mode 100644
index 88e0e32ee..000000000
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Illuminance.be
+++ /dev/null
@@ -1,98 +0,0 @@
-#
-# Matter_Plugin_Bridge_Sensor_Illuminance.be - implements base class for a Light/Illuminance Sensor via HTTP to Tasmota
-#
-# Copyright (C) 2023 Stephan Hadinger & Theo Arends
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-#
-
-import matter
-
-# Matter plug-in for core behavior
-
-#@ solidify:Matter_Plugin_Bridge_Sensor_Illuminance,weak
-
-class Matter_Plugin_Bridge_Sensor_Illuminance : Matter_Plugin_Bridge_Sensor
- static var TYPE = "http_illuminance" # name of the plug-in in json
- static var DISPLAY_NAME = "Illuminance" # display name of the plug-in
-
- static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0400: [0,1,2], # Illuminance Measurement p.95 - no writable
- })
- static var TYPES = { 0x0106: 2 } # Illuminance Sensor, rev 2
-
- #############################################################
- # Called when the value changed compared to shadow value
- #
- # This must be overriden.
- # This is where you call `self.attribute_updated(, )`
- def value_changed()
- self.attribute_updated(0x0400, 0x0000)
- end
-
- #############################################################
- # Pre-process value
- #
- # This must be overriden.
- # This allows to convert the raw sensor value to the target one, typically int
- def pre_value(val)
- if val == nil return nil end
- import math
-
- if val < 0
- return 0
- else
- return math.log10(val + 1) * 10000
- end
- end
-
- #############################################################
- # read an attribute
- #
- def read_attribute(session, ctx, tlv_solo)
- var TLV = matter.TLV
- var cluster = ctx.cluster
- var attribute = ctx.attribute
-
- # ====================================================================================================
- if cluster == 0x0400 # ========== Illuminance Measurement 2.2 p.95 ==========
- if attribute == 0x0000 # ---------- MeasuredValue / i16 ----------
- if self.shadow_value != nil
- return tlv_solo.set(TLV.U2, int(self.shadow_value))
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
- elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ----------
- return tlv_solo.set(TLV.U2, 1) # 1 lux
- elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
- return tlv_solo.set(TLV.U2, 0xFFFE)
- end
-
- end
- return super(self).read_attribute(session, ctx, tlv_solo)
- end
-
- #############################################################
- # web_values
- #
- # Show values of the remote device as HTML
- def web_values()
- import webserver
- self.web_values_prefix() # display '| ' and name if present
- webserver.content_send(format("🔅 %ilux",
- int(self.shadow_value)))
- end
-
-end
-matter.Plugin_Bridge_Sensor_Illuminance = Matter_Plugin_Bridge_Sensor_Illuminance
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Pressure.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Pressure.be
deleted file mode 100644
index 53b78393a..000000000
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Pressure.be
+++ /dev/null
@@ -1,91 +0,0 @@
-#
-# Matter_Plugin_Bridge_Sensor_Temp.be - implements base class for a Pressure Sensor via HTTP to Tasmota
-#
-# Copyright (C) 2023 Stephan Hadinger & Theo Arends
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-#
-
-import matter
-
-# Matter plug-in for core behavior
-
-#@ solidify:Matter_Plugin_Bridge_Sensor_Pressure,weak
-
-class Matter_Plugin_Bridge_Sensor_Pressure : Matter_Plugin_Bridge_Sensor
- static var TYPE = "http_pressure" # name of the plug-in in json
- static var DISPLAY_NAME = "Pressure" # display name of the plug-in
-
- static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0403: [0,1,2], # Pressure Measurement
- })
- static var TYPES = { 0x0305: 2 } # Temperature Sensor, rev 2
-
- #############################################################
- # Called when the value changed compared to shadow value
- #
- # This must be overriden.
- # This is where you call `self.attribute_updated(, )`
- def value_changed()
- self.attribute_updated(0x0403, 0x0000)
- end
-
- #############################################################
- # Pre-process value
- #
- # This must be overriden.
- # This allows to convert the raw sensor value to the target one, typically int
- def pre_value(val)
- return val != nil ? int(val) : nil
- end
-
- #############################################################
- # read an attribute
- #
- def read_attribute(session, ctx, tlv_solo)
- var TLV = matter.TLV
- var cluster = ctx.cluster
- var attribute = ctx.attribute
-
- # ====================================================================================================
- if cluster == 0x0403 # ========== Pressure Measurement 2.4 p.98 ==========
- if attribute == 0x0000 # ---------- MeasuredValue / i16 ----------
- if self.shadow_value != nil
- return tlv_solo.set(TLV.I2, int(self.shadow_value))
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
- elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 ----------
- return tlv_solo.set(TLV.I2, 500) # 500 hPA
- elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 ----------
- return tlv_solo.set(TLV.I2, 1500) # 1500 hPA
- end
-
- end
- return super(self).read_attribute(session, ctx, tlv_solo)
- end
-
- #############################################################
- # web_values
- #
- # Show values of the remote device as HTML
- def web_values()
- import webserver
- self.web_values_prefix() # display '| ' and name if present
- webserver.content_send(format("⛅ %i hPa",
- int(self.shadow_value)))
- end
-
-end
-matter.Plugin_Bridge_Sensor_Pressure = Matter_Plugin_Bridge_Sensor_Pressure
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Temp.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Temp.be
deleted file mode 100644
index 8ee8f73d1..000000000
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_Sensor_Temp.be
+++ /dev/null
@@ -1,94 +0,0 @@
-#
-# Matter_Plugin_Bridge_Sensor_Temp.be - implements base class for a Temperature Sensor via HTTP to Tasmota
-#
-# Copyright (C) 2023 Stephan Hadinger & Theo Arends
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-#
-
-import matter
-
-# Matter plug-in for core behavior
-
-#@ solidify:Matter_Plugin_Bridge_Sensor_Temp,weak
-
-class Matter_Plugin_Bridge_Sensor_Temp : Matter_Plugin_Bridge_Sensor
- static var TYPE = "http_temperature" # name of the plug-in in json
- static var DISPLAY_NAME = "Temperature" # display name of the plug-in
-
- static var CLUSTERS = matter.consolidate_clusters(_class, {
- 0x0402: [0,1,2], # Temperature Measurement p.97 - no writable
- })
- static var TYPES = { 0x0302: 2 } # Temperature Sensor, rev 2
-
- #############################################################
- # Called when the value changed compared to shadow value
- #
- # This must be overriden.
- # This is where you call `self.attribute_updated(, )`
- def value_changed()
- self.attribute_updated(0x0402, 0x0000)
- end
-
- #############################################################
- # Pre-process value
- #
- # This must be overriden.
- # This allows to convert the raw sensor value to the target one, typically int
- def pre_value(val)
- if self.temp_unit == self.TEMP_F # Fahrenheit
- val = (val - 32) / 1.8
- end
- return val != nil ? int(val * 100) : nil
- end
-
- #############################################################
- # read an attribute
- #
- def read_attribute(session, ctx, tlv_solo)
- var TLV = matter.TLV
- var cluster = ctx.cluster
- var attribute = ctx.attribute
-
- # ====================================================================================================
- if cluster == 0x0402 # ========== Temperature Measurement 2.3 p.97 ==========
- if attribute == 0x0000 # ---------- MeasuredValue / i16 (*100) ----------
- if self.shadow_value != nil
- return tlv_solo.set(TLV.I2, self.shadow_value)
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
- elif attribute == 0x0001 # ---------- MinMeasuredValue / i16 (*100) ----------
- return tlv_solo.set(TLV.I2, -5000) # -50 °C
- elif attribute == 0x0002 # ---------- MaxMeasuredValue / i16 (*100) ----------
- return tlv_solo.set(TLV.I2, 15000) # 150 °C
- end
-
- end
- return super(self).read_attribute(session, ctx, tlv_solo)
- end
-
- #############################################################
- # web_values
- #
- # Show values of the remote device as HTML
- def web_values()
- import webserver
- self.web_values_prefix() # display '| ' and name if present
- webserver.content_send(format("☀️ %.1f °C",
- self.shadow_value != nil ? real(self.shadow_value) / 100 : nil))
- end
-
-end
-matter.Plugin_Bridge_Sensor_Temp = Matter_Plugin_Bridge_Sensor_Temp
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light2.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Light2.be
similarity index 70%
rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light2.be
rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Light2.be
index 265514e29..189b2d7dc 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light2.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Light2.be
@@ -25,7 +25,9 @@ import matter
class Matter_Plugin_Light2 : Matter_Plugin_Light1
static var TYPE = "light2" # name of the plug-in in json
- static var DISPLAY_NAME = "Light 2 CT" # display name of the plug-in
+ static var DISPLAY_NAME = "Light 2 CT" # display name of the plug-in
+ static var ARG = "" # no arg for native light
+ static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder')
static var CLUSTERS = matter.consolidate_clusters(_class, {
# 0x001D: inherited # Descriptor Cluster 9.5 p.453
# 0x0003: inherited # Identify 1.2 p.16
@@ -46,6 +48,7 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1
# var node_label # name of the endpoint, used only in bridge mode, "" if none
# var shadow_onoff # (bool) status of the light power on/off
# var shadow_bri # (int 0..254) brightness before Gamma correction - as per Matter 255 is not allowed
+ # var light_index # index number when using `light.get()` and `light.set()`
var shadow_ct # (int 153..500, default 325) Color Temperatur in mireds
var ct_min, ct_max # min and max value allowed for CT, Alexa emulation requires to have a narrower range 200..380
@@ -53,7 +56,13 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1
# Constructor
def init(device, endpoint, arguments)
super(self).init(device, endpoint, arguments)
- self.shadow_ct = 325
+ if !self.BRIDGE # in BRIDGE mode keep default to nil
+ self.shadow_ct = 325
+ import light
+ if (light.get(1) != nil)
+ self.light_index = 1 # default value is `0` from superclass
+ end
+ end
self.update_ct_minmax() # read SetOption to adjust ct min/max
end
@@ -61,11 +70,12 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1
# Update shadow
#
def update_shadow()
- if !self.VIRTUAL
+ if !self.VIRTUAL && !self.BRIDGE
import light
self.update_ct_minmax()
super(self).update_shadow()
- var light_status = light.get()
+ # check if the light RGB/CT with split mode, i.e. CT is in `light.get(1)`
+ var light_status = light.get(self.light_index)
if light_status != nil
var ct = light_status.find('ct', nil)
if ct == nil ct = self.shadow_ct end
@@ -96,15 +106,20 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1
def set_ct(ct)
if ct < self.ct_min ct = self.ct_min end
if ct > self.ct_max ct = self.ct_max end
- if !self.VIRTUAL
- import light
- light.set({'ct': ct})
- self.update_shadow()
- else
+ if self.BRIDGE
+ var ret = self.call_remote_sync("CT", str(ct))
+ if ret != nil
+ self.parse_status(ret, 11) # update shadow from return value
+ end
+ elif self.VIRTUAL
if ct != self.shadow_ct
self.attribute_updated(0x0300, 0x0007)
self.shadow_ct = ct
end
+ else
+ import light
+ light.set({'ct': ct}, self.light_index)
+ self.update_shadow()
end
end
@@ -120,7 +135,7 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1
if cluster == 0x0300 # ========== Color Control 3.2 p.111 ==========
self.update_shadow_lazy()
if attribute == 0x0007 # ---------- ColorTemperatureMireds / u2 ----------
- return tlv_solo.set(TLV.U1, self.shadow_ct)
+ return tlv_solo.set_or_nil(TLV.U1, self.shadow_ct) # if `nil` it is replaced with TLV.NULL
elif attribute == 0x0008 # ---------- ColorMode / u1 ----------
return tlv_solo.set(TLV.U1, 2)# 2 = ColorTemperatureMireds
elif attribute == 0x000F # ---------- Options / u1 ----------
@@ -144,7 +159,6 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1
# returns a TLV object if successful, contains the response
# or an `int` to indicate a status
def invoke_request(session, val, ctx)
- import light
var TLV = matter.TLV
var cluster = ctx.cluster
var command = ctx.command
@@ -154,6 +168,8 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1
self.update_shadow_lazy()
if command == 0x000A # ---------- MoveToColorTemperature ----------
var ct_in = val.findsubval(0) # CT
+ if ct_in < self.ct_min ct_in = self.ct_min end
+ if ct_in > self.ct_max ct_in = self.ct_max end
self.set_ct(ct_in)
ctx.log = "ct:"+str(ct_in)
self.publish_command('CT', ct_in)
@@ -179,13 +195,61 @@ class Matter_Plugin_Light2 : Matter_Plugin_Light1
# update_virtual
#
# Update internal state for virtual devices
- def update_virtual(payload_json)
- var val_ct = int(payload_json.find("CT")) # int or nil
+ def update_virtual(payload)
+ var val_ct = int(payload.find("CT")) # int or nil
if (val_ct != nil)
self.set_ct(val_ct)
end
- super(self).update_virtual(payload_json)
+ super(self).update_virtual(payload)
end
+ #############################################################
+ # For Bridge devices
+ #############################################################
+ #############################################################
+ # Stub for updating shadow values (local copies of what we published to the Matter gateway)
+ #
+ # TO BE OVERRIDDEN
+ # This call is synnchronous and blocking.
+ def parse_status(data, index)
+ super(self).parse_status(data, index)
+
+ if index == 11 # Status 11
+ var ct = int(data.find("CT")) # 153..500
+ if ct != nil
+ if ct != self.shadow_ct
+ if ct < self.ct_min ct = self.ct_min end
+ if ct > self.ct_max ct = self.ct_max end
+ self.attribute_updated(0x0300, 0x0007)
+ self.shadow_ct = ct
+ end
+ end
+ end
+ end
+
+ #############################################################
+ # web_values
+ #
+ # Show values of the remote device as HTML
+ def web_values()
+ import webserver
+ self.web_values_prefix() # display '| ' and name if present
+ webserver.content_send(format("%s %s %s",
+ self.web_value_onoff(self.shadow_onoff), self.web_value_dimmer(),
+ self.web_value_ct()))
+ end
+
+ # Show on/off value as html
+ def web_value_ct()
+ var ct_html = ""
+ if self.shadow_ct != nil
+ var ct_k = (((1000000 / self.shadow_ct) + 25) / 50) * 50 # convert in Kelvin
+ ct_html = format("%iK", ct_k)
+ end
+ return "⚪ " + ct_html;
+ end
+ #############################################################
+ #############################################################
+
end
matter.Plugin_Light2 = Matter_Plugin_Light2
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Light3.be
similarity index 70%
rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light3.be
rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Light3.be
index a0b77dd21..379235f19 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_3_Light3.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Light3.be
@@ -25,7 +25,9 @@ import matter
class Matter_Plugin_Light3 : Matter_Plugin_Light1
static var TYPE = "light3" # name of the plug-in in json
- static var DISPLAY_NAME = "Light 3 RGB" # display name of the plug-in
+ static var DISPLAY_NAME = "Light 3 RGB" # display name of the plug-in
+ static var ARG = "" # no arg for native light
+ static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder')
static var CLUSTERS = matter.consolidate_clusters(_class, {
# 0x001D: inherited # Descriptor Cluster 9.5 p.453
# 0x0003: inherited # Identify 1.2 p.16
@@ -62,10 +64,10 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1
# Update shadow
#
def update_shadow()
- super(self).update_shadow()
- if !self.VIRTUAL
+ if !self.VIRTUAL && !self.BRIDGE
import light
- var light_status = light.get()
+ super(self).update_shadow()
+ var light_status = light.get(self.light_index)
if light_status != nil
var hue = light_status.find('hue', nil)
var sat = light_status.find('sat', nil)
@@ -74,6 +76,8 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1
if hue != self.shadow_hue self.attribute_updated(0x0300, 0x0000) self.shadow_hue = hue end
if sat != self.shadow_sat self.attribute_updated(0x0300, 0x0001) self.shadow_sat = sat end
end
+ else
+ super(self).update_shadow()
end
end
@@ -93,25 +97,40 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1
if sat_254 > 254 sat_254 = 254 end
end
- if !self.VIRTUAL
- var hue_360 = (hue_254 != nil) ? tasmota.scale_uint(hue_254, 0, 254, 0, 360) : nil
- var sat_255 = (sat_254 != nil) ? tasmota.scale_uint(sat_254, 0, 254, 0, 255) : nil
-
- if (hue_360 != nil) && (sat_255 != nil)
- light.set({'hue': hue_360, 'sat': sat_255})
- elif (hue_360 != nil)
- light.set({'hue': hue_360})
- else
- light.set({'sat': sat_255})
+ if self.BRIDGE
+ if hue_254 != nil
+ var hue_360 = tasmota.scale_uint(hue_254, 0, 254, 0, 360)
+ var ret = self.call_remote_sync("HSBColor1", hue_360)
+ if ret != nil
+ self.parse_status(ret, 11) # update shadow from return value
+ end
end
- self.update_shadow()
- else
+ if sat_254 != nil
+ var sat_100 = tasmota.scale_uint(sat_254, 0, 254, 0, 100)
+ var ret = self.call_remote_sync("HSBColor2", sat_100)
+ if ret != nil
+ self.parse_status(ret, 11) # update shadow from return value
+ end
+ end
+ elif self.VIRTUAL
if hue_254 != nil
if hue_254 != self.shadow_hue self.attribute_updated(0x0300, 0x0000) self.shadow_hue = hue_254 end
end
if sat_254 != nil
if sat_254 != self.shadow_sat self.attribute_updated(0x0300, 0x0001) self.shadow_sat = sat_254 end
end
+ else
+ var hue_360 = (hue_254 != nil) ? tasmota.scale_uint(hue_254, 0, 254, 0, 360) : nil
+ var sat_255 = (sat_254 != nil) ? tasmota.scale_uint(sat_254, 0, 254, 0, 255) : nil
+
+ if (hue_360 != nil) && (sat_255 != nil)
+ light.set({'hue': hue_360, 'sat': sat_255}, self.light_index)
+ elif (hue_360 != nil)
+ light.set({'hue': hue_360}, self.light_index)
+ else
+ light.set({'sat': sat_255}, self.light_index)
+ end
+ self.update_shadow()
end
end
@@ -127,9 +146,9 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1
if cluster == 0x0300 # ========== Color Control 3.2 p.111 ==========
self.update_shadow_lazy()
if attribute == 0x0000 # ---------- CurrentHue / u1 ----------
- return tlv_solo.set(TLV.U1, self.shadow_hue)
+ return tlv_solo.set_or_nil(TLV.U1, self.shadow_hue)
elif attribute == 0x0001 # ---------- CurrentSaturation / u2 ----------
- return tlv_solo.set(TLV.U1, self.shadow_sat)
+ return tlv_solo.set_or_nil(TLV.U1, self.shadow_sat)
elif attribute == 0x0007 # ---------- ColorTemperatureMireds / u2 ----------
return tlv_solo.set(TLV.U1, 0)
elif attribute == 0x0008 # ---------- ColorMode / u1 ----------
@@ -159,7 +178,6 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1
# returns a TLV object if successful, contains the response
# or an `int` to indicate a status
def invoke_request(session, val, ctx)
- import light
var TLV = matter.TLV
var cluster = ctx.cluster
var command = ctx.command
@@ -213,14 +231,68 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1
# update_virtual
#
# Update internal state for virtual devices
- def update_virtual(payload_json)
- var val_hue = int(payload_json.find("Hue")) # int or nil
- var val_sat = int(payload_json.find("Sat")) # int or nil
+ def update_virtual(payload)
+ var val_hue = int(payload.find("Hue")) # int or nil
+ var val_sat = int(payload.find("Sat")) # int or nil
if (val_hue != nil) || (val_sat != nil)
self.set_hue_sat(val_hue, val_sat)
end
- super(self).update_virtual(payload_json)
+ super(self).update_virtual(payload)
end
+ #############################################################
+ # For Bridge devices
+ #############################################################
+ #############################################################
+ # Stub for updating shadow values (local copies of what we published to the Matter gateway)
+ #
+ # This call is synnchronous and blocking.
+ def parse_status(data, index)
+ super(self).parse_status(data, index)
+
+ if index == 11 # Status 11
+ var hsb = data.find("HSBColor")
+ if hsb
+ import string
+ var hsb_list = string.split(hsb, ",")
+ var hue = int(hsb_list[0])
+ var sat = int(hsb_list[1])
+ # dimmer is already available
+
+ if hue != nil hue = tasmota.scale_uint(hue, 0, 360, 0, 254) else hue = self.shadow_hue end
+ if sat != nil sat = tasmota.scale_uint(sat, 0, 100, 0, 254) else sat = self.shadow_sat end
+ if hue != self.shadow_hue self.attribute_updated(0x0300, 0x0000) self.shadow_hue = hue end
+ if sat != self.shadow_sat self.attribute_updated(0x0300, 0x0001) self.shadow_sat = sat end
+ end
+ end
+ end
+
+ #############################################################
+ # web_values
+ #
+ # Show values of the remote device as HTML
+ def web_values()
+ import webserver
+ self.web_values_prefix() # display '| ' and name if present
+ webserver.content_send(format("%s %s %s",
+ self.web_value_onoff(self.shadow_onoff), self.web_value_dimmer(),
+ self.web_value_RGB()))
+ end
+
+ # Show on/off value as html
+ def web_value_RGB()
+ if self.shadow_hue != nil && self.shadow_sat != nil
+ var l = light_state(3) # RGB virtual light state object
+ l.set_bri(255) # set full brightness to get full range RGB
+ l.set_huesat(tasmota.scale_uint(self.shadow_hue, 0, 254, 0, 360), tasmota.scale_uint(self.shadow_sat, 0, 254, 0, 255))
+ var rgb_hex = format("#%02X%02X%02X", l.r, l.g, l.b)
+ var rgb_html = format(' %s', rgb_hex, rgb_hex)
+ return rgb_html
+ end
+ return ""
+ end
+ #############################################################
+ #############################################################
+
end
matter.Plugin_Light3 = Matter_Plugin_Light3
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light2.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light2.be
deleted file mode 100644
index 0c8595885..000000000
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light2.be
+++ /dev/null
@@ -1,184 +0,0 @@
-#
-# Matter_Plugin_Bridge_Light2.be - implements the behavior for a remote generic Lighting (CT) via HTTP
-#
-# Copyright (C) 2023 Stephan Hadinger & Theo Arends
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-#
-
-import matter
-
-# Matter plug-in for core behavior
-
-#@ solidify:Matter_Plugin_Bridge_Light2,weak
-
-class Matter_Plugin_Bridge_Light2 : Matter_Plugin_Bridge_Light1
- static var TYPE = "http_light2" # name of the plug-in in json
- static var DISPLAY_NAME = "Light 2 CT" # display name of the plug-in
- # static var ARG = "relay" # additional argument name (or empty if none)
- # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
- static var CLUSTERS = matter.consolidate_clusters(_class, {
- # 0x001D: inherited # Descriptor Cluster 9.5 p.453
- # 0x0003: inherited # Identify 1.2 p.16
- # 0x0004: inherited # Groups 1.3 p.21
- # 0x0005: inherited # Scenes 1.4 p.30 - no writable
- # 0x0006: inherited # On/Off 1.5 p.48
- # 0x0008: inherited # Level Control 1.6 p.57
- 0x0300: [7,8,0xF,0x400A,0x400B,0x400C], # Color Control 3.2 p.111
- })
- static var TYPES = { 0x010C: 2 } # Dimmable Light
-
- var shadow_ct
- var ct_min, ct_max
-
- #############################################################
- # Constructor
- def init(device, endpoint, arguments)
- super(self).init(device, endpoint, arguments)
- self.update_ct_minmax()
- end
-
- #############################################################
- # Stub for updating shadow values (local copies of what we published to the Matter gateway)
- #
- # TO BE OVERRIDDEN
- # This call is synnchronous and blocking.
- def parse_update(data, index)
- super(self).parse_update(data, index)
-
- if index == 11 # Status 11
- var ct = int(data.find("CT")) # 153..500
- if ct != nil
- if ct != self.shadow_ct
- if ct < self.ct_min ct = self.ct_min end
- if ct > self.ct_max ct = self.ct_max end
- self.attribute_updated(0x0300, 0x0007)
- self.shadow_ct = ct
- end
- end
- end
- end
-
- #############################################################
- # Update ct_min/max
- #
- def update_ct_minmax()
- var ct_alexa_mode = tasmota.get_option(82) # if set, range is 200..380 instead of 153...500
- self.ct_min = ct_alexa_mode ? 200 : 153
- self.ct_max = ct_alexa_mode ? 380 : 500
- end
-
- #############################################################
- # Model
- #
- def set_ct(v)
- var ret = self.call_remote_sync("CT", str(v))
- if ret != nil
- self.parse_update(ret, 11) # update shadow from return value
- end
- end
-
- #############################################################
- # read an attribute
- #
- def read_attribute(session, ctx, tlv_solo)
- var TLV = matter.TLV
- var cluster = ctx.cluster
- var attribute = ctx.attribute
-
- # ====================================================================================================
- if cluster == 0x0300 # ========== Color Control 3.2 p.111 ==========
- self.update_shadow_lazy()
- if attribute == 0x0007 # ---------- ColorTemperatureMireds / u2 ----------
- if self.shadow_ct != nil
- return tlv_solo.set(TLV.U1, self.shadow_ct)
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
- elif attribute == 0x0008 # ---------- ColorMode / u1 ----------
- return tlv_solo.set(TLV.U1, 2)# 2 = ColorTemperatureMireds
- elif attribute == 0x000F # ---------- Options / u1 ----------
- return tlv_solo.set(TLV.U1, 0)
- elif attribute == 0x400B # ---------- ColorTempPhysicalMinMireds / u2 ----------
- return tlv_solo.set(TLV.U1, self.ct_min)
- elif attribute == 0x400C # ---------- ColorTempPhysicalMaxMireds / u2 ----------
- return tlv_solo.set(TLV.U1, self.ct_max)
-
- elif attribute == 0x400A # ---------- ColorCapabilities / map32 ----------
- return tlv_solo.set(TLV.U4, 0x10) # CT
- end
-
- end
- return super(self).read_attribute(session, ctx, tlv_solo)
- end
-
- #############################################################
- # Invoke a command
- #
- # returns a TLV object if successful, contains the response
- # or an `int` to indicate a status
- def invoke_request(session, val, ctx)
- var TLV = matter.TLV
- var cluster = ctx.cluster
- var command = ctx.command
-
- # ====================================================================================================
- if cluster == 0x0300 # ========== Color Control 3.2 p.111 ==========
- if command == 0x000A # ---------- MoveToColorTemperature ----------
- var ct_in = val.findsubval(0) # CT
- if ct_in < self.ct_min ct_in = self.ct_min end
- if ct_in > self.ct_max ct_in = self.ct_max end
- self.set_ct(ct_in)
- ctx.log = "ct:"+str(ct_in)
- self.publish_command('CT', ct_in)
- return true
- elif command == 0x0047 # ---------- StopMoveStep ----------
- # TODO, we don't really support it
- return true
- elif command == 0x004B # ---------- MoveColorTemperature ----------
- # TODO, we don't really support it
- return true
- elif command == 0x004C # ---------- StepColorTemperature ----------
- # TODO, we don't really support it
- return true
- end
-
- else
- return super(self).invoke_request(session, val, ctx)
- end
- end
-
- #############################################################
- # web_values
- #
- # Show values of the remote device as HTML
- def web_values()
- import webserver
- self.web_values_prefix() # display '| ' and name if present
- webserver.content_send(format("%s %s %s",
- self.web_value_onoff(self.shadow_onoff), self.web_value_dimmer(),
- self.web_value_ct()))
- end
-
- # Show on/off value as html
- def web_value_ct()
- var ct_html = ""
- if self.shadow_ct != nil
- var ct_k = (((1000000 / self.shadow_ct) + 25) / 50) * 50 # convert in Kelvin
- ct_html = format("%iK", ct_k)
- end
- return "⚪ " + ct_html;
- end
-end
-matter.Plugin_Bridge_Light2 = Matter_Plugin_Bridge_Light2
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light3.be
deleted file mode 100644
index 5b4f0ab30..000000000
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_5_Bridge_Light3.be
+++ /dev/null
@@ -1,214 +0,0 @@
-#
-# Matter_Plugin_Bridge_Light3.be - implements the behavior for a remote generic Lighting (RGB) via HTTP
-#
-# Copyright (C) 2023 Stephan Hadinger & Theo Arends
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-#
-
-import matter
-
-# Matter plug-in for core behavior
-
-#@ solidify:Matter_Plugin_Bridge_Light3,weak
-
-class Matter_Plugin_Bridge_Light3 : Matter_Plugin_Bridge_Light1
- static var TYPE = "http_light3" # name of the plug-in in json
- static var DISPLAY_NAME = "Light 3 RGB" # display name of the plug-in
- # static var ARG = "relay" # additional argument name (or empty if none)
- # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
- static var CLUSTERS = matter.consolidate_clusters(_class, {
- # 0x001D: inherited # Descriptor Cluster 9.5 p.453
- # 0x0003: inherited # Identify 1.2 p.16
- # 0x0004: inherited # Groups 1.3 p.21
- # 0x0005: inherited # Scenes 1.4 p.30 - no writable
- # 0x0006: inherited # On/Off 1.5 p.48
- # 0x0008: inherited # Level Control 1.6 p.57
- 0x0300: [0,1,7,8,0xF,0x4001,0x400A], # Color Control 3.2 p.111
- })
- static var TYPES = { 0x010D: 2 } # Extended Color Light
-
- var shadow_hue, shadow_sat # 0..254
-
- #############################################################
- # Constructor
- def init(device, endpoint, arguments)
- super(self).init(device, endpoint, arguments)
- end
-
- #############################################################
- # Stub for updating shadow values (local copies of what we published to the Matter gateway)
- #
- # This call is synnchronous and blocking.
- def parse_update(data, index)
- super(self).parse_update(data, index)
-
- if index == 11 # Status 11
- var hsb = data.find("HSBColor")
- if hsb
- import string
- var hsb_list = string.split(hsb, ",")
- var hue = int(hsb_list[0])
- var sat = int(hsb_list[1])
- # dimmer is already available
-
- if hue != nil hue = tasmota.scale_uint(hue, 0, 360, 0, 254) else hue = self.shadow_hue end
- if sat != nil sat = tasmota.scale_uint(sat, 0, 100, 0, 254) else sat = self.shadow_sat end
- if hue != self.shadow_hue self.attribute_updated(0x0300, 0x0000) self.shadow_hue = hue end
- if sat != self.shadow_sat self.attribute_updated(0x0300, 0x0001) self.shadow_sat = sat end
- end
- end
- end
-
- #############################################################
- # Model
- #
- def set_hue(v)
- var hue_360 = tasmota.scale_uint(v, 0, 254, 0, 360)
- var ret = self.call_remote_sync("HSBColor1", hue_360)
- if ret != nil
- self.parse_update(ret, 11) # update shadow from return value
- end
- end
- def set_sat(v)
- var sat_100 = tasmota.scale_uint(v, 0, 254, 0, 100)
- var ret = self.call_remote_sync("HSBColor2", sat_100)
- if ret != nil
- self.parse_update(ret, 11) # update shadow from return value
- end
- end
-
- #############################################################
- # read an attribute
- #
- def read_attribute(session, ctx, tlv_solo)
- var TLV = matter.TLV
- var cluster = ctx.cluster
- var attribute = ctx.attribute
-
- # ====================================================================================================
- if cluster == 0x0300 # ========== Color Control 3.2 p.111 ==========
- self.update_shadow_lazy()
- if attribute == 0x0000 # ---------- CurrentHue / u1 ----------
- if self.shadow_hue != nil
- return tlv_solo.set(TLV.U1, self.shadow_hue)
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
- elif attribute == 0x0001 # ---------- CurrentSaturation / u2 ----------
- if self.shadow_sat != nil
- return tlv_solo.set(TLV.U1, self.shadow_sat)
- else
- return tlv_solo.set(TLV.NULL, nil)
- end
- elif attribute == 0x0007 # ---------- ColorTemperatureMireds / u2 ----------
- return tlv_solo.set(TLV.U1, 0)
- elif attribute == 0x0008 # ---------- ColorMode / u1 ----------
- return tlv_solo.set(TLV.U1, 0)# 0 = CurrentHue and CurrentSaturation
- elif attribute == 0x000F # ---------- Options / u1 ----------
- return tlv_solo.set(TLV.U1, 0)
- elif attribute == 0x4001 # ---------- EnhancedColorMode / u1 ----------
- return tlv_solo.set(TLV.U1, 0)
- elif attribute == 0x400A # ---------- ColorCapabilities / map32 ----------
- return tlv_solo.set(TLV.U4, 0x01) # HS
-
- # Defined Primaries Information Attribute Set
- elif attribute == 0x0010 # ---------- NumberOfPrimaries / u1 ----------
- return tlv_solo.set(TLV.U1, 0)
- end
-
- end
- return super(self).read_attribute(session, ctx, tlv_solo)
- end
-
- #############################################################
- # Invoke a command
- #
- # returns a TLV object if successful, contains the response
- # or an `int` to indicate a status
- def invoke_request(session, val, ctx)
- var TLV = matter.TLV
- var cluster = ctx.cluster
- var command = ctx.command
-
- # ====================================================================================================
- if cluster == 0x0300 # ========== Color Control 3.2 p.111 ==========
- if command == 0x0000 # ---------- MoveToHue ----------
- var hue_in = val.findsubval(0) # Hue 0..254
- self.set_hue(hue_in)
- ctx.log = "hue:"+str(hue_in)
- self.publish_command('Hue', hue_in)
- return true
- elif command == 0x0001 # ---------- MoveHue ----------
- # TODO, we don't really support it
- return true
- elif command == 0x0002 # ---------- StepHue ----------
- # TODO, we don't really support it
- return true
- elif command == 0x0003 # ---------- MoveToSaturation ----------
- var sat_in = val.findsubval(0) # Sat 0..254
- self.set_sat(sat_in)
- ctx.log = "sat:"+str(sat_in)
- self.publish_command('Sat', sat_in)
- return true
- elif command == 0x0004 # ---------- MoveSaturation ----------
- # TODO, we don't really support it
- return true
- elif command == 0x0005 # ---------- StepSaturation ----------
- # TODO, we don't really support it
- return true
- elif command == 0x0006 # ---------- MoveToHueAndSaturation ----------
- var hue_in = val.findsubval(0) # Hue 0..254
- var sat_in = val.findsubval(1) # Sat 0..254
- self.set_hue(hue_in)
- self.set_sat(sat_in)
- ctx.log = "hue:"+str(hue_in)+" sat:"+str(sat_in)
- self.publish_command('Hue', hue_in, 'Sat', sat_in)
- return true
- elif command == 0x0047 # ---------- StopMoveStep ----------
- # TODO, we don't really support it
- return true
- end
-
- else
- return super(self).invoke_request(session, val, ctx)
- end
- end
-
- #############################################################
- # web_values
- #
- # Show values of the remote device as HTML
- def web_values()
- import webserver
- self.web_values_prefix() # display '| ' and name if present
- webserver.content_send(format("%s %s %s",
- self.web_value_onoff(self.shadow_onoff), self.web_value_dimmer(),
- self.web_value_RGB()))
- end
-
- # Show on/off value as html
- def web_value_RGB()
- if self.shadow_hue != nil && self.shadow_sat != nil
- var l = light_state(3) # RGB virtual light state object
- l.set_bri(255) # set full brightness to get full range RGB
- l.set_huesat(tasmota.scale_uint(self.shadow_hue, 0, 254, 0, 360), tasmota.scale_uint(self.shadow_sat, 0, 254, 0, 255))
- var rgb_hex = format("#%02X%02X%02X", l.r, l.g, l.b)
- var rgb_html = format(' %s', rgb_hex, rgb_hex)
- return rgb_html
- end
- return ""
- end
-end
-matter.Plugin_Bridge_Light3 = Matter_Plugin_Bridge_Light3
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light0.be
new file mode 100644
index 000000000..e8c444908
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light0.be
@@ -0,0 +1,32 @@
+#
+# Matter_Plugin_Bridge_Light0.be - implements the behavior for a remote generic Lighting (OnOff only) via HTTP
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+# Matter plug-in for core behavior
+
+#@ solidify:Matter_Plugin_Bridge_Light0,weak
+
+class Matter_Plugin_Bridge_Light0 : Matter_Plugin_Light0
+ static var BRIDGE = true # flag as bridged device
+ static var TYPE = "http_light0" # name of the plug-in in json
+ # static var DISPLAY_NAME = "Light 0 On" # display name of the plug-in
+ static var UPDATE_TIME = 3000 # update every 3s
+end
+matter.Plugin_Bridge_Light0 = Matter_Plugin_Bridge_Light0
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light1.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light1.be
new file mode 100644
index 000000000..370e76345
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light1.be
@@ -0,0 +1,35 @@
+#
+# Matter_Plugin_Bridge_Light1.be - implements the behavior for a remote generic Lighting (Dimmer) via HTTP
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+# Matter plug-in for core behavior
+
+#@ solidify:Matter_Plugin_Bridge_Light1,weak
+
+class Matter_Plugin_Bridge_Light1 : Matter_Plugin_Light1
+ static var BRIDGE = true
+ static var TYPE = "http_light1" # name of the plug-in in json
+ # static var DISPLAY_NAME = "Light 1 Dimmer" # display name of the plug-in
+ static var ARG = "relay" # additional argument name (or empty if none)
+ static var ARG_HINT = "Relay number"
+ static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
+ static var UPDATE_TIME = 3000 # update every 3s
+end
+matter.Plugin_Bridge_Light1 = Matter_Plugin_Bridge_Light1
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light2.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light2.be
new file mode 100644
index 000000000..9f10389e3
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light2.be
@@ -0,0 +1,35 @@
+#
+# Matter_Plugin_Bridge_Light2.be - implements the behavior for a remote generic Lighting (CT) via HTTP
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+# Matter plug-in for core behavior
+
+#@ solidify:Matter_Plugin_Bridge_Light2,weak
+
+class Matter_Plugin_Bridge_Light2 : Matter_Plugin_Light2
+ static var BRIDGE = true
+ static var TYPE = "http_light2" # name of the plug-in in json
+ # static var DISPLAY_NAME = "Light 2 CT" # display name of the plug-in
+ static var ARG = "relay" # additional argument name (or empty if none)
+ static var ARG_HINT = "Relay number"
+ static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
+ static var UPDATE_TIME = 3000 # update every 3s
+end
+matter.Plugin_Bridge_Light2 = Matter_Plugin_Bridge_Light2
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light3.be
new file mode 100644
index 000000000..b272a2e33
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Light3.be
@@ -0,0 +1,35 @@
+#
+# Matter_Plugin_Bridge_Light3.be - implements the behavior for a remote generic Lighting (RGB) via HTTP
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+# Matter plug-in for core behavior
+
+#@ solidify:Matter_Plugin_Bridge_Light3,weak
+
+class Matter_Plugin_Bridge_Light3 : Matter_Plugin_Light3
+ static var BRIDGE = true
+ static var TYPE = "http_light3" # name of the plug-in in json
+ # static var DISPLAY_NAME = "Light 3 RGB" # display name of the plug-in
+ static var ARG = "relay" # additional argument name (or empty if none)
+ static var ARG_HINT = "Relay number"
+ static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
+ static var UPDATE_TIME = 3000 # update every 3s
+end
+matter.Plugin_Bridge_Light3 = Matter_Plugin_Bridge_Light3
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_OnOff.be
similarity index 100%
rename from lib/libesp32/berry_matter/src/embedded/Matter_Plugin_4_Bridge_OnOff.be
rename to lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_OnOff.be
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Air_Quality.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Air_Quality.be
new file mode 100644
index 000000000..1d4f6c6fa
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Air_Quality.be
@@ -0,0 +1,32 @@
+#
+# Matter_Plugin_Bridge_Sensor_Contact.be - implements Air Quality Sensor via HTTP to Tasmota
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+# Matter plug-in for core behavior
+
+#@ solidify:Matter_Plugin_Bridge_Sensor_Air_Quality,weak
+
+class Matter_Plugin_Bridge_Sensor_Air_Quality : Matter_Plugin_Sensor_Air_Quality
+ static var BRIDGE = true
+ static var TYPE = "http_airquality" # name of the plug-in in json
+ static var UPDATE_TIME = 5000 # update every 5s
+ static var UPDATE_CMD = "Status 10" # command to send for updates
+end
+matter.Plugin_Bridge_Sensor_Air_Quality = Matter_Plugin_Bridge_Sensor_Air_Quality
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Contact.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Contact.be
new file mode 100644
index 000000000..4175ddf53
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Contact.be
@@ -0,0 +1,36 @@
+#
+# Matter_Plugin_Bridge_Sensor_Contact.be - implements Contact Sensor via HTTP to Tasmota
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+# Matter plug-in for core behavior
+
+#@ solidify:Matter_Plugin_Bridge_Sensor_Contact,weak
+
+class Matter_Plugin_Bridge_Sensor_Contact : Matter_Plugin_Sensor_Contact
+ static var BRIDGE = true
+ static var TYPE = "http_contact" # name of the plug-in in json
+ # static var DISPLAY_NAME = "Contact" # display name of the plug-in
+ # static var ARG = "switch" # additional argument name (or empty if none)
+ # static var ARG_HINT = "Switch number"
+ # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
+ static var UPDATE_TIME = 5000 # update every 5s
+ static var UPDATE_CMD = "Status 10" # command to send for updates
+end
+matter.Plugin_Bridge_Sensor_Contact = Matter_Plugin_Bridge_Sensor_Contact
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Flow.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Flow.be
new file mode 100644
index 000000000..5dfc2309c
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Flow.be
@@ -0,0 +1,30 @@
+#
+# Matter_Plugin_Bridge_Sensor_Flow.be - implements base class for a Flow Sensor via HTTP to Tasmota
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+# Matter plug-in for core behavior
+
+#@ solidify:Matter_Plugin_Bridge_Sensor_Flow,weak
+
+class Matter_Plugin_Bridge_Sensor_Flow : Matter_Plugin_Sensor_Flow
+ static var BRIDGE = true # flag as bridged device
+ static var TYPE = "http_flow" # name of the plug-in in json
+end
+matter.Plugin_Bridge_Sensor_Flow = Matter_Plugin_Bridge_Sensor_Flow
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Humidity.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Humidity.be
new file mode 100644
index 000000000..17a79f087
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Humidity.be
@@ -0,0 +1,30 @@
+#
+# Matter_Plugin_Bridge_Sensor_Humidity.be - implements base class for a Humidity Sensor via HTTP to Tasmota
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+# Matter plug-in for core behavior
+
+#@ solidify:Matter_Plugin_Bridge_Sensor_Humidity,weak
+
+class Matter_Plugin_Bridge_Sensor_Humidity : Matter_Plugin_Sensor_Humidity
+ static var BRIDGE = true # flag as bridged device
+ static var TYPE = "http_humidity" # name of the plug-in in json
+end
+matter.Plugin_Bridge_Sensor_Humidity = Matter_Plugin_Bridge_Sensor_Humidity
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Illuminance.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Illuminance.be
new file mode 100644
index 000000000..4e1df74c5
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Illuminance.be
@@ -0,0 +1,30 @@
+#
+# Matter_Plugin_Bridge_Sensor_Illuminance.be - implements base class for a Light/Illuminance Sensor via HTTP to Tasmota
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+# Matter plug-in for core behavior
+
+#@ solidify:Matter_Plugin_Bridge_Sensor_Illuminance,weak
+
+class Matter_Plugin_Bridge_Sensor_Illuminance : Matter_Plugin_Sensor_Illuminance
+ static var BRIDGE = true # flag as bridged device
+ static var TYPE = "http_illuminance" # name of the plug-in in json
+end
+matter.Plugin_Bridge_Sensor_Illuminance = Matter_Plugin_Bridge_Sensor_Illuminance
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Occupancy.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Occupancy.be
new file mode 100644
index 000000000..06cfe2fb5
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Occupancy.be
@@ -0,0 +1,36 @@
+#
+# Matter_Plugin_Bridge_Sensor_Occupancy.be - implements base class for a Occupancy Sensor via HTTP to Tasmota
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+# Matter plug-in for core behavior
+
+#@ solidify:Matter_Plugin_Bridge_Sensor_Occupancy,weak
+
+class Matter_Plugin_Bridge_Sensor_Occupancy : Matter_Plugin_Sensor_Occupancy
+ static var BRIDGE = true
+ static var TYPE = "http_occupancy" # name of the plug-in in json
+ # static var DISPLAY_NAME = "Occupancy" # display name of the plug-in
+ # static var ARG = "switch" # additional argument name (or empty if none)
+ # static var ARG_HINT = "Switch number"
+ # static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
+ static var UPDATE_TIME = 5000 # update every 5s
+ static var UPDATE_CMD = "Status 10" # command to send for updates
+end
+matter.Plugin_Bridge_Sensor_Occupancy = Matter_Plugin_Bridge_Sensor_Occupancy
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Pressure.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Pressure.be
new file mode 100644
index 000000000..978a21dd8
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Pressure.be
@@ -0,0 +1,30 @@
+#
+# Matter_Plugin_Bridge_Sensor_Temp.be - implements base class for a Pressure Sensor via HTTP to Tasmota
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+# Matter plug-in for core behavior
+
+#@ solidify:Matter_Plugin_Bridge_Sensor_Pressure,weak
+
+class Matter_Plugin_Bridge_Sensor_Pressure : Matter_Plugin_Sensor_Pressure
+ static var BRIDGE = true # flag as bridged device
+ static var TYPE = "http_pressure" # name of the plug-in in json
+end
+matter.Plugin_Bridge_Sensor_Pressure = Matter_Plugin_Bridge_Sensor_Pressure
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Rain.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Rain.be
new file mode 100644
index 000000000..2c024d38a
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Rain.be
@@ -0,0 +1,32 @@
+#
+# Matter_Plugin_Bridge_Sensor_Rain.be - implements Rain Sensor via HTTP to Tasmota
+#
+# Copyright (C) 2024 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+# Matter plug-in for core behavior
+
+#@ solidify:Matter_Plugin_Bridge_Sensor_Rain,weak
+
+class Matter_Plugin_Bridge_Sensor_Rain : Matter_Plugin_Sensor_Rain
+ static var BRIDGE = true
+ static var TYPE = "http_rain" # name of the plug-in in json
+ static var UPDATE_TIME = 5000 # update every 5s
+ static var UPDATE_CMD = "Status 10" # command to send for updates
+end
+matter.Plugin_Bridge_Sensor_Rain = Matter_Plugin_Bridge_Sensor_Rain
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Temp.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Temp.be
new file mode 100644
index 000000000..a30e6d56f
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Temp.be
@@ -0,0 +1,30 @@
+#
+# Matter_Plugin_Bridge_Sensor_Temp.be - implements base class for a Temperature Sensor via HTTP to Tasmota
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+# Matter plug-in for core behavior
+
+#@ solidify:Matter_Plugin_Bridge_Sensor_Temp,weak
+
+class Matter_Plugin_Bridge_Sensor_Temp : Matter_Plugin_Sensor_Temp
+ static var BRIDGE = true # flag as bridged device
+ static var TYPE = "http_temperature" # name of the plug-in in json
+end
+matter.Plugin_Bridge_Sensor_Temp = Matter_Plugin_Bridge_Sensor_Temp
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Waterleak.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Waterleak.be
new file mode 100644
index 000000000..352c61995
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_8_Bridge_Sensor_Waterleak.be
@@ -0,0 +1,32 @@
+#
+# Matter_Plugin_Bridge_Sensor_Waterleak.be - implements Waterleak Sensor via HTTP to Tasmota
+#
+# Copyright (C) 2024 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+# Matter plug-in for core behavior
+
+#@ solidify:Matter_Plugin_Bridge_Sensor_Waterleak,weak
+
+class Matter_Plugin_Bridge_Sensor_Waterleak : Matter_Plugin_Sensor_Waterleak
+ static var BRIDGE = true
+ static var TYPE = "http_waterleak" # name of the plug-in in json
+ static var UPDATE_TIME = 5000 # update every 5s
+ static var UPDATE_CMD = "Status 10" # command to send for updates
+end
+matter.Plugin_Bridge_Sensor_Waterleak = Matter_Plugin_Bridge_Sensor_Waterleak
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Fan.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Fan.be
new file mode 100644
index 000000000..0e7f4341a
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Fan.be
@@ -0,0 +1,33 @@
+#
+# Matter_Plugin_Virt_Fan.be - implements the behavior for a Virtual Fan
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+# Matter plug-in for core behavior
+
+#@ solidify:Matter_Plugin_Virt_Fan,weak
+
+class Matter_Plugin_Virt_Fan : Matter_Plugin_Fan
+ static var TYPE = "v_fan" # name of the plug-in in json
+ static var DISPLAY_NAME = "v.Fan" # display name of the plug-in
+ static var ARG = "" # no arg for virtual device
+ static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder')
+ static var VIRTUAL = true # virtual device
+end
+matter.Plugin_Virt_Fan = Matter_Plugin_Virt_Fan
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light0.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light0.be
index cbe90af7d..65eb8988b 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light0.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light0.be
@@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Light0 : Matter_Plugin_Light0
static var ARG = "" # no arg for virtual device
static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder')
static var VIRTUAL = true # virtual device
-
end
matter.Plugin_Virt_Light0 = Matter_Plugin_Virt_Light0
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light1.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light1.be
index 8697bf2df..be198d422 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light1.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light1.be
@@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Light1 : Matter_Plugin_Light1
static var ARG = "" # no arg for virtual device
static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder')
static var VIRTUAL = true # virtual device
-
end
matter.Plugin_Virt_Light1 = Matter_Plugin_Virt_Light1
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light2.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light2.be
index 20876b842..1a57172fd 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light2.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light2.be
@@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Light2 : Matter_Plugin_Light2
static var ARG = "" # no arg for virtual device
static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder')
static var VIRTUAL = true # virtual device
-
end
matter.Plugin_Virt_Light2 = Matter_Plugin_Virt_Light2
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light3.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light3.be
index 15e7e2ae1..7889545e7 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light3.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Light3.be
@@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Light3 : Matter_Plugin_Light3
static var ARG = "" # no arg for virtual device
static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder')
static var VIRTUAL = true # virtual device
-
end
matter.Plugin_Virt_Light3 = Matter_Plugin_Virt_Light3
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_OnOff.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_OnOff.be
index d9bb5403b..fa501b373 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_OnOff.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_OnOff.be
@@ -29,6 +29,5 @@ class Matter_Plugin_Virt_OnOff : Matter_Plugin_OnOff
static var ARG = "" # no arg for virtual device
static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder')
static var VIRTUAL = true # virtual device
-
end
matter.Plugin_Virt_OnOff = Matter_Plugin_Virt_OnOff
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Air_Quality.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Air_Quality.be
new file mode 100644
index 000000000..23218b55d
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Air_Quality.be
@@ -0,0 +1,33 @@
+#
+# Matter_Plugin_9_Virt_Sensor_Air_Quality.be - implements the behavior for a Virtual Air Quality Sensor
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+# Matter plug-in for core behavior
+
+#@ solidify:Matter_Plugin_Virt_Sensor_Air_Quality,weak
+
+class Matter_Plugin_Virt_Sensor_Air_Quality : Matter_Plugin_Sensor_Air_Quality
+ static var TYPE = "v_airquality" # name of the plug-in in json
+ static var DISPLAY_NAME = "v.Air Quality" # display name of the plug-in
+ static var ARG = "" # no arg for virtual device
+ static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder')
+ static var VIRTUAL = true # virtual device
+end
+matter.Plugin_Virt_Sensor_Air_Quality = Matter_Plugin_Virt_Sensor_Air_Quality
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Contact.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Contact.be
index 0cf722866..af7b4aff1 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Contact.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Contact.be
@@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Sensor_Contact : Matter_Plugin_Sensor_Contact
static var ARG = "" # no arg for virtual device
static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder')
static var VIRTUAL = true # virtual device
-
end
matter.Plugin_Virt_Sensor_Contact = Matter_Plugin_Virt_Sensor_Contact
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Flow.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Flow.be
index e915ab77e..e79d85071 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Flow.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Flow.be
@@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Sensor_Flow : Matter_Plugin_Sensor_Flow
static var ARG = "" # no arg for virtual device
static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder')
static var VIRTUAL = true # virtual device
-
end
matter.Plugin_Virt_Sensor_Flow = Matter_Plugin_Virt_Sensor_Flow
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Humidity.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Humidity.be
index 0fb033a55..e5644cd57 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Humidity.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Humidity.be
@@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Sensor_Humidity : Matter_Plugin_Sensor_Humidity
static var ARG = "" # no arg for virtual device
static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder')
static var VIRTUAL = true # virtual device
-
end
matter.Plugin_Virt_Sensor_Humidity = Matter_Plugin_Virt_Sensor_Humidity
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Illuminance.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Illuminance.be
index 76090f41a..1e44ac7f7 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Illuminance.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Illuminance.be
@@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Sensor_Illuminance : Matter_Plugin_Sensor_Illuminance
static var ARG = "" # no arg for virtual device
static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder')
static var VIRTUAL = true # virtual device
-
end
matter.Plugin_Virt_Sensor_Illuminance = Matter_Plugin_Virt_Sensor_Illuminance
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Occupancy.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Occupancy.be
index 9b4f82004..876db5536 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Occupancy.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Occupancy.be
@@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Sensor_Occupancy : Matter_Plugin_Sensor_Occupancy
static var ARG = "" # no arg for virtual device
static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder')
static var VIRTUAL = true # virtual device
-
end
matter.Plugin_Virt_Sensor_Occupancy = Matter_Plugin_Virt_Sensor_Occupancy
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Pressure.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Pressure.be
index c661b2b0d..a610f09db 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Pressure.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Pressure.be
@@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Sensor_Pressure : Matter_Plugin_Sensor_Pressure
static var ARG = "" # no arg for virtual device
static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder')
static var VIRTUAL = true # virtual device
-
end
matter.Plugin_Virt_Sensor_Pressure = Matter_Plugin_Virt_Sensor_Pressure
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Rain.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Rain.be
new file mode 100644
index 000000000..c43d8d624
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Rain.be
@@ -0,0 +1,34 @@
+
+#
+# Matter_Plugin_9_Virt_Sensor_Rain.be - implements the behavior for a Virtual Rain Sensor
+#
+# Copyright (C) 2024 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+# Matter plug-in for core behavior
+
+#@ solidify:Matter_Plugin_Virt_Sensor_Rain,weak
+
+class Matter_Plugin_Virt_Sensor_Rain : Matter_Plugin_Sensor_Rain
+ static var TYPE = "v_rain" # name of the plug-in in json
+ static var DISPLAY_NAME = "v.Rain" # display name of the plug-in
+ static var ARG = "" # no arg for virtual device
+ static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder')
+ static var VIRTUAL = true # virtual device
+end
+matter.Plugin_Virt_Sensor_Rain = Matter_Plugin_Virt_Sensor_Rain
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Temp.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Temp.be
index 8ad2b11e3..2b835a4be 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Temp.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Temp.be
@@ -29,6 +29,5 @@ class Matter_Plugin_Virt_Sensor_Temp : Matter_Plugin_Sensor_Temp
static var ARG = "" # no arg for virtual device
static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder')
static var VIRTUAL = true # virtual device
-
end
matter.Plugin_Virt_Sensor_Temp = Matter_Plugin_Virt_Sensor_Temp
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Waterleak.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Waterleak.be
index a2bde6498..0e032b08f 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Waterleak.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_9_Virt_Sensor_Waterleak.be
@@ -22,14 +22,13 @@ import matter
# Matter plug-in for core behavior
-#@ solidify:Matter_Plugin_Virt_Sensor_Waterleak ,weak
+#@ solidify:Matter_Plugin_Virt_Sensor_Waterleak,weak
-class Matter_Plugin_Virt_Sensor_Waterleak : Matter_Plugin_Virt_Sensor_Waterleak
+class Matter_Plugin_Virt_Sensor_Waterleak : Matter_Plugin_Sensor_Waterleak
static var TYPE = "v_waterleak" # name of the plug-in in json
static var DISPLAY_NAME = "v.Waterleak" # display name of the plug-in
static var ARG = "" # no arg for virtual device
static var ARG_HINT = "_Not used_" # Hint for entering the Argument (inside 'placeholder')
static var VIRTUAL = true # virtual device
-
end
matter.Plugin_Virt_Sensor_Waterleak = Matter_Plugin_Virt_Sensor_Waterleak
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_z_All.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_z_All.be
index 8aa126950..5e0853885 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_z_All.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_z_All.be
@@ -21,6 +21,14 @@ import matter
# this is used to solidify plugins list in Matter_Device
+######################################################################
+# Register all classes to the `matter` module before solidification
+#
+# Scans all classes starting with `Plugin_`
+# Add to a map from class.TYPE -> class
+# and set an attribute `plugins_classes` to the module `matter`
+# before final solidification.
+######################################################################
def register_native_classes()
var plugins_classes = {}
# try to register any class that starts with 'Plugin_'
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Profiler.be b/lib/libesp32/berry_matter/src/embedded/Matter_Profiler.be
index fb9f1dd56..501458d55 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Profiler.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Profiler.be
@@ -80,14 +80,14 @@ class Matter_Profiler
def dump(loglevel)
if !self.active return end
self.log("<--end-->")
- tasmota.log("MTR: Profiler dump:", loglevel)
+ log("MTR: Profiler dump:", loglevel)
var origin = self.millis[0]
var allocs0 = self.allocs[0]
var reallocs0 = self.reallocs[0]
var idx = 1
while idx < self.len
- # tasmota.log(f"MTR: {self.millis[idx] - origin:4i} [{self.allocs[idx] - allocs0:4i}|{self.reallocs[idx] - reallocs0:4i}]'{self.names[idx]}'", loglevel)
- tasmota.log(f"MTR: {self.millis[idx] - origin:4i} [{self.allocs[idx] - allocs0:4i}]'{self.names[idx]}'", loglevel)
+ # log(f"MTR: {self.millis[idx] - origin:4i} [{self.allocs[idx] - allocs0:4i}|{self.reallocs[idx] - reallocs0:4i}]'{self.names[idx]}'", loglevel)
+ log(f"MTR: {self.millis[idx] - origin:4i} [{self.allocs[idx] - allocs0:4i}]'{self.names[idx]}'", loglevel)
idx += 1
end
end
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Session.be b/lib/libesp32/berry_matter/src/embedded/Matter_Session.be
index 2696d753a..117c02eb6 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Session.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Session.be
@@ -118,7 +118,7 @@ class Matter_Session : Matter_Expirable
#############################################################
# Called before removal
def before_remove()
- tasmota.log(format("MTR: -Session (%6i) (removed)", self.local_session_id), 3)
+ log(format("MTR: -Session (%6i) (removed)", self.local_session_id), 3)
end
#############################################################
@@ -128,7 +128,7 @@ class Matter_Session : Matter_Expirable
#
def counter_snd_next()
var next = self._counter_snd_impl.next()
- # tasmota.log(format("MTR: . Counter_snd=%i", next), 4)
+ # log(format("MTR: . Counter_snd=%i", next), 4)
if matter.Counter.is_greater(next, self.counter_snd)
self.counter_snd = next + self._COUNTER_SND_INCR
if self.does_persist()
@@ -260,6 +260,7 @@ class Matter_Session : Matter_Expirable
def get_fabric_label() return self._fabric ? self._fabric.fabric_label : nil end
def get_admin_subject() return self._fabric ? self._fabric.admin_subject : nil end
def get_admin_vendor() return self._fabric ? self._fabric.admin_vendor : nil end
+ def get_node_id() return self._fabric ? self._fabric.device_id : nil end
#############################################################
# Get operational key pair (private key)
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Session_Store.be b/lib/libesp32/berry_matter/src/embedded/Matter_Session_Store.be
index fb60595cb..473dc0dec 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_Session_Store.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_Session_Store.be
@@ -286,9 +286,9 @@ class Matter_Session_Store
var sessions = self.sessions
while i < size(sessions)
var session = sessions[i]
- tasmota.log(format("MTR: session.resumption_id=%s vs %s", str(session.resumption_id), str(resumption_id)), 4)
+ log(format("MTR: session.resumption_id=%s vs %s", str(session.resumption_id), str(resumption_id)), 4)
if session.resumption_id == resumption_id && session.shared_secret != nil
- # tasmota.log(format("MTR: session.shared_secret=%s", str(session.shared_secret)), 4)
+ # log(format("MTR: session.shared_secret=%s", str(session.shared_secret)), 4)
session.update()
return session
end
@@ -339,13 +339,13 @@ class Matter_Session_Store
# saving went well, now remove previous version and rename
path.remove(self._FABRICS)
if (path.rename(self._FABRICS_TEMP, self._FABRICS))
- tasmota.log(f"MTR: =Saved {fabrics_saved} fabric(s) and {sessions_saved} session(s)", 2)
+ log(f"MTR: =Saved {fabrics_saved} fabric(s) and {sessions_saved} session(s)", 2)
self.device.event_fabrics_saved() # signal event
else
- tasmota.log(f"MTR: Saving Fabrics failed", 2)
+ log(f"MTR: Saving Fabrics failed", 2)
end
except .. as e, m
- tasmota.log("MTR: Session_Store::save Exception:" + str(e) + "|" + str(m), 2)
+ log("MTR: Session_Store::save Exception:" + str(e) + "|" + str(m), 2)
end
end
@@ -386,10 +386,10 @@ class Matter_Session_Store
self.fabrics.push(fabric)
end
- tasmota.log(format("MTR: Loaded %i fabric(s)", size(self.fabrics)), 2)
+ log(format("MTR: Loaded %i fabric(s)", size(self.fabrics)), 2)
except .. as e, m
if e != "io_error"
- tasmota.log("MTR: Session_Store::load Exception:" + str(e) + "|" + str(m), 2)
+ log("MTR: Session_Store::load Exception:" + str(e) + "|" + str(m), 2)
end
end
# persistables are normally not expiring
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_TCP_async.be b/lib/libesp32/berry_matter/src/embedded/Matter_TCP_async.be
index ed13b725c..b46fd4653 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_TCP_async.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_TCP_async.be
@@ -81,7 +81,7 @@ class Matter_TCP_async
end
return true
else
- tasmota.log(format("BRY: failed to resolve [%s]:%i", self.addr, self.port), 3)
+ log(format("BRY: failed to resolve [%s]:%i", self.addr, self.port), 3)
self.close()
self.status = -1
self.tcp_connected = false
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be b/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be
index 74a10d25a..e1c6294d9 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be
@@ -141,6 +141,20 @@ class Matter_TLV
return self
end
end
+
+ #############################################################
+ # set value, equivalent to create_TLV() without allocation
+ #
+ # if value is `nil` replace with TLV.NULL
+ def set_or_nil(t, value)
+ self.reset()
+ if (value == nil) t = 0x14 end # force TLV.NULL
+ if value != nil || t == 0x14 #-t == matter.TLV.NULL-# # put the actual number for performance
+ self.typ = t
+ self.val = value
+ return self
+ end
+ end
#############################################################
# neutral converter
@@ -261,9 +275,9 @@ class Matter_TLV
elif item_type == TLV.NULL # null
# do nothing
elif item_type == TLV.EOC
- tasmota.log("MTR: unexpected eoc", 3)
+ log("MTR: unexpected eoc", 3)
else
- tasmota.log("MTR: unexpected type: " + str(item_type), 3)
+ log("MTR: unexpected type: " + str(item_type), 3)
end
self.next_idx = idx
return idx
@@ -279,6 +293,13 @@ class Matter_TLV
if self.typ == TLV.RAW b..self.val return b end
+ # special case for U8/I8 if we have an int, simplify to smaller size
+ if (self.typ == TLV.I8 || self.typ == TLV.U8) && (type(self.val) == 'int') # don't change if instance of `int64`
+ if self.typ == TLV.I8 self.typ = TLV.I4 # we can safely cast to I4
+ else self.typ = TLV.U4 # or to U4, and let further reduction happen below
+ end
+ end
+
# special case for bool
# we need to change the type according to the value
if self.typ == TLV.BFALSE || self.typ == TLV.BTRUE
@@ -330,7 +351,11 @@ class Matter_TLV
elif isinstance(i64, int64)
i64 = i64.tobytes() # bytes(8)
else
- i64 = int64(int(i64)).tobytes() # bytes(8)
+ if (self.typ == TLV.I8) # signed
+ i64 = int64(int(i64)).tobytes() # bytes(8)
+ else # unsigned
+ i64 = int64.fromu32(int(i64)).tobytes() # bytes(8)
+ end
end
b .. i64
elif self.typ == TLV.BFALSE || self.typ == TLV.BTRUE
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be b/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be
index 62bc065c8..8f67e4ab8 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_UDPServer.be
@@ -135,11 +135,11 @@ class Matter_UDPServer
var from_addr = self.udp_socket.remote_ip
var from_port = self.udp_socket.remote_port
if tasmota.loglevel(4)
- tasmota.log(format("MTR: UDP received from [%s]:%i", from_addr, from_port), 4)
+ log(format("MTR: UDP received from [%s]:%i", from_addr, from_port), 4)
end
- # tasmota.log("MTR: Perf/UDP_received = " + str(debug.counters()), 4)
+ # log("MTR: Perf/UDP_received = " + str(debug.counters()), 4)
if self.dispatch_cb
- profiler.log("udp_loop_dispatch")
+ # profiler.log("udp_loop_dispatch")
self.dispatch_cb(packet, from_addr, from_port)
end
profiler.dump(2)
@@ -165,11 +165,11 @@ class Matter_UDPServer
if ok
if tasmota.loglevel(4)
- tasmota.log(format("MTR: sending packet to '[%s]:%i'", packet.addr, packet.port), 4)
+ log(format("MTR: sending packet to '[%s]:%i'", packet.addr, packet.port), 4)
end
else
if tasmota.loglevel(3)
- tasmota.log(format("MTR: error sending packet to '[%s]:%i'", packet.addr, packet.port), 3)
+ log(format("MTR: error sending packet to '[%s]:%i'", packet.addr, packet.port), 3)
end
end
return ok
@@ -190,14 +190,14 @@ class Matter_UDPServer
var packet = self.packets_sent[idx]
if tasmota.time_reached(packet.next_try)
if packet.retries <= self.RETRIES
- tasmota.log("MTR: . Resending packet id=" + str(packet.msg_id), 4)
+ log("MTR: . Resending packet id=" + str(packet.msg_id), 4)
self.send(packet)
packet.next_try = tasmota.millis() + self._backoff_time(packet.retries)
packet.retries += 1
idx += 1
else
self.packets_sent.remove(idx)
- tasmota.log(format("MTR: . (%6i) Unacked packet '[%s]:%i' msg_id=%i", packet.session_id, packet.addr, packet.port, packet.msg_id), 3)
+ log(format("MTR: . (%6i) Unacked packet '[%s]:%i' msg_id=%i", packet.session_id, packet.addr, packet.port, packet.msg_id), 3)
end
else
idx += 1
@@ -211,14 +211,14 @@ class Matter_UDPServer
var id = msg.ack_message_counter
var exch = msg.exchange_id
if id == nil return end
- # tasmota.log("MTR: receveived ACK id="+str(id), 4)
+ # log("MTR: receveived ACK id="+str(id), 4)
var idx = 0
while idx < size(self.packets_sent)
var packet = self.packets_sent[idx]
if packet.msg_id == id && packet.exchange_id == exch
self.packets_sent.remove(idx)
if tasmota.loglevel(4)
- tasmota.log("MTR: . Removed packet from sending list id=" + str(id), 4)
+ log("MTR: . Removed packet from sending list id=" + str(id), 4)
end
else
idx += 1
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be
index d5f6d6e1b..d2acce51e 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_UI.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_UI.be
@@ -33,12 +33,17 @@ import matter
#################################################################################
class Matter_UI
static var _CLASSES_TYPES = "|relay|light0|light1|light2|light3|shutter|shutter+tilt"
- "|temperature|pressure|illuminance|humidity|occupancy|onoff|contact|flow|waterleak"
+ "|gensw_btn"
+ "|temperature|pressure|illuminance|humidity|occupancy|onoff|contact|flow|rain|waterleak"
+ "|airquality"
"|-virtual|v_relay|v_light0|v_light1|v_light2|v_light3"
- "|v_temp|v_pressure|v_illuminance|v_humidity|v_occupancy|v_contact|v_flow|v_waterleak"
+ "|v_fan"
+ "|v_temp|v_pressure|v_illuminance|v_humidity|v_occupancy|v_contact|v_flow|v_rain|v_waterleak"
+ "|v_airquality"
static var _CLASSES_TYPES2= "|http_relay|http_light0|http_light1|http_light2|http_light3"
"|http_temperature|http_pressure|http_illuminance|http_humidity"
- "|http_occupancy|http_contact|http_flow|http_waterleak"
+ "|http_occupancy|http_contact|http_flow|http_rain|http_waterleak"
+ "|http_airquality"
var device
# ####################################################################################################
@@ -103,7 +108,7 @@ class Matter_UI
if self.matter_enabled()
# checkbox for Matter commissioning
- var commissioning_open_checked = self.device.commissioning_open != nil ? "checked" : ""
+ var commissioning_open_checked = self.device.commissioning.commissioning_open != nil ? "checked" : ""
webserver.content_send(f" ")
webserver.content_send("Commissioning open
")
var disable_bridge_mode_checked = self.device.disable_bridge_mode ? " checked" : ""
@@ -168,17 +173,17 @@ class Matter_UI
def show_commissioning_info()
import webserver
- var seconds_left = (self.device.commissioning_open - tasmota.millis()) / 1000
+ var seconds_left = (self.device.commissioning.commissioning_open - tasmota.millis()) / 1000
if seconds_left < 0 seconds_left = 0 end
var min_left = (seconds_left + 30) / 60
webserver.content_send(f" Commissioning open for {min_left:i} min
")
- var pairing_code = self.device.compute_manual_pairing_code()
+ var pairing_code = self.device.commissioning.compute_manual_pairing_code()
webserver.content_send(f"Manual pairing code:{pairing_code[0..3]}-{pairing_code[4..6]}-{pairing_code[7..]}
")
webserver.content_send("")
- var qr_text = self.device.compute_qrcode_content()
+ var qr_text = self.device.commissioning.compute_qrcode_content()
self.show_qrcode(qr_text)
webserver.content_send(f" {qr_text}
")
webserver.content_send("
")
@@ -191,9 +196,9 @@ class Matter_UI
def show_passcode_form()
import webserver
- webserver.content_send(" Matter Advanced Configuration
")
- #
- webserver.content_send("
")
-
- webserver.content_send("
")
+ webserver.content_send("Delete Fabric "
+
+ "
")
end
end
@@ -366,15 +371,15 @@ class Matter_UI
end
end
self.device.sort_distinct(remotes)
- # tasmota.log("MTR: remotes: "+str(remotes), 4)
+ # log("MTR: remotes: "+str(remotes), 4)
for remote: remotes
var remote_html = webserver.html_escape(remote)
var host_device_name = webserver.html_escape( self.device.get_plugin_remote_info(remote).find('name', remote) )
webserver.content_send(f"🔗 {host_device_name} ")
- webserver.content_send("")
- webserver.content_send(""
+ webserver.content_send(""
+ ""
" "
" "
""
@@ -435,45 +440,46 @@ class Matter_UI
# Add new endpoint section
self.show_plugins_hints_js(self._CLASSES_TYPES)
- webserver.content_send("
Add to Configuration
")
- webserver.content_send("Add local sensor or device
"
+ webserver.content_send("
Add to Configuration
"
+ "Add local sensor or device
"
""
- ""
+
+ "
"
+ "Create new endpoint "
# Add remote endpoint
- webserver.content_send("Add Remote Tasmota or OpenBK
"
+ "Add Remote Tasmota or OpenBK
"
""
- "")
-
- webserver.content_send("
")
- webserver.content_send(""
- "Auto-configure remote Tasmota ")
+ ""
+
+ "
"
+ ""
+ "Auto-configure remote Tasmota "
# button "Reset and Auto-discover"
- webserver.content_send(""
- "Reset all and Auto-discover
")
-
- webserver.content_send("
")
+ "Reset all and Auto-discover
"
+
+ "
")
end
@@ -549,19 +555,19 @@ class Matter_UI
self.show_plugins_configuration()
end
- webserver.content_send("
")
- webserver.content_send("
Advanced Configuration ")
+ webserver.content_send("
"
+ "
Advanced Configuration ")
webserver.content_button(webserver.BUTTON_CONFIGURATION)
webserver.content_stop() #- end of web page -#
end
#---------------------------------------------------------------------- -#
- # Generate configuration map from Status 8 and Status 11
+ # Generate configuration map from Status 10 and Status 11
#
# Returns a list of maps: [ {"type":"temperature", "filter":"ESP32#Temperature"} ]
#---------------------------------------------------------------------- -#
- def generate_config_from_status(status8, status11)
+ def generate_config_from_status(status10, status11)
var config_list = []
# count `Power` and `Power`
@@ -612,7 +618,7 @@ class Matter_UI
# detect sensors
- config_list += self.device.autoconf_sensors_list(status8)
+ config_list += self.device.autoconf.autoconf_sensors_list(status10)
return config_list
end
@@ -625,24 +631,24 @@ class Matter_UI
import json
if url == '' return end
- var timeout = matter.Plugin_Bridge_HTTP.PROBE_TIMEOUT
+ var timeout = matter.Plugin_Device.PROBE_TIMEOUT
var http_remote = matter.HTTP_remote(nil, url, timeout)
- # Status 8
- var status8 = http_remote.call_sync('Status 8', timeout)
- if status8 != nil status8 = json.load(status8) end
- if status8 != nil status8 = status8.find('StatusSNS') end
+ # Status 10
+ var status10 = http_remote.call_sync('Status 10', timeout)
+ if status10 != nil status10 = json.load(status10) end
+ if status10 != nil status10 = status10.find('StatusSNS') end
# Status 11
var status11
- if status8 != nil
+ if status10 != nil
status11 = http_remote.call_sync('Status 11', timeout)
if status11 != nil status11 = json.load(status11) end
if status11 != nil status11 = status11.find('StatusSTS') end
end
- if status8 != nil && status11 != nil
- tasmota.log(format("MTR: probed '%s' status8=%s satus11=%s", url, str(status8), str(status11)), 3)
+ if status10 != nil && status11 != nil
+ log(format("MTR: probed '%s' status10=%s satus11=%s", url, str(status10), str(status11)), 3)
- var config_list = self.generate_config_from_status(status8, status11)
+ var config_list = self.generate_config_from_status(status10, status11)
self.show_plugins_hints_js(self._CLASSES_TYPES2)
@@ -698,13 +704,13 @@ class Matter_UI
webserver.content_send(" ")
# end of table
- webserver.content_send("
")
-
- webserver.content_send("
")
- webserver.content_send(""
- "Add endpoints ")
-
- webserver.content_send("")
+ webserver.content_send("
"
+
+ "
"
+ ""
+ "Add endpoints "
+
+ "")
else
webserver.content_send(format("Unable to connect to '%s'
", webserver.html_escape(url)))
@@ -750,14 +756,14 @@ class Matter_UI
# debug information about parameters
# for i:0..webserver.arg_size()-1
- # tasmota.log(format("MTR: Arg%i '%s' = '%s'", i, webserver.arg_name(i), webserver.arg(i)))
+ # log(format("MTR: Arg%i '%s' = '%s'", i, webserver.arg_name(i), webserver.arg(i)))
# end
#---------------------------------------------------------------------#
# Change Passcode and/or Passcode
#---------------------------------------------------------------------#
if webserver.has_arg("passcode") || webserver.has_arg("discriminator")
- tasmota.log(format("MTR: /matterc received '%s' command", 'passcode'), 3)
+ log(format("MTR: /matterc received '%s' command", 'passcode'), 3)
if webserver.has_arg("passcode")
self.device.root_passcode = int(webserver.arg("passcode"))
end
@@ -781,19 +787,19 @@ class Matter_UI
if matter_enabled_requested != self.matter_enabled()
if matter_enabled_requested
- tasmota.log(format("MTR: /matterc received '%s' command", 'enable'), 3)
+ log(format("MTR: /matterc received '%s' command", 'enable'), 3)
tasmota.cmd("SetOption" + str(matter.MATTER_OPTION) + " 1")
else
- tasmota.log(format("MTR: /matterc received '%s' command", 'disable'), 3)
+ log(format("MTR: /matterc received '%s' command", 'disable'), 3)
tasmota.cmd("SetOption" + str(matter.MATTER_OPTION) + " 0")
end
#- and force restart -#
webserver.redirect("/?rst=")
- elif matter_commissioning_requested != (self.device.commissioning_open != nil)
+ elif matter_commissioning_requested != (self.device.commissioning.commissioning_open != nil)
if matter_commissioning_requested
- self.device.start_root_basic_commissioning()
+ self.device.commissioning.start_root_basic_commissioning()
else
- self.device.stop_basic_commissioning()
+ self.device.commissioning.stop_basic_commissioning()
end
#- and force restart -#
@@ -806,7 +812,7 @@ class Matter_UI
# Delete Fabric
#---------------------------------------------------------------------#
elif webserver.has_arg("del_fabric")
- tasmota.log(format("MTR: /matterc received '%s' command", 'del_fabric'), 3)
+ log(format("MTR: /matterc received '%s' command", 'del_fabric'), 3)
var del_fabric = int(webserver.arg("del_fabric"))
var idx = 0
var fabrics = self.device.sessions.fabrics
@@ -825,9 +831,8 @@ class Matter_UI
# Reset to default auto-configuration
#---------------------------------------------------------------------#
elif webserver.has_arg("auto")
- tasmota.log(format("MTR: /matterc received '%s' command", 'auto'), 3)
- self.device.plugins_persist = false
- self.device.save_param()
+ log(format("MTR: /matterc received '%s' command", 'auto'), 3)
+ self.device.reset_param()
#- and force restart -#
webserver.redirect("/?rst=")
@@ -835,7 +840,7 @@ class Matter_UI
# Apply new configuration template
#---------------------------------------------------------------------#
elif webserver.has_arg("config")
- tasmota.log(format("MTR: /matterc received '%s' command", 'config'), 3)
+ log(format("MTR: /matterc received '%s' command", 'config'), 3)
var needs_saving = false
# iterate by endpoint number
for i:0..webserver.arg_size()-1
@@ -849,25 +854,25 @@ class Matter_UI
if conf_ep != nil # found
var typ_class = self.device.plugins_classes.find(conf_ep.find('type', ''))
if typ_class != nil
- tasmota.log(format("MTR: ep=%i arg=%s", arg_ep, arg), 3)
+ log(format("MTR: ep=%i arg=%s", arg_ep, arg), 3)
# compute the actual value
var prev_arg = typ_class.ui_conf_to_string(typ_class, conf_ep)
var changed = (prev_arg != arg)
- tasmota.log(format("MTR: ep=%i prev_arg='%s' arg='%s' %s", arg_ep, prev_arg, arg, prev_arg != arg ? "changed" : ""), 3)
+ log(format("MTR: ep=%i prev_arg='%s' arg='%s' %s", arg_ep, prev_arg, arg, prev_arg != arg ? "changed" : ""), 3)
if changed
needs_saving = true
typ_class.ui_string_to_conf(typ_class, conf_ep, arg)
var pl = self.device.find_plugin_by_endpoint(arg_ep)
if pl
- tasmota.log(format("MTR: apply conf '%s' (%i) to %s", conf_ep, arg_ep, pl), 3)
+ log(format("MTR: apply conf '%s' (%i) to %s", conf_ep, arg_ep, pl), 3)
pl.parse_configuration(conf_ep)
end
end
end
else
- tasmota.log(format("MTR: ep=%i not found", arg_ep), 3)
+ log(format("MTR: ep=%i not found", arg_ep), 3)
end
elif string.find(arg_name, "nam") == 0 # 'nam' with i being the endpoint
var nam_ep = int(arg_name[3..]) # target endpoint as int
@@ -889,7 +894,7 @@ class Matter_UI
else
conf_ep.remove('name')
end
- tasmota.log(format("MTR: apply name '%s' (%i) to %s", conf_ep, nam_ep, pl), 3)
+ log(format("MTR: apply name '%s' (%i) to %s", conf_ep, nam_ep, pl), 3)
pl.parse_configuration(conf_ep)
end
end
@@ -897,10 +902,10 @@ class Matter_UI
end
end
- tasmota.log(format("MTR: config = %s", str(self.device.plugins_config)), 3)
+ log(format("MTR: config = %s", str(self.device.plugins_config)), 3)
if error
- tasmota.log(format("MTR: config error = %s", error), 3)
+ log(format("MTR: config error = %s", error), 3)
else
if needs_saving || !self.device.plugins_persist
self.device.plugins_persist = true
@@ -916,7 +921,7 @@ class Matter_UI
var typ = webserver.arg('pi')
var arg = webserver.arg('arg')
var nam = webserver.arg('nam')
- tasmota.log(format("MTR: add endpoint typ='%s' arg='%s'", typ, arg), 3)
+ log(format("MTR: add endpoint typ='%s' arg='%s'", typ, arg), 3)
# check if type exists
var typ_class = self.device.plugins_classes.find(typ)
@@ -956,12 +961,12 @@ class Matter_UI
# check if configuration is already present
var duplicate = false
for c: self.device.plugins_config # iterate on values, not on keys()
- # tasmota.log(format("MTR: map_compare '%s' ?= '%s' -> %s", str(c), str(config), str(self.equal_map(c,config))), 3)
+ # log(format("MTR: map_compare '%s' ?= '%s' -> %s", str(c), str(config), str(self.equal_map(c,config))), 3)
if self.equal_map(c,config) duplicate = true break end
end
# not a duplicate, add it
if !duplicate
- tasmota.log(format("MTR: remote add url='%s' type='%s' arg='%s'", url, typ, arg), 3)
+ log(format("MTR: remote add url='%s' type='%s' arg='%s'", url, typ, arg), 3)
self.device.bridge_add_endpoint(typ, config)
end
end
@@ -1002,7 +1007,7 @@ class Matter_UI
end
except .. as e, m
- tasmota.log(format("BRY: Exception> '%s' - %s", e, m), 2)
+ log(format("BRY: Exception> '%s' - %s", e, m), 2)
#- display error page -#
webserver.content_start("Parameter error") #- title of the web page -#
webserver.content_send_style() #- send standard Tasmota styles -#
@@ -1026,7 +1031,7 @@ class Matter_UI
while idx < size(self.device.plugins)
var plg = self.device.plugins[idx]
- if isinstance(plg, matter.Plugin_Bridge_HTTP)
+ if plg.BRIDGE
if bridge_plugin_by_host == nil bridge_plugin_by_host = {} end
var host = plg.http_remote.addr
@@ -1080,7 +1085,7 @@ class Matter_UI
self.show_bridge_status()
- if self.device.is_root_commissioning_open()
+ if self.device.commissioning.is_root_commissioning_open()
self.show_commissioning_info()
end
@@ -1090,9 +1095,9 @@ class Matter_UI
def web_get_arg()
import webserver
if webserver.has_arg("mtc0") # Close Commissioning
- self.device.stop_basic_commissioning()
+ self.device.commissioning.stop_basic_commissioning()
elif webserver.has_arg("mtc1") # Open Commissioning
- self.device.start_root_basic_commissioning()
+ self.device.commissioning.start_root_basic_commissioning()
end
end
@@ -1110,3 +1115,7 @@ class Matter_UI
end
end
matter.UI = Matter_UI
+
+# optimization of constants
+import solidify
+solidify.nocompact(Matter_UI.page_part_ctl)
\ No newline at end of file
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_z_Autoconf.be b/lib/libesp32/berry_matter/src/embedded/Matter_z_Autoconf.be
new file mode 100644
index 000000000..0592669d2
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_z_Autoconf.be
@@ -0,0 +1,240 @@
+#
+# Matter_z_Autoconf.be - implements autoconfiguration of Matter from Tasmota native features
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+#@ solidify:Matter_Autoconf,weak
+
+class Matter_Autoconf
+ var device # reference to the main Device instance
+
+ #############################################################
+ def init(device)
+ self.device = device
+ end
+
+ #############################################################
+ # Load plugins configuration from json
+ #
+ # 'config' is a map
+ # Ex:
+ # {'32': {'filter': 'AXP192#Temperature', 'type': 'temperature'}, '40': {'filter': 'BMP280#Pressure', 'type': 'pressure'}, '34': {'filter': 'SHT3X#Temperature', 'type': 'temperature'}, '33': {'filter': 'BMP280#Temperature', 'type': 'temperature'}, '1': {'relay': 0, 'type': 'relay'}, '56': {'filter': 'SHT3X#Humidity', 'type': 'humidity'}, '0': {'type': 'root'}}
+ def instantiate_plugins_from_config(config)
+ var endpoints = self.device.k2l_num(config)
+ var plugins = self.device.plugins
+
+ # start with mandatory endpoint 0 for root node
+ plugins.push(matter.Plugin_Root(self.device, 0, {}))
+ log("MTR: Configuring endpoints", 2)
+ log(format("MTR: endpoint = %5i type:%s%s", 0, 'root', ''), 2)
+
+ # always include an aggregator for dynamic endpoints
+ plugins.push(matter.Plugin_Aggregator(self.device, matter.AGGREGATOR_ENDPOINT, {}))
+ log(format("MTR: endpoint = %5i type:%s%s", matter.AGGREGATOR_ENDPOINT, 'aggregator', ''), 2)
+
+ for ep: endpoints
+ if ep == 0 continue end # skip endpoint 0
+ try
+ var plugin_conf = config[str(ep)]
+ # log(format("MTR: endpoint %i config %s", ep, plugin_conf), 3)
+
+ var pi_class_name = plugin_conf.find('type')
+ if pi_class_name == nil log("MTR: no class name, skipping", 3) continue end
+ if pi_class_name == 'root' log("MTR: only one root node allowed", 3) continue end
+ var pi_class = self.device.plugins_classes.find(pi_class_name)
+ if pi_class == nil log("MTR: unknown class name '"+str(pi_class_name)+"' skipping", 2) continue end
+
+ var pi = pi_class(self.device, ep, plugin_conf)
+ plugins.push(pi)
+
+ log(format("MTR: endpoint = %5i type:%s%s", ep, pi_class_name, self.device.conf_to_log(plugin_conf)), 2)
+ except .. as e, m
+ log("MTR: Exception" + str(e) + "|" + str(m), 2)
+ end
+ end
+
+ tasmota.publish_result('{"Matter":{"Initialized":1}}', 'Matter')
+ end
+
+ #############################################################
+ # Autoconfigure device from template to map
+ #
+ # Applies only if there are no plugins already configured
+ def autoconf_device_map()
+ import json
+ var m = {}
+
+ # check if we have a light
+ var endpoint = matter.START_ENDPOINT
+ var light_present = 0
+
+ import light
+ var light_status = light.get(0)
+ if light_status != nil
+ var channels_count = size(light_status.find('channels', ""))
+ light_present = 1
+ if channels_count > 0
+ if channels_count == 1
+ m[str(endpoint)] = {'type':'light1'}
+ endpoint += 1
+ # check if we have secondary Dimmer lights (SetOption68 1)
+ var idx = 1
+ var light_status_i
+ while (light_status_i := light.get(idx)) != nil
+ m[str(endpoint)] = {'type':'light1','light':idx + 1} # arg is 1-based so add 1
+ endpoint += 1
+ light_present += 1
+ idx += 1
+ end
+ elif channels_count == 2
+ m[str(endpoint)] = {'type':'light2'}
+ endpoint += 1
+ elif channels_count == 3
+ m[str(endpoint)] = {'type':'light3'}
+ endpoint += 1
+ # check if we have a split second light (SetOption37 128) with 4/5 channels
+ var light_status1 = light.get(1)
+ if (light_status1 != nil)
+ var channels_count1 = size(light_status1.find('channels', ""))
+
+ if (channels_count1 == 1)
+ m[str(endpoint)] = {'type':'light1'}
+ endpoint += 1
+ light_present += 1
+ elif (channels_count1 == 2)
+ m[str(endpoint)] = {'type':'light2'}
+ endpoint += 1
+ light_present += 1
+ end
+ end
+ elif channels_count == 4
+ # not supported yet
+ else # only option left is 5 channels
+ # not supported yet
+ end
+ end
+ end
+
+ # handle shutters before relays (as we steal relays for shutters)
+ var r_st13 = tasmota.cmd("Status 13", true) # issue `Status 13`
+ var relays_reserved = [] # list of relays that are used for non-relay (shutters)
+ log("MTR: Status 13 = "+str(r_st13), 3)
+
+ if r_st13 != nil && r_st13.contains('StatusSHT')
+ r_st13 = r_st13['StatusSHT'] # skip root
+ # Shutter is enabled, iterate
+ var idx = 0
+ while true
+ var k = 'SHT' + str(idx) # SHT is zero based
+ if !r_st13.contains(k) break end # no more SHTxxx
+ var d = r_st13[k]
+ log(format("MTR: '%s' = %s", k, str(d)), 3)
+ var relay1 = d.find('Relay1', -1) # relay base 1 or -1 if none
+ var relay2 = d.find('Relay2', -1) # relay base 1 or -1 if none
+
+ if relay1 > 0 relays_reserved.push(relay1 - 1) end # mark relay1/2 as non-relays
+ if relay2 > 0 relays_reserved.push(relay2 - 1) end
+
+ log(f"MTR: {relay1=} {relay2=}", 3)
+ # is there tilt support
+ var tilt_array = d.find('TiltConfig')
+ var tilt_config = tilt_array && (tilt_array[2] > 0)
+ # add shutter to definition
+ m[str(endpoint)] = {'type': tilt_config ? 'shutter+tilt' : 'shutter', 'shutter':idx}
+ endpoint += 1
+ idx += 1
+ end
+
+ end
+
+ # how many relays are present
+ var relay_count = size(tasmota.get_power())
+ var relay_index = 0 # start at index 0
+ relay_count -= light_present # last power(s) taken for lights
+
+ while relay_index < relay_count
+ if relays_reserved.find(relay_index) == nil # if relay is actual relay
+ m[str(endpoint)] = {'type':'relay','relay':relay_index + 1} # Relay index start with 1
+ endpoint += 1
+ end
+ relay_index += 1
+ end
+
+ # auto-detect sensors
+ var sensors = json.load(tasmota.read_sensors())
+
+ var sensors_list = self.autoconf_sensors_list(sensors)
+
+ for s: sensors_list
+ m[str(endpoint)] = s
+ endpoint += 1
+ end
+
+ # tasmota.publish_result('{"Matter":{"Initialized":1}}', 'Matter') # MQTT is not yet connected
+ return m
+ end
+
+ #############################################################
+ # Autoconfigure from sensors
+ #
+ # Returns an ordered list
+ def autoconf_sensors_list(sensors)
+ var k2l = self.device.k2l
+ var ret = []
+ # temperature sensors
+ for k1: k2l(sensors)
+ var sensor_2 = sensors[k1]
+ if isinstance(sensor_2, map) && sensor_2.contains("Temperature")
+ var temp_rule = k1 + "#Temperature"
+ ret.push({'type':'temperature','filter':temp_rule})
+ end
+ end
+
+ # pressure sensors
+ for k1: k2l(sensors)
+ var sensor_2 = sensors[k1]
+ if isinstance(sensor_2, map) && sensor_2.contains("Pressure")
+ var temp_rule = k1 + "#Pressure"
+ ret.push({'type':'pressure','filter':temp_rule})
+ end
+ end
+
+ # light sensors
+ for k1: k2l(sensors)
+ var sensor_2 = sensors[k1]
+ if isinstance(sensor_2, map) && sensor_2.contains("Illuminance")
+ var temp_rule = k1 + "#Illuminance"
+ ret.push({'type':'illuminance','filter':temp_rule})
+ end
+ end
+
+ # huidity sensors
+ for k1: k2l(sensors)
+ var sensor_2 = sensors[k1]
+ if isinstance(sensor_2, map) && sensor_2.contains("Humidity")
+ var temp_rule = k1 + "#Humidity"
+ ret.push({'type':'humidity','filter':temp_rule})
+ end
+ end
+
+ return ret
+ end
+
+end
+matter.Autoconf = Matter_Autoconf
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_z_Commissioning.be b/lib/libesp32/berry_matter/src/embedded/Matter_z_Commissioning.be
new file mode 100644
index 000000000..471581812
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_z_Commissioning.be
@@ -0,0 +1,482 @@
+#
+# Matter_z_Commissioning.be - implements the commissioning and MDNS logic
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+import matter
+
+#@ solidify:Matter_Commissioning,weak
+
+class Matter_Commissioning
+ var device # reference to the main Device instance
+
+ static var PBKDF_ITERATIONS = 1000 # I don't see any reason to choose a different number
+ static var PASE_TIMEOUT = 10*60 # default open commissioning window (10 minutes)
+ # Commissioning open
+ var commissioning_open # timestamp for timeout of commissioning (millis()) or `nil` if closed
+ var commissioning_iterations # current PBKDF number of iterations
+ var commissioning_discriminator # commissioning_discriminator
+ var commissioning_salt # current salt
+ var commissioning_w0 # current w0 (SPAKE2+)
+ var commissioning_L # current L (SPAKE2+)
+ var commissioning_admin_fabric # the fabric that opened the currint commissioning window, or `nil` for default
+ # information about the device
+ var commissioning_instance_wifi # random instance name for commissioning (mDNS)
+ var commissioning_instance_eth # random instance name for commissioning (mDNS)
+ var hostname_wifi # MAC-derived hostname for commissioning
+ var hostname_eth # MAC-derived hostname for commissioning
+ # mDNS active announces
+ var mdns_pase_eth # do we have an active PASE mDNS announce for eth
+ var mdns_pase_wifi # do we have an active PASE mDNS announce for wifi
+
+
+ #############################################################
+ def init(device)
+ self.device = device
+ end
+
+ #############################################################
+ # Start Basic Commissioning Window if needed at startup
+ def init_basic_commissioning()
+ # if no fabric is configured, automatically open commissioning at restart
+ if self.device.sessions.count_active_fabrics() == 0
+ self.start_root_basic_commissioning()
+ end
+ end
+
+ #############################################################
+ # dispatch every second click to sub-objects that need it
+ def every_second()
+ if self.commissioning_open != nil && tasmota.time_reached(self.commissioning_open) # timeout reached, close provisioning
+ self.commissioning_open = nil
+ end
+ end
+
+ #############################################################
+ # Start Basic Commissioning with root parameters
+ #
+ # Open window for `timeout_s` (default 10 minutes)
+ def start_root_basic_commissioning(timeout_s)
+ if timeout_s == nil timeout_s = self.PASE_TIMEOUT end
+
+ # show Manual pairing code in logs
+ var pairing_code = self.compute_manual_pairing_code()
+ log(format("MTR: Manual pairing code: %s", pairing_code), 2)
+
+ # output MQTT
+ var qr_code = self.compute_qrcode_content()
+ tasmota.publish_result(format('{"Matter":{"Commissioning":1,"PairingCode":"%s","QRCode":"%s"}}', pairing_code, qr_code), 'Matter')
+
+ # compute PBKDF
+ import crypto
+ var root_salt = crypto.random(16)
+
+ # Compute the PBKDF parameters for SPAKE2+ from root parameters
+ var passcode = bytes().add(self.device.root_passcode, 4)
+
+ var tv = crypto.PBKDF2_HMAC_SHA256().derive(passcode, root_salt, self.PBKDF_ITERATIONS, 80)
+ var w0s = tv[0..39]
+ var w1s = tv[40..79]
+
+ var root_w0 = crypto.EC_P256().mod(w0s)
+ var w1 = crypto.EC_P256().mod(w1s) # w1 is temporarily computed then discarded
+ # self.root_w1 = crypto.EC_P256().mod(w1s)
+ var root_L = crypto.EC_P256().public_key(w1)
+ self.start_basic_commissioning(timeout_s, self.PBKDF_ITERATIONS, self.device.root_discriminator, root_salt, root_w0, #-self.root_w1,-# root_L, nil)
+ end
+
+ #############################################################
+ # Start Basic Commissioning Window with custom parameters
+ def start_basic_commissioning(timeout_s, iterations, discriminator, salt, w0, L, admin_fabric)
+ self.commissioning_open = tasmota.millis() + timeout_s * 1000
+ self.commissioning_iterations = iterations
+ self.commissioning_discriminator = discriminator
+ self.commissioning_salt = salt
+ self.commissioning_w0 = w0
+ self.commissioning_L = L
+ self.commissioning_admin_fabric = admin_fabric
+
+ if tasmota.wifi()['up'] || tasmota.eth()['up']
+ self.mdns_announce_PASE()
+ else
+ tasmota.add_rule("Wifi#Connected", def ()
+ self.mdns_announce_PASE()
+ tasmota.remove_rule("Wifi#Connected", "mdns_announce_PASE")
+ end, "mdns_announce_PASE")
+ tasmota.add_rule("Eth#Connected", def ()
+ self.mdns_announce_PASE()
+ tasmota.remove_rule("Eth#Connected", "mdns_announce_PASE")
+ end, "mdns_announce_PASE")
+ end
+ end
+
+ #############################################################
+ # Is root commissioning currently open. Mostly for UI to know if QRCode needs to be shown.
+ def is_root_commissioning_open()
+ return self.commissioning_open != nil && self.commissioning_admin_fabric == nil
+ end
+
+ #############################################################
+ # Stop PASE commissioning, mostly called when CASE is about to start
+ def stop_basic_commissioning()
+ var n = nil
+ if self.is_root_commissioning_open()
+ tasmota.publish_result('{"Matter":{"Commissioning":0}}', 'Matter')
+ end
+ self.commissioning_open = n
+
+ self.mdns_remove_PASE()
+
+ # clear any PBKDF information to free memory
+ self.commissioning_iterations = n
+ self.commissioning_discriminator = n
+ self.commissioning_salt = n
+ self.commissioning_w0 = n
+ # self.commissioning_w1 = nil
+ self.commissioning_L = n
+ self.commissioning_admin_fabric = n
+ end
+ def is_commissioning_open()
+ return self.commissioning_open != nil
+ end
+
+ #############################################################
+ # Compute QR Code content - can be done only for root PASE
+ def compute_qrcode_content()
+ var raw = bytes().resize(11) # we don't use TLV Data so it's only 88 bits or 11 bytes
+ # version is `000` dont touch
+ raw.setbits(3, 16, self.device.VENDOR_ID)
+ raw.setbits(19, 16, self.device.PRODUCT_ID)
+ # custom flow = 0 (offset=35, len=2)
+ raw.setbits(37, 8, 0x04) # already on IP network
+ raw.setbits(45, 12, self.device.root_discriminator & 0xFFF)
+ raw.setbits(57, 27, self.device.root_passcode & 0x7FFFFFF)
+ # padding (offset=84 len=4)
+ return "MT:" + matter.Base38.encode(raw)
+ end
+
+
+ #############################################################
+ # Compute the 11 digits manual pairing code (wihout vendorid nor productid) p.223
+ #
+ # can be done only for root PASE (we need the passcode, but we don't get it with OpenCommissioningWindow command)
+ def compute_manual_pairing_code()
+ var digit_1 = (self.device.root_discriminator & 0x0FFF) >> 10
+ var digit_2_6 = ((self.device.root_discriminator & 0x0300) << 6) | (self.device.root_passcode & 0x3FFF)
+ var digit_7_10 = (self.device.root_passcode >> 14)
+
+ var ret = format("%1i%05i%04i", digit_1, digit_2_6, digit_7_10)
+ ret += matter.Verhoeff.checksum(ret)
+ return ret
+ end
+
+ #############################################################
+ # Start Operational Discovery for this session
+ #
+ # Deferred until next tick.
+ def start_operational_discovery_deferred(fabric)
+ # defer to next click
+ tasmota.set_timer(0, /-> self.start_operational_discovery(fabric))
+ end
+
+ #############################################################
+ # Start Commissioning Complete for this session
+ #
+ # Deferred until next tick.
+ def start_commissioning_complete_deferred(session)
+ # defer to next click
+ tasmota.set_timer(0, /-> self.start_commissioning_complete(session))
+ end
+
+ #############################################################
+ # Start Operational Discovery for this session
+ #
+ # Stop Basic Commissioning and clean PASE specific values (to save memory).
+ # Announce fabric entry in mDNS.
+ def start_operational_discovery(fabric)
+ import crypto
+ import mdns
+
+ self.stop_basic_commissioning() # close all PASE commissioning information
+
+ self.mdns_announce_op_discovery(fabric)
+ end
+
+ #############################################################
+ # Commissioning Complete
+ #
+ # Stop basic commissioning.
+ def start_commissioning_complete(session)
+ var fabric = session.get_fabric()
+ var fabric_id = fabric.get_fabric_id().copy().reverse().tohex()
+ var vendor_name = fabric.get_admin_vendor_name()
+ log(f"MTR: --- Commissioning complete for Fabric '{fabric_id}' (Vendor {vendor_name}) ---", 2)
+ self.stop_basic_commissioning() # by default close commissioning when it's complete
+ end
+
+ #############################################################
+ # mDNS Configuration
+ #############################################################
+ # Start mDNS and announce hostnames for Wifi and ETH from MAC
+ #
+ # When the announce is active, `hostname_wifi` and `hostname_eth`
+ # are defined
+ def start_mdns_announce_hostnames()
+ if tasmota.wifi()['up']
+ self._mdns_announce_hostname(false)
+ else
+ tasmota.add_rule("Wifi#Connected", def ()
+ self._mdns_announce_hostname(false)
+ tasmota.remove_rule("Wifi#Connected", "matter_mdns_host")
+ end, "matter_mdns_host")
+ end
+
+ if tasmota.eth()['up']
+ self._mdns_announce_hostname(true)
+ else
+ tasmota.add_rule("Eth#Connected", def ()
+ self._mdns_announce_hostname(true)
+ tasmota.remove_rule("Eth#Connected", "matter_mdns_host")
+ end, "matter_mdns_host")
+ end
+ end
+
+ #############################################################
+ # Start UDP mDNS announcements hostname
+ # This announcement is independant from commissioning windows
+ #
+ # eth is `true` if ethernet turned up, `false` is wifi turned up
+ def _mdns_announce_hostname(is_eth)
+ import mdns
+ import string
+
+ mdns.start()
+
+ try
+ if is_eth
+ # Add Hostname (based on MAC) with IPv4/IPv6 addresses
+ var eth = tasmota.eth()
+ self.hostname_eth = string.replace(eth.find("mac"), ':', '')
+ if !self.device.ipv4only || !eth.contains('ip6local')
+ # log(format("MTR: calling mdns.add_hostname(%s, %s, %s)", self.hostname_eth, eth.find('ip6local',''), eth.find('ip','')), 4)
+ mdns.add_hostname(self.hostname_eth, eth.find('ip6local',''), eth.find('ip',''), eth.find('ip6',''))
+ else
+ log(format("MTR: calling mdns.add_hostname(%s, %s)", self.hostname_eth, eth.find('ip','')), 3)
+ mdns.add_hostname(self.hostname_eth, eth.find('ip',''))
+ end
+ else
+ var wifi = tasmota.wifi()
+ self.hostname_wifi = string.replace(wifi.find("mac"), ':', '')
+ if !self.device.ipv4only || !wifi.contains('ip6local')
+ # log(format("MTR: calling mdns.add_hostname(%s, %s, %s)", self.hostname_wifi, wifi.find('ip6local',''), wifi.find('ip','')), 4)
+ mdns.add_hostname(self.hostname_wifi, wifi.find('ip6local',''), wifi.find('ip',''), wifi.find('ip6',''))
+ else
+ log(format("MTR: calling mdns.add_hostname(%s, %s)", self.hostname_wifi, wifi.find('ip','')), 3)
+ mdns.add_hostname(self.hostname_wifi, wifi.find('ip',''))
+ end
+ end
+ log(format("MTR: start mDNS on %s host '%s.local'", is_eth ? "eth" : "wifi", is_eth ? self.hostname_eth : self.hostname_wifi), 3)
+ except .. as e, m
+ log("MTR: Exception" + str(e) + "|" + str(m), 2)
+ end
+
+ self.mdns_announce_op_discovery_all_fabrics()
+ end
+
+ #############################################################
+ # Announce MDNS for PASE commissioning
+ def mdns_announce_PASE()
+ import mdns
+ import crypto
+
+ var services = {
+ "VP": f"{self.device.VENDOR_ID}+{self.device.PRODUCT_ID}",
+ "D": self.commissioning_discriminator,
+ "CM":1, # requires passcode
+ "T":0, # no support for TCP
+ "SII":5000, "SAI":300
+ }
+
+ self.commissioning_instance_wifi = crypto.random(8).tohex() # 16 characters random hostname
+ self.commissioning_instance_eth = crypto.random(8).tohex() # 16 characters random hostname
+
+ try
+ if self.hostname_eth
+ # Add Matter `_matterc._udp` service
+ # log(format("MTR: calling mdns.add_service(%s, %s, %i, %s, %s, %s)", "_matterc", "_udp", 5540, str(services), self.commissioning_instance_eth, self.hostname_eth), 4)
+ mdns.add_service("_matterc", "_udp", 5540, services, self.commissioning_instance_eth, self.hostname_eth)
+ self.mdns_pase_eth = true
+
+ log(format("MTR: announce mDNS on %s '%s' ptr to `%s.local`", "eth", self.commissioning_instance_eth, self.hostname_eth), 2)
+
+ # `mdns.add_subtype(service:string, proto:string, instance:string, hostname:string, subtype:string) -> nil`
+ var subtype = "_L" + str(self.commissioning_discriminator & 0xFFF)
+ log("MTR: adding subtype: "+subtype, 3)
+ mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype)
+ subtype = "_S" + str((self.commissioning_discriminator & 0xF00) >> 8)
+ log("MTR: adding subtype: "+subtype, 3)
+ mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype)
+ subtype = "_V" + str(self.device.VENDOR_ID)
+ log("MTR: adding subtype: "+subtype, 3)
+ mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype)
+ subtype = "_CM1"
+ log("MTR: adding subtype: "+subtype, 3)
+ mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype)
+ end
+ if self.hostname_wifi
+
+ # log(format("MTR: calling mdns.add_service(%s, %s, %i, %s, %s, %s)", "_matterc", "_udp", 5540, str(services), self.commissioning_instance_wifi, self.hostname_wifi), 4)
+ mdns.add_service("_matterc", "_udp", 5540, services, self.commissioning_instance_wifi, self.hostname_wifi)
+ self.mdns_pase_wifi = true
+
+ log(format("MTR: starting mDNS on %s '%s' ptr to `%s.local`", "wifi", self.commissioning_instance_wifi, self.hostname_wifi), 3)
+
+ # `mdns.add_subtype(service:string, proto:string, instance:string, hostname:string, subtype:string) -> nil`
+ var subtype = "_L" + str(self.commissioning_discriminator & 0xFFF)
+ log("MTR: adding subtype: "+subtype, 3)
+ mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype)
+ subtype = "_S" + str((self.commissioning_discriminator & 0xF00) >> 8)
+ log("MTR: adding subtype: "+subtype, 3)
+ mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype)
+ subtype = "_V" + str(self.device.VENDOR_ID)
+ log("MTR: adding subtype: "+subtype, 3)
+ mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype)
+ subtype = "_CM1"
+ log("MTR: adding subtype: "+subtype, 3)
+ mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype)
+ end
+ except .. as e, m
+ log("MTR: Exception" + str(e) + "|" + str(m), 2)
+ end
+
+ end
+
+ #############################################################
+ # MDNS remove any PASE announce
+ def mdns_remove_PASE()
+ import mdns
+
+ try
+ if self.mdns_pase_eth
+ log(format("MTR: calling mdns.remove_service(%s, %s, %s, %s)", "_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth), 3)
+ log(format("MTR: remove mDNS on %s '%s'", "eth", self.commissioning_instance_eth), 3)
+ self.mdns_pase_eth = false
+ mdns.remove_service("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth)
+ end
+ if self.mdns_pase_wifi
+ log(format("MTR: calling mdns.remove_service(%s, %s, %s, %s)", "_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi), 3)
+ log(format("MTR: remove mDNS on %s '%s'", "wifi", self.commissioning_instance_wifi), 3)
+ self.mdns_pase_wifi = false
+ mdns.remove_service("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi)
+ end
+ except .. as e, m
+ log("MTR: Exception" + str(e) + "|" + str(m), 2)
+ end
+ end
+
+ #############################################################
+ # Start UDP mDNS announcements for commissioning for all persisted sessions
+ def mdns_announce_op_discovery_all_fabrics()
+ for fabric: self.device.sessions.active_fabrics()
+ if fabric.get_device_id() && fabric.get_fabric_id()
+ self.mdns_announce_op_discovery(fabric)
+ end
+ end
+ end
+
+ #############################################################
+ # Start UDP mDNS announcements for commissioning
+ def mdns_announce_op_discovery(fabric)
+ import mdns
+ try
+ var device_id = fabric.get_device_id().copy().reverse()
+ var k_fabric = fabric.get_fabric_compressed()
+ var op_node = k_fabric.tohex() + "-" + device_id.tohex()
+ log("MTR: Operational Discovery node = " + op_node, 3)
+
+ # mdns
+ if (tasmota.eth().find("up"))
+ log(format("MTR: adding mDNS on %s '%s' ptr to `%s.local`", "eth", op_node, self.hostname_eth), 3)
+ mdns.add_service("_matter","_tcp", 5540, nil, op_node, self.hostname_eth)
+ var subtype = "_I" + k_fabric.tohex()
+ log("MTR: adding subtype: "+subtype, 3)
+ mdns.add_subtype("_matter", "_tcp", op_node, self.hostname_eth, subtype)
+ end
+ if (tasmota.wifi().find("up"))
+ log(format("MTR: adding mDNS on %s '%s' ptr to `%s.local`", "wifi", op_node, self.hostname_wifi), 3)
+ mdns.add_service("_matter","_tcp", 5540, nil, op_node, self.hostname_wifi)
+ var subtype = "_I" + k_fabric.tohex()
+ log("MTR: adding subtype: "+subtype, 3)
+ mdns.add_subtype("_matter", "_tcp", op_node, self.hostname_wifi, subtype)
+ end
+ except .. as e, m
+ log("MTR: Exception" + str(e) + "|" + str(m), 2)
+ end
+ end
+
+ #############################################################
+ # Remove all mDNS announces for all fabrics
+ def mdns_remove_op_discovery_all_fabrics()
+ for fabric: self.device.sessions.active_fabrics()
+ if fabric.get_device_id() && fabric.get_fabric_id()
+ self.mdns_remove_op_discovery(fabric)
+ end
+ end
+ end
+
+ #############################################################
+ # Remove mDNS announce for fabric
+ def mdns_remove_op_discovery(fabric)
+ import mdns
+ try
+ var device_id = fabric.get_device_id().copy().reverse()
+ var k_fabric = fabric.get_fabric_compressed()
+ var op_node = k_fabric.tohex() + "-" + device_id.tohex()
+
+ # mdns
+ if (tasmota.eth().find("up"))
+ log(format("MTR: remove mDNS on %s '%s'", "eth", op_node), 3)
+ mdns.remove_service("_matter", "_tcp", op_node, self.hostname_eth)
+ end
+ if (tasmota.wifi().find("up"))
+ log(format("MTR: remove mDNS on %s '%s'", "wifi", op_node), 3)
+ mdns.remove_service("_matter", "_tcp", op_node, self.hostname_wifi)
+ end
+ except .. as e, m
+ log("MTR: Exception" + str(e) + "|" + str(m), 2)
+ end
+ end
+
+ #####################################################################
+ # Generate random passcode
+ #####################################################################
+ static var PASSCODE_INVALID = [ 0, 11111111, 22222222, 33333333, 44444444, 55555555, 66666666, 77777777, 88888888, 99999999, 12345678, 87654321]
+ def generate_random_passcode()
+ import crypto
+ var passcode
+ while true
+ passcode = crypto.random(4).get(0, 4) & 0x7FFFFFF
+ if passcode > 0x5F5E0FE continue end # larger than allowed
+ for inv: self.PASSCODE_INVALID
+ if passcode == inv passcode = nil end
+ end
+ if passcode != nil return passcode end
+ end
+ end
+
+end
+matter.Commissioning = Matter_Commissioning
diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be
index 799d75e8e..b63534c1c 100644
--- a/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be
+++ b/lib/libesp32/berry_matter/src/embedded/Matter_zz_Device.be
@@ -23,11 +23,10 @@ import matter
class Matter_Device
static var UDP_PORT = 5540 # this is the default port for group multicast, we also use it for unicast
- static var PBKDF_ITERATIONS = 1000 # I don't see any reason to choose a different number
static var VENDOR_ID = 0xFFF1
static var PRODUCT_ID = 0x8000
static var FILENAME = "_matter_device.json"
- static var PASE_TIMEOUT = 10*60 # default open commissioning window (10 minutes)
+ static var EP = 2 # first available endpoint number for devices
var started # is the Matter Device started (configured, mDNS and UDPServer started)
var plugins # list of plugins instances
var plugins_persist # true if plugins configuration needs to be saved
@@ -37,27 +36,13 @@ class Matter_Device
var udp_server # `matter.UDPServer()` object
var profiler
var message_handler # `matter.MessageHandler()` object
+ var commissioning # `matter.Commissioning()` object
+ var autoconf # `matter.Autoconf()` objects
var sessions # `matter.Session_Store()` objet
var ui
var tick # increment at each tick, avoids to repeat too frequently some actions
- # Commissioning open
- var commissioning_open # timestamp for timeout of commissioning (millis()) or `nil` if closed
- var commissioning_iterations # current PBKDF number of iterations
- var commissioning_discriminator # commissioning_discriminator
- var commissioning_salt # current salt
- var commissioning_w0 # current w0 (SPAKE2+)
- var commissioning_L # current L (SPAKE2+)
- var commissioning_admin_fabric # the fabric that opened the currint commissioning window, or `nil` for default
- # information about the device
- var commissioning_instance_wifi # random instance name for commissioning (mDNS)
- var commissioning_instance_eth # random instance name for commissioning (mDNS)
- var hostname_wifi # MAC-derived hostname for commissioning
- var hostname_eth # MAC-derived hostname for commissioning
- var vendorid
- var productid
- # mDNS active announces
- var mdns_pase_eth # do we have an active PASE mDNS announce for eth
- var mdns_pase_wifi # do we have an active PASE mDNS announce for wifi
+ # Events
+ var events # Event handler
# for brige mode, list of HTTP_remote objects (only one instance per remote object)
var http_remotes # map of 'domain:port' to `Matter_HTTP_remote` instance or `nil` if no bridges
# saved in parameters
@@ -66,12 +51,7 @@ class Matter_Device
var ipv4only # advertize only IPv4 addresses (no IPv6)
var disable_bridge_mode # default is bridge mode, this flag disables this mode for some non-compliant controllers
var next_ep # next endpoint to be allocated for bridge, start at 1
- # context for PBKDF
- var root_iterations # PBKDF number of iterations
- # PBKDF information used only during PASE (freed afterwards)
- var root_salt
- var root_w0
- var root_L
+ var debug # debug mode, output all values when responding to read request with wildcard
# cron equivalent to call `read_sensors()` regularly and dispatch to all entpoints
var probe_sensor_time # number of milliseconds to wait between each `read_sensors()` or `nil` if none active
var probe_sensor_timestamp # timestamp for `read_sensors()` probe (in millis())
@@ -92,18 +72,16 @@ class Matter_Device
self.plugins = []
self.plugins_persist = false # plugins need to saved only when the first fabric is associated
self.plugins_config_remotes = {}
- self.vendorid = self.VENDOR_ID
- self.productid = self.PRODUCT_ID
- self.root_iterations = self.PBKDF_ITERATIONS
- self.next_ep = 1 # start at endpoint 1 for dynamically allocated endpoints
- self.root_salt = crypto.random(16)
+ self.next_ep = self.EP # start at endpoint 2 for dynamically allocated endpoints (1 reserved for aggregator)
self.ipv4only = false
self.disable_bridge_mode = false
+ self.commissioning = matter.Commissioning(self)
self.load_param()
self.sessions = matter.Session_Store(self)
self.sessions.load_fabrics()
self.message_handler = matter.MessageHandler(self)
+ self.events = matter.EventHandler(self)
self.ui = matter.UI(self)
if tasmota.wifi()['up'] || tasmota.eth()['up']
@@ -122,8 +100,7 @@ class Matter_Device
end, "matter_start")
end
- self._init_basic_commissioning()
-
+ self.commissioning.init_basic_commissioning()
tasmota.add_driver(self)
self.register_commands()
@@ -139,47 +116,18 @@ class Matter_Device
self._start_udp(self.UDP_PORT)
- self.start_mdns_announce_hostnames()
+ self.commissioning.start_mdns_announce_hostnames()
self.started = true
end
- #############################################################
- # Start Basic Commissioning Window if needed at startup
- def _init_basic_commissioning()
- # if no fabric is configured, automatically open commissioning at restart
- if self.sessions.count_active_fabrics() == 0
- self.start_root_basic_commissioning()
- end
- end
-
- #############################################################
- # Start Basic Commissioning with root parameters
- #
- # Open window for `timeout_s` (default 10 minutes)
- def start_root_basic_commissioning(timeout_s)
- if timeout_s == nil timeout_s = self.PASE_TIMEOUT end
-
- # show Manual pairing code in logs
- var pairing_code = self.compute_manual_pairing_code()
- tasmota.log(format("MTR: Manual pairing code: %s", pairing_code), 2)
-
- # output MQTT
- var qr_code = self.compute_qrcode_content()
- tasmota.publish_result(format('{"Matter":{"Commissioning":1,"PairingCode":"%s","QRCode":"%s"}}', pairing_code, qr_code), 'Matter')
-
- # compute PBKDF
- self._compute_pbkdf(self.root_passcode, self.root_iterations, self.root_salt)
- self.start_basic_commissioning(timeout_s, self.root_iterations, self.root_discriminator, self.root_salt, self.root_w0, #-self.root_w1,-# self.root_L, nil)
- end
-
#####################################################################
# Remove a fabric and clean all corresponding values and mDNS entries
def remove_fabric(fabric)
if fabric != nil
- tasmota.log("MTR: removing fabric " + fabric.get_fabric_id().copy().reverse().tohex(), 2)
+ log("MTR: removing fabric " + fabric.get_fabric_id().copy().reverse().tohex(), 2)
self.message_handler.im.subs_shop.remove_by_fabric(fabric)
- self.mdns_remove_op_discovery(fabric)
+ self.commissioning.mdns_remove_op_discovery(fabric)
self.sessions.remove_fabric(fabric)
end
# var sub_fabrics = self.sessions.find_children_fabrics(fabric_parent.get_fabric_index())
@@ -187,7 +135,7 @@ class Matter_Device
# for fabric_index : sub_fabrics
# var fabric = self.sessions.find_fabric_by_index(fabric_index)
# if fabric != nil
- # tasmota.log("MTR: removing fabric " + fabric.get_fabric_id().copy().reverse().tohex(), 2)
+ # log("MTR: removing fabric " + fabric.get_fabric_id().copy().reverse().tohex(), 2)
# self.message_handler.im.subs_shop.remove_by_fabric(fabric)
# self.mdns_remove_op_discovery(fabric)
# self.sessions.remove_fabric(fabric)
@@ -196,112 +144,42 @@ class Matter_Device
self.sessions.save_fabrics()
end
- #############################################################
- # Start Basic Commissioning Window with custom parameters
- def start_basic_commissioning(timeout_s, iterations, discriminator, salt, w0, L, admin_fabric)
- self.commissioning_open = tasmota.millis() + timeout_s * 1000
- self.commissioning_iterations = iterations
- self.commissioning_discriminator = discriminator
- self.commissioning_salt = salt
- self.commissioning_w0 = w0
- self.commissioning_L = L
- self.commissioning_admin_fabric = admin_fabric
-
- if tasmota.wifi()['up'] || tasmota.eth()['up']
- self.mdns_announce_PASE()
- else
- tasmota.add_rule("Wifi#Connected", def ()
- self.mdns_announce_PASE()
- tasmota.remove_rule("Wifi#Connected", "mdns_announce_PASE")
- end, "mdns_announce_PASE")
- tasmota.add_rule("Eth#Connected", def ()
- self.mdns_announce_PASE()
- tasmota.remove_rule("Eth#Connected", "mdns_announce_PASE")
- end, "mdns_announce_PASE")
- end
+ #####################################################################
+ # Driver handling of buttons
+ #####################################################################
+ # Attach driver `button_pressed`
+ def button_pressed(cmd, idx)
+ var state = (idx >> 16) & 0xFF
+ var last_state = (idx >> 8) & 0xFF
+ var index = (idx & 0xFF)
+ var press_counter = (idx >> 24) & 0xFF
+ self.button_handler(index + 1, (state != last_state) ? 1 : 0, state ? 0 : 1, press_counter) # invert state, originally '0' means press, turn it into '1'
end
-
- #############################################################
- # Is root commissioning currently open. Mostly for UI to know if QRCode needs to be shown.
- def is_root_commissioning_open()
- return self.commissioning_open != nil && self.commissioning_admin_fabric == nil
+ # Attach driver `button_multi_pressed`
+ def button_multi_pressed(cmd, idx)
+ var press_counter = (idx >> 8) & 0xFF
+ var index = (idx & 0xFF)
+ self.button_handler(index + 1, 2, 0, press_counter)
end
-
- #############################################################
- # Stop PASE commissioning, mostly called when CASE is about to start
- def stop_basic_commissioning()
- if self.is_root_commissioning_open()
- tasmota.publish_result('{"Matter":{"Commissioning":0}}', 'Matter')
- end
- self.commissioning_open = nil
-
- self.mdns_remove_PASE()
-
- # clear any PBKDF information to free memory
- self.commissioning_iterations = nil
- self.commissioning_discriminator = nil
- self.commissioning_salt = nil
- self.commissioning_w0 = nil
- # self.commissioning_w1 = nil
- self.commissioning_L = nil
- self.commissioning_admin_fabric = nil
- end
- def is_commissioning_open()
- return self.commissioning_open != nil
- end
-
- #############################################################
- # (internal) Compute the PBKDF parameters for SPAKE2+ from root parameters
+ #####################################################################
+ # Centralize to a single call
#
- def _compute_pbkdf(passcode_int, iterations, salt)
- import crypto
- var passcode = bytes().add(passcode_int, 4)
-
- var tv = crypto.PBKDF2_HMAC_SHA256().derive(passcode, salt, iterations, 80)
- var w0s = tv[0..39]
- var w1s = tv[40..79]
-
- self.root_w0 = crypto.EC_P256().mod(w0s)
- var w1 = crypto.EC_P256().mod(w1s) # w1 is temporarily computed then discarded
- # self.root_w1 = crypto.EC_P256().mod(w1s)
- self.root_L = crypto.EC_P256().public_key(w1)
-
- # tasmota.log("MTR: ******************************", 4)
- # tasmota.log("MTR: salt = " + self.root_salt.tohex(), 4)
- # tasmota.log("MTR: passcode_hex = " + passcode.tohex(), 4)
- # tasmota.log("MTR: w0 = " + self.root_w0.tohex(), 4)
- # tasmota.log("MTR: L = " + self.root_L.tohex(), 4)
- # tasmota.log("MTR: ******************************", 4)
- end
-
- #############################################################
- # Compute QR Code content - can be done only for root PASE
- def compute_qrcode_content()
- var raw = bytes().resize(11) # we don't use TLV Data so it's only 88 bits or 11 bytes
- # version is `000` dont touch
- raw.setbits(3, 16, self.vendorid)
- raw.setbits(19, 16, self.productid)
- # custom flow = 0 (offset=35, len=2)
- raw.setbits(37, 8, 0x04) # already on IP network
- raw.setbits(45, 12, self.root_discriminator & 0xFFF)
- raw.setbits(57, 27, self.root_passcode & 0x7FFFFFF)
- # padding (offset=84 len=4)
- return "MT:" + matter.Base38.encode(raw)
- end
-
-
- #############################################################
- # Compute the 11 digits manual pairing code (wihout vendorid nor productid) p.223
- #
- # can be done only for root PASE (we need the passcode, but we don't get it with OpenCommissioningWindow command)
- def compute_manual_pairing_code()
- var digit_1 = (self.root_discriminator & 0x0FFF) >> 10
- var digit_2_6 = ((self.root_discriminator & 0x0300) << 6) | (self.root_passcode & 0x3FFF)
- var digit_7_10 = (self.root_passcode >> 14)
-
- var ret = format("%1i%05i%04i", digit_1, digit_2_6, digit_7_10)
- ret += matter.Verhoeff.checksum(ret)
- return ret
+ # Args:
+ # - button: (int) button number (base 1)
+ # - mode: (int) 0=static report every second, 1=button state changed (immediate), 2=multi-press status (delayed)
+ # - state: 1=button pressed, 0=button released, 2..5+=multi-press complete
+ def button_handler(button, mode, state, press_counter)
+ # log(f"MTR: button_handler({button=}, {mode=}, {state=})", 3)
+ # call all plugins, use a manual loop to avoid creating a new object
+ var idx = 0
+ import introspect
+ while idx < size(self.plugins)
+ var pi = self.plugins[idx]
+ if introspect.contains(pi, "button_handler")
+ self.plugins[idx].button_handler(button, mode, state, press_counter)
+ end
+ idx += 1
+ end
end
#############################################################
@@ -309,15 +187,13 @@ class Matter_Device
def every_second()
self.sessions.every_second()
self.message_handler.every_second()
- if self.commissioning_open != nil && tasmota.time_reached(self.commissioning_open) # timeout reached, close provisioning
- self.commissioning_open = nil
- end
+ self.events.every_second() # periodically remove bytes() representation of events
+ self.commissioning.every_second()
end
#############################################################
# dispatch every 250ms to all plugins
def every_250ms()
- self.message_handler.every_250ms()
# call read_sensors if needed
self.read_sensors_scheduler()
# call all plugins, use a manual loop to avoid creating a new object
@@ -356,7 +232,7 @@ class Matter_Device
import json
var rs_json = tasmota.read_sensors()
if tasmota.loglevel(3)
- tasmota.log("MTR: read_sensors: "+str(rs_json), 3)
+ log("MTR: read_sensors: "+str(rs_json), 3)
end
if rs_json == nil return end
var rs = json.load(rs_json)
@@ -370,15 +246,17 @@ class Matter_Device
end
else
- tasmota.log("MTR: unable to parse read_sensors: "+str(rs_json), 3)
+ log("MTR: unable to parse read_sensors: "+str(rs_json), 3)
end
end
#############################################################
+ # dispatch every 50ms
# ticks
def every_50ms()
self.tick += 1
+ self.message_handler.every_50ms()
end
#############################################################
@@ -413,59 +291,11 @@ class Matter_Device
def _start_udp(port)
if self.udp_server return end # already started
if port == nil port = 5540 end
- tasmota.log("MTR: Starting UDP server on port: " + str(port), 2)
+ log("MTR: Starting UDP server on port: " + str(port), 2)
self.udp_server = matter.UDPServer(self, "", port)
self.udp_server.start(/ raw, addr, port -> self.msg_received(raw, addr, port))
end
- #############################################################
- # Start Operational Discovery for this session
- #
- # Deferred until next tick.
- def start_operational_discovery_deferred(fabric)
- # defer to next click
- tasmota.set_timer(0, /-> self.start_operational_discovery(fabric))
- end
-
- #############################################################
- # Start Commissioning Complete for this session
- #
- # Deferred until next tick.
- def start_commissioning_complete_deferred(session)
- # defer to next click
- tasmota.set_timer(0, /-> self.start_commissioning_complete(session))
- end
-
- #############################################################
- # Start Operational Discovery for this session
- #
- # Stop Basic Commissioning and clean PASE specific values (to save memory).
- # Announce fabric entry in mDNS.
- def start_operational_discovery(fabric)
- import crypto
- import mdns
-
- self.stop_basic_commissioning() # close all PASE commissioning information
- # clear any PBKDF information to free memory
- self.root_w0 = nil
- # self.root_w1 = nil
- self.root_L = nil
-
- self.mdns_announce_op_discovery(fabric)
- end
-
- #############################################################
- # Commissioning Complete
- #
- # Stop basic commissioning.
- def start_commissioning_complete(session)
- var fabric = session.get_fabric()
- var fabric_id = fabric.get_fabric_id().copy().reverse().tohex()
- var vendor_name = fabric.get_admin_vendor_name()
- tasmota.log(f"MTR: --- Commissioning complete for Fabric '{fabric_id}' (Vendor {vendor_name}) ---", 2)
- self.stop_basic_commissioning() # by default close commissioning when it's complete
- end
-
#################################################################################
# Simple insertion sort - sorts the list in place, and returns the list
@@ -514,8 +344,6 @@ class Matter_Device
#############################################################
# Proceed to attribute expansion (used for Attribute Read/Write/Subscribe)
#
- # Called only when expansion is needed, so we don't need to report any error since they are ignored
- #
# calls `cb(pi, ctx, direct)` for each attribute expanded.
# `pi`: plugin instance targeted by the attribute (via endpoint). Note: nothing is sent if the attribute is not declared in supported attributes in plugin.
# `ctx`: context object with `endpoint`, `cluster`, `attribute` (no `command`)
@@ -526,68 +354,44 @@ class Matter_Device
var endpoint = ctx.endpoint
var cluster = ctx.cluster
var attribute = ctx.attribute
- var endpoint_found = false # did any endpoint match
- var cluster_found = false
- var attribute_found = false
-
- var direct = (ctx.endpoint != nil) && (ctx.cluster != nil) && (ctx.attribute != nil) # true if the target is a precise attribute, false if it results from an expansion and error are ignored
-
- # tasmota.log(f"MTR: process_attribute_expansion {str(ctx))}", 4)
# build the generator for all endpoint/cluster/attributes candidates
var path_generator = matter.PathGenerator(self)
- path_generator.start(ctx, nil) # TODO add session if we think it's needed later
+ path_generator.start(endpoint, cluster, attribute)
+ var direct = path_generator.is_direct()
var concrete_path
- while ((concrete_path := path_generator.next()) != nil)
- var finished = cb(path_generator.get_pi(), concrete_path, direct) # call the callback with the plugin and the context
- if direct && finished return end
- end
-
- # we didn't have any successful match, report an error if direct (non-expansion request)
- if direct
- # since it's a direct request, ctx has already the correct endpoint/cluster/attribute
- if !path_generator.endpoint_found ctx.status = matter.UNSUPPORTED_ENDPOINT
- elif !path_generator.cluster_found ctx.status = matter.UNSUPPORTED_CLUSTER
- elif !path_generator.attribute_found ctx.status = matter.UNSUPPORTED_ATTRIBUTE
- else ctx.status = matter.UNREPORTABLE_ATTRIBUTE
- end
- cb(nil, ctx, true)
+ while ((concrete_path := path_generator.next_attribute()) != nil)
+ var finished = cb(path_generator.get_pi(), concrete_path) # call the callback with the plugin and the context
end
end
#############################################################
# Optimized version for a single endpoint/cluster/attribute
#
- # Retrieve the plugin for a read
- def process_attribute_read_solo(ctx)
+ # Retrieve the plugin for a read, or nil if not found
+ # In case of error, ctx.status is updated accordingly
+ def resolve_attribute_read_solo(ctx)
var endpoint = ctx.endpoint
- # var endpoint_found = false # did any endpoint match
var cluster = ctx.cluster
- # var cluster_found = false
var attribute = ctx.attribute
- # var attribute_found = false
# all 3 elements must be non-nil
- if endpoint == nil || cluster == nil || attribute == nil return nil end
+ if (endpoint == nil) || (cluster == nil) || (attribute == nil) return nil end
# look for plugin
var pi = self.find_plugin_by_endpoint(endpoint)
- if pi == nil # endpoint not found
+ if (pi == nil)
ctx.status = matter.UNSUPPORTED_ENDPOINT
return nil
- end
-
- # check cluster
- if !pi.contains_cluster(cluster)
- ctx.status = matter.UNSUPPORTED_CLUSTER
- return nil
- end
-
- # attribute list
- if !pi.contains_attribute(cluster, attribute)
- ctx.status = matter.UNSUPPORTED_ATTRIBUTE
- return nil
+ else
+ if !pi.contains_cluster(cluster)
+ ctx.status = matter.UNSUPPORTED_CLUSTER
+ return nil
+ elif !pi.contains_attribute(cluster, attribute)
+ ctx.status = matter.UNSUPPORTED_ATTRIBUTE
+ return nil
+ end
end
# all good
@@ -649,11 +453,14 @@ class Matter_Device
self.update_remotes_info() # update self.plugins_config_remotes
var j = format('{"distinguish":%i,"passcode":%i,"ipv4only":%s,"disable_bridge_mode":%s,"nextep":%i', self.root_discriminator, self.root_passcode, self.ipv4only ? 'true':'false', self.disable_bridge_mode ? 'true':'false', self.next_ep)
+ if self.debug
+ j += ',"debug":true'
+ end
if self.plugins_persist
- j += ',"config":'
+ j += ',\n"config":'
j += json.dump(self.plugins_config)
if size(self.plugins_config_remotes) > 0
- j += ',"remotes":'
+ j += ',\n"remotes":'
j += json.dump(self.plugins_config_remotes)
end
end
@@ -662,10 +469,10 @@ class Matter_Device
var f = open(self.FILENAME, "w")
f.write(j)
f.close()
- tasmota.log(format("MTR: =Saved parameters%s", self.plugins_persist ? " and configuration" : ""), 2)
+ log(format("MTR: =Saved parameters%s", self.plugins_persist ? " and configuration" : ""), 2)
return j
except .. as e, m
- tasmota.log("MTR: Session_Store::save Exception:" + str(e) + "|" + str(m), 2)
+ log("MTR: Session_Store::save Exception:" + str(e) + "|" + str(m), 2)
return j
end
end
@@ -698,6 +505,14 @@ class Matter_Device
return ret
end
+ #############################################################
+ # Reset configuration like a fresh new device
+ def reset_param()
+ self.plugins_persist = false
+ self.next_ep = self.EP
+ self.save_param()
+ end
+
#############################################################
# Load Matter Device parameters
def load_param()
@@ -717,19 +532,20 @@ class Matter_Device
self.disable_bridge_mode = bool(j.find("disable_bridge_mode", false))
self.next_ep = j.find("nextep", self.next_ep)
self.plugins_config = j.find("config")
+ self.debug = bool(j.find("debug")) # bool converts nil to false
if self.plugins_config != nil
- tasmota.log(f"MTR: Load_config = {self.plugins_config}", 3)
+ log(f"MTR: Load_config = {self.plugins_config}", 3)
self.adjust_next_ep()
dirty = self.check_config_ep()
self.plugins_persist = true
end
self.plugins_config_remotes = j.find("remotes", {})
if self.plugins_config_remotes
- tasmota.log("MTR: load_remotes = " + str(self.plugins_config_remotes), 3)
+ log("MTR: load_remotes = " + str(self.plugins_config_remotes), 3)
end
except .. as e, m
if e != "io_error"
- tasmota.log("MTR: load_param Exception:" + str(e) + "|" + str(m), 2)
+ log("MTR: load_param Exception:" + str(e) + "|" + str(m), 2)
end
end
@@ -738,7 +554,7 @@ class Matter_Device
dirty = true
end
if self.root_passcode == nil
- self.root_passcode = self.generate_random_passcode()
+ self.root_passcode = self.commissioning.generate_random_passcode()
dirty = true
end
if dirty self.save_param() end
@@ -755,49 +571,6 @@ class Matter_Device
return param_log
end
- #############################################################
- # Load plugins configuration from json
- #
- # 'config' is a map
- # Ex:
- # {'32': {'filter': 'AXP192#Temperature', 'type': 'temperature'}, '40': {'filter': 'BMP280#Pressure', 'type': 'pressure'}, '34': {'filter': 'SHT3X#Temperature', 'type': 'temperature'}, '33': {'filter': 'BMP280#Temperature', 'type': 'temperature'}, '1': {'relay': 0, 'type': 'relay'}, '56': {'filter': 'SHT3X#Humidity', 'type': 'humidity'}, '0': {'type': 'root'}}
- def _instantiate_plugins_from_config(config)
- var endpoints = self.k2l_num(config)
- # tasmota.log("MTR: endpoints to be configured "+str(endpoints), 4)
- tasmota.log("MTR: Configuring endpoints", 2)
-
- # start with mandatory endpoint 0 for root node
- self.plugins.push(matter.Plugin_Root(self, 0, {}))
- tasmota.log(format("MTR: endpoint = %5i type:%s%s", 0, 'root', ''), 2)
-
- # always include an aggregator for dynamic endpoints
- self.plugins.push(matter.Plugin_Aggregator(self, matter.AGGREGATOR_ENDPOINT, {}))
- tasmota.log(format("MTR: endpoint = %5i type:%s%s", matter.AGGREGATOR_ENDPOINT, 'aggregator', ''), 2)
-
- for ep: endpoints
- if ep == 0 continue end # skip endpoint 0
- try
- var plugin_conf = config[str(ep)]
- # tasmota.log(format("MTR: endpoint %i config %s", ep, plugin_conf), 3)
-
- var pi_class_name = plugin_conf.find('type')
- if pi_class_name == nil tasmota.log("MTR: no class name, skipping", 3) continue end
- if pi_class_name == 'root' tasmota.log("MTR: only one root node allowed", 3) continue end
- var pi_class = self.plugins_classes.find(pi_class_name)
- if pi_class == nil tasmota.log("MTR: unknown class name '"+str(pi_class_name)+"' skipping", 2) continue end
-
- var pi = pi_class(self, ep, plugin_conf)
- self.plugins.push(pi)
-
- tasmota.log(format("MTR: endpoint = %5i type:%s%s", ep, pi_class_name, self.conf_to_log(plugin_conf)), 2)
- except .. as e, m
- tasmota.log("MTR: Exception" + str(e) + "|" + str(m), 2)
- end
- end
-
- tasmota.publish_result('{"Matter":{"Initialized":1}}', 'Matter')
- end
-
#############################################################
# Matter plugin management
#
@@ -819,246 +592,13 @@ class Matter_Device
ctx.status = matter.UNSUPPORTED_ENDPOINT
end
- #############################################################
- # mDNS Configuration
- #############################################################
- # Start mDNS and announce hostnames for Wifi and ETH from MAC
- #
- # When the announce is active, `hostname_wifi` and `hostname_eth`
- # are defined
- def start_mdns_announce_hostnames()
- if tasmota.wifi()['up']
- self._mdns_announce_hostname(false)
- else
- tasmota.add_rule("Wifi#Connected", def ()
- self._mdns_announce_hostname(false)
- tasmota.remove_rule("Wifi#Connected", "matter_mdns_host")
- end, "matter_mdns_host")
- end
-
- if tasmota.eth()['up']
- self._mdns_announce_hostname(true)
- else
- tasmota.add_rule("Eth#Connected", def ()
- self._mdns_announce_hostname(true)
- tasmota.remove_rule("Eth#Connected", "matter_mdns_host")
- end, "matter_mdns_host")
- end
- end
-
- #############################################################
- # Start UDP mDNS announcements hostname
- # This announcement is independant from commissioning windows
- #
- # eth is `true` if ethernet turned up, `false` is wifi turned up
- def _mdns_announce_hostname(is_eth)
- import mdns
- import string
-
- mdns.start()
-
- try
- if is_eth
- # Add Hostname (based on MAC) with IPv4/IPv6 addresses
- var eth = tasmota.eth()
- self.hostname_eth = string.replace(eth.find("mac"), ':', '')
- if !self.ipv4only || !eth.contains('ip6local')
- # tasmota.log(format("MTR: calling mdns.add_hostname(%s, %s, %s)", self.hostname_eth, eth.find('ip6local',''), eth.find('ip','')), 4)
- mdns.add_hostname(self.hostname_eth, eth.find('ip6local',''), eth.find('ip',''), eth.find('ip6',''))
- else
- tasmota.log(format("MTR: calling mdns.add_hostname(%s, %s)", self.hostname_eth, eth.find('ip','')), 3)
- mdns.add_hostname(self.hostname_eth, eth.find('ip',''))
- end
- else
- var wifi = tasmota.wifi()
- self.hostname_wifi = string.replace(wifi.find("mac"), ':', '')
- if !self.ipv4only || !wifi.contains('ip6local')
- # tasmota.log(format("MTR: calling mdns.add_hostname(%s, %s, %s)", self.hostname_wifi, wifi.find('ip6local',''), wifi.find('ip','')), 4)
- mdns.add_hostname(self.hostname_wifi, wifi.find('ip6local',''), wifi.find('ip',''), wifi.find('ip6',''))
- else
- tasmota.log(format("MTR: calling mdns.add_hostname(%s, %s)", self.hostname_wifi, wifi.find('ip','')), 3)
- mdns.add_hostname(self.hostname_wifi, wifi.find('ip',''))
- end
- end
- tasmota.log(format("MTR: start mDNS on %s host '%s.local'", is_eth ? "eth" : "wifi", is_eth ? self.hostname_eth : self.hostname_wifi), 3)
- except .. as e, m
- tasmota.log("MTR: Exception" + str(e) + "|" + str(m), 2)
- end
-
- self.mdns_announce_op_discovery_all_fabrics()
- end
-
- #############################################################
- # Announce MDNS for PASE commissioning
- def mdns_announce_PASE()
- import mdns
- import crypto
-
- var services = {
- "VP":str(self.vendorid) + "+" + str(self.productid),
- "D": self.commissioning_discriminator,
- "CM":1, # requires passcode
- "T":0, # no support for TCP
- "SII":5000, "SAI":300
- }
-
- self.commissioning_instance_wifi = crypto.random(8).tohex() # 16 characters random hostname
- self.commissioning_instance_eth = crypto.random(8).tohex() # 16 characters random hostname
-
- try
- if self.hostname_eth
- # Add Matter `_matterc._udp` service
- # tasmota.log(format("MTR: calling mdns.add_service(%s, %s, %i, %s, %s, %s)", "_matterc", "_udp", 5540, str(services), self.commissioning_instance_eth, self.hostname_eth), 4)
- mdns.add_service("_matterc", "_udp", 5540, services, self.commissioning_instance_eth, self.hostname_eth)
- self.mdns_pase_eth = true
-
- tasmota.log(format("MTR: announce mDNS on %s '%s' ptr to `%s.local`", "eth", self.commissioning_instance_eth, self.hostname_eth), 2)
-
- # `mdns.add_subtype(service:string, proto:string, instance:string, hostname:string, subtype:string) -> nil`
- var subtype = "_L" + str(self.commissioning_discriminator & 0xFFF)
- tasmota.log("MTR: adding subtype: "+subtype, 3)
- mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype)
- subtype = "_S" + str((self.commissioning_discriminator & 0xF00) >> 8)
- tasmota.log("MTR: adding subtype: "+subtype, 3)
- mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype)
- subtype = "_V" + str(self.vendorid)
- tasmota.log("MTR: adding subtype: "+subtype, 3)
- mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype)
- subtype = "_CM1"
- tasmota.log("MTR: adding subtype: "+subtype, 3)
- mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth, subtype)
- end
- if self.hostname_wifi
-
- # tasmota.log(format("MTR: calling mdns.add_service(%s, %s, %i, %s, %s, %s)", "_matterc", "_udp", 5540, str(services), self.commissioning_instance_wifi, self.hostname_wifi), 4)
- mdns.add_service("_matterc", "_udp", 5540, services, self.commissioning_instance_wifi, self.hostname_wifi)
- self.mdns_pase_wifi = true
-
- tasmota.log(format("MTR: starting mDNS on %s '%s' ptr to `%s.local`", "wifi", self.commissioning_instance_wifi, self.hostname_wifi), 3)
-
- # `mdns.add_subtype(service:string, proto:string, instance:string, hostname:string, subtype:string) -> nil`
- var subtype = "_L" + str(self.commissioning_discriminator & 0xFFF)
- tasmota.log("MTR: adding subtype: "+subtype, 3)
- mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype)
- subtype = "_S" + str((self.commissioning_discriminator & 0xF00) >> 8)
- tasmota.log("MTR: adding subtype: "+subtype, 3)
- mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype)
- subtype = "_V" + str(self.vendorid)
- tasmota.log("MTR: adding subtype: "+subtype, 3)
- mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype)
- subtype = "_CM1"
- tasmota.log("MTR: adding subtype: "+subtype, 3)
- mdns.add_subtype("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi, subtype)
- end
- except .. as e, m
- tasmota.log("MTR: Exception" + str(e) + "|" + str(m), 2)
- end
-
- end
-
- #############################################################
- # MDNS remove any PASE announce
- def mdns_remove_PASE()
- import mdns
-
- try
- if self.mdns_pase_eth
- tasmota.log(format("MTR: calling mdns.remove_service(%s, %s, %s, %s)", "_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth), 3)
- tasmota.log(format("MTR: remove mDNS on %s '%s'", "eth", self.commissioning_instance_eth), 3)
- self.mdns_pase_eth = false
- mdns.remove_service("_matterc", "_udp", self.commissioning_instance_eth, self.hostname_eth)
- end
- if self.mdns_pase_wifi
- tasmota.log(format("MTR: calling mdns.remove_service(%s, %s, %s, %s)", "_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi), 3)
- tasmota.log(format("MTR: remove mDNS on %s '%s'", "wifi", self.commissioning_instance_wifi), 3)
- self.mdns_pase_wifi = false
- mdns.remove_service("_matterc", "_udp", self.commissioning_instance_wifi, self.hostname_wifi)
- end
- except .. as e, m
- tasmota.log("MTR: Exception" + str(e) + "|" + str(m), 2)
- end
- end
-
- #############################################################
- # Start UDP mDNS announcements for commissioning for all persisted sessions
- def mdns_announce_op_discovery_all_fabrics()
- for fabric: self.sessions.active_fabrics()
- if fabric.get_device_id() && fabric.get_fabric_id()
- self.mdns_announce_op_discovery(fabric)
- end
- end
- end
-
- #############################################################
- # Start UDP mDNS announcements for commissioning
- def mdns_announce_op_discovery(fabric)
- import mdns
- try
- var device_id = fabric.get_device_id().copy().reverse()
- var k_fabric = fabric.get_fabric_compressed()
- var op_node = k_fabric.tohex() + "-" + device_id.tohex()
- tasmota.log("MTR: Operational Discovery node = " + op_node, 3)
-
- # mdns
- if (tasmota.eth().find("up"))
- tasmota.log(format("MTR: adding mDNS on %s '%s' ptr to `%s.local`", "eth", op_node, self.hostname_eth), 3)
- mdns.add_service("_matter","_tcp", 5540, nil, op_node, self.hostname_eth)
- var subtype = "_I" + k_fabric.tohex()
- tasmota.log("MTR: adding subtype: "+subtype, 3)
- mdns.add_subtype("_matter", "_tcp", op_node, self.hostname_eth, subtype)
- end
- if (tasmota.wifi().find("up"))
- tasmota.log(format("MTR: adding mDNS on %s '%s' ptr to `%s.local`", "wifi", op_node, self.hostname_wifi), 3)
- mdns.add_service("_matter","_tcp", 5540, nil, op_node, self.hostname_wifi)
- var subtype = "_I" + k_fabric.tohex()
- tasmota.log("MTR: adding subtype: "+subtype, 3)
- mdns.add_subtype("_matter", "_tcp", op_node, self.hostname_wifi, subtype)
- end
- except .. as e, m
- tasmota.log("MTR: Exception" + str(e) + "|" + str(m), 2)
- end
- end
-
- #############################################################
- # Remove all mDNS announces for all fabrics
- def mdns_remove_op_discovery_all_fabrics()
- for fabric: self.sessions.active_fabrics()
- if fabric.get_device_id() && fabric.get_fabric_id()
- self.mdns_remove_op_discovery(fabric)
- end
- end
- end
-
- #############################################################
- # Remove mDNS announce for fabric
- def mdns_remove_op_discovery(fabric)
- import mdns
- try
- var device_id = fabric.get_device_id().copy().reverse()
- var k_fabric = fabric.get_fabric_compressed()
- var op_node = k_fabric.tohex() + "-" + device_id.tohex()
-
- # mdns
- if (tasmota.eth().find("up"))
- tasmota.log(format("MTR: remove mDNS on %s '%s'", "eth", op_node), 3)
- mdns.remove_service("_matter", "_tcp", op_node, self.hostname_eth)
- end
- if (tasmota.wifi().find("up"))
- tasmota.log(format("MTR: remove mDNS on %s '%s'", "wifi", op_node), 3)
- mdns.remove_service("_matter", "_tcp", op_node, self.hostname_wifi)
- end
- except .. as e, m
- tasmota.log("MTR: Exception" + str(e) + "|" + str(m), 2)
- end
- end
-
#############################################################
# Try to clean MDNS entries before restart.
#
# Called by Tasmota loop as a Tasmota driver.
def save_before_restart()
- self.stop_basic_commissioning()
- self.mdns_remove_op_discovery_all_fabrics()
+ self.commissioning.stop_basic_commissioning()
+ self.commissioning.mdns_remove_op_discovery_all_fabrics()
end
#############################################################
@@ -1070,14 +610,15 @@ class Matter_Device
import json
if size(self.plugins) > 0 return end # already configured
+ if (self.autoconf == nil) self.autoconf = matter.Autoconf(self) end
if !self.plugins_persist
- self.plugins_config = self.autoconf_device_map()
+ self.plugins_config = self.autoconf.autoconf_device_map()
self.plugins_config_remotes = {}
self.adjust_next_ep()
- tasmota.log("MTR: autoconfig = " + str(self.plugins_config), 3)
+ log("MTR: autoconfig = " + str(self.plugins_config), 3)
end
- self._instantiate_plugins_from_config(self.plugins_config)
+ self.autoconf.instantiate_plugins_from_config(self.plugins_config)
if !self.plugins_persist && self.sessions.count_active_fabrics() > 0
self.plugins_persist = true
@@ -1085,140 +626,6 @@ class Matter_Device
end
end
- #############################################################
- # Autoconfigure device from template to map
- #
- # Applies only if there are no plugins already configured
- def autoconf_device_map()
- import json
- var m = {}
-
- # check if we have a light
- var endpoint = matter.START_ENDPOINT
- var light_present = false
-
- import light
- var light_status = light.get()
- if light_status != nil
- var channels_count = size(light_status.find('channels', ""))
- if channels_count > 0
- if channels_count == 1
- m[str(endpoint)] = {'type':'light1'}
- elif channels_count == 2
- m[str(endpoint)] = {'type':'light2'}
- else
- m[str(endpoint)] = {'type':'light3'}
- end
- light_present = true
- endpoint += 1
- end
- end
-
- # handle shutters before relays (as we steal relays for shutters)
- var r_st13 = tasmota.cmd("Status 13", true) # issue `Status 13`
- var relays_reserved = [] # list of relays that are used for non-relay (shutters)
- tasmota.log("MTR: Status 13 = "+str(r_st13), 3)
-
- if r_st13 != nil && r_st13.contains('StatusSHT')
- r_st13 = r_st13['StatusSHT'] # skip root
- # Shutter is enabled, iterate
- var idx = 0
- while true
- var k = 'SHT' + str(idx) # SHT is zero based
- if !r_st13.contains(k) break end # no more SHTxxx
- var d = r_st13[k]
- tasmota.log(format("MTR: '%s' = %s", k, str(d)), 3)
- var relay1 = d.find('Relay1', -1) # relay base 1 or -1 if none
- var relay2 = d.find('Relay2', -1) # relay base 1 or -1 if none
-
- if relay1 > 0 relays_reserved.push(relay1 - 1) end # mark relay1/2 as non-relays
- if relay2 > 0 relays_reserved.push(relay2 - 1) end
-
- tasmota.log(f"MTR: {relay1=} {relay2=}", 3)
- # is there tilt support
- var tilt_array = d.find('TiltConfig')
- var tilt_config = tilt_array && (tilt_array[2] > 0)
- # add shutter to definition
- m[str(endpoint)] = {'type': tilt_config ? 'shutter+tilt' : 'shutter', 'shutter':idx}
- endpoint += 1
- idx += 1
- end
-
- end
-
- # how many relays are present
- var relay_count = size(tasmota.get_power())
- var relay_index = 0 # start at index 0
- if light_present relay_count -= 1 end # last power is taken for lights
-
- while relay_index < relay_count
- if relays_reserved.find(relay_index) == nil # if relay is actual relay
- m[str(endpoint)] = {'type':'relay','relay':relay_index + 1} # Relay index start with 1
- endpoint += 1
- end
- relay_index += 1
- end
-
- # auto-detect sensors
- var sensors = json.load(tasmota.read_sensors())
-
- var sensors_list = self.autoconf_sensors_list(sensors)
-
- for s: sensors_list
- m[str(endpoint)] = s
- endpoint += 1
- end
-
- # tasmota.publish_result('{"Matter":{"Initialized":1}}', 'Matter') # MQTT is not yet connected
- return m
- end
-
-
- #############################################################
- # Autoconfigure from sensors
- #
- # Returns an ordered list
- def autoconf_sensors_list(sensors)
- var ret = []
- # temperature sensors
- for k1:self.k2l(sensors)
- var sensor_2 = sensors[k1]
- if isinstance(sensor_2, map) && sensor_2.contains("Temperature")
- var temp_rule = k1 + "#Temperature"
- ret.push({'type':'temperature','filter':temp_rule})
- end
- end
-
- # pressure sensors
- for k1:self.k2l(sensors)
- var sensor_2 = sensors[k1]
- if isinstance(sensor_2, map) && sensor_2.contains("Pressure")
- var temp_rule = k1 + "#Pressure"
- ret.push({'type':'pressure','filter':temp_rule})
- end
- end
-
- # light sensors
- for k1:self.k2l(sensors)
- var sensor_2 = sensors[k1]
- if isinstance(sensor_2, map) && sensor_2.contains("Illuminance")
- var temp_rule = k1 + "#Illuminance"
- ret.push({'type':'illuminance','filter':temp_rule})
- end
- end
-
- # huidity sensors
- for k1:self.k2l(sensors)
- var sensor_2 = sensors[k1]
- if isinstance(sensor_2, map) && sensor_2.contains("Humidity")
- var temp_rule = k1 + "#Humidity"
- ret.push({'type':'humidity','filter':temp_rule})
- end
- end
-
- return ret
- end
-
# get keys of a map in sorted order
static def k2l(m) var l=[] if m==nil return l end for k:m.keys() l.push(k) end
for i:1..size(l)-1 var k = l[i] var j = i while (j > 0) && (l[j-1] > k) l[j] = l[j-1] j -= 1 end l[j] = k end return l
@@ -1258,7 +665,7 @@ class Matter_Device
# returns endpoint number newly allocated, or `nil` if failed
def bridge_add_endpoint(pi_class_name, plugin_conf)
var pi_class = self.plugins_classes.find(pi_class_name)
- if pi_class == nil tasmota.log("MTR: unknown class name '"+str(pi_class_name)+"' skipping", 3) return end
+ if pi_class == nil log("MTR: unknown class name '"+str(pi_class_name)+"' skipping", 3) return end
# get the next allocated endpoint number
var ep = self.next_ep
@@ -1275,7 +682,7 @@ class Matter_Device
pi_conf[k] = plugin_conf[k]
end
# add to main
- tasmota.log(format("MTR: adding endpoint = %i type:%s%s", ep, pi_class_name, self.conf_to_log(plugin_conf)), 2)
+ log(format("MTR: adding endpoint = %i type:%s%s", ep, pi_class_name, self.conf_to_log(plugin_conf)), 2)
self.plugins_config[ep_str] = pi_conf
self.plugins_persist = true
self.next_ep += 1 # increment next allocated endpoint before saving
@@ -1298,10 +705,10 @@ class Matter_Device
var f_in
if !self.plugins_config.contains(ep_str)
- tasmota.log("MTR: Cannot remove an enpoint not configured: " + ep_str, 3)
+ log("MTR: Cannot remove an enpoint not configured: " + ep_str, 3)
return
end
- tasmota.log(format("MTR: deleting endpoint = %i", ep), 2)
+ log(format("MTR: deleting endpoint = %i", ep), 2)
self.plugins_config.remove(ep_str)
self.plugins_persist = true
@@ -1344,12 +751,12 @@ class Matter_Device
for k: self.plugins_config.keys() keys.push(int(k)) end
for ep: keys
if ep == 0
- tasmota.log("MTR: invalid entry with ep '0'", 2)
+ log("MTR: invalid entry with ep '0'", 2)
self.plugins_config.remove(str(ep))
dirty = true
elif ep == matter.AGGREGATOR_ENDPOINT
dirty = true
- tasmota.log(f"MTR: endpoint {ep} collides wit aggregator, relocating to {self.next_ep}", 2)
+ log(f"MTR: endpoint {ep} collides wit aggregator, relocating to {self.next_ep}", 2)
self.plugins_config[str(self.next_ep)] = self.plugins_config[str(ep)]
self.plugins_config.remove(str(ep))
self.next_ep += 1
@@ -1383,23 +790,6 @@ class Matter_Device
end
end
- #####################################################################
- # Generate random passcode
- #####################################################################
- static var PASSCODE_INVALID = [ 0, 11111111, 22222222, 33333333, 44444444, 55555555, 66666666, 77777777, 88888888, 99999999, 12345678, 87654321]
- def generate_random_passcode()
- import crypto
- var passcode
- while true
- passcode = crypto.random(4).get(0, 4) & 0x7FFFFFF
- if passcode > 0x5F5E0FE continue end # larger than allowed
- for inv: self.PASSCODE_INVALID
- if passcode == inv passcode = nil end
- end
- if passcode != nil return passcode end
- end
- end
-
#####################################################################
# Manager HTTP remotes
#####################################################################
@@ -1450,7 +840,7 @@ class Matter_Device
# print("remotes_map2", remotes_map)
- # tasmota.log("MTR: remotes references: " + str(remotes_map), 3)
+ # log("MTR: remotes references: " + str(remotes_map), 3)
var remote_to_remove = [] # we first get the list of remotes to remove, to not interfere with map iterator
for remote:remotes_map.keys()
@@ -1460,7 +850,7 @@ class Matter_Device
end
for remote: remote_to_remove
- tasmota.log("MTR: remove unused remote: " + remote.addr, 3)
+ log("MTR: remove unused remote: " + remote.addr, 3)
remote.close()
self.http_remotes.remove(remote.addr)
end
@@ -1498,9 +888,9 @@ class Matter_Device
def MtrJoin(cmd_found, idx, payload, payload_json)
var payload_int = int(payload)
if payload_int
- self.start_root_basic_commissioning()
+ self.commissioning.start_root_basic_commissioning()
else
- self.stop_basic_commissioning()
+ self.commissioning.stop_basic_commissioning()
end
tasmota.resp_cmnd_done()
end
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h
index f21bb505c..e39e54d86 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_0_Inspect.h
@@ -15,7 +15,7 @@ be_local_closure(module_matter_sort, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_const_int(1),
@@ -71,7 +71,7 @@ be_local_closure(module_matter_jitter, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 7]) { /* constants */
/* K0 */ be_nested_str_weak(crypto),
@@ -110,118 +110,134 @@ be_local_closure(module_matter_jitter, /* name */
********************************************************************/
be_local_closure(module_matter_inspect, /* name */
be_nested_proto(
- 14, /* nstack */
+ 15, /* nstack */
1, /* argc */
0, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[15]) { /* constants */
+ ( &(const bvalue[16]) { /* constants */
/* K0 */ be_nested_str_weak(introspect),
/* K1 */ be_nested_str_weak(members),
/* K2 */ be_nested_str_weak(get),
/* K3 */ be_nested_str_weak(function),
- /* K4 */ be_nested_str_weak(push),
- /* K5 */ be_nested_str_weak(stop_iteration),
- /* K6 */ be_nested_str_weak(matter),
- /* K7 */ be_nested_str_weak(sort),
- /* K8 */ be_nested_str_weak(_X27_X25s_X27_X3A_X20_X25s),
- /* K9 */ be_nested_str_weak(_X7B),
- /* K10 */ be_nested_str_weak(concat),
- /* K11 */ be_nested_str_weak(_X2C_X20),
- /* K12 */ be_nested_str_weak(_X7D),
- /* K13 */ be_nested_str_weak(Exception_X3A),
- /* K14 */ be_nested_str_weak(_X7C),
+ /* K4 */ be_nested_str_weak(find),
+ /* K5 */ be_nested_str_weak(push),
+ /* K6 */ be_nested_str_weak(stop_iteration),
+ /* K7 */ be_nested_str_weak(matter),
+ /* K8 */ be_nested_str_weak(sort),
+ /* K9 */ be_nested_str_weak(_X27_X25s_X27_X3A_X20_X25s),
+ /* K10 */ be_nested_str_weak(_X7B),
+ /* K11 */ be_nested_str_weak(concat),
+ /* K12 */ be_nested_str_weak(_X2C_X20),
+ /* K13 */ be_nested_str_weak(_X7D),
+ /* K14 */ be_nested_str_weak(Exception_X3A),
+ /* K15 */ be_nested_str_weak(_X7C),
}),
be_str_weak(inspect),
&be_const_str_solidified,
- ( &(const binstruction[84]) { /* code */
- 0xA8020043, // 0000 EXBLK 0 #0045
+ ( &(const binstruction[99]) { /* code */
+ 0xA8020052, // 0000 EXBLK 0 #0054
0xA4060000, // 0001 IMPORT R1 K0
0x60080012, // 0002 GETGBL R2 G18
0x7C080000, // 0003 CALL R2 0
- 0x600C0010, // 0004 GETGBL R3 G16
- 0x8C100301, // 0005 GETMET R4 R1 K1
- 0x5C180000, // 0006 MOVE R6 R0
- 0x7C100400, // 0007 CALL R4 2
- 0x7C0C0200, // 0008 CALL R3 1
- 0xA802000E, // 0009 EXBLK 0 #0019
- 0x5C100600, // 000A MOVE R4 R3
- 0x7C100000, // 000B CALL R4 0
- 0x8C140302, // 000C GETMET R5 R1 K2
- 0x5C1C0000, // 000D MOVE R7 R0
- 0x5C200800, // 000E MOVE R8 R4
- 0x7C140600, // 000F CALL R5 3
- 0x60180004, // 0010 GETGBL R6 G4
- 0x5C1C0A00, // 0011 MOVE R7 R5
- 0x7C180200, // 0012 CALL R6 1
- 0x20180D03, // 0013 NE R6 R6 K3
- 0x781A0002, // 0014 JMPF R6 #0018
- 0x8C180504, // 0015 GETMET R6 R2 K4
- 0x5C200800, // 0016 MOVE R8 R4
- 0x7C180400, // 0017 CALL R6 2
- 0x7001FFF0, // 0018 JMP #000A
- 0x580C0005, // 0019 LDCONST R3 K5
- 0xAC0C0200, // 001A CATCH R3 1 0
- 0xB0080000, // 001B RAISE 2 R0 R0
- 0xB80E0C00, // 001C GETNGBL R3 K6
- 0x8C0C0707, // 001D GETMET R3 R3 K7
- 0x5C140400, // 001E MOVE R5 R2
- 0x7C0C0400, // 001F CALL R3 2
- 0x5C080600, // 0020 MOVE R2 R3
- 0x600C0012, // 0021 GETGBL R3 G18
- 0x7C0C0000, // 0022 CALL R3 0
- 0x60100010, // 0023 GETGBL R4 G16
- 0x5C140400, // 0024 MOVE R5 R2
- 0x7C100200, // 0025 CALL R4 1
- 0xA8020011, // 0026 EXBLK 0 #0039
- 0x5C140800, // 0027 MOVE R5 R4
- 0x7C140000, // 0028 CALL R5 0
- 0x8C180302, // 0029 GETMET R6 R1 K2
- 0x5C200000, // 002A MOVE R8 R0
- 0x5C240A00, // 002B MOVE R9 R5
- 0x7C180600, // 002C CALL R6 3
- 0x8C1C0704, // 002D GETMET R7 R3 K4
- 0x60240018, // 002E GETGBL R9 G24
- 0x58280008, // 002F LDCONST R10 K8
- 0x602C0008, // 0030 GETGBL R11 G8
- 0x5C300A00, // 0031 MOVE R12 R5
- 0x7C2C0200, // 0032 CALL R11 1
- 0x60300008, // 0033 GETGBL R12 G8
- 0x5C340C00, // 0034 MOVE R13 R6
- 0x7C300200, // 0035 CALL R12 1
- 0x7C240600, // 0036 CALL R9 3
- 0x7C1C0400, // 0037 CALL R7 2
- 0x7001FFED, // 0038 JMP #0027
- 0x58100005, // 0039 LDCONST R4 K5
- 0xAC100200, // 003A CATCH R4 1 0
- 0xB0080000, // 003B RAISE 2 R0 R0
- 0x8C10070A, // 003C GETMET R4 R3 K10
- 0x5818000B, // 003D LDCONST R6 K11
- 0x7C100400, // 003E CALL R4 2
- 0x00121204, // 003F ADD R4 K9 R4
- 0x0010090C, // 0040 ADD R4 R4 K12
- 0xA8040001, // 0041 EXBLK 1 1
- 0x80040800, // 0042 RET 1 R4
- 0xA8040001, // 0043 EXBLK 1 1
- 0x7002000D, // 0044 JMP #0053
- 0xAC040002, // 0045 CATCH R1 0 2
- 0x7002000A, // 0046 JMP #0052
- 0x600C0008, // 0047 GETGBL R3 G8
- 0x5C100200, // 0048 MOVE R4 R1
- 0x7C0C0200, // 0049 CALL R3 1
- 0x000E1A03, // 004A ADD R3 K13 R3
- 0x000C070E, // 004B ADD R3 R3 K14
- 0x60100008, // 004C GETGBL R4 G8
- 0x5C140400, // 004D MOVE R5 R2
- 0x7C100200, // 004E CALL R4 1
- 0x000C0604, // 004F ADD R3 R3 R4
- 0x80040600, // 0050 RET 1 R3
- 0x70020000, // 0051 JMP #0053
- 0xB0080000, // 0052 RAISE 2 R0 R0
- 0x80000000, // 0053 RET 0
+ 0x5C0C0000, // 0004 MOVE R3 R0
+ 0x4C100000, // 0005 LDNIL R4
+ 0x20100604, // 0006 NE R4 R3 R4
+ 0x78120022, // 0007 JMPF R4 #002B
+ 0x60100010, // 0008 GETGBL R4 G16
+ 0x8C140301, // 0009 GETMET R5 R1 K1
+ 0x5C1C0600, // 000A MOVE R7 R3
+ 0x7C140400, // 000B CALL R5 2
+ 0x7C100200, // 000C CALL R4 1
+ 0xA8020014, // 000D EXBLK 0 #0023
+ 0x5C140800, // 000E MOVE R5 R4
+ 0x7C140000, // 000F CALL R5 0
+ 0x8C180302, // 0010 GETMET R6 R1 K2
+ 0x5C200600, // 0011 MOVE R8 R3
+ 0x5C240A00, // 0012 MOVE R9 R5
+ 0x7C180600, // 0013 CALL R6 3
+ 0x601C0004, // 0014 GETGBL R7 G4
+ 0x5C200C00, // 0015 MOVE R8 R6
+ 0x7C1C0200, // 0016 CALL R7 1
+ 0x201C0F03, // 0017 NE R7 R7 K3
+ 0x781E0008, // 0018 JMPF R7 #0022
+ 0x8C1C0504, // 0019 GETMET R7 R2 K4
+ 0x5C240A00, // 001A MOVE R9 R5
+ 0x7C1C0400, // 001B CALL R7 2
+ 0x4C200000, // 001C LDNIL R8
+ 0x1C1C0E08, // 001D EQ R7 R7 R8
+ 0x781E0002, // 001E JMPF R7 #0022
+ 0x8C1C0505, // 001F GETMET R7 R2 K5
+ 0x5C240A00, // 0020 MOVE R9 R5
+ 0x7C1C0400, // 0021 CALL R7 2
+ 0x7001FFEA, // 0022 JMP #000E
+ 0x58100006, // 0023 LDCONST R4 K6
+ 0xAC100200, // 0024 CATCH R4 1 0
+ 0xB0080000, // 0025 RAISE 2 R0 R0
+ 0x60100003, // 0026 GETGBL R4 G3
+ 0x5C140600, // 0027 MOVE R5 R3
+ 0x7C100200, // 0028 CALL R4 1
+ 0x5C0C0800, // 0029 MOVE R3 R4
+ 0x7001FFD9, // 002A JMP #0005
+ 0xB8120E00, // 002B GETNGBL R4 K7
+ 0x8C100908, // 002C GETMET R4 R4 K8
+ 0x5C180400, // 002D MOVE R6 R2
+ 0x7C100400, // 002E CALL R4 2
+ 0x5C080800, // 002F MOVE R2 R4
+ 0x60100012, // 0030 GETGBL R4 G18
+ 0x7C100000, // 0031 CALL R4 0
+ 0x60140010, // 0032 GETGBL R5 G16
+ 0x5C180400, // 0033 MOVE R6 R2
+ 0x7C140200, // 0034 CALL R5 1
+ 0xA8020011, // 0035 EXBLK 0 #0048
+ 0x5C180A00, // 0036 MOVE R6 R5
+ 0x7C180000, // 0037 CALL R6 0
+ 0x8C1C0302, // 0038 GETMET R7 R1 K2
+ 0x5C240000, // 0039 MOVE R9 R0
+ 0x5C280C00, // 003A MOVE R10 R6
+ 0x7C1C0600, // 003B CALL R7 3
+ 0x8C200905, // 003C GETMET R8 R4 K5
+ 0x60280018, // 003D GETGBL R10 G24
+ 0x582C0009, // 003E LDCONST R11 K9
+ 0x60300008, // 003F GETGBL R12 G8
+ 0x5C340C00, // 0040 MOVE R13 R6
+ 0x7C300200, // 0041 CALL R12 1
+ 0x60340008, // 0042 GETGBL R13 G8
+ 0x5C380E00, // 0043 MOVE R14 R7
+ 0x7C340200, // 0044 CALL R13 1
+ 0x7C280600, // 0045 CALL R10 3
+ 0x7C200400, // 0046 CALL R8 2
+ 0x7001FFED, // 0047 JMP #0036
+ 0x58140006, // 0048 LDCONST R5 K6
+ 0xAC140200, // 0049 CATCH R5 1 0
+ 0xB0080000, // 004A RAISE 2 R0 R0
+ 0x8C14090B, // 004B GETMET R5 R4 K11
+ 0x581C000C, // 004C LDCONST R7 K12
+ 0x7C140400, // 004D CALL R5 2
+ 0x00161405, // 004E ADD R5 K10 R5
+ 0x00140B0D, // 004F ADD R5 R5 K13
+ 0xA8040001, // 0050 EXBLK 1 1
+ 0x80040A00, // 0051 RET 1 R5
+ 0xA8040001, // 0052 EXBLK 1 1
+ 0x7002000D, // 0053 JMP #0062
+ 0xAC040002, // 0054 CATCH R1 0 2
+ 0x7002000A, // 0055 JMP #0061
+ 0x600C0008, // 0056 GETGBL R3 G8
+ 0x5C100200, // 0057 MOVE R4 R1
+ 0x7C0C0200, // 0058 CALL R3 1
+ 0x000E1C03, // 0059 ADD R3 K14 R3
+ 0x000C070F, // 005A ADD R3 R3 K15
+ 0x60100008, // 005B GETGBL R4 G8
+ 0x5C140400, // 005C MOVE R5 R2
+ 0x7C100200, // 005D CALL R4 1
+ 0x000C0604, // 005E ADD R3 R3 R4
+ 0x80040600, // 005F RET 1 R3
+ 0x70020000, // 0060 JMP #0062
+ 0xB0080000, // 0061 RAISE 2 R0 R0
+ 0x80000000, // 0062 RET 0
})
)
);
@@ -233,25 +249,32 @@ be_local_closure(module_matter_inspect, /* name */
********************************************************************/
be_local_closure(module_matter_consolidate_clusters, /* name */
be_nested_proto(
- 12, /* nstack */
+ 16, /* nstack */
2, /* argc */
0, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
+ ( &(const bvalue[13]) { /* constants */
/* K0 */ be_nested_str_weak(CLUSTERS),
/* K1 */ be_nested_str_weak(keys),
- /* K2 */ be_nested_str_weak(copy),
- /* K3 */ be_nested_str_weak(stop_iteration),
- /* K4 */ be_nested_str_weak(find),
- /* K5 */ be_nested_str_weak(push),
+ /* K2 */ be_const_int(2),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_nested_str_weak(push),
+ /* K5 */ be_nested_str_weak(get),
+ /* K6 */ be_const_int(1),
+ /* K7 */ be_nested_str_weak(stop_iteration),
+ /* K8 */ be_nested_str_weak(contains),
+ /* K9 */ be_nested_str_weak(find),
+ /* K10 */ be_nested_str_weak(matter),
+ /* K11 */ be_nested_str_weak(sort),
+ /* K12 */ be_nested_str_weak(add),
}),
be_str_weak(consolidate_clusters),
&be_const_str_solidified,
- ( &(const binstruction[100]) { /* code */
+ ( &(const binstruction[180]) { /* code */
0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0
0x7C080200, // 0002 CALL R2 1
@@ -271,87 +294,167 @@ be_local_closure(module_matter_consolidate_clusters, /* name */
0x8C140501, // 0010 GETMET R5 R2 K1
0x7C140200, // 0011 CALL R5 1
0x7C100200, // 0012 CALL R4 1
- 0xA8020006, // 0013 EXBLK 0 #001B
+ 0xA802001A, // 0013 EXBLK 0 #002F
0x5C140800, // 0014 MOVE R5 R4
0x7C140000, // 0015 CALL R5 0
- 0x94180405, // 0016 GETIDX R6 R2 R5
- 0x8C180D02, // 0017 GETMET R6 R6 K2
- 0x7C180200, // 0018 CALL R6 1
- 0x980C0A06, // 0019 SETIDX R3 R5 R6
- 0x7001FFF8, // 001A JMP #0014
- 0x58100003, // 001B LDCONST R4 K3
- 0xAC100200, // 001C CATCH R4 1 0
- 0xB0080000, // 001D RAISE 2 R0 R0
- 0x60100010, // 001E GETGBL R4 G16
- 0x8C140301, // 001F GETMET R5 R1 K1
- 0x7C140200, // 0020 CALL R5 1
- 0x7C100200, // 0021 CALL R4 1
- 0xA802000E, // 0022 EXBLK 0 #0032
- 0x5C140800, // 0023 MOVE R5 R4
- 0x7C140000, // 0024 CALL R5 0
- 0x8C180704, // 0025 GETMET R6 R3 K4
- 0x5C200A00, // 0026 MOVE R8 R5
- 0x7C180400, // 0027 CALL R6 2
- 0x4C1C0000, // 0028 LDNIL R7
- 0x1C1C0C07, // 0029 EQ R7 R6 R7
- 0x781E0002, // 002A JMPF R7 #002E
- 0x601C0012, // 002B GETGBL R7 G18
- 0x7C1C0000, // 002C CALL R7 0
- 0x5C180E00, // 002D MOVE R6 R7
- 0x941C0205, // 002E GETIDX R7 R1 R5
- 0x001C0C07, // 002F ADD R7 R6 R7
- 0x980C0A07, // 0030 SETIDX R3 R5 R7
- 0x7001FFF0, // 0031 JMP #0023
- 0x58100003, // 0032 LDCONST R4 K3
- 0xAC100200, // 0033 CATCH R4 1 0
- 0xB0080000, // 0034 RAISE 2 R0 R0
- 0x60100012, // 0035 GETGBL R4 G18
- 0x7C100000, // 0036 CALL R4 0
- 0x5416FFF7, // 0037 LDINT R5 65528
- 0x40140805, // 0038 CONNECT R5 R4 R5
- 0x5416FFF8, // 0039 LDINT R5 65529
- 0x40140805, // 003A CONNECT R5 R4 R5
- 0x5416FFF9, // 003B LDINT R5 65530
- 0x40140805, // 003C CONNECT R5 R4 R5
- 0x5416FFFA, // 003D LDINT R5 65531
- 0x40140805, // 003E CONNECT R5 R4 R5
- 0x5416FFFB, // 003F LDINT R5 65532
- 0x40140805, // 0040 CONNECT R5 R4 R5
- 0x5416FFFC, // 0041 LDINT R5 65533
- 0x40140805, // 0042 CONNECT R5 R4 R5
- 0x60140010, // 0043 GETGBL R5 G16
- 0x8C180301, // 0044 GETMET R6 R1 K1
- 0x7C180200, // 0045 CALL R6 1
- 0x7C140200, // 0046 CALL R5 1
- 0xA8020017, // 0047 EXBLK 0 #0060
- 0x5C180A00, // 0048 MOVE R6 R5
- 0x7C180000, // 0049 CALL R6 0
- 0x601C0010, // 004A GETGBL R7 G16
- 0x5C200800, // 004B MOVE R8 R4
- 0x7C1C0200, // 004C CALL R7 1
- 0xA802000D, // 004D EXBLK 0 #005C
- 0x5C200E00, // 004E MOVE R8 R7
- 0x7C200000, // 004F CALL R8 0
- 0x94240606, // 0050 GETIDX R9 R3 R6
- 0x8C241304, // 0051 GETMET R9 R9 K4
- 0x5C2C1000, // 0052 MOVE R11 R8
- 0x7C240400, // 0053 CALL R9 2
- 0x4C280000, // 0054 LDNIL R10
- 0x1C24120A, // 0055 EQ R9 R9 R10
- 0x78260003, // 0056 JMPF R9 #005B
- 0x94240606, // 0057 GETIDX R9 R3 R6
- 0x8C241305, // 0058 GETMET R9 R9 K5
- 0x5C2C1000, // 0059 MOVE R11 R8
- 0x7C240400, // 005A CALL R9 2
- 0x7001FFF1, // 005B JMP #004E
- 0x581C0003, // 005C LDCONST R7 K3
- 0xAC1C0200, // 005D CATCH R7 1 0
- 0xB0080000, // 005E RAISE 2 R0 R0
- 0x7001FFE7, // 005F JMP #0048
- 0x58140003, // 0060 LDCONST R5 K3
- 0xAC140200, // 0061 CATCH R5 1 0
- 0xB0080000, // 0062 RAISE 2 R0 R0
- 0x80040600, // 0063 RET 1 R3
+ 0x60180012, // 0016 GETGBL R6 G18
+ 0x7C180000, // 0017 CALL R6 0
+ 0x941C0405, // 0018 GETIDX R7 R2 R5
+ 0x4C200000, // 0019 LDNIL R8
+ 0x20200E08, // 001A NE R8 R7 R8
+ 0x78220004, // 001B JMPF R8 #0021
+ 0x6020000C, // 001C GETGBL R8 G12
+ 0x5C240E00, // 001D MOVE R9 R7
+ 0x7C200200, // 001E CALL R8 1
+ 0x0C201102, // 001F DIV R8 R8 K2
+ 0x70020000, // 0020 JMP #0022
+ 0x58200003, // 0021 LDCONST R8 K3
+ 0x58240003, // 0022 LDCONST R9 K3
+ 0x14281208, // 0023 LT R10 R9 R8
+ 0x782A0007, // 0024 JMPF R10 #002D
+ 0x8C280D04, // 0025 GETMET R10 R6 K4
+ 0x8C300F05, // 0026 GETMET R12 R7 K5
+ 0x08381302, // 0027 MUL R14 R9 K2
+ 0x543DFFFD, // 0028 LDINT R15 -2
+ 0x7C300600, // 0029 CALL R12 3
+ 0x7C280400, // 002A CALL R10 2
+ 0x00241306, // 002B ADD R9 R9 K6
+ 0x7001FFF5, // 002C JMP #0023
+ 0x980C0A06, // 002D SETIDX R3 R5 R6
+ 0x7001FFE4, // 002E JMP #0014
+ 0x58100007, // 002F LDCONST R4 K7
+ 0xAC100200, // 0030 CATCH R4 1 0
+ 0xB0080000, // 0031 RAISE 2 R0 R0
+ 0x60100010, // 0032 GETGBL R4 G16
+ 0x8C140301, // 0033 GETMET R5 R1 K1
+ 0x7C140200, // 0034 CALL R5 1
+ 0x7C100200, // 0035 CALL R4 1
+ 0xA802001E, // 0036 EXBLK 0 #0056
+ 0x5C140800, // 0037 MOVE R5 R4
+ 0x7C140000, // 0038 CALL R5 0
+ 0x8C180708, // 0039 GETMET R6 R3 K8
+ 0x5C200A00, // 003A MOVE R8 R5
+ 0x7C180400, // 003B CALL R6 2
+ 0x741A0002, // 003C JMPT R6 #0040
+ 0x60180012, // 003D GETGBL R6 G18
+ 0x7C180000, // 003E CALL R6 0
+ 0x980C0A06, // 003F SETIDX R3 R5 R6
+ 0x60180010, // 0040 GETGBL R6 G16
+ 0x941C0205, // 0041 GETIDX R7 R1 R5
+ 0x7C180200, // 0042 CALL R6 1
+ 0xA802000D, // 0043 EXBLK 0 #0052
+ 0x5C1C0C00, // 0044 MOVE R7 R6
+ 0x7C1C0000, // 0045 CALL R7 0
+ 0x94200605, // 0046 GETIDX R8 R3 R5
+ 0x8C201109, // 0047 GETMET R8 R8 K9
+ 0x5C280E00, // 0048 MOVE R10 R7
+ 0x7C200400, // 0049 CALL R8 2
+ 0x4C240000, // 004A LDNIL R9
+ 0x1C201009, // 004B EQ R8 R8 R9
+ 0x78220003, // 004C JMPF R8 #0051
+ 0x94200605, // 004D GETIDX R8 R3 R5
+ 0x8C201104, // 004E GETMET R8 R8 K4
+ 0x5C280E00, // 004F MOVE R10 R7
+ 0x7C200400, // 0050 CALL R8 2
+ 0x7001FFF1, // 0051 JMP #0044
+ 0x58180007, // 0052 LDCONST R6 K7
+ 0xAC180200, // 0053 CATCH R6 1 0
+ 0xB0080000, // 0054 RAISE 2 R0 R0
+ 0x7001FFE0, // 0055 JMP #0037
+ 0x58100007, // 0056 LDCONST R4 K7
+ 0xAC100200, // 0057 CATCH R4 1 0
+ 0xB0080000, // 0058 RAISE 2 R0 R0
+ 0x60100012, // 0059 GETGBL R4 G18
+ 0x7C100000, // 005A CALL R4 0
+ 0x5416FFF7, // 005B LDINT R5 65528
+ 0x40140805, // 005C CONNECT R5 R4 R5
+ 0x5416FFF8, // 005D LDINT R5 65529
+ 0x40140805, // 005E CONNECT R5 R4 R5
+ 0x5416FFF9, // 005F LDINT R5 65530
+ 0x40140805, // 0060 CONNECT R5 R4 R5
+ 0x5416FFFA, // 0061 LDINT R5 65531
+ 0x40140805, // 0062 CONNECT R5 R4 R5
+ 0x5416FFFB, // 0063 LDINT R5 65532
+ 0x40140805, // 0064 CONNECT R5 R4 R5
+ 0x5416FFFC, // 0065 LDINT R5 65533
+ 0x40140805, // 0066 CONNECT R5 R4 R5
+ 0x60140010, // 0067 GETGBL R5 G16
+ 0x8C180301, // 0068 GETMET R6 R1 K1
+ 0x7C180200, // 0069 CALL R6 1
+ 0x7C140200, // 006A CALL R5 1
+ 0xA8020017, // 006B EXBLK 0 #0084
+ 0x5C180A00, // 006C MOVE R6 R5
+ 0x7C180000, // 006D CALL R6 0
+ 0x601C0010, // 006E GETGBL R7 G16
+ 0x5C200800, // 006F MOVE R8 R4
+ 0x7C1C0200, // 0070 CALL R7 1
+ 0xA802000D, // 0071 EXBLK 0 #0080
+ 0x5C200E00, // 0072 MOVE R8 R7
+ 0x7C200000, // 0073 CALL R8 0
+ 0x94240606, // 0074 GETIDX R9 R3 R6
+ 0x8C241309, // 0075 GETMET R9 R9 K9
+ 0x5C2C1000, // 0076 MOVE R11 R8
+ 0x7C240400, // 0077 CALL R9 2
+ 0x4C280000, // 0078 LDNIL R10
+ 0x1C24120A, // 0079 EQ R9 R9 R10
+ 0x78260003, // 007A JMPF R9 #007F
+ 0x94240606, // 007B GETIDX R9 R3 R6
+ 0x8C241304, // 007C GETMET R9 R9 K4
+ 0x5C2C1000, // 007D MOVE R11 R8
+ 0x7C240400, // 007E CALL R9 2
+ 0x7001FFF1, // 007F JMP #0072
+ 0x581C0007, // 0080 LDCONST R7 K7
+ 0xAC1C0200, // 0081 CATCH R7 1 0
+ 0xB0080000, // 0082 RAISE 2 R0 R0
+ 0x7001FFE7, // 0083 JMP #006C
+ 0x58140007, // 0084 LDCONST R5 K7
+ 0xAC140200, // 0085 CATCH R5 1 0
+ 0xB0080000, // 0086 RAISE 2 R0 R0
+ 0x60140010, // 0087 GETGBL R5 G16
+ 0x8C180701, // 0088 GETMET R6 R3 K1
+ 0x7C180200, // 0089 CALL R6 1
+ 0x7C140200, // 008A CALL R5 1
+ 0xA8020008, // 008B EXBLK 0 #0095
+ 0x5C180A00, // 008C MOVE R6 R5
+ 0x7C180000, // 008D CALL R6 0
+ 0x941C0606, // 008E GETIDX R7 R3 R6
+ 0xB8221400, // 008F GETNGBL R8 K10
+ 0x8C20110B, // 0090 GETMET R8 R8 K11
+ 0x5C280E00, // 0091 MOVE R10 R7
+ 0x7C200400, // 0092 CALL R8 2
+ 0x980C0C08, // 0093 SETIDX R3 R6 R8
+ 0x7001FFF6, // 0094 JMP #008C
+ 0x58140007, // 0095 LDCONST R5 K7
+ 0xAC140200, // 0096 CATCH R5 1 0
+ 0xB0080000, // 0097 RAISE 2 R0 R0
+ 0x60140010, // 0098 GETGBL R5 G16
+ 0x8C180701, // 0099 GETMET R6 R3 K1
+ 0x7C180200, // 009A CALL R6 1
+ 0x7C140200, // 009B CALL R5 1
+ 0xA8020012, // 009C EXBLK 0 #00B0
+ 0x5C180A00, // 009D MOVE R6 R5
+ 0x7C180000, // 009E CALL R6 0
+ 0x941C0606, // 009F GETIDX R7 R3 R6
+ 0x60200015, // 00A0 GETGBL R8 G21
+ 0x7C200000, // 00A1 CALL R8 0
+ 0x58240003, // 00A2 LDCONST R9 K3
+ 0x6028000C, // 00A3 GETGBL R10 G12
+ 0x5C2C0E00, // 00A4 MOVE R11 R7
+ 0x7C280200, // 00A5 CALL R10 1
+ 0x1428120A, // 00A6 LT R10 R9 R10
+ 0x782A0005, // 00A7 JMPF R10 #00AE
+ 0x8C28110C, // 00A8 GETMET R10 R8 K12
+ 0x94300E09, // 00A9 GETIDX R12 R7 R9
+ 0x5435FFFD, // 00AA LDINT R13 -2
+ 0x7C280600, // 00AB CALL R10 3
+ 0x00241306, // 00AC ADD R9 R9 K6
+ 0x7001FFF4, // 00AD JMP #00A3
+ 0x980C0C08, // 00AE SETIDX R3 R6 R8
+ 0x7001FFEC, // 00AF JMP #009D
+ 0x58140007, // 00B0 LDCONST R5 K7
+ 0xAC140200, // 00B1 CATCH R5 1 0
+ 0xB0080000, // 00B2 RAISE 2 R0 R0
+ 0x80040600, // 00B3 RET 1 R3
})
)
);
@@ -369,7 +472,7 @@ be_local_closure(module_matter_UC_LIST, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(UPDATE_COMMANDS),
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Base38.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Base38.h
index 7fa23af42..b6646dc6c 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Base38.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Base38.h
@@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Base38;
/********************************************************************
** Solidified function: encode
********************************************************************/
-extern const bclass be_class_Matter_Base38;
be_local_closure(class_Matter_Base38_encode, /* name */
be_nested_proto(
10, /* nstack */
@@ -18,7 +17,7 @@ be_local_closure(class_Matter_Base38_encode, /* name */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
6, /* nstack */
2, /* argc */
@@ -26,7 +25,7 @@ be_local_closure(class_Matter_Base38_encode, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str_weak(0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_X2D_X2E),
@@ -53,7 +52,6 @@ be_local_closure(class_Matter_Base38_encode, /* name */
0x80040800, // 000D RET 1 R4
})
),
- &be_class_Matter_Base38,
}),
1, /* has constants */
( &(const bvalue[ 6]) { /* constants */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h
deleted file mode 100644
index 7223b049f..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h
+++ /dev/null
@@ -1,2033 +0,0 @@
-/* Solidification of Matter_Commissioning.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Commisioning_Context;
-
-/********************************************************************
-** Solidified function: parse_StatusReport
-********************************************************************/
-extern const bclass be_class_Matter_Commisioning_Context;
-be_local_closure(class_Matter_Commisioning_Context_parse_StatusReport, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Commisioning_Context,
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(session),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(log),
- /* K3 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20),
- /* K4 */ be_nested_str_weak(raw),
- /* K5 */ be_nested_str_weak(app_payload_idx),
- /* K6 */ be_const_int(2147483647),
- /* K7 */ be_nested_str_weak(tohex),
- /* K8 */ be_const_int(3),
- }),
- be_str_weak(parse_StatusReport),
- &be_const_str_solidified,
- ( &(const binstruction[14]) { /* code */
- 0x88080300, // 0000 GETMBR R2 R1 K0
- 0xB80E0200, // 0001 GETNGBL R3 K1
- 0x8C0C0702, // 0002 GETMET R3 R3 K2
- 0x88140305, // 0003 GETMBR R5 R1 K5
- 0x40140B06, // 0004 CONNECT R5 R5 K6
- 0x88180304, // 0005 GETMBR R6 R1 K4
- 0x94140C05, // 0006 GETIDX R5 R6 R5
- 0x8C140B07, // 0007 GETMET R5 R5 K7
- 0x7C140200, // 0008 CALL R5 1
- 0x00160605, // 0009 ADD R5 K3 R5
- 0x58180008, // 000A LDCONST R6 K8
- 0x7C0C0600, // 000B CALL R3 3
- 0x500C0000, // 000C LDBOOL R3 0 0
- 0x80040600, // 000D RET 1 R3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: find_fabric_by_destination_id
-********************************************************************/
-extern const bclass be_class_Matter_Commisioning_Context;
-be_local_closure(class_Matter_Commisioning_Context_find_fabric_by_destination_id, /* name */
- be_nested_proto(
- 14, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Commisioning_Context,
- 1, /* has constants */
- ( &(const bvalue[19]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(loglevel),
- /* K3 */ be_nested_str_weak(log),
- /* K4 */ be_nested_str_weak(MTR_X3A_X20SEARCHING_X3A_X20destinationId_X3D),
- /* K5 */ be_nested_str_weak(tohex),
- /* K6 */ be_nested_str_weak(device),
- /* K7 */ be_nested_str_weak(sessions),
- /* K8 */ be_nested_str_weak(fabrics),
- /* K9 */ be_nested_str_weak(noc),
- /* K10 */ be_nested_str_weak(fabric_id),
- /* K11 */ be_nested_str_weak(device_id),
- /* K12 */ be_nested_str_weak(get_ca_pub),
- /* K13 */ be_nested_str_weak(get_ipk_group_key),
- /* K14 */ be_nested_str_weak(HMAC_SHA256),
- /* K15 */ be_nested_str_weak(update),
- /* K16 */ be_nested_str_weak(out),
- /* K17 */ be_nested_str_weak(MTR_X3A_X20SIGMA1_X3A_X20candidateDestinationId_X3D),
- /* K18 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(find_fabric_by_destination_id),
- &be_const_str_solidified,
- ( &(const binstruction[73]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
- 0xB8120200, // 0001 GETNGBL R4 K1
- 0x8C100902, // 0002 GETMET R4 R4 K2
- 0x541A0003, // 0003 LDINT R6 4
- 0x7C100400, // 0004 CALL R4 2
- 0x78120006, // 0005 JMPF R4 #000D
- 0xB8120200, // 0006 GETNGBL R4 K1
- 0x8C100903, // 0007 GETMET R4 R4 K3
- 0x8C180305, // 0008 GETMET R6 R1 K5
- 0x7C180200, // 0009 CALL R6 1
- 0x001A0806, // 000A ADD R6 K4 R6
- 0x541E0003, // 000B LDINT R7 4
- 0x7C100600, // 000C CALL R4 3
- 0x60100010, // 000D GETGBL R4 G16
- 0x88140106, // 000E GETMBR R5 R0 K6
- 0x88140B07, // 000F GETMBR R5 R5 K7
- 0x88140B08, // 0010 GETMBR R5 R5 K8
- 0x7C100200, // 0011 CALL R4 1
- 0xA8020030, // 0012 EXBLK 0 #0044
- 0x5C140800, // 0013 MOVE R5 R4
- 0x7C140000, // 0014 CALL R5 0
- 0x88180B09, // 0015 GETMBR R6 R5 K9
- 0x4C1C0000, // 0016 LDNIL R7
- 0x1C180C07, // 0017 EQ R6 R6 R7
- 0x741A0007, // 0018 JMPT R6 #0021
- 0x88180B0A, // 0019 GETMBR R6 R5 K10
- 0x4C1C0000, // 001A LDNIL R7
- 0x1C180C07, // 001B EQ R6 R6 R7
- 0x741A0003, // 001C JMPT R6 #0021
- 0x88180B0B, // 001D GETMBR R6 R5 K11
- 0x4C1C0000, // 001E LDNIL R7
- 0x1C180C07, // 001F EQ R6 R6 R7
- 0x781A0000, // 0020 JMPF R6 #0022
- 0x7001FFF0, // 0021 JMP #0013
- 0x8C180B0C, // 0022 GETMET R6 R5 K12
- 0x7C180200, // 0023 CALL R6 1
- 0x00180406, // 0024 ADD R6 R2 R6
- 0x881C0B0A, // 0025 GETMBR R7 R5 K10
- 0x00180C07, // 0026 ADD R6 R6 R7
- 0x881C0B0B, // 0027 GETMBR R7 R5 K11
- 0x00180C07, // 0028 ADD R6 R6 R7
- 0x8C1C0B0D, // 0029 GETMET R7 R5 K13
- 0x7C1C0200, // 002A CALL R7 1
- 0x8C20070E, // 002B GETMET R8 R3 K14
- 0x5C280E00, // 002C MOVE R10 R7
- 0x7C200400, // 002D CALL R8 2
- 0x8C24110F, // 002E GETMET R9 R8 K15
- 0x5C2C0C00, // 002F MOVE R11 R6
- 0x7C240400, // 0030 CALL R9 2
- 0x8C241110, // 0031 GETMET R9 R8 K16
- 0x7C240200, // 0032 CALL R9 1
- 0xB82A0200, // 0033 GETNGBL R10 K1
- 0x8C281502, // 0034 GETMET R10 R10 K2
- 0x54320003, // 0035 LDINT R12 4
- 0x7C280400, // 0036 CALL R10 2
- 0x782A0006, // 0037 JMPF R10 #003F
- 0xB82A0200, // 0038 GETNGBL R10 K1
- 0x8C281503, // 0039 GETMET R10 R10 K3
- 0x8C301305, // 003A GETMET R12 R9 K5
- 0x7C300200, // 003B CALL R12 1
- 0x0032220C, // 003C ADD R12 K17 R12
- 0x54360003, // 003D LDINT R13 4
- 0x7C280600, // 003E CALL R10 3
- 0x1C281201, // 003F EQ R10 R9 R1
- 0x782A0001, // 0040 JMPF R10 #0043
- 0xA8040001, // 0041 EXBLK 1 1
- 0x80040A00, // 0042 RET 1 R5
- 0x7001FFCE, // 0043 JMP #0013
- 0x58100012, // 0044 LDCONST R4 K18
- 0xAC100200, // 0045 CATCH R4 1 0
- 0xB0080000, // 0046 RAISE 2 R0 R0
- 0x4C100000, // 0047 LDNIL R4
- 0x80040800, // 0048 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: every_second
-********************************************************************/
-extern const bclass be_class_Matter_Commisioning_Context;
-be_local_closure(class_Matter_Commisioning_Context_every_second, /* name */
- be_nested_proto(
- 1, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Commisioning_Context,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(every_second),
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: add_session
-********************************************************************/
-extern const bclass be_class_Matter_Commisioning_Context;
-be_local_closure(class_Matter_Commisioning_Context_add_session, /* name */
- be_nested_proto(
- 12, /* nstack */
- 6, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Commisioning_Context,
- 1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(log),
- /* K2 */ be_nested_str_weak(MTR_X3A_X20add_session_X20local_session_id_X3D_X25i_X20initiator_session_id_X3D_X25i),
- /* K3 */ be_nested_str_weak(device),
- /* K4 */ be_nested_str_weak(sessions),
- /* K5 */ be_nested_str_weak(create_session),
- /* K6 */ be_nested_str_weak(set_keys),
- }),
- be_str_weak(add_session),
- &be_const_str_solidified,
- ( &(const binstruction[21]) { /* code */
- 0xB81A0000, // 0000 GETNGBL R6 K0
- 0x8C180D01, // 0001 GETMET R6 R6 K1
- 0x60200018, // 0002 GETGBL R8 G24
- 0x58240002, // 0003 LDCONST R9 K2
- 0x5C280200, // 0004 MOVE R10 R1
- 0x5C2C0400, // 0005 MOVE R11 R2
- 0x7C200600, // 0006 CALL R8 3
- 0x54260003, // 0007 LDINT R9 4
- 0x7C180600, // 0008 CALL R6 3
- 0x88180103, // 0009 GETMBR R6 R0 K3
- 0x88180D04, // 000A GETMBR R6 R6 K4
- 0x8C180D05, // 000B GETMET R6 R6 K5
- 0x5C200200, // 000C MOVE R8 R1
- 0x5C240400, // 000D MOVE R9 R2
- 0x7C180600, // 000E CALL R6 3
- 0x8C1C0D06, // 000F GETMET R7 R6 K6
- 0x5C240600, // 0010 MOVE R9 R3
- 0x5C280800, // 0011 MOVE R10 R4
- 0x5C2C0A00, // 0012 MOVE R11 R5
- 0x7C1C0800, // 0013 CALL R7 4
- 0x80000000, // 0014 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_PBKDFParamRequest
-********************************************************************/
-extern const bclass be_class_Matter_Commisioning_Context;
-be_local_closure(class_Matter_Commisioning_Context_parse_PBKDFParamRequest, /* name */
- be_nested_proto(
- 12, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Commisioning_Context,
- 1, /* has constants */
- ( &(const bvalue[48]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(session),
- /* K2 */ be_nested_str_weak(opcode),
- /* K3 */ be_nested_str_weak(local_session_id),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(protocol_id),
- /* K6 */ be_nested_str_weak(tasmota),
- /* K7 */ be_nested_str_weak(log),
- /* K8 */ be_nested_str_weak(MTR_X3A_X20invalid_X20PBKDFParamRequest_X20message),
- /* K9 */ be_const_int(2),
- /* K10 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29),
- /* K11 */ be_const_int(3),
- /* K12 */ be_nested_str_weak(send_status_report),
- /* K13 */ be_const_int(1),
- /* K14 */ be_nested_str_weak(matter),
- /* K15 */ be_nested_str_weak(PBKDFParamRequest),
- /* K16 */ be_nested_str_weak(parse),
- /* K17 */ be_nested_str_weak(raw),
- /* K18 */ be_nested_str_weak(app_payload_idx),
- /* K19 */ be_nested_str_weak(set_mode_PASE),
- /* K20 */ be_nested_str_weak(__Msg1),
- /* K21 */ be_const_int(2147483647),
- /* K22 */ be_nested_str_weak(passcodeId),
- /* K23 */ be_nested_str_weak(MTR_X3A_X20non_X2Dzero_X20passcode_X20id),
- /* K24 */ be_nested_str_weak(__future_initiator_session_id),
- /* K25 */ be_nested_str_weak(initiator_session_id),
- /* K26 */ be_nested_str_weak(__future_local_session_id),
- /* K27 */ be_nested_str_weak(device),
- /* K28 */ be_nested_str_weak(sessions),
- /* K29 */ be_nested_str_weak(gen_local_session_id),
- /* K30 */ be_nested_str_weak(MTR_X3A_X20_X2BSession_X20_X20_X20_X28_X256i_X29_X20from_X20_X27_X5B_X25s_X5D_X3A_X25i_X27),
- /* K31 */ be_nested_str_weak(remote_ip),
- /* K32 */ be_nested_str_weak(remote_port),
- /* K33 */ be_nested_str_weak(PBKDFParamResponse),
- /* K34 */ be_nested_str_weak(initiatorRandom),
- /* K35 */ be_nested_str_weak(responderRandom),
- /* K36 */ be_nested_str_weak(random),
- /* K37 */ be_nested_str_weak(responderSessionId),
- /* K38 */ be_nested_str_weak(pbkdf_parameters_salt),
- /* K39 */ be_nested_str_weak(commissioning_salt),
- /* K40 */ be_nested_str_weak(pbkdf_parameters_iterations),
- /* K41 */ be_nested_str_weak(commissioning_iterations),
- /* K42 */ be_nested_str_weak(tlv2raw),
- /* K43 */ be_nested_str_weak(__Msg2),
- /* K44 */ be_nested_str_weak(build_response),
- /* K45 */ be_nested_str_weak(encode_frame),
- /* K46 */ be_nested_str_weak(responder),
- /* K47 */ be_nested_str_weak(send_response_frame),
- }),
- be_str_weak(parse_PBKDFParamRequest),
- &be_const_str_solidified,
- ( &(const binstruction[118]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x880C0301, // 0001 GETMBR R3 R1 K1
- 0x88100302, // 0002 GETMBR R4 R1 K2
- 0x5416001F, // 0003 LDINT R5 32
- 0x20100805, // 0004 NE R4 R4 R5
- 0x74120005, // 0005 JMPT R4 #000C
- 0x88100303, // 0006 GETMBR R4 R1 K3
- 0x20100904, // 0007 NE R4 R4 K4
- 0x74120002, // 0008 JMPT R4 #000C
- 0x88100305, // 0009 GETMBR R4 R1 K5
- 0x20100904, // 000A NE R4 R4 K4
- 0x78120012, // 000B JMPF R4 #001F
- 0xB8120C00, // 000C GETNGBL R4 K6
- 0x8C100907, // 000D GETMET R4 R4 K7
- 0x58180008, // 000E LDCONST R6 K8
- 0x581C0009, // 000F LDCONST R7 K9
- 0x7C100600, // 0010 CALL R4 3
- 0xB8120C00, // 0011 GETNGBL R4 K6
- 0x8C100907, // 0012 GETMET R4 R4 K7
- 0x5818000A, // 0013 LDCONST R6 K10
- 0x581C000B, // 0014 LDCONST R7 K11
- 0x7C100600, // 0015 CALL R4 3
- 0x8C10010C, // 0016 GETMET R4 R0 K12
- 0x5C180200, // 0017 MOVE R6 R1
- 0x581C000D, // 0018 LDCONST R7 K13
- 0x58200004, // 0019 LDCONST R8 K4
- 0x58240009, // 001A LDCONST R9 K9
- 0x50280000, // 001B LDBOOL R10 0 0
- 0x7C100C00, // 001C CALL R4 6
- 0x50100000, // 001D LDBOOL R4 0 0
- 0x80040800, // 001E RET 1 R4
- 0xB8121C00, // 001F GETNGBL R4 K14
- 0x8C10090F, // 0020 GETMET R4 R4 K15
- 0x7C100200, // 0021 CALL R4 1
- 0x8C100910, // 0022 GETMET R4 R4 K16
- 0x88180311, // 0023 GETMBR R6 R1 K17
- 0x881C0312, // 0024 GETMBR R7 R1 K18
- 0x7C100600, // 0025 CALL R4 3
- 0x88140301, // 0026 GETMBR R5 R1 K1
- 0x8C140B13, // 0027 GETMET R5 R5 K19
- 0x7C140200, // 0028 CALL R5 1
- 0x88140312, // 0029 GETMBR R5 R1 K18
- 0x40140B15, // 002A CONNECT R5 R5 K21
- 0x88180311, // 002B GETMBR R6 R1 K17
- 0x94140C05, // 002C GETIDX R5 R6 R5
- 0x900E2805, // 002D SETMBR R3 K20 R5
- 0x88140916, // 002E GETMBR R5 R4 K22
- 0x20140B04, // 002F NE R5 R5 K4
- 0x78160012, // 0030 JMPF R5 #0044
- 0xB8160C00, // 0031 GETNGBL R5 K6
- 0x8C140B07, // 0032 GETMET R5 R5 K7
- 0x581C0017, // 0033 LDCONST R7 K23
- 0x58200009, // 0034 LDCONST R8 K9
- 0x7C140600, // 0035 CALL R5 3
- 0xB8160C00, // 0036 GETNGBL R5 K6
- 0x8C140B07, // 0037 GETMET R5 R5 K7
- 0x581C000A, // 0038 LDCONST R7 K10
- 0x5820000B, // 0039 LDCONST R8 K11
- 0x7C140600, // 003A CALL R5 3
- 0x8C14010C, // 003B GETMET R5 R0 K12
- 0x5C1C0200, // 003C MOVE R7 R1
- 0x5820000D, // 003D LDCONST R8 K13
- 0x58240004, // 003E LDCONST R9 K4
- 0x58280009, // 003F LDCONST R10 K9
- 0x502C0000, // 0040 LDBOOL R11 0 0
- 0x7C140C00, // 0041 CALL R5 6
- 0x50140000, // 0042 LDBOOL R5 0 0
- 0x80040A00, // 0043 RET 1 R5
- 0x88140919, // 0044 GETMBR R5 R4 K25
- 0x900E3005, // 0045 SETMBR R3 K24 R5
- 0x8814011B, // 0046 GETMBR R5 R0 K27
- 0x88140B1C, // 0047 GETMBR R5 R5 K28
- 0x8C140B1D, // 0048 GETMET R5 R5 K29
- 0x7C140200, // 0049 CALL R5 1
- 0x900E3405, // 004A SETMBR R3 K26 R5
- 0xB8160C00, // 004B GETNGBL R5 K6
- 0x8C140B07, // 004C GETMET R5 R5 K7
- 0x601C0018, // 004D GETGBL R7 G24
- 0x5820001E, // 004E LDCONST R8 K30
- 0x8824071A, // 004F GETMBR R9 R3 K26
- 0x8828031F, // 0050 GETMBR R10 R1 K31
- 0x882C0320, // 0051 GETMBR R11 R1 K32
- 0x7C1C0800, // 0052 CALL R7 4
- 0x5820000B, // 0053 LDCONST R8 K11
- 0x7C140600, // 0054 CALL R5 3
- 0xB8161C00, // 0055 GETNGBL R5 K14
- 0x8C140B21, // 0056 GETMET R5 R5 K33
- 0x7C140200, // 0057 CALL R5 1
- 0x88180922, // 0058 GETMBR R6 R4 K34
- 0x90164406, // 0059 SETMBR R5 K34 R6
- 0x8C180524, // 005A GETMET R6 R2 K36
- 0x5422001F, // 005B LDINT R8 32
- 0x7C180400, // 005C CALL R6 2
- 0x90164606, // 005D SETMBR R5 K35 R6
- 0x8818071A, // 005E GETMBR R6 R3 K26
- 0x90164A06, // 005F SETMBR R5 K37 R6
- 0x8818011B, // 0060 GETMBR R6 R0 K27
- 0x88180D27, // 0061 GETMBR R6 R6 K39
- 0x90164C06, // 0062 SETMBR R5 K38 R6
- 0x8818011B, // 0063 GETMBR R6 R0 K27
- 0x88180D29, // 0064 GETMBR R6 R6 K41
- 0x90165006, // 0065 SETMBR R5 K40 R6
- 0x8C180B2A, // 0066 GETMET R6 R5 K42
- 0x7C180200, // 0067 CALL R6 1
- 0x900E5606, // 0068 SETMBR R3 K43 R6
- 0x8C1C032C, // 0069 GETMET R7 R1 K44
- 0x54260020, // 006A LDINT R9 33
- 0x50280200, // 006B LDBOOL R10 1 0
- 0x7C1C0600, // 006C CALL R7 3
- 0x8C200F2D, // 006D GETMET R8 R7 K45
- 0x5C280C00, // 006E MOVE R10 R6
- 0x7C200400, // 006F CALL R8 2
- 0x8824012E, // 0070 GETMBR R9 R0 K46
- 0x8C24132F, // 0071 GETMET R9 R9 K47
- 0x5C2C0E00, // 0072 MOVE R11 R7
- 0x7C240400, // 0073 CALL R9 2
- 0x50240200, // 0074 LDBOOL R9 1 0
- 0x80041200, // 0075 RET 1 R9
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: send_status_report
-********************************************************************/
-extern const bclass be_class_Matter_Commisioning_Context;
-be_local_closure(class_Matter_Commisioning_Context_send_status_report, /* name */
- be_nested_proto(
- 12, /* nstack */
- 6, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Commisioning_Context,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(build_response),
- /* K1 */ be_nested_str_weak(add),
- /* K2 */ be_const_int(2),
- /* K3 */ be_nested_str_weak(encode_frame),
- /* K4 */ be_nested_str_weak(responder),
- /* K5 */ be_nested_str_weak(send_response_frame),
- }),
- be_str_weak(send_status_report),
- &be_const_str_solidified,
- ( &(const binstruction[26]) { /* code */
- 0x8C180300, // 0000 GETMET R6 R1 K0
- 0x5422003F, // 0001 LDINT R8 64
- 0x5C240A00, // 0002 MOVE R9 R5
- 0x7C180600, // 0003 CALL R6 3
- 0x601C0015, // 0004 GETGBL R7 G21
- 0x7C1C0000, // 0005 CALL R7 0
- 0x8C200F01, // 0006 GETMET R8 R7 K1
- 0x5C280400, // 0007 MOVE R10 R2
- 0x582C0002, // 0008 LDCONST R11 K2
- 0x7C200600, // 0009 CALL R8 3
- 0x8C200F01, // 000A GETMET R8 R7 K1
- 0x5C280600, // 000B MOVE R10 R3
- 0x542E0003, // 000C LDINT R11 4
- 0x7C200600, // 000D CALL R8 3
- 0x8C200F01, // 000E GETMET R8 R7 K1
- 0x5C280800, // 000F MOVE R10 R4
- 0x542E0003, // 0010 LDINT R11 4
- 0x7C200600, // 0011 CALL R8 3
- 0x8C200D03, // 0012 GETMET R8 R6 K3
- 0x5C280E00, // 0013 MOVE R10 R7
- 0x7C200400, // 0014 CALL R8 2
- 0x88240104, // 0015 GETMBR R9 R0 K4
- 0x8C241305, // 0016 GETMET R9 R9 K5
- 0x5C2C0C00, // 0017 MOVE R11 R6
- 0x7C240400, // 0018 CALL R9 2
- 0x80000000, // 0019 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_Pake1
-********************************************************************/
-extern const bclass be_class_Matter_Commisioning_Context;
-be_local_closure(class_Matter_Commisioning_Context_parse_Pake1, /* name */
- be_nested_proto(
- 21, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Commisioning_Context,
- 1, /* has constants */
- ( &(const bvalue[52]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(session),
- /* K2 */ be_nested_str_weak(opcode),
- /* K3 */ be_nested_str_weak(local_session_id),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(protocol_id),
- /* K6 */ be_nested_str_weak(tasmota),
- /* K7 */ be_nested_str_weak(log),
- /* K8 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake1_X20message),
- /* K9 */ be_const_int(3),
- /* K10 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29),
- /* K11 */ be_nested_str_weak(send_status_report),
- /* K12 */ be_const_int(1),
- /* K13 */ be_const_int(2),
- /* K14 */ be_nested_str_weak(matter),
- /* K15 */ be_nested_str_weak(Pake1),
- /* K16 */ be_nested_str_weak(parse),
- /* K17 */ be_nested_str_weak(raw),
- /* K18 */ be_nested_str_weak(app_payload_idx),
- /* K19 */ be_nested_str_weak(pA),
- /* K20 */ be_nested_str_weak(SPAKE2P_Matter),
- /* K21 */ be_nested_str_weak(device),
- /* K22 */ be_nested_str_weak(commissioning_w0),
- /* K23 */ be_nested_str_weak(commissioning_L),
- /* K24 */ be_nested_str_weak(random),
- /* K25 */ be_nested_str_weak(compute_pB),
- /* K26 */ be_nested_str_weak(compute_ZV_verifier),
- /* K27 */ be_nested_str_weak(SHA256),
- /* K28 */ be_nested_str_weak(update),
- /* K29 */ be_nested_str_weak(fromstring),
- /* K30 */ be_nested_str_weak(Matter_Context_Prefix),
- /* K31 */ be_nested_str_weak(__Msg1),
- /* K32 */ be_nested_str_weak(__Msg2),
- /* K33 */ be_nested_str_weak(out),
- /* K34 */ be_nested_str_weak(set_context),
- /* K35 */ be_nested_str_weak(compute_TT_hash),
- /* K36 */ be_nested_str_weak(Pake2),
- /* K37 */ be_nested_str_weak(pB),
- /* K38 */ be_nested_str_weak(cB),
- /* K39 */ be_nested_str_weak(tlv2raw),
- /* K40 */ be_nested_str_weak(__spake_cA),
- /* K41 */ be_nested_str_weak(cA),
- /* K42 */ be_nested_str_weak(__spake_Ke),
- /* K43 */ be_nested_str_weak(Ke),
- /* K44 */ be_nested_str_weak(build_response),
- /* K45 */ be_nested_str_weak(encode_frame),
- /* K46 */ be_nested_str_weak(MTR_X3A_X20New_X20Commissioning_X20_X28PASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i),
- /* K47 */ be_nested_str_weak(__future_local_session_id),
- /* K48 */ be_nested_str_weak(_ip),
- /* K49 */ be_nested_str_weak(_port),
- /* K50 */ be_nested_str_weak(responder),
- /* K51 */ be_nested_str_weak(send_response_frame),
- }),
- be_str_weak(parse_Pake1),
- &be_const_str_solidified,
- ( &(const binstruction[115]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x880C0301, // 0001 GETMBR R3 R1 K1
- 0x88100302, // 0002 GETMBR R4 R1 K2
- 0x54160021, // 0003 LDINT R5 34
- 0x20100805, // 0004 NE R4 R4 R5
- 0x74120005, // 0005 JMPT R4 #000C
- 0x88100303, // 0006 GETMBR R4 R1 K3
- 0x20100904, // 0007 NE R4 R4 K4
- 0x74120002, // 0008 JMPT R4 #000C
- 0x88100305, // 0009 GETMBR R4 R1 K5
- 0x20100904, // 000A NE R4 R4 K4
- 0x78120012, // 000B JMPF R4 #001F
- 0xB8120C00, // 000C GETNGBL R4 K6
- 0x8C100907, // 000D GETMET R4 R4 K7
- 0x58180008, // 000E LDCONST R6 K8
- 0x581C0009, // 000F LDCONST R7 K9
- 0x7C100600, // 0010 CALL R4 3
- 0xB8120C00, // 0011 GETNGBL R4 K6
- 0x8C100907, // 0012 GETMET R4 R4 K7
- 0x5818000A, // 0013 LDCONST R6 K10
- 0x581C0009, // 0014 LDCONST R7 K9
- 0x7C100600, // 0015 CALL R4 3
- 0x8C10010B, // 0016 GETMET R4 R0 K11
- 0x5C180200, // 0017 MOVE R6 R1
- 0x581C000C, // 0018 LDCONST R7 K12
- 0x58200004, // 0019 LDCONST R8 K4
- 0x5824000D, // 001A LDCONST R9 K13
- 0x50280000, // 001B LDBOOL R10 0 0
- 0x7C100C00, // 001C CALL R4 6
- 0x50100000, // 001D LDBOOL R4 0 0
- 0x80040800, // 001E RET 1 R4
- 0xB8121C00, // 001F GETNGBL R4 K14
- 0x8C10090F, // 0020 GETMET R4 R4 K15
- 0x7C100200, // 0021 CALL R4 1
- 0x8C100910, // 0022 GETMET R4 R4 K16
- 0x88180311, // 0023 GETMBR R6 R1 K17
- 0x881C0312, // 0024 GETMBR R7 R1 K18
- 0x7C100600, // 0025 CALL R4 3
- 0x88140913, // 0026 GETMBR R5 R4 K19
- 0x8C180514, // 0027 GETMET R6 R2 K20
- 0x88200115, // 0028 GETMBR R8 R0 K21
- 0x88201116, // 0029 GETMBR R8 R8 K22
- 0x4C240000, // 002A LDNIL R9
- 0x88280115, // 002B GETMBR R10 R0 K21
- 0x88281517, // 002C GETMBR R10 R10 K23
- 0x7C180800, // 002D CALL R6 4
- 0x8C1C0518, // 002E GETMET R7 R2 K24
- 0x5426001F, // 002F LDINT R9 32
- 0x7C1C0400, // 0030 CALL R7 2
- 0x8C200D19, // 0031 GETMET R8 R6 K25
- 0x5C280E00, // 0032 MOVE R10 R7
- 0x7C200400, // 0033 CALL R8 2
- 0x8C200D1A, // 0034 GETMET R8 R6 K26
- 0x5C280A00, // 0035 MOVE R10 R5
- 0x7C200400, // 0036 CALL R8 2
- 0x8C20051B, // 0037 GETMET R8 R2 K27
- 0x7C200200, // 0038 CALL R8 1
- 0x8C24111C, // 0039 GETMET R9 R8 K28
- 0x602C0015, // 003A GETGBL R11 G21
- 0x7C2C0000, // 003B CALL R11 0
- 0x8C2C171D, // 003C GETMET R11 R11 K29
- 0x8834011E, // 003D GETMBR R13 R0 K30
- 0x7C2C0400, // 003E CALL R11 2
- 0x7C240400, // 003F CALL R9 2
- 0x8C24111C, // 0040 GETMET R9 R8 K28
- 0x882C071F, // 0041 GETMBR R11 R3 K31
- 0x7C240400, // 0042 CALL R9 2
- 0x8C24111C, // 0043 GETMET R9 R8 K28
- 0x882C0720, // 0044 GETMBR R11 R3 K32
- 0x7C240400, // 0045 CALL R9 2
- 0x8C241121, // 0046 GETMET R9 R8 K33
- 0x7C240200, // 0047 CALL R9 1
- 0x901A2605, // 0048 SETMBR R6 K19 R5
- 0x8C280D22, // 0049 GETMET R10 R6 K34
- 0x5C301200, // 004A MOVE R12 R9
- 0x7C280400, // 004B CALL R10 2
- 0x8C280D23, // 004C GETMET R10 R6 K35
- 0x50300200, // 004D LDBOOL R12 1 0
- 0x7C280400, // 004E CALL R10 2
- 0xB82A1C00, // 004F GETNGBL R10 K14
- 0x8C281524, // 0050 GETMET R10 R10 K36
- 0x7C280200, // 0051 CALL R10 1
- 0x882C0D25, // 0052 GETMBR R11 R6 K37
- 0x902A4A0B, // 0053 SETMBR R10 K37 R11
- 0x882C0D26, // 0054 GETMBR R11 R6 K38
- 0x902A4C0B, // 0055 SETMBR R10 K38 R11
- 0x8C2C1527, // 0056 GETMET R11 R10 K39
- 0x7C2C0200, // 0057 CALL R11 1
- 0x88300D29, // 0058 GETMBR R12 R6 K41
- 0x900E500C, // 0059 SETMBR R3 K40 R12
- 0x88300D2B, // 005A GETMBR R12 R6 K43
- 0x900E540C, // 005B SETMBR R3 K42 R12
- 0x8C30032C, // 005C GETMET R12 R1 K44
- 0x543A0022, // 005D LDINT R14 35
- 0x503C0200, // 005E LDBOOL R15 1 0
- 0x7C300600, // 005F CALL R12 3
- 0x8C34192D, // 0060 GETMET R13 R12 K45
- 0x5C3C1600, // 0061 MOVE R15 R11
- 0x7C340400, // 0062 CALL R13 2
- 0xB83A0C00, // 0063 GETNGBL R14 K6
- 0x8C381D07, // 0064 GETMET R14 R14 K7
- 0x60400018, // 0065 GETGBL R16 G24
- 0x5844002E, // 0066 LDCONST R17 K46
- 0x8848072F, // 0067 GETMBR R18 R3 K47
- 0x884C0730, // 0068 GETMBR R19 R3 K48
- 0x88500731, // 0069 GETMBR R20 R3 K49
- 0x7C400800, // 006A CALL R16 4
- 0x5844000D, // 006B LDCONST R17 K13
- 0x7C380600, // 006C CALL R14 3
- 0x88380132, // 006D GETMBR R14 R0 K50
- 0x8C381D33, // 006E GETMET R14 R14 K51
- 0x5C401800, // 006F MOVE R16 R12
- 0x7C380400, // 0070 CALL R14 2
- 0x50380200, // 0071 LDBOOL R14 1 0
- 0x80041C00, // 0072 RET 1 R14
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_Commisioning_Context;
-be_local_closure(class_Matter_Commisioning_Context_init, /* name */
- be_nested_proto(
- 4, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Commisioning_Context,
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(responder),
- /* K2 */ be_nested_str_weak(device),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x90020201, // 0001 SETMBR R0 K1 R1
- 0x880C0302, // 0002 GETMBR R3 R1 K2
- 0x90020403, // 0003 SETMBR R0 K2 R3
- 0x80000000, // 0004 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_Pake3
-********************************************************************/
-extern const bclass be_class_Matter_Commisioning_Context;
-be_local_closure(class_Matter_Commisioning_Context_parse_Pake3, /* name */
- be_nested_proto(
- 19, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Commisioning_Context,
- 1, /* has constants */
- ( &(const bvalue[31]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(session),
- /* K2 */ be_nested_str_weak(opcode),
- /* K3 */ be_nested_str_weak(local_session_id),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(protocol_id),
- /* K6 */ be_nested_str_weak(tasmota),
- /* K7 */ be_nested_str_weak(log),
- /* K8 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake3_X20message),
- /* K9 */ be_const_int(3),
- /* K10 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29),
- /* K11 */ be_nested_str_weak(send_status_report),
- /* K12 */ be_const_int(1),
- /* K13 */ be_const_int(2),
- /* K14 */ be_nested_str_weak(matter),
- /* K15 */ be_nested_str_weak(Pake3),
- /* K16 */ be_nested_str_weak(parse),
- /* K17 */ be_nested_str_weak(raw),
- /* K18 */ be_nested_str_weak(app_payload_idx),
- /* K19 */ be_nested_str_weak(cA),
- /* K20 */ be_nested_str_weak(__spake_cA),
- /* K21 */ be_nested_str_weak(MTR_X3A_X20invalid_X20cA_X20received),
- /* K22 */ be_nested_str_weak(rtc_utc),
- /* K23 */ be_nested_str_weak(HKDF_SHA256),
- /* K24 */ be_nested_str_weak(derive),
- /* K25 */ be_nested_str_weak(__spake_Ke),
- /* K26 */ be_nested_str_weak(fromstring),
- /* K27 */ be_nested_str_weak(SEKeys_Info),
- /* K28 */ be_nested_str_weak(add_session),
- /* K29 */ be_nested_str_weak(__future_local_session_id),
- /* K30 */ be_nested_str_weak(__future_initiator_session_id),
- }),
- be_str_weak(parse_Pake3),
- &be_const_str_solidified,
- ( &(const binstruction[105]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x880C0301, // 0001 GETMBR R3 R1 K1
- 0x88100302, // 0002 GETMBR R4 R1 K2
- 0x54160023, // 0003 LDINT R5 36
- 0x20100805, // 0004 NE R4 R4 R5
- 0x74120005, // 0005 JMPT R4 #000C
- 0x88100303, // 0006 GETMBR R4 R1 K3
- 0x20100904, // 0007 NE R4 R4 K4
- 0x74120002, // 0008 JMPT R4 #000C
- 0x88100305, // 0009 GETMBR R4 R1 K5
- 0x20100904, // 000A NE R4 R4 K4
- 0x78120012, // 000B JMPF R4 #001F
- 0xB8120C00, // 000C GETNGBL R4 K6
- 0x8C100907, // 000D GETMET R4 R4 K7
- 0x58180008, // 000E LDCONST R6 K8
- 0x581C0009, // 000F LDCONST R7 K9
- 0x7C100600, // 0010 CALL R4 3
- 0xB8120C00, // 0011 GETNGBL R4 K6
- 0x8C100907, // 0012 GETMET R4 R4 K7
- 0x5818000A, // 0013 LDCONST R6 K10
- 0x581C0009, // 0014 LDCONST R7 K9
- 0x7C100600, // 0015 CALL R4 3
- 0x8C10010B, // 0016 GETMET R4 R0 K11
- 0x5C180200, // 0017 MOVE R6 R1
- 0x581C000C, // 0018 LDCONST R7 K12
- 0x58200004, // 0019 LDCONST R8 K4
- 0x5824000D, // 001A LDCONST R9 K13
- 0x50280000, // 001B LDBOOL R10 0 0
- 0x7C100C00, // 001C CALL R4 6
- 0x50100000, // 001D LDBOOL R4 0 0
- 0x80040800, // 001E RET 1 R4
- 0xB8121C00, // 001F GETNGBL R4 K14
- 0x8C10090F, // 0020 GETMET R4 R4 K15
- 0x7C100200, // 0021 CALL R4 1
- 0x8C100910, // 0022 GETMET R4 R4 K16
- 0x88180311, // 0023 GETMBR R6 R1 K17
- 0x881C0312, // 0024 GETMBR R7 R1 K18
- 0x7C100600, // 0025 CALL R4 3
- 0x88140913, // 0026 GETMBR R5 R4 K19
- 0x88180714, // 0027 GETMBR R6 R3 K20
- 0x20180A06, // 0028 NE R6 R5 R6
- 0x781A0012, // 0029 JMPF R6 #003D
- 0xB81A0C00, // 002A GETNGBL R6 K6
- 0x8C180D07, // 002B GETMET R6 R6 K7
- 0x58200015, // 002C LDCONST R8 K21
- 0x58240009, // 002D LDCONST R9 K9
- 0x7C180600, // 002E CALL R6 3
- 0xB81A0C00, // 002F GETNGBL R6 K6
- 0x8C180D07, // 0030 GETMET R6 R6 K7
- 0x5820000A, // 0031 LDCONST R8 K10
- 0x58240009, // 0032 LDCONST R9 K9
- 0x7C180600, // 0033 CALL R6 3
- 0x8C18010B, // 0034 GETMET R6 R0 K11
- 0x5C200200, // 0035 MOVE R8 R1
- 0x5824000C, // 0036 LDCONST R9 K12
- 0x58280004, // 0037 LDCONST R10 K4
- 0x582C000D, // 0038 LDCONST R11 K13
- 0x50300000, // 0039 LDBOOL R12 0 0
- 0x7C180C00, // 003A CALL R6 6
- 0x50180000, // 003B LDBOOL R6 0 0
- 0x80040C00, // 003C RET 1 R6
- 0xB81A0C00, // 003D GETNGBL R6 K6
- 0x8C180D16, // 003E GETMET R6 R6 K22
- 0x7C180200, // 003F CALL R6 1
- 0x8C1C0517, // 0040 GETMET R7 R2 K23
- 0x7C1C0200, // 0041 CALL R7 1
- 0x8C1C0F18, // 0042 GETMET R7 R7 K24
- 0x88240719, // 0043 GETMBR R9 R3 K25
- 0x60280015, // 0044 GETGBL R10 G21
- 0x7C280000, // 0045 CALL R10 0
- 0x602C0015, // 0046 GETGBL R11 G21
- 0x7C2C0000, // 0047 CALL R11 0
- 0x8C2C171A, // 0048 GETMET R11 R11 K26
- 0x8834011B, // 0049 GETMBR R13 R0 K27
- 0x7C2C0400, // 004A CALL R11 2
- 0x5432002F, // 004B LDINT R12 48
- 0x7C1C0A00, // 004C CALL R7 5
- 0x5422000E, // 004D LDINT R8 15
- 0x40220808, // 004E CONNECT R8 K4 R8
- 0x94200E08, // 004F GETIDX R8 R7 R8
- 0x5426000F, // 0050 LDINT R9 16
- 0x542A001E, // 0051 LDINT R10 31
- 0x4024120A, // 0052 CONNECT R9 R9 R10
- 0x94240E09, // 0053 GETIDX R9 R7 R9
- 0x542A001F, // 0054 LDINT R10 32
- 0x542E002E, // 0055 LDINT R11 47
- 0x4028140B, // 0056 CONNECT R10 R10 R11
- 0x94280E0A, // 0057 GETIDX R10 R7 R10
- 0x8C2C010B, // 0058 GETMET R11 R0 K11
- 0x5C340200, // 0059 MOVE R13 R1
- 0x58380004, // 005A LDCONST R14 K4
- 0x583C0004, // 005B LDCONST R15 K4
- 0x58400004, // 005C LDCONST R16 K4
- 0x50440000, // 005D LDBOOL R17 0 0
- 0x7C2C0C00, // 005E CALL R11 6
- 0x8C2C011C, // 005F GETMET R11 R0 K28
- 0x8834071D, // 0060 GETMBR R13 R3 K29
- 0x8838071E, // 0061 GETMBR R14 R3 K30
- 0x5C3C1000, // 0062 MOVE R15 R8
- 0x5C401200, // 0063 MOVE R16 R9
- 0x5C441400, // 0064 MOVE R17 R10
- 0x5C480C00, // 0065 MOVE R18 R6
- 0x7C2C0E00, // 0066 CALL R11 7
- 0x502C0200, // 0067 LDBOOL R11 1 0
- 0x80041600, // 0068 RET 1 R11
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_Sigma3
-********************************************************************/
-extern const bclass be_class_Matter_Commisioning_Context;
-be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */
- be_nested_proto(
- 36, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Commisioning_Context,
- 1, /* has constants */
- ( &(const bvalue[66]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(opcode),
- /* K2 */ be_nested_str_weak(local_session_id),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(protocol_id),
- /* K5 */ be_nested_str_weak(tasmota),
- /* K6 */ be_nested_str_weak(log),
- /* K7 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29),
- /* K8 */ be_const_int(3),
- /* K9 */ be_nested_str_weak(send_status_report),
- /* K10 */ be_const_int(1),
- /* K11 */ be_const_int(2),
- /* K12 */ be_nested_str_weak(session),
- /* K13 */ be_nested_str_weak(matter),
- /* K14 */ be_nested_str_weak(Sigma3),
- /* K15 */ be_nested_str_weak(parse),
- /* K16 */ be_nested_str_weak(raw),
- /* K17 */ be_nested_str_weak(app_payload_idx),
- /* K18 */ be_nested_str_weak(SHA256),
- /* K19 */ be_nested_str_weak(update),
- /* K20 */ be_nested_str_weak(__Msg1),
- /* K21 */ be_nested_str_weak(__Msg2),
- /* K22 */ be_nested_str_weak(out),
- /* K23 */ be_nested_str_weak(fromstring),
- /* K24 */ be_nested_str_weak(S3K_Info),
- /* K25 */ be_nested_str_weak(HKDF_SHA256),
- /* K26 */ be_nested_str_weak(derive),
- /* K27 */ be_nested_str_weak(shared_secret),
- /* K28 */ be_nested_str_weak(get_ipk_group_key),
- /* K29 */ be_nested_str_weak(TBEData3Encrypted),
- /* K30 */ be_const_int(2147483647),
- /* K31 */ be_nested_str_weak(AES_CCM),
- /* K32 */ be_nested_str_weak(TBEData3_Nonce),
- /* K33 */ be_nested_str_weak(decrypt),
- /* K34 */ be_nested_str_weak(tag),
- /* K35 */ be_nested_str_weak(MTR_X3A_X20Tag_X20don_X27t_X20match),
- /* K36 */ be_nested_str_weak(TLV),
- /* K37 */ be_nested_str_weak(findsubval),
- /* K38 */ be_nested_str_weak(findsub),
- /* K39 */ be_nested_str_weak(int),
- /* K40 */ be_nested_str_weak(peer_node_id),
- /* K41 */ be_nested_str_weak(int64),
- /* K42 */ be_nested_str_weak(fromu32),
- /* K43 */ be_nested_str_weak(tobytes),
- /* K44 */ be_nested_str_weak(Matter_TLV_struct),
- /* K45 */ be_nested_str_weak(add_TLV),
- /* K46 */ be_nested_str_weak(B1),
- /* K47 */ be_nested_str_weak(__initiator_pub),
- /* K48 */ be_nested_str_weak(__responder_pub),
- /* K49 */ be_nested_str_weak(tlv2raw),
- /* K50 */ be_nested_str_weak(EC_P256),
- /* K51 */ be_nested_str_weak(ecdsa_verify_sha256),
- /* K52 */ be_nested_str_weak(MTR_X3A_X20sigma3_tbs_X20does_X20not_X20have_X20a_X20valid_X20signature),
- /* K53 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X20Invalid_X20signature_X2C_X20trying_X20anyways),
- /* K54 */ be_nested_str_weak(MTR_X3A_X20Sigma3_X20verified_X2C_X20computing_X20new_X20keys),
- /* K55 */ be_nested_str_weak(Msg3),
- /* K56 */ be_nested_str_weak(SEKeys_Info),
- /* K57 */ be_nested_str_weak(rtc_utc),
- /* K58 */ be_nested_str_weak(close),
- /* K59 */ be_nested_str_weak(set_keys),
- /* K60 */ be_nested_str_weak(_breadcrumb),
- /* K61 */ be_nested_str_weak(counter_snd_next),
- /* K62 */ be_nested_str_weak(set_persist),
- /* K63 */ be_nested_str_weak(set_no_expiration),
- /* K64 */ be_nested_str_weak(persist_to_fabric),
- /* K65 */ be_nested_str_weak(save),
- }),
- be_str_weak(parse_Sigma3),
- &be_const_str_solidified,
- ( &(const binstruction[286]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x880C0301, // 0001 GETMBR R3 R1 K1
- 0x54120031, // 0002 LDINT R4 50
- 0x200C0604, // 0003 NE R3 R3 R4
- 0x740E0005, // 0004 JMPT R3 #000B
- 0x880C0302, // 0005 GETMBR R3 R1 K2
- 0x200C0703, // 0006 NE R3 R3 K3
- 0x740E0002, // 0007 JMPT R3 #000B
- 0x880C0304, // 0008 GETMBR R3 R1 K4
- 0x200C0703, // 0009 NE R3 R3 K3
- 0x780E000D, // 000A JMPF R3 #0019
- 0xB80E0A00, // 000B GETNGBL R3 K5
- 0x8C0C0706, // 000C GETMET R3 R3 K6
- 0x58140007, // 000D LDCONST R5 K7
- 0x58180008, // 000E LDCONST R6 K8
- 0x7C0C0600, // 000F CALL R3 3
- 0x8C0C0109, // 0010 GETMET R3 R0 K9
- 0x5C140200, // 0011 MOVE R5 R1
- 0x5818000A, // 0012 LDCONST R6 K10
- 0x581C0003, // 0013 LDCONST R7 K3
- 0x5820000B, // 0014 LDCONST R8 K11
- 0x50240000, // 0015 LDBOOL R9 0 0
- 0x7C0C0C00, // 0016 CALL R3 6
- 0x500C0000, // 0017 LDBOOL R3 0 0
- 0x80040600, // 0018 RET 1 R3
- 0x880C030C, // 0019 GETMBR R3 R1 K12
- 0xB8121A00, // 001A GETNGBL R4 K13
- 0x8C10090E, // 001B GETMET R4 R4 K14
- 0x7C100200, // 001C CALL R4 1
- 0x8C10090F, // 001D GETMET R4 R4 K15
- 0x88180310, // 001E GETMBR R6 R1 K16
- 0x881C0311, // 001F GETMBR R7 R1 K17
- 0x7C100600, // 0020 CALL R4 3
- 0x8C140512, // 0021 GETMET R5 R2 K18
- 0x7C140200, // 0022 CALL R5 1
- 0x8C140B13, // 0023 GETMET R5 R5 K19
- 0x881C0714, // 0024 GETMBR R7 R3 K20
- 0x7C140400, // 0025 CALL R5 2
- 0x8C140B13, // 0026 GETMET R5 R5 K19
- 0x881C0715, // 0027 GETMBR R7 R3 K21
- 0x7C140400, // 0028 CALL R5 2
- 0x8C140B16, // 0029 GETMET R5 R5 K22
- 0x7C140200, // 002A CALL R5 1
- 0x60180015, // 002B GETGBL R6 G21
- 0x7C180000, // 002C CALL R6 0
- 0x8C180D17, // 002D GETMET R6 R6 K23
- 0x88200118, // 002E GETMBR R8 R0 K24
- 0x7C180400, // 002F CALL R6 2
- 0x8C1C0519, // 0030 GETMET R7 R2 K25
- 0x7C1C0200, // 0031 CALL R7 1
- 0x8C1C0F1A, // 0032 GETMET R7 R7 K26
- 0x8824071B, // 0033 GETMBR R9 R3 K27
- 0x8C28071C, // 0034 GETMET R10 R3 K28
- 0x7C280200, // 0035 CALL R10 1
- 0x00281405, // 0036 ADD R10 R10 R5
- 0x5C2C0C00, // 0037 MOVE R11 R6
- 0x5432000F, // 0038 LDINT R12 16
- 0x7C1C0A00, // 0039 CALL R7 5
- 0x5421FFEE, // 003A LDINT R8 -17
- 0x40220608, // 003B CONNECT R8 K3 R8
- 0x8824091D, // 003C GETMBR R9 R4 K29
- 0x94201208, // 003D GETIDX R8 R9 R8
- 0x5429FFEF, // 003E LDINT R10 -16
- 0x4028151E, // 003F CONNECT R10 R10 K30
- 0x882C091D, // 0040 GETMBR R11 R4 K29
- 0x9424160A, // 0041 GETIDX R9 R11 R10
- 0x8C30051F, // 0042 GETMET R12 R2 K31
- 0x5C380E00, // 0043 MOVE R14 R7
- 0x603C0015, // 0044 GETGBL R15 G21
- 0x7C3C0000, // 0045 CALL R15 0
- 0x8C3C1F17, // 0046 GETMET R15 R15 K23
- 0x88440120, // 0047 GETMBR R17 R0 K32
- 0x7C3C0400, // 0048 CALL R15 2
- 0x60400015, // 0049 GETGBL R16 G21
- 0x7C400000, // 004A CALL R16 0
- 0x6044000C, // 004B GETGBL R17 G12
- 0x5C481000, // 004C MOVE R18 R8
- 0x7C440200, // 004D CALL R17 1
- 0x544A000F, // 004E LDINT R18 16
- 0x7C300C00, // 004F CALL R12 6
- 0x5C281800, // 0050 MOVE R10 R12
- 0x8C301521, // 0051 GETMET R12 R10 K33
- 0x5C381000, // 0052 MOVE R14 R8
- 0x7C300400, // 0053 CALL R12 2
- 0x5C2C1800, // 0054 MOVE R11 R12
- 0x8C301522, // 0055 GETMET R12 R10 K34
- 0x7C300200, // 0056 CALL R12 1
- 0x20341809, // 0057 NE R13 R12 R9
- 0x78360012, // 0058 JMPF R13 #006C
- 0xB8360A00, // 0059 GETNGBL R13 K5
- 0x8C341B06, // 005A GETMET R13 R13 K6
- 0x583C0023, // 005B LDCONST R15 K35
- 0x58400008, // 005C LDCONST R16 K8
- 0x7C340600, // 005D CALL R13 3
- 0xB8360A00, // 005E GETNGBL R13 K5
- 0x8C341B06, // 005F GETMET R13 R13 K6
- 0x583C0007, // 0060 LDCONST R15 K7
- 0x58400008, // 0061 LDCONST R16 K8
- 0x7C340600, // 0062 CALL R13 3
- 0x8C340109, // 0063 GETMET R13 R0 K9
- 0x5C3C0200, // 0064 MOVE R15 R1
- 0x5840000A, // 0065 LDCONST R16 K10
- 0x58440003, // 0066 LDCONST R17 K3
- 0x5848000B, // 0067 LDCONST R18 K11
- 0x504C0000, // 0068 LDBOOL R19 0 0
- 0x7C340C00, // 0069 CALL R13 6
- 0x50340000, // 006A LDBOOL R13 0 0
- 0x80041A00, // 006B RET 1 R13
- 0xB8361A00, // 006C GETNGBL R13 K13
- 0x88341B24, // 006D GETMBR R13 R13 K36
- 0x8C341B0F, // 006E GETMET R13 R13 K15
- 0x5C3C1600, // 006F MOVE R15 R11
- 0x7C340400, // 0070 CALL R13 2
- 0x8C381B25, // 0071 GETMET R14 R13 K37
- 0x5840000A, // 0072 LDCONST R16 K10
- 0x7C380400, // 0073 CALL R14 2
- 0x8C3C1B25, // 0074 GETMET R15 R13 K37
- 0x5844000B, // 0075 LDCONST R17 K11
- 0x7C3C0400, // 0076 CALL R15 2
- 0x8C401B25, // 0077 GETMET R16 R13 K37
- 0x58480008, // 0078 LDCONST R18 K8
- 0x7C400400, // 0079 CALL R16 2
- 0xB8461A00, // 007A GETNGBL R17 K13
- 0x88442324, // 007B GETMBR R17 R17 K36
- 0x8C44230F, // 007C GETMET R17 R17 K15
- 0x5C4C1C00, // 007D MOVE R19 R14
- 0x7C440400, // 007E CALL R17 2
- 0x8C482325, // 007F GETMET R18 R17 K37
- 0x54520008, // 0080 LDINT R20 9
- 0x7C480400, // 0081 CALL R18 2
- 0x8C4C2326, // 0082 GETMET R19 R17 K38
- 0x54560005, // 0083 LDINT R21 6
- 0x7C4C0400, // 0084 CALL R19 2
- 0x8C502725, // 0085 GETMET R20 R19 K37
- 0x545A0010, // 0086 LDINT R22 17
- 0x7C500400, // 0087 CALL R20 2
- 0x60540004, // 0088 GETGBL R21 G4
- 0x5C582800, // 0089 MOVE R22 R20
- 0x7C540200, // 008A CALL R21 1
- 0x1C542B27, // 008B EQ R21 R21 K39
- 0x78560007, // 008C JMPF R21 #0095
- 0xB8565200, // 008D GETNGBL R21 K41
- 0x8C542B2A, // 008E GETMET R21 R21 K42
- 0x5C5C2800, // 008F MOVE R23 R20
- 0x7C540400, // 0090 CALL R21 2
- 0x8C542B2B, // 0091 GETMET R21 R21 K43
- 0x7C540200, // 0092 CALL R21 1
- 0x900E5015, // 0093 SETMBR R3 K40 R21
- 0x70020002, // 0094 JMP #0098
- 0x8C54292B, // 0095 GETMET R21 R20 K43
- 0x7C540200, // 0096 CALL R21 1
- 0x900E5015, // 0097 SETMBR R3 K40 R21
- 0xB8561A00, // 0098 GETNGBL R21 K13
- 0x88542B24, // 0099 GETMBR R21 R21 K36
- 0x8C542B2C, // 009A GETMET R21 R21 K44
- 0x7C540200, // 009B CALL R21 1
- 0x8C582B2D, // 009C GETMET R22 R21 K45
- 0x5860000A, // 009D LDCONST R24 K10
- 0xB8661A00, // 009E GETNGBL R25 K13
- 0x88643324, // 009F GETMBR R25 R25 K36
- 0x8864332E, // 00A0 GETMBR R25 R25 K46
- 0x5C681C00, // 00A1 MOVE R26 R14
- 0x7C580800, // 00A2 CALL R22 4
- 0x8C582B2D, // 00A3 GETMET R22 R21 K45
- 0x5860000B, // 00A4 LDCONST R24 K11
- 0xB8661A00, // 00A5 GETNGBL R25 K13
- 0x88643324, // 00A6 GETMBR R25 R25 K36
- 0x8864332E, // 00A7 GETMBR R25 R25 K46
- 0x5C681E00, // 00A8 MOVE R26 R15
- 0x7C580800, // 00A9 CALL R22 4
- 0x8C582B2D, // 00AA GETMET R22 R21 K45
- 0x58600008, // 00AB LDCONST R24 K8
- 0xB8661A00, // 00AC GETNGBL R25 K13
- 0x88643324, // 00AD GETMBR R25 R25 K36
- 0x8864332E, // 00AE GETMBR R25 R25 K46
- 0x8868072F, // 00AF GETMBR R26 R3 K47
- 0x7C580800, // 00B0 CALL R22 4
- 0x8C582B2D, // 00B1 GETMET R22 R21 K45
- 0x54620003, // 00B2 LDINT R24 4
- 0xB8661A00, // 00B3 GETNGBL R25 K13
- 0x88643324, // 00B4 GETMBR R25 R25 K36
- 0x8864332E, // 00B5 GETMBR R25 R25 K46
- 0x88680730, // 00B6 GETMBR R26 R3 K48
- 0x7C580800, // 00B7 CALL R22 4
- 0x8C582B31, // 00B8 GETMET R22 R21 K49
- 0x7C580200, // 00B9 CALL R22 1
- 0x8C5C0532, // 00BA GETMET R23 R2 K50
- 0x7C5C0200, // 00BB CALL R23 1
- 0x8C5C2F33, // 00BC GETMET R23 R23 K51
- 0x5C642400, // 00BD MOVE R25 R18
- 0x5C682C00, // 00BE MOVE R26 R22
- 0x5C6C2000, // 00BF MOVE R27 R16
- 0x7C5C0800, // 00C0 CALL R23 4
- 0x5C602E00, // 00C1 MOVE R24 R23
- 0x7462000A, // 00C2 JMPT R24 #00CE
- 0xB8620A00, // 00C3 GETNGBL R24 K5
- 0x8C603106, // 00C4 GETMET R24 R24 K6
- 0x58680034, // 00C5 LDCONST R26 K52
- 0x586C000B, // 00C6 LDCONST R27 K11
- 0x7C600600, // 00C7 CALL R24 3
- 0xB8620A00, // 00C8 GETNGBL R24 K5
- 0x8C603106, // 00C9 GETMET R24 R24 K6
- 0x58680035, // 00CA LDCONST R26 K53
- 0x586C000B, // 00CB LDCONST R27 K11
- 0x7C600600, // 00CC CALL R24 3
- 0x70020004, // 00CD JMP #00D3
- 0xB8620A00, // 00CE GETNGBL R24 K5
- 0x8C603106, // 00CF GETMET R24 R24 K6
- 0x58680036, // 00D0 LDCONST R26 K54
- 0x586C0008, // 00D1 LDCONST R27 K8
- 0x7C600600, // 00D2 CALL R24 3
- 0x8C600512, // 00D3 GETMET R24 R2 K18
- 0x7C600200, // 00D4 CALL R24 1
- 0x8C603113, // 00D5 GETMET R24 R24 K19
- 0x88680714, // 00D6 GETMBR R26 R3 K20
- 0x7C600400, // 00D7 CALL R24 2
- 0x8C603113, // 00D8 GETMET R24 R24 K19
- 0x88680715, // 00D9 GETMBR R26 R3 K21
- 0x7C600400, // 00DA CALL R24 2
- 0x8C603113, // 00DB GETMET R24 R24 K19
- 0x88680937, // 00DC GETMBR R26 R4 K55
- 0x7C600400, // 00DD CALL R24 2
- 0x8C603116, // 00DE GETMET R24 R24 K22
- 0x7C600200, // 00DF CALL R24 1
- 0x5C143000, // 00E0 MOVE R5 R24
- 0x4C600000, // 00E1 LDNIL R24
- 0x900E2818, // 00E2 SETMBR R3 K20 R24
- 0x4C600000, // 00E3 LDNIL R24
- 0x900E2A18, // 00E4 SETMBR R3 K21 R24
- 0x8C600519, // 00E5 GETMET R24 R2 K25
- 0x7C600200, // 00E6 CALL R24 1
- 0x8C60311A, // 00E7 GETMET R24 R24 K26
- 0x8868071B, // 00E8 GETMBR R26 R3 K27
- 0x8C6C071C, // 00E9 GETMET R27 R3 K28
- 0x7C6C0200, // 00EA CALL R27 1
- 0x006C3605, // 00EB ADD R27 R27 R5
- 0x60700015, // 00EC GETGBL R28 G21
- 0x7C700000, // 00ED CALL R28 0
- 0x8C703917, // 00EE GETMET R28 R28 K23
- 0x88780138, // 00EF GETMBR R30 R0 K56
- 0x7C700400, // 00F0 CALL R28 2
- 0x5476002F, // 00F1 LDINT R29 48
- 0x7C600A00, // 00F2 CALL R24 5
- 0x5466000E, // 00F3 LDINT R25 15
- 0x40660619, // 00F4 CONNECT R25 K3 R25
- 0x94643019, // 00F5 GETIDX R25 R24 R25
- 0x546A000F, // 00F6 LDINT R26 16
- 0x546E001E, // 00F7 LDINT R27 31
- 0x4068341B, // 00F8 CONNECT R26 R26 R27
- 0x9468301A, // 00F9 GETIDX R26 R24 R26
- 0x546E001F, // 00FA LDINT R27 32
- 0x5472002E, // 00FB LDINT R28 47
- 0x406C361C, // 00FC CONNECT R27 R27 R28
- 0x946C301B, // 00FD GETIDX R27 R24 R27
- 0xB8720A00, // 00FE GETNGBL R28 K5
- 0x8C703939, // 00FF GETMET R28 R28 K57
- 0x7C700200, // 0100 CALL R28 1
- 0x8C740109, // 0101 GETMET R29 R0 K9
- 0x5C7C0200, // 0102 MOVE R31 R1
- 0x58800003, // 0103 LDCONST R32 K3
- 0x58840003, // 0104 LDCONST R33 K3
- 0x58880003, // 0105 LDCONST R34 K3
- 0x508C0200, // 0106 LDBOOL R35 1 0
- 0x7C740C00, // 0107 CALL R29 6
- 0x8C74073A, // 0108 GETMET R29 R3 K58
- 0x7C740200, // 0109 CALL R29 1
- 0x8C74073B, // 010A GETMET R29 R3 K59
- 0x5C7C3200, // 010B MOVE R31 R25
- 0x5C803400, // 010C MOVE R32 R26
- 0x5C843600, // 010D MOVE R33 R27
- 0x5C883800, // 010E MOVE R34 R28
- 0x7C740A00, // 010F CALL R29 5
- 0x900E7903, // 0110 SETMBR R3 K60 K3
- 0x8C74073D, // 0111 GETMET R29 R3 K61
- 0x7C740200, // 0112 CALL R29 1
- 0x8C74073E, // 0113 GETMET R29 R3 K62
- 0x507C0200, // 0114 LDBOOL R31 1 0
- 0x7C740400, // 0115 CALL R29 2
- 0x8C74073F, // 0116 GETMET R29 R3 K63
- 0x7C740200, // 0117 CALL R29 1
- 0x8C740740, // 0118 GETMET R29 R3 K64
- 0x7C740200, // 0119 CALL R29 1
- 0x8C740741, // 011A GETMET R29 R3 K65
- 0x7C740200, // 011B CALL R29 1
- 0x50740200, // 011C LDBOOL R29 1 0
- 0x80043A00, // 011D RET 1 R29
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: process_incoming
-********************************************************************/
-extern const bclass be_class_Matter_Commisioning_Context;
-be_local_closure(class_Matter_Commisioning_Context_process_incoming, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Commisioning_Context,
- 1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(device),
- /* K1 */ be_nested_str_weak(is_commissioning_open),
- /* K2 */ be_nested_str_weak(opcode),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(log),
- /* K5 */ be_nested_str_weak(MTR_X3A_X20commissioning_X20not_X20open),
- /* K6 */ be_const_int(2),
- /* K7 */ be_nested_str_weak(parse_PBKDFParamRequest),
- /* K8 */ be_nested_str_weak(parse_Pake1),
- /* K9 */ be_nested_str_weak(parse_Pake3),
- /* K10 */ be_nested_str_weak(parse_Sigma1),
- /* K11 */ be_nested_str_weak(parse_Sigma3),
- /* K12 */ be_nested_str_weak(parse_StatusReport),
- /* K13 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28secure_X20channel_X29_X20_X2502X),
- }),
- be_str_weak(process_incoming),
- &be_const_str_solidified,
- ( &(const binstruction[90]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x740A000E, // 0003 JMPT R2 #0013
- 0x88080302, // 0004 GETMBR R2 R1 K2
- 0x540E001F, // 0005 LDINT R3 32
- 0x28080403, // 0006 GE R2 R2 R3
- 0x780A000A, // 0007 JMPF R2 #0013
- 0x88080302, // 0008 GETMBR R2 R1 K2
- 0x540E0023, // 0009 LDINT R3 36
- 0x18080403, // 000A LE R2 R2 R3
- 0x780A0006, // 000B JMPF R2 #0013
- 0xB80A0600, // 000C GETNGBL R2 K3
- 0x8C080504, // 000D GETMET R2 R2 K4
- 0x58100005, // 000E LDCONST R4 K5
- 0x58140006, // 000F LDCONST R5 K6
- 0x7C080600, // 0010 CALL R2 3
- 0x50080000, // 0011 LDBOOL R2 0 0
- 0x80040400, // 0012 RET 1 R2
- 0x88080302, // 0013 GETMBR R2 R1 K2
- 0x540E000F, // 0014 LDINT R3 16
- 0x1C080403, // 0015 EQ R2 R2 R3
- 0x780A0000, // 0016 JMPF R2 #0018
- 0x7002003F, // 0017 JMP #0058
- 0x88080302, // 0018 GETMBR R2 R1 K2
- 0x540E001F, // 0019 LDINT R3 32
- 0x1C080403, // 001A EQ R2 R2 R3
- 0x780A0004, // 001B JMPF R2 #0021
- 0x8C080107, // 001C GETMET R2 R0 K7
- 0x5C100200, // 001D MOVE R4 R1
- 0x7C080400, // 001E CALL R2 2
- 0x80040400, // 001F RET 1 R2
- 0x70020036, // 0020 JMP #0058
- 0x88080302, // 0021 GETMBR R2 R1 K2
- 0x540E0021, // 0022 LDINT R3 34
- 0x1C080403, // 0023 EQ R2 R2 R3
- 0x780A0004, // 0024 JMPF R2 #002A
- 0x8C080108, // 0025 GETMET R2 R0 K8
- 0x5C100200, // 0026 MOVE R4 R1
- 0x7C080400, // 0027 CALL R2 2
- 0x80040400, // 0028 RET 1 R2
- 0x7002002D, // 0029 JMP #0058
- 0x88080302, // 002A GETMBR R2 R1 K2
- 0x540E0023, // 002B LDINT R3 36
- 0x1C080403, // 002C EQ R2 R2 R3
- 0x780A0004, // 002D JMPF R2 #0033
- 0x8C080109, // 002E GETMET R2 R0 K9
- 0x5C100200, // 002F MOVE R4 R1
- 0x7C080400, // 0030 CALL R2 2
- 0x80040400, // 0031 RET 1 R2
- 0x70020024, // 0032 JMP #0058
- 0x88080302, // 0033 GETMBR R2 R1 K2
- 0x540E002F, // 0034 LDINT R3 48
- 0x1C080403, // 0035 EQ R2 R2 R3
- 0x780A0004, // 0036 JMPF R2 #003C
- 0x8C08010A, // 0037 GETMET R2 R0 K10
- 0x5C100200, // 0038 MOVE R4 R1
- 0x7C080400, // 0039 CALL R2 2
- 0x80040400, // 003A RET 1 R2
- 0x7002001B, // 003B JMP #0058
- 0x88080302, // 003C GETMBR R2 R1 K2
- 0x540E0031, // 003D LDINT R3 50
- 0x1C080403, // 003E EQ R2 R2 R3
- 0x780A0004, // 003F JMPF R2 #0045
- 0x8C08010B, // 0040 GETMET R2 R0 K11
- 0x5C100200, // 0041 MOVE R4 R1
- 0x7C080400, // 0042 CALL R2 2
- 0x80040400, // 0043 RET 1 R2
- 0x70020012, // 0044 JMP #0058
- 0x88080302, // 0045 GETMBR R2 R1 K2
- 0x540E003F, // 0046 LDINT R3 64
- 0x1C080403, // 0047 EQ R2 R2 R3
- 0x780A0004, // 0048 JMPF R2 #004E
- 0x8C08010C, // 0049 GETMET R2 R0 K12
- 0x5C100200, // 004A MOVE R4 R1
- 0x7C080400, // 004B CALL R2 2
- 0x80040400, // 004C RET 1 R2
- 0x70020009, // 004D JMP #0058
- 0xB80A0600, // 004E GETNGBL R2 K3
- 0x8C080504, // 004F GETMET R2 R2 K4
- 0x60100018, // 0050 GETGBL R4 G24
- 0x5814000D, // 0051 LDCONST R5 K13
- 0x88180302, // 0052 GETMBR R6 R1 K2
- 0x7C100400, // 0053 CALL R4 2
- 0x58140006, // 0054 LDCONST R5 K6
- 0x7C080600, // 0055 CALL R2 3
- 0x50080000, // 0056 LDBOOL R2 0 0
- 0x80040400, // 0057 RET 1 R2
- 0x50080000, // 0058 LDBOOL R2 0 0
- 0x80040400, // 0059 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_Sigma1
-********************************************************************/
-extern const bclass be_class_Matter_Commisioning_Context;
-be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */
- be_nested_proto(
- 36, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Commisioning_Context,
- 1, /* has constants */
- ( &(const bvalue[103]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(session),
- /* K2 */ be_nested_str_weak(opcode),
- /* K3 */ be_nested_str_weak(local_session_id),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(protocol_id),
- /* K6 */ be_nested_str_weak(tasmota),
- /* K7 */ be_nested_str_weak(log),
- /* K8 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29),
- /* K9 */ be_const_int(3),
- /* K10 */ be_nested_str_weak(send_status_report),
- /* K11 */ be_const_int(1),
- /* K12 */ be_const_int(2),
- /* K13 */ be_nested_str_weak(matter),
- /* K14 */ be_nested_str_weak(Sigma1),
- /* K15 */ be_nested_str_weak(parse),
- /* K16 */ be_nested_str_weak(raw),
- /* K17 */ be_nested_str_weak(app_payload_idx),
- /* K18 */ be_nested_str_weak(__initiator_pub),
- /* K19 */ be_nested_str_weak(initiatorEphPubKey),
- /* K20 */ be_nested_str_weak(resumptionID),
- /* K21 */ be_nested_str_weak(initiatorResumeMIC),
- /* K22 */ be_nested_str_weak(device),
- /* K23 */ be_nested_str_weak(sessions),
- /* K24 */ be_nested_str_weak(find_session_by_resumption_id),
- /* K25 */ be_nested_str_weak(_fabric),
- /* K26 */ be_nested_str_weak(initiatorRandom),
- /* K27 */ be_nested_str_weak(fromstring),
- /* K28 */ be_nested_str_weak(Sigma1_Resume),
- /* K29 */ be_nested_str_weak(HKDF_SHA256),
- /* K30 */ be_nested_str_weak(derive),
- /* K31 */ be_nested_str_weak(shared_secret),
- /* K32 */ be_nested_str_weak(NCASE_SigmaS1),
- /* K33 */ be_const_int(2147483647),
- /* K34 */ be_nested_str_weak(AES_CCM),
- /* K35 */ be_nested_str_weak(decrypt),
- /* K36 */ be_nested_str_weak(tag),
- /* K37 */ be_nested_str_weak(_source_node_id),
- /* K38 */ be_nested_str_weak(source_node_id),
- /* K39 */ be_nested_str_weak(set_mode_CASE),
- /* K40 */ be_nested_str_weak(__future_initiator_session_id),
- /* K41 */ be_nested_str_weak(initiator_session_id),
- /* K42 */ be_nested_str_weak(__future_local_session_id),
- /* K43 */ be_nested_str_weak(gen_local_session_id),
- /* K44 */ be_nested_str_weak(MTR_X3A_X20_X2BSession_X20_X20_X20_X28_X256i_X29_X20from_X20_X27_X5B_X25s_X5D_X3A_X25i_X27),
- /* K45 */ be_nested_str_weak(remote_ip),
- /* K46 */ be_nested_str_weak(remote_port),
- /* K47 */ be_nested_str_weak(resumption_id),
- /* K48 */ be_nested_str_weak(random),
- /* K49 */ be_nested_str_weak(Sigma2_Resume),
- /* K50 */ be_nested_str_weak(NCASE_SigmaS2),
- /* K51 */ be_nested_str_weak(Sigma2Resume),
- /* K52 */ be_nested_str_weak(responderSessionID),
- /* K53 */ be_nested_str_weak(sigma2ResumeMIC),
- /* K54 */ be_nested_str_weak(SessionResumptionKeys),
- /* K55 */ be_nested_str_weak(rtc_utc),
- /* K56 */ be_nested_str_weak(tlv2raw),
- /* K57 */ be_nested_str_weak(__Msg1),
- /* K58 */ be_nested_str_weak(build_response),
- /* K59 */ be_nested_str_weak(encode_frame),
- /* K60 */ be_nested_str_weak(responder),
- /* K61 */ be_nested_str_weak(send_response_frame),
- /* K62 */ be_nested_str_weak(close),
- /* K63 */ be_nested_str_weak(set_keys),
- /* K64 */ be_nested_str_weak(_breadcrumb),
- /* K65 */ be_nested_str_weak(counter_snd_next),
- /* K66 */ be_nested_str_weak(set_persist),
- /* K67 */ be_nested_str_weak(set_no_expiration),
- /* K68 */ be_nested_str_weak(persist_to_fabric),
- /* K69 */ be_nested_str_weak(save),
- /* K70 */ be_nested_str_weak(find_fabric_by_destination_id),
- /* K71 */ be_nested_str_weak(destinationId),
- /* K72 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29),
- /* K73 */ be_nested_str_weak(__responder_priv),
- /* K74 */ be_nested_str_weak(__responder_pub),
- /* K75 */ be_nested_str_weak(EC_P256),
- /* K76 */ be_nested_str_weak(public_key),
- /* K77 */ be_nested_str_weak(shared_key),
- /* K78 */ be_nested_str_weak(TLV),
- /* K79 */ be_nested_str_weak(Matter_TLV_struct),
- /* K80 */ be_nested_str_weak(add_TLV),
- /* K81 */ be_nested_str_weak(B2),
- /* K82 */ be_nested_str_weak(get_noc),
- /* K83 */ be_nested_str_weak(get_icac),
- /* K84 */ be_nested_str_weak(ecdsa_sign_sha256),
- /* K85 */ be_nested_str_weak(get_pk),
- /* K86 */ be_nested_str_weak(Msg1),
- /* K87 */ be_nested_str_weak(SHA256),
- /* K88 */ be_nested_str_weak(update),
- /* K89 */ be_nested_str_weak(out),
- /* K90 */ be_nested_str_weak(S2K_Info),
- /* K91 */ be_nested_str_weak(get_ipk_group_key),
- /* K92 */ be_nested_str_weak(TBEData2_Nonce),
- /* K93 */ be_nested_str_weak(encrypt),
- /* K94 */ be_nested_str_weak(Sigma2),
- /* K95 */ be_nested_str_weak(responderRandom),
- /* K96 */ be_nested_str_weak(responderSessionId),
- /* K97 */ be_nested_str_weak(responderEphPubKey),
- /* K98 */ be_nested_str_weak(encrypted2),
- /* K99 */ be_nested_str_weak(__Msg2),
- /* K100 */ be_nested_str_weak(MTR_X3A_X20New_X20Connection_X20_X28CASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i),
- /* K101 */ be_nested_str_weak(_ip),
- /* K102 */ be_nested_str_weak(_port),
- }),
- be_str_weak(parse_Sigma1),
- &be_const_str_solidified,
- ( &(const binstruction[481]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x880C0301, // 0001 GETMBR R3 R1 K1
- 0x88100302, // 0002 GETMBR R4 R1 K2
- 0x5416002F, // 0003 LDINT R5 48
- 0x20100805, // 0004 NE R4 R4 R5
- 0x74120005, // 0005 JMPT R4 #000C
- 0x88100303, // 0006 GETMBR R4 R1 K3
- 0x20100904, // 0007 NE R4 R4 K4
- 0x74120002, // 0008 JMPT R4 #000C
- 0x88100305, // 0009 GETMBR R4 R1 K5
- 0x20100904, // 000A NE R4 R4 K4
- 0x7812000D, // 000B JMPF R4 #001A
- 0xB8120C00, // 000C GETNGBL R4 K6
- 0x8C100907, // 000D GETMET R4 R4 K7
- 0x58180008, // 000E LDCONST R6 K8
- 0x581C0009, // 000F LDCONST R7 K9
- 0x7C100600, // 0010 CALL R4 3
- 0x8C10010A, // 0011 GETMET R4 R0 K10
- 0x5C180200, // 0012 MOVE R6 R1
- 0x581C000B, // 0013 LDCONST R7 K11
- 0x58200004, // 0014 LDCONST R8 K4
- 0x5824000C, // 0015 LDCONST R9 K12
- 0x50280000, // 0016 LDBOOL R10 0 0
- 0x7C100C00, // 0017 CALL R4 6
- 0x50100000, // 0018 LDBOOL R4 0 0
- 0x80040800, // 0019 RET 1 R4
- 0xB8121A00, // 001A GETNGBL R4 K13
- 0x8C10090E, // 001B GETMET R4 R4 K14
- 0x7C100200, // 001C CALL R4 1
- 0x8C10090F, // 001D GETMET R4 R4 K15
- 0x88180310, // 001E GETMBR R6 R1 K16
- 0x881C0311, // 001F GETMBR R7 R1 K17
- 0x7C100600, // 0020 CALL R4 3
- 0x88140913, // 0021 GETMBR R5 R4 K19
- 0x900E2405, // 0022 SETMBR R3 K18 R5
- 0x88140914, // 0023 GETMBR R5 R4 K20
- 0x4C180000, // 0024 LDNIL R6
- 0x20140A06, // 0025 NE R5 R5 R6
- 0x78160003, // 0026 JMPF R5 #002B
- 0x88140915, // 0027 GETMBR R5 R4 K21
- 0x4C180000, // 0028 LDNIL R6
- 0x20140A06, // 0029 NE R5 R5 R6
- 0x74160000, // 002A JMPT R5 #002C
- 0x50140001, // 002B LDBOOL R5 0 1
- 0x50140200, // 002C LDBOOL R5 1 0
- 0x50140000, // 002D LDBOOL R5 0 0
- 0x4C180000, // 002E LDNIL R6
- 0x7816000D, // 002F JMPF R5 #003E
- 0x881C0116, // 0030 GETMBR R7 R0 K22
- 0x881C0F17, // 0031 GETMBR R7 R7 K23
- 0x8C1C0F18, // 0032 GETMET R7 R7 K24
- 0x88240914, // 0033 GETMBR R9 R4 K20
- 0x7C1C0400, // 0034 CALL R7 2
- 0x5C180E00, // 0035 MOVE R6 R7
- 0x4C1C0000, // 0036 LDNIL R7
- 0x1C1C0C07, // 0037 EQ R7 R6 R7
- 0x741E0003, // 0038 JMPT R7 #003D
- 0x881C0D19, // 0039 GETMBR R7 R6 K25
- 0x4C200000, // 003A LDNIL R8
- 0x1C1C0E08, // 003B EQ R7 R7 R8
- 0x781E0000, // 003C JMPF R7 #003E
- 0x50140000, // 003D LDBOOL R5 0 0
- 0x781600B5, // 003E JMPF R5 #00F5
- 0x881C091A, // 003F GETMBR R7 R4 K26
- 0x88200914, // 0040 GETMBR R8 R4 K20
- 0x001C0E08, // 0041 ADD R7 R7 R8
- 0x60200015, // 0042 GETGBL R8 G21
- 0x7C200000, // 0043 CALL R8 0
- 0x8C20111B, // 0044 GETMET R8 R8 K27
- 0x5828001C, // 0045 LDCONST R10 K28
- 0x7C200400, // 0046 CALL R8 2
- 0x8C24051D, // 0047 GETMET R9 R2 K29
- 0x7C240200, // 0048 CALL R9 1
- 0x8C24131E, // 0049 GETMET R9 R9 K30
- 0x882C0D1F, // 004A GETMBR R11 R6 K31
- 0x5C300E00, // 004B MOVE R12 R7
- 0x5C341000, // 004C MOVE R13 R8
- 0x543A000F, // 004D LDINT R14 16
- 0x7C240A00, // 004E CALL R9 5
- 0x60280015, // 004F GETGBL R10 G21
- 0x7C280000, // 0050 CALL R10 0
- 0x8C28151B, // 0051 GETMET R10 R10 K27
- 0x58300020, // 0052 LDCONST R12 K32
- 0x7C280400, // 0053 CALL R10 2
- 0x542DFFEE, // 0054 LDINT R11 -17
- 0x402E080B, // 0055 CONNECT R11 K4 R11
- 0x88300915, // 0056 GETMBR R12 R4 K21
- 0x942C180B, // 0057 GETIDX R11 R12 R11
- 0x5435FFEF, // 0058 LDINT R13 -16
- 0x40341B21, // 0059 CONNECT R13 R13 K33
- 0x88380915, // 005A GETMBR R14 R4 K21
- 0x94301C0D, // 005B GETIDX R12 R14 R13
- 0x8C3C0522, // 005C GETMET R15 R2 K34
- 0x5C441200, // 005D MOVE R17 R9
- 0x5C481400, // 005E MOVE R18 R10
- 0x604C0015, // 005F GETGBL R19 G21
- 0x7C4C0000, // 0060 CALL R19 0
- 0x6050000C, // 0061 GETGBL R20 G12
- 0x5C541600, // 0062 MOVE R21 R11
- 0x7C500200, // 0063 CALL R20 1
- 0x5456000F, // 0064 LDINT R21 16
- 0x7C3C0C00, // 0065 CALL R15 6
- 0x5C341E00, // 0066 MOVE R13 R15
- 0x8C3C1B23, // 0067 GETMET R15 R13 K35
- 0x5C441600, // 0068 MOVE R17 R11
- 0x7C3C0400, // 0069 CALL R15 2
- 0x5C381E00, // 006A MOVE R14 R15
- 0x8C3C1B24, // 006B GETMET R15 R13 K36
- 0x7C3C0200, // 006C CALL R15 1
- 0x1C40180F, // 006D EQ R16 R12 R15
- 0x78420084, // 006E JMPF R16 #00F4
- 0x88400D19, // 006F GETMBR R16 R6 K25
- 0x900E3210, // 0070 SETMBR R3 K25 R16
- 0x88400326, // 0071 GETMBR R16 R1 K38
- 0x900E4A10, // 0072 SETMBR R3 K37 R16
- 0x8C400727, // 0073 GETMET R16 R3 K39
- 0x7C400200, // 0074 CALL R16 1
- 0x88400929, // 0075 GETMBR R16 R4 K41
- 0x900E5010, // 0076 SETMBR R3 K40 R16
- 0x88400116, // 0077 GETMBR R16 R0 K22
- 0x88402117, // 0078 GETMBR R16 R16 K23
- 0x8C40212B, // 0079 GETMET R16 R16 K43
- 0x7C400200, // 007A CALL R16 1
- 0x900E5410, // 007B SETMBR R3 K42 R16
- 0xB8420C00, // 007C GETNGBL R16 K6
- 0x8C402107, // 007D GETMET R16 R16 K7
- 0x60480018, // 007E GETGBL R18 G24
- 0x584C002C, // 007F LDCONST R19 K44
- 0x8850072A, // 0080 GETMBR R20 R3 K42
- 0x8854032D, // 0081 GETMBR R21 R1 K45
- 0x8858032E, // 0082 GETMBR R22 R1 K46
- 0x7C480800, // 0083 CALL R18 4
- 0x584C0009, // 0084 LDCONST R19 K9
- 0x7C400600, // 0085 CALL R16 3
- 0x88400D1F, // 0086 GETMBR R16 R6 K31
- 0x900E3E10, // 0087 SETMBR R3 K31 R16
- 0x8C400530, // 0088 GETMET R16 R2 K48
- 0x544A000F, // 0089 LDINT R18 16
- 0x7C400400, // 008A CALL R16 2
- 0x900E5E10, // 008B SETMBR R3 K47 R16
- 0x60400015, // 008C GETGBL R16 G21
- 0x7C400000, // 008D CALL R16 0
- 0x8C40211B, // 008E GETMET R16 R16 K27
- 0x58480031, // 008F LDCONST R18 K49
- 0x7C400400, // 0090 CALL R16 2
- 0x8844091A, // 0091 GETMBR R17 R4 K26
- 0x8848072F, // 0092 GETMBR R18 R3 K47
- 0x00442212, // 0093 ADD R17 R17 R18
- 0x8C48051D, // 0094 GETMET R18 R2 K29
- 0x7C480200, // 0095 CALL R18 1
- 0x8C48251E, // 0096 GETMET R18 R18 K30
- 0x8850071F, // 0097 GETMBR R20 R3 K31
- 0x5C542200, // 0098 MOVE R21 R17
- 0x5C582000, // 0099 MOVE R22 R16
- 0x545E000F, // 009A LDINT R23 16
- 0x7C480A00, // 009B CALL R18 5
- 0x8C4C0522, // 009C GETMET R19 R2 K34
- 0x5C542400, // 009D MOVE R21 R18
- 0x60580015, // 009E GETGBL R22 G21
- 0x7C580000, // 009F CALL R22 0
- 0x8C582D1B, // 00A0 GETMET R22 R22 K27
- 0x58600032, // 00A1 LDCONST R24 K50
- 0x7C580400, // 00A2 CALL R22 2
- 0x605C0015, // 00A3 GETGBL R23 G21
- 0x7C5C0000, // 00A4 CALL R23 0
- 0x58600004, // 00A5 LDCONST R24 K4
- 0x5466000F, // 00A6 LDINT R25 16
- 0x7C4C0C00, // 00A7 CALL R19 6
- 0x8C502724, // 00A8 GETMET R20 R19 K36
- 0x7C500200, // 00A9 CALL R20 1
- 0xB8561A00, // 00AA GETNGBL R21 K13
- 0x8C542B33, // 00AB GETMET R21 R21 K51
- 0x7C540200, // 00AC CALL R21 1
- 0x8858072F, // 00AD GETMBR R22 R3 K47
- 0x90562816, // 00AE SETMBR R21 K20 R22
- 0x8858072A, // 00AF GETMBR R22 R3 K42
- 0x90566816, // 00B0 SETMBR R21 K52 R22
- 0x90566A14, // 00B1 SETMBR R21 K53 R20
- 0x8C58051D, // 00B2 GETMET R22 R2 K29
- 0x7C580200, // 00B3 CALL R22 1
- 0x8C582D1E, // 00B4 GETMET R22 R22 K30
- 0x8860071F, // 00B5 GETMBR R24 R3 K31
- 0x8864091A, // 00B6 GETMBR R25 R4 K26
- 0x8868072F, // 00B7 GETMBR R26 R3 K47
- 0x0064321A, // 00B8 ADD R25 R25 R26
- 0x60680015, // 00B9 GETGBL R26 G21
- 0x7C680000, // 00BA CALL R26 0
- 0x8C68351B, // 00BB GETMET R26 R26 K27
- 0x58700036, // 00BC LDCONST R28 K54
- 0x7C680400, // 00BD CALL R26 2
- 0x546E002F, // 00BE LDINT R27 48
- 0x7C580A00, // 00BF CALL R22 5
- 0x545E000E, // 00C0 LDINT R23 15
- 0x405E0817, // 00C1 CONNECT R23 K4 R23
- 0x945C2C17, // 00C2 GETIDX R23 R22 R23
- 0x5462000F, // 00C3 LDINT R24 16
- 0x5466001E, // 00C4 LDINT R25 31
- 0x40603019, // 00C5 CONNECT R24 R24 R25
- 0x94602C18, // 00C6 GETIDX R24 R22 R24
- 0x5466001F, // 00C7 LDINT R25 32
- 0x546A002E, // 00C8 LDINT R26 47
- 0x4064321A, // 00C9 CONNECT R25 R25 R26
- 0x94642C19, // 00CA GETIDX R25 R22 R25
- 0xB86A0C00, // 00CB GETNGBL R26 K6
- 0x8C683537, // 00CC GETMET R26 R26 K55
- 0x7C680200, // 00CD CALL R26 1
- 0x8C6C2B38, // 00CE GETMET R27 R21 K56
- 0x7C6C0200, // 00CF CALL R27 1
- 0x4C700000, // 00D0 LDNIL R28
- 0x900E721C, // 00D1 SETMBR R3 K57 R28
- 0x8C70033A, // 00D2 GETMET R28 R1 K58
- 0x547A0032, // 00D3 LDINT R30 51
- 0x507C0200, // 00D4 LDBOOL R31 1 0
- 0x7C700600, // 00D5 CALL R28 3
- 0x8C74393B, // 00D6 GETMET R29 R28 K59
- 0x5C7C3600, // 00D7 MOVE R31 R27
- 0x7C740400, // 00D8 CALL R29 2
- 0x8878013C, // 00D9 GETMBR R30 R0 K60
- 0x8C783D3D, // 00DA GETMET R30 R30 K61
- 0x5C803800, // 00DB MOVE R32 R28
- 0x7C780400, // 00DC CALL R30 2
- 0x8C78073E, // 00DD GETMET R30 R3 K62
- 0x7C780200, // 00DE CALL R30 1
- 0x8C78073F, // 00DF GETMET R30 R3 K63
- 0x5C802E00, // 00E0 MOVE R32 R23
- 0x5C843000, // 00E1 MOVE R33 R24
- 0x5C883200, // 00E2 MOVE R34 R25
- 0x5C8C3400, // 00E3 MOVE R35 R26
- 0x7C780A00, // 00E4 CALL R30 5
- 0x900E8104, // 00E5 SETMBR R3 K64 K4
- 0x8C780741, // 00E6 GETMET R30 R3 K65
- 0x7C780200, // 00E7 CALL R30 1
- 0x8C780742, // 00E8 GETMET R30 R3 K66
- 0x50800200, // 00E9 LDBOOL R32 1 0
- 0x7C780400, // 00EA CALL R30 2
- 0x8C780743, // 00EB GETMET R30 R3 K67
- 0x7C780200, // 00EC CALL R30 1
- 0x8C780744, // 00ED GETMET R30 R3 K68
- 0x7C780200, // 00EE CALL R30 1
- 0x8C780745, // 00EF GETMET R30 R3 K69
- 0x7C780200, // 00F0 CALL R30 1
- 0x50780200, // 00F1 LDBOOL R30 1 0
- 0x80043C00, // 00F2 RET 1 R30
- 0x70020000, // 00F3 JMP #00F5
- 0x50140000, // 00F4 LDBOOL R5 0 0
- 0x5C1C0A00, // 00F5 MOVE R7 R5
- 0x741E00E7, // 00F6 JMPT R7 #01DF
- 0x8C1C0146, // 00F7 GETMET R7 R0 K70
- 0x88240947, // 00F8 GETMBR R9 R4 K71
- 0x8828091A, // 00F9 GETMBR R10 R4 K26
- 0x7C1C0600, // 00FA CALL R7 3
- 0x900E3207, // 00FB SETMBR R3 K25 R7
- 0x4C200000, // 00FC LDNIL R8
- 0x1C200608, // 00FD EQ R8 R3 R8
- 0x74220003, // 00FE JMPT R8 #0103
- 0x88200719, // 00FF GETMBR R8 R3 K25
- 0x4C240000, // 0100 LDNIL R9
- 0x1C201009, // 0101 EQ R8 R8 R9
- 0x7822000D, // 0102 JMPF R8 #0111
- 0xB8220C00, // 0103 GETNGBL R8 K6
- 0x8C201107, // 0104 GETMET R8 R8 K7
- 0x58280048, // 0105 LDCONST R10 K72
- 0x582C0009, // 0106 LDCONST R11 K9
- 0x7C200600, // 0107 CALL R8 3
- 0x8C20010A, // 0108 GETMET R8 R0 K10
- 0x5C280200, // 0109 MOVE R10 R1
- 0x582C000B, // 010A LDCONST R11 K11
- 0x58300004, // 010B LDCONST R12 K4
- 0x5834000B, // 010C LDCONST R13 K11
- 0x50380000, // 010D LDBOOL R14 0 0
- 0x7C200C00, // 010E CALL R8 6
- 0x50200000, // 010F LDBOOL R8 0 0
- 0x80041000, // 0110 RET 1 R8
- 0x88200326, // 0111 GETMBR R8 R1 K38
- 0x900E4A08, // 0112 SETMBR R3 K37 R8
- 0x8C200727, // 0113 GETMET R8 R3 K39
- 0x7C200200, // 0114 CALL R8 1
- 0x88200929, // 0115 GETMBR R8 R4 K41
- 0x900E5008, // 0116 SETMBR R3 K40 R8
- 0x88200116, // 0117 GETMBR R8 R0 K22
- 0x88201117, // 0118 GETMBR R8 R8 K23
- 0x8C20112B, // 0119 GETMET R8 R8 K43
- 0x7C200200, // 011A CALL R8 1
- 0x900E5408, // 011B SETMBR R3 K42 R8
- 0xB8220C00, // 011C GETNGBL R8 K6
- 0x8C201107, // 011D GETMET R8 R8 K7
- 0x60280018, // 011E GETGBL R10 G24
- 0x582C002C, // 011F LDCONST R11 K44
- 0x8830072A, // 0120 GETMBR R12 R3 K42
- 0x8834032D, // 0121 GETMBR R13 R1 K45
- 0x8838032E, // 0122 GETMBR R14 R1 K46
- 0x7C280800, // 0123 CALL R10 4
- 0x582C0009, // 0124 LDCONST R11 K9
- 0x7C200600, // 0125 CALL R8 3
- 0x8C200530, // 0126 GETMET R8 R2 K48
- 0x542A000F, // 0127 LDINT R10 16
- 0x7C200400, // 0128 CALL R8 2
- 0x900E5E08, // 0129 SETMBR R3 K47 R8
- 0x8C200530, // 012A GETMET R8 R2 K48
- 0x542A001F, // 012B LDINT R10 32
- 0x7C200400, // 012C CALL R8 2
- 0x900E9208, // 012D SETMBR R3 K73 R8
- 0x8C20054B, // 012E GETMET R8 R2 K75
- 0x7C200200, // 012F CALL R8 1
- 0x8C20114C, // 0130 GETMET R8 R8 K76
- 0x88280749, // 0131 GETMBR R10 R3 K73
- 0x7C200400, // 0132 CALL R8 2
- 0x900E9408, // 0133 SETMBR R3 K74 R8
- 0x8C200530, // 0134 GETMET R8 R2 K48
- 0x542A001F, // 0135 LDINT R10 32
- 0x7C200400, // 0136 CALL R8 2
- 0x8C24054B, // 0137 GETMET R9 R2 K75
- 0x7C240200, // 0138 CALL R9 1
- 0x8C24134D, // 0139 GETMET R9 R9 K77
- 0x882C0749, // 013A GETMBR R11 R3 K73
- 0x88300913, // 013B GETMBR R12 R4 K19
- 0x7C240600, // 013C CALL R9 3
- 0x900E3E09, // 013D SETMBR R3 K31 R9
- 0xB8261A00, // 013E GETNGBL R9 K13
- 0x8824134E, // 013F GETMBR R9 R9 K78
- 0x8C24134F, // 0140 GETMET R9 R9 K79
- 0x7C240200, // 0141 CALL R9 1
- 0x8C281350, // 0142 GETMET R10 R9 K80
- 0x5830000B, // 0143 LDCONST R12 K11
- 0xB8361A00, // 0144 GETNGBL R13 K13
- 0x88341B4E, // 0145 GETMBR R13 R13 K78
- 0x88341B51, // 0146 GETMBR R13 R13 K81
- 0x8C380F52, // 0147 GETMET R14 R7 K82
- 0x7C380200, // 0148 CALL R14 1
- 0x7C280800, // 0149 CALL R10 4
- 0x8C281350, // 014A GETMET R10 R9 K80
- 0x5830000C, // 014B LDCONST R12 K12
- 0xB8361A00, // 014C GETNGBL R13 K13
- 0x88341B4E, // 014D GETMBR R13 R13 K78
- 0x88341B51, // 014E GETMBR R13 R13 K81
- 0x8C380F53, // 014F GETMET R14 R7 K83
- 0x7C380200, // 0150 CALL R14 1
- 0x7C280800, // 0151 CALL R10 4
- 0x8C281350, // 0152 GETMET R10 R9 K80
- 0x58300009, // 0153 LDCONST R12 K9
- 0xB8361A00, // 0154 GETNGBL R13 K13
- 0x88341B4E, // 0155 GETMBR R13 R13 K78
- 0x88341B51, // 0156 GETMBR R13 R13 K81
- 0x8838074A, // 0157 GETMBR R14 R3 K74
- 0x7C280800, // 0158 CALL R10 4
- 0x8C281350, // 0159 GETMET R10 R9 K80
- 0x54320003, // 015A LDINT R12 4
- 0xB8361A00, // 015B GETNGBL R13 K13
- 0x88341B4E, // 015C GETMBR R13 R13 K78
- 0x88341B51, // 015D GETMBR R13 R13 K81
- 0x88380913, // 015E GETMBR R14 R4 K19
- 0x7C280800, // 015F CALL R10 4
- 0x8C28054B, // 0160 GETMET R10 R2 K75
- 0x7C280200, // 0161 CALL R10 1
- 0x8C281554, // 0162 GETMET R10 R10 K84
- 0x8C300F55, // 0163 GETMET R12 R7 K85
- 0x7C300200, // 0164 CALL R12 1
- 0x8C341338, // 0165 GETMET R13 R9 K56
- 0x7C340200, // 0166 CALL R13 1
- 0x7C280600, // 0167 CALL R10 3
- 0xB82E1A00, // 0168 GETNGBL R11 K13
- 0x882C174E, // 0169 GETMBR R11 R11 K78
- 0x8C2C174F, // 016A GETMET R11 R11 K79
- 0x7C2C0200, // 016B CALL R11 1
- 0x8C301750, // 016C GETMET R12 R11 K80
- 0x5838000B, // 016D LDCONST R14 K11
- 0xB83E1A00, // 016E GETNGBL R15 K13
- 0x883C1F4E, // 016F GETMBR R15 R15 K78
- 0x883C1F51, // 0170 GETMBR R15 R15 K81
- 0x8C400F52, // 0171 GETMET R16 R7 K82
- 0x7C400200, // 0172 CALL R16 1
- 0x7C300800, // 0173 CALL R12 4
- 0x8C301750, // 0174 GETMET R12 R11 K80
- 0x5838000C, // 0175 LDCONST R14 K12
- 0xB83E1A00, // 0176 GETNGBL R15 K13
- 0x883C1F4E, // 0177 GETMBR R15 R15 K78
- 0x883C1F51, // 0178 GETMBR R15 R15 K81
- 0x8C400F53, // 0179 GETMET R16 R7 K83
- 0x7C400200, // 017A CALL R16 1
- 0x7C300800, // 017B CALL R12 4
- 0x8C301750, // 017C GETMET R12 R11 K80
- 0x58380009, // 017D LDCONST R14 K9
- 0xB83E1A00, // 017E GETNGBL R15 K13
- 0x883C1F4E, // 017F GETMBR R15 R15 K78
- 0x883C1F51, // 0180 GETMBR R15 R15 K81
- 0x5C401400, // 0181 MOVE R16 R10
- 0x7C300800, // 0182 CALL R12 4
- 0x8C301750, // 0183 GETMET R12 R11 K80
- 0x543A0003, // 0184 LDINT R14 4
- 0xB83E1A00, // 0185 GETNGBL R15 K13
- 0x883C1F4E, // 0186 GETMBR R15 R15 K78
- 0x883C1F51, // 0187 GETMBR R15 R15 K81
- 0x8840072F, // 0188 GETMBR R16 R3 K47
- 0x7C300800, // 0189 CALL R12 4
- 0x88300956, // 018A GETMBR R12 R4 K86
- 0x900E720C, // 018B SETMBR R3 K57 R12
- 0x8C300557, // 018C GETMET R12 R2 K87
- 0x7C300200, // 018D CALL R12 1
- 0x8C301958, // 018E GETMET R12 R12 K88
- 0x88380739, // 018F GETMBR R14 R3 K57
- 0x7C300400, // 0190 CALL R12 2
- 0x8C301959, // 0191 GETMET R12 R12 K89
- 0x7C300200, // 0192 CALL R12 1
- 0x60340015, // 0193 GETGBL R13 G21
- 0x7C340000, // 0194 CALL R13 0
- 0x8C341B1B, // 0195 GETMET R13 R13 K27
- 0x883C015A, // 0196 GETMBR R15 R0 K90
- 0x7C340400, // 0197 CALL R13 2
- 0x8C380F5B, // 0198 GETMET R14 R7 K91
- 0x7C380200, // 0199 CALL R14 1
- 0x00381C08, // 019A ADD R14 R14 R8
- 0x883C074A, // 019B GETMBR R15 R3 K74
- 0x00381C0F, // 019C ADD R14 R14 R15
- 0x00381C0C, // 019D ADD R14 R14 R12
- 0x8C3C051D, // 019E GETMET R15 R2 K29
- 0x7C3C0200, // 019F CALL R15 1
- 0x8C3C1F1E, // 01A0 GETMET R15 R15 K30
- 0x8844071F, // 01A1 GETMBR R17 R3 K31
- 0x5C481C00, // 01A2 MOVE R18 R14
- 0x5C4C1A00, // 01A3 MOVE R19 R13
- 0x5452000F, // 01A4 LDINT R20 16
- 0x7C3C0A00, // 01A5 CALL R15 5
- 0x8C401738, // 01A6 GETMET R16 R11 K56
- 0x7C400200, // 01A7 CALL R16 1
- 0x8C440522, // 01A8 GETMET R17 R2 K34
- 0x5C4C1E00, // 01A9 MOVE R19 R15
- 0x60500015, // 01AA GETGBL R20 G21
- 0x7C500000, // 01AB CALL R20 0
- 0x8C50291B, // 01AC GETMET R20 R20 K27
- 0x8858015C, // 01AD GETMBR R22 R0 K92
- 0x7C500400, // 01AE CALL R20 2
- 0x60540015, // 01AF GETGBL R21 G21
- 0x7C540000, // 01B0 CALL R21 0
- 0x6058000C, // 01B1 GETGBL R22 G12
- 0x5C5C2000, // 01B2 MOVE R23 R16
- 0x7C580200, // 01B3 CALL R22 1
- 0x545E000F, // 01B4 LDINT R23 16
- 0x7C440C00, // 01B5 CALL R17 6
- 0x8C48235D, // 01B6 GETMET R18 R17 K93
- 0x5C502000, // 01B7 MOVE R20 R16
- 0x7C480400, // 01B8 CALL R18 2
- 0x8C4C2324, // 01B9 GETMET R19 R17 K36
- 0x7C4C0200, // 01BA CALL R19 1
- 0x00482413, // 01BB ADD R18 R18 R19
- 0xB84E1A00, // 01BC GETNGBL R19 K13
- 0x8C4C275E, // 01BD GETMET R19 R19 K94
- 0x7C4C0200, // 01BE CALL R19 1
- 0x904EBE08, // 01BF SETMBR R19 K95 R8
- 0x8850072A, // 01C0 GETMBR R20 R3 K42
- 0x904EC014, // 01C1 SETMBR R19 K96 R20
- 0x8850074A, // 01C2 GETMBR R20 R3 K74
- 0x904EC214, // 01C3 SETMBR R19 K97 R20
- 0x904EC412, // 01C4 SETMBR R19 K98 R18
- 0x8C502738, // 01C5 GETMET R20 R19 K56
- 0x7C500200, // 01C6 CALL R20 1
- 0x900EC614, // 01C7 SETMBR R3 K99 R20
- 0x8C54033A, // 01C8 GETMET R21 R1 K58
- 0x545E0030, // 01C9 LDINT R23 49
- 0x50600200, // 01CA LDBOOL R24 1 0
- 0x7C540600, // 01CB CALL R21 3
- 0x8C582B3B, // 01CC GETMET R22 R21 K59
- 0x5C602800, // 01CD MOVE R24 R20
- 0x7C580400, // 01CE CALL R22 2
- 0xB85E0C00, // 01CF GETNGBL R23 K6
- 0x8C5C2F07, // 01D0 GETMET R23 R23 K7
- 0x60640018, // 01D1 GETGBL R25 G24
- 0x58680064, // 01D2 LDCONST R26 K100
- 0x886C072A, // 01D3 GETMBR R27 R3 K42
- 0x88700765, // 01D4 GETMBR R28 R3 K101
- 0x88740766, // 01D5 GETMBR R29 R3 K102
- 0x7C640800, // 01D6 CALL R25 4
- 0x5868000C, // 01D7 LDCONST R26 K12
- 0x7C5C0600, // 01D8 CALL R23 3
- 0x885C013C, // 01D9 GETMBR R23 R0 K60
- 0x8C5C2F3D, // 01DA GETMET R23 R23 K61
- 0x5C642A00, // 01DB MOVE R25 R21
- 0x7C5C0400, // 01DC CALL R23 2
- 0x505C0200, // 01DD LDBOOL R23 1 0
- 0x80042E00, // 01DE RET 1 R23
- 0x501C0200, // 01DF LDBOOL R7 1 0
- 0x80040E00, // 01E0 RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Commisioning_Context
-********************************************************************/
-be_local_class(Matter_Commisioning_Context,
- 2,
- NULL,
- be_nested_map(20,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_Commisioning_Context_every_second_closure) },
- { be_const_key_weak(parse_StatusReport, -1), be_const_closure(class_Matter_Commisioning_Context_parse_StatusReport_closure) },
- { be_const_key_weak(S2K_Info, -1), be_nested_str_weak(Sigma2) },
- { be_const_key_weak(find_fabric_by_destination_id, -1), be_const_closure(class_Matter_Commisioning_Context_find_fabric_by_destination_id_closure) },
- { be_const_key_weak(process_incoming, 18), be_const_closure(class_Matter_Commisioning_Context_process_incoming_closure) },
- { be_const_key_weak(Matter_Context_Prefix, 0), be_nested_str_weak(CHIP_X20PAKE_X20V1_X20Commissioning) },
- { be_const_key_weak(SEKeys_Info, -1), be_nested_str_weak(SessionKeys) },
- { be_const_key_weak(TBEData3_Nonce, 4), be_nested_str_weak(NCASE_Sigma3N) },
- { be_const_key_weak(parse_PBKDFParamRequest, -1), be_const_closure(class_Matter_Commisioning_Context_parse_PBKDFParamRequest_closure) },
- { be_const_key_weak(send_status_report, -1), be_const_closure(class_Matter_Commisioning_Context_send_status_report_closure) },
- { be_const_key_weak(parse_Sigma3, -1), be_const_closure(class_Matter_Commisioning_Context_parse_Sigma3_closure) },
- { be_const_key_weak(device, -1), be_const_var(1) },
- { be_const_key_weak(TBEData2_Nonce, -1), be_nested_str_weak(NCASE_Sigma2N) },
- { be_const_key_weak(responder, 16), be_const_var(0) },
- { be_const_key_weak(parse_Pake3, -1), be_const_closure(class_Matter_Commisioning_Context_parse_Pake3_closure) },
- { be_const_key_weak(init, 14), be_const_closure(class_Matter_Commisioning_Context_init_closure) },
- { be_const_key_weak(parse_Pake1, -1), be_const_closure(class_Matter_Commisioning_Context_parse_Pake1_closure) },
- { be_const_key_weak(S3K_Info, 10), be_nested_str_weak(Sigma3) },
- { be_const_key_weak(add_session, -1), be_const_closure(class_Matter_Commisioning_Context_add_session_closure) },
- { be_const_key_weak(parse_Sigma1, -1), be_const_closure(class_Matter_Commisioning_Context_parse_Sigma1_closure) },
- })),
- be_str_weak(Matter_Commisioning_Context)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Context.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Context.h
new file mode 100644
index 000000000..944e0a787
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Context.h
@@ -0,0 +1,1845 @@
+/* Solidification of Matter_Commissioning_Context.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+// compact class 'Matter_Commisioning_Context' ktab size: 185, total: 362 (saved 1416 bytes)
+static const bvalue be_ktab_class_Matter_Commisioning_Context[185] = {
+ /* K0 */ be_nested_str_weak(session),
+ /* K1 */ be_nested_str_weak(raw),
+ /* K2 */ be_nested_str_weak(app_payload_idx),
+ /* K3 */ be_const_int(2147483647),
+ /* K4 */ be_nested_str_weak(tohex),
+ /* K5 */ be_nested_str_weak(log),
+ /* K6 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20_X25s),
+ /* K7 */ be_nested_str_weak(0000000000000000),
+ /* K8 */ be_const_int(3),
+ /* K9 */ be_nested_str_weak(crypto),
+ /* K10 */ be_nested_str_weak(tasmota),
+ /* K11 */ be_nested_str_weak(loglevel),
+ /* K12 */ be_nested_str_weak(MTR_X3A_X20SEARCHING_X3A_X20destinationId_X3D),
+ /* K13 */ be_nested_str_weak(device),
+ /* K14 */ be_nested_str_weak(sessions),
+ /* K15 */ be_nested_str_weak(fabrics),
+ /* K16 */ be_nested_str_weak(noc),
+ /* K17 */ be_nested_str_weak(fabric_id),
+ /* K18 */ be_nested_str_weak(device_id),
+ /* K19 */ be_nested_str_weak(get_ca_pub),
+ /* K20 */ be_nested_str_weak(get_ipk_group_key),
+ /* K21 */ be_nested_str_weak(HMAC_SHA256),
+ /* K22 */ be_nested_str_weak(update),
+ /* K23 */ be_nested_str_weak(out),
+ /* K24 */ be_nested_str_weak(MTR_X3A_X20SIGMA1_X3A_X20candidateDestinationId_X3D),
+ /* K25 */ be_nested_str_weak(stop_iteration),
+ /* K26 */ be_nested_str_weak(MTR_X3A_X20add_session_X20local_session_id_X3D_X25i_X20initiator_session_id_X3D_X25i),
+ /* K27 */ be_nested_str_weak(create_session),
+ /* K28 */ be_nested_str_weak(set_keys),
+ /* K29 */ be_nested_str_weak(opcode),
+ /* K30 */ be_nested_str_weak(local_session_id),
+ /* K31 */ be_const_int(0),
+ /* K32 */ be_nested_str_weak(protocol_id),
+ /* K33 */ be_nested_str_weak(MTR_X3A_X20invalid_X20PBKDFParamRequest_X20message),
+ /* K34 */ be_const_int(2),
+ /* K35 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28General_X20Code_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20INVALID_PARAMETER_X29),
+ /* K36 */ be_nested_str_weak(send_status_report),
+ /* K37 */ be_const_int(1),
+ /* K38 */ be_nested_str_weak(matter),
+ /* K39 */ be_nested_str_weak(PBKDFParamRequest),
+ /* K40 */ be_nested_str_weak(parse),
+ /* K41 */ be_nested_str_weak(set_mode_PASE),
+ /* K42 */ be_nested_str_weak(__Msg1),
+ /* K43 */ be_nested_str_weak(passcodeId),
+ /* K44 */ be_nested_str_weak(MTR_X3A_X20non_X2Dzero_X20passcode_X20id),
+ /* K45 */ be_nested_str_weak(__future_initiator_session_id),
+ /* K46 */ be_nested_str_weak(initiator_session_id),
+ /* K47 */ be_nested_str_weak(__future_local_session_id),
+ /* K48 */ be_nested_str_weak(gen_local_session_id),
+ /* K49 */ be_nested_str_weak(MTR_X3A_X20_X2BSession_X20_X20_X20_X28_X256i_X29_X20from_X20_X27_X5B_X25s_X5D_X3A_X25i_X27),
+ /* K50 */ be_nested_str_weak(remote_ip),
+ /* K51 */ be_nested_str_weak(remote_port),
+ /* K52 */ be_nested_str_weak(PBKDFParamResponse),
+ /* K53 */ be_nested_str_weak(initiatorRandom),
+ /* K54 */ be_nested_str_weak(responderRandom),
+ /* K55 */ be_nested_str_weak(random),
+ /* K56 */ be_nested_str_weak(responderSessionId),
+ /* K57 */ be_nested_str_weak(pbkdf_parameters_salt),
+ /* K58 */ be_nested_str_weak(commissioning),
+ /* K59 */ be_nested_str_weak(commissioning_salt),
+ /* K60 */ be_nested_str_weak(pbkdf_parameters_iterations),
+ /* K61 */ be_nested_str_weak(commissioning_iterations),
+ /* K62 */ be_nested_str_weak(tlv2raw),
+ /* K63 */ be_nested_str_weak(__Msg2),
+ /* K64 */ be_nested_str_weak(build_response),
+ /* K65 */ be_nested_str_weak(encode_frame),
+ /* K66 */ be_nested_str_weak(responder),
+ /* K67 */ be_nested_str_weak(send_response_frame),
+ /* K68 */ be_nested_str_weak(add),
+ /* K69 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake1_X20message),
+ /* K70 */ be_nested_str_weak(Pake1),
+ /* K71 */ be_nested_str_weak(pA),
+ /* K72 */ be_nested_str_weak(SPAKE2P_Matter),
+ /* K73 */ be_nested_str_weak(commissioning_w0),
+ /* K74 */ be_nested_str_weak(commissioning_L),
+ /* K75 */ be_nested_str_weak(compute_pB),
+ /* K76 */ be_nested_str_weak(compute_ZV_verifier),
+ /* K77 */ be_nested_str_weak(SHA256),
+ /* K78 */ be_nested_str_weak(fromstring),
+ /* K79 */ be_nested_str_weak(Matter_Context_Prefix),
+ /* K80 */ be_nested_str_weak(set_context),
+ /* K81 */ be_nested_str_weak(compute_TT_hash),
+ /* K82 */ be_nested_str_weak(Pake2),
+ /* K83 */ be_nested_str_weak(pB),
+ /* K84 */ be_nested_str_weak(cB),
+ /* K85 */ be_nested_str_weak(__spake_cA),
+ /* K86 */ be_nested_str_weak(cA),
+ /* K87 */ be_nested_str_weak(__spake_Ke),
+ /* K88 */ be_nested_str_weak(Ke),
+ /* K89 */ be_nested_str_weak(MTR_X3A_X20New_X20Commissioning_X20_X28PASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i),
+ /* K90 */ be_nested_str_weak(_ip),
+ /* K91 */ be_nested_str_weak(_port),
+ /* K92 */ be_nested_str_weak(MTR_X3A_X20invalid_X20Pake3_X20message),
+ /* K93 */ be_nested_str_weak(Pake3),
+ /* K94 */ be_nested_str_weak(MTR_X3A_X20invalid_X20cA_X20received),
+ /* K95 */ be_nested_str_weak(rtc_utc),
+ /* K96 */ be_nested_str_weak(HKDF_SHA256),
+ /* K97 */ be_nested_str_weak(derive),
+ /* K98 */ be_nested_str_weak(SEKeys_Info),
+ /* K99 */ be_nested_str_weak(add_session),
+ /* K100 */ be_nested_str_weak(Sigma3),
+ /* K101 */ be_nested_str_weak(S3K_Info),
+ /* K102 */ be_nested_str_weak(shared_secret),
+ /* K103 */ be_nested_str_weak(TBEData3Encrypted),
+ /* K104 */ be_nested_str_weak(AES_CCM),
+ /* K105 */ be_nested_str_weak(TBEData3_Nonce),
+ /* K106 */ be_nested_str_weak(decrypt),
+ /* K107 */ be_nested_str_weak(tag),
+ /* K108 */ be_nested_str_weak(MTR_X3A_X20Tag_X20don_X27t_X20match),
+ /* K109 */ be_nested_str_weak(TLV),
+ /* K110 */ be_nested_str_weak(findsubval),
+ /* K111 */ be_nested_str_weak(findsub),
+ /* K112 */ be_nested_str_weak(int),
+ /* K113 */ be_nested_str_weak(peer_node_id),
+ /* K114 */ be_nested_str_weak(int64),
+ /* K115 */ be_nested_str_weak(fromu32),
+ /* K116 */ be_nested_str_weak(tobytes),
+ /* K117 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K118 */ be_nested_str_weak(add_TLV),
+ /* K119 */ be_nested_str_weak(B1),
+ /* K120 */ be_nested_str_weak(__initiator_pub),
+ /* K121 */ be_nested_str_weak(__responder_pub),
+ /* K122 */ be_nested_str_weak(EC_P256),
+ /* K123 */ be_nested_str_weak(ecdsa_verify_sha256),
+ /* K124 */ be_nested_str_weak(MTR_X3A_X20sigma3_tbs_X20does_X20not_X20have_X20a_X20valid_X20signature),
+ /* K125 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X20Invalid_X20signature_X2C_X20trying_X20anyways),
+ /* K126 */ be_nested_str_weak(MTR_X3A_X20Sigma3_X20verified_X2C_X20computing_X20new_X20keys),
+ /* K127 */ be_nested_str_weak(Msg3),
+ /* K128 */ be_nested_str_weak(close),
+ /* K129 */ be_nested_str_weak(_breadcrumb),
+ /* K130 */ be_nested_str_weak(counter_snd_next),
+ /* K131 */ be_nested_str_weak(set_persist),
+ /* K132 */ be_nested_str_weak(set_no_expiration),
+ /* K133 */ be_nested_str_weak(persist_to_fabric),
+ /* K134 */ be_nested_str_weak(save),
+ /* K135 */ be_nested_str_weak(is_commissioning_open),
+ /* K136 */ be_nested_str_weak(MTR_X3A_X20commissioning_X20not_X20open),
+ /* K137 */ be_nested_str_weak(parse_PBKDFParamRequest),
+ /* K138 */ be_nested_str_weak(parse_Pake1),
+ /* K139 */ be_nested_str_weak(parse_Pake3),
+ /* K140 */ be_nested_str_weak(parse_Sigma1),
+ /* K141 */ be_nested_str_weak(parse_Sigma3),
+ /* K142 */ be_nested_str_weak(parse_StatusReport),
+ /* K143 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28secure_X20channel_X29_X20_X2502X),
+ /* K144 */ be_nested_str_weak(Sigma1),
+ /* K145 */ be_nested_str_weak(initiatorEphPubKey),
+ /* K146 */ be_nested_str_weak(resumptionID),
+ /* K147 */ be_nested_str_weak(initiatorResumeMIC),
+ /* K148 */ be_nested_str_weak(find_session_by_resumption_id),
+ /* K149 */ be_nested_str_weak(_fabric),
+ /* K150 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20FAILED_X2C_X20session_X20not_X20found_X20resumption_id_X3D_X25s),
+ /* K151 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption),
+ /* K152 */ be_nested_str_weak(Sigma1_Resume),
+ /* K153 */ be_nested_str_weak(NCASE_SigmaS1),
+ /* K154 */ be_nested_str_weak(_source_node_id),
+ /* K155 */ be_nested_str_weak(source_node_id),
+ /* K156 */ be_nested_str_weak(set_mode_CASE),
+ /* K157 */ be_nested_str_weak(resumption_id),
+ /* K158 */ be_nested_str_weak(Sigma2_Resume),
+ /* K159 */ be_nested_str_weak(NCASE_SigmaS2),
+ /* K160 */ be_nested_str_weak(Sigma2Resume),
+ /* K161 */ be_nested_str_weak(sigma2ResumeMIC),
+ /* K162 */ be_nested_str_weak(responderSessionID),
+ /* K163 */ be_nested_str_weak(SessionResumptionKeys),
+ /* K164 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20SUCCEEDED),
+ /* K165 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Sigma1_X20Resumption_X20FAILED_X2C_X20switching_X20to_X20CASE),
+ /* K166 */ be_nested_str_weak(find_fabric_by_destination_id),
+ /* K167 */ be_nested_str_weak(destinationId),
+ /* K168 */ be_nested_str_weak(MTR_X3A_X20StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29),
+ /* K169 */ be_nested_str_weak(__responder_priv),
+ /* K170 */ be_nested_str_weak(public_key),
+ /* K171 */ be_nested_str_weak(shared_key),
+ /* K172 */ be_nested_str_weak(B2),
+ /* K173 */ be_nested_str_weak(get_noc),
+ /* K174 */ be_nested_str_weak(get_icac),
+ /* K175 */ be_nested_str_weak(ecdsa_sign_sha256),
+ /* K176 */ be_nested_str_weak(get_pk),
+ /* K177 */ be_nested_str_weak(Msg1),
+ /* K178 */ be_nested_str_weak(S2K_Info),
+ /* K179 */ be_nested_str_weak(TBEData2_Nonce),
+ /* K180 */ be_nested_str_weak(encrypt),
+ /* K181 */ be_nested_str_weak(Sigma2),
+ /* K182 */ be_nested_str_weak(responderEphPubKey),
+ /* K183 */ be_nested_str_weak(encrypted2),
+ /* K184 */ be_nested_str_weak(MTR_X3A_X20New_X20Connection_X20_X28CASE_X20id_X3D_X25i_X29_X20from_X20_X5B_X25s_X5D_X3A_X25i),
+};
+
+
+extern const bclass be_class_Matter_Commisioning_Context;
+
+/********************************************************************
+** Solidified function: parse_StatusReport
+********************************************************************/
+be_local_closure(class_Matter_Commisioning_Context_parse_StatusReport, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commisioning_Context, /* shared constants */
+ be_str_weak(parse_StatusReport),
+ &be_const_str_solidified,
+ ( &(const binstruction[20]) { /* code */
+ 0x88080300, // 0000 GETMBR R2 R1 K0
+ 0x880C0302, // 0001 GETMBR R3 R1 K2
+ 0x400C0703, // 0002 CONNECT R3 R3 K3
+ 0x88100301, // 0003 GETMBR R4 R1 K1
+ 0x940C0803, // 0004 GETIDX R3 R4 R3
+ 0x8C0C0704, // 0005 GETMET R3 R3 K4
+ 0x7C0C0200, // 0006 CALL R3 1
+ 0xB8120A00, // 0007 GETNGBL R4 K5
+ 0x60140018, // 0008 GETGBL R5 G24
+ 0x58180006, // 0009 LDCONST R6 K6
+ 0x5C1C0600, // 000A MOVE R7 R3
+ 0x7C140400, // 000B CALL R5 2
+ 0x20180707, // 000C NE R6 R3 K7
+ 0x781A0001, // 000D JMPF R6 #0010
+ 0x58180008, // 000E LDCONST R6 K8
+ 0x70020000, // 000F JMP #0011
+ 0x541A0003, // 0010 LDINT R6 4
+ 0x7C100400, // 0011 CALL R4 2
+ 0x50100000, // 0012 LDBOOL R4 0 0
+ 0x80040800, // 0013 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: find_fabric_by_destination_id
+********************************************************************/
+be_local_closure(class_Matter_Commisioning_Context_find_fabric_by_destination_id, /* name */
+ be_nested_proto(
+ 13, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commisioning_Context, /* shared constants */
+ be_str_weak(find_fabric_by_destination_id),
+ &be_const_str_solidified,
+ ( &(const binstruction[71]) { /* code */
+ 0xA40E1200, // 0000 IMPORT R3 K9
+ 0xB8121400, // 0001 GETNGBL R4 K10
+ 0x8C10090B, // 0002 GETMET R4 R4 K11
+ 0x541A0003, // 0003 LDINT R6 4
+ 0x7C100400, // 0004 CALL R4 2
+ 0x78120005, // 0005 JMPF R4 #000C
+ 0xB8120A00, // 0006 GETNGBL R4 K5
+ 0x8C140304, // 0007 GETMET R5 R1 K4
+ 0x7C140200, // 0008 CALL R5 1
+ 0x00161805, // 0009 ADD R5 K12 R5
+ 0x541A0003, // 000A LDINT R6 4
+ 0x7C100400, // 000B CALL R4 2
+ 0x60100010, // 000C GETGBL R4 G16
+ 0x8814010D, // 000D GETMBR R5 R0 K13
+ 0x88140B0E, // 000E GETMBR R5 R5 K14
+ 0x88140B0F, // 000F GETMBR R5 R5 K15
+ 0x7C100200, // 0010 CALL R4 1
+ 0xA802002F, // 0011 EXBLK 0 #0042
+ 0x5C140800, // 0012 MOVE R5 R4
+ 0x7C140000, // 0013 CALL R5 0
+ 0x88180B10, // 0014 GETMBR R6 R5 K16
+ 0x4C1C0000, // 0015 LDNIL R7
+ 0x1C180C07, // 0016 EQ R6 R6 R7
+ 0x741A0007, // 0017 JMPT R6 #0020
+ 0x88180B11, // 0018 GETMBR R6 R5 K17
+ 0x4C1C0000, // 0019 LDNIL R7
+ 0x1C180C07, // 001A EQ R6 R6 R7
+ 0x741A0003, // 001B JMPT R6 #0020
+ 0x88180B12, // 001C GETMBR R6 R5 K18
+ 0x4C1C0000, // 001D LDNIL R7
+ 0x1C180C07, // 001E EQ R6 R6 R7
+ 0x781A0000, // 001F JMPF R6 #0021
+ 0x7001FFF0, // 0020 JMP #0012
+ 0x8C180B13, // 0021 GETMET R6 R5 K19
+ 0x7C180200, // 0022 CALL R6 1
+ 0x00180406, // 0023 ADD R6 R2 R6
+ 0x881C0B11, // 0024 GETMBR R7 R5 K17
+ 0x00180C07, // 0025 ADD R6 R6 R7
+ 0x881C0B12, // 0026 GETMBR R7 R5 K18
+ 0x00180C07, // 0027 ADD R6 R6 R7
+ 0x8C1C0B14, // 0028 GETMET R7 R5 K20
+ 0x7C1C0200, // 0029 CALL R7 1
+ 0x8C200715, // 002A GETMET R8 R3 K21
+ 0x5C280E00, // 002B MOVE R10 R7
+ 0x7C200400, // 002C CALL R8 2
+ 0x8C241116, // 002D GETMET R9 R8 K22
+ 0x5C2C0C00, // 002E MOVE R11 R6
+ 0x7C240400, // 002F CALL R9 2
+ 0x8C241117, // 0030 GETMET R9 R8 K23
+ 0x7C240200, // 0031 CALL R9 1
+ 0xB82A1400, // 0032 GETNGBL R10 K10
+ 0x8C28150B, // 0033 GETMET R10 R10 K11
+ 0x54320003, // 0034 LDINT R12 4
+ 0x7C280400, // 0035 CALL R10 2
+ 0x782A0005, // 0036 JMPF R10 #003D
+ 0xB82A0A00, // 0037 GETNGBL R10 K5
+ 0x8C2C1304, // 0038 GETMET R11 R9 K4
+ 0x7C2C0200, // 0039 CALL R11 1
+ 0x002E300B, // 003A ADD R11 K24 R11
+ 0x54320003, // 003B LDINT R12 4
+ 0x7C280400, // 003C CALL R10 2
+ 0x1C281201, // 003D EQ R10 R9 R1
+ 0x782A0001, // 003E JMPF R10 #0041
+ 0xA8040001, // 003F EXBLK 1 1
+ 0x80040A00, // 0040 RET 1 R5
+ 0x7001FFCF, // 0041 JMP #0012
+ 0x58100019, // 0042 LDCONST R4 K25
+ 0xAC100200, // 0043 CATCH R4 1 0
+ 0xB0080000, // 0044 RAISE 2 R0 R0
+ 0x4C100000, // 0045 LDNIL R4
+ 0x80040800, // 0046 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: every_second
+********************************************************************/
+be_local_closure(class_Matter_Commisioning_Context_every_second, /* name */
+ be_nested_proto(
+ 1, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commisioning_Context, /* shared constants */
+ be_str_weak(every_second),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: add_session
+********************************************************************/
+be_local_closure(class_Matter_Commisioning_Context_add_session, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 6, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commisioning_Context, /* shared constants */
+ be_str_weak(add_session),
+ &be_const_str_solidified,
+ ( &(const binstruction[20]) { /* code */
+ 0xB81A0A00, // 0000 GETNGBL R6 K5
+ 0x601C0018, // 0001 GETGBL R7 G24
+ 0x5820001A, // 0002 LDCONST R8 K26
+ 0x5C240200, // 0003 MOVE R9 R1
+ 0x5C280400, // 0004 MOVE R10 R2
+ 0x7C1C0600, // 0005 CALL R7 3
+ 0x54220003, // 0006 LDINT R8 4
+ 0x7C180400, // 0007 CALL R6 2
+ 0x8818010D, // 0008 GETMBR R6 R0 K13
+ 0x88180D0E, // 0009 GETMBR R6 R6 K14
+ 0x8C180D1B, // 000A GETMET R6 R6 K27
+ 0x5C200200, // 000B MOVE R8 R1
+ 0x5C240400, // 000C MOVE R9 R2
+ 0x7C180600, // 000D CALL R6 3
+ 0x8C1C0D1C, // 000E GETMET R7 R6 K28
+ 0x5C240600, // 000F MOVE R9 R3
+ 0x5C280800, // 0010 MOVE R10 R4
+ 0x5C2C0A00, // 0011 MOVE R11 R5
+ 0x7C1C0800, // 0012 CALL R7 4
+ 0x80000000, // 0013 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_PBKDFParamRequest
+********************************************************************/
+be_local_closure(class_Matter_Commisioning_Context_parse_PBKDFParamRequest, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commisioning_Context, /* shared constants */
+ be_str_weak(parse_PBKDFParamRequest),
+ &be_const_str_solidified,
+ ( &(const binstruction[115]) { /* code */
+ 0xA40A1200, // 0000 IMPORT R2 K9
+ 0x880C0300, // 0001 GETMBR R3 R1 K0
+ 0x8810031D, // 0002 GETMBR R4 R1 K29
+ 0x5416001F, // 0003 LDINT R5 32
+ 0x20100805, // 0004 NE R4 R4 R5
+ 0x74120005, // 0005 JMPT R4 #000C
+ 0x8810031E, // 0006 GETMBR R4 R1 K30
+ 0x2010091F, // 0007 NE R4 R4 K31
+ 0x74120002, // 0008 JMPT R4 #000C
+ 0x88100320, // 0009 GETMBR R4 R1 K32
+ 0x2010091F, // 000A NE R4 R4 K31
+ 0x78120010, // 000B JMPF R4 #001D
+ 0xB8120A00, // 000C GETNGBL R4 K5
+ 0x58140021, // 000D LDCONST R5 K33
+ 0x58180022, // 000E LDCONST R6 K34
+ 0x7C100400, // 000F CALL R4 2
+ 0xB8120A00, // 0010 GETNGBL R4 K5
+ 0x58140023, // 0011 LDCONST R5 K35
+ 0x58180008, // 0012 LDCONST R6 K8
+ 0x7C100400, // 0013 CALL R4 2
+ 0x8C100124, // 0014 GETMET R4 R0 K36
+ 0x5C180200, // 0015 MOVE R6 R1
+ 0x581C0025, // 0016 LDCONST R7 K37
+ 0x5820001F, // 0017 LDCONST R8 K31
+ 0x58240022, // 0018 LDCONST R9 K34
+ 0x50280000, // 0019 LDBOOL R10 0 0
+ 0x7C100C00, // 001A CALL R4 6
+ 0x50100000, // 001B LDBOOL R4 0 0
+ 0x80040800, // 001C RET 1 R4
+ 0xB8124C00, // 001D GETNGBL R4 K38
+ 0x8C100927, // 001E GETMET R4 R4 K39
+ 0x7C100200, // 001F CALL R4 1
+ 0x8C100928, // 0020 GETMET R4 R4 K40
+ 0x88180301, // 0021 GETMBR R6 R1 K1
+ 0x881C0302, // 0022 GETMBR R7 R1 K2
+ 0x7C100600, // 0023 CALL R4 3
+ 0x88140300, // 0024 GETMBR R5 R1 K0
+ 0x8C140B29, // 0025 GETMET R5 R5 K41
+ 0x7C140200, // 0026 CALL R5 1
+ 0x88140302, // 0027 GETMBR R5 R1 K2
+ 0x40140B03, // 0028 CONNECT R5 R5 K3
+ 0x88180301, // 0029 GETMBR R6 R1 K1
+ 0x94140C05, // 002A GETIDX R5 R6 R5
+ 0x900E5405, // 002B SETMBR R3 K42 R5
+ 0x8814092B, // 002C GETMBR R5 R4 K43
+ 0x20140B1F, // 002D NE R5 R5 K31
+ 0x78160010, // 002E JMPF R5 #0040
+ 0xB8160A00, // 002F GETNGBL R5 K5
+ 0x5818002C, // 0030 LDCONST R6 K44
+ 0x581C0022, // 0031 LDCONST R7 K34
+ 0x7C140400, // 0032 CALL R5 2
+ 0xB8160A00, // 0033 GETNGBL R5 K5
+ 0x58180023, // 0034 LDCONST R6 K35
+ 0x581C0008, // 0035 LDCONST R7 K8
+ 0x7C140400, // 0036 CALL R5 2
+ 0x8C140124, // 0037 GETMET R5 R0 K36
+ 0x5C1C0200, // 0038 MOVE R7 R1
+ 0x58200025, // 0039 LDCONST R8 K37
+ 0x5824001F, // 003A LDCONST R9 K31
+ 0x58280022, // 003B LDCONST R10 K34
+ 0x502C0000, // 003C LDBOOL R11 0 0
+ 0x7C140C00, // 003D CALL R5 6
+ 0x50140000, // 003E LDBOOL R5 0 0
+ 0x80040A00, // 003F RET 1 R5
+ 0x8814092E, // 0040 GETMBR R5 R4 K46
+ 0x900E5A05, // 0041 SETMBR R3 K45 R5
+ 0x8814010D, // 0042 GETMBR R5 R0 K13
+ 0x88140B0E, // 0043 GETMBR R5 R5 K14
+ 0x8C140B30, // 0044 GETMET R5 R5 K48
+ 0x7C140200, // 0045 CALL R5 1
+ 0x900E5E05, // 0046 SETMBR R3 K47 R5
+ 0xB8160A00, // 0047 GETNGBL R5 K5
+ 0x60180018, // 0048 GETGBL R6 G24
+ 0x581C0031, // 0049 LDCONST R7 K49
+ 0x8820072F, // 004A GETMBR R8 R3 K47
+ 0x88240332, // 004B GETMBR R9 R1 K50
+ 0x88280333, // 004C GETMBR R10 R1 K51
+ 0x7C180800, // 004D CALL R6 4
+ 0x581C0008, // 004E LDCONST R7 K8
+ 0x7C140400, // 004F CALL R5 2
+ 0xB8164C00, // 0050 GETNGBL R5 K38
+ 0x8C140B34, // 0051 GETMET R5 R5 K52
+ 0x7C140200, // 0052 CALL R5 1
+ 0x88180935, // 0053 GETMBR R6 R4 K53
+ 0x90166A06, // 0054 SETMBR R5 K53 R6
+ 0x8C180537, // 0055 GETMET R6 R2 K55
+ 0x5422001F, // 0056 LDINT R8 32
+ 0x7C180400, // 0057 CALL R6 2
+ 0x90166C06, // 0058 SETMBR R5 K54 R6
+ 0x8818072F, // 0059 GETMBR R6 R3 K47
+ 0x90167006, // 005A SETMBR R5 K56 R6
+ 0x8818010D, // 005B GETMBR R6 R0 K13
+ 0x88180D3A, // 005C GETMBR R6 R6 K58
+ 0x88180D3B, // 005D GETMBR R6 R6 K59
+ 0x90167206, // 005E SETMBR R5 K57 R6
+ 0x8818010D, // 005F GETMBR R6 R0 K13
+ 0x88180D3A, // 0060 GETMBR R6 R6 K58
+ 0x88180D3D, // 0061 GETMBR R6 R6 K61
+ 0x90167806, // 0062 SETMBR R5 K60 R6
+ 0x8C180B3E, // 0063 GETMET R6 R5 K62
+ 0x7C180200, // 0064 CALL R6 1
+ 0x900E7E06, // 0065 SETMBR R3 K63 R6
+ 0x8C1C0340, // 0066 GETMET R7 R1 K64
+ 0x54260020, // 0067 LDINT R9 33
+ 0x50280200, // 0068 LDBOOL R10 1 0
+ 0x7C1C0600, // 0069 CALL R7 3
+ 0x8C200F41, // 006A GETMET R8 R7 K65
+ 0x5C280C00, // 006B MOVE R10 R6
+ 0x7C200400, // 006C CALL R8 2
+ 0x88240142, // 006D GETMBR R9 R0 K66
+ 0x8C241343, // 006E GETMET R9 R9 K67
+ 0x5C2C0E00, // 006F MOVE R11 R7
+ 0x7C240400, // 0070 CALL R9 2
+ 0x50240200, // 0071 LDBOOL R9 1 0
+ 0x80041200, // 0072 RET 1 R9
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: send_status_report
+********************************************************************/
+be_local_closure(class_Matter_Commisioning_Context_send_status_report, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 6, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commisioning_Context, /* shared constants */
+ be_str_weak(send_status_report),
+ &be_const_str_solidified,
+ ( &(const binstruction[26]) { /* code */
+ 0x8C180340, // 0000 GETMET R6 R1 K64
+ 0x5422003F, // 0001 LDINT R8 64
+ 0x5C240A00, // 0002 MOVE R9 R5
+ 0x7C180600, // 0003 CALL R6 3
+ 0x601C0015, // 0004 GETGBL R7 G21
+ 0x7C1C0000, // 0005 CALL R7 0
+ 0x8C200F44, // 0006 GETMET R8 R7 K68
+ 0x5C280400, // 0007 MOVE R10 R2
+ 0x582C0022, // 0008 LDCONST R11 K34
+ 0x7C200600, // 0009 CALL R8 3
+ 0x8C200F44, // 000A GETMET R8 R7 K68
+ 0x5C280600, // 000B MOVE R10 R3
+ 0x542E0003, // 000C LDINT R11 4
+ 0x7C200600, // 000D CALL R8 3
+ 0x8C200F44, // 000E GETMET R8 R7 K68
+ 0x5C280800, // 000F MOVE R10 R4
+ 0x542E0003, // 0010 LDINT R11 4
+ 0x7C200600, // 0011 CALL R8 3
+ 0x8C200D41, // 0012 GETMET R8 R6 K65
+ 0x5C280E00, // 0013 MOVE R10 R7
+ 0x7C200400, // 0014 CALL R8 2
+ 0x88240142, // 0015 GETMBR R9 R0 K66
+ 0x8C241343, // 0016 GETMET R9 R9 K67
+ 0x5C2C0C00, // 0017 MOVE R11 R6
+ 0x7C240400, // 0018 CALL R9 2
+ 0x80000000, // 0019 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_Pake1
+********************************************************************/
+be_local_closure(class_Matter_Commisioning_Context_parse_Pake1, /* name */
+ be_nested_proto(
+ 20, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commisioning_Context, /* shared constants */
+ be_str_weak(parse_Pake1),
+ &be_const_str_solidified,
+ ( &(const binstruction[114]) { /* code */
+ 0xA40A1200, // 0000 IMPORT R2 K9
+ 0x880C0300, // 0001 GETMBR R3 R1 K0
+ 0x8810031D, // 0002 GETMBR R4 R1 K29
+ 0x54160021, // 0003 LDINT R5 34
+ 0x20100805, // 0004 NE R4 R4 R5
+ 0x74120005, // 0005 JMPT R4 #000C
+ 0x8810031E, // 0006 GETMBR R4 R1 K30
+ 0x2010091F, // 0007 NE R4 R4 K31
+ 0x74120002, // 0008 JMPT R4 #000C
+ 0x88100320, // 0009 GETMBR R4 R1 K32
+ 0x2010091F, // 000A NE R4 R4 K31
+ 0x78120010, // 000B JMPF R4 #001D
+ 0xB8120A00, // 000C GETNGBL R4 K5
+ 0x58140045, // 000D LDCONST R5 K69
+ 0x58180008, // 000E LDCONST R6 K8
+ 0x7C100400, // 000F CALL R4 2
+ 0xB8120A00, // 0010 GETNGBL R4 K5
+ 0x58140023, // 0011 LDCONST R5 K35
+ 0x58180008, // 0012 LDCONST R6 K8
+ 0x7C100400, // 0013 CALL R4 2
+ 0x8C100124, // 0014 GETMET R4 R0 K36
+ 0x5C180200, // 0015 MOVE R6 R1
+ 0x581C0025, // 0016 LDCONST R7 K37
+ 0x5820001F, // 0017 LDCONST R8 K31
+ 0x58240022, // 0018 LDCONST R9 K34
+ 0x50280000, // 0019 LDBOOL R10 0 0
+ 0x7C100C00, // 001A CALL R4 6
+ 0x50100000, // 001B LDBOOL R4 0 0
+ 0x80040800, // 001C RET 1 R4
+ 0xB8124C00, // 001D GETNGBL R4 K38
+ 0x8C100946, // 001E GETMET R4 R4 K70
+ 0x7C100200, // 001F CALL R4 1
+ 0x8C100928, // 0020 GETMET R4 R4 K40
+ 0x88180301, // 0021 GETMBR R6 R1 K1
+ 0x881C0302, // 0022 GETMBR R7 R1 K2
+ 0x7C100600, // 0023 CALL R4 3
+ 0x88140947, // 0024 GETMBR R5 R4 K71
+ 0x8C180548, // 0025 GETMET R6 R2 K72
+ 0x8820010D, // 0026 GETMBR R8 R0 K13
+ 0x8820113A, // 0027 GETMBR R8 R8 K58
+ 0x88201149, // 0028 GETMBR R8 R8 K73
+ 0x4C240000, // 0029 LDNIL R9
+ 0x8828010D, // 002A GETMBR R10 R0 K13
+ 0x8828153A, // 002B GETMBR R10 R10 K58
+ 0x8828154A, // 002C GETMBR R10 R10 K74
+ 0x7C180800, // 002D CALL R6 4
+ 0x8C1C0537, // 002E GETMET R7 R2 K55
+ 0x5426001F, // 002F LDINT R9 32
+ 0x7C1C0400, // 0030 CALL R7 2
+ 0x8C200D4B, // 0031 GETMET R8 R6 K75
+ 0x5C280E00, // 0032 MOVE R10 R7
+ 0x7C200400, // 0033 CALL R8 2
+ 0x8C200D4C, // 0034 GETMET R8 R6 K76
+ 0x5C280A00, // 0035 MOVE R10 R5
+ 0x7C200400, // 0036 CALL R8 2
+ 0x8C20054D, // 0037 GETMET R8 R2 K77
+ 0x7C200200, // 0038 CALL R8 1
+ 0x8C241116, // 0039 GETMET R9 R8 K22
+ 0x602C0015, // 003A GETGBL R11 G21
+ 0x7C2C0000, // 003B CALL R11 0
+ 0x8C2C174E, // 003C GETMET R11 R11 K78
+ 0x8834014F, // 003D GETMBR R13 R0 K79
+ 0x7C2C0400, // 003E CALL R11 2
+ 0x7C240400, // 003F CALL R9 2
+ 0x8C241116, // 0040 GETMET R9 R8 K22
+ 0x882C072A, // 0041 GETMBR R11 R3 K42
+ 0x7C240400, // 0042 CALL R9 2
+ 0x8C241116, // 0043 GETMET R9 R8 K22
+ 0x882C073F, // 0044 GETMBR R11 R3 K63
+ 0x7C240400, // 0045 CALL R9 2
+ 0x8C241117, // 0046 GETMET R9 R8 K23
+ 0x7C240200, // 0047 CALL R9 1
+ 0x901A8E05, // 0048 SETMBR R6 K71 R5
+ 0x8C280D50, // 0049 GETMET R10 R6 K80
+ 0x5C301200, // 004A MOVE R12 R9
+ 0x7C280400, // 004B CALL R10 2
+ 0x8C280D51, // 004C GETMET R10 R6 K81
+ 0x50300200, // 004D LDBOOL R12 1 0
+ 0x7C280400, // 004E CALL R10 2
+ 0xB82A4C00, // 004F GETNGBL R10 K38
+ 0x8C281552, // 0050 GETMET R10 R10 K82
+ 0x7C280200, // 0051 CALL R10 1
+ 0x882C0D53, // 0052 GETMBR R11 R6 K83
+ 0x902AA60B, // 0053 SETMBR R10 K83 R11
+ 0x882C0D54, // 0054 GETMBR R11 R6 K84
+ 0x902AA80B, // 0055 SETMBR R10 K84 R11
+ 0x8C2C153E, // 0056 GETMET R11 R10 K62
+ 0x7C2C0200, // 0057 CALL R11 1
+ 0x88300D56, // 0058 GETMBR R12 R6 K86
+ 0x900EAA0C, // 0059 SETMBR R3 K85 R12
+ 0x88300D58, // 005A GETMBR R12 R6 K88
+ 0x900EAE0C, // 005B SETMBR R3 K87 R12
+ 0x8C300340, // 005C GETMET R12 R1 K64
+ 0x543A0022, // 005D LDINT R14 35
+ 0x503C0200, // 005E LDBOOL R15 1 0
+ 0x7C300600, // 005F CALL R12 3
+ 0x8C341941, // 0060 GETMET R13 R12 K65
+ 0x5C3C1600, // 0061 MOVE R15 R11
+ 0x7C340400, // 0062 CALL R13 2
+ 0xB83A0A00, // 0063 GETNGBL R14 K5
+ 0x603C0018, // 0064 GETGBL R15 G24
+ 0x58400059, // 0065 LDCONST R16 K89
+ 0x8844072F, // 0066 GETMBR R17 R3 K47
+ 0x8848075A, // 0067 GETMBR R18 R3 K90
+ 0x884C075B, // 0068 GETMBR R19 R3 K91
+ 0x7C3C0800, // 0069 CALL R15 4
+ 0x58400022, // 006A LDCONST R16 K34
+ 0x7C380400, // 006B CALL R14 2
+ 0x88380142, // 006C GETMBR R14 R0 K66
+ 0x8C381D43, // 006D GETMET R14 R14 K67
+ 0x5C401800, // 006E MOVE R16 R12
+ 0x7C380400, // 006F CALL R14 2
+ 0x50380200, // 0070 LDBOOL R14 1 0
+ 0x80041C00, // 0071 RET 1 R14
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_Commisioning_Context_init, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commisioning_Context, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0xA40A1200, // 0000 IMPORT R2 K9
+ 0x90028401, // 0001 SETMBR R0 K66 R1
+ 0x880C030D, // 0002 GETMBR R3 R1 K13
+ 0x90021A03, // 0003 SETMBR R0 K13 R3
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_Pake3
+********************************************************************/
+be_local_closure(class_Matter_Commisioning_Context_parse_Pake3, /* name */
+ be_nested_proto(
+ 19, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commisioning_Context, /* shared constants */
+ be_str_weak(parse_Pake3),
+ &be_const_str_solidified,
+ ( &(const binstruction[101]) { /* code */
+ 0xA40A1200, // 0000 IMPORT R2 K9
+ 0x880C0300, // 0001 GETMBR R3 R1 K0
+ 0x8810031D, // 0002 GETMBR R4 R1 K29
+ 0x54160023, // 0003 LDINT R5 36
+ 0x20100805, // 0004 NE R4 R4 R5
+ 0x74120005, // 0005 JMPT R4 #000C
+ 0x8810031E, // 0006 GETMBR R4 R1 K30
+ 0x2010091F, // 0007 NE R4 R4 K31
+ 0x74120002, // 0008 JMPT R4 #000C
+ 0x88100320, // 0009 GETMBR R4 R1 K32
+ 0x2010091F, // 000A NE R4 R4 K31
+ 0x78120010, // 000B JMPF R4 #001D
+ 0xB8120A00, // 000C GETNGBL R4 K5
+ 0x5814005C, // 000D LDCONST R5 K92
+ 0x58180008, // 000E LDCONST R6 K8
+ 0x7C100400, // 000F CALL R4 2
+ 0xB8120A00, // 0010 GETNGBL R4 K5
+ 0x58140023, // 0011 LDCONST R5 K35
+ 0x58180008, // 0012 LDCONST R6 K8
+ 0x7C100400, // 0013 CALL R4 2
+ 0x8C100124, // 0014 GETMET R4 R0 K36
+ 0x5C180200, // 0015 MOVE R6 R1
+ 0x581C0025, // 0016 LDCONST R7 K37
+ 0x5820001F, // 0017 LDCONST R8 K31
+ 0x58240022, // 0018 LDCONST R9 K34
+ 0x50280000, // 0019 LDBOOL R10 0 0
+ 0x7C100C00, // 001A CALL R4 6
+ 0x50100000, // 001B LDBOOL R4 0 0
+ 0x80040800, // 001C RET 1 R4
+ 0xB8124C00, // 001D GETNGBL R4 K38
+ 0x8C10095D, // 001E GETMET R4 R4 K93
+ 0x7C100200, // 001F CALL R4 1
+ 0x8C100928, // 0020 GETMET R4 R4 K40
+ 0x88180301, // 0021 GETMBR R6 R1 K1
+ 0x881C0302, // 0022 GETMBR R7 R1 K2
+ 0x7C100600, // 0023 CALL R4 3
+ 0x88140956, // 0024 GETMBR R5 R4 K86
+ 0x88180755, // 0025 GETMBR R6 R3 K85
+ 0x20180A06, // 0026 NE R6 R5 R6
+ 0x781A0010, // 0027 JMPF R6 #0039
+ 0xB81A0A00, // 0028 GETNGBL R6 K5
+ 0x581C005E, // 0029 LDCONST R7 K94
+ 0x58200008, // 002A LDCONST R8 K8
+ 0x7C180400, // 002B CALL R6 2
+ 0xB81A0A00, // 002C GETNGBL R6 K5
+ 0x581C0023, // 002D LDCONST R7 K35
+ 0x58200008, // 002E LDCONST R8 K8
+ 0x7C180400, // 002F CALL R6 2
+ 0x8C180124, // 0030 GETMET R6 R0 K36
+ 0x5C200200, // 0031 MOVE R8 R1
+ 0x58240025, // 0032 LDCONST R9 K37
+ 0x5828001F, // 0033 LDCONST R10 K31
+ 0x582C0022, // 0034 LDCONST R11 K34
+ 0x50300000, // 0035 LDBOOL R12 0 0
+ 0x7C180C00, // 0036 CALL R6 6
+ 0x50180000, // 0037 LDBOOL R6 0 0
+ 0x80040C00, // 0038 RET 1 R6
+ 0xB81A1400, // 0039 GETNGBL R6 K10
+ 0x8C180D5F, // 003A GETMET R6 R6 K95
+ 0x7C180200, // 003B CALL R6 1
+ 0x8C1C0560, // 003C GETMET R7 R2 K96
+ 0x7C1C0200, // 003D CALL R7 1
+ 0x8C1C0F61, // 003E GETMET R7 R7 K97
+ 0x88240757, // 003F GETMBR R9 R3 K87
+ 0x60280015, // 0040 GETGBL R10 G21
+ 0x7C280000, // 0041 CALL R10 0
+ 0x602C0015, // 0042 GETGBL R11 G21
+ 0x7C2C0000, // 0043 CALL R11 0
+ 0x8C2C174E, // 0044 GETMET R11 R11 K78
+ 0x88340162, // 0045 GETMBR R13 R0 K98
+ 0x7C2C0400, // 0046 CALL R11 2
+ 0x5432002F, // 0047 LDINT R12 48
+ 0x7C1C0A00, // 0048 CALL R7 5
+ 0x5422000E, // 0049 LDINT R8 15
+ 0x40223E08, // 004A CONNECT R8 K31 R8
+ 0x94200E08, // 004B GETIDX R8 R7 R8
+ 0x5426000F, // 004C LDINT R9 16
+ 0x542A001E, // 004D LDINT R10 31
+ 0x4024120A, // 004E CONNECT R9 R9 R10
+ 0x94240E09, // 004F GETIDX R9 R7 R9
+ 0x542A001F, // 0050 LDINT R10 32
+ 0x542E002E, // 0051 LDINT R11 47
+ 0x4028140B, // 0052 CONNECT R10 R10 R11
+ 0x94280E0A, // 0053 GETIDX R10 R7 R10
+ 0x8C2C0124, // 0054 GETMET R11 R0 K36
+ 0x5C340200, // 0055 MOVE R13 R1
+ 0x5838001F, // 0056 LDCONST R14 K31
+ 0x583C001F, // 0057 LDCONST R15 K31
+ 0x5840001F, // 0058 LDCONST R16 K31
+ 0x50440000, // 0059 LDBOOL R17 0 0
+ 0x7C2C0C00, // 005A CALL R11 6
+ 0x8C2C0163, // 005B GETMET R11 R0 K99
+ 0x8834072F, // 005C GETMBR R13 R3 K47
+ 0x8838072D, // 005D GETMBR R14 R3 K45
+ 0x5C3C1000, // 005E MOVE R15 R8
+ 0x5C401200, // 005F MOVE R16 R9
+ 0x5C441400, // 0060 MOVE R17 R10
+ 0x5C480C00, // 0061 MOVE R18 R6
+ 0x7C2C0E00, // 0062 CALL R11 7
+ 0x502C0200, // 0063 LDBOOL R11 1 0
+ 0x80041600, // 0064 RET 1 R11
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_Sigma3
+********************************************************************/
+be_local_closure(class_Matter_Commisioning_Context_parse_Sigma3, /* name */
+ be_nested_proto(
+ 36, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commisioning_Context, /* shared constants */
+ be_str_weak(parse_Sigma3),
+ &be_const_str_solidified,
+ ( &(const binstruction[280]) { /* code */
+ 0xA40A1200, // 0000 IMPORT R2 K9
+ 0x880C031D, // 0001 GETMBR R3 R1 K29
+ 0x54120031, // 0002 LDINT R4 50
+ 0x200C0604, // 0003 NE R3 R3 R4
+ 0x740E0005, // 0004 JMPT R3 #000B
+ 0x880C031E, // 0005 GETMBR R3 R1 K30
+ 0x200C071F, // 0006 NE R3 R3 K31
+ 0x740E0002, // 0007 JMPT R3 #000B
+ 0x880C0320, // 0008 GETMBR R3 R1 K32
+ 0x200C071F, // 0009 NE R3 R3 K31
+ 0x780E000C, // 000A JMPF R3 #0018
+ 0xB80E0A00, // 000B GETNGBL R3 K5
+ 0x58100023, // 000C LDCONST R4 K35
+ 0x58140008, // 000D LDCONST R5 K8
+ 0x7C0C0400, // 000E CALL R3 2
+ 0x8C0C0124, // 000F GETMET R3 R0 K36
+ 0x5C140200, // 0010 MOVE R5 R1
+ 0x58180025, // 0011 LDCONST R6 K37
+ 0x581C001F, // 0012 LDCONST R7 K31
+ 0x58200022, // 0013 LDCONST R8 K34
+ 0x50240000, // 0014 LDBOOL R9 0 0
+ 0x7C0C0C00, // 0015 CALL R3 6
+ 0x500C0000, // 0016 LDBOOL R3 0 0
+ 0x80040600, // 0017 RET 1 R3
+ 0x880C0300, // 0018 GETMBR R3 R1 K0
+ 0xB8124C00, // 0019 GETNGBL R4 K38
+ 0x8C100964, // 001A GETMET R4 R4 K100
+ 0x7C100200, // 001B CALL R4 1
+ 0x8C100928, // 001C GETMET R4 R4 K40
+ 0x88180301, // 001D GETMBR R6 R1 K1
+ 0x881C0302, // 001E GETMBR R7 R1 K2
+ 0x7C100600, // 001F CALL R4 3
+ 0x8C14054D, // 0020 GETMET R5 R2 K77
+ 0x7C140200, // 0021 CALL R5 1
+ 0x8C140B16, // 0022 GETMET R5 R5 K22
+ 0x881C072A, // 0023 GETMBR R7 R3 K42
+ 0x7C140400, // 0024 CALL R5 2
+ 0x8C140B16, // 0025 GETMET R5 R5 K22
+ 0x881C073F, // 0026 GETMBR R7 R3 K63
+ 0x7C140400, // 0027 CALL R5 2
+ 0x8C140B17, // 0028 GETMET R5 R5 K23
+ 0x7C140200, // 0029 CALL R5 1
+ 0x60180015, // 002A GETGBL R6 G21
+ 0x7C180000, // 002B CALL R6 0
+ 0x8C180D4E, // 002C GETMET R6 R6 K78
+ 0x88200165, // 002D GETMBR R8 R0 K101
+ 0x7C180400, // 002E CALL R6 2
+ 0x8C1C0560, // 002F GETMET R7 R2 K96
+ 0x7C1C0200, // 0030 CALL R7 1
+ 0x8C1C0F61, // 0031 GETMET R7 R7 K97
+ 0x88240766, // 0032 GETMBR R9 R3 K102
+ 0x8C280714, // 0033 GETMET R10 R3 K20
+ 0x7C280200, // 0034 CALL R10 1
+ 0x00281405, // 0035 ADD R10 R10 R5
+ 0x5C2C0C00, // 0036 MOVE R11 R6
+ 0x5432000F, // 0037 LDINT R12 16
+ 0x7C1C0A00, // 0038 CALL R7 5
+ 0x5421FFEE, // 0039 LDINT R8 -17
+ 0x40223E08, // 003A CONNECT R8 K31 R8
+ 0x88240967, // 003B GETMBR R9 R4 K103
+ 0x94201208, // 003C GETIDX R8 R9 R8
+ 0x5429FFEF, // 003D LDINT R10 -16
+ 0x40281503, // 003E CONNECT R10 R10 K3
+ 0x882C0967, // 003F GETMBR R11 R4 K103
+ 0x9424160A, // 0040 GETIDX R9 R11 R10
+ 0x8C300568, // 0041 GETMET R12 R2 K104
+ 0x5C380E00, // 0042 MOVE R14 R7
+ 0x603C0015, // 0043 GETGBL R15 G21
+ 0x7C3C0000, // 0044 CALL R15 0
+ 0x8C3C1F4E, // 0045 GETMET R15 R15 K78
+ 0x88440169, // 0046 GETMBR R17 R0 K105
+ 0x7C3C0400, // 0047 CALL R15 2
+ 0x60400015, // 0048 GETGBL R16 G21
+ 0x7C400000, // 0049 CALL R16 0
+ 0x6044000C, // 004A GETGBL R17 G12
+ 0x5C481000, // 004B MOVE R18 R8
+ 0x7C440200, // 004C CALL R17 1
+ 0x544A000F, // 004D LDINT R18 16
+ 0x7C300C00, // 004E CALL R12 6
+ 0x5C281800, // 004F MOVE R10 R12
+ 0x8C30156A, // 0050 GETMET R12 R10 K106
+ 0x5C381000, // 0051 MOVE R14 R8
+ 0x7C300400, // 0052 CALL R12 2
+ 0x5C2C1800, // 0053 MOVE R11 R12
+ 0x8C30156B, // 0054 GETMET R12 R10 K107
+ 0x7C300200, // 0055 CALL R12 1
+ 0x20341809, // 0056 NE R13 R12 R9
+ 0x78360010, // 0057 JMPF R13 #0069
+ 0xB8360A00, // 0058 GETNGBL R13 K5
+ 0x5838006C, // 0059 LDCONST R14 K108
+ 0x583C0008, // 005A LDCONST R15 K8
+ 0x7C340400, // 005B CALL R13 2
+ 0xB8360A00, // 005C GETNGBL R13 K5
+ 0x58380023, // 005D LDCONST R14 K35
+ 0x583C0008, // 005E LDCONST R15 K8
+ 0x7C340400, // 005F CALL R13 2
+ 0x8C340124, // 0060 GETMET R13 R0 K36
+ 0x5C3C0200, // 0061 MOVE R15 R1
+ 0x58400025, // 0062 LDCONST R16 K37
+ 0x5844001F, // 0063 LDCONST R17 K31
+ 0x58480022, // 0064 LDCONST R18 K34
+ 0x504C0000, // 0065 LDBOOL R19 0 0
+ 0x7C340C00, // 0066 CALL R13 6
+ 0x50340000, // 0067 LDBOOL R13 0 0
+ 0x80041A00, // 0068 RET 1 R13
+ 0xB8364C00, // 0069 GETNGBL R13 K38
+ 0x88341B6D, // 006A GETMBR R13 R13 K109
+ 0x8C341B28, // 006B GETMET R13 R13 K40
+ 0x5C3C1600, // 006C MOVE R15 R11
+ 0x7C340400, // 006D CALL R13 2
+ 0x8C381B6E, // 006E GETMET R14 R13 K110
+ 0x58400025, // 006F LDCONST R16 K37
+ 0x7C380400, // 0070 CALL R14 2
+ 0x8C3C1B6E, // 0071 GETMET R15 R13 K110
+ 0x58440022, // 0072 LDCONST R17 K34
+ 0x7C3C0400, // 0073 CALL R15 2
+ 0x8C401B6E, // 0074 GETMET R16 R13 K110
+ 0x58480008, // 0075 LDCONST R18 K8
+ 0x7C400400, // 0076 CALL R16 2
+ 0xB8464C00, // 0077 GETNGBL R17 K38
+ 0x8844236D, // 0078 GETMBR R17 R17 K109
+ 0x8C442328, // 0079 GETMET R17 R17 K40
+ 0x5C4C1C00, // 007A MOVE R19 R14
+ 0x7C440400, // 007B CALL R17 2
+ 0x8C48236E, // 007C GETMET R18 R17 K110
+ 0x54520008, // 007D LDINT R20 9
+ 0x7C480400, // 007E CALL R18 2
+ 0x8C4C236F, // 007F GETMET R19 R17 K111
+ 0x54560005, // 0080 LDINT R21 6
+ 0x7C4C0400, // 0081 CALL R19 2
+ 0x8C50276E, // 0082 GETMET R20 R19 K110
+ 0x545A0010, // 0083 LDINT R22 17
+ 0x7C500400, // 0084 CALL R20 2
+ 0x60540004, // 0085 GETGBL R21 G4
+ 0x5C582800, // 0086 MOVE R22 R20
+ 0x7C540200, // 0087 CALL R21 1
+ 0x1C542B70, // 0088 EQ R21 R21 K112
+ 0x78560007, // 0089 JMPF R21 #0092
+ 0xB856E400, // 008A GETNGBL R21 K114
+ 0x8C542B73, // 008B GETMET R21 R21 K115
+ 0x5C5C2800, // 008C MOVE R23 R20
+ 0x7C540400, // 008D CALL R21 2
+ 0x8C542B74, // 008E GETMET R21 R21 K116
+ 0x7C540200, // 008F CALL R21 1
+ 0x900EE215, // 0090 SETMBR R3 K113 R21
+ 0x70020002, // 0091 JMP #0095
+ 0x8C542974, // 0092 GETMET R21 R20 K116
+ 0x7C540200, // 0093 CALL R21 1
+ 0x900EE215, // 0094 SETMBR R3 K113 R21
+ 0xB8564C00, // 0095 GETNGBL R21 K38
+ 0x88542B6D, // 0096 GETMBR R21 R21 K109
+ 0x8C542B75, // 0097 GETMET R21 R21 K117
+ 0x7C540200, // 0098 CALL R21 1
+ 0x8C582B76, // 0099 GETMET R22 R21 K118
+ 0x58600025, // 009A LDCONST R24 K37
+ 0xB8664C00, // 009B GETNGBL R25 K38
+ 0x8864336D, // 009C GETMBR R25 R25 K109
+ 0x88643377, // 009D GETMBR R25 R25 K119
+ 0x5C681C00, // 009E MOVE R26 R14
+ 0x7C580800, // 009F CALL R22 4
+ 0x8C582B76, // 00A0 GETMET R22 R21 K118
+ 0x58600022, // 00A1 LDCONST R24 K34
+ 0xB8664C00, // 00A2 GETNGBL R25 K38
+ 0x8864336D, // 00A3 GETMBR R25 R25 K109
+ 0x88643377, // 00A4 GETMBR R25 R25 K119
+ 0x5C681E00, // 00A5 MOVE R26 R15
+ 0x7C580800, // 00A6 CALL R22 4
+ 0x8C582B76, // 00A7 GETMET R22 R21 K118
+ 0x58600008, // 00A8 LDCONST R24 K8
+ 0xB8664C00, // 00A9 GETNGBL R25 K38
+ 0x8864336D, // 00AA GETMBR R25 R25 K109
+ 0x88643377, // 00AB GETMBR R25 R25 K119
+ 0x88680778, // 00AC GETMBR R26 R3 K120
+ 0x7C580800, // 00AD CALL R22 4
+ 0x8C582B76, // 00AE GETMET R22 R21 K118
+ 0x54620003, // 00AF LDINT R24 4
+ 0xB8664C00, // 00B0 GETNGBL R25 K38
+ 0x8864336D, // 00B1 GETMBR R25 R25 K109
+ 0x88643377, // 00B2 GETMBR R25 R25 K119
+ 0x88680779, // 00B3 GETMBR R26 R3 K121
+ 0x7C580800, // 00B4 CALL R22 4
+ 0x8C582B3E, // 00B5 GETMET R22 R21 K62
+ 0x7C580200, // 00B6 CALL R22 1
+ 0x8C5C057A, // 00B7 GETMET R23 R2 K122
+ 0x7C5C0200, // 00B8 CALL R23 1
+ 0x8C5C2F7B, // 00B9 GETMET R23 R23 K123
+ 0x5C642400, // 00BA MOVE R25 R18
+ 0x5C682C00, // 00BB MOVE R26 R22
+ 0x5C6C2000, // 00BC MOVE R27 R16
+ 0x7C5C0800, // 00BD CALL R23 4
+ 0x5C602E00, // 00BE MOVE R24 R23
+ 0x74620008, // 00BF JMPT R24 #00C9
+ 0xB8620A00, // 00C0 GETNGBL R24 K5
+ 0x5864007C, // 00C1 LDCONST R25 K124
+ 0x58680022, // 00C2 LDCONST R26 K34
+ 0x7C600400, // 00C3 CALL R24 2
+ 0xB8620A00, // 00C4 GETNGBL R24 K5
+ 0x5864007D, // 00C5 LDCONST R25 K125
+ 0x58680022, // 00C6 LDCONST R26 K34
+ 0x7C600400, // 00C7 CALL R24 2
+ 0x70020003, // 00C8 JMP #00CD
+ 0xB8620A00, // 00C9 GETNGBL R24 K5
+ 0x5864007E, // 00CA LDCONST R25 K126
+ 0x58680008, // 00CB LDCONST R26 K8
+ 0x7C600400, // 00CC CALL R24 2
+ 0x8C60054D, // 00CD GETMET R24 R2 K77
+ 0x7C600200, // 00CE CALL R24 1
+ 0x8C603116, // 00CF GETMET R24 R24 K22
+ 0x8868072A, // 00D0 GETMBR R26 R3 K42
+ 0x7C600400, // 00D1 CALL R24 2
+ 0x8C603116, // 00D2 GETMET R24 R24 K22
+ 0x8868073F, // 00D3 GETMBR R26 R3 K63
+ 0x7C600400, // 00D4 CALL R24 2
+ 0x8C603116, // 00D5 GETMET R24 R24 K22
+ 0x8868097F, // 00D6 GETMBR R26 R4 K127
+ 0x7C600400, // 00D7 CALL R24 2
+ 0x8C603117, // 00D8 GETMET R24 R24 K23
+ 0x7C600200, // 00D9 CALL R24 1
+ 0x5C143000, // 00DA MOVE R5 R24
+ 0x4C600000, // 00DB LDNIL R24
+ 0x900E5418, // 00DC SETMBR R3 K42 R24
+ 0x4C600000, // 00DD LDNIL R24
+ 0x900E7E18, // 00DE SETMBR R3 K63 R24
+ 0x8C600560, // 00DF GETMET R24 R2 K96
+ 0x7C600200, // 00E0 CALL R24 1
+ 0x8C603161, // 00E1 GETMET R24 R24 K97
+ 0x88680766, // 00E2 GETMBR R26 R3 K102
+ 0x8C6C0714, // 00E3 GETMET R27 R3 K20
+ 0x7C6C0200, // 00E4 CALL R27 1
+ 0x006C3605, // 00E5 ADD R27 R27 R5
+ 0x60700015, // 00E6 GETGBL R28 G21
+ 0x7C700000, // 00E7 CALL R28 0
+ 0x8C70394E, // 00E8 GETMET R28 R28 K78
+ 0x88780162, // 00E9 GETMBR R30 R0 K98
+ 0x7C700400, // 00EA CALL R28 2
+ 0x5476002F, // 00EB LDINT R29 48
+ 0x7C600A00, // 00EC CALL R24 5
+ 0x5466000E, // 00ED LDINT R25 15
+ 0x40663E19, // 00EE CONNECT R25 K31 R25
+ 0x94643019, // 00EF GETIDX R25 R24 R25
+ 0x546A000F, // 00F0 LDINT R26 16
+ 0x546E001E, // 00F1 LDINT R27 31
+ 0x4068341B, // 00F2 CONNECT R26 R26 R27
+ 0x9468301A, // 00F3 GETIDX R26 R24 R26
+ 0x546E001F, // 00F4 LDINT R27 32
+ 0x5472002E, // 00F5 LDINT R28 47
+ 0x406C361C, // 00F6 CONNECT R27 R27 R28
+ 0x946C301B, // 00F7 GETIDX R27 R24 R27
+ 0xB8721400, // 00F8 GETNGBL R28 K10
+ 0x8C70395F, // 00F9 GETMET R28 R28 K95
+ 0x7C700200, // 00FA CALL R28 1
+ 0x8C740124, // 00FB GETMET R29 R0 K36
+ 0x5C7C0200, // 00FC MOVE R31 R1
+ 0x5880001F, // 00FD LDCONST R32 K31
+ 0x5884001F, // 00FE LDCONST R33 K31
+ 0x5888001F, // 00FF LDCONST R34 K31
+ 0x508C0200, // 0100 LDBOOL R35 1 0
+ 0x7C740C00, // 0101 CALL R29 6
+ 0x8C740780, // 0102 GETMET R29 R3 K128
+ 0x7C740200, // 0103 CALL R29 1
+ 0x8C74071C, // 0104 GETMET R29 R3 K28
+ 0x5C7C3200, // 0105 MOVE R31 R25
+ 0x5C803400, // 0106 MOVE R32 R26
+ 0x5C843600, // 0107 MOVE R33 R27
+ 0x5C883800, // 0108 MOVE R34 R28
+ 0x7C740A00, // 0109 CALL R29 5
+ 0x900F031F, // 010A SETMBR R3 K129 K31
+ 0x8C740782, // 010B GETMET R29 R3 K130
+ 0x7C740200, // 010C CALL R29 1
+ 0x8C740783, // 010D GETMET R29 R3 K131
+ 0x507C0200, // 010E LDBOOL R31 1 0
+ 0x7C740400, // 010F CALL R29 2
+ 0x8C740784, // 0110 GETMET R29 R3 K132
+ 0x7C740200, // 0111 CALL R29 1
+ 0x8C740785, // 0112 GETMET R29 R3 K133
+ 0x7C740200, // 0113 CALL R29 1
+ 0x8C740786, // 0114 GETMET R29 R3 K134
+ 0x7C740200, // 0115 CALL R29 1
+ 0x50740200, // 0116 LDBOOL R29 1 0
+ 0x80043A00, // 0117 RET 1 R29
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: process_incoming
+********************************************************************/
+be_local_closure(class_Matter_Commisioning_Context_process_incoming, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commisioning_Context, /* shared constants */
+ be_str_weak(process_incoming),
+ &be_const_str_solidified,
+ ( &(const binstruction[89]) { /* code */
+ 0x8808010D, // 0000 GETMBR R2 R0 K13
+ 0x8808053A, // 0001 GETMBR R2 R2 K58
+ 0x8C080587, // 0002 GETMET R2 R2 K135
+ 0x7C080200, // 0003 CALL R2 1
+ 0x740A000D, // 0004 JMPT R2 #0013
+ 0x8808031D, // 0005 GETMBR R2 R1 K29
+ 0x540E001F, // 0006 LDINT R3 32
+ 0x28080403, // 0007 GE R2 R2 R3
+ 0x780A0009, // 0008 JMPF R2 #0013
+ 0x8808031D, // 0009 GETMBR R2 R1 K29
+ 0x540E0023, // 000A LDINT R3 36
+ 0x18080403, // 000B LE R2 R2 R3
+ 0x780A0005, // 000C JMPF R2 #0013
+ 0xB80A0A00, // 000D GETNGBL R2 K5
+ 0x580C0088, // 000E LDCONST R3 K136
+ 0x58100022, // 000F LDCONST R4 K34
+ 0x7C080400, // 0010 CALL R2 2
+ 0x50080000, // 0011 LDBOOL R2 0 0
+ 0x80040400, // 0012 RET 1 R2
+ 0x8808031D, // 0013 GETMBR R2 R1 K29
+ 0x540E000F, // 0014 LDINT R3 16
+ 0x1C080403, // 0015 EQ R2 R2 R3
+ 0x780A0000, // 0016 JMPF R2 #0018
+ 0x7002003E, // 0017 JMP #0057
+ 0x8808031D, // 0018 GETMBR R2 R1 K29
+ 0x540E001F, // 0019 LDINT R3 32
+ 0x1C080403, // 001A EQ R2 R2 R3
+ 0x780A0004, // 001B JMPF R2 #0021
+ 0x8C080189, // 001C GETMET R2 R0 K137
+ 0x5C100200, // 001D MOVE R4 R1
+ 0x7C080400, // 001E CALL R2 2
+ 0x80040400, // 001F RET 1 R2
+ 0x70020035, // 0020 JMP #0057
+ 0x8808031D, // 0021 GETMBR R2 R1 K29
+ 0x540E0021, // 0022 LDINT R3 34
+ 0x1C080403, // 0023 EQ R2 R2 R3
+ 0x780A0004, // 0024 JMPF R2 #002A
+ 0x8C08018A, // 0025 GETMET R2 R0 K138
+ 0x5C100200, // 0026 MOVE R4 R1
+ 0x7C080400, // 0027 CALL R2 2
+ 0x80040400, // 0028 RET 1 R2
+ 0x7002002C, // 0029 JMP #0057
+ 0x8808031D, // 002A GETMBR R2 R1 K29
+ 0x540E0023, // 002B LDINT R3 36
+ 0x1C080403, // 002C EQ R2 R2 R3
+ 0x780A0004, // 002D JMPF R2 #0033
+ 0x8C08018B, // 002E GETMET R2 R0 K139
+ 0x5C100200, // 002F MOVE R4 R1
+ 0x7C080400, // 0030 CALL R2 2
+ 0x80040400, // 0031 RET 1 R2
+ 0x70020023, // 0032 JMP #0057
+ 0x8808031D, // 0033 GETMBR R2 R1 K29
+ 0x540E002F, // 0034 LDINT R3 48
+ 0x1C080403, // 0035 EQ R2 R2 R3
+ 0x780A0004, // 0036 JMPF R2 #003C
+ 0x8C08018C, // 0037 GETMET R2 R0 K140
+ 0x5C100200, // 0038 MOVE R4 R1
+ 0x7C080400, // 0039 CALL R2 2
+ 0x80040400, // 003A RET 1 R2
+ 0x7002001A, // 003B JMP #0057
+ 0x8808031D, // 003C GETMBR R2 R1 K29
+ 0x540E0031, // 003D LDINT R3 50
+ 0x1C080403, // 003E EQ R2 R2 R3
+ 0x780A0004, // 003F JMPF R2 #0045
+ 0x8C08018D, // 0040 GETMET R2 R0 K141
+ 0x5C100200, // 0041 MOVE R4 R1
+ 0x7C080400, // 0042 CALL R2 2
+ 0x80040400, // 0043 RET 1 R2
+ 0x70020011, // 0044 JMP #0057
+ 0x8808031D, // 0045 GETMBR R2 R1 K29
+ 0x540E003F, // 0046 LDINT R3 64
+ 0x1C080403, // 0047 EQ R2 R2 R3
+ 0x780A0004, // 0048 JMPF R2 #004E
+ 0x8C08018E, // 0049 GETMET R2 R0 K142
+ 0x5C100200, // 004A MOVE R4 R1
+ 0x7C080400, // 004B CALL R2 2
+ 0x80040400, // 004C RET 1 R2
+ 0x70020008, // 004D JMP #0057
+ 0xB80A0A00, // 004E GETNGBL R2 K5
+ 0x600C0018, // 004F GETGBL R3 G24
+ 0x5810008F, // 0050 LDCONST R4 K143
+ 0x8814031D, // 0051 GETMBR R5 R1 K29
+ 0x7C0C0400, // 0052 CALL R3 2
+ 0x58100022, // 0053 LDCONST R4 K34
+ 0x7C080400, // 0054 CALL R2 2
+ 0x50080000, // 0055 LDBOOL R2 0 0
+ 0x80040400, // 0056 RET 1 R2
+ 0x50080000, // 0057 LDBOOL R2 0 0
+ 0x80040400, // 0058 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_Sigma1
+********************************************************************/
+be_local_closure(class_Matter_Commisioning_Context_parse_Sigma1, /* name */
+ be_nested_proto(
+ 37, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commisioning_Context, /* shared constants */
+ be_str_weak(parse_Sigma1),
+ &be_const_str_solidified,
+ ( &(const binstruction[497]) { /* code */
+ 0xA40A1200, // 0000 IMPORT R2 K9
+ 0x880C0300, // 0001 GETMBR R3 R1 K0
+ 0x8810031D, // 0002 GETMBR R4 R1 K29
+ 0x5416002F, // 0003 LDINT R5 48
+ 0x20100805, // 0004 NE R4 R4 R5
+ 0x74120005, // 0005 JMPT R4 #000C
+ 0x8810031E, // 0006 GETMBR R4 R1 K30
+ 0x2010091F, // 0007 NE R4 R4 K31
+ 0x74120002, // 0008 JMPT R4 #000C
+ 0x88100320, // 0009 GETMBR R4 R1 K32
+ 0x2010091F, // 000A NE R4 R4 K31
+ 0x7812000C, // 000B JMPF R4 #0019
+ 0xB8120A00, // 000C GETNGBL R4 K5
+ 0x58140023, // 000D LDCONST R5 K35
+ 0x58180008, // 000E LDCONST R6 K8
+ 0x7C100400, // 000F CALL R4 2
+ 0x8C100124, // 0010 GETMET R4 R0 K36
+ 0x5C180200, // 0011 MOVE R6 R1
+ 0x581C0025, // 0012 LDCONST R7 K37
+ 0x5820001F, // 0013 LDCONST R8 K31
+ 0x58240022, // 0014 LDCONST R9 K34
+ 0x50280000, // 0015 LDBOOL R10 0 0
+ 0x7C100C00, // 0016 CALL R4 6
+ 0x50100000, // 0017 LDBOOL R4 0 0
+ 0x80040800, // 0018 RET 1 R4
+ 0xB8124C00, // 0019 GETNGBL R4 K38
+ 0x8C100990, // 001A GETMET R4 R4 K144
+ 0x7C100200, // 001B CALL R4 1
+ 0x8C100928, // 001C GETMET R4 R4 K40
+ 0x88180301, // 001D GETMBR R6 R1 K1
+ 0x881C0302, // 001E GETMBR R7 R1 K2
+ 0x7C100600, // 001F CALL R4 3
+ 0x88140991, // 0020 GETMBR R5 R4 K145
+ 0x900EF005, // 0021 SETMBR R3 K120 R5
+ 0x88140992, // 0022 GETMBR R5 R4 K146
+ 0x4C180000, // 0023 LDNIL R6
+ 0x20140A06, // 0024 NE R5 R5 R6
+ 0x78160003, // 0025 JMPF R5 #002A
+ 0x88140993, // 0026 GETMBR R5 R4 K147
+ 0x4C180000, // 0027 LDNIL R6
+ 0x20140A06, // 0028 NE R5 R5 R6
+ 0x74160000, // 0029 JMPT R5 #002B
+ 0x50140001, // 002A LDBOOL R5 0 1
+ 0x50140200, // 002B LDBOOL R5 1 0
+ 0x4C180000, // 002C LDNIL R6
+ 0x78160014, // 002D JMPF R5 #0043
+ 0x881C010D, // 002E GETMBR R7 R0 K13
+ 0x881C0F0E, // 002F GETMBR R7 R7 K14
+ 0x8C1C0F94, // 0030 GETMET R7 R7 K148
+ 0x88240992, // 0031 GETMBR R9 R4 K146
+ 0x7C1C0400, // 0032 CALL R7 2
+ 0x5C180E00, // 0033 MOVE R6 R7
+ 0x4C1C0000, // 0034 LDNIL R7
+ 0x1C1C0C07, // 0035 EQ R7 R6 R7
+ 0x741E0003, // 0036 JMPT R7 #003B
+ 0x881C0D95, // 0037 GETMBR R7 R6 K149
+ 0x4C200000, // 0038 LDNIL R8
+ 0x1C1C0E08, // 0039 EQ R7 R7 R8
+ 0x781E0007, // 003A JMPF R7 #0043
+ 0xB81E0A00, // 003B GETNGBL R7 K5
+ 0x60200018, // 003C GETGBL R8 G24
+ 0x58240096, // 003D LDCONST R9 K150
+ 0x88280992, // 003E GETMBR R10 R4 K146
+ 0x7C200400, // 003F CALL R8 2
+ 0x58240008, // 0040 LDCONST R9 K8
+ 0x7C1C0400, // 0041 CALL R7 2
+ 0x50140000, // 0042 LDBOOL R5 0 0
+ 0x781600C3, // 0043 JMPF R5 #0108
+ 0xB81E0A00, // 0044 GETNGBL R7 K5
+ 0x58200097, // 0045 LDCONST R8 K151
+ 0x58240008, // 0046 LDCONST R9 K8
+ 0x7C1C0400, // 0047 CALL R7 2
+ 0x881C0935, // 0048 GETMBR R7 R4 K53
+ 0x88200992, // 0049 GETMBR R8 R4 K146
+ 0x001C0E08, // 004A ADD R7 R7 R8
+ 0x60200015, // 004B GETGBL R8 G21
+ 0x7C200000, // 004C CALL R8 0
+ 0x8C20114E, // 004D GETMET R8 R8 K78
+ 0x58280098, // 004E LDCONST R10 K152
+ 0x7C200400, // 004F CALL R8 2
+ 0x8C240560, // 0050 GETMET R9 R2 K96
+ 0x7C240200, // 0051 CALL R9 1
+ 0x8C241361, // 0052 GETMET R9 R9 K97
+ 0x882C0D66, // 0053 GETMBR R11 R6 K102
+ 0x5C300E00, // 0054 MOVE R12 R7
+ 0x5C341000, // 0055 MOVE R13 R8
+ 0x543A000F, // 0056 LDINT R14 16
+ 0x7C240A00, // 0057 CALL R9 5
+ 0x60280015, // 0058 GETGBL R10 G21
+ 0x7C280000, // 0059 CALL R10 0
+ 0x8C28154E, // 005A GETMET R10 R10 K78
+ 0x58300099, // 005B LDCONST R12 K153
+ 0x7C280400, // 005C CALL R10 2
+ 0x542DFFEE, // 005D LDINT R11 -17
+ 0x402E3E0B, // 005E CONNECT R11 K31 R11
+ 0x88300993, // 005F GETMBR R12 R4 K147
+ 0x942C180B, // 0060 GETIDX R11 R12 R11
+ 0x5435FFEF, // 0061 LDINT R13 -16
+ 0x40341B03, // 0062 CONNECT R13 R13 K3
+ 0x88380993, // 0063 GETMBR R14 R4 K147
+ 0x94301C0D, // 0064 GETIDX R12 R14 R13
+ 0x8C3C0568, // 0065 GETMET R15 R2 K104
+ 0x5C441200, // 0066 MOVE R17 R9
+ 0x5C481400, // 0067 MOVE R18 R10
+ 0x604C0015, // 0068 GETGBL R19 G21
+ 0x7C4C0000, // 0069 CALL R19 0
+ 0x6050000C, // 006A GETGBL R20 G12
+ 0x5C541600, // 006B MOVE R21 R11
+ 0x7C500200, // 006C CALL R20 1
+ 0x5456000F, // 006D LDINT R21 16
+ 0x7C3C0C00, // 006E CALL R15 6
+ 0x5C341E00, // 006F MOVE R13 R15
+ 0x8C3C1B6A, // 0070 GETMET R15 R13 K106
+ 0x5C441600, // 0071 MOVE R17 R11
+ 0x7C3C0400, // 0072 CALL R15 2
+ 0x5C381E00, // 0073 MOVE R14 R15
+ 0x8C3C1B6B, // 0074 GETMET R15 R13 K107
+ 0x7C3C0200, // 0075 CALL R15 1
+ 0x1C40180F, // 0076 EQ R16 R12 R15
+ 0x7842008A, // 0077 JMPF R16 #0103
+ 0x88400D95, // 0078 GETMBR R16 R6 K149
+ 0x900F2A10, // 0079 SETMBR R3 K149 R16
+ 0x8840039B, // 007A GETMBR R16 R1 K155
+ 0x900F3410, // 007B SETMBR R3 K154 R16
+ 0x8C40079C, // 007C GETMET R16 R3 K156
+ 0x7C400200, // 007D CALL R16 1
+ 0x8840092E, // 007E GETMBR R16 R4 K46
+ 0x900E5A10, // 007F SETMBR R3 K45 R16
+ 0x8840010D, // 0080 GETMBR R16 R0 K13
+ 0x8840210E, // 0081 GETMBR R16 R16 K14
+ 0x8C402130, // 0082 GETMET R16 R16 K48
+ 0x7C400200, // 0083 CALL R16 1
+ 0x900E5E10, // 0084 SETMBR R3 K47 R16
+ 0xB8420A00, // 0085 GETNGBL R16 K5
+ 0x60440018, // 0086 GETGBL R17 G24
+ 0x58480031, // 0087 LDCONST R18 K49
+ 0x884C072F, // 0088 GETMBR R19 R3 K47
+ 0x88500332, // 0089 GETMBR R20 R1 K50
+ 0x88540333, // 008A GETMBR R21 R1 K51
+ 0x7C440800, // 008B CALL R17 4
+ 0x58480008, // 008C LDCONST R18 K8
+ 0x7C400400, // 008D CALL R16 2
+ 0x88400D66, // 008E GETMBR R16 R6 K102
+ 0x900ECC10, // 008F SETMBR R3 K102 R16
+ 0x8C400537, // 0090 GETMET R16 R2 K55
+ 0x544A000F, // 0091 LDINT R18 16
+ 0x7C400400, // 0092 CALL R16 2
+ 0x900F3A10, // 0093 SETMBR R3 K157 R16
+ 0x60400015, // 0094 GETGBL R16 G21
+ 0x7C400000, // 0095 CALL R16 0
+ 0x8C40214E, // 0096 GETMET R16 R16 K78
+ 0x5848009E, // 0097 LDCONST R18 K158
+ 0x7C400400, // 0098 CALL R16 2
+ 0x88440935, // 0099 GETMBR R17 R4 K53
+ 0x8848079D, // 009A GETMBR R18 R3 K157
+ 0x00442212, // 009B ADD R17 R17 R18
+ 0x8C480560, // 009C GETMET R18 R2 K96
+ 0x7C480200, // 009D CALL R18 1
+ 0x8C482561, // 009E GETMET R18 R18 K97
+ 0x88500766, // 009F GETMBR R20 R3 K102
+ 0x5C542200, // 00A0 MOVE R21 R17
+ 0x5C582000, // 00A1 MOVE R22 R16
+ 0x545E000F, // 00A2 LDINT R23 16
+ 0x7C480A00, // 00A3 CALL R18 5
+ 0x8C4C0568, // 00A4 GETMET R19 R2 K104
+ 0x5C542400, // 00A5 MOVE R21 R18
+ 0x60580015, // 00A6 GETGBL R22 G21
+ 0x7C580000, // 00A7 CALL R22 0
+ 0x8C582D4E, // 00A8 GETMET R22 R22 K78
+ 0x5860009F, // 00A9 LDCONST R24 K159
+ 0x7C580400, // 00AA CALL R22 2
+ 0x605C0015, // 00AB GETGBL R23 G21
+ 0x7C5C0000, // 00AC CALL R23 0
+ 0x5860001F, // 00AD LDCONST R24 K31
+ 0x5466000F, // 00AE LDINT R25 16
+ 0x7C4C0C00, // 00AF CALL R19 6
+ 0x8C50276B, // 00B0 GETMET R20 R19 K107
+ 0x7C500200, // 00B1 CALL R20 1
+ 0xB8564C00, // 00B2 GETNGBL R21 K38
+ 0x8C542BA0, // 00B3 GETMET R21 R21 K160
+ 0x7C540200, // 00B4 CALL R21 1
+ 0x8858079D, // 00B5 GETMBR R22 R3 K157
+ 0x90572416, // 00B6 SETMBR R21 K146 R22
+ 0x90574214, // 00B7 SETMBR R21 K161 R20
+ 0x8858072F, // 00B8 GETMBR R22 R3 K47
+ 0x90574416, // 00B9 SETMBR R21 K162 R22
+ 0x88580935, // 00BA GETMBR R22 R4 K53
+ 0x885C0D9D, // 00BB GETMBR R23 R6 K157
+ 0x00582C17, // 00BC ADD R22 R22 R23
+ 0x8C5C0560, // 00BD GETMET R23 R2 K96
+ 0x7C5C0200, // 00BE CALL R23 1
+ 0x8C5C2F61, // 00BF GETMET R23 R23 K97
+ 0x88640766, // 00C0 GETMBR R25 R3 K102
+ 0x5C682C00, // 00C1 MOVE R26 R22
+ 0x606C0015, // 00C2 GETGBL R27 G21
+ 0x7C6C0000, // 00C3 CALL R27 0
+ 0x8C6C374E, // 00C4 GETMET R27 R27 K78
+ 0x587400A3, // 00C5 LDCONST R29 K163
+ 0x7C6C0400, // 00C6 CALL R27 2
+ 0x5472002F, // 00C7 LDINT R28 48
+ 0x7C5C0A00, // 00C8 CALL R23 5
+ 0x5462000E, // 00C9 LDINT R24 15
+ 0x40623E18, // 00CA CONNECT R24 K31 R24
+ 0x94602E18, // 00CB GETIDX R24 R23 R24
+ 0x5466000F, // 00CC LDINT R25 16
+ 0x546A001E, // 00CD LDINT R26 31
+ 0x4064321A, // 00CE CONNECT R25 R25 R26
+ 0x94642E19, // 00CF GETIDX R25 R23 R25
+ 0x546A001F, // 00D0 LDINT R26 32
+ 0x546E002E, // 00D1 LDINT R27 47
+ 0x4068341B, // 00D2 CONNECT R26 R26 R27
+ 0x94682E1A, // 00D3 GETIDX R26 R23 R26
+ 0xB86E1400, // 00D4 GETNGBL R27 K10
+ 0x8C6C375F, // 00D5 GETMET R27 R27 K95
+ 0x7C6C0200, // 00D6 CALL R27 1
+ 0x8C702B3E, // 00D7 GETMET R28 R21 K62
+ 0x7C700200, // 00D8 CALL R28 1
+ 0x4C740000, // 00D9 LDNIL R29
+ 0x900E541D, // 00DA SETMBR R3 K42 R29
+ 0x8C740340, // 00DB GETMET R29 R1 K64
+ 0x547E0032, // 00DC LDINT R31 51
+ 0x50800200, // 00DD LDBOOL R32 1 0
+ 0x7C740600, // 00DE CALL R29 3
+ 0x8C783B41, // 00DF GETMET R30 R29 K65
+ 0x5C803800, // 00E0 MOVE R32 R28
+ 0x7C780400, // 00E1 CALL R30 2
+ 0x887C0142, // 00E2 GETMBR R31 R0 K66
+ 0x8C7C3F43, // 00E3 GETMET R31 R31 K67
+ 0x5C843A00, // 00E4 MOVE R33 R29
+ 0x7C7C0400, // 00E5 CALL R31 2
+ 0x8C7C0780, // 00E6 GETMET R31 R3 K128
+ 0x7C7C0200, // 00E7 CALL R31 1
+ 0x8C7C071C, // 00E8 GETMET R31 R3 K28
+ 0x5C843000, // 00E9 MOVE R33 R24
+ 0x5C883200, // 00EA MOVE R34 R25
+ 0x5C8C3400, // 00EB MOVE R35 R26
+ 0x5C903600, // 00EC MOVE R36 R27
+ 0x7C7C0A00, // 00ED CALL R31 5
+ 0x887C0D71, // 00EE GETMBR R31 R6 K113
+ 0x900EE21F, // 00EF SETMBR R3 K113 R31
+ 0x900F031F, // 00F0 SETMBR R3 K129 K31
+ 0x8C7C0782, // 00F1 GETMET R31 R3 K130
+ 0x7C7C0200, // 00F2 CALL R31 1
+ 0x8C7C0783, // 00F3 GETMET R31 R3 K131
+ 0x50840200, // 00F4 LDBOOL R33 1 0
+ 0x7C7C0400, // 00F5 CALL R31 2
+ 0x8C7C0784, // 00F6 GETMET R31 R3 K132
+ 0x7C7C0200, // 00F7 CALL R31 1
+ 0x8C7C0785, // 00F8 GETMET R31 R3 K133
+ 0x7C7C0200, // 00F9 CALL R31 1
+ 0x8C7C0786, // 00FA GETMET R31 R3 K134
+ 0x7C7C0200, // 00FB CALL R31 1
+ 0xB87E0A00, // 00FC GETNGBL R31 K5
+ 0x588000A4, // 00FD LDCONST R32 K164
+ 0x58840008, // 00FE LDCONST R33 K8
+ 0x7C7C0400, // 00FF CALL R31 2
+ 0x507C0200, // 0100 LDBOOL R31 1 0
+ 0x80043E00, // 0101 RET 1 R31
+ 0x70020004, // 0102 JMP #0108
+ 0xB8420A00, // 0103 GETNGBL R16 K5
+ 0x584400A5, // 0104 LDCONST R17 K165
+ 0x58480008, // 0105 LDCONST R18 K8
+ 0x7C400400, // 0106 CALL R16 2
+ 0x50140000, // 0107 LDBOOL R5 0 0
+ 0x5C1C0A00, // 0108 MOVE R7 R5
+ 0x741E00E4, // 0109 JMPT R7 #01EF
+ 0x8C1C01A6, // 010A GETMET R7 R0 K166
+ 0x882409A7, // 010B GETMBR R9 R4 K167
+ 0x88280935, // 010C GETMBR R10 R4 K53
+ 0x7C1C0600, // 010D CALL R7 3
+ 0x900F2A07, // 010E SETMBR R3 K149 R7
+ 0x4C200000, // 010F LDNIL R8
+ 0x1C200608, // 0110 EQ R8 R3 R8
+ 0x74220003, // 0111 JMPT R8 #0116
+ 0x88200795, // 0112 GETMBR R8 R3 K149
+ 0x4C240000, // 0113 LDNIL R9
+ 0x1C201009, // 0114 EQ R8 R8 R9
+ 0x7822000C, // 0115 JMPF R8 #0123
+ 0xB8220A00, // 0116 GETNGBL R8 K5
+ 0x582400A8, // 0117 LDCONST R9 K168
+ 0x58280008, // 0118 LDCONST R10 K8
+ 0x7C200400, // 0119 CALL R8 2
+ 0x8C200124, // 011A GETMET R8 R0 K36
+ 0x5C280200, // 011B MOVE R10 R1
+ 0x582C0025, // 011C LDCONST R11 K37
+ 0x5830001F, // 011D LDCONST R12 K31
+ 0x58340025, // 011E LDCONST R13 K37
+ 0x50380000, // 011F LDBOOL R14 0 0
+ 0x7C200C00, // 0120 CALL R8 6
+ 0x50200000, // 0121 LDBOOL R8 0 0
+ 0x80041000, // 0122 RET 1 R8
+ 0x8820039B, // 0123 GETMBR R8 R1 K155
+ 0x900F3408, // 0124 SETMBR R3 K154 R8
+ 0x8C20079C, // 0125 GETMET R8 R3 K156
+ 0x7C200200, // 0126 CALL R8 1
+ 0x8820092E, // 0127 GETMBR R8 R4 K46
+ 0x900E5A08, // 0128 SETMBR R3 K45 R8
+ 0x8820010D, // 0129 GETMBR R8 R0 K13
+ 0x8820110E, // 012A GETMBR R8 R8 K14
+ 0x8C201130, // 012B GETMET R8 R8 K48
+ 0x7C200200, // 012C CALL R8 1
+ 0x900E5E08, // 012D SETMBR R3 K47 R8
+ 0xB8220A00, // 012E GETNGBL R8 K5
+ 0x60240018, // 012F GETGBL R9 G24
+ 0x58280031, // 0130 LDCONST R10 K49
+ 0x882C072F, // 0131 GETMBR R11 R3 K47
+ 0x88300332, // 0132 GETMBR R12 R1 K50
+ 0x88340333, // 0133 GETMBR R13 R1 K51
+ 0x7C240800, // 0134 CALL R9 4
+ 0x58280008, // 0135 LDCONST R10 K8
+ 0x7C200400, // 0136 CALL R8 2
+ 0x8C200537, // 0137 GETMET R8 R2 K55
+ 0x542A000F, // 0138 LDINT R10 16
+ 0x7C200400, // 0139 CALL R8 2
+ 0x900F3A08, // 013A SETMBR R3 K157 R8
+ 0x8C200537, // 013B GETMET R8 R2 K55
+ 0x542A001F, // 013C LDINT R10 32
+ 0x7C200400, // 013D CALL R8 2
+ 0x900F5208, // 013E SETMBR R3 K169 R8
+ 0x8C20057A, // 013F GETMET R8 R2 K122
+ 0x7C200200, // 0140 CALL R8 1
+ 0x8C2011AA, // 0141 GETMET R8 R8 K170
+ 0x882807A9, // 0142 GETMBR R10 R3 K169
+ 0x7C200400, // 0143 CALL R8 2
+ 0x900EF208, // 0144 SETMBR R3 K121 R8
+ 0x8C200537, // 0145 GETMET R8 R2 K55
+ 0x542A001F, // 0146 LDINT R10 32
+ 0x7C200400, // 0147 CALL R8 2
+ 0x8C24057A, // 0148 GETMET R9 R2 K122
+ 0x7C240200, // 0149 CALL R9 1
+ 0x8C2413AB, // 014A GETMET R9 R9 K171
+ 0x882C07A9, // 014B GETMBR R11 R3 K169
+ 0x88300991, // 014C GETMBR R12 R4 K145
+ 0x7C240600, // 014D CALL R9 3
+ 0x900ECC09, // 014E SETMBR R3 K102 R9
+ 0xB8264C00, // 014F GETNGBL R9 K38
+ 0x8824136D, // 0150 GETMBR R9 R9 K109
+ 0x8C241375, // 0151 GETMET R9 R9 K117
+ 0x7C240200, // 0152 CALL R9 1
+ 0x8C281376, // 0153 GETMET R10 R9 K118
+ 0x58300025, // 0154 LDCONST R12 K37
+ 0xB8364C00, // 0155 GETNGBL R13 K38
+ 0x88341B6D, // 0156 GETMBR R13 R13 K109
+ 0x88341BAC, // 0157 GETMBR R13 R13 K172
+ 0x8C380FAD, // 0158 GETMET R14 R7 K173
+ 0x7C380200, // 0159 CALL R14 1
+ 0x7C280800, // 015A CALL R10 4
+ 0x8C281376, // 015B GETMET R10 R9 K118
+ 0x58300022, // 015C LDCONST R12 K34
+ 0xB8364C00, // 015D GETNGBL R13 K38
+ 0x88341B6D, // 015E GETMBR R13 R13 K109
+ 0x88341BAC, // 015F GETMBR R13 R13 K172
+ 0x8C380FAE, // 0160 GETMET R14 R7 K174
+ 0x7C380200, // 0161 CALL R14 1
+ 0x7C280800, // 0162 CALL R10 4
+ 0x8C281376, // 0163 GETMET R10 R9 K118
+ 0x58300008, // 0164 LDCONST R12 K8
+ 0xB8364C00, // 0165 GETNGBL R13 K38
+ 0x88341B6D, // 0166 GETMBR R13 R13 K109
+ 0x88341BAC, // 0167 GETMBR R13 R13 K172
+ 0x88380779, // 0168 GETMBR R14 R3 K121
+ 0x7C280800, // 0169 CALL R10 4
+ 0x8C281376, // 016A GETMET R10 R9 K118
+ 0x54320003, // 016B LDINT R12 4
+ 0xB8364C00, // 016C GETNGBL R13 K38
+ 0x88341B6D, // 016D GETMBR R13 R13 K109
+ 0x88341BAC, // 016E GETMBR R13 R13 K172
+ 0x88380991, // 016F GETMBR R14 R4 K145
+ 0x7C280800, // 0170 CALL R10 4
+ 0x8C28057A, // 0171 GETMET R10 R2 K122
+ 0x7C280200, // 0172 CALL R10 1
+ 0x8C2815AF, // 0173 GETMET R10 R10 K175
+ 0x8C300FB0, // 0174 GETMET R12 R7 K176
+ 0x7C300200, // 0175 CALL R12 1
+ 0x8C34133E, // 0176 GETMET R13 R9 K62
+ 0x7C340200, // 0177 CALL R13 1
+ 0x7C280600, // 0178 CALL R10 3
+ 0xB82E4C00, // 0179 GETNGBL R11 K38
+ 0x882C176D, // 017A GETMBR R11 R11 K109
+ 0x8C2C1775, // 017B GETMET R11 R11 K117
+ 0x7C2C0200, // 017C CALL R11 1
+ 0x8C301776, // 017D GETMET R12 R11 K118
+ 0x58380025, // 017E LDCONST R14 K37
+ 0xB83E4C00, // 017F GETNGBL R15 K38
+ 0x883C1F6D, // 0180 GETMBR R15 R15 K109
+ 0x883C1FAC, // 0181 GETMBR R15 R15 K172
+ 0x8C400FAD, // 0182 GETMET R16 R7 K173
+ 0x7C400200, // 0183 CALL R16 1
+ 0x7C300800, // 0184 CALL R12 4
+ 0x8C301776, // 0185 GETMET R12 R11 K118
+ 0x58380022, // 0186 LDCONST R14 K34
+ 0xB83E4C00, // 0187 GETNGBL R15 K38
+ 0x883C1F6D, // 0188 GETMBR R15 R15 K109
+ 0x883C1FAC, // 0189 GETMBR R15 R15 K172
+ 0x8C400FAE, // 018A GETMET R16 R7 K174
+ 0x7C400200, // 018B CALL R16 1
+ 0x7C300800, // 018C CALL R12 4
+ 0x8C301776, // 018D GETMET R12 R11 K118
+ 0x58380008, // 018E LDCONST R14 K8
+ 0xB83E4C00, // 018F GETNGBL R15 K38
+ 0x883C1F6D, // 0190 GETMBR R15 R15 K109
+ 0x883C1FAC, // 0191 GETMBR R15 R15 K172
+ 0x5C401400, // 0192 MOVE R16 R10
+ 0x7C300800, // 0193 CALL R12 4
+ 0x8C301776, // 0194 GETMET R12 R11 K118
+ 0x543A0003, // 0195 LDINT R14 4
+ 0xB83E4C00, // 0196 GETNGBL R15 K38
+ 0x883C1F6D, // 0197 GETMBR R15 R15 K109
+ 0x883C1FAC, // 0198 GETMBR R15 R15 K172
+ 0x8840079D, // 0199 GETMBR R16 R3 K157
+ 0x7C300800, // 019A CALL R12 4
+ 0x883009B1, // 019B GETMBR R12 R4 K177
+ 0x900E540C, // 019C SETMBR R3 K42 R12
+ 0x8C30054D, // 019D GETMET R12 R2 K77
+ 0x7C300200, // 019E CALL R12 1
+ 0x8C301916, // 019F GETMET R12 R12 K22
+ 0x8838072A, // 01A0 GETMBR R14 R3 K42
+ 0x7C300400, // 01A1 CALL R12 2
+ 0x8C301917, // 01A2 GETMET R12 R12 K23
+ 0x7C300200, // 01A3 CALL R12 1
+ 0x60340015, // 01A4 GETGBL R13 G21
+ 0x7C340000, // 01A5 CALL R13 0
+ 0x8C341B4E, // 01A6 GETMET R13 R13 K78
+ 0x883C01B2, // 01A7 GETMBR R15 R0 K178
+ 0x7C340400, // 01A8 CALL R13 2
+ 0x8C380F14, // 01A9 GETMET R14 R7 K20
+ 0x7C380200, // 01AA CALL R14 1
+ 0x00381C08, // 01AB ADD R14 R14 R8
+ 0x883C0779, // 01AC GETMBR R15 R3 K121
+ 0x00381C0F, // 01AD ADD R14 R14 R15
+ 0x00381C0C, // 01AE ADD R14 R14 R12
+ 0x8C3C0560, // 01AF GETMET R15 R2 K96
+ 0x7C3C0200, // 01B0 CALL R15 1
+ 0x8C3C1F61, // 01B1 GETMET R15 R15 K97
+ 0x88440766, // 01B2 GETMBR R17 R3 K102
+ 0x5C481C00, // 01B3 MOVE R18 R14
+ 0x5C4C1A00, // 01B4 MOVE R19 R13
+ 0x5452000F, // 01B5 LDINT R20 16
+ 0x7C3C0A00, // 01B6 CALL R15 5
+ 0x8C40173E, // 01B7 GETMET R16 R11 K62
+ 0x7C400200, // 01B8 CALL R16 1
+ 0x8C440568, // 01B9 GETMET R17 R2 K104
+ 0x5C4C1E00, // 01BA MOVE R19 R15
+ 0x60500015, // 01BB GETGBL R20 G21
+ 0x7C500000, // 01BC CALL R20 0
+ 0x8C50294E, // 01BD GETMET R20 R20 K78
+ 0x885801B3, // 01BE GETMBR R22 R0 K179
+ 0x7C500400, // 01BF CALL R20 2
+ 0x60540015, // 01C0 GETGBL R21 G21
+ 0x7C540000, // 01C1 CALL R21 0
+ 0x6058000C, // 01C2 GETGBL R22 G12
+ 0x5C5C2000, // 01C3 MOVE R23 R16
+ 0x7C580200, // 01C4 CALL R22 1
+ 0x545E000F, // 01C5 LDINT R23 16
+ 0x7C440C00, // 01C6 CALL R17 6
+ 0x8C4823B4, // 01C7 GETMET R18 R17 K180
+ 0x5C502000, // 01C8 MOVE R20 R16
+ 0x7C480400, // 01C9 CALL R18 2
+ 0x8C4C236B, // 01CA GETMET R19 R17 K107
+ 0x7C4C0200, // 01CB CALL R19 1
+ 0x00482413, // 01CC ADD R18 R18 R19
+ 0xB84E4C00, // 01CD GETNGBL R19 K38
+ 0x8C4C27B5, // 01CE GETMET R19 R19 K181
+ 0x7C4C0200, // 01CF CALL R19 1
+ 0x904E6C08, // 01D0 SETMBR R19 K54 R8
+ 0x8850072F, // 01D1 GETMBR R20 R3 K47
+ 0x904E7014, // 01D2 SETMBR R19 K56 R20
+ 0x88500779, // 01D3 GETMBR R20 R3 K121
+ 0x904F6C14, // 01D4 SETMBR R19 K182 R20
+ 0x904F6E12, // 01D5 SETMBR R19 K183 R18
+ 0x8C50273E, // 01D6 GETMET R20 R19 K62
+ 0x7C500200, // 01D7 CALL R20 1
+ 0x900E7E14, // 01D8 SETMBR R3 K63 R20
+ 0x8C540340, // 01D9 GETMET R21 R1 K64
+ 0x545E0030, // 01DA LDINT R23 49
+ 0x50600200, // 01DB LDBOOL R24 1 0
+ 0x7C540600, // 01DC CALL R21 3
+ 0x8C582B41, // 01DD GETMET R22 R21 K65
+ 0x5C602800, // 01DE MOVE R24 R20
+ 0x7C580400, // 01DF CALL R22 2
+ 0xB85E0A00, // 01E0 GETNGBL R23 K5
+ 0x60600018, // 01E1 GETGBL R24 G24
+ 0x586400B8, // 01E2 LDCONST R25 K184
+ 0x8868072F, // 01E3 GETMBR R26 R3 K47
+ 0x886C075A, // 01E4 GETMBR R27 R3 K90
+ 0x8870075B, // 01E5 GETMBR R28 R3 K91
+ 0x7C600800, // 01E6 CALL R24 4
+ 0x58640022, // 01E7 LDCONST R25 K34
+ 0x7C5C0400, // 01E8 CALL R23 2
+ 0x885C0142, // 01E9 GETMBR R23 R0 K66
+ 0x8C5C2F43, // 01EA GETMET R23 R23 K67
+ 0x5C642A00, // 01EB MOVE R25 R21
+ 0x7C5C0400, // 01EC CALL R23 2
+ 0x505C0200, // 01ED LDBOOL R23 1 0
+ 0x80042E00, // 01EE RET 1 R23
+ 0x501C0200, // 01EF LDBOOL R7 1 0
+ 0x80040E00, // 01F0 RET 1 R7
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Commisioning_Context
+********************************************************************/
+be_local_class(Matter_Commisioning_Context,
+ 2,
+ NULL,
+ be_nested_map(20,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_Commisioning_Context_every_second_closure) },
+ { be_const_key_weak(parse_StatusReport, -1), be_const_closure(class_Matter_Commisioning_Context_parse_StatusReport_closure) },
+ { be_const_key_weak(S2K_Info, -1), be_nested_str_weak(Sigma2) },
+ { be_const_key_weak(find_fabric_by_destination_id, -1), be_const_closure(class_Matter_Commisioning_Context_find_fabric_by_destination_id_closure) },
+ { be_const_key_weak(process_incoming, 18), be_const_closure(class_Matter_Commisioning_Context_process_incoming_closure) },
+ { be_const_key_weak(Matter_Context_Prefix, 0), be_nested_str_weak(CHIP_X20PAKE_X20V1_X20Commissioning) },
+ { be_const_key_weak(SEKeys_Info, -1), be_nested_str_weak(SessionKeys) },
+ { be_const_key_weak(TBEData3_Nonce, 4), be_nested_str_weak(NCASE_Sigma3N) },
+ { be_const_key_weak(parse_PBKDFParamRequest, -1), be_const_closure(class_Matter_Commisioning_Context_parse_PBKDFParamRequest_closure) },
+ { be_const_key_weak(send_status_report, -1), be_const_closure(class_Matter_Commisioning_Context_send_status_report_closure) },
+ { be_const_key_weak(parse_Sigma3, -1), be_const_closure(class_Matter_Commisioning_Context_parse_Sigma3_closure) },
+ { be_const_key_weak(device, -1), be_const_var(1) },
+ { be_const_key_weak(TBEData2_Nonce, -1), be_nested_str_weak(NCASE_Sigma2N) },
+ { be_const_key_weak(responder, 16), be_const_var(0) },
+ { be_const_key_weak(parse_Pake3, -1), be_const_closure(class_Matter_Commisioning_Context_parse_Pake3_closure) },
+ { be_const_key_weak(init, 14), be_const_closure(class_Matter_Commisioning_Context_init_closure) },
+ { be_const_key_weak(parse_Pake1, -1), be_const_closure(class_Matter_Commisioning_Context_parse_Pake1_closure) },
+ { be_const_key_weak(S3K_Info, 10), be_nested_str_weak(Sigma3) },
+ { be_const_key_weak(add_session, -1), be_const_closure(class_Matter_Commisioning_Context_add_session_closure) },
+ { be_const_key_weak(parse_Sigma1, -1), be_const_closure(class_Matter_Commisioning_Context_parse_Sigma1_closure) },
+ })),
+ be_str_weak(Matter_Commisioning_Context)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Data.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Data.h
index 89b84b3fa..67058d57c 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Data.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning_Data.h
@@ -9,21 +9,20 @@ extern const bclass be_class_Matter_PBKDFParamRequest;
/********************************************************************
** Solidified function: parse
********************************************************************/
-extern const bclass be_class_Matter_PBKDFParamRequest;
be_local_closure(class_Matter_PBKDFParamRequest_parse, /* name */
be_nested_proto(
- 8, /* nstack */
+ 9, /* nstack */
3, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_PBKDFParamRequest,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[16]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(TLV),
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(TLV),
+ /* K2 */ be_const_int(0),
/* K3 */ be_nested_str_weak(parse),
/* K4 */ be_nested_str_weak(initiatorRandom),
/* K5 */ be_nested_str_weak(getsubval),
@@ -41,46 +40,46 @@ be_local_closure(class_Matter_PBKDFParamRequest_parse, /* name */
be_str_weak(parse),
&be_const_str_solidified,
( &(const binstruction[41]) { /* code */
- 0x4C0C0000, // 0000 LDNIL R3
- 0x1C0C0403, // 0001 EQ R3 R2 R3
- 0x780E0000, // 0002 JMPF R3 #0004
- 0x58080000, // 0003 LDCONST R2 K0
- 0xB80E0200, // 0004 GETNGBL R3 K1
- 0x880C0702, // 0005 GETMBR R3 R3 K2
- 0x8C0C0703, // 0006 GETMET R3 R3 K3
- 0x5C140200, // 0007 MOVE R5 R1
- 0x5C180400, // 0008 MOVE R6 R2
- 0x7C0C0600, // 0009 CALL R3 3
- 0x8C100705, // 000A GETMET R4 R3 K5
- 0x58180006, // 000B LDCONST R6 K6
- 0x7C100400, // 000C CALL R4 2
- 0x90020804, // 000D SETMBR R0 K4 R4
- 0x8C100705, // 000E GETMET R4 R3 K5
- 0x58180008, // 000F LDCONST R6 K8
- 0x7C100400, // 0010 CALL R4 2
- 0x90020E04, // 0011 SETMBR R0 K7 R4
- 0x8C100705, // 0012 GETMET R4 R3 K5
- 0x5818000A, // 0013 LDCONST R6 K10
- 0x7C100400, // 0014 CALL R4 2
- 0x90021204, // 0015 SETMBR R0 K9 R4
- 0x8C100705, // 0016 GETMET R4 R3 K5
- 0x541A0003, // 0017 LDINT R6 4
- 0x7C100400, // 0018 CALL R4 2
- 0x90021604, // 0019 SETMBR R0 K11 R4
- 0x8C10070C, // 001A GETMET R4 R3 K12
- 0x541A0004, // 001B LDINT R6 5
- 0x7C100400, // 001C CALL R4 2
- 0x4C140000, // 001D LDNIL R5
- 0x20140805, // 001E NE R5 R4 R5
- 0x78160007, // 001F JMPF R5 #0028
- 0x8C14090E, // 0020 GETMET R5 R4 K14
- 0x581C0006, // 0021 LDCONST R7 K6
- 0x7C140400, // 0022 CALL R5 2
- 0x90021A05, // 0023 SETMBR R0 K13 R5
- 0x8C14090E, // 0024 GETMET R5 R4 K14
- 0x581C0008, // 0025 LDCONST R7 K8
- 0x7C140400, // 0026 CALL R5 2
- 0x90021E05, // 0027 SETMBR R0 K15 R5
+ 0xB80E0000, // 0000 GETNGBL R3 K0
+ 0x880C0701, // 0001 GETMBR R3 R3 K1
+ 0x4C100000, // 0002 LDNIL R4
+ 0x1C100404, // 0003 EQ R4 R2 R4
+ 0x78120000, // 0004 JMPF R4 #0006
+ 0x58080002, // 0005 LDCONST R2 K2
+ 0x8C100703, // 0006 GETMET R4 R3 K3
+ 0x5C180200, // 0007 MOVE R6 R1
+ 0x5C1C0400, // 0008 MOVE R7 R2
+ 0x7C100600, // 0009 CALL R4 3
+ 0x8C140905, // 000A GETMET R5 R4 K5
+ 0x581C0006, // 000B LDCONST R7 K6
+ 0x7C140400, // 000C CALL R5 2
+ 0x90020805, // 000D SETMBR R0 K4 R5
+ 0x8C140905, // 000E GETMET R5 R4 K5
+ 0x581C0008, // 000F LDCONST R7 K8
+ 0x7C140400, // 0010 CALL R5 2
+ 0x90020E05, // 0011 SETMBR R0 K7 R5
+ 0x8C140905, // 0012 GETMET R5 R4 K5
+ 0x581C000A, // 0013 LDCONST R7 K10
+ 0x7C140400, // 0014 CALL R5 2
+ 0x90021205, // 0015 SETMBR R0 K9 R5
+ 0x8C140905, // 0016 GETMET R5 R4 K5
+ 0x541E0003, // 0017 LDINT R7 4
+ 0x7C140400, // 0018 CALL R5 2
+ 0x90021605, // 0019 SETMBR R0 K11 R5
+ 0x8C14090C, // 001A GETMET R5 R4 K12
+ 0x541E0004, // 001B LDINT R7 5
+ 0x7C140400, // 001C CALL R5 2
+ 0x4C180000, // 001D LDNIL R6
+ 0x20180A06, // 001E NE R6 R5 R6
+ 0x781A0007, // 001F JMPF R6 #0028
+ 0x8C180B0E, // 0020 GETMET R6 R5 K14
+ 0x58200006, // 0021 LDCONST R8 K6
+ 0x7C180400, // 0022 CALL R6 2
+ 0x90021A06, // 0023 SETMBR R0 K13 R6
+ 0x8C180B0E, // 0024 GETMET R6 R5 K14
+ 0x58200008, // 0025 LDCONST R8 K8
+ 0x7C180400, // 0026 CALL R6 2
+ 0x90021E06, // 0027 SETMBR R0 K15 R6
0x80040000, // 0028 RET 1 R0
})
)
@@ -112,16 +111,15 @@ extern const bclass be_class_Matter_PBKDFParamResponse;
/********************************************************************
** Solidified function: tlv2raw
********************************************************************/
-extern const bclass be_class_Matter_PBKDFParamResponse;
be_local_closure(class_Matter_PBKDFParamResponse_tlv2raw, /* name */
be_nested_proto(
- 10, /* nstack */
+ 11, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_PBKDFParamResponse,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[19]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
@@ -146,78 +144,64 @@ be_local_closure(class_Matter_PBKDFParamResponse_tlv2raw, /* name */
}),
be_str_weak(tlv2raw),
&be_const_str_solidified,
- ( &(const binstruction[71]) { /* code */
+ ( &(const binstruction[57]) { /* code */
0xB80A0000, // 0000 GETNGBL R2 K0
0x88080501, // 0001 GETMBR R2 R2 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
- 0x7C080200, // 0003 CALL R2 1
- 0x8C0C0503, // 0004 GETMET R3 R2 K3
- 0x58140004, // 0005 LDCONST R5 K4
- 0xB81A0000, // 0006 GETNGBL R6 K0
- 0x88180D01, // 0007 GETMBR R6 R6 K1
- 0x88180D05, // 0008 GETMBR R6 R6 K5
- 0x881C0106, // 0009 GETMBR R7 R0 K6
- 0x7C0C0800, // 000A CALL R3 4
- 0x8C0C0503, // 000B GETMET R3 R2 K3
- 0x58140007, // 000C LDCONST R5 K7
- 0xB81A0000, // 000D GETNGBL R6 K0
- 0x88180D01, // 000E GETMBR R6 R6 K1
- 0x88180D05, // 000F GETMBR R6 R6 K5
- 0x881C0108, // 0010 GETMBR R7 R0 K8
- 0x7C0C0800, // 0011 CALL R3 4
- 0x8C0C0503, // 0012 GETMET R3 R2 K3
- 0x58140009, // 0013 LDCONST R5 K9
- 0xB81A0000, // 0014 GETNGBL R6 K0
- 0x88180D01, // 0015 GETMBR R6 R6 K1
- 0x88180D0A, // 0016 GETMBR R6 R6 K10
- 0x881C010B, // 0017 GETMBR R7 R0 K11
- 0x7C0C0800, // 0018 CALL R3 4
- 0x8C0C050C, // 0019 GETMET R3 R2 K12
- 0x54160003, // 001A LDINT R5 4
- 0x7C0C0400, // 001B CALL R3 2
- 0x8C100703, // 001C GETMET R4 R3 K3
- 0x58180004, // 001D LDCONST R6 K4
- 0xB81E0000, // 001E GETNGBL R7 K0
- 0x881C0F01, // 001F GETMBR R7 R7 K1
- 0x881C0F0D, // 0020 GETMBR R7 R7 K13
- 0x8820010E, // 0021 GETMBR R8 R0 K14
- 0x7C100800, // 0022 CALL R4 4
- 0x8C100703, // 0023 GETMET R4 R3 K3
- 0x58180007, // 0024 LDCONST R6 K7
- 0xB81E0000, // 0025 GETNGBL R7 K0
- 0x881C0F01, // 0026 GETMBR R7 R7 K1
- 0x881C0F05, // 0027 GETMBR R7 R7 K5
- 0x8820010F, // 0028 GETMBR R8 R0 K15
- 0x7C100800, // 0029 CALL R4 4
- 0x88100110, // 002A GETMBR R4 R0 K16
- 0x4C140000, // 002B LDNIL R5
- 0x20100805, // 002C NE R4 R4 R5
- 0x74120003, // 002D JMPT R4 #0032
- 0x88100111, // 002E GETMBR R4 R0 K17
- 0x4C140000, // 002F LDNIL R5
- 0x20100805, // 0030 NE R4 R4 R5
- 0x78120010, // 0031 JMPF R4 #0043
- 0x8C10050C, // 0032 GETMET R4 R2 K12
- 0x541A0004, // 0033 LDINT R6 5
- 0x7C100400, // 0034 CALL R4 2
- 0x8C140903, // 0035 GETMET R5 R4 K3
- 0x581C0004, // 0036 LDCONST R7 K4
- 0xB8220000, // 0037 GETNGBL R8 K0
- 0x88201101, // 0038 GETMBR R8 R8 K1
- 0x8820110D, // 0039 GETMBR R8 R8 K13
- 0x88240110, // 003A GETMBR R9 R0 K16
- 0x7C140800, // 003B CALL R5 4
- 0x8C140903, // 003C GETMET R5 R4 K3
- 0x581C0007, // 003D LDCONST R7 K7
- 0xB8220000, // 003E GETNGBL R8 K0
- 0x88201101, // 003F GETMBR R8 R8 K1
- 0x8820110D, // 0040 GETMBR R8 R8 K13
- 0x88240111, // 0041 GETMBR R9 R0 K17
- 0x7C140800, // 0042 CALL R5 4
- 0x8C100512, // 0043 GETMET R4 R2 K18
- 0x5C180200, // 0044 MOVE R6 R1
- 0x7C100400, // 0045 CALL R4 2
- 0x80040800, // 0046 RET 1 R4
+ 0x8C0C0502, // 0002 GETMET R3 R2 K2
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x8C100703, // 0004 GETMET R4 R3 K3
+ 0x58180004, // 0005 LDCONST R6 K4
+ 0x881C0505, // 0006 GETMBR R7 R2 K5
+ 0x88200106, // 0007 GETMBR R8 R0 K6
+ 0x7C100800, // 0008 CALL R4 4
+ 0x8C100703, // 0009 GETMET R4 R3 K3
+ 0x58180007, // 000A LDCONST R6 K7
+ 0x881C0505, // 000B GETMBR R7 R2 K5
+ 0x88200108, // 000C GETMBR R8 R0 K8
+ 0x7C100800, // 000D CALL R4 4
+ 0x8C100703, // 000E GETMET R4 R3 K3
+ 0x58180009, // 000F LDCONST R6 K9
+ 0x881C050A, // 0010 GETMBR R7 R2 K10
+ 0x8820010B, // 0011 GETMBR R8 R0 K11
+ 0x7C100800, // 0012 CALL R4 4
+ 0x8C10070C, // 0013 GETMET R4 R3 K12
+ 0x541A0003, // 0014 LDINT R6 4
+ 0x7C100400, // 0015 CALL R4 2
+ 0x8C140903, // 0016 GETMET R5 R4 K3
+ 0x581C0004, // 0017 LDCONST R7 K4
+ 0x8820050D, // 0018 GETMBR R8 R2 K13
+ 0x8824010E, // 0019 GETMBR R9 R0 K14
+ 0x7C140800, // 001A CALL R5 4
+ 0x8C140903, // 001B GETMET R5 R4 K3
+ 0x581C0007, // 001C LDCONST R7 K7
+ 0x88200505, // 001D GETMBR R8 R2 K5
+ 0x8824010F, // 001E GETMBR R9 R0 K15
+ 0x7C140800, // 001F CALL R5 4
+ 0x88140110, // 0020 GETMBR R5 R0 K16
+ 0x4C180000, // 0021 LDNIL R6
+ 0x20140A06, // 0022 NE R5 R5 R6
+ 0x74160003, // 0023 JMPT R5 #0028
+ 0x88140111, // 0024 GETMBR R5 R0 K17
+ 0x4C180000, // 0025 LDNIL R6
+ 0x20140A06, // 0026 NE R5 R5 R6
+ 0x7816000C, // 0027 JMPF R5 #0035
+ 0x8C14070C, // 0028 GETMET R5 R3 K12
+ 0x541E0004, // 0029 LDINT R7 5
+ 0x7C140400, // 002A CALL R5 2
+ 0x8C180B03, // 002B GETMET R6 R5 K3
+ 0x58200004, // 002C LDCONST R8 K4
+ 0x8824050D, // 002D GETMBR R9 R2 K13
+ 0x88280110, // 002E GETMBR R10 R0 K16
+ 0x7C180800, // 002F CALL R6 4
+ 0x8C180B03, // 0030 GETMET R6 R5 K3
+ 0x58200007, // 0031 LDCONST R8 K7
+ 0x8824050D, // 0032 GETMBR R9 R2 K13
+ 0x88280111, // 0033 GETMBR R10 R0 K17
+ 0x7C180800, // 0034 CALL R6 4
+ 0x8C140712, // 0035 GETMET R5 R3 K18
+ 0x5C1C0200, // 0036 MOVE R7 R1
+ 0x7C140400, // 0037 CALL R5 2
+ 0x80040A00, // 0038 RET 1 R5
})
)
);
@@ -249,7 +233,6 @@ extern const bclass be_class_Matter_Pake1;
/********************************************************************
** Solidified function: parse
********************************************************************/
-extern const bclass be_class_Matter_Pake1;
be_local_closure(class_Matter_Pake1_parse, /* name */
be_nested_proto(
7, /* nstack */
@@ -258,7 +241,7 @@ be_local_closure(class_Matter_Pake1_parse, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Pake1,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 7]) { /* constants */
/* K0 */ be_const_int(0),
@@ -312,16 +295,15 @@ extern const bclass be_class_Matter_Pake2;
/********************************************************************
** Solidified function: tlv2raw
********************************************************************/
-extern const bclass be_class_Matter_Pake2;
be_local_closure(class_Matter_Pake2_tlv2raw, /* name */
be_nested_proto(
- 8, /* nstack */
+ 9, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Pake2,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
@@ -337,29 +319,25 @@ be_local_closure(class_Matter_Pake2_tlv2raw, /* name */
}),
be_str_weak(tlv2raw),
&be_const_str_solidified,
- ( &(const binstruction[22]) { /* code */
+ ( &(const binstruction[18]) { /* code */
0xB80A0000, // 0000 GETNGBL R2 K0
0x88080501, // 0001 GETMBR R2 R2 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
- 0x7C080200, // 0003 CALL R2 1
- 0x8C0C0503, // 0004 GETMET R3 R2 K3
- 0x58140004, // 0005 LDCONST R5 K4
- 0xB81A0000, // 0006 GETNGBL R6 K0
- 0x88180D01, // 0007 GETMBR R6 R6 K1
- 0x88180D05, // 0008 GETMBR R6 R6 K5
- 0x881C0106, // 0009 GETMBR R7 R0 K6
- 0x7C0C0800, // 000A CALL R3 4
- 0x8C0C0503, // 000B GETMET R3 R2 K3
- 0x58140007, // 000C LDCONST R5 K7
- 0xB81A0000, // 000D GETNGBL R6 K0
- 0x88180D01, // 000E GETMBR R6 R6 K1
- 0x88180D05, // 000F GETMBR R6 R6 K5
- 0x881C0108, // 0010 GETMBR R7 R0 K8
- 0x7C0C0800, // 0011 CALL R3 4
- 0x8C0C0509, // 0012 GETMET R3 R2 K9
- 0x5C140200, // 0013 MOVE R5 R1
- 0x7C0C0400, // 0014 CALL R3 2
- 0x80040600, // 0015 RET 1 R3
+ 0x8C0C0502, // 0002 GETMET R3 R2 K2
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x8C100703, // 0004 GETMET R4 R3 K3
+ 0x58180004, // 0005 LDCONST R6 K4
+ 0x881C0505, // 0006 GETMBR R7 R2 K5
+ 0x88200106, // 0007 GETMBR R8 R0 K6
+ 0x7C100800, // 0008 CALL R4 4
+ 0x8C100703, // 0009 GETMET R4 R3 K3
+ 0x58180007, // 000A LDCONST R6 K7
+ 0x881C0505, // 000B GETMBR R7 R2 K5
+ 0x88200108, // 000C GETMBR R8 R0 K8
+ 0x7C100800, // 000D CALL R4 4
+ 0x8C100709, // 000E GETMET R4 R3 K9
+ 0x5C180200, // 000F MOVE R6 R1
+ 0x7C100400, // 0010 CALL R4 2
+ 0x80040800, // 0011 RET 1 R4
})
)
);
@@ -386,7 +364,6 @@ extern const bclass be_class_Matter_Pake3;
/********************************************************************
** Solidified function: parse
********************************************************************/
-extern const bclass be_class_Matter_Pake3;
be_local_closure(class_Matter_Pake3_parse, /* name */
be_nested_proto(
7, /* nstack */
@@ -395,7 +372,7 @@ be_local_closure(class_Matter_Pake3_parse, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Pake3,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 7]) { /* constants */
/* K0 */ be_const_int(0),
@@ -449,7 +426,6 @@ extern const bclass be_class_Matter_Sigma1;
/********************************************************************
** Solidified function: parse
********************************************************************/
-extern const bclass be_class_Matter_Sigma1;
be_local_closure(class_Matter_Sigma1_parse, /* name */
be_nested_proto(
8, /* nstack */
@@ -458,7 +434,7 @@ be_local_closure(class_Matter_Sigma1_parse, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Sigma1,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[20]) { /* constants */
/* K0 */ be_const_int(0),
@@ -570,16 +546,15 @@ extern const bclass be_class_Matter_Sigma2;
/********************************************************************
** Solidified function: tlv2raw
********************************************************************/
-extern const bclass be_class_Matter_Sigma2;
be_local_closure(class_Matter_Sigma2_tlv2raw, /* name */
be_nested_proto(
- 9, /* nstack */
+ 10, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Sigma2,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[18]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
@@ -603,68 +578,56 @@ be_local_closure(class_Matter_Sigma2_tlv2raw, /* name */
}),
be_str_weak(tlv2raw),
&be_const_str_solidified,
- ( &(const binstruction[61]) { /* code */
+ ( &(const binstruction[49]) { /* code */
0xB80A0000, // 0000 GETNGBL R2 K0
0x88080501, // 0001 GETMBR R2 R2 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
- 0x7C080200, // 0003 CALL R2 1
- 0x8C0C0503, // 0004 GETMET R3 R2 K3
- 0x58140004, // 0005 LDCONST R5 K4
- 0xB81A0000, // 0006 GETNGBL R6 K0
- 0x88180D01, // 0007 GETMBR R6 R6 K1
- 0x88180D05, // 0008 GETMBR R6 R6 K5
- 0x881C0106, // 0009 GETMBR R7 R0 K6
- 0x7C0C0800, // 000A CALL R3 4
- 0x8C0C0503, // 000B GETMET R3 R2 K3
- 0x58140007, // 000C LDCONST R5 K7
- 0xB81A0000, // 000D GETNGBL R6 K0
- 0x88180D01, // 000E GETMBR R6 R6 K1
- 0x88180D08, // 000F GETMBR R6 R6 K8
- 0x881C0109, // 0010 GETMBR R7 R0 K9
- 0x7C0C0800, // 0011 CALL R3 4
- 0x8C0C0503, // 0012 GETMET R3 R2 K3
- 0x5814000A, // 0013 LDCONST R5 K10
- 0xB81A0000, // 0014 GETNGBL R6 K0
- 0x88180D01, // 0015 GETMBR R6 R6 K1
- 0x88180D05, // 0016 GETMBR R6 R6 K5
- 0x881C010B, // 0017 GETMBR R7 R0 K11
- 0x7C0C0800, // 0018 CALL R3 4
- 0x8C0C0503, // 0019 GETMET R3 R2 K3
- 0x54160003, // 001A LDINT R5 4
- 0xB81A0000, // 001B GETNGBL R6 K0
- 0x88180D01, // 001C GETMBR R6 R6 K1
- 0x88180D05, // 001D GETMBR R6 R6 K5
- 0x881C010C, // 001E GETMBR R7 R0 K12
- 0x7C0C0800, // 001F CALL R3 4
- 0x880C010D, // 0020 GETMBR R3 R0 K13
- 0x4C100000, // 0021 LDNIL R4
- 0x200C0604, // 0022 NE R3 R3 R4
- 0x740E0003, // 0023 JMPT R3 #0028
- 0x880C010E, // 0024 GETMBR R3 R0 K14
- 0x4C100000, // 0025 LDNIL R4
- 0x200C0604, // 0026 NE R3 R3 R4
- 0x780E0010, // 0027 JMPF R3 #0039
- 0x8C0C050F, // 0028 GETMET R3 R2 K15
- 0x54160004, // 0029 LDINT R5 5
- 0x7C0C0400, // 002A CALL R3 2
- 0x8C100703, // 002B GETMET R4 R3 K3
- 0x58180004, // 002C LDCONST R6 K4
- 0xB81E0000, // 002D GETNGBL R7 K0
- 0x881C0F01, // 002E GETMBR R7 R7 K1
- 0x881C0F10, // 002F GETMBR R7 R7 K16
- 0x8820010D, // 0030 GETMBR R8 R0 K13
- 0x7C100800, // 0031 CALL R4 4
- 0x8C100703, // 0032 GETMET R4 R3 K3
- 0x58180007, // 0033 LDCONST R6 K7
- 0xB81E0000, // 0034 GETNGBL R7 K0
- 0x881C0F01, // 0035 GETMBR R7 R7 K1
- 0x881C0F10, // 0036 GETMBR R7 R7 K16
- 0x8820010E, // 0037 GETMBR R8 R0 K14
- 0x7C100800, // 0038 CALL R4 4
- 0x8C0C0511, // 0039 GETMET R3 R2 K17
- 0x5C140200, // 003A MOVE R5 R1
- 0x7C0C0400, // 003B CALL R3 2
- 0x80040600, // 003C RET 1 R3
+ 0x8C0C0502, // 0002 GETMET R3 R2 K2
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x8C100703, // 0004 GETMET R4 R3 K3
+ 0x58180004, // 0005 LDCONST R6 K4
+ 0x881C0505, // 0006 GETMBR R7 R2 K5
+ 0x88200106, // 0007 GETMBR R8 R0 K6
+ 0x7C100800, // 0008 CALL R4 4
+ 0x8C100703, // 0009 GETMET R4 R3 K3
+ 0x58180007, // 000A LDCONST R6 K7
+ 0x881C0508, // 000B GETMBR R7 R2 K8
+ 0x88200109, // 000C GETMBR R8 R0 K9
+ 0x7C100800, // 000D CALL R4 4
+ 0x8C100703, // 000E GETMET R4 R3 K3
+ 0x5818000A, // 000F LDCONST R6 K10
+ 0x881C0505, // 0010 GETMBR R7 R2 K5
+ 0x8820010B, // 0011 GETMBR R8 R0 K11
+ 0x7C100800, // 0012 CALL R4 4
+ 0x8C100703, // 0013 GETMET R4 R3 K3
+ 0x541A0003, // 0014 LDINT R6 4
+ 0x881C0505, // 0015 GETMBR R7 R2 K5
+ 0x8820010C, // 0016 GETMBR R8 R0 K12
+ 0x7C100800, // 0017 CALL R4 4
+ 0x8810010D, // 0018 GETMBR R4 R0 K13
+ 0x4C140000, // 0019 LDNIL R5
+ 0x20100805, // 001A NE R4 R4 R5
+ 0x74120003, // 001B JMPT R4 #0020
+ 0x8810010E, // 001C GETMBR R4 R0 K14
+ 0x4C140000, // 001D LDNIL R5
+ 0x20100805, // 001E NE R4 R4 R5
+ 0x7812000C, // 001F JMPF R4 #002D
+ 0x8C10070F, // 0020 GETMET R4 R3 K15
+ 0x541A0004, // 0021 LDINT R6 5
+ 0x7C100400, // 0022 CALL R4 2
+ 0x8C140903, // 0023 GETMET R5 R4 K3
+ 0x581C0004, // 0024 LDCONST R7 K4
+ 0x88200510, // 0025 GETMBR R8 R2 K16
+ 0x8824010D, // 0026 GETMBR R9 R0 K13
+ 0x7C140800, // 0027 CALL R5 4
+ 0x8C140903, // 0028 GETMET R5 R4 K3
+ 0x581C0007, // 0029 LDCONST R7 K7
+ 0x88200510, // 002A GETMBR R8 R2 K16
+ 0x8824010E, // 002B GETMBR R9 R0 K14
+ 0x7C140800, // 002C CALL R5 4
+ 0x8C100711, // 002D GETMET R4 R3 K17
+ 0x5C180200, // 002E MOVE R6 R1
+ 0x7C100400, // 002F CALL R4 2
+ 0x80040800, // 0030 RET 1 R4
})
)
);
@@ -695,16 +658,15 @@ extern const bclass be_class_Matter_Sigma2Resume;
/********************************************************************
** Solidified function: tlv2raw
********************************************************************/
-extern const bclass be_class_Matter_Sigma2Resume;
be_local_closure(class_Matter_Sigma2Resume_tlv2raw, /* name */
be_nested_proto(
- 9, /* nstack */
+ 10, /* nstack */
2, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Sigma2Resume,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[17]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
@@ -727,61 +689,51 @@ be_local_closure(class_Matter_Sigma2Resume_tlv2raw, /* name */
}),
be_str_weak(tlv2raw),
&be_const_str_solidified,
- ( &(const binstruction[54]) { /* code */
+ ( &(const binstruction[44]) { /* code */
0xB80A0000, // 0000 GETNGBL R2 K0
0x88080501, // 0001 GETMBR R2 R2 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
- 0x7C080200, // 0003 CALL R2 1
- 0x8C0C0503, // 0004 GETMET R3 R2 K3
- 0x58140004, // 0005 LDCONST R5 K4
- 0xB81A0000, // 0006 GETNGBL R6 K0
- 0x88180D01, // 0007 GETMBR R6 R6 K1
- 0x88180D05, // 0008 GETMBR R6 R6 K5
- 0x881C0106, // 0009 GETMBR R7 R0 K6
- 0x7C0C0800, // 000A CALL R3 4
- 0x8C0C0503, // 000B GETMET R3 R2 K3
- 0x58140007, // 000C LDCONST R5 K7
- 0xB81A0000, // 000D GETNGBL R6 K0
- 0x88180D01, // 000E GETMBR R6 R6 K1
- 0x88180D05, // 000F GETMBR R6 R6 K5
- 0x881C0108, // 0010 GETMBR R7 R0 K8
- 0x7C0C0800, // 0011 CALL R3 4
- 0x8C0C0503, // 0012 GETMET R3 R2 K3
- 0x58140009, // 0013 LDCONST R5 K9
- 0xB81A0000, // 0014 GETNGBL R6 K0
- 0x88180D01, // 0015 GETMBR R6 R6 K1
- 0x88180D0A, // 0016 GETMBR R6 R6 K10
- 0x881C010B, // 0017 GETMBR R7 R0 K11
- 0x7C0C0800, // 0018 CALL R3 4
- 0x880C010C, // 0019 GETMBR R3 R0 K12
- 0x4C100000, // 001A LDNIL R4
- 0x200C0604, // 001B NE R3 R3 R4
- 0x740E0003, // 001C JMPT R3 #0021
- 0x880C010D, // 001D GETMBR R3 R0 K13
- 0x4C100000, // 001E LDNIL R4
- 0x200C0604, // 001F NE R3 R3 R4
- 0x780E0010, // 0020 JMPF R3 #0032
- 0x8C0C050E, // 0021 GETMET R3 R2 K14
- 0x54160003, // 0022 LDINT R5 4
- 0x7C0C0400, // 0023 CALL R3 2
- 0x8C100703, // 0024 GETMET R4 R3 K3
- 0x58180004, // 0025 LDCONST R6 K4
- 0xB81E0000, // 0026 GETNGBL R7 K0
- 0x881C0F01, // 0027 GETMBR R7 R7 K1
- 0x881C0F0F, // 0028 GETMBR R7 R7 K15
- 0x8820010C, // 0029 GETMBR R8 R0 K12
- 0x7C100800, // 002A CALL R4 4
- 0x8C100703, // 002B GETMET R4 R3 K3
- 0x58180007, // 002C LDCONST R6 K7
- 0xB81E0000, // 002D GETNGBL R7 K0
- 0x881C0F01, // 002E GETMBR R7 R7 K1
- 0x881C0F0F, // 002F GETMBR R7 R7 K15
- 0x8820010D, // 0030 GETMBR R8 R0 K13
- 0x7C100800, // 0031 CALL R4 4
- 0x8C0C0510, // 0032 GETMET R3 R2 K16
- 0x5C140200, // 0033 MOVE R5 R1
- 0x7C0C0400, // 0034 CALL R3 2
- 0x80040600, // 0035 RET 1 R3
+ 0x8C0C0502, // 0002 GETMET R3 R2 K2
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x8C100703, // 0004 GETMET R4 R3 K3
+ 0x58180004, // 0005 LDCONST R6 K4
+ 0x881C0505, // 0006 GETMBR R7 R2 K5
+ 0x88200106, // 0007 GETMBR R8 R0 K6
+ 0x7C100800, // 0008 CALL R4 4
+ 0x8C100703, // 0009 GETMET R4 R3 K3
+ 0x58180007, // 000A LDCONST R6 K7
+ 0x881C0505, // 000B GETMBR R7 R2 K5
+ 0x88200108, // 000C GETMBR R8 R0 K8
+ 0x7C100800, // 000D CALL R4 4
+ 0x8C100703, // 000E GETMET R4 R3 K3
+ 0x58180009, // 000F LDCONST R6 K9
+ 0x881C050A, // 0010 GETMBR R7 R2 K10
+ 0x8820010B, // 0011 GETMBR R8 R0 K11
+ 0x7C100800, // 0012 CALL R4 4
+ 0x8810010C, // 0013 GETMBR R4 R0 K12
+ 0x4C140000, // 0014 LDNIL R5
+ 0x20100805, // 0015 NE R4 R4 R5
+ 0x74120003, // 0016 JMPT R4 #001B
+ 0x8810010D, // 0017 GETMBR R4 R0 K13
+ 0x4C140000, // 0018 LDNIL R5
+ 0x20100805, // 0019 NE R4 R4 R5
+ 0x7812000C, // 001A JMPF R4 #0028
+ 0x8C10070E, // 001B GETMET R4 R3 K14
+ 0x541A0003, // 001C LDINT R6 4
+ 0x7C100400, // 001D CALL R4 2
+ 0x8C140903, // 001E GETMET R5 R4 K3
+ 0x581C0004, // 001F LDCONST R7 K4
+ 0x8820050F, // 0020 GETMBR R8 R2 K15
+ 0x8824010C, // 0021 GETMBR R9 R0 K12
+ 0x7C140800, // 0022 CALL R5 4
+ 0x8C140903, // 0023 GETMET R5 R4 K3
+ 0x581C0007, // 0024 LDCONST R7 K7
+ 0x8820050F, // 0025 GETMBR R8 R2 K15
+ 0x8824010D, // 0026 GETMBR R9 R0 K13
+ 0x7C140800, // 0027 CALL R5 4
+ 0x8C100710, // 0028 GETMET R4 R3 K16
+ 0x5C180200, // 0029 MOVE R6 R1
+ 0x7C100400, // 002A CALL R4 2
+ 0x80040800, // 002B RET 1 R4
})
)
);
@@ -811,7 +763,6 @@ extern const bclass be_class_Matter_Sigma3;
/********************************************************************
** Solidified function: parse
********************************************************************/
-extern const bclass be_class_Matter_Sigma3;
be_local_closure(class_Matter_Sigma3_parse, /* name */
be_nested_proto(
7, /* nstack */
@@ -820,7 +771,7 @@ be_local_closure(class_Matter_Sigma3_parse, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Sigma3,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 9]) { /* constants */
/* K0 */ be_const_int(0),
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h
index 385ab8d33..e8ccdbd73 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Control_Message.h
@@ -3,53 +3,67 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_Control_Message' ktab size: 22, total: 31 (saved 72 bytes)
+static const bvalue be_ktab_class_Matter_Control_Message[22] = {
+ /* K0 */ be_nested_str_weak(session),
+ /* K1 */ be_nested_str_weak(log),
+ /* K2 */ be_nested_str_weak(MTR_X3A_X20_X3EMCSyncRsp_X20_X2A_X20Not_X20implemented_X20_X25s),
+ /* K3 */ be_nested_str_weak(raw),
+ /* K4 */ be_nested_str_weak(app_payload_idx),
+ /* K5 */ be_const_int(2147483647),
+ /* K6 */ be_nested_str_weak(tohex),
+ /* K7 */ be_const_int(2),
+ /* K8 */ be_nested_str_weak(MTR_X3A_X20_X3EMCSyncReq_X20_X2A_X20Not_X20implemented_X20_X25s),
+ /* K9 */ be_nested_str_weak(crypto),
+ /* K10 */ be_nested_str_weak(responder),
+ /* K11 */ be_nested_str_weak(device),
+ /* K12 */ be_nested_str_weak(MTR_X3A_X20received_X20control_X20message_X20),
+ /* K13 */ be_nested_str_weak(matter),
+ /* K14 */ be_nested_str_weak(inspect),
+ /* K15 */ be_const_int(3),
+ /* K16 */ be_nested_str_weak(opcode),
+ /* K17 */ be_const_int(0),
+ /* K18 */ be_nested_str_weak(parse_MsgCounterSyncReq),
+ /* K19 */ be_const_int(1),
+ /* K20 */ be_nested_str_weak(parse_MsgCounterSyncRsp),
+ /* K21 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28control_X20message_X29_X20_X2502X),
+};
+
extern const bclass be_class_Matter_Control_Message;
/********************************************************************
** Solidified function: parse_MsgCounterSyncRsp
********************************************************************/
-extern const bclass be_class_Matter_Control_Message;
be_local_closure(class_Matter_Control_Message_parse_MsgCounterSyncRsp, /* name */
be_nested_proto(
- 9, /* nstack */
+ 8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Control_Message,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(session),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(log),
- /* K3 */ be_nested_str_weak(MTR_X3A_X20_X3EMCSyncRsp_X20_X2A_X20Not_X20implemented_X20_X25s),
- /* K4 */ be_nested_str_weak(raw),
- /* K5 */ be_nested_str_weak(app_payload_idx),
- /* K6 */ be_const_int(2147483647),
- /* K7 */ be_nested_str_weak(tohex),
- /* K8 */ be_const_int(2),
- }),
+ &be_ktab_class_Matter_Control_Message, /* shared constants */
be_str_weak(parse_MsgCounterSyncRsp),
&be_const_str_solidified,
- ( &(const binstruction[16]) { /* code */
+ ( &(const binstruction[15]) { /* code */
0x88080300, // 0000 GETMBR R2 R1 K0
0xB80E0200, // 0001 GETNGBL R3 K1
- 0x8C0C0702, // 0002 GETMET R3 R3 K2
- 0x60140018, // 0003 GETGBL R5 G24
- 0x58180003, // 0004 LDCONST R6 K3
- 0x881C0305, // 0005 GETMBR R7 R1 K5
- 0x401C0F06, // 0006 CONNECT R7 R7 K6
- 0x88200304, // 0007 GETMBR R8 R1 K4
- 0x941C1007, // 0008 GETIDX R7 R8 R7
- 0x8C1C0F07, // 0009 GETMET R7 R7 K7
- 0x7C1C0200, // 000A CALL R7 1
- 0x7C140400, // 000B CALL R5 2
- 0x58180008, // 000C LDCONST R6 K8
- 0x7C0C0600, // 000D CALL R3 3
- 0x500C0000, // 000E LDBOOL R3 0 0
- 0x80040600, // 000F RET 1 R3
+ 0x60100018, // 0002 GETGBL R4 G24
+ 0x58140002, // 0003 LDCONST R5 K2
+ 0x88180304, // 0004 GETMBR R6 R1 K4
+ 0x40180D05, // 0005 CONNECT R6 R6 K5
+ 0x881C0303, // 0006 GETMBR R7 R1 K3
+ 0x94180E06, // 0007 GETIDX R6 R7 R6
+ 0x8C180D06, // 0008 GETMET R6 R6 K6
+ 0x7C180200, // 0009 CALL R6 1
+ 0x7C100400, // 000A CALL R4 2
+ 0x58140007, // 000B LDCONST R5 K7
+ 0x7C0C0400, // 000C CALL R3 2
+ 0x500C0000, // 000D LDBOOL R3 0 0
+ 0x80040600, // 000E RET 1 R3
})
)
);
@@ -59,47 +73,35 @@ be_local_closure(class_Matter_Control_Message_parse_MsgCounterSyncRsp, /* name
/********************************************************************
** Solidified function: parse_MsgCounterSyncReq
********************************************************************/
-extern const bclass be_class_Matter_Control_Message;
be_local_closure(class_Matter_Control_Message_parse_MsgCounterSyncReq, /* name */
be_nested_proto(
- 9, /* nstack */
+ 8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Control_Message,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(session),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(log),
- /* K3 */ be_nested_str_weak(MTR_X3A_X20_X3EMCSyncReq_X20_X2A_X20Not_X20implemented_X20_X25s),
- /* K4 */ be_nested_str_weak(raw),
- /* K5 */ be_nested_str_weak(app_payload_idx),
- /* K6 */ be_const_int(2147483647),
- /* K7 */ be_nested_str_weak(tohex),
- /* K8 */ be_const_int(2),
- }),
+ &be_ktab_class_Matter_Control_Message, /* shared constants */
be_str_weak(parse_MsgCounterSyncReq),
&be_const_str_solidified,
- ( &(const binstruction[16]) { /* code */
+ ( &(const binstruction[15]) { /* code */
0x88080300, // 0000 GETMBR R2 R1 K0
0xB80E0200, // 0001 GETNGBL R3 K1
- 0x8C0C0702, // 0002 GETMET R3 R3 K2
- 0x60140018, // 0003 GETGBL R5 G24
- 0x58180003, // 0004 LDCONST R6 K3
- 0x881C0305, // 0005 GETMBR R7 R1 K5
- 0x401C0F06, // 0006 CONNECT R7 R7 K6
- 0x88200304, // 0007 GETMBR R8 R1 K4
- 0x941C1007, // 0008 GETIDX R7 R8 R7
- 0x8C1C0F07, // 0009 GETMET R7 R7 K7
- 0x7C1C0200, // 000A CALL R7 1
- 0x7C140400, // 000B CALL R5 2
- 0x58180008, // 000C LDCONST R6 K8
- 0x7C0C0600, // 000D CALL R3 3
- 0x500C0000, // 000E LDBOOL R3 0 0
- 0x80040600, // 000F RET 1 R3
+ 0x60100018, // 0002 GETGBL R4 G24
+ 0x58140008, // 0003 LDCONST R5 K8
+ 0x88180304, // 0004 GETMBR R6 R1 K4
+ 0x40180D05, // 0005 CONNECT R6 R6 K5
+ 0x881C0303, // 0006 GETMBR R7 R1 K3
+ 0x94180E06, // 0007 GETIDX R6 R7 R6
+ 0x8C180D06, // 0008 GETMET R6 R6 K6
+ 0x7C180200, // 0009 CALL R6 1
+ 0x7C100400, // 000A CALL R4 2
+ 0x58140007, // 000B LDCONST R5 K7
+ 0x7C0C0400, // 000C CALL R3 2
+ 0x500C0000, // 000D LDBOOL R3 0 0
+ 0x80040600, // 000E RET 1 R3
})
)
);
@@ -109,29 +111,24 @@ be_local_closure(class_Matter_Control_Message_parse_MsgCounterSyncReq, /* name
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_Control_Message;
be_local_closure(class_Matter_Control_Message_init, /* name */
be_nested_proto(
4, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Control_Message,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(responder),
- /* K2 */ be_nested_str_weak(device),
- }),
+ &be_ktab_class_Matter_Control_Message, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x90020201, // 0001 SETMBR R0 K1 R1
- 0x880C0302, // 0002 GETMBR R3 R1 K2
- 0x90020403, // 0003 SETMBR R0 K2 R3
+ 0xA40A1200, // 0000 IMPORT R2 K9
+ 0x90021401, // 0001 SETMBR R0 K10 R1
+ 0x880C030B, // 0002 GETMBR R3 R1 K11
+ 0x90021603, // 0003 SETMBR R0 K11 R3
0x80000000, // 0004 RET 0
})
)
@@ -142,72 +139,55 @@ be_local_closure(class_Matter_Control_Message_init, /* name */
/********************************************************************
** Solidified function: process_incoming_control_message
********************************************************************/
-extern const bclass be_class_Matter_Control_Message;
be_local_closure(class_Matter_Control_Message_process_incoming_control_message, /* name */
be_nested_proto(
- 7, /* nstack */
+ 6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Control_Message,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(log),
- /* K2 */ be_nested_str_weak(MTR_X3A_X20received_X20control_X20message_X20),
- /* K3 */ be_nested_str_weak(matter),
- /* K4 */ be_nested_str_weak(inspect),
- /* K5 */ be_const_int(3),
- /* K6 */ be_nested_str_weak(opcode),
- /* K7 */ be_const_int(0),
- /* K8 */ be_nested_str_weak(parse_MsgCounterSyncReq),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str_weak(parse_MsgCounterSyncRsp),
- /* K11 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X3F_X20Unknown_X20OpCode_X20_X28control_X20message_X29_X20_X2502X),
- /* K12 */ be_const_int(2),
- }),
+ &be_ktab_class_Matter_Control_Message, /* shared constants */
be_str_weak(process_incoming_control_message),
&be_const_str_solidified,
- ( &(const binstruction[37]) { /* code */
- 0xB80A0000, // 0000 GETNGBL R2 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0xB8120600, // 0002 GETNGBL R4 K3
- 0x8C100904, // 0003 GETMET R4 R4 K4
- 0x5C180200, // 0004 MOVE R6 R1
- 0x7C100400, // 0005 CALL R4 2
- 0x00120404, // 0006 ADD R4 K2 R4
- 0x58140005, // 0007 LDCONST R5 K5
- 0x7C080600, // 0008 CALL R2 3
- 0x88080306, // 0009 GETMBR R2 R1 K6
- 0x1C080507, // 000A EQ R2 R2 K7
- 0x780A0004, // 000B JMPF R2 #0011
- 0x8C080108, // 000C GETMET R2 R0 K8
- 0x5C100200, // 000D MOVE R4 R1
- 0x7C080400, // 000E CALL R2 2
- 0x80040400, // 000F RET 1 R2
- 0x70020011, // 0010 JMP #0023
- 0x88080306, // 0011 GETMBR R2 R1 K6
- 0x1C080509, // 0012 EQ R2 R2 K9
- 0x780A0004, // 0013 JMPF R2 #0019
- 0x8C08010A, // 0014 GETMET R2 R0 K10
- 0x5C100200, // 0015 MOVE R4 R1
- 0x7C080400, // 0016 CALL R2 2
- 0x80040400, // 0017 RET 1 R2
- 0x70020009, // 0018 JMP #0023
- 0xB80A0000, // 0019 GETNGBL R2 K0
- 0x8C080501, // 001A GETMET R2 R2 K1
- 0x60100018, // 001B GETGBL R4 G24
- 0x5814000B, // 001C LDCONST R5 K11
- 0x88180306, // 001D GETMBR R6 R1 K6
- 0x7C100400, // 001E CALL R4 2
- 0x5814000C, // 001F LDCONST R5 K12
- 0x7C080600, // 0020 CALL R2 3
+ ( &(const binstruction[35]) { /* code */
+ 0xB80A0200, // 0000 GETNGBL R2 K1
+ 0xB80E1A00, // 0001 GETNGBL R3 K13
+ 0x8C0C070E, // 0002 GETMET R3 R3 K14
+ 0x5C140200, // 0003 MOVE R5 R1
+ 0x7C0C0400, // 0004 CALL R3 2
+ 0x000E1803, // 0005 ADD R3 K12 R3
+ 0x5810000F, // 0006 LDCONST R4 K15
+ 0x7C080400, // 0007 CALL R2 2
+ 0x88080310, // 0008 GETMBR R2 R1 K16
+ 0x1C080511, // 0009 EQ R2 R2 K17
+ 0x780A0004, // 000A JMPF R2 #0010
+ 0x8C080112, // 000B GETMET R2 R0 K18
+ 0x5C100200, // 000C MOVE R4 R1
+ 0x7C080400, // 000D CALL R2 2
+ 0x80040400, // 000E RET 1 R2
+ 0x70020010, // 000F JMP #0021
+ 0x88080310, // 0010 GETMBR R2 R1 K16
+ 0x1C080513, // 0011 EQ R2 R2 K19
+ 0x780A0004, // 0012 JMPF R2 #0018
+ 0x8C080114, // 0013 GETMET R2 R0 K20
+ 0x5C100200, // 0014 MOVE R4 R1
+ 0x7C080400, // 0015 CALL R2 2
+ 0x80040400, // 0016 RET 1 R2
+ 0x70020008, // 0017 JMP #0021
+ 0xB80A0200, // 0018 GETNGBL R2 K1
+ 0x600C0018, // 0019 GETGBL R3 G24
+ 0x58100015, // 001A LDCONST R4 K21
+ 0x88140310, // 001B GETMBR R5 R1 K16
+ 0x7C0C0400, // 001C CALL R3 2
+ 0x58100007, // 001D LDCONST R4 K7
+ 0x7C080400, // 001E CALL R2 2
+ 0x50080000, // 001F LDBOOL R2 0 0
+ 0x80040400, // 0020 RET 1 R2
0x50080000, // 0021 LDBOOL R2 0 0
0x80040400, // 0022 RET 1 R2
- 0x50080000, // 0023 LDBOOL R2 0 0
- 0x80040400, // 0024 RET 1 R2
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h
new file mode 100644
index 000000000..ca63bd343
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_EventHandler.h
@@ -0,0 +1,1158 @@
+/* Solidification of Matter_EventHandler.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+// compact class 'Matter_EventHandler' ktab size: 58, total: 86 (saved 224 bytes)
+static const bvalue be_ktab_class_Matter_EventHandler[58] = {
+ /* K0 */ be_nested_str_weak(tasmota),
+ /* K1 */ be_nested_str_weak(log),
+ /* K2 */ be_nested_str_weak(MTR_X3A_X20Events_X20queues_X20sizes_X3A_X20critical_X20_X25s_X2C_X20info_X20_X25s_X2C_X20debug_X20_X25s),
+ /* K3 */ be_nested_str_weak(queue_critical),
+ /* K4 */ be_nested_str_weak(queue_info),
+ /* K5 */ be_nested_str_weak(queue_debug),
+ /* K6 */ be_const_int(2),
+ /* K7 */ be_const_int(0),
+ /* K8 */ be_nested_str_weak(priority),
+ /* K9 */ be_const_int(1),
+ /* K10 */ be_nested_str_weak(stop_iteration),
+ /* K11 */ be_nested_str_weak(MTR_X3A_X20Events_X20by_X20types_X3A_X20critical_X20_X25s_X2C_X20info_X20_X25s_X2C_X20debug_X20_X25s),
+ /* K12 */ be_nested_str_weak(counter_event_no),
+ /* K13 */ be_nested_str_weak(add),
+ /* K14 */ be_nested_str_weak(counter_event_no_persisted),
+ /* K15 */ be_nested_str_weak(load_event_no_persisted),
+ /* K16 */ be_nested_str_weak(persist),
+ /* K17 */ be_nested_str_weak(find),
+ /* K18 */ be_nested_str_weak(EVENT_NO_KEY),
+ /* K19 */ be_nested_str_weak(0),
+ /* K20 */ be_nested_str_weak(int64),
+ /* K21 */ be_nested_str_weak(fromstring),
+ /* K22 */ be_nested_str_weak(EVENT_NO_INCR),
+ /* K23 */ be_nested_str_weak(setmember),
+ /* K24 */ be_nested_str_weak(tostring),
+ /* K25 */ be_nested_str_weak(save),
+ /* K26 */ be_nested_str_weak(push),
+ /* K27 */ be_nested_str_weak(EVENT_QUEUE_SIZE_MAX),
+ /* K28 */ be_nested_str_weak(pop),
+ /* K29 */ be_nested_str_weak(matter),
+ /* K30 */ be_nested_str_weak(EVENT_DEBUG),
+ /* K31 */ be_nested_str_weak(EVENT_INFO),
+ /* K32 */ be_nested_str_weak(compact),
+ /* K33 */ be_nested_str_weak(device),
+ /* K34 */ be_nested_str_weak(EventQueued),
+ /* K35 */ be_nested_str_weak(get_next_event_no),
+ /* K36 */ be_nested_str_weak(loglevel),
+ /* K37 */ be_const_int(3),
+ /* K38 */ be_nested_str_weak(),
+ /* K39 */ be_nested_str_weak(_X2C_X20),
+ /* K40 */ be_nested_str_weak(val),
+ /* K41 */ be_nested_str_weak(_X25i_X2E_X25i_X2E_X25i_X2E_X25i),
+ /* K42 */ be_nested_str_weak(CRIT_X20_X20),
+ /* K43 */ be_nested_str_weak(INFO_X20_X20),
+ /* K44 */ be_nested_str_weak(DEBUG_X20),
+ /* K45 */ be_nested_str_weak(get_event_name),
+ /* K46 */ be_nested_str_weak(_X28),
+ /* K47 */ be_nested_str_weak(_X29_X20),
+ /* K48 */ be_nested_str_weak(MTR_X3A_X20_X2BAdd_Event_X20_X28_X25s_X258s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2502X_X20_X25s_X2D_X20_X25s),
+ /* K49 */ be_nested_str_weak(event_no),
+ /* K50 */ be_nested_str_weak(endpoint),
+ /* K51 */ be_nested_str_weak(cluster),
+ /* K52 */ be_nested_str_weak(event_id),
+ /* K53 */ be_nested_str_weak(queue_event),
+ /* K54 */ be_nested_str_weak(message_handler),
+ /* K55 */ be_nested_str_weak(im),
+ /* K56 */ be_nested_str_weak(subs_shop),
+ /* K57 */ be_nested_str_weak(event_published),
+};
+
+
+extern const bclass be_class_Matter_EventHandler;
+
+/********************************************************************
+** Solidified function: dump
+********************************************************************/
+be_local_closure(class_Matter_EventHandler_dump, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventHandler, /* shared constants */
+ be_str_weak(dump),
+ &be_const_str_solidified,
+ ( &(const binstruction[74]) { /* code */
+ 0xB8060000, // 0000 GETNGBL R1 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x600C0018, // 0002 GETGBL R3 G24
+ 0x58100002, // 0003 LDCONST R4 K2
+ 0x6014000C, // 0004 GETGBL R5 G12
+ 0x88180103, // 0005 GETMBR R6 R0 K3
+ 0x7C140200, // 0006 CALL R5 1
+ 0x6018000C, // 0007 GETGBL R6 G12
+ 0x881C0104, // 0008 GETMBR R7 R0 K4
+ 0x7C180200, // 0009 CALL R6 1
+ 0x601C000C, // 000A GETGBL R7 G12
+ 0x88200105, // 000B GETMBR R8 R0 K5
+ 0x7C1C0200, // 000C CALL R7 1
+ 0x7C0C0800, // 000D CALL R3 4
+ 0x58100006, // 000E LDCONST R4 K6
+ 0x7C040600, // 000F CALL R1 3
+ 0x60040012, // 0010 GETGBL R1 G18
+ 0x7C040000, // 0011 CALL R1 0
+ 0x40080307, // 0012 CONNECT R2 R1 K7
+ 0x40080307, // 0013 CONNECT R2 R1 K7
+ 0x40080307, // 0014 CONNECT R2 R1 K7
+ 0x60080010, // 0015 GETGBL R2 G16
+ 0x880C0105, // 0016 GETMBR R3 R0 K5
+ 0x7C080200, // 0017 CALL R2 1
+ 0xA8020006, // 0018 EXBLK 0 #0020
+ 0x5C0C0400, // 0019 MOVE R3 R2
+ 0x7C0C0000, // 001A CALL R3 0
+ 0x88100708, // 001B GETMBR R4 R3 K8
+ 0x94140204, // 001C GETIDX R5 R1 R4
+ 0x00140B09, // 001D ADD R5 R5 K9
+ 0x98040805, // 001E SETIDX R1 R4 R5
+ 0x7001FFF8, // 001F JMP #0019
+ 0x5808000A, // 0020 LDCONST R2 K10
+ 0xAC080200, // 0021 CATCH R2 1 0
+ 0xB0080000, // 0022 RAISE 2 R0 R0
+ 0x60080010, // 0023 GETGBL R2 G16
+ 0x880C0104, // 0024 GETMBR R3 R0 K4
+ 0x7C080200, // 0025 CALL R2 1
+ 0xA8020006, // 0026 EXBLK 0 #002E
+ 0x5C0C0400, // 0027 MOVE R3 R2
+ 0x7C0C0000, // 0028 CALL R3 0
+ 0x88100708, // 0029 GETMBR R4 R3 K8
+ 0x94140204, // 002A GETIDX R5 R1 R4
+ 0x00140B09, // 002B ADD R5 R5 K9
+ 0x98040805, // 002C SETIDX R1 R4 R5
+ 0x7001FFF8, // 002D JMP #0027
+ 0x5808000A, // 002E LDCONST R2 K10
+ 0xAC080200, // 002F CATCH R2 1 0
+ 0xB0080000, // 0030 RAISE 2 R0 R0
+ 0x60080010, // 0031 GETGBL R2 G16
+ 0x880C0103, // 0032 GETMBR R3 R0 K3
+ 0x7C080200, // 0033 CALL R2 1
+ 0xA8020006, // 0034 EXBLK 0 #003C
+ 0x5C0C0400, // 0035 MOVE R3 R2
+ 0x7C0C0000, // 0036 CALL R3 0
+ 0x88100708, // 0037 GETMBR R4 R3 K8
+ 0x94140204, // 0038 GETIDX R5 R1 R4
+ 0x00140B09, // 0039 ADD R5 R5 K9
+ 0x98040805, // 003A SETIDX R1 R4 R5
+ 0x7001FFF8, // 003B JMP #0035
+ 0x5808000A, // 003C LDCONST R2 K10
+ 0xAC080200, // 003D CATCH R2 1 0
+ 0xB0080000, // 003E RAISE 2 R0 R0
+ 0xB80A0000, // 003F GETNGBL R2 K0
+ 0x8C080501, // 0040 GETMET R2 R2 K1
+ 0x60100018, // 0041 GETGBL R4 G24
+ 0x5814000B, // 0042 LDCONST R5 K11
+ 0x94180306, // 0043 GETIDX R6 R1 K6
+ 0x941C0309, // 0044 GETIDX R7 R1 K9
+ 0x94200307, // 0045 GETIDX R8 R1 K7
+ 0x7C100800, // 0046 CALL R4 4
+ 0x58140006, // 0047 LDCONST R5 K6
+ 0x7C080600, // 0048 CALL R2 3
+ 0x80000000, // 0049 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_last_event_no
+********************************************************************/
+be_local_closure(class_Matter_EventHandler_get_last_event_no, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventHandler, /* shared constants */
+ be_str_weak(get_last_event_no),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x8804010C, // 0000 GETMBR R1 R0 K12
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_next_event_no
+********************************************************************/
+be_local_closure(class_Matter_EventHandler_get_next_event_no, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventHandler, /* shared constants */
+ be_str_weak(get_next_event_no),
+ &be_const_str_solidified,
+ ( &(const binstruction[13]) { /* code */
+ 0x8804010C, // 0000 GETMBR R1 R0 K12
+ 0x8C04030D, // 0001 GETMET R1 R1 K13
+ 0x580C0009, // 0002 LDCONST R3 K9
+ 0x7C040400, // 0003 CALL R1 2
+ 0x90021801, // 0004 SETMBR R0 K12 R1
+ 0x8804010C, // 0005 GETMBR R1 R0 K12
+ 0x8808010E, // 0006 GETMBR R2 R0 K14
+ 0x28040202, // 0007 GE R1 R1 R2
+ 0x78060001, // 0008 JMPF R1 #000B
+ 0x8C04010F, // 0009 GETMET R1 R0 K15
+ 0x7C040200, // 000A CALL R1 1
+ 0x8804010C, // 000B GETMBR R1 R0 K12
+ 0x80040200, // 000C RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: load_event_no_persisted
+********************************************************************/
+be_local_closure(class_Matter_EventHandler_load_event_no_persisted, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventHandler, /* shared constants */
+ be_str_weak(load_event_no_persisted),
+ &be_const_str_solidified,
+ ( &(const binstruction[26]) { /* code */
+ 0xA4062000, // 0000 IMPORT R1 K16
+ 0x60080008, // 0001 GETGBL R2 G8
+ 0x8C0C0311, // 0002 GETMET R3 R1 K17
+ 0x88140112, // 0003 GETMBR R5 R0 K18
+ 0x58180013, // 0004 LDCONST R6 K19
+ 0x7C0C0600, // 0005 CALL R3 3
+ 0x7C080200, // 0006 CALL R2 1
+ 0xB80E2800, // 0007 GETNGBL R3 K20
+ 0x8C0C0715, // 0008 GETMET R3 R3 K21
+ 0x5C140400, // 0009 MOVE R5 R2
+ 0x7C0C0400, // 000A CALL R3 2
+ 0x90021803, // 000B SETMBR R0 K12 R3
+ 0x880C010C, // 000C GETMBR R3 R0 K12
+ 0x8C0C070D, // 000D GETMET R3 R3 K13
+ 0x88140116, // 000E GETMBR R5 R0 K22
+ 0x7C0C0400, // 000F CALL R3 2
+ 0x90021C03, // 0010 SETMBR R0 K14 R3
+ 0x8C0C0317, // 0011 GETMET R3 R1 K23
+ 0x88140112, // 0012 GETMBR R5 R0 K18
+ 0x8818010E, // 0013 GETMBR R6 R0 K14
+ 0x8C180D18, // 0014 GETMET R6 R6 K24
+ 0x7C180200, // 0015 CALL R6 1
+ 0x7C0C0600, // 0016 CALL R3 3
+ 0x8C0C0319, // 0017 GETMET R3 R1 K25
+ 0x7C0C0200, // 0018 CALL R3 1
+ 0x80000000, // 0019 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: queue_event
+********************************************************************/
+be_local_closure(class_Matter_EventHandler_queue_event, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventHandler, /* shared constants */
+ be_str_weak(queue_event),
+ &be_const_str_solidified,
+ ( &(const binstruction[54]) { /* code */
+ 0x88080308, // 0000 GETMBR R2 R1 K8
+ 0x880C0105, // 0001 GETMBR R3 R0 K5
+ 0x8C0C071A, // 0002 GETMET R3 R3 K26
+ 0x5C140200, // 0003 MOVE R5 R1
+ 0x7C0C0400, // 0004 CALL R3 2
+ 0x600C000C, // 0005 GETGBL R3 G12
+ 0x88100105, // 0006 GETMBR R4 R0 K5
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0x8810011B, // 0008 GETMBR R4 R0 K27
+ 0x240C0604, // 0009 GT R3 R3 R4
+ 0x780E0029, // 000A JMPF R3 #0035
+ 0x880C0105, // 000B GETMBR R3 R0 K5
+ 0x8C0C071C, // 000C GETMET R3 R3 K28
+ 0x58140007, // 000D LDCONST R5 K7
+ 0x7C0C0400, // 000E CALL R3 2
+ 0x88100708, // 000F GETMBR R4 R3 K8
+ 0xB8163A00, // 0010 GETNGBL R5 K29
+ 0x88140B1E, // 0011 GETMBR R5 R5 K30
+ 0x24100805, // 0012 GT R4 R4 R5
+ 0x78120020, // 0013 JMPF R4 #0035
+ 0x88100104, // 0014 GETMBR R4 R0 K4
+ 0x8C10091A, // 0015 GETMET R4 R4 K26
+ 0x5C180600, // 0016 MOVE R6 R3
+ 0x7C100400, // 0017 CALL R4 2
+ 0x6010000C, // 0018 GETGBL R4 G12
+ 0x88140104, // 0019 GETMBR R5 R0 K4
+ 0x7C100200, // 001A CALL R4 1
+ 0x8814011B, // 001B GETMBR R5 R0 K27
+ 0x24100805, // 001C GT R4 R4 R5
+ 0x78120016, // 001D JMPF R4 #0035
+ 0x88100104, // 001E GETMBR R4 R0 K4
+ 0x8C10091C, // 001F GETMET R4 R4 K28
+ 0x58180007, // 0020 LDCONST R6 K7
+ 0x7C100400, // 0021 CALL R4 2
+ 0x88140908, // 0022 GETMBR R5 R4 K8
+ 0xB81A3A00, // 0023 GETNGBL R6 K29
+ 0x88180D1F, // 0024 GETMBR R6 R6 K31
+ 0x24140A06, // 0025 GT R5 R5 R6
+ 0x7816000D, // 0026 JMPF R5 #0035
+ 0x88140103, // 0027 GETMBR R5 R0 K3
+ 0x8C140B1A, // 0028 GETMET R5 R5 K26
+ 0x5C1C0800, // 0029 MOVE R7 R4
+ 0x7C140400, // 002A CALL R5 2
+ 0x6014000C, // 002B GETGBL R5 G12
+ 0x88180103, // 002C GETMBR R6 R0 K3
+ 0x7C140200, // 002D CALL R5 1
+ 0x8818011B, // 002E GETMBR R6 R0 K27
+ 0x24140A06, // 002F GT R5 R5 R6
+ 0x78160003, // 0030 JMPF R5 #0035
+ 0x88140103, // 0031 GETMBR R5 R0 K3
+ 0x8C140B1C, // 0032 GETMET R5 R5 K28
+ 0x581C0007, // 0033 LDCONST R7 K7
+ 0x7C140400, // 0034 CALL R5 2
+ 0x80000000, // 0035 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: every_second
+********************************************************************/
+be_local_closure(class_Matter_EventHandler_every_second, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventHandler, /* shared constants */
+ be_str_weak(every_second),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 3]) { /* code */
+ 0x8C040120, // 0000 GETMET R1 R0 K32
+ 0x7C040200, // 0001 CALL R1 1
+ 0x80000000, // 0002 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_EventHandler_init, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventHandler, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[13]) { /* code */
+ 0x90024201, // 0000 SETMBR R0 K33 R1
+ 0x60080012, // 0001 GETGBL R2 G18
+ 0x7C080000, // 0002 CALL R2 0
+ 0x90020A02, // 0003 SETMBR R0 K5 R2
+ 0x60080012, // 0004 GETGBL R2 G18
+ 0x7C080000, // 0005 CALL R2 0
+ 0x90020802, // 0006 SETMBR R0 K4 R2
+ 0x60080012, // 0007 GETGBL R2 G18
+ 0x7C080000, // 0008 CALL R2 0
+ 0x90020602, // 0009 SETMBR R0 K3 R2
+ 0x8C08010F, // 000A GETMET R2 R0 K15
+ 0x7C080200, // 000B CALL R2 1
+ 0x80000000, // 000C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: find_min_no
+********************************************************************/
+be_local_closure(class_Matter_EventHandler_find_min_no, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 1]) {
+ be_nested_proto(
+ 7, /* nstack */
+ 3, /* argc */
+ 0, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_const_int(1),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str_weak(event_no),
+ }),
+ be_str_weak(find_in_queue),
+ &be_const_str_solidified,
+ ( &(const binstruction[25]) { /* code */
+ 0x600C000C, // 0000 GETGBL R3 G12
+ 0x5C100200, // 0001 MOVE R4 R1
+ 0x7C0C0200, // 0002 CALL R3 1
+ 0x040C0700, // 0003 SUB R3 R3 K0
+ 0x28100701, // 0004 GE R4 R3 K1
+ 0x78120011, // 0005 JMPF R4 #0018
+ 0x94100203, // 0006 GETIDX R4 R1 R3
+ 0x4C140000, // 0007 LDNIL R5
+ 0x20140405, // 0008 NE R5 R2 R5
+ 0x78160003, // 0009 JMPF R5 #000E
+ 0x88140902, // 000A GETMBR R5 R4 K2
+ 0x18140A02, // 000B LE R5 R5 R2
+ 0x78160000, // 000C JMPF R5 #000E
+ 0x80040000, // 000D RET 1 R0
+ 0x4C140000, // 000E LDNIL R5
+ 0x1C140005, // 000F EQ R5 R0 R5
+ 0x74160003, // 0010 JMPT R5 #0015
+ 0x88140902, // 0011 GETMBR R5 R4 K2
+ 0x88180102, // 0012 GETMBR R6 R0 K2
+ 0x14140A06, // 0013 LT R5 R5 R6
+ 0x78160000, // 0014 JMPF R5 #0016
+ 0x5C000800, // 0015 MOVE R0 R4
+ 0x040C0700, // 0016 SUB R3 R3 K0
+ 0x7001FFEB, // 0017 JMP #0004
+ 0x80040000, // 0018 RET 1 R0
+ })
+ ),
+ }),
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventHandler, /* shared constants */
+ be_str_weak(find_min_no),
+ &be_const_str_solidified,
+ ( &(const binstruction[29]) { /* code */
+ 0x4C080000, // 0000 LDNIL R2
+ 0x20080202, // 0001 NE R2 R1 R2
+ 0x780A0004, // 0002 JMPF R2 #0008
+ 0x8808010C, // 0003 GETMBR R2 R0 K12
+ 0x28080202, // 0004 GE R2 R1 R2
+ 0x780A0001, // 0005 JMPF R2 #0008
+ 0x4C080000, // 0006 LDNIL R2
+ 0x80040400, // 0007 RET 1 R2
+ 0x84080000, // 0008 CLOSURE R2 P0
+ 0x4C0C0000, // 0009 LDNIL R3
+ 0x5C100400, // 000A MOVE R4 R2
+ 0x5C140600, // 000B MOVE R5 R3
+ 0x88180105, // 000C GETMBR R6 R0 K5
+ 0x5C1C0200, // 000D MOVE R7 R1
+ 0x7C100600, // 000E CALL R4 3
+ 0x5C0C0800, // 000F MOVE R3 R4
+ 0x5C100400, // 0010 MOVE R4 R2
+ 0x5C140600, // 0011 MOVE R5 R3
+ 0x88180104, // 0012 GETMBR R6 R0 K4
+ 0x5C1C0200, // 0013 MOVE R7 R1
+ 0x7C100600, // 0014 CALL R4 3
+ 0x5C0C0800, // 0015 MOVE R3 R4
+ 0x5C100400, // 0016 MOVE R4 R2
+ 0x5C140600, // 0017 MOVE R5 R3
+ 0x88180103, // 0018 GETMBR R6 R0 K3
+ 0x5C1C0200, // 0019 MOVE R7 R1
+ 0x7C100600, // 001A CALL R4 3
+ 0x5C0C0800, // 001B MOVE R3 R4
+ 0x80040600, // 001C RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: publish_event
+********************************************************************/
+be_local_closure(class_Matter_EventHandler_publish_event, /* name */
+ be_nested_proto(
+ 23, /* nstack */
+ 9, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventHandler, /* shared constants */
+ be_str_weak(publish_event),
+ &be_const_str_solidified,
+ ( &(const binstruction[112]) { /* code */
+ 0xB8263A00, // 0000 GETNGBL R9 K29
+ 0x8C241322, // 0001 GETMET R9 R9 K34
+ 0x8C2C0123, // 0002 GETMET R11 R0 K35
+ 0x7C2C0200, // 0003 CALL R11 1
+ 0x5C300200, // 0004 MOVE R12 R1
+ 0x5C340400, // 0005 MOVE R13 R2
+ 0x5C380600, // 0006 MOVE R14 R3
+ 0x5C3C0800, // 0007 MOVE R15 R4
+ 0x5C400A00, // 0008 MOVE R16 R5
+ 0x5C440C00, // 0009 MOVE R17 R6
+ 0x5C480E00, // 000A MOVE R18 R7
+ 0x5C4C1000, // 000B MOVE R19 R8
+ 0x7C241400, // 000C CALL R9 10
+ 0xB82A0000, // 000D GETNGBL R10 K0
+ 0x8C281524, // 000E GETMET R10 R10 K36
+ 0x58300025, // 000F LDCONST R12 K37
+ 0x7C280400, // 0010 CALL R10 2
+ 0x782A0052, // 0011 JMPF R10 #0065
+ 0x58280026, // 0012 LDCONST R10 K38
+ 0x4C2C0000, // 0013 LDNIL R11
+ 0x202C0C0B, // 0014 NE R11 R6 R11
+ 0x782E0003, // 0015 JMPF R11 #001A
+ 0x602C0008, // 0016 GETGBL R11 G8
+ 0x5C300C00, // 0017 MOVE R12 R6
+ 0x7C2C0200, // 0018 CALL R11 1
+ 0x5C281600, // 0019 MOVE R10 R11
+ 0x4C2C0000, // 001A LDNIL R11
+ 0x202C0E0B, // 001B NE R11 R7 R11
+ 0x782E0004, // 001C JMPF R11 #0022
+ 0x602C0008, // 001D GETGBL R11 G8
+ 0x5C300E00, // 001E MOVE R12 R7
+ 0x7C2C0200, // 001F CALL R11 1
+ 0x002E4E0B, // 0020 ADD R11 K39 R11
+ 0x0028140B, // 0021 ADD R10 R10 R11
+ 0x4C2C0000, // 0022 LDNIL R11
+ 0x202C100B, // 0023 NE R11 R8 R11
+ 0x782E0004, // 0024 JMPF R11 #002A
+ 0x602C0008, // 0025 GETGBL R11 G8
+ 0x5C301000, // 0026 MOVE R12 R8
+ 0x7C2C0200, // 0027 CALL R11 1
+ 0x002E4E0B, // 0028 ADD R11 K39 R11
+ 0x0028140B, // 0029 ADD R10 R10 R11
+ 0x542E0027, // 002A LDINT R11 40
+ 0x1C2C040B, // 002B EQ R11 R2 R11
+ 0x782E0014, // 002C JMPF R11 #0042
+ 0x1C2C0707, // 002D EQ R11 R3 K7
+ 0x782E0012, // 002E JMPF R11 #0042
+ 0x882C0D28, // 002F GETMBR R11 R6 K40
+ 0x60300018, // 0030 GETGBL R12 G24
+ 0x58340029, // 0031 LDCONST R13 K41
+ 0x543A0017, // 0032 LDINT R14 24
+ 0x3C38160E, // 0033 SHR R14 R11 R14
+ 0x543E00FE, // 0034 LDINT R15 255
+ 0x2C381C0F, // 0035 AND R14 R14 R15
+ 0x543E000F, // 0036 LDINT R15 16
+ 0x3C3C160F, // 0037 SHR R15 R11 R15
+ 0x544200FE, // 0038 LDINT R16 255
+ 0x2C3C1E10, // 0039 AND R15 R15 R16
+ 0x54420007, // 003A LDINT R16 8
+ 0x3C401610, // 003B SHR R16 R11 R16
+ 0x544600FE, // 003C LDINT R17 255
+ 0x2C402011, // 003D AND R16 R16 R17
+ 0x544600FE, // 003E LDINT R17 255
+ 0x2C441611, // 003F AND R17 R11 R17
+ 0x7C300A00, // 0040 CALL R12 5
+ 0x5C281800, // 0041 MOVE R10 R12
+ 0x1C2C0B06, // 0042 EQ R11 R5 K6
+ 0x782E0001, // 0043 JMPF R11 #0046
+ 0x582C002A, // 0044 LDCONST R11 K42
+ 0x70020004, // 0045 JMP #004B
+ 0x1C2C0B09, // 0046 EQ R11 R5 K9
+ 0x782E0001, // 0047 JMPF R11 #004A
+ 0x582C002B, // 0048 LDCONST R11 K43
+ 0x70020000, // 0049 JMP #004B
+ 0x582C002C, // 004A LDCONST R11 K44
+ 0xB8323A00, // 004B GETNGBL R12 K29
+ 0x8C30192D, // 004C GETMET R12 R12 K45
+ 0x5C380400, // 004D MOVE R14 R2
+ 0x5C3C0600, // 004E MOVE R15 R3
+ 0x7C300600, // 004F CALL R12 3
+ 0x4C340000, // 0050 LDNIL R13
+ 0x2034180D, // 0051 NE R13 R12 R13
+ 0x78360002, // 0052 JMPF R13 #0056
+ 0x00365C0C, // 0053 ADD R13 K46 R12
+ 0x00341B2F, // 0054 ADD R13 R13 K47
+ 0x70020000, // 0055 JMP #0057
+ 0x58340026, // 0056 LDCONST R13 K38
+ 0x5C301A00, // 0057 MOVE R12 R13
+ 0xB8360200, // 0058 GETNGBL R13 K1
+ 0x60380018, // 0059 GETGBL R14 G24
+ 0x583C0030, // 005A LDCONST R15 K48
+ 0x5C401600, // 005B MOVE R16 R11
+ 0x88441331, // 005C GETMBR R17 R9 K49
+ 0x88481332, // 005D GETMBR R18 R9 K50
+ 0x884C1333, // 005E GETMBR R19 R9 K51
+ 0x88501334, // 005F GETMBR R20 R9 K52
+ 0x5C541800, // 0060 MOVE R21 R12
+ 0x5C581400, // 0061 MOVE R22 R10
+ 0x7C381000, // 0062 CALL R14 8
+ 0x583C0006, // 0063 LDCONST R15 K6
+ 0x7C340400, // 0064 CALL R13 2
+ 0x8C280135, // 0065 GETMET R10 R0 K53
+ 0x5C301200, // 0066 MOVE R12 R9
+ 0x7C280400, // 0067 CALL R10 2
+ 0x88280121, // 0068 GETMBR R10 R0 K33
+ 0x88281536, // 0069 GETMBR R10 R10 K54
+ 0x88281537, // 006A GETMBR R10 R10 K55
+ 0x88281538, // 006B GETMBR R10 R10 K56
+ 0x8C281539, // 006C GETMET R10 R10 K57
+ 0x5C301200, // 006D MOVE R12 R9
+ 0x7C280400, // 006E CALL R10 2
+ 0x80000000, // 006F RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: compact
+********************************************************************/
+be_local_closure(class_Matter_EventHandler_compact, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 1]) {
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 0, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_const_int(0),
+ /* K1 */ be_nested_str_weak(compact),
+ /* K2 */ be_const_int(1),
+ }),
+ be_str_weak(compact_queue),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0x58040000, // 0000 LDCONST R1 K0
+ 0x6008000C, // 0001 GETGBL R2 G12
+ 0x5C0C0000, // 0002 MOVE R3 R0
+ 0x7C080200, // 0003 CALL R2 1
+ 0x14080202, // 0004 LT R2 R1 R2
+ 0x780A0004, // 0005 JMPF R2 #000B
+ 0x94080001, // 0006 GETIDX R2 R0 R1
+ 0x8C080501, // 0007 GETMET R2 R2 K1
+ 0x7C080200, // 0008 CALL R2 1
+ 0x00040302, // 0009 ADD R1 R1 K2
+ 0x7001FFF5, // 000A JMP #0001
+ 0x80000000, // 000B RET 0
+ })
+ ),
+ }),
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventHandler, /* shared constants */
+ be_str_weak(compact),
+ &be_const_str_solidified,
+ ( &(const binstruction[11]) { /* code */
+ 0x84040000, // 0000 CLOSURE R1 P0
+ 0x5C080200, // 0001 MOVE R2 R1
+ 0x880C0105, // 0002 GETMBR R3 R0 K5
+ 0x7C080200, // 0003 CALL R2 1
+ 0x5C080200, // 0004 MOVE R2 R1
+ 0x880C0104, // 0005 GETMBR R3 R0 K4
+ 0x7C080200, // 0006 CALL R2 1
+ 0x5C080200, // 0007 MOVE R2 R1
+ 0x880C0103, // 0008 GETMBR R3 R0 K3
+ 0x7C080200, // 0009 CALL R2 1
+ 0x80000000, // 000A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_EventHandler
+********************************************************************/
+be_local_class(Matter_EventHandler,
+ 6,
+ NULL,
+ be_nested_map(19,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(queue_info, -1), be_const_var(1) },
+ { be_const_key_weak(dump, 4), be_const_closure(class_Matter_EventHandler_dump_closure) },
+ { be_const_key_weak(compact, -1), be_const_closure(class_Matter_EventHandler_compact_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(class_Matter_EventHandler_init_closure) },
+ { be_const_key_weak(EVENT_NO_INCR, -1), be_const_int(1000) },
+ { be_const_key_weak(load_event_no_persisted, 2), be_const_closure(class_Matter_EventHandler_load_event_no_persisted_closure) },
+ { be_const_key_weak(EVENT_NO_KEY, -1), be_nested_str_weak(_matter_event_no) },
+ { be_const_key_weak(EVENT_QUEUE_SIZE_MAX, -1), be_const_int(10) },
+ { be_const_key_weak(counter_event_no, -1), be_const_var(4) },
+ { be_const_key_weak(queue_debug, -1), be_const_var(0) },
+ { be_const_key_weak(publish_event, -1), be_const_closure(class_Matter_EventHandler_publish_event_closure) },
+ { be_const_key_weak(queue_event, -1), be_const_closure(class_Matter_EventHandler_queue_event_closure) },
+ { be_const_key_weak(get_last_event_no, 18), be_const_closure(class_Matter_EventHandler_get_last_event_no_closure) },
+ { be_const_key_weak(get_next_event_no, 3), be_const_closure(class_Matter_EventHandler_get_next_event_no_closure) },
+ { be_const_key_weak(counter_event_no_persisted, 16), be_const_var(5) },
+ { be_const_key_weak(device, 10), be_const_var(3) },
+ { be_const_key_weak(find_min_no, -1), be_const_closure(class_Matter_EventHandler_find_min_no_closure) },
+ { be_const_key_weak(queue_critical, -1), be_const_var(2) },
+ { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_EventHandler_every_second_closure) },
+ })),
+ be_str_weak(Matter_EventHandler)
+);
+// compact class 'Matter_EventQueued' ktab size: 28, total: 43 (saved 120 bytes)
+static const bvalue be_ktab_class_Matter_EventQueued[28] = {
+ /* K0 */ be_nested_str_weak(raw_tlv),
+ /* K1 */ be_nested_str_weak(eventreport2raw),
+ /* K2 */ be_nested_str_weak(endpoint),
+ /* K3 */ be_nested_str_weak(cluster),
+ /* K4 */ be_nested_str_weak(event_id),
+ /* K5 */ be_nested_str_weak(is_urgent),
+ /* K6 */ be_nested_str_weak(priority),
+ /* K7 */ be_nested_str_weak(event_no),
+ /* K8 */ be_nested_str_weak(epoch_timestamp),
+ /* K9 */ be_nested_str_weak(data0),
+ /* K10 */ be_nested_str_weak(data1),
+ /* K11 */ be_nested_str_weak(data2),
+ /* K12 */ be_const_int(0),
+ /* K13 */ be_nested_str_weak(matter),
+ /* K14 */ be_nested_str_weak(EVENT_CRITICAL),
+ /* K15 */ be_nested_str_weak(tasmota),
+ /* K16 */ be_nested_str_weak(rtc),
+ /* K17 */ be_nested_str_weak(utc),
+ /* K18 */ be_const_int(1700000000),
+ /* K19 */ be_nested_str_weak(config_time),
+ /* K20 */ be_nested_str_weak(add),
+ /* K21 */ be_const_int(1),
+ /* K22 */ be_const_int(2),
+ /* K23 */ be_nested_str_weak(eventpath2raw),
+ /* K24 */ be_nested_str_weak(low32),
+ /* K25 */ be_nested_str_weak(high32),
+ /* K26 */ be_nested_str_weak(tag_sub),
+ /* K27 */ be_nested_str_weak(tlv2raw),
+};
+
+
+extern const bclass be_class_Matter_EventQueued;
+
+/********************************************************************
+** Solidified function: to_raw_bytes
+********************************************************************/
+be_local_closure(class_Matter_EventQueued_to_raw_bytes, /* name */
+ be_nested_proto(
+ 14, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventQueued, /* shared constants */
+ be_str_weak(to_raw_bytes),
+ &be_const_str_solidified,
+ ( &(const binstruction[23]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x4C080000, // 0001 LDNIL R2
+ 0x1C040202, // 0002 EQ R1 R1 R2
+ 0x78060010, // 0003 JMPF R1 #0015
+ 0x60040015, // 0004 GETGBL R1 G21
+ 0x540A003F, // 0005 LDINT R2 64
+ 0x7C040200, // 0006 CALL R1 1
+ 0x90020001, // 0007 SETMBR R0 K0 R1
+ 0x8C040101, // 0008 GETMET R1 R0 K1
+ 0x880C0100, // 0009 GETMBR R3 R0 K0
+ 0x88100102, // 000A GETMBR R4 R0 K2
+ 0x88140103, // 000B GETMBR R5 R0 K3
+ 0x88180104, // 000C GETMBR R6 R0 K4
+ 0x881C0105, // 000D GETMBR R7 R0 K5
+ 0x88200106, // 000E GETMBR R8 R0 K6
+ 0x88240107, // 000F GETMBR R9 R0 K7
+ 0x88280108, // 0010 GETMBR R10 R0 K8
+ 0x882C0109, // 0011 GETMBR R11 R0 K9
+ 0x8830010A, // 0012 GETMBR R12 R0 K10
+ 0x8834010B, // 0013 GETMBR R13 R0 K11
+ 0x7C041800, // 0014 CALL R1 12
+ 0x88040100, // 0015 GETMBR R1 R0 K0
+ 0x80040200, // 0016 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_EventQueued_init, /* name */
+ be_nested_proto(
+ 13, /* nstack */
+ 10, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventQueued, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[35]) { /* code */
+ 0x90020E01, // 0000 SETMBR R0 K7 R1
+ 0x90020402, // 0001 SETMBR R0 K2 R2
+ 0x90020603, // 0002 SETMBR R0 K3 R3
+ 0x90020804, // 0003 SETMBR R0 K4 R4
+ 0x90020A05, // 0004 SETMBR R0 K5 R5
+ 0x90020C06, // 0005 SETMBR R0 K6 R6
+ 0x88280106, // 0006 GETMBR R10 R0 K6
+ 0x1428150C, // 0007 LT R10 R10 K12
+ 0x782A0000, // 0008 JMPF R10 #000A
+ 0x90020D0C, // 0009 SETMBR R0 K6 K12
+ 0x88280106, // 000A GETMBR R10 R0 K6
+ 0xB82E1A00, // 000B GETNGBL R11 K13
+ 0x882C170E, // 000C GETMBR R11 R11 K14
+ 0x2428140B, // 000D GT R10 R10 R11
+ 0x782A0002, // 000E JMPF R10 #0012
+ 0xB82A1A00, // 000F GETNGBL R10 K13
+ 0x8828150E, // 0010 GETMBR R10 R10 K14
+ 0x90020C0A, // 0011 SETMBR R0 K6 R10
+ 0xB82A1E00, // 0012 GETNGBL R10 K15
+ 0x8C281510, // 0013 GETMET R10 R10 K16
+ 0x58300011, // 0014 LDCONST R12 K17
+ 0x7C280400, // 0015 CALL R10 2
+ 0x9002100A, // 0016 SETMBR R0 K8 R10
+ 0x88280108, // 0017 GETMBR R10 R0 K8
+ 0x14281512, // 0018 LT R10 R10 K18
+ 0x782A0004, // 0019 JMPF R10 #001F
+ 0xB82A1E00, // 001A GETNGBL R10 K15
+ 0x8C281510, // 001B GETMET R10 R10 K16
+ 0x58300013, // 001C LDCONST R12 K19
+ 0x7C280400, // 001D CALL R10 2
+ 0x9002100A, // 001E SETMBR R0 K8 R10
+ 0x90021207, // 001F SETMBR R0 K9 R7
+ 0x90021408, // 0020 SETMBR R0 K10 R8
+ 0x90021609, // 0021 SETMBR R0 K11 R9
+ 0x80000000, // 0022 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: compact
+********************************************************************/
+be_local_closure(class_Matter_EventQueued_compact, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventQueued, /* shared constants */
+ be_str_weak(compact),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 3]) { /* code */
+ 0x4C040000, // 0000 LDNIL R1
+ 0x90020001, // 0001 SETMBR R0 K0 R1
+ 0x80000000, // 0002 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: eventpath2raw
+********************************************************************/
+be_local_closure(class_Matter_EventQueued_eventpath2raw, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 6, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventQueued, /* shared constants */
+ be_str_weak(eventpath2raw),
+ &be_const_str_solidified,
+ ( &(const binstruction[91]) { /* code */
+ 0x8C180314, // 0000 GETMET R6 R1 K20
+ 0x542236FF, // 0001 LDINT R8 14080
+ 0x5425FFFD, // 0002 LDINT R9 -2
+ 0x7C180600, // 0003 CALL R6 3
+ 0x541A00FE, // 0004 LDINT R6 255
+ 0x18180406, // 0005 LE R6 R2 R6
+ 0x781A0008, // 0006 JMPF R6 #0010
+ 0x8C180314, // 0007 GETMET R6 R1 K20
+ 0x54222400, // 0008 LDINT R8 9217
+ 0x5425FFFD, // 0009 LDINT R9 -2
+ 0x7C180600, // 000A CALL R6 3
+ 0x8C180314, // 000B GETMET R6 R1 K20
+ 0x5C200400, // 000C MOVE R8 R2
+ 0x58240015, // 000D LDCONST R9 K21
+ 0x7C180600, // 000E CALL R6 3
+ 0x70020007, // 000F JMP #0018
+ 0x8C180314, // 0010 GETMET R6 R1 K20
+ 0x54222500, // 0011 LDINT R8 9473
+ 0x5425FFFD, // 0012 LDINT R9 -2
+ 0x7C180600, // 0013 CALL R6 3
+ 0x8C180314, // 0014 GETMET R6 R1 K20
+ 0x5C200400, // 0015 MOVE R8 R2
+ 0x58240016, // 0016 LDCONST R9 K22
+ 0x7C180600, // 0017 CALL R6 3
+ 0x541A00FE, // 0018 LDINT R6 255
+ 0x18180606, // 0019 LE R6 R3 R6
+ 0x781A0008, // 001A JMPF R6 #0024
+ 0x8C180314, // 001B GETMET R6 R1 K20
+ 0x54222401, // 001C LDINT R8 9218
+ 0x5425FFFD, // 001D LDINT R9 -2
+ 0x7C180600, // 001E CALL R6 3
+ 0x8C180314, // 001F GETMET R6 R1 K20
+ 0x5C200600, // 0020 MOVE R8 R3
+ 0x58240015, // 0021 LDCONST R9 K21
+ 0x7C180600, // 0022 CALL R6 3
+ 0x70020013, // 0023 JMP #0038
+ 0x541AFFFE, // 0024 LDINT R6 65535
+ 0x18180606, // 0025 LE R6 R3 R6
+ 0x781A0008, // 0026 JMPF R6 #0030
+ 0x8C180314, // 0027 GETMET R6 R1 K20
+ 0x54222501, // 0028 LDINT R8 9474
+ 0x5425FFFD, // 0029 LDINT R9 -2
+ 0x7C180600, // 002A CALL R6 3
+ 0x8C180314, // 002B GETMET R6 R1 K20
+ 0x5C200600, // 002C MOVE R8 R3
+ 0x58240016, // 002D LDCONST R9 K22
+ 0x7C180600, // 002E CALL R6 3
+ 0x70020007, // 002F JMP #0038
+ 0x8C180314, // 0030 GETMET R6 R1 K20
+ 0x54222601, // 0031 LDINT R8 9730
+ 0x5425FFFD, // 0032 LDINT R9 -2
+ 0x7C180600, // 0033 CALL R6 3
+ 0x8C180314, // 0034 GETMET R6 R1 K20
+ 0x5C200600, // 0035 MOVE R8 R3
+ 0x54260003, // 0036 LDINT R9 4
+ 0x7C180600, // 0037 CALL R6 3
+ 0x541A00FE, // 0038 LDINT R6 255
+ 0x18180806, // 0039 LE R6 R4 R6
+ 0x781A0008, // 003A JMPF R6 #0044
+ 0x8C180314, // 003B GETMET R6 R1 K20
+ 0x54222402, // 003C LDINT R8 9219
+ 0x5425FFFD, // 003D LDINT R9 -2
+ 0x7C180600, // 003E CALL R6 3
+ 0x8C180314, // 003F GETMET R6 R1 K20
+ 0x5C200800, // 0040 MOVE R8 R4
+ 0x58240015, // 0041 LDCONST R9 K21
+ 0x7C180600, // 0042 CALL R6 3
+ 0x70020007, // 0043 JMP #004C
+ 0x8C180314, // 0044 GETMET R6 R1 K20
+ 0x54222502, // 0045 LDINT R8 9475
+ 0x5425FFFD, // 0046 LDINT R9 -2
+ 0x7C180600, // 0047 CALL R6 3
+ 0x8C180314, // 0048 GETMET R6 R1 K20
+ 0x5C200800, // 0049 MOVE R8 R4
+ 0x58240016, // 004A LDCONST R9 K22
+ 0x7C180600, // 004B CALL R6 3
+ 0x78160004, // 004C JMPF R5 #0052
+ 0x8C180314, // 004D GETMET R6 R1 K20
+ 0x54222903, // 004E LDINT R8 10500
+ 0x5425FFFD, // 004F LDINT R9 -2
+ 0x7C180600, // 0050 CALL R6 3
+ 0x70020003, // 0051 JMP #0056
+ 0x8C180314, // 0052 GETMET R6 R1 K20
+ 0x54222803, // 0053 LDINT R8 10244
+ 0x5425FFFD, // 0054 LDINT R9 -2
+ 0x7C180600, // 0055 CALL R6 3
+ 0x8C180314, // 0056 GETMET R6 R1 K20
+ 0x54220017, // 0057 LDINT R8 24
+ 0x58240015, // 0058 LDCONST R9 K21
+ 0x7C180600, // 0059 CALL R6 3
+ 0x80000000, // 005A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: eventreport2raw
+********************************************************************/
+be_local_closure(class_Matter_EventQueued_eventreport2raw, /* name */
+ be_nested_proto(
+ 19, /* nstack */
+ 12, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventQueued, /* shared constants */
+ be_str_weak(eventreport2raw),
+ &be_const_str_solidified,
+ ( &(const binstruction[83]) { /* code */
+ 0x8C300314, // 0000 GETMET R12 R1 K20
+ 0x543A0014, // 0001 LDINT R14 21
+ 0x583C0015, // 0002 LDCONST R15 K21
+ 0x7C300600, // 0003 CALL R12 3
+ 0x8C300314, // 0004 GETMET R12 R1 K20
+ 0x543A3500, // 0005 LDINT R14 13569
+ 0x543DFFFD, // 0006 LDINT R15 -2
+ 0x7C300600, // 0007 CALL R12 3
+ 0x8C300117, // 0008 GETMET R12 R0 K23
+ 0x5C380200, // 0009 MOVE R14 R1
+ 0x5C3C0400, // 000A MOVE R15 R2
+ 0x5C400600, // 000B MOVE R16 R3
+ 0x5C440800, // 000C MOVE R17 R4
+ 0x5C480A00, // 000D MOVE R18 R5
+ 0x7C300C00, // 000E CALL R12 6
+ 0x8C300314, // 000F GETMET R12 R1 K20
+ 0x543A2700, // 0010 LDINT R14 9985
+ 0x543DFFFD, // 0011 LDINT R15 -2
+ 0x7C300600, // 0012 CALL R12 3
+ 0x8C300314, // 0013 GETMET R12 R1 K20
+ 0x8C380F18, // 0014 GETMET R14 R7 K24
+ 0x7C380200, // 0015 CALL R14 1
+ 0x543E0003, // 0016 LDINT R15 4
+ 0x7C300600, // 0017 CALL R12 3
+ 0x8C300314, // 0018 GETMET R12 R1 K20
+ 0x8C380F19, // 0019 GETMET R14 R7 K25
+ 0x7C380200, // 001A CALL R14 1
+ 0x543E0003, // 001B LDINT R15 4
+ 0x7C300600, // 001C CALL R12 3
+ 0x8C300314, // 001D GETMET R12 R1 K20
+ 0x543A2401, // 001E LDINT R14 9218
+ 0x543DFFFD, // 001F LDINT R15 -2
+ 0x7C300600, // 0020 CALL R12 3
+ 0x8C300314, // 0021 GETMET R12 R1 K20
+ 0x5C380C00, // 0022 MOVE R14 R6
+ 0x583C0015, // 0023 LDCONST R15 K21
+ 0x7C300600, // 0024 CALL R12 3
+ 0x8C300314, // 0025 GETMET R12 R1 K20
+ 0x543A2602, // 0026 LDINT R14 9731
+ 0x543DFFFD, // 0027 LDINT R15 -2
+ 0x7C300600, // 0028 CALL R12 3
+ 0x8C300314, // 0029 GETMET R12 R1 K20
+ 0x5C381000, // 002A MOVE R14 R8
+ 0x543E0003, // 002B LDINT R15 4
+ 0x7C300600, // 002C CALL R12 3
+ 0x8C300314, // 002D GETMET R12 R1 K20
+ 0x543A3506, // 002E LDINT R14 13575
+ 0x543DFFFD, // 002F LDINT R15 -2
+ 0x7C300600, // 0030 CALL R12 3
+ 0x4C300000, // 0031 LDNIL R12
+ 0x2030120C, // 0032 NE R12 R9 R12
+ 0x78320003, // 0033 JMPF R12 #0038
+ 0x9026350C, // 0034 SETMBR R9 K26 K12
+ 0x8C30131B, // 0035 GETMET R12 R9 K27
+ 0x5C380200, // 0036 MOVE R14 R1
+ 0x7C300400, // 0037 CALL R12 2
+ 0x4C300000, // 0038 LDNIL R12
+ 0x2030140C, // 0039 NE R12 R10 R12
+ 0x78320003, // 003A JMPF R12 #003F
+ 0x902A3515, // 003B SETMBR R10 K26 K21
+ 0x8C30151B, // 003C GETMET R12 R10 K27
+ 0x5C380200, // 003D MOVE R14 R1
+ 0x7C300400, // 003E CALL R12 2
+ 0x4C300000, // 003F LDNIL R12
+ 0x2030160C, // 0040 NE R12 R11 R12
+ 0x78320003, // 0041 JMPF R12 #0046
+ 0x902E3516, // 0042 SETMBR R11 K26 K22
+ 0x8C30171B, // 0043 GETMET R12 R11 K27
+ 0x5C380200, // 0044 MOVE R14 R1
+ 0x7C300400, // 0045 CALL R12 2
+ 0x8C300314, // 0046 GETMET R12 R1 K20
+ 0x543A0017, // 0047 LDINT R14 24
+ 0x583C0015, // 0048 LDCONST R15 K21
+ 0x7C300600, // 0049 CALL R12 3
+ 0x8C300314, // 004A GETMET R12 R1 K20
+ 0x543A0017, // 004B LDINT R14 24
+ 0x583C0015, // 004C LDCONST R15 K21
+ 0x7C300600, // 004D CALL R12 3
+ 0x8C300314, // 004E GETMET R12 R1 K20
+ 0x543A0017, // 004F LDINT R14 24
+ 0x583C0015, // 0050 LDCONST R15 K21
+ 0x7C300600, // 0051 CALL R12 3
+ 0x80000000, // 0052 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_EventQueued
+********************************************************************/
+be_local_class(Matter_EventQueued,
+ 11,
+ NULL,
+ be_nested_map(16,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(data0, -1), be_const_var(5) },
+ { be_const_key_weak(eventreport2raw, -1), be_const_closure(class_Matter_EventQueued_eventreport2raw_closure) },
+ { be_const_key_weak(event_id, 11), be_const_var(2) },
+ { be_const_key_weak(init, -1), be_const_closure(class_Matter_EventQueued_init_closure) },
+ { be_const_key_weak(data1, 14), be_const_var(6) },
+ { be_const_key_weak(data2, 1), be_const_var(7) },
+ { be_const_key_weak(compact, -1), be_const_closure(class_Matter_EventQueued_compact_closure) },
+ { be_const_key_weak(is_urgent, -1), be_const_var(3) },
+ { be_const_key_weak(eventpath2raw, -1), be_const_closure(class_Matter_EventQueued_eventpath2raw_closure) },
+ { be_const_key_weak(epoch_timestamp, 10), be_const_var(9) },
+ { be_const_key_weak(priority, -1), be_const_var(4) },
+ { be_const_key_weak(cluster, -1), be_const_var(1) },
+ { be_const_key_weak(raw_tlv, 4), be_const_var(10) },
+ { be_const_key_weak(to_raw_bytes, 2), be_const_closure(class_Matter_EventQueued_to_raw_bytes_closure) },
+ { be_const_key_weak(endpoint, -1), be_const_var(0) },
+ { be_const_key_weak(event_no, 0), be_const_var(8) },
+ })),
+ be_str_weak(Matter_EventQueued)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h
index 7cb753b4b..32861ccb9 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Expirable.h
@@ -3,24 +3,33 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_Expirable' ktab size: 6, total: 13 (saved 56 bytes)
+static const bvalue be_ktab_class_Matter_Expirable[6] = {
+ /* K0 */ be_nested_str_weak(_expiration),
+ /* K1 */ be_nested_str_weak(_persist),
+ /* K2 */ be_nested_str_weak(tasmota),
+ /* K3 */ be_nested_str_weak(rtc_utc),
+ /* K4 */ be_nested_str_weak(_list),
+ /* K5 */ be_nested_str_weak(set_expire_time),
+};
+
extern const bclass be_class_Matter_Expirable;
/********************************************************************
** Solidified function: before_remove
********************************************************************/
-extern const bclass be_class_Matter_Expirable;
be_local_closure(class_Matter_Expirable_before_remove, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Expirable,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Expirable, /* shared constants */
be_str_weak(before_remove),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -34,20 +43,17 @@ be_local_closure(class_Matter_Expirable_before_remove, /* name */
/********************************************************************
** Solidified function: set_no_expiration
********************************************************************/
-extern const bclass be_class_Matter_Expirable;
be_local_closure(class_Matter_Expirable_set_no_expiration, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Expirable,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_expiration),
- }),
+ &be_ktab_class_Matter_Expirable, /* shared constants */
be_str_weak(set_no_expiration),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
@@ -63,25 +69,22 @@ be_local_closure(class_Matter_Expirable_set_no_expiration, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_Expirable;
be_local_closure(class_Matter_Expirable_init, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Expirable,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_persist),
- }),
+ &be_ktab_class_Matter_Expirable, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
0x50040000, // 0000 LDBOOL R1 0 0
- 0x90020001, // 0001 SETMBR R0 K0 R1
+ 0x90020201, // 0001 SETMBR R0 K1 R1
0x80000000, // 0002 RET 0
})
)
@@ -92,20 +95,17 @@ be_local_closure(class_Matter_Expirable_init, /* name */
/********************************************************************
** Solidified function: set_expire_time
********************************************************************/
-extern const bclass be_class_Matter_Expirable;
be_local_closure(class_Matter_Expirable_set_expire_time, /* name */
be_nested_proto(
4, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Expirable,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_expiration),
- }),
+ &be_ktab_class_Matter_Expirable, /* shared constants */
be_str_weak(set_expire_time),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
@@ -123,37 +123,32 @@ be_local_closure(class_Matter_Expirable_set_expire_time, /* name */
/********************************************************************
** Solidified function: has_expired
********************************************************************/
-extern const bclass be_class_Matter_Expirable;
be_local_closure(class_Matter_Expirable_has_expired, /* name */
be_nested_proto(
4, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Expirable,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(rtc_utc),
- /* K2 */ be_nested_str_weak(_expiration),
- }),
+ &be_ktab_class_Matter_Expirable, /* shared constants */
be_str_weak(has_expired),
&be_const_str_solidified,
( &(const binstruction[16]) { /* code */
0x4C080000, // 0000 LDNIL R2
0x1C080202, // 0001 EQ R2 R1 R2
0x780A0003, // 0002 JMPF R2 #0007
- 0xB80A0000, // 0003 GETNGBL R2 K0
- 0x8C080501, // 0004 GETMET R2 R2 K1
+ 0xB80A0400, // 0003 GETNGBL R2 K2
+ 0x8C080503, // 0004 GETMET R2 R2 K3
0x7C080200, // 0005 CALL R2 1
0x5C040400, // 0006 MOVE R1 R2
- 0x88080102, // 0007 GETMBR R2 R0 K2
+ 0x88080100, // 0007 GETMBR R2 R0 K0
0x4C0C0000, // 0008 LDNIL R3
0x20080403, // 0009 NE R2 R2 R3
0x780A0002, // 000A JMPF R2 #000E
- 0x88080102, // 000B GETMBR R2 R0 K2
+ 0x88080100, // 000B GETMBR R2 R0 K0
0x28080202, // 000C GE R2 R1 R2
0x80040400, // 000D RET 1 R2
0x50080000, // 000E LDBOOL R2 0 0
@@ -167,24 +162,21 @@ be_local_closure(class_Matter_Expirable_has_expired, /* name */
/********************************************************************
** Solidified function: set_parent_list
********************************************************************/
-extern const bclass be_class_Matter_Expirable;
be_local_closure(class_Matter_Expirable_set_parent_list, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Expirable,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_list),
- }),
+ &be_ktab_class_Matter_Expirable, /* shared constants */
be_str_weak(set_parent_list),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90020801, // 0000 SETMBR R0 K4 R1
0x80000000, // 0001 RET 0
})
)
@@ -195,18 +187,17 @@ be_local_closure(class_Matter_Expirable_set_parent_list, /* name */
/********************************************************************
** Solidified function: hydrate_post
********************************************************************/
-extern const bclass be_class_Matter_Expirable;
be_local_closure(class_Matter_Expirable_hydrate_post, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Expirable,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Expirable, /* shared constants */
be_str_weak(hydrate_post),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -220,22 +211,17 @@ be_local_closure(class_Matter_Expirable_hydrate_post, /* name */
/********************************************************************
** Solidified function: set_expire_in_seconds
********************************************************************/
-extern const bclass be_class_Matter_Expirable;
be_local_closure(class_Matter_Expirable_set_expire_in_seconds, /* name */
be_nested_proto(
6, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Expirable,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(rtc_utc),
- /* K2 */ be_nested_str_weak(set_expire_time),
- }),
+ &be_ktab_class_Matter_Expirable, /* shared constants */
be_str_weak(set_expire_in_seconds),
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
@@ -246,11 +232,11 @@ be_local_closure(class_Matter_Expirable_set_expire_in_seconds, /* name */
0x4C0C0000, // 0004 LDNIL R3
0x1C0C0403, // 0005 EQ R3 R2 R3
0x780E0003, // 0006 JMPF R3 #000B
- 0xB80E0000, // 0007 GETNGBL R3 K0
- 0x8C0C0701, // 0008 GETMET R3 R3 K1
+ 0xB80E0400, // 0007 GETNGBL R3 K2
+ 0x8C0C0703, // 0008 GETMET R3 R3 K3
0x7C0C0200, // 0009 CALL R3 1
0x5C080600, // 000A MOVE R2 R3
- 0x8C0C0102, // 000B GETMET R3 R0 K2
+ 0x8C0C0105, // 000B GETMET R3 R0 K5
0x00140401, // 000C ADD R5 R2 R1
0x7C0C0400, // 000D CALL R3 2
0x80000000, // 000E RET 0
@@ -263,24 +249,21 @@ be_local_closure(class_Matter_Expirable_set_expire_in_seconds, /* name */
/********************************************************************
** Solidified function: get_parent_list
********************************************************************/
-extern const bclass be_class_Matter_Expirable;
be_local_closure(class_Matter_Expirable_get_parent_list, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Expirable,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_list),
- }),
+ &be_ktab_class_Matter_Expirable, /* shared constants */
be_str_weak(get_parent_list),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040104, // 0000 GETMBR R1 R0 K4
0x80040200, // 0001 RET 1 R1
})
)
@@ -291,24 +274,21 @@ be_local_closure(class_Matter_Expirable_get_parent_list, /* name */
/********************************************************************
** Solidified function: does_persist
********************************************************************/
-extern const bclass be_class_Matter_Expirable;
be_local_closure(class_Matter_Expirable_does_persist, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Expirable,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_persist),
- }),
+ &be_ktab_class_Matter_Expirable, /* shared constants */
be_str_weak(does_persist),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040101, // 0000 GETMBR R1 R0 K1
0x80040200, // 0001 RET 1 R1
})
)
@@ -319,27 +299,24 @@ be_local_closure(class_Matter_Expirable_does_persist, /* name */
/********************************************************************
** Solidified function: set_persist
********************************************************************/
-extern const bclass be_class_Matter_Expirable;
be_local_closure(class_Matter_Expirable_set_persist, /* name */
be_nested_proto(
4, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Expirable,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_persist),
- }),
+ &be_ktab_class_Matter_Expirable, /* shared constants */
be_str_weak(set_persist),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
0x60080017, // 0000 GETGBL R2 G23
0x5C0C0200, // 0001 MOVE R3 R1
0x7C080200, // 0002 CALL R2 1
- 0x90020002, // 0003 SETMBR R0 K0 R2
+ 0x90020202, // 0003 SETMBR R0 K1 R2
0x80000000, // 0004 RET 0
})
)
@@ -350,18 +327,17 @@ be_local_closure(class_Matter_Expirable_set_persist, /* name */
/********************************************************************
** Solidified function: persist_pre
********************************************************************/
-extern const bclass be_class_Matter_Expirable;
be_local_closure(class_Matter_Expirable_persist_pre, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Expirable,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Expirable, /* shared constants */
be_str_weak(persist_pre),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -375,18 +351,17 @@ be_local_closure(class_Matter_Expirable_persist_pre, /* name */
/********************************************************************
** Solidified function: persist_post
********************************************************************/
-extern const bclass be_class_Matter_Expirable;
be_local_closure(class_Matter_Expirable_persist_post, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Expirable,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Expirable, /* shared constants */
be_str_weak(persist_post),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -424,28 +399,42 @@ be_local_class(Matter_Expirable,
})),
be_str_weak(Matter_Expirable)
);
+// compact class 'Matter_Expirable_list' ktab size: 15, total: 25 (saved 80 bytes)
+static const bvalue be_ktab_class_Matter_Expirable_list[15] = {
+ /* K0 */ be_const_int(0),
+ /* K1 */ be_nested_str_weak(_persist),
+ /* K2 */ be_const_int(1),
+ /* K3 */ be_nested_str_weak(before_remove),
+ /* K4 */ be_nested_str_weak(remove),
+ /* K5 */ be_nested_str_weak(matter),
+ /* K6 */ be_nested_str_weak(Expirable),
+ /* K7 */ be_nested_str_weak(type_error),
+ /* K8 */ be_nested_str_weak(argument_X20must_X20be_X20of_X20class_X20_X27Expirable_X27),
+ /* K9 */ be_nested_str_weak(set_parent_list),
+ /* K10 */ be_nested_str_weak(push),
+ /* K11 */ be_nested_str_weak(remove_expired),
+ /* K12 */ be_nested_str_weak(has_expired),
+ /* K13 */ be_nested_str_weak(iter),
+ /* K14 */ be_nested_str_weak(setitem),
+};
+
extern const bclass be_class_Matter_Expirable_list;
/********************************************************************
** Solidified function: count_persistables
********************************************************************/
-extern const bclass be_class_Matter_Expirable_list;
be_local_closure(class_Matter_Expirable_list_count_persistables, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Expirable_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(_persist),
- /* K2 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_Expirable_list, /* shared constants */
be_str_weak(count_persistables),
&be_const_str_solidified,
( &(const binstruction[14]) { /* code */
@@ -472,22 +461,17 @@ be_local_closure(class_Matter_Expirable_list_count_persistables, /* name */
/********************************************************************
** Solidified function: remove
********************************************************************/
-extern const bclass be_class_Matter_Expirable_list;
be_local_closure(class_Matter_Expirable_list_remove, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Expirable_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(before_remove),
- /* K2 */ be_nested_str_weak(remove),
- }),
+ &be_ktab_class_Matter_Expirable_list, /* shared constants */
be_str_weak(remove),
&be_const_str_solidified,
( &(const binstruction[21]) { /* code */
@@ -502,12 +486,12 @@ be_local_closure(class_Matter_Expirable_list_remove, /* name */
0x14080202, // 0008 LT R2 R1 R2
0x780A0002, // 0009 JMPF R2 #000D
0x94080001, // 000A GETIDX R2 R0 R1
- 0x8C080501, // 000B GETMET R2 R2 K1
+ 0x8C080503, // 000B GETMET R2 R2 K3
0x7C080200, // 000C CALL R2 1
0x60080003, // 000D GETGBL R2 G3
0x5C0C0000, // 000E MOVE R3 R0
0x7C080200, // 000F CALL R2 1
- 0x8C080502, // 0010 GETMET R2 R2 K2
+ 0x8C080504, // 0010 GETMET R2 R2 K4
0x5C100200, // 0011 MOVE R4 R1
0x7C080400, // 0012 CALL R2 2
0x80040400, // 0013 RET 1 R2
@@ -521,42 +505,34 @@ be_local_closure(class_Matter_Expirable_list_remove, /* name */
/********************************************************************
** Solidified function: push
********************************************************************/
-extern const bclass be_class_Matter_Expirable_list;
be_local_closure(class_Matter_Expirable_list_push, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Expirable_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(Expirable),
- /* K2 */ be_nested_str_weak(type_error),
- /* K3 */ be_nested_str_weak(argument_X20must_X20be_X20of_X20class_X20_X27Expirable_X27),
- /* K4 */ be_nested_str_weak(set_parent_list),
- /* K5 */ be_nested_str_weak(push),
- }),
+ &be_ktab_class_Matter_Expirable_list, /* shared constants */
be_str_weak(push),
&be_const_str_solidified,
( &(const binstruction[17]) { /* code */
0x6008000F, // 0000 GETGBL R2 G15
0x5C0C0200, // 0001 MOVE R3 R1
- 0xB8120000, // 0002 GETNGBL R4 K0
- 0x88100901, // 0003 GETMBR R4 R4 K1
+ 0xB8120A00, // 0002 GETNGBL R4 K5
+ 0x88100906, // 0003 GETMBR R4 R4 K6
0x7C080400, // 0004 CALL R2 2
0x740A0000, // 0005 JMPT R2 #0007
- 0xB0060503, // 0006 RAISE 1 K2 K3
- 0x8C080304, // 0007 GETMET R2 R1 K4
+ 0xB0060F08, // 0006 RAISE 1 K7 K8
+ 0x8C080309, // 0007 GETMET R2 R1 K9
0x5C100000, // 0008 MOVE R4 R0
0x7C080400, // 0009 CALL R2 2
0x60080003, // 000A GETGBL R2 G3
0x5C0C0000, // 000B MOVE R3 R0
0x7C080200, // 000C CALL R2 1
- 0x8C080505, // 000D GETMET R2 R2 K5
+ 0x8C08050A, // 000D GETMET R2 R2 K10
0x5C100200, // 000E MOVE R4 R1
0x7C080400, // 000F CALL R2 2
0x80040400, // 0010 RET 1 R2
@@ -569,24 +545,21 @@ be_local_closure(class_Matter_Expirable_list_push, /* name */
/********************************************************************
** Solidified function: every_second
********************************************************************/
-extern const bclass be_class_Matter_Expirable_list;
be_local_closure(class_Matter_Expirable_list_every_second, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Expirable_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(remove_expired),
- }),
+ &be_ktab_class_Matter_Expirable_list, /* shared constants */
be_str_weak(every_second),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C04010B, // 0000 GETMET R1 R0 K11
0x7C040200, // 0001 CALL R1 1
0x80000000, // 0002 RET 0
})
@@ -598,24 +571,17 @@ be_local_closure(class_Matter_Expirable_list_every_second, /* name */
/********************************************************************
** Solidified function: remove_expired
********************************************************************/
-extern const bclass be_class_Matter_Expirable_list;
be_local_closure(class_Matter_Expirable_list_remove_expired, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Expirable_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(has_expired),
- /* K2 */ be_nested_str_weak(_persist),
- /* K3 */ be_nested_str_weak(remove),
- /* K4 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_Expirable_list, /* shared constants */
be_str_weak(remove_expired),
&be_const_str_solidified,
( &(const binstruction[22]) { /* code */
@@ -627,18 +593,18 @@ be_local_closure(class_Matter_Expirable_list_remove_expired, /* name */
0x140C0403, // 0005 LT R3 R2 R3
0x780E000D, // 0006 JMPF R3 #0015
0x940C0002, // 0007 GETIDX R3 R0 R2
- 0x8C0C0701, // 0008 GETMET R3 R3 K1
+ 0x8C0C070C, // 0008 GETMET R3 R3 K12
0x7C0C0200, // 0009 CALL R3 1
0x780E0007, // 000A JMPF R3 #0013
0x940C0002, // 000B GETIDX R3 R0 R2
- 0x880C0702, // 000C GETMBR R3 R3 K2
+ 0x880C0701, // 000C GETMBR R3 R3 K1
0x780E0000, // 000D JMPF R3 #000F
0x50040200, // 000E LDBOOL R1 1 0
- 0x8C0C0103, // 000F GETMET R3 R0 K3
+ 0x8C0C0104, // 000F GETMET R3 R0 K4
0x5C140400, // 0010 MOVE R5 R2
0x7C0C0400, // 0011 CALL R3 2
0x70020000, // 0012 JMP #0014
- 0x00080504, // 0013 ADD R2 R2 K4
+ 0x00080502, // 0013 ADD R2 R2 K2
0x7001FFEC, // 0014 JMP #0002
0x80040200, // 0015 RET 1 R1
})
@@ -650,16 +616,15 @@ be_local_closure(class_Matter_Expirable_list_remove_expired, /* name */
/********************************************************************
** Solidified function: persistables
********************************************************************/
-extern const bclass be_class_Matter_Expirable_list;
be_local_closure(class_Matter_Expirable_list_persistables, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
2, /* nstack */
0, /* argc */
@@ -669,7 +634,7 @@ be_local_closure(class_Matter_Expirable_list_persistables, /* name */
be_local_const_upval(1, 1),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(_persist),
@@ -688,16 +653,13 @@ be_local_closure(class_Matter_Expirable_list_persistables, /* name */
0x80000000, // 0008 RET 0
})
),
- &be_class_Matter_Expirable_list,
}),
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(iter),
- }),
+ &be_ktab_class_Matter_Expirable_list, /* shared constants */
be_str_weak(persistables),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C04010D, // 0000 GETMET R1 R0 K13
0x7C040200, // 0001 CALL R1 1
0x84080000, // 0002 CLOSURE R2 P0
0xA0000000, // 0003 CLOSE R0
@@ -711,42 +673,34 @@ be_local_closure(class_Matter_Expirable_list_persistables, /* name */
/********************************************************************
** Solidified function: setitem
********************************************************************/
-extern const bclass be_class_Matter_Expirable_list;
be_local_closure(class_Matter_Expirable_list_setitem, /* name */
be_nested_proto(
7, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Expirable_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(Expirable),
- /* K2 */ be_nested_str_weak(type_error),
- /* K3 */ be_nested_str_weak(argument_X20must_X20be_X20of_X20class_X20_X27Expirable_X27),
- /* K4 */ be_nested_str_weak(set_parent_list),
- /* K5 */ be_nested_str_weak(setitem),
- }),
+ &be_ktab_class_Matter_Expirable_list, /* shared constants */
be_str_weak(setitem),
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
0x600C000F, // 0000 GETGBL R3 G15
0x5C100400, // 0001 MOVE R4 R2
- 0xB8160000, // 0002 GETNGBL R5 K0
- 0x88140B01, // 0003 GETMBR R5 R5 K1
+ 0xB8160A00, // 0002 GETNGBL R5 K5
+ 0x88140B06, // 0003 GETMBR R5 R5 K6
0x7C0C0400, // 0004 CALL R3 2
0x740E0000, // 0005 JMPT R3 #0007
- 0xB0060503, // 0006 RAISE 1 K2 K3
- 0x8C0C0504, // 0007 GETMET R3 R2 K4
+ 0xB0060F08, // 0006 RAISE 1 K7 K8
+ 0x8C0C0509, // 0007 GETMET R3 R2 K9
0x5C140000, // 0008 MOVE R5 R0
0x7C0C0400, // 0009 CALL R3 2
0x600C0003, // 000A GETGBL R3 G3
0x5C100000, // 000B MOVE R4 R0
0x7C0C0200, // 000C CALL R3 1
- 0x8C0C0705, // 000D GETMET R3 R3 K5
+ 0x8C0C070E, // 000D GETMET R3 R3 K14
0x5C140200, // 000E MOVE R5 R1
0x5C180400, // 000F MOVE R6 R2
0x7C0C0600, // 0010 CALL R3 3
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h
index 26dd17f72..34c30935f 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Fabric.h
@@ -3,26 +3,139 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+extern const bclass be_class_Matter_Fabric;
+// compact class 'Matter_Fabric' ktab size: 111, total: 212 (saved 808 bytes)
+static const bvalue be_ktab_class_Matter_Fabric[111] = {
+ /* K0 */ be_nested_str_weak(icac),
+ /* K1 */ be_nested_str_weak(log),
+ /* K2 */ be_nested_str_weak(MTR_X3A_X20_X2DFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20_X28removed_X29),
+ /* K3 */ be_nested_str_weak(get_fabric_id),
+ /* K4 */ be_nested_str_weak(copy),
+ /* K5 */ be_nested_str_weak(reverse),
+ /* K6 */ be_nested_str_weak(tohex),
+ /* K7 */ be_const_int(3),
+ /* K8 */ be_nested_str_weak(no_private_key),
+ /* K9 */ be_nested_str_weak(fabric_compressed),
+ /* K10 */ be_nested_str_weak(fabric_id),
+ /* K11 */ be_nested_str_weak(admin_subject),
+ /* K12 */ be_nested_str_weak(admin_vendor),
+ /* K13 */ be_nested_str_weak(noc),
+ /* K14 */ be_const_class(be_class_Matter_Fabric),
+ /* K15 */ be_nested_str_weak(string),
+ /* K16 */ be_nested_str_weak(introspect),
+ /* K17 */ be_nested_str_weak(matter),
+ /* K18 */ be_nested_str_weak(Fabric),
+ /* K19 */ be_nested_str_weak(keys),
+ /* K20 */ be_const_int(0),
+ /* K21 */ be_nested_str_weak(_),
+ /* K22 */ be_nested_str_weak(find),
+ /* K23 */ be_nested_str_weak(0x),
+ /* K24 */ be_nested_str_weak(set),
+ /* K25 */ be_nested_str_weak(fromhex),
+ /* K26 */ be_const_int(2),
+ /* K27 */ be_const_int(2147483647),
+ /* K28 */ be_nested_str_weak(_X24_X24),
+ /* K29 */ be_nested_str_weak(fromb64),
+ /* K30 */ be_nested_str_weak(stop_iteration),
+ /* K31 */ be_nested_str_weak(hydrate_post),
+ /* K32 */ be_nested_str_weak(root_ca_certificate),
+ /* K33 */ be_nested_str_weak(json),
+ /* K34 */ be_nested_str_weak(persist_pre),
+ /* K35 */ be_nested_str_weak(members),
+ /* K36 */ be_nested_str_weak(get),
+ /* K37 */ be_nested_str_weak(function),
+ /* K38 */ be_nested_str_weak(push),
+ /* K39 */ be_nested_str_weak(sort),
+ /* K40 */ be_nested_str_weak(tob64),
+ /* K41 */ be_nested_str_weak(_X25s_X3A_X25s),
+ /* K42 */ be_nested_str_weak(dump),
+ /* K43 */ be_nested_str_weak(_sessions),
+ /* K44 */ be_nested_str_weak(persistables),
+ /* K45 */ be_nested_str_weak(tojson),
+ /* K46 */ be_nested_str_weak(_X5B),
+ /* K47 */ be_nested_str_weak(concat),
+ /* K48 */ be_nested_str_weak(_X2C),
+ /* K49 */ be_nested_str_weak(_X5D),
+ /* K50 */ be_nested_str_weak(_X22_sessions_X22_X3A),
+ /* K51 */ be_nested_str_weak(persist_post),
+ /* K52 */ be_nested_str_weak(_X7B),
+ /* K53 */ be_nested_str_weak(_X7D),
+ /* K54 */ be_nested_str_weak(_counter_group_data_snd_impl),
+ /* K55 */ be_nested_str_weak(reset),
+ /* K56 */ be_nested_str_weak(counter_group_data_snd),
+ /* K57 */ be_nested_str_weak(_counter_group_ctrl_snd_impl),
+ /* K58 */ be_nested_str_weak(counter_group_ctrl_snd),
+ /* K59 */ be_nested_str_weak(val),
+ /* K60 */ be_nested_str_weak(ipk_epoch_key),
+ /* K61 */ be_nested_str_weak(device_id),
+ /* K62 */ be_nested_str_weak(fabric_parent),
+ /* K63 */ be_nested_str_weak(get_fabric_index),
+ /* K64 */ be_nested_str_weak(deleted),
+ /* K65 */ be_nested_str_weak(int64),
+ /* K66 */ be_nested_str_weak(frombytes),
+ /* K67 */ be_nested_str_weak(get_old_recent_session),
+ /* K68 */ be_nested_str_weak(set_no_expiration),
+ /* K69 */ be_nested_str_weak(set_persist),
+ /* K70 */ be_nested_str_weak(assign_fabric_index),
+ /* K71 */ be_nested_str_weak(_store),
+ /* K72 */ be_nested_str_weak(add_fabric),
+ /* K73 */ be_nested_str_weak(next),
+ /* K74 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_data_snd_X3D_X25i),
+ /* K75 */ be_nested_str_weak(Counter),
+ /* K76 */ be_nested_str_weak(is_greater),
+ /* K77 */ be_nested_str_weak(_GROUP_SND_INCR),
+ /* K78 */ be_nested_str_weak(does_persist),
+ /* K79 */ be_nested_str_weak(save),
+ /* K80 */ be_nested_str_weak(MTR_X3A_X20_X2BFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20vendorid_X3D_X25s),
+ /* K81 */ be_nested_str_weak(get_admin_vendor_name),
+ /* K82 */ be_nested_str_weak(TLV),
+ /* K83 */ be_nested_str_weak(parse),
+ /* K84 */ be_nested_str_weak(findsubval),
+ /* K85 */ be_nested_str_weak(fabric_index),
+ /* K86 */ be_nested_str_weak(write),
+ /* K87 */ be_nested_str_weak(_X2C_X22_sessions_X22_X3A_X5B),
+ /* K88 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_ctrl_snd_X3D_X25i),
+ /* K89 */ be_nested_str_weak(set_expire_in_seconds),
+ /* K90 */ be_nested_str_weak(set_fabric_index),
+ /* K91 */ be_nested_str_weak(next_fabric_idx),
+ /* K92 */ be_nested_str_weak(last_used),
+ /* K93 */ be_const_int(1),
+ /* K94 */ be_nested_str_weak(crypto),
+ /* K95 */ be_nested_str_weak(Expirable_list),
+ /* K96 */ be_nested_str_weak(fabric_label),
+ /* K97 */ be_nested_str_weak(),
+ /* K98 */ be_nested_str_weak(created),
+ /* K99 */ be_nested_str_weak(tasmota),
+ /* K100 */ be_nested_str_weak(rtc_utc),
+ /* K101 */ be_nested_str_weak(_MAX_CASE),
+ /* K102 */ be_nested_str_weak(get_oldest_session),
+ /* K103 */ be_nested_str_weak(remove),
+ /* K104 */ be_nested_str_weak(remove_session),
+ /* K105 */ be_nested_str_weak(HKDF_SHA256),
+ /* K106 */ be_nested_str_weak(fromstring),
+ /* K107 */ be_nested_str_weak(_GROUP_KEY),
+ /* K108 */ be_nested_str_weak(derive),
+ /* K109 */ be_nested_str_weak(get_vendor_name),
+ /* K110 */ be_nested_str_weak(0x_X2504X),
+};
+
extern const bclass be_class_Matter_Fabric;
/********************************************************************
** Solidified function: get_icac
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_get_icac, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(icac),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(get_icac),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
@@ -37,46 +150,35 @@ be_local_closure(class_Matter_Fabric_get_icac, /* name */
/********************************************************************
** Solidified function: before_remove
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_before_remove, /* name */
be_nested_proto(
- 7, /* nstack */
+ 6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(log),
- /* K2 */ be_nested_str_weak(MTR_X3A_X20_X2DFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20_X28removed_X29),
- /* K3 */ be_nested_str_weak(get_fabric_id),
- /* K4 */ be_nested_str_weak(copy),
- /* K5 */ be_nested_str_weak(reverse),
- /* K6 */ be_nested_str_weak(tohex),
- /* K7 */ be_const_int(3),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(before_remove),
&be_const_str_solidified,
- ( &(const binstruction[16]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x600C0018, // 0002 GETGBL R3 G24
- 0x58100002, // 0003 LDCONST R4 K2
- 0x8C140103, // 0004 GETMET R5 R0 K3
- 0x7C140200, // 0005 CALL R5 1
- 0x8C140B04, // 0006 GETMET R5 R5 K4
- 0x7C140200, // 0007 CALL R5 1
- 0x8C140B05, // 0008 GETMET R5 R5 K5
- 0x7C140200, // 0009 CALL R5 1
- 0x8C140B06, // 000A GETMET R5 R5 K6
- 0x7C140200, // 000B CALL R5 1
- 0x7C0C0400, // 000C CALL R3 2
- 0x58100007, // 000D LDCONST R4 K7
- 0x7C040600, // 000E CALL R1 3
- 0x80000000, // 000F RET 0
+ ( &(const binstruction[15]) { /* code */
+ 0xB8060200, // 0000 GETNGBL R1 K1
+ 0x60080018, // 0001 GETGBL R2 G24
+ 0x580C0002, // 0002 LDCONST R3 K2
+ 0x8C100103, // 0003 GETMET R4 R0 K3
+ 0x7C100200, // 0004 CALL R4 1
+ 0x8C100904, // 0005 GETMET R4 R4 K4
+ 0x7C100200, // 0006 CALL R4 1
+ 0x8C100905, // 0007 GETMET R4 R4 K5
+ 0x7C100200, // 0008 CALL R4 1
+ 0x8C100906, // 0009 GETMET R4 R4 K6
+ 0x7C100200, // 000A CALL R4 1
+ 0x7C080400, // 000B CALL R2 2
+ 0x580C0007, // 000C LDCONST R3 K7
+ 0x7C040400, // 000D CALL R1 2
+ 0x80000000, // 000E RET 0
})
)
);
@@ -86,24 +188,21 @@ be_local_closure(class_Matter_Fabric_before_remove, /* name */
/********************************************************************
** Solidified function: get_pk
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_get_pk, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(no_private_key),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(get_pk),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040108, // 0000 GETMBR R1 R0 K8
0x80040200, // 0001 RET 1 R1
})
)
@@ -114,24 +213,21 @@ be_local_closure(class_Matter_Fabric_get_pk, /* name */
/********************************************************************
** Solidified function: get_fabric_compressed
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_get_fabric_compressed, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(fabric_compressed),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(get_fabric_compressed),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040109, // 0000 GETMBR R1 R0 K9
0x80040200, // 0001 RET 1 R1
})
)
@@ -142,24 +238,21 @@ be_local_closure(class_Matter_Fabric_get_fabric_compressed, /* name */
/********************************************************************
** Solidified function: get_fabric_id
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_get_fabric_id, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(fabric_id),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(get_fabric_id),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804010A, // 0000 GETMBR R1 R0 K10
0x80040200, // 0001 RET 1 R1
})
)
@@ -170,26 +263,22 @@ be_local_closure(class_Matter_Fabric_get_fabric_id, /* name */
/********************************************************************
** Solidified function: set_admin_subject_vendor
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_set_admin_subject_vendor, /* name */
be_nested_proto(
3, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(admin_subject),
- /* K1 */ be_nested_str_weak(admin_vendor),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(set_admin_subject_vendor),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
+ 0x90021601, // 0000 SETMBR R0 K11 R1
+ 0x90021802, // 0001 SETMBR R0 K12 R2
0x80000000, // 0002 RET 0
})
)
@@ -200,24 +289,21 @@ be_local_closure(class_Matter_Fabric_set_admin_subject_vendor, /* name */
/********************************************************************
** Solidified function: get_admin_vendor
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_get_admin_vendor, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(admin_vendor),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(get_admin_vendor),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804010C, // 0000 GETMBR R1 R0 K12
0x80040200, // 0001 RET 1 R1
})
)
@@ -228,24 +314,21 @@ be_local_closure(class_Matter_Fabric_get_admin_vendor, /* name */
/********************************************************************
** Solidified function: get_noc
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_get_noc, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(noc),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(get_noc),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804010D, // 0000 GETMBR R1 R0 K13
0x80040200, // 0001 RET 1 R1
})
)
@@ -256,114 +339,94 @@ be_local_closure(class_Matter_Fabric_get_noc, /* name */
/********************************************************************
** Solidified function: fromjson
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_fromjson, /* name */
be_nested_proto(
16, /* nstack */
2, /* argc */
- 4, /* varg */
+ 12, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_Fabric),
- /* K1 */ be_nested_str_weak(string),
- /* K2 */ be_nested_str_weak(introspect),
- /* K3 */ be_nested_str_weak(matter),
- /* K4 */ be_nested_str_weak(Fabric),
- /* K5 */ be_nested_str_weak(keys),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(_),
- /* K8 */ be_nested_str_weak(find),
- /* K9 */ be_nested_str_weak(0x),
- /* K10 */ be_nested_str_weak(set),
- /* K11 */ be_nested_str_weak(fromhex),
- /* K12 */ be_const_int(2),
- /* K13 */ be_const_int(2147483647),
- /* K14 */ be_nested_str_weak(_X24_X24),
- /* K15 */ be_nested_str_weak(fromb64),
- /* K16 */ be_nested_str_weak(stop_iteration),
- /* K17 */ be_nested_str_weak(hydrate_post),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(fromjson),
&be_const_str_solidified,
( &(const binstruction[76]) { /* code */
- 0x58080000, // 0000 LDCONST R2 K0
- 0xA40E0200, // 0001 IMPORT R3 K1
- 0xA4120400, // 0002 IMPORT R4 K2
- 0xB8160600, // 0003 GETNGBL R5 K3
- 0x8C140B04, // 0004 GETMET R5 R5 K4
+ 0x5808000E, // 0000 LDCONST R2 K14
+ 0xA40E1E00, // 0001 IMPORT R3 K15
+ 0xA4122000, // 0002 IMPORT R4 K16
+ 0xB8162200, // 0003 GETNGBL R5 K17
+ 0x8C140B12, // 0004 GETMET R5 R5 K18
0x5C1C0000, // 0005 MOVE R7 R0
0x7C140400, // 0006 CALL R5 2
0x60180010, // 0007 GETGBL R6 G16
- 0x8C1C0305, // 0008 GETMET R7 R1 K5
+ 0x8C1C0313, // 0008 GETMET R7 R1 K19
0x7C1C0200, // 0009 CALL R7 1
0x7C180200, // 000A CALL R6 1
0xA8020039, // 000B EXBLK 0 #0046
0x5C1C0C00, // 000C MOVE R7 R6
0x7C1C0000, // 000D CALL R7 0
- 0x94200F06, // 000E GETIDX R8 R7 K6
- 0x1C201107, // 000F EQ R8 R8 K7
+ 0x94200F14, // 000E GETIDX R8 R7 K20
+ 0x1C201115, // 000F EQ R8 R8 K21
0x78220000, // 0010 JMPF R8 #0012
0x7001FFF9, // 0011 JMP #000C
0x94200207, // 0012 GETIDX R8 R1 R7
0x60240004, // 0013 GETGBL R9 G4
0x5C281000, // 0014 MOVE R10 R8
0x7C240200, // 0015 CALL R9 1
- 0x1C241301, // 0016 EQ R9 R9 K1
+ 0x1C24130F, // 0016 EQ R9 R9 K15
0x78260027, // 0017 JMPF R9 #0040
- 0x8C240708, // 0018 GETMET R9 R3 K8
+ 0x8C240716, // 0018 GETMET R9 R3 K22
0x5C2C1000, // 0019 MOVE R11 R8
- 0x58300009, // 001A LDCONST R12 K9
+ 0x58300017, // 001A LDCONST R12 K23
0x7C240600, // 001B CALL R9 3
- 0x1C241306, // 001C EQ R9 R9 K6
+ 0x1C241314, // 001C EQ R9 R9 K20
0x7826000A, // 001D JMPF R9 #0029
- 0x8C24090A, // 001E GETMET R9 R4 K10
+ 0x8C240918, // 001E GETMET R9 R4 K24
0x5C2C0A00, // 001F MOVE R11 R5
0x5C300E00, // 0020 MOVE R12 R7
0x60340015, // 0021 GETGBL R13 G21
0x7C340000, // 0022 CALL R13 0
- 0x8C341B0B, // 0023 GETMET R13 R13 K11
- 0x403E190D, // 0024 CONNECT R15 K12 K13
+ 0x8C341B19, // 0023 GETMET R13 R13 K25
+ 0x403E351B, // 0024 CONNECT R15 K26 K27
0x943C100F, // 0025 GETIDX R15 R8 R15
0x7C340400, // 0026 CALL R13 2
0x7C240800, // 0027 CALL R9 4
0x70020015, // 0028 JMP #003F
- 0x8C240708, // 0029 GETMET R9 R3 K8
+ 0x8C240716, // 0029 GETMET R9 R3 K22
0x5C2C1000, // 002A MOVE R11 R8
- 0x5830000E, // 002B LDCONST R12 K14
+ 0x5830001C, // 002B LDCONST R12 K28
0x7C240600, // 002C CALL R9 3
- 0x1C241306, // 002D EQ R9 R9 K6
+ 0x1C241314, // 002D EQ R9 R9 K20
0x7826000A, // 002E JMPF R9 #003A
- 0x8C24090A, // 002F GETMET R9 R4 K10
+ 0x8C240918, // 002F GETMET R9 R4 K24
0x5C2C0A00, // 0030 MOVE R11 R5
0x5C300E00, // 0031 MOVE R12 R7
0x60340015, // 0032 GETGBL R13 G21
0x7C340000, // 0033 CALL R13 0
- 0x8C341B0F, // 0034 GETMET R13 R13 K15
- 0x403E190D, // 0035 CONNECT R15 K12 K13
+ 0x8C341B1D, // 0034 GETMET R13 R13 K29
+ 0x403E351B, // 0035 CONNECT R15 K26 K27
0x943C100F, // 0036 GETIDX R15 R8 R15
0x7C340400, // 0037 CALL R13 2
0x7C240800, // 0038 CALL R9 4
0x70020004, // 0039 JMP #003F
- 0x8C24090A, // 003A GETMET R9 R4 K10
+ 0x8C240918, // 003A GETMET R9 R4 K24
0x5C2C0A00, // 003B MOVE R11 R5
0x5C300E00, // 003C MOVE R12 R7
0x5C341000, // 003D MOVE R13 R8
0x7C240800, // 003E CALL R9 4
0x70020004, // 003F JMP #0045
- 0x8C24090A, // 0040 GETMET R9 R4 K10
+ 0x8C240918, // 0040 GETMET R9 R4 K24
0x5C2C0A00, // 0041 MOVE R11 R5
0x5C300E00, // 0042 MOVE R12 R7
0x5C341000, // 0043 MOVE R13 R8
0x7C240800, // 0044 CALL R9 4
0x7001FFC5, // 0045 JMP #000C
- 0x58180010, // 0046 LDCONST R6 K16
+ 0x5818001E, // 0046 LDCONST R6 K30
0xAC180200, // 0047 CATCH R6 1 0
0xB0080000, // 0048 RAISE 2 R0 R0
- 0x8C180B11, // 0049 GETMET R6 R5 K17
+ 0x8C180B1F, // 0049 GETMET R6 R5 K31
0x7C180200, // 004A CALL R6 1
0x80040A00, // 004B RET 1 R5
})
@@ -375,24 +438,21 @@ be_local_closure(class_Matter_Fabric_fromjson, /* name */
/********************************************************************
** Solidified function: set_ca
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_set_ca, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(root_ca_certificate),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(set_ca),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90024001, // 0000 SETMBR R0 K32 R1
0x80000000, // 0001 RET 0
})
)
@@ -403,84 +463,55 @@ be_local_closure(class_Matter_Fabric_set_ca, /* name */
/********************************************************************
** Solidified function: tojson
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_tojson, /* name */
be_nested_proto(
16, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[27]) { /* constants */
- /* K0 */ be_nested_str_weak(json),
- /* K1 */ be_nested_str_weak(introspect),
- /* K2 */ be_nested_str_weak(persist_pre),
- /* K3 */ be_nested_str_weak(members),
- /* K4 */ be_nested_str_weak(get),
- /* K5 */ be_nested_str_weak(function),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(_),
- /* K8 */ be_nested_str_weak(push),
- /* K9 */ be_nested_str_weak(stop_iteration),
- /* K10 */ be_nested_str_weak(matter),
- /* K11 */ be_nested_str_weak(sort),
- /* K12 */ be_nested_str_weak(_X24_X24),
- /* K13 */ be_nested_str_weak(tob64),
- /* K14 */ be_nested_str_weak(_X25s_X3A_X25s),
- /* K15 */ be_nested_str_weak(dump),
- /* K16 */ be_nested_str_weak(_sessions),
- /* K17 */ be_nested_str_weak(persistables),
- /* K18 */ be_nested_str_weak(tojson),
- /* K19 */ be_nested_str_weak(_X5B),
- /* K20 */ be_nested_str_weak(concat),
- /* K21 */ be_nested_str_weak(_X2C),
- /* K22 */ be_nested_str_weak(_X5D),
- /* K23 */ be_nested_str_weak(_X22_sessions_X22_X3A),
- /* K24 */ be_nested_str_weak(persist_post),
- /* K25 */ be_nested_str_weak(_X7B),
- /* K26 */ be_nested_str_weak(_X7D),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(tojson),
&be_const_str_solidified,
( &(const binstruction[119]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xA40A0200, // 0001 IMPORT R2 K1
- 0x8C0C0102, // 0002 GETMET R3 R0 K2
+ 0xA4064200, // 0000 IMPORT R1 K33
+ 0xA40A2000, // 0001 IMPORT R2 K16
+ 0x8C0C0122, // 0002 GETMET R3 R0 K34
0x7C0C0200, // 0003 CALL R3 1
0x600C0012, // 0004 GETGBL R3 G18
0x7C0C0000, // 0005 CALL R3 0
0x60100010, // 0006 GETGBL R4 G16
- 0x8C140503, // 0007 GETMET R5 R2 K3
+ 0x8C140523, // 0007 GETMET R5 R2 K35
0x5C1C0000, // 0008 MOVE R7 R0
0x7C140400, // 0009 CALL R5 2
0x7C100200, // 000A CALL R4 1
0xA8020011, // 000B EXBLK 0 #001E
0x5C140800, // 000C MOVE R5 R4
0x7C140000, // 000D CALL R5 0
- 0x8C180504, // 000E GETMET R6 R2 K4
+ 0x8C180524, // 000E GETMET R6 R2 K36
0x5C200000, // 000F MOVE R8 R0
0x5C240A00, // 0010 MOVE R9 R5
0x7C180600, // 0011 CALL R6 3
0x601C0004, // 0012 GETGBL R7 G4
0x5C200C00, // 0013 MOVE R8 R6
0x7C1C0200, // 0014 CALL R7 1
- 0x201C0F05, // 0015 NE R7 R7 K5
+ 0x201C0F25, // 0015 NE R7 R7 K37
0x781E0005, // 0016 JMPF R7 #001D
- 0x941C0B06, // 0017 GETIDX R7 R5 K6
- 0x201C0F07, // 0018 NE R7 R7 K7
+ 0x941C0B14, // 0017 GETIDX R7 R5 K20
+ 0x201C0F15, // 0018 NE R7 R7 K21
0x781E0002, // 0019 JMPF R7 #001D
- 0x8C1C0708, // 001A GETMET R7 R3 K8
+ 0x8C1C0726, // 001A GETMET R7 R3 K38
0x5C240A00, // 001B MOVE R9 R5
0x7C1C0400, // 001C CALL R7 2
0x7001FFED, // 001D JMP #000C
- 0x58100009, // 001E LDCONST R4 K9
+ 0x5810001E, // 001E LDCONST R4 K30
0xAC100200, // 001F CATCH R4 1 0
0xB0080000, // 0020 RAISE 2 R0 R0
- 0xB8121400, // 0021 GETNGBL R4 K10
- 0x8C10090B, // 0022 GETMET R4 R4 K11
+ 0xB8122200, // 0021 GETNGBL R4 K17
+ 0x8C100927, // 0022 GETMET R4 R4 K39
0x5C180600, // 0023 MOVE R6 R3
0x7C100400, // 0024 CALL R4 2
0x5C0C0800, // 0025 MOVE R3 R4
@@ -492,7 +523,7 @@ be_local_closure(class_Matter_Fabric_tojson, /* name */
0xA8020020, // 002B EXBLK 0 #004D
0x5C180A00, // 002C MOVE R6 R5
0x7C180000, // 002D CALL R6 0
- 0x8C1C0504, // 002E GETMET R7 R2 K4
+ 0x8C1C0524, // 002E GETMET R7 R2 K36
0x5C240000, // 002F MOVE R9 R0
0x5C280C00, // 0030 MOVE R10 R6
0x7C1C0600, // 0031 CALL R7 3
@@ -505,65 +536,65 @@ be_local_closure(class_Matter_Fabric_tojson, /* name */
0x60280015, // 0038 GETGBL R10 G21
0x7C200400, // 0039 CALL R8 2
0x78220003, // 003A JMPF R8 #003F
- 0x8C200F0D, // 003B GETMET R8 R7 K13
+ 0x8C200F28, // 003B GETMET R8 R7 K40
0x7C200200, // 003C CALL R8 1
- 0x00221808, // 003D ADD R8 K12 R8
+ 0x00223808, // 003D ADD R8 K28 R8
0x5C1C1000, // 003E MOVE R7 R8
- 0x8C200908, // 003F GETMET R8 R4 K8
+ 0x8C200926, // 003F GETMET R8 R4 K38
0x60280018, // 0040 GETGBL R10 G24
- 0x582C000E, // 0041 LDCONST R11 K14
- 0x8C30030F, // 0042 GETMET R12 R1 K15
+ 0x582C0029, // 0041 LDCONST R11 K41
+ 0x8C30032A, // 0042 GETMET R12 R1 K42
0x60380008, // 0043 GETGBL R14 G8
0x5C3C0C00, // 0044 MOVE R15 R6
0x7C380200, // 0045 CALL R14 1
0x7C300400, // 0046 CALL R12 2
- 0x8C34030F, // 0047 GETMET R13 R1 K15
+ 0x8C34032A, // 0047 GETMET R13 R1 K42
0x5C3C0E00, // 0048 MOVE R15 R7
0x7C340400, // 0049 CALL R13 2
0x7C280600, // 004A CALL R10 3
0x7C200400, // 004B CALL R8 2
0x7001FFDE, // 004C JMP #002C
- 0x58140009, // 004D LDCONST R5 K9
+ 0x5814001E, // 004D LDCONST R5 K30
0xAC140200, // 004E CATCH R5 1 0
0xB0080000, // 004F RAISE 2 R0 R0
0x60140012, // 0050 GETGBL R5 G18
0x7C140000, // 0051 CALL R5 0
0x60180010, // 0052 GETGBL R6 G16
- 0x881C0110, // 0053 GETMBR R7 R0 K16
- 0x8C1C0F11, // 0054 GETMET R7 R7 K17
+ 0x881C012B, // 0053 GETMBR R7 R0 K43
+ 0x8C1C0F2C, // 0054 GETMET R7 R7 K44
0x7C1C0200, // 0055 CALL R7 1
0x7C180200, // 0056 CALL R6 1
0xA8020006, // 0057 EXBLK 0 #005F
0x5C1C0C00, // 0058 MOVE R7 R6
0x7C1C0000, // 0059 CALL R7 0
- 0x8C200B08, // 005A GETMET R8 R5 K8
- 0x8C280F12, // 005B GETMET R10 R7 K18
+ 0x8C200B26, // 005A GETMET R8 R5 K38
+ 0x8C280F2D, // 005B GETMET R10 R7 K45
0x7C280200, // 005C CALL R10 1
0x7C200400, // 005D CALL R8 2
0x7001FFF8, // 005E JMP #0058
- 0x58180009, // 005F LDCONST R6 K9
+ 0x5818001E, // 005F LDCONST R6 K30
0xAC180200, // 0060 CATCH R6 1 0
0xB0080000, // 0061 RAISE 2 R0 R0
0x6018000C, // 0062 GETGBL R6 G12
0x5C1C0A00, // 0063 MOVE R7 R5
0x7C180200, // 0064 CALL R6 1
- 0x24180D06, // 0065 GT R6 R6 K6
+ 0x24180D14, // 0065 GT R6 R6 K20
0x781A0007, // 0066 JMPF R6 #006F
- 0x8C180B14, // 0067 GETMET R6 R5 K20
- 0x58200015, // 0068 LDCONST R8 K21
+ 0x8C180B2F, // 0067 GETMET R6 R5 K47
+ 0x58200030, // 0068 LDCONST R8 K48
0x7C180400, // 0069 CALL R6 2
- 0x001A2606, // 006A ADD R6 K19 R6
- 0x00180D16, // 006B ADD R6 R6 K22
- 0x8C1C0908, // 006C GETMET R7 R4 K8
- 0x00262E06, // 006D ADD R9 K23 R6
+ 0x001A5C06, // 006A ADD R6 K46 R6
+ 0x00180D31, // 006B ADD R6 R6 K49
+ 0x8C1C0926, // 006C GETMET R7 R4 K38
+ 0x00266406, // 006D ADD R9 K50 R6
0x7C1C0400, // 006E CALL R7 2
- 0x8C180118, // 006F GETMET R6 R0 K24
+ 0x8C180133, // 006F GETMET R6 R0 K51
0x7C180200, // 0070 CALL R6 1
- 0x8C180914, // 0071 GETMET R6 R4 K20
- 0x58200015, // 0072 LDCONST R8 K21
+ 0x8C18092F, // 0071 GETMET R6 R4 K47
+ 0x58200030, // 0072 LDCONST R8 K48
0x7C180400, // 0073 CALL R6 2
- 0x001A3206, // 0074 ADD R6 K25 R6
- 0x00180D1A, // 0075 ADD R6 R6 K26
+ 0x001A6806, // 0074 ADD R6 K52 R6
+ 0x00180D35, // 0075 ADD R6 R6 K53
0x80040C00, // 0076 RET 1 R6
})
)
@@ -574,44 +605,36 @@ be_local_closure(class_Matter_Fabric_tojson, /* name */
/********************************************************************
** Solidified function: hydrate_post
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_hydrate_post, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(_counter_group_data_snd_impl),
- /* K1 */ be_nested_str_weak(reset),
- /* K2 */ be_nested_str_weak(counter_group_data_snd),
- /* K3 */ be_nested_str_weak(_counter_group_ctrl_snd_impl),
- /* K4 */ be_nested_str_weak(counter_group_ctrl_snd),
- /* K5 */ be_nested_str_weak(val),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(hydrate_post),
&be_const_str_solidified,
( &(const binstruction[17]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x880C0102, // 0002 GETMBR R3 R0 K2
+ 0x88040136, // 0000 GETMBR R1 R0 K54
+ 0x8C040337, // 0001 GETMET R1 R1 K55
+ 0x880C0138, // 0002 GETMBR R3 R0 K56
0x7C040400, // 0003 CALL R1 2
- 0x88040103, // 0004 GETMBR R1 R0 K3
- 0x8C040301, // 0005 GETMET R1 R1 K1
- 0x880C0104, // 0006 GETMBR R3 R0 K4
+ 0x88040139, // 0004 GETMBR R1 R0 K57
+ 0x8C040337, // 0005 GETMET R1 R1 K55
+ 0x880C013A, // 0006 GETMBR R3 R0 K58
0x7C040400, // 0007 CALL R1 2
- 0x88040100, // 0008 GETMBR R1 R0 K0
- 0x8C040305, // 0009 GETMET R1 R1 K5
+ 0x88040136, // 0008 GETMBR R1 R0 K54
+ 0x8C04033B, // 0009 GETMET R1 R1 K59
0x7C040200, // 000A CALL R1 1
- 0x90020401, // 000B SETMBR R0 K2 R1
- 0x88040103, // 000C GETMBR R1 R0 K3
- 0x8C040305, // 000D GETMET R1 R1 K5
+ 0x90027001, // 000B SETMBR R0 K56 R1
+ 0x88040139, // 000C GETMBR R1 R0 K57
+ 0x8C04033B, // 000D GETMET R1 R1 K59
0x7C040200, // 000E CALL R1 1
- 0x90020801, // 000F SETMBR R0 K4 R1
+ 0x90027401, // 000F SETMBR R0 K58 R1
0x80000000, // 0010 RET 0
})
)
@@ -622,24 +645,21 @@ be_local_closure(class_Matter_Fabric_hydrate_post, /* name */
/********************************************************************
** Solidified function: set_ipk_epoch_key
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_set_ipk_epoch_key, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(ipk_epoch_key),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(set_ipk_epoch_key),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90027801, // 0000 SETMBR R0 K60 R1
0x80000000, // 0001 RET 0
})
)
@@ -650,38 +670,31 @@ be_local_closure(class_Matter_Fabric_set_ipk_epoch_key, /* name */
/********************************************************************
** Solidified function: set_fabric_device
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_set_fabric_device, /* name */
be_nested_proto(
7, /* nstack */
5, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(fabric_id),
- /* K1 */ be_nested_str_weak(device_id),
- /* K2 */ be_nested_str_weak(fabric_compressed),
- /* K3 */ be_nested_str_weak(fabric_parent),
- /* K4 */ be_nested_str_weak(get_fabric_index),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(set_fabric_device),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
- 0x90020403, // 0002 SETMBR R0 K2 R3
+ 0x90021401, // 0000 SETMBR R0 K10 R1
+ 0x90027A02, // 0001 SETMBR R0 K61 R2
+ 0x90021203, // 0002 SETMBR R0 K9 R3
0x4C140000, // 0003 LDNIL R5
0x20140805, // 0004 NE R5 R4 R5
0x78160002, // 0005 JMPF R5 #0009
- 0x8C140904, // 0006 GETMET R5 R4 K4
+ 0x8C14093F, // 0006 GETMET R5 R4 K63
0x7C140200, // 0007 CALL R5 1
0x70020000, // 0008 JMP #000A
0x4C140000, // 0009 LDNIL R5
- 0x90020605, // 000A SETMBR R0 K3 R5
+ 0x90027C05, // 000A SETMBR R0 K62 R5
0x80000000, // 000B RET 0
})
)
@@ -692,24 +705,21 @@ be_local_closure(class_Matter_Fabric_set_fabric_device, /* name */
/********************************************************************
** Solidified function: get_device_id
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_get_device_id, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(device_id),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(get_device_id),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804013D, // 0000 GETMBR R1 R0 K61
0x80040200, // 0001 RET 1 R1
})
)
@@ -720,24 +730,21 @@ be_local_closure(class_Matter_Fabric_get_device_id, /* name */
/********************************************************************
** Solidified function: get_admin_subject
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_get_admin_subject, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(admin_subject),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(get_admin_subject),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804010B, // 0000 GETMBR R1 R0 K11
0x80040200, // 0001 RET 1 R1
})
)
@@ -748,24 +755,21 @@ be_local_closure(class_Matter_Fabric_get_admin_subject, /* name */
/********************************************************************
** Solidified function: is_marked_for_deletion
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_is_marked_for_deletion, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(deleted),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(is_marked_for_deletion),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040140, // 0000 GETMBR R1 R0 K64
0x4C080000, // 0001 LDNIL R2
0x20040202, // 0002 NE R1 R1 R2
0x80040200, // 0003 RET 1 R1
@@ -778,28 +782,23 @@ be_local_closure(class_Matter_Fabric_is_marked_for_deletion, /* name */
/********************************************************************
** Solidified function: get_fabric_id_as_int64
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_get_fabric_id_as_int64, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(int64),
- /* K1 */ be_nested_str_weak(frombytes),
- /* K2 */ be_nested_str_weak(fabric_id),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(get_fabric_id_as_int64),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x880C0102, // 0002 GETMBR R3 R0 K2
+ 0xB8068200, // 0000 GETNGBL R1 K65
+ 0x8C040342, // 0001 GETMET R1 R1 K66
+ 0x880C010A, // 0002 GETMBR R3 R0 K10
0x7C040400, // 0003 CALL R1 2
0x80040200, // 0004 RET 1 R1
})
@@ -811,24 +810,21 @@ be_local_closure(class_Matter_Fabric_get_fabric_id_as_int64, /* name */
/********************************************************************
** Solidified function: get_ca
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_get_ca, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(root_ca_certificate),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(get_ca),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040120, // 0000 GETMBR R1 R0 K32
0x80040200, // 0001 RET 1 R1
})
)
@@ -839,24 +835,21 @@ be_local_closure(class_Matter_Fabric_get_ca, /* name */
/********************************************************************
** Solidified function: get_oldest_session
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_get_oldest_session, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(get_old_recent_session),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(get_oldest_session),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040143, // 0000 GETMET R1 R0 K67
0x500C0200, // 0001 LDBOOL R3 1 0
0x7C040400, // 0002 CALL R1 2
0x80040200, // 0003 RET 1 R1
@@ -869,36 +862,29 @@ be_local_closure(class_Matter_Fabric_get_oldest_session, /* name */
/********************************************************************
** Solidified function: fabric_completed
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_fabric_completed, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(set_no_expiration),
- /* K1 */ be_nested_str_weak(set_persist),
- /* K2 */ be_nested_str_weak(assign_fabric_index),
- /* K3 */ be_nested_str_weak(_store),
- /* K4 */ be_nested_str_weak(add_fabric),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(fabric_completed),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040144, // 0000 GETMET R1 R0 K68
0x7C040200, // 0001 CALL R1 1
- 0x8C040101, // 0002 GETMET R1 R0 K1
+ 0x8C040145, // 0002 GETMET R1 R0 K69
0x500C0200, // 0003 LDBOOL R3 1 0
0x7C040400, // 0004 CALL R1 2
- 0x8C040102, // 0005 GETMET R1 R0 K2
+ 0x8C040146, // 0005 GETMET R1 R0 K70
0x7C040200, // 0006 CALL R1 1
- 0x88040103, // 0007 GETMBR R1 R0 K3
- 0x8C040304, // 0008 GETMET R1 R1 K4
+ 0x88040147, // 0007 GETMBR R1 R0 K71
+ 0x8C040348, // 0008 GETMET R1 R1 K72
0x5C0C0000, // 0009 MOVE R3 R0
0x7C040400, // 000A CALL R1 2
0x80000000, // 000B RET 0
@@ -911,62 +897,46 @@ be_local_closure(class_Matter_Fabric_fabric_completed, /* name */
/********************************************************************
** Solidified function: counter_group_data_snd_next
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_counter_group_data_snd_next, /* name */
be_nested_proto(
- 7, /* nstack */
+ 6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(_counter_group_data_snd_impl),
- /* K1 */ be_nested_str_weak(next),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(log),
- /* K4 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_data_snd_X3D_X25i),
- /* K5 */ be_const_int(3),
- /* K6 */ be_nested_str_weak(matter),
- /* K7 */ be_nested_str_weak(Counter),
- /* K8 */ be_nested_str_weak(is_greater),
- /* K9 */ be_nested_str_weak(counter_group_data_snd),
- /* K10 */ be_nested_str_weak(_GROUP_SND_INCR),
- /* K11 */ be_nested_str_weak(does_persist),
- /* K12 */ be_nested_str_weak(save),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(counter_group_data_snd_next),
&be_const_str_solidified,
- ( &(const binstruction[27]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ ( &(const binstruction[26]) { /* code */
+ 0x88040136, // 0000 GETMBR R1 R0 K54
+ 0x8C040349, // 0001 GETMET R1 R1 K73
0x7C040200, // 0002 CALL R1 1
- 0xB80A0400, // 0003 GETNGBL R2 K2
- 0x8C080503, // 0004 GETMET R2 R2 K3
- 0x60100018, // 0005 GETGBL R4 G24
- 0x58140004, // 0006 LDCONST R5 K4
- 0x5C180200, // 0007 MOVE R6 R1
- 0x7C100400, // 0008 CALL R4 2
- 0x58140005, // 0009 LDCONST R5 K5
- 0x7C080600, // 000A CALL R2 3
- 0xB80A0C00, // 000B GETNGBL R2 K6
- 0x88080507, // 000C GETMBR R2 R2 K7
- 0x8C080508, // 000D GETMET R2 R2 K8
- 0x5C100200, // 000E MOVE R4 R1
- 0x88140109, // 000F GETMBR R5 R0 K9
- 0x7C080600, // 0010 CALL R2 3
- 0x780A0007, // 0011 JMPF R2 #001A
- 0x8808010A, // 0012 GETMBR R2 R0 K10
- 0x00080202, // 0013 ADD R2 R1 R2
- 0x90021202, // 0014 SETMBR R0 K9 R2
- 0x8C08010B, // 0015 GETMET R2 R0 K11
- 0x7C080200, // 0016 CALL R2 1
- 0x780A0001, // 0017 JMPF R2 #001A
- 0x8C08010C, // 0018 GETMET R2 R0 K12
- 0x7C080200, // 0019 CALL R2 1
- 0x80040200, // 001A RET 1 R1
+ 0xB80A0200, // 0003 GETNGBL R2 K1
+ 0x600C0018, // 0004 GETGBL R3 G24
+ 0x5810004A, // 0005 LDCONST R4 K74
+ 0x5C140200, // 0006 MOVE R5 R1
+ 0x7C0C0400, // 0007 CALL R3 2
+ 0x58100007, // 0008 LDCONST R4 K7
+ 0x7C080400, // 0009 CALL R2 2
+ 0xB80A2200, // 000A GETNGBL R2 K17
+ 0x8808054B, // 000B GETMBR R2 R2 K75
+ 0x8C08054C, // 000C GETMET R2 R2 K76
+ 0x5C100200, // 000D MOVE R4 R1
+ 0x88140138, // 000E GETMBR R5 R0 K56
+ 0x7C080600, // 000F CALL R2 3
+ 0x780A0007, // 0010 JMPF R2 #0019
+ 0x8808014D, // 0011 GETMBR R2 R0 K77
+ 0x00080202, // 0012 ADD R2 R1 R2
+ 0x90027002, // 0013 SETMBR R0 K56 R2
+ 0x8C08014E, // 0014 GETMET R2 R0 K78
+ 0x7C080200, // 0015 CALL R2 1
+ 0x780A0001, // 0016 JMPF R2 #0019
+ 0x8C08014F, // 0017 GETMET R2 R0 K79
+ 0x7C080200, // 0018 CALL R2 1
+ 0x80040200, // 0019 RET 1 R1
})
)
);
@@ -976,26 +946,22 @@ be_local_closure(class_Matter_Fabric_counter_group_data_snd_next, /* name */
/********************************************************************
** Solidified function: set_noc_icac
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_set_noc_icac, /* name */
be_nested_proto(
3, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(noc),
- /* K1 */ be_nested_str_weak(icac),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(set_noc_icac),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
+ 0x90021A01, // 0000 SETMBR R0 K13 R1
+ 0x90020002, // 0001 SETMBR R0 K0 R2
0x80000000, // 0002 RET 0
})
)
@@ -1006,24 +972,21 @@ be_local_closure(class_Matter_Fabric_set_noc_icac, /* name */
/********************************************************************
** Solidified function: set_pk
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_set_pk, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(no_private_key),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(set_pk),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90021001, // 0000 SETMBR R0 K8 R1
0x80000000, // 0001 RET 0
})
)
@@ -1034,24 +997,21 @@ be_local_closure(class_Matter_Fabric_set_pk, /* name */
/********************************************************************
** Solidified function: get_newest_session
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_get_newest_session, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(get_old_recent_session),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(get_newest_session),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040143, // 0000 GETMET R1 R0 K67
0x500C0000, // 0001 LDBOOL R3 0 0
0x7C040400, // 0002 CALL R1 2
0x80040200, // 0003 RET 1 R1
@@ -1064,49 +1024,37 @@ be_local_closure(class_Matter_Fabric_get_newest_session, /* name */
/********************************************************************
** Solidified function: log_new_fabric
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_log_new_fabric, /* name */
be_nested_proto(
- 8, /* nstack */
+ 7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(log),
- /* K2 */ be_nested_str_weak(MTR_X3A_X20_X2BFabric_X20_X20_X20_X20fab_X3D_X27_X25s_X27_X20vendorid_X3D_X25s),
- /* K3 */ be_nested_str_weak(get_fabric_id),
- /* K4 */ be_nested_str_weak(copy),
- /* K5 */ be_nested_str_weak(reverse),
- /* K6 */ be_nested_str_weak(tohex),
- /* K7 */ be_nested_str_weak(get_admin_vendor_name),
- /* K8 */ be_const_int(3),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(log_new_fabric),
&be_const_str_solidified,
- ( &(const binstruction[18]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x600C0018, // 0002 GETGBL R3 G24
- 0x58100002, // 0003 LDCONST R4 K2
- 0x8C140103, // 0004 GETMET R5 R0 K3
- 0x7C140200, // 0005 CALL R5 1
- 0x8C140B04, // 0006 GETMET R5 R5 K4
- 0x7C140200, // 0007 CALL R5 1
- 0x8C140B05, // 0008 GETMET R5 R5 K5
- 0x7C140200, // 0009 CALL R5 1
- 0x8C140B06, // 000A GETMET R5 R5 K6
- 0x7C140200, // 000B CALL R5 1
- 0x8C180107, // 000C GETMET R6 R0 K7
- 0x7C180200, // 000D CALL R6 1
- 0x7C0C0600, // 000E CALL R3 3
- 0x58100008, // 000F LDCONST R4 K8
- 0x7C040600, // 0010 CALL R1 3
- 0x80000000, // 0011 RET 0
+ ( &(const binstruction[17]) { /* code */
+ 0xB8060200, // 0000 GETNGBL R1 K1
+ 0x60080018, // 0001 GETGBL R2 G24
+ 0x580C0050, // 0002 LDCONST R3 K80
+ 0x8C100103, // 0003 GETMET R4 R0 K3
+ 0x7C100200, // 0004 CALL R4 1
+ 0x8C100904, // 0005 GETMET R4 R4 K4
+ 0x7C100200, // 0006 CALL R4 1
+ 0x8C100905, // 0007 GETMET R4 R4 K5
+ 0x7C100200, // 0008 CALL R4 1
+ 0x8C100906, // 0009 GETMET R4 R4 K6
+ 0x7C100200, // 000A CALL R4 1
+ 0x8C140151, // 000B GETMET R5 R0 K81
+ 0x7C140200, // 000C CALL R5 1
+ 0x7C080600, // 000D CALL R2 3
+ 0x580C0007, // 000E LDCONST R3 K7
+ 0x7C040400, // 000F CALL R1 2
+ 0x80000000, // 0010 RET 0
})
)
);
@@ -1116,35 +1064,28 @@ be_local_closure(class_Matter_Fabric_log_new_fabric, /* name */
/********************************************************************
** Solidified function: get_ca_pub
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_get_ca_pub, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(root_ca_certificate),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(TLV),
- /* K3 */ be_nested_str_weak(parse),
- /* K4 */ be_nested_str_weak(findsubval),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(get_ca_pub),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040120, // 0000 GETMBR R1 R0 K32
0x78060008, // 0001 JMPF R1 #000B
- 0xB80A0200, // 0002 GETNGBL R2 K1
- 0x88080502, // 0003 GETMBR R2 R2 K2
- 0x8C080503, // 0004 GETMET R2 R2 K3
+ 0xB80A2200, // 0002 GETNGBL R2 K17
+ 0x88080552, // 0003 GETMBR R2 R2 K82
+ 0x8C080553, // 0004 GETMET R2 R2 K83
0x5C100200, // 0005 MOVE R4 R1
0x7C080400, // 0006 CALL R2 2
- 0x8C0C0504, // 0007 GETMET R3 R2 K4
+ 0x8C0C0554, // 0007 GETMET R3 R2 K84
0x54160008, // 0008 LDINT R5 9
0x7C0C0400, // 0009 CALL R3 2
0x80040600, // 000A RET 1 R3
@@ -1158,24 +1099,21 @@ be_local_closure(class_Matter_Fabric_get_ca_pub, /* name */
/********************************************************************
** Solidified function: get_fabric_index
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_get_fabric_index, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(fabric_index),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(get_fabric_index),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040155, // 0000 GETMBR R1 R0 K85
0x80040200, // 0001 RET 1 R1
})
)
@@ -1186,86 +1124,58 @@ be_local_closure(class_Matter_Fabric_get_fabric_index, /* name */
/********************************************************************
** Solidified function: writejson
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_writejson, /* name */
be_nested_proto(
17, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[26]) { /* constants */
- /* K0 */ be_nested_str_weak(json),
- /* K1 */ be_nested_str_weak(introspect),
- /* K2 */ be_nested_str_weak(write),
- /* K3 */ be_nested_str_weak(_X7B),
- /* K4 */ be_nested_str_weak(persist_pre),
- /* K5 */ be_nested_str_weak(members),
- /* K6 */ be_nested_str_weak(get),
- /* K7 */ be_nested_str_weak(function),
- /* K8 */ be_const_int(0),
- /* K9 */ be_nested_str_weak(_),
- /* K10 */ be_nested_str_weak(push),
- /* K11 */ be_nested_str_weak(stop_iteration),
- /* K12 */ be_nested_str_weak(matter),
- /* K13 */ be_nested_str_weak(sort),
- /* K14 */ be_nested_str_weak(_X24_X24),
- /* K15 */ be_nested_str_weak(tob64),
- /* K16 */ be_nested_str_weak(_X2C),
- /* K17 */ be_nested_str_weak(_X25s_X3A_X25s),
- /* K18 */ be_nested_str_weak(dump),
- /* K19 */ be_nested_str_weak(_sessions),
- /* K20 */ be_nested_str_weak(persistables),
- /* K21 */ be_nested_str_weak(_X2C_X22_sessions_X22_X3A_X5B),
- /* K22 */ be_nested_str_weak(tojson),
- /* K23 */ be_nested_str_weak(_X5D),
- /* K24 */ be_nested_str_weak(persist_post),
- /* K25 */ be_nested_str_weak(_X7D),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(writejson),
&be_const_str_solidified,
( &(const binstruction[125]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0xA40E0200, // 0001 IMPORT R3 K1
- 0x8C100302, // 0002 GETMET R4 R1 K2
- 0x58180003, // 0003 LDCONST R6 K3
+ 0xA40A4200, // 0000 IMPORT R2 K33
+ 0xA40E2000, // 0001 IMPORT R3 K16
+ 0x8C100356, // 0002 GETMET R4 R1 K86
+ 0x58180034, // 0003 LDCONST R6 K52
0x7C100400, // 0004 CALL R4 2
- 0x8C100104, // 0005 GETMET R4 R0 K4
+ 0x8C100122, // 0005 GETMET R4 R0 K34
0x7C100200, // 0006 CALL R4 1
0x60100012, // 0007 GETGBL R4 G18
0x7C100000, // 0008 CALL R4 0
0x60140010, // 0009 GETGBL R5 G16
- 0x8C180705, // 000A GETMET R6 R3 K5
+ 0x8C180723, // 000A GETMET R6 R3 K35
0x5C200000, // 000B MOVE R8 R0
0x7C180400, // 000C CALL R6 2
0x7C140200, // 000D CALL R5 1
0xA8020011, // 000E EXBLK 0 #0021
0x5C180A00, // 000F MOVE R6 R5
0x7C180000, // 0010 CALL R6 0
- 0x8C1C0706, // 0011 GETMET R7 R3 K6
+ 0x8C1C0724, // 0011 GETMET R7 R3 K36
0x5C240000, // 0012 MOVE R9 R0
0x5C280C00, // 0013 MOVE R10 R6
0x7C1C0600, // 0014 CALL R7 3
0x60200004, // 0015 GETGBL R8 G4
0x5C240E00, // 0016 MOVE R9 R7
0x7C200200, // 0017 CALL R8 1
- 0x20201107, // 0018 NE R8 R8 K7
+ 0x20201125, // 0018 NE R8 R8 K37
0x78220005, // 0019 JMPF R8 #0020
- 0x94200D08, // 001A GETIDX R8 R6 K8
- 0x20201109, // 001B NE R8 R8 K9
+ 0x94200D14, // 001A GETIDX R8 R6 K20
+ 0x20201115, // 001B NE R8 R8 K21
0x78220002, // 001C JMPF R8 #0020
- 0x8C20090A, // 001D GETMET R8 R4 K10
+ 0x8C200926, // 001D GETMET R8 R4 K38
0x5C280C00, // 001E MOVE R10 R6
0x7C200400, // 001F CALL R8 2
0x7001FFED, // 0020 JMP #000F
- 0x5814000B, // 0021 LDCONST R5 K11
+ 0x5814001E, // 0021 LDCONST R5 K30
0xAC140200, // 0022 CATCH R5 1 0
0xB0080000, // 0023 RAISE 2 R0 R0
- 0xB8161800, // 0024 GETNGBL R5 K12
- 0x8C140B0D, // 0025 GETMET R5 R5 K13
+ 0xB8162200, // 0024 GETNGBL R5 K17
+ 0x8C140B27, // 0025 GETMET R5 R5 K39
0x5C1C0800, // 0026 MOVE R7 R4
0x7C140400, // 0027 CALL R5 2
0x5C100A00, // 0028 MOVE R4 R5
@@ -1276,7 +1186,7 @@ be_local_closure(class_Matter_Fabric_writejson, /* name */
0xA8020026, // 002D EXBLK 0 #0055
0x5C1C0C00, // 002E MOVE R7 R6
0x7C1C0000, // 002F CALL R7 0
- 0x8C200706, // 0030 GETMET R8 R3 K6
+ 0x8C200724, // 0030 GETMET R8 R3 K36
0x5C280000, // 0031 MOVE R10 R0
0x5C2C0E00, // 0032 MOVE R11 R7
0x7C200600, // 0033 CALL R8 3
@@ -1289,68 +1199,68 @@ be_local_closure(class_Matter_Fabric_writejson, /* name */
0x602C0015, // 003A GETGBL R11 G21
0x7C240400, // 003B CALL R9 2
0x78260003, // 003C JMPF R9 #0041
- 0x8C24110F, // 003D GETMET R9 R8 K15
+ 0x8C241128, // 003D GETMET R9 R8 K40
0x7C240200, // 003E CALL R9 1
- 0x00261C09, // 003F ADD R9 K14 R9
+ 0x00263809, // 003F ADD R9 K28 R9
0x5C201200, // 0040 MOVE R8 R9
0x5C240A00, // 0041 MOVE R9 R5
0x74260002, // 0042 JMPT R9 #0046
- 0x8C240302, // 0043 GETMET R9 R1 K2
- 0x582C0010, // 0044 LDCONST R11 K16
+ 0x8C240356, // 0043 GETMET R9 R1 K86
+ 0x582C0030, // 0044 LDCONST R11 K48
0x7C240400, // 0045 CALL R9 2
- 0x8C240302, // 0046 GETMET R9 R1 K2
+ 0x8C240356, // 0046 GETMET R9 R1 K86
0x602C0018, // 0047 GETGBL R11 G24
- 0x58300011, // 0048 LDCONST R12 K17
- 0x8C340512, // 0049 GETMET R13 R2 K18
+ 0x58300029, // 0048 LDCONST R12 K41
+ 0x8C34052A, // 0049 GETMET R13 R2 K42
0x603C0008, // 004A GETGBL R15 G8
0x5C400E00, // 004B MOVE R16 R7
0x7C3C0200, // 004C CALL R15 1
0x7C340400, // 004D CALL R13 2
- 0x8C380512, // 004E GETMET R14 R2 K18
+ 0x8C38052A, // 004E GETMET R14 R2 K42
0x5C401000, // 004F MOVE R16 R8
0x7C380400, // 0050 CALL R14 2
0x7C2C0600, // 0051 CALL R11 3
0x7C240400, // 0052 CALL R9 2
0x50140000, // 0053 LDBOOL R5 0 0
0x7001FFD8, // 0054 JMP #002E
- 0x5818000B, // 0055 LDCONST R6 K11
+ 0x5818001E, // 0055 LDCONST R6 K30
0xAC180200, // 0056 CATCH R6 1 0
0xB0080000, // 0057 RAISE 2 R0 R0
0x50180200, // 0058 LDBOOL R6 1 0
0x601C0010, // 0059 GETGBL R7 G16
- 0x88200113, // 005A GETMBR R8 R0 K19
- 0x8C201114, // 005B GETMET R8 R8 K20
+ 0x8820012B, // 005A GETMBR R8 R0 K43
+ 0x8C20112C, // 005B GETMET R8 R8 K44
0x7C200200, // 005C CALL R8 1
0x7C1C0200, // 005D CALL R7 1
0xA802000F, // 005E EXBLK 0 #006F
0x5C200E00, // 005F MOVE R8 R7
0x7C200000, // 0060 CALL R8 0
0x781A0003, // 0061 JMPF R6 #0066
- 0x8C240302, // 0062 GETMET R9 R1 K2
- 0x582C0015, // 0063 LDCONST R11 K21
+ 0x8C240356, // 0062 GETMET R9 R1 K86
+ 0x582C0057, // 0063 LDCONST R11 K87
0x7C240400, // 0064 CALL R9 2
0x70020002, // 0065 JMP #0069
- 0x8C240302, // 0066 GETMET R9 R1 K2
- 0x582C0010, // 0067 LDCONST R11 K16
+ 0x8C240356, // 0066 GETMET R9 R1 K86
+ 0x582C0030, // 0067 LDCONST R11 K48
0x7C240400, // 0068 CALL R9 2
- 0x8C240302, // 0069 GETMET R9 R1 K2
- 0x8C2C1116, // 006A GETMET R11 R8 K22
+ 0x8C240356, // 0069 GETMET R9 R1 K86
+ 0x8C2C112D, // 006A GETMET R11 R8 K45
0x7C2C0200, // 006B CALL R11 1
0x7C240400, // 006C CALL R9 2
0x50180000, // 006D LDBOOL R6 0 0
0x7001FFEF, // 006E JMP #005F
- 0x581C000B, // 006F LDCONST R7 K11
+ 0x581C001E, // 006F LDCONST R7 K30
0xAC1C0200, // 0070 CATCH R7 1 0
0xB0080000, // 0071 RAISE 2 R0 R0
0x5C1C0C00, // 0072 MOVE R7 R6
0x741E0002, // 0073 JMPT R7 #0077
- 0x8C1C0302, // 0074 GETMET R7 R1 K2
- 0x58240017, // 0075 LDCONST R9 K23
+ 0x8C1C0356, // 0074 GETMET R7 R1 K86
+ 0x58240031, // 0075 LDCONST R9 K49
0x7C1C0400, // 0076 CALL R7 2
- 0x8C1C0118, // 0077 GETMET R7 R0 K24
+ 0x8C1C0133, // 0077 GETMET R7 R0 K51
0x7C1C0200, // 0078 CALL R7 1
- 0x8C1C0302, // 0079 GETMET R7 R1 K2
- 0x58240019, // 007A LDCONST R9 K25
+ 0x8C1C0356, // 0079 GETMET R7 R1 K86
+ 0x58240035, // 007A LDCONST R9 K53
0x7C1C0400, // 007B CALL R7 2
0x80000000, // 007C RET 0
})
@@ -1362,62 +1272,46 @@ be_local_closure(class_Matter_Fabric_writejson, /* name */
/********************************************************************
** Solidified function: counter_group_ctrl_snd_next
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_counter_group_ctrl_snd_next, /* name */
be_nested_proto(
- 7, /* nstack */
+ 6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(_counter_group_ctrl_snd_impl),
- /* K1 */ be_nested_str_weak(next),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(log),
- /* K4 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Counter_group_ctrl_snd_X3D_X25i),
- /* K5 */ be_const_int(3),
- /* K6 */ be_nested_str_weak(matter),
- /* K7 */ be_nested_str_weak(Counter),
- /* K8 */ be_nested_str_weak(is_greater),
- /* K9 */ be_nested_str_weak(counter_group_ctrl_snd),
- /* K10 */ be_nested_str_weak(_GROUP_SND_INCR),
- /* K11 */ be_nested_str_weak(does_persist),
- /* K12 */ be_nested_str_weak(save),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(counter_group_ctrl_snd_next),
&be_const_str_solidified,
- ( &(const binstruction[27]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ ( &(const binstruction[26]) { /* code */
+ 0x88040139, // 0000 GETMBR R1 R0 K57
+ 0x8C040349, // 0001 GETMET R1 R1 K73
0x7C040200, // 0002 CALL R1 1
- 0xB80A0400, // 0003 GETNGBL R2 K2
- 0x8C080503, // 0004 GETMET R2 R2 K3
- 0x60100018, // 0005 GETGBL R4 G24
- 0x58140004, // 0006 LDCONST R5 K4
- 0x5C180200, // 0007 MOVE R6 R1
- 0x7C100400, // 0008 CALL R4 2
- 0x58140005, // 0009 LDCONST R5 K5
- 0x7C080600, // 000A CALL R2 3
- 0xB80A0C00, // 000B GETNGBL R2 K6
- 0x88080507, // 000C GETMBR R2 R2 K7
- 0x8C080508, // 000D GETMET R2 R2 K8
- 0x5C100200, // 000E MOVE R4 R1
- 0x88140109, // 000F GETMBR R5 R0 K9
- 0x7C080600, // 0010 CALL R2 3
- 0x780A0007, // 0011 JMPF R2 #001A
- 0x8808010A, // 0012 GETMBR R2 R0 K10
- 0x00080202, // 0013 ADD R2 R1 R2
- 0x90021202, // 0014 SETMBR R0 K9 R2
- 0x8C08010B, // 0015 GETMET R2 R0 K11
- 0x7C080200, // 0016 CALL R2 1
- 0x780A0001, // 0017 JMPF R2 #001A
- 0x8C08010C, // 0018 GETMET R2 R0 K12
- 0x7C080200, // 0019 CALL R2 1
- 0x80040200, // 001A RET 1 R1
+ 0xB80A0200, // 0003 GETNGBL R2 K1
+ 0x600C0018, // 0004 GETGBL R3 G24
+ 0x58100058, // 0005 LDCONST R4 K88
+ 0x5C140200, // 0006 MOVE R5 R1
+ 0x7C0C0400, // 0007 CALL R3 2
+ 0x58100007, // 0008 LDCONST R4 K7
+ 0x7C080400, // 0009 CALL R2 2
+ 0xB80A2200, // 000A GETNGBL R2 K17
+ 0x8808054B, // 000B GETMBR R2 R2 K75
+ 0x8C08054C, // 000C GETMET R2 R2 K76
+ 0x5C100200, // 000D MOVE R4 R1
+ 0x8814013A, // 000E GETMBR R5 R0 K58
+ 0x7C080600, // 000F CALL R2 3
+ 0x780A0007, // 0010 JMPF R2 #0019
+ 0x8808014D, // 0011 GETMBR R2 R0 K77
+ 0x00080202, // 0012 ADD R2 R1 R2
+ 0x90027402, // 0013 SETMBR R0 K58 R2
+ 0x8C08014E, // 0014 GETMET R2 R0 K78
+ 0x7C080200, // 0015 CALL R2 1
+ 0x780A0001, // 0016 JMPF R2 #0019
+ 0x8C08014F, // 0017 GETMET R2 R0 K79
+ 0x7C080200, // 0018 CALL R2 1
+ 0x80040200, // 0019 RET 1 R1
})
)
);
@@ -1427,33 +1321,27 @@ be_local_closure(class_Matter_Fabric_counter_group_ctrl_snd_next, /* name */
/********************************************************************
** Solidified function: fabric_candidate
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_fabric_candidate, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(set_expire_in_seconds),
- /* K1 */ be_nested_str_weak(assign_fabric_index),
- /* K2 */ be_nested_str_weak(_store),
- /* K3 */ be_nested_str_weak(add_fabric),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(fabric_candidate),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040159, // 0000 GETMET R1 R0 K89
0x540E0077, // 0001 LDINT R3 120
0x7C040400, // 0002 CALL R1 2
- 0x8C040101, // 0003 GETMET R1 R0 K1
+ 0x8C040146, // 0003 GETMET R1 R0 K70
0x7C040200, // 0004 CALL R1 1
- 0x88040102, // 0005 GETMBR R1 R0 K2
- 0x8C040303, // 0006 GETMET R1 R1 K3
+ 0x88040147, // 0005 GETMBR R1 R0 K71
+ 0x8C040348, // 0006 GETMET R1 R1 K72
0x5C0C0000, // 0007 MOVE R3 R0
0x7C040400, // 0008 CALL R1 2
0x80000000, // 0009 RET 0
@@ -1466,34 +1354,28 @@ be_local_closure(class_Matter_Fabric_fabric_candidate, /* name */
/********************************************************************
** Solidified function: assign_fabric_index
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_assign_fabric_index, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(get_fabric_index),
- /* K1 */ be_nested_str_weak(set_fabric_index),
- /* K2 */ be_nested_str_weak(_store),
- /* K3 */ be_nested_str_weak(next_fabric_idx),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(assign_fabric_index),
&be_const_str_solidified,
( &(const binstruction[11]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C04013F, // 0000 GETMET R1 R0 K63
0x7C040200, // 0001 CALL R1 1
0x4C080000, // 0002 LDNIL R2
0x1C040202, // 0003 EQ R1 R1 R2
0x78060004, // 0004 JMPF R1 #000A
- 0x8C040101, // 0005 GETMET R1 R0 K1
- 0x880C0102, // 0006 GETMBR R3 R0 K2
- 0x8C0C0703, // 0007 GETMET R3 R3 K3
+ 0x8C04015A, // 0005 GETMET R1 R0 K90
+ 0x880C0147, // 0006 GETMBR R3 R0 K71
+ 0x8C0C075B, // 0007 GETMET R3 R3 K91
0x7C0C0200, // 0008 CALL R3 1
0x7C040400, // 0009 CALL R1 2
0x80000000, // 000A RET 0
@@ -1506,54 +1388,48 @@ be_local_closure(class_Matter_Fabric_assign_fabric_index, /* name */
/********************************************************************
** Solidified function: get_old_recent_session
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_get_old_recent_session, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_sessions),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(last_used),
- /* K3 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(get_old_recent_session),
&be_const_str_solidified,
( &(const binstruction[30]) { /* code */
0x6008000C, // 0000 GETGBL R2 G12
- 0x880C0100, // 0001 GETMBR R3 R0 K0
+ 0x880C012B, // 0001 GETMBR R3 R0 K43
0x7C080200, // 0002 CALL R2 1
- 0x1C080501, // 0003 EQ R2 R2 K1
+ 0x1C080514, // 0003 EQ R2 R2 K20
0x780A0001, // 0004 JMPF R2 #0007
0x4C080000, // 0005 LDNIL R2
0x80040400, // 0006 RET 1 R2
- 0x88080100, // 0007 GETMBR R2 R0 K0
- 0x94080501, // 0008 GETIDX R2 R2 K1
- 0x880C0502, // 0009 GETMBR R3 R2 K2
- 0x58100003, // 000A LDCONST R4 K3
+ 0x8808012B, // 0007 GETMBR R2 R0 K43
+ 0x94080514, // 0008 GETIDX R2 R2 K20
+ 0x880C055C, // 0009 GETMBR R3 R2 K92
+ 0x5810005D, // 000A LDCONST R4 K93
0x6014000C, // 000B GETGBL R5 G12
- 0x88180100, // 000C GETMBR R6 R0 K0
+ 0x8818012B, // 000C GETMBR R6 R0 K43
0x7C140200, // 000D CALL R5 1
0x14140805, // 000E LT R5 R4 R5
0x7816000C, // 000F JMPF R5 #001D
- 0x88140100, // 0010 GETMBR R5 R0 K0
+ 0x8814012B, // 0010 GETMBR R5 R0 K43
0x94140A04, // 0011 GETIDX R5 R5 R4
- 0x88140B02, // 0012 GETMBR R5 R5 K2
+ 0x88140B5C, // 0012 GETMBR R5 R5 K92
0x78060001, // 0013 JMPF R1 #0016
0x14180A03, // 0014 LT R6 R5 R3
0x70020000, // 0015 JMP #0017
0x24180A03, // 0016 GT R6 R5 R3
0x781A0002, // 0017 JMPF R6 #001B
- 0x88180100, // 0018 GETMBR R6 R0 K0
+ 0x8818012B, // 0018 GETMBR R6 R0 K43
0x94080C04, // 0019 GETIDX R2 R6 R4
0x5C0C0A00, // 001A MOVE R3 R5
- 0x00100903, // 001B ADD R4 R4 K3
+ 0x0010095D, // 001B ADD R4 R4 K93
0x7001FFED, // 001C JMP #000B
0x80040400, // 001D RET 1 R2
})
@@ -1565,70 +1441,51 @@ be_local_closure(class_Matter_Fabric_get_old_recent_session, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_init, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(_store),
- /* K2 */ be_nested_str_weak(_sessions),
- /* K3 */ be_nested_str_weak(matter),
- /* K4 */ be_nested_str_weak(Expirable_list),
- /* K5 */ be_nested_str_weak(fabric_label),
- /* K6 */ be_nested_str_weak(),
- /* K7 */ be_nested_str_weak(created),
- /* K8 */ be_nested_str_weak(tasmota),
- /* K9 */ be_nested_str_weak(rtc_utc),
- /* K10 */ be_nested_str_weak(_counter_group_data_snd_impl),
- /* K11 */ be_nested_str_weak(Counter),
- /* K12 */ be_nested_str_weak(_counter_group_ctrl_snd_impl),
- /* K13 */ be_nested_str_weak(counter_group_data_snd),
- /* K14 */ be_nested_str_weak(next),
- /* K15 */ be_nested_str_weak(_GROUP_SND_INCR),
- /* K16 */ be_nested_str_weak(counter_group_ctrl_snd),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[32]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x90020201, // 0001 SETMBR R0 K1 R1
- 0xB80E0600, // 0002 GETNGBL R3 K3
- 0x8C0C0704, // 0003 GETMET R3 R3 K4
+ 0xA40ABC00, // 0000 IMPORT R2 K94
+ 0x90028E01, // 0001 SETMBR R0 K71 R1
+ 0xB80E2200, // 0002 GETNGBL R3 K17
+ 0x8C0C075F, // 0003 GETMET R3 R3 K95
0x7C0C0200, // 0004 CALL R3 1
- 0x90020403, // 0005 SETMBR R0 K2 R3
- 0x90020B06, // 0006 SETMBR R0 K5 K6
- 0xB80E1000, // 0007 GETNGBL R3 K8
- 0x8C0C0709, // 0008 GETMET R3 R3 K9
+ 0x90025603, // 0005 SETMBR R0 K43 R3
+ 0x9002C161, // 0006 SETMBR R0 K96 K97
+ 0xB80EC600, // 0007 GETNGBL R3 K99
+ 0x8C0C0764, // 0008 GETMET R3 R3 K100
0x7C0C0200, // 0009 CALL R3 1
- 0x90020E03, // 000A SETMBR R0 K7 R3
- 0xB80E0600, // 000B GETNGBL R3 K3
- 0x8C0C070B, // 000C GETMET R3 R3 K11
+ 0x9002C403, // 000A SETMBR R0 K98 R3
+ 0xB80E2200, // 000B GETNGBL R3 K17
+ 0x8C0C074B, // 000C GETMET R3 R3 K75
0x7C0C0200, // 000D CALL R3 1
- 0x90021403, // 000E SETMBR R0 K10 R3
- 0xB80E0600, // 000F GETNGBL R3 K3
- 0x8C0C070B, // 0010 GETMET R3 R3 K11
+ 0x90026C03, // 000E SETMBR R0 K54 R3
+ 0xB80E2200, // 000F GETNGBL R3 K17
+ 0x8C0C074B, // 0010 GETMET R3 R3 K75
0x7C0C0200, // 0011 CALL R3 1
- 0x90021803, // 0012 SETMBR R0 K12 R3
- 0x880C010A, // 0013 GETMBR R3 R0 K10
- 0x8C0C070E, // 0014 GETMET R3 R3 K14
+ 0x90027203, // 0012 SETMBR R0 K57 R3
+ 0x880C0136, // 0013 GETMBR R3 R0 K54
+ 0x8C0C0749, // 0014 GETMET R3 R3 K73
0x7C0C0200, // 0015 CALL R3 1
- 0x8810010F, // 0016 GETMBR R4 R0 K15
+ 0x8810014D, // 0016 GETMBR R4 R0 K77
0x000C0604, // 0017 ADD R3 R3 R4
- 0x90021A03, // 0018 SETMBR R0 K13 R3
- 0x880C010A, // 0019 GETMBR R3 R0 K10
- 0x8C0C070E, // 001A GETMET R3 R3 K14
+ 0x90027003, // 0018 SETMBR R0 K56 R3
+ 0x880C0136, // 0019 GETMBR R3 R0 K54
+ 0x8C0C0749, // 001A GETMET R3 R3 K73
0x7C0C0200, // 001B CALL R3 1
- 0x8810010F, // 001C GETMBR R4 R0 K15
+ 0x8810014D, // 001C GETMBR R4 R0 K77
0x000C0604, // 001D ADD R3 R3 R4
- 0x90022003, // 001E SETMBR R0 K16 R3
+ 0x90027403, // 001E SETMBR R0 K58 R3
0x80000000, // 001F RET 0
})
)
@@ -1639,24 +1496,21 @@ be_local_closure(class_Matter_Fabric_init, /* name */
/********************************************************************
** Solidified function: get_ipk_epoch_key
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_get_ipk_epoch_key, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(ipk_epoch_key),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(get_ipk_epoch_key),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804013C, // 0000 GETMBR R1 R0 K60
0x80040200, // 0001 RET 1 R1
})
)
@@ -1667,59 +1521,49 @@ be_local_closure(class_Matter_Fabric_get_ipk_epoch_key, /* name */
/********************************************************************
** Solidified function: add_session
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_add_session, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(_sessions),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(_MAX_CASE),
- /* K3 */ be_nested_str_weak(get_oldest_session),
- /* K4 */ be_nested_str_weak(remove),
- /* K5 */ be_nested_str_weak(_store),
- /* K6 */ be_nested_str_weak(remove_session),
- /* K7 */ be_nested_str_weak(push),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(add_session),
&be_const_str_solidified,
( &(const binstruction[32]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x8808012B, // 0000 GETMBR R2 R0 K43
+ 0x8C080516, // 0001 GETMET R2 R2 K22
0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
0x4C0C0000, // 0004 LDNIL R3
0x1C080403, // 0005 EQ R2 R2 R3
0x780A0017, // 0006 JMPF R2 #001F
0x6008000C, // 0007 GETGBL R2 G12
- 0x880C0100, // 0008 GETMBR R3 R0 K0
+ 0x880C012B, // 0008 GETMBR R3 R0 K43
0x7C080200, // 0009 CALL R2 1
- 0x880C0102, // 000A GETMBR R3 R0 K2
+ 0x880C0165, // 000A GETMBR R3 R0 K101
0x28080403, // 000B GE R2 R2 R3
0x780A000D, // 000C JMPF R2 #001B
- 0x8C080103, // 000D GETMET R2 R0 K3
+ 0x8C080166, // 000D GETMET R2 R0 K102
0x7C080200, // 000E CALL R2 1
- 0x880C0100, // 000F GETMBR R3 R0 K0
- 0x8C0C0704, // 0010 GETMET R3 R3 K4
- 0x88140100, // 0011 GETMBR R5 R0 K0
- 0x8C140B01, // 0012 GETMET R5 R5 K1
+ 0x880C012B, // 000F GETMBR R3 R0 K43
+ 0x8C0C0767, // 0010 GETMET R3 R3 K103
+ 0x8814012B, // 0011 GETMBR R5 R0 K43
+ 0x8C140B16, // 0012 GETMET R5 R5 K22
0x5C1C0400, // 0013 MOVE R7 R2
0x7C140400, // 0014 CALL R5 2
0x7C0C0400, // 0015 CALL R3 2
- 0x880C0105, // 0016 GETMBR R3 R0 K5
- 0x8C0C0706, // 0017 GETMET R3 R3 K6
+ 0x880C0147, // 0016 GETMBR R3 R0 K71
+ 0x8C0C0768, // 0017 GETMET R3 R3 K104
0x5C140400, // 0018 MOVE R5 R2
0x7C0C0400, // 0019 CALL R3 2
0x7001FFEB, // 001A JMP #0007
- 0x88080100, // 001B GETMBR R2 R0 K0
- 0x8C080507, // 001C GETMET R2 R2 K7
+ 0x8808012B, // 001B GETMBR R2 R0 K43
+ 0x8C080526, // 001C GETMET R2 R2 K38
0x5C100200, // 001D MOVE R4 R1
0x7C080400, // 001E CALL R2 2
0x80000000, // 001F RET 0
@@ -1732,24 +1576,21 @@ be_local_closure(class_Matter_Fabric_add_session, /* name */
/********************************************************************
** Solidified function: set_fabric_index
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_set_fabric_index, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(fabric_index),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(set_fabric_index),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x9002AA01, // 0000 SETMBR R0 K85 R1
0x80000000, // 0001 RET 0
})
)
@@ -1760,28 +1601,23 @@ be_local_closure(class_Matter_Fabric_set_fabric_index, /* name */
/********************************************************************
** Solidified function: get_device_id_as_int64
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_get_device_id_as_int64, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(int64),
- /* K1 */ be_nested_str_weak(frombytes),
- /* K2 */ be_nested_str_weak(device_id),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(get_device_id_as_int64),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x880C0102, // 0002 GETMBR R3 R0 K2
+ 0xB8068200, // 0000 GETNGBL R1 K65
+ 0x8C040342, // 0001 GETMET R1 R1 K66
+ 0x880C013D, // 0002 GETMBR R3 R0 K61
0x7C040400, // 0003 CALL R1 2
0x80040200, // 0004 RET 1 R1
})
@@ -1793,24 +1629,21 @@ be_local_closure(class_Matter_Fabric_get_device_id_as_int64, /* name */
/********************************************************************
** Solidified function: get_fabric_label
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_get_fabric_label, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(fabric_label),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(get_fabric_label),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040160, // 0000 GETMBR R1 R0 K96
0x80040200, // 0001 RET 1 R1
})
)
@@ -1821,50 +1654,41 @@ be_local_closure(class_Matter_Fabric_get_fabric_label, /* name */
/********************************************************************
** Solidified function: get_ipk_group_key
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_get_ipk_group_key, /* name */
be_nested_proto(
10, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(ipk_epoch_key),
- /* K1 */ be_nested_str_weak(fabric_compressed),
- /* K2 */ be_nested_str_weak(crypto),
- /* K3 */ be_nested_str_weak(HKDF_SHA256),
- /* K4 */ be_nested_str_weak(fromstring),
- /* K5 */ be_nested_str_weak(_GROUP_KEY),
- /* K6 */ be_nested_str_weak(derive),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(get_ipk_group_key),
&be_const_str_solidified,
( &(const binstruction[25]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804013C, // 0000 GETMBR R1 R0 K60
0x4C080000, // 0001 LDNIL R2
0x1C040202, // 0002 EQ R1 R1 R2
0x74060003, // 0003 JMPT R1 #0008
- 0x88040101, // 0004 GETMBR R1 R0 K1
+ 0x88040109, // 0004 GETMBR R1 R0 K9
0x4C080000, // 0005 LDNIL R2
0x1C040202, // 0006 EQ R1 R1 R2
0x78060001, // 0007 JMPF R1 #000A
0x4C040000, // 0008 LDNIL R1
0x80040200, // 0009 RET 1 R1
- 0xA4060400, // 000A IMPORT R1 K2
- 0x8C080303, // 000B GETMET R2 R1 K3
+ 0xA406BC00, // 000A IMPORT R1 K94
+ 0x8C080369, // 000B GETMET R2 R1 K105
0x7C080200, // 000C CALL R2 1
0x600C0015, // 000D GETGBL R3 G21
0x7C0C0000, // 000E CALL R3 0
- 0x8C0C0704, // 000F GETMET R3 R3 K4
- 0x88140105, // 0010 GETMBR R5 R0 K5
+ 0x8C0C076A, // 000F GETMET R3 R3 K106
+ 0x8814016B, // 0010 GETMBR R5 R0 K107
0x7C0C0400, // 0011 CALL R3 2
- 0x8C100506, // 0012 GETMET R4 R2 K6
- 0x88180100, // 0013 GETMBR R6 R0 K0
- 0x881C0101, // 0014 GETMBR R7 R0 K1
+ 0x8C10056C, // 0012 GETMET R4 R2 K108
+ 0x8818013C, // 0013 GETMBR R6 R0 K60
+ 0x881C0109, // 0014 GETMBR R7 R0 K9
0x5C200600, // 0015 MOVE R8 R3
0x5426000F, // 0016 LDINT R9 16
0x7C100A00, // 0017 CALL R4 5
@@ -1878,29 +1702,24 @@ be_local_closure(class_Matter_Fabric_get_ipk_group_key, /* name */
/********************************************************************
** Solidified function: mark_for_deletion
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_mark_for_deletion, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(deleted),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(rtc_utc),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(mark_for_deletion),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0xB8060200, // 0000 GETNGBL R1 K1
- 0x8C040302, // 0001 GETMET R1 R1 K2
+ 0xB806C600, // 0000 GETNGBL R1 K99
+ 0x8C040364, // 0001 GETMET R1 R1 K100
0x7C040200, // 0002 CALL R1 1
- 0x90020001, // 0003 SETMBR R0 K0 R1
+ 0x90028001, // 0003 SETMBR R0 K64 R1
0x80000000, // 0004 RET 0
})
)
@@ -1911,34 +1730,27 @@ be_local_closure(class_Matter_Fabric_mark_for_deletion, /* name */
/********************************************************************
** Solidified function: get_admin_vendor_name
********************************************************************/
-extern const bclass be_class_Matter_Fabric;
be_local_closure(class_Matter_Fabric_get_admin_vendor_name, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Fabric,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(admin_vendor),
- /* K1 */ be_nested_str_weak(),
- /* K2 */ be_nested_str_weak(matter),
- /* K3 */ be_nested_str_weak(get_vendor_name),
- /* K4 */ be_nested_str_weak(0x_X2504X),
- }),
+ &be_ktab_class_Matter_Fabric, /* shared constants */
be_str_weak(get_admin_vendor_name),
&be_const_str_solidified,
( &(const binstruction[20]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804010C, // 0000 GETMBR R1 R0 K12
0x4C080000, // 0001 LDNIL R2
0x1C080202, // 0002 EQ R2 R1 R2
0x780A0000, // 0003 JMPF R2 #0005
- 0x80060200, // 0004 RET 1 K1
- 0xB80A0400, // 0005 GETNGBL R2 K2
- 0x8C080503, // 0006 GETMET R2 R2 K3
+ 0x8006C200, // 0004 RET 1 K97
+ 0xB80A2200, // 0005 GETNGBL R2 K17
+ 0x8C08056D, // 0006 GETMET R2 R2 K109
0x5C100200, // 0007 MOVE R4 R1
0x7C080400, // 0008 CALL R2 2
0x4C0C0000, // 0009 LDNIL R3
@@ -1947,7 +1759,7 @@ be_local_closure(class_Matter_Fabric_get_admin_vendor_name, /* name */
0x80040400, // 000C RET 1 R2
0x70020004, // 000D JMP #0013
0x600C0018, // 000E GETGBL R3 G24
- 0x58100004, // 000F LDCONST R4 K4
+ 0x5810006E, // 000F LDCONST R4 K110
0x5C140200, // 0010 MOVE R5 R1
0x7C0C0400, // 0011 CALL R3 2
0x80040600, // 0012 RET 1 R3
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h
index ae907a1c3..1d755de68 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_async.h
@@ -3,41 +3,101 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_HTTP_async' ktab size: 74, total: 152 (saved 624 bytes)
+static const bvalue be_ktab_class_Matter_HTTP_async[74] = {
+ /* K0 */ be_nested_str_weak(is_chunked),
+ /* K1 */ be_nested_str_weak(chunk_size),
+ /* K2 */ be_nested_str_weak(global),
+ /* K3 */ be_nested_str_weak(_re_http_chunk),
+ /* K4 */ be_nested_str_weak(match2),
+ /* K5 */ be_nested_str_weak(response),
+ /* K6 */ be_nested_str_weak(response_offset),
+ /* K7 */ be_const_int(0),
+ /* K8 */ be_nested_str_weak(0x),
+ /* K9 */ be_const_int(1),
+ /* K10 */ be_nested_str_weak(status),
+ /* K11 */ be_const_int(2),
+ /* K12 */ be_nested_str_weak(),
+ /* K13 */ be_nested_str_weak(close),
+ /* K14 */ be_nested_str_weak(payload),
+ /* K15 */ be_const_int(2147483647),
+ /* K16 */ be_nested_str_weak(string),
+ /* K17 */ be_nested_str_weak(tolower),
+ /* K18 */ be_nested_str_weak(transfer_X2Dencoding),
+ /* K19 */ be_nested_str_weak(chunked),
+ /* K20 */ be_nested_str_weak(find),
+ /* K21 */ be_nested_str_weak(_X40),
+ /* K22 */ be_nested_str_weak(auth),
+ /* K23 */ be_nested_str_weak(fromstring),
+ /* K24 */ be_nested_str_weak(tob64),
+ /* K25 */ be_nested_str_weak(init),
+ /* K26 */ be_nested_str_weak(compile_re),
+ /* K27 */ be_nested_str_weak(phase),
+ /* K28 */ be_nested_str_weak(parse_http_status_line),
+ /* K29 */ be_nested_str_weak(parse_http_headers),
+ /* K30 */ be_nested_str_weak(parse_http_payload),
+ /* K31 */ be_nested_str_weak(http_status),
+ /* K32 */ be_nested_str_weak(event_http_failed),
+ /* K33 */ be_nested_str_weak(reset),
+ /* K34 */ be_nested_str_weak(cmd),
+ /* K35 */ be_nested_str_weak(begin),
+ /* K36 */ be_nested_str_weak(send_http),
+ /* K37 */ be_nested_str_weak(_re_http_header),
+ /* K38 */ be_nested_str_weak(event_http_header),
+ /* K39 */ be_nested_str_weak(_re_http_body),
+ /* K40 */ be_nested_str_weak(event_http_headers_end),
+ /* K41 */ be_nested_str_weak(receive),
+ /* K42 */ be_nested_str_weak(event_http_timeout),
+ /* K43 */ be_nested_str_weak(re),
+ /* K44 */ be_nested_str_weak(contains),
+ /* K45 */ be_nested_str_weak(_re_http_status),
+ /* K46 */ be_nested_str_weak(compile),
+ /* K47 */ be_nested_str_weak(HTTP_STATUS_REGEX),
+ /* K48 */ be_nested_str_weak(HTTP_HEADER_REGEX),
+ /* K49 */ be_nested_str_weak(HTTP_BODY_REGEX),
+ /* K50 */ be_nested_str_weak(HTTP_CHUNK_REGEX),
+ /* K51 */ be_nested_str_weak(event_http_finished),
+ /* K52 */ be_nested_str_weak(timeout),
+ /* K53 */ be_nested_str_weak(set_timeout),
+ /* K54 */ be_nested_str_weak(SPINLOCK),
+ /* K55 */ be_nested_str_weak(loop),
+ /* K56 */ be_nested_str_weak(tasmota),
+ /* K57 */ be_nested_str_weak(delay),
+ /* K58 */ be_nested_str_weak(addr),
+ /* K59 */ be_nested_str_weak(_X3A),
+ /* K60 */ be_nested_str_weak(_X5B),
+ /* K61 */ be_nested_str_weak(_X5D),
+ /* K62 */ be_nested_str_weak(HTTP_GET),
+ /* K63 */ be_nested_str_weak(port),
+ /* K64 */ be_nested_str_weak(HTTP_GET_AUTH),
+ /* K65 */ be_nested_str_weak(write),
+ /* K66 */ be_nested_str_weak(status_code),
+ /* K67 */ be_nested_str_weak(tcp_connected),
+ /* K68 */ be_nested_str_weak(millis),
+ /* K69 */ be_nested_str_weak(time_start),
+ /* K70 */ be_nested_str_weak(tcp),
+ /* K71 */ be_nested_str_weak(available),
+ /* K72 */ be_nested_str_weak(read),
+ /* K73 */ be_nested_str_weak(parse_http_response),
+};
+
extern const bclass be_class_Matter_HTTP_async;
/********************************************************************
** Solidified function: parse_http_payload
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_parse_http_payload, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
- /* K0 */ be_nested_str_weak(is_chunked),
- /* K1 */ be_nested_str_weak(chunk_size),
- /* K2 */ be_nested_str_weak(global),
- /* K3 */ be_nested_str_weak(_re_http_chunk),
- /* K4 */ be_nested_str_weak(match2),
- /* K5 */ be_nested_str_weak(response),
- /* K6 */ be_nested_str_weak(response_offset),
- /* K7 */ be_const_int(0),
- /* K8 */ be_nested_str_weak(0x),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str_weak(status),
- /* K11 */ be_const_int(2),
- /* K12 */ be_nested_str_weak(),
- /* K13 */ be_nested_str_weak(close),
- /* K14 */ be_nested_str_weak(payload),
- /* K15 */ be_const_int(2147483647),
- }),
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(parse_http_payload),
&be_const_str_solidified,
( &(const binstruction[82]) { /* code */
@@ -132,18 +192,17 @@ be_local_closure(class_Matter_HTTP_async_parse_http_payload, /* name */
/********************************************************************
** Solidified function: event_http_finished
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_event_http_finished, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(event_http_finished),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -157,45 +216,38 @@ be_local_closure(class_Matter_HTTP_async_event_http_finished, /* name */
/********************************************************************
** Solidified function: event_http_header
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_event_http_header, /* name */
be_nested_proto(
7, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(string),
- /* K1 */ be_nested_str_weak(tolower),
- /* K2 */ be_nested_str_weak(transfer_X2Dencoding),
- /* K3 */ be_nested_str_weak(chunked),
- /* K4 */ be_nested_str_weak(is_chunked),
- }),
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(event_http_header),
&be_const_str_solidified,
( &(const binstruction[19]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
- 0x8C100701, // 0001 GETMET R4 R3 K1
+ 0xA40E2000, // 0000 IMPORT R3 K16
+ 0x8C100711, // 0001 GETMET R4 R3 K17
0x5C180200, // 0002 MOVE R6 R1
0x7C100400, // 0003 CALL R4 2
0x5C040800, // 0004 MOVE R1 R4
- 0x8C100701, // 0005 GETMET R4 R3 K1
+ 0x8C100711, // 0005 GETMET R4 R3 K17
0x5C180400, // 0006 MOVE R6 R2
0x7C100400, // 0007 CALL R4 2
0x5C080800, // 0008 MOVE R2 R4
- 0x1C100302, // 0009 EQ R4 R1 K2
+ 0x1C100312, // 0009 EQ R4 R1 K18
0x78120006, // 000A JMPF R4 #0012
- 0x8C100701, // 000B GETMET R4 R3 K1
+ 0x8C100711, // 000B GETMET R4 R3 K17
0x5C180400, // 000C MOVE R6 R2
0x7C100400, // 000D CALL R4 2
- 0x1C100903, // 000E EQ R4 R4 K3
+ 0x1C100913, // 000E EQ R4 R4 K19
0x78120001, // 000F JMPF R4 #0012
0x50100200, // 0010 LDBOOL R4 1 0
- 0x90020804, // 0011 SETMBR R0 K4 R4
+ 0x90020004, // 0011 SETMBR R0 K0 R4
0x80000000, // 0012 RET 0
})
)
@@ -206,67 +258,54 @@ be_local_closure(class_Matter_HTTP_async_event_http_header, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_init, /* name */
be_nested_proto(
13, /* nstack */
5, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(string),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(_X40),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(auth),
- /* K5 */ be_nested_str_weak(fromstring),
- /* K6 */ be_const_int(1),
- /* K7 */ be_nested_str_weak(tob64),
- /* K8 */ be_const_int(2147483647),
- /* K9 */ be_nested_str_weak(init),
- /* K10 */ be_nested_str_weak(compile_re),
- }),
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[36]) { /* code */
- 0xA4160000, // 0000 IMPORT R5 K0
+ 0xA4162000, // 0000 IMPORT R5 K16
0x60180008, // 0001 GETGBL R6 G8
0x5C1C0200, // 0002 MOVE R7 R1
0x7C180200, // 0003 CALL R6 1
0x5C040C00, // 0004 MOVE R1 R6
- 0x8C180B01, // 0005 GETMET R6 R5 K1
+ 0x8C180B14, // 0005 GETMET R6 R5 K20
0x5C200200, // 0006 MOVE R8 R1
- 0x58240002, // 0007 LDCONST R9 K2
+ 0x58240015, // 0007 LDCONST R9 K21
0x7C180600, // 0008 CALL R6 3
- 0x281C0D03, // 0009 GE R7 R6 K3
+ 0x281C0D07, // 0009 GE R7 R6 K7
0x781E000C, // 000A JMPF R7 #0018
0x601C0015, // 000B GETGBL R7 G21
0x7C1C0000, // 000C CALL R7 0
- 0x8C1C0F05, // 000D GETMET R7 R7 K5
- 0x04240D06, // 000E SUB R9 R6 K6
- 0x40260609, // 000F CONNECT R9 K3 R9
+ 0x8C1C0F17, // 000D GETMET R7 R7 K23
+ 0x04240D09, // 000E SUB R9 R6 K9
+ 0x40260E09, // 000F CONNECT R9 K7 R9
0x94240209, // 0010 GETIDX R9 R1 R9
0x7C1C0400, // 0011 CALL R7 2
- 0x8C1C0F07, // 0012 GETMET R7 R7 K7
+ 0x8C1C0F18, // 0012 GETMET R7 R7 K24
0x7C1C0200, // 0013 CALL R7 1
- 0x90020807, // 0014 SETMBR R0 K4 R7
- 0x001C0D06, // 0015 ADD R7 R6 K6
- 0x401C0F08, // 0016 CONNECT R7 R7 K8
+ 0x90022C07, // 0014 SETMBR R0 K22 R7
+ 0x001C0D09, // 0015 ADD R7 R6 K9
+ 0x401C0F0F, // 0016 CONNECT R7 R7 K15
0x94040207, // 0017 GETIDX R1 R1 R7
0x601C0003, // 0018 GETGBL R7 G3
0x5C200000, // 0019 MOVE R8 R0
0x7C1C0200, // 001A CALL R7 1
- 0x8C1C0F09, // 001B GETMET R7 R7 K9
+ 0x8C1C0F19, // 001B GETMET R7 R7 K25
0x5C240200, // 001C MOVE R9 R1
0x5C280400, // 001D MOVE R10 R2
0x5C2C0600, // 001E MOVE R11 R3
0x5C300800, // 001F MOVE R12 R4
0x7C1C0A00, // 0020 CALL R7 5
- 0x8C1C010A, // 0021 GETMET R7 R0 K10
+ 0x8C1C011A, // 0021 GETMET R7 R0 K26
0x7C1C0200, // 0022 CALL R7 1
0x80000000, // 0023 RET 0
})
@@ -278,18 +317,17 @@ be_local_closure(class_Matter_HTTP_async_init, /* name */
/********************************************************************
** Solidified function: event_http_failed
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_event_http_failed, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(event_http_failed),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -303,45 +341,36 @@ be_local_closure(class_Matter_HTTP_async_event_http_failed, /* name */
/********************************************************************
** Solidified function: parse_http_response
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_parse_http_response, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(phase),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(parse_http_status_line),
- /* K3 */ be_const_int(1),
- /* K4 */ be_nested_str_weak(parse_http_headers),
- /* K5 */ be_const_int(2),
- /* K6 */ be_nested_str_weak(parse_http_payload),
- }),
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(parse_http_response),
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x1C040301, // 0001 EQ R1 R1 K1
+ 0x8804011B, // 0000 GETMBR R1 R0 K27
+ 0x1C040307, // 0001 EQ R1 R1 K7
0x78060002, // 0002 JMPF R1 #0006
- 0x8C040102, // 0003 GETMET R1 R0 K2
+ 0x8C04011C, // 0003 GETMET R1 R0 K28
0x7C040200, // 0004 CALL R1 1
0x7002000A, // 0005 JMP #0011
- 0x88040100, // 0006 GETMBR R1 R0 K0
- 0x1C040303, // 0007 EQ R1 R1 K3
+ 0x8804011B, // 0006 GETMBR R1 R0 K27
+ 0x1C040309, // 0007 EQ R1 R1 K9
0x78060002, // 0008 JMPF R1 #000C
- 0x8C040104, // 0009 GETMET R1 R0 K4
+ 0x8C04011D, // 0009 GETMET R1 R0 K29
0x7C040200, // 000A CALL R1 1
0x70020004, // 000B JMP #0011
- 0x88040100, // 000C GETMBR R1 R0 K0
- 0x1C040305, // 000D EQ R1 R1 K5
+ 0x8804011B, // 000C GETMBR R1 R0 K27
+ 0x1C04030B, // 000D EQ R1 R1 K11
0x78060001, // 000E JMPF R1 #0011
- 0x8C040106, // 000F GETMET R1 R0 K6
+ 0x8C04011E, // 000F GETMET R1 R0 K30
0x7C040200, // 0010 CALL R1 1
0x80000000, // 0011 RET 0
})
@@ -353,27 +382,23 @@ be_local_closure(class_Matter_HTTP_async_parse_http_response, /* name */
/********************************************************************
** Solidified function: event_refused
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_event_refused, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(http_status),
- /* K1 */ be_nested_str_weak(event_http_failed),
- }),
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(event_refused),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
0x5405FFFE, // 0000 LDINT R1 -1
- 0x90020001, // 0001 SETMBR R0 K0 R1
- 0x8C040101, // 0002 GETMET R1 R0 K1
+ 0x90023E01, // 0001 SETMBR R0 K31 R1
+ 0x8C040120, // 0002 GETMET R1 R0 K32
0x7C040200, // 0003 CALL R1 1
0x80000000, // 0004 RET 0
})
@@ -385,50 +410,37 @@ be_local_closure(class_Matter_HTTP_async_event_refused, /* name */
/********************************************************************
** Solidified function: reset
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_reset, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(reset),
- /* K1 */ be_nested_str_weak(cmd),
- /* K2 */ be_nested_str_weak(response),
- /* K3 */ be_nested_str_weak(response_offset),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(payload),
- /* K6 */ be_nested_str_weak(),
- /* K7 */ be_nested_str_weak(phase),
- /* K8 */ be_nested_str_weak(http_status),
- /* K9 */ be_nested_str_weak(is_chunked),
- /* K10 */ be_nested_str_weak(chunk_size),
- }),
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(reset),
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
0x60040003, // 0000 GETGBL R1 G3
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
- 0x8C040300, // 0003 GETMET R1 R1 K0
+ 0x8C040321, // 0003 GETMET R1 R1 K33
0x7C040200, // 0004 CALL R1 1
0x4C040000, // 0005 LDNIL R1
- 0x90020201, // 0006 SETMBR R0 K1 R1
+ 0x90024401, // 0006 SETMBR R0 K34 R1
0x4C040000, // 0007 LDNIL R1
- 0x90020401, // 0008 SETMBR R0 K2 R1
- 0x90020704, // 0009 SETMBR R0 K3 K4
- 0x90020B06, // 000A SETMBR R0 K5 K6
- 0x90020F04, // 000B SETMBR R0 K7 K4
- 0x90021104, // 000C SETMBR R0 K8 K4
+ 0x90020A01, // 0008 SETMBR R0 K5 R1
+ 0x90020D07, // 0009 SETMBR R0 K6 K7
+ 0x90021D0C, // 000A SETMBR R0 K14 K12
+ 0x90023707, // 000B SETMBR R0 K27 K7
+ 0x90023F07, // 000C SETMBR R0 K31 K7
0x50040000, // 000D LDBOOL R1 0 0
- 0x90021201, // 000E SETMBR R0 K9 R1
+ 0x90020001, // 000E SETMBR R0 K0 R1
0x4C040000, // 000F LDNIL R1
- 0x90021401, // 0010 SETMBR R0 K10 R1
+ 0x90020201, // 0010 SETMBR R0 K1 R1
0x80000000, // 0011 RET 0
})
)
@@ -439,30 +451,26 @@ be_local_closure(class_Matter_HTTP_async_reset, /* name */
/********************************************************************
** Solidified function: begin
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_begin, /* name */
be_nested_proto(
4, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(begin),
- /* K1 */ be_nested_str_weak(cmd),
- }),
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(begin),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0
0x7C080200, // 0002 CALL R2 1
- 0x8C080500, // 0003 GETMET R2 R2 K0
+ 0x8C080523, // 0003 GETMET R2 R2 K35
0x7C080200, // 0004 CALL R2 1
- 0x90020201, // 0005 SETMBR R0 K1 R1
+ 0x90024401, // 0005 SETMBR R0 K34 R1
0x80040400, // 0006 RET 1 R2
})
)
@@ -473,24 +481,21 @@ be_local_closure(class_Matter_HTTP_async_begin, /* name */
/********************************************************************
** Solidified function: event_established
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_event_established, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(send_http),
- }),
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(event_established),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040124, // 0000 GETMET R1 R0 K36
0x7C040200, // 0001 CALL R1 1
0x80000000, // 0002 RET 0
})
@@ -502,71 +507,52 @@ be_local_closure(class_Matter_HTTP_async_event_established, /* name */
/********************************************************************
** Solidified function: parse_http_headers
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_parse_http_headers, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_nested_str_weak(global),
- /* K1 */ be_nested_str_weak(_re_http_header),
- /* K2 */ be_nested_str_weak(match2),
- /* K3 */ be_nested_str_weak(response),
- /* K4 */ be_nested_str_weak(response_offset),
- /* K5 */ be_nested_str_weak(event_http_header),
- /* K6 */ be_const_int(1),
- /* K7 */ be_const_int(2),
- /* K8 */ be_const_int(0),
- /* K9 */ be_nested_str_weak(_re_http_body),
- /* K10 */ be_nested_str_weak(event_http_headers_end),
- /* K11 */ be_nested_str_weak(phase),
- /* K12 */ be_nested_str_weak(parse_http_payload),
- /* K13 */ be_nested_str_weak(close),
- /* K14 */ be_nested_str_weak(status),
- /* K15 */ be_nested_str_weak(http_status),
- /* K16 */ be_nested_str_weak(event_http_failed),
- }),
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(parse_http_headers),
&be_const_str_solidified,
( &(const binstruction[47]) { /* code */
0x50040200, // 0000 LDBOOL R1 1 0
0x7806002B, // 0001 JMPF R1 #002E
- 0xB8060000, // 0002 GETNGBL R1 K0
- 0x88040301, // 0003 GETMBR R1 R1 K1
- 0x8C040302, // 0004 GETMET R1 R1 K2
- 0x880C0103, // 0005 GETMBR R3 R0 K3
- 0x88100104, // 0006 GETMBR R4 R0 K4
+ 0xB8060400, // 0002 GETNGBL R1 K2
+ 0x88040325, // 0003 GETMBR R1 R1 K37
+ 0x8C040304, // 0004 GETMET R1 R1 K4
+ 0x880C0105, // 0005 GETMBR R3 R0 K5
+ 0x88100106, // 0006 GETMBR R4 R0 K6
0x7C040600, // 0007 CALL R1 3
0x78060008, // 0008 JMPF R1 #0012
- 0x8C080105, // 0009 GETMET R2 R0 K5
- 0x94100306, // 000A GETIDX R4 R1 K6
- 0x94140307, // 000B GETIDX R5 R1 K7
+ 0x8C080126, // 0009 GETMET R2 R0 K38
+ 0x94100309, // 000A GETIDX R4 R1 K9
+ 0x9414030B, // 000B GETIDX R5 R1 K11
0x7C080600, // 000C CALL R2 3
- 0x88080104, // 000D GETMBR R2 R0 K4
- 0x940C0308, // 000E GETIDX R3 R1 K8
+ 0x88080106, // 000D GETMBR R2 R0 K6
+ 0x940C0307, // 000E GETIDX R3 R1 K7
0x00080403, // 000F ADD R2 R2 R3
- 0x90020802, // 0010 SETMBR R0 K4 R2
+ 0x90020C02, // 0010 SETMBR R0 K6 R2
0x7002001A, // 0011 JMP #002D
- 0xB80A0000, // 0012 GETNGBL R2 K0
- 0x88080509, // 0013 GETMBR R2 R2 K9
- 0x8C080502, // 0014 GETMET R2 R2 K2
- 0x88100103, // 0015 GETMBR R4 R0 K3
- 0x88140104, // 0016 GETMBR R5 R0 K4
+ 0xB80A0400, // 0012 GETNGBL R2 K2
+ 0x88080527, // 0013 GETMBR R2 R2 K39
+ 0x8C080504, // 0014 GETMET R2 R2 K4
+ 0x88100105, // 0015 GETMBR R4 R0 K5
+ 0x88140106, // 0016 GETMBR R5 R0 K6
0x7C080600, // 0017 CALL R2 3
0x780A0004, // 0018 JMPF R2 #001E
- 0x8C0C010A, // 0019 GETMET R3 R0 K10
+ 0x8C0C0128, // 0019 GETMET R3 R0 K40
0x7C0C0200, // 001A CALL R3 1
- 0x90021707, // 001B SETMBR R0 K11 K7
- 0x8C0C010C, // 001C GETMET R3 R0 K12
+ 0x9002370B, // 001B SETMBR R0 K27 K11
+ 0x8C0C011E, // 001C GETMET R3 R0 K30
0x7C0C0200, // 001D CALL R3 1
0x600C000C, // 001E GETGBL R3 G12
- 0x88100103, // 001F GETMBR R4 R0 K3
+ 0x88100105, // 001F GETMBR R4 R0 K5
0x7C0C0200, // 0020 CALL R3 1
0x541203FF, // 0021 LDINT R4 1024
0x240C0604, // 0022 GT R3 R3 R4
@@ -574,10 +560,10 @@ be_local_closure(class_Matter_HTTP_async_parse_http_headers, /* name */
0x8C0C010D, // 0024 GETMET R3 R0 K13
0x7C0C0200, // 0025 CALL R3 1
0x540DFFFB, // 0026 LDINT R3 -4
- 0x90021C03, // 0027 SETMBR R0 K14 R3
+ 0x90021403, // 0027 SETMBR R0 K10 R3
0x540DFFFE, // 0028 LDINT R3 -1
- 0x90021E03, // 0029 SETMBR R0 K15 R3
- 0x8C0C0110, // 002A GETMET R3 R0 K16
+ 0x90023E03, // 0029 SETMBR R0 K31 R3
+ 0x8C0C0120, // 002A GETMET R3 R0 K32
0x7C0C0200, // 002B CALL R3 1
0x80000600, // 002C RET 0
0x7001FFD1, // 002D JMP #0000
@@ -591,24 +577,21 @@ be_local_closure(class_Matter_HTTP_async_parse_http_headers, /* name */
/********************************************************************
** Solidified function: event_available
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_event_available, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(receive),
- }),
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(event_available),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040129, // 0000 GETMET R1 R0 K41
0x7C040200, // 0001 CALL R1 1
0x80000000, // 0002 RET 0
})
@@ -620,27 +603,23 @@ be_local_closure(class_Matter_HTTP_async_event_available, /* name */
/********************************************************************
** Solidified function: event_timeout
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_event_timeout, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(http_status),
- /* K1 */ be_nested_str_weak(event_http_timeout),
- }),
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(event_timeout),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
0x5405FFFD, // 0000 LDINT R1 -2
- 0x90020001, // 0001 SETMBR R0 K0 R1
- 0x8C040101, // 0002 GETMET R1 R0 K1
+ 0x90023E01, // 0001 SETMBR R0 K31 R1
+ 0x8C04012A, // 0002 GETMET R1 R0 K42
0x7C040200, // 0003 CALL R1 1
0x80000000, // 0004 RET 0
})
@@ -652,60 +631,46 @@ be_local_closure(class_Matter_HTTP_async_event_timeout, /* name */
/********************************************************************
** Solidified function: compile_re
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_compile_re, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(re),
- /* K1 */ be_nested_str_weak(global),
- /* K2 */ be_nested_str_weak(contains),
- /* K3 */ be_nested_str_weak(_re_http_status),
- /* K4 */ be_nested_str_weak(compile),
- /* K5 */ be_nested_str_weak(HTTP_STATUS_REGEX),
- /* K6 */ be_nested_str_weak(_re_http_header),
- /* K7 */ be_nested_str_weak(HTTP_HEADER_REGEX),
- /* K8 */ be_nested_str_weak(_re_http_body),
- /* K9 */ be_nested_str_weak(HTTP_BODY_REGEX),
- /* K10 */ be_nested_str_weak(_re_http_chunk),
- /* K11 */ be_nested_str_weak(HTTP_CHUNK_REGEX),
- }),
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(compile_re),
&be_const_str_solidified,
( &(const binstruction[27]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xB80A0200, // 0001 GETNGBL R2 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
- 0x58100003, // 0003 LDCONST R4 K3
+ 0xA4065600, // 0000 IMPORT R1 K43
+ 0xB80A0400, // 0001 GETNGBL R2 K2
+ 0x8C08052C, // 0002 GETMET R2 R2 K44
+ 0x5810002D, // 0003 LDCONST R4 K45
0x7C080400, // 0004 CALL R2 2
0x740A0013, // 0005 JMPT R2 #001A
- 0xB80A0200, // 0006 GETNGBL R2 K1
- 0x8C0C0304, // 0007 GETMET R3 R1 K4
- 0x88140105, // 0008 GETMBR R5 R0 K5
+ 0xB80A0400, // 0006 GETNGBL R2 K2
+ 0x8C0C032E, // 0007 GETMET R3 R1 K46
+ 0x8814012F, // 0008 GETMBR R5 R0 K47
0x7C0C0400, // 0009 CALL R3 2
- 0x900A0603, // 000A SETMBR R2 K3 R3
- 0xB80A0200, // 000B GETNGBL R2 K1
- 0x8C0C0304, // 000C GETMET R3 R1 K4
- 0x88140107, // 000D GETMBR R5 R0 K7
+ 0x900A5A03, // 000A SETMBR R2 K45 R3
+ 0xB80A0400, // 000B GETNGBL R2 K2
+ 0x8C0C032E, // 000C GETMET R3 R1 K46
+ 0x88140130, // 000D GETMBR R5 R0 K48
0x7C0C0400, // 000E CALL R3 2
- 0x900A0C03, // 000F SETMBR R2 K6 R3
- 0xB80A0200, // 0010 GETNGBL R2 K1
- 0x8C0C0304, // 0011 GETMET R3 R1 K4
- 0x88140109, // 0012 GETMBR R5 R0 K9
+ 0x900A4A03, // 000F SETMBR R2 K37 R3
+ 0xB80A0400, // 0010 GETNGBL R2 K2
+ 0x8C0C032E, // 0011 GETMET R3 R1 K46
+ 0x88140131, // 0012 GETMBR R5 R0 K49
0x7C0C0400, // 0013 CALL R3 2
- 0x900A1003, // 0014 SETMBR R2 K8 R3
- 0xB80A0200, // 0015 GETNGBL R2 K1
- 0x8C0C0304, // 0016 GETMET R3 R1 K4
- 0x8814010B, // 0017 GETMBR R5 R0 K11
+ 0x900A4E03, // 0014 SETMBR R2 K39 R3
+ 0xB80A0400, // 0015 GETNGBL R2 K2
+ 0x8C0C032E, // 0016 GETMET R3 R1 K46
+ 0x88140132, // 0017 GETMBR R5 R0 K50
0x7C0C0400, // 0018 CALL R3 2
- 0x900A1403, // 0019 SETMBR R2 K10 R3
+ 0x900A0603, // 0019 SETMBR R2 K3 R3
0x80000000, // 001A RET 0
})
)
@@ -716,31 +681,25 @@ be_local_closure(class_Matter_HTTP_async_compile_re, /* name */
/********************************************************************
** Solidified function: event_closed
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_event_closed, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(http_status),
- /* K1 */ be_const_int(0),
- /* K2 */ be_const_int(1),
- /* K3 */ be_nested_str_weak(event_http_finished),
- }),
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(event_closed),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x1C040301, // 0001 EQ R1 R1 K1
+ 0x8804011F, // 0000 GETMBR R1 R0 K31
+ 0x1C040307, // 0001 EQ R1 R1 K7
0x78060002, // 0002 JMPF R1 #0006
- 0x90020102, // 0003 SETMBR R0 K0 K2
- 0x8C040103, // 0004 GETMET R1 R0 K3
+ 0x90023F09, // 0003 SETMBR R0 K31 K9
+ 0x8C040133, // 0004 GETMET R1 R0 K51
0x7C040200, // 0005 CALL R1 1
0x80000000, // 0006 RET 0
})
@@ -752,62 +711,50 @@ be_local_closure(class_Matter_HTTP_async_event_closed, /* name */
/********************************************************************
** Solidified function: begin_sync
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_begin_sync, /* name */
be_nested_proto(
10, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(timeout),
- /* K1 */ be_nested_str_weak(set_timeout),
- /* K2 */ be_nested_str_weak(SPINLOCK),
- /* K3 */ be_nested_str_weak(begin),
- /* K4 */ be_nested_str_weak(http_status),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(loop),
- /* K7 */ be_nested_str_weak(tasmota),
- /* K8 */ be_nested_str_weak(delay),
- /* K9 */ be_nested_str_weak(payload),
- }),
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(begin_sync),
&be_const_str_solidified,
( &(const binstruction[33]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
+ 0x880C0134, // 0000 GETMBR R3 R0 K52
0x4C100000, // 0001 LDNIL R4
0x20100404, // 0002 NE R4 R2 R4
0x78120002, // 0003 JMPF R4 #0007
- 0x8C100101, // 0004 GETMET R4 R0 K1
+ 0x8C100135, // 0004 GETMET R4 R0 K53
0x5C180400, // 0005 MOVE R6 R2
0x7C100400, // 0006 CALL R4 2
0x4C100000, // 0007 LDNIL R4
- 0x88140102, // 0008 GETMBR R5 R0 K2
- 0x8C180103, // 0009 GETMET R6 R0 K3
+ 0x88140136, // 0008 GETMBR R5 R0 K54
+ 0x8C180123, // 0009 GETMET R6 R0 K35
0x5C200200, // 000A MOVE R8 R1
0x7C180400, // 000B CALL R6 2
0x781A0009, // 000C JMPF R6 #0017
- 0x881C0104, // 000D GETMBR R7 R0 K4
- 0x1C1C0F05, // 000E EQ R7 R7 K5
+ 0x881C011F, // 000D GETMBR R7 R0 K31
+ 0x1C1C0F07, // 000E EQ R7 R7 K7
0x781E0006, // 000F JMPF R7 #0017
- 0x8C1C0106, // 0010 GETMET R7 R0 K6
+ 0x8C1C0137, // 0010 GETMET R7 R0 K55
0x7C1C0200, // 0011 CALL R7 1
- 0xB81E0E00, // 0012 GETNGBL R7 K7
- 0x8C1C0F08, // 0013 GETMET R7 R7 K8
+ 0xB81E7000, // 0012 GETNGBL R7 K56
+ 0x8C1C0F39, // 0013 GETMET R7 R7 K57
0x5C240A00, // 0014 MOVE R9 R5
0x7C1C0400, // 0015 CALL R7 2
0x7001FFF5, // 0016 JMP #000D
- 0x8C1C0101, // 0017 GETMET R7 R0 K1
+ 0x8C1C0135, // 0017 GETMET R7 R0 K53
0x5C240600, // 0018 MOVE R9 R3
0x7C1C0400, // 0019 CALL R7 2
- 0x881C0104, // 001A GETMBR R7 R0 K4
- 0x241C0F05, // 001B GT R7 R7 K5
+ 0x881C011F, // 001A GETMBR R7 R0 K31
+ 0x241C0F07, // 001B GT R7 R7 K7
0x781E0001, // 001C JMPF R7 #001F
- 0x881C0109, // 001D GETMBR R7 R0 K9
+ 0x881C010E, // 001D GETMBR R7 R0 K14
0x70020000, // 001E JMP #0020
0x4C1C0000, // 001F LDNIL R7
0x80040E00, // 0020 RET 1 R7
@@ -820,75 +767,54 @@ be_local_closure(class_Matter_HTTP_async_begin_sync, /* name */
/********************************************************************
** Solidified function: send_http
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_send_http, /* name */
be_nested_proto(
10, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[19]) { /* constants */
- /* K0 */ be_nested_str_weak(string),
- /* K1 */ be_nested_str_weak(response),
- /* K2 */ be_nested_str_weak(),
- /* K3 */ be_nested_str_weak(addr),
- /* K4 */ be_nested_str_weak(find),
- /* K5 */ be_nested_str_weak(_X3A),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(_X5B),
- /* K8 */ be_nested_str_weak(_X5D),
- /* K9 */ be_nested_str_weak(auth),
- /* K10 */ be_nested_str_weak(HTTP_GET),
- /* K11 */ be_nested_str_weak(cmd),
- /* K12 */ be_nested_str_weak(port),
- /* K13 */ be_nested_str_weak(HTTP_GET_AUTH),
- /* K14 */ be_nested_str_weak(write),
- /* K15 */ be_nested_str_weak(close),
- /* K16 */ be_nested_str_weak(status),
- /* K17 */ be_nested_str_weak(http_status),
- /* K18 */ be_nested_str_weak(event_http_failed),
- }),
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(send_http),
&be_const_str_solidified,
( &(const binstruction[50]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x90020302, // 0001 SETMBR R0 K1 K2
- 0x88080103, // 0002 GETMBR R2 R0 K3
- 0x8C0C0304, // 0003 GETMET R3 R1 K4
+ 0xA4062000, // 0000 IMPORT R1 K16
+ 0x90020B0C, // 0001 SETMBR R0 K5 K12
+ 0x8808013A, // 0002 GETMBR R2 R0 K58
+ 0x8C0C0314, // 0003 GETMET R3 R1 K20
0x5C140400, // 0004 MOVE R5 R2
- 0x58180005, // 0005 LDCONST R6 K5
+ 0x5818003B, // 0005 LDCONST R6 K59
0x7C0C0600, // 0006 CALL R3 3
- 0x280C0706, // 0007 GE R3 R3 K6
+ 0x280C0707, // 0007 GE R3 R3 K7
0x780E0002, // 0008 JMPF R3 #000C
- 0x000E0E02, // 0009 ADD R3 K7 R2
- 0x000C0708, // 000A ADD R3 R3 K8
+ 0x000E7802, // 0009 ADD R3 K60 R2
+ 0x000C073D, // 000A ADD R3 R3 K61
0x5C080600, // 000B MOVE R2 R3
0x4C0C0000, // 000C LDNIL R3
- 0x88100109, // 000D GETMBR R4 R0 K9
+ 0x88100116, // 000D GETMBR R4 R0 K22
0x4C140000, // 000E LDNIL R5
0x1C100805, // 000F EQ R4 R4 R5
0x78120007, // 0010 JMPF R4 #0019
0x60100018, // 0011 GETGBL R4 G24
- 0x8814010A, // 0012 GETMBR R5 R0 K10
- 0x8818010B, // 0013 GETMBR R6 R0 K11
+ 0x8814013E, // 0012 GETMBR R5 R0 K62
+ 0x88180122, // 0013 GETMBR R6 R0 K34
0x5C1C0400, // 0014 MOVE R7 R2
- 0x8820010C, // 0015 GETMBR R8 R0 K12
+ 0x8820013F, // 0015 GETMBR R8 R0 K63
0x7C100800, // 0016 CALL R4 4
0x5C0C0800, // 0017 MOVE R3 R4
0x70020007, // 0018 JMP #0021
0x60100018, // 0019 GETGBL R4 G24
- 0x8814010D, // 001A GETMBR R5 R0 K13
- 0x8818010B, // 001B GETMBR R6 R0 K11
+ 0x88140140, // 001A GETMBR R5 R0 K64
+ 0x88180122, // 001B GETMBR R6 R0 K34
0x5C1C0400, // 001C MOVE R7 R2
- 0x8820010C, // 001D GETMBR R8 R0 K12
- 0x88240109, // 001E GETMBR R9 R0 K9
+ 0x8820013F, // 001D GETMBR R8 R0 K63
+ 0x88240116, // 001E GETMBR R9 R0 K22
0x7C100A00, // 001F CALL R4 5
0x5C0C0800, // 0020 MOVE R3 R4
- 0x8C10010E, // 0021 GETMET R4 R0 K14
+ 0x8C100141, // 0021 GETMET R4 R0 K65
0x5C180600, // 0022 MOVE R6 R3
0x7C100400, // 0023 CALL R4 2
0x6014000C, // 0024 GETGBL R5 G12
@@ -896,13 +822,13 @@ be_local_closure(class_Matter_HTTP_async_send_http, /* name */
0x7C140200, // 0026 CALL R5 1
0x20140805, // 0027 NE R5 R4 R5
0x78160007, // 0028 JMPF R5 #0031
- 0x8C14010F, // 0029 GETMET R5 R0 K15
+ 0x8C14010D, // 0029 GETMET R5 R0 K13
0x7C140200, // 002A CALL R5 1
0x5415FFFB, // 002B LDINT R5 -4
- 0x90022005, // 002C SETMBR R0 K16 R5
+ 0x90021405, // 002C SETMBR R0 K10 R5
0x5415FFFE, // 002D LDINT R5 -1
- 0x90022205, // 002E SETMBR R0 K17 R5
- 0x8C140112, // 002F GETMET R5 R0 K18
+ 0x90023E05, // 002E SETMBR R0 K31 R5
+ 0x8C140120, // 002F GETMET R5 R0 K32
0x7C140200, // 0030 CALL R5 1
0x80000000, // 0031 RET 0
})
@@ -914,35 +840,29 @@ be_local_closure(class_Matter_HTTP_async_send_http, /* name */
/********************************************************************
** Solidified function: event_http_headers_end
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_event_http_headers_end, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(response_offset),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(response),
- /* K3 */ be_const_int(2147483647),
- }),
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(event_http_headers_end),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x24040301, // 0001 GT R1 R1 K1
+ 0x88040106, // 0000 GETMBR R1 R0 K6
+ 0x24040307, // 0001 GT R1 R1 K7
0x78060005, // 0002 JMPF R1 #0009
- 0x88040100, // 0003 GETMBR R1 R0 K0
- 0x40040303, // 0004 CONNECT R1 R1 K3
- 0x88080102, // 0005 GETMBR R2 R0 K2
+ 0x88040106, // 0003 GETMBR R1 R0 K6
+ 0x4004030F, // 0004 CONNECT R1 R1 K15
+ 0x88080105, // 0005 GETMBR R2 R0 K5
0x94040401, // 0006 GETIDX R1 R2 R1
- 0x90020401, // 0007 SETMBR R0 K2 R1
- 0x90020101, // 0008 SETMBR R0 K0 K1
+ 0x90020A01, // 0007 SETMBR R0 K5 R1
+ 0x90020D07, // 0008 SETMBR R0 K6 K7
0x80000000, // 0009 RET 0
})
)
@@ -953,24 +873,21 @@ be_local_closure(class_Matter_HTTP_async_event_http_headers_end, /* name */
/********************************************************************
** Solidified function: event_http_status_code
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_event_http_status_code, /* name */
be_nested_proto(
3, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(status_code),
- }),
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(event_http_status_code),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90028401, // 0000 SETMBR R0 K66 R1
0x80000000, // 0001 RET 0
})
)
@@ -981,61 +898,47 @@ be_local_closure(class_Matter_HTTP_async_event_http_status_code, /* name */
/********************************************************************
** Solidified function: parse_http_status_line
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_parse_http_status_line, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(global),
- /* K1 */ be_nested_str_weak(_re_http_status),
- /* K2 */ be_nested_str_weak(match2),
- /* K3 */ be_nested_str_weak(response),
- /* K4 */ be_nested_str_weak(response_offset),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(status_code),
- /* K7 */ be_const_int(1),
- /* K8 */ be_nested_str_weak(phase),
- /* K9 */ be_nested_str_weak(parse_http_headers),
- /* K10 */ be_nested_str_weak(close),
- /* K11 */ be_nested_str_weak(status),
- }),
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(parse_http_status_line),
&be_const_str_solidified,
( &(const binstruction[28]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x8C040302, // 0002 GETMET R1 R1 K2
- 0x880C0103, // 0003 GETMBR R3 R0 K3
- 0x88100104, // 0004 GETMBR R4 R0 K4
+ 0xB8060400, // 0000 GETNGBL R1 K2
+ 0x8804032D, // 0001 GETMBR R1 R1 K45
+ 0x8C040304, // 0002 GETMET R1 R1 K4
+ 0x880C0105, // 0003 GETMBR R3 R0 K5
+ 0x88100106, // 0004 GETMBR R4 R0 K6
0x7C040600, // 0005 CALL R1 3
0x78060009, // 0006 JMPF R1 #0011
- 0x94080305, // 0007 GETIDX R2 R1 K5
- 0x90020802, // 0008 SETMBR R0 K4 R2
+ 0x94080307, // 0007 GETIDX R2 R1 K7
+ 0x90020C02, // 0008 SETMBR R0 K6 R2
0x60080009, // 0009 GETGBL R2 G9
- 0x940C0307, // 000A GETIDX R3 R1 K7
+ 0x940C0309, // 000A GETIDX R3 R1 K9
0x7C080200, // 000B CALL R2 1
- 0x90020C02, // 000C SETMBR R0 K6 R2
- 0x90021107, // 000D SETMBR R0 K8 K7
- 0x8C080109, // 000E GETMET R2 R0 K9
+ 0x90028402, // 000C SETMBR R0 K66 R2
+ 0x90023709, // 000D SETMBR R0 K27 K9
+ 0x8C08011D, // 000E GETMET R2 R0 K29
0x7C080200, // 000F CALL R2 1
0x70020009, // 0010 JMP #001B
0x6008000C, // 0011 GETGBL R2 G12
- 0x880C0103, // 0012 GETMBR R3 R0 K3
+ 0x880C0105, // 0012 GETMBR R3 R0 K5
0x7C080200, // 0013 CALL R2 1
0x540E0063, // 0014 LDINT R3 100
0x24080403, // 0015 GT R2 R2 R3
0x780A0003, // 0016 JMPF R2 #001B
- 0x8C08010A, // 0017 GETMET R2 R0 K10
+ 0x8C08010D, // 0017 GETMET R2 R0 K13
0x7C080200, // 0018 CALL R2 1
0x5409FFFB, // 0019 LDINT R2 -4
- 0x90021602, // 001A SETMBR R0 K11 R2
+ 0x90021402, // 001A SETMBR R0 K10 R2
0x80000000, // 001B RET 0
})
)
@@ -1046,18 +949,17 @@ be_local_closure(class_Matter_HTTP_async_parse_http_status_line, /* name */
/********************************************************************
** Solidified function: event_http_timeout
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_event_http_timeout, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(event_http_timeout),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -1071,83 +973,66 @@ be_local_closure(class_Matter_HTTP_async_event_http_timeout, /* name */
/********************************************************************
** Solidified function: receive
********************************************************************/
-extern const bclass be_class_Matter_HTTP_async;
be_local_closure(class_Matter_HTTP_async_receive, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[15]) { /* constants */
- /* K0 */ be_nested_str_weak(tcp_connected),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(millis),
- /* K3 */ be_nested_str_weak(time_start),
- /* K4 */ be_nested_str_weak(timeout),
- /* K5 */ be_nested_str_weak(status),
- /* K6 */ be_nested_str_weak(close),
- /* K7 */ be_nested_str_weak(http_status),
- /* K8 */ be_nested_str_weak(event_http_timeout),
- /* K9 */ be_nested_str_weak(tcp),
- /* K10 */ be_nested_str_weak(available),
- /* K11 */ be_const_int(0),
- /* K12 */ be_nested_str_weak(read),
- /* K13 */ be_nested_str_weak(response),
- /* K14 */ be_nested_str_weak(parse_http_response),
- }),
+ &be_ktab_class_Matter_HTTP_async, /* shared constants */
be_str_weak(receive),
&be_const_str_solidified,
( &(const binstruction[48]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040143, // 0000 GETMBR R1 R0 K67
0x50080200, // 0001 LDBOOL R2 1 0
0x20040202, // 0002 NE R1 R1 R2
0x78060000, // 0003 JMPF R1 #0005
0x80000200, // 0004 RET 0
- 0xB8060200, // 0005 GETNGBL R1 K1
- 0x8C040302, // 0006 GETMET R1 R1 K2
+ 0xB8067000, // 0005 GETNGBL R1 K56
+ 0x8C040344, // 0006 GETMET R1 R1 K68
0x7C040200, // 0007 CALL R1 1
- 0x88080103, // 0008 GETMBR R2 R0 K3
+ 0x88080145, // 0008 GETMBR R2 R0 K69
0x04040202, // 0009 SUB R1 R1 R2
- 0x88080104, // 000A GETMBR R2 R0 K4
+ 0x88080134, // 000A GETMBR R2 R0 K52
0x24040202, // 000B GT R1 R1 R2
0x78060008, // 000C JMPF R1 #0016
0x5405FFFC, // 000D LDINT R1 -3
- 0x90020A01, // 000E SETMBR R0 K5 R1
- 0x8C040106, // 000F GETMET R1 R0 K6
+ 0x90021401, // 000E SETMBR R0 K10 R1
+ 0x8C04010D, // 000F GETMET R1 R0 K13
0x7C040200, // 0010 CALL R1 1
0x5405FFFD, // 0011 LDINT R1 -2
- 0x90020E01, // 0012 SETMBR R0 K7 R1
- 0x8C040108, // 0013 GETMET R1 R0 K8
+ 0x90023E01, // 0012 SETMBR R0 K31 R1
+ 0x8C04012A, // 0013 GETMET R1 R0 K42
0x7C040200, // 0014 CALL R1 1
0x70020018, // 0015 JMP #002F
- 0x88040109, // 0016 GETMBR R1 R0 K9
- 0x8C04030A, // 0017 GETMET R1 R1 K10
+ 0x88040146, // 0016 GETMBR R1 R0 K70
+ 0x8C040347, // 0017 GETMET R1 R1 K71
0x7C040200, // 0018 CALL R1 1
- 0x5808000B, // 0019 LDCONST R2 K11
- 0x240C030B, // 001A GT R3 R1 K11
+ 0x58080007, // 0019 LDCONST R2 K7
+ 0x240C0307, // 001A GT R3 R1 K7
0x780E000E, // 001B JMPF R3 #002B
- 0x880C0109, // 001C GETMBR R3 R0 K9
- 0x8C0C070C, // 001D GETMET R3 R3 K12
+ 0x880C0146, // 001C GETMBR R3 R0 K70
+ 0x8C0C0748, // 001D GETMET R3 R3 K72
0x7C0C0200, // 001E CALL R3 1
- 0x8810010D, // 001F GETMBR R4 R0 K13
+ 0x88100105, // 001F GETMBR R4 R0 K5
0x00100803, // 0020 ADD R4 R4 R3
- 0x90021A04, // 0021 SETMBR R0 K13 R4
+ 0x90020A04, // 0021 SETMBR R0 K5 R4
0x6010000C, // 0022 GETGBL R4 G12
0x5C140600, // 0023 MOVE R5 R3
0x7C100200, // 0024 CALL R4 1
0x00080404, // 0025 ADD R2 R2 R4
- 0x88100109, // 0026 GETMBR R4 R0 K9
- 0x8C10090A, // 0027 GETMET R4 R4 K10
+ 0x88100146, // 0026 GETMBR R4 R0 K70
+ 0x8C100947, // 0027 GETMET R4 R4 K71
0x7C100200, // 0028 CALL R4 1
0x5C040800, // 0029 MOVE R1 R4
0x7001FFEE, // 002A JMP #001A
- 0x240C050B, // 002B GT R3 R2 K11
+ 0x240C0507, // 002B GT R3 R2 K7
0x780E0001, // 002C JMPF R3 #002F
- 0x8C0C010E, // 002D GETMET R3 R0 K14
+ 0x8C0C0149, // 002D GETMET R3 R0 K73
0x7C0C0200, // 002E CALL R3 1
0x80000000, // 002F RET 0
})
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h
index 8e516d7ac..aa7f30ea2 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_HTTP_remote.h
@@ -3,861 +3,110 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_HTTP_remote' ktab size: 83, total: 161 (saved 624 bytes)
+static const bvalue be_ktab_class_Matter_HTTP_remote[83] = {
+ /* K0 */ be_nested_str_weak(probe_update_time_map),
+ /* K1 */ be_nested_str_weak(contains),
+ /* K2 */ be_nested_str_weak(probe_next_timestamp_map),
+ /* K3 */ be_nested_str_weak(matter),
+ /* K4 */ be_nested_str_weak(jitter),
+ /* K5 */ be_nested_str_weak(add_async_cb),
+ /* K6 */ be_const_int(0),
+ /* K7 */ be_nested_str_weak(async_cb_map),
+ /* K8 */ be_nested_str_weak(keys),
+ /* K9 */ be_nested_str_weak(current_cmd),
+ /* K10 */ be_nested_str_weak(stop_iteration),
+ /* K11 */ be_nested_str_weak(info),
+ /* K12 */ be_nested_str_weak(find),
+ /* K13 */ be_nested_str_weak(DeviceName),
+ /* K14 */ be_nested_str_weak(Tasmota),
+ /* K15 */ be_nested_str_weak(name),
+ /* K16 */ be_nested_str_weak(remove),
+ /* K17 */ be_nested_str_weak(log),
+ /* K18 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20name_X3D_X27_X25s_X27),
+ /* K19 */ be_nested_str_weak(addr),
+ /* K20 */ be_const_int(3),
+ /* K21 */ be_nested_str_weak(change_schedule),
+ /* K22 */ be_nested_str_weak(UPDATE_CMD0),
+ /* K23 */ be_nested_str_weak(UPDATE_TIME2),
+ /* K24 */ be_const_int(2),
+ /* K25 */ be_nested_str_weak(Version),
+ /* K26 */ be_nested_str_weak(Hardware),
+ /* K27 */ be_nested_str_weak(version),
+ /* K28 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20version_X3D_X27_X25s_X27),
+ /* K29 */ be_nested_str_weak(hardware),
+ /* K30 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20hardware_X3D_X27_X25s_X27),
+ /* K31 */ be_nested_str_weak(UPDATE_CMD2),
+ /* K32 */ be_nested_str_weak(Mac),
+ /* K33 */ be_nested_str_weak(mac),
+ /* K34 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20mac_X3D_X27_X25s_X27),
+ /* K35 */ be_nested_str_weak(UPDATE_CMD5),
+ /* K36 */ be_nested_str_weak(info_changed),
+ /* K37 */ be_nested_str_weak(reachable),
+ /* K38 */ be_nested_str_weak(reachable_utc),
+ /* K39 */ be_nested_str_weak(tasmota),
+ /* K40 */ be_nested_str_weak(rtc_utc),
+ /* K41 */ be_nested_str_weak(payload),
+ /* K42 */ be_nested_str_weak(nil),
+ /* K43 */ be_nested_str_weak(_X2E_X2E_X2E),
+ /* K44 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20async_X2Dresp_X20in_X20_X25i_X20ms_X20from_X20_X25s_X3A_X20_X5B_X25i_X5D_X20_X27_X25s_X27),
+ /* K45 */ be_nested_str_weak(millis),
+ /* K46 */ be_nested_str_weak(time_start),
+ /* K47 */ be_nested_str_weak(dispatch_cb),
+ /* K48 */ be_nested_str_weak(http_status),
+ /* K49 */ be_nested_str_weak(string),
+ /* K50 */ be_nested_str_weak(webserver),
+ /* K51 */ be_nested_str_weak(wifi),
+ /* K52 */ be_nested_str_weak(up),
+ /* K53 */ be_nested_str_weak(eth),
+ /* K54 */ be_nested_str_weak(_X2Fcm_X3Fcmnd_X3D),
+ /* K55 */ be_nested_str_weak(tr),
+ /* K56 */ be_nested_str_weak(_X20),
+ /* K57 */ be_nested_str_weak(_X2B),
+ /* K58 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20async_X20request_X20_X27http_X3A_X2F_X2F_X25s_X3A_X25i_X25s_X27),
+ /* K59 */ be_nested_str_weak(port),
+ /* K60 */ be_nested_str_weak(begin),
+ /* K61 */ be_nested_str_weak(device),
+ /* K62 */ be_nested_str_weak(save_param),
+ /* K63 */ be_nested_str_weak(seconds_to_dhm),
+ /* K64 */ be_nested_str_weak(init),
+ /* K65 */ be_nested_str_weak(add_schedule),
+ /* K66 */ be_nested_str_weak(UPDATE_TIME),
+ /* K67 */ be_nested_str_weak(device_is_alive),
+ /* K68 */ be_nested_str_weak(json),
+ /* K69 */ be_nested_str_weak(load),
+ /* K70 */ be_nested_str_weak(STATUS_PREFIX),
+ /* K71 */ be_const_int(1),
+ /* K72 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X20failed_X20to_X20parse_X20JSON_X20response_X20payload_X3D_X25s),
+ /* K73 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20sync_X20request_X20_X27http_X3A_X2F_X2F_X25s_X3A_X25i_X25s_X27),
+ /* K74 */ be_nested_str_weak(begin_sync),
+ /* K75 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20sync_X2Dresp_X20_X20in_X20_X25i_X20ms_X20from_X20_X25s_X3A_X20_X5B_X25i_X5D_X20_X27_X25s_X27),
+ /* K76 */ be_nested_str_weak(time_reached),
+ /* K77 */ be_nested_str_weak(tcp_connected),
+ /* K78 */ be_nested_str_weak(probe_async),
+ /* K79 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20failed),
+ /* K80 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20timeout_X20http_status_X3D_X25i_X20phase_X3D_X25i_X20tcp_status_X3D_X25i_X20size_payload_X3D_X25i),
+ /* K81 */ be_nested_str_weak(phase),
+ /* K82 */ be_nested_str_weak(status),
+};
+
extern const bclass be_class_Matter_HTTP_remote;
-/********************************************************************
-** Solidified function: device_is_alive
-********************************************************************/
-extern const bclass be_class_Matter_HTTP_remote;
-be_local_closure(class_Matter_HTTP_remote_device_is_alive, /* name */
- be_nested_proto(
- 4, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_HTTP_remote,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(reachable),
- /* K1 */ be_nested_str_weak(reachable_utc),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(rtc_utc),
- }),
- be_str_weak(device_is_alive),
- &be_const_str_solidified,
- ( &(const binstruction[11]) { /* code */
- 0x78060006, // 0000 JMPF R1 #0008
- 0x50080200, // 0001 LDBOOL R2 1 0
- 0x90020002, // 0002 SETMBR R0 K0 R2
- 0xB80A0400, // 0003 GETNGBL R2 K2
- 0x8C080503, // 0004 GETMET R2 R2 K3
- 0x7C080200, // 0005 CALL R2 1
- 0x90020202, // 0006 SETMBR R0 K1 R2
- 0x70020001, // 0007 JMP #000A
- 0x50080000, // 0008 LDBOOL R2 0 0
- 0x90020002, // 0009 SETMBR R0 K0 R2
- 0x80000000, // 000A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_update
-********************************************************************/
-extern const bclass be_class_Matter_HTTP_remote;
-be_local_closure(class_Matter_HTTP_remote_parse_update, /* name */
- be_nested_proto(
- 12, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_HTTP_remote,
- 1, /* has constants */
- ( &(const bvalue[28]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(DeviceName),
- /* K3 */ be_nested_str_weak(Tasmota),
- /* K4 */ be_nested_str_weak(info),
- /* K5 */ be_nested_str_weak(name),
- /* K6 */ be_nested_str_weak(remove),
- /* K7 */ be_nested_str_weak(tasmota),
- /* K8 */ be_nested_str_weak(log),
- /* K9 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20name_X3D_X27_X25s_X27),
- /* K10 */ be_nested_str_weak(addr),
- /* K11 */ be_const_int(3),
- /* K12 */ be_nested_str_weak(change_schedule),
- /* K13 */ be_nested_str_weak(UPDATE_CMD0),
- /* K14 */ be_nested_str_weak(UPDATE_TIME2),
- /* K15 */ be_const_int(2),
- /* K16 */ be_nested_str_weak(Version),
- /* K17 */ be_nested_str_weak(Hardware),
- /* K18 */ be_nested_str_weak(version),
- /* K19 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20version_X3D_X27_X25s_X27),
- /* K20 */ be_nested_str_weak(hardware),
- /* K21 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20hardware_X3D_X27_X25s_X27),
- /* K22 */ be_nested_str_weak(UPDATE_CMD2),
- /* K23 */ be_nested_str_weak(Mac),
- /* K24 */ be_nested_str_weak(mac),
- /* K25 */ be_nested_str_weak(MTR_X3A_X20update_X20_X27_X25s_X27_X20mac_X3D_X27_X25s_X27),
- /* K26 */ be_nested_str_weak(UPDATE_CMD5),
- /* K27 */ be_nested_str_weak(info_changed),
- }),
- be_str_weak(parse_update),
- &be_const_str_solidified,
- ( &(const binstruction[145]) { /* code */
- 0x500C0000, // 0000 LDBOOL R3 0 0
- 0x1C100500, // 0001 EQ R4 R2 K0
- 0x78120024, // 0002 JMPF R4 #0028
- 0x8C100301, // 0003 GETMET R4 R1 K1
- 0x58180002, // 0004 LDCONST R6 K2
- 0x7C100400, // 0005 CALL R4 2
- 0x1C140903, // 0006 EQ R5 R4 K3
- 0x78160000, // 0007 JMPF R5 #0009
- 0x4C100000, // 0008 LDNIL R4
- 0x88140104, // 0009 GETMBR R5 R0 K4
- 0x8C140B01, // 000A GETMET R5 R5 K1
- 0x581C0005, // 000B LDCONST R7 K5
- 0x7C140400, // 000C CALL R5 2
- 0x20140A04, // 000D NE R5 R5 R4
- 0x78160013, // 000E JMPF R5 #0023
- 0x4C140000, // 000F LDNIL R5
- 0x20140805, // 0010 NE R5 R4 R5
- 0x78160002, // 0011 JMPF R5 #0015
- 0x88140104, // 0012 GETMBR R5 R0 K4
- 0x98160A04, // 0013 SETIDX R5 K5 R4
- 0x70020003, // 0014 JMP #0019
- 0x88140104, // 0015 GETMBR R5 R0 K4
- 0x8C140B06, // 0016 GETMET R5 R5 K6
- 0x581C0005, // 0017 LDCONST R7 K5
- 0x7C140400, // 0018 CALL R5 2
- 0xB8160E00, // 0019 GETNGBL R5 K7
- 0x8C140B08, // 001A GETMET R5 R5 K8
- 0x601C0018, // 001B GETGBL R7 G24
- 0x58200009, // 001C LDCONST R8 K9
- 0x8824010A, // 001D GETMBR R9 R0 K10
- 0x5C280800, // 001E MOVE R10 R4
- 0x7C1C0600, // 001F CALL R7 3
- 0x5820000B, // 0020 LDCONST R8 K11
- 0x7C140600, // 0021 CALL R5 3
- 0x500C0200, // 0022 LDBOOL R3 1 0
- 0x8C14010C, // 0023 GETMET R5 R0 K12
- 0x881C010D, // 0024 GETMBR R7 R0 K13
- 0x8820010E, // 0025 GETMBR R8 R0 K14
- 0x7C140600, // 0026 CALL R5 3
- 0x70020064, // 0027 JMP #008D
- 0x1C10050F, // 0028 EQ R4 R2 K15
- 0x7812003E, // 0029 JMPF R4 #0069
- 0x8C100301, // 002A GETMET R4 R1 K1
- 0x58180010, // 002B LDCONST R6 K16
- 0x7C100400, // 002C CALL R4 2
- 0x8C140301, // 002D GETMET R5 R1 K1
- 0x581C0011, // 002E LDCONST R7 K17
- 0x7C140400, // 002F CALL R5 2
- 0x88180104, // 0030 GETMBR R6 R0 K4
- 0x8C180D01, // 0031 GETMET R6 R6 K1
- 0x58200012, // 0032 LDCONST R8 K18
- 0x7C180400, // 0033 CALL R6 2
- 0x20180C04, // 0034 NE R6 R6 R4
- 0x781A0013, // 0035 JMPF R6 #004A
- 0x4C180000, // 0036 LDNIL R6
- 0x20180806, // 0037 NE R6 R4 R6
- 0x781A0002, // 0038 JMPF R6 #003C
- 0x88180104, // 0039 GETMBR R6 R0 K4
- 0x981A2404, // 003A SETIDX R6 K18 R4
- 0x70020003, // 003B JMP #0040
- 0x88180104, // 003C GETMBR R6 R0 K4
- 0x8C180D06, // 003D GETMET R6 R6 K6
- 0x58200012, // 003E LDCONST R8 K18
- 0x7C180400, // 003F CALL R6 2
- 0xB81A0E00, // 0040 GETNGBL R6 K7
- 0x8C180D08, // 0041 GETMET R6 R6 K8
- 0x60200018, // 0042 GETGBL R8 G24
- 0x58240013, // 0043 LDCONST R9 K19
- 0x8828010A, // 0044 GETMBR R10 R0 K10
- 0x5C2C0800, // 0045 MOVE R11 R4
- 0x7C200600, // 0046 CALL R8 3
- 0x5824000B, // 0047 LDCONST R9 K11
- 0x7C180600, // 0048 CALL R6 3
- 0x500C0200, // 0049 LDBOOL R3 1 0
- 0x88180104, // 004A GETMBR R6 R0 K4
- 0x8C180D01, // 004B GETMET R6 R6 K1
- 0x58200014, // 004C LDCONST R8 K20
- 0x7C180400, // 004D CALL R6 2
- 0x20180C05, // 004E NE R6 R6 R5
- 0x781A0013, // 004F JMPF R6 #0064
- 0x4C180000, // 0050 LDNIL R6
- 0x20180A06, // 0051 NE R6 R5 R6
- 0x781A0002, // 0052 JMPF R6 #0056
- 0x88180104, // 0053 GETMBR R6 R0 K4
- 0x981A2805, // 0054 SETIDX R6 K20 R5
- 0x70020003, // 0055 JMP #005A
- 0x88180104, // 0056 GETMBR R6 R0 K4
- 0x8C180D06, // 0057 GETMET R6 R6 K6
- 0x58200014, // 0058 LDCONST R8 K20
- 0x7C180400, // 0059 CALL R6 2
- 0xB81A0E00, // 005A GETNGBL R6 K7
- 0x8C180D08, // 005B GETMET R6 R6 K8
- 0x60200018, // 005C GETGBL R8 G24
- 0x58240015, // 005D LDCONST R9 K21
- 0x8828010A, // 005E GETMBR R10 R0 K10
- 0x5C2C0A00, // 005F MOVE R11 R5
- 0x7C200600, // 0060 CALL R8 3
- 0x5824000B, // 0061 LDCONST R9 K11
- 0x7C180600, // 0062 CALL R6 3
- 0x500C0200, // 0063 LDBOOL R3 1 0
- 0x8C18010C, // 0064 GETMET R6 R0 K12
- 0x88200116, // 0065 GETMBR R8 R0 K22
- 0x8824010E, // 0066 GETMBR R9 R0 K14
- 0x7C180600, // 0067 CALL R6 3
- 0x70020023, // 0068 JMP #008D
- 0x54120004, // 0069 LDINT R4 5
- 0x1C100404, // 006A EQ R4 R2 R4
- 0x78120020, // 006B JMPF R4 #008D
- 0x8C100301, // 006C GETMET R4 R1 K1
- 0x58180017, // 006D LDCONST R6 K23
- 0x7C100400, // 006E CALL R4 2
- 0x88140104, // 006F GETMBR R5 R0 K4
- 0x8C140B01, // 0070 GETMET R5 R5 K1
- 0x581C0018, // 0071 LDCONST R7 K24
- 0x7C140400, // 0072 CALL R5 2
- 0x20140A04, // 0073 NE R5 R5 R4
- 0x78160013, // 0074 JMPF R5 #0089
- 0x4C140000, // 0075 LDNIL R5
- 0x20140805, // 0076 NE R5 R4 R5
- 0x78160002, // 0077 JMPF R5 #007B
- 0x88140104, // 0078 GETMBR R5 R0 K4
- 0x98163004, // 0079 SETIDX R5 K24 R4
- 0x70020003, // 007A JMP #007F
- 0x88140104, // 007B GETMBR R5 R0 K4
- 0x8C140B06, // 007C GETMET R5 R5 K6
- 0x581C0018, // 007D LDCONST R7 K24
- 0x7C140400, // 007E CALL R5 2
- 0xB8160E00, // 007F GETNGBL R5 K7
- 0x8C140B08, // 0080 GETMET R5 R5 K8
- 0x601C0018, // 0081 GETGBL R7 G24
- 0x58200019, // 0082 LDCONST R8 K25
- 0x8824010A, // 0083 GETMBR R9 R0 K10
- 0x5C280800, // 0084 MOVE R10 R4
- 0x7C1C0600, // 0085 CALL R7 3
- 0x5820000B, // 0086 LDCONST R8 K11
- 0x7C140600, // 0087 CALL R5 3
- 0x500C0200, // 0088 LDBOOL R3 1 0
- 0x8C14010C, // 0089 GETMET R5 R0 K12
- 0x881C011A, // 008A GETMBR R7 R0 K26
- 0x8820010E, // 008B GETMBR R8 R0 K14
- 0x7C140600, // 008C CALL R5 3
- 0x780E0001, // 008D JMPF R3 #0090
- 0x8C10011B, // 008E GETMET R4 R0 K27
- 0x7C100200, // 008F CALL R4 1
- 0x80000000, // 0090 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: call_sync
-********************************************************************/
-extern const bclass be_class_Matter_HTTP_remote;
-be_local_closure(class_Matter_HTTP_remote_call_sync, /* name */
- be_nested_proto(
- 16, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_HTTP_remote,
- 1, /* has constants */
- ( &(const bvalue[24]) { /* constants */
- /* K0 */ be_nested_str_weak(string),
- /* K1 */ be_nested_str_weak(webserver),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(wifi),
- /* K4 */ be_nested_str_weak(up),
- /* K5 */ be_nested_str_weak(eth),
- /* K6 */ be_nested_str_weak(current_cmd),
- /* K7 */ be_nested_str_weak(_X2Fcm_X3Fcmnd_X3D),
- /* K8 */ be_nested_str_weak(tr),
- /* K9 */ be_nested_str_weak(_X20),
- /* K10 */ be_nested_str_weak(_X2B),
- /* K11 */ be_nested_str_weak(log),
- /* K12 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20sync_X20request_X20_X27http_X3A_X2F_X2F_X25s_X3A_X25i_X25s_X27),
- /* K13 */ be_nested_str_weak(addr),
- /* K14 */ be_nested_str_weak(port),
- /* K15 */ be_const_int(3),
- /* K16 */ be_nested_str_weak(begin_sync),
- /* K17 */ be_nested_str_weak(nil),
- /* K18 */ be_const_int(0),
- /* K19 */ be_nested_str_weak(_X2E_X2E_X2E),
- /* K20 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20sync_X2Dresp_X20_X20in_X20_X25i_X20ms_X20from_X20_X25s_X3A_X20_X5B_X25i_X5D_X20_X27_X25s_X27),
- /* K21 */ be_nested_str_weak(millis),
- /* K22 */ be_nested_str_weak(time_start),
- /* K23 */ be_nested_str_weak(payload),
- }),
- be_str_weak(call_sync),
- &be_const_str_solidified,
- ( &(const binstruction[72]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
- 0xA4120200, // 0001 IMPORT R4 K1
- 0xB8160400, // 0002 GETNGBL R5 K2
- 0x8C140B03, // 0003 GETMET R5 R5 K3
- 0x7C140200, // 0004 CALL R5 1
- 0x94140B04, // 0005 GETIDX R5 R5 K4
- 0x74160006, // 0006 JMPT R5 #000E
- 0xB8160400, // 0007 GETNGBL R5 K2
- 0x8C140B05, // 0008 GETMET R5 R5 K5
- 0x7C140200, // 0009 CALL R5 1
- 0x94140B04, // 000A GETIDX R5 R5 K4
- 0x74160001, // 000B JMPT R5 #000E
- 0x4C140000, // 000C LDNIL R5
- 0x80040A00, // 000D RET 1 R5
- 0x4C140000, // 000E LDNIL R5
- 0x90020C05, // 000F SETMBR R0 K6 R5
- 0x8C140708, // 0010 GETMET R5 R3 K8
- 0x5C1C0200, // 0011 MOVE R7 R1
- 0x58200009, // 0012 LDCONST R8 K9
- 0x5824000A, // 0013 LDCONST R9 K10
- 0x7C140800, // 0014 CALL R5 4
- 0x00160E05, // 0015 ADD R5 K7 R5
- 0xB81A0400, // 0016 GETNGBL R6 K2
- 0x8C180D0B, // 0017 GETMET R6 R6 K11
- 0x60200018, // 0018 GETGBL R8 G24
- 0x5824000C, // 0019 LDCONST R9 K12
- 0x8828010D, // 001A GETMBR R10 R0 K13
- 0x882C010E, // 001B GETMBR R11 R0 K14
- 0x5C300A00, // 001C MOVE R12 R5
- 0x7C200800, // 001D CALL R8 4
- 0x5824000F, // 001E LDCONST R9 K15
- 0x7C180600, // 001F CALL R6 3
- 0x60180003, // 0020 GETGBL R6 G3
- 0x5C1C0000, // 0021 MOVE R7 R0
- 0x7C180200, // 0022 CALL R6 1
- 0x8C180D10, // 0023 GETMET R6 R6 K16
- 0x5C200A00, // 0024 MOVE R8 R5
- 0x5C240400, // 0025 MOVE R9 R2
- 0x7C180600, // 0026 CALL R6 3
- 0x781A0001, // 0027 JMPF R6 #002A
- 0x5C1C0C00, // 0028 MOVE R7 R6
- 0x70020000, // 0029 JMP #002B
- 0x581C0011, // 002A LDCONST R7 K17
- 0x6020000C, // 002B GETGBL R8 G12
- 0x5C240E00, // 002C MOVE R9 R7
- 0x7C200200, // 002D CALL R8 1
- 0x5426001D, // 002E LDINT R9 30
- 0x24201009, // 002F GT R8 R8 R9
- 0x78220004, // 0030 JMPF R8 #0036
- 0x5422001C, // 0031 LDINT R8 29
- 0x40222408, // 0032 CONNECT R8 K18 R8
- 0x94200E08, // 0033 GETIDX R8 R7 R8
- 0x00201113, // 0034 ADD R8 R8 K19
- 0x5C1C1000, // 0035 MOVE R7 R8
- 0xB8220400, // 0036 GETNGBL R8 K2
- 0x8C20110B, // 0037 GETMET R8 R8 K11
- 0x60280018, // 0038 GETGBL R10 G24
- 0x582C0014, // 0039 LDCONST R11 K20
- 0xB8320400, // 003A GETNGBL R12 K2
- 0x8C301915, // 003B GETMET R12 R12 K21
- 0x7C300200, // 003C CALL R12 1
- 0x88340116, // 003D GETMBR R13 R0 K22
- 0x0430180D, // 003E SUB R12 R12 R13
- 0x8834010D, // 003F GETMBR R13 R0 K13
- 0x6038000C, // 0040 GETGBL R14 G12
- 0x883C0117, // 0041 GETMBR R15 R0 K23
- 0x7C380200, // 0042 CALL R14 1
- 0x5C3C0E00, // 0043 MOVE R15 R7
- 0x7C280A00, // 0044 CALL R10 5
- 0x582C000F, // 0045 LDCONST R11 K15
- 0x7C200600, // 0046 CALL R8 3
- 0x80040C00, // 0047 RET 1 R6
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: event_http_finished
-********************************************************************/
-extern const bclass be_class_Matter_HTTP_remote;
-be_local_closure(class_Matter_HTTP_remote_event_http_finished, /* name */
- be_nested_proto(
- 10, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_HTTP_remote,
- 1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(current_cmd),
- /* K1 */ be_nested_str_weak(payload),
- /* K2 */ be_nested_str_weak(nil),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(_X2E_X2E_X2E),
- /* K5 */ be_nested_str_weak(tasmota),
- /* K6 */ be_nested_str_weak(log),
- /* K7 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20async_X2Dresp_X20in_X20_X25i_X20ms_X20from_X20_X25s_X3A_X20_X5B_X25i_X5D_X20_X27_X25s_X27),
- /* K8 */ be_nested_str_weak(millis),
- /* K9 */ be_nested_str_weak(time_start),
- /* K10 */ be_nested_str_weak(addr),
- /* K11 */ be_const_int(3),
- /* K12 */ be_nested_str_weak(dispatch_cb),
- /* K13 */ be_nested_str_weak(http_status),
- }),
- be_str_weak(event_http_finished),
- &be_const_str_solidified,
- ( &(const binstruction[45]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x4C080000, // 0001 LDNIL R2
- 0x1C040202, // 0002 EQ R1 R1 R2
- 0x78060000, // 0003 JMPF R1 #0005
- 0x80000200, // 0004 RET 0
- 0x88040101, // 0005 GETMBR R1 R0 K1
- 0x4C080000, // 0006 LDNIL R2
- 0x20040202, // 0007 NE R1 R1 R2
- 0x78060001, // 0008 JMPF R1 #000B
- 0x88040101, // 0009 GETMBR R1 R0 K1
- 0x70020000, // 000A JMP #000C
- 0x58040002, // 000B LDCONST R1 K2
- 0x6008000C, // 000C GETGBL R2 G12
- 0x5C0C0200, // 000D MOVE R3 R1
- 0x7C080200, // 000E CALL R2 1
- 0x540E001D, // 000F LDINT R3 30
- 0x24080403, // 0010 GT R2 R2 R3
- 0x780A0004, // 0011 JMPF R2 #0017
- 0x540A001C, // 0012 LDINT R2 29
- 0x400A0602, // 0013 CONNECT R2 K3 R2
- 0x94080202, // 0014 GETIDX R2 R1 R2
- 0x00080504, // 0015 ADD R2 R2 K4
- 0x5C040400, // 0016 MOVE R1 R2
- 0xB80A0A00, // 0017 GETNGBL R2 K5
- 0x8C080506, // 0018 GETMET R2 R2 K6
- 0x60100018, // 0019 GETGBL R4 G24
- 0x58140007, // 001A LDCONST R5 K7
- 0xB81A0A00, // 001B GETNGBL R6 K5
- 0x8C180D08, // 001C GETMET R6 R6 K8
- 0x7C180200, // 001D CALL R6 1
- 0x881C0109, // 001E GETMBR R7 R0 K9
- 0x04180C07, // 001F SUB R6 R6 R7
- 0x881C010A, // 0020 GETMBR R7 R0 K10
- 0x6020000C, // 0021 GETGBL R8 G12
- 0x88240101, // 0022 GETMBR R9 R0 K1
- 0x7C200200, // 0023 CALL R8 1
- 0x5C240200, // 0024 MOVE R9 R1
- 0x7C100A00, // 0025 CALL R4 5
- 0x5814000B, // 0026 LDCONST R5 K11
- 0x7C080600, // 0027 CALL R2 3
- 0x8C08010C, // 0028 GETMET R2 R0 K12
- 0x8810010D, // 0029 GETMBR R4 R0 K13
- 0x88140101, // 002A GETMBR R5 R0 K1
- 0x7C080600, // 002B CALL R2 3
- 0x80000000, // 002C RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_last_seen
-********************************************************************/
-extern const bclass be_class_Matter_HTTP_remote;
-be_local_closure(class_Matter_HTTP_remote_web_last_seen, /* name */
- be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_HTTP_remote,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(reachable_utc),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(rtc_utc),
- /* K4 */ be_nested_str_weak(matter),
- /* K5 */ be_nested_str_weak(seconds_to_dhm),
- }),
- be_str_weak(web_last_seen),
- &be_const_str_solidified,
- ( &(const binstruction[17]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x5409FFFE, // 0001 LDINT R2 -1
- 0x880C0101, // 0002 GETMBR R3 R0 K1
- 0x4C100000, // 0003 LDNIL R4
- 0x200C0604, // 0004 NE R3 R3 R4
- 0x780E0005, // 0005 JMPF R3 #000C
- 0xB80E0400, // 0006 GETNGBL R3 K2
- 0x8C0C0703, // 0007 GETMET R3 R3 K3
- 0x7C0C0200, // 0008 CALL R3 1
- 0x88100101, // 0009 GETMBR R4 R0 K1
- 0x040C0604, // 000A SUB R3 R3 R4
- 0x5C080600, // 000B MOVE R2 R3
- 0xB80E0800, // 000C GETNGBL R3 K4
- 0x8C0C0705, // 000D GETMET R3 R3 K5
- 0x5C140400, // 000E MOVE R5 R2
- 0x7C0C0400, // 000F CALL R3 2
- 0x80040600, // 0010 RET 1 R3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: event_http_failed
-********************************************************************/
-extern const bclass be_class_Matter_HTTP_remote;
-be_local_closure(class_Matter_HTTP_remote_event_http_failed, /* name */
- be_nested_proto(
- 5, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_HTTP_remote,
- 1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(current_cmd),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(log),
- /* K3 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20failed),
- /* K4 */ be_const_int(3),
- /* K5 */ be_nested_str_weak(dispatch_cb),
- /* K6 */ be_nested_str_weak(http_status),
- }),
- be_str_weak(event_http_failed),
- &be_const_str_solidified,
- ( &(const binstruction[15]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x4C080000, // 0001 LDNIL R2
- 0x1C040202, // 0002 EQ R1 R1 R2
- 0x78060000, // 0003 JMPF R1 #0005
- 0x80000200, // 0004 RET 0
- 0xB8060200, // 0005 GETNGBL R1 K1
- 0x8C040302, // 0006 GETMET R1 R1 K2
- 0x580C0003, // 0007 LDCONST R3 K3
- 0x58100004, // 0008 LDCONST R4 K4
- 0x7C040600, // 0009 CALL R1 3
- 0x8C040105, // 000A GETMET R1 R0 K5
- 0x880C0106, // 000B GETMBR R3 R0 K6
- 0x4C100000, // 000C LDNIL R4
- 0x7C040600, // 000D CALL R1 3
- 0x80000000, // 000E RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_status_response
-********************************************************************/
-extern const bclass be_class_Matter_HTTP_remote;
-be_local_closure(class_Matter_HTTP_remote_parse_status_response, /* name */
- be_nested_proto(
- 11, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_HTTP_remote,
- 1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(device_is_alive),
- /* K2 */ be_nested_str_weak(json),
- /* K3 */ be_nested_str_weak(load),
- /* K4 */ be_nested_str_weak(contains),
- /* K5 */ be_nested_str_weak(Status),
- /* K6 */ be_nested_str_weak(StatusFWR),
- /* K7 */ be_const_int(2),
- /* K8 */ be_nested_str_weak(StatusNET),
- /* K9 */ be_nested_str_weak(parse_update),
- }),
- be_str_weak(parse_status_response),
- &be_const_str_solidified,
- ( &(const binstruction[39]) { /* code */
- 0x4C100000, // 0000 LDNIL R4
- 0x20100204, // 0001 NE R4 R1 R4
- 0x78120022, // 0002 JMPF R4 #0026
- 0x24100300, // 0003 GT R4 R1 K0
- 0x78120020, // 0004 JMPF R4 #0026
- 0x8C100101, // 0005 GETMET R4 R0 K1
- 0x50180200, // 0006 LDBOOL R6 1 0
- 0x7C100400, // 0007 CALL R4 2
- 0xA4120400, // 0008 IMPORT R4 K2
- 0x8C140903, // 0009 GETMET R5 R4 K3
- 0x5C1C0400, // 000A MOVE R7 R2
- 0x7C140400, // 000B CALL R5 2
- 0x4C180000, // 000C LDNIL R6
- 0x78160017, // 000D JMPF R5 #0026
- 0x8C1C0B04, // 000E GETMET R7 R5 K4
- 0x58240005, // 000F LDCONST R9 K5
- 0x7C1C0400, // 0010 CALL R7 2
- 0x781E0002, // 0011 JMPF R7 #0015
- 0x94140B05, // 0012 GETIDX R5 R5 K5
- 0x58180000, // 0013 LDCONST R6 K0
- 0x7002000C, // 0014 JMP #0022
- 0x8C1C0B04, // 0015 GETMET R7 R5 K4
- 0x58240006, // 0016 LDCONST R9 K6
- 0x7C1C0400, // 0017 CALL R7 2
- 0x781E0002, // 0018 JMPF R7 #001C
- 0x94140B06, // 0019 GETIDX R5 R5 K6
- 0x58180007, // 001A LDCONST R6 K7
- 0x70020005, // 001B JMP #0022
- 0x8C1C0B04, // 001C GETMET R7 R5 K4
- 0x58240008, // 001D LDCONST R9 K8
- 0x7C1C0400, // 001E CALL R7 2
- 0x781E0001, // 001F JMPF R7 #0022
- 0x94140B08, // 0020 GETIDX R5 R5 K8
- 0x541A0004, // 0021 LDINT R6 5
- 0x8C1C0109, // 0022 GETMET R7 R0 K9
- 0x5C240A00, // 0023 MOVE R9 R5
- 0x5C280C00, // 0024 MOVE R10 R6
- 0x7C1C0600, // 0025 CALL R7 3
- 0x80000000, // 0026 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_info
-********************************************************************/
-extern const bclass be_class_Matter_HTTP_remote;
-be_local_closure(class_Matter_HTTP_remote_get_info, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_HTTP_remote,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(info),
- }),
- be_str_weak(get_info),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: event_http_timeout
-********************************************************************/
-extern const bclass be_class_Matter_HTTP_remote;
-be_local_closure(class_Matter_HTTP_remote_event_http_timeout, /* name */
- be_nested_proto(
- 10, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_HTTP_remote,
- 1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(current_cmd),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(log),
- /* K3 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20timeout_X20http_status_X3D_X25i_X20phase_X3D_X25i_X20tcp_status_X3D_X25i_X20size_payload_X3D_X25i),
- /* K4 */ be_nested_str_weak(http_status),
- /* K5 */ be_nested_str_weak(phase),
- /* K6 */ be_nested_str_weak(status),
- /* K7 */ be_nested_str_weak(payload),
- /* K8 */ be_const_int(3),
- /* K9 */ be_nested_str_weak(dispatch_cb),
- }),
- be_str_weak(event_http_timeout),
- &be_const_str_solidified,
- ( &(const binstruction[23]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x4C080000, // 0001 LDNIL R2
- 0x1C040202, // 0002 EQ R1 R1 R2
- 0x78060000, // 0003 JMPF R1 #0005
- 0x80000200, // 0004 RET 0
- 0xB8060200, // 0005 GETNGBL R1 K1
- 0x8C040302, // 0006 GETMET R1 R1 K2
- 0x600C0018, // 0007 GETGBL R3 G24
- 0x58100003, // 0008 LDCONST R4 K3
- 0x88140104, // 0009 GETMBR R5 R0 K4
- 0x88180105, // 000A GETMBR R6 R0 K5
- 0x881C0106, // 000B GETMBR R7 R0 K6
- 0x6020000C, // 000C GETGBL R8 G12
- 0x88240107, // 000D GETMBR R9 R0 K7
- 0x7C200200, // 000E CALL R8 1
- 0x7C0C0A00, // 000F CALL R3 5
- 0x58100008, // 0010 LDCONST R4 K8
- 0x7C040600, // 0011 CALL R1 3
- 0x8C040109, // 0012 GETMET R1 R0 K9
- 0x880C0104, // 0013 GETMBR R3 R0 K4
- 0x4C100000, // 0014 LDNIL R4
- 0x7C040600, // 0015 CALL R1 3
- 0x80000000, // 0016 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: info_changed
-********************************************************************/
-extern const bclass be_class_Matter_HTTP_remote;
-be_local_closure(class_Matter_HTTP_remote_info_changed, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_HTTP_remote,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(device),
- /* K1 */ be_nested_str_weak(save_param),
- }),
- be_str_weak(info_changed),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x80000000, // 0003 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: scheduler
-********************************************************************/
-extern const bclass be_class_Matter_HTTP_remote;
-be_local_closure(class_Matter_HTTP_remote_scheduler, /* name */
- be_nested_proto(
- 7, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_HTTP_remote,
- 1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(probe_next_timestamp_map),
- /* K1 */ be_nested_str_weak(keys),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(stop_iteration),
- /* K4 */ be_nested_str_weak(tasmota),
- /* K5 */ be_nested_str_weak(time_reached),
- /* K6 */ be_nested_str_weak(tcp_connected),
- /* K7 */ be_nested_str_weak(millis),
- /* K8 */ be_nested_str_weak(probe_update_time_map),
- /* K9 */ be_nested_str_weak(probe_async),
- }),
- be_str_weak(scheduler),
- &be_const_str_solidified,
- ( &(const binstruction[66]) { /* code */
- 0x4C040000, // 0000 LDNIL R1
- 0x60080010, // 0001 GETGBL R2 G16
- 0x880C0100, // 0002 GETMBR R3 R0 K0
- 0x8C0C0701, // 0003 GETMET R3 R3 K1
- 0x7C0C0200, // 0004 CALL R3 1
- 0x7C080200, // 0005 CALL R2 1
- 0xA802000A, // 0006 EXBLK 0 #0012
- 0x5C0C0400, // 0007 MOVE R3 R2
- 0x7C0C0000, // 0008 CALL R3 0
- 0x88100100, // 0009 GETMBR R4 R0 K0
- 0x94100803, // 000A GETIDX R4 R4 R3
- 0x1C100902, // 000B EQ R4 R4 K2
- 0x78120001, // 000C JMPF R4 #000F
- 0x5C040600, // 000D MOVE R1 R3
- 0x70020000, // 000E JMP #0010
- 0x7001FFF6, // 000F JMP #0007
- 0xA8040001, // 0010 EXBLK 1 1
- 0x70020002, // 0011 JMP #0015
- 0x58080003, // 0012 LDCONST R2 K3
- 0xAC080200, // 0013 CATCH R2 1 0
- 0xB0080000, // 0014 RAISE 2 R0 R0
- 0x4C080000, // 0015 LDNIL R2
- 0x1C080202, // 0016 EQ R2 R1 R2
- 0x780A0015, // 0017 JMPF R2 #002E
- 0x60080010, // 0018 GETGBL R2 G16
- 0x880C0100, // 0019 GETMBR R3 R0 K0
- 0x8C0C0701, // 001A GETMET R3 R3 K1
- 0x7C0C0200, // 001B CALL R3 1
- 0x7C080200, // 001C CALL R2 1
- 0xA802000C, // 001D EXBLK 0 #002B
- 0x5C0C0400, // 001E MOVE R3 R2
- 0x7C0C0000, // 001F CALL R3 0
- 0xB8120800, // 0020 GETNGBL R4 K4
- 0x8C100905, // 0021 GETMET R4 R4 K5
- 0x88180100, // 0022 GETMBR R6 R0 K0
- 0x94180C03, // 0023 GETIDX R6 R6 R3
- 0x7C100400, // 0024 CALL R4 2
- 0x78120001, // 0025 JMPF R4 #0028
- 0x5C040600, // 0026 MOVE R1 R3
- 0x70020000, // 0027 JMP #0029
- 0x7001FFF4, // 0028 JMP #001E
- 0xA8040001, // 0029 EXBLK 1 1
- 0x70020002, // 002A JMP #002E
- 0x58080003, // 002B LDCONST R2 K3
- 0xAC080200, // 002C CATCH R2 1 0
- 0xB0080000, // 002D RAISE 2 R0 R0
- 0x4C080000, // 002E LDNIL R2
- 0x1C080202, // 002F EQ R2 R1 R2
- 0x780A0000, // 0030 JMPF R2 #0032
- 0x80000400, // 0031 RET 0
- 0x88080106, // 0032 GETMBR R2 R0 K6
- 0x780A0002, // 0033 JMPF R2 #0037
- 0x88080100, // 0034 GETMBR R2 R0 K0
- 0x98080302, // 0035 SETIDX R2 R1 K2
- 0x80000400, // 0036 RET 0
- 0x88080100, // 0037 GETMBR R2 R0 K0
- 0xB80E0800, // 0038 GETNGBL R3 K4
- 0x8C0C0707, // 0039 GETMET R3 R3 K7
- 0x88140108, // 003A GETMBR R5 R0 K8
- 0x94140A01, // 003B GETIDX R5 R5 R1
- 0x7C0C0400, // 003C CALL R3 2
- 0x98080203, // 003D SETIDX R2 R1 R3
- 0x8C080109, // 003E GETMET R2 R0 K9
- 0x5C100200, // 003F MOVE R4 R1
- 0x7C080400, // 0040 CALL R2 2
- 0x80000000, // 0041 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: add_schedule
********************************************************************/
-extern const bclass be_class_Matter_HTTP_remote;
be_local_closure(class_Matter_HTTP_remote_add_schedule, /* name */
be_nested_proto(
8, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_remote,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(probe_update_time_map),
- /* K1 */ be_nested_str_weak(contains),
- /* K2 */ be_nested_str_weak(probe_next_timestamp_map),
- /* K3 */ be_nested_str_weak(matter),
- /* K4 */ be_nested_str_weak(jitter),
- /* K5 */ be_nested_str_weak(add_async_cb),
- }),
+ &be_ktab_class_Matter_HTTP_remote, /* shared constants */
be_str_weak(add_schedule),
&be_const_str_solidified,
( &(const binstruction[25]) { /* code */
@@ -892,176 +141,35 @@ be_local_closure(class_Matter_HTTP_remote_add_schedule, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: probe_async
-********************************************************************/
-extern const bclass be_class_Matter_HTTP_remote;
-be_local_closure(class_Matter_HTTP_remote_probe_async, /* name */
- be_nested_proto(
- 12, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_HTTP_remote,
- 1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_nested_str_weak(string),
- /* K1 */ be_nested_str_weak(webserver),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(wifi),
- /* K4 */ be_nested_str_weak(up),
- /* K5 */ be_nested_str_weak(eth),
- /* K6 */ be_nested_str_weak(current_cmd),
- /* K7 */ be_nested_str_weak(_X2Fcm_X3Fcmnd_X3D),
- /* K8 */ be_nested_str_weak(tr),
- /* K9 */ be_nested_str_weak(_X20),
- /* K10 */ be_nested_str_weak(_X2B),
- /* K11 */ be_nested_str_weak(log),
- /* K12 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20async_X20request_X20_X27http_X3A_X2F_X2F_X25s_X3A_X25i_X25s_X27),
- /* K13 */ be_nested_str_weak(addr),
- /* K14 */ be_nested_str_weak(port),
- /* K15 */ be_const_int(3),
- /* K16 */ be_nested_str_weak(begin),
- }),
- be_str_weak(probe_async),
- &be_const_str_solidified,
- ( &(const binstruction[35]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0xA40E0200, // 0001 IMPORT R3 K1
- 0xB8120400, // 0002 GETNGBL R4 K2
- 0x8C100903, // 0003 GETMET R4 R4 K3
- 0x7C100200, // 0004 CALL R4 1
- 0x94100904, // 0005 GETIDX R4 R4 K4
- 0x74120006, // 0006 JMPT R4 #000E
- 0xB8120400, // 0007 GETNGBL R4 K2
- 0x8C100905, // 0008 GETMET R4 R4 K5
- 0x7C100200, // 0009 CALL R4 1
- 0x94100904, // 000A GETIDX R4 R4 K4
- 0x74120001, // 000B JMPT R4 #000E
- 0x4C100000, // 000C LDNIL R4
- 0x80040800, // 000D RET 1 R4
- 0x90020C01, // 000E SETMBR R0 K6 R1
- 0x8C100508, // 000F GETMET R4 R2 K8
- 0x5C180200, // 0010 MOVE R6 R1
- 0x581C0009, // 0011 LDCONST R7 K9
- 0x5820000A, // 0012 LDCONST R8 K10
- 0x7C100800, // 0013 CALL R4 4
- 0x00120E04, // 0014 ADD R4 K7 R4
- 0xB8160400, // 0015 GETNGBL R5 K2
- 0x8C140B0B, // 0016 GETMET R5 R5 K11
- 0x601C0018, // 0017 GETGBL R7 G24
- 0x5820000C, // 0018 LDCONST R8 K12
- 0x8824010D, // 0019 GETMBR R9 R0 K13
- 0x8828010E, // 001A GETMBR R10 R0 K14
- 0x5C2C0800, // 001B MOVE R11 R4
- 0x7C1C0800, // 001C CALL R7 4
- 0x5820000F, // 001D LDCONST R8 K15
- 0x7C140600, // 001E CALL R5 3
- 0x8C140110, // 001F GETMET R5 R0 K16
- 0x5C1C0800, // 0020 MOVE R7 R4
- 0x7C140400, // 0021 CALL R5 2
- 0x80000000, // 0022 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: add_async_cb
-********************************************************************/
-extern const bclass be_class_Matter_HTTP_remote;
-be_local_closure(class_Matter_HTTP_remote_add_async_cb, /* name */
- be_nested_proto(
- 4, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_HTTP_remote,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(async_cb_map),
- }),
- be_str_weak(add_async_cb),
- &be_const_str_solidified,
- ( &(const binstruction[ 3]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x980C0202, // 0001 SETIDX R3 R1 R2
- 0x80000000, // 0002 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_info
-********************************************************************/
-extern const bclass be_class_Matter_HTTP_remote;
-be_local_closure(class_Matter_HTTP_remote_set_info, /* name */
- be_nested_proto(
- 2, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_HTTP_remote,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(info),
- }),
- be_str_weak(set_info),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x80000000, // 0001 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: dispatch_cb
********************************************************************/
-extern const bclass be_class_Matter_HTTP_remote;
be_local_closure(class_Matter_HTTP_remote_dispatch_cb, /* name */
be_nested_proto(
11, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_remote,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(async_cb_map),
- /* K2 */ be_nested_str_weak(keys),
- /* K3 */ be_nested_str_weak(current_cmd),
- /* K4 */ be_nested_str_weak(stop_iteration),
- }),
+ &be_ktab_class_Matter_HTTP_remote, /* shared constants */
be_str_weak(dispatch_cb),
&be_const_str_solidified,
( &(const binstruction[27]) { /* code */
- 0x580C0000, // 0000 LDCONST R3 K0
+ 0x580C0006, // 0000 LDCONST R3 K6
0x60100010, // 0001 GETGBL R4 G16
- 0x88140101, // 0002 GETMBR R5 R0 K1
- 0x8C140B02, // 0003 GETMET R5 R5 K2
+ 0x88140107, // 0002 GETMBR R5 R0 K7
+ 0x8C140B08, // 0003 GETMET R5 R5 K8
0x7C140200, // 0004 CALL R5 1
0x7C100200, // 0005 CALL R4 1
0xA802000F, // 0006 EXBLK 0 #0017
0x5C140800, // 0007 MOVE R5 R4
0x7C140000, // 0008 CALL R5 0
- 0x88180101, // 0009 GETMBR R6 R0 K1
+ 0x88180107, // 0009 GETMBR R6 R0 K7
0x94180C05, // 000A GETIDX R6 R6 R5
- 0x881C0103, // 000B GETMBR R7 R0 K3
+ 0x881C0109, // 000B GETMBR R7 R0 K9
0x1C1C0C07, // 000C EQ R7 R6 R7
0x741E0002, // 000D JMPT R7 #0011
0x4C1C0000, // 000E LDNIL R7
@@ -1070,10 +178,10 @@ be_local_closure(class_Matter_HTTP_remote_dispatch_cb, /* name */
0x5C1C0A00, // 0011 MOVE R7 R5
0x5C200200, // 0012 MOVE R8 R1
0x5C240400, // 0013 MOVE R9 R2
- 0x88280103, // 0014 GETMBR R10 R0 K3
+ 0x88280109, // 0014 GETMBR R10 R0 K9
0x7C1C0600, // 0015 CALL R7 3
0x7001FFEF, // 0016 JMP #0007
- 0x58100004, // 0017 LDCONST R4 K4
+ 0x5810000A, // 0017 LDCONST R4 K10
0xAC100200, // 0018 CATCH R4 1 0
0xB0080000, // 0019 RAISE 2 R0 R0
0x80000000, // 001A RET 0
@@ -1083,27 +191,618 @@ be_local_closure(class_Matter_HTTP_remote_dispatch_cb, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: get_info
+********************************************************************/
+be_local_closure(class_Matter_HTTP_remote_get_info, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_HTTP_remote, /* shared constants */
+ be_str_weak(get_info),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x8804010B, // 0000 GETMBR R1 R0 K11
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_status_http
+********************************************************************/
+be_local_closure(class_Matter_HTTP_remote_parse_status_http, /* name */
+ be_nested_proto(
+ 11, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_HTTP_remote, /* shared constants */
+ be_str_weak(parse_status_http),
+ &be_const_str_solidified,
+ ( &(const binstruction[141]) { /* code */
+ 0x500C0000, // 0000 LDBOOL R3 0 0
+ 0x1C100506, // 0001 EQ R4 R2 K6
+ 0x78120023, // 0002 JMPF R4 #0027
+ 0x8C10030C, // 0003 GETMET R4 R1 K12
+ 0x5818000D, // 0004 LDCONST R6 K13
+ 0x7C100400, // 0005 CALL R4 2
+ 0x1C14090E, // 0006 EQ R5 R4 K14
+ 0x78160000, // 0007 JMPF R5 #0009
+ 0x4C100000, // 0008 LDNIL R4
+ 0x8814010B, // 0009 GETMBR R5 R0 K11
+ 0x8C140B0C, // 000A GETMET R5 R5 K12
+ 0x581C000F, // 000B LDCONST R7 K15
+ 0x7C140400, // 000C CALL R5 2
+ 0x20140A04, // 000D NE R5 R5 R4
+ 0x78160012, // 000E JMPF R5 #0022
+ 0x4C140000, // 000F LDNIL R5
+ 0x20140805, // 0010 NE R5 R4 R5
+ 0x78160002, // 0011 JMPF R5 #0015
+ 0x8814010B, // 0012 GETMBR R5 R0 K11
+ 0x98161E04, // 0013 SETIDX R5 K15 R4
+ 0x70020003, // 0014 JMP #0019
+ 0x8814010B, // 0015 GETMBR R5 R0 K11
+ 0x8C140B10, // 0016 GETMET R5 R5 K16
+ 0x581C000F, // 0017 LDCONST R7 K15
+ 0x7C140400, // 0018 CALL R5 2
+ 0xB8162200, // 0019 GETNGBL R5 K17
+ 0x60180018, // 001A GETGBL R6 G24
+ 0x581C0012, // 001B LDCONST R7 K18
+ 0x88200113, // 001C GETMBR R8 R0 K19
+ 0x5C240800, // 001D MOVE R9 R4
+ 0x7C180600, // 001E CALL R6 3
+ 0x581C0014, // 001F LDCONST R7 K20
+ 0x7C140400, // 0020 CALL R5 2
+ 0x500C0200, // 0021 LDBOOL R3 1 0
+ 0x8C140115, // 0022 GETMET R5 R0 K21
+ 0x881C0116, // 0023 GETMBR R7 R0 K22
+ 0x88200117, // 0024 GETMBR R8 R0 K23
+ 0x7C140600, // 0025 CALL R5 3
+ 0x70020061, // 0026 JMP #0089
+ 0x1C100518, // 0027 EQ R4 R2 K24
+ 0x7812003C, // 0028 JMPF R4 #0066
+ 0x8C10030C, // 0029 GETMET R4 R1 K12
+ 0x58180019, // 002A LDCONST R6 K25
+ 0x7C100400, // 002B CALL R4 2
+ 0x8C14030C, // 002C GETMET R5 R1 K12
+ 0x581C001A, // 002D LDCONST R7 K26
+ 0x7C140400, // 002E CALL R5 2
+ 0x8818010B, // 002F GETMBR R6 R0 K11
+ 0x8C180D0C, // 0030 GETMET R6 R6 K12
+ 0x5820001B, // 0031 LDCONST R8 K27
+ 0x7C180400, // 0032 CALL R6 2
+ 0x20180C04, // 0033 NE R6 R6 R4
+ 0x781A0012, // 0034 JMPF R6 #0048
+ 0x4C180000, // 0035 LDNIL R6
+ 0x20180806, // 0036 NE R6 R4 R6
+ 0x781A0002, // 0037 JMPF R6 #003B
+ 0x8818010B, // 0038 GETMBR R6 R0 K11
+ 0x981A3604, // 0039 SETIDX R6 K27 R4
+ 0x70020003, // 003A JMP #003F
+ 0x8818010B, // 003B GETMBR R6 R0 K11
+ 0x8C180D10, // 003C GETMET R6 R6 K16
+ 0x5820001B, // 003D LDCONST R8 K27
+ 0x7C180400, // 003E CALL R6 2
+ 0xB81A2200, // 003F GETNGBL R6 K17
+ 0x601C0018, // 0040 GETGBL R7 G24
+ 0x5820001C, // 0041 LDCONST R8 K28
+ 0x88240113, // 0042 GETMBR R9 R0 K19
+ 0x5C280800, // 0043 MOVE R10 R4
+ 0x7C1C0600, // 0044 CALL R7 3
+ 0x58200014, // 0045 LDCONST R8 K20
+ 0x7C180400, // 0046 CALL R6 2
+ 0x500C0200, // 0047 LDBOOL R3 1 0
+ 0x8818010B, // 0048 GETMBR R6 R0 K11
+ 0x8C180D0C, // 0049 GETMET R6 R6 K12
+ 0x5820001D, // 004A LDCONST R8 K29
+ 0x7C180400, // 004B CALL R6 2
+ 0x20180C05, // 004C NE R6 R6 R5
+ 0x781A0012, // 004D JMPF R6 #0061
+ 0x4C180000, // 004E LDNIL R6
+ 0x20180A06, // 004F NE R6 R5 R6
+ 0x781A0002, // 0050 JMPF R6 #0054
+ 0x8818010B, // 0051 GETMBR R6 R0 K11
+ 0x981A3A05, // 0052 SETIDX R6 K29 R5
+ 0x70020003, // 0053 JMP #0058
+ 0x8818010B, // 0054 GETMBR R6 R0 K11
+ 0x8C180D10, // 0055 GETMET R6 R6 K16
+ 0x5820001D, // 0056 LDCONST R8 K29
+ 0x7C180400, // 0057 CALL R6 2
+ 0xB81A2200, // 0058 GETNGBL R6 K17
+ 0x601C0018, // 0059 GETGBL R7 G24
+ 0x5820001E, // 005A LDCONST R8 K30
+ 0x88240113, // 005B GETMBR R9 R0 K19
+ 0x5C280A00, // 005C MOVE R10 R5
+ 0x7C1C0600, // 005D CALL R7 3
+ 0x58200014, // 005E LDCONST R8 K20
+ 0x7C180400, // 005F CALL R6 2
+ 0x500C0200, // 0060 LDBOOL R3 1 0
+ 0x8C180115, // 0061 GETMET R6 R0 K21
+ 0x8820011F, // 0062 GETMBR R8 R0 K31
+ 0x88240117, // 0063 GETMBR R9 R0 K23
+ 0x7C180600, // 0064 CALL R6 3
+ 0x70020022, // 0065 JMP #0089
+ 0x54120004, // 0066 LDINT R4 5
+ 0x1C100404, // 0067 EQ R4 R2 R4
+ 0x7812001F, // 0068 JMPF R4 #0089
+ 0x8C10030C, // 0069 GETMET R4 R1 K12
+ 0x58180020, // 006A LDCONST R6 K32
+ 0x7C100400, // 006B CALL R4 2
+ 0x8814010B, // 006C GETMBR R5 R0 K11
+ 0x8C140B0C, // 006D GETMET R5 R5 K12
+ 0x581C0021, // 006E LDCONST R7 K33
+ 0x7C140400, // 006F CALL R5 2
+ 0x20140A04, // 0070 NE R5 R5 R4
+ 0x78160012, // 0071 JMPF R5 #0085
+ 0x4C140000, // 0072 LDNIL R5
+ 0x20140805, // 0073 NE R5 R4 R5
+ 0x78160002, // 0074 JMPF R5 #0078
+ 0x8814010B, // 0075 GETMBR R5 R0 K11
+ 0x98164204, // 0076 SETIDX R5 K33 R4
+ 0x70020003, // 0077 JMP #007C
+ 0x8814010B, // 0078 GETMBR R5 R0 K11
+ 0x8C140B10, // 0079 GETMET R5 R5 K16
+ 0x581C0021, // 007A LDCONST R7 K33
+ 0x7C140400, // 007B CALL R5 2
+ 0xB8162200, // 007C GETNGBL R5 K17
+ 0x60180018, // 007D GETGBL R6 G24
+ 0x581C0022, // 007E LDCONST R7 K34
+ 0x88200113, // 007F GETMBR R8 R0 K19
+ 0x5C240800, // 0080 MOVE R9 R4
+ 0x7C180600, // 0081 CALL R6 3
+ 0x581C0014, // 0082 LDCONST R7 K20
+ 0x7C140400, // 0083 CALL R5 2
+ 0x500C0200, // 0084 LDBOOL R3 1 0
+ 0x8C140115, // 0085 GETMET R5 R0 K21
+ 0x881C0123, // 0086 GETMBR R7 R0 K35
+ 0x88200117, // 0087 GETMBR R8 R0 K23
+ 0x7C140600, // 0088 CALL R5 3
+ 0x780E0001, // 0089 JMPF R3 #008C
+ 0x8C100124, // 008A GETMET R4 R0 K36
+ 0x7C100200, // 008B CALL R4 1
+ 0x80000000, // 008C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_info
+********************************************************************/
+be_local_closure(class_Matter_HTTP_remote_set_info, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_HTTP_remote, /* shared constants */
+ be_str_weak(set_info),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x90021601, // 0000 SETMBR R0 K11 R1
+ 0x80000000, // 0001 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: device_is_alive
+********************************************************************/
+be_local_closure(class_Matter_HTTP_remote_device_is_alive, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_HTTP_remote, /* shared constants */
+ be_str_weak(device_is_alive),
+ &be_const_str_solidified,
+ ( &(const binstruction[11]) { /* code */
+ 0x78060006, // 0000 JMPF R1 #0008
+ 0x50080200, // 0001 LDBOOL R2 1 0
+ 0x90024A02, // 0002 SETMBR R0 K37 R2
+ 0xB80A4E00, // 0003 GETNGBL R2 K39
+ 0x8C080528, // 0004 GETMET R2 R2 K40
+ 0x7C080200, // 0005 CALL R2 1
+ 0x90024C02, // 0006 SETMBR R0 K38 R2
+ 0x70020001, // 0007 JMP #000A
+ 0x50080000, // 0008 LDBOOL R2 0 0
+ 0x90024A02, // 0009 SETMBR R0 K37 R2
+ 0x80000000, // 000A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: event_http_finished
+********************************************************************/
+be_local_closure(class_Matter_HTTP_remote_event_http_finished, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_HTTP_remote, /* shared constants */
+ be_str_weak(event_http_finished),
+ &be_const_str_solidified,
+ ( &(const binstruction[44]) { /* code */
+ 0x88040109, // 0000 GETMBR R1 R0 K9
+ 0x4C080000, // 0001 LDNIL R2
+ 0x1C040202, // 0002 EQ R1 R1 R2
+ 0x78060000, // 0003 JMPF R1 #0005
+ 0x80000200, // 0004 RET 0
+ 0x88040129, // 0005 GETMBR R1 R0 K41
+ 0x4C080000, // 0006 LDNIL R2
+ 0x20040202, // 0007 NE R1 R1 R2
+ 0x78060001, // 0008 JMPF R1 #000B
+ 0x88040129, // 0009 GETMBR R1 R0 K41
+ 0x70020000, // 000A JMP #000C
+ 0x5804002A, // 000B LDCONST R1 K42
+ 0x6008000C, // 000C GETGBL R2 G12
+ 0x5C0C0200, // 000D MOVE R3 R1
+ 0x7C080200, // 000E CALL R2 1
+ 0x540E001D, // 000F LDINT R3 30
+ 0x24080403, // 0010 GT R2 R2 R3
+ 0x780A0004, // 0011 JMPF R2 #0017
+ 0x540A001C, // 0012 LDINT R2 29
+ 0x400A0C02, // 0013 CONNECT R2 K6 R2
+ 0x94080202, // 0014 GETIDX R2 R1 R2
+ 0x0008052B, // 0015 ADD R2 R2 K43
+ 0x5C040400, // 0016 MOVE R1 R2
+ 0xB80A2200, // 0017 GETNGBL R2 K17
+ 0x600C0018, // 0018 GETGBL R3 G24
+ 0x5810002C, // 0019 LDCONST R4 K44
+ 0xB8164E00, // 001A GETNGBL R5 K39
+ 0x8C140B2D, // 001B GETMET R5 R5 K45
+ 0x7C140200, // 001C CALL R5 1
+ 0x8818012E, // 001D GETMBR R6 R0 K46
+ 0x04140A06, // 001E SUB R5 R5 R6
+ 0x88180113, // 001F GETMBR R6 R0 K19
+ 0x601C000C, // 0020 GETGBL R7 G12
+ 0x88200129, // 0021 GETMBR R8 R0 K41
+ 0x7C1C0200, // 0022 CALL R7 1
+ 0x5C200200, // 0023 MOVE R8 R1
+ 0x7C0C0A00, // 0024 CALL R3 5
+ 0x58100014, // 0025 LDCONST R4 K20
+ 0x7C080400, // 0026 CALL R2 2
+ 0x8C08012F, // 0027 GETMET R2 R0 K47
+ 0x88100130, // 0028 GETMBR R4 R0 K48
+ 0x88140129, // 0029 GETMBR R5 R0 K41
+ 0x7C080600, // 002A CALL R2 3
+ 0x80000000, // 002B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: probe_async
+********************************************************************/
+be_local_closure(class_Matter_HTTP_remote_probe_async, /* name */
+ be_nested_proto(
+ 11, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_HTTP_remote, /* shared constants */
+ be_str_weak(probe_async),
+ &be_const_str_solidified,
+ ( &(const binstruction[34]) { /* code */
+ 0xA40A6200, // 0000 IMPORT R2 K49
+ 0xA40E6400, // 0001 IMPORT R3 K50
+ 0xB8124E00, // 0002 GETNGBL R4 K39
+ 0x8C100933, // 0003 GETMET R4 R4 K51
+ 0x7C100200, // 0004 CALL R4 1
+ 0x94100934, // 0005 GETIDX R4 R4 K52
+ 0x74120006, // 0006 JMPT R4 #000E
+ 0xB8124E00, // 0007 GETNGBL R4 K39
+ 0x8C100935, // 0008 GETMET R4 R4 K53
+ 0x7C100200, // 0009 CALL R4 1
+ 0x94100934, // 000A GETIDX R4 R4 K52
+ 0x74120001, // 000B JMPT R4 #000E
+ 0x4C100000, // 000C LDNIL R4
+ 0x80040800, // 000D RET 1 R4
+ 0x90021201, // 000E SETMBR R0 K9 R1
+ 0x8C100537, // 000F GETMET R4 R2 K55
+ 0x5C180200, // 0010 MOVE R6 R1
+ 0x581C0038, // 0011 LDCONST R7 K56
+ 0x58200039, // 0012 LDCONST R8 K57
+ 0x7C100800, // 0013 CALL R4 4
+ 0x00126C04, // 0014 ADD R4 K54 R4
+ 0xB8162200, // 0015 GETNGBL R5 K17
+ 0x60180018, // 0016 GETGBL R6 G24
+ 0x581C003A, // 0017 LDCONST R7 K58
+ 0x88200113, // 0018 GETMBR R8 R0 K19
+ 0x8824013B, // 0019 GETMBR R9 R0 K59
+ 0x5C280800, // 001A MOVE R10 R4
+ 0x7C180800, // 001B CALL R6 4
+ 0x541E0003, // 001C LDINT R7 4
+ 0x7C140400, // 001D CALL R5 2
+ 0x8C14013C, // 001E GETMET R5 R0 K60
+ 0x5C1C0800, // 001F MOVE R7 R4
+ 0x7C140400, // 0020 CALL R5 2
+ 0x80000000, // 0021 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: info_changed
+********************************************************************/
+be_local_closure(class_Matter_HTTP_remote_info_changed, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_HTTP_remote, /* shared constants */
+ be_str_weak(info_changed),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8804013D, // 0000 GETMBR R1 R0 K61
+ 0x8C04033E, // 0001 GETMET R1 R1 K62
+ 0x7C040200, // 0002 CALL R1 1
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_last_seen
+********************************************************************/
+be_local_closure(class_Matter_HTTP_remote_web_last_seen, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_HTTP_remote, /* shared constants */
+ be_str_weak(web_last_seen),
+ &be_const_str_solidified,
+ ( &(const binstruction[17]) { /* code */
+ 0xA4066400, // 0000 IMPORT R1 K50
+ 0x5409FFFE, // 0001 LDINT R2 -1
+ 0x880C0126, // 0002 GETMBR R3 R0 K38
+ 0x4C100000, // 0003 LDNIL R4
+ 0x200C0604, // 0004 NE R3 R3 R4
+ 0x780E0005, // 0005 JMPF R3 #000C
+ 0xB80E4E00, // 0006 GETNGBL R3 K39
+ 0x8C0C0728, // 0007 GETMET R3 R3 K40
+ 0x7C0C0200, // 0008 CALL R3 1
+ 0x88100126, // 0009 GETMBR R4 R0 K38
+ 0x040C0604, // 000A SUB R3 R3 R4
+ 0x5C080600, // 000B MOVE R2 R3
+ 0xB80E0600, // 000C GETNGBL R3 K3
+ 0x8C0C073F, // 000D GETMET R3 R3 K63
+ 0x5C140400, // 000E MOVE R5 R2
+ 0x7C0C0400, // 000F CALL R3 2
+ 0x80040600, // 0010 RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_HTTP_remote_init, /* name */
+ be_nested_proto(
+ 11, /* nstack */
+ 5, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 3]) {
+ be_nested_proto(
+ 10, /* nstack */
+ 3, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(parse_status_response_and_call_method),
+ /* K1 */ be_nested_str_weak(parse_status_http),
+ }),
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x680C0000, // 0000 GETUPV R3 U0
+ 0x8C0C0700, // 0001 GETMET R3 R3 K0
+ 0x5C140000, // 0002 MOVE R5 R0
+ 0x5C180200, // 0003 MOVE R6 R1
+ 0x5C1C0400, // 0004 MOVE R7 R2
+ 0x68200000, // 0005 GETUPV R8 U0
+ 0x68240000, // 0006 GETUPV R9 U0
+ 0x88241301, // 0007 GETMBR R9 R9 K1
+ 0x7C0C0C00, // 0008 CALL R3 6
+ 0x80040600, // 0009 RET 1 R3
+ })
+ ),
+ be_nested_proto(
+ 10, /* nstack */
+ 3, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(parse_status_response_and_call_method),
+ /* K1 */ be_nested_str_weak(parse_status_http),
+ }),
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x680C0000, // 0000 GETUPV R3 U0
+ 0x8C0C0700, // 0001 GETMET R3 R3 K0
+ 0x5C140000, // 0002 MOVE R5 R0
+ 0x5C180200, // 0003 MOVE R6 R1
+ 0x5C1C0400, // 0004 MOVE R7 R2
+ 0x68200000, // 0005 GETUPV R8 U0
+ 0x68240000, // 0006 GETUPV R9 U0
+ 0x88241301, // 0007 GETMBR R9 R9 K1
+ 0x7C0C0C00, // 0008 CALL R3 6
+ 0x80040600, // 0009 RET 1 R3
+ })
+ ),
+ be_nested_proto(
+ 10, /* nstack */
+ 3, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str_weak(parse_status_response_and_call_method),
+ /* K1 */ be_nested_str_weak(parse_status_http),
+ }),
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x680C0000, // 0000 GETUPV R3 U0
+ 0x8C0C0700, // 0001 GETMET R3 R3 K0
+ 0x5C140000, // 0002 MOVE R5 R0
+ 0x5C180200, // 0003 MOVE R6 R1
+ 0x5C1C0400, // 0004 MOVE R7 R2
+ 0x68200000, // 0005 GETUPV R8 U0
+ 0x68240000, // 0006 GETUPV R9 U0
+ 0x88241301, // 0007 GETMBR R9 R9 K1
+ 0x7C0C0C00, // 0008 CALL R3 6
+ 0x80040600, // 0009 RET 1 R3
+ })
+ ),
+ }),
+ 1, /* has constants */
+ &be_ktab_class_Matter_HTTP_remote, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[45]) { /* code */
+ 0x90027A01, // 0000 SETMBR R0 K61 R1
+ 0x60140013, // 0001 GETGBL R5 G19
+ 0x7C140000, // 0002 CALL R5 0
+ 0x90020005, // 0003 SETMBR R0 K0 R5
+ 0x60140013, // 0004 GETGBL R5 G19
+ 0x7C140000, // 0005 CALL R5 0
+ 0x90020405, // 0006 SETMBR R0 K2 R5
+ 0x60140013, // 0007 GETGBL R5 G19
+ 0x7C140000, // 0008 CALL R5 0
+ 0x90020E05, // 0009 SETMBR R0 K7 R5
+ 0x4C140000, // 000A LDNIL R5
+ 0x90021205, // 000B SETMBR R0 K9 R5
+ 0x50140000, // 000C LDBOOL R5 0 0
+ 0x90024A05, // 000D SETMBR R0 K37 R5
+ 0x60140003, // 000E GETGBL R5 G3
+ 0x5C180000, // 000F MOVE R6 R0
+ 0x7C140200, // 0010 CALL R5 1
+ 0x8C140B40, // 0011 GETMET R5 R5 K64
+ 0x5C1C0400, // 0012 MOVE R7 R2
+ 0x5422004F, // 0013 LDINT R8 80
+ 0x5C240600, // 0014 MOVE R9 R3
+ 0x5C280800, // 0015 MOVE R10 R4
+ 0x7C140A00, // 0016 CALL R5 5
+ 0x60140013, // 0017 GETGBL R5 G19
+ 0x7C140000, // 0018 CALL R5 0
+ 0x90021605, // 0019 SETMBR R0 K11 R5
+ 0x8814013D, // 001A GETMBR R5 R0 K61
+ 0x7816000E, // 001B JMPF R5 #002B
+ 0x8C140141, // 001C GETMET R5 R0 K65
+ 0x881C0116, // 001D GETMBR R7 R0 K22
+ 0x88200142, // 001E GETMBR R8 R0 K66
+ 0x84240000, // 001F CLOSURE R9 P0
+ 0x7C140800, // 0020 CALL R5 4
+ 0x8C140141, // 0021 GETMET R5 R0 K65
+ 0x881C011F, // 0022 GETMBR R7 R0 K31
+ 0x88200142, // 0023 GETMBR R8 R0 K66
+ 0x84240001, // 0024 CLOSURE R9 P1
+ 0x7C140800, // 0025 CALL R5 4
+ 0x8C140141, // 0026 GETMET R5 R0 K65
+ 0x881C0123, // 0027 GETMBR R7 R0 K35
+ 0x88200142, // 0028 GETMBR R8 R0 K66
+ 0x84240002, // 0029 CLOSURE R9 P2
+ 0x7C140800, // 002A CALL R5 4
+ 0xA0000000, // 002B CLOSE R0
+ 0x80000000, // 002C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: change_schedule
********************************************************************/
-extern const bclass be_class_Matter_HTTP_remote;
be_local_closure(class_Matter_HTTP_remote_change_schedule, /* name */
be_nested_proto(
7, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_HTTP_remote,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(probe_update_time_map),
- /* K1 */ be_nested_str_weak(contains),
- /* K2 */ be_nested_str_weak(probe_next_timestamp_map),
- /* K3 */ be_nested_str_weak(matter),
- /* K4 */ be_nested_str_weak(jitter),
- }),
+ &be_ktab_class_Matter_HTTP_remote, /* shared constants */
be_str_weak(change_schedule),
&be_const_str_solidified,
( &(const binstruction[14]) { /* code */
@@ -1128,162 +827,369 @@ be_local_closure(class_Matter_HTTP_remote_change_schedule, /* name */
/********************************************************************
-** Solidified function: init
+** Solidified function: parse_status_response_and_call_method
********************************************************************/
-extern const bclass be_class_Matter_HTTP_remote;
-be_local_closure(class_Matter_HTTP_remote_init, /* name */
+be_local_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method, /* name */
be_nested_proto(
- 11, /* nstack */
- 5, /* argc */
- 2, /* varg */
+ 14, /* nstack */
+ 6, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 4]) {
- be_nested_proto(
- 8, /* nstack */
- 3, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(parse_status_response),
- }),
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x680C0000, // 0000 GETUPV R3 U0
- 0x8C0C0700, // 0001 GETMET R3 R3 K0
- 0x5C140000, // 0002 MOVE R5 R0
- 0x5C180200, // 0003 MOVE R6 R1
- 0x5C1C0400, // 0004 MOVE R7 R2
- 0x7C0C0800, // 0005 CALL R3 4
- 0x80040600, // 0006 RET 1 R3
- })
- ),
- be_nested_proto(
- 8, /* nstack */
- 3, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(parse_status_response),
- }),
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x680C0000, // 0000 GETUPV R3 U0
- 0x8C0C0700, // 0001 GETMET R3 R3 K0
- 0x5C140000, // 0002 MOVE R5 R0
- 0x5C180200, // 0003 MOVE R6 R1
- 0x5C1C0400, // 0004 MOVE R7 R2
- 0x7C0C0800, // 0005 CALL R3 4
- 0x80040600, // 0006 RET 1 R3
- })
- ),
- be_nested_proto(
- 8, /* nstack */
- 3, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(parse_status_response),
- }),
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x680C0000, // 0000 GETUPV R3 U0
- 0x8C0C0700, // 0001 GETMET R3 R3 K0
- 0x5C140000, // 0002 MOVE R5 R0
- 0x5C180200, // 0003 MOVE R6 R1
- 0x5C1C0400, // 0004 MOVE R7 R2
- 0x7C0C0800, // 0005 CALL R3 4
- 0x80040600, // 0006 RET 1 R3
- })
- ),
- &be_class_Matter_HTTP_remote,
- }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(device),
- /* K1 */ be_nested_str_weak(probe_update_time_map),
- /* K2 */ be_nested_str_weak(probe_next_timestamp_map),
- /* K3 */ be_nested_str_weak(async_cb_map),
- /* K4 */ be_nested_str_weak(current_cmd),
- /* K5 */ be_nested_str_weak(reachable),
- /* K6 */ be_nested_str_weak(init),
- /* K7 */ be_nested_str_weak(info),
- /* K8 */ be_nested_str_weak(add_schedule),
- /* K9 */ be_nested_str_weak(UPDATE_CMD0),
- /* K10 */ be_nested_str_weak(UPDATE_TIME),
- /* K11 */ be_nested_str_weak(UPDATE_CMD2),
- /* K12 */ be_nested_str_weak(UPDATE_CMD5),
- }),
- be_str_weak(init),
+ &be_ktab_class_Matter_HTTP_remote, /* shared constants */
+ be_str_weak(parse_status_response_and_call_method),
&be_const_str_solidified,
- ( &(const binstruction[45]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x60140013, // 0001 GETGBL R5 G19
- 0x7C140000, // 0002 CALL R5 0
- 0x90020205, // 0003 SETMBR R0 K1 R5
- 0x60140013, // 0004 GETGBL R5 G19
- 0x7C140000, // 0005 CALL R5 0
- 0x90020405, // 0006 SETMBR R0 K2 R5
- 0x60140013, // 0007 GETGBL R5 G19
- 0x7C140000, // 0008 CALL R5 0
- 0x90020605, // 0009 SETMBR R0 K3 R5
- 0x4C140000, // 000A LDNIL R5
- 0x90020805, // 000B SETMBR R0 K4 R5
- 0x50140000, // 000C LDBOOL R5 0 0
- 0x90020A05, // 000D SETMBR R0 K5 R5
- 0x60140003, // 000E GETGBL R5 G3
- 0x5C180000, // 000F MOVE R6 R0
- 0x7C140200, // 0010 CALL R5 1
- 0x8C140B06, // 0011 GETMET R5 R5 K6
- 0x5C1C0400, // 0012 MOVE R7 R2
- 0x5422004F, // 0013 LDINT R8 80
- 0x5C240600, // 0014 MOVE R9 R3
- 0x5C280800, // 0015 MOVE R10 R4
- 0x7C140A00, // 0016 CALL R5 5
- 0x60140013, // 0017 GETGBL R5 G19
- 0x7C140000, // 0018 CALL R5 0
- 0x90020E05, // 0019 SETMBR R0 K7 R5
- 0x88140100, // 001A GETMBR R5 R0 K0
- 0x7816000E, // 001B JMPF R5 #002B
- 0x8C140108, // 001C GETMET R5 R0 K8
- 0x881C0109, // 001D GETMBR R7 R0 K9
- 0x8820010A, // 001E GETMBR R8 R0 K10
- 0x84240000, // 001F CLOSURE R9 P0
- 0x7C140800, // 0020 CALL R5 4
- 0x8C140108, // 0021 GETMET R5 R0 K8
- 0x881C010B, // 0022 GETMBR R7 R0 K11
- 0x8820010A, // 0023 GETMBR R8 R0 K10
- 0x84240001, // 0024 CLOSURE R9 P1
- 0x7C140800, // 0025 CALL R5 4
- 0x8C140108, // 0026 GETMET R5 R0 K8
- 0x881C010C, // 0027 GETMBR R7 R0 K12
- 0x8820010A, // 0028 GETMBR R8 R0 K10
- 0x84240002, // 0029 CLOSURE R9 P2
- 0x7C140800, // 002A CALL R5 4
- 0xA0000000, // 002B CLOSE R0
- 0x80000000, // 002C RET 0
+ ( &(const binstruction[57]) { /* code */
+ 0x4C180000, // 0000 LDNIL R6
+ 0x20180206, // 0001 NE R6 R1 R6
+ 0x781A0034, // 0002 JMPF R6 #0038
+ 0x24180306, // 0003 GT R6 R1 K6
+ 0x781A0032, // 0004 JMPF R6 #0038
+ 0x8C180143, // 0005 GETMET R6 R0 K67
+ 0x50200200, // 0006 LDBOOL R8 1 0
+ 0x7C180400, // 0007 CALL R6 2
+ 0x5C180400, // 0008 MOVE R6 R2
+ 0x601C0004, // 0009 GETGBL R7 G4
+ 0x5C200C00, // 000A MOVE R8 R6
+ 0x7C1C0200, // 000B CALL R7 1
+ 0x1C1C0F31, // 000C EQ R7 R7 K49
+ 0x781E0004, // 000D JMPF R7 #0013
+ 0xA41E8800, // 000E IMPORT R7 K68
+ 0x8C200F45, // 000F GETMET R8 R7 K69
+ 0x5C280C00, // 0010 MOVE R10 R6
+ 0x7C200400, // 0011 CALL R8 2
+ 0x5C181000, // 0012 MOVE R6 R8
+ 0x4C1C0000, // 0013 LDNIL R7
+ 0x4C200000, // 0014 LDNIL R8
+ 0x20200C08, // 0015 NE R8 R6 R8
+ 0x78220019, // 0016 JMPF R8 #0031
+ 0x58200006, // 0017 LDCONST R8 K6
+ 0x88240146, // 0018 GETMBR R9 R0 K70
+ 0x6028000C, // 0019 GETGBL R10 G12
+ 0x5C2C1200, // 001A MOVE R11 R9
+ 0x7C280200, // 001B CALL R10 1
+ 0x1428100A, // 001C LT R10 R8 R10
+ 0x782A000C, // 001D JMPF R10 #002B
+ 0x94281208, // 001E GETIDX R10 R9 R8
+ 0x4C2C0000, // 001F LDNIL R11
+ 0x202C140B, // 0020 NE R11 R10 R11
+ 0x782E0006, // 0021 JMPF R11 #0029
+ 0x8C2C0D01, // 0022 GETMET R11 R6 K1
+ 0x5C341400, // 0023 MOVE R13 R10
+ 0x7C2C0400, // 0024 CALL R11 2
+ 0x782E0002, // 0025 JMPF R11 #0029
+ 0x94180C0A, // 0026 GETIDX R6 R6 R10
+ 0x5C1C1000, // 0027 MOVE R7 R8
+ 0x70020001, // 0028 JMP #002B
+ 0x00201147, // 0029 ADD R8 R8 K71
+ 0x7001FFED, // 002A JMP #0019
+ 0x5C280A00, // 002B MOVE R10 R5
+ 0x5C2C0800, // 002C MOVE R11 R4
+ 0x5C300C00, // 002D MOVE R12 R6
+ 0x5C340E00, // 002E MOVE R13 R7
+ 0x7C280600, // 002F CALL R10 3
+ 0x70020006, // 0030 JMP #0038
+ 0xB8222200, // 0031 GETNGBL R8 K17
+ 0x60240018, // 0032 GETGBL R9 G24
+ 0x58280048, // 0033 LDCONST R10 K72
+ 0x5C2C0400, // 0034 MOVE R11 R2
+ 0x7C240400, // 0035 CALL R9 2
+ 0x58280014, // 0036 LDCONST R10 K20
+ 0x7C200400, // 0037 CALL R8 2
+ 0x80000000, // 0038 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: call_sync
+********************************************************************/
+be_local_closure(class_Matter_HTTP_remote_call_sync, /* name */
+ be_nested_proto(
+ 15, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_HTTP_remote, /* shared constants */
+ be_str_weak(call_sync),
+ &be_const_str_solidified,
+ ( &(const binstruction[70]) { /* code */
+ 0xA40E6200, // 0000 IMPORT R3 K49
+ 0xA4126400, // 0001 IMPORT R4 K50
+ 0xB8164E00, // 0002 GETNGBL R5 K39
+ 0x8C140B33, // 0003 GETMET R5 R5 K51
+ 0x7C140200, // 0004 CALL R5 1
+ 0x94140B34, // 0005 GETIDX R5 R5 K52
+ 0x74160006, // 0006 JMPT R5 #000E
+ 0xB8164E00, // 0007 GETNGBL R5 K39
+ 0x8C140B35, // 0008 GETMET R5 R5 K53
+ 0x7C140200, // 0009 CALL R5 1
+ 0x94140B34, // 000A GETIDX R5 R5 K52
+ 0x74160001, // 000B JMPT R5 #000E
+ 0x4C140000, // 000C LDNIL R5
+ 0x80040A00, // 000D RET 1 R5
+ 0x4C140000, // 000E LDNIL R5
+ 0x90021205, // 000F SETMBR R0 K9 R5
+ 0x8C140737, // 0010 GETMET R5 R3 K55
+ 0x5C1C0200, // 0011 MOVE R7 R1
+ 0x58200038, // 0012 LDCONST R8 K56
+ 0x58240039, // 0013 LDCONST R9 K57
+ 0x7C140800, // 0014 CALL R5 4
+ 0x00166C05, // 0015 ADD R5 K54 R5
+ 0xB81A2200, // 0016 GETNGBL R6 K17
+ 0x601C0018, // 0017 GETGBL R7 G24
+ 0x58200049, // 0018 LDCONST R8 K73
+ 0x88240113, // 0019 GETMBR R9 R0 K19
+ 0x8828013B, // 001A GETMBR R10 R0 K59
+ 0x5C2C0A00, // 001B MOVE R11 R5
+ 0x7C1C0800, // 001C CALL R7 4
+ 0x54220003, // 001D LDINT R8 4
+ 0x7C180400, // 001E CALL R6 2
+ 0x60180003, // 001F GETGBL R6 G3
+ 0x5C1C0000, // 0020 MOVE R7 R0
+ 0x7C180200, // 0021 CALL R6 1
+ 0x8C180D4A, // 0022 GETMET R6 R6 K74
+ 0x5C200A00, // 0023 MOVE R8 R5
+ 0x5C240400, // 0024 MOVE R9 R2
+ 0x7C180600, // 0025 CALL R6 3
+ 0x781A0001, // 0026 JMPF R6 #0029
+ 0x5C1C0C00, // 0027 MOVE R7 R6
+ 0x70020000, // 0028 JMP #002A
+ 0x581C002A, // 0029 LDCONST R7 K42
+ 0x6020000C, // 002A GETGBL R8 G12
+ 0x5C240E00, // 002B MOVE R9 R7
+ 0x7C200200, // 002C CALL R8 1
+ 0x5426001D, // 002D LDINT R9 30
+ 0x24201009, // 002E GT R8 R8 R9
+ 0x78220004, // 002F JMPF R8 #0035
+ 0x5422001C, // 0030 LDINT R8 29
+ 0x40220C08, // 0031 CONNECT R8 K6 R8
+ 0x94200E08, // 0032 GETIDX R8 R7 R8
+ 0x0020112B, // 0033 ADD R8 R8 K43
+ 0x5C1C1000, // 0034 MOVE R7 R8
+ 0xB8222200, // 0035 GETNGBL R8 K17
+ 0x60240018, // 0036 GETGBL R9 G24
+ 0x5828004B, // 0037 LDCONST R10 K75
+ 0xB82E4E00, // 0038 GETNGBL R11 K39
+ 0x8C2C172D, // 0039 GETMET R11 R11 K45
+ 0x7C2C0200, // 003A CALL R11 1
+ 0x8830012E, // 003B GETMBR R12 R0 K46
+ 0x042C160C, // 003C SUB R11 R11 R12
+ 0x88300113, // 003D GETMBR R12 R0 K19
+ 0x6034000C, // 003E GETGBL R13 G12
+ 0x88380129, // 003F GETMBR R14 R0 K41
+ 0x7C340200, // 0040 CALL R13 1
+ 0x5C380E00, // 0041 MOVE R14 R7
+ 0x7C240A00, // 0042 CALL R9 5
+ 0x58280014, // 0043 LDCONST R10 K20
+ 0x7C200400, // 0044 CALL R8 2
+ 0x80040C00, // 0045 RET 1 R6
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: scheduler
+********************************************************************/
+be_local_closure(class_Matter_HTTP_remote_scheduler, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_HTTP_remote, /* shared constants */
+ be_str_weak(scheduler),
+ &be_const_str_solidified,
+ ( &(const binstruction[66]) { /* code */
+ 0x4C040000, // 0000 LDNIL R1
+ 0x60080010, // 0001 GETGBL R2 G16
+ 0x880C0102, // 0002 GETMBR R3 R0 K2
+ 0x8C0C0708, // 0003 GETMET R3 R3 K8
+ 0x7C0C0200, // 0004 CALL R3 1
+ 0x7C080200, // 0005 CALL R2 1
+ 0xA802000A, // 0006 EXBLK 0 #0012
+ 0x5C0C0400, // 0007 MOVE R3 R2
+ 0x7C0C0000, // 0008 CALL R3 0
+ 0x88100102, // 0009 GETMBR R4 R0 K2
+ 0x94100803, // 000A GETIDX R4 R4 R3
+ 0x1C100906, // 000B EQ R4 R4 K6
+ 0x78120001, // 000C JMPF R4 #000F
+ 0x5C040600, // 000D MOVE R1 R3
+ 0x70020000, // 000E JMP #0010
+ 0x7001FFF6, // 000F JMP #0007
+ 0xA8040001, // 0010 EXBLK 1 1
+ 0x70020002, // 0011 JMP #0015
+ 0x5808000A, // 0012 LDCONST R2 K10
+ 0xAC080200, // 0013 CATCH R2 1 0
+ 0xB0080000, // 0014 RAISE 2 R0 R0
+ 0x4C080000, // 0015 LDNIL R2
+ 0x1C080202, // 0016 EQ R2 R1 R2
+ 0x780A0015, // 0017 JMPF R2 #002E
+ 0x60080010, // 0018 GETGBL R2 G16
+ 0x880C0102, // 0019 GETMBR R3 R0 K2
+ 0x8C0C0708, // 001A GETMET R3 R3 K8
+ 0x7C0C0200, // 001B CALL R3 1
+ 0x7C080200, // 001C CALL R2 1
+ 0xA802000C, // 001D EXBLK 0 #002B
+ 0x5C0C0400, // 001E MOVE R3 R2
+ 0x7C0C0000, // 001F CALL R3 0
+ 0xB8124E00, // 0020 GETNGBL R4 K39
+ 0x8C10094C, // 0021 GETMET R4 R4 K76
+ 0x88180102, // 0022 GETMBR R6 R0 K2
+ 0x94180C03, // 0023 GETIDX R6 R6 R3
+ 0x7C100400, // 0024 CALL R4 2
+ 0x78120001, // 0025 JMPF R4 #0028
+ 0x5C040600, // 0026 MOVE R1 R3
+ 0x70020000, // 0027 JMP #0029
+ 0x7001FFF4, // 0028 JMP #001E
+ 0xA8040001, // 0029 EXBLK 1 1
+ 0x70020002, // 002A JMP #002E
+ 0x5808000A, // 002B LDCONST R2 K10
+ 0xAC080200, // 002C CATCH R2 1 0
+ 0xB0080000, // 002D RAISE 2 R0 R0
+ 0x4C080000, // 002E LDNIL R2
+ 0x1C080202, // 002F EQ R2 R1 R2
+ 0x780A0000, // 0030 JMPF R2 #0032
+ 0x80000400, // 0031 RET 0
+ 0x8808014D, // 0032 GETMBR R2 R0 K77
+ 0x780A0002, // 0033 JMPF R2 #0037
+ 0x88080102, // 0034 GETMBR R2 R0 K2
+ 0x98080306, // 0035 SETIDX R2 R1 K6
+ 0x80000400, // 0036 RET 0
+ 0x88080102, // 0037 GETMBR R2 R0 K2
+ 0xB80E4E00, // 0038 GETNGBL R3 K39
+ 0x8C0C072D, // 0039 GETMET R3 R3 K45
+ 0x88140100, // 003A GETMBR R5 R0 K0
+ 0x94140A01, // 003B GETIDX R5 R5 R1
+ 0x7C0C0400, // 003C CALL R3 2
+ 0x98080203, // 003D SETIDX R2 R1 R3
+ 0x8C08014E, // 003E GETMET R2 R0 K78
+ 0x5C100200, // 003F MOVE R4 R1
+ 0x7C080400, // 0040 CALL R2 2
+ 0x80000000, // 0041 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: event_http_failed
+********************************************************************/
+be_local_closure(class_Matter_HTTP_remote_event_http_failed, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_HTTP_remote, /* shared constants */
+ be_str_weak(event_http_failed),
+ &be_const_str_solidified,
+ ( &(const binstruction[14]) { /* code */
+ 0x88040109, // 0000 GETMBR R1 R0 K9
+ 0x4C080000, // 0001 LDNIL R2
+ 0x1C040202, // 0002 EQ R1 R1 R2
+ 0x78060000, // 0003 JMPF R1 #0005
+ 0x80000200, // 0004 RET 0
+ 0xB8062200, // 0005 GETNGBL R1 K17
+ 0x5808004F, // 0006 LDCONST R2 K79
+ 0x580C0014, // 0007 LDCONST R3 K20
+ 0x7C040400, // 0008 CALL R1 2
+ 0x8C04012F, // 0009 GETMET R1 R0 K47
+ 0x880C0130, // 000A GETMBR R3 R0 K48
+ 0x4C100000, // 000B LDNIL R4
+ 0x7C040600, // 000C CALL R1 3
+ 0x80000000, // 000D RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: add_async_cb
+********************************************************************/
+be_local_closure(class_Matter_HTTP_remote_add_async_cb, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_HTTP_remote, /* shared constants */
+ be_str_weak(add_async_cb),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 3]) { /* code */
+ 0x880C0107, // 0000 GETMBR R3 R0 K7
+ 0x980C0202, // 0001 SETIDX R3 R1 R2
+ 0x80000000, // 0002 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: event_http_timeout
+********************************************************************/
+be_local_closure(class_Matter_HTTP_remote_event_http_timeout, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_HTTP_remote, /* shared constants */
+ be_str_weak(event_http_timeout),
+ &be_const_str_solidified,
+ ( &(const binstruction[22]) { /* code */
+ 0x88040109, // 0000 GETMBR R1 R0 K9
+ 0x4C080000, // 0001 LDNIL R2
+ 0x1C040202, // 0002 EQ R1 R1 R2
+ 0x78060000, // 0003 JMPF R1 #0005
+ 0x80000200, // 0004 RET 0
+ 0xB8062200, // 0005 GETNGBL R1 K17
+ 0x60080018, // 0006 GETGBL R2 G24
+ 0x580C0050, // 0007 LDCONST R3 K80
+ 0x88100130, // 0008 GETMBR R4 R0 K48
+ 0x88140151, // 0009 GETMBR R5 R0 K81
+ 0x88180152, // 000A GETMBR R6 R0 K82
+ 0x601C000C, // 000B GETGBL R7 G12
+ 0x88200129, // 000C GETMBR R8 R0 K41
+ 0x7C1C0200, // 000D CALL R7 1
+ 0x7C080A00, // 000E CALL R2 5
+ 0x580C0014, // 000F LDCONST R3 K20
+ 0x7C040400, // 0010 CALL R1 2
+ 0x8C04012F, // 0011 GETMET R1 R0 K47
+ 0x880C0130, // 0012 GETMBR R3 R0 K48
+ 0x4C100000, // 0013 LDNIL R4
+ 0x7C040600, // 0014 CALL R1 3
+ 0x80000000, // 0015 RET 0
})
)
);
@@ -1297,39 +1203,57 @@ extern const bclass be_class_Matter_HTTP_async;
be_local_class(Matter_HTTP_remote,
8,
&be_class_Matter_HTTP_async,
- be_nested_map(31,
+ be_nested_map(32,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(device_is_alive, -1), be_const_closure(class_Matter_HTTP_remote_device_is_alive_closure) },
- { be_const_key_weak(reachable, 21), be_const_var(5) },
- { be_const_key_weak(parse_update, -1), be_const_closure(class_Matter_HTTP_remote_parse_update_closure) },
- { be_const_key_weak(UPDATE_TIME, 7), be_const_int(5000) },
- { be_const_key_weak(web_last_seen, 30), be_const_closure(class_Matter_HTTP_remote_web_last_seen_closure) },
- { be_const_key_weak(call_sync, 4), be_const_closure(class_Matter_HTTP_remote_call_sync_closure) },
- { be_const_key_weak(change_schedule, 19), be_const_closure(class_Matter_HTTP_remote_change_schedule_closure) },
- { be_const_key_weak(device, -1), be_const_var(0) },
- { be_const_key_weak(UPDATE_CMD5, -1), be_nested_str_weak(Status_X205) },
- { be_const_key_weak(get_info, 17), be_const_closure(class_Matter_HTTP_remote_get_info_closure) },
- { be_const_key_weak(info, -1), be_const_var(7) },
- { be_const_key_weak(event_http_timeout, -1), be_const_closure(class_Matter_HTTP_remote_event_http_timeout_closure) },
- { be_const_key_weak(info_changed, -1), be_const_closure(class_Matter_HTTP_remote_info_changed_closure) },
{ be_const_key_weak(add_schedule, -1), be_const_closure(class_Matter_HTTP_remote_add_schedule_closure) },
+ { be_const_key_weak(event_http_timeout, 10), be_const_closure(class_Matter_HTTP_remote_event_http_timeout_closure) },
+ { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
+ { be_const_key_weak(add_async_cb, 31), be_const_closure(class_Matter_HTTP_remote_add_async_cb_closure) },
+ { be_const_key_weak(get_info, -1), be_const_closure(class_Matter_HTTP_remote_get_info_closure) },
+ { be_const_key_weak(info, 21), be_const_var(7) },
+ { be_const_key_weak(event_http_failed, -1), be_const_closure(class_Matter_HTTP_remote_event_http_failed_closure) },
{ be_const_key_weak(UPDATE_TIME2, -1), be_const_int(300000) },
- { be_const_key_weak(scheduler, -1), be_const_closure(class_Matter_HTTP_remote_scheduler_closure) },
- { be_const_key_weak(parse_status_response, 13), be_const_closure(class_Matter_HTTP_remote_parse_status_response_closure) },
- { be_const_key_weak(probe_async, 18), be_const_closure(class_Matter_HTTP_remote_probe_async_closure) },
- { be_const_key_weak(probe_update_time_map, -1), be_const_var(1) },
- { be_const_key_weak(reachable_utc, -1), be_const_var(6) },
- { be_const_key_weak(probe_next_timestamp_map, -1), be_const_var(2) },
- { be_const_key_weak(async_cb_map, -1), be_const_var(3) },
- { be_const_key_weak(current_cmd, -1), be_const_var(4) },
- { be_const_key_weak(set_info, -1), be_const_closure(class_Matter_HTTP_remote_set_info_closure) },
- { be_const_key_weak(dispatch_cb, -1), be_const_closure(class_Matter_HTTP_remote_dispatch_cb_closure) },
- { be_const_key_weak(UPDATE_CMD2, -1), be_nested_str_weak(Status_X202) },
- { be_const_key_weak(UPDATE_CMD0, -1), be_nested_str_weak(Status) },
- { be_const_key_weak(event_http_failed, 3), be_const_closure(class_Matter_HTTP_remote_event_http_failed_closure) },
- { be_const_key_weak(add_async_cb, 6), be_const_closure(class_Matter_HTTP_remote_add_async_cb_closure) },
- { be_const_key_weak(init, -1), be_const_closure(class_Matter_HTTP_remote_init_closure) },
+ { be_const_key_weak(set_info, 2), be_const_closure(class_Matter_HTTP_remote_set_info_closure) },
+ { be_const_key_weak(scheduler, 27), be_const_closure(class_Matter_HTTP_remote_scheduler_closure) },
+ { be_const_key_weak(web_last_seen, -1), be_const_closure(class_Matter_HTTP_remote_web_last_seen_closure) },
{ be_const_key_weak(event_http_finished, -1), be_const_closure(class_Matter_HTTP_remote_event_http_finished_closure) },
+ { be_const_key_weak(STATUS_PREFIX, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(14,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_nested_str_weak(Status),
+ be_nested_str_weak(StatusPRM),
+ be_nested_str_weak(StatusFWR),
+ be_nested_str_weak(StatusLOG),
+ be_nested_str_weak(StatusMEM),
+ be_nested_str_weak(StatusNET),
+ be_nested_str_weak(StatusMQT),
+ be_nested_str_weak(StatusTIM),
+ be_const_nil(),
+ be_nested_str_weak(StatusPTH),
+ be_nested_str_weak(StatusSNS),
+ be_nested_str_weak(StatusSTS),
+ be_nested_str_weak(StatusSTK),
+ be_nested_str_weak(StatusSHT),
+ })) ) } )) },
+ { be_const_key_weak(current_cmd, -1), be_const_var(4) },
+ { be_const_key_weak(probe_async, 7), be_const_closure(class_Matter_HTTP_remote_probe_async_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(class_Matter_HTTP_remote_init_closure) },
+ { be_const_key_weak(reachable, 1), be_const_var(5) },
+ { be_const_key_weak(probe_next_timestamp_map, -1), be_const_var(2) },
+ { be_const_key_weak(change_schedule, 15), be_const_closure(class_Matter_HTTP_remote_change_schedule_closure) },
+ { be_const_key_weak(device, 18), be_const_var(0) },
+ { be_const_key_weak(async_cb_map, -1), be_const_var(3) },
+ { be_const_key_weak(reachable_utc, -1), be_const_var(6) },
+ { be_const_key_weak(parse_status_response_and_call_method, -1), be_const_closure(class_Matter_HTTP_remote_parse_status_response_and_call_method_closure) },
+ { be_const_key_weak(UPDATE_CMD2, -1), be_nested_str_weak(Status_X202) },
+ { be_const_key_weak(probe_update_time_map, -1), be_const_var(1) },
+ { be_const_key_weak(call_sync, -1), be_const_closure(class_Matter_HTTP_remote_call_sync_closure) },
+ { be_const_key_weak(device_is_alive, 9), be_const_closure(class_Matter_HTTP_remote_device_is_alive_closure) },
+ { be_const_key_weak(info_changed, -1), be_const_closure(class_Matter_HTTP_remote_info_changed_closure) },
+ { be_const_key_weak(parse_status_http, 6), be_const_closure(class_Matter_HTTP_remote_parse_status_http_closure) },
+ { be_const_key_weak(dispatch_cb, 3), be_const_closure(class_Matter_HTTP_remote_dispatch_cb_closure) },
+ { be_const_key_weak(UPDATE_CMD5, -1), be_nested_str_weak(Status_X205) },
+ { be_const_key_weak(UPDATE_CMD0, -1), be_nested_str_weak(Status) },
})),
be_str_weak(Matter_HTTP_remote)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h
index 463f9f498..8fb88782b 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h
@@ -3,108 +3,379 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+extern const bclass be_class_Matter_IM;
+// compact class 'Matter_IM' ktab size: 203, total: 507 (saved 2432 bytes)
+static const bvalue be_ktab_class_Matter_IM[203] = {
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(WriteRequestMessage),
+ /* K2 */ be_nested_str_weak(from_TLV),
+ /* K3 */ be_nested_str_weak(Path),
+ /* K4 */ be_nested_str_weak(suppress_response),
+ /* K5 */ be_nested_str_weak(write_requests),
+ /* K6 */ be_nested_str_weak(WriteResponseMessage),
+ /* K7 */ be_nested_str_weak(write_responses),
+ /* K8 */ be_nested_str_weak(PathGenerator),
+ /* K9 */ be_nested_str_weak(device),
+ /* K10 */ be_nested_str_weak(path),
+ /* K11 */ be_nested_str_weak(data),
+ /* K12 */ be_nested_str_weak(copy),
+ /* K13 */ be_nested_str_weak(cluster),
+ /* K14 */ be_nested_str_weak(attribute),
+ /* K15 */ be_nested_str_weak(status),
+ /* K16 */ be_nested_str_weak(INVALID_ACTION),
+ /* K17 */ be_nested_str_weak(write_single_attribute_status_to_bytes),
+ /* K18 */ be_nested_str_weak(endpoint),
+ /* K19 */ be_nested_str_weak(tasmota),
+ /* K20 */ be_nested_str_weak(loglevel),
+ /* K21 */ be_const_int(3),
+ /* K22 */ be_nested_str_weak(get_attribute_name),
+ /* K23 */ be_nested_str_weak(log),
+ /* K24 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20),
+ /* K25 */ be_nested_str_weak(_X20_X28),
+ /* K26 */ be_nested_str_weak(_X29),
+ /* K27 */ be_nested_str_weak(),
+ /* K28 */ be_nested_str_weak(start),
+ /* K29 */ be_nested_str_weak(is_direct),
+ /* K30 */ be_nested_str_weak(next_attribute),
+ /* K31 */ be_nested_str_weak(msg),
+ /* K32 */ be_nested_str_weak(get_pi),
+ /* K33 */ be_nested_str_weak(UNSUPPORTED_WRITE),
+ /* K34 */ be_nested_str_weak(write_attribute),
+ /* K35 */ be_nested_str_weak(session),
+ /* K36 */ be_nested_str_weak(SUCCESS),
+ /* K37 */ be_nested_str_weak(stop_iteration),
+ /* K38 */ be_nested_str_weak(send_queue),
+ /* K39 */ be_nested_str_weak(push),
+ /* K40 */ be_nested_str_weak(IM_WriteResponse),
+ /* K41 */ be_nested_str_weak(add),
+ /* K42 */ be_const_int(1),
+ /* K43 */ be_const_int(2),
+ /* K44 */ be_const_int(355795236),
+ /* K45 */ be_nested_str_weak(path2raw),
+ /* K46 */ be_nested_str_weak(tag_sub),
+ /* K47 */ be_nested_str_weak(tlv2raw),
+ /* K48 */ be_nested_str_weak(ReadRequestMessage),
+ /* K49 */ be_nested_str_weak(fabric_filtered),
+ /* K50 */ be_nested_str_weak(attributes_requests),
+ /* K51 */ be_nested_str_weak(updates),
+ /* K52 */ be_nested_str_weak(AttributePathIB),
+ /* K53 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i),
+ /* K54 */ be_nested_str_weak(local_session_id),
+ /* K55 */ be_nested_str_weak(subscription_id),
+ /* K56 */ be_nested_str_weak(is_keep_alive),
+ /* K57 */ be_nested_str_weak(process_read_or_subscribe_request_pull),
+ /* K58 */ be_nested_str_weak(update_event_generator_array),
+ /* K59 */ be_nested_str_weak(IM_ReportDataSubscribed_Pull),
+ /* K60 */ be_nested_str_weak(_message_handler),
+ /* K61 */ be_nested_str_weak(send_enqueued),
+ /* K62 */ be_nested_str_weak(process_read_or_subscribe_request_event_pull),
+ /* K63 */ be_nested_str_weak(IM_ReportData_Pull),
+ /* K64 */ be_const_int(0),
+ /* K65 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s),
+ /* K66 */ be_nested_str_weak(TimedRequestMessage),
+ /* K67 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i),
+ /* K68 */ be_nested_str_weak(timeout),
+ /* K69 */ be_nested_str_weak(send_status),
+ /* K70 */ be_nested_str_weak(subs_shop),
+ /* K71 */ be_nested_str_weak(every_50ms),
+ /* K72 */ be_nested_str_weak(InvokeRequestMessage),
+ /* K73 */ be_nested_str_weak(invoke_requests),
+ /* K74 */ be_nested_str_weak(InvokeResponseMessage),
+ /* K75 */ be_nested_str_weak(invoke_responses),
+ /* K76 */ be_nested_str_weak(command_path),
+ /* K77 */ be_nested_str_weak(command),
+ /* K78 */ be_nested_str_weak(UNSUPPORTED_COMMAND),
+ /* K79 */ be_nested_str_weak(get_command_name),
+ /* K80 */ be_nested_str_weak(invoke_request),
+ /* K81 */ be_nested_str_weak(command_fields),
+ /* K82 */ be_nested_str_weak(_X28),
+ /* K83 */ be_nested_str_weak(_X29_X20),
+ /* K84 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s),
+ /* K85 */ be_nested_str_weak(invokeresponse2raw),
+ /* K86 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i),
+ /* K87 */ be_nested_str_weak(exchange_id),
+ /* K88 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s),
+ /* K89 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i),
+ /* K90 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i),
+ /* K91 */ be_nested_str_weak(IM_InvokeResponse),
+ /* K92 */ be_nested_str_weak(event_requests),
+ /* K93 */ be_nested_str_weak(get_node_id),
+ /* K94 */ be_nested_str_weak(parse_event_filters_min_no),
+ /* K95 */ be_nested_str_weak(event_filters),
+ /* K96 */ be_nested_str_weak(EventGenerator),
+ /* K97 */ be_nested_str_weak(event),
+ /* K98 */ be_nested_str_weak(get_event_name),
+ /* K99 */ be_nested_str_weak(_X2502X),
+ /* K100 */ be_nested_str_weak(_X2A_X2A),
+ /* K101 */ be_nested_str_weak(_X2504X),
+ /* K102 */ be_nested_str_weak(_X2A_X2A_X2A_X2A),
+ /* K103 */ be_nested_str_weak(_X20_X28_X3E_X25s_X29),
+ /* K104 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Event_X28_X256i_X29_X20_X5B_X25s_X5D_X25s_X2F_X25s_X20_X25s_X25s),
+ /* K105 */ be_nested_str_weak(finished),
+ /* K106 */ be_nested_str_weak(ready),
+ /* K107 */ be_nested_str_weak(send_im),
+ /* K108 */ be_nested_str_weak(remove_sendqueue_by_exchangeid),
+ /* K109 */ be_nested_str_weak(resp),
+ /* K110 */ be_nested_str_weak(SubscribeRequestMessage),
+ /* K111 */ be_nested_str_weak(keep_subscriptions),
+ /* K112 */ be_nested_str_weak(remove_by_session),
+ /* K113 */ be_nested_str_weak(new_subscription),
+ /* K114 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20_X25s_X20_X28min_X3D_X25i_X2C_X20max_X3D_X25i_X2C_X20keep_X3D_X25i_X29_X20sub_X3D_X25i_X20fabric_filtered_X3D_X25s),
+ /* K115 */ be_nested_str_weak(concat),
+ /* K116 */ be_nested_str_weak(_X20),
+ /* K117 */ be_nested_str_weak(min_interval),
+ /* K118 */ be_nested_str_weak(max_interval),
+ /* K119 */ be_nested_str_weak(set_event_generator_or_arr),
+ /* K120 */ be_nested_str_weak(IM_SubscribeResponse_Pull),
+ /* K121 */ be_nested_str_weak(send_encrypted_ack),
+ /* K122 */ be_nested_str_weak(time_reached),
+ /* K123 */ be_nested_str_weak(expiration),
+ /* K124 */ be_nested_str_weak(reached_timeout),
+ /* K125 */ be_nested_str_weak(remove),
+ /* K126 */ be_nested_str_weak(find_sendqueue_by_exchangeid),
+ /* K127 */ be_nested_str_weak(ack_received),
+ /* K128 */ be_nested_str_weak(get_exchangeid),
+ /* K129 */ be_nested_str_weak(TLV),
+ /* K130 */ be_nested_str_weak(AttributeStatusIB),
+ /* K131 */ be_nested_str_weak(StatusIB),
+ /* K132 */ be_nested_str_weak(MTR_X3A_X20_X3EWrite_Attr_X25s_X25s_X20_X2D_X20_X25s_X20STATUS_X3A_X200x_X2502X_X20_X25s),
+ /* K133 */ be_nested_str_weak(MTR_X3A_X20_X3EWrite_Attr_X25s_X25s_X20_X2D_X20IGNORED),
+ /* K134 */ be_nested_str_weak(IM_Subscription_Shop),
+ /* K135 */ be_nested_str_weak(read_request_solo),
+ /* K136 */ be_nested_str_weak(ReadRequestMessage_solo),
+ /* K137 */ be_nested_str_weak(invoke_request_solo),
+ /* K138 */ be_nested_str_weak(InvokeRequestMessage_solo),
+ /* K139 */ be_nested_str_weak(tlv_solo),
+ /* K140 */ be_nested_str_weak(Matter_TLV_item),
+ /* K141 */ be_nested_str_weak(expire_sendqueue),
+ /* K142 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand1_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s),
+ /* K143 */ be_const_int(354943030),
+ /* K144 */ be_const_int(405077761),
+ /* K145 */ be_nested_str_weak(build_response),
+ /* K146 */ be_nested_str_weak(message_handler),
+ /* K147 */ be_nested_str_weak(raw),
+ /* K148 */ be_nested_str_weak(clear),
+ /* K149 */ be_nested_str_weak(encode_frame),
+ /* K150 */ be_nested_str_weak(encrypt),
+ /* K151 */ be_nested_str_weak(send_response_frame),
+ /* K152 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Alive_X20_X28_X256i_X29_X20sub_X3D_X25s),
+ /* K153 */ be_nested_str_weak(IM_SubscribedHeartbeat),
+ /* K154 */ be_nested_str_weak(resolve_attribute_read_solo),
+ /* K155 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
+ /* K156 */ be_nested_str_weak(read_attribute),
+ /* K157 */ be_nested_str_weak(is_list),
+ /* K158 */ be_nested_str_weak(is_array),
+ /* K159 */ be_nested_str_weak(encode_len),
+ /* K160 */ be_nested_str_weak(MAX_MESSAGE),
+ /* K161 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Response_X20to_X20big_X2C_X20revert_X20to_X20non_X2Dsolo),
+ /* K162 */ be_nested_str_weak(parse),
+ /* K163 */ be_nested_str_weak(app_payload_idx),
+ /* K164 */ be_nested_str_weak(process_read_request_pull),
+ /* K165 */ be_nested_str_weak(attributedata2raw),
+ /* K166 */ be_nested_str_weak(attributestatus2raw),
+ /* K167 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X20_X2D_X20IGNORED),
+ /* K168 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s),
+ /* K169 */ be_nested_str_weak(message_counter),
+ /* K170 */ be_nested_str_weak(ack_message_counter),
+ /* K171 */ be_nested_str_weak(to_str_val),
+ /* K172 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s),
+ /* K173 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s),
+ /* K174 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED),
+ /* K175 */ be_const_class(be_class_Matter_IM),
+ /* K176 */ be_nested_str_weak(int64),
+ /* K177 */ be_nested_str_weak(toint64),
+ /* K178 */ be_nested_str_weak(node),
+ /* K179 */ be_nested_str_weak(tobytes),
+ /* K180 */ be_nested_str_weak(MTR_X3A_X20node_id_X20filter_X20_X25s_X20doesn_X27t_X20match_X20_X25s),
+ /* K181 */ be_nested_str_weak(tohex),
+ /* K182 */ be_nested_str_weak(event_min),
+ /* K183 */ be_nested_str_weak(findsubval),
+ /* K184 */ be_nested_str_weak(status_ok_received),
+ /* K185 */ be_nested_str_weak(MTR_X3A_X20_X3EOK_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i_X20not_X20found),
+ /* K186 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X),
+ /* K187 */ be_nested_str_weak(status_error_received),
+ /* K188 */ be_nested_str_weak(Matter_TLV_array),
+ /* K189 */ be_nested_str_weak(val),
+ /* K190 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s),
+ /* K191 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s),
+ /* K192 */ be_nested_str_weak(IM_Status),
+ /* K193 */ be_nested_str_weak(opcode),
+ /* K194 */ be_nested_str_weak(from_raw),
+ /* K195 */ be_nested_str_weak(process_read_request_solo),
+ /* K196 */ be_nested_str_weak(process_invoke_request_solo),
+ /* K197 */ be_nested_str_weak(process_status_response),
+ /* K198 */ be_nested_str_weak(send_ack_now),
+ /* K199 */ be_nested_str_weak(subscribe_request),
+ /* K200 */ be_nested_str_weak(process_write_request),
+ /* K201 */ be_nested_str_weak(process_invoke_request),
+ /* K202 */ be_nested_str_weak(process_timed_request),
+};
+
extern const bclass be_class_Matter_IM;
/********************************************************************
-** Solidified function: every_250ms
+** Solidified function: process_write_request
********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_every_250ms, /* name */
+be_local_closure(class_Matter_IM_process_write_request, /* name */
be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_IM,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(subs_shop),
- /* K1 */ be_nested_str_weak(every_250ms),
- }),
- be_str_weak(every_250ms),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x80000000, // 0003 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: process_incoming_ack
-********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_process_incoming_ack, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_IM,
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(find_sendqueue_by_exchangeid),
- /* K1 */ be_nested_str_weak(exchange_id),
- /* K2 */ be_nested_str_weak(ack_received),
- }),
- be_str_weak(process_incoming_ack),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
- 0x88100301, // 0001 GETMBR R4 R1 K1
- 0x7C080400, // 0002 CALL R2 2
- 0x780A0003, // 0003 JMPF R2 #0008
- 0x8C0C0502, // 0004 GETMET R3 R2 K2
- 0x5C140200, // 0005 MOVE R5 R1
- 0x7C0C0400, // 0006 CALL R3 2
- 0x80040600, // 0007 RET 1 R3
- 0x500C0000, // 0008 LDBOOL R3 0 0
- 0x80040600, // 0009 RET 1 R3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: subscribe_response
-********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_subscribe_response, /* name */
- be_nested_proto(
- 6, /* nstack */
+ 21, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(SubscribeResponseMessage),
- /* K2 */ be_nested_str_weak(from_TLV),
- }),
- be_str_weak(subscribe_response),
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(process_write_request),
&be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
+ ( &(const binstruction[145]) { /* code */
0xB80E0000, // 0000 GETNGBL R3 K0
0x8C0C0701, // 0001 GETMET R3 R3 K1
0x7C0C0200, // 0002 CALL R3 1
0x8C0C0702, // 0003 GETMET R3 R3 K2
0x5C140400, // 0004 MOVE R5 R2
0x7C0C0400, // 0005 CALL R3 2
- 0x50100000, // 0006 LDBOOL R4 0 0
- 0x80040800, // 0007 RET 1 R4
+ 0xB8120000, // 0006 GETNGBL R4 K0
+ 0x8C100903, // 0007 GETMET R4 R4 K3
+ 0x7C100200, // 0008 CALL R4 1
+ 0x88140704, // 0009 GETMBR R5 R3 K4
+ 0x88180705, // 000A GETMBR R6 R3 K5
+ 0x4C1C0000, // 000B LDNIL R7
+ 0x20180C07, // 000C NE R6 R6 R7
+ 0x781A0080, // 000D JMPF R6 #008F
+ 0xB81A0000, // 000E GETNGBL R6 K0
+ 0x8C180D06, // 000F GETMET R6 R6 K6
+ 0x7C180200, // 0010 CALL R6 1
+ 0x601C0012, // 0011 GETGBL R7 G18
+ 0x7C1C0000, // 0012 CALL R7 0
+ 0x901A0E07, // 0013 SETMBR R6 K7 R7
+ 0xB81E0000, // 0014 GETNGBL R7 K0
+ 0x8C1C0F08, // 0015 GETMET R7 R7 K8
+ 0x88240109, // 0016 GETMBR R9 R0 K9
+ 0x7C1C0400, // 0017 CALL R7 2
+ 0x60200010, // 0018 GETGBL R8 G16
+ 0x88240705, // 0019 GETMBR R9 R3 K5
+ 0x7C200200, // 001A CALL R8 1
+ 0xA8020065, // 001B EXBLK 0 #0082
+ 0x5C241000, // 001C MOVE R9 R8
+ 0x7C240000, // 001D CALL R9 0
+ 0x8828130A, // 001E GETMBR R10 R9 K10
+ 0x882C130B, // 001F GETMBR R11 R9 K11
+ 0x8C30090C, // 0020 GETMET R12 R4 K12
+ 0x5C381400, // 0021 MOVE R14 R10
+ 0x7C300400, // 0022 CALL R12 2
+ 0x8830150D, // 0023 GETMBR R12 R10 K13
+ 0x4C340000, // 0024 LDNIL R13
+ 0x1C30180D, // 0025 EQ R12 R12 R13
+ 0x74320003, // 0026 JMPT R12 #002B
+ 0x8830150E, // 0027 GETMBR R12 R10 K14
+ 0x4C340000, // 0028 LDNIL R13
+ 0x1C30180D, // 0029 EQ R12 R12 R13
+ 0x78320008, // 002A JMPF R12 #0034
+ 0xB8320000, // 002B GETNGBL R12 K0
+ 0x88301910, // 002C GETMBR R12 R12 K16
+ 0x90121E0C, // 002D SETMBR R4 K15 R12
+ 0x8C300111, // 002E GETMET R12 R0 K17
+ 0x5C380C00, // 002F MOVE R14 R6
+ 0x5C3C0800, // 0030 MOVE R15 R4
+ 0x4C400000, // 0031 LDNIL R16
+ 0x7C300800, // 0032 CALL R12 4
+ 0x7001FFE7, // 0033 JMP #001C
+ 0x88301512, // 0034 GETMBR R12 R10 K18
+ 0x4C340000, // 0035 LDNIL R13
+ 0x1C30180D, // 0036 EQ R12 R12 R13
+ 0x78320016, // 0037 JMPF R12 #004F
+ 0xB8322600, // 0038 GETNGBL R12 K19
+ 0x8C301914, // 0039 GETMET R12 R12 K20
+ 0x58380015, // 003A LDCONST R14 K21
+ 0x7C300400, // 003B CALL R12 2
+ 0x78320011, // 003C JMPF R12 #004F
+ 0xB8320000, // 003D GETNGBL R12 K0
+ 0x8C301916, // 003E GETMET R12 R12 K22
+ 0x8838150D, // 003F GETMBR R14 R10 K13
+ 0x883C150E, // 0040 GETMBR R15 R10 K14
+ 0x7C300600, // 0041 CALL R12 3
+ 0xB8362E00, // 0042 GETNGBL R13 K23
+ 0x60380008, // 0043 GETGBL R14 G8
+ 0x5C3C0800, // 0044 MOVE R15 R4
+ 0x7C380200, // 0045 CALL R14 1
+ 0x003A300E, // 0046 ADD R14 K24 R14
+ 0x78320002, // 0047 JMPF R12 #004B
+ 0x003E320C, // 0048 ADD R15 K25 R12
+ 0x003C1F1A, // 0049 ADD R15 R15 K26
+ 0x70020000, // 004A JMP #004C
+ 0x583C001B, // 004B LDCONST R15 K27
+ 0x00381C0F, // 004C ADD R14 R14 R15
+ 0x583C0015, // 004D LDCONST R15 K21
+ 0x7C340400, // 004E CALL R13 2
+ 0x8C300F1C, // 004F GETMET R12 R7 K28
+ 0x88381512, // 0050 GETMBR R14 R10 K18
+ 0x883C150D, // 0051 GETMBR R15 R10 K13
+ 0x8840150E, // 0052 GETMBR R16 R10 K14
+ 0x7C300800, // 0053 CALL R12 4
+ 0x8C300F1D, // 0054 GETMET R12 R7 K29
+ 0x7C300200, // 0055 CALL R12 1
+ 0x4C340000, // 0056 LDNIL R13
+ 0x8C380F1E, // 0057 GETMET R14 R7 K30
+ 0x7C380200, // 0058 CALL R14 1
+ 0x5C341C00, // 0059 MOVE R13 R14
+ 0x783A0025, // 005A JMPF R14 #0081
+ 0x90363E01, // 005B SETMBR R13 K31 R1
+ 0x88381B0F, // 005C GETMBR R14 R13 K15
+ 0x4C3C0000, // 005D LDNIL R15
+ 0x20381C0F, // 005E NE R14 R14 R15
+ 0x783A0007, // 005F JMPF R14 #0068
+ 0x4C380000, // 0060 LDNIL R14
+ 0x90361E0E, // 0061 SETMBR R13 K15 R14
+ 0x8C380111, // 0062 GETMET R14 R0 K17
+ 0x5C400C00, // 0063 MOVE R16 R6
+ 0x5C441A00, // 0064 MOVE R17 R13
+ 0x5C481600, // 0065 MOVE R18 R11
+ 0x7C380800, // 0066 CALL R14 4
+ 0x70020017, // 0067 JMP #0080
+ 0x8C380F20, // 0068 GETMET R14 R7 K32
+ 0x7C380200, // 0069 CALL R14 1
+ 0xB83E0000, // 006A GETNGBL R15 K0
+ 0x883C1F21, // 006B GETMBR R15 R15 K33
+ 0x90361E0F, // 006C SETMBR R13 K15 R15
+ 0x4C3C0000, // 006D LDNIL R15
+ 0x203C1C0F, // 006E NE R15 R14 R15
+ 0x783E0005, // 006F JMPF R15 #0076
+ 0x8C3C1D22, // 0070 GETMET R15 R14 K34
+ 0x88440323, // 0071 GETMBR R17 R1 K35
+ 0x5C481A00, // 0072 MOVE R18 R13
+ 0x5C4C1600, // 0073 MOVE R19 R11
+ 0x7C3C0800, // 0074 CALL R15 4
+ 0x70020000, // 0075 JMP #0077
+ 0x4C3C0000, // 0076 LDNIL R15
+ 0x783E0002, // 0077 JMPF R15 #007B
+ 0xB8420000, // 0078 GETNGBL R16 K0
+ 0x88402124, // 0079 GETMBR R16 R16 K36
+ 0x90361E10, // 007A SETMBR R13 K15 R16
+ 0x8C400111, // 007B GETMET R16 R0 K17
+ 0x5C480C00, // 007C MOVE R18 R6
+ 0x5C4C1A00, // 007D MOVE R19 R13
+ 0x5C501600, // 007E MOVE R20 R11
+ 0x7C400800, // 007F CALL R16 4
+ 0x7001FFD5, // 0080 JMP #0057
+ 0x7001FF99, // 0081 JMP #001C
+ 0x58200025, // 0082 LDCONST R8 K37
+ 0xAC200200, // 0083 CATCH R8 1 0
+ 0xB0080000, // 0084 RAISE 2 R0 R0
+ 0x5C200A00, // 0085 MOVE R8 R5
+ 0x74220007, // 0086 JMPT R8 #008F
+ 0x88200126, // 0087 GETMBR R8 R0 K38
+ 0x8C201127, // 0088 GETMET R8 R8 K39
+ 0xB82A0000, // 0089 GETNGBL R10 K0
+ 0x8C281528, // 008A GETMET R10 R10 K40
+ 0x5C300200, // 008B MOVE R12 R1
+ 0x5C340C00, // 008C MOVE R13 R6
+ 0x7C280600, // 008D CALL R10 3
+ 0x7C200400, // 008E CALL R8 2
+ 0x50180200, // 008F LDBOOL R6 1 0
+ 0x80040C00, // 0090 RET 1 R6
})
)
);
@@ -112,181 +383,129 @@ be_local_closure(class_Matter_IM_subscribe_response, /* name */
/********************************************************************
-** Solidified function: process_write_response
+** Solidified function: path2raw
********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_process_write_response, /* name */
+be_local_closure(class_Matter_IM_path2raw, /* name */
be_nested_proto(
- 6, /* nstack */
- 3, /* argc */
- 2, /* varg */
+ 9, /* nstack */
+ 5, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(WriteResponseMessage),
- /* K2 */ be_nested_str_weak(from_TLV),
- }),
- be_str_weak(process_write_response),
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(path2raw),
&be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x7C0C0200, // 0002 CALL R3 1
- 0x8C0C0702, // 0003 GETMET R3 R3 K2
- 0x5C140400, // 0004 MOVE R5 R2
- 0x7C0C0400, // 0005 CALL R3 2
- 0x50100000, // 0006 LDBOOL R4 0 0
- 0x80040800, // 0007 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: process_status_response
-********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_process_status_response, /* name */
- be_nested_proto(
- 11, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_IM,
- 1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
- /* K0 */ be_nested_str_weak(findsubval),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(find_sendqueue_by_exchangeid),
- /* K3 */ be_nested_str_weak(exchange_id),
- /* K4 */ be_nested_str_weak(matter),
- /* K5 */ be_nested_str_weak(SUCCESS),
- /* K6 */ be_nested_str_weak(status_ok_received),
- /* K7 */ be_nested_str_weak(tasmota),
- /* K8 */ be_nested_str_weak(log),
- /* K9 */ be_nested_str_weak(MTR_X3A_X20_X3EOK_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i_X20not_X20found),
- /* K10 */ be_nested_str_weak(session),
- /* K11 */ be_nested_str_weak(local_session_id),
- /* K12 */ be_nested_str_weak(MTR_X3A_X20_X3EStatus_X20_X20_X20_X20ERROR_X20_X3D_X200x_X2502X),
- /* K13 */ be_const_int(3),
- /* K14 */ be_nested_str_weak(status_error_received),
- /* K15 */ be_nested_str_weak(remove_sendqueue_by_exchangeid),
- }),
- be_str_weak(process_status_response),
- &be_const_str_solidified,
- ( &(const binstruction[45]) { /* code */
- 0x8C0C0500, // 0000 GETMET R3 R2 K0
- 0x58140001, // 0001 LDCONST R5 K1
- 0x541A00FE, // 0002 LDINT R6 255
- 0x7C0C0600, // 0003 CALL R3 3
- 0x8C100102, // 0004 GETMET R4 R0 K2
- 0x88180303, // 0005 GETMBR R6 R1 K3
- 0x7C100400, // 0006 CALL R4 2
- 0xB8160800, // 0007 GETNGBL R5 K4
- 0x88140B05, // 0008 GETMBR R5 R5 K5
- 0x1C140605, // 0009 EQ R5 R3 R5
- 0x78160010, // 000A JMPF R5 #001C
- 0x78120004, // 000B JMPF R4 #0011
- 0x8C140906, // 000C GETMET R5 R4 K6
- 0x5C1C0200, // 000D MOVE R7 R1
- 0x7C140400, // 000E CALL R5 2
- 0x80040A00, // 000F RET 1 R5
- 0x70020009, // 0010 JMP #001B
- 0xB8160E00, // 0011 GETNGBL R5 K7
- 0x8C140B08, // 0012 GETMET R5 R5 K8
- 0x601C0018, // 0013 GETGBL R7 G24
- 0x58200009, // 0014 LDCONST R8 K9
- 0x8824030A, // 0015 GETMBR R9 R1 K10
- 0x8824130B, // 0016 GETMBR R9 R9 K11
- 0x88280303, // 0017 GETMBR R10 R1 K3
- 0x7C1C0600, // 0018 CALL R7 3
- 0x54220003, // 0019 LDINT R8 4
- 0x7C140600, // 001A CALL R5 3
- 0x7002000E, // 001B JMP #002B
- 0xB8160E00, // 001C GETNGBL R5 K7
- 0x8C140B08, // 001D GETMET R5 R5 K8
- 0x601C0018, // 001E GETGBL R7 G24
- 0x5820000C, // 001F LDCONST R8 K12
- 0x5C240600, // 0020 MOVE R9 R3
- 0x7C1C0400, // 0021 CALL R7 2
- 0x5820000D, // 0022 LDCONST R8 K13
- 0x7C140600, // 0023 CALL R5 3
- 0x78120005, // 0024 JMPF R4 #002B
- 0x8C14090E, // 0025 GETMET R5 R4 K14
- 0x5C1C0200, // 0026 MOVE R7 R1
- 0x7C140400, // 0027 CALL R5 2
- 0x8C14010F, // 0028 GETMET R5 R0 K15
- 0x881C0303, // 0029 GETMBR R7 R1 K3
- 0x7C140400, // 002A CALL R5 2
- 0x50140000, // 002B LDBOOL R5 0 0
- 0x80040A00, // 002C RET 1 R5
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: process_timed_request
-********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_process_timed_request, /* name */
- be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_IM,
- 1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TimedRequestMessage),
- /* K2 */ be_nested_str_weak(from_TLV),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(log),
- /* K5 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20TimedRequest_X3D_X25i),
- /* K6 */ be_nested_str_weak(session),
- /* K7 */ be_nested_str_weak(local_session_id),
- /* K8 */ be_nested_str_weak(timeout),
- /* K9 */ be_const_int(3),
- /* K10 */ be_nested_str_weak(send_status),
- /* K11 */ be_nested_str_weak(SUCCESS),
- }),
- be_str_weak(process_timed_request),
- &be_const_str_solidified,
- ( &(const binstruction[23]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x7C0C0200, // 0002 CALL R3 1
- 0x8C0C0702, // 0003 GETMET R3 R3 K2
- 0x5C140400, // 0004 MOVE R5 R2
- 0x7C0C0400, // 0005 CALL R3 2
- 0xB8120600, // 0006 GETNGBL R4 K3
- 0x8C100904, // 0007 GETMET R4 R4 K4
- 0x60180018, // 0008 GETGBL R6 G24
- 0x581C0005, // 0009 LDCONST R7 K5
- 0x88200306, // 000A GETMBR R8 R1 K6
- 0x88201107, // 000B GETMBR R8 R8 K7
- 0x88240708, // 000C GETMBR R9 R3 K8
- 0x7C180600, // 000D CALL R6 3
- 0x581C0009, // 000E LDCONST R7 K9
- 0x7C100600, // 000F CALL R4 3
- 0x8C10010A, // 0010 GETMET R4 R0 K10
- 0x5C180200, // 0011 MOVE R6 R1
- 0xB81E0000, // 0012 GETNGBL R7 K0
- 0x881C0F0B, // 0013 GETMBR R7 R7 K11
- 0x7C100600, // 0014 CALL R4 3
- 0x50100200, // 0015 LDBOOL R4 1 0
- 0x80040800, // 0016 RET 1 R4
+ ( &(const binstruction[107]) { /* code */
+ 0x8C140329, // 0000 GETMET R5 R1 K41
+ 0x541E0036, // 0001 LDINT R7 55
+ 0x5820002A, // 0002 LDCONST R8 K42
+ 0x7C140600, // 0003 CALL R5 3
+ 0x8C140329, // 0004 GETMET R5 R1 K41
+ 0x5C1C0600, // 0005 MOVE R7 R3
+ 0x5820002A, // 0006 LDCONST R8 K42
+ 0x7C140600, // 0007 CALL R5 3
+ 0x88140512, // 0008 GETMBR R5 R2 K18
+ 0x541A00FE, // 0009 LDINT R6 255
+ 0x18140A06, // 000A LE R5 R5 R6
+ 0x78160008, // 000B JMPF R5 #0015
+ 0x8C140329, // 000C GETMET R5 R1 K41
+ 0x541E2401, // 000D LDINT R7 9218
+ 0x5421FFFD, // 000E LDINT R8 -2
+ 0x7C140600, // 000F CALL R5 3
+ 0x8C140329, // 0010 GETMET R5 R1 K41
+ 0x881C0512, // 0011 GETMBR R7 R2 K18
+ 0x5820002A, // 0012 LDCONST R8 K42
+ 0x7C140600, // 0013 CALL R5 3
+ 0x70020007, // 0014 JMP #001D
+ 0x8C140329, // 0015 GETMET R5 R1 K41
+ 0x541E2501, // 0016 LDINT R7 9474
+ 0x5421FFFD, // 0017 LDINT R8 -2
+ 0x7C140600, // 0018 CALL R5 3
+ 0x8C140329, // 0019 GETMET R5 R1 K41
+ 0x881C0512, // 001A GETMBR R7 R2 K18
+ 0x5820002B, // 001B LDCONST R8 K43
+ 0x7C140600, // 001C CALL R5 3
+ 0x8814050D, // 001D GETMBR R5 R2 K13
+ 0x541A00FE, // 001E LDINT R6 255
+ 0x18140A06, // 001F LE R5 R5 R6
+ 0x78160008, // 0020 JMPF R5 #002A
+ 0x8C140329, // 0021 GETMET R5 R1 K41
+ 0x541E2402, // 0022 LDINT R7 9219
+ 0x5421FFFD, // 0023 LDINT R8 -2
+ 0x7C140600, // 0024 CALL R5 3
+ 0x8C140329, // 0025 GETMET R5 R1 K41
+ 0x881C050D, // 0026 GETMBR R7 R2 K13
+ 0x5820002A, // 0027 LDCONST R8 K42
+ 0x7C140600, // 0028 CALL R5 3
+ 0x70020014, // 0029 JMP #003F
+ 0x8814050D, // 002A GETMBR R5 R2 K13
+ 0x541AFFFE, // 002B LDINT R6 65535
+ 0x18140A06, // 002C LE R5 R5 R6
+ 0x78160008, // 002D JMPF R5 #0037
+ 0x8C140329, // 002E GETMET R5 R1 K41
+ 0x541E2502, // 002F LDINT R7 9475
+ 0x5421FFFD, // 0030 LDINT R8 -2
+ 0x7C140600, // 0031 CALL R5 3
+ 0x8C140329, // 0032 GETMET R5 R1 K41
+ 0x881C050D, // 0033 GETMBR R7 R2 K13
+ 0x5820002B, // 0034 LDCONST R8 K43
+ 0x7C140600, // 0035 CALL R5 3
+ 0x70020007, // 0036 JMP #003F
+ 0x8C140329, // 0037 GETMET R5 R1 K41
+ 0x541E2602, // 0038 LDINT R7 9731
+ 0x5421FFFD, // 0039 LDINT R8 -2
+ 0x7C140600, // 003A CALL R5 3
+ 0x8C140329, // 003B GETMET R5 R1 K41
+ 0x881C050D, // 003C GETMBR R7 R2 K13
+ 0x54220003, // 003D LDINT R8 4
+ 0x7C140600, // 003E CALL R5 3
+ 0x8814050E, // 003F GETMBR R5 R2 K14
+ 0x541A00FE, // 0040 LDINT R6 255
+ 0x18140A06, // 0041 LE R5 R5 R6
+ 0x78160008, // 0042 JMPF R5 #004C
+ 0x8C140329, // 0043 GETMET R5 R1 K41
+ 0x541E2403, // 0044 LDINT R7 9220
+ 0x5421FFFD, // 0045 LDINT R8 -2
+ 0x7C140600, // 0046 CALL R5 3
+ 0x8C140329, // 0047 GETMET R5 R1 K41
+ 0x881C050E, // 0048 GETMBR R7 R2 K14
+ 0x5820002A, // 0049 LDCONST R8 K42
+ 0x7C140600, // 004A CALL R5 3
+ 0x70020014, // 004B JMP #0061
+ 0x8814050E, // 004C GETMBR R5 R2 K14
+ 0x541AFFFE, // 004D LDINT R6 65535
+ 0x18140A06, // 004E LE R5 R5 R6
+ 0x78160008, // 004F JMPF R5 #0059
+ 0x8C140329, // 0050 GETMET R5 R1 K41
+ 0x541E2503, // 0051 LDINT R7 9476
+ 0x5421FFFD, // 0052 LDINT R8 -2
+ 0x7C140600, // 0053 CALL R5 3
+ 0x8C140329, // 0054 GETMET R5 R1 K41
+ 0x881C050E, // 0055 GETMBR R7 R2 K14
+ 0x5820002B, // 0056 LDCONST R8 K43
+ 0x7C140600, // 0057 CALL R5 3
+ 0x70020007, // 0058 JMP #0061
+ 0x8C140329, // 0059 GETMET R5 R1 K41
+ 0x541E2603, // 005A LDINT R7 9732
+ 0x5421FFFD, // 005B LDINT R8 -2
+ 0x7C140600, // 005C CALL R5 3
+ 0x8C140329, // 005D GETMET R5 R1 K41
+ 0x881C050E, // 005E GETMBR R7 R2 K14
+ 0x54220003, // 005F LDINT R8 4
+ 0x7C140600, // 0060 CALL R5 3
+ 0x78120003, // 0061 JMPF R4 #0066
+ 0x8C140329, // 0062 GETMET R5 R1 K41
+ 0x541E3404, // 0063 LDINT R7 13317
+ 0x5421FFFD, // 0064 LDINT R8 -2
+ 0x7C140600, // 0065 CALL R5 3
+ 0x8C140329, // 0066 GETMET R5 R1 K41
+ 0x541E0017, // 0067 LDINT R7 24
+ 0x5820002A, // 0068 LDCONST R8 K42
+ 0x7C140600, // 0069 CALL R5 3
+ 0x80000000, // 006A RET 0
})
)
);
@@ -296,48 +515,39 @@ be_local_closure(class_Matter_IM_process_timed_request, /* name */
/********************************************************************
** Solidified function: attributedata2raw
********************************************************************/
-extern const bclass be_class_Matter_IM;
be_local_closure(class_Matter_IM_attributedata2raw, /* name */
be_nested_proto(
11, /* nstack */
5, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(add),
- /* K1 */ be_const_int(355795236),
- /* K2 */ be_const_int(1),
- /* K3 */ be_nested_str_weak(path2raw),
- /* K4 */ be_nested_str_weak(tag_sub),
- /* K5 */ be_const_int(2),
- /* K6 */ be_nested_str_weak(tlv2raw),
- }),
+ &be_ktab_class_Matter_IM, /* shared constants */
be_str_weak(attributedata2raw),
&be_const_str_solidified,
( &(const binstruction[23]) { /* code */
- 0x8C140300, // 0000 GETMET R5 R1 K0
- 0x581C0001, // 0001 LDCONST R7 K1
+ 0x8C140329, // 0000 GETMET R5 R1 K41
+ 0x581C002C, // 0001 LDCONST R7 K44
0x5421FFFB, // 0002 LDINT R8 -4
0x7C140600, // 0003 CALL R5 3
- 0x8C140300, // 0004 GETMET R5 R1 K0
- 0x581C0002, // 0005 LDCONST R7 K2
+ 0x8C140329, // 0004 GETMET R5 R1 K41
+ 0x581C002A, // 0005 LDCONST R7 K42
0x5421FFFD, // 0006 LDINT R8 -2
0x7C140600, // 0007 CALL R5 3
- 0x8C140103, // 0008 GETMET R5 R0 K3
+ 0x8C14012D, // 0008 GETMET R5 R0 K45
0x5C1C0200, // 0009 MOVE R7 R1
0x5C200400, // 000A MOVE R8 R2
- 0x58240002, // 000B LDCONST R9 K2
+ 0x5824002A, // 000B LDCONST R9 K42
0x5C280800, // 000C MOVE R10 R4
0x7C140A00, // 000D CALL R5 5
- 0x900E0905, // 000E SETMBR R3 K4 K5
- 0x8C140706, // 000F GETMET R5 R3 K6
+ 0x900E5D2B, // 000E SETMBR R3 K46 K43
+ 0x8C14072F, // 000F GETMET R5 R3 K47
0x5C1C0200, // 0010 MOVE R7 R1
0x7C140400, // 0011 CALL R5 2
- 0x8C140300, // 0012 GETMET R5 R1 K0
+ 0x8C140329, // 0012 GETMET R5 R1 K41
0x541E1817, // 0013 LDINT R7 6168
0x5421FFFD, // 0014 LDINT R8 -2
0x7C140600, // 0015 CALL R5 3
@@ -349,274 +559,86 @@ be_local_closure(class_Matter_IM_attributedata2raw, /* name */
/********************************************************************
-** Solidified function: process_invoke_request_solo
+** Solidified function: send_subscribe_update
********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */
+be_local_closure(class_Matter_IM_send_subscribe_update, /* name */
be_nested_proto(
- 15, /* nstack */
- 3, /* argc */
- 2, /* varg */
+ 13, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[42]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(profiler),
- /* K2 */ be_nested_str_weak(log),
- /* K3 */ be_nested_str_weak(invoke_request_solo_start),
- /* K4 */ be_nested_str_weak(msg),
- /* K5 */ be_nested_str_weak(status),
- /* K6 */ be_nested_str_weak(UNSUPPORTED_COMMAND),
- /* K7 */ be_nested_str_weak(get_command_name),
- /* K8 */ be_nested_str_weak(cluster),
- /* K9 */ be_nested_str_weak(command),
- /* K10 */ be_nested_str_weak(device),
- /* K11 */ be_nested_str_weak(invoke_request),
- /* K12 */ be_nested_str_weak(session),
- /* K13 */ be_nested_str_weak(command_fields),
- /* K14 */ be_nested_str_weak(COMMAND_X20DONE),
- /* K15 */ be_nested_str_weak(_X28),
- /* K16 */ be_nested_str_weak(_X29_X20),
- /* K17 */ be_nested_str_weak(),
- /* K18 */ be_nested_str_weak(tasmota),
- /* K19 */ be_nested_str_weak(loglevel),
- /* K20 */ be_const_int(3),
- /* K21 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand1_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s),
- /* K22 */ be_nested_str_weak(local_session_id),
- /* K23 */ be_nested_str_weak(add),
- /* K24 */ be_const_int(354943030),
- /* K25 */ be_const_int(1),
- /* K26 */ be_nested_str_weak(SUCCESS),
- /* K27 */ be_nested_str_weak(invokeresponse2raw),
- /* K28 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i),
- /* K29 */ be_nested_str_weak(exchange_id),
- /* K30 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s),
- /* K31 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i),
- /* K32 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i),
- /* K33 */ be_const_int(405077761),
- /* K34 */ be_nested_str_weak(build_response),
- /* K35 */ be_nested_str_weak(message_handler),
- /* K36 */ be_nested_str_weak(raw),
- /* K37 */ be_nested_str_weak(clear),
- /* K38 */ be_nested_str_weak(encode_frame),
- /* K39 */ be_nested_str_weak(encrypt),
- /* K40 */ be_nested_str_weak(send_response_frame),
- /* K41 */ be_nested_str_weak(RESPONSE_X20SENT),
- }),
- be_str_weak(process_invoke_request_solo),
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(send_subscribe_update),
&be_const_str_solidified,
- ( &(const binstruction[208]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x8C0C0702, // 0002 GETMET R3 R3 K2
- 0x58140003, // 0003 LDCONST R5 K3
- 0x7C0C0400, // 0004 CALL R3 2
- 0x900A0801, // 0005 SETMBR R2 K4 R1
- 0xB80E0000, // 0006 GETNGBL R3 K0
- 0x880C0706, // 0007 GETMBR R3 R3 K6
- 0x900A0A03, // 0008 SETMBR R2 K5 R3
- 0xB80E0000, // 0009 GETNGBL R3 K0
- 0x8C0C0707, // 000A GETMET R3 R3 K7
- 0x88140508, // 000B GETMBR R5 R2 K8
- 0x88180509, // 000C GETMBR R6 R2 K9
- 0x7C0C0600, // 000D CALL R3 3
- 0x60100008, // 000E GETGBL R4 G8
- 0x5C140400, // 000F MOVE R5 R2
- 0x7C100200, // 0010 CALL R4 1
- 0x8814010A, // 0011 GETMBR R5 R0 K10
- 0x8C140B0B, // 0012 GETMET R5 R5 K11
- 0x881C030C, // 0013 GETMBR R7 R1 K12
- 0x8820050D, // 0014 GETMBR R8 R2 K13
- 0x5C240400, // 0015 MOVE R9 R2
- 0x7C140800, // 0016 CALL R5 4
- 0xB81A0000, // 0017 GETNGBL R6 K0
- 0x88180D01, // 0018 GETMBR R6 R6 K1
- 0x8C180D02, // 0019 GETMET R6 R6 K2
- 0x5820000E, // 001A LDCONST R8 K14
- 0x7C180400, // 001B CALL R6 2
- 0x88180502, // 001C GETMBR R6 R2 K2
- 0x4C1C0000, // 001D LDNIL R7
- 0x20180C07, // 001E NE R6 R6 R7
- 0x781A0005, // 001F JMPF R6 #0026
- 0x60180008, // 0020 GETGBL R6 G8
- 0x881C0502, // 0021 GETMBR R7 R2 K2
- 0x7C180200, // 0022 CALL R6 1
- 0x001A1E06, // 0023 ADD R6 K15 R6
- 0x00180D10, // 0024 ADD R6 R6 K16
- 0x70020000, // 0025 JMP #0027
- 0x58180011, // 0026 LDCONST R6 K17
- 0xB81E2400, // 0027 GETNGBL R7 K18
- 0x8C1C0F13, // 0028 GETMET R7 R7 K19
- 0x58240014, // 0029 LDCONST R9 K20
- 0x7C1C0400, // 002A CALL R7 2
- 0x781E000E, // 002B JMPF R7 #003B
- 0xB81E2400, // 002C GETNGBL R7 K18
- 0x8C1C0F02, // 002D GETMET R7 R7 K2
- 0x60240018, // 002E GETGBL R9 G24
- 0x58280015, // 002F LDCONST R10 K21
- 0x882C030C, // 0030 GETMBR R11 R1 K12
- 0x882C1716, // 0031 GETMBR R11 R11 K22
- 0x5C300800, // 0032 MOVE R12 R4
- 0x780E0001, // 0033 JMPF R3 #0036
- 0x5C340600, // 0034 MOVE R13 R3
- 0x70020000, // 0035 JMP #0037
- 0x58340011, // 0036 LDCONST R13 K17
- 0x5C380C00, // 0037 MOVE R14 R6
- 0x7C240A00, // 0038 CALL R9 5
- 0x58280014, // 0039 LDCONST R10 K20
- 0x7C1C0600, // 003A CALL R7 3
- 0x4C1C0000, // 003B LDNIL R7
- 0x900A0407, // 003C SETMBR R2 K2 R7
- 0x601C0015, // 003D GETGBL R7 G21
- 0x5422002F, // 003E LDINT R8 48
- 0x7C1C0200, // 003F CALL R7 1
- 0x8C200F17, // 0040 GETMET R8 R7 K23
- 0x58280018, // 0041 LDCONST R10 K24
- 0x542DFFFB, // 0042 LDINT R11 -4
- 0x7C200600, // 0043 CALL R8 3
- 0x8C200F17, // 0044 GETMET R8 R7 K23
- 0x58280019, // 0045 LDCONST R10 K25
- 0x582C0019, // 0046 LDCONST R11 K25
- 0x7C200600, // 0047 CALL R8 3
- 0x50200200, // 0048 LDBOOL R8 1 0
- 0x1C200A08, // 0049 EQ R8 R5 R8
- 0x74220004, // 004A JMPT R8 #0050
- 0x88200505, // 004B GETMBR R8 R2 K5
- 0xB8260000, // 004C GETNGBL R9 K0
- 0x8824131A, // 004D GETMBR R9 R9 K26
- 0x1C201009, // 004E EQ R8 R8 R9
- 0x78220017, // 004F JMPF R8 #0068
- 0xB8220000, // 0050 GETNGBL R8 K0
- 0x8820111A, // 0051 GETMBR R8 R8 K26
- 0x900A0A08, // 0052 SETMBR R2 K5 R8
- 0x8C20011B, // 0053 GETMET R8 R0 K27
- 0x5C280E00, // 0054 MOVE R10 R7
- 0x5C2C0400, // 0055 MOVE R11 R2
- 0x4C300000, // 0056 LDNIL R12
- 0x7C200800, // 0057 CALL R8 4
- 0xB8222400, // 0058 GETNGBL R8 K18
- 0x8C201113, // 0059 GETMET R8 R8 K19
- 0x58280014, // 005A LDCONST R10 K20
- 0x7C200400, // 005B CALL R8 2
- 0x78220009, // 005C JMPF R8 #0067
- 0xB8222400, // 005D GETNGBL R8 K18
- 0x8C201102, // 005E GETMET R8 R8 K2
- 0x60280018, // 005F GETGBL R10 G24
- 0x582C001C, // 0060 LDCONST R11 K28
- 0x8830030C, // 0061 GETMBR R12 R1 K12
- 0x88301916, // 0062 GETMBR R12 R12 K22
- 0x8834031D, // 0063 GETMBR R13 R1 K29
- 0x7C280600, // 0064 CALL R10 3
- 0x582C0014, // 0065 LDCONST R11 K20
- 0x7C200600, // 0066 CALL R8 3
- 0x70020046, // 0067 JMP #00AF
- 0x4C200000, // 0068 LDNIL R8
- 0x20200A08, // 0069 NE R8 R5 R8
- 0x78220018, // 006A JMPF R8 #0084
- 0x8C20011B, // 006B GETMET R8 R0 K27
- 0x5C280E00, // 006C MOVE R10 R7
- 0x5C2C0400, // 006D MOVE R11 R2
- 0x5C300A00, // 006E MOVE R12 R5
- 0x7C200800, // 006F CALL R8 4
- 0x5C200600, // 0070 MOVE R8 R3
- 0x74220000, // 0071 JMPT R8 #0073
- 0x580C0011, // 0072 LDCONST R3 K17
- 0xB8222400, // 0073 GETNGBL R8 K18
- 0x8C201113, // 0074 GETMET R8 R8 K19
- 0x58280014, // 0075 LDCONST R10 K20
- 0x7C200400, // 0076 CALL R8 2
- 0x7822000A, // 0077 JMPF R8 #0083
- 0xB8222400, // 0078 GETNGBL R8 K18
- 0x8C201102, // 0079 GETMET R8 R8 K2
- 0x60280018, // 007A GETGBL R10 G24
- 0x582C001E, // 007B LDCONST R11 K30
- 0x8830030C, // 007C GETMBR R12 R1 K12
- 0x88301916, // 007D GETMBR R12 R12 K22
- 0x5C340400, // 007E MOVE R13 R2
- 0x5C380600, // 007F MOVE R14 R3
- 0x7C280800, // 0080 CALL R10 4
- 0x582C0014, // 0081 LDCONST R11 K20
- 0x7C200600, // 0082 CALL R8 3
- 0x7002002A, // 0083 JMP #00AF
- 0x88200505, // 0084 GETMBR R8 R2 K5
- 0x4C240000, // 0085 LDNIL R9
- 0x20201009, // 0086 NE R8 R8 R9
- 0x78220015, // 0087 JMPF R8 #009E
- 0x8C20011B, // 0088 GETMET R8 R0 K27
- 0x5C280E00, // 0089 MOVE R10 R7
- 0x5C2C0400, // 008A MOVE R11 R2
- 0x4C300000, // 008B LDNIL R12
- 0x7C200800, // 008C CALL R8 4
- 0xB8222400, // 008D GETNGBL R8 K18
- 0x8C201113, // 008E GETMET R8 R8 K19
- 0x58280014, // 008F LDCONST R10 K20
- 0x7C200400, // 0090 CALL R8 2
- 0x7822000A, // 0091 JMPF R8 #009D
- 0xB8222400, // 0092 GETNGBL R8 K18
- 0x8C201102, // 0093 GETMET R8 R8 K2
- 0x60280018, // 0094 GETGBL R10 G24
- 0x582C001F, // 0095 LDCONST R11 K31
- 0x8830030C, // 0096 GETMBR R12 R1 K12
- 0x88301916, // 0097 GETMBR R12 R12 K22
- 0x88340505, // 0098 GETMBR R13 R2 K5
- 0x8838031D, // 0099 GETMBR R14 R1 K29
- 0x7C280800, // 009A CALL R10 4
- 0x582C0014, // 009B LDCONST R11 K20
- 0x7C200600, // 009C CALL R8 3
- 0x70020010, // 009D JMP #00AF
- 0xB8222400, // 009E GETNGBL R8 K18
- 0x8C201113, // 009F GETMET R8 R8 K19
- 0x58280014, // 00A0 LDCONST R10 K20
- 0x7C200400, // 00A1 CALL R8 2
- 0x78220009, // 00A2 JMPF R8 #00AD
- 0xB8222400, // 00A3 GETNGBL R8 K18
- 0x8C201102, // 00A4 GETMET R8 R8 K2
- 0x60280018, // 00A5 GETGBL R10 G24
- 0x582C0020, // 00A6 LDCONST R11 K32
- 0x8830030C, // 00A7 GETMBR R12 R1 K12
- 0x88301916, // 00A8 GETMBR R12 R12 K22
- 0x8834031D, // 00A9 GETMBR R13 R1 K29
- 0x7C280600, // 00AA CALL R10 3
- 0x582C0014, // 00AB LDCONST R11 K20
- 0x7C200600, // 00AC CALL R8 3
- 0x50200000, // 00AD LDBOOL R8 0 0
- 0x80041000, // 00AE RET 1 R8
- 0x8C200F17, // 00AF GETMET R8 R7 K23
- 0x58280021, // 00B0 LDCONST R10 K33
- 0x542DFFFB, // 00B1 LDINT R11 -4
- 0x7C200600, // 00B2 CALL R8 3
- 0x8C200F17, // 00B3 GETMET R8 R7 K23
- 0x542A0017, // 00B4 LDINT R10 24
- 0x582C0019, // 00B5 LDCONST R11 K25
- 0x7C200600, // 00B6 CALL R8 3
- 0x8C200322, // 00B7 GETMET R8 R1 K34
- 0x542A0008, // 00B8 LDINT R10 9
- 0x502C0200, // 00B9 LDBOOL R11 1 0
- 0x7C200600, // 00BA CALL R8 3
- 0x8824010A, // 00BB GETMBR R9 R0 K10
- 0x88241323, // 00BC GETMBR R9 R9 K35
- 0x88280324, // 00BD GETMBR R10 R1 K36
- 0x8C2C1525, // 00BE GETMET R11 R10 K37
- 0x7C2C0200, // 00BF CALL R11 1
- 0x8C2C1126, // 00C0 GETMET R11 R8 K38
- 0x5C340E00, // 00C1 MOVE R13 R7
- 0x5C381400, // 00C2 MOVE R14 R10
- 0x7C2C0600, // 00C3 CALL R11 3
- 0x8C2C1127, // 00C4 GETMET R11 R8 K39
- 0x7C2C0200, // 00C5 CALL R11 1
- 0x8C2C1328, // 00C6 GETMET R11 R9 K40
- 0x5C341000, // 00C7 MOVE R13 R8
- 0x7C2C0400, // 00C8 CALL R11 2
- 0xB82E0000, // 00C9 GETNGBL R11 K0
- 0x882C1701, // 00CA GETMBR R11 R11 K1
- 0x8C2C1702, // 00CB GETMET R11 R11 K2
- 0x58340029, // 00CC LDCONST R13 K41
- 0x7C2C0400, // 00CD CALL R11 2
- 0x502C0200, // 00CE LDBOOL R11 1 0
- 0x80041600, // 00CF RET 1 R11
+ ( &(const binstruction[64]) { /* code */
+ 0x88080323, // 0000 GETMBR R2 R1 K35
+ 0xB80E0000, // 0001 GETNGBL R3 K0
+ 0x8C0C0730, // 0002 GETMET R3 R3 K48
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x50100000, // 0004 LDBOOL R4 0 0
+ 0x900E6204, // 0005 SETMBR R3 K49 R4
+ 0x60100012, // 0006 GETGBL R4 G18
+ 0x7C100000, // 0007 CALL R4 0
+ 0x900E6404, // 0008 SETMBR R3 K50 R4
+ 0x60100010, // 0009 GETGBL R4 G16
+ 0x88140333, // 000A GETMBR R5 R1 K51
+ 0x7C100200, // 000B CALL R4 1
+ 0xA802000F, // 000C EXBLK 0 #001D
+ 0x5C140800, // 000D MOVE R5 R4
+ 0x7C140000, // 000E CALL R5 0
+ 0xB81A0000, // 000F GETNGBL R6 K0
+ 0x8C180D34, // 0010 GETMET R6 R6 K52
+ 0x7C180200, // 0011 CALL R6 1
+ 0x881C0B12, // 0012 GETMBR R7 R5 K18
+ 0x901A2407, // 0013 SETMBR R6 K18 R7
+ 0x881C0B0D, // 0014 GETMBR R7 R5 K13
+ 0x901A1A07, // 0015 SETMBR R6 K13 R7
+ 0x881C0B0E, // 0016 GETMBR R7 R5 K14
+ 0x901A1C07, // 0017 SETMBR R6 K14 R7
+ 0x881C0732, // 0018 GETMBR R7 R3 K50
+ 0x8C1C0F27, // 0019 GETMET R7 R7 K39
+ 0x5C240C00, // 001A MOVE R9 R6
+ 0x7C1C0400, // 001B CALL R7 2
+ 0x7001FFEF, // 001C JMP #000D
+ 0x58100025, // 001D LDCONST R4 K37
+ 0xAC100200, // 001E CATCH R4 1 0
+ 0xB0080000, // 001F RAISE 2 R0 R0
+ 0xB8122E00, // 0020 GETNGBL R4 K23
+ 0x60140018, // 0021 GETGBL R5 G24
+ 0x58180035, // 0022 LDCONST R6 K53
+ 0x881C0536, // 0023 GETMBR R7 R2 K54
+ 0x88200337, // 0024 GETMBR R8 R1 K55
+ 0x7C140600, // 0025 CALL R5 3
+ 0x58180015, // 0026 LDCONST R6 K21
+ 0x7C100400, // 0027 CALL R4 2
+ 0x50100000, // 0028 LDBOOL R4 0 0
+ 0x90067004, // 0029 SETMBR R1 K56 R4
+ 0x8C100139, // 002A GETMET R4 R0 K57
+ 0x5C180600, // 002B MOVE R6 R3
+ 0x4C1C0000, // 002C LDNIL R7
+ 0x7C100600, // 002D CALL R4 3
+ 0x8C14033A, // 002E GETMET R5 R1 K58
+ 0x7C140200, // 002F CALL R5 1
+ 0xB81A0000, // 0030 GETNGBL R6 K0
+ 0x8C180D3B, // 0031 GETMET R6 R6 K59
+ 0x8820053C, // 0032 GETMBR R8 R2 K60
+ 0x5C240400, // 0033 MOVE R9 R2
+ 0x5C280800, // 0034 MOVE R10 R4
+ 0x5C2C0A00, // 0035 MOVE R11 R5
+ 0x5C300200, // 0036 MOVE R12 R1
+ 0x7C180C00, // 0037 CALL R6 6
+ 0x881C0126, // 0038 GETMBR R7 R0 K38
+ 0x8C1C0F27, // 0039 GETMET R7 R7 K39
+ 0x5C240C00, // 003A MOVE R9 R6
+ 0x7C1C0400, // 003B CALL R7 2
+ 0x8C1C013D, // 003C GETMET R7 R0 K61
+ 0x8824053C, // 003D GETMBR R9 R2 K60
+ 0x7C1C0400, // 003E CALL R7 2
+ 0x80000000, // 003F RET 0
})
)
);
@@ -624,183 +646,832 @@ be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */
/********************************************************************
-** Solidified function: invokeresponse2raw
+** Solidified function: process_read_request_pull
********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */
+be_local_closure(class_Matter_IM_process_read_request_pull, /* name */
be_nested_proto(
- 9, /* nstack */
- 4, /* argc */
- 2, /* varg */
+ 13, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(add),
- /* K1 */ be_const_int(1),
- /* K2 */ be_nested_str_weak(endpoint),
- /* K3 */ be_const_int(2),
- /* K4 */ be_nested_str_weak(cluster),
- /* K5 */ be_nested_str_weak(command),
- /* K6 */ be_nested_str_weak(status),
- /* K7 */ be_nested_str_weak(matter),
- /* K8 */ be_nested_str_weak(SUCCESS),
- /* K9 */ be_nested_str_weak(tag_sub),
- /* K10 */ be_nested_str_weak(tlv2raw),
- }),
- be_str_weak(invokeresponse2raw),
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(process_read_request_pull),
&be_const_str_solidified,
- ( &(const binstruction[148]) { /* code */
- 0x8C100300, // 0000 GETMET R4 R1 K0
- 0x541A0014, // 0001 LDINT R6 21
- 0x581C0001, // 0002 LDCONST R7 K1
- 0x7C100600, // 0003 CALL R4 3
- 0x4C100000, // 0004 LDNIL R4
- 0x1C100604, // 0005 EQ R4 R3 R4
- 0x78120004, // 0006 JMPF R4 #000C
- 0x8C100300, // 0007 GETMET R4 R1 K0
- 0x541A3500, // 0008 LDINT R6 13569
- 0x541DFFFD, // 0009 LDINT R7 -2
- 0x7C100600, // 000A CALL R4 3
- 0x70020003, // 000B JMP #0010
- 0x8C100300, // 000C GETMET R4 R1 K0
- 0x541A34FF, // 000D LDINT R6 13568
- 0x541DFFFD, // 000E LDINT R7 -2
- 0x7C100600, // 000F CALL R4 3
- 0x8C100300, // 0010 GETMET R4 R1 K0
- 0x541A36FF, // 0011 LDINT R6 14080
- 0x541DFFFD, // 0012 LDINT R7 -2
+ ( &(const binstruction[25]) { /* code */
+ 0xB80E0000, // 0000 GETNGBL R3 K0
+ 0x8C0C0730, // 0001 GETMET R3 R3 K48
+ 0x7C0C0200, // 0002 CALL R3 1
+ 0x8C0C0702, // 0003 GETMET R3 R3 K2
+ 0x5C140400, // 0004 MOVE R5 R2
+ 0x7C0C0400, // 0005 CALL R3 2
+ 0x8C100139, // 0006 GETMET R4 R0 K57
+ 0x5C180600, // 0007 MOVE R6 R3
+ 0x5C1C0200, // 0008 MOVE R7 R1
+ 0x7C100600, // 0009 CALL R4 3
+ 0x8C14013E, // 000A GETMET R5 R0 K62
+ 0x5C1C0600, // 000B MOVE R7 R3
+ 0x5C200200, // 000C MOVE R8 R1
+ 0x7C140600, // 000D CALL R5 3
+ 0x88180126, // 000E GETMBR R6 R0 K38
+ 0x8C180D27, // 000F GETMET R6 R6 K39
+ 0xB8220000, // 0010 GETNGBL R8 K0
+ 0x8C20113F, // 0011 GETMET R8 R8 K63
+ 0x5C280200, // 0012 MOVE R10 R1
+ 0x5C2C0800, // 0013 MOVE R11 R4
+ 0x5C300A00, // 0014 MOVE R12 R5
+ 0x7C200800, // 0015 CALL R8 4
+ 0x7C180400, // 0016 CALL R6 2
+ 0x50180200, // 0017 LDBOOL R6 1 0
+ 0x80040C00, // 0018 RET 1 R6
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: process_read_or_subscribe_request_pull
+********************************************************************/
+be_local_closure(class_Matter_IM_process_read_or_subscribe_request_pull, /* name */
+ be_nested_proto(
+ 16, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(process_read_or_subscribe_request_pull),
+ &be_const_str_solidified,
+ ( &(const binstruction[115]) { /* code */
+ 0x880C0332, // 0000 GETMBR R3 R1 K50
+ 0x4C100000, // 0001 LDNIL R4
+ 0x200C0604, // 0002 NE R3 R3 R4
+ 0x780E006C, // 0003 JMPF R3 #0071
+ 0x4C0C0000, // 0004 LDNIL R3
+ 0x88100332, // 0005 GETMBR R4 R1 K50
+ 0x78120003, // 0006 JMPF R4 #000B
+ 0x6010000C, // 0007 GETGBL R4 G12
+ 0x88140332, // 0008 GETMBR R5 R1 K50
+ 0x7C100200, // 0009 CALL R4 1
+ 0x70020000, // 000A JMP #000C
+ 0x58100040, // 000B LDCONST R4 K64
+ 0x2414092A, // 000C GT R5 R4 K42
+ 0x78160002, // 000D JMPF R5 #0011
+ 0x60140012, // 000E GETGBL R5 G18
+ 0x7C140000, // 000F CALL R5 0
+ 0x5C0C0A00, // 0010 MOVE R3 R5
+ 0x60140010, // 0011 GETGBL R5 G16
+ 0x88180332, // 0012 GETMBR R6 R1 K50
+ 0x7C140200, // 0013 CALL R5 1
+ 0xA8020057, // 0014 EXBLK 0 #006D
+ 0x5C180A00, // 0015 MOVE R6 R5
+ 0x7C180000, // 0016 CALL R6 0
+ 0xB81E0000, // 0017 GETNGBL R7 K0
+ 0x8C1C0F08, // 0018 GETMET R7 R7 K8
+ 0x88240109, // 0019 GETMBR R9 R0 K9
+ 0x7C1C0400, // 001A CALL R7 2
+ 0x8C200F1C, // 001B GETMET R8 R7 K28
+ 0x88280D12, // 001C GETMBR R10 R6 K18
+ 0x882C0D0D, // 001D GETMBR R11 R6 K13
+ 0x88300D0E, // 001E GETMBR R12 R6 K14
+ 0x88340331, // 001F GETMBR R13 R1 K49
+ 0x7C200A00, // 0020 CALL R8 5
+ 0x2420092A, // 0021 GT R8 R4 K42
+ 0x78220003, // 0022 JMPF R8 #0027
+ 0x8C200727, // 0023 GETMET R8 R3 K39
+ 0x5C280E00, // 0024 MOVE R10 R7
+ 0x7C200400, // 0025 CALL R8 2
+ 0x70020000, // 0026 JMP #0028
+ 0x5C0C0E00, // 0027 MOVE R3 R7
+ 0xB8222600, // 0028 GETNGBL R8 K19
+ 0x8C201114, // 0029 GETMET R8 R8 K20
+ 0x58280015, // 002A LDCONST R10 K21
+ 0x7C200400, // 002B CALL R8 2
+ 0x7822003E, // 002C JMPF R8 #006C
+ 0x88200D12, // 002D GETMBR R8 R6 K18
+ 0x4C240000, // 002E LDNIL R9
+ 0x1C201009, // 002F EQ R8 R8 R9
+ 0x74220007, // 0030 JMPT R8 #0039
+ 0x88200D0D, // 0031 GETMBR R8 R6 K13
+ 0x4C240000, // 0032 LDNIL R9
+ 0x1C201009, // 0033 EQ R8 R8 R9
+ 0x74220003, // 0034 JMPT R8 #0039
+ 0x88200D0E, // 0035 GETMBR R8 R6 K14
+ 0x4C240000, // 0036 LDNIL R9
+ 0x1C201009, // 0037 EQ R8 R8 R9
+ 0x78220032, // 0038 JMPF R8 #006C
+ 0xB8220000, // 0039 GETNGBL R8 K0
+ 0x8C201103, // 003A GETMET R8 R8 K3
+ 0x7C200200, // 003B CALL R8 1
+ 0x88240D12, // 003C GETMBR R9 R6 K18
+ 0x90222409, // 003D SETMBR R8 K18 R9
+ 0x88240D0D, // 003E GETMBR R9 R6 K13
+ 0x90221A09, // 003F SETMBR R8 K13 R9
+ 0x88240D0E, // 0040 GETMBR R9 R6 K14
+ 0x90221C09, // 0041 SETMBR R8 K14 R9
+ 0x88240331, // 0042 GETMBR R9 R1 K49
+ 0x90226209, // 0043 SETMBR R8 K49 R9
+ 0x60240008, // 0044 GETGBL R9 G8
+ 0x5C281000, // 0045 MOVE R10 R8
+ 0x7C240200, // 0046 CALL R9 1
+ 0x88280D0D, // 0047 GETMBR R10 R6 K13
+ 0x4C2C0000, // 0048 LDNIL R11
+ 0x2028140B, // 0049 NE R10 R10 R11
+ 0x782A0017, // 004A JMPF R10 #0063
+ 0x88280D0E, // 004B GETMBR R10 R6 K14
+ 0x4C2C0000, // 004C LDNIL R11
+ 0x2028140B, // 004D NE R10 R10 R11
+ 0x782A0013, // 004E JMPF R10 #0063
+ 0xB82A0000, // 004F GETNGBL R10 K0
+ 0x8C281516, // 0050 GETMET R10 R10 K22
+ 0x88300D0D, // 0051 GETMBR R12 R6 K13
+ 0x88340D0E, // 0052 GETMBR R13 R6 K14
+ 0x7C280600, // 0053 CALL R10 3
+ 0xB82E2E00, // 0054 GETNGBL R11 K23
+ 0x60300018, // 0055 GETGBL R12 G24
+ 0x58340041, // 0056 LDCONST R13 K65
+ 0x88380523, // 0057 GETMBR R14 R2 K35
+ 0x88381D36, // 0058 GETMBR R14 R14 K54
+ 0x782A0002, // 0059 JMPF R10 #005D
+ 0x003E320A, // 005A ADD R15 K25 R10
+ 0x003C1F1A, // 005B ADD R15 R15 K26
+ 0x70020000, // 005C JMP #005E
+ 0x583C001B, // 005D LDCONST R15 K27
+ 0x003C120F, // 005E ADD R15 R9 R15
+ 0x7C300600, // 005F CALL R12 3
+ 0x58340015, // 0060 LDCONST R13 K21
+ 0x7C2C0400, // 0061 CALL R11 2
+ 0x70020008, // 0062 JMP #006C
+ 0xB82A2E00, // 0063 GETNGBL R10 K23
+ 0x602C0018, // 0064 GETGBL R11 G24
+ 0x58300041, // 0065 LDCONST R12 K65
+ 0x88340523, // 0066 GETMBR R13 R2 K35
+ 0x88341B36, // 0067 GETMBR R13 R13 K54
+ 0x5C381200, // 0068 MOVE R14 R9
+ 0x7C2C0600, // 0069 CALL R11 3
+ 0x58300015, // 006A LDCONST R12 K21
+ 0x7C280400, // 006B CALL R10 2
+ 0x7001FFA7, // 006C JMP #0015
+ 0x58140025, // 006D LDCONST R5 K37
+ 0xAC140200, // 006E CATCH R5 1 0
+ 0xB0080000, // 006F RAISE 2 R0 R0
+ 0x80040600, // 0070 RET 1 R3
+ 0x4C0C0000, // 0071 LDNIL R3
+ 0x80040600, // 0072 RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: process_timed_request
+********************************************************************/
+be_local_closure(class_Matter_IM_process_timed_request, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(process_timed_request),
+ &be_const_str_solidified,
+ ( &(const binstruction[22]) { /* code */
+ 0xB80E0000, // 0000 GETNGBL R3 K0
+ 0x8C0C0742, // 0001 GETMET R3 R3 K66
+ 0x7C0C0200, // 0002 CALL R3 1
+ 0x8C0C0702, // 0003 GETMET R3 R3 K2
+ 0x5C140400, // 0004 MOVE R5 R2
+ 0x7C0C0400, // 0005 CALL R3 2
+ 0xB8122E00, // 0006 GETNGBL R4 K23
+ 0x60140018, // 0007 GETGBL R5 G24
+ 0x58180043, // 0008 LDCONST R6 K67
+ 0x881C0323, // 0009 GETMBR R7 R1 K35
+ 0x881C0F36, // 000A GETMBR R7 R7 K54
+ 0x88200744, // 000B GETMBR R8 R3 K68
+ 0x7C140600, // 000C CALL R5 3
+ 0x58180015, // 000D LDCONST R6 K21
+ 0x7C100400, // 000E CALL R4 2
+ 0x8C100145, // 000F GETMET R4 R0 K69
+ 0x5C180200, // 0010 MOVE R6 R1
+ 0xB81E0000, // 0011 GETNGBL R7 K0
+ 0x881C0F24, // 0012 GETMBR R7 R7 K36
0x7C100600, // 0013 CALL R4 3
- 0x88100502, // 0014 GETMBR R4 R2 K2
- 0x541600FE, // 0015 LDINT R5 255
- 0x18100805, // 0016 LE R4 R4 R5
- 0x78120008, // 0017 JMPF R4 #0021
- 0x8C100300, // 0018 GETMET R4 R1 K0
- 0x541A23FF, // 0019 LDINT R6 9216
- 0x541DFFFD, // 001A LDINT R7 -2
- 0x7C100600, // 001B CALL R4 3
- 0x8C100300, // 001C GETMET R4 R1 K0
- 0x88180502, // 001D GETMBR R6 R2 K2
- 0x581C0001, // 001E LDCONST R7 K1
- 0x7C100600, // 001F CALL R4 3
- 0x70020007, // 0020 JMP #0029
- 0x8C100300, // 0021 GETMET R4 R1 K0
- 0x541A24FF, // 0022 LDINT R6 9472
- 0x541DFFFD, // 0023 LDINT R7 -2
- 0x7C100600, // 0024 CALL R4 3
- 0x8C100300, // 0025 GETMET R4 R1 K0
- 0x88180502, // 0026 GETMBR R6 R2 K2
- 0x581C0003, // 0027 LDCONST R7 K3
- 0x7C100600, // 0028 CALL R4 3
- 0x88100504, // 0029 GETMBR R4 R2 K4
- 0x541600FE, // 002A LDINT R5 255
- 0x18100805, // 002B LE R4 R4 R5
- 0x78120008, // 002C JMPF R4 #0036
- 0x8C100300, // 002D GETMET R4 R1 K0
- 0x541A2400, // 002E LDINT R6 9217
- 0x541DFFFD, // 002F LDINT R7 -2
- 0x7C100600, // 0030 CALL R4 3
- 0x8C100300, // 0031 GETMET R4 R1 K0
- 0x88180504, // 0032 GETMBR R6 R2 K4
- 0x581C0001, // 0033 LDCONST R7 K1
- 0x7C100600, // 0034 CALL R4 3
- 0x70020014, // 0035 JMP #004B
- 0x88100504, // 0036 GETMBR R4 R2 K4
- 0x5416FFFE, // 0037 LDINT R5 65535
- 0x18100805, // 0038 LE R4 R4 R5
- 0x78120008, // 0039 JMPF R4 #0043
- 0x8C100300, // 003A GETMET R4 R1 K0
- 0x541A2500, // 003B LDINT R6 9473
- 0x541DFFFD, // 003C LDINT R7 -2
- 0x7C100600, // 003D CALL R4 3
- 0x8C100300, // 003E GETMET R4 R1 K0
- 0x88180504, // 003F GETMBR R6 R2 K4
- 0x581C0003, // 0040 LDCONST R7 K3
- 0x7C100600, // 0041 CALL R4 3
- 0x70020007, // 0042 JMP #004B
- 0x8C100300, // 0043 GETMET R4 R1 K0
- 0x541A2600, // 0044 LDINT R6 9729
- 0x541DFFFD, // 0045 LDINT R7 -2
- 0x7C100600, // 0046 CALL R4 3
- 0x8C100300, // 0047 GETMET R4 R1 K0
- 0x88180504, // 0048 GETMBR R6 R2 K4
- 0x541E0003, // 0049 LDINT R7 4
- 0x7C100600, // 004A CALL R4 3
- 0x88100505, // 004B GETMBR R4 R2 K5
- 0x541600FE, // 004C LDINT R5 255
- 0x18100805, // 004D LE R4 R4 R5
- 0x78120008, // 004E JMPF R4 #0058
- 0x8C100300, // 004F GETMET R4 R1 K0
- 0x541A2401, // 0050 LDINT R6 9218
- 0x541DFFFD, // 0051 LDINT R7 -2
- 0x7C100600, // 0052 CALL R4 3
- 0x8C100300, // 0053 GETMET R4 R1 K0
- 0x88180505, // 0054 GETMBR R6 R2 K5
- 0x581C0001, // 0055 LDCONST R7 K1
- 0x7C100600, // 0056 CALL R4 3
- 0x70020014, // 0057 JMP #006D
- 0x88100505, // 0058 GETMBR R4 R2 K5
- 0x5416FFFE, // 0059 LDINT R5 65535
- 0x18100805, // 005A LE R4 R4 R5
- 0x78120008, // 005B JMPF R4 #0065
- 0x8C100300, // 005C GETMET R4 R1 K0
- 0x541A2501, // 005D LDINT R6 9474
- 0x541DFFFD, // 005E LDINT R7 -2
- 0x7C100600, // 005F CALL R4 3
- 0x8C100300, // 0060 GETMET R4 R1 K0
- 0x88180505, // 0061 GETMBR R6 R2 K5
- 0x581C0003, // 0062 LDCONST R7 K3
- 0x7C100600, // 0063 CALL R4 3
- 0x70020007, // 0064 JMP #006D
- 0x8C100300, // 0065 GETMET R4 R1 K0
- 0x541A2601, // 0066 LDINT R6 9730
- 0x541DFFFD, // 0067 LDINT R7 -2
- 0x7C100600, // 0068 CALL R4 3
- 0x8C100300, // 0069 GETMET R4 R1 K0
- 0x88180505, // 006A GETMBR R6 R2 K5
- 0x541E0003, // 006B LDINT R7 4
- 0x7C100600, // 006C CALL R4 3
- 0x8C100300, // 006D GETMET R4 R1 K0
- 0x541A0017, // 006E LDINT R6 24
- 0x581C0001, // 006F LDCONST R7 K1
- 0x7C100600, // 0070 CALL R4 3
- 0x4C100000, // 0071 LDNIL R4
- 0x1C100604, // 0072 EQ R4 R3 R4
- 0x78120016, // 0073 JMPF R4 #008B
- 0x88100506, // 0074 GETMBR R4 R2 K6
- 0x4C140000, // 0075 LDNIL R5
- 0x1C140805, // 0076 EQ R5 R4 R5
- 0x78160001, // 0077 JMPF R5 #007A
- 0xB8160E00, // 0078 GETNGBL R5 K7
- 0x88100B08, // 0079 GETMBR R4 R5 K8
- 0x8C140300, // 007A GETMET R5 R1 K0
- 0x541E3500, // 007B LDINT R7 13569
- 0x5421FFFD, // 007C LDINT R8 -2
- 0x7C140600, // 007D CALL R5 3
- 0x8C140300, // 007E GETMET R5 R1 K0
- 0x541E23FF, // 007F LDINT R7 9216
- 0x5421FFFD, // 0080 LDINT R8 -2
- 0x7C140600, // 0081 CALL R5 3
- 0x8C140300, // 0082 GETMET R5 R1 K0
- 0x881C0506, // 0083 GETMBR R7 R2 K6
- 0x58200001, // 0084 LDCONST R8 K1
- 0x7C140600, // 0085 CALL R5 3
- 0x8C140300, // 0086 GETMET R5 R1 K0
- 0x541E0017, // 0087 LDINT R7 24
- 0x58200001, // 0088 LDCONST R8 K1
- 0x7C140600, // 0089 CALL R5 3
- 0x70020003, // 008A JMP #008F
- 0x900E1301, // 008B SETMBR R3 K9 K1
- 0x8C10070A, // 008C GETMET R4 R3 K10
- 0x5C180200, // 008D MOVE R6 R1
- 0x7C100400, // 008E CALL R4 2
- 0x8C100300, // 008F GETMET R4 R1 K0
- 0x541A1817, // 0090 LDINT R6 6168
- 0x541DFFFD, // 0091 LDINT R7 -2
- 0x7C100600, // 0092 CALL R4 3
- 0x80000000, // 0093 RET 0
+ 0x50100200, // 0014 LDBOOL R4 1 0
+ 0x80040800, // 0015 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: every_50ms
+********************************************************************/
+be_local_closure(class_Matter_IM_every_50ms, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(every_50ms),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x88040146, // 0000 GETMBR R1 R0 K70
+ 0x8C040347, // 0001 GETMET R1 R1 K71
+ 0x7C040200, // 0002 CALL R1 1
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: process_invoke_request
+********************************************************************/
+be_local_closure(class_Matter_IM_process_invoke_request, /* name */
+ be_nested_proto(
+ 19, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(process_invoke_request),
+ &be_const_str_solidified,
+ ( &(const binstruction[222]) { /* code */
+ 0xB80E0000, // 0000 GETNGBL R3 K0
+ 0x8C0C0703, // 0001 GETMET R3 R3 K3
+ 0x7C0C0200, // 0002 CALL R3 1
+ 0x900E3E01, // 0003 SETMBR R3 K31 R1
+ 0xB8120000, // 0004 GETNGBL R4 K0
+ 0x8C100948, // 0005 GETMET R4 R4 K72
+ 0x7C100200, // 0006 CALL R4 1
+ 0x8C100902, // 0007 GETMET R4 R4 K2
+ 0x5C180400, // 0008 MOVE R6 R2
+ 0x7C100400, // 0009 CALL R4 2
+ 0x88140949, // 000A GETMBR R5 R4 K73
+ 0x4C180000, // 000B LDNIL R6
+ 0x20140A06, // 000C NE R5 R5 R6
+ 0x781600CE, // 000D JMPF R5 #00DD
+ 0xB8160000, // 000E GETNGBL R5 K0
+ 0x8C140B4A, // 000F GETMET R5 R5 K74
+ 0x7C140200, // 0010 CALL R5 1
+ 0x50180000, // 0011 LDBOOL R6 0 0
+ 0x90160806, // 0012 SETMBR R5 K4 R6
+ 0x60180012, // 0013 GETGBL R6 G18
+ 0x7C180000, // 0014 CALL R6 0
+ 0x90169606, // 0015 SETMBR R5 K75 R6
+ 0x60180010, // 0016 GETGBL R6 G16
+ 0x881C0949, // 0017 GETMBR R7 R4 K73
+ 0x7C180200, // 0018 CALL R6 1
+ 0xA80200AD, // 0019 EXBLK 0 #00C8
+ 0x5C1C0C00, // 001A MOVE R7 R6
+ 0x7C1C0000, // 001B CALL R7 0
+ 0x88200F4C, // 001C GETMBR R8 R7 K76
+ 0x88201112, // 001D GETMBR R8 R8 K18
+ 0x900E2408, // 001E SETMBR R3 K18 R8
+ 0x88200F4C, // 001F GETMBR R8 R7 K76
+ 0x8820110D, // 0020 GETMBR R8 R8 K13
+ 0x900E1A08, // 0021 SETMBR R3 K13 R8
+ 0x88200F4C, // 0022 GETMBR R8 R7 K76
+ 0x8820114D, // 0023 GETMBR R8 R8 K77
+ 0x900E9A08, // 0024 SETMBR R3 K77 R8
+ 0xB8220000, // 0025 GETNGBL R8 K0
+ 0x8820114E, // 0026 GETMBR R8 R8 K78
+ 0x900E1E08, // 0027 SETMBR R3 K15 R8
+ 0xB8220000, // 0028 GETNGBL R8 K0
+ 0x8C20114F, // 0029 GETMET R8 R8 K79
+ 0x8828070D, // 002A GETMBR R10 R3 K13
+ 0x882C074D, // 002B GETMBR R11 R3 K77
+ 0x7C200600, // 002C CALL R8 3
+ 0x60240008, // 002D GETGBL R9 G8
+ 0x5C280600, // 002E MOVE R10 R3
+ 0x7C240200, // 002F CALL R9 1
+ 0x88280109, // 0030 GETMBR R10 R0 K9
+ 0x8C281550, // 0031 GETMET R10 R10 K80
+ 0x88300323, // 0032 GETMBR R12 R1 K35
+ 0x88340F51, // 0033 GETMBR R13 R7 K81
+ 0x5C380600, // 0034 MOVE R14 R3
+ 0x7C280800, // 0035 CALL R10 4
+ 0x882C0717, // 0036 GETMBR R11 R3 K23
+ 0x4C300000, // 0037 LDNIL R12
+ 0x202C160C, // 0038 NE R11 R11 R12
+ 0x782E0005, // 0039 JMPF R11 #0040
+ 0x602C0008, // 003A GETGBL R11 G8
+ 0x88300717, // 003B GETMBR R12 R3 K23
+ 0x7C2C0200, // 003C CALL R11 1
+ 0x002EA40B, // 003D ADD R11 K82 R11
+ 0x002C1753, // 003E ADD R11 R11 K83
+ 0x70020000, // 003F JMP #0041
+ 0x582C001B, // 0040 LDCONST R11 K27
+ 0xB8322E00, // 0041 GETNGBL R12 K23
+ 0x60340018, // 0042 GETGBL R13 G24
+ 0x58380054, // 0043 LDCONST R14 K84
+ 0x883C0323, // 0044 GETMBR R15 R1 K35
+ 0x883C1F36, // 0045 GETMBR R15 R15 K54
+ 0x5C401200, // 0046 MOVE R16 R9
+ 0x78220001, // 0047 JMPF R8 #004A
+ 0x5C441000, // 0048 MOVE R17 R8
+ 0x70020000, // 0049 JMP #004B
+ 0x5844001B, // 004A LDCONST R17 K27
+ 0x5C481600, // 004B MOVE R18 R11
+ 0x7C340A00, // 004C CALL R13 5
+ 0x58380015, // 004D LDCONST R14 K21
+ 0x7C300400, // 004E CALL R12 2
+ 0x4C300000, // 004F LDNIL R12
+ 0x900E2E0C, // 0050 SETMBR R3 K23 R12
+ 0x60300015, // 0051 GETGBL R12 G21
+ 0x5436001F, // 0052 LDINT R13 32
+ 0x7C300200, // 0053 CALL R12 1
+ 0x50340200, // 0054 LDBOOL R13 1 0
+ 0x1C34140D, // 0055 EQ R13 R10 R13
+ 0x74360004, // 0056 JMPT R13 #005C
+ 0x8834070F, // 0057 GETMBR R13 R3 K15
+ 0xB83A0000, // 0058 GETNGBL R14 K0
+ 0x88381D24, // 0059 GETMBR R14 R14 K36
+ 0x1C341A0E, // 005A EQ R13 R13 R14
+ 0x7836001A, // 005B JMPF R13 #0077
+ 0xB8360000, // 005C GETNGBL R13 K0
+ 0x88341B24, // 005D GETMBR R13 R13 K36
+ 0x900E1E0D, // 005E SETMBR R3 K15 R13
+ 0x8C340155, // 005F GETMET R13 R0 K85
+ 0x5C3C1800, // 0060 MOVE R15 R12
+ 0x5C400600, // 0061 MOVE R16 R3
+ 0x4C440000, // 0062 LDNIL R17
+ 0x7C340800, // 0063 CALL R13 4
+ 0x88340B4B, // 0064 GETMBR R13 R5 K75
+ 0x8C341B27, // 0065 GETMET R13 R13 K39
+ 0x5C3C1800, // 0066 MOVE R15 R12
+ 0x7C340400, // 0067 CALL R13 2
+ 0xB8362600, // 0068 GETNGBL R13 K19
+ 0x8C341B14, // 0069 GETMET R13 R13 K20
+ 0x583C0015, // 006A LDCONST R15 K21
+ 0x7C340400, // 006B CALL R13 2
+ 0x78360008, // 006C JMPF R13 #0076
+ 0xB8362E00, // 006D GETNGBL R13 K23
+ 0x60380018, // 006E GETGBL R14 G24
+ 0x583C0056, // 006F LDCONST R15 K86
+ 0x88400323, // 0070 GETMBR R16 R1 K35
+ 0x88402136, // 0071 GETMBR R16 R16 K54
+ 0x88440357, // 0072 GETMBR R17 R1 K87
+ 0x7C380600, // 0073 CALL R14 3
+ 0x583C0015, // 0074 LDCONST R15 K21
+ 0x7C340400, // 0075 CALL R13 2
+ 0x7002004F, // 0076 JMP #00C7
+ 0x4C340000, // 0077 LDNIL R13
+ 0x2034140D, // 0078 NE R13 R10 R13
+ 0x78360021, // 0079 JMPF R13 #009C
+ 0x8C340155, // 007A GETMET R13 R0 K85
+ 0x5C3C1800, // 007B MOVE R15 R12
+ 0x5C400600, // 007C MOVE R16 R3
+ 0x5C441400, // 007D MOVE R17 R10
+ 0x7C340800, // 007E CALL R13 4
+ 0x88340B4B, // 007F GETMBR R13 R5 K75
+ 0x8C341B27, // 0080 GETMET R13 R13 K39
+ 0x5C3C1800, // 0081 MOVE R15 R12
+ 0x7C340400, // 0082 CALL R13 2
+ 0xB8360000, // 0083 GETNGBL R13 K0
+ 0x8C341B4F, // 0084 GETMET R13 R13 K79
+ 0x883C070D, // 0085 GETMBR R15 R3 K13
+ 0x8840074D, // 0086 GETMBR R16 R3 K77
+ 0x7C340600, // 0087 CALL R13 3
+ 0x5C201A00, // 0088 MOVE R8 R13
+ 0x5C341000, // 0089 MOVE R13 R8
+ 0x74360000, // 008A JMPT R13 #008C
+ 0x5820001B, // 008B LDCONST R8 K27
+ 0xB8362600, // 008C GETNGBL R13 K19
+ 0x8C341B14, // 008D GETMET R13 R13 K20
+ 0x583C0015, // 008E LDCONST R15 K21
+ 0x7C340400, // 008F CALL R13 2
+ 0x78360009, // 0090 JMPF R13 #009B
+ 0xB8362E00, // 0091 GETNGBL R13 K23
+ 0x60380018, // 0092 GETGBL R14 G24
+ 0x583C0058, // 0093 LDCONST R15 K88
+ 0x88400323, // 0094 GETMBR R16 R1 K35
+ 0x88402136, // 0095 GETMBR R16 R16 K54
+ 0x5C440600, // 0096 MOVE R17 R3
+ 0x5C481000, // 0097 MOVE R18 R8
+ 0x7C380800, // 0098 CALL R14 4
+ 0x583C0015, // 0099 LDCONST R15 K21
+ 0x7C340400, // 009A CALL R13 2
+ 0x7002002A, // 009B JMP #00C7
+ 0x8834070F, // 009C GETMBR R13 R3 K15
+ 0x4C380000, // 009D LDNIL R14
+ 0x20341A0E, // 009E NE R13 R13 R14
+ 0x78360018, // 009F JMPF R13 #00B9
+ 0x8C340155, // 00A0 GETMET R13 R0 K85
+ 0x5C3C1800, // 00A1 MOVE R15 R12
+ 0x5C400600, // 00A2 MOVE R16 R3
+ 0x4C440000, // 00A3 LDNIL R17
+ 0x7C340800, // 00A4 CALL R13 4
+ 0x88340B4B, // 00A5 GETMBR R13 R5 K75
+ 0x8C341B27, // 00A6 GETMET R13 R13 K39
+ 0x5C3C1800, // 00A7 MOVE R15 R12
+ 0x7C340400, // 00A8 CALL R13 2
+ 0xB8362600, // 00A9 GETNGBL R13 K19
+ 0x8C341B14, // 00AA GETMET R13 R13 K20
+ 0x583C0015, // 00AB LDCONST R15 K21
+ 0x7C340400, // 00AC CALL R13 2
+ 0x78360009, // 00AD JMPF R13 #00B8
+ 0xB8362E00, // 00AE GETNGBL R13 K23
+ 0x60380018, // 00AF GETGBL R14 G24
+ 0x583C0059, // 00B0 LDCONST R15 K89
+ 0x88400323, // 00B1 GETMBR R16 R1 K35
+ 0x88402136, // 00B2 GETMBR R16 R16 K54
+ 0x8844070F, // 00B3 GETMBR R17 R3 K15
+ 0x88480357, // 00B4 GETMBR R18 R1 K87
+ 0x7C380800, // 00B5 CALL R14 4
+ 0x583C0015, // 00B6 LDCONST R15 K21
+ 0x7C340400, // 00B7 CALL R13 2
+ 0x7002000D, // 00B8 JMP #00C7
+ 0xB8362600, // 00B9 GETNGBL R13 K19
+ 0x8C341B14, // 00BA GETMET R13 R13 K20
+ 0x583C0015, // 00BB LDCONST R15 K21
+ 0x7C340400, // 00BC CALL R13 2
+ 0x78360008, // 00BD JMPF R13 #00C7
+ 0xB8362E00, // 00BE GETNGBL R13 K23
+ 0x60380018, // 00BF GETGBL R14 G24
+ 0x583C005A, // 00C0 LDCONST R15 K90
+ 0x88400323, // 00C1 GETMBR R16 R1 K35
+ 0x88402136, // 00C2 GETMBR R16 R16 K54
+ 0x88440357, // 00C3 GETMBR R17 R1 K87
+ 0x7C380600, // 00C4 CALL R14 3
+ 0x583C0015, // 00C5 LDCONST R15 K21
+ 0x7C340400, // 00C6 CALL R13 2
+ 0x7001FF51, // 00C7 JMP #001A
+ 0x58180025, // 00C8 LDCONST R6 K37
+ 0xAC180200, // 00C9 CATCH R6 1 0
+ 0xB0080000, // 00CA RAISE 2 R0 R0
+ 0x6018000C, // 00CB GETGBL R6 G12
+ 0x881C0B4B, // 00CC GETMBR R7 R5 K75
+ 0x7C180200, // 00CD CALL R6 1
+ 0x24180D40, // 00CE GT R6 R6 K64
+ 0x781A0008, // 00CF JMPF R6 #00D9
+ 0x88180126, // 00D0 GETMBR R6 R0 K38
+ 0x8C180D27, // 00D1 GETMET R6 R6 K39
+ 0xB8220000, // 00D2 GETNGBL R8 K0
+ 0x8C20115B, // 00D3 GETMET R8 R8 K91
+ 0x5C280200, // 00D4 MOVE R10 R1
+ 0x5C2C0A00, // 00D5 MOVE R11 R5
+ 0x7C200600, // 00D6 CALL R8 3
+ 0x7C180400, // 00D7 CALL R6 2
+ 0x70020001, // 00D8 JMP #00DB
+ 0x50180000, // 00D9 LDBOOL R6 0 0
+ 0x80040C00, // 00DA RET 1 R6
+ 0x50180200, // 00DB LDBOOL R6 1 0
+ 0x80040C00, // 00DC RET 1 R6
+ 0x80000000, // 00DD RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: process_read_or_subscribe_request_event_pull
+********************************************************************/
+be_local_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull, /* name */
+ be_nested_proto(
+ 24, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(process_read_or_subscribe_request_event_pull),
+ &be_const_str_solidified,
+ ( &(const binstruction[140]) { /* code */
+ 0x880C035C, // 0000 GETMBR R3 R1 K92
+ 0x4C100000, // 0001 LDNIL R4
+ 0x200C0604, // 0002 NE R3 R3 R4
+ 0x780E0085, // 0003 JMPF R3 #008A
+ 0x4C0C0000, // 0004 LDNIL R3
+ 0x4C100000, // 0005 LDNIL R4
+ 0x20100404, // 0006 NE R4 R2 R4
+ 0x78120002, // 0007 JMPF R4 #000B
+ 0x8C10055D, // 0008 GETMET R4 R2 K93
+ 0x7C100200, // 0009 CALL R4 1
+ 0x70020000, // 000A JMP #000C
+ 0x4C100000, // 000B LDNIL R4
+ 0x8814035C, // 000C GETMBR R5 R1 K92
+ 0x78160003, // 000D JMPF R5 #0012
+ 0x6014000C, // 000E GETGBL R5 G12
+ 0x8818035C, // 000F GETMBR R6 R1 K92
+ 0x7C140200, // 0010 CALL R5 1
+ 0x70020000, // 0011 JMP #0013
+ 0x58140040, // 0012 LDCONST R5 K64
+ 0x24180B2A, // 0013 GT R6 R5 K42
+ 0x781A0002, // 0014 JMPF R6 #0018
+ 0x60180012, // 0015 GETGBL R6 G18
+ 0x7C180000, // 0016 CALL R6 0
+ 0x5C0C0C00, // 0017 MOVE R3 R6
+ 0x8C18015E, // 0018 GETMET R6 R0 K94
+ 0x8820035F, // 0019 GETMBR R8 R1 K95
+ 0x5C240800, // 001A MOVE R9 R4
+ 0x7C180600, // 001B CALL R6 3
+ 0x881C035C, // 001C GETMBR R7 R1 K92
+ 0x781E006A, // 001D JMPF R7 #0089
+ 0x601C0010, // 001E GETGBL R7 G16
+ 0x8820035C, // 001F GETMBR R8 R1 K92
+ 0x7C1C0200, // 0020 CALL R7 1
+ 0xA8020063, // 0021 EXBLK 0 #0086
+ 0x5C200E00, // 0022 MOVE R8 R7
+ 0x7C200000, // 0023 CALL R8 0
+ 0xB8260000, // 0024 GETNGBL R9 K0
+ 0x8C241360, // 0025 GETMET R9 R9 K96
+ 0x882C0109, // 0026 GETMBR R11 R0 K9
+ 0x7C240400, // 0027 CALL R9 2
+ 0x8C28131C, // 0028 GETMET R10 R9 K28
+ 0x88301112, // 0029 GETMBR R12 R8 K18
+ 0x8834110D, // 002A GETMBR R13 R8 K13
+ 0x88381161, // 002B GETMBR R14 R8 K97
+ 0x5C3C0C00, // 002C MOVE R15 R6
+ 0x7C280A00, // 002D CALL R10 5
+ 0x24280B2A, // 002E GT R10 R5 K42
+ 0x782A0003, // 002F JMPF R10 #0034
+ 0x8C280727, // 0030 GETMET R10 R3 K39
+ 0x5C301200, // 0031 MOVE R12 R9
+ 0x7C280400, // 0032 CALL R10 2
+ 0x70020000, // 0033 JMP #0035
+ 0x5C0C1200, // 0034 MOVE R3 R9
+ 0xB82A2600, // 0035 GETNGBL R10 K19
+ 0x8C281514, // 0036 GETMET R10 R10 K20
+ 0x58300015, // 0037 LDCONST R12 K21
+ 0x7C280400, // 0038 CALL R10 2
+ 0x782A004A, // 0039 JMPF R10 #0085
+ 0x5828001B, // 003A LDCONST R10 K27
+ 0x882C110D, // 003B GETMBR R11 R8 K13
+ 0x4C300000, // 003C LDNIL R12
+ 0x202C160C, // 003D NE R11 R11 R12
+ 0x782E0011, // 003E JMPF R11 #0051
+ 0x882C1161, // 003F GETMBR R11 R8 K97
+ 0x4C300000, // 0040 LDNIL R12
+ 0x202C160C, // 0041 NE R11 R11 R12
+ 0x782E000D, // 0042 JMPF R11 #0051
+ 0xB82E0000, // 0043 GETNGBL R11 K0
+ 0x8C2C1762, // 0044 GETMET R11 R11 K98
+ 0x8834110D, // 0045 GETMBR R13 R8 K13
+ 0x88381161, // 0046 GETMBR R14 R8 K97
+ 0x7C2C0600, // 0047 CALL R11 3
+ 0x5C281600, // 0048 MOVE R10 R11
+ 0x4C2C0000, // 0049 LDNIL R11
+ 0x202C140B, // 004A NE R11 R10 R11
+ 0x782E0002, // 004B JMPF R11 #004F
+ 0x002EA40A, // 004C ADD R11 K82 R10
+ 0x002C1753, // 004D ADD R11 R11 K83
+ 0x70020000, // 004E JMP #0050
+ 0x582C001B, // 004F LDCONST R11 K27
+ 0x5C281600, // 0050 MOVE R10 R11
+ 0x882C1112, // 0051 GETMBR R11 R8 K18
+ 0x4C300000, // 0052 LDNIL R12
+ 0x202C160C, // 0053 NE R11 R11 R12
+ 0x782E0004, // 0054 JMPF R11 #005A
+ 0x602C0018, // 0055 GETGBL R11 G24
+ 0x58300063, // 0056 LDCONST R12 K99
+ 0x88341112, // 0057 GETMBR R13 R8 K18
+ 0x7C2C0400, // 0058 CALL R11 2
+ 0x70020000, // 0059 JMP #005B
+ 0x582C0064, // 005A LDCONST R11 K100
+ 0x8830110D, // 005B GETMBR R12 R8 K13
+ 0x4C340000, // 005C LDNIL R13
+ 0x2030180D, // 005D NE R12 R12 R13
+ 0x78320004, // 005E JMPF R12 #0064
+ 0x60300018, // 005F GETGBL R12 G24
+ 0x58340065, // 0060 LDCONST R13 K101
+ 0x8838110D, // 0061 GETMBR R14 R8 K13
+ 0x7C300400, // 0062 CALL R12 2
+ 0x70020000, // 0063 JMP #0065
+ 0x58300066, // 0064 LDCONST R12 K102
+ 0x88341161, // 0065 GETMBR R13 R8 K97
+ 0x4C380000, // 0066 LDNIL R14
+ 0x20341A0E, // 0067 NE R13 R13 R14
+ 0x78360004, // 0068 JMPF R13 #006E
+ 0x60340018, // 0069 GETGBL R13 G24
+ 0x58380063, // 006A LDCONST R14 K99
+ 0x883C1161, // 006B GETMBR R15 R8 K97
+ 0x7C340400, // 006C CALL R13 2
+ 0x70020000, // 006D JMP #006F
+ 0x58340064, // 006E LDCONST R13 K100
+ 0x4C380000, // 006F LDNIL R14
+ 0x20380C0E, // 0070 NE R14 R6 R14
+ 0x783A0004, // 0071 JMPF R14 #0077
+ 0x60380018, // 0072 GETGBL R14 G24
+ 0x583C0067, // 0073 LDCONST R15 K103
+ 0x5C400C00, // 0074 MOVE R16 R6
+ 0x7C380400, // 0075 CALL R14 2
+ 0x70020000, // 0076 JMP #0078
+ 0x5838001B, // 0077 LDCONST R14 K27
+ 0xB83E2E00, // 0078 GETNGBL R15 K23
+ 0x60400018, // 0079 GETGBL R16 G24
+ 0x58440068, // 007A LDCONST R17 K104
+ 0x88480523, // 007B GETMBR R18 R2 K35
+ 0x88482536, // 007C GETMBR R18 R18 K54
+ 0x5C4C1600, // 007D MOVE R19 R11
+ 0x5C501800, // 007E MOVE R20 R12
+ 0x5C541A00, // 007F MOVE R21 R13
+ 0x5C581400, // 0080 MOVE R22 R10
+ 0x5C5C1C00, // 0081 MOVE R23 R14
+ 0x7C400E00, // 0082 CALL R16 7
+ 0x58440015, // 0083 LDCONST R17 K21
+ 0x7C3C0400, // 0084 CALL R15 2
+ 0x7001FF9B, // 0085 JMP #0022
+ 0x581C0025, // 0086 LDCONST R7 K37
+ 0xAC1C0200, // 0087 CATCH R7 1 0
+ 0xB0080000, // 0088 RAISE 2 R0 R0
+ 0x80040600, // 0089 RET 1 R3
+ 0x4C0C0000, // 008A LDNIL R3
+ 0x80040600, // 008B RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: send_enqueued
+********************************************************************/
+be_local_closure(class_Matter_IM_send_enqueued, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(send_enqueued),
+ &be_const_str_solidified,
+ ( &(const binstruction[25]) { /* code */
+ 0x58080040, // 0000 LDCONST R2 K64
+ 0x600C000C, // 0001 GETGBL R3 G12
+ 0x88100126, // 0002 GETMBR R4 R0 K38
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x140C0403, // 0004 LT R3 R2 R3
+ 0x780E0011, // 0005 JMPF R3 #0018
+ 0x880C0126, // 0006 GETMBR R3 R0 K38
+ 0x940C0602, // 0007 GETIDX R3 R3 R2
+ 0x88100769, // 0008 GETMBR R4 R3 K105
+ 0x74120004, // 0009 JMPT R4 #000F
+ 0x8810076A, // 000A GETMBR R4 R3 K106
+ 0x78120002, // 000B JMPF R4 #000F
+ 0x8C10076B, // 000C GETMET R4 R3 K107
+ 0x5C180200, // 000D MOVE R6 R1
+ 0x7C100400, // 000E CALL R4 2
+ 0x88100769, // 000F GETMBR R4 R3 K105
+ 0x78120004, // 0010 JMPF R4 #0016
+ 0x8C10016C, // 0011 GETMET R4 R0 K108
+ 0x8818076D, // 0012 GETMBR R6 R3 K109
+ 0x88180D57, // 0013 GETMBR R6 R6 K87
+ 0x7C100400, // 0014 CALL R4 2
+ 0x70020000, // 0015 JMP #0017
+ 0x0008052A, // 0016 ADD R2 R2 K42
+ 0x7001FFE8, // 0017 JMP #0001
+ 0x80000000, // 0018 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: subscribe_request
+********************************************************************/
+be_local_closure(class_Matter_IM_subscribe_request, /* name */
+ be_nested_proto(
+ 17, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(subscribe_request),
+ &be_const_str_solidified,
+ ( &(const binstruction[96]) { /* code */
+ 0xB80E0000, // 0000 GETNGBL R3 K0
+ 0x8C0C076E, // 0001 GETMET R3 R3 K110
+ 0x7C0C0200, // 0002 CALL R3 1
+ 0x8C0C0702, // 0003 GETMET R3 R3 K2
+ 0x5C140400, // 0004 MOVE R5 R2
+ 0x7C0C0400, // 0005 CALL R3 2
+ 0x8810076F, // 0006 GETMBR R4 R3 K111
+ 0x74120003, // 0007 JMPT R4 #000C
+ 0x88100146, // 0008 GETMBR R4 R0 K70
+ 0x8C100970, // 0009 GETMET R4 R4 K112
+ 0x88180323, // 000A GETMBR R6 R1 K35
+ 0x7C100400, // 000B CALL R4 2
+ 0x88100146, // 000C GETMBR R4 R0 K70
+ 0x8C100971, // 000D GETMET R4 R4 K113
+ 0x88180323, // 000E GETMBR R6 R1 K35
+ 0x5C1C0600, // 000F MOVE R7 R3
+ 0x7C100600, // 0010 CALL R4 3
+ 0xB8162600, // 0011 GETNGBL R5 K19
+ 0x8C140B14, // 0012 GETMET R5 R5 K20
+ 0x581C0015, // 0013 LDCONST R7 K21
+ 0x7C140400, // 0014 CALL R5 2
+ 0x78160032, // 0015 JMPF R5 #0049
+ 0x88140732, // 0016 GETMBR R5 R3 K50
+ 0x4C180000, // 0017 LDNIL R6
+ 0x20140A06, // 0018 NE R5 R5 R6
+ 0x7816002E, // 0019 JMPF R5 #0049
+ 0x60140012, // 001A GETGBL R5 G18
+ 0x7C140000, // 001B CALL R5 0
+ 0xB81A0000, // 001C GETNGBL R6 K0
+ 0x8C180D03, // 001D GETMET R6 R6 K3
+ 0x7C180200, // 001E CALL R6 1
+ 0x901A3E01, // 001F SETMBR R6 K31 R1
+ 0x601C0010, // 0020 GETGBL R7 G16
+ 0x88200732, // 0021 GETMBR R8 R3 K50
+ 0x7C1C0200, // 0022 CALL R7 1
+ 0xA802000D, // 0023 EXBLK 0 #0032
+ 0x5C200E00, // 0024 MOVE R8 R7
+ 0x7C200000, // 0025 CALL R8 0
+ 0x88241112, // 0026 GETMBR R9 R8 K18
+ 0x901A2409, // 0027 SETMBR R6 K18 R9
+ 0x8824110D, // 0028 GETMBR R9 R8 K13
+ 0x901A1A09, // 0029 SETMBR R6 K13 R9
+ 0x8824110E, // 002A GETMBR R9 R8 K14
+ 0x901A1C09, // 002B SETMBR R6 K14 R9
+ 0x8C240B27, // 002C GETMET R9 R5 K39
+ 0x602C0008, // 002D GETGBL R11 G8
+ 0x5C300C00, // 002E MOVE R12 R6
+ 0x7C2C0200, // 002F CALL R11 1
+ 0x7C240400, // 0030 CALL R9 2
+ 0x7001FFF1, // 0031 JMP #0024
+ 0x581C0025, // 0032 LDCONST R7 K37
+ 0xAC1C0200, // 0033 CATCH R7 1 0
+ 0xB0080000, // 0034 RAISE 2 R0 R0
+ 0xB81E2E00, // 0035 GETNGBL R7 K23
+ 0x60200018, // 0036 GETGBL R8 G24
+ 0x58240072, // 0037 LDCONST R9 K114
+ 0x88280323, // 0038 GETMBR R10 R1 K35
+ 0x88281536, // 0039 GETMBR R10 R10 K54
+ 0x8C2C0B73, // 003A GETMET R11 R5 K115
+ 0x58340074, // 003B LDCONST R13 K116
+ 0x7C2C0400, // 003C CALL R11 2
+ 0x88300975, // 003D GETMBR R12 R4 K117
+ 0x88340976, // 003E GETMBR R13 R4 K118
+ 0x8838076F, // 003F GETMBR R14 R3 K111
+ 0x783A0001, // 0040 JMPF R14 #0043
+ 0x5838002A, // 0041 LDCONST R14 K42
+ 0x70020000, // 0042 JMP #0044
+ 0x58380040, // 0043 LDCONST R14 K64
+ 0x883C0937, // 0044 GETMBR R15 R4 K55
+ 0x88400731, // 0045 GETMBR R16 R3 K49
+ 0x7C201000, // 0046 CALL R8 8
+ 0x58240015, // 0047 LDCONST R9 K21
+ 0x7C1C0400, // 0048 CALL R7 2
+ 0x8C140139, // 0049 GETMET R5 R0 K57
+ 0x5C1C0600, // 004A MOVE R7 R3
+ 0x5C200200, // 004B MOVE R8 R1
+ 0x7C140600, // 004C CALL R5 3
+ 0x8C18013E, // 004D GETMET R6 R0 K62
+ 0x5C200600, // 004E MOVE R8 R3
+ 0x5C240200, // 004F MOVE R9 R1
+ 0x7C180600, // 0050 CALL R6 3
+ 0x8C1C0977, // 0051 GETMET R7 R4 K119
+ 0x5C240C00, // 0052 MOVE R9 R6
+ 0x7C1C0400, // 0053 CALL R7 2
+ 0x881C0126, // 0054 GETMBR R7 R0 K38
+ 0x8C1C0F27, // 0055 GETMET R7 R7 K39
+ 0xB8260000, // 0056 GETNGBL R9 K0
+ 0x8C241378, // 0057 GETMET R9 R9 K120
+ 0x5C2C0200, // 0058 MOVE R11 R1
+ 0x5C300A00, // 0059 MOVE R12 R5
+ 0x5C340C00, // 005A MOVE R13 R6
+ 0x5C380800, // 005B MOVE R14 R4
+ 0x7C240A00, // 005C CALL R9 5
+ 0x7C1C0400, // 005D CALL R7 2
+ 0x501C0200, // 005E LDBOOL R7 1 0
+ 0x80040E00, // 005F RET 1 R7
})
)
);
@@ -810,22 +1481,17 @@ be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */
/********************************************************************
** Solidified function: send_ack_now
********************************************************************/
-extern const bclass be_class_Matter_IM;
be_local_closure(class_Matter_IM_send_ack_now, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(session),
- /* K1 */ be_nested_str_weak(_message_handler),
- /* K2 */ be_nested_str_weak(send_encrypted_ack),
- }),
+ &be_ktab_class_Matter_IM, /* shared constants */
be_str_weak(send_ack_now),
&be_const_str_solidified,
( &(const binstruction[11]) { /* code */
@@ -833,9 +1499,9 @@ be_local_closure(class_Matter_IM_send_ack_now, /* name */
0x1C080202, // 0001 EQ R2 R1 R2
0x780A0000, // 0002 JMPF R2 #0004
0x80000400, // 0003 RET 0
- 0x88080300, // 0004 GETMBR R2 R1 K0
- 0x88080501, // 0005 GETMBR R2 R2 K1
- 0x8C080502, // 0006 GETMET R2 R2 K2
+ 0x88080323, // 0004 GETMBR R2 R1 K35
+ 0x8808053C, // 0005 GETMBR R2 R2 K60
+ 0x8C080579, // 0006 GETMET R2 R2 K121
0x5C100200, // 0007 MOVE R4 R1
0x50140000, // 0008 LDBOOL R5 0 0
0x7C080600, // 0009 CALL R2 3
@@ -847,300 +1513,46 @@ be_local_closure(class_Matter_IM_send_ack_now, /* name */
/********************************************************************
-** Solidified function: process_invoke_request
+** Solidified function: expire_sendqueue
********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_process_invoke_request, /* name */
+be_local_closure(class_Matter_IM_expire_sendqueue, /* name */
be_nested_proto(
- 20, /* nstack */
- 3, /* argc */
- 2, /* varg */
+ 6, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[43]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(profiler),
- /* K2 */ be_nested_str_weak(log),
- /* K3 */ be_nested_str_weak(invoke_request_start),
- /* K4 */ be_nested_str_weak(Path),
- /* K5 */ be_nested_str_weak(msg),
- /* K6 */ be_nested_str_weak(InvokeRequestMessage),
- /* K7 */ be_nested_str_weak(from_TLV),
- /* K8 */ be_nested_str_weak(invoke_requests),
- /* K9 */ be_nested_str_weak(InvokeResponseMessage),
- /* K10 */ be_nested_str_weak(suppress_response),
- /* K11 */ be_nested_str_weak(invoke_responses),
- /* K12 */ be_nested_str_weak(endpoint),
- /* K13 */ be_nested_str_weak(command_path),
- /* K14 */ be_nested_str_weak(cluster),
- /* K15 */ be_nested_str_weak(command),
- /* K16 */ be_nested_str_weak(status),
- /* K17 */ be_nested_str_weak(UNSUPPORTED_COMMAND),
- /* K18 */ be_nested_str_weak(get_command_name),
- /* K19 */ be_nested_str_weak(device),
- /* K20 */ be_nested_str_weak(invoke_request),
- /* K21 */ be_nested_str_weak(session),
- /* K22 */ be_nested_str_weak(command_fields),
- /* K23 */ be_nested_str_weak(COMMAND_X20DONE),
- /* K24 */ be_nested_str_weak(_X28),
- /* K25 */ be_nested_str_weak(_X29_X20),
- /* K26 */ be_nested_str_weak(),
- /* K27 */ be_nested_str_weak(tasmota),
- /* K28 */ be_nested_str_weak(MTR_X3A_X20_X3ECommand_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s_X20_X25s),
- /* K29 */ be_nested_str_weak(local_session_id),
- /* K30 */ be_const_int(3),
- /* K31 */ be_nested_str_weak(SUCCESS),
- /* K32 */ be_nested_str_weak(invokeresponse2raw),
- /* K33 */ be_nested_str_weak(push),
- /* K34 */ be_nested_str_weak(loglevel),
- /* K35 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20OK_X20exch_X3D_X25i),
- /* K36 */ be_nested_str_weak(exchange_id),
- /* K37 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s_X20_X25s),
- /* K38 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20Status_X3D0x_X2502X_X20exch_X3D_X25i),
- /* K39 */ be_nested_str_weak(MTR_X3A_X20_Ignore_X20_X20_X20_X20_X28_X256i_X29_X20exch_X3D_X25i),
- /* K40 */ be_nested_str_weak(stop_iteration),
- /* K41 */ be_const_int(0),
- /* K42 */ be_nested_str_weak(send_invoke_response),
- }),
- be_str_weak(process_invoke_request),
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(expire_sendqueue),
&be_const_str_solidified,
- ( &(const binstruction[233]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x8C0C0702, // 0002 GETMET R3 R3 K2
- 0x58140003, // 0003 LDCONST R5 K3
- 0x7C0C0400, // 0004 CALL R3 2
- 0xB80E0000, // 0005 GETNGBL R3 K0
- 0x8C0C0704, // 0006 GETMET R3 R3 K4
- 0x7C0C0200, // 0007 CALL R3 1
- 0x900E0A01, // 0008 SETMBR R3 K5 R1
- 0xB8120000, // 0009 GETNGBL R4 K0
- 0x8C100906, // 000A GETMET R4 R4 K6
- 0x7C100200, // 000B CALL R4 1
- 0x8C100907, // 000C GETMET R4 R4 K7
- 0x5C180400, // 000D MOVE R6 R2
- 0x7C100400, // 000E CALL R4 2
- 0x88140908, // 000F GETMBR R5 R4 K8
- 0x4C180000, // 0010 LDNIL R6
- 0x20140A06, // 0011 NE R5 R5 R6
- 0x781600D4, // 0012 JMPF R5 #00E8
- 0xB8160000, // 0013 GETNGBL R5 K0
- 0x8C140B09, // 0014 GETMET R5 R5 K9
- 0x7C140200, // 0015 CALL R5 1
- 0x50180000, // 0016 LDBOOL R6 0 0
- 0x90161406, // 0017 SETMBR R5 K10 R6
- 0x60180012, // 0018 GETGBL R6 G18
- 0x7C180000, // 0019 CALL R6 0
- 0x90161606, // 001A SETMBR R5 K11 R6
- 0x60180010, // 001B GETGBL R6 G16
- 0x881C0908, // 001C GETMBR R7 R4 K8
- 0x7C180200, // 001D CALL R6 1
- 0xA80200B7, // 001E EXBLK 0 #00D7
- 0x5C1C0C00, // 001F MOVE R7 R6
- 0x7C1C0000, // 0020 CALL R7 0
- 0x88200F0D, // 0021 GETMBR R8 R7 K13
- 0x8820110C, // 0022 GETMBR R8 R8 K12
- 0x900E1808, // 0023 SETMBR R3 K12 R8
- 0x88200F0D, // 0024 GETMBR R8 R7 K13
- 0x8820110E, // 0025 GETMBR R8 R8 K14
- 0x900E1C08, // 0026 SETMBR R3 K14 R8
- 0x88200F0D, // 0027 GETMBR R8 R7 K13
- 0x8820110F, // 0028 GETMBR R8 R8 K15
- 0x900E1E08, // 0029 SETMBR R3 K15 R8
- 0xB8220000, // 002A GETNGBL R8 K0
- 0x88201111, // 002B GETMBR R8 R8 K17
- 0x900E2008, // 002C SETMBR R3 K16 R8
- 0xB8220000, // 002D GETNGBL R8 K0
- 0x8C201112, // 002E GETMET R8 R8 K18
- 0x8828070E, // 002F GETMBR R10 R3 K14
- 0x882C070F, // 0030 GETMBR R11 R3 K15
- 0x7C200600, // 0031 CALL R8 3
- 0x60240008, // 0032 GETGBL R9 G8
- 0x5C280600, // 0033 MOVE R10 R3
- 0x7C240200, // 0034 CALL R9 1
- 0x88280113, // 0035 GETMBR R10 R0 K19
- 0x8C281514, // 0036 GETMET R10 R10 K20
- 0x88300315, // 0037 GETMBR R12 R1 K21
- 0x88340F16, // 0038 GETMBR R13 R7 K22
- 0x5C380600, // 0039 MOVE R14 R3
- 0x7C280800, // 003A CALL R10 4
- 0xB82E0000, // 003B GETNGBL R11 K0
- 0x882C1701, // 003C GETMBR R11 R11 K1
- 0x8C2C1702, // 003D GETMET R11 R11 K2
- 0x58340017, // 003E LDCONST R13 K23
- 0x7C2C0400, // 003F CALL R11 2
- 0x882C0702, // 0040 GETMBR R11 R3 K2
- 0x4C300000, // 0041 LDNIL R12
- 0x202C160C, // 0042 NE R11 R11 R12
- 0x782E0005, // 0043 JMPF R11 #004A
- 0x602C0008, // 0044 GETGBL R11 G8
- 0x88300702, // 0045 GETMBR R12 R3 K2
- 0x7C2C0200, // 0046 CALL R11 1
- 0x002E300B, // 0047 ADD R11 K24 R11
- 0x002C1719, // 0048 ADD R11 R11 K25
- 0x70020000, // 0049 JMP #004B
- 0x582C001A, // 004A LDCONST R11 K26
- 0xB8323600, // 004B GETNGBL R12 K27
- 0x8C301902, // 004C GETMET R12 R12 K2
- 0x60380018, // 004D GETGBL R14 G24
- 0x583C001C, // 004E LDCONST R15 K28
- 0x88400315, // 004F GETMBR R16 R1 K21
- 0x8840211D, // 0050 GETMBR R16 R16 K29
- 0x5C441200, // 0051 MOVE R17 R9
- 0x78220001, // 0052 JMPF R8 #0055
- 0x5C481000, // 0053 MOVE R18 R8
- 0x70020000, // 0054 JMP #0056
- 0x5848001A, // 0055 LDCONST R18 K26
- 0x5C4C1600, // 0056 MOVE R19 R11
- 0x7C380A00, // 0057 CALL R14 5
- 0x583C001E, // 0058 LDCONST R15 K30
- 0x7C300600, // 0059 CALL R12 3
- 0x4C300000, // 005A LDNIL R12
- 0x900E040C, // 005B SETMBR R3 K2 R12
- 0x60300015, // 005C GETGBL R12 G21
- 0x5436001F, // 005D LDINT R13 32
- 0x7C300200, // 005E CALL R12 1
- 0x50340200, // 005F LDBOOL R13 1 0
- 0x1C34140D, // 0060 EQ R13 R10 R13
- 0x74360004, // 0061 JMPT R13 #0067
- 0x88340710, // 0062 GETMBR R13 R3 K16
- 0xB83A0000, // 0063 GETNGBL R14 K0
- 0x88381D1F, // 0064 GETMBR R14 R14 K31
- 0x1C341A0E, // 0065 EQ R13 R13 R14
- 0x7836001B, // 0066 JMPF R13 #0083
- 0xB8360000, // 0067 GETNGBL R13 K0
- 0x88341B1F, // 0068 GETMBR R13 R13 K31
- 0x900E200D, // 0069 SETMBR R3 K16 R13
- 0x8C340120, // 006A GETMET R13 R0 K32
- 0x5C3C1800, // 006B MOVE R15 R12
- 0x5C400600, // 006C MOVE R16 R3
- 0x4C440000, // 006D LDNIL R17
- 0x7C340800, // 006E CALL R13 4
- 0x88340B0B, // 006F GETMBR R13 R5 K11
- 0x8C341B21, // 0070 GETMET R13 R13 K33
- 0x5C3C1800, // 0071 MOVE R15 R12
- 0x7C340400, // 0072 CALL R13 2
- 0xB8363600, // 0073 GETNGBL R13 K27
- 0x8C341B22, // 0074 GETMET R13 R13 K34
- 0x583C001E, // 0075 LDCONST R15 K30
- 0x7C340400, // 0076 CALL R13 2
- 0x78360009, // 0077 JMPF R13 #0082
- 0xB8363600, // 0078 GETNGBL R13 K27
- 0x8C341B02, // 0079 GETMET R13 R13 K2
- 0x603C0018, // 007A GETGBL R15 G24
- 0x58400023, // 007B LDCONST R16 K35
- 0x88440315, // 007C GETMBR R17 R1 K21
- 0x8844231D, // 007D GETMBR R17 R17 K29
- 0x88480324, // 007E GETMBR R18 R1 K36
- 0x7C3C0600, // 007F CALL R15 3
- 0x5840001E, // 0080 LDCONST R16 K30
- 0x7C340600, // 0081 CALL R13 3
- 0x70020052, // 0082 JMP #00D6
- 0x4C340000, // 0083 LDNIL R13
- 0x2034140D, // 0084 NE R13 R10 R13
- 0x78360022, // 0085 JMPF R13 #00A9
- 0x8C340120, // 0086 GETMET R13 R0 K32
- 0x5C3C1800, // 0087 MOVE R15 R12
- 0x5C400600, // 0088 MOVE R16 R3
- 0x5C441400, // 0089 MOVE R17 R10
- 0x7C340800, // 008A CALL R13 4
- 0x88340B0B, // 008B GETMBR R13 R5 K11
- 0x8C341B21, // 008C GETMET R13 R13 K33
- 0x5C3C1800, // 008D MOVE R15 R12
- 0x7C340400, // 008E CALL R13 2
- 0xB8360000, // 008F GETNGBL R13 K0
- 0x8C341B12, // 0090 GETMET R13 R13 K18
- 0x883C070E, // 0091 GETMBR R15 R3 K14
- 0x8840070F, // 0092 GETMBR R16 R3 K15
- 0x7C340600, // 0093 CALL R13 3
- 0x5C201A00, // 0094 MOVE R8 R13
- 0x5C341000, // 0095 MOVE R13 R8
- 0x74360000, // 0096 JMPT R13 #0098
- 0x5820001A, // 0097 LDCONST R8 K26
- 0xB8363600, // 0098 GETNGBL R13 K27
- 0x8C341B22, // 0099 GETMET R13 R13 K34
- 0x583C001E, // 009A LDCONST R15 K30
- 0x7C340400, // 009B CALL R13 2
- 0x7836000A, // 009C JMPF R13 #00A8
- 0xB8363600, // 009D GETNGBL R13 K27
- 0x8C341B02, // 009E GETMET R13 R13 K2
- 0x603C0018, // 009F GETGBL R15 G24
- 0x58400025, // 00A0 LDCONST R16 K37
- 0x88440315, // 00A1 GETMBR R17 R1 K21
- 0x8844231D, // 00A2 GETMBR R17 R17 K29
- 0x5C480600, // 00A3 MOVE R18 R3
- 0x5C4C1000, // 00A4 MOVE R19 R8
- 0x7C3C0800, // 00A5 CALL R15 4
- 0x5840001E, // 00A6 LDCONST R16 K30
- 0x7C340600, // 00A7 CALL R13 3
- 0x7002002C, // 00A8 JMP #00D6
- 0x88340710, // 00A9 GETMBR R13 R3 K16
- 0x4C380000, // 00AA LDNIL R14
- 0x20341A0E, // 00AB NE R13 R13 R14
- 0x78360019, // 00AC JMPF R13 #00C7
- 0x8C340120, // 00AD GETMET R13 R0 K32
- 0x5C3C1800, // 00AE MOVE R15 R12
- 0x5C400600, // 00AF MOVE R16 R3
- 0x4C440000, // 00B0 LDNIL R17
- 0x7C340800, // 00B1 CALL R13 4
- 0x88340B0B, // 00B2 GETMBR R13 R5 K11
- 0x8C341B21, // 00B3 GETMET R13 R13 K33
- 0x5C3C1800, // 00B4 MOVE R15 R12
- 0x7C340400, // 00B5 CALL R13 2
- 0xB8363600, // 00B6 GETNGBL R13 K27
- 0x8C341B22, // 00B7 GETMET R13 R13 K34
- 0x583C001E, // 00B8 LDCONST R15 K30
- 0x7C340400, // 00B9 CALL R13 2
- 0x7836000A, // 00BA JMPF R13 #00C6
- 0xB8363600, // 00BB GETNGBL R13 K27
- 0x8C341B02, // 00BC GETMET R13 R13 K2
- 0x603C0018, // 00BD GETGBL R15 G24
- 0x58400026, // 00BE LDCONST R16 K38
- 0x88440315, // 00BF GETMBR R17 R1 K21
- 0x8844231D, // 00C0 GETMBR R17 R17 K29
- 0x88480710, // 00C1 GETMBR R18 R3 K16
- 0x884C0324, // 00C2 GETMBR R19 R1 K36
- 0x7C3C0800, // 00C3 CALL R15 4
- 0x5840001E, // 00C4 LDCONST R16 K30
- 0x7C340600, // 00C5 CALL R13 3
- 0x7002000E, // 00C6 JMP #00D6
- 0xB8363600, // 00C7 GETNGBL R13 K27
- 0x8C341B22, // 00C8 GETMET R13 R13 K34
- 0x583C001E, // 00C9 LDCONST R15 K30
- 0x7C340400, // 00CA CALL R13 2
- 0x78360009, // 00CB JMPF R13 #00D6
- 0xB8363600, // 00CC GETNGBL R13 K27
- 0x8C341B02, // 00CD GETMET R13 R13 K2
- 0x603C0018, // 00CE GETGBL R15 G24
- 0x58400027, // 00CF LDCONST R16 K39
- 0x88440315, // 00D0 GETMBR R17 R1 K21
- 0x8844231D, // 00D1 GETMBR R17 R17 K29
- 0x88480324, // 00D2 GETMBR R18 R1 K36
- 0x7C3C0600, // 00D3 CALL R15 3
- 0x5840001E, // 00D4 LDCONST R16 K30
- 0x7C340600, // 00D5 CALL R13 3
- 0x7001FF47, // 00D6 JMP #001F
- 0x58180028, // 00D7 LDCONST R6 K40
- 0xAC180200, // 00D8 CATCH R6 1 0
- 0xB0080000, // 00D9 RAISE 2 R0 R0
- 0x6018000C, // 00DA GETGBL R6 G12
- 0x881C0B0B, // 00DB GETMBR R7 R5 K11
- 0x7C180200, // 00DC CALL R6 1
- 0x24180D29, // 00DD GT R6 R6 K41
- 0x781A0004, // 00DE JMPF R6 #00E4
- 0x8C18012A, // 00DF GETMET R6 R0 K42
- 0x5C200200, // 00E0 MOVE R8 R1
- 0x5C240A00, // 00E1 MOVE R9 R5
- 0x7C180600, // 00E2 CALL R6 3
- 0x70020001, // 00E3 JMP #00E6
- 0x50180000, // 00E4 LDBOOL R6 0 0
- 0x80040C00, // 00E5 RET 1 R6
- 0x50180200, // 00E6 LDBOOL R6 1 0
- 0x80040C00, // 00E7 RET 1 R6
- 0x80000000, // 00E8 RET 0
+ ( &(const binstruction[24]) { /* code */
+ 0x58040040, // 0000 LDCONST R1 K64
+ 0x6008000C, // 0001 GETGBL R2 G12
+ 0x880C0126, // 0002 GETMBR R3 R0 K38
+ 0x7C080200, // 0003 CALL R2 1
+ 0x14080202, // 0004 LT R2 R1 R2
+ 0x780A000F, // 0005 JMPF R2 #0016
+ 0x88080126, // 0006 GETMBR R2 R0 K38
+ 0x94080401, // 0007 GETIDX R2 R2 R1
+ 0xB80E2600, // 0008 GETNGBL R3 K19
+ 0x8C0C077A, // 0009 GETMET R3 R3 K122
+ 0x8814057B, // 000A GETMBR R5 R2 K123
+ 0x7C0C0400, // 000B CALL R3 2
+ 0x780E0006, // 000C JMPF R3 #0014
+ 0x8C0C057C, // 000D GETMET R3 R2 K124
+ 0x7C0C0200, // 000E CALL R3 1
+ 0x880C0126, // 000F GETMBR R3 R0 K38
+ 0x8C0C077D, // 0010 GETMET R3 R3 K125
+ 0x5C140200, // 0011 MOVE R5 R1
+ 0x7C0C0400, // 0012 CALL R3 2
+ 0x70020000, // 0013 JMP #0015
+ 0x0004032A, // 0014 ADD R1 R1 K42
+ 0x7001FFEA, // 0015 JMP #0001
+ 0x4C080000, // 0016 LDNIL R2
+ 0x80040400, // 0017 RET 1 R2
})
)
);
@@ -1148,724 +1560,37 @@ be_local_closure(class_Matter_IM_process_invoke_request, /* name */
/********************************************************************
-** Solidified function: process_read_request
+** Solidified function: process_incoming_ack
********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_process_read_request, /* name */
+be_local_closure(class_Matter_IM_process_incoming_ack, /* name */
be_nested_proto(
- 9, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_IM,
- 1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(profiler),
- /* K2 */ be_nested_str_weak(log),
- /* K3 */ be_nested_str_weak(read_request_start),
- /* K4 */ be_nested_str_weak(ReadRequestMessage),
- /* K5 */ be_nested_str_weak(from_TLV),
- /* K6 */ be_nested_str_weak(attributes_requests),
- /* K7 */ be_nested_str_weak(_inner_process_read_request),
- /* K8 */ be_nested_str_weak(session),
- /* K9 */ be_nested_str_weak(send_report_data),
- }),
- be_str_weak(process_read_request),
- &be_const_str_solidified,
- ( &(const binstruction[26]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
- 0x8C0C0702, // 0002 GETMET R3 R3 K2
- 0x58140003, // 0003 LDCONST R5 K3
- 0x7C0C0400, // 0004 CALL R3 2
- 0xB80E0000, // 0005 GETNGBL R3 K0
- 0x8C0C0704, // 0006 GETMET R3 R3 K4
- 0x7C0C0200, // 0007 CALL R3 1
- 0x8C0C0705, // 0008 GETMET R3 R3 K5
- 0x5C140400, // 0009 MOVE R5 R2
- 0x7C0C0400, // 000A CALL R3 2
- 0x88100706, // 000B GETMBR R4 R3 K6
- 0x4C140000, // 000C LDNIL R5
- 0x20100805, // 000D NE R4 R4 R5
- 0x78120008, // 000E JMPF R4 #0018
- 0x8C100107, // 000F GETMET R4 R0 K7
- 0x88180308, // 0010 GETMBR R6 R1 K8
- 0x5C1C0600, // 0011 MOVE R7 R3
- 0x5C200200, // 0012 MOVE R8 R1
- 0x7C100800, // 0013 CALL R4 4
- 0x8C140109, // 0014 GETMET R5 R0 K9
- 0x5C1C0200, // 0015 MOVE R7 R1
- 0x5C200800, // 0016 MOVE R8 R4
- 0x7C140600, // 0017 CALL R5 3
- 0x50100200, // 0018 LDBOOL R4 1 0
- 0x80040800, // 0019 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: send_invoke_response
-********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_send_invoke_response, /* name */
- be_nested_proto(
- 9, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_IM,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(send_queue),
- /* K1 */ be_nested_str_weak(push),
- /* K2 */ be_nested_str_weak(matter),
- /* K3 */ be_nested_str_weak(IM_InvokeResponse),
- }),
- be_str_weak(send_invoke_response),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0xB8160400, // 0002 GETNGBL R5 K2
- 0x8C140B03, // 0003 GETMET R5 R5 K3
- 0x5C1C0200, // 0004 MOVE R7 R1
- 0x5C200400, // 0005 MOVE R8 R2
- 0x7C140600, // 0006 CALL R5 3
- 0x7C0C0400, // 0007 CALL R3 2
- 0x80000000, // 0008 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: send_write_response
-********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_send_write_response, /* name */
- be_nested_proto(
- 9, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_IM,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(send_queue),
- /* K1 */ be_nested_str_weak(push),
- /* K2 */ be_nested_str_weak(matter),
- /* K3 */ be_nested_str_weak(IM_WriteResponse),
- }),
- be_str_weak(send_write_response),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0xB8160400, // 0002 GETNGBL R5 K2
- 0x8C140B03, // 0003 GETMET R5 R5 K3
- 0x5C1C0200, // 0004 MOVE R7 R1
- 0x5C200400, // 0005 MOVE R8 R2
- 0x7C140600, // 0006 CALL R5 3
- 0x7C0C0400, // 0007 CALL R3 2
- 0x80000000, // 0008 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: process_write_request
-********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_process_write_request, /* name */
- be_nested_proto(
- 19, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 3]) {
- be_nested_proto(
- 17, /* nstack */
- 5, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 1),
- }),
- 0, /* has sup protos */
- NULL,
- 1, /* has constants */
- ( &(const bvalue[26]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(get_attribute_name),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_nested_str_weak(_X20_X28),
- /* K5 */ be_nested_str_weak(_X29),
- /* K6 */ be_nested_str_weak(),
- /* K7 */ be_nested_str_weak(status),
- /* K8 */ be_nested_str_weak(UNSUPPORTED_WRITE),
- /* K9 */ be_nested_str_weak(write_attribute),
- /* K10 */ be_nested_str_weak(session),
- /* K11 */ be_nested_str_weak(SUCCESS),
- /* K12 */ be_nested_str_weak(AttributeStatusIB),
- /* K13 */ be_nested_str_weak(path),
- /* K14 */ be_nested_str_weak(AttributePathIB),
- /* K15 */ be_nested_str_weak(StatusIB),
- /* K16 */ be_nested_str_weak(endpoint),
- /* K17 */ be_nested_str_weak(write_responses),
- /* K18 */ be_nested_str_weak(push),
- /* K19 */ be_nested_str_weak(tasmota),
- /* K20 */ be_nested_str_weak(log),
- /* K21 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s),
- /* K22 */ be_const_int(0),
- /* K23 */ be_const_int(2),
- /* K24 */ be_const_int(3),
- /* K25 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20_X25s_X25s_X20_X2D_X20IGNORED),
- }),
- be_str_weak(write_single_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[101]) { /* code */
- 0xB8160000, // 0000 GETNGBL R5 K0
- 0x8C140B01, // 0001 GETMET R5 R5 K1
- 0x881C0502, // 0002 GETMBR R7 R2 K2
- 0x88200503, // 0003 GETMBR R8 R2 K3
- 0x7C140600, // 0004 CALL R5 3
- 0x78160002, // 0005 JMPF R5 #0009
- 0x001A0805, // 0006 ADD R6 K4 R5
- 0x00180D05, // 0007 ADD R6 R6 K5
- 0x70020000, // 0008 JMP #000A
- 0x58180006, // 0009 LDCONST R6 K6
- 0x5C140C00, // 000A MOVE R5 R6
- 0xB81A0000, // 000B GETNGBL R6 K0
- 0x88180D08, // 000C GETMBR R6 R6 K8
- 0x900A0E06, // 000D SETMBR R2 K7 R6
- 0x4C180000, // 000E LDNIL R6
- 0x20180206, // 000F NE R6 R1 R6
- 0x781A0006, // 0010 JMPF R6 #0018
- 0x8C180309, // 0011 GETMET R6 R1 K9
- 0x68200000, // 0012 GETUPV R8 U0
- 0x8820110A, // 0013 GETMBR R8 R8 K10
- 0x5C240400, // 0014 MOVE R9 R2
- 0x5C280600, // 0015 MOVE R10 R3
- 0x7C180800, // 0016 CALL R6 4
- 0x70020000, // 0017 JMP #0019
- 0x4C180000, // 0018 LDNIL R6
- 0x781A0002, // 0019 JMPF R6 #001D
- 0xB81E0000, // 001A GETNGBL R7 K0
- 0x881C0F0B, // 001B GETMBR R7 R7 K11
- 0x900A0E07, // 001C SETMBR R2 K7 R7
- 0x881C0507, // 001D GETMBR R7 R2 K7
- 0x4C200000, // 001E LDNIL R8
- 0x201C0E08, // 001F NE R7 R7 R8
- 0x781E0037, // 0020 JMPF R7 #0059
- 0x78120035, // 0021 JMPF R4 #0058
- 0xB81E0000, // 0022 GETNGBL R7 K0
- 0x8C1C0F0C, // 0023 GETMET R7 R7 K12
- 0x7C1C0200, // 0024 CALL R7 1
- 0xB8220000, // 0025 GETNGBL R8 K0
- 0x8C20110E, // 0026 GETMET R8 R8 K14
- 0x7C200200, // 0027 CALL R8 1
- 0x901E1A08, // 0028 SETMBR R7 K13 R8
- 0xB8220000, // 0029 GETNGBL R8 K0
- 0x8C20110F, // 002A GETMET R8 R8 K15
- 0x7C200200, // 002B CALL R8 1
- 0x901E0E08, // 002C SETMBR R7 K7 R8
- 0x88200F0D, // 002D GETMBR R8 R7 K13
- 0x88240510, // 002E GETMBR R9 R2 K16
- 0x90222009, // 002F SETMBR R8 K16 R9
- 0x88200F0D, // 0030 GETMBR R8 R7 K13
- 0x88240502, // 0031 GETMBR R9 R2 K2
- 0x90220409, // 0032 SETMBR R8 K2 R9
- 0x88200F0D, // 0033 GETMBR R8 R7 K13
- 0x88240503, // 0034 GETMBR R9 R2 K3
- 0x90220609, // 0035 SETMBR R8 K3 R9
- 0x88200F07, // 0036 GETMBR R8 R7 K7
- 0x88240507, // 0037 GETMBR R9 R2 K7
- 0x90220E09, // 0038 SETMBR R8 K7 R9
- 0x88200111, // 0039 GETMBR R8 R0 K17
- 0x8C201112, // 003A GETMET R8 R8 K18
- 0x5C280E00, // 003B MOVE R10 R7
- 0x7C200400, // 003C CALL R8 2
- 0xB8222600, // 003D GETNGBL R8 K19
- 0x8C201114, // 003E GETMET R8 R8 K20
- 0x60280018, // 003F GETGBL R10 G24
- 0x582C0015, // 0040 LDCONST R11 K21
- 0x60300008, // 0041 GETGBL R12 G8
- 0x5C340400, // 0042 MOVE R13 R2
- 0x7C300200, // 0043 CALL R12 1
- 0x5C340A00, // 0044 MOVE R13 R5
- 0x88380507, // 0045 GETMBR R14 R2 K7
- 0x883C0507, // 0046 GETMBR R15 R2 K7
- 0xB8420000, // 0047 GETNGBL R16 K0
- 0x8840210B, // 0048 GETMBR R16 R16 K11
- 0x1C3C1E10, // 0049 EQ R15 R15 R16
- 0x783E0001, // 004A JMPF R15 #004D
- 0x583C000B, // 004B LDCONST R15 K11
- 0x70020000, // 004C JMP #004E
- 0x583C0006, // 004D LDCONST R15 K6
- 0x7C280A00, // 004E CALL R10 5
- 0x882C0510, // 004F GETMBR R11 R2 K16
- 0x202C1716, // 0050 NE R11 R11 K22
- 0x782E0001, // 0051 JMPF R11 #0054
- 0x582C0017, // 0052 LDCONST R11 K23
- 0x70020000, // 0053 JMP #0055
- 0x582C0018, // 0054 LDCONST R11 K24
- 0x7C200600, // 0055 CALL R8 3
- 0x50200200, // 0056 LDBOOL R8 1 0
- 0x80041000, // 0057 RET 1 R8
- 0x7002000A, // 0058 JMP #0064
- 0xB81E2600, // 0059 GETNGBL R7 K19
- 0x8C1C0F14, // 005A GETMET R7 R7 K20
- 0x60240018, // 005B GETGBL R9 G24
- 0x58280019, // 005C LDCONST R10 K25
- 0x602C0008, // 005D GETGBL R11 G8
- 0x5C300400, // 005E MOVE R12 R2
- 0x7C2C0200, // 005F CALL R11 1
- 0x5C300A00, // 0060 MOVE R12 R5
- 0x7C240600, // 0061 CALL R9 3
- 0x58280018, // 0062 LDCONST R10 K24
- 0x7C1C0600, // 0063 CALL R7 3
- 0x80000000, // 0064 RET 0
- })
- ),
- be_nested_proto(
- 9, /* nstack */
- 3, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 3]) { /* upvals */
- be_local_const_upval(1, 6),
- be_local_const_upval(1, 8),
- be_local_const_upval(1, 12),
- }),
- 0, /* has sup protos */
- NULL,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0x680C0000, // 0000 GETUPV R3 U0
- 0x68100001, // 0001 GETUPV R4 U1
- 0x5C140000, // 0002 MOVE R5 R0
- 0x5C180200, // 0003 MOVE R6 R1
- 0x681C0002, // 0004 GETUPV R7 U2
- 0x5C200400, // 0005 MOVE R8 R2
- 0x7C0C0A00, // 0006 CALL R3 5
- 0x80040600, // 0007 RET 1 R3
- })
- ),
- &be_class_Matter_IM,
- }),
- 1, /* has constants */
- ( &(const bvalue[30]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(WriteRequestMessage),
- /* K2 */ be_nested_str_weak(from_TLV),
- /* K3 */ be_nested_str_weak(suppress_response),
- /* K4 */ be_nested_str_weak(device),
- /* K5 */ be_nested_str_weak(get_active_endpoints),
- /* K6 */ be_nested_str_weak(Path),
- /* K7 */ be_nested_str_weak(msg),
- /* K8 */ be_nested_str_weak(write_requests),
- /* K9 */ be_nested_str_weak(WriteResponseMessage),
- /* K10 */ be_nested_str_weak(write_responses),
- /* K11 */ be_nested_str_weak(path),
- /* K12 */ be_nested_str_weak(data),
- /* K13 */ be_nested_str_weak(endpoint),
- /* K14 */ be_nested_str_weak(cluster),
- /* K15 */ be_nested_str_weak(attribute),
- /* K16 */ be_nested_str_weak(status),
- /* K17 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
- /* K18 */ be_nested_str_weak(INVALID_ACTION),
- /* K19 */ be_nested_str_weak(get_attribute_name),
- /* K20 */ be_nested_str_weak(tasmota),
- /* K21 */ be_nested_str_weak(log),
- /* K22 */ be_nested_str_weak(MTR_X3A_X20Write_Attr_X20),
- /* K23 */ be_nested_str_weak(_X20_X28),
- /* K24 */ be_nested_str_weak(_X29),
- /* K25 */ be_nested_str_weak(),
- /* K26 */ be_const_int(3),
- /* K27 */ be_nested_str_weak(process_attribute_expansion),
- /* K28 */ be_nested_str_weak(stop_iteration),
- /* K29 */ be_nested_str_weak(send_write_response),
- }),
- be_str_weak(process_write_request),
- &be_const_str_solidified,
- ( &(const binstruction[104]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x7C0C0200, // 0002 CALL R3 1
- 0x8C0C0702, // 0003 GETMET R3 R3 K2
- 0x5C140400, // 0004 MOVE R5 R2
- 0x7C0C0400, // 0005 CALL R3 2
- 0x88100703, // 0006 GETMBR R4 R3 K3
- 0x88140104, // 0007 GETMBR R5 R0 K4
- 0x8C140B05, // 0008 GETMET R5 R5 K5
- 0x7C140200, // 0009 CALL R5 1
- 0x84180000, // 000A CLOSURE R6 P0
- 0xB81E0000, // 000B GETNGBL R7 K0
- 0x8C1C0F06, // 000C GETMET R7 R7 K6
- 0x7C1C0200, // 000D CALL R7 1
- 0x901E0E01, // 000E SETMBR R7 K7 R1
- 0x88200708, // 000F GETMBR R8 R3 K8
- 0x4C240000, // 0010 LDNIL R9
- 0x20201009, // 0011 NE R8 R8 R9
- 0x78220051, // 0012 JMPF R8 #0065
- 0xB8220000, // 0013 GETNGBL R8 K0
- 0x8C201109, // 0014 GETMET R8 R8 K9
- 0x7C200200, // 0015 CALL R8 1
- 0x60240012, // 0016 GETGBL R9 G18
- 0x7C240000, // 0017 CALL R9 0
- 0x90221409, // 0018 SETMBR R8 K10 R9
- 0x60240010, // 0019 GETGBL R9 G16
- 0x88280708, // 001A GETMBR R10 R3 K8
- 0x7C240200, // 001B CALL R9 1
- 0xA802003D, // 001C EXBLK 0 #005B
- 0x5C281200, // 001D MOVE R10 R9
- 0x7C280000, // 001E CALL R10 0
- 0x882C150B, // 001F GETMBR R11 R10 K11
- 0x8830150C, // 0020 GETMBR R12 R10 K12
- 0x8834170D, // 0021 GETMBR R13 R11 K13
- 0x901E1A0D, // 0022 SETMBR R7 K13 R13
- 0x8834170E, // 0023 GETMBR R13 R11 K14
- 0x901E1C0D, // 0024 SETMBR R7 K14 R13
- 0x8834170F, // 0025 GETMBR R13 R11 K15
- 0x901E1E0D, // 0026 SETMBR R7 K15 R13
- 0xB8360000, // 0027 GETNGBL R13 K0
- 0x88341B11, // 0028 GETMBR R13 R13 K17
- 0x901E200D, // 0029 SETMBR R7 K16 R13
- 0x88340F0E, // 002A GETMBR R13 R7 K14
- 0x4C380000, // 002B LDNIL R14
- 0x1C341A0E, // 002C EQ R13 R13 R14
- 0x74360003, // 002D JMPT R13 #0032
- 0x88340F0F, // 002E GETMBR R13 R7 K15
- 0x4C380000, // 002F LDNIL R14
- 0x1C341A0E, // 0030 EQ R13 R13 R14
- 0x7836000A, // 0031 JMPF R13 #003D
- 0xB8360000, // 0032 GETNGBL R13 K0
- 0x88341B12, // 0033 GETMBR R13 R13 K18
- 0x901E200D, // 0034 SETMBR R7 K16 R13
- 0x5C340C00, // 0035 MOVE R13 R6
- 0x5C381000, // 0036 MOVE R14 R8
- 0x4C3C0000, // 0037 LDNIL R15
- 0x5C400E00, // 0038 MOVE R16 R7
- 0x4C440000, // 0039 LDNIL R17
- 0x50480200, // 003A LDBOOL R18 1 0
- 0x7C340A00, // 003B CALL R13 5
- 0x7001FFDF, // 003C JMP #001D
- 0x88340F0D, // 003D GETMBR R13 R7 K13
- 0x4C380000, // 003E LDNIL R14
- 0x1C341A0E, // 003F EQ R13 R13 R14
- 0x78360012, // 0040 JMPF R13 #0054
- 0xB8360000, // 0041 GETNGBL R13 K0
- 0x8C341B13, // 0042 GETMET R13 R13 K19
- 0x883C0F0E, // 0043 GETMBR R15 R7 K14
- 0x88400F0F, // 0044 GETMBR R16 R7 K15
- 0x7C340600, // 0045 CALL R13 3
- 0xB83A2800, // 0046 GETNGBL R14 K20
- 0x8C381D15, // 0047 GETMET R14 R14 K21
- 0x60400008, // 0048 GETGBL R16 G8
- 0x5C440E00, // 0049 MOVE R17 R7
- 0x7C400200, // 004A CALL R16 1
- 0x00422C10, // 004B ADD R16 K22 R16
- 0x78360002, // 004C JMPF R13 #0050
- 0x00462E0D, // 004D ADD R17 K23 R13
- 0x00442318, // 004E ADD R17 R17 K24
- 0x70020000, // 004F JMP #0051
- 0x58440019, // 0050 LDCONST R17 K25
- 0x00402011, // 0051 ADD R16 R16 R17
- 0x5844001A, // 0052 LDCONST R17 K26
- 0x7C380600, // 0053 CALL R14 3
- 0x88340104, // 0054 GETMBR R13 R0 K4
- 0x8C341B1B, // 0055 GETMET R13 R13 K27
- 0x5C3C0E00, // 0056 MOVE R15 R7
- 0x84400001, // 0057 CLOSURE R16 P1
- 0x7C340600, // 0058 CALL R13 3
- 0xA0240000, // 0059 CLOSE R9
- 0x7001FFC1, // 005A JMP #001D
- 0x5824001C, // 005B LDCONST R9 K28
- 0xAC240200, // 005C CATCH R9 1 0
- 0xB0080000, // 005D RAISE 2 R0 R0
- 0x5C240800, // 005E MOVE R9 R4
- 0x74260003, // 005F JMPT R9 #0064
- 0x8C24011D, // 0060 GETMET R9 R0 K29
- 0x5C2C0200, // 0061 MOVE R11 R1
- 0x5C301000, // 0062 MOVE R12 R8
- 0x7C240600, // 0063 CALL R9 3
- 0xA0200000, // 0064 CLOSE R8
- 0x50200200, // 0065 LDBOOL R8 1 0
- 0xA0000000, // 0066 CLOSE R0
- 0x80041000, // 0067 RET 1 R8
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: path2raw
-********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_path2raw, /* name */
- be_nested_proto(
- 9, /* nstack */
- 5, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_IM,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(add),
- /* K1 */ be_const_int(1),
- /* K2 */ be_nested_str_weak(endpoint),
- /* K3 */ be_const_int(2),
- /* K4 */ be_nested_str_weak(cluster),
- /* K5 */ be_nested_str_weak(attribute),
- }),
- be_str_weak(path2raw),
- &be_const_str_solidified,
- ( &(const binstruction[107]) { /* code */
- 0x8C140300, // 0000 GETMET R5 R1 K0
- 0x541E0036, // 0001 LDINT R7 55
- 0x58200001, // 0002 LDCONST R8 K1
- 0x7C140600, // 0003 CALL R5 3
- 0x8C140300, // 0004 GETMET R5 R1 K0
- 0x5C1C0600, // 0005 MOVE R7 R3
- 0x58200001, // 0006 LDCONST R8 K1
- 0x7C140600, // 0007 CALL R5 3
- 0x88140502, // 0008 GETMBR R5 R2 K2
- 0x541A00FE, // 0009 LDINT R6 255
- 0x18140A06, // 000A LE R5 R5 R6
- 0x78160008, // 000B JMPF R5 #0015
- 0x8C140300, // 000C GETMET R5 R1 K0
- 0x541E2401, // 000D LDINT R7 9218
- 0x5421FFFD, // 000E LDINT R8 -2
- 0x7C140600, // 000F CALL R5 3
- 0x8C140300, // 0010 GETMET R5 R1 K0
- 0x881C0502, // 0011 GETMBR R7 R2 K2
- 0x58200001, // 0012 LDCONST R8 K1
- 0x7C140600, // 0013 CALL R5 3
- 0x70020007, // 0014 JMP #001D
- 0x8C140300, // 0015 GETMET R5 R1 K0
- 0x541E2501, // 0016 LDINT R7 9474
- 0x5421FFFD, // 0017 LDINT R8 -2
- 0x7C140600, // 0018 CALL R5 3
- 0x8C140300, // 0019 GETMET R5 R1 K0
- 0x881C0502, // 001A GETMBR R7 R2 K2
- 0x58200003, // 001B LDCONST R8 K3
- 0x7C140600, // 001C CALL R5 3
- 0x88140504, // 001D GETMBR R5 R2 K4
- 0x541A00FE, // 001E LDINT R6 255
- 0x18140A06, // 001F LE R5 R5 R6
- 0x78160008, // 0020 JMPF R5 #002A
- 0x8C140300, // 0021 GETMET R5 R1 K0
- 0x541E2402, // 0022 LDINT R7 9219
- 0x5421FFFD, // 0023 LDINT R8 -2
- 0x7C140600, // 0024 CALL R5 3
- 0x8C140300, // 0025 GETMET R5 R1 K0
- 0x881C0504, // 0026 GETMBR R7 R2 K4
- 0x58200001, // 0027 LDCONST R8 K1
- 0x7C140600, // 0028 CALL R5 3
- 0x70020014, // 0029 JMP #003F
- 0x88140504, // 002A GETMBR R5 R2 K4
- 0x541AFFFE, // 002B LDINT R6 65535
- 0x18140A06, // 002C LE R5 R5 R6
- 0x78160008, // 002D JMPF R5 #0037
- 0x8C140300, // 002E GETMET R5 R1 K0
- 0x541E2502, // 002F LDINT R7 9475
- 0x5421FFFD, // 0030 LDINT R8 -2
- 0x7C140600, // 0031 CALL R5 3
- 0x8C140300, // 0032 GETMET R5 R1 K0
- 0x881C0504, // 0033 GETMBR R7 R2 K4
- 0x58200003, // 0034 LDCONST R8 K3
- 0x7C140600, // 0035 CALL R5 3
- 0x70020007, // 0036 JMP #003F
- 0x8C140300, // 0037 GETMET R5 R1 K0
- 0x541E2602, // 0038 LDINT R7 9731
- 0x5421FFFD, // 0039 LDINT R8 -2
- 0x7C140600, // 003A CALL R5 3
- 0x8C140300, // 003B GETMET R5 R1 K0
- 0x881C0504, // 003C GETMBR R7 R2 K4
- 0x54220003, // 003D LDINT R8 4
- 0x7C140600, // 003E CALL R5 3
- 0x88140505, // 003F GETMBR R5 R2 K5
- 0x541A00FE, // 0040 LDINT R6 255
- 0x18140A06, // 0041 LE R5 R5 R6
- 0x78160008, // 0042 JMPF R5 #004C
- 0x8C140300, // 0043 GETMET R5 R1 K0
- 0x541E2403, // 0044 LDINT R7 9220
- 0x5421FFFD, // 0045 LDINT R8 -2
- 0x7C140600, // 0046 CALL R5 3
- 0x8C140300, // 0047 GETMET R5 R1 K0
- 0x881C0505, // 0048 GETMBR R7 R2 K5
- 0x58200001, // 0049 LDCONST R8 K1
- 0x7C140600, // 004A CALL R5 3
- 0x70020014, // 004B JMP #0061
- 0x88140505, // 004C GETMBR R5 R2 K5
- 0x541AFFFE, // 004D LDINT R6 65535
- 0x18140A06, // 004E LE R5 R5 R6
- 0x78160008, // 004F JMPF R5 #0059
- 0x8C140300, // 0050 GETMET R5 R1 K0
- 0x541E2503, // 0051 LDINT R7 9476
- 0x5421FFFD, // 0052 LDINT R8 -2
- 0x7C140600, // 0053 CALL R5 3
- 0x8C140300, // 0054 GETMET R5 R1 K0
- 0x881C0505, // 0055 GETMBR R7 R2 K5
- 0x58200003, // 0056 LDCONST R8 K3
- 0x7C140600, // 0057 CALL R5 3
- 0x70020007, // 0058 JMP #0061
- 0x8C140300, // 0059 GETMET R5 R1 K0
- 0x541E2603, // 005A LDINT R7 9732
- 0x5421FFFD, // 005B LDINT R8 -2
- 0x7C140600, // 005C CALL R5 3
- 0x8C140300, // 005D GETMET R5 R1 K0
- 0x881C0505, // 005E GETMBR R7 R2 K5
- 0x54220003, // 005F LDINT R8 4
- 0x7C140600, // 0060 CALL R5 3
- 0x78120003, // 0061 JMPF R4 #0066
- 0x8C140300, // 0062 GETMET R5 R1 K0
- 0x541E3404, // 0063 LDINT R7 13317
- 0x5421FFFD, // 0064 LDINT R8 -2
- 0x7C140600, // 0065 CALL R5 3
- 0x8C140300, // 0066 GETMET R5 R1 K0
- 0x541E0017, // 0067 LDINT R7 24
- 0x58200001, // 0068 LDCONST R8 K1
- 0x7C140600, // 0069 CALL R5 3
- 0x80000000, // 006A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: send_subscribe_update
-********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_send_subscribe_update, /* name */
- be_nested_proto(
- 11, /* nstack */
+ 7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[25]) { /* constants */
- /* K0 */ be_nested_str_weak(session),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(ReadRequestMessage),
- /* K3 */ be_nested_str_weak(fabric_filtered),
- /* K4 */ be_nested_str_weak(attributes_requests),
- /* K5 */ be_nested_str_weak(updates),
- /* K6 */ be_nested_str_weak(AttributePathIB),
- /* K7 */ be_nested_str_weak(endpoint),
- /* K8 */ be_nested_str_weak(cluster),
- /* K9 */ be_nested_str_weak(attribute),
- /* K10 */ be_nested_str_weak(push),
- /* K11 */ be_nested_str_weak(stop_iteration),
- /* K12 */ be_nested_str_weak(tasmota),
- /* K13 */ be_nested_str_weak(log),
- /* K14 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Data_X20_X20_X28_X256i_X29_X20sub_X3D_X25i),
- /* K15 */ be_nested_str_weak(local_session_id),
- /* K16 */ be_nested_str_weak(subscription_id),
- /* K17 */ be_const_int(3),
- /* K18 */ be_nested_str_weak(is_keep_alive),
- /* K19 */ be_nested_str_weak(_inner_process_read_request),
- /* K20 */ be_nested_str_weak(suppress_response),
- /* K21 */ be_nested_str_weak(IM_ReportDataSubscribed),
- /* K22 */ be_nested_str_weak(_message_handler),
- /* K23 */ be_nested_str_weak(send_queue),
- /* K24 */ be_nested_str_weak(send_enqueued),
- }),
- be_str_weak(send_subscribe_update),
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(process_incoming_ack),
&be_const_str_solidified,
- ( &(const binstruction[67]) { /* code */
- 0x88080300, // 0000 GETMBR R2 R1 K0
- 0xB80E0200, // 0001 GETNGBL R3 K1
- 0x8C0C0702, // 0002 GETMET R3 R3 K2
- 0x7C0C0200, // 0003 CALL R3 1
- 0x50100000, // 0004 LDBOOL R4 0 0
- 0x900E0604, // 0005 SETMBR R3 K3 R4
- 0x60100012, // 0006 GETGBL R4 G18
- 0x7C100000, // 0007 CALL R4 0
- 0x900E0804, // 0008 SETMBR R3 K4 R4
- 0x60100010, // 0009 GETGBL R4 G16
- 0x88140305, // 000A GETMBR R5 R1 K5
- 0x7C100200, // 000B CALL R4 1
- 0xA802000F, // 000C EXBLK 0 #001D
- 0x5C140800, // 000D MOVE R5 R4
- 0x7C140000, // 000E CALL R5 0
- 0xB81A0200, // 000F GETNGBL R6 K1
- 0x8C180D06, // 0010 GETMET R6 R6 K6
- 0x7C180200, // 0011 CALL R6 1
- 0x881C0B07, // 0012 GETMBR R7 R5 K7
- 0x901A0E07, // 0013 SETMBR R6 K7 R7
- 0x881C0B08, // 0014 GETMBR R7 R5 K8
- 0x901A1007, // 0015 SETMBR R6 K8 R7
- 0x881C0B09, // 0016 GETMBR R7 R5 K9
- 0x901A1207, // 0017 SETMBR R6 K9 R7
- 0x881C0704, // 0018 GETMBR R7 R3 K4
- 0x8C1C0F0A, // 0019 GETMET R7 R7 K10
- 0x5C240C00, // 001A MOVE R9 R6
- 0x7C1C0400, // 001B CALL R7 2
- 0x7001FFEF, // 001C JMP #000D
- 0x5810000B, // 001D LDCONST R4 K11
- 0xAC100200, // 001E CATCH R4 1 0
- 0xB0080000, // 001F RAISE 2 R0 R0
- 0xB8121800, // 0020 GETNGBL R4 K12
- 0x8C10090D, // 0021 GETMET R4 R4 K13
- 0x60180018, // 0022 GETGBL R6 G24
- 0x581C000E, // 0023 LDCONST R7 K14
- 0x8820050F, // 0024 GETMBR R8 R2 K15
- 0x88240310, // 0025 GETMBR R9 R1 K16
- 0x7C180600, // 0026 CALL R6 3
- 0x581C0011, // 0027 LDCONST R7 K17
- 0x7C100600, // 0028 CALL R4 3
- 0x50100000, // 0029 LDBOOL R4 0 0
- 0x90062404, // 002A SETMBR R1 K18 R4
- 0x8C100113, // 002B GETMET R4 R0 K19
- 0x5C180400, // 002C MOVE R6 R2
- 0x5C1C0600, // 002D MOVE R7 R3
- 0x4C200000, // 002E LDNIL R8
- 0x7C100800, // 002F CALL R4 4
- 0x50140000, // 0030 LDBOOL R5 0 0
- 0x90122805, // 0031 SETMBR R4 K20 R5
- 0x88140310, // 0032 GETMBR R5 R1 K16
- 0x90122005, // 0033 SETMBR R4 K16 R5
- 0xB8160200, // 0034 GETNGBL R5 K1
- 0x8C140B15, // 0035 GETMET R5 R5 K21
- 0x881C0516, // 0036 GETMBR R7 R2 K22
- 0x5C200400, // 0037 MOVE R8 R2
- 0x5C240800, // 0038 MOVE R9 R4
- 0x5C280200, // 0039 MOVE R10 R1
- 0x7C140A00, // 003A CALL R5 5
- 0x88180117, // 003B GETMBR R6 R0 K23
- 0x8C180D0A, // 003C GETMET R6 R6 K10
- 0x5C200A00, // 003D MOVE R8 R5
- 0x7C180400, // 003E CALL R6 2
- 0x8C180118, // 003F GETMET R6 R0 K24
- 0x88200516, // 0040 GETMBR R8 R2 K22
- 0x7C180400, // 0041 CALL R6 2
- 0x80000000, // 0042 RET 0
+ ( &(const binstruction[15]) { /* code */
+ 0x8C08017E, // 0000 GETMET R2 R0 K126
+ 0x88100357, // 0001 GETMBR R4 R1 K87
+ 0x7C080400, // 0002 CALL R2 2
+ 0x780A0008, // 0003 JMPF R2 #000D
+ 0x8C0C057F, // 0004 GETMET R3 R2 K127
+ 0x5C140200, // 0005 MOVE R5 R1
+ 0x7C0C0400, // 0006 CALL R3 2
+ 0x88100569, // 0007 GETMBR R4 R2 K105
+ 0x78120002, // 0008 JMPF R4 #000C
+ 0x8C10016C, // 0009 GETMET R4 R0 K108
+ 0x88180357, // 000A GETMBR R6 R1 K87
+ 0x7C100400, // 000B CALL R4 2
+ 0x80040600, // 000C RET 1 R3
+ 0x500C0000, // 000D LDBOOL R3 0 0
+ 0x80040600, // 000E RET 1 R3
})
)
);
@@ -1875,24 +1600,17 @@ be_local_closure(class_Matter_IM_send_subscribe_update, /* name */
/********************************************************************
** Solidified function: remove_sendqueue_by_exchangeid
********************************************************************/
-extern const bclass be_class_Matter_IM;
be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(send_queue),
- /* K2 */ be_nested_str_weak(get_exchangeid),
- /* K3 */ be_nested_str_weak(remove),
- /* K4 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_IM, /* shared constants */
be_str_weak(remove_sendqueue_by_exchangeid),
&be_const_str_solidified,
( &(const binstruction[24]) { /* code */
@@ -1900,24 +1618,24 @@ be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */
0x1C080202, // 0001 EQ R2 R1 R2
0x780A0000, // 0002 JMPF R2 #0004
0x80000400, // 0003 RET 0
- 0x58080000, // 0004 LDCONST R2 K0
+ 0x58080040, // 0004 LDCONST R2 K64
0x600C000C, // 0005 GETGBL R3 G12
- 0x88100101, // 0006 GETMBR R4 R0 K1
+ 0x88100126, // 0006 GETMBR R4 R0 K38
0x7C0C0200, // 0007 CALL R3 1
0x140C0403, // 0008 LT R3 R2 R3
0x780E000C, // 0009 JMPF R3 #0017
- 0x880C0101, // 000A GETMBR R3 R0 K1
+ 0x880C0126, // 000A GETMBR R3 R0 K38
0x940C0602, // 000B GETIDX R3 R3 R2
- 0x8C0C0702, // 000C GETMET R3 R3 K2
+ 0x8C0C0780, // 000C GETMET R3 R3 K128
0x7C0C0200, // 000D CALL R3 1
0x1C0C0601, // 000E EQ R3 R3 R1
0x780E0004, // 000F JMPF R3 #0015
- 0x880C0101, // 0010 GETMBR R3 R0 K1
- 0x8C0C0703, // 0011 GETMET R3 R3 K3
+ 0x880C0126, // 0010 GETMBR R3 R0 K38
+ 0x8C0C077D, // 0011 GETMET R3 R3 K125
0x5C140400, // 0012 MOVE R5 R2
0x7C0C0400, // 0013 CALL R3 2
0x70020000, // 0014 JMP #0016
- 0x00080504, // 0015 ADD R2 R2 K4
+ 0x0008052A, // 0015 ADD R2 R2 K42
0x7001FFED, // 0016 JMP #0005
0x80000000, // 0017 RET 0
})
@@ -1927,182 +1645,108 @@ be_local_closure(class_Matter_IM_remove_sendqueue_by_exchangeid, /* name */
/********************************************************************
-** Solidified function: process_incoming
+** Solidified function: write_single_attribute_status_to_bytes
********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_process_incoming, /* name */
+be_local_closure(class_Matter_IM_write_single_attribute_status_to_bytes, /* name */
be_nested_proto(
- 8, /* nstack */
- 2, /* argc */
- 2, /* varg */
+ 16, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[25]) { /* constants */
- /* K0 */ be_nested_str_weak(opcode),
- /* K1 */ be_const_int(2),
- /* K2 */ be_nested_str_weak(read_request_solo),
- /* K3 */ be_nested_str_weak(from_raw),
- /* K4 */ be_nested_str_weak(raw),
- /* K5 */ be_nested_str_weak(app_payload_idx),
- /* K6 */ be_nested_str_weak(process_read_request_solo),
- /* K7 */ be_nested_str_weak(invoke_request_solo),
- /* K8 */ be_nested_str_weak(process_invoke_request_solo),
- /* K9 */ be_nested_str_weak(matter),
- /* K10 */ be_nested_str_weak(TLV),
- /* K11 */ be_nested_str_weak(parse),
- /* K12 */ be_const_int(1),
- /* K13 */ be_nested_str_weak(process_status_response),
- /* K14 */ be_nested_str_weak(process_read_request),
- /* K15 */ be_const_int(3),
- /* K16 */ be_nested_str_weak(send_ack_now),
- /* K17 */ be_nested_str_weak(subscribe_request),
- /* K18 */ be_nested_str_weak(subscribe_response),
- /* K19 */ be_nested_str_weak(report_data),
- /* K20 */ be_nested_str_weak(process_write_request),
- /* K21 */ be_nested_str_weak(process_write_response),
- /* K22 */ be_nested_str_weak(process_invoke_request),
- /* K23 */ be_nested_str_weak(process_invoke_response),
- /* K24 */ be_nested_str_weak(process_timed_request),
- }),
- be_str_weak(process_incoming),
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(write_single_attribute_status_to_bytes),
&be_const_str_solidified,
- ( &(const binstruction[133]) { /* code */
- 0x88080300, // 0000 GETMBR R2 R1 K0
- 0x1C0C0501, // 0001 EQ R3 R2 K1
- 0x780E000D, // 0002 JMPF R3 #0011
- 0x880C0102, // 0003 GETMBR R3 R0 K2
- 0x8C0C0703, // 0004 GETMET R3 R3 K3
- 0x88140304, // 0005 GETMBR R5 R1 K4
- 0x88180305, // 0006 GETMBR R6 R1 K5
- 0x7C0C0600, // 0007 CALL R3 3
- 0x4C100000, // 0008 LDNIL R4
- 0x20100604, // 0009 NE R4 R3 R4
- 0x78120004, // 000A JMPF R4 #0010
- 0x8C100106, // 000B GETMET R4 R0 K6
- 0x5C180200, // 000C MOVE R6 R1
- 0x5C1C0600, // 000D MOVE R7 R3
- 0x7C100600, // 000E CALL R4 3
- 0x80040800, // 000F RET 1 R4
- 0x7002000F, // 0010 JMP #0021
- 0x540E0007, // 0011 LDINT R3 8
- 0x1C0C0403, // 0012 EQ R3 R2 R3
- 0x780E000C, // 0013 JMPF R3 #0021
- 0x880C0107, // 0014 GETMBR R3 R0 K7
- 0x8C0C0703, // 0015 GETMET R3 R3 K3
- 0x88140304, // 0016 GETMBR R5 R1 K4
- 0x88180305, // 0017 GETMBR R6 R1 K5
- 0x7C0C0600, // 0018 CALL R3 3
- 0x4C100000, // 0019 LDNIL R4
- 0x20100604, // 001A NE R4 R3 R4
- 0x78120004, // 001B JMPF R4 #0021
- 0x8C100108, // 001C GETMET R4 R0 K8
- 0x5C180200, // 001D MOVE R6 R1
- 0x5C1C0600, // 001E MOVE R7 R3
- 0x7C100600, // 001F CALL R4 3
- 0x80040800, // 0020 RET 1 R4
- 0xB80E1200, // 0021 GETNGBL R3 K9
- 0x880C070A, // 0022 GETMBR R3 R3 K10
- 0x8C0C070B, // 0023 GETMET R3 R3 K11
- 0x88140304, // 0024 GETMBR R5 R1 K4
- 0x88180305, // 0025 GETMBR R6 R1 K5
- 0x7C0C0600, // 0026 CALL R3 3
- 0x1C10050C, // 0027 EQ R4 R2 K12
- 0x78120005, // 0028 JMPF R4 #002F
- 0x8C10010D, // 0029 GETMET R4 R0 K13
- 0x5C180200, // 002A MOVE R6 R1
- 0x5C1C0600, // 002B MOVE R7 R3
- 0x7C100600, // 002C CALL R4 3
- 0x80040800, // 002D RET 1 R4
- 0x70020053, // 002E JMP #0083
- 0x1C100501, // 002F EQ R4 R2 K1
- 0x78120005, // 0030 JMPF R4 #0037
- 0x8C10010E, // 0031 GETMET R4 R0 K14
- 0x5C180200, // 0032 MOVE R6 R1
- 0x5C1C0600, // 0033 MOVE R7 R3
- 0x7C100600, // 0034 CALL R4 3
- 0x80040800, // 0035 RET 1 R4
- 0x7002004B, // 0036 JMP #0083
- 0x1C10050F, // 0037 EQ R4 R2 K15
- 0x78120008, // 0038 JMPF R4 #0042
- 0x8C100110, // 0039 GETMET R4 R0 K16
- 0x5C180200, // 003A MOVE R6 R1
- 0x7C100400, // 003B CALL R4 2
- 0x8C100111, // 003C GETMET R4 R0 K17
- 0x5C180200, // 003D MOVE R6 R1
- 0x5C1C0600, // 003E MOVE R7 R3
- 0x7C100600, // 003F CALL R4 3
- 0x80040800, // 0040 RET 1 R4
- 0x70020040, // 0041 JMP #0083
- 0x54120003, // 0042 LDINT R4 4
- 0x1C100404, // 0043 EQ R4 R2 R4
- 0x78120005, // 0044 JMPF R4 #004B
- 0x8C100112, // 0045 GETMET R4 R0 K18
- 0x5C180200, // 0046 MOVE R6 R1
- 0x5C1C0600, // 0047 MOVE R7 R3
- 0x7C100600, // 0048 CALL R4 3
- 0x80040800, // 0049 RET 1 R4
- 0x70020037, // 004A JMP #0083
- 0x54120004, // 004B LDINT R4 5
- 0x1C100404, // 004C EQ R4 R2 R4
- 0x78120005, // 004D JMPF R4 #0054
- 0x8C100113, // 004E GETMET R4 R0 K19
- 0x5C180200, // 004F MOVE R6 R1
- 0x5C1C0600, // 0050 MOVE R7 R3
- 0x7C100600, // 0051 CALL R4 3
- 0x80040800, // 0052 RET 1 R4
- 0x7002002E, // 0053 JMP #0083
- 0x54120005, // 0054 LDINT R4 6
- 0x1C100404, // 0055 EQ R4 R2 R4
- 0x78120008, // 0056 JMPF R4 #0060
- 0x8C100110, // 0057 GETMET R4 R0 K16
- 0x5C180200, // 0058 MOVE R6 R1
- 0x7C100400, // 0059 CALL R4 2
- 0x8C100114, // 005A GETMET R4 R0 K20
- 0x5C180200, // 005B MOVE R6 R1
- 0x5C1C0600, // 005C MOVE R7 R3
- 0x7C100600, // 005D CALL R4 3
- 0x80040800, // 005E RET 1 R4
- 0x70020022, // 005F JMP #0083
- 0x54120006, // 0060 LDINT R4 7
- 0x1C100404, // 0061 EQ R4 R2 R4
- 0x78120005, // 0062 JMPF R4 #0069
- 0x8C100115, // 0063 GETMET R4 R0 K21
- 0x5C180200, // 0064 MOVE R6 R1
- 0x5C1C0600, // 0065 MOVE R7 R3
- 0x7C100600, // 0066 CALL R4 3
- 0x80040800, // 0067 RET 1 R4
- 0x70020019, // 0068 JMP #0083
- 0x54120007, // 0069 LDINT R4 8
- 0x1C100404, // 006A EQ R4 R2 R4
- 0x78120005, // 006B JMPF R4 #0072
- 0x8C100116, // 006C GETMET R4 R0 K22
- 0x5C180200, // 006D MOVE R6 R1
- 0x5C1C0600, // 006E MOVE R7 R3
- 0x7C100600, // 006F CALL R4 3
- 0x80040800, // 0070 RET 1 R4
- 0x70020010, // 0071 JMP #0083
- 0x54120008, // 0072 LDINT R4 9
- 0x1C100404, // 0073 EQ R4 R2 R4
- 0x78120005, // 0074 JMPF R4 #007B
- 0x8C100117, // 0075 GETMET R4 R0 K23
- 0x5C180200, // 0076 MOVE R6 R1
- 0x5C1C0600, // 0077 MOVE R7 R3
- 0x7C100600, // 0078 CALL R4 3
- 0x80040800, // 0079 RET 1 R4
- 0x70020007, // 007A JMP #0083
- 0x54120009, // 007B LDINT R4 10
- 0x1C100404, // 007C EQ R4 R2 R4
- 0x78120004, // 007D JMPF R4 #0083
- 0x8C100118, // 007E GETMET R4 R0 K24
- 0x5C180200, // 007F MOVE R6 R1
- 0x5C1C0600, // 0080 MOVE R7 R3
- 0x7C100600, // 0081 CALL R4 3
- 0x80040800, // 0082 RET 1 R4
- 0x50100000, // 0083 LDBOOL R4 0 0
- 0x80040800, // 0084 RET 1 R4
+ ( &(const binstruction[86]) { /* code */
+ 0xB8120000, // 0000 GETNGBL R4 K0
+ 0x88100981, // 0001 GETMBR R4 R4 K129
+ 0xB8160000, // 0002 GETNGBL R5 K0
+ 0x8C140B16, // 0003 GETMET R5 R5 K22
+ 0x881C050D, // 0004 GETMBR R7 R2 K13
+ 0x8820050E, // 0005 GETMBR R8 R2 K14
+ 0x7C140600, // 0006 CALL R5 3
+ 0x78160002, // 0007 JMPF R5 #000B
+ 0x001A3205, // 0008 ADD R6 K25 R5
+ 0x00180D1A, // 0009 ADD R6 R6 K26
+ 0x70020000, // 000A JMP #000C
+ 0x5818001B, // 000B LDCONST R6 K27
+ 0x5C140C00, // 000C MOVE R5 R6
+ 0x8818050F, // 000D GETMBR R6 R2 K15
+ 0x4C1C0000, // 000E LDNIL R7
+ 0x20180C07, // 000F NE R6 R6 R7
+ 0x781A0034, // 0010 JMPF R6 #0046
+ 0xB81A0000, // 0011 GETNGBL R6 K0
+ 0x8C180D82, // 0012 GETMET R6 R6 K130
+ 0x7C180200, // 0013 CALL R6 1
+ 0xB81E0000, // 0014 GETNGBL R7 K0
+ 0x8C1C0F34, // 0015 GETMET R7 R7 K52
+ 0x7C1C0200, // 0016 CALL R7 1
+ 0x901A1407, // 0017 SETMBR R6 K10 R7
+ 0xB81E0000, // 0018 GETNGBL R7 K0
+ 0x8C1C0F83, // 0019 GETMET R7 R7 K131
+ 0x7C1C0200, // 001A CALL R7 1
+ 0x901A1E07, // 001B SETMBR R6 K15 R7
+ 0x881C0D0A, // 001C GETMBR R7 R6 K10
+ 0x88200512, // 001D GETMBR R8 R2 K18
+ 0x901E2408, // 001E SETMBR R7 K18 R8
+ 0x881C0D0A, // 001F GETMBR R7 R6 K10
+ 0x8820050D, // 0020 GETMBR R8 R2 K13
+ 0x901E1A08, // 0021 SETMBR R7 K13 R8
+ 0x881C0D0A, // 0022 GETMBR R7 R6 K10
+ 0x8820050E, // 0023 GETMBR R8 R2 K14
+ 0x901E1C08, // 0024 SETMBR R7 K14 R8
+ 0x881C0D0F, // 0025 GETMBR R7 R6 K15
+ 0x8820050F, // 0026 GETMBR R8 R2 K15
+ 0x901E1E08, // 0027 SETMBR R7 K15 R8
+ 0x881C0307, // 0028 GETMBR R7 R1 K7
+ 0x8C1C0F27, // 0029 GETMET R7 R7 K39
+ 0x5C240C00, // 002A MOVE R9 R6
+ 0x7C1C0400, // 002B CALL R7 2
+ 0xB81E2E00, // 002C GETNGBL R7 K23
+ 0x60200018, // 002D GETGBL R8 G24
+ 0x58240084, // 002E LDCONST R9 K132
+ 0x60280008, // 002F GETGBL R10 G8
+ 0x5C2C0400, // 0030 MOVE R11 R2
+ 0x7C280200, // 0031 CALL R10 1
+ 0x5C2C0A00, // 0032 MOVE R11 R5
+ 0x5C300600, // 0033 MOVE R12 R3
+ 0x8834050F, // 0034 GETMBR R13 R2 K15
+ 0x8838050F, // 0035 GETMBR R14 R2 K15
+ 0xB83E0000, // 0036 GETNGBL R15 K0
+ 0x883C1F24, // 0037 GETMBR R15 R15 K36
+ 0x1C381C0F, // 0038 EQ R14 R14 R15
+ 0x783A0001, // 0039 JMPF R14 #003C
+ 0x58380024, // 003A LDCONST R14 K36
+ 0x70020000, // 003B JMP #003D
+ 0x5838001B, // 003C LDCONST R14 K27
+ 0x7C200C00, // 003D CALL R8 6
+ 0x88240512, // 003E GETMBR R9 R2 K18
+ 0x20241340, // 003F NE R9 R9 K64
+ 0x78260001, // 0040 JMPF R9 #0043
+ 0x5824002B, // 0041 LDCONST R9 K43
+ 0x70020000, // 0042 JMP #0044
+ 0x58240015, // 0043 LDCONST R9 K21
+ 0x7C1C0400, // 0044 CALL R7 2
+ 0x7002000E, // 0045 JMP #0055
+ 0xB81A2600, // 0046 GETNGBL R6 K19
+ 0x8C180D14, // 0047 GETMET R6 R6 K20
+ 0x58200015, // 0048 LDCONST R8 K21
+ 0x7C180400, // 0049 CALL R6 2
+ 0x781A0009, // 004A JMPF R6 #0055
+ 0xB81A2E00, // 004B GETNGBL R6 K23
+ 0x601C0018, // 004C GETGBL R7 G24
+ 0x58200085, // 004D LDCONST R8 K133
+ 0x60240008, // 004E GETGBL R9 G8
+ 0x5C280400, // 004F MOVE R10 R2
+ 0x7C240200, // 0050 CALL R9 1
+ 0x5C280A00, // 0051 MOVE R10 R5
+ 0x7C1C0600, // 0052 CALL R7 3
+ 0x58200015, // 0053 LDCONST R8 K21
+ 0x7C180400, // 0054 CALL R6 2
+ 0x80000000, // 0055 RET 0
})
)
);
@@ -2110,35 +1754,45 @@ be_local_closure(class_Matter_IM_process_incoming, /* name */
/********************************************************************
-** Solidified function: process_invoke_response
+** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_process_invoke_response, /* name */
+be_local_closure(class_Matter_IM_init, /* name */
be_nested_proto(
- 6, /* nstack */
- 3, /* argc */
- 2, /* varg */
+ 5, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(InvokeResponseMessage),
- /* K2 */ be_nested_str_weak(from_TLV),
- }),
- be_str_weak(process_invoke_response),
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(init),
&be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x7C0C0200, // 0002 CALL R3 1
- 0x8C0C0702, // 0003 GETMET R3 R3 K2
- 0x5C140400, // 0004 MOVE R5 R2
- 0x7C0C0400, // 0005 CALL R3 2
- 0x50100000, // 0006 LDBOOL R4 0 0
- 0x80040800, // 0007 RET 1 R4
+ ( &(const binstruction[23]) { /* code */
+ 0x90021201, // 0000 SETMBR R0 K9 R1
+ 0x60080012, // 0001 GETGBL R2 G18
+ 0x7C080000, // 0002 CALL R2 0
+ 0x90024C02, // 0003 SETMBR R0 K38 R2
+ 0xB80A0000, // 0004 GETNGBL R2 K0
+ 0x8C080586, // 0005 GETMET R2 R2 K134
+ 0x5C100000, // 0006 MOVE R4 R0
+ 0x7C080400, // 0007 CALL R2 2
+ 0x90028C02, // 0008 SETMBR R0 K70 R2
+ 0xB80A0000, // 0009 GETNGBL R2 K0
+ 0x8C080588, // 000A GETMET R2 R2 K136
+ 0x7C080200, // 000B CALL R2 1
+ 0x90030E02, // 000C SETMBR R0 K135 R2
+ 0xB80A0000, // 000D GETNGBL R2 K0
+ 0x8C08058A, // 000E GETMET R2 R2 K138
+ 0x7C080200, // 000F CALL R2 1
+ 0x90031202, // 0010 SETMBR R0 K137 R2
+ 0xB80A0000, // 0011 GETNGBL R2 K0
+ 0x88080581, // 0012 GETMBR R2 R2 K129
+ 0x8C08058C, // 0013 GETMET R2 R2 K140
+ 0x7C080200, // 0014 CALL R2 1
+ 0x90031602, // 0015 SETMBR R0 K139 R2
+ 0x80000000, // 0016 RET 0
})
)
);
@@ -2148,24 +1802,21 @@ be_local_closure(class_Matter_IM_process_invoke_response, /* name */
/********************************************************************
** Solidified function: every_second
********************************************************************/
-extern const bclass be_class_Matter_IM;
be_local_closure(class_Matter_IM_every_second, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(expire_sendqueue),
- }),
+ &be_ktab_class_Matter_IM, /* shared constants */
be_str_weak(every_second),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C04018D, // 0000 GETMET R1 R0 K141
0x7C040200, // 0001 CALL R1 1
0x80000000, // 0002 RET 0
})
@@ -2175,37 +1826,210 @@ be_local_closure(class_Matter_IM_every_second, /* name */
/********************************************************************
-** Solidified function: send_status
+** Solidified function: process_invoke_request_solo
********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_send_status, /* name */
+be_local_closure(class_Matter_IM_process_invoke_request_solo, /* name */
be_nested_proto(
- 9, /* nstack */
+ 15, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(send_queue),
- /* K1 */ be_nested_str_weak(push),
- /* K2 */ be_nested_str_weak(matter),
- /* K3 */ be_nested_str_weak(IM_Status),
- }),
- be_str_weak(send_status),
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(process_invoke_request_solo),
&be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0xB8160400, // 0002 GETNGBL R5 K2
- 0x8C140B03, // 0003 GETMET R5 R5 K3
- 0x5C1C0200, // 0004 MOVE R7 R1
- 0x5C200400, // 0005 MOVE R8 R2
- 0x7C140600, // 0006 CALL R5 3
- 0x7C0C0400, // 0007 CALL R3 2
- 0x80000000, // 0008 RET 0
+ ( &(const binstruction[188]) { /* code */
+ 0x900A3E01, // 0000 SETMBR R2 K31 R1
+ 0xB80E0000, // 0001 GETNGBL R3 K0
+ 0x880C074E, // 0002 GETMBR R3 R3 K78
+ 0x900A1E03, // 0003 SETMBR R2 K15 R3
+ 0xB80E0000, // 0004 GETNGBL R3 K0
+ 0x8C0C074F, // 0005 GETMET R3 R3 K79
+ 0x8814050D, // 0006 GETMBR R5 R2 K13
+ 0x8818054D, // 0007 GETMBR R6 R2 K77
+ 0x7C0C0600, // 0008 CALL R3 3
+ 0x60100008, // 0009 GETGBL R4 G8
+ 0x5C140400, // 000A MOVE R5 R2
+ 0x7C100200, // 000B CALL R4 1
+ 0x88140109, // 000C GETMBR R5 R0 K9
+ 0x8C140B50, // 000D GETMET R5 R5 K80
+ 0x881C0323, // 000E GETMBR R7 R1 K35
+ 0x88200551, // 000F GETMBR R8 R2 K81
+ 0x5C240400, // 0010 MOVE R9 R2
+ 0x7C140800, // 0011 CALL R5 4
+ 0x88180517, // 0012 GETMBR R6 R2 K23
+ 0x4C1C0000, // 0013 LDNIL R7
+ 0x20180C07, // 0014 NE R6 R6 R7
+ 0x781A0005, // 0015 JMPF R6 #001C
+ 0x60180008, // 0016 GETGBL R6 G8
+ 0x881C0517, // 0017 GETMBR R7 R2 K23
+ 0x7C180200, // 0018 CALL R6 1
+ 0x001AA406, // 0019 ADD R6 K82 R6
+ 0x00180D53, // 001A ADD R6 R6 K83
+ 0x70020000, // 001B JMP #001D
+ 0x5818001B, // 001C LDCONST R6 K27
+ 0xB81E2600, // 001D GETNGBL R7 K19
+ 0x8C1C0F14, // 001E GETMET R7 R7 K20
+ 0x58240015, // 001F LDCONST R9 K21
+ 0x7C1C0400, // 0020 CALL R7 2
+ 0x781E000D, // 0021 JMPF R7 #0030
+ 0xB81E2E00, // 0022 GETNGBL R7 K23
+ 0x60200018, // 0023 GETGBL R8 G24
+ 0x5824008E, // 0024 LDCONST R9 K142
+ 0x88280323, // 0025 GETMBR R10 R1 K35
+ 0x88281536, // 0026 GETMBR R10 R10 K54
+ 0x5C2C0800, // 0027 MOVE R11 R4
+ 0x780E0001, // 0028 JMPF R3 #002B
+ 0x5C300600, // 0029 MOVE R12 R3
+ 0x70020000, // 002A JMP #002C
+ 0x5830001B, // 002B LDCONST R12 K27
+ 0x5C340C00, // 002C MOVE R13 R6
+ 0x7C200A00, // 002D CALL R8 5
+ 0x58240015, // 002E LDCONST R9 K21
+ 0x7C1C0400, // 002F CALL R7 2
+ 0x4C1C0000, // 0030 LDNIL R7
+ 0x900A2E07, // 0031 SETMBR R2 K23 R7
+ 0x601C0015, // 0032 GETGBL R7 G21
+ 0x5422002F, // 0033 LDINT R8 48
+ 0x7C1C0200, // 0034 CALL R7 1
+ 0x8C200F29, // 0035 GETMET R8 R7 K41
+ 0x5828008F, // 0036 LDCONST R10 K143
+ 0x542DFFFB, // 0037 LDINT R11 -4
+ 0x7C200600, // 0038 CALL R8 3
+ 0x8C200F29, // 0039 GETMET R8 R7 K41
+ 0x5828002A, // 003A LDCONST R10 K42
+ 0x582C002A, // 003B LDCONST R11 K42
+ 0x7C200600, // 003C CALL R8 3
+ 0x50200200, // 003D LDBOOL R8 1 0
+ 0x1C200A08, // 003E EQ R8 R5 R8
+ 0x74220004, // 003F JMPT R8 #0045
+ 0x8820050F, // 0040 GETMBR R8 R2 K15
+ 0xB8260000, // 0041 GETNGBL R9 K0
+ 0x88241324, // 0042 GETMBR R9 R9 K36
+ 0x1C201009, // 0043 EQ R8 R8 R9
+ 0x78220016, // 0044 JMPF R8 #005C
+ 0xB8220000, // 0045 GETNGBL R8 K0
+ 0x88201124, // 0046 GETMBR R8 R8 K36
+ 0x900A1E08, // 0047 SETMBR R2 K15 R8
+ 0x8C200155, // 0048 GETMET R8 R0 K85
+ 0x5C280E00, // 0049 MOVE R10 R7
+ 0x5C2C0400, // 004A MOVE R11 R2
+ 0x4C300000, // 004B LDNIL R12
+ 0x7C200800, // 004C CALL R8 4
+ 0xB8222600, // 004D GETNGBL R8 K19
+ 0x8C201114, // 004E GETMET R8 R8 K20
+ 0x58280015, // 004F LDCONST R10 K21
+ 0x7C200400, // 0050 CALL R8 2
+ 0x78220008, // 0051 JMPF R8 #005B
+ 0xB8222E00, // 0052 GETNGBL R8 K23
+ 0x60240018, // 0053 GETGBL R9 G24
+ 0x58280056, // 0054 LDCONST R10 K86
+ 0x882C0323, // 0055 GETMBR R11 R1 K35
+ 0x882C1736, // 0056 GETMBR R11 R11 K54
+ 0x88300357, // 0057 GETMBR R12 R1 K87
+ 0x7C240600, // 0058 CALL R9 3
+ 0x58280015, // 0059 LDCONST R10 K21
+ 0x7C200400, // 005A CALL R8 2
+ 0x70020043, // 005B JMP #00A0
+ 0x4C200000, // 005C LDNIL R8
+ 0x20200A08, // 005D NE R8 R5 R8
+ 0x78220017, // 005E JMPF R8 #0077
+ 0x8C200155, // 005F GETMET R8 R0 K85
+ 0x5C280E00, // 0060 MOVE R10 R7
+ 0x5C2C0400, // 0061 MOVE R11 R2
+ 0x5C300A00, // 0062 MOVE R12 R5
+ 0x7C200800, // 0063 CALL R8 4
+ 0x5C200600, // 0064 MOVE R8 R3
+ 0x74220000, // 0065 JMPT R8 #0067
+ 0x580C001B, // 0066 LDCONST R3 K27
+ 0xB8222600, // 0067 GETNGBL R8 K19
+ 0x8C201114, // 0068 GETMET R8 R8 K20
+ 0x58280015, // 0069 LDCONST R10 K21
+ 0x7C200400, // 006A CALL R8 2
+ 0x78220009, // 006B JMPF R8 #0076
+ 0xB8222E00, // 006C GETNGBL R8 K23
+ 0x60240018, // 006D GETGBL R9 G24
+ 0x58280058, // 006E LDCONST R10 K88
+ 0x882C0323, // 006F GETMBR R11 R1 K35
+ 0x882C1736, // 0070 GETMBR R11 R11 K54
+ 0x5C300400, // 0071 MOVE R12 R2
+ 0x5C340600, // 0072 MOVE R13 R3
+ 0x7C240800, // 0073 CALL R9 4
+ 0x58280015, // 0074 LDCONST R10 K21
+ 0x7C200400, // 0075 CALL R8 2
+ 0x70020028, // 0076 JMP #00A0
+ 0x8820050F, // 0077 GETMBR R8 R2 K15
+ 0x4C240000, // 0078 LDNIL R9
+ 0x20201009, // 0079 NE R8 R8 R9
+ 0x78220014, // 007A JMPF R8 #0090
+ 0x8C200155, // 007B GETMET R8 R0 K85
+ 0x5C280E00, // 007C MOVE R10 R7
+ 0x5C2C0400, // 007D MOVE R11 R2
+ 0x4C300000, // 007E LDNIL R12
+ 0x7C200800, // 007F CALL R8 4
+ 0xB8222600, // 0080 GETNGBL R8 K19
+ 0x8C201114, // 0081 GETMET R8 R8 K20
+ 0x58280015, // 0082 LDCONST R10 K21
+ 0x7C200400, // 0083 CALL R8 2
+ 0x78220009, // 0084 JMPF R8 #008F
+ 0xB8222E00, // 0085 GETNGBL R8 K23
+ 0x60240018, // 0086 GETGBL R9 G24
+ 0x58280059, // 0087 LDCONST R10 K89
+ 0x882C0323, // 0088 GETMBR R11 R1 K35
+ 0x882C1736, // 0089 GETMBR R11 R11 K54
+ 0x8830050F, // 008A GETMBR R12 R2 K15
+ 0x88340357, // 008B GETMBR R13 R1 K87
+ 0x7C240800, // 008C CALL R9 4
+ 0x58280015, // 008D LDCONST R10 K21
+ 0x7C200400, // 008E CALL R8 2
+ 0x7002000F, // 008F JMP #00A0
+ 0xB8222600, // 0090 GETNGBL R8 K19
+ 0x8C201114, // 0091 GETMET R8 R8 K20
+ 0x58280015, // 0092 LDCONST R10 K21
+ 0x7C200400, // 0093 CALL R8 2
+ 0x78220008, // 0094 JMPF R8 #009E
+ 0xB8222E00, // 0095 GETNGBL R8 K23
+ 0x60240018, // 0096 GETGBL R9 G24
+ 0x5828005A, // 0097 LDCONST R10 K90
+ 0x882C0323, // 0098 GETMBR R11 R1 K35
+ 0x882C1736, // 0099 GETMBR R11 R11 K54
+ 0x88300357, // 009A GETMBR R12 R1 K87
+ 0x7C240600, // 009B CALL R9 3
+ 0x58280015, // 009C LDCONST R10 K21
+ 0x7C200400, // 009D CALL R8 2
+ 0x50200000, // 009E LDBOOL R8 0 0
+ 0x80041000, // 009F RET 1 R8
+ 0x8C200F29, // 00A0 GETMET R8 R7 K41
+ 0x58280090, // 00A1 LDCONST R10 K144
+ 0x542DFFFB, // 00A2 LDINT R11 -4
+ 0x7C200600, // 00A3 CALL R8 3
+ 0x8C200F29, // 00A4 GETMET R8 R7 K41
+ 0x542A0017, // 00A5 LDINT R10 24
+ 0x582C002A, // 00A6 LDCONST R11 K42
+ 0x7C200600, // 00A7 CALL R8 3
+ 0x8C200391, // 00A8 GETMET R8 R1 K145
+ 0x542A0008, // 00A9 LDINT R10 9
+ 0x502C0200, // 00AA LDBOOL R11 1 0
+ 0x7C200600, // 00AB CALL R8 3
+ 0x88240109, // 00AC GETMBR R9 R0 K9
+ 0x88241392, // 00AD GETMBR R9 R9 K146
+ 0x88280393, // 00AE GETMBR R10 R1 K147
+ 0x8C2C1594, // 00AF GETMET R11 R10 K148
+ 0x7C2C0200, // 00B0 CALL R11 1
+ 0x8C2C1195, // 00B1 GETMET R11 R8 K149
+ 0x5C340E00, // 00B2 MOVE R13 R7
+ 0x5C381400, // 00B3 MOVE R14 R10
+ 0x7C2C0600, // 00B4 CALL R11 3
+ 0x8C2C1196, // 00B5 GETMET R11 R8 K150
+ 0x7C2C0200, // 00B6 CALL R11 1
+ 0x8C2C1397, // 00B7 GETMET R11 R9 K151
+ 0x5C341000, // 00B8 MOVE R13 R8
+ 0x7C2C0400, // 00B9 CALL R11 2
+ 0x502C0200, // 00BA LDBOOL R11 1 0
+ 0x80041600, // 00BB RET 1 R11
})
)
);
@@ -2213,656 +2037,51 @@ be_local_closure(class_Matter_IM_send_status, /* name */
/********************************************************************
-** Solidified function: _inner_process_read_request
+** Solidified function: send_subscribe_heartbeat
********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM__inner_process_read_request, /* name */
+be_local_closure(class_Matter_IM_send_subscribe_heartbeat, /* name */
be_nested_proto(
- 19, /* nstack */
- 5, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 3]) {
- be_nested_proto(
- 20, /* nstack */
- 4, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 3]) { /* upvals */
- be_local_const_upval(1, 1),
- be_local_const_upval(1, 0),
- be_local_const_upval(1, 4),
- }),
- 0, /* has sup protos */
- NULL,
- 1, /* has constants */
- ( &(const bvalue[35]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(get_attribute_name),
- /* K3 */ be_nested_str_weak(cluster),
- /* K4 */ be_nested_str_weak(attribute),
- /* K5 */ be_nested_str_weak(_X20_X28),
- /* K6 */ be_nested_str_weak(_X29),
- /* K7 */ be_nested_str_weak(),
- /* K8 */ be_nested_str_weak(status),
- /* K9 */ be_nested_str_weak(read_attribute),
- /* K10 */ be_nested_str_weak(tlv_solo),
- /* K11 */ be_nested_str_weak(to_str_val),
- /* K12 */ be_nested_str_weak(is_list),
- /* K13 */ be_nested_str_weak(is_array),
- /* K14 */ be_nested_str_weak(encode_len),
- /* K15 */ be_nested_str_weak(IM_ReportData),
- /* K16 */ be_nested_str_weak(MAX_MESSAGE),
- /* K17 */ be_nested_str_weak(Matter_TLV_array),
- /* K18 */ be_nested_str_weak(attributedata2raw),
- /* K19 */ be_nested_str_weak(push),
- /* K20 */ be_nested_str_weak(val),
- /* K21 */ be_nested_str_weak(stop_iteration),
- /* K22 */ be_nested_str_weak(tasmota),
- /* K23 */ be_nested_str_weak(log),
- /* K24 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s),
- /* K25 */ be_nested_str_weak(local_session_id),
- /* K26 */ be_const_int(3),
- /* K27 */ be_nested_str_weak(attributestatus2raw),
- /* K28 */ be_nested_str_weak(loglevel),
- /* K29 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s),
- /* K30 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
- /* K31 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED),
- /* K32 */ be_const_int(0),
- /* K33 */ be_nested_str_weak(attribute_reports),
- /* K34 */ be_const_int(1),
- }),
- be_str_weak(read_single_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[238]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0xB8160000, // 0002 GETNGBL R5 K0
- 0x8C140B02, // 0003 GETMET R5 R5 K2
- 0x881C0503, // 0004 GETMBR R7 R2 K3
- 0x88200504, // 0005 GETMBR R8 R2 K4
- 0x7C140600, // 0006 CALL R5 3
- 0x78160002, // 0007 JMPF R5 #000B
- 0x001A0A05, // 0008 ADD R6 K5 R5
- 0x00180D06, // 0009 ADD R6 R6 K6
- 0x70020000, // 000A JMP #000C
- 0x58180007, // 000B LDCONST R6 K7
- 0x5C140C00, // 000C MOVE R5 R6
- 0x4C180000, // 000D LDNIL R6
- 0x900A1006, // 000E SETMBR R2 K8 R6
- 0x4C180000, // 000F LDNIL R6
- 0x20180206, // 0010 NE R6 R1 R6
- 0x781A0006, // 0011 JMPF R6 #0019
- 0x8C180309, // 0012 GETMET R6 R1 K9
- 0x68200000, // 0013 GETUPV R8 U0
- 0x5C240400, // 0014 MOVE R9 R2
- 0x68280001, // 0015 GETUPV R10 U1
- 0x8828150A, // 0016 GETMBR R10 R10 K10
- 0x7C180800, // 0017 CALL R6 4
- 0x70020000, // 0018 JMP #001A
- 0x4C180000, // 0019 LDNIL R6
- 0x501C0200, // 001A LDBOOL R7 1 0
- 0x4C200000, // 001B LDNIL R8
- 0x4C240000, // 001C LDNIL R9
- 0x20240C09, // 001D NE R9 R6 R9
- 0x78260054, // 001E JMPF R9 #0074
- 0x58240007, // 001F LDCONST R9 K7
- 0x68280002, // 0020 GETUPV R10 U2
- 0x742A0002, // 0021 JMPT R10 #0025
- 0x8C280D0B, // 0022 GETMET R10 R6 K11
- 0x7C280200, // 0023 CALL R10 1
- 0x5C241400, // 0024 MOVE R9 R10
- 0x88280D0C, // 0025 GETMBR R10 R6 K12
- 0x742A0001, // 0026 JMPT R10 #0029
- 0x88280D0D, // 0027 GETMBR R10 R6 K13
- 0x782A0031, // 0028 JMPF R10 #005B
- 0x8C280D0E, // 0029 GETMET R10 R6 K14
- 0x7C280200, // 002A CALL R10 1
- 0xB82E0000, // 002B GETNGBL R11 K0
- 0x882C170F, // 002C GETMBR R11 R11 K15
- 0x882C1710, // 002D GETMBR R11 R11 K16
- 0x2428140B, // 002E GT R10 R10 R11
- 0x782A002A, // 002F JMPF R10 #005B
- 0x60280012, // 0030 GETGBL R10 G18
- 0x7C280000, // 0031 CALL R10 0
- 0x5C201400, // 0032 MOVE R8 R10
- 0x60280015, // 0033 GETGBL R10 G21
- 0x542E002F, // 0034 LDINT R11 48
- 0x7C280200, // 0035 CALL R10 1
- 0x8C2C0911, // 0036 GETMET R11 R4 K17
- 0x7C2C0200, // 0037 CALL R11 1
- 0x68300001, // 0038 GETUPV R12 U1
- 0x8C301912, // 0039 GETMET R12 R12 K18
- 0x5C381400, // 003A MOVE R14 R10
- 0x5C3C0400, // 003B MOVE R15 R2
- 0x5C401600, // 003C MOVE R16 R11
- 0x50440000, // 003D LDBOOL R17 0 0
- 0x7C300A00, // 003E CALL R12 5
- 0x8C301113, // 003F GETMET R12 R8 K19
- 0x5C381400, // 0040 MOVE R14 R10
- 0x7C300400, // 0041 CALL R12 2
- 0x60300010, // 0042 GETGBL R12 G16
- 0x88340D14, // 0043 GETMBR R13 R6 K20
- 0x7C300200, // 0044 CALL R12 1
- 0xA8020010, // 0045 EXBLK 0 #0057
- 0x5C341800, // 0046 MOVE R13 R12
- 0x7C340000, // 0047 CALL R13 0
- 0x60380015, // 0048 GETGBL R14 G21
- 0x543E002F, // 0049 LDINT R15 48
- 0x7C380200, // 004A CALL R14 1
- 0x5C281C00, // 004B MOVE R10 R14
- 0x68380001, // 004C GETUPV R14 U1
- 0x8C381D12, // 004D GETMET R14 R14 K18
- 0x5C401400, // 004E MOVE R16 R10
- 0x5C440400, // 004F MOVE R17 R2
- 0x5C481A00, // 0050 MOVE R18 R13
- 0x504C0200, // 0051 LDBOOL R19 1 0
- 0x7C380A00, // 0052 CALL R14 5
- 0x8C381113, // 0053 GETMET R14 R8 K19
- 0x5C401400, // 0054 MOVE R16 R10
- 0x7C380400, // 0055 CALL R14 2
- 0x7001FFEE, // 0056 JMP #0046
- 0x58300015, // 0057 LDCONST R12 K21
- 0xAC300200, // 0058 CATCH R12 1 0
- 0xB0080000, // 0059 RAISE 2 R0 R0
- 0x70020009, // 005A JMP #0065
- 0x60280015, // 005B GETGBL R10 G21
- 0x542E002F, // 005C LDINT R11 48
- 0x7C280200, // 005D CALL R10 1
- 0x5C201400, // 005E MOVE R8 R10
- 0x68280001, // 005F GETUPV R10 U1
- 0x8C281512, // 0060 GETMET R10 R10 K18
- 0x5C301000, // 0061 MOVE R12 R8
- 0x5C340400, // 0062 MOVE R13 R2
- 0x5C380C00, // 0063 MOVE R14 R6
- 0x7C280800, // 0064 CALL R10 4
- 0x68280002, // 0065 GETUPV R10 U2
- 0x742A000B, // 0066 JMPT R10 #0073
- 0xB82A2C00, // 0067 GETNGBL R10 K22
- 0x8C281517, // 0068 GETMET R10 R10 K23
- 0x60300018, // 0069 GETGBL R12 G24
- 0x58340018, // 006A LDCONST R13 K24
- 0x68380000, // 006B GETUPV R14 U0
- 0x88381D19, // 006C GETMBR R14 R14 K25
- 0x5C3C0400, // 006D MOVE R15 R2
- 0x5C400A00, // 006E MOVE R16 R5
- 0x5C441200, // 006F MOVE R17 R9
- 0x7C300A00, // 0070 CALL R12 5
- 0x5834001A, // 0071 LDCONST R13 K26
- 0x7C280600, // 0072 CALL R10 3
- 0x7002003B, // 0073 JMP #00B0
- 0x88240508, // 0074 GETMBR R9 R2 K8
- 0x4C280000, // 0075 LDNIL R10
- 0x2024120A, // 0076 NE R9 R9 R10
- 0x78260026, // 0077 JMPF R9 #009F
- 0x780E0024, // 0078 JMPF R3 #009E
- 0x60240015, // 0079 GETGBL R9 G21
- 0x542A002F, // 007A LDINT R10 48
- 0x7C240200, // 007B CALL R9 1
- 0x5C201200, // 007C MOVE R8 R9
- 0x68240001, // 007D GETUPV R9 U1
- 0x8C24131B, // 007E GETMET R9 R9 K27
- 0x5C2C1000, // 007F MOVE R11 R8
- 0x5C300400, // 0080 MOVE R12 R2
- 0x88340508, // 0081 GETMBR R13 R2 K8
- 0x7C240800, // 0082 CALL R9 4
- 0xB8262C00, // 0083 GETNGBL R9 K22
- 0x8C24131C, // 0084 GETMET R9 R9 K28
- 0x582C001A, // 0085 LDCONST R11 K26
- 0x7C240400, // 0086 CALL R9 2
- 0x78260015, // 0087 JMPF R9 #009E
- 0xB8262C00, // 0088 GETNGBL R9 K22
- 0x8C241317, // 0089 GETMET R9 R9 K23
- 0x602C0018, // 008A GETGBL R11 G24
- 0x5830001D, // 008B LDCONST R12 K29
- 0x68340000, // 008C GETUPV R13 U0
- 0x88341B19, // 008D GETMBR R13 R13 K25
- 0x60380008, // 008E GETGBL R14 G8
- 0x5C3C0400, // 008F MOVE R15 R2
- 0x7C380200, // 0090 CALL R14 1
- 0x5C3C0A00, // 0091 MOVE R15 R5
- 0x88400508, // 0092 GETMBR R16 R2 K8
- 0x88440508, // 0093 GETMBR R17 R2 K8
- 0xB84A0000, // 0094 GETNGBL R18 K0
- 0x8848251E, // 0095 GETMBR R18 R18 K30
- 0x1C442212, // 0096 EQ R17 R17 R18
- 0x78460001, // 0097 JMPF R17 #009A
- 0x5844001E, // 0098 LDCONST R17 K30
- 0x70020000, // 0099 JMP #009B
- 0x58440007, // 009A LDCONST R17 K7
- 0x7C2C0C00, // 009B CALL R11 6
- 0x5830001A, // 009C LDCONST R12 K26
- 0x7C240600, // 009D CALL R9 3
- 0x70020010, // 009E JMP #00B0
- 0x68240002, // 009F GETUPV R9 U2
- 0x7426000C, // 00A0 JMPT R9 #00AE
- 0xB8262C00, // 00A1 GETNGBL R9 K22
- 0x8C241317, // 00A2 GETMET R9 R9 K23
- 0x602C0018, // 00A3 GETGBL R11 G24
- 0x5830001F, // 00A4 LDCONST R12 K31
- 0x68340000, // 00A5 GETUPV R13 U0
- 0x88341B19, // 00A6 GETMBR R13 R13 K25
- 0x60380008, // 00A7 GETGBL R14 G8
- 0x5C3C0400, // 00A8 MOVE R15 R2
- 0x7C380200, // 00A9 CALL R14 1
- 0x5C3C0A00, // 00AA MOVE R15 R5
- 0x7C2C0800, // 00AB CALL R11 4
- 0x5830001A, // 00AC LDCONST R12 K26
- 0x7C240600, // 00AD CALL R9 3
- 0x780E0000, // 00AE JMPF R3 #00B0
- 0x501C0000, // 00AF LDBOOL R7 0 0
- 0x6024000F, // 00B0 GETGBL R9 G15
- 0x5C281000, // 00B1 MOVE R10 R8
- 0x602C0012, // 00B2 GETGBL R11 G18
- 0x7C240400, // 00B3 CALL R9 2
- 0x78260001, // 00B4 JMPF R9 #00B7
- 0x58240020, // 00B5 LDCONST R9 K32
- 0x70020000, // 00B6 JMP #00B8
- 0x4C240000, // 00B7 LDNIL R9
- 0x4C280000, // 00B8 LDNIL R10
- 0x2028100A, // 00B9 NE R10 R8 R10
- 0x782A0031, // 00BA JMPF R10 #00ED
- 0x4C280000, // 00BB LDNIL R10
- 0x1C28120A, // 00BC EQ R10 R9 R10
- 0x782A0001, // 00BD JMPF R10 #00C0
- 0x5C281000, // 00BE MOVE R10 R8
- 0x70020000, // 00BF JMP #00C1
- 0x94281009, // 00C0 GETIDX R10 R8 R9
- 0x602C000C, // 00C1 GETGBL R11 G12
- 0x88300121, // 00C2 GETMBR R12 R0 K33
- 0x7C2C0200, // 00C3 CALL R11 1
- 0x1C2C1720, // 00C4 EQ R11 R11 K32
- 0x782E0004, // 00C5 JMPF R11 #00CB
- 0x882C0121, // 00C6 GETMBR R11 R0 K33
- 0x8C2C1713, // 00C7 GETMET R11 R11 K19
- 0x5C341400, // 00C8 MOVE R13 R10
- 0x7C2C0400, // 00C9 CALL R11 2
- 0x70020014, // 00CA JMP #00E0
- 0x882C0121, // 00CB GETMBR R11 R0 K33
- 0x5431FFFE, // 00CC LDINT R12 -1
- 0x942C160C, // 00CD GETIDX R11 R11 R12
- 0x6030000C, // 00CE GETGBL R12 G12
- 0x5C341600, // 00CF MOVE R13 R11
- 0x7C300200, // 00D0 CALL R12 1
- 0x6034000C, // 00D1 GETGBL R13 G12
- 0x5C381400, // 00D2 MOVE R14 R10
- 0x7C340200, // 00D3 CALL R13 1
- 0x0030180D, // 00D4 ADD R12 R12 R13
- 0xB8360000, // 00D5 GETNGBL R13 K0
- 0x88341B0F, // 00D6 GETMBR R13 R13 K15
- 0x88341B10, // 00D7 GETMBR R13 R13 K16
- 0x1830180D, // 00D8 LE R12 R12 R13
- 0x78320001, // 00D9 JMPF R12 #00DC
- 0x4030160A, // 00DA CONNECT R12 R11 R10
- 0x70020003, // 00DB JMP #00E0
- 0x88300121, // 00DC GETMBR R12 R0 K33
- 0x8C301913, // 00DD GETMET R12 R12 K19
- 0x5C381400, // 00DE MOVE R14 R10
- 0x7C300400, // 00DF CALL R12 2
- 0x4C2C0000, // 00E0 LDNIL R11
- 0x1C2C120B, // 00E1 EQ R11 R9 R11
- 0x782E0001, // 00E2 JMPF R11 #00E5
- 0x4C200000, // 00E3 LDNIL R8
- 0x70020006, // 00E4 JMP #00EC
- 0x00241322, // 00E5 ADD R9 R9 K34
- 0x602C000C, // 00E6 GETGBL R11 G12
- 0x5C301000, // 00E7 MOVE R12 R8
- 0x7C2C0200, // 00E8 CALL R11 1
- 0x282C120B, // 00E9 GE R11 R9 R11
- 0x782E0000, // 00EA JMPF R11 #00EC
- 0x4C200000, // 00EB LDNIL R8
- 0x7001FFCA, // 00EC JMP #00B8
- 0x80040E00, // 00ED RET 1 R7
- })
- ),
- be_nested_proto(
- 8, /* nstack */
- 3, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 2]) { /* upvals */
- be_local_const_upval(1, 5),
- be_local_const_upval(1, 8),
- }),
- 0, /* has sup protos */
- NULL,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x680C0000, // 0000 GETUPV R3 U0
- 0x68100001, // 0001 GETUPV R4 U1
- 0x5C140000, // 0002 MOVE R5 R0
- 0x5C180200, // 0003 MOVE R6 R1
- 0x5C1C0400, // 0004 MOVE R7 R2
- 0x7C0C0800, // 0005 CALL R3 4
- 0x80040600, // 0006 RET 1 R3
- })
- ),
- &be_class_Matter_IM,
- }),
- 1, /* has constants */
- ( &(const bvalue[25]) { /* constants */
- /* K0 */ be_nested_str_weak(device),
- /* K1 */ be_nested_str_weak(get_active_endpoints),
- /* K2 */ be_nested_str_weak(matter),
- /* K3 */ be_nested_str_weak(Path),
- /* K4 */ be_nested_str_weak(msg),
- /* K5 */ be_nested_str_weak(ReportDataMessage),
- /* K6 */ be_nested_str_weak(attribute_reports),
- /* K7 */ be_nested_str_weak(attributes_requests),
- /* K8 */ be_nested_str_weak(endpoint),
- /* K9 */ be_nested_str_weak(cluster),
- /* K10 */ be_nested_str_weak(attribute),
- /* K11 */ be_nested_str_weak(fabric_filtered),
- /* K12 */ be_nested_str_weak(status),
- /* K13 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
- /* K14 */ be_nested_str_weak(get_attribute_name),
- /* K15 */ be_nested_str_weak(tasmota),
- /* K16 */ be_nested_str_weak(log),
- /* K17 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s),
- /* K18 */ be_nested_str_weak(local_session_id),
- /* K19 */ be_nested_str_weak(_X20_X28),
- /* K20 */ be_nested_str_weak(_X29),
- /* K21 */ be_nested_str_weak(),
- /* K22 */ be_const_int(3),
- /* K23 */ be_nested_str_weak(process_attribute_expansion),
- /* K24 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(_inner_process_read_request),
- &be_const_str_solidified,
- ( &(const binstruction[96]) { /* code */
- 0x84140000, // 0000 CLOSURE R5 P0
- 0x88180100, // 0001 GETMBR R6 R0 K0
- 0x8C180D01, // 0002 GETMET R6 R6 K1
- 0x7C180200, // 0003 CALL R6 1
- 0xB81E0400, // 0004 GETNGBL R7 K2
- 0x8C1C0F03, // 0005 GETMET R7 R7 K3
- 0x7C1C0200, // 0006 CALL R7 1
- 0x901E0803, // 0007 SETMBR R7 K4 R3
- 0xB8220400, // 0008 GETNGBL R8 K2
- 0x8C201105, // 0009 GETMET R8 R8 K5
- 0x7C200200, // 000A CALL R8 1
- 0x60240012, // 000B GETGBL R9 G18
- 0x7C240000, // 000C CALL R9 0
- 0x90220C09, // 000D SETMBR R8 K6 R9
- 0x60240010, // 000E GETGBL R9 G16
- 0x88280507, // 000F GETMBR R10 R2 K7
- 0x7C240200, // 0010 CALL R9 1
- 0xA8020048, // 0011 EXBLK 0 #005B
- 0x5C281200, // 0012 MOVE R10 R9
- 0x7C280000, // 0013 CALL R10 0
- 0x882C1508, // 0014 GETMBR R11 R10 K8
- 0x901E100B, // 0015 SETMBR R7 K8 R11
- 0x882C1509, // 0016 GETMBR R11 R10 K9
- 0x901E120B, // 0017 SETMBR R7 K9 R11
- 0x882C150A, // 0018 GETMBR R11 R10 K10
- 0x901E140B, // 0019 SETMBR R7 K10 R11
- 0x882C050B, // 001A GETMBR R11 R2 K11
- 0x901E160B, // 001B SETMBR R7 K11 R11
- 0xB82E0400, // 001C GETNGBL R11 K2
- 0x882C170D, // 001D GETMBR R11 R11 K13
- 0x901E180B, // 001E SETMBR R7 K12 R11
- 0x882C0F08, // 001F GETMBR R11 R7 K8
- 0x4C300000, // 0020 LDNIL R12
- 0x1C2C160C, // 0021 EQ R11 R11 R12
- 0x742E0007, // 0022 JMPT R11 #002B
- 0x882C0F09, // 0023 GETMBR R11 R7 K9
- 0x4C300000, // 0024 LDNIL R12
- 0x1C2C160C, // 0025 EQ R11 R11 R12
- 0x742E0003, // 0026 JMPT R11 #002B
- 0x882C0F0A, // 0027 GETMBR R11 R7 K10
- 0x4C300000, // 0028 LDNIL R12
- 0x1C2C160C, // 0029 EQ R11 R11 R12
- 0x782E0029, // 002A JMPF R11 #0055
- 0x882C0F09, // 002B GETMBR R11 R7 K9
- 0x4C300000, // 002C LDNIL R12
- 0x202C160C, // 002D NE R11 R11 R12
- 0x782E001A, // 002E JMPF R11 #004A
- 0x882C0F0A, // 002F GETMBR R11 R7 K10
- 0x4C300000, // 0030 LDNIL R12
- 0x202C160C, // 0031 NE R11 R11 R12
- 0x782E0016, // 0032 JMPF R11 #004A
- 0xB82E0400, // 0033 GETNGBL R11 K2
- 0x8C2C170E, // 0034 GETMET R11 R11 K14
- 0x88340F09, // 0035 GETMBR R13 R7 K9
- 0x88380F0A, // 0036 GETMBR R14 R7 K10
- 0x7C2C0600, // 0037 CALL R11 3
- 0xB8321E00, // 0038 GETNGBL R12 K15
- 0x8C301910, // 0039 GETMET R12 R12 K16
- 0x60380018, // 003A GETGBL R14 G24
- 0x583C0011, // 003B LDCONST R15 K17
- 0x88400312, // 003C GETMBR R16 R1 K18
- 0x60440008, // 003D GETGBL R17 G8
- 0x5C480E00, // 003E MOVE R18 R7
- 0x7C440200, // 003F CALL R17 1
- 0x782E0002, // 0040 JMPF R11 #0044
- 0x004A260B, // 0041 ADD R18 K19 R11
- 0x00482514, // 0042 ADD R18 R18 K20
- 0x70020000, // 0043 JMP #0045
- 0x58480015, // 0044 LDCONST R18 K21
- 0x00442212, // 0045 ADD R17 R17 R18
- 0x7C380600, // 0046 CALL R14 3
- 0x583C0016, // 0047 LDCONST R15 K22
- 0x7C300600, // 0048 CALL R12 3
- 0x7002000A, // 0049 JMP #0055
- 0xB82E1E00, // 004A GETNGBL R11 K15
- 0x8C2C1710, // 004B GETMET R11 R11 K16
- 0x60340018, // 004C GETGBL R13 G24
- 0x58380011, // 004D LDCONST R14 K17
- 0x883C0312, // 004E GETMBR R15 R1 K18
- 0x60400008, // 004F GETGBL R16 G8
- 0x5C440E00, // 0050 MOVE R17 R7
- 0x7C400200, // 0051 CALL R16 1
- 0x7C340600, // 0052 CALL R13 3
- 0x58380016, // 0053 LDCONST R14 K22
- 0x7C2C0600, // 0054 CALL R11 3
- 0x882C0100, // 0055 GETMBR R11 R0 K0
- 0x8C2C1717, // 0056 GETMET R11 R11 K23
- 0x5C340E00, // 0057 MOVE R13 R7
- 0x84380001, // 0058 CLOSURE R14 P1
- 0x7C2C0600, // 0059 CALL R11 3
- 0x7001FFB6, // 005A JMP #0012
- 0x58240018, // 005B LDCONST R9 K24
- 0xAC240200, // 005C CATCH R9 1 0
- 0xB0080000, // 005D RAISE 2 R0 R0
- 0xA0000000, // 005E CLOSE R0
- 0x80041000, // 005F RET 1 R8
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: report_data
-********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_report_data, /* name */
- be_nested_proto(
- 6, /* nstack */
- 3, /* argc */
- 2, /* varg */
+ 10, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(ReportDataMessage),
- /* K2 */ be_nested_str_weak(from_TLV),
- }),
- be_str_weak(report_data),
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(send_subscribe_heartbeat),
&be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x7C0C0200, // 0002 CALL R3 1
- 0x8C0C0702, // 0003 GETMET R3 R3 K2
- 0x5C140400, // 0004 MOVE R5 R2
- 0x7C0C0400, // 0005 CALL R3 2
- 0x50100000, // 0006 LDBOOL R4 0 0
- 0x80040800, // 0007 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: attributestatus2raw
-********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_attributestatus2raw, /* name */
- be_nested_proto(
- 9, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_IM,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(add),
- /* K1 */ be_const_int(1),
- /* K2 */ be_nested_str_weak(path2raw),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(status),
- /* K5 */ be_const_int(2),
- }),
- be_str_weak(attributestatus2raw),
- &be_const_str_solidified,
- ( &(const binstruction[47]) { /* code */
- 0x8C100300, // 0000 GETMET R4 R1 K0
- 0x541A0014, // 0001 LDINT R6 21
- 0x581C0001, // 0002 LDCONST R7 K1
- 0x7C100600, // 0003 CALL R4 3
- 0x8C100300, // 0004 GETMET R4 R1 K0
- 0x541A34FF, // 0005 LDINT R6 13568
- 0x541DFFFD, // 0006 LDINT R7 -2
- 0x7C100600, // 0007 CALL R4 3
- 0x8C100102, // 0008 GETMET R4 R0 K2
- 0x5C180200, // 0009 MOVE R6 R1
- 0x5C1C0400, // 000A MOVE R7 R2
- 0x58200003, // 000B LDCONST R8 K3
- 0x7C100800, // 000C CALL R4 4
- 0x8C100300, // 000D GETMET R4 R1 K0
- 0x541A3500, // 000E LDINT R6 13569
- 0x541DFFFD, // 000F LDINT R7 -2
- 0x7C100600, // 0010 CALL R4 3
- 0x88100504, // 0011 GETMBR R4 R2 K4
- 0x541600FE, // 0012 LDINT R5 255
- 0x18100805, // 0013 LE R4 R4 R5
- 0x78120008, // 0014 JMPF R4 #001E
- 0x8C100300, // 0015 GETMET R4 R1 K0
- 0x541A23FF, // 0016 LDINT R6 9216
- 0x541DFFFD, // 0017 LDINT R7 -2
- 0x7C100600, // 0018 CALL R4 3
- 0x8C100300, // 0019 GETMET R4 R1 K0
- 0x88180504, // 001A GETMBR R6 R2 K4
- 0x581C0001, // 001B LDCONST R7 K1
- 0x7C100600, // 001C CALL R4 3
- 0x70020007, // 001D JMP #0026
- 0x8C100300, // 001E GETMET R4 R1 K0
- 0x541A24FF, // 001F LDINT R6 9472
- 0x541DFFFD, // 0020 LDINT R7 -2
- 0x7C100600, // 0021 CALL R4 3
- 0x8C100300, // 0022 GETMET R4 R1 K0
- 0x88180504, // 0023 GETMBR R6 R2 K4
- 0x581C0005, // 0024 LDCONST R7 K5
- 0x7C100600, // 0025 CALL R4 3
- 0x8C100300, // 0026 GETMET R4 R1 K0
- 0x541A1817, // 0027 LDINT R6 6168
- 0x541DFFFD, // 0028 LDINT R7 -2
- 0x7C100600, // 0029 CALL R4 3
- 0x8C100300, // 002A GETMET R4 R1 K0
- 0x541A0017, // 002B LDINT R6 24
- 0x581C0001, // 002C LDCONST R7 K1
- 0x7C100600, // 002D CALL R4 3
- 0x80000000, // 002E RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: send_subscribe_response
-********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_send_subscribe_response, /* name */
- be_nested_proto(
- 11, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_IM,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(send_queue),
- /* K1 */ be_nested_str_weak(push),
- /* K2 */ be_nested_str_weak(matter),
- /* K3 */ be_nested_str_weak(IM_SubscribeResponse),
- }),
- be_str_weak(send_subscribe_response),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x88100100, // 0000 GETMBR R4 R0 K0
- 0x8C100901, // 0001 GETMET R4 R4 K1
- 0xB81A0400, // 0002 GETNGBL R6 K2
- 0x8C180D03, // 0003 GETMET R6 R6 K3
- 0x5C200200, // 0004 MOVE R8 R1
- 0x5C240400, // 0005 MOVE R9 R2
- 0x5C280600, // 0006 MOVE R10 R3
- 0x7C180800, // 0007 CALL R6 4
- 0x7C100400, // 0008 CALL R4 2
- 0x80000000, // 0009 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: send_report_data
-********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_send_report_data, /* name */
- be_nested_proto(
- 9, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_IM,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(send_queue),
- /* K1 */ be_nested_str_weak(push),
- /* K2 */ be_nested_str_weak(matter),
- /* K3 */ be_nested_str_weak(IM_ReportData),
- }),
- be_str_weak(send_report_data),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0xB8160400, // 0002 GETNGBL R5 K2
- 0x8C140B03, // 0003 GETMET R5 R5 K3
- 0x5C1C0200, // 0004 MOVE R7 R1
- 0x5C200400, // 0005 MOVE R8 R2
- 0x7C140600, // 0006 CALL R5 3
- 0x7C0C0400, // 0007 CALL R3 2
- 0x80000000, // 0008 RET 0
+ ( &(const binstruction[29]) { /* code */
+ 0x88080323, // 0000 GETMBR R2 R1 K35
+ 0xB80E2600, // 0001 GETNGBL R3 K19
+ 0x8C0C0714, // 0002 GETMET R3 R3 K20
+ 0x58140015, // 0003 LDCONST R5 K21
+ 0x7C0C0400, // 0004 CALL R3 2
+ 0x780E0007, // 0005 JMPF R3 #000E
+ 0xB80E2E00, // 0006 GETNGBL R3 K23
+ 0x60100018, // 0007 GETGBL R4 G24
+ 0x58140098, // 0008 LDCONST R5 K152
+ 0x88180536, // 0009 GETMBR R6 R2 K54
+ 0x881C0337, // 000A GETMBR R7 R1 K55
+ 0x7C100600, // 000B CALL R4 3
+ 0x58140015, // 000C LDCONST R5 K21
+ 0x7C0C0400, // 000D CALL R3 2
+ 0x500C0200, // 000E LDBOOL R3 1 0
+ 0x90067003, // 000F SETMBR R1 K56 R3
+ 0x880C0126, // 0010 GETMBR R3 R0 K38
+ 0x8C0C0727, // 0011 GETMET R3 R3 K39
+ 0xB8160000, // 0012 GETNGBL R5 K0
+ 0x8C140B99, // 0013 GETMET R5 R5 K153
+ 0x881C053C, // 0014 GETMBR R7 R2 K60
+ 0x5C200400, // 0015 MOVE R8 R2
+ 0x5C240200, // 0016 MOVE R9 R1
+ 0x7C140800, // 0017 CALL R5 4
+ 0x7C0C0400, // 0018 CALL R3 2
+ 0x8C0C013D, // 0019 GETMET R3 R0 K61
+ 0x8814053C, // 001A GETMBR R5 R2 K60
+ 0x7C0C0400, // 001B CALL R3 2
+ 0x80000000, // 001C RET 0
})
)
);
@@ -2872,23 +2091,17 @@ be_local_closure(class_Matter_IM_send_report_data, /* name */
/********************************************************************
** Solidified function: find_sendqueue_by_exchangeid
********************************************************************/
-extern const bclass be_class_Matter_IM;
be_local_closure(class_Matter_IM_find_sendqueue_by_exchangeid, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(send_queue),
- /* K2 */ be_nested_str_weak(get_exchangeid),
- /* K3 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_IM, /* shared constants */
be_str_weak(find_sendqueue_by_exchangeid),
&be_const_str_solidified,
( &(const binstruction[22]) { /* code */
@@ -2897,20 +2110,20 @@ be_local_closure(class_Matter_IM_find_sendqueue_by_exchangeid, /* name */
0x780A0001, // 0002 JMPF R2 #0005
0x4C080000, // 0003 LDNIL R2
0x80040400, // 0004 RET 1 R2
- 0x58080000, // 0005 LDCONST R2 K0
+ 0x58080040, // 0005 LDCONST R2 K64
0x600C000C, // 0006 GETGBL R3 G12
- 0x88100101, // 0007 GETMBR R4 R0 K1
+ 0x88100126, // 0007 GETMBR R4 R0 K38
0x7C0C0200, // 0008 CALL R3 1
0x140C0403, // 0009 LT R3 R2 R3
0x780E0008, // 000A JMPF R3 #0014
- 0x880C0101, // 000B GETMBR R3 R0 K1
+ 0x880C0126, // 000B GETMBR R3 R0 K38
0x940C0602, // 000C GETIDX R3 R3 R2
- 0x8C100702, // 000D GETMET R4 R3 K2
+ 0x8C100780, // 000D GETMET R4 R3 K128
0x7C100200, // 000E CALL R4 1
0x1C100801, // 000F EQ R4 R4 R1
0x78120000, // 0010 JMPF R4 #0012
0x80040600, // 0011 RET 1 R3
- 0x00080503, // 0012 ADD R2 R2 K3
+ 0x0008052A, // 0012 ADD R2 R2 K42
0x7001FFF1, // 0013 JMP #0006
0x4C0C0000, // 0014 LDNIL R3
0x80040600, // 0015 RET 1 R3
@@ -2923,83 +2136,26 @@ be_local_closure(class_Matter_IM_find_sendqueue_by_exchangeid, /* name */
/********************************************************************
** Solidified function: process_read_request_solo
********************************************************************/
-extern const bclass be_class_Matter_IM;
be_local_closure(class_Matter_IM_process_read_request_solo, /* name */
be_nested_proto(
- 20, /* nstack */
+ 19, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[55]) { /* constants */
- /* K0 */ be_nested_str_weak(status),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(INVALID_ACTION),
- /* K3 */ be_nested_str_weak(msg),
- /* K4 */ be_nested_str_weak(device),
- /* K5 */ be_nested_str_weak(process_attribute_read_solo),
- /* K6 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
- /* K7 */ be_nested_str_weak(read_attribute),
- /* K8 */ be_nested_str_weak(session),
- /* K9 */ be_nested_str_weak(tlv_solo),
- /* K10 */ be_nested_str_weak(profiler),
- /* K11 */ be_nested_str_weak(log),
- /* K12 */ be_nested_str_weak(read_request_solo_X20read_X20done),
- /* K13 */ be_nested_str_weak(is_list),
- /* K14 */ be_nested_str_weak(is_array),
- /* K15 */ be_nested_str_weak(encode_len),
- /* K16 */ be_nested_str_weak(IM_ReportData),
- /* K17 */ be_nested_str_weak(MAX_MESSAGE),
- /* K18 */ be_nested_str_weak(tasmota),
- /* K19 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Response_X20to_X20big_X2C_X20revert_X20to_X20non_X2Dsolo),
- /* K20 */ be_const_int(3),
- /* K21 */ be_nested_str_weak(TLV),
- /* K22 */ be_nested_str_weak(parse),
- /* K23 */ be_nested_str_weak(raw),
- /* K24 */ be_nested_str_weak(app_payload_idx),
- /* K25 */ be_nested_str_weak(process_read_request),
- /* K26 */ be_nested_str_weak(add),
- /* K27 */ be_const_int(1),
- /* K28 */ be_nested_str_weak(attributedata2raw),
- /* K29 */ be_const_int(405077761),
- /* K30 */ be_nested_str_weak(attributestatus2raw),
- /* K31 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X20_X2D_X20IGNORED),
- /* K32 */ be_nested_str_weak(local_session_id),
- /* K33 */ be_nested_str_weak(build_response),
- /* K34 */ be_nested_str_weak(message_handler),
- /* K35 */ be_nested_str_weak(clear),
- /* K36 */ be_nested_str_weak(encode_frame),
- /* K37 */ be_nested_str_weak(encrypt),
- /* K38 */ be_nested_str_weak(loglevel),
- /* K39 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s),
- /* K40 */ be_nested_str_weak(message_counter),
- /* K41 */ be_nested_str_weak(exchange_id),
- /* K42 */ be_nested_str_weak(ack_message_counter),
- /* K43 */ be_nested_str_weak(send_response_frame),
- /* K44 */ be_nested_str_weak(RESPONSE_X20SENT),
- /* K45 */ be_nested_str_weak(get_attribute_name),
- /* K46 */ be_nested_str_weak(cluster),
- /* K47 */ be_nested_str_weak(attribute),
- /* K48 */ be_nested_str_weak(_X20_X28),
- /* K49 */ be_nested_str_weak(_X29),
- /* K50 */ be_nested_str_weak(),
- /* K51 */ be_nested_str_weak(to_str_val),
- /* K52 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s),
- /* K53 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s),
- /* K54 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr1_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED),
- }),
+ &be_ktab_class_Matter_IM, /* shared constants */
be_str_weak(process_read_request_solo),
&be_const_str_solidified,
- ( &(const binstruction[251]) { /* code */
- 0xB80E0200, // 0000 GETNGBL R3 K1
- 0x880C0702, // 0001 GETMBR R3 R3 K2
- 0x900A0003, // 0002 SETMBR R2 K0 R3
- 0x900A0601, // 0003 SETMBR R2 K3 R1
- 0x880C0104, // 0004 GETMBR R3 R0 K4
- 0x8C0C0705, // 0005 GETMET R3 R3 K5
+ ( &(const binstruction[242]) { /* code */
+ 0xB80E0000, // 0000 GETNGBL R3 K0
+ 0x880C0710, // 0001 GETMBR R3 R3 K16
+ 0x900A1E03, // 0002 SETMBR R2 K15 R3
+ 0x900A3E01, // 0003 SETMBR R2 K31 R1
+ 0x880C0109, // 0004 GETMBR R3 R0 K9
+ 0x8C0C079A, // 0005 GETMET R3 R3 K154
0x5C140400, // 0006 MOVE R5 R2
0x7C0C0400, // 0007 CALL R3 2
0x4C100000, // 0008 LDNIL R4
@@ -3007,244 +2163,235 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */
0x4C180000, // 000A LDNIL R6
0x20180606, // 000B NE R6 R3 R6
0x781A0008, // 000C JMPF R6 #0016
- 0xB81A0200, // 000D GETNGBL R6 K1
- 0x88180D06, // 000E GETMBR R6 R6 K6
- 0x900A0006, // 000F SETMBR R2 K0 R6
- 0x8C180707, // 0010 GETMET R6 R3 K7
- 0x88200308, // 0011 GETMBR R8 R1 K8
+ 0xB81A0000, // 000D GETNGBL R6 K0
+ 0x88180D9B, // 000E GETMBR R6 R6 K155
+ 0x900A1E06, // 000F SETMBR R2 K15 R6
+ 0x8C18079C, // 0010 GETMET R6 R3 K156
+ 0x88200323, // 0011 GETMBR R8 R1 K35
0x5C240400, // 0012 MOVE R9 R2
- 0x88280109, // 0013 GETMBR R10 R0 K9
+ 0x8828018B, // 0013 GETMBR R10 R0 K139
0x7C180800, // 0014 CALL R6 4
0x5C100C00, // 0015 MOVE R4 R6
- 0xB81A0200, // 0016 GETNGBL R6 K1
- 0x88180D0A, // 0017 GETMBR R6 R6 K10
- 0x8C180D0B, // 0018 GETMET R6 R6 K11
- 0x5820000C, // 0019 LDCONST R8 K12
- 0x7C180400, // 001A CALL R6 2
- 0x4C180000, // 001B LDNIL R6
- 0x20180806, // 001C NE R6 R4 R6
- 0x781A0037, // 001D JMPF R6 #0056
- 0x8818090D, // 001E GETMBR R6 R4 K13
- 0x741A0001, // 001F JMPT R6 #0022
- 0x8818090E, // 0020 GETMBR R6 R4 K14
- 0x781A0019, // 0021 JMPF R6 #003C
- 0x8C18090F, // 0022 GETMET R6 R4 K15
- 0x7C180200, // 0023 CALL R6 1
- 0xB81E0200, // 0024 GETNGBL R7 K1
- 0x881C0F10, // 0025 GETMBR R7 R7 K16
- 0x881C0F11, // 0026 GETMBR R7 R7 K17
- 0x24180C07, // 0027 GT R6 R6 R7
- 0x781A0012, // 0028 JMPF R6 #003C
- 0x4C100000, // 0029 LDNIL R4
- 0xB81A2400, // 002A GETNGBL R6 K18
- 0x8C180D0B, // 002B GETMET R6 R6 K11
- 0x60200018, // 002C GETGBL R8 G24
- 0x58240013, // 002D LDCONST R9 K19
- 0x7C200200, // 002E CALL R8 1
- 0x58240014, // 002F LDCONST R9 K20
+ 0x4C180000, // 0016 LDNIL R6
+ 0x20180806, // 0017 NE R6 R4 R6
+ 0x781A0036, // 0018 JMPF R6 #0050
+ 0x8818099D, // 0019 GETMBR R6 R4 K157
+ 0x741A0001, // 001A JMPT R6 #001D
+ 0x8818099E, // 001B GETMBR R6 R4 K158
+ 0x781A0018, // 001C JMPF R6 #0036
+ 0x8C18099F, // 001D GETMET R6 R4 K159
+ 0x7C180200, // 001E CALL R6 1
+ 0xB81E0000, // 001F GETNGBL R7 K0
+ 0x881C0F3F, // 0020 GETMBR R7 R7 K63
+ 0x881C0FA0, // 0021 GETMBR R7 R7 K160
+ 0x24180C07, // 0022 GT R6 R6 R7
+ 0x781A0011, // 0023 JMPF R6 #0036
+ 0x4C100000, // 0024 LDNIL R4
+ 0xB81A2E00, // 0025 GETNGBL R6 K23
+ 0x601C0018, // 0026 GETGBL R7 G24
+ 0x582000A1, // 0027 LDCONST R8 K161
+ 0x7C1C0200, // 0028 CALL R7 1
+ 0x58200015, // 0029 LDCONST R8 K21
+ 0x7C180400, // 002A CALL R6 2
+ 0xB81A0000, // 002B GETNGBL R6 K0
+ 0x88180D81, // 002C GETMBR R6 R6 K129
+ 0x8C180DA2, // 002D GETMET R6 R6 K162
+ 0x88200393, // 002E GETMBR R8 R1 K147
+ 0x882403A3, // 002F GETMBR R9 R1 K163
0x7C180600, // 0030 CALL R6 3
- 0xB81A0200, // 0031 GETNGBL R6 K1
- 0x88180D15, // 0032 GETMBR R6 R6 K21
- 0x8C180D16, // 0033 GETMET R6 R6 K22
- 0x88200317, // 0034 GETMBR R8 R1 K23
- 0x88240318, // 0035 GETMBR R9 R1 K24
- 0x7C180600, // 0036 CALL R6 3
- 0x8C1C0119, // 0037 GETMET R7 R0 K25
- 0x5C240200, // 0038 MOVE R9 R1
- 0x5C280C00, // 0039 MOVE R10 R6
- 0x7C1C0600, // 003A CALL R7 3
- 0x80040E00, // 003B RET 1 R7
- 0x60180015, // 003C GETGBL R6 G21
- 0x541E002F, // 003D LDINT R7 48
- 0x7C180200, // 003E CALL R6 1
- 0x5C140C00, // 003F MOVE R5 R6
- 0x8C180B1A, // 0040 GETMET R6 R5 K26
- 0x54220014, // 0041 LDINT R8 21
- 0x5824001B, // 0042 LDCONST R9 K27
- 0x7C180600, // 0043 CALL R6 3
- 0x8C180B1A, // 0044 GETMET R6 R5 K26
- 0x54223600, // 0045 LDINT R8 13825
- 0x5425FFFD, // 0046 LDINT R9 -2
- 0x7C180600, // 0047 CALL R6 3
- 0x8C18011C, // 0048 GETMET R6 R0 K28
- 0x5C200A00, // 0049 MOVE R8 R5
- 0x5C240400, // 004A MOVE R9 R2
- 0x5C280800, // 004B MOVE R10 R4
- 0x7C180800, // 004C CALL R6 4
- 0x8C180B1A, // 004D GETMET R6 R5 K26
- 0x5820001D, // 004E LDCONST R8 K29
- 0x5425FFFB, // 004F LDINT R9 -4
- 0x7C180600, // 0050 CALL R6 3
- 0x8C180B1A, // 0051 GETMET R6 R5 K26
- 0x54220017, // 0052 LDINT R8 24
- 0x5824001B, // 0053 LDCONST R9 K27
- 0x7C180600, // 0054 CALL R6 3
- 0x70020029, // 0055 JMP #0080
- 0x88180500, // 0056 GETMBR R6 R2 K0
- 0x4C1C0000, // 0057 LDNIL R7
- 0x20180C07, // 0058 NE R6 R6 R7
- 0x781A0019, // 0059 JMPF R6 #0074
- 0x60180015, // 005A GETGBL R6 G21
- 0x541E002F, // 005B LDINT R7 48
- 0x7C180200, // 005C CALL R6 1
- 0x5C140C00, // 005D MOVE R5 R6
- 0x8C180B1A, // 005E GETMET R6 R5 K26
- 0x54220014, // 005F LDINT R8 21
- 0x5824001B, // 0060 LDCONST R9 K27
- 0x7C180600, // 0061 CALL R6 3
- 0x8C180B1A, // 0062 GETMET R6 R5 K26
- 0x54223600, // 0063 LDINT R8 13825
- 0x5425FFFD, // 0064 LDINT R9 -2
- 0x7C180600, // 0065 CALL R6 3
- 0x8C18011E, // 0066 GETMET R6 R0 K30
- 0x5C200A00, // 0067 MOVE R8 R5
- 0x5C240400, // 0068 MOVE R9 R2
- 0x88280500, // 0069 GETMBR R10 R2 K0
- 0x7C180800, // 006A CALL R6 4
- 0x8C180B1A, // 006B GETMET R6 R5 K26
- 0x5820001D, // 006C LDCONST R8 K29
- 0x5425FFFB, // 006D LDINT R9 -4
- 0x7C180600, // 006E CALL R6 3
- 0x8C180B1A, // 006F GETMET R6 R5 K26
- 0x54220017, // 0070 LDINT R8 24
- 0x5824001B, // 0071 LDCONST R9 K27
- 0x7C180600, // 0072 CALL R6 3
- 0x7002000B, // 0073 JMP #0080
- 0xB81A2400, // 0074 GETNGBL R6 K18
- 0x8C180D0B, // 0075 GETMET R6 R6 K11
- 0x60200018, // 0076 GETGBL R8 G24
- 0x5824001F, // 0077 LDCONST R9 K31
- 0x88280308, // 0078 GETMBR R10 R1 K8
- 0x88281520, // 0079 GETMBR R10 R10 K32
- 0x5C2C0400, // 007A MOVE R11 R2
- 0x7C200600, // 007B CALL R8 3
- 0x58240014, // 007C LDCONST R9 K20
- 0x7C180600, // 007D CALL R6 3
- 0x50180000, // 007E LDBOOL R6 0 0
- 0x80040C00, // 007F RET 1 R6
- 0x8C180321, // 0080 GETMET R6 R1 K33
- 0x54220004, // 0081 LDINT R8 5
- 0x50240200, // 0082 LDBOOL R9 1 0
- 0x7C180600, // 0083 CALL R6 3
- 0x881C0104, // 0084 GETMBR R7 R0 K4
- 0x881C0F22, // 0085 GETMBR R7 R7 K34
- 0x88200317, // 0086 GETMBR R8 R1 K23
- 0x8C241123, // 0087 GETMET R9 R8 K35
- 0x7C240200, // 0088 CALL R9 1
- 0x8C240D24, // 0089 GETMET R9 R6 K36
- 0x5C2C0A00, // 008A MOVE R11 R5
- 0x5C301000, // 008B MOVE R12 R8
- 0x7C240600, // 008C CALL R9 3
- 0x8C240D25, // 008D GETMET R9 R6 K37
- 0x7C240200, // 008E CALL R9 1
- 0xB8262400, // 008F GETNGBL R9 K18
- 0x8C241326, // 0090 GETMET R9 R9 K38
- 0x542E0003, // 0091 LDINT R11 4
- 0x7C240400, // 0092 CALL R9 2
- 0x7826000B, // 0093 JMPF R9 #00A0
- 0xB8262400, // 0094 GETNGBL R9 K18
- 0x8C24130B, // 0095 GETMET R9 R9 K11
- 0x602C0018, // 0096 GETGBL R11 G24
- 0x58300027, // 0097 LDCONST R12 K39
- 0x88340D08, // 0098 GETMBR R13 R6 K8
- 0x88341B20, // 0099 GETMBR R13 R13 K32
- 0x88380D28, // 009A GETMBR R14 R6 K40
- 0x883C0D29, // 009B GETMBR R15 R6 K41
- 0x88400D2A, // 009C GETMBR R16 R6 K42
- 0x7C2C0A00, // 009D CALL R11 5
- 0x54320003, // 009E LDINT R12 4
- 0x7C240600, // 009F CALL R9 3
- 0x8C240F2B, // 00A0 GETMET R9 R7 K43
- 0x5C2C0C00, // 00A1 MOVE R11 R6
- 0x7C240400, // 00A2 CALL R9 2
- 0xB8260200, // 00A3 GETNGBL R9 K1
- 0x8824130A, // 00A4 GETMBR R9 R9 K10
- 0x8C24130B, // 00A5 GETMET R9 R9 K11
- 0x582C002C, // 00A6 LDCONST R11 K44
- 0x7C240400, // 00A7 CALL R9 2
- 0xB8260200, // 00A8 GETNGBL R9 K1
- 0x8C24132D, // 00A9 GETMET R9 R9 K45
- 0x882C052E, // 00AA GETMBR R11 R2 K46
- 0x8830052F, // 00AB GETMBR R12 R2 K47
- 0x7C240600, // 00AC CALL R9 3
- 0x78260002, // 00AD JMPF R9 #00B1
- 0x002A6009, // 00AE ADD R10 K48 R9
- 0x00281531, // 00AF ADD R10 R10 K49
- 0x70020000, // 00B0 JMP #00B2
- 0x58280032, // 00B1 LDCONST R10 K50
- 0x5C241400, // 00B2 MOVE R9 R10
- 0x4C280000, // 00B3 LDNIL R10
- 0x2028080A, // 00B4 NE R10 R4 R10
- 0x782A0013, // 00B5 JMPF R10 #00CA
- 0xB82A2400, // 00B6 GETNGBL R10 K18
- 0x8C281526, // 00B7 GETMET R10 R10 K38
- 0x58300014, // 00B8 LDCONST R12 K20
- 0x7C280400, // 00B9 CALL R10 2
- 0x782A000D, // 00BA JMPF R10 #00C9
- 0x8C280933, // 00BB GETMET R10 R4 K51
- 0x7C280200, // 00BC CALL R10 1
- 0xB82E2400, // 00BD GETNGBL R11 K18
- 0x8C2C170B, // 00BE GETMET R11 R11 K11
- 0x60340018, // 00BF GETGBL R13 G24
- 0x58380034, // 00C0 LDCONST R14 K52
- 0x883C0308, // 00C1 GETMBR R15 R1 K8
- 0x883C1F20, // 00C2 GETMBR R15 R15 K32
- 0x5C400400, // 00C3 MOVE R16 R2
- 0x5C441200, // 00C4 MOVE R17 R9
- 0x5C481400, // 00C5 MOVE R18 R10
- 0x7C340A00, // 00C6 CALL R13 5
- 0x58380014, // 00C7 LDCONST R14 K20
- 0x7C2C0600, // 00C8 CALL R11 3
- 0x7002002E, // 00C9 JMP #00F9
- 0x88280500, // 00CA GETMBR R10 R2 K0
- 0x4C2C0000, // 00CB LDNIL R11
- 0x2028140B, // 00CC NE R10 R10 R11
- 0x782A001A, // 00CD JMPF R10 #00E9
- 0x88280500, // 00CE GETMBR R10 R2 K0
- 0xB82E0200, // 00CF GETNGBL R11 K1
- 0x882C1706, // 00D0 GETMBR R11 R11 K6
- 0x1C28140B, // 00D1 EQ R10 R10 R11
- 0x782A0001, // 00D2 JMPF R10 #00D5
- 0x58280006, // 00D3 LDCONST R10 K6
- 0x70020000, // 00D4 JMP #00D6
- 0x58280032, // 00D5 LDCONST R10 K50
- 0xB82E2400, // 00D6 GETNGBL R11 K18
- 0x8C2C1726, // 00D7 GETMET R11 R11 K38
- 0x58340014, // 00D8 LDCONST R13 K20
- 0x7C2C0400, // 00D9 CALL R11 2
- 0x782E000C, // 00DA JMPF R11 #00E8
- 0xB82E2400, // 00DB GETNGBL R11 K18
- 0x8C2C170B, // 00DC GETMET R11 R11 K11
- 0x60340018, // 00DD GETGBL R13 G24
- 0x58380035, // 00DE LDCONST R14 K53
- 0x883C0308, // 00DF GETMBR R15 R1 K8
- 0x883C1F20, // 00E0 GETMBR R15 R15 K32
- 0x5C400400, // 00E1 MOVE R16 R2
- 0x5C441200, // 00E2 MOVE R17 R9
- 0x88480500, // 00E3 GETMBR R18 R2 K0
- 0x5C4C1400, // 00E4 MOVE R19 R10
- 0x7C340C00, // 00E5 CALL R13 6
- 0x58380014, // 00E6 LDCONST R14 K20
- 0x7C2C0600, // 00E7 CALL R11 3
- 0x7002000F, // 00E8 JMP #00F9
- 0xB82A2400, // 00E9 GETNGBL R10 K18
- 0x8C281526, // 00EA GETMET R10 R10 K38
- 0x58300014, // 00EB LDCONST R12 K20
- 0x7C280400, // 00EC CALL R10 2
- 0x782A000A, // 00ED JMPF R10 #00F9
- 0xB82A2400, // 00EE GETNGBL R10 K18
- 0x8C28150B, // 00EF GETMET R10 R10 K11
- 0x60300018, // 00F0 GETGBL R12 G24
- 0x58340036, // 00F1 LDCONST R13 K54
- 0x88380308, // 00F2 GETMBR R14 R1 K8
- 0x88381D20, // 00F3 GETMBR R14 R14 K32
- 0x5C3C0400, // 00F4 MOVE R15 R2
- 0x5C401200, // 00F5 MOVE R16 R9
- 0x7C300800, // 00F6 CALL R12 4
- 0x58340014, // 00F7 LDCONST R13 K20
- 0x7C280600, // 00F8 CALL R10 3
- 0x50280200, // 00F9 LDBOOL R10 1 0
- 0x80041400, // 00FA RET 1 R10
+ 0x8C1C01A4, // 0031 GETMET R7 R0 K164
+ 0x5C240200, // 0032 MOVE R9 R1
+ 0x5C280C00, // 0033 MOVE R10 R6
+ 0x7C1C0600, // 0034 CALL R7 3
+ 0x80040E00, // 0035 RET 1 R7
+ 0x60180015, // 0036 GETGBL R6 G21
+ 0x541E002F, // 0037 LDINT R7 48
+ 0x7C180200, // 0038 CALL R6 1
+ 0x5C140C00, // 0039 MOVE R5 R6
+ 0x8C180B29, // 003A GETMET R6 R5 K41
+ 0x54220014, // 003B LDINT R8 21
+ 0x5824002A, // 003C LDCONST R9 K42
+ 0x7C180600, // 003D CALL R6 3
+ 0x8C180B29, // 003E GETMET R6 R5 K41
+ 0x54223600, // 003F LDINT R8 13825
+ 0x5425FFFD, // 0040 LDINT R9 -2
+ 0x7C180600, // 0041 CALL R6 3
+ 0x8C1801A5, // 0042 GETMET R6 R0 K165
+ 0x5C200A00, // 0043 MOVE R8 R5
+ 0x5C240400, // 0044 MOVE R9 R2
+ 0x5C280800, // 0045 MOVE R10 R4
+ 0x7C180800, // 0046 CALL R6 4
+ 0x8C180B29, // 0047 GETMET R6 R5 K41
+ 0x58200090, // 0048 LDCONST R8 K144
+ 0x5425FFFB, // 0049 LDINT R9 -4
+ 0x7C180600, // 004A CALL R6 3
+ 0x8C180B29, // 004B GETMET R6 R5 K41
+ 0x54220017, // 004C LDINT R8 24
+ 0x5824002A, // 004D LDCONST R9 K42
+ 0x7C180600, // 004E CALL R6 3
+ 0x70020028, // 004F JMP #0079
+ 0x8818050F, // 0050 GETMBR R6 R2 K15
+ 0x4C1C0000, // 0051 LDNIL R7
+ 0x20180C07, // 0052 NE R6 R6 R7
+ 0x781A0019, // 0053 JMPF R6 #006E
+ 0x60180015, // 0054 GETGBL R6 G21
+ 0x541E002F, // 0055 LDINT R7 48
+ 0x7C180200, // 0056 CALL R6 1
+ 0x5C140C00, // 0057 MOVE R5 R6
+ 0x8C180B29, // 0058 GETMET R6 R5 K41
+ 0x54220014, // 0059 LDINT R8 21
+ 0x5824002A, // 005A LDCONST R9 K42
+ 0x7C180600, // 005B CALL R6 3
+ 0x8C180B29, // 005C GETMET R6 R5 K41
+ 0x54223600, // 005D LDINT R8 13825
+ 0x5425FFFD, // 005E LDINT R9 -2
+ 0x7C180600, // 005F CALL R6 3
+ 0x8C1801A6, // 0060 GETMET R6 R0 K166
+ 0x5C200A00, // 0061 MOVE R8 R5
+ 0x5C240400, // 0062 MOVE R9 R2
+ 0x8828050F, // 0063 GETMBR R10 R2 K15
+ 0x7C180800, // 0064 CALL R6 4
+ 0x8C180B29, // 0065 GETMET R6 R5 K41
+ 0x58200090, // 0066 LDCONST R8 K144
+ 0x5425FFFB, // 0067 LDINT R9 -4
+ 0x7C180600, // 0068 CALL R6 3
+ 0x8C180B29, // 0069 GETMET R6 R5 K41
+ 0x54220017, // 006A LDINT R8 24
+ 0x5824002A, // 006B LDCONST R9 K42
+ 0x7C180600, // 006C CALL R6 3
+ 0x7002000A, // 006D JMP #0079
+ 0xB81A2E00, // 006E GETNGBL R6 K23
+ 0x601C0018, // 006F GETGBL R7 G24
+ 0x582000A7, // 0070 LDCONST R8 K167
+ 0x88240323, // 0071 GETMBR R9 R1 K35
+ 0x88241336, // 0072 GETMBR R9 R9 K54
+ 0x5C280400, // 0073 MOVE R10 R2
+ 0x7C1C0600, // 0074 CALL R7 3
+ 0x58200015, // 0075 LDCONST R8 K21
+ 0x7C180400, // 0076 CALL R6 2
+ 0x50180000, // 0077 LDBOOL R6 0 0
+ 0x80040C00, // 0078 RET 1 R6
+ 0x8C180391, // 0079 GETMET R6 R1 K145
+ 0x54220004, // 007A LDINT R8 5
+ 0x50240200, // 007B LDBOOL R9 1 0
+ 0x7C180600, // 007C CALL R6 3
+ 0x881C0109, // 007D GETMBR R7 R0 K9
+ 0x881C0F92, // 007E GETMBR R7 R7 K146
+ 0x88200393, // 007F GETMBR R8 R1 K147
+ 0x8C241194, // 0080 GETMET R9 R8 K148
+ 0x7C240200, // 0081 CALL R9 1
+ 0x8C240D95, // 0082 GETMET R9 R6 K149
+ 0x5C2C0A00, // 0083 MOVE R11 R5
+ 0x5C301000, // 0084 MOVE R12 R8
+ 0x7C240600, // 0085 CALL R9 3
+ 0x8C240D96, // 0086 GETMET R9 R6 K150
+ 0x7C240200, // 0087 CALL R9 1
+ 0xB8262600, // 0088 GETNGBL R9 K19
+ 0x8C241314, // 0089 GETMET R9 R9 K20
+ 0x542E0003, // 008A LDINT R11 4
+ 0x7C240400, // 008B CALL R9 2
+ 0x7826000A, // 008C JMPF R9 #0098
+ 0xB8262E00, // 008D GETNGBL R9 K23
+ 0x60280018, // 008E GETGBL R10 G24
+ 0x582C00A8, // 008F LDCONST R11 K168
+ 0x88300D23, // 0090 GETMBR R12 R6 K35
+ 0x88301936, // 0091 GETMBR R12 R12 K54
+ 0x88340DA9, // 0092 GETMBR R13 R6 K169
+ 0x88380D57, // 0093 GETMBR R14 R6 K87
+ 0x883C0DAA, // 0094 GETMBR R15 R6 K170
+ 0x7C280A00, // 0095 CALL R10 5
+ 0x542E0003, // 0096 LDINT R11 4
+ 0x7C240400, // 0097 CALL R9 2
+ 0x8C240F97, // 0098 GETMET R9 R7 K151
+ 0x5C2C0C00, // 0099 MOVE R11 R6
+ 0x7C240400, // 009A CALL R9 2
+ 0x4C240000, // 009B LDNIL R9
+ 0xB82A2600, // 009C GETNGBL R10 K19
+ 0x8C281514, // 009D GETMET R10 R10 K20
+ 0x58300015, // 009E LDCONST R12 K21
+ 0x7C280400, // 009F CALL R10 2
+ 0x782A000B, // 00A0 JMPF R10 #00AD
+ 0xB82A0000, // 00A1 GETNGBL R10 K0
+ 0x8C281516, // 00A2 GETMET R10 R10 K22
+ 0x8830050D, // 00A3 GETMBR R12 R2 K13
+ 0x8834050E, // 00A4 GETMBR R13 R2 K14
+ 0x7C280600, // 00A5 CALL R10 3
+ 0x5C241400, // 00A6 MOVE R9 R10
+ 0x78260002, // 00A7 JMPF R9 #00AB
+ 0x002A3209, // 00A8 ADD R10 K25 R9
+ 0x0028151A, // 00A9 ADD R10 R10 K26
+ 0x70020000, // 00AA JMP #00AC
+ 0x5828001B, // 00AB LDCONST R10 K27
+ 0x5C241400, // 00AC MOVE R9 R10
+ 0x4C280000, // 00AD LDNIL R10
+ 0x2028080A, // 00AE NE R10 R4 R10
+ 0x782A0012, // 00AF JMPF R10 #00C3
+ 0xB82A2600, // 00B0 GETNGBL R10 K19
+ 0x8C281514, // 00B1 GETMET R10 R10 K20
+ 0x58300015, // 00B2 LDCONST R12 K21
+ 0x7C280400, // 00B3 CALL R10 2
+ 0x782A000C, // 00B4 JMPF R10 #00C2
+ 0x8C2809AB, // 00B5 GETMET R10 R4 K171
+ 0x7C280200, // 00B6 CALL R10 1
+ 0xB82E2E00, // 00B7 GETNGBL R11 K23
+ 0x60300018, // 00B8 GETGBL R12 G24
+ 0x583400AC, // 00B9 LDCONST R13 K172
+ 0x88380323, // 00BA GETMBR R14 R1 K35
+ 0x88381D36, // 00BB GETMBR R14 R14 K54
+ 0x5C3C0400, // 00BC MOVE R15 R2
+ 0x5C401200, // 00BD MOVE R16 R9
+ 0x5C441400, // 00BE MOVE R17 R10
+ 0x7C300A00, // 00BF CALL R12 5
+ 0x58340015, // 00C0 LDCONST R13 K21
+ 0x7C2C0400, // 00C1 CALL R11 2
+ 0x7002002C, // 00C2 JMP #00F0
+ 0x8828050F, // 00C3 GETMBR R10 R2 K15
+ 0x4C2C0000, // 00C4 LDNIL R11
+ 0x2028140B, // 00C5 NE R10 R10 R11
+ 0x782A0019, // 00C6 JMPF R10 #00E1
+ 0x8828050F, // 00C7 GETMBR R10 R2 K15
+ 0xB82E0000, // 00C8 GETNGBL R11 K0
+ 0x882C179B, // 00C9 GETMBR R11 R11 K155
+ 0x1C28140B, // 00CA EQ R10 R10 R11
+ 0x782A0001, // 00CB JMPF R10 #00CE
+ 0x5828009B, // 00CC LDCONST R10 K155
+ 0x70020000, // 00CD JMP #00CF
+ 0x5828001B, // 00CE LDCONST R10 K27
+ 0xB82E2600, // 00CF GETNGBL R11 K19
+ 0x8C2C1714, // 00D0 GETMET R11 R11 K20
+ 0x58340015, // 00D1 LDCONST R13 K21
+ 0x7C2C0400, // 00D2 CALL R11 2
+ 0x782E000B, // 00D3 JMPF R11 #00E0
+ 0xB82E2E00, // 00D4 GETNGBL R11 K23
+ 0x60300018, // 00D5 GETGBL R12 G24
+ 0x583400AD, // 00D6 LDCONST R13 K173
+ 0x88380323, // 00D7 GETMBR R14 R1 K35
+ 0x88381D36, // 00D8 GETMBR R14 R14 K54
+ 0x5C3C0400, // 00D9 MOVE R15 R2
+ 0x5C401200, // 00DA MOVE R16 R9
+ 0x8844050F, // 00DB GETMBR R17 R2 K15
+ 0x5C481400, // 00DC MOVE R18 R10
+ 0x7C300C00, // 00DD CALL R12 6
+ 0x58340015, // 00DE LDCONST R13 K21
+ 0x7C2C0400, // 00DF CALL R11 2
+ 0x7002000E, // 00E0 JMP #00F0
+ 0xB82A2600, // 00E1 GETNGBL R10 K19
+ 0x8C281514, // 00E2 GETMET R10 R10 K20
+ 0x58300015, // 00E3 LDCONST R12 K21
+ 0x7C280400, // 00E4 CALL R10 2
+ 0x782A0009, // 00E5 JMPF R10 #00F0
+ 0xB82A2E00, // 00E6 GETNGBL R10 K23
+ 0x602C0018, // 00E7 GETGBL R11 G24
+ 0x583000AE, // 00E8 LDCONST R12 K174
+ 0x88340323, // 00E9 GETMBR R13 R1 K35
+ 0x88341B36, // 00EA GETMBR R13 R13 K54
+ 0x5C380400, // 00EB MOVE R14 R2
+ 0x5C3C1200, // 00EC MOVE R15 R9
+ 0x7C2C0800, // 00ED CALL R11 4
+ 0x58300015, // 00EE LDCONST R12 K21
+ 0x7C280400, // 00EF CALL R10 2
+ 0x50280200, // 00F0 LDBOOL R10 1 0
+ 0x80041400, // 00F1 RET 1 R10
})
)
);
@@ -3252,419 +2399,746 @@ be_local_closure(class_Matter_IM_process_read_request_solo, /* name */
/********************************************************************
-** Solidified function: send_enqueued
+** Solidified function: parse_event_filters_min_no
********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_send_enqueued, /* name */
+be_local_closure(class_Matter_IM_parse_event_filters_min_no, /* name */
+ be_nested_proto(
+ 14, /* nstack */
+ 2, /* argc */
+ 12, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(parse_event_filters_min_no),
+ &be_const_str_solidified,
+ ( &(const binstruction[50]) { /* code */
+ 0x580800AF, // 0000 LDCONST R2 K175
+ 0x4C0C0000, // 0001 LDNIL R3
+ 0x4C100000, // 0002 LDNIL R4
+ 0x20100004, // 0003 NE R4 R0 R4
+ 0x7812002B, // 0004 JMPF R4 #0031
+ 0x60100010, // 0005 GETGBL R4 G16
+ 0x5C140000, // 0006 MOVE R5 R0
+ 0x7C100200, // 0007 CALL R4 1
+ 0xA8020024, // 0008 EXBLK 0 #002E
+ 0x5C140800, // 0009 MOVE R5 R4
+ 0x7C140000, // 000A CALL R5 0
+ 0xB81B6000, // 000B GETNGBL R6 K176
+ 0x8C180DB1, // 000C GETMET R6 R6 K177
+ 0x88200BB2, // 000D GETMBR R8 R5 K178
+ 0x7C180400, // 000E CALL R6 2
+ 0x781A0012, // 000F JMPF R6 #0023
+ 0x78060011, // 0010 JMPF R1 #0023
+ 0x881C0BB2, // 0011 GETMBR R7 R5 K178
+ 0x8C1C0FB3, // 0012 GETMET R7 R7 K179
+ 0x7C1C0200, // 0013 CALL R7 1
+ 0x201C0E01, // 0014 NE R7 R7 R1
+ 0x781E000C, // 0015 JMPF R7 #0023
+ 0xB81E2600, // 0016 GETNGBL R7 K19
+ 0x8C1C0F17, // 0017 GETMET R7 R7 K23
+ 0x60240018, // 0018 GETGBL R9 G24
+ 0x582800B4, // 0019 LDCONST R10 K180
+ 0x8C2C0DB3, // 001A GETMET R11 R6 K179
+ 0x7C2C0200, // 001B CALL R11 1
+ 0x8C2C17B5, // 001C GETMET R11 R11 K181
+ 0x7C2C0200, // 001D CALL R11 1
+ 0x8C3003B5, // 001E GETMET R12 R1 K181
+ 0x7C300200, // 001F CALL R12 1
+ 0x7C240600, // 0020 CALL R9 3
+ 0x7C1C0400, // 0021 CALL R7 2
+ 0x7001FFE5, // 0022 JMP #0009
+ 0xB81F6000, // 0023 GETNGBL R7 K176
+ 0x8C1C0FB1, // 0024 GETMET R7 R7 K177
+ 0x88240BB6, // 0025 GETMBR R9 R5 K182
+ 0x7C1C0400, // 0026 CALL R7 2
+ 0x4C200000, // 0027 LDNIL R8
+ 0x1C200608, // 0028 EQ R8 R3 R8
+ 0x74220001, // 0029 JMPT R8 #002C
+ 0x14200607, // 002A LT R8 R3 R7
+ 0x78220000, // 002B JMPF R8 #002D
+ 0x5C0C0E00, // 002C MOVE R3 R7
+ 0x7001FFDA, // 002D JMP #0009
+ 0x58100025, // 002E LDCONST R4 K37
+ 0xAC100200, // 002F CATCH R4 1 0
+ 0xB0080000, // 0030 RAISE 2 R0 R0
+ 0x80040600, // 0031 RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: invokeresponse2raw
+********************************************************************/
+be_local_closure(class_Matter_IM_invokeresponse2raw, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(invokeresponse2raw),
+ &be_const_str_solidified,
+ ( &(const binstruction[148]) { /* code */
+ 0x8C100329, // 0000 GETMET R4 R1 K41
+ 0x541A0014, // 0001 LDINT R6 21
+ 0x581C002A, // 0002 LDCONST R7 K42
+ 0x7C100600, // 0003 CALL R4 3
+ 0x4C100000, // 0004 LDNIL R4
+ 0x1C100604, // 0005 EQ R4 R3 R4
+ 0x78120004, // 0006 JMPF R4 #000C
+ 0x8C100329, // 0007 GETMET R4 R1 K41
+ 0x541A3500, // 0008 LDINT R6 13569
+ 0x541DFFFD, // 0009 LDINT R7 -2
+ 0x7C100600, // 000A CALL R4 3
+ 0x70020003, // 000B JMP #0010
+ 0x8C100329, // 000C GETMET R4 R1 K41
+ 0x541A34FF, // 000D LDINT R6 13568
+ 0x541DFFFD, // 000E LDINT R7 -2
+ 0x7C100600, // 000F CALL R4 3
+ 0x8C100329, // 0010 GETMET R4 R1 K41
+ 0x541A36FF, // 0011 LDINT R6 14080
+ 0x541DFFFD, // 0012 LDINT R7 -2
+ 0x7C100600, // 0013 CALL R4 3
+ 0x88100512, // 0014 GETMBR R4 R2 K18
+ 0x541600FE, // 0015 LDINT R5 255
+ 0x18100805, // 0016 LE R4 R4 R5
+ 0x78120008, // 0017 JMPF R4 #0021
+ 0x8C100329, // 0018 GETMET R4 R1 K41
+ 0x541A23FF, // 0019 LDINT R6 9216
+ 0x541DFFFD, // 001A LDINT R7 -2
+ 0x7C100600, // 001B CALL R4 3
+ 0x8C100329, // 001C GETMET R4 R1 K41
+ 0x88180512, // 001D GETMBR R6 R2 K18
+ 0x581C002A, // 001E LDCONST R7 K42
+ 0x7C100600, // 001F CALL R4 3
+ 0x70020007, // 0020 JMP #0029
+ 0x8C100329, // 0021 GETMET R4 R1 K41
+ 0x541A24FF, // 0022 LDINT R6 9472
+ 0x541DFFFD, // 0023 LDINT R7 -2
+ 0x7C100600, // 0024 CALL R4 3
+ 0x8C100329, // 0025 GETMET R4 R1 K41
+ 0x88180512, // 0026 GETMBR R6 R2 K18
+ 0x581C002B, // 0027 LDCONST R7 K43
+ 0x7C100600, // 0028 CALL R4 3
+ 0x8810050D, // 0029 GETMBR R4 R2 K13
+ 0x541600FE, // 002A LDINT R5 255
+ 0x18100805, // 002B LE R4 R4 R5
+ 0x78120008, // 002C JMPF R4 #0036
+ 0x8C100329, // 002D GETMET R4 R1 K41
+ 0x541A2400, // 002E LDINT R6 9217
+ 0x541DFFFD, // 002F LDINT R7 -2
+ 0x7C100600, // 0030 CALL R4 3
+ 0x8C100329, // 0031 GETMET R4 R1 K41
+ 0x8818050D, // 0032 GETMBR R6 R2 K13
+ 0x581C002A, // 0033 LDCONST R7 K42
+ 0x7C100600, // 0034 CALL R4 3
+ 0x70020014, // 0035 JMP #004B
+ 0x8810050D, // 0036 GETMBR R4 R2 K13
+ 0x5416FFFE, // 0037 LDINT R5 65535
+ 0x18100805, // 0038 LE R4 R4 R5
+ 0x78120008, // 0039 JMPF R4 #0043
+ 0x8C100329, // 003A GETMET R4 R1 K41
+ 0x541A2500, // 003B LDINT R6 9473
+ 0x541DFFFD, // 003C LDINT R7 -2
+ 0x7C100600, // 003D CALL R4 3
+ 0x8C100329, // 003E GETMET R4 R1 K41
+ 0x8818050D, // 003F GETMBR R6 R2 K13
+ 0x581C002B, // 0040 LDCONST R7 K43
+ 0x7C100600, // 0041 CALL R4 3
+ 0x70020007, // 0042 JMP #004B
+ 0x8C100329, // 0043 GETMET R4 R1 K41
+ 0x541A2600, // 0044 LDINT R6 9729
+ 0x541DFFFD, // 0045 LDINT R7 -2
+ 0x7C100600, // 0046 CALL R4 3
+ 0x8C100329, // 0047 GETMET R4 R1 K41
+ 0x8818050D, // 0048 GETMBR R6 R2 K13
+ 0x541E0003, // 0049 LDINT R7 4
+ 0x7C100600, // 004A CALL R4 3
+ 0x8810054D, // 004B GETMBR R4 R2 K77
+ 0x541600FE, // 004C LDINT R5 255
+ 0x18100805, // 004D LE R4 R4 R5
+ 0x78120008, // 004E JMPF R4 #0058
+ 0x8C100329, // 004F GETMET R4 R1 K41
+ 0x541A2401, // 0050 LDINT R6 9218
+ 0x541DFFFD, // 0051 LDINT R7 -2
+ 0x7C100600, // 0052 CALL R4 3
+ 0x8C100329, // 0053 GETMET R4 R1 K41
+ 0x8818054D, // 0054 GETMBR R6 R2 K77
+ 0x581C002A, // 0055 LDCONST R7 K42
+ 0x7C100600, // 0056 CALL R4 3
+ 0x70020014, // 0057 JMP #006D
+ 0x8810054D, // 0058 GETMBR R4 R2 K77
+ 0x5416FFFE, // 0059 LDINT R5 65535
+ 0x18100805, // 005A LE R4 R4 R5
+ 0x78120008, // 005B JMPF R4 #0065
+ 0x8C100329, // 005C GETMET R4 R1 K41
+ 0x541A2501, // 005D LDINT R6 9474
+ 0x541DFFFD, // 005E LDINT R7 -2
+ 0x7C100600, // 005F CALL R4 3
+ 0x8C100329, // 0060 GETMET R4 R1 K41
+ 0x8818054D, // 0061 GETMBR R6 R2 K77
+ 0x581C002B, // 0062 LDCONST R7 K43
+ 0x7C100600, // 0063 CALL R4 3
+ 0x70020007, // 0064 JMP #006D
+ 0x8C100329, // 0065 GETMET R4 R1 K41
+ 0x541A2601, // 0066 LDINT R6 9730
+ 0x541DFFFD, // 0067 LDINT R7 -2
+ 0x7C100600, // 0068 CALL R4 3
+ 0x8C100329, // 0069 GETMET R4 R1 K41
+ 0x8818054D, // 006A GETMBR R6 R2 K77
+ 0x541E0003, // 006B LDINT R7 4
+ 0x7C100600, // 006C CALL R4 3
+ 0x8C100329, // 006D GETMET R4 R1 K41
+ 0x541A0017, // 006E LDINT R6 24
+ 0x581C002A, // 006F LDCONST R7 K42
+ 0x7C100600, // 0070 CALL R4 3
+ 0x4C100000, // 0071 LDNIL R4
+ 0x1C100604, // 0072 EQ R4 R3 R4
+ 0x78120016, // 0073 JMPF R4 #008B
+ 0x8810050F, // 0074 GETMBR R4 R2 K15
+ 0x4C140000, // 0075 LDNIL R5
+ 0x1C140805, // 0076 EQ R5 R4 R5
+ 0x78160001, // 0077 JMPF R5 #007A
+ 0xB8160000, // 0078 GETNGBL R5 K0
+ 0x88100B24, // 0079 GETMBR R4 R5 K36
+ 0x8C140329, // 007A GETMET R5 R1 K41
+ 0x541E3500, // 007B LDINT R7 13569
+ 0x5421FFFD, // 007C LDINT R8 -2
+ 0x7C140600, // 007D CALL R5 3
+ 0x8C140329, // 007E GETMET R5 R1 K41
+ 0x541E23FF, // 007F LDINT R7 9216
+ 0x5421FFFD, // 0080 LDINT R8 -2
+ 0x7C140600, // 0081 CALL R5 3
+ 0x8C140329, // 0082 GETMET R5 R1 K41
+ 0x881C050F, // 0083 GETMBR R7 R2 K15
+ 0x5820002A, // 0084 LDCONST R8 K42
+ 0x7C140600, // 0085 CALL R5 3
+ 0x8C140329, // 0086 GETMET R5 R1 K41
+ 0x541E0017, // 0087 LDINT R7 24
+ 0x5820002A, // 0088 LDCONST R8 K42
+ 0x7C140600, // 0089 CALL R5 3
+ 0x70020003, // 008A JMP #008F
+ 0x900E5D2A, // 008B SETMBR R3 K46 K42
+ 0x8C10072F, // 008C GETMET R4 R3 K47
+ 0x5C180200, // 008D MOVE R6 R1
+ 0x7C100400, // 008E CALL R4 2
+ 0x8C100329, // 008F GETMET R4 R1 K41
+ 0x541A1817, // 0090 LDINT R6 6168
+ 0x541DFFFD, // 0091 LDINT R7 -2
+ 0x7C100600, // 0092 CALL R4 3
+ 0x80000000, // 0093 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: process_status_response
+********************************************************************/
+be_local_closure(class_Matter_IM_process_status_response, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(process_status_response),
+ &be_const_str_solidified,
+ ( &(const binstruction[43]) { /* code */
+ 0x8C0C05B7, // 0000 GETMET R3 R2 K183
+ 0x58140040, // 0001 LDCONST R5 K64
+ 0x541A00FE, // 0002 LDINT R6 255
+ 0x7C0C0600, // 0003 CALL R3 3
+ 0x8C10017E, // 0004 GETMET R4 R0 K126
+ 0x88180357, // 0005 GETMBR R6 R1 K87
+ 0x7C100400, // 0006 CALL R4 2
+ 0xB8160000, // 0007 GETNGBL R5 K0
+ 0x88140B24, // 0008 GETMBR R5 R5 K36
+ 0x1C140605, // 0009 EQ R5 R3 R5
+ 0x7816000F, // 000A JMPF R5 #001B
+ 0x78120004, // 000B JMPF R4 #0011
+ 0x8C1409B8, // 000C GETMET R5 R4 K184
+ 0x5C1C0200, // 000D MOVE R7 R1
+ 0x7C140400, // 000E CALL R5 2
+ 0x80040A00, // 000F RET 1 R5
+ 0x70020008, // 0010 JMP #001A
+ 0xB8162E00, // 0011 GETNGBL R5 K23
+ 0x60180018, // 0012 GETGBL R6 G24
+ 0x581C00B9, // 0013 LDCONST R7 K185
+ 0x88200323, // 0014 GETMBR R8 R1 K35
+ 0x88201136, // 0015 GETMBR R8 R8 K54
+ 0x88240357, // 0016 GETMBR R9 R1 K87
+ 0x7C180600, // 0017 CALL R6 3
+ 0x541E0003, // 0018 LDINT R7 4
+ 0x7C140400, // 0019 CALL R5 2
+ 0x7002000D, // 001A JMP #0029
+ 0xB8162E00, // 001B GETNGBL R5 K23
+ 0x60180018, // 001C GETGBL R6 G24
+ 0x581C00BA, // 001D LDCONST R7 K186
+ 0x5C200600, // 001E MOVE R8 R3
+ 0x7C180400, // 001F CALL R6 2
+ 0x581C0015, // 0020 LDCONST R7 K21
+ 0x7C140400, // 0021 CALL R5 2
+ 0x78120005, // 0022 JMPF R4 #0029
+ 0x8C1409BB, // 0023 GETMET R5 R4 K187
+ 0x5C1C0200, // 0024 MOVE R7 R1
+ 0x7C140400, // 0025 CALL R5 2
+ 0x8C14016C, // 0026 GETMET R5 R0 K108
+ 0x881C0357, // 0027 GETMBR R7 R1 K87
+ 0x7C140400, // 0028 CALL R5 2
+ 0x50140000, // 0029 LDBOOL R5 0 0
+ 0x80040A00, // 002A RET 1 R5
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: attributestatus2raw
+********************************************************************/
+be_local_closure(class_Matter_IM_attributestatus2raw, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(attributestatus2raw),
+ &be_const_str_solidified,
+ ( &(const binstruction[47]) { /* code */
+ 0x8C100329, // 0000 GETMET R4 R1 K41
+ 0x541A0014, // 0001 LDINT R6 21
+ 0x581C002A, // 0002 LDCONST R7 K42
+ 0x7C100600, // 0003 CALL R4 3
+ 0x8C100329, // 0004 GETMET R4 R1 K41
+ 0x541A34FF, // 0005 LDINT R6 13568
+ 0x541DFFFD, // 0006 LDINT R7 -2
+ 0x7C100600, // 0007 CALL R4 3
+ 0x8C10012D, // 0008 GETMET R4 R0 K45
+ 0x5C180200, // 0009 MOVE R6 R1
+ 0x5C1C0400, // 000A MOVE R7 R2
+ 0x58200040, // 000B LDCONST R8 K64
+ 0x7C100800, // 000C CALL R4 4
+ 0x8C100329, // 000D GETMET R4 R1 K41
+ 0x541A3500, // 000E LDINT R6 13569
+ 0x541DFFFD, // 000F LDINT R7 -2
+ 0x7C100600, // 0010 CALL R4 3
+ 0x8810050F, // 0011 GETMBR R4 R2 K15
+ 0x541600FE, // 0012 LDINT R5 255
+ 0x18100805, // 0013 LE R4 R4 R5
+ 0x78120008, // 0014 JMPF R4 #001E
+ 0x8C100329, // 0015 GETMET R4 R1 K41
+ 0x541A23FF, // 0016 LDINT R6 9216
+ 0x541DFFFD, // 0017 LDINT R7 -2
+ 0x7C100600, // 0018 CALL R4 3
+ 0x8C100329, // 0019 GETMET R4 R1 K41
+ 0x8818050F, // 001A GETMBR R6 R2 K15
+ 0x581C002A, // 001B LDCONST R7 K42
+ 0x7C100600, // 001C CALL R4 3
+ 0x70020007, // 001D JMP #0026
+ 0x8C100329, // 001E GETMET R4 R1 K41
+ 0x541A24FF, // 001F LDINT R6 9472
+ 0x541DFFFD, // 0020 LDINT R7 -2
+ 0x7C100600, // 0021 CALL R4 3
+ 0x8C100329, // 0022 GETMET R4 R1 K41
+ 0x8818050F, // 0023 GETMBR R6 R2 K15
+ 0x581C002B, // 0024 LDCONST R7 K43
+ 0x7C100600, // 0025 CALL R4 3
+ 0x8C100329, // 0026 GETMET R4 R1 K41
+ 0x541A1817, // 0027 LDINT R6 6168
+ 0x541DFFFD, // 0028 LDINT R7 -2
+ 0x7C100600, // 0029 CALL R4 3
+ 0x8C100329, // 002A GETMET R4 R1 K41
+ 0x541A0017, // 002B LDINT R6 24
+ 0x581C002A, // 002C LDCONST R7 K42
+ 0x7C100600, // 002D CALL R4 3
+ 0x80000000, // 002E RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_single_attribute_to_bytes
+********************************************************************/
+be_local_closure(class_Matter_IM_read_single_attribute_to_bytes, /* name */
+ be_nested_proto(
+ 21, /* nstack */
+ 5, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(read_single_attribute_to_bytes),
+ &be_const_str_solidified,
+ ( &(const binstruction[165]) { /* code */
+ 0xB8160000, // 0000 GETNGBL R5 K0
+ 0x88140B81, // 0001 GETMBR R5 R5 K129
+ 0x4C180000, // 0002 LDNIL R6
+ 0xB81E2600, // 0003 GETNGBL R7 K19
+ 0x8C1C0F14, // 0004 GETMET R7 R7 K20
+ 0x58240015, // 0005 LDCONST R9 K21
+ 0x7C1C0400, // 0006 CALL R7 2
+ 0x781E000B, // 0007 JMPF R7 #0014
+ 0xB81E0000, // 0008 GETNGBL R7 K0
+ 0x8C1C0F16, // 0009 GETMET R7 R7 K22
+ 0x8824050D, // 000A GETMBR R9 R2 K13
+ 0x8828050E, // 000B GETMBR R10 R2 K14
+ 0x7C1C0600, // 000C CALL R7 3
+ 0x5C180E00, // 000D MOVE R6 R7
+ 0x781A0002, // 000E JMPF R6 #0012
+ 0x001E3206, // 000F ADD R7 K25 R6
+ 0x001C0F1A, // 0010 ADD R7 R7 K26
+ 0x70020000, // 0011 JMP #0013
+ 0x581C001B, // 0012 LDCONST R7 K27
+ 0x5C180E00, // 0013 MOVE R6 R7
+ 0x881C050F, // 0014 GETMBR R7 R2 K15
+ 0x4C200000, // 0015 LDNIL R8
+ 0x201C0E08, // 0016 NE R7 R7 R8
+ 0x4C200000, // 0017 LDNIL R8
+ 0x4C240000, // 0018 LDNIL R9
+ 0x4C280000, // 0019 LDNIL R10
+ 0x2028020A, // 001A NE R10 R1 R10
+ 0x782A0005, // 001B JMPF R10 #0022
+ 0x8C28039C, // 001C GETMET R10 R1 K156
+ 0x5C300600, // 001D MOVE R12 R3
+ 0x5C340400, // 001E MOVE R13 R2
+ 0x8838018B, // 001F GETMBR R14 R0 K139
+ 0x7C280800, // 0020 CALL R10 4
+ 0x5C201400, // 0021 MOVE R8 R10
+ 0x4C280000, // 0022 LDNIL R10
+ 0x2028100A, // 0023 NE R10 R8 R10
+ 0x782A0057, // 0024 JMPF R10 #007D
+ 0x5828001B, // 0025 LDCONST R10 K27
+ 0xB82E2600, // 0026 GETNGBL R11 K19
+ 0x8C2C1714, // 0027 GETMET R11 R11 K20
+ 0x58340015, // 0028 LDCONST R13 K21
+ 0x7C2C0400, // 0029 CALL R11 2
+ 0x782E0003, // 002A JMPF R11 #002F
+ 0x78120002, // 002B JMPF R4 #002F
+ 0x8C2C11AB, // 002C GETMET R11 R8 K171
+ 0x7C2C0200, // 002D CALL R11 1
+ 0x5C281600, // 002E MOVE R10 R11
+ 0x882C119D, // 002F GETMBR R11 R8 K157
+ 0x742E0001, // 0030 JMPT R11 #0033
+ 0x882C119E, // 0031 GETMBR R11 R8 K158
+ 0x782E002F, // 0032 JMPF R11 #0063
+ 0x8C2C119F, // 0033 GETMET R11 R8 K159
+ 0x7C2C0200, // 0034 CALL R11 1
+ 0xB8320000, // 0035 GETNGBL R12 K0
+ 0x8830193F, // 0036 GETMBR R12 R12 K63
+ 0x883019A0, // 0037 GETMBR R12 R12 K160
+ 0x242C160C, // 0038 GT R11 R11 R12
+ 0x782E0028, // 0039 JMPF R11 #0063
+ 0x602C0012, // 003A GETGBL R11 G18
+ 0x7C2C0000, // 003B CALL R11 0
+ 0x5C241600, // 003C MOVE R9 R11
+ 0x602C0015, // 003D GETGBL R11 G21
+ 0x5432002F, // 003E LDINT R12 48
+ 0x7C2C0200, // 003F CALL R11 1
+ 0x8C300BBC, // 0040 GETMET R12 R5 K188
+ 0x7C300200, // 0041 CALL R12 1
+ 0x8C3401A5, // 0042 GETMET R13 R0 K165
+ 0x5C3C1600, // 0043 MOVE R15 R11
+ 0x5C400400, // 0044 MOVE R16 R2
+ 0x5C441800, // 0045 MOVE R17 R12
+ 0x50480000, // 0046 LDBOOL R18 0 0
+ 0x7C340A00, // 0047 CALL R13 5
+ 0x8C341327, // 0048 GETMET R13 R9 K39
+ 0x5C3C1600, // 0049 MOVE R15 R11
+ 0x7C340400, // 004A CALL R13 2
+ 0x60340010, // 004B GETGBL R13 G16
+ 0x883811BD, // 004C GETMBR R14 R8 K189
+ 0x7C340200, // 004D CALL R13 1
+ 0xA802000F, // 004E EXBLK 0 #005F
+ 0x5C381A00, // 004F MOVE R14 R13
+ 0x7C380000, // 0050 CALL R14 0
+ 0x603C0015, // 0051 GETGBL R15 G21
+ 0x5442002F, // 0052 LDINT R16 48
+ 0x7C3C0200, // 0053 CALL R15 1
+ 0x5C2C1E00, // 0054 MOVE R11 R15
+ 0x8C3C01A5, // 0055 GETMET R15 R0 K165
+ 0x5C441600, // 0056 MOVE R17 R11
+ 0x5C480400, // 0057 MOVE R18 R2
+ 0x5C4C1C00, // 0058 MOVE R19 R14
+ 0x50500200, // 0059 LDBOOL R20 1 0
+ 0x7C3C0A00, // 005A CALL R15 5
+ 0x8C3C1327, // 005B GETMET R15 R9 K39
+ 0x5C441600, // 005C MOVE R17 R11
+ 0x7C3C0400, // 005D CALL R15 2
+ 0x7001FFEF, // 005E JMP #004F
+ 0x58340025, // 005F LDCONST R13 K37
+ 0xAC340200, // 0060 CATCH R13 1 0
+ 0xB0080000, // 0061 RAISE 2 R0 R0
+ 0x70020008, // 0062 JMP #006C
+ 0x602C0015, // 0063 GETGBL R11 G21
+ 0x5432002F, // 0064 LDINT R12 48
+ 0x7C2C0200, // 0065 CALL R11 1
+ 0x5C241600, // 0066 MOVE R9 R11
+ 0x8C2C01A5, // 0067 GETMET R11 R0 K165
+ 0x5C341200, // 0068 MOVE R13 R9
+ 0x5C380400, // 0069 MOVE R14 R2
+ 0x5C3C1000, // 006A MOVE R15 R8
+ 0x7C2C0800, // 006B CALL R11 4
+ 0xB82E2600, // 006C GETNGBL R11 K19
+ 0x8C2C1714, // 006D GETMET R11 R11 K20
+ 0x58340015, // 006E LDCONST R13 K21
+ 0x7C2C0400, // 006F CALL R11 2
+ 0x782E000A, // 0070 JMPF R11 #007C
+ 0x78120009, // 0071 JMPF R4 #007C
+ 0xB82E2E00, // 0072 GETNGBL R11 K23
+ 0x60300018, // 0073 GETGBL R12 G24
+ 0x583400BE, // 0074 LDCONST R13 K190
+ 0x88380736, // 0075 GETMBR R14 R3 K54
+ 0x5C3C0400, // 0076 MOVE R15 R2
+ 0x5C400C00, // 0077 MOVE R16 R6
+ 0x5C441400, // 0078 MOVE R17 R10
+ 0x7C300A00, // 0079 CALL R12 5
+ 0x58340015, // 007A LDCONST R13 K21
+ 0x7C2C0400, // 007B CALL R11 2
+ 0x70020026, // 007C JMP #00A4
+ 0x8828050F, // 007D GETMBR R10 R2 K15
+ 0x4C2C0000, // 007E LDNIL R11
+ 0x2028140B, // 007F NE R10 R10 R11
+ 0x782A0022, // 0080 JMPF R10 #00A4
+ 0x781E0021, // 0081 JMPF R7 #00A4
+ 0x60280015, // 0082 GETGBL R10 G21
+ 0x542E002F, // 0083 LDINT R11 48
+ 0x7C280200, // 0084 CALL R10 1
+ 0x5C241400, // 0085 MOVE R9 R10
+ 0x8C2801A6, // 0086 GETMET R10 R0 K166
+ 0x5C301200, // 0087 MOVE R12 R9
+ 0x5C340400, // 0088 MOVE R13 R2
+ 0x8838050F, // 0089 GETMBR R14 R2 K15
+ 0x7C280800, // 008A CALL R10 4
+ 0xB82A2600, // 008B GETNGBL R10 K19
+ 0x8C281514, // 008C GETMET R10 R10 K20
+ 0x58300015, // 008D LDCONST R12 K21
+ 0x7C280400, // 008E CALL R10 2
+ 0x782A0013, // 008F JMPF R10 #00A4
+ 0xB82A2E00, // 0090 GETNGBL R10 K23
+ 0x602C0018, // 0091 GETGBL R11 G24
+ 0x583000BF, // 0092 LDCONST R12 K191
+ 0x88340736, // 0093 GETMBR R13 R3 K54
+ 0x60380008, // 0094 GETGBL R14 G8
+ 0x5C3C0400, // 0095 MOVE R15 R2
+ 0x7C380200, // 0096 CALL R14 1
+ 0x5C3C0C00, // 0097 MOVE R15 R6
+ 0x8840050F, // 0098 GETMBR R16 R2 K15
+ 0x8844050F, // 0099 GETMBR R17 R2 K15
+ 0xB84A0000, // 009A GETNGBL R18 K0
+ 0x8848259B, // 009B GETMBR R18 R18 K155
+ 0x1C442212, // 009C EQ R17 R17 R18
+ 0x78460001, // 009D JMPF R17 #00A0
+ 0x5844009B, // 009E LDCONST R17 K155
+ 0x70020000, // 009F JMP #00A1
+ 0x5844001B, // 00A0 LDCONST R17 K27
+ 0x7C2C0C00, // 00A1 CALL R11 6
+ 0x58300015, // 00A2 LDCONST R12 K21
+ 0x7C280400, // 00A3 CALL R10 2
+ 0x80041200, // 00A4 RET 1 R9
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: send_status
+********************************************************************/
+be_local_closure(class_Matter_IM_send_status, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(send_status),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x880C0126, // 0000 GETMBR R3 R0 K38
+ 0x8C0C0727, // 0001 GETMET R3 R3 K39
+ 0xB8160000, // 0002 GETNGBL R5 K0
+ 0x8C140BC0, // 0003 GETMET R5 R5 K192
+ 0x5C1C0200, // 0004 MOVE R7 R1
+ 0x5C200400, // 0005 MOVE R8 R2
+ 0x7C140600, // 0006 CALL R5 3
+ 0x7C0C0400, // 0007 CALL R3 2
+ 0x80000000, // 0008 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: process_incoming
+********************************************************************/
+be_local_closure(class_Matter_IM_process_incoming, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(send_queue),
- /* K2 */ be_nested_str_weak(finish),
- /* K3 */ be_nested_str_weak(ready),
- /* K4 */ be_nested_str_weak(send_im),
- /* K5 */ be_nested_str_weak(tasmota),
- /* K6 */ be_nested_str_weak(log),
- /* K7 */ be_nested_str_weak(MTR_X3A_X20remove_X20IM_X20message_X20exch_X3D),
- /* K8 */ be_nested_str_weak(resp),
- /* K9 */ be_nested_str_weak(exchange_id),
- /* K10 */ be_nested_str_weak(remove),
- /* K11 */ be_const_int(1),
- }),
- be_str_weak(send_enqueued),
+ &be_ktab_class_Matter_IM, /* shared constants */
+ be_str_weak(process_incoming),
&be_const_str_solidified,
- ( &(const binstruction[34]) { /* code */
- 0x58080000, // 0000 LDCONST R2 K0
- 0x600C000C, // 0001 GETGBL R3 G12
- 0x88100101, // 0002 GETMBR R4 R0 K1
- 0x7C0C0200, // 0003 CALL R3 1
- 0x140C0403, // 0004 LT R3 R2 R3
- 0x780E001A, // 0005 JMPF R3 #0021
- 0x880C0101, // 0006 GETMBR R3 R0 K1
- 0x940C0602, // 0007 GETIDX R3 R3 R2
- 0x88100702, // 0008 GETMBR R4 R3 K2
- 0x74120004, // 0009 JMPT R4 #000F
- 0x88100703, // 000A GETMBR R4 R3 K3
- 0x78120002, // 000B JMPF R4 #000F
- 0x8C100704, // 000C GETMET R4 R3 K4
- 0x5C180200, // 000D MOVE R6 R1
- 0x7C100400, // 000E CALL R4 2
- 0x88100702, // 000F GETMBR R4 R3 K2
- 0x7812000D, // 0010 JMPF R4 #001F
- 0xB8120A00, // 0011 GETNGBL R4 K5
- 0x8C100906, // 0012 GETMET R4 R4 K6
- 0x60180008, // 0013 GETGBL R6 G8
- 0x881C0708, // 0014 GETMBR R7 R3 K8
- 0x881C0F09, // 0015 GETMBR R7 R7 K9
- 0x7C180200, // 0016 CALL R6 1
- 0x001A0E06, // 0017 ADD R6 K7 R6
- 0x541E0003, // 0018 LDINT R7 4
- 0x7C100600, // 0019 CALL R4 3
- 0x88100101, // 001A GETMBR R4 R0 K1
- 0x8C10090A, // 001B GETMET R4 R4 K10
- 0x5C180400, // 001C MOVE R6 R2
- 0x7C100400, // 001D CALL R4 2
- 0x70020000, // 001E JMP #0020
- 0x0008050B, // 001F ADD R2 R2 K11
- 0x7001FFDF, // 0020 JMP #0001
- 0x80000000, // 0021 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_init, /* name */
- be_nested_proto(
- 5, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_IM,
- 1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(device),
- /* K1 */ be_nested_str_weak(send_queue),
- /* K2 */ be_nested_str_weak(subs_shop),
- /* K3 */ be_nested_str_weak(matter),
- /* K4 */ be_nested_str_weak(IM_Subscription_Shop),
- /* K5 */ be_nested_str_weak(read_request_solo),
- /* K6 */ be_nested_str_weak(ReadRequestMessage_solo),
- /* K7 */ be_nested_str_weak(invoke_request_solo),
- /* K8 */ be_nested_str_weak(InvokeRequestMessage_solo),
- /* K9 */ be_nested_str_weak(tlv_solo),
- /* K10 */ be_nested_str_weak(TLV),
- /* K11 */ be_nested_str_weak(Matter_TLV_item),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[23]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x60080012, // 0001 GETGBL R2 G18
- 0x7C080000, // 0002 CALL R2 0
- 0x90020202, // 0003 SETMBR R0 K1 R2
- 0xB80A0600, // 0004 GETNGBL R2 K3
- 0x8C080504, // 0005 GETMET R2 R2 K4
- 0x5C100000, // 0006 MOVE R4 R0
- 0x7C080400, // 0007 CALL R2 2
- 0x90020402, // 0008 SETMBR R0 K2 R2
- 0xB80A0600, // 0009 GETNGBL R2 K3
- 0x8C080506, // 000A GETMET R2 R2 K6
- 0x7C080200, // 000B CALL R2 1
- 0x90020A02, // 000C SETMBR R0 K5 R2
- 0xB80A0600, // 000D GETNGBL R2 K3
- 0x8C080508, // 000E GETMET R2 R2 K8
- 0x7C080200, // 000F CALL R2 1
- 0x90020E02, // 0010 SETMBR R0 K7 R2
- 0xB80A0600, // 0011 GETNGBL R2 K3
- 0x8808050A, // 0012 GETMBR R2 R2 K10
- 0x8C08050B, // 0013 GETMET R2 R2 K11
- 0x7C080200, // 0014 CALL R2 1
- 0x90021202, // 0015 SETMBR R0 K9 R2
- 0x80000000, // 0016 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: expire_sendqueue
-********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_expire_sendqueue, /* name */
- be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_IM,
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(send_queue),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(time_reached),
- /* K4 */ be_nested_str_weak(expiration),
- /* K5 */ be_nested_str_weak(reached_timeout),
- /* K6 */ be_nested_str_weak(remove),
- /* K7 */ be_const_int(1),
- }),
- be_str_weak(expire_sendqueue),
- &be_const_str_solidified,
- ( &(const binstruction[24]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0x6008000C, // 0001 GETGBL R2 G12
- 0x880C0101, // 0002 GETMBR R3 R0 K1
- 0x7C080200, // 0003 CALL R2 1
- 0x14080202, // 0004 LT R2 R1 R2
- 0x780A000F, // 0005 JMPF R2 #0016
- 0x88080101, // 0006 GETMBR R2 R0 K1
- 0x94080401, // 0007 GETIDX R2 R2 R1
- 0xB80E0400, // 0008 GETNGBL R3 K2
- 0x8C0C0703, // 0009 GETMET R3 R3 K3
- 0x88140504, // 000A GETMBR R5 R2 K4
- 0x7C0C0400, // 000B CALL R3 2
- 0x780E0006, // 000C JMPF R3 #0014
- 0x8C0C0505, // 000D GETMET R3 R2 K5
- 0x7C0C0200, // 000E CALL R3 1
- 0x880C0101, // 000F GETMBR R3 R0 K1
- 0x8C0C0706, // 0010 GETMET R3 R3 K6
- 0x5C140200, // 0011 MOVE R5 R1
- 0x7C0C0400, // 0012 CALL R3 2
- 0x70020000, // 0013 JMP #0015
- 0x00040307, // 0014 ADD R1 R1 K7
- 0x7001FFEA, // 0015 JMP #0001
- 0x4C080000, // 0016 LDNIL R2
- 0x80040400, // 0017 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: subscribe_request
-********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_subscribe_request, /* name */
- be_nested_proto(
- 18, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_IM,
- 1, /* has constants */
- ( &(const bvalue[33]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(SubscribeRequestMessage),
- /* K2 */ be_nested_str_weak(from_TLV),
- /* K3 */ be_nested_str_weak(keep_subscriptions),
- /* K4 */ be_nested_str_weak(subs_shop),
- /* K5 */ be_nested_str_weak(remove_by_session),
- /* K6 */ be_nested_str_weak(session),
- /* K7 */ be_nested_str_weak(new_subscription),
- /* K8 */ be_nested_str_weak(Path),
- /* K9 */ be_nested_str_weak(msg),
- /* K10 */ be_nested_str_weak(attributes_requests),
- /* K11 */ be_nested_str_weak(endpoint),
- /* K12 */ be_nested_str_weak(cluster),
- /* K13 */ be_nested_str_weak(attribute),
- /* K14 */ be_nested_str_weak(push),
- /* K15 */ be_nested_str_weak(stop_iteration),
- /* K16 */ be_nested_str_weak(tasmota),
- /* K17 */ be_nested_str_weak(log),
- /* K18 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X256i_X29_X20_X25s_X20_X28min_X3D_X25i_X2C_X20max_X3D_X25i_X2C_X20keep_X3D_X25i_X29_X20sub_X3D_X25i_X20fabric_filtered_X3D_X25s),
- /* K19 */ be_nested_str_weak(local_session_id),
- /* K20 */ be_nested_str_weak(concat),
- /* K21 */ be_nested_str_weak(_X20),
- /* K22 */ be_nested_str_weak(min_interval),
- /* K23 */ be_nested_str_weak(max_interval),
- /* K24 */ be_const_int(1),
- /* K25 */ be_const_int(0),
- /* K26 */ be_nested_str_weak(subscription_id),
- /* K27 */ be_nested_str_weak(fabric_filtered),
- /* K28 */ be_const_int(3),
- /* K29 */ be_nested_str_weak(event_requests),
- /* K30 */ be_nested_str_weak(MTR_X3A_X20_X3ESubscribe_X20_X28_X25_X256i_X29_X20event_requests_size_X3D_X25s),
- /* K31 */ be_nested_str_weak(_inner_process_read_request),
- /* K32 */ be_nested_str_weak(send_subscribe_response),
- }),
- be_str_weak(subscribe_request),
- &be_const_str_solidified,
- ( &(const binstruction[99]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x7C0C0200, // 0002 CALL R3 1
- 0x8C0C0702, // 0003 GETMET R3 R3 K2
- 0x5C140400, // 0004 MOVE R5 R2
- 0x7C0C0400, // 0005 CALL R3 2
- 0x88100703, // 0006 GETMBR R4 R3 K3
- 0x74120003, // 0007 JMPT R4 #000C
- 0x88100104, // 0008 GETMBR R4 R0 K4
- 0x8C100905, // 0009 GETMET R4 R4 K5
- 0x88180306, // 000A GETMBR R6 R1 K6
- 0x7C100400, // 000B CALL R4 2
- 0x88100104, // 000C GETMBR R4 R0 K4
- 0x8C100907, // 000D GETMET R4 R4 K7
- 0x88180306, // 000E GETMBR R6 R1 K6
- 0x5C1C0600, // 000F MOVE R7 R3
- 0x7C100600, // 0010 CALL R4 3
- 0x60140012, // 0011 GETGBL R5 G18
- 0x7C140000, // 0012 CALL R5 0
- 0xB81A0000, // 0013 GETNGBL R6 K0
- 0x8C180D08, // 0014 GETMET R6 R6 K8
- 0x7C180200, // 0015 CALL R6 1
- 0x901A1201, // 0016 SETMBR R6 K9 R1
- 0x601C0010, // 0017 GETGBL R7 G16
- 0x8820070A, // 0018 GETMBR R8 R3 K10
- 0x7C1C0200, // 0019 CALL R7 1
- 0xA802000D, // 001A EXBLK 0 #0029
- 0x5C200E00, // 001B MOVE R8 R7
- 0x7C200000, // 001C CALL R8 0
- 0x8824110B, // 001D GETMBR R9 R8 K11
- 0x901A1609, // 001E SETMBR R6 K11 R9
- 0x8824110C, // 001F GETMBR R9 R8 K12
- 0x901A1809, // 0020 SETMBR R6 K12 R9
- 0x8824110D, // 0021 GETMBR R9 R8 K13
- 0x901A1A09, // 0022 SETMBR R6 K13 R9
- 0x8C240B0E, // 0023 GETMET R9 R5 K14
- 0x602C0008, // 0024 GETGBL R11 G8
- 0x5C300C00, // 0025 MOVE R12 R6
- 0x7C2C0200, // 0026 CALL R11 1
- 0x7C240400, // 0027 CALL R9 2
- 0x7001FFF1, // 0028 JMP #001B
- 0x581C000F, // 0029 LDCONST R7 K15
- 0xAC1C0200, // 002A CATCH R7 1 0
- 0xB0080000, // 002B RAISE 2 R0 R0
- 0xB81E2000, // 002C GETNGBL R7 K16
- 0x8C1C0F11, // 002D GETMET R7 R7 K17
- 0x60240018, // 002E GETGBL R9 G24
- 0x58280012, // 002F LDCONST R10 K18
- 0x882C0306, // 0030 GETMBR R11 R1 K6
- 0x882C1713, // 0031 GETMBR R11 R11 K19
- 0x8C300B14, // 0032 GETMET R12 R5 K20
- 0x58380015, // 0033 LDCONST R14 K21
- 0x7C300400, // 0034 CALL R12 2
- 0x88340916, // 0035 GETMBR R13 R4 K22
- 0x88380917, // 0036 GETMBR R14 R4 K23
- 0x883C0703, // 0037 GETMBR R15 R3 K3
- 0x783E0001, // 0038 JMPF R15 #003B
- 0x583C0018, // 0039 LDCONST R15 K24
- 0x70020000, // 003A JMP #003C
- 0x583C0019, // 003B LDCONST R15 K25
- 0x8840091A, // 003C GETMBR R16 R4 K26
- 0x8844071B, // 003D GETMBR R17 R3 K27
- 0x7C241000, // 003E CALL R9 8
- 0x5828001C, // 003F LDCONST R10 K28
- 0x7C1C0600, // 0040 CALL R7 3
- 0x881C071D, // 0041 GETMBR R7 R3 K29
- 0x4C200000, // 0042 LDNIL R8
- 0x201C0E08, // 0043 NE R7 R7 R8
- 0x781E000E, // 0044 JMPF R7 #0054
- 0x601C000C, // 0045 GETGBL R7 G12
- 0x8820071D, // 0046 GETMBR R8 R3 K29
- 0x7C1C0200, // 0047 CALL R7 1
- 0x241C0F19, // 0048 GT R7 R7 K25
- 0x781E0009, // 0049 JMPF R7 #0054
- 0xB81E2000, // 004A GETNGBL R7 K16
- 0x8C1C0F11, // 004B GETMET R7 R7 K17
- 0x60240018, // 004C GETGBL R9 G24
- 0x5828001E, // 004D LDCONST R10 K30
- 0x602C000C, // 004E GETGBL R11 G12
- 0x8830071D, // 004F GETMBR R12 R3 K29
- 0x7C2C0200, // 0050 CALL R11 1
- 0x7C240400, // 0051 CALL R9 2
- 0x5828001C, // 0052 LDCONST R10 K28
- 0x7C1C0600, // 0053 CALL R7 3
- 0x8C1C011F, // 0054 GETMET R7 R0 K31
- 0x88240306, // 0055 GETMBR R9 R1 K6
- 0x5C280600, // 0056 MOVE R10 R3
- 0x5C2C0200, // 0057 MOVE R11 R1
- 0x50300200, // 0058 LDBOOL R12 1 0
- 0x7C1C0A00, // 0059 CALL R7 5
- 0x8820091A, // 005A GETMBR R8 R4 K26
- 0x901E3408, // 005B SETMBR R7 K26 R8
- 0x8C200120, // 005C GETMET R8 R0 K32
- 0x5C280200, // 005D MOVE R10 R1
- 0x5C2C0E00, // 005E MOVE R11 R7
- 0x5C300800, // 005F MOVE R12 R4
- 0x7C200800, // 0060 CALL R8 4
- 0x50200200, // 0061 LDBOOL R8 1 0
- 0x80041000, // 0062 RET 1 R8
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: send_subscribe_heartbeat
-********************************************************************/
-extern const bclass be_class_Matter_IM;
-be_local_closure(class_Matter_IM_send_subscribe_heartbeat, /* name */
- be_nested_proto(
- 10, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_IM,
- 1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
- /* K0 */ be_nested_str_weak(session),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(log),
- /* K3 */ be_nested_str_weak(MTR_X3A_X20_X3CSub_Alive_X20_X28_X256i_X29_X20sub_X3D_X25i),
- /* K4 */ be_nested_str_weak(local_session_id),
- /* K5 */ be_nested_str_weak(subscription_id),
- /* K6 */ be_const_int(3),
- /* K7 */ be_nested_str_weak(is_keep_alive),
- /* K8 */ be_nested_str_weak(matter),
- /* K9 */ be_nested_str_weak(ReportDataMessage),
- /* K10 */ be_nested_str_weak(suppress_response),
- /* K11 */ be_nested_str_weak(IM_SubscribedHeartbeat),
- /* K12 */ be_nested_str_weak(_message_handler),
- /* K13 */ be_nested_str_weak(send_queue),
- /* K14 */ be_nested_str_weak(push),
- /* K15 */ be_nested_str_weak(send_enqueued),
- }),
- be_str_weak(send_subscribe_heartbeat),
- &be_const_str_solidified,
- ( &(const binstruction[34]) { /* code */
- 0x88080300, // 0000 GETMBR R2 R1 K0
- 0xB80E0200, // 0001 GETNGBL R3 K1
- 0x8C0C0702, // 0002 GETMET R3 R3 K2
- 0x60140018, // 0003 GETGBL R5 G24
- 0x58180003, // 0004 LDCONST R6 K3
- 0x881C0504, // 0005 GETMBR R7 R2 K4
- 0x88200305, // 0006 GETMBR R8 R1 K5
- 0x7C140600, // 0007 CALL R5 3
- 0x58180006, // 0008 LDCONST R6 K6
- 0x7C0C0600, // 0009 CALL R3 3
- 0x500C0200, // 000A LDBOOL R3 1 0
- 0x90060E03, // 000B SETMBR R1 K7 R3
- 0xB80E1000, // 000C GETNGBL R3 K8
- 0x8C0C0709, // 000D GETMET R3 R3 K9
- 0x7C0C0200, // 000E CALL R3 1
- 0x50100200, // 000F LDBOOL R4 1 0
- 0x900E1404, // 0010 SETMBR R3 K10 R4
- 0x88100305, // 0011 GETMBR R4 R1 K5
- 0x900E0A04, // 0012 SETMBR R3 K5 R4
- 0xB8121000, // 0013 GETNGBL R4 K8
- 0x8C10090B, // 0014 GETMET R4 R4 K11
- 0x8818050C, // 0015 GETMBR R6 R2 K12
- 0x5C1C0400, // 0016 MOVE R7 R2
- 0x5C200600, // 0017 MOVE R8 R3
- 0x5C240200, // 0018 MOVE R9 R1
- 0x7C100A00, // 0019 CALL R4 5
- 0x8814010D, // 001A GETMBR R5 R0 K13
- 0x8C140B0E, // 001B GETMET R5 R5 K14
- 0x5C1C0800, // 001C MOVE R7 R4
- 0x7C140400, // 001D CALL R5 2
- 0x8C14010F, // 001E GETMET R5 R0 K15
- 0x881C050C, // 001F GETMBR R7 R2 K12
- 0x7C140400, // 0020 CALL R5 2
- 0x80000000, // 0021 RET 0
+ ( &(const binstruction[124]) { /* code */
+ 0x880803C1, // 0000 GETMBR R2 R1 K193
+ 0x1C0C052B, // 0001 EQ R3 R2 K43
+ 0x780E000D, // 0002 JMPF R3 #0011
+ 0x880C0187, // 0003 GETMBR R3 R0 K135
+ 0x8C0C07C2, // 0004 GETMET R3 R3 K194
+ 0x88140393, // 0005 GETMBR R5 R1 K147
+ 0x881803A3, // 0006 GETMBR R6 R1 K163
+ 0x7C0C0600, // 0007 CALL R3 3
+ 0x4C100000, // 0008 LDNIL R4
+ 0x20100604, // 0009 NE R4 R3 R4
+ 0x78120004, // 000A JMPF R4 #0010
+ 0x8C1001C3, // 000B GETMET R4 R0 K195
+ 0x5C180200, // 000C MOVE R6 R1
+ 0x5C1C0600, // 000D MOVE R7 R3
+ 0x7C100600, // 000E CALL R4 3
+ 0x80040800, // 000F RET 1 R4
+ 0x7002000F, // 0010 JMP #0021
+ 0x540E0007, // 0011 LDINT R3 8
+ 0x1C0C0403, // 0012 EQ R3 R2 R3
+ 0x780E000C, // 0013 JMPF R3 #0021
+ 0x880C0189, // 0014 GETMBR R3 R0 K137
+ 0x8C0C07C2, // 0015 GETMET R3 R3 K194
+ 0x88140393, // 0016 GETMBR R5 R1 K147
+ 0x881803A3, // 0017 GETMBR R6 R1 K163
+ 0x7C0C0600, // 0018 CALL R3 3
+ 0x4C100000, // 0019 LDNIL R4
+ 0x20100604, // 001A NE R4 R3 R4
+ 0x78120004, // 001B JMPF R4 #0021
+ 0x8C1001C4, // 001C GETMET R4 R0 K196
+ 0x5C180200, // 001D MOVE R6 R1
+ 0x5C1C0600, // 001E MOVE R7 R3
+ 0x7C100600, // 001F CALL R4 3
+ 0x80040800, // 0020 RET 1 R4
+ 0xB80E0000, // 0021 GETNGBL R3 K0
+ 0x880C0781, // 0022 GETMBR R3 R3 K129
+ 0x8C0C07A2, // 0023 GETMET R3 R3 K162
+ 0x88140393, // 0024 GETMBR R5 R1 K147
+ 0x881803A3, // 0025 GETMBR R6 R1 K163
+ 0x7C0C0600, // 0026 CALL R3 3
+ 0x1C10052A, // 0027 EQ R4 R2 K42
+ 0x78120005, // 0028 JMPF R4 #002F
+ 0x8C1001C5, // 0029 GETMET R4 R0 K197
+ 0x5C180200, // 002A MOVE R6 R1
+ 0x5C1C0600, // 002B MOVE R7 R3
+ 0x7C100600, // 002C CALL R4 3
+ 0x80040800, // 002D RET 1 R4
+ 0x7002004A, // 002E JMP #007A
+ 0x1C10052B, // 002F EQ R4 R2 K43
+ 0x78120008, // 0030 JMPF R4 #003A
+ 0x8C1001C6, // 0031 GETMET R4 R0 K198
+ 0x5C180200, // 0032 MOVE R6 R1
+ 0x7C100400, // 0033 CALL R4 2
+ 0x8C1001A4, // 0034 GETMET R4 R0 K164
+ 0x5C180200, // 0035 MOVE R6 R1
+ 0x5C1C0600, // 0036 MOVE R7 R3
+ 0x7C100600, // 0037 CALL R4 3
+ 0x80040800, // 0038 RET 1 R4
+ 0x7002003F, // 0039 JMP #007A
+ 0x1C100515, // 003A EQ R4 R2 K21
+ 0x78120008, // 003B JMPF R4 #0045
+ 0x8C1001C6, // 003C GETMET R4 R0 K198
+ 0x5C180200, // 003D MOVE R6 R1
+ 0x7C100400, // 003E CALL R4 2
+ 0x8C1001C7, // 003F GETMET R4 R0 K199
+ 0x5C180200, // 0040 MOVE R6 R1
+ 0x5C1C0600, // 0041 MOVE R7 R3
+ 0x7C100600, // 0042 CALL R4 3
+ 0x80040800, // 0043 RET 1 R4
+ 0x70020034, // 0044 JMP #007A
+ 0x54120003, // 0045 LDINT R4 4
+ 0x1C100404, // 0046 EQ R4 R2 R4
+ 0x78120002, // 0047 JMPF R4 #004B
+ 0x50100000, // 0048 LDBOOL R4 0 0
+ 0x80040800, // 0049 RET 1 R4
+ 0x7002002E, // 004A JMP #007A
+ 0x54120004, // 004B LDINT R4 5
+ 0x1C100404, // 004C EQ R4 R2 R4
+ 0x78120002, // 004D JMPF R4 #0051
+ 0x50100000, // 004E LDBOOL R4 0 0
+ 0x80040800, // 004F RET 1 R4
+ 0x70020028, // 0050 JMP #007A
+ 0x54120005, // 0051 LDINT R4 6
+ 0x1C100404, // 0052 EQ R4 R2 R4
+ 0x78120008, // 0053 JMPF R4 #005D
+ 0x8C1001C6, // 0054 GETMET R4 R0 K198
+ 0x5C180200, // 0055 MOVE R6 R1
+ 0x7C100400, // 0056 CALL R4 2
+ 0x8C1001C8, // 0057 GETMET R4 R0 K200
+ 0x5C180200, // 0058 MOVE R6 R1
+ 0x5C1C0600, // 0059 MOVE R7 R3
+ 0x7C100600, // 005A CALL R4 3
+ 0x80040800, // 005B RET 1 R4
+ 0x7002001C, // 005C JMP #007A
+ 0x54120006, // 005D LDINT R4 7
+ 0x1C100404, // 005E EQ R4 R2 R4
+ 0x78120002, // 005F JMPF R4 #0063
+ 0x50100000, // 0060 LDBOOL R4 0 0
+ 0x80040800, // 0061 RET 1 R4
+ 0x70020016, // 0062 JMP #007A
+ 0x54120007, // 0063 LDINT R4 8
+ 0x1C100404, // 0064 EQ R4 R2 R4
+ 0x78120005, // 0065 JMPF R4 #006C
+ 0x8C1001C9, // 0066 GETMET R4 R0 K201
+ 0x5C180200, // 0067 MOVE R6 R1
+ 0x5C1C0600, // 0068 MOVE R7 R3
+ 0x7C100600, // 0069 CALL R4 3
+ 0x80040800, // 006A RET 1 R4
+ 0x7002000D, // 006B JMP #007A
+ 0x54120008, // 006C LDINT R4 9
+ 0x1C100404, // 006D EQ R4 R2 R4
+ 0x78120002, // 006E JMPF R4 #0072
+ 0x50100000, // 006F LDBOOL R4 0 0
+ 0x80040800, // 0070 RET 1 R4
+ 0x70020007, // 0071 JMP #007A
+ 0x54120009, // 0072 LDINT R4 10
+ 0x1C100404, // 0073 EQ R4 R2 R4
+ 0x78120004, // 0074 JMPF R4 #007A
+ 0x8C1001CA, // 0075 GETMET R4 R0 K202
+ 0x5C180200, // 0076 MOVE R6 R1
+ 0x5C1C0600, // 0077 MOVE R7 R3
+ 0x7C100600, // 0078 CALL R4 3
+ 0x80040800, // 0079 RET 1 R4
+ 0x50100000, // 007A LDBOOL R4 0 0
+ 0x80040800, // 007B RET 1 R4
})
)
);
@@ -3677,48 +3151,44 @@ be_local_closure(class_Matter_IM_send_subscribe_heartbeat, /* name */
be_local_class(Matter_IM,
6,
NULL,
- be_nested_map(40,
+ be_nested_map(36,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_IM_every_250ms_closure) },
- { be_const_key_weak(process_incoming_ack, -1), be_const_closure(class_Matter_IM_process_incoming_ack_closure) },
- { be_const_key_weak(send_ack_now, -1), be_const_closure(class_Matter_IM_send_ack_now_closure) },
- { be_const_key_weak(subscribe_response, -1), be_const_closure(class_Matter_IM_subscribe_response_closure) },
- { be_const_key_weak(process_write_response, -1), be_const_closure(class_Matter_IM_process_write_response_closure) },
- { be_const_key_weak(process_status_response, -1), be_const_closure(class_Matter_IM_process_status_response_closure) },
- { be_const_key_weak(send_subscribe_heartbeat, -1), be_const_closure(class_Matter_IM_send_subscribe_heartbeat_closure) },
+ { be_const_key_weak(process_write_request, 7), be_const_closure(class_Matter_IM_process_write_request_closure) },
+ { be_const_key_weak(process_incoming, 33), be_const_closure(class_Matter_IM_process_incoming_closure) },
+ { be_const_key_weak(path2raw, 26), be_const_closure(class_Matter_IM_path2raw_closure) },
{ be_const_key_weak(attributedata2raw, 12), be_const_closure(class_Matter_IM_attributedata2raw_closure) },
- { be_const_key_weak(subscribe_request, 37), be_const_closure(class_Matter_IM_subscribe_request_closure) },
{ be_const_key_weak(send_subscribe_update, -1), be_const_closure(class_Matter_IM_send_subscribe_update_closure) },
- { be_const_key_weak(invokeresponse2raw, 2), be_const_closure(class_Matter_IM_invokeresponse2raw_closure) },
- { be_const_key_weak(read_request_solo, 38), be_const_var(3) },
- { be_const_key_weak(process_incoming, -1), be_const_closure(class_Matter_IM_process_incoming_closure) },
- { be_const_key_weak(process_invoke_request_solo, 8), be_const_closure(class_Matter_IM_process_invoke_request_solo_closure) },
- { be_const_key_weak(send_invoke_response, -1), be_const_closure(class_Matter_IM_send_invoke_response_closure) },
- { be_const_key_weak(send_write_response, 6), be_const_closure(class_Matter_IM_send_write_response_closure) },
- { be_const_key_weak(process_write_request, -1), be_const_closure(class_Matter_IM_process_write_request_closure) },
- { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_IM_every_second_closure) },
- { be_const_key_weak(path2raw, -1), be_const_closure(class_Matter_IM_path2raw_closure) },
+ { be_const_key_weak(process_read_request_pull, -1), be_const_closure(class_Matter_IM_process_read_request_pull_closure) },
+ { be_const_key_weak(process_read_or_subscribe_request_pull, -1), be_const_closure(class_Matter_IM_process_read_or_subscribe_request_pull_closure) },
+ { be_const_key_weak(process_timed_request, -1), be_const_closure(class_Matter_IM_process_timed_request_closure) },
+ { be_const_key_weak(every_50ms, -1), be_const_closure(class_Matter_IM_every_50ms_closure) },
+ { be_const_key_weak(process_invoke_request, 24), be_const_closure(class_Matter_IM_process_invoke_request_closure) },
+ { be_const_key_weak(read_single_attribute_to_bytes, -1), be_const_closure(class_Matter_IM_read_single_attribute_to_bytes_closure) },
+ { be_const_key_weak(process_read_or_subscribe_request_event_pull, 10), be_const_closure(class_Matter_IM_process_read_or_subscribe_request_event_pull_closure) },
{ be_const_key_weak(invoke_request_solo, -1), be_const_var(4) },
- { be_const_key_weak(_inner_process_read_request, -1), be_const_closure(class_Matter_IM__inner_process_read_request_closure) },
- { be_const_key_weak(tlv_solo, -1), be_const_var(5) },
- { be_const_key_weak(remove_sendqueue_by_exchangeid, -1), be_const_closure(class_Matter_IM_remove_sendqueue_by_exchangeid_closure) },
- { be_const_key_weak(find_sendqueue_by_exchangeid, -1), be_const_closure(class_Matter_IM_find_sendqueue_by_exchangeid_closure) },
- { be_const_key_weak(send_report_data, -1), be_const_closure(class_Matter_IM_send_report_data_closure) },
- { be_const_key_weak(process_invoke_request, 17), be_const_closure(class_Matter_IM_process_invoke_request_closure) },
- { be_const_key_weak(send_status, -1), be_const_closure(class_Matter_IM_send_status_closure) },
- { be_const_key_weak(subs_shop, 20), be_const_var(1) },
- { be_const_key_weak(process_timed_request, 32), be_const_closure(class_Matter_IM_process_timed_request_closure) },
- { be_const_key_weak(attributestatus2raw, 23), be_const_closure(class_Matter_IM_attributestatus2raw_closure) },
- { be_const_key_weak(send_subscribe_response, -1), be_const_closure(class_Matter_IM_send_subscribe_response_closure) },
- { be_const_key_weak(process_invoke_response, 24), be_const_closure(class_Matter_IM_process_invoke_response_closure) },
- { be_const_key_weak(report_data, 9), be_const_closure(class_Matter_IM_report_data_closure) },
- { be_const_key_weak(process_read_request_solo, -1), be_const_closure(class_Matter_IM_process_read_request_solo_closure) },
- { be_const_key_weak(send_enqueued, -1), be_const_closure(class_Matter_IM_send_enqueued_closure) },
- { be_const_key_weak(init, -1), be_const_closure(class_Matter_IM_init_closure) },
+ { be_const_key_weak(subscribe_request, -1), be_const_closure(class_Matter_IM_subscribe_request_closure) },
+ { be_const_key_weak(send_enqueued, 27), be_const_closure(class_Matter_IM_send_enqueued_closure) },
+ { be_const_key_weak(device, 28), be_const_var(0) },
{ be_const_key_weak(expire_sendqueue, -1), be_const_closure(class_Matter_IM_expire_sendqueue_closure) },
- { be_const_key_weak(process_read_request, -1), be_const_closure(class_Matter_IM_process_read_request_closure) },
- { be_const_key_weak(device, -1), be_const_var(0) },
- { be_const_key_weak(send_queue, -1), be_const_var(2) },
+ { be_const_key_weak(process_incoming_ack, -1), be_const_closure(class_Matter_IM_process_incoming_ack_closure) },
+ { be_const_key_weak(remove_sendqueue_by_exchangeid, -1), be_const_closure(class_Matter_IM_remove_sendqueue_by_exchangeid_closure) },
+ { be_const_key_weak(write_single_attribute_status_to_bytes, -1), be_const_closure(class_Matter_IM_write_single_attribute_status_to_bytes_closure) },
+ { be_const_key_weak(attributestatus2raw, 22), be_const_closure(class_Matter_IM_attributestatus2raw_closure) },
+ { be_const_key_weak(every_second, 20), be_const_closure(class_Matter_IM_every_second_closure) },
+ { be_const_key_weak(tlv_solo, 30), be_const_var(5) },
+ { be_const_key_weak(send_subscribe_heartbeat, -1), be_const_closure(class_Matter_IM_send_subscribe_heartbeat_closure) },
+ { be_const_key_weak(find_sendqueue_by_exchangeid, -1), be_const_closure(class_Matter_IM_find_sendqueue_by_exchangeid_closure) },
+ { be_const_key_weak(process_read_request_solo, -1), be_const_closure(class_Matter_IM_process_read_request_solo_closure) },
+ { be_const_key_weak(invokeresponse2raw, -1), be_const_closure(class_Matter_IM_invokeresponse2raw_closure) },
+ { be_const_key_weak(parse_event_filters_min_no, 32), be_const_static_closure(class_Matter_IM_parse_event_filters_min_no_closure) },
+ { be_const_key_weak(subs_shop, 31), be_const_var(1) },
+ { be_const_key_weak(process_status_response, -1), be_const_closure(class_Matter_IM_process_status_response_closure) },
+ { be_const_key_weak(process_invoke_request_solo, -1), be_const_closure(class_Matter_IM_process_invoke_request_solo_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(class_Matter_IM_init_closure) },
+ { be_const_key_weak(send_ack_now, -1), be_const_closure(class_Matter_IM_send_ack_now_closure) },
+ { be_const_key_weak(read_request_solo, -1), be_const_var(3) },
+ { be_const_key_weak(send_status, -1), be_const_closure(class_Matter_IM_send_status_closure) },
+ { be_const_key_weak(send_queue, 1), be_const_var(2) },
})),
be_str_weak(Matter_IM)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h
index 309220f84..e4612d228 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h
@@ -3,28 +3,37 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_IM_base' ktab size: 10, total: 11 (saved 8 bytes)
+static const bvalue be_ktab_class_Matter_IM_base[10] = {
+ /* K0 */ be_nested_str_weak(add_array),
+ /* K1 */ be_nested_str_weak(add_obj),
+ /* K2 */ be_nested_str_weak(stop_iteration),
+ /* K3 */ be_nested_str_weak(_X3C),
+ /* K4 */ be_nested_str_weak(_X3A),
+ /* K5 */ be_nested_str_weak(matter),
+ /* K6 */ be_nested_str_weak(inspect),
+ /* K7 */ be_nested_str_weak(_X3E),
+ /* K8 */ be_nested_str_weak(push),
+ /* K9 */ be_nested_str_weak(from_TLV),
+};
+
extern const bclass be_class_Matter_IM_base;
/********************************************************************
** Solidified function: to_TLV_array
********************************************************************/
-extern const bclass be_class_Matter_IM_base;
be_local_closure(class_Matter_IM_base_to_TLV_array, /* name */
be_nested_proto(
11, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_base,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(add_array),
- /* K1 */ be_nested_str_weak(add_obj),
- /* K2 */ be_nested_str_weak(stop_iteration),
- }),
+ &be_ktab_class_Matter_IM_base, /* shared constants */
be_str_weak(to_TLV_array),
&be_const_str_solidified,
( &(const binstruction[23]) { /* code */
@@ -60,38 +69,31 @@ be_local_closure(class_Matter_IM_base_to_TLV_array, /* name */
/********************************************************************
** Solidified function: tostring
********************************************************************/
-extern const bclass be_class_Matter_IM_base;
be_local_closure(class_Matter_IM_base_tostring, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_base,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_X3C),
- /* K1 */ be_nested_str_weak(_X3A),
- /* K2 */ be_nested_str_weak(matter),
- /* K3 */ be_nested_str_weak(inspect),
- /* K4 */ be_nested_str_weak(_X3E),
- }),
+ &be_ktab_class_Matter_IM_base, /* shared constants */
be_str_weak(tostring),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
0x60040005, // 0000 GETGBL R1 G5
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
- 0x00060001, // 0003 ADD R1 K0 R1
- 0x00040301, // 0004 ADD R1 R1 K1
- 0xB80A0400, // 0005 GETNGBL R2 K2
- 0x8C080503, // 0006 GETMET R2 R2 K3
+ 0x00060601, // 0003 ADD R1 K3 R1
+ 0x00040304, // 0004 ADD R1 R1 K4
+ 0xB80A0A00, // 0005 GETNGBL R2 K5
+ 0x8C080506, // 0006 GETMET R2 R2 K6
0x5C100000, // 0007 MOVE R4 R0
0x7C080400, // 0008 CALL R2 2
0x00040202, // 0009 ADD R1 R1 R2
- 0x00040304, // 000A ADD R1 R1 K4
+ 0x00040307, // 000A ADD R1 R1 K7
0x80040200, // 000B RET 1 R1
})
)
@@ -102,22 +104,17 @@ be_local_closure(class_Matter_IM_base_tostring, /* name */
/********************************************************************
** Solidified function: from_TLV_array
********************************************************************/
-extern const bclass be_class_Matter_IM_base;
be_local_closure(class_Matter_IM_base_from_TLV_array, /* name */
be_nested_proto(
11, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_base,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(push),
- /* K1 */ be_nested_str_weak(from_TLV),
- /* K2 */ be_nested_str_weak(stop_iteration),
- }),
+ &be_ktab_class_Matter_IM_base, /* shared constants */
be_str_weak(from_TLV_array),
&be_const_str_solidified,
( &(const binstruction[25]) { /* code */
@@ -134,10 +131,10 @@ be_local_closure(class_Matter_IM_base_from_TLV_array, /* name */
0xA8020009, // 000A EXBLK 0 #0015
0x5C140800, // 000B MOVE R5 R4
0x7C140000, // 000C CALL R5 0
- 0x8C180700, // 000D GETMET R6 R3 K0
+ 0x8C180708, // 000D GETMET R6 R3 K8
0x5C200400, // 000E MOVE R8 R2
0x7C200000, // 000F CALL R8 0
- 0x8C201101, // 0010 GETMET R8 R8 K1
+ 0x8C201109, // 0010 GETMET R8 R8 K9
0x5C280A00, // 0011 MOVE R10 R5
0x7C200400, // 0012 CALL R8 2
0x7C180400, // 0013 CALL R6 2
@@ -172,7 +169,6 @@ extern const bclass be_class_Matter_IM_Message_base;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_IM_Message_base;
be_local_closure(class_Matter_IM_Message_base_init, /* name */
be_nested_proto(
1, /* nstack */
@@ -181,7 +177,7 @@ be_local_closure(class_Matter_IM_Message_base_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_Message_base,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(InteractionModelRevision),
@@ -212,43 +208,56 @@ be_local_class(Matter_IM_Message_base,
})),
be_str_weak(Matter_IM_Message_base)
);
+// compact class 'Matter_AttributePathIB' ktab size: 29, total: 43 (saved 112 bytes)
+static const bvalue be_ktab_class_Matter_AttributePathIB[29] = {
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(TLV),
+ /* K2 */ be_nested_str_weak(Matter_TLV_list),
+ /* K3 */ be_nested_str_weak(add_TLV),
+ /* K4 */ be_const_int(0),
+ /* K5 */ be_nested_str_weak(BOOL),
+ /* K6 */ be_nested_str_weak(tag_compression),
+ /* K7 */ be_const_int(1),
+ /* K8 */ be_nested_str_weak(U8),
+ /* K9 */ be_nested_str_weak(node),
+ /* K10 */ be_const_int(2),
+ /* K11 */ be_nested_str_weak(U2),
+ /* K12 */ be_nested_str_weak(endpoint),
+ /* K13 */ be_const_int(3),
+ /* K14 */ be_nested_str_weak(U4),
+ /* K15 */ be_nested_str_weak(cluster),
+ /* K16 */ be_nested_str_weak(attribute),
+ /* K17 */ be_nested_str_weak(list_index),
+ /* K18 */ be_nested_str_weak(),
+ /* K19 */ be_nested_str_weak(node_X3D_X25s_X20),
+ /* K20 */ be_nested_str_weak(_X5B_X2502X_X5D),
+ /* K21 */ be_nested_str_weak(_X5B_X2A_X2A_X5D),
+ /* K22 */ be_nested_str_weak(_X2504X_X2F),
+ /* K23 */ be_nested_str_weak(_X2A_X2A_X2A_X2A_X2F),
+ /* K24 */ be_nested_str_weak(_X2504X),
+ /* K25 */ be_nested_str_weak(_X2A_X2A_X2A_X2A),
+ /* K26 */ be_nested_str_weak(Exception_X3E_X20),
+ /* K27 */ be_nested_str_weak(_X2C_X20),
+ /* K28 */ be_nested_str_weak(findsubval),
+};
+
extern const bclass be_class_Matter_AttributePathIB;
/********************************************************************
** Solidified function: to_TLV
********************************************************************/
-extern const bclass be_class_Matter_AttributePathIB;
be_local_closure(class_Matter_AttributePathIB_to_TLV, /* name */
be_nested_proto(
8, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_AttributePathIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_list),
- /* K3 */ be_nested_str_weak(add_TLV),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(BOOL),
- /* K6 */ be_nested_str_weak(tag_compression),
- /* K7 */ be_const_int(1),
- /* K8 */ be_nested_str_weak(U8),
- /* K9 */ be_nested_str_weak(node),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(U2),
- /* K12 */ be_nested_str_weak(endpoint),
- /* K13 */ be_const_int(3),
- /* K14 */ be_nested_str_weak(U4),
- /* K15 */ be_nested_str_weak(cluster),
- /* K16 */ be_nested_str_weak(attribute),
- /* K17 */ be_nested_str_weak(list_index),
- }),
+ &be_ktab_class_Matter_AttributePathIB, /* shared constants */
be_str_weak(to_TLV),
&be_const_str_solidified,
( &(const binstruction[35]) { /* code */
@@ -296,77 +305,61 @@ be_local_closure(class_Matter_AttributePathIB_to_TLV, /* name */
/********************************************************************
** Solidified function: tostring
********************************************************************/
-extern const bclass be_class_Matter_AttributePathIB;
be_local_closure(class_Matter_AttributePathIB_tostring, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_AttributePathIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(),
- /* K1 */ be_nested_str_weak(node),
- /* K2 */ be_nested_str_weak(node_X3D_X25s_X20),
- /* K3 */ be_nested_str_weak(endpoint),
- /* K4 */ be_nested_str_weak(_X5B_X2502X_X5D),
- /* K5 */ be_nested_str_weak(_X5B_X2A_X2A_X5D),
- /* K6 */ be_nested_str_weak(cluster),
- /* K7 */ be_nested_str_weak(_X2504X_X2F),
- /* K8 */ be_nested_str_weak(_X2A_X2A_X2A_X2A_X2F),
- /* K9 */ be_nested_str_weak(attribute),
- /* K10 */ be_nested_str_weak(_X2504X),
- /* K11 */ be_nested_str_weak(_X2A_X2A_X2A_X2A),
- /* K12 */ be_nested_str_weak(Exception_X3E_X20),
- /* K13 */ be_nested_str_weak(_X2C_X20),
- }),
+ &be_ktab_class_Matter_AttributePathIB, /* shared constants */
be_str_weak(tostring),
&be_const_str_solidified,
( &(const binstruction[61]) { /* code */
0xA802002C, // 0000 EXBLK 0 #002E
- 0x58040000, // 0001 LDCONST R1 K0
- 0x88080101, // 0002 GETMBR R2 R0 K1
+ 0x58040012, // 0001 LDCONST R1 K18
+ 0x88080109, // 0002 GETMBR R2 R0 K9
0x780A0004, // 0003 JMPF R2 #0009
0x60080018, // 0004 GETGBL R2 G24
- 0x580C0002, // 0005 LDCONST R3 K2
- 0x88100101, // 0006 GETMBR R4 R0 K1
+ 0x580C0013, // 0005 LDCONST R3 K19
+ 0x88100109, // 0006 GETMBR R4 R0 K9
0x7C080400, // 0007 CALL R2 2
0x00040202, // 0008 ADD R1 R1 R2
- 0x88080103, // 0009 GETMBR R2 R0 K3
+ 0x8808010C, // 0009 GETMBR R2 R0 K12
0x4C0C0000, // 000A LDNIL R3
0x20080403, // 000B NE R2 R2 R3
0x780A0004, // 000C JMPF R2 #0012
0x60080018, // 000D GETGBL R2 G24
- 0x580C0004, // 000E LDCONST R3 K4
- 0x88100103, // 000F GETMBR R4 R0 K3
+ 0x580C0014, // 000E LDCONST R3 K20
+ 0x8810010C, // 000F GETMBR R4 R0 K12
0x7C080400, // 0010 CALL R2 2
0x70020000, // 0011 JMP #0013
- 0x58080005, // 0012 LDCONST R2 K5
+ 0x58080015, // 0012 LDCONST R2 K21
0x00040202, // 0013 ADD R1 R1 R2
- 0x88080106, // 0014 GETMBR R2 R0 K6
+ 0x8808010F, // 0014 GETMBR R2 R0 K15
0x4C0C0000, // 0015 LDNIL R3
0x20080403, // 0016 NE R2 R2 R3
0x780A0004, // 0017 JMPF R2 #001D
0x60080018, // 0018 GETGBL R2 G24
- 0x580C0007, // 0019 LDCONST R3 K7
- 0x88100106, // 001A GETMBR R4 R0 K6
+ 0x580C0016, // 0019 LDCONST R3 K22
+ 0x8810010F, // 001A GETMBR R4 R0 K15
0x7C080400, // 001B CALL R2 2
0x70020000, // 001C JMP #001E
- 0x58080008, // 001D LDCONST R2 K8
+ 0x58080017, // 001D LDCONST R2 K23
0x00040202, // 001E ADD R1 R1 R2
- 0x88080109, // 001F GETMBR R2 R0 K9
+ 0x88080110, // 001F GETMBR R2 R0 K16
0x4C0C0000, // 0020 LDNIL R3
0x20080403, // 0021 NE R2 R2 R3
0x780A0004, // 0022 JMPF R2 #0028
0x60080018, // 0023 GETGBL R2 G24
- 0x580C000A, // 0024 LDCONST R3 K10
- 0x88100109, // 0025 GETMBR R4 R0 K9
+ 0x580C0018, // 0024 LDCONST R3 K24
+ 0x88100110, // 0025 GETMBR R4 R0 K16
0x7C080400, // 0026 CALL R2 2
0x70020000, // 0027 JMP #0029
- 0x5808000B, // 0028 LDCONST R2 K11
+ 0x58080019, // 0028 LDCONST R2 K25
0x00040202, // 0029 ADD R1 R1 R2
0xA8040001, // 002A EXBLK 1 1
0x80040200, // 002B RET 1 R1
@@ -377,8 +370,8 @@ be_local_closure(class_Matter_AttributePathIB_tostring, /* name */
0x600C0008, // 0030 GETGBL R3 G8
0x5C100200, // 0031 MOVE R4 R1
0x7C0C0200, // 0032 CALL R3 1
- 0x000E1803, // 0033 ADD R3 K12 R3
- 0x000C070D, // 0034 ADD R3 R3 K13
+ 0x000E3403, // 0033 ADD R3 K26 R3
+ 0x000C071B, // 0034 ADD R3 R3 K27
0x60100008, // 0035 GETGBL R4 G8
0x5C140400, // 0036 MOVE R5 R2
0x7C100200, // 0037 CALL R4 1
@@ -396,30 +389,17 @@ be_local_closure(class_Matter_AttributePathIB_tostring, /* name */
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_AttributePathIB;
be_local_closure(class_Matter_AttributePathIB_from_TLV, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_AttributePathIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(tag_compression),
- /* K1 */ be_nested_str_weak(findsubval),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(node),
- /* K4 */ be_const_int(1),
- /* K5 */ be_nested_str_weak(endpoint),
- /* K6 */ be_const_int(2),
- /* K7 */ be_nested_str_weak(cluster),
- /* K8 */ be_const_int(3),
- /* K9 */ be_nested_str_weak(attribute),
- /* K10 */ be_nested_str_weak(list_index),
- }),
+ &be_ktab_class_Matter_AttributePathIB, /* shared constants */
be_str_weak(from_TLV),
&be_const_str_solidified,
( &(const binstruction[30]) { /* code */
@@ -428,30 +408,30 @@ be_local_closure(class_Matter_AttributePathIB_from_TLV, /* name */
0x780A0001, // 0002 JMPF R2 #0005
0x4C080000, // 0003 LDNIL R2
0x80040400, // 0004 RET 1 R2
- 0x8C080301, // 0005 GETMET R2 R1 K1
- 0x58100002, // 0006 LDCONST R4 K2
+ 0x8C08031C, // 0005 GETMET R2 R1 K28
+ 0x58100004, // 0006 LDCONST R4 K4
0x7C080400, // 0007 CALL R2 2
- 0x90020002, // 0008 SETMBR R0 K0 R2
- 0x8C080301, // 0009 GETMET R2 R1 K1
- 0x58100004, // 000A LDCONST R4 K4
+ 0x90020C02, // 0008 SETMBR R0 K6 R2
+ 0x8C08031C, // 0009 GETMET R2 R1 K28
+ 0x58100007, // 000A LDCONST R4 K7
0x7C080400, // 000B CALL R2 2
- 0x90020602, // 000C SETMBR R0 K3 R2
- 0x8C080301, // 000D GETMET R2 R1 K1
- 0x58100006, // 000E LDCONST R4 K6
+ 0x90021202, // 000C SETMBR R0 K9 R2
+ 0x8C08031C, // 000D GETMET R2 R1 K28
+ 0x5810000A, // 000E LDCONST R4 K10
0x7C080400, // 000F CALL R2 2
- 0x90020A02, // 0010 SETMBR R0 K5 R2
- 0x8C080301, // 0011 GETMET R2 R1 K1
- 0x58100008, // 0012 LDCONST R4 K8
+ 0x90021802, // 0010 SETMBR R0 K12 R2
+ 0x8C08031C, // 0011 GETMET R2 R1 K28
+ 0x5810000D, // 0012 LDCONST R4 K13
0x7C080400, // 0013 CALL R2 2
- 0x90020E02, // 0014 SETMBR R0 K7 R2
- 0x8C080301, // 0015 GETMET R2 R1 K1
+ 0x90021E02, // 0014 SETMBR R0 K15 R2
+ 0x8C08031C, // 0015 GETMET R2 R1 K28
0x54120003, // 0016 LDINT R4 4
0x7C080400, // 0017 CALL R2 2
- 0x90021202, // 0018 SETMBR R0 K9 R2
- 0x8C080301, // 0019 GETMET R2 R1 K1
+ 0x90022002, // 0018 SETMBR R0 K16 R2
+ 0x8C08031C, // 0019 GETMET R2 R1 K28
0x54120004, // 001A LDINT R4 5
0x7C080400, // 001B CALL R2 2
- 0x90021402, // 001C SETMBR R0 K10 R2
+ 0x90022202, // 001C SETMBR R0 K17 R2
0x80040000, // 001D RET 1 R0
})
)
@@ -480,32 +460,41 @@ be_local_class(Matter_AttributePathIB,
})),
be_str_weak(Matter_AttributePathIB)
);
+// compact class 'Matter_ClusterPathIB' ktab size: 14, total: 20 (saved 48 bytes)
+static const bvalue be_ktab_class_Matter_ClusterPathIB[14] = {
+ /* K0 */ be_nested_str_weak(node),
+ /* K1 */ be_nested_str_weak(findsubval),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(endpoint),
+ /* K4 */ be_const_int(1),
+ /* K5 */ be_nested_str_weak(cluster),
+ /* K6 */ be_const_int(2),
+ /* K7 */ be_nested_str_weak(matter),
+ /* K8 */ be_nested_str_weak(TLV),
+ /* K9 */ be_nested_str_weak(Matter_TLV_list),
+ /* K10 */ be_nested_str_weak(add_TLV),
+ /* K11 */ be_nested_str_weak(U8),
+ /* K12 */ be_nested_str_weak(U2),
+ /* K13 */ be_nested_str_weak(U4),
+};
+
extern const bclass be_class_Matter_ClusterPathIB;
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_ClusterPathIB;
be_local_closure(class_Matter_ClusterPathIB_from_TLV, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_ClusterPathIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(node),
- /* K1 */ be_nested_str_weak(findsubval),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(endpoint),
- /* K4 */ be_const_int(1),
- /* K5 */ be_nested_str_weak(cluster),
- /* K6 */ be_const_int(2),
- }),
+ &be_ktab_class_Matter_ClusterPathIB, /* shared constants */
be_str_weak(from_TLV),
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
@@ -536,53 +525,38 @@ be_local_closure(class_Matter_ClusterPathIB_from_TLV, /* name */
/********************************************************************
** Solidified function: to_TLV
********************************************************************/
-extern const bclass be_class_Matter_ClusterPathIB;
be_local_closure(class_Matter_ClusterPathIB_to_TLV, /* name */
be_nested_proto(
8, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_ClusterPathIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_list),
- /* K3 */ be_nested_str_weak(add_TLV),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(U8),
- /* K6 */ be_nested_str_weak(node),
- /* K7 */ be_const_int(1),
- /* K8 */ be_nested_str_weak(U2),
- /* K9 */ be_nested_str_weak(endpoint),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(U4),
- /* K12 */ be_nested_str_weak(cluster),
- }),
+ &be_ktab_class_Matter_ClusterPathIB, /* shared constants */
be_str_weak(to_TLV),
&be_const_str_solidified,
( &(const binstruction[20]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x8C080302, // 0002 GETMET R2 R1 K2
+ 0xB8060E00, // 0000 GETNGBL R1 K7
+ 0x88040308, // 0001 GETMBR R1 R1 K8
+ 0x8C080309, // 0002 GETMET R2 R1 K9
0x7C080200, // 0003 CALL R2 1
- 0x8C0C0503, // 0004 GETMET R3 R2 K3
- 0x58140004, // 0005 LDCONST R5 K4
- 0x88180305, // 0006 GETMBR R6 R1 K5
- 0x881C0106, // 0007 GETMBR R7 R0 K6
+ 0x8C0C050A, // 0004 GETMET R3 R2 K10
+ 0x58140002, // 0005 LDCONST R5 K2
+ 0x8818030B, // 0006 GETMBR R6 R1 K11
+ 0x881C0100, // 0007 GETMBR R7 R0 K0
0x7C0C0800, // 0008 CALL R3 4
- 0x8C0C0503, // 0009 GETMET R3 R2 K3
- 0x58140007, // 000A LDCONST R5 K7
- 0x88180308, // 000B GETMBR R6 R1 K8
- 0x881C0109, // 000C GETMBR R7 R0 K9
+ 0x8C0C050A, // 0009 GETMET R3 R2 K10
+ 0x58140004, // 000A LDCONST R5 K4
+ 0x8818030C, // 000B GETMBR R6 R1 K12
+ 0x881C0103, // 000C GETMBR R7 R0 K3
0x7C0C0800, // 000D CALL R3 4
- 0x8C0C0503, // 000E GETMET R3 R2 K3
- 0x5814000A, // 000F LDCONST R5 K10
- 0x8818030B, // 0010 GETMBR R6 R1 K11
- 0x881C010C, // 0011 GETMBR R7 R0 K12
+ 0x8C0C050A, // 000E GETMET R3 R2 K10
+ 0x58140006, // 000F LDCONST R5 K6
+ 0x8818030D, // 0010 GETMBR R6 R1 K13
+ 0x881C0105, // 0011 GETMBR R7 R0 K5
0x7C0C0800, // 0012 CALL R3 4
0x80040400, // 0013 RET 1 R2
})
@@ -608,34 +582,41 @@ be_local_class(Matter_ClusterPathIB,
})),
be_str_weak(Matter_ClusterPathIB)
);
+// compact class 'Matter_DataVersionFilterIB' ktab size: 14, total: 19 (saved 40 bytes)
+static const bvalue be_ktab_class_Matter_DataVersionFilterIB[14] = {
+ /* K0 */ be_nested_str_weak(path),
+ /* K1 */ be_nested_str_weak(matter),
+ /* K2 */ be_nested_str_weak(ClusterPathIB),
+ /* K3 */ be_nested_str_weak(from_TLV),
+ /* K4 */ be_nested_str_weak(findsub),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_nested_str_weak(data_version),
+ /* K7 */ be_nested_str_weak(findsubval),
+ /* K8 */ be_const_int(1),
+ /* K9 */ be_nested_str_weak(TLV),
+ /* K10 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K11 */ be_nested_str_weak(add_obj),
+ /* K12 */ be_nested_str_weak(add_TLV),
+ /* K13 */ be_nested_str_weak(U4),
+};
+
extern const bclass be_class_Matter_DataVersionFilterIB;
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_DataVersionFilterIB;
be_local_closure(class_Matter_DataVersionFilterIB_from_TLV, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_DataVersionFilterIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(path),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(ClusterPathIB),
- /* K3 */ be_nested_str_weak(from_TLV),
- /* K4 */ be_nested_str_weak(findsub),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(data_version),
- /* K7 */ be_nested_str_weak(findsubval),
- /* K8 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_DataVersionFilterIB, /* shared constants */
be_str_weak(from_TLV),
&be_const_str_solidified,
( &(const binstruction[19]) { /* code */
@@ -667,44 +648,32 @@ be_local_closure(class_Matter_DataVersionFilterIB_from_TLV, /* name */
/********************************************************************
** Solidified function: to_TLV
********************************************************************/
-extern const bclass be_class_Matter_DataVersionFilterIB;
be_local_closure(class_Matter_DataVersionFilterIB_to_TLV, /* name */
be_nested_proto(
8, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_DataVersionFilterIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_struct),
- /* K3 */ be_nested_str_weak(add_obj),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(path),
- /* K6 */ be_nested_str_weak(add_TLV),
- /* K7 */ be_const_int(1),
- /* K8 */ be_nested_str_weak(U4),
- /* K9 */ be_nested_str_weak(data_version),
- }),
+ &be_ktab_class_Matter_DataVersionFilterIB, /* shared constants */
be_str_weak(to_TLV),
&be_const_str_solidified,
( &(const binstruction[14]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x8C080302, // 0002 GETMET R2 R1 K2
+ 0xB8060200, // 0000 GETNGBL R1 K1
+ 0x88040309, // 0001 GETMBR R1 R1 K9
+ 0x8C08030A, // 0002 GETMET R2 R1 K10
0x7C080200, // 0003 CALL R2 1
- 0x8C0C0503, // 0004 GETMET R3 R2 K3
- 0x58140004, // 0005 LDCONST R5 K4
- 0x88180105, // 0006 GETMBR R6 R0 K5
+ 0x8C0C050B, // 0004 GETMET R3 R2 K11
+ 0x58140005, // 0005 LDCONST R5 K5
+ 0x88180100, // 0006 GETMBR R6 R0 K0
0x7C0C0600, // 0007 CALL R3 3
- 0x8C0C0506, // 0008 GETMET R3 R2 K6
- 0x58140007, // 0009 LDCONST R5 K7
- 0x88180308, // 000A GETMBR R6 R1 K8
- 0x881C0109, // 000B GETMBR R7 R0 K9
+ 0x8C0C050C, // 0008 GETMET R3 R2 K12
+ 0x58140008, // 0009 LDCONST R5 K8
+ 0x8818030D, // 000A GETMBR R6 R1 K13
+ 0x881C0106, // 000B GETMBR R7 R0 K6
0x7C0C0800, // 000C CALL R3 4
0x80040400, // 000D RET 1 R2
})
@@ -729,36 +698,43 @@ be_local_class(Matter_DataVersionFilterIB,
})),
be_str_weak(Matter_DataVersionFilterIB)
);
+// compact class 'Matter_AttributeDataIB' ktab size: 16, total: 23 (saved 56 bytes)
+static const bvalue be_ktab_class_Matter_AttributeDataIB[16] = {
+ /* K0 */ be_nested_str_weak(data_version),
+ /* K1 */ be_nested_str_weak(findsubval),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(path),
+ /* K4 */ be_nested_str_weak(matter),
+ /* K5 */ be_nested_str_weak(AttributePathIB),
+ /* K6 */ be_nested_str_weak(from_TLV),
+ /* K7 */ be_nested_str_weak(findsub),
+ /* K8 */ be_const_int(1),
+ /* K9 */ be_nested_str_weak(data),
+ /* K10 */ be_const_int(2),
+ /* K11 */ be_nested_str_weak(TLV),
+ /* K12 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K13 */ be_nested_str_weak(add_TLV),
+ /* K14 */ be_nested_str_weak(U4),
+ /* K15 */ be_nested_str_weak(add_obj),
+};
+
extern const bclass be_class_Matter_AttributeDataIB;
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_AttributeDataIB;
be_local_closure(class_Matter_AttributeDataIB_from_TLV, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_AttributeDataIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(data_version),
- /* K1 */ be_nested_str_weak(findsubval),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(path),
- /* K4 */ be_nested_str_weak(matter),
- /* K5 */ be_nested_str_weak(AttributePathIB),
- /* K6 */ be_nested_str_weak(from_TLV),
- /* K7 */ be_nested_str_weak(findsub),
- /* K8 */ be_const_int(1),
- /* K9 */ be_nested_str_weak(data),
- /* K10 */ be_const_int(2),
- }),
+ &be_ktab_class_Matter_AttributeDataIB, /* shared constants */
be_str_weak(from_TLV),
&be_const_str_solidified,
( &(const binstruction[23]) { /* code */
@@ -794,50 +770,36 @@ be_local_closure(class_Matter_AttributeDataIB_from_TLV, /* name */
/********************************************************************
** Solidified function: to_TLV
********************************************************************/
-extern const bclass be_class_Matter_AttributeDataIB;
be_local_closure(class_Matter_AttributeDataIB_to_TLV, /* name */
be_nested_proto(
8, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_AttributeDataIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_struct),
- /* K3 */ be_nested_str_weak(add_TLV),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(U4),
- /* K6 */ be_nested_str_weak(data_version),
- /* K7 */ be_nested_str_weak(add_obj),
- /* K8 */ be_const_int(1),
- /* K9 */ be_nested_str_weak(path),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(data),
- }),
+ &be_ktab_class_Matter_AttributeDataIB, /* shared constants */
be_str_weak(to_TLV),
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x8C080302, // 0002 GETMET R2 R1 K2
+ 0xB8060800, // 0000 GETNGBL R1 K4
+ 0x8804030B, // 0001 GETMBR R1 R1 K11
+ 0x8C08030C, // 0002 GETMET R2 R1 K12
0x7C080200, // 0003 CALL R2 1
- 0x8C0C0503, // 0004 GETMET R3 R2 K3
- 0x58140004, // 0005 LDCONST R5 K4
- 0x88180305, // 0006 GETMBR R6 R1 K5
- 0x881C0106, // 0007 GETMBR R7 R0 K6
+ 0x8C0C050D, // 0004 GETMET R3 R2 K13
+ 0x58140002, // 0005 LDCONST R5 K2
+ 0x8818030E, // 0006 GETMBR R6 R1 K14
+ 0x881C0100, // 0007 GETMBR R7 R0 K0
0x7C0C0800, // 0008 CALL R3 4
- 0x8C0C0507, // 0009 GETMET R3 R2 K7
+ 0x8C0C050F, // 0009 GETMET R3 R2 K15
0x58140008, // 000A LDCONST R5 K8
- 0x88180109, // 000B GETMBR R6 R0 K9
+ 0x88180103, // 000B GETMBR R6 R0 K3
0x7C0C0600, // 000C CALL R3 3
- 0x8C0C0507, // 000D GETMET R3 R2 K7
+ 0x8C0C050F, // 000D GETMET R3 R2 K15
0x5814000A, // 000E LDCONST R5 K10
- 0x8818010B, // 000F GETMBR R6 R0 K11
+ 0x88180109, // 000F GETMBR R6 R0 K9
0x7C0C0600, // 0010 CALL R3 3
0x80040400, // 0011 RET 1 R2
})
@@ -863,33 +825,39 @@ be_local_class(Matter_AttributeDataIB,
})),
be_str_weak(Matter_AttributeDataIB)
);
+// compact class 'Matter_AttributeReportIB' ktab size: 12, total: 17 (saved 40 bytes)
+static const bvalue be_ktab_class_Matter_AttributeReportIB[12] = {
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(TLV),
+ /* K2 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K3 */ be_nested_str_weak(add_obj),
+ /* K4 */ be_const_int(0),
+ /* K5 */ be_nested_str_weak(attribute_status),
+ /* K6 */ be_const_int(1),
+ /* K7 */ be_nested_str_weak(attribute_data),
+ /* K8 */ be_nested_str_weak(AttributeStatusIB),
+ /* K9 */ be_nested_str_weak(from_TLV),
+ /* K10 */ be_nested_str_weak(findsub),
+ /* K11 */ be_nested_str_weak(AttributeDataIB),
+};
+
extern const bclass be_class_Matter_AttributeReportIB;
/********************************************************************
** Solidified function: to_TLV
********************************************************************/
-extern const bclass be_class_Matter_AttributeReportIB;
be_local_closure(class_Matter_AttributeReportIB_to_TLV, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_AttributeReportIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_struct),
- /* K3 */ be_nested_str_weak(add_obj),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(attribute_status),
- /* K6 */ be_const_int(1),
- /* K7 */ be_nested_str_weak(attribute_data),
- }),
+ &be_ktab_class_Matter_AttributeReportIB, /* shared constants */
be_str_weak(to_TLV),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
@@ -915,28 +883,17 @@ be_local_closure(class_Matter_AttributeReportIB_to_TLV, /* name */
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_AttributeReportIB;
be_local_closure(class_Matter_AttributeReportIB_from_TLV, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_AttributeReportIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(attribute_status),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(AttributeStatusIB),
- /* K3 */ be_nested_str_weak(from_TLV),
- /* K4 */ be_nested_str_weak(findsub),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(attribute_data),
- /* K7 */ be_nested_str_weak(AttributeDataIB),
- /* K8 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_AttributeReportIB, /* shared constants */
be_str_weak(from_TLV),
&be_const_str_solidified,
( &(const binstruction[24]) { /* code */
@@ -945,24 +902,24 @@ be_local_closure(class_Matter_AttributeReportIB_from_TLV, /* name */
0x780A0001, // 0002 JMPF R2 #0005
0x4C080000, // 0003 LDNIL R2
0x80040400, // 0004 RET 1 R2
- 0xB80A0200, // 0005 GETNGBL R2 K1
- 0x8C080502, // 0006 GETMET R2 R2 K2
+ 0xB80A0000, // 0005 GETNGBL R2 K0
+ 0x8C080508, // 0006 GETMET R2 R2 K8
0x7C080200, // 0007 CALL R2 1
- 0x8C080503, // 0008 GETMET R2 R2 K3
- 0x8C100304, // 0009 GETMET R4 R1 K4
- 0x58180005, // 000A LDCONST R6 K5
+ 0x8C080509, // 0008 GETMET R2 R2 K9
+ 0x8C10030A, // 0009 GETMET R4 R1 K10
+ 0x58180004, // 000A LDCONST R6 K4
0x7C100400, // 000B CALL R4 2
0x7C080400, // 000C CALL R2 2
- 0x90020002, // 000D SETMBR R0 K0 R2
- 0xB80A0200, // 000E GETNGBL R2 K1
- 0x8C080507, // 000F GETMET R2 R2 K7
+ 0x90020A02, // 000D SETMBR R0 K5 R2
+ 0xB80A0000, // 000E GETNGBL R2 K0
+ 0x8C08050B, // 000F GETMET R2 R2 K11
0x7C080200, // 0010 CALL R2 1
- 0x8C080503, // 0011 GETMET R2 R2 K3
- 0x8C100304, // 0012 GETMET R4 R1 K4
- 0x58180008, // 0013 LDCONST R6 K8
+ 0x8C080509, // 0011 GETMET R2 R2 K9
+ 0x8C10030A, // 0012 GETMET R4 R1 K10
+ 0x58180006, // 0013 LDCONST R6 K6
0x7C100400, // 0014 CALL R4 2
0x7C080400, // 0015 CALL R2 2
- 0x90020C02, // 0016 SETMBR R0 K6 R2
+ 0x90020E02, // 0016 SETMBR R0 K7 R2
0x80040000, // 0017 RET 1 R0
})
)
@@ -986,30 +943,37 @@ be_local_class(Matter_AttributeReportIB,
})),
be_str_weak(Matter_AttributeReportIB)
);
+// compact class 'Matter_EventFilterIB' ktab size: 10, total: 14 (saved 32 bytes)
+static const bvalue be_ktab_class_Matter_EventFilterIB[10] = {
+ /* K0 */ be_nested_str_weak(node),
+ /* K1 */ be_nested_str_weak(findsubval),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(event_min),
+ /* K4 */ be_const_int(1),
+ /* K5 */ be_nested_str_weak(matter),
+ /* K6 */ be_nested_str_weak(TLV),
+ /* K7 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K8 */ be_nested_str_weak(add_TLV),
+ /* K9 */ be_nested_str_weak(U8),
+};
+
extern const bclass be_class_Matter_EventFilterIB;
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_EventFilterIB;
be_local_closure(class_Matter_EventFilterIB_from_TLV, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_EventFilterIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(node),
- /* K1 */ be_nested_str_weak(findsubval),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(event_min),
- /* K4 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_EventFilterIB, /* shared constants */
be_str_weak(from_TLV),
&be_const_str_solidified,
( &(const binstruction[14]) { /* code */
@@ -1036,44 +1000,33 @@ be_local_closure(class_Matter_EventFilterIB_from_TLV, /* name */
/********************************************************************
** Solidified function: to_TLV
********************************************************************/
-extern const bclass be_class_Matter_EventFilterIB;
be_local_closure(class_Matter_EventFilterIB_to_TLV, /* name */
be_nested_proto(
8, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_EventFilterIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_struct),
- /* K3 */ be_nested_str_weak(add_TLV),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(U8),
- /* K6 */ be_nested_str_weak(node),
- /* K7 */ be_const_int(1),
- /* K8 */ be_nested_str_weak(event_min),
- }),
+ &be_ktab_class_Matter_EventFilterIB, /* shared constants */
be_str_weak(to_TLV),
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x8C080302, // 0002 GETMET R2 R1 K2
+ 0xB8060A00, // 0000 GETNGBL R1 K5
+ 0x88040306, // 0001 GETMBR R1 R1 K6
+ 0x8C080307, // 0002 GETMET R2 R1 K7
0x7C080200, // 0003 CALL R2 1
- 0x8C0C0503, // 0004 GETMET R3 R2 K3
- 0x58140004, // 0005 LDCONST R5 K4
- 0x88180305, // 0006 GETMBR R6 R1 K5
- 0x881C0106, // 0007 GETMBR R7 R0 K6
+ 0x8C0C0508, // 0004 GETMET R3 R2 K8
+ 0x58140002, // 0005 LDCONST R5 K2
+ 0x88180309, // 0006 GETMBR R6 R1 K9
+ 0x881C0100, // 0007 GETMBR R7 R0 K0
0x7C0C0800, // 0008 CALL R3 4
- 0x8C0C0503, // 0009 GETMET R3 R2 K3
- 0x58140007, // 000A LDCONST R5 K7
- 0x88180305, // 000B GETMBR R6 R1 K5
- 0x881C0108, // 000C GETMBR R7 R0 K8
+ 0x8C0C0508, // 0009 GETMET R3 R2 K8
+ 0x58140004, // 000A LDCONST R5 K4
+ 0x88180309, // 000B GETMBR R6 R1 K9
+ 0x881C0103, // 000C GETMBR R7 R0 K3
0x7C0C0800, // 000D CALL R3 4
0x80040400, // 000E RET 1 R2
})
@@ -1098,35 +1051,45 @@ be_local_class(Matter_EventFilterIB,
})),
be_str_weak(Matter_EventFilterIB)
);
+// compact class 'Matter_EventPathIB' ktab size: 18, total: 27 (saved 72 bytes)
+static const bvalue be_ktab_class_Matter_EventPathIB[18] = {
+ /* K0 */ be_nested_str_weak(node),
+ /* K1 */ be_nested_str_weak(findsubval),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(endpoint),
+ /* K4 */ be_const_int(1),
+ /* K5 */ be_nested_str_weak(cluster),
+ /* K6 */ be_const_int(2),
+ /* K7 */ be_nested_str_weak(event),
+ /* K8 */ be_const_int(3),
+ /* K9 */ be_nested_str_weak(is_urgent),
+ /* K10 */ be_nested_str_weak(matter),
+ /* K11 */ be_nested_str_weak(TLV),
+ /* K12 */ be_nested_str_weak(Matter_TLV_list),
+ /* K13 */ be_nested_str_weak(add_TLV),
+ /* K14 */ be_nested_str_weak(U8),
+ /* K15 */ be_nested_str_weak(U2),
+ /* K16 */ be_nested_str_weak(U4),
+ /* K17 */ be_nested_str_weak(BOOL),
+};
+
extern const bclass be_class_Matter_EventPathIB;
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_EventPathIB;
be_local_closure(class_Matter_EventPathIB_from_TLV, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_EventPathIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(node),
- /* K1 */ be_nested_str_weak(findsubval),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(endpoint),
- /* K4 */ be_const_int(1),
- /* K5 */ be_nested_str_weak(cluster),
- /* K6 */ be_const_int(2),
- /* K7 */ be_nested_str_weak(event),
- /* K8 */ be_const_int(3),
- /* K9 */ be_nested_str_weak(is_urgent),
- }),
+ &be_ktab_class_Matter_EventPathIB, /* shared constants */
be_str_weak(from_TLV),
&be_const_str_solidified,
( &(const binstruction[26]) { /* code */
@@ -1165,71 +1128,52 @@ be_local_closure(class_Matter_EventPathIB_from_TLV, /* name */
/********************************************************************
** Solidified function: to_TLV
********************************************************************/
-extern const bclass be_class_Matter_EventPathIB;
be_local_closure(class_Matter_EventPathIB_to_TLV, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_EventPathIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_list),
- /* K3 */ be_nested_str_weak(add_TLV),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(U8),
- /* K6 */ be_nested_str_weak(node),
- /* K7 */ be_const_int(1),
- /* K8 */ be_nested_str_weak(U2),
- /* K9 */ be_nested_str_weak(endpoint),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(U4),
- /* K12 */ be_nested_str_weak(cluster),
- /* K13 */ be_const_int(3),
- /* K14 */ be_nested_str_weak(event),
- /* K15 */ be_nested_str_weak(BOOL),
- /* K16 */ be_nested_str_weak(is_urgent),
- }),
+ &be_ktab_class_Matter_EventPathIB, /* shared constants */
be_str_weak(to_TLV),
&be_const_str_solidified,
( &(const binstruction[34]) { /* code */
- 0xB80A0000, // 0000 GETNGBL R2 K0
- 0x88080501, // 0001 GETMBR R2 R2 K1
+ 0xB80A1400, // 0000 GETNGBL R2 K10
+ 0x8808050B, // 0001 GETMBR R2 R2 K11
0x4C0C0000, // 0002 LDNIL R3
0x1C0C0203, // 0003 EQ R3 R1 R3
0x780E0002, // 0004 JMPF R3 #0008
- 0x8C0C0502, // 0005 GETMET R3 R2 K2
+ 0x8C0C050C, // 0005 GETMET R3 R2 K12
0x7C0C0200, // 0006 CALL R3 1
0x5C040600, // 0007 MOVE R1 R3
- 0x8C0C0303, // 0008 GETMET R3 R1 K3
- 0x58140004, // 0009 LDCONST R5 K4
- 0x88180505, // 000A GETMBR R6 R2 K5
- 0x881C0106, // 000B GETMBR R7 R0 K6
+ 0x8C0C030D, // 0008 GETMET R3 R1 K13
+ 0x58140002, // 0009 LDCONST R5 K2
+ 0x8818050E, // 000A GETMBR R6 R2 K14
+ 0x881C0100, // 000B GETMBR R7 R0 K0
0x7C0C0800, // 000C CALL R3 4
- 0x8C0C0303, // 000D GETMET R3 R1 K3
- 0x58140007, // 000E LDCONST R5 K7
- 0x88180508, // 000F GETMBR R6 R2 K8
- 0x881C0109, // 0010 GETMBR R7 R0 K9
+ 0x8C0C030D, // 000D GETMET R3 R1 K13
+ 0x58140004, // 000E LDCONST R5 K4
+ 0x8818050F, // 000F GETMBR R6 R2 K15
+ 0x881C0103, // 0010 GETMBR R7 R0 K3
0x7C0C0800, // 0011 CALL R3 4
- 0x8C0C0303, // 0012 GETMET R3 R1 K3
- 0x5814000A, // 0013 LDCONST R5 K10
- 0x8818050B, // 0014 GETMBR R6 R2 K11
- 0x881C010C, // 0015 GETMBR R7 R0 K12
+ 0x8C0C030D, // 0012 GETMET R3 R1 K13
+ 0x58140006, // 0013 LDCONST R5 K6
+ 0x88180510, // 0014 GETMBR R6 R2 K16
+ 0x881C0105, // 0015 GETMBR R7 R0 K5
0x7C0C0800, // 0016 CALL R3 4
- 0x8C0C0303, // 0017 GETMET R3 R1 K3
- 0x5814000D, // 0018 LDCONST R5 K13
- 0x8818050B, // 0019 GETMBR R6 R2 K11
- 0x881C010E, // 001A GETMBR R7 R0 K14
+ 0x8C0C030D, // 0017 GETMET R3 R1 K13
+ 0x58140008, // 0018 LDCONST R5 K8
+ 0x88180510, // 0019 GETMBR R6 R2 K16
+ 0x881C0107, // 001A GETMBR R7 R0 K7
0x7C0C0800, // 001B CALL R3 4
- 0x8C0C0303, // 001C GETMET R3 R1 K3
+ 0x8C0C030D, // 001C GETMET R3 R1 K13
0x54160003, // 001D LDINT R5 4
- 0x8818050F, // 001E GETMBR R6 R2 K15
- 0x881C0110, // 001F GETMBR R7 R0 K16
+ 0x88180511, // 001E GETMBR R6 R2 K17
+ 0x881C0109, // 001F GETMBR R7 R0 K9
0x7C0C0800, // 0020 CALL R3 4
0x80040200, // 0021 RET 1 R1
})
@@ -1257,42 +1201,52 @@ be_local_class(Matter_EventPathIB,
})),
be_str_weak(Matter_EventPathIB)
);
+// compact class 'Matter_EventDataIB' ktab size: 25, total: 38 (saved 104 bytes)
+static const bvalue be_ktab_class_Matter_EventDataIB[25] = {
+ /* K0 */ be_nested_str_weak(path),
+ /* K1 */ be_nested_str_weak(matter),
+ /* K2 */ be_nested_str_weak(EventPathIB),
+ /* K3 */ be_nested_str_weak(from_TLV),
+ /* K4 */ be_nested_str_weak(findsub),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_nested_str_weak(event_number),
+ /* K7 */ be_nested_str_weak(findsubval),
+ /* K8 */ be_const_int(1),
+ /* K9 */ be_nested_str_weak(priority),
+ /* K10 */ be_const_int(2),
+ /* K11 */ be_nested_str_weak(epoch_timestamp),
+ /* K12 */ be_const_int(3),
+ /* K13 */ be_nested_str_weak(system_timestamp),
+ /* K14 */ be_nested_str_weak(delta_epoch_timestamp),
+ /* K15 */ be_nested_str_weak(delta_system_timestamp),
+ /* K16 */ be_nested_str_weak(data),
+ /* K17 */ be_nested_str_weak(TLV),
+ /* K18 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K19 */ be_nested_str_weak(to_TLV),
+ /* K20 */ be_nested_str_weak(add_list),
+ /* K21 */ be_nested_str_weak(add_TLV),
+ /* K22 */ be_nested_str_weak(U8),
+ /* K23 */ be_nested_str_weak(U1),
+ /* K24 */ be_nested_str_weak(add_obj),
+};
+
extern const bclass be_class_Matter_EventDataIB;
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_EventDataIB;
be_local_closure(class_Matter_EventDataIB_from_TLV, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_EventDataIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_nested_str_weak(path),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(EventPathIB),
- /* K3 */ be_nested_str_weak(from_TLV),
- /* K4 */ be_nested_str_weak(findsub),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(event_number),
- /* K7 */ be_nested_str_weak(findsubval),
- /* K8 */ be_const_int(1),
- /* K9 */ be_nested_str_weak(priority),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(epoch_timestamp),
- /* K12 */ be_const_int(3),
- /* K13 */ be_nested_str_weak(system_timestamp),
- /* K14 */ be_nested_str_weak(delta_epoch_timestamp),
- /* K15 */ be_nested_str_weak(delta_system_timestamp),
- /* K16 */ be_nested_str_weak(data),
- }),
+ &be_ktab_class_Matter_EventDataIB, /* shared constants */
be_str_weak(from_TLV),
&be_const_str_solidified,
( &(const binstruction[43]) { /* code */
@@ -1348,92 +1302,69 @@ be_local_closure(class_Matter_EventDataIB_from_TLV, /* name */
/********************************************************************
** Solidified function: to_TLV
********************************************************************/
-extern const bclass be_class_Matter_EventDataIB;
be_local_closure(class_Matter_EventDataIB_to_TLV, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_EventDataIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[21]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_struct),
- /* K3 */ be_nested_str_weak(path),
- /* K4 */ be_nested_str_weak(to_TLV),
- /* K5 */ be_nested_str_weak(add_list),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(add_TLV),
- /* K8 */ be_const_int(1),
- /* K9 */ be_nested_str_weak(U8),
- /* K10 */ be_nested_str_weak(event_number),
- /* K11 */ be_const_int(2),
- /* K12 */ be_nested_str_weak(U1),
- /* K13 */ be_nested_str_weak(priority),
- /* K14 */ be_const_int(3),
- /* K15 */ be_nested_str_weak(epoch_timestamp),
- /* K16 */ be_nested_str_weak(system_timestamp),
- /* K17 */ be_nested_str_weak(delta_epoch_timestamp),
- /* K18 */ be_nested_str_weak(delta_system_timestamp),
- /* K19 */ be_nested_str_weak(add_obj),
- /* K20 */ be_nested_str_weak(data),
- }),
+ &be_ktab_class_Matter_EventDataIB, /* shared constants */
be_str_weak(to_TLV),
&be_const_str_solidified,
( &(const binstruction[51]) { /* code */
- 0xB80A0000, // 0000 GETNGBL R2 K0
- 0x88080501, // 0001 GETMBR R2 R2 K1
+ 0xB80A0200, // 0000 GETNGBL R2 K1
+ 0x88080511, // 0001 GETMBR R2 R2 K17
0x4C0C0000, // 0002 LDNIL R3
0x1C0C0203, // 0003 EQ R3 R1 R3
0x780E0002, // 0004 JMPF R3 #0008
- 0x8C0C0502, // 0005 GETMET R3 R2 K2
+ 0x8C0C0512, // 0005 GETMET R3 R2 K18
0x7C0C0200, // 0006 CALL R3 1
0x5C040600, // 0007 MOVE R1 R3
- 0x880C0103, // 0008 GETMBR R3 R0 K3
+ 0x880C0100, // 0008 GETMBR R3 R0 K0
0x780E0005, // 0009 JMPF R3 #0010
- 0x880C0103, // 000A GETMBR R3 R0 K3
- 0x8C0C0704, // 000B GETMET R3 R3 K4
- 0x8C140305, // 000C GETMET R5 R1 K5
- 0x581C0006, // 000D LDCONST R7 K6
+ 0x880C0100, // 000A GETMBR R3 R0 K0
+ 0x8C0C0713, // 000B GETMET R3 R3 K19
+ 0x8C140314, // 000C GETMET R5 R1 K20
+ 0x581C0005, // 000D LDCONST R7 K5
0x7C140400, // 000E CALL R5 2
0x7C0C0400, // 000F CALL R3 2
- 0x8C0C0307, // 0010 GETMET R3 R1 K7
+ 0x8C0C0315, // 0010 GETMET R3 R1 K21
0x58140008, // 0011 LDCONST R5 K8
- 0x88180509, // 0012 GETMBR R6 R2 K9
- 0x881C010A, // 0013 GETMBR R7 R0 K10
+ 0x88180516, // 0012 GETMBR R6 R2 K22
+ 0x881C0106, // 0013 GETMBR R7 R0 K6
0x7C0C0800, // 0014 CALL R3 4
- 0x8C0C0307, // 0015 GETMET R3 R1 K7
- 0x5814000B, // 0016 LDCONST R5 K11
- 0x8818050C, // 0017 GETMBR R6 R2 K12
- 0x881C010D, // 0018 GETMBR R7 R0 K13
+ 0x8C0C0315, // 0015 GETMET R3 R1 K21
+ 0x5814000A, // 0016 LDCONST R5 K10
+ 0x88180517, // 0017 GETMBR R6 R2 K23
+ 0x881C0109, // 0018 GETMBR R7 R0 K9
0x7C0C0800, // 0019 CALL R3 4
- 0x8C0C0307, // 001A GETMET R3 R1 K7
- 0x5814000E, // 001B LDCONST R5 K14
- 0x88180509, // 001C GETMBR R6 R2 K9
- 0x881C010F, // 001D GETMBR R7 R0 K15
+ 0x8C0C0315, // 001A GETMET R3 R1 K21
+ 0x5814000C, // 001B LDCONST R5 K12
+ 0x88180516, // 001C GETMBR R6 R2 K22
+ 0x881C010B, // 001D GETMBR R7 R0 K11
0x7C0C0800, // 001E CALL R3 4
- 0x8C0C0307, // 001F GETMET R3 R1 K7
+ 0x8C0C0315, // 001F GETMET R3 R1 K21
0x54160003, // 0020 LDINT R5 4
- 0x88180509, // 0021 GETMBR R6 R2 K9
- 0x881C0110, // 0022 GETMBR R7 R0 K16
+ 0x88180516, // 0021 GETMBR R6 R2 K22
+ 0x881C010D, // 0022 GETMBR R7 R0 K13
0x7C0C0800, // 0023 CALL R3 4
- 0x8C0C0307, // 0024 GETMET R3 R1 K7
+ 0x8C0C0315, // 0024 GETMET R3 R1 K21
0x54160004, // 0025 LDINT R5 5
- 0x88180509, // 0026 GETMBR R6 R2 K9
- 0x881C0111, // 0027 GETMBR R7 R0 K17
+ 0x88180516, // 0026 GETMBR R6 R2 K22
+ 0x881C010E, // 0027 GETMBR R7 R0 K14
0x7C0C0800, // 0028 CALL R3 4
- 0x8C0C0307, // 0029 GETMET R3 R1 K7
+ 0x8C0C0315, // 0029 GETMET R3 R1 K21
0x54160005, // 002A LDINT R5 6
- 0x88180509, // 002B GETMBR R6 R2 K9
- 0x881C0112, // 002C GETMBR R7 R0 K18
+ 0x88180516, // 002B GETMBR R6 R2 K22
+ 0x881C010F, // 002C GETMBR R7 R0 K15
0x7C0C0800, // 002D CALL R3 4
- 0x8C0C0313, // 002E GETMET R3 R1 K19
+ 0x8C0C0318, // 002E GETMET R3 R1 K24
0x54160006, // 002F LDINT R5 7
- 0x88180114, // 0030 GETMBR R6 R0 K20
+ 0x88180110, // 0030 GETMBR R6 R0 K16
0x7C0C0600, // 0031 CALL R3 3
0x80040200, // 0032 RET 1 R1
})
@@ -1464,33 +1395,39 @@ be_local_class(Matter_EventDataIB,
})),
be_str_weak(Matter_EventDataIB)
);
+// compact class 'Matter_EventReportIB' ktab size: 12, total: 17 (saved 40 bytes)
+static const bvalue be_ktab_class_Matter_EventReportIB[12] = {
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(TLV),
+ /* K2 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K3 */ be_nested_str_weak(add_obj),
+ /* K4 */ be_const_int(0),
+ /* K5 */ be_nested_str_weak(event_status),
+ /* K6 */ be_const_int(1),
+ /* K7 */ be_nested_str_weak(event_data),
+ /* K8 */ be_nested_str_weak(EventStatusIB),
+ /* K9 */ be_nested_str_weak(from_TLV),
+ /* K10 */ be_nested_str_weak(findsub),
+ /* K11 */ be_nested_str_weak(EventDataIB),
+};
+
extern const bclass be_class_Matter_EventReportIB;
/********************************************************************
** Solidified function: to_TLV
********************************************************************/
-extern const bclass be_class_Matter_EventReportIB;
be_local_closure(class_Matter_EventReportIB_to_TLV, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_EventReportIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_struct),
- /* K3 */ be_nested_str_weak(add_obj),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(event_status),
- /* K6 */ be_const_int(1),
- /* K7 */ be_nested_str_weak(event_data),
- }),
+ &be_ktab_class_Matter_EventReportIB, /* shared constants */
be_str_weak(to_TLV),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
@@ -1516,28 +1453,17 @@ be_local_closure(class_Matter_EventReportIB_to_TLV, /* name */
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_EventReportIB;
be_local_closure(class_Matter_EventReportIB_from_TLV, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_EventReportIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(event_status),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(EventStatusIB),
- /* K3 */ be_nested_str_weak(from_TLV),
- /* K4 */ be_nested_str_weak(findsub),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(event_data),
- /* K7 */ be_nested_str_weak(EventDataIB),
- /* K8 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_EventReportIB, /* shared constants */
be_str_weak(from_TLV),
&be_const_str_solidified,
( &(const binstruction[24]) { /* code */
@@ -1546,24 +1472,24 @@ be_local_closure(class_Matter_EventReportIB_from_TLV, /* name */
0x780A0001, // 0002 JMPF R2 #0005
0x4C080000, // 0003 LDNIL R2
0x80040400, // 0004 RET 1 R2
- 0xB80A0200, // 0005 GETNGBL R2 K1
- 0x8C080502, // 0006 GETMET R2 R2 K2
+ 0xB80A0000, // 0005 GETNGBL R2 K0
+ 0x8C080508, // 0006 GETMET R2 R2 K8
0x7C080200, // 0007 CALL R2 1
- 0x8C080503, // 0008 GETMET R2 R2 K3
- 0x8C100304, // 0009 GETMET R4 R1 K4
- 0x58180005, // 000A LDCONST R6 K5
+ 0x8C080509, // 0008 GETMET R2 R2 K9
+ 0x8C10030A, // 0009 GETMET R4 R1 K10
+ 0x58180004, // 000A LDCONST R6 K4
0x7C100400, // 000B CALL R4 2
0x7C080400, // 000C CALL R2 2
- 0x90020002, // 000D SETMBR R0 K0 R2
- 0xB80A0200, // 000E GETNGBL R2 K1
- 0x8C080507, // 000F GETMET R2 R2 K7
+ 0x90020A02, // 000D SETMBR R0 K5 R2
+ 0xB80A0000, // 000E GETNGBL R2 K0
+ 0x8C08050B, // 000F GETMET R2 R2 K11
0x7C080200, // 0010 CALL R2 1
- 0x8C080503, // 0011 GETMET R2 R2 K3
- 0x8C100304, // 0012 GETMET R4 R1 K4
- 0x58180008, // 0013 LDCONST R6 K8
+ 0x8C080509, // 0011 GETMET R2 R2 K9
+ 0x8C10030A, // 0012 GETMET R4 R1 K10
+ 0x58180006, // 0013 LDCONST R6 K6
0x7C100400, // 0014 CALL R4 2
0x7C080400, // 0015 CALL R2 2
- 0x90020C02, // 0016 SETMBR R0 K6 R2
+ 0x90020E02, // 0016 SETMBR R0 K7 R2
0x80040000, // 0017 RET 1 R0
})
)
@@ -1587,32 +1513,40 @@ be_local_class(Matter_EventReportIB,
})),
be_str_weak(Matter_EventReportIB)
);
+// compact class 'Matter_CommandPathIB' ktab size: 13, total: 19 (saved 48 bytes)
+static const bvalue be_ktab_class_Matter_CommandPathIB[13] = {
+ /* K0 */ be_nested_str_weak(endpoint),
+ /* K1 */ be_nested_str_weak(findsubval),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(cluster),
+ /* K4 */ be_const_int(1),
+ /* K5 */ be_nested_str_weak(command),
+ /* K6 */ be_const_int(2),
+ /* K7 */ be_nested_str_weak(matter),
+ /* K8 */ be_nested_str_weak(TLV),
+ /* K9 */ be_nested_str_weak(Matter_TLV_list),
+ /* K10 */ be_nested_str_weak(add_TLV),
+ /* K11 */ be_nested_str_weak(U2),
+ /* K12 */ be_nested_str_weak(U4),
+};
+
extern const bclass be_class_Matter_CommandPathIB;
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_CommandPathIB;
be_local_closure(class_Matter_CommandPathIB_from_TLV, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_CommandPathIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(endpoint),
- /* K1 */ be_nested_str_weak(findsubval),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(cluster),
- /* K4 */ be_const_int(1),
- /* K5 */ be_nested_str_weak(command),
- /* K6 */ be_const_int(2),
- }),
+ &be_ktab_class_Matter_CommandPathIB, /* shared constants */
be_str_weak(from_TLV),
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
@@ -1643,52 +1577,38 @@ be_local_closure(class_Matter_CommandPathIB_from_TLV, /* name */
/********************************************************************
** Solidified function: to_TLV
********************************************************************/
-extern const bclass be_class_Matter_CommandPathIB;
be_local_closure(class_Matter_CommandPathIB_to_TLV, /* name */
be_nested_proto(
8, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_CommandPathIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_list),
- /* K3 */ be_nested_str_weak(add_TLV),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(U2),
- /* K6 */ be_nested_str_weak(endpoint),
- /* K7 */ be_const_int(1),
- /* K8 */ be_nested_str_weak(U4),
- /* K9 */ be_nested_str_weak(cluster),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(command),
- }),
+ &be_ktab_class_Matter_CommandPathIB, /* shared constants */
be_str_weak(to_TLV),
&be_const_str_solidified,
( &(const binstruction[20]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x8C080302, // 0002 GETMET R2 R1 K2
+ 0xB8060E00, // 0000 GETNGBL R1 K7
+ 0x88040308, // 0001 GETMBR R1 R1 K8
+ 0x8C080309, // 0002 GETMET R2 R1 K9
0x7C080200, // 0003 CALL R2 1
- 0x8C0C0503, // 0004 GETMET R3 R2 K3
- 0x58140004, // 0005 LDCONST R5 K4
- 0x88180305, // 0006 GETMBR R6 R1 K5
- 0x881C0106, // 0007 GETMBR R7 R0 K6
+ 0x8C0C050A, // 0004 GETMET R3 R2 K10
+ 0x58140002, // 0005 LDCONST R5 K2
+ 0x8818030B, // 0006 GETMBR R6 R1 K11
+ 0x881C0100, // 0007 GETMBR R7 R0 K0
0x7C0C0800, // 0008 CALL R3 4
- 0x8C0C0503, // 0009 GETMET R3 R2 K3
- 0x58140007, // 000A LDCONST R5 K7
- 0x88180308, // 000B GETMBR R6 R1 K8
- 0x881C0109, // 000C GETMBR R7 R0 K9
+ 0x8C0C050A, // 0009 GETMET R3 R2 K10
+ 0x58140004, // 000A LDCONST R5 K4
+ 0x8818030C, // 000B GETMBR R6 R1 K12
+ 0x881C0103, // 000C GETMBR R7 R0 K3
0x7C0C0800, // 000D CALL R3 4
- 0x8C0C0503, // 000E GETMET R3 R2 K3
- 0x5814000A, // 000F LDCONST R5 K10
- 0x88180308, // 0010 GETMBR R6 R1 K8
- 0x881C010B, // 0011 GETMBR R7 R0 K11
+ 0x8C0C050A, // 000E GETMET R3 R2 K10
+ 0x58140006, // 000F LDCONST R5 K6
+ 0x8818030C, // 0010 GETMBR R6 R1 K12
+ 0x881C0105, // 0011 GETMBR R7 R0 K5
0x7C0C0800, // 0012 CALL R3 4
0x80040400, // 0013 RET 1 R2
})
@@ -1714,33 +1634,38 @@ be_local_class(Matter_CommandPathIB,
})),
be_str_weak(Matter_CommandPathIB)
);
+// compact class 'Matter_CommandDataIB' ktab size: 11, total: 16 (saved 40 bytes)
+static const bvalue be_ktab_class_Matter_CommandDataIB[11] = {
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(TLV),
+ /* K2 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K3 */ be_nested_str_weak(add_obj),
+ /* K4 */ be_const_int(0),
+ /* K5 */ be_nested_str_weak(command_path),
+ /* K6 */ be_const_int(1),
+ /* K7 */ be_nested_str_weak(command_fields),
+ /* K8 */ be_nested_str_weak(CommandPathIB),
+ /* K9 */ be_nested_str_weak(from_TLV),
+ /* K10 */ be_nested_str_weak(findsub),
+};
+
extern const bclass be_class_Matter_CommandDataIB;
/********************************************************************
** Solidified function: to_TLV
********************************************************************/
-extern const bclass be_class_Matter_CommandDataIB;
be_local_closure(class_Matter_CommandDataIB_to_TLV, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_CommandDataIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_struct),
- /* K3 */ be_nested_str_weak(add_obj),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(command_path),
- /* K6 */ be_const_int(1),
- /* K7 */ be_nested_str_weak(command_fields),
- }),
+ &be_ktab_class_Matter_CommandDataIB, /* shared constants */
be_str_weak(to_TLV),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
@@ -1766,27 +1691,17 @@ be_local_closure(class_Matter_CommandDataIB_to_TLV, /* name */
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_CommandDataIB;
be_local_closure(class_Matter_CommandDataIB_from_TLV, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_CommandDataIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(command_path),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(CommandPathIB),
- /* K3 */ be_nested_str_weak(from_TLV),
- /* K4 */ be_nested_str_weak(findsub),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(command_fields),
- /* K7 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_CommandDataIB, /* shared constants */
be_str_weak(from_TLV),
&be_const_str_solidified,
( &(const binstruction[19]) { /* code */
@@ -1795,19 +1710,19 @@ be_local_closure(class_Matter_CommandDataIB_from_TLV, /* name */
0x780A0001, // 0002 JMPF R2 #0005
0x4C080000, // 0003 LDNIL R2
0x80040400, // 0004 RET 1 R2
- 0xB80A0200, // 0005 GETNGBL R2 K1
- 0x8C080502, // 0006 GETMET R2 R2 K2
+ 0xB80A0000, // 0005 GETNGBL R2 K0
+ 0x8C080508, // 0006 GETMET R2 R2 K8
0x7C080200, // 0007 CALL R2 1
- 0x8C080503, // 0008 GETMET R2 R2 K3
- 0x8C100304, // 0009 GETMET R4 R1 K4
- 0x58180005, // 000A LDCONST R6 K5
+ 0x8C080509, // 0008 GETMET R2 R2 K9
+ 0x8C10030A, // 0009 GETMET R4 R1 K10
+ 0x58180004, // 000A LDCONST R6 K4
0x7C100400, // 000B CALL R4 2
0x7C080400, // 000C CALL R2 2
- 0x90020002, // 000D SETMBR R0 K0 R2
- 0x8C080304, // 000E GETMET R2 R1 K4
- 0x58100007, // 000F LDCONST R4 K7
+ 0x90020A02, // 000D SETMBR R0 K5 R2
+ 0x8C08030A, // 000E GETMET R2 R1 K10
+ 0x58100006, // 000F LDCONST R4 K6
0x7C080400, // 0010 CALL R2 2
- 0x90020C02, // 0011 SETMBR R0 K6 R2
+ 0x90020E02, // 0011 SETMBR R0 K7 R2
0x80040000, // 0012 RET 1 R0
})
)
@@ -1831,34 +1746,39 @@ be_local_class(Matter_CommandDataIB,
})),
be_str_weak(Matter_CommandDataIB)
);
+// compact class 'Matter_InvokeResponseIB' ktab size: 12, total: 17 (saved 40 bytes)
+static const bvalue be_ktab_class_Matter_InvokeResponseIB[12] = {
+ /* K0 */ be_nested_str_weak(command),
+ /* K1 */ be_nested_str_weak(matter),
+ /* K2 */ be_nested_str_weak(CommandDataIB),
+ /* K3 */ be_nested_str_weak(from_TLV),
+ /* K4 */ be_nested_str_weak(findsub),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_nested_str_weak(status),
+ /* K7 */ be_nested_str_weak(CommandStatusIB),
+ /* K8 */ be_const_int(1),
+ /* K9 */ be_nested_str_weak(TLV),
+ /* K10 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K11 */ be_nested_str_weak(add_obj),
+};
+
extern const bclass be_class_Matter_InvokeResponseIB;
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_InvokeResponseIB;
be_local_closure(class_Matter_InvokeResponseIB_from_TLV, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_InvokeResponseIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(command),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(CommandDataIB),
- /* K3 */ be_nested_str_weak(from_TLV),
- /* K4 */ be_nested_str_weak(findsub),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(status),
- /* K7 */ be_nested_str_weak(CommandStatusIB),
- /* K8 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_InvokeResponseIB, /* shared constants */
be_str_weak(from_TLV),
&be_const_str_solidified,
( &(const binstruction[24]) { /* code */
@@ -1895,41 +1815,31 @@ be_local_closure(class_Matter_InvokeResponseIB_from_TLV, /* name */
/********************************************************************
** Solidified function: to_TLV
********************************************************************/
-extern const bclass be_class_Matter_InvokeResponseIB;
be_local_closure(class_Matter_InvokeResponseIB_to_TLV, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_InvokeResponseIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_struct),
- /* K3 */ be_nested_str_weak(add_obj),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(command),
- /* K6 */ be_const_int(1),
- /* K7 */ be_nested_str_weak(status),
- }),
+ &be_ktab_class_Matter_InvokeResponseIB, /* shared constants */
be_str_weak(to_TLV),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x8C080302, // 0002 GETMET R2 R1 K2
+ 0xB8060200, // 0000 GETNGBL R1 K1
+ 0x88040309, // 0001 GETMBR R1 R1 K9
+ 0x8C08030A, // 0002 GETMET R2 R1 K10
0x7C080200, // 0003 CALL R2 1
- 0x8C0C0503, // 0004 GETMET R3 R2 K3
- 0x58140004, // 0005 LDCONST R5 K4
- 0x88180105, // 0006 GETMBR R6 R0 K5
+ 0x8C0C050B, // 0004 GETMET R3 R2 K11
+ 0x58140005, // 0005 LDCONST R5 K5
+ 0x88180100, // 0006 GETMBR R6 R0 K0
0x7C0C0600, // 0007 CALL R3 3
- 0x8C0C0503, // 0008 GETMET R3 R2 K3
- 0x58140006, // 0009 LDCONST R5 K6
- 0x88180107, // 000A GETMBR R6 R0 K7
+ 0x8C0C050B, // 0008 GETMET R3 R2 K11
+ 0x58140008, // 0009 LDCONST R5 K8
+ 0x88180106, // 000A GETMBR R6 R0 K6
0x7C0C0600, // 000B CALL R3 3
0x80040400, // 000C RET 1 R2
})
@@ -1954,33 +1864,39 @@ be_local_class(Matter_InvokeResponseIB,
})),
be_str_weak(Matter_InvokeResponseIB)
);
+// compact class 'Matter_CommandStatusIB' ktab size: 12, total: 17 (saved 40 bytes)
+static const bvalue be_ktab_class_Matter_CommandStatusIB[12] = {
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(TLV),
+ /* K2 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K3 */ be_nested_str_weak(add_obj),
+ /* K4 */ be_const_int(0),
+ /* K5 */ be_nested_str_weak(command_path),
+ /* K6 */ be_const_int(1),
+ /* K7 */ be_nested_str_weak(status),
+ /* K8 */ be_nested_str_weak(CommandPathIB),
+ /* K9 */ be_nested_str_weak(from_TLV),
+ /* K10 */ be_nested_str_weak(findsub),
+ /* K11 */ be_nested_str_weak(StatusIB),
+};
+
extern const bclass be_class_Matter_CommandStatusIB;
/********************************************************************
** Solidified function: to_TLV
********************************************************************/
-extern const bclass be_class_Matter_CommandStatusIB;
be_local_closure(class_Matter_CommandStatusIB_to_TLV, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_CommandStatusIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_struct),
- /* K3 */ be_nested_str_weak(add_obj),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(command_path),
- /* K6 */ be_const_int(1),
- /* K7 */ be_nested_str_weak(status),
- }),
+ &be_ktab_class_Matter_CommandStatusIB, /* shared constants */
be_str_weak(to_TLV),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
@@ -2006,28 +1922,17 @@ be_local_closure(class_Matter_CommandStatusIB_to_TLV, /* name */
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_CommandStatusIB;
be_local_closure(class_Matter_CommandStatusIB_from_TLV, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_CommandStatusIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(command_path),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(CommandPathIB),
- /* K3 */ be_nested_str_weak(from_TLV),
- /* K4 */ be_nested_str_weak(findsub),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(status),
- /* K7 */ be_nested_str_weak(StatusIB),
- /* K8 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_CommandStatusIB, /* shared constants */
be_str_weak(from_TLV),
&be_const_str_solidified,
( &(const binstruction[24]) { /* code */
@@ -2036,24 +1941,24 @@ be_local_closure(class_Matter_CommandStatusIB_from_TLV, /* name */
0x780A0001, // 0002 JMPF R2 #0005
0x4C080000, // 0003 LDNIL R2
0x80040400, // 0004 RET 1 R2
- 0xB80A0200, // 0005 GETNGBL R2 K1
- 0x8C080502, // 0006 GETMET R2 R2 K2
+ 0xB80A0000, // 0005 GETNGBL R2 K0
+ 0x8C080508, // 0006 GETMET R2 R2 K8
0x7C080200, // 0007 CALL R2 1
- 0x8C080503, // 0008 GETMET R2 R2 K3
- 0x8C100304, // 0009 GETMET R4 R1 K4
- 0x58180005, // 000A LDCONST R6 K5
+ 0x8C080509, // 0008 GETMET R2 R2 K9
+ 0x8C10030A, // 0009 GETMET R4 R1 K10
+ 0x58180004, // 000A LDCONST R6 K4
0x7C100400, // 000B CALL R4 2
0x7C080400, // 000C CALL R2 2
- 0x90020002, // 000D SETMBR R0 K0 R2
- 0xB80A0200, // 000E GETNGBL R2 K1
- 0x8C080507, // 000F GETMET R2 R2 K7
+ 0x90020A02, // 000D SETMBR R0 K5 R2
+ 0xB80A0000, // 000E GETNGBL R2 K0
+ 0x8C08050B, // 000F GETMET R2 R2 K11
0x7C080200, // 0010 CALL R2 1
- 0x8C080503, // 0011 GETMET R2 R2 K3
- 0x8C100304, // 0012 GETMET R4 R1 K4
- 0x58180008, // 0013 LDCONST R6 K8
+ 0x8C080509, // 0011 GETMET R2 R2 K9
+ 0x8C10030A, // 0012 GETMET R4 R1 K10
+ 0x58180006, // 0013 LDCONST R6 K6
0x7C100400, // 0014 CALL R4 2
0x7C080400, // 0015 CALL R2 2
- 0x90020C02, // 0016 SETMBR R0 K6 R2
+ 0x90020E02, // 0016 SETMBR R0 K7 R2
0x80040000, // 0017 RET 1 R0
})
)
@@ -2077,34 +1982,39 @@ be_local_class(Matter_CommandStatusIB,
})),
be_str_weak(Matter_CommandStatusIB)
);
+// compact class 'Matter_EventStatusIB' ktab size: 12, total: 17 (saved 40 bytes)
+static const bvalue be_ktab_class_Matter_EventStatusIB[12] = {
+ /* K0 */ be_nested_str_weak(path),
+ /* K1 */ be_nested_str_weak(matter),
+ /* K2 */ be_nested_str_weak(EventPathIB),
+ /* K3 */ be_nested_str_weak(from_TLV),
+ /* K4 */ be_nested_str_weak(findsub),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_nested_str_weak(status),
+ /* K7 */ be_nested_str_weak(StatusIB),
+ /* K8 */ be_const_int(1),
+ /* K9 */ be_nested_str_weak(TLV),
+ /* K10 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K11 */ be_nested_str_weak(add_obj),
+};
+
extern const bclass be_class_Matter_EventStatusIB;
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_EventStatusIB;
be_local_closure(class_Matter_EventStatusIB_from_TLV, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_EventStatusIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(path),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(EventPathIB),
- /* K3 */ be_nested_str_weak(from_TLV),
- /* K4 */ be_nested_str_weak(findsub),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(status),
- /* K7 */ be_nested_str_weak(StatusIB),
- /* K8 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_EventStatusIB, /* shared constants */
be_str_weak(from_TLV),
&be_const_str_solidified,
( &(const binstruction[24]) { /* code */
@@ -2141,41 +2051,31 @@ be_local_closure(class_Matter_EventStatusIB_from_TLV, /* name */
/********************************************************************
** Solidified function: to_TLV
********************************************************************/
-extern const bclass be_class_Matter_EventStatusIB;
be_local_closure(class_Matter_EventStatusIB_to_TLV, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_EventStatusIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_struct),
- /* K3 */ be_nested_str_weak(add_obj),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(path),
- /* K6 */ be_const_int(1),
- /* K7 */ be_nested_str_weak(status),
- }),
+ &be_ktab_class_Matter_EventStatusIB, /* shared constants */
be_str_weak(to_TLV),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x8C080302, // 0002 GETMET R2 R1 K2
+ 0xB8060200, // 0000 GETNGBL R1 K1
+ 0x88040309, // 0001 GETMBR R1 R1 K9
+ 0x8C08030A, // 0002 GETMET R2 R1 K10
0x7C080200, // 0003 CALL R2 1
- 0x8C0C0503, // 0004 GETMET R3 R2 K3
- 0x58140004, // 0005 LDCONST R5 K4
- 0x88180105, // 0006 GETMBR R6 R0 K5
+ 0x8C0C050B, // 0004 GETMET R3 R2 K11
+ 0x58140005, // 0005 LDCONST R5 K5
+ 0x88180100, // 0006 GETMBR R6 R0 K0
0x7C0C0600, // 0007 CALL R3 3
- 0x8C0C0503, // 0008 GETMET R3 R2 K3
- 0x58140006, // 0009 LDCONST R5 K6
- 0x88180107, // 000A GETMBR R6 R0 K7
+ 0x8C0C050B, // 0008 GETMET R3 R2 K11
+ 0x58140008, // 0009 LDCONST R5 K8
+ 0x88180106, // 000A GETMBR R6 R0 K6
0x7C0C0600, // 000B CALL R3 3
0x80040400, // 000C RET 1 R2
})
@@ -2200,34 +2100,39 @@ be_local_class(Matter_EventStatusIB,
})),
be_str_weak(Matter_EventStatusIB)
);
+// compact class 'Matter_AttributeStatusIB' ktab size: 12, total: 17 (saved 40 bytes)
+static const bvalue be_ktab_class_Matter_AttributeStatusIB[12] = {
+ /* K0 */ be_nested_str_weak(path),
+ /* K1 */ be_nested_str_weak(matter),
+ /* K2 */ be_nested_str_weak(AttributePathIB),
+ /* K3 */ be_nested_str_weak(from_TLV),
+ /* K4 */ be_nested_str_weak(findsub),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_nested_str_weak(status),
+ /* K7 */ be_nested_str_weak(StatusIB),
+ /* K8 */ be_const_int(1),
+ /* K9 */ be_nested_str_weak(TLV),
+ /* K10 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K11 */ be_nested_str_weak(add_obj),
+};
+
extern const bclass be_class_Matter_AttributeStatusIB;
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_AttributeStatusIB;
be_local_closure(class_Matter_AttributeStatusIB_from_TLV, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_AttributeStatusIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(path),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(AttributePathIB),
- /* K3 */ be_nested_str_weak(from_TLV),
- /* K4 */ be_nested_str_weak(findsub),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(status),
- /* K7 */ be_nested_str_weak(StatusIB),
- /* K8 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_AttributeStatusIB, /* shared constants */
be_str_weak(from_TLV),
&be_const_str_solidified,
( &(const binstruction[24]) { /* code */
@@ -2264,41 +2169,31 @@ be_local_closure(class_Matter_AttributeStatusIB_from_TLV, /* name */
/********************************************************************
** Solidified function: to_TLV
********************************************************************/
-extern const bclass be_class_Matter_AttributeStatusIB;
be_local_closure(class_Matter_AttributeStatusIB_to_TLV, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_AttributeStatusIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_struct),
- /* K3 */ be_nested_str_weak(add_obj),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(path),
- /* K6 */ be_const_int(1),
- /* K7 */ be_nested_str_weak(status),
- }),
+ &be_ktab_class_Matter_AttributeStatusIB, /* shared constants */
be_str_weak(to_TLV),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x8C080302, // 0002 GETMET R2 R1 K2
+ 0xB8060200, // 0000 GETNGBL R1 K1
+ 0x88040309, // 0001 GETMBR R1 R1 K9
+ 0x8C08030A, // 0002 GETMET R2 R1 K10
0x7C080200, // 0003 CALL R2 1
- 0x8C0C0503, // 0004 GETMET R3 R2 K3
- 0x58140004, // 0005 LDCONST R5 K4
- 0x88180105, // 0006 GETMBR R6 R0 K5
+ 0x8C0C050B, // 0004 GETMET R3 R2 K11
+ 0x58140005, // 0005 LDCONST R5 K5
+ 0x88180100, // 0006 GETMBR R6 R0 K0
0x7C0C0600, // 0007 CALL R3 3
- 0x8C0C0503, // 0008 GETMET R3 R2 K3
- 0x58140006, // 0009 LDCONST R5 K6
- 0x88180107, // 000A GETMBR R6 R0 K7
+ 0x8C0C050B, // 0008 GETMET R3 R2 K11
+ 0x58140008, // 0009 LDCONST R5 K8
+ 0x88180106, // 000A GETMBR R6 R0 K6
0x7C0C0600, // 000B CALL R3 3
0x80040400, // 000C RET 1 R2
})
@@ -2323,34 +2218,37 @@ be_local_class(Matter_AttributeStatusIB,
})),
be_str_weak(Matter_AttributeStatusIB)
);
+// compact class 'Matter_StatusIB' ktab size: 10, total: 14 (saved 32 bytes)
+static const bvalue be_ktab_class_Matter_StatusIB[10] = {
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(TLV),
+ /* K2 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K3 */ be_nested_str_weak(add_TLV),
+ /* K4 */ be_const_int(0),
+ /* K5 */ be_nested_str_weak(U2),
+ /* K6 */ be_nested_str_weak(status),
+ /* K7 */ be_const_int(1),
+ /* K8 */ be_nested_str_weak(cluster_status),
+ /* K9 */ be_nested_str_weak(findsubval),
+};
+
extern const bclass be_class_Matter_StatusIB;
/********************************************************************
** Solidified function: to_TLV
********************************************************************/
-extern const bclass be_class_Matter_StatusIB;
be_local_closure(class_Matter_StatusIB_to_TLV, /* name */
be_nested_proto(
8, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_StatusIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_struct),
- /* K3 */ be_nested_str_weak(add_TLV),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(U2),
- /* K6 */ be_nested_str_weak(status),
- /* K7 */ be_const_int(1),
- /* K8 */ be_nested_str_weak(cluster_status),
- }),
+ &be_ktab_class_Matter_StatusIB, /* shared constants */
be_str_weak(to_TLV),
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
@@ -2378,24 +2276,17 @@ be_local_closure(class_Matter_StatusIB_to_TLV, /* name */
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_StatusIB;
be_local_closure(class_Matter_StatusIB_from_TLV, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_StatusIB,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(status),
- /* K1 */ be_nested_str_weak(findsubval),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(cluster_status),
- /* K4 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_StatusIB, /* shared constants */
be_str_weak(from_TLV),
&be_const_str_solidified,
( &(const binstruction[14]) { /* code */
@@ -2404,14 +2295,14 @@ be_local_closure(class_Matter_StatusIB_from_TLV, /* name */
0x780A0001, // 0002 JMPF R2 #0005
0x4C080000, // 0003 LDNIL R2
0x80040400, // 0004 RET 1 R2
- 0x8C080301, // 0005 GETMET R2 R1 K1
- 0x58100002, // 0006 LDCONST R4 K2
+ 0x8C080309, // 0005 GETMET R2 R1 K9
+ 0x58100004, // 0006 LDCONST R4 K4
0x7C080400, // 0007 CALL R2 2
- 0x90020002, // 0008 SETMBR R0 K0 R2
- 0x8C080301, // 0009 GETMET R2 R1 K1
- 0x58100004, // 000A LDCONST R4 K4
+ 0x90020C02, // 0008 SETMBR R0 K6 R2
+ 0x8C080309, // 0009 GETMET R2 R1 K9
+ 0x58100007, // 000A LDCONST R4 K7
0x7C080400, // 000B CALL R2 2
- 0x90020602, // 000C SETMBR R0 K3 R2
+ 0x90021002, // 000C SETMBR R0 K8 R2
0x80040000, // 000D RET 1 R0
})
)
@@ -2435,28 +2326,37 @@ be_local_class(Matter_StatusIB,
})),
be_str_weak(Matter_StatusIB)
);
+// compact class 'Matter_StatusResponseMessage' ktab size: 10, total: 12 (saved 16 bytes)
+static const bvalue be_ktab_class_Matter_StatusResponseMessage[10] = {
+ /* K0 */ be_nested_str_weak(status),
+ /* K1 */ be_nested_str_weak(findsubval),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str_weak(matter),
+ /* K4 */ be_nested_str_weak(TLV),
+ /* K5 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K6 */ be_nested_str_weak(add_TLV),
+ /* K7 */ be_nested_str_weak(U4),
+ /* K8 */ be_nested_str_weak(U1),
+ /* K9 */ be_nested_str_weak(InteractionModelRevision),
+};
+
extern const bclass be_class_Matter_StatusResponseMessage;
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_StatusResponseMessage;
be_local_closure(class_Matter_StatusResponseMessage_from_TLV, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_StatusResponseMessage,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(status),
- /* K1 */ be_nested_str_weak(findsubval),
- /* K2 */ be_const_int(0),
- }),
+ &be_ktab_class_Matter_StatusResponseMessage, /* shared constants */
be_str_weak(from_TLV),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
@@ -2479,44 +2379,33 @@ be_local_closure(class_Matter_StatusResponseMessage_from_TLV, /* name */
/********************************************************************
** Solidified function: to_TLV
********************************************************************/
-extern const bclass be_class_Matter_StatusResponseMessage;
be_local_closure(class_Matter_StatusResponseMessage_to_TLV, /* name */
be_nested_proto(
8, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_StatusResponseMessage,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_struct),
- /* K3 */ be_nested_str_weak(add_TLV),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(U4),
- /* K6 */ be_nested_str_weak(status),
- /* K7 */ be_nested_str_weak(U1),
- /* K8 */ be_nested_str_weak(InteractionModelRevision),
- }),
+ &be_ktab_class_Matter_StatusResponseMessage, /* shared constants */
be_str_weak(to_TLV),
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x8C080302, // 0002 GETMET R2 R1 K2
+ 0xB8060600, // 0000 GETNGBL R1 K3
+ 0x88040304, // 0001 GETMBR R1 R1 K4
+ 0x8C080305, // 0002 GETMET R2 R1 K5
0x7C080200, // 0003 CALL R2 1
- 0x8C0C0503, // 0004 GETMET R3 R2 K3
- 0x58140004, // 0005 LDCONST R5 K4
- 0x88180305, // 0006 GETMBR R6 R1 K5
- 0x881C0106, // 0007 GETMBR R7 R0 K6
+ 0x8C0C0506, // 0004 GETMET R3 R2 K6
+ 0x58140002, // 0005 LDCONST R5 K2
+ 0x88180307, // 0006 GETMBR R6 R1 K7
+ 0x881C0100, // 0007 GETMBR R7 R0 K0
0x7C0C0800, // 0008 CALL R3 4
- 0x8C0C0503, // 0009 GETMET R3 R2 K3
+ 0x8C0C0506, // 0009 GETMET R3 R2 K6
0x541600FE, // 000A LDINT R5 255
- 0x88180307, // 000B GETMBR R6 R1 K7
- 0x881C0108, // 000C GETMBR R7 R0 K8
+ 0x88180308, // 000B GETMBR R6 R1 K8
+ 0x881C0109, // 000C GETMBR R7 R0 K9
0x7C0C0800, // 000D CALL R3 4
0x80040400, // 000E RET 1 R2
})
@@ -2546,7 +2435,6 @@ extern const bclass be_class_Matter_ReadRequestMessage;
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_ReadRequestMessage;
be_local_closure(class_Matter_ReadRequestMessage_from_TLV, /* name */
be_nested_proto(
7, /* nstack */
@@ -2555,7 +2443,7 @@ be_local_closure(class_Matter_ReadRequestMessage_from_TLV, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_ReadRequestMessage,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[16]) { /* constants */
/* K0 */ be_nested_str_weak(attributes_requests),
@@ -2626,83 +2514,6 @@ be_local_closure(class_Matter_ReadRequestMessage_from_TLV, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: to_TLV
-********************************************************************/
-extern const bclass be_class_Matter_ReadRequestMessage;
-be_local_closure(class_Matter_ReadRequestMessage_to_TLV, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_ReadRequestMessage,
- 1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_struct),
- /* K3 */ be_nested_str_weak(to_TLV_array),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(attributes_requests),
- /* K6 */ be_const_int(1),
- /* K7 */ be_nested_str_weak(event_requests),
- /* K8 */ be_const_int(2),
- /* K9 */ be_nested_str_weak(event_filters),
- /* K10 */ be_nested_str_weak(add_TLV),
- /* K11 */ be_const_int(3),
- /* K12 */ be_nested_str_weak(BOOL),
- /* K13 */ be_nested_str_weak(fabric_filtered),
- /* K14 */ be_nested_str_weak(data_version_filters),
- /* K15 */ be_nested_str_weak(U1),
- /* K16 */ be_nested_str_weak(InteractionModelRevision),
- }),
- be_str_weak(to_TLV),
- &be_const_str_solidified,
- ( &(const binstruction[35]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x8C080302, // 0002 GETMET R2 R1 K2
- 0x7C080200, // 0003 CALL R2 1
- 0x8C0C0103, // 0004 GETMET R3 R0 K3
- 0x5C140400, // 0005 MOVE R5 R2
- 0x58180004, // 0006 LDCONST R6 K4
- 0x881C0105, // 0007 GETMBR R7 R0 K5
- 0x7C0C0800, // 0008 CALL R3 4
- 0x8C0C0103, // 0009 GETMET R3 R0 K3
- 0x5C140400, // 000A MOVE R5 R2
- 0x58180006, // 000B LDCONST R6 K6
- 0x881C0107, // 000C GETMBR R7 R0 K7
- 0x7C0C0800, // 000D CALL R3 4
- 0x8C0C0103, // 000E GETMET R3 R0 K3
- 0x5C140400, // 000F MOVE R5 R2
- 0x58180008, // 0010 LDCONST R6 K8
- 0x881C0109, // 0011 GETMBR R7 R0 K9
- 0x7C0C0800, // 0012 CALL R3 4
- 0x8C0C050A, // 0013 GETMET R3 R2 K10
- 0x5814000B, // 0014 LDCONST R5 K11
- 0x8818030C, // 0015 GETMBR R6 R1 K12
- 0x881C010D, // 0016 GETMBR R7 R0 K13
- 0x7C0C0800, // 0017 CALL R3 4
- 0x8C0C0103, // 0018 GETMET R3 R0 K3
- 0x5C140400, // 0019 MOVE R5 R2
- 0x541A0003, // 001A LDINT R6 4
- 0x881C010E, // 001B GETMBR R7 R0 K14
- 0x7C0C0800, // 001C CALL R3 4
- 0x8C0C050A, // 001D GETMET R3 R2 K10
- 0x541600FE, // 001E LDINT R5 255
- 0x8818030F, // 001F GETMBR R6 R1 K15
- 0x881C0110, // 0020 GETMBR R7 R0 K16
- 0x7C0C0800, // 0021 CALL R3 4
- 0x80040400, // 0022 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified class: Matter_ReadRequestMessage
********************************************************************/
@@ -2710,15 +2521,14 @@ extern const bclass be_class_Matter_IM_Message_base;
be_local_class(Matter_ReadRequestMessage,
5,
&be_class_Matter_IM_Message_base,
- be_nested_map(7,
+ be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(event_filters, -1), be_const_var(2) },
- { be_const_key_weak(fabric_filtered, 3), be_const_var(3) },
- { be_const_key_weak(to_TLV, -1), be_const_closure(class_Matter_ReadRequestMessage_to_TLV_closure) },
{ be_const_key_weak(from_TLV, -1), be_const_closure(class_Matter_ReadRequestMessage_from_TLV_closure) },
+ { be_const_key_weak(event_filters, -1), be_const_var(2) },
+ { be_const_key_weak(fabric_filtered, -1), be_const_var(3) },
{ be_const_key_weak(data_version_filters, -1), be_const_var(4) },
+ { be_const_key_weak(event_requests, 3), be_const_var(1) },
{ be_const_key_weak(attributes_requests, -1), be_const_var(0) },
- { be_const_key_weak(event_requests, 0), be_const_var(1) },
})),
be_str_weak(Matter_ReadRequestMessage)
);
@@ -2728,7 +2538,6 @@ extern const bclass be_class_Matter_ReadRequestMessage_solo;
/********************************************************************
** Solidified function: from_raw
********************************************************************/
-extern const bclass be_class_Matter_ReadRequestMessage_solo;
be_local_closure(class_Matter_ReadRequestMessage_solo_from_raw, /* name */
be_nested_proto(
11, /* nstack */
@@ -2737,7 +2546,7 @@ be_local_closure(class_Matter_ReadRequestMessage_solo_from_raw, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_ReadRequestMessage_solo,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(reset),
@@ -2907,83 +2716,9 @@ be_local_class(Matter_ReadRequestMessage_solo,
extern const bclass be_class_Matter_ReportDataMessage;
-/********************************************************************
-** Solidified function: from_TLV
-********************************************************************/
-extern const bclass be_class_Matter_ReportDataMessage;
-be_local_closure(class_Matter_ReportDataMessage_from_TLV, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_ReportDataMessage,
- 1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(subscription_id),
- /* K1 */ be_nested_str_weak(findsubval),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(attribute_reports),
- /* K4 */ be_nested_str_weak(from_TLV_array),
- /* K5 */ be_const_int(1),
- /* K6 */ be_nested_str_weak(matter),
- /* K7 */ be_nested_str_weak(AttributeReportIB),
- /* K8 */ be_nested_str_weak(event_reports),
- /* K9 */ be_const_int(2),
- /* K10 */ be_nested_str_weak(EventReportIB),
- /* K11 */ be_nested_str_weak(more_chunked_messages),
- /* K12 */ be_const_int(3),
- /* K13 */ be_nested_str_weak(suppress_response),
- }),
- be_str_weak(from_TLV),
- &be_const_str_solidified,
- ( &(const binstruction[34]) { /* code */
- 0x4C080000, // 0000 LDNIL R2
- 0x1C080202, // 0001 EQ R2 R1 R2
- 0x780A0001, // 0002 JMPF R2 #0005
- 0x4C080000, // 0003 LDNIL R2
- 0x80040400, // 0004 RET 1 R2
- 0x8C080301, // 0005 GETMET R2 R1 K1
- 0x58100002, // 0006 LDCONST R4 K2
- 0x7C080400, // 0007 CALL R2 2
- 0x90020002, // 0008 SETMBR R0 K0 R2
- 0x8C080104, // 0009 GETMET R2 R0 K4
- 0x8C100301, // 000A GETMET R4 R1 K1
- 0x58180005, // 000B LDCONST R6 K5
- 0x7C100400, // 000C CALL R4 2
- 0xB8160C00, // 000D GETNGBL R5 K6
- 0x88140B07, // 000E GETMBR R5 R5 K7
- 0x7C080600, // 000F CALL R2 3
- 0x90020602, // 0010 SETMBR R0 K3 R2
- 0x8C080104, // 0011 GETMET R2 R0 K4
- 0x8C100301, // 0012 GETMET R4 R1 K1
- 0x58180009, // 0013 LDCONST R6 K9
- 0x7C100400, // 0014 CALL R4 2
- 0xB8160C00, // 0015 GETNGBL R5 K6
- 0x88140B0A, // 0016 GETMBR R5 R5 K10
- 0x7C080600, // 0017 CALL R2 3
- 0x90021002, // 0018 SETMBR R0 K8 R2
- 0x8C080301, // 0019 GETMET R2 R1 K1
- 0x5810000C, // 001A LDCONST R4 K12
- 0x7C080400, // 001B CALL R2 2
- 0x90021602, // 001C SETMBR R0 K11 R2
- 0x8C080301, // 001D GETMET R2 R1 K1
- 0x54120003, // 001E LDINT R4 4
- 0x7C080400, // 001F CALL R2 2
- 0x90021A02, // 0020 SETMBR R0 K13 R2
- 0x80040000, // 0021 RET 1 R0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: to_TLV
********************************************************************/
-extern const bclass be_class_Matter_ReportDataMessage;
be_local_closure(class_Matter_ReportDataMessage_to_TLV, /* name */
be_nested_proto(
8, /* nstack */
@@ -2992,7 +2727,7 @@ be_local_closure(class_Matter_ReportDataMessage_to_TLV, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_ReportDataMessage,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[18]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
@@ -3065,15 +2800,14 @@ extern const bclass be_class_Matter_IM_Message_base;
be_local_class(Matter_ReportDataMessage,
5,
&be_class_Matter_IM_Message_base,
- be_nested_map(7,
+ be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(attribute_reports, -1), be_const_var(1) },
- { be_const_key_weak(from_TLV, -1), be_const_closure(class_Matter_ReportDataMessage_from_TLV_closure) },
+ { be_const_key_weak(suppress_response, -1), be_const_var(4) },
+ { be_const_key_weak(event_reports, 3), be_const_var(2) },
+ { be_const_key_weak(subscription_id, -1), be_const_var(0) },
{ be_const_key_weak(to_TLV, -1), be_const_closure(class_Matter_ReportDataMessage_to_TLV_closure) },
{ be_const_key_weak(more_chunked_messages, -1), be_const_var(3) },
- { be_const_key_weak(event_reports, -1), be_const_var(2) },
- { be_const_key_weak(suppress_response, -1), be_const_var(4) },
- { be_const_key_weak(subscription_id, 5), be_const_var(0) },
+ { be_const_key_weak(attribute_reports, -1), be_const_var(1) },
})),
be_str_weak(Matter_ReportDataMessage)
);
@@ -3083,7 +2817,6 @@ extern const bclass be_class_Matter_SubscribeRequestMessage;
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_SubscribeRequestMessage;
be_local_closure(class_Matter_SubscribeRequestMessage_from_TLV, /* name */
be_nested_proto(
7, /* nstack */
@@ -3092,7 +2825,7 @@ be_local_closure(class_Matter_SubscribeRequestMessage_from_TLV, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_SubscribeRequestMessage,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[19]) { /* constants */
/* K0 */ be_nested_str_weak(keep_subscriptions),
@@ -3182,102 +2915,6 @@ be_local_closure(class_Matter_SubscribeRequestMessage_from_TLV, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: to_TLV
-********************************************************************/
-extern const bclass be_class_Matter_SubscribeRequestMessage;
-be_local_closure(class_Matter_SubscribeRequestMessage_to_TLV, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_SubscribeRequestMessage,
- 1, /* has constants */
- ( &(const bvalue[21]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_struct),
- /* K3 */ be_nested_str_weak(add_TLV),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(BOOL),
- /* K6 */ be_nested_str_weak(keep_subscriptions),
- /* K7 */ be_const_int(1),
- /* K8 */ be_nested_str_weak(U2),
- /* K9 */ be_nested_str_weak(min_interval_floor),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(max_interval_ceiling),
- /* K12 */ be_nested_str_weak(to_TLV_array),
- /* K13 */ be_const_int(3),
- /* K14 */ be_nested_str_weak(attributes_requests),
- /* K15 */ be_nested_str_weak(event_requests),
- /* K16 */ be_nested_str_weak(event_filters),
- /* K17 */ be_nested_str_weak(fabric_filtered),
- /* K18 */ be_nested_str_weak(data_version_filters),
- /* K19 */ be_nested_str_weak(U1),
- /* K20 */ be_nested_str_weak(InteractionModelRevision),
- }),
- be_str_weak(to_TLV),
- &be_const_str_solidified,
- ( &(const binstruction[50]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x8C080302, // 0002 GETMET R2 R1 K2
- 0x7C080200, // 0003 CALL R2 1
- 0x8C0C0503, // 0004 GETMET R3 R2 K3
- 0x58140004, // 0005 LDCONST R5 K4
- 0x88180305, // 0006 GETMBR R6 R1 K5
- 0x881C0106, // 0007 GETMBR R7 R0 K6
- 0x7C0C0800, // 0008 CALL R3 4
- 0x8C0C0503, // 0009 GETMET R3 R2 K3
- 0x58140007, // 000A LDCONST R5 K7
- 0x88180308, // 000B GETMBR R6 R1 K8
- 0x881C0109, // 000C GETMBR R7 R0 K9
- 0x7C0C0800, // 000D CALL R3 4
- 0x8C0C0503, // 000E GETMET R3 R2 K3
- 0x5814000A, // 000F LDCONST R5 K10
- 0x88180308, // 0010 GETMBR R6 R1 K8
- 0x881C010B, // 0011 GETMBR R7 R0 K11
- 0x7C0C0800, // 0012 CALL R3 4
- 0x8C0C010C, // 0013 GETMET R3 R0 K12
- 0x5C140400, // 0014 MOVE R5 R2
- 0x5818000D, // 0015 LDCONST R6 K13
- 0x881C010E, // 0016 GETMBR R7 R0 K14
- 0x7C0C0800, // 0017 CALL R3 4
- 0x8C0C010C, // 0018 GETMET R3 R0 K12
- 0x5C140400, // 0019 MOVE R5 R2
- 0x541A0003, // 001A LDINT R6 4
- 0x881C010F, // 001B GETMBR R7 R0 K15
- 0x7C0C0800, // 001C CALL R3 4
- 0x8C0C010C, // 001D GETMET R3 R0 K12
- 0x5C140400, // 001E MOVE R5 R2
- 0x541A0004, // 001F LDINT R6 5
- 0x881C0110, // 0020 GETMBR R7 R0 K16
- 0x7C0C0800, // 0021 CALL R3 4
- 0x8C0C0503, // 0022 GETMET R3 R2 K3
- 0x54160006, // 0023 LDINT R5 7
- 0x88180305, // 0024 GETMBR R6 R1 K5
- 0x881C0111, // 0025 GETMBR R7 R0 K17
- 0x7C0C0800, // 0026 CALL R3 4
- 0x8C0C010C, // 0027 GETMET R3 R0 K12
- 0x5C140400, // 0028 MOVE R5 R2
- 0x541A0007, // 0029 LDINT R6 8
- 0x881C0112, // 002A GETMBR R7 R0 K18
- 0x7C0C0800, // 002B CALL R3 4
- 0x8C0C0503, // 002C GETMET R3 R2 K3
- 0x541600FE, // 002D LDINT R5 255
- 0x88180313, // 002E GETMBR R6 R1 K19
- 0x881C0114, // 002F GETMBR R7 R0 K20
- 0x7C0C0800, // 0030 CALL R3 4
- 0x80040400, // 0031 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified class: Matter_SubscribeRequestMessage
********************************************************************/
@@ -3285,18 +2922,17 @@ extern const bclass be_class_Matter_IM_Message_base;
be_local_class(Matter_SubscribeRequestMessage,
8,
&be_class_Matter_IM_Message_base,
- be_nested_map(10,
+ be_nested_map(9,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(to_TLV, -1), be_const_closure(class_Matter_SubscribeRequestMessage_to_TLV_closure) },
- { be_const_key_weak(attributes_requests, 7), be_const_var(3) },
- { be_const_key_weak(fabric_filtered, 6), be_const_var(6) },
+ { be_const_key_weak(attributes_requests, -1), be_const_var(3) },
+ { be_const_key_weak(event_requests, -1), be_const_var(4) },
{ be_const_key_weak(min_interval_floor, -1), be_const_var(1) },
+ { be_const_key_weak(from_TLV, -1), be_const_closure(class_Matter_SubscribeRequestMessage_from_TLV_closure) },
+ { be_const_key_weak(event_filters, -1), be_const_var(5) },
+ { be_const_key_weak(fabric_filtered, 0), be_const_var(6) },
+ { be_const_key_weak(keep_subscriptions, 3), be_const_var(0) },
{ be_const_key_weak(data_version_filters, -1), be_const_var(7) },
{ be_const_key_weak(max_interval_ceiling, -1), be_const_var(2) },
- { be_const_key_weak(event_requests, 3), be_const_var(4) },
- { be_const_key_weak(event_filters, -1), be_const_var(5) },
- { be_const_key_weak(from_TLV, -1), be_const_closure(class_Matter_SubscribeRequestMessage_from_TLV_closure) },
- { be_const_key_weak(keep_subscriptions, 0), be_const_var(0) },
})),
be_str_weak(Matter_SubscribeRequestMessage)
);
@@ -3306,7 +2942,6 @@ extern const bclass be_class_Matter_SubscribeResponseMessage;
/********************************************************************
** Solidified function: to_TLV
********************************************************************/
-extern const bclass be_class_Matter_SubscribeResponseMessage;
be_local_closure(class_Matter_SubscribeResponseMessage_to_TLV, /* name */
be_nested_proto(
8, /* nstack */
@@ -3315,7 +2950,7 @@ be_local_closure(class_Matter_SubscribeResponseMessage_to_TLV, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_SubscribeResponseMessage,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[12]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
@@ -3360,50 +2995,6 @@ be_local_closure(class_Matter_SubscribeResponseMessage_to_TLV, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: from_TLV
-********************************************************************/
-extern const bclass be_class_Matter_SubscribeResponseMessage;
-be_local_closure(class_Matter_SubscribeResponseMessage_from_TLV, /* name */
- be_nested_proto(
- 5, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_SubscribeResponseMessage,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(subscription_id),
- /* K1 */ be_nested_str_weak(findsubval),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(max_interval),
- /* K4 */ be_const_int(2),
- }),
- be_str_weak(from_TLV),
- &be_const_str_solidified,
- ( &(const binstruction[14]) { /* code */
- 0x4C080000, // 0000 LDNIL R2
- 0x1C080202, // 0001 EQ R2 R1 R2
- 0x780A0001, // 0002 JMPF R2 #0005
- 0x4C080000, // 0003 LDNIL R2
- 0x80040400, // 0004 RET 1 R2
- 0x8C080301, // 0005 GETMET R2 R1 K1
- 0x58100002, // 0006 LDCONST R4 K2
- 0x7C080400, // 0007 CALL R2 2
- 0x90020002, // 0008 SETMBR R0 K0 R2
- 0x8C080301, // 0009 GETMET R2 R1 K1
- 0x58100004, // 000A LDCONST R4 K4
- 0x7C080400, // 000B CALL R2 2
- 0x90020602, // 000C SETMBR R0 K3 R2
- 0x80040000, // 000D RET 1 R0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified class: Matter_SubscribeResponseMessage
********************************************************************/
@@ -3411,93 +3002,20 @@ extern const bclass be_class_Matter_IM_Message_base;
be_local_class(Matter_SubscribeResponseMessage,
2,
&be_class_Matter_IM_Message_base,
- be_nested_map(4,
+ be_nested_map(3,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(subscription_id, 2), be_const_var(0) },
- { be_const_key_weak(to_TLV, -1), be_const_closure(class_Matter_SubscribeResponseMessage_to_TLV_closure) },
- { be_const_key_weak(from_TLV, -1), be_const_closure(class_Matter_SubscribeResponseMessage_from_TLV_closure) },
{ be_const_key_weak(max_interval, -1), be_const_var(1) },
+ { be_const_key_weak(to_TLV, -1), be_const_closure(class_Matter_SubscribeResponseMessage_to_TLV_closure) },
+ { be_const_key_weak(subscription_id, -1), be_const_var(0) },
})),
be_str_weak(Matter_SubscribeResponseMessage)
);
extern const bclass be_class_Matter_WriteRequestMessage;
-/********************************************************************
-** Solidified function: to_TLV
-********************************************************************/
-extern const bclass be_class_Matter_WriteRequestMessage;
-be_local_closure(class_Matter_WriteRequestMessage_to_TLV, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_WriteRequestMessage,
- 1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_struct),
- /* K3 */ be_nested_str_weak(add_TLV),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(BOOL),
- /* K6 */ be_nested_str_weak(suppress_response),
- /* K7 */ be_const_int(1),
- /* K8 */ be_nested_str_weak(timed_request),
- /* K9 */ be_nested_str_weak(to_TLV_array),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(write_requests),
- /* K12 */ be_const_int(3),
- /* K13 */ be_nested_str_weak(more_chunked_messages),
- /* K14 */ be_nested_str_weak(U1),
- /* K15 */ be_nested_str_weak(InteractionModelRevision),
- }),
- be_str_weak(to_TLV),
- &be_const_str_solidified,
- ( &(const binstruction[30]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x8C080302, // 0002 GETMET R2 R1 K2
- 0x7C080200, // 0003 CALL R2 1
- 0x8C0C0503, // 0004 GETMET R3 R2 K3
- 0x58140004, // 0005 LDCONST R5 K4
- 0x88180305, // 0006 GETMBR R6 R1 K5
- 0x881C0106, // 0007 GETMBR R7 R0 K6
- 0x7C0C0800, // 0008 CALL R3 4
- 0x8C0C0503, // 0009 GETMET R3 R2 K3
- 0x58140007, // 000A LDCONST R5 K7
- 0x88180305, // 000B GETMBR R6 R1 K5
- 0x881C0108, // 000C GETMBR R7 R0 K8
- 0x7C0C0800, // 000D CALL R3 4
- 0x8C0C0109, // 000E GETMET R3 R0 K9
- 0x5C140400, // 000F MOVE R5 R2
- 0x5818000A, // 0010 LDCONST R6 K10
- 0x881C010B, // 0011 GETMBR R7 R0 K11
- 0x7C0C0800, // 0012 CALL R3 4
- 0x8C0C0503, // 0013 GETMET R3 R2 K3
- 0x5814000C, // 0014 LDCONST R5 K12
- 0x88180305, // 0015 GETMBR R6 R1 K5
- 0x881C010D, // 0016 GETMBR R7 R0 K13
- 0x7C0C0800, // 0017 CALL R3 4
- 0x8C0C0503, // 0018 GETMET R3 R2 K3
- 0x541600FE, // 0019 LDINT R5 255
- 0x8818030E, // 001A GETMBR R6 R1 K14
- 0x881C010F, // 001B GETMBR R7 R0 K15
- 0x7C0C0800, // 001C CALL R3 4
- 0x80040400, // 001D RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_WriteRequestMessage;
be_local_closure(class_Matter_WriteRequestMessage_from_TLV, /* name */
be_nested_proto(
7, /* nstack */
@@ -3506,7 +3024,7 @@ be_local_closure(class_Matter_WriteRequestMessage_from_TLV, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_WriteRequestMessage,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[12]) { /* constants */
/* K0 */ be_nested_str_weak(suppress_response),
@@ -3564,69 +3082,22 @@ extern const bclass be_class_Matter_IM_Message_base;
be_local_class(Matter_WriteRequestMessage,
4,
&be_class_Matter_IM_Message_base,
- be_nested_map(6,
+ be_nested_map(5,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(suppress_response, 5), be_const_var(0) },
- { be_const_key_weak(to_TLV, -1), be_const_closure(class_Matter_WriteRequestMessage_to_TLV_closure) },
- { be_const_key_weak(timed_request, -1), be_const_var(1) },
{ be_const_key_weak(write_requests, -1), be_const_var(2) },
- { be_const_key_weak(more_chunked_messages, -1), be_const_var(3) },
+ { be_const_key_weak(suppress_response, 2), be_const_var(0) },
+ { be_const_key_weak(timed_request, -1), be_const_var(1) },
{ be_const_key_weak(from_TLV, -1), be_const_closure(class_Matter_WriteRequestMessage_from_TLV_closure) },
+ { be_const_key_weak(more_chunked_messages, -1), be_const_var(3) },
})),
be_str_weak(Matter_WriteRequestMessage)
);
extern const bclass be_class_Matter_WriteResponseMessage;
-/********************************************************************
-** Solidified function: from_TLV
-********************************************************************/
-extern const bclass be_class_Matter_WriteResponseMessage;
-be_local_closure(class_Matter_WriteResponseMessage_from_TLV, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_WriteResponseMessage,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(write_requests),
- /* K1 */ be_nested_str_weak(from_TLV_array),
- /* K2 */ be_nested_str_weak(findsubval),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(matter),
- /* K5 */ be_nested_str_weak(AttributeStatusIB),
- }),
- be_str_weak(from_TLV),
- &be_const_str_solidified,
- ( &(const binstruction[14]) { /* code */
- 0x4C080000, // 0000 LDNIL R2
- 0x1C080202, // 0001 EQ R2 R1 R2
- 0x780A0001, // 0002 JMPF R2 #0005
- 0x4C080000, // 0003 LDNIL R2
- 0x80040400, // 0004 RET 1 R2
- 0x8C080101, // 0005 GETMET R2 R0 K1
- 0x8C100302, // 0006 GETMET R4 R1 K2
- 0x58180003, // 0007 LDCONST R6 K3
- 0x7C100400, // 0008 CALL R4 2
- 0xB8160800, // 0009 GETNGBL R5 K4
- 0x88140B05, // 000A GETMBR R5 R5 K5
- 0x7C080600, // 000B CALL R2 3
- 0x90020002, // 000C SETMBR R0 K0 R2
- 0x80040000, // 000D RET 1 R0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: to_TLV
********************************************************************/
-extern const bclass be_class_Matter_WriteResponseMessage;
be_local_closure(class_Matter_WriteResponseMessage_to_TLV, /* name */
be_nested_proto(
8, /* nstack */
@@ -3635,7 +3106,7 @@ be_local_closure(class_Matter_WriteResponseMessage_to_TLV, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_WriteResponseMessage,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 9]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
@@ -3679,11 +3150,10 @@ extern const bclass be_class_Matter_IM_Message_base;
be_local_class(Matter_WriteResponseMessage,
1,
&be_class_Matter_IM_Message_base,
- be_nested_map(3,
+ be_nested_map(2,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(from_TLV, 2), be_const_closure(class_Matter_WriteResponseMessage_from_TLV_closure) },
{ be_const_key_weak(to_TLV, -1), be_const_closure(class_Matter_WriteResponseMessage_to_TLV_closure) },
- { be_const_key_weak(write_responses, -1), be_const_var(0) },
+ { be_const_key_weak(write_responses, 0), be_const_var(0) },
})),
be_str_weak(Matter_WriteResponseMessage)
);
@@ -3693,7 +3163,6 @@ extern const bclass be_class_Matter_TimedRequestMessage;
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_TimedRequestMessage;
be_local_closure(class_Matter_TimedRequestMessage_from_TLV, /* name */
be_nested_proto(
5, /* nstack */
@@ -3702,7 +3171,7 @@ be_local_closure(class_Matter_TimedRequestMessage_from_TLV, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TimedRequestMessage,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str_weak(timeout),
@@ -3728,55 +3197,6 @@ be_local_closure(class_Matter_TimedRequestMessage_from_TLV, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: to_TLV
-********************************************************************/
-extern const bclass be_class_Matter_TimedRequestMessage;
-be_local_closure(class_Matter_TimedRequestMessage_to_TLV, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_TimedRequestMessage,
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_struct),
- /* K3 */ be_nested_str_weak(add_TLV),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(U2),
- /* K6 */ be_nested_str_weak(timeout),
- /* K7 */ be_nested_str_weak(U1),
- /* K8 */ be_nested_str_weak(InteractionModelRevision),
- }),
- be_str_weak(to_TLV),
- &be_const_str_solidified,
- ( &(const binstruction[15]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x8C080302, // 0002 GETMET R2 R1 K2
- 0x7C080200, // 0003 CALL R2 1
- 0x8C0C0503, // 0004 GETMET R3 R2 K3
- 0x58140004, // 0005 LDCONST R5 K4
- 0x88180305, // 0006 GETMBR R6 R1 K5
- 0x881C0106, // 0007 GETMBR R7 R0 K6
- 0x7C0C0800, // 0008 CALL R3 4
- 0x8C0C0503, // 0009 GETMET R3 R2 K3
- 0x541600FE, // 000A LDINT R5 255
- 0x88180307, // 000B GETMBR R6 R1 K7
- 0x881C0108, // 000C GETMBR R7 R0 K8
- 0x7C0C0800, // 000D CALL R3 4
- 0x80040400, // 000E RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified class: Matter_TimedRequestMessage
********************************************************************/
@@ -3784,11 +3204,10 @@ extern const bclass be_class_Matter_IM_Message_base;
be_local_class(Matter_TimedRequestMessage,
1,
&be_class_Matter_IM_Message_base,
- be_nested_map(3,
+ be_nested_map(2,
( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(timeout, 1), be_const_var(0) },
{ be_const_key_weak(from_TLV, -1), be_const_closure(class_Matter_TimedRequestMessage_from_TLV_closure) },
- { be_const_key_weak(timeout, 2), be_const_var(0) },
- { be_const_key_weak(to_TLV, -1), be_const_closure(class_Matter_TimedRequestMessage_to_TLV_closure) },
})),
be_str_weak(Matter_TimedRequestMessage)
);
@@ -3798,7 +3217,6 @@ extern const bclass be_class_Matter_InvokeRequestMessage;
/********************************************************************
** Solidified function: from_TLV
********************************************************************/
-extern const bclass be_class_Matter_InvokeRequestMessage;
be_local_closure(class_Matter_InvokeRequestMessage_from_TLV, /* name */
be_nested_proto(
7, /* nstack */
@@ -3807,7 +3225,7 @@ be_local_closure(class_Matter_InvokeRequestMessage_from_TLV, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_InvokeRequestMessage,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(suppress_response),
@@ -3852,70 +3270,6 @@ be_local_closure(class_Matter_InvokeRequestMessage_from_TLV, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: to_TLV
-********************************************************************/
-extern const bclass be_class_Matter_InvokeRequestMessage;
-be_local_closure(class_Matter_InvokeRequestMessage_to_TLV, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_InvokeRequestMessage,
- 1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(Matter_TLV_struct),
- /* K3 */ be_nested_str_weak(add_TLV),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(BOOL),
- /* K6 */ be_nested_str_weak(suppress_response),
- /* K7 */ be_const_int(1),
- /* K8 */ be_nested_str_weak(timed_request),
- /* K9 */ be_nested_str_weak(to_TLV_array),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(invoke_requests),
- /* K12 */ be_nested_str_weak(U1),
- /* K13 */ be_nested_str_weak(InteractionModelRevision),
- }),
- be_str_weak(to_TLV),
- &be_const_str_solidified,
- ( &(const binstruction[25]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x8C080302, // 0002 GETMET R2 R1 K2
- 0x7C080200, // 0003 CALL R2 1
- 0x8C0C0503, // 0004 GETMET R3 R2 K3
- 0x58140004, // 0005 LDCONST R5 K4
- 0x88180305, // 0006 GETMBR R6 R1 K5
- 0x881C0106, // 0007 GETMBR R7 R0 K6
- 0x7C0C0800, // 0008 CALL R3 4
- 0x8C0C0503, // 0009 GETMET R3 R2 K3
- 0x58140007, // 000A LDCONST R5 K7
- 0x88180305, // 000B GETMBR R6 R1 K5
- 0x881C0108, // 000C GETMBR R7 R0 K8
- 0x7C0C0800, // 000D CALL R3 4
- 0x8C0C0109, // 000E GETMET R3 R0 K9
- 0x5C140400, // 000F MOVE R5 R2
- 0x5818000A, // 0010 LDCONST R6 K10
- 0x881C010B, // 0011 GETMBR R7 R0 K11
- 0x7C0C0800, // 0012 CALL R3 4
- 0x8C0C0503, // 0013 GETMET R3 R2 K3
- 0x541600FE, // 0014 LDINT R5 255
- 0x8818030C, // 0015 GETMBR R6 R1 K12
- 0x881C010D, // 0016 GETMBR R7 R0 K13
- 0x7C0C0800, // 0017 CALL R3 4
- 0x80040400, // 0018 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified class: Matter_InvokeRequestMessage
********************************************************************/
@@ -3923,39 +3277,53 @@ extern const bclass be_class_Matter_IM_Message_base;
be_local_class(Matter_InvokeRequestMessage,
3,
&be_class_Matter_IM_Message_base,
- be_nested_map(5,
+ be_nested_map(4,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(invoke_requests, -1), be_const_var(2) },
- { be_const_key_weak(suppress_response, 2), be_const_var(0) },
+ { be_const_key_weak(suppress_response, 1), be_const_var(0) },
+ { be_const_key_weak(from_TLV, 3), be_const_closure(class_Matter_InvokeRequestMessage_from_TLV_closure) },
{ be_const_key_weak(timed_request, -1), be_const_var(1) },
- { be_const_key_weak(from_TLV, -1), be_const_closure(class_Matter_InvokeRequestMessage_from_TLV_closure) },
- { be_const_key_weak(to_TLV, -1), be_const_closure(class_Matter_InvokeRequestMessage_to_TLV_closure) },
+ { be_const_key_weak(invoke_requests, -1), be_const_var(2) },
})),
be_str_weak(Matter_InvokeRequestMessage)
);
+// compact class 'Matter_InvokeRequestMessage_solo' ktab size: 17, total: 20 (saved 24 bytes)
+static const bvalue be_ktab_class_Matter_InvokeRequestMessage_solo[17] = {
+ /* K0 */ be_nested_str_weak(reset),
+ /* K1 */ be_nested_str_weak(SuppressResponse),
+ /* K2 */ be_nested_str_weak(TimedRequest),
+ /* K3 */ be_nested_str_weak(command_fields),
+ /* K4 */ be_nested_str_weak(get),
+ /* K5 */ be_const_int(1),
+ /* K6 */ be_const_int(2),
+ /* K7 */ be_const_int(3),
+ /* K8 */ be_const_int(0),
+ /* K9 */ be_nested_str_weak(endpoint),
+ /* K10 */ be_nested_str_weak(cluster),
+ /* K11 */ be_nested_str_weak(command),
+ /* K12 */ be_nested_str_weak(matter),
+ /* K13 */ be_nested_str_weak(TLV),
+ /* K14 */ be_nested_str_weak(parse),
+ /* K15 */ be_nested_str_weak(next_idx),
+ /* K16 */ be_const_int(620691736),
+};
+
extern const bclass be_class_Matter_InvokeRequestMessage_solo;
/********************************************************************
** Solidified function: reset
********************************************************************/
-extern const bclass be_class_Matter_InvokeRequestMessage_solo;
be_local_closure(class_Matter_InvokeRequestMessage_solo_reset, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_InvokeRequestMessage_solo,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(reset),
- /* K1 */ be_nested_str_weak(SuppressResponse),
- /* K2 */ be_nested_str_weak(TimedRequest),
- /* K3 */ be_nested_str_weak(command_fields),
- }),
+ &be_ktab_class_Matter_InvokeRequestMessage_solo, /* shared constants */
be_str_weak(reset),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
@@ -3978,35 +3346,17 @@ be_local_closure(class_Matter_InvokeRequestMessage_solo_reset, /* name */
/********************************************************************
** Solidified function: from_raw
********************************************************************/
-extern const bclass be_class_Matter_InvokeRequestMessage_solo;
be_local_closure(class_Matter_InvokeRequestMessage_solo_from_raw, /* name */
be_nested_proto(
11, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_InvokeRequestMessage_solo,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
- /* K0 */ be_nested_str_weak(reset),
- /* K1 */ be_nested_str_weak(get),
- /* K2 */ be_const_int(1),
- /* K3 */ be_nested_str_weak(SuppressResponse),
- /* K4 */ be_const_int(2),
- /* K5 */ be_const_int(3),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(endpoint),
- /* K8 */ be_nested_str_weak(cluster),
- /* K9 */ be_nested_str_weak(command),
- /* K10 */ be_nested_str_weak(command_fields),
- /* K11 */ be_nested_str_weak(matter),
- /* K12 */ be_nested_str_weak(TLV),
- /* K13 */ be_nested_str_weak(parse),
- /* K14 */ be_nested_str_weak(next_idx),
- /* K15 */ be_const_int(620691736),
- }),
+ &be_ktab_class_Matter_InvokeRequestMessage_solo, /* shared constants */
be_str_weak(from_raw),
&be_const_str_solidified,
( &(const binstruction[170]) { /* code */
@@ -4016,17 +3366,17 @@ be_local_closure(class_Matter_InvokeRequestMessage_solo_from_raw, /* name */
0x5C100200, // 0003 MOVE R4 R1
0x7C0C0200, // 0004 CALL R3 1
0x4C100000, // 0005 LDNIL R4
- 0x8C140301, // 0006 GETMET R5 R1 K1
+ 0x8C140304, // 0006 GETMET R5 R1 K4
0x5C1C0400, // 0007 MOVE R7 R2
- 0x58200002, // 0008 LDCONST R8 K2
+ 0x58200005, // 0008 LDCONST R8 K5
0x7C140600, // 0009 CALL R5 3
0x541A0014, // 000A LDINT R6 21
0x20140A06, // 000B NE R5 R5 R6
0x78160001, // 000C JMPF R5 #000F
0x4C140000, // 000D LDNIL R5
0x80040A00, // 000E RET 1 R5
- 0x00080502, // 000F ADD R2 R2 K2
- 0x8C140301, // 0010 GETMET R5 R1 K1
+ 0x00080505, // 000F ADD R2 R2 K5
+ 0x8C140304, // 0010 GETMET R5 R1 K4
0x5C1C0400, // 0011 MOVE R7 R2
0x5421FFFD, // 0012 LDINT R8 -2
0x7C140600, // 0013 CALL R5 3
@@ -4039,9 +3389,9 @@ be_local_closure(class_Matter_InvokeRequestMessage_solo_from_raw, /* name */
0x78160003, // 001A JMPF R5 #001F
0x541628FF, // 001B LDINT R5 10496
0x1C140805, // 001C EQ R5 R4 R5
- 0x90020605, // 001D SETMBR R0 K3 R5
- 0x00080504, // 001E ADD R2 R2 K4
- 0x8C140301, // 001F GETMET R5 R1 K1
+ 0x90020205, // 001D SETMBR R0 K1 R5
+ 0x00080506, // 001E ADD R2 R2 K6
+ 0x8C140304, // 001F GETMET R5 R1 K4
0x5C1C0400, // 0020 MOVE R7 R2
0x5421FFFD, // 0021 LDINT R8 -2
0x7C140600, // 0022 CALL R5 3
@@ -4054,9 +3404,9 @@ be_local_closure(class_Matter_InvokeRequestMessage_solo_from_raw, /* name */
0x78160003, // 0029 JMPF R5 #002E
0x54162900, // 002A LDINT R5 10497
0x1C140805, // 002B EQ R5 R4 R5
- 0x90020605, // 002C SETMBR R0 K3 R5
- 0x00080504, // 002D ADD R2 R2 K4
- 0x8C140301, // 002E GETMET R5 R1 K1
+ 0x90020205, // 002C SETMBR R0 K1 R5
+ 0x00080506, // 002D ADD R2 R2 K6
+ 0x8C140304, // 002E GETMET R5 R1 K4
0x5C1C0400, // 002F MOVE R7 R2
0x5421FFFD, // 0030 LDINT R8 -2
0x7C140600, // 0031 CALL R5 3
@@ -4065,18 +3415,18 @@ be_local_closure(class_Matter_InvokeRequestMessage_solo_from_raw, /* name */
0x78160001, // 0034 JMPF R5 #0037
0x4C140000, // 0035 LDNIL R5
0x80040A00, // 0036 RET 1 R5
- 0x00080504, // 0037 ADD R2 R2 K4
- 0x8C140301, // 0038 GETMET R5 R1 K1
+ 0x00080506, // 0037 ADD R2 R2 K6
+ 0x8C140304, // 0038 GETMET R5 R1 K4
0x5C1C0400, // 0039 MOVE R7 R2
- 0x58200002, // 003A LDCONST R8 K2
+ 0x58200005, // 003A LDCONST R8 K5
0x7C140600, // 003B CALL R5 3
0x541A0014, // 003C LDINT R6 21
0x20140A06, // 003D NE R5 R5 R6
0x78160001, // 003E JMPF R5 #0041
0x4C140000, // 003F LDNIL R5
0x80040A00, // 0040 RET 1 R5
- 0x00080502, // 0041 ADD R2 R2 K2
- 0x8C140301, // 0042 GETMET R5 R1 K1
+ 0x00080505, // 0041 ADD R2 R2 K5
+ 0x8C140304, // 0042 GETMET R5 R1 K4
0x5C1C0400, // 0043 MOVE R7 R2
0x5421FFFD, // 0044 LDINT R8 -2
0x7C140600, // 0045 CALL R5 3
@@ -4085,65 +3435,65 @@ be_local_closure(class_Matter_InvokeRequestMessage_solo_from_raw, /* name */
0x78160001, // 0048 JMPF R5 #004B
0x4C140000, // 0049 LDNIL R5
0x80040A00, // 004A RET 1 R5
- 0x00080504, // 004B ADD R2 R2 K4
+ 0x00080506, // 004B ADD R2 R2 K6
0x14140403, // 004C LT R5 R2 R3
0x7816002C, // 004D JMPF R5 #007B
- 0x8C140301, // 004E GETMET R5 R1 K1
- 0x001C0502, // 004F ADD R7 R2 K2
- 0x58200002, // 0050 LDCONST R8 K2
+ 0x8C140304, // 004E GETMET R5 R1 K4
+ 0x001C0505, // 004F ADD R7 R2 K5
+ 0x58200005, // 0050 LDCONST R8 K5
0x7C140600, // 0051 CALL R5 3
- 0x8C180301, // 0052 GETMET R6 R1 K1
+ 0x8C180304, // 0052 GETMET R6 R1 K4
0x5C200400, // 0053 MOVE R8 R2
- 0x58240002, // 0054 LDCONST R9 K2
+ 0x58240005, // 0054 LDCONST R9 K5
0x7C180600, // 0055 CALL R6 3
0x541E0023, // 0056 LDINT R7 36
0x1C1C0C07, // 0057 EQ R7 R6 R7
0x781E0006, // 0058 JMPF R7 #0060
- 0x8C1C0301, // 0059 GETMET R7 R1 K1
- 0x00240504, // 005A ADD R9 R2 K4
- 0x58280002, // 005B LDCONST R10 K2
+ 0x8C1C0304, // 0059 GETMET R7 R1 K4
+ 0x00240506, // 005A ADD R9 R2 K6
+ 0x58280005, // 005B LDCONST R10 K5
0x7C1C0600, // 005C CALL R7 3
0x5C100E00, // 005D MOVE R4 R7
- 0x00080505, // 005E ADD R2 R2 K5
+ 0x00080507, // 005E ADD R2 R2 K7
0x7002000B, // 005F JMP #006C
0x541E0024, // 0060 LDINT R7 37
0x1C1C0C07, // 0061 EQ R7 R6 R7
0x781E0007, // 0062 JMPF R7 #006B
- 0x8C1C0301, // 0063 GETMET R7 R1 K1
- 0x00240504, // 0064 ADD R9 R2 K4
- 0x58280004, // 0065 LDCONST R10 K4
+ 0x8C1C0304, // 0063 GETMET R7 R1 K4
+ 0x00240506, // 0064 ADD R9 R2 K6
+ 0x58280006, // 0065 LDCONST R10 K6
0x7C1C0600, // 0066 CALL R7 3
0x5C100E00, // 0067 MOVE R4 R7
0x541E0003, // 0068 LDINT R7 4
0x00080407, // 0069 ADD R2 R2 R7
0x70020000, // 006A JMP #006C
0x7002000E, // 006B JMP #007B
- 0x1C1C0B06, // 006C EQ R7 R5 K6
+ 0x1C1C0B08, // 006C EQ R7 R5 K8
0x781E0001, // 006D JMPF R7 #0070
- 0x90020E04, // 006E SETMBR R0 K7 R4
+ 0x90021204, // 006E SETMBR R0 K9 R4
0x70020009, // 006F JMP #007A
- 0x1C1C0B02, // 0070 EQ R7 R5 K2
+ 0x1C1C0B05, // 0070 EQ R7 R5 K5
0x781E0001, // 0071 JMPF R7 #0074
- 0x90021004, // 0072 SETMBR R0 K8 R4
+ 0x90021404, // 0072 SETMBR R0 K10 R4
0x70020005, // 0073 JMP #007A
- 0x1C1C0B04, // 0074 EQ R7 R5 K4
+ 0x1C1C0B06, // 0074 EQ R7 R5 K6
0x781E0001, // 0075 JMPF R7 #0078
- 0x90021204, // 0076 SETMBR R0 K9 R4
+ 0x90021604, // 0076 SETMBR R0 K11 R4
0x70020001, // 0077 JMP #007A
0x4C1C0000, // 0078 LDNIL R7
0x80040E00, // 0079 RET 1 R7
0x7001FFD0, // 007A JMP #004C
- 0x8C140301, // 007B GETMET R5 R1 K1
+ 0x8C140304, // 007B GETMET R5 R1 K4
0x5C1C0400, // 007C MOVE R7 R2
- 0x58200002, // 007D LDCONST R8 K2
+ 0x58200005, // 007D LDCONST R8 K5
0x7C140600, // 007E CALL R5 3
0x541A0017, // 007F LDINT R6 24
0x20140A06, // 0080 NE R5 R5 R6
0x78160001, // 0081 JMPF R5 #0084
0x4C140000, // 0082 LDNIL R5
0x80040A00, // 0083 RET 1 R5
- 0x00080502, // 0084 ADD R2 R2 K2
- 0x8C140301, // 0085 GETMET R5 R1 K1
+ 0x00080505, // 0084 ADD R2 R2 K5
+ 0x8C140304, // 0085 GETMET R5 R1 K4
0x5C1C0400, // 0086 MOVE R7 R2
0x5421FFFD, // 0087 LDINT R8 -2
0x7C140600, // 0088 CALL R5 3
@@ -4152,16 +3502,16 @@ be_local_closure(class_Matter_InvokeRequestMessage_solo_from_raw, /* name */
0x78160001, // 008B JMPF R5 #008E
0x4C140000, // 008C LDNIL R5
0x80040A00, // 008D RET 1 R5
- 0xB8161600, // 008E GETNGBL R5 K11
- 0x88140B0C, // 008F GETMBR R5 R5 K12
- 0x8C140B0D, // 0090 GETMET R5 R5 K13
+ 0xB8161800, // 008E GETNGBL R5 K12
+ 0x88140B0D, // 008F GETMBR R5 R5 K13
+ 0x8C140B0E, // 0090 GETMET R5 R5 K14
0x5C1C0200, // 0091 MOVE R7 R1
0x5C200400, // 0092 MOVE R8 R2
0x7C140600, // 0093 CALL R5 3
- 0x90021405, // 0094 SETMBR R0 K10 R5
- 0x8814010A, // 0095 GETMBR R5 R0 K10
- 0x88080B0E, // 0096 GETMBR R2 R5 K14
- 0x8C180301, // 0097 GETMET R6 R1 K1
+ 0x90020605, // 0094 SETMBR R0 K3 R5
+ 0x88140103, // 0095 GETMBR R5 R0 K3
+ 0x88080B0F, // 0096 GETMBR R2 R5 K15
+ 0x8C180304, // 0097 GETMET R6 R1 K4
0x5C200400, // 0098 MOVE R8 R2
0x5425FFFD, // 0099 LDINT R9 -2
0x7C180600, // 009A CALL R6 3
@@ -4170,12 +3520,12 @@ be_local_closure(class_Matter_InvokeRequestMessage_solo_from_raw, /* name */
0x781A0001, // 009D JMPF R6 #00A0
0x4C180000, // 009E LDNIL R6
0x80040C00, // 009F RET 1 R6
- 0x00080504, // 00A0 ADD R2 R2 K4
- 0x8C140301, // 00A1 GETMET R5 R1 K1
+ 0x00080506, // 00A0 ADD R2 R2 K6
+ 0x8C140304, // 00A1 GETMET R5 R1 K4
0x5C1C0400, // 00A2 MOVE R7 R2
0x5421FFFB, // 00A3 LDINT R8 -4
0x7C140600, // 00A4 CALL R5 3
- 0x20140B0F, // 00A5 NE R5 R5 K15
+ 0x20140B10, // 00A5 NE R5 R5 K16
0x78160001, // 00A6 JMPF R5 #00A9
0x4C140000, // 00A7 LDNIL R5
0x80040A00, // 00A8 RET 1 R5
@@ -4209,7 +3559,6 @@ extern const bclass be_class_Matter_InvokeResponseMessage;
/********************************************************************
** Solidified function: to_TLV
********************************************************************/
-extern const bclass be_class_Matter_InvokeResponseMessage;
be_local_closure(class_Matter_InvokeResponseMessage_to_TLV, /* name */
be_nested_proto(
8, /* nstack */
@@ -4218,7 +3567,7 @@ be_local_closure(class_Matter_InvokeResponseMessage_to_TLV, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_InvokeResponseMessage,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[12]) { /* constants */
/* K0 */ be_nested_str_weak(matter),
@@ -4263,57 +3612,6 @@ be_local_closure(class_Matter_InvokeResponseMessage_to_TLV, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: from_TLV
-********************************************************************/
-extern const bclass be_class_Matter_InvokeResponseMessage;
-be_local_closure(class_Matter_InvokeResponseMessage_from_TLV, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_InvokeResponseMessage,
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(suppress_response),
- /* K1 */ be_nested_str_weak(findsubval),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(invoke_responses),
- /* K4 */ be_nested_str_weak(from_TLV_array),
- /* K5 */ be_const_int(1),
- /* K6 */ be_nested_str_weak(matter),
- /* K7 */ be_nested_str_weak(InvokeResponseIB),
- }),
- be_str_weak(from_TLV),
- &be_const_str_solidified,
- ( &(const binstruction[18]) { /* code */
- 0x4C080000, // 0000 LDNIL R2
- 0x1C080202, // 0001 EQ R2 R1 R2
- 0x780A0001, // 0002 JMPF R2 #0005
- 0x4C080000, // 0003 LDNIL R2
- 0x80040400, // 0004 RET 1 R2
- 0x8C080301, // 0005 GETMET R2 R1 K1
- 0x58100002, // 0006 LDCONST R4 K2
- 0x7C080400, // 0007 CALL R2 2
- 0x90020002, // 0008 SETMBR R0 K0 R2
- 0x8C080104, // 0009 GETMET R2 R0 K4
- 0x8C100301, // 000A GETMET R4 R1 K1
- 0x58180005, // 000B LDCONST R6 K5
- 0x7C100400, // 000C CALL R4 2
- 0xB8160C00, // 000D GETNGBL R5 K6
- 0x88140B07, // 000E GETMBR R5 R5 K7
- 0x7C080600, // 000F CALL R2 3
- 0x90020602, // 0010 SETMBR R0 K3 R2
- 0x80040000, // 0011 RET 1 R0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified class: Matter_InvokeResponseMessage
********************************************************************/
@@ -4321,12 +3619,11 @@ extern const bclass be_class_Matter_IM_Message_base;
be_local_class(Matter_InvokeResponseMessage,
2,
&be_class_Matter_IM_Message_base,
- be_nested_map(4,
+ be_nested_map(3,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(suppress_response, 3), be_const_var(0) },
+ { be_const_key_weak(suppress_response, -1), be_const_var(0) },
{ be_const_key_weak(to_TLV, -1), be_const_closure(class_Matter_InvokeResponseMessage_to_TLV_closure) },
{ be_const_key_weak(invoke_responses, -1), be_const_var(1) },
- { be_const_key_weak(from_TLV, -1), be_const_closure(class_Matter_InvokeResponseMessage_from_TLV_closure) },
})),
be_str_weak(Matter_InvokeResponseMessage)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h
index 95e1edc55..5e6fbfda6 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Message.h
@@ -3,30 +3,108 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_IM_Message' ktab size: 28, total: 48 (saved 160 bytes)
+static const bvalue be_ktab_class_Matter_IM_Message[28] = {
+ /* K0 */ be_nested_str_weak(resp),
+ /* K1 */ be_nested_str_weak(build_response),
+ /* K2 */ be_nested_str_weak(ready),
+ /* K3 */ be_nested_str_weak(expiration),
+ /* K4 */ be_nested_str_weak(tasmota),
+ /* K5 */ be_nested_str_weak(millis),
+ /* K6 */ be_nested_str_weak(MSG_TIMEOUT),
+ /* K7 */ be_nested_str_weak(last_counter),
+ /* K8 */ be_const_int(0),
+ /* K9 */ be_nested_str_weak(finishing),
+ /* K10 */ be_nested_str_weak(finished),
+ /* K11 */ be_nested_str_weak(data),
+ /* K12 */ be_nested_str_weak(reset),
+ /* K13 */ be_nested_str_weak(to_TLV),
+ /* K14 */ be_nested_str_weak(tlv2raw),
+ /* K15 */ be_nested_str_weak(encode_frame),
+ /* K16 */ be_nested_str_weak(encrypt),
+ /* K17 */ be_nested_str_weak(loglevel),
+ /* K18 */ be_nested_str_weak(log),
+ /* K19 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25s_X20exch_X3D_X25s_X20rack_X3D_X25s),
+ /* K20 */ be_nested_str_weak(session),
+ /* K21 */ be_nested_str_weak(local_session_id),
+ /* K22 */ be_nested_str_weak(message_counter),
+ /* K23 */ be_nested_str_weak(exchange_id),
+ /* K24 */ be_nested_str_weak(ack_message_counter),
+ /* K25 */ be_nested_str_weak(send_response_frame),
+ /* K26 */ be_nested_str_weak(opcode),
+ /* K27 */ be_nested_str_weak(x_flag_r),
+};
+
extern const bclass be_class_Matter_IM_Message;
+/********************************************************************
+** Solidified function: reset
+********************************************************************/
+be_local_closure(class_Matter_IM_Message_reset, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM_Message, /* shared constants */
+ be_str_weak(reset),
+ &be_const_str_solidified,
+ ( &(const binstruction[26]) { /* code */
+ 0x4C100000, // 0000 LDNIL R4
+ 0x20100204, // 0001 NE R4 R1 R4
+ 0x78120004, // 0002 JMPF R4 #0008
+ 0x8C100301, // 0003 GETMET R4 R1 K1
+ 0x5C180400, // 0004 MOVE R6 R2
+ 0x5C1C0600, // 0005 MOVE R7 R3
+ 0x7C100600, // 0006 CALL R4 3
+ 0x70020000, // 0007 JMP #0009
+ 0x4C100000, // 0008 LDNIL R4
+ 0x90020004, // 0009 SETMBR R0 K0 R4
+ 0x50100200, // 000A LDBOOL R4 1 0
+ 0x90020404, // 000B SETMBR R0 K2 R4
+ 0xB8120800, // 000C GETNGBL R4 K4
+ 0x8C100905, // 000D GETMET R4 R4 K5
+ 0x7C100200, // 000E CALL R4 1
+ 0x88140106, // 000F GETMBR R5 R0 K6
+ 0x00100805, // 0010 ADD R4 R4 R5
+ 0x90020604, // 0011 SETMBR R0 K3 R4
+ 0x90020F08, // 0012 SETMBR R0 K7 K8
+ 0x50100000, // 0013 LDBOOL R4 0 0
+ 0x90021204, // 0014 SETMBR R0 K9 R4
+ 0x50100000, // 0015 LDBOOL R4 0 0
+ 0x90021404, // 0016 SETMBR R0 K10 R4
+ 0x4C100000, // 0017 LDNIL R4
+ 0x90021604, // 0018 SETMBR R0 K11 R4
+ 0x80000000, // 0019 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_IM_Message;
be_local_closure(class_Matter_IM_Message_init, /* name */
be_nested_proto(
9, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_Message,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(reset),
- }),
+ &be_ktab_class_Matter_IM_Message, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x8C100100, // 0000 GETMET R4 R0 K0
+ 0x8C10010C, // 0000 GETMET R4 R0 K12
0x5C180200, // 0001 MOVE R6 R1
0x5C1C0400, // 0002 MOVE R7 R2
0x5C200600, // 0003 MOVE R8 R3
@@ -38,114 +116,58 @@ be_local_closure(class_Matter_IM_Message_init, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: get_exchangeid
-********************************************************************/
-extern const bclass be_class_Matter_IM_Message;
-be_local_closure(class_Matter_IM_Message_get_exchangeid, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_IM_Message,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(resp),
- /* K1 */ be_nested_str_weak(exchange_id),
- }),
- be_str_weak(get_exchangeid),
- &be_const_str_solidified,
- ( &(const binstruction[ 3]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x80040200, // 0002 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: send_im
********************************************************************/
-extern const bclass be_class_Matter_IM_Message;
be_local_closure(class_Matter_IM_Message_send_im, /* name */
be_nested_proto(
- 13, /* nstack */
+ 11, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_Message,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[19]) { /* constants */
- /* K0 */ be_nested_str_weak(ready),
- /* K1 */ be_nested_str_weak(resp),
- /* K2 */ be_nested_str_weak(data),
- /* K3 */ be_nested_str_weak(to_TLV),
- /* K4 */ be_nested_str_weak(tlv2raw),
- /* K5 */ be_nested_str_weak(encode_frame),
- /* K6 */ be_nested_str_weak(encrypt),
- /* K7 */ be_nested_str_weak(tasmota),
- /* K8 */ be_nested_str_weak(loglevel),
- /* K9 */ be_nested_str_weak(log),
- /* K10 */ be_nested_str_weak(MTR_X3A_X20_X3Csnd_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20id_X3D_X25i_X20exch_X3D_X25i_X20rack_X3D_X25s),
- /* K11 */ be_nested_str_weak(session),
- /* K12 */ be_nested_str_weak(local_session_id),
- /* K13 */ be_nested_str_weak(message_counter),
- /* K14 */ be_nested_str_weak(exchange_id),
- /* K15 */ be_nested_str_weak(ack_message_counter),
- /* K16 */ be_nested_str_weak(send_response_frame),
- /* K17 */ be_nested_str_weak(last_counter),
- /* K18 */ be_nested_str_weak(finish),
- }),
+ &be_ktab_class_Matter_IM_Message, /* shared constants */
be_str_weak(send_im),
&be_const_str_solidified,
- ( &(const binstruction[40]) { /* code */
+ ( &(const binstruction[35]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
- 0x740A0001, // 0001 JMPT R2 #0004
- 0x50080000, // 0002 LDBOOL R2 0 0
- 0x80040400, // 0003 RET 1 R2
- 0x88080101, // 0004 GETMBR R2 R0 K1
- 0x880C0102, // 0005 GETMBR R3 R0 K2
- 0x8C0C0703, // 0006 GETMET R3 R3 K3
- 0x7C0C0200, // 0007 CALL R3 1
- 0x8C100704, // 0008 GETMET R4 R3 K4
- 0x7C100200, // 0009 CALL R4 1
- 0x8C140505, // 000A GETMET R5 R2 K5
- 0x5C1C0800, // 000B MOVE R7 R4
- 0x7C140400, // 000C CALL R5 2
- 0x8C140506, // 000D GETMET R5 R2 K6
- 0x7C140200, // 000E CALL R5 1
- 0xB8160E00, // 000F GETNGBL R5 K7
- 0x8C140B08, // 0010 GETMET R5 R5 K8
- 0x541E0003, // 0011 LDINT R7 4
- 0x7C140400, // 0012 CALL R5 2
- 0x7816000B, // 0013 JMPF R5 #0020
- 0xB8160E00, // 0014 GETNGBL R5 K7
- 0x8C140B09, // 0015 GETMET R5 R5 K9
- 0x601C0018, // 0016 GETGBL R7 G24
- 0x5820000A, // 0017 LDCONST R8 K10
- 0x8824050B, // 0018 GETMBR R9 R2 K11
- 0x8824130C, // 0019 GETMBR R9 R9 K12
- 0x8828050D, // 001A GETMBR R10 R2 K13
- 0x882C050E, // 001B GETMBR R11 R2 K14
- 0x8830050F, // 001C GETMBR R12 R2 K15
- 0x7C1C0A00, // 001D CALL R7 5
- 0x54220003, // 001E LDINT R8 4
- 0x7C140600, // 001F CALL R5 3
- 0x8C140310, // 0020 GETMET R5 R1 K16
- 0x5C1C0400, // 0021 MOVE R7 R2
- 0x7C140400, // 0022 CALL R5 2
- 0x8814050D, // 0023 GETMBR R5 R2 K13
- 0x90022205, // 0024 SETMBR R0 K17 R5
- 0x50140200, // 0025 LDBOOL R5 1 0
- 0x90022405, // 0026 SETMBR R0 K18 R5
- 0x80000000, // 0027 RET 0
+ 0x880C010B, // 0001 GETMBR R3 R0 K11
+ 0x8C0C070D, // 0002 GETMET R3 R3 K13
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x8C0C070E, // 0004 GETMET R3 R3 K14
+ 0x7C0C0200, // 0005 CALL R3 1
+ 0x8C10050F, // 0006 GETMET R4 R2 K15
+ 0x5C180600, // 0007 MOVE R6 R3
+ 0x7C100400, // 0008 CALL R4 2
+ 0x8C100510, // 0009 GETMET R4 R2 K16
+ 0x7C100200, // 000A CALL R4 1
+ 0xB8120800, // 000B GETNGBL R4 K4
+ 0x8C100911, // 000C GETMET R4 R4 K17
+ 0x541A0003, // 000D LDINT R6 4
+ 0x7C100400, // 000E CALL R4 2
+ 0x7812000A, // 000F JMPF R4 #001B
+ 0xB8122400, // 0010 GETNGBL R4 K18
+ 0x60140018, // 0011 GETGBL R5 G24
+ 0x58180013, // 0012 LDCONST R6 K19
+ 0x881C0514, // 0013 GETMBR R7 R2 K20
+ 0x881C0F15, // 0014 GETMBR R7 R7 K21
+ 0x88200516, // 0015 GETMBR R8 R2 K22
+ 0x88240517, // 0016 GETMBR R9 R2 K23
+ 0x88280518, // 0017 GETMBR R10 R2 K24
+ 0x7C140A00, // 0018 CALL R5 5
+ 0x541A0003, // 0019 LDINT R6 4
+ 0x7C100400, // 001A CALL R4 2
+ 0x8C100319, // 001B GETMET R4 R1 K25
+ 0x5C180400, // 001C MOVE R6 R2
+ 0x7C100400, // 001D CALL R4 2
+ 0x88100516, // 001E GETMBR R4 R2 K22
+ 0x90020E04, // 001F SETMBR R0 K7 R4
+ 0x50100200, // 0020 LDBOOL R4 1 0
+ 0x90021204, // 0021 SETMBR R0 K9 R4
+ 0x80000000, // 0022 RET 0
})
)
);
@@ -155,18 +177,17 @@ be_local_closure(class_Matter_IM_Message_send_im, /* name */
/********************************************************************
** Solidified function: status_error_received
********************************************************************/
-extern const bclass be_class_Matter_IM_Message;
be_local_closure(class_Matter_IM_Message_status_error_received, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_Message,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM_Message, /* shared constants */
be_str_weak(status_error_received),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -178,54 +199,61 @@ be_local_closure(class_Matter_IM_Message_status_error_received, /* name */
/********************************************************************
-** Solidified function: reset
+** Solidified function: get_exchangeid
********************************************************************/
-extern const bclass be_class_Matter_IM_Message;
-be_local_closure(class_Matter_IM_Message_reset, /* name */
+be_local_closure(class_Matter_IM_Message_get_exchangeid, /* name */
be_nested_proto(
- 8, /* nstack */
- 4, /* argc */
- 2, /* varg */
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_Message,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(resp),
- /* K1 */ be_nested_str_weak(build_response),
- /* K2 */ be_nested_str_weak(ready),
- /* K3 */ be_nested_str_weak(expiration),
- /* K4 */ be_nested_str_weak(tasmota),
- /* K5 */ be_nested_str_weak(millis),
- /* K6 */ be_nested_str_weak(MSG_TIMEOUT),
- /* K7 */ be_nested_str_weak(last_counter),
- /* K8 */ be_const_int(0),
- /* K9 */ be_nested_str_weak(finish),
- /* K10 */ be_nested_str_weak(data),
- }),
- be_str_weak(reset),
+ &be_ktab_class_Matter_IM_Message, /* shared constants */
+ be_str_weak(get_exchangeid),
&be_const_str_solidified,
- ( &(const binstruction[19]) { /* code */
- 0x8C100301, // 0000 GETMET R4 R1 K1
- 0x5C180400, // 0001 MOVE R6 R2
- 0x5C1C0600, // 0002 MOVE R7 R3
- 0x7C100600, // 0003 CALL R4 3
- 0x90020004, // 0004 SETMBR R0 K0 R4
- 0x50100200, // 0005 LDBOOL R4 1 0
- 0x90020404, // 0006 SETMBR R0 K2 R4
- 0xB8120800, // 0007 GETNGBL R4 K4
- 0x8C100905, // 0008 GETMET R4 R4 K5
- 0x7C100200, // 0009 CALL R4 1
- 0x88140106, // 000A GETMBR R5 R0 K6
- 0x00100805, // 000B ADD R4 R4 R5
- 0x90020604, // 000C SETMBR R0 K3 R4
- 0x90020F08, // 000D SETMBR R0 K7 K8
- 0x50100000, // 000E LDBOOL R4 0 0
- 0x90021204, // 000F SETMBR R0 K9 R4
- 0x4C100000, // 0010 LDNIL R4
- 0x90021404, // 0011 SETMBR R0 K10 R4
- 0x80000000, // 0012 RET 0
+ ( &(const binstruction[ 3]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040317, // 0001 GETMBR R1 R1 K23
+ 0x80040200, // 0002 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: ack_received
+********************************************************************/
+be_local_closure(class_Matter_IM_Message_ack_received, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM_Message, /* shared constants */
+ be_str_weak(ack_received),
+ &be_const_str_solidified,
+ ( &(const binstruction[13]) { /* code */
+ 0x88080109, // 0000 GETMBR R2 R0 K9
+ 0x780A0002, // 0001 JMPF R2 #0005
+ 0x50080200, // 0002 LDBOOL R2 1 0
+ 0x90021402, // 0003 SETMBR R0 K10 R2
+ 0x70020005, // 0004 JMP #000B
+ 0xB80A0800, // 0005 GETNGBL R2 K4
+ 0x8C080505, // 0006 GETMET R2 R2 K5
+ 0x7C080200, // 0007 CALL R2 1
+ 0x880C0106, // 0008 GETMBR R3 R0 K6
+ 0x00080403, // 0009 ADD R2 R2 R3
+ 0x90020602, // 000A SETMBR R0 K3 R2
+ 0x50080000, // 000B LDBOOL R2 0 0
+ 0x80040400, // 000C RET 1 R2
})
)
);
@@ -235,18 +263,17 @@ be_local_closure(class_Matter_IM_Message_reset, /* name */
/********************************************************************
** Solidified function: reached_timeout
********************************************************************/
-extern const bclass be_class_Matter_IM_Message;
be_local_closure(class_Matter_IM_Message_reached_timeout, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_Message,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM_Message, /* shared constants */
be_str_weak(reached_timeout),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -260,48 +287,37 @@ be_local_closure(class_Matter_IM_Message_reached_timeout, /* name */
/********************************************************************
** Solidified function: status_ok_received
********************************************************************/
-extern const bclass be_class_Matter_IM_Message;
be_local_closure(class_Matter_IM_Message_status_ok_received, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_Message,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(expiration),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(millis),
- /* K3 */ be_nested_str_weak(MSG_TIMEOUT),
- /* K4 */ be_nested_str_weak(resp),
- /* K5 */ be_nested_str_weak(build_response),
- /* K6 */ be_nested_str_weak(opcode),
- /* K7 */ be_nested_str_weak(x_flag_r),
- /* K8 */ be_nested_str_weak(ready),
- }),
+ &be_ktab_class_Matter_IM_Message, /* shared constants */
be_str_weak(status_ok_received),
&be_const_str_solidified,
( &(const binstruction[19]) { /* code */
- 0xB80A0200, // 0000 GETNGBL R2 K1
- 0x8C080502, // 0001 GETMET R2 R2 K2
+ 0xB80A0800, // 0000 GETNGBL R2 K4
+ 0x8C080505, // 0001 GETMET R2 R2 K5
0x7C080200, // 0002 CALL R2 1
- 0x880C0103, // 0003 GETMBR R3 R0 K3
+ 0x880C0106, // 0003 GETMBR R3 R0 K6
0x00080403, // 0004 ADD R2 R2 R3
- 0x90020002, // 0005 SETMBR R0 K0 R2
+ 0x90020602, // 0005 SETMBR R0 K3 R2
0x78060007, // 0006 JMPF R1 #000F
- 0x8C080305, // 0007 GETMET R2 R1 K5
- 0x88100104, // 0008 GETMBR R4 R0 K4
- 0x88100906, // 0009 GETMBR R4 R4 K6
- 0x88140104, // 000A GETMBR R5 R0 K4
- 0x88140B07, // 000B GETMBR R5 R5 K7
- 0x88180104, // 000C GETMBR R6 R0 K4
+ 0x8C080301, // 0007 GETMET R2 R1 K1
+ 0x88100100, // 0008 GETMBR R4 R0 K0
+ 0x8810091A, // 0009 GETMBR R4 R4 K26
+ 0x88140100, // 000A GETMBR R5 R0 K0
+ 0x88140B1B, // 000B GETMBR R5 R5 K27
+ 0x88180100, // 000C GETMBR R6 R0 K0
0x7C080800, // 000D CALL R2 4
- 0x90020802, // 000E SETMBR R0 K4 R2
+ 0x90020002, // 000E SETMBR R0 K0 R2
0x50080200, // 000F LDBOOL R2 1 0
- 0x90021002, // 0010 SETMBR R0 K8 R2
+ 0x90020402, // 0010 SETMBR R0 K2 R2
0x50080200, // 0011 LDBOOL R2 1 0
0x80040400, // 0012 RET 1 R2
})
@@ -310,66 +326,30 @@ be_local_closure(class_Matter_IM_Message_status_ok_received, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: ack_received
-********************************************************************/
-extern const bclass be_class_Matter_IM_Message;
-be_local_closure(class_Matter_IM_Message_ack_received, /* name */
- be_nested_proto(
- 4, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_IM_Message,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(expiration),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(millis),
- /* K3 */ be_nested_str_weak(MSG_TIMEOUT),
- }),
- be_str_weak(ack_received),
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0xB80A0200, // 0000 GETNGBL R2 K1
- 0x8C080502, // 0001 GETMET R2 R2 K2
- 0x7C080200, // 0002 CALL R2 1
- 0x880C0103, // 0003 GETMBR R3 R0 K3
- 0x00080403, // 0004 ADD R2 R2 R3
- 0x90020002, // 0005 SETMBR R0 K0 R2
- 0x50080000, // 0006 LDBOOL R2 0 0
- 0x80040400, // 0007 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified class: Matter_IM_Message
********************************************************************/
be_local_class(Matter_IM_Message,
- 6,
+ 7,
NULL,
- be_nested_map(15,
+ be_nested_map(16,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(init, 11), be_const_closure(class_Matter_IM_Message_init_closure) },
- { be_const_key_weak(get_exchangeid, 10), be_const_closure(class_Matter_IM_Message_get_exchangeid_closure) },
- { be_const_key_weak(reset, -1), be_const_closure(class_Matter_IM_Message_reset_closure) },
- { be_const_key_weak(send_im, -1), be_const_closure(class_Matter_IM_Message_send_im_closure) },
- { be_const_key_weak(status_error_received, -1), be_const_closure(class_Matter_IM_Message_status_error_received_closure) },
- { be_const_key_weak(finish, -1), be_const_var(3) },
- { be_const_key_weak(status_ok_received, 2), be_const_closure(class_Matter_IM_Message_status_ok_received_closure) },
- { be_const_key_weak(last_counter, -1), be_const_var(5) },
+ { be_const_key_weak(reset, 6), be_const_closure(class_Matter_IM_Message_reset_closure) },
+ { be_const_key_weak(last_counter, -1), be_const_var(6) },
+ { be_const_key_weak(send_im, 1), be_const_closure(class_Matter_IM_Message_send_im_closure) },
+ { be_const_key_weak(init, 15), be_const_closure(class_Matter_IM_Message_init_closure) },
+ { be_const_key_weak(status_error_received, 13), be_const_closure(class_Matter_IM_Message_status_error_received_closure) },
+ { be_const_key_weak(data, 9), be_const_var(5) },
+ { be_const_key_weak(get_exchangeid, -1), be_const_closure(class_Matter_IM_Message_get_exchangeid_closure) },
+ { be_const_key_weak(status_ok_received, 12), be_const_closure(class_Matter_IM_Message_status_ok_received_closure) },
+ { be_const_key_weak(ack_received, 7), be_const_closure(class_Matter_IM_Message_ack_received_closure) },
{ be_const_key_weak(reached_timeout, -1), be_const_closure(class_Matter_IM_Message_reached_timeout_closure) },
+ { be_const_key_weak(MSG_TIMEOUT, -1), be_const_int(5000) },
{ be_const_key_weak(resp, -1), be_const_var(1) },
- { be_const_key_weak(data, -1), be_const_var(4) },
{ be_const_key_weak(expiration, -1), be_const_var(0) },
- { be_const_key_weak(ready, 6), be_const_var(2) },
- { be_const_key_weak(MSG_TIMEOUT, 5), be_const_int(5000) },
- { be_const_key_weak(ack_received, -1), be_const_closure(class_Matter_IM_Message_ack_received_closure) },
+ { be_const_key_weak(ready, -1), be_const_var(2) },
+ { be_const_key_weak(finishing, -1), be_const_var(3) },
+ { be_const_key_weak(finished, -1), be_const_var(4) },
})),
be_str_weak(Matter_IM_Message)
);
@@ -379,7 +359,6 @@ extern const bclass be_class_Matter_IM_Status;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_IM_Status;
be_local_closure(class_Matter_IM_Status_init, /* name */
be_nested_proto(
8, /* nstack */
@@ -388,7 +367,7 @@ be_local_closure(class_Matter_IM_Status_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_Status,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 6]) { /* constants */
/* K0 */ be_nested_str_weak(init),
@@ -440,7 +419,6 @@ extern const bclass be_class_Matter_IM_InvokeResponse;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_IM_InvokeResponse;
be_local_closure(class_Matter_IM_InvokeResponse_init, /* name */
be_nested_proto(
8, /* nstack */
@@ -449,7 +427,7 @@ be_local_closure(class_Matter_IM_InvokeResponse_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_InvokeResponse,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(init),
@@ -493,7 +471,6 @@ extern const bclass be_class_Matter_IM_WriteResponse;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_IM_WriteResponse;
be_local_closure(class_Matter_IM_WriteResponse_init, /* name */
be_nested_proto(
8, /* nstack */
@@ -502,7 +479,7 @@ be_local_closure(class_Matter_IM_WriteResponse_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_WriteResponse,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(init),
@@ -540,112 +517,531 @@ be_local_class(Matter_IM_WriteResponse,
})),
be_str_weak(Matter_IM_WriteResponse)
);
+// compact class 'Matter_IM_ReportData_Pull' ktab size: 51, total: 57 (saved 48 bytes)
+static const bvalue be_ktab_class_Matter_IM_ReportData_Pull[51] = {
+ /* K0 */ be_nested_str_weak(resp),
+ /* K1 */ be_nested_str_weak(data),
+ /* K2 */ be_nested_str_weak(device),
+ /* K3 */ be_nested_str_weak(debug),
+ /* K4 */ be_nested_str_weak(data_ev),
+ /* K5 */ be_nested_str_weak(event_generator_or_arr),
+ /* K6 */ be_nested_str_weak(generator_or_arr),
+ /* K7 */ be_const_int(0),
+ /* K8 */ be_nested_str_weak(next_attribute),
+ /* K9 */ be_nested_str_weak(is_direct),
+ /* K10 */ be_nested_str_weak(im),
+ /* K11 */ be_nested_str_weak(read_single_attribute_to_bytes),
+ /* K12 */ be_nested_str_weak(get_pi),
+ /* K13 */ be_nested_str_weak(session),
+ /* K14 */ be_nested_str_weak(MAX_MESSAGE),
+ /* K15 */ be_nested_str_weak(append),
+ /* K16 */ be_nested_str_weak(remove),
+ /* K17 */ be_nested_str_weak(next_event),
+ /* K18 */ be_nested_str_weak(tasmota),
+ /* K19 */ be_nested_str_weak(loglevel),
+ /* K20 */ be_const_int(3),
+ /* K21 */ be_nested_str_weak(),
+ /* K22 */ be_nested_str_weak(data0),
+ /* K23 */ be_nested_str_weak(_X20_X2D_X20),
+ /* K24 */ be_nested_str_weak(data1),
+ /* K25 */ be_nested_str_weak(_X2C_X20),
+ /* K26 */ be_nested_str_weak(data2),
+ /* K27 */ be_nested_str_weak(log),
+ /* K28 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Event_X28_X256i_X7C_X258s_X29_X20_X5B_X2502X_X5D_X2504X_X2F_X2502X_X25s),
+ /* K29 */ be_nested_str_weak(local_session_id),
+ /* K30 */ be_nested_str_weak(event_no),
+ /* K31 */ be_nested_str_weak(endpoint),
+ /* K32 */ be_nested_str_weak(cluster),
+ /* K33 */ be_nested_str_weak(event_id),
+ /* K34 */ be_nested_str_weak(to_raw_bytes),
+ /* K35 */ be_nested_str_weak(add),
+ /* K36 */ be_const_int(1),
+ /* K37 */ be_nested_str_weak(subscription_id),
+ /* K38 */ be_const_int(2),
+ /* K39 */ be_nested_str_weak(suppress_response),
+ /* K40 */ be_nested_str_weak(encode_frame),
+ /* K41 */ be_nested_str_weak(encrypt),
+ /* K42 */ be_nested_str_weak(send_response_frame),
+ /* K43 */ be_nested_str_weak(last_counter),
+ /* K44 */ be_nested_str_weak(message_counter),
+ /* K45 */ be_nested_str_weak(ready),
+ /* K46 */ be_nested_str_weak(finishing),
+ /* K47 */ be_nested_str_weak(status_ok_received),
+ /* K48 */ be_nested_str_weak(_message_handler),
+ /* K49 */ be_nested_str_weak(send_encrypted_ack),
+ /* K50 */ be_nested_str_weak(init),
+};
-extern const bclass be_class_Matter_IM_ReportData;
+
+extern const bclass be_class_Matter_IM_ReportData_Pull;
/********************************************************************
** Solidified function: send_im
********************************************************************/
-extern const bclass be_class_Matter_IM_ReportData;
-be_local_closure(class_Matter_IM_ReportData_send_im, /* name */
+be_local_closure(class_Matter_IM_ReportData_Pull_send_im, /* name */
be_nested_proto(
- 12, /* nstack */
+ 19, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_ReportData,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_nested_str_weak(ready),
- /* K1 */ be_nested_str_weak(resp),
- /* K2 */ be_nested_str_weak(data),
- /* K3 */ be_nested_str_weak(more_chunked_messages),
- /* K4 */ be_const_int(1),
- /* K5 */ be_nested_str_weak(attribute_reports),
- /* K6 */ be_const_int(2147483647),
- /* K7 */ be_const_int(0),
- /* K8 */ be_nested_str_weak(to_TLV),
- /* K9 */ be_nested_str_weak(tlv2raw),
- /* K10 */ be_nested_str_weak(MAX_MESSAGE),
- /* K11 */ be_nested_str_weak(encode_frame),
- /* K12 */ be_nested_str_weak(encrypt),
- /* K13 */ be_nested_str_weak(send_response_frame),
- /* K14 */ be_nested_str_weak(last_counter),
- /* K15 */ be_nested_str_weak(message_counter),
- /* K16 */ be_nested_str_weak(finish),
- }),
+ &be_ktab_class_Matter_IM_ReportData_Pull, /* shared constants */
be_str_weak(send_im),
&be_const_str_solidified,
- ( &(const binstruction[67]) { /* code */
+ ( &(const binstruction[361]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
- 0x740A0001, // 0001 JMPT R2 #0004
- 0x50080000, // 0002 LDBOOL R2 0 0
- 0x80040400, // 0003 RET 1 R2
- 0x88080101, // 0004 GETMBR R2 R0 K1
- 0x880C0102, // 0005 GETMBR R3 R0 K2
- 0x88100703, // 0006 GETMBR R4 R3 K3
- 0x58140004, // 0007 LDCONST R5 K4
- 0x4C180000, // 0008 LDNIL R6
- 0x881C0705, // 0009 GETMBR R7 R3 K5
- 0x4C200000, // 000A LDNIL R8
- 0x201C0E08, // 000B NE R7 R7 R8
- 0x781E000D, // 000C JMPF R7 #001B
- 0x401C0B06, // 000D CONNECT R7 R5 K6
- 0x88200705, // 000E GETMBR R8 R3 K5
- 0x94181007, // 000F GETIDX R6 R8 R7
- 0x04240B04, // 0010 SUB R9 R5 K4
- 0x40260E09, // 0011 CONNECT R9 K7 R9
- 0x88280705, // 0012 GETMBR R10 R3 K5
- 0x94241409, // 0013 GETIDX R9 R10 R9
- 0x900E0A09, // 0014 SETMBR R3 K5 R9
- 0x6024000C, // 0015 GETGBL R9 G12
- 0x5C280C00, // 0016 MOVE R10 R6
- 0x7C240200, // 0017 CALL R9 1
- 0x24241307, // 0018 GT R9 R9 K7
- 0x900E0609, // 0019 SETMBR R3 K3 R9
- 0x70020001, // 001A JMP #001D
- 0x501C0000, // 001B LDBOOL R7 0 0
- 0x900E0607, // 001C SETMBR R3 K3 R7
- 0x7811FFFF, // 001D JMPF R4 #001E
- 0x881C0703, // 001E GETMBR R7 R3 K3
- 0x781E0001, // 001F JMPF R7 #0022
- 0x5C1C0800, // 0020 MOVE R7 R4
- 0x741DFFFF, // 0021 JMPT R7 #0022
- 0x881C0102, // 0022 GETMBR R7 R0 K2
- 0x8C1C0F08, // 0023 GETMET R7 R7 K8
- 0x7C1C0200, // 0024 CALL R7 1
- 0x8C200F09, // 0025 GETMET R8 R7 K9
- 0x60280015, // 0026 GETGBL R10 G21
- 0x882C010A, // 0027 GETMBR R11 R0 K10
- 0x7C280200, // 0028 CALL R10 1
- 0x7C200400, // 0029 CALL R8 2
- 0x8C24050B, // 002A GETMET R9 R2 K11
- 0x5C2C1000, // 002B MOVE R11 R8
- 0x7C240400, // 002C CALL R9 2
- 0x8C24050C, // 002D GETMET R9 R2 K12
- 0x7C240200, // 002E CALL R9 1
- 0x8C24030D, // 002F GETMET R9 R1 K13
- 0x5C2C0400, // 0030 MOVE R11 R2
- 0x7C240400, // 0031 CALL R9 2
- 0x8824050F, // 0032 GETMBR R9 R2 K15
- 0x90021C09, // 0033 SETMBR R0 K14 R9
- 0x4C240000, // 0034 LDNIL R9
- 0x20240C09, // 0035 NE R9 R6 R9
- 0x78260008, // 0036 JMPF R9 #0040
- 0x6024000C, // 0037 GETGBL R9 G12
- 0x5C280C00, // 0038 MOVE R10 R6
- 0x7C240200, // 0039 CALL R9 1
- 0x24241307, // 003A GT R9 R9 K7
- 0x78260003, // 003B JMPF R9 #0040
- 0x900E0A06, // 003C SETMBR R3 K5 R6
- 0x50240000, // 003D LDBOOL R9 0 0
- 0x90020009, // 003E SETMBR R0 K0 R9
- 0x70020001, // 003F JMP #0042
- 0x50240200, // 0040 LDBOOL R9 1 0
- 0x90022009, // 0041 SETMBR R0 K16 R9
- 0x80000000, // 0042 RET 0
+ 0x880C0101, // 0001 GETMBR R3 R0 K1
+ 0x4C100000, // 0002 LDNIL R4
+ 0x200C0604, // 0003 NE R3 R3 R4
+ 0x780E0001, // 0004 JMPF R3 #0007
+ 0x880C0101, // 0005 GETMBR R3 R0 K1
+ 0x70020001, // 0006 JMP #0009
+ 0x600C0015, // 0007 GETGBL R3 G21
+ 0x7C0C0000, // 0008 CALL R3 0
+ 0x4C100000, // 0009 LDNIL R4
+ 0x90020204, // 000A SETMBR R0 K1 R4
+ 0x50100200, // 000B LDBOOL R4 1 0
+ 0x88140302, // 000C GETMBR R5 R1 K2
+ 0x88140B03, // 000D GETMBR R5 R5 K3
+ 0x88180104, // 000E GETMBR R6 R0 K4
+ 0x4C1C0000, // 000F LDNIL R7
+ 0x20180C07, // 0010 NE R6 R6 R7
+ 0x781A0001, // 0011 JMPF R6 #0014
+ 0x88180104, // 0012 GETMBR R6 R0 K4
+ 0x70020007, // 0013 JMP #001C
+ 0x88180105, // 0014 GETMBR R6 R0 K5
+ 0x4C1C0000, // 0015 LDNIL R7
+ 0x20180C07, // 0016 NE R6 R6 R7
+ 0x781A0002, // 0017 JMPF R6 #001B
+ 0x60180015, // 0018 GETGBL R6 G21
+ 0x7C180000, // 0019 CALL R6 0
+ 0x70020000, // 001A JMP #001C
+ 0x4C180000, // 001B LDNIL R6
+ 0x7812004A, // 001C JMPF R4 #0068
+ 0x881C0106, // 001D GETMBR R7 R0 K6
+ 0x4C200000, // 001E LDNIL R8
+ 0x201C0E08, // 001F NE R7 R7 R8
+ 0x781E0046, // 0020 JMPF R7 #0068
+ 0x601C000F, // 0021 GETGBL R7 G15
+ 0x88200106, // 0022 GETMBR R8 R0 K6
+ 0x60240012, // 0023 GETGBL R9 G18
+ 0x7C1C0400, // 0024 CALL R7 2
+ 0x781E0002, // 0025 JMPF R7 #0029
+ 0x881C0106, // 0026 GETMBR R7 R0 K6
+ 0x941C0F07, // 0027 GETIDX R7 R7 K7
+ 0x70020000, // 0028 JMP #002A
+ 0x881C0106, // 0029 GETMBR R7 R0 K6
+ 0x4C200000, // 002A LDNIL R8
+ 0x78120026, // 002B JMPF R4 #0053
+ 0x8C240F08, // 002C GETMET R9 R7 K8
+ 0x7C240200, // 002D CALL R9 1
+ 0x5C201200, // 002E MOVE R8 R9
+ 0x78260022, // 002F JMPF R9 #0053
+ 0x8C240F09, // 0030 GETMET R9 R7 K9
+ 0x7C240200, // 0031 CALL R9 1
+ 0x74260001, // 0032 JMPT R9 #0035
+ 0x74160000, // 0033 JMPT R5 #0035
+ 0x50240001, // 0034 LDBOOL R9 0 1
+ 0x50240200, // 0035 LDBOOL R9 1 0
+ 0x8828030A, // 0036 GETMBR R10 R1 K10
+ 0x8C28150B, // 0037 GETMET R10 R10 K11
+ 0x8C300F0C, // 0038 GETMET R12 R7 K12
+ 0x7C300200, // 0039 CALL R12 1
+ 0x5C341000, // 003A MOVE R13 R8
+ 0x8838050D, // 003B GETMBR R14 R2 K13
+ 0x5C3C1200, // 003C MOVE R15 R9
+ 0x7C280A00, // 003D CALL R10 5
+ 0x4C2C0000, // 003E LDNIL R11
+ 0x1C2C140B, // 003F EQ R11 R10 R11
+ 0x782E0000, // 0040 JMPF R11 #0042
+ 0x7001FFE8, // 0041 JMP #002B
+ 0x602C000C, // 0042 GETGBL R11 G12
+ 0x5C300600, // 0043 MOVE R12 R3
+ 0x7C2C0200, // 0044 CALL R11 1
+ 0x6030000C, // 0045 GETGBL R12 G12
+ 0x5C341400, // 0046 MOVE R13 R10
+ 0x7C300200, // 0047 CALL R12 1
+ 0x002C160C, // 0048 ADD R11 R11 R12
+ 0x8830010E, // 0049 GETMBR R12 R0 K14
+ 0x242C160C, // 004A GT R11 R11 R12
+ 0x782E0002, // 004B JMPF R11 #004F
+ 0x9002020A, // 004C SETMBR R0 K1 R10
+ 0x50100000, // 004D LDBOOL R4 0 0
+ 0x70020002, // 004E JMP #0052
+ 0x8C2C070F, // 004F GETMET R11 R3 K15
+ 0x5C341400, // 0050 MOVE R13 R10
+ 0x7C2C0400, // 0051 CALL R11 2
+ 0x7001FFD7, // 0052 JMP #002B
+ 0x78120012, // 0053 JMPF R4 #0067
+ 0x6024000F, // 0054 GETGBL R9 G15
+ 0x88280106, // 0055 GETMBR R10 R0 K6
+ 0x602C0012, // 0056 GETGBL R11 G18
+ 0x7C240400, // 0057 CALL R9 2
+ 0x7826000B, // 0058 JMPF R9 #0065
+ 0x88240106, // 0059 GETMBR R9 R0 K6
+ 0x8C241310, // 005A GETMET R9 R9 K16
+ 0x582C0007, // 005B LDCONST R11 K7
+ 0x7C240400, // 005C CALL R9 2
+ 0x6024000C, // 005D GETGBL R9 G12
+ 0x88280106, // 005E GETMBR R10 R0 K6
+ 0x7C240200, // 005F CALL R9 1
+ 0x1C241307, // 0060 EQ R9 R9 K7
+ 0x78260001, // 0061 JMPF R9 #0064
+ 0x4C240000, // 0062 LDNIL R9
+ 0x90020C09, // 0063 SETMBR R0 K6 R9
+ 0x70020001, // 0064 JMP #0067
+ 0x4C240000, // 0065 LDNIL R9
+ 0x90020C09, // 0066 SETMBR R0 K6 R9
+ 0x7001FFB3, // 0067 JMP #001C
+ 0x78120017, // 0068 JMPF R4 #0081
+ 0x881C0104, // 0069 GETMBR R7 R0 K4
+ 0x4C200000, // 006A LDNIL R8
+ 0x201C0E08, // 006B NE R7 R7 R8
+ 0x781E0013, // 006C JMPF R7 #0081
+ 0x601C000C, // 006D GETGBL R7 G12
+ 0x88200104, // 006E GETMBR R8 R0 K4
+ 0x7C1C0200, // 006F CALL R7 1
+ 0x241C0F07, // 0070 GT R7 R7 K7
+ 0x781E000E, // 0071 JMPF R7 #0081
+ 0x601C000C, // 0072 GETGBL R7 G12
+ 0x5C200600, // 0073 MOVE R8 R3
+ 0x7C1C0200, // 0074 CALL R7 1
+ 0x6020000C, // 0075 GETGBL R8 G12
+ 0x88240104, // 0076 GETMBR R9 R0 K4
+ 0x7C200200, // 0077 CALL R8 1
+ 0x001C0E08, // 0078 ADD R7 R7 R8
+ 0x8820010E, // 0079 GETMBR R8 R0 K14
+ 0x241C0E08, // 007A GT R7 R7 R8
+ 0x781E0002, // 007B JMPF R7 #007F
+ 0x50100000, // 007C LDBOOL R4 0 0
+ 0x4C180000, // 007D LDNIL R6
+ 0x70020001, // 007E JMP #0081
+ 0x4C1C0000, // 007F LDNIL R7
+ 0x90020807, // 0080 SETMBR R0 K4 R7
+ 0x7812006D, // 0081 JMPF R4 #00F0
+ 0x881C0105, // 0082 GETMBR R7 R0 K5
+ 0x4C200000, // 0083 LDNIL R8
+ 0x201C0E08, // 0084 NE R7 R7 R8
+ 0x781E0069, // 0085 JMPF R7 #00F0
+ 0x601C000F, // 0086 GETGBL R7 G15
+ 0x88200105, // 0087 GETMBR R8 R0 K5
+ 0x60240012, // 0088 GETGBL R9 G18
+ 0x7C1C0400, // 0089 CALL R7 2
+ 0x781E0002, // 008A JMPF R7 #008E
+ 0x881C0105, // 008B GETMBR R7 R0 K5
+ 0x941C0F07, // 008C GETIDX R7 R7 K7
+ 0x70020000, // 008D JMP #008F
+ 0x881C0105, // 008E GETMBR R7 R0 K5
+ 0x4C200000, // 008F LDNIL R8
+ 0x78120049, // 0090 JMPF R4 #00DB
+ 0x8C240F11, // 0091 GETMET R9 R7 K17
+ 0x7C240200, // 0092 CALL R9 1
+ 0x5C201200, // 0093 MOVE R8 R9
+ 0x78260045, // 0094 JMPF R9 #00DB
+ 0x7816002D, // 0095 JMPF R5 #00C4
+ 0xB8262400, // 0096 GETNGBL R9 K18
+ 0x8C241313, // 0097 GETMET R9 R9 K19
+ 0x582C0014, // 0098 LDCONST R11 K20
+ 0x7C240400, // 0099 CALL R9 2
+ 0x78260028, // 009A JMPF R9 #00C4
+ 0x58240015, // 009B LDCONST R9 K21
+ 0x88281116, // 009C GETMBR R10 R8 K22
+ 0x4C2C0000, // 009D LDNIL R11
+ 0x2028140B, // 009E NE R10 R10 R11
+ 0x782A0004, // 009F JMPF R10 #00A5
+ 0x60280008, // 00A0 GETGBL R10 G8
+ 0x882C1116, // 00A1 GETMBR R11 R8 K22
+ 0x7C280200, // 00A2 CALL R10 1
+ 0x002A2E0A, // 00A3 ADD R10 K23 R10
+ 0x5C241400, // 00A4 MOVE R9 R10
+ 0x88281118, // 00A5 GETMBR R10 R8 K24
+ 0x4C2C0000, // 00A6 LDNIL R11
+ 0x2028140B, // 00A7 NE R10 R10 R11
+ 0x782A0004, // 00A8 JMPF R10 #00AE
+ 0x60280008, // 00A9 GETGBL R10 G8
+ 0x882C1118, // 00AA GETMBR R11 R8 K24
+ 0x7C280200, // 00AB CALL R10 1
+ 0x002A320A, // 00AC ADD R10 K25 R10
+ 0x0024120A, // 00AD ADD R9 R9 R10
+ 0x8828111A, // 00AE GETMBR R10 R8 K26
+ 0x4C2C0000, // 00AF LDNIL R11
+ 0x2028140B, // 00B0 NE R10 R10 R11
+ 0x782A0004, // 00B1 JMPF R10 #00B7
+ 0x60280008, // 00B2 GETGBL R10 G8
+ 0x882C111A, // 00B3 GETMBR R11 R8 K26
+ 0x7C280200, // 00B4 CALL R10 1
+ 0x002A320A, // 00B5 ADD R10 K25 R10
+ 0x0024120A, // 00B6 ADD R9 R9 R10
+ 0xB82A3600, // 00B7 GETNGBL R10 K27
+ 0x602C0018, // 00B8 GETGBL R11 G24
+ 0x5830001C, // 00B9 LDCONST R12 K28
+ 0x8834050D, // 00BA GETMBR R13 R2 K13
+ 0x88341B1D, // 00BB GETMBR R13 R13 K29
+ 0x8838111E, // 00BC GETMBR R14 R8 K30
+ 0x883C111F, // 00BD GETMBR R15 R8 K31
+ 0x88401120, // 00BE GETMBR R16 R8 K32
+ 0x88441121, // 00BF GETMBR R17 R8 K33
+ 0x5C481200, // 00C0 MOVE R18 R9
+ 0x7C2C0E00, // 00C1 CALL R11 7
+ 0x58300014, // 00C2 LDCONST R12 K20
+ 0x7C280400, // 00C3 CALL R10 2
+ 0x8C241122, // 00C4 GETMET R9 R8 K34
+ 0x7C240200, // 00C5 CALL R9 1
+ 0x6028000C, // 00C6 GETGBL R10 G12
+ 0x5C2C0600, // 00C7 MOVE R11 R3
+ 0x7C280200, // 00C8 CALL R10 1
+ 0x602C000C, // 00C9 GETGBL R11 G12
+ 0x5C300C00, // 00CA MOVE R12 R6
+ 0x7C2C0200, // 00CB CALL R11 1
+ 0x0028140B, // 00CC ADD R10 R10 R11
+ 0x602C000C, // 00CD GETGBL R11 G12
+ 0x5C301200, // 00CE MOVE R12 R9
+ 0x7C2C0200, // 00CF CALL R11 1
+ 0x0028140B, // 00D0 ADD R10 R10 R11
+ 0x882C010E, // 00D1 GETMBR R11 R0 K14
+ 0x2428140B, // 00D2 GT R10 R10 R11
+ 0x782A0002, // 00D3 JMPF R10 #00D7
+ 0x90020809, // 00D4 SETMBR R0 K4 R9
+ 0x50100000, // 00D5 LDBOOL R4 0 0
+ 0x70020002, // 00D6 JMP #00DA
+ 0x8C280D0F, // 00D7 GETMET R10 R6 K15
+ 0x5C301200, // 00D8 MOVE R12 R9
+ 0x7C280400, // 00D9 CALL R10 2
+ 0x7001FFB4, // 00DA JMP #0090
+ 0x78120012, // 00DB JMPF R4 #00EF
+ 0x6024000F, // 00DC GETGBL R9 G15
+ 0x88280105, // 00DD GETMBR R10 R0 K5
+ 0x602C0012, // 00DE GETGBL R11 G18
+ 0x7C240400, // 00DF CALL R9 2
+ 0x7826000B, // 00E0 JMPF R9 #00ED
+ 0x88240105, // 00E1 GETMBR R9 R0 K5
+ 0x8C241310, // 00E2 GETMET R9 R9 K16
+ 0x582C0007, // 00E3 LDCONST R11 K7
+ 0x7C240400, // 00E4 CALL R9 2
+ 0x6024000C, // 00E5 GETGBL R9 G12
+ 0x88280105, // 00E6 GETMBR R10 R0 K5
+ 0x7C240200, // 00E7 CALL R9 1
+ 0x1C241307, // 00E8 EQ R9 R9 K7
+ 0x78260001, // 00E9 JMPF R9 #00EC
+ 0x4C240000, // 00EA LDNIL R9
+ 0x90020A09, // 00EB SETMBR R0 K5 R9
+ 0x70020001, // 00EC JMP #00EF
+ 0x4C240000, // 00ED LDNIL R9
+ 0x90020A09, // 00EE SETMBR R0 K5 R9
+ 0x7001FF90, // 00EF JMP #0081
+ 0x881C0101, // 00F0 GETMBR R7 R0 K1
+ 0x4C200000, // 00F1 LDNIL R8
+ 0x201C0E08, // 00F2 NE R7 R7 R8
+ 0x741E0004, // 00F3 JMPT R7 #00F9
+ 0x881C0104, // 00F4 GETMBR R7 R0 K4
+ 0x4C200000, // 00F5 LDNIL R8
+ 0x201C0E08, // 00F6 NE R7 R7 R8
+ 0x741E0000, // 00F7 JMPT R7 #00F9
+ 0x501C0001, // 00F8 LDBOOL R7 0 1
+ 0x501C0200, // 00F9 LDBOOL R7 1 0
+ 0x60200015, // 00FA GETGBL R8 G21
+ 0x8824010E, // 00FB GETMBR R9 R0 K14
+ 0x7C200200, // 00FC CALL R8 1
+ 0x8C241123, // 00FD GETMET R9 R8 K35
+ 0x542E0014, // 00FE LDINT R11 21
+ 0x58300024, // 00FF LDCONST R12 K36
+ 0x7C240600, // 0100 CALL R9 3
+ 0x88240125, // 0101 GETMBR R9 R0 K37
+ 0x4C280000, // 0102 LDNIL R10
+ 0x2024120A, // 0103 NE R9 R9 R10
+ 0x78260007, // 0104 JMPF R9 #010D
+ 0x8C241123, // 0105 GETMET R9 R8 K35
+ 0x542E24FF, // 0106 LDINT R11 9472
+ 0x5431FFFD, // 0107 LDINT R12 -2
+ 0x7C240600, // 0108 CALL R9 3
+ 0x8C241123, // 0109 GETMET R9 R8 K35
+ 0x882C0125, // 010A GETMBR R11 R0 K37
+ 0x58300026, // 010B LDCONST R12 K38
+ 0x7C240600, // 010C CALL R9 3
+ 0x4C240000, // 010D LDNIL R9
+ 0x20240609, // 010E NE R9 R3 R9
+ 0x7826000F, // 010F JMPF R9 #0120
+ 0x6024000C, // 0110 GETGBL R9 G12
+ 0x5C280600, // 0111 MOVE R10 R3
+ 0x7C240200, // 0112 CALL R9 1
+ 0x24241307, // 0113 GT R9 R9 K7
+ 0x7826000A, // 0114 JMPF R9 #0120
+ 0x8C241123, // 0115 GETMET R9 R8 K35
+ 0x542E3600, // 0116 LDINT R11 13825
+ 0x5431FFFD, // 0117 LDINT R12 -2
+ 0x7C240600, // 0118 CALL R9 3
+ 0x8C24110F, // 0119 GETMET R9 R8 K15
+ 0x5C2C0600, // 011A MOVE R11 R3
+ 0x7C240400, // 011B CALL R9 2
+ 0x8C241123, // 011C GETMET R9 R8 K35
+ 0x542E0017, // 011D LDINT R11 24
+ 0x58300024, // 011E LDCONST R12 K36
+ 0x7C240600, // 011F CALL R9 3
+ 0x4C240000, // 0120 LDNIL R9
+ 0x20240C09, // 0121 NE R9 R6 R9
+ 0x7826000F, // 0122 JMPF R9 #0133
+ 0x6024000C, // 0123 GETGBL R9 G12
+ 0x5C280C00, // 0124 MOVE R10 R6
+ 0x7C240200, // 0125 CALL R9 1
+ 0x24241307, // 0126 GT R9 R9 K7
+ 0x7826000A, // 0127 JMPF R9 #0133
+ 0x8C241123, // 0128 GETMET R9 R8 K35
+ 0x542E3601, // 0129 LDINT R11 13826
+ 0x5431FFFD, // 012A LDINT R12 -2
+ 0x7C240600, // 012B CALL R9 3
+ 0x8C24110F, // 012C GETMET R9 R8 K15
+ 0x5C2C0C00, // 012D MOVE R11 R6
+ 0x7C240400, // 012E CALL R9 2
+ 0x8C241123, // 012F GETMET R9 R8 K35
+ 0x542E0017, // 0130 LDINT R11 24
+ 0x58300024, // 0131 LDCONST R12 K36
+ 0x7C240600, // 0132 CALL R9 3
+ 0x781E0004, // 0133 JMPF R7 #0139
+ 0x8C241123, // 0134 GETMET R9 R8 K35
+ 0x542E2902, // 0135 LDINT R11 10499
+ 0x5431FFFD, // 0136 LDINT R12 -2
+ 0x7C240600, // 0137 CALL R9 3
+ 0x70020003, // 0138 JMP #013D
+ 0x8C241123, // 0139 GETMET R9 R8 K35
+ 0x542E2802, // 013A LDINT R11 10243
+ 0x5431FFFD, // 013B LDINT R12 -2
+ 0x7C240600, // 013C CALL R9 3
+ 0x88240127, // 013D GETMBR R9 R0 K39
+ 0x4C280000, // 013E LDNIL R10
+ 0x2024120A, // 013F NE R9 R9 R10
+ 0x7826000A, // 0140 JMPF R9 #014C
+ 0x88240127, // 0141 GETMBR R9 R0 K39
+ 0x78260004, // 0142 JMPF R9 #0148
+ 0x8C241123, // 0143 GETMET R9 R8 K35
+ 0x542E2903, // 0144 LDINT R11 10500
+ 0x5431FFFD, // 0145 LDINT R12 -2
+ 0x7C240600, // 0146 CALL R9 3
+ 0x70020003, // 0147 JMP #014C
+ 0x8C241123, // 0148 GETMET R9 R8 K35
+ 0x542E2803, // 0149 LDINT R11 10244
+ 0x5431FFFD, // 014A LDINT R12 -2
+ 0x7C240600, // 014B CALL R9 3
+ 0x8C241123, // 014C GETMET R9 R8 K35
+ 0x542E24FE, // 014D LDINT R11 9471
+ 0x5431FFFD, // 014E LDINT R12 -2
+ 0x7C240600, // 014F CALL R9 3
+ 0x8C241123, // 0150 GETMET R9 R8 K35
+ 0x582C0024, // 0151 LDCONST R11 K36
+ 0x58300024, // 0152 LDCONST R12 K36
+ 0x7C240600, // 0153 CALL R9 3
+ 0x8C241123, // 0154 GETMET R9 R8 K35
+ 0x542E0017, // 0155 LDINT R11 24
+ 0x58300024, // 0156 LDCONST R12 K36
+ 0x7C240600, // 0157 CALL R9 3
+ 0x8C240528, // 0158 GETMET R9 R2 K40
+ 0x5C2C1000, // 0159 MOVE R11 R8
+ 0x7C240400, // 015A CALL R9 2
+ 0x8C240529, // 015B GETMET R9 R2 K41
+ 0x7C240200, // 015C CALL R9 1
+ 0x8C24032A, // 015D GETMET R9 R1 K42
+ 0x5C2C0400, // 015E MOVE R11 R2
+ 0x7C240400, // 015F CALL R9 2
+ 0x8824052C, // 0160 GETMBR R9 R2 K44
+ 0x90025609, // 0161 SETMBR R0 K43 R9
+ 0x781E0002, // 0162 JMPF R7 #0166
+ 0x50240000, // 0163 LDBOOL R9 0 0
+ 0x90025A09, // 0164 SETMBR R0 K45 R9
+ 0x70020001, // 0165 JMP #0168
+ 0x50240200, // 0166 LDBOOL R9 1 0
+ 0x90025C09, // 0167 SETMBR R0 K46 R9
+ 0x80000000, // 0168 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: status_ok_received
+********************************************************************/
+be_local_closure(class_Matter_IM_ReportData_Pull_status_ok_received, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM_ReportData_Pull, /* shared constants */
+ be_str_weak(status_ok_received),
+ &be_const_str_solidified,
+ ( &(const binstruction[16]) { /* code */
+ 0x60080003, // 0000 GETGBL R2 G3
+ 0x5C0C0000, // 0001 MOVE R3 R0
+ 0x7C080200, // 0002 CALL R2 1
+ 0x8C08052F, // 0003 GETMET R2 R2 K47
+ 0x5C100200, // 0004 MOVE R4 R1
+ 0x7C080400, // 0005 CALL R2 2
+ 0x8808012E, // 0006 GETMBR R2 R0 K46
+ 0x740A0005, // 0007 JMPT R2 #000E
+ 0x8808030D, // 0008 GETMBR R2 R1 K13
+ 0x88080530, // 0009 GETMBR R2 R2 K48
+ 0x8C080531, // 000A GETMET R2 R2 K49
+ 0x5C100200, // 000B MOVE R4 R1
+ 0x50140000, // 000C LDBOOL R5 0 0
+ 0x7C080600, // 000D CALL R2 3
+ 0x50080200, // 000E LDBOOL R2 1 0
+ 0x80040400, // 000F RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_subscription_id
+********************************************************************/
+be_local_closure(class_Matter_IM_ReportData_Pull_set_subscription_id, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM_ReportData_Pull, /* shared constants */
+ be_str_weak(set_subscription_id),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x90024A01, // 0000 SETMBR R0 K37 R1
+ 0x80000000, // 0001 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_suppress_response
+********************************************************************/
+be_local_closure(class_Matter_IM_ReportData_Pull_set_suppress_response, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM_ReportData_Pull, /* shared constants */
+ be_str_weak(set_suppress_response),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x90024E01, // 0000 SETMBR R0 K39 R1
+ 0x80000000, // 0001 RET 0
})
)
);
@@ -655,34 +1051,31 @@ be_local_closure(class_Matter_IM_ReportData_send_im, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_IM_ReportData;
-be_local_closure(class_Matter_IM_ReportData_init, /* name */
+be_local_closure(class_Matter_IM_ReportData_Pull_init, /* name */
be_nested_proto(
- 8, /* nstack */
- 3, /* argc */
- 2, /* varg */
+ 9, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_ReportData,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(data),
- }),
+ &be_ktab_class_Matter_IM_ReportData_Pull, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x600C0003, // 0000 GETGBL R3 G3
- 0x5C100000, // 0001 MOVE R4 R0
- 0x7C0C0200, // 0002 CALL R3 1
- 0x8C0C0700, // 0003 GETMET R3 R3 K0
- 0x5C140200, // 0004 MOVE R5 R1
- 0x541A0004, // 0005 LDINT R6 5
- 0x501C0200, // 0006 LDBOOL R7 1 0
- 0x7C0C0800, // 0007 CALL R3 4
- 0x90020202, // 0008 SETMBR R0 K1 R2
- 0x80000000, // 0009 RET 0
+ ( &(const binstruction[11]) { /* code */
+ 0x60100003, // 0000 GETGBL R4 G3
+ 0x5C140000, // 0001 MOVE R5 R0
+ 0x7C100200, // 0002 CALL R4 1
+ 0x8C100932, // 0003 GETMET R4 R4 K50
+ 0x5C180200, // 0004 MOVE R6 R1
+ 0x541E0004, // 0005 LDINT R7 5
+ 0x50200200, // 0006 LDBOOL R8 1 0
+ 0x7C100800, // 0007 CALL R4 4
+ 0x90020C02, // 0008 SETMBR R0 K6 R2
+ 0x90020A03, // 0009 SETMBR R0 K5 R3
+ 0x80000000, // 000A RET 0
})
)
);
@@ -690,44 +1083,83 @@ be_local_closure(class_Matter_IM_ReportData_init, /* name */
/********************************************************************
-** Solidified class: Matter_IM_ReportData
+** Solidified class: Matter_IM_ReportData_Pull
********************************************************************/
extern const bclass be_class_Matter_IM_Message;
-be_local_class(Matter_IM_ReportData,
- 0,
+be_local_class(Matter_IM_ReportData_Pull,
+ 5,
&be_class_Matter_IM_Message,
- be_nested_map(3,
+ be_nested_map(11,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(send_im, 1), be_const_closure(class_Matter_IM_ReportData_send_im_closure) },
- { be_const_key_weak(init, -1), be_const_closure(class_Matter_IM_ReportData_init_closure) },
+ { be_const_key_weak(send_im, -1), be_const_closure(class_Matter_IM_ReportData_Pull_send_im_closure) },
+ { be_const_key_weak(status_ok_received, -1), be_const_closure(class_Matter_IM_ReportData_Pull_status_ok_received_closure) },
+ { be_const_key_weak(data_ev, -1), be_const_var(4) },
+ { be_const_key_weak(suppress_response, 8), be_const_var(3) },
{ be_const_key_weak(MAX_MESSAGE, -1), be_const_int(1200) },
+ { be_const_key_weak(set_suppress_response, -1), be_const_closure(class_Matter_IM_ReportData_Pull_set_suppress_response_closure) },
+ { be_const_key_weak(set_subscription_id, -1), be_const_closure(class_Matter_IM_ReportData_Pull_set_subscription_id_closure) },
+ { be_const_key_weak(generator_or_arr, 5), be_const_var(0) },
+ { be_const_key_weak(event_generator_or_arr, 4), be_const_var(1) },
+ { be_const_key_weak(init, -1), be_const_closure(class_Matter_IM_ReportData_Pull_init_closure) },
+ { be_const_key_weak(subscription_id, -1), be_const_var(2) },
})),
- be_str_weak(Matter_IM_ReportData)
+ be_str_weak(Matter_IM_ReportData_Pull)
);
+// compact class 'Matter_IM_ReportDataSubscribed_Pull' ktab size: 34, total: 46 (saved 96 bytes)
+static const bvalue be_ktab_class_Matter_IM_ReportDataSubscribed_Pull[34] = {
+ /* K0 */ be_nested_str_weak(ack_received),
+ /* K1 */ be_nested_str_weak(report_data_phase),
+ /* K2 */ be_nested_str_weak(sub),
+ /* K3 */ be_nested_str_weak(is_keep_alive),
+ /* K4 */ be_nested_str_weak(re_arm),
+ /* K5 */ be_nested_str_weak(ready),
+ /* K6 */ be_nested_str_weak(generator_or_arr),
+ /* K7 */ be_nested_str_weak(event_generator_or_arr),
+ /* K8 */ be_nested_str_weak(send_im),
+ /* K9 */ be_nested_str_weak(finishing),
+ /* K10 */ be_nested_str_weak(finished),
+ /* K11 */ be_nested_str_weak(resp),
+ /* K12 */ be_nested_str_weak(build_standalone_ack),
+ /* K13 */ be_nested_str_weak(encode_frame),
+ /* K14 */ be_nested_str_weak(encrypt),
+ /* K15 */ be_nested_str_weak(tasmota),
+ /* K16 */ be_nested_str_weak(loglevel),
+ /* K17 */ be_nested_str_weak(log),
+ /* K18 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i),
+ /* K19 */ be_nested_str_weak(session),
+ /* K20 */ be_nested_str_weak(local_session_id),
+ /* K21 */ be_nested_str_weak(ack_message_counter),
+ /* K22 */ be_nested_str_weak(message_counter),
+ /* K23 */ be_nested_str_weak(send_response_frame),
+ /* K24 */ be_nested_str_weak(last_counter),
+ /* K25 */ be_nested_str_weak(init),
+ /* K26 */ be_nested_str_weak(matter),
+ /* K27 */ be_nested_str_weak(Frame),
+ /* K28 */ be_nested_str_weak(initiate_response),
+ /* K29 */ be_nested_str_weak(set_subscription_id),
+ /* K30 */ be_nested_str_weak(subscription_id),
+ /* K31 */ be_nested_str_weak(set_suppress_response),
+ /* K32 */ be_nested_str_weak(remove_self),
+ /* K33 */ be_nested_str_weak(status_ok_received),
+};
-extern const bclass be_class_Matter_IM_ReportDataSubscribed;
+
+extern const bclass be_class_Matter_IM_ReportDataSubscribed_Pull;
/********************************************************************
** Solidified function: ack_received
********************************************************************/
-extern const bclass be_class_Matter_IM_ReportDataSubscribed;
-be_local_closure(class_Matter_IM_ReportDataSubscribed_ack_received, /* name */
+be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_ack_received, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_ReportDataSubscribed,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(ack_received),
- /* K1 */ be_nested_str_weak(report_data_phase),
- /* K2 */ be_nested_str_weak(sub),
- /* K3 */ be_nested_str_weak(is_keep_alive),
- /* K4 */ be_nested_str_weak(re_arm),
- }),
+ &be_ktab_class_Matter_IM_ReportDataSubscribed_Pull, /* shared constants */
be_str_weak(ack_received),
&be_const_str_solidified,
( &(const binstruction[20]) { /* code */
@@ -745,7 +1177,7 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_ack_received, /* name */
0x88080102, // 000B GETMBR R2 R0 K2
0x8C080504, // 000C GETMET R2 R2 K4
0x7C080200, // 000D CALL R2 1
- 0x50080200, // 000E LDBOOL R2 1 0
+ 0x50080000, // 000E LDBOOL R2 0 0
0x80040400, // 000F RET 1 R2
0x70020001, // 0010 JMP #0013
0x50080000, // 0011 LDBOOL R2 0 0
@@ -760,117 +1192,97 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_ack_received, /* name */
/********************************************************************
** Solidified function: send_im
********************************************************************/
-extern const bclass be_class_Matter_IM_ReportDataSubscribed;
-be_local_closure(class_Matter_IM_ReportDataSubscribed_send_im, /* name */
+be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_send_im, /* name */
be_nested_proto(
- 10, /* nstack */
+ 9, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_ReportDataSubscribed,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[21]) { /* constants */
- /* K0 */ be_nested_str_weak(ready),
- /* K1 */ be_nested_str_weak(data),
- /* K2 */ be_nested_str_weak(attribute_reports),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(report_data_phase),
- /* K5 */ be_nested_str_weak(send_im),
- /* K6 */ be_nested_str_weak(finish),
- /* K7 */ be_nested_str_weak(resp),
- /* K8 */ be_nested_str_weak(build_standalone_ack),
- /* K9 */ be_nested_str_weak(encode_frame),
- /* K10 */ be_nested_str_weak(encrypt),
- /* K11 */ be_nested_str_weak(tasmota),
- /* K12 */ be_nested_str_weak(loglevel),
- /* K13 */ be_nested_str_weak(log),
- /* K14 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i),
- /* K15 */ be_nested_str_weak(session),
- /* K16 */ be_nested_str_weak(local_session_id),
- /* K17 */ be_nested_str_weak(ack_message_counter),
- /* K18 */ be_nested_str_weak(message_counter),
- /* K19 */ be_nested_str_weak(send_response_frame),
- /* K20 */ be_nested_str_weak(last_counter),
- }),
+ &be_ktab_class_Matter_IM_ReportDataSubscribed_Pull, /* shared constants */
be_str_weak(send_im),
&be_const_str_solidified,
- ( &(const binstruction[74]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ ( &(const binstruction[77]) { /* code */
+ 0x88080105, // 0000 GETMBR R2 R0 K5
0x740A0001, // 0001 JMPT R2 #0004
0x50080000, // 0002 LDBOOL R2 0 0
0x80040400, // 0003 RET 1 R2
- 0x6008000C, // 0004 GETGBL R2 G12
- 0x880C0101, // 0005 GETMBR R3 R0 K1
- 0x880C0702, // 0006 GETMBR R3 R3 K2
- 0x7C080200, // 0007 CALL R2 1
- 0x24080503, // 0008 GT R2 R2 K3
- 0x780A0031, // 0009 JMPF R2 #003C
- 0x88080104, // 000A GETMBR R2 R0 K4
- 0x780A000F, // 000B JMPF R2 #001C
- 0x60080003, // 000C GETGBL R2 G3
- 0x5C0C0000, // 000D MOVE R3 R0
- 0x7C080200, // 000E CALL R2 1
- 0x8C080505, // 000F GETMET R2 R2 K5
- 0x5C100200, // 0010 MOVE R4 R1
- 0x7C080400, // 0011 CALL R2 2
- 0x88080106, // 0012 GETMBR R2 R0 K6
- 0x740A0000, // 0013 JMPT R2 #0015
- 0x80000400, // 0014 RET 0
- 0x50080000, // 0015 LDBOOL R2 0 0
- 0x90020802, // 0016 SETMBR R0 K4 R2
+ 0x88080106, // 0004 GETMBR R2 R0 K6
+ 0x4C0C0000, // 0005 LDNIL R3
+ 0x20080403, // 0006 NE R2 R2 R3
+ 0x740A0003, // 0007 JMPT R2 #000C
+ 0x88080107, // 0008 GETMBR R2 R0 K7
+ 0x4C0C0000, // 0009 LDNIL R3
+ 0x20080403, // 000A NE R2 R2 R3
+ 0x780A0031, // 000B JMPF R2 #003E
+ 0x88080101, // 000C GETMBR R2 R0 K1
+ 0x780A000F, // 000D JMPF R2 #001E
+ 0x60080003, // 000E GETGBL R2 G3
+ 0x5C0C0000, // 000F MOVE R3 R0
+ 0x7C080200, // 0010 CALL R2 1
+ 0x8C080508, // 0011 GETMET R2 R2 K8
+ 0x5C100200, // 0012 MOVE R4 R1
+ 0x7C080400, // 0013 CALL R2 2
+ 0x88080109, // 0014 GETMBR R2 R0 K9
+ 0x740A0000, // 0015 JMPT R2 #0017
+ 0x80000400, // 0016 RET 0
0x50080000, // 0017 LDBOOL R2 0 0
- 0x90020002, // 0018 SETMBR R0 K0 R2
+ 0x90020202, // 0018 SETMBR R0 K1 R2
0x50080000, // 0019 LDBOOL R2 0 0
- 0x90020C02, // 001A SETMBR R0 K6 R2
- 0x7002001E, // 001B JMP #003B
- 0x88080107, // 001C GETMBR R2 R0 K7
- 0x8C080508, // 001D GETMET R2 R2 K8
- 0x50100000, // 001E LDBOOL R4 0 0
- 0x7C080400, // 001F CALL R2 2
- 0x8C0C0509, // 0020 GETMET R3 R2 K9
- 0x7C0C0200, // 0021 CALL R3 1
- 0x8C0C050A, // 0022 GETMET R3 R2 K10
+ 0x90020A02, // 001A SETMBR R0 K5 R2
+ 0x50080000, // 001B LDBOOL R2 0 0
+ 0x90021402, // 001C SETMBR R0 K10 R2
+ 0x7002001E, // 001D JMP #003D
+ 0x8808010B, // 001E GETMBR R2 R0 K11
+ 0x8C08050C, // 001F GETMET R2 R2 K12
+ 0x50100000, // 0020 LDBOOL R4 0 0
+ 0x7C080400, // 0021 CALL R2 2
+ 0x8C0C050D, // 0022 GETMET R3 R2 K13
0x7C0C0200, // 0023 CALL R3 1
- 0xB80E1600, // 0024 GETNGBL R3 K11
- 0x8C0C070C, // 0025 GETMET R3 R3 K12
- 0x54160003, // 0026 LDINT R5 4
- 0x7C0C0400, // 0027 CALL R3 2
- 0x780E000A, // 0028 JMPF R3 #0034
- 0xB80E1600, // 0029 GETNGBL R3 K11
- 0x8C0C070D, // 002A GETMET R3 R3 K13
- 0x60140018, // 002B GETGBL R5 G24
- 0x5818000E, // 002C LDCONST R6 K14
- 0x881C050F, // 002D GETMBR R7 R2 K15
- 0x881C0F10, // 002E GETMBR R7 R7 K16
- 0x88200511, // 002F GETMBR R8 R2 K17
- 0x88240512, // 0030 GETMBR R9 R2 K18
- 0x7C140800, // 0031 CALL R5 4
- 0x541A0003, // 0032 LDINT R6 4
- 0x7C0C0600, // 0033 CALL R3 3
- 0x8C0C0313, // 0034 GETMET R3 R1 K19
- 0x5C140400, // 0035 MOVE R5 R2
- 0x7C0C0400, // 0036 CALL R3 2
- 0x880C0512, // 0037 GETMBR R3 R2 K18
- 0x90022803, // 0038 SETMBR R0 K20 R3
- 0x500C0200, // 0039 LDBOOL R3 1 0
- 0x90020C03, // 003A SETMBR R0 K6 R3
- 0x7002000C, // 003B JMP #0049
- 0x88080104, // 003C GETMBR R2 R0 K4
- 0x780A0008, // 003D JMPF R2 #0047
- 0x60080003, // 003E GETGBL R2 G3
- 0x5C0C0000, // 003F MOVE R3 R0
- 0x7C080200, // 0040 CALL R2 1
- 0x8C080505, // 0041 GETMET R2 R2 K5
- 0x5C100200, // 0042 MOVE R4 R1
- 0x7C080400, // 0043 CALL R2 2
- 0x50080000, // 0044 LDBOOL R2 0 0
- 0x90020802, // 0045 SETMBR R0 K4 R2
- 0x70020001, // 0046 JMP #0049
- 0x50080200, // 0047 LDBOOL R2 1 0
- 0x90020C02, // 0048 SETMBR R0 K6 R2
- 0x80000000, // 0049 RET 0
+ 0x8C0C050E, // 0024 GETMET R3 R2 K14
+ 0x7C0C0200, // 0025 CALL R3 1
+ 0xB80E1E00, // 0026 GETNGBL R3 K15
+ 0x8C0C0710, // 0027 GETMET R3 R3 K16
+ 0x54160003, // 0028 LDINT R5 4
+ 0x7C0C0400, // 0029 CALL R3 2
+ 0x780E0009, // 002A JMPF R3 #0035
+ 0xB80E2200, // 002B GETNGBL R3 K17
+ 0x60100018, // 002C GETGBL R4 G24
+ 0x58140012, // 002D LDCONST R5 K18
+ 0x88180513, // 002E GETMBR R6 R2 K19
+ 0x88180D14, // 002F GETMBR R6 R6 K20
+ 0x881C0515, // 0030 GETMBR R7 R2 K21
+ 0x88200516, // 0031 GETMBR R8 R2 K22
+ 0x7C100800, // 0032 CALL R4 4
+ 0x54160003, // 0033 LDINT R5 4
+ 0x7C0C0400, // 0034 CALL R3 2
+ 0x8C0C0317, // 0035 GETMET R3 R1 K23
+ 0x5C140400, // 0036 MOVE R5 R2
+ 0x7C0C0400, // 0037 CALL R3 2
+ 0x880C0516, // 0038 GETMBR R3 R2 K22
+ 0x90023003, // 0039 SETMBR R0 K24 R3
+ 0x880C0102, // 003A GETMBR R3 R0 K2
+ 0x8C0C0704, // 003B GETMET R3 R3 K4
+ 0x7C0C0200, // 003C CALL R3 1
+ 0x7002000D, // 003D JMP #004C
+ 0x88080101, // 003E GETMBR R2 R0 K1
+ 0x780A0008, // 003F JMPF R2 #0049
+ 0x60080003, // 0040 GETGBL R2 G3
+ 0x5C0C0000, // 0041 MOVE R3 R0
+ 0x7C080200, // 0042 CALL R2 1
+ 0x8C080508, // 0043 GETMET R2 R2 K8
+ 0x5C100200, // 0044 MOVE R4 R1
+ 0x7C080400, // 0045 CALL R2 2
+ 0x50080000, // 0046 LDBOOL R2 0 0
+ 0x90020202, // 0047 SETMBR R0 K1 R2
+ 0x70020002, // 0048 JMP #004C
+ 0x88080102, // 0049 GETMBR R2 R0 K2
+ 0x8C080504, // 004A GETMET R2 R2 K4
+ 0x7C080200, // 004B CALL R2 1
+ 0x80000000, // 004C RET 0
})
)
);
@@ -880,56 +1292,47 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_send_im, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_IM_ReportDataSubscribed;
-be_local_closure(class_Matter_IM_ReportDataSubscribed_init, /* name */
+be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_init, /* name */
be_nested_proto(
- 11, /* nstack */
- 5, /* argc */
- 2, /* varg */
+ 12, /* nstack */
+ 6, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_ReportDataSubscribed,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(resp),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(Frame),
- /* K3 */ be_nested_str_weak(initiate_response),
- /* K4 */ be_nested_str_weak(data),
- /* K5 */ be_nested_str_weak(ready),
- /* K6 */ be_nested_str_weak(expiration),
- /* K7 */ be_nested_str_weak(tasmota),
- /* K8 */ be_nested_str_weak(millis),
- /* K9 */ be_nested_str_weak(MSG_TIMEOUT),
- /* K10 */ be_nested_str_weak(sub),
- /* K11 */ be_nested_str_weak(report_data_phase),
- }),
+ &be_ktab_class_Matter_IM_ReportDataSubscribed_Pull, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
- ( &(const binstruction[22]) { /* code */
- 0xB8160200, // 0000 GETNGBL R5 K1
- 0x88140B02, // 0001 GETMBR R5 R5 K2
- 0x8C140B03, // 0002 GETMET R5 R5 K3
- 0x5C1C0200, // 0003 MOVE R7 R1
- 0x5C200400, // 0004 MOVE R8 R2
- 0x54260004, // 0005 LDINT R9 5
- 0x50280200, // 0006 LDBOOL R10 1 0
- 0x7C140A00, // 0007 CALL R5 5
- 0x90020005, // 0008 SETMBR R0 K0 R5
- 0x90020803, // 0009 SETMBR R0 K4 R3
- 0x50140200, // 000A LDBOOL R5 1 0
- 0x90020A05, // 000B SETMBR R0 K5 R5
- 0xB8160E00, // 000C GETNGBL R5 K7
- 0x8C140B08, // 000D GETMET R5 R5 K8
- 0x7C140200, // 000E CALL R5 1
- 0x88180109, // 000F GETMBR R6 R0 K9
- 0x00140A06, // 0010 ADD R5 R5 R6
- 0x90020C05, // 0011 SETMBR R0 K6 R5
- 0x90021404, // 0012 SETMBR R0 K10 R4
- 0x50140200, // 0013 LDBOOL R5 1 0
- 0x90021605, // 0014 SETMBR R0 K11 R5
- 0x80000000, // 0015 RET 0
+ ( &(const binstruction[27]) { /* code */
+ 0x60180003, // 0000 GETGBL R6 G3
+ 0x5C1C0000, // 0001 MOVE R7 R0
+ 0x7C180200, // 0002 CALL R6 1
+ 0x8C180D19, // 0003 GETMET R6 R6 K25
+ 0x4C200000, // 0004 LDNIL R8
+ 0x5C240600, // 0005 MOVE R9 R3
+ 0x5C280800, // 0006 MOVE R10 R4
+ 0x7C180800, // 0007 CALL R6 4
+ 0xB81A3400, // 0008 GETNGBL R6 K26
+ 0x88180D1B, // 0009 GETMBR R6 R6 K27
+ 0x8C180D1C, // 000A GETMET R6 R6 K28
+ 0x5C200200, // 000B MOVE R8 R1
+ 0x5C240400, // 000C MOVE R9 R2
+ 0x542A0004, // 000D LDINT R10 5
+ 0x502C0200, // 000E LDBOOL R11 1 0
+ 0x7C180A00, // 000F CALL R6 5
+ 0x90021606, // 0010 SETMBR R0 K11 R6
+ 0x90020405, // 0011 SETMBR R0 K2 R5
+ 0x50180200, // 0012 LDBOOL R6 1 0
+ 0x90020206, // 0013 SETMBR R0 K1 R6
+ 0x8C18011D, // 0014 GETMET R6 R0 K29
+ 0x88200B1E, // 0015 GETMBR R8 R5 K30
+ 0x7C180400, // 0016 CALL R6 2
+ 0x8C18011F, // 0017 GETMET R6 R0 K31
+ 0x50200000, // 0018 LDBOOL R8 0 0
+ 0x7C180400, // 0019 CALL R6 2
+ 0x80000000, // 001A RET 0
})
)
);
@@ -939,26 +1342,22 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_init, /* name */
/********************************************************************
** Solidified function: status_error_received
********************************************************************/
-extern const bclass be_class_Matter_IM_ReportDataSubscribed;
-be_local_closure(class_Matter_IM_ReportDataSubscribed_status_error_received, /* name */
+be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_status_error_received, /* name */
be_nested_proto(
4, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_ReportDataSubscribed,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(sub),
- /* K1 */ be_nested_str_weak(remove_self),
- }),
+ &be_ktab_class_Matter_IM_ReportDataSubscribed_Pull, /* shared constants */
be_str_weak(status_error_received),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x88080102, // 0000 GETMBR R2 R0 K2
+ 0x8C080520, // 0001 GETMET R2 R2 K32
0x7C080200, // 0002 CALL R2 1
0x80000000, // 0003 RET 0
})
@@ -970,26 +1369,22 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_status_error_received, /
/********************************************************************
** Solidified function: reached_timeout
********************************************************************/
-extern const bclass be_class_Matter_IM_ReportDataSubscribed;
-be_local_closure(class_Matter_IM_ReportDataSubscribed_reached_timeout, /* name */
+be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_reached_timeout, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_ReportDataSubscribed,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(sub),
- /* K1 */ be_nested_str_weak(remove_self),
- }),
+ &be_ktab_class_Matter_IM_ReportDataSubscribed_Pull, /* shared constants */
be_str_weak(reached_timeout),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x88040102, // 0000 GETMBR R1 R0 K2
+ 0x8C040320, // 0001 GETMET R1 R1 K32
0x7C040200, // 0002 CALL R1 1
0x80000000, // 0003 RET 0
})
@@ -1001,43 +1396,37 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_reached_timeout, /* name
/********************************************************************
** Solidified function: status_ok_received
********************************************************************/
-extern const bclass be_class_Matter_IM_ReportDataSubscribed;
-be_local_closure(class_Matter_IM_ReportDataSubscribed_status_ok_received, /* name */
+be_local_closure(class_Matter_IM_ReportDataSubscribed_Pull_status_ok_received, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_ReportDataSubscribed,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(report_data_phase),
- /* K1 */ be_nested_str_weak(status_ok_received),
- /* K2 */ be_nested_str_weak(sub),
- /* K3 */ be_nested_str_weak(re_arm),
- }),
+ &be_ktab_class_Matter_IM_ReportDataSubscribed_Pull, /* shared constants */
be_str_weak(status_ok_received),
&be_const_str_solidified,
( &(const binstruction[22]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x88080101, // 0000 GETMBR R2 R0 K1
0x780A0007, // 0001 JMPF R2 #000A
0x60080003, // 0002 GETGBL R2 G3
0x5C0C0000, // 0003 MOVE R3 R0
0x7C080200, // 0004 CALL R2 1
- 0x8C080501, // 0005 GETMET R2 R2 K1
+ 0x8C080521, // 0005 GETMET R2 R2 K33
0x5C100200, // 0006 MOVE R4 R1
0x7C080400, // 0007 CALL R2 2
0x80040400, // 0008 RET 1 R2
0x7002000A, // 0009 JMP #0015
0x88080102, // 000A GETMBR R2 R0 K2
- 0x8C080503, // 000B GETMET R2 R2 K3
+ 0x8C080504, // 000B GETMET R2 R2 K4
0x7C080200, // 000C CALL R2 1
0x60080003, // 000D GETGBL R2 G3
0x5C0C0000, // 000E MOVE R3 R0
0x7C080200, // 000F CALL R2 1
- 0x8C080501, // 0010 GETMET R2 R2 K1
+ 0x8C080521, // 0010 GETMET R2 R2 K33
0x4C100000, // 0011 LDNIL R4
0x7C080400, // 0012 CALL R2 2
0x50080000, // 0013 LDBOOL R2 0 0
@@ -1050,46 +1439,59 @@ be_local_closure(class_Matter_IM_ReportDataSubscribed_status_ok_received, /* n
/********************************************************************
-** Solidified class: Matter_IM_ReportDataSubscribed
+** Solidified class: Matter_IM_ReportDataSubscribed_Pull
********************************************************************/
-extern const bclass be_class_Matter_IM_ReportData;
-be_local_class(Matter_IM_ReportDataSubscribed,
+extern const bclass be_class_Matter_IM_ReportData_Pull;
+be_local_class(Matter_IM_ReportDataSubscribed_Pull,
2,
- &be_class_Matter_IM_ReportData,
+ &be_class_Matter_IM_ReportData_Pull,
be_nested_map(8,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(ack_received, 1), be_const_closure(class_Matter_IM_ReportDataSubscribed_ack_received_closure) },
- { be_const_key_weak(status_ok_received, -1), be_const_closure(class_Matter_IM_ReportDataSubscribed_status_ok_received_closure) },
- { be_const_key_weak(send_im, -1), be_const_closure(class_Matter_IM_ReportDataSubscribed_send_im_closure) },
- { be_const_key_weak(init, -1), be_const_closure(class_Matter_IM_ReportDataSubscribed_init_closure) },
+ { be_const_key_weak(ack_received, 1), be_const_closure(class_Matter_IM_ReportDataSubscribed_Pull_ack_received_closure) },
+ { be_const_key_weak(status_ok_received, -1), be_const_closure(class_Matter_IM_ReportDataSubscribed_Pull_status_ok_received_closure) },
+ { be_const_key_weak(send_im, -1), be_const_closure(class_Matter_IM_ReportDataSubscribed_Pull_send_im_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(class_Matter_IM_ReportDataSubscribed_Pull_init_closure) },
{ be_const_key_weak(report_data_phase, 7), be_const_var(1) },
{ be_const_key_weak(sub, 6), be_const_var(0) },
- { be_const_key_weak(reached_timeout, -1), be_const_closure(class_Matter_IM_ReportDataSubscribed_reached_timeout_closure) },
- { be_const_key_weak(status_error_received, -1), be_const_closure(class_Matter_IM_ReportDataSubscribed_status_error_received_closure) },
+ { be_const_key_weak(reached_timeout, -1), be_const_closure(class_Matter_IM_ReportDataSubscribed_Pull_reached_timeout_closure) },
+ { be_const_key_weak(status_error_received, -1), be_const_closure(class_Matter_IM_ReportDataSubscribed_Pull_status_error_received_closure) },
})),
- be_str_weak(Matter_IM_ReportDataSubscribed)
+ be_str_weak(Matter_IM_ReportDataSubscribed_Pull)
);
+// compact class 'Matter_IM_SubscribedHeartbeat' ktab size: 13, total: 16 (saved 24 bytes)
+static const bvalue be_ktab_class_Matter_IM_SubscribedHeartbeat[13] = {
+ /* K0 */ be_nested_str_weak(sub),
+ /* K1 */ be_nested_str_weak(remove_self),
+ /* K2 */ be_nested_str_weak(send_im),
+ /* K3 */ be_nested_str_weak(ready),
+ /* K4 */ be_nested_str_weak(ack_received),
+ /* K5 */ be_nested_str_weak(init),
+ /* K6 */ be_nested_str_weak(resp),
+ /* K7 */ be_nested_str_weak(matter),
+ /* K8 */ be_nested_str_weak(Frame),
+ /* K9 */ be_nested_str_weak(initiate_response),
+ /* K10 */ be_nested_str_weak(set_subscription_id),
+ /* K11 */ be_nested_str_weak(subscription_id),
+ /* K12 */ be_nested_str_weak(set_suppress_response),
+};
+
extern const bclass be_class_Matter_IM_SubscribedHeartbeat;
/********************************************************************
** Solidified function: status_error_received
********************************************************************/
-extern const bclass be_class_Matter_IM_SubscribedHeartbeat;
be_local_closure(class_Matter_IM_SubscribedHeartbeat_status_error_received, /* name */
be_nested_proto(
4, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_SubscribedHeartbeat,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(sub),
- /* K1 */ be_nested_str_weak(remove_self),
- }),
+ &be_ktab_class_Matter_IM_SubscribedHeartbeat, /* shared constants */
be_str_weak(status_error_received),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
@@ -1107,37 +1509,29 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_status_error_received, /*
/********************************************************************
** Solidified function: send_im
********************************************************************/
-extern const bclass be_class_Matter_IM_SubscribedHeartbeat;
be_local_closure(class_Matter_IM_SubscribedHeartbeat_send_im, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_SubscribedHeartbeat,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(ready),
- /* K1 */ be_nested_str_weak(send_im),
- }),
+ &be_ktab_class_Matter_IM_SubscribedHeartbeat, /* shared constants */
be_str_weak(send_im),
&be_const_str_solidified,
- ( &(const binstruction[13]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x740A0001, // 0001 JMPT R2 #0004
- 0x50080000, // 0002 LDBOOL R2 0 0
- 0x80040400, // 0003 RET 1 R2
- 0x60080003, // 0004 GETGBL R2 G3
- 0x5C0C0000, // 0005 MOVE R3 R0
- 0x7C080200, // 0006 CALL R2 1
- 0x8C080501, // 0007 GETMET R2 R2 K1
- 0x5C100200, // 0008 MOVE R4 R1
- 0x7C080400, // 0009 CALL R2 2
- 0x50080000, // 000A LDBOOL R2 0 0
- 0x90020002, // 000B SETMBR R0 K0 R2
- 0x80000000, // 000C RET 0
+ ( &(const binstruction[ 9]) { /* code */
+ 0x60080003, // 0000 GETGBL R2 G3
+ 0x5C0C0000, // 0001 MOVE R3 R0
+ 0x7C080200, // 0002 CALL R2 1
+ 0x8C080502, // 0003 GETMET R2 R2 K2
+ 0x5C100200, // 0004 MOVE R4 R1
+ 0x7C080400, // 0005 CALL R2 2
+ 0x50080000, // 0006 LDBOOL R2 0 0
+ 0x90020602, // 0007 SETMBR R0 K3 R2
+ 0x80000000, // 0008 RET 0
})
)
);
@@ -1147,34 +1541,28 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_send_im, /* name */
/********************************************************************
** Solidified function: ack_received
********************************************************************/
-extern const bclass be_class_Matter_IM_SubscribedHeartbeat;
be_local_closure(class_Matter_IM_SubscribedHeartbeat_ack_received, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_SubscribedHeartbeat,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(ack_received),
- /* K1 */ be_nested_str_weak(finish),
- }),
+ &be_ktab_class_Matter_IM_SubscribedHeartbeat, /* shared constants */
be_str_weak(ack_received),
&be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
+ ( &(const binstruction[ 8]) { /* code */
0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0
0x7C080200, // 0002 CALL R2 1
- 0x8C080500, // 0003 GETMET R2 R2 K0
+ 0x8C080504, // 0003 GETMET R2 R2 K4
0x5C100200, // 0004 MOVE R4 R1
0x7C080400, // 0005 CALL R2 2
- 0x50080200, // 0006 LDBOOL R2 1 0
- 0x90020202, // 0007 SETMBR R0 K1 R2
- 0x50080200, // 0008 LDBOOL R2 1 0
- 0x80040400, // 0009 RET 1 R2
+ 0x50080000, // 0006 LDBOOL R2 0 0
+ 0x80040400, // 0007 RET 1 R2
})
)
);
@@ -1184,21 +1572,17 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_ack_received, /* name */
/********************************************************************
** Solidified function: reached_timeout
********************************************************************/
-extern const bclass be_class_Matter_IM_SubscribedHeartbeat;
be_local_closure(class_Matter_IM_SubscribedHeartbeat_reached_timeout, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_SubscribedHeartbeat,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(sub),
- /* K1 */ be_nested_str_weak(remove_self),
- }),
+ &be_ktab_class_Matter_IM_SubscribedHeartbeat, /* shared constants */
be_str_weak(reached_timeout),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
@@ -1215,18 +1599,17 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_reached_timeout, /* name
/********************************************************************
** Solidified function: status_ok_received
********************************************************************/
-extern const bclass be_class_Matter_IM_SubscribedHeartbeat;
be_local_closure(class_Matter_IM_SubscribedHeartbeat_status_ok_received, /* name */
be_nested_proto(
3, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_SubscribedHeartbeat,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM_SubscribedHeartbeat, /* shared constants */
be_str_weak(status_ok_received),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
@@ -1241,53 +1624,45 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_status_ok_received, /* na
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_IM_SubscribedHeartbeat;
be_local_closure(class_Matter_IM_SubscribedHeartbeat_init, /* name */
be_nested_proto(
- 11, /* nstack */
- 5, /* argc */
- 2, /* varg */
+ 10, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_SubscribedHeartbeat,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(resp),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(Frame),
- /* K3 */ be_nested_str_weak(initiate_response),
- /* K4 */ be_nested_str_weak(data),
- /* K5 */ be_nested_str_weak(ready),
- /* K6 */ be_nested_str_weak(expiration),
- /* K7 */ be_nested_str_weak(tasmota),
- /* K8 */ be_nested_str_weak(millis),
- /* K9 */ be_nested_str_weak(MSG_TIMEOUT),
- /* K10 */ be_nested_str_weak(sub),
- }),
+ &be_ktab_class_Matter_IM_SubscribedHeartbeat, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
- 0xB8160200, // 0000 GETNGBL R5 K1
- 0x88140B02, // 0001 GETMBR R5 R5 K2
- 0x8C140B03, // 0002 GETMET R5 R5 K3
- 0x5C1C0200, // 0003 MOVE R7 R1
- 0x5C200400, // 0004 MOVE R8 R2
- 0x54260004, // 0005 LDINT R9 5
- 0x50280200, // 0006 LDBOOL R10 1 0
- 0x7C140A00, // 0007 CALL R5 5
- 0x90020005, // 0008 SETMBR R0 K0 R5
- 0x90020803, // 0009 SETMBR R0 K4 R3
- 0x50140200, // 000A LDBOOL R5 1 0
- 0x90020A05, // 000B SETMBR R0 K5 R5
- 0xB8160E00, // 000C GETNGBL R5 K7
- 0x8C140B08, // 000D GETMET R5 R5 K8
- 0x7C140200, // 000E CALL R5 1
- 0x88180109, // 000F GETMBR R6 R0 K9
- 0x00140A06, // 0010 ADD R5 R5 R6
- 0x90020C05, // 0011 SETMBR R0 K6 R5
- 0x90021404, // 0012 SETMBR R0 K10 R4
- 0x80000000, // 0013 RET 0
+ ( &(const binstruction[25]) { /* code */
+ 0x60100003, // 0000 GETGBL R4 G3
+ 0x5C140000, // 0001 MOVE R5 R0
+ 0x7C100200, // 0002 CALL R4 1
+ 0x8C100905, // 0003 GETMET R4 R4 K5
+ 0x4C180000, // 0004 LDNIL R6
+ 0x4C1C0000, // 0005 LDNIL R7
+ 0x4C200000, // 0006 LDNIL R8
+ 0x7C100800, // 0007 CALL R4 4
+ 0xB8120E00, // 0008 GETNGBL R4 K7
+ 0x88100908, // 0009 GETMBR R4 R4 K8
+ 0x8C100909, // 000A GETMET R4 R4 K9
+ 0x5C180200, // 000B MOVE R6 R1
+ 0x5C1C0400, // 000C MOVE R7 R2
+ 0x54220004, // 000D LDINT R8 5
+ 0x50240200, // 000E LDBOOL R9 1 0
+ 0x7C100A00, // 000F CALL R4 5
+ 0x90020C04, // 0010 SETMBR R0 K6 R4
+ 0x90020003, // 0011 SETMBR R0 K0 R3
+ 0x8C10010A, // 0012 GETMET R4 R0 K10
+ 0x8818070B, // 0013 GETMBR R6 R3 K11
+ 0x7C100400, // 0014 CALL R4 2
+ 0x8C10010C, // 0015 GETMET R4 R0 K12
+ 0x50180200, // 0016 LDBOOL R6 1 0
+ 0x7C100400, // 0017 CALL R4 2
+ 0x80000000, // 0018 RET 0
})
)
);
@@ -1297,10 +1672,10 @@ be_local_closure(class_Matter_IM_SubscribedHeartbeat_init, /* name */
/********************************************************************
** Solidified class: Matter_IM_SubscribedHeartbeat
********************************************************************/
-extern const bclass be_class_Matter_IM_ReportData;
+extern const bclass be_class_Matter_IM_ReportData_Pull;
be_local_class(Matter_IM_SubscribedHeartbeat,
1,
- &be_class_Matter_IM_ReportData,
+ &be_class_Matter_IM_ReportData_Pull,
be_nested_map(7,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(init, 1), be_const_closure(class_Matter_IM_SubscribedHeartbeat_init_closure) },
@@ -1313,42 +1688,74 @@ be_local_class(Matter_IM_SubscribedHeartbeat,
})),
be_str_weak(Matter_IM_SubscribedHeartbeat)
);
+// compact class 'Matter_IM_SubscribeResponse_Pull' ktab size: 29, total: 36 (saved 56 bytes)
+static const bvalue be_ktab_class_Matter_IM_SubscribeResponse_Pull[29] = {
+ /* K0 */ be_nested_str_weak(init),
+ /* K1 */ be_nested_str_weak(sub),
+ /* K2 */ be_nested_str_weak(report_data_phase),
+ /* K3 */ be_nested_str_weak(set_subscription_id),
+ /* K4 */ be_nested_str_weak(subscription_id),
+ /* K5 */ be_nested_str_weak(tasmota),
+ /* K6 */ be_nested_str_weak(loglevel),
+ /* K7 */ be_const_int(3),
+ /* K8 */ be_nested_str_weak(log),
+ /* K9 */ be_nested_str_weak(MTR_X3A_X20_X3ESub_OK_X20_X20_X20_X20_X28_X256i_X29_X20sub_X3D_X25i),
+ /* K10 */ be_nested_str_weak(session),
+ /* K11 */ be_nested_str_weak(local_session_id),
+ /* K12 */ be_nested_str_weak(status_ok_received),
+ /* K13 */ be_nested_str_weak(finishing),
+ /* K14 */ be_nested_str_weak(send_im),
+ /* K15 */ be_nested_str_weak(ready),
+ /* K16 */ be_nested_str_weak(resp),
+ /* K17 */ be_nested_str_weak(matter),
+ /* K18 */ be_nested_str_weak(SubscribeResponseMessage),
+ /* K19 */ be_nested_str_weak(max_interval),
+ /* K20 */ be_nested_str_weak(opcode),
+ /* K21 */ be_nested_str_weak(encode_frame),
+ /* K22 */ be_nested_str_weak(to_TLV),
+ /* K23 */ be_nested_str_weak(tlv2raw),
+ /* K24 */ be_nested_str_weak(encrypt),
+ /* K25 */ be_nested_str_weak(send_response_frame),
+ /* K26 */ be_nested_str_weak(last_counter),
+ /* K27 */ be_nested_str_weak(message_counter),
+ /* K28 */ be_nested_str_weak(re_arm),
+};
-extern const bclass be_class_Matter_IM_SubscribeResponse;
+
+extern const bclass be_class_Matter_IM_SubscribeResponse_Pull;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_IM_SubscribeResponse;
-be_local_closure(class_Matter_IM_SubscribeResponse_init, /* name */
+be_local_closure(class_Matter_IM_SubscribeResponse_Pull_init, /* name */
be_nested_proto(
- 8, /* nstack */
- 4, /* argc */
- 2, /* varg */
+ 10, /* nstack */
+ 5, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_SubscribeResponse,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(sub),
- /* K2 */ be_nested_str_weak(report_data_phase),
- }),
+ &be_ktab_class_Matter_IM_SubscribeResponse_Pull, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
- ( &(const binstruction[11]) { /* code */
- 0x60100003, // 0000 GETGBL R4 G3
- 0x5C140000, // 0001 MOVE R5 R0
- 0x7C100200, // 0002 CALL R4 1
- 0x8C100900, // 0003 GETMET R4 R4 K0
- 0x5C180200, // 0004 MOVE R6 R1
- 0x5C1C0400, // 0005 MOVE R7 R2
- 0x7C100600, // 0006 CALL R4 3
- 0x90020203, // 0007 SETMBR R0 K1 R3
- 0x50100200, // 0008 LDBOOL R4 1 0
- 0x90020404, // 0009 SETMBR R0 K2 R4
- 0x80000000, // 000A RET 0
+ ( &(const binstruction[15]) { /* code */
+ 0x60140003, // 0000 GETGBL R5 G3
+ 0x5C180000, // 0001 MOVE R6 R0
+ 0x7C140200, // 0002 CALL R5 1
+ 0x8C140B00, // 0003 GETMET R5 R5 K0
+ 0x5C1C0200, // 0004 MOVE R7 R1
+ 0x5C200400, // 0005 MOVE R8 R2
+ 0x5C240600, // 0006 MOVE R9 R3
+ 0x7C140800, // 0007 CALL R5 4
+ 0x90020204, // 0008 SETMBR R0 K1 R4
+ 0x50140200, // 0009 LDBOOL R5 1 0
+ 0x90020405, // 000A SETMBR R0 K2 R5
+ 0x8C140103, // 000B GETMET R5 R0 K3
+ 0x881C0904, // 000C GETMBR R7 R4 K4
+ 0x7C140400, // 000D CALL R5 2
+ 0x80000000, // 000E RET 0
})
)
);
@@ -1358,55 +1765,46 @@ be_local_closure(class_Matter_IM_SubscribeResponse_init, /* name */
/********************************************************************
** Solidified function: status_ok_received
********************************************************************/
-extern const bclass be_class_Matter_IM_SubscribeResponse;
-be_local_closure(class_Matter_IM_SubscribeResponse_status_ok_received, /* name */
+be_local_closure(class_Matter_IM_SubscribeResponse_Pull_status_ok_received, /* name */
be_nested_proto(
- 8, /* nstack */
+ 7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_SubscribeResponse,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(loglevel),
- /* K2 */ be_const_int(3),
- /* K3 */ be_nested_str_weak(log),
- /* K4 */ be_nested_str_weak(MTR_X3A_X20_X3ESub_OK_X20_X20_X20_X20_X28_X256i_X29_X20sub_X3D_X25i),
- /* K5 */ be_nested_str_weak(session),
- /* K6 */ be_nested_str_weak(local_session_id),
- /* K7 */ be_nested_str_weak(sub),
- /* K8 */ be_nested_str_weak(subscription_id),
- /* K9 */ be_nested_str_weak(status_ok_received),
- }),
+ &be_ktab_class_Matter_IM_SubscribeResponse_Pull, /* shared constants */
be_str_weak(status_ok_received),
&be_const_str_solidified,
- ( &(const binstruction[23]) { /* code */
- 0xB80A0000, // 0000 GETNGBL R2 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x58100002, // 0002 LDCONST R4 K2
+ ( &(const binstruction[26]) { /* code */
+ 0xB80A0A00, // 0000 GETNGBL R2 K5
+ 0x8C080506, // 0001 GETMET R2 R2 K6
+ 0x58100007, // 0002 LDCONST R4 K7
0x7C080400, // 0003 CALL R2 2
- 0x780A000A, // 0004 JMPF R2 #0010
- 0xB80A0000, // 0005 GETNGBL R2 K0
- 0x8C080503, // 0006 GETMET R2 R2 K3
- 0x60100018, // 0007 GETGBL R4 G24
- 0x58140004, // 0008 LDCONST R5 K4
- 0x88180305, // 0009 GETMBR R6 R1 K5
- 0x88180D06, // 000A GETMBR R6 R6 K6
- 0x881C0107, // 000B GETMBR R7 R0 K7
- 0x881C0F08, // 000C GETMBR R7 R7 K8
- 0x7C100600, // 000D CALL R4 3
- 0x58140002, // 000E LDCONST R5 K2
- 0x7C080600, // 000F CALL R2 3
- 0x60080003, // 0010 GETGBL R2 G3
- 0x5C0C0000, // 0011 MOVE R3 R0
- 0x7C080200, // 0012 CALL R2 1
- 0x8C080509, // 0013 GETMET R2 R2 K9
- 0x5C100200, // 0014 MOVE R4 R1
- 0x7C080400, // 0015 CALL R2 2
- 0x80040400, // 0016 RET 1 R2
+ 0x780A0009, // 0004 JMPF R2 #000F
+ 0xB80A1000, // 0005 GETNGBL R2 K8
+ 0x600C0018, // 0006 GETGBL R3 G24
+ 0x58100009, // 0007 LDCONST R4 K9
+ 0x8814030A, // 0008 GETMBR R5 R1 K10
+ 0x88140B0B, // 0009 GETMBR R5 R5 K11
+ 0x88180101, // 000A GETMBR R6 R0 K1
+ 0x88180D04, // 000B GETMBR R6 R6 K4
+ 0x7C0C0600, // 000C CALL R3 3
+ 0x58100007, // 000D LDCONST R4 K7
+ 0x7C080400, // 000E CALL R2 2
+ 0x60080003, // 000F GETGBL R2 G3
+ 0x5C0C0000, // 0010 MOVE R3 R0
+ 0x7C080200, // 0011 CALL R2 1
+ 0x8C08050C, // 0012 GETMET R2 R2 K12
+ 0x5C100200, // 0013 MOVE R4 R1
+ 0x7C080400, // 0014 CALL R2 2
+ 0x80040400, // 0015 RET 1 R2
+ 0x88080102, // 0016 GETMBR R2 R0 K2
+ 0x740A0001, // 0017 JMPT R2 #001A
+ 0x50080200, // 0018 LDBOOL R2 1 0
+ 0x90021A02, // 0019 SETMBR R0 K13 R2
})
)
);
@@ -1416,94 +1814,69 @@ be_local_closure(class_Matter_IM_SubscribeResponse_status_ok_received, /* name
/********************************************************************
** Solidified function: send_im
********************************************************************/
-extern const bclass be_class_Matter_IM_SubscribeResponse;
-be_local_closure(class_Matter_IM_SubscribeResponse_send_im, /* name */
+be_local_closure(class_Matter_IM_SubscribeResponse_Pull_send_im, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_SubscribeResponse,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[19]) { /* constants */
- /* K0 */ be_nested_str_weak(ready),
- /* K1 */ be_nested_str_weak(report_data_phase),
- /* K2 */ be_nested_str_weak(send_im),
- /* K3 */ be_nested_str_weak(finish),
- /* K4 */ be_nested_str_weak(resp),
- /* K5 */ be_nested_str_weak(matter),
- /* K6 */ be_nested_str_weak(SubscribeResponseMessage),
- /* K7 */ be_nested_str_weak(subscription_id),
- /* K8 */ be_nested_str_weak(sub),
- /* K9 */ be_nested_str_weak(max_interval),
- /* K10 */ be_nested_str_weak(opcode),
- /* K11 */ be_nested_str_weak(encode_frame),
- /* K12 */ be_nested_str_weak(to_TLV),
- /* K13 */ be_nested_str_weak(tlv2raw),
- /* K14 */ be_nested_str_weak(encrypt),
- /* K15 */ be_nested_str_weak(send_response_frame),
- /* K16 */ be_nested_str_weak(last_counter),
- /* K17 */ be_nested_str_weak(message_counter),
- /* K18 */ be_nested_str_weak(re_arm),
- }),
+ &be_ktab_class_Matter_IM_SubscribeResponse_Pull, /* shared constants */
be_str_weak(send_im),
&be_const_str_solidified,
- ( &(const binstruction[53]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x740A0001, // 0001 JMPT R2 #0004
- 0x50080000, // 0002 LDBOOL R2 0 0
- 0x80040400, // 0003 RET 1 R2
- 0x88080101, // 0004 GETMBR R2 R0 K1
- 0x780A000E, // 0005 JMPF R2 #0015
- 0x60080003, // 0006 GETGBL R2 G3
- 0x5C0C0000, // 0007 MOVE R3 R0
- 0x7C080200, // 0008 CALL R2 1
- 0x8C080502, // 0009 GETMET R2 R2 K2
- 0x5C100200, // 000A MOVE R4 R1
- 0x7C080400, // 000B CALL R2 2
- 0x88080103, // 000C GETMBR R2 R0 K3
- 0x780A0003, // 000D JMPF R2 #0012
+ ( &(const binstruction[49]) { /* code */
+ 0x88080102, // 0000 GETMBR R2 R0 K2
+ 0x780A000E, // 0001 JMPF R2 #0011
+ 0x60080003, // 0002 GETGBL R2 G3
+ 0x5C0C0000, // 0003 MOVE R3 R0
+ 0x7C080200, // 0004 CALL R2 1
+ 0x8C08050E, // 0005 GETMET R2 R2 K14
+ 0x5C100200, // 0006 MOVE R4 R1
+ 0x7C080400, // 0007 CALL R2 2
+ 0x8808010D, // 0008 GETMBR R2 R0 K13
+ 0x780A0003, // 0009 JMPF R2 #000E
+ 0x50080000, // 000A LDBOOL R2 0 0
+ 0x90020402, // 000B SETMBR R0 K2 R2
+ 0x50080000, // 000C LDBOOL R2 0 0
+ 0x90021A02, // 000D SETMBR R0 K13 R2
0x50080000, // 000E LDBOOL R2 0 0
- 0x90020202, // 000F SETMBR R0 K1 R2
- 0x50080000, // 0010 LDBOOL R2 0 0
- 0x90020602, // 0011 SETMBR R0 K3 R2
- 0x50080000, // 0012 LDBOOL R2 0 0
- 0x90020002, // 0013 SETMBR R0 K0 R2
- 0x7002001E, // 0014 JMP #0034
- 0x88080104, // 0015 GETMBR R2 R0 K4
- 0xB80E0A00, // 0016 GETNGBL R3 K5
- 0x8C0C0706, // 0017 GETMET R3 R3 K6
- 0x7C0C0200, // 0018 CALL R3 1
- 0x88100108, // 0019 GETMBR R4 R0 K8
- 0x88100907, // 001A GETMBR R4 R4 K7
- 0x900E0E04, // 001B SETMBR R3 K7 R4
- 0x88100108, // 001C GETMBR R4 R0 K8
- 0x88100909, // 001D GETMBR R4 R4 K9
- 0x900E1204, // 001E SETMBR R3 K9 R4
- 0x88100104, // 001F GETMBR R4 R0 K4
- 0x54160003, // 0020 LDINT R5 4
- 0x90121405, // 0021 SETMBR R4 K10 R5
- 0x8C10050B, // 0022 GETMET R4 R2 K11
- 0x8C18070C, // 0023 GETMET R6 R3 K12
- 0x7C180200, // 0024 CALL R6 1
- 0x8C180D0D, // 0025 GETMET R6 R6 K13
- 0x7C180200, // 0026 CALL R6 1
- 0x7C100400, // 0027 CALL R4 2
- 0x8C10050E, // 0028 GETMET R4 R2 K14
- 0x7C100200, // 0029 CALL R4 1
- 0x8C10030F, // 002A GETMET R4 R1 K15
- 0x5C180400, // 002B MOVE R6 R2
- 0x7C100400, // 002C CALL R4 2
- 0x88100511, // 002D GETMBR R4 R2 K17
- 0x90022004, // 002E SETMBR R0 K16 R4
- 0x88100108, // 002F GETMBR R4 R0 K8
- 0x8C100912, // 0030 GETMET R4 R4 K18
- 0x7C100200, // 0031 CALL R4 1
- 0x50100200, // 0032 LDBOOL R4 1 0
- 0x90020604, // 0033 SETMBR R0 K3 R4
- 0x80000000, // 0034 RET 0
+ 0x90021E02, // 000F SETMBR R0 K15 R2
+ 0x7002001E, // 0010 JMP #0030
+ 0x88080110, // 0011 GETMBR R2 R0 K16
+ 0xB80E2200, // 0012 GETNGBL R3 K17
+ 0x8C0C0712, // 0013 GETMET R3 R3 K18
+ 0x7C0C0200, // 0014 CALL R3 1
+ 0x88100101, // 0015 GETMBR R4 R0 K1
+ 0x88100904, // 0016 GETMBR R4 R4 K4
+ 0x900E0804, // 0017 SETMBR R3 K4 R4
+ 0x88100101, // 0018 GETMBR R4 R0 K1
+ 0x88100913, // 0019 GETMBR R4 R4 K19
+ 0x900E2604, // 001A SETMBR R3 K19 R4
+ 0x88100110, // 001B GETMBR R4 R0 K16
+ 0x54160003, // 001C LDINT R5 4
+ 0x90122805, // 001D SETMBR R4 K20 R5
+ 0x8C100515, // 001E GETMET R4 R2 K21
+ 0x8C180716, // 001F GETMET R6 R3 K22
+ 0x7C180200, // 0020 CALL R6 1
+ 0x8C180D17, // 0021 GETMET R6 R6 K23
+ 0x7C180200, // 0022 CALL R6 1
+ 0x7C100400, // 0023 CALL R4 2
+ 0x8C100518, // 0024 GETMET R4 R2 K24
+ 0x7C100200, // 0025 CALL R4 1
+ 0x8C100319, // 0026 GETMET R4 R1 K25
+ 0x5C180400, // 0027 MOVE R6 R2
+ 0x7C100400, // 0028 CALL R4 2
+ 0x8810051B, // 0029 GETMBR R4 R2 K27
+ 0x90023404, // 002A SETMBR R0 K26 R4
+ 0x88100101, // 002B GETMBR R4 R0 K1
+ 0x8C10091C, // 002C GETMET R4 R4 K28
+ 0x7C100200, // 002D CALL R4 1
+ 0x50100200, // 002E LDBOOL R4 1 0
+ 0x90021A04, // 002F SETMBR R0 K13 R4
+ 0x80000000, // 0030 RET 0
})
)
);
@@ -1511,21 +1884,21 @@ be_local_closure(class_Matter_IM_SubscribeResponse_send_im, /* name */
/********************************************************************
-** Solidified class: Matter_IM_SubscribeResponse
+** Solidified class: Matter_IM_SubscribeResponse_Pull
********************************************************************/
-extern const bclass be_class_Matter_IM_ReportData;
-be_local_class(Matter_IM_SubscribeResponse,
+extern const bclass be_class_Matter_IM_ReportData_Pull;
+be_local_class(Matter_IM_SubscribeResponse_Pull,
2,
- &be_class_Matter_IM_ReportData,
+ &be_class_Matter_IM_ReportData_Pull,
be_nested_map(5,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(init, 4), be_const_closure(class_Matter_IM_SubscribeResponse_init_closure) },
+ { be_const_key_weak(init, 4), be_const_closure(class_Matter_IM_SubscribeResponse_Pull_init_closure) },
{ be_const_key_weak(sub, -1), be_const_var(0) },
- { be_const_key_weak(status_ok_received, -1), be_const_closure(class_Matter_IM_SubscribeResponse_status_ok_received_closure) },
- { be_const_key_weak(send_im, -1), be_const_closure(class_Matter_IM_SubscribeResponse_send_im_closure) },
+ { be_const_key_weak(status_ok_received, -1), be_const_closure(class_Matter_IM_SubscribeResponse_Pull_status_ok_received_closure) },
+ { be_const_key_weak(send_im, -1), be_const_closure(class_Matter_IM_SubscribeResponse_Pull_send_im_closure) },
{ be_const_key_weak(report_data_phase, -1), be_const_var(1) },
})),
- be_str_weak(Matter_IM_SubscribeResponse)
+ be_str_weak(Matter_IM_SubscribeResponse_Pull)
);
/********************************************************************/
/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h
index 0f715f024..ff0a4ee78 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Subscription.h
@@ -3,250 +3,101 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_IM_Subscription' ktab size: 47, total: 79 (saved 256 bytes)
+static const bvalue be_ktab_class_Matter_IM_Subscription[47] = {
+ /* K0 */ be_nested_str_weak(update_event_no),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str_weak(event_generators),
+ /* K3 */ be_nested_str_weak(event_is_match),
+ /* K4 */ be_nested_str_weak(event_no),
+ /* K5 */ be_nested_str_weak(add),
+ /* K6 */ be_const_int(1),
+ /* K7 */ be_nested_str_weak(path_list),
+ /* K8 */ be_nested_str_weak(endpoint),
+ /* K9 */ be_nested_str_weak(cluster),
+ /* K10 */ be_nested_str_weak(attribute),
+ /* K11 */ be_nested_str_weak(_add_attribute_unique_path),
+ /* K12 */ be_nested_str_weak(updates),
+ /* K13 */ be_nested_str_weak(clear),
+ /* K14 */ be_nested_str_weak(wait_status),
+ /* K15 */ be_nested_str_weak(subs_shop),
+ /* K16 */ be_nested_str_weak(subscription_id),
+ /* K17 */ be_nested_str_weak(session),
+ /* K18 */ be_nested_str_weak(min_interval_floor),
+ /* K19 */ be_nested_str_weak(min_interval),
+ /* K20 */ be_nested_str_weak(max_interval_ceiling),
+ /* K21 */ be_nested_str_weak(max_interval),
+ /* K22 */ be_nested_str_weak(fabric_filtered),
+ /* K23 */ be_nested_str_weak(im),
+ /* K24 */ be_nested_str_weak(device),
+ /* K25 */ be_nested_str_weak(attributes_requests),
+ /* K26 */ be_nested_str_weak(push),
+ /* K27 */ be_nested_str_weak(matter),
+ /* K28 */ be_nested_str_weak(Path),
+ /* K29 */ be_nested_str_weak(stop_iteration),
+ /* K30 */ be_nested_str_weak(IM),
+ /* K31 */ be_nested_str_weak(parse_event_filters_min_no),
+ /* K32 */ be_nested_str_weak(event_filters),
+ /* K33 */ be_nested_str_weak(clear_before_arm),
+ /* K34 */ be_nested_str_weak(is_keep_alive),
+ /* K35 */ be_nested_str_weak(restart_from),
+ /* K36 */ be_nested_str_weak(resize),
+ /* K37 */ be_nested_str_weak(tasmota),
+ /* K38 */ be_nested_str_weak(millis),
+ /* K39 */ be_nested_str_weak(expiration),
+ /* K40 */ be_nested_str_weak(MAX_INTERVAL_MARGIN),
+ /* K41 */ be_nested_str_weak(not_before),
+ /* K42 */ be_nested_str_weak(log),
+ /* K43 */ be_nested_str_weak(MTR_X3A_X20_X2ESub_Done_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D_X25i),
+ /* K44 */ be_const_int(3),
+ /* K45 */ be_nested_str_weak(MTR_X3A_X20_X2DSub_Del_X20_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D),
+ /* K46 */ be_nested_str_weak(remove_sub),
+};
+
extern const bclass be_class_Matter_IM_Subscription;
/********************************************************************
-** Solidified function: init
+** Solidified function: event_published
********************************************************************/
-extern const bclass be_class_Matter_IM_Subscription;
-be_local_closure(class_Matter_IM_Subscription_init, /* name */
- be_nested_proto(
- 13, /* nstack */
- 5, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_IM_Subscription,
- 1, /* has constants */
- ( &(const bvalue[22]) { /* constants */
- /* K0 */ be_nested_str_weak(subs_shop),
- /* K1 */ be_nested_str_weak(subscription_id),
- /* K2 */ be_nested_str_weak(session),
- /* K3 */ be_nested_str_weak(min_interval_floor),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(min_interval),
- /* K6 */ be_nested_str_weak(max_interval_ceiling),
- /* K7 */ be_nested_str_weak(max_interval),
- /* K8 */ be_nested_str_weak(wait_status),
- /* K9 */ be_nested_str_weak(fabric_filtered),
- /* K10 */ be_nested_str_weak(path_list),
- /* K11 */ be_nested_str_weak(attributes_requests),
- /* K12 */ be_nested_str_weak(matter),
- /* K13 */ be_nested_str_weak(Path),
- /* K14 */ be_nested_str_weak(endpoint),
- /* K15 */ be_nested_str_weak(cluster),
- /* K16 */ be_nested_str_weak(attribute),
- /* K17 */ be_nested_str_weak(push),
- /* K18 */ be_nested_str_weak(stop_iteration),
- /* K19 */ be_nested_str_weak(updates),
- /* K20 */ be_nested_str_weak(clear_before_arm),
- /* K21 */ be_nested_str_weak(is_keep_alive),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[61]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
- 0x90020403, // 0002 SETMBR R0 K2 R3
- 0x88140903, // 0003 GETMBR R5 R4 K3
- 0x14180B04, // 0004 LT R6 R5 K4
- 0x781A0000, // 0005 JMPF R6 #0007
- 0x58140004, // 0006 LDCONST R5 K4
- 0x541A003B, // 0007 LDINT R6 60
- 0x24180A06, // 0008 GT R6 R5 R6
- 0x781A0000, // 0009 JMPF R6 #000B
- 0x5416003B, // 000A LDINT R5 60
- 0x90020A05, // 000B SETMBR R0 K5 R5
- 0x88180906, // 000C GETMBR R6 R4 K6
- 0x541E003B, // 000D LDINT R7 60
- 0x141C0C07, // 000E LT R7 R6 R7
- 0x781E0000, // 000F JMPF R7 #0011
- 0x541A003B, // 0010 LDINT R6 60
- 0x541E0E0F, // 0011 LDINT R7 3600
- 0x241C0C07, // 0012 GT R7 R6 R7
- 0x781E0000, // 0013 JMPF R7 #0015
- 0x541A0E0F, // 0014 LDINT R6 3600
- 0x541A003B, // 0015 LDINT R6 60
- 0x90020E06, // 0016 SETMBR R0 K7 R6
- 0x501C0000, // 0017 LDBOOL R7 0 0
- 0x90021007, // 0018 SETMBR R0 K8 R7
- 0x881C0909, // 0019 GETMBR R7 R4 K9
- 0x90021207, // 001A SETMBR R0 K9 R7
- 0x601C0012, // 001B GETGBL R7 G18
- 0x7C1C0000, // 001C CALL R7 0
- 0x90021407, // 001D SETMBR R0 K10 R7
- 0x601C0010, // 001E GETGBL R7 G16
- 0x8820090B, // 001F GETMBR R8 R4 K11
- 0x7C1C0200, // 0020 CALL R7 1
- 0xA802000F, // 0021 EXBLK 0 #0032
- 0x5C200E00, // 0022 MOVE R8 R7
- 0x7C200000, // 0023 CALL R8 0
- 0xB8261800, // 0024 GETNGBL R9 K12
- 0x8C24130D, // 0025 GETMET R9 R9 K13
- 0x7C240200, // 0026 CALL R9 1
- 0x8828110E, // 0027 GETMBR R10 R8 K14
- 0x90261C0A, // 0028 SETMBR R9 K14 R10
- 0x8828110F, // 0029 GETMBR R10 R8 K15
- 0x90261E0A, // 002A SETMBR R9 K15 R10
- 0x88281110, // 002B GETMBR R10 R8 K16
- 0x9026200A, // 002C SETMBR R9 K16 R10
- 0x8828010A, // 002D GETMBR R10 R0 K10
- 0x8C281511, // 002E GETMET R10 R10 K17
- 0x5C301200, // 002F MOVE R12 R9
- 0x7C280400, // 0030 CALL R10 2
- 0x7001FFEF, // 0031 JMP #0022
- 0x581C0012, // 0032 LDCONST R7 K18
- 0xAC1C0200, // 0033 CATCH R7 1 0
- 0xB0080000, // 0034 RAISE 2 R0 R0
- 0x601C0012, // 0035 GETGBL R7 G18
- 0x7C1C0000, // 0036 CALL R7 0
- 0x90022607, // 0037 SETMBR R0 K19 R7
- 0x8C1C0114, // 0038 GETMET R7 R0 K20
- 0x7C1C0200, // 0039 CALL R7 1
- 0x501C0000, // 003A LDBOOL R7 0 0
- 0x90022A07, // 003B SETMBR R0 K21 R7
- 0x80000000, // 003C RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: _add_attribute_unique_path
-********************************************************************/
-extern const bclass be_class_Matter_IM_Subscription;
-be_local_closure(class_Matter_IM_Subscription__add_attribute_unique_path, /* name */
+be_local_closure(class_Matter_IM_Subscription_event_published, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_Subscription,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(updates),
- /* K2 */ be_nested_str_weak(endpoint),
- /* K3 */ be_nested_str_weak(cluster),
- /* K4 */ be_nested_str_weak(attribute),
- /* K5 */ be_const_int(1),
- /* K6 */ be_nested_str_weak(push),
- }),
- be_str_weak(_add_attribute_unique_path),
+ &be_ktab_class_Matter_IM_Subscription, /* shared constants */
+ be_str_weak(event_published),
&be_const_str_solidified,
- ( &(const binstruction[28]) { /* code */
- 0x58080000, // 0000 LDCONST R2 K0
- 0x600C000C, // 0001 GETGBL R3 G12
- 0x88100101, // 0002 GETMBR R4 R0 K1
- 0x7C0C0200, // 0003 CALL R3 1
- 0x140C0403, // 0004 LT R3 R2 R3
- 0x780E0010, // 0005 JMPF R3 #0017
- 0x880C0101, // 0006 GETMBR R3 R0 K1
- 0x940C0602, // 0007 GETIDX R3 R3 R2
- 0x88100702, // 0008 GETMBR R4 R3 K2
- 0x88140302, // 0009 GETMBR R5 R1 K2
- 0x1C100805, // 000A EQ R4 R4 R5
- 0x78120008, // 000B JMPF R4 #0015
- 0x88100703, // 000C GETMBR R4 R3 K3
- 0x88140303, // 000D GETMBR R5 R1 K3
- 0x1C100805, // 000E EQ R4 R4 R5
- 0x78120004, // 000F JMPF R4 #0015
- 0x88100704, // 0010 GETMBR R4 R3 K4
- 0x88140304, // 0011 GETMBR R5 R1 K4
- 0x1C100805, // 0012 EQ R4 R4 R5
- 0x78120000, // 0013 JMPF R4 #0015
- 0x80000800, // 0014 RET 0
- 0x00080505, // 0015 ADD R2 R2 K5
- 0x7001FFE9, // 0016 JMP #0001
- 0x880C0101, // 0017 GETMBR R3 R0 K1
- 0x8C0C0706, // 0018 GETMET R3 R3 K6
- 0x5C140200, // 0019 MOVE R5 R1
- 0x7C0C0400, // 001A CALL R3 2
- 0x80000000, // 001B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: remove_self
-********************************************************************/
-extern const bclass be_class_Matter_IM_Subscription;
-be_local_closure(class_Matter_IM_Subscription_remove_self, /* name */
- be_nested_proto(
- 5, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_IM_Subscription,
- 1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(log),
- /* K2 */ be_nested_str_weak(MTR_X3A_X20_X2DSub_Del_X20_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D),
- /* K3 */ be_nested_str_weak(subscription_id),
- /* K4 */ be_const_int(3),
- /* K5 */ be_nested_str_weak(subs_shop),
- /* K6 */ be_nested_str_weak(remove_sub),
- }),
- be_str_weak(remove_self),
- &be_const_str_solidified,
- ( &(const binstruction[13]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x600C0008, // 0002 GETGBL R3 G8
- 0x88100103, // 0003 GETMBR R4 R0 K3
- 0x7C0C0200, // 0004 CALL R3 1
- 0x000E0403, // 0005 ADD R3 K2 R3
- 0x58100004, // 0006 LDCONST R4 K4
- 0x7C040600, // 0007 CALL R1 3
- 0x88040105, // 0008 GETMBR R1 R0 K5
- 0x8C040306, // 0009 GETMET R1 R1 K6
- 0x5C0C0000, // 000A MOVE R3 R0
- 0x7C040400, // 000B CALL R1 2
- 0x80000000, // 000C RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: clear_before_arm
-********************************************************************/
-extern const bclass be_class_Matter_IM_Subscription;
-be_local_closure(class_Matter_IM_Subscription_clear_before_arm, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_IM_Subscription,
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(updates),
- /* K1 */ be_nested_str_weak(clear),
- /* K2 */ be_nested_str_weak(wait_status),
- }),
- be_str_weak(clear_before_arm),
- &be_const_str_solidified,
- ( &(const binstruction[ 6]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x50040200, // 0003 LDBOOL R1 1 0
- 0x90020401, // 0004 SETMBR R0 K2 R1
- 0x80000000, // 0005 RET 0
+ ( &(const binstruction[24]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x4C0C0000, // 0001 LDNIL R3
+ 0x1C080403, // 0002 EQ R2 R2 R3
+ 0x780A0012, // 0003 JMPF R2 #0017
+ 0x58080001, // 0004 LDCONST R2 K1
+ 0x600C000C, // 0005 GETGBL R3 G12
+ 0x88100102, // 0006 GETMBR R4 R0 K2
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0x140C0403, // 0008 LT R3 R2 R3
+ 0x780E000C, // 0009 JMPF R3 #0017
+ 0x880C0102, // 000A GETMBR R3 R0 K2
+ 0x940C0602, // 000B GETIDX R3 R3 R2
+ 0x8C0C0703, // 000C GETMET R3 R3 K3
+ 0x5C140200, // 000D MOVE R5 R1
+ 0x7C0C0400, // 000E CALL R3 2
+ 0x780E0004, // 000F JMPF R3 #0015
+ 0x880C0304, // 0010 GETMBR R3 R1 K4
+ 0x8C0C0705, // 0011 GETMET R3 R3 K5
+ 0x5415FFFE, // 0012 LDINT R5 -1
+ 0x7C0C0400, // 0013 CALL R3 2
+ 0x90020003, // 0014 SETMBR R0 K0 R3
+ 0x00080506, // 0015 ADD R2 R2 K6
+ 0x7001FFED, // 0016 JMP #0005
+ 0x80000000, // 0017 RET 0
})
)
);
@@ -256,62 +107,53 @@ be_local_closure(class_Matter_IM_Subscription_clear_before_arm, /* name */
/********************************************************************
** Solidified function: attribute_updated_ctx
********************************************************************/
-extern const bclass be_class_Matter_IM_Subscription;
be_local_closure(class_Matter_IM_Subscription_attribute_updated_ctx, /* name */
be_nested_proto(
8, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_Subscription,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(path_list),
- /* K2 */ be_nested_str_weak(endpoint),
- /* K3 */ be_nested_str_weak(cluster),
- /* K4 */ be_nested_str_weak(attribute),
- /* K5 */ be_nested_str_weak(_add_attribute_unique_path),
- /* K6 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_IM_Subscription, /* shared constants */
be_str_weak(attribute_updated_ctx),
&be_const_str_solidified,
( &(const binstruction[38]) { /* code */
- 0x580C0000, // 0000 LDCONST R3 K0
+ 0x580C0001, // 0000 LDCONST R3 K1
0x6010000C, // 0001 GETGBL R4 G12
- 0x88140101, // 0002 GETMBR R5 R0 K1
+ 0x88140107, // 0002 GETMBR R5 R0 K7
0x7C100200, // 0003 CALL R4 1
0x14100604, // 0004 LT R4 R3 R4
0x7812001E, // 0005 JMPF R4 #0025
- 0x88100101, // 0006 GETMBR R4 R0 K1
+ 0x88100107, // 0006 GETMBR R4 R0 K7
0x94100803, // 0007 GETIDX R4 R4 R3
- 0x88140902, // 0008 GETMBR R5 R4 K2
+ 0x88140908, // 0008 GETMBR R5 R4 K8
0x4C180000, // 0009 LDNIL R6
0x1C140A06, // 000A EQ R5 R5 R6
0x74160003, // 000B JMPT R5 #0010
- 0x88140902, // 000C GETMBR R5 R4 K2
- 0x88180302, // 000D GETMBR R6 R1 K2
+ 0x88140908, // 000C GETMBR R5 R4 K8
+ 0x88180308, // 000D GETMBR R6 R1 K8
0x1C140A06, // 000E EQ R5 R5 R6
0x78160012, // 000F JMPF R5 #0023
- 0x88140903, // 0010 GETMBR R5 R4 K3
+ 0x88140909, // 0010 GETMBR R5 R4 K9
0x4C180000, // 0011 LDNIL R6
0x1C140A06, // 0012 EQ R5 R5 R6
0x74160003, // 0013 JMPT R5 #0018
- 0x88140903, // 0014 GETMBR R5 R4 K3
- 0x88180303, // 0015 GETMBR R6 R1 K3
+ 0x88140909, // 0014 GETMBR R5 R4 K9
+ 0x88180309, // 0015 GETMBR R6 R1 K9
0x1C140A06, // 0016 EQ R5 R5 R6
0x7816000A, // 0017 JMPF R5 #0023
- 0x88140904, // 0018 GETMBR R5 R4 K4
+ 0x8814090A, // 0018 GETMBR R5 R4 K10
0x4C180000, // 0019 LDNIL R6
0x1C140A06, // 001A EQ R5 R5 R6
0x74160003, // 001B JMPT R5 #0020
- 0x88140904, // 001C GETMBR R5 R4 K4
- 0x88180304, // 001D GETMBR R6 R1 K4
+ 0x8814090A, // 001C GETMBR R5 R4 K10
+ 0x8818030A, // 001D GETMBR R6 R1 K10
0x1C140A06, // 001E EQ R5 R5 R6
0x78160002, // 001F JMPF R5 #0023
- 0x8C140105, // 0020 GETMET R5 R0 K5
+ 0x8C14010B, // 0020 GETMET R5 R0 K11
0x5C1C0200, // 0021 MOVE R7 R1
0x7C140400, // 0022 CALL R5 2
0x000C0706, // 0023 ADD R3 R3 K6
@@ -324,67 +166,373 @@ be_local_closure(class_Matter_IM_Subscription_attribute_updated_ctx, /* name *
/********************************************************************
-** Solidified function: re_arm
+** Solidified function: clear_before_arm
********************************************************************/
-extern const bclass be_class_Matter_IM_Subscription;
-be_local_closure(class_Matter_IM_Subscription_re_arm, /* name */
+be_local_closure(class_Matter_IM_Subscription_clear_before_arm, /* name */
be_nested_proto(
- 7, /* nstack */
+ 3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_Subscription,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(wait_status),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(millis),
- /* K3 */ be_nested_str_weak(expiration),
- /* K4 */ be_nested_str_weak(max_interval),
- /* K5 */ be_nested_str_weak(MAX_INTERVAL_MARGIN),
- /* K6 */ be_nested_str_weak(not_before),
- /* K7 */ be_nested_str_weak(min_interval),
- /* K8 */ be_const_int(1),
- /* K9 */ be_nested_str_weak(is_keep_alive),
- /* K10 */ be_nested_str_weak(log),
- /* K11 */ be_nested_str_weak(MTR_X3A_X20_X2ESub_Done_X20_X20_X28_X20_X20_X20_X20_X20_X20_X29_X20sub_X3D_X25i),
- /* K12 */ be_nested_str_weak(subscription_id),
- /* K13 */ be_const_int(3),
- }),
+ &be_ktab_class_Matter_IM_Subscription, /* shared constants */
+ be_str_weak(clear_before_arm),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 8]) { /* code */
+ 0x8804010C, // 0000 GETMBR R1 R0 K12
+ 0x8C04030D, // 0001 GETMET R1 R1 K13
+ 0x7C040200, // 0002 CALL R1 1
+ 0x50040200, // 0003 LDBOOL R1 1 0
+ 0x90021C01, // 0004 SETMBR R0 K14 R1
+ 0x4C040000, // 0005 LDNIL R1
+ 0x90020001, // 0006 SETMBR R0 K0 R1
+ 0x80000000, // 0007 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_IM_Subscription_init, /* name */
+ be_nested_proto(
+ 17, /* nstack */
+ 5, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM_Subscription, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[69]) { /* code */
+ 0x90021E01, // 0000 SETMBR R0 K15 R1
+ 0x90022002, // 0001 SETMBR R0 K16 R2
+ 0x90022203, // 0002 SETMBR R0 K17 R3
+ 0x88140912, // 0003 GETMBR R5 R4 K18
+ 0x14180B01, // 0004 LT R6 R5 K1
+ 0x781A0000, // 0005 JMPF R6 #0007
+ 0x58140001, // 0006 LDCONST R5 K1
+ 0x541A003B, // 0007 LDINT R6 60
+ 0x24180A06, // 0008 GT R6 R5 R6
+ 0x781A0000, // 0009 JMPF R6 #000B
+ 0x5416003B, // 000A LDINT R5 60
+ 0x90022605, // 000B SETMBR R0 K19 R5
+ 0x88180914, // 000C GETMBR R6 R4 K20
+ 0x541E003B, // 000D LDINT R7 60
+ 0x141C0C07, // 000E LT R7 R6 R7
+ 0x781E0000, // 000F JMPF R7 #0011
+ 0x541A003B, // 0010 LDINT R6 60
+ 0x541E0E0F, // 0011 LDINT R7 3600
+ 0x241C0C07, // 0012 GT R7 R6 R7
+ 0x781E0000, // 0013 JMPF R7 #0015
+ 0x541A0E0F, // 0014 LDINT R6 3600
+ 0x541A003B, // 0015 LDINT R6 60
+ 0x90022A06, // 0016 SETMBR R0 K21 R6
+ 0x501C0000, // 0017 LDBOOL R7 0 0
+ 0x90021C07, // 0018 SETMBR R0 K14 R7
+ 0x881C0916, // 0019 GETMBR R7 R4 K22
+ 0x90022C07, // 001A SETMBR R0 K22 R7
+ 0x881C0317, // 001B GETMBR R7 R1 K23
+ 0x881C0F18, // 001C GETMBR R7 R7 K24
+ 0x60200012, // 001D GETGBL R8 G18
+ 0x7C200000, // 001E CALL R8 0
+ 0x90020E08, // 001F SETMBR R0 K7 R8
+ 0x88200919, // 0020 GETMBR R8 R4 K25
+ 0x4C240000, // 0021 LDNIL R9
+ 0x20201009, // 0022 NE R8 R8 R9
+ 0x78220012, // 0023 JMPF R8 #0037
+ 0x60200010, // 0024 GETGBL R8 G16
+ 0x88240919, // 0025 GETMBR R9 R4 K25
+ 0x7C200200, // 0026 CALL R8 1
+ 0xA802000B, // 0027 EXBLK 0 #0034
+ 0x5C241000, // 0028 MOVE R9 R8
+ 0x7C240000, // 0029 CALL R9 0
+ 0x88280107, // 002A GETMBR R10 R0 K7
+ 0x8C28151A, // 002B GETMET R10 R10 K26
+ 0xB8323600, // 002C GETNGBL R12 K27
+ 0x8C30191C, // 002D GETMET R12 R12 K28
+ 0x88381308, // 002E GETMBR R14 R9 K8
+ 0x883C1309, // 002F GETMBR R15 R9 K9
+ 0x8840130A, // 0030 GETMBR R16 R9 K10
+ 0x7C300800, // 0031 CALL R12 4
+ 0x7C280400, // 0032 CALL R10 2
+ 0x7001FFF3, // 0033 JMP #0028
+ 0x5820001D, // 0034 LDCONST R8 K29
+ 0xAC200200, // 0035 CATCH R8 1 0
+ 0xB0080000, // 0036 RAISE 2 R0 R0
+ 0xB8223600, // 0037 GETNGBL R8 K27
+ 0x8820111E, // 0038 GETMBR R8 R8 K30
+ 0x8C20111F, // 0039 GETMET R8 R8 K31
+ 0x88280920, // 003A GETMBR R10 R4 K32
+ 0x4C2C0000, // 003B LDNIL R11
+ 0x7C200600, // 003C CALL R8 3
+ 0x60240012, // 003D GETGBL R9 G18
+ 0x7C240000, // 003E CALL R9 0
+ 0x90021809, // 003F SETMBR R0 K12 R9
+ 0x8C240121, // 0040 GETMET R9 R0 K33
+ 0x7C240200, // 0041 CALL R9 1
+ 0x50240000, // 0042 LDBOOL R9 0 0
+ 0x90024409, // 0043 SETMBR R0 K34 R9
+ 0x80000000, // 0044 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: _add_attribute_unique_path
+********************************************************************/
+be_local_closure(class_Matter_IM_Subscription__add_attribute_unique_path, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM_Subscription, /* shared constants */
+ be_str_weak(_add_attribute_unique_path),
+ &be_const_str_solidified,
+ ( &(const binstruction[28]) { /* code */
+ 0x58080001, // 0000 LDCONST R2 K1
+ 0x600C000C, // 0001 GETGBL R3 G12
+ 0x8810010C, // 0002 GETMBR R4 R0 K12
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x140C0403, // 0004 LT R3 R2 R3
+ 0x780E0010, // 0005 JMPF R3 #0017
+ 0x880C010C, // 0006 GETMBR R3 R0 K12
+ 0x940C0602, // 0007 GETIDX R3 R3 R2
+ 0x88100708, // 0008 GETMBR R4 R3 K8
+ 0x88140308, // 0009 GETMBR R5 R1 K8
+ 0x1C100805, // 000A EQ R4 R4 R5
+ 0x78120008, // 000B JMPF R4 #0015
+ 0x88100709, // 000C GETMBR R4 R3 K9
+ 0x88140309, // 000D GETMBR R5 R1 K9
+ 0x1C100805, // 000E EQ R4 R4 R5
+ 0x78120004, // 000F JMPF R4 #0015
+ 0x8810070A, // 0010 GETMBR R4 R3 K10
+ 0x8814030A, // 0011 GETMBR R5 R1 K10
+ 0x1C100805, // 0012 EQ R4 R4 R5
+ 0x78120000, // 0013 JMPF R4 #0015
+ 0x80000800, // 0014 RET 0
+ 0x00080506, // 0015 ADD R2 R2 K6
+ 0x7001FFE9, // 0016 JMP #0001
+ 0x880C010C, // 0017 GETMBR R3 R0 K12
+ 0x8C0C071A, // 0018 GETMET R3 R3 K26
+ 0x5C140200, // 0019 MOVE R5 R1
+ 0x7C0C0400, // 001A CALL R3 2
+ 0x80000000, // 001B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: update_event_generator_array
+********************************************************************/
+be_local_closure(class_Matter_IM_Subscription_update_event_generator_array, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM_Subscription, /* shared constants */
+ be_str_weak(update_event_generator_array),
+ &be_const_str_solidified,
+ ( &(const binstruction[46]) { /* code */
+ 0x6004000C, // 0000 GETGBL R1 G12
+ 0x88080102, // 0001 GETMBR R2 R0 K2
+ 0x7C040200, // 0002 CALL R1 1
+ 0x1C040301, // 0003 EQ R1 R1 K1
+ 0x78060002, // 0004 JMPF R1 #0008
+ 0x4C040000, // 0005 LDNIL R1
+ 0x80040200, // 0006 RET 1 R1
+ 0x70020024, // 0007 JMP #002D
+ 0x6004000C, // 0008 GETGBL R1 G12
+ 0x88080102, // 0009 GETMBR R2 R0 K2
+ 0x7C040200, // 000A CALL R1 1
+ 0x1C040306, // 000B EQ R1 R1 K6
+ 0x78060008, // 000C JMPF R1 #0016
+ 0x88040102, // 000D GETMBR R1 R0 K2
+ 0x94040301, // 000E GETIDX R1 R1 K1
+ 0x8C040323, // 000F GETMET R1 R1 K35
+ 0x880C0100, // 0010 GETMBR R3 R0 K0
+ 0x7C040400, // 0011 CALL R1 2
+ 0x88040102, // 0012 GETMBR R1 R0 K2
+ 0x94040301, // 0013 GETIDX R1 R1 K1
+ 0x80040200, // 0014 RET 1 R1
+ 0x70020016, // 0015 JMP #002D
+ 0x60040012, // 0016 GETGBL R1 G18
+ 0x7C040000, // 0017 CALL R1 0
+ 0x8C080324, // 0018 GETMET R2 R1 K36
+ 0x6010000C, // 0019 GETGBL R4 G12
+ 0x88140102, // 001A GETMBR R5 R0 K2
+ 0x7C100200, // 001B CALL R4 1
+ 0x7C080400, // 001C CALL R2 2
+ 0x58080001, // 001D LDCONST R2 K1
+ 0x600C000C, // 001E GETGBL R3 G12
+ 0x88100102, // 001F GETMBR R4 R0 K2
+ 0x7C0C0200, // 0020 CALL R3 1
+ 0x140C0403, // 0021 LT R3 R2 R3
+ 0x780E0009, // 0022 JMPF R3 #002D
+ 0x880C0102, // 0023 GETMBR R3 R0 K2
+ 0x940C0602, // 0024 GETIDX R3 R3 R2
+ 0x8C0C0723, // 0025 GETMET R3 R3 K35
+ 0x88140100, // 0026 GETMBR R5 R0 K0
+ 0x7C0C0400, // 0027 CALL R3 2
+ 0x880C0102, // 0028 GETMBR R3 R0 K2
+ 0x940C0602, // 0029 GETIDX R3 R3 R2
+ 0x98040403, // 002A SETIDX R1 R2 R3
+ 0x00080506, // 002B ADD R2 R2 K6
+ 0x7001FFF0, // 002C JMP #001E
+ 0x80000000, // 002D RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: re_arm
+********************************************************************/
+be_local_closure(class_Matter_IM_Subscription_re_arm, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM_Subscription, /* shared constants */
be_str_weak(re_arm),
&be_const_str_solidified,
- ( &(const binstruction[29]) { /* code */
- 0x50040000, // 0000 LDBOOL R1 0 0
- 0x90020001, // 0001 SETMBR R0 K0 R1
- 0xB8060200, // 0002 GETNGBL R1 K1
- 0x8C040302, // 0003 GETMET R1 R1 K2
- 0x7C040200, // 0004 CALL R1 1
- 0x88080104, // 0005 GETMBR R2 R0 K4
- 0x880C0105, // 0006 GETMBR R3 R0 K5
- 0x04080403, // 0007 SUB R2 R2 R3
- 0x540E03E7, // 0008 LDINT R3 1000
- 0x08080403, // 0009 MUL R2 R2 R3
- 0x00080202, // 000A ADD R2 R1 R2
- 0x90020602, // 000B SETMBR R0 K3 R2
- 0x88080107, // 000C GETMBR R2 R0 K7
- 0x540E03E7, // 000D LDINT R3 1000
- 0x08080403, // 000E MUL R2 R2 R3
- 0x00080202, // 000F ADD R2 R1 R2
- 0x04080508, // 0010 SUB R2 R2 K8
- 0x90020C02, // 0011 SETMBR R0 K6 R2
- 0x88080109, // 0012 GETMBR R2 R0 K9
- 0x740A0007, // 0013 JMPT R2 #001C
- 0xB80A0200, // 0014 GETNGBL R2 K1
- 0x8C08050A, // 0015 GETMET R2 R2 K10
- 0x60100018, // 0016 GETGBL R4 G24
- 0x5814000B, // 0017 LDCONST R5 K11
- 0x8818010C, // 0018 GETMBR R6 R0 K12
- 0x7C100400, // 0019 CALL R4 2
- 0x5814000D, // 001A LDCONST R5 K13
- 0x7C080600, // 001B CALL R2 3
- 0x80000000, // 001C RET 0
+ ( &(const binstruction[31]) { /* code */
+ 0x8804010E, // 0000 GETMBR R1 R0 K14
+ 0x74060000, // 0001 JMPT R1 #0003
+ 0x80000200, // 0002 RET 0
+ 0x50040000, // 0003 LDBOOL R1 0 0
+ 0x90021C01, // 0004 SETMBR R0 K14 R1
+ 0xB8064A00, // 0005 GETNGBL R1 K37
+ 0x8C040326, // 0006 GETMET R1 R1 K38
+ 0x7C040200, // 0007 CALL R1 1
+ 0x88080115, // 0008 GETMBR R2 R0 K21
+ 0x880C0128, // 0009 GETMBR R3 R0 K40
+ 0x04080403, // 000A SUB R2 R2 R3
+ 0x540E03E7, // 000B LDINT R3 1000
+ 0x08080403, // 000C MUL R2 R2 R3
+ 0x00080202, // 000D ADD R2 R1 R2
+ 0x90024E02, // 000E SETMBR R0 K39 R2
+ 0x88080113, // 000F GETMBR R2 R0 K19
+ 0x540E03E7, // 0010 LDINT R3 1000
+ 0x08080403, // 0011 MUL R2 R2 R3
+ 0x00080202, // 0012 ADD R2 R1 R2
+ 0x04080506, // 0013 SUB R2 R2 K6
+ 0x90025202, // 0014 SETMBR R0 K41 R2
+ 0x88080122, // 0015 GETMBR R2 R0 K34
+ 0x740A0006, // 0016 JMPT R2 #001E
+ 0xB80A5400, // 0017 GETNGBL R2 K42
+ 0x600C0018, // 0018 GETGBL R3 G24
+ 0x5810002B, // 0019 LDCONST R4 K43
+ 0x88140110, // 001A GETMBR R5 R0 K16
+ 0x7C0C0400, // 001B CALL R3 2
+ 0x5810002C, // 001C LDCONST R4 K44
+ 0x7C080400, // 001D CALL R2 2
+ 0x80000000, // 001E RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_event_generator_or_arr
+********************************************************************/
+be_local_closure(class_Matter_IM_Subscription_set_event_generator_or_arr, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM_Subscription, /* shared constants */
+ be_str_weak(set_event_generator_or_arr),
+ &be_const_str_solidified,
+ ( &(const binstruction[19]) { /* code */
+ 0x4C080000, // 0000 LDNIL R2
+ 0x1C080202, // 0001 EQ R2 R1 R2
+ 0x780A0003, // 0002 JMPF R2 #0007
+ 0x60080012, // 0003 GETGBL R2 G18
+ 0x7C080000, // 0004 CALL R2 0
+ 0x90020402, // 0005 SETMBR R0 K2 R2
+ 0x7002000A, // 0006 JMP #0012
+ 0x6008000F, // 0007 GETGBL R2 G15
+ 0x5C0C0200, // 0008 MOVE R3 R1
+ 0x60100012, // 0009 GETGBL R4 G18
+ 0x7C080400, // 000A CALL R2 2
+ 0x780A0001, // 000B JMPF R2 #000E
+ 0x90020401, // 000C SETMBR R0 K2 R1
+ 0x70020003, // 000D JMP #0012
+ 0x60080012, // 000E GETGBL R2 G18
+ 0x7C080000, // 000F CALL R2 0
+ 0x400C0401, // 0010 CONNECT R3 R2 R1
+ 0x90020402, // 0011 SETMBR R0 K2 R2
+ 0x80000000, // 0012 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: remove_self
+********************************************************************/
+be_local_closure(class_Matter_IM_Subscription_remove_self, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM_Subscription, /* shared constants */
+ be_str_weak(remove_self),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0xB8065400, // 0000 GETNGBL R1 K42
+ 0x60080008, // 0001 GETGBL R2 G8
+ 0x880C0110, // 0002 GETMBR R3 R0 K16
+ 0x7C080200, // 0003 CALL R2 1
+ 0x000A5A02, // 0004 ADD R2 K45 R2
+ 0x580C002C, // 0005 LDCONST R3 K44
+ 0x7C040400, // 0006 CALL R1 2
+ 0x8804010F, // 0007 GETMBR R1 R0 K15
+ 0x8C04032E, // 0008 GETMET R1 R1 K46
+ 0x5C0C0000, // 0009 MOVE R3 R0
+ 0x7C040400, // 000A CALL R1 2
+ 0x80000000, // 000B RET 0
})
)
);
@@ -395,122 +543,150 @@ be_local_closure(class_Matter_IM_Subscription_re_arm, /* name */
** Solidified class: Matter_IM_Subscription
********************************************************************/
be_local_class(Matter_IM_Subscription,
- 12,
+ 14,
NULL,
- be_nested_map(19,
+ be_nested_map(24,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(not_before, -1), be_const_var(7) },
- { be_const_key_weak(init, -1), be_const_closure(class_Matter_IM_Subscription_init_closure) },
+ { be_const_key_weak(expiration, 1), be_const_var(9) },
+ { be_const_key_weak(remove_self, -1), be_const_closure(class_Matter_IM_Subscription_remove_self_closure) },
+ { be_const_key_weak(fabric_filtered, 23), be_const_var(7) },
+ { be_const_key_weak(subs_shop, 16), be_const_var(0) },
{ be_const_key_weak(attribute_updated_ctx, -1), be_const_closure(class_Matter_IM_Subscription_attribute_updated_ctx_closure) },
- { be_const_key_weak(updates, -1), be_const_var(11) },
- { be_const_key_weak(min_interval, -1), be_const_var(4) },
- { be_const_key_weak(expiration, -1), be_const_var(8) },
- { be_const_key_weak(subscription_id, 3), be_const_var(1) },
- { be_const_key_weak(subs_shop, -1), be_const_var(0) },
- { be_const_key_weak(max_interval, -1), be_const_var(5) },
- { be_const_key_weak(remove_self, 1), be_const_closure(class_Matter_IM_Subscription_remove_self_closure) },
+ { be_const_key_weak(update_event_no, -1), be_const_var(13) },
{ be_const_key_weak(MAX_INTERVAL_MARGIN, -1), be_const_int(5) },
- { be_const_key_weak(fabric_filtered, 7), be_const_var(6) },
- { be_const_key_weak(_add_attribute_unique_path, 11), be_const_closure(class_Matter_IM_Subscription__add_attribute_unique_path_closure) },
- { be_const_key_weak(path_list, 9), be_const_var(3) },
- { be_const_key_weak(is_keep_alive, -1), be_const_var(10) },
- { be_const_key_weak(clear_before_arm, -1), be_const_closure(class_Matter_IM_Subscription_clear_before_arm_closure) },
- { be_const_key_weak(session, 2), be_const_var(2) },
+ { be_const_key_weak(session, 14), be_const_var(2) },
+ { be_const_key_weak(not_before, -1), be_const_var(8) },
+ { be_const_key_weak(path_list, 5), be_const_var(3) },
+ { be_const_key_weak(event_generators, -1), be_const_var(4) },
+ { be_const_key_weak(clear_before_arm, 4), be_const_closure(class_Matter_IM_Subscription_clear_before_arm_closure) },
+ { be_const_key_weak(is_keep_alive, 11), be_const_var(11) },
+ { be_const_key_weak(updates, 12), be_const_var(12) },
+ { be_const_key_weak(wait_status, -1), be_const_var(10) },
+ { be_const_key_weak(max_interval, -1), be_const_var(6) },
+ { be_const_key_weak(init, 9), be_const_closure(class_Matter_IM_Subscription_init_closure) },
+ { be_const_key_weak(min_interval, -1), be_const_var(5) },
+ { be_const_key_weak(_add_attribute_unique_path, -1), be_const_closure(class_Matter_IM_Subscription__add_attribute_unique_path_closure) },
+ { be_const_key_weak(update_event_generator_array, -1), be_const_closure(class_Matter_IM_Subscription_update_event_generator_array_closure) },
+ { be_const_key_weak(subscription_id, -1), be_const_var(1) },
{ be_const_key_weak(re_arm, -1), be_const_closure(class_Matter_IM_Subscription_re_arm_closure) },
- { be_const_key_weak(wait_status, 0), be_const_var(9) },
+ { be_const_key_weak(set_event_generator_or_arr, -1), be_const_closure(class_Matter_IM_Subscription_set_event_generator_or_arr_closure) },
+ { be_const_key_weak(event_published, -1), be_const_closure(class_Matter_IM_Subscription_event_published_closure) },
})),
be_str_weak(Matter_IM_Subscription)
);
+// compact class 'Matter_IM_Subscription_Shop' ktab size: 31, total: 51 (saved 160 bytes)
+static const bvalue be_ktab_class_Matter_IM_Subscription_Shop[31] = {
+ /* K0 */ be_const_int(0),
+ /* K1 */ be_nested_str_weak(subs),
+ /* K2 */ be_nested_str_weak(wait_status),
+ /* K3 */ be_nested_str_weak(tasmota),
+ /* K4 */ be_nested_str_weak(time_reached),
+ /* K5 */ be_nested_str_weak(not_before),
+ /* K6 */ be_nested_str_weak(updates),
+ /* K7 */ be_nested_str_weak(update_event_no),
+ /* K8 */ be_nested_str_weak(im),
+ /* K9 */ be_nested_str_weak(send_subscribe_update),
+ /* K10 */ be_nested_str_weak(clear_before_arm),
+ /* K11 */ be_const_int(1),
+ /* K12 */ be_nested_str_weak(expiration),
+ /* K13 */ be_nested_str_weak(send_subscribe_heartbeat),
+ /* K14 */ be_nested_str_weak(re_arm),
+ /* K15 */ be_nested_str_weak(attribute_updated_ctx),
+ /* K16 */ be_nested_str_weak(remove),
+ /* K17 */ be_nested_str_weak(crypto),
+ /* K18 */ be_nested_str_weak(random),
+ /* K19 */ be_const_int(2),
+ /* K20 */ be_nested_str_weak(get),
+ /* K21 */ be_nested_str_weak(get_by_id),
+ /* K22 */ be_nested_str_weak(matter),
+ /* K23 */ be_nested_str_weak(IM_Subscription),
+ /* K24 */ be_nested_str_weak(push),
+ /* K25 */ be_nested_str_weak(event_published),
+ /* K26 */ be_nested_str_weak(session),
+ /* K27 */ be_nested_str_weak(_sessions),
+ /* K28 */ be_nested_str_weak(remove_by_session),
+ /* K29 */ be_nested_str_weak(stop_iteration),
+ /* K30 */ be_nested_str_weak(subscription_id),
+};
+
extern const bclass be_class_Matter_IM_Subscription_Shop;
/********************************************************************
-** Solidified function: every_250ms
+** Solidified function: every_50ms
********************************************************************/
-extern const bclass be_class_Matter_IM_Subscription_Shop;
-be_local_closure(class_Matter_IM_Subscription_Shop_every_250ms, /* name */
+be_local_closure(class_Matter_IM_Subscription_Shop_every_50ms, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_Subscription_Shop,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(subs),
- /* K2 */ be_nested_str_weak(wait_status),
- /* K3 */ be_nested_str_weak(updates),
- /* K4 */ be_nested_str_weak(tasmota),
- /* K5 */ be_nested_str_weak(time_reached),
- /* K6 */ be_nested_str_weak(not_before),
- /* K7 */ be_nested_str_weak(im),
- /* K8 */ be_nested_str_weak(send_subscribe_update),
- /* K9 */ be_nested_str_weak(clear_before_arm),
- /* K10 */ be_const_int(1),
- /* K11 */ be_nested_str_weak(expiration),
- /* K12 */ be_nested_str_weak(send_subscribe_heartbeat),
- /* K13 */ be_nested_str_weak(re_arm),
- }),
- be_str_weak(every_250ms),
+ &be_ktab_class_Matter_IM_Subscription_Shop, /* shared constants */
+ be_str_weak(every_50ms),
&be_const_str_solidified,
- ( &(const binstruction[54]) { /* code */
+ ( &(const binstruction[58]) { /* code */
0x58040000, // 0000 LDCONST R1 K0
0x6008000C, // 0001 GETGBL R2 G12
0x880C0101, // 0002 GETMBR R3 R0 K1
0x7C080200, // 0003 CALL R2 1
0x14080202, // 0004 LT R2 R1 R2
- 0x780A0015, // 0005 JMPF R2 #001C
+ 0x780A0019, // 0005 JMPF R2 #0020
0x88080101, // 0006 GETMBR R2 R0 K1
0x94080401, // 0007 GETIDX R2 R2 R1
0x880C0502, // 0008 GETMBR R3 R2 K2
- 0x740E000F, // 0009 JMPT R3 #001A
- 0x600C000C, // 000A GETGBL R3 G12
- 0x88100503, // 000B GETMBR R4 R2 K3
- 0x7C0C0200, // 000C CALL R3 1
- 0x240C0700, // 000D GT R3 R3 K0
- 0x780E000A, // 000E JMPF R3 #001A
- 0xB80E0800, // 000F GETNGBL R3 K4
- 0x8C0C0705, // 0010 GETMET R3 R3 K5
- 0x88140506, // 0011 GETMBR R5 R2 K6
- 0x7C0C0400, // 0012 CALL R3 2
- 0x780E0005, // 0013 JMPF R3 #001A
- 0x880C0107, // 0014 GETMBR R3 R0 K7
- 0x8C0C0708, // 0015 GETMET R3 R3 K8
- 0x5C140400, // 0016 MOVE R5 R2
- 0x7C0C0400, // 0017 CALL R3 2
- 0x8C0C0509, // 0018 GETMET R3 R2 K9
- 0x7C0C0200, // 0019 CALL R3 1
- 0x0004030A, // 001A ADD R1 R1 K10
- 0x7001FFE4, // 001B JMP #0001
- 0x58040000, // 001C LDCONST R1 K0
- 0x6008000C, // 001D GETGBL R2 G12
- 0x880C0101, // 001E GETMBR R3 R0 K1
- 0x7C080200, // 001F CALL R2 1
- 0x14080202, // 0020 LT R2 R1 R2
- 0x780A0012, // 0021 JMPF R2 #0035
- 0x88080101, // 0022 GETMBR R2 R0 K1
- 0x94080401, // 0023 GETIDX R2 R2 R1
- 0x880C0502, // 0024 GETMBR R3 R2 K2
- 0x740E000C, // 0025 JMPT R3 #0033
- 0xB80E0800, // 0026 GETNGBL R3 K4
- 0x8C0C0705, // 0027 GETMET R3 R3 K5
- 0x8814050B, // 0028 GETMBR R5 R2 K11
- 0x7C0C0400, // 0029 CALL R3 2
- 0x780E0007, // 002A JMPF R3 #0033
- 0x880C0107, // 002B GETMBR R3 R0 K7
- 0x8C0C070C, // 002C GETMET R3 R3 K12
- 0x5C140400, // 002D MOVE R5 R2
- 0x7C0C0400, // 002E CALL R3 2
- 0x8C0C0509, // 002F GETMET R3 R2 K9
- 0x7C0C0200, // 0030 CALL R3 1
- 0x8C0C050D, // 0031 GETMET R3 R2 K13
- 0x7C0C0200, // 0032 CALL R3 1
- 0x0004030A, // 0033 ADD R1 R1 K10
- 0x7001FFE7, // 0034 JMP #001D
- 0x80000000, // 0035 RET 0
+ 0x740E0013, // 0009 JMPT R3 #001E
+ 0xB80E0600, // 000A GETNGBL R3 K3
+ 0x8C0C0704, // 000B GETMET R3 R3 K4
+ 0x88140505, // 000C GETMBR R5 R2 K5
+ 0x7C0C0400, // 000D CALL R3 2
+ 0x780E000E, // 000E JMPF R3 #001E
+ 0x600C000C, // 000F GETGBL R3 G12
+ 0x88100506, // 0010 GETMBR R4 R2 K6
+ 0x7C0C0200, // 0011 CALL R3 1
+ 0x240C0700, // 0012 GT R3 R3 K0
+ 0x740E0003, // 0013 JMPT R3 #0018
+ 0x880C0507, // 0014 GETMBR R3 R2 K7
+ 0x4C100000, // 0015 LDNIL R4
+ 0x200C0604, // 0016 NE R3 R3 R4
+ 0x780E0005, // 0017 JMPF R3 #001E
+ 0x880C0108, // 0018 GETMBR R3 R0 K8
+ 0x8C0C0709, // 0019 GETMET R3 R3 K9
+ 0x5C140400, // 001A MOVE R5 R2
+ 0x7C0C0400, // 001B CALL R3 2
+ 0x8C0C050A, // 001C GETMET R3 R2 K10
+ 0x7C0C0200, // 001D CALL R3 1
+ 0x0004030B, // 001E ADD R1 R1 K11
+ 0x7001FFE0, // 001F JMP #0001
+ 0x58040000, // 0020 LDCONST R1 K0
+ 0x6008000C, // 0021 GETGBL R2 G12
+ 0x880C0101, // 0022 GETMBR R3 R0 K1
+ 0x7C080200, // 0023 CALL R2 1
+ 0x14080202, // 0024 LT R2 R1 R2
+ 0x780A0012, // 0025 JMPF R2 #0039
+ 0x88080101, // 0026 GETMBR R2 R0 K1
+ 0x94080401, // 0027 GETIDX R2 R2 R1
+ 0x880C0502, // 0028 GETMBR R3 R2 K2
+ 0x740E000C, // 0029 JMPT R3 #0037
+ 0xB80E0600, // 002A GETNGBL R3 K3
+ 0x8C0C0704, // 002B GETMET R3 R3 K4
+ 0x8814050C, // 002C GETMBR R5 R2 K12
+ 0x7C0C0400, // 002D CALL R3 2
+ 0x780E0007, // 002E JMPF R3 #0037
+ 0x880C0108, // 002F GETMBR R3 R0 K8
+ 0x8C0C070D, // 0030 GETMET R3 R3 K13
+ 0x5C140400, // 0031 MOVE R5 R2
+ 0x7C0C0400, // 0032 CALL R3 2
+ 0x8C0C050A, // 0033 GETMET R3 R2 K10
+ 0x7C0C0200, // 0034 CALL R3 1
+ 0x8C0C050E, // 0035 GETMET R3 R2 K14
+ 0x7C0C0200, // 0036 CALL R3 1
+ 0x0004030B, // 0037 ADD R1 R1 K11
+ 0x7001FFE7, // 0038 JMP #0021
+ 0x80000000, // 0039 RET 0
})
)
);
@@ -518,45 +694,27 @@ be_local_closure(class_Matter_IM_Subscription_Shop_every_250ms, /* name */
/********************************************************************
-** Solidified function: get_by_id
+** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_IM_Subscription_Shop;
-be_local_closure(class_Matter_IM_Subscription_Shop_get_by_id, /* name */
+be_local_closure(class_Matter_IM_Subscription_Shop_init, /* name */
be_nested_proto(
- 5, /* nstack */
+ 3, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_Subscription_Shop,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(subs),
- /* K2 */ be_nested_str_weak(subscription_id),
- /* K3 */ be_const_int(1),
- }),
- be_str_weak(get_by_id),
+ &be_ktab_class_Matter_IM_Subscription_Shop, /* shared constants */
+ be_str_weak(init),
&be_const_str_solidified,
- ( &(const binstruction[17]) { /* code */
- 0x58080000, // 0000 LDCONST R2 K0
- 0x600C000C, // 0001 GETGBL R3 G12
- 0x88100101, // 0002 GETMBR R4 R0 K1
- 0x7C0C0200, // 0003 CALL R3 1
- 0x140C0403, // 0004 LT R3 R2 R3
- 0x780E0009, // 0005 JMPF R3 #0010
- 0x880C0101, // 0006 GETMBR R3 R0 K1
- 0x940C0602, // 0007 GETIDX R3 R3 R2
- 0x880C0702, // 0008 GETMBR R3 R3 K2
- 0x1C0C0601, // 0009 EQ R3 R3 R1
- 0x780E0002, // 000A JMPF R3 #000E
- 0x880C0101, // 000B GETMBR R3 R0 K1
- 0x940C0602, // 000C GETIDX R3 R3 R2
- 0x80040600, // 000D RET 1 R3
- 0x00080503, // 000E ADD R2 R2 K3
- 0x7001FFF0, // 000F JMP #0001
- 0x80000000, // 0010 RET 0
+ ( &(const binstruction[ 5]) { /* code */
+ 0x90021001, // 0000 SETMBR R0 K8 R1
+ 0x60080012, // 0001 GETGBL R2 G18
+ 0x7C080000, // 0002 CALL R2 0
+ 0x90020202, // 0003 SETMBR R0 K1 R2
+ 0x80000000, // 0004 RET 0
})
)
);
@@ -564,67 +722,37 @@ be_local_closure(class_Matter_IM_Subscription_Shop_get_by_id, /* name */
/********************************************************************
-** Solidified function: new_subscription
+** Solidified function: attribute_updated_ctx
********************************************************************/
-extern const bclass be_class_Matter_IM_Subscription_Shop;
-be_local_closure(class_Matter_IM_Subscription_Shop_new_subscription, /* name */
+be_local_closure(class_Matter_IM_Subscription_Shop_attribute_updated_ctx, /* name */
be_nested_proto(
- 11, /* nstack */
+ 8, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_Subscription_Shop,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(random),
- /* K2 */ be_const_int(2),
- /* K3 */ be_nested_str_weak(get),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(get_by_id),
- /* K6 */ be_nested_str_weak(matter),
- /* K7 */ be_nested_str_weak(IM_Subscription),
- /* K8 */ be_nested_str_weak(subs),
- /* K9 */ be_nested_str_weak(push),
- }),
- be_str_weak(new_subscription),
+ &be_ktab_class_Matter_IM_Subscription_Shop, /* shared constants */
+ be_str_weak(attribute_updated_ctx),
&be_const_str_solidified,
- ( &(const binstruction[33]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
- 0x8C100701, // 0001 GETMET R4 R3 K1
- 0x58180002, // 0002 LDCONST R6 K2
- 0x7C100400, // 0003 CALL R4 2
- 0x8C100903, // 0004 GETMET R4 R4 K3
- 0x58180004, // 0005 LDCONST R6 K4
- 0x581C0002, // 0006 LDCONST R7 K2
- 0x7C100600, // 0007 CALL R4 3
- 0x8C140105, // 0008 GETMET R5 R0 K5
- 0x5C1C0800, // 0009 MOVE R7 R4
- 0x7C140400, // 000A CALL R5 2
- 0x78160008, // 000B JMPF R5 #0015
- 0x8C140701, // 000C GETMET R5 R3 K1
- 0x581C0002, // 000D LDCONST R7 K2
- 0x7C140400, // 000E CALL R5 2
- 0x8C140B03, // 000F GETMET R5 R5 K3
- 0x581C0004, // 0010 LDCONST R7 K4
- 0x58200002, // 0011 LDCONST R8 K2
- 0x7C140600, // 0012 CALL R5 3
- 0x5C100A00, // 0013 MOVE R4 R5
- 0x7001FFF2, // 0014 JMP #0008
- 0xB8160C00, // 0015 GETNGBL R5 K6
- 0x8C140B07, // 0016 GETMET R5 R5 K7
- 0x5C1C0000, // 0017 MOVE R7 R0
- 0x5C200800, // 0018 MOVE R8 R4
- 0x5C240200, // 0019 MOVE R9 R1
- 0x5C280400, // 001A MOVE R10 R2
- 0x7C140A00, // 001B CALL R5 5
- 0x88180108, // 001C GETMBR R6 R0 K8
- 0x8C180D09, // 001D GETMET R6 R6 K9
- 0x5C200A00, // 001E MOVE R8 R5
- 0x7C180400, // 001F CALL R6 2
- 0x80040A00, // 0020 RET 1 R5
+ ( &(const binstruction[15]) { /* code */
+ 0x580C0000, // 0000 LDCONST R3 K0
+ 0x6010000C, // 0001 GETGBL R4 G12
+ 0x88140101, // 0002 GETMBR R5 R0 K1
+ 0x7C100200, // 0003 CALL R4 1
+ 0x14100604, // 0004 LT R4 R3 R4
+ 0x78120007, // 0005 JMPF R4 #000E
+ 0x88100101, // 0006 GETMBR R4 R0 K1
+ 0x94100803, // 0007 GETIDX R4 R4 R3
+ 0x8C10090F, // 0008 GETMET R4 R4 K15
+ 0x5C180200, // 0009 MOVE R6 R1
+ 0x5C1C0400, // 000A MOVE R7 R2
+ 0x7C100600, // 000B CALL R4 3
+ 0x000C070B, // 000C ADD R3 R3 K11
+ 0x7001FFF2, // 000D JMP #0001
+ 0x80000000, // 000E RET 0
})
)
);
@@ -634,23 +762,17 @@ be_local_closure(class_Matter_IM_Subscription_Shop_new_subscription, /* name *
/********************************************************************
** Solidified function: remove_sub
********************************************************************/
-extern const bclass be_class_Matter_IM_Subscription_Shop;
be_local_closure(class_Matter_IM_Subscription_Shop_remove_sub, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_Subscription_Shop,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(subs),
- /* K2 */ be_nested_str_weak(remove),
- /* K3 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_IM_Subscription_Shop, /* shared constants */
be_str_weak(remove_sub),
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
@@ -665,11 +787,11 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_sub, /* name */
0x1C0C0601, // 0008 EQ R3 R3 R1
0x780E0004, // 0009 JMPF R3 #000F
0x880C0101, // 000A GETMBR R3 R0 K1
- 0x8C0C0702, // 000B GETMET R3 R3 K2
+ 0x8C0C0710, // 000B GETMET R3 R3 K16
0x5C140400, // 000C MOVE R5 R2
0x7C0C0400, // 000D CALL R3 2
0x70020000, // 000E JMP #0010
- 0x00080503, // 000F ADD R2 R2 K3
+ 0x0008050B, // 000F ADD R2 R2 K11
0x7001FFEF, // 0010 JMP #0001
0x80000000, // 0011 RET 0
})
@@ -679,43 +801,93 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_sub, /* name */
/********************************************************************
-** Solidified function: attribute_updated_ctx
+** Solidified function: new_subscription
********************************************************************/
-extern const bclass be_class_Matter_IM_Subscription_Shop;
-be_local_closure(class_Matter_IM_Subscription_Shop_attribute_updated_ctx, /* name */
+be_local_closure(class_Matter_IM_Subscription_Shop_new_subscription, /* name */
be_nested_proto(
- 8, /* nstack */
- 3, /* argc */
- 2, /* varg */
+ 13, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_Subscription_Shop,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(subs),
- /* K2 */ be_nested_str_weak(attribute_updated_ctx),
- /* K3 */ be_const_int(1),
- }),
- be_str_weak(attribute_updated_ctx),
+ &be_ktab_class_Matter_IM_Subscription_Shop, /* shared constants */
+ be_str_weak(new_subscription),
&be_const_str_solidified,
- ( &(const binstruction[15]) { /* code */
- 0x580C0000, // 0000 LDCONST R3 K0
- 0x6010000C, // 0001 GETGBL R4 G12
- 0x88140101, // 0002 GETMBR R5 R0 K1
- 0x7C100200, // 0003 CALL R4 1
- 0x14100604, // 0004 LT R4 R3 R4
- 0x78120007, // 0005 JMPF R4 #000E
- 0x88100101, // 0006 GETMBR R4 R0 K1
- 0x94100803, // 0007 GETIDX R4 R4 R3
- 0x8C100902, // 0008 GETMET R4 R4 K2
- 0x5C180200, // 0009 MOVE R6 R1
- 0x5C1C0400, // 000A MOVE R7 R2
- 0x7C100600, // 000B CALL R4 3
- 0x000C0703, // 000C ADD R3 R3 K3
- 0x7001FFF2, // 000D JMP #0001
- 0x80000000, // 000E RET 0
+ ( &(const binstruction[34]) { /* code */
+ 0xA4122200, // 0000 IMPORT R4 K17
+ 0x8C140912, // 0001 GETMET R5 R4 K18
+ 0x581C0013, // 0002 LDCONST R7 K19
+ 0x7C140400, // 0003 CALL R5 2
+ 0x8C140B14, // 0004 GETMET R5 R5 K20
+ 0x581C0000, // 0005 LDCONST R7 K0
+ 0x58200013, // 0006 LDCONST R8 K19
+ 0x7C140600, // 0007 CALL R5 3
+ 0x8C180115, // 0008 GETMET R6 R0 K21
+ 0x5C200A00, // 0009 MOVE R8 R5
+ 0x7C180400, // 000A CALL R6 2
+ 0x781A0008, // 000B JMPF R6 #0015
+ 0x8C180912, // 000C GETMET R6 R4 K18
+ 0x58200013, // 000D LDCONST R8 K19
+ 0x7C180400, // 000E CALL R6 2
+ 0x8C180D14, // 000F GETMET R6 R6 K20
+ 0x58200000, // 0010 LDCONST R8 K0
+ 0x58240013, // 0011 LDCONST R9 K19
+ 0x7C180600, // 0012 CALL R6 3
+ 0x5C140C00, // 0013 MOVE R5 R6
+ 0x7001FFF2, // 0014 JMP #0008
+ 0xB81A2C00, // 0015 GETNGBL R6 K22
+ 0x8C180D17, // 0016 GETMET R6 R6 K23
+ 0x5C200000, // 0017 MOVE R8 R0
+ 0x5C240A00, // 0018 MOVE R9 R5
+ 0x5C280200, // 0019 MOVE R10 R1
+ 0x5C2C0400, // 001A MOVE R11 R2
+ 0x5C300600, // 001B MOVE R12 R3
+ 0x7C180C00, // 001C CALL R6 6
+ 0x881C0101, // 001D GETMBR R7 R0 K1
+ 0x8C1C0F18, // 001E GETMET R7 R7 K24
+ 0x5C240C00, // 001F MOVE R9 R6
+ 0x7C1C0400, // 0020 CALL R7 2
+ 0x80040C00, // 0021 RET 1 R6
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: event_published
+********************************************************************/
+be_local_closure(class_Matter_IM_Subscription_Shop_event_published, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_IM_Subscription_Shop, /* shared constants */
+ be_str_weak(event_published),
+ &be_const_str_solidified,
+ ( &(const binstruction[14]) { /* code */
+ 0x58080000, // 0000 LDCONST R2 K0
+ 0x600C000C, // 0001 GETGBL R3 G12
+ 0x88100101, // 0002 GETMBR R4 R0 K1
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x140C0403, // 0004 LT R3 R2 R3
+ 0x780E0006, // 0005 JMPF R3 #000D
+ 0x880C0101, // 0006 GETMBR R3 R0 K1
+ 0x940C0602, // 0007 GETIDX R3 R3 R2
+ 0x8C0C0719, // 0008 GETMET R3 R3 K25
+ 0x5C140200, // 0009 MOVE R5 R1
+ 0x7C0C0400, // 000A CALL R3 2
+ 0x0008050B, // 000B ADD R2 R2 K11
+ 0x7001FFF3, // 000C JMP #0001
+ 0x80000000, // 000D RET 0
})
)
);
@@ -725,24 +897,17 @@ be_local_closure(class_Matter_IM_Subscription_Shop_attribute_updated_ctx, /* n
/********************************************************************
** Solidified function: remove_by_session
********************************************************************/
-extern const bclass be_class_Matter_IM_Subscription_Shop;
be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_session, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_Subscription_Shop,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(subs),
- /* K2 */ be_nested_str_weak(session),
- /* K3 */ be_nested_str_weak(remove),
- /* K4 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_IM_Subscription_Shop, /* shared constants */
be_str_weak(remove_by_session),
&be_const_str_solidified,
( &(const binstruction[19]) { /* code */
@@ -754,15 +919,15 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_session, /* name
0x780E000B, // 0005 JMPF R3 #0012
0x880C0101, // 0006 GETMBR R3 R0 K1
0x940C0602, // 0007 GETIDX R3 R3 R2
- 0x880C0702, // 0008 GETMBR R3 R3 K2
+ 0x880C071A, // 0008 GETMBR R3 R3 K26
0x1C0C0601, // 0009 EQ R3 R3 R1
0x780E0004, // 000A JMPF R3 #0010
0x880C0101, // 000B GETMBR R3 R0 K1
- 0x8C0C0703, // 000C GETMET R3 R3 K3
+ 0x8C0C0710, // 000C GETMET R3 R3 K16
0x5C140400, // 000D MOVE R5 R2
0x7C0C0400, // 000E CALL R3 2
0x70020000, // 000F JMP #0011
- 0x00080504, // 0010 ADD R2 R2 K4
+ 0x0008050B, // 0010 ADD R2 R2 K11
0x7001FFEE, // 0011 JMP #0001
0x80000000, // 0012 RET 0
})
@@ -772,31 +937,36 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_session, /* name
/********************************************************************
-** Solidified function: init
+** Solidified function: remove_by_fabric
********************************************************************/
-extern const bclass be_class_Matter_IM_Subscription_Shop;
-be_local_closure(class_Matter_IM_Subscription_Shop_init, /* name */
+be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_fabric, /* name */
be_nested_proto(
- 3, /* nstack */
+ 7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_Subscription_Shop,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(im),
- /* K1 */ be_nested_str_weak(subs),
- }),
- be_str_weak(init),
+ &be_ktab_class_Matter_IM_Subscription_Shop, /* shared constants */
+ be_str_weak(remove_by_fabric),
&be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x60080012, // 0001 GETGBL R2 G18
- 0x7C080000, // 0002 CALL R2 0
- 0x90020202, // 0003 SETMBR R0 K1 R2
- 0x80000000, // 0004 RET 0
+ ( &(const binstruction[14]) { /* code */
+ 0x60080010, // 0000 GETGBL R2 G16
+ 0x880C031B, // 0001 GETMBR R3 R1 K27
+ 0x7C080200, // 0002 CALL R2 1
+ 0xA8020005, // 0003 EXBLK 0 #000A
+ 0x5C0C0400, // 0004 MOVE R3 R2
+ 0x7C0C0000, // 0005 CALL R3 0
+ 0x8C10011C, // 0006 GETMET R4 R0 K28
+ 0x5C180600, // 0007 MOVE R6 R3
+ 0x7C100400, // 0008 CALL R4 2
+ 0x7001FFF9, // 0009 JMP #0004
+ 0x5808001D, // 000A LDCONST R2 K29
+ 0xAC080200, // 000B CATCH R2 1 0
+ 0xB0080000, // 000C RAISE 2 R0 R0
+ 0x80000000, // 000D RET 0
})
)
);
@@ -804,41 +974,39 @@ be_local_closure(class_Matter_IM_Subscription_Shop_init, /* name */
/********************************************************************
-** Solidified function: remove_by_fabric
+** Solidified function: get_by_id
********************************************************************/
-extern const bclass be_class_Matter_IM_Subscription_Shop;
-be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_fabric, /* name */
+be_local_closure(class_Matter_IM_Subscription_Shop_get_by_id, /* name */
be_nested_proto(
- 7, /* nstack */
+ 5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_IM_Subscription_Shop,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_sessions),
- /* K1 */ be_nested_str_weak(remove_by_session),
- /* K2 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(remove_by_fabric),
+ &be_ktab_class_Matter_IM_Subscription_Shop, /* shared constants */
+ be_str_weak(get_by_id),
&be_const_str_solidified,
- ( &(const binstruction[14]) { /* code */
- 0x60080010, // 0000 GETGBL R2 G16
- 0x880C0300, // 0001 GETMBR R3 R1 K0
- 0x7C080200, // 0002 CALL R2 1
- 0xA8020005, // 0003 EXBLK 0 #000A
- 0x5C0C0400, // 0004 MOVE R3 R2
- 0x7C0C0000, // 0005 CALL R3 0
- 0x8C100101, // 0006 GETMET R4 R0 K1
- 0x5C180600, // 0007 MOVE R6 R3
- 0x7C100400, // 0008 CALL R4 2
- 0x7001FFF9, // 0009 JMP #0004
- 0x58080002, // 000A LDCONST R2 K2
- 0xAC080200, // 000B CATCH R2 1 0
- 0xB0080000, // 000C RAISE 2 R0 R0
- 0x80000000, // 000D RET 0
+ ( &(const binstruction[17]) { /* code */
+ 0x58080000, // 0000 LDCONST R2 K0
+ 0x600C000C, // 0001 GETGBL R3 G12
+ 0x88100101, // 0002 GETMBR R4 R0 K1
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x140C0403, // 0004 LT R3 R2 R3
+ 0x780E0009, // 0005 JMPF R3 #0010
+ 0x880C0101, // 0006 GETMBR R3 R0 K1
+ 0x940C0602, // 0007 GETIDX R3 R3 R2
+ 0x880C071E, // 0008 GETMBR R3 R3 K30
+ 0x1C0C0601, // 0009 EQ R3 R3 R1
+ 0x780E0002, // 000A JMPF R3 #000E
+ 0x880C0101, // 000B GETMBR R3 R0 K1
+ 0x940C0602, // 000C GETIDX R3 R3 R2
+ 0x80040600, // 000D RET 1 R3
+ 0x0008050B, // 000E ADD R2 R2 K11
+ 0x7001FFF0, // 000F JMP #0001
+ 0x80000000, // 0010 RET 0
})
)
);
@@ -851,18 +1019,19 @@ be_local_closure(class_Matter_IM_Subscription_Shop_remove_by_fabric, /* name *
be_local_class(Matter_IM_Subscription_Shop,
2,
NULL,
- be_nested_map(10,
+ be_nested_map(11,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_IM_Subscription_Shop_every_250ms_closure) },
+ { be_const_key_weak(every_50ms, -1), be_const_closure(class_Matter_IM_Subscription_Shop_every_50ms_closure) },
{ be_const_key_weak(get_by_id, -1), be_const_closure(class_Matter_IM_Subscription_Shop_get_by_id_closure) },
{ be_const_key_weak(attribute_updated_ctx, -1), be_const_closure(class_Matter_IM_Subscription_Shop_attribute_updated_ctx_closure) },
- { be_const_key_weak(init, 2), be_const_closure(class_Matter_IM_Subscription_Shop_init_closure) },
{ be_const_key_weak(remove_sub, -1), be_const_closure(class_Matter_IM_Subscription_Shop_remove_sub_closure) },
- { be_const_key_weak(new_subscription, 3), be_const_closure(class_Matter_IM_Subscription_Shop_new_subscription_closure) },
- { be_const_key_weak(subs, 8), be_const_var(0) },
- { be_const_key_weak(im, -1), be_const_var(1) },
- { be_const_key_weak(remove_by_session, -1), be_const_closure(class_Matter_IM_Subscription_Shop_remove_by_session_closure) },
{ be_const_key_weak(remove_by_fabric, -1), be_const_closure(class_Matter_IM_Subscription_Shop_remove_by_fabric_closure) },
+ { be_const_key_weak(new_subscription, -1), be_const_closure(class_Matter_IM_Subscription_Shop_new_subscription_closure) },
+ { be_const_key_weak(event_published, -1), be_const_closure(class_Matter_IM_Subscription_Shop_event_published_closure) },
+ { be_const_key_weak(subs, -1), be_const_var(0) },
+ { be_const_key_weak(remove_by_session, -1), be_const_closure(class_Matter_IM_Subscription_Shop_remove_by_session_closure) },
+ { be_const_key_weak(init, 4), be_const_closure(class_Matter_IM_Subscription_Shop_init_closure) },
+ { be_const_key_weak(im, 1), be_const_var(1) },
})),
be_str_weak(Matter_IM_Subscription_Shop)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h
index fdbb70859..90057f7d4 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h
@@ -3,212 +3,112 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+extern const bclass be_class_Matter_Frame;
+// compact class 'Matter_Frame' ktab size: 73, total: 200 (saved 1016 bytes)
+static const bvalue be_ktab_class_Matter_Frame[73] = {
+ /* K0 */ be_nested_str_weak(session),
+ /* K1 */ be_nested_str_weak(get_node_id),
+ /* K2 */ be_nested_str_weak(crypto),
+ /* K3 */ be_nested_str_weak(raw),
+ /* K4 */ be_nested_str_weak(payload_idx),
+ /* K5 */ be_nested_str_weak(get_r2i),
+ /* K6 */ be_nested_str_weak(message_handler),
+ /* K7 */ be_nested_str_weak(_n_bytes),
+ /* K8 */ be_nested_str_weak(clear),
+ /* K9 */ be_nested_str_weak(add),
+ /* K10 */ be_nested_str_weak(flags),
+ /* K11 */ be_const_int(1),
+ /* K12 */ be_nested_str_weak(message_counter),
+ /* K13 */ be_nested_str_weak(is_CASE),
+ /* K14 */ be_nested_str_weak(get_device_id),
+ /* K15 */ be_nested_str_weak(resize),
+ /* K16 */ be_nested_str_weak(AES_CCM),
+ /* K17 */ be_nested_str_weak(encrypt1),
+ /* K18 */ be_const_int(0),
+ /* K19 */ be_nested_str_weak(remote_ip),
+ /* K20 */ be_nested_str_weak(remote_port),
+ /* K21 */ be_nested_str_weak(flag_s),
+ /* K22 */ be_nested_str_weak(flag_dsiz),
+ /* K23 */ be_const_int(3),
+ /* K24 */ be_nested_str_weak(local_session_id),
+ /* K25 */ be_const_int(2),
+ /* K26 */ be_nested_str_weak(sec_flags),
+ /* K27 */ be_nested_str_weak(sec_p),
+ /* K28 */ be_nested_str_weak(sec_c),
+ /* K29 */ be_nested_str_weak(sec_sesstype),
+ /* K30 */ be_nested_str_weak(source_node_id),
+ /* K31 */ be_nested_str_weak(dest_node_id_8),
+ /* K32 */ be_nested_str_weak(dest_node_id_2),
+ /* K33 */ be_nested_str_weak(x_flags),
+ /* K34 */ be_nested_str_weak(x_flag_v),
+ /* K35 */ be_nested_str_weak(x_flag_r),
+ /* K36 */ be_nested_str_weak(x_flag_a),
+ /* K37 */ be_nested_str_weak(x_flag_i),
+ /* K38 */ be_nested_str_weak(opcode),
+ /* K39 */ be_nested_str_weak(exchange_id),
+ /* K40 */ be_nested_str_weak(protocol_id),
+ /* K41 */ be_nested_str_weak(ack_message_counter),
+ /* K42 */ be_nested_str_weak(app_payload_idx),
+ /* K43 */ be_nested_str_weak(get),
+ /* K44 */ be_nested_str_weak(getbits),
+ /* K45 */ be_nested_str_weak(sec_mx),
+ /* K46 */ be_nested_str_weak(matter),
+ /* K47 */ be_nested_str_weak(Frame),
+ /* K48 */ be_nested_str_weak(decode_header),
+ /* K49 */ be_nested_str_weak(decode_payload),
+ /* K50 */ be_nested_str_weak(initiator_session_id),
+ /* K51 */ be_nested_str_weak(counter_snd_next),
+ /* K52 */ be_nested_str_weak(_counter_insecure_snd),
+ /* K53 */ be_nested_str_weak(next),
+ /* K54 */ be_nested_str_weak(get_opcode_name),
+ /* K55 */ be_nested_str_weak(0x_X2502X),
+ /* K56 */ be_nested_str_weak(log),
+ /* K57 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s),
+ /* K58 */ be_nested_str_weak(get_i2r),
+ /* K59 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X20Compute_X20Privacy_X20TODO),
+ /* K60 */ be_nested_str_weak(get_i2r_privacy),
+ /* K61 */ be_const_int(2147483647),
+ /* K62 */ be_nested_str_weak(AES_CTR),
+ /* K63 */ be_nested_str_weak(decrypt),
+ /* K64 */ be_nested_str_weak(peer_node_id),
+ /* K65 */ be_nested_str_weak(decrypt1),
+ /* K66 */ be_nested_str_weak(MTR_X3A_X20rejected_X20packet_X20due_X20to_X20invalid_X20MIC),
+ /* K67 */ be_const_class(be_class_Matter_Frame),
+ /* K68 */ be_nested_str_weak(_ip),
+ /* K69 */ be_nested_str_weak(_port),
+ /* K70 */ be_nested_str_weak(_exchange_id),
+ /* K71 */ be_nested_str_weak(x_flag_sx),
+ /* K72 */ be_nested_str_weak(vendor_id),
+};
+
extern const bclass be_class_Matter_Frame;
/********************************************************************
-** Solidified function: encode_frame
+** Solidified function: get_node_id
********************************************************************/
-extern const bclass be_class_Matter_Frame;
-be_local_closure(class_Matter_Frame_encode_frame, /* name */
+be_local_closure(class_Matter_Frame_get_node_id, /* name */
be_nested_proto(
- 7, /* nstack */
- 3, /* argc */
- 2, /* varg */
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Frame,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[29]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(flags),
- /* K2 */ be_nested_str_weak(flag_s),
- /* K3 */ be_nested_str_weak(flag_dsiz),
- /* K4 */ be_const_int(3),
- /* K5 */ be_nested_str_weak(add),
- /* K6 */ be_const_int(1),
- /* K7 */ be_nested_str_weak(local_session_id),
- /* K8 */ be_const_int(2),
- /* K9 */ be_nested_str_weak(sec_flags),
- /* K10 */ be_nested_str_weak(sec_p),
- /* K11 */ be_nested_str_weak(sec_c),
- /* K12 */ be_nested_str_weak(sec_sesstype),
- /* K13 */ be_nested_str_weak(message_counter),
- /* K14 */ be_nested_str_weak(source_node_id),
- /* K15 */ be_nested_str_weak(dest_node_id_8),
- /* K16 */ be_nested_str_weak(dest_node_id_2),
- /* K17 */ be_nested_str_weak(payload_idx),
- /* K18 */ be_nested_str_weak(x_flags),
- /* K19 */ be_nested_str_weak(x_flag_v),
- /* K20 */ be_nested_str_weak(x_flag_r),
- /* K21 */ be_nested_str_weak(x_flag_a),
- /* K22 */ be_nested_str_weak(x_flag_i),
- /* K23 */ be_nested_str_weak(opcode),
- /* K24 */ be_nested_str_weak(exchange_id),
- /* K25 */ be_nested_str_weak(protocol_id),
- /* K26 */ be_nested_str_weak(ack_message_counter),
- /* K27 */ be_nested_str_weak(app_payload_idx),
- /* K28 */ be_nested_str_weak(raw),
- }),
- be_str_weak(encode_frame),
+ &be_ktab_class_Matter_Frame, /* shared constants */
+ be_str_weak(get_node_id),
&be_const_str_solidified,
- ( &(const binstruction[155]) { /* code */
- 0x4C0C0000, // 0000 LDNIL R3
- 0x1C0C0403, // 0001 EQ R3 R2 R3
- 0x780E000A, // 0002 JMPF R3 #000E
- 0x600C0015, // 0003 GETGBL R3 G21
- 0x5412000F, // 0004 LDINT R4 16
- 0x78060003, // 0005 JMPF R1 #000A
- 0x6014000C, // 0006 GETGBL R5 G12
- 0x5C180200, // 0007 MOVE R6 R1
- 0x7C140200, // 0008 CALL R5 1
- 0x70020000, // 0009 JMP #000B
- 0x58140000, // 000A LDCONST R5 K0
- 0x00100805, // 000B ADD R4 R4 R5
- 0x7C0C0200, // 000C CALL R3 1
- 0x5C080600, // 000D MOVE R2 R3
- 0x880C0101, // 000E GETMBR R3 R0 K1
- 0x4C100000, // 000F LDNIL R4
- 0x1C0C0604, // 0010 EQ R3 R3 R4
- 0x780E000D, // 0011 JMPF R3 #0020
- 0x90020300, // 0012 SETMBR R0 K1 K0
- 0x880C0102, // 0013 GETMBR R3 R0 K2
- 0x780E0003, // 0014 JMPF R3 #0019
- 0x880C0101, // 0015 GETMBR R3 R0 K1
- 0x54120003, // 0016 LDINT R4 4
- 0x300C0604, // 0017 OR R3 R3 R4
- 0x90020203, // 0018 SETMBR R0 K1 R3
- 0x880C0103, // 0019 GETMBR R3 R0 K3
- 0x780E0004, // 001A JMPF R3 #0020
- 0x880C0101, // 001B GETMBR R3 R0 K1
- 0x88100103, // 001C GETMBR R4 R0 K3
- 0x2C100904, // 001D AND R4 R4 K4
- 0x300C0604, // 001E OR R3 R3 R4
- 0x90020203, // 001F SETMBR R0 K1 R3
- 0x8C0C0505, // 0020 GETMET R3 R2 K5
- 0x88140101, // 0021 GETMBR R5 R0 K1
- 0x58180006, // 0022 LDCONST R6 K6
- 0x7C0C0600, // 0023 CALL R3 3
- 0x8C0C0505, // 0024 GETMET R3 R2 K5
- 0x88140107, // 0025 GETMBR R5 R0 K7
- 0x78160001, // 0026 JMPF R5 #0029
- 0x88140107, // 0027 GETMBR R5 R0 K7
- 0x70020000, // 0028 JMP #002A
- 0x58140000, // 0029 LDCONST R5 K0
- 0x58180008, // 002A LDCONST R6 K8
- 0x7C0C0600, // 002B CALL R3 3
- 0x880C0109, // 002C GETMBR R3 R0 K9
- 0x4C100000, // 002D LDNIL R4
- 0x1C0C0604, // 002E EQ R3 R3 R4
- 0x780E0013, // 002F JMPF R3 #0044
- 0x90021300, // 0030 SETMBR R0 K9 K0
- 0x880C010A, // 0031 GETMBR R3 R0 K10
- 0x780E0003, // 0032 JMPF R3 #0037
- 0x880C0109, // 0033 GETMBR R3 R0 K9
- 0x5412007F, // 0034 LDINT R4 128
- 0x300C0604, // 0035 OR R3 R3 R4
- 0x90021203, // 0036 SETMBR R0 K9 R3
- 0x880C010B, // 0037 GETMBR R3 R0 K11
- 0x780E0003, // 0038 JMPF R3 #003D
- 0x880C0109, // 0039 GETMBR R3 R0 K9
- 0x5412003F, // 003A LDINT R4 64
- 0x300C0604, // 003B OR R3 R3 R4
- 0x90021203, // 003C SETMBR R0 K9 R3
- 0x880C010C, // 003D GETMBR R3 R0 K12
- 0x780E0004, // 003E JMPF R3 #0044
- 0x880C0109, // 003F GETMBR R3 R0 K9
- 0x8810010C, // 0040 GETMBR R4 R0 K12
- 0x2C100904, // 0041 AND R4 R4 K4
- 0x300C0604, // 0042 OR R3 R3 R4
- 0x90021203, // 0043 SETMBR R0 K9 R3
- 0x8C0C0505, // 0044 GETMET R3 R2 K5
- 0x88140109, // 0045 GETMBR R5 R0 K9
- 0x58180006, // 0046 LDCONST R6 K6
- 0x7C0C0600, // 0047 CALL R3 3
- 0x8C0C0505, // 0048 GETMET R3 R2 K5
- 0x8814010D, // 0049 GETMBR R5 R0 K13
- 0x541A0003, // 004A LDINT R6 4
- 0x7C0C0600, // 004B CALL R3 3
- 0x880C0102, // 004C GETMBR R3 R0 K2
- 0x780E0001, // 004D JMPF R3 #0050
- 0x880C010E, // 004E GETMBR R3 R0 K14
- 0x400C0403, // 004F CONNECT R3 R2 R3
- 0x880C0103, // 0050 GETMBR R3 R0 K3
- 0x1C0C0706, // 0051 EQ R3 R3 K6
- 0x780E0001, // 0052 JMPF R3 #0055
- 0x880C010F, // 0053 GETMBR R3 R0 K15
- 0x400C0403, // 0054 CONNECT R3 R2 R3
- 0x880C0103, // 0055 GETMBR R3 R0 K3
- 0x1C0C0708, // 0056 EQ R3 R3 K8
- 0x780E0003, // 0057 JMPF R3 #005C
- 0x8C0C0505, // 0058 GETMET R3 R2 K5
- 0x88140110, // 0059 GETMBR R5 R0 K16
- 0x58180008, // 005A LDCONST R6 K8
- 0x7C0C0600, // 005B CALL R3 3
- 0x600C000C, // 005C GETGBL R3 G12
- 0x5C100400, // 005D MOVE R4 R2
- 0x7C0C0200, // 005E CALL R3 1
- 0x90022203, // 005F SETMBR R0 K17 R3
- 0x880C0112, // 0060 GETMBR R3 R0 K18
- 0x4C100000, // 0061 LDNIL R4
- 0x1C0C0604, // 0062 EQ R3 R3 R4
- 0x780E0016, // 0063 JMPF R3 #007B
- 0x90022500, // 0064 SETMBR R0 K18 K0
- 0x880C0113, // 0065 GETMBR R3 R0 K19
- 0x780E0003, // 0066 JMPF R3 #006B
- 0x880C0112, // 0067 GETMBR R3 R0 K18
- 0x5412000F, // 0068 LDINT R4 16
- 0x300C0604, // 0069 OR R3 R3 R4
- 0x90022403, // 006A SETMBR R0 K18 R3
- 0x880C0114, // 006B GETMBR R3 R0 K20
- 0x780E0003, // 006C JMPF R3 #0071
- 0x880C0112, // 006D GETMBR R3 R0 K18
- 0x54120003, // 006E LDINT R4 4
- 0x300C0604, // 006F OR R3 R3 R4
- 0x90022403, // 0070 SETMBR R0 K18 R3
- 0x880C0115, // 0071 GETMBR R3 R0 K21
- 0x780E0002, // 0072 JMPF R3 #0076
- 0x880C0112, // 0073 GETMBR R3 R0 K18
- 0x300C0708, // 0074 OR R3 R3 K8
- 0x90022403, // 0075 SETMBR R0 K18 R3
- 0x880C0116, // 0076 GETMBR R3 R0 K22
- 0x780E0002, // 0077 JMPF R3 #007B
- 0x880C0112, // 0078 GETMBR R3 R0 K18
- 0x300C0706, // 0079 OR R3 R3 K6
- 0x90022403, // 007A SETMBR R0 K18 R3
- 0x8C0C0505, // 007B GETMET R3 R2 K5
- 0x88140112, // 007C GETMBR R5 R0 K18
- 0x58180006, // 007D LDCONST R6 K6
- 0x7C0C0600, // 007E CALL R3 3
- 0x8C0C0505, // 007F GETMET R3 R2 K5
- 0x88140117, // 0080 GETMBR R5 R0 K23
- 0x58180006, // 0081 LDCONST R6 K6
- 0x7C0C0600, // 0082 CALL R3 3
- 0x8C0C0505, // 0083 GETMET R3 R2 K5
- 0x88140118, // 0084 GETMBR R5 R0 K24
- 0x541AFFFE, // 0085 LDINT R6 65535
- 0x2C140A06, // 0086 AND R5 R5 R6
- 0x58180008, // 0087 LDCONST R6 K8
- 0x7C0C0600, // 0088 CALL R3 3
- 0x8C0C0505, // 0089 GETMET R3 R2 K5
- 0x88140119, // 008A GETMBR R5 R0 K25
- 0x58180008, // 008B LDCONST R6 K8
- 0x7C0C0600, // 008C CALL R3 3
- 0x880C0115, // 008D GETMBR R3 R0 K21
- 0x780E0003, // 008E JMPF R3 #0093
- 0x8C0C0505, // 008F GETMET R3 R2 K5
- 0x8814011A, // 0090 GETMBR R5 R0 K26
- 0x541A0003, // 0091 LDINT R6 4
- 0x7C0C0600, // 0092 CALL R3 3
- 0x600C000C, // 0093 GETGBL R3 G12
- 0x5C100400, // 0094 MOVE R4 R2
- 0x7C0C0200, // 0095 CALL R3 1
- 0x90023603, // 0096 SETMBR R0 K27 R3
- 0x78060000, // 0097 JMPF R1 #0099
- 0x400C0401, // 0098 CONNECT R3 R2 R1
- 0x90023802, // 0099 SETMBR R0 K28 R2
- 0x80040400, // 009A RET 1 R2
+ ( &(const binstruction[ 8]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x78060003, // 0001 JMPF R1 #0006
+ 0x88040100, // 0002 GETMBR R1 R0 K0
+ 0x8C040301, // 0003 GETMET R1 R1 K1
+ 0x7C040200, // 0004 CALL R1 1
+ 0x70020000, // 0005 JMP #0007
+ 0x4C040000, // 0006 LDNIL R1
+ 0x80040200, // 0007 RET 1 R1
})
)
);
@@ -218,87 +118,67 @@ be_local_closure(class_Matter_Frame_encode_frame, /* name */
/********************************************************************
** Solidified function: encrypt
********************************************************************/
-extern const bclass be_class_Matter_Frame;
be_local_closure(class_Matter_Frame_encrypt, /* name */
be_nested_proto(
23, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Frame,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(raw),
- /* K2 */ be_nested_str_weak(session),
- /* K3 */ be_nested_str_weak(payload_idx),
- /* K4 */ be_nested_str_weak(get_r2i),
- /* K5 */ be_nested_str_weak(message_handler),
- /* K6 */ be_nested_str_weak(_n_bytes),
- /* K7 */ be_nested_str_weak(clear),
- /* K8 */ be_nested_str_weak(add),
- /* K9 */ be_nested_str_weak(flags),
- /* K10 */ be_const_int(1),
- /* K11 */ be_nested_str_weak(message_counter),
- /* K12 */ be_nested_str_weak(is_CASE),
- /* K13 */ be_nested_str_weak(get_device_id),
- /* K14 */ be_nested_str_weak(resize),
- /* K15 */ be_nested_str_weak(AES_CCM),
- /* K16 */ be_nested_str_weak(encrypt1),
- /* K17 */ be_const_int(0),
- }),
+ &be_ktab_class_Matter_Frame, /* shared constants */
be_str_weak(encrypt),
&be_const_str_solidified,
( &(const binstruction[63]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x880C0102, // 0002 GETMBR R3 R0 K2
- 0x88100103, // 0003 GETMBR R4 R0 K3
+ 0xA4060400, // 0000 IMPORT R1 K2
+ 0x88080103, // 0001 GETMBR R2 R0 K3
+ 0x880C0100, // 0002 GETMBR R3 R0 K0
+ 0x88100104, // 0003 GETMBR R4 R0 K4
0x5416000F, // 0004 LDINT R5 16
- 0x8C180704, // 0005 GETMET R6 R3 K4
+ 0x8C180705, // 0005 GETMET R6 R3 K5
0x7C180200, // 0006 CALL R6 1
- 0x881C0105, // 0007 GETMBR R7 R0 K5
- 0x881C0F06, // 0008 GETMBR R7 R7 K6
- 0x8C200F07, // 0009 GETMET R8 R7 K7
+ 0x881C0106, // 0007 GETMBR R7 R0 K6
+ 0x881C0F07, // 0008 GETMBR R7 R7 K7
+ 0x8C200F08, // 0009 GETMET R8 R7 K8
0x7C200200, // 000A CALL R8 1
- 0x8C200F08, // 000B GETMET R8 R7 K8
- 0x88280109, // 000C GETMBR R10 R0 K9
- 0x582C000A, // 000D LDCONST R11 K10
+ 0x8C200F09, // 000B GETMET R8 R7 K9
+ 0x8828010A, // 000C GETMBR R10 R0 K10
+ 0x582C000B, // 000D LDCONST R11 K11
0x7C200600, // 000E CALL R8 3
- 0x8C200F08, // 000F GETMET R8 R7 K8
- 0x8828010B, // 0010 GETMBR R10 R0 K11
+ 0x8C200F09, // 000F GETMET R8 R7 K9
+ 0x8828010C, // 0010 GETMBR R10 R0 K12
0x542E0003, // 0011 LDINT R11 4
0x7C200600, // 0012 CALL R8 3
- 0x8C20070C, // 0013 GETMET R8 R3 K12
+ 0x8C20070D, // 0013 GETMET R8 R3 K13
0x7C200200, // 0014 CALL R8 1
0x78220005, // 0015 JMPF R8 #001C
- 0x8C20070D, // 0016 GETMET R8 R3 K13
+ 0x8C20070E, // 0016 GETMET R8 R3 K14
0x7C200200, // 0017 CALL R8 1
0x78220002, // 0018 JMPF R8 #001C
- 0x8C20070D, // 0019 GETMET R8 R3 K13
+ 0x8C20070E, // 0019 GETMET R8 R3 K14
0x7C200200, // 001A CALL R8 1
0x40200E08, // 001B CONNECT R8 R7 R8
- 0x8C200F0E, // 001C GETMET R8 R7 K14
+ 0x8C200F0F, // 001C GETMET R8 R7 K15
0x542A000C, // 001D LDINT R10 13
0x7C200400, // 001E CALL R8 2
- 0x8C20050E, // 001F GETMET R8 R2 K14
+ 0x8C20050F, // 001F GETMET R8 R2 K15
0x6028000C, // 0020 GETGBL R10 G12
0x5C2C0400, // 0021 MOVE R11 R2
0x7C280200, // 0022 CALL R10 1
0x00281405, // 0023 ADD R10 R10 R5
0x7C200400, // 0024 CALL R8 2
- 0x8820030F, // 0025 GETMBR R8 R1 K15
- 0x8C201110, // 0026 GETMET R8 R8 K16
+ 0x88200310, // 0025 GETMBR R8 R1 K16
+ 0x8C201111, // 0026 GETMET R8 R8 K17
0x5C280C00, // 0027 MOVE R10 R6
0x5C2C0E00, // 0028 MOVE R11 R7
- 0x58300011, // 0029 LDCONST R12 K17
+ 0x58300012, // 0029 LDCONST R12 K18
0x6034000C, // 002A GETGBL R13 G12
0x5C380E00, // 002B MOVE R14 R7
0x7C340200, // 002C CALL R13 1
0x5C380400, // 002D MOVE R14 R2
- 0x583C0011, // 002E LDCONST R15 K17
+ 0x583C0012, // 002E LDCONST R15 K18
0x5C400800, // 002F MOVE R16 R4
0x5C440400, // 0030 MOVE R17 R2
0x5C480800, // 0031 MOVE R18 R4
@@ -322,370 +202,211 @@ be_local_closure(class_Matter_Frame_encrypt, /* name */
/********************************************************************
-** Solidified function: debug
+** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_Frame;
-be_local_closure(class_Matter_Frame_debug, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Frame,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(Frame),
- /* K2 */ be_nested_str_weak(message_handler),
- /* K3 */ be_nested_str_weak(decode_header),
- /* K4 */ be_nested_str_weak(decode_payload),
- }),
- be_str_weak(debug),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x80000400, // 0000 RET 0
- 0xB80A0000, // 0001 GETNGBL R2 K0
- 0x8C080501, // 0002 GETMET R2 R2 K1
- 0x88100102, // 0003 GETMBR R4 R0 K2
- 0x5C140200, // 0004 MOVE R5 R1
- 0x7C080600, // 0005 CALL R2 3
- 0x8C0C0503, // 0006 GETMET R3 R2 K3
- 0x7C0C0200, // 0007 CALL R3 1
- 0x8C0C0504, // 0008 GETMET R3 R2 K4
- 0x7C0C0200, // 0009 CALL R3 1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: build_standalone_ack
-********************************************************************/
-extern const bclass be_class_Matter_Frame;
-be_local_closure(class_Matter_Frame_build_standalone_ack, /* name */
+be_local_closure(class_Matter_Frame_init, /* name */
be_nested_proto(
5, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Frame,
- 1, /* has constants */
- ( &(const bvalue[21]) { /* constants */
- /* K0 */ be_nested_str_weak(message_handler),
- /* K1 */ be_nested_str_weak(remote_ip),
- /* K2 */ be_nested_str_weak(remote_port),
- /* K3 */ be_nested_str_weak(flag_s),
- /* K4 */ be_nested_str_weak(flag_dsiz),
- /* K5 */ be_const_int(1),
- /* K6 */ be_nested_str_weak(dest_node_id_8),
- /* K7 */ be_nested_str_weak(source_node_id),
- /* K8 */ be_const_int(0),
- /* K9 */ be_nested_str_weak(session),
- /* K10 */ be_nested_str_weak(message_counter),
- /* K11 */ be_nested_str_weak(counter_snd_next),
- /* K12 */ be_nested_str_weak(local_session_id),
- /* K13 */ be_nested_str_weak(initiator_session_id),
- /* K14 */ be_nested_str_weak(x_flag_i),
- /* K15 */ be_nested_str_weak(opcode),
- /* K16 */ be_nested_str_weak(exchange_id),
- /* K17 */ be_nested_str_weak(protocol_id),
- /* K18 */ be_nested_str_weak(x_flag_a),
- /* K19 */ be_nested_str_weak(ack_message_counter),
- /* K20 */ be_nested_str_weak(x_flag_r),
- }),
- be_str_weak(build_standalone_ack),
- &be_const_str_solidified,
- ( &(const binstruction[45]) { /* code */
- 0x60080006, // 0000 GETGBL R2 G6
- 0x5C0C0000, // 0001 MOVE R3 R0
- 0x7C080200, // 0002 CALL R2 1
- 0x880C0100, // 0003 GETMBR R3 R0 K0
- 0x7C080200, // 0004 CALL R2 1
- 0x880C0101, // 0005 GETMBR R3 R0 K1
- 0x900A0203, // 0006 SETMBR R2 K1 R3
- 0x880C0102, // 0007 GETMBR R3 R0 K2
- 0x900A0403, // 0008 SETMBR R2 K2 R3
- 0x880C0103, // 0009 GETMBR R3 R0 K3
- 0x780E0003, // 000A JMPF R3 #000F
- 0x900A0905, // 000B SETMBR R2 K4 K5
- 0x880C0107, // 000C GETMBR R3 R0 K7
- 0x900A0C03, // 000D SETMBR R2 K6 R3
- 0x70020000, // 000E JMP #0010
- 0x900A0908, // 000F SETMBR R2 K4 K8
- 0x880C0109, // 0010 GETMBR R3 R0 K9
- 0x900A1203, // 0011 SETMBR R2 K9 R3
- 0x880C0109, // 0012 GETMBR R3 R0 K9
- 0x8C0C070B, // 0013 GETMET R3 R3 K11
- 0x7C0C0200, // 0014 CALL R3 1
- 0x900A1403, // 0015 SETMBR R2 K10 R3
- 0x880C0109, // 0016 GETMBR R3 R0 K9
- 0x880C070D, // 0017 GETMBR R3 R3 K13
- 0x900A1803, // 0018 SETMBR R2 K12 R3
- 0x880C010E, // 0019 GETMBR R3 R0 K14
- 0x780E0001, // 001A JMPF R3 #001D
- 0x580C0008, // 001B LDCONST R3 K8
- 0x70020000, // 001C JMP #001E
- 0x580C0005, // 001D LDCONST R3 K5
- 0x900A1C03, // 001E SETMBR R2 K14 R3
- 0x540E000F, // 001F LDINT R3 16
- 0x900A1E03, // 0020 SETMBR R2 K15 R3
- 0x880C0110, // 0021 GETMBR R3 R0 K16
- 0x900A2003, // 0022 SETMBR R2 K16 R3
- 0x900A2308, // 0023 SETMBR R2 K17 K8
- 0x900A2505, // 0024 SETMBR R2 K18 K5
- 0x880C010A, // 0025 GETMBR R3 R0 K10
- 0x900A2603, // 0026 SETMBR R2 K19 R3
- 0x78060001, // 0027 JMPF R1 #002A
- 0x580C0005, // 0028 LDCONST R3 K5
- 0x70020000, // 0029 JMP #002B
- 0x580C0008, // 002A LDCONST R3 K8
- 0x900A2803, // 002B SETMBR R2 K20 R3
- 0x80040400, // 002C RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: build_response
-********************************************************************/
-extern const bclass be_class_Matter_Frame;
-be_local_closure(class_Matter_Frame_build_response, /* name */
- be_nested_proto(
- 11, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Frame,
- 1, /* has constants */
- ( &(const bvalue[30]) { /* constants */
- /* K0 */ be_nested_str_weak(message_handler),
- /* K1 */ be_nested_str_weak(remote_ip),
- /* K2 */ be_nested_str_weak(remote_port),
- /* K3 */ be_nested_str_weak(flag_s),
- /* K4 */ be_nested_str_weak(flag_dsiz),
- /* K5 */ be_const_int(1),
- /* K6 */ be_nested_str_weak(dest_node_id_8),
- /* K7 */ be_nested_str_weak(source_node_id),
- /* K8 */ be_const_int(0),
- /* K9 */ be_nested_str_weak(session),
- /* K10 */ be_nested_str_weak(local_session_id),
- /* K11 */ be_nested_str_weak(initiator_session_id),
- /* K12 */ be_nested_str_weak(message_counter),
- /* K13 */ be_nested_str_weak(counter_snd_next),
- /* K14 */ be_nested_str_weak(_counter_insecure_snd),
- /* K15 */ be_nested_str_weak(next),
- /* K16 */ be_nested_str_weak(x_flag_i),
- /* K17 */ be_nested_str_weak(opcode),
- /* K18 */ be_nested_str_weak(exchange_id),
- /* K19 */ be_nested_str_weak(protocol_id),
- /* K20 */ be_nested_str_weak(x_flag_r),
- /* K21 */ be_nested_str_weak(x_flag_a),
- /* K22 */ be_nested_str_weak(ack_message_counter),
- /* K23 */ be_nested_str_weak(matter),
- /* K24 */ be_nested_str_weak(get_opcode_name),
- /* K25 */ be_nested_str_weak(0x_X2502X),
- /* K26 */ be_nested_str_weak(tasmota),
- /* K27 */ be_nested_str_weak(log),
- /* K28 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X28_X256i_X29_X20_X25s),
- /* K29 */ be_const_int(3),
- }),
- be_str_weak(build_response),
- &be_const_str_solidified,
- ( &(const binstruction[91]) { /* code */
- 0x4C100000, // 0000 LDNIL R4
- 0x1C100604, // 0001 EQ R4 R3 R4
- 0x78120005, // 0002 JMPF R4 #0009
- 0x60100006, // 0003 GETGBL R4 G6
- 0x5C140000, // 0004 MOVE R5 R0
- 0x7C100200, // 0005 CALL R4 1
- 0x88140100, // 0006 GETMBR R5 R0 K0
- 0x7C100200, // 0007 CALL R4 1
- 0x5C0C0800, // 0008 MOVE R3 R4
- 0x88100101, // 0009 GETMBR R4 R0 K1
- 0x900E0204, // 000A SETMBR R3 K1 R4
- 0x88100102, // 000B GETMBR R4 R0 K2
- 0x900E0404, // 000C SETMBR R3 K2 R4
- 0x88100103, // 000D GETMBR R4 R0 K3
- 0x78120003, // 000E JMPF R4 #0013
- 0x900E0905, // 000F SETMBR R3 K4 K5
- 0x88100107, // 0010 GETMBR R4 R0 K7
- 0x900E0C04, // 0011 SETMBR R3 K6 R4
- 0x70020000, // 0012 JMP #0014
- 0x900E0908, // 0013 SETMBR R3 K4 K8
- 0x88100109, // 0014 GETMBR R4 R0 K9
- 0x900E1204, // 0015 SETMBR R3 K9 R4
- 0x8810010A, // 0016 GETMBR R4 R0 K10
- 0x20100908, // 0017 NE R4 R4 K8
- 0x7812000D, // 0018 JMPF R4 #0027
- 0x88100109, // 0019 GETMBR R4 R0 K9
- 0x7812000B, // 001A JMPF R4 #0027
- 0x88100109, // 001B GETMBR R4 R0 K9
- 0x8810090B, // 001C GETMBR R4 R4 K11
- 0x20100908, // 001D NE R4 R4 K8
- 0x78120007, // 001E JMPF R4 #0027
- 0x88100109, // 001F GETMBR R4 R0 K9
- 0x8C10090D, // 0020 GETMET R4 R4 K13
- 0x7C100200, // 0021 CALL R4 1
- 0x900E1804, // 0022 SETMBR R3 K12 R4
- 0x88100109, // 0023 GETMBR R4 R0 K9
- 0x8810090B, // 0024 GETMBR R4 R4 K11
- 0x900E1404, // 0025 SETMBR R3 K10 R4
- 0x70020005, // 0026 JMP #002D
- 0x88100109, // 0027 GETMBR R4 R0 K9
- 0x8810090E, // 0028 GETMBR R4 R4 K14
- 0x8C10090F, // 0029 GETMET R4 R4 K15
- 0x7C100200, // 002A CALL R4 1
- 0x900E1804, // 002B SETMBR R3 K12 R4
- 0x900E1508, // 002C SETMBR R3 K10 K8
- 0x88100110, // 002D GETMBR R4 R0 K16
- 0x78120001, // 002E JMPF R4 #0031
- 0x58100008, // 002F LDCONST R4 K8
- 0x70020000, // 0030 JMP #0032
- 0x58100005, // 0031 LDCONST R4 K5
- 0x900E2004, // 0032 SETMBR R3 K16 R4
- 0x900E2201, // 0033 SETMBR R3 K17 R1
- 0x88100112, // 0034 GETMBR R4 R0 K18
- 0x900E2404, // 0035 SETMBR R3 K18 R4
- 0x88100113, // 0036 GETMBR R4 R0 K19
- 0x900E2604, // 0037 SETMBR R3 K19 R4
- 0x88100114, // 0038 GETMBR R4 R0 K20
- 0x78120002, // 0039 JMPF R4 #003D
- 0x900E2B05, // 003A SETMBR R3 K21 K5
- 0x8810010C, // 003B GETMBR R4 R0 K12
- 0x900E2C04, // 003C SETMBR R3 K22 R4
- 0x780A0001, // 003D JMPF R2 #0040
- 0x58100005, // 003E LDCONST R4 K5
- 0x70020000, // 003F JMP #0041
- 0x58100008, // 0040 LDCONST R4 K8
- 0x900E2804, // 0041 SETMBR R3 K20 R4
- 0x8810070A, // 0042 GETMBR R4 R3 K10
- 0x1C100908, // 0043 EQ R4 R4 K8
- 0x78120014, // 0044 JMPF R4 #005A
- 0xB8122E00, // 0045 GETNGBL R4 K23
- 0x8C100918, // 0046 GETMET R4 R4 K24
- 0x88180711, // 0047 GETMBR R6 R3 K17
- 0x7C100400, // 0048 CALL R4 2
- 0x5C140800, // 0049 MOVE R5 R4
- 0x74160004, // 004A JMPT R5 #0050
- 0x60140018, // 004B GETGBL R5 G24
- 0x58180019, // 004C LDCONST R6 K25
- 0x881C0711, // 004D GETMBR R7 R3 K17
- 0x7C140400, // 004E CALL R5 2
- 0x5C100A00, // 004F MOVE R4 R5
- 0xB8163400, // 0050 GETNGBL R5 K26
- 0x8C140B1B, // 0051 GETMET R5 R5 K27
- 0x601C0018, // 0052 GETGBL R7 G24
- 0x5820001C, // 0053 LDCONST R8 K28
- 0x88240709, // 0054 GETMBR R9 R3 K9
- 0x8824130A, // 0055 GETMBR R9 R9 K10
- 0x5C280800, // 0056 MOVE R10 R4
- 0x7C1C0600, // 0057 CALL R7 3
- 0x5820001D, // 0058 LDCONST R8 K29
- 0x7C140600, // 0059 CALL R5 3
- 0x80040600, // 005A RET 1 R3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: initiate_response
-********************************************************************/
-extern const bclass be_class_Matter_Frame;
-be_local_closure(class_Matter_Frame_initiate_response, /* name */
- be_nested_proto(
- 9, /* nstack */
5, /* argc */
- 4, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Frame,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[23]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_Frame),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(Frame),
- /* K3 */ be_nested_str_weak(remote_ip),
- /* K4 */ be_nested_str_weak(_ip),
- /* K5 */ be_nested_str_weak(remote_port),
- /* K6 */ be_nested_str_weak(_port),
- /* K7 */ be_nested_str_weak(flag_dsiz),
- /* K8 */ be_const_int(0),
- /* K9 */ be_nested_str_weak(session),
- /* K10 */ be_nested_str_weak(initiator_session_id),
- /* K11 */ be_nested_str_weak(message_counter),
- /* K12 */ be_nested_str_weak(counter_snd_next),
- /* K13 */ be_nested_str_weak(local_session_id),
- /* K14 */ be_nested_str_weak(_counter_insecure_snd),
- /* K15 */ be_nested_str_weak(next),
- /* K16 */ be_nested_str_weak(x_flag_i),
- /* K17 */ be_const_int(1),
- /* K18 */ be_nested_str_weak(opcode),
- /* K19 */ be_nested_str_weak(_exchange_id),
- /* K20 */ be_nested_str_weak(exchange_id),
- /* K21 */ be_nested_str_weak(protocol_id),
- /* K22 */ be_nested_str_weak(x_flag_r),
- }),
- be_str_weak(initiate_response),
+ &be_ktab_class_Matter_Frame, /* shared constants */
+ be_str_weak(init),
&be_const_str_solidified,
- ( &(const binstruction[46]) { /* code */
- 0x58140000, // 0000 LDCONST R5 K0
- 0x4C180000, // 0001 LDNIL R6
- 0x1C180806, // 0002 EQ R6 R4 R6
- 0x781A0004, // 0003 JMPF R6 #0009
- 0xB81A0200, // 0004 GETNGBL R6 K1
- 0x8C180D02, // 0005 GETMET R6 R6 K2
- 0x5C200000, // 0006 MOVE R8 R0
- 0x7C180400, // 0007 CALL R6 2
- 0x5C100C00, // 0008 MOVE R4 R6
- 0x88180304, // 0009 GETMBR R6 R1 K4
- 0x90120606, // 000A SETMBR R4 K3 R6
- 0x88180306, // 000B GETMBR R6 R1 K6
- 0x90120A06, // 000C SETMBR R4 K5 R6
- 0x90120F08, // 000D SETMBR R4 K7 K8
- 0x90121201, // 000E SETMBR R4 K9 R1
- 0x78060008, // 000F JMPF R1 #0019
- 0x8818030A, // 0010 GETMBR R6 R1 K10
- 0x20180D08, // 0011 NE R6 R6 K8
- 0x781A0005, // 0012 JMPF R6 #0019
- 0x8C18030C, // 0013 GETMET R6 R1 K12
- 0x7C180200, // 0014 CALL R6 1
- 0x90121606, // 0015 SETMBR R4 K11 R6
- 0x8818030A, // 0016 GETMBR R6 R1 K10
- 0x90121A06, // 0017 SETMBR R4 K13 R6
- 0x70020004, // 0018 JMP #001E
- 0x8818030E, // 0019 GETMBR R6 R1 K14
- 0x8C180D0F, // 001A GETMET R6 R6 K15
- 0x7C180200, // 001B CALL R6 1
- 0x90121606, // 001C SETMBR R4 K11 R6
- 0x90121B08, // 001D SETMBR R4 K13 K8
- 0x90122111, // 001E SETMBR R4 K16 K17
- 0x90122402, // 001F SETMBR R4 K18 R2
- 0x88180313, // 0020 GETMBR R6 R1 K19
- 0x00180D11, // 0021 ADD R6 R6 K17
- 0x90062606, // 0022 SETMBR R1 K19 R6
- 0x88180313, // 0023 GETMBR R6 R1 K19
- 0x541EFFFF, // 0024 LDINT R7 65536
- 0x30180C07, // 0025 OR R6 R6 R7
- 0x90122806, // 0026 SETMBR R4 K20 R6
- 0x90122B11, // 0027 SETMBR R4 K21 K17
- 0x780E0001, // 0028 JMPF R3 #002B
- 0x58180011, // 0029 LDCONST R6 K17
- 0x70020000, // 002A JMP #002C
- 0x58180008, // 002B LDCONST R6 K8
- 0x90122C06, // 002C SETMBR R4 K22 R6
- 0x80040800, // 002D RET 1 R4
+ ( &(const binstruction[ 5]) { /* code */
+ 0x90020C01, // 0000 SETMBR R0 K6 R1
+ 0x90020602, // 0001 SETMBR R0 K3 R2
+ 0x90022603, // 0002 SETMBR R0 K19 R3
+ 0x90022804, // 0003 SETMBR R0 K20 R4
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: encode_frame
+********************************************************************/
+be_local_closure(class_Matter_Frame_encode_frame, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Frame, /* shared constants */
+ be_str_weak(encode_frame),
+ &be_const_str_solidified,
+ ( &(const binstruction[161]) { /* code */
+ 0x4C0C0000, // 0000 LDNIL R3
+ 0x1C0C0403, // 0001 EQ R3 R2 R3
+ 0x780E000A, // 0002 JMPF R3 #000E
+ 0x600C0015, // 0003 GETGBL R3 G21
+ 0x5412000F, // 0004 LDINT R4 16
+ 0x78060003, // 0005 JMPF R1 #000A
+ 0x6014000C, // 0006 GETGBL R5 G12
+ 0x5C180200, // 0007 MOVE R6 R1
+ 0x7C140200, // 0008 CALL R5 1
+ 0x70020000, // 0009 JMP #000B
+ 0x58140012, // 000A LDCONST R5 K18
+ 0x00100805, // 000B ADD R4 R4 R5
+ 0x7C0C0200, // 000C CALL R3 1
+ 0x5C080600, // 000D MOVE R2 R3
+ 0x880C010A, // 000E GETMBR R3 R0 K10
+ 0x4C100000, // 000F LDNIL R4
+ 0x1C0C0604, // 0010 EQ R3 R3 R4
+ 0x780E000D, // 0011 JMPF R3 #0020
+ 0x90021512, // 0012 SETMBR R0 K10 K18
+ 0x880C0115, // 0013 GETMBR R3 R0 K21
+ 0x780E0003, // 0014 JMPF R3 #0019
+ 0x880C010A, // 0015 GETMBR R3 R0 K10
+ 0x54120003, // 0016 LDINT R4 4
+ 0x300C0604, // 0017 OR R3 R3 R4
+ 0x90021403, // 0018 SETMBR R0 K10 R3
+ 0x880C0116, // 0019 GETMBR R3 R0 K22
+ 0x780E0004, // 001A JMPF R3 #0020
+ 0x880C010A, // 001B GETMBR R3 R0 K10
+ 0x88100116, // 001C GETMBR R4 R0 K22
+ 0x2C100917, // 001D AND R4 R4 K23
+ 0x300C0604, // 001E OR R3 R3 R4
+ 0x90021403, // 001F SETMBR R0 K10 R3
+ 0x8C0C0509, // 0020 GETMET R3 R2 K9
+ 0x8814010A, // 0021 GETMBR R5 R0 K10
+ 0x5818000B, // 0022 LDCONST R6 K11
+ 0x7C0C0600, // 0023 CALL R3 3
+ 0x8C0C0509, // 0024 GETMET R3 R2 K9
+ 0x88140118, // 0025 GETMBR R5 R0 K24
+ 0x78160001, // 0026 JMPF R5 #0029
+ 0x88140118, // 0027 GETMBR R5 R0 K24
+ 0x70020000, // 0028 JMP #002A
+ 0x58140012, // 0029 LDCONST R5 K18
+ 0x58180019, // 002A LDCONST R6 K25
+ 0x7C0C0600, // 002B CALL R3 3
+ 0x880C011A, // 002C GETMBR R3 R0 K26
+ 0x4C100000, // 002D LDNIL R4
+ 0x1C0C0604, // 002E EQ R3 R3 R4
+ 0x780E0013, // 002F JMPF R3 #0044
+ 0x90023512, // 0030 SETMBR R0 K26 K18
+ 0x880C011B, // 0031 GETMBR R3 R0 K27
+ 0x780E0003, // 0032 JMPF R3 #0037
+ 0x880C011A, // 0033 GETMBR R3 R0 K26
+ 0x5412007F, // 0034 LDINT R4 128
+ 0x300C0604, // 0035 OR R3 R3 R4
+ 0x90023403, // 0036 SETMBR R0 K26 R3
+ 0x880C011C, // 0037 GETMBR R3 R0 K28
+ 0x780E0003, // 0038 JMPF R3 #003D
+ 0x880C011A, // 0039 GETMBR R3 R0 K26
+ 0x5412003F, // 003A LDINT R4 64
+ 0x300C0604, // 003B OR R3 R3 R4
+ 0x90023403, // 003C SETMBR R0 K26 R3
+ 0x880C011D, // 003D GETMBR R3 R0 K29
+ 0x780E0004, // 003E JMPF R3 #0044
+ 0x880C011A, // 003F GETMBR R3 R0 K26
+ 0x8810011D, // 0040 GETMBR R4 R0 K29
+ 0x2C100917, // 0041 AND R4 R4 K23
+ 0x300C0604, // 0042 OR R3 R3 R4
+ 0x90023403, // 0043 SETMBR R0 K26 R3
+ 0x8C0C0509, // 0044 GETMET R3 R2 K9
+ 0x8814011A, // 0045 GETMBR R5 R0 K26
+ 0x5818000B, // 0046 LDCONST R6 K11
+ 0x7C0C0600, // 0047 CALL R3 3
+ 0x8C0C0509, // 0048 GETMET R3 R2 K9
+ 0x8814010C, // 0049 GETMBR R5 R0 K12
+ 0x541A0003, // 004A LDINT R6 4
+ 0x7C0C0600, // 004B CALL R3 3
+ 0x880C0115, // 004C GETMBR R3 R0 K21
+ 0x780E0001, // 004D JMPF R3 #0050
+ 0x880C011E, // 004E GETMBR R3 R0 K30
+ 0x400C0403, // 004F CONNECT R3 R2 R3
+ 0x880C0116, // 0050 GETMBR R3 R0 K22
+ 0x1C0C070B, // 0051 EQ R3 R3 K11
+ 0x780E0001, // 0052 JMPF R3 #0055
+ 0x880C011F, // 0053 GETMBR R3 R0 K31
+ 0x400C0403, // 0054 CONNECT R3 R2 R3
+ 0x880C0116, // 0055 GETMBR R3 R0 K22
+ 0x1C0C0719, // 0056 EQ R3 R3 K25
+ 0x780E0003, // 0057 JMPF R3 #005C
+ 0x8C0C0509, // 0058 GETMET R3 R2 K9
+ 0x88140120, // 0059 GETMBR R5 R0 K32
+ 0x58180019, // 005A LDCONST R6 K25
+ 0x7C0C0600, // 005B CALL R3 3
+ 0x600C000C, // 005C GETGBL R3 G12
+ 0x5C100400, // 005D MOVE R4 R2
+ 0x7C0C0200, // 005E CALL R3 1
+ 0x90020803, // 005F SETMBR R0 K4 R3
+ 0x880C0121, // 0060 GETMBR R3 R0 K33
+ 0x4C100000, // 0061 LDNIL R4
+ 0x1C0C0604, // 0062 EQ R3 R3 R4
+ 0x780E0016, // 0063 JMPF R3 #007B
+ 0x90024312, // 0064 SETMBR R0 K33 K18
+ 0x880C0122, // 0065 GETMBR R3 R0 K34
+ 0x780E0003, // 0066 JMPF R3 #006B
+ 0x880C0121, // 0067 GETMBR R3 R0 K33
+ 0x5412000F, // 0068 LDINT R4 16
+ 0x300C0604, // 0069 OR R3 R3 R4
+ 0x90024203, // 006A SETMBR R0 K33 R3
+ 0x880C0123, // 006B GETMBR R3 R0 K35
+ 0x780E0003, // 006C JMPF R3 #0071
+ 0x880C0121, // 006D GETMBR R3 R0 K33
+ 0x54120003, // 006E LDINT R4 4
+ 0x300C0604, // 006F OR R3 R3 R4
+ 0x90024203, // 0070 SETMBR R0 K33 R3
+ 0x880C0124, // 0071 GETMBR R3 R0 K36
+ 0x780E0002, // 0072 JMPF R3 #0076
+ 0x880C0121, // 0073 GETMBR R3 R0 K33
+ 0x300C0719, // 0074 OR R3 R3 K25
+ 0x90024203, // 0075 SETMBR R0 K33 R3
+ 0x880C0125, // 0076 GETMBR R3 R0 K37
+ 0x780E0002, // 0077 JMPF R3 #007B
+ 0x880C0121, // 0078 GETMBR R3 R0 K33
+ 0x300C070B, // 0079 OR R3 R3 K11
+ 0x90024203, // 007A SETMBR R0 K33 R3
+ 0x8C0C0509, // 007B GETMET R3 R2 K9
+ 0x88140121, // 007C GETMBR R5 R0 K33
+ 0x5818000B, // 007D LDCONST R6 K11
+ 0x7C0C0600, // 007E CALL R3 3
+ 0x8C0C0509, // 007F GETMET R3 R2 K9
+ 0x88140126, // 0080 GETMBR R5 R0 K38
+ 0x5818000B, // 0081 LDCONST R6 K11
+ 0x7C0C0600, // 0082 CALL R3 3
+ 0x8C0C0509, // 0083 GETMET R3 R2 K9
+ 0x88140127, // 0084 GETMBR R5 R0 K39
+ 0x4C180000, // 0085 LDNIL R6
+ 0x20140A06, // 0086 NE R5 R5 R6
+ 0x78160003, // 0087 JMPF R5 #008C
+ 0x88140127, // 0088 GETMBR R5 R0 K39
+ 0x541AFFFE, // 0089 LDINT R6 65535
+ 0x2C140A06, // 008A AND R5 R5 R6
+ 0x70020000, // 008B JMP #008D
+ 0x58140012, // 008C LDCONST R5 K18
+ 0x58180019, // 008D LDCONST R6 K25
+ 0x7C0C0600, // 008E CALL R3 3
+ 0x8C0C0509, // 008F GETMET R3 R2 K9
+ 0x88140128, // 0090 GETMBR R5 R0 K40
+ 0x58180019, // 0091 LDCONST R6 K25
+ 0x7C0C0600, // 0092 CALL R3 3
+ 0x880C0124, // 0093 GETMBR R3 R0 K36
+ 0x780E0003, // 0094 JMPF R3 #0099
+ 0x8C0C0509, // 0095 GETMET R3 R2 K9
+ 0x88140129, // 0096 GETMBR R5 R0 K41
+ 0x541A0003, // 0097 LDINT R6 4
+ 0x7C0C0600, // 0098 CALL R3 3
+ 0x600C000C, // 0099 GETGBL R3 G12
+ 0x5C100400, // 009A MOVE R4 R2
+ 0x7C0C0200, // 009B CALL R3 1
+ 0x90025403, // 009C SETMBR R0 K42 R3
+ 0x78060000, // 009D JMPF R1 #009F
+ 0x400C0401, // 009E CONNECT R3 R2 R1
+ 0x90020602, // 009F SETMBR R0 K3 R2
+ 0x80040400, // 00A0 RET 1 R2
})
)
);
@@ -695,162 +416,139 @@ be_local_closure(class_Matter_Frame_initiate_response, /* name */
/********************************************************************
** Solidified function: decode_header
********************************************************************/
-extern const bclass be_class_Matter_Frame;
be_local_closure(class_Matter_Frame_decode_header, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Frame,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[21]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(raw),
- /* K2 */ be_nested_str_weak(flags),
- /* K3 */ be_nested_str_weak(get),
- /* K4 */ be_const_int(1),
- /* K5 */ be_nested_str_weak(flag_s),
- /* K6 */ be_nested_str_weak(getbits),
- /* K7 */ be_const_int(2),
- /* K8 */ be_nested_str_weak(flag_dsiz),
- /* K9 */ be_const_int(3),
- /* K10 */ be_nested_str_weak(sec_flags),
- /* K11 */ be_nested_str_weak(sec_p),
- /* K12 */ be_nested_str_weak(sec_c),
- /* K13 */ be_nested_str_weak(sec_mx),
- /* K14 */ be_nested_str_weak(sec_sesstype),
- /* K15 */ be_nested_str_weak(local_session_id),
- /* K16 */ be_nested_str_weak(message_counter),
- /* K17 */ be_nested_str_weak(source_node_id),
- /* K18 */ be_nested_str_weak(dest_node_id_8),
- /* K19 */ be_nested_str_weak(dest_node_id_2),
- /* K20 */ be_nested_str_weak(payload_idx),
- }),
+ &be_ktab_class_Matter_Frame, /* shared constants */
be_str_weak(decode_header),
&be_const_str_solidified,
( &(const binstruction[121]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x8C0C0503, // 0002 GETMET R3 R2 K3
- 0x58140000, // 0003 LDCONST R5 K0
- 0x58180004, // 0004 LDCONST R6 K4
+ 0x58040012, // 0000 LDCONST R1 K18
+ 0x88080103, // 0001 GETMBR R2 R0 K3
+ 0x8C0C052B, // 0002 GETMET R3 R2 K43
+ 0x58140012, // 0003 LDCONST R5 K18
+ 0x5818000B, // 0004 LDCONST R6 K11
0x7C0C0600, // 0005 CALL R3 3
- 0x90020403, // 0006 SETMBR R0 K2 R3
- 0x880C0102, // 0007 GETMBR R3 R0 K2
+ 0x90021403, // 0006 SETMBR R0 K10 R3
+ 0x880C010A, // 0007 GETMBR R3 R0 K10
0x541200F7, // 0008 LDINT R4 248
0x2C0C0604, // 0009 AND R3 R3 R4
- 0x200C0700, // 000A NE R3 R3 K0
+ 0x200C0712, // 000A NE R3 R3 K18
0x780E0001, // 000B JMPF R3 #000E
0x500C0000, // 000C LDBOOL R3 0 0
0x80040600, // 000D RET 1 R3
- 0x8C0C0506, // 000E GETMET R3 R2 K6
- 0x58140007, // 000F LDCONST R5 K7
- 0x58180004, // 0010 LDCONST R6 K4
+ 0x8C0C052C, // 000E GETMET R3 R2 K44
+ 0x58140019, // 000F LDCONST R5 K25
+ 0x5818000B, // 0010 LDCONST R6 K11
0x7C0C0600, // 0011 CALL R3 3
- 0x90020A03, // 0012 SETMBR R0 K5 R3
- 0x8C0C0506, // 0013 GETMET R3 R2 K6
- 0x58140000, // 0014 LDCONST R5 K0
- 0x58180007, // 0015 LDCONST R6 K7
+ 0x90022A03, // 0012 SETMBR R0 K21 R3
+ 0x8C0C052C, // 0013 GETMET R3 R2 K44
+ 0x58140012, // 0014 LDCONST R5 K18
+ 0x58180019, // 0015 LDCONST R6 K25
0x7C0C0600, // 0016 CALL R3 3
- 0x90021003, // 0017 SETMBR R0 K8 R3
- 0x880C0108, // 0018 GETMBR R3 R0 K8
- 0x1C0C0709, // 0019 EQ R3 R3 K9
+ 0x90022C03, // 0017 SETMBR R0 K22 R3
+ 0x880C0116, // 0018 GETMBR R3 R0 K22
+ 0x1C0C0717, // 0019 EQ R3 R3 K23
0x780E0001, // 001A JMPF R3 #001D
0x500C0000, // 001B LDBOOL R3 0 0
0x80040600, // 001C RET 1 R3
- 0x8C0C0503, // 001D GETMET R3 R2 K3
- 0x58140009, // 001E LDCONST R5 K9
- 0x58180004, // 001F LDCONST R6 K4
+ 0x8C0C052B, // 001D GETMET R3 R2 K43
+ 0x58140017, // 001E LDCONST R5 K23
+ 0x5818000B, // 001F LDCONST R6 K11
0x7C0C0600, // 0020 CALL R3 3
- 0x90021403, // 0021 SETMBR R0 K10 R3
- 0x8C0C0506, // 0022 GETMET R3 R2 K6
+ 0x90023403, // 0021 SETMBR R0 K26 R3
+ 0x8C0C052C, // 0022 GETMET R3 R2 K44
0x54160007, // 0023 LDINT R5 8
- 0x08161205, // 0024 MUL R5 K9 R5
+ 0x08162E05, // 0024 MUL R5 K23 R5
0x541A0006, // 0025 LDINT R6 7
0x00140A06, // 0026 ADD R5 R5 R6
- 0x58180004, // 0027 LDCONST R6 K4
+ 0x5818000B, // 0027 LDCONST R6 K11
0x7C0C0600, // 0028 CALL R3 3
- 0x90021603, // 0029 SETMBR R0 K11 R3
- 0x8C0C0506, // 002A GETMET R3 R2 K6
+ 0x90023603, // 0029 SETMBR R0 K27 R3
+ 0x8C0C052C, // 002A GETMET R3 R2 K44
0x54160007, // 002B LDINT R5 8
- 0x08161205, // 002C MUL R5 K9 R5
+ 0x08162E05, // 002C MUL R5 K23 R5
0x541A0005, // 002D LDINT R6 6
0x00140A06, // 002E ADD R5 R5 R6
- 0x58180004, // 002F LDCONST R6 K4
+ 0x5818000B, // 002F LDCONST R6 K11
0x7C0C0600, // 0030 CALL R3 3
- 0x90021803, // 0031 SETMBR R0 K12 R3
- 0x8C0C0506, // 0032 GETMET R3 R2 K6
+ 0x90023803, // 0031 SETMBR R0 K28 R3
+ 0x8C0C052C, // 0032 GETMET R3 R2 K44
0x54160007, // 0033 LDINT R5 8
- 0x08161205, // 0034 MUL R5 K9 R5
+ 0x08162E05, // 0034 MUL R5 K23 R5
0x541A0004, // 0035 LDINT R6 5
0x00140A06, // 0036 ADD R5 R5 R6
- 0x58180004, // 0037 LDCONST R6 K4
+ 0x5818000B, // 0037 LDCONST R6 K11
0x7C0C0600, // 0038 CALL R3 3
- 0x90021A03, // 0039 SETMBR R0 K13 R3
- 0x8C0C0506, // 003A GETMET R3 R2 K6
+ 0x90025A03, // 0039 SETMBR R0 K45 R3
+ 0x8C0C052C, // 003A GETMET R3 R2 K44
0x54160007, // 003B LDINT R5 8
- 0x08161205, // 003C MUL R5 K9 R5
- 0x58180007, // 003D LDCONST R6 K7
+ 0x08162E05, // 003C MUL R5 K23 R5
+ 0x58180019, // 003D LDCONST R6 K25
0x7C0C0600, // 003E CALL R3 3
- 0x90021C03, // 003F SETMBR R0 K14 R3
- 0x880C010E, // 0040 GETMBR R3 R0 K14
- 0x240C0704, // 0041 GT R3 R3 K4
+ 0x90023A03, // 003F SETMBR R0 K29 R3
+ 0x880C011D, // 0040 GETMBR R3 R0 K29
+ 0x240C070B, // 0041 GT R3 R3 K11
0x780E0001, // 0042 JMPF R3 #0045
0x500C0000, // 0043 LDBOOL R3 0 0
0x80040600, // 0044 RET 1 R3
- 0x8C0C0503, // 0045 GETMET R3 R2 K3
- 0x58140004, // 0046 LDCONST R5 K4
- 0x58180007, // 0047 LDCONST R6 K7
+ 0x8C0C052B, // 0045 GETMET R3 R2 K43
+ 0x5814000B, // 0046 LDCONST R5 K11
+ 0x58180019, // 0047 LDCONST R6 K25
0x7C0C0600, // 0048 CALL R3 3
- 0x90021E03, // 0049 SETMBR R0 K15 R3
- 0x8C0C0503, // 004A GETMET R3 R2 K3
+ 0x90023003, // 0049 SETMBR R0 K24 R3
+ 0x8C0C052B, // 004A GETMET R3 R2 K43
0x54160003, // 004B LDINT R5 4
0x541A0003, // 004C LDINT R6 4
0x7C0C0600, // 004D CALL R3 3
- 0x90022003, // 004E SETMBR R0 K16 R3
+ 0x90021803, // 004E SETMBR R0 K12 R3
0x540E0007, // 004F LDINT R3 8
0x00040203, // 0050 ADD R1 R1 R3
- 0x880C0105, // 0051 GETMBR R3 R0 K5
+ 0x880C0115, // 0051 GETMBR R3 R0 K21
0x780E0006, // 0052 JMPF R3 #005A
0x540E0006, // 0053 LDINT R3 7
0x000C0203, // 0054 ADD R3 R1 R3
0x400C0203, // 0055 CONNECT R3 R1 R3
0x940C0403, // 0056 GETIDX R3 R2 R3
- 0x90022203, // 0057 SETMBR R0 K17 R3
+ 0x90023C03, // 0057 SETMBR R0 K30 R3
0x540E0007, // 0058 LDINT R3 8
0x00040203, // 0059 ADD R1 R1 R3
- 0x880C0108, // 005A GETMBR R3 R0 K8
- 0x1C0C0704, // 005B EQ R3 R3 K4
+ 0x880C0116, // 005A GETMBR R3 R0 K22
+ 0x1C0C070B, // 005B EQ R3 R3 K11
0x780E0007, // 005C JMPF R3 #0065
0x540E0006, // 005D LDINT R3 7
0x000C0203, // 005E ADD R3 R1 R3
0x400C0203, // 005F CONNECT R3 R1 R3
0x940C0403, // 0060 GETIDX R3 R2 R3
- 0x90022403, // 0061 SETMBR R0 K18 R3
+ 0x90023E03, // 0061 SETMBR R0 K31 R3
0x540E0007, // 0062 LDINT R3 8
0x00040203, // 0063 ADD R1 R1 R3
0x70020008, // 0064 JMP #006E
- 0x880C0108, // 0065 GETMBR R3 R0 K8
- 0x1C0C0707, // 0066 EQ R3 R3 K7
+ 0x880C0116, // 0065 GETMBR R3 R0 K22
+ 0x1C0C0719, // 0066 EQ R3 R3 K25
0x780E0005, // 0067 JMPF R3 #006E
- 0x8C0C0503, // 0068 GETMET R3 R2 K3
+ 0x8C0C052B, // 0068 GETMET R3 R2 K43
0x5C140200, // 0069 MOVE R5 R1
- 0x58180007, // 006A LDCONST R6 K7
+ 0x58180019, // 006A LDCONST R6 K25
0x7C0C0600, // 006B CALL R3 3
- 0x90022603, // 006C SETMBR R0 K19 R3
- 0x00040307, // 006D ADD R1 R1 K7
- 0x880C010D, // 006E GETMBR R3 R0 K13
+ 0x90024003, // 006C SETMBR R0 K32 R3
+ 0x00040319, // 006D ADD R1 R1 K25
+ 0x880C012D, // 006E GETMBR R3 R0 K45
0x780E0005, // 006F JMPF R3 #0076
- 0x8C0C0503, // 0070 GETMET R3 R2 K3
+ 0x8C0C052B, // 0070 GETMET R3 R2 K43
0x5C140200, // 0071 MOVE R5 R1
- 0x58180007, // 0072 LDCONST R6 K7
+ 0x58180019, // 0072 LDCONST R6 K25
0x7C0C0600, // 0073 CALL R3 3
- 0x00100707, // 0074 ADD R4 R3 K7
+ 0x00100719, // 0074 ADD R4 R3 K25
0x00040204, // 0075 ADD R1 R1 R4
- 0x90022801, // 0076 SETMBR R0 K20 R1
+ 0x90020801, // 0076 SETMBR R0 K4 R1
0x500C0200, // 0077 LDBOOL R3 1 0
0x80040600, // 0078 RET 1 R3
})
@@ -860,33 +558,32 @@ be_local_closure(class_Matter_Frame_decode_header, /* name */
/********************************************************************
-** Solidified function: init
+** Solidified function: debug
********************************************************************/
-extern const bclass be_class_Matter_Frame;
-be_local_closure(class_Matter_Frame_init, /* name */
+be_local_closure(class_Matter_Frame_debug, /* name */
be_nested_proto(
- 5, /* nstack */
- 5, /* argc */
- 2, /* varg */
+ 6, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Frame,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(message_handler),
- /* K1 */ be_nested_str_weak(raw),
- /* K2 */ be_nested_str_weak(remote_ip),
- /* K3 */ be_nested_str_weak(remote_port),
- }),
- be_str_weak(init),
+ &be_ktab_class_Matter_Frame, /* shared constants */
+ be_str_weak(debug),
&be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
- 0x90020403, // 0002 SETMBR R0 K2 R3
- 0x90020604, // 0003 SETMBR R0 K3 R4
- 0x80000000, // 0004 RET 0
+ ( &(const binstruction[10]) { /* code */
+ 0x80000400, // 0000 RET 0
+ 0xB80A5C00, // 0001 GETNGBL R2 K46
+ 0x8C08052F, // 0002 GETMET R2 R2 K47
+ 0x88100106, // 0003 GETMBR R4 R0 K6
+ 0x5C140200, // 0004 MOVE R5 R1
+ 0x7C080600, // 0005 CALL R2 3
+ 0x8C0C0530, // 0006 GETMET R3 R2 K48
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0x8C0C0531, // 0008 GETMET R3 R2 K49
+ 0x7C0C0200, // 0009 CALL R3 1
})
)
);
@@ -894,136 +591,112 @@ be_local_closure(class_Matter_Frame_init, /* name */
/********************************************************************
-** Solidified function: decode_payload
+** Solidified function: build_response
********************************************************************/
-extern const bclass be_class_Matter_Frame;
-be_local_closure(class_Matter_Frame_decode_payload, /* name */
+be_local_closure(class_Matter_Frame_build_response, /* name */
be_nested_proto(
- 7, /* nstack */
- 1, /* argc */
- 2, /* varg */
+ 10, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Frame,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[19]) { /* constants */
- /* K0 */ be_nested_str_weak(payload_idx),
- /* K1 */ be_nested_str_weak(raw),
- /* K2 */ be_nested_str_weak(x_flags),
- /* K3 */ be_nested_str_weak(get),
- /* K4 */ be_const_int(1),
- /* K5 */ be_nested_str_weak(x_flag_v),
- /* K6 */ be_nested_str_weak(getbits),
- /* K7 */ be_nested_str_weak(x_flag_sx),
- /* K8 */ be_const_int(3),
- /* K9 */ be_nested_str_weak(x_flag_r),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(x_flag_a),
- /* K12 */ be_nested_str_weak(x_flag_i),
- /* K13 */ be_nested_str_weak(opcode),
- /* K14 */ be_nested_str_weak(exchange_id),
- /* K15 */ be_nested_str_weak(protocol_id),
- /* K16 */ be_nested_str_weak(vendor_id),
- /* K17 */ be_nested_str_weak(ack_message_counter),
- /* K18 */ be_nested_str_weak(app_payload_idx),
- }),
- be_str_weak(decode_payload),
+ &be_ktab_class_Matter_Frame, /* shared constants */
+ be_str_weak(build_response),
&be_const_str_solidified,
- ( &(const binstruction[93]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x8C0C0503, // 0002 GETMET R3 R2 K3
- 0x5C140200, // 0003 MOVE R5 R1
- 0x58180004, // 0004 LDCONST R6 K4
- 0x7C0C0600, // 0005 CALL R3 3
- 0x90020403, // 0006 SETMBR R0 K2 R3
- 0x8C0C0506, // 0007 GETMET R3 R2 K6
- 0x54160007, // 0008 LDINT R5 8
- 0x08140205, // 0009 MUL R5 R1 R5
- 0x541A0003, // 000A LDINT R6 4
- 0x00140A06, // 000B ADD R5 R5 R6
- 0x58180004, // 000C LDCONST R6 K4
- 0x7C0C0600, // 000D CALL R3 3
- 0x90020A03, // 000E SETMBR R0 K5 R3
- 0x8C0C0506, // 000F GETMET R3 R2 K6
- 0x54160007, // 0010 LDINT R5 8
- 0x08140205, // 0011 MUL R5 R1 R5
- 0x00140B08, // 0012 ADD R5 R5 K8
- 0x58180004, // 0013 LDCONST R6 K4
- 0x7C0C0600, // 0014 CALL R3 3
- 0x90020E03, // 0015 SETMBR R0 K7 R3
- 0x8C0C0506, // 0016 GETMET R3 R2 K6
- 0x54160007, // 0017 LDINT R5 8
- 0x08140205, // 0018 MUL R5 R1 R5
- 0x00140B0A, // 0019 ADD R5 R5 K10
- 0x58180004, // 001A LDCONST R6 K4
- 0x7C0C0600, // 001B CALL R3 3
- 0x90021203, // 001C SETMBR R0 K9 R3
- 0x8C0C0506, // 001D GETMET R3 R2 K6
- 0x54160007, // 001E LDINT R5 8
- 0x08140205, // 001F MUL R5 R1 R5
- 0x00140B04, // 0020 ADD R5 R5 K4
- 0x58180004, // 0021 LDCONST R6 K4
- 0x7C0C0600, // 0022 CALL R3 3
- 0x90021603, // 0023 SETMBR R0 K11 R3
- 0x8C0C0506, // 0024 GETMET R3 R2 K6
- 0x54160007, // 0025 LDINT R5 8
- 0x08140205, // 0026 MUL R5 R1 R5
- 0x58180004, // 0027 LDCONST R6 K4
- 0x7C0C0600, // 0028 CALL R3 3
- 0x90021803, // 0029 SETMBR R0 K12 R3
- 0x8C0C0503, // 002A GETMET R3 R2 K3
- 0x00140304, // 002B ADD R5 R1 K4
- 0x58180004, // 002C LDCONST R6 K4
- 0x7C0C0600, // 002D CALL R3 3
- 0x90021A03, // 002E SETMBR R0 K13 R3
- 0x8C0C0503, // 002F GETMET R3 R2 K3
- 0x0014030A, // 0030 ADD R5 R1 K10
- 0x5818000A, // 0031 LDCONST R6 K10
- 0x7C0C0600, // 0032 CALL R3 3
- 0x90021C03, // 0033 SETMBR R0 K14 R3
- 0x880C010C, // 0034 GETMBR R3 R0 K12
- 0x740E0003, // 0035 JMPT R3 #003A
- 0x880C010E, // 0036 GETMBR R3 R0 K14
- 0x5412FFFF, // 0037 LDINT R4 65536
- 0x300C0604, // 0038 OR R3 R3 R4
- 0x90021C03, // 0039 SETMBR R0 K14 R3
- 0x8C0C0503, // 003A GETMET R3 R2 K3
- 0x54160003, // 003B LDINT R5 4
- 0x00140205, // 003C ADD R5 R1 R5
- 0x5818000A, // 003D LDCONST R6 K10
- 0x7C0C0600, // 003E CALL R3 3
- 0x90021E03, // 003F SETMBR R0 K15 R3
- 0x540E0005, // 0040 LDINT R3 6
- 0x00040203, // 0041 ADD R1 R1 R3
- 0x880C0105, // 0042 GETMBR R3 R0 K5
- 0x780E0005, // 0043 JMPF R3 #004A
- 0x8C0C0503, // 0044 GETMET R3 R2 K3
- 0x5C140200, // 0045 MOVE R5 R1
- 0x5818000A, // 0046 LDCONST R6 K10
- 0x7C0C0600, // 0047 CALL R3 3
- 0x90022003, // 0048 SETMBR R0 K16 R3
- 0x0004030A, // 0049 ADD R1 R1 K10
- 0x880C010B, // 004A GETMBR R3 R0 K11
- 0x780E0006, // 004B JMPF R3 #0053
- 0x8C0C0503, // 004C GETMET R3 R2 K3
- 0x5C140200, // 004D MOVE R5 R1
- 0x541A0003, // 004E LDINT R6 4
- 0x7C0C0600, // 004F CALL R3 3
- 0x90022203, // 0050 SETMBR R0 K17 R3
- 0x540E0003, // 0051 LDINT R3 4
- 0x00040203, // 0052 ADD R1 R1 R3
- 0x880C0107, // 0053 GETMBR R3 R0 K7
- 0x780E0005, // 0054 JMPF R3 #005B
- 0x8C0C0503, // 0055 GETMET R3 R2 K3
- 0x5C140200, // 0056 MOVE R5 R1
- 0x5818000A, // 0057 LDCONST R6 K10
- 0x7C0C0600, // 0058 CALL R3 3
- 0x0010070A, // 0059 ADD R4 R3 K10
- 0x00040204, // 005A ADD R1 R1 R4
- 0x90022401, // 005B SETMBR R0 K18 R1
- 0x80040000, // 005C RET 1 R0
+ ( &(const binstruction[90]) { /* code */
+ 0x4C100000, // 0000 LDNIL R4
+ 0x1C100604, // 0001 EQ R4 R3 R4
+ 0x78120005, // 0002 JMPF R4 #0009
+ 0x60100006, // 0003 GETGBL R4 G6
+ 0x5C140000, // 0004 MOVE R5 R0
+ 0x7C100200, // 0005 CALL R4 1
+ 0x88140106, // 0006 GETMBR R5 R0 K6
+ 0x7C100200, // 0007 CALL R4 1
+ 0x5C0C0800, // 0008 MOVE R3 R4
+ 0x88100113, // 0009 GETMBR R4 R0 K19
+ 0x900E2604, // 000A SETMBR R3 K19 R4
+ 0x88100114, // 000B GETMBR R4 R0 K20
+ 0x900E2804, // 000C SETMBR R3 K20 R4
+ 0x88100115, // 000D GETMBR R4 R0 K21
+ 0x78120003, // 000E JMPF R4 #0013
+ 0x900E2D0B, // 000F SETMBR R3 K22 K11
+ 0x8810011E, // 0010 GETMBR R4 R0 K30
+ 0x900E3E04, // 0011 SETMBR R3 K31 R4
+ 0x70020000, // 0012 JMP #0014
+ 0x900E2D12, // 0013 SETMBR R3 K22 K18
+ 0x88100100, // 0014 GETMBR R4 R0 K0
+ 0x900E0004, // 0015 SETMBR R3 K0 R4
+ 0x88100118, // 0016 GETMBR R4 R0 K24
+ 0x20100912, // 0017 NE R4 R4 K18
+ 0x7812000D, // 0018 JMPF R4 #0027
+ 0x88100100, // 0019 GETMBR R4 R0 K0
+ 0x7812000B, // 001A JMPF R4 #0027
+ 0x88100100, // 001B GETMBR R4 R0 K0
+ 0x88100932, // 001C GETMBR R4 R4 K50
+ 0x20100912, // 001D NE R4 R4 K18
+ 0x78120007, // 001E JMPF R4 #0027
+ 0x88100100, // 001F GETMBR R4 R0 K0
+ 0x8C100933, // 0020 GETMET R4 R4 K51
+ 0x7C100200, // 0021 CALL R4 1
+ 0x900E1804, // 0022 SETMBR R3 K12 R4
+ 0x88100100, // 0023 GETMBR R4 R0 K0
+ 0x88100932, // 0024 GETMBR R4 R4 K50
+ 0x900E3004, // 0025 SETMBR R3 K24 R4
+ 0x70020005, // 0026 JMP #002D
+ 0x88100100, // 0027 GETMBR R4 R0 K0
+ 0x88100934, // 0028 GETMBR R4 R4 K52
+ 0x8C100935, // 0029 GETMET R4 R4 K53
+ 0x7C100200, // 002A CALL R4 1
+ 0x900E1804, // 002B SETMBR R3 K12 R4
+ 0x900E3112, // 002C SETMBR R3 K24 K18
+ 0x88100125, // 002D GETMBR R4 R0 K37
+ 0x78120001, // 002E JMPF R4 #0031
+ 0x58100012, // 002F LDCONST R4 K18
+ 0x70020000, // 0030 JMP #0032
+ 0x5810000B, // 0031 LDCONST R4 K11
+ 0x900E4A04, // 0032 SETMBR R3 K37 R4
+ 0x900E4C01, // 0033 SETMBR R3 K38 R1
+ 0x88100127, // 0034 GETMBR R4 R0 K39
+ 0x900E4E04, // 0035 SETMBR R3 K39 R4
+ 0x88100128, // 0036 GETMBR R4 R0 K40
+ 0x900E5004, // 0037 SETMBR R3 K40 R4
+ 0x88100123, // 0038 GETMBR R4 R0 K35
+ 0x78120002, // 0039 JMPF R4 #003D
+ 0x900E490B, // 003A SETMBR R3 K36 K11
+ 0x8810010C, // 003B GETMBR R4 R0 K12
+ 0x900E5204, // 003C SETMBR R3 K41 R4
+ 0x780A0001, // 003D JMPF R2 #0040
+ 0x5810000B, // 003E LDCONST R4 K11
+ 0x70020000, // 003F JMP #0041
+ 0x58100012, // 0040 LDCONST R4 K18
+ 0x900E4604, // 0041 SETMBR R3 K35 R4
+ 0x88100718, // 0042 GETMBR R4 R3 K24
+ 0x1C100912, // 0043 EQ R4 R4 K18
+ 0x78120013, // 0044 JMPF R4 #0059
+ 0xB8125C00, // 0045 GETNGBL R4 K46
+ 0x8C100936, // 0046 GETMET R4 R4 K54
+ 0x88180726, // 0047 GETMBR R6 R3 K38
+ 0x7C100400, // 0048 CALL R4 2
+ 0x5C140800, // 0049 MOVE R5 R4
+ 0x74160004, // 004A JMPT R5 #0050
+ 0x60140018, // 004B GETGBL R5 G24
+ 0x58180037, // 004C LDCONST R6 K55
+ 0x881C0726, // 004D GETMBR R7 R3 K38
+ 0x7C140400, // 004E CALL R5 2
+ 0x5C100A00, // 004F MOVE R4 R5
+ 0xB8167000, // 0050 GETNGBL R5 K56
+ 0x60180018, // 0051 GETGBL R6 G24
+ 0x581C0039, // 0052 LDCONST R7 K57
+ 0x88200700, // 0053 GETMBR R8 R3 K0
+ 0x88201118, // 0054 GETMBR R8 R8 K24
+ 0x5C240800, // 0055 MOVE R9 R4
+ 0x7C180600, // 0056 CALL R6 3
+ 0x581C0017, // 0057 LDCONST R7 K23
+ 0x7C140400, // 0058 CALL R5 2
+ 0x80040600, // 0059 RET 1 R3
})
)
);
@@ -1033,169 +706,388 @@ be_local_closure(class_Matter_Frame_decode_payload, /* name */
/********************************************************************
** Solidified function: decrypt
********************************************************************/
-extern const bclass be_class_Matter_Frame;
be_local_closure(class_Matter_Frame_decrypt, /* name */
be_nested_proto(
23, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Frame,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[30]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(session),
- /* K2 */ be_nested_str_weak(raw),
- /* K3 */ be_nested_str_weak(payload_idx),
- /* K4 */ be_nested_str_weak(get_i2r),
- /* K5 */ be_nested_str_weak(sec_p),
- /* K6 */ be_nested_str_weak(tasmota),
- /* K7 */ be_nested_str_weak(log),
- /* K8 */ be_nested_str_weak(MTR_X3A_X20_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X3E_X20Compute_X20Privacy_X20TODO),
- /* K9 */ be_const_int(2),
- /* K10 */ be_nested_str_weak(get_i2r_privacy),
- /* K11 */ be_const_int(2147483647),
- /* K12 */ be_nested_str_weak(add),
- /* K13 */ be_nested_str_weak(local_session_id),
- /* K14 */ be_const_int(1),
- /* K15 */ be_nested_str_weak(AES_CTR),
- /* K16 */ be_nested_str_weak(decrypt),
- /* K17 */ be_const_int(0),
- /* K18 */ be_const_int(3),
- /* K19 */ be_nested_str_weak(message_handler),
- /* K20 */ be_nested_str_weak(_n_bytes),
- /* K21 */ be_nested_str_weak(clear),
- /* K22 */ be_nested_str_weak(flags),
- /* K23 */ be_nested_str_weak(message_counter),
- /* K24 */ be_nested_str_weak(source_node_id),
- /* K25 */ be_nested_str_weak(peer_node_id),
- /* K26 */ be_nested_str_weak(resize),
- /* K27 */ be_nested_str_weak(AES_CCM),
- /* K28 */ be_nested_str_weak(decrypt1),
- /* K29 */ be_nested_str_weak(MTR_X3A_X20rejected_X20packet_X20due_X20to_X20invalid_X20MIC),
- }),
+ &be_ktab_class_Matter_Frame, /* shared constants */
be_str_weak(decrypt),
&be_const_str_solidified,
- ( &(const binstruction[117]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x880C0102, // 0002 GETMBR R3 R0 K2
- 0x88100103, // 0003 GETMBR R4 R0 K3
+ ( &(const binstruction[115]) { /* code */
+ 0xA4060400, // 0000 IMPORT R1 K2
+ 0x88080100, // 0001 GETMBR R2 R0 K0
+ 0x880C0103, // 0002 GETMBR R3 R0 K3
+ 0x88100104, // 0003 GETMBR R4 R0 K4
0x5416000F, // 0004 LDINT R5 16
- 0x8C180504, // 0005 GETMET R6 R2 K4
+ 0x8C18053A, // 0005 GETMET R6 R2 K58
0x7C180200, // 0006 CALL R6 1
- 0x881C0105, // 0007 GETMBR R7 R0 K5
- 0x781E002C, // 0008 JMPF R7 #0036
- 0xB81E0C00, // 0009 GETNGBL R7 K6
- 0x8C1C0F07, // 000A GETMET R7 R7 K7
- 0x58240008, // 000B LDCONST R9 K8
- 0x58280009, // 000C LDCONST R10 K9
- 0x7C1C0600, // 000D CALL R7 3
- 0x8C1C050A, // 000E GETMET R7 R2 K10
- 0x7C1C0200, // 000F CALL R7 1
- 0x5421FFEF, // 0010 LDINT R8 -16
- 0x4020110B, // 0011 CONNECT R8 R8 K11
- 0x94200608, // 0012 GETIDX R8 R3 R8
- 0x60240015, // 0013 GETGBL R9 G21
- 0x7C240000, // 0014 CALL R9 0
- 0x8C24130C, // 0015 GETMET R9 R9 K12
- 0x882C010D, // 0016 GETMBR R11 R0 K13
- 0x5431FFFD, // 0017 LDINT R12 -2
- 0x7C240600, // 0018 CALL R9 3
- 0x542A0004, // 0019 LDINT R10 5
- 0x542E000E, // 001A LDINT R11 15
- 0x4028140B, // 001B CONNECT R10 R10 R11
- 0x9428100A, // 001C GETIDX R10 R8 R10
- 0x0024120A, // 001D ADD R9 R9 R10
- 0x542A0003, // 001E LDINT R10 4
- 0x882C0103, // 001F GETMBR R11 R0 K3
- 0x042C170E, // 0020 SUB R11 R11 K14
- 0x4028140B, // 0021 CONNECT R10 R10 R11
- 0x882C0102, // 0022 GETMBR R11 R0 K2
- 0x9428160A, // 0023 GETIDX R10 R11 R10
- 0x8C30030F, // 0024 GETMET R12 R1 K15
- 0x5C380E00, // 0025 MOVE R14 R7
- 0x7C300400, // 0026 CALL R12 2
- 0x8C301910, // 0027 GETMET R12 R12 K16
- 0x5C381400, // 0028 MOVE R14 R10
- 0x5C3C1200, // 0029 MOVE R15 R9
- 0x58400009, // 002A LDCONST R16 K9
- 0x7C300800, // 002B CALL R12 4
- 0x5C2C1800, // 002C MOVE R11 R12
- 0x40322312, // 002D CONNECT R12 K17 K18
- 0x88340102, // 002E GETMBR R13 R0 K2
- 0x94301A0C, // 002F GETIDX R12 R13 R12
- 0x0030180B, // 0030 ADD R12 R12 R11
- 0x88340103, // 0031 GETMBR R13 R0 K3
- 0x40341B0B, // 0032 CONNECT R13 R13 K11
- 0x9434140D, // 0033 GETIDX R13 R10 R13
- 0x0030180D, // 0034 ADD R12 R12 R13
- 0x9002040C, // 0035 SETMBR R0 K2 R12
- 0x881C0113, // 0036 GETMBR R7 R0 K19
- 0x881C0F14, // 0037 GETMBR R7 R7 K20
- 0x8C200F15, // 0038 GETMET R8 R7 K21
- 0x7C200200, // 0039 CALL R8 1
- 0x8C200F0C, // 003A GETMET R8 R7 K12
- 0x88280116, // 003B GETMBR R10 R0 K22
- 0x582C000E, // 003C LDCONST R11 K14
- 0x7C200600, // 003D CALL R8 3
- 0x8C200F0C, // 003E GETMET R8 R7 K12
- 0x88280117, // 003F GETMBR R10 R0 K23
- 0x542E0003, // 0040 LDINT R11 4
- 0x7C200600, // 0041 CALL R8 3
- 0x88200118, // 0042 GETMBR R8 R0 K24
- 0x78220002, // 0043 JMPF R8 #0047
- 0x88200118, // 0044 GETMBR R8 R0 K24
- 0x40200E08, // 0045 CONNECT R8 R7 R8
- 0x70020006, // 0046 JMP #004E
- 0x88200519, // 0047 GETMBR R8 R2 K25
- 0x78220001, // 0048 JMPF R8 #004B
- 0x88200519, // 0049 GETMBR R8 R2 K25
- 0x40200E08, // 004A CONNECT R8 R7 R8
- 0x8C200F1A, // 004B GETMET R8 R7 K26
- 0x542A000C, // 004C LDINT R10 13
- 0x7C200400, // 004D CALL R8 2
- 0x8820031B, // 004E GETMBR R8 R1 K27
- 0x8C20111C, // 004F GETMET R8 R8 K28
- 0x5C280C00, // 0050 MOVE R10 R6
- 0x5C2C0E00, // 0051 MOVE R11 R7
- 0x58300011, // 0052 LDCONST R12 K17
- 0x6034000C, // 0053 GETGBL R13 G12
- 0x5C380E00, // 0054 MOVE R14 R7
- 0x7C340200, // 0055 CALL R13 1
- 0x5C380600, // 0056 MOVE R14 R3
- 0x583C0011, // 0057 LDCONST R15 K17
- 0x5C400800, // 0058 MOVE R16 R4
- 0x5C440600, // 0059 MOVE R17 R3
- 0x5C480800, // 005A MOVE R18 R4
- 0x604C000C, // 005B GETGBL R19 G12
- 0x5C500600, // 005C MOVE R20 R3
- 0x7C4C0200, // 005D CALL R19 1
- 0x044C2604, // 005E SUB R19 R19 R4
- 0x044C2605, // 005F SUB R19 R19 R5
- 0x5C500600, // 0060 MOVE R20 R3
- 0x6054000C, // 0061 GETGBL R21 G12
- 0x5C580600, // 0062 MOVE R22 R3
- 0x7C540200, // 0063 CALL R21 1
- 0x04542A05, // 0064 SUB R21 R21 R5
- 0x5C580A00, // 0065 MOVE R22 R5
- 0x7C201C00, // 0066 CALL R8 14
- 0x78220006, // 0067 JMPF R8 #006F
- 0x8C24071A, // 0068 GETMET R9 R3 K26
- 0x602C000C, // 0069 GETGBL R11 G12
- 0x5C300600, // 006A MOVE R12 R3
- 0x7C2C0200, // 006B CALL R11 1
- 0x042C1605, // 006C SUB R11 R11 R5
- 0x7C240400, // 006D CALL R9 2
- 0x70020004, // 006E JMP #0074
- 0xB8260C00, // 006F GETNGBL R9 K6
- 0x8C241307, // 0070 GETMET R9 R9 K7
- 0x582C001D, // 0071 LDCONST R11 K29
- 0x58300012, // 0072 LDCONST R12 K18
- 0x7C240600, // 0073 CALL R9 3
- 0x80041000, // 0074 RET 1 R8
+ 0x881C011B, // 0007 GETMBR R7 R0 K27
+ 0x781E002B, // 0008 JMPF R7 #0035
+ 0xB81E7000, // 0009 GETNGBL R7 K56
+ 0x5820003B, // 000A LDCONST R8 K59
+ 0x58240019, // 000B LDCONST R9 K25
+ 0x7C1C0400, // 000C CALL R7 2
+ 0x8C1C053C, // 000D GETMET R7 R2 K60
+ 0x7C1C0200, // 000E CALL R7 1
+ 0x5421FFEF, // 000F LDINT R8 -16
+ 0x4020113D, // 0010 CONNECT R8 R8 K61
+ 0x94200608, // 0011 GETIDX R8 R3 R8
+ 0x60240015, // 0012 GETGBL R9 G21
+ 0x7C240000, // 0013 CALL R9 0
+ 0x8C241309, // 0014 GETMET R9 R9 K9
+ 0x882C0118, // 0015 GETMBR R11 R0 K24
+ 0x5431FFFD, // 0016 LDINT R12 -2
+ 0x7C240600, // 0017 CALL R9 3
+ 0x542A0004, // 0018 LDINT R10 5
+ 0x542E000E, // 0019 LDINT R11 15
+ 0x4028140B, // 001A CONNECT R10 R10 R11
+ 0x9428100A, // 001B GETIDX R10 R8 R10
+ 0x0024120A, // 001C ADD R9 R9 R10
+ 0x542A0003, // 001D LDINT R10 4
+ 0x882C0104, // 001E GETMBR R11 R0 K4
+ 0x042C170B, // 001F SUB R11 R11 K11
+ 0x4028140B, // 0020 CONNECT R10 R10 R11
+ 0x882C0103, // 0021 GETMBR R11 R0 K3
+ 0x9428160A, // 0022 GETIDX R10 R11 R10
+ 0x8C30033E, // 0023 GETMET R12 R1 K62
+ 0x5C380E00, // 0024 MOVE R14 R7
+ 0x7C300400, // 0025 CALL R12 2
+ 0x8C30193F, // 0026 GETMET R12 R12 K63
+ 0x5C381400, // 0027 MOVE R14 R10
+ 0x5C3C1200, // 0028 MOVE R15 R9
+ 0x58400019, // 0029 LDCONST R16 K25
+ 0x7C300800, // 002A CALL R12 4
+ 0x5C2C1800, // 002B MOVE R11 R12
+ 0x40322517, // 002C CONNECT R12 K18 K23
+ 0x88340103, // 002D GETMBR R13 R0 K3
+ 0x94301A0C, // 002E GETIDX R12 R13 R12
+ 0x0030180B, // 002F ADD R12 R12 R11
+ 0x88340104, // 0030 GETMBR R13 R0 K4
+ 0x40341B3D, // 0031 CONNECT R13 R13 K61
+ 0x9434140D, // 0032 GETIDX R13 R10 R13
+ 0x0030180D, // 0033 ADD R12 R12 R13
+ 0x9002060C, // 0034 SETMBR R0 K3 R12
+ 0x881C0106, // 0035 GETMBR R7 R0 K6
+ 0x881C0F07, // 0036 GETMBR R7 R7 K7
+ 0x8C200F08, // 0037 GETMET R8 R7 K8
+ 0x7C200200, // 0038 CALL R8 1
+ 0x8C200F09, // 0039 GETMET R8 R7 K9
+ 0x8828010A, // 003A GETMBR R10 R0 K10
+ 0x582C000B, // 003B LDCONST R11 K11
+ 0x7C200600, // 003C CALL R8 3
+ 0x8C200F09, // 003D GETMET R8 R7 K9
+ 0x8828010C, // 003E GETMBR R10 R0 K12
+ 0x542E0003, // 003F LDINT R11 4
+ 0x7C200600, // 0040 CALL R8 3
+ 0x8820011E, // 0041 GETMBR R8 R0 K30
+ 0x78220002, // 0042 JMPF R8 #0046
+ 0x8820011E, // 0043 GETMBR R8 R0 K30
+ 0x40200E08, // 0044 CONNECT R8 R7 R8
+ 0x70020006, // 0045 JMP #004D
+ 0x88200540, // 0046 GETMBR R8 R2 K64
+ 0x78220001, // 0047 JMPF R8 #004A
+ 0x88200540, // 0048 GETMBR R8 R2 K64
+ 0x40200E08, // 0049 CONNECT R8 R7 R8
+ 0x8C200F0F, // 004A GETMET R8 R7 K15
+ 0x542A000C, // 004B LDINT R10 13
+ 0x7C200400, // 004C CALL R8 2
+ 0x88200310, // 004D GETMBR R8 R1 K16
+ 0x8C201141, // 004E GETMET R8 R8 K65
+ 0x5C280C00, // 004F MOVE R10 R6
+ 0x5C2C0E00, // 0050 MOVE R11 R7
+ 0x58300012, // 0051 LDCONST R12 K18
+ 0x6034000C, // 0052 GETGBL R13 G12
+ 0x5C380E00, // 0053 MOVE R14 R7
+ 0x7C340200, // 0054 CALL R13 1
+ 0x5C380600, // 0055 MOVE R14 R3
+ 0x583C0012, // 0056 LDCONST R15 K18
+ 0x5C400800, // 0057 MOVE R16 R4
+ 0x5C440600, // 0058 MOVE R17 R3
+ 0x5C480800, // 0059 MOVE R18 R4
+ 0x604C000C, // 005A GETGBL R19 G12
+ 0x5C500600, // 005B MOVE R20 R3
+ 0x7C4C0200, // 005C CALL R19 1
+ 0x044C2604, // 005D SUB R19 R19 R4
+ 0x044C2605, // 005E SUB R19 R19 R5
+ 0x5C500600, // 005F MOVE R20 R3
+ 0x6054000C, // 0060 GETGBL R21 G12
+ 0x5C580600, // 0061 MOVE R22 R3
+ 0x7C540200, // 0062 CALL R21 1
+ 0x04542A05, // 0063 SUB R21 R21 R5
+ 0x5C580A00, // 0064 MOVE R22 R5
+ 0x7C201C00, // 0065 CALL R8 14
+ 0x78220006, // 0066 JMPF R8 #006E
+ 0x8C24070F, // 0067 GETMET R9 R3 K15
+ 0x602C000C, // 0068 GETGBL R11 G12
+ 0x5C300600, // 0069 MOVE R12 R3
+ 0x7C2C0200, // 006A CALL R11 1
+ 0x042C1605, // 006B SUB R11 R11 R5
+ 0x7C240400, // 006C CALL R9 2
+ 0x70020003, // 006D JMP #0072
+ 0xB8267000, // 006E GETNGBL R9 K56
+ 0x58280042, // 006F LDCONST R10 K66
+ 0x582C0017, // 0070 LDCONST R11 K23
+ 0x7C240400, // 0071 CALL R9 2
+ 0x80041000, // 0072 RET 1 R8
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: build_standalone_ack
+********************************************************************/
+be_local_closure(class_Matter_Frame_build_standalone_ack, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Frame, /* shared constants */
+ be_str_weak(build_standalone_ack),
+ &be_const_str_solidified,
+ ( &(const binstruction[45]) { /* code */
+ 0x60080006, // 0000 GETGBL R2 G6
+ 0x5C0C0000, // 0001 MOVE R3 R0
+ 0x7C080200, // 0002 CALL R2 1
+ 0x880C0106, // 0003 GETMBR R3 R0 K6
+ 0x7C080200, // 0004 CALL R2 1
+ 0x880C0113, // 0005 GETMBR R3 R0 K19
+ 0x900A2603, // 0006 SETMBR R2 K19 R3
+ 0x880C0114, // 0007 GETMBR R3 R0 K20
+ 0x900A2803, // 0008 SETMBR R2 K20 R3
+ 0x880C0115, // 0009 GETMBR R3 R0 K21
+ 0x780E0003, // 000A JMPF R3 #000F
+ 0x900A2D0B, // 000B SETMBR R2 K22 K11
+ 0x880C011E, // 000C GETMBR R3 R0 K30
+ 0x900A3E03, // 000D SETMBR R2 K31 R3
+ 0x70020000, // 000E JMP #0010
+ 0x900A2D12, // 000F SETMBR R2 K22 K18
+ 0x880C0100, // 0010 GETMBR R3 R0 K0
+ 0x900A0003, // 0011 SETMBR R2 K0 R3
+ 0x880C0100, // 0012 GETMBR R3 R0 K0
+ 0x8C0C0733, // 0013 GETMET R3 R3 K51
+ 0x7C0C0200, // 0014 CALL R3 1
+ 0x900A1803, // 0015 SETMBR R2 K12 R3
+ 0x880C0100, // 0016 GETMBR R3 R0 K0
+ 0x880C0732, // 0017 GETMBR R3 R3 K50
+ 0x900A3003, // 0018 SETMBR R2 K24 R3
+ 0x880C0125, // 0019 GETMBR R3 R0 K37
+ 0x780E0001, // 001A JMPF R3 #001D
+ 0x580C0012, // 001B LDCONST R3 K18
+ 0x70020000, // 001C JMP #001E
+ 0x580C000B, // 001D LDCONST R3 K11
+ 0x900A4A03, // 001E SETMBR R2 K37 R3
+ 0x540E000F, // 001F LDINT R3 16
+ 0x900A4C03, // 0020 SETMBR R2 K38 R3
+ 0x880C0127, // 0021 GETMBR R3 R0 K39
+ 0x900A4E03, // 0022 SETMBR R2 K39 R3
+ 0x900A5112, // 0023 SETMBR R2 K40 K18
+ 0x900A490B, // 0024 SETMBR R2 K36 K11
+ 0x880C010C, // 0025 GETMBR R3 R0 K12
+ 0x900A5203, // 0026 SETMBR R2 K41 R3
+ 0x78060001, // 0027 JMPF R1 #002A
+ 0x580C000B, // 0028 LDCONST R3 K11
+ 0x70020000, // 0029 JMP #002B
+ 0x580C0012, // 002A LDCONST R3 K18
+ 0x900A4603, // 002B SETMBR R2 K35 R3
+ 0x80040400, // 002C RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: initiate_response
+********************************************************************/
+be_local_closure(class_Matter_Frame_initiate_response, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 5, /* argc */
+ 12, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Frame, /* shared constants */
+ be_str_weak(initiate_response),
+ &be_const_str_solidified,
+ ( &(const binstruction[46]) { /* code */
+ 0x58140043, // 0000 LDCONST R5 K67
+ 0x4C180000, // 0001 LDNIL R6
+ 0x1C180806, // 0002 EQ R6 R4 R6
+ 0x781A0004, // 0003 JMPF R6 #0009
+ 0xB81A5C00, // 0004 GETNGBL R6 K46
+ 0x8C180D2F, // 0005 GETMET R6 R6 K47
+ 0x5C200000, // 0006 MOVE R8 R0
+ 0x7C180400, // 0007 CALL R6 2
+ 0x5C100C00, // 0008 MOVE R4 R6
+ 0x88180344, // 0009 GETMBR R6 R1 K68
+ 0x90122606, // 000A SETMBR R4 K19 R6
+ 0x88180345, // 000B GETMBR R6 R1 K69
+ 0x90122806, // 000C SETMBR R4 K20 R6
+ 0x90122D12, // 000D SETMBR R4 K22 K18
+ 0x90120001, // 000E SETMBR R4 K0 R1
+ 0x78060008, // 000F JMPF R1 #0019
+ 0x88180332, // 0010 GETMBR R6 R1 K50
+ 0x20180D12, // 0011 NE R6 R6 K18
+ 0x781A0005, // 0012 JMPF R6 #0019
+ 0x8C180333, // 0013 GETMET R6 R1 K51
+ 0x7C180200, // 0014 CALL R6 1
+ 0x90121806, // 0015 SETMBR R4 K12 R6
+ 0x88180332, // 0016 GETMBR R6 R1 K50
+ 0x90123006, // 0017 SETMBR R4 K24 R6
+ 0x70020004, // 0018 JMP #001E
+ 0x88180334, // 0019 GETMBR R6 R1 K52
+ 0x8C180D35, // 001A GETMET R6 R6 K53
+ 0x7C180200, // 001B CALL R6 1
+ 0x90121806, // 001C SETMBR R4 K12 R6
+ 0x90123112, // 001D SETMBR R4 K24 K18
+ 0x90124B0B, // 001E SETMBR R4 K37 K11
+ 0x90124C02, // 001F SETMBR R4 K38 R2
+ 0x88180346, // 0020 GETMBR R6 R1 K70
+ 0x00180D0B, // 0021 ADD R6 R6 K11
+ 0x90068C06, // 0022 SETMBR R1 K70 R6
+ 0x88180346, // 0023 GETMBR R6 R1 K70
+ 0x541EFFFF, // 0024 LDINT R7 65536
+ 0x30180C07, // 0025 OR R6 R6 R7
+ 0x90124E06, // 0026 SETMBR R4 K39 R6
+ 0x9012510B, // 0027 SETMBR R4 K40 K11
+ 0x780E0001, // 0028 JMPF R3 #002B
+ 0x5818000B, // 0029 LDCONST R6 K11
+ 0x70020000, // 002A JMP #002C
+ 0x58180012, // 002B LDCONST R6 K18
+ 0x90124606, // 002C SETMBR R4 K35 R6
+ 0x80040800, // 002D RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: decode_payload
+********************************************************************/
+be_local_closure(class_Matter_Frame_decode_payload, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Frame, /* shared constants */
+ be_str_weak(decode_payload),
+ &be_const_str_solidified,
+ ( &(const binstruction[93]) { /* code */
+ 0x88040104, // 0000 GETMBR R1 R0 K4
+ 0x88080103, // 0001 GETMBR R2 R0 K3
+ 0x8C0C052B, // 0002 GETMET R3 R2 K43
+ 0x5C140200, // 0003 MOVE R5 R1
+ 0x5818000B, // 0004 LDCONST R6 K11
+ 0x7C0C0600, // 0005 CALL R3 3
+ 0x90024203, // 0006 SETMBR R0 K33 R3
+ 0x8C0C052C, // 0007 GETMET R3 R2 K44
+ 0x54160007, // 0008 LDINT R5 8
+ 0x08140205, // 0009 MUL R5 R1 R5
+ 0x541A0003, // 000A LDINT R6 4
+ 0x00140A06, // 000B ADD R5 R5 R6
+ 0x5818000B, // 000C LDCONST R6 K11
+ 0x7C0C0600, // 000D CALL R3 3
+ 0x90024403, // 000E SETMBR R0 K34 R3
+ 0x8C0C052C, // 000F GETMET R3 R2 K44
+ 0x54160007, // 0010 LDINT R5 8
+ 0x08140205, // 0011 MUL R5 R1 R5
+ 0x00140B17, // 0012 ADD R5 R5 K23
+ 0x5818000B, // 0013 LDCONST R6 K11
+ 0x7C0C0600, // 0014 CALL R3 3
+ 0x90028E03, // 0015 SETMBR R0 K71 R3
+ 0x8C0C052C, // 0016 GETMET R3 R2 K44
+ 0x54160007, // 0017 LDINT R5 8
+ 0x08140205, // 0018 MUL R5 R1 R5
+ 0x00140B19, // 0019 ADD R5 R5 K25
+ 0x5818000B, // 001A LDCONST R6 K11
+ 0x7C0C0600, // 001B CALL R3 3
+ 0x90024603, // 001C SETMBR R0 K35 R3
+ 0x8C0C052C, // 001D GETMET R3 R2 K44
+ 0x54160007, // 001E LDINT R5 8
+ 0x08140205, // 001F MUL R5 R1 R5
+ 0x00140B0B, // 0020 ADD R5 R5 K11
+ 0x5818000B, // 0021 LDCONST R6 K11
+ 0x7C0C0600, // 0022 CALL R3 3
+ 0x90024803, // 0023 SETMBR R0 K36 R3
+ 0x8C0C052C, // 0024 GETMET R3 R2 K44
+ 0x54160007, // 0025 LDINT R5 8
+ 0x08140205, // 0026 MUL R5 R1 R5
+ 0x5818000B, // 0027 LDCONST R6 K11
+ 0x7C0C0600, // 0028 CALL R3 3
+ 0x90024A03, // 0029 SETMBR R0 K37 R3
+ 0x8C0C052B, // 002A GETMET R3 R2 K43
+ 0x0014030B, // 002B ADD R5 R1 K11
+ 0x5818000B, // 002C LDCONST R6 K11
+ 0x7C0C0600, // 002D CALL R3 3
+ 0x90024C03, // 002E SETMBR R0 K38 R3
+ 0x8C0C052B, // 002F GETMET R3 R2 K43
+ 0x00140319, // 0030 ADD R5 R1 K25
+ 0x58180019, // 0031 LDCONST R6 K25
+ 0x7C0C0600, // 0032 CALL R3 3
+ 0x90024E03, // 0033 SETMBR R0 K39 R3
+ 0x880C0125, // 0034 GETMBR R3 R0 K37
+ 0x740E0003, // 0035 JMPT R3 #003A
+ 0x880C0127, // 0036 GETMBR R3 R0 K39
+ 0x5412FFFF, // 0037 LDINT R4 65536
+ 0x300C0604, // 0038 OR R3 R3 R4
+ 0x90024E03, // 0039 SETMBR R0 K39 R3
+ 0x8C0C052B, // 003A GETMET R3 R2 K43
+ 0x54160003, // 003B LDINT R5 4
+ 0x00140205, // 003C ADD R5 R1 R5
+ 0x58180019, // 003D LDCONST R6 K25
+ 0x7C0C0600, // 003E CALL R3 3
+ 0x90025003, // 003F SETMBR R0 K40 R3
+ 0x540E0005, // 0040 LDINT R3 6
+ 0x00040203, // 0041 ADD R1 R1 R3
+ 0x880C0122, // 0042 GETMBR R3 R0 K34
+ 0x780E0005, // 0043 JMPF R3 #004A
+ 0x8C0C052B, // 0044 GETMET R3 R2 K43
+ 0x5C140200, // 0045 MOVE R5 R1
+ 0x58180019, // 0046 LDCONST R6 K25
+ 0x7C0C0600, // 0047 CALL R3 3
+ 0x90029003, // 0048 SETMBR R0 K72 R3
+ 0x00040319, // 0049 ADD R1 R1 K25
+ 0x880C0124, // 004A GETMBR R3 R0 K36
+ 0x780E0006, // 004B JMPF R3 #0053
+ 0x8C0C052B, // 004C GETMET R3 R2 K43
+ 0x5C140200, // 004D MOVE R5 R1
+ 0x541A0003, // 004E LDINT R6 4
+ 0x7C0C0600, // 004F CALL R3 3
+ 0x90025203, // 0050 SETMBR R0 K41 R3
+ 0x540E0003, // 0051 LDINT R3 4
+ 0x00040203, // 0052 ADD R1 R1 R3
+ 0x880C0147, // 0053 GETMBR R3 R0 K71
+ 0x780E0005, // 0054 JMPF R3 #005B
+ 0x8C0C052B, // 0055 GETMET R3 R2 K43
+ 0x5C140200, // 0056 MOVE R5 R1
+ 0x58180019, // 0057 LDCONST R6 K25
+ 0x7C0C0600, // 0058 CALL R3 3
+ 0x00100719, // 0059 ADD R4 R3 K25
+ 0x00040204, // 005A ADD R1 R1 R4
+ 0x90025401, // 005B SETMBR R0 K42 R1
+ 0x80040000, // 005C RET 1 R0
})
)
);
@@ -1208,50 +1100,51 @@ be_local_closure(class_Matter_Frame_decrypt, /* name */
be_local_class(Matter_Frame,
32,
NULL,
- be_nested_map(42,
+ be_nested_map(43,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(x_flag_i, -1), be_const_var(22) },
- { be_const_key_weak(dest_node_id_8, 7), be_const_var(16) },
- { be_const_key_weak(x_flags, -1), be_const_var(17) },
- { be_const_key_weak(x_flag_a, -1), be_const_var(21) },
- { be_const_key_weak(exchange_id, -1), be_const_var(24) },
- { be_const_key_weak(opcode, -1), be_const_var(23) },
- { be_const_key_weak(encode_frame, -1), be_const_closure(class_Matter_Frame_encode_frame_closure) },
- { be_const_key_weak(app_payload_idx, -1), be_const_var(29) },
- { be_const_key_weak(payload_idx, -1), be_const_var(3) },
- { be_const_key_weak(ack_message_counter, 24), be_const_var(27) },
- { be_const_key_weak(build_standalone_ack, -1), be_const_closure(class_Matter_Frame_build_standalone_ack_closure) },
- { be_const_key_weak(x_flag_v, 6), be_const_var(18) },
- { be_const_key_weak(sec_c, -1), be_const_var(10) },
- { be_const_key_weak(vendor_id, 32), be_const_var(26) },
- { be_const_key_weak(local_session_id, -1), be_const_var(7) },
- { be_const_key_weak(flag_s, -1), be_const_var(5) },
- { be_const_key_weak(debug, -1), be_const_closure(class_Matter_Frame_debug_closure) },
- { be_const_key_weak(message_handler, 10), be_const_var(0) },
- { be_const_key_weak(encrypt, 34), be_const_closure(class_Matter_Frame_encrypt_closure) },
- { be_const_key_weak(session, -1), be_const_var(1) },
- { be_const_key_weak(sec_flags, -1), be_const_var(8) },
- { be_const_key_weak(build_response, -1), be_const_closure(class_Matter_Frame_build_response_closure) },
- { be_const_key_weak(initiate_response, -1), be_const_static_closure(class_Matter_Frame_initiate_response_closure) },
- { be_const_key_weak(remote_port, -1), be_const_var(31) },
- { be_const_key_weak(sec_sesstype, -1), be_const_var(12) },
- { be_const_key_weak(decode_header, 23), be_const_closure(class_Matter_Frame_decode_header_closure) },
- { be_const_key_weak(flags, -1), be_const_var(4) },
- { be_const_key_weak(protocol_id, 13), be_const_var(25) },
+ { be_const_key_weak(decode_payload, 35), be_const_closure(class_Matter_Frame_decode_payload_closure) },
{ be_const_key_weak(raw, -1), be_const_var(2) },
- { be_const_key_weak(source_node_id, 28), be_const_var(14) },
+ { be_const_key_weak(sec_c, 30), be_const_var(10) },
+ { be_const_key_weak(message_counter, 11), be_const_var(13) },
+ { be_const_key_weak(message_handler, -1), be_const_var(0) },
+ { be_const_key_weak(remote_ip, 4), be_const_var(30) },
+ { be_const_key_weak(x_flag_sx, -1), be_const_var(19) },
+ { be_const_key_weak(get_node_id, -1), be_const_closure(class_Matter_Frame_get_node_id_closure) },
+ { be_const_key_weak(sec_mx, -1), be_const_var(11) },
{ be_const_key_weak(flag_dsiz, -1), be_const_var(6) },
- { be_const_key_weak(x_flag_r, -1), be_const_var(20) },
- { be_const_key_weak(message_counter, -1), be_const_var(13) },
- { be_const_key_weak(init, 14), be_const_closure(class_Matter_Frame_init_closure) },
- { be_const_key_weak(x_flag_sx, 12), be_const_var(19) },
- { be_const_key_weak(dest_node_id_2, -1), be_const_var(15) },
- { be_const_key_weak(decode_payload, -1), be_const_closure(class_Matter_Frame_decode_payload_closure) },
- { be_const_key_weak(sec_p, 8), be_const_var(9) },
- { be_const_key_weak(decrypt, -1), be_const_closure(class_Matter_Frame_decrypt_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(class_Matter_Frame_init_closure) },
+ { be_const_key_weak(x_flag_r, 9), be_const_var(20) },
+ { be_const_key_weak(encode_frame, 36), be_const_closure(class_Matter_Frame_encode_frame_closure) },
+ { be_const_key_weak(exchange_id, -1), be_const_var(24) },
+ { be_const_key_weak(x_flag_v, -1), be_const_var(18) },
{ be_const_key_weak(sec_extensions, -1), be_const_var(28) },
- { be_const_key_weak(sec_mx, 3), be_const_var(11) },
- { be_const_key_weak(remote_ip, 2), be_const_var(30) },
+ { be_const_key_weak(opcode, -1), be_const_var(23) },
+ { be_const_key_weak(local_session_id, -1), be_const_var(7) },
+ { be_const_key_weak(decode_header, -1), be_const_closure(class_Matter_Frame_decode_header_closure) },
+ { be_const_key_weak(debug, 22), be_const_closure(class_Matter_Frame_debug_closure) },
+ { be_const_key_weak(dest_node_id_8, -1), be_const_var(16) },
+ { be_const_key_weak(vendor_id, 32), be_const_var(26) },
+ { be_const_key_weak(initiate_response, -1), be_const_static_closure(class_Matter_Frame_initiate_response_closure) },
+ { be_const_key_weak(build_response, -1), be_const_closure(class_Matter_Frame_build_response_closure) },
+ { be_const_key_weak(payload_idx, -1), be_const_var(3) },
+ { be_const_key_weak(encrypt, 23), be_const_closure(class_Matter_Frame_encrypt_closure) },
+ { be_const_key_weak(dest_node_id_2, 21), be_const_var(15) },
+ { be_const_key_weak(sec_p, -1), be_const_var(9) },
+ { be_const_key_weak(sec_sesstype, 16), be_const_var(12) },
+ { be_const_key_weak(protocol_id, -1), be_const_var(25) },
+ { be_const_key_weak(build_standalone_ack, 38), be_const_closure(class_Matter_Frame_build_standalone_ack_closure) },
+ { be_const_key_weak(remote_port, -1), be_const_var(31) },
+ { be_const_key_weak(decrypt, -1), be_const_closure(class_Matter_Frame_decrypt_closure) },
+ { be_const_key_weak(session, 24), be_const_var(1) },
+ { be_const_key_weak(x_flag_i, -1), be_const_var(22) },
+ { be_const_key_weak(flag_s, -1), be_const_var(5) },
+ { be_const_key_weak(sec_flags, 37), be_const_var(8) },
+ { be_const_key_weak(x_flag_a, -1), be_const_var(21) },
+ { be_const_key_weak(app_payload_idx, -1), be_const_var(29) },
+ { be_const_key_weak(flags, -1), be_const_var(4) },
+ { be_const_key_weak(ack_message_counter, 8), be_const_var(27) },
+ { be_const_key_weak(source_node_id, -1), be_const_var(14) },
+ { be_const_key_weak(x_flags, 0), be_const_var(17) },
})),
be_str_weak(Matter_Frame)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h
index cbec77d91..64ac3b77c 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h
@@ -3,34 +3,106 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_MessageHandler' ktab size: 79, total: 110 (saved 248 bytes)
+static const bvalue be_ktab_class_Matter_MessageHandler[79] = {
+ /* K0 */ be_nested_str_weak(device),
+ /* K1 */ be_nested_str_weak(commissioning),
+ /* K2 */ be_nested_str_weak(matter),
+ /* K3 */ be_nested_str_weak(Commisioning_Context),
+ /* K4 */ be_nested_str_weak(im),
+ /* K5 */ be_nested_str_weak(IM),
+ /* K6 */ be_nested_str_weak(control_message),
+ /* K7 */ be_nested_str_weak(Control_Message),
+ /* K8 */ be_nested_str_weak(_n_bytes),
+ /* K9 */ be_nested_str_weak(x_flag_r),
+ /* K10 */ be_nested_str_weak(build_standalone_ack),
+ /* K11 */ be_nested_str_weak(encode_frame),
+ /* K12 */ be_nested_str_weak(encrypt),
+ /* K13 */ be_nested_str_weak(tasmota),
+ /* K14 */ be_nested_str_weak(loglevel),
+ /* K15 */ be_nested_str_weak(log),
+ /* K16 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X2A_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s),
+ /* K17 */ be_nested_str_weak(session),
+ /* K18 */ be_nested_str_weak(local_session_id),
+ /* K19 */ be_nested_str_weak(ack_message_counter),
+ /* K20 */ be_nested_str_weak(message_counter),
+ /* K21 */ be_nested_str_weak(_X7Breliable_X7D),
+ /* K22 */ be_nested_str_weak(),
+ /* K23 */ be_nested_str_weak(send_response_frame),
+ /* K24 */ be_nested_str_weak(Frame),
+ /* K25 */ be_nested_str_weak(decode_header),
+ /* K26 */ be_nested_str_weak(sec_p),
+ /* K27 */ be_nested_str_weak(sessions),
+ /* K28 */ be_nested_str_weak(find_session_source_id_unsecure),
+ /* K29 */ be_nested_str_weak(source_node_id),
+ /* K30 */ be_nested_str_weak(process_incoming_control_message),
+ /* K31 */ be_const_int(0),
+ /* K32 */ be_nested_str_weak(sec_sesstype),
+ /* K33 */ be_nested_str_weak(_ip),
+ /* K34 */ be_nested_str_weak(_port),
+ /* K35 */ be_nested_str_weak(_message_handler),
+ /* K36 */ be_nested_str_weak(_counter_insecure_rcv),
+ /* K37 */ be_nested_str_weak(validate),
+ /* K38 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20unencrypted_X20message_X20_X3D_X20_X25i_X20ref_X20_X3D_X20_X25i),
+ /* K39 */ be_nested_str_weak(val),
+ /* K40 */ be_nested_str_weak(send_simple_ack),
+ /* K41 */ be_nested_str_weak(decode_payload),
+ /* K42 */ be_nested_str_weak(received_ack),
+ /* K43 */ be_nested_str_weak(opcode),
+ /* K44 */ be_nested_str_weak(get_opcode_name),
+ /* K45 */ be_nested_str_weak(0x_X2502X),
+ /* K46 */ be_const_int(3),
+ /* K47 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20_X28_X256i_X29_X20_X25s_X20from_X20_X5B_X25s_X5D_X3A_X25i),
+ /* K48 */ be_nested_str_weak(MTR_X3A_X20_X3Ercv_X20Ack_X20_X20_X20_X28_X256i_X29_X20rid_X3D_X25i_X20exch_X3D_X25i_X20ack_X3D_X25s_X20_X25sfrom_X20_X5B_X25s_X5D_X3A_X25i),
+ /* K49 */ be_nested_str_weak(_X7Breliable_X7D_X20),
+ /* K50 */ be_nested_str_weak(exchange_id),
+ /* K51 */ be_nested_str_weak(process_incoming),
+ /* K52 */ be_nested_str_weak(MTR_X3A_X20decode_X20header_X3A_X20local_session_id_X3D_X25i_X20message_counter_X3D_X25i),
+ /* K53 */ be_nested_str_weak(get_session_by_local_session_id),
+ /* K54 */ be_nested_str_weak(MTR_X3A_X20unknown_X20local_session_id_X3D),
+ /* K55 */ be_nested_str_weak(counter_rcv_validate),
+ /* K56 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20encrypted_X20message_X20_X3D_X20),
+ /* K57 */ be_nested_str_weak(_X20counter_X3D),
+ /* K58 */ be_nested_str_weak(counter_rcv),
+ /* K59 */ be_nested_str_weak(send_encrypted_ack),
+ /* K60 */ be_nested_str_weak(decrypt),
+ /* K61 */ be_nested_str_weak(MTR_X3A_X20_X3E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Decrypted_X20message_X3A_X20protocol_id_X3A),
+ /* K62 */ be_nested_str_weak(protocol_id),
+ /* K63 */ be_nested_str_weak(_X20opcode_X3D),
+ /* K64 */ be_nested_str_weak(_X20exchange_id_X3D),
+ /* K65 */ be_nested_str_weak(process_incoming_ack),
+ /* K66 */ be_nested_str_weak(send_enqueued),
+ /* K67 */ be_const_int(1),
+ /* K68 */ be_nested_str_weak(MTR_X3A_X20ignoring_X20unhandled_X20protocol_id_X3A),
+ /* K69 */ be_nested_str_weak(MTR_X3A_X20MessageHandler_X3A_X3Amsg_received_X20exception_X3A_X20),
+ /* K70 */ be_nested_str_weak(_X3B),
+ /* K71 */ be_const_int(2),
+ /* K72 */ be_nested_str_weak(_debug_present),
+ /* K73 */ be_nested_str_weak(debug),
+ /* K74 */ be_nested_str_weak(traceback),
+ /* K75 */ be_nested_str_weak(msg_send),
+ /* K76 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s),
+ /* K77 */ be_nested_str_weak(every_50ms),
+ /* K78 */ be_nested_str_weak(every_second),
+};
+
extern const bclass be_class_Matter_MessageHandler;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_MessageHandler;
be_local_closure(class_Matter_MessageHandler_init, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_MessageHandler,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(device),
- /* K1 */ be_nested_str_weak(commissioning),
- /* K2 */ be_nested_str_weak(matter),
- /* K3 */ be_nested_str_weak(Commisioning_Context),
- /* K4 */ be_nested_str_weak(im),
- /* K5 */ be_nested_str_weak(IM),
- /* K6 */ be_nested_str_weak(control_message),
- /* K7 */ be_nested_str_weak(Control_Message),
- /* K8 */ be_nested_str_weak(_n_bytes),
- }),
+ &be_ktab_class_Matter_MessageHandler, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[21]) { /* code */
@@ -64,70 +136,52 @@ be_local_closure(class_Matter_MessageHandler_init, /* name */
/********************************************************************
** Solidified function: send_encrypted_ack
********************************************************************/
-extern const bclass be_class_Matter_MessageHandler;
be_local_closure(class_Matter_MessageHandler_send_encrypted_ack, /* name */
be_nested_proto(
- 12, /* nstack */
+ 11, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_MessageHandler,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[15]) { /* constants */
- /* K0 */ be_nested_str_weak(x_flag_r),
- /* K1 */ be_nested_str_weak(build_standalone_ack),
- /* K2 */ be_nested_str_weak(encode_frame),
- /* K3 */ be_nested_str_weak(encrypt),
- /* K4 */ be_nested_str_weak(tasmota),
- /* K5 */ be_nested_str_weak(loglevel),
- /* K6 */ be_nested_str_weak(log),
- /* K7 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X2A_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s),
- /* K8 */ be_nested_str_weak(session),
- /* K9 */ be_nested_str_weak(local_session_id),
- /* K10 */ be_nested_str_weak(ack_message_counter),
- /* K11 */ be_nested_str_weak(message_counter),
- /* K12 */ be_nested_str_weak(_X7Breliable_X7D),
- /* K13 */ be_nested_str_weak(),
- /* K14 */ be_nested_str_weak(send_response_frame),
- }),
+ &be_ktab_class_Matter_MessageHandler, /* shared constants */
be_str_weak(send_encrypted_ack),
&be_const_str_solidified,
- ( &(const binstruction[33]) { /* code */
- 0x880C0300, // 0000 GETMBR R3 R1 K0
- 0x780E001D, // 0001 JMPF R3 #0020
- 0x8C0C0301, // 0002 GETMET R3 R1 K1
+ ( &(const binstruction[32]) { /* code */
+ 0x880C0309, // 0000 GETMBR R3 R1 K9
+ 0x780E001C, // 0001 JMPF R3 #001F
+ 0x8C0C030A, // 0002 GETMET R3 R1 K10
0x5C140400, // 0003 MOVE R5 R2
0x7C0C0400, // 0004 CALL R3 2
- 0x8C100702, // 0005 GETMET R4 R3 K2
+ 0x8C10070B, // 0005 GETMET R4 R3 K11
0x7C100200, // 0006 CALL R4 1
- 0x8C100703, // 0007 GETMET R4 R3 K3
+ 0x8C10070C, // 0007 GETMET R4 R3 K12
0x7C100200, // 0008 CALL R4 1
- 0xB8120800, // 0009 GETNGBL R4 K4
- 0x8C100905, // 000A GETMET R4 R4 K5
+ 0xB8121A00, // 0009 GETNGBL R4 K13
+ 0x8C10090E, // 000A GETMET R4 R4 K14
0x541A0003, // 000B LDINT R6 4
0x7C100400, // 000C CALL R4 2
- 0x7812000E, // 000D JMPF R4 #001D
- 0xB8120800, // 000E GETNGBL R4 K4
- 0x8C100906, // 000F GETMET R4 R4 K6
- 0x60180018, // 0010 GETGBL R6 G24
- 0x581C0007, // 0011 LDCONST R7 K7
- 0x88200708, // 0012 GETMBR R8 R3 K8
- 0x88201109, // 0013 GETMBR R8 R8 K9
- 0x8824070A, // 0014 GETMBR R9 R3 K10
- 0x8828070B, // 0015 GETMBR R10 R3 K11
- 0x780A0001, // 0016 JMPF R2 #0019
- 0x582C000C, // 0017 LDCONST R11 K12
- 0x70020000, // 0018 JMP #001A
- 0x582C000D, // 0019 LDCONST R11 K13
- 0x7C180A00, // 001A CALL R6 5
- 0x541E0003, // 001B LDINT R7 4
- 0x7C100600, // 001C CALL R4 3
- 0x8C10010E, // 001D GETMET R4 R0 K14
- 0x5C180600, // 001E MOVE R6 R3
- 0x7C100400, // 001F CALL R4 2
- 0x80000000, // 0020 RET 0
+ 0x7812000D, // 000D JMPF R4 #001C
+ 0xB8121E00, // 000E GETNGBL R4 K15
+ 0x60140018, // 000F GETGBL R5 G24
+ 0x58180010, // 0010 LDCONST R6 K16
+ 0x881C0711, // 0011 GETMBR R7 R3 K17
+ 0x881C0F12, // 0012 GETMBR R7 R7 K18
+ 0x88200713, // 0013 GETMBR R8 R3 K19
+ 0x88240714, // 0014 GETMBR R9 R3 K20
+ 0x780A0001, // 0015 JMPF R2 #0018
+ 0x58280015, // 0016 LDCONST R10 K21
+ 0x70020000, // 0017 JMP #0019
+ 0x58280016, // 0018 LDCONST R10 K22
+ 0x7C140A00, // 0019 CALL R5 5
+ 0x541A0003, // 001A LDINT R6 4
+ 0x7C100400, // 001B CALL R4 2
+ 0x8C100117, // 001C GETMET R4 R0 K23
+ 0x5C180600, // 001D MOVE R6 R3
+ 0x7C100400, // 001E CALL R4 2
+ 0x80000000, // 001F RET 0
})
)
);
@@ -137,457 +191,354 @@ be_local_closure(class_Matter_MessageHandler_send_encrypted_ack, /* name */
/********************************************************************
** Solidified function: msg_received
********************************************************************/
-extern const bclass be_class_Matter_MessageHandler;
be_local_closure(class_Matter_MessageHandler_msg_received, /* name */
be_nested_proto(
- 19, /* nstack */
+ 18, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_MessageHandler,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[70]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(profiler),
- /* K2 */ be_nested_str_weak(log),
- /* K3 */ be_nested_str_weak(msg_received),
- /* K4 */ be_nested_str_weak(Frame),
- /* K5 */ be_nested_str_weak(decode_header),
- /* K6 */ be_nested_str_weak(sec_p),
- /* K7 */ be_nested_str_weak(device),
- /* K8 */ be_nested_str_weak(sessions),
- /* K9 */ be_nested_str_weak(find_session_source_id_unsecure),
- /* K10 */ be_nested_str_weak(source_node_id),
- /* K11 */ be_nested_str_weak(control_message),
- /* K12 */ be_nested_str_weak(process_incoming_control_message),
- /* K13 */ be_nested_str_weak(local_session_id),
- /* K14 */ be_const_int(0),
- /* K15 */ be_nested_str_weak(sec_sesstype),
- /* K16 */ be_nested_str_weak(_ip),
- /* K17 */ be_nested_str_weak(_port),
- /* K18 */ be_nested_str_weak(_message_handler),
- /* K19 */ be_nested_str_weak(session),
- /* K20 */ be_nested_str_weak(_counter_insecure_rcv),
- /* K21 */ be_nested_str_weak(validate),
- /* K22 */ be_nested_str_weak(message_counter),
- /* K23 */ be_nested_str_weak(tasmota),
- /* K24 */ be_nested_str_weak(loglevel),
- /* K25 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20unencrypted_X20message_X20_X3D_X20_X25i_X20ref_X20_X3D_X20_X25i),
- /* K26 */ be_nested_str_weak(val),
- /* K27 */ be_nested_str_weak(send_simple_ack),
- /* K28 */ be_nested_str_weak(decode_payload),
- /* K29 */ be_nested_str_weak(received_ack),
- /* K30 */ be_nested_str_weak(opcode),
- /* K31 */ be_nested_str_weak(get_opcode_name),
- /* K32 */ be_nested_str_weak(0x_X2502X),
- /* K33 */ be_const_int(3),
- /* K34 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_X20_X20_X28_X256i_X29_X20_X25s_X20rid_X3D_X25i_X20exch_X3D_X25i_X20from_X20_X5B_X25s_X5D_X3A_X25i),
- /* K35 */ be_nested_str_weak(exchange_id),
- /* K36 */ be_nested_str_weak(MTR_X3A_X20_X3Ercv_X20Ack_X20_X20_X20_X28_X256i_X29_X20rid_X3D_X25i_X20exch_X3D_X25i_X20ack_X3D_X25s_X20_X25sfrom_X20_X5B_X25s_X5D_X3A_X25i),
- /* K37 */ be_nested_str_weak(x_flag_r),
- /* K38 */ be_nested_str_weak(_X7Breliable_X7D_X20),
- /* K39 */ be_nested_str_weak(),
- /* K40 */ be_nested_str_weak(ack_message_counter),
- /* K41 */ be_nested_str_weak(commissioning),
- /* K42 */ be_nested_str_weak(process_incoming),
- /* K43 */ be_nested_str_weak(MTR_X3A_X20decode_X20header_X3A_X20local_session_id_X3D_X25i_X20message_counter_X3D_X25i),
- /* K44 */ be_nested_str_weak(get_session_by_local_session_id),
- /* K45 */ be_nested_str_weak(MTR_X3A_X20unknown_X20local_session_id_X3D),
- /* K46 */ be_nested_str_weak(counter_rcv_validate),
- /* K47 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Duplicate_X20encrypted_X20message_X20_X3D_X20),
- /* K48 */ be_nested_str_weak(_X20counter_X3D),
- /* K49 */ be_nested_str_weak(counter_rcv),
- /* K50 */ be_nested_str_weak(send_encrypted_ack),
- /* K51 */ be_nested_str_weak(decrypt),
- /* K52 */ be_nested_str_weak(msg_received_header_frame_decrypted),
- /* K53 */ be_nested_str_weak(MTR_X3A_X20_X3E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Decrypted_X20message_X3A_X20protocol_id_X3A),
- /* K54 */ be_nested_str_weak(protocol_id),
- /* K55 */ be_nested_str_weak(_X20opcode_X3D),
- /* K56 */ be_nested_str_weak(_X20exchange_id_X3D),
- /* K57 */ be_nested_str_weak(im),
- /* K58 */ be_nested_str_weak(process_incoming_ack),
- /* K59 */ be_nested_str_weak(send_enqueued),
- /* K60 */ be_const_int(1),
- /* K61 */ be_nested_str_weak(process_IM_start),
- /* K62 */ be_nested_str_weak(process_IM_end),
- /* K63 */ be_nested_str_weak(MTR_X3A_X20ignoring_X20unhandled_X20protocol_id_X3A),
- /* K64 */ be_nested_str_weak(MTR_X3A_X20MessageHandler_X3A_X3Amsg_received_X20exception_X3A_X20),
- /* K65 */ be_nested_str_weak(_X3B),
- /* K66 */ be_const_int(2),
- /* K67 */ be_nested_str_weak(_debug_present),
- /* K68 */ be_nested_str_weak(debug),
- /* K69 */ be_nested_str_weak(traceback),
- }),
+ &be_ktab_class_Matter_MessageHandler, /* shared constants */
be_str_weak(msg_received),
&be_const_str_solidified,
- ( &(const binstruction[365]) { /* code */
+ ( &(const binstruction[334]) { /* code */
0x50100000, // 0000 LDBOOL R4 0 0
- 0xB8160000, // 0001 GETNGBL R5 K0
- 0x88140B01, // 0002 GETMBR R5 R5 K1
- 0x8C140B02, // 0003 GETMET R5 R5 K2
- 0x581C0003, // 0004 LDCONST R7 K3
- 0x7C140400, // 0005 CALL R5 2
- 0xA802014B, // 0006 EXBLK 0 #0153
- 0xB8160000, // 0007 GETNGBL R5 K0
- 0x8C140B04, // 0008 GETMET R5 R5 K4
- 0x5C1C0000, // 0009 MOVE R7 R0
- 0x5C200200, // 000A MOVE R8 R1
- 0x5C240400, // 000B MOVE R9 R2
- 0x5C280600, // 000C MOVE R10 R3
- 0x7C140A00, // 000D CALL R5 5
- 0x8C180B05, // 000E GETMET R6 R5 K5
- 0x7C180200, // 000F CALL R6 1
- 0x5C1C0C00, // 0010 MOVE R7 R6
- 0x741E0002, // 0011 JMPT R7 #0015
- 0x501C0000, // 0012 LDBOOL R7 0 0
- 0xA8040001, // 0013 EXBLK 1 1
- 0x80040E00, // 0014 RET 1 R7
- 0x881C0B06, // 0015 GETMBR R7 R5 K6
- 0x781E000C, // 0016 JMPF R7 #0024
- 0x881C0107, // 0017 GETMBR R7 R0 K7
- 0x881C0F08, // 0018 GETMBR R7 R7 K8
- 0x8C1C0F09, // 0019 GETMET R7 R7 K9
- 0x88240B0A, // 001A GETMBR R9 R5 K10
- 0x542A0059, // 001B LDINT R10 90
- 0x7C1C0600, // 001C CALL R7 3
- 0x8820010B, // 001D GETMBR R8 R0 K11
- 0x8C20110C, // 001E GETMET R8 R8 K12
- 0x5C280A00, // 001F MOVE R10 R5
- 0x7C200400, // 0020 CALL R8 2
- 0xA8040001, // 0021 EXBLK 1 1
- 0x80041000, // 0022 RET 1 R8
- 0x7002012A, // 0023 JMP #014F
- 0x881C0B0D, // 0024 GETMBR R7 R5 K13
- 0x1C1C0F0E, // 0025 EQ R7 R7 K14
- 0x781E007F, // 0026 JMPF R7 #00A7
- 0x881C0B0F, // 0027 GETMBR R7 R5 K15
- 0x1C1C0F0E, // 0028 EQ R7 R7 K14
- 0x781E007C, // 0029 JMPF R7 #00A7
- 0x881C0107, // 002A GETMBR R7 R0 K7
- 0x881C0F08, // 002B GETMBR R7 R7 K8
- 0x8C1C0F09, // 002C GETMET R7 R7 K9
- 0x88240B0A, // 002D GETMBR R9 R5 K10
- 0x542A0059, // 002E LDINT R10 90
- 0x7C1C0600, // 002F CALL R7 3
- 0x780A0000, // 0030 JMPF R2 #0032
- 0x901E2002, // 0031 SETMBR R7 K16 R2
- 0x780E0000, // 0032 JMPF R3 #0034
- 0x901E2203, // 0033 SETMBR R7 K17 R3
- 0x901E2400, // 0034 SETMBR R7 K18 R0
- 0x90162607, // 0035 SETMBR R5 K19 R7
- 0x88200F14, // 0036 GETMBR R8 R7 K20
- 0x8C201115, // 0037 GETMET R8 R8 K21
- 0x88280B16, // 0038 GETMBR R10 R5 K22
- 0x502C0000, // 0039 LDBOOL R11 0 0
- 0x7C200600, // 003A CALL R8 3
- 0x74220016, // 003B JMPT R8 #0053
- 0xB8222E00, // 003C GETNGBL R8 K23
- 0x8C201118, // 003D GETMET R8 R8 K24
- 0x542A0003, // 003E LDINT R10 4
- 0x7C200400, // 003F CALL R8 2
- 0x7822000A, // 0040 JMPF R8 #004C
- 0xB8222E00, // 0041 GETNGBL R8 K23
- 0x8C201102, // 0042 GETMET R8 R8 K2
- 0x60280018, // 0043 GETGBL R10 G24
- 0x582C0019, // 0044 LDCONST R11 K25
- 0x88300B16, // 0045 GETMBR R12 R5 K22
- 0x88340F14, // 0046 GETMBR R13 R7 K20
- 0x8C341B1A, // 0047 GETMET R13 R13 K26
- 0x7C340200, // 0048 CALL R13 1
- 0x7C280600, // 0049 CALL R10 3
- 0x542E0003, // 004A LDINT R11 4
- 0x7C200600, // 004B CALL R8 3
- 0x8C20011B, // 004C GETMET R8 R0 K27
- 0x5C280A00, // 004D MOVE R10 R5
- 0x502C0000, // 004E LDBOOL R11 0 0
- 0x7C200600, // 004F CALL R8 3
+ 0xA8020132, // 0001 EXBLK 0 #0135
+ 0xB8160400, // 0002 GETNGBL R5 K2
+ 0x8C140B18, // 0003 GETMET R5 R5 K24
+ 0x5C1C0000, // 0004 MOVE R7 R0
+ 0x5C200200, // 0005 MOVE R8 R1
+ 0x5C240400, // 0006 MOVE R9 R2
+ 0x5C280600, // 0007 MOVE R10 R3
+ 0x7C140A00, // 0008 CALL R5 5
+ 0x8C180B19, // 0009 GETMET R6 R5 K25
+ 0x7C180200, // 000A CALL R6 1
+ 0x5C1C0C00, // 000B MOVE R7 R6
+ 0x741E0002, // 000C JMPT R7 #0010
+ 0x501C0000, // 000D LDBOOL R7 0 0
+ 0xA8040001, // 000E EXBLK 1 1
+ 0x80040E00, // 000F RET 1 R7
+ 0x881C0B1A, // 0010 GETMBR R7 R5 K26
+ 0x781E000C, // 0011 JMPF R7 #001F
+ 0x881C0100, // 0012 GETMBR R7 R0 K0
+ 0x881C0F1B, // 0013 GETMBR R7 R7 K27
+ 0x8C1C0F1C, // 0014 GETMET R7 R7 K28
+ 0x88240B1D, // 0015 GETMBR R9 R5 K29
+ 0x542A0059, // 0016 LDINT R10 90
+ 0x7C1C0600, // 0017 CALL R7 3
+ 0x88200106, // 0018 GETMBR R8 R0 K6
+ 0x8C20111E, // 0019 GETMET R8 R8 K30
+ 0x5C280A00, // 001A MOVE R10 R5
+ 0x7C200400, // 001B CALL R8 2
+ 0xA8040001, // 001C EXBLK 1 1
+ 0x80041000, // 001D RET 1 R8
+ 0x70020111, // 001E JMP #0131
+ 0x881C0B12, // 001F GETMBR R7 R5 K18
+ 0x1C1C0F1F, // 0020 EQ R7 R7 K31
+ 0x781E007A, // 0021 JMPF R7 #009D
+ 0x881C0B20, // 0022 GETMBR R7 R5 K32
+ 0x1C1C0F1F, // 0023 EQ R7 R7 K31
+ 0x781E0077, // 0024 JMPF R7 #009D
+ 0x881C0100, // 0025 GETMBR R7 R0 K0
+ 0x881C0F1B, // 0026 GETMBR R7 R7 K27
+ 0x8C1C0F1C, // 0027 GETMET R7 R7 K28
+ 0x88240B1D, // 0028 GETMBR R9 R5 K29
+ 0x542A0059, // 0029 LDINT R10 90
+ 0x7C1C0600, // 002A CALL R7 3
+ 0x780A0000, // 002B JMPF R2 #002D
+ 0x901E4202, // 002C SETMBR R7 K33 R2
+ 0x780E0000, // 002D JMPF R3 #002F
+ 0x901E4403, // 002E SETMBR R7 K34 R3
+ 0x901E4600, // 002F SETMBR R7 K35 R0
+ 0x90162207, // 0030 SETMBR R5 K17 R7
+ 0x88200F24, // 0031 GETMBR R8 R7 K36
+ 0x8C201125, // 0032 GETMET R8 R8 K37
+ 0x88280B14, // 0033 GETMBR R10 R5 K20
+ 0x502C0000, // 0034 LDBOOL R11 0 0
+ 0x7C200600, // 0035 CALL R8 3
+ 0x74220015, // 0036 JMPT R8 #004D
+ 0xB8221A00, // 0037 GETNGBL R8 K13
+ 0x8C20110E, // 0038 GETMET R8 R8 K14
+ 0x542A0003, // 0039 LDINT R10 4
+ 0x7C200400, // 003A CALL R8 2
+ 0x78220009, // 003B JMPF R8 #0046
+ 0xB8221E00, // 003C GETNGBL R8 K15
+ 0x60240018, // 003D GETGBL R9 G24
+ 0x58280026, // 003E LDCONST R10 K38
+ 0x882C0B14, // 003F GETMBR R11 R5 K20
+ 0x88300F24, // 0040 GETMBR R12 R7 K36
+ 0x8C301927, // 0041 GETMET R12 R12 K39
+ 0x7C300200, // 0042 CALL R12 1
+ 0x7C240600, // 0043 CALL R9 3
+ 0x542A0003, // 0044 LDINT R10 4
+ 0x7C200400, // 0045 CALL R8 2
+ 0x8C200128, // 0046 GETMET R8 R0 K40
+ 0x5C280A00, // 0047 MOVE R10 R5
+ 0x502C0000, // 0048 LDBOOL R11 0 0
+ 0x7C200600, // 0049 CALL R8 3
+ 0x50200000, // 004A LDBOOL R8 0 0
+ 0xA8040001, // 004B EXBLK 1 1
+ 0x80041000, // 004C RET 1 R8
+ 0x8C200B29, // 004D GETMET R8 R5 K41
+ 0x7C200200, // 004E CALL R8 1
+ 0x74220002, // 004F JMPT R8 #0053
0x50200000, // 0050 LDBOOL R8 0 0
0xA8040001, // 0051 EXBLK 1 1
0x80041000, // 0052 RET 1 R8
- 0x8C200B1C, // 0053 GETMET R8 R5 K28
- 0x7C200200, // 0054 CALL R8 1
- 0x74220002, // 0055 JMPT R8 #0059
- 0x50200000, // 0056 LDBOOL R8 0 0
- 0xA8040001, // 0057 EXBLK 1 1
- 0x80041000, // 0058 RET 1 R8
- 0x88200107, // 0059 GETMBR R8 R0 K7
- 0x8C20111D, // 005A GETMET R8 R8 K29
- 0x5C280A00, // 005B MOVE R10 R5
- 0x7C200400, // 005C CALL R8 2
- 0x88200B1E, // 005D GETMBR R8 R5 K30
- 0x5426000F, // 005E LDINT R9 16
- 0x20201009, // 005F NE R8 R8 R9
- 0x7822001D, // 0060 JMPF R8 #007F
- 0xB8220000, // 0061 GETNGBL R8 K0
- 0x8C20111F, // 0062 GETMET R8 R8 K31
- 0x88280B1E, // 0063 GETMBR R10 R5 K30
- 0x7C200400, // 0064 CALL R8 2
- 0x5C241000, // 0065 MOVE R9 R8
- 0x74260004, // 0066 JMPT R9 #006C
- 0x60240018, // 0067 GETGBL R9 G24
- 0x58280020, // 0068 LDCONST R10 K32
- 0x882C0B1E, // 0069 GETMBR R11 R5 K30
- 0x7C240400, // 006A CALL R9 2
- 0x5C201200, // 006B MOVE R8 R9
- 0xB8262E00, // 006C GETNGBL R9 K23
- 0x8C241318, // 006D GETMET R9 R9 K24
- 0x582C0021, // 006E LDCONST R11 K33
- 0x7C240400, // 006F CALL R9 2
- 0x7826000C, // 0070 JMPF R9 #007E
- 0xB8262E00, // 0071 GETNGBL R9 K23
- 0x8C241302, // 0072 GETMET R9 R9 K2
- 0x602C0018, // 0073 GETGBL R11 G24
- 0x58300022, // 0074 LDCONST R12 K34
- 0x88340F0D, // 0075 GETMBR R13 R7 K13
- 0x5C381000, // 0076 MOVE R14 R8
- 0x883C0B16, // 0077 GETMBR R15 R5 K22
- 0x88400B23, // 0078 GETMBR R16 R5 K35
- 0x5C440400, // 0079 MOVE R17 R2
- 0x5C480600, // 007A MOVE R18 R3
- 0x7C2C0E00, // 007B CALL R11 7
- 0x58300021, // 007C LDCONST R12 K33
- 0x7C240600, // 007D CALL R9 3
- 0x70020018, // 007E JMP #0098
- 0xB8222E00, // 007F GETNGBL R8 K23
- 0x8C201118, // 0080 GETMET R8 R8 K24
- 0x542A0003, // 0081 LDINT R10 4
- 0x7C200400, // 0082 CALL R8 2
- 0x78220013, // 0083 JMPF R8 #0098
- 0xB8222E00, // 0084 GETNGBL R8 K23
- 0x8C201102, // 0085 GETMET R8 R8 K2
- 0x60280018, // 0086 GETGBL R10 G24
- 0x582C0024, // 0087 LDCONST R11 K36
- 0x88300F0D, // 0088 GETMBR R12 R7 K13
- 0x88340B16, // 0089 GETMBR R13 R5 K22
- 0x88380B25, // 008A GETMBR R14 R5 K37
- 0x783A0001, // 008B JMPF R14 #008E
- 0x58380026, // 008C LDCONST R14 K38
- 0x70020000, // 008D JMP #008F
- 0x58380027, // 008E LDCONST R14 K39
- 0x883C0B23, // 008F GETMBR R15 R5 K35
- 0x60400008, // 0090 GETGBL R16 G8
- 0x88440B28, // 0091 GETMBR R17 R5 K40
- 0x7C400200, // 0092 CALL R16 1
- 0x5C440400, // 0093 MOVE R17 R2
- 0x5C480600, // 0094 MOVE R18 R3
- 0x7C281000, // 0095 CALL R10 8
- 0x542E0003, // 0096 LDINT R11 4
- 0x7C200600, // 0097 CALL R8 3
- 0x88200129, // 0098 GETMBR R8 R0 K41
- 0x8C20112A, // 0099 GETMET R8 R8 K42
- 0x5C280A00, // 009A MOVE R10 R5
- 0x7C200400, // 009B CALL R8 2
- 0x5C101000, // 009C MOVE R4 R8
- 0x5C200800, // 009D MOVE R8 R4
- 0x74220003, // 009E JMPT R8 #00A3
- 0x8C20011B, // 009F GETMET R8 R0 K27
- 0x5C280A00, // 00A0 MOVE R10 R5
- 0x502C0000, // 00A1 LDBOOL R11 0 0
- 0x7C200600, // 00A2 CALL R8 3
- 0x50200200, // 00A3 LDBOOL R8 1 0
- 0xA8040001, // 00A4 EXBLK 1 1
- 0x80041000, // 00A5 RET 1 R8
- 0x700200A7, // 00A6 JMP #014F
- 0xB81E2E00, // 00A7 GETNGBL R7 K23
- 0x8C1C0F18, // 00A8 GETMET R7 R7 K24
- 0x54260003, // 00A9 LDINT R9 4
- 0x7C1C0400, // 00AA CALL R7 2
- 0x781E0008, // 00AB JMPF R7 #00B5
- 0xB81E2E00, // 00AC GETNGBL R7 K23
- 0x8C1C0F02, // 00AD GETMET R7 R7 K2
- 0x60240018, // 00AE GETGBL R9 G24
- 0x5828002B, // 00AF LDCONST R10 K43
- 0x882C0B0D, // 00B0 GETMBR R11 R5 K13
- 0x88300B16, // 00B1 GETMBR R12 R5 K22
- 0x7C240600, // 00B2 CALL R9 3
- 0x542A0003, // 00B3 LDINT R10 4
- 0x7C1C0600, // 00B4 CALL R7 3
- 0x881C0107, // 00B5 GETMBR R7 R0 K7
- 0x881C0F08, // 00B6 GETMBR R7 R7 K8
- 0x8C1C0F2C, // 00B7 GETMET R7 R7 K44
- 0x88240B0D, // 00B8 GETMBR R9 R5 K13
- 0x7C1C0400, // 00B9 CALL R7 2
- 0x4C200000, // 00BA LDNIL R8
- 0x1C200E08, // 00BB EQ R8 R7 R8
- 0x7822000A, // 00BC JMPF R8 #00C8
- 0xB8222E00, // 00BD GETNGBL R8 K23
- 0x8C201102, // 00BE GETMET R8 R8 K2
- 0x60280008, // 00BF GETGBL R10 G8
- 0x882C0B0D, // 00C0 GETMBR R11 R5 K13
- 0x7C280200, // 00C1 CALL R10 1
- 0x002A5A0A, // 00C2 ADD R10 K45 R10
- 0x582C0021, // 00C3 LDCONST R11 K33
- 0x7C200600, // 00C4 CALL R8 3
- 0x50200000, // 00C5 LDBOOL R8 0 0
- 0xA8040001, // 00C6 EXBLK 1 1
- 0x80041000, // 00C7 RET 1 R8
- 0x780A0000, // 00C8 JMPF R2 #00CA
- 0x901E2002, // 00C9 SETMBR R7 K16 R2
- 0x780E0000, // 00CA JMPF R3 #00CC
- 0x901E2203, // 00CB SETMBR R7 K17 R3
- 0x901E2400, // 00CC SETMBR R7 K18 R0
- 0x90162607, // 00CD SETMBR R5 K19 R7
- 0x8C200F2E, // 00CE GETMET R8 R7 K46
- 0x88280B16, // 00CF GETMBR R10 R5 K22
- 0x502C0200, // 00D0 LDBOOL R11 1 0
- 0x7C200600, // 00D1 CALL R8 3
- 0x74220018, // 00D2 JMPT R8 #00EC
- 0xB8222E00, // 00D3 GETNGBL R8 K23
- 0x8C201118, // 00D4 GETMET R8 R8 K24
- 0x58280021, // 00D5 LDCONST R10 K33
- 0x7C200400, // 00D6 CALL R8 2
- 0x7822000C, // 00D7 JMPF R8 #00E5
- 0xB8222E00, // 00D8 GETNGBL R8 K23
- 0x8C201102, // 00D9 GETMET R8 R8 K2
- 0x60280008, // 00DA GETGBL R10 G8
- 0x882C0B16, // 00DB GETMBR R11 R5 K22
- 0x7C280200, // 00DC CALL R10 1
- 0x002A5E0A, // 00DD ADD R10 K47 R10
- 0x00281530, // 00DE ADD R10 R10 K48
- 0x602C0008, // 00DF GETGBL R11 G8
- 0x88300F31, // 00E0 GETMBR R12 R7 K49
- 0x7C2C0200, // 00E1 CALL R11 1
- 0x0028140B, // 00E2 ADD R10 R10 R11
- 0x582C0021, // 00E3 LDCONST R11 K33
- 0x7C200600, // 00E4 CALL R8 3
- 0x8C200132, // 00E5 GETMET R8 R0 K50
- 0x5C280A00, // 00E6 MOVE R10 R5
- 0x502C0000, // 00E7 LDBOOL R11 0 0
- 0x7C200600, // 00E8 CALL R8 3
- 0x50200000, // 00E9 LDBOOL R8 0 0
- 0xA8040001, // 00EA EXBLK 1 1
- 0x80041000, // 00EB RET 1 R8
- 0x8C200B33, // 00EC GETMET R8 R5 K51
- 0x7C200200, // 00ED CALL R8 1
- 0xB8260000, // 00EE GETNGBL R9 K0
- 0x88241301, // 00EF GETMBR R9 R9 K1
- 0x8C241302, // 00F0 GETMET R9 R9 K2
- 0x582C0034, // 00F1 LDCONST R11 K52
- 0x7C240400, // 00F2 CALL R9 2
- 0x5C241000, // 00F3 MOVE R9 R8
- 0x74260002, // 00F4 JMPT R9 #00F8
- 0x50240000, // 00F5 LDBOOL R9 0 0
- 0xA8040001, // 00F6 EXBLK 1 1
- 0x80041200, // 00F7 RET 1 R9
- 0x8C240B1C, // 00F8 GETMET R9 R5 K28
- 0x7C240200, // 00F9 CALL R9 1
- 0xB8262E00, // 00FA GETNGBL R9 K23
- 0x8C241318, // 00FB GETMET R9 R9 K24
- 0x542E0003, // 00FC LDINT R11 4
- 0x7C240400, // 00FD CALL R9 2
- 0x78260013, // 00FE JMPF R9 #0113
- 0xB8262E00, // 00FF GETNGBL R9 K23
- 0x8C241302, // 0100 GETMET R9 R9 K2
- 0x602C0008, // 0101 GETGBL R11 G8
- 0x88300B36, // 0102 GETMBR R12 R5 K54
- 0x7C2C0200, // 0103 CALL R11 1
- 0x002E6A0B, // 0104 ADD R11 K53 R11
- 0x002C1737, // 0105 ADD R11 R11 K55
- 0x60300008, // 0106 GETGBL R12 G8
- 0x88340B1E, // 0107 GETMBR R13 R5 K30
- 0x7C300200, // 0108 CALL R12 1
- 0x002C160C, // 0109 ADD R11 R11 R12
- 0x002C1738, // 010A ADD R11 R11 K56
- 0x60300008, // 010B GETGBL R12 G8
- 0x88340B23, // 010C GETMBR R13 R5 K35
- 0x543AFFFE, // 010D LDINT R14 65535
- 0x2C341A0E, // 010E AND R13 R13 R14
- 0x7C300200, // 010F CALL R12 1
- 0x002C160C, // 0110 ADD R11 R11 R12
- 0x54320003, // 0111 LDINT R12 4
- 0x7C240600, // 0112 CALL R9 3
- 0x88240107, // 0113 GETMBR R9 R0 K7
- 0x8C24131D, // 0114 GETMET R9 R9 K29
- 0x5C2C0A00, // 0115 MOVE R11 R5
- 0x7C240400, // 0116 CALL R9 2
- 0x88240B36, // 0117 GETMBR R9 R5 K54
- 0x1C28130E, // 0118 EQ R10 R9 K14
- 0x782A000F, // 0119 JMPF R10 #012A
- 0x88280B1E, // 011A GETMBR R10 R5 K30
- 0x542E000F, // 011B LDINT R11 16
- 0x1C28140B, // 011C EQ R10 R10 R11
- 0x782A0009, // 011D JMPF R10 #0128
- 0x88280139, // 011E GETMBR R10 R0 K57
- 0x8C28153A, // 011F GETMET R10 R10 K58
- 0x5C300A00, // 0120 MOVE R12 R5
- 0x7C280400, // 0121 CALL R10 2
- 0x5C101400, // 0122 MOVE R4 R10
- 0x78120003, // 0123 JMPF R4 #0128
- 0x88280139, // 0124 GETMBR R10 R0 K57
- 0x8C28153B, // 0125 GETMET R10 R10 K59
- 0x5C300000, // 0126 MOVE R12 R0
- 0x7C280400, // 0127 CALL R10 2
+ 0x88200100, // 0053 GETMBR R8 R0 K0
+ 0x8C20112A, // 0054 GETMET R8 R8 K42
+ 0x5C280A00, // 0055 MOVE R10 R5
+ 0x7C200400, // 0056 CALL R8 2
+ 0x88200B2B, // 0057 GETMBR R8 R5 K43
+ 0x5426000F, // 0058 LDINT R9 16
+ 0x20201009, // 0059 NE R8 R8 R9
+ 0x7822001A, // 005A JMPF R8 #0076
+ 0xB8220400, // 005B GETNGBL R8 K2
+ 0x8C20112C, // 005C GETMET R8 R8 K44
+ 0x88280B2B, // 005D GETMBR R10 R5 K43
+ 0x7C200400, // 005E CALL R8 2
+ 0x5C241000, // 005F MOVE R9 R8
+ 0x74260004, // 0060 JMPT R9 #0066
+ 0x60240018, // 0061 GETGBL R9 G24
+ 0x5828002D, // 0062 LDCONST R10 K45
+ 0x882C0B2B, // 0063 GETMBR R11 R5 K43
+ 0x7C240400, // 0064 CALL R9 2
+ 0x5C201200, // 0065 MOVE R8 R9
+ 0xB8261A00, // 0066 GETNGBL R9 K13
+ 0x8C24130E, // 0067 GETMET R9 R9 K14
+ 0x582C002E, // 0068 LDCONST R11 K46
+ 0x7C240400, // 0069 CALL R9 2
+ 0x78260009, // 006A JMPF R9 #0075
+ 0xB8261E00, // 006B GETNGBL R9 K15
+ 0x60280018, // 006C GETGBL R10 G24
+ 0x582C002F, // 006D LDCONST R11 K47
+ 0x88300F12, // 006E GETMBR R12 R7 K18
+ 0x5C341000, // 006F MOVE R13 R8
+ 0x5C380400, // 0070 MOVE R14 R2
+ 0x5C3C0600, // 0071 MOVE R15 R3
+ 0x7C280A00, // 0072 CALL R10 5
+ 0x582C002E, // 0073 LDCONST R11 K46
+ 0x7C240400, // 0074 CALL R9 2
+ 0x70020017, // 0075 JMP #008E
+ 0xB8221A00, // 0076 GETNGBL R8 K13
+ 0x8C20110E, // 0077 GETMET R8 R8 K14
+ 0x542A0003, // 0078 LDINT R10 4
+ 0x7C200400, // 0079 CALL R8 2
+ 0x78220012, // 007A JMPF R8 #008E
+ 0xB8221E00, // 007B GETNGBL R8 K15
+ 0x60240018, // 007C GETGBL R9 G24
+ 0x58280030, // 007D LDCONST R10 K48
+ 0x882C0F12, // 007E GETMBR R11 R7 K18
+ 0x88300B14, // 007F GETMBR R12 R5 K20
+ 0x88340B09, // 0080 GETMBR R13 R5 K9
+ 0x78360001, // 0081 JMPF R13 #0084
+ 0x58340031, // 0082 LDCONST R13 K49
+ 0x70020000, // 0083 JMP #0085
+ 0x58340016, // 0084 LDCONST R13 K22
+ 0x88380B32, // 0085 GETMBR R14 R5 K50
+ 0x603C0008, // 0086 GETGBL R15 G8
+ 0x88400B13, // 0087 GETMBR R16 R5 K19
+ 0x7C3C0200, // 0088 CALL R15 1
+ 0x5C400400, // 0089 MOVE R16 R2
+ 0x5C440600, // 008A MOVE R17 R3
+ 0x7C241000, // 008B CALL R9 8
+ 0x542A0003, // 008C LDINT R10 4
+ 0x7C200400, // 008D CALL R8 2
+ 0x88200101, // 008E GETMBR R8 R0 K1
+ 0x8C201133, // 008F GETMET R8 R8 K51
+ 0x5C280A00, // 0090 MOVE R10 R5
+ 0x7C200400, // 0091 CALL R8 2
+ 0x5C101000, // 0092 MOVE R4 R8
+ 0x5C200800, // 0093 MOVE R8 R4
+ 0x74220003, // 0094 JMPT R8 #0099
+ 0x8C200128, // 0095 GETMET R8 R0 K40
+ 0x5C280A00, // 0096 MOVE R10 R5
+ 0x502C0000, // 0097 LDBOOL R11 0 0
+ 0x7C200600, // 0098 CALL R8 3
+ 0x50200200, // 0099 LDBOOL R8 1 0
+ 0xA8040001, // 009A EXBLK 1 1
+ 0x80041000, // 009B RET 1 R8
+ 0x70020093, // 009C JMP #0131
+ 0xB81E1A00, // 009D GETNGBL R7 K13
+ 0x8C1C0F0E, // 009E GETMET R7 R7 K14
+ 0x54260003, // 009F LDINT R9 4
+ 0x7C1C0400, // 00A0 CALL R7 2
+ 0x781E0007, // 00A1 JMPF R7 #00AA
+ 0xB81E1E00, // 00A2 GETNGBL R7 K15
+ 0x60200018, // 00A3 GETGBL R8 G24
+ 0x58240034, // 00A4 LDCONST R9 K52
+ 0x88280B12, // 00A5 GETMBR R10 R5 K18
+ 0x882C0B14, // 00A6 GETMBR R11 R5 K20
+ 0x7C200600, // 00A7 CALL R8 3
+ 0x54260003, // 00A8 LDINT R9 4
+ 0x7C1C0400, // 00A9 CALL R7 2
+ 0x881C0100, // 00AA GETMBR R7 R0 K0
+ 0x881C0F1B, // 00AB GETMBR R7 R7 K27
+ 0x8C1C0F35, // 00AC GETMET R7 R7 K53
+ 0x88240B12, // 00AD GETMBR R9 R5 K18
+ 0x7C1C0400, // 00AE CALL R7 2
+ 0x4C200000, // 00AF LDNIL R8
+ 0x1C200E08, // 00B0 EQ R8 R7 R8
+ 0x78220009, // 00B1 JMPF R8 #00BC
+ 0xB8221E00, // 00B2 GETNGBL R8 K15
+ 0x60240008, // 00B3 GETGBL R9 G8
+ 0x88280B12, // 00B4 GETMBR R10 R5 K18
+ 0x7C240200, // 00B5 CALL R9 1
+ 0x00266C09, // 00B6 ADD R9 K54 R9
+ 0x5828002E, // 00B7 LDCONST R10 K46
+ 0x7C200400, // 00B8 CALL R8 2
+ 0x50200000, // 00B9 LDBOOL R8 0 0
+ 0xA8040001, // 00BA EXBLK 1 1
+ 0x80041000, // 00BB RET 1 R8
+ 0x780A0000, // 00BC JMPF R2 #00BE
+ 0x901E4202, // 00BD SETMBR R7 K33 R2
+ 0x780E0000, // 00BE JMPF R3 #00C0
+ 0x901E4403, // 00BF SETMBR R7 K34 R3
+ 0x901E4600, // 00C0 SETMBR R7 K35 R0
+ 0x90162207, // 00C1 SETMBR R5 K17 R7
+ 0x8C200F37, // 00C2 GETMET R8 R7 K55
+ 0x88280B14, // 00C3 GETMBR R10 R5 K20
+ 0x502C0200, // 00C4 LDBOOL R11 1 0
+ 0x7C200600, // 00C5 CALL R8 3
+ 0x74220017, // 00C6 JMPT R8 #00DF
+ 0xB8221A00, // 00C7 GETNGBL R8 K13
+ 0x8C20110E, // 00C8 GETMET R8 R8 K14
+ 0x5828002E, // 00C9 LDCONST R10 K46
+ 0x7C200400, // 00CA CALL R8 2
+ 0x7822000B, // 00CB JMPF R8 #00D8
+ 0xB8221E00, // 00CC GETNGBL R8 K15
+ 0x60240008, // 00CD GETGBL R9 G8
+ 0x88280B14, // 00CE GETMBR R10 R5 K20
+ 0x7C240200, // 00CF CALL R9 1
+ 0x00267009, // 00D0 ADD R9 K56 R9
+ 0x00241339, // 00D1 ADD R9 R9 K57
+ 0x60280008, // 00D2 GETGBL R10 G8
+ 0x882C0F3A, // 00D3 GETMBR R11 R7 K58
+ 0x7C280200, // 00D4 CALL R10 1
+ 0x0024120A, // 00D5 ADD R9 R9 R10
+ 0x5828002E, // 00D6 LDCONST R10 K46
+ 0x7C200400, // 00D7 CALL R8 2
+ 0x8C20013B, // 00D8 GETMET R8 R0 K59
+ 0x5C280A00, // 00D9 MOVE R10 R5
+ 0x502C0000, // 00DA LDBOOL R11 0 0
+ 0x7C200600, // 00DB CALL R8 3
+ 0x50200000, // 00DC LDBOOL R8 0 0
+ 0xA8040001, // 00DD EXBLK 1 1
+ 0x80041000, // 00DE RET 1 R8
+ 0x8C200B3C, // 00DF GETMET R8 R5 K60
+ 0x7C200200, // 00E0 CALL R8 1
+ 0x5C241000, // 00E1 MOVE R9 R8
+ 0x74260002, // 00E2 JMPT R9 #00E6
+ 0x50240000, // 00E3 LDBOOL R9 0 0
+ 0xA8040001, // 00E4 EXBLK 1 1
+ 0x80041200, // 00E5 RET 1 R9
+ 0x8C240B29, // 00E6 GETMET R9 R5 K41
+ 0x7C240200, // 00E7 CALL R9 1
+ 0xB8261A00, // 00E8 GETNGBL R9 K13
+ 0x8C24130E, // 00E9 GETMET R9 R9 K14
+ 0x542E0003, // 00EA LDINT R11 4
+ 0x7C240400, // 00EB CALL R9 2
+ 0x78260012, // 00EC JMPF R9 #0100
+ 0xB8261E00, // 00ED GETNGBL R9 K15
+ 0x60280008, // 00EE GETGBL R10 G8
+ 0x882C0B3E, // 00EF GETMBR R11 R5 K62
+ 0x7C280200, // 00F0 CALL R10 1
+ 0x002A7A0A, // 00F1 ADD R10 K61 R10
+ 0x0028153F, // 00F2 ADD R10 R10 K63
+ 0x602C0008, // 00F3 GETGBL R11 G8
+ 0x88300B2B, // 00F4 GETMBR R12 R5 K43
+ 0x7C2C0200, // 00F5 CALL R11 1
+ 0x0028140B, // 00F6 ADD R10 R10 R11
+ 0x00281540, // 00F7 ADD R10 R10 K64
+ 0x602C0008, // 00F8 GETGBL R11 G8
+ 0x88300B32, // 00F9 GETMBR R12 R5 K50
+ 0x5436FFFE, // 00FA LDINT R13 65535
+ 0x2C30180D, // 00FB AND R12 R12 R13
+ 0x7C2C0200, // 00FC CALL R11 1
+ 0x0028140B, // 00FD ADD R10 R10 R11
+ 0x542E0003, // 00FE LDINT R11 4
+ 0x7C240400, // 00FF CALL R9 2
+ 0x88240100, // 0100 GETMBR R9 R0 K0
+ 0x8C24132A, // 0101 GETMET R9 R9 K42
+ 0x5C2C0A00, // 0102 MOVE R11 R5
+ 0x7C240400, // 0103 CALL R9 2
+ 0x88240B3E, // 0104 GETMBR R9 R5 K62
+ 0x1C28131F, // 0105 EQ R10 R9 K31
+ 0x782A000F, // 0106 JMPF R10 #0117
+ 0x88280B2B, // 0107 GETMBR R10 R5 K43
+ 0x542E000F, // 0108 LDINT R11 16
+ 0x1C28140B, // 0109 EQ R10 R10 R11
+ 0x782A0009, // 010A JMPF R10 #0115
+ 0x88280104, // 010B GETMBR R10 R0 K4
+ 0x8C281541, // 010C GETMET R10 R10 K65
+ 0x5C300A00, // 010D MOVE R12 R5
+ 0x7C280400, // 010E CALL R10 2
+ 0x5C101400, // 010F MOVE R4 R10
+ 0x78120003, // 0110 JMPF R4 #0115
+ 0x88280104, // 0111 GETMBR R10 R0 K4
+ 0x8C281542, // 0112 GETMET R10 R10 K66
+ 0x5C300000, // 0113 MOVE R12 R0
+ 0x7C280400, // 0114 CALL R10 2
+ 0x50100200, // 0115 LDBOOL R4 1 0
+ 0x70020019, // 0116 JMP #0131
+ 0x1C281343, // 0117 EQ R10 R9 K67
+ 0x782A0010, // 0118 JMPF R10 #012A
+ 0x88280104, // 0119 GETMBR R10 R0 K4
+ 0x8C281533, // 011A GETMET R10 R10 K51
+ 0x5C300A00, // 011B MOVE R12 R5
+ 0x7C280400, // 011C CALL R10 2
+ 0x5C101400, // 011D MOVE R4 R10
+ 0x78120004, // 011E JMPF R4 #0124
+ 0x88280104, // 011F GETMBR R10 R0 K4
+ 0x8C281542, // 0120 GETMET R10 R10 K66
+ 0x5C300000, // 0121 MOVE R12 R0
+ 0x7C280400, // 0122 CALL R10 2
+ 0x70020003, // 0123 JMP #0128
+ 0x8C28013B, // 0124 GETMET R10 R0 K59
+ 0x5C300A00, // 0125 MOVE R12 R5
+ 0x50340200, // 0126 LDBOOL R13 1 0
+ 0x7C280600, // 0127 CALL R10 3
0x50100200, // 0128 LDBOOL R4 1 0
- 0x70020024, // 0129 JMP #014F
- 0x1C28133C, // 012A EQ R10 R9 K60
- 0x782A001A, // 012B JMPF R10 #0147
- 0xB82A0000, // 012C GETNGBL R10 K0
- 0x88281501, // 012D GETMBR R10 R10 K1
- 0x8C281502, // 012E GETMET R10 R10 K2
- 0x5830003D, // 012F LDCONST R12 K61
+ 0x70020006, // 0129 JMP #0131
+ 0xB82A1E00, // 012A GETNGBL R10 K15
+ 0x602C0008, // 012B GETGBL R11 G8
+ 0x5C301200, // 012C MOVE R12 R9
+ 0x7C2C0200, // 012D CALL R11 1
+ 0x002E880B, // 012E ADD R11 K68 R11
+ 0x5830002E, // 012F LDCONST R12 K46
0x7C280400, // 0130 CALL R10 2
- 0x88280139, // 0131 GETMBR R10 R0 K57
- 0x8C28152A, // 0132 GETMET R10 R10 K42
- 0x5C300A00, // 0133 MOVE R12 R5
- 0x7C280400, // 0134 CALL R10 2
- 0x5C101400, // 0135 MOVE R4 R10
- 0xB82A0000, // 0136 GETNGBL R10 K0
- 0x88281501, // 0137 GETMBR R10 R10 K1
- 0x8C281502, // 0138 GETMET R10 R10 K2
- 0x5830003E, // 0139 LDCONST R12 K62
- 0x7C280400, // 013A CALL R10 2
- 0x78120004, // 013B JMPF R4 #0141
- 0x88280139, // 013C GETMBR R10 R0 K57
- 0x8C28153B, // 013D GETMET R10 R10 K59
- 0x5C300000, // 013E MOVE R12 R0
- 0x7C280400, // 013F CALL R10 2
- 0x70020003, // 0140 JMP #0145
- 0x8C280132, // 0141 GETMET R10 R0 K50
- 0x5C300A00, // 0142 MOVE R12 R5
- 0x50340200, // 0143 LDBOOL R13 1 0
- 0x7C280600, // 0144 CALL R10 3
- 0x50100200, // 0145 LDBOOL R4 1 0
- 0x70020007, // 0146 JMP #014F
- 0xB82A2E00, // 0147 GETNGBL R10 K23
- 0x8C281502, // 0148 GETMET R10 R10 K2
- 0x60300008, // 0149 GETGBL R12 G8
- 0x5C341200, // 014A MOVE R13 R9
- 0x7C300200, // 014B CALL R12 1
- 0x00327E0C, // 014C ADD R12 K63 R12
- 0x58340021, // 014D LDCONST R13 K33
- 0x7C280600, // 014E CALL R10 3
- 0xA8040001, // 014F EXBLK 1 1
- 0x80040800, // 0150 RET 1 R4
- 0xA8040001, // 0151 EXBLK 1 1
- 0x70020018, // 0152 JMP #016C
- 0xAC140002, // 0153 CATCH R5 0 2
- 0x70020015, // 0154 JMP #016B
- 0xB81E2E00, // 0155 GETNGBL R7 K23
- 0x8C1C0F02, // 0156 GETMET R7 R7 K2
- 0x60240008, // 0157 GETGBL R9 G8
- 0x5C280A00, // 0158 MOVE R10 R5
- 0x7C240200, // 0159 CALL R9 1
- 0x00268009, // 015A ADD R9 K64 R9
- 0x00241341, // 015B ADD R9 R9 K65
- 0x60280008, // 015C GETGBL R10 G8
- 0x5C2C0C00, // 015D MOVE R11 R6
- 0x7C280200, // 015E CALL R10 1
- 0x0024120A, // 015F ADD R9 R9 R10
- 0x58280042, // 0160 LDCONST R10 K66
- 0x7C1C0600, // 0161 CALL R7 3
- 0xB81E2E00, // 0162 GETNGBL R7 K23
- 0x881C0F43, // 0163 GETMBR R7 R7 K67
- 0x781E0002, // 0164 JMPF R7 #0168
- 0xA41E8800, // 0165 IMPORT R7 K68
- 0x8C200F45, // 0166 GETMET R8 R7 K69
- 0x7C200200, // 0167 CALL R8 1
- 0x501C0000, // 0168 LDBOOL R7 0 0
- 0x80040E00, // 0169 RET 1 R7
- 0x70020000, // 016A JMP #016C
- 0xB0080000, // 016B RAISE 2 R0 R0
- 0x80000000, // 016C RET 0
+ 0xA8040001, // 0131 EXBLK 1 1
+ 0x80040800, // 0132 RET 1 R4
+ 0xA8040001, // 0133 EXBLK 1 1
+ 0x70020017, // 0134 JMP #014D
+ 0xAC140002, // 0135 CATCH R5 0 2
+ 0x70020014, // 0136 JMP #014C
+ 0xB81E1E00, // 0137 GETNGBL R7 K15
+ 0x60200008, // 0138 GETGBL R8 G8
+ 0x5C240A00, // 0139 MOVE R9 R5
+ 0x7C200200, // 013A CALL R8 1
+ 0x00228A08, // 013B ADD R8 K69 R8
+ 0x00201146, // 013C ADD R8 R8 K70
+ 0x60240008, // 013D GETGBL R9 G8
+ 0x5C280C00, // 013E MOVE R10 R6
+ 0x7C240200, // 013F CALL R9 1
+ 0x00201009, // 0140 ADD R8 R8 R9
+ 0x58240047, // 0141 LDCONST R9 K71
+ 0x7C1C0400, // 0142 CALL R7 2
+ 0xB81E1A00, // 0143 GETNGBL R7 K13
+ 0x881C0F48, // 0144 GETMBR R7 R7 K72
+ 0x781E0002, // 0145 JMPF R7 #0149
+ 0xA41E9200, // 0146 IMPORT R7 K73
+ 0x8C200F4A, // 0147 GETMET R8 R7 K74
+ 0x7C200200, // 0148 CALL R8 1
+ 0x501C0000, // 0149 LDBOOL R7 0 0
+ 0x80040E00, // 014A RET 1 R7
+ 0x70020000, // 014B JMP #014D
+ 0xB0080000, // 014C RAISE 2 R0 R0
+ 0x80000000, // 014D RET 0
})
)
);
@@ -597,38 +548,25 @@ be_local_closure(class_Matter_MessageHandler_msg_received, /* name */
/********************************************************************
** Solidified function: send_response_frame
********************************************************************/
-extern const bclass be_class_Matter_MessageHandler;
be_local_closure(class_Matter_MessageHandler_send_response_frame, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_MessageHandler,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(profiler),
- /* K2 */ be_nested_str_weak(log),
- /* K3 */ be_nested_str_weak(send_response_frame),
- /* K4 */ be_nested_str_weak(device),
- /* K5 */ be_nested_str_weak(msg_send),
- }),
+ &be_ktab_class_Matter_MessageHandler, /* shared constants */
be_str_weak(send_response_frame),
&be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0xB80A0000, // 0000 GETNGBL R2 K0
- 0x88080501, // 0001 GETMBR R2 R2 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
- 0x58100003, // 0003 LDCONST R4 K3
- 0x7C080400, // 0004 CALL R2 2
- 0x88080104, // 0005 GETMBR R2 R0 K4
- 0x8C080505, // 0006 GETMET R2 R2 K5
- 0x5C100200, // 0007 MOVE R4 R1
- 0x7C080400, // 0008 CALL R2 2
- 0x80000000, // 0009 RET 0
+ ( &(const binstruction[ 5]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C08054B, // 0001 GETMET R2 R2 K75
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x7C080400, // 0003 CALL R2 2
+ 0x80000000, // 0004 RET 0
})
)
);
@@ -638,67 +576,52 @@ be_local_closure(class_Matter_MessageHandler_send_response_frame, /* name */
/********************************************************************
** Solidified function: send_simple_ack
********************************************************************/
-extern const bclass be_class_Matter_MessageHandler;
be_local_closure(class_Matter_MessageHandler_send_simple_ack, /* name */
be_nested_proto(
- 12, /* nstack */
+ 11, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_MessageHandler,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(x_flag_r),
- /* K1 */ be_nested_str_weak(build_standalone_ack),
- /* K2 */ be_nested_str_weak(encode_frame),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(loglevel),
- /* K5 */ be_nested_str_weak(log),
- /* K6 */ be_nested_str_weak(MTR_X3A_X20_X3CAck_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20ack_X3D_X25i_X20id_X3D_X25i_X20_X25s),
- /* K7 */ be_nested_str_weak(session),
- /* K8 */ be_nested_str_weak(local_session_id),
- /* K9 */ be_nested_str_weak(ack_message_counter),
- /* K10 */ be_nested_str_weak(message_counter),
- /* K11 */ be_nested_str_weak(_X7Breliable_X7D),
- /* K12 */ be_nested_str_weak(),
- /* K13 */ be_nested_str_weak(send_response_frame),
- }),
+ &be_ktab_class_Matter_MessageHandler, /* shared constants */
be_str_weak(send_simple_ack),
&be_const_str_solidified,
- ( &(const binstruction[31]) { /* code */
- 0x880C0300, // 0000 GETMBR R3 R1 K0
- 0x780E001B, // 0001 JMPF R3 #001E
- 0x8C0C0301, // 0002 GETMET R3 R1 K1
+ ( &(const binstruction[32]) { /* code */
+ 0x880C0309, // 0000 GETMBR R3 R1 K9
+ 0x780E001C, // 0001 JMPF R3 #001F
+ 0x8C0C030A, // 0002 GETMET R3 R1 K10
0x5C140400, // 0003 MOVE R5 R2
0x7C0C0400, // 0004 CALL R3 2
- 0x8C100702, // 0005 GETMET R4 R3 K2
- 0x7C100200, // 0006 CALL R4 1
- 0xB8120600, // 0007 GETNGBL R4 K3
- 0x8C100904, // 0008 GETMET R4 R4 K4
- 0x541A0003, // 0009 LDINT R6 4
- 0x7C100400, // 000A CALL R4 2
- 0x7812000E, // 000B JMPF R4 #001B
- 0xB8120600, // 000C GETNGBL R4 K3
- 0x8C100905, // 000D GETMET R4 R4 K5
- 0x60180018, // 000E GETGBL R6 G24
- 0x581C0006, // 000F LDCONST R7 K6
- 0x88200707, // 0010 GETMBR R8 R3 K7
- 0x88201108, // 0011 GETMBR R8 R8 K8
- 0x88240709, // 0012 GETMBR R9 R3 K9
- 0x8828070A, // 0013 GETMBR R10 R3 K10
- 0x780A0001, // 0014 JMPF R2 #0017
- 0x582C000B, // 0015 LDCONST R11 K11
- 0x70020000, // 0016 JMP #0018
- 0x582C000C, // 0017 LDCONST R11 K12
- 0x7C180A00, // 0018 CALL R6 5
- 0x541E0003, // 0019 LDINT R7 4
- 0x7C100600, // 001A CALL R4 3
- 0x8C10010D, // 001B GETMET R4 R0 K13
- 0x5C180600, // 001C MOVE R6 R3
- 0x7C100400, // 001D CALL R4 2
- 0x80000000, // 001E RET 0
+ 0x88100312, // 0005 GETMBR R4 R1 K18
+ 0x900E2404, // 0006 SETMBR R3 K18 R4
+ 0x8C10070B, // 0007 GETMET R4 R3 K11
+ 0x7C100200, // 0008 CALL R4 1
+ 0xB8121A00, // 0009 GETNGBL R4 K13
+ 0x8C10090E, // 000A GETMET R4 R4 K14
+ 0x541A0003, // 000B LDINT R6 4
+ 0x7C100400, // 000C CALL R4 2
+ 0x7812000D, // 000D JMPF R4 #001C
+ 0xB8121E00, // 000E GETNGBL R4 K15
+ 0x60140018, // 000F GETGBL R5 G24
+ 0x5818004C, // 0010 LDCONST R6 K76
+ 0x881C0711, // 0011 GETMBR R7 R3 K17
+ 0x881C0F12, // 0012 GETMBR R7 R7 K18
+ 0x88200713, // 0013 GETMBR R8 R3 K19
+ 0x88240714, // 0014 GETMBR R9 R3 K20
+ 0x780A0001, // 0015 JMPF R2 #0018
+ 0x58280015, // 0016 LDCONST R10 K21
+ 0x70020000, // 0017 JMP #0019
+ 0x58280016, // 0018 LDCONST R10 K22
+ 0x7C140A00, // 0019 CALL R5 5
+ 0x541A0003, // 001A LDINT R6 4
+ 0x7C100400, // 001B CALL R4 2
+ 0x8C100117, // 001C GETMET R4 R0 K23
+ 0x5C180600, // 001D MOVE R6 R3
+ 0x7C100400, // 001E CALL R4 2
+ 0x80000000, // 001F RET 0
})
)
);
@@ -706,28 +629,24 @@ be_local_closure(class_Matter_MessageHandler_send_simple_ack, /* name */
/********************************************************************
-** Solidified function: every_250ms
+** Solidified function: every_50ms
********************************************************************/
-extern const bclass be_class_Matter_MessageHandler;
-be_local_closure(class_Matter_MessageHandler_every_250ms, /* name */
+be_local_closure(class_Matter_MessageHandler_every_50ms, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_MessageHandler,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(im),
- /* K1 */ be_nested_str_weak(every_250ms),
- }),
- be_str_weak(every_250ms),
+ &be_ktab_class_Matter_MessageHandler, /* shared constants */
+ be_str_weak(every_50ms),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x88040104, // 0000 GETMBR R1 R0 K4
+ 0x8C04034D, // 0001 GETMET R1 R1 K77
0x7C040200, // 0002 CALL R1 1
0x80000000, // 0003 RET 0
})
@@ -739,30 +658,25 @@ be_local_closure(class_Matter_MessageHandler_every_250ms, /* name */
/********************************************************************
** Solidified function: every_second
********************************************************************/
-extern const bclass be_class_Matter_MessageHandler;
be_local_closure(class_Matter_MessageHandler_every_second, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_MessageHandler,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(commissioning),
- /* K1 */ be_nested_str_weak(every_second),
- /* K2 */ be_nested_str_weak(im),
- }),
+ &be_ktab_class_Matter_MessageHandler, /* shared constants */
be_str_weak(every_second),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x88040101, // 0000 GETMBR R1 R0 K1
+ 0x8C04034E, // 0001 GETMET R1 R1 K78
0x7C040200, // 0002 CALL R1 1
- 0x88040102, // 0003 GETMBR R1 R0 K2
- 0x8C040301, // 0004 GETMET R1 R1 K1
+ 0x88040104, // 0003 GETMBR R1 R0 K4
+ 0x8C04034E, // 0004 GETMET R1 R1 K78
0x7C040200, // 0005 CALL R1 1
0x80000000, // 0006 RET 0
})
@@ -786,7 +700,7 @@ be_local_class(Matter_MessageHandler,
{ be_const_key_weak(msg_received, -1), be_const_closure(class_Matter_MessageHandler_msg_received_closure) },
{ be_const_key_weak(im, 11), be_const_var(2) },
{ be_const_key_weak(every_second, -1), be_const_closure(class_Matter_MessageHandler_every_second_closure) },
- { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_MessageHandler_every_250ms_closure) },
+ { be_const_key_weak(every_50ms, -1), be_const_closure(class_Matter_MessageHandler_every_50ms_closure) },
{ be_const_key_weak(send_simple_ack, 1), be_const_closure(class_Matter_MessageHandler_send_simple_ack_closure) },
{ be_const_key_weak(send_response_frame, 6), be_const_closure(class_Matter_MessageHandler_send_response_frame_closure) },
{ be_const_key_weak(control_message, -1), be_const_var(3) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Module.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Module.h
index d36f5bb72..695a24695 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Module.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Module.h
@@ -15,7 +15,7 @@ be_local_closure(module_matter_setmember, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str_weak(global),
@@ -53,7 +53,7 @@ be_local_closure(module_matter_member, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str_weak(global),
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h
index dddd45953..673983919 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_0.h
@@ -3,150 +3,46 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_Path' ktab size: 19, total: 30 (saved 88 bytes)
+static const bvalue be_ktab_class_Matter_Path[19] = {
+ /* K0 */ be_nested_str_weak(endpoint),
+ /* K1 */ be_nested_str_weak(cluster),
+ /* K2 */ be_nested_str_weak(attribute),
+ /* K3 */ be_nested_str_weak(fabric_filtered),
+ /* K4 */ be_nested_str_weak(command),
+ /* K5 */ be_nested_str_weak(status),
+ /* K6 */ be_nested_str_weak(log),
+ /* K7 */ be_nested_str_weak(msg),
+ /* K8 */ be_nested_str_weak(),
+ /* K9 */ be_nested_str_weak(_X5B_X2502X_X5D),
+ /* K10 */ be_nested_str_weak(_X5B_X2A_X2A_X5D),
+ /* K11 */ be_nested_str_weak(_X2504X_X2F),
+ /* K12 */ be_nested_str_weak(_X2A_X2A_X2A_X2A_X2F),
+ /* K13 */ be_nested_str_weak(_X2504X),
+ /* K14 */ be_nested_str_weak(_X21),
+ /* K15 */ be_nested_str_weak(_X2A_X2A_X2A_X2A),
+ /* K16 */ be_nested_str_weak(Exception_X3E_X20),
+ /* K17 */ be_nested_str_weak(_X2C_X20),
+ /* K18 */ be_nested_str_weak(reset),
+};
+
extern const bclass be_class_Matter_Path;
-/********************************************************************
-** Solidified function: tostring
-********************************************************************/
-extern const bclass be_class_Matter_Path;
-be_local_closure(class_Matter_Path_tostring, /* name */
- be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Path,
- 1, /* has constants */
- ( &(const bvalue[15]) { /* constants */
- /* K0 */ be_nested_str_weak(),
- /* K1 */ be_nested_str_weak(endpoint),
- /* K2 */ be_nested_str_weak(_X5B_X2502X_X5D),
- /* K3 */ be_nested_str_weak(_X5B_X2A_X2A_X5D),
- /* K4 */ be_nested_str_weak(cluster),
- /* K5 */ be_nested_str_weak(_X2504X_X2F),
- /* K6 */ be_nested_str_weak(_X2A_X2A_X2A_X2A_X2F),
- /* K7 */ be_nested_str_weak(attribute),
- /* K8 */ be_nested_str_weak(_X2504X),
- /* K9 */ be_nested_str_weak(command),
- /* K10 */ be_nested_str_weak(fabric_filtered),
- /* K11 */ be_nested_str_weak(_X21),
- /* K12 */ be_nested_str_weak(_X2A_X2A_X2A_X2A),
- /* K13 */ be_nested_str_weak(Exception_X3E_X20),
- /* K14 */ be_nested_str_weak(_X2C_X20),
- }),
- be_str_weak(tostring),
- &be_const_str_solidified,
- ( &(const binstruction[77]) { /* code */
- 0xA802003C, // 0000 EXBLK 0 #003E
- 0x58040000, // 0001 LDCONST R1 K0
- 0x88080101, // 0002 GETMBR R2 R0 K1
- 0x4C0C0000, // 0003 LDNIL R3
- 0x20080403, // 0004 NE R2 R2 R3
- 0x780A0004, // 0005 JMPF R2 #000B
- 0x60080018, // 0006 GETGBL R2 G24
- 0x580C0002, // 0007 LDCONST R3 K2
- 0x88100101, // 0008 GETMBR R4 R0 K1
- 0x7C080400, // 0009 CALL R2 2
- 0x70020000, // 000A JMP #000C
- 0x58080003, // 000B LDCONST R2 K3
- 0x00040202, // 000C ADD R1 R1 R2
- 0x88080104, // 000D GETMBR R2 R0 K4
- 0x4C0C0000, // 000E LDNIL R3
- 0x20080403, // 000F NE R2 R2 R3
- 0x780A0004, // 0010 JMPF R2 #0016
- 0x60080018, // 0011 GETGBL R2 G24
- 0x580C0005, // 0012 LDCONST R3 K5
- 0x88100104, // 0013 GETMBR R4 R0 K4
- 0x7C080400, // 0014 CALL R2 2
- 0x70020000, // 0015 JMP #0017
- 0x58080006, // 0016 LDCONST R2 K6
- 0x00040202, // 0017 ADD R1 R1 R2
- 0x88080107, // 0018 GETMBR R2 R0 K7
- 0x4C0C0000, // 0019 LDNIL R3
- 0x20080403, // 001A NE R2 R2 R3
- 0x780A0004, // 001B JMPF R2 #0021
- 0x60080018, // 001C GETGBL R2 G24
- 0x580C0008, // 001D LDCONST R3 K8
- 0x88100107, // 001E GETMBR R4 R0 K7
- 0x7C080400, // 001F CALL R2 2
- 0x70020000, // 0020 JMP #0022
- 0x58080000, // 0021 LDCONST R2 K0
- 0x00040202, // 0022 ADD R1 R1 R2
- 0x88080109, // 0023 GETMBR R2 R0 K9
- 0x4C0C0000, // 0024 LDNIL R3
- 0x20080403, // 0025 NE R2 R2 R3
- 0x780A0004, // 0026 JMPF R2 #002C
- 0x60080018, // 0027 GETGBL R2 G24
- 0x580C0008, // 0028 LDCONST R3 K8
- 0x88100109, // 0029 GETMBR R4 R0 K9
- 0x7C080400, // 002A CALL R2 2
- 0x70020000, // 002B JMP #002D
- 0x58080000, // 002C LDCONST R2 K0
- 0x00040202, // 002D ADD R1 R1 R2
- 0x8808010A, // 002E GETMBR R2 R0 K10
- 0x780A0000, // 002F JMPF R2 #0031
- 0x0004030B, // 0030 ADD R1 R1 K11
- 0x88080107, // 0031 GETMBR R2 R0 K7
- 0x4C0C0000, // 0032 LDNIL R3
- 0x1C080403, // 0033 EQ R2 R2 R3
- 0x780A0004, // 0034 JMPF R2 #003A
- 0x88080109, // 0035 GETMBR R2 R0 K9
- 0x4C0C0000, // 0036 LDNIL R3
- 0x1C080403, // 0037 EQ R2 R2 R3
- 0x780A0000, // 0038 JMPF R2 #003A
- 0x0004030C, // 0039 ADD R1 R1 K12
- 0xA8040001, // 003A EXBLK 1 1
- 0x80040200, // 003B RET 1 R1
- 0xA8040001, // 003C EXBLK 1 1
- 0x7002000D, // 003D JMP #004C
- 0xAC040002, // 003E CATCH R1 0 2
- 0x7002000A, // 003F JMP #004B
- 0x600C0008, // 0040 GETGBL R3 G8
- 0x5C100200, // 0041 MOVE R4 R1
- 0x7C0C0200, // 0042 CALL R3 1
- 0x000E1A03, // 0043 ADD R3 K13 R3
- 0x000C070E, // 0044 ADD R3 R3 K14
- 0x60100008, // 0045 GETGBL R4 G8
- 0x5C140400, // 0046 MOVE R5 R2
- 0x7C100200, // 0047 CALL R4 1
- 0x000C0604, // 0048 ADD R3 R3 R4
- 0x80040600, // 0049 RET 1 R3
- 0x70020000, // 004A JMP #004C
- 0xB0080000, // 004B RAISE 2 R0 R0
- 0x80000000, // 004C RET 0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: reset
********************************************************************/
-extern const bclass be_class_Matter_Path;
be_local_closure(class_Matter_Path_reset, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Path,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(endpoint),
- /* K1 */ be_nested_str_weak(cluster),
- /* K2 */ be_nested_str_weak(attribute),
- /* K3 */ be_nested_str_weak(fabric_filtered),
- /* K4 */ be_nested_str_weak(command),
- /* K5 */ be_nested_str_weak(status),
- /* K6 */ be_nested_str_weak(log),
- /* K7 */ be_nested_str_weak(msg),
- }),
+ &be_ktab_class_Matter_Path, /* shared constants */
be_str_weak(reset),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
@@ -166,24 +62,185 @@ be_local_closure(class_Matter_Path_reset, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_Path_init, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Path, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90020202, // 0001 SETMBR R0 K1 R2
+ 0x90020403, // 0002 SETMBR R0 K2 R3
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: tostring
+********************************************************************/
+be_local_closure(class_Matter_Path_tostring, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Path, /* shared constants */
+ be_str_weak(tostring),
+ &be_const_str_solidified,
+ ( &(const binstruction[77]) { /* code */
+ 0xA802003C, // 0000 EXBLK 0 #003E
+ 0x58040008, // 0001 LDCONST R1 K8
+ 0x88080100, // 0002 GETMBR R2 R0 K0
+ 0x4C0C0000, // 0003 LDNIL R3
+ 0x20080403, // 0004 NE R2 R2 R3
+ 0x780A0004, // 0005 JMPF R2 #000B
+ 0x60080018, // 0006 GETGBL R2 G24
+ 0x580C0009, // 0007 LDCONST R3 K9
+ 0x88100100, // 0008 GETMBR R4 R0 K0
+ 0x7C080400, // 0009 CALL R2 2
+ 0x70020000, // 000A JMP #000C
+ 0x5808000A, // 000B LDCONST R2 K10
+ 0x00040202, // 000C ADD R1 R1 R2
+ 0x88080101, // 000D GETMBR R2 R0 K1
+ 0x4C0C0000, // 000E LDNIL R3
+ 0x20080403, // 000F NE R2 R2 R3
+ 0x780A0004, // 0010 JMPF R2 #0016
+ 0x60080018, // 0011 GETGBL R2 G24
+ 0x580C000B, // 0012 LDCONST R3 K11
+ 0x88100101, // 0013 GETMBR R4 R0 K1
+ 0x7C080400, // 0014 CALL R2 2
+ 0x70020000, // 0015 JMP #0017
+ 0x5808000C, // 0016 LDCONST R2 K12
+ 0x00040202, // 0017 ADD R1 R1 R2
+ 0x88080102, // 0018 GETMBR R2 R0 K2
+ 0x4C0C0000, // 0019 LDNIL R3
+ 0x20080403, // 001A NE R2 R2 R3
+ 0x780A0004, // 001B JMPF R2 #0021
+ 0x60080018, // 001C GETGBL R2 G24
+ 0x580C000D, // 001D LDCONST R3 K13
+ 0x88100102, // 001E GETMBR R4 R0 K2
+ 0x7C080400, // 001F CALL R2 2
+ 0x70020000, // 0020 JMP #0022
+ 0x58080008, // 0021 LDCONST R2 K8
+ 0x00040202, // 0022 ADD R1 R1 R2
+ 0x88080104, // 0023 GETMBR R2 R0 K4
+ 0x4C0C0000, // 0024 LDNIL R3
+ 0x20080403, // 0025 NE R2 R2 R3
+ 0x780A0004, // 0026 JMPF R2 #002C
+ 0x60080018, // 0027 GETGBL R2 G24
+ 0x580C000D, // 0028 LDCONST R3 K13
+ 0x88100104, // 0029 GETMBR R4 R0 K4
+ 0x7C080400, // 002A CALL R2 2
+ 0x70020000, // 002B JMP #002D
+ 0x58080008, // 002C LDCONST R2 K8
+ 0x00040202, // 002D ADD R1 R1 R2
+ 0x88080103, // 002E GETMBR R2 R0 K3
+ 0x780A0000, // 002F JMPF R2 #0031
+ 0x0004030E, // 0030 ADD R1 R1 K14
+ 0x88080102, // 0031 GETMBR R2 R0 K2
+ 0x4C0C0000, // 0032 LDNIL R3
+ 0x1C080403, // 0033 EQ R2 R2 R3
+ 0x780A0004, // 0034 JMPF R2 #003A
+ 0x88080104, // 0035 GETMBR R2 R0 K4
+ 0x4C0C0000, // 0036 LDNIL R3
+ 0x1C080403, // 0037 EQ R2 R2 R3
+ 0x780A0000, // 0038 JMPF R2 #003A
+ 0x0004030F, // 0039 ADD R1 R1 K15
+ 0xA8040001, // 003A EXBLK 1 1
+ 0x80040200, // 003B RET 1 R1
+ 0xA8040001, // 003C EXBLK 1 1
+ 0x7002000D, // 003D JMP #004C
+ 0xAC040002, // 003E CATCH R1 0 2
+ 0x7002000A, // 003F JMP #004B
+ 0x600C0008, // 0040 GETGBL R3 G8
+ 0x5C100200, // 0041 MOVE R4 R1
+ 0x7C0C0200, // 0042 CALL R3 1
+ 0x000E2003, // 0043 ADD R3 K16 R3
+ 0x000C0711, // 0044 ADD R3 R3 K17
+ 0x60100008, // 0045 GETGBL R4 G8
+ 0x5C140400, // 0046 MOVE R5 R2
+ 0x7C100200, // 0047 CALL R4 1
+ 0x000C0604, // 0048 ADD R3 R3 R4
+ 0x80040600, // 0049 RET 1 R3
+ 0x70020000, // 004A JMP #004C
+ 0xB0080000, // 004B RAISE 2 R0 R0
+ 0x80000000, // 004C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: copy
+********************************************************************/
+be_local_closure(class_Matter_Path_copy, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Path, /* shared constants */
+ be_str_weak(copy),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x8C080112, // 0000 GETMET R2 R0 K18
+ 0x7C080200, // 0001 CALL R2 1
+ 0x88080300, // 0002 GETMBR R2 R1 K0
+ 0x90020002, // 0003 SETMBR R0 K0 R2
+ 0x88080301, // 0004 GETMBR R2 R1 K1
+ 0x90020202, // 0005 SETMBR R0 K1 R2
+ 0x88080302, // 0006 GETMBR R2 R1 K2
+ 0x90020402, // 0007 SETMBR R0 K2 R2
+ 0x80000000, // 0008 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified class: Matter_Path
********************************************************************/
be_local_class(Matter_Path,
8,
NULL,
- be_nested_map(10,
+ be_nested_map(12,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(attribute, -1), be_const_var(2) },
- { be_const_key_weak(log, 0), be_const_var(6) },
- { be_const_key_weak(fabric_filtered, 6), be_const_var(3) },
- { be_const_key_weak(command, -1), be_const_var(4) },
- { be_const_key_weak(msg, -1), be_const_var(7) },
- { be_const_key_weak(tostring, -1), be_const_closure(class_Matter_Path_tostring_closure) },
{ be_const_key_weak(reset, -1), be_const_closure(class_Matter_Path_reset_closure) },
- { be_const_key_weak(cluster, -1), be_const_var(1) },
- { be_const_key_weak(endpoint, 3), be_const_var(0) },
+ { be_const_key_weak(cluster, 5), be_const_var(1) },
+ { be_const_key_weak(fabric_filtered, 6), be_const_var(3) },
+ { be_const_key_weak(init, -1), be_const_closure(class_Matter_Path_init_closure) },
+ { be_const_key_weak(endpoint, -1), be_const_var(0) },
+ { be_const_key_weak(tostring, -1), be_const_closure(class_Matter_Path_tostring_closure) },
+ { be_const_key_weak(command, 10), be_const_var(4) },
{ be_const_key_weak(status, -1), be_const_var(5) },
+ { be_const_key_weak(copy, -1), be_const_closure(class_Matter_Path_copy_closure) },
+ { be_const_key_weak(log, -1), be_const_var(6) },
+ { be_const_key_weak(msg, -1), be_const_var(7) },
+ { be_const_key_weak(attribute, -1), be_const_var(2) },
})),
be_str_weak(Matter_Path)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_EventGenerator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_EventGenerator.h
new file mode 100644
index 000000000..2e26570f3
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_EventGenerator.h
@@ -0,0 +1,328 @@
+/* Solidification of Matter_Path_1_EventGenerator.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+// compact class 'Matter_EventGenerator' ktab size: 14, total: 26 (saved 96 bytes)
+static const bvalue be_ktab_class_Matter_EventGenerator[14] = {
+ /* K0 */ be_nested_str_weak(device),
+ /* K1 */ be_nested_str_weak(reset),
+ /* K2 */ be_nested_str_weak(path_in_endpoint),
+ /* K3 */ be_nested_str_weak(path_in_cluster),
+ /* K4 */ be_nested_str_weak(path_in_event),
+ /* K5 */ be_nested_str_weak(path_in_event_min),
+ /* K6 */ be_nested_str_weak(event_no),
+ /* K7 */ be_nested_str_weak(finished),
+ /* K8 */ be_nested_str_weak(endpoint),
+ /* K9 */ be_nested_str_weak(cluster),
+ /* K10 */ be_nested_str_weak(event_id),
+ /* K11 */ be_nested_str_weak(events),
+ /* K12 */ be_nested_str_weak(find_min_no),
+ /* K13 */ be_nested_str_weak(event_is_match),
+};
+
+
+extern const bclass be_class_Matter_EventGenerator;
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_EventGenerator_init, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventGenerator, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x80000000, // 0001 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_pi
+********************************************************************/
+be_local_closure(class_Matter_EventGenerator_get_pi, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventGenerator, /* shared constants */
+ be_str_weak(get_pi),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x4C040000, // 0000 LDNIL R1
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start
+********************************************************************/
+be_local_closure(class_Matter_EventGenerator_start, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 5, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventGenerator, /* shared constants */
+ be_str_weak(start),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x8C140101, // 0000 GETMET R5 R0 K1
+ 0x7C140200, // 0001 CALL R5 1
+ 0x90020401, // 0002 SETMBR R0 K2 R1
+ 0x90020602, // 0003 SETMBR R0 K3 R2
+ 0x90020803, // 0004 SETMBR R0 K4 R3
+ 0x90020A04, // 0005 SETMBR R0 K5 R4
+ 0x90020C04, // 0006 SETMBR R0 K6 R4
+ 0x50140000, // 0007 LDBOOL R5 0 0
+ 0x90020E05, // 0008 SETMBR R0 K7 R5
+ 0x80000000, // 0009 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: reset
+********************************************************************/
+be_local_closure(class_Matter_EventGenerator_reset, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventGenerator, /* shared constants */
+ be_str_weak(reset),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x4C040000, // 0000 LDNIL R1
+ 0x90020C01, // 0001 SETMBR R0 K6 R1
+ 0x50080200, // 0002 LDBOOL R2 1 0
+ 0x90020E02, // 0003 SETMBR R0 K7 R2
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: is_finished
+********************************************************************/
+be_local_closure(class_Matter_EventGenerator_is_finished, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventGenerator, /* shared constants */
+ be_str_weak(is_finished),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040107, // 0000 GETMBR R1 R0 K7
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: event_is_match
+********************************************************************/
+be_local_closure(class_Matter_EventGenerator_event_is_match, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventGenerator, /* shared constants */
+ be_str_weak(event_is_match),
+ &be_const_str_solidified,
+ ( &(const binstruction[38]) { /* code */
+ 0x50080200, // 0000 LDBOOL R2 1 0
+ 0x880C0102, // 0001 GETMBR R3 R0 K2
+ 0x4C100000, // 0002 LDNIL R4
+ 0x200C0604, // 0003 NE R3 R3 R4
+ 0x780E0007, // 0004 JMPF R3 #000D
+ 0x780A0003, // 0005 JMPF R2 #000A
+ 0x880C0102, // 0006 GETMBR R3 R0 K2
+ 0x88100308, // 0007 GETMBR R4 R1 K8
+ 0x1C0C0604, // 0008 EQ R3 R3 R4
+ 0x740E0000, // 0009 JMPT R3 #000B
+ 0x500C0001, // 000A LDBOOL R3 0 1
+ 0x500C0200, // 000B LDBOOL R3 1 0
+ 0x5C080600, // 000C MOVE R2 R3
+ 0x880C0103, // 000D GETMBR R3 R0 K3
+ 0x4C100000, // 000E LDNIL R4
+ 0x200C0604, // 000F NE R3 R3 R4
+ 0x780E0007, // 0010 JMPF R3 #0019
+ 0x780A0003, // 0011 JMPF R2 #0016
+ 0x880C0103, // 0012 GETMBR R3 R0 K3
+ 0x88100309, // 0013 GETMBR R4 R1 K9
+ 0x1C0C0604, // 0014 EQ R3 R3 R4
+ 0x740E0000, // 0015 JMPT R3 #0017
+ 0x500C0001, // 0016 LDBOOL R3 0 1
+ 0x500C0200, // 0017 LDBOOL R3 1 0
+ 0x5C080600, // 0018 MOVE R2 R3
+ 0x880C0104, // 0019 GETMBR R3 R0 K4
+ 0x4C100000, // 001A LDNIL R4
+ 0x200C0604, // 001B NE R3 R3 R4
+ 0x780E0007, // 001C JMPF R3 #0025
+ 0x780A0003, // 001D JMPF R2 #0022
+ 0x880C0104, // 001E GETMBR R3 R0 K4
+ 0x8810030A, // 001F GETMBR R4 R1 K10
+ 0x1C0C0604, // 0020 EQ R3 R3 R4
+ 0x740E0000, // 0021 JMPT R3 #0023
+ 0x500C0001, // 0022 LDBOOL R3 0 1
+ 0x500C0200, // 0023 LDBOOL R3 1 0
+ 0x5C080600, // 0024 MOVE R2 R3
+ 0x80040400, // 0025 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: next_event
+********************************************************************/
+be_local_closure(class_Matter_EventGenerator_next_event, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventGenerator, /* shared constants */
+ be_str_weak(next_event),
+ &be_const_str_solidified,
+ ( &(const binstruction[27]) { /* code */
+ 0x88040107, // 0000 GETMBR R1 R0 K7
+ 0x78060001, // 0001 JMPF R1 #0004
+ 0x4C040000, // 0002 LDNIL R1
+ 0x80040200, // 0003 RET 1 R1
+ 0x50040200, // 0004 LDBOOL R1 1 0
+ 0x78060013, // 0005 JMPF R1 #001A
+ 0x88040100, // 0006 GETMBR R1 R0 K0
+ 0x8804030B, // 0007 GETMBR R1 R1 K11
+ 0x8C04030C, // 0008 GETMET R1 R1 K12
+ 0x880C0106, // 0009 GETMBR R3 R0 K6
+ 0x7C040400, // 000A CALL R1 2
+ 0x4C080000, // 000B LDNIL R2
+ 0x1C080202, // 000C EQ R2 R1 R2
+ 0x780A0003, // 000D JMPF R2 #0012
+ 0x8C080101, // 000E GETMET R2 R0 K1
+ 0x7C080200, // 000F CALL R2 1
+ 0x4C080000, // 0010 LDNIL R2
+ 0x80040400, // 0011 RET 1 R2
+ 0x88080306, // 0012 GETMBR R2 R1 K6
+ 0x90020C02, // 0013 SETMBR R0 K6 R2
+ 0x8C08010D, // 0014 GETMET R2 R0 K13
+ 0x5C100200, // 0015 MOVE R4 R1
+ 0x7C080400, // 0016 CALL R2 2
+ 0x780A0000, // 0017 JMPF R2 #0019
+ 0x80040200, // 0018 RET 1 R1
+ 0x7001FFE9, // 0019 JMP #0004
+ 0x80000000, // 001A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: restart_from
+********************************************************************/
+be_local_closure(class_Matter_EventGenerator_restart_from, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_EventGenerator, /* shared constants */
+ be_str_weak(restart_from),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x50080000, // 0000 LDBOOL R2 0 0
+ 0x90020E02, // 0001 SETMBR R0 K7 R2
+ 0x90020C01, // 0002 SETMBR R0 K6 R1
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_EventGenerator
+********************************************************************/
+be_local_class(Matter_EventGenerator,
+ 7,
+ NULL,
+ be_nested_map(15,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(init, -1), be_const_closure(class_Matter_EventGenerator_init_closure) },
+ { be_const_key_weak(path_in_endpoint, -1), be_const_var(1) },
+ { be_const_key_weak(get_pi, -1), be_const_closure(class_Matter_EventGenerator_get_pi_closure) },
+ { be_const_key_weak(path_in_event, -1), be_const_var(3) },
+ { be_const_key_weak(finished, -1), be_const_var(6) },
+ { be_const_key_weak(path_in_event_min, -1), be_const_var(4) },
+ { be_const_key_weak(device, -1), be_const_var(0) },
+ { be_const_key_weak(event_no, 9), be_const_var(5) },
+ { be_const_key_weak(is_finished, -1), be_const_closure(class_Matter_EventGenerator_is_finished_closure) },
+ { be_const_key_weak(restart_from, 5), be_const_closure(class_Matter_EventGenerator_restart_from_closure) },
+ { be_const_key_weak(event_is_match, -1), be_const_closure(class_Matter_EventGenerator_event_is_match_closure) },
+ { be_const_key_weak(start, 13), be_const_closure(class_Matter_EventGenerator_start_closure) },
+ { be_const_key_weak(reset, 7), be_const_closure(class_Matter_EventGenerator_reset_closure) },
+ { be_const_key_weak(next_event, -1), be_const_closure(class_Matter_EventGenerator_next_event_closure) },
+ { be_const_key_weak(path_in_cluster, -1), be_const_var(2) },
+ })),
+ be_str_weak(Matter_EventGenerator)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_Generator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_Generator.h
deleted file mode 100644
index 1d20a695e..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_Generator.h
+++ /dev/null
@@ -1,536 +0,0 @@
-/* Solidification of Matter_Path_1_Generator.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_PathGenerator;
-
-/********************************************************************
-** Solidified function: next
-********************************************************************/
-extern const bclass be_class_Matter_PathGenerator;
-be_local_closure(class_Matter_PathGenerator_next, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_PathGenerator,
- 1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(path_in),
- /* K1 */ be_nested_str_weak(pi),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(_next_endpoint),
- /* K4 */ be_nested_str_weak(endpoint_found),
- /* K5 */ be_nested_str_weak(attribute),
- /* K6 */ be_nested_str_weak(_next_cluster),
- /* K7 */ be_nested_str_weak(cluster_found),
- /* K8 */ be_nested_str_weak(_next_attribute),
- /* K9 */ be_nested_str_weak(attribute_found),
- /* K10 */ be_nested_str_weak(path_concrete),
- /* K11 */ be_nested_str_weak(reset),
- /* K12 */ be_nested_str_weak(endpoint),
- /* K13 */ be_nested_str_weak(get_endpoint),
- }),
- be_str_weak(next),
- &be_const_str_solidified,
- ( &(const binstruction[62]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x4C080000, // 0001 LDNIL R2
- 0x1C040202, // 0002 EQ R1 R1 R2
- 0x78060001, // 0003 JMPF R1 #0006
- 0x4C040000, // 0004 LDNIL R1
- 0x80040200, // 0005 RET 1 R1
- 0x88040101, // 0006 GETMBR R1 R0 K1
- 0x50080000, // 0007 LDBOOL R2 0 0
- 0x20040202, // 0008 NE R1 R1 R2
- 0x7806002F, // 0009 JMPF R1 #003A
- 0x88040101, // 000A GETMBR R1 R0 K1
- 0x4C080000, // 000B LDNIL R2
- 0x1C040202, // 000C EQ R1 R1 R2
- 0x74060003, // 000D JMPT R1 #0012
- 0x88040102, // 000E GETMBR R1 R0 K2
- 0x50080000, // 000F LDBOOL R2 0 0
- 0x1C040202, // 0010 EQ R1 R1 R2
- 0x78060002, // 0011 JMPF R1 #0015
- 0x8C040103, // 0012 GETMET R1 R0 K3
- 0x7C040200, // 0013 CALL R1 1
- 0x7001FFF0, // 0014 JMP #0006
- 0x50040200, // 0015 LDBOOL R1 1 0
- 0x90020801, // 0016 SETMBR R0 K4 R1
- 0x88040102, // 0017 GETMBR R1 R0 K2
- 0x4C080000, // 0018 LDNIL R2
- 0x1C040202, // 0019 EQ R1 R1 R2
- 0x74060003, // 001A JMPT R1 #001F
- 0x88040105, // 001B GETMBR R1 R0 K5
- 0x50080000, // 001C LDBOOL R2 0 0
- 0x1C040202, // 001D EQ R1 R1 R2
- 0x78060002, // 001E JMPF R1 #0022
- 0x8C040106, // 001F GETMET R1 R0 K6
- 0x7C040200, // 0020 CALL R1 1
- 0x7001FFE3, // 0021 JMP #0006
- 0x50040200, // 0022 LDBOOL R1 1 0
- 0x90020E01, // 0023 SETMBR R0 K7 R1
- 0x8C040108, // 0024 GETMET R1 R0 K8
- 0x7C040200, // 0025 CALL R1 1
- 0x88040105, // 0026 GETMBR R1 R0 K5
- 0x50080000, // 0027 LDBOOL R2 0 0
- 0x1C040202, // 0028 EQ R1 R1 R2
- 0x78060000, // 0029 JMPF R1 #002B
- 0x7001FFDA, // 002A JMP #0006
- 0x50040200, // 002B LDBOOL R1 1 0
- 0x90021201, // 002C SETMBR R0 K9 R1
- 0x8804010A, // 002D GETMBR R1 R0 K10
- 0x8C08030B, // 002E GETMET R2 R1 K11
- 0x7C080200, // 002F CALL R2 1
- 0x88080101, // 0030 GETMBR R2 R0 K1
- 0x8C08050D, // 0031 GETMET R2 R2 K13
- 0x7C080200, // 0032 CALL R2 1
- 0x90061802, // 0033 SETMBR R1 K12 R2
- 0x88080102, // 0034 GETMBR R2 R0 K2
- 0x90060402, // 0035 SETMBR R1 K2 R2
- 0x88080105, // 0036 GETMBR R2 R0 K5
- 0x90060A02, // 0037 SETMBR R1 K5 R2
- 0x80040200, // 0038 RET 1 R1
- 0x7001FFCB, // 0039 JMP #0006
- 0x8C04010B, // 003A GETMET R1 R0 K11
- 0x7C040200, // 003B CALL R1 1
- 0x4C040000, // 003C LDNIL R1
- 0x80040200, // 003D RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: _next_cluster
-********************************************************************/
-extern const bclass be_class_Matter_PathGenerator;
-be_local_closure(class_Matter_PathGenerator__next_cluster, /* name */
- be_nested_proto(
- 7, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_PathGenerator,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(cluster),
- /* K1 */ be_nested_str_weak(clusters),
- /* K2 */ be_nested_str_weak(path_in),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_nested_str_weak(find),
- /* K5 */ be_const_int(1),
- }),
- be_str_weak(_next_cluster),
- &be_const_str_solidified,
- ( &(const binstruction[45]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x50080000, // 0001 LDBOOL R2 0 0
- 0x1C040202, // 0002 EQ R1 R1 R2
- 0x78060001, // 0003 JMPF R1 #0006
- 0x50040000, // 0004 LDBOOL R1 0 0
- 0x80040200, // 0005 RET 1 R1
- 0x88040101, // 0006 GETMBR R1 R0 K1
- 0x88080102, // 0007 GETMBR R2 R0 K2
- 0x88080500, // 0008 GETMBR R2 R2 K0
- 0x4C0C0000, // 0009 LDNIL R3
- 0x90020603, // 000A SETMBR R0 K3 R3
- 0x540DFFFE, // 000B LDINT R3 -1
- 0x88100100, // 000C GETMBR R4 R0 K0
- 0x4C140000, // 000D LDNIL R5
- 0x20100805, // 000E NE R4 R4 R5
- 0x78120003, // 000F JMPF R4 #0014
- 0x8C100304, // 0010 GETMET R4 R1 K4
- 0x88180100, // 0011 GETMBR R6 R0 K0
- 0x7C100400, // 0012 CALL R4 2
- 0x5C0C0800, // 0013 MOVE R3 R4
- 0x4C100000, // 0014 LDNIL R4
- 0x20100604, // 0015 NE R4 R3 R4
- 0x78120011, // 0016 JMPF R4 #0029
- 0x00100705, // 0017 ADD R4 R3 K5
- 0x6014000C, // 0018 GETGBL R5 G12
- 0x5C180200, // 0019 MOVE R6 R1
- 0x7C140200, // 001A CALL R5 1
- 0x14100805, // 001B LT R4 R4 R5
- 0x7812000B, // 001C JMPF R4 #0029
- 0x000C0705, // 001D ADD R3 R3 K5
- 0x94100203, // 001E GETIDX R4 R1 R3
- 0x90020004, // 001F SETMBR R0 K0 R4
- 0x4C100000, // 0020 LDNIL R4
- 0x1C100404, // 0021 EQ R4 R2 R4
- 0x74120002, // 0022 JMPT R4 #0026
- 0x88100100, // 0023 GETMBR R4 R0 K0
- 0x1C100404, // 0024 EQ R4 R2 R4
- 0x78120001, // 0025 JMPF R4 #0028
- 0x88100100, // 0026 GETMBR R4 R0 K0
- 0x80040800, // 0027 RET 1 R4
- 0x7001FFED, // 0028 JMP #0017
- 0x50100000, // 0029 LDBOOL R4 0 0
- 0x90020004, // 002A SETMBR R0 K0 R4
- 0x50100000, // 002B LDBOOL R4 0 0
- 0x80040800, // 002C RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start
-********************************************************************/
-extern const bclass be_class_Matter_PathGenerator;
-be_local_closure(class_Matter_PathGenerator_start, /* name */
- be_nested_proto(
- 5, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_PathGenerator,
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(path_concrete),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(Path),
- /* K3 */ be_nested_str_weak(reset),
- /* K4 */ be_nested_str_weak(path_in),
- /* K5 */ be_nested_str_weak(session),
- /* K6 */ be_nested_str_weak(endpoint_found),
- /* K7 */ be_nested_str_weak(cluster_found),
- /* K8 */ be_nested_str_weak(attribute_found),
- }),
- be_str_weak(start),
- &be_const_str_solidified,
- ( &(const binstruction[15]) { /* code */
- 0xB80E0200, // 0000 GETNGBL R3 K1
- 0x8C0C0702, // 0001 GETMET R3 R3 K2
- 0x7C0C0200, // 0002 CALL R3 1
- 0x90020003, // 0003 SETMBR R0 K0 R3
- 0x8C0C0103, // 0004 GETMET R3 R0 K3
- 0x7C0C0200, // 0005 CALL R3 1
- 0x90020801, // 0006 SETMBR R0 K4 R1
- 0x90020A02, // 0007 SETMBR R0 K5 R2
- 0x500C0000, // 0008 LDBOOL R3 0 0
- 0x90020C03, // 0009 SETMBR R0 K6 R3
- 0x500C0000, // 000A LDBOOL R3 0 0
- 0x90020E03, // 000B SETMBR R0 K7 R3
- 0x500C0000, // 000C LDBOOL R3 0 0
- 0x90021003, // 000D SETMBR R0 K8 R3
- 0x80000000, // 000E RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_pi
-********************************************************************/
-extern const bclass be_class_Matter_PathGenerator;
-be_local_closure(class_Matter_PathGenerator_get_pi, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_PathGenerator,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(pi),
- }),
- be_str_weak(get_pi),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_PathGenerator;
-be_local_closure(class_Matter_PathGenerator_init, /* name */
- be_nested_proto(
- 2, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_PathGenerator,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(device),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x80000000, // 0001 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: reset
-********************************************************************/
-extern const bclass be_class_Matter_PathGenerator;
-be_local_closure(class_Matter_PathGenerator_reset, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_PathGenerator,
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(path_in),
- /* K1 */ be_nested_str_weak(session),
- /* K2 */ be_nested_str_weak(path_concrete),
- /* K3 */ be_nested_str_weak(reset),
- /* K4 */ be_nested_str_weak(pi),
- /* K5 */ be_nested_str_weak(cluster),
- /* K6 */ be_nested_str_weak(attribute),
- /* K7 */ be_nested_str_weak(clusters),
- }),
- be_str_weak(reset),
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x4C040000, // 0000 LDNIL R1
- 0x90020001, // 0001 SETMBR R0 K0 R1
- 0x90020201, // 0002 SETMBR R0 K1 R1
- 0x88080102, // 0003 GETMBR R2 R0 K2
- 0x8C080503, // 0004 GETMET R2 R2 K3
- 0x7C080200, // 0005 CALL R2 1
- 0x90020801, // 0006 SETMBR R0 K4 R1
- 0x90020A01, // 0007 SETMBR R0 K5 R1
- 0x90020C01, // 0008 SETMBR R0 K6 R1
- 0x90020E01, // 0009 SETMBR R0 K7 R1
- 0x90020E01, // 000A SETMBR R0 K7 R1
- 0x80000000, // 000B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: _next_endpoint
-********************************************************************/
-extern const bclass be_class_Matter_PathGenerator;
-be_local_closure(class_Matter_PathGenerator__next_endpoint, /* name */
- be_nested_proto(
- 7, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_PathGenerator,
- 1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(pi),
- /* K1 */ be_nested_str_weak(device),
- /* K2 */ be_nested_str_weak(plugins),
- /* K3 */ be_nested_str_weak(path_in),
- /* K4 */ be_nested_str_weak(endpoint),
- /* K5 */ be_nested_str_weak(cluster),
- /* K6 */ be_nested_str_weak(attribute),
- /* K7 */ be_nested_str_weak(find),
- /* K8 */ be_const_int(1),
- /* K9 */ be_nested_str_weak(get_endpoint),
- /* K10 */ be_nested_str_weak(clusters),
- /* K11 */ be_nested_str_weak(get_cluster_list_sorted),
- }),
- be_str_weak(_next_endpoint),
- &be_const_str_solidified,
- ( &(const binstruction[54]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x50080000, // 0001 LDBOOL R2 0 0
- 0x1C040202, // 0002 EQ R1 R1 R2
- 0x78060001, // 0003 JMPF R1 #0006
- 0x50040000, // 0004 LDBOOL R1 0 0
- 0x80040200, // 0005 RET 1 R1
- 0x88040101, // 0006 GETMBR R1 R0 K1
- 0x88040302, // 0007 GETMBR R1 R1 K2
- 0x88080103, // 0008 GETMBR R2 R0 K3
- 0x88080504, // 0009 GETMBR R2 R2 K4
- 0x4C0C0000, // 000A LDNIL R3
- 0x90020A03, // 000B SETMBR R0 K5 R3
- 0x4C0C0000, // 000C LDNIL R3
- 0x90020C03, // 000D SETMBR R0 K6 R3
- 0x540DFFFE, // 000E LDINT R3 -1
- 0x88100100, // 000F GETMBR R4 R0 K0
- 0x4C140000, // 0010 LDNIL R5
- 0x20100805, // 0011 NE R4 R4 R5
- 0x78120003, // 0012 JMPF R4 #0017
- 0x8C100307, // 0013 GETMET R4 R1 K7
- 0x88180100, // 0014 GETMBR R6 R0 K0
- 0x7C100400, // 0015 CALL R4 2
- 0x5C0C0800, // 0016 MOVE R3 R4
- 0x4C100000, // 0017 LDNIL R4
- 0x20100604, // 0018 NE R4 R3 R4
- 0x78120017, // 0019 JMPF R4 #0032
- 0x00100708, // 001A ADD R4 R3 K8
- 0x6014000C, // 001B GETGBL R5 G12
- 0x5C180200, // 001C MOVE R6 R1
- 0x7C140200, // 001D CALL R5 1
- 0x14100805, // 001E LT R4 R4 R5
- 0x78120011, // 001F JMPF R4 #0032
- 0x000C0708, // 0020 ADD R3 R3 K8
- 0x94100203, // 0021 GETIDX R4 R1 R3
- 0x90020004, // 0022 SETMBR R0 K0 R4
- 0x4C100000, // 0023 LDNIL R4
- 0x1C100404, // 0024 EQ R4 R2 R4
- 0x74120004, // 0025 JMPT R4 #002B
- 0x88100100, // 0026 GETMBR R4 R0 K0
- 0x8C100909, // 0027 GETMET R4 R4 K9
- 0x7C100200, // 0028 CALL R4 1
- 0x1C100404, // 0029 EQ R4 R2 R4
- 0x78120005, // 002A JMPF R4 #0031
- 0x88100100, // 002B GETMBR R4 R0 K0
- 0x8C10090B, // 002C GETMET R4 R4 K11
- 0x7C100200, // 002D CALL R4 1
- 0x90021404, // 002E SETMBR R0 K10 R4
- 0x88100100, // 002F GETMBR R4 R0 K0
- 0x80040800, // 0030 RET 1 R4
- 0x7001FFE7, // 0031 JMP #001A
- 0x50100000, // 0032 LDBOOL R4 0 0
- 0x90020004, // 0033 SETMBR R0 K0 R4
- 0x50100000, // 0034 LDBOOL R4 0 0
- 0x80040800, // 0035 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: _next_attribute
-********************************************************************/
-extern const bclass be_class_Matter_PathGenerator;
-be_local_closure(class_Matter_PathGenerator__next_attribute, /* name */
- be_nested_proto(
- 7, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_PathGenerator,
- 1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(attribute),
- /* K1 */ be_nested_str_weak(pi),
- /* K2 */ be_nested_str_weak(get_attribute_list),
- /* K3 */ be_nested_str_weak(cluster),
- /* K4 */ be_nested_str_weak(path_in),
- /* K5 */ be_nested_str_weak(find),
- /* K6 */ be_const_int(1),
- }),
- be_str_weak(_next_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[46]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x50080000, // 0001 LDBOOL R2 0 0
- 0x1C040202, // 0002 EQ R1 R1 R2
- 0x78060001, // 0003 JMPF R1 #0006
- 0x50040000, // 0004 LDBOOL R1 0 0
- 0x80040200, // 0005 RET 1 R1
- 0x88040101, // 0006 GETMBR R1 R0 K1
- 0x8C040302, // 0007 GETMET R1 R1 K2
- 0x880C0103, // 0008 GETMBR R3 R0 K3
- 0x7C040400, // 0009 CALL R1 2
- 0x88080104, // 000A GETMBR R2 R0 K4
- 0x88080500, // 000B GETMBR R2 R2 K0
- 0x540DFFFE, // 000C LDINT R3 -1
- 0x88100100, // 000D GETMBR R4 R0 K0
- 0x4C140000, // 000E LDNIL R5
- 0x20100805, // 000F NE R4 R4 R5
- 0x78120003, // 0010 JMPF R4 #0015
- 0x8C100305, // 0011 GETMET R4 R1 K5
- 0x88180100, // 0012 GETMBR R6 R0 K0
- 0x7C100400, // 0013 CALL R4 2
- 0x5C0C0800, // 0014 MOVE R3 R4
- 0x4C100000, // 0015 LDNIL R4
- 0x20100604, // 0016 NE R4 R3 R4
- 0x78120011, // 0017 JMPF R4 #002A
- 0x00100706, // 0018 ADD R4 R3 K6
- 0x6014000C, // 0019 GETGBL R5 G12
- 0x5C180200, // 001A MOVE R6 R1
- 0x7C140200, // 001B CALL R5 1
- 0x14100805, // 001C LT R4 R4 R5
- 0x7812000B, // 001D JMPF R4 #002A
- 0x000C0706, // 001E ADD R3 R3 K6
- 0x94100203, // 001F GETIDX R4 R1 R3
- 0x90020004, // 0020 SETMBR R0 K0 R4
- 0x4C100000, // 0021 LDNIL R4
- 0x1C100404, // 0022 EQ R4 R2 R4
- 0x74120002, // 0023 JMPT R4 #0027
- 0x88100100, // 0024 GETMBR R4 R0 K0
- 0x1C100404, // 0025 EQ R4 R2 R4
- 0x78120001, // 0026 JMPF R4 #0029
- 0x88100100, // 0027 GETMBR R4 R0 K0
- 0x80040800, // 0028 RET 1 R4
- 0x7001FFED, // 0029 JMP #0018
- 0x50100000, // 002A LDBOOL R4 0 0
- 0x90020004, // 002B SETMBR R0 K0 R4
- 0x50100000, // 002C LDBOOL R4 0 0
- 0x80040800, // 002D RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_PathGenerator
-********************************************************************/
-be_local_class(Matter_PathGenerator,
- 11,
- NULL,
- be_nested_map(19,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(_next_cluster, -1), be_const_closure(class_Matter_PathGenerator__next_cluster_closure) },
- { be_const_key_weak(_next_endpoint, -1), be_const_closure(class_Matter_PathGenerator__next_endpoint_closure) },
- { be_const_key_weak(endpoint_found, 0), be_const_var(7) },
- { be_const_key_weak(start, -1), be_const_closure(class_Matter_PathGenerator_start_closure) },
- { be_const_key_weak(session, -1), be_const_var(2) },
- { be_const_key_weak(get_pi, 12), be_const_closure(class_Matter_PathGenerator_get_pi_closure) },
- { be_const_key_weak(pi, -1), be_const_var(3) },
- { be_const_key_weak(attribute, 10), be_const_var(5) },
- { be_const_key_weak(cluster_found, 14), be_const_var(8) },
- { be_const_key_weak(device, -1), be_const_var(0) },
- { be_const_key_weak(attribute_found, -1), be_const_var(9) },
- { be_const_key_weak(clusters, -1), be_const_var(6) },
- { be_const_key_weak(path_in, -1), be_const_var(1) },
- { be_const_key_weak(init, 11), be_const_closure(class_Matter_PathGenerator_init_closure) },
- { be_const_key_weak(path_concrete, -1), be_const_var(10) },
- { be_const_key_weak(next, 9), be_const_closure(class_Matter_PathGenerator_next_closure) },
- { be_const_key_weak(cluster, 4), be_const_var(4) },
- { be_const_key_weak(reset, 1), be_const_closure(class_Matter_PathGenerator_reset_closure) },
- { be_const_key_weak(_next_attribute, -1), be_const_closure(class_Matter_PathGenerator__next_attribute_closure) },
- })),
- be_str_weak(Matter_PathGenerator)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h
new file mode 100644
index 000000000..698ec5627
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Path_1_PathGenerator.h
@@ -0,0 +1,688 @@
+/* Solidification of Matter_Path_1_PathGenerator.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+// compact class 'Matter_PathGenerator' ktab size: 37, total: 80 (saved 344 bytes)
+static const bvalue be_ktab_class_Matter_PathGenerator[37] = {
+ /* K0 */ be_nested_str_weak(path_concrete),
+ /* K1 */ be_nested_str_weak(reset),
+ /* K2 */ be_nested_str_weak(pi),
+ /* K3 */ be_nested_str_weak(cluster),
+ /* K4 */ be_nested_str_weak(attribute),
+ /* K5 */ be_nested_str_weak(clusters),
+ /* K6 */ be_nested_str_weak(device),
+ /* K7 */ be_nested_str_weak(path_in_endpoint),
+ /* K8 */ be_nested_str_weak(path_in_cluster),
+ /* K9 */ be_nested_str_weak(path_in_attribute),
+ /* K10 */ be_nested_str_weak(is_direct),
+ /* K11 */ be_nested_str_weak(_next_endpoint),
+ /* K12 */ be_nested_str_weak(endpoint_found),
+ /* K13 */ be_nested_str_weak(_next_cluster),
+ /* K14 */ be_nested_str_weak(cluster_found),
+ /* K15 */ be_nested_str_weak(_next_attribute),
+ /* K16 */ be_nested_str_weak(attribute_found),
+ /* K17 */ be_nested_str_weak(endpoint),
+ /* K18 */ be_nested_str_weak(get_endpoint),
+ /* K19 */ be_nested_str_weak(fabric_filtered),
+ /* K20 */ be_nested_str_weak(path_in_fabric_filtered),
+ /* K21 */ be_nested_str_weak(status),
+ /* K22 */ be_nested_str_weak(_default_status_error),
+ /* K23 */ be_nested_str_weak(find),
+ /* K24 */ be_const_int(1),
+ /* K25 */ be_nested_str_weak(matter),
+ /* K26 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT),
+ /* K27 */ be_nested_str_weak(UNSUPPORTED_CLUSTER),
+ /* K28 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
+ /* K29 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE),
+ /* K30 */ be_nested_str_weak(get_attribute_list_bytes),
+ /* K31 */ be_const_int(2),
+ /* K32 */ be_const_int(0),
+ /* K33 */ be_nested_str_weak(get),
+ /* K34 */ be_nested_str_weak(plugins),
+ /* K35 */ be_nested_str_weak(get_cluster_list_sorted),
+ /* K36 */ be_nested_str_weak(Path),
+};
+
+
+extern const bclass be_class_Matter_PathGenerator;
+
+/********************************************************************
+** Solidified function: reset
+********************************************************************/
+be_local_closure(class_Matter_PathGenerator_reset, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_PathGenerator, /* shared constants */
+ be_str_weak(reset),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x4C040000, // 0000 LDNIL R1
+ 0x88080100, // 0001 GETMBR R2 R0 K0
+ 0x8C080501, // 0002 GETMET R2 R2 K1
+ 0x7C080200, // 0003 CALL R2 1
+ 0x50080000, // 0004 LDBOOL R2 0 0
+ 0x90020402, // 0005 SETMBR R0 K2 R2
+ 0x90020601, // 0006 SETMBR R0 K3 R1
+ 0x90020801, // 0007 SETMBR R0 K4 R1
+ 0x90020A01, // 0008 SETMBR R0 K5 R1
+ 0x80000000, // 0009 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_PathGenerator_init, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_PathGenerator, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x90020C01, // 0000 SETMBR R0 K6 R1
+ 0x80000000, // 0001 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: is_direct
+********************************************************************/
+be_local_closure(class_Matter_PathGenerator_is_direct, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_PathGenerator, /* shared constants */
+ be_str_weak(is_direct),
+ &be_const_str_solidified,
+ ( &(const binstruction[15]) { /* code */
+ 0x88040107, // 0000 GETMBR R1 R0 K7
+ 0x4C080000, // 0001 LDNIL R2
+ 0x20040202, // 0002 NE R1 R1 R2
+ 0x78060007, // 0003 JMPF R1 #000C
+ 0x88040108, // 0004 GETMBR R1 R0 K8
+ 0x4C080000, // 0005 LDNIL R2
+ 0x20040202, // 0006 NE R1 R1 R2
+ 0x78060003, // 0007 JMPF R1 #000C
+ 0x88040109, // 0008 GETMBR R1 R0 K9
+ 0x4C080000, // 0009 LDNIL R2
+ 0x20040202, // 000A NE R1 R1 R2
+ 0x74060000, // 000B JMPT R1 #000D
+ 0x50040001, // 000C LDBOOL R1 0 1
+ 0x50040200, // 000D LDBOOL R1 1 0
+ 0x80040200, // 000E RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: is_finished
+********************************************************************/
+be_local_closure(class_Matter_PathGenerator_is_finished, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_PathGenerator, /* shared constants */
+ be_str_weak(is_finished),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x88040102, // 0000 GETMBR R1 R0 K2
+ 0x50080000, // 0001 LDBOOL R2 0 0
+ 0x20040202, // 0002 NE R1 R1 R2
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: next_attribute
+********************************************************************/
+be_local_closure(class_Matter_PathGenerator_next_attribute, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_PathGenerator, /* shared constants */
+ be_str_weak(next_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[95]) { /* code */
+ 0x88040102, // 0000 GETMBR R1 R0 K2
+ 0x50080200, // 0001 LDBOOL R2 1 0
+ 0x1C040202, // 0002 EQ R1 R1 R2
+ 0x74060006, // 0003 JMPT R1 #000B
+ 0x88040102, // 0004 GETMBR R1 R0 K2
+ 0x4C080000, // 0005 LDNIL R2
+ 0x20040202, // 0006 NE R1 R1 R2
+ 0x78060006, // 0007 JMPF R1 #000F
+ 0x8C04010A, // 0008 GETMET R1 R0 K10
+ 0x7C040200, // 0009 CALL R1 1
+ 0x78060003, // 000A JMPF R1 #000F
+ 0x8C040101, // 000B GETMET R1 R0 K1
+ 0x7C040200, // 000C CALL R1 1
+ 0x4C040000, // 000D LDNIL R1
+ 0x80040200, // 000E RET 1 R1
+ 0x88040102, // 000F GETMBR R1 R0 K2
+ 0x50080000, // 0010 LDBOOL R2 0 0
+ 0x20040202, // 0011 NE R1 R1 R2
+ 0x78060033, // 0012 JMPF R1 #0047
+ 0x88040102, // 0013 GETMBR R1 R0 K2
+ 0x4C080000, // 0014 LDNIL R2
+ 0x1C040202, // 0015 EQ R1 R1 R2
+ 0x74060003, // 0016 JMPT R1 #001B
+ 0x88040103, // 0017 GETMBR R1 R0 K3
+ 0x50080000, // 0018 LDBOOL R2 0 0
+ 0x1C040202, // 0019 EQ R1 R1 R2
+ 0x78060002, // 001A JMPF R1 #001E
+ 0x8C04010B, // 001B GETMET R1 R0 K11
+ 0x7C040200, // 001C CALL R1 1
+ 0x7001FFF0, // 001D JMP #000F
+ 0x50040200, // 001E LDBOOL R1 1 0
+ 0x90021801, // 001F SETMBR R0 K12 R1
+ 0x88040103, // 0020 GETMBR R1 R0 K3
+ 0x4C080000, // 0021 LDNIL R2
+ 0x1C040202, // 0022 EQ R1 R1 R2
+ 0x74060003, // 0023 JMPT R1 #0028
+ 0x88040104, // 0024 GETMBR R1 R0 K4
+ 0x50080000, // 0025 LDBOOL R2 0 0
+ 0x1C040202, // 0026 EQ R1 R1 R2
+ 0x78060002, // 0027 JMPF R1 #002B
+ 0x8C04010D, // 0028 GETMET R1 R0 K13
+ 0x7C040200, // 0029 CALL R1 1
+ 0x7001FFE3, // 002A JMP #000F
+ 0x50040200, // 002B LDBOOL R1 1 0
+ 0x90021C01, // 002C SETMBR R0 K14 R1
+ 0x8C04010F, // 002D GETMET R1 R0 K15
+ 0x7C040200, // 002E CALL R1 1
+ 0x88040104, // 002F GETMBR R1 R0 K4
+ 0x50080000, // 0030 LDBOOL R2 0 0
+ 0x1C040202, // 0031 EQ R1 R1 R2
+ 0x78060000, // 0032 JMPF R1 #0034
+ 0x7001FFDA, // 0033 JMP #000F
+ 0x50040200, // 0034 LDBOOL R1 1 0
+ 0x90022001, // 0035 SETMBR R0 K16 R1
+ 0x88040100, // 0036 GETMBR R1 R0 K0
+ 0x8C080301, // 0037 GETMET R2 R1 K1
+ 0x7C080200, // 0038 CALL R2 1
+ 0x88080102, // 0039 GETMBR R2 R0 K2
+ 0x8C080512, // 003A GETMET R2 R2 K18
+ 0x7C080200, // 003B CALL R2 1
+ 0x90062202, // 003C SETMBR R1 K17 R2
+ 0x88080103, // 003D GETMBR R2 R0 K3
+ 0x90060602, // 003E SETMBR R1 K3 R2
+ 0x88080104, // 003F GETMBR R2 R0 K4
+ 0x90060802, // 0040 SETMBR R1 K4 R2
+ 0x88080114, // 0041 GETMBR R2 R0 K20
+ 0x90062602, // 0042 SETMBR R1 K19 R2
+ 0x4C080000, // 0043 LDNIL R2
+ 0x90062A02, // 0044 SETMBR R1 K21 R2
+ 0x80040200, // 0045 RET 1 R1
+ 0x7001FFC7, // 0046 JMP #000F
+ 0x8C04010A, // 0047 GETMET R1 R0 K10
+ 0x7C040200, // 0048 CALL R1 1
+ 0x78060010, // 0049 JMPF R1 #005B
+ 0x88040100, // 004A GETMBR R1 R0 K0
+ 0x8C080301, // 004B GETMET R2 R1 K1
+ 0x7C080200, // 004C CALL R2 1
+ 0x88080107, // 004D GETMBR R2 R0 K7
+ 0x90062202, // 004E SETMBR R1 K17 R2
+ 0x88080108, // 004F GETMBR R2 R0 K8
+ 0x90060602, // 0050 SETMBR R1 K3 R2
+ 0x88080109, // 0051 GETMBR R2 R0 K9
+ 0x90060802, // 0052 SETMBR R1 K4 R2
+ 0x88080114, // 0053 GETMBR R2 R0 K20
+ 0x90062602, // 0054 SETMBR R1 K19 R2
+ 0x8C080116, // 0055 GETMET R2 R0 K22
+ 0x7C080200, // 0056 CALL R2 1
+ 0x90062A02, // 0057 SETMBR R1 K21 R2
+ 0x50080200, // 0058 LDBOOL R2 1 0
+ 0x90020402, // 0059 SETMBR R0 K2 R2
+ 0x80040200, // 005A RET 1 R1
+ 0x8C040101, // 005B GETMET R1 R0 K1
+ 0x7C040200, // 005C CALL R1 1
+ 0x4C040000, // 005D LDNIL R1
+ 0x80040200, // 005E RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: _next_cluster
+********************************************************************/
+be_local_closure(class_Matter_PathGenerator__next_cluster, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_PathGenerator, /* shared constants */
+ be_str_weak(_next_cluster),
+ &be_const_str_solidified,
+ ( &(const binstruction[44]) { /* code */
+ 0x88040103, // 0000 GETMBR R1 R0 K3
+ 0x50080000, // 0001 LDBOOL R2 0 0
+ 0x1C040202, // 0002 EQ R1 R1 R2
+ 0x78060001, // 0003 JMPF R1 #0006
+ 0x50040000, // 0004 LDBOOL R1 0 0
+ 0x80040200, // 0005 RET 1 R1
+ 0x88040105, // 0006 GETMBR R1 R0 K5
+ 0x88080108, // 0007 GETMBR R2 R0 K8
+ 0x4C0C0000, // 0008 LDNIL R3
+ 0x90020803, // 0009 SETMBR R0 K4 R3
+ 0x540DFFFE, // 000A LDINT R3 -1
+ 0x88100103, // 000B GETMBR R4 R0 K3
+ 0x4C140000, // 000C LDNIL R5
+ 0x20100805, // 000D NE R4 R4 R5
+ 0x78120003, // 000E JMPF R4 #0013
+ 0x8C100317, // 000F GETMET R4 R1 K23
+ 0x88180103, // 0010 GETMBR R6 R0 K3
+ 0x7C100400, // 0011 CALL R4 2
+ 0x5C0C0800, // 0012 MOVE R3 R4
+ 0x4C100000, // 0013 LDNIL R4
+ 0x20100604, // 0014 NE R4 R3 R4
+ 0x78120011, // 0015 JMPF R4 #0028
+ 0x00100718, // 0016 ADD R4 R3 K24
+ 0x6014000C, // 0017 GETGBL R5 G12
+ 0x5C180200, // 0018 MOVE R6 R1
+ 0x7C140200, // 0019 CALL R5 1
+ 0x14100805, // 001A LT R4 R4 R5
+ 0x7812000B, // 001B JMPF R4 #0028
+ 0x000C0718, // 001C ADD R3 R3 K24
+ 0x94100203, // 001D GETIDX R4 R1 R3
+ 0x90020604, // 001E SETMBR R0 K3 R4
+ 0x4C100000, // 001F LDNIL R4
+ 0x1C100404, // 0020 EQ R4 R2 R4
+ 0x74120002, // 0021 JMPT R4 #0025
+ 0x88100103, // 0022 GETMBR R4 R0 K3
+ 0x1C100404, // 0023 EQ R4 R2 R4
+ 0x78120001, // 0024 JMPF R4 #0027
+ 0x88100103, // 0025 GETMBR R4 R0 K3
+ 0x80040800, // 0026 RET 1 R4
+ 0x7001FFED, // 0027 JMP #0016
+ 0x50100000, // 0028 LDBOOL R4 0 0
+ 0x90020604, // 0029 SETMBR R0 K3 R4
+ 0x50100000, // 002A LDBOOL R4 0 0
+ 0x80040800, // 002B RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: _default_status_error
+********************************************************************/
+be_local_closure(class_Matter_PathGenerator__default_status_error, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_PathGenerator, /* shared constants */
+ be_str_weak(_default_status_error),
+ &be_const_str_solidified,
+ ( &(const binstruction[23]) { /* code */
+ 0x8C04010A, // 0000 GETMET R1 R0 K10
+ 0x7C040200, // 0001 CALL R1 1
+ 0x78060011, // 0002 JMPF R1 #0015
+ 0x8804010C, // 0003 GETMBR R1 R0 K12
+ 0x74060002, // 0004 JMPT R1 #0008
+ 0xB8063200, // 0005 GETNGBL R1 K25
+ 0x8804031A, // 0006 GETMBR R1 R1 K26
+ 0x80040200, // 0007 RET 1 R1
+ 0x8804010E, // 0008 GETMBR R1 R0 K14
+ 0x74060002, // 0009 JMPT R1 #000D
+ 0xB8063200, // 000A GETNGBL R1 K25
+ 0x8804031B, // 000B GETMBR R1 R1 K27
+ 0x80040200, // 000C RET 1 R1
+ 0x88040110, // 000D GETMBR R1 R0 K16
+ 0x74060002, // 000E JMPT R1 #0012
+ 0xB8063200, // 000F GETNGBL R1 K25
+ 0x8804031C, // 0010 GETMBR R1 R1 K28
+ 0x80040200, // 0011 RET 1 R1
+ 0xB8063200, // 0012 GETNGBL R1 K25
+ 0x8804031D, // 0013 GETMBR R1 R1 K29
+ 0x80040200, // 0014 RET 1 R1
+ 0x4C040000, // 0015 LDNIL R1
+ 0x80040200, // 0016 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: _next_attribute
+********************************************************************/
+be_local_closure(class_Matter_PathGenerator__next_attribute, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_PathGenerator, /* shared constants */
+ be_str_weak(_next_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[69]) { /* code */
+ 0x88040104, // 0000 GETMBR R1 R0 K4
+ 0x50080000, // 0001 LDBOOL R2 0 0
+ 0x1C040202, // 0002 EQ R1 R1 R2
+ 0x78060001, // 0003 JMPF R1 #0006
+ 0x50040000, // 0004 LDBOOL R1 0 0
+ 0x80040200, // 0005 RET 1 R1
+ 0x88040102, // 0006 GETMBR R1 R0 K2
+ 0x8C04031E, // 0007 GETMET R1 R1 K30
+ 0x880C0103, // 0008 GETMBR R3 R0 K3
+ 0x7C040400, // 0009 CALL R1 2
+ 0x4C080000, // 000A LDNIL R2
+ 0x20080202, // 000B NE R2 R1 R2
+ 0x780A0004, // 000C JMPF R2 #0012
+ 0x6008000C, // 000D GETGBL R2 G12
+ 0x5C0C0200, // 000E MOVE R3 R1
+ 0x7C080200, // 000F CALL R2 1
+ 0x0C08051F, // 0010 DIV R2 R2 K31
+ 0x70020000, // 0011 JMP #0013
+ 0x58080020, // 0012 LDCONST R2 K32
+ 0x880C0109, // 0013 GETMBR R3 R0 K9
+ 0x5411FFFE, // 0014 LDINT R4 -1
+ 0x88140104, // 0015 GETMBR R5 R0 K4
+ 0x4C180000, // 0016 LDNIL R6
+ 0x20140A06, // 0017 NE R5 R5 R6
+ 0x78160012, // 0018 JMPF R5 #002C
+ 0x58140020, // 0019 LDCONST R5 K32
+ 0x50180200, // 001A LDBOOL R6 1 0
+ 0x781A000F, // 001B JMPF R6 #002C
+ 0x14180A02, // 001C LT R6 R5 R2
+ 0x781A000A, // 001D JMPF R6 #0029
+ 0x8C180321, // 001E GETMET R6 R1 K33
+ 0x08200B1F, // 001F MUL R8 R5 K31
+ 0x5425FFFD, // 0020 LDINT R9 -2
+ 0x7C180600, // 0021 CALL R6 3
+ 0x881C0104, // 0022 GETMBR R7 R0 K4
+ 0x1C180C07, // 0023 EQ R6 R6 R7
+ 0x781A0001, // 0024 JMPF R6 #0027
+ 0x5C100A00, // 0025 MOVE R4 R5
+ 0x70020004, // 0026 JMP #002C
+ 0x00140B18, // 0027 ADD R5 R5 K24
+ 0x70020001, // 0028 JMP #002B
+ 0x4C100000, // 0029 LDNIL R4
+ 0x70020000, // 002A JMP #002C
+ 0x7001FFED, // 002B JMP #001A
+ 0x4C140000, // 002C LDNIL R5
+ 0x20140805, // 002D NE R5 R4 R5
+ 0x78160011, // 002E JMPF R5 #0041
+ 0x00140918, // 002F ADD R5 R4 K24
+ 0x14140A02, // 0030 LT R5 R5 R2
+ 0x7816000E, // 0031 JMPF R5 #0041
+ 0x00100918, // 0032 ADD R4 R4 K24
+ 0x8C140321, // 0033 GETMET R5 R1 K33
+ 0x081C091F, // 0034 MUL R7 R4 K31
+ 0x5421FFFD, // 0035 LDINT R8 -2
+ 0x7C140600, // 0036 CALL R5 3
+ 0x90020805, // 0037 SETMBR R0 K4 R5
+ 0x4C140000, // 0038 LDNIL R5
+ 0x1C140605, // 0039 EQ R5 R3 R5
+ 0x74160002, // 003A JMPT R5 #003E
+ 0x88140104, // 003B GETMBR R5 R0 K4
+ 0x1C140605, // 003C EQ R5 R3 R5
+ 0x78160001, // 003D JMPF R5 #0040
+ 0x88140104, // 003E GETMBR R5 R0 K4
+ 0x80040A00, // 003F RET 1 R5
+ 0x7001FFED, // 0040 JMP #002F
+ 0x50140000, // 0041 LDBOOL R5 0 0
+ 0x90020805, // 0042 SETMBR R0 K4 R5
+ 0x50140000, // 0043 LDBOOL R5 0 0
+ 0x80040A00, // 0044 RET 1 R5
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: _next_endpoint
+********************************************************************/
+be_local_closure(class_Matter_PathGenerator__next_endpoint, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_PathGenerator, /* shared constants */
+ be_str_weak(_next_endpoint),
+ &be_const_str_solidified,
+ ( &(const binstruction[53]) { /* code */
+ 0x88040102, // 0000 GETMBR R1 R0 K2
+ 0x50080000, // 0001 LDBOOL R2 0 0
+ 0x1C040202, // 0002 EQ R1 R1 R2
+ 0x78060001, // 0003 JMPF R1 #0006
+ 0x50040000, // 0004 LDBOOL R1 0 0
+ 0x80040200, // 0005 RET 1 R1
+ 0x88040106, // 0006 GETMBR R1 R0 K6
+ 0x88040322, // 0007 GETMBR R1 R1 K34
+ 0x88080107, // 0008 GETMBR R2 R0 K7
+ 0x4C0C0000, // 0009 LDNIL R3
+ 0x90020603, // 000A SETMBR R0 K3 R3
+ 0x4C0C0000, // 000B LDNIL R3
+ 0x90020803, // 000C SETMBR R0 K4 R3
+ 0x540DFFFE, // 000D LDINT R3 -1
+ 0x88100102, // 000E GETMBR R4 R0 K2
+ 0x4C140000, // 000F LDNIL R5
+ 0x20100805, // 0010 NE R4 R4 R5
+ 0x78120003, // 0011 JMPF R4 #0016
+ 0x8C100317, // 0012 GETMET R4 R1 K23
+ 0x88180102, // 0013 GETMBR R6 R0 K2
+ 0x7C100400, // 0014 CALL R4 2
+ 0x5C0C0800, // 0015 MOVE R3 R4
+ 0x4C100000, // 0016 LDNIL R4
+ 0x20100604, // 0017 NE R4 R3 R4
+ 0x78120017, // 0018 JMPF R4 #0031
+ 0x00100718, // 0019 ADD R4 R3 K24
+ 0x6014000C, // 001A GETGBL R5 G12
+ 0x5C180200, // 001B MOVE R6 R1
+ 0x7C140200, // 001C CALL R5 1
+ 0x14100805, // 001D LT R4 R4 R5
+ 0x78120011, // 001E JMPF R4 #0031
+ 0x000C0718, // 001F ADD R3 R3 K24
+ 0x94100203, // 0020 GETIDX R4 R1 R3
+ 0x90020404, // 0021 SETMBR R0 K2 R4
+ 0x4C100000, // 0022 LDNIL R4
+ 0x1C100404, // 0023 EQ R4 R2 R4
+ 0x74120004, // 0024 JMPT R4 #002A
+ 0x88100102, // 0025 GETMBR R4 R0 K2
+ 0x8C100912, // 0026 GETMET R4 R4 K18
+ 0x7C100200, // 0027 CALL R4 1
+ 0x1C100404, // 0028 EQ R4 R2 R4
+ 0x78120005, // 0029 JMPF R4 #0030
+ 0x88100102, // 002A GETMBR R4 R0 K2
+ 0x8C100923, // 002B GETMET R4 R4 K35
+ 0x7C100200, // 002C CALL R4 1
+ 0x90020A04, // 002D SETMBR R0 K5 R4
+ 0x88100102, // 002E GETMBR R4 R0 K2
+ 0x80040800, // 002F RET 1 R4
+ 0x7001FFE7, // 0030 JMP #0019
+ 0x50100000, // 0031 LDBOOL R4 0 0
+ 0x90020404, // 0032 SETMBR R0 K2 R4
+ 0x50100000, // 0033 LDBOOL R4 0 0
+ 0x80040800, // 0034 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_pi
+********************************************************************/
+be_local_closure(class_Matter_PathGenerator_get_pi, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_PathGenerator, /* shared constants */
+ be_str_weak(get_pi),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0x88040102, // 0000 GETMBR R1 R0 K2
+ 0x50080000, // 0001 LDBOOL R2 0 0
+ 0x1C040202, // 0002 EQ R1 R1 R2
+ 0x74060003, // 0003 JMPT R1 #0008
+ 0x88040102, // 0004 GETMBR R1 R0 K2
+ 0x50080200, // 0005 LDBOOL R2 1 0
+ 0x1C040202, // 0006 EQ R1 R1 R2
+ 0x78060001, // 0007 JMPF R1 #000A
+ 0x4C040000, // 0008 LDNIL R1
+ 0x70020000, // 0009 JMP #000B
+ 0x88040102, // 000A GETMBR R1 R0 K2
+ 0x80040200, // 000B RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start
+********************************************************************/
+be_local_closure(class_Matter_PathGenerator_start, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 5, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_PathGenerator, /* shared constants */
+ be_str_weak(start),
+ &be_const_str_solidified,
+ ( &(const binstruction[22]) { /* code */
+ 0xB8163200, // 0000 GETNGBL R5 K25
+ 0x8C140B24, // 0001 GETMET R5 R5 K36
+ 0x7C140200, // 0002 CALL R5 1
+ 0x90020005, // 0003 SETMBR R0 K0 R5
+ 0x8C140101, // 0004 GETMET R5 R0 K1
+ 0x7C140200, // 0005 CALL R5 1
+ 0x90020E01, // 0006 SETMBR R0 K7 R1
+ 0x90021002, // 0007 SETMBR R0 K8 R2
+ 0x90021203, // 0008 SETMBR R0 K9 R3
+ 0x60140017, // 0009 GETGBL R5 G23
+ 0x5C180800, // 000A MOVE R6 R4
+ 0x7C140200, // 000B CALL R5 1
+ 0x90022805, // 000C SETMBR R0 K20 R5
+ 0x4C140000, // 000D LDNIL R5
+ 0x90020405, // 000E SETMBR R0 K2 R5
+ 0x50140000, // 000F LDBOOL R5 0 0
+ 0x90021805, // 0010 SETMBR R0 K12 R5
+ 0x50140000, // 0011 LDBOOL R5 0 0
+ 0x90021C05, // 0012 SETMBR R0 K14 R5
+ 0x50140000, // 0013 LDBOOL R5 0 0
+ 0x90022005, // 0014 SETMBR R0 K16 R5
+ 0x80000000, // 0015 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_PathGenerator
+********************************************************************/
+be_local_class(Matter_PathGenerator,
+ 13,
+ NULL,
+ be_nested_map(24,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(reset, -1), be_const_closure(class_Matter_PathGenerator_reset_closure) },
+ { be_const_key_weak(start, -1), be_const_closure(class_Matter_PathGenerator_start_closure) },
+ { be_const_key_weak(pi, -1), be_const_var(5) },
+ { be_const_key_weak(init, 15), be_const_closure(class_Matter_PathGenerator_init_closure) },
+ { be_const_key_weak(path_in_endpoint, -1), be_const_var(1) },
+ { be_const_key_weak(path_in_cluster, -1), be_const_var(2) },
+ { be_const_key_weak(get_pi, -1), be_const_closure(class_Matter_PathGenerator_get_pi_closure) },
+ { be_const_key_weak(is_direct, 9), be_const_closure(class_Matter_PathGenerator_is_direct_closure) },
+ { be_const_key_weak(is_finished, -1), be_const_closure(class_Matter_PathGenerator_is_finished_closure) },
+ { be_const_key_weak(next_attribute, 22), be_const_closure(class_Matter_PathGenerator_next_attribute_closure) },
+ { be_const_key_weak(cluster_found, 17), be_const_var(10) },
+ { be_const_key_weak(endpoint_found, 6), be_const_var(9) },
+ { be_const_key_weak(_next_attribute, -1), be_const_closure(class_Matter_PathGenerator__next_attribute_closure) },
+ { be_const_key_weak(cluster, -1), be_const_var(6) },
+ { be_const_key_weak(_next_cluster, -1), be_const_closure(class_Matter_PathGenerator__next_cluster_closure) },
+ { be_const_key_weak(device, -1), be_const_var(0) },
+ { be_const_key_weak(path_concrete, -1), be_const_var(12) },
+ { be_const_key_weak(clusters, -1), be_const_var(8) },
+ { be_const_key_weak(path_in_fabric_filtered, -1), be_const_var(4) },
+ { be_const_key_weak(_default_status_error, -1), be_const_closure(class_Matter_PathGenerator__default_status_error_closure) },
+ { be_const_key_weak(attribute_found, 12), be_const_var(11) },
+ { be_const_key_weak(_next_endpoint, -1), be_const_closure(class_Matter_PathGenerator__next_endpoint_closure) },
+ { be_const_key_weak(path_in_attribute, -1), be_const_var(3) },
+ { be_const_key_weak(attribute, 1), be_const_var(7) },
+ })),
+ be_str_weak(Matter_PathGenerator)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h
index 544c53173..e27b73416 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_0.h
@@ -3,915 +3,89 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+extern const bclass be_class_Matter_Plugin;
+// compact class 'Matter_Plugin' ktab size: 61, total: 104 (saved 344 bytes)
+static const bvalue be_ktab_class_Matter_Plugin[61] = {
+ /* K0 */ be_nested_str_weak(),
+ /* K1 */ be_nested_str_weak(json),
+ /* K2 */ be_nested_str_weak(node_label),
+ /* K3 */ be_nested_str_weak(_X2C_X22Name_X22_X3A_X25s),
+ /* K4 */ be_nested_str_weak(dump),
+ /* K5 */ be_nested_str_weak(append_state_json),
+ /* K6 */ be_nested_str_weak(_X7B_X22Ep_X22_X3A_X25i_X25s_X25s_X7D),
+ /* K7 */ be_nested_str_weak(endpoint),
+ /* K8 */ be_nested_str_weak(CLUSTERS),
+ /* K9 */ be_nested_str_weak(find),
+ /* K10 */ be_const_class(be_class_Matter_Plugin),
+ /* K11 */ be_nested_str_weak(ARG),
+ /* K12 */ be_nested_str_weak(msg),
+ /* K13 */ be_nested_str_weak(device),
+ /* K14 */ be_nested_str_weak(message_handler),
+ /* K15 */ be_nested_str_weak(im),
+ /* K16 */ be_nested_str_weak(send_ack_now),
+ /* K17 */ be_nested_str_weak(k2l),
+ /* K18 */ be_nested_str_weak(parse_configuration),
+ /* K19 */ be_nested_str_weak(name),
+ /* K20 */ be_nested_str_weak(ARG_TYPE),
+ /* K21 */ be_nested_str_weak(update_next),
+ /* K22 */ be_nested_str_weak(matter),
+ /* K23 */ be_nested_str_weak(jitter),
+ /* K24 */ be_nested_str_weak(UPDATE_TIME),
+ /* K25 */ be_nested_str_weak(tasmota),
+ /* K26 */ be_nested_str_weak(time_reached),
+ /* K27 */ be_nested_str_weak(tick),
+ /* K28 */ be_nested_str_weak(update_shadow),
+ /* K29 */ be_nested_str_weak(millis),
+ /* K30 */ be_nested_str_weak(events),
+ /* K31 */ be_nested_str_weak(publish_event),
+ /* K32 */ be_nested_str_weak(attribute_updated),
+ /* K33 */ be_const_int(0),
+ /* K34 */ be_const_int(2),
+ /* K35 */ be_nested_str_weak(get),
+ /* K36 */ be_const_int(1),
+ /* K37 */ be_nested_str_weak(UPDATE_COMMANDS),
+ /* K38 */ be_nested_str_weak(_X25s_X3A_X25s),
+ /* K39 */ be_nested_str_weak(_X25s_X2C_X25s_X3A_X25s),
+ /* K40 */ be_nested_str_weak(publish_command),
+ /* K41 */ be_nested_str_weak(MtrReceived),
+ /* K42 */ be_nested_str_weak(contains),
+ /* K43 */ be_nested_str_weak(BRIDGE),
+ /* K44 */ be_nested_str_weak(TLV),
+ /* K45 */ be_nested_str_weak(cluster),
+ /* K46 */ be_nested_str_weak(attribute),
+ /* K47 */ be_nested_str_weak(Matter_TLV_array),
+ /* K48 */ be_nested_str_weak(TYPES),
+ /* K49 */ be_nested_str_weak(keys),
+ /* K50 */ be_nested_str_weak(add_struct),
+ /* K51 */ be_nested_str_weak(add_TLV),
+ /* K52 */ be_nested_str_weak(U2),
+ /* K53 */ be_nested_str_weak(stop_iteration),
+ /* K54 */ be_nested_str_weak(get_cluster_list_sorted),
+ /* K55 */ be_nested_str_weak(U4),
+ /* K56 */ be_const_int(3),
+ /* K57 */ be_nested_str_weak(set),
+ /* K58 */ be_nested_str_weak(get_attribute_list_bytes),
+ /* K59 */ be_nested_str_weak(FEATURE_MAPS),
+ /* K60 */ be_nested_str_weak(CLUSTER_REVISIONS),
+};
+
extern const bclass be_class_Matter_Plugin;
-/********************************************************************
-** Solidified function: every_250ms
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_every_250ms, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(update_next),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(jitter),
- /* K3 */ be_nested_str_weak(UPDATE_TIME),
- /* K4 */ be_nested_str_weak(tasmota),
- /* K5 */ be_nested_str_weak(time_reached),
- /* K6 */ be_nested_str_weak(tick),
- /* K7 */ be_nested_str_weak(device),
- /* K8 */ be_nested_str_weak(update_shadow),
- /* K9 */ be_nested_str_weak(millis),
- }),
- be_str_weak(every_250ms),
- &be_const_str_solidified,
- ( &(const binstruction[28]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x4C080000, // 0001 LDNIL R2
- 0x1C040202, // 0002 EQ R1 R1 R2
- 0x78060005, // 0003 JMPF R1 #000A
- 0xB8060200, // 0004 GETNGBL R1 K1
- 0x8C040302, // 0005 GETMET R1 R1 K2
- 0x880C0103, // 0006 GETMBR R3 R0 K3
- 0x7C040400, // 0007 CALL R1 2
- 0x90020001, // 0008 SETMBR R0 K0 R1
- 0x70020010, // 0009 JMP #001B
- 0xB8060800, // 000A GETNGBL R1 K4
- 0x8C040305, // 000B GETMET R1 R1 K5
- 0x880C0100, // 000C GETMBR R3 R0 K0
- 0x7C040400, // 000D CALL R1 2
- 0x7806000B, // 000E JMPF R1 #001B
- 0x88040106, // 000F GETMBR R1 R0 K6
- 0x88080107, // 0010 GETMBR R2 R0 K7
- 0x88080506, // 0011 GETMBR R2 R2 K6
- 0x20040202, // 0012 NE R1 R1 R2
- 0x78060001, // 0013 JMPF R1 #0016
- 0x8C040108, // 0014 GETMET R1 R0 K8
- 0x7C040200, // 0015 CALL R1 1
- 0xB8060800, // 0016 GETNGBL R1 K4
- 0x8C040309, // 0017 GETMET R1 R1 K9
- 0x880C0103, // 0018 GETMBR R3 R0 K3
- 0x7C040400, // 0019 CALL R1 2
- 0x90020001, // 001A SETMBR R0 K0 R1
- 0x80000000, // 001B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_configuration
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_parse_configuration, /* name */
- be_nested_proto(
- 2, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(parse_configuration),
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: subscribe_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_subscribe_attribute, /* name */
- be_nested_proto(
- 6, /* nstack */
- 5, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(subscribe_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x4C140000, // 0000 LDNIL R5
- 0x80040A00, // 0001 RET 1 R5
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_init, /* name */
- be_nested_proto(
- 8, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(device),
- /* K1 */ be_nested_str_weak(endpoint),
- /* K2 */ be_nested_str_weak(clusters),
- /* K3 */ be_nested_str_weak(consolidate_clusters),
- /* K4 */ be_nested_str_weak(parse_configuration),
- /* K5 */ be_nested_str_weak(node_label),
- /* K6 */ be_nested_str_weak(find),
- /* K7 */ be_nested_str_weak(name),
- /* K8 */ be_nested_str_weak(),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[14]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
- 0x8C100103, // 0002 GETMET R4 R0 K3
- 0x7C100200, // 0003 CALL R4 1
- 0x90020404, // 0004 SETMBR R0 K2 R4
- 0x8C100104, // 0005 GETMET R4 R0 K4
- 0x5C180600, // 0006 MOVE R6 R3
- 0x7C100400, // 0007 CALL R4 2
- 0x8C100706, // 0008 GETMET R4 R3 K6
- 0x58180007, // 0009 LDCONST R6 K7
- 0x581C0008, // 000A LDCONST R7 K8
- 0x7C100600, // 000B CALL R4 3
- 0x90020A04, // 000C SETMBR R0 K5 R4
- 0x80000000, // 000D RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_name
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_set_name, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(node_label),
- /* K1 */ be_nested_str_weak(attribute_updated),
- }),
- be_str_weak(set_name),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x20080202, // 0001 NE R2 R1 R2
- 0x780A0003, // 0002 JMPF R2 #0007
- 0x8C080101, // 0003 GETMET R2 R0 K1
- 0x54120038, // 0004 LDINT R4 57
- 0x54160004, // 0005 LDINT R5 5
- 0x7C080600, // 0006 CALL R2 3
- 0x90020001, // 0007 SETMBR R0 K0 R1
- 0x80000000, // 0008 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: subscribe_event
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_subscribe_event, /* name */
- be_nested_proto(
- 6, /* nstack */
- 5, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(subscribe_event),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x4C140000, // 0000 LDNIL R5
- 0x80040A00, // 0001 RET 1 R5
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_sensors
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_parse_sensors, /* name */
- be_nested_proto(
- 2, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(parse_sensors),
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: publish_command
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_publish_command, /* name */
- be_nested_proto(
- 16, /* nstack */
- 7, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(json),
- /* K1 */ be_nested_str_weak(_X25s_X3A_X25s),
- /* K2 */ be_nested_str_weak(dump),
- /* K3 */ be_nested_str_weak(_X25s_X2C_X25s_X3A_X25s),
- /* K4 */ be_nested_str_weak(matter),
- /* K5 */ be_nested_str_weak(publish_command),
- /* K6 */ be_nested_str_weak(MtrReceived),
- /* K7 */ be_nested_str_weak(endpoint),
- /* K8 */ be_nested_str_weak(node_label),
- }),
- be_str_weak(publish_command),
- &be_const_str_solidified,
- ( &(const binstruction[46]) { /* code */
- 0xA41E0000, // 0000 IMPORT R7 K0
- 0x60200018, // 0001 GETGBL R8 G24
- 0x58240001, // 0002 LDCONST R9 K1
- 0x8C280F02, // 0003 GETMET R10 R7 K2
- 0x5C300200, // 0004 MOVE R12 R1
- 0x7C280400, // 0005 CALL R10 2
- 0x8C2C0F02, // 0006 GETMET R11 R7 K2
- 0x5C340400, // 0007 MOVE R13 R2
- 0x7C2C0400, // 0008 CALL R11 2
- 0x7C200600, // 0009 CALL R8 3
- 0x4C240000, // 000A LDNIL R9
- 0x20240609, // 000B NE R9 R3 R9
- 0x7826000A, // 000C JMPF R9 #0018
- 0x60240018, // 000D GETGBL R9 G24
- 0x58280003, // 000E LDCONST R10 K3
- 0x5C2C1000, // 000F MOVE R11 R8
- 0x8C300F02, // 0010 GETMET R12 R7 K2
- 0x5C380600, // 0011 MOVE R14 R3
- 0x7C300400, // 0012 CALL R12 2
- 0x8C340F02, // 0013 GETMET R13 R7 K2
- 0x5C3C0800, // 0014 MOVE R15 R4
- 0x7C340400, // 0015 CALL R13 2
- 0x7C240800, // 0016 CALL R9 4
- 0x5C201200, // 0017 MOVE R8 R9
- 0x4C240000, // 0018 LDNIL R9
- 0x20240A09, // 0019 NE R9 R5 R9
- 0x7826000A, // 001A JMPF R9 #0026
- 0x60240018, // 001B GETGBL R9 G24
- 0x58280003, // 001C LDCONST R10 K3
- 0x5C2C1000, // 001D MOVE R11 R8
- 0x8C300F02, // 001E GETMET R12 R7 K2
- 0x5C380A00, // 001F MOVE R14 R5
- 0x7C300400, // 0020 CALL R12 2
- 0x8C340F02, // 0021 GETMET R13 R7 K2
- 0x5C3C0C00, // 0022 MOVE R15 R6
- 0x7C340400, // 0023 CALL R13 2
- 0x7C240800, // 0024 CALL R9 4
- 0x5C201200, // 0025 MOVE R8 R9
- 0xB8260800, // 0026 GETNGBL R9 K4
- 0x8C241305, // 0027 GETMET R9 R9 K5
- 0x582C0006, // 0028 LDCONST R11 K6
- 0x88300107, // 0029 GETMBR R12 R0 K7
- 0x88340108, // 002A GETMBR R13 R0 K8
- 0x5C381000, // 002B MOVE R14 R8
- 0x7C240A00, // 002C CALL R9 5
- 0x80000000, // 002D RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_read_attribute, /* name */
- be_nested_proto(
- 17, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 1, /* has constants */
- ( &(const bvalue[22]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(Matter_TLV_array),
- /* K6 */ be_nested_str_weak(TYPES),
- /* K7 */ be_nested_str_weak(keys),
- /* K8 */ be_nested_str_weak(add_struct),
- /* K9 */ be_nested_str_weak(add_TLV),
- /* K10 */ be_nested_str_weak(U2),
- /* K11 */ be_const_int(1),
- /* K12 */ be_nested_str_weak(stop_iteration),
- /* K13 */ be_nested_str_weak(get_cluster_list_sorted),
- /* K14 */ be_nested_str_weak(U4),
- /* K15 */ be_const_int(2),
- /* K16 */ be_const_int(3),
- /* K17 */ be_nested_str_weak(set),
- /* K18 */ be_nested_str_weak(get_attribute_list),
- /* K19 */ be_nested_str_weak(FEATURE_MAPS),
- /* K20 */ be_nested_str_weak(find),
- /* K21 */ be_nested_str_weak(CLUSTER_REVISIONS),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[161]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E001C, // 0004 LDINT R7 29
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0050, // 0006 JMPF R7 #0058
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E001B, // 0008 JMPF R7 #0025
- 0x8C1C0905, // 0009 GETMET R7 R4 K5
- 0x7C1C0200, // 000A CALL R7 1
- 0x88200106, // 000B GETMBR R8 R0 K6
- 0x60240010, // 000C GETGBL R9 G16
- 0x8C281107, // 000D GETMET R10 R8 K7
- 0x7C280200, // 000E CALL R10 1
- 0x7C240200, // 000F CALL R9 1
- 0xA802000E, // 0010 EXBLK 0 #0020
- 0x5C281200, // 0011 MOVE R10 R9
- 0x7C280000, // 0012 CALL R10 0
- 0x8C2C0F08, // 0013 GETMET R11 R7 K8
- 0x7C2C0200, // 0014 CALL R11 1
- 0x8C301709, // 0015 GETMET R12 R11 K9
- 0x58380004, // 0016 LDCONST R14 K4
- 0x883C090A, // 0017 GETMBR R15 R4 K10
- 0x5C401400, // 0018 MOVE R16 R10
- 0x7C300800, // 0019 CALL R12 4
- 0x8C301709, // 001A GETMET R12 R11 K9
- 0x5838000B, // 001B LDCONST R14 K11
- 0x883C090A, // 001C GETMBR R15 R4 K10
- 0x9440100A, // 001D GETIDX R16 R8 R10
- 0x7C300800, // 001E CALL R12 4
- 0x7001FFF0, // 001F JMP #0011
- 0x5824000C, // 0020 LDCONST R9 K12
- 0xAC240200, // 0021 CATCH R9 1 0
- 0xB0080000, // 0022 RAISE 2 R0 R0
- 0x80040E00, // 0023 RET 1 R7
- 0x70020032, // 0024 JMP #0058
- 0x1C1C0D0B, // 0025 EQ R7 R6 K11
- 0x781E0013, // 0026 JMPF R7 #003B
- 0x8C1C0905, // 0027 GETMET R7 R4 K5
- 0x7C1C0200, // 0028 CALL R7 1
- 0x60200010, // 0029 GETGBL R8 G16
- 0x8C24010D, // 002A GETMET R9 R0 K13
- 0x7C240200, // 002B CALL R9 1
- 0x7C200200, // 002C CALL R8 1
- 0xA8020007, // 002D EXBLK 0 #0036
- 0x5C241000, // 002E MOVE R9 R8
- 0x7C240000, // 002F CALL R9 0
- 0x8C280F09, // 0030 GETMET R10 R7 K9
- 0x4C300000, // 0031 LDNIL R12
- 0x8834090E, // 0032 GETMBR R13 R4 K14
- 0x5C381200, // 0033 MOVE R14 R9
- 0x7C280800, // 0034 CALL R10 4
- 0x7001FFF7, // 0035 JMP #002E
- 0x5820000C, // 0036 LDCONST R8 K12
- 0xAC200200, // 0037 CATCH R8 1 0
- 0xB0080000, // 0038 RAISE 2 R0 R0
- 0x80040E00, // 0039 RET 1 R7
- 0x7002001C, // 003A JMP #0058
- 0x1C1C0D0F, // 003B EQ R7 R6 K15
- 0x781E0003, // 003C JMPF R7 #0041
- 0x8C1C0905, // 003D GETMET R7 R4 K5
- 0x7C1C0200, // 003E CALL R7 1
- 0x80040E00, // 003F RET 1 R7
- 0x70020016, // 0040 JMP #0058
- 0x1C1C0D10, // 0041 EQ R7 R6 K16
- 0x781E0003, // 0042 JMPF R7 #0047
- 0x8C1C0905, // 0043 GETMET R7 R4 K5
- 0x7C1C0200, // 0044 CALL R7 1
- 0x80040E00, // 0045 RET 1 R7
- 0x70020010, // 0046 JMP #0058
- 0x541EFFFB, // 0047 LDINT R7 65532
- 0x1C1C0C07, // 0048 EQ R7 R6 R7
- 0x781E0005, // 0049 JMPF R7 #0050
- 0x8C1C0711, // 004A GETMET R7 R3 K17
- 0x8824090E, // 004B GETMBR R9 R4 K14
- 0x58280004, // 004C LDCONST R10 K4
- 0x7C1C0600, // 004D CALL R7 3
- 0x80040E00, // 004E RET 1 R7
- 0x70020007, // 004F JMP #0058
- 0x541EFFFC, // 0050 LDINT R7 65533
- 0x1C1C0C07, // 0051 EQ R7 R6 R7
- 0x781E0004, // 0052 JMPF R7 #0058
- 0x8C1C0711, // 0053 GETMET R7 R3 K17
- 0x8824090E, // 0054 GETMBR R9 R4 K14
- 0x5828000B, // 0055 LDCONST R10 K11
- 0x7C1C0600, // 0056 CALL R7 3
- 0x80040E00, // 0057 RET 1 R7
- 0x541EFFF7, // 0058 LDINT R7 65528
- 0x1C1C0C07, // 0059 EQ R7 R6 R7
- 0x781E0003, // 005A JMPF R7 #005F
- 0x8C1C0905, // 005B GETMET R7 R4 K5
- 0x7C1C0200, // 005C CALL R7 1
- 0x80040E00, // 005D RET 1 R7
- 0x7002003F, // 005E JMP #009F
- 0x541EFFF8, // 005F LDINT R7 65529
- 0x1C1C0C07, // 0060 EQ R7 R6 R7
- 0x781E0013, // 0061 JMPF R7 #0076
- 0x8C1C0905, // 0062 GETMET R7 R4 K5
- 0x7C1C0200, // 0063 CALL R7 1
- 0x8C200112, // 0064 GETMET R8 R0 K18
- 0x5C280A00, // 0065 MOVE R10 R5
- 0x7C200400, // 0066 CALL R8 2
- 0x58240004, // 0067 LDCONST R9 K4
- 0x6028000C, // 0068 GETGBL R10 G12
- 0x5C2C1000, // 0069 MOVE R11 R8
- 0x7C280200, // 006A CALL R10 1
- 0x1428120A, // 006B LT R10 R9 R10
- 0x782A0006, // 006C JMPF R10 #0074
- 0x8C280F09, // 006D GETMET R10 R7 K9
- 0x4C300000, // 006E LDNIL R12
- 0x8834090A, // 006F GETMBR R13 R4 K10
- 0x94381009, // 0070 GETIDX R14 R8 R9
- 0x7C280800, // 0071 CALL R10 4
- 0x0024130B, // 0072 ADD R9 R9 K11
- 0x7001FFF3, // 0073 JMP #0068
- 0x80040E00, // 0074 RET 1 R7
- 0x70020028, // 0075 JMP #009F
- 0x541EFFF9, // 0076 LDINT R7 65530
- 0x1C1C0C07, // 0077 EQ R7 R6 R7
- 0x781E0003, // 0078 JMPF R7 #007D
- 0x8C1C0905, // 0079 GETMET R7 R4 K5
- 0x7C1C0200, // 007A CALL R7 1
- 0x80040E00, // 007B RET 1 R7
- 0x70020021, // 007C JMP #009F
- 0x541EFFFA, // 007D LDINT R7 65531
- 0x1C1C0C07, // 007E EQ R7 R6 R7
- 0x781E0003, // 007F JMPF R7 #0084
- 0x8C1C0905, // 0080 GETMET R7 R4 K5
- 0x7C1C0200, // 0081 CALL R7 1
- 0x80040E00, // 0082 RET 1 R7
- 0x7002001A, // 0083 JMP #009F
- 0x541EFFFB, // 0084 LDINT R7 65532
- 0x1C1C0C07, // 0085 EQ R7 R6 R7
- 0x781E000A, // 0086 JMPF R7 #0092
- 0x881C0113, // 0087 GETMBR R7 R0 K19
- 0x8C1C0F14, // 0088 GETMET R7 R7 K20
- 0x5C240A00, // 0089 MOVE R9 R5
- 0x58280004, // 008A LDCONST R10 K4
- 0x7C1C0600, // 008B CALL R7 3
- 0x8C200711, // 008C GETMET R8 R3 K17
- 0x8828090E, // 008D GETMBR R10 R4 K14
- 0x5C2C0E00, // 008E MOVE R11 R7
- 0x7C200600, // 008F CALL R8 3
- 0x80041000, // 0090 RET 1 R8
- 0x7002000C, // 0091 JMP #009F
- 0x541EFFFC, // 0092 LDINT R7 65533
- 0x1C1C0C07, // 0093 EQ R7 R6 R7
- 0x781E0009, // 0094 JMPF R7 #009F
- 0x881C0115, // 0095 GETMBR R7 R0 K21
- 0x8C1C0F14, // 0096 GETMET R7 R7 K20
- 0x5C240A00, // 0097 MOVE R9 R5
- 0x5828000B, // 0098 LDCONST R10 K11
- 0x7C1C0600, // 0099 CALL R7 3
- 0x8C200711, // 009A GETMET R8 R3 K17
- 0x8828090E, // 009B GETMBR R10 R4 K14
- 0x5C2C0E00, // 009C MOVE R11 R7
- 0x7C200600, // 009D CALL R8 3
- 0x80041000, // 009E RET 1 R8
- 0x4C1C0000, // 009F LDNIL R7
- 0x80040E00, // 00A0 RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: ui_conf_to_string
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_ui_conf_to_string, /* name */
- be_nested_proto(
- 9, /* nstack */
- 2, /* argc */
- 4, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_Plugin),
- /* K1 */ be_nested_str_weak(ARG),
- /* K2 */ be_nested_str_weak(find),
- /* K3 */ be_nested_str_weak(),
- }),
- be_str_weak(ui_conf_to_string),
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x58080000, // 0000 LDCONST R2 K0
- 0x880C0101, // 0001 GETMBR R3 R0 K1
- 0x780E0006, // 0002 JMPF R3 #000A
- 0x60100008, // 0003 GETGBL R4 G8
- 0x8C140302, // 0004 GETMET R5 R1 K2
- 0x5C1C0600, // 0005 MOVE R7 R3
- 0x58200003, // 0006 LDCONST R8 K3
- 0x7C140600, // 0007 CALL R5 3
- 0x7C100200, // 0008 CALL R4 1
- 0x70020000, // 0009 JMP #000B
- 0x58100003, // 000A LDCONST R4 K3
- 0x80040800, // 000B RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: write_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_write_attribute, /* name */
- be_nested_proto(
- 5, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(write_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x4C100000, // 0000 LDNIL R4
- 0x80040800, // 0001 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_attribute_list
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_get_attribute_list, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(clusters),
- /* K1 */ be_nested_str_weak(find),
- }),
- be_str_weak(get_attribute_list),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100200, // 0002 MOVE R4 R1
- 0x60140012, // 0003 GETGBL R5 G18
- 0x7C140000, // 0004 CALL R5 0
- 0x7C080600, // 0005 CALL R2 3
- 0x80040400, // 0006 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_event
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_read_event, /* name */
- be_nested_proto(
- 6, /* nstack */
- 5, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(read_event),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x4C140000, // 0000 LDNIL R5
- 0x80040A00, // 0001 RET 1 R5
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: ack_request
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_ack_request, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(msg),
- /* K1 */ be_nested_str_weak(device),
- /* K2 */ be_nested_str_weak(message_handler),
- /* K3 */ be_nested_str_weak(im),
- /* K4 */ be_nested_str_weak(send_ack_now),
- }),
- be_str_weak(ack_request),
- &be_const_str_solidified,
- ( &(const binstruction[13]) { /* code */
- 0x88080300, // 0000 GETMBR R2 R1 K0
- 0x4C0C0000, // 0001 LDNIL R3
- 0x200C0403, // 0002 NE R3 R2 R3
- 0x780E0005, // 0003 JMPF R3 #000A
- 0x880C0101, // 0004 GETMBR R3 R0 K1
- 0x880C0702, // 0005 GETMBR R3 R3 K2
- 0x880C0703, // 0006 GETMBR R3 R3 K3
- 0x8C0C0704, // 0007 GETMET R3 R3 K4
- 0x5C140400, // 0008 MOVE R5 R2
- 0x7C0C0400, // 0009 CALL R3 2
- 0x4C0C0000, // 000A LDNIL R3
- 0x90060003, // 000B SETMBR R1 K0 R3
- 0x80000000, // 000C RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_cluster_list_sorted
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_get_cluster_list_sorted, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(device),
- /* K1 */ be_nested_str_weak(k2l),
- /* K2 */ be_nested_str_weak(clusters),
- }),
- be_str_weak(get_cluster_list_sorted),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x880C0102, // 0002 GETMBR R3 R0 K2
- 0x7C040400, // 0003 CALL R1 2
- 0x80040200, // 0004 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: attribute_updated
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_attribute_updated, /* name */
- be_nested_proto(
- 10, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(device),
- /* K1 */ be_nested_str_weak(attribute_updated),
- /* K2 */ be_nested_str_weak(endpoint),
- }),
- be_str_weak(attribute_updated),
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0x88100100, // 0000 GETMBR R4 R0 K0
- 0x8C100901, // 0001 GETMET R4 R4 K1
- 0x88180102, // 0002 GETMBR R6 R0 K2
- 0x5C1C0200, // 0003 MOVE R7 R1
- 0x5C200400, // 0004 MOVE R8 R2
- 0x5C240600, // 0005 MOVE R9 R3
- 0x7C100A00, // 0006 CALL R4 5
- 0x80000000, // 0007 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: timed_request
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_timed_request, /* name */
- be_nested_proto(
- 5, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(timed_request),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x4C100000, // 0000 LDNIL R4
- 0x80040800, // 0001 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_endpoint
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_get_endpoint, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(endpoint),
- }),
- be_str_weak(get_endpoint),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_shadow
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_update_shadow, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(tick),
- /* K1 */ be_nested_str_weak(device),
- }),
- be_str_weak(update_shadow),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x88040101, // 0000 GETMBR R1 R0 K1
- 0x88040300, // 0001 GETMBR R1 R1 K0
- 0x90020001, // 0002 SETMBR R0 K0 R1
- 0x80000000, // 0003 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: consolidate_update_commands
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_consolidate_update_commands, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(UPDATE_COMMANDS),
- }),
- be_str_weak(consolidate_update_commands),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: append_state_json
********************************************************************/
-extern const bclass be_class_Matter_Plugin;
be_local_closure(class_Matter_Plugin_append_state_json, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(),
- }),
+ &be_ktab_class_Matter_Plugin, /* shared constants */
be_str_weak(append_state_json),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -925,41 +99,31 @@ be_local_closure(class_Matter_Plugin_append_state_json, /* name */
/********************************************************************
** Solidified function: state_json
********************************************************************/
-extern const bclass be_class_Matter_Plugin;
be_local_closure(class_Matter_Plugin_state_json, /* name */
be_nested_proto(
9, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(json),
- /* K1 */ be_nested_str_weak(node_label),
- /* K2 */ be_nested_str_weak(_X2C_X22Name_X22_X3A_X25s),
- /* K3 */ be_nested_str_weak(dump),
- /* K4 */ be_nested_str_weak(),
- /* K5 */ be_nested_str_weak(append_state_json),
- /* K6 */ be_nested_str_weak(_X7B_X22Ep_X22_X3A_X25i_X25s_X25s_X7D),
- /* K7 */ be_nested_str_weak(endpoint),
- }),
+ &be_ktab_class_Matter_Plugin, /* shared constants */
be_str_weak(state_json),
&be_const_str_solidified,
( &(const binstruction[25]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0xA4060200, // 0000 IMPORT R1 K1
+ 0x88080102, // 0001 GETMBR R2 R0 K2
0x780A0006, // 0002 JMPF R2 #000A
0x60080018, // 0003 GETGBL R2 G24
- 0x580C0002, // 0004 LDCONST R3 K2
- 0x8C100303, // 0005 GETMET R4 R1 K3
- 0x88180101, // 0006 GETMBR R6 R0 K1
+ 0x580C0003, // 0004 LDCONST R3 K3
+ 0x8C100304, // 0005 GETMET R4 R1 K4
+ 0x88180102, // 0006 GETMBR R6 R0 K2
0x7C100400, // 0007 CALL R4 2
0x7C080400, // 0008 CALL R2 2
0x70020000, // 0009 JMP #000B
- 0x58080004, // 000A LDCONST R2 K4
+ 0x58080000, // 000A LDCONST R2 K0
0x8C0C0105, // 000B GETMET R3 R0 K5
0x7C0C0200, // 000C CALL R3 1
0x780E0007, // 000D JMPF R3 #0016
@@ -981,65 +145,20 @@ be_local_closure(class_Matter_Plugin_state_json, /* name */
/********************************************************************
-** Solidified function: has
+** Solidified function: timed_request
********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_has, /* name */
- be_nested_proto(
- 6, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(clusters),
- /* K1 */ be_nested_str_weak(contains),
- /* K2 */ be_nested_str_weak(endpoints),
- /* K3 */ be_nested_str_weak(find),
- }),
- be_str_weak(has),
- &be_const_str_solidified,
- ( &(const binstruction[15]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x5C140200, // 0002 MOVE R5 R1
- 0x7C0C0400, // 0003 CALL R3 2
- 0x780E0006, // 0004 JMPF R3 #000C
- 0x880C0102, // 0005 GETMBR R3 R0 K2
- 0x8C0C0703, // 0006 GETMET R3 R3 K3
- 0x5C140400, // 0007 MOVE R5 R2
- 0x7C0C0400, // 0008 CALL R3 2
- 0x4C100000, // 0009 LDNIL R4
- 0x200C0604, // 000A NE R3 R3 R4
- 0x740E0000, // 000B JMPT R3 #000D
- 0x500C0001, // 000C LDBOOL R3 0 1
- 0x500C0200, // 000D LDBOOL R3 1 0
- 0x80040600, // 000E RET 1 R3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: invoke_request
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_invoke_request, /* name */
+be_local_closure(class_Matter_Plugin_timed_request, /* name */
be_nested_proto(
5, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(invoke_request),
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(timed_request),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x4C100000, // 0000 LDNIL R4
@@ -1051,38 +170,52 @@ be_local_closure(class_Matter_Plugin_invoke_request, /* name */
/********************************************************************
-** Solidified function: update_shadow_lazy
+** Solidified function: get_attribute_list_bytes
********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_update_shadow_lazy, /* name */
+be_local_closure(class_Matter_Plugin_get_attribute_list_bytes, /* name */
be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
+ 6, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(tick),
- /* K1 */ be_nested_str_weak(device),
- /* K2 */ be_nested_str_weak(update_shadow),
- }),
- be_str_weak(update_shadow_lazy),
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(get_attribute_list_bytes),
&be_const_str_solidified,
- ( &(const binstruction[11]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x88080500, // 0002 GETMBR R2 R2 K0
- 0x20040202, // 0003 NE R1 R1 R2
- 0x78060004, // 0004 JMPF R1 #000A
- 0x8C040102, // 0005 GETMET R1 R0 K2
- 0x7C040200, // 0006 CALL R1 1
- 0x88040101, // 0007 GETMBR R1 R0 K1
- 0x88040300, // 0008 GETMBR R1 R1 K0
- 0x90020001, // 0009 SETMBR R0 K0 R1
- 0x80000000, // 000A RET 0
+ ( &(const binstruction[ 6]) { /* code */
+ 0x88080108, // 0000 GETMBR R2 R0 K8
+ 0x8C080509, // 0001 GETMET R2 R2 K9
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x4C140000, // 0003 LDNIL R5
+ 0x7C080600, // 0004 CALL R2 3
+ 0x80040400, // 0005 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_sensors
+********************************************************************/
+be_local_closure(class_Matter_Plugin_parse_sensors, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(parse_sensors),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
})
)
);
@@ -1092,18 +225,17 @@ be_local_closure(class_Matter_Plugin_update_shadow_lazy, /* name */
/********************************************************************
** Solidified function: update_virtual
********************************************************************/
-extern const bclass be_class_Matter_Plugin;
be_local_closure(class_Matter_Plugin_update_virtual, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
be_str_weak(update_virtual),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -1114,106 +246,24 @@ be_local_closure(class_Matter_Plugin_update_virtual, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: consolidate_clusters
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_consolidate_clusters, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(CLUSTERS),
- }),
- be_str_weak(consolidate_clusters),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: contains_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_contains_attribute, /* name */
- be_nested_proto(
- 7, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(clusters),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_const_int(0),
- /* K3 */ be_const_int(1),
- }),
- be_str_weak(contains_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[22]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x5C140200, // 0002 MOVE R5 R1
- 0x7C0C0400, // 0003 CALL R3 2
- 0x4C100000, // 0004 LDNIL R4
- 0x20100604, // 0005 NE R4 R3 R4
- 0x7812000C, // 0006 JMPF R4 #0014
- 0x58100002, // 0007 LDCONST R4 K2
- 0x6014000C, // 0008 GETGBL R5 G12
- 0x5C180600, // 0009 MOVE R6 R3
- 0x7C140200, // 000A CALL R5 1
- 0x14140805, // 000B LT R5 R4 R5
- 0x78160006, // 000C JMPF R5 #0014
- 0x94140604, // 000D GETIDX R5 R3 R4
- 0x1C140A02, // 000E EQ R5 R5 R2
- 0x78160001, // 000F JMPF R5 #0012
- 0x50140200, // 0010 LDBOOL R5 1 0
- 0x80040A00, // 0011 RET 1 R5
- 0x00100903, // 0012 ADD R4 R4 K3
- 0x7001FFF3, // 0013 JMP #0008
- 0x50100000, // 0014 LDBOOL R4 0 0
- 0x80040800, // 0015 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: get_name
********************************************************************/
-extern const bclass be_class_Matter_Plugin;
be_local_closure(class_Matter_Plugin_get_name, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(node_label),
- }),
+ &be_ktab_class_Matter_Plugin, /* shared constants */
be_str_weak(get_name),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040102, // 0000 GETMBR R1 R0 K2
0x80040200, // 0001 RET 1 R1
})
)
@@ -1222,26 +272,34 @@ be_local_closure(class_Matter_Plugin_get_name, /* name */
/********************************************************************
-** Solidified function:
+** Solidified function: ui_conf_to_string
********************************************************************/
-be_local_closure(class_Matter_Plugin__X3Clambda_X3E, /* name */
+be_local_closure(class_Matter_Plugin_ui_conf_to_string, /* name */
be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 0, /* varg */
+ 9, /* nstack */
+ 2, /* argc */
+ 12, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(_X3Clambda_X3E),
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(ui_conf_to_string),
&be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x60040008, // 0000 GETGBL R1 G8
- 0x5C080000, // 0001 MOVE R2 R0
- 0x7C040200, // 0002 CALL R1 1
- 0x80040200, // 0003 RET 1 R1
+ ( &(const binstruction[12]) { /* code */
+ 0x5808000A, // 0000 LDCONST R2 K10
+ 0x880C010B, // 0001 GETMBR R3 R0 K11
+ 0x780E0006, // 0002 JMPF R3 #000A
+ 0x60100008, // 0003 GETGBL R4 G8
+ 0x8C140309, // 0004 GETMET R5 R1 K9
+ 0x5C1C0600, // 0005 MOVE R7 R3
+ 0x58200000, // 0006 LDCONST R8 K0
+ 0x7C140600, // 0007 CALL R5 3
+ 0x7C100200, // 0008 CALL R4 1
+ 0x70020000, // 0009 JMP #000B
+ 0x58100000, // 000A LDCONST R4 K0
+ 0x80040800, // 000B RET 1 R4
})
)
);
@@ -1249,31 +307,63 @@ be_local_closure(class_Matter_Plugin__X3Clambda_X3E, /* name */
/********************************************************************
-** Solidified function: contains_cluster
+** Solidified function: ack_request
********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_contains_cluster, /* name */
+be_local_closure(class_Matter_Plugin_ack_request, /* name */
be_nested_proto(
- 5, /* nstack */
+ 6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(clusters),
- /* K1 */ be_nested_str_weak(contains),
- }),
- be_str_weak(contains_cluster),
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(ack_request),
+ &be_const_str_solidified,
+ ( &(const binstruction[13]) { /* code */
+ 0x8808030C, // 0000 GETMBR R2 R1 K12
+ 0x4C0C0000, // 0001 LDNIL R3
+ 0x200C0403, // 0002 NE R3 R2 R3
+ 0x780E0005, // 0003 JMPF R3 #000A
+ 0x880C010D, // 0004 GETMBR R3 R0 K13
+ 0x880C070E, // 0005 GETMBR R3 R3 K14
+ 0x880C070F, // 0006 GETMBR R3 R3 K15
+ 0x8C0C0710, // 0007 GETMET R3 R3 K16
+ 0x5C140400, // 0008 MOVE R5 R2
+ 0x7C0C0400, // 0009 CALL R3 2
+ 0x4C0C0000, // 000A LDNIL R3
+ 0x90061803, // 000B SETMBR R1 K12 R3
+ 0x80000000, // 000C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_cluster_list_sorted
+********************************************************************/
+be_local_closure(class_Matter_Plugin_get_cluster_list_sorted, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(get_cluster_list_sorted),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100200, // 0002 MOVE R4 R1
- 0x7C080400, // 0003 CALL R2 2
- 0x80040400, // 0004 RET 1 R2
+ 0x8804010D, // 0000 GETMBR R1 R0 K13
+ 0x8C040311, // 0001 GETMET R1 R1 K17
+ 0x880C0108, // 0002 GETMBR R3 R0 K8
+ 0x7C040400, // 0003 CALL R1 2
+ 0x80040200, // 0004 RET 1 R1
})
)
);
@@ -1281,25 +371,33 @@ be_local_closure(class_Matter_Plugin_contains_cluster, /* name */
/********************************************************************
-** Solidified function: is_local_device
+** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_Plugin;
-be_local_closure(class_Matter_Plugin_is_local_device, /* name */
+be_local_closure(class_Matter_Plugin_init, /* name */
be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
+ 8, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(is_local_device),
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(init),
&be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x50040200, // 0000 LDBOOL R1 1 0
- 0x80040200, // 0001 RET 1 R1
+ ( &(const binstruction[11]) { /* code */
+ 0x90021A01, // 0000 SETMBR R0 K13 R1
+ 0x90020E02, // 0001 SETMBR R0 K7 R2
+ 0x8C100112, // 0002 GETMET R4 R0 K18
+ 0x5C180600, // 0003 MOVE R6 R3
+ 0x7C100400, // 0004 CALL R4 2
+ 0x8C100709, // 0005 GETMET R4 R3 K9
+ 0x58180013, // 0006 LDCONST R6 K19
+ 0x581C0000, // 0007 LDCONST R7 K0
+ 0x7C100600, // 0008 CALL R4 3
+ 0x90020404, // 0009 SETMBR R0 K2 R4
+ 0x80000000, // 000A RET 0
})
)
);
@@ -1309,28 +407,23 @@ be_local_closure(class_Matter_Plugin_is_local_device, /* name */
/********************************************************************
** Solidified function: ui_string_to_conf
********************************************************************/
-extern const bclass be_class_Matter_Plugin;
be_local_closure(class_Matter_Plugin_ui_string_to_conf, /* name */
be_nested_proto(
8, /* nstack */
3, /* argc */
- 4, /* varg */
+ 12, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_Plugin),
- /* K1 */ be_nested_str_weak(ARG),
- /* K2 */ be_nested_str_weak(ARG_TYPE),
- }),
+ &be_ktab_class_Matter_Plugin, /* shared constants */
be_str_weak(ui_string_to_conf),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
- 0x580C0000, // 0000 LDCONST R3 K0
- 0x88100101, // 0001 GETMBR R4 R0 K1
- 0x88140102, // 0002 GETMBR R5 R0 K2
+ 0x580C000A, // 0000 LDCONST R3 K10
+ 0x8810010B, // 0001 GETMBR R4 R0 K11
+ 0x88140114, // 0002 GETMBR R5 R0 K20
0x780A0004, // 0003 JMPF R2 #0009
0x78120003, // 0004 JMPF R4 #0009
0x5C180A00, // 0005 MOVE R6 R5
@@ -1344,43 +437,926 @@ be_local_closure(class_Matter_Plugin_ui_string_to_conf, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: every_250ms
+********************************************************************/
+be_local_closure(class_Matter_Plugin_every_250ms, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(every_250ms),
+ &be_const_str_solidified,
+ ( &(const binstruction[28]) { /* code */
+ 0x88040115, // 0000 GETMBR R1 R0 K21
+ 0x4C080000, // 0001 LDNIL R2
+ 0x1C040202, // 0002 EQ R1 R1 R2
+ 0x78060005, // 0003 JMPF R1 #000A
+ 0xB8062C00, // 0004 GETNGBL R1 K22
+ 0x8C040317, // 0005 GETMET R1 R1 K23
+ 0x880C0118, // 0006 GETMBR R3 R0 K24
+ 0x7C040400, // 0007 CALL R1 2
+ 0x90022A01, // 0008 SETMBR R0 K21 R1
+ 0x70020010, // 0009 JMP #001B
+ 0xB8063200, // 000A GETNGBL R1 K25
+ 0x8C04031A, // 000B GETMET R1 R1 K26
+ 0x880C0115, // 000C GETMBR R3 R0 K21
+ 0x7C040400, // 000D CALL R1 2
+ 0x7806000B, // 000E JMPF R1 #001B
+ 0x8804011B, // 000F GETMBR R1 R0 K27
+ 0x8808010D, // 0010 GETMBR R2 R0 K13
+ 0x8808051B, // 0011 GETMBR R2 R2 K27
+ 0x20040202, // 0012 NE R1 R1 R2
+ 0x78060001, // 0013 JMPF R1 #0016
+ 0x8C04011C, // 0014 GETMET R1 R0 K28
+ 0x7C040200, // 0015 CALL R1 1
+ 0xB8063200, // 0016 GETNGBL R1 K25
+ 0x8C04031D, // 0017 GETMET R1 R1 K29
+ 0x880C0118, // 0018 GETMBR R3 R0 K24
+ 0x7C040400, // 0019 CALL R1 2
+ 0x90022A01, // 001A SETMBR R0 K21 R1
+ 0x80000000, // 001B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: publish_event
+********************************************************************/
+be_local_closure(class_Matter_Plugin_publish_event, /* name */
+ be_nested_proto(
+ 17, /* nstack */
+ 7, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(publish_event),
+ &be_const_str_solidified,
+ ( &(const binstruction[13]) { /* code */
+ 0x881C010D, // 0000 GETMBR R7 R0 K13
+ 0x881C0F1E, // 0001 GETMBR R7 R7 K30
+ 0x8C1C0F1F, // 0002 GETMET R7 R7 K31
+ 0x88240107, // 0003 GETMBR R9 R0 K7
+ 0x5C280200, // 0004 MOVE R10 R1
+ 0x5C2C0400, // 0005 MOVE R11 R2
+ 0x50300200, // 0006 LDBOOL R12 1 0
+ 0x5C340600, // 0007 MOVE R13 R3
+ 0x5C380800, // 0008 MOVE R14 R4
+ 0x5C3C0A00, // 0009 MOVE R15 R5
+ 0x5C400C00, // 000A MOVE R16 R6
+ 0x7C1C1200, // 000B CALL R7 9
+ 0x80000000, // 000C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: subscribe_event
+********************************************************************/
+be_local_closure(class_Matter_Plugin_subscribe_event, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 5, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(subscribe_event),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x4C140000, // 0000 LDNIL R5
+ 0x80040A00, // 0001 RET 1 R5
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_configuration
+********************************************************************/
+be_local_closure(class_Matter_Plugin_parse_configuration, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(parse_configuration),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: _parse_update_virtual
+********************************************************************/
+be_local_closure(class_Matter_Plugin__parse_update_virtual, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 7, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(_parse_update_virtual),
+ &be_const_str_solidified,
+ ( &(const binstruction[18]) { /* code */
+ 0x8C1C0309, // 0000 GETMET R7 R1 K9
+ 0x5C240400, // 0001 MOVE R9 R2
+ 0x7C1C0400, // 0002 CALL R7 2
+ 0x4C200000, // 0003 LDNIL R8
+ 0x20200E08, // 0004 NE R8 R7 R8
+ 0x7822000A, // 0005 JMPF R8 #0011
+ 0x5C200800, // 0006 MOVE R8 R4
+ 0x5C240E00, // 0007 MOVE R9 R7
+ 0x7C200200, // 0008 CALL R8 1
+ 0x5C1C1000, // 0009 MOVE R7 R8
+ 0x20200E03, // 000A NE R8 R7 R3
+ 0x78220003, // 000B JMPF R8 #0010
+ 0x8C200120, // 000C GETMET R8 R0 K32
+ 0x5C280A00, // 000D MOVE R10 R5
+ 0x5C2C0C00, // 000E MOVE R11 R6
+ 0x7C200600, // 000F CALL R8 3
+ 0x80040E00, // 0010 RET 1 R7
+ 0x80040600, // 0011 RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: subscribe_attribute
+********************************************************************/
+be_local_closure(class_Matter_Plugin_subscribe_attribute, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 5, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(subscribe_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x4C140000, // 0000 LDNIL R5
+ 0x80040A00, // 0001 RET 1 R5
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: contains_attribute
+********************************************************************/
+be_local_closure(class_Matter_Plugin_contains_attribute, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(contains_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[26]) { /* code */
+ 0x880C0108, // 0000 GETMBR R3 R0 K8
+ 0x8C0C0709, // 0001 GETMET R3 R3 K9
+ 0x5C140200, // 0002 MOVE R5 R1
+ 0x7C0C0400, // 0003 CALL R3 2
+ 0x4C100000, // 0004 LDNIL R4
+ 0x20100604, // 0005 NE R4 R3 R4
+ 0x78120010, // 0006 JMPF R4 #0018
+ 0x58100021, // 0007 LDCONST R4 K33
+ 0x6014000C, // 0008 GETGBL R5 G12
+ 0x5C180600, // 0009 MOVE R6 R3
+ 0x7C140200, // 000A CALL R5 1
+ 0x0C140B22, // 000B DIV R5 R5 K34
+ 0x14180805, // 000C LT R6 R4 R5
+ 0x781A0009, // 000D JMPF R6 #0018
+ 0x8C180723, // 000E GETMET R6 R3 K35
+ 0x08200922, // 000F MUL R8 R4 K34
+ 0x5425FFFD, // 0010 LDINT R9 -2
+ 0x7C180600, // 0011 CALL R6 3
+ 0x1C180C02, // 0012 EQ R6 R6 R2
+ 0x781A0001, // 0013 JMPF R6 #0016
+ 0x50180200, // 0014 LDBOOL R6 1 0
+ 0x80040C00, // 0015 RET 1 R6
+ 0x00100924, // 0016 ADD R4 R4 K36
+ 0x7001FFF3, // 0017 JMP #000C
+ 0x50100000, // 0018 LDBOOL R4 0 0
+ 0x80040800, // 0019 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_clusters
+********************************************************************/
+be_local_closure(class_Matter_Plugin_get_clusters, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(get_clusters),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040108, // 0000 GETMBR R1 R0 K8
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function:
+********************************************************************/
+be_local_closure(class_Matter_Plugin__X3Clambda_X3E, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 8, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x60040008, // 0000 GETGBL R1 G8
+ 0x5C080000, // 0001 MOVE R2 R0
+ 0x7C040200, // 0002 CALL R1 1
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: update_shadow_lazy
+********************************************************************/
+be_local_closure(class_Matter_Plugin_update_shadow_lazy, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(update_shadow_lazy),
+ &be_const_str_solidified,
+ ( &(const binstruction[11]) { /* code */
+ 0x8804011B, // 0000 GETMBR R1 R0 K27
+ 0x8808010D, // 0001 GETMBR R2 R0 K13
+ 0x8808051B, // 0002 GETMBR R2 R2 K27
+ 0x20040202, // 0003 NE R1 R1 R2
+ 0x78060004, // 0004 JMPF R1 #000A
+ 0x8C04011C, // 0005 GETMET R1 R0 K28
+ 0x7C040200, // 0006 CALL R1 1
+ 0x8804010D, // 0007 GETMBR R1 R0 K13
+ 0x8804031B, // 0008 GETMBR R1 R1 K27
+ 0x90023601, // 0009 SETMBR R0 K27 R1
+ 0x80000000, // 000A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: consolidate_update_commands
+********************************************************************/
+be_local_closure(class_Matter_Plugin_consolidate_update_commands, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(consolidate_update_commands),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040125, // 0000 GETMBR R1 R0 K37
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: publish_command
+********************************************************************/
+be_local_closure(class_Matter_Plugin_publish_command, /* name */
+ be_nested_proto(
+ 16, /* nstack */
+ 7, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(publish_command),
+ &be_const_str_solidified,
+ ( &(const binstruction[46]) { /* code */
+ 0xA41E0200, // 0000 IMPORT R7 K1
+ 0x60200018, // 0001 GETGBL R8 G24
+ 0x58240026, // 0002 LDCONST R9 K38
+ 0x8C280F04, // 0003 GETMET R10 R7 K4
+ 0x5C300200, // 0004 MOVE R12 R1
+ 0x7C280400, // 0005 CALL R10 2
+ 0x8C2C0F04, // 0006 GETMET R11 R7 K4
+ 0x5C340400, // 0007 MOVE R13 R2
+ 0x7C2C0400, // 0008 CALL R11 2
+ 0x7C200600, // 0009 CALL R8 3
+ 0x4C240000, // 000A LDNIL R9
+ 0x20240609, // 000B NE R9 R3 R9
+ 0x7826000A, // 000C JMPF R9 #0018
+ 0x60240018, // 000D GETGBL R9 G24
+ 0x58280027, // 000E LDCONST R10 K39
+ 0x5C2C1000, // 000F MOVE R11 R8
+ 0x8C300F04, // 0010 GETMET R12 R7 K4
+ 0x5C380600, // 0011 MOVE R14 R3
+ 0x7C300400, // 0012 CALL R12 2
+ 0x8C340F04, // 0013 GETMET R13 R7 K4
+ 0x5C3C0800, // 0014 MOVE R15 R4
+ 0x7C340400, // 0015 CALL R13 2
+ 0x7C240800, // 0016 CALL R9 4
+ 0x5C201200, // 0017 MOVE R8 R9
+ 0x4C240000, // 0018 LDNIL R9
+ 0x20240A09, // 0019 NE R9 R5 R9
+ 0x7826000A, // 001A JMPF R9 #0026
+ 0x60240018, // 001B GETGBL R9 G24
+ 0x58280027, // 001C LDCONST R10 K39
+ 0x5C2C1000, // 001D MOVE R11 R8
+ 0x8C300F04, // 001E GETMET R12 R7 K4
+ 0x5C380A00, // 001F MOVE R14 R5
+ 0x7C300400, // 0020 CALL R12 2
+ 0x8C340F04, // 0021 GETMET R13 R7 K4
+ 0x5C3C0C00, // 0022 MOVE R15 R6
+ 0x7C340400, // 0023 CALL R13 2
+ 0x7C240800, // 0024 CALL R9 4
+ 0x5C201200, // 0025 MOVE R8 R9
+ 0xB8262C00, // 0026 GETNGBL R9 K22
+ 0x8C241328, // 0027 GETMET R9 R9 K40
+ 0x582C0029, // 0028 LDCONST R11 K41
+ 0x88300107, // 0029 GETMBR R12 R0 K7
+ 0x88340102, // 002A GETMBR R13 R0 K2
+ 0x5C381000, // 002B MOVE R14 R8
+ 0x7C240A00, // 002C CALL R9 5
+ 0x80000000, // 002D RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: contains_cluster
+********************************************************************/
+be_local_closure(class_Matter_Plugin_contains_cluster, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(contains_cluster),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x88080108, // 0000 GETMBR R2 R0 K8
+ 0x8C08052A, // 0001 GETMET R2 R2 K42
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x7C080400, // 0003 CALL R2 2
+ 0x80040400, // 0004 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_name
+********************************************************************/
+be_local_closure(class_Matter_Plugin_set_name, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(set_name),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x88080102, // 0000 GETMBR R2 R0 K2
+ 0x20080202, // 0001 NE R2 R1 R2
+ 0x780A0003, // 0002 JMPF R2 #0007
+ 0x8C080120, // 0003 GETMET R2 R0 K32
+ 0x54120038, // 0004 LDINT R4 57
+ 0x54160004, // 0005 LDINT R5 5
+ 0x7C080600, // 0006 CALL R2 3
+ 0x90020401, // 0007 SETMBR R0 K2 R1
+ 0x80000000, // 0008 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_endpoint
+********************************************************************/
+be_local_closure(class_Matter_Plugin_get_endpoint, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(get_endpoint),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040107, // 0000 GETMBR R1 R0 K7
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: write_attribute
+********************************************************************/
+be_local_closure(class_Matter_Plugin_write_attribute, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(write_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x4C100000, // 0000 LDNIL R4
+ 0x80040800, // 0001 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: update_shadow
+********************************************************************/
+be_local_closure(class_Matter_Plugin_update_shadow, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(update_shadow),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8804010D, // 0000 GETMBR R1 R0 K13
+ 0x8804031B, // 0001 GETMBR R1 R1 K27
+ 0x90023601, // 0002 SETMBR R0 K27 R1
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: invoke_request
+********************************************************************/
+be_local_closure(class_Matter_Plugin_invoke_request, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(invoke_request),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x4C100000, // 0000 LDNIL R4
+ 0x80040800, // 0001 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: attribute_updated
+********************************************************************/
+be_local_closure(class_Matter_Plugin_attribute_updated, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(attribute_updated),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 8]) { /* code */
+ 0x8810010D, // 0000 GETMBR R4 R0 K13
+ 0x8C100920, // 0001 GETMET R4 R4 K32
+ 0x88180107, // 0002 GETMBR R6 R0 K7
+ 0x5C1C0200, // 0003 MOVE R7 R1
+ 0x5C200400, // 0004 MOVE R8 R2
+ 0x5C240600, // 0005 MOVE R9 R3
+ 0x7C100A00, // 0006 CALL R4 5
+ 0x80000000, // 0007 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: is_local_device
+********************************************************************/
+be_local_closure(class_Matter_Plugin_is_local_device, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(is_local_device),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x8804012B, // 0000 GETMBR R1 R0 K43
+ 0x78060000, // 0001 JMPF R1 #0003
+ 0x50040001, // 0002 LDBOOL R1 0 1
+ 0x50040200, // 0003 LDBOOL R1 1 0
+ 0x80040200, // 0004 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_event
+********************************************************************/
+be_local_closure(class_Matter_Plugin_read_event, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 5, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(read_event),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x4C140000, // 0000 LDNIL R5
+ 0x80040A00, // 0001 RET 1 R5
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_attribute
+********************************************************************/
+be_local_closure(class_Matter_Plugin_read_attribute, /* name */
+ be_nested_proto(
+ 19, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin, /* shared constants */
+ be_str_weak(read_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[169]) { /* code */
+ 0xB8122C00, // 0000 GETNGBL R4 K22
+ 0x8810092C, // 0001 GETMBR R4 R4 K44
+ 0x8814052D, // 0002 GETMBR R5 R2 K45
+ 0x8818052E, // 0003 GETMBR R6 R2 K46
+ 0x541E001C, // 0004 LDINT R7 29
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E0050, // 0006 JMPF R7 #0058
+ 0x1C1C0D21, // 0007 EQ R7 R6 K33
+ 0x781E001B, // 0008 JMPF R7 #0025
+ 0x8C1C092F, // 0009 GETMET R7 R4 K47
+ 0x7C1C0200, // 000A CALL R7 1
+ 0x88200130, // 000B GETMBR R8 R0 K48
+ 0x60240010, // 000C GETGBL R9 G16
+ 0x8C281131, // 000D GETMET R10 R8 K49
+ 0x7C280200, // 000E CALL R10 1
+ 0x7C240200, // 000F CALL R9 1
+ 0xA802000E, // 0010 EXBLK 0 #0020
+ 0x5C281200, // 0011 MOVE R10 R9
+ 0x7C280000, // 0012 CALL R10 0
+ 0x8C2C0F32, // 0013 GETMET R11 R7 K50
+ 0x7C2C0200, // 0014 CALL R11 1
+ 0x8C301733, // 0015 GETMET R12 R11 K51
+ 0x58380021, // 0016 LDCONST R14 K33
+ 0x883C0934, // 0017 GETMBR R15 R4 K52
+ 0x5C401400, // 0018 MOVE R16 R10
+ 0x7C300800, // 0019 CALL R12 4
+ 0x8C301733, // 001A GETMET R12 R11 K51
+ 0x58380024, // 001B LDCONST R14 K36
+ 0x883C0934, // 001C GETMBR R15 R4 K52
+ 0x9440100A, // 001D GETIDX R16 R8 R10
+ 0x7C300800, // 001E CALL R12 4
+ 0x7001FFF0, // 001F JMP #0011
+ 0x58240035, // 0020 LDCONST R9 K53
+ 0xAC240200, // 0021 CATCH R9 1 0
+ 0xB0080000, // 0022 RAISE 2 R0 R0
+ 0x80040E00, // 0023 RET 1 R7
+ 0x70020032, // 0024 JMP #0058
+ 0x1C1C0D24, // 0025 EQ R7 R6 K36
+ 0x781E0013, // 0026 JMPF R7 #003B
+ 0x8C1C092F, // 0027 GETMET R7 R4 K47
+ 0x7C1C0200, // 0028 CALL R7 1
+ 0x60200010, // 0029 GETGBL R8 G16
+ 0x8C240136, // 002A GETMET R9 R0 K54
+ 0x7C240200, // 002B CALL R9 1
+ 0x7C200200, // 002C CALL R8 1
+ 0xA8020007, // 002D EXBLK 0 #0036
+ 0x5C241000, // 002E MOVE R9 R8
+ 0x7C240000, // 002F CALL R9 0
+ 0x8C280F33, // 0030 GETMET R10 R7 K51
+ 0x4C300000, // 0031 LDNIL R12
+ 0x88340937, // 0032 GETMBR R13 R4 K55
+ 0x5C381200, // 0033 MOVE R14 R9
+ 0x7C280800, // 0034 CALL R10 4
+ 0x7001FFF7, // 0035 JMP #002E
+ 0x58200035, // 0036 LDCONST R8 K53
+ 0xAC200200, // 0037 CATCH R8 1 0
+ 0xB0080000, // 0038 RAISE 2 R0 R0
+ 0x80040E00, // 0039 RET 1 R7
+ 0x7002001C, // 003A JMP #0058
+ 0x1C1C0D22, // 003B EQ R7 R6 K34
+ 0x781E0003, // 003C JMPF R7 #0041
+ 0x8C1C092F, // 003D GETMET R7 R4 K47
+ 0x7C1C0200, // 003E CALL R7 1
+ 0x80040E00, // 003F RET 1 R7
+ 0x70020016, // 0040 JMP #0058
+ 0x1C1C0D38, // 0041 EQ R7 R6 K56
+ 0x781E0003, // 0042 JMPF R7 #0047
+ 0x8C1C092F, // 0043 GETMET R7 R4 K47
+ 0x7C1C0200, // 0044 CALL R7 1
+ 0x80040E00, // 0045 RET 1 R7
+ 0x70020010, // 0046 JMP #0058
+ 0x541EFFFB, // 0047 LDINT R7 65532
+ 0x1C1C0C07, // 0048 EQ R7 R6 R7
+ 0x781E0005, // 0049 JMPF R7 #0050
+ 0x8C1C0739, // 004A GETMET R7 R3 K57
+ 0x88240937, // 004B GETMBR R9 R4 K55
+ 0x58280021, // 004C LDCONST R10 K33
+ 0x7C1C0600, // 004D CALL R7 3
+ 0x80040E00, // 004E RET 1 R7
+ 0x70020007, // 004F JMP #0058
+ 0x541EFFFC, // 0050 LDINT R7 65533
+ 0x1C1C0C07, // 0051 EQ R7 R6 R7
+ 0x781E0004, // 0052 JMPF R7 #0058
+ 0x8C1C0739, // 0053 GETMET R7 R3 K57
+ 0x88240937, // 0054 GETMBR R9 R4 K55
+ 0x58280024, // 0055 LDCONST R10 K36
+ 0x7C1C0600, // 0056 CALL R7 3
+ 0x80040E00, // 0057 RET 1 R7
+ 0x541EFFF7, // 0058 LDINT R7 65528
+ 0x1C1C0C07, // 0059 EQ R7 R6 R7
+ 0x781E0003, // 005A JMPF R7 #005F
+ 0x8C1C092F, // 005B GETMET R7 R4 K47
+ 0x7C1C0200, // 005C CALL R7 1
+ 0x80040E00, // 005D RET 1 R7
+ 0x70020047, // 005E JMP #00A7
+ 0x541EFFFA, // 005F LDINT R7 65531
+ 0x1C1C0C07, // 0060 EQ R7 R6 R7
+ 0x781E001B, // 0061 JMPF R7 #007E
+ 0x8C1C092F, // 0062 GETMET R7 R4 K47
+ 0x7C1C0200, // 0063 CALL R7 1
+ 0x8C20013A, // 0064 GETMET R8 R0 K58
+ 0x5C280A00, // 0065 MOVE R10 R5
+ 0x7C200400, // 0066 CALL R8 2
+ 0x4C240000, // 0067 LDNIL R9
+ 0x20241009, // 0068 NE R9 R8 R9
+ 0x78260003, // 0069 JMPF R9 #006E
+ 0x6024000C, // 006A GETGBL R9 G12
+ 0x5C281000, // 006B MOVE R10 R8
+ 0x7C240200, // 006C CALL R9 1
+ 0x70020000, // 006D JMP #006F
+ 0x58240021, // 006E LDCONST R9 K33
+ 0x58280021, // 006F LDCONST R10 K33
+ 0x142C1409, // 0070 LT R11 R10 R9
+ 0x782E0009, // 0071 JMPF R11 #007C
+ 0x8C2C0F33, // 0072 GETMET R11 R7 K51
+ 0x4C340000, // 0073 LDNIL R13
+ 0x88380934, // 0074 GETMBR R14 R4 K52
+ 0x8C3C1123, // 0075 GETMET R15 R8 K35
+ 0x08441522, // 0076 MUL R17 R10 K34
+ 0x5449FFFD, // 0077 LDINT R18 -2
+ 0x7C3C0600, // 0078 CALL R15 3
+ 0x7C2C0800, // 0079 CALL R11 4
+ 0x00281524, // 007A ADD R10 R10 K36
+ 0x7001FFF3, // 007B JMP #0070
+ 0x80040E00, // 007C RET 1 R7
+ 0x70020028, // 007D JMP #00A7
+ 0x541EFFF9, // 007E LDINT R7 65530
+ 0x1C1C0C07, // 007F EQ R7 R6 R7
+ 0x781E0003, // 0080 JMPF R7 #0085
+ 0x8C1C092F, // 0081 GETMET R7 R4 K47
+ 0x7C1C0200, // 0082 CALL R7 1
+ 0x80040E00, // 0083 RET 1 R7
+ 0x70020021, // 0084 JMP #00A7
+ 0x541EFFF8, // 0085 LDINT R7 65529
+ 0x1C1C0C07, // 0086 EQ R7 R6 R7
+ 0x781E0003, // 0087 JMPF R7 #008C
+ 0x8C1C092F, // 0088 GETMET R7 R4 K47
+ 0x7C1C0200, // 0089 CALL R7 1
+ 0x80040E00, // 008A RET 1 R7
+ 0x7002001A, // 008B JMP #00A7
+ 0x541EFFFB, // 008C LDINT R7 65532
+ 0x1C1C0C07, // 008D EQ R7 R6 R7
+ 0x781E000A, // 008E JMPF R7 #009A
+ 0x881C013B, // 008F GETMBR R7 R0 K59
+ 0x8C1C0F09, // 0090 GETMET R7 R7 K9
+ 0x5C240A00, // 0091 MOVE R9 R5
+ 0x58280021, // 0092 LDCONST R10 K33
+ 0x7C1C0600, // 0093 CALL R7 3
+ 0x8C200739, // 0094 GETMET R8 R3 K57
+ 0x88280937, // 0095 GETMBR R10 R4 K55
+ 0x5C2C0E00, // 0096 MOVE R11 R7
+ 0x7C200600, // 0097 CALL R8 3
+ 0x80041000, // 0098 RET 1 R8
+ 0x7002000C, // 0099 JMP #00A7
+ 0x541EFFFC, // 009A LDINT R7 65533
+ 0x1C1C0C07, // 009B EQ R7 R6 R7
+ 0x781E0009, // 009C JMPF R7 #00A7
+ 0x881C013C, // 009D GETMBR R7 R0 K60
+ 0x8C1C0F09, // 009E GETMET R7 R7 K9
+ 0x5C240A00, // 009F MOVE R9 R5
+ 0x58280024, // 00A0 LDCONST R10 K36
+ 0x7C1C0600, // 00A1 CALL R7 3
+ 0x8C200739, // 00A2 GETMET R8 R3 K57
+ 0x88280937, // 00A3 GETMBR R10 R4 K55
+ 0x5C2C0E00, // 00A4 MOVE R11 R7
+ 0x7C200600, // 00A5 CALL R8 3
+ 0x80041000, // 00A6 RET 1 R8
+ 0x4C1C0000, // 00A7 LDNIL R7
+ 0x80040E00, // 00A8 RET 1 R7
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified class: Matter_Plugin
********************************************************************/
be_local_class(Matter_Plugin,
- 6,
+ 5,
NULL,
- be_nested_map(50,
+ be_nested_map(51,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_Plugin_every_250ms_closure) },
- { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak() },
{ be_const_key_weak(FEATURE_MAPS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(2,
+ be_const_map( * be_nested_map(3,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(258, -1), be_const_int(5) },
- { be_const_key_int(49, -1), be_const_int(4) },
+ { be_const_key_int(49, 2), be_const_int(4) },
+ { be_const_key_int(514, -1), be_const_int(2) },
})) ) } )) },
- { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_read_attribute_closure) },
- { be_const_key_weak(subscribe_attribute, 33), be_const_closure(class_Matter_Plugin_subscribe_attribute_closure) },
+ { be_const_key_weak(append_state_json, -1), be_const_closure(class_Matter_Plugin_append_state_json_closure) },
{ be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_init_closure) },
+ { be_const_key_weak(state_json, -1), be_const_closure(class_Matter_Plugin_state_json_closure) },
+ { be_const_key_weak(read_attribute, 10), be_const_closure(class_Matter_Plugin_read_attribute_closure) },
+ { be_const_key_weak(timed_request, -1), be_const_closure(class_Matter_Plugin_timed_request_closure) },
+ { be_const_key_weak(get_attribute_list_bytes, -1), be_const_closure(class_Matter_Plugin_get_attribute_list_bytes_closure) },
+ { be_const_key_weak(read_event, 39), be_const_closure(class_Matter_Plugin_read_event_closure) },
+ { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_update_virtual_closure) },
+ { be_const_key_weak(is_local_device, -1), be_const_closure(class_Matter_Plugin_is_local_device_closure) },
{ be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
- { be_const_key_weak(COMMANDS, 21), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(29, -1), be_const_nil() },
- })) ) } )) },
- { be_const_key_weak(endpoint, -1), be_const_var(2) },
- { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ { be_const_key_weak(ack_request, -1), be_const_closure(class_Matter_Plugin_ack_request_closure) },
+ { be_const_key_weak(get_cluster_list_sorted, -1), be_const_closure(class_Matter_Plugin_get_cluster_list_sorted_closure) },
+ { be_const_key_weak(ui_conf_to_string, 34), be_const_static_closure(class_Matter_Plugin_ui_conf_to_string_closure) },
+ { be_const_key_weak(attribute_updated, -1), be_const_closure(class_Matter_Plugin_attribute_updated_closure) },
+ { be_const_key_weak(UPDATE_COMMANDS, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(0,
( (struct bvalue*) &(const bvalue[]) {
})) ) } )) },
- { be_const_key_weak(VIRTUAL, -1), be_const_bool(0) },
+ { be_const_key_weak(ui_string_to_conf, -1), be_const_static_closure(class_Matter_Plugin_ui_string_to_conf_closure) },
+ { be_const_key_weak(update_next, 48), be_const_var(0) },
{ be_const_key_weak(device, -1), be_const_var(1) },
- { be_const_key_weak(subscribe_event, 3), be_const_closure(class_Matter_Plugin_subscribe_event_closure) },
- { be_const_key_weak(clusters, -1), be_const_var(3) },
- { be_const_key_weak(publish_command, -1), be_const_closure(class_Matter_Plugin_publish_command_closure) },
- { be_const_key_weak(is_local_device, 29), be_const_closure(class_Matter_Plugin_is_local_device_closure) },
- { be_const_key_weak(CLUSTER_REVISIONS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ { be_const_key_weak(publish_event, -1), be_const_closure(class_Matter_Plugin_publish_event_closure) },
+ { be_const_key_weak(subscribe_event, -1), be_const_closure(class_Matter_Plugin_subscribe_event_closure) },
+ { be_const_key_weak(ARG, -1), be_nested_str_weak() },
+ { be_const_key_weak(parse_configuration, 30), be_const_closure(class_Matter_Plugin_parse_configuration_closure) },
+ { be_const_key_weak(update_shadow_lazy, -1), be_const_closure(class_Matter_Plugin_update_shadow_lazy_closure) },
+ { be_const_key_weak(consolidate_update_commands, 12), be_const_closure(class_Matter_Plugin_consolidate_update_commands_closure) },
+ { be_const_key_weak(subscribe_attribute, -1), be_const_closure(class_Matter_Plugin_subscribe_attribute_closure) },
+ { be_const_key_weak(contains_attribute, 38), be_const_closure(class_Matter_Plugin_contains_attribute_closure) },
+ { be_const_key_weak(get_clusters, -1), be_const_closure(class_Matter_Plugin_get_clusters_closure) },
+ { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin__X3Clambda_X3E_closure) },
+ { be_const_key_weak(get_name, 23), be_const_closure(class_Matter_Plugin_get_name_closure) },
+ { be_const_key_weak(write_attribute, 47), be_const_closure(class_Matter_Plugin_write_attribute_closure) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak() },
+ { be_const_key_weak(tick, -1), be_const_var(3) },
+ { be_const_key_weak(CLUSTER_REVISIONS, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(25,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(8, -1), be_const_int(5) },
@@ -1409,56 +1385,31 @@ be_local_class(Matter_Plugin,
{ be_const_key_int(6, -1), be_const_int(5) },
{ be_const_key_int(1024, -1), be_const_int(3) },
})) ) } )) },
- { be_const_key_weak(contains_cluster, -1), be_const_closure(class_Matter_Plugin_contains_cluster_closure) },
- { be_const_key_weak(ack_request, -1), be_const_closure(class_Matter_Plugin_ack_request_closure) },
- { be_const_key_weak(parse_configuration, 34), be_const_closure(class_Matter_Plugin_parse_configuration_closure) },
- { be_const_key_weak(read_event, 28), be_const_closure(class_Matter_Plugin_read_event_closure) },
- { be_const_key_weak(get_name, 43), be_const_closure(class_Matter_Plugin_get_name_closure) },
- { be_const_key_weak(contains_attribute, 31), be_const_closure(class_Matter_Plugin_contains_attribute_closure) },
- { be_const_key_weak(get_cluster_list_sorted, -1), be_const_closure(class_Matter_Plugin_get_cluster_list_sorted_closure) },
- { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ { be_const_key_weak(get_endpoint, 24), be_const_closure(class_Matter_Plugin_get_endpoint_closure) },
+ { be_const_key_weak(COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
+ { be_const_key_int(29, -1), be_const_nil() },
})) ) } )) },
- })) ) } )) },
- { be_const_key_weak(attribute_updated, -1), be_const_closure(class_Matter_Plugin_attribute_updated_closure) },
- { be_const_key_weak(timed_request, 13), be_const_closure(class_Matter_Plugin_timed_request_closure) },
- { be_const_key_weak(get_endpoint, -1), be_const_closure(class_Matter_Plugin_get_endpoint_closure) },
- { be_const_key_weak(consolidate_clusters, -1), be_const_closure(class_Matter_Plugin_consolidate_clusters_closure) },
- { be_const_key_weak(append_state_json, 18), be_const_closure(class_Matter_Plugin_append_state_json_closure) },
- { be_const_key_weak(ui_conf_to_string, 41), be_const_static_closure(class_Matter_Plugin_ui_conf_to_string_closure) },
- { be_const_key_weak(TYPE, 32), be_nested_str_weak() },
- { be_const_key_weak(state_json, -1), be_const_closure(class_Matter_Plugin_state_json_closure) },
- { be_const_key_weak(tick, -1), be_const_var(4) },
- { be_const_key_weak(ARG, 47), be_nested_str_weak() },
- { be_const_key_weak(write_attribute, 36), be_const_closure(class_Matter_Plugin_write_attribute_closure) },
- { be_const_key_weak(has, -1), be_const_closure(class_Matter_Plugin_has_closure) },
- { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_invoke_request_closure) },
- { be_const_key_weak(update_shadow_lazy, -1), be_const_closure(class_Matter_Plugin_update_shadow_lazy_closure) },
- { be_const_key_weak(update_shadow, 22), be_const_closure(class_Matter_Plugin_update_shadow_closure) },
- { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_update_virtual_closure) },
- { be_const_key_weak(node_label, 42), be_const_var(5) },
- { be_const_key_weak(update_next, -1), be_const_var(0) },
+ { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) },
{ be_const_key_weak(set_name, -1), be_const_closure(class_Matter_Plugin_set_name_closure) },
- { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin__X3Clambda_X3E_closure) },
- { be_const_key_weak(ARG_HINT, 17), be_nested_str_weak(_Not_X20used_) },
- { be_const_key_weak(parse_sensors, 15), be_const_closure(class_Matter_Plugin_parse_sensors_closure) },
- { be_const_key_weak(get_attribute_list, -1), be_const_closure(class_Matter_Plugin_get_attribute_list_closure) },
- { be_const_key_weak(ui_string_to_conf, -1), be_const_static_closure(class_Matter_Plugin_ui_string_to_conf_closure) },
- { be_const_key_weak(consolidate_update_commands, 2), be_const_closure(class_Matter_Plugin_consolidate_update_commands_closure) },
+ { be_const_key_weak(contains_cluster, -1), be_const_closure(class_Matter_Plugin_contains_cluster_closure) },
+ { be_const_key_weak(publish_command, -1), be_const_closure(class_Matter_Plugin_publish_command_closure) },
+ { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_update_shadow_closure) },
+ { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_invoke_request_closure) },
+ { be_const_key_weak(parse_sensors, 21), be_const_closure(class_Matter_Plugin_parse_sensors_closure) },
+ { be_const_key_weak(CLUSTERS, 14), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(1,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(29, -1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
+ })) ) } )) },
+ { be_const_key_weak(VIRTUAL, -1), be_const_bool(0) },
+ { be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak() },
+ { be_const_key_weak(node_label, 9), be_const_var(4) },
+ { be_const_key_weak(_parse_update_virtual, -1), be_const_closure(class_Matter_Plugin__parse_update_virtual_closure) },
+ { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_Plugin_every_250ms_closure) },
+ { be_const_key_weak(endpoint, -1), be_const_var(2) },
+ { be_const_key_weak(BRIDGE, 0), be_const_bool(0) },
})),
be_str_weak(Matter_Plugin)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h
index 8b47bb1a8..ab3289d1f 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Aggregator.h
@@ -3,43 +3,48 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_Plugin_Aggregator' ktab size: 21, total: 29 (saved 64 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Aggregator[21] = {
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(TLV),
+ /* K2 */ be_nested_str_weak(cluster),
+ /* K3 */ be_nested_str_weak(attribute),
+ /* K4 */ be_const_int(3),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_nested_str_weak(set),
+ /* K7 */ be_nested_str_weak(U2),
+ /* K8 */ be_const_int(1),
+ /* K9 */ be_nested_str_weak(U1),
+ /* K10 */ be_const_int(2),
+ /* K11 */ be_nested_str_weak(Matter_TLV_array),
+ /* K12 */ be_nested_str_weak(add_TLV),
+ /* K13 */ be_nested_str_weak(device),
+ /* K14 */ be_nested_str_weak(get_active_endpoints),
+ /* K15 */ be_nested_str_weak(AGGREGATOR_ENDPOINT),
+ /* K16 */ be_nested_str_weak(stop_iteration),
+ /* K17 */ be_nested_str_weak(read_attribute),
+ /* K18 */ be_nested_str_weak(command),
+ /* K19 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K20 */ be_nested_str_weak(invoke_request),
+};
+
extern const bclass be_class_Matter_Plugin_Aggregator;
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Aggregator;
be_local_closure(class_Matter_Plugin_Aggregator_read_attribute, /* name */
be_nested_proto(
16, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Aggregator,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_const_int(3),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(U2),
- /* K8 */ be_const_int(1),
- /* K9 */ be_nested_str_weak(U1),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(Matter_TLV_array),
- /* K12 */ be_nested_str_weak(add_TLV),
- /* K13 */ be_nested_str_weak(device),
- /* K14 */ be_nested_str_weak(get_active_endpoints),
- /* K15 */ be_nested_str_weak(AGGREGATOR_ENDPOINT),
- /* K16 */ be_nested_str_weak(stop_iteration),
- /* K17 */ be_nested_str_weak(read_attribute),
- }),
+ &be_ktab_class_Matter_Plugin_Aggregator, /* shared constants */
be_str_weak(read_attribute),
&be_const_str_solidified,
( &(const binstruction[73]) { /* code */
@@ -125,37 +130,24 @@ be_local_closure(class_Matter_Plugin_Aggregator_read_attribute, /* name */
/********************************************************************
** Solidified function: invoke_request
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Aggregator;
be_local_closure(class_Matter_Plugin_Aggregator_invoke_request, /* name */
be_nested_proto(
13, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Aggregator,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(command),
- /* K4 */ be_const_int(3),
- /* K5 */ be_const_int(0),
- /* K6 */ be_const_int(1),
- /* K7 */ be_nested_str_weak(Matter_TLV_struct),
- /* K8 */ be_nested_str_weak(add_TLV),
- /* K9 */ be_nested_str_weak(U2),
- /* K10 */ be_nested_str_weak(invoke_request),
- }),
+ &be_ktab_class_Matter_Plugin_Aggregator, /* shared constants */
be_str_weak(invoke_request),
&be_const_str_solidified,
( &(const binstruction[39]) { /* code */
0xB8120000, // 0000 GETNGBL R4 K0
0x88100901, // 0001 GETMBR R4 R4 K1
0x88140702, // 0002 GETMBR R5 R3 K2
- 0x88180703, // 0003 GETMBR R6 R3 K3
+ 0x88180712, // 0003 GETMBR R6 R3 K18
0x1C1C0B04, // 0004 EQ R7 R5 K4
0x781E0016, // 0005 JMPF R7 #001D
0x1C1C0D05, // 0006 EQ R7 R6 K5
@@ -163,16 +155,16 @@ be_local_closure(class_Matter_Plugin_Aggregator_invoke_request, /* name */
0x501C0200, // 0008 LDBOOL R7 1 0
0x80040E00, // 0009 RET 1 R7
0x70020010, // 000A JMP #001C
- 0x1C1C0D06, // 000B EQ R7 R6 K6
+ 0x1C1C0D08, // 000B EQ R7 R6 K8
0x781E0009, // 000C JMPF R7 #0017
- 0x8C1C0907, // 000D GETMET R7 R4 K7
+ 0x8C1C0913, // 000D GETMET R7 R4 K19
0x7C1C0200, // 000E CALL R7 1
- 0x8C200F08, // 000F GETMET R8 R7 K8
+ 0x8C200F0C, // 000F GETMET R8 R7 K12
0x58280005, // 0010 LDCONST R10 K5
- 0x882C0909, // 0011 GETMBR R11 R4 K9
+ 0x882C0907, // 0011 GETMBR R11 R4 K7
0x58300005, // 0012 LDCONST R12 K5
0x7C200800, // 0013 CALL R8 4
- 0x900E0705, // 0014 SETMBR R3 K3 K5
+ 0x900E2505, // 0014 SETMBR R3 K18 K5
0x80040E00, // 0015 RET 1 R7
0x70020004, // 0016 JMP #001C
0x541E003F, // 0017 LDINT R7 64
@@ -184,7 +176,7 @@ be_local_closure(class_Matter_Plugin_Aggregator_invoke_request, /* name */
0x601C0003, // 001D GETGBL R7 G3
0x5C200000, // 001E MOVE R8 R0
0x7C1C0200, // 001F CALL R7 1
- 0x8C1C0F0A, // 0020 GETMET R7 R7 K10
+ 0x8C1C0F14, // 0020 GETMET R7 R7 K20
0x5C240200, // 0021 MOVE R9 R1
0x5C280400, // 0022 MOVE R10 R2
0x5C2C0600, // 0023 MOVE R11 R3
@@ -217,32 +209,8 @@ be_local_class(Matter_Plugin_Aggregator,
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(2,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
+ { be_const_key_int(29, -1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(3, 0), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
})) ) } )) },
{ be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Aggregator_invoke_request_closure) },
})),
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h
index 83ab36871..cd89a67e0 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Device.h
@@ -3,253 +3,1090 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'GetOptionReader' ktab size: 17, total: 24 (saved 56 bytes)
+static const bvalue be_ktab_class_GetOptionReader[17] = {
+ /* K0 */ be_nested_str_weak(flag),
+ /* K1 */ be_nested_str_weak(getbits),
+ /* K2 */ be_const_int(1),
+ /* K3 */ be_nested_str_weak(flag2),
+ /* K4 */ be_nested_str_weak(get),
+ /* K5 */ be_nested_str_weak(flag3),
+ /* K6 */ be_nested_str_weak(flag4),
+ /* K7 */ be_nested_str_weak(flag5),
+ /* K8 */ be_nested_str_weak(flag6),
+ /* K9 */ be_nested_str_weak(value_error),
+ /* K10 */ be_nested_str_weak(invalid_X20json),
+ /* K11 */ be_nested_str_weak(SetOption),
+ /* K12 */ be_nested_str_weak(fromhex),
+ /* K13 */ be_const_int(0),
+ /* K14 */ be_nested_str_weak(reverse),
+ /* K15 */ be_const_int(2),
+ /* K16 */ be_const_int(3),
+};
+
+
+extern const bclass be_class_GetOptionReader;
+
+/********************************************************************
+** Solidified function: getoption
+********************************************************************/
+be_local_closure(class_GetOptionReader_getoption, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_GetOptionReader, /* shared constants */
+ be_str_weak(getoption),
+ &be_const_str_solidified,
+ ( &(const binstruction[65]) { /* code */
+ 0x540A001F, // 0000 LDINT R2 32
+ 0x14080202, // 0001 LT R2 R1 R2
+ 0x780A0006, // 0002 JMPF R2 #000A
+ 0x88080100, // 0003 GETMBR R2 R0 K0
+ 0x8C080501, // 0004 GETMET R2 R2 K1
+ 0x5C100200, // 0005 MOVE R4 R1
+ 0x58140002, // 0006 LDCONST R5 K2
+ 0x7C080600, // 0007 CALL R2 3
+ 0x80040400, // 0008 RET 1 R2
+ 0x70020035, // 0009 JMP #0040
+ 0x540A0031, // 000A LDINT R2 50
+ 0x14080202, // 000B LT R2 R1 R2
+ 0x780A0007, // 000C JMPF R2 #0015
+ 0x88080103, // 000D GETMBR R2 R0 K3
+ 0x8C080504, // 000E GETMET R2 R2 K4
+ 0x5412001F, // 000F LDINT R4 32
+ 0x04100204, // 0010 SUB R4 R1 R4
+ 0x58140002, // 0011 LDCONST R5 K2
+ 0x7C080600, // 0012 CALL R2 3
+ 0x80040400, // 0013 RET 1 R2
+ 0x7002002A, // 0014 JMP #0040
+ 0x540A0051, // 0015 LDINT R2 82
+ 0x14080202, // 0016 LT R2 R1 R2
+ 0x780A0007, // 0017 JMPF R2 #0020
+ 0x88080105, // 0018 GETMBR R2 R0 K5
+ 0x8C080501, // 0019 GETMET R2 R2 K1
+ 0x54120031, // 001A LDINT R4 50
+ 0x04100204, // 001B SUB R4 R1 R4
+ 0x58140002, // 001C LDCONST R5 K2
+ 0x7C080600, // 001D CALL R2 3
+ 0x80040400, // 001E RET 1 R2
+ 0x7002001F, // 001F JMP #0040
+ 0x540A0071, // 0020 LDINT R2 114
+ 0x14080202, // 0021 LT R2 R1 R2
+ 0x780A0007, // 0022 JMPF R2 #002B
+ 0x88080106, // 0023 GETMBR R2 R0 K6
+ 0x8C080501, // 0024 GETMET R2 R2 K1
+ 0x54120051, // 0025 LDINT R4 82
+ 0x04100204, // 0026 SUB R4 R1 R4
+ 0x58140002, // 0027 LDCONST R5 K2
+ 0x7C080600, // 0028 CALL R2 3
+ 0x80040400, // 0029 RET 1 R2
+ 0x70020014, // 002A JMP #0040
+ 0x540A0091, // 002B LDINT R2 146
+ 0x14080202, // 002C LT R2 R1 R2
+ 0x780A0007, // 002D JMPF R2 #0036
+ 0x88080107, // 002E GETMBR R2 R0 K7
+ 0x8C080501, // 002F GETMET R2 R2 K1
+ 0x54120071, // 0030 LDINT R4 114
+ 0x04100204, // 0031 SUB R4 R1 R4
+ 0x58140002, // 0032 LDCONST R5 K2
+ 0x7C080600, // 0033 CALL R2 3
+ 0x80040400, // 0034 RET 1 R2
+ 0x70020009, // 0035 JMP #0040
+ 0x540A00B1, // 0036 LDINT R2 178
+ 0x14080202, // 0037 LT R2 R1 R2
+ 0x780A0006, // 0038 JMPF R2 #0040
+ 0x88080108, // 0039 GETMBR R2 R0 K8
+ 0x8C080501, // 003A GETMET R2 R2 K1
+ 0x54120091, // 003B LDINT R4 146
+ 0x04100204, // 003C SUB R4 R1 R4
+ 0x58140002, // 003D LDCONST R5 K2
+ 0x7C080600, // 003E CALL R2 3
+ 0x80040400, // 003F RET 1 R2
+ 0x80000000, // 0040 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_GetOptionReader_init, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_GetOptionReader, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[54]) { /* code */
+ 0x4C080000, // 0000 LDNIL R2
+ 0x1C080202, // 0001 EQ R2 R1 R2
+ 0x780A0000, // 0002 JMPF R2 #0004
+ 0xB006130A, // 0003 RAISE 1 K9 K10
+ 0x9408030B, // 0004 GETIDX R2 R1 K11
+ 0x600C0015, // 0005 GETGBL R3 G21
+ 0x7C0C0000, // 0006 CALL R3 0
+ 0x8C0C070C, // 0007 GETMET R3 R3 K12
+ 0x9414050D, // 0008 GETIDX R5 R2 K13
+ 0x7C0C0400, // 0009 CALL R3 2
+ 0x8C0C070E, // 000A GETMET R3 R3 K14
+ 0x7C0C0200, // 000B CALL R3 1
+ 0x90020003, // 000C SETMBR R0 K0 R3
+ 0x600C0015, // 000D GETGBL R3 G21
+ 0x7C0C0000, // 000E CALL R3 0
+ 0x8C0C070C, // 000F GETMET R3 R3 K12
+ 0x94140502, // 0010 GETIDX R5 R2 K2
+ 0x7C0C0400, // 0011 CALL R3 2
+ 0x90020603, // 0012 SETMBR R0 K3 R3
+ 0x600C0015, // 0013 GETGBL R3 G21
+ 0x7C0C0000, // 0014 CALL R3 0
+ 0x8C0C070C, // 0015 GETMET R3 R3 K12
+ 0x9414050F, // 0016 GETIDX R5 R2 K15
+ 0x7C0C0400, // 0017 CALL R3 2
+ 0x8C0C070E, // 0018 GETMET R3 R3 K14
+ 0x7C0C0200, // 0019 CALL R3 1
+ 0x90020A03, // 001A SETMBR R0 K5 R3
+ 0x600C0015, // 001B GETGBL R3 G21
+ 0x7C0C0000, // 001C CALL R3 0
+ 0x8C0C070C, // 001D GETMET R3 R3 K12
+ 0x94140510, // 001E GETIDX R5 R2 K16
+ 0x7C0C0400, // 001F CALL R3 2
+ 0x8C0C070E, // 0020 GETMET R3 R3 K14
+ 0x7C0C0200, // 0021 CALL R3 1
+ 0x90020C03, // 0022 SETMBR R0 K6 R3
+ 0x600C0015, // 0023 GETGBL R3 G21
+ 0x7C0C0000, // 0024 CALL R3 0
+ 0x8C0C070C, // 0025 GETMET R3 R3 K12
+ 0x54160003, // 0026 LDINT R5 4
+ 0x94140405, // 0027 GETIDX R5 R2 R5
+ 0x7C0C0400, // 0028 CALL R3 2
+ 0x8C0C070E, // 0029 GETMET R3 R3 K14
+ 0x7C0C0200, // 002A CALL R3 1
+ 0x90020E03, // 002B SETMBR R0 K7 R3
+ 0x600C0015, // 002C GETGBL R3 G21
+ 0x7C0C0000, // 002D CALL R3 0
+ 0x8C0C070C, // 002E GETMET R3 R3 K12
+ 0x54160004, // 002F LDINT R5 5
+ 0x94140405, // 0030 GETIDX R5 R2 R5
+ 0x7C0C0400, // 0031 CALL R3 2
+ 0x8C0C070E, // 0032 GETMET R3 R3 K14
+ 0x7C0C0200, // 0033 CALL R3 1
+ 0x90021003, // 0034 SETMBR R0 K8 R3
+ 0x80000000, // 0035 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: GetOptionReader
+********************************************************************/
+be_local_class(GetOptionReader,
+ 6,
+ NULL,
+ be_nested_map(8,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(flag2, -1), be_const_var(1) },
+ { be_const_key_weak(flag4, -1), be_const_var(3) },
+ { be_const_key_weak(getoption, -1), be_const_closure(class_GetOptionReader_getoption_closure) },
+ { be_const_key_weak(init, 5), be_const_closure(class_GetOptionReader_init_closure) },
+ { be_const_key_weak(flag3, -1), be_const_var(2) },
+ { be_const_key_weak(flag6, -1), be_const_var(5) },
+ { be_const_key_weak(flag5, -1), be_const_var(4) },
+ { be_const_key_weak(flag, 0), be_const_var(0) },
+ })),
+ be_str_weak(GetOptionReader)
+);
+// compact class 'Matter_Plugin_Device' ktab size: 122, total: 158 (saved 288 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Device[122] = {
+ /* K0 */ be_nested_str_weak(http_remote),
+ /* K1 */ be_nested_str_weak(add_schedule),
+ /* K2 */ be_nested_str_weak(UPDATE_CMD),
+ /* K3 */ be_nested_str_weak(UPDATE_TIME),
+ /* K4 */ be_nested_str_weak(webserver),
+ /* K5 */ be_nested_str_weak(web_values_prefix),
+ /* K6 */ be_nested_str_weak(content_send),
+ /* K7 */ be_nested_str_weak(_X26lt_X3B_X2D_X2D_X20_X28),
+ /* K8 */ be_nested_str_weak(DISPLAY_NAME),
+ /* K9 */ be_nested_str_weak(_X29_X20_X2D_X2D_X26gt_X3B),
+ /* K10 */ be_nested_str_weak(BRIDGE),
+ /* K11 */ be_nested_str_weak(scheduler),
+ /* K12 */ be_nested_str_weak(every_250ms),
+ /* K13 */ be_nested_str_weak(_X3Cb_X3EOn_X3C_X2Fb_X3E),
+ /* K14 */ be_nested_str_weak(Off),
+ /* K15 */ be_nested_str_weak(),
+ /* K16 */ be_nested_str_weak(matter),
+ /* K17 */ be_nested_str_weak(TLV),
+ /* K18 */ be_nested_str_weak(cluster),
+ /* K19 */ be_nested_str_weak(command),
+ /* K20 */ be_const_int(3),
+ /* K21 */ be_const_int(0),
+ /* K22 */ be_const_int(1),
+ /* K23 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K24 */ be_nested_str_weak(add_TLV),
+ /* K25 */ be_nested_str_weak(U2),
+ /* K26 */ be_nested_str_weak(invoke_request),
+ /* K27 */ be_nested_str_weak(tick),
+ /* K28 */ be_nested_str_weak(device),
+ /* K29 */ be_nested_str_weak(call_remote_sync),
+ /* K30 */ be_nested_str_weak(parse_http_response),
+ /* K31 */ be_nested_str_weak(json),
+ /* K32 */ be_const_int(2),
+ /* K33 */ be_nested_str_weak(_X20),
+ /* K34 */ be_nested_str_weak(call_sync),
+ /* K35 */ be_nested_str_weak(SYNC_TIMEOUT),
+ /* K36 */ be_nested_str_weak(device_is_alive),
+ /* K37 */ be_nested_str_weak(load),
+ /* K38 */ be_nested_str_weak(log),
+ /* K39 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20GET_X20retrying),
+ /* K40 */ be_nested_str_weak(parse_status_response_and_call_method),
+ /* K41 */ be_nested_str_weak(parse_status),
+ /* K42 */ be_nested_str_weak(get_name),
+ /* K43 */ be_nested_str_weak(PREFIX),
+ /* K44 */ be_nested_str_weak(html_escape),
+ /* K45 */ be_nested_str_weak(attribute),
+ /* K46 */ be_nested_str_weak(set),
+ /* K47 */ be_nested_str_weak(U1),
+ /* K48 */ be_nested_str_weak(Matter_TLV_array),
+ /* K49 */ be_nested_str_weak(TYPES),
+ /* K50 */ be_nested_str_weak(keys),
+ /* K51 */ be_nested_str_weak(add_struct),
+ /* K52 */ be_nested_str_weak(stop_iteration),
+ /* K53 */ be_nested_str_weak(NON_BRIDGE_VENDOR),
+ /* K54 */ be_nested_str_weak(find),
+ /* K55 */ be_nested_str_weak(get_admin_vendor),
+ /* K56 */ be_nested_str_weak(disable_bridge_mode),
+ /* K57 */ be_nested_str_weak(string),
+ /* K58 */ be_nested_str_weak(get_info),
+ /* K59 */ be_nested_str_weak(name),
+ /* K60 */ be_nested_str_weak(set_or_nil),
+ /* K61 */ be_nested_str_weak(UTF1),
+ /* K62 */ be_nested_str_weak(tasmota),
+ /* K63 */ be_nested_str_weak(cmd),
+ /* K64 */ be_nested_str_weak(DeviceName),
+ /* K65 */ be_nested_str_weak(version),
+ /* K66 */ be_nested_str_weak(_X28),
+ /* K67 */ be_nested_str_weak(NULL),
+ /* K68 */ be_nested_str_weak(Status_X202),
+ /* K69 */ be_nested_str_weak(StatusFWR),
+ /* K70 */ be_nested_str_weak(Version),
+ /* K71 */ be_nested_str_weak(mac),
+ /* K72 */ be_nested_str_weak(wifi),
+ /* K73 */ be_nested_str_weak(BOOL),
+ /* K74 */ be_nested_str_weak(reachable),
+ /* K75 */ be_nested_str_weak(read_attribute),
+ /* K76 */ be_nested_str_weak(init),
+ /* K77 */ be_nested_str_weak(ARG_HTTP),
+ /* K78 */ be_nested_str_weak(register_http_remote),
+ /* K79 */ be_nested_str_weak(PROBE_TIMEOUT),
+ /* K80 */ be_nested_str_weak(register_cmd_cb),
+ /* K81 */ be_nested_str_weak(introspect),
+ /* K82 */ be_nested_str_weak(get),
+ /* K83 */ be_nested_str_weak(JSON_NAME),
+ /* K84 */ be_nested_str_weak(contains),
+ /* K85 */ be_nested_str_weak(shadow_value),
+ /* K86 */ be_nested_str_weak(dump),
+ /* K87 */ be_nested_str_weak(null),
+ /* K88 */ be_nested_str_weak(_X2C_X22_X25s_X22_X3A_X25s),
+ /* K89 */ be_nested_str_weak(shadow_onoff),
+ /* K90 */ be_nested_str_weak(Power),
+ /* K91 */ be_nested_str_weak(shadow_bri),
+ /* K92 */ be_nested_str_weak(Bri),
+ /* K93 */ be_nested_str_weak(shadow_ct),
+ /* K94 */ be_nested_str_weak(CT),
+ /* K95 */ be_nested_str_weak(shadow_hue),
+ /* K96 */ be_nested_str_weak(Hue),
+ /* K97 */ be_nested_str_weak(shadow_sat),
+ /* K98 */ be_nested_str_weak(Sat),
+ /* K99 */ be_nested_str_weak(shadow_shutter_pos),
+ /* K100 */ be_nested_str_weak(ShutterPos),
+ /* K101 */ be_nested_str_weak(shadow_shutter_target),
+ /* K102 */ be_nested_str_weak(ShutterTarget),
+ /* K103 */ be_nested_str_weak(shadow_shutter_tilt),
+ /* K104 */ be_nested_str_weak(ShutterTilt),
+ /* K105 */ be_nested_str_weak(shadow_contact),
+ /* K106 */ be_nested_str_weak(Contact),
+ /* K107 */ be_nested_str_weak(shadow_occupancy),
+ /* K108 */ be_nested_str_weak(Occupancy),
+ /* K109 */ be_nested_str_weak(shadow_air_quality),
+ /* K110 */ be_nested_str_weak(AirQuality),
+ /* K111 */ be_nested_str_weak(shadow_co2),
+ /* K112 */ be_nested_str_weak(CO2),
+ /* K113 */ be_nested_str_weak(shadow_pm1),
+ /* K114 */ be_nested_str_weak(PM1),
+ /* K115 */ be_nested_str_weak(shadow_pm2_5),
+ /* K116 */ be_nested_str_weak(PM2_X2E5),
+ /* K117 */ be_nested_str_weak(shadow_pm10),
+ /* K118 */ be_nested_str_weak(PM10),
+ /* K119 */ be_nested_str_weak(shadow_tvoc),
+ /* K120 */ be_nested_str_weak(TVOC),
+ /* K121 */ be_nested_str_weak(attribute_updated),
+};
+
extern const bclass be_class_Matter_Plugin_Device;
+/********************************************************************
+** Solidified function: parse_status
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Device_parse_status, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Device, /* shared constants */
+ be_str_weak(parse_status),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: register_cmd_cb
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Device_register_cmd_cb, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 1]) {
+ be_nested_proto(
+ 8, /* nstack */
+ 3, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(parse_http_response),
+ }),
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x680C0000, // 0000 GETUPV R3 U0
+ 0x8C0C0700, // 0001 GETMET R3 R3 K0
+ 0x5C140000, // 0002 MOVE R5 R0
+ 0x5C180200, // 0003 MOVE R6 R1
+ 0x5C1C0400, // 0004 MOVE R7 R2
+ 0x7C0C0800, // 0005 CALL R3 4
+ 0x80040600, // 0006 RET 1 R3
+ })
+ ),
+ }),
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Device, /* shared constants */
+ be_str_weak(register_cmd_cb),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 8]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x880C0102, // 0002 GETMBR R3 R0 K2
+ 0x88100103, // 0003 GETMBR R4 R0 K3
+ 0x84140000, // 0004 CLOSURE R5 P0
+ 0x7C040800, // 0005 CALL R1 4
+ 0xA0000000, // 0006 CLOSE R0
+ 0x80000000, // 0007 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_values
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Device_web_values, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Device, /* shared constants */
+ be_str_weak(web_values),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0xA4060800, // 0000 IMPORT R1 K4
+ 0x8C080105, // 0001 GETMET R2 R0 K5
+ 0x7C080200, // 0002 CALL R2 1
+ 0x8C080306, // 0003 GETMET R2 R1 K6
+ 0x88100108, // 0004 GETMBR R4 R0 K8
+ 0x00120E04, // 0005 ADD R4 K7 R4
+ 0x00100909, // 0006 ADD R4 R4 K9
+ 0x7C080400, // 0007 CALL R2 2
+ 0x80000000, // 0008 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: every_250ms
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Device_every_250ms, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Device, /* shared constants */
+ be_str_weak(every_250ms),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0x8804010A, // 0000 GETMBR R1 R0 K10
+ 0x78060003, // 0001 JMPF R1 #0006
+ 0x88040100, // 0002 GETMBR R1 R0 K0
+ 0x8C04030B, // 0003 GETMET R1 R1 K11
+ 0x7C040200, // 0004 CALL R1 1
+ 0x70020004, // 0005 JMP #000B
+ 0x60040003, // 0006 GETGBL R1 G3
+ 0x5C080000, // 0007 MOVE R2 R0
+ 0x7C040200, // 0008 CALL R1 1
+ 0x8C04030C, // 0009 GETMET R1 R1 K12
+ 0x7C040200, // 000A CALL R1 1
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_value_onoff
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Device_web_value_onoff, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Device, /* shared constants */
+ be_str_weak(web_value_onoff),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x4C080000, // 0000 LDNIL R2
+ 0x20080202, // 0001 NE R2 R1 R2
+ 0x780A0004, // 0002 JMPF R2 #0008
+ 0x78060001, // 0003 JMPF R1 #0006
+ 0x5808000D, // 0004 LDCONST R2 K13
+ 0x70020000, // 0005 JMP #0007
+ 0x5808000E, // 0006 LDCONST R2 K14
+ 0x70020000, // 0007 JMP #0009
+ 0x5808000F, // 0008 LDCONST R2 K15
+ 0x80040400, // 0009 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: invoke_request
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Device_invoke_request, /* name */
+ be_nested_proto(
+ 13, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Device, /* shared constants */
+ be_str_weak(invoke_request),
+ &be_const_str_solidified,
+ ( &(const binstruction[51]) { /* code */
+ 0xB8122000, // 0000 GETNGBL R4 K16
+ 0x88100911, // 0001 GETMBR R4 R4 K17
+ 0x88140712, // 0002 GETMBR R5 R3 K18
+ 0x88180713, // 0003 GETMBR R6 R3 K19
+ 0x1C1C0B14, // 0004 EQ R7 R5 K20
+ 0x781E0016, // 0005 JMPF R7 #001D
+ 0x1C1C0D15, // 0006 EQ R7 R6 K21
+ 0x781E0002, // 0007 JMPF R7 #000B
+ 0x501C0200, // 0008 LDBOOL R7 1 0
+ 0x80040E00, // 0009 RET 1 R7
+ 0x70020010, // 000A JMP #001C
+ 0x1C1C0D16, // 000B EQ R7 R6 K22
+ 0x781E0009, // 000C JMPF R7 #0017
+ 0x8C1C0917, // 000D GETMET R7 R4 K23
+ 0x7C1C0200, // 000E CALL R7 1
+ 0x8C200F18, // 000F GETMET R8 R7 K24
+ 0x58280015, // 0010 LDCONST R10 K21
+ 0x882C0919, // 0011 GETMBR R11 R4 K25
+ 0x58300015, // 0012 LDCONST R12 K21
+ 0x7C200800, // 0013 CALL R8 4
+ 0x900E2715, // 0014 SETMBR R3 K19 K21
+ 0x80040E00, // 0015 RET 1 R7
+ 0x70020004, // 0016 JMP #001C
+ 0x541E003F, // 0017 LDINT R7 64
+ 0x1C1C0C07, // 0018 EQ R7 R6 R7
+ 0x781E0001, // 0019 JMPF R7 #001C
+ 0x501C0200, // 001A LDBOOL R7 1 0
+ 0x80040E00, // 001B RET 1 R7
+ 0x70020014, // 001C JMP #0032
+ 0x541E0003, // 001D LDINT R7 4
+ 0x1C1C0A07, // 001E EQ R7 R5 R7
+ 0x781E0002, // 001F JMPF R7 #0023
+ 0x501C0200, // 0020 LDBOOL R7 1 0
+ 0x80040E00, // 0021 RET 1 R7
+ 0x7002000E, // 0022 JMP #0032
+ 0x541E0004, // 0023 LDINT R7 5
+ 0x1C1C0A07, // 0024 EQ R7 R5 R7
+ 0x781E0002, // 0025 JMPF R7 #0029
+ 0x501C0200, // 0026 LDBOOL R7 1 0
+ 0x80040E00, // 0027 RET 1 R7
+ 0x70020008, // 0028 JMP #0032
+ 0x601C0003, // 0029 GETGBL R7 G3
+ 0x5C200000, // 002A MOVE R8 R0
+ 0x7C1C0200, // 002B CALL R7 1
+ 0x8C1C0F1A, // 002C GETMET R7 R7 K26
+ 0x5C240200, // 002D MOVE R9 R1
+ 0x5C280400, // 002E MOVE R10 R2
+ 0x5C2C0600, // 002F MOVE R11 R3
+ 0x7C1C0800, // 0030 CALL R7 4
+ 0x80040E00, // 0031 RET 1 R7
+ 0x80000000, // 0032 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: update_shadow
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Device_update_shadow, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Device, /* shared constants */
+ be_str_weak(update_shadow),
+ &be_const_str_solidified,
+ ( &(const binstruction[20]) { /* code */
+ 0x8804010A, // 0000 GETMBR R1 R0 K10
+ 0x7806000D, // 0001 JMPF R1 #0010
+ 0x8804011B, // 0002 GETMBR R1 R0 K27
+ 0x8808011C, // 0003 GETMBR R2 R0 K28
+ 0x8808051B, // 0004 GETMBR R2 R2 K27
+ 0x20040202, // 0005 NE R1 R1 R2
+ 0x78060008, // 0006 JMPF R1 #0010
+ 0x8C04011D, // 0007 GETMET R1 R0 K29
+ 0x880C0102, // 0008 GETMBR R3 R0 K2
+ 0x7C040400, // 0009 CALL R1 2
+ 0x78060004, // 000A JMPF R1 #0010
+ 0x8C08011E, // 000B GETMET R2 R0 K30
+ 0x58100016, // 000C LDCONST R4 K22
+ 0x5C140200, // 000D MOVE R5 R1
+ 0x88180102, // 000E GETMBR R6 R0 K2
+ 0x7C080800, // 000F CALL R2 4
+ 0x8804011C, // 0010 GETMBR R1 R0 K28
+ 0x8804031B, // 0011 GETMBR R1 R1 K27
+ 0x90023601, // 0012 SETMBR R0 K27 R1
+ 0x80000000, // 0013 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: call_remote_sync
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Device_call_remote_sync, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Device, /* shared constants */
+ be_str_weak(call_remote_sync),
+ &be_const_str_solidified,
+ ( &(const binstruction[44]) { /* code */
+ 0x880C010A, // 0000 GETMBR R3 R0 K10
+ 0x780E0028, // 0001 JMPF R3 #002B
+ 0xA40E3E00, // 0002 IMPORT R3 K31
+ 0x58100020, // 0003 LDCONST R4 K32
+ 0x4C140000, // 0004 LDNIL R5
+ 0x20140405, // 0005 NE R5 R2 R5
+ 0x78160005, // 0006 JMPF R5 #000D
+ 0x00140321, // 0007 ADD R5 R1 K33
+ 0x60180008, // 0008 GETGBL R6 G8
+ 0x5C1C0400, // 0009 MOVE R7 R2
+ 0x7C180200, // 000A CALL R6 1
+ 0x00140A06, // 000B ADD R5 R5 R6
+ 0x5C040A00, // 000C MOVE R1 R5
+ 0x24140915, // 000D GT R5 R4 K21
+ 0x78160015, // 000E JMPF R5 #0025
+ 0x88140100, // 000F GETMBR R5 R0 K0
+ 0x8C140B22, // 0010 GETMET R5 R5 K34
+ 0x5C1C0200, // 0011 MOVE R7 R1
+ 0x88200123, // 0012 GETMBR R8 R0 K35
+ 0x7C140600, // 0013 CALL R5 3
+ 0x4C180000, // 0014 LDNIL R6
+ 0x20180A06, // 0015 NE R6 R5 R6
+ 0x781A0007, // 0016 JMPF R6 #001F
+ 0x88180100, // 0017 GETMBR R6 R0 K0
+ 0x8C180D24, // 0018 GETMET R6 R6 K36
+ 0x50200200, // 0019 LDBOOL R8 1 0
+ 0x7C180400, // 001A CALL R6 2
+ 0x8C180725, // 001B GETMET R6 R3 K37
+ 0x5C200A00, // 001C MOVE R8 R5
+ 0x7C180400, // 001D CALL R6 2
+ 0x80040C00, // 001E RET 1 R6
+ 0x04100916, // 001F SUB R4 R4 K22
+ 0xB81A4C00, // 0020 GETNGBL R6 K38
+ 0x581C0027, // 0021 LDCONST R7 K39
+ 0x58200014, // 0022 LDCONST R8 K20
+ 0x7C180400, // 0023 CALL R6 2
+ 0x7001FFE7, // 0024 JMP #000D
+ 0x88140100, // 0025 GETMBR R5 R0 K0
+ 0x8C140B24, // 0026 GETMET R5 R5 K36
+ 0x501C0000, // 0027 LDBOOL R7 0 0
+ 0x7C140400, // 0028 CALL R5 2
+ 0x4C140000, // 0029 LDNIL R5
+ 0x80040A00, // 002A RET 1 R5
+ 0x80000000, // 002B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_http_response
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Device_parse_http_response, /* name */
+ be_nested_proto(
+ 11, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Device, /* shared constants */
+ be_str_weak(parse_http_response),
+ &be_const_str_solidified,
+ ( &(const binstruction[14]) { /* code */
+ 0x8810010A, // 0000 GETMBR R4 R0 K10
+ 0x7812000A, // 0001 JMPF R4 #000D
+ 0x8810011C, // 0002 GETMBR R4 R0 K28
+ 0x8810091B, // 0003 GETMBR R4 R4 K27
+ 0x90023604, // 0004 SETMBR R0 K27 R4
+ 0x88100100, // 0005 GETMBR R4 R0 K0
+ 0x8C100928, // 0006 GETMET R4 R4 K40
+ 0x5C180200, // 0007 MOVE R6 R1
+ 0x5C1C0400, // 0008 MOVE R7 R2
+ 0x5C200600, // 0009 MOVE R8 R3
+ 0x5C240000, // 000A MOVE R9 R0
+ 0x88280129, // 000B GETMBR R10 R0 K41
+ 0x7C100C00, // 000C CALL R4 6
+ 0x80000000, // 000D RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_values_prefix
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Device_web_values_prefix, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Device, /* shared constants */
+ be_str_weak(web_values_prefix),
+ &be_const_str_solidified,
+ ( &(const binstruction[15]) { /* code */
+ 0xA4060800, // 0000 IMPORT R1 K4
+ 0x8C08012A, // 0001 GETMET R2 R0 K42
+ 0x7C080200, // 0002 CALL R2 1
+ 0x8C0C0306, // 0003 GETMET R3 R1 K6
+ 0x60140018, // 0004 GETGBL R5 G24
+ 0x8818012B, // 0005 GETMBR R6 R0 K43
+ 0x780A0003, // 0006 JMPF R2 #000B
+ 0x8C1C032C, // 0007 GETMET R7 R1 K44
+ 0x5C240400, // 0008 MOVE R9 R2
+ 0x7C1C0400, // 0009 CALL R7 2
+ 0x70020000, // 000A JMP #000C
+ 0x581C000F, // 000B LDCONST R7 K15
+ 0x7C140400, // 000C CALL R5 2
+ 0x7C0C0400, // 000D CALL R3 2
+ 0x80000000, // 000E RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Device;
be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */
be_nested_proto(
17, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Device,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[36]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_const_int(3),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(U2),
- /* K8 */ be_const_int(1),
- /* K9 */ be_nested_str_weak(U1),
- /* K10 */ be_nested_str_weak(Matter_TLV_array),
- /* K11 */ be_nested_str_weak(TYPES),
- /* K12 */ be_nested_str_weak(keys),
- /* K13 */ be_nested_str_weak(add_struct),
- /* K14 */ be_nested_str_weak(add_TLV),
- /* K15 */ be_nested_str_weak(stop_iteration),
- /* K16 */ be_nested_str_weak(NON_BRIDGE_VENDOR),
- /* K17 */ be_nested_str_weak(find),
- /* K18 */ be_nested_str_weak(get_admin_vendor),
- /* K19 */ be_nested_str_weak(device),
- /* K20 */ be_nested_str_weak(disable_bridge_mode),
- /* K21 */ be_nested_str_weak(string),
- /* K22 */ be_nested_str_weak(UTF1),
- /* K23 */ be_nested_str_weak(tasmota),
- /* K24 */ be_nested_str_weak(cmd),
- /* K25 */ be_nested_str_weak(DeviceName),
- /* K26 */ be_nested_str_weak(get_name),
- /* K27 */ be_nested_str_weak(Status_X202),
- /* K28 */ be_nested_str_weak(StatusFWR),
- /* K29 */ be_nested_str_weak(Version),
- /* K30 */ be_nested_str_weak(_X28),
- /* K31 */ be_nested_str_weak(wifi),
- /* K32 */ be_nested_str_weak(mac),
- /* K33 */ be_nested_str_weak(),
- /* K34 */ be_nested_str_weak(BOOL),
- /* K35 */ be_nested_str_weak(read_attribute),
- }),
+ &be_ktab_class_Matter_Plugin_Device, /* shared constants */
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[189]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x1C1C0B04, // 0004 EQ R7 R5 K4
+ ( &(const binstruction[244]) { /* code */
+ 0xB8122000, // 0000 GETNGBL R4 K16
+ 0x88100911, // 0001 GETMBR R4 R4 K17
+ 0x88140512, // 0002 GETMBR R5 R2 K18
+ 0x8818052D, // 0003 GETMBR R6 R2 K45
+ 0x1C1C0B14, // 0004 EQ R7 R5 K20
0x781E000F, // 0005 JMPF R7 #0016
- 0x1C1C0D05, // 0006 EQ R7 R6 K5
+ 0x1C1C0D15, // 0006 EQ R7 R6 K21
0x781E0005, // 0007 JMPF R7 #000E
- 0x8C1C0706, // 0008 GETMET R7 R3 K6
- 0x88240907, // 0009 GETMBR R9 R4 K7
- 0x58280005, // 000A LDCONST R10 K5
+ 0x8C1C072E, // 0008 GETMET R7 R3 K46
+ 0x88240919, // 0009 GETMBR R9 R4 K25
+ 0x58280015, // 000A LDCONST R10 K21
0x7C1C0600, // 000B CALL R7 3
0x80040E00, // 000C RET 1 R7
0x70020006, // 000D JMP #0015
- 0x1C1C0D08, // 000E EQ R7 R6 K8
+ 0x1C1C0D16, // 000E EQ R7 R6 K22
0x781E0004, // 000F JMPF R7 #0015
- 0x8C1C0706, // 0010 GETMET R7 R3 K6
- 0x88240909, // 0011 GETMBR R9 R4 K9
- 0x58280005, // 0012 LDCONST R10 K5
+ 0x8C1C072E, // 0010 GETMET R7 R3 K46
+ 0x8824092F, // 0011 GETMBR R9 R4 K47
+ 0x58280015, // 0012 LDCONST R10 K21
0x7C1C0600, // 0013 CALL R7 3
0x80040E00, // 0014 RET 1 R7
- 0x7002009D, // 0015 JMP #00B4
+ 0x700200D4, // 0015 JMP #00EB
0x541E0003, // 0016 LDINT R7 4
0x1C1C0A07, // 0017 EQ R7 R5 R7
0x781E0004, // 0018 JMPF R7 #001E
- 0x1C1C0D05, // 0019 EQ R7 R6 K5
+ 0x1C1C0D15, // 0019 EQ R7 R6 K21
0x781E0001, // 001A JMPF R7 #001D
0x4C1C0000, // 001B LDNIL R7
0x80040E00, // 001C RET 1 R7
- 0x70020095, // 001D JMP #00B4
+ 0x700200CC, // 001D JMP #00EB
0x541E0004, // 001E LDINT R7 5
0x1C1C0A07, // 001F EQ R7 R5 R7
0x781E0000, // 0020 JMPF R7 #0022
- 0x70020091, // 0021 JMP #00B4
+ 0x700200C8, // 0021 JMP #00EB
0x541E001C, // 0022 LDINT R7 29
0x1C1C0A07, // 0023 EQ R7 R5 R7
0x781E0034, // 0024 JMPF R7 #005A
- 0x1C1C0D05, // 0025 EQ R7 R6 K5
+ 0x1C1C0D15, // 0025 EQ R7 R6 K21
0x781E0031, // 0026 JMPF R7 #0059
- 0x8C1C090A, // 0027 GETMET R7 R4 K10
+ 0x8C1C0930, // 0027 GETMET R7 R4 K48
0x7C1C0200, // 0028 CALL R7 1
- 0x8820010B, // 0029 GETMBR R8 R0 K11
+ 0x88200131, // 0029 GETMBR R8 R0 K49
0x60240010, // 002A GETGBL R9 G16
- 0x8C28110C, // 002B GETMET R10 R8 K12
+ 0x8C281132, // 002B GETMET R10 R8 K50
0x7C280200, // 002C CALL R10 1
0x7C240200, // 002D CALL R9 1
0xA802000E, // 002E EXBLK 0 #003E
0x5C281200, // 002F MOVE R10 R9
0x7C280000, // 0030 CALL R10 0
- 0x8C2C0F0D, // 0031 GETMET R11 R7 K13
+ 0x8C2C0F33, // 0031 GETMET R11 R7 K51
0x7C2C0200, // 0032 CALL R11 1
- 0x8C30170E, // 0033 GETMET R12 R11 K14
- 0x58380005, // 0034 LDCONST R14 K5
- 0x883C0907, // 0035 GETMBR R15 R4 K7
+ 0x8C301718, // 0033 GETMET R12 R11 K24
+ 0x58380015, // 0034 LDCONST R14 K21
+ 0x883C0919, // 0035 GETMBR R15 R4 K25
0x5C401400, // 0036 MOVE R16 R10
0x7C300800, // 0037 CALL R12 4
- 0x8C30170E, // 0038 GETMET R12 R11 K14
- 0x58380008, // 0039 LDCONST R14 K8
- 0x883C0907, // 003A GETMBR R15 R4 K7
+ 0x8C301718, // 0038 GETMET R12 R11 K24
+ 0x58380016, // 0039 LDCONST R14 K22
+ 0x883C0919, // 003A GETMBR R15 R4 K25
0x9440100A, // 003B GETIDX R16 R8 R10
0x7C300800, // 003C CALL R12 4
0x7001FFF0, // 003D JMP #002F
- 0x5824000F, // 003E LDCONST R9 K15
+ 0x58240034, // 003E LDCONST R9 K52
0xAC240200, // 003F CATCH R9 1 0
0xB0080000, // 0040 RAISE 2 R0 R0
- 0x88240110, // 0041 GETMBR R9 R0 K16
- 0x8C241311, // 0042 GETMET R9 R9 K17
- 0x8C2C0312, // 0043 GETMET R11 R1 K18
+ 0x88240135, // 0041 GETMBR R9 R0 K53
+ 0x8C241336, // 0042 GETMET R9 R9 K54
+ 0x8C2C0337, // 0043 GETMET R11 R1 K55
0x7C2C0200, // 0044 CALL R11 1
0x7C240400, // 0045 CALL R9 2
0x4C280000, // 0046 LDNIL R10
0x1C24120A, // 0047 EQ R9 R9 R10
0x7826000E, // 0048 JMPF R9 #0058
- 0x88240113, // 0049 GETMBR R9 R0 K19
- 0x88241314, // 004A GETMBR R9 R9 K20
+ 0x8824011C, // 0049 GETMBR R9 R0 K28
+ 0x88241338, // 004A GETMBR R9 R9 K56
0x7426000B, // 004B JMPT R9 #0058
- 0x8C240F0D, // 004C GETMET R9 R7 K13
+ 0x8C240F33, // 004C GETMET R9 R7 K51
0x7C240200, // 004D CALL R9 1
- 0x8C28130E, // 004E GETMET R10 R9 K14
- 0x58300005, // 004F LDCONST R12 K5
- 0x88340907, // 0050 GETMBR R13 R4 K7
+ 0x8C281318, // 004E GETMET R10 R9 K24
+ 0x58300015, // 004F LDCONST R12 K21
+ 0x88340919, // 0050 GETMBR R13 R4 K25
0x543A0012, // 0051 LDINT R14 19
0x7C280800, // 0052 CALL R10 4
- 0x8C28130E, // 0053 GETMET R10 R9 K14
- 0x58300008, // 0054 LDCONST R12 K8
- 0x88340907, // 0055 GETMBR R13 R4 K7
- 0x58380008, // 0056 LDCONST R14 K8
+ 0x8C281318, // 0053 GETMET R10 R9 K24
+ 0x58300016, // 0054 LDCONST R12 K22
+ 0x88340919, // 0055 GETMBR R13 R4 K25
+ 0x58380016, // 0056 LDCONST R14 K22
0x7C280800, // 0057 CALL R10 4
0x80040E00, // 0058 RET 1 R7
- 0x70020059, // 0059 JMP #00B4
+ 0x70020090, // 0059 JMP #00EB
0x541E0038, // 005A LDINT R7 57
0x1C1C0A07, // 005B EQ R7 R5 R7
- 0x781E0056, // 005C JMPF R7 #00B4
- 0xA41E2A00, // 005D IMPORT R7 K21
- 0x1C200D04, // 005E EQ R8 R6 K4
- 0x7822000A, // 005F JMPF R8 #006B
- 0x8C200706, // 0060 GETMET R8 R3 K6
- 0x88280916, // 0061 GETMBR R10 R4 K22
- 0xB82E2E00, // 0062 GETNGBL R11 K23
- 0x8C2C1718, // 0063 GETMET R11 R11 K24
- 0x58340019, // 0064 LDCONST R13 K25
- 0x50380200, // 0065 LDBOOL R14 1 0
- 0x7C2C0600, // 0066 CALL R11 3
- 0x942C1719, // 0067 GETIDX R11 R11 K25
- 0x7C200600, // 0068 CALL R8 3
- 0x80041000, // 0069 RET 1 R8
- 0x70020048, // 006A JMP #00B4
- 0x54220004, // 006B LDINT R8 5
- 0x1C200C08, // 006C EQ R8 R6 R8
- 0x78220006, // 006D JMPF R8 #0075
- 0x8C200706, // 006E GETMET R8 R3 K6
- 0x88280916, // 006F GETMBR R10 R4 K22
- 0x8C2C011A, // 0070 GETMET R11 R0 K26
- 0x7C2C0200, // 0071 CALL R11 1
- 0x7C200600, // 0072 CALL R8 3
- 0x80041000, // 0073 RET 1 R8
- 0x7002003E, // 0074 JMP #00B4
- 0x54220009, // 0075 LDINT R8 10
- 0x1C200C08, // 0076 EQ R8 R6 R8
- 0x78220015, // 0077 JMPF R8 #008E
- 0xB8222E00, // 0078 GETNGBL R8 K23
- 0x8C201118, // 0079 GETMET R8 R8 K24
- 0x5828001B, // 007A LDCONST R10 K27
- 0x502C0200, // 007B LDBOOL R11 1 0
- 0x7C200600, // 007C CALL R8 3
- 0x9420111C, // 007D GETIDX R8 R8 K28
- 0x9420111D, // 007E GETIDX R8 R8 K29
- 0x8C240F11, // 007F GETMET R9 R7 K17
- 0x5C2C1000, // 0080 MOVE R11 R8
- 0x5830001E, // 0081 LDCONST R12 K30
- 0x7C240600, // 0082 CALL R9 3
- 0x24281305, // 0083 GT R10 R9 K5
- 0x782A0002, // 0084 JMPF R10 #0088
- 0x04281308, // 0085 SUB R10 R9 K8
- 0x402A0A0A, // 0086 CONNECT R10 K5 R10
- 0x9420100A, // 0087 GETIDX R8 R8 R10
- 0x8C280706, // 0088 GETMET R10 R3 K6
- 0x88300916, // 0089 GETMBR R12 R4 K22
- 0x5C341000, // 008A MOVE R13 R8
- 0x7C280600, // 008B CALL R10 3
- 0x80041400, // 008C RET 1 R10
- 0x70020025, // 008D JMP #00B4
- 0x5422000E, // 008E LDINT R8 15
- 0x1C200C08, // 008F EQ R8 R6 R8
- 0x7822000B, // 0090 JMPF R8 #009D
- 0x8C200706, // 0091 GETMET R8 R3 K6
- 0x88280916, // 0092 GETMBR R10 R4 K22
- 0xB82E2E00, // 0093 GETNGBL R11 K23
- 0x8C2C171F, // 0094 GETMET R11 R11 K31
- 0x7C2C0200, // 0095 CALL R11 1
- 0x8C2C1711, // 0096 GETMET R11 R11 K17
- 0x58340020, // 0097 LDCONST R13 K32
- 0x58380021, // 0098 LDCONST R14 K33
- 0x7C2C0600, // 0099 CALL R11 3
- 0x7C200600, // 009A CALL R8 3
- 0x80041000, // 009B RET 1 R8
- 0x70020016, // 009C JMP #00B4
- 0x54220010, // 009D LDINT R8 17
- 0x1C200C08, // 009E EQ R8 R6 R8
- 0x78220005, // 009F JMPF R8 #00A6
- 0x8C200706, // 00A0 GETMET R8 R3 K6
- 0x88280922, // 00A1 GETMBR R10 R4 K34
- 0x582C0008, // 00A2 LDCONST R11 K8
- 0x7C200600, // 00A3 CALL R8 3
- 0x80041000, // 00A4 RET 1 R8
- 0x7002000D, // 00A5 JMP #00B4
- 0x54220011, // 00A6 LDINT R8 18
- 0x1C200C08, // 00A7 EQ R8 R6 R8
- 0x7822000A, // 00A8 JMPF R8 #00B4
- 0x8C200706, // 00A9 GETMET R8 R3 K6
- 0x88280916, // 00AA GETMBR R10 R4 K22
- 0xB82E2E00, // 00AB GETNGBL R11 K23
- 0x8C2C171F, // 00AC GETMET R11 R11 K31
- 0x7C2C0200, // 00AD CALL R11 1
- 0x8C2C1711, // 00AE GETMET R11 R11 K17
- 0x58340020, // 00AF LDCONST R13 K32
- 0x58380021, // 00B0 LDCONST R14 K33
- 0x7C2C0600, // 00B1 CALL R11 3
- 0x7C200600, // 00B2 CALL R8 3
- 0x80041000, // 00B3 RET 1 R8
- 0x601C0003, // 00B4 GETGBL R7 G3
- 0x5C200000, // 00B5 MOVE R8 R0
- 0x7C1C0200, // 00B6 CALL R7 1
- 0x8C1C0F23, // 00B7 GETMET R7 R7 K35
- 0x5C240200, // 00B8 MOVE R9 R1
- 0x5C280400, // 00B9 MOVE R10 R2
- 0x5C2C0600, // 00BA MOVE R11 R3
- 0x7C1C0800, // 00BB CALL R7 4
- 0x80040E00, // 00BC RET 1 R7
+ 0x781E008D, // 005C JMPF R7 #00EB
+ 0xA41E7200, // 005D IMPORT R7 K57
+ 0x1C200D14, // 005E EQ R8 R6 K20
+ 0x78220018, // 005F JMPF R8 #0079
+ 0x8820010A, // 0060 GETMBR R8 R0 K10
+ 0x7822000B, // 0061 JMPF R8 #006E
+ 0x88200100, // 0062 GETMBR R8 R0 K0
+ 0x8C20113A, // 0063 GETMET R8 R8 K58
+ 0x7C200200, // 0064 CALL R8 1
+ 0x8C201136, // 0065 GETMET R8 R8 K54
+ 0x5828003B, // 0066 LDCONST R10 K59
+ 0x7C200400, // 0067 CALL R8 2
+ 0x8C24073C, // 0068 GETMET R9 R3 K60
+ 0x882C093D, // 0069 GETMBR R11 R4 K61
+ 0x5C301000, // 006A MOVE R12 R8
+ 0x7C240600, // 006B CALL R9 3
+ 0x80041200, // 006C RET 1 R9
+ 0x70020009, // 006D JMP #0078
+ 0x8C20072E, // 006E GETMET R8 R3 K46
+ 0x8828093D, // 006F GETMBR R10 R4 K61
+ 0xB82E7C00, // 0070 GETNGBL R11 K62
+ 0x8C2C173F, // 0071 GETMET R11 R11 K63
+ 0x58340040, // 0072 LDCONST R13 K64
+ 0x50380200, // 0073 LDBOOL R14 1 0
+ 0x7C2C0600, // 0074 CALL R11 3
+ 0x942C1740, // 0075 GETIDX R11 R11 K64
+ 0x7C200600, // 0076 CALL R8 3
+ 0x80041000, // 0077 RET 1 R8
+ 0x70020071, // 0078 JMP #00EB
+ 0x54220004, // 0079 LDINT R8 5
+ 0x1C200C08, // 007A EQ R8 R6 R8
+ 0x78220006, // 007B JMPF R8 #0083
+ 0x8C20072E, // 007C GETMET R8 R3 K46
+ 0x8828093D, // 007D GETMBR R10 R4 K61
+ 0x8C2C012A, // 007E GETMET R11 R0 K42
+ 0x7C2C0200, // 007F CALL R11 1
+ 0x7C200600, // 0080 CALL R8 3
+ 0x80041000, // 0081 RET 1 R8
+ 0x70020067, // 0082 JMP #00EB
+ 0x54220009, // 0083 LDINT R8 10
+ 0x1C200C08, // 0084 EQ R8 R6 R8
+ 0x78220033, // 0085 JMPF R8 #00BA
+ 0x8820010A, // 0086 GETMBR R8 R0 K10
+ 0x7822001B, // 0087 JMPF R8 #00A4
+ 0x88200100, // 0088 GETMBR R8 R0 K0
+ 0x8C20113A, // 0089 GETMET R8 R8 K58
+ 0x7C200200, // 008A CALL R8 1
+ 0x8C201136, // 008B GETMET R8 R8 K54
+ 0x58280041, // 008C LDCONST R10 K65
+ 0x7C200400, // 008D CALL R8 2
+ 0x7822000E, // 008E JMPF R8 #009E
+ 0x8C240F36, // 008F GETMET R9 R7 K54
+ 0x5C2C1000, // 0090 MOVE R11 R8
+ 0x58300042, // 0091 LDCONST R12 K66
+ 0x7C240600, // 0092 CALL R9 3
+ 0x24281315, // 0093 GT R10 R9 K21
+ 0x782A0002, // 0094 JMPF R10 #0098
+ 0x04281316, // 0095 SUB R10 R9 K22
+ 0x402A2A0A, // 0096 CONNECT R10 K21 R10
+ 0x9420100A, // 0097 GETIDX R8 R8 R10
+ 0x8C28072E, // 0098 GETMET R10 R3 K46
+ 0x8830093D, // 0099 GETMBR R12 R4 K61
+ 0x5C341000, // 009A MOVE R13 R8
+ 0x7C280600, // 009B CALL R10 3
+ 0x80041400, // 009C RET 1 R10
+ 0x70020004, // 009D JMP #00A3
+ 0x8C24072E, // 009E GETMET R9 R3 K46
+ 0x882C0943, // 009F GETMBR R11 R4 K67
+ 0x4C300000, // 00A0 LDNIL R12
+ 0x7C240600, // 00A1 CALL R9 3
+ 0x80041200, // 00A2 RET 1 R9
+ 0x70020014, // 00A3 JMP #00B9
+ 0xB8227C00, // 00A4 GETNGBL R8 K62
+ 0x8C20113F, // 00A5 GETMET R8 R8 K63
+ 0x58280044, // 00A6 LDCONST R10 K68
+ 0x502C0200, // 00A7 LDBOOL R11 1 0
+ 0x7C200600, // 00A8 CALL R8 3
+ 0x94201145, // 00A9 GETIDX R8 R8 K69
+ 0x94201146, // 00AA GETIDX R8 R8 K70
+ 0x8C240F36, // 00AB GETMET R9 R7 K54
+ 0x5C2C1000, // 00AC MOVE R11 R8
+ 0x58300042, // 00AD LDCONST R12 K66
+ 0x7C240600, // 00AE CALL R9 3
+ 0x24281315, // 00AF GT R10 R9 K21
+ 0x782A0002, // 00B0 JMPF R10 #00B4
+ 0x04281316, // 00B1 SUB R10 R9 K22
+ 0x402A2A0A, // 00B2 CONNECT R10 K21 R10
+ 0x9420100A, // 00B3 GETIDX R8 R8 R10
+ 0x8C28072E, // 00B4 GETMET R10 R3 K46
+ 0x8830093D, // 00B5 GETMBR R12 R4 K61
+ 0x5C341000, // 00B6 MOVE R13 R8
+ 0x7C280600, // 00B7 CALL R10 3
+ 0x80041400, // 00B8 RET 1 R10
+ 0x70020030, // 00B9 JMP #00EB
+ 0x5422000E, // 00BA LDINT R8 15
+ 0x1C200C08, // 00BB EQ R8 R6 R8
+ 0x74220002, // 00BC JMPT R8 #00C0
+ 0x54220011, // 00BD LDINT R8 18
+ 0x1C200C08, // 00BE EQ R8 R6 R8
+ 0x78220019, // 00BF JMPF R8 #00DA
+ 0x8820010A, // 00C0 GETMBR R8 R0 K10
+ 0x7822000B, // 00C1 JMPF R8 #00CE
+ 0x88200100, // 00C2 GETMBR R8 R0 K0
+ 0x8C20113A, // 00C3 GETMET R8 R8 K58
+ 0x7C200200, // 00C4 CALL R8 1
+ 0x8C201136, // 00C5 GETMET R8 R8 K54
+ 0x58280047, // 00C6 LDCONST R10 K71
+ 0x7C200400, // 00C7 CALL R8 2
+ 0x8C24073C, // 00C8 GETMET R9 R3 K60
+ 0x882C093D, // 00C9 GETMBR R11 R4 K61
+ 0x5C301000, // 00CA MOVE R12 R8
+ 0x7C240600, // 00CB CALL R9 3
+ 0x80041200, // 00CC RET 1 R9
+ 0x7002000A, // 00CD JMP #00D9
+ 0x8C20072E, // 00CE GETMET R8 R3 K46
+ 0x8828093D, // 00CF GETMBR R10 R4 K61
+ 0xB82E7C00, // 00D0 GETNGBL R11 K62
+ 0x8C2C1748, // 00D1 GETMET R11 R11 K72
+ 0x7C2C0200, // 00D2 CALL R11 1
+ 0x8C2C1736, // 00D3 GETMET R11 R11 K54
+ 0x58340047, // 00D4 LDCONST R13 K71
+ 0x5838000F, // 00D5 LDCONST R14 K15
+ 0x7C2C0600, // 00D6 CALL R11 3
+ 0x7C200600, // 00D7 CALL R8 3
+ 0x80041000, // 00D8 RET 1 R8
+ 0x70020010, // 00D9 JMP #00EB
+ 0x54220010, // 00DA LDINT R8 17
+ 0x1C200C08, // 00DB EQ R8 R6 R8
+ 0x7822000D, // 00DC JMPF R8 #00EB
+ 0x8820010A, // 00DD GETMBR R8 R0 K10
+ 0x78220006, // 00DE JMPF R8 #00E6
+ 0x8C20072E, // 00DF GETMET R8 R3 K46
+ 0x88280949, // 00E0 GETMBR R10 R4 K73
+ 0x882C0100, // 00E1 GETMBR R11 R0 K0
+ 0x882C174A, // 00E2 GETMBR R11 R11 K74
+ 0x7C200600, // 00E3 CALL R8 3
+ 0x80041000, // 00E4 RET 1 R8
+ 0x70020004, // 00E5 JMP #00EB
+ 0x8C20072E, // 00E6 GETMET R8 R3 K46
+ 0x88280949, // 00E7 GETMBR R10 R4 K73
+ 0x582C0016, // 00E8 LDCONST R11 K22
+ 0x7C200600, // 00E9 CALL R8 3
+ 0x80041000, // 00EA RET 1 R8
+ 0x601C0003, // 00EB GETGBL R7 G3
+ 0x5C200000, // 00EC MOVE R8 R0
+ 0x7C1C0200, // 00ED CALL R7 1
+ 0x8C1C0F4B, // 00EE GETMET R7 R7 K75
+ 0x5C240200, // 00EF MOVE R9 R1
+ 0x5C280400, // 00F0 MOVE R10 R2
+ 0x5C2C0600, // 00F1 MOVE R11 R3
+ 0x7C1C0800, // 00F2 CALL R7 4
+ 0x80040E00, // 00F3 RET 1 R7
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Device_init, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Device, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[22]) { /* code */
+ 0x60100003, // 0000 GETGBL R4 G3
+ 0x5C140000, // 0001 MOVE R5 R0
+ 0x7C100200, // 0002 CALL R4 1
+ 0x8C10094C, // 0003 GETMET R4 R4 K76
+ 0x5C180200, // 0004 MOVE R6 R1
+ 0x5C1C0400, // 0005 MOVE R7 R2
+ 0x5C200600, // 0006 MOVE R8 R3
+ 0x7C100800, // 0007 CALL R4 4
+ 0x8810010A, // 0008 GETMBR R4 R0 K10
+ 0x7812000A, // 0009 JMPF R4 #0015
+ 0x8C100736, // 000A GETMET R4 R3 K54
+ 0x8818014D, // 000B GETMBR R6 R0 K77
+ 0x7C100400, // 000C CALL R4 2
+ 0x8814011C, // 000D GETMBR R5 R0 K28
+ 0x8C140B4E, // 000E GETMET R5 R5 K78
+ 0x5C1C0800, // 000F MOVE R7 R4
+ 0x8820014F, // 0010 GETMBR R8 R0 K79
+ 0x7C140600, // 0011 CALL R5 3
+ 0x90020005, // 0012 SETMBR R0 K0 R5
+ 0x8C140150, // 0013 GETMET R5 R0 K80
+ 0x7C140200, // 0014 CALL R5 1
+ 0x80000000, // 0015 RET 0
})
)
);
@@ -259,16 +1096,15 @@ be_local_closure(class_Matter_Plugin_Device_read_attribute, /* name */
/********************************************************************
** Solidified function: append_state_json
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Device;
be_local_closure(class_Matter_Plugin_Device_append_state_json, /* name */
be_nested_proto(
11, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
12, /* nstack */
2, /* argc */
@@ -279,7 +1115,7 @@ be_local_closure(class_Matter_Plugin_Device_append_state_json, /* name */
be_local_const_upval(1, 3),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 6]) { /* constants */
/* K0 */ be_nested_str_weak(introspect),
@@ -325,115 +1161,107 @@ be_local_closure(class_Matter_Plugin_Device_append_state_json, /* name */
0x80000000, // 001E RET 0
})
),
- &be_class_Matter_Plugin_Device,
}),
1, /* has constants */
- ( &(const bvalue[30]) { /* constants */
- /* K0 */ be_nested_str_weak(introspect),
- /* K1 */ be_nested_str_weak(json),
- /* K2 */ be_nested_str_weak(),
- /* K3 */ be_nested_str_weak(get),
- /* K4 */ be_nested_str_weak(JSON_NAME),
- /* K5 */ be_nested_str_weak(contains),
- /* K6 */ be_nested_str_weak(shadow_value),
- /* K7 */ be_nested_str_weak(dump),
- /* K8 */ be_nested_str_weak(null),
- /* K9 */ be_nested_str_weak(_X2C_X22_X25s_X22_X3A_X25s),
- /* K10 */ be_nested_str_weak(shadow_onoff),
- /* K11 */ be_nested_str_weak(Power),
- /* K12 */ be_nested_str_weak(shadow_bri),
- /* K13 */ be_nested_str_weak(Bri),
- /* K14 */ be_nested_str_weak(shadow_ct),
- /* K15 */ be_nested_str_weak(CT),
- /* K16 */ be_nested_str_weak(shadow_hue),
- /* K17 */ be_nested_str_weak(Hue),
- /* K18 */ be_nested_str_weak(shadow_sat),
- /* K19 */ be_nested_str_weak(Sat),
- /* K20 */ be_nested_str_weak(shadow_shutter_pos),
- /* K21 */ be_nested_str_weak(ShutterPos),
- /* K22 */ be_nested_str_weak(shadow_shutter_target),
- /* K23 */ be_nested_str_weak(ShutterTarget),
- /* K24 */ be_nested_str_weak(shadow_shutter_tilt),
- /* K25 */ be_nested_str_weak(ShutterTilt),
- /* K26 */ be_nested_str_weak(shadow_contact),
- /* K27 */ be_nested_str_weak(Contact),
- /* K28 */ be_nested_str_weak(shadow_occupancy),
- /* K29 */ be_nested_str_weak(Occupancy),
- }),
+ &be_ktab_class_Matter_Plugin_Device, /* shared constants */
be_str_weak(append_state_json),
&be_const_str_solidified,
- ( &(const binstruction[71]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xA40A0200, // 0001 IMPORT R2 K1
- 0x580C0002, // 0002 LDCONST R3 K2
+ ( &(const binstruction[95]) { /* code */
+ 0xA406A200, // 0000 IMPORT R1 K81
+ 0xA40A3E00, // 0001 IMPORT R2 K31
+ 0x580C000F, // 0002 LDCONST R3 K15
0x84100000, // 0003 CLOSURE R4 P0
- 0x8C140303, // 0004 GETMET R5 R1 K3
+ 0x8C140352, // 0004 GETMET R5 R1 K82
0x5C1C0000, // 0005 MOVE R7 R0
- 0x58200004, // 0006 LDCONST R8 K4
+ 0x58200053, // 0006 LDCONST R8 K83
0x7C140600, // 0007 CALL R5 3
0x78160013, // 0008 JMPF R5 #001D
- 0x8C180305, // 0009 GETMET R6 R1 K5
+ 0x8C180354, // 0009 GETMET R6 R1 K84
0x5C200000, // 000A MOVE R8 R0
- 0x58240006, // 000B LDCONST R9 K6
+ 0x58240055, // 000B LDCONST R9 K85
0x7C180600, // 000C CALL R6 3
0x781A000E, // 000D JMPF R6 #001D
- 0x88180106, // 000E GETMBR R6 R0 K6
+ 0x88180155, // 000E GETMBR R6 R0 K85
0x4C1C0000, // 000F LDNIL R7
0x20180C07, // 0010 NE R6 R6 R7
0x781A0003, // 0011 JMPF R6 #0016
- 0x8C180507, // 0012 GETMET R6 R2 K7
- 0x88200106, // 0013 GETMBR R8 R0 K6
+ 0x8C180556, // 0012 GETMET R6 R2 K86
+ 0x88200155, // 0013 GETMBR R8 R0 K85
0x7C180400, // 0014 CALL R6 2
0x70020000, // 0015 JMP #0017
- 0x58180008, // 0016 LDCONST R6 K8
+ 0x58180057, // 0016 LDCONST R6 K87
0x601C0018, // 0017 GETGBL R7 G24
- 0x58200009, // 0018 LDCONST R8 K9
+ 0x58200058, // 0018 LDCONST R8 K88
0x5C240A00, // 0019 MOVE R9 R5
0x5C280C00, // 001A MOVE R10 R6
0x7C1C0600, // 001B CALL R7 3
0x000C0607, // 001C ADD R3 R3 R7
0x5C180800, // 001D MOVE R6 R4
- 0x581C000A, // 001E LDCONST R7 K10
- 0x5820000B, // 001F LDCONST R8 K11
+ 0x581C0059, // 001E LDCONST R7 K89
+ 0x5820005A, // 001F LDCONST R8 K90
0x7C180400, // 0020 CALL R6 2
0x5C180800, // 0021 MOVE R6 R4
- 0x581C000C, // 0022 LDCONST R7 K12
- 0x5820000D, // 0023 LDCONST R8 K13
+ 0x581C005B, // 0022 LDCONST R7 K91
+ 0x5820005C, // 0023 LDCONST R8 K92
0x7C180400, // 0024 CALL R6 2
0x5C180800, // 0025 MOVE R6 R4
- 0x581C000E, // 0026 LDCONST R7 K14
- 0x5820000F, // 0027 LDCONST R8 K15
+ 0x581C005D, // 0026 LDCONST R7 K93
+ 0x5820005E, // 0027 LDCONST R8 K94
0x7C180400, // 0028 CALL R6 2
0x5C180800, // 0029 MOVE R6 R4
- 0x581C0010, // 002A LDCONST R7 K16
- 0x58200011, // 002B LDCONST R8 K17
+ 0x581C005F, // 002A LDCONST R7 K95
+ 0x58200060, // 002B LDCONST R8 K96
0x7C180400, // 002C CALL R6 2
0x5C180800, // 002D MOVE R6 R4
- 0x581C0012, // 002E LDCONST R7 K18
- 0x58200013, // 002F LDCONST R8 K19
+ 0x581C0061, // 002E LDCONST R7 K97
+ 0x58200062, // 002F LDCONST R8 K98
0x7C180400, // 0030 CALL R6 2
0x5C180800, // 0031 MOVE R6 R4
- 0x581C0014, // 0032 LDCONST R7 K20
- 0x58200015, // 0033 LDCONST R8 K21
+ 0x581C0063, // 0032 LDCONST R7 K99
+ 0x58200064, // 0033 LDCONST R8 K100
0x7C180400, // 0034 CALL R6 2
0x5C180800, // 0035 MOVE R6 R4
- 0x581C0016, // 0036 LDCONST R7 K22
- 0x58200017, // 0037 LDCONST R8 K23
+ 0x581C0065, // 0036 LDCONST R7 K101
+ 0x58200066, // 0037 LDCONST R8 K102
0x7C180400, // 0038 CALL R6 2
0x5C180800, // 0039 MOVE R6 R4
- 0x581C0018, // 003A LDCONST R7 K24
- 0x58200019, // 003B LDCONST R8 K25
+ 0x581C0067, // 003A LDCONST R7 K103
+ 0x58200068, // 003B LDCONST R8 K104
0x7C180400, // 003C CALL R6 2
0x5C180800, // 003D MOVE R6 R4
- 0x581C001A, // 003E LDCONST R7 K26
- 0x5820001B, // 003F LDCONST R8 K27
+ 0x581C0069, // 003E LDCONST R7 K105
+ 0x5820006A, // 003F LDCONST R8 K106
0x7C180400, // 0040 CALL R6 2
0x5C180800, // 0041 MOVE R6 R4
- 0x581C001C, // 0042 LDCONST R7 K28
- 0x5820001D, // 0043 LDCONST R8 K29
+ 0x581C006B, // 0042 LDCONST R7 K107
+ 0x5820006C, // 0043 LDCONST R8 K108
0x7C180400, // 0044 CALL R6 2
- 0xA0000000, // 0045 CLOSE R0
- 0x80040600, // 0046 RET 1 R3
+ 0x5C180800, // 0045 MOVE R6 R4
+ 0x581C006D, // 0046 LDCONST R7 K109
+ 0x5820006E, // 0047 LDCONST R8 K110
+ 0x7C180400, // 0048 CALL R6 2
+ 0x5C180800, // 0049 MOVE R6 R4
+ 0x581C006F, // 004A LDCONST R7 K111
+ 0x58200070, // 004B LDCONST R8 K112
+ 0x7C180400, // 004C CALL R6 2
+ 0x5C180800, // 004D MOVE R6 R4
+ 0x581C0071, // 004E LDCONST R7 K113
+ 0x58200072, // 004F LDCONST R8 K114
+ 0x7C180400, // 0050 CALL R6 2
+ 0x5C180800, // 0051 MOVE R6 R4
+ 0x581C0073, // 0052 LDCONST R7 K115
+ 0x58200074, // 0053 LDCONST R8 K116
+ 0x7C180400, // 0054 CALL R6 2
+ 0x5C180800, // 0055 MOVE R6 R4
+ 0x581C0075, // 0056 LDCONST R7 K117
+ 0x58200076, // 0057 LDCONST R8 K118
+ 0x7C180400, // 0058 CALL R6 2
+ 0x5C180800, // 0059 MOVE R6 R4
+ 0x581C0077, // 005A LDCONST R7 K119
+ 0x58200078, // 005B LDCONST R8 K120
+ 0x7C180400, // 005C CALL R6 2
+ 0xA0000000, // 005D CLOSE R0
+ 0x80040600, // 005E RET 1 R3
})
)
);
@@ -441,86 +1269,40 @@ be_local_closure(class_Matter_Plugin_Device_append_state_json, /* name */
/********************************************************************
-** Solidified function: invoke_request
+** Solidified function: _parse_sensor_entry
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Device;
-be_local_closure(class_Matter_Plugin_Device_invoke_request, /* name */
+be_local_closure(class_Matter_Plugin_Device__parse_sensor_entry, /* name */
be_nested_proto(
- 13, /* nstack */
- 4, /* argc */
- 2, /* varg */
+ 12, /* nstack */
+ 7, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Device,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(command),
- /* K4 */ be_const_int(3),
- /* K5 */ be_const_int(0),
- /* K6 */ be_const_int(1),
- /* K7 */ be_nested_str_weak(Matter_TLV_struct),
- /* K8 */ be_nested_str_weak(add_TLV),
- /* K9 */ be_nested_str_weak(U2),
- /* K10 */ be_nested_str_weak(invoke_request),
- }),
- be_str_weak(invoke_request),
+ &be_ktab_class_Matter_Plugin_Device, /* shared constants */
+ be_str_weak(_parse_sensor_entry),
&be_const_str_solidified,
- ( &(const binstruction[51]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140702, // 0002 GETMBR R5 R3 K2
- 0x88180703, // 0003 GETMBR R6 R3 K3
- 0x1C1C0B04, // 0004 EQ R7 R5 K4
- 0x781E0016, // 0005 JMPF R7 #001D
- 0x1C1C0D05, // 0006 EQ R7 R6 K5
- 0x781E0002, // 0007 JMPF R7 #000B
- 0x501C0200, // 0008 LDBOOL R7 1 0
- 0x80040E00, // 0009 RET 1 R7
- 0x70020010, // 000A JMP #001C
- 0x1C1C0D06, // 000B EQ R7 R6 K6
- 0x781E0009, // 000C JMPF R7 #0017
- 0x8C1C0907, // 000D GETMET R7 R4 K7
- 0x7C1C0200, // 000E CALL R7 1
- 0x8C200F08, // 000F GETMET R8 R7 K8
- 0x58280005, // 0010 LDCONST R10 K5
- 0x882C0909, // 0011 GETMBR R11 R4 K9
- 0x58300005, // 0012 LDCONST R12 K5
- 0x7C200800, // 0013 CALL R8 4
- 0x900E0705, // 0014 SETMBR R3 K3 K5
- 0x80040E00, // 0015 RET 1 R7
- 0x70020004, // 0016 JMP #001C
- 0x541E003F, // 0017 LDINT R7 64
- 0x1C1C0C07, // 0018 EQ R7 R6 R7
- 0x781E0001, // 0019 JMPF R7 #001C
- 0x501C0200, // 001A LDBOOL R7 1 0
- 0x80040E00, // 001B RET 1 R7
- 0x70020014, // 001C JMP #0032
- 0x541E0003, // 001D LDINT R7 4
- 0x1C1C0A07, // 001E EQ R7 R5 R7
- 0x781E0002, // 001F JMPF R7 #0023
- 0x501C0200, // 0020 LDBOOL R7 1 0
- 0x80040E00, // 0021 RET 1 R7
- 0x7002000E, // 0022 JMP #0032
- 0x541E0004, // 0023 LDINT R7 5
- 0x1C1C0A07, // 0024 EQ R7 R5 R7
- 0x781E0002, // 0025 JMPF R7 #0029
- 0x501C0200, // 0026 LDBOOL R7 1 0
- 0x80040E00, // 0027 RET 1 R7
- 0x70020008, // 0028 JMP #0032
- 0x601C0003, // 0029 GETGBL R7 G3
- 0x5C200000, // 002A MOVE R8 R0
- 0x7C1C0200, // 002B CALL R7 1
- 0x8C1C0F0A, // 002C GETMET R7 R7 K10
- 0x5C240200, // 002D MOVE R9 R1
- 0x5C280400, // 002E MOVE R10 R2
- 0x5C2C0600, // 002F MOVE R11 R3
- 0x7C1C0800, // 0030 CALL R7 4
- 0x80040E00, // 0031 RET 1 R7
- 0x80000000, // 0032 RET 0
+ ( &(const binstruction[18]) { /* code */
+ 0x8C1C0336, // 0000 GETMET R7 R1 K54
+ 0x5C240400, // 0001 MOVE R9 R2
+ 0x7C1C0400, // 0002 CALL R7 2
+ 0x4C200000, // 0003 LDNIL R8
+ 0x20200E08, // 0004 NE R8 R7 R8
+ 0x7822000A, // 0005 JMPF R8 #0011
+ 0x5C200800, // 0006 MOVE R8 R4
+ 0x5C240E00, // 0007 MOVE R9 R7
+ 0x7C200200, // 0008 CALL R8 1
+ 0x5C1C1000, // 0009 MOVE R7 R8
+ 0x20200E03, // 000A NE R8 R7 R3
+ 0x78220003, // 000B JMPF R8 #0010
+ 0x8C200179, // 000C GETMET R8 R0 K121
+ 0x5C280A00, // 000D MOVE R10 R5
+ 0x5C2C0C00, // 000E MOVE R11 R6
+ 0x7C200600, // 000F CALL R8 3
+ 0x80040E00, // 0010 RET 1 R7
+ 0x80040600, // 0011 RET 1 R3
})
)
);
@@ -532,91 +1314,45 @@ be_local_closure(class_Matter_Plugin_Device_invoke_request, /* name */
********************************************************************/
extern const bclass be_class_Matter_Plugin;
be_local_class(Matter_Plugin_Device,
- 0,
+ 1,
&be_class_Matter_Plugin,
- be_nested_map(6,
+ be_nested_map(24,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Device_read_attribute_closure) },
- { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Device_invoke_request_closure) },
- { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ { be_const_key_weak(ARG_HTTP, -1), be_nested_str_weak(url) },
+ { be_const_key_weak(_parse_sensor_entry, -1), be_const_closure(class_Matter_Plugin_Device__parse_sensor_entry_closure) },
+ { be_const_key_weak(TYPES, 14), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(19, -1), be_const_int(1) },
})) ) } )) },
- { be_const_key_weak(append_state_json, -1), be_const_closure(class_Matter_Plugin_Device_append_state_json_closure) },
- { be_const_key_weak(CLUSTERS, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ { be_const_key_weak(parse_status, 12), be_const_closure(class_Matter_Plugin_Device_parse_status_closure) },
+ { be_const_key_weak(http_remote, -1), be_const_var(0) },
+ { be_const_key_weak(register_cmd_cb, 6), be_const_closure(class_Matter_Plugin_Device_register_cmd_cb_closure) },
+ { be_const_key_weak(GetOptionReader, 16), be_const_class(be_class_GetOptionReader) },
+ { be_const_key_weak(append_state_json, 19), be_const_closure(class_Matter_Plugin_Device_append_state_json_closure) },
+ { be_const_key_weak(web_values, 22), be_const_closure(class_Matter_Plugin_Device_web_values_closure) },
+ { be_const_key_weak(PREFIX, -1), be_nested_str_weak(_X7C_X20_X3Ci_X3E_X25s_X3C_X2Fi_X3E_X20) },
+ { be_const_key_weak(CLUSTERS, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(5,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
+ { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(29, -1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(3, -1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(4, 1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
})) ) } )) },
+ { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Device_invoke_request_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Device_init_closure) },
+ { be_const_key_weak(PROBE_TIMEOUT, 20), be_const_int(1700) },
+ { be_const_key_weak(SYNC_TIMEOUT, -1), be_const_int(500) },
+ { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X2011) },
+ { be_const_key_weak(parse_http_response, -1), be_const_closure(class_Matter_Plugin_Device_parse_http_response_closure) },
+ { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Device_web_values_prefix_closure) },
+ { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Device_read_attribute_closure) },
+ { be_const_key_weak(call_remote_sync, 21), be_const_closure(class_Matter_Plugin_Device_call_remote_sync_closure) },
+ { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Device_update_shadow_closure) },
+ { be_const_key_weak(web_value_onoff, -1), be_const_closure(class_Matter_Plugin_Device_web_value_onoff_closure) },
+ { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_Plugin_Device_every_250ms_closure) },
{ be_const_key_weak(NON_BRIDGE_VENDOR, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(2,
( (struct bvalue*) &(const bvalue[]) {
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h
index 98b17f5ea..83997d841 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h
@@ -3,122 +3,203 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_Plugin_Root' ktab size: 173, total: 227 (saved 432 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Root[173] = {
+ /* K0 */ be_nested_str_weak(string),
+ /* K1 */ be_nested_str_weak(matter),
+ /* K2 */ be_nested_str_weak(TLV),
+ /* K3 */ be_nested_str_weak(cluster),
+ /* K4 */ be_nested_str_weak(attribute),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_nested_str_weak(set),
+ /* K7 */ be_nested_str_weak(U8),
+ /* K8 */ be_nested_str_weak(_breadcrumb),
+ /* K9 */ be_const_int(1),
+ /* K10 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K11 */ be_nested_str_weak(add_TLV),
+ /* K12 */ be_nested_str_weak(U2),
+ /* K13 */ be_const_int(2),
+ /* K14 */ be_nested_str_weak(U1),
+ /* K15 */ be_const_int(3),
+ /* K16 */ be_nested_str_weak(BOOL),
+ /* K17 */ be_nested_str_weak(Matter_TLV_array),
+ /* K18 */ be_nested_str_weak(tasmota),
+ /* K19 */ be_nested_str_weak(eth),
+ /* K20 */ be_nested_str_weak(up),
+ /* K21 */ be_nested_str_weak(add_struct),
+ /* K22 */ be_nested_str_weak(UTF1),
+ /* K23 */ be_nested_str_weak(ethernet),
+ /* K24 */ be_nested_str_weak(NULL),
+ /* K25 */ be_nested_str_weak(fromhex),
+ /* K26 */ be_nested_str_weak(replace),
+ /* K27 */ be_nested_str_weak(find),
+ /* K28 */ be_nested_str_weak(mac),
+ /* K29 */ be_nested_str_weak(),
+ /* K30 */ be_nested_str_weak(_X3A),
+ /* K31 */ be_nested_str_weak(B1),
+ /* K32 */ be_nested_str_weak(add_array),
+ /* K33 */ be_nested_str_weak(get_ip_bytes),
+ /* K34 */ be_nested_str_weak(ip),
+ /* K35 */ be_nested_str_weak(ip6local),
+ /* K36 */ be_nested_str_weak(ip6),
+ /* K37 */ be_nested_str_weak(wifi),
+ /* K38 */ be_nested_str_weak(cmd),
+ /* K39 */ be_nested_str_weak(Status_X201),
+ /* K40 */ be_nested_str_weak(StatusPRM),
+ /* K41 */ be_nested_str_weak(BootCount),
+ /* K42 */ be_nested_str_weak(U4),
+ /* K43 */ be_nested_str_weak(Status_X2011),
+ /* K44 */ be_nested_str_weak(StatusSTS),
+ /* K45 */ be_nested_str_weak(UptimeSec),
+ /* K46 */ be_nested_str_weak(int64),
+ /* K47 */ be_nested_str_weak(rtc_utc),
+ /* K48 */ be_const_int(1000000),
+ /* K49 */ be_nested_str_weak(rtc),
+ /* K50 */ be_nested_str_weak(local),
+ /* K51 */ be_nested_str_weak(ack_request),
+ /* K52 */ be_nested_str_weak(fabric_filtered),
+ /* K53 */ be_nested_str_weak(get_fabric),
+ /* K54 */ be_nested_str_weak(device),
+ /* K55 */ be_nested_str_weak(sessions),
+ /* K56 */ be_nested_str_weak(active_fabrics),
+ /* K57 */ be_nested_str_weak(is_marked_for_deletion),
+ /* K58 */ be_nested_str_weak(B2),
+ /* K59 */ be_nested_str_weak(get_noc),
+ /* K60 */ be_nested_str_weak(get_icac),
+ /* K61 */ be_nested_str_weak(get_fabric_index),
+ /* K62 */ be_nested_str_weak(stop_iteration),
+ /* K63 */ be_nested_str_weak(parse),
+ /* K64 */ be_nested_str_weak(get_ca),
+ /* K65 */ be_nested_str_weak(findsubval),
+ /* K66 */ be_nested_str_weak(get_admin_vendor),
+ /* K67 */ be_nested_str_weak(get_fabric_id_as_int64),
+ /* K68 */ be_nested_str_weak(get_device_id_as_int64),
+ /* K69 */ be_nested_str_weak(get_fabric_label),
+ /* K70 */ be_nested_str_weak(Fabric),
+ /* K71 */ be_nested_str_weak(_MAX_CASE),
+ /* K72 */ be_nested_str_weak(count_active_fabrics),
+ /* K73 */ be_nested_str_weak(_fabric),
+ /* K74 */ be_nested_str_weak(commissioning),
+ /* K75 */ be_nested_str_weak(is_commissioning_open),
+ /* K76 */ be_nested_str_weak(is_root_commissioning_open),
+ /* K77 */ be_nested_str_weak(commissioning_admin_fabric),
+ /* K78 */ be_nested_str_weak(set_or_nil),
+ /* K79 */ be_nested_str_weak(Tasmota),
+ /* K80 */ be_nested_str_weak(VENDOR_ID),
+ /* K81 */ be_nested_str_weak(DeviceName),
+ /* K82 */ be_nested_str_weak(FriendlyName),
+ /* K83 */ be_nested_str_weak(FriendlyName1),
+ /* K84 */ be_nested_str_weak(XX),
+ /* K85 */ be_nested_str_weak(Status_X202),
+ /* K86 */ be_nested_str_weak(StatusFWR),
+ /* K87 */ be_nested_str_weak(Hardware),
+ /* K88 */ be_nested_str_weak(version),
+ /* K89 */ be_nested_str_weak(Version),
+ /* K90 */ be_nested_str_weak(_X28),
+ /* K91 */ be_nested_str_weak(locale),
+ /* K92 */ be_nested_str_weak(create_TLV),
+ /* K93 */ be_nested_str_weak(get_active_endpoints),
+ /* K94 */ be_nested_str_weak(disable_bridge_mode),
+ /* K95 */ be_nested_str_weak(AGGREGATOR_ENDPOINT),
+ /* K96 */ be_nested_str_weak(read_attribute),
+ /* K97 */ be_nested_str_weak(int),
+ /* K98 */ be_nested_str_weak(attribute_updated),
+ /* K99 */ be_nested_str_weak(status),
+ /* K100 */ be_nested_str_weak(CONSTRAINT_ERROR),
+ /* K101 */ be_nested_str_weak(INVALID_ACTION),
+ /* K102 */ be_nested_str_weak(init),
+ /* K103 */ be_nested_str_weak(publish_event),
+ /* K104 */ be_nested_str_weak(EVENT_CRITICAL),
+ /* K105 */ be_nested_str_weak(Matter_TLV_item),
+ /* K106 */ be_nested_str_weak(crypto),
+ /* K107 */ be_nested_str_weak(command),
+ /* K108 */ be_nested_str_weak(fabric_completed),
+ /* K109 */ be_nested_str_weak(set_no_expiration),
+ /* K110 */ be_nested_str_weak(save),
+ /* K111 */ be_nested_str_weak(start_commissioning_complete_deferred),
+ /* K112 */ be_nested_str_weak(context_error),
+ /* K113 */ be_nested_str_weak(CommissioningComplete_X3A_X20no_X20fabric_X20attached),
+ /* K114 */ be_nested_str_weak(UNSUPPORTED_COMMAND),
+ /* K115 */ be_nested_str_weak(DAC_Cert_FFF1_8000),
+ /* K116 */ be_nested_str_weak(PAI_Cert_FFF1),
+ /* K117 */ be_nested_str_weak(CD_FFF1_8000),
+ /* K118 */ be_nested_str_weak(tlv2raw),
+ /* K119 */ be_nested_str_weak(get_ac),
+ /* K120 */ be_nested_str_weak(EC_P256),
+ /* K121 */ be_nested_str_weak(ecdsa_sign_sha256),
+ /* K122 */ be_nested_str_weak(DAC_Priv_FFF1_8000),
+ /* K123 */ be_nested_str_weak(gen_CSR),
+ /* K124 */ be_nested_str_weak(set_temp_ca),
+ /* K125 */ be_nested_str_weak(SUCCESS),
+ /* K126 */ be_nested_str_weak(log),
+ /* K127 */ be_nested_str_weak(MTR_X3A_X20AddNoc_X20Args_X3D),
+ /* K128 */ be_nested_str_weak(get_temp_ca),
+ /* K129 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20AdNOC_X20without_X20CA),
+ /* K130 */ be_nested_str_weak(create_fabric),
+ /* K131 */ be_nested_str_weak(set_ca),
+ /* K132 */ be_nested_str_weak(set_noc_icac),
+ /* K133 */ be_nested_str_weak(set_ipk_epoch_key),
+ /* K134 */ be_nested_str_weak(set_admin_subject_vendor),
+ /* K135 */ be_nested_str_weak(set_pk),
+ /* K136 */ be_nested_str_weak(get_pk),
+ /* K137 */ be_nested_str_weak(findsub),
+ /* K138 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20no_X20fabricid_X20nor_X20deviceid_X20in_X20NOC_X20certificate),
+ /* K139 */ be_nested_str_weak(fromu32),
+ /* K140 */ be_nested_str_weak(tobytes),
+ /* K141 */ be_nested_str_weak(get_temp_ca_pub),
+ /* K142 */ be_const_int(2147483647),
+ /* K143 */ be_nested_str_weak(fromstring),
+ /* K144 */ be_nested_str_weak(CompressedFabric),
+ /* K145 */ be_nested_str_weak(HKDF_SHA256),
+ /* K146 */ be_nested_str_weak(copy),
+ /* K147 */ be_nested_str_weak(reverse),
+ /* K148 */ be_nested_str_weak(derive),
+ /* K149 */ be_nested_str_weak(set_fabric_device),
+ /* K150 */ be_nested_str_weak(fabric_candidate),
+ /* K151 */ be_nested_str_weak(start_operational_discovery_deferred),
+ /* K152 */ be_nested_str_weak(is_PASE),
+ /* K153 */ be_nested_str_weak(set_expire_in_seconds),
+ /* K154 */ be_nested_str_weak(log_new_fabric),
+ /* K155 */ be_nested_str_weak(assign_fabric_index),
+ /* K156 */ be_nested_str_weak(set_fabric_label),
+ /* K157 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Update_X20fabric_X20_X27_X25s_X27_X20label_X3D_X27_X25s_X27),
+ /* K158 */ be_nested_str_weak(get_fabric_id),
+ /* K159 */ be_nested_str_weak(tohex),
+ /* K160 */ be_nested_str_weak(fabric_index_X3A),
+ /* K161 */ be_nested_str_weak(mark_for_deletion),
+ /* K162 */ be_nested_str_weak(set_timer),
+ /* K163 */ be_nested_str_weak(MTR_X3A_X20RemoveFabric_X20fabric_X28),
+ /* K164 */ be_nested_str_weak(_X29_X20not_X20found),
+ /* K165 */ be_nested_str_weak(MTR_X3A_X20OpenCommissioningWindow_X28timeout_X3D_X25i_X2C_X20passcode_X3D_X25s_X2C_X20discriminator_X3D_X25i_X2C_X20iterations_X3D_X25i_X2C_X20salt_X3D_X25s_X29),
+ /* K166 */ be_nested_str_weak(INVALID_DATA_TYPE),
+ /* K167 */ be_nested_str_weak(MTR_X3A_X20wrong_X20size_X20for_X20PAKE_X20parameters),
+ /* K168 */ be_nested_str_weak(start_basic_commissioning),
+ /* K169 */ be_nested_str_weak(MTR_X3A_X20OpenBasicCommissioningWindow_X20commissioning_timeout_X3D),
+ /* K170 */ be_nested_str_weak(start_root_basic_commissioning),
+ /* K171 */ be_nested_str_weak(stop_basic_commissioning),
+ /* K172 */ be_nested_str_weak(invoke_request),
+};
+
extern const bclass be_class_Matter_Plugin_Root;
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Root;
be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */
be_nested_proto(
25, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[94]) { /* constants */
- /* K0 */ be_nested_str_weak(string),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(TLV),
- /* K3 */ be_nested_str_weak(cluster),
- /* K4 */ be_nested_str_weak(attribute),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(U8),
- /* K8 */ be_nested_str_weak(_breadcrumb),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str_weak(Matter_TLV_struct),
- /* K11 */ be_nested_str_weak(add_TLV),
- /* K12 */ be_nested_str_weak(U2),
- /* K13 */ be_const_int(2),
- /* K14 */ be_nested_str_weak(U1),
- /* K15 */ be_const_int(3),
- /* K16 */ be_nested_str_weak(BOOL),
- /* K17 */ be_nested_str_weak(Matter_TLV_array),
- /* K18 */ be_nested_str_weak(tasmota),
- /* K19 */ be_nested_str_weak(eth),
- /* K20 */ be_nested_str_weak(up),
- /* K21 */ be_nested_str_weak(add_struct),
- /* K22 */ be_nested_str_weak(UTF1),
- /* K23 */ be_nested_str_weak(ethernet),
- /* K24 */ be_nested_str_weak(NULL),
- /* K25 */ be_nested_str_weak(fromhex),
- /* K26 */ be_nested_str_weak(replace),
- /* K27 */ be_nested_str_weak(find),
- /* K28 */ be_nested_str_weak(mac),
- /* K29 */ be_nested_str_weak(),
- /* K30 */ be_nested_str_weak(_X3A),
- /* K31 */ be_nested_str_weak(B1),
- /* K32 */ be_nested_str_weak(add_array),
- /* K33 */ be_nested_str_weak(get_ip_bytes),
- /* K34 */ be_nested_str_weak(ip),
- /* K35 */ be_nested_str_weak(ip6local),
- /* K36 */ be_nested_str_weak(ip6),
- /* K37 */ be_nested_str_weak(wifi),
- /* K38 */ be_nested_str_weak(cmd),
- /* K39 */ be_nested_str_weak(Status_X201),
- /* K40 */ be_nested_str_weak(StatusPRM),
- /* K41 */ be_nested_str_weak(BootCount),
- /* K42 */ be_nested_str_weak(U4),
- /* K43 */ be_nested_str_weak(Status_X2011),
- /* K44 */ be_nested_str_weak(StatusSTS),
- /* K45 */ be_nested_str_weak(UptimeSec),
- /* K46 */ be_nested_str_weak(int64),
- /* K47 */ be_nested_str_weak(rtc_utc),
- /* K48 */ be_const_int(1000000),
- /* K49 */ be_nested_str_weak(rtc),
- /* K50 */ be_nested_str_weak(local),
- /* K51 */ be_nested_str_weak(ack_request),
- /* K52 */ be_nested_str_weak(fabric_filtered),
- /* K53 */ be_nested_str_weak(get_fabric),
- /* K54 */ be_nested_str_weak(device),
- /* K55 */ be_nested_str_weak(sessions),
- /* K56 */ be_nested_str_weak(active_fabrics),
- /* K57 */ be_nested_str_weak(is_marked_for_deletion),
- /* K58 */ be_nested_str_weak(B2),
- /* K59 */ be_nested_str_weak(get_noc),
- /* K60 */ be_nested_str_weak(get_icac),
- /* K61 */ be_nested_str_weak(get_fabric_index),
- /* K62 */ be_nested_str_weak(stop_iteration),
- /* K63 */ be_nested_str_weak(parse),
- /* K64 */ be_nested_str_weak(get_ca),
- /* K65 */ be_nested_str_weak(findsubval),
- /* K66 */ be_nested_str_weak(get_admin_vendor),
- /* K67 */ be_nested_str_weak(get_fabric_id_as_int64),
- /* K68 */ be_nested_str_weak(get_device_id_as_int64),
- /* K69 */ be_nested_str_weak(get_fabric_label),
- /* K70 */ be_nested_str_weak(Fabric),
- /* K71 */ be_nested_str_weak(_MAX_CASE),
- /* K72 */ be_nested_str_weak(count_active_fabrics),
- /* K73 */ be_nested_str_weak(_fabric),
- /* K74 */ be_nested_str_weak(is_commissioning_open),
- /* K75 */ be_nested_str_weak(is_root_commissioning_open),
- /* K76 */ be_nested_str_weak(commissioning_admin_fabric),
- /* K77 */ be_nested_str_weak(Tasmota),
- /* K78 */ be_nested_str_weak(vendorid),
- /* K79 */ be_nested_str_weak(DeviceName),
- /* K80 */ be_nested_str_weak(FriendlyName),
- /* K81 */ be_nested_str_weak(FriendlyName1),
- /* K82 */ be_nested_str_weak(XX),
- /* K83 */ be_nested_str_weak(Status_X202),
- /* K84 */ be_nested_str_weak(StatusFWR),
- /* K85 */ be_nested_str_weak(Hardware),
- /* K86 */ be_nested_str_weak(Version),
- /* K87 */ be_nested_str_weak(_X28),
- /* K88 */ be_nested_str_weak(locale),
- /* K89 */ be_nested_str_weak(create_TLV),
- /* K90 */ be_nested_str_weak(get_active_endpoints),
- /* K91 */ be_nested_str_weak(disable_bridge_mode),
- /* K92 */ be_nested_str_weak(AGGREGATOR_ENDPOINT),
- /* K93 */ be_nested_str_weak(read_attribute),
- }),
+ &be_ktab_class_Matter_Plugin_Root, /* shared constants */
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[936]) { /* code */
+ ( &(const binstruction[930]) { /* code */
0xA4120000, // 0000 IMPORT R4 K0
0xB8160200, // 0001 GETNGBL R5 K1
0x88140B02, // 0002 GETMBR R5 R5 K2
@@ -175,11 +256,11 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */
0x502C0000, // 0035 LDBOOL R11 0 0
0x7C200600, // 0036 CALL R8 3
0x80041000, // 0037 RET 1 R8
- 0x70020365, // 0038 JMP #039F
+ 0x7002035F, // 0038 JMP #0399
0x54220031, // 0039 LDINT R8 50
0x1C200C08, // 003A EQ R8 R6 R8
0x78220000, // 003B JMPF R8 #003D
- 0x70020361, // 003C JMP #039F
+ 0x7002035B, // 003C JMP #0399
0x54220032, // 003D LDINT R8 51
0x1C200C08, // 003E EQ R8 R6 R8
0x782200DC, // 003F JMPF R8 #011D
@@ -403,11 +484,11 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */
0x502C0000, // 0119 LDBOOL R11 0 0
0x7C200600, // 011A CALL R8 3
0x80041000, // 011B RET 1 R8
- 0x70020281, // 011C JMP #039F
+ 0x7002027B, // 011C JMP #0399
0x54220033, // 011D LDINT R8 52
0x1C200C08, // 011E EQ R8 R6 R8
0x78220000, // 011F JMPF R8 #0121
- 0x7002027D, // 0120 JMP #039F
+ 0x70020277, // 0120 JMP #0399
0x54220037, // 0121 LDINT R8 56
0x1C200C08, // 0122 EQ R8 R6 R8
0x7822002B, // 0123 JMPF R8 #0150
@@ -442,8 +523,8 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */
0xB8225C00, // 0140 GETNGBL R8 K46
0xB8262400, // 0141 GETNGBL R9 K18
0x8C241331, // 0142 GETMET R9 R9 K49
- 0x7C240200, // 0143 CALL R9 1
- 0x94241332, // 0144 GETIDX R9 R9 K50
+ 0x582C0032, // 0143 LDCONST R11 K50
+ 0x7C240400, // 0144 CALL R9 2
0x7C200200, // 0145 CALL R8 1
0xB8265C00, // 0146 GETNGBL R9 K46
0x58280030, // 0147 LDCONST R10 K48
@@ -454,7 +535,7 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */
0x5C301000, // 014C MOVE R12 R8
0x7C240600, // 014D CALL R9 3
0x80041200, // 014E RET 1 R9
- 0x7002024E, // 014F JMP #039F
+ 0x70020248, // 014F JMP #0399
0x5422003D, // 0150 LDINT R8 62
0x1C200C08, // 0151 EQ R8 R6 R8
0x782200B5, // 0152 JMPF R8 #0209
@@ -639,422 +720,416 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */
0x5C301000, // 0205 MOVE R12 R8
0x7C240600, // 0206 CALL R9 3
0x80041200, // 0207 RET 1 R9
- 0x70020195, // 0208 JMP #039F
+ 0x7002018F, // 0208 JMP #0399
0x5422003B, // 0209 LDINT R8 60
0x1C200C08, // 020A EQ R8 R6 R8
- 0x7822003C, // 020B JMPF R8 #0249
+ 0x78220034, // 020B JMPF R8 #0241
0x1C200F05, // 020C EQ R8 R7 K5
- 0x78220012, // 020D JMPF R8 #0221
+ 0x78220014, // 020D JMPF R8 #0223
0x88200136, // 020E GETMBR R8 R0 K54
- 0x8C20114A, // 020F GETMET R8 R8 K74
- 0x7C200200, // 0210 CALL R8 1
- 0x88240136, // 0211 GETMBR R9 R0 K54
- 0x8C24134B, // 0212 GETMET R9 R9 K75
- 0x7C240200, // 0213 CALL R9 1
- 0x78220004, // 0214 JMPF R8 #021A
- 0x78260001, // 0215 JMPF R9 #0218
- 0x5828000D, // 0216 LDCONST R10 K13
- 0x70020000, // 0217 JMP #0219
- 0x58280009, // 0218 LDCONST R10 K9
+ 0x8820114A, // 020F GETMBR R8 R8 K74
+ 0x8C20114B, // 0210 GETMET R8 R8 K75
+ 0x7C200200, // 0211 CALL R8 1
+ 0x88240136, // 0212 GETMBR R9 R0 K54
+ 0x8824134A, // 0213 GETMBR R9 R9 K74
+ 0x8C24134C, // 0214 GETMET R9 R9 K76
+ 0x7C240200, // 0215 CALL R9 1
+ 0x78220004, // 0216 JMPF R8 #021C
+ 0x78260001, // 0217 JMPF R9 #021A
+ 0x5828000D, // 0218 LDCONST R10 K13
0x70020000, // 0219 JMP #021B
- 0x58280005, // 021A LDCONST R10 K5
- 0x8C2C0706, // 021B GETMET R11 R3 K6
- 0x88340B0E, // 021C GETMBR R13 R5 K14
- 0x5C381400, // 021D MOVE R14 R10
- 0x7C2C0600, // 021E CALL R11 3
- 0x80041600, // 021F RET 1 R11
- 0x70020026, // 0220 JMP #0248
- 0x1C200F09, // 0221 EQ R8 R7 K9
- 0x78220011, // 0222 JMPF R8 #0235
- 0x88200136, // 0223 GETMBR R8 R0 K54
- 0x8820114C, // 0224 GETMBR R8 R8 K76
- 0x4C240000, // 0225 LDNIL R9
- 0x20241009, // 0226 NE R9 R8 R9
- 0x78260006, // 0227 JMPF R9 #022F
- 0x8C240706, // 0228 GETMET R9 R3 K6
- 0x882C0B0C, // 0229 GETMBR R11 R5 K12
- 0x8C30113D, // 022A GETMET R12 R8 K61
- 0x7C300200, // 022B CALL R12 1
- 0x7C240600, // 022C CALL R9 3
- 0x80041200, // 022D RET 1 R9
- 0x70020004, // 022E JMP #0234
- 0x8C240706, // 022F GETMET R9 R3 K6
- 0x882C0B18, // 0230 GETMBR R11 R5 K24
- 0x4C300000, // 0231 LDNIL R12
- 0x7C240600, // 0232 CALL R9 3
- 0x80041200, // 0233 RET 1 R9
- 0x70020012, // 0234 JMP #0248
- 0x1C200F0D, // 0235 EQ R8 R7 K13
- 0x78220010, // 0236 JMPF R8 #0248
- 0x88200136, // 0237 GETMBR R8 R0 K54
- 0x8820114C, // 0238 GETMBR R8 R8 K76
- 0x4C240000, // 0239 LDNIL R9
- 0x20241009, // 023A NE R9 R8 R9
- 0x78260006, // 023B JMPF R9 #0243
- 0x8C240706, // 023C GETMET R9 R3 K6
- 0x882C0B0C, // 023D GETMBR R11 R5 K12
- 0x8C301142, // 023E GETMET R12 R8 K66
- 0x7C300200, // 023F CALL R12 1
- 0x7C240600, // 0240 CALL R9 3
- 0x80041200, // 0241 RET 1 R9
- 0x70020004, // 0242 JMP #0248
- 0x8C240706, // 0243 GETMET R9 R3 K6
- 0x882C0B18, // 0244 GETMBR R11 R5 K24
- 0x4C300000, // 0245 LDNIL R12
- 0x7C240600, // 0246 CALL R9 3
- 0x80041200, // 0247 RET 1 R9
- 0x70020155, // 0248 JMP #039F
- 0x54220027, // 0249 LDINT R8 40
- 0x1C200C08, // 024A EQ R8 R6 R8
- 0x782200BA, // 024B JMPF R8 #0307
- 0x8C200133, // 024C GETMET R8 R0 K51
- 0x5C280400, // 024D MOVE R10 R2
- 0x7C200400, // 024E CALL R8 2
- 0x1C200F05, // 024F EQ R8 R7 K5
+ 0x58280009, // 021A LDCONST R10 K9
+ 0x70020000, // 021B JMP #021D
+ 0x58280005, // 021C LDCONST R10 K5
+ 0x8C2C0706, // 021D GETMET R11 R3 K6
+ 0x88340B0E, // 021E GETMBR R13 R5 K14
+ 0x5C381400, // 021F MOVE R14 R10
+ 0x7C2C0600, // 0220 CALL R11 3
+ 0x80041600, // 0221 RET 1 R11
+ 0x7002001C, // 0222 JMP #0240
+ 0x1C200F09, // 0223 EQ R8 R7 K9
+ 0x7822000C, // 0224 JMPF R8 #0232
+ 0x88200136, // 0225 GETMBR R8 R0 K54
+ 0x8820114A, // 0226 GETMBR R8 R8 K74
+ 0x8820114D, // 0227 GETMBR R8 R8 K77
+ 0x4C240000, // 0228 LDNIL R9
+ 0x20241009, // 0229 NE R9 R8 R9
+ 0x78260005, // 022A JMPF R9 #0231
+ 0x8C24074E, // 022B GETMET R9 R3 K78
+ 0x882C0B0C, // 022C GETMBR R11 R5 K12
+ 0x8C30113D, // 022D GETMET R12 R8 K61
+ 0x7C300200, // 022E CALL R12 1
+ 0x7C240600, // 022F CALL R9 3
+ 0x80041200, // 0230 RET 1 R9
+ 0x7002000D, // 0231 JMP #0240
+ 0x1C200F0D, // 0232 EQ R8 R7 K13
+ 0x7822000B, // 0233 JMPF R8 #0240
+ 0x88200136, // 0234 GETMBR R8 R0 K54
+ 0x8820114A, // 0235 GETMBR R8 R8 K74
+ 0x8820114D, // 0236 GETMBR R8 R8 K77
+ 0x4C240000, // 0237 LDNIL R9
+ 0x20241009, // 0238 NE R9 R8 R9
+ 0x78260005, // 0239 JMPF R9 #0240
+ 0x8C24074E, // 023A GETMET R9 R3 K78
+ 0x882C0B0C, // 023B GETMBR R11 R5 K12
+ 0x8C301142, // 023C GETMET R12 R8 K66
+ 0x7C300200, // 023D CALL R12 1
+ 0x7C240600, // 023E CALL R9 3
+ 0x80041200, // 023F RET 1 R9
+ 0x70020157, // 0240 JMP #0399
+ 0x54220027, // 0241 LDINT R8 40
+ 0x1C200C08, // 0242 EQ R8 R6 R8
+ 0x782200BC, // 0243 JMPF R8 #0301
+ 0x8C200133, // 0244 GETMET R8 R0 K51
+ 0x5C280400, // 0245 MOVE R10 R2
+ 0x7C200400, // 0246 CALL R8 2
+ 0x1C200F05, // 0247 EQ R8 R7 K5
+ 0x78220005, // 0248 JMPF R8 #024F
+ 0x8C200706, // 0249 GETMET R8 R3 K6
+ 0x88280B0C, // 024A GETMBR R10 R5 K12
+ 0x582C0009, // 024B LDCONST R11 K9
+ 0x7C200600, // 024C CALL R8 3
+ 0x80041000, // 024D RET 1 R8
+ 0x700200B0, // 024E JMP #0300
+ 0x1C200F09, // 024F EQ R8 R7 K9
0x78220005, // 0250 JMPF R8 #0257
0x8C200706, // 0251 GETMET R8 R3 K6
- 0x88280B0C, // 0252 GETMBR R10 R5 K12
- 0x582C0009, // 0253 LDCONST R11 K9
+ 0x88280B16, // 0252 GETMBR R10 R5 K22
+ 0x582C004F, // 0253 LDCONST R11 K79
0x7C200600, // 0254 CALL R8 3
0x80041000, // 0255 RET 1 R8
- 0x700200AE, // 0256 JMP #0306
- 0x1C200F09, // 0257 EQ R8 R7 K9
- 0x78220005, // 0258 JMPF R8 #025F
+ 0x700200A8, // 0256 JMP #0300
+ 0x1C200F0D, // 0257 EQ R8 R7 K13
+ 0x78220006, // 0258 JMPF R8 #0260
0x8C200706, // 0259 GETMET R8 R3 K6
- 0x88280B16, // 025A GETMBR R10 R5 K22
- 0x582C004D, // 025B LDCONST R11 K77
- 0x7C200600, // 025C CALL R8 3
- 0x80041000, // 025D RET 1 R8
- 0x700200A6, // 025E JMP #0306
- 0x1C200F0D, // 025F EQ R8 R7 K13
- 0x78220006, // 0260 JMPF R8 #0268
- 0x8C200706, // 0261 GETMET R8 R3 K6
- 0x88280B0C, // 0262 GETMBR R10 R5 K12
- 0x882C0136, // 0263 GETMBR R11 R0 K54
- 0x882C174E, // 0264 GETMBR R11 R11 K78
- 0x7C200600, // 0265 CALL R8 3
- 0x80041000, // 0266 RET 1 R8
- 0x7002009D, // 0267 JMP #0306
- 0x1C200F0F, // 0268 EQ R8 R7 K15
- 0x7822000A, // 0269 JMPF R8 #0275
- 0x8C200706, // 026A GETMET R8 R3 K6
- 0x88280B16, // 026B GETMBR R10 R5 K22
- 0xB82E2400, // 026C GETNGBL R11 K18
- 0x8C2C1726, // 026D GETMET R11 R11 K38
- 0x5834004F, // 026E LDCONST R13 K79
- 0x50380200, // 026F LDBOOL R14 1 0
- 0x7C2C0600, // 0270 CALL R11 3
- 0x942C174F, // 0271 GETIDX R11 R11 K79
- 0x7C200600, // 0272 CALL R8 3
- 0x80041000, // 0273 RET 1 R8
- 0x70020090, // 0274 JMP #0306
- 0x54220003, // 0275 LDINT R8 4
- 0x1C200E08, // 0276 EQ R8 R7 R8
- 0x78220005, // 0277 JMPF R8 #027E
- 0x8C200706, // 0278 GETMET R8 R3 K6
- 0x88280B0C, // 0279 GETMBR R10 R5 K12
- 0x542E7FFF, // 027A LDINT R11 32768
- 0x7C200600, // 027B CALL R8 3
- 0x80041000, // 027C RET 1 R8
- 0x70020087, // 027D JMP #0306
- 0x54220004, // 027E LDINT R8 5
- 0x1C200E08, // 027F EQ R8 R7 R8
- 0x7822000A, // 0280 JMPF R8 #028C
- 0x8C200706, // 0281 GETMET R8 R3 K6
- 0x88280B16, // 0282 GETMBR R10 R5 K22
- 0xB82E2400, // 0283 GETNGBL R11 K18
- 0x8C2C1726, // 0284 GETMET R11 R11 K38
- 0x58340050, // 0285 LDCONST R13 K80
- 0x50380200, // 0286 LDBOOL R14 1 0
- 0x7C2C0600, // 0287 CALL R11 3
- 0x942C1751, // 0288 GETIDX R11 R11 K81
- 0x7C200600, // 0289 CALL R8 3
- 0x80041000, // 028A RET 1 R8
- 0x70020079, // 028B JMP #0306
- 0x54220005, // 028C LDINT R8 6
- 0x1C200E08, // 028D EQ R8 R7 R8
- 0x78220005, // 028E JMPF R8 #0295
- 0x8C200706, // 028F GETMET R8 R3 K6
- 0x88280B16, // 0290 GETMBR R10 R5 K22
- 0x582C0052, // 0291 LDCONST R11 K82
- 0x7C200600, // 0292 CALL R8 3
- 0x80041000, // 0293 RET 1 R8
- 0x70020070, // 0294 JMP #0306
- 0x54220006, // 0295 LDINT R8 7
- 0x1C200E08, // 0296 EQ R8 R7 R8
- 0x78220005, // 0297 JMPF R8 #029E
- 0x8C200706, // 0298 GETMET R8 R3 K6
- 0x88280B0C, // 0299 GETMBR R10 R5 K12
- 0x582C0005, // 029A LDCONST R11 K5
- 0x7C200600, // 029B CALL R8 3
- 0x80041000, // 029C RET 1 R8
- 0x70020067, // 029D JMP #0306
- 0x54220007, // 029E LDINT R8 8
- 0x1C200E08, // 029F EQ R8 R7 R8
- 0x7822000B, // 02A0 JMPF R8 #02AD
- 0x8C200706, // 02A1 GETMET R8 R3 K6
- 0x88280B16, // 02A2 GETMBR R10 R5 K22
- 0xB82E2400, // 02A3 GETNGBL R11 K18
- 0x8C2C1726, // 02A4 GETMET R11 R11 K38
- 0x58340053, // 02A5 LDCONST R13 K83
- 0x50380200, // 02A6 LDBOOL R14 1 0
- 0x7C2C0600, // 02A7 CALL R11 3
- 0x942C1754, // 02A8 GETIDX R11 R11 K84
- 0x942C1755, // 02A9 GETIDX R11 R11 K85
- 0x7C200600, // 02AA CALL R8 3
- 0x80041000, // 02AB RET 1 R8
- 0x70020058, // 02AC JMP #0306
- 0x54220008, // 02AD LDINT R8 9
- 0x1C200E08, // 02AE EQ R8 R7 R8
- 0x78220005, // 02AF JMPF R8 #02B6
- 0x8C200706, // 02B0 GETMET R8 R3 K6
- 0x88280B0C, // 02B1 GETMBR R10 R5 K12
- 0x582C0009, // 02B2 LDCONST R11 K9
- 0x7C200600, // 02B3 CALL R8 3
- 0x80041000, // 02B4 RET 1 R8
- 0x7002004F, // 02B5 JMP #0306
- 0x54220009, // 02B6 LDINT R8 10
- 0x1C200E08, // 02B7 EQ R8 R7 R8
- 0x78220015, // 02B8 JMPF R8 #02CF
- 0xB8222400, // 02B9 GETNGBL R8 K18
- 0x8C201126, // 02BA GETMET R8 R8 K38
- 0x58280053, // 02BB LDCONST R10 K83
- 0x502C0200, // 02BC LDBOOL R11 1 0
- 0x7C200600, // 02BD CALL R8 3
- 0x94201154, // 02BE GETIDX R8 R8 K84
- 0x94201156, // 02BF GETIDX R8 R8 K86
- 0x8C24091B, // 02C0 GETMET R9 R4 K27
- 0x5C2C1000, // 02C1 MOVE R11 R8
- 0x58300057, // 02C2 LDCONST R12 K87
- 0x7C240600, // 02C3 CALL R9 3
- 0x24281305, // 02C4 GT R10 R9 K5
- 0x782A0002, // 02C5 JMPF R10 #02C9
- 0x04281309, // 02C6 SUB R10 R9 K9
- 0x402A0A0A, // 02C7 CONNECT R10 K5 R10
- 0x9420100A, // 02C8 GETIDX R8 R8 R10
- 0x8C280706, // 02C9 GETMET R10 R3 K6
- 0x88300B16, // 02CA GETMBR R12 R5 K22
- 0x5C341000, // 02CB MOVE R13 R8
- 0x7C280600, // 02CC CALL R10 3
- 0x80041400, // 02CD RET 1 R10
- 0x70020036, // 02CE JMP #0306
- 0x5422000E, // 02CF LDINT R8 15
- 0x1C200E08, // 02D0 EQ R8 R7 R8
- 0x7822000B, // 02D1 JMPF R8 #02DE
- 0x8C200706, // 02D2 GETMET R8 R3 K6
- 0x88280B16, // 02D3 GETMBR R10 R5 K22
- 0xB82E2400, // 02D4 GETNGBL R11 K18
- 0x8C2C1725, // 02D5 GETMET R11 R11 K37
- 0x7C2C0200, // 02D6 CALL R11 1
- 0x8C2C171B, // 02D7 GETMET R11 R11 K27
- 0x5834001C, // 02D8 LDCONST R13 K28
- 0x5838001D, // 02D9 LDCONST R14 K29
- 0x7C2C0600, // 02DA CALL R11 3
- 0x7C200600, // 02DB CALL R8 3
- 0x80041000, // 02DC RET 1 R8
- 0x70020027, // 02DD JMP #0306
- 0x54220010, // 02DE LDINT R8 17
- 0x1C200E08, // 02DF EQ R8 R7 R8
- 0x78220005, // 02E0 JMPF R8 #02E7
- 0x8C200706, // 02E1 GETMET R8 R3 K6
- 0x88280B10, // 02E2 GETMBR R10 R5 K16
- 0x582C0009, // 02E3 LDCONST R11 K9
- 0x7C200600, // 02E4 CALL R8 3
- 0x80041000, // 02E5 RET 1 R8
- 0x7002001E, // 02E6 JMP #0306
- 0x54220011, // 02E7 LDINT R8 18
- 0x1C200E08, // 02E8 EQ R8 R7 R8
- 0x7822000B, // 02E9 JMPF R8 #02F6
- 0x8C200706, // 02EA GETMET R8 R3 K6
- 0x88280B16, // 02EB GETMBR R10 R5 K22
- 0xB82E2400, // 02EC GETNGBL R11 K18
- 0x8C2C1725, // 02ED GETMET R11 R11 K37
- 0x7C2C0200, // 02EE CALL R11 1
- 0x8C2C171B, // 02EF GETMET R11 R11 K27
- 0x5834001C, // 02F0 LDCONST R13 K28
- 0x5838001D, // 02F1 LDCONST R14 K29
- 0x7C2C0600, // 02F2 CALL R11 3
- 0x7C200600, // 02F3 CALL R8 3
- 0x80041000, // 02F4 RET 1 R8
- 0x7002000F, // 02F5 JMP #0306
- 0x54220012, // 02F6 LDINT R8 19
- 0x1C200E08, // 02F7 EQ R8 R7 R8
- 0x7822000C, // 02F8 JMPF R8 #0306
- 0x8C200B0A, // 02F9 GETMET R8 R5 K10
- 0x7C200200, // 02FA CALL R8 1
- 0x8C24110B, // 02FB GETMET R9 R8 K11
- 0x582C0005, // 02FC LDCONST R11 K5
- 0x88300B0C, // 02FD GETMBR R12 R5 K12
- 0x5834000F, // 02FE LDCONST R13 K15
- 0x7C240800, // 02FF CALL R9 4
- 0x8C24110B, // 0300 GETMET R9 R8 K11
- 0x582C0009, // 0301 LDCONST R11 K9
- 0x88300B0C, // 0302 GETMBR R12 R5 K12
- 0x5834000F, // 0303 LDCONST R13 K15
- 0x7C240800, // 0304 CALL R9 4
- 0x80041000, // 0305 RET 1 R8
- 0x70020097, // 0306 JMP #039F
- 0x5422003E, // 0307 LDINT R8 63
- 0x1C200C08, // 0308 EQ R8 R6 R8
- 0x78220000, // 0309 JMPF R8 #030B
- 0x70020093, // 030A JMP #039F
- 0x54220029, // 030B LDINT R8 42
- 0x1C200C08, // 030C EQ R8 R6 R8
- 0x7822001D, // 030D JMPF R8 #032C
- 0x1C200F05, // 030E EQ R8 R7 K5
- 0x78220003, // 030F JMPF R8 #0314
- 0x8C200B11, // 0310 GETMET R8 R5 K17
- 0x7C200200, // 0311 CALL R8 1
- 0x80041000, // 0312 RET 1 R8
- 0x70020016, // 0313 JMP #032B
- 0x1C200F09, // 0314 EQ R8 R7 K9
- 0x78220005, // 0315 JMPF R8 #031C
- 0x8C200706, // 0316 GETMET R8 R3 K6
- 0x88280B10, // 0317 GETMBR R10 R5 K16
- 0x582C0005, // 0318 LDCONST R11 K5
- 0x7C200600, // 0319 CALL R8 3
- 0x80041000, // 031A RET 1 R8
- 0x7002000E, // 031B JMP #032B
- 0x1C200F0D, // 031C EQ R8 R7 K13
- 0x78220005, // 031D JMPF R8 #0324
- 0x8C200706, // 031E GETMET R8 R3 K6
- 0x88280B0E, // 031F GETMBR R10 R5 K14
- 0x582C0009, // 0320 LDCONST R11 K9
- 0x7C200600, // 0321 CALL R8 3
- 0x80041000, // 0322 RET 1 R8
- 0x70020006, // 0323 JMP #032B
- 0x1C200F0F, // 0324 EQ R8 R7 K15
- 0x78220004, // 0325 JMPF R8 #032B
- 0x8C200706, // 0326 GETMET R8 R3 K6
- 0x88280B18, // 0327 GETMBR R10 R5 K24
- 0x4C2C0000, // 0328 LDNIL R11
- 0x7C200600, // 0329 CALL R8 3
- 0x80041000, // 032A RET 1 R8
- 0x70020072, // 032B JMP #039F
- 0x5422002A, // 032C LDINT R8 43
- 0x1C200C08, // 032D EQ R8 R6 R8
- 0x78220016, // 032E JMPF R8 #0346
- 0x1C200F05, // 032F EQ R8 R7 K5
- 0x78220007, // 0330 JMPF R8 #0339
- 0x8C200706, // 0331 GETMET R8 R3 K6
- 0x88280B16, // 0332 GETMBR R10 R5 K22
- 0xB82E2400, // 0333 GETNGBL R11 K18
- 0x8C2C1758, // 0334 GETMET R11 R11 K88
- 0x7C2C0200, // 0335 CALL R11 1
- 0x7C200600, // 0336 CALL R8 3
- 0x80041000, // 0337 RET 1 R8
- 0x7002000B, // 0338 JMP #0345
- 0x1C200F09, // 0339 EQ R8 R7 K9
- 0x78220009, // 033A JMPF R8 #0345
- 0x8C200B11, // 033B GETMET R8 R5 K17
- 0x7C200200, // 033C CALL R8 1
- 0x8C24110B, // 033D GETMET R9 R8 K11
- 0x4C2C0000, // 033E LDNIL R11
- 0x88300B16, // 033F GETMBR R12 R5 K22
- 0xB8362400, // 0340 GETNGBL R13 K18
- 0x8C341B58, // 0341 GETMET R13 R13 K88
- 0x7C340200, // 0342 CALL R13 1
- 0x7C240800, // 0343 CALL R9 4
- 0x80041000, // 0344 RET 1 R8
- 0x70020058, // 0345 JMP #039F
- 0x5422002B, // 0346 LDINT R8 44
- 0x1C200C08, // 0347 EQ R8 R6 R8
- 0x7822001C, // 0348 JMPF R8 #0366
- 0x1C200F05, // 0349 EQ R8 R7 K5
- 0x78220005, // 034A JMPF R8 #0351
- 0x8C200706, // 034B GETMET R8 R3 K6
- 0x88280B0E, // 034C GETMBR R10 R5 K14
- 0x582C0009, // 034D LDCONST R11 K9
- 0x7C200600, // 034E CALL R8 3
- 0x80041000, // 034F RET 1 R8
- 0x70020013, // 0350 JMP #0365
- 0x1C200F09, // 0351 EQ R8 R7 K9
- 0x78220005, // 0352 JMPF R8 #0359
- 0x8C200706, // 0353 GETMET R8 R3 K6
- 0x88280B0E, // 0354 GETMBR R10 R5 K14
- 0x542E0003, // 0355 LDINT R11 4
- 0x7C200600, // 0356 CALL R8 3
- 0x80041000, // 0357 RET 1 R8
- 0x7002000B, // 0358 JMP #0365
- 0x1C200F0D, // 0359 EQ R8 R7 K13
- 0x78220009, // 035A JMPF R8 #0365
- 0x8C200B11, // 035B GETMET R8 R5 K17
- 0x7C200200, // 035C CALL R8 1
- 0x8C24110B, // 035D GETMET R9 R8 K11
- 0x4C2C0000, // 035E LDNIL R11
- 0x8C300B59, // 035F GETMET R12 R5 K89
- 0x88380B0E, // 0360 GETMBR R14 R5 K14
- 0x543E0003, // 0361 LDINT R15 4
- 0x7C300600, // 0362 CALL R12 3
- 0x7C240600, // 0363 CALL R9 3
- 0x80041000, // 0364 RET 1 R8
- 0x70020038, // 0365 JMP #039F
- 0x54220030, // 0366 LDINT R8 49
- 0x1C200C08, // 0367 EQ R8 R6 R8
- 0x78220007, // 0368 JMPF R8 #0371
- 0x1C200F0F, // 0369 EQ R8 R7 K15
- 0x78220004, // 036A JMPF R8 #0370
- 0x8C200706, // 036B GETMET R8 R3 K6
- 0x88280B0E, // 036C GETMBR R10 R5 K14
- 0x542E001D, // 036D LDINT R11 30
- 0x7C200600, // 036E CALL R8 3
- 0x80041000, // 036F RET 1 R8
- 0x7002002D, // 0370 JMP #039F
- 0x5422001C, // 0371 LDINT R8 29
- 0x1C200C08, // 0372 EQ R8 R6 R8
- 0x7822002A, // 0373 JMPF R8 #039F
- 0x1C200F0D, // 0374 EQ R8 R7 K13
- 0x78220008, // 0375 JMPF R8 #037F
- 0x8C200B11, // 0376 GETMET R8 R5 K17
- 0x7C200200, // 0377 CALL R8 1
- 0x8C24110B, // 0378 GETMET R9 R8 K11
- 0x4C2C0000, // 0379 LDNIL R11
- 0x88300B0C, // 037A GETMBR R12 R5 K12
- 0x5436001E, // 037B LDINT R13 31
- 0x7C240800, // 037C CALL R9 4
- 0x80041000, // 037D RET 1 R8
- 0x7002001F, // 037E JMP #039F
- 0x1C200F0F, // 037F EQ R8 R7 K15
- 0x7822001D, // 0380 JMPF R8 #039F
- 0x8C200B11, // 0381 GETMET R8 R5 K17
- 0x7C200200, // 0382 CALL R8 1
- 0x88240136, // 0383 GETMBR R9 R0 K54
- 0x8C24135A, // 0384 GETMET R9 R9 K90
- 0x502C0200, // 0385 LDBOOL R11 1 0
- 0x7C240400, // 0386 CALL R9 2
- 0x88280136, // 0387 GETMBR R10 R0 K54
- 0x8828155B, // 0388 GETMBR R10 R10 K91
- 0x602C0010, // 0389 GETGBL R11 G16
- 0x5C301200, // 038A MOVE R12 R9
- 0x7C2C0200, // 038B CALL R11 1
- 0xA802000D, // 038C EXBLK 0 #039B
- 0x5C301600, // 038D MOVE R12 R11
- 0x7C300000, // 038E CALL R12 0
- 0x5C341400, // 038F MOVE R13 R10
- 0x78360003, // 0390 JMPF R13 #0395
- 0xB8360200, // 0391 GETNGBL R13 K1
- 0x88341B5C, // 0392 GETMBR R13 R13 K92
- 0x2034180D, // 0393 NE R13 R12 R13
- 0x78360004, // 0394 JMPF R13 #039A
- 0x8C34110B, // 0395 GETMET R13 R8 K11
- 0x4C3C0000, // 0396 LDNIL R15
- 0x88400B0C, // 0397 GETMBR R16 R5 K12
- 0x5C441800, // 0398 MOVE R17 R12
- 0x7C340800, // 0399 CALL R13 4
- 0x7001FFF1, // 039A JMP #038D
- 0x582C003E, // 039B LDCONST R11 K62
- 0xAC2C0200, // 039C CATCH R11 1 0
- 0xB0080000, // 039D RAISE 2 R0 R0
- 0x80041000, // 039E RET 1 R8
- 0x60200003, // 039F GETGBL R8 G3
- 0x5C240000, // 03A0 MOVE R9 R0
- 0x7C200200, // 03A1 CALL R8 1
- 0x8C20115D, // 03A2 GETMET R8 R8 K93
- 0x5C280200, // 03A3 MOVE R10 R1
- 0x5C2C0400, // 03A4 MOVE R11 R2
- 0x5C300600, // 03A5 MOVE R12 R3
- 0x7C200800, // 03A6 CALL R8 4
- 0x80041000, // 03A7 RET 1 R8
+ 0x88280B0C, // 025A GETMBR R10 R5 K12
+ 0x882C0136, // 025B GETMBR R11 R0 K54
+ 0x882C1750, // 025C GETMBR R11 R11 K80
+ 0x7C200600, // 025D CALL R8 3
+ 0x80041000, // 025E RET 1 R8
+ 0x7002009F, // 025F JMP #0300
+ 0x1C200F0F, // 0260 EQ R8 R7 K15
+ 0x7822000A, // 0261 JMPF R8 #026D
+ 0x8C200706, // 0262 GETMET R8 R3 K6
+ 0x88280B16, // 0263 GETMBR R10 R5 K22
+ 0xB82E2400, // 0264 GETNGBL R11 K18
+ 0x8C2C1726, // 0265 GETMET R11 R11 K38
+ 0x58340051, // 0266 LDCONST R13 K81
+ 0x50380200, // 0267 LDBOOL R14 1 0
+ 0x7C2C0600, // 0268 CALL R11 3
+ 0x942C1751, // 0269 GETIDX R11 R11 K81
+ 0x7C200600, // 026A CALL R8 3
+ 0x80041000, // 026B RET 1 R8
+ 0x70020092, // 026C JMP #0300
+ 0x54220003, // 026D LDINT R8 4
+ 0x1C200E08, // 026E EQ R8 R7 R8
+ 0x78220005, // 026F JMPF R8 #0276
+ 0x8C200706, // 0270 GETMET R8 R3 K6
+ 0x88280B0C, // 0271 GETMBR R10 R5 K12
+ 0x542E7FFF, // 0272 LDINT R11 32768
+ 0x7C200600, // 0273 CALL R8 3
+ 0x80041000, // 0274 RET 1 R8
+ 0x70020089, // 0275 JMP #0300
+ 0x54220004, // 0276 LDINT R8 5
+ 0x1C200E08, // 0277 EQ R8 R7 R8
+ 0x7822000A, // 0278 JMPF R8 #0284
+ 0x8C200706, // 0279 GETMET R8 R3 K6
+ 0x88280B16, // 027A GETMBR R10 R5 K22
+ 0xB82E2400, // 027B GETNGBL R11 K18
+ 0x8C2C1726, // 027C GETMET R11 R11 K38
+ 0x58340052, // 027D LDCONST R13 K82
+ 0x50380200, // 027E LDBOOL R14 1 0
+ 0x7C2C0600, // 027F CALL R11 3
+ 0x942C1753, // 0280 GETIDX R11 R11 K83
+ 0x7C200600, // 0281 CALL R8 3
+ 0x80041000, // 0282 RET 1 R8
+ 0x7002007B, // 0283 JMP #0300
+ 0x54220005, // 0284 LDINT R8 6
+ 0x1C200E08, // 0285 EQ R8 R7 R8
+ 0x78220005, // 0286 JMPF R8 #028D
+ 0x8C200706, // 0287 GETMET R8 R3 K6
+ 0x88280B16, // 0288 GETMBR R10 R5 K22
+ 0x582C0054, // 0289 LDCONST R11 K84
+ 0x7C200600, // 028A CALL R8 3
+ 0x80041000, // 028B RET 1 R8
+ 0x70020072, // 028C JMP #0300
+ 0x54220006, // 028D LDINT R8 7
+ 0x1C200E08, // 028E EQ R8 R7 R8
+ 0x78220005, // 028F JMPF R8 #0296
+ 0x8C200706, // 0290 GETMET R8 R3 K6
+ 0x88280B0C, // 0291 GETMBR R10 R5 K12
+ 0x582C0005, // 0292 LDCONST R11 K5
+ 0x7C200600, // 0293 CALL R8 3
+ 0x80041000, // 0294 RET 1 R8
+ 0x70020069, // 0295 JMP #0300
+ 0x54220007, // 0296 LDINT R8 8
+ 0x1C200E08, // 0297 EQ R8 R7 R8
+ 0x7822000B, // 0298 JMPF R8 #02A5
+ 0x8C200706, // 0299 GETMET R8 R3 K6
+ 0x88280B16, // 029A GETMBR R10 R5 K22
+ 0xB82E2400, // 029B GETNGBL R11 K18
+ 0x8C2C1726, // 029C GETMET R11 R11 K38
+ 0x58340055, // 029D LDCONST R13 K85
+ 0x50380200, // 029E LDBOOL R14 1 0
+ 0x7C2C0600, // 029F CALL R11 3
+ 0x942C1756, // 02A0 GETIDX R11 R11 K86
+ 0x942C1757, // 02A1 GETIDX R11 R11 K87
+ 0x7C200600, // 02A2 CALL R8 3
+ 0x80041000, // 02A3 RET 1 R8
+ 0x7002005A, // 02A4 JMP #0300
+ 0x54220008, // 02A5 LDINT R8 9
+ 0x1C200E08, // 02A6 EQ R8 R7 R8
+ 0x78220007, // 02A7 JMPF R8 #02B0
+ 0x8C200706, // 02A8 GETMET R8 R3 K6
+ 0x88280B2A, // 02A9 GETMBR R10 R5 K42
+ 0xB82E2400, // 02AA GETNGBL R11 K18
+ 0x8C2C1758, // 02AB GETMET R11 R11 K88
+ 0x7C2C0200, // 02AC CALL R11 1
+ 0x7C200600, // 02AD CALL R8 3
+ 0x80041000, // 02AE RET 1 R8
+ 0x7002004F, // 02AF JMP #0300
+ 0x54220009, // 02B0 LDINT R8 10
+ 0x1C200E08, // 02B1 EQ R8 R7 R8
+ 0x78220015, // 02B2 JMPF R8 #02C9
+ 0xB8222400, // 02B3 GETNGBL R8 K18
+ 0x8C201126, // 02B4 GETMET R8 R8 K38
+ 0x58280055, // 02B5 LDCONST R10 K85
+ 0x502C0200, // 02B6 LDBOOL R11 1 0
+ 0x7C200600, // 02B7 CALL R8 3
+ 0x94201156, // 02B8 GETIDX R8 R8 K86
+ 0x94201159, // 02B9 GETIDX R8 R8 K89
+ 0x8C24091B, // 02BA GETMET R9 R4 K27
+ 0x5C2C1000, // 02BB MOVE R11 R8
+ 0x5830005A, // 02BC LDCONST R12 K90
+ 0x7C240600, // 02BD CALL R9 3
+ 0x24281305, // 02BE GT R10 R9 K5
+ 0x782A0002, // 02BF JMPF R10 #02C3
+ 0x04281309, // 02C0 SUB R10 R9 K9
+ 0x402A0A0A, // 02C1 CONNECT R10 K5 R10
+ 0x9420100A, // 02C2 GETIDX R8 R8 R10
+ 0x8C280706, // 02C3 GETMET R10 R3 K6
+ 0x88300B16, // 02C4 GETMBR R12 R5 K22
+ 0x5C341000, // 02C5 MOVE R13 R8
+ 0x7C280600, // 02C6 CALL R10 3
+ 0x80041400, // 02C7 RET 1 R10
+ 0x70020036, // 02C8 JMP #0300
+ 0x5422000E, // 02C9 LDINT R8 15
+ 0x1C200E08, // 02CA EQ R8 R7 R8
+ 0x7822000B, // 02CB JMPF R8 #02D8
+ 0x8C200706, // 02CC GETMET R8 R3 K6
+ 0x88280B16, // 02CD GETMBR R10 R5 K22
+ 0xB82E2400, // 02CE GETNGBL R11 K18
+ 0x8C2C1725, // 02CF GETMET R11 R11 K37
+ 0x7C2C0200, // 02D0 CALL R11 1
+ 0x8C2C171B, // 02D1 GETMET R11 R11 K27
+ 0x5834001C, // 02D2 LDCONST R13 K28
+ 0x5838001D, // 02D3 LDCONST R14 K29
+ 0x7C2C0600, // 02D4 CALL R11 3
+ 0x7C200600, // 02D5 CALL R8 3
+ 0x80041000, // 02D6 RET 1 R8
+ 0x70020027, // 02D7 JMP #0300
+ 0x54220010, // 02D8 LDINT R8 17
+ 0x1C200E08, // 02D9 EQ R8 R7 R8
+ 0x78220005, // 02DA JMPF R8 #02E1
+ 0x8C200706, // 02DB GETMET R8 R3 K6
+ 0x88280B10, // 02DC GETMBR R10 R5 K16
+ 0x582C0009, // 02DD LDCONST R11 K9
+ 0x7C200600, // 02DE CALL R8 3
+ 0x80041000, // 02DF RET 1 R8
+ 0x7002001E, // 02E0 JMP #0300
+ 0x54220011, // 02E1 LDINT R8 18
+ 0x1C200E08, // 02E2 EQ R8 R7 R8
+ 0x7822000B, // 02E3 JMPF R8 #02F0
+ 0x8C200706, // 02E4 GETMET R8 R3 K6
+ 0x88280B16, // 02E5 GETMBR R10 R5 K22
+ 0xB82E2400, // 02E6 GETNGBL R11 K18
+ 0x8C2C1725, // 02E7 GETMET R11 R11 K37
+ 0x7C2C0200, // 02E8 CALL R11 1
+ 0x8C2C171B, // 02E9 GETMET R11 R11 K27
+ 0x5834001C, // 02EA LDCONST R13 K28
+ 0x5838001D, // 02EB LDCONST R14 K29
+ 0x7C2C0600, // 02EC CALL R11 3
+ 0x7C200600, // 02ED CALL R8 3
+ 0x80041000, // 02EE RET 1 R8
+ 0x7002000F, // 02EF JMP #0300
+ 0x54220012, // 02F0 LDINT R8 19
+ 0x1C200E08, // 02F1 EQ R8 R7 R8
+ 0x7822000C, // 02F2 JMPF R8 #0300
+ 0x8C200B0A, // 02F3 GETMET R8 R5 K10
+ 0x7C200200, // 02F4 CALL R8 1
+ 0x8C24110B, // 02F5 GETMET R9 R8 K11
+ 0x582C0005, // 02F6 LDCONST R11 K5
+ 0x88300B0C, // 02F7 GETMBR R12 R5 K12
+ 0x5834000F, // 02F8 LDCONST R13 K15
+ 0x7C240800, // 02F9 CALL R9 4
+ 0x8C24110B, // 02FA GETMET R9 R8 K11
+ 0x582C0009, // 02FB LDCONST R11 K9
+ 0x88300B0C, // 02FC GETMBR R12 R5 K12
+ 0x5834000F, // 02FD LDCONST R13 K15
+ 0x7C240800, // 02FE CALL R9 4
+ 0x80041000, // 02FF RET 1 R8
+ 0x70020097, // 0300 JMP #0399
+ 0x5422003E, // 0301 LDINT R8 63
+ 0x1C200C08, // 0302 EQ R8 R6 R8
+ 0x78220000, // 0303 JMPF R8 #0305
+ 0x70020093, // 0304 JMP #0399
+ 0x54220029, // 0305 LDINT R8 42
+ 0x1C200C08, // 0306 EQ R8 R6 R8
+ 0x7822001D, // 0307 JMPF R8 #0326
+ 0x1C200F05, // 0308 EQ R8 R7 K5
+ 0x78220003, // 0309 JMPF R8 #030E
+ 0x8C200B11, // 030A GETMET R8 R5 K17
+ 0x7C200200, // 030B CALL R8 1
+ 0x80041000, // 030C RET 1 R8
+ 0x70020016, // 030D JMP #0325
+ 0x1C200F09, // 030E EQ R8 R7 K9
+ 0x78220005, // 030F JMPF R8 #0316
+ 0x8C200706, // 0310 GETMET R8 R3 K6
+ 0x88280B10, // 0311 GETMBR R10 R5 K16
+ 0x582C0005, // 0312 LDCONST R11 K5
+ 0x7C200600, // 0313 CALL R8 3
+ 0x80041000, // 0314 RET 1 R8
+ 0x7002000E, // 0315 JMP #0325
+ 0x1C200F0D, // 0316 EQ R8 R7 K13
+ 0x78220005, // 0317 JMPF R8 #031E
+ 0x8C200706, // 0318 GETMET R8 R3 K6
+ 0x88280B0E, // 0319 GETMBR R10 R5 K14
+ 0x582C0009, // 031A LDCONST R11 K9
+ 0x7C200600, // 031B CALL R8 3
+ 0x80041000, // 031C RET 1 R8
+ 0x70020006, // 031D JMP #0325
+ 0x1C200F0F, // 031E EQ R8 R7 K15
+ 0x78220004, // 031F JMPF R8 #0325
+ 0x8C200706, // 0320 GETMET R8 R3 K6
+ 0x88280B18, // 0321 GETMBR R10 R5 K24
+ 0x4C2C0000, // 0322 LDNIL R11
+ 0x7C200600, // 0323 CALL R8 3
+ 0x80041000, // 0324 RET 1 R8
+ 0x70020072, // 0325 JMP #0399
+ 0x5422002A, // 0326 LDINT R8 43
+ 0x1C200C08, // 0327 EQ R8 R6 R8
+ 0x78220016, // 0328 JMPF R8 #0340
+ 0x1C200F05, // 0329 EQ R8 R7 K5
+ 0x78220007, // 032A JMPF R8 #0333
+ 0x8C200706, // 032B GETMET R8 R3 K6
+ 0x88280B16, // 032C GETMBR R10 R5 K22
+ 0xB82E2400, // 032D GETNGBL R11 K18
+ 0x8C2C175B, // 032E GETMET R11 R11 K91
+ 0x7C2C0200, // 032F CALL R11 1
+ 0x7C200600, // 0330 CALL R8 3
+ 0x80041000, // 0331 RET 1 R8
+ 0x7002000B, // 0332 JMP #033F
+ 0x1C200F09, // 0333 EQ R8 R7 K9
+ 0x78220009, // 0334 JMPF R8 #033F
+ 0x8C200B11, // 0335 GETMET R8 R5 K17
+ 0x7C200200, // 0336 CALL R8 1
+ 0x8C24110B, // 0337 GETMET R9 R8 K11
+ 0x4C2C0000, // 0338 LDNIL R11
+ 0x88300B16, // 0339 GETMBR R12 R5 K22
+ 0xB8362400, // 033A GETNGBL R13 K18
+ 0x8C341B5B, // 033B GETMET R13 R13 K91
+ 0x7C340200, // 033C CALL R13 1
+ 0x7C240800, // 033D CALL R9 4
+ 0x80041000, // 033E RET 1 R8
+ 0x70020058, // 033F JMP #0399
+ 0x5422002B, // 0340 LDINT R8 44
+ 0x1C200C08, // 0341 EQ R8 R6 R8
+ 0x7822001C, // 0342 JMPF R8 #0360
+ 0x1C200F05, // 0343 EQ R8 R7 K5
+ 0x78220005, // 0344 JMPF R8 #034B
+ 0x8C200706, // 0345 GETMET R8 R3 K6
+ 0x88280B0E, // 0346 GETMBR R10 R5 K14
+ 0x582C0009, // 0347 LDCONST R11 K9
+ 0x7C200600, // 0348 CALL R8 3
+ 0x80041000, // 0349 RET 1 R8
+ 0x70020013, // 034A JMP #035F
+ 0x1C200F09, // 034B EQ R8 R7 K9
+ 0x78220005, // 034C JMPF R8 #0353
+ 0x8C200706, // 034D GETMET R8 R3 K6
+ 0x88280B0E, // 034E GETMBR R10 R5 K14
+ 0x542E0003, // 034F LDINT R11 4
+ 0x7C200600, // 0350 CALL R8 3
+ 0x80041000, // 0351 RET 1 R8
+ 0x7002000B, // 0352 JMP #035F
+ 0x1C200F0D, // 0353 EQ R8 R7 K13
+ 0x78220009, // 0354 JMPF R8 #035F
+ 0x8C200B11, // 0355 GETMET R8 R5 K17
+ 0x7C200200, // 0356 CALL R8 1
+ 0x8C24110B, // 0357 GETMET R9 R8 K11
+ 0x4C2C0000, // 0358 LDNIL R11
+ 0x8C300B5C, // 0359 GETMET R12 R5 K92
+ 0x88380B0E, // 035A GETMBR R14 R5 K14
+ 0x543E0003, // 035B LDINT R15 4
+ 0x7C300600, // 035C CALL R12 3
+ 0x7C240600, // 035D CALL R9 3
+ 0x80041000, // 035E RET 1 R8
+ 0x70020038, // 035F JMP #0399
+ 0x54220030, // 0360 LDINT R8 49
+ 0x1C200C08, // 0361 EQ R8 R6 R8
+ 0x78220007, // 0362 JMPF R8 #036B
+ 0x1C200F0F, // 0363 EQ R8 R7 K15
+ 0x78220004, // 0364 JMPF R8 #036A
+ 0x8C200706, // 0365 GETMET R8 R3 K6
+ 0x88280B0E, // 0366 GETMBR R10 R5 K14
+ 0x542E001D, // 0367 LDINT R11 30
+ 0x7C200600, // 0368 CALL R8 3
+ 0x80041000, // 0369 RET 1 R8
+ 0x7002002D, // 036A JMP #0399
+ 0x5422001C, // 036B LDINT R8 29
+ 0x1C200C08, // 036C EQ R8 R6 R8
+ 0x7822002A, // 036D JMPF R8 #0399
+ 0x1C200F0D, // 036E EQ R8 R7 K13
+ 0x78220008, // 036F JMPF R8 #0379
+ 0x8C200B11, // 0370 GETMET R8 R5 K17
+ 0x7C200200, // 0371 CALL R8 1
+ 0x8C24110B, // 0372 GETMET R9 R8 K11
+ 0x4C2C0000, // 0373 LDNIL R11
+ 0x88300B0C, // 0374 GETMBR R12 R5 K12
+ 0x5436001E, // 0375 LDINT R13 31
+ 0x7C240800, // 0376 CALL R9 4
+ 0x80041000, // 0377 RET 1 R8
+ 0x7002001F, // 0378 JMP #0399
+ 0x1C200F0F, // 0379 EQ R8 R7 K15
+ 0x7822001D, // 037A JMPF R8 #0399
+ 0x8C200B11, // 037B GETMET R8 R5 K17
+ 0x7C200200, // 037C CALL R8 1
+ 0x88240136, // 037D GETMBR R9 R0 K54
+ 0x8C24135D, // 037E GETMET R9 R9 K93
+ 0x502C0200, // 037F LDBOOL R11 1 0
+ 0x7C240400, // 0380 CALL R9 2
+ 0x88280136, // 0381 GETMBR R10 R0 K54
+ 0x8828155E, // 0382 GETMBR R10 R10 K94
+ 0x602C0010, // 0383 GETGBL R11 G16
+ 0x5C301200, // 0384 MOVE R12 R9
+ 0x7C2C0200, // 0385 CALL R11 1
+ 0xA802000D, // 0386 EXBLK 0 #0395
+ 0x5C301600, // 0387 MOVE R12 R11
+ 0x7C300000, // 0388 CALL R12 0
+ 0x5C341400, // 0389 MOVE R13 R10
+ 0x78360003, // 038A JMPF R13 #038F
+ 0xB8360200, // 038B GETNGBL R13 K1
+ 0x88341B5F, // 038C GETMBR R13 R13 K95
+ 0x2034180D, // 038D NE R13 R12 R13
+ 0x78360004, // 038E JMPF R13 #0394
+ 0x8C34110B, // 038F GETMET R13 R8 K11
+ 0x4C3C0000, // 0390 LDNIL R15
+ 0x88400B0C, // 0391 GETMBR R16 R5 K12
+ 0x5C441800, // 0392 MOVE R17 R12
+ 0x7C340800, // 0393 CALL R13 4
+ 0x7001FFF1, // 0394 JMP #0387
+ 0x582C003E, // 0395 LDCONST R11 K62
+ 0xAC2C0200, // 0396 CATCH R11 1 0
+ 0xB0080000, // 0397 RAISE 2 R0 R0
+ 0x80041000, // 0398 RET 1 R8
+ 0x60200003, // 0399 GETGBL R8 G3
+ 0x5C240000, // 039A MOVE R9 R0
+ 0x7C200200, // 039B CALL R8 1
+ 0x8C201160, // 039C GETMET R8 R8 K96
+ 0x5C280200, // 039D MOVE R10 R1
+ 0x5C2C0400, // 039E MOVE R11 R2
+ 0x5C300600, // 039F MOVE R12 R3
+ 0x7C200800, // 03A0 CALL R8 4
+ 0x80041000, // 03A1 RET 1 R8
})
)
);
@@ -1064,72 +1139,57 @@ be_local_closure(class_Matter_Plugin_Root_read_attribute, /* name */
/********************************************************************
** Solidified function: write_attribute
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Root;
be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */
be_nested_proto(
11, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(int),
- /* K6 */ be_nested_str_weak(int64),
- /* K7 */ be_nested_str_weak(_breadcrumb),
- /* K8 */ be_nested_str_weak(attribute_updated),
- /* K9 */ be_nested_str_weak(status),
- /* K10 */ be_nested_str_weak(CONSTRAINT_ERROR),
- /* K11 */ be_const_int(1),
- /* K12 */ be_nested_str_weak(INVALID_ACTION),
- }),
+ &be_ktab_class_Matter_Plugin_Root, /* shared constants */
be_str_weak(write_attribute),
&be_const_str_solidified,
( &(const binstruction[100]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
+ 0xB8120200, // 0000 GETNGBL R4 K1
+ 0x88100902, // 0001 GETMBR R4 R4 K2
+ 0x88140503, // 0002 GETMBR R5 R2 K3
+ 0x88180504, // 0003 GETMBR R6 R2 K4
0x541E002F, // 0004 LDINT R7 48
0x1C1C0A07, // 0005 EQ R7 R5 R7
0x781E0019, // 0006 JMPF R7 #0021
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
+ 0x1C1C0D05, // 0007 EQ R7 R6 K5
0x781E0016, // 0008 JMPF R7 #0020
0x601C0004, // 0009 GETGBL R7 G4
0x5C200600, // 000A MOVE R8 R3
0x7C1C0200, // 000B CALL R7 1
- 0x1C1C0F05, // 000C EQ R7 R7 K5
+ 0x1C1C0F61, // 000C EQ R7 R7 K97
0x741E0004, // 000D JMPT R7 #0013
0x601C000F, // 000E GETGBL R7 G15
0x5C200600, // 000F MOVE R8 R3
- 0xB8260C00, // 0010 GETNGBL R9 K6
+ 0xB8265C00, // 0010 GETNGBL R9 K46
0x7C1C0400, // 0011 CALL R7 2
0x781E0007, // 0012 JMPF R7 #001B
- 0x90060E03, // 0013 SETMBR R1 K7 R3
- 0x8C1C0108, // 0014 GETMET R7 R0 K8
- 0x88240502, // 0015 GETMBR R9 R2 K2
- 0x88280503, // 0016 GETMBR R10 R2 K3
+ 0x90061003, // 0013 SETMBR R1 K8 R3
+ 0x8C1C0162, // 0014 GETMET R7 R0 K98
+ 0x88240503, // 0015 GETMBR R9 R2 K3
+ 0x88280504, // 0016 GETMBR R10 R2 K4
0x7C1C0600, // 0017 CALL R7 3
0x501C0200, // 0018 LDBOOL R7 1 0
0x80040E00, // 0019 RET 1 R7
0x70020004, // 001A JMP #0020
- 0xB81E0000, // 001B GETNGBL R7 K0
- 0x881C0F0A, // 001C GETMBR R7 R7 K10
- 0x900A1207, // 001D SETMBR R2 K9 R7
+ 0xB81E0200, // 001B GETNGBL R7 K1
+ 0x881C0F64, // 001C GETMBR R7 R7 K100
+ 0x900AC607, // 001D SETMBR R2 K99 R7
0x501C0000, // 001E LDBOOL R7 0 0
0x80040E00, // 001F RET 1 R7
0x70020041, // 0020 JMP #0063
0x541E001E, // 0021 LDINT R7 31
0x1C1C0A07, // 0022 EQ R7 R5 R7
0x781E0004, // 0023 JMPF R7 #0029
- 0x1C1C0D04, // 0024 EQ R7 R6 K4
+ 0x1C1C0D05, // 0024 EQ R7 R6 K5
0x781E0001, // 0025 JMPF R7 #0028
0x501C0200, // 0026 LDBOOL R7 1 0
0x80040E00, // 0027 RET 1 R7
@@ -1152,7 +1212,7 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */
0x541E0029, // 0038 LDINT R7 42
0x1C1C0A07, // 0039 EQ R7 R5 R7
0x781E0004, // 003A JMPF R7 #0040
- 0x1C1C0D04, // 003B EQ R7 R6 K4
+ 0x1C1C0D05, // 003B EQ R7 R6 K5
0x781E0001, // 003C JMPF R7 #003F
0x501C0200, // 003D LDBOOL R7 1 0
0x80040E00, // 003E RET 1 R7
@@ -1160,23 +1220,23 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */
0x541E002A, // 0040 LDINT R7 43
0x1C1C0A07, // 0041 EQ R7 R5 R7
0x781E0007, // 0042 JMPF R7 #004B
- 0x1C1C0D04, // 0043 EQ R7 R6 K4
+ 0x1C1C0D05, // 0043 EQ R7 R6 K5
0x781E0004, // 0044 JMPF R7 #004A
- 0xB81E0000, // 0045 GETNGBL R7 K0
- 0x881C0F0A, // 0046 GETMBR R7 R7 K10
- 0x900A1207, // 0047 SETMBR R2 K9 R7
+ 0xB81E0200, // 0045 GETNGBL R7 K1
+ 0x881C0F64, // 0046 GETMBR R7 R7 K100
+ 0x900AC607, // 0047 SETMBR R2 K99 R7
0x501C0000, // 0048 LDBOOL R7 0 0
0x80040E00, // 0049 RET 1 R7
0x70020017, // 004A JMP #0063
0x541E002B, // 004B LDINT R7 44
0x1C1C0A07, // 004C EQ R7 R5 R7
0x781E0009, // 004D JMPF R7 #0058
- 0x1C1C0D04, // 004E EQ R7 R6 K4
+ 0x1C1C0D05, // 004E EQ R7 R6 K5
0x781E0002, // 004F JMPF R7 #0053
0x501C0200, // 0050 LDBOOL R7 1 0
0x80040E00, // 0051 RET 1 R7
0x70020003, // 0052 JMP #0057
- 0x1C1C0D0B, // 0053 EQ R7 R6 K11
+ 0x1C1C0D09, // 0053 EQ R7 R6 K9
0x781E0001, // 0054 JMPF R7 #0057
0x501C0200, // 0055 LDBOOL R7 1 0
0x80040E00, // 0056 RET 1 R7
@@ -1187,9 +1247,9 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */
0x541E0003, // 005B LDINT R7 4
0x1C1C0C07, // 005C EQ R7 R6 R7
0x781E0004, // 005D JMPF R7 #0063
- 0xB81E0000, // 005E GETNGBL R7 K0
- 0x881C0F0C, // 005F GETMBR R7 R7 K12
- 0x900A1207, // 0060 SETMBR R2 K9 R7
+ 0xB81E0200, // 005E GETNGBL R7 K1
+ 0x881C0F65, // 005F GETMBR R7 R7 K101
+ 0x900AC607, // 0060 SETMBR R2 K99 R7
0x501C0000, // 0061 LDBOOL R7 0 0
0x80040E00, // 0062 RET 1 R7
0x80000000, // 0063 RET 0
@@ -1199,19 +1259,84 @@ be_local_closure(class_Matter_Plugin_Root_write_attribute, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Root_init, /* name */
+ be_nested_proto(
+ 14, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Root, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[43]) { /* code */
+ 0x60100003, // 0000 GETGBL R4 G3
+ 0x5C140000, // 0001 MOVE R5 R0
+ 0x7C100200, // 0002 CALL R4 1
+ 0x8C100966, // 0003 GETMET R4 R4 K102
+ 0x5C180200, // 0004 MOVE R6 R1
+ 0x5C1C0400, // 0005 MOVE R7 R2
+ 0x5C200600, // 0006 MOVE R8 R3
+ 0x7C100800, // 0007 CALL R4 4
+ 0x8C100167, // 0008 GETMET R4 R0 K103
+ 0x541A0027, // 0009 LDINT R6 40
+ 0x581C0005, // 000A LDCONST R7 K5
+ 0xB8220200, // 000B GETNGBL R8 K1
+ 0x88201168, // 000C GETMBR R8 R8 K104
+ 0xB8260200, // 000D GETNGBL R9 K1
+ 0x88241302, // 000E GETMBR R9 R9 K2
+ 0x8C241369, // 000F GETMET R9 R9 K105
+ 0x7C240200, // 0010 CALL R9 1
+ 0x8C241306, // 0011 GETMET R9 R9 K6
+ 0xB82E0200, // 0012 GETNGBL R11 K1
+ 0x882C1702, // 0013 GETMBR R11 R11 K2
+ 0x882C172A, // 0014 GETMBR R11 R11 K42
+ 0xB8322400, // 0015 GETNGBL R12 K18
+ 0x8C301958, // 0016 GETMET R12 R12 K88
+ 0x7C300200, // 0017 CALL R12 1
+ 0x7C240600, // 0018 CALL R9 3
+ 0x7C100A00, // 0019 CALL R4 5
+ 0x8C100167, // 001A GETMET R4 R0 K103
+ 0x541A0032, // 001B LDINT R6 51
+ 0x581C000F, // 001C LDCONST R7 K15
+ 0xB8220200, // 001D GETNGBL R8 K1
+ 0x88201168, // 001E GETMBR R8 R8 K104
+ 0xB8260200, // 001F GETNGBL R9 K1
+ 0x88241302, // 0020 GETMBR R9 R9 K2
+ 0x8C241369, // 0021 GETMET R9 R9 K105
+ 0x7C240200, // 0022 CALL R9 1
+ 0x8C241306, // 0023 GETMET R9 R9 K6
+ 0xB82E0200, // 0024 GETNGBL R11 K1
+ 0x882C1702, // 0025 GETMBR R11 R11 K2
+ 0x882C170E, // 0026 GETMBR R11 R11 K14
+ 0x58300009, // 0027 LDCONST R12 K9
+ 0x7C240600, // 0028 CALL R9 3
+ 0x7C100A00, // 0029 CALL R4 5
+ 0x80000000, // 002A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: invoke_request
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Root;
be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */
be_nested_proto(
31, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
3, /* nstack */
0, /* argc */
@@ -1222,7 +1347,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */
be_local_const_upval(1, 10),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(device),
@@ -1239,410 +1364,306 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */
0x80000000, // 0005 RET 0
})
),
- &be_class_Matter_Plugin_Root,
}),
1, /* has constants */
- ( &(const bvalue[102]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(TLV),
- /* K3 */ be_nested_str_weak(cluster),
- /* K4 */ be_nested_str_weak(command),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(findsubval),
- /* K7 */ be_const_int(1),
- /* K8 */ be_nested_str_weak(_breadcrumb),
- /* K9 */ be_nested_str_weak(Matter_TLV_struct),
- /* K10 */ be_nested_str_weak(add_TLV),
- /* K11 */ be_nested_str_weak(U1),
- /* K12 */ be_nested_str_weak(UTF1),
- /* K13 */ be_nested_str_weak(),
- /* K14 */ be_const_int(2),
- /* K15 */ be_nested_str_weak(XX),
- /* K16 */ be_const_int(3),
- /* K17 */ be_nested_str_weak(ack_request),
- /* K18 */ be_nested_str_weak(_fabric),
- /* K19 */ be_nested_str_weak(fabric_completed),
- /* K20 */ be_nested_str_weak(set_no_expiration),
- /* K21 */ be_nested_str_weak(save),
- /* K22 */ be_nested_str_weak(device),
- /* K23 */ be_nested_str_weak(start_commissioning_complete_deferred),
- /* K24 */ be_nested_str_weak(context_error),
- /* K25 */ be_nested_str_weak(CommissioningComplete_X3A_X20no_X20fabric_X20attached),
- /* K26 */ be_nested_str_weak(status),
- /* K27 */ be_nested_str_weak(UNSUPPORTED_COMMAND),
- /* K28 */ be_nested_str_weak(B2),
- /* K29 */ be_nested_str_weak(DAC_Cert_FFF1_8000),
- /* K30 */ be_nested_str_weak(PAI_Cert_FFF1),
- /* K31 */ be_nested_str_weak(CD_FFF1_8000),
- /* K32 */ be_nested_str_weak(B1),
- /* K33 */ be_nested_str_weak(U4),
- /* K34 */ be_nested_str_weak(tasmota),
- /* K35 */ be_nested_str_weak(rtc_utc),
- /* K36 */ be_nested_str_weak(tlv2raw),
- /* K37 */ be_nested_str_weak(get_ac),
- /* K38 */ be_nested_str_weak(EC_P256),
- /* K39 */ be_nested_str_weak(ecdsa_sign_sha256),
- /* K40 */ be_nested_str_weak(DAC_Priv_FFF1_8000),
- /* K41 */ be_nested_str_weak(gen_CSR),
- /* K42 */ be_nested_str_weak(set_temp_ca),
- /* K43 */ be_nested_str_weak(SUCCESS),
- /* K44 */ be_nested_str_weak(log),
- /* K45 */ be_nested_str_weak(MTR_X3A_X20AddNoc_X20Args_X3D),
- /* K46 */ be_nested_str_weak(get_temp_ca),
- /* K47 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20AdNOC_X20without_X20CA),
- /* K48 */ be_nested_str_weak(sessions),
- /* K49 */ be_nested_str_weak(create_fabric),
- /* K50 */ be_nested_str_weak(set_ca),
- /* K51 */ be_nested_str_weak(set_noc_icac),
- /* K52 */ be_nested_str_weak(set_ipk_epoch_key),
- /* K53 */ be_nested_str_weak(set_admin_subject_vendor),
- /* K54 */ be_nested_str_weak(set_pk),
- /* K55 */ be_nested_str_weak(get_pk),
- /* K56 */ be_nested_str_weak(parse),
- /* K57 */ be_nested_str_weak(findsub),
- /* K58 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20no_X20fabricid_X20nor_X20deviceid_X20in_X20NOC_X20certificate),
- /* K59 */ be_nested_str_weak(int),
- /* K60 */ be_nested_str_weak(int64),
- /* K61 */ be_nested_str_weak(fromu32),
- /* K62 */ be_nested_str_weak(tobytes),
- /* K63 */ be_nested_str_weak(get_temp_ca_pub),
- /* K64 */ be_const_int(2147483647),
- /* K65 */ be_nested_str_weak(fromstring),
- /* K66 */ be_nested_str_weak(CompressedFabric),
- /* K67 */ be_nested_str_weak(HKDF_SHA256),
- /* K68 */ be_nested_str_weak(copy),
- /* K69 */ be_nested_str_weak(reverse),
- /* K70 */ be_nested_str_weak(derive),
- /* K71 */ be_nested_str_weak(commissioning_admin_fabric),
- /* K72 */ be_nested_str_weak(set_fabric_device),
- /* K73 */ be_nested_str_weak(fabric_candidate),
- /* K74 */ be_nested_str_weak(start_operational_discovery_deferred),
- /* K75 */ be_nested_str_weak(is_PASE),
- /* K76 */ be_nested_str_weak(set_expire_in_seconds),
- /* K77 */ be_nested_str_weak(log_new_fabric),
- /* K78 */ be_nested_str_weak(assign_fabric_index),
- /* K79 */ be_nested_str_weak(get_fabric_index),
- /* K80 */ be_nested_str_weak(set_fabric_label),
- /* K81 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Update_X20fabric_X20_X27_X25s_X27_X20label_X3D_X27_X25s_X27),
- /* K82 */ be_nested_str_weak(get_fabric_id),
- /* K83 */ be_nested_str_weak(tohex),
- /* K84 */ be_nested_str_weak(get_fabric),
- /* K85 */ be_nested_str_weak(fabric_index_X3A),
- /* K86 */ be_nested_str_weak(active_fabrics),
- /* K87 */ be_nested_str_weak(mark_for_deletion),
- /* K88 */ be_nested_str_weak(set_timer),
- /* K89 */ be_nested_str_weak(stop_iteration),
- /* K90 */ be_nested_str_weak(MTR_X3A_X20RemoveFabric_X20fabric_X28),
- /* K91 */ be_nested_str_weak(_X29_X20not_X20found),
- /* K92 */ be_nested_str_weak(INVALID_ACTION),
- /* K93 */ be_nested_str_weak(MTR_X3A_X20OpenCommissioningWindow_X28timeout_X3D_X25i_X2C_X20passcode_X3D_X25s_X2C_X20discriminator_X3D_X25i_X2C_X20iterations_X3D_X25i_X2C_X20salt_X3D_X25s_X29),
- /* K94 */ be_nested_str_weak(INVALID_DATA_TYPE),
- /* K95 */ be_nested_str_weak(MTR_X3A_X20wrong_X20size_X20for_X20PAKE_X20parameters),
- /* K96 */ be_nested_str_weak(CONSTRAINT_ERROR),
- /* K97 */ be_nested_str_weak(start_basic_commissioning),
- /* K98 */ be_nested_str_weak(MTR_X3A_X20OpenBasicCommissioningWindow_X20commissioning_timeout_X3D),
- /* K99 */ be_nested_str_weak(start_root_basic_commissioning),
- /* K100 */ be_nested_str_weak(stop_basic_commissioning),
- /* K101 */ be_nested_str_weak(invoke_request),
- }),
+ &be_ktab_class_Matter_Plugin_Root, /* shared constants */
be_str_weak(invoke_request),
&be_const_str_solidified,
- ( &(const binstruction[745]) { /* code */
- 0xA4120000, // 0000 IMPORT R4 K0
+ ( &(const binstruction[743]) { /* code */
+ 0xA412D400, // 0000 IMPORT R4 K106
0xB8160200, // 0001 GETNGBL R5 K1
0x88140B02, // 0002 GETMBR R5 R5 K2
0x88180703, // 0003 GETMBR R6 R3 K3
- 0x881C0704, // 0004 GETMBR R7 R3 K4
+ 0x881C076B, // 0004 GETMBR R7 R3 K107
0x5422002F, // 0005 LDINT R8 48
0x1C200C08, // 0006 EQ R8 R6 R8
- 0x7822005C, // 0007 JMPF R8 #0065
+ 0x7822005D, // 0007 JMPF R8 #0066
0x1C200F05, // 0008 EQ R8 R7 K5
0x78220017, // 0009 JMPF R8 #0022
- 0x8C200506, // 000A GETMET R8 R2 K6
+ 0x8C200541, // 000A GETMET R8 R2 K65
0x58280005, // 000B LDCONST R10 K5
0x542E0383, // 000C LDINT R11 900
0x7C200600, // 000D CALL R8 3
- 0x8C240506, // 000E GETMET R9 R2 K6
- 0x582C0007, // 000F LDCONST R11 K7
+ 0x8C240541, // 000E GETMET R9 R2 K65
+ 0x582C0009, // 000F LDCONST R11 K9
0x58300005, // 0010 LDCONST R12 K5
0x7C240600, // 0011 CALL R9 3
0x90061009, // 0012 SETMBR R1 K8 R9
- 0x8C280B09, // 0013 GETMET R10 R5 K9
+ 0x8C280B0A, // 0013 GETMET R10 R5 K10
0x7C280200, // 0014 CALL R10 1
- 0x8C2C150A, // 0015 GETMET R11 R10 K10
+ 0x8C2C150B, // 0015 GETMET R11 R10 K11
0x58340005, // 0016 LDCONST R13 K5
- 0x88380B0B, // 0017 GETMBR R14 R5 K11
+ 0x88380B0E, // 0017 GETMBR R14 R5 K14
0x583C0005, // 0018 LDCONST R15 K5
0x7C2C0800, // 0019 CALL R11 4
- 0x8C2C150A, // 001A GETMET R11 R10 K10
- 0x58340007, // 001B LDCONST R13 K7
- 0x88380B0C, // 001C GETMBR R14 R5 K12
- 0x583C000D, // 001D LDCONST R15 K13
+ 0x8C2C150B, // 001A GETMET R11 R10 K11
+ 0x58340009, // 001B LDCONST R13 K9
+ 0x88380B16, // 001C GETMBR R14 R5 K22
+ 0x583C001D, // 001D LDCONST R15 K29
0x7C2C0800, // 001E CALL R11 4
- 0x900E0907, // 001F SETMBR R3 K4 K7
+ 0x900ED709, // 001F SETMBR R3 K107 K9
0x80041400, // 0020 RET 1 R10
- 0x70020041, // 0021 JMP #0064
- 0x1C200F0E, // 0022 EQ R8 R7 K14
+ 0x70020042, // 0021 JMP #0065
+ 0x1C200F0D, // 0022 EQ R8 R7 K13
0x7822001A, // 0023 JMPF R8 #003F
- 0x8C200506, // 0024 GETMET R8 R2 K6
+ 0x8C200541, // 0024 GETMET R8 R2 K65
0x58280005, // 0025 LDCONST R10 K5
0x7C200400, // 0026 CALL R8 2
- 0x8C240506, // 0027 GETMET R9 R2 K6
- 0x582C0007, // 0028 LDCONST R11 K7
- 0x5830000F, // 0029 LDCONST R12 K15
+ 0x8C240541, // 0027 GETMET R9 R2 K65
+ 0x582C0009, // 0028 LDCONST R11 K9
+ 0x58300054, // 0029 LDCONST R12 K84
0x7C240600, // 002A CALL R9 3
- 0x8C280506, // 002B GETMET R10 R2 K6
- 0x5830000E, // 002C LDCONST R12 K14
+ 0x8C280541, // 002B GETMET R10 R2 K65
+ 0x5830000D, // 002C LDCONST R12 K13
0x58340005, // 002D LDCONST R13 K5
0x7C280600, // 002E CALL R10 3
0x9006100A, // 002F SETMBR R1 K8 R10
- 0x8C2C0B09, // 0030 GETMET R11 R5 K9
+ 0x8C2C0B0A, // 0030 GETMET R11 R5 K10
0x7C2C0200, // 0031 CALL R11 1
- 0x8C30170A, // 0032 GETMET R12 R11 K10
+ 0x8C30170B, // 0032 GETMET R12 R11 K11
0x58380005, // 0033 LDCONST R14 K5
- 0x883C0B0B, // 0034 GETMBR R15 R5 K11
+ 0x883C0B0E, // 0034 GETMBR R15 R5 K14
0x58400005, // 0035 LDCONST R16 K5
0x7C300800, // 0036 CALL R12 4
- 0x8C30170A, // 0037 GETMET R12 R11 K10
- 0x58380007, // 0038 LDCONST R14 K7
- 0x883C0B0C, // 0039 GETMBR R15 R5 K12
- 0x5840000D, // 003A LDCONST R16 K13
+ 0x8C30170B, // 0037 GETMET R12 R11 K11
+ 0x58380009, // 0038 LDCONST R14 K9
+ 0x883C0B16, // 0039 GETMBR R15 R5 K22
+ 0x5840001D, // 003A LDCONST R16 K29
0x7C300800, // 003B CALL R12 4
- 0x900E0910, // 003C SETMBR R3 K4 K16
+ 0x900ED70F, // 003C SETMBR R3 K107 K15
0x80041600, // 003D RET 1 R11
- 0x70020024, // 003E JMP #0064
+ 0x70020025, // 003E JMP #0065
0x54220003, // 003F LDINT R8 4
0x1C200E08, // 0040 EQ R8 R7 R8
- 0x78220021, // 0041 JMPF R8 #0064
- 0x8C200111, // 0042 GETMET R8 R0 K17
+ 0x78220022, // 0041 JMPF R8 #0065
+ 0x8C200133, // 0042 GETMET R8 R0 K51
0x5C280600, // 0043 MOVE R10 R3
0x7C200400, // 0044 CALL R8 2
- 0x88200312, // 0045 GETMBR R8 R1 K18
- 0x7822001B, // 0046 JMPF R8 #0063
+ 0x88200349, // 0045 GETMBR R8 R1 K73
+ 0x7822001C, // 0046 JMPF R8 #0064
0x90061105, // 0047 SETMBR R1 K8 K5
- 0x88200312, // 0048 GETMBR R8 R1 K18
- 0x8C201113, // 0049 GETMET R8 R8 K19
+ 0x88200349, // 0048 GETMBR R8 R1 K73
+ 0x8C20116C, // 0049 GETMET R8 R8 K108
0x7C200200, // 004A CALL R8 1
- 0x8C200314, // 004B GETMET R8 R1 K20
+ 0x8C20036D, // 004B GETMET R8 R1 K109
0x7C200200, // 004C CALL R8 1
- 0x8C200315, // 004D GETMET R8 R1 K21
+ 0x8C20036E, // 004D GETMET R8 R1 K110
0x7C200200, // 004E CALL R8 1
- 0x8C200B09, // 004F GETMET R8 R5 K9
+ 0x8C200B0A, // 004F GETMET R8 R5 K10
0x7C200200, // 0050 CALL R8 1
- 0x8C24110A, // 0051 GETMET R9 R8 K10
+ 0x8C24110B, // 0051 GETMET R9 R8 K11
0x582C0005, // 0052 LDCONST R11 K5
- 0x88300B0B, // 0053 GETMBR R12 R5 K11
+ 0x88300B0E, // 0053 GETMBR R12 R5 K14
0x58340005, // 0054 LDCONST R13 K5
0x7C240800, // 0055 CALL R9 4
- 0x8C24110A, // 0056 GETMET R9 R8 K10
- 0x582C0007, // 0057 LDCONST R11 K7
- 0x88300B0C, // 0058 GETMBR R12 R5 K12
- 0x5834000D, // 0059 LDCONST R13 K13
+ 0x8C24110B, // 0056 GETMET R9 R8 K11
+ 0x582C0009, // 0057 LDCONST R11 K9
+ 0x88300B16, // 0058 GETMBR R12 R5 K22
+ 0x5834001D, // 0059 LDCONST R13 K29
0x7C240800, // 005A CALL R9 4
0x54260004, // 005B LDINT R9 5
- 0x900E0809, // 005C SETMBR R3 K4 R9
- 0x88240116, // 005D GETMBR R9 R0 K22
- 0x8C241317, // 005E GETMET R9 R9 K23
- 0x5C2C0200, // 005F MOVE R11 R1
- 0x7C240400, // 0060 CALL R9 2
- 0x80041000, // 0061 RET 1 R8
- 0x70020000, // 0062 JMP #0064
- 0xB0063119, // 0063 RAISE 1 K24 K25
- 0x70020281, // 0064 JMP #02E7
- 0x5422003D, // 0065 LDINT R8 62
- 0x1C200C08, // 0066 EQ R8 R6 R8
- 0x782201E2, // 0067 JMPF R8 #024B
- 0x1C200F0E, // 0068 EQ R8 R7 K14
- 0x7822001D, // 0069 JMPF R8 #0088
- 0x8C200506, // 006A GETMET R8 R2 K6
- 0x58280005, // 006B LDCONST R10 K5
- 0x7C200400, // 006C CALL R8 2
- 0x20241107, // 006D NE R9 R8 K7
- 0x78260006, // 006E JMPF R9 #0076
- 0x2024110E, // 006F NE R9 R8 K14
- 0x78260004, // 0070 JMPF R9 #0076
- 0xB8260200, // 0071 GETNGBL R9 K1
- 0x8824131B, // 0072 GETMBR R9 R9 K27
- 0x900E3409, // 0073 SETMBR R3 K26 R9
- 0x4C240000, // 0074 LDNIL R9
- 0x80041200, // 0075 RET 1 R9
- 0x8C240B09, // 0076 GETMET R9 R5 K9
- 0x7C240200, // 0077 CALL R9 1
- 0x8C28130A, // 0078 GETMET R10 R9 K10
- 0x58300005, // 0079 LDCONST R12 K5
- 0x88340B1C, // 007A GETMBR R13 R5 K28
- 0x1C381107, // 007B EQ R14 R8 K7
- 0x783A0003, // 007C JMPF R14 #0081
- 0xB83A0200, // 007D GETNGBL R14 K1
- 0x8C381D1D, // 007E GETMET R14 R14 K29
- 0x7C380200, // 007F CALL R14 1
- 0x70020002, // 0080 JMP #0084
- 0xB83A0200, // 0081 GETNGBL R14 K1
- 0x8C381D1E, // 0082 GETMET R14 R14 K30
- 0x7C380200, // 0083 CALL R14 1
- 0x7C280800, // 0084 CALL R10 4
- 0x900E0910, // 0085 SETMBR R3 K4 K16
- 0x80041200, // 0086 RET 1 R9
- 0x700201C1, // 0087 JMP #024A
- 0x1C200F05, // 0088 EQ R8 R7 K5
- 0x7822003C, // 0089 JMPF R8 #00C7
- 0x8C200506, // 008A GETMET R8 R2 K6
- 0x58280005, // 008B LDCONST R10 K5
- 0x7C200400, // 008C CALL R8 2
- 0x6024000C, // 008D GETGBL R9 G12
- 0x5C281000, // 008E MOVE R10 R8
- 0x7C240200, // 008F CALL R9 1
- 0x542A001F, // 0090 LDINT R10 32
- 0x2024120A, // 0091 NE R9 R9 R10
- 0x78260001, // 0092 JMPF R9 #0095
- 0x4C240000, // 0093 LDNIL R9
- 0x80041200, // 0094 RET 1 R9
- 0x900E0907, // 0095 SETMBR R3 K4 K7
- 0x8C240B09, // 0096 GETMET R9 R5 K9
- 0x7C240200, // 0097 CALL R9 1
- 0x8C28130A, // 0098 GETMET R10 R9 K10
- 0x58300007, // 0099 LDCONST R12 K7
- 0x88340B1C, // 009A GETMBR R13 R5 K28
- 0xB83A0200, // 009B GETNGBL R14 K1
- 0x8C381D1F, // 009C GETMET R14 R14 K31
- 0x7C380200, // 009D CALL R14 1
- 0x7C280800, // 009E CALL R10 4
- 0x8C28130A, // 009F GETMET R10 R9 K10
- 0x5830000E, // 00A0 LDCONST R12 K14
- 0x88340B20, // 00A1 GETMBR R13 R5 K32
- 0x5C381000, // 00A2 MOVE R14 R8
- 0x7C280800, // 00A3 CALL R10 4
- 0x8C28130A, // 00A4 GETMET R10 R9 K10
- 0x58300010, // 00A5 LDCONST R12 K16
- 0x88340B21, // 00A6 GETMBR R13 R5 K33
- 0xB83A4400, // 00A7 GETNGBL R14 K34
- 0x8C381D23, // 00A8 GETMET R14 R14 K35
- 0x7C380200, // 00A9 CALL R14 1
- 0x7C280800, // 00AA CALL R10 4
- 0x8C281324, // 00AB GETMET R10 R9 K36
- 0x7C280200, // 00AC CALL R10 1
- 0x8C2C0325, // 00AD GETMET R11 R1 K37
- 0x7C2C0200, // 00AE CALL R11 1
- 0x0030140B, // 00AF ADD R12 R10 R11
- 0x8C340926, // 00B0 GETMET R13 R4 K38
- 0x7C340200, // 00B1 CALL R13 1
- 0x8C341B27, // 00B2 GETMET R13 R13 K39
- 0xB83E0200, // 00B3 GETNGBL R15 K1
- 0x8C3C1F28, // 00B4 GETMET R15 R15 K40
- 0x7C3C0200, // 00B5 CALL R15 1
- 0x5C401800, // 00B6 MOVE R16 R12
- 0x7C340600, // 00B7 CALL R13 3
- 0x8C380B09, // 00B8 GETMET R14 R5 K9
- 0x7C380200, // 00B9 CALL R14 1
- 0x8C3C1D0A, // 00BA GETMET R15 R14 K10
- 0x58440005, // 00BB LDCONST R17 K5
- 0x88480B1C, // 00BC GETMBR R18 R5 K28
- 0x5C4C1400, // 00BD MOVE R19 R10
- 0x7C3C0800, // 00BE CALL R15 4
- 0x8C3C1D0A, // 00BF GETMET R15 R14 K10
- 0x58440007, // 00C0 LDCONST R17 K7
- 0x88480B20, // 00C1 GETMBR R18 R5 K32
- 0x5C4C1A00, // 00C2 MOVE R19 R13
- 0x7C3C0800, // 00C3 CALL R15 4
- 0x900E0907, // 00C4 SETMBR R3 K4 K7
- 0x80041C00, // 00C5 RET 1 R14
- 0x70020182, // 00C6 JMP #024A
- 0x54220003, // 00C7 LDINT R8 4
- 0x1C200E08, // 00C8 EQ R8 R7 R8
- 0x7822003C, // 00C9 JMPF R8 #0107
- 0x8C200111, // 00CA GETMET R8 R0 K17
- 0x5C280600, // 00CB MOVE R10 R3
- 0x7C200400, // 00CC CALL R8 2
- 0x8C200506, // 00CD GETMET R8 R2 K6
- 0x58280005, // 00CE LDCONST R10 K5
- 0x7C200400, // 00CF CALL R8 2
- 0x6024000C, // 00D0 GETGBL R9 G12
- 0x5C281000, // 00D1 MOVE R10 R8
- 0x7C240200, // 00D2 CALL R9 1
- 0x542A001F, // 00D3 LDINT R10 32
- 0x2024120A, // 00D4 NE R9 R9 R10
- 0x78260001, // 00D5 JMPF R9 #00D8
- 0x4C240000, // 00D6 LDNIL R9
- 0x80041200, // 00D7 RET 1 R9
- 0x8C240506, // 00D8 GETMET R9 R2 K6
- 0x582C0007, // 00D9 LDCONST R11 K7
- 0x50300000, // 00DA LDBOOL R12 0 0
- 0x7C240600, // 00DB CALL R9 3
- 0x8C280329, // 00DC GETMET R10 R1 K41
- 0x7C280200, // 00DD CALL R10 1
- 0x8C2C0B09, // 00DE GETMET R11 R5 K9
- 0x7C2C0200, // 00DF CALL R11 1
- 0x8C30170A, // 00E0 GETMET R12 R11 K10
- 0x58380007, // 00E1 LDCONST R14 K7
- 0x883C0B1C, // 00E2 GETMBR R15 R5 K28
- 0x5C401400, // 00E3 MOVE R16 R10
- 0x7C300800, // 00E4 CALL R12 4
- 0x8C30170A, // 00E5 GETMET R12 R11 K10
- 0x5838000E, // 00E6 LDCONST R14 K14
- 0x883C0B20, // 00E7 GETMBR R15 R5 K32
- 0x5C401000, // 00E8 MOVE R16 R8
- 0x7C300800, // 00E9 CALL R12 4
- 0x8C301724, // 00EA GETMET R12 R11 K36
- 0x7C300200, // 00EB CALL R12 1
- 0x8C340325, // 00EC GETMET R13 R1 K37
- 0x7C340200, // 00ED CALL R13 1
- 0x0034180D, // 00EE ADD R13 R12 R13
- 0x8C380926, // 00EF GETMET R14 R4 K38
- 0x7C380200, // 00F0 CALL R14 1
- 0x8C381D27, // 00F1 GETMET R14 R14 K39
- 0xB8420200, // 00F2 GETNGBL R16 K1
- 0x8C402128, // 00F3 GETMET R16 R16 K40
- 0x7C400200, // 00F4 CALL R16 1
- 0x5C441A00, // 00F5 MOVE R17 R13
- 0x7C380600, // 00F6 CALL R14 3
- 0x8C3C0B09, // 00F7 GETMET R15 R5 K9
- 0x7C3C0200, // 00F8 CALL R15 1
- 0x8C401F0A, // 00F9 GETMET R16 R15 K10
- 0x58480005, // 00FA LDCONST R18 K5
- 0x884C0B1C, // 00FB GETMBR R19 R5 K28
- 0x5C501800, // 00FC MOVE R20 R12
- 0x7C400800, // 00FD CALL R16 4
- 0x8C401F0A, // 00FE GETMET R16 R15 K10
- 0x58480007, // 00FF LDCONST R18 K7
- 0x884C0B20, // 0100 GETMBR R19 R5 K32
- 0x5C501C00, // 0101 MOVE R20 R14
- 0x7C400800, // 0102 CALL R16 4
- 0x54420004, // 0103 LDINT R16 5
- 0x900E0810, // 0104 SETMBR R3 K4 R16
- 0x80041E00, // 0105 RET 1 R15
- 0x70020142, // 0106 JMP #024A
- 0x5422000A, // 0107 LDINT R8 11
- 0x1C200E08, // 0108 EQ R8 R7 R8
- 0x7822000B, // 0109 JMPF R8 #0116
- 0x8C200506, // 010A GETMET R8 R2 K6
- 0x58280005, // 010B LDCONST R10 K5
- 0x7C200400, // 010C CALL R8 2
- 0x8C24032A, // 010D GETMET R9 R1 K42
- 0x5C2C1000, // 010E MOVE R11 R8
- 0x7C240400, // 010F CALL R9 2
- 0xB8260200, // 0110 GETNGBL R9 K1
- 0x8824132B, // 0111 GETMBR R9 R9 K43
- 0x900E3409, // 0112 SETMBR R3 K26 R9
- 0x4C240000, // 0113 LDNIL R9
- 0x80041200, // 0114 RET 1 R9
- 0x70020133, // 0115 JMP #024A
- 0x54220005, // 0116 LDINT R8 6
- 0x1C200E08, // 0117 EQ R8 R7 R8
- 0x782200BB, // 0118 JMPF R8 #01D5
- 0xB8224400, // 0119 GETNGBL R8 K34
- 0x8C20112C, // 011A GETMET R8 R8 K44
- 0x60280008, // 011B GETGBL R10 G8
- 0x5C2C0400, // 011C MOVE R11 R2
- 0x7C280200, // 011D CALL R10 1
- 0x002A5A0A, // 011E ADD R10 K45 R10
- 0x542E0003, // 011F LDINT R11 4
- 0x7C200600, // 0120 CALL R8 3
- 0x8C200506, // 0121 GETMET R8 R2 K6
+ 0x900ED609, // 005C SETMBR R3 K107 R9
+ 0x88240136, // 005D GETMBR R9 R0 K54
+ 0x8824134A, // 005E GETMBR R9 R9 K74
+ 0x8C24136F, // 005F GETMET R9 R9 K111
+ 0x5C2C0200, // 0060 MOVE R11 R1
+ 0x7C240400, // 0061 CALL R9 2
+ 0x80041000, // 0062 RET 1 R8
+ 0x70020000, // 0063 JMP #0065
+ 0xB006E171, // 0064 RAISE 1 K112 K113
+ 0x7002027E, // 0065 JMP #02E5
+ 0x5422003D, // 0066 LDINT R8 62
+ 0x1C200C08, // 0067 EQ R8 R6 R8
+ 0x782201DF, // 0068 JMPF R8 #0249
+ 0x1C200F0D, // 0069 EQ R8 R7 K13
+ 0x7822001D, // 006A JMPF R8 #0089
+ 0x8C200541, // 006B GETMET R8 R2 K65
+ 0x58280005, // 006C LDCONST R10 K5
+ 0x7C200400, // 006D CALL R8 2
+ 0x20241109, // 006E NE R9 R8 K9
+ 0x78260006, // 006F JMPF R9 #0077
+ 0x2024110D, // 0070 NE R9 R8 K13
+ 0x78260004, // 0071 JMPF R9 #0077
+ 0xB8260200, // 0072 GETNGBL R9 K1
+ 0x88241372, // 0073 GETMBR R9 R9 K114
+ 0x900EC609, // 0074 SETMBR R3 K99 R9
+ 0x4C240000, // 0075 LDNIL R9
+ 0x80041200, // 0076 RET 1 R9
+ 0x8C240B0A, // 0077 GETMET R9 R5 K10
+ 0x7C240200, // 0078 CALL R9 1
+ 0x8C28130B, // 0079 GETMET R10 R9 K11
+ 0x58300005, // 007A LDCONST R12 K5
+ 0x88340B3A, // 007B GETMBR R13 R5 K58
+ 0x1C381109, // 007C EQ R14 R8 K9
+ 0x783A0003, // 007D JMPF R14 #0082
+ 0xB83A0200, // 007E GETNGBL R14 K1
+ 0x8C381D73, // 007F GETMET R14 R14 K115
+ 0x7C380200, // 0080 CALL R14 1
+ 0x70020002, // 0081 JMP #0085
+ 0xB83A0200, // 0082 GETNGBL R14 K1
+ 0x8C381D74, // 0083 GETMET R14 R14 K116
+ 0x7C380200, // 0084 CALL R14 1
+ 0x7C280800, // 0085 CALL R10 4
+ 0x900ED70F, // 0086 SETMBR R3 K107 K15
+ 0x80041200, // 0087 RET 1 R9
+ 0x700201BE, // 0088 JMP #0248
+ 0x1C200F05, // 0089 EQ R8 R7 K5
+ 0x7822003C, // 008A JMPF R8 #00C8
+ 0x8C200541, // 008B GETMET R8 R2 K65
+ 0x58280005, // 008C LDCONST R10 K5
+ 0x7C200400, // 008D CALL R8 2
+ 0x6024000C, // 008E GETGBL R9 G12
+ 0x5C281000, // 008F MOVE R10 R8
+ 0x7C240200, // 0090 CALL R9 1
+ 0x542A001F, // 0091 LDINT R10 32
+ 0x2024120A, // 0092 NE R9 R9 R10
+ 0x78260001, // 0093 JMPF R9 #0096
+ 0x4C240000, // 0094 LDNIL R9
+ 0x80041200, // 0095 RET 1 R9
+ 0x900ED709, // 0096 SETMBR R3 K107 K9
+ 0x8C240B0A, // 0097 GETMET R9 R5 K10
+ 0x7C240200, // 0098 CALL R9 1
+ 0x8C28130B, // 0099 GETMET R10 R9 K11
+ 0x58300009, // 009A LDCONST R12 K9
+ 0x88340B3A, // 009B GETMBR R13 R5 K58
+ 0xB83A0200, // 009C GETNGBL R14 K1
+ 0x8C381D75, // 009D GETMET R14 R14 K117
+ 0x7C380200, // 009E CALL R14 1
+ 0x7C280800, // 009F CALL R10 4
+ 0x8C28130B, // 00A0 GETMET R10 R9 K11
+ 0x5830000D, // 00A1 LDCONST R12 K13
+ 0x88340B1F, // 00A2 GETMBR R13 R5 K31
+ 0x5C381000, // 00A3 MOVE R14 R8
+ 0x7C280800, // 00A4 CALL R10 4
+ 0x8C28130B, // 00A5 GETMET R10 R9 K11
+ 0x5830000F, // 00A6 LDCONST R12 K15
+ 0x88340B2A, // 00A7 GETMBR R13 R5 K42
+ 0xB83A2400, // 00A8 GETNGBL R14 K18
+ 0x8C381D2F, // 00A9 GETMET R14 R14 K47
+ 0x7C380200, // 00AA CALL R14 1
+ 0x7C280800, // 00AB CALL R10 4
+ 0x8C281376, // 00AC GETMET R10 R9 K118
+ 0x7C280200, // 00AD CALL R10 1
+ 0x8C2C0377, // 00AE GETMET R11 R1 K119
+ 0x7C2C0200, // 00AF CALL R11 1
+ 0x0030140B, // 00B0 ADD R12 R10 R11
+ 0x8C340978, // 00B1 GETMET R13 R4 K120
+ 0x7C340200, // 00B2 CALL R13 1
+ 0x8C341B79, // 00B3 GETMET R13 R13 K121
+ 0xB83E0200, // 00B4 GETNGBL R15 K1
+ 0x8C3C1F7A, // 00B5 GETMET R15 R15 K122
+ 0x7C3C0200, // 00B6 CALL R15 1
+ 0x5C401800, // 00B7 MOVE R16 R12
+ 0x7C340600, // 00B8 CALL R13 3
+ 0x8C380B0A, // 00B9 GETMET R14 R5 K10
+ 0x7C380200, // 00BA CALL R14 1
+ 0x8C3C1D0B, // 00BB GETMET R15 R14 K11
+ 0x58440005, // 00BC LDCONST R17 K5
+ 0x88480B3A, // 00BD GETMBR R18 R5 K58
+ 0x5C4C1400, // 00BE MOVE R19 R10
+ 0x7C3C0800, // 00BF CALL R15 4
+ 0x8C3C1D0B, // 00C0 GETMET R15 R14 K11
+ 0x58440009, // 00C1 LDCONST R17 K9
+ 0x88480B1F, // 00C2 GETMBR R18 R5 K31
+ 0x5C4C1A00, // 00C3 MOVE R19 R13
+ 0x7C3C0800, // 00C4 CALL R15 4
+ 0x900ED709, // 00C5 SETMBR R3 K107 K9
+ 0x80041C00, // 00C6 RET 1 R14
+ 0x7002017F, // 00C7 JMP #0248
+ 0x54220003, // 00C8 LDINT R8 4
+ 0x1C200E08, // 00C9 EQ R8 R7 R8
+ 0x7822003C, // 00CA JMPF R8 #0108
+ 0x8C200133, // 00CB GETMET R8 R0 K51
+ 0x5C280600, // 00CC MOVE R10 R3
+ 0x7C200400, // 00CD CALL R8 2
+ 0x8C200541, // 00CE GETMET R8 R2 K65
+ 0x58280005, // 00CF LDCONST R10 K5
+ 0x7C200400, // 00D0 CALL R8 2
+ 0x6024000C, // 00D1 GETGBL R9 G12
+ 0x5C281000, // 00D2 MOVE R10 R8
+ 0x7C240200, // 00D3 CALL R9 1
+ 0x542A001F, // 00D4 LDINT R10 32
+ 0x2024120A, // 00D5 NE R9 R9 R10
+ 0x78260001, // 00D6 JMPF R9 #00D9
+ 0x4C240000, // 00D7 LDNIL R9
+ 0x80041200, // 00D8 RET 1 R9
+ 0x8C240541, // 00D9 GETMET R9 R2 K65
+ 0x582C0009, // 00DA LDCONST R11 K9
+ 0x50300000, // 00DB LDBOOL R12 0 0
+ 0x7C240600, // 00DC CALL R9 3
+ 0x8C28037B, // 00DD GETMET R10 R1 K123
+ 0x7C280200, // 00DE CALL R10 1
+ 0x8C2C0B0A, // 00DF GETMET R11 R5 K10
+ 0x7C2C0200, // 00E0 CALL R11 1
+ 0x8C30170B, // 00E1 GETMET R12 R11 K11
+ 0x58380009, // 00E2 LDCONST R14 K9
+ 0x883C0B3A, // 00E3 GETMBR R15 R5 K58
+ 0x5C401400, // 00E4 MOVE R16 R10
+ 0x7C300800, // 00E5 CALL R12 4
+ 0x8C30170B, // 00E6 GETMET R12 R11 K11
+ 0x5838000D, // 00E7 LDCONST R14 K13
+ 0x883C0B1F, // 00E8 GETMBR R15 R5 K31
+ 0x5C401000, // 00E9 MOVE R16 R8
+ 0x7C300800, // 00EA CALL R12 4
+ 0x8C301776, // 00EB GETMET R12 R11 K118
+ 0x7C300200, // 00EC CALL R12 1
+ 0x8C340377, // 00ED GETMET R13 R1 K119
+ 0x7C340200, // 00EE CALL R13 1
+ 0x0034180D, // 00EF ADD R13 R12 R13
+ 0x8C380978, // 00F0 GETMET R14 R4 K120
+ 0x7C380200, // 00F1 CALL R14 1
+ 0x8C381D79, // 00F2 GETMET R14 R14 K121
+ 0xB8420200, // 00F3 GETNGBL R16 K1
+ 0x8C40217A, // 00F4 GETMET R16 R16 K122
+ 0x7C400200, // 00F5 CALL R16 1
+ 0x5C441A00, // 00F6 MOVE R17 R13
+ 0x7C380600, // 00F7 CALL R14 3
+ 0x8C3C0B0A, // 00F8 GETMET R15 R5 K10
+ 0x7C3C0200, // 00F9 CALL R15 1
+ 0x8C401F0B, // 00FA GETMET R16 R15 K11
+ 0x58480005, // 00FB LDCONST R18 K5
+ 0x884C0B3A, // 00FC GETMBR R19 R5 K58
+ 0x5C501800, // 00FD MOVE R20 R12
+ 0x7C400800, // 00FE CALL R16 4
+ 0x8C401F0B, // 00FF GETMET R16 R15 K11
+ 0x58480009, // 0100 LDCONST R18 K9
+ 0x884C0B1F, // 0101 GETMBR R19 R5 K31
+ 0x5C501C00, // 0102 MOVE R20 R14
+ 0x7C400800, // 0103 CALL R16 4
+ 0x54420004, // 0104 LDINT R16 5
+ 0x900ED610, // 0105 SETMBR R3 K107 R16
+ 0x80041E00, // 0106 RET 1 R15
+ 0x7002013F, // 0107 JMP #0248
+ 0x5422000A, // 0108 LDINT R8 11
+ 0x1C200E08, // 0109 EQ R8 R7 R8
+ 0x7822000B, // 010A JMPF R8 #0117
+ 0x8C200541, // 010B GETMET R8 R2 K65
+ 0x58280005, // 010C LDCONST R10 K5
+ 0x7C200400, // 010D CALL R8 2
+ 0x8C24037C, // 010E GETMET R9 R1 K124
+ 0x5C2C1000, // 010F MOVE R11 R8
+ 0x7C240400, // 0110 CALL R9 2
+ 0xB8260200, // 0111 GETNGBL R9 K1
+ 0x8824137D, // 0112 GETMBR R9 R9 K125
+ 0x900EC609, // 0113 SETMBR R3 K99 R9
+ 0x4C240000, // 0114 LDNIL R9
+ 0x80041200, // 0115 RET 1 R9
+ 0x70020130, // 0116 JMP #0248
+ 0x54220005, // 0117 LDINT R8 6
+ 0x1C200E08, // 0118 EQ R8 R7 R8
+ 0x782200BA, // 0119 JMPF R8 #01D5
+ 0xB822FC00, // 011A GETNGBL R8 K126
+ 0x60240008, // 011B GETGBL R9 G8
+ 0x5C280400, // 011C MOVE R10 R2
+ 0x7C240200, // 011D CALL R9 1
+ 0x0026FE09, // 011E ADD R9 K127 R9
+ 0x542A0003, // 011F LDINT R10 4
+ 0x7C200400, // 0120 CALL R8 2
+ 0x8C200541, // 0121 GETMET R8 R2 K65
0x58280005, // 0122 LDCONST R10 K5
0x7C200400, // 0123 CALL R8 2
- 0x8C240506, // 0124 GETMET R9 R2 K6
- 0x582C0007, // 0125 LDCONST R11 K7
+ 0x8C240541, // 0124 GETMET R9 R2 K65
+ 0x582C0009, // 0125 LDCONST R11 K9
0x7C240400, // 0126 CALL R9 2
0x6028000C, // 0127 GETGBL R10 G12
0x5C2C1200, // 0128 MOVE R11 R9
@@ -1650,450 +1671,448 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */
0x1C281505, // 012A EQ R10 R10 K5
0x782A0000, // 012B JMPF R10 #012D
0x4C240000, // 012C LDNIL R9
- 0x8C280506, // 012D GETMET R10 R2 K6
- 0x5830000E, // 012E LDCONST R12 K14
+ 0x8C280541, // 012D GETMET R10 R2 K65
+ 0x5830000D, // 012E LDCONST R12 K13
0x7C280400, // 012F CALL R10 2
- 0x8C2C0506, // 0130 GETMET R11 R2 K6
- 0x58340010, // 0131 LDCONST R13 K16
+ 0x8C2C0541, // 0130 GETMET R11 R2 K65
+ 0x5834000F, // 0131 LDCONST R13 K15
0x7C2C0400, // 0132 CALL R11 2
- 0x8C300506, // 0133 GETMET R12 R2 K6
+ 0x8C300541, // 0133 GETMET R12 R2 K65
0x543A0003, // 0134 LDINT R14 4
0x7C300400, // 0135 CALL R12 2
- 0x8C34032E, // 0136 GETMET R13 R1 K46
+ 0x8C340380, // 0136 GETMET R13 R1 K128
0x7C340200, // 0137 CALL R13 1
0x4C380000, // 0138 LDNIL R14
0x1C341A0E, // 0139 EQ R13 R13 R14
- 0x78360006, // 013A JMPF R13 #0142
- 0xB8364400, // 013B GETNGBL R13 K34
- 0x8C341B2C, // 013C GETMET R13 R13 K44
- 0x583C002F, // 013D LDCONST R15 K47
- 0x5840000E, // 013E LDCONST R16 K14
- 0x7C340600, // 013F CALL R13 3
- 0x4C340000, // 0140 LDNIL R13
- 0x80041A00, // 0141 RET 1 R13
- 0x88340116, // 0142 GETMBR R13 R0 K22
- 0x88341B30, // 0143 GETMBR R13 R13 K48
- 0x8C341B31, // 0144 GETMET R13 R13 K49
- 0x7C340200, // 0145 CALL R13 1
- 0x8C381B32, // 0146 GETMET R14 R13 K50
- 0x8C40032E, // 0147 GETMET R16 R1 K46
- 0x7C400200, // 0148 CALL R16 1
- 0x7C380400, // 0149 CALL R14 2
- 0x8C381B33, // 014A GETMET R14 R13 K51
- 0x5C401000, // 014B MOVE R16 R8
- 0x5C441200, // 014C MOVE R17 R9
- 0x7C380600, // 014D CALL R14 3
- 0x8C381B34, // 014E GETMET R14 R13 K52
- 0x5C401400, // 014F MOVE R16 R10
- 0x7C380400, // 0150 CALL R14 2
- 0x8C381B35, // 0151 GETMET R14 R13 K53
- 0x5C401600, // 0152 MOVE R16 R11
- 0x5C441800, // 0153 MOVE R17 R12
- 0x7C380600, // 0154 CALL R14 3
- 0x8C381B36, // 0155 GETMET R14 R13 K54
- 0x8C400337, // 0156 GETMET R16 R1 K55
- 0x7C400200, // 0157 CALL R16 1
- 0x7C380400, // 0158 CALL R14 2
- 0xB83A0200, // 0159 GETNGBL R14 K1
- 0x88381D02, // 015A GETMBR R14 R14 K2
- 0x8C381D38, // 015B GETMET R14 R14 K56
- 0x5C401000, // 015C MOVE R16 R8
- 0x7C380400, // 015D CALL R14 2
- 0x8C3C1D39, // 015E GETMET R15 R14 K57
- 0x54460005, // 015F LDINT R17 6
- 0x7C3C0400, // 0160 CALL R15 2
- 0x8C401F06, // 0161 GETMET R16 R15 K6
- 0x544A0014, // 0162 LDINT R18 21
- 0x7C400400, // 0163 CALL R16 2
- 0x8C441F06, // 0164 GETMET R17 R15 K6
- 0x544E0010, // 0165 LDINT R19 17
- 0x7C440400, // 0166 CALL R17 2
- 0x5C482000, // 0167 MOVE R18 R16
- 0x784A0001, // 0168 JMPF R18 #016B
- 0x5C482200, // 0169 MOVE R18 R17
- 0x744A0006, // 016A JMPT R18 #0172
- 0xB84A4400, // 016B GETNGBL R18 K34
- 0x8C48252C, // 016C GETMET R18 R18 K44
- 0x5850003A, // 016D LDCONST R20 K58
- 0x5854000E, // 016E LDCONST R21 K14
- 0x7C480600, // 016F CALL R18 3
- 0x50480000, // 0170 LDBOOL R18 0 0
- 0x80042400, // 0171 RET 1 R18
- 0x60480004, // 0172 GETGBL R18 G4
- 0x5C4C2000, // 0173 MOVE R19 R16
- 0x7C480200, // 0174 CALL R18 1
- 0x1C48253B, // 0175 EQ R18 R18 K59
- 0x784A0007, // 0176 JMPF R18 #017F
- 0xB84A7800, // 0177 GETNGBL R18 K60
- 0x8C48253D, // 0178 GETMET R18 R18 K61
- 0x5C502000, // 0179 MOVE R20 R16
- 0x7C480400, // 017A CALL R18 2
- 0x8C48253E, // 017B GETMET R18 R18 K62
- 0x7C480200, // 017C CALL R18 1
- 0x5C402400, // 017D MOVE R16 R18
- 0x70020002, // 017E JMP #0182
- 0x8C48213E, // 017F GETMET R18 R16 K62
- 0x7C480200, // 0180 CALL R18 1
- 0x5C402400, // 0181 MOVE R16 R18
- 0x60480004, // 0182 GETGBL R18 G4
- 0x5C4C2200, // 0183 MOVE R19 R17
- 0x7C480200, // 0184 CALL R18 1
- 0x1C48253B, // 0185 EQ R18 R18 K59
- 0x784A0007, // 0186 JMPF R18 #018F
- 0xB84A7800, // 0187 GETNGBL R18 K60
- 0x8C48253D, // 0188 GETMET R18 R18 K61
- 0x5C502200, // 0189 MOVE R20 R17
- 0x7C480400, // 018A CALL R18 2
- 0x8C48253E, // 018B GETMET R18 R18 K62
- 0x7C480200, // 018C CALL R18 1
- 0x5C442400, // 018D MOVE R17 R18
- 0x70020002, // 018E JMP #0192
- 0x8C48233E, // 018F GETMET R18 R17 K62
- 0x7C480200, // 0190 CALL R18 1
- 0x5C442400, // 0191 MOVE R17 R18
- 0x8C48033F, // 0192 GETMET R18 R1 K63
- 0x7C480200, // 0193 CALL R18 1
- 0x404E0F40, // 0194 CONNECT R19 K7 K64
- 0x94482413, // 0195 GETIDX R18 R18 R19
- 0x604C0015, // 0196 GETGBL R19 G21
- 0x7C4C0000, // 0197 CALL R19 0
- 0x8C4C2741, // 0198 GETMET R19 R19 K65
- 0x58540042, // 0199 LDCONST R21 K66
- 0x7C4C0400, // 019A CALL R19 2
- 0x8C500943, // 019B GETMET R20 R4 K67
- 0x7C500200, // 019C CALL R20 1
- 0x8C542144, // 019D GETMET R21 R16 K68
+ 0x78360005, // 013A JMPF R13 #0141
+ 0xB836FC00, // 013B GETNGBL R13 K126
+ 0x58380081, // 013C LDCONST R14 K129
+ 0x583C000D, // 013D LDCONST R15 K13
+ 0x7C340400, // 013E CALL R13 2
+ 0x4C340000, // 013F LDNIL R13
+ 0x80041A00, // 0140 RET 1 R13
+ 0x88340136, // 0141 GETMBR R13 R0 K54
+ 0x88341B37, // 0142 GETMBR R13 R13 K55
+ 0x8C341B82, // 0143 GETMET R13 R13 K130
+ 0x7C340200, // 0144 CALL R13 1
+ 0x8C381B83, // 0145 GETMET R14 R13 K131
+ 0x8C400380, // 0146 GETMET R16 R1 K128
+ 0x7C400200, // 0147 CALL R16 1
+ 0x7C380400, // 0148 CALL R14 2
+ 0x8C381B84, // 0149 GETMET R14 R13 K132
+ 0x5C401000, // 014A MOVE R16 R8
+ 0x5C441200, // 014B MOVE R17 R9
+ 0x7C380600, // 014C CALL R14 3
+ 0x8C381B85, // 014D GETMET R14 R13 K133
+ 0x5C401400, // 014E MOVE R16 R10
+ 0x7C380400, // 014F CALL R14 2
+ 0x8C381B86, // 0150 GETMET R14 R13 K134
+ 0x5C401600, // 0151 MOVE R16 R11
+ 0x5C441800, // 0152 MOVE R17 R12
+ 0x7C380600, // 0153 CALL R14 3
+ 0x8C381B87, // 0154 GETMET R14 R13 K135
+ 0x8C400388, // 0155 GETMET R16 R1 K136
+ 0x7C400200, // 0156 CALL R16 1
+ 0x7C380400, // 0157 CALL R14 2
+ 0xB83A0200, // 0158 GETNGBL R14 K1
+ 0x88381D02, // 0159 GETMBR R14 R14 K2
+ 0x8C381D3F, // 015A GETMET R14 R14 K63
+ 0x5C401000, // 015B MOVE R16 R8
+ 0x7C380400, // 015C CALL R14 2
+ 0x8C3C1D89, // 015D GETMET R15 R14 K137
+ 0x54460005, // 015E LDINT R17 6
+ 0x7C3C0400, // 015F CALL R15 2
+ 0x8C401F41, // 0160 GETMET R16 R15 K65
+ 0x544A0014, // 0161 LDINT R18 21
+ 0x7C400400, // 0162 CALL R16 2
+ 0x8C441F41, // 0163 GETMET R17 R15 K65
+ 0x544E0010, // 0164 LDINT R19 17
+ 0x7C440400, // 0165 CALL R17 2
+ 0x5C482000, // 0166 MOVE R18 R16
+ 0x784A0001, // 0167 JMPF R18 #016A
+ 0x5C482200, // 0168 MOVE R18 R17
+ 0x744A0005, // 0169 JMPT R18 #0170
+ 0xB84AFC00, // 016A GETNGBL R18 K126
+ 0x584C008A, // 016B LDCONST R19 K138
+ 0x5850000D, // 016C LDCONST R20 K13
+ 0x7C480400, // 016D CALL R18 2
+ 0x50480000, // 016E LDBOOL R18 0 0
+ 0x80042400, // 016F RET 1 R18
+ 0x60480004, // 0170 GETGBL R18 G4
+ 0x5C4C2000, // 0171 MOVE R19 R16
+ 0x7C480200, // 0172 CALL R18 1
+ 0x1C482561, // 0173 EQ R18 R18 K97
+ 0x784A0007, // 0174 JMPF R18 #017D
+ 0xB84A5C00, // 0175 GETNGBL R18 K46
+ 0x8C48258B, // 0176 GETMET R18 R18 K139
+ 0x5C502000, // 0177 MOVE R20 R16
+ 0x7C480400, // 0178 CALL R18 2
+ 0x8C48258C, // 0179 GETMET R18 R18 K140
+ 0x7C480200, // 017A CALL R18 1
+ 0x5C402400, // 017B MOVE R16 R18
+ 0x70020002, // 017C JMP #0180
+ 0x8C48218C, // 017D GETMET R18 R16 K140
+ 0x7C480200, // 017E CALL R18 1
+ 0x5C402400, // 017F MOVE R16 R18
+ 0x60480004, // 0180 GETGBL R18 G4
+ 0x5C4C2200, // 0181 MOVE R19 R17
+ 0x7C480200, // 0182 CALL R18 1
+ 0x1C482561, // 0183 EQ R18 R18 K97
+ 0x784A0007, // 0184 JMPF R18 #018D
+ 0xB84A5C00, // 0185 GETNGBL R18 K46
+ 0x8C48258B, // 0186 GETMET R18 R18 K139
+ 0x5C502200, // 0187 MOVE R20 R17
+ 0x7C480400, // 0188 CALL R18 2
+ 0x8C48258C, // 0189 GETMET R18 R18 K140
+ 0x7C480200, // 018A CALL R18 1
+ 0x5C442400, // 018B MOVE R17 R18
+ 0x70020002, // 018C JMP #0190
+ 0x8C48238C, // 018D GETMET R18 R17 K140
+ 0x7C480200, // 018E CALL R18 1
+ 0x5C442400, // 018F MOVE R17 R18
+ 0x8C48038D, // 0190 GETMET R18 R1 K141
+ 0x7C480200, // 0191 CALL R18 1
+ 0x404E138E, // 0192 CONNECT R19 K9 K142
+ 0x94482413, // 0193 GETIDX R18 R18 R19
+ 0x604C0015, // 0194 GETGBL R19 G21
+ 0x7C4C0000, // 0195 CALL R19 0
+ 0x8C4C278F, // 0196 GETMET R19 R19 K143
+ 0x58540090, // 0197 LDCONST R21 K144
+ 0x7C4C0400, // 0198 CALL R19 2
+ 0x8C500991, // 0199 GETMET R20 R4 K145
+ 0x7C500200, // 019A CALL R20 1
+ 0x8C542192, // 019B GETMET R21 R16 K146
+ 0x7C540200, // 019C CALL R21 1
+ 0x8C542B93, // 019D GETMET R21 R21 K147
0x7C540200, // 019E CALL R21 1
- 0x8C542B45, // 019F GETMET R21 R21 K69
- 0x7C540200, // 01A0 CALL R21 1
- 0x8C582946, // 01A1 GETMET R22 R20 K70
- 0x5C602400, // 01A2 MOVE R24 R18
- 0x5C642A00, // 01A3 MOVE R25 R21
- 0x5C682600, // 01A4 MOVE R26 R19
- 0x546E0007, // 01A5 LDINT R27 8
- 0x7C580A00, // 01A6 CALL R22 5
- 0x885C0312, // 01A7 GETMBR R23 R1 K18
- 0x785E0001, // 01A8 JMPF R23 #01AB
- 0x885C0312, // 01A9 GETMBR R23 R1 K18
- 0x70020001, // 01AA JMP #01AD
- 0x885C0116, // 01AB GETMBR R23 R0 K22
- 0x885C2F47, // 01AC GETMBR R23 R23 K71
- 0x8C601B48, // 01AD GETMET R24 R13 K72
- 0x5C682000, // 01AE MOVE R26 R16
- 0x5C6C2200, // 01AF MOVE R27 R17
- 0x5C702C00, // 01B0 MOVE R28 R22
- 0x5C742E00, // 01B1 MOVE R29 R23
- 0x7C600A00, // 01B2 CALL R24 5
- 0x8C601B49, // 01B3 GETMET R24 R13 K73
- 0x7C600200, // 01B4 CALL R24 1
- 0x88600116, // 01B5 GETMBR R24 R0 K22
- 0x8C60314A, // 01B6 GETMET R24 R24 K74
+ 0x8C582994, // 019F GETMET R22 R20 K148
+ 0x5C602400, // 01A0 MOVE R24 R18
+ 0x5C642A00, // 01A1 MOVE R25 R21
+ 0x5C682600, // 01A2 MOVE R26 R19
+ 0x546E0007, // 01A3 LDINT R27 8
+ 0x7C580A00, // 01A4 CALL R22 5
+ 0x885C0349, // 01A5 GETMBR R23 R1 K73
+ 0x785E0001, // 01A6 JMPF R23 #01A9
+ 0x885C0349, // 01A7 GETMBR R23 R1 K73
+ 0x70020002, // 01A8 JMP #01AC
+ 0x885C0136, // 01A9 GETMBR R23 R0 K54
+ 0x885C2F4A, // 01AA GETMBR R23 R23 K74
+ 0x885C2F4D, // 01AB GETMBR R23 R23 K77
+ 0x8C601B95, // 01AC GETMET R24 R13 K149
+ 0x5C682000, // 01AD MOVE R26 R16
+ 0x5C6C2200, // 01AE MOVE R27 R17
+ 0x5C702C00, // 01AF MOVE R28 R22
+ 0x5C742E00, // 01B0 MOVE R29 R23
+ 0x7C600A00, // 01B1 CALL R24 5
+ 0x8C601B96, // 01B2 GETMET R24 R13 K150
+ 0x7C600200, // 01B3 CALL R24 1
+ 0x88600136, // 01B4 GETMBR R24 R0 K54
+ 0x8860314A, // 01B5 GETMBR R24 R24 K74
+ 0x8C603197, // 01B6 GETMET R24 R24 K151
0x5C681A00, // 01B7 MOVE R26 R13
0x7C600400, // 01B8 CALL R24 2
- 0x8C60034B, // 01B9 GETMET R24 R1 K75
+ 0x8C600398, // 01B9 GETMET R24 R1 K152
0x7C600200, // 01BA CALL R24 1
0x78620002, // 01BB JMPF R24 #01BF
- 0x8C60034C, // 01BC GETMET R24 R1 K76
+ 0x8C600399, // 01BC GETMET R24 R1 K153
0x546A003B, // 01BD LDINT R26 60
0x7C600400, // 01BE CALL R24 2
- 0x8C601B4D, // 01BF GETMET R24 R13 K77
+ 0x8C601B9A, // 01BF GETMET R24 R13 K154
0x7C600200, // 01C0 CALL R24 1
- 0x8C601B4E, // 01C1 GETMET R24 R13 K78
+ 0x8C601B9B, // 01C1 GETMET R24 R13 K155
0x7C600200, // 01C2 CALL R24 1
- 0x8C600B09, // 01C3 GETMET R24 R5 K9
+ 0x8C600B0A, // 01C3 GETMET R24 R5 K10
0x7C600200, // 01C4 CALL R24 1
- 0x8C64310A, // 01C5 GETMET R25 R24 K10
+ 0x8C64310B, // 01C5 GETMET R25 R24 K11
0x586C0005, // 01C6 LDCONST R27 K5
- 0x88700B0B, // 01C7 GETMBR R28 R5 K11
+ 0x88700B0E, // 01C7 GETMBR R28 R5 K14
0xB8760200, // 01C8 GETNGBL R29 K1
- 0x88743B2B, // 01C9 GETMBR R29 R29 K43
+ 0x88743B7D, // 01C9 GETMBR R29 R29 K125
0x7C640800, // 01CA CALL R25 4
- 0x8C64310A, // 01CB GETMET R25 R24 K10
- 0x586C0007, // 01CC LDCONST R27 K7
- 0x88700B0B, // 01CD GETMBR R28 R5 K11
- 0x8C741B4F, // 01CE GETMET R29 R13 K79
+ 0x8C64310B, // 01CB GETMET R25 R24 K11
+ 0x586C0009, // 01CC LDCONST R27 K9
+ 0x88700B0E, // 01CD GETMBR R28 R5 K14
+ 0x8C741B3D, // 01CE GETMET R29 R13 K61
0x7C740200, // 01CF CALL R29 1
0x7C640800, // 01D0 CALL R25 4
0x54660007, // 01D1 LDINT R25 8
- 0x900E0819, // 01D2 SETMBR R3 K4 R25
+ 0x900ED619, // 01D2 SETMBR R3 K107 R25
0x80043000, // 01D3 RET 1 R24
- 0x70020074, // 01D4 JMP #024A
+ 0x70020072, // 01D4 JMP #0248
0x54220008, // 01D5 LDINT R8 9
0x1C200E08, // 01D6 EQ R8 R7 R8
- 0x7822002C, // 01D7 JMPF R8 #0205
- 0x8C200506, // 01D8 GETMET R8 R2 K6
+ 0x7822002B, // 01D7 JMPF R8 #0204
+ 0x8C200541, // 01D8 GETMET R8 R2 K65
0x58280005, // 01D9 LDCONST R10 K5
0x7C200400, // 01DA CALL R8 2
- 0x8C240350, // 01DB GETMET R9 R1 K80
+ 0x8C24039C, // 01DB GETMET R9 R1 K156
0x5C2C1000, // 01DC MOVE R11 R8
0x7C240400, // 01DD CALL R9 2
- 0xB8264400, // 01DE GETNGBL R9 K34
- 0x8C24132C, // 01DF GETMET R9 R9 K44
- 0x602C0018, // 01E0 GETGBL R11 G24
- 0x58300051, // 01E1 LDCONST R12 K81
- 0x88340312, // 01E2 GETMBR R13 R1 K18
- 0x8C341B52, // 01E3 GETMET R13 R13 K82
- 0x7C340200, // 01E4 CALL R13 1
- 0x8C341B44, // 01E5 GETMET R13 R13 K68
- 0x7C340200, // 01E6 CALL R13 1
- 0x8C341B45, // 01E7 GETMET R13 R13 K69
- 0x7C340200, // 01E8 CALL R13 1
- 0x8C341B53, // 01E9 GETMET R13 R13 K83
- 0x7C340200, // 01EA CALL R13 1
- 0x60380008, // 01EB GETGBL R14 G8
- 0x5C3C1000, // 01EC MOVE R15 R8
- 0x7C380200, // 01ED CALL R14 1
- 0x7C2C0600, // 01EE CALL R11 3
- 0x58300010, // 01EF LDCONST R12 K16
- 0x7C240600, // 01F0 CALL R9 3
- 0x8C240B09, // 01F1 GETMET R9 R5 K9
- 0x7C240200, // 01F2 CALL R9 1
- 0x8C28130A, // 01F3 GETMET R10 R9 K10
- 0x58300005, // 01F4 LDCONST R12 K5
- 0x88340B0B, // 01F5 GETMBR R13 R5 K11
- 0xB83A0200, // 01F6 GETNGBL R14 K1
- 0x88381D2B, // 01F7 GETMBR R14 R14 K43
- 0x7C280800, // 01F8 CALL R10 4
- 0x8C28130A, // 01F9 GETMET R10 R9 K10
- 0x58300007, // 01FA LDCONST R12 K7
- 0x88340B0B, // 01FB GETMBR R13 R5 K11
- 0x8C380354, // 01FC GETMET R14 R1 K84
- 0x7C380200, // 01FD CALL R14 1
- 0x8C381D4F, // 01FE GETMET R14 R14 K79
- 0x7C380200, // 01FF CALL R14 1
- 0x7C280800, // 0200 CALL R10 4
- 0x542A0007, // 0201 LDINT R10 8
- 0x900E080A, // 0202 SETMBR R3 K4 R10
- 0x80041200, // 0203 RET 1 R9
- 0x70020044, // 0204 JMP #024A
- 0x54220009, // 0205 LDINT R8 10
- 0x1C200E08, // 0206 EQ R8 R7 R8
- 0x78220041, // 0207 JMPF R8 #024A
- 0x8C200506, // 0208 GETMET R8 R2 K6
- 0x58280005, // 0209 LDCONST R10 K5
- 0x7C200400, // 020A CALL R8 2
- 0x60240008, // 020B GETGBL R9 G8
- 0x5C281000, // 020C MOVE R10 R8
- 0x7C240200, // 020D CALL R9 1
- 0x0026AA09, // 020E ADD R9 K85 R9
- 0x900E5809, // 020F SETMBR R3 K44 R9
- 0x60240010, // 0210 GETGBL R9 G16
- 0x88280116, // 0211 GETMBR R10 R0 K22
- 0x88281530, // 0212 GETMBR R10 R10 K48
- 0x8C281556, // 0213 GETMET R10 R10 K86
- 0x7C280200, // 0214 CALL R10 1
- 0x7C240200, // 0215 CALL R9 1
- 0xA8020020, // 0216 EXBLK 0 #0238
- 0x5C281200, // 0217 MOVE R10 R9
- 0x7C280000, // 0218 CALL R10 0
- 0x8C2C154F, // 0219 GETMET R11 R10 K79
- 0x7C2C0200, // 021A CALL R11 1
- 0x1C2C1608, // 021B EQ R11 R11 R8
- 0x782E0018, // 021C JMPF R11 #0236
- 0x8C2C1557, // 021D GETMET R11 R10 K87
- 0x7C2C0200, // 021E CALL R11 1
- 0xB82E4400, // 021F GETNGBL R11 K34
- 0x8C2C1758, // 0220 GETMET R11 R11 K88
- 0x543607CF, // 0221 LDINT R13 2000
- 0x84380000, // 0222 CLOSURE R14 P0
- 0x7C2C0600, // 0223 CALL R11 3
- 0x8C2C0B09, // 0224 GETMET R11 R5 K9
- 0x7C2C0200, // 0225 CALL R11 1
- 0x8C30170A, // 0226 GETMET R12 R11 K10
- 0x58380005, // 0227 LDCONST R14 K5
- 0x883C0B0B, // 0228 GETMBR R15 R5 K11
- 0xB8420200, // 0229 GETNGBL R16 K1
- 0x8840212B, // 022A GETMBR R16 R16 K43
- 0x7C300800, // 022B CALL R12 4
- 0x8C30170A, // 022C GETMET R12 R11 K10
- 0x58380007, // 022D LDCONST R14 K7
- 0x883C0B0B, // 022E GETMBR R15 R5 K11
- 0x5C401000, // 022F MOVE R16 R8
- 0x7C300800, // 0230 CALL R12 4
- 0x54320007, // 0231 LDINT R12 8
- 0x900E080C, // 0232 SETMBR R3 K4 R12
- 0xA0000000, // 0233 CLOSE R0
- 0xA8040001, // 0234 EXBLK 1 1
- 0x80041600, // 0235 RET 1 R11
- 0xA0240000, // 0236 CLOSE R9
- 0x7001FFDE, // 0237 JMP #0217
- 0x58240059, // 0238 LDCONST R9 K89
- 0xAC240200, // 0239 CATCH R9 1 0
- 0xB0080000, // 023A RAISE 2 R0 R0
- 0xB8264400, // 023B GETNGBL R9 K34
- 0x8C24132C, // 023C GETMET R9 R9 K44
- 0x602C0008, // 023D GETGBL R11 G8
- 0x5C301000, // 023E MOVE R12 R8
- 0x7C2C0200, // 023F CALL R11 1
- 0x002EB40B, // 0240 ADD R11 K90 R11
- 0x002C175B, // 0241 ADD R11 R11 K91
- 0x5830000E, // 0242 LDCONST R12 K14
- 0x7C240600, // 0243 CALL R9 3
- 0xB8260200, // 0244 GETNGBL R9 K1
- 0x8824135C, // 0245 GETMBR R9 R9 K92
- 0x900E3409, // 0246 SETMBR R3 K26 R9
- 0x4C240000, // 0247 LDNIL R9
- 0xA0000000, // 0248 CLOSE R0
- 0x80041200, // 0249 RET 1 R9
- 0x7002009B, // 024A JMP #02E7
- 0x5422003B, // 024B LDINT R8 60
- 0x1C200C08, // 024C EQ R8 R6 R8
- 0x78220085, // 024D JMPF R8 #02D4
- 0x1C200F05, // 024E EQ R8 R7 K5
- 0x78220065, // 024F JMPF R8 #02B6
- 0x8C200506, // 0250 GETMET R8 R2 K6
- 0x58280005, // 0251 LDCONST R10 K5
- 0x7C200400, // 0252 CALL R8 2
- 0x8C240506, // 0253 GETMET R9 R2 K6
- 0x582C0007, // 0254 LDCONST R11 K7
- 0x7C240400, // 0255 CALL R9 2
- 0x8C280506, // 0256 GETMET R10 R2 K6
- 0x5830000E, // 0257 LDCONST R12 K14
- 0x7C280400, // 0258 CALL R10 2
- 0x8C2C0506, // 0259 GETMET R11 R2 K6
- 0x58340010, // 025A LDCONST R13 K16
- 0x7C2C0400, // 025B CALL R11 2
- 0x8C300506, // 025C GETMET R12 R2 K6
- 0x543A0003, // 025D LDINT R14 4
- 0x7C300400, // 025E CALL R12 2
- 0xB8364400, // 025F GETNGBL R13 K34
- 0x8C341B2C, // 0260 GETMET R13 R13 K44
- 0x603C0018, // 0261 GETGBL R15 G24
- 0x5840005D, // 0262 LDCONST R16 K93
- 0x5C441000, // 0263 MOVE R17 R8
- 0x8C481353, // 0264 GETMET R18 R9 K83
- 0x7C480200, // 0265 CALL R18 1
- 0x5C4C1400, // 0266 MOVE R19 R10
- 0x5C501600, // 0267 MOVE R20 R11
- 0x8C541953, // 0268 GETMET R21 R12 K83
- 0x7C540200, // 0269 CALL R21 1
- 0x7C3C0C00, // 026A CALL R15 6
- 0x54420003, // 026B LDINT R16 4
- 0x7C340600, // 026C CALL R13 3
+ 0xB826FC00, // 01DE GETNGBL R9 K126
+ 0x60280018, // 01DF GETGBL R10 G24
+ 0x582C009D, // 01E0 LDCONST R11 K157
+ 0x88300349, // 01E1 GETMBR R12 R1 K73
+ 0x8C30199E, // 01E2 GETMET R12 R12 K158
+ 0x7C300200, // 01E3 CALL R12 1
+ 0x8C301992, // 01E4 GETMET R12 R12 K146
+ 0x7C300200, // 01E5 CALL R12 1
+ 0x8C301993, // 01E6 GETMET R12 R12 K147
+ 0x7C300200, // 01E7 CALL R12 1
+ 0x8C30199F, // 01E8 GETMET R12 R12 K159
+ 0x7C300200, // 01E9 CALL R12 1
+ 0x60340008, // 01EA GETGBL R13 G8
+ 0x5C381000, // 01EB MOVE R14 R8
+ 0x7C340200, // 01EC CALL R13 1
+ 0x7C280600, // 01ED CALL R10 3
+ 0x582C000F, // 01EE LDCONST R11 K15
+ 0x7C240400, // 01EF CALL R9 2
+ 0x8C240B0A, // 01F0 GETMET R9 R5 K10
+ 0x7C240200, // 01F1 CALL R9 1
+ 0x8C28130B, // 01F2 GETMET R10 R9 K11
+ 0x58300005, // 01F3 LDCONST R12 K5
+ 0x88340B0E, // 01F4 GETMBR R13 R5 K14
+ 0xB83A0200, // 01F5 GETNGBL R14 K1
+ 0x88381D7D, // 01F6 GETMBR R14 R14 K125
+ 0x7C280800, // 01F7 CALL R10 4
+ 0x8C28130B, // 01F8 GETMET R10 R9 K11
+ 0x58300009, // 01F9 LDCONST R12 K9
+ 0x88340B0E, // 01FA GETMBR R13 R5 K14
+ 0x8C380335, // 01FB GETMET R14 R1 K53
+ 0x7C380200, // 01FC CALL R14 1
+ 0x8C381D3D, // 01FD GETMET R14 R14 K61
+ 0x7C380200, // 01FE CALL R14 1
+ 0x7C280800, // 01FF CALL R10 4
+ 0x542A0007, // 0200 LDINT R10 8
+ 0x900ED60A, // 0201 SETMBR R3 K107 R10
+ 0x80041200, // 0202 RET 1 R9
+ 0x70020043, // 0203 JMP #0248
+ 0x54220009, // 0204 LDINT R8 10
+ 0x1C200E08, // 0205 EQ R8 R7 R8
+ 0x78220040, // 0206 JMPF R8 #0248
+ 0x8C200541, // 0207 GETMET R8 R2 K65
+ 0x58280005, // 0208 LDCONST R10 K5
+ 0x7C200400, // 0209 CALL R8 2
+ 0x60240008, // 020A GETGBL R9 G8
+ 0x5C281000, // 020B MOVE R10 R8
+ 0x7C240200, // 020C CALL R9 1
+ 0x00274009, // 020D ADD R9 K160 R9
+ 0x900EFC09, // 020E SETMBR R3 K126 R9
+ 0x60240010, // 020F GETGBL R9 G16
+ 0x88280136, // 0210 GETMBR R10 R0 K54
+ 0x88281537, // 0211 GETMBR R10 R10 K55
+ 0x8C281538, // 0212 GETMET R10 R10 K56
+ 0x7C280200, // 0213 CALL R10 1
+ 0x7C240200, // 0214 CALL R9 1
+ 0xA8020020, // 0215 EXBLK 0 #0237
+ 0x5C281200, // 0216 MOVE R10 R9
+ 0x7C280000, // 0217 CALL R10 0
+ 0x8C2C153D, // 0218 GETMET R11 R10 K61
+ 0x7C2C0200, // 0219 CALL R11 1
+ 0x1C2C1608, // 021A EQ R11 R11 R8
+ 0x782E0018, // 021B JMPF R11 #0235
+ 0x8C2C15A1, // 021C GETMET R11 R10 K161
+ 0x7C2C0200, // 021D CALL R11 1
+ 0xB82E2400, // 021E GETNGBL R11 K18
+ 0x8C2C17A2, // 021F GETMET R11 R11 K162
+ 0x543607CF, // 0220 LDINT R13 2000
+ 0x84380000, // 0221 CLOSURE R14 P0
+ 0x7C2C0600, // 0222 CALL R11 3
+ 0x8C2C0B0A, // 0223 GETMET R11 R5 K10
+ 0x7C2C0200, // 0224 CALL R11 1
+ 0x8C30170B, // 0225 GETMET R12 R11 K11
+ 0x58380005, // 0226 LDCONST R14 K5
+ 0x883C0B0E, // 0227 GETMBR R15 R5 K14
+ 0xB8420200, // 0228 GETNGBL R16 K1
+ 0x8840217D, // 0229 GETMBR R16 R16 K125
+ 0x7C300800, // 022A CALL R12 4
+ 0x8C30170B, // 022B GETMET R12 R11 K11
+ 0x58380009, // 022C LDCONST R14 K9
+ 0x883C0B0E, // 022D GETMBR R15 R5 K14
+ 0x5C401000, // 022E MOVE R16 R8
+ 0x7C300800, // 022F CALL R12 4
+ 0x54320007, // 0230 LDINT R12 8
+ 0x900ED60C, // 0231 SETMBR R3 K107 R12
+ 0xA0000000, // 0232 CLOSE R0
+ 0xA8040001, // 0233 EXBLK 1 1
+ 0x80041600, // 0234 RET 1 R11
+ 0xA0240000, // 0235 CLOSE R9
+ 0x7001FFDE, // 0236 JMP #0216
+ 0x5824003E, // 0237 LDCONST R9 K62
+ 0xAC240200, // 0238 CATCH R9 1 0
+ 0xB0080000, // 0239 RAISE 2 R0 R0
+ 0xB826FC00, // 023A GETNGBL R9 K126
+ 0x60280008, // 023B GETGBL R10 G8
+ 0x5C2C1000, // 023C MOVE R11 R8
+ 0x7C280200, // 023D CALL R10 1
+ 0x002B460A, // 023E ADD R10 K163 R10
+ 0x002815A4, // 023F ADD R10 R10 K164
+ 0x582C000D, // 0240 LDCONST R11 K13
+ 0x7C240400, // 0241 CALL R9 2
+ 0xB8260200, // 0242 GETNGBL R9 K1
+ 0x88241365, // 0243 GETMBR R9 R9 K101
+ 0x900EC609, // 0244 SETMBR R3 K99 R9
+ 0x4C240000, // 0245 LDNIL R9
+ 0xA0000000, // 0246 CLOSE R0
+ 0x80041200, // 0247 RET 1 R9
+ 0x7002009B, // 0248 JMP #02E5
+ 0x5422003B, // 0249 LDINT R8 60
+ 0x1C200C08, // 024A EQ R8 R6 R8
+ 0x78220085, // 024B JMPF R8 #02D2
+ 0x1C200F05, // 024C EQ R8 R7 K5
+ 0x78220064, // 024D JMPF R8 #02B3
+ 0x8C200541, // 024E GETMET R8 R2 K65
+ 0x58280005, // 024F LDCONST R10 K5
+ 0x7C200400, // 0250 CALL R8 2
+ 0x8C240541, // 0251 GETMET R9 R2 K65
+ 0x582C0009, // 0252 LDCONST R11 K9
+ 0x7C240400, // 0253 CALL R9 2
+ 0x8C280541, // 0254 GETMET R10 R2 K65
+ 0x5830000D, // 0255 LDCONST R12 K13
+ 0x7C280400, // 0256 CALL R10 2
+ 0x8C2C0541, // 0257 GETMET R11 R2 K65
+ 0x5834000F, // 0258 LDCONST R13 K15
+ 0x7C2C0400, // 0259 CALL R11 2
+ 0x8C300541, // 025A GETMET R12 R2 K65
+ 0x543A0003, // 025B LDINT R14 4
+ 0x7C300400, // 025C CALL R12 2
+ 0xB836FC00, // 025D GETNGBL R13 K126
+ 0x60380018, // 025E GETGBL R14 G24
+ 0x583C00A5, // 025F LDCONST R15 K165
+ 0x5C401000, // 0260 MOVE R16 R8
+ 0x8C44139F, // 0261 GETMET R17 R9 K159
+ 0x7C440200, // 0262 CALL R17 1
+ 0x5C481400, // 0263 MOVE R18 R10
+ 0x5C4C1600, // 0264 MOVE R19 R11
+ 0x8C50199F, // 0265 GETMET R20 R12 K159
+ 0x7C500200, // 0266 CALL R20 1
+ 0x7C380C00, // 0267 CALL R14 6
+ 0x543E0003, // 0268 LDINT R15 4
+ 0x7C340400, // 0269 CALL R13 2
+ 0x4C340000, // 026A LDNIL R13
+ 0x1C34100D, // 026B EQ R13 R8 R13
+ 0x7436000B, // 026C JMPT R13 #0279
0x4C340000, // 026D LDNIL R13
- 0x1C34100D, // 026E EQ R13 R8 R13
- 0x7436000B, // 026F JMPT R13 #027C
+ 0x1C34120D, // 026E EQ R13 R9 R13
+ 0x74360008, // 026F JMPT R13 #0279
0x4C340000, // 0270 LDNIL R13
- 0x1C34120D, // 0271 EQ R13 R9 R13
- 0x74360008, // 0272 JMPT R13 #027C
+ 0x1C34140D, // 0271 EQ R13 R10 R13
+ 0x74360005, // 0272 JMPT R13 #0279
0x4C340000, // 0273 LDNIL R13
- 0x1C34140D, // 0274 EQ R13 R10 R13
- 0x74360005, // 0275 JMPT R13 #027C
+ 0x1C34160D, // 0274 EQ R13 R11 R13
+ 0x74360002, // 0275 JMPT R13 #0279
0x4C340000, // 0276 LDNIL R13
- 0x1C34160D, // 0277 EQ R13 R11 R13
- 0x74360002, // 0278 JMPT R13 #027C
- 0x4C340000, // 0279 LDNIL R13
- 0x1C34180D, // 027A EQ R13 R12 R13
- 0x78360005, // 027B JMPF R13 #0282
- 0xB8360200, // 027C GETNGBL R13 K1
- 0x88341B5E, // 027D GETMBR R13 R13 K94
- 0x900E340D, // 027E SETMBR R3 K26 R13
- 0x4C340000, // 027F LDNIL R13
- 0xA0000000, // 0280 CLOSE R0
- 0x80041A00, // 0281 RET 1 R13
- 0x6034000C, // 0282 GETGBL R13 G12
- 0x5C381200, // 0283 MOVE R14 R9
- 0x7C340200, // 0284 CALL R13 1
- 0x543A001F, // 0285 LDINT R14 32
- 0x543E0040, // 0286 LDINT R15 65
- 0x00381C0F, // 0287 ADD R14 R14 R15
- 0x20341A0E, // 0288 NE R13 R13 R14
- 0x7436000B, // 0289 JMPT R13 #0296
- 0x6034000C, // 028A GETGBL R13 G12
- 0x5C381800, // 028B MOVE R14 R12
- 0x7C340200, // 028C CALL R13 1
- 0x543A000F, // 028D LDINT R14 16
- 0x14341A0E, // 028E LT R13 R13 R14
- 0x74360005, // 028F JMPT R13 #0296
- 0x6034000C, // 0290 GETGBL R13 G12
- 0x5C381800, // 0291 MOVE R14 R12
- 0x7C340200, // 0292 CALL R13 1
- 0x543A001F, // 0293 LDINT R14 32
- 0x24341A0E, // 0294 GT R13 R13 R14
- 0x7836000A, // 0295 JMPF R13 #02A1
- 0xB8364400, // 0296 GETNGBL R13 K34
- 0x8C341B2C, // 0297 GETMET R13 R13 K44
- 0x583C005F, // 0298 LDCONST R15 K95
- 0x5840000E, // 0299 LDCONST R16 K14
- 0x7C340600, // 029A CALL R13 3
- 0xB8360200, // 029B GETNGBL R13 K1
- 0x88341B60, // 029C GETMBR R13 R13 K96
- 0x900E340D, // 029D SETMBR R3 K26 R13
- 0x4C340000, // 029E LDNIL R13
- 0xA0000000, // 029F CLOSE R0
- 0x80041A00, // 02A0 RET 1 R13
- 0x5436001E, // 02A1 LDINT R13 31
- 0x40360A0D, // 02A2 CONNECT R13 K5 R13
- 0x9434120D, // 02A3 GETIDX R13 R9 R13
- 0x543A001F, // 02A4 LDINT R14 32
- 0x40381D40, // 02A5 CONNECT R14 R14 K64
- 0x9438120E, // 02A6 GETIDX R14 R9 R14
- 0x883C0116, // 02A7 GETMBR R15 R0 K22
- 0x8C3C1F61, // 02A8 GETMET R15 R15 K97
- 0x5C441000, // 02A9 MOVE R17 R8
- 0x5C481600, // 02AA MOVE R18 R11
- 0x5C4C1400, // 02AB MOVE R19 R10
- 0x5C501800, // 02AC MOVE R20 R12
- 0x5C541A00, // 02AD MOVE R21 R13
- 0x5C581C00, // 02AE MOVE R22 R14
- 0x8C5C0354, // 02AF GETMET R23 R1 K84
- 0x7C5C0200, // 02B0 CALL R23 1
- 0x7C3C1000, // 02B1 CALL R15 8
- 0x503C0200, // 02B2 LDBOOL R15 1 0
- 0xA0000000, // 02B3 CLOSE R0
- 0x80041E00, // 02B4 RET 1 R15
- 0x7002001C, // 02B5 JMP #02D3
- 0x1C200F07, // 02B6 EQ R8 R7 K7
- 0x78220012, // 02B7 JMPF R8 #02CB
- 0x8C200506, // 02B8 GETMET R8 R2 K6
- 0x58280005, // 02B9 LDCONST R10 K5
- 0x7C200400, // 02BA CALL R8 2
- 0xB8264400, // 02BB GETNGBL R9 K34
- 0x8C24132C, // 02BC GETMET R9 R9 K44
- 0x602C0008, // 02BD GETGBL R11 G8
- 0x5C301000, // 02BE MOVE R12 R8
- 0x7C2C0200, // 02BF CALL R11 1
- 0x002EC40B, // 02C0 ADD R11 K98 R11
- 0x58300010, // 02C1 LDCONST R12 K16
- 0x7C240600, // 02C2 CALL R9 3
- 0x88240116, // 02C3 GETMBR R9 R0 K22
- 0x8C241363, // 02C4 GETMET R9 R9 K99
- 0x5C2C1000, // 02C5 MOVE R11 R8
- 0x7C240400, // 02C6 CALL R9 2
- 0x50240200, // 02C7 LDBOOL R9 1 0
- 0xA0000000, // 02C8 CLOSE R0
- 0x80041200, // 02C9 RET 1 R9
- 0x70020007, // 02CA JMP #02D3
- 0x1C200F0E, // 02CB EQ R8 R7 K14
- 0x78220005, // 02CC JMPF R8 #02D3
- 0x88200116, // 02CD GETMBR R8 R0 K22
- 0x8C201164, // 02CE GETMET R8 R8 K100
- 0x7C200200, // 02CF CALL R8 1
- 0x50200200, // 02D0 LDBOOL R8 1 0
- 0xA0000000, // 02D1 CLOSE R0
- 0x80041000, // 02D2 RET 1 R8
- 0x70020012, // 02D3 JMP #02E7
- 0x54220029, // 02D4 LDINT R8 42
- 0x1C200C08, // 02D5 EQ R8 R6 R8
- 0x78220005, // 02D6 JMPF R8 #02DD
- 0x1C200F05, // 02D7 EQ R8 R7 K5
- 0x78220002, // 02D8 JMPF R8 #02DC
- 0x50200200, // 02D9 LDBOOL R8 1 0
- 0xA0000000, // 02DA CLOSE R0
- 0x80041000, // 02DB RET 1 R8
- 0x70020009, // 02DC JMP #02E7
- 0x60200003, // 02DD GETGBL R8 G3
- 0x5C240000, // 02DE MOVE R9 R0
- 0x7C200200, // 02DF CALL R8 1
- 0x8C201165, // 02E0 GETMET R8 R8 K101
- 0x5C280200, // 02E1 MOVE R10 R1
- 0x5C2C0400, // 02E2 MOVE R11 R2
- 0x5C300600, // 02E3 MOVE R12 R3
- 0x7C200800, // 02E4 CALL R8 4
+ 0x1C34180D, // 0277 EQ R13 R12 R13
+ 0x78360005, // 0278 JMPF R13 #027F
+ 0xB8360200, // 0279 GETNGBL R13 K1
+ 0x88341BA6, // 027A GETMBR R13 R13 K166
+ 0x900EC60D, // 027B SETMBR R3 K99 R13
+ 0x4C340000, // 027C LDNIL R13
+ 0xA0000000, // 027D CLOSE R0
+ 0x80041A00, // 027E RET 1 R13
+ 0x6034000C, // 027F GETGBL R13 G12
+ 0x5C381200, // 0280 MOVE R14 R9
+ 0x7C340200, // 0281 CALL R13 1
+ 0x543A001F, // 0282 LDINT R14 32
+ 0x543E0040, // 0283 LDINT R15 65
+ 0x00381C0F, // 0284 ADD R14 R14 R15
+ 0x20341A0E, // 0285 NE R13 R13 R14
+ 0x7436000B, // 0286 JMPT R13 #0293
+ 0x6034000C, // 0287 GETGBL R13 G12
+ 0x5C381800, // 0288 MOVE R14 R12
+ 0x7C340200, // 0289 CALL R13 1
+ 0x543A000F, // 028A LDINT R14 16
+ 0x14341A0E, // 028B LT R13 R13 R14
+ 0x74360005, // 028C JMPT R13 #0293
+ 0x6034000C, // 028D GETGBL R13 G12
+ 0x5C381800, // 028E MOVE R14 R12
+ 0x7C340200, // 028F CALL R13 1
+ 0x543A001F, // 0290 LDINT R14 32
+ 0x24341A0E, // 0291 GT R13 R13 R14
+ 0x78360009, // 0292 JMPF R13 #029D
+ 0xB836FC00, // 0293 GETNGBL R13 K126
+ 0x583800A7, // 0294 LDCONST R14 K167
+ 0x583C000D, // 0295 LDCONST R15 K13
+ 0x7C340400, // 0296 CALL R13 2
+ 0xB8360200, // 0297 GETNGBL R13 K1
+ 0x88341B64, // 0298 GETMBR R13 R13 K100
+ 0x900EC60D, // 0299 SETMBR R3 K99 R13
+ 0x4C340000, // 029A LDNIL R13
+ 0xA0000000, // 029B CLOSE R0
+ 0x80041A00, // 029C RET 1 R13
+ 0x5436001E, // 029D LDINT R13 31
+ 0x40360A0D, // 029E CONNECT R13 K5 R13
+ 0x9434120D, // 029F GETIDX R13 R9 R13
+ 0x543A001F, // 02A0 LDINT R14 32
+ 0x40381D8E, // 02A1 CONNECT R14 R14 K142
+ 0x9438120E, // 02A2 GETIDX R14 R9 R14
+ 0x883C0136, // 02A3 GETMBR R15 R0 K54
+ 0x883C1F4A, // 02A4 GETMBR R15 R15 K74
+ 0x8C3C1FA8, // 02A5 GETMET R15 R15 K168
+ 0x5C441000, // 02A6 MOVE R17 R8
+ 0x5C481600, // 02A7 MOVE R18 R11
+ 0x5C4C1400, // 02A8 MOVE R19 R10
+ 0x5C501800, // 02A9 MOVE R20 R12
+ 0x5C541A00, // 02AA MOVE R21 R13
+ 0x5C581C00, // 02AB MOVE R22 R14
+ 0x8C5C0335, // 02AC GETMET R23 R1 K53
+ 0x7C5C0200, // 02AD CALL R23 1
+ 0x7C3C1000, // 02AE CALL R15 8
+ 0x503C0200, // 02AF LDBOOL R15 1 0
+ 0xA0000000, // 02B0 CLOSE R0
+ 0x80041E00, // 02B1 RET 1 R15
+ 0x7002001D, // 02B2 JMP #02D1
+ 0x1C200F09, // 02B3 EQ R8 R7 K9
+ 0x78220012, // 02B4 JMPF R8 #02C8
+ 0x8C200541, // 02B5 GETMET R8 R2 K65
+ 0x58280005, // 02B6 LDCONST R10 K5
+ 0x7C200400, // 02B7 CALL R8 2
+ 0xB826FC00, // 02B8 GETNGBL R9 K126
+ 0x60280008, // 02B9 GETGBL R10 G8
+ 0x5C2C1000, // 02BA MOVE R11 R8
+ 0x7C280200, // 02BB CALL R10 1
+ 0x002B520A, // 02BC ADD R10 K169 R10
+ 0x582C000F, // 02BD LDCONST R11 K15
+ 0x7C240400, // 02BE CALL R9 2
+ 0x88240136, // 02BF GETMBR R9 R0 K54
+ 0x8824134A, // 02C0 GETMBR R9 R9 K74
+ 0x8C2413AA, // 02C1 GETMET R9 R9 K170
+ 0x5C2C1000, // 02C2 MOVE R11 R8
+ 0x7C240400, // 02C3 CALL R9 2
+ 0x50240200, // 02C4 LDBOOL R9 1 0
+ 0xA0000000, // 02C5 CLOSE R0
+ 0x80041200, // 02C6 RET 1 R9
+ 0x70020008, // 02C7 JMP #02D1
+ 0x1C200F0D, // 02C8 EQ R8 R7 K13
+ 0x78220006, // 02C9 JMPF R8 #02D1
+ 0x88200136, // 02CA GETMBR R8 R0 K54
+ 0x8820114A, // 02CB GETMBR R8 R8 K74
+ 0x8C2011AB, // 02CC GETMET R8 R8 K171
+ 0x7C200200, // 02CD CALL R8 1
+ 0x50200200, // 02CE LDBOOL R8 1 0
+ 0xA0000000, // 02CF CLOSE R0
+ 0x80041000, // 02D0 RET 1 R8
+ 0x70020012, // 02D1 JMP #02E5
+ 0x54220029, // 02D2 LDINT R8 42
+ 0x1C200C08, // 02D3 EQ R8 R6 R8
+ 0x78220005, // 02D4 JMPF R8 #02DB
+ 0x1C200F05, // 02D5 EQ R8 R7 K5
+ 0x78220002, // 02D6 JMPF R8 #02DA
+ 0x50200200, // 02D7 LDBOOL R8 1 0
+ 0xA0000000, // 02D8 CLOSE R0
+ 0x80041000, // 02D9 RET 1 R8
+ 0x70020009, // 02DA JMP #02E5
+ 0x60200003, // 02DB GETGBL R8 G3
+ 0x5C240000, // 02DC MOVE R9 R0
+ 0x7C200200, // 02DD CALL R8 1
+ 0x8C2011AC, // 02DE GETMET R8 R8 K172
+ 0x5C280200, // 02DF MOVE R10 R1
+ 0x5C2C0400, // 02E0 MOVE R11 R2
+ 0x5C300600, // 02E1 MOVE R12 R3
+ 0x7C200800, // 02E2 CALL R8 4
+ 0xA0000000, // 02E3 CLOSE R0
+ 0x80041000, // 02E4 RET 1 R8
0xA0000000, // 02E5 CLOSE R0
- 0x80041000, // 02E6 RET 1 R8
- 0xA0000000, // 02E7 CLOSE R0
- 0x80000000, // 02E8 RET 0
+ 0x80000000, // 02E6 RET 0
})
)
);
@@ -2107,213 +2126,37 @@ extern const bclass be_class_Matter_Plugin;
be_local_class(Matter_Plugin_Root,
0,
&be_class_Matter_Plugin,
- be_nested_map(7,
+ be_nested_map(8,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(read_attribute, 1), be_const_closure(class_Matter_Plugin_Root_read_attribute_closure) },
- { be_const_key_weak(invoke_request, 6), be_const_closure(class_Matter_Plugin_Root_invoke_request_closure) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(root) },
- { be_const_key_weak(TYPES, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ { be_const_key_weak(invoke_request, 1), be_const_closure(class_Matter_Plugin_Root_invoke_request_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Root_init_closure) },
+ { be_const_key_weak(TYPES, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(22, -1), be_const_int(1) },
})) ) } )) },
- { be_const_key_weak(write_attribute, -1), be_const_closure(class_Matter_Plugin_Root_write_attribute_closure) },
- { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Root_X20node) },
- { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ { be_const_key_weak(write_attribute, 0), be_const_closure(class_Matter_Plugin_Root_write_attribute_closure) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(root) },
+ { be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak(Root_X20node) },
+ { be_const_key_weak(CLUSTERS, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(14,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(56, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(9,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(7),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 11), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(44, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(9,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(31, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(60, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(9,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(63, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(62, 13), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(49, 5), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(4),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(50, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(51, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(8),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(52, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(6,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(43, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(40, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(21,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(6),
- be_const_int(7),
- be_const_int(8),
- be_const_int(9),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(19),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(48, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(11,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
+ { be_const_key_int(56, -1), be_const_bytes_instance(000000010007FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(29, 11), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(44, -1), be_const_bytes_instance(000000010002FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(31, -1), be_const_bytes_instance(0000000200030004FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(60, -1), be_const_bytes_instance(000000010002FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(63, -1), be_const_bytes_instance(FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(62, 13), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(49, 5), be_const_bytes_instance(00030004FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(50, -1), be_const_bytes_instance(FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(51, -1), be_const_bytes_instance(0000000100020008FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(52, -1), be_const_bytes_instance(FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(43, -1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(40, -1), be_const_bytes_instance(0000000100020003000400050006000700080009000A000F001100120013FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(48, -1), be_const_bytes_instance(00000001000200030004FFF8FFF9FFFAFFFBFFFCFFFD) },
})) ) } )) },
+ { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Root_read_attribute_closure) },
})),
be_str_weak(Matter_Plugin_Root)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Bridge_HTTP.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Bridge_HTTP.h
deleted file mode 100644
index bdbd6be1f..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Bridge_HTTP.h
+++ /dev/null
@@ -1,934 +0,0 @@
-/* Solidification of Matter_Plugin_2_Bridge_HTTP.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_GetOptionReader;
-
-/********************************************************************
-** Solidified function: getoption
-********************************************************************/
-extern const bclass be_class_GetOptionReader;
-be_local_closure(class_GetOptionReader_getoption, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_GetOptionReader,
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(flag),
- /* K1 */ be_nested_str_weak(getbits),
- /* K2 */ be_const_int(1),
- /* K3 */ be_nested_str_weak(flag2),
- /* K4 */ be_nested_str_weak(get),
- /* K5 */ be_nested_str_weak(flag3),
- /* K6 */ be_nested_str_weak(flag4),
- /* K7 */ be_nested_str_weak(flag5),
- /* K8 */ be_nested_str_weak(flag6),
- }),
- be_str_weak(getoption),
- &be_const_str_solidified,
- ( &(const binstruction[65]) { /* code */
- 0x540A001F, // 0000 LDINT R2 32
- 0x14080202, // 0001 LT R2 R1 R2
- 0x780A0006, // 0002 JMPF R2 #000A
- 0x88080100, // 0003 GETMBR R2 R0 K0
- 0x8C080501, // 0004 GETMET R2 R2 K1
- 0x5C100200, // 0005 MOVE R4 R1
- 0x58140002, // 0006 LDCONST R5 K2
- 0x7C080600, // 0007 CALL R2 3
- 0x80040400, // 0008 RET 1 R2
- 0x70020035, // 0009 JMP #0040
- 0x540A0031, // 000A LDINT R2 50
- 0x14080202, // 000B LT R2 R1 R2
- 0x780A0007, // 000C JMPF R2 #0015
- 0x88080103, // 000D GETMBR R2 R0 K3
- 0x8C080504, // 000E GETMET R2 R2 K4
- 0x5412001F, // 000F LDINT R4 32
- 0x04100204, // 0010 SUB R4 R1 R4
- 0x58140002, // 0011 LDCONST R5 K2
- 0x7C080600, // 0012 CALL R2 3
- 0x80040400, // 0013 RET 1 R2
- 0x7002002A, // 0014 JMP #0040
- 0x540A0051, // 0015 LDINT R2 82
- 0x14080202, // 0016 LT R2 R1 R2
- 0x780A0007, // 0017 JMPF R2 #0020
- 0x88080105, // 0018 GETMBR R2 R0 K5
- 0x8C080501, // 0019 GETMET R2 R2 K1
- 0x54120031, // 001A LDINT R4 50
- 0x04100204, // 001B SUB R4 R1 R4
- 0x58140002, // 001C LDCONST R5 K2
- 0x7C080600, // 001D CALL R2 3
- 0x80040400, // 001E RET 1 R2
- 0x7002001F, // 001F JMP #0040
- 0x540A0071, // 0020 LDINT R2 114
- 0x14080202, // 0021 LT R2 R1 R2
- 0x780A0007, // 0022 JMPF R2 #002B
- 0x88080106, // 0023 GETMBR R2 R0 K6
- 0x8C080501, // 0024 GETMET R2 R2 K1
- 0x54120051, // 0025 LDINT R4 82
- 0x04100204, // 0026 SUB R4 R1 R4
- 0x58140002, // 0027 LDCONST R5 K2
- 0x7C080600, // 0028 CALL R2 3
- 0x80040400, // 0029 RET 1 R2
- 0x70020014, // 002A JMP #0040
- 0x540A0091, // 002B LDINT R2 146
- 0x14080202, // 002C LT R2 R1 R2
- 0x780A0007, // 002D JMPF R2 #0036
- 0x88080107, // 002E GETMBR R2 R0 K7
- 0x8C080501, // 002F GETMET R2 R2 K1
- 0x54120071, // 0030 LDINT R4 114
- 0x04100204, // 0031 SUB R4 R1 R4
- 0x58140002, // 0032 LDCONST R5 K2
- 0x7C080600, // 0033 CALL R2 3
- 0x80040400, // 0034 RET 1 R2
- 0x70020009, // 0035 JMP #0040
- 0x540A00B1, // 0036 LDINT R2 178
- 0x14080202, // 0037 LT R2 R1 R2
- 0x780A0006, // 0038 JMPF R2 #0040
- 0x88080108, // 0039 GETMBR R2 R0 K8
- 0x8C080501, // 003A GETMET R2 R2 K1
- 0x54120091, // 003B LDINT R4 146
- 0x04100204, // 003C SUB R4 R1 R4
- 0x58140002, // 003D LDCONST R5 K2
- 0x7C080600, // 003E CALL R2 3
- 0x80040400, // 003F RET 1 R2
- 0x80000000, // 0040 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_GetOptionReader;
-be_local_closure(class_GetOptionReader_init, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_GetOptionReader,
- 1, /* has constants */
- ( &(const bvalue[15]) { /* constants */
- /* K0 */ be_nested_str_weak(value_error),
- /* K1 */ be_nested_str_weak(invalid_X20json),
- /* K2 */ be_nested_str_weak(SetOption),
- /* K3 */ be_nested_str_weak(flag),
- /* K4 */ be_nested_str_weak(fromhex),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(reverse),
- /* K7 */ be_nested_str_weak(flag2),
- /* K8 */ be_const_int(1),
- /* K9 */ be_nested_str_weak(flag3),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(flag4),
- /* K12 */ be_const_int(3),
- /* K13 */ be_nested_str_weak(flag5),
- /* K14 */ be_nested_str_weak(flag6),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[54]) { /* code */
- 0x4C080000, // 0000 LDNIL R2
- 0x1C080202, // 0001 EQ R2 R1 R2
- 0x780A0000, // 0002 JMPF R2 #0004
- 0xB0060101, // 0003 RAISE 1 K0 K1
- 0x94080302, // 0004 GETIDX R2 R1 K2
- 0x600C0015, // 0005 GETGBL R3 G21
- 0x7C0C0000, // 0006 CALL R3 0
- 0x8C0C0704, // 0007 GETMET R3 R3 K4
- 0x94140505, // 0008 GETIDX R5 R2 K5
- 0x7C0C0400, // 0009 CALL R3 2
- 0x8C0C0706, // 000A GETMET R3 R3 K6
- 0x7C0C0200, // 000B CALL R3 1
- 0x90020603, // 000C SETMBR R0 K3 R3
- 0x600C0015, // 000D GETGBL R3 G21
- 0x7C0C0000, // 000E CALL R3 0
- 0x8C0C0704, // 000F GETMET R3 R3 K4
- 0x94140508, // 0010 GETIDX R5 R2 K8
- 0x7C0C0400, // 0011 CALL R3 2
- 0x90020E03, // 0012 SETMBR R0 K7 R3
- 0x600C0015, // 0013 GETGBL R3 G21
- 0x7C0C0000, // 0014 CALL R3 0
- 0x8C0C0704, // 0015 GETMET R3 R3 K4
- 0x9414050A, // 0016 GETIDX R5 R2 K10
- 0x7C0C0400, // 0017 CALL R3 2
- 0x8C0C0706, // 0018 GETMET R3 R3 K6
- 0x7C0C0200, // 0019 CALL R3 1
- 0x90021203, // 001A SETMBR R0 K9 R3
- 0x600C0015, // 001B GETGBL R3 G21
- 0x7C0C0000, // 001C CALL R3 0
- 0x8C0C0704, // 001D GETMET R3 R3 K4
- 0x9414050C, // 001E GETIDX R5 R2 K12
- 0x7C0C0400, // 001F CALL R3 2
- 0x8C0C0706, // 0020 GETMET R3 R3 K6
- 0x7C0C0200, // 0021 CALL R3 1
- 0x90021603, // 0022 SETMBR R0 K11 R3
- 0x600C0015, // 0023 GETGBL R3 G21
- 0x7C0C0000, // 0024 CALL R3 0
- 0x8C0C0704, // 0025 GETMET R3 R3 K4
- 0x54160003, // 0026 LDINT R5 4
- 0x94140405, // 0027 GETIDX R5 R2 R5
- 0x7C0C0400, // 0028 CALL R3 2
- 0x8C0C0706, // 0029 GETMET R3 R3 K6
- 0x7C0C0200, // 002A CALL R3 1
- 0x90021A03, // 002B SETMBR R0 K13 R3
- 0x600C0015, // 002C GETGBL R3 G21
- 0x7C0C0000, // 002D CALL R3 0
- 0x8C0C0704, // 002E GETMET R3 R3 K4
- 0x54160004, // 002F LDINT R5 5
- 0x94140405, // 0030 GETIDX R5 R2 R5
- 0x7C0C0400, // 0031 CALL R3 2
- 0x8C0C0706, // 0032 GETMET R3 R3 K6
- 0x7C0C0200, // 0033 CALL R3 1
- 0x90021C03, // 0034 SETMBR R0 K14 R3
- 0x80000000, // 0035 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: GetOptionReader
-********************************************************************/
-be_local_class(GetOptionReader,
- 6,
- NULL,
- be_nested_map(8,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(flag2, -1), be_const_var(1) },
- { be_const_key_weak(flag4, -1), be_const_var(3) },
- { be_const_key_weak(getoption, -1), be_const_closure(class_GetOptionReader_getoption_closure) },
- { be_const_key_weak(init, 5), be_const_closure(class_GetOptionReader_init_closure) },
- { be_const_key_weak(flag3, -1), be_const_var(2) },
- { be_const_key_weak(flag6, -1), be_const_var(5) },
- { be_const_key_weak(flag5, -1), be_const_var(4) },
- { be_const_key_weak(flag, 0), be_const_var(0) },
- })),
- be_str_weak(GetOptionReader)
-);
-
-extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
-
-/********************************************************************
-** Solidified function: call_remote_sync
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
-be_local_closure(class_Matter_Plugin_Bridge_HTTP_call_remote_sync, /* name */
- be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_HTTP,
- 1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(json),
- /* K1 */ be_const_int(2),
- /* K2 */ be_nested_str_weak(_X20),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(http_remote),
- /* K5 */ be_nested_str_weak(call_sync),
- /* K6 */ be_nested_str_weak(SYNC_TIMEOUT),
- /* K7 */ be_nested_str_weak(device_is_alive),
- /* K8 */ be_nested_str_weak(load),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str_weak(tasmota),
- /* K11 */ be_nested_str_weak(log),
- /* K12 */ be_nested_str_weak(MTR_X3A_X20HTTP_X20GET_X20retrying),
- /* K13 */ be_const_int(3),
- }),
- be_str_weak(call_remote_sync),
- &be_const_str_solidified,
- ( &(const binstruction[42]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
- 0x58100001, // 0001 LDCONST R4 K1
- 0x4C140000, // 0002 LDNIL R5
- 0x20140405, // 0003 NE R5 R2 R5
- 0x78160005, // 0004 JMPF R5 #000B
- 0x00140302, // 0005 ADD R5 R1 K2
- 0x60180008, // 0006 GETGBL R6 G8
- 0x5C1C0400, // 0007 MOVE R7 R2
- 0x7C180200, // 0008 CALL R6 1
- 0x00140A06, // 0009 ADD R5 R5 R6
- 0x5C040A00, // 000A MOVE R1 R5
- 0x24140903, // 000B GT R5 R4 K3
- 0x78160016, // 000C JMPF R5 #0024
- 0x88140104, // 000D GETMBR R5 R0 K4
- 0x8C140B05, // 000E GETMET R5 R5 K5
- 0x5C1C0200, // 000F MOVE R7 R1
- 0x88200106, // 0010 GETMBR R8 R0 K6
- 0x7C140600, // 0011 CALL R5 3
- 0x4C180000, // 0012 LDNIL R6
- 0x20180A06, // 0013 NE R6 R5 R6
- 0x781A0007, // 0014 JMPF R6 #001D
- 0x88180104, // 0015 GETMBR R6 R0 K4
- 0x8C180D07, // 0016 GETMET R6 R6 K7
- 0x50200200, // 0017 LDBOOL R8 1 0
- 0x7C180400, // 0018 CALL R6 2
- 0x8C180708, // 0019 GETMET R6 R3 K8
- 0x5C200A00, // 001A MOVE R8 R5
- 0x7C180400, // 001B CALL R6 2
- 0x80040C00, // 001C RET 1 R6
- 0x04100909, // 001D SUB R4 R4 K9
- 0xB81A1400, // 001E GETNGBL R6 K10
- 0x8C180D0B, // 001F GETMET R6 R6 K11
- 0x5820000C, // 0020 LDCONST R8 K12
- 0x5824000D, // 0021 LDCONST R9 K13
- 0x7C180600, // 0022 CALL R6 3
- 0x7001FFE6, // 0023 JMP #000B
- 0x88140104, // 0024 GETMBR R5 R0 K4
- 0x8C140B07, // 0025 GETMET R5 R5 K7
- 0x501C0000, // 0026 LDBOOL R7 0 0
- 0x7C140400, // 0027 CALL R5 2
- 0x4C140000, // 0028 LDNIL R5
- 0x80040A00, // 0029 RET 1 R5
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_value_onoff
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
-be_local_closure(class_Matter_Plugin_Bridge_HTTP_web_value_onoff, /* name */
- be_nested_proto(
- 3, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_HTTP,
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_X3Cb_X3EOn_X3C_X2Fb_X3E),
- /* K1 */ be_nested_str_weak(Off),
- /* K2 */ be_nested_str_weak(),
- }),
- be_str_weak(web_value_onoff),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x4C080000, // 0000 LDNIL R2
- 0x20080202, // 0001 NE R2 R1 R2
- 0x780A0004, // 0002 JMPF R2 #0008
- 0x78060001, // 0003 JMPF R1 #0006
- 0x58080000, // 0004 LDCONST R2 K0
- 0x70020000, // 0005 JMP #0007
- 0x58080001, // 0006 LDCONST R2 K1
- 0x70020000, // 0007 JMP #0009
- 0x58080002, // 0008 LDCONST R2 K2
- 0x80040400, // 0009 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_http_response
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
-be_local_closure(class_Matter_Plugin_Bridge_HTTP_parse_http_response, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_HTTP,
- 1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(http_remote),
- /* K2 */ be_nested_str_weak(device_is_alive),
- /* K3 */ be_nested_str_weak(device),
- /* K4 */ be_nested_str_weak(tick),
- /* K5 */ be_nested_str_weak(json),
- /* K6 */ be_nested_str_weak(load),
- /* K7 */ be_nested_str_weak(contains),
- /* K8 */ be_nested_str_weak(StatusSNS),
- /* K9 */ be_nested_str_weak(StatusSTS),
- /* K10 */ be_nested_str_weak(StatusSHT),
- /* K11 */ be_nested_str_weak(parse_update),
- }),
- be_str_weak(parse_http_response),
- &be_const_str_solidified,
- ( &(const binstruction[39]) { /* code */
- 0x24100300, // 0000 GT R4 R1 K0
- 0x78120023, // 0001 JMPF R4 #0026
- 0x88100101, // 0002 GETMBR R4 R0 K1
- 0x8C100902, // 0003 GETMET R4 R4 K2
- 0x50180200, // 0004 LDBOOL R6 1 0
- 0x7C100400, // 0005 CALL R4 2
- 0x88100103, // 0006 GETMBR R4 R0 K3
- 0x88100904, // 0007 GETMBR R4 R4 K4
- 0xA4160A00, // 0008 IMPORT R5 K5
- 0x8C180B06, // 0009 GETMET R6 R5 K6
- 0x5C200400, // 000A MOVE R8 R2
- 0x7C180400, // 000B CALL R6 2
- 0x4C1C0000, // 000C LDNIL R7
- 0x781A0017, // 000D JMPF R6 #0026
- 0x8C200D07, // 000E GETMET R8 R6 K7
- 0x58280008, // 000F LDCONST R10 K8
- 0x7C200400, // 0010 CALL R8 2
- 0x78220002, // 0011 JMPF R8 #0015
- 0x94180D08, // 0012 GETIDX R6 R6 K8
- 0x541E0007, // 0013 LDINT R7 8
- 0x7002000C, // 0014 JMP #0022
- 0x8C200D07, // 0015 GETMET R8 R6 K7
- 0x58280009, // 0016 LDCONST R10 K9
- 0x7C200400, // 0017 CALL R8 2
- 0x78220002, // 0018 JMPF R8 #001C
- 0x94180D09, // 0019 GETIDX R6 R6 K9
- 0x541E000A, // 001A LDINT R7 11
- 0x70020005, // 001B JMP #0022
- 0x8C200D07, // 001C GETMET R8 R6 K7
- 0x5828000A, // 001D LDCONST R10 K10
- 0x7C200400, // 001E CALL R8 2
- 0x78220001, // 001F JMPF R8 #0022
- 0x94180D09, // 0020 GETIDX R6 R6 K9
- 0x541E000C, // 0021 LDINT R7 13
- 0x8C20010B, // 0022 GETMET R8 R0 K11
- 0x5C280C00, // 0023 MOVE R10 R6
- 0x5C2C0E00, // 0024 MOVE R11 R7
- 0x7C200600, // 0025 CALL R8 3
- 0x80000000, // 0026 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_values
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
-be_local_closure(class_Matter_Plugin_Bridge_HTTP_web_values, /* name */
- be_nested_proto(
- 5, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_HTTP,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(web_values_prefix),
- /* K2 */ be_nested_str_weak(content_send),
- /* K3 */ be_nested_str_weak(_X26lt_X3B_X2D_X2D_X20_X28),
- /* K4 */ be_nested_str_weak(DISPLAY_NAME),
- /* K5 */ be_nested_str_weak(_X29_X20_X2D_X2D_X26gt_X3B),
- }),
- be_str_weak(web_values),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x8C080302, // 0003 GETMET R2 R1 K2
- 0x88100104, // 0004 GETMBR R4 R0 K4
- 0x00120604, // 0005 ADD R4 K3 R4
- 0x00100905, // 0006 ADD R4 R4 K5
- 0x7C080400, // 0007 CALL R2 2
- 0x80000000, // 0008 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: is_local_device
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
-be_local_closure(class_Matter_Plugin_Bridge_HTTP_is_local_device, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_HTTP,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(is_local_device),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x50040000, // 0000 LDBOOL R1 0 0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
-be_local_closure(class_Matter_Plugin_Bridge_HTTP_init, /* name */
- be_nested_proto(
- 9, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_HTTP,
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(ARG_HTTP),
- /* K3 */ be_nested_str_weak(http_remote),
- /* K4 */ be_nested_str_weak(device),
- /* K5 */ be_nested_str_weak(register_http_remote),
- /* K6 */ be_nested_str_weak(PROBE_TIMEOUT),
- /* K7 */ be_nested_str_weak(register_cmd_cb),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
- 0x60100003, // 0000 GETGBL R4 G3
- 0x5C140000, // 0001 MOVE R5 R0
- 0x7C100200, // 0002 CALL R4 1
- 0x8C100900, // 0003 GETMET R4 R4 K0
- 0x5C180200, // 0004 MOVE R6 R1
- 0x5C1C0400, // 0005 MOVE R7 R2
- 0x5C200600, // 0006 MOVE R8 R3
- 0x7C100800, // 0007 CALL R4 4
- 0x8C100701, // 0008 GETMET R4 R3 K1
- 0x88180102, // 0009 GETMBR R6 R0 K2
- 0x7C100400, // 000A CALL R4 2
- 0x88140104, // 000B GETMBR R5 R0 K4
- 0x8C140B05, // 000C GETMET R5 R5 K5
- 0x5C1C0800, // 000D MOVE R7 R4
- 0x88200106, // 000E GETMBR R8 R0 K6
- 0x7C140600, // 000F CALL R5 3
- 0x90020605, // 0010 SETMBR R0 K3 R5
- 0x8C140107, // 0011 GETMET R5 R0 K7
- 0x7C140200, // 0012 CALL R5 1
- 0x80000000, // 0013 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_update
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
-be_local_closure(class_Matter_Plugin_Bridge_HTTP_parse_update, /* name */
- be_nested_proto(
- 3, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_HTTP,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(parse_update),
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
-be_local_closure(class_Matter_Plugin_Bridge_HTTP_read_attribute, /* name */
- be_nested_proto(
- 14, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_HTTP,
- 1, /* has constants */
- ( &(const bvalue[21]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_nested_str_weak(string),
- /* K5 */ be_const_int(3),
- /* K6 */ be_nested_str_weak(http_remote),
- /* K7 */ be_nested_str_weak(get_info),
- /* K8 */ be_nested_str_weak(find),
- /* K9 */ be_nested_str_weak(name),
- /* K10 */ be_nested_str_weak(set),
- /* K11 */ be_nested_str_weak(UTF1),
- /* K12 */ be_nested_str_weak(NULL),
- /* K13 */ be_nested_str_weak(version),
- /* K14 */ be_nested_str_weak(_X28),
- /* K15 */ be_const_int(0),
- /* K16 */ be_const_int(1),
- /* K17 */ be_nested_str_weak(mac),
- /* K18 */ be_nested_str_weak(BOOL),
- /* K19 */ be_nested_str_weak(reachable),
- /* K20 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[103]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E0038, // 0004 LDINT R7 57
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0056, // 0006 JMPF R7 #005E
- 0xA41E0800, // 0007 IMPORT R7 K4
- 0x1C200D05, // 0008 EQ R8 R6 K5
- 0x78220012, // 0009 JMPF R8 #001D
- 0x88200106, // 000A GETMBR R8 R0 K6
- 0x8C201107, // 000B GETMET R8 R8 K7
- 0x7C200200, // 000C CALL R8 1
- 0x8C201108, // 000D GETMET R8 R8 K8
- 0x58280009, // 000E LDCONST R10 K9
- 0x7C200400, // 000F CALL R8 2
- 0x78220005, // 0010 JMPF R8 #0017
- 0x8C24070A, // 0011 GETMET R9 R3 K10
- 0x882C090B, // 0012 GETMBR R11 R4 K11
- 0x5C301000, // 0013 MOVE R12 R8
- 0x7C240600, // 0014 CALL R9 3
- 0x80041200, // 0015 RET 1 R9
- 0x70020004, // 0016 JMP #001C
- 0x8C24070A, // 0017 GETMET R9 R3 K10
- 0x882C090C, // 0018 GETMBR R11 R4 K12
- 0x4C300000, // 0019 LDNIL R12
- 0x7C240600, // 001A CALL R9 3
- 0x80041200, // 001B RET 1 R9
- 0x70020040, // 001C JMP #005E
- 0x54220009, // 001D LDINT R8 10
- 0x1C200C08, // 001E EQ R8 R6 R8
- 0x7822001B, // 001F JMPF R8 #003C
- 0x88200106, // 0020 GETMBR R8 R0 K6
- 0x8C201107, // 0021 GETMET R8 R8 K7
- 0x7C200200, // 0022 CALL R8 1
- 0x8C201108, // 0023 GETMET R8 R8 K8
- 0x5828000D, // 0024 LDCONST R10 K13
- 0x7C200400, // 0025 CALL R8 2
- 0x7822000E, // 0026 JMPF R8 #0036
- 0x8C240F08, // 0027 GETMET R9 R7 K8
- 0x5C2C1000, // 0028 MOVE R11 R8
- 0x5830000E, // 0029 LDCONST R12 K14
- 0x7C240600, // 002A CALL R9 3
- 0x2428130F, // 002B GT R10 R9 K15
- 0x782A0002, // 002C JMPF R10 #0030
- 0x04281310, // 002D SUB R10 R9 K16
- 0x402A1E0A, // 002E CONNECT R10 K15 R10
- 0x9420100A, // 002F GETIDX R8 R8 R10
- 0x8C28070A, // 0030 GETMET R10 R3 K10
- 0x8830090B, // 0031 GETMBR R12 R4 K11
- 0x5C341000, // 0032 MOVE R13 R8
- 0x7C280600, // 0033 CALL R10 3
- 0x80041400, // 0034 RET 1 R10
- 0x70020004, // 0035 JMP #003B
- 0x8C24070A, // 0036 GETMET R9 R3 K10
- 0x882C090C, // 0037 GETMBR R11 R4 K12
- 0x4C300000, // 0038 LDNIL R12
- 0x7C240600, // 0039 CALL R9 3
- 0x80041200, // 003A RET 1 R9
- 0x70020021, // 003B JMP #005E
- 0x5422000E, // 003C LDINT R8 15
- 0x1C200C08, // 003D EQ R8 R6 R8
- 0x74220002, // 003E JMPT R8 #0042
- 0x54220011, // 003F LDINT R8 18
- 0x1C200C08, // 0040 EQ R8 R6 R8
- 0x78220012, // 0041 JMPF R8 #0055
- 0x88200106, // 0042 GETMBR R8 R0 K6
- 0x8C201107, // 0043 GETMET R8 R8 K7
- 0x7C200200, // 0044 CALL R8 1
- 0x8C201108, // 0045 GETMET R8 R8 K8
- 0x58280011, // 0046 LDCONST R10 K17
- 0x7C200400, // 0047 CALL R8 2
- 0x78220005, // 0048 JMPF R8 #004F
- 0x8C24070A, // 0049 GETMET R9 R3 K10
- 0x882C090B, // 004A GETMBR R11 R4 K11
- 0x5C301000, // 004B MOVE R12 R8
- 0x7C240600, // 004C CALL R9 3
- 0x80041200, // 004D RET 1 R9
- 0x70020004, // 004E JMP #0054
- 0x8C24070A, // 004F GETMET R9 R3 K10
- 0x882C090C, // 0050 GETMBR R11 R4 K12
- 0x4C300000, // 0051 LDNIL R12
- 0x7C240600, // 0052 CALL R9 3
- 0x80041200, // 0053 RET 1 R9
- 0x70020008, // 0054 JMP #005E
- 0x54220010, // 0055 LDINT R8 17
- 0x1C200C08, // 0056 EQ R8 R6 R8
- 0x78220005, // 0057 JMPF R8 #005E
- 0x8C20070A, // 0058 GETMET R8 R3 K10
- 0x88280912, // 0059 GETMBR R10 R4 K18
- 0x882C0106, // 005A GETMBR R11 R0 K6
- 0x882C1713, // 005B GETMBR R11 R11 K19
- 0x7C200600, // 005C CALL R8 3
- 0x80041000, // 005D RET 1 R8
- 0x601C0003, // 005E GETGBL R7 G3
- 0x5C200000, // 005F MOVE R8 R0
- 0x7C1C0200, // 0060 CALL R7 1
- 0x8C1C0F14, // 0061 GETMET R7 R7 K20
- 0x5C240200, // 0062 MOVE R9 R1
- 0x5C280400, // 0063 MOVE R10 R2
- 0x5C2C0600, // 0064 MOVE R11 R3
- 0x7C1C0800, // 0065 CALL R7 4
- 0x80040E00, // 0066 RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_values_prefix
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
-be_local_closure(class_Matter_Plugin_Bridge_HTTP_web_values_prefix, /* name */
- be_nested_proto(
- 10, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_HTTP,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(get_name),
- /* K2 */ be_nested_str_weak(content_send),
- /* K3 */ be_nested_str_weak(PREFIX),
- /* K4 */ be_nested_str_weak(html_escape),
- /* K5 */ be_nested_str_weak(),
- }),
- be_str_weak(web_values_prefix),
- &be_const_str_solidified,
- ( &(const binstruction[15]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x8C0C0302, // 0003 GETMET R3 R1 K2
- 0x60140018, // 0004 GETGBL R5 G24
- 0x88180103, // 0005 GETMBR R6 R0 K3
- 0x780A0003, // 0006 JMPF R2 #000B
- 0x8C1C0304, // 0007 GETMET R7 R1 K4
- 0x5C240400, // 0008 MOVE R9 R2
- 0x7C1C0400, // 0009 CALL R7 2
- 0x70020000, // 000A JMP #000C
- 0x581C0005, // 000B LDCONST R7 K5
- 0x7C140400, // 000C CALL R5 2
- 0x7C0C0400, // 000D CALL R3 2
- 0x80000000, // 000E RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: register_cmd_cb
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
-be_local_closure(class_Matter_Plugin_Bridge_HTTP_register_cmd_cb, /* name */
- be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
- be_nested_proto(
- 8, /* nstack */
- 3, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(parse_http_response),
- }),
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x680C0000, // 0000 GETUPV R3 U0
- 0x8C0C0700, // 0001 GETMET R3 R3 K0
- 0x5C140000, // 0002 MOVE R5 R0
- 0x5C180200, // 0003 MOVE R6 R1
- 0x5C1C0400, // 0004 MOVE R7 R2
- 0x7C0C0800, // 0005 CALL R3 4
- 0x80040600, // 0006 RET 1 R3
- })
- ),
- &be_class_Matter_Plugin_Bridge_HTTP,
- }),
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(http_remote),
- /* K1 */ be_nested_str_weak(add_schedule),
- /* K2 */ be_nested_str_weak(UPDATE_CMD),
- /* K3 */ be_nested_str_weak(UPDATE_TIME),
- }),
- be_str_weak(register_cmd_cb),
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x880C0102, // 0002 GETMBR R3 R0 K2
- 0x88100103, // 0003 GETMBR R4 R0 K3
- 0x84140000, // 0004 CLOSURE R5 P0
- 0x7C040800, // 0005 CALL R1 4
- 0xA0000000, // 0006 CLOSE R0
- 0x80000000, // 0007 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_shadow
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
-be_local_closure(class_Matter_Plugin_Bridge_HTTP_update_shadow, /* name */
- be_nested_proto(
- 7, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_HTTP,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(tick),
- /* K1 */ be_nested_str_weak(device),
- /* K2 */ be_nested_str_weak(call_remote_sync),
- /* K3 */ be_nested_str_weak(UPDATE_CMD),
- /* K4 */ be_nested_str_weak(parse_http_response),
- /* K5 */ be_const_int(1),
- }),
- be_str_weak(update_shadow),
- &be_const_str_solidified,
- ( &(const binstruction[13]) { /* code */
- 0x88040101, // 0000 GETMBR R1 R0 K1
- 0x88040300, // 0001 GETMBR R1 R1 K0
- 0x90020001, // 0002 SETMBR R0 K0 R1
- 0x8C040102, // 0003 GETMET R1 R0 K2
- 0x880C0103, // 0004 GETMBR R3 R0 K3
- 0x7C040400, // 0005 CALL R1 2
- 0x78060004, // 0006 JMPF R1 #000C
- 0x8C080104, // 0007 GETMET R2 R0 K4
- 0x58100005, // 0008 LDCONST R4 K5
- 0x5C140200, // 0009 MOVE R5 R1
- 0x88180103, // 000A GETMBR R6 R0 K3
- 0x7C080800, // 000B CALL R2 4
- 0x80000000, // 000C RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: every_250ms
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
-be_local_closure(class_Matter_Plugin_Bridge_HTTP_every_250ms, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_HTTP,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(http_remote),
- /* K1 */ be_nested_str_weak(scheduler),
- }),
- be_str_weak(every_250ms),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x80000000, // 0003 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Bridge_HTTP
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Device;
-be_local_class(Matter_Plugin_Bridge_HTTP,
- 1,
- &be_class_Matter_Plugin_Device,
- be_nested_map(23,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X2011) },
- { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_Plugin_Bridge_HTTP_every_250ms_closure) },
- { be_const_key_weak(ARG, -1), be_nested_str_weak() },
- { be_const_key_weak(call_remote_sync, 22), be_const_closure(class_Matter_Plugin_Bridge_HTTP_call_remote_sync_closure) },
- { be_const_key_weak(web_value_onoff, -1), be_const_closure(class_Matter_Plugin_Bridge_HTTP_web_value_onoff_closure) },
- { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Bridge_HTTP_update_shadow_closure) },
- { be_const_key_weak(UPDATE_TIME, -1), be_const_int(3000) },
- { be_const_key_weak(GetOptionReader, 5), be_const_class(be_class_GetOptionReader) },
- { be_const_key_weak(parse_http_response, 21), be_const_closure(class_Matter_Plugin_Bridge_HTTP_parse_http_response_closure) },
- { be_const_key_weak(parse_update, -1), be_const_closure(class_Matter_Plugin_Bridge_HTTP_parse_update_closure) },
- { be_const_key_weak(SYNC_TIMEOUT, 18), be_const_int(500) },
- { be_const_key_weak(is_local_device, -1), be_const_closure(class_Matter_Plugin_Bridge_HTTP_is_local_device_closure) },
- { be_const_key_weak(PREFIX, 17), be_nested_str_weak(_X7C_X20_X3Ci_X3E_X25s_X3C_X2Fi_X3E_X20) },
- { be_const_key_weak(http_remote, 1), be_const_var(0) },
- { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Bridge_HTTP_init_closure) },
- { be_const_key_weak(ARG_HTTP, -1), be_nested_str_weak(url) },
- { be_const_key_weak(DISPLAY_NAME, 9), be_nested_str_weak() },
- { be_const_key_weak(web_values_prefix, 19), be_const_closure(class_Matter_Plugin_Bridge_HTTP_web_values_prefix_closure) },
- { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Bridge_HTTP_read_attribute_closure) },
- { be_const_key_weak(PROBE_TIMEOUT, -1), be_const_int(1700) },
- { be_const_key_weak(register_cmd_cb, -1), be_const_closure(class_Matter_Plugin_Bridge_HTTP_register_cmd_cb_closure) },
- { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_HTTP_web_values_closure) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak() },
- })),
- be_str_weak(Matter_Plugin_Bridge_HTTP)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h
new file mode 100644
index 000000000..f50748581
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Fan.h
@@ -0,0 +1,493 @@
+/* Solidification of Matter_Plugin_2_Fan.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+// compact class 'Matter_Plugin_Fan' ktab size: 28, total: 64 (saved 288 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Fan[28] = {
+ /* K0 */ be_const_int(0),
+ /* K1 */ be_nested_str_weak(shadow_fan_mode),
+ /* K2 */ be_nested_str_weak(attribute_updated),
+ /* K3 */ be_nested_str_weak(shadow_fan_speed_pct),
+ /* K4 */ be_const_int(3),
+ /* K5 */ be_nested_str_weak(tasmota),
+ /* K6 */ be_nested_str_weak(scale_uint),
+ /* K7 */ be_const_int(2),
+ /* K8 */ be_nested_str_weak(find),
+ /* K9 */ be_nested_str_weak(FanMode),
+ /* K10 */ be_nested_str_weak(set_fan_mode),
+ /* K11 */ be_nested_str_weak(FanSpeed255),
+ /* K12 */ be_nested_str_weak(set_fan_speed_pct),
+ /* K13 */ be_nested_str_weak(FanSpeed),
+ /* K14 */ be_const_int(1),
+ /* K15 */ be_nested_str_weak(matter),
+ /* K16 */ be_nested_str_weak(TLV),
+ /* K17 */ be_nested_str_weak(cluster),
+ /* K18 */ be_nested_str_weak(attribute),
+ /* K19 */ be_nested_str_weak(update_shadow_lazy),
+ /* K20 */ be_nested_str_weak(int),
+ /* K21 */ be_nested_str_weak(publish_command),
+ /* K22 */ be_nested_str_weak(status),
+ /* K23 */ be_nested_str_weak(CONSTRAINT_ERROR),
+ /* K24 */ be_nested_str_weak(init),
+ /* K25 */ be_nested_str_weak(set),
+ /* K26 */ be_nested_str_weak(U1),
+ /* K27 */ be_nested_str_weak(read_attribute),
+};
+
+
+extern const bclass be_class_Matter_Plugin_Fan;
+
+/********************************************************************
+** Solidified function: set_fan_mode
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Fan_set_fan_mode, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Fan, /* shared constants */
+ be_str_weak(set_fan_mode),
+ &be_const_str_solidified,
+ ( &(const binstruction[48]) { /* code */
+ 0x60080009, // 0000 GETGBL R2 G9
+ 0x5C0C0200, // 0001 MOVE R3 R1
+ 0x7C080200, // 0002 CALL R2 1
+ 0x5C040400, // 0003 MOVE R1 R2
+ 0x14080300, // 0004 LT R2 R1 K0
+ 0x780A0000, // 0005 JMPF R2 #0007
+ 0x58040000, // 0006 LDCONST R1 K0
+ 0x88080101, // 0007 GETMBR R2 R0 K1
+ 0x20080202, // 0008 NE R2 R1 R2
+ 0x780A0024, // 0009 JMPF R2 #002F
+ 0x8C080102, // 000A GETMET R2 R0 K2
+ 0x54120201, // 000B LDINT R4 514
+ 0x58140000, // 000C LDCONST R5 K0
+ 0x7C080600, // 000D CALL R2 3
+ 0x60080009, // 000E GETGBL R2 G9
+ 0x5C0C0200, // 000F MOVE R3 R1
+ 0x7C080200, // 0010 CALL R2 1
+ 0x90020202, // 0011 SETMBR R0 K1 R2
+ 0x88080103, // 0012 GETMBR R2 R0 K3
+ 0x880C0101, // 0013 GETMBR R3 R0 K1
+ 0x1C0C0700, // 0014 EQ R3 R3 K0
+ 0x780E0001, // 0015 JMPF R3 #0018
+ 0x58080000, // 0016 LDCONST R2 K0
+ 0x7002000E, // 0017 JMP #0027
+ 0x880C0101, // 0018 GETMBR R3 R0 K1
+ 0x240C0704, // 0019 GT R3 R3 K4
+ 0x780E0002, // 001A JMPF R3 #001E
+ 0x90020304, // 001B SETMBR R0 K1 K4
+ 0x540A0063, // 001C LDINT R2 100
+ 0x70020008, // 001D JMP #0027
+ 0xB80E0A00, // 001E GETNGBL R3 K5
+ 0x8C0C0706, // 001F GETMET R3 R3 K6
+ 0x5C140200, // 0020 MOVE R5 R1
+ 0x58180000, // 0021 LDCONST R6 K0
+ 0x581C0004, // 0022 LDCONST R7 K4
+ 0x58200000, // 0023 LDCONST R8 K0
+ 0x54260063, // 0024 LDINT R9 100
+ 0x7C0C0C00, // 0025 CALL R3 6
+ 0x5C080600, // 0026 MOVE R2 R3
+ 0x880C0103, // 0027 GETMBR R3 R0 K3
+ 0x200C0602, // 0028 NE R3 R3 R2
+ 0x780E0004, // 0029 JMPF R3 #002F
+ 0x90020602, // 002A SETMBR R0 K3 R2
+ 0x8C0C0102, // 002B GETMET R3 R0 K2
+ 0x54160201, // 002C LDINT R5 514
+ 0x58180007, // 002D LDCONST R6 K7
+ 0x7C0C0600, // 002E CALL R3 3
+ 0x80000000, // 002F RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: update_virtual
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Fan_update_virtual, /* name */
+ be_nested_proto(
+ 13, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Fan, /* shared constants */
+ be_str_weak(update_virtual),
+ &be_const_str_solidified,
+ ( &(const binstruction[41]) { /* code */
+ 0x8C080308, // 0000 GETMET R2 R1 K8
+ 0x58100009, // 0001 LDCONST R4 K9
+ 0x7C080400, // 0002 CALL R2 2
+ 0x4C0C0000, // 0003 LDNIL R3
+ 0x200C0403, // 0004 NE R3 R2 R3
+ 0x780E0004, // 0005 JMPF R3 #000B
+ 0x8C0C010A, // 0006 GETMET R3 R0 K10
+ 0x60140009, // 0007 GETGBL R5 G9
+ 0x5C180400, // 0008 MOVE R6 R2
+ 0x7C140200, // 0009 CALL R5 1
+ 0x7C0C0400, // 000A CALL R3 2
+ 0x8C0C0308, // 000B GETMET R3 R1 K8
+ 0x5814000B, // 000C LDCONST R5 K11
+ 0x7C0C0400, // 000D CALL R3 2
+ 0x4C100000, // 000E LDNIL R4
+ 0x20100604, // 000F NE R4 R3 R4
+ 0x7812000B, // 0010 JMPF R4 #001D
+ 0x8C10010C, // 0011 GETMET R4 R0 K12
+ 0xB81A0A00, // 0012 GETNGBL R6 K5
+ 0x8C180D06, // 0013 GETMET R6 R6 K6
+ 0x60200009, // 0014 GETGBL R8 G9
+ 0x5C240600, // 0015 MOVE R9 R3
+ 0x7C200200, // 0016 CALL R8 1
+ 0x58240000, // 0017 LDCONST R9 K0
+ 0x542A00FE, // 0018 LDINT R10 255
+ 0x582C0000, // 0019 LDCONST R11 K0
+ 0x54320063, // 001A LDINT R12 100
+ 0x7C180C00, // 001B CALL R6 6
+ 0x7C100400, // 001C CALL R4 2
+ 0x8C100308, // 001D GETMET R4 R1 K8
+ 0x5818000D, // 001E LDCONST R6 K13
+ 0x7C100400, // 001F CALL R4 2
+ 0x4C140000, // 0020 LDNIL R5
+ 0x20140805, // 0021 NE R5 R4 R5
+ 0x78160004, // 0022 JMPF R5 #0028
+ 0x8C14010C, // 0023 GETMET R5 R0 K12
+ 0x601C0009, // 0024 GETGBL R7 G9
+ 0x5C200800, // 0025 MOVE R8 R4
+ 0x7C1C0200, // 0026 CALL R7 1
+ 0x7C140400, // 0027 CALL R5 2
+ 0x80000000, // 0028 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_fan_speed_pct
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Fan_set_fan_speed_pct, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Fan, /* shared constants */
+ be_str_weak(set_fan_speed_pct),
+ &be_const_str_solidified,
+ ( &(const binstruction[42]) { /* code */
+ 0x60080009, // 0000 GETGBL R2 G9
+ 0x5C0C0200, // 0001 MOVE R3 R1
+ 0x7C080200, // 0002 CALL R2 1
+ 0x5C040400, // 0003 MOVE R1 R2
+ 0x14080300, // 0004 LT R2 R1 K0
+ 0x780A0000, // 0005 JMPF R2 #0007
+ 0x58040000, // 0006 LDCONST R1 K0
+ 0x540A0063, // 0007 LDINT R2 100
+ 0x24080202, // 0008 GT R2 R1 R2
+ 0x780A0000, // 0009 JMPF R2 #000B
+ 0x54060063, // 000A LDINT R1 100
+ 0x88080103, // 000B GETMBR R2 R0 K3
+ 0x20080202, // 000C NE R2 R1 R2
+ 0x780A001A, // 000D JMPF R2 #0029
+ 0x8C080102, // 000E GETMET R2 R0 K2
+ 0x54120201, // 000F LDINT R4 514
+ 0x58140007, // 0010 LDCONST R5 K7
+ 0x7C080600, // 0011 CALL R2 3
+ 0x90020601, // 0012 SETMBR R0 K3 R1
+ 0x88080101, // 0013 GETMBR R2 R0 K1
+ 0x1C0C0300, // 0014 EQ R3 R1 K0
+ 0x780E0001, // 0015 JMPF R3 #0018
+ 0x58080000, // 0016 LDCONST R2 K0
+ 0x70020008, // 0017 JMP #0021
+ 0xB80E0A00, // 0018 GETNGBL R3 K5
+ 0x8C0C0706, // 0019 GETMET R3 R3 K6
+ 0x5C140200, // 001A MOVE R5 R1
+ 0x5818000E, // 001B LDCONST R6 K14
+ 0x541E0063, // 001C LDINT R7 100
+ 0x5820000E, // 001D LDCONST R8 K14
+ 0x58240004, // 001E LDCONST R9 K4
+ 0x7C0C0C00, // 001F CALL R3 6
+ 0x5C080600, // 0020 MOVE R2 R3
+ 0x880C0101, // 0021 GETMBR R3 R0 K1
+ 0x200C0403, // 0022 NE R3 R2 R3
+ 0x780E0004, // 0023 JMPF R3 #0029
+ 0x90020202, // 0024 SETMBR R0 K1 R2
+ 0x8C0C0102, // 0025 GETMET R3 R0 K2
+ 0x54160201, // 0026 LDINT R5 514
+ 0x58180000, // 0027 LDCONST R6 K0
+ 0x7C0C0600, // 0028 CALL R3 3
+ 0x80000000, // 0029 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: write_attribute
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Fan_write_attribute, /* name */
+ be_nested_proto(
+ 21, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Fan, /* shared constants */
+ be_str_weak(write_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[78]) { /* code */
+ 0xB8121E00, // 0000 GETNGBL R4 K15
+ 0x88100910, // 0001 GETMBR R4 R4 K16
+ 0x88140511, // 0002 GETMBR R5 R2 K17
+ 0x88180512, // 0003 GETMBR R6 R2 K18
+ 0x541E0201, // 0004 LDINT R7 514
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E0044, // 0006 JMPF R7 #004C
+ 0x8C1C0113, // 0007 GETMET R7 R0 K19
+ 0x7C1C0200, // 0008 CALL R7 1
+ 0x1C1C0D00, // 0009 EQ R7 R6 K0
+ 0x781E001F, // 000A JMPF R7 #002B
+ 0x601C0004, // 000B GETGBL R7 G4
+ 0x5C200600, // 000C MOVE R8 R3
+ 0x7C1C0200, // 000D CALL R7 1
+ 0x1C1C0F14, // 000E EQ R7 R7 K20
+ 0x781E0014, // 000F JMPF R7 #0025
+ 0x8C1C010A, // 0010 GETMET R7 R0 K10
+ 0x5C240600, // 0011 MOVE R9 R3
+ 0x7C1C0400, // 0012 CALL R7 2
+ 0x8C1C0115, // 0013 GETMET R7 R0 K21
+ 0x58240009, // 0014 LDCONST R9 K9
+ 0x88280101, // 0015 GETMBR R10 R0 K1
+ 0x582C000D, // 0016 LDCONST R11 K13
+ 0x88300103, // 0017 GETMBR R12 R0 K3
+ 0x5834000B, // 0018 LDCONST R13 K11
+ 0xB83A0A00, // 0019 GETNGBL R14 K5
+ 0x8C381D06, // 001A GETMET R14 R14 K6
+ 0x88400103, // 001B GETMBR R16 R0 K3
+ 0x58440000, // 001C LDCONST R17 K0
+ 0x544A0063, // 001D LDINT R18 100
+ 0x584C0000, // 001E LDCONST R19 K0
+ 0x545200FE, // 001F LDINT R20 255
+ 0x7C380C00, // 0020 CALL R14 6
+ 0x7C1C0E00, // 0021 CALL R7 7
+ 0x501C0200, // 0022 LDBOOL R7 1 0
+ 0x80040E00, // 0023 RET 1 R7
+ 0x70020004, // 0024 JMP #002A
+ 0xB81E1E00, // 0025 GETNGBL R7 K15
+ 0x881C0F17, // 0026 GETMBR R7 R7 K23
+ 0x900A2C07, // 0027 SETMBR R2 K22 R7
+ 0x501C0000, // 0028 LDBOOL R7 0 0
+ 0x80040E00, // 0029 RET 1 R7
+ 0x70020020, // 002A JMP #004C
+ 0x1C1C0D07, // 002B EQ R7 R6 K7
+ 0x781E001E, // 002C JMPF R7 #004C
+ 0x601C0004, // 002D GETGBL R7 G4
+ 0x5C200600, // 002E MOVE R8 R3
+ 0x7C1C0200, // 002F CALL R7 1
+ 0x1C1C0F14, // 0030 EQ R7 R7 K20
+ 0x781E0014, // 0031 JMPF R7 #0047
+ 0x8C1C010C, // 0032 GETMET R7 R0 K12
+ 0x5C240600, // 0033 MOVE R9 R3
+ 0x7C1C0400, // 0034 CALL R7 2
+ 0x8C1C0115, // 0035 GETMET R7 R0 K21
+ 0x58240009, // 0036 LDCONST R9 K9
+ 0x88280101, // 0037 GETMBR R10 R0 K1
+ 0x582C000D, // 0038 LDCONST R11 K13
+ 0x88300103, // 0039 GETMBR R12 R0 K3
+ 0x5834000B, // 003A LDCONST R13 K11
+ 0xB83A0A00, // 003B GETNGBL R14 K5
+ 0x8C381D06, // 003C GETMET R14 R14 K6
+ 0x88400103, // 003D GETMBR R16 R0 K3
+ 0x58440000, // 003E LDCONST R17 K0
+ 0x544A0063, // 003F LDINT R18 100
+ 0x584C0000, // 0040 LDCONST R19 K0
+ 0x545200FE, // 0041 LDINT R20 255
+ 0x7C380C00, // 0042 CALL R14 6
+ 0x7C1C0E00, // 0043 CALL R7 7
+ 0x501C0200, // 0044 LDBOOL R7 1 0
+ 0x80040E00, // 0045 RET 1 R7
+ 0x70020004, // 0046 JMP #004C
+ 0xB81E1E00, // 0047 GETNGBL R7 K15
+ 0x881C0F17, // 0048 GETMBR R7 R7 K23
+ 0x900A2C07, // 0049 SETMBR R2 K22 R7
+ 0x501C0000, // 004A LDBOOL R7 0 0
+ 0x80040E00, // 004B RET 1 R7
+ 0x4C1C0000, // 004C LDNIL R7
+ 0x80040E00, // 004D RET 1 R7
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Fan_init, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Fan, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[11]) { /* code */
+ 0x60100003, // 0000 GETGBL R4 G3
+ 0x5C140000, // 0001 MOVE R5 R0
+ 0x7C100200, // 0002 CALL R4 1
+ 0x8C100918, // 0003 GETMET R4 R4 K24
+ 0x5C180200, // 0004 MOVE R6 R1
+ 0x5C1C0400, // 0005 MOVE R7 R2
+ 0x5C200600, // 0006 MOVE R8 R3
+ 0x7C100800, // 0007 CALL R4 4
+ 0x90020300, // 0008 SETMBR R0 K1 K0
+ 0x90020700, // 0009 SETMBR R0 K3 K0
+ 0x80000000, // 000A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_attribute
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Fan_read_attribute, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Fan, /* shared constants */
+ be_str_weak(read_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[49]) { /* code */
+ 0xB8121E00, // 0000 GETNGBL R4 K15
+ 0x88100910, // 0001 GETMBR R4 R4 K16
+ 0x88140511, // 0002 GETMBR R5 R2 K17
+ 0x88180512, // 0003 GETMBR R6 R2 K18
+ 0x541E0201, // 0004 LDINT R7 514
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E0020, // 0006 JMPF R7 #0028
+ 0x8C1C0113, // 0007 GETMET R7 R0 K19
+ 0x7C1C0200, // 0008 CALL R7 1
+ 0x1C1C0D00, // 0009 EQ R7 R6 K0
+ 0x781E0005, // 000A JMPF R7 #0011
+ 0x8C1C0719, // 000B GETMET R7 R3 K25
+ 0x8824091A, // 000C GETMBR R9 R4 K26
+ 0x88280101, // 000D GETMBR R10 R0 K1
+ 0x7C1C0600, // 000E CALL R7 3
+ 0x80040E00, // 000F RET 1 R7
+ 0x70020016, // 0010 JMP #0028
+ 0x1C1C0D0E, // 0011 EQ R7 R6 K14
+ 0x781E0005, // 0012 JMPF R7 #0019
+ 0x8C1C0719, // 0013 GETMET R7 R3 K25
+ 0x8824091A, // 0014 GETMBR R9 R4 K26
+ 0x58280007, // 0015 LDCONST R10 K7
+ 0x7C1C0600, // 0016 CALL R7 3
+ 0x80040E00, // 0017 RET 1 R7
+ 0x7002000E, // 0018 JMP #0028
+ 0x1C1C0D07, // 0019 EQ R7 R6 K7
+ 0x781E0005, // 001A JMPF R7 #0021
+ 0x8C1C0719, // 001B GETMET R7 R3 K25
+ 0x8824091A, // 001C GETMBR R9 R4 K26
+ 0x88280103, // 001D GETMBR R10 R0 K3
+ 0x7C1C0600, // 001E CALL R7 3
+ 0x80040E00, // 001F RET 1 R7
+ 0x70020006, // 0020 JMP #0028
+ 0x1C1C0D04, // 0021 EQ R7 R6 K4
+ 0x781E0004, // 0022 JMPF R7 #0028
+ 0x8C1C0719, // 0023 GETMET R7 R3 K25
+ 0x8824091A, // 0024 GETMBR R9 R4 K26
+ 0x88280103, // 0025 GETMBR R10 R0 K3
+ 0x7C1C0600, // 0026 CALL R7 3
+ 0x80040E00, // 0027 RET 1 R7
+ 0x601C0003, // 0028 GETGBL R7 G3
+ 0x5C200000, // 0029 MOVE R8 R0
+ 0x7C1C0200, // 002A CALL R7 1
+ 0x8C1C0F1B, // 002B GETMET R7 R7 K27
+ 0x5C240200, // 002C MOVE R9 R1
+ 0x5C280400, // 002D MOVE R10 R2
+ 0x5C2C0600, // 002E MOVE R11 R3
+ 0x7C1C0800, // 002F CALL R7 4
+ 0x80040E00, // 0030 RET 1 R7
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Fan
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Device;
+be_local_class(Matter_Plugin_Fan,
+ 2,
+ &be_class_Matter_Plugin_Device,
+ be_nested_map(13,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Fan_update_virtual_closure) },
+ { be_const_key_weak(read_attribute, 3), be_const_closure(class_Matter_Plugin_Fan_read_attribute_closure) },
+ { be_const_key_weak(TYPE, 0), be_nested_str_weak(fan) },
+ { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(3,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_nested_str_weak(FanMode),
+ be_nested_str_weak(FanSpeed),
+ be_nested_str_weak(FanSpeed255),
+ })) ) } )) },
+ { be_const_key_weak(shadow_fan_speed_pct, -1), be_const_var(1) },
+ { be_const_key_weak(set_fan_speed_pct, -1), be_const_closure(class_Matter_Plugin_Fan_set_fan_speed_pct_closure) },
+ { be_const_key_weak(shadow_fan_mode, 8), be_const_var(0) },
+ { be_const_key_weak(write_attribute, -1), be_const_closure(class_Matter_Plugin_Fan_write_attribute_closure) },
+ { be_const_key_weak(init, 9), be_const_closure(class_Matter_Plugin_Fan_init_closure) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Fan) },
+ { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(6,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(3, 2), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(514, 1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(29, 0), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
+ })) ) } )) },
+ { be_const_key_weak(set_fan_mode, 1), be_const_closure(class_Matter_Plugin_Fan_set_fan_mode_closure) },
+ { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(1,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(43, -1), be_const_int(2) },
+ })) ) } )) },
+ })),
+ be_str_weak(Matter_Plugin_Fan)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h
new file mode 100644
index 000000000..5f255c9a3
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light0.h
@@ -0,0 +1,652 @@
+/* Solidification of Matter_Plugin_2_Light0.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+// compact class 'Matter_Plugin_Light0' ktab size: 47, total: 87 (saved 320 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Light0[47] = {
+ /* K0 */ be_nested_str_weak(BRIDGE),
+ /* K1 */ be_nested_str_weak(call_remote_sync),
+ /* K2 */ be_nested_str_weak(Power),
+ /* K3 */ be_nested_str_weak(tasmota_relay_index),
+ /* K4 */ be_nested_str_weak(1),
+ /* K5 */ be_nested_str_weak(0),
+ /* K6 */ be_nested_str_weak(parse_status),
+ /* K7 */ be_nested_str_weak(VIRTUAL),
+ /* K8 */ be_nested_str_weak(shadow_onoff),
+ /* K9 */ be_nested_str_weak(attribute_updated),
+ /* K10 */ be_const_int(0),
+ /* K11 */ be_nested_str_weak(tasmota),
+ /* K12 */ be_nested_str_weak(set_power),
+ /* K13 */ be_const_int(1),
+ /* K14 */ be_nested_str_weak(update_shadow),
+ /* K15 */ be_nested_str_weak(light),
+ /* K16 */ be_nested_str_weak(set),
+ /* K17 */ be_nested_str_weak(power),
+ /* K18 */ be_nested_str_weak(light_index),
+ /* K19 */ be_nested_str_weak(webserver),
+ /* K20 */ be_nested_str_weak(web_values_prefix),
+ /* K21 */ be_nested_str_weak(content_send),
+ /* K22 */ be_nested_str_weak(_X25s),
+ /* K23 */ be_nested_str_weak(web_value_onoff),
+ /* K24 */ be_nested_str_weak(init),
+ /* K25 */ be_nested_str_weak(find),
+ /* K26 */ be_nested_str_weak(ARG),
+ /* K27 */ be_nested_str_weak(set_onoff),
+ /* K28 */ be_nested_str_weak(update_virtual),
+ /* K29 */ be_nested_str_weak(matter),
+ /* K30 */ be_nested_str_weak(TLV),
+ /* K31 */ be_nested_str_weak(cluster),
+ /* K32 */ be_nested_str_weak(attribute),
+ /* K33 */ be_nested_str_weak(update_shadow_lazy),
+ /* K34 */ be_nested_str_weak(BOOL),
+ /* K35 */ be_nested_str_weak(read_attribute),
+ /* K36 */ be_nested_str_weak(get_name),
+ /* K37 */ be_nested_str_weak(PREFIX),
+ /* K38 */ be_nested_str_weak(html_escape),
+ /* K39 */ be_nested_str_weak(),
+ /* K40 */ be_nested_str_weak(get_power),
+ /* K41 */ be_nested_str_weak(command),
+ /* K42 */ be_nested_str_weak(publish_command),
+ /* K43 */ be_const_int(2),
+ /* K44 */ be_nested_str_weak(contains),
+ /* K45 */ be_nested_str_weak(POWER),
+ /* K46 */ be_nested_str_weak(ON),
+};
+
+
+extern const bclass be_class_Matter_Plugin_Light0;
+
+/********************************************************************
+** Solidified function: set_onoff
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light0_set_onoff, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light0, /* shared constants */
+ be_str_weak(set_onoff),
+ &be_const_str_solidified,
+ ( &(const binstruction[56]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x780A0011, // 0001 JMPF R2 #0014
+ 0x8C080101, // 0002 GETMET R2 R0 K1
+ 0x60100008, // 0003 GETGBL R4 G8
+ 0x88140103, // 0004 GETMBR R5 R0 K3
+ 0x7C100200, // 0005 CALL R4 1
+ 0x00120404, // 0006 ADD R4 K2 R4
+ 0x78060001, // 0007 JMPF R1 #000A
+ 0x58140004, // 0008 LDCONST R5 K4
+ 0x70020000, // 0009 JMP #000B
+ 0x58140005, // 000A LDCONST R5 K5
+ 0x7C080600, // 000B CALL R2 3
+ 0x4C0C0000, // 000C LDNIL R3
+ 0x200C0403, // 000D NE R3 R2 R3
+ 0x780E0003, // 000E JMPF R3 #0013
+ 0x8C0C0106, // 000F GETMET R3 R0 K6
+ 0x5C140400, // 0010 MOVE R5 R2
+ 0x541A000A, // 0011 LDINT R6 11
+ 0x7C0C0600, // 0012 CALL R3 3
+ 0x70020022, // 0013 JMP #0037
+ 0x88080107, // 0014 GETMBR R2 R0 K7
+ 0x780A0008, // 0015 JMPF R2 #001F
+ 0x88080108, // 0016 GETMBR R2 R0 K8
+ 0x20080202, // 0017 NE R2 R1 R2
+ 0x780A0004, // 0018 JMPF R2 #001E
+ 0x8C080109, // 0019 GETMET R2 R0 K9
+ 0x54120005, // 001A LDINT R4 6
+ 0x5814000A, // 001B LDCONST R5 K10
+ 0x7C080600, // 001C CALL R2 3
+ 0x90021001, // 001D SETMBR R0 K8 R1
+ 0x70020017, // 001E JMP #0037
+ 0x88080103, // 001F GETMBR R2 R0 K3
+ 0x4C0C0000, // 0020 LDNIL R3
+ 0x20080403, // 0021 NE R2 R2 R3
+ 0x780A000A, // 0022 JMPF R2 #002E
+ 0xB80A1600, // 0023 GETNGBL R2 K11
+ 0x8C08050C, // 0024 GETMET R2 R2 K12
+ 0x88100103, // 0025 GETMBR R4 R0 K3
+ 0x0410090D, // 0026 SUB R4 R4 K13
+ 0x60140017, // 0027 GETGBL R5 G23
+ 0x5C180200, // 0028 MOVE R6 R1
+ 0x7C140200, // 0029 CALL R5 1
+ 0x7C080600, // 002A CALL R2 3
+ 0x8C08010E, // 002B GETMET R2 R0 K14
+ 0x7C080200, // 002C CALL R2 1
+ 0x70020008, // 002D JMP #0037
+ 0xA40A1E00, // 002E IMPORT R2 K15
+ 0x8C0C0510, // 002F GETMET R3 R2 K16
+ 0x60140013, // 0030 GETGBL R5 G19
+ 0x7C140000, // 0031 CALL R5 0
+ 0x98162201, // 0032 SETIDX R5 K17 R1
+ 0x88180112, // 0033 GETMBR R6 R0 K18
+ 0x7C0C0600, // 0034 CALL R3 3
+ 0x8C0C010E, // 0035 GETMET R3 R0 K14
+ 0x7C0C0200, // 0036 CALL R3 1
+ 0x80000000, // 0037 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_values
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light0_web_values, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light0, /* shared constants */
+ be_str_weak(web_values),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0xA4062600, // 0000 IMPORT R1 K19
+ 0x8C080114, // 0001 GETMET R2 R0 K20
+ 0x7C080200, // 0002 CALL R2 1
+ 0x8C080315, // 0003 GETMET R2 R1 K21
+ 0x60100018, // 0004 GETGBL R4 G24
+ 0x58140016, // 0005 LDCONST R5 K22
+ 0x8C180117, // 0006 GETMET R6 R0 K23
+ 0x88200108, // 0007 GETMBR R8 R0 K8
+ 0x7C180400, // 0008 CALL R6 2
+ 0x7C100400, // 0009 CALL R4 2
+ 0x7C080400, // 000A CALL R2 2
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light0_init, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light0, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0x50100000, // 0000 LDBOOL R4 0 0
+ 0x90021004, // 0001 SETMBR R0 K8 R4
+ 0x9002250A, // 0002 SETMBR R0 K18 K10
+ 0x60100003, // 0003 GETGBL R4 G3
+ 0x5C140000, // 0004 MOVE R5 R0
+ 0x7C100200, // 0005 CALL R4 1
+ 0x8C100918, // 0006 GETMET R4 R4 K24
+ 0x5C180200, // 0007 MOVE R6 R1
+ 0x5C1C0400, // 0008 MOVE R7 R2
+ 0x5C200600, // 0009 MOVE R8 R3
+ 0x7C100800, // 000A CALL R4 4
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_configuration
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light0_parse_configuration, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light0, /* shared constants */
+ be_str_weak(parse_configuration),
+ &be_const_str_solidified,
+ ( &(const binstruction[16]) { /* code */
+ 0x60080009, // 0000 GETGBL R2 G9
+ 0x8C0C0319, // 0001 GETMET R3 R1 K25
+ 0x8814011A, // 0002 GETMBR R5 R0 K26
+ 0x4C180000, // 0003 LDNIL R6
+ 0x7C0C0600, // 0004 CALL R3 3
+ 0x7C080200, // 0005 CALL R2 1
+ 0x90020602, // 0006 SETMBR R0 K3 R2
+ 0x88080103, // 0007 GETMBR R2 R0 K3
+ 0x4C0C0000, // 0008 LDNIL R3
+ 0x20080403, // 0009 NE R2 R2 R3
+ 0x780A0003, // 000A JMPF R2 #000F
+ 0x88080103, // 000B GETMBR R2 R0 K3
+ 0x1808050A, // 000C LE R2 R2 K10
+ 0x780A0000, // 000D JMPF R2 #000F
+ 0x9002070D, // 000E SETMBR R0 K3 K13
+ 0x80000000, // 000F RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: update_virtual
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light0_update_virtual, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light0, /* shared constants */
+ be_str_weak(update_virtual),
+ &be_const_str_solidified,
+ ( &(const binstruction[18]) { /* code */
+ 0x8C080319, // 0000 GETMET R2 R1 K25
+ 0x58100002, // 0001 LDCONST R4 K2
+ 0x7C080400, // 0002 CALL R2 2
+ 0x4C0C0000, // 0003 LDNIL R3
+ 0x200C0403, // 0004 NE R3 R2 R3
+ 0x780E0004, // 0005 JMPF R3 #000B
+ 0x8C0C011B, // 0006 GETMET R3 R0 K27
+ 0x60140017, // 0007 GETGBL R5 G23
+ 0x5C180400, // 0008 MOVE R6 R2
+ 0x7C140200, // 0009 CALL R5 1
+ 0x7C0C0400, // 000A CALL R3 2
+ 0x600C0003, // 000B GETGBL R3 G3
+ 0x5C100000, // 000C MOVE R4 R0
+ 0x7C0C0200, // 000D CALL R3 1
+ 0x8C0C071C, // 000E GETMET R3 R3 K28
+ 0x5C140200, // 000F MOVE R5 R1
+ 0x7C0C0400, // 0010 CALL R3 2
+ 0x80000000, // 0011 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_attribute
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light0_read_attribute, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light0, /* shared constants */
+ be_str_weak(read_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[25]) { /* code */
+ 0xB8123A00, // 0000 GETNGBL R4 K29
+ 0x8810091E, // 0001 GETMBR R4 R4 K30
+ 0x8814051F, // 0002 GETMBR R5 R2 K31
+ 0x88180520, // 0003 GETMBR R6 R2 K32
+ 0x541E0005, // 0004 LDINT R7 6
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E0008, // 0006 JMPF R7 #0010
+ 0x8C1C0121, // 0007 GETMET R7 R0 K33
+ 0x7C1C0200, // 0008 CALL R7 1
+ 0x1C1C0D0A, // 0009 EQ R7 R6 K10
+ 0x781E0004, // 000A JMPF R7 #0010
+ 0x8C1C0710, // 000B GETMET R7 R3 K16
+ 0x88240922, // 000C GETMBR R9 R4 K34
+ 0x88280108, // 000D GETMBR R10 R0 K8
+ 0x7C1C0600, // 000E CALL R7 3
+ 0x80040E00, // 000F RET 1 R7
+ 0x601C0003, // 0010 GETGBL R7 G3
+ 0x5C200000, // 0011 MOVE R8 R0
+ 0x7C1C0200, // 0012 CALL R7 1
+ 0x8C1C0F23, // 0013 GETMET R7 R7 K35
+ 0x5C240200, // 0014 MOVE R9 R1
+ 0x5C280400, // 0015 MOVE R10 R2
+ 0x5C2C0600, // 0016 MOVE R11 R3
+ 0x7C1C0800, // 0017 CALL R7 4
+ 0x80040E00, // 0018 RET 1 R7
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_values_prefix
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light0_web_values_prefix, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light0, /* shared constants */
+ be_str_weak(web_values_prefix),
+ &be_const_str_solidified,
+ ( &(const binstruction[22]) { /* code */
+ 0xA4062600, // 0000 IMPORT R1 K19
+ 0x8C080124, // 0001 GETMET R2 R0 K36
+ 0x7C080200, // 0002 CALL R2 1
+ 0x5C0C0400, // 0003 MOVE R3 R2
+ 0x740E0004, // 0004 JMPT R3 #000A
+ 0x600C0008, // 0005 GETGBL R3 G8
+ 0x88100103, // 0006 GETMBR R4 R0 K3
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0x000E0403, // 0008 ADD R3 K2 R3
+ 0x5C080600, // 0009 MOVE R2 R3
+ 0x8C0C0315, // 000A GETMET R3 R1 K21
+ 0x60140018, // 000B GETGBL R5 G24
+ 0x88180125, // 000C GETMBR R6 R0 K37
+ 0x780A0003, // 000D JMPF R2 #0012
+ 0x8C1C0326, // 000E GETMET R7 R1 K38
+ 0x5C240400, // 000F MOVE R9 R2
+ 0x7C1C0400, // 0010 CALL R7 2
+ 0x70020000, // 0011 JMP #0013
+ 0x581C0027, // 0012 LDCONST R7 K39
+ 0x7C140400, // 0013 CALL R5 2
+ 0x7C0C0400, // 0014 CALL R3 2
+ 0x80000000, // 0015 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function:
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light0__X3Clambda_X3E, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 8, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light0, /* shared constants */
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x60040009, // 0000 GETGBL R1 G9
+ 0x5C080000, // 0001 MOVE R2 R0
+ 0x7C040200, // 0002 CALL R1 1
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: update_shadow
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light0_update_shadow, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light0, /* shared constants */
+ be_str_weak(update_shadow),
+ &be_const_str_solidified,
+ ( &(const binstruction[33]) { /* code */
+ 0x88040107, // 0000 GETMBR R1 R0 K7
+ 0x74060018, // 0001 JMPT R1 #001B
+ 0x88040100, // 0002 GETMBR R1 R0 K0
+ 0x74060016, // 0003 JMPT R1 #001B
+ 0x88040103, // 0004 GETMBR R1 R0 K3
+ 0x4C080000, // 0005 LDNIL R2
+ 0x20040202, // 0006 NE R1 R1 R2
+ 0x78060012, // 0007 JMPF R1 #001B
+ 0xB8061600, // 0008 GETNGBL R1 K11
+ 0x8C040328, // 0009 GETMET R1 R1 K40
+ 0x880C0103, // 000A GETMBR R3 R0 K3
+ 0x040C070D, // 000B SUB R3 R3 K13
+ 0x7C040400, // 000C CALL R1 2
+ 0x4C080000, // 000D LDNIL R2
+ 0x20080202, // 000E NE R2 R1 R2
+ 0x780A000A, // 000F JMPF R2 #001B
+ 0x88080108, // 0010 GETMBR R2 R0 K8
+ 0x600C0017, // 0011 GETGBL R3 G23
+ 0x5C100200, // 0012 MOVE R4 R1
+ 0x7C0C0200, // 0013 CALL R3 1
+ 0x20080403, // 0014 NE R2 R2 R3
+ 0x780A0003, // 0015 JMPF R2 #001A
+ 0x8C080109, // 0016 GETMET R2 R0 K9
+ 0x54120005, // 0017 LDINT R4 6
+ 0x5814000A, // 0018 LDCONST R5 K10
+ 0x7C080600, // 0019 CALL R2 3
+ 0x90021001, // 001A SETMBR R0 K8 R1
+ 0x60040003, // 001B GETGBL R1 G3
+ 0x5C080000, // 001C MOVE R2 R0
+ 0x7C040200, // 001D CALL R1 1
+ 0x8C04030E, // 001E GETMET R1 R1 K14
+ 0x7C040200, // 001F CALL R1 1
+ 0x80000000, // 0020 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: invoke_request
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light0_invoke_request, /* name */
+ be_nested_proto(
+ 11, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light0, /* shared constants */
+ be_str_weak(invoke_request),
+ &be_const_str_solidified,
+ ( &(const binstruction[52]) { /* code */
+ 0xB8123A00, // 0000 GETNGBL R4 K29
+ 0x8810091E, // 0001 GETMBR R4 R4 K30
+ 0x8814071F, // 0002 GETMBR R5 R3 K31
+ 0x88180729, // 0003 GETMBR R6 R3 K41
+ 0x541E0005, // 0004 LDINT R7 6
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E002B, // 0006 JMPF R7 #0033
+ 0x8C1C0121, // 0007 GETMET R7 R0 K33
+ 0x7C1C0200, // 0008 CALL R7 1
+ 0x1C1C0D0A, // 0009 EQ R7 R6 K10
+ 0x781E0009, // 000A JMPF R7 #0015
+ 0x8C1C011B, // 000B GETMET R7 R0 K27
+ 0x50240000, // 000C LDBOOL R9 0 0
+ 0x7C1C0400, // 000D CALL R7 2
+ 0x8C1C012A, // 000E GETMET R7 R0 K42
+ 0x58240002, // 000F LDCONST R9 K2
+ 0x5828000A, // 0010 LDCONST R10 K10
+ 0x7C1C0600, // 0011 CALL R7 3
+ 0x501C0200, // 0012 LDBOOL R7 1 0
+ 0x80040E00, // 0013 RET 1 R7
+ 0x7002001D, // 0014 JMP #0033
+ 0x1C1C0D0D, // 0015 EQ R7 R6 K13
+ 0x781E0009, // 0016 JMPF R7 #0021
+ 0x8C1C011B, // 0017 GETMET R7 R0 K27
+ 0x50240200, // 0018 LDBOOL R9 1 0
+ 0x7C1C0400, // 0019 CALL R7 2
+ 0x8C1C012A, // 001A GETMET R7 R0 K42
+ 0x58240002, // 001B LDCONST R9 K2
+ 0x5828000D, // 001C LDCONST R10 K13
+ 0x7C1C0600, // 001D CALL R7 3
+ 0x501C0200, // 001E LDBOOL R7 1 0
+ 0x80040E00, // 001F RET 1 R7
+ 0x70020011, // 0020 JMP #0033
+ 0x1C1C0D2B, // 0021 EQ R7 R6 K43
+ 0x781E000F, // 0022 JMPF R7 #0033
+ 0x8C1C011B, // 0023 GETMET R7 R0 K27
+ 0x88240108, // 0024 GETMBR R9 R0 K8
+ 0x78260000, // 0025 JMPF R9 #0027
+ 0x50240001, // 0026 LDBOOL R9 0 1
+ 0x50240200, // 0027 LDBOOL R9 1 0
+ 0x7C1C0400, // 0028 CALL R7 2
+ 0x8C1C012A, // 0029 GETMET R7 R0 K42
+ 0x58240002, // 002A LDCONST R9 K2
+ 0x88280108, // 002B GETMBR R10 R0 K8
+ 0x782A0001, // 002C JMPF R10 #002F
+ 0x5828000D, // 002D LDCONST R10 K13
+ 0x70020000, // 002E JMP #0030
+ 0x5828000A, // 002F LDCONST R10 K10
+ 0x7C1C0600, // 0030 CALL R7 3
+ 0x501C0200, // 0031 LDBOOL R7 1 0
+ 0x80040E00, // 0032 RET 1 R7
+ 0x80000000, // 0033 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_status
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light0_parse_status, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light0, /* shared constants */
+ be_str_weak(parse_status),
+ &be_const_str_solidified,
+ ( &(const binstruction[37]) { /* code */
+ 0x540E000A, // 0000 LDINT R3 11
+ 0x1C0C0403, // 0001 EQ R3 R2 R3
+ 0x780E0020, // 0002 JMPF R3 #0024
+ 0x500C0000, // 0003 LDBOOL R3 0 0
+ 0x88100103, // 0004 GETMBR R4 R0 K3
+ 0x1C10090D, // 0005 EQ R4 R4 K13
+ 0x78120009, // 0006 JMPF R4 #0011
+ 0x8C10032C, // 0007 GETMET R4 R1 K44
+ 0x5818002D, // 0008 LDCONST R6 K45
+ 0x7C100400, // 0009 CALL R4 2
+ 0x78120005, // 000A JMPF R4 #0011
+ 0x8C100319, // 000B GETMET R4 R1 K25
+ 0x5818002D, // 000C LDCONST R6 K45
+ 0x7C100400, // 000D CALL R4 2
+ 0x1C10092E, // 000E EQ R4 R4 K46
+ 0x5C0C0800, // 000F MOVE R3 R4
+ 0x70020007, // 0010 JMP #0019
+ 0x8C100319, // 0011 GETMET R4 R1 K25
+ 0x60180008, // 0012 GETGBL R6 G8
+ 0x881C0103, // 0013 GETMBR R7 R0 K3
+ 0x7C180200, // 0014 CALL R6 1
+ 0x001A5A06, // 0015 ADD R6 K45 R6
+ 0x7C100400, // 0016 CALL R4 2
+ 0x1C10092E, // 0017 EQ R4 R4 K46
+ 0x5C0C0800, // 0018 MOVE R3 R4
+ 0x88100108, // 0019 GETMBR R4 R0 K8
+ 0x60140017, // 001A GETGBL R5 G23
+ 0x5C180600, // 001B MOVE R6 R3
+ 0x7C140200, // 001C CALL R5 1
+ 0x20100805, // 001D NE R4 R4 R5
+ 0x78120004, // 001E JMPF R4 #0024
+ 0x8C100109, // 001F GETMET R4 R0 K9
+ 0x541A0005, // 0020 LDINT R6 6
+ 0x581C000A, // 0021 LDCONST R7 K10
+ 0x7C100600, // 0022 CALL R4 3
+ 0x90021003, // 0023 SETMBR R0 K8 R3
+ 0x80000000, // 0024 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Light0
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Device;
+be_local_class(Matter_Plugin_Light0,
+ 3,
+ &be_class_Matter_Plugin_Device,
+ be_nested_map(22,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(parse_status, 8), be_const_closure(class_Matter_Plugin_Light0_parse_status_closure) },
+ { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Relay_X3Cx_X3E_X20number) },
+ { be_const_key_weak(light_index, -1), be_const_var(1) },
+ { be_const_key_weak(UPDATE_TIME, -1), be_const_int(250) },
+ { be_const_key_weak(set_onoff, 18), be_const_closure(class_Matter_Plugin_Light0_set_onoff_closure) },
+ { be_const_key_weak(tasmota_relay_index, -1), be_const_var(0) },
+ { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(6,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(6, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(3, 2), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(29, 1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
+ })) ) } )) },
+ { be_const_key_weak(ARG, -1), be_nested_str_weak(relay) },
+ { be_const_key_weak(invoke_request, 10), be_const_closure(class_Matter_Plugin_Light0_invoke_request_closure) },
+ { be_const_key_weak(init, 5), be_const_closure(class_Matter_Plugin_Light0_init_closure) },
+ { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(1,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_nested_str_weak(Power),
+ })) ) } )) },
+ { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Light0_read_attribute_closure) },
+ { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Light0_update_virtual_closure) },
+ { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Light0_web_values_prefix_closure) },
+ { be_const_key_weak(shadow_onoff, 11), be_const_var(2) },
+ { be_const_key_weak(TYPE, 13), be_nested_str_weak(light0) },
+ { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Light0__X3Clambda_X3E_closure) },
+ { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Light0_update_shadow_closure) },
+ { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(1,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(256, -1), be_const_int(2) },
+ })) ) } )) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X200_X20On) },
+ { be_const_key_weak(web_values, 3), be_const_closure(class_Matter_Plugin_Light0_web_values_closure) },
+ { be_const_key_weak(parse_configuration, 0), be_const_closure(class_Matter_Plugin_Light0_parse_configuration_closure) },
+ })),
+ be_str_weak(Matter_Plugin_Light0)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light1.h
deleted file mode 100644
index 0eba3d7fe..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Light1.h
+++ /dev/null
@@ -1,817 +0,0 @@
-/* Solidification of Matter_Plugin_2_Light1.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_Light1;
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light1;
-be_local_closure(class_Matter_Plugin_Light1_init, /* name */
- be_nested_proto(
- 9, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Light1,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(shadow_onoff),
- /* K2 */ be_nested_str_weak(shadow_bri),
- /* K3 */ be_const_int(0),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x60100003, // 0000 GETGBL R4 G3
- 0x5C140000, // 0001 MOVE R5 R0
- 0x7C100200, // 0002 CALL R4 1
- 0x8C100900, // 0003 GETMET R4 R4 K0
- 0x5C180200, // 0004 MOVE R6 R1
- 0x5C1C0400, // 0005 MOVE R7 R2
- 0x5C200600, // 0006 MOVE R8 R3
- 0x7C100800, // 0007 CALL R4 4
- 0x50100000, // 0008 LDBOOL R4 0 0
- 0x90020204, // 0009 SETMBR R0 K1 R4
- 0x90020503, // 000A SETMBR R0 K2 K3
- 0x80000000, // 000B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: invoke_request
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light1;
-be_local_closure(class_Matter_Plugin_Light1_invoke_request, /* name */
- be_nested_proto(
- 22, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Light1,
- 1, /* has constants */
- ( &(const bvalue[23]) { /* constants */
- /* K0 */ be_nested_str_weak(light),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(TLV),
- /* K3 */ be_nested_str_weak(cluster),
- /* K4 */ be_nested_str_weak(command),
- /* K5 */ be_nested_str_weak(update_shadow_lazy),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(set_onoff),
- /* K8 */ be_nested_str_weak(publish_command),
- /* K9 */ be_nested_str_weak(Power),
- /* K10 */ be_const_int(1),
- /* K11 */ be_const_int(2),
- /* K12 */ be_nested_str_weak(shadow_onoff),
- /* K13 */ be_nested_str_weak(findsubval),
- /* K14 */ be_nested_str_weak(set_bri),
- /* K15 */ be_nested_str_weak(log),
- /* K16 */ be_nested_str_weak(bri_X3A),
- /* K17 */ be_nested_str_weak(Bri),
- /* K18 */ be_nested_str_weak(Dimmer),
- /* K19 */ be_nested_str_weak(tasmota),
- /* K20 */ be_nested_str_weak(scale_uint),
- /* K21 */ be_const_int(3),
- /* K22 */ be_nested_str_weak(invoke_request),
- }),
- be_str_weak(invoke_request),
- &be_const_str_solidified,
- ( &(const binstruction[167]) { /* code */
- 0xA4120000, // 0000 IMPORT R4 K0
- 0xB8160200, // 0001 GETNGBL R5 K1
- 0x88140B02, // 0002 GETMBR R5 R5 K2
- 0x88180703, // 0003 GETMBR R6 R3 K3
- 0x881C0704, // 0004 GETMBR R7 R3 K4
- 0x54220005, // 0005 LDINT R8 6
- 0x1C200C08, // 0006 EQ R8 R6 R8
- 0x7822002C, // 0007 JMPF R8 #0035
- 0x8C200105, // 0008 GETMET R8 R0 K5
- 0x7C200200, // 0009 CALL R8 1
- 0x1C200F06, // 000A EQ R8 R7 K6
- 0x78220009, // 000B JMPF R8 #0016
- 0x8C200107, // 000C GETMET R8 R0 K7
- 0x50280000, // 000D LDBOOL R10 0 0
- 0x7C200400, // 000E CALL R8 2
- 0x8C200108, // 000F GETMET R8 R0 K8
- 0x58280009, // 0010 LDCONST R10 K9
- 0x582C0006, // 0011 LDCONST R11 K6
- 0x7C200600, // 0012 CALL R8 3
- 0x50200200, // 0013 LDBOOL R8 1 0
- 0x80041000, // 0014 RET 1 R8
- 0x7002001D, // 0015 JMP #0034
- 0x1C200F0A, // 0016 EQ R8 R7 K10
- 0x78220009, // 0017 JMPF R8 #0022
- 0x8C200107, // 0018 GETMET R8 R0 K7
- 0x50280200, // 0019 LDBOOL R10 1 0
- 0x7C200400, // 001A CALL R8 2
- 0x8C200108, // 001B GETMET R8 R0 K8
- 0x58280009, // 001C LDCONST R10 K9
- 0x582C000A, // 001D LDCONST R11 K10
- 0x7C200600, // 001E CALL R8 3
- 0x50200200, // 001F LDBOOL R8 1 0
- 0x80041000, // 0020 RET 1 R8
- 0x70020011, // 0021 JMP #0034
- 0x1C200F0B, // 0022 EQ R8 R7 K11
- 0x7822000F, // 0023 JMPF R8 #0034
- 0x8C200107, // 0024 GETMET R8 R0 K7
- 0x8828010C, // 0025 GETMBR R10 R0 K12
- 0x782A0000, // 0026 JMPF R10 #0028
- 0x50280001, // 0027 LDBOOL R10 0 1
- 0x50280200, // 0028 LDBOOL R10 1 0
- 0x7C200400, // 0029 CALL R8 2
- 0x8C200108, // 002A GETMET R8 R0 K8
- 0x58280009, // 002B LDCONST R10 K9
- 0x882C010C, // 002C GETMBR R11 R0 K12
- 0x782E0001, // 002D JMPF R11 #0030
- 0x582C000A, // 002E LDCONST R11 K10
- 0x70020000, // 002F JMP #0031
- 0x582C0006, // 0030 LDCONST R11 K6
- 0x7C200600, // 0031 CALL R8 3
- 0x50200200, // 0032 LDBOOL R8 1 0
- 0x80041000, // 0033 RET 1 R8
- 0x70020070, // 0034 JMP #00A6
- 0x54220007, // 0035 LDINT R8 8
- 0x1C200C08, // 0036 EQ R8 R6 R8
- 0x78220064, // 0037 JMPF R8 #009D
- 0x8C200105, // 0038 GETMET R8 R0 K5
- 0x7C200200, // 0039 CALL R8 1
- 0x1C200F06, // 003A EQ R8 R7 K6
- 0x7822001A, // 003B JMPF R8 #0057
- 0x8C20050D, // 003C GETMET R8 R2 K13
- 0x58280006, // 003D LDCONST R10 K6
- 0x7C200400, // 003E CALL R8 2
- 0x8C24010E, // 003F GETMET R9 R0 K14
- 0x5C2C1000, // 0040 MOVE R11 R8
- 0x7C240400, // 0041 CALL R9 2
- 0x60240008, // 0042 GETGBL R9 G8
- 0x5C281000, // 0043 MOVE R10 R8
- 0x7C240200, // 0044 CALL R9 1
- 0x00262009, // 0045 ADD R9 K16 R9
- 0x900E1E09, // 0046 SETMBR R3 K15 R9
- 0x8C240108, // 0047 GETMET R9 R0 K8
- 0x582C0011, // 0048 LDCONST R11 K17
- 0x5C301000, // 0049 MOVE R12 R8
- 0x58340012, // 004A LDCONST R13 K18
- 0xB83A2600, // 004B GETNGBL R14 K19
- 0x8C381D14, // 004C GETMET R14 R14 K20
- 0x5C401000, // 004D MOVE R16 R8
- 0x58440006, // 004E LDCONST R17 K6
- 0x544A00FD, // 004F LDINT R18 254
- 0x584C0006, // 0050 LDCONST R19 K6
- 0x54520063, // 0051 LDINT R20 100
- 0x7C380C00, // 0052 CALL R14 6
- 0x7C240A00, // 0053 CALL R9 5
- 0x50240200, // 0054 LDBOOL R9 1 0
- 0x80041200, // 0055 RET 1 R9
- 0x70020044, // 0056 JMP #009C
- 0x1C200F0A, // 0057 EQ R8 R7 K10
- 0x78220002, // 0058 JMPF R8 #005C
- 0x50200200, // 0059 LDBOOL R8 1 0
- 0x80041000, // 005A RET 1 R8
- 0x7002003F, // 005B JMP #009C
- 0x1C200F0B, // 005C EQ R8 R7 K11
- 0x78220002, // 005D JMPF R8 #0061
- 0x50200200, // 005E LDBOOL R8 1 0
- 0x80041000, // 005F RET 1 R8
- 0x7002003A, // 0060 JMP #009C
- 0x1C200F15, // 0061 EQ R8 R7 K21
- 0x78220002, // 0062 JMPF R8 #0066
- 0x50200200, // 0063 LDBOOL R8 1 0
- 0x80041000, // 0064 RET 1 R8
- 0x70020035, // 0065 JMP #009C
- 0x54220003, // 0066 LDINT R8 4
- 0x1C200E08, // 0067 EQ R8 R7 R8
- 0x78220021, // 0068 JMPF R8 #008B
- 0x8C20050D, // 0069 GETMET R8 R2 K13
- 0x58280006, // 006A LDCONST R10 K6
- 0x7C200400, // 006B CALL R8 2
- 0x24241106, // 006C GT R9 R8 K6
- 0x8C28010E, // 006D GETMET R10 R0 K14
- 0x5C301000, // 006E MOVE R12 R8
- 0x5C341200, // 006F MOVE R13 R9
- 0x7C280600, // 0070 CALL R10 3
- 0x60280008, // 0071 GETGBL R10 G8
- 0x5C2C1000, // 0072 MOVE R11 R8
- 0x7C280200, // 0073 CALL R10 1
- 0x002A200A, // 0074 ADD R10 K16 R10
- 0x900E1E0A, // 0075 SETMBR R3 K15 R10
- 0x8C280108, // 0076 GETMET R10 R0 K8
- 0x58300011, // 0077 LDCONST R12 K17
- 0x5C341000, // 0078 MOVE R13 R8
- 0x58380012, // 0079 LDCONST R14 K18
- 0xB83E2600, // 007A GETNGBL R15 K19
- 0x8C3C1F14, // 007B GETMET R15 R15 K20
- 0x5C441000, // 007C MOVE R17 R8
- 0x58480006, // 007D LDCONST R18 K6
- 0x544E00FD, // 007E LDINT R19 254
- 0x58500006, // 007F LDCONST R20 K6
- 0x54560063, // 0080 LDINT R21 100
- 0x7C3C0C00, // 0081 CALL R15 6
- 0x58400009, // 0082 LDCONST R16 K9
- 0x78260001, // 0083 JMPF R9 #0086
- 0x5844000A, // 0084 LDCONST R17 K10
- 0x70020000, // 0085 JMP #0087
- 0x58440006, // 0086 LDCONST R17 K6
- 0x7C280E00, // 0087 CALL R10 7
- 0x50280200, // 0088 LDBOOL R10 1 0
- 0x80041400, // 0089 RET 1 R10
- 0x70020010, // 008A JMP #009C
- 0x54220004, // 008B LDINT R8 5
- 0x1C200E08, // 008C EQ R8 R7 R8
- 0x78220002, // 008D JMPF R8 #0091
- 0x50200200, // 008E LDBOOL R8 1 0
- 0x80041000, // 008F RET 1 R8
- 0x7002000A, // 0090 JMP #009C
- 0x54220005, // 0091 LDINT R8 6
- 0x1C200E08, // 0092 EQ R8 R7 R8
- 0x78220002, // 0093 JMPF R8 #0097
- 0x50200200, // 0094 LDBOOL R8 1 0
- 0x80041000, // 0095 RET 1 R8
- 0x70020004, // 0096 JMP #009C
- 0x54220006, // 0097 LDINT R8 7
- 0x1C200E08, // 0098 EQ R8 R7 R8
- 0x78220001, // 0099 JMPF R8 #009C
- 0x50200200, // 009A LDBOOL R8 1 0
- 0x80041000, // 009B RET 1 R8
- 0x70020008, // 009C JMP #00A6
- 0x60200003, // 009D GETGBL R8 G3
- 0x5C240000, // 009E MOVE R9 R0
- 0x7C200200, // 009F CALL R8 1
- 0x8C201116, // 00A0 GETMET R8 R8 K22
- 0x5C280200, // 00A1 MOVE R10 R1
- 0x5C2C0400, // 00A2 MOVE R11 R2
- 0x5C300600, // 00A3 MOVE R12 R3
- 0x7C200800, // 00A4 CALL R8 4
- 0x80041000, // 00A5 RET 1 R8
- 0x80000000, // 00A6 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_onoff
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light1;
-be_local_closure(class_Matter_Plugin_Light1_set_onoff, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Light1,
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(VIRTUAL),
- /* K1 */ be_nested_str_weak(light),
- /* K2 */ be_nested_str_weak(set),
- /* K3 */ be_nested_str_weak(power),
- /* K4 */ be_nested_str_weak(update_shadow),
- /* K5 */ be_nested_str_weak(shadow_onoff),
- /* K6 */ be_nested_str_weak(attribute_updated),
- /* K7 */ be_const_int(0),
- }),
- be_str_weak(set_onoff),
- &be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x740A0008, // 0001 JMPT R2 #000B
- 0xA40A0200, // 0002 IMPORT R2 K1
- 0x8C0C0502, // 0003 GETMET R3 R2 K2
- 0x60140013, // 0004 GETGBL R5 G19
- 0x7C140000, // 0005 CALL R5 0
- 0x98160601, // 0006 SETIDX R5 K3 R1
- 0x7C0C0400, // 0007 CALL R3 2
- 0x8C0C0104, // 0008 GETMET R3 R0 K4
- 0x7C0C0200, // 0009 CALL R3 1
- 0x70020007, // 000A JMP #0013
- 0x88080105, // 000B GETMBR R2 R0 K5
- 0x20080202, // 000C NE R2 R1 R2
- 0x780A0004, // 000D JMPF R2 #0013
- 0x8C080106, // 000E GETMET R2 R0 K6
- 0x54120005, // 000F LDINT R4 6
- 0x58140007, // 0010 LDCONST R5 K7
- 0x7C080600, // 0011 CALL R2 3
- 0x90020A01, // 0012 SETMBR R0 K5 R1
- 0x80000000, // 0013 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_shadow
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light1;
-be_local_closure(class_Matter_Plugin_Light1_update_shadow, /* name */
- be_nested_proto(
- 12, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Light1,
- 1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(VIRTUAL),
- /* K1 */ be_nested_str_weak(light),
- /* K2 */ be_nested_str_weak(get),
- /* K3 */ be_nested_str_weak(find),
- /* K4 */ be_nested_str_weak(power),
- /* K5 */ be_nested_str_weak(shadow_onoff),
- /* K6 */ be_nested_str_weak(attribute_updated),
- /* K7 */ be_const_int(0),
- /* K8 */ be_nested_str_weak(bri),
- /* K9 */ be_nested_str_weak(tasmota),
- /* K10 */ be_nested_str_weak(scale_uint),
- /* K11 */ be_nested_str_weak(shadow_bri),
- /* K12 */ be_nested_str_weak(update_shadow),
- }),
- be_str_weak(update_shadow),
- &be_const_str_solidified,
- ( &(const binstruction[50]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x74060029, // 0001 JMPT R1 #002C
- 0xA4060200, // 0002 IMPORT R1 K1
- 0x8C080302, // 0003 GETMET R2 R1 K2
- 0x7C080200, // 0004 CALL R2 1
- 0x4C0C0000, // 0005 LDNIL R3
- 0x200C0403, // 0006 NE R3 R2 R3
- 0x780E0023, // 0007 JMPF R3 #002C
- 0x8C0C0503, // 0008 GETMET R3 R2 K3
- 0x58140004, // 0009 LDCONST R5 K4
- 0x4C180000, // 000A LDNIL R6
- 0x7C0C0600, // 000B CALL R3 3
- 0x88100105, // 000C GETMBR R4 R0 K5
- 0x20100604, // 000D NE R4 R3 R4
- 0x78120004, // 000E JMPF R4 #0014
- 0x8C100106, // 000F GETMET R4 R0 K6
- 0x541A0005, // 0010 LDINT R6 6
- 0x581C0007, // 0011 LDCONST R7 K7
- 0x7C100600, // 0012 CALL R4 3
- 0x90020A03, // 0013 SETMBR R0 K5 R3
- 0x8C100503, // 0014 GETMET R4 R2 K3
- 0x58180008, // 0015 LDCONST R6 K8
- 0x4C1C0000, // 0016 LDNIL R7
- 0x7C100600, // 0017 CALL R4 3
- 0x4C140000, // 0018 LDNIL R5
- 0x20140805, // 0019 NE R5 R4 R5
- 0x78160010, // 001A JMPF R5 #002C
- 0xB8161200, // 001B GETNGBL R5 K9
- 0x8C140B0A, // 001C GETMET R5 R5 K10
- 0x5C1C0800, // 001D MOVE R7 R4
- 0x58200007, // 001E LDCONST R8 K7
- 0x542600FE, // 001F LDINT R9 255
- 0x58280007, // 0020 LDCONST R10 K7
- 0x542E00FD, // 0021 LDINT R11 254
- 0x7C140C00, // 0022 CALL R5 6
- 0x5C100A00, // 0023 MOVE R4 R5
- 0x8814010B, // 0024 GETMBR R5 R0 K11
- 0x20140805, // 0025 NE R5 R4 R5
- 0x78160004, // 0026 JMPF R5 #002C
- 0x8C140106, // 0027 GETMET R5 R0 K6
- 0x541E0007, // 0028 LDINT R7 8
- 0x58200007, // 0029 LDCONST R8 K7
- 0x7C140600, // 002A CALL R5 3
- 0x90021604, // 002B SETMBR R0 K11 R4
- 0x60040003, // 002C GETGBL R1 G3
- 0x5C080000, // 002D MOVE R2 R0
- 0x7C040200, // 002E CALL R1 1
- 0x8C04030C, // 002F GETMET R1 R1 K12
- 0x7C040200, // 0030 CALL R1 1
- 0x80000000, // 0031 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_virtual
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light1;
-be_local_closure(class_Matter_Plugin_Light1_update_virtual, /* name */
- be_nested_proto(
- 8, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Light1,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(find),
- /* K1 */ be_nested_str_weak(Power),
- /* K2 */ be_nested_str_weak(Bri),
- /* K3 */ be_nested_str_weak(set_bri),
- /* K4 */ be_nested_str_weak(set_onoff),
- /* K5 */ be_nested_str_weak(update_virtual),
- }),
- be_str_weak(update_virtual),
- &be_const_str_solidified,
- ( &(const binstruction[32]) { /* code */
- 0x8C080300, // 0000 GETMET R2 R1 K0
- 0x58100001, // 0001 LDCONST R4 K1
- 0x7C080400, // 0002 CALL R2 2
- 0x8C0C0300, // 0003 GETMET R3 R1 K0
- 0x58140002, // 0004 LDCONST R5 K2
- 0x7C0C0400, // 0005 CALL R3 2
- 0x4C100000, // 0006 LDNIL R4
- 0x20100604, // 0007 NE R4 R3 R4
- 0x78120007, // 0008 JMPF R4 #0011
- 0x8C100103, // 0009 GETMET R4 R0 K3
- 0x60180009, // 000A GETGBL R6 G9
- 0x5C1C0600, // 000B MOVE R7 R3
- 0x7C180200, // 000C CALL R6 1
- 0x5C1C0400, // 000D MOVE R7 R2
- 0x7C100600, // 000E CALL R4 3
- 0x80000800, // 000F RET 0
- 0x70020007, // 0010 JMP #0019
- 0x4C100000, // 0011 LDNIL R4
- 0x20100404, // 0012 NE R4 R2 R4
- 0x78120004, // 0013 JMPF R4 #0019
- 0x8C100104, // 0014 GETMET R4 R0 K4
- 0x60180017, // 0015 GETGBL R6 G23
- 0x5C1C0400, // 0016 MOVE R7 R2
- 0x7C180200, // 0017 CALL R6 1
- 0x7C100400, // 0018 CALL R4 2
- 0x60100003, // 0019 GETGBL R4 G3
- 0x5C140000, // 001A MOVE R5 R0
- 0x7C100200, // 001B CALL R4 1
- 0x8C100905, // 001C GETMET R4 R4 K5
- 0x5C180200, // 001D MOVE R6 R1
- 0x7C100400, // 001E CALL R4 2
- 0x80000000, // 001F RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light1;
-be_local_closure(class_Matter_Plugin_Light1_read_attribute, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Light1,
- 1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_nested_str_weak(update_shadow_lazy),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(BOOL),
- /* K8 */ be_nested_str_weak(shadow_onoff),
- /* K9 */ be_nested_str_weak(U1),
- /* K10 */ be_nested_str_weak(shadow_bri),
- /* K11 */ be_const_int(2),
- /* K12 */ be_const_int(3),
- /* K13 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[72]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E0005, // 0004 LDINT R7 6
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0009, // 0006 JMPF R7 #0011
- 0x8C1C0104, // 0007 GETMET R7 R0 K4
- 0x7C1C0200, // 0008 CALL R7 1
- 0x1C1C0D05, // 0009 EQ R7 R6 K5
- 0x781E0004, // 000A JMPF R7 #0010
- 0x8C1C0706, // 000B GETMET R7 R3 K6
- 0x88240907, // 000C GETMBR R9 R4 K7
- 0x88280108, // 000D GETMBR R10 R0 K8
- 0x7C1C0600, // 000E CALL R7 3
- 0x80040E00, // 000F RET 1 R7
- 0x7002002D, // 0010 JMP #003F
- 0x541E0007, // 0011 LDINT R7 8
- 0x1C1C0A07, // 0012 EQ R7 R5 R7
- 0x781E002A, // 0013 JMPF R7 #003F
- 0x8C1C0104, // 0014 GETMET R7 R0 K4
- 0x7C1C0200, // 0015 CALL R7 1
- 0x1C1C0D05, // 0016 EQ R7 R6 K5
- 0x781E0005, // 0017 JMPF R7 #001E
- 0x8C1C0706, // 0018 GETMET R7 R3 K6
- 0x88240909, // 0019 GETMBR R9 R4 K9
- 0x8828010A, // 001A GETMBR R10 R0 K10
- 0x7C1C0600, // 001B CALL R7 3
- 0x80040E00, // 001C RET 1 R7
- 0x70020020, // 001D JMP #003F
- 0x1C1C0D0B, // 001E EQ R7 R6 K11
- 0x781E0005, // 001F JMPF R7 #0026
- 0x8C1C0706, // 0020 GETMET R7 R3 K6
- 0x88240909, // 0021 GETMBR R9 R4 K9
- 0x58280005, // 0022 LDCONST R10 K5
- 0x7C1C0600, // 0023 CALL R7 3
- 0x80040E00, // 0024 RET 1 R7
- 0x70020018, // 0025 JMP #003F
- 0x1C1C0D0C, // 0026 EQ R7 R6 K12
- 0x781E0005, // 0027 JMPF R7 #002E
- 0x8C1C0706, // 0028 GETMET R7 R3 K6
- 0x88240909, // 0029 GETMBR R9 R4 K9
- 0x542A00FD, // 002A LDINT R10 254
- 0x7C1C0600, // 002B CALL R7 3
- 0x80040E00, // 002C RET 1 R7
- 0x70020010, // 002D JMP #003F
- 0x541E000E, // 002E LDINT R7 15
- 0x1C1C0C07, // 002F EQ R7 R6 R7
- 0x781E0005, // 0030 JMPF R7 #0037
- 0x8C1C0706, // 0031 GETMET R7 R3 K6
- 0x88240909, // 0032 GETMBR R9 R4 K9
- 0x58280005, // 0033 LDCONST R10 K5
- 0x7C1C0600, // 0034 CALL R7 3
- 0x80040E00, // 0035 RET 1 R7
- 0x70020007, // 0036 JMP #003F
- 0x541E0010, // 0037 LDINT R7 17
- 0x1C1C0C07, // 0038 EQ R7 R6 R7
- 0x781E0004, // 0039 JMPF R7 #003F
- 0x8C1C0706, // 003A GETMET R7 R3 K6
- 0x88240909, // 003B GETMBR R9 R4 K9
- 0x8828010A, // 003C GETMBR R10 R0 K10
- 0x7C1C0600, // 003D CALL R7 3
- 0x80040E00, // 003E RET 1 R7
- 0x601C0003, // 003F GETGBL R7 G3
- 0x5C200000, // 0040 MOVE R8 R0
- 0x7C1C0200, // 0041 CALL R7 1
- 0x8C1C0F0D, // 0042 GETMET R7 R7 K13
- 0x5C240200, // 0043 MOVE R9 R1
- 0x5C280400, // 0044 MOVE R10 R2
- 0x5C2C0600, // 0045 MOVE R11 R3
- 0x7C1C0800, // 0046 CALL R7 4
- 0x80040E00, // 0047 RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_bri
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light1;
-be_local_closure(class_Matter_Plugin_Light1_set_bri, /* name */
- be_nested_proto(
- 11, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Light1,
- 1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(VIRTUAL),
- /* K2 */ be_nested_str_weak(light),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(scale_uint),
- /* K5 */ be_nested_str_weak(set),
- /* K6 */ be_nested_str_weak(bri),
- /* K7 */ be_nested_str_weak(power),
- /* K8 */ be_nested_str_weak(update_shadow),
- /* K9 */ be_nested_str_weak(shadow_onoff),
- /* K10 */ be_nested_str_weak(attribute_updated),
- /* K11 */ be_nested_str_weak(shadow_bri),
- }),
- be_str_weak(set_bri),
- &be_const_str_solidified,
- ( &(const binstruction[65]) { /* code */
- 0x140C0300, // 0000 LT R3 R1 K0
- 0x780E0000, // 0001 JMPF R3 #0003
- 0x58040000, // 0002 LDCONST R1 K0
- 0x540E00FD, // 0003 LDINT R3 254
- 0x240C0203, // 0004 GT R3 R1 R3
- 0x780E0000, // 0005 JMPF R3 #0007
- 0x540600FD, // 0006 LDINT R1 254
- 0x4C0C0000, // 0007 LDNIL R3
- 0x200C0403, // 0008 NE R3 R2 R3
- 0x780E0003, // 0009 JMPF R3 #000E
- 0x600C0017, // 000A GETGBL R3 G23
- 0x5C100400, // 000B MOVE R4 R2
- 0x7C0C0200, // 000C CALL R3 1
- 0x70020000, // 000D JMP #000F
- 0x4C0C0000, // 000E LDNIL R3
- 0x5C080600, // 000F MOVE R2 R3
- 0x880C0101, // 0010 GETMBR R3 R0 K1
- 0x740E001A, // 0011 JMPT R3 #002D
- 0xA40E0400, // 0012 IMPORT R3 K2
- 0xB8120600, // 0013 GETNGBL R4 K3
- 0x8C100904, // 0014 GETMET R4 R4 K4
- 0x5C180200, // 0015 MOVE R6 R1
- 0x581C0000, // 0016 LDCONST R7 K0
- 0x542200FD, // 0017 LDINT R8 254
- 0x58240000, // 0018 LDCONST R9 K0
- 0x542A00FE, // 0019 LDINT R10 255
- 0x7C100C00, // 001A CALL R4 6
- 0x4C140000, // 001B LDNIL R5
- 0x1C140405, // 001C EQ R5 R2 R5
- 0x78160005, // 001D JMPF R5 #0024
- 0x8C140705, // 001E GETMET R5 R3 K5
- 0x601C0013, // 001F GETGBL R7 G19
- 0x7C1C0000, // 0020 CALL R7 0
- 0x981E0C04, // 0021 SETIDX R7 K6 R4
- 0x7C140400, // 0022 CALL R5 2
- 0x70020005, // 0023 JMP #002A
- 0x8C140705, // 0024 GETMET R5 R3 K5
- 0x601C0013, // 0025 GETGBL R7 G19
- 0x7C1C0000, // 0026 CALL R7 0
- 0x981E0C04, // 0027 SETIDX R7 K6 R4
- 0x981E0E02, // 0028 SETIDX R7 K7 R2
- 0x7C140400, // 0029 CALL R5 2
- 0x8C140108, // 002A GETMET R5 R0 K8
- 0x7C140200, // 002B CALL R5 1
- 0x70020012, // 002C JMP #0040
- 0x4C0C0000, // 002D LDNIL R3
- 0x200C0403, // 002E NE R3 R2 R3
- 0x780E0007, // 002F JMPF R3 #0038
- 0x880C0109, // 0030 GETMBR R3 R0 K9
- 0x200C0403, // 0031 NE R3 R2 R3
- 0x780E0004, // 0032 JMPF R3 #0038
- 0x8C0C010A, // 0033 GETMET R3 R0 K10
- 0x54160005, // 0034 LDINT R5 6
- 0x58180000, // 0035 LDCONST R6 K0
- 0x7C0C0600, // 0036 CALL R3 3
- 0x90021202, // 0037 SETMBR R0 K9 R2
- 0x880C010B, // 0038 GETMBR R3 R0 K11
- 0x200C0203, // 0039 NE R3 R1 R3
- 0x780E0004, // 003A JMPF R3 #0040
- 0x8C0C010A, // 003B GETMET R3 R0 K10
- 0x54160007, // 003C LDINT R5 8
- 0x58180000, // 003D LDCONST R6 K0
- 0x7C0C0600, // 003E CALL R3 3
- 0x90021601, // 003F SETMBR R0 K11 R1
- 0x80000000, // 0040 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Light1
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Device;
-be_local_class(Matter_Plugin_Light1,
- 2,
- &be_class_Matter_Plugin_Device,
- be_nested_map(15,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Light1_init_closure) },
- { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Light1_update_shadow_closure) },
- { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Light1_invoke_request_closure) },
- { be_const_key_weak(set_onoff, -1), be_const_closure(class_Matter_Plugin_Light1_set_onoff_closure) },
- { be_const_key_weak(TYPE, 10), be_nested_str_weak(light1) },
- { be_const_key_weak(update_virtual, 11), be_const_closure(class_Matter_Plugin_Light1_update_virtual_closure) },
- { be_const_key_weak(UPDATE_TIME, 8), be_const_int(250) },
- { be_const_key_weak(shadow_bri, 1), be_const_var(1) },
- { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X201_X20Dimmer) },
- { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(2,
- ( (struct bvalue*) &(const bvalue[]) {
- be_nested_str_weak(Power),
- be_nested_str_weak(Bri),
- })) ) } )) },
- { be_const_key_weak(CLUSTERS, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(7,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(29, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(8, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(11,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(2),
- be_const_int(3),
- be_const_int(15),
- be_const_int(17),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- })) ) } )) },
- { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(257, -1), be_const_int(2) },
- })) ) } )) },
- { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Light1_read_attribute_closure) },
- { be_const_key_weak(shadow_onoff, -1), be_const_var(0) },
- { be_const_key_weak(set_bri, -1), be_const_closure(class_Matter_Plugin_Light1_set_bri_closure) },
- })),
- be_str_weak(Matter_Plugin_Light1)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_OnOff.h
deleted file mode 100644
index 3933c1c2f..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_OnOff.h
+++ /dev/null
@@ -1,551 +0,0 @@
-/* Solidification of Matter_Plugin_2_OnOff.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_OnOff;
-
-/********************************************************************
-** Solidified function: invoke_request
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_OnOff;
-be_local_closure(class_Matter_Plugin_OnOff_invoke_request, /* name */
- be_nested_proto(
- 11, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_OnOff,
- 1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(command),
- /* K4 */ be_nested_str_weak(update_shadow_lazy),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(set_onoff),
- /* K7 */ be_nested_str_weak(publish_command),
- /* K8 */ be_nested_str_weak(Power),
- /* K9 */ be_const_int(1),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(shadow_onoff),
- }),
- be_str_weak(invoke_request),
- &be_const_str_solidified,
- ( &(const binstruction[52]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140702, // 0002 GETMBR R5 R3 K2
- 0x88180703, // 0003 GETMBR R6 R3 K3
- 0x541E0005, // 0004 LDINT R7 6
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E002B, // 0006 JMPF R7 #0033
- 0x8C1C0104, // 0007 GETMET R7 R0 K4
- 0x7C1C0200, // 0008 CALL R7 1
- 0x1C1C0D05, // 0009 EQ R7 R6 K5
- 0x781E0009, // 000A JMPF R7 #0015
- 0x8C1C0106, // 000B GETMET R7 R0 K6
- 0x50240000, // 000C LDBOOL R9 0 0
- 0x7C1C0400, // 000D CALL R7 2
- 0x8C1C0107, // 000E GETMET R7 R0 K7
- 0x58240008, // 000F LDCONST R9 K8
- 0x58280005, // 0010 LDCONST R10 K5
- 0x7C1C0600, // 0011 CALL R7 3
- 0x501C0200, // 0012 LDBOOL R7 1 0
- 0x80040E00, // 0013 RET 1 R7
- 0x7002001D, // 0014 JMP #0033
- 0x1C1C0D09, // 0015 EQ R7 R6 K9
- 0x781E0009, // 0016 JMPF R7 #0021
- 0x8C1C0106, // 0017 GETMET R7 R0 K6
- 0x50240200, // 0018 LDBOOL R9 1 0
- 0x7C1C0400, // 0019 CALL R7 2
- 0x8C1C0107, // 001A GETMET R7 R0 K7
- 0x58240008, // 001B LDCONST R9 K8
- 0x58280009, // 001C LDCONST R10 K9
- 0x7C1C0600, // 001D CALL R7 3
- 0x501C0200, // 001E LDBOOL R7 1 0
- 0x80040E00, // 001F RET 1 R7
- 0x70020011, // 0020 JMP #0033
- 0x1C1C0D0A, // 0021 EQ R7 R6 K10
- 0x781E000F, // 0022 JMPF R7 #0033
- 0x8C1C0106, // 0023 GETMET R7 R0 K6
- 0x8824010B, // 0024 GETMBR R9 R0 K11
- 0x78260000, // 0025 JMPF R9 #0027
- 0x50240001, // 0026 LDBOOL R9 0 1
- 0x50240200, // 0027 LDBOOL R9 1 0
- 0x7C1C0400, // 0028 CALL R7 2
- 0x8C1C0107, // 0029 GETMET R7 R0 K7
- 0x58240008, // 002A LDCONST R9 K8
- 0x8828010B, // 002B GETMBR R10 R0 K11
- 0x782A0001, // 002C JMPF R10 #002F
- 0x58280009, // 002D LDCONST R10 K9
- 0x70020000, // 002E JMP #0030
- 0x58280005, // 002F LDCONST R10 K5
- 0x7C1C0600, // 0030 CALL R7 3
- 0x501C0200, // 0031 LDBOOL R7 1 0
- 0x80040E00, // 0032 RET 1 R7
- 0x80000000, // 0033 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_OnOff;
-be_local_closure(class_Matter_Plugin_OnOff_read_attribute, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_OnOff,
- 1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_nested_str_weak(update_shadow_lazy),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(BOOL),
- /* K8 */ be_nested_str_weak(shadow_onoff),
- /* K9 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[25]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E0005, // 0004 LDINT R7 6
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0008, // 0006 JMPF R7 #0010
- 0x8C1C0104, // 0007 GETMET R7 R0 K4
- 0x7C1C0200, // 0008 CALL R7 1
- 0x1C1C0D05, // 0009 EQ R7 R6 K5
- 0x781E0004, // 000A JMPF R7 #0010
- 0x8C1C0706, // 000B GETMET R7 R3 K6
- 0x88240907, // 000C GETMBR R9 R4 K7
- 0x88280108, // 000D GETMBR R10 R0 K8
- 0x7C1C0600, // 000E CALL R7 3
- 0x80040E00, // 000F RET 1 R7
- 0x601C0003, // 0010 GETGBL R7 G3
- 0x5C200000, // 0011 MOVE R8 R0
- 0x7C1C0200, // 0012 CALL R7 1
- 0x8C1C0F09, // 0013 GETMET R7 R7 K9
- 0x5C240200, // 0014 MOVE R9 R1
- 0x5C280400, // 0015 MOVE R10 R2
- 0x5C2C0600, // 0016 MOVE R11 R3
- 0x7C1C0800, // 0017 CALL R7 4
- 0x80040E00, // 0018 RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_configuration
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_OnOff;
-be_local_closure(class_Matter_Plugin_OnOff_parse_configuration, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_OnOff,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota_relay_index),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(ARG),
- /* K3 */ be_const_int(1),
- /* K4 */ be_const_int(0),
- }),
- be_str_weak(parse_configuration),
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x60080009, // 0000 GETGBL R2 G9
- 0x8C0C0301, // 0001 GETMET R3 R1 K1
- 0x88140102, // 0002 GETMBR R5 R0 K2
- 0x58180003, // 0003 LDCONST R6 K3
- 0x7C0C0600, // 0004 CALL R3 3
- 0x7C080200, // 0005 CALL R2 1
- 0x90020002, // 0006 SETMBR R0 K0 R2
- 0x88080100, // 0007 GETMBR R2 R0 K0
- 0x18080504, // 0008 LE R2 R2 K4
- 0x780A0000, // 0009 JMPF R2 #000B
- 0x90020103, // 000A SETMBR R0 K0 K3
- 0x80000000, // 000B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_virtual
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_OnOff;
-be_local_closure(class_Matter_Plugin_OnOff_update_virtual, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_OnOff,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(find),
- /* K1 */ be_nested_str_weak(Power),
- /* K2 */ be_nested_str_weak(set_onoff),
- /* K3 */ be_nested_str_weak(update_virtual),
- }),
- be_str_weak(update_virtual),
- &be_const_str_solidified,
- ( &(const binstruction[18]) { /* code */
- 0x8C080300, // 0000 GETMET R2 R1 K0
- 0x58100001, // 0001 LDCONST R4 K1
- 0x7C080400, // 0002 CALL R2 2
- 0x4C0C0000, // 0003 LDNIL R3
- 0x200C0403, // 0004 NE R3 R2 R3
- 0x780E0004, // 0005 JMPF R3 #000B
- 0x8C0C0102, // 0006 GETMET R3 R0 K2
- 0x60140017, // 0007 GETGBL R5 G23
- 0x5C180400, // 0008 MOVE R6 R2
- 0x7C140200, // 0009 CALL R5 1
- 0x7C0C0400, // 000A CALL R3 2
- 0x600C0003, // 000B GETGBL R3 G3
- 0x5C100000, // 000C MOVE R4 R0
- 0x7C0C0200, // 000D CALL R3 1
- 0x8C0C0703, // 000E GETMET R3 R3 K3
- 0x5C140200, // 000F MOVE R5 R1
- 0x7C0C0400, // 0010 CALL R3 2
- 0x80000000, // 0011 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function:
-********************************************************************/
-be_local_closure(class_Matter_Plugin_OnOff__X3Clambda_X3E, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 0, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x60040009, // 0000 GETGBL R1 G9
- 0x5C080000, // 0001 MOVE R2 R0
- 0x7C040200, // 0002 CALL R1 1
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_onoff
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_OnOff;
-be_local_closure(class_Matter_Plugin_OnOff_set_onoff, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_OnOff,
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(VIRTUAL),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(set_power),
- /* K3 */ be_nested_str_weak(tasmota_relay_index),
- /* K4 */ be_const_int(1),
- /* K5 */ be_nested_str_weak(update_shadow),
- /* K6 */ be_nested_str_weak(shadow_onoff),
- /* K7 */ be_nested_str_weak(attribute_updated),
- /* K8 */ be_const_int(0),
- }),
- be_str_weak(set_onoff),
- &be_const_str_solidified,
- ( &(const binstruction[22]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x740A000A, // 0001 JMPT R2 #000D
- 0xB80A0200, // 0002 GETNGBL R2 K1
- 0x8C080502, // 0003 GETMET R2 R2 K2
- 0x88100103, // 0004 GETMBR R4 R0 K3
- 0x04100904, // 0005 SUB R4 R4 K4
- 0x60140017, // 0006 GETGBL R5 G23
- 0x5C180200, // 0007 MOVE R6 R1
- 0x7C140200, // 0008 CALL R5 1
- 0x7C080600, // 0009 CALL R2 3
- 0x8C080105, // 000A GETMET R2 R0 K5
- 0x7C080200, // 000B CALL R2 1
- 0x70020007, // 000C JMP #0015
- 0x88080106, // 000D GETMBR R2 R0 K6
- 0x20080202, // 000E NE R2 R1 R2
- 0x780A0004, // 000F JMPF R2 #0015
- 0x8C080107, // 0010 GETMET R2 R0 K7
- 0x54120005, // 0011 LDINT R4 6
- 0x58140008, // 0012 LDCONST R5 K8
- 0x7C080600, // 0013 CALL R2 3
- 0x90020C01, // 0014 SETMBR R0 K6 R1
- 0x80000000, // 0015 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_shadow
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_OnOff;
-be_local_closure(class_Matter_Plugin_OnOff_update_shadow, /* name */
- be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_OnOff,
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(VIRTUAL),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(get_power),
- /* K3 */ be_nested_str_weak(tasmota_relay_index),
- /* K4 */ be_const_int(1),
- /* K5 */ be_nested_str_weak(shadow_onoff),
- /* K6 */ be_nested_str_weak(attribute_updated),
- /* K7 */ be_const_int(0),
- /* K8 */ be_nested_str_weak(update_shadow),
- }),
- be_str_weak(update_shadow),
- &be_const_str_solidified,
- ( &(const binstruction[27]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x74060012, // 0001 JMPT R1 #0015
- 0xB8060200, // 0002 GETNGBL R1 K1
- 0x8C040302, // 0003 GETMET R1 R1 K2
- 0x880C0103, // 0004 GETMBR R3 R0 K3
- 0x040C0704, // 0005 SUB R3 R3 K4
- 0x7C040400, // 0006 CALL R1 2
- 0x4C080000, // 0007 LDNIL R2
- 0x20080202, // 0008 NE R2 R1 R2
- 0x780A000A, // 0009 JMPF R2 #0015
- 0x88080105, // 000A GETMBR R2 R0 K5
- 0x600C0017, // 000B GETGBL R3 G23
- 0x5C100200, // 000C MOVE R4 R1
- 0x7C0C0200, // 000D CALL R3 1
- 0x20080403, // 000E NE R2 R2 R3
- 0x780A0003, // 000F JMPF R2 #0014
- 0x8C080106, // 0010 GETMET R2 R0 K6
- 0x54120005, // 0011 LDINT R4 6
- 0x58140007, // 0012 LDCONST R5 K7
- 0x7C080600, // 0013 CALL R2 3
- 0x90020A01, // 0014 SETMBR R0 K5 R1
- 0x60040003, // 0015 GETGBL R1 G3
- 0x5C080000, // 0016 MOVE R2 R0
- 0x7C040200, // 0017 CALL R1 1
- 0x8C040308, // 0018 GETMET R1 R1 K8
- 0x7C040200, // 0019 CALL R1 1
- 0x80000000, // 001A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_OnOff;
-be_local_closure(class_Matter_Plugin_OnOff_init, /* name */
- be_nested_proto(
- 9, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_OnOff,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(shadow_onoff),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[11]) { /* code */
- 0x60100003, // 0000 GETGBL R4 G3
- 0x5C140000, // 0001 MOVE R5 R0
- 0x7C100200, // 0002 CALL R4 1
- 0x8C100900, // 0003 GETMET R4 R4 K0
- 0x5C180200, // 0004 MOVE R6 R1
- 0x5C1C0400, // 0005 MOVE R7 R2
- 0x5C200600, // 0006 MOVE R8 R3
- 0x7C100800, // 0007 CALL R4 4
- 0x50100000, // 0008 LDBOOL R4 0 0
- 0x90020204, // 0009 SETMBR R0 K1 R4
- 0x80000000, // 000A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_OnOff
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Device;
-be_local_class(Matter_Plugin_OnOff,
- 2,
- &be_class_Matter_Plugin_Device,
- be_nested_map(18,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(UPDATE_TIME, -1), be_const_int(250) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(relay) },
- { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(266, -1), be_const_int(2) },
- })) ) } )) },
- { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(1,
- ( (struct bvalue*) &(const bvalue[]) {
- be_nested_str_weak(Power),
- })) ) } )) },
- { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(6,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- })) ) } )) },
- { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_OnOff_invoke_request_closure) },
- { be_const_key_weak(read_attribute, 16), be_const_closure(class_Matter_Plugin_OnOff_read_attribute_closure) },
- { be_const_key_weak(parse_configuration, 13), be_const_closure(class_Matter_Plugin_OnOff_parse_configuration_closure) },
- { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_OnOff_update_virtual_closure) },
- { be_const_key_weak(DISPLAY_NAME, 14), be_nested_str_weak(Relay) },
- { be_const_key_weak(ARG_TYPE, 12), be_const_static_closure(class_Matter_Plugin_OnOff__X3Clambda_X3E_closure) },
- { be_const_key_weak(ARG, -1), be_nested_str_weak(relay) },
- { be_const_key_weak(shadow_onoff, -1), be_const_var(0) },
- { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_OnOff_update_shadow_closure) },
- { be_const_key_weak(ARG_HINT, 11), be_nested_str_weak(Relay_X3Cx_X3E_X20number) },
- { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_OnOff_init_closure) },
- { be_const_key_weak(set_onoff, -1), be_const_closure(class_Matter_Plugin_OnOff_set_onoff_closure) },
- { be_const_key_weak(tasmota_relay_index, -1), be_const_var(1) },
- })),
- be_str_weak(Matter_Plugin_OnOff)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h
index 82087ee1d..828febd99 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor.h
@@ -3,115 +3,101 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_Plugin_Sensor' ktab size: 36, total: 53 (saved 136 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Sensor[36] = {
+ /* K0 */ be_nested_str_weak(contains),
+ /* K1 */ be_nested_str_weak(TempUnit),
+ /* K2 */ be_nested_str_weak(temp_unit),
+ /* K3 */ be_nested_str_weak(PressureUnit),
+ /* K4 */ be_nested_str_weak(pressure_unit),
+ /* K5 */ be_nested_str_weak(tasmota_sensor_matcher),
+ /* K6 */ be_nested_str_weak(pre_value),
+ /* K7 */ be_nested_str_weak(match),
+ /* K8 */ be_nested_str_weak(shadow_value),
+ /* K9 */ be_nested_str_weak(value_changed),
+ /* K10 */ be_nested_str_weak(tasmota_sensor_filter),
+ /* K11 */ be_nested_str_weak(find),
+ /* K12 */ be_nested_str_weak(ARG),
+ /* K13 */ be_nested_str_weak(tasmota),
+ /* K14 */ be_nested_str_weak(Rule_Matcher),
+ /* K15 */ be_nested_str_weak(parse),
+ /* K16 */ be_nested_str_weak(TEMP_C),
+ /* K17 */ be_nested_str_weak(PRESSURE_HPA),
+ /* K18 */ be_nested_str_weak(VIRTUAL),
+ /* K19 */ be_nested_str_weak(JSON_NAME),
+ /* K20 */ be_nested_str_weak(init),
+ /* K21 */ be_nested_str_weak(add_read_sensors_schedule),
+ /* K22 */ be_nested_str_weak(UPDATE_TIME),
+ /* K23 */ be_nested_str_weak(string),
+ /* K24 */ be_nested_str_weak(webserver),
+ /* K25 */ be_nested_str_weak(html_escape),
+ /* K26 */ be_nested_str_weak(split),
+ /* K27 */ be_nested_str_weak(_X23),
+ /* K28 */ be_const_int(0),
+ /* K29 */ be_nested_str_weak(),
+ /* K30 */ be_nested_str_weak(get_name),
+ /* K31 */ be_nested_str_weak(filter_name_html),
+ /* K32 */ be_nested_str_weak(content_send),
+ /* K33 */ be_nested_str_weak(PREFIX),
+ /* K34 */ be_nested_str_weak(bool),
+ /* K35 */ be_nested_str_weak(update_virtual),
+};
+
extern const bclass be_class_Matter_Plugin_Sensor;
/********************************************************************
-** Solidified function: update_virtual
+** Solidified function: parse_status
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor;
-be_local_closure(class_Matter_Plugin_Sensor_update_virtual, /* name */
+be_local_closure(class_Matter_Plugin_Sensor_parse_status, /* name */
be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
+ 9, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(find),
- /* K1 */ be_nested_str_weak(JSON_NAME),
- /* K2 */ be_nested_str_weak(bool),
- /* K3 */ be_nested_str_weak(shadow_value),
- /* K4 */ be_nested_str_weak(value_changed),
- /* K5 */ be_nested_str_weak(update_virtual),
- }),
- be_str_weak(update_virtual),
+ &be_ktab_class_Matter_Plugin_Sensor, /* shared constants */
+ be_str_weak(parse_status),
&be_const_str_solidified,
- ( &(const binstruction[28]) { /* code */
- 0x8C080300, // 0000 GETMET R2 R1 K0
- 0x88100101, // 0001 GETMBR R4 R0 K1
- 0x7C080400, // 0002 CALL R2 2
- 0x4C0C0000, // 0003 LDNIL R3
- 0x200C0403, // 0004 NE R3 R2 R3
- 0x780E000E, // 0005 JMPF R3 #0015
- 0x600C0004, // 0006 GETGBL R3 G4
- 0x5C100400, // 0007 MOVE R4 R2
- 0x7C0C0200, // 0008 CALL R3 1
- 0x1C0C0702, // 0009 EQ R3 R3 K2
- 0x780E0003, // 000A JMPF R3 #000F
- 0x600C0009, // 000B GETGBL R3 G9
- 0x5C100400, // 000C MOVE R4 R2
- 0x7C0C0200, // 000D CALL R3 1
- 0x5C080600, // 000E MOVE R2 R3
- 0x880C0103, // 000F GETMBR R3 R0 K3
- 0x200C0602, // 0010 NE R3 R3 R2
- 0x780E0002, // 0011 JMPF R3 #0015
- 0x8C0C0104, // 0012 GETMET R3 R0 K4
- 0x7C0C0200, // 0013 CALL R3 1
- 0x90020602, // 0014 SETMBR R0 K3 R2
- 0x600C0003, // 0015 GETGBL R3 G3
- 0x5C100000, // 0016 MOVE R4 R0
- 0x7C0C0200, // 0017 CALL R3 1
- 0x8C0C0705, // 0018 GETMET R3 R3 K5
- 0x5C140200, // 0019 MOVE R5 R1
- 0x7C0C0400, // 001A CALL R3 2
- 0x80000000, // 001B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_sensors
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor;
-be_local_closure(class_Matter_Plugin_Sensor_parse_sensors, /* name */
- be_nested_proto(
- 8, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(VIRTUAL),
- /* K1 */ be_nested_str_weak(tasmota_sensor_matcher),
- /* K2 */ be_nested_str_weak(pre_value),
- /* K3 */ be_nested_str_weak(match),
- /* K4 */ be_nested_str_weak(shadow_value),
- /* K5 */ be_nested_str_weak(value_changed),
- }),
- be_str_weak(parse_sensors),
- &be_const_str_solidified,
- ( &(const binstruction[22]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x740A0012, // 0001 JMPT R2 #0015
- 0x88080101, // 0002 GETMBR R2 R0 K1
- 0x780A0010, // 0003 JMPF R2 #0015
- 0x8C080102, // 0004 GETMET R2 R0 K2
- 0x6010000A, // 0005 GETGBL R4 G10
- 0x88140101, // 0006 GETMBR R5 R0 K1
- 0x8C140B03, // 0007 GETMET R5 R5 K3
- 0x5C1C0200, // 0008 MOVE R7 R1
- 0x7C140400, // 0009 CALL R5 2
- 0x7C100200, // 000A CALL R4 1
- 0x7C080400, // 000B CALL R2 2
- 0x4C0C0000, // 000C LDNIL R3
- 0x200C0403, // 000D NE R3 R2 R3
- 0x780E0005, // 000E JMPF R3 #0015
- 0x880C0104, // 000F GETMBR R3 R0 K4
- 0x200C0403, // 0010 NE R3 R2 R3
- 0x780E0002, // 0011 JMPF R3 #0015
- 0x8C0C0105, // 0012 GETMET R3 R0 K5
- 0x7C0C0200, // 0013 CALL R3 1
- 0x90020802, // 0014 SETMBR R0 K4 R2
- 0x80000000, // 0015 RET 0
+ ( &(const binstruction[35]) { /* code */
+ 0x540E0009, // 0000 LDINT R3 10
+ 0x1C0C0403, // 0001 EQ R3 R2 R3
+ 0x780E001E, // 0002 JMPF R3 #0022
+ 0x8C0C0300, // 0003 GETMET R3 R1 K0
+ 0x58140001, // 0004 LDCONST R5 K1
+ 0x7C0C0400, // 0005 CALL R3 2
+ 0x780E0001, // 0006 JMPF R3 #0009
+ 0x940C0301, // 0007 GETIDX R3 R1 K1
+ 0x90020403, // 0008 SETMBR R0 K2 R3
+ 0x8C0C0300, // 0009 GETMET R3 R1 K0
+ 0x58140003, // 000A LDCONST R5 K3
+ 0x7C0C0400, // 000B CALL R3 2
+ 0x780E0001, // 000C JMPF R3 #000F
+ 0x940C0303, // 000D GETIDX R3 R1 K3
+ 0x90020803, // 000E SETMBR R0 K4 R3
+ 0x880C0105, // 000F GETMBR R3 R0 K5
+ 0x780E0010, // 0010 JMPF R3 #0022
+ 0x8C0C0106, // 0011 GETMET R3 R0 K6
+ 0x6014000A, // 0012 GETGBL R5 G10
+ 0x88180105, // 0013 GETMBR R6 R0 K5
+ 0x8C180D07, // 0014 GETMET R6 R6 K7
+ 0x5C200200, // 0015 MOVE R8 R1
+ 0x7C180400, // 0016 CALL R6 2
+ 0x7C140200, // 0017 CALL R5 1
+ 0x7C0C0400, // 0018 CALL R3 2
+ 0x4C100000, // 0019 LDNIL R4
+ 0x20100604, // 001A NE R4 R3 R4
+ 0x78120005, // 001B JMPF R4 #0022
+ 0x88100108, // 001C GETMBR R4 R0 K8
+ 0x20100604, // 001D NE R4 R3 R4
+ 0x78120002, // 001E JMPF R4 #0022
+ 0x8C100109, // 001F GETMET R4 R0 K9
+ 0x7C100200, // 0020 CALL R4 1
+ 0x90021003, // 0021 SETMBR R0 K8 R3
+ 0x80000000, // 0022 RET 0
})
)
);
@@ -121,82 +107,37 @@ be_local_closure(class_Matter_Plugin_Sensor_parse_sensors, /* name */
/********************************************************************
** Solidified function: parse_configuration
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor;
be_local_closure(class_Matter_Plugin_Sensor_parse_configuration, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota_sensor_filter),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(ARG),
- /* K3 */ be_nested_str_weak(tasmota_sensor_matcher),
- /* K4 */ be_nested_str_weak(tasmota),
- /* K5 */ be_nested_str_weak(Rule_Matcher),
- /* K6 */ be_nested_str_weak(parse),
- }),
+ &be_ktab_class_Matter_Plugin_Sensor, /* shared constants */
be_str_weak(parse_configuration),
&be_const_str_solidified,
- ( &(const binstruction[13]) { /* code */
- 0x8C080301, // 0000 GETMET R2 R1 K1
- 0x88100102, // 0001 GETMBR R4 R0 K2
+ ( &(const binstruction[17]) { /* code */
+ 0x8C08030B, // 0000 GETMET R2 R1 K11
+ 0x8810010C, // 0001 GETMBR R4 R0 K12
0x7C080400, // 0002 CALL R2 2
- 0x90020002, // 0003 SETMBR R0 K0 R2
- 0x88080100, // 0004 GETMBR R2 R0 K0
+ 0x90021402, // 0003 SETMBR R0 K10 R2
+ 0x8808010A, // 0004 GETMBR R2 R0 K10
0x780A0005, // 0005 JMPF R2 #000C
- 0xB80A0800, // 0006 GETNGBL R2 K4
- 0x88080505, // 0007 GETMBR R2 R2 K5
- 0x8C080506, // 0008 GETMET R2 R2 K6
- 0x88100100, // 0009 GETMBR R4 R0 K0
+ 0xB80A1A00, // 0006 GETNGBL R2 K13
+ 0x8808050E, // 0007 GETMBR R2 R2 K14
+ 0x8C08050F, // 0008 GETMET R2 R2 K15
+ 0x8810010A, // 0009 GETMBR R4 R0 K10
0x7C080400, // 000A CALL R2 2
- 0x90020602, // 000B SETMBR R0 K3 R2
- 0x80000000, // 000C RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor;
-be_local_closure(class_Matter_Plugin_Sensor_init, /* name */
- be_nested_proto(
- 9, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor,
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(add_read_sensors_schedule),
- /* K2 */ be_nested_str_weak(UPDATE_TIME),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x60100003, // 0000 GETGBL R4 G3
- 0x5C140000, // 0001 MOVE R5 R0
- 0x7C100200, // 0002 CALL R4 1
- 0x8C100900, // 0003 GETMET R4 R4 K0
- 0x5C180200, // 0004 MOVE R6 R1
- 0x5C1C0400, // 0005 MOVE R7 R2
- 0x5C200600, // 0006 MOVE R8 R3
- 0x7C100800, // 0007 CALL R4 4
- 0x8C100301, // 0008 GETMET R4 R1 K1
- 0x88180102, // 0009 GETMBR R6 R0 K2
- 0x7C100400, // 000A CALL R4 2
- 0x80000000, // 000B RET 0
+ 0x90020A02, // 000B SETMBR R0 K5 R2
+ 0x88080110, // 000C GETMBR R2 R0 K16
+ 0x90020402, // 000D SETMBR R0 K2 R2
+ 0x88080111, // 000E GETMBR R2 R0 K17
+ 0x90020802, // 000F SETMBR R0 K4 R2
+ 0x80000000, // 0010 RET 0
})
)
);
@@ -206,18 +147,17 @@ be_local_closure(class_Matter_Plugin_Sensor_init, /* name */
/********************************************************************
** Solidified function: pre_value
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor;
be_local_closure(class_Matter_Plugin_Sensor_pre_value, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor, /* shared constants */
be_str_weak(pre_value),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -228,21 +168,76 @@ be_local_closure(class_Matter_Plugin_Sensor_pre_value, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: parse_sensors
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_parse_sensors, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor, /* shared constants */
+ be_str_weak(parse_sensors),
+ &be_const_str_solidified,
+ ( &(const binstruction[33]) { /* code */
+ 0x88080112, // 0000 GETMBR R2 R0 K18
+ 0x740A001D, // 0001 JMPT R2 #0020
+ 0x88080105, // 0002 GETMBR R2 R0 K5
+ 0x780A001B, // 0003 JMPF R2 #0020
+ 0x88080105, // 0004 GETMBR R2 R0 K5
+ 0x8C080507, // 0005 GETMET R2 R2 K7
+ 0x5C100200, // 0006 MOVE R4 R1
+ 0x7C080400, // 0007 CALL R2 2
+ 0x600C000F, // 0008 GETGBL R3 G15
+ 0x5C100400, // 0009 MOVE R4 R2
+ 0x60140013, // 000A GETGBL R5 G19
+ 0x7C0C0400, // 000B CALL R3 2
+ 0x780E0003, // 000C JMPF R3 #0011
+ 0x8C0C050B, // 000D GETMET R3 R2 K11
+ 0x88140113, // 000E GETMBR R5 R0 K19
+ 0x7C0C0400, // 000F CALL R3 2
+ 0x5C080600, // 0010 MOVE R2 R3
+ 0x8C0C0106, // 0011 GETMET R3 R0 K6
+ 0x6014000A, // 0012 GETGBL R5 G10
+ 0x5C180400, // 0013 MOVE R6 R2
+ 0x7C140200, // 0014 CALL R5 1
+ 0x7C0C0400, // 0015 CALL R3 2
+ 0x5C080600, // 0016 MOVE R2 R3
+ 0x4C0C0000, // 0017 LDNIL R3
+ 0x200C0403, // 0018 NE R3 R2 R3
+ 0x780E0005, // 0019 JMPF R3 #0020
+ 0x880C0108, // 001A GETMBR R3 R0 K8
+ 0x200C0403, // 001B NE R3 R2 R3
+ 0x780E0002, // 001C JMPF R3 #0020
+ 0x8C0C0109, // 001D GETMET R3 R0 K9
+ 0x7C0C0200, // 001E CALL R3 1
+ 0x90021002, // 001F SETMBR R0 K8 R2
+ 0x80000000, // 0020 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: value_changed
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor;
be_local_closure(class_Matter_Plugin_Sensor_value_changed, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor, /* shared constants */
be_str_weak(value_changed),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -253,28 +248,204 @@ be_local_closure(class_Matter_Plugin_Sensor_value_changed, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_init, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0x60100003, // 0000 GETGBL R4 G3
+ 0x5C140000, // 0001 MOVE R5 R0
+ 0x7C100200, // 0002 CALL R4 1
+ 0x8C100914, // 0003 GETMET R4 R4 K20
+ 0x5C180200, // 0004 MOVE R6 R1
+ 0x5C1C0400, // 0005 MOVE R7 R2
+ 0x5C200600, // 0006 MOVE R8 R3
+ 0x7C100800, // 0007 CALL R4 4
+ 0x8C100315, // 0008 GETMET R4 R1 K21
+ 0x88180116, // 0009 GETMBR R6 R0 K22
+ 0x7C100400, // 000A CALL R4 2
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: filter_name_html
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_filter_name_html, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor, /* shared constants */
+ be_str_weak(filter_name_html),
+ &be_const_str_solidified,
+ ( &(const binstruction[13]) { /* code */
+ 0x8804010A, // 0000 GETMBR R1 R0 K10
+ 0x78060009, // 0001 JMPF R1 #000C
+ 0xA4062E00, // 0002 IMPORT R1 K23
+ 0xA40A3000, // 0003 IMPORT R2 K24
+ 0x8C0C0519, // 0004 GETMET R3 R2 K25
+ 0x8C14031A, // 0005 GETMET R5 R1 K26
+ 0x881C010A, // 0006 GETMBR R7 R0 K10
+ 0x5820001B, // 0007 LDCONST R8 K27
+ 0x7C140600, // 0008 CALL R5 3
+ 0x94140B1C, // 0009 GETIDX R5 R5 K28
+ 0x7C0C0400, // 000A CALL R3 2
+ 0x80040600, // 000B RET 1 R3
+ 0x80063A00, // 000C RET 1 K29
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_values_prefix
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_web_values_prefix, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor, /* shared constants */
+ be_str_weak(web_values_prefix),
+ &be_const_str_solidified,
+ ( &(const binstruction[20]) { /* code */
+ 0xA4063000, // 0000 IMPORT R1 K24
+ 0x8C08011E, // 0001 GETMET R2 R0 K30
+ 0x7C080200, // 0002 CALL R2 1
+ 0x5C0C0400, // 0003 MOVE R3 R2
+ 0x740E0002, // 0004 JMPT R3 #0008
+ 0x8C0C011F, // 0005 GETMET R3 R0 K31
+ 0x7C0C0200, // 0006 CALL R3 1
+ 0x5C080600, // 0007 MOVE R2 R3
+ 0x8C0C0320, // 0008 GETMET R3 R1 K32
+ 0x60140018, // 0009 GETGBL R5 G24
+ 0x88180121, // 000A GETMBR R6 R0 K33
+ 0x780A0003, // 000B JMPF R2 #0010
+ 0x8C1C0319, // 000C GETMET R7 R1 K25
+ 0x5C240400, // 000D MOVE R9 R2
+ 0x7C1C0400, // 000E CALL R7 2
+ 0x70020000, // 000F JMP #0011
+ 0x581C001D, // 0010 LDCONST R7 K29
+ 0x7C140400, // 0011 CALL R5 2
+ 0x7C0C0400, // 0012 CALL R3 2
+ 0x80000000, // 0013 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: update_virtual
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_update_virtual, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor, /* shared constants */
+ be_str_weak(update_virtual),
+ &be_const_str_solidified,
+ ( &(const binstruction[28]) { /* code */
+ 0x8C08030B, // 0000 GETMET R2 R1 K11
+ 0x88100113, // 0001 GETMBR R4 R0 K19
+ 0x7C080400, // 0002 CALL R2 2
+ 0x4C0C0000, // 0003 LDNIL R3
+ 0x200C0403, // 0004 NE R3 R2 R3
+ 0x780E000E, // 0005 JMPF R3 #0015
+ 0x600C0004, // 0006 GETGBL R3 G4
+ 0x5C100400, // 0007 MOVE R4 R2
+ 0x7C0C0200, // 0008 CALL R3 1
+ 0x1C0C0722, // 0009 EQ R3 R3 K34
+ 0x780E0003, // 000A JMPF R3 #000F
+ 0x600C0009, // 000B GETGBL R3 G9
+ 0x5C100400, // 000C MOVE R4 R2
+ 0x7C0C0200, // 000D CALL R3 1
+ 0x5C080600, // 000E MOVE R2 R3
+ 0x880C0108, // 000F GETMBR R3 R0 K8
+ 0x200C0602, // 0010 NE R3 R3 R2
+ 0x780E0002, // 0011 JMPF R3 #0015
+ 0x8C0C0109, // 0012 GETMET R3 R0 K9
+ 0x7C0C0200, // 0013 CALL R3 1
+ 0x90021002, // 0014 SETMBR R0 K8 R2
+ 0x600C0003, // 0015 GETGBL R3 G3
+ 0x5C100000, // 0016 MOVE R4 R0
+ 0x7C0C0200, // 0017 CALL R3 1
+ 0x8C0C0723, // 0018 GETMET R3 R3 K35
+ 0x5C140200, // 0019 MOVE R5 R1
+ 0x7C0C0400, // 001A CALL R3 2
+ 0x80000000, // 001B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified class: Matter_Plugin_Sensor
********************************************************************/
extern const bclass be_class_Matter_Plugin_Device;
be_local_class(Matter_Plugin_Sensor,
- 3,
+ 5,
&be_class_Matter_Plugin_Device,
- be_nested_map(13,
+ be_nested_map(24,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(ARG, 1), be_nested_str_weak(filter) },
- { be_const_key_weak(value_changed, -1), be_const_closure(class_Matter_Plugin_Sensor_value_changed_closure) },
- { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Sensor_update_virtual_closure) },
- { be_const_key_weak(ARG_HINT, 9), be_nested_str_weak(Filter_X20pattern) },
- { be_const_key_weak(tasmota_sensor_matcher, -1), be_const_var(1) },
- { be_const_key_weak(parse_sensors, -1), be_const_closure(class_Matter_Plugin_Sensor_parse_sensors_closure) },
- { be_const_key_weak(JSON_NAME, 8), be_nested_str_weak() },
- { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_Sensor_parse_configuration_closure) },
- { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Sensor_init_closure) },
- { be_const_key_weak(pre_value, 12), be_const_closure(class_Matter_Plugin_Sensor_pre_value_closure) },
- { be_const_key_weak(shadow_value, -1), be_const_var(2) },
{ be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
- { be_const_key_weak(tasmota_sensor_filter, -1), be_const_var(0) },
+ { be_const_key_weak(TEMP_C, -1), be_nested_str_weak(C) },
+ { be_const_key_weak(tasmota_sensor_matcher, -1), be_const_var(1) },
+ { be_const_key_weak(shadow_value, 19), be_const_var(2) },
+ { be_const_key_weak(PRESSURE_MMHG, -1), be_nested_str_weak(mmHg) },
+ { be_const_key_weak(parse_status, -1), be_const_closure(class_Matter_Plugin_Sensor_parse_status_closure) },
+ { be_const_key_weak(TEMP_F, -1), be_nested_str_weak(F) },
+ { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Sensor_update_virtual_closure) },
+ { be_const_key_weak(pre_value, 7), be_const_closure(class_Matter_Plugin_Sensor_pre_value_closure) },
+ { be_const_key_weak(ARG_HINT, 14), be_nested_str_weak(Filter_X20pattern) },
+ { be_const_key_weak(tasmota_sensor_filter, 6), be_const_var(0) },
+ { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X2010) },
+ { be_const_key_weak(parse_sensors, -1), be_const_closure(class_Matter_Plugin_Sensor_parse_sensors_closure) },
+ { be_const_key_weak(parse_configuration, 20), be_const_closure(class_Matter_Plugin_Sensor_parse_configuration_closure) },
+ { be_const_key_weak(PRESSURE_INHG, -1), be_nested_str_weak(inHg) },
+ { be_const_key_weak(ARG, 11), be_nested_str_weak(filter) },
+ { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Sensor_web_values_prefix_closure) },
+ { be_const_key_weak(filter_name_html, 16), be_const_closure(class_Matter_Plugin_Sensor_filter_name_html_closure) },
+ { be_const_key_weak(PRESSURE_HPA, -1), be_nested_str_weak(hPa) },
+ { be_const_key_weak(init, 5), be_const_closure(class_Matter_Plugin_Sensor_init_closure) },
+ { be_const_key_weak(value_changed, 21), be_const_closure(class_Matter_Plugin_Sensor_value_changed_closure) },
+ { be_const_key_weak(pressure_unit, -1), be_const_var(4) },
+ { be_const_key_weak(temp_unit, -1), be_const_var(3) },
+ { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak() },
})),
be_str_weak(Matter_Plugin_Sensor)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h
new file mode 100644
index 000000000..97bf2aad1
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Air_Quality.h
@@ -0,0 +1,738 @@
+/* Solidification of Matter_Plugin_2_Sensor_Air_Quality.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+// compact class 'Matter_Plugin_Sensor_Air_Quality' ktab size: 36, total: 73 (saved 296 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Sensor_Air_Quality[36] = {
+ /* K0 */ be_nested_str_weak(web_values_prefix),
+ /* K1 */ be_nested_str_weak(Air),
+ /* K2 */ be_nested_str_weak(shadow_air_quality),
+ /* K3 */ be_nested_str_weak(PM1),
+ /* K4 */ be_nested_str_weak(shadow_pm1),
+ /* K5 */ be_nested_str_weak(PM2_X2E5),
+ /* K6 */ be_nested_str_weak(shadow_pm2_5),
+ /* K7 */ be_nested_str_weak(PM10),
+ /* K8 */ be_nested_str_weak(shadow_pm10),
+ /* K9 */ be_nested_str_weak(CO2),
+ /* K10 */ be_nested_str_weak(shadow_co2),
+ /* K11 */ be_nested_str_weak(NO2),
+ /* K12 */ be_nested_str_weak(shadow_no2),
+ /* K13 */ be_nested_str_weak(TVOC),
+ /* K14 */ be_nested_str_weak(shadow_tvoc),
+ /* K15 */ be_nested_str_weak(find),
+ /* K16 */ be_nested_str_weak(prefix),
+ /* K17 */ be_nested_str_weak(_parse_update_virtual),
+ /* K18 */ be_nested_str_weak(AirQuality),
+ /* K19 */ be_const_int(0),
+ /* K20 */ be_nested_str_weak(update_virtual),
+ /* K21 */ be_nested_str_weak(init),
+ /* K22 */ be_nested_str_weak(add_read_sensors_schedule),
+ /* K23 */ be_nested_str_weak(UPDATE_TIME),
+ /* K24 */ be_nested_str_weak(matter),
+ /* K25 */ be_nested_str_weak(TLV),
+ /* K26 */ be_nested_str_weak(cluster),
+ /* K27 */ be_nested_str_weak(attribute),
+ /* K28 */ be_nested_str_weak(set_or_nil),
+ /* K29 */ be_nested_str_weak(U1),
+ /* K30 */ be_nested_str_weak(read_attribute),
+ /* K31 */ be_nested_str_weak(ARG),
+ /* K32 */ be_nested_str_weak(_parse_sensor_entry),
+ /* K33 */ be_nested_str_weak(CarbonDioxide),
+ /* K34 */ be_nested_str_weak(parse_sensors),
+ /* K35 */ be_nested_str_weak(attribute_updated),
+};
+
+
+extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality;
+
+/********************************************************************
+** Solidified function: web_values
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_web_values, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 1]) {
+ be_nested_proto(
+ 9, /* nstack */
+ 2, /* argc */
+ 0, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str_weak(webserver),
+ /* K1 */ be_nested_str_weak(content_send),
+ /* K2 */ be_nested_str_weak(_X25s_X3A_X25i_X20),
+ }),
+ be_str_weak(web_values_single),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0x4C080000, // 0000 LDNIL R2
+ 0x20080202, // 0001 NE R2 R1 R2
+ 0x780A0007, // 0002 JMPF R2 #000B
+ 0xA40A0000, // 0003 IMPORT R2 K0
+ 0x8C0C0501, // 0004 GETMET R3 R2 K1
+ 0x60140018, // 0005 GETGBL R5 G24
+ 0x58180002, // 0006 LDCONST R6 K2
+ 0x5C1C0000, // 0007 MOVE R7 R0
+ 0x5C200200, // 0008 MOVE R8 R1
+ 0x7C140600, // 0009 CALL R5 3
+ 0x7C0C0400, // 000A CALL R3 2
+ 0x80000000, // 000B RET 0
+ })
+ ),
+ }),
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Air_Quality, /* shared constants */
+ be_str_weak(web_values),
+ &be_const_str_solidified,
+ ( &(const binstruction[32]) { /* code */
+ 0x84040000, // 0000 CLOSURE R1 P0
+ 0x8C080100, // 0001 GETMET R2 R0 K0
+ 0x7C080200, // 0002 CALL R2 1
+ 0x5C080200, // 0003 MOVE R2 R1
+ 0x580C0001, // 0004 LDCONST R3 K1
+ 0x88100102, // 0005 GETMBR R4 R0 K2
+ 0x7C080400, // 0006 CALL R2 2
+ 0x5C080200, // 0007 MOVE R2 R1
+ 0x580C0003, // 0008 LDCONST R3 K3
+ 0x88100104, // 0009 GETMBR R4 R0 K4
+ 0x7C080400, // 000A CALL R2 2
+ 0x5C080200, // 000B MOVE R2 R1
+ 0x580C0005, // 000C LDCONST R3 K5
+ 0x88100106, // 000D GETMBR R4 R0 K6
+ 0x7C080400, // 000E CALL R2 2
+ 0x5C080200, // 000F MOVE R2 R1
+ 0x580C0007, // 0010 LDCONST R3 K7
+ 0x88100108, // 0011 GETMBR R4 R0 K8
+ 0x7C080400, // 0012 CALL R2 2
+ 0x5C080200, // 0013 MOVE R2 R1
+ 0x580C0009, // 0014 LDCONST R3 K9
+ 0x8810010A, // 0015 GETMBR R4 R0 K10
+ 0x7C080400, // 0016 CALL R2 2
+ 0x5C080200, // 0017 MOVE R2 R1
+ 0x580C000B, // 0018 LDCONST R3 K11
+ 0x8810010C, // 0019 GETMBR R4 R0 K12
+ 0x7C080400, // 001A CALL R2 2
+ 0x5C080200, // 001B MOVE R2 R1
+ 0x580C000D, // 001C LDCONST R3 K13
+ 0x8810010E, // 001D GETMBR R4 R0 K14
+ 0x7C080400, // 001E CALL R2 2
+ 0x80000000, // 001F RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_status
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_status, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Air_Quality, /* shared constants */
+ be_str_weak(parse_status),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x540E0009, // 0000 LDINT R3 10
+ 0x1C0C0403, // 0001 EQ R3 R2 R3
+ 0x780E0002, // 0002 JMPF R3 #0006
+ 0x8C0C030F, // 0003 GETMET R3 R1 K15
+ 0x88140110, // 0004 GETMBR R5 R0 K16
+ 0x7C0C0400, // 0005 CALL R3 2
+ 0x80000000, // 0006 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: update_virtual
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_update_virtual, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Air_Quality, /* shared constants */
+ be_str_weak(update_virtual),
+ &be_const_str_solidified,
+ ( &(const binstruction[61]) { /* code */
+ 0x8C080111, // 0000 GETMET R2 R0 K17
+ 0x5C100200, // 0001 MOVE R4 R1
+ 0x58140012, // 0002 LDCONST R5 K18
+ 0x60180007, // 0003 GETGBL R6 G7
+ 0x881C0102, // 0004 GETMBR R7 R0 K2
+ 0x5422005A, // 0005 LDINT R8 91
+ 0x58240013, // 0006 LDCONST R9 K19
+ 0x7C080E00, // 0007 CALL R2 7
+ 0x90020402, // 0008 SETMBR R0 K2 R2
+ 0x8C080111, // 0009 GETMET R2 R0 K17
+ 0x5C100200, // 000A MOVE R4 R1
+ 0x58140009, // 000B LDCONST R5 K9
+ 0x8818010A, // 000C GETMBR R6 R0 K10
+ 0x601C0007, // 000D GETGBL R7 G7
+ 0x5422040C, // 000E LDINT R8 1037
+ 0x58240013, // 000F LDCONST R9 K19
+ 0x7C080E00, // 0010 CALL R2 7
+ 0x90021402, // 0011 SETMBR R0 K10 R2
+ 0x8C080111, // 0012 GETMET R2 R0 K17
+ 0x5C100200, // 0013 MOVE R4 R1
+ 0x58140003, // 0014 LDCONST R5 K3
+ 0x88180104, // 0015 GETMBR R6 R0 K4
+ 0x601C0007, // 0016 GETGBL R7 G7
+ 0x5422042B, // 0017 LDINT R8 1068
+ 0x58240013, // 0018 LDCONST R9 K19
+ 0x7C080E00, // 0019 CALL R2 7
+ 0x90020802, // 001A SETMBR R0 K4 R2
+ 0x8C080111, // 001B GETMET R2 R0 K17
+ 0x5C100200, // 001C MOVE R4 R1
+ 0x58140005, // 001D LDCONST R5 K5
+ 0x88180106, // 001E GETMBR R6 R0 K6
+ 0x601C0007, // 001F GETGBL R7 G7
+ 0x54220429, // 0020 LDINT R8 1066
+ 0x58240013, // 0021 LDCONST R9 K19
+ 0x7C080E00, // 0022 CALL R2 7
+ 0x90020C02, // 0023 SETMBR R0 K6 R2
+ 0x8C080111, // 0024 GETMET R2 R0 K17
+ 0x5C100200, // 0025 MOVE R4 R1
+ 0x58140007, // 0026 LDCONST R5 K7
+ 0x88180108, // 0027 GETMBR R6 R0 K8
+ 0x601C0007, // 0028 GETGBL R7 G7
+ 0x5422042C, // 0029 LDINT R8 1069
+ 0x58240013, // 002A LDCONST R9 K19
+ 0x7C080E00, // 002B CALL R2 7
+ 0x90021002, // 002C SETMBR R0 K8 R2
+ 0x8C080111, // 002D GETMET R2 R0 K17
+ 0x5C100200, // 002E MOVE R4 R1
+ 0x5814000D, // 002F LDCONST R5 K13
+ 0x8818010E, // 0030 GETMBR R6 R0 K14
+ 0x601C0007, // 0031 GETGBL R7 G7
+ 0x5422042D, // 0032 LDINT R8 1070
+ 0x58240013, // 0033 LDCONST R9 K19
+ 0x7C080E00, // 0034 CALL R2 7
+ 0x90021C02, // 0035 SETMBR R0 K14 R2
+ 0x60080003, // 0036 GETGBL R2 G3
+ 0x5C0C0000, // 0037 MOVE R3 R0
+ 0x7C080200, // 0038 CALL R2 1
+ 0x8C080514, // 0039 GETMET R2 R2 K20
+ 0x5C100200, // 003A MOVE R4 R1
+ 0x7C080400, // 003B CALL R2 2
+ 0x80000000, // 003C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_init, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Air_Quality, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[14]) { /* code */
+ 0x60100003, // 0000 GETGBL R4 G3
+ 0x5C140000, // 0001 MOVE R5 R0
+ 0x7C100200, // 0002 CALL R4 1
+ 0x8C100915, // 0003 GETMET R4 R4 K21
+ 0x5C180200, // 0004 MOVE R6 R1
+ 0x5C1C0400, // 0005 MOVE R7 R2
+ 0x5C200600, // 0006 MOVE R8 R3
+ 0x7C100800, // 0007 CALL R4 4
+ 0x50100000, // 0008 LDBOOL R4 0 0
+ 0x90020404, // 0009 SETMBR R0 K2 R4
+ 0x8C100316, // 000A GETMET R4 R1 K22
+ 0x88180117, // 000B GETMBR R6 R0 K23
+ 0x7C100400, // 000C CALL R4 2
+ 0x80000000, // 000D RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_attribute
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute, /* name */
+ be_nested_proto(
+ 14, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 1]) {
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 3]) { /* upvals */
+ be_local_const_upval(1, 6),
+ be_local_const_upval(1, 3),
+ be_local_const_upval(1, 4),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 9]) { /* constants */
+ /* K0 */ be_const_int(0),
+ /* K1 */ be_nested_str_weak(set_or_nil),
+ /* K2 */ be_nested_str_weak(FLOAT),
+ /* K3 */ be_const_int(1),
+ /* K4 */ be_nested_str_weak(set),
+ /* K5 */ be_nested_str_weak(NULL),
+ /* K6 */ be_const_int(2),
+ /* K7 */ be_nested_str_weak(U1),
+ /* K8 */ be_nested_str_weak(U4),
+ }),
+ be_str_weak(handle_value),
+ &be_const_str_solidified,
+ ( &(const binstruction[74]) { /* code */
+ 0x4C080000, // 0000 LDNIL R2
+ 0x1C080202, // 0001 EQ R2 R1 R2
+ 0x780A0000, // 0002 JMPF R2 #0004
+ 0x58040000, // 0003 LDCONST R1 K0
+ 0x68080000, // 0004 GETUPV R2 U0
+ 0x1C080500, // 0005 EQ R2 R2 K0
+ 0x780A0007, // 0006 JMPF R2 #000F
+ 0x68080001, // 0007 GETUPV R2 U1
+ 0x8C080501, // 0008 GETMET R2 R2 K1
+ 0x68100002, // 0009 GETUPV R4 U2
+ 0x88100902, // 000A GETMBR R4 R4 K2
+ 0x5C140000, // 000B MOVE R5 R0
+ 0x7C080600, // 000C CALL R2 3
+ 0x80040400, // 000D RET 1 R2
+ 0x70020038, // 000E JMP #0048
+ 0x68080000, // 000F GETUPV R2 U0
+ 0x1C080503, // 0010 EQ R2 R2 K3
+ 0x780A0007, // 0011 JMPF R2 #001A
+ 0x68080001, // 0012 GETUPV R2 U1
+ 0x8C080504, // 0013 GETMET R2 R2 K4
+ 0x68100002, // 0014 GETUPV R4 U2
+ 0x88100905, // 0015 GETMBR R4 R4 K5
+ 0x4C140000, // 0016 LDNIL R5
+ 0x7C080600, // 0017 CALL R2 3
+ 0x80040400, // 0018 RET 1 R2
+ 0x7002002D, // 0019 JMP #0048
+ 0x68080000, // 001A GETUPV R2 U0
+ 0x1C080506, // 001B EQ R2 R2 K6
+ 0x780A0007, // 001C JMPF R2 #0025
+ 0x68080001, // 001D GETUPV R2 U1
+ 0x8C080504, // 001E GETMET R2 R2 K4
+ 0x68100002, // 001F GETUPV R4 U2
+ 0x88100905, // 0020 GETMBR R4 R4 K5
+ 0x4C140000, // 0021 LDNIL R5
+ 0x7C080600, // 0022 CALL R2 3
+ 0x80040400, // 0023 RET 1 R2
+ 0x70020022, // 0024 JMP #0048
+ 0x68080000, // 0025 GETUPV R2 U0
+ 0x540E0007, // 0026 LDINT R3 8
+ 0x1C080403, // 0027 EQ R2 R2 R3
+ 0x780A0007, // 0028 JMPF R2 #0031
+ 0x68080001, // 0029 GETUPV R2 U1
+ 0x8C080504, // 002A GETMET R2 R2 K4
+ 0x68100002, // 002B GETUPV R4 U2
+ 0x88100907, // 002C GETMBR R4 R4 K7
+ 0x5C140200, // 002D MOVE R5 R1
+ 0x7C080600, // 002E CALL R2 3
+ 0x80040400, // 002F RET 1 R2
+ 0x70020016, // 0030 JMP #0048
+ 0x68080000, // 0031 GETUPV R2 U0
+ 0x540E0008, // 0032 LDINT R3 9
+ 0x1C080403, // 0033 EQ R2 R2 R3
+ 0x780A0007, // 0034 JMPF R2 #003D
+ 0x68080001, // 0035 GETUPV R2 U1
+ 0x8C080504, // 0036 GETMET R2 R2 K4
+ 0x68100002, // 0037 GETUPV R4 U2
+ 0x88100907, // 0038 GETMBR R4 R4 K7
+ 0x58140000, // 0039 LDCONST R5 K0
+ 0x7C080600, // 003A CALL R2 3
+ 0x80040400, // 003B RET 1 R2
+ 0x7002000A, // 003C JMP #0048
+ 0x68080000, // 003D GETUPV R2 U0
+ 0x540EFFFB, // 003E LDINT R3 65532
+ 0x1C080403, // 003F EQ R2 R2 R3
+ 0x780A0006, // 0040 JMPF R2 #0048
+ 0x68080001, // 0041 GETUPV R2 U1
+ 0x8C080504, // 0042 GETMET R2 R2 K4
+ 0x68100002, // 0043 GETUPV R4 U2
+ 0x88100908, // 0044 GETMBR R4 R4 K8
+ 0x58140003, // 0045 LDCONST R5 K3
+ 0x7C080600, // 0046 CALL R2 3
+ 0x80040400, // 0047 RET 1 R2
+ 0x4C080000, // 0048 LDNIL R2
+ 0x80040400, // 0049 RET 1 R2
+ })
+ ),
+ }),
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Air_Quality, /* shared constants */
+ be_str_weak(read_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[93]) { /* code */
+ 0xB8123000, // 0000 GETNGBL R4 K24
+ 0x88100919, // 0001 GETMBR R4 R4 K25
+ 0x8814051A, // 0002 GETMBR R5 R2 K26
+ 0x8818051B, // 0003 GETMBR R6 R2 K27
+ 0x4C1C0000, // 0004 LDNIL R7
+ 0x84200000, // 0005 CLOSURE R8 P0
+ 0x5426005A, // 0006 LDINT R9 91
+ 0x1C240A09, // 0007 EQ R9 R5 R9
+ 0x78260008, // 0008 JMPF R9 #0012
+ 0x1C240D13, // 0009 EQ R9 R6 K19
+ 0x78260005, // 000A JMPF R9 #0011
+ 0x8C24071C, // 000B GETMET R9 R3 K28
+ 0x882C091D, // 000C GETMBR R11 R4 K29
+ 0x88300102, // 000D GETMBR R12 R0 K2
+ 0x7C240600, // 000E CALL R9 3
+ 0xA0000000, // 000F CLOSE R0
+ 0x80041200, // 0010 RET 1 R9
+ 0x70020040, // 0011 JMP #0053
+ 0x5426040C, // 0012 LDINT R9 1037
+ 0x1C240A09, // 0013 EQ R9 R5 R9
+ 0x78260007, // 0014 JMPF R9 #001D
+ 0x5C241000, // 0015 MOVE R9 R8
+ 0x8828010A, // 0016 GETMBR R10 R0 K10
+ 0x7C240200, // 0017 CALL R9 1
+ 0x5C1C1200, // 0018 MOVE R7 R9
+ 0x78260001, // 0019 JMPF R9 #001C
+ 0xA0000000, // 001A CLOSE R0
+ 0x80040E00, // 001B RET 1 R7
+ 0x70020035, // 001C JMP #0053
+ 0x5426042B, // 001D LDINT R9 1068
+ 0x1C240A09, // 001E EQ R9 R5 R9
+ 0x78260007, // 001F JMPF R9 #0028
+ 0x5C241000, // 0020 MOVE R9 R8
+ 0x88280104, // 0021 GETMBR R10 R0 K4
+ 0x7C240200, // 0022 CALL R9 1
+ 0x5C1C1200, // 0023 MOVE R7 R9
+ 0x78260001, // 0024 JMPF R9 #0027
+ 0xA0000000, // 0025 CLOSE R0
+ 0x80040E00, // 0026 RET 1 R7
+ 0x7002002A, // 0027 JMP #0053
+ 0x54260429, // 0028 LDINT R9 1066
+ 0x1C240A09, // 0029 EQ R9 R5 R9
+ 0x78260007, // 002A JMPF R9 #0033
+ 0x5C241000, // 002B MOVE R9 R8
+ 0x88280106, // 002C GETMBR R10 R0 K6
+ 0x7C240200, // 002D CALL R9 1
+ 0x5C1C1200, // 002E MOVE R7 R9
+ 0x78260001, // 002F JMPF R9 #0032
+ 0xA0000000, // 0030 CLOSE R0
+ 0x80040E00, // 0031 RET 1 R7
+ 0x7002001F, // 0032 JMP #0053
+ 0x5426042C, // 0033 LDINT R9 1069
+ 0x1C240A09, // 0034 EQ R9 R5 R9
+ 0x78260007, // 0035 JMPF R9 #003E
+ 0x5C241000, // 0036 MOVE R9 R8
+ 0x88280108, // 0037 GETMBR R10 R0 K8
+ 0x7C240200, // 0038 CALL R9 1
+ 0x5C1C1200, // 0039 MOVE R7 R9
+ 0x78260001, // 003A JMPF R9 #003D
+ 0xA0000000, // 003B CLOSE R0
+ 0x80040E00, // 003C RET 1 R7
+ 0x70020014, // 003D JMP #0053
+ 0x5426042D, // 003E LDINT R9 1070
+ 0x1C240A09, // 003F EQ R9 R5 R9
+ 0x78260007, // 0040 JMPF R9 #0049
+ 0x5C241000, // 0041 MOVE R9 R8
+ 0x8828010E, // 0042 GETMBR R10 R0 K14
+ 0x7C240200, // 0043 CALL R9 1
+ 0x5C1C1200, // 0044 MOVE R7 R9
+ 0x78260001, // 0045 JMPF R9 #0048
+ 0xA0000000, // 0046 CLOSE R0
+ 0x80040E00, // 0047 RET 1 R7
+ 0x70020009, // 0048 JMP #0053
+ 0x54260412, // 0049 LDINT R9 1043
+ 0x1C240A09, // 004A EQ R9 R5 R9
+ 0x78260006, // 004B JMPF R9 #0053
+ 0x5C241000, // 004C MOVE R9 R8
+ 0x8828010C, // 004D GETMBR R10 R0 K12
+ 0x7C240200, // 004E CALL R9 1
+ 0x5C1C1200, // 004F MOVE R7 R9
+ 0x78260001, // 0050 JMPF R9 #0053
+ 0xA0000000, // 0051 CLOSE R0
+ 0x80040E00, // 0052 RET 1 R7
+ 0x60240003, // 0053 GETGBL R9 G3
+ 0x5C280000, // 0054 MOVE R10 R0
+ 0x7C240200, // 0055 CALL R9 1
+ 0x8C24131E, // 0056 GETMET R9 R9 K30
+ 0x5C2C0200, // 0057 MOVE R11 R1
+ 0x5C300400, // 0058 MOVE R12 R2
+ 0x5C340600, // 0059 MOVE R13 R3
+ 0x7C240800, // 005A CALL R9 4
+ 0xA0000000, // 005B CLOSE R0
+ 0x80041200, // 005C RET 1 R9
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_configuration
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_configuration, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Air_Quality, /* shared constants */
+ be_str_weak(parse_configuration),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x60080008, // 0000 GETGBL R2 G8
+ 0x8C0C030F, // 0001 GETMET R3 R1 K15
+ 0x8814011F, // 0002 GETMBR R5 R0 K31
+ 0x7C0C0400, // 0003 CALL R3 2
+ 0x7C080200, // 0004 CALL R2 1
+ 0x90022002, // 0005 SETMBR R0 K16 R2
+ 0x80000000, // 0006 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_sensors
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors, /* name */
+ be_nested_proto(
+ 11, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Air_Quality, /* shared constants */
+ be_str_weak(parse_sensors),
+ &be_const_str_solidified,
+ ( &(const binstruction[67]) { /* code */
+ 0x8C08030F, // 0000 GETMET R2 R1 K15
+ 0x88100110, // 0001 GETMBR R4 R0 K16
+ 0x7C080400, // 0002 CALL R2 2
+ 0x4C0C0000, // 0003 LDNIL R3
+ 0x200C0403, // 0004 NE R3 R2 R3
+ 0x780E0035, // 0005 JMPF R3 #003C
+ 0x8C0C0120, // 0006 GETMET R3 R0 K32
+ 0x5C140400, // 0007 MOVE R5 R2
+ 0x58180021, // 0008 LDCONST R6 K33
+ 0x881C010A, // 0009 GETMBR R7 R0 K10
+ 0x60200007, // 000A GETGBL R8 G7
+ 0x5426040C, // 000B LDINT R9 1037
+ 0x58280013, // 000C LDCONST R10 K19
+ 0x7C0C0E00, // 000D CALL R3 7
+ 0x90021403, // 000E SETMBR R0 K10 R3
+ 0x8C0C0120, // 000F GETMET R3 R0 K32
+ 0x5C140400, // 0010 MOVE R5 R2
+ 0x58180003, // 0011 LDCONST R6 K3
+ 0x881C0104, // 0012 GETMBR R7 R0 K4
+ 0x60200007, // 0013 GETGBL R8 G7
+ 0x5426042B, // 0014 LDINT R9 1068
+ 0x58280013, // 0015 LDCONST R10 K19
+ 0x7C0C0E00, // 0016 CALL R3 7
+ 0x90020803, // 0017 SETMBR R0 K4 R3
+ 0x8C0C0120, // 0018 GETMET R3 R0 K32
+ 0x5C140400, // 0019 MOVE R5 R2
+ 0x58180005, // 001A LDCONST R6 K5
+ 0x881C0106, // 001B GETMBR R7 R0 K6
+ 0x60200007, // 001C GETGBL R8 G7
+ 0x54260429, // 001D LDINT R9 1066
+ 0x58280013, // 001E LDCONST R10 K19
+ 0x7C0C0E00, // 001F CALL R3 7
+ 0x90020C03, // 0020 SETMBR R0 K6 R3
+ 0x8C0C0120, // 0021 GETMET R3 R0 K32
+ 0x5C140400, // 0022 MOVE R5 R2
+ 0x58180007, // 0023 LDCONST R6 K7
+ 0x881C0108, // 0024 GETMBR R7 R0 K8
+ 0x60200007, // 0025 GETGBL R8 G7
+ 0x5426042C, // 0026 LDINT R9 1069
+ 0x58280013, // 0027 LDCONST R10 K19
+ 0x7C0C0E00, // 0028 CALL R3 7
+ 0x90021003, // 0029 SETMBR R0 K8 R3
+ 0x8C0C0120, // 002A GETMET R3 R0 K32
+ 0x5C140400, // 002B MOVE R5 R2
+ 0x5818000D, // 002C LDCONST R6 K13
+ 0x881C010E, // 002D GETMBR R7 R0 K14
+ 0x60200007, // 002E GETGBL R8 G7
+ 0x5426042D, // 002F LDINT R9 1070
+ 0x58280013, // 0030 LDCONST R10 K19
+ 0x7C0C0E00, // 0031 CALL R3 7
+ 0x90021C03, // 0032 SETMBR R0 K14 R3
+ 0x8C0C0120, // 0033 GETMET R3 R0 K32
+ 0x5C140400, // 0034 MOVE R5 R2
+ 0x5818000B, // 0035 LDCONST R6 K11
+ 0x881C010C, // 0036 GETMBR R7 R0 K12
+ 0x60200007, // 0037 GETGBL R8 G7
+ 0x54260412, // 0038 LDINT R9 1043
+ 0x58280013, // 0039 LDCONST R10 K19
+ 0x7C0C0E00, // 003A CALL R3 7
+ 0x90021803, // 003B SETMBR R0 K12 R3
+ 0x600C0003, // 003C GETGBL R3 G3
+ 0x5C100000, // 003D MOVE R4 R0
+ 0x7C0C0200, // 003E CALL R3 1
+ 0x8C0C0722, // 003F GETMET R3 R3 K34
+ 0x5C140200, // 0040 MOVE R5 R1
+ 0x7C0C0400, // 0041 CALL R3 2
+ 0x80000000, // 0042 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: _parse_sensor_entry
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Air_Quality__parse_sensor_entry, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 7, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Air_Quality, /* shared constants */
+ be_str_weak(_parse_sensor_entry),
+ &be_const_str_solidified,
+ ( &(const binstruction[21]) { /* code */
+ 0x8C1C030F, // 0000 GETMET R7 R1 K15
+ 0x5C240400, // 0001 MOVE R9 R2
+ 0x7C1C0400, // 0002 CALL R7 2
+ 0x4C200000, // 0003 LDNIL R8
+ 0x20200E08, // 0004 NE R8 R7 R8
+ 0x7822000D, // 0005 JMPF R8 #0014
+ 0x5C200800, // 0006 MOVE R8 R4
+ 0x5C240E00, // 0007 MOVE R9 R7
+ 0x7C200200, // 0008 CALL R8 1
+ 0x5C1C1000, // 0009 MOVE R7 R8
+ 0x4C200000, // 000A LDNIL R8
+ 0x20200E08, // 000B NE R8 R7 R8
+ 0x78220005, // 000C JMPF R8 #0013
+ 0x20200E03, // 000D NE R8 R7 R3
+ 0x78220003, // 000E JMPF R8 #0013
+ 0x8C200123, // 000F GETMET R8 R0 K35
+ 0x5C280A00, // 0010 MOVE R10 R5
+ 0x5C2C0C00, // 0011 MOVE R11 R6
+ 0x7C200600, // 0012 CALL R8 3
+ 0x80040E00, // 0013 RET 1 R7
+ 0x80040600, // 0014 RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Sensor_Air_Quality
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Device;
+be_local_class(Matter_Plugin_Sensor_Air_Quality,
+ 8,
+ &be_class_Matter_Plugin_Device,
+ be_nested_map(25,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(AirQuality) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Air_X20Quality) },
+ { be_const_key_weak(web_values, 16), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_web_values_closure) },
+ { be_const_key_weak(parse_status, -1), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_status_closure) },
+ { be_const_key_weak(_parse_sensor_entry, -1), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality__parse_sensor_entry_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_init_closure) },
+ { be_const_key_weak(UPDATE_TIME, -1), be_const_int(10000) },
+ { be_const_key_weak(shadow_no2, -1), be_const_var(6) },
+ { be_const_key_weak(shadow_air_quality, 13), be_const_var(1) },
+ { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(7,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_nested_str_weak(AirQuality),
+ be_nested_str_weak(CO2),
+ be_nested_str_weak(PM1),
+ be_nested_str_weak(PM2_X2E5),
+ be_nested_str_weak(PM10),
+ be_nested_str_weak(TVOC),
+ be_nested_str_weak(NO2),
+ })) ) } )) },
+ { be_const_key_weak(prefix, -1), be_const_var(0) },
+ { be_const_key_weak(shadow_pm10, -1), be_const_var(4) },
+ { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_read_attribute_closure) },
+ { be_const_key_weak(parse_sensors, -1), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_sensors_closure) },
+ { be_const_key_weak(TYPE, 10), be_nested_str_weak(airquality) },
+ { be_const_key_weak(update_virtual, 23), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_update_virtual_closure) },
+ { be_const_key_weak(shadow_tvoc, -1), be_const_var(7) },
+ { be_const_key_weak(shadow_pm1, -1), be_const_var(2) },
+ { be_const_key_weak(ARG, -1), be_nested_str_weak(airquality) },
+ { be_const_key_weak(parse_configuration, 18), be_const_closure(class_Matter_Plugin_Sensor_Air_Quality_parse_configuration_closure) },
+ { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Device_X20key_X20_X28ex_X3A_X20SCD40_X29) },
+ { be_const_key_weak(shadow_co2, 8), be_const_var(5) },
+ { be_const_key_weak(shadow_pm2_5, -1), be_const_var(3) },
+ { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(1,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(44, -1), be_const_int(1) },
+ })) ) } )) },
+ { be_const_key_weak(CLUSTERS, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(12,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(1068, -1), be_const_bytes_instance(00000001000200080009FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(1069, -1), be_const_bytes_instance(00000001000200080009FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(1070, -1), be_const_bytes_instance(00000001000200080009FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(3, -1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(5, 8), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(1037, -1), be_const_bytes_instance(00000001000200080009FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(91, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(29, 6), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(1066, -1), be_const_bytes_instance(00000001000200080009FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(1043, -1), be_const_bytes_instance(00000001000200080009FFF8FFF9FFFAFFFBFFFCFFFD) },
+ })) ) } )) },
+ })),
+ be_str_weak(Matter_Plugin_Sensor_Air_Quality)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Boolean.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Boolean.h
new file mode 100644
index 000000000..673392504
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Boolean.h
@@ -0,0 +1,287 @@
+/* Solidification of Matter_Plugin_2_Sensor_Boolean.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+// compact class 'Matter_Plugin_Sensor_Boolean' ktab size: 17, total: 26 (saved 72 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Sensor_Boolean[17] = {
+ /* K0 */ be_nested_str_weak(tasmota_switch_index),
+ /* K1 */ be_nested_str_weak(find),
+ /* K2 */ be_nested_str_weak(ARG),
+ /* K3 */ be_const_int(1),
+ /* K4 */ be_const_int(0),
+ /* K5 */ be_nested_str_weak(update_shadow),
+ /* K6 */ be_nested_str_weak(VIRTUAL),
+ /* K7 */ be_nested_str_weak(Switch),
+ /* K8 */ be_nested_str_weak(tasmota),
+ /* K9 */ be_nested_str_weak(cmd),
+ /* K10 */ be_nested_str_weak(Status_X2010),
+ /* K11 */ be_nested_str_weak(StatusSNS),
+ /* K12 */ be_nested_str_weak(contains),
+ /* K13 */ be_nested_str_weak(ON),
+ /* K14 */ be_nested_str_weak(shadow_bool_value),
+ /* K15 */ be_nested_str_weak(value_updated),
+ /* K16 */ be_nested_str_weak(init),
+};
+
+
+extern const bclass be_class_Matter_Plugin_Sensor_Boolean;
+
+/********************************************************************
+** Solidified function: parse_configuration
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Boolean_parse_configuration, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Boolean, /* shared constants */
+ be_str_weak(parse_configuration),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0x60080009, // 0000 GETGBL R2 G9
+ 0x8C0C0301, // 0001 GETMET R3 R1 K1
+ 0x88140102, // 0002 GETMBR R5 R0 K2
+ 0x58180003, // 0003 LDCONST R6 K3
+ 0x7C0C0600, // 0004 CALL R3 3
+ 0x7C080200, // 0005 CALL R2 1
+ 0x90020002, // 0006 SETMBR R0 K0 R2
+ 0x88080100, // 0007 GETMBR R2 R0 K0
+ 0x18080504, // 0008 LE R2 R2 K4
+ 0x780A0000, // 0009 JMPF R2 #000B
+ 0x90020103, // 000A SETMBR R0 K0 K3
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: value_updated
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Boolean_value_updated, /* name */
+ be_nested_proto(
+ 1, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Boolean, /* shared constants */
+ be_str_weak(value_updated),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80000000, // 0000 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function:
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Boolean__X3Clambda_X3E, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 8, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Boolean, /* shared constants */
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x60040009, // 0000 GETGBL R1 G9
+ 0x5C080000, // 0001 MOVE R2 R0
+ 0x7C040200, // 0002 CALL R1 1
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: update_shadow
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Boolean_update_shadow, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Boolean, /* shared constants */
+ be_str_weak(update_shadow),
+ &be_const_str_solidified,
+ ( &(const binstruction[41]) { /* code */
+ 0x60040003, // 0000 GETGBL R1 G3
+ 0x5C080000, // 0001 MOVE R2 R0
+ 0x7C040200, // 0002 CALL R1 1
+ 0x8C040305, // 0003 GETMET R1 R1 K5
+ 0x7C040200, // 0004 CALL R1 1
+ 0x88040106, // 0005 GETMBR R1 R0 K6
+ 0x74060020, // 0006 JMPT R1 #0028
+ 0x60040008, // 0007 GETGBL R1 G8
+ 0x88080100, // 0008 GETMBR R2 R0 K0
+ 0x7C040200, // 0009 CALL R1 1
+ 0x00060E01, // 000A ADD R1 K7 R1
+ 0xB80A1000, // 000B GETNGBL R2 K8
+ 0x8C080509, // 000C GETMET R2 R2 K9
+ 0x5810000A, // 000D LDCONST R4 K10
+ 0x50140200, // 000E LDBOOL R5 1 0
+ 0x7C080600, // 000F CALL R2 3
+ 0x4C0C0000, // 0010 LDNIL R3
+ 0x200C0403, // 0011 NE R3 R2 R3
+ 0x780E0003, // 0012 JMPF R3 #0017
+ 0x8C0C0501, // 0013 GETMET R3 R2 K1
+ 0x5814000B, // 0014 LDCONST R5 K11
+ 0x7C0C0400, // 0015 CALL R3 2
+ 0x5C080600, // 0016 MOVE R2 R3
+ 0x4C0C0000, // 0017 LDNIL R3
+ 0x200C0403, // 0018 NE R3 R2 R3
+ 0x780E000D, // 0019 JMPF R3 #0028
+ 0x8C0C050C, // 001A GETMET R3 R2 K12
+ 0x5C140200, // 001B MOVE R5 R1
+ 0x7C0C0400, // 001C CALL R3 2
+ 0x780E0009, // 001D JMPF R3 #0028
+ 0x8C0C0501, // 001E GETMET R3 R2 K1
+ 0x5C140200, // 001F MOVE R5 R1
+ 0x7C0C0400, // 0020 CALL R3 2
+ 0x1C0C070D, // 0021 EQ R3 R3 K13
+ 0x8810010E, // 0022 GETMBR R4 R0 K14
+ 0x20100803, // 0023 NE R4 R4 R3
+ 0x78120001, // 0024 JMPF R4 #0027
+ 0x8C10010F, // 0025 GETMET R4 R0 K15
+ 0x7C100200, // 0026 CALL R4 1
+ 0x90021C03, // 0027 SETMBR R0 K14 R3
+ 0x80000000, // 0028 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Boolean_init, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Boolean, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[11]) { /* code */
+ 0x60100003, // 0000 GETGBL R4 G3
+ 0x5C140000, // 0001 MOVE R5 R0
+ 0x7C100200, // 0002 CALL R4 1
+ 0x8C100910, // 0003 GETMET R4 R4 K16
+ 0x5C180200, // 0004 MOVE R6 R1
+ 0x5C1C0400, // 0005 MOVE R7 R2
+ 0x5C200600, // 0006 MOVE R8 R3
+ 0x7C100800, // 0007 CALL R4 4
+ 0x50100000, // 0008 LDBOOL R4 0 0
+ 0x90021C04, // 0009 SETMBR R0 K14 R4
+ 0x80000000, // 000A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_status
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Boolean_parse_status, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Boolean, /* shared constants */
+ be_str_weak(parse_status),
+ &be_const_str_solidified,
+ ( &(const binstruction[26]) { /* code */
+ 0x540E0009, // 0000 LDINT R3 10
+ 0x1C0C0403, // 0001 EQ R3 R2 R3
+ 0x780E0015, // 0002 JMPF R3 #0019
+ 0x500C0000, // 0003 LDBOOL R3 0 0
+ 0x8C100301, // 0004 GETMET R4 R1 K1
+ 0x60180008, // 0005 GETGBL R6 G8
+ 0x881C0100, // 0006 GETMBR R7 R0 K0
+ 0x7C180200, // 0007 CALL R6 1
+ 0x001A0E06, // 0008 ADD R6 K7 R6
+ 0x7C100400, // 0009 CALL R4 2
+ 0x1C10090D, // 000A EQ R4 R4 K13
+ 0x5C0C0800, // 000B MOVE R3 R4
+ 0x8810010E, // 000C GETMBR R4 R0 K14
+ 0x4C140000, // 000D LDNIL R5
+ 0x20100805, // 000E NE R4 R4 R5
+ 0x78120007, // 000F JMPF R4 #0018
+ 0x8810010E, // 0010 GETMBR R4 R0 K14
+ 0x60140017, // 0011 GETGBL R5 G23
+ 0x5C180600, // 0012 MOVE R6 R3
+ 0x7C140200, // 0013 CALL R5 1
+ 0x20100805, // 0014 NE R4 R4 R5
+ 0x78120001, // 0015 JMPF R4 #0018
+ 0x8C10010F, // 0016 GETMET R4 R0 K15
+ 0x7C100200, // 0017 CALL R4 1
+ 0x90021C03, // 0018 SETMBR R0 K14 R3
+ 0x80000000, // 0019 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Sensor_Boolean
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Device;
+be_local_class(Matter_Plugin_Sensor_Boolean,
+ 2,
+ &be_class_Matter_Plugin_Device,
+ be_nested_map(11,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(shadow_bool_value, -1), be_const_var(1) },
+ { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Switch_X3Cx_X3E_X20number) },
+ { be_const_key_weak(parse_status, -1), be_const_closure(class_Matter_Plugin_Sensor_Boolean_parse_status_closure) },
+ { be_const_key_weak(value_updated, -1), be_const_closure(class_Matter_Plugin_Sensor_Boolean_value_updated_closure) },
+ { be_const_key_weak(tasmota_switch_index, -1), be_const_var(0) },
+ { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Sensor_Boolean__X3Clambda_X3E_closure) },
+ { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Sensor_Boolean_update_shadow_closure) },
+ { be_const_key_weak(ARG, -1), be_nested_str_weak(switch) },
+ { be_const_key_weak(UPDATE_TIME, -1), be_const_int(750) },
+ { be_const_key_weak(init, 8), be_const_closure(class_Matter_Plugin_Sensor_Boolean_init_closure) },
+ { be_const_key_weak(parse_configuration, 2), be_const_closure(class_Matter_Plugin_Sensor_Boolean_parse_configuration_closure) },
+ })),
+ be_str_weak(Matter_Plugin_Sensor_Boolean)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h
deleted file mode 100644
index f4124fc0d..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Contact.h
+++ /dev/null
@@ -1,442 +0,0 @@
-/* Solidification of Matter_Plugin_2_Sensor_Contact.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_Sensor_Contact;
-
-/********************************************************************
-** Solidified function:
-********************************************************************/
-be_local_closure(class_Matter_Plugin_Sensor_Contact__X3Clambda_X3E, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 0, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x60040009, // 0000 GETGBL R1 G9
- 0x5C080000, // 0001 MOVE R2 R0
- 0x7C040200, // 0002 CALL R1 1
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Contact;
-be_local_closure(class_Matter_Plugin_Sensor_Contact_init, /* name */
- be_nested_proto(
- 9, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Contact,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(shadow_contact),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[11]) { /* code */
- 0x60100003, // 0000 GETGBL R4 G3
- 0x5C140000, // 0001 MOVE R5 R0
- 0x7C100200, // 0002 CALL R4 1
- 0x8C100900, // 0003 GETMET R4 R4 K0
- 0x5C180200, // 0004 MOVE R6 R1
- 0x5C1C0400, // 0005 MOVE R7 R2
- 0x5C200600, // 0006 MOVE R8 R3
- 0x7C100800, // 0007 CALL R4 4
- 0x50100000, // 0008 LDBOOL R4 0 0
- 0x90020204, // 0009 SETMBR R0 K1 R4
- 0x80000000, // 000A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_shadow
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Contact;
-be_local_closure(class_Matter_Plugin_Sensor_Contact_update_shadow, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Contact,
- 1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(update_shadow),
- /* K1 */ be_nested_str_weak(VIRTUAL),
- /* K2 */ be_nested_str_weak(Switch),
- /* K3 */ be_nested_str_weak(tasmota_switch_index),
- /* K4 */ be_nested_str_weak(tasmota),
- /* K5 */ be_nested_str_weak(cmd),
- /* K6 */ be_nested_str_weak(Status_X208),
- /* K7 */ be_nested_str_weak(find),
- /* K8 */ be_nested_str_weak(StatusSNS),
- /* K9 */ be_nested_str_weak(contains),
- /* K10 */ be_nested_str_weak(ON),
- /* K11 */ be_nested_str_weak(shadow_contact),
- /* K12 */ be_nested_str_weak(attribute_updated),
- /* K13 */ be_const_int(0),
- }),
- be_str_weak(update_shadow),
- &be_const_str_solidified,
- ( &(const binstruction[43]) { /* code */
- 0x60040003, // 0000 GETGBL R1 G3
- 0x5C080000, // 0001 MOVE R2 R0
- 0x7C040200, // 0002 CALL R1 1
- 0x8C040300, // 0003 GETMET R1 R1 K0
- 0x7C040200, // 0004 CALL R1 1
- 0x88040101, // 0005 GETMBR R1 R0 K1
- 0x74060022, // 0006 JMPT R1 #002A
- 0x60040008, // 0007 GETGBL R1 G8
- 0x88080103, // 0008 GETMBR R2 R0 K3
- 0x7C040200, // 0009 CALL R1 1
- 0x00060401, // 000A ADD R1 K2 R1
- 0xB80A0800, // 000B GETNGBL R2 K4
- 0x8C080505, // 000C GETMET R2 R2 K5
- 0x58100006, // 000D LDCONST R4 K6
- 0x50140200, // 000E LDBOOL R5 1 0
- 0x7C080600, // 000F CALL R2 3
- 0x4C0C0000, // 0010 LDNIL R3
- 0x200C0403, // 0011 NE R3 R2 R3
- 0x780E0003, // 0012 JMPF R3 #0017
- 0x8C0C0507, // 0013 GETMET R3 R2 K7
- 0x58140008, // 0014 LDCONST R5 K8
- 0x7C0C0400, // 0015 CALL R3 2
- 0x5C080600, // 0016 MOVE R2 R3
- 0x4C0C0000, // 0017 LDNIL R3
- 0x200C0403, // 0018 NE R3 R2 R3
- 0x780E000F, // 0019 JMPF R3 #002A
- 0x8C0C0509, // 001A GETMET R3 R2 K9
- 0x5C140200, // 001B MOVE R5 R1
- 0x7C0C0400, // 001C CALL R3 2
- 0x780E000B, // 001D JMPF R3 #002A
- 0x8C0C0507, // 001E GETMET R3 R2 K7
- 0x5C140200, // 001F MOVE R5 R1
- 0x7C0C0400, // 0020 CALL R3 2
- 0x1C0C070A, // 0021 EQ R3 R3 K10
- 0x8810010B, // 0022 GETMBR R4 R0 K11
- 0x20100803, // 0023 NE R4 R4 R3
- 0x78120003, // 0024 JMPF R4 #0029
- 0x8C10010C, // 0025 GETMET R4 R0 K12
- 0x541A0044, // 0026 LDINT R6 69
- 0x581C000D, // 0027 LDCONST R7 K13
- 0x7C100600, // 0028 CALL R4 3
- 0x90021603, // 0029 SETMBR R0 K11 R3
- 0x80000000, // 002A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_configuration
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Contact;
-be_local_closure(class_Matter_Plugin_Sensor_Contact_parse_configuration, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Contact,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota_switch_index),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(ARG),
- /* K3 */ be_const_int(1),
- /* K4 */ be_const_int(0),
- }),
- be_str_weak(parse_configuration),
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x60080009, // 0000 GETGBL R2 G9
- 0x8C0C0301, // 0001 GETMET R3 R1 K1
- 0x88140102, // 0002 GETMBR R5 R0 K2
- 0x58180003, // 0003 LDCONST R6 K3
- 0x7C0C0600, // 0004 CALL R3 3
- 0x7C080200, // 0005 CALL R2 1
- 0x90020002, // 0006 SETMBR R0 K0 R2
- 0x88080100, // 0007 GETMBR R2 R0 K0
- 0x18080504, // 0008 LE R2 R2 K4
- 0x780A0000, // 0009 JMPF R2 #000B
- 0x90020103, // 000A SETMBR R0 K0 K3
- 0x80000000, // 000B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Contact;
-be_local_closure(class_Matter_Plugin_Sensor_Contact_read_attribute, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Contact,
- 1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(shadow_contact),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(BOOL),
- /* K8 */ be_nested_str_weak(NULL),
- /* K9 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[33]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E0044, // 0004 LDINT R7 69
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0010, // 0006 JMPF R7 #0018
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E000E, // 0008 JMPF R7 #0018
- 0x881C0105, // 0009 GETMBR R7 R0 K5
- 0x4C200000, // 000A LDNIL R8
- 0x201C0E08, // 000B NE R7 R7 R8
- 0x781E0005, // 000C JMPF R7 #0013
- 0x8C1C0706, // 000D GETMET R7 R3 K6
- 0x88240907, // 000E GETMBR R9 R4 K7
- 0x88280105, // 000F GETMBR R10 R0 K5
- 0x7C1C0600, // 0010 CALL R7 3
- 0x80040E00, // 0011 RET 1 R7
- 0x70020004, // 0012 JMP #0018
- 0x8C1C0706, // 0013 GETMET R7 R3 K6
- 0x88240908, // 0014 GETMBR R9 R4 K8
- 0x4C280000, // 0015 LDNIL R10
- 0x7C1C0600, // 0016 CALL R7 3
- 0x80040E00, // 0017 RET 1 R7
- 0x601C0003, // 0018 GETGBL R7 G3
- 0x5C200000, // 0019 MOVE R8 R0
- 0x7C1C0200, // 001A CALL R7 1
- 0x8C1C0F09, // 001B GETMET R7 R7 K9
- 0x5C240200, // 001C MOVE R9 R1
- 0x5C280400, // 001D MOVE R10 R2
- 0x5C2C0600, // 001E MOVE R11 R3
- 0x7C1C0800, // 001F CALL R7 4
- 0x80040E00, // 0020 RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_virtual
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Contact;
-be_local_closure(class_Matter_Plugin_Sensor_Contact_update_virtual, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Contact,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(find),
- /* K1 */ be_nested_str_weak(Contact),
- /* K2 */ be_nested_str_weak(shadow_contact),
- /* K3 */ be_nested_str_weak(attribute_updated),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(update_virtual),
- }),
- be_str_weak(update_virtual),
- &be_const_str_solidified,
- ( &(const binstruction[25]) { /* code */
- 0x8C080300, // 0000 GETMET R2 R1 K0
- 0x58100001, // 0001 LDCONST R4 K1
- 0x7C080400, // 0002 CALL R2 2
- 0x4C0C0000, // 0003 LDNIL R3
- 0x200C0403, // 0004 NE R3 R2 R3
- 0x780E000B, // 0005 JMPF R3 #0012
- 0x600C0017, // 0006 GETGBL R3 G23
- 0x5C100400, // 0007 MOVE R4 R2
- 0x7C0C0200, // 0008 CALL R3 1
- 0x5C080600, // 0009 MOVE R2 R3
- 0x880C0102, // 000A GETMBR R3 R0 K2
- 0x200C0602, // 000B NE R3 R3 R2
- 0x780E0004, // 000C JMPF R3 #0012
- 0x8C0C0103, // 000D GETMET R3 R0 K3
- 0x54160044, // 000E LDINT R5 69
- 0x58180004, // 000F LDCONST R6 K4
- 0x7C0C0600, // 0010 CALL R3 3
- 0x90020402, // 0011 SETMBR R0 K2 R2
- 0x600C0003, // 0012 GETGBL R3 G3
- 0x5C100000, // 0013 MOVE R4 R0
- 0x7C0C0200, // 0014 CALL R3 1
- 0x8C0C0705, // 0015 GETMET R3 R3 K5
- 0x5C140200, // 0016 MOVE R5 R1
- 0x7C0C0400, // 0017 CALL R3 2
- 0x80000000, // 0018 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Sensor_Contact
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Device;
-be_local_class(Matter_Plugin_Sensor_Contact,
- 2,
- &be_class_Matter_Plugin_Device,
- be_nested_map(16,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(ARG_TYPE, 4), be_const_static_closure(class_Matter_Plugin_Sensor_Contact__X3Clambda_X3E_closure) },
- { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Switch_X3Cx_X3E_X20number) },
- { be_const_key_weak(shadow_contact, -1), be_const_var(1) },
- { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_init_closure) },
- { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_update_virtual_closure) },
- { be_const_key_weak(update_shadow, 15), be_const_closure(class_Matter_Plugin_Sensor_Contact_update_shadow_closure) },
- { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(1,
- ( (struct bvalue*) &(const bvalue[]) {
- be_nested_str_weak(Contact),
- })) ) } )) },
- { be_const_key_weak(ARG, 6), be_nested_str_weak(switch) },
- { be_const_key_weak(UPDATE_TIME, -1), be_const_int(750) },
- { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Contact) },
- { be_const_key_weak(tasmota_switch_index, 11), be_const_var(0) },
- { be_const_key_weak(TYPES, 12), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(21, -1), be_const_int(1) },
- })) ) } )) },
- { be_const_key_weak(CLUSTERS, 14), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(6,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(69, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- })) ) } )) },
- { be_const_key_weak(TYPE, 9), be_nested_str_weak(contact) },
- { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_read_attribute_closure) },
- { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_parse_configuration_closure) },
- })),
- be_str_weak(Matter_Plugin_Sensor_Contact)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h
new file mode 100644
index 000000000..7481aae2c
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_GenericSwitch_Btn.h
@@ -0,0 +1,400 @@
+/* Solidification of Matter_Plugin_2_Sensor_GenericSwitch_Btn.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+// compact class 'Matter_Plugin_Sensor_GenericSwitch_Btn' ktab size: 24, total: 35 (saved 88 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Sensor_GenericSwitch_Btn[24] = {
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(TLV),
+ /* K2 */ be_nested_str_weak(cluster),
+ /* K3 */ be_nested_str_weak(attribute),
+ /* K4 */ be_const_int(0),
+ /* K5 */ be_nested_str_weak(set),
+ /* K6 */ be_nested_str_weak(U1),
+ /* K7 */ be_const_int(2),
+ /* K8 */ be_const_int(1),
+ /* K9 */ be_nested_str_weak(set_or_nil),
+ /* K10 */ be_nested_str_weak(shadow_position),
+ /* K11 */ be_nested_str_weak(U4),
+ /* K12 */ be_nested_str_weak(read_attribute),
+ /* K13 */ be_nested_str_weak(attribute_updated),
+ /* K14 */ be_nested_str_weak(tasmota_switch_index),
+ /* K15 */ be_nested_str_weak(find),
+ /* K16 */ be_nested_str_weak(ARG),
+ /* K17 */ be_nested_str_weak(_X2C_X22Switch_X22_X3A_X25s),
+ /* K18 */ be_nested_str_weak(shadow_onoff),
+ /* K19 */ be_nested_str_weak(set_position),
+ /* K20 */ be_nested_str_weak(publish_event),
+ /* K21 */ be_nested_str_weak(EVENT_INFO),
+ /* K22 */ be_nested_str_weak(Matter_TLV_item),
+ /* K23 */ be_const_int(3),
+};
+
+
+extern const bclass be_class_Matter_Plugin_Sensor_GenericSwitch_Btn;
+
+/********************************************************************
+** Solidified function: read_attribute
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_read_attribute, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_GenericSwitch_Btn, /* shared constants */
+ be_str_weak(read_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[48]) { /* code */
+ 0xB8120000, // 0000 GETNGBL R4 K0
+ 0x88100901, // 0001 GETMBR R4 R4 K1
+ 0x88140502, // 0002 GETMBR R5 R2 K2
+ 0x88180503, // 0003 GETMBR R6 R2 K3
+ 0x541E003A, // 0004 LDINT R7 59
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E001F, // 0006 JMPF R7 #0027
+ 0x1C1C0D04, // 0007 EQ R7 R6 K4
+ 0x781E0005, // 0008 JMPF R7 #000F
+ 0x8C1C0705, // 0009 GETMET R7 R3 K5
+ 0x88240906, // 000A GETMBR R9 R4 K6
+ 0x58280007, // 000B LDCONST R10 K7
+ 0x7C1C0600, // 000C CALL R7 3
+ 0x80040E00, // 000D RET 1 R7
+ 0x70020017, // 000E JMP #0027
+ 0x1C1C0D08, // 000F EQ R7 R6 K8
+ 0x781E0005, // 0010 JMPF R7 #0017
+ 0x8C1C0709, // 0011 GETMET R7 R3 K9
+ 0x88240906, // 0012 GETMBR R9 R4 K6
+ 0x8828010A, // 0013 GETMBR R10 R0 K10
+ 0x7C1C0600, // 0014 CALL R7 3
+ 0x80040E00, // 0015 RET 1 R7
+ 0x7002000F, // 0016 JMP #0027
+ 0x1C1C0D07, // 0017 EQ R7 R6 K7
+ 0x781E0005, // 0018 JMPF R7 #001F
+ 0x8C1C0705, // 0019 GETMET R7 R3 K5
+ 0x88240906, // 001A GETMBR R9 R4 K6
+ 0x542A0004, // 001B LDINT R10 5
+ 0x7C1C0600, // 001C CALL R7 3
+ 0x80040E00, // 001D RET 1 R7
+ 0x70020007, // 001E JMP #0027
+ 0x541EFFFB, // 001F LDINT R7 65532
+ 0x1C1C0C07, // 0020 EQ R7 R6 R7
+ 0x781E0004, // 0021 JMPF R7 #0027
+ 0x8C1C0705, // 0022 GETMET R7 R3 K5
+ 0x8824090B, // 0023 GETMBR R9 R4 K11
+ 0x542A0015, // 0024 LDINT R10 22
+ 0x7C1C0600, // 0025 CALL R7 3
+ 0x80040E00, // 0026 RET 1 R7
+ 0x601C0003, // 0027 GETGBL R7 G3
+ 0x5C200000, // 0028 MOVE R8 R0
+ 0x7C1C0200, // 0029 CALL R7 1
+ 0x8C1C0F0C, // 002A GETMET R7 R7 K12
+ 0x5C240200, // 002B MOVE R9 R1
+ 0x5C280400, // 002C MOVE R10 R2
+ 0x5C2C0600, // 002D MOVE R11 R3
+ 0x7C1C0800, // 002E CALL R7 4
+ 0x80040E00, // 002F RET 1 R7
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function:
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn__X3Clambda_X3E, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 8, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_GenericSwitch_Btn, /* shared constants */
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x60040009, // 0000 GETGBL R1 G9
+ 0x5C080000, // 0001 MOVE R2 R0
+ 0x7C040200, // 0002 CALL R1 1
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_position
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_set_position, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_GenericSwitch_Btn, /* shared constants */
+ be_str_weak(set_position),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x8808010A, // 0000 GETMBR R2 R0 K10
+ 0x20080202, // 0001 NE R2 R1 R2
+ 0x780A0004, // 0002 JMPF R2 #0008
+ 0x8C08010D, // 0003 GETMET R2 R0 K13
+ 0x5412003A, // 0004 LDINT R4 59
+ 0x58140008, // 0005 LDCONST R5 K8
+ 0x7C080600, // 0006 CALL R2 3
+ 0x90021401, // 0007 SETMBR R0 K10 R1
+ 0x80000000, // 0008 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_configuration
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_parse_configuration, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_GenericSwitch_Btn, /* shared constants */
+ be_str_weak(parse_configuration),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0x60080009, // 0000 GETGBL R2 G9
+ 0x8C0C030F, // 0001 GETMET R3 R1 K15
+ 0x88140110, // 0002 GETMBR R5 R0 K16
+ 0x58180008, // 0003 LDCONST R6 K8
+ 0x7C0C0600, // 0004 CALL R3 3
+ 0x7C080200, // 0005 CALL R2 1
+ 0x90021C02, // 0006 SETMBR R0 K14 R2
+ 0x8808010E, // 0007 GETMBR R2 R0 K14
+ 0x18080504, // 0008 LE R2 R2 K4
+ 0x780A0000, // 0009 JMPF R2 #000B
+ 0x90021D08, // 000A SETMBR R0 K14 K8
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: append_state_json
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_append_state_json, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_GenericSwitch_Btn, /* shared constants */
+ be_str_weak(append_state_json),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x60040018, // 0000 GETGBL R1 G24
+ 0x58080011, // 0001 LDCONST R2 K17
+ 0x600C0009, // 0002 GETGBL R3 G9
+ 0x88100112, // 0003 GETMBR R4 R0 K18
+ 0x7C0C0200, // 0004 CALL R3 1
+ 0x7C040400, // 0005 CALL R1 2
+ 0x80040200, // 0006 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: button_handler
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_button_handler, /* name */
+ be_nested_proto(
+ 15, /* nstack */
+ 5, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_GenericSwitch_Btn, /* shared constants */
+ be_str_weak(button_handler),
+ &be_const_str_solidified,
+ ( &(const binstruction[105]) { /* code */
+ 0x1C140504, // 0000 EQ R5 R2 K4
+ 0x74160001, // 0001 JMPT R5 #0004
+ 0x1C140508, // 0002 EQ R5 R2 K8
+ 0x78160002, // 0003 JMPF R5 #0007
+ 0x8C140113, // 0004 GETMET R5 R0 K19
+ 0x5C1C0600, // 0005 MOVE R7 R3
+ 0x7C140400, // 0006 CALL R5 2
+ 0x1C140508, // 0007 EQ R5 R2 K8
+ 0x78160040, // 0008 JMPF R5 #004A
+ 0x780E0010, // 0009 JMPF R3 #001B
+ 0x8C140114, // 000A GETMET R5 R0 K20
+ 0x541E003A, // 000B LDINT R7 59
+ 0x58200008, // 000C LDCONST R8 K8
+ 0xB8260000, // 000D GETNGBL R9 K0
+ 0x88241315, // 000E GETMBR R9 R9 K21
+ 0xB82A0000, // 000F GETNGBL R10 K0
+ 0x88281501, // 0010 GETMBR R10 R10 K1
+ 0x8C281516, // 0011 GETMET R10 R10 K22
+ 0x7C280200, // 0012 CALL R10 1
+ 0x8C281505, // 0013 GETMET R10 R10 K5
+ 0xB8320000, // 0014 GETNGBL R12 K0
+ 0x88301901, // 0015 GETMBR R12 R12 K1
+ 0x88301906, // 0016 GETMBR R12 R12 K6
+ 0x58340008, // 0017 LDCONST R13 K8
+ 0x7C280600, // 0018 CALL R10 3
+ 0x7C140A00, // 0019 CALL R5 5
+ 0x7002000F, // 001A JMP #002B
+ 0x8C140114, // 001B GETMET R5 R0 K20
+ 0x541E003A, // 001C LDINT R7 59
+ 0x58200017, // 001D LDCONST R8 K23
+ 0xB8260000, // 001E GETNGBL R9 K0
+ 0x88241315, // 001F GETMBR R9 R9 K21
+ 0xB82A0000, // 0020 GETNGBL R10 K0
+ 0x88281501, // 0021 GETMBR R10 R10 K1
+ 0x8C281516, // 0022 GETMET R10 R10 K22
+ 0x7C280200, // 0023 CALL R10 1
+ 0x8C281505, // 0024 GETMET R10 R10 K5
+ 0xB8320000, // 0025 GETNGBL R12 K0
+ 0x88301901, // 0026 GETMBR R12 R12 K1
+ 0x88301906, // 0027 GETMBR R12 R12 K6
+ 0x58340008, // 0028 LDCONST R13 K8
+ 0x7C280600, // 0029 CALL R10 3
+ 0x7C140A00, // 002A CALL R5 5
+ 0x1C140708, // 002B EQ R5 R3 K8
+ 0x7816001B, // 002C JMPF R5 #0049
+ 0x24140904, // 002D GT R5 R4 K4
+ 0x78160019, // 002E JMPF R5 #0049
+ 0x8C140114, // 002F GETMET R5 R0 K20
+ 0x541E003A, // 0030 LDINT R7 59
+ 0x54220004, // 0031 LDINT R8 5
+ 0xB8260000, // 0032 GETNGBL R9 K0
+ 0x88241315, // 0033 GETMBR R9 R9 K21
+ 0xB82A0000, // 0034 GETNGBL R10 K0
+ 0x88281501, // 0035 GETMBR R10 R10 K1
+ 0x8C281516, // 0036 GETMET R10 R10 K22
+ 0x7C280200, // 0037 CALL R10 1
+ 0x8C281505, // 0038 GETMET R10 R10 K5
+ 0xB8320000, // 0039 GETNGBL R12 K0
+ 0x88301901, // 003A GETMBR R12 R12 K1
+ 0x88301906, // 003B GETMBR R12 R12 K6
+ 0x58340008, // 003C LDCONST R13 K8
+ 0x7C280600, // 003D CALL R10 3
+ 0xB82E0000, // 003E GETNGBL R11 K0
+ 0x882C1701, // 003F GETMBR R11 R11 K1
+ 0x8C2C1716, // 0040 GETMET R11 R11 K22
+ 0x7C2C0200, // 0041 CALL R11 1
+ 0x8C2C1705, // 0042 GETMET R11 R11 K5
+ 0xB8360000, // 0043 GETNGBL R13 K0
+ 0x88341B01, // 0044 GETMBR R13 R13 K1
+ 0x88341B06, // 0045 GETMBR R13 R13 K6
+ 0x00380908, // 0046 ADD R14 R4 K8
+ 0x7C2C0600, // 0047 CALL R11 3
+ 0x7C140C00, // 0048 CALL R5 6
+ 0x7002001D, // 0049 JMP #0068
+ 0x1C140507, // 004A EQ R5 R2 K7
+ 0x7816001B, // 004B JMPF R5 #0068
+ 0x24140904, // 004C GT R5 R4 K4
+ 0x78160019, // 004D JMPF R5 #0068
+ 0x8C140114, // 004E GETMET R5 R0 K20
+ 0x541E003A, // 004F LDINT R7 59
+ 0x54220005, // 0050 LDINT R8 6
+ 0xB8260000, // 0051 GETNGBL R9 K0
+ 0x88241315, // 0052 GETMBR R9 R9 K21
+ 0xB82A0000, // 0053 GETNGBL R10 K0
+ 0x88281501, // 0054 GETMBR R10 R10 K1
+ 0x8C281516, // 0055 GETMET R10 R10 K22
+ 0x7C280200, // 0056 CALL R10 1
+ 0x8C281505, // 0057 GETMET R10 R10 K5
+ 0xB8320000, // 0058 GETNGBL R12 K0
+ 0x88301901, // 0059 GETMBR R12 R12 K1
+ 0x88301906, // 005A GETMBR R12 R12 K6
+ 0x58340008, // 005B LDCONST R13 K8
+ 0x7C280600, // 005C CALL R10 3
+ 0xB82E0000, // 005D GETNGBL R11 K0
+ 0x882C1701, // 005E GETMBR R11 R11 K1
+ 0x8C2C1716, // 005F GETMET R11 R11 K22
+ 0x7C2C0200, // 0060 CALL R11 1
+ 0x8C2C1705, // 0061 GETMET R11 R11 K5
+ 0xB8360000, // 0062 GETNGBL R13 K0
+ 0x88341B01, // 0063 GETMBR R13 R13 K1
+ 0x88341B06, // 0064 GETMBR R13 R13 K6
+ 0x5C380800, // 0065 MOVE R14 R4
+ 0x7C2C0600, // 0066 CALL R11 3
+ 0x7C140C00, // 0067 CALL R5 6
+ 0x80000000, // 0068 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Sensor_GenericSwitch_Btn
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Device;
+be_local_class(Matter_Plugin_Sensor_GenericSwitch_Btn,
+ 2,
+ &be_class_Matter_Plugin_Device,
+ be_nested_map(14,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(read_attribute, 4), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_read_attribute_closure) },
+ { be_const_key_weak(ARG, -1), be_nested_str_weak(button) },
+ { be_const_key_weak(ARG_TYPE, 6), be_const_static_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn__X3Clambda_X3E_closure) },
+ { be_const_key_weak(TYPE, 9), be_nested_str_weak(gensw_btn) },
+ { be_const_key_weak(button_handler, 13), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_button_handler_closure) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Generic_X20Switch_X2FButton) },
+ { be_const_key_weak(append_state_json, 12), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_append_state_json_closure) },
+ { be_const_key_weak(set_position, -1), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_set_position_closure) },
+ { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_Sensor_GenericSwitch_Btn_parse_configuration_closure) },
+ { be_const_key_weak(shadow_position, -1), be_const_var(1) },
+ { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(1,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(15, -1), be_const_int(2) },
+ })) ) } )) },
+ { be_const_key_weak(ARG_HINT, 8), be_nested_str_weak(Button_X3Cx_X3E_X20number) },
+ { be_const_key_weak(tasmota_switch_index, -1), be_const_var(0) },
+ { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(6,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(5, 1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(29, -1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(3, 2), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(59, 0), be_const_bytes_instance(000000010002FFF8FFF9FFFAFFFBFFFCFFFD) },
+ })) ) } )) },
+ })),
+ be_str_weak(Matter_Plugin_Sensor_GenericSwitch_Btn)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h
deleted file mode 100644
index eb2704d72..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Occupancy.h
+++ /dev/null
@@ -1,463 +0,0 @@
-/* Solidification of Matter_Plugin_2_Sensor_Occupancy.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_Sensor_Occupancy;
-
-/********************************************************************
-** Solidified function:
-********************************************************************/
-be_local_closure(class_Matter_Plugin_Sensor_Occupancy__X3Clambda_X3E, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 0, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x60040009, // 0000 GETGBL R1 G9
- 0x5C080000, // 0001 MOVE R2 R0
- 0x7C040200, // 0002 CALL R1 1
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_virtual
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Occupancy;
-be_local_closure(class_Matter_Plugin_Sensor_Occupancy_update_virtual, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Occupancy,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(find),
- /* K1 */ be_nested_str_weak(Occupancy),
- /* K2 */ be_nested_str_weak(shadow_occupancy),
- /* K3 */ be_nested_str_weak(attribute_updated),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(update_virtual),
- }),
- be_str_weak(update_virtual),
- &be_const_str_solidified,
- ( &(const binstruction[25]) { /* code */
- 0x8C080300, // 0000 GETMET R2 R1 K0
- 0x58100001, // 0001 LDCONST R4 K1
- 0x7C080400, // 0002 CALL R2 2
- 0x4C0C0000, // 0003 LDNIL R3
- 0x200C0403, // 0004 NE R3 R2 R3
- 0x780E000B, // 0005 JMPF R3 #0012
- 0x600C0017, // 0006 GETGBL R3 G23
- 0x5C100400, // 0007 MOVE R4 R2
- 0x7C0C0200, // 0008 CALL R3 1
- 0x5C080600, // 0009 MOVE R2 R3
- 0x880C0102, // 000A GETMBR R3 R0 K2
- 0x200C0602, // 000B NE R3 R3 R2
- 0x780E0004, // 000C JMPF R3 #0012
- 0x8C0C0103, // 000D GETMET R3 R0 K3
- 0x54160405, // 000E LDINT R5 1030
- 0x58180004, // 000F LDCONST R6 K4
- 0x7C0C0600, // 0010 CALL R3 3
- 0x90020402, // 0011 SETMBR R0 K2 R2
- 0x600C0003, // 0012 GETGBL R3 G3
- 0x5C100000, // 0013 MOVE R4 R0
- 0x7C0C0200, // 0014 CALL R3 1
- 0x8C0C0705, // 0015 GETMET R3 R3 K5
- 0x5C140200, // 0016 MOVE R5 R1
- 0x7C0C0400, // 0017 CALL R3 2
- 0x80000000, // 0018 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Occupancy;
-be_local_closure(class_Matter_Plugin_Sensor_Occupancy_init, /* name */
- be_nested_proto(
- 9, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Occupancy,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(shadow_occupancy),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[11]) { /* code */
- 0x60100003, // 0000 GETGBL R4 G3
- 0x5C140000, // 0001 MOVE R5 R0
- 0x7C100200, // 0002 CALL R4 1
- 0x8C100900, // 0003 GETMET R4 R4 K0
- 0x5C180200, // 0004 MOVE R6 R1
- 0x5C1C0400, // 0005 MOVE R7 R2
- 0x5C200600, // 0006 MOVE R8 R3
- 0x7C100800, // 0007 CALL R4 4
- 0x50100000, // 0008 LDBOOL R4 0 0
- 0x90020204, // 0009 SETMBR R0 K1 R4
- 0x80000000, // 000A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_shadow
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Occupancy;
-be_local_closure(class_Matter_Plugin_Sensor_Occupancy_update_shadow, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Occupancy,
- 1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(update_shadow),
- /* K1 */ be_nested_str_weak(VIRTUAL),
- /* K2 */ be_nested_str_weak(Switch),
- /* K3 */ be_nested_str_weak(tasmota_switch_index),
- /* K4 */ be_nested_str_weak(tasmota),
- /* K5 */ be_nested_str_weak(cmd),
- /* K6 */ be_nested_str_weak(Status_X208),
- /* K7 */ be_nested_str_weak(find),
- /* K8 */ be_nested_str_weak(StatusSNS),
- /* K9 */ be_nested_str_weak(contains),
- /* K10 */ be_nested_str_weak(ON),
- /* K11 */ be_nested_str_weak(shadow_occupancy),
- /* K12 */ be_nested_str_weak(attribute_updated),
- /* K13 */ be_const_int(0),
- }),
- be_str_weak(update_shadow),
- &be_const_str_solidified,
- ( &(const binstruction[43]) { /* code */
- 0x60040003, // 0000 GETGBL R1 G3
- 0x5C080000, // 0001 MOVE R2 R0
- 0x7C040200, // 0002 CALL R1 1
- 0x8C040300, // 0003 GETMET R1 R1 K0
- 0x7C040200, // 0004 CALL R1 1
- 0x88040101, // 0005 GETMBR R1 R0 K1
- 0x74060022, // 0006 JMPT R1 #002A
- 0x60040008, // 0007 GETGBL R1 G8
- 0x88080103, // 0008 GETMBR R2 R0 K3
- 0x7C040200, // 0009 CALL R1 1
- 0x00060401, // 000A ADD R1 K2 R1
- 0xB80A0800, // 000B GETNGBL R2 K4
- 0x8C080505, // 000C GETMET R2 R2 K5
- 0x58100006, // 000D LDCONST R4 K6
- 0x50140200, // 000E LDBOOL R5 1 0
- 0x7C080600, // 000F CALL R2 3
- 0x4C0C0000, // 0010 LDNIL R3
- 0x200C0403, // 0011 NE R3 R2 R3
- 0x780E0003, // 0012 JMPF R3 #0017
- 0x8C0C0507, // 0013 GETMET R3 R2 K7
- 0x58140008, // 0014 LDCONST R5 K8
- 0x7C0C0400, // 0015 CALL R3 2
- 0x5C080600, // 0016 MOVE R2 R3
- 0x4C0C0000, // 0017 LDNIL R3
- 0x200C0403, // 0018 NE R3 R2 R3
- 0x780E000F, // 0019 JMPF R3 #002A
- 0x8C0C0509, // 001A GETMET R3 R2 K9
- 0x5C140200, // 001B MOVE R5 R1
- 0x7C0C0400, // 001C CALL R3 2
- 0x780E000B, // 001D JMPF R3 #002A
- 0x8C0C0507, // 001E GETMET R3 R2 K7
- 0x5C140200, // 001F MOVE R5 R1
- 0x7C0C0400, // 0020 CALL R3 2
- 0x1C0C070A, // 0021 EQ R3 R3 K10
- 0x8810010B, // 0022 GETMBR R4 R0 K11
- 0x20100803, // 0023 NE R4 R4 R3
- 0x78120003, // 0024 JMPF R4 #0029
- 0x8C10010C, // 0025 GETMET R4 R0 K12
- 0x541A0405, // 0026 LDINT R6 1030
- 0x581C000D, // 0027 LDCONST R7 K13
- 0x7C100600, // 0028 CALL R4 3
- 0x90021603, // 0029 SETMBR R0 K11 R3
- 0x80000000, // 002A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_configuration
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Occupancy;
-be_local_closure(class_Matter_Plugin_Sensor_Occupancy_parse_configuration, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Occupancy,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota_switch_index),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(ARG),
- /* K3 */ be_const_int(1),
- /* K4 */ be_const_int(0),
- }),
- be_str_weak(parse_configuration),
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x60080009, // 0000 GETGBL R2 G9
- 0x8C0C0301, // 0001 GETMET R3 R1 K1
- 0x88140102, // 0002 GETMBR R5 R0 K2
- 0x58180003, // 0003 LDCONST R6 K3
- 0x7C0C0600, // 0004 CALL R3 3
- 0x7C080200, // 0005 CALL R2 1
- 0x90020002, // 0006 SETMBR R0 K0 R2
- 0x88080100, // 0007 GETMBR R2 R0 K0
- 0x18080504, // 0008 LE R2 R2 K4
- 0x780A0000, // 0009 JMPF R2 #000B
- 0x90020103, // 000A SETMBR R0 K0 K3
- 0x80000000, // 000B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Occupancy;
-be_local_closure(class_Matter_Plugin_Sensor_Occupancy_read_attribute, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Occupancy,
- 1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(shadow_occupancy),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(U1),
- /* K8 */ be_nested_str_weak(NULL),
- /* K9 */ be_const_int(1),
- /* K10 */ be_const_int(3),
- /* K11 */ be_const_int(2),
- /* K12 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[49]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E0405, // 0004 LDINT R7 1030
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0020, // 0006 JMPF R7 #0028
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E000F, // 0008 JMPF R7 #0019
- 0x881C0105, // 0009 GETMBR R7 R0 K5
- 0x4C200000, // 000A LDNIL R8
- 0x201C0E08, // 000B NE R7 R7 R8
- 0x781E0005, // 000C JMPF R7 #0013
- 0x8C1C0706, // 000D GETMET R7 R3 K6
- 0x88240907, // 000E GETMBR R9 R4 K7
- 0x88280105, // 000F GETMBR R10 R0 K5
- 0x7C1C0600, // 0010 CALL R7 3
- 0x80040E00, // 0011 RET 1 R7
- 0x70020004, // 0012 JMP #0018
- 0x8C1C0706, // 0013 GETMET R7 R3 K6
- 0x88240908, // 0014 GETMBR R9 R4 K8
- 0x4C280000, // 0015 LDNIL R10
- 0x7C1C0600, // 0016 CALL R7 3
- 0x80040E00, // 0017 RET 1 R7
- 0x7002000E, // 0018 JMP #0028
- 0x1C1C0D09, // 0019 EQ R7 R6 K9
- 0x781E0005, // 001A JMPF R7 #0021
- 0x8C1C0706, // 001B GETMET R7 R3 K6
- 0x88240907, // 001C GETMBR R9 R4 K7
- 0x5828000A, // 001D LDCONST R10 K10
- 0x7C1C0600, // 001E CALL R7 3
- 0x80040E00, // 001F RET 1 R7
- 0x70020006, // 0020 JMP #0028
- 0x1C1C0D0B, // 0021 EQ R7 R6 K11
- 0x781E0004, // 0022 JMPF R7 #0028
- 0x8C1C0706, // 0023 GETMET R7 R3 K6
- 0x88240907, // 0024 GETMBR R9 R4 K7
- 0x58280004, // 0025 LDCONST R10 K4
- 0x7C1C0600, // 0026 CALL R7 3
- 0x80040E00, // 0027 RET 1 R7
- 0x601C0003, // 0028 GETGBL R7 G3
- 0x5C200000, // 0029 MOVE R8 R0
- 0x7C1C0200, // 002A CALL R7 1
- 0x8C1C0F0C, // 002B GETMET R7 R7 K12
- 0x5C240200, // 002C MOVE R9 R1
- 0x5C280400, // 002D MOVE R10 R2
- 0x5C2C0600, // 002E MOVE R11 R3
- 0x7C1C0800, // 002F CALL R7 4
- 0x80040E00, // 0030 RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Sensor_Occupancy
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Device;
-be_local_class(Matter_Plugin_Sensor_Occupancy,
- 2,
- &be_class_Matter_Plugin_Device,
- be_nested_map(16,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(ARG_TYPE, 2), be_const_static_closure(class_Matter_Plugin_Sensor_Occupancy__X3Clambda_X3E_closure) },
- { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Switch_X3Cx_X3E_X20number) },
- { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_update_virtual_closure) },
- { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_init_closure) },
- { be_const_key_weak(tasmota_switch_index, 9), be_const_var(0) },
- { be_const_key_weak(update_shadow, 14), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_update_shadow_closure) },
- { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Occupancy) },
- { be_const_key_weak(ARG, 12), be_nested_str_weak(switch) },
- { be_const_key_weak(UPDATE_TIME, -1), be_const_int(750) },
- { be_const_key_weak(CLUSTERS, 11), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(6,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(1030, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(9,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- })) ) } )) },
- { be_const_key_weak(read_attribute, 4), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_read_attribute_closure) },
- { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(263, -1), be_const_int(2) },
- })) ) } )) },
- { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(1,
- ( (struct bvalue*) &(const bvalue[]) {
- be_nested_str_weak(Occupancy),
- })) ) } )) },
- { be_const_key_weak(TYPE, 6), be_nested_str_weak(occupancy) },
- { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_parse_configuration_closure) },
- { be_const_key_weak(shadow_occupancy, -1), be_const_var(1) },
- })),
- be_str_weak(Matter_Plugin_Sensor_Occupancy)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_OnOff.h
deleted file mode 100644
index 8934ec9f9..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_OnOff.h
+++ /dev/null
@@ -1,368 +0,0 @@
-/* Solidification of Matter_Plugin_2_Sensor_OnOff.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_Sensor_OnOff;
-
-/********************************************************************
-** Solidified function:
-********************************************************************/
-be_local_closure(class_Matter_Plugin_Sensor_OnOff__X3Clambda_X3E, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 0, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x60040009, // 0000 GETGBL R1 G9
- 0x5C080000, // 0001 MOVE R2 R0
- 0x7C040200, // 0002 CALL R1 1
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_shadow
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_OnOff;
-be_local_closure(class_Matter_Plugin_Sensor_OnOff_update_shadow, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_OnOff,
- 1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(update_shadow),
- /* K1 */ be_nested_str_weak(VIRTUAL),
- /* K2 */ be_nested_str_weak(Switch),
- /* K3 */ be_nested_str_weak(tasmota_switch_index),
- /* K4 */ be_nested_str_weak(tasmota),
- /* K5 */ be_nested_str_weak(cmd),
- /* K6 */ be_nested_str_weak(Status_X208),
- /* K7 */ be_nested_str_weak(find),
- /* K8 */ be_nested_str_weak(StatusSNS),
- /* K9 */ be_nested_str_weak(contains),
- /* K10 */ be_nested_str_weak(ON),
- /* K11 */ be_nested_str_weak(shadow_onoff),
- /* K12 */ be_nested_str_weak(attribute_updated),
- /* K13 */ be_const_int(0),
- }),
- be_str_weak(update_shadow),
- &be_const_str_solidified,
- ( &(const binstruction[43]) { /* code */
- 0x60040003, // 0000 GETGBL R1 G3
- 0x5C080000, // 0001 MOVE R2 R0
- 0x7C040200, // 0002 CALL R1 1
- 0x8C040300, // 0003 GETMET R1 R1 K0
- 0x7C040200, // 0004 CALL R1 1
- 0x88040101, // 0005 GETMBR R1 R0 K1
- 0x74060022, // 0006 JMPT R1 #002A
- 0x60040008, // 0007 GETGBL R1 G8
- 0x88080103, // 0008 GETMBR R2 R0 K3
- 0x7C040200, // 0009 CALL R1 1
- 0x00060401, // 000A ADD R1 K2 R1
- 0xB80A0800, // 000B GETNGBL R2 K4
- 0x8C080505, // 000C GETMET R2 R2 K5
- 0x58100006, // 000D LDCONST R4 K6
- 0x50140200, // 000E LDBOOL R5 1 0
- 0x7C080600, // 000F CALL R2 3
- 0x4C0C0000, // 0010 LDNIL R3
- 0x200C0403, // 0011 NE R3 R2 R3
- 0x780E0003, // 0012 JMPF R3 #0017
- 0x8C0C0507, // 0013 GETMET R3 R2 K7
- 0x58140008, // 0014 LDCONST R5 K8
- 0x7C0C0400, // 0015 CALL R3 2
- 0x5C080600, // 0016 MOVE R2 R3
- 0x4C0C0000, // 0017 LDNIL R3
- 0x200C0403, // 0018 NE R3 R2 R3
- 0x780E000F, // 0019 JMPF R3 #002A
- 0x8C0C0509, // 001A GETMET R3 R2 K9
- 0x5C140200, // 001B MOVE R5 R1
- 0x7C0C0400, // 001C CALL R3 2
- 0x780E000B, // 001D JMPF R3 #002A
- 0x8C0C0507, // 001E GETMET R3 R2 K7
- 0x5C140200, // 001F MOVE R5 R1
- 0x7C0C0400, // 0020 CALL R3 2
- 0x1C0C070A, // 0021 EQ R3 R3 K10
- 0x8810010B, // 0022 GETMBR R4 R0 K11
- 0x20100803, // 0023 NE R4 R4 R3
- 0x78120003, // 0024 JMPF R4 #0029
- 0x8C10010C, // 0025 GETMET R4 R0 K12
- 0x541A0005, // 0026 LDINT R6 6
- 0x581C000D, // 0027 LDCONST R7 K13
- 0x7C100600, // 0028 CALL R4 3
- 0x90021603, // 0029 SETMBR R0 K11 R3
- 0x80000000, // 002A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_configuration
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_OnOff;
-be_local_closure(class_Matter_Plugin_Sensor_OnOff_parse_configuration, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_OnOff,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota_switch_index),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(ARG),
- /* K3 */ be_const_int(1),
- /* K4 */ be_const_int(0),
- }),
- be_str_weak(parse_configuration),
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x60080009, // 0000 GETGBL R2 G9
- 0x8C0C0301, // 0001 GETMET R3 R1 K1
- 0x88140102, // 0002 GETMBR R5 R0 K2
- 0x58180003, // 0003 LDCONST R6 K3
- 0x7C0C0600, // 0004 CALL R3 3
- 0x7C080200, // 0005 CALL R2 1
- 0x90020002, // 0006 SETMBR R0 K0 R2
- 0x88080100, // 0007 GETMBR R2 R0 K0
- 0x18080504, // 0008 LE R2 R2 K4
- 0x780A0000, // 0009 JMPF R2 #000B
- 0x90020103, // 000A SETMBR R0 K0 K3
- 0x80000000, // 000B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_OnOff;
-be_local_closure(class_Matter_Plugin_Sensor_OnOff_read_attribute, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_OnOff,
- 1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_nested_str_weak(update_shadow_lazy),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(BOOL),
- /* K8 */ be_nested_str_weak(shadow_onoff),
- /* K9 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[25]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E0005, // 0004 LDINT R7 6
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0008, // 0006 JMPF R7 #0010
- 0x8C1C0104, // 0007 GETMET R7 R0 K4
- 0x7C1C0200, // 0008 CALL R7 1
- 0x1C1C0D05, // 0009 EQ R7 R6 K5
- 0x781E0004, // 000A JMPF R7 #0010
- 0x8C1C0706, // 000B GETMET R7 R3 K6
- 0x88240907, // 000C GETMBR R9 R4 K7
- 0x88280108, // 000D GETMBR R10 R0 K8
- 0x7C1C0600, // 000E CALL R7 3
- 0x80040E00, // 000F RET 1 R7
- 0x601C0003, // 0010 GETGBL R7 G3
- 0x5C200000, // 0011 MOVE R8 R0
- 0x7C1C0200, // 0012 CALL R7 1
- 0x8C1C0F09, // 0013 GETMET R7 R7 K9
- 0x5C240200, // 0014 MOVE R9 R1
- 0x5C280400, // 0015 MOVE R10 R2
- 0x5C2C0600, // 0016 MOVE R11 R3
- 0x7C1C0800, // 0017 CALL R7 4
- 0x80040E00, // 0018 RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: append_state_json
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_OnOff;
-be_local_closure(class_Matter_Plugin_Sensor_OnOff_append_state_json, /* name */
- be_nested_proto(
- 5, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_OnOff,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_X2C_X22OnOff_X22_X3A_X25s),
- /* K1 */ be_nested_str_weak(shadow_onoff),
- }),
- be_str_weak(append_state_json),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x60040018, // 0000 GETGBL R1 G24
- 0x58080000, // 0001 LDCONST R2 K0
- 0x600C0009, // 0002 GETGBL R3 G9
- 0x88100101, // 0003 GETMBR R4 R0 K1
- 0x7C0C0200, // 0004 CALL R3 1
- 0x7C040400, // 0005 CALL R1 2
- 0x80040200, // 0006 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Sensor_OnOff
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Device;
-be_local_class(Matter_Plugin_Sensor_OnOff,
- 2,
- &be_class_Matter_Plugin_Device,
- be_nested_map(14,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(CLUSTERS, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(6,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- })) ) } )) },
- { be_const_key_weak(ARG, -1), be_nested_str_weak(switch) },
- { be_const_key_weak(UPDATE_TIME, 4), be_const_int(750) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(onoff) },
- { be_const_key_weak(append_state_json, 12), be_const_closure(class_Matter_Plugin_Sensor_OnOff_append_state_json_closure) },
- { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(OnOff_X20Sensor) },
- { be_const_key_weak(shadow_onoff, -1), be_const_var(1) },
- { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Sensor_OnOff_update_shadow_closure) },
- { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_OnOff_read_attribute_closure) },
- { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_Sensor_OnOff_parse_configuration_closure) },
- { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(2128, -1), be_const_int(2) },
- })) ) } )) },
- { be_const_key_weak(ARG_HINT, 9), be_nested_str_weak(Switch_X3Cx_X3E_X20number) },
- { be_const_key_weak(tasmota_switch_index, 13), be_const_var(0) },
- { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Sensor_OnOff__X3Clambda_X3E_closure) },
- })),
- be_str_weak(Matter_Plugin_Sensor_OnOff)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Waterleak.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Waterleak.h
deleted file mode 100644
index a69548646..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Sensor_Waterleak.h
+++ /dev/null
@@ -1,442 +0,0 @@
-/* Solidification of Matter_Plugin_2_Sensor_Waterleak.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_Sensor_Waterleak;
-
-/********************************************************************
-** Solidified function:
-********************************************************************/
-be_local_closure(class_Matter_Plugin_Sensor_Waterleak__X3Clambda_X3E, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 0, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x60040009, // 0000 GETGBL R1 G9
- 0x5C080000, // 0001 MOVE R2 R0
- 0x7C040200, // 0002 CALL R1 1
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Waterleak;
-be_local_closure(class_Matter_Plugin_Sensor_Waterleak_init, /* name */
- be_nested_proto(
- 9, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Waterleak,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(shadow_leak),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[11]) { /* code */
- 0x60100003, // 0000 GETGBL R4 G3
- 0x5C140000, // 0001 MOVE R5 R0
- 0x7C100200, // 0002 CALL R4 1
- 0x8C100900, // 0003 GETMET R4 R4 K0
- 0x5C180200, // 0004 MOVE R6 R1
- 0x5C1C0400, // 0005 MOVE R7 R2
- 0x5C200600, // 0006 MOVE R8 R3
- 0x7C100800, // 0007 CALL R4 4
- 0x50100000, // 0008 LDBOOL R4 0 0
- 0x90020204, // 0009 SETMBR R0 K1 R4
- 0x80000000, // 000A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_shadow
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Waterleak;
-be_local_closure(class_Matter_Plugin_Sensor_Waterleak_update_shadow, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Waterleak,
- 1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(update_shadow),
- /* K1 */ be_nested_str_weak(VIRTUAL),
- /* K2 */ be_nested_str_weak(Switch),
- /* K3 */ be_nested_str_weak(tasmota_switch_index),
- /* K4 */ be_nested_str_weak(tasmota),
- /* K5 */ be_nested_str_weak(cmd),
- /* K6 */ be_nested_str_weak(Status_X208),
- /* K7 */ be_nested_str_weak(find),
- /* K8 */ be_nested_str_weak(StatusSNS),
- /* K9 */ be_nested_str_weak(contains),
- /* K10 */ be_nested_str_weak(ON),
- /* K11 */ be_nested_str_weak(shadow_leak),
- /* K12 */ be_nested_str_weak(attribute_updated),
- /* K13 */ be_const_int(0),
- }),
- be_str_weak(update_shadow),
- &be_const_str_solidified,
- ( &(const binstruction[43]) { /* code */
- 0x60040003, // 0000 GETGBL R1 G3
- 0x5C080000, // 0001 MOVE R2 R0
- 0x7C040200, // 0002 CALL R1 1
- 0x8C040300, // 0003 GETMET R1 R1 K0
- 0x7C040200, // 0004 CALL R1 1
- 0x88040101, // 0005 GETMBR R1 R0 K1
- 0x74060022, // 0006 JMPT R1 #002A
- 0x60040008, // 0007 GETGBL R1 G8
- 0x88080103, // 0008 GETMBR R2 R0 K3
- 0x7C040200, // 0009 CALL R1 1
- 0x00060401, // 000A ADD R1 K2 R1
- 0xB80A0800, // 000B GETNGBL R2 K4
- 0x8C080505, // 000C GETMET R2 R2 K5
- 0x58100006, // 000D LDCONST R4 K6
- 0x50140200, // 000E LDBOOL R5 1 0
- 0x7C080600, // 000F CALL R2 3
- 0x4C0C0000, // 0010 LDNIL R3
- 0x200C0403, // 0011 NE R3 R2 R3
- 0x780E0003, // 0012 JMPF R3 #0017
- 0x8C0C0507, // 0013 GETMET R3 R2 K7
- 0x58140008, // 0014 LDCONST R5 K8
- 0x7C0C0400, // 0015 CALL R3 2
- 0x5C080600, // 0016 MOVE R2 R3
- 0x4C0C0000, // 0017 LDNIL R3
- 0x200C0403, // 0018 NE R3 R2 R3
- 0x780E000F, // 0019 JMPF R3 #002A
- 0x8C0C0509, // 001A GETMET R3 R2 K9
- 0x5C140200, // 001B MOVE R5 R1
- 0x7C0C0400, // 001C CALL R3 2
- 0x780E000B, // 001D JMPF R3 #002A
- 0x8C0C0507, // 001E GETMET R3 R2 K7
- 0x5C140200, // 001F MOVE R5 R1
- 0x7C0C0400, // 0020 CALL R3 2
- 0x1C0C070A, // 0021 EQ R3 R3 K10
- 0x8810010B, // 0022 GETMBR R4 R0 K11
- 0x20100803, // 0023 NE R4 R4 R3
- 0x78120003, // 0024 JMPF R4 #0029
- 0x8C10010C, // 0025 GETMET R4 R0 K12
- 0x541A0044, // 0026 LDINT R6 69
- 0x581C000D, // 0027 LDCONST R7 K13
- 0x7C100600, // 0028 CALL R4 3
- 0x90021603, // 0029 SETMBR R0 K11 R3
- 0x80000000, // 002A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_configuration
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Waterleak;
-be_local_closure(class_Matter_Plugin_Sensor_Waterleak_parse_configuration, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Waterleak,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota_switch_index),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(ARG),
- /* K3 */ be_const_int(1),
- /* K4 */ be_const_int(0),
- }),
- be_str_weak(parse_configuration),
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x60080009, // 0000 GETGBL R2 G9
- 0x8C0C0301, // 0001 GETMET R3 R1 K1
- 0x88140102, // 0002 GETMBR R5 R0 K2
- 0x58180003, // 0003 LDCONST R6 K3
- 0x7C0C0600, // 0004 CALL R3 3
- 0x7C080200, // 0005 CALL R2 1
- 0x90020002, // 0006 SETMBR R0 K0 R2
- 0x88080100, // 0007 GETMBR R2 R0 K0
- 0x18080504, // 0008 LE R2 R2 K4
- 0x780A0000, // 0009 JMPF R2 #000B
- 0x90020103, // 000A SETMBR R0 K0 K3
- 0x80000000, // 000B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Waterleak;
-be_local_closure(class_Matter_Plugin_Sensor_Waterleak_read_attribute, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Waterleak,
- 1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(shadow_leak),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(BOOL),
- /* K8 */ be_nested_str_weak(NULL),
- /* K9 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[33]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E0044, // 0004 LDINT R7 69
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0010, // 0006 JMPF R7 #0018
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E000E, // 0008 JMPF R7 #0018
- 0x881C0105, // 0009 GETMBR R7 R0 K5
- 0x4C200000, // 000A LDNIL R8
- 0x201C0E08, // 000B NE R7 R7 R8
- 0x781E0005, // 000C JMPF R7 #0013
- 0x8C1C0706, // 000D GETMET R7 R3 K6
- 0x88240907, // 000E GETMBR R9 R4 K7
- 0x88280105, // 000F GETMBR R10 R0 K5
- 0x7C1C0600, // 0010 CALL R7 3
- 0x80040E00, // 0011 RET 1 R7
- 0x70020004, // 0012 JMP #0018
- 0x8C1C0706, // 0013 GETMET R7 R3 K6
- 0x88240908, // 0014 GETMBR R9 R4 K8
- 0x4C280000, // 0015 LDNIL R10
- 0x7C1C0600, // 0016 CALL R7 3
- 0x80040E00, // 0017 RET 1 R7
- 0x601C0003, // 0018 GETGBL R7 G3
- 0x5C200000, // 0019 MOVE R8 R0
- 0x7C1C0200, // 001A CALL R7 1
- 0x8C1C0F09, // 001B GETMET R7 R7 K9
- 0x5C240200, // 001C MOVE R9 R1
- 0x5C280400, // 001D MOVE R10 R2
- 0x5C2C0600, // 001E MOVE R11 R3
- 0x7C1C0800, // 001F CALL R7 4
- 0x80040E00, // 0020 RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_virtual
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Waterleak;
-be_local_closure(class_Matter_Plugin_Sensor_Waterleak_update_virtual, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Waterleak,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(find),
- /* K1 */ be_nested_str_weak(Waterleak),
- /* K2 */ be_nested_str_weak(shadow_leak),
- /* K3 */ be_nested_str_weak(attribute_updated),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(update_virtual),
- }),
- be_str_weak(update_virtual),
- &be_const_str_solidified,
- ( &(const binstruction[25]) { /* code */
- 0x8C080300, // 0000 GETMET R2 R1 K0
- 0x58100001, // 0001 LDCONST R4 K1
- 0x7C080400, // 0002 CALL R2 2
- 0x4C0C0000, // 0003 LDNIL R3
- 0x200C0403, // 0004 NE R3 R2 R3
- 0x780E000B, // 0005 JMPF R3 #0012
- 0x600C0017, // 0006 GETGBL R3 G23
- 0x5C100400, // 0007 MOVE R4 R2
- 0x7C0C0200, // 0008 CALL R3 1
- 0x5C080600, // 0009 MOVE R2 R3
- 0x880C0102, // 000A GETMBR R3 R0 K2
- 0x200C0602, // 000B NE R3 R3 R2
- 0x780E0004, // 000C JMPF R3 #0012
- 0x8C0C0103, // 000D GETMET R3 R0 K3
- 0x54160044, // 000E LDINT R5 69
- 0x58180004, // 000F LDCONST R6 K4
- 0x7C0C0600, // 0010 CALL R3 3
- 0x90020402, // 0011 SETMBR R0 K2 R2
- 0x600C0003, // 0012 GETGBL R3 G3
- 0x5C100000, // 0013 MOVE R4 R0
- 0x7C0C0200, // 0014 CALL R3 1
- 0x8C0C0705, // 0015 GETMET R3 R3 K5
- 0x5C140200, // 0016 MOVE R5 R1
- 0x7C0C0400, // 0017 CALL R3 2
- 0x80000000, // 0018 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Sensor_Waterleak
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Device;
-be_local_class(Matter_Plugin_Sensor_Waterleak,
- 2,
- &be_class_Matter_Plugin_Device,
- be_nested_map(16,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(ARG_TYPE, 2), be_const_static_closure(class_Matter_Plugin_Sensor_Waterleak__X3Clambda_X3E_closure) },
- { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Switch_X3Cx_X3E_X20number) },
- { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_update_virtual_closure) },
- { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_init_closure) },
- { be_const_key_weak(shadow_leak, 15), be_const_var(1) },
- { be_const_key_weak(update_shadow, 4), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_update_shadow_closure) },
- { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Waterleak) },
- { be_const_key_weak(ARG, 11), be_nested_str_weak(switch) },
- { be_const_key_weak(UPDATE_TIME, -1), be_const_int(750) },
- { be_const_key_weak(CLUSTERS, 12), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(6,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(69, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- })) ) } )) },
- { be_const_key_weak(tasmota_switch_index, 9), be_const_var(0) },
- { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(1,
- ( (struct bvalue*) &(const bvalue[]) {
- be_nested_str_weak(Waterleak),
- })) ) } )) },
- { be_const_key_weak(read_attribute, 14), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_read_attribute_closure) },
- { be_const_key_weak(TYPE, 6), be_nested_str_weak(waterleak) },
- { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(67, -1), be_const_int(1) },
- })) ) } )) },
- { be_const_key_weak(parse_configuration, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_parse_configuration_closure) },
- })),
- be_str_weak(Matter_Plugin_Sensor_Waterleak)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h
index 618604665..f5d5be5bc 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_2_Shutter.h
@@ -3,30 +3,74 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_Plugin_Shutter' ktab size: 47, total: 78 (saved 248 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Shutter[47] = {
+ /* K0 */ be_nested_str_weak(tasmota_shutter_index),
+ /* K1 */ be_nested_str_weak(find),
+ /* K2 */ be_nested_str_weak(ARG),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_nested_str_weak(shadow_shutter_inverted),
+ /* K5 */ be_nested_str_weak(light),
+ /* K6 */ be_nested_str_weak(matter),
+ /* K7 */ be_nested_str_weak(TLV),
+ /* K8 */ be_nested_str_weak(cluster),
+ /* K9 */ be_nested_str_weak(command),
+ /* K10 */ be_nested_str_weak(update_shadow_lazy),
+ /* K11 */ be_nested_str_weak(tasmota),
+ /* K12 */ be_nested_str_weak(cmd),
+ /* K13 */ be_nested_str_weak(ShutterStopOpen),
+ /* K14 */ be_const_int(1),
+ /* K15 */ be_nested_str_weak(update_shadow),
+ /* K16 */ be_nested_str_weak(ShutterStopClose),
+ /* K17 */ be_const_int(2),
+ /* K18 */ be_nested_str_weak(ShutterStop),
+ /* K19 */ be_nested_str_weak(log),
+ /* K20 */ be_nested_str_weak(MTR_X3A_X20Tilt_X20_X3D_X20),
+ /* K21 */ be_nested_str_weak(findsubval),
+ /* K22 */ be_nested_str_weak(ShutterPosition),
+ /* K23 */ be_nested_str_weak(_X20),
+ /* K24 */ be_nested_str_weak(pos_X25_X3A),
+ /* K25 */ be_nested_str_weak(invoke_request),
+ /* K26 */ be_nested_str_weak(attribute),
+ /* K27 */ be_nested_str_weak(update_inverted),
+ /* K28 */ be_nested_str_weak(set),
+ /* K29 */ be_nested_str_weak(U1),
+ /* K30 */ be_nested_str_weak(U2),
+ /* K31 */ be_nested_str_weak(shadow_shutter_pos),
+ /* K32 */ be_nested_str_weak(shadow_shutter_direction),
+ /* K33 */ be_nested_str_weak(shadow_shutter_target),
+ /* K34 */ be_nested_str_weak(read_attribute),
+ /* K35 */ be_nested_str_weak(Shutter),
+ /* K36 */ be_nested_str_weak(contains),
+ /* K37 */ be_nested_str_weak(Position),
+ /* K38 */ be_nested_str_weak(attribute_updated),
+ /* K39 */ be_nested_str_weak(Direction),
+ /* K40 */ be_nested_str_weak(Target),
+ /* K41 */ be_nested_str_weak(Status_X2013),
+ /* K42 */ be_nested_str_weak(StatusSHT),
+ /* K43 */ be_nested_str_weak(SHT),
+ /* K44 */ be_nested_str_weak(Opt),
+ /* K45 */ be_nested_str_weak(VIRTUAL),
+ /* K46 */ be_nested_str_weak(parse_sensors),
+};
+
extern const bclass be_class_Matter_Plugin_Shutter;
/********************************************************************
** Solidified function: parse_configuration
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Shutter;
be_local_closure(class_Matter_Plugin_Shutter_parse_configuration, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Shutter,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota_shutter_index),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(ARG),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(shadow_shutter_inverted),
- }),
+ &be_ktab_class_Matter_Plugin_Shutter, /* shared constants */
be_str_weak(parse_configuration),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
@@ -51,162 +95,135 @@ be_local_closure(class_Matter_Plugin_Shutter_parse_configuration, /* name */
/********************************************************************
** Solidified function: invoke_request
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Shutter;
be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */
be_nested_proto(
14, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Shutter,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[24]) { /* constants */
- /* K0 */ be_nested_str_weak(light),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(TLV),
- /* K3 */ be_nested_str_weak(cluster),
- /* K4 */ be_nested_str_weak(command),
- /* K5 */ be_nested_str_weak(update_shadow_lazy),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(tasmota),
- /* K8 */ be_nested_str_weak(cmd),
- /* K9 */ be_nested_str_weak(ShutterStopOpen),
- /* K10 */ be_nested_str_weak(tasmota_shutter_index),
- /* K11 */ be_const_int(1),
- /* K12 */ be_nested_str_weak(update_shadow),
- /* K13 */ be_nested_str_weak(ShutterStopClose),
- /* K14 */ be_const_int(2),
- /* K15 */ be_nested_str_weak(ShutterStop),
- /* K16 */ be_nested_str_weak(log),
- /* K17 */ be_nested_str_weak(MTR_X3A_X20Tilt_X20_X3D_X20),
- /* K18 */ be_nested_str_weak(findsubval),
- /* K19 */ be_nested_str_weak(shadow_shutter_inverted),
- /* K20 */ be_nested_str_weak(ShutterPosition),
- /* K21 */ be_nested_str_weak(_X20),
- /* K22 */ be_nested_str_weak(pos_X25_X3A),
- /* K23 */ be_nested_str_weak(invoke_request),
- }),
+ &be_ktab_class_Matter_Plugin_Shutter, /* shared constants */
be_str_weak(invoke_request),
&be_const_str_solidified,
- ( &(const binstruction[116]) { /* code */
- 0xA4120000, // 0000 IMPORT R4 K0
- 0xB8160200, // 0001 GETNGBL R5 K1
- 0x88140B02, // 0002 GETMBR R5 R5 K2
- 0x88180703, // 0003 GETMBR R6 R3 K3
- 0x881C0704, // 0004 GETMBR R7 R3 K4
+ ( &(const binstruction[115]) { /* code */
+ 0xA4120A00, // 0000 IMPORT R4 K5
+ 0xB8160C00, // 0001 GETNGBL R5 K6
+ 0x88140B07, // 0002 GETMBR R5 R5 K7
+ 0x88180708, // 0003 GETMBR R6 R3 K8
+ 0x881C0709, // 0004 GETMBR R7 R3 K9
0x54220101, // 0005 LDINT R8 258
0x1C200C08, // 0006 EQ R8 R6 R8
- 0x78220061, // 0007 JMPF R8 #006A
- 0x8C200105, // 0008 GETMET R8 R0 K5
+ 0x78220060, // 0007 JMPF R8 #0069
+ 0x8C20010A, // 0008 GETMET R8 R0 K10
0x7C200200, // 0009 CALL R8 1
- 0x1C200F06, // 000A EQ R8 R7 K6
+ 0x1C200F03, // 000A EQ R8 R7 K3
0x7822000D, // 000B JMPF R8 #001A
- 0xB8220E00, // 000C GETNGBL R8 K7
- 0x8C201108, // 000D GETMET R8 R8 K8
+ 0xB8221600, // 000C GETNGBL R8 K11
+ 0x8C20110C, // 000D GETMET R8 R8 K12
0x60280008, // 000E GETGBL R10 G8
- 0x882C010A, // 000F GETMBR R11 R0 K10
- 0x002C170B, // 0010 ADD R11 R11 K11
+ 0x882C0100, // 000F GETMBR R11 R0 K0
+ 0x002C170E, // 0010 ADD R11 R11 K14
0x7C280200, // 0011 CALL R10 1
- 0x002A120A, // 0012 ADD R10 K9 R10
+ 0x002A1A0A, // 0012 ADD R10 K13 R10
0x502C0200, // 0013 LDBOOL R11 1 0
0x7C200600, // 0014 CALL R8 3
- 0x8C20010C, // 0015 GETMET R8 R0 K12
+ 0x8C20010F, // 0015 GETMET R8 R0 K15
0x7C200200, // 0016 CALL R8 1
0x50200200, // 0017 LDBOOL R8 1 0
0x80041000, // 0018 RET 1 R8
- 0x7002004E, // 0019 JMP #0069
- 0x1C200F0B, // 001A EQ R8 R7 K11
+ 0x7002004D, // 0019 JMP #0068
+ 0x1C200F0E, // 001A EQ R8 R7 K14
0x7822000D, // 001B JMPF R8 #002A
- 0xB8220E00, // 001C GETNGBL R8 K7
- 0x8C201108, // 001D GETMET R8 R8 K8
+ 0xB8221600, // 001C GETNGBL R8 K11
+ 0x8C20110C, // 001D GETMET R8 R8 K12
0x60280008, // 001E GETGBL R10 G8
- 0x882C010A, // 001F GETMBR R11 R0 K10
- 0x002C170B, // 0020 ADD R11 R11 K11
+ 0x882C0100, // 001F GETMBR R11 R0 K0
+ 0x002C170E, // 0020 ADD R11 R11 K14
0x7C280200, // 0021 CALL R10 1
- 0x002A1A0A, // 0022 ADD R10 K13 R10
+ 0x002A200A, // 0022 ADD R10 K16 R10
0x502C0200, // 0023 LDBOOL R11 1 0
0x7C200600, // 0024 CALL R8 3
- 0x8C20010C, // 0025 GETMET R8 R0 K12
+ 0x8C20010F, // 0025 GETMET R8 R0 K15
0x7C200200, // 0026 CALL R8 1
0x50200200, // 0027 LDBOOL R8 1 0
0x80041000, // 0028 RET 1 R8
- 0x7002003E, // 0029 JMP #0069
- 0x1C200F0E, // 002A EQ R8 R7 K14
+ 0x7002003D, // 0029 JMP #0068
+ 0x1C200F11, // 002A EQ R8 R7 K17
0x7822000D, // 002B JMPF R8 #003A
- 0xB8220E00, // 002C GETNGBL R8 K7
- 0x8C201108, // 002D GETMET R8 R8 K8
+ 0xB8221600, // 002C GETNGBL R8 K11
+ 0x8C20110C, // 002D GETMET R8 R8 K12
0x60280008, // 002E GETGBL R10 G8
- 0x882C010A, // 002F GETMBR R11 R0 K10
- 0x002C170B, // 0030 ADD R11 R11 K11
+ 0x882C0100, // 002F GETMBR R11 R0 K0
+ 0x002C170E, // 0030 ADD R11 R11 K14
0x7C280200, // 0031 CALL R10 1
- 0x002A1E0A, // 0032 ADD R10 K15 R10
+ 0x002A240A, // 0032 ADD R10 K18 R10
0x502C0200, // 0033 LDBOOL R11 1 0
0x7C200600, // 0034 CALL R8 3
- 0x8C20010C, // 0035 GETMET R8 R0 K12
+ 0x8C20010F, // 0035 GETMET R8 R0 K15
0x7C200200, // 0036 CALL R8 1
0x50200200, // 0037 LDBOOL R8 1 0
0x80041000, // 0038 RET 1 R8
- 0x7002002E, // 0039 JMP #0069
+ 0x7002002D, // 0039 JMP #0068
0x54220004, // 003A LDINT R8 5
0x1C200E08, // 003B EQ R8 R7 R8
- 0x7822002B, // 003C JMPF R8 #0069
- 0xB8220E00, // 003D GETNGBL R8 K7
- 0x8C201110, // 003E GETMET R8 R8 K16
- 0x60280008, // 003F GETGBL R10 G8
- 0x5C2C0400, // 0040 MOVE R11 R2
- 0x7C280200, // 0041 CALL R10 1
- 0x002A220A, // 0042 ADD R10 K17 R10
- 0x582C000E, // 0043 LDCONST R11 K14
- 0x7C200600, // 0044 CALL R8 3
- 0x8C200512, // 0045 GETMET R8 R2 K18
- 0x58280006, // 0046 LDCONST R10 K6
- 0x7C200400, // 0047 CALL R8 2
- 0x4C240000, // 0048 LDNIL R9
- 0x20241009, // 0049 NE R9 R8 R9
- 0x7826001B, // 004A JMPF R9 #0067
- 0x54260063, // 004B LDINT R9 100
- 0x0C201009, // 004C DIV R8 R8 R9
- 0x88240113, // 004D GETMBR R9 R0 K19
- 0x1C241306, // 004E EQ R9 R9 K6
- 0x78260001, // 004F JMPF R9 #0052
- 0x54260063, // 0050 LDINT R9 100
- 0x04201208, // 0051 SUB R8 R9 R8
- 0xB8260E00, // 0052 GETNGBL R9 K7
- 0x8C241308, // 0053 GETMET R9 R9 K8
- 0x602C0008, // 0054 GETGBL R11 G8
- 0x8830010A, // 0055 GETMBR R12 R0 K10
- 0x0030190B, // 0056 ADD R12 R12 K11
- 0x7C2C0200, // 0057 CALL R11 1
- 0x002E280B, // 0058 ADD R11 K20 R11
- 0x002C1715, // 0059 ADD R11 R11 K21
- 0x60300008, // 005A GETGBL R12 G8
- 0x5C341000, // 005B MOVE R13 R8
- 0x7C300200, // 005C CALL R12 1
- 0x002C160C, // 005D ADD R11 R11 R12
- 0x50300200, // 005E LDBOOL R12 1 0
- 0x7C240600, // 005F CALL R9 3
- 0x60240008, // 0060 GETGBL R9 G8
- 0x5C281000, // 0061 MOVE R10 R8
- 0x7C240200, // 0062 CALL R9 1
- 0x00262C09, // 0063 ADD R9 K22 R9
- 0x900E2009, // 0064 SETMBR R3 K16 R9
- 0x8C24010C, // 0065 GETMET R9 R0 K12
- 0x7C240200, // 0066 CALL R9 1
- 0x50240200, // 0067 LDBOOL R9 1 0
- 0x80041200, // 0068 RET 1 R9
- 0x70020008, // 0069 JMP #0073
- 0x60200003, // 006A GETGBL R8 G3
- 0x5C240000, // 006B MOVE R9 R0
- 0x7C200200, // 006C CALL R8 1
- 0x8C201117, // 006D GETMET R8 R8 K23
- 0x5C280200, // 006E MOVE R10 R1
- 0x5C2C0400, // 006F MOVE R11 R2
- 0x5C300600, // 0070 MOVE R12 R3
- 0x7C200800, // 0071 CALL R8 4
- 0x80041000, // 0072 RET 1 R8
- 0x80000000, // 0073 RET 0
+ 0x7822002A, // 003C JMPF R8 #0068
+ 0xB8222600, // 003D GETNGBL R8 K19
+ 0x60240008, // 003E GETGBL R9 G8
+ 0x5C280400, // 003F MOVE R10 R2
+ 0x7C240200, // 0040 CALL R9 1
+ 0x00262809, // 0041 ADD R9 K20 R9
+ 0x58280011, // 0042 LDCONST R10 K17
+ 0x7C200400, // 0043 CALL R8 2
+ 0x8C200515, // 0044 GETMET R8 R2 K21
+ 0x58280003, // 0045 LDCONST R10 K3
+ 0x7C200400, // 0046 CALL R8 2
+ 0x4C240000, // 0047 LDNIL R9
+ 0x20241009, // 0048 NE R9 R8 R9
+ 0x7826001B, // 0049 JMPF R9 #0066
+ 0x54260063, // 004A LDINT R9 100
+ 0x0C201009, // 004B DIV R8 R8 R9
+ 0x88240104, // 004C GETMBR R9 R0 K4
+ 0x1C241303, // 004D EQ R9 R9 K3
+ 0x78260001, // 004E JMPF R9 #0051
+ 0x54260063, // 004F LDINT R9 100
+ 0x04201208, // 0050 SUB R8 R9 R8
+ 0xB8261600, // 0051 GETNGBL R9 K11
+ 0x8C24130C, // 0052 GETMET R9 R9 K12
+ 0x602C0008, // 0053 GETGBL R11 G8
+ 0x88300100, // 0054 GETMBR R12 R0 K0
+ 0x0030190E, // 0055 ADD R12 R12 K14
+ 0x7C2C0200, // 0056 CALL R11 1
+ 0x002E2C0B, // 0057 ADD R11 K22 R11
+ 0x002C1717, // 0058 ADD R11 R11 K23
+ 0x60300008, // 0059 GETGBL R12 G8
+ 0x5C341000, // 005A MOVE R13 R8
+ 0x7C300200, // 005B CALL R12 1
+ 0x002C160C, // 005C ADD R11 R11 R12
+ 0x50300200, // 005D LDBOOL R12 1 0
+ 0x7C240600, // 005E CALL R9 3
+ 0x60240008, // 005F GETGBL R9 G8
+ 0x5C281000, // 0060 MOVE R10 R8
+ 0x7C240200, // 0061 CALL R9 1
+ 0x00263009, // 0062 ADD R9 K24 R9
+ 0x900E2609, // 0063 SETMBR R3 K19 R9
+ 0x8C24010F, // 0064 GETMET R9 R0 K15
+ 0x7C240200, // 0065 CALL R9 1
+ 0x50240200, // 0066 LDBOOL R9 1 0
+ 0x80041200, // 0067 RET 1 R9
+ 0x70020008, // 0068 JMP #0072
+ 0x60200003, // 0069 GETGBL R8 G3
+ 0x5C240000, // 006A MOVE R9 R0
+ 0x7C200200, // 006B CALL R8 1
+ 0x8C201119, // 006C GETMET R8 R8 K25
+ 0x5C280200, // 006D MOVE R10 R1
+ 0x5C2C0400, // 006E MOVE R11 R2
+ 0x5C300600, // 006F MOVE R12 R3
+ 0x7C200800, // 0070 CALL R8 4
+ 0x80041000, // 0071 RET 1 R8
+ 0x80000000, // 0072 RET 0
})
)
);
@@ -216,55 +233,36 @@ be_local_closure(class_Matter_Plugin_Shutter_invoke_request, /* name */
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Shutter;
be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */
be_nested_proto(
13, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Shutter,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_nested_str_weak(update_shadow_lazy),
- /* K5 */ be_nested_str_weak(update_inverted),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(set),
- /* K8 */ be_nested_str_weak(U1),
- /* K9 */ be_nested_str_weak(U2),
- /* K10 */ be_const_int(1),
- /* K11 */ be_nested_str_weak(shadow_shutter_inverted),
- /* K12 */ be_nested_str_weak(shadow_shutter_pos),
- /* K13 */ be_nested_str_weak(shadow_shutter_direction),
- /* K14 */ be_const_int(2),
- /* K15 */ be_nested_str_weak(shadow_shutter_target),
- /* K16 */ be_nested_str_weak(read_attribute),
- }),
+ &be_ktab_class_Matter_Plugin_Shutter, /* shared constants */
be_str_weak(read_attribute),
&be_const_str_solidified,
( &(const binstruction[131]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
+ 0xB8120C00, // 0000 GETNGBL R4 K6
+ 0x88100907, // 0001 GETMBR R4 R4 K7
+ 0x88140508, // 0002 GETMBR R5 R2 K8
+ 0x8818051A, // 0003 GETMBR R6 R2 K26
0x4C1C0000, // 0004 LDNIL R7
0x54220101, // 0005 LDINT R8 258
0x1C200A08, // 0006 EQ R8 R5 R8
0x78220071, // 0007 JMPF R8 #007A
- 0x8C200104, // 0008 GETMET R8 R0 K4
+ 0x8C20010A, // 0008 GETMET R8 R0 K10
0x7C200200, // 0009 CALL R8 1
- 0x8C200105, // 000A GETMET R8 R0 K5
+ 0x8C20011B, // 000A GETMET R8 R0 K27
0x7C200200, // 000B CALL R8 1
- 0x1C200D06, // 000C EQ R8 R6 K6
+ 0x1C200D03, // 000C EQ R8 R6 K3
0x78220005, // 000D JMPF R8 #0014
- 0x8C200707, // 000E GETMET R8 R3 K7
- 0x88280908, // 000F GETMBR R10 R4 K8
+ 0x8C20071C, // 000E GETMET R8 R3 K28
+ 0x8828091D, // 000F GETMBR R10 R4 K29
0x542E00FE, // 0010 LDINT R11 255
0x7C200600, // 0011 CALL R8 3
0x80041000, // 0012 RET 1 R8
@@ -272,27 +270,27 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */
0x54220004, // 0014 LDINT R8 5
0x1C200C08, // 0015 EQ R8 R6 R8
0x78220005, // 0016 JMPF R8 #001D
- 0x8C200707, // 0017 GETMET R8 R3 K7
- 0x88280909, // 0018 GETMBR R10 R4 K9
- 0x582C0006, // 0019 LDCONST R11 K6
+ 0x8C20071C, // 0017 GETMET R8 R3 K28
+ 0x8828091E, // 0018 GETMBR R10 R4 K30
+ 0x582C0003, // 0019 LDCONST R11 K3
0x7C200600, // 001A CALL R8 3
0x80041000, // 001B RET 1 R8
0x7002005C, // 001C JMP #007A
0x54220006, // 001D LDINT R8 7
0x1C200C08, // 001E EQ R8 R6 R8
0x78220006, // 001F JMPF R8 #0027
- 0x8C200707, // 0020 GETMET R8 R3 K7
- 0x88280908, // 0021 GETMBR R10 R4 K8
+ 0x8C20071C, // 0020 GETMET R8 R3 K28
+ 0x8828091D, // 0021 GETMBR R10 R4 K29
0x542E0007, // 0022 LDINT R11 8
- 0x002E140B, // 0023 ADD R11 K10 R11
+ 0x002E1C0B, // 0023 ADD R11 K14 R11
0x7C200600, // 0024 CALL R8 3
0x80041000, // 0025 RET 1 R8
0x70020052, // 0026 JMP #007A
0x5422000C, // 0027 LDINT R8 13
0x1C200C08, // 0028 EQ R8 R6 R8
0x78220005, // 0029 JMPF R8 #0030
- 0x8C200707, // 002A GETMET R8 R3 K7
- 0x88280908, // 002B GETMBR R10 R4 K8
+ 0x8C20071C, // 002A GETMET R8 R3 K28
+ 0x8828091D, // 002B GETMBR R10 R4 K29
0x542E00FE, // 002C LDINT R11 255
0x7C200600, // 002D CALL R8 3
0x80041000, // 002E RET 1 R8
@@ -300,22 +298,22 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */
0x5422000D, // 0030 LDINT R8 14
0x1C200C08, // 0031 EQ R8 R6 R8
0x78220013, // 0032 JMPF R8 #0047
- 0x8820010B, // 0033 GETMBR R8 R0 K11
- 0x1C201106, // 0034 EQ R8 R8 K6
+ 0x88200104, // 0033 GETMBR R8 R0 K4
+ 0x1C201103, // 0034 EQ R8 R8 K3
0x78220006, // 0035 JMPF R8 #003D
0x54220063, // 0036 LDINT R8 100
- 0x8824010C, // 0037 GETMBR R9 R0 K12
+ 0x8824011F, // 0037 GETMBR R9 R0 K31
0x04201009, // 0038 SUB R8 R8 R9
0x54260063, // 0039 LDINT R9 100
0x08201009, // 003A MUL R8 R8 R9
0x5C1C1000, // 003B MOVE R7 R8
0x70020003, // 003C JMP #0041
- 0x8820010C, // 003D GETMBR R8 R0 K12
+ 0x8820011F, // 003D GETMBR R8 R0 K31
0x54260063, // 003E LDINT R9 100
0x08201009, // 003F MUL R8 R8 R9
0x5C1C1000, // 0040 MOVE R7 R8
- 0x8C200707, // 0041 GETMET R8 R3 K7
- 0x88280909, // 0042 GETMBR R10 R4 K9
+ 0x8C20071C, // 0041 GETMET R8 R3 K28
+ 0x8828091E, // 0042 GETMBR R10 R4 K30
0x5C2C0E00, // 0043 MOVE R11 R7
0x7C200600, // 0044 CALL R8 3
0x80041000, // 0045 RET 1 R8
@@ -323,19 +321,19 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */
0x54220009, // 0047 LDINT R8 10
0x1C200C08, // 0048 EQ R8 R6 R8
0x78220010, // 0049 JMPF R8 #005B
- 0x8820010D, // 004A GETMBR R8 R0 K13
- 0x1C201106, // 004B EQ R8 R8 K6
+ 0x88200120, // 004A GETMBR R8 R0 K32
+ 0x1C201103, // 004B EQ R8 R8 K3
0x78220001, // 004C JMPF R8 #004F
- 0x58200006, // 004D LDCONST R8 K6
+ 0x58200003, // 004D LDCONST R8 K3
0x70020005, // 004E JMP #0055
- 0x8820010D, // 004F GETMBR R8 R0 K13
- 0x24201106, // 0050 GT R8 R8 K6
+ 0x88200120, // 004F GETMBR R8 R0 K32
+ 0x24201103, // 0050 GT R8 R8 K3
0x78220001, // 0051 JMPF R8 #0054
- 0x5820000A, // 0052 LDCONST R8 K10
+ 0x5820000E, // 0052 LDCONST R8 K14
0x70020000, // 0053 JMP #0055
- 0x5820000E, // 0054 LDCONST R8 K14
- 0x8C240707, // 0055 GETMET R9 R3 K7
- 0x882C0908, // 0056 GETMBR R11 R4 K8
+ 0x58200011, // 0054 LDCONST R8 K17
+ 0x8C24071C, // 0055 GETMET R9 R3 K28
+ 0x882C091D, // 0056 GETMBR R11 R4 K29
0x5C301000, // 0057 MOVE R12 R8
0x7C240600, // 0058 CALL R9 3
0x80041200, // 0059 RET 1 R9
@@ -343,22 +341,22 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */
0x5422000A, // 005B LDINT R8 11
0x1C200C08, // 005C EQ R8 R6 R8
0x78220013, // 005D JMPF R8 #0072
- 0x8820010B, // 005E GETMBR R8 R0 K11
- 0x1C201106, // 005F EQ R8 R8 K6
+ 0x88200104, // 005E GETMBR R8 R0 K4
+ 0x1C201103, // 005F EQ R8 R8 K3
0x78220006, // 0060 JMPF R8 #0068
0x54220063, // 0061 LDINT R8 100
- 0x8824010F, // 0062 GETMBR R9 R0 K15
+ 0x88240121, // 0062 GETMBR R9 R0 K33
0x04201009, // 0063 SUB R8 R8 R9
0x54260063, // 0064 LDINT R9 100
0x08201009, // 0065 MUL R8 R8 R9
0x5C1C1000, // 0066 MOVE R7 R8
0x70020003, // 0067 JMP #006C
- 0x8820010F, // 0068 GETMBR R8 R0 K15
+ 0x88200121, // 0068 GETMBR R8 R0 K33
0x54260063, // 0069 LDINT R9 100
0x08201009, // 006A MUL R8 R8 R9
0x5C1C1000, // 006B MOVE R7 R8
- 0x8C200707, // 006C GETMET R8 R3 K7
- 0x88280909, // 006D GETMBR R10 R4 K9
+ 0x8C20071C, // 006C GETMET R8 R3 K28
+ 0x8828091E, // 006D GETMBR R10 R4 K30
0x5C2C0E00, // 006E MOVE R11 R7
0x7C200600, // 006F CALL R8 3
0x80041000, // 0070 RET 1 R8
@@ -366,15 +364,15 @@ be_local_closure(class_Matter_Plugin_Shutter_read_attribute, /* name */
0x54220016, // 0072 LDINT R8 23
0x1C200C08, // 0073 EQ R8 R6 R8
0x78220004, // 0074 JMPF R8 #007A
- 0x8C200707, // 0075 GETMET R8 R3 K7
- 0x88280908, // 0076 GETMBR R10 R4 K8
- 0x582C0006, // 0077 LDCONST R11 K6
+ 0x8C20071C, // 0075 GETMET R8 R3 K28
+ 0x8828091D, // 0076 GETMBR R10 R4 K29
+ 0x582C0003, // 0077 LDCONST R11 K3
0x7C200600, // 0078 CALL R8 3
0x80041000, // 0079 RET 1 R8
0x60200003, // 007A GETGBL R8 G3
0x5C240000, // 007B MOVE R9 R0
0x7C200200, // 007C CALL R8 1
- 0x8C201110, // 007D GETMET R8 R8 K16
+ 0x8C201122, // 007D GETMET R8 R8 K34
0x5C280200, // 007E MOVE R10 R1
0x5C2C0400, // 007F MOVE R11 R2
0x5C300600, // 0080 MOVE R12 R3
@@ -393,13 +391,13 @@ be_local_closure(class_Matter_Plugin_Shutter__X3Clambda_X3E, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 0, /* varg */
+ 8, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Shutter, /* shared constants */
be_str_weak(_X3Clambda_X3E),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
@@ -416,86 +414,72 @@ be_local_closure(class_Matter_Plugin_Shutter__X3Clambda_X3E, /* name */
/********************************************************************
** Solidified function: parse_sensors
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Shutter;
be_local_closure(class_Matter_Plugin_Shutter_parse_sensors, /* name */
be_nested_proto(
11, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Shutter,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(Shutter),
- /* K1 */ be_nested_str_weak(tasmota_shutter_index),
- /* K2 */ be_const_int(1),
- /* K3 */ be_nested_str_weak(contains),
- /* K4 */ be_nested_str_weak(find),
- /* K5 */ be_nested_str_weak(Position),
- /* K6 */ be_nested_str_weak(shadow_shutter_pos),
- /* K7 */ be_nested_str_weak(attribute_updated),
- /* K8 */ be_nested_str_weak(Direction),
- /* K9 */ be_nested_str_weak(shadow_shutter_direction),
- /* K10 */ be_nested_str_weak(Target),
- /* K11 */ be_nested_str_weak(shadow_shutter_target),
- }),
+ &be_ktab_class_Matter_Plugin_Shutter, /* shared constants */
be_str_weak(parse_sensors),
&be_const_str_solidified,
( &(const binstruction[53]) { /* code */
0x60080008, // 0000 GETGBL R2 G8
- 0x880C0101, // 0001 GETMBR R3 R0 K1
- 0x000C0702, // 0002 ADD R3 R3 K2
+ 0x880C0100, // 0001 GETMBR R3 R0 K0
+ 0x000C070E, // 0002 ADD R3 R3 K14
0x7C080200, // 0003 CALL R2 1
- 0x000A0002, // 0004 ADD R2 K0 R2
- 0x8C0C0303, // 0005 GETMET R3 R1 K3
+ 0x000A4602, // 0004 ADD R2 K35 R2
+ 0x8C0C0324, // 0005 GETMET R3 R1 K36
0x5C140400, // 0006 MOVE R5 R2
0x7C0C0400, // 0007 CALL R3 2
0x780E002A, // 0008 JMPF R3 #0034
0x940C0202, // 0009 GETIDX R3 R1 R2
- 0x8C100704, // 000A GETMET R4 R3 K4
- 0x58180005, // 000B LDCONST R6 K5
+ 0x8C100701, // 000A GETMET R4 R3 K1
+ 0x58180025, // 000B LDCONST R6 K37
0x7C100400, // 000C CALL R4 2
0x4C140000, // 000D LDNIL R5
0x20140805, // 000E NE R5 R4 R5
0x78160007, // 000F JMPF R5 #0018
- 0x88140106, // 0010 GETMBR R5 R0 K6
+ 0x8814011F, // 0010 GETMBR R5 R0 K31
0x20140805, // 0011 NE R5 R4 R5
0x78160003, // 0012 JMPF R5 #0017
- 0x8C140107, // 0013 GETMET R5 R0 K7
+ 0x8C140126, // 0013 GETMET R5 R0 K38
0x541E0101, // 0014 LDINT R7 258
0x5422000D, // 0015 LDINT R8 14
0x7C140600, // 0016 CALL R5 3
- 0x90020C04, // 0017 SETMBR R0 K6 R4
- 0x8C140704, // 0018 GETMET R5 R3 K4
- 0x581C0008, // 0019 LDCONST R7 K8
+ 0x90023E04, // 0017 SETMBR R0 K31 R4
+ 0x8C140701, // 0018 GETMET R5 R3 K1
+ 0x581C0027, // 0019 LDCONST R7 K39
0x7C140400, // 001A CALL R5 2
0x4C180000, // 001B LDNIL R6
0x20180A06, // 001C NE R6 R5 R6
0x781A0007, // 001D JMPF R6 #0026
- 0x88180109, // 001E GETMBR R6 R0 K9
+ 0x88180120, // 001E GETMBR R6 R0 K32
0x20180A06, // 001F NE R6 R5 R6
0x781A0003, // 0020 JMPF R6 #0025
- 0x8C180107, // 0021 GETMET R6 R0 K7
+ 0x8C180126, // 0021 GETMET R6 R0 K38
0x54220101, // 0022 LDINT R8 258
0x54260009, // 0023 LDINT R9 10
0x7C180600, // 0024 CALL R6 3
- 0x90021205, // 0025 SETMBR R0 K9 R5
- 0x8C180704, // 0026 GETMET R6 R3 K4
- 0x5820000A, // 0027 LDCONST R8 K10
+ 0x90024005, // 0025 SETMBR R0 K32 R5
+ 0x8C180701, // 0026 GETMET R6 R3 K1
+ 0x58200028, // 0027 LDCONST R8 K40
0x7C180400, // 0028 CALL R6 2
0x4C1C0000, // 0029 LDNIL R7
0x201C0C07, // 002A NE R7 R6 R7
0x781E0007, // 002B JMPF R7 #0034
- 0x881C010B, // 002C GETMBR R7 R0 K11
+ 0x881C0121, // 002C GETMBR R7 R0 K33
0x201C0C07, // 002D NE R7 R6 R7
0x781E0003, // 002E JMPF R7 #0033
- 0x8C1C0107, // 002F GETMET R7 R0 K7
+ 0x8C1C0126, // 002F GETMET R7 R0 K38
0x54260101, // 0030 LDINT R9 258
0x542A000A, // 0031 LDINT R10 11
0x7C1C0600, // 0032 CALL R7 3
- 0x90021606, // 0033 SETMBR R0 K11 R6
+ 0x90024206, // 0033 SETMBR R0 K33 R6
0x80000000, // 0034 RET 0
})
)
@@ -506,57 +490,44 @@ be_local_closure(class_Matter_Plugin_Shutter_parse_sensors, /* name */
/********************************************************************
** Solidified function: update_inverted
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Shutter;
be_local_closure(class_Matter_Plugin_Shutter_update_inverted, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Shutter,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(shadow_shutter_inverted),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(cmd),
- /* K3 */ be_nested_str_weak(Status_X2013),
- /* K4 */ be_nested_str_weak(contains),
- /* K5 */ be_nested_str_weak(StatusSHT),
- /* K6 */ be_nested_str_weak(find),
- /* K7 */ be_nested_str_weak(SHT),
- /* K8 */ be_nested_str_weak(tasmota_shutter_index),
- /* K9 */ be_nested_str_weak(Opt),
- /* K10 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_Plugin_Shutter, /* shared constants */
be_str_weak(update_inverted),
&be_const_str_solidified,
( &(const binstruction[37]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040104, // 0000 GETMBR R1 R0 K4
0x5409FFFE, // 0001 LDINT R2 -1
0x1C040202, // 0002 EQ R1 R1 R2
0x7806001F, // 0003 JMPF R1 #0024
- 0xB8060200, // 0004 GETNGBL R1 K1
- 0x8C040302, // 0005 GETMET R1 R1 K2
- 0x580C0003, // 0006 LDCONST R3 K3
+ 0xB8061600, // 0004 GETNGBL R1 K11
+ 0x8C04030C, // 0005 GETMET R1 R1 K12
+ 0x580C0029, // 0006 LDCONST R3 K41
0x50100200, // 0007 LDBOOL R4 1 0
0x7C040600, // 0008 CALL R1 3
- 0x8C080304, // 0009 GETMET R2 R1 K4
- 0x58100005, // 000A LDCONST R4 K5
+ 0x8C080324, // 0009 GETMET R2 R1 K36
+ 0x5810002A, // 000A LDCONST R4 K42
0x7C080400, // 000B CALL R2 2
0x780A0016, // 000C JMPF R2 #0024
- 0x94040305, // 000D GETIDX R1 R1 K5
- 0x8C080306, // 000E GETMET R2 R1 K6
+ 0x9404032A, // 000D GETIDX R1 R1 K42
+ 0x8C080301, // 000E GETMET R2 R1 K1
0x60100008, // 000F GETGBL R4 G8
- 0x88140108, // 0010 GETMBR R5 R0 K8
+ 0x88140100, // 0010 GETMBR R5 R0 K0
0x7C100200, // 0011 CALL R4 1
- 0x00120E04, // 0012 ADD R4 K7 R4
+ 0x00125604, // 0012 ADD R4 K43 R4
0x60140013, // 0013 GETGBL R5 G19
0x7C140000, // 0014 CALL R5 0
0x7C080600, // 0015 CALL R2 3
- 0x8C080506, // 0016 GETMET R2 R2 K6
- 0x58100009, // 0017 LDCONST R4 K9
+ 0x8C080501, // 0016 GETMET R2 R2 K1
+ 0x5810002C, // 0017 LDCONST R4 K44
0x7C080400, // 0018 CALL R2 2
0x4C0C0000, // 0019 LDNIL R3
0x200C0403, // 001A NE R3 R2 R3
@@ -565,10 +536,10 @@ be_local_closure(class_Matter_Plugin_Shutter_update_inverted, /* name */
0x6010000C, // 001D GETGBL R4 G12
0x5C140400, // 001E MOVE R5 R2
0x7C100200, // 001F CALL R4 1
- 0x0410090A, // 0020 SUB R4 R4 K10
+ 0x0410090E, // 0020 SUB R4 R4 K14
0x94100404, // 0021 GETIDX R4 R2 R4
0x7C0C0200, // 0022 CALL R3 1
- 0x90020003, // 0023 SETMBR R0 K0 R3
+ 0x90020803, // 0023 SETMBR R0 K4 R3
0x80000000, // 0024 RET 0
})
)
@@ -579,52 +550,41 @@ be_local_closure(class_Matter_Plugin_Shutter_update_inverted, /* name */
/********************************************************************
** Solidified function: update_shadow
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Shutter;
be_local_closure(class_Matter_Plugin_Shutter_update_shadow, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Shutter,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(VIRTUAL),
- /* K1 */ be_nested_str_weak(update_inverted),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(cmd),
- /* K4 */ be_nested_str_weak(ShutterPosition),
- /* K5 */ be_nested_str_weak(tasmota_shutter_index),
- /* K6 */ be_const_int(1),
- /* K7 */ be_nested_str_weak(parse_sensors),
- /* K8 */ be_nested_str_weak(update_shadow),
- }),
+ &be_ktab_class_Matter_Plugin_Shutter, /* shared constants */
be_str_weak(update_shadow),
&be_const_str_solidified,
( &(const binstruction[23]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804012D, // 0000 GETMBR R1 R0 K45
0x7406000E, // 0001 JMPT R1 #0011
- 0x8C040101, // 0002 GETMET R1 R0 K1
+ 0x8C04011B, // 0002 GETMET R1 R0 K27
0x7C040200, // 0003 CALL R1 1
- 0xB8060400, // 0004 GETNGBL R1 K2
- 0x8C040303, // 0005 GETMET R1 R1 K3
+ 0xB8061600, // 0004 GETNGBL R1 K11
+ 0x8C04030C, // 0005 GETMET R1 R1 K12
0x600C0008, // 0006 GETGBL R3 G8
- 0x88100105, // 0007 GETMBR R4 R0 K5
- 0x00100906, // 0008 ADD R4 R4 K6
+ 0x88100100, // 0007 GETMBR R4 R0 K0
+ 0x0010090E, // 0008 ADD R4 R4 K14
0x7C0C0200, // 0009 CALL R3 1
- 0x000E0803, // 000A ADD R3 K4 R3
+ 0x000E2C03, // 000A ADD R3 K22 R3
0x50100200, // 000B LDBOOL R4 1 0
0x7C040600, // 000C CALL R1 3
0x78060002, // 000D JMPF R1 #0011
- 0x8C080107, // 000E GETMET R2 R0 K7
+ 0x8C08012E, // 000E GETMET R2 R0 K46
0x5C100200, // 000F MOVE R4 R1
0x7C080400, // 0010 CALL R2 2
0x60040003, // 0011 GETGBL R1 G3
0x5C080000, // 0012 MOVE R2 R0
0x7C040200, // 0013 CALL R1 1
- 0x8C040308, // 0014 GETMET R1 R1 K8
+ 0x8C04030F, // 0014 GETMET R1 R1 K15
0x7C040200, // 0015 CALL R1 1
0x80000000, // 0016 RET 0
})
@@ -653,93 +613,12 @@ be_local_class(Matter_Plugin_Shutter,
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(258, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(14,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(5),
- be_const_int(7),
- be_const_int(10),
- be_const_int(11),
- be_const_int(13),
- be_const_int(14),
- be_const_int(23),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
+ { be_const_key_int(258, -1), be_const_bytes_instance(000000050007000A000B000D000E0017FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(3, 2), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(29, 1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
})) ) } )) },
{ be_const_key_weak(invoke_request, 3), be_const_closure(class_Matter_Plugin_Shutter_invoke_request_closure) },
{ be_const_key_weak(read_attribute, 11), be_const_closure(class_Matter_Plugin_Shutter_read_attribute_closure) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Light0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Light0.h
deleted file mode 100644
index fb95b30e9..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Light0.h
+++ /dev/null
@@ -1,574 +0,0 @@
-/* Solidification of Matter_Plugin_3_Bridge_Light0.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_Bridge_Light0;
-
-/********************************************************************
-** Solidified function: set_onoff
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light0;
-be_local_closure(class_Matter_Plugin_Bridge_Light0_set_onoff, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light0,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(call_remote_sync),
- /* K1 */ be_nested_str_weak(Power),
- /* K2 */ be_nested_str_weak(tasmota_relay_index),
- /* K3 */ be_nested_str_weak(1),
- /* K4 */ be_nested_str_weak(0),
- /* K5 */ be_nested_str_weak(parse_update),
- }),
- be_str_weak(set_onoff),
- &be_const_str_solidified,
- ( &(const binstruction[18]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
- 0x60100008, // 0001 GETGBL R4 G8
- 0x88140102, // 0002 GETMBR R5 R0 K2
- 0x7C100200, // 0003 CALL R4 1
- 0x00120204, // 0004 ADD R4 K1 R4
- 0x78060001, // 0005 JMPF R1 #0008
- 0x58140003, // 0006 LDCONST R5 K3
- 0x70020000, // 0007 JMP #0009
- 0x58140004, // 0008 LDCONST R5 K4
- 0x7C080600, // 0009 CALL R2 3
- 0x4C0C0000, // 000A LDNIL R3
- 0x200C0403, // 000B NE R3 R2 R3
- 0x780E0003, // 000C JMPF R3 #0011
- 0x8C0C0105, // 000D GETMET R3 R0 K5
- 0x5C140400, // 000E MOVE R5 R2
- 0x541A000A, // 000F LDINT R6 11
- 0x7C0C0600, // 0010 CALL R3 3
- 0x80000000, // 0011 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light0;
-be_local_closure(class_Matter_Plugin_Bridge_Light0_init, /* name */
- be_nested_proto(
- 9, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light0,
- 1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(shadow_onoff),
- /* K2 */ be_nested_str_weak(tasmota_relay_index),
- /* K3 */ be_nested_str_weak(find),
- /* K4 */ be_nested_str_weak(ARG),
- /* K5 */ be_const_int(1),
- /* K6 */ be_const_int(0),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[22]) { /* code */
- 0x60100003, // 0000 GETGBL R4 G3
- 0x5C140000, // 0001 MOVE R5 R0
- 0x7C100200, // 0002 CALL R4 1
- 0x8C100900, // 0003 GETMET R4 R4 K0
- 0x5C180200, // 0004 MOVE R6 R1
- 0x5C1C0400, // 0005 MOVE R7 R2
- 0x5C200600, // 0006 MOVE R8 R3
- 0x7C100800, // 0007 CALL R4 4
- 0x50100000, // 0008 LDBOOL R4 0 0
- 0x90020204, // 0009 SETMBR R0 K1 R4
- 0x60100009, // 000A GETGBL R4 G9
- 0x8C140703, // 000B GETMET R5 R3 K3
- 0x881C0104, // 000C GETMBR R7 R0 K4
- 0x58200005, // 000D LDCONST R8 K5
- 0x7C140600, // 000E CALL R5 3
- 0x7C100200, // 000F CALL R4 1
- 0x90020404, // 0010 SETMBR R0 K2 R4
- 0x88100102, // 0011 GETMBR R4 R0 K2
- 0x18100906, // 0012 LE R4 R4 K6
- 0x78120000, // 0013 JMPF R4 #0015
- 0x90020505, // 0014 SETMBR R0 K2 K5
- 0x80000000, // 0015 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light0;
-be_local_closure(class_Matter_Plugin_Bridge_Light0_read_attribute, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light0,
- 1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_nested_str_weak(update_shadow_lazy),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(BOOL),
- /* K8 */ be_nested_str_weak(shadow_onoff),
- /* K9 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[25]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E0005, // 0004 LDINT R7 6
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0008, // 0006 JMPF R7 #0010
- 0x8C1C0104, // 0007 GETMET R7 R0 K4
- 0x7C1C0200, // 0008 CALL R7 1
- 0x1C1C0D05, // 0009 EQ R7 R6 K5
- 0x781E0004, // 000A JMPF R7 #0010
- 0x8C1C0706, // 000B GETMET R7 R3 K6
- 0x88240907, // 000C GETMBR R9 R4 K7
- 0x88280108, // 000D GETMBR R10 R0 K8
- 0x7C1C0600, // 000E CALL R7 3
- 0x80040E00, // 000F RET 1 R7
- 0x601C0003, // 0010 GETGBL R7 G3
- 0x5C200000, // 0011 MOVE R8 R0
- 0x7C1C0200, // 0012 CALL R7 1
- 0x8C1C0F09, // 0013 GETMET R7 R7 K9
- 0x5C240200, // 0014 MOVE R9 R1
- 0x5C280400, // 0015 MOVE R10 R2
- 0x5C2C0600, // 0016 MOVE R11 R3
- 0x7C1C0800, // 0017 CALL R7 4
- 0x80040E00, // 0018 RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function:
-********************************************************************/
-be_local_closure(class_Matter_Plugin_Bridge_Light0__X3Clambda_X3E, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 0, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x60040009, // 0000 GETGBL R1 G9
- 0x5C080000, // 0001 MOVE R2 R0
- 0x7C040200, // 0002 CALL R1 1
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_update
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light0;
-be_local_closure(class_Matter_Plugin_Bridge_Light0_parse_update, /* name */
- be_nested_proto(
- 8, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light0,
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota_relay_index),
- /* K1 */ be_const_int(1),
- /* K2 */ be_nested_str_weak(contains),
- /* K3 */ be_nested_str_weak(POWER),
- /* K4 */ be_nested_str_weak(find),
- /* K5 */ be_nested_str_weak(ON),
- /* K6 */ be_nested_str_weak(shadow_onoff),
- /* K7 */ be_nested_str_weak(attribute_updated),
- /* K8 */ be_const_int(0),
- }),
- be_str_weak(parse_update),
- &be_const_str_solidified,
- ( &(const binstruction[41]) { /* code */
- 0x540E000A, // 0000 LDINT R3 11
- 0x1C0C0403, // 0001 EQ R3 R2 R3
- 0x780E0024, // 0002 JMPF R3 #0028
- 0x500C0000, // 0003 LDBOOL R3 0 0
- 0x88100100, // 0004 GETMBR R4 R0 K0
- 0x1C100901, // 0005 EQ R4 R4 K1
- 0x78120009, // 0006 JMPF R4 #0011
- 0x8C100302, // 0007 GETMET R4 R1 K2
- 0x58180003, // 0008 LDCONST R6 K3
- 0x7C100400, // 0009 CALL R4 2
- 0x78120005, // 000A JMPF R4 #0011
- 0x8C100304, // 000B GETMET R4 R1 K4
- 0x58180003, // 000C LDCONST R6 K3
- 0x7C100400, // 000D CALL R4 2
- 0x1C100905, // 000E EQ R4 R4 K5
- 0x5C0C0800, // 000F MOVE R3 R4
- 0x70020007, // 0010 JMP #0019
- 0x8C100304, // 0011 GETMET R4 R1 K4
- 0x60180008, // 0012 GETGBL R6 G8
- 0x881C0100, // 0013 GETMBR R7 R0 K0
- 0x7C180200, // 0014 CALL R6 1
- 0x001A0606, // 0015 ADD R6 K3 R6
- 0x7C100400, // 0016 CALL R4 2
- 0x1C100905, // 0017 EQ R4 R4 K5
- 0x5C0C0800, // 0018 MOVE R3 R4
- 0x88100106, // 0019 GETMBR R4 R0 K6
- 0x4C140000, // 001A LDNIL R5
- 0x20100805, // 001B NE R4 R4 R5
- 0x78120009, // 001C JMPF R4 #0027
- 0x88100106, // 001D GETMBR R4 R0 K6
- 0x60140017, // 001E GETGBL R5 G23
- 0x5C180600, // 001F MOVE R6 R3
- 0x7C140200, // 0020 CALL R5 1
- 0x20100805, // 0021 NE R4 R4 R5
- 0x78120003, // 0022 JMPF R4 #0027
- 0x8C100107, // 0023 GETMET R4 R0 K7
- 0x541A0005, // 0024 LDINT R6 6
- 0x581C0008, // 0025 LDCONST R7 K8
- 0x7C100600, // 0026 CALL R4 3
- 0x90020C03, // 0027 SETMBR R0 K6 R3
- 0x80000000, // 0028 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: invoke_request
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light0;
-be_local_closure(class_Matter_Plugin_Bridge_Light0_invoke_request, /* name */
- be_nested_proto(
- 11, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light0,
- 1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(command),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(set_onoff),
- /* K6 */ be_nested_str_weak(publish_command),
- /* K7 */ be_nested_str_weak(Power),
- /* K8 */ be_const_int(1),
- /* K9 */ be_const_int(2),
- /* K10 */ be_nested_str_weak(shadow_onoff),
- }),
- be_str_weak(invoke_request),
- &be_const_str_solidified,
- ( &(const binstruction[50]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140702, // 0002 GETMBR R5 R3 K2
- 0x88180703, // 0003 GETMBR R6 R3 K3
- 0x541E0005, // 0004 LDINT R7 6
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0029, // 0006 JMPF R7 #0031
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E0009, // 0008 JMPF R7 #0013
- 0x8C1C0105, // 0009 GETMET R7 R0 K5
- 0x50240000, // 000A LDBOOL R9 0 0
- 0x7C1C0400, // 000B CALL R7 2
- 0x8C1C0106, // 000C GETMET R7 R0 K6
- 0x58240007, // 000D LDCONST R9 K7
- 0x58280004, // 000E LDCONST R10 K4
- 0x7C1C0600, // 000F CALL R7 3
- 0x501C0200, // 0010 LDBOOL R7 1 0
- 0x80040E00, // 0011 RET 1 R7
- 0x7002001D, // 0012 JMP #0031
- 0x1C1C0D08, // 0013 EQ R7 R6 K8
- 0x781E0009, // 0014 JMPF R7 #001F
- 0x8C1C0105, // 0015 GETMET R7 R0 K5
- 0x50240200, // 0016 LDBOOL R9 1 0
- 0x7C1C0400, // 0017 CALL R7 2
- 0x8C1C0106, // 0018 GETMET R7 R0 K6
- 0x58240007, // 0019 LDCONST R9 K7
- 0x58280008, // 001A LDCONST R10 K8
- 0x7C1C0600, // 001B CALL R7 3
- 0x501C0200, // 001C LDBOOL R7 1 0
- 0x80040E00, // 001D RET 1 R7
- 0x70020011, // 001E JMP #0031
- 0x1C1C0D09, // 001F EQ R7 R6 K9
- 0x781E000F, // 0020 JMPF R7 #0031
- 0x8C1C0105, // 0021 GETMET R7 R0 K5
- 0x8824010A, // 0022 GETMBR R9 R0 K10
- 0x78260000, // 0023 JMPF R9 #0025
- 0x50240001, // 0024 LDBOOL R9 0 1
- 0x50240200, // 0025 LDBOOL R9 1 0
- 0x7C1C0400, // 0026 CALL R7 2
- 0x8C1C0106, // 0027 GETMET R7 R0 K6
- 0x58240007, // 0028 LDCONST R9 K7
- 0x8828010A, // 0029 GETMBR R10 R0 K10
- 0x782A0001, // 002A JMPF R10 #002D
- 0x58280008, // 002B LDCONST R10 K8
- 0x70020000, // 002C JMP #002E
- 0x58280004, // 002D LDCONST R10 K4
- 0x7C1C0600, // 002E CALL R7 3
- 0x501C0200, // 002F LDBOOL R7 1 0
- 0x80040E00, // 0030 RET 1 R7
- 0x80000000, // 0031 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_values
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light0;
-be_local_closure(class_Matter_Plugin_Bridge_Light0_web_values, /* name */
- be_nested_proto(
- 9, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light0,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(web_values_prefix),
- /* K2 */ be_nested_str_weak(content_send),
- /* K3 */ be_nested_str_weak(_X25s),
- /* K4 */ be_nested_str_weak(web_value_onoff),
- /* K5 */ be_nested_str_weak(shadow_onoff),
- }),
- be_str_weak(web_values),
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x8C080302, // 0003 GETMET R2 R1 K2
- 0x60100018, // 0004 GETGBL R4 G24
- 0x58140003, // 0005 LDCONST R5 K3
- 0x8C180104, // 0006 GETMET R6 R0 K4
- 0x88200105, // 0007 GETMBR R8 R0 K5
- 0x7C180400, // 0008 CALL R6 2
- 0x7C100400, // 0009 CALL R4 2
- 0x7C080400, // 000A CALL R2 2
- 0x80000000, // 000B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_values_prefix
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light0;
-be_local_closure(class_Matter_Plugin_Bridge_Light0_web_values_prefix, /* name */
- be_nested_proto(
- 10, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light0,
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(get_name),
- /* K2 */ be_nested_str_weak(Power),
- /* K3 */ be_nested_str_weak(tasmota_relay_index),
- /* K4 */ be_nested_str_weak(content_send),
- /* K5 */ be_nested_str_weak(PREFIX),
- /* K6 */ be_nested_str_weak(html_escape),
- /* K7 */ be_nested_str_weak(),
- }),
- be_str_weak(web_values_prefix),
- &be_const_str_solidified,
- ( &(const binstruction[22]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x5C0C0400, // 0003 MOVE R3 R2
- 0x740E0004, // 0004 JMPT R3 #000A
- 0x600C0008, // 0005 GETGBL R3 G8
- 0x88100103, // 0006 GETMBR R4 R0 K3
- 0x7C0C0200, // 0007 CALL R3 1
- 0x000E0403, // 0008 ADD R3 K2 R3
- 0x5C080600, // 0009 MOVE R2 R3
- 0x8C0C0304, // 000A GETMET R3 R1 K4
- 0x60140018, // 000B GETGBL R5 G24
- 0x88180105, // 000C GETMBR R6 R0 K5
- 0x780A0003, // 000D JMPF R2 #0012
- 0x8C1C0306, // 000E GETMET R7 R1 K6
- 0x5C240400, // 000F MOVE R9 R2
- 0x7C1C0400, // 0010 CALL R7 2
- 0x70020000, // 0011 JMP #0013
- 0x581C0007, // 0012 LDCONST R7 K7
- 0x7C140400, // 0013 CALL R5 2
- 0x7C0C0400, // 0014 CALL R3 2
- 0x80000000, // 0015 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Bridge_Light0
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
-be_local_class(Matter_Plugin_Bridge_Light0,
- 2,
- &be_class_Matter_Plugin_Bridge_HTTP,
- be_nested_map(16,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(shadow_onoff, 5), be_const_var(1) },
- { be_const_key_weak(tasmota_relay_index, 4), be_const_var(0) },
- { be_const_key_weak(set_onoff, -1), be_const_closure(class_Matter_Plugin_Bridge_Light0_set_onoff_closure) },
- { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Bridge_Light0_init_closure) },
- { be_const_key_weak(web_values_prefix, 9), be_const_closure(class_Matter_Plugin_Bridge_Light0_web_values_prefix_closure) },
- { be_const_key_weak(web_values, 15), be_const_closure(class_Matter_Plugin_Bridge_Light0_web_values_closure) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_light0) },
- { be_const_key_weak(ARG, -1), be_nested_str_weak(relay) },
- { be_const_key_weak(parse_update, -1), be_const_closure(class_Matter_Plugin_Bridge_Light0_parse_update_closure) },
- { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Power_X3Cx_X3E_X20number) },
- { be_const_key_weak(read_attribute, 12), be_const_closure(class_Matter_Plugin_Bridge_Light0_read_attribute_closure) },
- { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Bridge_Light0_invoke_request_closure) },
- { be_const_key_weak(CLUSTERS, 14), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(6,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- })) ) } )) },
- { be_const_key_weak(DISPLAY_NAME, 6), be_nested_str_weak(Light_X200_X20On) },
- { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(256, -1), be_const_int(2) },
- })) ) } )) },
- { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Bridge_Light0__X3Clambda_X3E_closure) },
- })),
- be_str_weak(Matter_Plugin_Bridge_Light0)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor.h
deleted file mode 100644
index 3263e3908..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor.h
+++ /dev/null
@@ -1,315 +0,0 @@
-/* Solidification of Matter_Plugin_3_Bridge_Sensor.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor;
-
-/********************************************************************
-** Solidified function: parse_configuration
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_parse_configuration, /* name */
- be_nested_proto(
- 5, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor,
- 1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota_sensor_filter),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(ARG),
- /* K3 */ be_nested_str_weak(tasmota_sensor_matcher),
- /* K4 */ be_nested_str_weak(tasmota),
- /* K5 */ be_nested_str_weak(Rule_Matcher),
- /* K6 */ be_nested_str_weak(parse),
- /* K7 */ be_nested_str_weak(temp_unit),
- /* K8 */ be_nested_str_weak(TEMP_C),
- /* K9 */ be_nested_str_weak(pressure_unit),
- /* K10 */ be_nested_str_weak(PRESSURE_HPA),
- }),
- be_str_weak(parse_configuration),
- &be_const_str_solidified,
- ( &(const binstruction[17]) { /* code */
- 0x8C080301, // 0000 GETMET R2 R1 K1
- 0x88100102, // 0001 GETMBR R4 R0 K2
- 0x7C080400, // 0002 CALL R2 2
- 0x90020002, // 0003 SETMBR R0 K0 R2
- 0x88080100, // 0004 GETMBR R2 R0 K0
- 0x780A0005, // 0005 JMPF R2 #000C
- 0xB80A0800, // 0006 GETNGBL R2 K4
- 0x88080505, // 0007 GETMBR R2 R2 K5
- 0x8C080506, // 0008 GETMET R2 R2 K6
- 0x88100100, // 0009 GETMBR R4 R0 K0
- 0x7C080400, // 000A CALL R2 2
- 0x90020602, // 000B SETMBR R0 K3 R2
- 0x88080108, // 000C GETMBR R2 R0 K8
- 0x90020E02, // 000D SETMBR R0 K7 R2
- 0x8808010A, // 000E GETMBR R2 R0 K10
- 0x90021202, // 000F SETMBR R0 K9 R2
- 0x80000000, // 0010 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: value_changed
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_value_changed, /* name */
- be_nested_proto(
- 1, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(value_changed),
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80000000, // 0000 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_values_prefix
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_web_values_prefix, /* name */
- be_nested_proto(
- 10, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor,
- 1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(get_name),
- /* K2 */ be_nested_str_weak(filter_name_html),
- /* K3 */ be_nested_str_weak(content_send),
- /* K4 */ be_nested_str_weak(PREFIX),
- /* K5 */ be_nested_str_weak(html_escape),
- /* K6 */ be_nested_str_weak(),
- }),
- be_str_weak(web_values_prefix),
- &be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x5C0C0400, // 0003 MOVE R3 R2
- 0x740E0002, // 0004 JMPT R3 #0008
- 0x8C0C0102, // 0005 GETMET R3 R0 K2
- 0x7C0C0200, // 0006 CALL R3 1
- 0x5C080600, // 0007 MOVE R2 R3
- 0x8C0C0303, // 0008 GETMET R3 R1 K3
- 0x60140018, // 0009 GETGBL R5 G24
- 0x88180104, // 000A GETMBR R6 R0 K4
- 0x780A0003, // 000B JMPF R2 #0010
- 0x8C1C0305, // 000C GETMET R7 R1 K5
- 0x5C240400, // 000D MOVE R9 R2
- 0x7C1C0400, // 000E CALL R7 2
- 0x70020000, // 000F JMP #0011
- 0x581C0006, // 0010 LDCONST R7 K6
- 0x7C140400, // 0011 CALL R5 2
- 0x7C0C0400, // 0012 CALL R3 2
- 0x80000000, // 0013 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_update
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_parse_update, /* name */
- be_nested_proto(
- 9, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor,
- 1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(contains),
- /* K1 */ be_nested_str_weak(TempUnit),
- /* K2 */ be_nested_str_weak(temp_unit),
- /* K3 */ be_nested_str_weak(PressureUnit),
- /* K4 */ be_nested_str_weak(pressure_unit),
- /* K5 */ be_nested_str_weak(tasmota_sensor_matcher),
- /* K6 */ be_nested_str_weak(pre_value),
- /* K7 */ be_nested_str_weak(match),
- /* K8 */ be_nested_str_weak(shadow_value),
- /* K9 */ be_nested_str_weak(value_changed),
- }),
- be_str_weak(parse_update),
- &be_const_str_solidified,
- ( &(const binstruction[35]) { /* code */
- 0x540E0007, // 0000 LDINT R3 8
- 0x1C0C0403, // 0001 EQ R3 R2 R3
- 0x780E001E, // 0002 JMPF R3 #0022
- 0x8C0C0300, // 0003 GETMET R3 R1 K0
- 0x58140001, // 0004 LDCONST R5 K1
- 0x7C0C0400, // 0005 CALL R3 2
- 0x780E0001, // 0006 JMPF R3 #0009
- 0x940C0301, // 0007 GETIDX R3 R1 K1
- 0x90020403, // 0008 SETMBR R0 K2 R3
- 0x8C0C0300, // 0009 GETMET R3 R1 K0
- 0x58140003, // 000A LDCONST R5 K3
- 0x7C0C0400, // 000B CALL R3 2
- 0x780E0001, // 000C JMPF R3 #000F
- 0x940C0303, // 000D GETIDX R3 R1 K3
- 0x90020803, // 000E SETMBR R0 K4 R3
- 0x880C0105, // 000F GETMBR R3 R0 K5
- 0x780E0010, // 0010 JMPF R3 #0022
- 0x8C0C0106, // 0011 GETMET R3 R0 K6
- 0x6014000A, // 0012 GETGBL R5 G10
- 0x88180105, // 0013 GETMBR R6 R0 K5
- 0x8C180D07, // 0014 GETMET R6 R6 K7
- 0x5C200200, // 0015 MOVE R8 R1
- 0x7C180400, // 0016 CALL R6 2
- 0x7C140200, // 0017 CALL R5 1
- 0x7C0C0400, // 0018 CALL R3 2
- 0x4C100000, // 0019 LDNIL R4
- 0x20100604, // 001A NE R4 R3 R4
- 0x78120005, // 001B JMPF R4 #0022
- 0x88100108, // 001C GETMBR R4 R0 K8
- 0x20100604, // 001D NE R4 R3 R4
- 0x78120002, // 001E JMPF R4 #0022
- 0x8C100109, // 001F GETMET R4 R0 K9
- 0x7C100200, // 0020 CALL R4 1
- 0x90021003, // 0021 SETMBR R0 K8 R3
- 0x80000000, // 0022 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: filter_name_html
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_filter_name_html, /* name */
- be_nested_proto(
- 9, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor,
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota_sensor_filter),
- /* K1 */ be_nested_str_weak(string),
- /* K2 */ be_nested_str_weak(webserver),
- /* K3 */ be_nested_str_weak(html_escape),
- /* K4 */ be_nested_str_weak(split),
- /* K5 */ be_nested_str_weak(_X23),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(),
- }),
- be_str_weak(filter_name_html),
- &be_const_str_solidified,
- ( &(const binstruction[13]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x78060009, // 0001 JMPF R1 #000C
- 0xA4060200, // 0002 IMPORT R1 K1
- 0xA40A0400, // 0003 IMPORT R2 K2
- 0x8C0C0503, // 0004 GETMET R3 R2 K3
- 0x8C140304, // 0005 GETMET R5 R1 K4
- 0x881C0100, // 0006 GETMBR R7 R0 K0
- 0x58200005, // 0007 LDCONST R8 K5
- 0x7C140600, // 0008 CALL R5 3
- 0x94140B06, // 0009 GETIDX R5 R5 K6
- 0x7C0C0400, // 000A CALL R3 2
- 0x80040600, // 000B RET 1 R3
- 0x80060E00, // 000C RET 1 K7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: pre_value
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_pre_value, /* name */
- be_nested_proto(
- 2, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(pre_value),
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80040200, // 0000 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Bridge_Sensor
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
-be_local_class(Matter_Plugin_Bridge_Sensor,
- 5,
- &be_class_Matter_Plugin_Bridge_HTTP,
- be_nested_map(22,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(tasmota_sensor_filter, -1), be_const_var(0) },
- { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(Filter_X20pattern) },
- { be_const_key_weak(shadow_value, -1), be_const_var(2) },
- { be_const_key_weak(pre_value, 10), be_const_closure(class_Matter_Plugin_Bridge_Sensor_pre_value_closure) },
- { be_const_key_weak(ARG_HTTP, -1), be_nested_str_weak(url) },
- { be_const_key_weak(pressure_unit, -1), be_const_var(4) },
- { be_const_key_weak(tasmota_sensor_matcher, -1), be_const_var(1) },
- { be_const_key_weak(ARG, -1), be_nested_str_weak(filter) },
- { be_const_key_weak(PRESSURE_MMHG, -1), be_nested_str_weak(mmHg) },
- { be_const_key_weak(value_changed, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_value_changed_closure) },
- { be_const_key_weak(parse_update, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_parse_update_closure) },
- { be_const_key_weak(TEMP_C, -1), be_nested_str_weak(C) },
- { be_const_key_weak(temp_unit, 4), be_const_var(3) },
- { be_const_key_weak(PRESSURE_INHG, -1), be_nested_str_weak(inHg) },
- { be_const_key_weak(PRESSURE_HPA, 18), be_nested_str_weak(hPa) },
- { be_const_key_weak(PROBE_TIMEOUT, 16), be_const_int(1700) },
- { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_web_values_prefix_closure) },
- { be_const_key_weak(UPDATE_CMD, 13), be_nested_str_weak(Status_X208) },
- { be_const_key_weak(TEMP_F, -1), be_nested_str_weak(F) },
- { be_const_key_weak(filter_name_html, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_filter_name_html_closure) },
- { be_const_key_weak(UPDATE_TIME, 3), be_const_int(5000) },
- { be_const_key_weak(parse_configuration, 2), be_const_closure(class_Matter_Plugin_Bridge_Sensor_parse_configuration_closure) },
- })),
- be_str_weak(Matter_Plugin_Bridge_Sensor)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Contact.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Contact.h
deleted file mode 100644
index 5f27166aa..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Contact.h
+++ /dev/null
@@ -1,431 +0,0 @@
-/* Solidification of Matter_Plugin_3_Bridge_Sensor_Contact.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Contact;
-
-/********************************************************************
-** Solidified function:
-********************************************************************/
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Contact__X3Clambda_X3E, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 0, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x60040009, // 0000 GETGBL R1 G9
- 0x5C080000, // 0001 MOVE R2 R0
- 0x7C040200, // 0002 CALL R1 1
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Contact;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Contact_init, /* name */
- be_nested_proto(
- 9, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Contact,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(tasmota_switch_index),
- /* K2 */ be_nested_str_weak(find),
- /* K3 */ be_nested_str_weak(ARG),
- /* K4 */ be_const_int(1),
- /* K5 */ be_const_int(0),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
- 0x60100003, // 0000 GETGBL R4 G3
- 0x5C140000, // 0001 MOVE R5 R0
- 0x7C100200, // 0002 CALL R4 1
- 0x8C100900, // 0003 GETMET R4 R4 K0
- 0x5C180200, // 0004 MOVE R6 R1
- 0x5C1C0400, // 0005 MOVE R7 R2
- 0x5C200600, // 0006 MOVE R8 R3
- 0x7C100800, // 0007 CALL R4 4
- 0x60100009, // 0008 GETGBL R4 G9
- 0x8C140702, // 0009 GETMET R5 R3 K2
- 0x881C0103, // 000A GETMBR R7 R0 K3
- 0x58200004, // 000B LDCONST R8 K4
- 0x7C140600, // 000C CALL R5 3
- 0x7C100200, // 000D CALL R4 1
- 0x90020204, // 000E SETMBR R0 K1 R4
- 0x88100101, // 000F GETMBR R4 R0 K1
- 0x18100905, // 0010 LE R4 R4 K5
- 0x78120000, // 0011 JMPF R4 #0013
- 0x90020304, // 0012 SETMBR R0 K1 K4
- 0x80000000, // 0013 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_values_prefix
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Contact;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Contact_web_values_prefix, /* name */
- be_nested_proto(
- 10, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Contact,
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(get_name),
- /* K2 */ be_nested_str_weak(Switch),
- /* K3 */ be_nested_str_weak(tasmota_switch_index),
- /* K4 */ be_nested_str_weak(content_send),
- /* K5 */ be_nested_str_weak(PREFIX),
- /* K6 */ be_nested_str_weak(html_escape),
- /* K7 */ be_nested_str_weak(),
- }),
- be_str_weak(web_values_prefix),
- &be_const_str_solidified,
- ( &(const binstruction[22]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x5C0C0400, // 0003 MOVE R3 R2
- 0x740E0004, // 0004 JMPT R3 #000A
- 0x600C0008, // 0005 GETGBL R3 G8
- 0x88100103, // 0006 GETMBR R4 R0 K3
- 0x7C0C0200, // 0007 CALL R3 1
- 0x000E0403, // 0008 ADD R3 K2 R3
- 0x5C080600, // 0009 MOVE R2 R3
- 0x8C0C0304, // 000A GETMET R3 R1 K4
- 0x60140018, // 000B GETGBL R5 G24
- 0x88180105, // 000C GETMBR R6 R0 K5
- 0x780A0003, // 000D JMPF R2 #0012
- 0x8C1C0306, // 000E GETMET R7 R1 K6
- 0x5C240400, // 000F MOVE R9 R2
- 0x7C1C0400, // 0010 CALL R7 2
- 0x70020000, // 0011 JMP #0013
- 0x581C0007, // 0012 LDCONST R7 K7
- 0x7C140400, // 0013 CALL R5 2
- 0x7C0C0400, // 0014 CALL R3 2
- 0x80000000, // 0015 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_update
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Contact;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Contact_parse_update, /* name */
- be_nested_proto(
- 8, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Contact,
- 1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(find),
- /* K1 */ be_nested_str_weak(Switch),
- /* K2 */ be_nested_str_weak(tasmota_switch_index),
- /* K3 */ be_nested_str_weak(ON),
- /* K4 */ be_nested_str_weak(shadow_contact),
- /* K5 */ be_nested_str_weak(attribute_updated),
- /* K6 */ be_const_int(0),
- }),
- be_str_weak(parse_update),
- &be_const_str_solidified,
- ( &(const binstruction[28]) { /* code */
- 0x540E0007, // 0000 LDINT R3 8
- 0x1C0C0403, // 0001 EQ R3 R2 R3
- 0x780E0017, // 0002 JMPF R3 #001B
- 0x500C0000, // 0003 LDBOOL R3 0 0
- 0x8C100300, // 0004 GETMET R4 R1 K0
- 0x60180008, // 0005 GETGBL R6 G8
- 0x881C0102, // 0006 GETMBR R7 R0 K2
- 0x7C180200, // 0007 CALL R6 1
- 0x001A0206, // 0008 ADD R6 K1 R6
- 0x7C100400, // 0009 CALL R4 2
- 0x1C100903, // 000A EQ R4 R4 K3
- 0x5C0C0800, // 000B MOVE R3 R4
- 0x88100104, // 000C GETMBR R4 R0 K4
- 0x4C140000, // 000D LDNIL R5
- 0x20100805, // 000E NE R4 R4 R5
- 0x78120009, // 000F JMPF R4 #001A
- 0x88100104, // 0010 GETMBR R4 R0 K4
- 0x60140017, // 0011 GETGBL R5 G23
- 0x5C180600, // 0012 MOVE R6 R3
- 0x7C140200, // 0013 CALL R5 1
- 0x20100805, // 0014 NE R4 R4 R5
- 0x78120003, // 0015 JMPF R4 #001A
- 0x8C100105, // 0016 GETMET R4 R0 K5
- 0x541A0044, // 0017 LDINT R6 69
- 0x581C0006, // 0018 LDCONST R7 K6
- 0x7C100600, // 0019 CALL R4 3
- 0x90020803, // 001A SETMBR R0 K4 R3
- 0x80000000, // 001B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Contact;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Contact_read_attribute, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Contact,
- 1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(shadow_contact),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(BOOL),
- /* K8 */ be_nested_str_weak(NULL),
- /* K9 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[33]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E0044, // 0004 LDINT R7 69
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0010, // 0006 JMPF R7 #0018
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E000E, // 0008 JMPF R7 #0018
- 0x881C0105, // 0009 GETMBR R7 R0 K5
- 0x4C200000, // 000A LDNIL R8
- 0x201C0E08, // 000B NE R7 R7 R8
- 0x781E0005, // 000C JMPF R7 #0013
- 0x8C1C0706, // 000D GETMET R7 R3 K6
- 0x88240907, // 000E GETMBR R9 R4 K7
- 0x88280105, // 000F GETMBR R10 R0 K5
- 0x7C1C0600, // 0010 CALL R7 3
- 0x80040E00, // 0011 RET 1 R7
- 0x70020004, // 0012 JMP #0018
- 0x8C1C0706, // 0013 GETMET R7 R3 K6
- 0x88240908, // 0014 GETMBR R9 R4 K8
- 0x4C280000, // 0015 LDNIL R10
- 0x7C1C0600, // 0016 CALL R7 3
- 0x80040E00, // 0017 RET 1 R7
- 0x601C0003, // 0018 GETGBL R7 G3
- 0x5C200000, // 0019 MOVE R8 R0
- 0x7C1C0200, // 001A CALL R7 1
- 0x8C1C0F09, // 001B GETMET R7 R7 K9
- 0x5C240200, // 001C MOVE R9 R1
- 0x5C280400, // 001D MOVE R10 R2
- 0x5C2C0600, // 001E MOVE R11 R3
- 0x7C1C0800, // 001F CALL R7 4
- 0x80040E00, // 0020 RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_values
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Contact;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Contact_web_values, /* name */
- be_nested_proto(
- 10, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Contact,
- 1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(web_values_prefix),
- /* K2 */ be_nested_str_weak(content_send),
- /* K3 */ be_nested_str_weak(Contact_X25i_X20_X25s),
- /* K4 */ be_nested_str_weak(tasmota_switch_index),
- /* K5 */ be_nested_str_weak(web_value_onoff),
- /* K6 */ be_nested_str_weak(shadow_contact),
- }),
- be_str_weak(web_values),
- &be_const_str_solidified,
- ( &(const binstruction[13]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x8C080302, // 0003 GETMET R2 R1 K2
- 0x60100018, // 0004 GETGBL R4 G24
- 0x58140003, // 0005 LDCONST R5 K3
- 0x88180104, // 0006 GETMBR R6 R0 K4
- 0x8C1C0105, // 0007 GETMET R7 R0 K5
- 0x88240106, // 0008 GETMBR R9 R0 K6
- 0x7C1C0400, // 0009 CALL R7 2
- 0x7C100600, // 000A CALL R4 3
- 0x7C080400, // 000B CALL R2 2
- 0x80000000, // 000C RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Bridge_Sensor_Contact
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
-be_local_class(Matter_Plugin_Bridge_Sensor_Contact,
- 2,
- &be_class_Matter_Plugin_Bridge_HTTP,
- be_nested_map(16,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(ARG_TYPE, 5), be_const_static_closure(class_Matter_Plugin_Bridge_Sensor_Contact__X3Clambda_X3E_closure) },
- { be_const_key_weak(ARG_HINT, 4), be_nested_str_weak(Switch_X3Cx_X3E_X20number) },
- { be_const_key_weak(shadow_contact, -1), be_const_var(1) },
- { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Contact_init_closure) },
- { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Contact_web_values_prefix_closure) },
- { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Contact_web_values_closure) },
- { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Contact) },
- { be_const_key_weak(ARG, -1), be_nested_str_weak(switch) },
- { be_const_key_weak(parse_update, 11), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Contact_parse_update_closure) },
- { be_const_key_weak(read_attribute, 12), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Contact_read_attribute_closure) },
- { be_const_key_weak(CLUSTERS, 9), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(6,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(69, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- })) ) } )) },
- { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
- { be_const_key_weak(TYPES, 14), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(21, -1), be_const_int(1) },
- })) ) } )) },
- { be_const_key_weak(TYPE, 6), be_nested_str_weak(http_contact) },
- { be_const_key_weak(tasmota_switch_index, -1), be_const_var(0) },
- { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X208) },
- })),
- be_str_weak(Matter_Plugin_Bridge_Sensor_Contact)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Occupancy.h
deleted file mode 100644
index d4ff1c804..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Occupancy.h
+++ /dev/null
@@ -1,452 +0,0 @@
-/* Solidification of Matter_Plugin_3_Bridge_Sensor_Occupancy.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Occupancy;
-
-/********************************************************************
-** Solidified function:
-********************************************************************/
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy__X3Clambda_X3E, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 0, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x60040009, // 0000 GETGBL R1 G9
- 0x5C080000, // 0001 MOVE R2 R0
- 0x7C040200, // 0002 CALL R1 1
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Occupancy;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy_init, /* name */
- be_nested_proto(
- 9, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Occupancy,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(tasmota_switch_index),
- /* K2 */ be_nested_str_weak(find),
- /* K3 */ be_nested_str_weak(ARG),
- /* K4 */ be_const_int(1),
- /* K5 */ be_const_int(0),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
- 0x60100003, // 0000 GETGBL R4 G3
- 0x5C140000, // 0001 MOVE R5 R0
- 0x7C100200, // 0002 CALL R4 1
- 0x8C100900, // 0003 GETMET R4 R4 K0
- 0x5C180200, // 0004 MOVE R6 R1
- 0x5C1C0400, // 0005 MOVE R7 R2
- 0x5C200600, // 0006 MOVE R8 R3
- 0x7C100800, // 0007 CALL R4 4
- 0x60100009, // 0008 GETGBL R4 G9
- 0x8C140702, // 0009 GETMET R5 R3 K2
- 0x881C0103, // 000A GETMBR R7 R0 K3
- 0x58200004, // 000B LDCONST R8 K4
- 0x7C140600, // 000C CALL R5 3
- 0x7C100200, // 000D CALL R4 1
- 0x90020204, // 000E SETMBR R0 K1 R4
- 0x88100101, // 000F GETMBR R4 R0 K1
- 0x18100905, // 0010 LE R4 R4 K5
- 0x78120000, // 0011 JMPF R4 #0013
- 0x90020304, // 0012 SETMBR R0 K1 K4
- 0x80000000, // 0013 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_update
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Occupancy;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy_parse_update, /* name */
- be_nested_proto(
- 8, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Occupancy,
- 1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(find),
- /* K1 */ be_nested_str_weak(Switch),
- /* K2 */ be_nested_str_weak(tasmota_switch_index),
- /* K3 */ be_nested_str_weak(ON),
- /* K4 */ be_nested_str_weak(shadow_occupancy),
- /* K5 */ be_nested_str_weak(attribute_updated),
- /* K6 */ be_const_int(0),
- }),
- be_str_weak(parse_update),
- &be_const_str_solidified,
- ( &(const binstruction[28]) { /* code */
- 0x540E0007, // 0000 LDINT R3 8
- 0x1C0C0403, // 0001 EQ R3 R2 R3
- 0x780E0017, // 0002 JMPF R3 #001B
- 0x500C0000, // 0003 LDBOOL R3 0 0
- 0x8C100300, // 0004 GETMET R4 R1 K0
- 0x60180008, // 0005 GETGBL R6 G8
- 0x881C0102, // 0006 GETMBR R7 R0 K2
- 0x7C180200, // 0007 CALL R6 1
- 0x001A0206, // 0008 ADD R6 K1 R6
- 0x7C100400, // 0009 CALL R4 2
- 0x1C100903, // 000A EQ R4 R4 K3
- 0x5C0C0800, // 000B MOVE R3 R4
- 0x88100104, // 000C GETMBR R4 R0 K4
- 0x4C140000, // 000D LDNIL R5
- 0x20100805, // 000E NE R4 R4 R5
- 0x78120009, // 000F JMPF R4 #001A
- 0x88100104, // 0010 GETMBR R4 R0 K4
- 0x60140017, // 0011 GETGBL R5 G23
- 0x5C180600, // 0012 MOVE R6 R3
- 0x7C140200, // 0013 CALL R5 1
- 0x20100805, // 0014 NE R4 R4 R5
- 0x78120003, // 0015 JMPF R4 #001A
- 0x8C100105, // 0016 GETMET R4 R0 K5
- 0x541A0405, // 0017 LDINT R6 1030
- 0x581C0006, // 0018 LDCONST R7 K6
- 0x7C100600, // 0019 CALL R4 3
- 0x90020803, // 001A SETMBR R0 K4 R3
- 0x80000000, // 001B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_values_prefix
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Occupancy;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy_web_values_prefix, /* name */
- be_nested_proto(
- 10, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Occupancy,
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(get_name),
- /* K2 */ be_nested_str_weak(Switch),
- /* K3 */ be_nested_str_weak(tasmota_switch_index),
- /* K4 */ be_nested_str_weak(content_send),
- /* K5 */ be_nested_str_weak(PREFIX),
- /* K6 */ be_nested_str_weak(html_escape),
- /* K7 */ be_nested_str_weak(),
- }),
- be_str_weak(web_values_prefix),
- &be_const_str_solidified,
- ( &(const binstruction[22]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x5C0C0400, // 0003 MOVE R3 R2
- 0x740E0004, // 0004 JMPT R3 #000A
- 0x600C0008, // 0005 GETGBL R3 G8
- 0x88100103, // 0006 GETMBR R4 R0 K3
- 0x7C0C0200, // 0007 CALL R3 1
- 0x000E0403, // 0008 ADD R3 K2 R3
- 0x5C080600, // 0009 MOVE R2 R3
- 0x8C0C0304, // 000A GETMET R3 R1 K4
- 0x60140018, // 000B GETGBL R5 G24
- 0x88180105, // 000C GETMBR R6 R0 K5
- 0x780A0003, // 000D JMPF R2 #0012
- 0x8C1C0306, // 000E GETMET R7 R1 K6
- 0x5C240400, // 000F MOVE R9 R2
- 0x7C1C0400, // 0010 CALL R7 2
- 0x70020000, // 0011 JMP #0013
- 0x581C0007, // 0012 LDCONST R7 K7
- 0x7C140400, // 0013 CALL R5 2
- 0x7C0C0400, // 0014 CALL R3 2
- 0x80000000, // 0015 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Occupancy;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Occupancy,
- 1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(shadow_occupancy),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(U1),
- /* K8 */ be_nested_str_weak(NULL),
- /* K9 */ be_const_int(1),
- /* K10 */ be_const_int(3),
- /* K11 */ be_const_int(2),
- /* K12 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[49]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E0405, // 0004 LDINT R7 1030
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0020, // 0006 JMPF R7 #0028
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E000F, // 0008 JMPF R7 #0019
- 0x881C0105, // 0009 GETMBR R7 R0 K5
- 0x4C200000, // 000A LDNIL R8
- 0x201C0E08, // 000B NE R7 R7 R8
- 0x781E0005, // 000C JMPF R7 #0013
- 0x8C1C0706, // 000D GETMET R7 R3 K6
- 0x88240907, // 000E GETMBR R9 R4 K7
- 0x88280105, // 000F GETMBR R10 R0 K5
- 0x7C1C0600, // 0010 CALL R7 3
- 0x80040E00, // 0011 RET 1 R7
- 0x70020004, // 0012 JMP #0018
- 0x8C1C0706, // 0013 GETMET R7 R3 K6
- 0x88240908, // 0014 GETMBR R9 R4 K8
- 0x4C280000, // 0015 LDNIL R10
- 0x7C1C0600, // 0016 CALL R7 3
- 0x80040E00, // 0017 RET 1 R7
- 0x7002000E, // 0018 JMP #0028
- 0x1C1C0D09, // 0019 EQ R7 R6 K9
- 0x781E0005, // 001A JMPF R7 #0021
- 0x8C1C0706, // 001B GETMET R7 R3 K6
- 0x88240907, // 001C GETMBR R9 R4 K7
- 0x5828000A, // 001D LDCONST R10 K10
- 0x7C1C0600, // 001E CALL R7 3
- 0x80040E00, // 001F RET 1 R7
- 0x70020006, // 0020 JMP #0028
- 0x1C1C0D0B, // 0021 EQ R7 R6 K11
- 0x781E0004, // 0022 JMPF R7 #0028
- 0x8C1C0706, // 0023 GETMET R7 R3 K6
- 0x88240907, // 0024 GETMBR R9 R4 K7
- 0x58280004, // 0025 LDCONST R10 K4
- 0x7C1C0600, // 0026 CALL R7 3
- 0x80040E00, // 0027 RET 1 R7
- 0x601C0003, // 0028 GETGBL R7 G3
- 0x5C200000, // 0029 MOVE R8 R0
- 0x7C1C0200, // 002A CALL R7 1
- 0x8C1C0F0C, // 002B GETMET R7 R7 K12
- 0x5C240200, // 002C MOVE R9 R1
- 0x5C280400, // 002D MOVE R10 R2
- 0x5C2C0600, // 002E MOVE R11 R3
- 0x7C1C0800, // 002F CALL R7 4
- 0x80040E00, // 0030 RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_values
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Occupancy;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy_web_values, /* name */
- be_nested_proto(
- 10, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Occupancy,
- 1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(web_values_prefix),
- /* K2 */ be_nested_str_weak(content_send),
- /* K3 */ be_nested_str_weak(Occupancy_X25i_X20_X25s),
- /* K4 */ be_nested_str_weak(tasmota_switch_index),
- /* K5 */ be_nested_str_weak(web_value_onoff),
- /* K6 */ be_nested_str_weak(shadow_occupancy),
- }),
- be_str_weak(web_values),
- &be_const_str_solidified,
- ( &(const binstruction[13]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x8C080302, // 0003 GETMET R2 R1 K2
- 0x60100018, // 0004 GETGBL R4 G24
- 0x58140003, // 0005 LDCONST R5 K3
- 0x88180104, // 0006 GETMBR R6 R0 K4
- 0x8C1C0105, // 0007 GETMET R7 R0 K5
- 0x88240106, // 0008 GETMBR R9 R0 K6
- 0x7C1C0400, // 0009 CALL R7 2
- 0x7C100600, // 000A CALL R4 3
- 0x7C080400, // 000B CALL R2 2
- 0x80000000, // 000C RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Bridge_Sensor_Occupancy
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
-be_local_class(Matter_Plugin_Bridge_Sensor_Occupancy,
- 2,
- &be_class_Matter_Plugin_Bridge_HTTP,
- be_nested_map(16,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(ARG_TYPE, 4), be_const_static_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy__X3Clambda_X3E_closure) },
- { be_const_key_weak(ARG_HINT, 12), be_nested_str_weak(Switch_X3Cx_X3E_X20number) },
- { be_const_key_weak(shadow_occupancy, -1), be_const_var(1) },
- { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy_init_closure) },
- { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy_web_values_closure) },
- { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Occupancy) },
- { be_const_key_weak(TYPES, 9), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(263, -1), be_const_int(2) },
- })) ) } )) },
- { be_const_key_weak(ARG, -1), be_nested_str_weak(switch) },
- { be_const_key_weak(parse_update, 14), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy_parse_update_closure) },
- { be_const_key_weak(CLUSTERS, 11), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(6,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(1030, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(9,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- })) ) } )) },
- { be_const_key_weak(tasmota_switch_index, 6), be_const_var(0) },
- { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy_read_attribute_closure) },
- { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Occupancy_web_values_prefix_closure) },
- { be_const_key_weak(TYPE, 5), be_nested_str_weak(http_occupancy) },
- { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
- { be_const_key_weak(UPDATE_CMD, 2), be_nested_str_weak(Status_X208) },
- })),
- be_str_weak(Matter_Plugin_Bridge_Sensor_Occupancy)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Waterleak.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Waterleak.h
deleted file mode 100644
index 48d9a153b..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Bridge_Sensor_Waterleak.h
+++ /dev/null
@@ -1,431 +0,0 @@
-/* Solidification of Matter_Plugin_3_Bridge_Sensor_Waterleak.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Waterleak;
-
-/********************************************************************
-** Solidified function:
-********************************************************************/
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak__X3Clambda_X3E, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 0, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x60040009, // 0000 GETGBL R1 G9
- 0x5C080000, // 0001 MOVE R2 R0
- 0x7C040200, // 0002 CALL R1 1
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_values_prefix
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Waterleak;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak_web_values_prefix, /* name */
- be_nested_proto(
- 10, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Waterleak,
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(get_name),
- /* K2 */ be_nested_str_weak(Switch),
- /* K3 */ be_nested_str_weak(tasmota_switch_index),
- /* K4 */ be_nested_str_weak(content_send),
- /* K5 */ be_nested_str_weak(PREFIX),
- /* K6 */ be_nested_str_weak(html_escape),
- /* K7 */ be_nested_str_weak(),
- }),
- be_str_weak(web_values_prefix),
- &be_const_str_solidified,
- ( &(const binstruction[22]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x5C0C0400, // 0003 MOVE R3 R2
- 0x740E0004, // 0004 JMPT R3 #000A
- 0x600C0008, // 0005 GETGBL R3 G8
- 0x88100103, // 0006 GETMBR R4 R0 K3
- 0x7C0C0200, // 0007 CALL R3 1
- 0x000E0403, // 0008 ADD R3 K2 R3
- 0x5C080600, // 0009 MOVE R2 R3
- 0x8C0C0304, // 000A GETMET R3 R1 K4
- 0x60140018, // 000B GETGBL R5 G24
- 0x88180105, // 000C GETMBR R6 R0 K5
- 0x780A0003, // 000D JMPF R2 #0012
- 0x8C1C0306, // 000E GETMET R7 R1 K6
- 0x5C240400, // 000F MOVE R9 R2
- 0x7C1C0400, // 0010 CALL R7 2
- 0x70020000, // 0011 JMP #0013
- 0x581C0007, // 0012 LDCONST R7 K7
- 0x7C140400, // 0013 CALL R5 2
- 0x7C0C0400, // 0014 CALL R3 2
- 0x80000000, // 0015 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Waterleak;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak_init, /* name */
- be_nested_proto(
- 9, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Waterleak,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(tasmota_switch_index),
- /* K2 */ be_nested_str_weak(find),
- /* K3 */ be_nested_str_weak(ARG),
- /* K4 */ be_const_int(1),
- /* K5 */ be_const_int(0),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
- 0x60100003, // 0000 GETGBL R4 G3
- 0x5C140000, // 0001 MOVE R5 R0
- 0x7C100200, // 0002 CALL R4 1
- 0x8C100900, // 0003 GETMET R4 R4 K0
- 0x5C180200, // 0004 MOVE R6 R1
- 0x5C1C0400, // 0005 MOVE R7 R2
- 0x5C200600, // 0006 MOVE R8 R3
- 0x7C100800, // 0007 CALL R4 4
- 0x60100009, // 0008 GETGBL R4 G9
- 0x8C140702, // 0009 GETMET R5 R3 K2
- 0x881C0103, // 000A GETMBR R7 R0 K3
- 0x58200004, // 000B LDCONST R8 K4
- 0x7C140600, // 000C CALL R5 3
- 0x7C100200, // 000D CALL R4 1
- 0x90020204, // 000E SETMBR R0 K1 R4
- 0x88100101, // 000F GETMBR R4 R0 K1
- 0x18100905, // 0010 LE R4 R4 K5
- 0x78120000, // 0011 JMPF R4 #0013
- 0x90020304, // 0012 SETMBR R0 K1 K4
- 0x80000000, // 0013 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_values
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Waterleak;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak_web_values, /* name */
- be_nested_proto(
- 10, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Waterleak,
- 1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(web_values_prefix),
- /* K2 */ be_nested_str_weak(content_send),
- /* K3 */ be_nested_str_weak(Waterleak_X25i_X20_X25s),
- /* K4 */ be_nested_str_weak(tasmota_switch_index),
- /* K5 */ be_nested_str_weak(web_value_onoff),
- /* K6 */ be_nested_str_weak(shadow_Waterleak),
- }),
- be_str_weak(web_values),
- &be_const_str_solidified,
- ( &(const binstruction[13]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x8C080302, // 0003 GETMET R2 R1 K2
- 0x60100018, // 0004 GETGBL R4 G24
- 0x58140003, // 0005 LDCONST R5 K3
- 0x88180104, // 0006 GETMBR R6 R0 K4
- 0x8C1C0105, // 0007 GETMET R7 R0 K5
- 0x88240106, // 0008 GETMBR R9 R0 K6
- 0x7C1C0400, // 0009 CALL R7 2
- 0x7C100600, // 000A CALL R4 3
- 0x7C080400, // 000B CALL R2 2
- 0x80000000, // 000C RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_update
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Waterleak;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak_parse_update, /* name */
- be_nested_proto(
- 8, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Waterleak,
- 1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(find),
- /* K1 */ be_nested_str_weak(Switch),
- /* K2 */ be_nested_str_weak(tasmota_switch_index),
- /* K3 */ be_nested_str_weak(ON),
- /* K4 */ be_nested_str_weak(shadow_Waterleak),
- /* K5 */ be_nested_str_weak(attribute_updated),
- /* K6 */ be_const_int(0),
- }),
- be_str_weak(parse_update),
- &be_const_str_solidified,
- ( &(const binstruction[28]) { /* code */
- 0x540E0007, // 0000 LDINT R3 8
- 0x1C0C0403, // 0001 EQ R3 R2 R3
- 0x780E0017, // 0002 JMPF R3 #001B
- 0x500C0000, // 0003 LDBOOL R3 0 0
- 0x8C100300, // 0004 GETMET R4 R1 K0
- 0x60180008, // 0005 GETGBL R6 G8
- 0x881C0102, // 0006 GETMBR R7 R0 K2
- 0x7C180200, // 0007 CALL R6 1
- 0x001A0206, // 0008 ADD R6 K1 R6
- 0x7C100400, // 0009 CALL R4 2
- 0x1C100903, // 000A EQ R4 R4 K3
- 0x5C0C0800, // 000B MOVE R3 R4
- 0x88100104, // 000C GETMBR R4 R0 K4
- 0x4C140000, // 000D LDNIL R5
- 0x20100805, // 000E NE R4 R4 R5
- 0x78120009, // 000F JMPF R4 #001A
- 0x88100104, // 0010 GETMBR R4 R0 K4
- 0x60140017, // 0011 GETGBL R5 G23
- 0x5C180600, // 0012 MOVE R6 R3
- 0x7C140200, // 0013 CALL R5 1
- 0x20100805, // 0014 NE R4 R4 R5
- 0x78120003, // 0015 JMPF R4 #001A
- 0x8C100105, // 0016 GETMET R4 R0 K5
- 0x541A0044, // 0017 LDINT R6 69
- 0x581C0006, // 0018 LDCONST R7 K6
- 0x7C100600, // 0019 CALL R4 3
- 0x90020803, // 001A SETMBR R0 K4 R3
- 0x80000000, // 001B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Waterleak;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak_read_attribute, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Waterleak,
- 1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(shadow_Waterleak),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(BOOL),
- /* K8 */ be_nested_str_weak(NULL),
- /* K9 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[33]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E0044, // 0004 LDINT R7 69
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0010, // 0006 JMPF R7 #0018
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E000E, // 0008 JMPF R7 #0018
- 0x881C0105, // 0009 GETMBR R7 R0 K5
- 0x4C200000, // 000A LDNIL R8
- 0x201C0E08, // 000B NE R7 R7 R8
- 0x781E0005, // 000C JMPF R7 #0013
- 0x8C1C0706, // 000D GETMET R7 R3 K6
- 0x88240907, // 000E GETMBR R9 R4 K7
- 0x88280105, // 000F GETMBR R10 R0 K5
- 0x7C1C0600, // 0010 CALL R7 3
- 0x80040E00, // 0011 RET 1 R7
- 0x70020004, // 0012 JMP #0018
- 0x8C1C0706, // 0013 GETMET R7 R3 K6
- 0x88240908, // 0014 GETMBR R9 R4 K8
- 0x4C280000, // 0015 LDNIL R10
- 0x7C1C0600, // 0016 CALL R7 3
- 0x80040E00, // 0017 RET 1 R7
- 0x601C0003, // 0018 GETGBL R7 G3
- 0x5C200000, // 0019 MOVE R8 R0
- 0x7C1C0200, // 001A CALL R7 1
- 0x8C1C0F09, // 001B GETMET R7 R7 K9
- 0x5C240200, // 001C MOVE R9 R1
- 0x5C280400, // 001D MOVE R10 R2
- 0x5C2C0600, // 001E MOVE R11 R3
- 0x7C1C0800, // 001F CALL R7 4
- 0x80040E00, // 0020 RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Bridge_Sensor_Waterleak
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_HTTP;
-be_local_class(Matter_Plugin_Bridge_Sensor_Waterleak,
- 2,
- &be_class_Matter_Plugin_Bridge_HTTP,
- be_nested_map(16,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(ARG_TYPE, 4), be_const_static_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak__X3Clambda_X3E_closure) },
- { be_const_key_weak(ARG_HINT, 2), be_nested_str_weak(Switch_X3Cx_X3E_X20number) },
- { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak_web_values_prefix_closure) },
- { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak_init_closure) },
- { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak_web_values_closure) },
- { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Waterleak) },
- { be_const_key_weak(TYPES, 9), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(67, -1), be_const_int(1) },
- })) ) } )) },
- { be_const_key_weak(ARG, -1), be_nested_str_weak(switch) },
- { be_const_key_weak(parse_update, 12), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak_parse_update_closure) },
- { be_const_key_weak(CLUSTERS, 11), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(6,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(69, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- })) ) } )) },
- { be_const_key_weak(tasmota_switch_index, 6), be_const_var(0) },
- { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Waterleak_read_attribute_closure) },
- { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
- { be_const_key_weak(TYPE, 5), be_nested_str_weak(http_waterleak) },
- { be_const_key_weak(shadow_Waterleak, -1), be_const_var(1) },
- { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X208) },
- })),
- be_str_weak(Matter_Plugin_Bridge_Sensor_Waterleak)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h
new file mode 100644
index 000000000..63d9c8716
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light1.h
@@ -0,0 +1,823 @@
+/* Solidification of Matter_Plugin_3_Light1.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+// compact class 'Matter_Plugin_Light1' ktab size: 54, total: 108 (saved 432 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Light1[54] = {
+ /* K0 */ be_const_int(0),
+ /* K1 */ be_nested_str_weak(BRIDGE),
+ /* K2 */ be_nested_str_weak(tasmota),
+ /* K3 */ be_nested_str_weak(scale_uint),
+ /* K4 */ be_nested_str_weak(call_remote_sync),
+ /* K5 */ be_nested_str_weak(Dimmer),
+ /* K6 */ be_nested_str_weak(parse_status),
+ /* K7 */ be_nested_str_weak(VIRTUAL),
+ /* K8 */ be_nested_str_weak(shadow_onoff),
+ /* K9 */ be_nested_str_weak(attribute_updated),
+ /* K10 */ be_nested_str_weak(shadow_bri),
+ /* K11 */ be_nested_str_weak(light),
+ /* K12 */ be_nested_str_weak(set),
+ /* K13 */ be_nested_str_weak(bri),
+ /* K14 */ be_nested_str_weak(light_index),
+ /* K15 */ be_nested_str_weak(power),
+ /* K16 */ be_nested_str_weak(update_shadow),
+ /* K17 */ be_nested_str_weak(),
+ /* K18 */ be_nested_str_weak(_X25i_X25_X25),
+ /* K19 */ be_nested_str_weak(_X26_X23128261_X3B_X20),
+ /* K20 */ be_nested_str_weak(matter),
+ /* K21 */ be_nested_str_weak(TLV),
+ /* K22 */ be_nested_str_weak(cluster),
+ /* K23 */ be_nested_str_weak(command),
+ /* K24 */ be_nested_str_weak(update_shadow_lazy),
+ /* K25 */ be_nested_str_weak(findsubval),
+ /* K26 */ be_nested_str_weak(set_bri),
+ /* K27 */ be_nested_str_weak(log),
+ /* K28 */ be_nested_str_weak(bri_X3A),
+ /* K29 */ be_nested_str_weak(publish_command),
+ /* K30 */ be_nested_str_weak(Bri),
+ /* K31 */ be_const_int(1),
+ /* K32 */ be_const_int(2),
+ /* K33 */ be_const_int(3),
+ /* K34 */ be_nested_str_weak(Power),
+ /* K35 */ be_nested_str_weak(invoke_request),
+ /* K36 */ be_nested_str_weak(attribute),
+ /* K37 */ be_nested_str_weak(U1),
+ /* K38 */ be_nested_str_weak(read_attribute),
+ /* K39 */ be_nested_str_weak(tasmota_relay_index),
+ /* K40 */ be_nested_str_weak(find),
+ /* K41 */ be_nested_str_weak(ARG),
+ /* K42 */ be_nested_str_weak(TYPE),
+ /* K43 */ be_nested_str_weak(light1),
+ /* K44 */ be_nested_str_weak(get_option),
+ /* K45 */ be_nested_str_weak(get),
+ /* K46 */ be_nested_str_weak(update_virtual),
+ /* K47 */ be_nested_str_weak(init),
+ /* K48 */ be_nested_str_weak(webserver),
+ /* K49 */ be_nested_str_weak(web_values_prefix),
+ /* K50 */ be_nested_str_weak(content_send),
+ /* K51 */ be_nested_str_weak(_X25s_X20_X25s),
+ /* K52 */ be_nested_str_weak(web_value_onoff),
+ /* K53 */ be_nested_str_weak(web_value_dimmer),
+};
+
+
+extern const bclass be_class_Matter_Plugin_Light1;
+
+/********************************************************************
+** Solidified function: set_bri
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light1_set_bri, /* name */
+ be_nested_proto(
+ 11, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light1, /* shared constants */
+ be_str_weak(set_bri),
+ &be_const_str_solidified,
+ ( &(const binstruction[91]) { /* code */
+ 0x140C0300, // 0000 LT R3 R1 K0
+ 0x780E0000, // 0001 JMPF R3 #0003
+ 0x58040000, // 0002 LDCONST R1 K0
+ 0x540E00FD, // 0003 LDINT R3 254
+ 0x240C0203, // 0004 GT R3 R1 R3
+ 0x780E0000, // 0005 JMPF R3 #0007
+ 0x540600FD, // 0006 LDINT R1 254
+ 0x4C0C0000, // 0007 LDNIL R3
+ 0x200C0403, // 0008 NE R3 R2 R3
+ 0x780E0003, // 0009 JMPF R3 #000E
+ 0x600C0017, // 000A GETGBL R3 G23
+ 0x5C100400, // 000B MOVE R4 R2
+ 0x7C0C0200, // 000C CALL R3 1
+ 0x70020000, // 000D JMP #000F
+ 0x4C0C0000, // 000E LDNIL R3
+ 0x5C080600, // 000F MOVE R2 R3
+ 0x880C0101, // 0010 GETMBR R3 R0 K1
+ 0x780E0015, // 0011 JMPF R3 #0028
+ 0xB80E0400, // 0012 GETNGBL R3 K2
+ 0x8C0C0703, // 0013 GETMET R3 R3 K3
+ 0x5C140200, // 0014 MOVE R5 R1
+ 0x58180000, // 0015 LDCONST R6 K0
+ 0x541E00FD, // 0016 LDINT R7 254
+ 0x58200000, // 0017 LDCONST R8 K0
+ 0x54260063, // 0018 LDINT R9 100
+ 0x7C0C0C00, // 0019 CALL R3 6
+ 0x8C100104, // 001A GETMET R4 R0 K4
+ 0x58180005, // 001B LDCONST R6 K5
+ 0x601C0008, // 001C GETGBL R7 G8
+ 0x5C200600, // 001D MOVE R8 R3
+ 0x7C1C0200, // 001E CALL R7 1
+ 0x7C100600, // 001F CALL R4 3
+ 0x4C140000, // 0020 LDNIL R5
+ 0x20140805, // 0021 NE R5 R4 R5
+ 0x78160003, // 0022 JMPF R5 #0027
+ 0x8C140106, // 0023 GETMET R5 R0 K6
+ 0x5C1C0800, // 0024 MOVE R7 R4
+ 0x5422000A, // 0025 LDINT R8 11
+ 0x7C140600, // 0026 CALL R5 3
+ 0x70020031, // 0027 JMP #005A
+ 0x880C0107, // 0028 GETMBR R3 R0 K7
+ 0x780E0013, // 0029 JMPF R3 #003E
+ 0x4C0C0000, // 002A LDNIL R3
+ 0x200C0403, // 002B NE R3 R2 R3
+ 0x780E0007, // 002C JMPF R3 #0035
+ 0x880C0108, // 002D GETMBR R3 R0 K8
+ 0x200C0403, // 002E NE R3 R2 R3
+ 0x780E0004, // 002F JMPF R3 #0035
+ 0x8C0C0109, // 0030 GETMET R3 R0 K9
+ 0x54160005, // 0031 LDINT R5 6
+ 0x58180000, // 0032 LDCONST R6 K0
+ 0x7C0C0600, // 0033 CALL R3 3
+ 0x90021002, // 0034 SETMBR R0 K8 R2
+ 0x880C010A, // 0035 GETMBR R3 R0 K10
+ 0x200C0203, // 0036 NE R3 R1 R3
+ 0x780E0004, // 0037 JMPF R3 #003D
+ 0x8C0C0109, // 0038 GETMET R3 R0 K9
+ 0x54160007, // 0039 LDINT R5 8
+ 0x58180000, // 003A LDCONST R6 K0
+ 0x7C0C0600, // 003B CALL R3 3
+ 0x90021401, // 003C SETMBR R0 K10 R1
+ 0x7002001B, // 003D JMP #005A
+ 0xA40E1600, // 003E IMPORT R3 K11
+ 0xB8120400, // 003F GETNGBL R4 K2
+ 0x8C100903, // 0040 GETMET R4 R4 K3
+ 0x5C180200, // 0041 MOVE R6 R1
+ 0x581C0000, // 0042 LDCONST R7 K0
+ 0x542200FD, // 0043 LDINT R8 254
+ 0x58240000, // 0044 LDCONST R9 K0
+ 0x542A00FE, // 0045 LDINT R10 255
+ 0x7C100C00, // 0046 CALL R4 6
+ 0x4C140000, // 0047 LDNIL R5
+ 0x1C140405, // 0048 EQ R5 R2 R5
+ 0x78160006, // 0049 JMPF R5 #0051
+ 0x8C14070C, // 004A GETMET R5 R3 K12
+ 0x601C0013, // 004B GETGBL R7 G19
+ 0x7C1C0000, // 004C CALL R7 0
+ 0x981E1A04, // 004D SETIDX R7 K13 R4
+ 0x8820010E, // 004E GETMBR R8 R0 K14
+ 0x7C140600, // 004F CALL R5 3
+ 0x70020006, // 0050 JMP #0058
+ 0x8C14070C, // 0051 GETMET R5 R3 K12
+ 0x601C0013, // 0052 GETGBL R7 G19
+ 0x7C1C0000, // 0053 CALL R7 0
+ 0x981E1A04, // 0054 SETIDX R7 K13 R4
+ 0x981E1E02, // 0055 SETIDX R7 K15 R2
+ 0x8820010E, // 0056 GETMBR R8 R0 K14
+ 0x7C140600, // 0057 CALL R5 3
+ 0x8C140110, // 0058 GETMET R5 R0 K16
+ 0x7C140200, // 0059 CALL R5 1
+ 0x80000000, // 005A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_value_dimmer
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light1_web_value_dimmer, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light1, /* shared constants */
+ be_str_weak(web_value_dimmer),
+ &be_const_str_solidified,
+ ( &(const binstruction[20]) { /* code */
+ 0x58040011, // 0000 LDCONST R1 K17
+ 0x8808010A, // 0001 GETMBR R2 R0 K10
+ 0x4C0C0000, // 0002 LDNIL R3
+ 0x20080403, // 0003 NE R2 R2 R3
+ 0x780A000C, // 0004 JMPF R2 #0012
+ 0xB80A0400, // 0005 GETNGBL R2 K2
+ 0x8C080503, // 0006 GETMET R2 R2 K3
+ 0x8810010A, // 0007 GETMBR R4 R0 K10
+ 0x58140000, // 0008 LDCONST R5 K0
+ 0x541A00FD, // 0009 LDINT R6 254
+ 0x581C0000, // 000A LDCONST R7 K0
+ 0x54220063, // 000B LDINT R8 100
+ 0x7C080C00, // 000C CALL R2 6
+ 0x600C0018, // 000D GETGBL R3 G24
+ 0x58100012, // 000E LDCONST R4 K18
+ 0x5C140400, // 000F MOVE R5 R2
+ 0x7C0C0400, // 0010 CALL R3 2
+ 0x5C040600, // 0011 MOVE R1 R3
+ 0x000A2601, // 0012 ADD R2 K19 R1
+ 0x80040400, // 0013 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: invoke_request
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light1_invoke_request, /* name */
+ be_nested_proto(
+ 22, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light1, /* shared constants */
+ be_str_weak(invoke_request),
+ &be_const_str_solidified,
+ ( &(const binstruction[119]) { /* code */
+ 0xA4121600, // 0000 IMPORT R4 K11
+ 0xB8162800, // 0001 GETNGBL R5 K20
+ 0x88140B15, // 0002 GETMBR R5 R5 K21
+ 0x88180716, // 0003 GETMBR R6 R3 K22
+ 0x881C0717, // 0004 GETMBR R7 R3 K23
+ 0x54220007, // 0005 LDINT R8 8
+ 0x1C200C08, // 0006 EQ R8 R6 R8
+ 0x78220064, // 0007 JMPF R8 #006D
+ 0x8C200118, // 0008 GETMET R8 R0 K24
+ 0x7C200200, // 0009 CALL R8 1
+ 0x1C200F00, // 000A EQ R8 R7 K0
+ 0x7822001A, // 000B JMPF R8 #0027
+ 0x8C200519, // 000C GETMET R8 R2 K25
+ 0x58280000, // 000D LDCONST R10 K0
+ 0x7C200400, // 000E CALL R8 2
+ 0x8C24011A, // 000F GETMET R9 R0 K26
+ 0x5C2C1000, // 0010 MOVE R11 R8
+ 0x7C240400, // 0011 CALL R9 2
+ 0x60240008, // 0012 GETGBL R9 G8
+ 0x5C281000, // 0013 MOVE R10 R8
+ 0x7C240200, // 0014 CALL R9 1
+ 0x00263809, // 0015 ADD R9 K28 R9
+ 0x900E3609, // 0016 SETMBR R3 K27 R9
+ 0x8C24011D, // 0017 GETMET R9 R0 K29
+ 0x582C001E, // 0018 LDCONST R11 K30
+ 0x5C301000, // 0019 MOVE R12 R8
+ 0x58340005, // 001A LDCONST R13 K5
+ 0xB83A0400, // 001B GETNGBL R14 K2
+ 0x8C381D03, // 001C GETMET R14 R14 K3
+ 0x5C401000, // 001D MOVE R16 R8
+ 0x58440000, // 001E LDCONST R17 K0
+ 0x544A00FD, // 001F LDINT R18 254
+ 0x584C0000, // 0020 LDCONST R19 K0
+ 0x54520063, // 0021 LDINT R20 100
+ 0x7C380C00, // 0022 CALL R14 6
+ 0x7C240A00, // 0023 CALL R9 5
+ 0x50240200, // 0024 LDBOOL R9 1 0
+ 0x80041200, // 0025 RET 1 R9
+ 0x70020044, // 0026 JMP #006C
+ 0x1C200F1F, // 0027 EQ R8 R7 K31
+ 0x78220002, // 0028 JMPF R8 #002C
+ 0x50200200, // 0029 LDBOOL R8 1 0
+ 0x80041000, // 002A RET 1 R8
+ 0x7002003F, // 002B JMP #006C
+ 0x1C200F20, // 002C EQ R8 R7 K32
+ 0x78220002, // 002D JMPF R8 #0031
+ 0x50200200, // 002E LDBOOL R8 1 0
+ 0x80041000, // 002F RET 1 R8
+ 0x7002003A, // 0030 JMP #006C
+ 0x1C200F21, // 0031 EQ R8 R7 K33
+ 0x78220002, // 0032 JMPF R8 #0036
+ 0x50200200, // 0033 LDBOOL R8 1 0
+ 0x80041000, // 0034 RET 1 R8
+ 0x70020035, // 0035 JMP #006C
+ 0x54220003, // 0036 LDINT R8 4
+ 0x1C200E08, // 0037 EQ R8 R7 R8
+ 0x78220021, // 0038 JMPF R8 #005B
+ 0x8C200519, // 0039 GETMET R8 R2 K25
+ 0x58280000, // 003A LDCONST R10 K0
+ 0x7C200400, // 003B CALL R8 2
+ 0x24241100, // 003C GT R9 R8 K0
+ 0x8C28011A, // 003D GETMET R10 R0 K26
+ 0x5C301000, // 003E MOVE R12 R8
+ 0x5C341200, // 003F MOVE R13 R9
+ 0x7C280600, // 0040 CALL R10 3
+ 0x60280008, // 0041 GETGBL R10 G8
+ 0x5C2C1000, // 0042 MOVE R11 R8
+ 0x7C280200, // 0043 CALL R10 1
+ 0x002A380A, // 0044 ADD R10 K28 R10
+ 0x900E360A, // 0045 SETMBR R3 K27 R10
+ 0x8C28011D, // 0046 GETMET R10 R0 K29
+ 0x5830001E, // 0047 LDCONST R12 K30
+ 0x5C341000, // 0048 MOVE R13 R8
+ 0x58380005, // 0049 LDCONST R14 K5
+ 0xB83E0400, // 004A GETNGBL R15 K2
+ 0x8C3C1F03, // 004B GETMET R15 R15 K3
+ 0x5C441000, // 004C MOVE R17 R8
+ 0x58480000, // 004D LDCONST R18 K0
+ 0x544E00FD, // 004E LDINT R19 254
+ 0x58500000, // 004F LDCONST R20 K0
+ 0x54560063, // 0050 LDINT R21 100
+ 0x7C3C0C00, // 0051 CALL R15 6
+ 0x58400022, // 0052 LDCONST R16 K34
+ 0x78260001, // 0053 JMPF R9 #0056
+ 0x5844001F, // 0054 LDCONST R17 K31
+ 0x70020000, // 0055 JMP #0057
+ 0x58440000, // 0056 LDCONST R17 K0
+ 0x7C280E00, // 0057 CALL R10 7
+ 0x50280200, // 0058 LDBOOL R10 1 0
+ 0x80041400, // 0059 RET 1 R10
+ 0x70020010, // 005A JMP #006C
+ 0x54220004, // 005B LDINT R8 5
+ 0x1C200E08, // 005C EQ R8 R7 R8
+ 0x78220002, // 005D JMPF R8 #0061
+ 0x50200200, // 005E LDBOOL R8 1 0
+ 0x80041000, // 005F RET 1 R8
+ 0x7002000A, // 0060 JMP #006C
+ 0x54220005, // 0061 LDINT R8 6
+ 0x1C200E08, // 0062 EQ R8 R7 R8
+ 0x78220002, // 0063 JMPF R8 #0067
+ 0x50200200, // 0064 LDBOOL R8 1 0
+ 0x80041000, // 0065 RET 1 R8
+ 0x70020004, // 0066 JMP #006C
+ 0x54220006, // 0067 LDINT R8 7
+ 0x1C200E08, // 0068 EQ R8 R7 R8
+ 0x78220001, // 0069 JMPF R8 #006C
+ 0x50200200, // 006A LDBOOL R8 1 0
+ 0x80041000, // 006B RET 1 R8
+ 0x70020008, // 006C JMP #0076
+ 0x60200003, // 006D GETGBL R8 G3
+ 0x5C240000, // 006E MOVE R9 R0
+ 0x7C200200, // 006F CALL R8 1
+ 0x8C201123, // 0070 GETMET R8 R8 K35
+ 0x5C280200, // 0071 MOVE R10 R1
+ 0x5C2C0400, // 0072 MOVE R11 R2
+ 0x5C300600, // 0073 MOVE R12 R3
+ 0x7C200800, // 0074 CALL R8 4
+ 0x80041000, // 0075 RET 1 R8
+ 0x80000000, // 0076 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_attribute
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light1_read_attribute, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light1, /* shared constants */
+ be_str_weak(read_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[59]) { /* code */
+ 0xB8122800, // 0000 GETNGBL R4 K20
+ 0x88100915, // 0001 GETMBR R4 R4 K21
+ 0x88140516, // 0002 GETMBR R5 R2 K22
+ 0x88180524, // 0003 GETMBR R6 R2 K36
+ 0x541E0007, // 0004 LDINT R7 8
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E002A, // 0006 JMPF R7 #0032
+ 0x8C1C0118, // 0007 GETMET R7 R0 K24
+ 0x7C1C0200, // 0008 CALL R7 1
+ 0x1C1C0D00, // 0009 EQ R7 R6 K0
+ 0x781E0005, // 000A JMPF R7 #0011
+ 0x8C1C070C, // 000B GETMET R7 R3 K12
+ 0x88240925, // 000C GETMBR R9 R4 K37
+ 0x8828010A, // 000D GETMBR R10 R0 K10
+ 0x7C1C0600, // 000E CALL R7 3
+ 0x80040E00, // 000F RET 1 R7
+ 0x70020020, // 0010 JMP #0032
+ 0x1C1C0D20, // 0011 EQ R7 R6 K32
+ 0x781E0005, // 0012 JMPF R7 #0019
+ 0x8C1C070C, // 0013 GETMET R7 R3 K12
+ 0x88240925, // 0014 GETMBR R9 R4 K37
+ 0x58280000, // 0015 LDCONST R10 K0
+ 0x7C1C0600, // 0016 CALL R7 3
+ 0x80040E00, // 0017 RET 1 R7
+ 0x70020018, // 0018 JMP #0032
+ 0x1C1C0D21, // 0019 EQ R7 R6 K33
+ 0x781E0005, // 001A JMPF R7 #0021
+ 0x8C1C070C, // 001B GETMET R7 R3 K12
+ 0x88240925, // 001C GETMBR R9 R4 K37
+ 0x542A00FD, // 001D LDINT R10 254
+ 0x7C1C0600, // 001E CALL R7 3
+ 0x80040E00, // 001F RET 1 R7
+ 0x70020010, // 0020 JMP #0032
+ 0x541E000E, // 0021 LDINT R7 15
+ 0x1C1C0C07, // 0022 EQ R7 R6 R7
+ 0x781E0005, // 0023 JMPF R7 #002A
+ 0x8C1C070C, // 0024 GETMET R7 R3 K12
+ 0x88240925, // 0025 GETMBR R9 R4 K37
+ 0x58280000, // 0026 LDCONST R10 K0
+ 0x7C1C0600, // 0027 CALL R7 3
+ 0x80040E00, // 0028 RET 1 R7
+ 0x70020007, // 0029 JMP #0032
+ 0x541E0010, // 002A LDINT R7 17
+ 0x1C1C0C07, // 002B EQ R7 R6 R7
+ 0x781E0004, // 002C JMPF R7 #0032
+ 0x8C1C070C, // 002D GETMET R7 R3 K12
+ 0x88240925, // 002E GETMBR R9 R4 K37
+ 0x8828010A, // 002F GETMBR R10 R0 K10
+ 0x7C1C0600, // 0030 CALL R7 3
+ 0x80040E00, // 0031 RET 1 R7
+ 0x601C0003, // 0032 GETGBL R7 G3
+ 0x5C200000, // 0033 MOVE R8 R0
+ 0x7C1C0200, // 0034 CALL R7 1
+ 0x8C1C0F26, // 0035 GETMET R7 R7 K38
+ 0x5C240200, // 0036 MOVE R9 R1
+ 0x5C280400, // 0037 MOVE R10 R2
+ 0x5C2C0600, // 0038 MOVE R11 R3
+ 0x7C1C0800, // 0039 CALL R7 4
+ 0x80040E00, // 003A RET 1 R7
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_configuration
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light1_parse_configuration, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light1, /* shared constants */
+ be_str_weak(parse_configuration),
+ &be_const_str_solidified,
+ ( &(const binstruction[52]) { /* code */
+ 0x88080101, // 0000 GETMBR R2 R0 K1
+ 0x780A000F, // 0001 JMPF R2 #0012
+ 0x60080009, // 0002 GETGBL R2 G9
+ 0x8C0C0328, // 0003 GETMET R3 R1 K40
+ 0x88140129, // 0004 GETMBR R5 R0 K41
+ 0x4C180000, // 0005 LDNIL R6
+ 0x7C0C0600, // 0006 CALL R3 3
+ 0x7C080200, // 0007 CALL R2 1
+ 0x90024E02, // 0008 SETMBR R0 K39 R2
+ 0x88080127, // 0009 GETMBR R2 R0 K39
+ 0x4C0C0000, // 000A LDNIL R3
+ 0x20080403, // 000B NE R2 R2 R3
+ 0x780A0003, // 000C JMPF R2 #0011
+ 0x88080127, // 000D GETMBR R2 R0 K39
+ 0x18080500, // 000E LE R2 R2 K0
+ 0x780A0000, // 000F JMPF R2 #0011
+ 0x90024F1F, // 0010 SETMBR R0 K39 K31
+ 0x70020020, // 0011 JMP #0033
+ 0x88080127, // 0012 GETMBR R2 R0 K39
+ 0x4C0C0000, // 0013 LDNIL R3
+ 0x1C080403, // 0014 EQ R2 R2 R3
+ 0x780A001C, // 0015 JMPF R2 #0033
+ 0x8808012A, // 0016 GETMBR R2 R0 K42
+ 0x1C08052B, // 0017 EQ R2 R2 K43
+ 0x780A0019, // 0018 JMPF R2 #0033
+ 0x8C080328, // 0019 GETMET R2 R1 K40
+ 0x88100129, // 001A GETMBR R4 R0 K41
+ 0x7C080400, // 001B CALL R2 2
+ 0x4C0C0000, // 001C LDNIL R3
+ 0x1C0C0403, // 001D EQ R3 R2 R3
+ 0x780E000E, // 001E JMPF R3 #002E
+ 0xB80E0400, // 001F GETNGBL R3 K2
+ 0x8C0C072C, // 0020 GETMET R3 R3 K44
+ 0x54160043, // 0021 LDINT R5 68
+ 0x7C0C0400, // 0022 CALL R3 2
+ 0x1C0C0700, // 0023 EQ R3 R3 K0
+ 0x780E0007, // 0024 JMPF R3 #002D
+ 0xA40E1600, // 0025 IMPORT R3 K11
+ 0x8C10072D, // 0026 GETMET R4 R3 K45
+ 0x5818001F, // 0027 LDCONST R6 K31
+ 0x7C100400, // 0028 CALL R4 2
+ 0x4C140000, // 0029 LDNIL R5
+ 0x20100805, // 002A NE R4 R4 R5
+ 0x78120000, // 002B JMPF R4 #002D
+ 0x90021D1F, // 002C SETMBR R0 K14 K31
+ 0x70020004, // 002D JMP #0033
+ 0x600C0009, // 002E GETGBL R3 G9
+ 0x5C100400, // 002F MOVE R4 R2
+ 0x7C0C0200, // 0030 CALL R3 1
+ 0x040C071F, // 0031 SUB R3 R3 K31
+ 0x90021C03, // 0032 SETMBR R0 K14 R3
+ 0x80000000, // 0033 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: update_virtual
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light1_update_virtual, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light1, /* shared constants */
+ be_str_weak(update_virtual),
+ &be_const_str_solidified,
+ ( &(const binstruction[23]) { /* code */
+ 0x8C080328, // 0000 GETMET R2 R1 K40
+ 0x58100022, // 0001 LDCONST R4 K34
+ 0x7C080400, // 0002 CALL R2 2
+ 0x8C0C0328, // 0003 GETMET R3 R1 K40
+ 0x5814001E, // 0004 LDCONST R5 K30
+ 0x7C0C0400, // 0005 CALL R3 2
+ 0x4C100000, // 0006 LDNIL R4
+ 0x20100604, // 0007 NE R4 R3 R4
+ 0x78120006, // 0008 JMPF R4 #0010
+ 0x8C10011A, // 0009 GETMET R4 R0 K26
+ 0x60180009, // 000A GETGBL R6 G9
+ 0x5C1C0600, // 000B MOVE R7 R3
+ 0x7C180200, // 000C CALL R6 1
+ 0x5C1C0400, // 000D MOVE R7 R2
+ 0x7C100600, // 000E CALL R4 3
+ 0x80000800, // 000F RET 0
+ 0x60100003, // 0010 GETGBL R4 G3
+ 0x5C140000, // 0011 MOVE R5 R0
+ 0x7C100200, // 0012 CALL R4 1
+ 0x8C10092E, // 0013 GETMET R4 R4 K46
+ 0x5C180200, // 0014 MOVE R6 R1
+ 0x7C100400, // 0015 CALL R4 2
+ 0x80000000, // 0016 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light1_init, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light1, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x90021500, // 0000 SETMBR R0 K10 K0
+ 0x60100003, // 0001 GETGBL R4 G3
+ 0x5C140000, // 0002 MOVE R5 R0
+ 0x7C100200, // 0003 CALL R4 1
+ 0x8C10092F, // 0004 GETMET R4 R4 K47
+ 0x5C180200, // 0005 MOVE R6 R1
+ 0x5C1C0400, // 0006 MOVE R7 R2
+ 0x5C200600, // 0007 MOVE R8 R3
+ 0x7C100800, // 0008 CALL R4 4
+ 0x80000000, // 0009 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_values
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light1_web_values, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light1, /* shared constants */
+ be_str_weak(web_values),
+ &be_const_str_solidified,
+ ( &(const binstruction[14]) { /* code */
+ 0xA4066000, // 0000 IMPORT R1 K48
+ 0x8C080131, // 0001 GETMET R2 R0 K49
+ 0x7C080200, // 0002 CALL R2 1
+ 0x8C080332, // 0003 GETMET R2 R1 K50
+ 0x60100018, // 0004 GETGBL R4 G24
+ 0x58140033, // 0005 LDCONST R5 K51
+ 0x8C180134, // 0006 GETMET R6 R0 K52
+ 0x88200108, // 0007 GETMBR R8 R0 K8
+ 0x7C180400, // 0008 CALL R6 2
+ 0x8C1C0135, // 0009 GETMET R7 R0 K53
+ 0x7C1C0200, // 000A CALL R7 1
+ 0x7C100600, // 000B CALL R4 3
+ 0x7C080400, // 000C CALL R2 2
+ 0x80000000, // 000D RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_status
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light1_parse_status, /* name */
+ be_nested_proto(
+ 11, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light1, /* shared constants */
+ be_str_weak(parse_status),
+ &be_const_str_solidified,
+ ( &(const binstruction[35]) { /* code */
+ 0x600C0003, // 0000 GETGBL R3 G3
+ 0x5C100000, // 0001 MOVE R4 R0
+ 0x7C0C0200, // 0002 CALL R3 1
+ 0x8C0C0706, // 0003 GETMET R3 R3 K6
+ 0x5C140200, // 0004 MOVE R5 R1
+ 0x5C180400, // 0005 MOVE R6 R2
+ 0x7C0C0600, // 0006 CALL R3 3
+ 0x540E000A, // 0007 LDINT R3 11
+ 0x1C0C0403, // 0008 EQ R3 R2 R3
+ 0x780E0017, // 0009 JMPF R3 #0022
+ 0x600C0009, // 000A GETGBL R3 G9
+ 0x8C100328, // 000B GETMET R4 R1 K40
+ 0x58180005, // 000C LDCONST R6 K5
+ 0x7C100400, // 000D CALL R4 2
+ 0x7C0C0200, // 000E CALL R3 1
+ 0x4C100000, // 000F LDNIL R4
+ 0x20100604, // 0010 NE R4 R3 R4
+ 0x7812000F, // 0011 JMPF R4 #0022
+ 0xB8120400, // 0012 GETNGBL R4 K2
+ 0x8C100903, // 0013 GETMET R4 R4 K3
+ 0x5C180600, // 0014 MOVE R6 R3
+ 0x581C0000, // 0015 LDCONST R7 K0
+ 0x54220063, // 0016 LDINT R8 100
+ 0x58240000, // 0017 LDCONST R9 K0
+ 0x542A00FD, // 0018 LDINT R10 254
+ 0x7C100C00, // 0019 CALL R4 6
+ 0x8814010A, // 001A GETMBR R5 R0 K10
+ 0x20140805, // 001B NE R5 R4 R5
+ 0x78160004, // 001C JMPF R5 #0022
+ 0x8C140109, // 001D GETMET R5 R0 K9
+ 0x541E0007, // 001E LDINT R7 8
+ 0x58200000, // 001F LDCONST R8 K0
+ 0x7C140600, // 0020 CALL R5 3
+ 0x90021404, // 0021 SETMBR R0 K10 R4
+ 0x80000000, // 0022 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: update_shadow
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light1_update_shadow, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light1, /* shared constants */
+ be_str_weak(update_shadow),
+ &be_const_str_solidified,
+ ( &(const binstruction[53]) { /* code */
+ 0x88040107, // 0000 GETMBR R1 R0 K7
+ 0x7406002C, // 0001 JMPT R1 #002F
+ 0x88040101, // 0002 GETMBR R1 R0 K1
+ 0x7406002A, // 0003 JMPT R1 #002F
+ 0xA4061600, // 0004 IMPORT R1 K11
+ 0x8C08032D, // 0005 GETMET R2 R1 K45
+ 0x8810010E, // 0006 GETMBR R4 R0 K14
+ 0x7C080400, // 0007 CALL R2 2
+ 0x4C0C0000, // 0008 LDNIL R3
+ 0x200C0403, // 0009 NE R3 R2 R3
+ 0x780E0023, // 000A JMPF R3 #002F
+ 0x8C0C0528, // 000B GETMET R3 R2 K40
+ 0x5814000F, // 000C LDCONST R5 K15
+ 0x4C180000, // 000D LDNIL R6
+ 0x7C0C0600, // 000E CALL R3 3
+ 0x88100108, // 000F GETMBR R4 R0 K8
+ 0x20100604, // 0010 NE R4 R3 R4
+ 0x78120004, // 0011 JMPF R4 #0017
+ 0x8C100109, // 0012 GETMET R4 R0 K9
+ 0x541A0005, // 0013 LDINT R6 6
+ 0x581C0000, // 0014 LDCONST R7 K0
+ 0x7C100600, // 0015 CALL R4 3
+ 0x90021003, // 0016 SETMBR R0 K8 R3
+ 0x8C100528, // 0017 GETMET R4 R2 K40
+ 0x5818000D, // 0018 LDCONST R6 K13
+ 0x4C1C0000, // 0019 LDNIL R7
+ 0x7C100600, // 001A CALL R4 3
+ 0x4C140000, // 001B LDNIL R5
+ 0x20140805, // 001C NE R5 R4 R5
+ 0x78160010, // 001D JMPF R5 #002F
+ 0xB8160400, // 001E GETNGBL R5 K2
+ 0x8C140B03, // 001F GETMET R5 R5 K3
+ 0x5C1C0800, // 0020 MOVE R7 R4
+ 0x58200000, // 0021 LDCONST R8 K0
+ 0x542600FE, // 0022 LDINT R9 255
+ 0x58280000, // 0023 LDCONST R10 K0
+ 0x542E00FD, // 0024 LDINT R11 254
+ 0x7C140C00, // 0025 CALL R5 6
+ 0x5C100A00, // 0026 MOVE R4 R5
+ 0x8814010A, // 0027 GETMBR R5 R0 K10
+ 0x20140805, // 0028 NE R5 R4 R5
+ 0x78160004, // 0029 JMPF R5 #002F
+ 0x8C140109, // 002A GETMET R5 R0 K9
+ 0x541E0007, // 002B LDINT R7 8
+ 0x58200000, // 002C LDCONST R8 K0
+ 0x7C140600, // 002D CALL R5 3
+ 0x90021404, // 002E SETMBR R0 K10 R4
+ 0x60040003, // 002F GETGBL R1 G3
+ 0x5C080000, // 0030 MOVE R2 R0
+ 0x7C040200, // 0031 CALL R1 1
+ 0x8C040310, // 0032 GETMET R1 R1 K16
+ 0x7C040200, // 0033 CALL R1 1
+ 0x80000000, // 0034 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Light1
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Light0;
+be_local_class(Matter_Plugin_Light1,
+ 1,
+ &be_class_Matter_Plugin_Light0,
+ be_nested_map(18,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(ARG_HINT, 16), be_nested_str_weak(_X28opt_X29_X20Light_X20number) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(light1) },
+ { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(1,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(257, -1), be_const_int(2) },
+ })) ) } )) },
+ { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(2,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_nested_str_weak(Power),
+ be_nested_str_weak(Bri),
+ })) ) } )) },
+ { be_const_key_weak(web_value_dimmer, 13), be_const_closure(class_Matter_Plugin_Light1_web_value_dimmer_closure) },
+ { be_const_key_weak(set_bri, 17), be_const_closure(class_Matter_Plugin_Light1_set_bri_closure) },
+ { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Light1_read_attribute_closure) },
+ { be_const_key_weak(parse_configuration, 10), be_const_closure(class_Matter_Plugin_Light1_parse_configuration_closure) },
+ { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Light1_update_virtual_closure) },
+ { be_const_key_weak(DISPLAY_NAME, 0), be_nested_str_weak(Light_X201_X20Dimmer) },
+ { be_const_key_weak(update_shadow, 12), be_const_closure(class_Matter_Plugin_Light1_update_shadow_closure) },
+ { be_const_key_weak(parse_status, -1), be_const_closure(class_Matter_Plugin_Light1_parse_status_closure) },
+ { be_const_key_weak(shadow_bri, -1), be_const_var(0) },
+ { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(7,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(29, 2), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(8, 0), be_const_bytes_instance(000000020003000F0011FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(3, -1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(6, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ })) ) } )) },
+ { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Light1_web_values_closure) },
+ { be_const_key_weak(init, 11), be_const_closure(class_Matter_Plugin_Light1_init_closure) },
+ { be_const_key_weak(ARG, -1), be_nested_str_weak(light) },
+ { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Light1_invoke_request_closure) },
+ })),
+ be_str_weak(Matter_Plugin_Light1)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light2.h
deleted file mode 100644
index cdf9539d2..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light2.h
+++ /dev/null
@@ -1,634 +0,0 @@
-/* Solidification of Matter_Plugin_3_Light2.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_Light2;
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light2;
-be_local_closure(class_Matter_Plugin_Light2_init, /* name */
- be_nested_proto(
- 9, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Light2,
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(shadow_ct),
- /* K2 */ be_nested_str_weak(update_ct_minmax),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[13]) { /* code */
- 0x60100003, // 0000 GETGBL R4 G3
- 0x5C140000, // 0001 MOVE R5 R0
- 0x7C100200, // 0002 CALL R4 1
- 0x8C100900, // 0003 GETMET R4 R4 K0
- 0x5C180200, // 0004 MOVE R6 R1
- 0x5C1C0400, // 0005 MOVE R7 R2
- 0x5C200600, // 0006 MOVE R8 R3
- 0x7C100800, // 0007 CALL R4 4
- 0x54120144, // 0008 LDINT R4 325
- 0x90020204, // 0009 SETMBR R0 K1 R4
- 0x8C100102, // 000A GETMET R4 R0 K2
- 0x7C100200, // 000B CALL R4 1
- 0x80000000, // 000C RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: invoke_request
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light2;
-be_local_closure(class_Matter_Plugin_Light2_invoke_request, /* name */
- be_nested_proto(
- 13, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Light2,
- 1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(light),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(TLV),
- /* K3 */ be_nested_str_weak(cluster),
- /* K4 */ be_nested_str_weak(command),
- /* K5 */ be_nested_str_weak(update_shadow_lazy),
- /* K6 */ be_nested_str_weak(findsubval),
- /* K7 */ be_const_int(0),
- /* K8 */ be_nested_str_weak(set_ct),
- /* K9 */ be_nested_str_weak(log),
- /* K10 */ be_nested_str_weak(ct_X3A),
- /* K11 */ be_nested_str_weak(publish_command),
- /* K12 */ be_nested_str_weak(CT),
- /* K13 */ be_nested_str_weak(invoke_request),
- }),
- be_str_weak(invoke_request),
- &be_const_str_solidified,
- ( &(const binstruction[59]) { /* code */
- 0xA4120000, // 0000 IMPORT R4 K0
- 0xB8160200, // 0001 GETNGBL R5 K1
- 0x88140B02, // 0002 GETMBR R5 R5 K2
- 0x88180703, // 0003 GETMBR R6 R3 K3
- 0x881C0704, // 0004 GETMBR R7 R3 K4
- 0x542202FF, // 0005 LDINT R8 768
- 0x1C200C08, // 0006 EQ R8 R6 R8
- 0x78220028, // 0007 JMPF R8 #0031
- 0x8C200105, // 0008 GETMET R8 R0 K5
- 0x7C200200, // 0009 CALL R8 1
- 0x54220009, // 000A LDINT R8 10
- 0x1C200E08, // 000B EQ R8 R7 R8
- 0x78220011, // 000C JMPF R8 #001F
- 0x8C200506, // 000D GETMET R8 R2 K6
- 0x58280007, // 000E LDCONST R10 K7
- 0x7C200400, // 000F CALL R8 2
- 0x8C240108, // 0010 GETMET R9 R0 K8
- 0x5C2C1000, // 0011 MOVE R11 R8
- 0x7C240400, // 0012 CALL R9 2
- 0x60240008, // 0013 GETGBL R9 G8
- 0x5C281000, // 0014 MOVE R10 R8
- 0x7C240200, // 0015 CALL R9 1
- 0x00261409, // 0016 ADD R9 K10 R9
- 0x900E1209, // 0017 SETMBR R3 K9 R9
- 0x8C24010B, // 0018 GETMET R9 R0 K11
- 0x582C000C, // 0019 LDCONST R11 K12
- 0x5C301000, // 001A MOVE R12 R8
- 0x7C240600, // 001B CALL R9 3
- 0x50240200, // 001C LDBOOL R9 1 0
- 0x80041200, // 001D RET 1 R9
- 0x70020010, // 001E JMP #0030
- 0x54220046, // 001F LDINT R8 71
- 0x1C200E08, // 0020 EQ R8 R7 R8
- 0x78220002, // 0021 JMPF R8 #0025
- 0x50200200, // 0022 LDBOOL R8 1 0
- 0x80041000, // 0023 RET 1 R8
- 0x7002000A, // 0024 JMP #0030
- 0x5422004A, // 0025 LDINT R8 75
- 0x1C200E08, // 0026 EQ R8 R7 R8
- 0x78220002, // 0027 JMPF R8 #002B
- 0x50200200, // 0028 LDBOOL R8 1 0
- 0x80041000, // 0029 RET 1 R8
- 0x70020004, // 002A JMP #0030
- 0x5422004B, // 002B LDINT R8 76
- 0x1C200E08, // 002C EQ R8 R7 R8
- 0x78220001, // 002D JMPF R8 #0030
- 0x50200200, // 002E LDBOOL R8 1 0
- 0x80041000, // 002F RET 1 R8
- 0x70020008, // 0030 JMP #003A
- 0x60200003, // 0031 GETGBL R8 G3
- 0x5C240000, // 0032 MOVE R9 R0
- 0x7C200200, // 0033 CALL R8 1
- 0x8C20110D, // 0034 GETMET R8 R8 K13
- 0x5C280200, // 0035 MOVE R10 R1
- 0x5C2C0400, // 0036 MOVE R11 R2
- 0x5C300600, // 0037 MOVE R12 R3
- 0x7C200800, // 0038 CALL R8 4
- 0x80041000, // 0039 RET 1 R8
- 0x80000000, // 003A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_shadow
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light2;
-be_local_closure(class_Matter_Plugin_Light2_update_shadow, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Light2,
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(VIRTUAL),
- /* K1 */ be_nested_str_weak(light),
- /* K2 */ be_nested_str_weak(update_ct_minmax),
- /* K3 */ be_nested_str_weak(update_shadow),
- /* K4 */ be_nested_str_weak(get),
- /* K5 */ be_nested_str_weak(find),
- /* K6 */ be_nested_str_weak(ct),
- /* K7 */ be_nested_str_weak(shadow_ct),
- /* K8 */ be_nested_str_weak(attribute_updated),
- }),
- be_str_weak(update_shadow),
- &be_const_str_solidified,
- ( &(const binstruction[38]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x7406001D, // 0001 JMPT R1 #0020
- 0xA4060200, // 0002 IMPORT R1 K1
- 0x8C080102, // 0003 GETMET R2 R0 K2
- 0x7C080200, // 0004 CALL R2 1
- 0x60080003, // 0005 GETGBL R2 G3
- 0x5C0C0000, // 0006 MOVE R3 R0
- 0x7C080200, // 0007 CALL R2 1
- 0x8C080503, // 0008 GETMET R2 R2 K3
- 0x7C080200, // 0009 CALL R2 1
- 0x8C080304, // 000A GETMET R2 R1 K4
- 0x7C080200, // 000B CALL R2 1
- 0x4C0C0000, // 000C LDNIL R3
- 0x200C0403, // 000D NE R3 R2 R3
- 0x780E000F, // 000E JMPF R3 #001F
- 0x8C0C0505, // 000F GETMET R3 R2 K5
- 0x58140006, // 0010 LDCONST R5 K6
- 0x4C180000, // 0011 LDNIL R6
- 0x7C0C0600, // 0012 CALL R3 3
- 0x4C100000, // 0013 LDNIL R4
- 0x1C100604, // 0014 EQ R4 R3 R4
- 0x78120000, // 0015 JMPF R4 #0017
- 0x880C0107, // 0016 GETMBR R3 R0 K7
- 0x88100107, // 0017 GETMBR R4 R0 K7
- 0x20100604, // 0018 NE R4 R3 R4
- 0x78120004, // 0019 JMPF R4 #001F
- 0x8C100108, // 001A GETMET R4 R0 K8
- 0x541A02FF, // 001B LDINT R6 768
- 0x541E0006, // 001C LDINT R7 7
- 0x7C100600, // 001D CALL R4 3
- 0x90020E03, // 001E SETMBR R0 K7 R3
- 0x70020004, // 001F JMP #0025
- 0x60040003, // 0020 GETGBL R1 G3
- 0x5C080000, // 0021 MOVE R2 R0
- 0x7C040200, // 0022 CALL R1 1
- 0x8C040303, // 0023 GETMET R1 R1 K3
- 0x7C040200, // 0024 CALL R1 1
- 0x80000000, // 0025 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_virtual
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light2;
-be_local_closure(class_Matter_Plugin_Light2_update_virtual, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Light2,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(find),
- /* K1 */ be_nested_str_weak(CT),
- /* K2 */ be_nested_str_weak(set_ct),
- /* K3 */ be_nested_str_weak(update_virtual),
- }),
- be_str_weak(update_virtual),
- &be_const_str_solidified,
- ( &(const binstruction[18]) { /* code */
- 0x60080009, // 0000 GETGBL R2 G9
- 0x8C0C0300, // 0001 GETMET R3 R1 K0
- 0x58140001, // 0002 LDCONST R5 K1
- 0x7C0C0400, // 0003 CALL R3 2
- 0x7C080200, // 0004 CALL R2 1
- 0x4C0C0000, // 0005 LDNIL R3
- 0x200C0403, // 0006 NE R3 R2 R3
- 0x780E0002, // 0007 JMPF R3 #000B
- 0x8C0C0102, // 0008 GETMET R3 R0 K2
- 0x5C140400, // 0009 MOVE R5 R2
- 0x7C0C0400, // 000A CALL R3 2
- 0x600C0003, // 000B GETGBL R3 G3
- 0x5C100000, // 000C MOVE R4 R0
- 0x7C0C0200, // 000D CALL R3 1
- 0x8C0C0703, // 000E GETMET R3 R3 K3
- 0x5C140200, // 000F MOVE R5 R1
- 0x7C0C0400, // 0010 CALL R3 2
- 0x80000000, // 0011 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_ct
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light2;
-be_local_closure(class_Matter_Plugin_Light2_set_ct, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Light2,
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(ct_min),
- /* K1 */ be_nested_str_weak(ct_max),
- /* K2 */ be_nested_str_weak(VIRTUAL),
- /* K3 */ be_nested_str_weak(light),
- /* K4 */ be_nested_str_weak(set),
- /* K5 */ be_nested_str_weak(ct),
- /* K6 */ be_nested_str_weak(update_shadow),
- /* K7 */ be_nested_str_weak(shadow_ct),
- /* K8 */ be_nested_str_weak(attribute_updated),
- }),
- be_str_weak(set_ct),
- &be_const_str_solidified,
- ( &(const binstruction[28]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x14080202, // 0001 LT R2 R1 R2
- 0x780A0000, // 0002 JMPF R2 #0004
- 0x88040100, // 0003 GETMBR R1 R0 K0
- 0x88080101, // 0004 GETMBR R2 R0 K1
- 0x24080202, // 0005 GT R2 R1 R2
- 0x780A0000, // 0006 JMPF R2 #0008
- 0x88040101, // 0007 GETMBR R1 R0 K1
- 0x88080102, // 0008 GETMBR R2 R0 K2
- 0x740A0008, // 0009 JMPT R2 #0013
- 0xA40A0600, // 000A IMPORT R2 K3
- 0x8C0C0504, // 000B GETMET R3 R2 K4
- 0x60140013, // 000C GETGBL R5 G19
- 0x7C140000, // 000D CALL R5 0
- 0x98160A01, // 000E SETIDX R5 K5 R1
- 0x7C0C0400, // 000F CALL R3 2
- 0x8C0C0106, // 0010 GETMET R3 R0 K6
- 0x7C0C0200, // 0011 CALL R3 1
- 0x70020007, // 0012 JMP #001B
- 0x88080107, // 0013 GETMBR R2 R0 K7
- 0x20080202, // 0014 NE R2 R1 R2
- 0x780A0004, // 0015 JMPF R2 #001B
- 0x8C080108, // 0016 GETMET R2 R0 K8
- 0x541202FF, // 0017 LDINT R4 768
- 0x54160006, // 0018 LDINT R5 7
- 0x7C080600, // 0019 CALL R2 3
- 0x90020E01, // 001A SETMBR R0 K7 R1
- 0x80000000, // 001B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light2;
-be_local_closure(class_Matter_Plugin_Light2_read_attribute, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Light2,
- 1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_nested_str_weak(update_shadow_lazy),
- /* K5 */ be_nested_str_weak(set),
- /* K6 */ be_nested_str_weak(U1),
- /* K7 */ be_nested_str_weak(shadow_ct),
- /* K8 */ be_const_int(2),
- /* K9 */ be_const_int(0),
- /* K10 */ be_nested_str_weak(ct_min),
- /* K11 */ be_nested_str_weak(ct_max),
- /* K12 */ be_nested_str_weak(U4),
- /* K13 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[71]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E02FF, // 0004 LDINT R7 768
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0036, // 0006 JMPF R7 #003E
- 0x8C1C0104, // 0007 GETMET R7 R0 K4
- 0x7C1C0200, // 0008 CALL R7 1
- 0x541E0006, // 0009 LDINT R7 7
- 0x1C1C0C07, // 000A EQ R7 R6 R7
- 0x781E0005, // 000B JMPF R7 #0012
- 0x8C1C0705, // 000C GETMET R7 R3 K5
- 0x88240906, // 000D GETMBR R9 R4 K6
- 0x88280107, // 000E GETMBR R10 R0 K7
- 0x7C1C0600, // 000F CALL R7 3
- 0x80040E00, // 0010 RET 1 R7
- 0x7002002B, // 0011 JMP #003E
- 0x541E0007, // 0012 LDINT R7 8
- 0x1C1C0C07, // 0013 EQ R7 R6 R7
- 0x781E0005, // 0014 JMPF R7 #001B
- 0x8C1C0705, // 0015 GETMET R7 R3 K5
- 0x88240906, // 0016 GETMBR R9 R4 K6
- 0x58280008, // 0017 LDCONST R10 K8
- 0x7C1C0600, // 0018 CALL R7 3
- 0x80040E00, // 0019 RET 1 R7
- 0x70020022, // 001A JMP #003E
- 0x541E000E, // 001B LDINT R7 15
- 0x1C1C0C07, // 001C EQ R7 R6 R7
- 0x781E0005, // 001D JMPF R7 #0024
- 0x8C1C0705, // 001E GETMET R7 R3 K5
- 0x88240906, // 001F GETMBR R9 R4 K6
- 0x58280009, // 0020 LDCONST R10 K9
- 0x7C1C0600, // 0021 CALL R7 3
- 0x80040E00, // 0022 RET 1 R7
- 0x70020019, // 0023 JMP #003E
- 0x541E400A, // 0024 LDINT R7 16395
- 0x1C1C0C07, // 0025 EQ R7 R6 R7
- 0x781E0005, // 0026 JMPF R7 #002D
- 0x8C1C0705, // 0027 GETMET R7 R3 K5
- 0x88240906, // 0028 GETMBR R9 R4 K6
- 0x8828010A, // 0029 GETMBR R10 R0 K10
- 0x7C1C0600, // 002A CALL R7 3
- 0x80040E00, // 002B RET 1 R7
- 0x70020010, // 002C JMP #003E
- 0x541E400B, // 002D LDINT R7 16396
- 0x1C1C0C07, // 002E EQ R7 R6 R7
- 0x781E0005, // 002F JMPF R7 #0036
- 0x8C1C0705, // 0030 GETMET R7 R3 K5
- 0x88240906, // 0031 GETMBR R9 R4 K6
- 0x8828010B, // 0032 GETMBR R10 R0 K11
- 0x7C1C0600, // 0033 CALL R7 3
- 0x80040E00, // 0034 RET 1 R7
- 0x70020007, // 0035 JMP #003E
- 0x541EFFFB, // 0036 LDINT R7 65532
- 0x1C1C0C07, // 0037 EQ R7 R6 R7
- 0x781E0004, // 0038 JMPF R7 #003E
- 0x8C1C0705, // 0039 GETMET R7 R3 K5
- 0x8824090C, // 003A GETMBR R9 R4 K12
- 0x542A000F, // 003B LDINT R10 16
- 0x7C1C0600, // 003C CALL R7 3
- 0x80040E00, // 003D RET 1 R7
- 0x601C0003, // 003E GETGBL R7 G3
- 0x5C200000, // 003F MOVE R8 R0
- 0x7C1C0200, // 0040 CALL R7 1
- 0x8C1C0F0D, // 0041 GETMET R7 R7 K13
- 0x5C240200, // 0042 MOVE R9 R1
- 0x5C280400, // 0043 MOVE R10 R2
- 0x5C2C0600, // 0044 MOVE R11 R3
- 0x7C1C0800, // 0045 CALL R7 4
- 0x80040E00, // 0046 RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_ct_minmax
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light2;
-be_local_closure(class_Matter_Plugin_Light2_update_ct_minmax, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Light2,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(get_option),
- /* K2 */ be_nested_str_weak(ct_min),
- /* K3 */ be_nested_str_weak(ct_max),
- }),
- be_str_weak(update_ct_minmax),
- &be_const_str_solidified,
- ( &(const binstruction[15]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x540E0051, // 0002 LDINT R3 82
- 0x7C040400, // 0003 CALL R1 2
- 0x78060001, // 0004 JMPF R1 #0007
- 0x540A00C7, // 0005 LDINT R2 200
- 0x70020000, // 0006 JMP #0008
- 0x540A0098, // 0007 LDINT R2 153
- 0x90020402, // 0008 SETMBR R0 K2 R2
- 0x78060001, // 0009 JMPF R1 #000C
- 0x540A017B, // 000A LDINT R2 380
- 0x70020000, // 000B JMP #000D
- 0x540A01F3, // 000C LDINT R2 500
- 0x90020602, // 000D SETMBR R0 K3 R2
- 0x80000000, // 000E RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Light2
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light1;
-be_local_class(Matter_Plugin_Light2,
- 3,
- &be_class_Matter_Plugin_Light1,
- be_nested_map(15,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Light2_init_closure) },
- { be_const_key_weak(shadow_ct, -1), be_const_var(0) },
- { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Light2_invoke_request_closure) },
- { be_const_key_weak(ct_max, -1), be_const_var(2) },
- { be_const_key_weak(update_shadow, 10), be_const_closure(class_Matter_Plugin_Light2_update_shadow_closure) },
- { be_const_key_weak(update_virtual, 8), be_const_closure(class_Matter_Plugin_Light2_update_virtual_closure) },
- { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X202_X20CT) },
- { be_const_key_weak(set_ct, -1), be_const_closure(class_Matter_Plugin_Light2_set_ct_closure) },
- { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(268, -1), be_const_int(2) },
- })) ) } )) },
- { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(3,
- ( (struct bvalue*) &(const bvalue[]) {
- be_nested_str_weak(Power),
- be_nested_str_weak(Bri),
- be_nested_str_weak(CT),
- })) ) } )) },
- { be_const_key_weak(CLUSTERS, 14), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(8,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(8, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(11,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(2),
- be_const_int(3),
- be_const_int(15),
- be_const_int(17),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(5, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(768, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(11,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(7),
- be_const_int(8),
- be_const_int(15),
- be_const_int(16395),
- be_const_int(16396),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- })) ) } )) },
- { be_const_key_weak(update_ct_minmax, -1), be_const_closure(class_Matter_Plugin_Light2_update_ct_minmax_closure) },
- { be_const_key_weak(read_attribute, 11), be_const_closure(class_Matter_Plugin_Light2_read_attribute_closure) },
- { be_const_key_weak(ct_min, -1), be_const_var(1) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(light2) },
- })),
- be_str_weak(Matter_Plugin_Light2)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light3.h
deleted file mode 100644
index 2a4feefc7..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light3.h
+++ /dev/null
@@ -1,806 +0,0 @@
-/* Solidification of Matter_Plugin_3_Light3.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_Light3;
-
-/********************************************************************
-** Solidified function: update_virtual
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light3;
-be_local_closure(class_Matter_Plugin_Light3_update_virtual, /* name */
- be_nested_proto(
- 8, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Light3,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(find),
- /* K1 */ be_nested_str_weak(Hue),
- /* K2 */ be_nested_str_weak(Sat),
- /* K3 */ be_nested_str_weak(set_hue_sat),
- /* K4 */ be_nested_str_weak(update_virtual),
- }),
- be_str_weak(update_virtual),
- &be_const_str_solidified,
- ( &(const binstruction[27]) { /* code */
- 0x60080009, // 0000 GETGBL R2 G9
- 0x8C0C0300, // 0001 GETMET R3 R1 K0
- 0x58140001, // 0002 LDCONST R5 K1
- 0x7C0C0400, // 0003 CALL R3 2
- 0x7C080200, // 0004 CALL R2 1
- 0x600C0009, // 0005 GETGBL R3 G9
- 0x8C100300, // 0006 GETMET R4 R1 K0
- 0x58180002, // 0007 LDCONST R6 K2
- 0x7C100400, // 0008 CALL R4 2
- 0x7C0C0200, // 0009 CALL R3 1
- 0x4C100000, // 000A LDNIL R4
- 0x20100404, // 000B NE R4 R2 R4
- 0x74120002, // 000C JMPT R4 #0010
- 0x4C100000, // 000D LDNIL R4
- 0x20100604, // 000E NE R4 R3 R4
- 0x78120003, // 000F JMPF R4 #0014
- 0x8C100103, // 0010 GETMET R4 R0 K3
- 0x5C180400, // 0011 MOVE R6 R2
- 0x5C1C0600, // 0012 MOVE R7 R3
- 0x7C100600, // 0013 CALL R4 3
- 0x60100003, // 0014 GETGBL R4 G3
- 0x5C140000, // 0015 MOVE R5 R0
- 0x7C100200, // 0016 CALL R4 1
- 0x8C100904, // 0017 GETMET R4 R4 K4
- 0x5C180200, // 0018 MOVE R6 R1
- 0x7C100400, // 0019 CALL R4 2
- 0x80000000, // 001A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_hue_sat
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light3;
-be_local_closure(class_Matter_Plugin_Light3_set_hue_sat, /* name */
- be_nested_proto(
- 11, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Light3,
- 1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(VIRTUAL),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(scale_uint),
- /* K4 */ be_nested_str_weak(light),
- /* K5 */ be_nested_str_weak(set),
- /* K6 */ be_nested_str_weak(hue),
- /* K7 */ be_nested_str_weak(sat),
- /* K8 */ be_nested_str_weak(update_shadow),
- /* K9 */ be_nested_str_weak(shadow_hue),
- /* K10 */ be_nested_str_weak(attribute_updated),
- /* K11 */ be_nested_str_weak(shadow_sat),
- /* K12 */ be_const_int(1),
- }),
- be_str_weak(set_hue_sat),
- &be_const_str_solidified,
- ( &(const binstruction[104]) { /* code */
- 0x4C0C0000, // 0000 LDNIL R3
- 0x200C0203, // 0001 NE R3 R1 R3
- 0x780E0006, // 0002 JMPF R3 #000A
- 0x140C0300, // 0003 LT R3 R1 K0
- 0x780E0000, // 0004 JMPF R3 #0006
- 0x58040000, // 0005 LDCONST R1 K0
- 0x540E00FD, // 0006 LDINT R3 254
- 0x240C0203, // 0007 GT R3 R1 R3
- 0x780E0000, // 0008 JMPF R3 #000A
- 0x540600FD, // 0009 LDINT R1 254
- 0x4C0C0000, // 000A LDNIL R3
- 0x200C0403, // 000B NE R3 R2 R3
- 0x780E0006, // 000C JMPF R3 #0014
- 0x140C0500, // 000D LT R3 R2 K0
- 0x780E0000, // 000E JMPF R3 #0010
- 0x58080000, // 000F LDCONST R2 K0
- 0x540E00FD, // 0010 LDINT R3 254
- 0x240C0403, // 0011 GT R3 R2 R3
- 0x780E0000, // 0012 JMPF R3 #0014
- 0x540A00FD, // 0013 LDINT R2 254
- 0x880C0101, // 0014 GETMBR R3 R0 K1
- 0x740E003A, // 0015 JMPT R3 #0051
- 0x4C0C0000, // 0016 LDNIL R3
- 0x200C0203, // 0017 NE R3 R1 R3
- 0x780E0008, // 0018 JMPF R3 #0022
- 0xB80E0400, // 0019 GETNGBL R3 K2
- 0x8C0C0703, // 001A GETMET R3 R3 K3
- 0x5C140200, // 001B MOVE R5 R1
- 0x58180000, // 001C LDCONST R6 K0
- 0x541E00FD, // 001D LDINT R7 254
- 0x58200000, // 001E LDCONST R8 K0
- 0x54260167, // 001F LDINT R9 360
- 0x7C0C0C00, // 0020 CALL R3 6
- 0x70020000, // 0021 JMP #0023
- 0x4C0C0000, // 0022 LDNIL R3
- 0x4C100000, // 0023 LDNIL R4
- 0x20100404, // 0024 NE R4 R2 R4
- 0x78120008, // 0025 JMPF R4 #002F
- 0xB8120400, // 0026 GETNGBL R4 K2
- 0x8C100903, // 0027 GETMET R4 R4 K3
- 0x5C180400, // 0028 MOVE R6 R2
- 0x581C0000, // 0029 LDCONST R7 K0
- 0x542200FD, // 002A LDINT R8 254
- 0x58240000, // 002B LDCONST R9 K0
- 0x542A00FE, // 002C LDINT R10 255
- 0x7C100C00, // 002D CALL R4 6
- 0x70020000, // 002E JMP #0030
- 0x4C100000, // 002F LDNIL R4
- 0x4C140000, // 0030 LDNIL R5
- 0x20140605, // 0031 NE R5 R3 R5
- 0x7816000A, // 0032 JMPF R5 #003E
- 0x4C140000, // 0033 LDNIL R5
- 0x20140805, // 0034 NE R5 R4 R5
- 0x78160007, // 0035 JMPF R5 #003E
- 0xB8160800, // 0036 GETNGBL R5 K4
- 0x8C140B05, // 0037 GETMET R5 R5 K5
- 0x601C0013, // 0038 GETGBL R7 G19
- 0x7C1C0000, // 0039 CALL R7 0
- 0x981E0C03, // 003A SETIDX R7 K6 R3
- 0x981E0E04, // 003B SETIDX R7 K7 R4
- 0x7C140400, // 003C CALL R5 2
- 0x7002000F, // 003D JMP #004E
- 0x4C140000, // 003E LDNIL R5
- 0x20140605, // 003F NE R5 R3 R5
- 0x78160006, // 0040 JMPF R5 #0048
- 0xB8160800, // 0041 GETNGBL R5 K4
- 0x8C140B05, // 0042 GETMET R5 R5 K5
- 0x601C0013, // 0043 GETGBL R7 G19
- 0x7C1C0000, // 0044 CALL R7 0
- 0x981E0C03, // 0045 SETIDX R7 K6 R3
- 0x7C140400, // 0046 CALL R5 2
- 0x70020005, // 0047 JMP #004E
- 0xB8160800, // 0048 GETNGBL R5 K4
- 0x8C140B05, // 0049 GETMET R5 R5 K5
- 0x601C0013, // 004A GETGBL R7 G19
- 0x7C1C0000, // 004B CALL R7 0
- 0x981E0E04, // 004C SETIDX R7 K7 R4
- 0x7C140400, // 004D CALL R5 2
- 0x8C140108, // 004E GETMET R5 R0 K8
- 0x7C140200, // 004F CALL R5 1
- 0x70020015, // 0050 JMP #0067
- 0x4C0C0000, // 0051 LDNIL R3
- 0x200C0203, // 0052 NE R3 R1 R3
- 0x780E0007, // 0053 JMPF R3 #005C
- 0x880C0109, // 0054 GETMBR R3 R0 K9
- 0x200C0203, // 0055 NE R3 R1 R3
- 0x780E0004, // 0056 JMPF R3 #005C
- 0x8C0C010A, // 0057 GETMET R3 R0 K10
- 0x541602FF, // 0058 LDINT R5 768
- 0x58180000, // 0059 LDCONST R6 K0
- 0x7C0C0600, // 005A CALL R3 3
- 0x90021201, // 005B SETMBR R0 K9 R1
- 0x4C0C0000, // 005C LDNIL R3
- 0x200C0403, // 005D NE R3 R2 R3
- 0x780E0007, // 005E JMPF R3 #0067
- 0x880C010B, // 005F GETMBR R3 R0 K11
- 0x200C0403, // 0060 NE R3 R2 R3
- 0x780E0004, // 0061 JMPF R3 #0067
- 0x8C0C010A, // 0062 GETMET R3 R0 K10
- 0x541602FF, // 0063 LDINT R5 768
- 0x5818000C, // 0064 LDCONST R6 K12
- 0x7C0C0600, // 0065 CALL R3 3
- 0x90021602, // 0066 SETMBR R0 K11 R2
- 0x80000000, // 0067 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: invoke_request
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light3;
-be_local_closure(class_Matter_Plugin_Light3_invoke_request, /* name */
- be_nested_proto(
- 16, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Light3,
- 1, /* has constants */
- ( &(const bvalue[20]) { /* constants */
- /* K0 */ be_nested_str_weak(light),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(TLV),
- /* K3 */ be_nested_str_weak(cluster),
- /* K4 */ be_nested_str_weak(command),
- /* K5 */ be_nested_str_weak(update_shadow_lazy),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(findsubval),
- /* K8 */ be_nested_str_weak(set_hue_sat),
- /* K9 */ be_nested_str_weak(log),
- /* K10 */ be_nested_str_weak(hue_X3A),
- /* K11 */ be_nested_str_weak(publish_command),
- /* K12 */ be_nested_str_weak(Hue),
- /* K13 */ be_const_int(1),
- /* K14 */ be_const_int(2),
- /* K15 */ be_const_int(3),
- /* K16 */ be_nested_str_weak(sat_X3A),
- /* K17 */ be_nested_str_weak(Sat),
- /* K18 */ be_nested_str_weak(_X20sat_X3A),
- /* K19 */ be_nested_str_weak(invoke_request),
- }),
- be_str_weak(invoke_request),
- &be_const_str_solidified,
- ( &(const binstruction[122]) { /* code */
- 0xA4120000, // 0000 IMPORT R4 K0
- 0xB8160200, // 0001 GETNGBL R5 K1
- 0x88140B02, // 0002 GETMBR R5 R5 K2
- 0x88180703, // 0003 GETMBR R6 R3 K3
- 0x881C0704, // 0004 GETMBR R7 R3 K4
- 0x542202FF, // 0005 LDINT R8 768
- 0x1C200C08, // 0006 EQ R8 R6 R8
- 0x78220067, // 0007 JMPF R8 #0070
- 0x8C200105, // 0008 GETMET R8 R0 K5
- 0x7C200200, // 0009 CALL R8 1
- 0x1C200F06, // 000A EQ R8 R7 K6
- 0x78220012, // 000B JMPF R8 #001F
- 0x8C200507, // 000C GETMET R8 R2 K7
- 0x58280006, // 000D LDCONST R10 K6
- 0x7C200400, // 000E CALL R8 2
- 0x8C240108, // 000F GETMET R9 R0 K8
- 0x5C2C1000, // 0010 MOVE R11 R8
- 0x4C300000, // 0011 LDNIL R12
- 0x7C240600, // 0012 CALL R9 3
- 0x60240008, // 0013 GETGBL R9 G8
- 0x5C281000, // 0014 MOVE R10 R8
- 0x7C240200, // 0015 CALL R9 1
- 0x00261409, // 0016 ADD R9 K10 R9
- 0x900E1209, // 0017 SETMBR R3 K9 R9
- 0x8C24010B, // 0018 GETMET R9 R0 K11
- 0x582C000C, // 0019 LDCONST R11 K12
- 0x5C301000, // 001A MOVE R12 R8
- 0x7C240600, // 001B CALL R9 3
- 0x50240200, // 001C LDBOOL R9 1 0
- 0x80041200, // 001D RET 1 R9
- 0x7002004F, // 001E JMP #006F
- 0x1C200F0D, // 001F EQ R8 R7 K13
- 0x78220002, // 0020 JMPF R8 #0024
- 0x50200200, // 0021 LDBOOL R8 1 0
- 0x80041000, // 0022 RET 1 R8
- 0x7002004A, // 0023 JMP #006F
- 0x1C200F0E, // 0024 EQ R8 R7 K14
- 0x78220002, // 0025 JMPF R8 #0029
- 0x50200200, // 0026 LDBOOL R8 1 0
- 0x80041000, // 0027 RET 1 R8
- 0x70020045, // 0028 JMP #006F
- 0x1C200F0F, // 0029 EQ R8 R7 K15
- 0x78220012, // 002A JMPF R8 #003E
- 0x8C200507, // 002B GETMET R8 R2 K7
- 0x58280006, // 002C LDCONST R10 K6
- 0x7C200400, // 002D CALL R8 2
- 0x8C240108, // 002E GETMET R9 R0 K8
- 0x4C2C0000, // 002F LDNIL R11
- 0x5C301000, // 0030 MOVE R12 R8
- 0x7C240600, // 0031 CALL R9 3
- 0x60240008, // 0032 GETGBL R9 G8
- 0x5C281000, // 0033 MOVE R10 R8
- 0x7C240200, // 0034 CALL R9 1
- 0x00262009, // 0035 ADD R9 K16 R9
- 0x900E1209, // 0036 SETMBR R3 K9 R9
- 0x8C24010B, // 0037 GETMET R9 R0 K11
- 0x582C0011, // 0038 LDCONST R11 K17
- 0x5C301000, // 0039 MOVE R12 R8
- 0x7C240600, // 003A CALL R9 3
- 0x50240200, // 003B LDBOOL R9 1 0
- 0x80041200, // 003C RET 1 R9
- 0x70020030, // 003D JMP #006F
- 0x54220003, // 003E LDINT R8 4
- 0x1C200E08, // 003F EQ R8 R7 R8
- 0x78220002, // 0040 JMPF R8 #0044
- 0x50200200, // 0041 LDBOOL R8 1 0
- 0x80041000, // 0042 RET 1 R8
- 0x7002002A, // 0043 JMP #006F
- 0x54220004, // 0044 LDINT R8 5
- 0x1C200E08, // 0045 EQ R8 R7 R8
- 0x78220002, // 0046 JMPF R8 #004A
- 0x50200200, // 0047 LDBOOL R8 1 0
- 0x80041000, // 0048 RET 1 R8
- 0x70020024, // 0049 JMP #006F
- 0x54220005, // 004A LDINT R8 6
- 0x1C200E08, // 004B EQ R8 R7 R8
- 0x7822001C, // 004C JMPF R8 #006A
- 0x8C200507, // 004D GETMET R8 R2 K7
- 0x58280006, // 004E LDCONST R10 K6
- 0x7C200400, // 004F CALL R8 2
- 0x8C240507, // 0050 GETMET R9 R2 K7
- 0x582C000D, // 0051 LDCONST R11 K13
- 0x7C240400, // 0052 CALL R9 2
- 0x8C280108, // 0053 GETMET R10 R0 K8
- 0x5C301000, // 0054 MOVE R12 R8
- 0x5C341200, // 0055 MOVE R13 R9
- 0x7C280600, // 0056 CALL R10 3
- 0x60280008, // 0057 GETGBL R10 G8
- 0x5C2C1000, // 0058 MOVE R11 R8
- 0x7C280200, // 0059 CALL R10 1
- 0x002A140A, // 005A ADD R10 K10 R10
- 0x00281512, // 005B ADD R10 R10 K18
- 0x602C0008, // 005C GETGBL R11 G8
- 0x5C301200, // 005D MOVE R12 R9
- 0x7C2C0200, // 005E CALL R11 1
- 0x0028140B, // 005F ADD R10 R10 R11
- 0x900E120A, // 0060 SETMBR R3 K9 R10
- 0x8C28010B, // 0061 GETMET R10 R0 K11
- 0x5830000C, // 0062 LDCONST R12 K12
- 0x5C341000, // 0063 MOVE R13 R8
- 0x58380011, // 0064 LDCONST R14 K17
- 0x5C3C1200, // 0065 MOVE R15 R9
- 0x7C280A00, // 0066 CALL R10 5
- 0x50280200, // 0067 LDBOOL R10 1 0
- 0x80041400, // 0068 RET 1 R10
- 0x70020004, // 0069 JMP #006F
- 0x54220046, // 006A LDINT R8 71
- 0x1C200E08, // 006B EQ R8 R7 R8
- 0x78220001, // 006C JMPF R8 #006F
- 0x50200200, // 006D LDBOOL R8 1 0
- 0x80041000, // 006E RET 1 R8
- 0x70020008, // 006F JMP #0079
- 0x60200003, // 0070 GETGBL R8 G3
- 0x5C240000, // 0071 MOVE R9 R0
- 0x7C200200, // 0072 CALL R8 1
- 0x8C201113, // 0073 GETMET R8 R8 K19
- 0x5C280200, // 0074 MOVE R10 R1
- 0x5C2C0400, // 0075 MOVE R11 R2
- 0x5C300600, // 0076 MOVE R12 R3
- 0x7C200800, // 0077 CALL R8 4
- 0x80041000, // 0078 RET 1 R8
- 0x80000000, // 0079 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light3;
-be_local_closure(class_Matter_Plugin_Light3_init, /* name */
- be_nested_proto(
- 9, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Light3,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(shadow_hue),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(shadow_sat),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[11]) { /* code */
- 0x60100003, // 0000 GETGBL R4 G3
- 0x5C140000, // 0001 MOVE R5 R0
- 0x7C100200, // 0002 CALL R4 1
- 0x8C100900, // 0003 GETMET R4 R4 K0
- 0x5C180200, // 0004 MOVE R6 R1
- 0x5C1C0400, // 0005 MOVE R7 R2
- 0x5C200600, // 0006 MOVE R8 R3
- 0x7C100800, // 0007 CALL R4 4
- 0x90020302, // 0008 SETMBR R0 K1 K2
- 0x90020702, // 0009 SETMBR R0 K3 K2
- 0x80000000, // 000A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_shadow
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light3;
-be_local_closure(class_Matter_Plugin_Light3_update_shadow, /* name */
- be_nested_proto(
- 12, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Light3,
- 1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(update_shadow),
- /* K1 */ be_nested_str_weak(VIRTUAL),
- /* K2 */ be_nested_str_weak(light),
- /* K3 */ be_nested_str_weak(get),
- /* K4 */ be_nested_str_weak(find),
- /* K5 */ be_nested_str_weak(hue),
- /* K6 */ be_nested_str_weak(sat),
- /* K7 */ be_nested_str_weak(tasmota),
- /* K8 */ be_nested_str_weak(scale_uint),
- /* K9 */ be_const_int(0),
- /* K10 */ be_nested_str_weak(shadow_hue),
- /* K11 */ be_nested_str_weak(shadow_sat),
- /* K12 */ be_nested_str_weak(attribute_updated),
- /* K13 */ be_const_int(1),
- }),
- be_str_weak(update_shadow),
- &be_const_str_solidified,
- ( &(const binstruction[66]) { /* code */
- 0x60040003, // 0000 GETGBL R1 G3
- 0x5C080000, // 0001 MOVE R2 R0
- 0x7C040200, // 0002 CALL R1 1
- 0x8C040300, // 0003 GETMET R1 R1 K0
- 0x7C040200, // 0004 CALL R1 1
- 0x88040101, // 0005 GETMBR R1 R0 K1
- 0x74060039, // 0006 JMPT R1 #0041
- 0xA4060400, // 0007 IMPORT R1 K2
- 0x8C080303, // 0008 GETMET R2 R1 K3
- 0x7C080200, // 0009 CALL R2 1
- 0x4C0C0000, // 000A LDNIL R3
- 0x200C0403, // 000B NE R3 R2 R3
- 0x780E0033, // 000C JMPF R3 #0041
- 0x8C0C0504, // 000D GETMET R3 R2 K4
- 0x58140005, // 000E LDCONST R5 K5
- 0x4C180000, // 000F LDNIL R6
- 0x7C0C0600, // 0010 CALL R3 3
- 0x8C100504, // 0011 GETMET R4 R2 K4
- 0x58180006, // 0012 LDCONST R6 K6
- 0x4C1C0000, // 0013 LDNIL R7
- 0x7C100600, // 0014 CALL R4 3
- 0x4C140000, // 0015 LDNIL R5
- 0x20140605, // 0016 NE R5 R3 R5
- 0x78160009, // 0017 JMPF R5 #0022
- 0xB8160E00, // 0018 GETNGBL R5 K7
- 0x8C140B08, // 0019 GETMET R5 R5 K8
- 0x5C1C0600, // 001A MOVE R7 R3
- 0x58200009, // 001B LDCONST R8 K9
- 0x54260167, // 001C LDINT R9 360
- 0x58280009, // 001D LDCONST R10 K9
- 0x542E00FD, // 001E LDINT R11 254
- 0x7C140C00, // 001F CALL R5 6
- 0x5C0C0A00, // 0020 MOVE R3 R5
- 0x70020000, // 0021 JMP #0023
- 0x880C010A, // 0022 GETMBR R3 R0 K10
- 0x4C140000, // 0023 LDNIL R5
- 0x20140805, // 0024 NE R5 R4 R5
- 0x78160009, // 0025 JMPF R5 #0030
- 0xB8160E00, // 0026 GETNGBL R5 K7
- 0x8C140B08, // 0027 GETMET R5 R5 K8
- 0x5C1C0800, // 0028 MOVE R7 R4
- 0x58200009, // 0029 LDCONST R8 K9
- 0x542600FE, // 002A LDINT R9 255
- 0x58280009, // 002B LDCONST R10 K9
- 0x542E00FD, // 002C LDINT R11 254
- 0x7C140C00, // 002D CALL R5 6
- 0x5C100A00, // 002E MOVE R4 R5
- 0x70020000, // 002F JMP #0031
- 0x8810010B, // 0030 GETMBR R4 R0 K11
- 0x8814010A, // 0031 GETMBR R5 R0 K10
- 0x20140605, // 0032 NE R5 R3 R5
- 0x78160004, // 0033 JMPF R5 #0039
- 0x8C14010C, // 0034 GETMET R5 R0 K12
- 0x541E02FF, // 0035 LDINT R7 768
- 0x58200009, // 0036 LDCONST R8 K9
- 0x7C140600, // 0037 CALL R5 3
- 0x90021403, // 0038 SETMBR R0 K10 R3
- 0x8814010B, // 0039 GETMBR R5 R0 K11
- 0x20140805, // 003A NE R5 R4 R5
- 0x78160004, // 003B JMPF R5 #0041
- 0x8C14010C, // 003C GETMET R5 R0 K12
- 0x541E02FF, // 003D LDINT R7 768
- 0x5820000D, // 003E LDCONST R8 K13
- 0x7C140600, // 003F CALL R5 3
- 0x90021604, // 0040 SETMBR R0 K11 R4
- 0x80000000, // 0041 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light3;
-be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Light3,
- 1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_nested_str_weak(update_shadow_lazy),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(U1),
- /* K8 */ be_nested_str_weak(shadow_hue),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str_weak(shadow_sat),
- /* K11 */ be_nested_str_weak(U4),
- /* K12 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[96]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E02FF, // 0004 LDINT R7 768
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E004F, // 0006 JMPF R7 #0057
- 0x8C1C0104, // 0007 GETMET R7 R0 K4
- 0x7C1C0200, // 0008 CALL R7 1
- 0x1C1C0D05, // 0009 EQ R7 R6 K5
- 0x781E0005, // 000A JMPF R7 #0011
- 0x8C1C0706, // 000B GETMET R7 R3 K6
- 0x88240907, // 000C GETMBR R9 R4 K7
- 0x88280108, // 000D GETMBR R10 R0 K8
- 0x7C1C0600, // 000E CALL R7 3
- 0x80040E00, // 000F RET 1 R7
- 0x70020045, // 0010 JMP #0057
- 0x1C1C0D09, // 0011 EQ R7 R6 K9
- 0x781E0005, // 0012 JMPF R7 #0019
- 0x8C1C0706, // 0013 GETMET R7 R3 K6
- 0x88240907, // 0014 GETMBR R9 R4 K7
- 0x8828010A, // 0015 GETMBR R10 R0 K10
- 0x7C1C0600, // 0016 CALL R7 3
- 0x80040E00, // 0017 RET 1 R7
- 0x7002003D, // 0018 JMP #0057
- 0x541E0006, // 0019 LDINT R7 7
- 0x1C1C0C07, // 001A EQ R7 R6 R7
- 0x781E0005, // 001B JMPF R7 #0022
- 0x8C1C0706, // 001C GETMET R7 R3 K6
- 0x88240907, // 001D GETMBR R9 R4 K7
- 0x58280005, // 001E LDCONST R10 K5
- 0x7C1C0600, // 001F CALL R7 3
- 0x80040E00, // 0020 RET 1 R7
- 0x70020034, // 0021 JMP #0057
- 0x541E0007, // 0022 LDINT R7 8
- 0x1C1C0C07, // 0023 EQ R7 R6 R7
- 0x781E0005, // 0024 JMPF R7 #002B
- 0x8C1C0706, // 0025 GETMET R7 R3 K6
- 0x88240907, // 0026 GETMBR R9 R4 K7
- 0x58280005, // 0027 LDCONST R10 K5
- 0x7C1C0600, // 0028 CALL R7 3
- 0x80040E00, // 0029 RET 1 R7
- 0x7002002B, // 002A JMP #0057
- 0x541E000E, // 002B LDINT R7 15
- 0x1C1C0C07, // 002C EQ R7 R6 R7
- 0x781E0005, // 002D JMPF R7 #0034
- 0x8C1C0706, // 002E GETMET R7 R3 K6
- 0x88240907, // 002F GETMBR R9 R4 K7
- 0x58280005, // 0030 LDCONST R10 K5
- 0x7C1C0600, // 0031 CALL R7 3
- 0x80040E00, // 0032 RET 1 R7
- 0x70020022, // 0033 JMP #0057
- 0x541E4000, // 0034 LDINT R7 16385
- 0x1C1C0C07, // 0035 EQ R7 R6 R7
- 0x781E0005, // 0036 JMPF R7 #003D
- 0x8C1C0706, // 0037 GETMET R7 R3 K6
- 0x88240907, // 0038 GETMBR R9 R4 K7
- 0x58280005, // 0039 LDCONST R10 K5
- 0x7C1C0600, // 003A CALL R7 3
- 0x80040E00, // 003B RET 1 R7
- 0x70020019, // 003C JMP #0057
- 0x541E4009, // 003D LDINT R7 16394
- 0x1C1C0C07, // 003E EQ R7 R6 R7
- 0x781E0005, // 003F JMPF R7 #0046
- 0x8C1C0706, // 0040 GETMET R7 R3 K6
- 0x88240907, // 0041 GETMBR R9 R4 K7
- 0x58280009, // 0042 LDCONST R10 K9
- 0x7C1C0600, // 0043 CALL R7 3
- 0x80040E00, // 0044 RET 1 R7
- 0x70020010, // 0045 JMP #0057
- 0x541E000F, // 0046 LDINT R7 16
- 0x1C1C0C07, // 0047 EQ R7 R6 R7
- 0x781E0005, // 0048 JMPF R7 #004F
- 0x8C1C0706, // 0049 GETMET R7 R3 K6
- 0x88240907, // 004A GETMBR R9 R4 K7
- 0x58280005, // 004B LDCONST R10 K5
- 0x7C1C0600, // 004C CALL R7 3
- 0x80040E00, // 004D RET 1 R7
- 0x70020007, // 004E JMP #0057
- 0x541EFFFB, // 004F LDINT R7 65532
- 0x1C1C0C07, // 0050 EQ R7 R6 R7
- 0x781E0004, // 0051 JMPF R7 #0057
- 0x8C1C0706, // 0052 GETMET R7 R3 K6
- 0x8824090B, // 0053 GETMBR R9 R4 K11
- 0x58280009, // 0054 LDCONST R10 K9
- 0x7C1C0600, // 0055 CALL R7 3
- 0x80040E00, // 0056 RET 1 R7
- 0x601C0003, // 0057 GETGBL R7 G3
- 0x5C200000, // 0058 MOVE R8 R0
- 0x7C1C0200, // 0059 CALL R7 1
- 0x8C1C0F0C, // 005A GETMET R7 R7 K12
- 0x5C240200, // 005B MOVE R9 R1
- 0x5C280400, // 005C MOVE R10 R2
- 0x5C2C0600, // 005D MOVE R11 R3
- 0x7C1C0800, // 005E CALL R7 4
- 0x80040E00, // 005F RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Light3
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Light1;
-be_local_class(Matter_Plugin_Light3,
- 2,
- &be_class_Matter_Plugin_Light1,
- be_nested_map(13,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(shadow_hue, -1), be_const_var(0) },
- { be_const_key_weak(shadow_sat, -1), be_const_var(1) },
- { be_const_key_weak(update_virtual, 8), be_const_closure(class_Matter_Plugin_Light3_update_virtual_closure) },
- { be_const_key_weak(update_shadow, -1), be_const_closure(class_Matter_Plugin_Light3_update_shadow_closure) },
- { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Light3_read_attribute_closure) },
- { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Light3_invoke_request_closure) },
- { be_const_key_weak(init, 9), be_const_closure(class_Matter_Plugin_Light3_init_closure) },
- { be_const_key_weak(set_hue_sat, 3), be_const_closure(class_Matter_Plugin_Light3_set_hue_sat_closure) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(light3) },
- { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X203_X20RGB) },
- { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(8,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(8, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(11,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(2),
- be_const_int(3),
- be_const_int(15),
- be_const_int(17),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(5, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(768, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(13,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(7),
- be_const_int(8),
- be_const_int(15),
- be_const_int(16385),
- be_const_int(16394),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- })) ) } )) },
- { be_const_key_weak(UPDATE_COMMANDS, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(4,
- ( (struct bvalue*) &(const bvalue[]) {
- be_nested_str_weak(Power),
- be_nested_str_weak(Bri),
- be_nested_str_weak(Hue),
- be_nested_str_weak(Sat),
- })) ) } )) },
- { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(269, -1), be_const_int(2) },
- })) ) } )) },
- })),
- be_str_weak(Matter_Plugin_Light3)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_OnOff.h
similarity index 73%
rename from lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light0.h
rename to lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_OnOff.h
index 4ede0e4d9..17b0381a3 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Light0.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_OnOff.h
@@ -1,29 +1,29 @@
-/* Solidification of Matter_Plugin_3_Light0.h */
+/* Solidification of Matter_Plugin_3_OnOff.h */
/********************************************************************\
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
-extern const bclass be_class_Matter_Plugin_Light0;
+extern const bclass be_class_Matter_Plugin_OnOff;
/********************************************************************
-** Solidified class: Matter_Plugin_Light0
+** Solidified class: Matter_Plugin_OnOff
********************************************************************/
-extern const bclass be_class_Matter_Plugin_OnOff;
-be_local_class(Matter_Plugin_Light0,
+extern const bclass be_class_Matter_Plugin_Light0;
+be_local_class(Matter_Plugin_OnOff,
0,
- &be_class_Matter_Plugin_OnOff,
+ &be_class_Matter_Plugin_Light0,
be_nested_map(3,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X200_X20On) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(light0) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Relay) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(relay) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(256, -1), be_const_int(2) },
+ { be_const_key_int(266, -1), be_const_int(2) },
})) ) } )) },
})),
- be_str_weak(Matter_Plugin_Light0)
+ be_str_weak(Matter_Plugin_OnOff)
);
/********************************************************************/
/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h
new file mode 100644
index 000000000..150a06f12
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Contact.h
@@ -0,0 +1,271 @@
+/* Solidification of Matter_Plugin_3_Sensor_Contact.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+// compact class 'Matter_Plugin_Sensor_Contact' ktab size: 24, total: 31 (saved 56 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Sensor_Contact[24] = {
+ /* K0 */ be_nested_str_weak(shadow_bool_value),
+ /* K1 */ be_nested_str_weak(_parse_update_virtual),
+ /* K2 */ be_nested_str_weak(Contact),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_nested_str_weak(update_virtual),
+ /* K5 */ be_nested_str_weak(matter),
+ /* K6 */ be_nested_str_weak(TLV),
+ /* K7 */ be_nested_str_weak(cluster),
+ /* K8 */ be_nested_str_weak(attribute),
+ /* K9 */ be_nested_str_weak(set_or_nil),
+ /* K10 */ be_nested_str_weak(BOOL),
+ /* K11 */ be_nested_str_weak(read_attribute),
+ /* K12 */ be_nested_str_weak(webserver),
+ /* K13 */ be_nested_str_weak(web_values_prefix),
+ /* K14 */ be_nested_str_weak(content_send),
+ /* K15 */ be_nested_str_weak(Contact_X25i_X20_X25s),
+ /* K16 */ be_nested_str_weak(tasmota_switch_index),
+ /* K17 */ be_nested_str_weak(web_value_onoff),
+ /* K18 */ be_nested_str_weak(get_name),
+ /* K19 */ be_nested_str_weak(Switch),
+ /* K20 */ be_nested_str_weak(PREFIX),
+ /* K21 */ be_nested_str_weak(html_escape),
+ /* K22 */ be_nested_str_weak(),
+ /* K23 */ be_nested_str_weak(attribute_updated),
+};
+
+
+extern const bclass be_class_Matter_Plugin_Sensor_Contact;
+
+/********************************************************************
+** Solidified function: update_virtual
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Contact_update_virtual, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Contact, /* shared constants */
+ be_str_weak(update_virtual),
+ &be_const_str_solidified,
+ ( &(const binstruction[16]) { /* code */
+ 0x8C080101, // 0000 GETMET R2 R0 K1
+ 0x5C100200, // 0001 MOVE R4 R1
+ 0x58140002, // 0002 LDCONST R5 K2
+ 0x88180100, // 0003 GETMBR R6 R0 K0
+ 0x601C0017, // 0004 GETGBL R7 G23
+ 0x54220044, // 0005 LDINT R8 69
+ 0x58240003, // 0006 LDCONST R9 K3
+ 0x7C080E00, // 0007 CALL R2 7
+ 0x90020002, // 0008 SETMBR R0 K0 R2
+ 0x60080003, // 0009 GETGBL R2 G3
+ 0x5C0C0000, // 000A MOVE R3 R0
+ 0x7C080200, // 000B CALL R2 1
+ 0x8C080504, // 000C GETMET R2 R2 K4
+ 0x5C100200, // 000D MOVE R4 R1
+ 0x7C080400, // 000E CALL R2 2
+ 0x80000000, // 000F RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_attribute
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Contact_read_attribute, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Contact, /* shared constants */
+ be_str_weak(read_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[23]) { /* code */
+ 0xB8120A00, // 0000 GETNGBL R4 K5
+ 0x88100906, // 0001 GETMBR R4 R4 K6
+ 0x88140507, // 0002 GETMBR R5 R2 K7
+ 0x88180508, // 0003 GETMBR R6 R2 K8
+ 0x541E0044, // 0004 LDINT R7 69
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E0006, // 0006 JMPF R7 #000E
+ 0x1C1C0D03, // 0007 EQ R7 R6 K3
+ 0x781E0004, // 0008 JMPF R7 #000E
+ 0x8C1C0709, // 0009 GETMET R7 R3 K9
+ 0x8824090A, // 000A GETMBR R9 R4 K10
+ 0x88280100, // 000B GETMBR R10 R0 K0
+ 0x7C1C0600, // 000C CALL R7 3
+ 0x80040E00, // 000D RET 1 R7
+ 0x601C0003, // 000E GETGBL R7 G3
+ 0x5C200000, // 000F MOVE R8 R0
+ 0x7C1C0200, // 0010 CALL R7 1
+ 0x8C1C0F0B, // 0011 GETMET R7 R7 K11
+ 0x5C240200, // 0012 MOVE R9 R1
+ 0x5C280400, // 0013 MOVE R10 R2
+ 0x5C2C0600, // 0014 MOVE R11 R3
+ 0x7C1C0800, // 0015 CALL R7 4
+ 0x80040E00, // 0016 RET 1 R7
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_values
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Contact_web_values, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Contact, /* shared constants */
+ be_str_weak(web_values),
+ &be_const_str_solidified,
+ ( &(const binstruction[13]) { /* code */
+ 0xA4061800, // 0000 IMPORT R1 K12
+ 0x8C08010D, // 0001 GETMET R2 R0 K13
+ 0x7C080200, // 0002 CALL R2 1
+ 0x8C08030E, // 0003 GETMET R2 R1 K14
+ 0x60100018, // 0004 GETGBL R4 G24
+ 0x5814000F, // 0005 LDCONST R5 K15
+ 0x88180110, // 0006 GETMBR R6 R0 K16
+ 0x8C1C0111, // 0007 GETMET R7 R0 K17
+ 0x88240100, // 0008 GETMBR R9 R0 K0
+ 0x7C1C0400, // 0009 CALL R7 2
+ 0x7C100600, // 000A CALL R4 3
+ 0x7C080400, // 000B CALL R2 2
+ 0x80000000, // 000C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_values_prefix
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Contact_web_values_prefix, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Contact, /* shared constants */
+ be_str_weak(web_values_prefix),
+ &be_const_str_solidified,
+ ( &(const binstruction[22]) { /* code */
+ 0xA4061800, // 0000 IMPORT R1 K12
+ 0x8C080112, // 0001 GETMET R2 R0 K18
+ 0x7C080200, // 0002 CALL R2 1
+ 0x5C0C0400, // 0003 MOVE R3 R2
+ 0x740E0004, // 0004 JMPT R3 #000A
+ 0x600C0008, // 0005 GETGBL R3 G8
+ 0x88100110, // 0006 GETMBR R4 R0 K16
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0x000E2603, // 0008 ADD R3 K19 R3
+ 0x5C080600, // 0009 MOVE R2 R3
+ 0x8C0C030E, // 000A GETMET R3 R1 K14
+ 0x60140018, // 000B GETGBL R5 G24
+ 0x88180114, // 000C GETMBR R6 R0 K20
+ 0x780A0003, // 000D JMPF R2 #0012
+ 0x8C1C0315, // 000E GETMET R7 R1 K21
+ 0x5C240400, // 000F MOVE R9 R2
+ 0x7C1C0400, // 0010 CALL R7 2
+ 0x70020000, // 0011 JMP #0013
+ 0x581C0016, // 0012 LDCONST R7 K22
+ 0x7C140400, // 0013 CALL R5 2
+ 0x7C0C0400, // 0014 CALL R3 2
+ 0x80000000, // 0015 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: value_updated
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Contact_value_updated, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Contact, /* shared constants */
+ be_str_weak(value_updated),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x8C040117, // 0000 GETMET R1 R0 K23
+ 0x540E0044, // 0001 LDINT R3 69
+ 0x58100003, // 0002 LDCONST R4 K3
+ 0x7C040600, // 0003 CALL R1 3
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Sensor_Contact
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Sensor_Boolean;
+be_local_class(Matter_Plugin_Sensor_Contact,
+ 0,
+ &be_class_Matter_Plugin_Sensor_Boolean,
+ be_nested_map(10,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(update_virtual, 6), be_const_closure(class_Matter_Plugin_Sensor_Contact_update_virtual_closure) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Contact) },
+ { be_const_key_weak(read_attribute, 5), be_const_closure(class_Matter_Plugin_Sensor_Contact_read_attribute_closure) },
+ { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(1,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_nested_str_weak(Contact),
+ })) ) } )) },
+ { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(6,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(3, -1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(57, 1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(69, 2), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(29, 0), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
+ })) ) } )) },
+ { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_web_values_closure) },
+ { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(1,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(21, -1), be_const_int(1) },
+ })) ) } )) },
+ { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_web_values_prefix_closure) },
+ { be_const_key_weak(value_updated, -1), be_const_closure(class_Matter_Plugin_Sensor_Contact_value_updated_closure) },
+ { be_const_key_weak(TYPE, 3), be_nested_str_weak(contact) },
+ })),
+ be_str_weak(Matter_Plugin_Sensor_Contact)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h
index 97cae5f0b..48f319950 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Flow.h
@@ -3,27 +3,44 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_Plugin_Sensor_Flow' ktab size: 17, total: 19 (saved 16 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Sensor_Flow[17] = {
+ /* K0 */ be_nested_str_weak(attribute_updated),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str_weak(matter),
+ /* K3 */ be_nested_str_weak(TLV),
+ /* K4 */ be_nested_str_weak(cluster),
+ /* K5 */ be_nested_str_weak(attribute),
+ /* K6 */ be_nested_str_weak(set_or_nil),
+ /* K7 */ be_nested_str_weak(U2),
+ /* K8 */ be_nested_str_weak(shadow_value),
+ /* K9 */ be_const_int(1),
+ /* K10 */ be_nested_str_weak(set),
+ /* K11 */ be_const_int(2),
+ /* K12 */ be_nested_str_weak(read_attribute),
+ /* K13 */ be_nested_str_weak(webserver),
+ /* K14 */ be_nested_str_weak(web_values_prefix),
+ /* K15 */ be_nested_str_weak(content_send),
+ /* K16 */ be_nested_str_weak(_X26_X23x26C5_X3B_X20_X25i_X20m_X26sup3_X3B_X2Fh),
+};
+
extern const bclass be_class_Matter_Plugin_Sensor_Flow;
/********************************************************************
** Solidified function: value_changed
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Flow;
be_local_closure(class_Matter_Plugin_Sensor_Flow_value_changed, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Flow,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(attribute_updated),
- /* K1 */ be_const_int(0),
- }),
+ &be_ktab_class_Matter_Plugin_Sensor_Flow, /* shared constants */
be_str_weak(value_changed),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
@@ -41,85 +58,61 @@ be_local_closure(class_Matter_Plugin_Sensor_Flow_value_changed, /* name */
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Flow;
be_local_closure(class_Matter_Plugin_Sensor_Flow_read_attribute, /* name */
be_nested_proto(
12, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Flow,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(shadow_value),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(U2),
- /* K8 */ be_nested_str_weak(NULL),
- /* K9 */ be_const_int(1),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(read_attribute),
- }),
+ &be_ktab_class_Matter_Plugin_Sensor_Flow, /* shared constants */
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[51]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
+ ( &(const binstruction[41]) { /* code */
+ 0xB8120400, // 0000 GETNGBL R4 K2
+ 0x88100903, // 0001 GETMBR R4 R4 K3
+ 0x88140504, // 0002 GETMBR R5 R2 K4
+ 0x88180505, // 0003 GETMBR R6 R2 K5
0x541E0403, // 0004 LDINT R7 1028
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0022, // 0006 JMPF R7 #002A
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E0011, // 0008 JMPF R7 #001B
- 0x881C0105, // 0009 GETMBR R7 R0 K5
- 0x4C200000, // 000A LDNIL R8
- 0x201C0E08, // 000B NE R7 R7 R8
- 0x781E0007, // 000C JMPF R7 #0015
- 0x8C1C0706, // 000D GETMET R7 R3 K6
- 0x88240907, // 000E GETMBR R9 R4 K7
- 0x60280009, // 000F GETGBL R10 G9
- 0x882C0105, // 0010 GETMBR R11 R0 K5
- 0x7C280200, // 0011 CALL R10 1
- 0x7C1C0600, // 0012 CALL R7 3
- 0x80040E00, // 0013 RET 1 R7
- 0x70020004, // 0014 JMP #001A
- 0x8C1C0706, // 0015 GETMET R7 R3 K6
- 0x88240908, // 0016 GETMBR R9 R4 K8
- 0x4C280000, // 0017 LDNIL R10
- 0x7C1C0600, // 0018 CALL R7 3
- 0x80040E00, // 0019 RET 1 R7
- 0x7002000E, // 001A JMP #002A
- 0x1C1C0D09, // 001B EQ R7 R6 K9
- 0x781E0005, // 001C JMPF R7 #0023
- 0x8C1C0706, // 001D GETMET R7 R3 K6
- 0x88240907, // 001E GETMBR R9 R4 K7
- 0x58280004, // 001F LDCONST R10 K4
- 0x7C1C0600, // 0020 CALL R7 3
- 0x80040E00, // 0021 RET 1 R7
- 0x70020006, // 0022 JMP #002A
- 0x1C1C0D0A, // 0023 EQ R7 R6 K10
- 0x781E0004, // 0024 JMPF R7 #002A
- 0x8C1C0706, // 0025 GETMET R7 R3 K6
- 0x88240907, // 0026 GETMBR R9 R4 K7
- 0x542AFFFD, // 0027 LDINT R10 65534
- 0x7C1C0600, // 0028 CALL R7 3
- 0x80040E00, // 0029 RET 1 R7
- 0x601C0003, // 002A GETGBL R7 G3
- 0x5C200000, // 002B MOVE R8 R0
- 0x7C1C0200, // 002C CALL R7 1
- 0x8C1C0F0B, // 002D GETMET R7 R7 K11
- 0x5C240200, // 002E MOVE R9 R1
- 0x5C280400, // 002F MOVE R10 R2
- 0x5C2C0600, // 0030 MOVE R11 R3
- 0x7C1C0800, // 0031 CALL R7 4
- 0x80040E00, // 0032 RET 1 R7
+ 0x781E0018, // 0006 JMPF R7 #0020
+ 0x1C1C0D01, // 0007 EQ R7 R6 K1
+ 0x781E0007, // 0008 JMPF R7 #0011
+ 0x8C1C0706, // 0009 GETMET R7 R3 K6
+ 0x88240907, // 000A GETMBR R9 R4 K7
+ 0x60280009, // 000B GETGBL R10 G9
+ 0x882C0108, // 000C GETMBR R11 R0 K8
+ 0x7C280200, // 000D CALL R10 1
+ 0x7C1C0600, // 000E CALL R7 3
+ 0x80040E00, // 000F RET 1 R7
+ 0x7002000E, // 0010 JMP #0020
+ 0x1C1C0D09, // 0011 EQ R7 R6 K9
+ 0x781E0005, // 0012 JMPF R7 #0019
+ 0x8C1C070A, // 0013 GETMET R7 R3 K10
+ 0x88240907, // 0014 GETMBR R9 R4 K7
+ 0x58280001, // 0015 LDCONST R10 K1
+ 0x7C1C0600, // 0016 CALL R7 3
+ 0x80040E00, // 0017 RET 1 R7
+ 0x70020006, // 0018 JMP #0020
+ 0x1C1C0D0B, // 0019 EQ R7 R6 K11
+ 0x781E0004, // 001A JMPF R7 #0020
+ 0x8C1C070A, // 001B GETMET R7 R3 K10
+ 0x88240907, // 001C GETMBR R9 R4 K7
+ 0x542AFFFD, // 001D LDINT R10 65534
+ 0x7C1C0600, // 001E CALL R7 3
+ 0x80040E00, // 001F RET 1 R7
+ 0x601C0003, // 0020 GETGBL R7 G3
+ 0x5C200000, // 0021 MOVE R8 R0
+ 0x7C1C0200, // 0022 CALL R7 1
+ 0x8C1C0F0C, // 0023 GETMET R7 R7 K12
+ 0x5C240200, // 0024 MOVE R9 R1
+ 0x5C280400, // 0025 MOVE R10 R2
+ 0x5C2C0600, // 0026 MOVE R11 R3
+ 0x7C1C0800, // 0027 CALL R7 4
+ 0x80040E00, // 0028 RET 1 R7
})
)
);
@@ -129,18 +122,17 @@ be_local_closure(class_Matter_Plugin_Sensor_Flow_read_attribute, /* name */
/********************************************************************
** Solidified function: pre_value
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Flow;
be_local_closure(class_Matter_Plugin_Sensor_Flow_pre_value, /* name */
be_nested_proto(
4, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Flow,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Flow, /* shared constants */
be_str_weak(pre_value),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
@@ -160,6 +152,41 @@ be_local_closure(class_Matter_Plugin_Sensor_Flow_pre_value, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: web_values
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Flow_web_values, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Flow, /* shared constants */
+ be_str_weak(web_values),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0xA4061A00, // 0000 IMPORT R1 K13
+ 0x8C08010E, // 0001 GETMET R2 R0 K14
+ 0x7C080200, // 0002 CALL R2 1
+ 0x8C08030F, // 0003 GETMET R2 R1 K15
+ 0x60100018, // 0004 GETGBL R4 G24
+ 0x58140010, // 0005 LDCONST R5 K16
+ 0x60180009, // 0006 GETGBL R6 G9
+ 0x881C0108, // 0007 GETMBR R7 R0 K8
+ 0x7C180200, // 0008 CALL R6 1
+ 0x7C100400, // 0009 CALL R4 2
+ 0x7C080400, // 000A CALL R2 2
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified class: Matter_Plugin_Sensor_Flow
********************************************************************/
@@ -167,110 +194,35 @@ extern const bclass be_class_Matter_Plugin_Sensor;
be_local_class(Matter_Plugin_Sensor_Flow,
0,
&be_class_Matter_Plugin_Sensor,
- be_nested_map(9,
+ be_nested_map(10,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Flow) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(flow) },
- { be_const_key_weak(TYPES, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(774, -1), be_const_int(1) },
})) ) } )) },
+ { be_const_key_weak(value_changed, 8), be_const_closure(class_Matter_Plugin_Sensor_Flow_value_changed_closure) },
+ { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Sensor_Flow_read_attribute_closure) },
{ be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(1,
( (struct bvalue*) &(const bvalue[]) {
be_nested_str_weak(Flow),
})) ) } )) },
- { be_const_key_weak(value_changed, 7), be_const_closure(class_Matter_Plugin_Sensor_Flow_value_changed_closure) },
- { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Flow) },
- { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Flow_read_attribute_closure) },
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(1028, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(9,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
+ { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(1028, -1), be_const_bytes_instance(000000010002FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(3, 1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(29, 0), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
})) ) } )) },
+ { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Flow) },
{ be_const_key_weak(pre_value, -1), be_const_closure(class_Matter_Plugin_Sensor_Flow_pre_value_closure) },
+ { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Flow_web_values_closure) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Flow) },
+ { be_const_key_weak(TYPE, 3), be_nested_str_weak(flow) },
})),
be_str_weak(Matter_Plugin_Sensor_Flow)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h
index c2d3fc521..3106947ce 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Humidity.h
@@ -3,27 +3,44 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_Plugin_Sensor_Humidity' ktab size: 17, total: 19 (saved 16 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Sensor_Humidity[17] = {
+ /* K0 */ be_nested_str_weak(attribute_updated),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str_weak(matter),
+ /* K3 */ be_nested_str_weak(TLV),
+ /* K4 */ be_nested_str_weak(cluster),
+ /* K5 */ be_nested_str_weak(attribute),
+ /* K6 */ be_nested_str_weak(set_or_nil),
+ /* K7 */ be_nested_str_weak(U2),
+ /* K8 */ be_nested_str_weak(shadow_value),
+ /* K9 */ be_const_int(1),
+ /* K10 */ be_nested_str_weak(set),
+ /* K11 */ be_const_int(2),
+ /* K12 */ be_nested_str_weak(read_attribute),
+ /* K13 */ be_nested_str_weak(webserver),
+ /* K14 */ be_nested_str_weak(web_values_prefix),
+ /* K15 */ be_nested_str_weak(content_send),
+ /* K16 */ be_nested_str_weak(_X26_X23x1F4A7_X3B_X20_X252_X2E0f_X25_X25),
+};
+
extern const bclass be_class_Matter_Plugin_Sensor_Humidity;
/********************************************************************
** Solidified function: value_changed
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Humidity;
be_local_closure(class_Matter_Plugin_Sensor_Humidity_value_changed, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Humidity,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(attribute_updated),
- /* K1 */ be_const_int(0),
- }),
+ &be_ktab_class_Matter_Plugin_Sensor_Humidity, /* shared constants */
be_str_weak(value_changed),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
@@ -41,85 +58,61 @@ be_local_closure(class_Matter_Plugin_Sensor_Humidity_value_changed, /* name */
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Humidity;
be_local_closure(class_Matter_Plugin_Sensor_Humidity_read_attribute, /* name */
be_nested_proto(
12, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Humidity,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(shadow_value),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(U2),
- /* K8 */ be_nested_str_weak(NULL),
- /* K9 */ be_const_int(1),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(read_attribute),
- }),
+ &be_ktab_class_Matter_Plugin_Sensor_Humidity, /* shared constants */
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[51]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
+ ( &(const binstruction[41]) { /* code */
+ 0xB8120400, // 0000 GETNGBL R4 K2
+ 0x88100903, // 0001 GETMBR R4 R4 K3
+ 0x88140504, // 0002 GETMBR R5 R2 K4
+ 0x88180505, // 0003 GETMBR R6 R2 K5
0x541E0404, // 0004 LDINT R7 1029
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0022, // 0006 JMPF R7 #002A
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E0011, // 0008 JMPF R7 #001B
- 0x881C0105, // 0009 GETMBR R7 R0 K5
- 0x4C200000, // 000A LDNIL R8
- 0x201C0E08, // 000B NE R7 R7 R8
- 0x781E0007, // 000C JMPF R7 #0015
- 0x8C1C0706, // 000D GETMET R7 R3 K6
- 0x88240907, // 000E GETMBR R9 R4 K7
- 0x60280009, // 000F GETGBL R10 G9
- 0x882C0105, // 0010 GETMBR R11 R0 K5
- 0x7C280200, // 0011 CALL R10 1
- 0x7C1C0600, // 0012 CALL R7 3
- 0x80040E00, // 0013 RET 1 R7
- 0x70020004, // 0014 JMP #001A
- 0x8C1C0706, // 0015 GETMET R7 R3 K6
- 0x88240908, // 0016 GETMBR R9 R4 K8
- 0x4C280000, // 0017 LDNIL R10
- 0x7C1C0600, // 0018 CALL R7 3
- 0x80040E00, // 0019 RET 1 R7
- 0x7002000E, // 001A JMP #002A
- 0x1C1C0D09, // 001B EQ R7 R6 K9
- 0x781E0005, // 001C JMPF R7 #0023
- 0x8C1C0706, // 001D GETMET R7 R3 K6
- 0x88240907, // 001E GETMBR R9 R4 K7
- 0x542A01F3, // 001F LDINT R10 500
- 0x7C1C0600, // 0020 CALL R7 3
- 0x80040E00, // 0021 RET 1 R7
- 0x70020006, // 0022 JMP #002A
- 0x1C1C0D0A, // 0023 EQ R7 R6 K10
- 0x781E0004, // 0024 JMPF R7 #002A
- 0x8C1C0706, // 0025 GETMET R7 R3 K6
- 0x88240907, // 0026 GETMBR R9 R4 K7
- 0x542A270F, // 0027 LDINT R10 10000
- 0x7C1C0600, // 0028 CALL R7 3
- 0x80040E00, // 0029 RET 1 R7
- 0x601C0003, // 002A GETGBL R7 G3
- 0x5C200000, // 002B MOVE R8 R0
- 0x7C1C0200, // 002C CALL R7 1
- 0x8C1C0F0B, // 002D GETMET R7 R7 K11
- 0x5C240200, // 002E MOVE R9 R1
- 0x5C280400, // 002F MOVE R10 R2
- 0x5C2C0600, // 0030 MOVE R11 R3
- 0x7C1C0800, // 0031 CALL R7 4
- 0x80040E00, // 0032 RET 1 R7
+ 0x781E0018, // 0006 JMPF R7 #0020
+ 0x1C1C0D01, // 0007 EQ R7 R6 K1
+ 0x781E0007, // 0008 JMPF R7 #0011
+ 0x8C1C0706, // 0009 GETMET R7 R3 K6
+ 0x88240907, // 000A GETMBR R9 R4 K7
+ 0x60280009, // 000B GETGBL R10 G9
+ 0x882C0108, // 000C GETMBR R11 R0 K8
+ 0x7C280200, // 000D CALL R10 1
+ 0x7C1C0600, // 000E CALL R7 3
+ 0x80040E00, // 000F RET 1 R7
+ 0x7002000E, // 0010 JMP #0020
+ 0x1C1C0D09, // 0011 EQ R7 R6 K9
+ 0x781E0005, // 0012 JMPF R7 #0019
+ 0x8C1C070A, // 0013 GETMET R7 R3 K10
+ 0x88240907, // 0014 GETMBR R9 R4 K7
+ 0x542A01F3, // 0015 LDINT R10 500
+ 0x7C1C0600, // 0016 CALL R7 3
+ 0x80040E00, // 0017 RET 1 R7
+ 0x70020006, // 0018 JMP #0020
+ 0x1C1C0D0B, // 0019 EQ R7 R6 K11
+ 0x781E0004, // 001A JMPF R7 #0020
+ 0x8C1C070A, // 001B GETMET R7 R3 K10
+ 0x88240907, // 001C GETMBR R9 R4 K7
+ 0x542A270F, // 001D LDINT R10 10000
+ 0x7C1C0600, // 001E CALL R7 3
+ 0x80040E00, // 001F RET 1 R7
+ 0x601C0003, // 0020 GETGBL R7 G3
+ 0x5C200000, // 0021 MOVE R8 R0
+ 0x7C1C0200, // 0022 CALL R7 1
+ 0x8C1C0F0C, // 0023 GETMET R7 R7 K12
+ 0x5C240200, // 0024 MOVE R9 R1
+ 0x5C280400, // 0025 MOVE R10 R2
+ 0x5C2C0600, // 0026 MOVE R11 R3
+ 0x7C1C0800, // 0027 CALL R7 4
+ 0x80040E00, // 0028 RET 1 R7
})
)
);
@@ -129,18 +122,17 @@ be_local_closure(class_Matter_Plugin_Sensor_Humidity_read_attribute, /* name *
/********************************************************************
** Solidified function: pre_value
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Humidity;
be_local_closure(class_Matter_Plugin_Sensor_Humidity_pre_value, /* name */
be_nested_proto(
4, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Humidity,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Humidity, /* shared constants */
be_str_weak(pre_value),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
@@ -160,6 +152,49 @@ be_local_closure(class_Matter_Plugin_Sensor_Humidity_pre_value, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: web_values
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Humidity_web_values, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Humidity, /* shared constants */
+ be_str_weak(web_values),
+ &be_const_str_solidified,
+ ( &(const binstruction[20]) { /* code */
+ 0xA4061A00, // 0000 IMPORT R1 K13
+ 0x8C08010E, // 0001 GETMET R2 R0 K14
+ 0x7C080200, // 0002 CALL R2 1
+ 0x8C08030F, // 0003 GETMET R2 R1 K15
+ 0x60100018, // 0004 GETGBL R4 G24
+ 0x58140010, // 0005 LDCONST R5 K16
+ 0x88180108, // 0006 GETMBR R6 R0 K8
+ 0x4C1C0000, // 0007 LDNIL R7
+ 0x20180C07, // 0008 NE R6 R6 R7
+ 0x781A0005, // 0009 JMPF R6 #0010
+ 0x6018000A, // 000A GETGBL R6 G10
+ 0x881C0108, // 000B GETMBR R7 R0 K8
+ 0x7C180200, // 000C CALL R6 1
+ 0x541E0063, // 000D LDINT R7 100
+ 0x0C180C07, // 000E DIV R6 R6 R7
+ 0x70020000, // 000F JMP #0011
+ 0x4C180000, // 0010 LDNIL R6
+ 0x7C100400, // 0011 CALL R4 2
+ 0x7C080400, // 0012 CALL R2 2
+ 0x80000000, // 0013 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified class: Matter_Plugin_Sensor_Humidity
********************************************************************/
@@ -167,110 +202,35 @@ extern const bclass be_class_Matter_Plugin_Sensor;
be_local_class(Matter_Plugin_Sensor_Humidity,
0,
&be_class_Matter_Plugin_Sensor,
- be_nested_map(9,
+ be_nested_map(10,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Humidity) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(humidity) },
- { be_const_key_weak(TYPES, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(775, -1), be_const_int(2) },
})) ) } )) },
+ { be_const_key_weak(value_changed, 8), be_const_closure(class_Matter_Plugin_Sensor_Humidity_value_changed_closure) },
+ { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Sensor_Humidity_read_attribute_closure) },
{ be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(1,
( (struct bvalue*) &(const bvalue[]) {
be_nested_str_weak(Humidity),
})) ) } )) },
- { be_const_key_weak(value_changed, 7), be_const_closure(class_Matter_Plugin_Sensor_Humidity_value_changed_closure) },
- { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Humidity) },
- { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Humidity_read_attribute_closure) },
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(1029, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(9,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
+ { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(3, -1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(57, 1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(1029, 2), be_const_bytes_instance(000000010002FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(29, 0), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
})) ) } )) },
+ { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Humidity) },
{ be_const_key_weak(pre_value, -1), be_const_closure(class_Matter_Plugin_Sensor_Humidity_pre_value_closure) },
+ { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Humidity_web_values_closure) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Humidity) },
+ { be_const_key_weak(TYPE, 3), be_nested_str_weak(humidity) },
})),
be_str_weak(Matter_Plugin_Sensor_Humidity)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h
index aea99a7cb..e9a45cbd6 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Illuminance.h
@@ -3,27 +3,46 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_Plugin_Sensor_Illuminance' ktab size: 19, total: 23 (saved 32 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Sensor_Illuminance[19] = {
+ /* K0 */ be_nested_str_weak(attribute_updated),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str_weak(matter),
+ /* K3 */ be_nested_str_weak(TLV),
+ /* K4 */ be_nested_str_weak(cluster),
+ /* K5 */ be_nested_str_weak(attribute),
+ /* K6 */ be_nested_str_weak(set_or_nil),
+ /* K7 */ be_nested_str_weak(U2),
+ /* K8 */ be_nested_str_weak(shadow_value),
+ /* K9 */ be_const_int(1),
+ /* K10 */ be_nested_str_weak(set),
+ /* K11 */ be_const_int(2),
+ /* K12 */ be_nested_str_weak(read_attribute),
+ /* K13 */ be_nested_str_weak(math),
+ /* K14 */ be_nested_str_weak(log10),
+ /* K15 */ be_nested_str_weak(webserver),
+ /* K16 */ be_nested_str_weak(web_values_prefix),
+ /* K17 */ be_nested_str_weak(content_send),
+ /* K18 */ be_nested_str_weak(_X26_X23128261_X3B_X20_X25i_X20lux),
+};
+
extern const bclass be_class_Matter_Plugin_Sensor_Illuminance;
/********************************************************************
** Solidified function: value_changed
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Illuminance;
be_local_closure(class_Matter_Plugin_Sensor_Illuminance_value_changed, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Illuminance,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(attribute_updated),
- /* K1 */ be_const_int(0),
- }),
+ &be_ktab_class_Matter_Plugin_Sensor_Illuminance, /* shared constants */
be_str_weak(value_changed),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
@@ -41,85 +60,61 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_value_changed, /* name
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Illuminance;
be_local_closure(class_Matter_Plugin_Sensor_Illuminance_read_attribute, /* name */
be_nested_proto(
12, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Illuminance,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(shadow_value),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(U2),
- /* K8 */ be_nested_str_weak(NULL),
- /* K9 */ be_const_int(1),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(read_attribute),
- }),
+ &be_ktab_class_Matter_Plugin_Sensor_Illuminance, /* shared constants */
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[51]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
+ ( &(const binstruction[41]) { /* code */
+ 0xB8120400, // 0000 GETNGBL R4 K2
+ 0x88100903, // 0001 GETMBR R4 R4 K3
+ 0x88140504, // 0002 GETMBR R5 R2 K4
+ 0x88180505, // 0003 GETMBR R6 R2 K5
0x541E03FF, // 0004 LDINT R7 1024
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0022, // 0006 JMPF R7 #002A
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E0011, // 0008 JMPF R7 #001B
- 0x881C0105, // 0009 GETMBR R7 R0 K5
- 0x4C200000, // 000A LDNIL R8
- 0x201C0E08, // 000B NE R7 R7 R8
- 0x781E0007, // 000C JMPF R7 #0015
- 0x8C1C0706, // 000D GETMET R7 R3 K6
- 0x88240907, // 000E GETMBR R9 R4 K7
- 0x60280009, // 000F GETGBL R10 G9
- 0x882C0105, // 0010 GETMBR R11 R0 K5
- 0x7C280200, // 0011 CALL R10 1
- 0x7C1C0600, // 0012 CALL R7 3
- 0x80040E00, // 0013 RET 1 R7
- 0x70020004, // 0014 JMP #001A
- 0x8C1C0706, // 0015 GETMET R7 R3 K6
- 0x88240908, // 0016 GETMBR R9 R4 K8
- 0x4C280000, // 0017 LDNIL R10
- 0x7C1C0600, // 0018 CALL R7 3
- 0x80040E00, // 0019 RET 1 R7
- 0x7002000E, // 001A JMP #002A
- 0x1C1C0D09, // 001B EQ R7 R6 K9
- 0x781E0005, // 001C JMPF R7 #0023
- 0x8C1C0706, // 001D GETMET R7 R3 K6
- 0x88240907, // 001E GETMBR R9 R4 K7
- 0x58280009, // 001F LDCONST R10 K9
- 0x7C1C0600, // 0020 CALL R7 3
- 0x80040E00, // 0021 RET 1 R7
- 0x70020006, // 0022 JMP #002A
- 0x1C1C0D0A, // 0023 EQ R7 R6 K10
- 0x781E0004, // 0024 JMPF R7 #002A
- 0x8C1C0706, // 0025 GETMET R7 R3 K6
- 0x88240907, // 0026 GETMBR R9 R4 K7
- 0x542AFFFD, // 0027 LDINT R10 65534
- 0x7C1C0600, // 0028 CALL R7 3
- 0x80040E00, // 0029 RET 1 R7
- 0x601C0003, // 002A GETGBL R7 G3
- 0x5C200000, // 002B MOVE R8 R0
- 0x7C1C0200, // 002C CALL R7 1
- 0x8C1C0F0B, // 002D GETMET R7 R7 K11
- 0x5C240200, // 002E MOVE R9 R1
- 0x5C280400, // 002F MOVE R10 R2
- 0x5C2C0600, // 0030 MOVE R11 R3
- 0x7C1C0800, // 0031 CALL R7 4
- 0x80040E00, // 0032 RET 1 R7
+ 0x781E0018, // 0006 JMPF R7 #0020
+ 0x1C1C0D01, // 0007 EQ R7 R6 K1
+ 0x781E0007, // 0008 JMPF R7 #0011
+ 0x8C1C0706, // 0009 GETMET R7 R3 K6
+ 0x88240907, // 000A GETMBR R9 R4 K7
+ 0x60280009, // 000B GETGBL R10 G9
+ 0x882C0108, // 000C GETMBR R11 R0 K8
+ 0x7C280200, // 000D CALL R10 1
+ 0x7C1C0600, // 000E CALL R7 3
+ 0x80040E00, // 000F RET 1 R7
+ 0x7002000E, // 0010 JMP #0020
+ 0x1C1C0D09, // 0011 EQ R7 R6 K9
+ 0x781E0005, // 0012 JMPF R7 #0019
+ 0x8C1C070A, // 0013 GETMET R7 R3 K10
+ 0x88240907, // 0014 GETMBR R9 R4 K7
+ 0x58280009, // 0015 LDCONST R10 K9
+ 0x7C1C0600, // 0016 CALL R7 3
+ 0x80040E00, // 0017 RET 1 R7
+ 0x70020006, // 0018 JMP #0020
+ 0x1C1C0D0B, // 0019 EQ R7 R6 K11
+ 0x781E0004, // 001A JMPF R7 #0020
+ 0x8C1C070A, // 001B GETMET R7 R3 K10
+ 0x88240907, // 001C GETMBR R9 R4 K7
+ 0x542AFFFD, // 001D LDINT R10 65534
+ 0x7C1C0600, // 001E CALL R7 3
+ 0x80040E00, // 001F RET 1 R7
+ 0x601C0003, // 0020 GETGBL R7 G3
+ 0x5C200000, // 0021 MOVE R8 R0
+ 0x7C1C0200, // 0022 CALL R7 1
+ 0x8C1C0F0C, // 0023 GETMET R7 R7 K12
+ 0x5C240200, // 0024 MOVE R9 R1
+ 0x5C280400, // 0025 MOVE R10 R2
+ 0x5C2C0600, // 0026 MOVE R11 R3
+ 0x7C1C0800, // 0027 CALL R7 4
+ 0x80040E00, // 0028 RET 1 R7
})
)
);
@@ -129,23 +124,17 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_read_attribute, /* nam
/********************************************************************
** Solidified function: pre_value
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Illuminance;
be_local_closure(class_Matter_Plugin_Sensor_Illuminance_pre_value, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Illuminance,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(math),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(log10),
- /* K3 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_Plugin_Sensor_Illuminance, /* shared constants */
be_str_weak(pre_value),
&be_const_str_solidified,
( &(const binstruction[17]) { /* code */
@@ -154,13 +143,13 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_pre_value, /* name */
0x780A0001, // 0002 JMPF R2 #0005
0x4C080000, // 0003 LDNIL R2
0x80040400, // 0004 RET 1 R2
- 0xA40A0000, // 0005 IMPORT R2 K0
+ 0xA40A1A00, // 0005 IMPORT R2 K13
0x140C0301, // 0006 LT R3 R1 K1
0x780E0001, // 0007 JMPF R3 #000A
0x80060200, // 0008 RET 1 K1
0x70020005, // 0009 JMP #0010
- 0x8C0C0502, // 000A GETMET R3 R2 K2
- 0x00140303, // 000B ADD R5 R1 K3
+ 0x8C0C050E, // 000A GETMET R3 R2 K14
+ 0x00140309, // 000B ADD R5 R1 K9
0x7C0C0400, // 000C CALL R3 2
0x5412270F, // 000D LDINT R4 10000
0x080C0604, // 000E MUL R3 R3 R4
@@ -172,6 +161,41 @@ be_local_closure(class_Matter_Plugin_Sensor_Illuminance_pre_value, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: web_values
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Illuminance_web_values, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Illuminance, /* shared constants */
+ be_str_weak(web_values),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0xA4061E00, // 0000 IMPORT R1 K15
+ 0x8C080110, // 0001 GETMET R2 R0 K16
+ 0x7C080200, // 0002 CALL R2 1
+ 0x8C080311, // 0003 GETMET R2 R1 K17
+ 0x60100018, // 0004 GETGBL R4 G24
+ 0x58140012, // 0005 LDCONST R5 K18
+ 0x60180009, // 0006 GETGBL R6 G9
+ 0x881C0108, // 0007 GETMBR R7 R0 K8
+ 0x7C180200, // 0008 CALL R6 1
+ 0x7C100400, // 0009 CALL R4 2
+ 0x7C080400, // 000A CALL R2 2
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified class: Matter_Plugin_Sensor_Illuminance
********************************************************************/
@@ -179,110 +203,35 @@ extern const bclass be_class_Matter_Plugin_Sensor;
be_local_class(Matter_Plugin_Sensor_Illuminance,
0,
&be_class_Matter_Plugin_Sensor,
- be_nested_map(9,
+ be_nested_map(10,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Illuminance) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(illuminance) },
- { be_const_key_weak(TYPES, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(262, -1), be_const_int(2) },
})) ) } )) },
+ { be_const_key_weak(value_changed, 8), be_const_closure(class_Matter_Plugin_Sensor_Illuminance_value_changed_closure) },
+ { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Sensor_Illuminance_read_attribute_closure) },
{ be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(1,
( (struct bvalue*) &(const bvalue[]) {
be_nested_str_weak(Illuminance),
})) ) } )) },
- { be_const_key_weak(value_changed, 7), be_const_closure(class_Matter_Plugin_Sensor_Illuminance_value_changed_closure) },
- { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Illuminance) },
- { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Illuminance_read_attribute_closure) },
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(1024, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(9,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
+ { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(3, 2), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(1024, 1), be_const_bytes_instance(000000010002FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(29, 0), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
})) ) } )) },
+ { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Illuminance) },
{ be_const_key_weak(pre_value, -1), be_const_closure(class_Matter_Plugin_Sensor_Illuminance_pre_value_closure) },
+ { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Illuminance_web_values_closure) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Illuminance) },
+ { be_const_key_weak(TYPE, 3), be_nested_str_weak(illuminance) },
})),
be_str_weak(Matter_Plugin_Sensor_Illuminance)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h
new file mode 100644
index 000000000..b1f8fd013
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Occupancy.h
@@ -0,0 +1,291 @@
+/* Solidification of Matter_Plugin_3_Sensor_Occupancy.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+// compact class 'Matter_Plugin_Sensor_Occupancy' ktab size: 28, total: 35 (saved 56 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Sensor_Occupancy[28] = {
+ /* K0 */ be_nested_str_weak(shadow_bool_value),
+ /* K1 */ be_nested_str_weak(_parse_update_virtual),
+ /* K2 */ be_nested_str_weak(Occupancy),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_nested_str_weak(update_virtual),
+ /* K5 */ be_nested_str_weak(matter),
+ /* K6 */ be_nested_str_weak(TLV),
+ /* K7 */ be_nested_str_weak(cluster),
+ /* K8 */ be_nested_str_weak(attribute),
+ /* K9 */ be_nested_str_weak(set_or_nil),
+ /* K10 */ be_nested_str_weak(U1),
+ /* K11 */ be_const_int(1),
+ /* K12 */ be_nested_str_weak(set),
+ /* K13 */ be_const_int(3),
+ /* K14 */ be_const_int(2),
+ /* K15 */ be_nested_str_weak(read_attribute),
+ /* K16 */ be_nested_str_weak(webserver),
+ /* K17 */ be_nested_str_weak(web_values_prefix),
+ /* K18 */ be_nested_str_weak(content_send),
+ /* K19 */ be_nested_str_weak(Occupancy_X25i_X20_X25s),
+ /* K20 */ be_nested_str_weak(web_value_onoff),
+ /* K21 */ be_nested_str_weak(shadow_occupancy),
+ /* K22 */ be_nested_str_weak(get_name),
+ /* K23 */ be_nested_str_weak(Switch),
+ /* K24 */ be_nested_str_weak(PREFIX),
+ /* K25 */ be_nested_str_weak(html_escape),
+ /* K26 */ be_nested_str_weak(),
+ /* K27 */ be_nested_str_weak(attribute_updated),
+};
+
+
+extern const bclass be_class_Matter_Plugin_Sensor_Occupancy;
+
+/********************************************************************
+** Solidified function: update_virtual
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Occupancy_update_virtual, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Occupancy, /* shared constants */
+ be_str_weak(update_virtual),
+ &be_const_str_solidified,
+ ( &(const binstruction[16]) { /* code */
+ 0x8C080101, // 0000 GETMET R2 R0 K1
+ 0x5C100200, // 0001 MOVE R4 R1
+ 0x58140002, // 0002 LDCONST R5 K2
+ 0x88180100, // 0003 GETMBR R6 R0 K0
+ 0x601C0017, // 0004 GETGBL R7 G23
+ 0x54220405, // 0005 LDINT R8 1030
+ 0x58240003, // 0006 LDCONST R9 K3
+ 0x7C080E00, // 0007 CALL R2 7
+ 0x90020002, // 0008 SETMBR R0 K0 R2
+ 0x60080003, // 0009 GETGBL R2 G3
+ 0x5C0C0000, // 000A MOVE R3 R0
+ 0x7C080200, // 000B CALL R2 1
+ 0x8C080504, // 000C GETMET R2 R2 K4
+ 0x5C100200, // 000D MOVE R4 R1
+ 0x7C080400, // 000E CALL R2 2
+ 0x80000000, // 000F RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_attribute
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Occupancy_read_attribute, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Occupancy, /* shared constants */
+ be_str_weak(read_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[39]) { /* code */
+ 0xB8120A00, // 0000 GETNGBL R4 K5
+ 0x88100906, // 0001 GETMBR R4 R4 K6
+ 0x88140507, // 0002 GETMBR R5 R2 K7
+ 0x88180508, // 0003 GETMBR R6 R2 K8
+ 0x541E0405, // 0004 LDINT R7 1030
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E0016, // 0006 JMPF R7 #001E
+ 0x1C1C0D03, // 0007 EQ R7 R6 K3
+ 0x781E0005, // 0008 JMPF R7 #000F
+ 0x8C1C0709, // 0009 GETMET R7 R3 K9
+ 0x8824090A, // 000A GETMBR R9 R4 K10
+ 0x88280100, // 000B GETMBR R10 R0 K0
+ 0x7C1C0600, // 000C CALL R7 3
+ 0x80040E00, // 000D RET 1 R7
+ 0x7002000E, // 000E JMP #001E
+ 0x1C1C0D0B, // 000F EQ R7 R6 K11
+ 0x781E0005, // 0010 JMPF R7 #0017
+ 0x8C1C070C, // 0011 GETMET R7 R3 K12
+ 0x8824090A, // 0012 GETMBR R9 R4 K10
+ 0x5828000D, // 0013 LDCONST R10 K13
+ 0x7C1C0600, // 0014 CALL R7 3
+ 0x80040E00, // 0015 RET 1 R7
+ 0x70020006, // 0016 JMP #001E
+ 0x1C1C0D0E, // 0017 EQ R7 R6 K14
+ 0x781E0004, // 0018 JMPF R7 #001E
+ 0x8C1C070C, // 0019 GETMET R7 R3 K12
+ 0x8824090A, // 001A GETMBR R9 R4 K10
+ 0x58280003, // 001B LDCONST R10 K3
+ 0x7C1C0600, // 001C CALL R7 3
+ 0x80040E00, // 001D RET 1 R7
+ 0x601C0003, // 001E GETGBL R7 G3
+ 0x5C200000, // 001F MOVE R8 R0
+ 0x7C1C0200, // 0020 CALL R7 1
+ 0x8C1C0F0F, // 0021 GETMET R7 R7 K15
+ 0x5C240200, // 0022 MOVE R9 R1
+ 0x5C280400, // 0023 MOVE R10 R2
+ 0x5C2C0600, // 0024 MOVE R11 R3
+ 0x7C1C0800, // 0025 CALL R7 4
+ 0x80040E00, // 0026 RET 1 R7
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_values
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Occupancy_web_values, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Occupancy, /* shared constants */
+ be_str_weak(web_values),
+ &be_const_str_solidified,
+ ( &(const binstruction[13]) { /* code */
+ 0xA4062000, // 0000 IMPORT R1 K16
+ 0x8C080111, // 0001 GETMET R2 R0 K17
+ 0x7C080200, // 0002 CALL R2 1
+ 0x8C080312, // 0003 GETMET R2 R1 K18
+ 0x60100018, // 0004 GETGBL R4 G24
+ 0x58140013, // 0005 LDCONST R5 K19
+ 0x88180100, // 0006 GETMBR R6 R0 K0
+ 0x8C1C0114, // 0007 GETMET R7 R0 K20
+ 0x88240115, // 0008 GETMBR R9 R0 K21
+ 0x7C1C0400, // 0009 CALL R7 2
+ 0x7C100600, // 000A CALL R4 3
+ 0x7C080400, // 000B CALL R2 2
+ 0x80000000, // 000C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_values_prefix
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Occupancy_web_values_prefix, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Occupancy, /* shared constants */
+ be_str_weak(web_values_prefix),
+ &be_const_str_solidified,
+ ( &(const binstruction[22]) { /* code */
+ 0xA4062000, // 0000 IMPORT R1 K16
+ 0x8C080116, // 0001 GETMET R2 R0 K22
+ 0x7C080200, // 0002 CALL R2 1
+ 0x5C0C0400, // 0003 MOVE R3 R2
+ 0x740E0004, // 0004 JMPT R3 #000A
+ 0x600C0008, // 0005 GETGBL R3 G8
+ 0x88100100, // 0006 GETMBR R4 R0 K0
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0x000E2E03, // 0008 ADD R3 K23 R3
+ 0x5C080600, // 0009 MOVE R2 R3
+ 0x8C0C0312, // 000A GETMET R3 R1 K18
+ 0x60140018, // 000B GETGBL R5 G24
+ 0x88180118, // 000C GETMBR R6 R0 K24
+ 0x780A0003, // 000D JMPF R2 #0012
+ 0x8C1C0319, // 000E GETMET R7 R1 K25
+ 0x5C240400, // 000F MOVE R9 R2
+ 0x7C1C0400, // 0010 CALL R7 2
+ 0x70020000, // 0011 JMP #0013
+ 0x581C001A, // 0012 LDCONST R7 K26
+ 0x7C140400, // 0013 CALL R5 2
+ 0x7C0C0400, // 0014 CALL R3 2
+ 0x80000000, // 0015 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: value_updated
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Occupancy_value_updated, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Occupancy, /* shared constants */
+ be_str_weak(value_updated),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x8C04011B, // 0000 GETMET R1 R0 K27
+ 0x540E0405, // 0001 LDINT R3 1030
+ 0x58100003, // 0002 LDCONST R4 K3
+ 0x7C040600, // 0003 CALL R1 3
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Sensor_Occupancy
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Sensor_Boolean;
+be_local_class(Matter_Plugin_Sensor_Occupancy,
+ 0,
+ &be_class_Matter_Plugin_Sensor_Boolean,
+ be_nested_map(10,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(update_virtual, 6), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_update_virtual_closure) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Occupancy) },
+ { be_const_key_weak(read_attribute, 5), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_read_attribute_closure) },
+ { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(1,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_nested_str_weak(Occupancy),
+ })) ) } )) },
+ { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(6,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(3, 2), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(1030, 1), be_const_bytes_instance(000000010002FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(29, 0), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
+ })) ) } )) },
+ { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_web_values_closure) },
+ { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(1,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(263, -1), be_const_int(2) },
+ })) ) } )) },
+ { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_web_values_prefix_closure) },
+ { be_const_key_weak(value_updated, -1), be_const_closure(class_Matter_Plugin_Sensor_Occupancy_value_updated_closure) },
+ { be_const_key_weak(TYPE, 3), be_nested_str_weak(occupancy) },
+ })),
+ be_str_weak(Matter_Plugin_Sensor_Occupancy)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h
new file mode 100644
index 000000000..527cb8b1f
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_OnOff.h
@@ -0,0 +1,164 @@
+/* Solidification of Matter_Plugin_3_Sensor_OnOff.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+// compact class 'Matter_Plugin_Sensor_OnOff' ktab size: 12, total: 14 (saved 16 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Sensor_OnOff[12] = {
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(TLV),
+ /* K2 */ be_nested_str_weak(cluster),
+ /* K3 */ be_nested_str_weak(attribute),
+ /* K4 */ be_nested_str_weak(update_shadow_lazy),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_nested_str_weak(set),
+ /* K7 */ be_nested_str_weak(BOOL),
+ /* K8 */ be_nested_str_weak(shadow_bool_value),
+ /* K9 */ be_nested_str_weak(read_attribute),
+ /* K10 */ be_nested_str_weak(_X2C_X22OnOff_X22_X3A_X25s),
+ /* K11 */ be_nested_str_weak(attribute_updated),
+};
+
+
+extern const bclass be_class_Matter_Plugin_Sensor_OnOff;
+
+/********************************************************************
+** Solidified function: read_attribute
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_OnOff_read_attribute, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_OnOff, /* shared constants */
+ be_str_weak(read_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[25]) { /* code */
+ 0xB8120000, // 0000 GETNGBL R4 K0
+ 0x88100901, // 0001 GETMBR R4 R4 K1
+ 0x88140502, // 0002 GETMBR R5 R2 K2
+ 0x88180503, // 0003 GETMBR R6 R2 K3
+ 0x541E0005, // 0004 LDINT R7 6
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E0008, // 0006 JMPF R7 #0010
+ 0x8C1C0104, // 0007 GETMET R7 R0 K4
+ 0x7C1C0200, // 0008 CALL R7 1
+ 0x1C1C0D05, // 0009 EQ R7 R6 K5
+ 0x781E0004, // 000A JMPF R7 #0010
+ 0x8C1C0706, // 000B GETMET R7 R3 K6
+ 0x88240907, // 000C GETMBR R9 R4 K7
+ 0x88280108, // 000D GETMBR R10 R0 K8
+ 0x7C1C0600, // 000E CALL R7 3
+ 0x80040E00, // 000F RET 1 R7
+ 0x601C0003, // 0010 GETGBL R7 G3
+ 0x5C200000, // 0011 MOVE R8 R0
+ 0x7C1C0200, // 0012 CALL R7 1
+ 0x8C1C0F09, // 0013 GETMET R7 R7 K9
+ 0x5C240200, // 0014 MOVE R9 R1
+ 0x5C280400, // 0015 MOVE R10 R2
+ 0x5C2C0600, // 0016 MOVE R11 R3
+ 0x7C1C0800, // 0017 CALL R7 4
+ 0x80040E00, // 0018 RET 1 R7
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: append_state_json
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_OnOff_append_state_json, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_OnOff, /* shared constants */
+ be_str_weak(append_state_json),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x60040018, // 0000 GETGBL R1 G24
+ 0x5808000A, // 0001 LDCONST R2 K10
+ 0x600C0009, // 0002 GETGBL R3 G9
+ 0x88100108, // 0003 GETMBR R4 R0 K8
+ 0x7C0C0200, // 0004 CALL R3 1
+ 0x7C040400, // 0005 CALL R1 2
+ 0x80040200, // 0006 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: value_updated
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_OnOff_value_updated, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_OnOff, /* shared constants */
+ be_str_weak(value_updated),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x8C04010B, // 0000 GETMET R1 R0 K11
+ 0x540E0005, // 0001 LDINT R3 6
+ 0x58100005, // 0002 LDCONST R4 K5
+ 0x7C040600, // 0003 CALL R1 3
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Sensor_OnOff
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Sensor_Boolean;
+be_local_class(Matter_Plugin_Sensor_OnOff,
+ 0,
+ &be_class_Matter_Plugin_Sensor_Boolean,
+ be_nested_map(7,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(read_attribute, 1), be_const_closure(class_Matter_Plugin_Sensor_OnOff_read_attribute_closure) },
+ { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(6,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(6, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(3, 2), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(29, 1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
+ })) ) } )) },
+ { be_const_key_weak(append_state_json, -1), be_const_closure(class_Matter_Plugin_Sensor_OnOff_append_state_json_closure) },
+ { be_const_key_weak(TYPES, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(1,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(2128, -1), be_const_int(2) },
+ })) ) } )) },
+ { be_const_key_weak(value_updated, -1), be_const_closure(class_Matter_Plugin_Sensor_OnOff_value_updated_closure) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(OnOff_X20Sensor) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(onoff) },
+ })),
+ be_str_weak(Matter_Plugin_Sensor_OnOff)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h
index 245a4b5f1..b5264a407 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Pressure.h
@@ -3,27 +3,44 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_Plugin_Sensor_Pressure' ktab size: 17, total: 19 (saved 16 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Sensor_Pressure[17] = {
+ /* K0 */ be_nested_str_weak(attribute_updated),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str_weak(matter),
+ /* K3 */ be_nested_str_weak(TLV),
+ /* K4 */ be_nested_str_weak(cluster),
+ /* K5 */ be_nested_str_weak(attribute),
+ /* K6 */ be_nested_str_weak(set_or_nil),
+ /* K7 */ be_nested_str_weak(I2),
+ /* K8 */ be_nested_str_weak(shadow_value),
+ /* K9 */ be_const_int(1),
+ /* K10 */ be_nested_str_weak(set),
+ /* K11 */ be_const_int(2),
+ /* K12 */ be_nested_str_weak(read_attribute),
+ /* K13 */ be_nested_str_weak(webserver),
+ /* K14 */ be_nested_str_weak(web_values_prefix),
+ /* K15 */ be_nested_str_weak(content_send),
+ /* K16 */ be_nested_str_weak(_X26_X23x26C5_X3B_X20_X25i_X20hPa),
+};
+
extern const bclass be_class_Matter_Plugin_Sensor_Pressure;
/********************************************************************
** Solidified function: value_changed
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Pressure;
be_local_closure(class_Matter_Plugin_Sensor_Pressure_value_changed, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Pressure,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(attribute_updated),
- /* K1 */ be_const_int(0),
- }),
+ &be_ktab_class_Matter_Plugin_Sensor_Pressure, /* shared constants */
be_str_weak(value_changed),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
@@ -41,85 +58,61 @@ be_local_closure(class_Matter_Plugin_Sensor_Pressure_value_changed, /* name */
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Pressure;
be_local_closure(class_Matter_Plugin_Sensor_Pressure_read_attribute, /* name */
be_nested_proto(
12, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Pressure,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(shadow_value),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(I2),
- /* K8 */ be_nested_str_weak(NULL),
- /* K9 */ be_const_int(1),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(read_attribute),
- }),
+ &be_ktab_class_Matter_Plugin_Sensor_Pressure, /* shared constants */
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[51]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
+ ( &(const binstruction[41]) { /* code */
+ 0xB8120400, // 0000 GETNGBL R4 K2
+ 0x88100903, // 0001 GETMBR R4 R4 K3
+ 0x88140504, // 0002 GETMBR R5 R2 K4
+ 0x88180505, // 0003 GETMBR R6 R2 K5
0x541E0402, // 0004 LDINT R7 1027
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0022, // 0006 JMPF R7 #002A
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E0011, // 0008 JMPF R7 #001B
- 0x881C0105, // 0009 GETMBR R7 R0 K5
- 0x4C200000, // 000A LDNIL R8
- 0x201C0E08, // 000B NE R7 R7 R8
- 0x781E0007, // 000C JMPF R7 #0015
- 0x8C1C0706, // 000D GETMET R7 R3 K6
- 0x88240907, // 000E GETMBR R9 R4 K7
- 0x60280009, // 000F GETGBL R10 G9
- 0x882C0105, // 0010 GETMBR R11 R0 K5
- 0x7C280200, // 0011 CALL R10 1
- 0x7C1C0600, // 0012 CALL R7 3
- 0x80040E00, // 0013 RET 1 R7
- 0x70020004, // 0014 JMP #001A
- 0x8C1C0706, // 0015 GETMET R7 R3 K6
- 0x88240908, // 0016 GETMBR R9 R4 K8
- 0x4C280000, // 0017 LDNIL R10
- 0x7C1C0600, // 0018 CALL R7 3
- 0x80040E00, // 0019 RET 1 R7
- 0x7002000E, // 001A JMP #002A
- 0x1C1C0D09, // 001B EQ R7 R6 K9
- 0x781E0005, // 001C JMPF R7 #0023
- 0x8C1C0706, // 001D GETMET R7 R3 K6
- 0x88240907, // 001E GETMBR R9 R4 K7
- 0x542A01F3, // 001F LDINT R10 500
- 0x7C1C0600, // 0020 CALL R7 3
- 0x80040E00, // 0021 RET 1 R7
- 0x70020006, // 0022 JMP #002A
- 0x1C1C0D0A, // 0023 EQ R7 R6 K10
- 0x781E0004, // 0024 JMPF R7 #002A
- 0x8C1C0706, // 0025 GETMET R7 R3 K6
- 0x88240907, // 0026 GETMBR R9 R4 K7
- 0x542A05DB, // 0027 LDINT R10 1500
- 0x7C1C0600, // 0028 CALL R7 3
- 0x80040E00, // 0029 RET 1 R7
- 0x601C0003, // 002A GETGBL R7 G3
- 0x5C200000, // 002B MOVE R8 R0
- 0x7C1C0200, // 002C CALL R7 1
- 0x8C1C0F0B, // 002D GETMET R7 R7 K11
- 0x5C240200, // 002E MOVE R9 R1
- 0x5C280400, // 002F MOVE R10 R2
- 0x5C2C0600, // 0030 MOVE R11 R3
- 0x7C1C0800, // 0031 CALL R7 4
- 0x80040E00, // 0032 RET 1 R7
+ 0x781E0018, // 0006 JMPF R7 #0020
+ 0x1C1C0D01, // 0007 EQ R7 R6 K1
+ 0x781E0007, // 0008 JMPF R7 #0011
+ 0x8C1C0706, // 0009 GETMET R7 R3 K6
+ 0x88240907, // 000A GETMBR R9 R4 K7
+ 0x60280009, // 000B GETGBL R10 G9
+ 0x882C0108, // 000C GETMBR R11 R0 K8
+ 0x7C280200, // 000D CALL R10 1
+ 0x7C1C0600, // 000E CALL R7 3
+ 0x80040E00, // 000F RET 1 R7
+ 0x7002000E, // 0010 JMP #0020
+ 0x1C1C0D09, // 0011 EQ R7 R6 K9
+ 0x781E0005, // 0012 JMPF R7 #0019
+ 0x8C1C070A, // 0013 GETMET R7 R3 K10
+ 0x88240907, // 0014 GETMBR R9 R4 K7
+ 0x542A01F3, // 0015 LDINT R10 500
+ 0x7C1C0600, // 0016 CALL R7 3
+ 0x80040E00, // 0017 RET 1 R7
+ 0x70020006, // 0018 JMP #0020
+ 0x1C1C0D0B, // 0019 EQ R7 R6 K11
+ 0x781E0004, // 001A JMPF R7 #0020
+ 0x8C1C070A, // 001B GETMET R7 R3 K10
+ 0x88240907, // 001C GETMBR R9 R4 K7
+ 0x542A05DB, // 001D LDINT R10 1500
+ 0x7C1C0600, // 001E CALL R7 3
+ 0x80040E00, // 001F RET 1 R7
+ 0x601C0003, // 0020 GETGBL R7 G3
+ 0x5C200000, // 0021 MOVE R8 R0
+ 0x7C1C0200, // 0022 CALL R7 1
+ 0x8C1C0F0C, // 0023 GETMET R7 R7 K12
+ 0x5C240200, // 0024 MOVE R9 R1
+ 0x5C280400, // 0025 MOVE R10 R2
+ 0x5C2C0600, // 0026 MOVE R11 R3
+ 0x7C1C0800, // 0027 CALL R7 4
+ 0x80040E00, // 0028 RET 1 R7
})
)
);
@@ -129,18 +122,17 @@ be_local_closure(class_Matter_Plugin_Sensor_Pressure_read_attribute, /* name *
/********************************************************************
** Solidified function: pre_value
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Pressure;
be_local_closure(class_Matter_Plugin_Sensor_Pressure_pre_value, /* name */
be_nested_proto(
4, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Pressure,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Pressure, /* shared constants */
be_str_weak(pre_value),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
@@ -159,6 +151,41 @@ be_local_closure(class_Matter_Plugin_Sensor_Pressure_pre_value, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: web_values
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Pressure_web_values, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Pressure, /* shared constants */
+ be_str_weak(web_values),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0xA4061A00, // 0000 IMPORT R1 K13
+ 0x8C08010E, // 0001 GETMET R2 R0 K14
+ 0x7C080200, // 0002 CALL R2 1
+ 0x8C08030F, // 0003 GETMET R2 R1 K15
+ 0x60100018, // 0004 GETGBL R4 G24
+ 0x58140010, // 0005 LDCONST R5 K16
+ 0x60180009, // 0006 GETGBL R6 G9
+ 0x881C0108, // 0007 GETMBR R7 R0 K8
+ 0x7C180200, // 0008 CALL R6 1
+ 0x7C100400, // 0009 CALL R4 2
+ 0x7C080400, // 000A CALL R2 2
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified class: Matter_Plugin_Sensor_Pressure
********************************************************************/
@@ -166,110 +193,35 @@ extern const bclass be_class_Matter_Plugin_Sensor;
be_local_class(Matter_Plugin_Sensor_Pressure,
0,
&be_class_Matter_Plugin_Sensor,
- be_nested_map(9,
+ be_nested_map(10,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Pressure) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(pressure) },
- { be_const_key_weak(TYPES, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(773, -1), be_const_int(2) },
})) ) } )) },
+ { be_const_key_weak(value_changed, 8), be_const_closure(class_Matter_Plugin_Sensor_Pressure_value_changed_closure) },
+ { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Sensor_Pressure_read_attribute_closure) },
{ be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(1,
( (struct bvalue*) &(const bvalue[]) {
be_nested_str_weak(Pressure),
})) ) } )) },
- { be_const_key_weak(value_changed, 7), be_const_closure(class_Matter_Plugin_Sensor_Pressure_value_changed_closure) },
- { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Pressure) },
- { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Pressure_read_attribute_closure) },
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(1027, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(9,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
+ { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(1027, -1), be_const_bytes_instance(000000010002FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(3, 2), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(29, 0), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
})) ) } )) },
+ { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Pressure) },
{ be_const_key_weak(pre_value, -1), be_const_closure(class_Matter_Plugin_Sensor_Pressure_pre_value_closure) },
+ { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Pressure_web_values_closure) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Pressure) },
+ { be_const_key_weak(TYPE, 3), be_nested_str_weak(pressure) },
})),
be_str_weak(Matter_Plugin_Sensor_Pressure)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h
new file mode 100644
index 000000000..23477d3f8
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Rain.h
@@ -0,0 +1,271 @@
+/* Solidification of Matter_Plugin_3_Sensor_Rain.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+// compact class 'Matter_Plugin_Sensor_Rain' ktab size: 24, total: 31 (saved 56 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Sensor_Rain[24] = {
+ /* K0 */ be_nested_str_weak(shadow_bool_value),
+ /* K1 */ be_nested_str_weak(_parse_update_virtual),
+ /* K2 */ be_nested_str_weak(Rain),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_nested_str_weak(update_virtual),
+ /* K5 */ be_nested_str_weak(matter),
+ /* K6 */ be_nested_str_weak(TLV),
+ /* K7 */ be_nested_str_weak(cluster),
+ /* K8 */ be_nested_str_weak(attribute),
+ /* K9 */ be_nested_str_weak(set),
+ /* K10 */ be_nested_str_weak(BOOL),
+ /* K11 */ be_nested_str_weak(read_attribute),
+ /* K12 */ be_nested_str_weak(webserver),
+ /* K13 */ be_nested_str_weak(web_values_prefix),
+ /* K14 */ be_nested_str_weak(content_send),
+ /* K15 */ be_nested_str_weak(Rain_X25i_X20_X25s),
+ /* K16 */ be_nested_str_weak(tasmota_switch_index),
+ /* K17 */ be_nested_str_weak(web_value_onoff),
+ /* K18 */ be_nested_str_weak(get_name),
+ /* K19 */ be_nested_str_weak(Switch),
+ /* K20 */ be_nested_str_weak(PREFIX),
+ /* K21 */ be_nested_str_weak(html_escape),
+ /* K22 */ be_nested_str_weak(),
+ /* K23 */ be_nested_str_weak(attribute_updated),
+};
+
+
+extern const bclass be_class_Matter_Plugin_Sensor_Rain;
+
+/********************************************************************
+** Solidified function: update_virtual
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Rain_update_virtual, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Rain, /* shared constants */
+ be_str_weak(update_virtual),
+ &be_const_str_solidified,
+ ( &(const binstruction[16]) { /* code */
+ 0x8C080101, // 0000 GETMET R2 R0 K1
+ 0x5C100200, // 0001 MOVE R4 R1
+ 0x58140002, // 0002 LDCONST R5 K2
+ 0x88180100, // 0003 GETMBR R6 R0 K0
+ 0x601C0017, // 0004 GETGBL R7 G23
+ 0x54220044, // 0005 LDINT R8 69
+ 0x58240003, // 0006 LDCONST R9 K3
+ 0x7C080E00, // 0007 CALL R2 7
+ 0x90020002, // 0008 SETMBR R0 K0 R2
+ 0x60080003, // 0009 GETGBL R2 G3
+ 0x5C0C0000, // 000A MOVE R3 R0
+ 0x7C080200, // 000B CALL R2 1
+ 0x8C080504, // 000C GETMET R2 R2 K4
+ 0x5C100200, // 000D MOVE R4 R1
+ 0x7C080400, // 000E CALL R2 2
+ 0x80000000, // 000F RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_attribute
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Rain_read_attribute, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Rain, /* shared constants */
+ be_str_weak(read_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[23]) { /* code */
+ 0xB8120A00, // 0000 GETNGBL R4 K5
+ 0x88100906, // 0001 GETMBR R4 R4 K6
+ 0x88140507, // 0002 GETMBR R5 R2 K7
+ 0x88180508, // 0003 GETMBR R6 R2 K8
+ 0x541E0044, // 0004 LDINT R7 69
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E0006, // 0006 JMPF R7 #000E
+ 0x1C1C0D03, // 0007 EQ R7 R6 K3
+ 0x781E0004, // 0008 JMPF R7 #000E
+ 0x8C1C0709, // 0009 GETMET R7 R3 K9
+ 0x8824090A, // 000A GETMBR R9 R4 K10
+ 0x88280100, // 000B GETMBR R10 R0 K0
+ 0x7C1C0600, // 000C CALL R7 3
+ 0x80040E00, // 000D RET 1 R7
+ 0x601C0003, // 000E GETGBL R7 G3
+ 0x5C200000, // 000F MOVE R8 R0
+ 0x7C1C0200, // 0010 CALL R7 1
+ 0x8C1C0F0B, // 0011 GETMET R7 R7 K11
+ 0x5C240200, // 0012 MOVE R9 R1
+ 0x5C280400, // 0013 MOVE R10 R2
+ 0x5C2C0600, // 0014 MOVE R11 R3
+ 0x7C1C0800, // 0015 CALL R7 4
+ 0x80040E00, // 0016 RET 1 R7
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_values
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Rain_web_values, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Rain, /* shared constants */
+ be_str_weak(web_values),
+ &be_const_str_solidified,
+ ( &(const binstruction[13]) { /* code */
+ 0xA4061800, // 0000 IMPORT R1 K12
+ 0x8C08010D, // 0001 GETMET R2 R0 K13
+ 0x7C080200, // 0002 CALL R2 1
+ 0x8C08030E, // 0003 GETMET R2 R1 K14
+ 0x60100018, // 0004 GETGBL R4 G24
+ 0x5814000F, // 0005 LDCONST R5 K15
+ 0x88180110, // 0006 GETMBR R6 R0 K16
+ 0x8C1C0111, // 0007 GETMET R7 R0 K17
+ 0x88240100, // 0008 GETMBR R9 R0 K0
+ 0x7C1C0400, // 0009 CALL R7 2
+ 0x7C100600, // 000A CALL R4 3
+ 0x7C080400, // 000B CALL R2 2
+ 0x80000000, // 000C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_values_prefix
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Rain_web_values_prefix, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Rain, /* shared constants */
+ be_str_weak(web_values_prefix),
+ &be_const_str_solidified,
+ ( &(const binstruction[22]) { /* code */
+ 0xA4061800, // 0000 IMPORT R1 K12
+ 0x8C080112, // 0001 GETMET R2 R0 K18
+ 0x7C080200, // 0002 CALL R2 1
+ 0x5C0C0400, // 0003 MOVE R3 R2
+ 0x740E0004, // 0004 JMPT R3 #000A
+ 0x600C0008, // 0005 GETGBL R3 G8
+ 0x88100110, // 0006 GETMBR R4 R0 K16
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0x000E2603, // 0008 ADD R3 K19 R3
+ 0x5C080600, // 0009 MOVE R2 R3
+ 0x8C0C030E, // 000A GETMET R3 R1 K14
+ 0x60140018, // 000B GETGBL R5 G24
+ 0x88180114, // 000C GETMBR R6 R0 K20
+ 0x780A0003, // 000D JMPF R2 #0012
+ 0x8C1C0315, // 000E GETMET R7 R1 K21
+ 0x5C240400, // 000F MOVE R9 R2
+ 0x7C1C0400, // 0010 CALL R7 2
+ 0x70020000, // 0011 JMP #0013
+ 0x581C0016, // 0012 LDCONST R7 K22
+ 0x7C140400, // 0013 CALL R5 2
+ 0x7C0C0400, // 0014 CALL R3 2
+ 0x80000000, // 0015 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: value_updated
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Rain_value_updated, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Rain, /* shared constants */
+ be_str_weak(value_updated),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x8C040117, // 0000 GETMET R1 R0 K23
+ 0x540E0044, // 0001 LDINT R3 69
+ 0x58100003, // 0002 LDCONST R4 K3
+ 0x7C040600, // 0003 CALL R1 3
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Sensor_Rain
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Sensor_Boolean;
+be_local_class(Matter_Plugin_Sensor_Rain,
+ 0,
+ &be_class_Matter_Plugin_Sensor_Boolean,
+ be_nested_map(10,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(update_virtual, 6), be_const_closure(class_Matter_Plugin_Sensor_Rain_update_virtual_closure) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Rain) },
+ { be_const_key_weak(read_attribute, 5), be_const_closure(class_Matter_Plugin_Sensor_Rain_read_attribute_closure) },
+ { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(1,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_nested_str_weak(Rain),
+ })) ) } )) },
+ { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(6,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(3, -1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(57, 1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(69, 2), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(29, 0), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
+ })) ) } )) },
+ { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Rain_web_values_closure) },
+ { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(1,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(68, -1), be_const_int(1) },
+ })) ) } )) },
+ { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Sensor_Rain_web_values_prefix_closure) },
+ { be_const_key_weak(value_updated, -1), be_const_closure(class_Matter_Plugin_Sensor_Rain_value_updated_closure) },
+ { be_const_key_weak(TYPE, 3), be_nested_str_weak(rain) },
+ })),
+ be_str_weak(Matter_Plugin_Sensor_Rain)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h
index 785235cd0..540d21ab4 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Temp.h
@@ -3,27 +3,50 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_Plugin_Sensor_Temp' ktab size: 23, total: 26 (saved 24 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Sensor_Temp[23] = {
+ /* K0 */ be_nested_str_weak(attribute_updated),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str_weak(matter),
+ /* K3 */ be_nested_str_weak(TLV),
+ /* K4 */ be_nested_str_weak(cluster),
+ /* K5 */ be_nested_str_weak(attribute),
+ /* K6 */ be_nested_str_weak(set_or_nil),
+ /* K7 */ be_nested_str_weak(I2),
+ /* K8 */ be_nested_str_weak(shadow_value),
+ /* K9 */ be_const_int(1),
+ /* K10 */ be_nested_str_weak(set),
+ /* K11 */ be_const_int(2),
+ /* K12 */ be_nested_str_weak(read_attribute),
+ /* K13 */ be_nested_str_weak(BRIDGE),
+ /* K14 */ be_nested_str_weak(temp_unit),
+ /* K15 */ be_nested_str_weak(TEMP_F),
+ /* K16 */ be_const_real_hex(0x3FE66666),
+ /* K17 */ be_nested_str_weak(tasmota),
+ /* K18 */ be_nested_str_weak(get_option),
+ /* K19 */ be_nested_str_weak(webserver),
+ /* K20 */ be_nested_str_weak(web_values_prefix),
+ /* K21 */ be_nested_str_weak(content_send),
+ /* K22 */ be_nested_str_weak(_X26_X23x2600_X3B_X26_X23xFE0F_X3B_X20_X25_X2E1f_X20_XC2_XB0C),
+};
+
extern const bclass be_class_Matter_Plugin_Sensor_Temp;
/********************************************************************
** Solidified function: value_changed
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Temp;
be_local_closure(class_Matter_Plugin_Sensor_Temp_value_changed, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Temp,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(attribute_updated),
- /* K1 */ be_const_int(0),
- }),
+ &be_ktab_class_Matter_Plugin_Sensor_Temp, /* shared constants */
be_str_weak(value_changed),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
@@ -41,83 +64,59 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_value_changed, /* name */
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Temp;
be_local_closure(class_Matter_Plugin_Sensor_Temp_read_attribute, /* name */
be_nested_proto(
12, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Temp,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(shadow_value),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(I2),
- /* K8 */ be_nested_str_weak(NULL),
- /* K9 */ be_const_int(1),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(read_attribute),
- }),
+ &be_ktab_class_Matter_Plugin_Sensor_Temp, /* shared constants */
be_str_weak(read_attribute),
&be_const_str_solidified,
- ( &(const binstruction[49]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
+ ( &(const binstruction[39]) { /* code */
+ 0xB8120400, // 0000 GETNGBL R4 K2
+ 0x88100903, // 0001 GETMBR R4 R4 K3
+ 0x88140504, // 0002 GETMBR R5 R2 K4
+ 0x88180505, // 0003 GETMBR R6 R2 K5
0x541E0401, // 0004 LDINT R7 1026
0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0020, // 0006 JMPF R7 #0028
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E000F, // 0008 JMPF R7 #0019
- 0x881C0105, // 0009 GETMBR R7 R0 K5
- 0x4C200000, // 000A LDNIL R8
- 0x201C0E08, // 000B NE R7 R7 R8
- 0x781E0005, // 000C JMPF R7 #0013
- 0x8C1C0706, // 000D GETMET R7 R3 K6
- 0x88240907, // 000E GETMBR R9 R4 K7
- 0x88280105, // 000F GETMBR R10 R0 K5
- 0x7C1C0600, // 0010 CALL R7 3
- 0x80040E00, // 0011 RET 1 R7
- 0x70020004, // 0012 JMP #0018
- 0x8C1C0706, // 0013 GETMET R7 R3 K6
- 0x88240908, // 0014 GETMBR R9 R4 K8
- 0x4C280000, // 0015 LDNIL R10
- 0x7C1C0600, // 0016 CALL R7 3
- 0x80040E00, // 0017 RET 1 R7
- 0x7002000E, // 0018 JMP #0028
- 0x1C1C0D09, // 0019 EQ R7 R6 K9
- 0x781E0005, // 001A JMPF R7 #0021
- 0x8C1C0706, // 001B GETMET R7 R3 K6
- 0x88240907, // 001C GETMBR R9 R4 K7
- 0x5429EC77, // 001D LDINT R10 -5000
- 0x7C1C0600, // 001E CALL R7 3
- 0x80040E00, // 001F RET 1 R7
- 0x70020006, // 0020 JMP #0028
- 0x1C1C0D0A, // 0021 EQ R7 R6 K10
- 0x781E0004, // 0022 JMPF R7 #0028
- 0x8C1C0706, // 0023 GETMET R7 R3 K6
- 0x88240907, // 0024 GETMBR R9 R4 K7
- 0x542A3A97, // 0025 LDINT R10 15000
- 0x7C1C0600, // 0026 CALL R7 3
- 0x80040E00, // 0027 RET 1 R7
- 0x601C0003, // 0028 GETGBL R7 G3
- 0x5C200000, // 0029 MOVE R8 R0
- 0x7C1C0200, // 002A CALL R7 1
- 0x8C1C0F0B, // 002B GETMET R7 R7 K11
- 0x5C240200, // 002C MOVE R9 R1
- 0x5C280400, // 002D MOVE R10 R2
- 0x5C2C0600, // 002E MOVE R11 R3
- 0x7C1C0800, // 002F CALL R7 4
- 0x80040E00, // 0030 RET 1 R7
+ 0x781E0016, // 0006 JMPF R7 #001E
+ 0x1C1C0D01, // 0007 EQ R7 R6 K1
+ 0x781E0005, // 0008 JMPF R7 #000F
+ 0x8C1C0706, // 0009 GETMET R7 R3 K6
+ 0x88240907, // 000A GETMBR R9 R4 K7
+ 0x88280108, // 000B GETMBR R10 R0 K8
+ 0x7C1C0600, // 000C CALL R7 3
+ 0x80040E00, // 000D RET 1 R7
+ 0x7002000E, // 000E JMP #001E
+ 0x1C1C0D09, // 000F EQ R7 R6 K9
+ 0x781E0005, // 0010 JMPF R7 #0017
+ 0x8C1C070A, // 0011 GETMET R7 R3 K10
+ 0x88240907, // 0012 GETMBR R9 R4 K7
+ 0x5429EC77, // 0013 LDINT R10 -5000
+ 0x7C1C0600, // 0014 CALL R7 3
+ 0x80040E00, // 0015 RET 1 R7
+ 0x70020006, // 0016 JMP #001E
+ 0x1C1C0D0B, // 0017 EQ R7 R6 K11
+ 0x781E0004, // 0018 JMPF R7 #001E
+ 0x8C1C070A, // 0019 GETMET R7 R3 K10
+ 0x88240907, // 001A GETMBR R9 R4 K7
+ 0x542A3A97, // 001B LDINT R10 15000
+ 0x7C1C0600, // 001C CALL R7 3
+ 0x80040E00, // 001D RET 1 R7
+ 0x601C0003, // 001E GETGBL R7 G3
+ 0x5C200000, // 001F MOVE R8 R0
+ 0x7C1C0200, // 0020 CALL R7 1
+ 0x8C1C0F0C, // 0021 GETMET R7 R7 K12
+ 0x5C240200, // 0022 MOVE R9 R1
+ 0x5C280400, // 0023 MOVE R10 R2
+ 0x5C2C0600, // 0024 MOVE R11 R3
+ 0x7C1C0800, // 0025 CALL R7 4
+ 0x80040E00, // 0026 RET 1 R7
})
)
);
@@ -127,35 +126,29 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_read_attribute, /* name */
/********************************************************************
** Solidified function: pre_value
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Sensor_Temp;
be_local_closure(class_Matter_Plugin_Sensor_Temp_pre_value, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Sensor_Temp,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(get_option),
- /* K2 */ be_const_int(1),
- /* K3 */ be_const_real_hex(0x3FE66666),
- }),
+ &be_ktab_class_Matter_Plugin_Sensor_Temp, /* shared constants */
be_str_weak(pre_value),
&be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
- 0xB80A0000, // 0000 GETNGBL R2 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x54120007, // 0002 LDINT R4 8
- 0x7C080400, // 0003 CALL R2 2
- 0x1C080502, // 0004 EQ R2 R2 K2
+ ( &(const binstruction[42]) { /* code */
+ 0x8808010D, // 0000 GETMBR R2 R0 K13
+ 0x780A0012, // 0001 JMPF R2 #0015
+ 0x8808010E, // 0002 GETMBR R2 R0 K14
+ 0x880C010F, // 0003 GETMBR R3 R0 K15
+ 0x1C080403, // 0004 EQ R2 R2 R3
0x780A0003, // 0005 JMPF R2 #000A
0x540A001F, // 0006 LDINT R2 32
0x04080202, // 0007 SUB R2 R1 R2
- 0x0C080503, // 0008 DIV R2 R2 K3
+ 0x0C080510, // 0008 DIV R2 R2 K16
0x5C040400, // 0009 MOVE R1 R2
0x4C080000, // 000A LDNIL R2
0x20080202, // 000B NE R2 R1 R2
@@ -167,6 +160,71 @@ be_local_closure(class_Matter_Plugin_Sensor_Temp_pre_value, /* name */
0x70020000, // 0011 JMP #0013
0x4C080000, // 0012 LDNIL R2
0x80040400, // 0013 RET 1 R2
+ 0x70020013, // 0014 JMP #0029
+ 0xB80A2200, // 0015 GETNGBL R2 K17
+ 0x8C080512, // 0016 GETMET R2 R2 K18
+ 0x54120007, // 0017 LDINT R4 8
+ 0x7C080400, // 0018 CALL R2 2
+ 0x1C080509, // 0019 EQ R2 R2 K9
+ 0x780A0003, // 001A JMPF R2 #001F
+ 0x540A001F, // 001B LDINT R2 32
+ 0x04080202, // 001C SUB R2 R1 R2
+ 0x0C080510, // 001D DIV R2 R2 K16
+ 0x5C040400, // 001E MOVE R1 R2
+ 0x4C080000, // 001F LDNIL R2
+ 0x20080202, // 0020 NE R2 R1 R2
+ 0x780A0004, // 0021 JMPF R2 #0027
+ 0x60080009, // 0022 GETGBL R2 G9
+ 0x540E0063, // 0023 LDINT R3 100
+ 0x080C0203, // 0024 MUL R3 R1 R3
+ 0x7C080200, // 0025 CALL R2 1
+ 0x70020000, // 0026 JMP #0028
+ 0x4C080000, // 0027 LDNIL R2
+ 0x80040400, // 0028 RET 1 R2
+ 0x80000000, // 0029 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_values
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Temp_web_values, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Temp, /* shared constants */
+ be_str_weak(web_values),
+ &be_const_str_solidified,
+ ( &(const binstruction[20]) { /* code */
+ 0xA4062600, // 0000 IMPORT R1 K19
+ 0x8C080114, // 0001 GETMET R2 R0 K20
+ 0x7C080200, // 0002 CALL R2 1
+ 0x8C080315, // 0003 GETMET R2 R1 K21
+ 0x60100018, // 0004 GETGBL R4 G24
+ 0x58140016, // 0005 LDCONST R5 K22
+ 0x88180108, // 0006 GETMBR R6 R0 K8
+ 0x4C1C0000, // 0007 LDNIL R7
+ 0x20180C07, // 0008 NE R6 R6 R7
+ 0x781A0005, // 0009 JMPF R6 #0010
+ 0x6018000A, // 000A GETGBL R6 G10
+ 0x881C0108, // 000B GETMBR R7 R0 K8
+ 0x7C180200, // 000C CALL R6 1
+ 0x541E0063, // 000D LDINT R7 100
+ 0x0C180C07, // 000E DIV R6 R6 R7
+ 0x70020000, // 000F JMP #0011
+ 0x4C180000, // 0010 LDNIL R6
+ 0x7C100400, // 0011 CALL R4 2
+ 0x7C080400, // 0012 CALL R2 2
+ 0x80000000, // 0013 RET 0
})
)
);
@@ -180,110 +238,35 @@ extern const bclass be_class_Matter_Plugin_Sensor;
be_local_class(Matter_Plugin_Sensor_Temp,
0,
&be_class_Matter_Plugin_Sensor,
- be_nested_map(9,
+ be_nested_map(10,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Temperature) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(temperature) },
- { be_const_key_weak(TYPES, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(770, -1), be_const_int(2) },
})) ) } )) },
+ { be_const_key_weak(value_changed, 8), be_const_closure(class_Matter_Plugin_Sensor_Temp_value_changed_closure) },
+ { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Sensor_Temp_read_attribute_closure) },
{ be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(1,
( (struct bvalue*) &(const bvalue[]) {
be_nested_str_weak(Temperature),
})) ) } )) },
- { be_const_key_weak(value_changed, 7), be_const_closure(class_Matter_Plugin_Sensor_Temp_value_changed_closure) },
- { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Temperature) },
- { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Sensor_Temp_read_attribute_closure) },
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(1026, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(9,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
+ { be_const_key_int(1026, -1), be_const_bytes_instance(000000010002FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(3, 2), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(29, 1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
})) ) } )) },
+ { be_const_key_weak(JSON_NAME, -1), be_nested_str_weak(Temperature) },
{ be_const_key_weak(pre_value, -1), be_const_closure(class_Matter_Plugin_Sensor_Temp_pre_value_closure) },
+ { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Temp_web_values_closure) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Temperature) },
+ { be_const_key_weak(TYPE, 3), be_nested_str_weak(temperature) },
})),
be_str_weak(Matter_Plugin_Sensor_Temp)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h
new file mode 100644
index 000000000..842def36c
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_Sensor_Waterleak.h
@@ -0,0 +1,263 @@
+/* Solidification of Matter_Plugin_3_Sensor_Waterleak.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+// compact class 'Matter_Plugin_Sensor_Waterleak' ktab size: 16, total: 20 (saved 32 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Sensor_Waterleak[16] = {
+ /* K0 */ be_nested_str_weak(shadow_bool_value),
+ /* K1 */ be_nested_str_weak(_parse_update_virtual),
+ /* K2 */ be_nested_str_weak(Waterleak),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_nested_str_weak(update_virtual),
+ /* K5 */ be_nested_str_weak(webserver),
+ /* K6 */ be_nested_str_weak(web_values_prefix),
+ /* K7 */ be_nested_str_weak(content_send),
+ /* K8 */ be_nested_str_weak(Waterleak_X25i_X20_X25s),
+ /* K9 */ be_nested_str_weak(tasmota_switch_index),
+ /* K10 */ be_nested_str_weak(web_value_onoff),
+ /* K11 */ be_nested_str_weak(get_name),
+ /* K12 */ be_nested_str_weak(Switch),
+ /* K13 */ be_nested_str_weak(PREFIX),
+ /* K14 */ be_nested_str_weak(html_escape),
+ /* K15 */ be_nested_str_weak(),
+};
+
+
+extern const bclass be_class_Matter_Plugin_Sensor_Waterleak;
+
+/********************************************************************
+** Solidified function: update_virtual
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Waterleak_update_virtual, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Waterleak, /* shared constants */
+ be_str_weak(update_virtual),
+ &be_const_str_solidified,
+ ( &(const binstruction[16]) { /* code */
+ 0x8C080101, // 0000 GETMET R2 R0 K1
+ 0x5C100200, // 0001 MOVE R4 R1
+ 0x58140002, // 0002 LDCONST R5 K2
+ 0x88180100, // 0003 GETMBR R6 R0 K0
+ 0x601C0017, // 0004 GETGBL R7 G23
+ 0x54220044, // 0005 LDINT R8 69
+ 0x58240003, // 0006 LDCONST R9 K3
+ 0x7C080E00, // 0007 CALL R2 7
+ 0x90020002, // 0008 SETMBR R0 K0 R2
+ 0x60080003, // 0009 GETGBL R2 G3
+ 0x5C0C0000, // 000A MOVE R3 R0
+ 0x7C080200, // 000B CALL R2 1
+ 0x8C080504, // 000C GETMET R2 R2 K4
+ 0x5C100200, // 000D MOVE R4 R1
+ 0x7C080400, // 000E CALL R2 2
+ 0x80000000, // 000F RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_attribute
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Waterleak_read_attribute, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Waterleak, /* shared constants */
+ be_str_weak(read_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[23]) { /* code */
+ 0xB8120A00, // 0000 GETNGBL R4 K5
+ 0x88100906, // 0001 GETMBR R4 R4 K6
+ 0x88140507, // 0002 GETMBR R5 R2 K7
+ 0x88180508, // 0003 GETMBR R6 R2 K8
+ 0x541E0044, // 0004 LDINT R7 69
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E0006, // 0006 JMPF R7 #000E
+ 0x1C1C0D03, // 0007 EQ R7 R6 K3
+ 0x781E0004, // 0008 JMPF R7 #000E
+ 0x8C1C0709, // 0009 GETMET R7 R3 K9
+ 0x8824090A, // 000A GETMBR R9 R4 K10
+ 0x88280100, // 000B GETMBR R10 R0 K0
+ 0x7C1C0600, // 000C CALL R7 3
+ 0x80040E00, // 000D RET 1 R7
+ 0x601C0003, // 000E GETGBL R7 G3
+ 0x5C200000, // 000F MOVE R8 R0
+ 0x7C1C0200, // 0010 CALL R7 1
+ 0x8C1C0F0B, // 0011 GETMET R7 R7 K11
+ 0x5C240200, // 0012 MOVE R9 R1
+ 0x5C280400, // 0013 MOVE R10 R2
+ 0x5C2C0600, // 0014 MOVE R11 R3
+ 0x7C1C0800, // 0015 CALL R7 4
+ 0x80040E00, // 0016 RET 1 R7
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_values
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Waterleak_web_values, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Waterleak, /* shared constants */
+ be_str_weak(web_values),
+ &be_const_str_solidified,
+ ( &(const binstruction[13]) { /* code */
+ 0xA4060A00, // 0000 IMPORT R1 K5
+ 0x8C080106, // 0001 GETMET R2 R0 K6
+ 0x7C080200, // 0002 CALL R2 1
+ 0x8C080307, // 0003 GETMET R2 R1 K7
+ 0x60100018, // 0004 GETGBL R4 G24
+ 0x58140008, // 0005 LDCONST R5 K8
+ 0x88180109, // 0006 GETMBR R6 R0 K9
+ 0x8C1C010A, // 0007 GETMET R7 R0 K10
+ 0x88240100, // 0008 GETMBR R9 R0 K0
+ 0x7C1C0400, // 0009 CALL R7 2
+ 0x7C100600, // 000A CALL R4 3
+ 0x7C080400, // 000B CALL R2 2
+ 0x80000000, // 000C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_values_prefix
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Waterleak_web_values_prefix, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Waterleak, /* shared constants */
+ be_str_weak(web_values_prefix),
+ &be_const_str_solidified,
+ ( &(const binstruction[22]) { /* code */
+ 0xA4060A00, // 0000 IMPORT R1 K5
+ 0x8C08010B, // 0001 GETMET R2 R0 K11
+ 0x7C080200, // 0002 CALL R2 1
+ 0x5C0C0400, // 0003 MOVE R3 R2
+ 0x740E0004, // 0004 JMPT R3 #000A
+ 0x600C0008, // 0005 GETGBL R3 G8
+ 0x88100109, // 0006 GETMBR R4 R0 K9
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0x000E1803, // 0008 ADD R3 K12 R3
+ 0x5C080600, // 0009 MOVE R2 R3
+ 0x8C0C0307, // 000A GETMET R3 R1 K7
+ 0x60140018, // 000B GETGBL R5 G24
+ 0x8818010D, // 000C GETMBR R6 R0 K13
+ 0x780A0003, // 000D JMPF R2 #0012
+ 0x8C1C030E, // 000E GETMET R7 R1 K14
+ 0x5C240400, // 000F MOVE R9 R2
+ 0x7C1C0400, // 0010 CALL R7 2
+ 0x70020000, // 0011 JMP #0013
+ 0x581C000F, // 0012 LDCONST R7 K15
+ 0x7C140400, // 0013 CALL R5 2
+ 0x7C0C0400, // 0014 CALL R3 2
+ 0x80000000, // 0015 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: value_updated
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Sensor_Waterleak_value_updated, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Sensor_Waterleak, /* shared constants */
+ be_str_weak(value_updated),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x8C040117, // 0000 GETMET R1 R0 K23
+ 0x540E0044, // 0001 LDINT R3 69
+ 0x58100003, // 0002 LDCONST R4 K3
+ 0x7C040600, // 0003 CALL R1 3
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Sensor_Waterleak
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Sensor_Boolean;
+be_local_class(Matter_Plugin_Sensor_Waterleak,
+ 0,
+ &be_class_Matter_Plugin_Sensor_Boolean,
+ be_nested_map(10,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(update_virtual, 6), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_update_virtual_closure) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Waterleak) },
+ { be_const_key_weak(read_attribute, 5), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_read_attribute_closure) },
+ { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(1,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_nested_str_weak(Waterleak),
+ })) ) } )) },
+ { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(6,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(3, -1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(57, 1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(69, 2), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(29, 0), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
+ })) ) } )) },
+ { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_web_values_closure) },
+ { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(1,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(67, -1), be_const_int(1) },
+ })) ) } )) },
+ { be_const_key_weak(web_values_prefix, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_web_values_prefix_closure) },
+ { be_const_key_weak(value_updated, -1), be_const_closure(class_Matter_Plugin_Sensor_Waterleak_value_updated_closure) },
+ { be_const_key_weak(TYPE, 3), be_nested_str_weak(waterleak) },
+ })),
+ be_str_weak(Matter_Plugin_Sensor_Waterleak)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h
index ecb89c44b..ea430dcbd 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_3_ShutterTilt.h
@@ -3,38 +3,69 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_Plugin_ShutterTilt' ktab size: 42, total: 65 (saved 184 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_ShutterTilt[42] = {
+ /* K0 */ be_nested_str_weak(tasmota),
+ /* K1 */ be_nested_str_weak(cmd),
+ /* K2 */ be_nested_str_weak(Status_X2013),
+ /* K3 */ be_nested_str_weak(contains),
+ /* K4 */ be_nested_str_weak(StatusSHT),
+ /* K5 */ be_nested_str_weak(find),
+ /* K6 */ be_nested_str_weak(SHT),
+ /* K7 */ be_nested_str_weak(tasmota_shutter_index),
+ /* K8 */ be_nested_str_weak(TiltConfig),
+ /* K9 */ be_nested_str_weak(tilt_min),
+ /* K10 */ be_const_int(0),
+ /* K11 */ be_nested_str_weak(tilt_max),
+ /* K12 */ be_const_int(1),
+ /* K13 */ be_nested_str_weak(matter),
+ /* K14 */ be_nested_str_weak(TLV),
+ /* K15 */ be_nested_str_weak(cluster),
+ /* K16 */ be_nested_str_weak(attribute),
+ /* K17 */ be_nested_str_weak(update_shadow_lazy),
+ /* K18 */ be_nested_str_weak(set),
+ /* K19 */ be_nested_str_weak(U1),
+ /* K20 */ be_nested_str_weak(update_tilt_min_max),
+ /* K21 */ be_nested_str_weak(scale_uint),
+ /* K22 */ be_nested_str_weak(shadow_shutter_tilt),
+ /* K23 */ be_nested_str_weak(U2),
+ /* K24 */ be_nested_str_weak(NULL),
+ /* K25 */ be_nested_str_weak(U4),
+ /* K26 */ be_const_int(3),
+ /* K27 */ be_nested_str_weak(read_attribute),
+ /* K28 */ be_nested_str_weak(Shutter),
+ /* K29 */ be_nested_str_weak(Tilt),
+ /* K30 */ be_nested_str_weak(attribute_updated),
+ /* K31 */ be_nested_str_weak(parse_sensors),
+ /* K32 */ be_nested_str_weak(light),
+ /* K33 */ be_nested_str_weak(command),
+ /* K34 */ be_nested_str_weak(findsubval),
+ /* K35 */ be_nested_str_weak(ShutterTilt),
+ /* K36 */ be_nested_str_weak(_X20),
+ /* K37 */ be_nested_str_weak(update_shadow),
+ /* K38 */ be_nested_str_weak(log),
+ /* K39 */ be_nested_str_weak(tilt_X25_X3A),
+ /* K40 */ be_nested_str_weak(tilt_X25_X28no_tilt_support_X29_X3A),
+ /* K41 */ be_nested_str_weak(invoke_request),
+};
+
extern const bclass be_class_Matter_Plugin_ShutterTilt;
/********************************************************************
** Solidified function: update_tilt_min_max
********************************************************************/
-extern const bclass be_class_Matter_Plugin_ShutterTilt;
be_local_closure(class_Matter_Plugin_ShutterTilt_update_tilt_min_max, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_ShutterTilt,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(cmd),
- /* K2 */ be_nested_str_weak(Status_X2013),
- /* K3 */ be_nested_str_weak(contains),
- /* K4 */ be_nested_str_weak(StatusSHT),
- /* K5 */ be_nested_str_weak(find),
- /* K6 */ be_nested_str_weak(SHT),
- /* K7 */ be_nested_str_weak(tasmota_shutter_index),
- /* K8 */ be_nested_str_weak(TiltConfig),
- /* K9 */ be_nested_str_weak(tilt_min),
- /* K10 */ be_const_int(0),
- /* K11 */ be_nested_str_weak(tilt_max),
- /* K12 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_Plugin_ShutterTilt, /* shared constants */
be_str_weak(update_tilt_min_max),
&be_const_str_solidified,
( &(const binstruction[33]) { /* code */
@@ -80,58 +111,36 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_update_tilt_min_max, /* name
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
-extern const bclass be_class_Matter_Plugin_ShutterTilt;
be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */
be_nested_proto(
14, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_ShutterTilt,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[20]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_nested_str_weak(update_shadow_lazy),
- /* K5 */ be_nested_str_weak(set),
- /* K6 */ be_nested_str_weak(U1),
- /* K7 */ be_const_int(1),
- /* K8 */ be_nested_str_weak(update_tilt_min_max),
- /* K9 */ be_nested_str_weak(tilt_min),
- /* K10 */ be_nested_str_weak(tilt_max),
- /* K11 */ be_nested_str_weak(tasmota),
- /* K12 */ be_nested_str_weak(scale_uint),
- /* K13 */ be_nested_str_weak(shadow_shutter_tilt),
- /* K14 */ be_const_int(0),
- /* K15 */ be_nested_str_weak(U2),
- /* K16 */ be_nested_str_weak(NULL),
- /* K17 */ be_nested_str_weak(U4),
- /* K18 */ be_const_int(3),
- /* K19 */ be_nested_str_weak(read_attribute),
- }),
+ &be_ktab_class_Matter_Plugin_ShutterTilt, /* shared constants */
be_str_weak(read_attribute),
&be_const_str_solidified,
( &(const binstruction[113]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
+ 0xB8121A00, // 0000 GETNGBL R4 K13
+ 0x8810090E, // 0001 GETMBR R4 R4 K14
+ 0x8814050F, // 0002 GETMBR R5 R2 K15
+ 0x88180510, // 0003 GETMBR R6 R2 K16
0x541E0101, // 0004 LDINT R7 258
0x1C1C0A07, // 0005 EQ R7 R5 R7
0x781E0060, // 0006 JMPF R7 #0068
- 0x8C1C0104, // 0007 GETMET R7 R0 K4
+ 0x8C1C0111, // 0007 GETMET R7 R0 K17
0x7C1C0200, // 0008 CALL R7 1
0x541E0006, // 0009 LDINT R7 7
0x1C1C0C07, // 000A EQ R7 R6 R7
0x781E0008, // 000B JMPF R7 #0015
- 0x8C1C0705, // 000C GETMET R7 R3 K5
- 0x88240906, // 000D GETMBR R9 R4 K6
+ 0x8C1C0712, // 000C GETMET R7 R3 K18
+ 0x88240913, // 000D GETMBR R9 R4 K19
0x542A0007, // 000E LDINT R10 8
- 0x002A0E0A, // 000F ADD R10 K7 R10
+ 0x002A180A, // 000F ADD R10 K12 R10
0x542E000F, // 0010 LDINT R11 16
0x0028140B, // 0011 ADD R10 R10 R11
0x7C1C0600, // 0012 CALL R7 3
@@ -140,36 +149,36 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */
0x541E000E, // 0015 LDINT R7 15
0x1C1C0C07, // 0016 EQ R7 R6 R7
0x781E0021, // 0017 JMPF R7 #003A
- 0x8C1C0108, // 0018 GETMET R7 R0 K8
+ 0x8C1C0114, // 0018 GETMET R7 R0 K20
0x7C1C0200, // 0019 CALL R7 1
0x881C0109, // 001A GETMBR R7 R0 K9
0x4C200000, // 001B LDNIL R8
0x201C0E08, // 001C NE R7 R7 R8
0x781E0015, // 001D JMPF R7 #0034
- 0x881C010A, // 001E GETMBR R7 R0 K10
+ 0x881C010B, // 001E GETMBR R7 R0 K11
0x4C200000, // 001F LDNIL R8
0x201C0E08, // 0020 NE R7 R7 R8
0x781E0011, // 0021 JMPF R7 #0034
- 0xB81E1600, // 0022 GETNGBL R7 K11
- 0x8C1C0F0C, // 0023 GETMET R7 R7 K12
- 0x8824010D, // 0024 GETMBR R9 R0 K13
+ 0xB81E0000, // 0022 GETNGBL R7 K0
+ 0x8C1C0F15, // 0023 GETMET R7 R7 K21
+ 0x88240116, // 0024 GETMBR R9 R0 K22
0x88280109, // 0025 GETMBR R10 R0 K9
0x0424120A, // 0026 SUB R9 R9 R10
- 0x5828000E, // 0027 LDCONST R10 K14
- 0x882C010A, // 0028 GETMBR R11 R0 K10
+ 0x5828000A, // 0027 LDCONST R10 K10
+ 0x882C010B, // 0028 GETMBR R11 R0 K11
0x88300109, // 0029 GETMBR R12 R0 K9
0x042C160C, // 002A SUB R11 R11 R12
- 0x5830000E, // 002B LDCONST R12 K14
+ 0x5830000A, // 002B LDCONST R12 K10
0x5436270F, // 002C LDINT R13 10000
0x7C1C0C00, // 002D CALL R7 6
- 0x8C200705, // 002E GETMET R8 R3 K5
- 0x8828090F, // 002F GETMBR R10 R4 K15
+ 0x8C200712, // 002E GETMET R8 R3 K18
+ 0x88280917, // 002F GETMBR R10 R4 K23
0x5C2C0E00, // 0030 MOVE R11 R7
0x7C200600, // 0031 CALL R8 3
0x80041000, // 0032 RET 1 R8
0x70020004, // 0033 JMP #0039
- 0x8C1C0705, // 0034 GETMET R7 R3 K5
- 0x88240910, // 0035 GETMBR R9 R4 K16
+ 0x8C1C0712, // 0034 GETMET R7 R3 K18
+ 0x88240918, // 0035 GETMBR R9 R4 K24
0x4C280000, // 0036 LDNIL R10
0x7C1C0600, // 0037 CALL R7 3
0x80040E00, // 0038 RET 1 R7
@@ -181,30 +190,30 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */
0x4C200000, // 003E LDNIL R8
0x201C0E08, // 003F NE R7 R7 R8
0x781E0015, // 0040 JMPF R7 #0057
- 0x881C010A, // 0041 GETMBR R7 R0 K10
+ 0x881C010B, // 0041 GETMBR R7 R0 K11
0x4C200000, // 0042 LDNIL R8
0x201C0E08, // 0043 NE R7 R7 R8
0x781E0011, // 0044 JMPF R7 #0057
- 0xB81E1600, // 0045 GETNGBL R7 K11
- 0x8C1C0F0C, // 0046 GETMET R7 R7 K12
- 0x8824010D, // 0047 GETMBR R9 R0 K13
+ 0xB81E0000, // 0045 GETNGBL R7 K0
+ 0x8C1C0F15, // 0046 GETMET R7 R7 K21
+ 0x88240116, // 0047 GETMBR R9 R0 K22
0x88280109, // 0048 GETMBR R10 R0 K9
0x0424120A, // 0049 SUB R9 R9 R10
- 0x5828000E, // 004A LDCONST R10 K14
- 0x882C010A, // 004B GETMBR R11 R0 K10
+ 0x5828000A, // 004A LDCONST R10 K10
+ 0x882C010B, // 004B GETMBR R11 R0 K11
0x88300109, // 004C GETMBR R12 R0 K9
0x042C160C, // 004D SUB R11 R11 R12
- 0x5830000E, // 004E LDCONST R12 K14
+ 0x5830000A, // 004E LDCONST R12 K10
0x5436270F, // 004F LDINT R13 10000
0x7C1C0C00, // 0050 CALL R7 6
- 0x8C200705, // 0051 GETMET R8 R3 K5
- 0x8828090F, // 0052 GETMBR R10 R4 K15
+ 0x8C200712, // 0051 GETMET R8 R3 K18
+ 0x88280917, // 0052 GETMBR R10 R4 K23
0x5C2C0E00, // 0053 MOVE R11 R7
0x7C200600, // 0054 CALL R8 3
0x80041000, // 0055 RET 1 R8
0x70020004, // 0056 JMP #005C
- 0x8C1C0705, // 0057 GETMET R7 R3 K5
- 0x88240910, // 0058 GETMBR R9 R4 K16
+ 0x8C1C0712, // 0057 GETMET R7 R3 K18
+ 0x88240918, // 0058 GETMBR R9 R4 K24
0x4C280000, // 0059 LDNIL R10
0x7C1C0600, // 005A CALL R7 3
0x80040E00, // 005B RET 1 R7
@@ -212,10 +221,10 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */
0x541EFFFB, // 005D LDINT R7 65532
0x1C1C0C07, // 005E EQ R7 R6 R7
0x781E0007, // 005F JMPF R7 #0068
- 0x8C1C0705, // 0060 GETMET R7 R3 K5
- 0x88240911, // 0061 GETMBR R9 R4 K17
+ 0x8C1C0712, // 0060 GETMET R7 R3 K18
+ 0x88240919, // 0061 GETMBR R9 R4 K25
0x542A0003, // 0062 LDINT R10 4
- 0x002A240A, // 0063 ADD R10 K18 R10
+ 0x002A340A, // 0063 ADD R10 K26 R10
0x542E000F, // 0064 LDINT R11 16
0x0028140B, // 0065 ADD R10 R10 R11
0x7C1C0600, // 0066 CALL R7 3
@@ -223,7 +232,7 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */
0x601C0003, // 0068 GETGBL R7 G3
0x5C200000, // 0069 MOVE R8 R0
0x7C1C0200, // 006A CALL R7 1
- 0x8C1C0F13, // 006B GETMET R7 R7 K19
+ 0x8C1C0F1B, // 006B GETMET R7 R7 K27
0x5C240200, // 006C MOVE R9 R1
0x5C280400, // 006D MOVE R10 R2
0x5C2C0600, // 006E MOVE R11 R3
@@ -238,59 +247,48 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_read_attribute, /* name */
/********************************************************************
** Solidified function: parse_sensors
********************************************************************/
-extern const bclass be_class_Matter_Plugin_ShutterTilt;
be_local_closure(class_Matter_Plugin_ShutterTilt_parse_sensors, /* name */
be_nested_proto(
9, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_ShutterTilt,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(Shutter),
- /* K1 */ be_nested_str_weak(tasmota_shutter_index),
- /* K2 */ be_const_int(1),
- /* K3 */ be_nested_str_weak(contains),
- /* K4 */ be_nested_str_weak(find),
- /* K5 */ be_nested_str_weak(Tilt),
- /* K6 */ be_nested_str_weak(shadow_shutter_tilt),
- /* K7 */ be_nested_str_weak(attribute_updated),
- /* K8 */ be_nested_str_weak(parse_sensors),
- }),
+ &be_ktab_class_Matter_Plugin_ShutterTilt, /* shared constants */
be_str_weak(parse_sensors),
&be_const_str_solidified,
( &(const binstruction[31]) { /* code */
0x60080008, // 0000 GETGBL R2 G8
- 0x880C0101, // 0001 GETMBR R3 R0 K1
- 0x000C0702, // 0002 ADD R3 R3 K2
+ 0x880C0107, // 0001 GETMBR R3 R0 K7
+ 0x000C070C, // 0002 ADD R3 R3 K12
0x7C080200, // 0003 CALL R2 1
- 0x000A0002, // 0004 ADD R2 K0 R2
+ 0x000A3802, // 0004 ADD R2 K28 R2
0x8C0C0303, // 0005 GETMET R3 R1 K3
0x5C140400, // 0006 MOVE R5 R2
0x7C0C0400, // 0007 CALL R3 2
0x780E000E, // 0008 JMPF R3 #0018
0x940C0202, // 0009 GETIDX R3 R1 R2
- 0x8C100704, // 000A GETMET R4 R3 K4
- 0x58180005, // 000B LDCONST R6 K5
+ 0x8C100705, // 000A GETMET R4 R3 K5
+ 0x5818001D, // 000B LDCONST R6 K29
0x7C100400, // 000C CALL R4 2
0x4C140000, // 000D LDNIL R5
0x20140805, // 000E NE R5 R4 R5
0x78160007, // 000F JMPF R5 #0018
- 0x88140106, // 0010 GETMBR R5 R0 K6
+ 0x88140116, // 0010 GETMBR R5 R0 K22
0x20140805, // 0011 NE R5 R4 R5
0x78160003, // 0012 JMPF R5 #0017
- 0x8C140107, // 0013 GETMET R5 R0 K7
+ 0x8C14011E, // 0013 GETMET R5 R0 K30
0x541E0101, // 0014 LDINT R7 258
0x5422000E, // 0015 LDINT R8 15
0x7C140600, // 0016 CALL R5 3
- 0x90020C04, // 0017 SETMBR R0 K6 R4
+ 0x90022C04, // 0017 SETMBR R0 K22 R4
0x600C0003, // 0018 GETGBL R3 G3
0x5C100000, // 0019 MOVE R4 R0
0x7C0C0200, // 001A CALL R3 1
- 0x8C0C0708, // 001B GETMET R3 R3 K8
+ 0x8C0C071F, // 001B GETMET R3 R3 K31
0x5C140200, // 001C MOVE R5 R1
0x7C0C0400, // 001D CALL R3 2
0x80000000, // 001E RET 0
@@ -303,119 +301,94 @@ be_local_closure(class_Matter_Plugin_ShutterTilt_parse_sensors, /* name */
/********************************************************************
** Solidified function: invoke_request
********************************************************************/
-extern const bclass be_class_Matter_Plugin_ShutterTilt;
be_local_closure(class_Matter_Plugin_ShutterTilt_invoke_request, /* name */
be_nested_proto(
18, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_ShutterTilt,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[23]) { /* constants */
- /* K0 */ be_nested_str_weak(light),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(TLV),
- /* K3 */ be_nested_str_weak(cluster),
- /* K4 */ be_nested_str_weak(command),
- /* K5 */ be_nested_str_weak(update_shadow_lazy),
- /* K6 */ be_nested_str_weak(findsubval),
- /* K7 */ be_const_int(0),
- /* K8 */ be_nested_str_weak(update_tilt_min_max),
- /* K9 */ be_nested_str_weak(tilt_min),
- /* K10 */ be_nested_str_weak(tilt_max),
- /* K11 */ be_nested_str_weak(tasmota),
- /* K12 */ be_nested_str_weak(scale_uint),
- /* K13 */ be_nested_str_weak(cmd),
- /* K14 */ be_nested_str_weak(ShutterTilt),
- /* K15 */ be_nested_str_weak(tasmota_shutter_index),
- /* K16 */ be_const_int(1),
- /* K17 */ be_nested_str_weak(_X20),
- /* K18 */ be_nested_str_weak(update_shadow),
- /* K19 */ be_nested_str_weak(log),
- /* K20 */ be_nested_str_weak(tilt_X25_X3A),
- /* K21 */ be_nested_str_weak(tilt_X25_X28no_tilt_support_X29_X3A),
- /* K22 */ be_nested_str_weak(invoke_request),
- }),
+ &be_ktab_class_Matter_Plugin_ShutterTilt, /* shared constants */
be_str_weak(invoke_request),
&be_const_str_solidified,
( &(const binstruction[79]) { /* code */
- 0xA4120000, // 0000 IMPORT R4 K0
- 0xB8160200, // 0001 GETNGBL R5 K1
- 0x88140B02, // 0002 GETMBR R5 R5 K2
- 0x88180703, // 0003 GETMBR R6 R3 K3
- 0x881C0704, // 0004 GETMBR R7 R3 K4
+ 0xA4124000, // 0000 IMPORT R4 K32
+ 0xB8161A00, // 0001 GETNGBL R5 K13
+ 0x88140B0E, // 0002 GETMBR R5 R5 K14
+ 0x8818070F, // 0003 GETMBR R6 R3 K15
+ 0x881C0721, // 0004 GETMBR R7 R3 K33
0x54220101, // 0005 LDINT R8 258
0x1C200C08, // 0006 EQ R8 R6 R8
0x7822003D, // 0007 JMPF R8 #0046
- 0x8C200105, // 0008 GETMET R8 R0 K5
+ 0x8C200111, // 0008 GETMET R8 R0 K17
0x7C200200, // 0009 CALL R8 1
0x54220007, // 000A LDINT R8 8
0x1C200E08, // 000B EQ R8 R7 R8
0x78220038, // 000C JMPF R8 #0046
- 0x8C200506, // 000D GETMET R8 R2 K6
- 0x58280007, // 000E LDCONST R10 K7
+ 0x8C200522, // 000D GETMET R8 R2 K34
+ 0x5828000A, // 000E LDCONST R10 K10
0x7C200400, // 000F CALL R8 2
0x4C240000, // 0010 LDNIL R9
0x20241009, // 0011 NE R9 R8 R9
0x78260030, // 0012 JMPF R9 #0044
- 0x8C240108, // 0013 GETMET R9 R0 K8
+ 0x8C240114, // 0013 GETMET R9 R0 K20
0x7C240200, // 0014 CALL R9 1
0x88240109, // 0015 GETMBR R9 R0 K9
0x4C280000, // 0016 LDNIL R10
0x2024120A, // 0017 NE R9 R9 R10
0x78260025, // 0018 JMPF R9 #003F
- 0x8824010A, // 0019 GETMBR R9 R0 K10
+ 0x8824010B, // 0019 GETMBR R9 R0 K11
0x4C280000, // 001A LDNIL R10
0x2024120A, // 001B NE R9 R9 R10
0x78260021, // 001C JMPF R9 #003F
0x88240109, // 001D GETMBR R9 R0 K9
- 0xB82A1600, // 001E GETNGBL R10 K11
- 0x8C28150C, // 001F GETMET R10 R10 K12
+ 0xB82A0000, // 001E GETNGBL R10 K0
+ 0x8C281515, // 001F GETMET R10 R10 K21
0x5C301000, // 0020 MOVE R12 R8
- 0x58340007, // 0021 LDCONST R13 K7
+ 0x5834000A, // 0021 LDCONST R13 K10
0x543A270F, // 0022 LDINT R14 10000
- 0x583C0007, // 0023 LDCONST R15 K7
- 0x8840010A, // 0024 GETMBR R16 R0 K10
+ 0x583C000A, // 0023 LDCONST R15 K10
+ 0x8840010B, // 0024 GETMBR R16 R0 K11
0x88440109, // 0025 GETMBR R17 R0 K9
0x04402011, // 0026 SUB R16 R16 R17
0x7C280C00, // 0027 CALL R10 6
0x0024120A, // 0028 ADD R9 R9 R10
- 0xB82A1600, // 0029 GETNGBL R10 K11
- 0x8C28150D, // 002A GETMET R10 R10 K13
+ 0xB82A0000, // 0029 GETNGBL R10 K0
+ 0x8C281501, // 002A GETMET R10 R10 K1
0x60300008, // 002B GETGBL R12 G8
- 0x8834010F, // 002C GETMBR R13 R0 K15
- 0x00341B10, // 002D ADD R13 R13 K16
+ 0x88340107, // 002C GETMBR R13 R0 K7
+ 0x00341B0C, // 002D ADD R13 R13 K12
0x7C300200, // 002E CALL R12 1
- 0x00321C0C, // 002F ADD R12 K14 R12
- 0x00301911, // 0030 ADD R12 R12 K17
+ 0x0032460C, // 002F ADD R12 K35 R12
+ 0x00301924, // 0030 ADD R12 R12 K36
0x60340008, // 0031 GETGBL R13 G8
0x5C381200, // 0032 MOVE R14 R9
0x7C340200, // 0033 CALL R13 1
0x0030180D, // 0034 ADD R12 R12 R13
0x50340000, // 0035 LDBOOL R13 0 0
0x7C280600, // 0036 CALL R10 3
- 0x8C280112, // 0037 GETMET R10 R0 K18
+ 0x8C280125, // 0037 GETMET R10 R0 K37
0x7C280200, // 0038 CALL R10 1
0x60280008, // 0039 GETGBL R10 G8
0x5C2C1000, // 003A MOVE R11 R8
0x7C280200, // 003B CALL R10 1
- 0x002A280A, // 003C ADD R10 K20 R10
- 0x900E260A, // 003D SETMBR R3 K19 R10
+ 0x002A4E0A, // 003C ADD R10 K39 R10
+ 0x900E4C0A, // 003D SETMBR R3 K38 R10
0x70020004, // 003E JMP #0044
0x60240008, // 003F GETGBL R9 G8
0x5C281000, // 0040 MOVE R10 R8
0x7C240200, // 0041 CALL R9 1
- 0x00262A09, // 0042 ADD R9 K21 R9
- 0x900E2609, // 0043 SETMBR R3 K19 R9
+ 0x00265009, // 0042 ADD R9 K40 R9
+ 0x900E4C09, // 0043 SETMBR R3 K38 R9
0x50240200, // 0044 LDBOOL R9 1 0
0x80041200, // 0045 RET 1 R9
0x60200003, // 0046 GETGBL R8 G3
0x5C240000, // 0047 MOVE R9 R0
0x7C200200, // 0048 CALL R8 1
- 0x8C201116, // 0049 GETMET R8 R8 K22
+ 0x8C201129, // 0049 GETMET R8 R8 K41
0x5C280200, // 004A MOVE R10 R1
0x5C2C0400, // 004B MOVE R11 R2
0x5C300600, // 004C MOVE R12 R3
@@ -443,96 +416,12 @@ be_local_class(Matter_Plugin_ShutterTilt,
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(6,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(258, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(17,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(5),
- be_const_int(7),
- be_const_int(10),
- be_const_int(11),
- be_const_int(13),
- be_const_int(14),
- be_const_int(23),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- be_const_int(7),
- be_const_int(12),
- be_const_int(15),
- })) ) } )) },
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
+ { be_const_key_int(258, -1), be_const_bytes_instance(000000050007000A000B000C000D000E000F0017FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(5, -1), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(3, 2), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(29, 1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
})) ) } )) },
{ be_const_key_weak(tilt_min, 8), be_const_var(1) },
{ be_const_key_weak(parse_sensors, -1), be_const_closure(class_Matter_Plugin_ShutterTilt_parse_sensors_closure) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Light1.h
deleted file mode 100644
index ce56fbb49..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Light1.h
+++ /dev/null
@@ -1,648 +0,0 @@
-/* Solidification of Matter_Plugin_4_Bridge_Light1.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_Bridge_Light1;
-
-/********************************************************************
-** Solidified function: invoke_request
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light1;
-be_local_closure(class_Matter_Plugin_Bridge_Light1_invoke_request, /* name */
- be_nested_proto(
- 21, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light1,
- 1, /* has constants */
- ( &(const bvalue[20]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(command),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(findsubval),
- /* K6 */ be_nested_str_weak(set_bri),
- /* K7 */ be_nested_str_weak(log),
- /* K8 */ be_nested_str_weak(bri_X3A),
- /* K9 */ be_nested_str_weak(publish_command),
- /* K10 */ be_nested_str_weak(Bri),
- /* K11 */ be_nested_str_weak(tasmota),
- /* K12 */ be_nested_str_weak(scale_uint),
- /* K13 */ be_nested_str_weak(Dimmer),
- /* K14 */ be_const_int(1),
- /* K15 */ be_const_int(2),
- /* K16 */ be_const_int(3),
- /* K17 */ be_nested_str_weak(set_onoff),
- /* K18 */ be_nested_str_weak(Power),
- /* K19 */ be_nested_str_weak(invoke_request),
- }),
- be_str_weak(invoke_request),
- &be_const_str_solidified,
- ( &(const binstruction[132]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140702, // 0002 GETMBR R5 R3 K2
- 0x88180703, // 0003 GETMBR R6 R3 K3
- 0x541E0007, // 0004 LDINT R7 8
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0072, // 0006 JMPF R7 #007A
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E0021, // 0008 JMPF R7 #002B
- 0x8C1C0505, // 0009 GETMET R7 R2 K5
- 0x58240004, // 000A LDCONST R9 K4
- 0x7C1C0400, // 000B CALL R7 2
- 0x8C200106, // 000C GETMET R8 R0 K6
- 0x5C280E00, // 000D MOVE R10 R7
- 0x7C200400, // 000E CALL R8 2
- 0x60200008, // 000F GETGBL R8 G8
- 0x5C240E00, // 0010 MOVE R9 R7
- 0x7C200200, // 0011 CALL R8 1
- 0x00221008, // 0012 ADD R8 K8 R8
- 0x900E0E08, // 0013 SETMBR R3 K7 R8
- 0x8C200109, // 0014 GETMET R8 R0 K9
- 0x5828000A, // 0015 LDCONST R10 K10
- 0xB82E1600, // 0016 GETNGBL R11 K11
- 0x8C2C170C, // 0017 GETMET R11 R11 K12
- 0x5C340E00, // 0018 MOVE R13 R7
- 0x58380004, // 0019 LDCONST R14 K4
- 0x543E00FD, // 001A LDINT R15 254
- 0x58400004, // 001B LDCONST R16 K4
- 0x544600FE, // 001C LDINT R17 255
- 0x7C2C0C00, // 001D CALL R11 6
- 0x5830000D, // 001E LDCONST R12 K13
- 0xB8361600, // 001F GETNGBL R13 K11
- 0x8C341B0C, // 0020 GETMET R13 R13 K12
- 0x5C3C0E00, // 0021 MOVE R15 R7
- 0x58400004, // 0022 LDCONST R16 K4
- 0x544600FD, // 0023 LDINT R17 254
- 0x58480004, // 0024 LDCONST R18 K4
- 0x544E0063, // 0025 LDINT R19 100
- 0x7C340C00, // 0026 CALL R13 6
- 0x7C200A00, // 0027 CALL R8 5
- 0x50200200, // 0028 LDBOOL R8 1 0
- 0x80041000, // 0029 RET 1 R8
- 0x7002004D, // 002A JMP #0079
- 0x1C1C0D0E, // 002B EQ R7 R6 K14
- 0x781E0002, // 002C JMPF R7 #0030
- 0x501C0200, // 002D LDBOOL R7 1 0
- 0x80040E00, // 002E RET 1 R7
- 0x70020048, // 002F JMP #0079
- 0x1C1C0D0F, // 0030 EQ R7 R6 K15
- 0x781E0002, // 0031 JMPF R7 #0035
- 0x501C0200, // 0032 LDBOOL R7 1 0
- 0x80040E00, // 0033 RET 1 R7
- 0x70020043, // 0034 JMP #0079
- 0x1C1C0D10, // 0035 EQ R7 R6 K16
- 0x781E0002, // 0036 JMPF R7 #003A
- 0x501C0200, // 0037 LDBOOL R7 1 0
- 0x80040E00, // 0038 RET 1 R7
- 0x7002003E, // 0039 JMP #0079
- 0x541E0003, // 003A LDINT R7 4
- 0x1C1C0C07, // 003B EQ R7 R6 R7
- 0x781E002A, // 003C JMPF R7 #0068
- 0x8C1C0505, // 003D GETMET R7 R2 K5
- 0x58240004, // 003E LDCONST R9 K4
- 0x7C1C0400, // 003F CALL R7 2
- 0x8C200106, // 0040 GETMET R8 R0 K6
- 0x5C280E00, // 0041 MOVE R10 R7
- 0x7C200400, // 0042 CALL R8 2
- 0x24200F04, // 0043 GT R8 R7 K4
- 0x8C240111, // 0044 GETMET R9 R0 K17
- 0x5C2C1000, // 0045 MOVE R11 R8
- 0x7C240400, // 0046 CALL R9 2
- 0x60240008, // 0047 GETGBL R9 G8
- 0x5C280E00, // 0048 MOVE R10 R7
- 0x7C240200, // 0049 CALL R9 1
- 0x00261009, // 004A ADD R9 K8 R9
- 0x900E0E09, // 004B SETMBR R3 K7 R9
- 0x8C240109, // 004C GETMET R9 R0 K9
- 0x582C000A, // 004D LDCONST R11 K10
- 0xB8321600, // 004E GETNGBL R12 K11
- 0x8C30190C, // 004F GETMET R12 R12 K12
- 0x5C380E00, // 0050 MOVE R14 R7
- 0x583C0004, // 0051 LDCONST R15 K4
- 0x544200FD, // 0052 LDINT R16 254
- 0x58440004, // 0053 LDCONST R17 K4
- 0x544A00FE, // 0054 LDINT R18 255
- 0x7C300C00, // 0055 CALL R12 6
- 0x5834000D, // 0056 LDCONST R13 K13
- 0xB83A1600, // 0057 GETNGBL R14 K11
- 0x8C381D0C, // 0058 GETMET R14 R14 K12
- 0x5C400E00, // 0059 MOVE R16 R7
- 0x58440004, // 005A LDCONST R17 K4
- 0x544A00FD, // 005B LDINT R18 254
- 0x584C0004, // 005C LDCONST R19 K4
- 0x54520063, // 005D LDINT R20 100
- 0x7C380C00, // 005E CALL R14 6
- 0x583C0012, // 005F LDCONST R15 K18
- 0x78220001, // 0060 JMPF R8 #0063
- 0x5840000E, // 0061 LDCONST R16 K14
- 0x70020000, // 0062 JMP #0064
- 0x58400004, // 0063 LDCONST R16 K4
- 0x7C240E00, // 0064 CALL R9 7
- 0x50240200, // 0065 LDBOOL R9 1 0
- 0x80041200, // 0066 RET 1 R9
- 0x70020010, // 0067 JMP #0079
- 0x541E0004, // 0068 LDINT R7 5
- 0x1C1C0C07, // 0069 EQ R7 R6 R7
- 0x781E0002, // 006A JMPF R7 #006E
- 0x501C0200, // 006B LDBOOL R7 1 0
- 0x80040E00, // 006C RET 1 R7
- 0x7002000A, // 006D JMP #0079
- 0x541E0005, // 006E LDINT R7 6
- 0x1C1C0C07, // 006F EQ R7 R6 R7
- 0x781E0002, // 0070 JMPF R7 #0074
- 0x501C0200, // 0071 LDBOOL R7 1 0
- 0x80040E00, // 0072 RET 1 R7
- 0x70020004, // 0073 JMP #0079
- 0x541E0006, // 0074 LDINT R7 7
- 0x1C1C0C07, // 0075 EQ R7 R6 R7
- 0x781E0001, // 0076 JMPF R7 #0079
- 0x501C0200, // 0077 LDBOOL R7 1 0
- 0x80040E00, // 0078 RET 1 R7
- 0x70020008, // 0079 JMP #0083
- 0x601C0003, // 007A GETGBL R7 G3
- 0x5C200000, // 007B MOVE R8 R0
- 0x7C1C0200, // 007C CALL R7 1
- 0x8C1C0F13, // 007D GETMET R7 R7 K19
- 0x5C240200, // 007E MOVE R9 R1
- 0x5C280400, // 007F MOVE R10 R2
- 0x5C2C0600, // 0080 MOVE R11 R3
- 0x7C1C0800, // 0081 CALL R7 4
- 0x80040E00, // 0082 RET 1 R7
- 0x80000000, // 0083 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light1;
-be_local_closure(class_Matter_Plugin_Bridge_Light1_read_attribute, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light1,
- 1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_nested_str_weak(update_shadow_lazy),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(shadow_bri),
- /* K7 */ be_nested_str_weak(set),
- /* K8 */ be_nested_str_weak(U1),
- /* K9 */ be_nested_str_weak(NULL),
- /* K10 */ be_const_int(2),
- /* K11 */ be_const_int(3),
- /* K12 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[79]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E0007, // 0004 LDINT R7 8
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E003E, // 0006 JMPF R7 #0046
- 0x8C1C0104, // 0007 GETMET R7 R0 K4
- 0x7C1C0200, // 0008 CALL R7 1
- 0x1C1C0D05, // 0009 EQ R7 R6 K5
- 0x781E000F, // 000A JMPF R7 #001B
- 0x881C0106, // 000B GETMBR R7 R0 K6
- 0x4C200000, // 000C LDNIL R8
- 0x201C0E08, // 000D NE R7 R7 R8
- 0x781E0005, // 000E JMPF R7 #0015
- 0x8C1C0707, // 000F GETMET R7 R3 K7
- 0x88240908, // 0010 GETMBR R9 R4 K8
- 0x88280106, // 0011 GETMBR R10 R0 K6
- 0x7C1C0600, // 0012 CALL R7 3
- 0x80040E00, // 0013 RET 1 R7
- 0x70020004, // 0014 JMP #001A
- 0x8C1C0707, // 0015 GETMET R7 R3 K7
- 0x88240909, // 0016 GETMBR R9 R4 K9
- 0x4C280000, // 0017 LDNIL R10
- 0x7C1C0600, // 0018 CALL R7 3
- 0x80040E00, // 0019 RET 1 R7
- 0x7002002A, // 001A JMP #0046
- 0x1C1C0D0A, // 001B EQ R7 R6 K10
- 0x781E0005, // 001C JMPF R7 #0023
- 0x8C1C0707, // 001D GETMET R7 R3 K7
- 0x88240908, // 001E GETMBR R9 R4 K8
- 0x58280005, // 001F LDCONST R10 K5
- 0x7C1C0600, // 0020 CALL R7 3
- 0x80040E00, // 0021 RET 1 R7
- 0x70020022, // 0022 JMP #0046
- 0x1C1C0D0B, // 0023 EQ R7 R6 K11
- 0x781E0005, // 0024 JMPF R7 #002B
- 0x8C1C0707, // 0025 GETMET R7 R3 K7
- 0x88240908, // 0026 GETMBR R9 R4 K8
- 0x542A00FD, // 0027 LDINT R10 254
- 0x7C1C0600, // 0028 CALL R7 3
- 0x80040E00, // 0029 RET 1 R7
- 0x7002001A, // 002A JMP #0046
- 0x541E000E, // 002B LDINT R7 15
- 0x1C1C0C07, // 002C EQ R7 R6 R7
- 0x781E0005, // 002D JMPF R7 #0034
- 0x8C1C0707, // 002E GETMET R7 R3 K7
- 0x88240908, // 002F GETMBR R9 R4 K8
- 0x58280005, // 0030 LDCONST R10 K5
- 0x7C1C0600, // 0031 CALL R7 3
- 0x80040E00, // 0032 RET 1 R7
- 0x70020011, // 0033 JMP #0046
- 0x541E0010, // 0034 LDINT R7 17
- 0x1C1C0C07, // 0035 EQ R7 R6 R7
- 0x781E000E, // 0036 JMPF R7 #0046
- 0x881C0106, // 0037 GETMBR R7 R0 K6
- 0x4C200000, // 0038 LDNIL R8
- 0x201C0E08, // 0039 NE R7 R7 R8
- 0x781E0005, // 003A JMPF R7 #0041
- 0x8C1C0707, // 003B GETMET R7 R3 K7
- 0x88240908, // 003C GETMBR R9 R4 K8
- 0x88280106, // 003D GETMBR R10 R0 K6
- 0x7C1C0600, // 003E CALL R7 3
- 0x80040E00, // 003F RET 1 R7
- 0x70020004, // 0040 JMP #0046
- 0x8C1C0707, // 0041 GETMET R7 R3 K7
- 0x88240909, // 0042 GETMBR R9 R4 K9
- 0x4C280000, // 0043 LDNIL R10
- 0x7C1C0600, // 0044 CALL R7 3
- 0x80040E00, // 0045 RET 1 R7
- 0x601C0003, // 0046 GETGBL R7 G3
- 0x5C200000, // 0047 MOVE R8 R0
- 0x7C1C0200, // 0048 CALL R7 1
- 0x8C1C0F0C, // 0049 GETMET R7 R7 K12
- 0x5C240200, // 004A MOVE R9 R1
- 0x5C280400, // 004B MOVE R10 R2
- 0x5C2C0600, // 004C MOVE R11 R3
- 0x7C1C0800, // 004D CALL R7 4
- 0x80040E00, // 004E RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_values
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light1;
-be_local_closure(class_Matter_Plugin_Bridge_Light1_web_values, /* name */
- be_nested_proto(
- 9, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light1,
- 1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(web_values_prefix),
- /* K2 */ be_nested_str_weak(content_send),
- /* K3 */ be_nested_str_weak(_X25s_X20_X25s),
- /* K4 */ be_nested_str_weak(web_value_onoff),
- /* K5 */ be_nested_str_weak(shadow_onoff),
- /* K6 */ be_nested_str_weak(web_value_dimmer),
- }),
- be_str_weak(web_values),
- &be_const_str_solidified,
- ( &(const binstruction[14]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x8C080302, // 0003 GETMET R2 R1 K2
- 0x60100018, // 0004 GETGBL R4 G24
- 0x58140003, // 0005 LDCONST R5 K3
- 0x8C180104, // 0006 GETMET R6 R0 K4
- 0x88200105, // 0007 GETMBR R8 R0 K5
- 0x7C180400, // 0008 CALL R6 2
- 0x8C1C0106, // 0009 GETMET R7 R0 K6
- 0x7C1C0200, // 000A CALL R7 1
- 0x7C100600, // 000B CALL R4 3
- 0x7C080400, // 000C CALL R2 2
- 0x80000000, // 000D RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_bri
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light1;
-be_local_closure(class_Matter_Plugin_Bridge_Light1_set_bri, /* name */
- be_nested_proto(
- 9, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light1,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(scale_uint),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(call_remote_sync),
- /* K4 */ be_nested_str_weak(Dimmer),
- /* K5 */ be_nested_str_weak(parse_update),
- }),
- be_str_weak(set_bri),
- &be_const_str_solidified,
- ( &(const binstruction[22]) { /* code */
- 0xB80A0000, // 0000 GETNGBL R2 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100200, // 0002 MOVE R4 R1
- 0x58140002, // 0003 LDCONST R5 K2
- 0x541A00FD, // 0004 LDINT R6 254
- 0x581C0002, // 0005 LDCONST R7 K2
- 0x54220063, // 0006 LDINT R8 100
- 0x7C080C00, // 0007 CALL R2 6
- 0x8C0C0103, // 0008 GETMET R3 R0 K3
- 0x58140004, // 0009 LDCONST R5 K4
- 0x60180008, // 000A GETGBL R6 G8
- 0x5C1C0400, // 000B MOVE R7 R2
- 0x7C180200, // 000C CALL R6 1
- 0x7C0C0600, // 000D CALL R3 3
- 0x4C100000, // 000E LDNIL R4
- 0x20100604, // 000F NE R4 R3 R4
- 0x78120003, // 0010 JMPF R4 #0015
- 0x8C100105, // 0011 GETMET R4 R0 K5
- 0x5C180600, // 0012 MOVE R6 R3
- 0x541E000A, // 0013 LDINT R7 11
- 0x7C100600, // 0014 CALL R4 3
- 0x80000000, // 0015 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_update
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light1;
-be_local_closure(class_Matter_Plugin_Bridge_Light1_parse_update, /* name */
- be_nested_proto(
- 11, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light1,
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(parse_update),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(Dimmer),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(scale_uint),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(shadow_bri),
- /* K7 */ be_nested_str_weak(attribute_updated),
- }),
- be_str_weak(parse_update),
- &be_const_str_solidified,
- ( &(const binstruction[35]) { /* code */
- 0x600C0003, // 0000 GETGBL R3 G3
- 0x5C100000, // 0001 MOVE R4 R0
- 0x7C0C0200, // 0002 CALL R3 1
- 0x8C0C0700, // 0003 GETMET R3 R3 K0
- 0x5C140200, // 0004 MOVE R5 R1
- 0x5C180400, // 0005 MOVE R6 R2
- 0x7C0C0600, // 0006 CALL R3 3
- 0x540E000A, // 0007 LDINT R3 11
- 0x1C0C0403, // 0008 EQ R3 R2 R3
- 0x780E0017, // 0009 JMPF R3 #0022
- 0x600C0009, // 000A GETGBL R3 G9
- 0x8C100301, // 000B GETMET R4 R1 K1
- 0x58180002, // 000C LDCONST R6 K2
- 0x7C100400, // 000D CALL R4 2
- 0x7C0C0200, // 000E CALL R3 1
- 0x4C100000, // 000F LDNIL R4
- 0x20100604, // 0010 NE R4 R3 R4
- 0x7812000F, // 0011 JMPF R4 #0022
- 0xB8120600, // 0012 GETNGBL R4 K3
- 0x8C100904, // 0013 GETMET R4 R4 K4
- 0x5C180600, // 0014 MOVE R6 R3
- 0x581C0005, // 0015 LDCONST R7 K5
- 0x54220063, // 0016 LDINT R8 100
- 0x58240005, // 0017 LDCONST R9 K5
- 0x542A00FD, // 0018 LDINT R10 254
- 0x7C100C00, // 0019 CALL R4 6
- 0x88140106, // 001A GETMBR R5 R0 K6
- 0x20140805, // 001B NE R5 R4 R5
- 0x78160004, // 001C JMPF R5 #0022
- 0x8C140107, // 001D GETMET R5 R0 K7
- 0x541E0007, // 001E LDINT R7 8
- 0x58200005, // 001F LDCONST R8 K5
- 0x7C140600, // 0020 CALL R5 3
- 0x90020C04, // 0021 SETMBR R0 K6 R4
- 0x80000000, // 0022 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_value_dimmer
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light1;
-be_local_closure(class_Matter_Plugin_Bridge_Light1_web_value_dimmer, /* name */
- be_nested_proto(
- 9, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light1,
- 1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(),
- /* K1 */ be_nested_str_weak(shadow_bri),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(scale_uint),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(_X25i_X25_X25),
- /* K6 */ be_nested_str_weak(_X26_X23128261_X3B_X20),
- }),
- be_str_weak(web_value_dimmer),
- &be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x4C0C0000, // 0002 LDNIL R3
- 0x20080403, // 0003 NE R2 R2 R3
- 0x780A000C, // 0004 JMPF R2 #0012
- 0xB80A0400, // 0005 GETNGBL R2 K2
- 0x8C080503, // 0006 GETMET R2 R2 K3
- 0x88100101, // 0007 GETMBR R4 R0 K1
- 0x58140004, // 0008 LDCONST R5 K4
- 0x541A00FD, // 0009 LDINT R6 254
- 0x581C0004, // 000A LDCONST R7 K4
- 0x54220063, // 000B LDINT R8 100
- 0x7C080C00, // 000C CALL R2 6
- 0x600C0018, // 000D GETGBL R3 G24
- 0x58100005, // 000E LDCONST R4 K5
- 0x5C140400, // 000F MOVE R5 R2
- 0x7C0C0400, // 0010 CALL R3 2
- 0x5C040600, // 0011 MOVE R1 R3
- 0x000A0C01, // 0012 ADD R2 K6 R1
- 0x80040400, // 0013 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Bridge_Light1
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light0;
-be_local_class(Matter_Plugin_Bridge_Light1,
- 1,
- &be_class_Matter_Plugin_Bridge_Light0,
- be_nested_map(11,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(web_value_dimmer, -1), be_const_closure(class_Matter_Plugin_Bridge_Light1_web_value_dimmer_closure) },
- { be_const_key_weak(parse_update, -1), be_const_closure(class_Matter_Plugin_Bridge_Light1_parse_update_closure) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_light1) },
- { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Bridge_Light1_read_attribute_closure) },
- { be_const_key_weak(TYPES, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(257, -1), be_const_int(2) },
- })) ) } )) },
- { be_const_key_weak(shadow_bri, -1), be_const_var(0) },
- { be_const_key_weak(CLUSTERS, 5), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(7,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(29, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(8, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(11,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(2),
- be_const_int(3),
- be_const_int(15),
- be_const_int(17),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- })) ) } )) },
- { be_const_key_weak(set_bri, -1), be_const_closure(class_Matter_Plugin_Bridge_Light1_set_bri_closure) },
- { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X201_X20Dimmer) },
- { be_const_key_weak(web_values, 1), be_const_closure(class_Matter_Plugin_Bridge_Light1_web_values_closure) },
- { be_const_key_weak(invoke_request, 0), be_const_closure(class_Matter_Plugin_Bridge_Light1_invoke_request_closure) },
- })),
- be_str_weak(Matter_Plugin_Bridge_Light1)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Flow.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Flow.h
deleted file mode 100644
index 2bd05cb2e..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Flow.h
+++ /dev/null
@@ -1,315 +0,0 @@
-/* Solidification of Matter_Plugin_4_Bridge_Sensor_Flow.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Flow;
-
-/********************************************************************
-** Solidified function: pre_value
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Flow;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Flow_pre_value, /* name */
- be_nested_proto(
- 4, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Flow,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(pre_value),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x4C080000, // 0000 LDNIL R2
- 0x20080202, // 0001 NE R2 R1 R2
- 0x780A0004, // 0002 JMPF R2 #0008
- 0x60080009, // 0003 GETGBL R2 G9
- 0x540E0009, // 0004 LDINT R3 10
- 0x080C0203, // 0005 MUL R3 R1 R3
- 0x7C080200, // 0006 CALL R2 1
- 0x70020000, // 0007 JMP #0009
- 0x4C080000, // 0008 LDNIL R2
- 0x80040400, // 0009 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: value_changed
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Flow;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Flow_value_changed, /* name */
- be_nested_proto(
- 5, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Flow,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(attribute_updated),
- /* K1 */ be_const_int(0),
- }),
- be_str_weak(value_changed),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x540E0403, // 0001 LDINT R3 1028
- 0x58100001, // 0002 LDCONST R4 K1
- 0x7C040600, // 0003 CALL R1 3
- 0x80000000, // 0004 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Flow;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Flow_read_attribute, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Flow,
- 1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(shadow_value),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(U2),
- /* K8 */ be_nested_str_weak(NULL),
- /* K9 */ be_const_int(1),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[51]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E0403, // 0004 LDINT R7 1028
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0022, // 0006 JMPF R7 #002A
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E0011, // 0008 JMPF R7 #001B
- 0x881C0105, // 0009 GETMBR R7 R0 K5
- 0x4C200000, // 000A LDNIL R8
- 0x201C0E08, // 000B NE R7 R7 R8
- 0x781E0007, // 000C JMPF R7 #0015
- 0x8C1C0706, // 000D GETMET R7 R3 K6
- 0x88240907, // 000E GETMBR R9 R4 K7
- 0x60280009, // 000F GETGBL R10 G9
- 0x882C0105, // 0010 GETMBR R11 R0 K5
- 0x7C280200, // 0011 CALL R10 1
- 0x7C1C0600, // 0012 CALL R7 3
- 0x80040E00, // 0013 RET 1 R7
- 0x70020004, // 0014 JMP #001A
- 0x8C1C0706, // 0015 GETMET R7 R3 K6
- 0x88240908, // 0016 GETMBR R9 R4 K8
- 0x4C280000, // 0017 LDNIL R10
- 0x7C1C0600, // 0018 CALL R7 3
- 0x80040E00, // 0019 RET 1 R7
- 0x7002000E, // 001A JMP #002A
- 0x1C1C0D09, // 001B EQ R7 R6 K9
- 0x781E0005, // 001C JMPF R7 #0023
- 0x8C1C0706, // 001D GETMET R7 R3 K6
- 0x88240907, // 001E GETMBR R9 R4 K7
- 0x58280004, // 001F LDCONST R10 K4
- 0x7C1C0600, // 0020 CALL R7 3
- 0x80040E00, // 0021 RET 1 R7
- 0x70020006, // 0022 JMP #002A
- 0x1C1C0D0A, // 0023 EQ R7 R6 K10
- 0x781E0004, // 0024 JMPF R7 #002A
- 0x8C1C0706, // 0025 GETMET R7 R3 K6
- 0x88240907, // 0026 GETMBR R9 R4 K7
- 0x542AFFFD, // 0027 LDINT R10 65534
- 0x7C1C0600, // 0028 CALL R7 3
- 0x80040E00, // 0029 RET 1 R7
- 0x601C0003, // 002A GETGBL R7 G3
- 0x5C200000, // 002B MOVE R8 R0
- 0x7C1C0200, // 002C CALL R7 1
- 0x8C1C0F0B, // 002D GETMET R7 R7 K11
- 0x5C240200, // 002E MOVE R9 R1
- 0x5C280400, // 002F MOVE R10 R2
- 0x5C2C0600, // 0030 MOVE R11 R3
- 0x7C1C0800, // 0031 CALL R7 4
- 0x80040E00, // 0032 RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_values
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Flow;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Flow_web_values, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Flow,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(web_values_prefix),
- /* K2 */ be_nested_str_weak(content_send),
- /* K3 */ be_nested_str_weak(_X26_X23x26C5_X3B_X20_X25i_X20m3_X2Fh),
- /* K4 */ be_nested_str_weak(shadow_value),
- }),
- be_str_weak(web_values),
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x8C080302, // 0003 GETMET R2 R1 K2
- 0x60100018, // 0004 GETGBL R4 G24
- 0x58140003, // 0005 LDCONST R5 K3
- 0x60180009, // 0006 GETGBL R6 G9
- 0x881C0104, // 0007 GETMBR R7 R0 K4
- 0x7C180200, // 0008 CALL R6 1
- 0x7C100400, // 0009 CALL R4 2
- 0x7C080400, // 000A CALL R2 2
- 0x80000000, // 000B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Bridge_Sensor_Flow
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor;
-be_local_class(Matter_Plugin_Bridge_Sensor_Flow,
- 0,
- &be_class_Matter_Plugin_Bridge_Sensor,
- be_nested_map(8,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(pre_value, 1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Flow_pre_value_closure) },
- { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Flow_web_values_closure) },
- { be_const_key_weak(TYPES, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(774, -1), be_const_int(1) },
- })) ) } )) },
- { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Flow_read_attribute_closure) },
- { be_const_key_weak(value_changed, 6), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Flow_value_changed_closure) },
- { be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak(Flow) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_flow) },
- { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(6,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(1028, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(9,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- })) ) } )) },
- })),
- be_str_weak(Matter_Plugin_Bridge_Sensor_Flow)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Humidity.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Humidity.h
deleted file mode 100644
index 5805df777..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Humidity.h
+++ /dev/null
@@ -1,323 +0,0 @@
-/* Solidification of Matter_Plugin_4_Bridge_Sensor_Humidity.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Humidity;
-
-/********************************************************************
-** Solidified function: pre_value
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Humidity;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Humidity_pre_value, /* name */
- be_nested_proto(
- 4, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Humidity,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(pre_value),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x4C080000, // 0000 LDNIL R2
- 0x20080202, // 0001 NE R2 R1 R2
- 0x780A0004, // 0002 JMPF R2 #0008
- 0x60080009, // 0003 GETGBL R2 G9
- 0x540E0063, // 0004 LDINT R3 100
- 0x080C0203, // 0005 MUL R3 R1 R3
- 0x7C080200, // 0006 CALL R2 1
- 0x70020000, // 0007 JMP #0009
- 0x4C080000, // 0008 LDNIL R2
- 0x80040400, // 0009 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: value_changed
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Humidity;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Humidity_value_changed, /* name */
- be_nested_proto(
- 5, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Humidity,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(attribute_updated),
- /* K1 */ be_const_int(0),
- }),
- be_str_weak(value_changed),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x540E0404, // 0001 LDINT R3 1029
- 0x58100001, // 0002 LDCONST R4 K1
- 0x7C040600, // 0003 CALL R1 3
- 0x80000000, // 0004 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Humidity;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Humidity_read_attribute, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Humidity,
- 1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(shadow_value),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(U2),
- /* K8 */ be_nested_str_weak(NULL),
- /* K9 */ be_const_int(1),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[51]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E0404, // 0004 LDINT R7 1029
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0022, // 0006 JMPF R7 #002A
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E0011, // 0008 JMPF R7 #001B
- 0x881C0105, // 0009 GETMBR R7 R0 K5
- 0x4C200000, // 000A LDNIL R8
- 0x201C0E08, // 000B NE R7 R7 R8
- 0x781E0007, // 000C JMPF R7 #0015
- 0x8C1C0706, // 000D GETMET R7 R3 K6
- 0x88240907, // 000E GETMBR R9 R4 K7
- 0x60280009, // 000F GETGBL R10 G9
- 0x882C0105, // 0010 GETMBR R11 R0 K5
- 0x7C280200, // 0011 CALL R10 1
- 0x7C1C0600, // 0012 CALL R7 3
- 0x80040E00, // 0013 RET 1 R7
- 0x70020004, // 0014 JMP #001A
- 0x8C1C0706, // 0015 GETMET R7 R3 K6
- 0x88240908, // 0016 GETMBR R9 R4 K8
- 0x4C280000, // 0017 LDNIL R10
- 0x7C1C0600, // 0018 CALL R7 3
- 0x80040E00, // 0019 RET 1 R7
- 0x7002000E, // 001A JMP #002A
- 0x1C1C0D09, // 001B EQ R7 R6 K9
- 0x781E0005, // 001C JMPF R7 #0023
- 0x8C1C0706, // 001D GETMET R7 R3 K6
- 0x88240907, // 001E GETMBR R9 R4 K7
- 0x542A01F3, // 001F LDINT R10 500
- 0x7C1C0600, // 0020 CALL R7 3
- 0x80040E00, // 0021 RET 1 R7
- 0x70020006, // 0022 JMP #002A
- 0x1C1C0D0A, // 0023 EQ R7 R6 K10
- 0x781E0004, // 0024 JMPF R7 #002A
- 0x8C1C0706, // 0025 GETMET R7 R3 K6
- 0x88240907, // 0026 GETMBR R9 R4 K7
- 0x542A270F, // 0027 LDINT R10 10000
- 0x7C1C0600, // 0028 CALL R7 3
- 0x80040E00, // 0029 RET 1 R7
- 0x601C0003, // 002A GETGBL R7 G3
- 0x5C200000, // 002B MOVE R8 R0
- 0x7C1C0200, // 002C CALL R7 1
- 0x8C1C0F0B, // 002D GETMET R7 R7 K11
- 0x5C240200, // 002E MOVE R9 R1
- 0x5C280400, // 002F MOVE R10 R2
- 0x5C2C0600, // 0030 MOVE R11 R3
- 0x7C1C0800, // 0031 CALL R7 4
- 0x80040E00, // 0032 RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_values
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Humidity;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Humidity_web_values, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Humidity,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(web_values_prefix),
- /* K2 */ be_nested_str_weak(content_send),
- /* K3 */ be_nested_str_weak(_X26_X23x1F4A7_X3B_X20_X252_X2E0f_X25_X25),
- /* K4 */ be_nested_str_weak(shadow_value),
- }),
- be_str_weak(web_values),
- &be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x8C080302, // 0003 GETMET R2 R1 K2
- 0x60100018, // 0004 GETGBL R4 G24
- 0x58140003, // 0005 LDCONST R5 K3
- 0x88180104, // 0006 GETMBR R6 R0 K4
- 0x4C1C0000, // 0007 LDNIL R7
- 0x20180C07, // 0008 NE R6 R6 R7
- 0x781A0005, // 0009 JMPF R6 #0010
- 0x6018000A, // 000A GETGBL R6 G10
- 0x881C0104, // 000B GETMBR R7 R0 K4
- 0x7C180200, // 000C CALL R6 1
- 0x541E0063, // 000D LDINT R7 100
- 0x0C180C07, // 000E DIV R6 R6 R7
- 0x70020000, // 000F JMP #0011
- 0x4C180000, // 0010 LDNIL R6
- 0x7C100400, // 0011 CALL R4 2
- 0x7C080400, // 0012 CALL R2 2
- 0x80000000, // 0013 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Bridge_Sensor_Humidity
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor;
-be_local_class(Matter_Plugin_Bridge_Sensor_Humidity,
- 0,
- &be_class_Matter_Plugin_Bridge_Sensor,
- be_nested_map(8,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(pre_value, 1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Humidity_pre_value_closure) },
- { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Humidity_web_values_closure) },
- { be_const_key_weak(TYPES, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(775, -1), be_const_int(2) },
- })) ) } )) },
- { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Humidity_read_attribute_closure) },
- { be_const_key_weak(value_changed, 6), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Humidity_value_changed_closure) },
- { be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak(Humidity) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_humidity) },
- { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(6,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(1029, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(9,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- })) ) } )) },
- })),
- be_str_weak(Matter_Plugin_Bridge_Sensor_Humidity)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Illuminance.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Illuminance.h
deleted file mode 100644
index e31c317b6..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Illuminance.h
+++ /dev/null
@@ -1,327 +0,0 @@
-/* Solidification of Matter_Plugin_4_Bridge_Sensor_Illuminance.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Illuminance;
-
-/********************************************************************
-** Solidified function: pre_value
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Illuminance;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Illuminance_pre_value, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Illuminance,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(math),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(log10),
- /* K3 */ be_const_int(1),
- }),
- be_str_weak(pre_value),
- &be_const_str_solidified,
- ( &(const binstruction[17]) { /* code */
- 0x4C080000, // 0000 LDNIL R2
- 0x1C080202, // 0001 EQ R2 R1 R2
- 0x780A0001, // 0002 JMPF R2 #0005
- 0x4C080000, // 0003 LDNIL R2
- 0x80040400, // 0004 RET 1 R2
- 0xA40A0000, // 0005 IMPORT R2 K0
- 0x140C0301, // 0006 LT R3 R1 K1
- 0x780E0001, // 0007 JMPF R3 #000A
- 0x80060200, // 0008 RET 1 K1
- 0x70020005, // 0009 JMP #0010
- 0x8C0C0502, // 000A GETMET R3 R2 K2
- 0x00140303, // 000B ADD R5 R1 K3
- 0x7C0C0400, // 000C CALL R3 2
- 0x5412270F, // 000D LDINT R4 10000
- 0x080C0604, // 000E MUL R3 R3 R4
- 0x80040600, // 000F RET 1 R3
- 0x80000000, // 0010 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: value_changed
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Illuminance;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Illuminance_value_changed, /* name */
- be_nested_proto(
- 5, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Illuminance,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(attribute_updated),
- /* K1 */ be_const_int(0),
- }),
- be_str_weak(value_changed),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x540E03FF, // 0001 LDINT R3 1024
- 0x58100001, // 0002 LDCONST R4 K1
- 0x7C040600, // 0003 CALL R1 3
- 0x80000000, // 0004 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Illuminance;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Illuminance_read_attribute, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Illuminance,
- 1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(shadow_value),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(U2),
- /* K8 */ be_nested_str_weak(NULL),
- /* K9 */ be_const_int(1),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[51]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E03FF, // 0004 LDINT R7 1024
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0022, // 0006 JMPF R7 #002A
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E0011, // 0008 JMPF R7 #001B
- 0x881C0105, // 0009 GETMBR R7 R0 K5
- 0x4C200000, // 000A LDNIL R8
- 0x201C0E08, // 000B NE R7 R7 R8
- 0x781E0007, // 000C JMPF R7 #0015
- 0x8C1C0706, // 000D GETMET R7 R3 K6
- 0x88240907, // 000E GETMBR R9 R4 K7
- 0x60280009, // 000F GETGBL R10 G9
- 0x882C0105, // 0010 GETMBR R11 R0 K5
- 0x7C280200, // 0011 CALL R10 1
- 0x7C1C0600, // 0012 CALL R7 3
- 0x80040E00, // 0013 RET 1 R7
- 0x70020004, // 0014 JMP #001A
- 0x8C1C0706, // 0015 GETMET R7 R3 K6
- 0x88240908, // 0016 GETMBR R9 R4 K8
- 0x4C280000, // 0017 LDNIL R10
- 0x7C1C0600, // 0018 CALL R7 3
- 0x80040E00, // 0019 RET 1 R7
- 0x7002000E, // 001A JMP #002A
- 0x1C1C0D09, // 001B EQ R7 R6 K9
- 0x781E0005, // 001C JMPF R7 #0023
- 0x8C1C0706, // 001D GETMET R7 R3 K6
- 0x88240907, // 001E GETMBR R9 R4 K7
- 0x58280009, // 001F LDCONST R10 K9
- 0x7C1C0600, // 0020 CALL R7 3
- 0x80040E00, // 0021 RET 1 R7
- 0x70020006, // 0022 JMP #002A
- 0x1C1C0D0A, // 0023 EQ R7 R6 K10
- 0x781E0004, // 0024 JMPF R7 #002A
- 0x8C1C0706, // 0025 GETMET R7 R3 K6
- 0x88240907, // 0026 GETMBR R9 R4 K7
- 0x542AFFFD, // 0027 LDINT R10 65534
- 0x7C1C0600, // 0028 CALL R7 3
- 0x80040E00, // 0029 RET 1 R7
- 0x601C0003, // 002A GETGBL R7 G3
- 0x5C200000, // 002B MOVE R8 R0
- 0x7C1C0200, // 002C CALL R7 1
- 0x8C1C0F0B, // 002D GETMET R7 R7 K11
- 0x5C240200, // 002E MOVE R9 R1
- 0x5C280400, // 002F MOVE R10 R2
- 0x5C2C0600, // 0030 MOVE R11 R3
- 0x7C1C0800, // 0031 CALL R7 4
- 0x80040E00, // 0032 RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_values
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Illuminance;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Illuminance_web_values, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Illuminance,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(web_values_prefix),
- /* K2 */ be_nested_str_weak(content_send),
- /* K3 */ be_nested_str_weak(_X26_X23128261_X3B_X20_X25ilux),
- /* K4 */ be_nested_str_weak(shadow_value),
- }),
- be_str_weak(web_values),
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x8C080302, // 0003 GETMET R2 R1 K2
- 0x60100018, // 0004 GETGBL R4 G24
- 0x58140003, // 0005 LDCONST R5 K3
- 0x60180009, // 0006 GETGBL R6 G9
- 0x881C0104, // 0007 GETMBR R7 R0 K4
- 0x7C180200, // 0008 CALL R6 1
- 0x7C100400, // 0009 CALL R4 2
- 0x7C080400, // 000A CALL R2 2
- 0x80000000, // 000B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Bridge_Sensor_Illuminance
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor;
-be_local_class(Matter_Plugin_Bridge_Sensor_Illuminance,
- 0,
- &be_class_Matter_Plugin_Bridge_Sensor,
- be_nested_map(8,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(pre_value, 1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Illuminance_pre_value_closure) },
- { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Illuminance_web_values_closure) },
- { be_const_key_weak(TYPES, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(262, -1), be_const_int(2) },
- })) ) } )) },
- { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Illuminance_read_attribute_closure) },
- { be_const_key_weak(value_changed, 6), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Illuminance_value_changed_closure) },
- { be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak(Illuminance) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_illuminance) },
- { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(6,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(1024, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(9,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- })) ) } )) },
- })),
- be_str_weak(Matter_Plugin_Bridge_Sensor_Illuminance)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Pressure.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Pressure.h
deleted file mode 100644
index 1e4078565..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Pressure.h
+++ /dev/null
@@ -1,314 +0,0 @@
-/* Solidification of Matter_Plugin_4_Bridge_Sensor_Pressure.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Pressure;
-
-/********************************************************************
-** Solidified function: pre_value
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Pressure;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Pressure_pre_value, /* name */
- be_nested_proto(
- 4, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Pressure,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(pre_value),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x4C080000, // 0000 LDNIL R2
- 0x20080202, // 0001 NE R2 R1 R2
- 0x780A0003, // 0002 JMPF R2 #0007
- 0x60080009, // 0003 GETGBL R2 G9
- 0x5C0C0200, // 0004 MOVE R3 R1
- 0x7C080200, // 0005 CALL R2 1
- 0x70020000, // 0006 JMP #0008
- 0x4C080000, // 0007 LDNIL R2
- 0x80040400, // 0008 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: value_changed
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Pressure;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Pressure_value_changed, /* name */
- be_nested_proto(
- 5, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Pressure,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(attribute_updated),
- /* K1 */ be_const_int(0),
- }),
- be_str_weak(value_changed),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x540E0402, // 0001 LDINT R3 1027
- 0x58100001, // 0002 LDCONST R4 K1
- 0x7C040600, // 0003 CALL R1 3
- 0x80000000, // 0004 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Pressure;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Pressure_read_attribute, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Pressure,
- 1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(shadow_value),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(I2),
- /* K8 */ be_nested_str_weak(NULL),
- /* K9 */ be_const_int(1),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[51]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E0402, // 0004 LDINT R7 1027
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0022, // 0006 JMPF R7 #002A
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E0011, // 0008 JMPF R7 #001B
- 0x881C0105, // 0009 GETMBR R7 R0 K5
- 0x4C200000, // 000A LDNIL R8
- 0x201C0E08, // 000B NE R7 R7 R8
- 0x781E0007, // 000C JMPF R7 #0015
- 0x8C1C0706, // 000D GETMET R7 R3 K6
- 0x88240907, // 000E GETMBR R9 R4 K7
- 0x60280009, // 000F GETGBL R10 G9
- 0x882C0105, // 0010 GETMBR R11 R0 K5
- 0x7C280200, // 0011 CALL R10 1
- 0x7C1C0600, // 0012 CALL R7 3
- 0x80040E00, // 0013 RET 1 R7
- 0x70020004, // 0014 JMP #001A
- 0x8C1C0706, // 0015 GETMET R7 R3 K6
- 0x88240908, // 0016 GETMBR R9 R4 K8
- 0x4C280000, // 0017 LDNIL R10
- 0x7C1C0600, // 0018 CALL R7 3
- 0x80040E00, // 0019 RET 1 R7
- 0x7002000E, // 001A JMP #002A
- 0x1C1C0D09, // 001B EQ R7 R6 K9
- 0x781E0005, // 001C JMPF R7 #0023
- 0x8C1C0706, // 001D GETMET R7 R3 K6
- 0x88240907, // 001E GETMBR R9 R4 K7
- 0x542A01F3, // 001F LDINT R10 500
- 0x7C1C0600, // 0020 CALL R7 3
- 0x80040E00, // 0021 RET 1 R7
- 0x70020006, // 0022 JMP #002A
- 0x1C1C0D0A, // 0023 EQ R7 R6 K10
- 0x781E0004, // 0024 JMPF R7 #002A
- 0x8C1C0706, // 0025 GETMET R7 R3 K6
- 0x88240907, // 0026 GETMBR R9 R4 K7
- 0x542A05DB, // 0027 LDINT R10 1500
- 0x7C1C0600, // 0028 CALL R7 3
- 0x80040E00, // 0029 RET 1 R7
- 0x601C0003, // 002A GETGBL R7 G3
- 0x5C200000, // 002B MOVE R8 R0
- 0x7C1C0200, // 002C CALL R7 1
- 0x8C1C0F0B, // 002D GETMET R7 R7 K11
- 0x5C240200, // 002E MOVE R9 R1
- 0x5C280400, // 002F MOVE R10 R2
- 0x5C2C0600, // 0030 MOVE R11 R3
- 0x7C1C0800, // 0031 CALL R7 4
- 0x80040E00, // 0032 RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_values
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Pressure;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Pressure_web_values, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Pressure,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(web_values_prefix),
- /* K2 */ be_nested_str_weak(content_send),
- /* K3 */ be_nested_str_weak(_X26_X23x26C5_X3B_X20_X25i_X20hPa),
- /* K4 */ be_nested_str_weak(shadow_value),
- }),
- be_str_weak(web_values),
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x8C080302, // 0003 GETMET R2 R1 K2
- 0x60100018, // 0004 GETGBL R4 G24
- 0x58140003, // 0005 LDCONST R5 K3
- 0x60180009, // 0006 GETGBL R6 G9
- 0x881C0104, // 0007 GETMBR R7 R0 K4
- 0x7C180200, // 0008 CALL R6 1
- 0x7C100400, // 0009 CALL R4 2
- 0x7C080400, // 000A CALL R2 2
- 0x80000000, // 000B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Bridge_Sensor_Pressure
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor;
-be_local_class(Matter_Plugin_Bridge_Sensor_Pressure,
- 0,
- &be_class_Matter_Plugin_Bridge_Sensor,
- be_nested_map(8,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(pre_value, 1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Pressure_pre_value_closure) },
- { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Pressure_web_values_closure) },
- { be_const_key_weak(TYPES, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(773, -1), be_const_int(2) },
- })) ) } )) },
- { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Pressure_read_attribute_closure) },
- { be_const_key_weak(value_changed, 6), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Pressure_value_changed_closure) },
- { be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak(Pressure) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_pressure) },
- { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(6,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(1027, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(9,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- })) ) } )) },
- })),
- be_str_weak(Matter_Plugin_Bridge_Sensor_Pressure)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Temp.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Temp.h
deleted file mode 100644
index 491a9e29c..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_Sensor_Temp.h
+++ /dev/null
@@ -1,333 +0,0 @@
-/* Solidification of Matter_Plugin_4_Bridge_Sensor_Temp.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Temp;
-
-/********************************************************************
-** Solidified function: pre_value
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Temp;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Temp_pre_value, /* name */
- be_nested_proto(
- 4, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Temp,
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(temp_unit),
- /* K1 */ be_nested_str_weak(TEMP_F),
- /* K2 */ be_const_real_hex(0x3FE66666),
- }),
- be_str_weak(pre_value),
- &be_const_str_solidified,
- ( &(const binstruction[18]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x880C0101, // 0001 GETMBR R3 R0 K1
- 0x1C080403, // 0002 EQ R2 R2 R3
- 0x780A0003, // 0003 JMPF R2 #0008
- 0x540A001F, // 0004 LDINT R2 32
- 0x04080202, // 0005 SUB R2 R1 R2
- 0x0C080502, // 0006 DIV R2 R2 K2
- 0x5C040400, // 0007 MOVE R1 R2
- 0x4C080000, // 0008 LDNIL R2
- 0x20080202, // 0009 NE R2 R1 R2
- 0x780A0004, // 000A JMPF R2 #0010
- 0x60080009, // 000B GETGBL R2 G9
- 0x540E0063, // 000C LDINT R3 100
- 0x080C0203, // 000D MUL R3 R1 R3
- 0x7C080200, // 000E CALL R2 1
- 0x70020000, // 000F JMP #0011
- 0x4C080000, // 0010 LDNIL R2
- 0x80040400, // 0011 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: value_changed
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Temp;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Temp_value_changed, /* name */
- be_nested_proto(
- 5, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Temp,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(attribute_updated),
- /* K1 */ be_const_int(0),
- }),
- be_str_weak(value_changed),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x540E0401, // 0001 LDINT R3 1026
- 0x58100001, // 0002 LDCONST R4 K1
- 0x7C040600, // 0003 CALL R1 3
- 0x80000000, // 0004 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Temp;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Temp_read_attribute, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Temp,
- 1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(shadow_value),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(I2),
- /* K8 */ be_nested_str_weak(NULL),
- /* K9 */ be_const_int(1),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[49]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E0401, // 0004 LDINT R7 1026
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0020, // 0006 JMPF R7 #0028
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E000F, // 0008 JMPF R7 #0019
- 0x881C0105, // 0009 GETMBR R7 R0 K5
- 0x4C200000, // 000A LDNIL R8
- 0x201C0E08, // 000B NE R7 R7 R8
- 0x781E0005, // 000C JMPF R7 #0013
- 0x8C1C0706, // 000D GETMET R7 R3 K6
- 0x88240907, // 000E GETMBR R9 R4 K7
- 0x88280105, // 000F GETMBR R10 R0 K5
- 0x7C1C0600, // 0010 CALL R7 3
- 0x80040E00, // 0011 RET 1 R7
- 0x70020004, // 0012 JMP #0018
- 0x8C1C0706, // 0013 GETMET R7 R3 K6
- 0x88240908, // 0014 GETMBR R9 R4 K8
- 0x4C280000, // 0015 LDNIL R10
- 0x7C1C0600, // 0016 CALL R7 3
- 0x80040E00, // 0017 RET 1 R7
- 0x7002000E, // 0018 JMP #0028
- 0x1C1C0D09, // 0019 EQ R7 R6 K9
- 0x781E0005, // 001A JMPF R7 #0021
- 0x8C1C0706, // 001B GETMET R7 R3 K6
- 0x88240907, // 001C GETMBR R9 R4 K7
- 0x5429EC77, // 001D LDINT R10 -5000
- 0x7C1C0600, // 001E CALL R7 3
- 0x80040E00, // 001F RET 1 R7
- 0x70020006, // 0020 JMP #0028
- 0x1C1C0D0A, // 0021 EQ R7 R6 K10
- 0x781E0004, // 0022 JMPF R7 #0028
- 0x8C1C0706, // 0023 GETMET R7 R3 K6
- 0x88240907, // 0024 GETMBR R9 R4 K7
- 0x542A3A97, // 0025 LDINT R10 15000
- 0x7C1C0600, // 0026 CALL R7 3
- 0x80040E00, // 0027 RET 1 R7
- 0x601C0003, // 0028 GETGBL R7 G3
- 0x5C200000, // 0029 MOVE R8 R0
- 0x7C1C0200, // 002A CALL R7 1
- 0x8C1C0F0B, // 002B GETMET R7 R7 K11
- 0x5C240200, // 002C MOVE R9 R1
- 0x5C280400, // 002D MOVE R10 R2
- 0x5C2C0600, // 002E MOVE R11 R3
- 0x7C1C0800, // 002F CALL R7 4
- 0x80040E00, // 0030 RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_values
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Temp;
-be_local_closure(class_Matter_Plugin_Bridge_Sensor_Temp_web_values, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Sensor_Temp,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(web_values_prefix),
- /* K2 */ be_nested_str_weak(content_send),
- /* K3 */ be_nested_str_weak(_X26_X23x2600_X3B_X26_X23xFE0F_X3B_X20_X25_X2E1f_X20_XC2_XB0C),
- /* K4 */ be_nested_str_weak(shadow_value),
- }),
- be_str_weak(web_values),
- &be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x8C080302, // 0003 GETMET R2 R1 K2
- 0x60100018, // 0004 GETGBL R4 G24
- 0x58140003, // 0005 LDCONST R5 K3
- 0x88180104, // 0006 GETMBR R6 R0 K4
- 0x4C1C0000, // 0007 LDNIL R7
- 0x20180C07, // 0008 NE R6 R6 R7
- 0x781A0005, // 0009 JMPF R6 #0010
- 0x6018000A, // 000A GETGBL R6 G10
- 0x881C0104, // 000B GETMBR R7 R0 K4
- 0x7C180200, // 000C CALL R6 1
- 0x541E0063, // 000D LDINT R7 100
- 0x0C180C07, // 000E DIV R6 R6 R7
- 0x70020000, // 000F JMP #0011
- 0x4C180000, // 0010 LDNIL R6
- 0x7C100400, // 0011 CALL R4 2
- 0x7C080400, // 0012 CALL R2 2
- 0x80000000, // 0013 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Bridge_Sensor_Temp
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Sensor;
-be_local_class(Matter_Plugin_Bridge_Sensor_Temp,
- 0,
- &be_class_Matter_Plugin_Bridge_Sensor,
- be_nested_map(8,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(pre_value, 1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Temp_pre_value_closure) },
- { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Temp_web_values_closure) },
- { be_const_key_weak(TYPES, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(770, -1), be_const_int(2) },
- })) ) } )) },
- { be_const_key_weak(read_attribute, 7), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Temp_read_attribute_closure) },
- { be_const_key_weak(value_changed, 6), be_const_closure(class_Matter_Plugin_Bridge_Sensor_Temp_value_changed_closure) },
- { be_const_key_weak(DISPLAY_NAME, 4), be_nested_str_weak(Temperature) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_temperature) },
- { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(6,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(1026, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(9,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- })) ) } )) },
- })),
- be_str_weak(Matter_Plugin_Bridge_Sensor_Temp)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h
new file mode 100644
index 000000000..e92e3336b
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light2.h
@@ -0,0 +1,699 @@
+/* Solidification of Matter_Plugin_4_Light2.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+// compact class 'Matter_Plugin_Light2' ktab size: 52, total: 91 (saved 312 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Light2[52] = {
+ /* K0 */ be_nested_str_weak(find),
+ /* K1 */ be_nested_str_weak(CT),
+ /* K2 */ be_nested_str_weak(set_ct),
+ /* K3 */ be_nested_str_weak(update_virtual),
+ /* K4 */ be_nested_str_weak(matter),
+ /* K5 */ be_nested_str_weak(TLV),
+ /* K6 */ be_nested_str_weak(cluster),
+ /* K7 */ be_nested_str_weak(attribute),
+ /* K8 */ be_nested_str_weak(update_shadow_lazy),
+ /* K9 */ be_nested_str_weak(set_or_nil),
+ /* K10 */ be_nested_str_weak(U1),
+ /* K11 */ be_nested_str_weak(shadow_ct),
+ /* K12 */ be_nested_str_weak(set),
+ /* K13 */ be_const_int(2),
+ /* K14 */ be_const_int(0),
+ /* K15 */ be_nested_str_weak(ct_min),
+ /* K16 */ be_nested_str_weak(ct_max),
+ /* K17 */ be_nested_str_weak(U4),
+ /* K18 */ be_nested_str_weak(read_attribute),
+ /* K19 */ be_nested_str_weak(VIRTUAL),
+ /* K20 */ be_nested_str_weak(BRIDGE),
+ /* K21 */ be_nested_str_weak(light),
+ /* K22 */ be_nested_str_weak(update_ct_minmax),
+ /* K23 */ be_nested_str_weak(update_shadow),
+ /* K24 */ be_nested_str_weak(get),
+ /* K25 */ be_nested_str_weak(light_index),
+ /* K26 */ be_nested_str_weak(ct),
+ /* K27 */ be_nested_str_weak(attribute_updated),
+ /* K28 */ be_nested_str_weak(call_remote_sync),
+ /* K29 */ be_nested_str_weak(parse_status),
+ /* K30 */ be_nested_str_weak(),
+ /* K31 */ be_const_int(1000000),
+ /* K32 */ be_nested_str_weak(_X25iK),
+ /* K33 */ be_nested_str_weak(_X26_X239898_X3B_X20),
+ /* K34 */ be_nested_str_weak(webserver),
+ /* K35 */ be_nested_str_weak(web_values_prefix),
+ /* K36 */ be_nested_str_weak(content_send),
+ /* K37 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s),
+ /* K38 */ be_nested_str_weak(web_value_onoff),
+ /* K39 */ be_nested_str_weak(shadow_onoff),
+ /* K40 */ be_nested_str_weak(web_value_dimmer),
+ /* K41 */ be_nested_str_weak(web_value_ct),
+ /* K42 */ be_nested_str_weak(init),
+ /* K43 */ be_const_int(1),
+ /* K44 */ be_nested_str_weak(command),
+ /* K45 */ be_nested_str_weak(findsubval),
+ /* K46 */ be_nested_str_weak(log),
+ /* K47 */ be_nested_str_weak(ct_X3A),
+ /* K48 */ be_nested_str_weak(publish_command),
+ /* K49 */ be_nested_str_weak(invoke_request),
+ /* K50 */ be_nested_str_weak(tasmota),
+ /* K51 */ be_nested_str_weak(get_option),
+};
+
+
+extern const bclass be_class_Matter_Plugin_Light2;
+
+/********************************************************************
+** Solidified function: update_virtual
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light2_update_virtual, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light2, /* shared constants */
+ be_str_weak(update_virtual),
+ &be_const_str_solidified,
+ ( &(const binstruction[18]) { /* code */
+ 0x60080009, // 0000 GETGBL R2 G9
+ 0x8C0C0300, // 0001 GETMET R3 R1 K0
+ 0x58140001, // 0002 LDCONST R5 K1
+ 0x7C0C0400, // 0003 CALL R3 2
+ 0x7C080200, // 0004 CALL R2 1
+ 0x4C0C0000, // 0005 LDNIL R3
+ 0x200C0403, // 0006 NE R3 R2 R3
+ 0x780E0002, // 0007 JMPF R3 #000B
+ 0x8C0C0102, // 0008 GETMET R3 R0 K2
+ 0x5C140400, // 0009 MOVE R5 R2
+ 0x7C0C0400, // 000A CALL R3 2
+ 0x600C0003, // 000B GETGBL R3 G3
+ 0x5C100000, // 000C MOVE R4 R0
+ 0x7C0C0200, // 000D CALL R3 1
+ 0x8C0C0703, // 000E GETMET R3 R3 K3
+ 0x5C140200, // 000F MOVE R5 R1
+ 0x7C0C0400, // 0010 CALL R3 2
+ 0x80000000, // 0011 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_attribute
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light2_read_attribute, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light2, /* shared constants */
+ be_str_weak(read_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[71]) { /* code */
+ 0xB8120800, // 0000 GETNGBL R4 K4
+ 0x88100905, // 0001 GETMBR R4 R4 K5
+ 0x88140506, // 0002 GETMBR R5 R2 K6
+ 0x88180507, // 0003 GETMBR R6 R2 K7
+ 0x541E02FF, // 0004 LDINT R7 768
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E0036, // 0006 JMPF R7 #003E
+ 0x8C1C0108, // 0007 GETMET R7 R0 K8
+ 0x7C1C0200, // 0008 CALL R7 1
+ 0x541E0006, // 0009 LDINT R7 7
+ 0x1C1C0C07, // 000A EQ R7 R6 R7
+ 0x781E0005, // 000B JMPF R7 #0012
+ 0x8C1C0709, // 000C GETMET R7 R3 K9
+ 0x8824090A, // 000D GETMBR R9 R4 K10
+ 0x8828010B, // 000E GETMBR R10 R0 K11
+ 0x7C1C0600, // 000F CALL R7 3
+ 0x80040E00, // 0010 RET 1 R7
+ 0x7002002B, // 0011 JMP #003E
+ 0x541E0007, // 0012 LDINT R7 8
+ 0x1C1C0C07, // 0013 EQ R7 R6 R7
+ 0x781E0005, // 0014 JMPF R7 #001B
+ 0x8C1C070C, // 0015 GETMET R7 R3 K12
+ 0x8824090A, // 0016 GETMBR R9 R4 K10
+ 0x5828000D, // 0017 LDCONST R10 K13
+ 0x7C1C0600, // 0018 CALL R7 3
+ 0x80040E00, // 0019 RET 1 R7
+ 0x70020022, // 001A JMP #003E
+ 0x541E000E, // 001B LDINT R7 15
+ 0x1C1C0C07, // 001C EQ R7 R6 R7
+ 0x781E0005, // 001D JMPF R7 #0024
+ 0x8C1C070C, // 001E GETMET R7 R3 K12
+ 0x8824090A, // 001F GETMBR R9 R4 K10
+ 0x5828000E, // 0020 LDCONST R10 K14
+ 0x7C1C0600, // 0021 CALL R7 3
+ 0x80040E00, // 0022 RET 1 R7
+ 0x70020019, // 0023 JMP #003E
+ 0x541E400A, // 0024 LDINT R7 16395
+ 0x1C1C0C07, // 0025 EQ R7 R6 R7
+ 0x781E0005, // 0026 JMPF R7 #002D
+ 0x8C1C070C, // 0027 GETMET R7 R3 K12
+ 0x8824090A, // 0028 GETMBR R9 R4 K10
+ 0x8828010F, // 0029 GETMBR R10 R0 K15
+ 0x7C1C0600, // 002A CALL R7 3
+ 0x80040E00, // 002B RET 1 R7
+ 0x70020010, // 002C JMP #003E
+ 0x541E400B, // 002D LDINT R7 16396
+ 0x1C1C0C07, // 002E EQ R7 R6 R7
+ 0x781E0005, // 002F JMPF R7 #0036
+ 0x8C1C070C, // 0030 GETMET R7 R3 K12
+ 0x8824090A, // 0031 GETMBR R9 R4 K10
+ 0x88280110, // 0032 GETMBR R10 R0 K16
+ 0x7C1C0600, // 0033 CALL R7 3
+ 0x80040E00, // 0034 RET 1 R7
+ 0x70020007, // 0035 JMP #003E
+ 0x541EFFFB, // 0036 LDINT R7 65532
+ 0x1C1C0C07, // 0037 EQ R7 R6 R7
+ 0x781E0004, // 0038 JMPF R7 #003E
+ 0x8C1C070C, // 0039 GETMET R7 R3 K12
+ 0x88240911, // 003A GETMBR R9 R4 K17
+ 0x542A000F, // 003B LDINT R10 16
+ 0x7C1C0600, // 003C CALL R7 3
+ 0x80040E00, // 003D RET 1 R7
+ 0x601C0003, // 003E GETGBL R7 G3
+ 0x5C200000, // 003F MOVE R8 R0
+ 0x7C1C0200, // 0040 CALL R7 1
+ 0x8C1C0F12, // 0041 GETMET R7 R7 K18
+ 0x5C240200, // 0042 MOVE R9 R1
+ 0x5C280400, // 0043 MOVE R10 R2
+ 0x5C2C0600, // 0044 MOVE R11 R3
+ 0x7C1C0800, // 0045 CALL R7 4
+ 0x80040E00, // 0046 RET 1 R7
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: update_shadow
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light2_update_shadow, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light2, /* shared constants */
+ be_str_weak(update_shadow),
+ &be_const_str_solidified,
+ ( &(const binstruction[41]) { /* code */
+ 0x88040113, // 0000 GETMBR R1 R0 K19
+ 0x74060020, // 0001 JMPT R1 #0023
+ 0x88040114, // 0002 GETMBR R1 R0 K20
+ 0x7406001E, // 0003 JMPT R1 #0023
+ 0xA4062A00, // 0004 IMPORT R1 K21
+ 0x8C080116, // 0005 GETMET R2 R0 K22
+ 0x7C080200, // 0006 CALL R2 1
+ 0x60080003, // 0007 GETGBL R2 G3
+ 0x5C0C0000, // 0008 MOVE R3 R0
+ 0x7C080200, // 0009 CALL R2 1
+ 0x8C080517, // 000A GETMET R2 R2 K23
+ 0x7C080200, // 000B CALL R2 1
+ 0x8C080318, // 000C GETMET R2 R1 K24
+ 0x88100119, // 000D GETMBR R4 R0 K25
+ 0x7C080400, // 000E CALL R2 2
+ 0x4C0C0000, // 000F LDNIL R3
+ 0x200C0403, // 0010 NE R3 R2 R3
+ 0x780E000F, // 0011 JMPF R3 #0022
+ 0x8C0C0500, // 0012 GETMET R3 R2 K0
+ 0x5814001A, // 0013 LDCONST R5 K26
+ 0x4C180000, // 0014 LDNIL R6
+ 0x7C0C0600, // 0015 CALL R3 3
+ 0x4C100000, // 0016 LDNIL R4
+ 0x1C100604, // 0017 EQ R4 R3 R4
+ 0x78120000, // 0018 JMPF R4 #001A
+ 0x880C010B, // 0019 GETMBR R3 R0 K11
+ 0x8810010B, // 001A GETMBR R4 R0 K11
+ 0x20100604, // 001B NE R4 R3 R4
+ 0x78120004, // 001C JMPF R4 #0022
+ 0x8C10011B, // 001D GETMET R4 R0 K27
+ 0x541A02FF, // 001E LDINT R6 768
+ 0x541E0006, // 001F LDINT R7 7
+ 0x7C100600, // 0020 CALL R4 3
+ 0x90021603, // 0021 SETMBR R0 K11 R3
+ 0x70020004, // 0022 JMP #0028
+ 0x60040003, // 0023 GETGBL R1 G3
+ 0x5C080000, // 0024 MOVE R2 R0
+ 0x7C040200, // 0025 CALL R1 1
+ 0x8C040317, // 0026 GETMET R1 R1 K23
+ 0x7C040200, // 0027 CALL R1 1
+ 0x80000000, // 0028 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_ct
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light2_set_ct, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light2, /* shared constants */
+ be_str_weak(set_ct),
+ &be_const_str_solidified,
+ ( &(const binstruction[45]) { /* code */
+ 0x8808010F, // 0000 GETMBR R2 R0 K15
+ 0x14080202, // 0001 LT R2 R1 R2
+ 0x780A0000, // 0002 JMPF R2 #0004
+ 0x8804010F, // 0003 GETMBR R1 R0 K15
+ 0x88080110, // 0004 GETMBR R2 R0 K16
+ 0x24080202, // 0005 GT R2 R1 R2
+ 0x780A0000, // 0006 JMPF R2 #0008
+ 0x88040110, // 0007 GETMBR R1 R0 K16
+ 0x88080114, // 0008 GETMBR R2 R0 K20
+ 0x780A000D, // 0009 JMPF R2 #0018
+ 0x8C08011C, // 000A GETMET R2 R0 K28
+ 0x58100001, // 000B LDCONST R4 K1
+ 0x60140008, // 000C GETGBL R5 G8
+ 0x5C180200, // 000D MOVE R6 R1
+ 0x7C140200, // 000E CALL R5 1
+ 0x7C080600, // 000F CALL R2 3
+ 0x4C0C0000, // 0010 LDNIL R3
+ 0x200C0403, // 0011 NE R3 R2 R3
+ 0x780E0003, // 0012 JMPF R3 #0017
+ 0x8C0C011D, // 0013 GETMET R3 R0 K29
+ 0x5C140400, // 0014 MOVE R5 R2
+ 0x541A000A, // 0015 LDINT R6 11
+ 0x7C0C0600, // 0016 CALL R3 3
+ 0x70020013, // 0017 JMP #002C
+ 0x88080113, // 0018 GETMBR R2 R0 K19
+ 0x780A0008, // 0019 JMPF R2 #0023
+ 0x8808010B, // 001A GETMBR R2 R0 K11
+ 0x20080202, // 001B NE R2 R1 R2
+ 0x780A0004, // 001C JMPF R2 #0022
+ 0x8C08011B, // 001D GETMET R2 R0 K27
+ 0x541202FF, // 001E LDINT R4 768
+ 0x54160006, // 001F LDINT R5 7
+ 0x7C080600, // 0020 CALL R2 3
+ 0x90021601, // 0021 SETMBR R0 K11 R1
+ 0x70020008, // 0022 JMP #002C
+ 0xA40A2A00, // 0023 IMPORT R2 K21
+ 0x8C0C050C, // 0024 GETMET R3 R2 K12
+ 0x60140013, // 0025 GETGBL R5 G19
+ 0x7C140000, // 0026 CALL R5 0
+ 0x98163401, // 0027 SETIDX R5 K26 R1
+ 0x88180119, // 0028 GETMBR R6 R0 K25
+ 0x7C0C0600, // 0029 CALL R3 3
+ 0x8C0C0117, // 002A GETMET R3 R0 K23
+ 0x7C0C0200, // 002B CALL R3 1
+ 0x80000000, // 002C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_status
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light2_parse_status, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light2, /* shared constants */
+ be_str_weak(parse_status),
+ &be_const_str_solidified,
+ ( &(const binstruction[35]) { /* code */
+ 0x600C0003, // 0000 GETGBL R3 G3
+ 0x5C100000, // 0001 MOVE R4 R0
+ 0x7C0C0200, // 0002 CALL R3 1
+ 0x8C0C071D, // 0003 GETMET R3 R3 K29
+ 0x5C140200, // 0004 MOVE R5 R1
+ 0x5C180400, // 0005 MOVE R6 R2
+ 0x7C0C0600, // 0006 CALL R3 3
+ 0x540E000A, // 0007 LDINT R3 11
+ 0x1C0C0403, // 0008 EQ R3 R2 R3
+ 0x780E0017, // 0009 JMPF R3 #0022
+ 0x600C0009, // 000A GETGBL R3 G9
+ 0x8C100300, // 000B GETMET R4 R1 K0
+ 0x58180001, // 000C LDCONST R6 K1
+ 0x7C100400, // 000D CALL R4 2
+ 0x7C0C0200, // 000E CALL R3 1
+ 0x4C100000, // 000F LDNIL R4
+ 0x20100604, // 0010 NE R4 R3 R4
+ 0x7812000F, // 0011 JMPF R4 #0022
+ 0x8810010B, // 0012 GETMBR R4 R0 K11
+ 0x20100604, // 0013 NE R4 R3 R4
+ 0x7812000C, // 0014 JMPF R4 #0022
+ 0x8810010F, // 0015 GETMBR R4 R0 K15
+ 0x14100604, // 0016 LT R4 R3 R4
+ 0x78120000, // 0017 JMPF R4 #0019
+ 0x880C010F, // 0018 GETMBR R3 R0 K15
+ 0x88100110, // 0019 GETMBR R4 R0 K16
+ 0x24100604, // 001A GT R4 R3 R4
+ 0x78120000, // 001B JMPF R4 #001D
+ 0x880C0110, // 001C GETMBR R3 R0 K16
+ 0x8C10011B, // 001D GETMET R4 R0 K27
+ 0x541A02FF, // 001E LDINT R6 768
+ 0x541E0006, // 001F LDINT R7 7
+ 0x7C100600, // 0020 CALL R4 3
+ 0x90021603, // 0021 SETMBR R0 K11 R3
+ 0x80000000, // 0022 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_value_ct
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light2_web_value_ct, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light2, /* shared constants */
+ be_str_weak(web_value_ct),
+ &be_const_str_solidified,
+ ( &(const binstruction[20]) { /* code */
+ 0x5804001E, // 0000 LDCONST R1 K30
+ 0x8808010B, // 0001 GETMBR R2 R0 K11
+ 0x4C0C0000, // 0002 LDNIL R3
+ 0x20080403, // 0003 NE R2 R2 R3
+ 0x780A000C, // 0004 JMPF R2 #0012
+ 0x8808010B, // 0005 GETMBR R2 R0 K11
+ 0x0C0A3E02, // 0006 DIV R2 K31 R2
+ 0x540E0018, // 0007 LDINT R3 25
+ 0x00080403, // 0008 ADD R2 R2 R3
+ 0x540E0031, // 0009 LDINT R3 50
+ 0x0C080403, // 000A DIV R2 R2 R3
+ 0x540E0031, // 000B LDINT R3 50
+ 0x08080403, // 000C MUL R2 R2 R3
+ 0x600C0018, // 000D GETGBL R3 G24
+ 0x58100020, // 000E LDCONST R4 K32
+ 0x5C140400, // 000F MOVE R5 R2
+ 0x7C0C0400, // 0010 CALL R3 2
+ 0x5C040600, // 0011 MOVE R1 R3
+ 0x000A4201, // 0012 ADD R2 K33 R1
+ 0x80040400, // 0013 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_values
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light2_web_values, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light2, /* shared constants */
+ be_str_weak(web_values),
+ &be_const_str_solidified,
+ ( &(const binstruction[16]) { /* code */
+ 0xA4064400, // 0000 IMPORT R1 K34
+ 0x8C080123, // 0001 GETMET R2 R0 K35
+ 0x7C080200, // 0002 CALL R2 1
+ 0x8C080324, // 0003 GETMET R2 R1 K36
+ 0x60100018, // 0004 GETGBL R4 G24
+ 0x58140025, // 0005 LDCONST R5 K37
+ 0x8C180126, // 0006 GETMET R6 R0 K38
+ 0x88200127, // 0007 GETMBR R8 R0 K39
+ 0x7C180400, // 0008 CALL R6 2
+ 0x8C1C0128, // 0009 GETMET R7 R0 K40
+ 0x7C1C0200, // 000A CALL R7 1
+ 0x8C200129, // 000B GETMET R8 R0 K41
+ 0x7C200200, // 000C CALL R8 1
+ 0x7C100800, // 000D CALL R4 4
+ 0x7C080400, // 000E CALL R2 2
+ 0x80000000, // 000F RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light2_init, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light2, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[23]) { /* code */
+ 0x60100003, // 0000 GETGBL R4 G3
+ 0x5C140000, // 0001 MOVE R5 R0
+ 0x7C100200, // 0002 CALL R4 1
+ 0x8C10092A, // 0003 GETMET R4 R4 K42
+ 0x5C180200, // 0004 MOVE R6 R1
+ 0x5C1C0400, // 0005 MOVE R7 R2
+ 0x5C200600, // 0006 MOVE R8 R3
+ 0x7C100800, // 0007 CALL R4 4
+ 0x88100114, // 0008 GETMBR R4 R0 K20
+ 0x74120009, // 0009 JMPT R4 #0014
+ 0x54120144, // 000A LDINT R4 325
+ 0x90021604, // 000B SETMBR R0 K11 R4
+ 0xA4122A00, // 000C IMPORT R4 K21
+ 0x8C140918, // 000D GETMET R5 R4 K24
+ 0x581C002B, // 000E LDCONST R7 K43
+ 0x7C140400, // 000F CALL R5 2
+ 0x4C180000, // 0010 LDNIL R6
+ 0x20140A06, // 0011 NE R5 R5 R6
+ 0x78160000, // 0012 JMPF R5 #0014
+ 0x9002332B, // 0013 SETMBR R0 K25 K43
+ 0x8C100116, // 0014 GETMET R4 R0 K22
+ 0x7C100200, // 0015 CALL R4 1
+ 0x80000000, // 0016 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: invoke_request
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light2_invoke_request, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light2, /* shared constants */
+ be_str_weak(invoke_request),
+ &be_const_str_solidified,
+ ( &(const binstruction[66]) { /* code */
+ 0xB8120800, // 0000 GETNGBL R4 K4
+ 0x88100905, // 0001 GETMBR R4 R4 K5
+ 0x88140706, // 0002 GETMBR R5 R3 K6
+ 0x8818072C, // 0003 GETMBR R6 R3 K44
+ 0x541E02FF, // 0004 LDINT R7 768
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E0030, // 0006 JMPF R7 #0038
+ 0x8C1C0108, // 0007 GETMET R7 R0 K8
+ 0x7C1C0200, // 0008 CALL R7 1
+ 0x541E0009, // 0009 LDINT R7 10
+ 0x1C1C0C07, // 000A EQ R7 R6 R7
+ 0x781E0019, // 000B JMPF R7 #0026
+ 0x8C1C052D, // 000C GETMET R7 R2 K45
+ 0x5824000E, // 000D LDCONST R9 K14
+ 0x7C1C0400, // 000E CALL R7 2
+ 0x8820010F, // 000F GETMBR R8 R0 K15
+ 0x14200E08, // 0010 LT R8 R7 R8
+ 0x78220000, // 0011 JMPF R8 #0013
+ 0x881C010F, // 0012 GETMBR R7 R0 K15
+ 0x88200110, // 0013 GETMBR R8 R0 K16
+ 0x24200E08, // 0014 GT R8 R7 R8
+ 0x78220000, // 0015 JMPF R8 #0017
+ 0x881C0110, // 0016 GETMBR R7 R0 K16
+ 0x8C200102, // 0017 GETMET R8 R0 K2
+ 0x5C280E00, // 0018 MOVE R10 R7
+ 0x7C200400, // 0019 CALL R8 2
+ 0x60200008, // 001A GETGBL R8 G8
+ 0x5C240E00, // 001B MOVE R9 R7
+ 0x7C200200, // 001C CALL R8 1
+ 0x00225E08, // 001D ADD R8 K47 R8
+ 0x900E5C08, // 001E SETMBR R3 K46 R8
+ 0x8C200130, // 001F GETMET R8 R0 K48
+ 0x58280001, // 0020 LDCONST R10 K1
+ 0x5C2C0E00, // 0021 MOVE R11 R7
+ 0x7C200600, // 0022 CALL R8 3
+ 0x50200200, // 0023 LDBOOL R8 1 0
+ 0x80041000, // 0024 RET 1 R8
+ 0x70020010, // 0025 JMP #0037
+ 0x541E0046, // 0026 LDINT R7 71
+ 0x1C1C0C07, // 0027 EQ R7 R6 R7
+ 0x781E0002, // 0028 JMPF R7 #002C
+ 0x501C0200, // 0029 LDBOOL R7 1 0
+ 0x80040E00, // 002A RET 1 R7
+ 0x7002000A, // 002B JMP #0037
+ 0x541E004A, // 002C LDINT R7 75
+ 0x1C1C0C07, // 002D EQ R7 R6 R7
+ 0x781E0002, // 002E JMPF R7 #0032
+ 0x501C0200, // 002F LDBOOL R7 1 0
+ 0x80040E00, // 0030 RET 1 R7
+ 0x70020004, // 0031 JMP #0037
+ 0x541E004B, // 0032 LDINT R7 76
+ 0x1C1C0C07, // 0033 EQ R7 R6 R7
+ 0x781E0001, // 0034 JMPF R7 #0037
+ 0x501C0200, // 0035 LDBOOL R7 1 0
+ 0x80040E00, // 0036 RET 1 R7
+ 0x70020008, // 0037 JMP #0041
+ 0x601C0003, // 0038 GETGBL R7 G3
+ 0x5C200000, // 0039 MOVE R8 R0
+ 0x7C1C0200, // 003A CALL R7 1
+ 0x8C1C0F31, // 003B GETMET R7 R7 K49
+ 0x5C240200, // 003C MOVE R9 R1
+ 0x5C280400, // 003D MOVE R10 R2
+ 0x5C2C0600, // 003E MOVE R11 R3
+ 0x7C1C0800, // 003F CALL R7 4
+ 0x80040E00, // 0040 RET 1 R7
+ 0x80000000, // 0041 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: update_ct_minmax
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light2_update_ct_minmax, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light2, /* shared constants */
+ be_str_weak(update_ct_minmax),
+ &be_const_str_solidified,
+ ( &(const binstruction[15]) { /* code */
+ 0xB8066400, // 0000 GETNGBL R1 K50
+ 0x8C040333, // 0001 GETMET R1 R1 K51
+ 0x540E0051, // 0002 LDINT R3 82
+ 0x7C040400, // 0003 CALL R1 2
+ 0x78060001, // 0004 JMPF R1 #0007
+ 0x540A00C7, // 0005 LDINT R2 200
+ 0x70020000, // 0006 JMP #0008
+ 0x540A0098, // 0007 LDINT R2 153
+ 0x90021E02, // 0008 SETMBR R0 K15 R2
+ 0x78060001, // 0009 JMPF R1 #000C
+ 0x540A017B, // 000A LDINT R2 380
+ 0x70020000, // 000B JMP #000D
+ 0x540A01F3, // 000C LDINT R2 500
+ 0x90022002, // 000D SETMBR R0 K16 R2
+ 0x80000000, // 000E RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Light2
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Light1;
+be_local_class(Matter_Plugin_Light2,
+ 3,
+ &be_class_Matter_Plugin_Light1,
+ be_nested_map(20,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Light2_update_virtual_closure) },
+ { be_const_key_weak(DISPLAY_NAME, 6), be_nested_str_weak(Light_X202_X20CT) },
+ { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Light2_read_attribute_closure) },
+ { be_const_key_weak(ct_max, 18), be_const_var(2) },
+ { be_const_key_weak(ARG, -1), be_nested_str_weak() },
+ { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) },
+ { be_const_key_weak(shadow_ct, -1), be_const_var(0) },
+ { be_const_key_weak(set_ct, 16), be_const_closure(class_Matter_Plugin_Light2_set_ct_closure) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(light2) },
+ { be_const_key_weak(update_shadow, 8), be_const_closure(class_Matter_Plugin_Light2_update_shadow_closure) },
+ { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(1,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(268, -1), be_const_int(2) },
+ })) ) } )) },
+ { be_const_key_weak(web_value_ct, -1), be_const_closure(class_Matter_Plugin_Light2_web_value_ct_closure) },
+ { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Light2_web_values_closure) },
+ { be_const_key_weak(ct_min, -1), be_const_var(1) },
+ { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(8,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(8, 7), be_const_bytes_instance(000000020003000F0011FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(29, -1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(3, -1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(5, 2), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(6, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(768, -1), be_const_bytes_instance(00070008000F400B400CFFF8FFF9FFFAFFFBFFFCFFFD) },
+ })) ) } )) },
+ { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Light2_init_closure) },
+ { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Light2_invoke_request_closure) },
+ { be_const_key_weak(update_ct_minmax, -1), be_const_closure(class_Matter_Plugin_Light2_update_ct_minmax_closure) },
+ { be_const_key_weak(parse_status, -1), be_const_closure(class_Matter_Plugin_Light2_parse_status_closure) },
+ { be_const_key_weak(UPDATE_COMMANDS, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(3,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_nested_str_weak(Power),
+ be_nested_str_weak(Bri),
+ be_nested_str_weak(CT),
+ })) ) } )) },
+ })),
+ be_str_weak(Matter_Plugin_Light2)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h
new file mode 100644
index 000000000..5c2f727c1
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Light3.h
@@ -0,0 +1,954 @@
+/* Solidification of Matter_Plugin_4_Light3.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+// compact class 'Matter_Plugin_Light3' ktab size: 66, total: 113 (saved 376 bytes)
+static const bvalue be_ktab_class_Matter_Plugin_Light3[66] = {
+ /* K0 */ be_nested_str_weak(matter),
+ /* K1 */ be_nested_str_weak(TLV),
+ /* K2 */ be_nested_str_weak(cluster),
+ /* K3 */ be_nested_str_weak(command),
+ /* K4 */ be_nested_str_weak(update_shadow_lazy),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_nested_str_weak(findsubval),
+ /* K7 */ be_nested_str_weak(set_hue_sat),
+ /* K8 */ be_nested_str_weak(log),
+ /* K9 */ be_nested_str_weak(hue_X3A),
+ /* K10 */ be_nested_str_weak(publish_command),
+ /* K11 */ be_nested_str_weak(Hue),
+ /* K12 */ be_const_int(1),
+ /* K13 */ be_const_int(2),
+ /* K14 */ be_const_int(3),
+ /* K15 */ be_nested_str_weak(sat_X3A),
+ /* K16 */ be_nested_str_weak(Sat),
+ /* K17 */ be_nested_str_weak(_X20sat_X3A),
+ /* K18 */ be_nested_str_weak(invoke_request),
+ /* K19 */ be_nested_str_weak(attribute),
+ /* K20 */ be_nested_str_weak(set_or_nil),
+ /* K21 */ be_nested_str_weak(U1),
+ /* K22 */ be_nested_str_weak(shadow_hue),
+ /* K23 */ be_nested_str_weak(shadow_sat),
+ /* K24 */ be_nested_str_weak(set),
+ /* K25 */ be_nested_str_weak(U4),
+ /* K26 */ be_nested_str_weak(read_attribute),
+ /* K27 */ be_nested_str_weak(VIRTUAL),
+ /* K28 */ be_nested_str_weak(BRIDGE),
+ /* K29 */ be_nested_str_weak(light),
+ /* K30 */ be_nested_str_weak(update_shadow),
+ /* K31 */ be_nested_str_weak(get),
+ /* K32 */ be_nested_str_weak(light_index),
+ /* K33 */ be_nested_str_weak(find),
+ /* K34 */ be_nested_str_weak(hue),
+ /* K35 */ be_nested_str_weak(sat),
+ /* K36 */ be_nested_str_weak(tasmota),
+ /* K37 */ be_nested_str_weak(scale_uint),
+ /* K38 */ be_nested_str_weak(attribute_updated),
+ /* K39 */ be_nested_str_weak(update_virtual),
+ /* K40 */ be_nested_str_weak(call_remote_sync),
+ /* K41 */ be_nested_str_weak(HSBColor1),
+ /* K42 */ be_nested_str_weak(parse_status),
+ /* K43 */ be_nested_str_weak(HSBColor2),
+ /* K44 */ be_nested_str_weak(init),
+ /* K45 */ be_nested_str_weak(webserver),
+ /* K46 */ be_nested_str_weak(web_values_prefix),
+ /* K47 */ be_nested_str_weak(content_send),
+ /* K48 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s),
+ /* K49 */ be_nested_str_weak(web_value_onoff),
+ /* K50 */ be_nested_str_weak(shadow_onoff),
+ /* K51 */ be_nested_str_weak(web_value_dimmer),
+ /* K52 */ be_nested_str_weak(web_value_RGB),
+ /* K53 */ be_nested_str_weak(HSBColor),
+ /* K54 */ be_nested_str_weak(string),
+ /* K55 */ be_nested_str_weak(split),
+ /* K56 */ be_nested_str_weak(_X2C),
+ /* K57 */ be_nested_str_weak(light_state),
+ /* K58 */ be_nested_str_weak(set_bri),
+ /* K59 */ be_nested_str_weak(set_huesat),
+ /* K60 */ be_nested_str_weak(_X23_X2502X_X2502X_X2502X),
+ /* K61 */ be_nested_str_weak(r),
+ /* K62 */ be_nested_str_weak(g),
+ /* K63 */ be_nested_str_weak(b),
+ /* K64 */ be_nested_str_weak(_X3Ci_X20class_X3D_X22bxm_X22_X20style_X3D_X22_X2D_X2Dcl_X3A_X25s_X22_X3E_X3C_X2Fi_X3E_X25s),
+ /* K65 */ be_nested_str_weak(),
+};
+
+
+extern const bclass be_class_Matter_Plugin_Light3;
+
+/********************************************************************
+** Solidified function: invoke_request
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light3_invoke_request, /* name */
+ be_nested_proto(
+ 15, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light3, /* shared constants */
+ be_str_weak(invoke_request),
+ &be_const_str_solidified,
+ ( &(const binstruction[121]) { /* code */
+ 0xB8120000, // 0000 GETNGBL R4 K0
+ 0x88100901, // 0001 GETMBR R4 R4 K1
+ 0x88140702, // 0002 GETMBR R5 R3 K2
+ 0x88180703, // 0003 GETMBR R6 R3 K3
+ 0x541E02FF, // 0004 LDINT R7 768
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E0067, // 0006 JMPF R7 #006F
+ 0x8C1C0104, // 0007 GETMET R7 R0 K4
+ 0x7C1C0200, // 0008 CALL R7 1
+ 0x1C1C0D05, // 0009 EQ R7 R6 K5
+ 0x781E0012, // 000A JMPF R7 #001E
+ 0x8C1C0506, // 000B GETMET R7 R2 K6
+ 0x58240005, // 000C LDCONST R9 K5
+ 0x7C1C0400, // 000D CALL R7 2
+ 0x8C200107, // 000E GETMET R8 R0 K7
+ 0x5C280E00, // 000F MOVE R10 R7
+ 0x4C2C0000, // 0010 LDNIL R11
+ 0x7C200600, // 0011 CALL R8 3
+ 0x60200008, // 0012 GETGBL R8 G8
+ 0x5C240E00, // 0013 MOVE R9 R7
+ 0x7C200200, // 0014 CALL R8 1
+ 0x00221208, // 0015 ADD R8 K9 R8
+ 0x900E1008, // 0016 SETMBR R3 K8 R8
+ 0x8C20010A, // 0017 GETMET R8 R0 K10
+ 0x5828000B, // 0018 LDCONST R10 K11
+ 0x5C2C0E00, // 0019 MOVE R11 R7
+ 0x7C200600, // 001A CALL R8 3
+ 0x50200200, // 001B LDBOOL R8 1 0
+ 0x80041000, // 001C RET 1 R8
+ 0x7002004F, // 001D JMP #006E
+ 0x1C1C0D0C, // 001E EQ R7 R6 K12
+ 0x781E0002, // 001F JMPF R7 #0023
+ 0x501C0200, // 0020 LDBOOL R7 1 0
+ 0x80040E00, // 0021 RET 1 R7
+ 0x7002004A, // 0022 JMP #006E
+ 0x1C1C0D0D, // 0023 EQ R7 R6 K13
+ 0x781E0002, // 0024 JMPF R7 #0028
+ 0x501C0200, // 0025 LDBOOL R7 1 0
+ 0x80040E00, // 0026 RET 1 R7
+ 0x70020045, // 0027 JMP #006E
+ 0x1C1C0D0E, // 0028 EQ R7 R6 K14
+ 0x781E0012, // 0029 JMPF R7 #003D
+ 0x8C1C0506, // 002A GETMET R7 R2 K6
+ 0x58240005, // 002B LDCONST R9 K5
+ 0x7C1C0400, // 002C CALL R7 2
+ 0x8C200107, // 002D GETMET R8 R0 K7
+ 0x4C280000, // 002E LDNIL R10
+ 0x5C2C0E00, // 002F MOVE R11 R7
+ 0x7C200600, // 0030 CALL R8 3
+ 0x60200008, // 0031 GETGBL R8 G8
+ 0x5C240E00, // 0032 MOVE R9 R7
+ 0x7C200200, // 0033 CALL R8 1
+ 0x00221E08, // 0034 ADD R8 K15 R8
+ 0x900E1008, // 0035 SETMBR R3 K8 R8
+ 0x8C20010A, // 0036 GETMET R8 R0 K10
+ 0x58280010, // 0037 LDCONST R10 K16
+ 0x5C2C0E00, // 0038 MOVE R11 R7
+ 0x7C200600, // 0039 CALL R8 3
+ 0x50200200, // 003A LDBOOL R8 1 0
+ 0x80041000, // 003B RET 1 R8
+ 0x70020030, // 003C JMP #006E
+ 0x541E0003, // 003D LDINT R7 4
+ 0x1C1C0C07, // 003E EQ R7 R6 R7
+ 0x781E0002, // 003F JMPF R7 #0043
+ 0x501C0200, // 0040 LDBOOL R7 1 0
+ 0x80040E00, // 0041 RET 1 R7
+ 0x7002002A, // 0042 JMP #006E
+ 0x541E0004, // 0043 LDINT R7 5
+ 0x1C1C0C07, // 0044 EQ R7 R6 R7
+ 0x781E0002, // 0045 JMPF R7 #0049
+ 0x501C0200, // 0046 LDBOOL R7 1 0
+ 0x80040E00, // 0047 RET 1 R7
+ 0x70020024, // 0048 JMP #006E
+ 0x541E0005, // 0049 LDINT R7 6
+ 0x1C1C0C07, // 004A EQ R7 R6 R7
+ 0x781E001C, // 004B JMPF R7 #0069
+ 0x8C1C0506, // 004C GETMET R7 R2 K6
+ 0x58240005, // 004D LDCONST R9 K5
+ 0x7C1C0400, // 004E CALL R7 2
+ 0x8C200506, // 004F GETMET R8 R2 K6
+ 0x5828000C, // 0050 LDCONST R10 K12
+ 0x7C200400, // 0051 CALL R8 2
+ 0x8C240107, // 0052 GETMET R9 R0 K7
+ 0x5C2C0E00, // 0053 MOVE R11 R7
+ 0x5C301000, // 0054 MOVE R12 R8
+ 0x7C240600, // 0055 CALL R9 3
+ 0x60240008, // 0056 GETGBL R9 G8
+ 0x5C280E00, // 0057 MOVE R10 R7
+ 0x7C240200, // 0058 CALL R9 1
+ 0x00261209, // 0059 ADD R9 K9 R9
+ 0x00241311, // 005A ADD R9 R9 K17
+ 0x60280008, // 005B GETGBL R10 G8
+ 0x5C2C1000, // 005C MOVE R11 R8
+ 0x7C280200, // 005D CALL R10 1
+ 0x0024120A, // 005E ADD R9 R9 R10
+ 0x900E1009, // 005F SETMBR R3 K8 R9
+ 0x8C24010A, // 0060 GETMET R9 R0 K10
+ 0x582C000B, // 0061 LDCONST R11 K11
+ 0x5C300E00, // 0062 MOVE R12 R7
+ 0x58340010, // 0063 LDCONST R13 K16
+ 0x5C381000, // 0064 MOVE R14 R8
+ 0x7C240A00, // 0065 CALL R9 5
+ 0x50240200, // 0066 LDBOOL R9 1 0
+ 0x80041200, // 0067 RET 1 R9
+ 0x70020004, // 0068 JMP #006E
+ 0x541E0046, // 0069 LDINT R7 71
+ 0x1C1C0C07, // 006A EQ R7 R6 R7
+ 0x781E0001, // 006B JMPF R7 #006E
+ 0x501C0200, // 006C LDBOOL R7 1 0
+ 0x80040E00, // 006D RET 1 R7
+ 0x70020008, // 006E JMP #0078
+ 0x601C0003, // 006F GETGBL R7 G3
+ 0x5C200000, // 0070 MOVE R8 R0
+ 0x7C1C0200, // 0071 CALL R7 1
+ 0x8C1C0F12, // 0072 GETMET R7 R7 K18
+ 0x5C240200, // 0073 MOVE R9 R1
+ 0x5C280400, // 0074 MOVE R10 R2
+ 0x5C2C0600, // 0075 MOVE R11 R3
+ 0x7C1C0800, // 0076 CALL R7 4
+ 0x80040E00, // 0077 RET 1 R7
+ 0x80000000, // 0078 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_attribute
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light3_read_attribute, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light3, /* shared constants */
+ be_str_weak(read_attribute),
+ &be_const_str_solidified,
+ ( &(const binstruction[96]) { /* code */
+ 0xB8120000, // 0000 GETNGBL R4 K0
+ 0x88100901, // 0001 GETMBR R4 R4 K1
+ 0x88140502, // 0002 GETMBR R5 R2 K2
+ 0x88180513, // 0003 GETMBR R6 R2 K19
+ 0x541E02FF, // 0004 LDINT R7 768
+ 0x1C1C0A07, // 0005 EQ R7 R5 R7
+ 0x781E004F, // 0006 JMPF R7 #0057
+ 0x8C1C0104, // 0007 GETMET R7 R0 K4
+ 0x7C1C0200, // 0008 CALL R7 1
+ 0x1C1C0D05, // 0009 EQ R7 R6 K5
+ 0x781E0005, // 000A JMPF R7 #0011
+ 0x8C1C0714, // 000B GETMET R7 R3 K20
+ 0x88240915, // 000C GETMBR R9 R4 K21
+ 0x88280116, // 000D GETMBR R10 R0 K22
+ 0x7C1C0600, // 000E CALL R7 3
+ 0x80040E00, // 000F RET 1 R7
+ 0x70020045, // 0010 JMP #0057
+ 0x1C1C0D0C, // 0011 EQ R7 R6 K12
+ 0x781E0005, // 0012 JMPF R7 #0019
+ 0x8C1C0714, // 0013 GETMET R7 R3 K20
+ 0x88240915, // 0014 GETMBR R9 R4 K21
+ 0x88280117, // 0015 GETMBR R10 R0 K23
+ 0x7C1C0600, // 0016 CALL R7 3
+ 0x80040E00, // 0017 RET 1 R7
+ 0x7002003D, // 0018 JMP #0057
+ 0x541E0006, // 0019 LDINT R7 7
+ 0x1C1C0C07, // 001A EQ R7 R6 R7
+ 0x781E0005, // 001B JMPF R7 #0022
+ 0x8C1C0718, // 001C GETMET R7 R3 K24
+ 0x88240915, // 001D GETMBR R9 R4 K21
+ 0x58280005, // 001E LDCONST R10 K5
+ 0x7C1C0600, // 001F CALL R7 3
+ 0x80040E00, // 0020 RET 1 R7
+ 0x70020034, // 0021 JMP #0057
+ 0x541E0007, // 0022 LDINT R7 8
+ 0x1C1C0C07, // 0023 EQ R7 R6 R7
+ 0x781E0005, // 0024 JMPF R7 #002B
+ 0x8C1C0718, // 0025 GETMET R7 R3 K24
+ 0x88240915, // 0026 GETMBR R9 R4 K21
+ 0x58280005, // 0027 LDCONST R10 K5
+ 0x7C1C0600, // 0028 CALL R7 3
+ 0x80040E00, // 0029 RET 1 R7
+ 0x7002002B, // 002A JMP #0057
+ 0x541E000E, // 002B LDINT R7 15
+ 0x1C1C0C07, // 002C EQ R7 R6 R7
+ 0x781E0005, // 002D JMPF R7 #0034
+ 0x8C1C0718, // 002E GETMET R7 R3 K24
+ 0x88240915, // 002F GETMBR R9 R4 K21
+ 0x58280005, // 0030 LDCONST R10 K5
+ 0x7C1C0600, // 0031 CALL R7 3
+ 0x80040E00, // 0032 RET 1 R7
+ 0x70020022, // 0033 JMP #0057
+ 0x541E4000, // 0034 LDINT R7 16385
+ 0x1C1C0C07, // 0035 EQ R7 R6 R7
+ 0x781E0005, // 0036 JMPF R7 #003D
+ 0x8C1C0718, // 0037 GETMET R7 R3 K24
+ 0x88240915, // 0038 GETMBR R9 R4 K21
+ 0x58280005, // 0039 LDCONST R10 K5
+ 0x7C1C0600, // 003A CALL R7 3
+ 0x80040E00, // 003B RET 1 R7
+ 0x70020019, // 003C JMP #0057
+ 0x541E4009, // 003D LDINT R7 16394
+ 0x1C1C0C07, // 003E EQ R7 R6 R7
+ 0x781E0005, // 003F JMPF R7 #0046
+ 0x8C1C0718, // 0040 GETMET R7 R3 K24
+ 0x88240915, // 0041 GETMBR R9 R4 K21
+ 0x5828000C, // 0042 LDCONST R10 K12
+ 0x7C1C0600, // 0043 CALL R7 3
+ 0x80040E00, // 0044 RET 1 R7
+ 0x70020010, // 0045 JMP #0057
+ 0x541E000F, // 0046 LDINT R7 16
+ 0x1C1C0C07, // 0047 EQ R7 R6 R7
+ 0x781E0005, // 0048 JMPF R7 #004F
+ 0x8C1C0718, // 0049 GETMET R7 R3 K24
+ 0x88240915, // 004A GETMBR R9 R4 K21
+ 0x58280005, // 004B LDCONST R10 K5
+ 0x7C1C0600, // 004C CALL R7 3
+ 0x80040E00, // 004D RET 1 R7
+ 0x70020007, // 004E JMP #0057
+ 0x541EFFFB, // 004F LDINT R7 65532
+ 0x1C1C0C07, // 0050 EQ R7 R6 R7
+ 0x781E0004, // 0051 JMPF R7 #0057
+ 0x8C1C0718, // 0052 GETMET R7 R3 K24
+ 0x88240919, // 0053 GETMBR R9 R4 K25
+ 0x5828000C, // 0054 LDCONST R10 K12
+ 0x7C1C0600, // 0055 CALL R7 3
+ 0x80040E00, // 0056 RET 1 R7
+ 0x601C0003, // 0057 GETGBL R7 G3
+ 0x5C200000, // 0058 MOVE R8 R0
+ 0x7C1C0200, // 0059 CALL R7 1
+ 0x8C1C0F1A, // 005A GETMET R7 R7 K26
+ 0x5C240200, // 005B MOVE R9 R1
+ 0x5C280400, // 005C MOVE R10 R2
+ 0x5C2C0600, // 005D MOVE R11 R3
+ 0x7C1C0800, // 005E CALL R7 4
+ 0x80040E00, // 005F RET 1 R7
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: update_shadow
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light3_update_shadow, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light3, /* shared constants */
+ be_str_weak(update_shadow),
+ &be_const_str_solidified,
+ ( &(const binstruction[75]) { /* code */
+ 0x8804011B, // 0000 GETMBR R1 R0 K27
+ 0x74060042, // 0001 JMPT R1 #0045
+ 0x8804011C, // 0002 GETMBR R1 R0 K28
+ 0x74060040, // 0003 JMPT R1 #0045
+ 0xA4063A00, // 0004 IMPORT R1 K29
+ 0x60080003, // 0005 GETGBL R2 G3
+ 0x5C0C0000, // 0006 MOVE R3 R0
+ 0x7C080200, // 0007 CALL R2 1
+ 0x8C08051E, // 0008 GETMET R2 R2 K30
+ 0x7C080200, // 0009 CALL R2 1
+ 0x8C08031F, // 000A GETMET R2 R1 K31
+ 0x88100120, // 000B GETMBR R4 R0 K32
+ 0x7C080400, // 000C CALL R2 2
+ 0x4C0C0000, // 000D LDNIL R3
+ 0x200C0403, // 000E NE R3 R2 R3
+ 0x780E0033, // 000F JMPF R3 #0044
+ 0x8C0C0521, // 0010 GETMET R3 R2 K33
+ 0x58140022, // 0011 LDCONST R5 K34
+ 0x4C180000, // 0012 LDNIL R6
+ 0x7C0C0600, // 0013 CALL R3 3
+ 0x8C100521, // 0014 GETMET R4 R2 K33
+ 0x58180023, // 0015 LDCONST R6 K35
+ 0x4C1C0000, // 0016 LDNIL R7
+ 0x7C100600, // 0017 CALL R4 3
+ 0x4C140000, // 0018 LDNIL R5
+ 0x20140605, // 0019 NE R5 R3 R5
+ 0x78160009, // 001A JMPF R5 #0025
+ 0xB8164800, // 001B GETNGBL R5 K36
+ 0x8C140B25, // 001C GETMET R5 R5 K37
+ 0x5C1C0600, // 001D MOVE R7 R3
+ 0x58200005, // 001E LDCONST R8 K5
+ 0x54260167, // 001F LDINT R9 360
+ 0x58280005, // 0020 LDCONST R10 K5
+ 0x542E00FD, // 0021 LDINT R11 254
+ 0x7C140C00, // 0022 CALL R5 6
+ 0x5C0C0A00, // 0023 MOVE R3 R5
+ 0x70020000, // 0024 JMP #0026
+ 0x880C0116, // 0025 GETMBR R3 R0 K22
+ 0x4C140000, // 0026 LDNIL R5
+ 0x20140805, // 0027 NE R5 R4 R5
+ 0x78160009, // 0028 JMPF R5 #0033
+ 0xB8164800, // 0029 GETNGBL R5 K36
+ 0x8C140B25, // 002A GETMET R5 R5 K37
+ 0x5C1C0800, // 002B MOVE R7 R4
+ 0x58200005, // 002C LDCONST R8 K5
+ 0x542600FE, // 002D LDINT R9 255
+ 0x58280005, // 002E LDCONST R10 K5
+ 0x542E00FD, // 002F LDINT R11 254
+ 0x7C140C00, // 0030 CALL R5 6
+ 0x5C100A00, // 0031 MOVE R4 R5
+ 0x70020000, // 0032 JMP #0034
+ 0x88100117, // 0033 GETMBR R4 R0 K23
+ 0x88140116, // 0034 GETMBR R5 R0 K22
+ 0x20140605, // 0035 NE R5 R3 R5
+ 0x78160004, // 0036 JMPF R5 #003C
+ 0x8C140126, // 0037 GETMET R5 R0 K38
+ 0x541E02FF, // 0038 LDINT R7 768
+ 0x58200005, // 0039 LDCONST R8 K5
+ 0x7C140600, // 003A CALL R5 3
+ 0x90022C03, // 003B SETMBR R0 K22 R3
+ 0x88140117, // 003C GETMBR R5 R0 K23
+ 0x20140805, // 003D NE R5 R4 R5
+ 0x78160004, // 003E JMPF R5 #0044
+ 0x8C140126, // 003F GETMET R5 R0 K38
+ 0x541E02FF, // 0040 LDINT R7 768
+ 0x5820000C, // 0041 LDCONST R8 K12
+ 0x7C140600, // 0042 CALL R5 3
+ 0x90022E04, // 0043 SETMBR R0 K23 R4
+ 0x70020004, // 0044 JMP #004A
+ 0x60040003, // 0045 GETGBL R1 G3
+ 0x5C080000, // 0046 MOVE R2 R0
+ 0x7C040200, // 0047 CALL R1 1
+ 0x8C04031E, // 0048 GETMET R1 R1 K30
+ 0x7C040200, // 0049 CALL R1 1
+ 0x80000000, // 004A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: update_virtual
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light3_update_virtual, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light3, /* shared constants */
+ be_str_weak(update_virtual),
+ &be_const_str_solidified,
+ ( &(const binstruction[27]) { /* code */
+ 0x60080009, // 0000 GETGBL R2 G9
+ 0x8C0C0321, // 0001 GETMET R3 R1 K33
+ 0x5814000B, // 0002 LDCONST R5 K11
+ 0x7C0C0400, // 0003 CALL R3 2
+ 0x7C080200, // 0004 CALL R2 1
+ 0x600C0009, // 0005 GETGBL R3 G9
+ 0x8C100321, // 0006 GETMET R4 R1 K33
+ 0x58180010, // 0007 LDCONST R6 K16
+ 0x7C100400, // 0008 CALL R4 2
+ 0x7C0C0200, // 0009 CALL R3 1
+ 0x4C100000, // 000A LDNIL R4
+ 0x20100404, // 000B NE R4 R2 R4
+ 0x74120002, // 000C JMPT R4 #0010
+ 0x4C100000, // 000D LDNIL R4
+ 0x20100604, // 000E NE R4 R3 R4
+ 0x78120003, // 000F JMPF R4 #0014
+ 0x8C100107, // 0010 GETMET R4 R0 K7
+ 0x5C180400, // 0011 MOVE R6 R2
+ 0x5C1C0600, // 0012 MOVE R7 R3
+ 0x7C100600, // 0013 CALL R4 3
+ 0x60100003, // 0014 GETGBL R4 G3
+ 0x5C140000, // 0015 MOVE R5 R0
+ 0x7C100200, // 0016 CALL R4 1
+ 0x8C100927, // 0017 GETMET R4 R4 K39
+ 0x5C180200, // 0018 MOVE R6 R1
+ 0x7C100400, // 0019 CALL R4 2
+ 0x80000000, // 001A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_hue_sat
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light3_set_hue_sat, /* name */
+ be_nested_proto(
+ 11, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light3, /* shared constants */
+ be_str_weak(set_hue_sat),
+ &be_const_str_solidified,
+ ( &(const binstruction[154]) { /* code */
+ 0x4C0C0000, // 0000 LDNIL R3
+ 0x200C0203, // 0001 NE R3 R1 R3
+ 0x780E0006, // 0002 JMPF R3 #000A
+ 0x140C0305, // 0003 LT R3 R1 K5
+ 0x780E0000, // 0004 JMPF R3 #0006
+ 0x58040005, // 0005 LDCONST R1 K5
+ 0x540E00FD, // 0006 LDINT R3 254
+ 0x240C0203, // 0007 GT R3 R1 R3
+ 0x780E0000, // 0008 JMPF R3 #000A
+ 0x540600FD, // 0009 LDINT R1 254
+ 0x4C0C0000, // 000A LDNIL R3
+ 0x200C0403, // 000B NE R3 R2 R3
+ 0x780E0006, // 000C JMPF R3 #0014
+ 0x140C0505, // 000D LT R3 R2 K5
+ 0x780E0000, // 000E JMPF R3 #0010
+ 0x58080005, // 000F LDCONST R2 K5
+ 0x540E00FD, // 0010 LDINT R3 254
+ 0x240C0403, // 0011 GT R3 R2 R3
+ 0x780E0000, // 0012 JMPF R3 #0014
+ 0x540A00FD, // 0013 LDINT R2 254
+ 0x880C011C, // 0014 GETMBR R3 R0 K28
+ 0x780E002C, // 0015 JMPF R3 #0043
+ 0x4C0C0000, // 0016 LDNIL R3
+ 0x200C0203, // 0017 NE R3 R1 R3
+ 0x780E0012, // 0018 JMPF R3 #002C
+ 0xB80E4800, // 0019 GETNGBL R3 K36
+ 0x8C0C0725, // 001A GETMET R3 R3 K37
+ 0x5C140200, // 001B MOVE R5 R1
+ 0x58180005, // 001C LDCONST R6 K5
+ 0x541E00FD, // 001D LDINT R7 254
+ 0x58200005, // 001E LDCONST R8 K5
+ 0x54260167, // 001F LDINT R9 360
+ 0x7C0C0C00, // 0020 CALL R3 6
+ 0x8C100128, // 0021 GETMET R4 R0 K40
+ 0x58180029, // 0022 LDCONST R6 K41
+ 0x5C1C0600, // 0023 MOVE R7 R3
+ 0x7C100600, // 0024 CALL R4 3
+ 0x4C140000, // 0025 LDNIL R5
+ 0x20140805, // 0026 NE R5 R4 R5
+ 0x78160003, // 0027 JMPF R5 #002C
+ 0x8C14012A, // 0028 GETMET R5 R0 K42
+ 0x5C1C0800, // 0029 MOVE R7 R4
+ 0x5422000A, // 002A LDINT R8 11
+ 0x7C140600, // 002B CALL R5 3
+ 0x4C0C0000, // 002C LDNIL R3
+ 0x200C0403, // 002D NE R3 R2 R3
+ 0x780E0012, // 002E JMPF R3 #0042
+ 0xB80E4800, // 002F GETNGBL R3 K36
+ 0x8C0C0725, // 0030 GETMET R3 R3 K37
+ 0x5C140400, // 0031 MOVE R5 R2
+ 0x58180005, // 0032 LDCONST R6 K5
+ 0x541E00FD, // 0033 LDINT R7 254
+ 0x58200005, // 0034 LDCONST R8 K5
+ 0x54260063, // 0035 LDINT R9 100
+ 0x7C0C0C00, // 0036 CALL R3 6
+ 0x8C100128, // 0037 GETMET R4 R0 K40
+ 0x5818002B, // 0038 LDCONST R6 K43
+ 0x5C1C0600, // 0039 MOVE R7 R3
+ 0x7C100600, // 003A CALL R4 3
+ 0x4C140000, // 003B LDNIL R5
+ 0x20140805, // 003C NE R5 R4 R5
+ 0x78160003, // 003D JMPF R5 #0042
+ 0x8C14012A, // 003E GETMET R5 R0 K42
+ 0x5C1C0800, // 003F MOVE R7 R4
+ 0x5422000A, // 0040 LDINT R8 11
+ 0x7C140600, // 0041 CALL R5 3
+ 0x70020055, // 0042 JMP #0099
+ 0x880C011B, // 0043 GETMBR R3 R0 K27
+ 0x780E0016, // 0044 JMPF R3 #005C
+ 0x4C0C0000, // 0045 LDNIL R3
+ 0x200C0203, // 0046 NE R3 R1 R3
+ 0x780E0007, // 0047 JMPF R3 #0050
+ 0x880C0116, // 0048 GETMBR R3 R0 K22
+ 0x200C0203, // 0049 NE R3 R1 R3
+ 0x780E0004, // 004A JMPF R3 #0050
+ 0x8C0C0126, // 004B GETMET R3 R0 K38
+ 0x541602FF, // 004C LDINT R5 768
+ 0x58180005, // 004D LDCONST R6 K5
+ 0x7C0C0600, // 004E CALL R3 3
+ 0x90022C01, // 004F SETMBR R0 K22 R1
+ 0x4C0C0000, // 0050 LDNIL R3
+ 0x200C0403, // 0051 NE R3 R2 R3
+ 0x780E0007, // 0052 JMPF R3 #005B
+ 0x880C0117, // 0053 GETMBR R3 R0 K23
+ 0x200C0403, // 0054 NE R3 R2 R3
+ 0x780E0004, // 0055 JMPF R3 #005B
+ 0x8C0C0126, // 0056 GETMET R3 R0 K38
+ 0x541602FF, // 0057 LDINT R5 768
+ 0x5818000C, // 0058 LDCONST R6 K12
+ 0x7C0C0600, // 0059 CALL R3 3
+ 0x90022E02, // 005A SETMBR R0 K23 R2
+ 0x7002003C, // 005B JMP #0099
+ 0x4C0C0000, // 005C LDNIL R3
+ 0x200C0203, // 005D NE R3 R1 R3
+ 0x780E0008, // 005E JMPF R3 #0068
+ 0xB80E4800, // 005F GETNGBL R3 K36
+ 0x8C0C0725, // 0060 GETMET R3 R3 K37
+ 0x5C140200, // 0061 MOVE R5 R1
+ 0x58180005, // 0062 LDCONST R6 K5
+ 0x541E00FD, // 0063 LDINT R7 254
+ 0x58200005, // 0064 LDCONST R8 K5
+ 0x54260167, // 0065 LDINT R9 360
+ 0x7C0C0C00, // 0066 CALL R3 6
+ 0x70020000, // 0067 JMP #0069
+ 0x4C0C0000, // 0068 LDNIL R3
+ 0x4C100000, // 0069 LDNIL R4
+ 0x20100404, // 006A NE R4 R2 R4
+ 0x78120008, // 006B JMPF R4 #0075
+ 0xB8124800, // 006C GETNGBL R4 K36
+ 0x8C100925, // 006D GETMET R4 R4 K37
+ 0x5C180400, // 006E MOVE R6 R2
+ 0x581C0005, // 006F LDCONST R7 K5
+ 0x542200FD, // 0070 LDINT R8 254
+ 0x58240005, // 0071 LDCONST R9 K5
+ 0x542A00FE, // 0072 LDINT R10 255
+ 0x7C100C00, // 0073 CALL R4 6
+ 0x70020000, // 0074 JMP #0076
+ 0x4C100000, // 0075 LDNIL R4
+ 0x4C140000, // 0076 LDNIL R5
+ 0x20140605, // 0077 NE R5 R3 R5
+ 0x7816000B, // 0078 JMPF R5 #0085
+ 0x4C140000, // 0079 LDNIL R5
+ 0x20140805, // 007A NE R5 R4 R5
+ 0x78160008, // 007B JMPF R5 #0085
+ 0xB8163A00, // 007C GETNGBL R5 K29
+ 0x8C140B18, // 007D GETMET R5 R5 K24
+ 0x601C0013, // 007E GETGBL R7 G19
+ 0x7C1C0000, // 007F CALL R7 0
+ 0x981E4403, // 0080 SETIDX R7 K34 R3
+ 0x981E4604, // 0081 SETIDX R7 K35 R4
+ 0x88200120, // 0082 GETMBR R8 R0 K32
+ 0x7C140600, // 0083 CALL R5 3
+ 0x70020011, // 0084 JMP #0097
+ 0x4C140000, // 0085 LDNIL R5
+ 0x20140605, // 0086 NE R5 R3 R5
+ 0x78160007, // 0087 JMPF R5 #0090
+ 0xB8163A00, // 0088 GETNGBL R5 K29
+ 0x8C140B18, // 0089 GETMET R5 R5 K24
+ 0x601C0013, // 008A GETGBL R7 G19
+ 0x7C1C0000, // 008B CALL R7 0
+ 0x981E4403, // 008C SETIDX R7 K34 R3
+ 0x88200120, // 008D GETMBR R8 R0 K32
+ 0x7C140600, // 008E CALL R5 3
+ 0x70020006, // 008F JMP #0097
+ 0xB8163A00, // 0090 GETNGBL R5 K29
+ 0x8C140B18, // 0091 GETMET R5 R5 K24
+ 0x601C0013, // 0092 GETGBL R7 G19
+ 0x7C1C0000, // 0093 CALL R7 0
+ 0x981E4604, // 0094 SETIDX R7 K35 R4
+ 0x88200120, // 0095 GETMBR R8 R0 K32
+ 0x7C140600, // 0096 CALL R5 3
+ 0x8C14011E, // 0097 GETMET R5 R0 K30
+ 0x7C140200, // 0098 CALL R5 1
+ 0x80000000, // 0099 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light3_init, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light3, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[11]) { /* code */
+ 0x60100003, // 0000 GETGBL R4 G3
+ 0x5C140000, // 0001 MOVE R5 R0
+ 0x7C100200, // 0002 CALL R4 1
+ 0x8C10092C, // 0003 GETMET R4 R4 K44
+ 0x5C180200, // 0004 MOVE R6 R1
+ 0x5C1C0400, // 0005 MOVE R7 R2
+ 0x5C200600, // 0006 MOVE R8 R3
+ 0x7C100800, // 0007 CALL R4 4
+ 0x90022D05, // 0008 SETMBR R0 K22 K5
+ 0x90022F05, // 0009 SETMBR R0 K23 K5
+ 0x80000000, // 000A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_values
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light3_web_values, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light3, /* shared constants */
+ be_str_weak(web_values),
+ &be_const_str_solidified,
+ ( &(const binstruction[16]) { /* code */
+ 0xA4065A00, // 0000 IMPORT R1 K45
+ 0x8C08012E, // 0001 GETMET R2 R0 K46
+ 0x7C080200, // 0002 CALL R2 1
+ 0x8C08032F, // 0003 GETMET R2 R1 K47
+ 0x60100018, // 0004 GETGBL R4 G24
+ 0x58140030, // 0005 LDCONST R5 K48
+ 0x8C180131, // 0006 GETMET R6 R0 K49
+ 0x88200132, // 0007 GETMBR R8 R0 K50
+ 0x7C180400, // 0008 CALL R6 2
+ 0x8C1C0133, // 0009 GETMET R7 R0 K51
+ 0x7C1C0200, // 000A CALL R7 1
+ 0x8C200134, // 000B GETMET R8 R0 K52
+ 0x7C200200, // 000C CALL R8 1
+ 0x7C100800, // 000D CALL R4 4
+ 0x7C080400, // 000E CALL R2 2
+ 0x80000000, // 000F RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_status
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light3_parse_status, /* name */
+ be_nested_proto(
+ 15, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light3, /* shared constants */
+ be_str_weak(parse_status),
+ &be_const_str_solidified,
+ ( &(const binstruction[70]) { /* code */
+ 0x600C0003, // 0000 GETGBL R3 G3
+ 0x5C100000, // 0001 MOVE R4 R0
+ 0x7C0C0200, // 0002 CALL R3 1
+ 0x8C0C072A, // 0003 GETMET R3 R3 K42
+ 0x5C140200, // 0004 MOVE R5 R1
+ 0x5C180400, // 0005 MOVE R6 R2
+ 0x7C0C0600, // 0006 CALL R3 3
+ 0x540E000A, // 0007 LDINT R3 11
+ 0x1C0C0403, // 0008 EQ R3 R2 R3
+ 0x780E003A, // 0009 JMPF R3 #0045
+ 0x8C0C0321, // 000A GETMET R3 R1 K33
+ 0x58140035, // 000B LDCONST R5 K53
+ 0x7C0C0400, // 000C CALL R3 2
+ 0x780E0036, // 000D JMPF R3 #0045
+ 0xA4126C00, // 000E IMPORT R4 K54
+ 0x8C140937, // 000F GETMET R5 R4 K55
+ 0x5C1C0600, // 0010 MOVE R7 R3
+ 0x58200038, // 0011 LDCONST R8 K56
+ 0x7C140600, // 0012 CALL R5 3
+ 0x60180009, // 0013 GETGBL R6 G9
+ 0x941C0B05, // 0014 GETIDX R7 R5 K5
+ 0x7C180200, // 0015 CALL R6 1
+ 0x601C0009, // 0016 GETGBL R7 G9
+ 0x94200B0C, // 0017 GETIDX R8 R5 K12
+ 0x7C1C0200, // 0018 CALL R7 1
+ 0x4C200000, // 0019 LDNIL R8
+ 0x20200C08, // 001A NE R8 R6 R8
+ 0x78220009, // 001B JMPF R8 #0026
+ 0xB8224800, // 001C GETNGBL R8 K36
+ 0x8C201125, // 001D GETMET R8 R8 K37
+ 0x5C280C00, // 001E MOVE R10 R6
+ 0x582C0005, // 001F LDCONST R11 K5
+ 0x54320167, // 0020 LDINT R12 360
+ 0x58340005, // 0021 LDCONST R13 K5
+ 0x543A00FD, // 0022 LDINT R14 254
+ 0x7C200C00, // 0023 CALL R8 6
+ 0x5C181000, // 0024 MOVE R6 R8
+ 0x70020000, // 0025 JMP #0027
+ 0x88180116, // 0026 GETMBR R6 R0 K22
+ 0x4C200000, // 0027 LDNIL R8
+ 0x20200E08, // 0028 NE R8 R7 R8
+ 0x78220009, // 0029 JMPF R8 #0034
+ 0xB8224800, // 002A GETNGBL R8 K36
+ 0x8C201125, // 002B GETMET R8 R8 K37
+ 0x5C280E00, // 002C MOVE R10 R7
+ 0x582C0005, // 002D LDCONST R11 K5
+ 0x54320063, // 002E LDINT R12 100
+ 0x58340005, // 002F LDCONST R13 K5
+ 0x543A00FD, // 0030 LDINT R14 254
+ 0x7C200C00, // 0031 CALL R8 6
+ 0x5C1C1000, // 0032 MOVE R7 R8
+ 0x70020000, // 0033 JMP #0035
+ 0x881C0117, // 0034 GETMBR R7 R0 K23
+ 0x88200116, // 0035 GETMBR R8 R0 K22
+ 0x20200C08, // 0036 NE R8 R6 R8
+ 0x78220004, // 0037 JMPF R8 #003D
+ 0x8C200126, // 0038 GETMET R8 R0 K38
+ 0x542A02FF, // 0039 LDINT R10 768
+ 0x582C0005, // 003A LDCONST R11 K5
+ 0x7C200600, // 003B CALL R8 3
+ 0x90022C06, // 003C SETMBR R0 K22 R6
+ 0x88200117, // 003D GETMBR R8 R0 K23
+ 0x20200E08, // 003E NE R8 R7 R8
+ 0x78220004, // 003F JMPF R8 #0045
+ 0x8C200126, // 0040 GETMET R8 R0 K38
+ 0x542A02FF, // 0041 LDINT R10 768
+ 0x582C000C, // 0042 LDCONST R11 K12
+ 0x7C200600, // 0043 CALL R8 3
+ 0x90022E07, // 0044 SETMBR R0 K23 R7
+ 0x80000000, // 0045 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: web_value_RGB
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Light3_web_value_RGB, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Plugin_Light3, /* shared constants */
+ be_str_weak(web_value_RGB),
+ &be_const_str_solidified,
+ ( &(const binstruction[45]) { /* code */
+ 0x88040116, // 0000 GETMBR R1 R0 K22
+ 0x4C080000, // 0001 LDNIL R2
+ 0x20040202, // 0002 NE R1 R1 R2
+ 0x78060027, // 0003 JMPF R1 #002C
+ 0x88040117, // 0004 GETMBR R1 R0 K23
+ 0x4C080000, // 0005 LDNIL R2
+ 0x20040202, // 0006 NE R1 R1 R2
+ 0x78060023, // 0007 JMPF R1 #002C
+ 0xB8067200, // 0008 GETNGBL R1 K57
+ 0x5808000E, // 0009 LDCONST R2 K14
+ 0x7C040200, // 000A CALL R1 1
+ 0x8C08033A, // 000B GETMET R2 R1 K58
+ 0x541200FE, // 000C LDINT R4 255
+ 0x7C080400, // 000D CALL R2 2
+ 0x8C08033B, // 000E GETMET R2 R1 K59
+ 0xB8124800, // 000F GETNGBL R4 K36
+ 0x8C100925, // 0010 GETMET R4 R4 K37
+ 0x88180116, // 0011 GETMBR R6 R0 K22
+ 0x581C0005, // 0012 LDCONST R7 K5
+ 0x542200FD, // 0013 LDINT R8 254
+ 0x58240005, // 0014 LDCONST R9 K5
+ 0x542A0167, // 0015 LDINT R10 360
+ 0x7C100C00, // 0016 CALL R4 6
+ 0xB8164800, // 0017 GETNGBL R5 K36
+ 0x8C140B25, // 0018 GETMET R5 R5 K37
+ 0x881C0117, // 0019 GETMBR R7 R0 K23
+ 0x58200005, // 001A LDCONST R8 K5
+ 0x542600FD, // 001B LDINT R9 254
+ 0x58280005, // 001C LDCONST R10 K5
+ 0x542E00FE, // 001D LDINT R11 255
+ 0x7C140C00, // 001E CALL R5 6
+ 0x7C080600, // 001F CALL R2 3
+ 0x60080018, // 0020 GETGBL R2 G24
+ 0x580C003C, // 0021 LDCONST R3 K60
+ 0x8810033D, // 0022 GETMBR R4 R1 K61
+ 0x8814033E, // 0023 GETMBR R5 R1 K62
+ 0x8818033F, // 0024 GETMBR R6 R1 K63
+ 0x7C080800, // 0025 CALL R2 4
+ 0x600C0018, // 0026 GETGBL R3 G24
+ 0x58100040, // 0027 LDCONST R4 K64
+ 0x5C140400, // 0028 MOVE R5 R2
+ 0x5C180400, // 0029 MOVE R6 R2
+ 0x7C0C0600, // 002A CALL R3 3
+ 0x80040600, // 002B RET 1 R3
+ 0x80068200, // 002C RET 1 K65
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Light3
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Light1;
+be_local_class(Matter_Plugin_Light3,
+ 2,
+ &be_class_Matter_Plugin_Light1,
+ be_nested_map(18,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(ARG_HINT, 17), be_nested_str_weak(_Not_X20used_) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(light3) },
+ { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(1,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(269, -1), be_const_int(2) },
+ })) ) } )) },
+ { be_const_key_weak(UPDATE_COMMANDS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(4,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_nested_str_weak(Power),
+ be_nested_str_weak(Bri),
+ be_nested_str_weak(Hue),
+ be_nested_str_weak(Sat),
+ })) ) } )) },
+ { be_const_key_weak(shadow_hue, 13), be_const_var(0) },
+ { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Light3_invoke_request_closure) },
+ { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Light3_read_attribute_closure) },
+ { be_const_key_weak(update_shadow, 11), be_const_closure(class_Matter_Plugin_Light3_update_shadow_closure) },
+ { be_const_key_weak(update_virtual, -1), be_const_closure(class_Matter_Plugin_Light3_update_virtual_closure) },
+ { be_const_key_weak(ARG, 0), be_nested_str_weak() },
+ { be_const_key_weak(shadow_sat, -1), be_const_var(1) },
+ { be_const_key_weak(web_value_RGB, -1), be_const_closure(class_Matter_Plugin_Light3_web_value_RGB_closure) },
+ { be_const_key_weak(parse_status, 16), be_const_closure(class_Matter_Plugin_Light3_parse_status_closure) },
+ { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(8,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(8, 7), be_const_bytes_instance(000000020003000F0011FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(57, -1), be_const_bytes_instance(00030005000A000F00110012FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(29, -1), be_const_bytes_instance(0000000100020003FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(3, -1), be_const_bytes_instance(00000001FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(4, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(5, 2), be_const_bytes_instance(000000010002000300040005FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(6, -1), be_const_bytes_instance(0000FFF8FFF9FFFAFFFBFFFCFFFD) },
+ { be_const_key_int(768, -1), be_const_bytes_instance(0000000100070008000F4001400AFFF8FFF9FFFAFFFBFFFCFFFD) },
+ })) ) } )) },
+ { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Light3_web_values_closure) },
+ { be_const_key_weak(set_hue_sat, 12), be_const_closure(class_Matter_Plugin_Light3_set_hue_sat_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Light3_init_closure) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X203_X20RGB) },
+ })),
+ be_str_weak(Matter_Plugin_Light3)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light2.h
deleted file mode 100644
index 8015c80ee..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light2.h
+++ /dev/null
@@ -1,669 +0,0 @@
-/* Solidification of Matter_Plugin_5_Bridge_Light2.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_Bridge_Light2;
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light2;
-be_local_closure(class_Matter_Plugin_Bridge_Light2_init, /* name */
- be_nested_proto(
- 9, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light2,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(update_ct_minmax),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[11]) { /* code */
- 0x60100003, // 0000 GETGBL R4 G3
- 0x5C140000, // 0001 MOVE R5 R0
- 0x7C100200, // 0002 CALL R4 1
- 0x8C100900, // 0003 GETMET R4 R4 K0
- 0x5C180200, // 0004 MOVE R6 R1
- 0x5C1C0400, // 0005 MOVE R7 R2
- 0x5C200600, // 0006 MOVE R8 R3
- 0x7C100800, // 0007 CALL R4 4
- 0x8C100101, // 0008 GETMET R4 R0 K1
- 0x7C100200, // 0009 CALL R4 1
- 0x80000000, // 000A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_update
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light2;
-be_local_closure(class_Matter_Plugin_Bridge_Light2_parse_update, /* name */
- be_nested_proto(
- 8, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light2,
- 1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(parse_update),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(CT),
- /* K3 */ be_nested_str_weak(shadow_ct),
- /* K4 */ be_nested_str_weak(ct_min),
- /* K5 */ be_nested_str_weak(ct_max),
- /* K6 */ be_nested_str_weak(attribute_updated),
- }),
- be_str_weak(parse_update),
- &be_const_str_solidified,
- ( &(const binstruction[35]) { /* code */
- 0x600C0003, // 0000 GETGBL R3 G3
- 0x5C100000, // 0001 MOVE R4 R0
- 0x7C0C0200, // 0002 CALL R3 1
- 0x8C0C0700, // 0003 GETMET R3 R3 K0
- 0x5C140200, // 0004 MOVE R5 R1
- 0x5C180400, // 0005 MOVE R6 R2
- 0x7C0C0600, // 0006 CALL R3 3
- 0x540E000A, // 0007 LDINT R3 11
- 0x1C0C0403, // 0008 EQ R3 R2 R3
- 0x780E0017, // 0009 JMPF R3 #0022
- 0x600C0009, // 000A GETGBL R3 G9
- 0x8C100301, // 000B GETMET R4 R1 K1
- 0x58180002, // 000C LDCONST R6 K2
- 0x7C100400, // 000D CALL R4 2
- 0x7C0C0200, // 000E CALL R3 1
- 0x4C100000, // 000F LDNIL R4
- 0x20100604, // 0010 NE R4 R3 R4
- 0x7812000F, // 0011 JMPF R4 #0022
- 0x88100103, // 0012 GETMBR R4 R0 K3
- 0x20100604, // 0013 NE R4 R3 R4
- 0x7812000C, // 0014 JMPF R4 #0022
- 0x88100104, // 0015 GETMBR R4 R0 K4
- 0x14100604, // 0016 LT R4 R3 R4
- 0x78120000, // 0017 JMPF R4 #0019
- 0x880C0104, // 0018 GETMBR R3 R0 K4
- 0x88100105, // 0019 GETMBR R4 R0 K5
- 0x24100604, // 001A GT R4 R3 R4
- 0x78120000, // 001B JMPF R4 #001D
- 0x880C0105, // 001C GETMBR R3 R0 K5
- 0x8C100106, // 001D GETMET R4 R0 K6
- 0x541A02FF, // 001E LDINT R6 768
- 0x541E0006, // 001F LDINT R7 7
- 0x7C100600, // 0020 CALL R4 3
- 0x90020603, // 0021 SETMBR R0 K3 R3
- 0x80000000, // 0022 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_values
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light2;
-be_local_closure(class_Matter_Plugin_Bridge_Light2_web_values, /* name */
- be_nested_proto(
- 10, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light2,
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(web_values_prefix),
- /* K2 */ be_nested_str_weak(content_send),
- /* K3 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s),
- /* K4 */ be_nested_str_weak(web_value_onoff),
- /* K5 */ be_nested_str_weak(shadow_onoff),
- /* K6 */ be_nested_str_weak(web_value_dimmer),
- /* K7 */ be_nested_str_weak(web_value_ct),
- }),
- be_str_weak(web_values),
- &be_const_str_solidified,
- ( &(const binstruction[16]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x8C080302, // 0003 GETMET R2 R1 K2
- 0x60100018, // 0004 GETGBL R4 G24
- 0x58140003, // 0005 LDCONST R5 K3
- 0x8C180104, // 0006 GETMET R6 R0 K4
- 0x88200105, // 0007 GETMBR R8 R0 K5
- 0x7C180400, // 0008 CALL R6 2
- 0x8C1C0106, // 0009 GETMET R7 R0 K6
- 0x7C1C0200, // 000A CALL R7 1
- 0x8C200107, // 000B GETMET R8 R0 K7
- 0x7C200200, // 000C CALL R8 1
- 0x7C100800, // 000D CALL R4 4
- 0x7C080400, // 000E CALL R2 2
- 0x80000000, // 000F RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_value_ct
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light2;
-be_local_closure(class_Matter_Plugin_Bridge_Light2_web_value_ct, /* name */
- be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light2,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(),
- /* K1 */ be_nested_str_weak(shadow_ct),
- /* K2 */ be_const_int(1000000),
- /* K3 */ be_nested_str_weak(_X25iK),
- /* K4 */ be_nested_str_weak(_X26_X239898_X3B_X20),
- }),
- be_str_weak(web_value_ct),
- &be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x4C0C0000, // 0002 LDNIL R3
- 0x20080403, // 0003 NE R2 R2 R3
- 0x780A000C, // 0004 JMPF R2 #0012
- 0x88080101, // 0005 GETMBR R2 R0 K1
- 0x0C0A0402, // 0006 DIV R2 K2 R2
- 0x540E0018, // 0007 LDINT R3 25
- 0x00080403, // 0008 ADD R2 R2 R3
- 0x540E0031, // 0009 LDINT R3 50
- 0x0C080403, // 000A DIV R2 R2 R3
- 0x540E0031, // 000B LDINT R3 50
- 0x08080403, // 000C MUL R2 R2 R3
- 0x600C0018, // 000D GETGBL R3 G24
- 0x58100003, // 000E LDCONST R4 K3
- 0x5C140400, // 000F MOVE R5 R2
- 0x7C0C0400, // 0010 CALL R3 2
- 0x5C040600, // 0011 MOVE R1 R3
- 0x000A0801, // 0012 ADD R2 K4 R1
- 0x80040400, // 0013 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_ct
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light2;
-be_local_closure(class_Matter_Plugin_Bridge_Light2_set_ct, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light2,
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(call_remote_sync),
- /* K1 */ be_nested_str_weak(CT),
- /* K2 */ be_nested_str_weak(parse_update),
- }),
- be_str_weak(set_ct),
- &be_const_str_solidified,
- ( &(const binstruction[14]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
- 0x58100001, // 0001 LDCONST R4 K1
- 0x60140008, // 0002 GETGBL R5 G8
- 0x5C180200, // 0003 MOVE R6 R1
- 0x7C140200, // 0004 CALL R5 1
- 0x7C080600, // 0005 CALL R2 3
- 0x4C0C0000, // 0006 LDNIL R3
- 0x200C0403, // 0007 NE R3 R2 R3
- 0x780E0003, // 0008 JMPF R3 #000D
- 0x8C0C0102, // 0009 GETMET R3 R0 K2
- 0x5C140400, // 000A MOVE R5 R2
- 0x541A000A, // 000B LDINT R6 11
- 0x7C0C0600, // 000C CALL R3 3
- 0x80000000, // 000D RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: invoke_request
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light2;
-be_local_closure(class_Matter_Plugin_Bridge_Light2_invoke_request, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light2,
- 1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(command),
- /* K4 */ be_nested_str_weak(findsubval),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(ct_min),
- /* K7 */ be_nested_str_weak(ct_max),
- /* K8 */ be_nested_str_weak(set_ct),
- /* K9 */ be_nested_str_weak(log),
- /* K10 */ be_nested_str_weak(ct_X3A),
- /* K11 */ be_nested_str_weak(publish_command),
- /* K12 */ be_nested_str_weak(CT),
- /* K13 */ be_nested_str_weak(invoke_request),
- }),
- be_str_weak(invoke_request),
- &be_const_str_solidified,
- ( &(const binstruction[64]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140702, // 0002 GETMBR R5 R3 K2
- 0x88180703, // 0003 GETMBR R6 R3 K3
- 0x541E02FF, // 0004 LDINT R7 768
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E002E, // 0006 JMPF R7 #0036
- 0x541E0009, // 0007 LDINT R7 10
- 0x1C1C0C07, // 0008 EQ R7 R6 R7
- 0x781E0019, // 0009 JMPF R7 #0024
- 0x8C1C0504, // 000A GETMET R7 R2 K4
- 0x58240005, // 000B LDCONST R9 K5
- 0x7C1C0400, // 000C CALL R7 2
- 0x88200106, // 000D GETMBR R8 R0 K6
- 0x14200E08, // 000E LT R8 R7 R8
- 0x78220000, // 000F JMPF R8 #0011
- 0x881C0106, // 0010 GETMBR R7 R0 K6
- 0x88200107, // 0011 GETMBR R8 R0 K7
- 0x24200E08, // 0012 GT R8 R7 R8
- 0x78220000, // 0013 JMPF R8 #0015
- 0x881C0107, // 0014 GETMBR R7 R0 K7
- 0x8C200108, // 0015 GETMET R8 R0 K8
- 0x5C280E00, // 0016 MOVE R10 R7
- 0x7C200400, // 0017 CALL R8 2
- 0x60200008, // 0018 GETGBL R8 G8
- 0x5C240E00, // 0019 MOVE R9 R7
- 0x7C200200, // 001A CALL R8 1
- 0x00221408, // 001B ADD R8 K10 R8
- 0x900E1208, // 001C SETMBR R3 K9 R8
- 0x8C20010B, // 001D GETMET R8 R0 K11
- 0x5828000C, // 001E LDCONST R10 K12
- 0x5C2C0E00, // 001F MOVE R11 R7
- 0x7C200600, // 0020 CALL R8 3
- 0x50200200, // 0021 LDBOOL R8 1 0
- 0x80041000, // 0022 RET 1 R8
- 0x70020010, // 0023 JMP #0035
- 0x541E0046, // 0024 LDINT R7 71
- 0x1C1C0C07, // 0025 EQ R7 R6 R7
- 0x781E0002, // 0026 JMPF R7 #002A
- 0x501C0200, // 0027 LDBOOL R7 1 0
- 0x80040E00, // 0028 RET 1 R7
- 0x7002000A, // 0029 JMP #0035
- 0x541E004A, // 002A LDINT R7 75
- 0x1C1C0C07, // 002B EQ R7 R6 R7
- 0x781E0002, // 002C JMPF R7 #0030
- 0x501C0200, // 002D LDBOOL R7 1 0
- 0x80040E00, // 002E RET 1 R7
- 0x70020004, // 002F JMP #0035
- 0x541E004B, // 0030 LDINT R7 76
- 0x1C1C0C07, // 0031 EQ R7 R6 R7
- 0x781E0001, // 0032 JMPF R7 #0035
- 0x501C0200, // 0033 LDBOOL R7 1 0
- 0x80040E00, // 0034 RET 1 R7
- 0x70020008, // 0035 JMP #003F
- 0x601C0003, // 0036 GETGBL R7 G3
- 0x5C200000, // 0037 MOVE R8 R0
- 0x7C1C0200, // 0038 CALL R7 1
- 0x8C1C0F0D, // 0039 GETMET R7 R7 K13
- 0x5C240200, // 003A MOVE R9 R1
- 0x5C280400, // 003B MOVE R10 R2
- 0x5C2C0600, // 003C MOVE R11 R3
- 0x7C1C0800, // 003D CALL R7 4
- 0x80040E00, // 003E RET 1 R7
- 0x80000000, // 003F RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light2;
-be_local_closure(class_Matter_Plugin_Bridge_Light2_read_attribute, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light2,
- 1, /* has constants */
- ( &(const bvalue[15]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_nested_str_weak(update_shadow_lazy),
- /* K5 */ be_nested_str_weak(shadow_ct),
- /* K6 */ be_nested_str_weak(set),
- /* K7 */ be_nested_str_weak(U1),
- /* K8 */ be_nested_str_weak(NULL),
- /* K9 */ be_const_int(2),
- /* K10 */ be_const_int(0),
- /* K11 */ be_nested_str_weak(ct_min),
- /* K12 */ be_nested_str_weak(ct_max),
- /* K13 */ be_nested_str_weak(U4),
- /* K14 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[81]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E02FF, // 0004 LDINT R7 768
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0040, // 0006 JMPF R7 #0048
- 0x8C1C0104, // 0007 GETMET R7 R0 K4
- 0x7C1C0200, // 0008 CALL R7 1
- 0x541E0006, // 0009 LDINT R7 7
- 0x1C1C0C07, // 000A EQ R7 R6 R7
- 0x781E000F, // 000B JMPF R7 #001C
- 0x881C0105, // 000C GETMBR R7 R0 K5
- 0x4C200000, // 000D LDNIL R8
- 0x201C0E08, // 000E NE R7 R7 R8
- 0x781E0005, // 000F JMPF R7 #0016
- 0x8C1C0706, // 0010 GETMET R7 R3 K6
- 0x88240907, // 0011 GETMBR R9 R4 K7
- 0x88280105, // 0012 GETMBR R10 R0 K5
- 0x7C1C0600, // 0013 CALL R7 3
- 0x80040E00, // 0014 RET 1 R7
- 0x70020004, // 0015 JMP #001B
- 0x8C1C0706, // 0016 GETMET R7 R3 K6
- 0x88240908, // 0017 GETMBR R9 R4 K8
- 0x4C280000, // 0018 LDNIL R10
- 0x7C1C0600, // 0019 CALL R7 3
- 0x80040E00, // 001A RET 1 R7
- 0x7002002B, // 001B JMP #0048
- 0x541E0007, // 001C LDINT R7 8
- 0x1C1C0C07, // 001D EQ R7 R6 R7
- 0x781E0005, // 001E JMPF R7 #0025
- 0x8C1C0706, // 001F GETMET R7 R3 K6
- 0x88240907, // 0020 GETMBR R9 R4 K7
- 0x58280009, // 0021 LDCONST R10 K9
- 0x7C1C0600, // 0022 CALL R7 3
- 0x80040E00, // 0023 RET 1 R7
- 0x70020022, // 0024 JMP #0048
- 0x541E000E, // 0025 LDINT R7 15
- 0x1C1C0C07, // 0026 EQ R7 R6 R7
- 0x781E0005, // 0027 JMPF R7 #002E
- 0x8C1C0706, // 0028 GETMET R7 R3 K6
- 0x88240907, // 0029 GETMBR R9 R4 K7
- 0x5828000A, // 002A LDCONST R10 K10
- 0x7C1C0600, // 002B CALL R7 3
- 0x80040E00, // 002C RET 1 R7
- 0x70020019, // 002D JMP #0048
- 0x541E400A, // 002E LDINT R7 16395
- 0x1C1C0C07, // 002F EQ R7 R6 R7
- 0x781E0005, // 0030 JMPF R7 #0037
- 0x8C1C0706, // 0031 GETMET R7 R3 K6
- 0x88240907, // 0032 GETMBR R9 R4 K7
- 0x8828010B, // 0033 GETMBR R10 R0 K11
- 0x7C1C0600, // 0034 CALL R7 3
- 0x80040E00, // 0035 RET 1 R7
- 0x70020010, // 0036 JMP #0048
- 0x541E400B, // 0037 LDINT R7 16396
- 0x1C1C0C07, // 0038 EQ R7 R6 R7
- 0x781E0005, // 0039 JMPF R7 #0040
- 0x8C1C0706, // 003A GETMET R7 R3 K6
- 0x88240907, // 003B GETMBR R9 R4 K7
- 0x8828010C, // 003C GETMBR R10 R0 K12
- 0x7C1C0600, // 003D CALL R7 3
- 0x80040E00, // 003E RET 1 R7
- 0x70020007, // 003F JMP #0048
- 0x541E4009, // 0040 LDINT R7 16394
- 0x1C1C0C07, // 0041 EQ R7 R6 R7
- 0x781E0004, // 0042 JMPF R7 #0048
- 0x8C1C0706, // 0043 GETMET R7 R3 K6
- 0x8824090D, // 0044 GETMBR R9 R4 K13
- 0x542A000F, // 0045 LDINT R10 16
- 0x7C1C0600, // 0046 CALL R7 3
- 0x80040E00, // 0047 RET 1 R7
- 0x601C0003, // 0048 GETGBL R7 G3
- 0x5C200000, // 0049 MOVE R8 R0
- 0x7C1C0200, // 004A CALL R7 1
- 0x8C1C0F0E, // 004B GETMET R7 R7 K14
- 0x5C240200, // 004C MOVE R9 R1
- 0x5C280400, // 004D MOVE R10 R2
- 0x5C2C0600, // 004E MOVE R11 R3
- 0x7C1C0800, // 004F CALL R7 4
- 0x80040E00, // 0050 RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update_ct_minmax
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light2;
-be_local_closure(class_Matter_Plugin_Bridge_Light2_update_ct_minmax, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light2,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(get_option),
- /* K2 */ be_nested_str_weak(ct_min),
- /* K3 */ be_nested_str_weak(ct_max),
- }),
- be_str_weak(update_ct_minmax),
- &be_const_str_solidified,
- ( &(const binstruction[15]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x540E0051, // 0002 LDINT R3 82
- 0x7C040400, // 0003 CALL R1 2
- 0x78060001, // 0004 JMPF R1 #0007
- 0x540A00C7, // 0005 LDINT R2 200
- 0x70020000, // 0006 JMP #0008
- 0x540A0098, // 0007 LDINT R2 153
- 0x90020402, // 0008 SETMBR R0 K2 R2
- 0x78060001, // 0009 JMPF R1 #000C
- 0x540A017B, // 000A LDINT R2 380
- 0x70020000, // 000B JMP #000D
- 0x540A01F3, // 000C LDINT R2 500
- 0x90020602, // 000D SETMBR R0 K3 R2
- 0x80000000, // 000E RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Bridge_Light2
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light1;
-be_local_class(Matter_Plugin_Bridge_Light2,
- 3,
- &be_class_Matter_Plugin_Bridge_Light1,
- be_nested_map(15,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(init, -1), be_const_closure(class_Matter_Plugin_Bridge_Light2_init_closure) },
- { be_const_key_weak(parse_update, 9), be_const_closure(class_Matter_Plugin_Bridge_Light2_parse_update_closure) },
- { be_const_key_weak(web_values, 11), be_const_closure(class_Matter_Plugin_Bridge_Light2_web_values_closure) },
- { be_const_key_weak(ct_max, -1), be_const_var(2) },
- { be_const_key_weak(CLUSTERS, 14), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(8,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(8, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(11,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(2),
- be_const_int(3),
- be_const_int(15),
- be_const_int(17),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(5, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(768, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(7),
- be_const_int(8),
- be_const_int(15),
- be_const_int(16394),
- be_const_int(16395),
- be_const_int(16396),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- })) ) } )) },
- { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(268, -1), be_const_int(2) },
- })) ) } )) },
- { be_const_key_weak(web_value_ct, 8), be_const_closure(class_Matter_Plugin_Bridge_Light2_web_value_ct_closure) },
- { be_const_key_weak(set_ct, -1), be_const_closure(class_Matter_Plugin_Bridge_Light2_set_ct_closure) },
- { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X202_X20CT) },
- { be_const_key_weak(shadow_ct, -1), be_const_var(0) },
- { be_const_key_weak(update_ct_minmax, -1), be_const_closure(class_Matter_Plugin_Bridge_Light2_update_ct_minmax_closure) },
- { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Bridge_Light2_invoke_request_closure) },
- { be_const_key_weak(read_attribute, 10), be_const_closure(class_Matter_Plugin_Bridge_Light2_read_attribute_closure) },
- { be_const_key_weak(ct_min, -1), be_const_var(1) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_light2) },
- })),
- be_str_weak(Matter_Plugin_Bridge_Light2)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light3.h
deleted file mode 100644
index 303f3ecc7..000000000
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_5_Bridge_Light3.h
+++ /dev/null
@@ -1,843 +0,0 @@
-/* Solidification of Matter_Plugin_5_Bridge_Light3.h */
-/********************************************************************\
-* Generated code, don't edit *
-\********************************************************************/
-#include "be_constobj.h"
-
-extern const bclass be_class_Matter_Plugin_Bridge_Light3;
-
-/********************************************************************
-** Solidified function: set_sat
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light3;
-be_local_closure(class_Matter_Plugin_Bridge_Light3_set_sat, /* name */
- be_nested_proto(
- 9, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light3,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(scale_uint),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(call_remote_sync),
- /* K4 */ be_nested_str_weak(HSBColor2),
- /* K5 */ be_nested_str_weak(parse_update),
- }),
- be_str_weak(set_sat),
- &be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
- 0xB80A0000, // 0000 GETNGBL R2 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100200, // 0002 MOVE R4 R1
- 0x58140002, // 0003 LDCONST R5 K2
- 0x541A00FD, // 0004 LDINT R6 254
- 0x581C0002, // 0005 LDCONST R7 K2
- 0x54220063, // 0006 LDINT R8 100
- 0x7C080C00, // 0007 CALL R2 6
- 0x8C0C0103, // 0008 GETMET R3 R0 K3
- 0x58140004, // 0009 LDCONST R5 K4
- 0x5C180400, // 000A MOVE R6 R2
- 0x7C0C0600, // 000B CALL R3 3
- 0x4C100000, // 000C LDNIL R4
- 0x20100604, // 000D NE R4 R3 R4
- 0x78120003, // 000E JMPF R4 #0013
- 0x8C100105, // 000F GETMET R4 R0 K5
- 0x5C180600, // 0010 MOVE R6 R3
- 0x541E000A, // 0011 LDINT R7 11
- 0x7C100600, // 0012 CALL R4 3
- 0x80000000, // 0013 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: parse_update
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light3;
-be_local_closure(class_Matter_Plugin_Bridge_Light3_parse_update, /* name */
- be_nested_proto(
- 15, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light3,
- 1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(parse_update),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(HSBColor),
- /* K3 */ be_nested_str_weak(string),
- /* K4 */ be_nested_str_weak(split),
- /* K5 */ be_nested_str_weak(_X2C),
- /* K6 */ be_const_int(0),
- /* K7 */ be_const_int(1),
- /* K8 */ be_nested_str_weak(tasmota),
- /* K9 */ be_nested_str_weak(scale_uint),
- /* K10 */ be_nested_str_weak(shadow_hue),
- /* K11 */ be_nested_str_weak(shadow_sat),
- /* K12 */ be_nested_str_weak(attribute_updated),
- }),
- be_str_weak(parse_update),
- &be_const_str_solidified,
- ( &(const binstruction[70]) { /* code */
- 0x600C0003, // 0000 GETGBL R3 G3
- 0x5C100000, // 0001 MOVE R4 R0
- 0x7C0C0200, // 0002 CALL R3 1
- 0x8C0C0700, // 0003 GETMET R3 R3 K0
- 0x5C140200, // 0004 MOVE R5 R1
- 0x5C180400, // 0005 MOVE R6 R2
- 0x7C0C0600, // 0006 CALL R3 3
- 0x540E000A, // 0007 LDINT R3 11
- 0x1C0C0403, // 0008 EQ R3 R2 R3
- 0x780E003A, // 0009 JMPF R3 #0045
- 0x8C0C0301, // 000A GETMET R3 R1 K1
- 0x58140002, // 000B LDCONST R5 K2
- 0x7C0C0400, // 000C CALL R3 2
- 0x780E0036, // 000D JMPF R3 #0045
- 0xA4120600, // 000E IMPORT R4 K3
- 0x8C140904, // 000F GETMET R5 R4 K4
- 0x5C1C0600, // 0010 MOVE R7 R3
- 0x58200005, // 0011 LDCONST R8 K5
- 0x7C140600, // 0012 CALL R5 3
- 0x60180009, // 0013 GETGBL R6 G9
- 0x941C0B06, // 0014 GETIDX R7 R5 K6
- 0x7C180200, // 0015 CALL R6 1
- 0x601C0009, // 0016 GETGBL R7 G9
- 0x94200B07, // 0017 GETIDX R8 R5 K7
- 0x7C1C0200, // 0018 CALL R7 1
- 0x4C200000, // 0019 LDNIL R8
- 0x20200C08, // 001A NE R8 R6 R8
- 0x78220009, // 001B JMPF R8 #0026
- 0xB8221000, // 001C GETNGBL R8 K8
- 0x8C201109, // 001D GETMET R8 R8 K9
- 0x5C280C00, // 001E MOVE R10 R6
- 0x582C0006, // 001F LDCONST R11 K6
- 0x54320167, // 0020 LDINT R12 360
- 0x58340006, // 0021 LDCONST R13 K6
- 0x543A00FD, // 0022 LDINT R14 254
- 0x7C200C00, // 0023 CALL R8 6
- 0x5C181000, // 0024 MOVE R6 R8
- 0x70020000, // 0025 JMP #0027
- 0x8818010A, // 0026 GETMBR R6 R0 K10
- 0x4C200000, // 0027 LDNIL R8
- 0x20200E08, // 0028 NE R8 R7 R8
- 0x78220009, // 0029 JMPF R8 #0034
- 0xB8221000, // 002A GETNGBL R8 K8
- 0x8C201109, // 002B GETMET R8 R8 K9
- 0x5C280E00, // 002C MOVE R10 R7
- 0x582C0006, // 002D LDCONST R11 K6
- 0x54320063, // 002E LDINT R12 100
- 0x58340006, // 002F LDCONST R13 K6
- 0x543A00FD, // 0030 LDINT R14 254
- 0x7C200C00, // 0031 CALL R8 6
- 0x5C1C1000, // 0032 MOVE R7 R8
- 0x70020000, // 0033 JMP #0035
- 0x881C010B, // 0034 GETMBR R7 R0 K11
- 0x8820010A, // 0035 GETMBR R8 R0 K10
- 0x20200C08, // 0036 NE R8 R6 R8
- 0x78220004, // 0037 JMPF R8 #003D
- 0x8C20010C, // 0038 GETMET R8 R0 K12
- 0x542A02FF, // 0039 LDINT R10 768
- 0x582C0006, // 003A LDCONST R11 K6
- 0x7C200600, // 003B CALL R8 3
- 0x90021406, // 003C SETMBR R0 K10 R6
- 0x8820010B, // 003D GETMBR R8 R0 K11
- 0x20200E08, // 003E NE R8 R7 R8
- 0x78220004, // 003F JMPF R8 #0045
- 0x8C20010C, // 0040 GETMET R8 R0 K12
- 0x542A02FF, // 0041 LDINT R10 768
- 0x582C0007, // 0042 LDCONST R11 K7
- 0x7C200600, // 0043 CALL R8 3
- 0x90021607, // 0044 SETMBR R0 K11 R7
- 0x80000000, // 0045 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_values
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light3;
-be_local_closure(class_Matter_Plugin_Bridge_Light3_web_values, /* name */
- be_nested_proto(
- 10, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light3,
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(web_values_prefix),
- /* K2 */ be_nested_str_weak(content_send),
- /* K3 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s),
- /* K4 */ be_nested_str_weak(web_value_onoff),
- /* K5 */ be_nested_str_weak(shadow_onoff),
- /* K6 */ be_nested_str_weak(web_value_dimmer),
- /* K7 */ be_nested_str_weak(web_value_RGB),
- }),
- be_str_weak(web_values),
- &be_const_str_solidified,
- ( &(const binstruction[16]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x8C080302, // 0003 GETMET R2 R1 K2
- 0x60100018, // 0004 GETGBL R4 G24
- 0x58140003, // 0005 LDCONST R5 K3
- 0x8C180104, // 0006 GETMET R6 R0 K4
- 0x88200105, // 0007 GETMBR R8 R0 K5
- 0x7C180400, // 0008 CALL R6 2
- 0x8C1C0106, // 0009 GETMET R7 R0 K6
- 0x7C1C0200, // 000A CALL R7 1
- 0x8C200107, // 000B GETMET R8 R0 K7
- 0x7C200200, // 000C CALL R8 1
- 0x7C100800, // 000D CALL R4 4
- 0x7C080400, // 000E CALL R2 2
- 0x80000000, // 000F RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: web_value_RGB
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light3;
-be_local_closure(class_Matter_Plugin_Bridge_Light3_web_value_RGB, /* name */
- be_nested_proto(
- 12, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light3,
- 1, /* has constants */
- ( &(const bvalue[15]) { /* constants */
- /* K0 */ be_nested_str_weak(shadow_hue),
- /* K1 */ be_nested_str_weak(shadow_sat),
- /* K2 */ be_nested_str_weak(light_state),
- /* K3 */ be_const_int(3),
- /* K4 */ be_nested_str_weak(set_bri),
- /* K5 */ be_nested_str_weak(set_huesat),
- /* K6 */ be_nested_str_weak(tasmota),
- /* K7 */ be_nested_str_weak(scale_uint),
- /* K8 */ be_const_int(0),
- /* K9 */ be_nested_str_weak(_X23_X2502X_X2502X_X2502X),
- /* K10 */ be_nested_str_weak(r),
- /* K11 */ be_nested_str_weak(g),
- /* K12 */ be_nested_str_weak(b),
- /* K13 */ be_nested_str_weak(_X3Ci_X20class_X3D_X22bxm_X22_X20style_X3D_X22_X2D_X2Dcl_X3A_X25s_X22_X3E_X3C_X2Fi_X3E_X25s),
- /* K14 */ be_nested_str_weak(),
- }),
- be_str_weak(web_value_RGB),
- &be_const_str_solidified,
- ( &(const binstruction[45]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x4C080000, // 0001 LDNIL R2
- 0x20040202, // 0002 NE R1 R1 R2
- 0x78060027, // 0003 JMPF R1 #002C
- 0x88040101, // 0004 GETMBR R1 R0 K1
- 0x4C080000, // 0005 LDNIL R2
- 0x20040202, // 0006 NE R1 R1 R2
- 0x78060023, // 0007 JMPF R1 #002C
- 0xB8060400, // 0008 GETNGBL R1 K2
- 0x58080003, // 0009 LDCONST R2 K3
- 0x7C040200, // 000A CALL R1 1
- 0x8C080304, // 000B GETMET R2 R1 K4
- 0x541200FE, // 000C LDINT R4 255
- 0x7C080400, // 000D CALL R2 2
- 0x8C080305, // 000E GETMET R2 R1 K5
- 0xB8120C00, // 000F GETNGBL R4 K6
- 0x8C100907, // 0010 GETMET R4 R4 K7
- 0x88180100, // 0011 GETMBR R6 R0 K0
- 0x581C0008, // 0012 LDCONST R7 K8
- 0x542200FD, // 0013 LDINT R8 254
- 0x58240008, // 0014 LDCONST R9 K8
- 0x542A0167, // 0015 LDINT R10 360
- 0x7C100C00, // 0016 CALL R4 6
- 0xB8160C00, // 0017 GETNGBL R5 K6
- 0x8C140B07, // 0018 GETMET R5 R5 K7
- 0x881C0101, // 0019 GETMBR R7 R0 K1
- 0x58200008, // 001A LDCONST R8 K8
- 0x542600FD, // 001B LDINT R9 254
- 0x58280008, // 001C LDCONST R10 K8
- 0x542E00FE, // 001D LDINT R11 255
- 0x7C140C00, // 001E CALL R5 6
- 0x7C080600, // 001F CALL R2 3
- 0x60080018, // 0020 GETGBL R2 G24
- 0x580C0009, // 0021 LDCONST R3 K9
- 0x8810030A, // 0022 GETMBR R4 R1 K10
- 0x8814030B, // 0023 GETMBR R5 R1 K11
- 0x8818030C, // 0024 GETMBR R6 R1 K12
- 0x7C080800, // 0025 CALL R2 4
- 0x600C0018, // 0026 GETGBL R3 G24
- 0x5810000D, // 0027 LDCONST R4 K13
- 0x5C140400, // 0028 MOVE R5 R2
- 0x5C180400, // 0029 MOVE R6 R2
- 0x7C0C0600, // 002A CALL R3 3
- 0x80040600, // 002B RET 1 R3
- 0x80061C00, // 002C RET 1 K14
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_attribute
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light3;
-be_local_closure(class_Matter_Plugin_Bridge_Light3_read_attribute, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light3,
- 1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(attribute),
- /* K4 */ be_nested_str_weak(update_shadow_lazy),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(shadow_hue),
- /* K7 */ be_nested_str_weak(set),
- /* K8 */ be_nested_str_weak(U1),
- /* K9 */ be_nested_str_weak(NULL),
- /* K10 */ be_const_int(1),
- /* K11 */ be_nested_str_weak(shadow_sat),
- /* K12 */ be_nested_str_weak(U4),
- /* K13 */ be_nested_str_weak(read_attribute),
- }),
- be_str_weak(read_attribute),
- &be_const_str_solidified,
- ( &(const binstruction[107]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140502, // 0002 GETMBR R5 R2 K2
- 0x88180503, // 0003 GETMBR R6 R2 K3
- 0x541E02FF, // 0004 LDINT R7 768
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E005A, // 0006 JMPF R7 #0062
- 0x8C1C0104, // 0007 GETMET R7 R0 K4
- 0x7C1C0200, // 0008 CALL R7 1
- 0x1C1C0D05, // 0009 EQ R7 R6 K5
- 0x781E000F, // 000A JMPF R7 #001B
- 0x881C0106, // 000B GETMBR R7 R0 K6
- 0x4C200000, // 000C LDNIL R8
- 0x201C0E08, // 000D NE R7 R7 R8
- 0x781E0005, // 000E JMPF R7 #0015
- 0x8C1C0707, // 000F GETMET R7 R3 K7
- 0x88240908, // 0010 GETMBR R9 R4 K8
- 0x88280106, // 0011 GETMBR R10 R0 K6
- 0x7C1C0600, // 0012 CALL R7 3
- 0x80040E00, // 0013 RET 1 R7
- 0x70020004, // 0014 JMP #001A
- 0x8C1C0707, // 0015 GETMET R7 R3 K7
- 0x88240909, // 0016 GETMBR R9 R4 K9
- 0x4C280000, // 0017 LDNIL R10
- 0x7C1C0600, // 0018 CALL R7 3
- 0x80040E00, // 0019 RET 1 R7
- 0x70020046, // 001A JMP #0062
- 0x1C1C0D0A, // 001B EQ R7 R6 K10
- 0x781E000F, // 001C JMPF R7 #002D
- 0x881C010B, // 001D GETMBR R7 R0 K11
- 0x4C200000, // 001E LDNIL R8
- 0x201C0E08, // 001F NE R7 R7 R8
- 0x781E0005, // 0020 JMPF R7 #0027
- 0x8C1C0707, // 0021 GETMET R7 R3 K7
- 0x88240908, // 0022 GETMBR R9 R4 K8
- 0x8828010B, // 0023 GETMBR R10 R0 K11
- 0x7C1C0600, // 0024 CALL R7 3
- 0x80040E00, // 0025 RET 1 R7
- 0x70020004, // 0026 JMP #002C
- 0x8C1C0707, // 0027 GETMET R7 R3 K7
- 0x88240909, // 0028 GETMBR R9 R4 K9
- 0x4C280000, // 0029 LDNIL R10
- 0x7C1C0600, // 002A CALL R7 3
- 0x80040E00, // 002B RET 1 R7
- 0x70020034, // 002C JMP #0062
- 0x541E0006, // 002D LDINT R7 7
- 0x1C1C0C07, // 002E EQ R7 R6 R7
- 0x781E0005, // 002F JMPF R7 #0036
- 0x8C1C0707, // 0030 GETMET R7 R3 K7
- 0x88240908, // 0031 GETMBR R9 R4 K8
- 0x58280005, // 0032 LDCONST R10 K5
- 0x7C1C0600, // 0033 CALL R7 3
- 0x80040E00, // 0034 RET 1 R7
- 0x7002002B, // 0035 JMP #0062
- 0x541E0007, // 0036 LDINT R7 8
- 0x1C1C0C07, // 0037 EQ R7 R6 R7
- 0x781E0005, // 0038 JMPF R7 #003F
- 0x8C1C0707, // 0039 GETMET R7 R3 K7
- 0x88240908, // 003A GETMBR R9 R4 K8
- 0x58280005, // 003B LDCONST R10 K5
- 0x7C1C0600, // 003C CALL R7 3
- 0x80040E00, // 003D RET 1 R7
- 0x70020022, // 003E JMP #0062
- 0x541E000E, // 003F LDINT R7 15
- 0x1C1C0C07, // 0040 EQ R7 R6 R7
- 0x781E0005, // 0041 JMPF R7 #0048
- 0x8C1C0707, // 0042 GETMET R7 R3 K7
- 0x88240908, // 0043 GETMBR R9 R4 K8
- 0x58280005, // 0044 LDCONST R10 K5
- 0x7C1C0600, // 0045 CALL R7 3
- 0x80040E00, // 0046 RET 1 R7
- 0x70020019, // 0047 JMP #0062
- 0x541E4000, // 0048 LDINT R7 16385
- 0x1C1C0C07, // 0049 EQ R7 R6 R7
- 0x781E0005, // 004A JMPF R7 #0051
- 0x8C1C0707, // 004B GETMET R7 R3 K7
- 0x88240908, // 004C GETMBR R9 R4 K8
- 0x58280005, // 004D LDCONST R10 K5
- 0x7C1C0600, // 004E CALL R7 3
- 0x80040E00, // 004F RET 1 R7
- 0x70020010, // 0050 JMP #0062
- 0x541E4009, // 0051 LDINT R7 16394
- 0x1C1C0C07, // 0052 EQ R7 R6 R7
- 0x781E0005, // 0053 JMPF R7 #005A
- 0x8C1C0707, // 0054 GETMET R7 R3 K7
- 0x8824090C, // 0055 GETMBR R9 R4 K12
- 0x5828000A, // 0056 LDCONST R10 K10
- 0x7C1C0600, // 0057 CALL R7 3
- 0x80040E00, // 0058 RET 1 R7
- 0x70020007, // 0059 JMP #0062
- 0x541E000F, // 005A LDINT R7 16
- 0x1C1C0C07, // 005B EQ R7 R6 R7
- 0x781E0004, // 005C JMPF R7 #0062
- 0x8C1C0707, // 005D GETMET R7 R3 K7
- 0x88240908, // 005E GETMBR R9 R4 K8
- 0x58280005, // 005F LDCONST R10 K5
- 0x7C1C0600, // 0060 CALL R7 3
- 0x80040E00, // 0061 RET 1 R7
- 0x601C0003, // 0062 GETGBL R7 G3
- 0x5C200000, // 0063 MOVE R8 R0
- 0x7C1C0200, // 0064 CALL R7 1
- 0x8C1C0F0D, // 0065 GETMET R7 R7 K13
- 0x5C240200, // 0066 MOVE R9 R1
- 0x5C280400, // 0067 MOVE R10 R2
- 0x5C2C0600, // 0068 MOVE R11 R3
- 0x7C1C0800, // 0069 CALL R7 4
- 0x80040E00, // 006A RET 1 R7
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: invoke_request
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light3;
-be_local_closure(class_Matter_Plugin_Bridge_Light3_invoke_request, /* name */
- be_nested_proto(
- 15, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light3,
- 1, /* has constants */
- ( &(const bvalue[19]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(cluster),
- /* K3 */ be_nested_str_weak(command),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(findsubval),
- /* K6 */ be_nested_str_weak(set_hue),
- /* K7 */ be_nested_str_weak(log),
- /* K8 */ be_nested_str_weak(hue_X3A),
- /* K9 */ be_nested_str_weak(publish_command),
- /* K10 */ be_nested_str_weak(Hue),
- /* K11 */ be_const_int(1),
- /* K12 */ be_const_int(2),
- /* K13 */ be_const_int(3),
- /* K14 */ be_nested_str_weak(set_sat),
- /* K15 */ be_nested_str_weak(sat_X3A),
- /* K16 */ be_nested_str_weak(Sat),
- /* K17 */ be_nested_str_weak(_X20sat_X3A),
- /* K18 */ be_nested_str_weak(invoke_request),
- }),
- be_str_weak(invoke_request),
- &be_const_str_solidified,
- ( &(const binstruction[119]) { /* code */
- 0xB8120000, // 0000 GETNGBL R4 K0
- 0x88100901, // 0001 GETMBR R4 R4 K1
- 0x88140702, // 0002 GETMBR R5 R3 K2
- 0x88180703, // 0003 GETMBR R6 R3 K3
- 0x541E02FF, // 0004 LDINT R7 768
- 0x1C1C0A07, // 0005 EQ R7 R5 R7
- 0x781E0065, // 0006 JMPF R7 #006D
- 0x1C1C0D04, // 0007 EQ R7 R6 K4
- 0x781E0011, // 0008 JMPF R7 #001B
- 0x8C1C0505, // 0009 GETMET R7 R2 K5
- 0x58240004, // 000A LDCONST R9 K4
- 0x7C1C0400, // 000B CALL R7 2
- 0x8C200106, // 000C GETMET R8 R0 K6
- 0x5C280E00, // 000D MOVE R10 R7
- 0x7C200400, // 000E CALL R8 2
- 0x60200008, // 000F GETGBL R8 G8
- 0x5C240E00, // 0010 MOVE R9 R7
- 0x7C200200, // 0011 CALL R8 1
- 0x00221008, // 0012 ADD R8 K8 R8
- 0x900E0E08, // 0013 SETMBR R3 K7 R8
- 0x8C200109, // 0014 GETMET R8 R0 K9
- 0x5828000A, // 0015 LDCONST R10 K10
- 0x5C2C0E00, // 0016 MOVE R11 R7
- 0x7C200600, // 0017 CALL R8 3
- 0x50200200, // 0018 LDBOOL R8 1 0
- 0x80041000, // 0019 RET 1 R8
- 0x70020050, // 001A JMP #006C
- 0x1C1C0D0B, // 001B EQ R7 R6 K11
- 0x781E0002, // 001C JMPF R7 #0020
- 0x501C0200, // 001D LDBOOL R7 1 0
- 0x80040E00, // 001E RET 1 R7
- 0x7002004B, // 001F JMP #006C
- 0x1C1C0D0C, // 0020 EQ R7 R6 K12
- 0x781E0002, // 0021 JMPF R7 #0025
- 0x501C0200, // 0022 LDBOOL R7 1 0
- 0x80040E00, // 0023 RET 1 R7
- 0x70020046, // 0024 JMP #006C
- 0x1C1C0D0D, // 0025 EQ R7 R6 K13
- 0x781E0011, // 0026 JMPF R7 #0039
- 0x8C1C0505, // 0027 GETMET R7 R2 K5
- 0x58240004, // 0028 LDCONST R9 K4
- 0x7C1C0400, // 0029 CALL R7 2
- 0x8C20010E, // 002A GETMET R8 R0 K14
- 0x5C280E00, // 002B MOVE R10 R7
- 0x7C200400, // 002C CALL R8 2
- 0x60200008, // 002D GETGBL R8 G8
- 0x5C240E00, // 002E MOVE R9 R7
- 0x7C200200, // 002F CALL R8 1
- 0x00221E08, // 0030 ADD R8 K15 R8
- 0x900E0E08, // 0031 SETMBR R3 K7 R8
- 0x8C200109, // 0032 GETMET R8 R0 K9
- 0x58280010, // 0033 LDCONST R10 K16
- 0x5C2C0E00, // 0034 MOVE R11 R7
- 0x7C200600, // 0035 CALL R8 3
- 0x50200200, // 0036 LDBOOL R8 1 0
- 0x80041000, // 0037 RET 1 R8
- 0x70020032, // 0038 JMP #006C
- 0x541E0003, // 0039 LDINT R7 4
- 0x1C1C0C07, // 003A EQ R7 R6 R7
- 0x781E0002, // 003B JMPF R7 #003F
- 0x501C0200, // 003C LDBOOL R7 1 0
- 0x80040E00, // 003D RET 1 R7
- 0x7002002C, // 003E JMP #006C
- 0x541E0004, // 003F LDINT R7 5
- 0x1C1C0C07, // 0040 EQ R7 R6 R7
- 0x781E0002, // 0041 JMPF R7 #0045
- 0x501C0200, // 0042 LDBOOL R7 1 0
- 0x80040E00, // 0043 RET 1 R7
- 0x70020026, // 0044 JMP #006C
- 0x541E0005, // 0045 LDINT R7 6
- 0x1C1C0C07, // 0046 EQ R7 R6 R7
- 0x781E001E, // 0047 JMPF R7 #0067
- 0x8C1C0505, // 0048 GETMET R7 R2 K5
- 0x58240004, // 0049 LDCONST R9 K4
- 0x7C1C0400, // 004A CALL R7 2
- 0x8C200505, // 004B GETMET R8 R2 K5
- 0x5828000B, // 004C LDCONST R10 K11
- 0x7C200400, // 004D CALL R8 2
- 0x8C240106, // 004E GETMET R9 R0 K6
- 0x5C2C0E00, // 004F MOVE R11 R7
- 0x7C240400, // 0050 CALL R9 2
- 0x8C24010E, // 0051 GETMET R9 R0 K14
- 0x5C2C1000, // 0052 MOVE R11 R8
- 0x7C240400, // 0053 CALL R9 2
- 0x60240008, // 0054 GETGBL R9 G8
- 0x5C280E00, // 0055 MOVE R10 R7
- 0x7C240200, // 0056 CALL R9 1
- 0x00261009, // 0057 ADD R9 K8 R9
- 0x00241311, // 0058 ADD R9 R9 K17
- 0x60280008, // 0059 GETGBL R10 G8
- 0x5C2C1000, // 005A MOVE R11 R8
- 0x7C280200, // 005B CALL R10 1
- 0x0024120A, // 005C ADD R9 R9 R10
- 0x900E0E09, // 005D SETMBR R3 K7 R9
- 0x8C240109, // 005E GETMET R9 R0 K9
- 0x582C000A, // 005F LDCONST R11 K10
- 0x5C300E00, // 0060 MOVE R12 R7
- 0x58340010, // 0061 LDCONST R13 K16
- 0x5C381000, // 0062 MOVE R14 R8
- 0x7C240A00, // 0063 CALL R9 5
- 0x50240200, // 0064 LDBOOL R9 1 0
- 0x80041200, // 0065 RET 1 R9
- 0x70020004, // 0066 JMP #006C
- 0x541E0046, // 0067 LDINT R7 71
- 0x1C1C0C07, // 0068 EQ R7 R6 R7
- 0x781E0001, // 0069 JMPF R7 #006C
- 0x501C0200, // 006A LDBOOL R7 1 0
- 0x80040E00, // 006B RET 1 R7
- 0x70020008, // 006C JMP #0076
- 0x601C0003, // 006D GETGBL R7 G3
- 0x5C200000, // 006E MOVE R8 R0
- 0x7C1C0200, // 006F CALL R7 1
- 0x8C1C0F12, // 0070 GETMET R7 R7 K18
- 0x5C240200, // 0071 MOVE R9 R1
- 0x5C280400, // 0072 MOVE R10 R2
- 0x5C2C0600, // 0073 MOVE R11 R3
- 0x7C1C0800, // 0074 CALL R7 4
- 0x80040E00, // 0075 RET 1 R7
- 0x80000000, // 0076 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_hue
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light3;
-be_local_closure(class_Matter_Plugin_Bridge_Light3_set_hue, /* name */
- be_nested_proto(
- 9, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light3,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(scale_uint),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(call_remote_sync),
- /* K4 */ be_nested_str_weak(HSBColor1),
- /* K5 */ be_nested_str_weak(parse_update),
- }),
- be_str_weak(set_hue),
- &be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
- 0xB80A0000, // 0000 GETNGBL R2 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100200, // 0002 MOVE R4 R1
- 0x58140002, // 0003 LDCONST R5 K2
- 0x541A00FD, // 0004 LDINT R6 254
- 0x581C0002, // 0005 LDCONST R7 K2
- 0x54220167, // 0006 LDINT R8 360
- 0x7C080C00, // 0007 CALL R2 6
- 0x8C0C0103, // 0008 GETMET R3 R0 K3
- 0x58140004, // 0009 LDCONST R5 K4
- 0x5C180400, // 000A MOVE R6 R2
- 0x7C0C0600, // 000B CALL R3 3
- 0x4C100000, // 000C LDNIL R4
- 0x20100604, // 000D NE R4 R3 R4
- 0x78120003, // 000E JMPF R4 #0013
- 0x8C100105, // 000F GETMET R4 R0 K5
- 0x5C180600, // 0010 MOVE R6 R3
- 0x541E000A, // 0011 LDINT R7 11
- 0x7C100600, // 0012 CALL R4 3
- 0x80000000, // 0013 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light3;
-be_local_closure(class_Matter_Plugin_Bridge_Light3_init, /* name */
- be_nested_proto(
- 9, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_Light3,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x60100003, // 0000 GETGBL R4 G3
- 0x5C140000, // 0001 MOVE R5 R0
- 0x7C100200, // 0002 CALL R4 1
- 0x8C100900, // 0003 GETMET R4 R4 K0
- 0x5C180200, // 0004 MOVE R6 R1
- 0x5C1C0400, // 0005 MOVE R7 R2
- 0x5C200600, // 0006 MOVE R8 R3
- 0x7C100800, // 0007 CALL R4 4
- 0x80000000, // 0008 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: Matter_Plugin_Bridge_Light3
-********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_Light1;
-be_local_class(Matter_Plugin_Bridge_Light3,
- 2,
- &be_class_Matter_Plugin_Bridge_Light1,
- be_nested_map(14,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(set_sat, 6), be_const_closure(class_Matter_Plugin_Bridge_Light3_set_sat_closure) },
- { be_const_key_weak(init, 8), be_const_closure(class_Matter_Plugin_Bridge_Light3_init_closure) },
- { be_const_key_weak(parse_update, -1), be_const_closure(class_Matter_Plugin_Bridge_Light3_parse_update_closure) },
- { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_light3) },
- { be_const_key_weak(web_values, -1), be_const_closure(class_Matter_Plugin_Bridge_Light3_web_values_closure) },
- { be_const_key_weak(web_value_RGB, 1), be_const_closure(class_Matter_Plugin_Bridge_Light3_web_value_RGB_closure) },
- { be_const_key_weak(CLUSTERS, 13), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(8,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(8, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(11,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(2),
- be_const_int(3),
- be_const_int(15),
- be_const_int(17),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(57, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(3),
- be_const_int(5),
- be_const_int(10),
- be_const_int(15),
- be_const_int(17),
- be_const_int(18),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(10,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(8,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(5, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(2),
- be_const_int(3),
- be_const_int(4),
- be_const_int(5),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(7,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- { be_const_key_int(768, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(13,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(1),
- be_const_int(7),
- be_const_int(8),
- be_const_int(15),
- be_const_int(16385),
- be_const_int(16394),
- be_const_int(65528),
- be_const_int(65529),
- be_const_int(65530),
- be_const_int(65531),
- be_const_int(65532),
- be_const_int(65533),
- })) ) } )) },
- })) ) } )) },
- { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Plugin_Bridge_Light3_invoke_request_closure) },
- { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(Light_X203_X20RGB) },
- { be_const_key_weak(set_hue, 11), be_const_closure(class_Matter_Plugin_Bridge_Light3_set_hue_closure) },
- { be_const_key_weak(shadow_hue, 9), be_const_var(0) },
- { be_const_key_weak(TYPES, 12), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(1,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_int(269, -1), be_const_int(2) },
- })) ) } )) },
- { be_const_key_weak(shadow_sat, -1), be_const_var(1) },
- { be_const_key_weak(read_attribute, -1), be_const_closure(class_Matter_Plugin_Bridge_Light3_read_attribute_closure) },
- })),
- be_str_weak(Matter_Plugin_Bridge_Light3)
-);
-/********************************************************************/
-/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light0.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light0.h
new file mode 100644
index 000000000..de83054ba
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light0.h
@@ -0,0 +1,25 @@
+/* Solidification of Matter_Plugin_8_Bridge_Light0.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Bridge_Light0;
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Bridge_Light0
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Light0;
+be_local_class(Matter_Plugin_Bridge_Light0,
+ 0,
+ &be_class_Matter_Plugin_Light0,
+ be_nested_map(3,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(UPDATE_TIME, -1), be_const_int(3000) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_light0) },
+ { be_const_key_weak(BRIDGE, -1), be_const_bool(1) },
+ })),
+ be_str_weak(Matter_Plugin_Bridge_Light0)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light1.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light1.h
new file mode 100644
index 000000000..d539cdbb4
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light1.h
@@ -0,0 +1,55 @@
+/* Solidification of Matter_Plugin_8_Bridge_Light1.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Bridge_Light1;
+
+/********************************************************************
+** Solidified function:
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Bridge_Light1__X3Clambda_X3E, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 0, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x60040009, // 0000 GETGBL R1 G9
+ 0x5C080000, // 0001 MOVE R2 R0
+ 0x7C040200, // 0002 CALL R1 1
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Bridge_Light1
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Light1;
+be_local_class(Matter_Plugin_Bridge_Light1,
+ 0,
+ &be_class_Matter_Plugin_Light1,
+ be_nested_map(6,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(UPDATE_TIME, -1), be_const_int(3000) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_light1) },
+ { be_const_key_weak(BRIDGE, -1), be_const_bool(1) },
+ { be_const_key_weak(ARG_HINT, 5), be_nested_str_weak(Relay_X3Cx_X3E_X20number) },
+ { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Bridge_Light1__X3Clambda_X3E_closure) },
+ { be_const_key_weak(ARG, -1), be_nested_str_weak(relay) },
+ })),
+ be_str_weak(Matter_Plugin_Bridge_Light1)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light2.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light2.h
new file mode 100644
index 000000000..60135b4a8
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light2.h
@@ -0,0 +1,55 @@
+/* Solidification of Matter_Plugin_8_Bridge_Light2.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Bridge_Light2;
+
+/********************************************************************
+** Solidified function:
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Bridge_Light2__X3Clambda_X3E, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 0, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x60040009, // 0000 GETGBL R1 G9
+ 0x5C080000, // 0001 MOVE R2 R0
+ 0x7C040200, // 0002 CALL R1 1
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Bridge_Light2
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Light2;
+be_local_class(Matter_Plugin_Bridge_Light2,
+ 0,
+ &be_class_Matter_Plugin_Light2,
+ be_nested_map(6,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(UPDATE_TIME, -1), be_const_int(3000) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_light2) },
+ { be_const_key_weak(BRIDGE, -1), be_const_bool(1) },
+ { be_const_key_weak(ARG_HINT, 5), be_nested_str_weak(Relay_X3Cx_X3E_X20number) },
+ { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Bridge_Light2__X3Clambda_X3E_closure) },
+ { be_const_key_weak(ARG, -1), be_nested_str_weak(relay) },
+ })),
+ be_str_weak(Matter_Plugin_Bridge_Light2)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light3.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light3.h
new file mode 100644
index 000000000..cdd1bd78e
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Light3.h
@@ -0,0 +1,55 @@
+/* Solidification of Matter_Plugin_8_Bridge_Light3.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Bridge_Light3;
+
+/********************************************************************
+** Solidified function:
+********************************************************************/
+be_local_closure(class_Matter_Plugin_Bridge_Light3__X3Clambda_X3E, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 0, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 0, /* has constants */
+ NULL, /* no const */
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x60040009, // 0000 GETGBL R1 G9
+ 0x5C080000, // 0001 MOVE R2 R0
+ 0x7C040200, // 0002 CALL R1 1
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Bridge_Light3
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Light3;
+be_local_class(Matter_Plugin_Bridge_Light3,
+ 0,
+ &be_class_Matter_Plugin_Light3,
+ be_nested_map(6,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(UPDATE_TIME, -1), be_const_int(3000) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_light3) },
+ { be_const_key_weak(BRIDGE, -1), be_const_bool(1) },
+ { be_const_key_weak(ARG_HINT, 5), be_nested_str_weak(Relay_X3Cx_X3E_X20number) },
+ { be_const_key_weak(ARG_TYPE, -1), be_const_static_closure(class_Matter_Plugin_Bridge_Light3__X3Clambda_X3E_closure) },
+ { be_const_key_weak(ARG, -1), be_nested_str_weak(relay) },
+ })),
+ be_str_weak(Matter_Plugin_Bridge_Light3)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_OnOff.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_OnOff.h
similarity index 95%
rename from lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_OnOff.h
rename to lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_OnOff.h
index 7e53d6f4c..afbebb66c 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_4_Bridge_OnOff.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_OnOff.h
@@ -1,4 +1,4 @@
-/* Solidification of Matter_Plugin_4_Bridge_OnOff.h */
+/* Solidification of Matter_Plugin_8_Bridge_OnOff.h */
/********************************************************************\
* Generated code, don't edit *
\********************************************************************/
@@ -9,7 +9,6 @@ extern const bclass be_class_Matter_Plugin_Bridge_OnOff;
/********************************************************************
** Solidified function: web_values
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Bridge_OnOff;
be_local_closure(class_Matter_Plugin_Bridge_OnOff_web_values, /* name */
be_nested_proto(
10, /* nstack */
@@ -18,7 +17,7 @@ be_local_closure(class_Matter_Plugin_Bridge_OnOff_web_values, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Plugin_Bridge_OnOff,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 7]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Air_Quality.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Air_Quality.h
new file mode 100644
index 000000000..ef1f3949f
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Air_Quality.h
@@ -0,0 +1,26 @@
+/* Solidification of Matter_Plugin_8_Bridge_Sensor_Air_Quality.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Air_Quality;
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Bridge_Sensor_Air_Quality
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality;
+be_local_class(Matter_Plugin_Bridge_Sensor_Air_Quality,
+ 0,
+ &be_class_Matter_Plugin_Sensor_Air_Quality,
+ be_nested_map(4,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(BRIDGE, 2), be_const_bool(1) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_airquality) },
+ { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
+ { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X2010) },
+ })),
+ be_str_weak(Matter_Plugin_Bridge_Sensor_Air_Quality)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Contact.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Contact.h
new file mode 100644
index 000000000..170284b74
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Contact.h
@@ -0,0 +1,26 @@
+/* Solidification of Matter_Plugin_8_Bridge_Sensor_Contact.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Contact;
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Bridge_Sensor_Contact
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Sensor_Contact;
+be_local_class(Matter_Plugin_Bridge_Sensor_Contact,
+ 0,
+ &be_class_Matter_Plugin_Sensor_Contact,
+ be_nested_map(4,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(BRIDGE, 2), be_const_bool(1) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_contact) },
+ { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
+ { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X2010) },
+ })),
+ be_str_weak(Matter_Plugin_Bridge_Sensor_Contact)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Flow.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Flow.h
new file mode 100644
index 000000000..08ef3a345
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Flow.h
@@ -0,0 +1,24 @@
+/* Solidification of Matter_Plugin_8_Bridge_Sensor_Flow.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Flow;
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Bridge_Sensor_Flow
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Sensor_Flow;
+be_local_class(Matter_Plugin_Bridge_Sensor_Flow,
+ 0,
+ &be_class_Matter_Plugin_Sensor_Flow,
+ be_nested_map(2,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(BRIDGE, -1), be_const_bool(1) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_flow) },
+ })),
+ be_str_weak(Matter_Plugin_Bridge_Sensor_Flow)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Humidity.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Humidity.h
new file mode 100644
index 000000000..878f9629c
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Humidity.h
@@ -0,0 +1,24 @@
+/* Solidification of Matter_Plugin_8_Bridge_Sensor_Humidity.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Humidity;
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Bridge_Sensor_Humidity
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Sensor_Humidity;
+be_local_class(Matter_Plugin_Bridge_Sensor_Humidity,
+ 0,
+ &be_class_Matter_Plugin_Sensor_Humidity,
+ be_nested_map(2,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(BRIDGE, -1), be_const_bool(1) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_humidity) },
+ })),
+ be_str_weak(Matter_Plugin_Bridge_Sensor_Humidity)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Illuminance.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Illuminance.h
new file mode 100644
index 000000000..6ef7a803f
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Illuminance.h
@@ -0,0 +1,24 @@
+/* Solidification of Matter_Plugin_8_Bridge_Sensor_Illuminance.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Illuminance;
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Bridge_Sensor_Illuminance
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Sensor_Illuminance;
+be_local_class(Matter_Plugin_Bridge_Sensor_Illuminance,
+ 0,
+ &be_class_Matter_Plugin_Sensor_Illuminance,
+ be_nested_map(2,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(BRIDGE, -1), be_const_bool(1) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_illuminance) },
+ })),
+ be_str_weak(Matter_Plugin_Bridge_Sensor_Illuminance)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Occupancy.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Occupancy.h
new file mode 100644
index 000000000..a72539571
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Occupancy.h
@@ -0,0 +1,26 @@
+/* Solidification of Matter_Plugin_8_Bridge_Sensor_Occupancy.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Occupancy;
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Bridge_Sensor_Occupancy
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Sensor_Occupancy;
+be_local_class(Matter_Plugin_Bridge_Sensor_Occupancy,
+ 0,
+ &be_class_Matter_Plugin_Sensor_Occupancy,
+ be_nested_map(4,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(BRIDGE, 2), be_const_bool(1) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_occupancy) },
+ { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
+ { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X2010) },
+ })),
+ be_str_weak(Matter_Plugin_Bridge_Sensor_Occupancy)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Pressure.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Pressure.h
new file mode 100644
index 000000000..e6d246669
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Pressure.h
@@ -0,0 +1,24 @@
+/* Solidification of Matter_Plugin_8_Bridge_Sensor_Pressure.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Pressure;
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Bridge_Sensor_Pressure
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Sensor_Pressure;
+be_local_class(Matter_Plugin_Bridge_Sensor_Pressure,
+ 0,
+ &be_class_Matter_Plugin_Sensor_Pressure,
+ be_nested_map(2,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(BRIDGE, -1), be_const_bool(1) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_pressure) },
+ })),
+ be_str_weak(Matter_Plugin_Bridge_Sensor_Pressure)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Rain.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Rain.h
new file mode 100644
index 000000000..61311846b
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Rain.h
@@ -0,0 +1,26 @@
+/* Solidification of Matter_Plugin_8_Bridge_Sensor_Rain.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Rain;
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Bridge_Sensor_Rain
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Sensor_Rain;
+be_local_class(Matter_Plugin_Bridge_Sensor_Rain,
+ 0,
+ &be_class_Matter_Plugin_Sensor_Rain,
+ be_nested_map(4,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(BRIDGE, 2), be_const_bool(1) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_rain) },
+ { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
+ { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X2010) },
+ })),
+ be_str_weak(Matter_Plugin_Bridge_Sensor_Rain)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Temp.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Temp.h
new file mode 100644
index 000000000..04a2b8f81
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Temp.h
@@ -0,0 +1,24 @@
+/* Solidification of Matter_Plugin_8_Bridge_Sensor_Temp.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Temp;
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Bridge_Sensor_Temp
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Sensor_Temp;
+be_local_class(Matter_Plugin_Bridge_Sensor_Temp,
+ 0,
+ &be_class_Matter_Plugin_Sensor_Temp,
+ be_nested_map(2,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(BRIDGE, -1), be_const_bool(1) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_temperature) },
+ })),
+ be_str_weak(Matter_Plugin_Bridge_Sensor_Temp)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Waterleak.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Waterleak.h
new file mode 100644
index 000000000..40ceb74e5
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_8_Bridge_Sensor_Waterleak.h
@@ -0,0 +1,26 @@
+/* Solidification of Matter_Plugin_8_Bridge_Sensor_Waterleak.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Bridge_Sensor_Waterleak;
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Bridge_Sensor_Waterleak
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Sensor_Waterleak;
+be_local_class(Matter_Plugin_Bridge_Sensor_Waterleak,
+ 0,
+ &be_class_Matter_Plugin_Sensor_Waterleak,
+ be_nested_map(4,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(BRIDGE, 2), be_const_bool(1) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(http_waterleak) },
+ { be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
+ { be_const_key_weak(UPDATE_CMD, -1), be_nested_str_weak(Status_X2010) },
+ })),
+ be_str_weak(Matter_Plugin_Bridge_Sensor_Waterleak)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Fan.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Fan.h
new file mode 100644
index 000000000..be063b2e9
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Fan.h
@@ -0,0 +1,27 @@
+/* Solidification of Matter_Plugin_9_Virt_Fan.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Virt_Fan;
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Virt_Fan
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Fan;
+be_local_class(Matter_Plugin_Virt_Fan,
+ 0,
+ &be_class_Matter_Plugin_Fan,
+ be_nested_map(5,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(VIRTUAL, 3), be_const_bool(1) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(v_X2EFan) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(v_fan) },
+ { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) },
+ { be_const_key_weak(ARG, 2), be_nested_str_weak() },
+ })),
+ be_str_weak(Matter_Plugin_Virt_Fan)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Air_Quality.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Air_Quality.h
new file mode 100644
index 000000000..74d87f05f
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Air_Quality.h
@@ -0,0 +1,27 @@
+/* Solidification of Matter_Plugin_9_Virt_Sensor_Air_Quality.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Virt_Sensor_Air_Quality;
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Virt_Sensor_Air_Quality
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Sensor_Air_Quality;
+be_local_class(Matter_Plugin_Virt_Sensor_Air_Quality,
+ 0,
+ &be_class_Matter_Plugin_Sensor_Air_Quality,
+ be_nested_map(5,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(VIRTUAL, 3), be_const_bool(1) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(v_X2EAir_X20Quality) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(v_airquality) },
+ { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) },
+ { be_const_key_weak(ARG, 2), be_nested_str_weak() },
+ })),
+ be_str_weak(Matter_Plugin_Virt_Sensor_Air_Quality)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Rain.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Rain.h
new file mode 100644
index 000000000..499f6db30
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Rain.h
@@ -0,0 +1,27 @@
+/* Solidification of Matter_Plugin_9_Virt_Sensor_Rain.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+
+extern const bclass be_class_Matter_Plugin_Virt_Sensor_Rain;
+
+/********************************************************************
+** Solidified class: Matter_Plugin_Virt_Sensor_Rain
+********************************************************************/
+extern const bclass be_class_Matter_Plugin_Sensor_Rain;
+be_local_class(Matter_Plugin_Virt_Sensor_Rain,
+ 0,
+ &be_class_Matter_Plugin_Sensor_Rain,
+ be_nested_map(5,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(VIRTUAL, 3), be_const_bool(1) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(v_X2ERain) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(v_rain) },
+ { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) },
+ { be_const_key_weak(ARG, 2), be_nested_str_weak() },
+ })),
+ be_str_weak(Matter_Plugin_Virt_Sensor_Rain)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Waterleak.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Waterleak.h
index 8b90cdfe9..7fe1705c2 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Waterleak.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_9_Virt_Sensor_Waterleak.h
@@ -9,19 +9,19 @@ extern const bclass be_class_Matter_Plugin_Virt_Sensor_Waterleak;
/********************************************************************
** Solidified class: Matter_Plugin_Virt_Sensor_Waterleak
********************************************************************/
-extern const bclass be_class_Matter_Plugin_Virt_Sensor_Waterleak;
+extern const bclass be_class_Matter_Plugin_Sensor_Waterleak;
be_local_class(Matter_Plugin_Virt_Sensor_Waterleak,
0,
- &be_class_Matter_Plugin_Virt_Sensor_Waterleak,
+ &be_class_Matter_Plugin_Sensor_Waterleak,
be_nested_map(5,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key(VIRTUAL, 3), be_const_bool(1) },
- { be_const_key(DISPLAY_NAME, -1), be_nested_str(v_X2EWaterleak) },
- { be_const_key(TYPE, -1), be_nested_str(v_waterleak) },
- { be_const_key(ARG_HINT, -1), be_nested_str(_Not_X20used_) },
- { be_const_key(ARG, 2), be_nested_str() },
+ { be_const_key_weak(VIRTUAL, 3), be_const_bool(1) },
+ { be_const_key_weak(DISPLAY_NAME, -1), be_nested_str_weak(v_X2EWaterleak) },
+ { be_const_key_weak(TYPE, -1), be_nested_str_weak(v_waterleak) },
+ { be_const_key_weak(ARG_HINT, -1), be_nested_str_weak(_Not_X20used_) },
+ { be_const_key_weak(ARG, 2), be_nested_str_weak() },
})),
- (bstring*) &be_const_str_Matter_Plugin_Virt_Sensor_Waterleak
+ be_str_weak(Matter_Plugin_Virt_Sensor_Waterleak)
);
/********************************************************************/
/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h
index ae5321625..6463ac2ab 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Profiler.h
@@ -3,36 +3,45 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_Profiler' ktab size: 18, total: 43 (saved 200 bytes)
+static const bvalue be_ktab_class_Matter_Profiler[18] = {
+ /* K0 */ be_nested_str_weak(active),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str_weak(PREALLOCATED),
+ /* K3 */ be_nested_str_weak(millis),
+ /* K4 */ be_nested_str_weak(names),
+ /* K5 */ be_const_int(1),
+ /* K6 */ be_nested_str_weak(len),
+ /* K7 */ be_nested_str_weak(tasmota),
+ /* K8 */ be_nested_str_weak(gc),
+ /* K9 */ be_nested_str_weak(log),
+ /* K10 */ be_nested_str_weak(start),
+ /* K11 */ be_nested_str_weak(resize),
+ /* K12 */ be_nested_str_weak(allocs),
+ /* K13 */ be_nested_str_weak(reallocs),
+ /* K14 */ be_nested_str_weak(debug),
+ /* K15 */ be_nested_str_weak(_X3C_X2D_X2Dend_X2D_X2D_X3E),
+ /* K16 */ be_nested_str_weak(MTR_X3A_X20Profiler_X20dump_X3A),
+ /* K17 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X254i_X20_X5B_X254i_X5D_X27_X25s_X27),
+};
+
extern const bclass be_class_Matter_Profiler;
/********************************************************************
** Solidified function: start
********************************************************************/
-extern const bclass be_class_Matter_Profiler;
be_local_closure(class_Matter_Profiler_start, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Profiler,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(active),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(PREALLOCATED),
- /* K3 */ be_nested_str_weak(millis),
- /* K4 */ be_nested_str_weak(names),
- /* K5 */ be_const_int(1),
- /* K6 */ be_nested_str_weak(len),
- /* K7 */ be_nested_str_weak(tasmota),
- /* K8 */ be_nested_str_weak(gc),
- /* K9 */ be_nested_str_weak(log),
- /* K10 */ be_nested_str_weak(start),
- }),
+ &be_ktab_class_Matter_Profiler, /* shared constants */
be_str_weak(start),
&be_const_str_solidified,
( &(const binstruction[23]) { /* code */
@@ -68,28 +77,17 @@ be_local_closure(class_Matter_Profiler_start, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_Profiler;
be_local_closure(class_Matter_Profiler_init, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Profiler,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(active),
- /* K1 */ be_nested_str_weak(millis),
- /* K2 */ be_nested_str_weak(resize),
- /* K3 */ be_nested_str_weak(PREALLOCATED),
- /* K4 */ be_nested_str_weak(names),
- /* K5 */ be_nested_str_weak(allocs),
- /* K6 */ be_nested_str_weak(reallocs),
- /* K7 */ be_nested_str_weak(len),
- /* K8 */ be_const_int(0),
- }),
+ &be_ktab_class_Matter_Profiler, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[32]) { /* code */
@@ -97,33 +95,33 @@ be_local_closure(class_Matter_Profiler_init, /* name */
0x90020001, // 0001 SETMBR R0 K0 R1
0x60040012, // 0002 GETGBL R1 G18
0x7C040000, // 0003 CALL R1 0
- 0x90020201, // 0004 SETMBR R0 K1 R1
- 0x88040101, // 0005 GETMBR R1 R0 K1
- 0x8C040302, // 0006 GETMET R1 R1 K2
- 0x880C0103, // 0007 GETMBR R3 R0 K3
+ 0x90020601, // 0004 SETMBR R0 K3 R1
+ 0x88040103, // 0005 GETMBR R1 R0 K3
+ 0x8C04030B, // 0006 GETMET R1 R1 K11
+ 0x880C0102, // 0007 GETMBR R3 R0 K2
0x7C040400, // 0008 CALL R1 2
0x60040012, // 0009 GETGBL R1 G18
0x7C040000, // 000A CALL R1 0
0x90020801, // 000B SETMBR R0 K4 R1
0x88040104, // 000C GETMBR R1 R0 K4
- 0x8C040302, // 000D GETMET R1 R1 K2
- 0x880C0103, // 000E GETMBR R3 R0 K3
+ 0x8C04030B, // 000D GETMET R1 R1 K11
+ 0x880C0102, // 000E GETMBR R3 R0 K2
0x7C040400, // 000F CALL R1 2
0x60040012, // 0010 GETGBL R1 G18
0x7C040000, // 0011 CALL R1 0
- 0x90020A01, // 0012 SETMBR R0 K5 R1
- 0x88040105, // 0013 GETMBR R1 R0 K5
- 0x8C040302, // 0014 GETMET R1 R1 K2
- 0x880C0103, // 0015 GETMBR R3 R0 K3
+ 0x90021801, // 0012 SETMBR R0 K12 R1
+ 0x8804010C, // 0013 GETMBR R1 R0 K12
+ 0x8C04030B, // 0014 GETMET R1 R1 K11
+ 0x880C0102, // 0015 GETMBR R3 R0 K2
0x7C040400, // 0016 CALL R1 2
0x60040012, // 0017 GETGBL R1 G18
0x7C040000, // 0018 CALL R1 0
- 0x90020C01, // 0019 SETMBR R0 K6 R1
- 0x88040106, // 001A GETMBR R1 R0 K6
- 0x8C040302, // 001B GETMET R1 R1 K2
- 0x880C0103, // 001C GETMBR R3 R0 K3
+ 0x90021A01, // 0019 SETMBR R0 K13 R1
+ 0x8804010D, // 001A GETMBR R1 R0 K13
+ 0x8C04030B, // 001B GETMET R1 R1 K11
+ 0x880C0102, // 001C GETMBR R3 R0 K2
0x7C040400, // 001D CALL R1 2
- 0x90020F08, // 001E SETMBR R0 K7 K8
+ 0x90020D01, // 001E SETMBR R0 K6 K1
0x80000000, // 001F RET 0
})
)
@@ -134,20 +132,17 @@ be_local_closure(class_Matter_Profiler_init, /* name */
/********************************************************************
** Solidified function: set_active
********************************************************************/
-extern const bclass be_class_Matter_Profiler;
be_local_closure(class_Matter_Profiler_set_active, /* name */
be_nested_proto(
4, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Profiler,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(active),
- }),
+ &be_ktab_class_Matter_Profiler, /* shared constants */
be_str_weak(set_active),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
@@ -165,59 +160,47 @@ be_local_closure(class_Matter_Profiler_set_active, /* name */
/********************************************************************
** Solidified function: log
********************************************************************/
-extern const bclass be_class_Matter_Profiler;
be_local_closure(class_Matter_Profiler_log, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Profiler,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(active),
- /* K1 */ be_nested_str_weak(debug),
- /* K2 */ be_nested_str_weak(len),
- /* K3 */ be_nested_str_weak(PREALLOCATED),
- /* K4 */ be_nested_str_weak(millis),
- /* K5 */ be_nested_str_weak(tasmota),
- /* K6 */ be_nested_str_weak(names),
- /* K7 */ be_nested_str_weak(allocs),
- /* K8 */ be_nested_str_weak(reallocs),
- /* K9 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_Profiler, /* shared constants */
be_str_weak(log),
&be_const_str_solidified,
( &(const binstruction[28]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x740A0000, // 0001 JMPT R2 #0003
0x80000400, // 0002 RET 0
- 0xA40A0200, // 0003 IMPORT R2 K1
- 0x880C0102, // 0004 GETMBR R3 R0 K2
- 0x88100103, // 0005 GETMBR R4 R0 K3
+ 0xA40A1C00, // 0003 IMPORT R2 K14
+ 0x880C0106, // 0004 GETMBR R3 R0 K6
+ 0x88100102, // 0005 GETMBR R4 R0 K2
0x28100604, // 0006 GE R4 R3 R4
0x78120000, // 0007 JMPF R4 #0009
0x80000800, // 0008 RET 0
- 0x88100104, // 0009 GETMBR R4 R0 K4
- 0xB8160A00, // 000A GETNGBL R5 K5
- 0x8C140B04, // 000B GETMET R5 R5 K4
+ 0x88100103, // 0009 GETMBR R4 R0 K3
+ 0xB8160E00, // 000A GETNGBL R5 K7
+ 0x8C140B03, // 000B GETMET R5 R5 K3
0x7C140200, // 000C CALL R5 1
0x98100605, // 000D SETIDX R4 R3 R5
- 0x88100106, // 000E GETMBR R4 R0 K6
+ 0x88100104, // 000E GETMBR R4 R0 K4
0x98100601, // 000F SETIDX R4 R3 R1
- 0x88100107, // 0010 GETMBR R4 R0 K7
- 0x8C140507, // 0011 GETMET R5 R2 K7
+ 0x8810010C, // 0010 GETMBR R4 R0 K12
+ 0x8C14050C, // 0011 GETMET R5 R2 K12
0x7C140200, // 0012 CALL R5 1
0x98100605, // 0013 SETIDX R4 R3 R5
- 0x88100108, // 0014 GETMBR R4 R0 K8
- 0x8C140508, // 0015 GETMET R5 R2 K8
+ 0x8810010D, // 0014 GETMBR R4 R0 K13
+ 0x8C14050D, // 0015 GETMET R5 R2 K13
0x7C140200, // 0016 CALL R5 1
0x98100605, // 0017 SETIDX R4 R3 R5
- 0x88100102, // 0018 GETMBR R4 R0 K2
- 0x00100909, // 0019 ADD R4 R4 K9
- 0x90020404, // 001A SETMBR R0 K2 R4
+ 0x88100106, // 0018 GETMBR R4 R0 K6
+ 0x00100905, // 0019 ADD R4 R4 K5
+ 0x90020C04, // 001A SETMBR R0 K6 R4
0x80000000, // 001B RET 0
})
)
@@ -228,74 +211,57 @@ be_local_closure(class_Matter_Profiler_log, /* name */
/********************************************************************
** Solidified function: dump
********************************************************************/
-extern const bclass be_class_Matter_Profiler;
be_local_closure(class_Matter_Profiler_dump, /* name */
be_nested_proto(
- 13, /* nstack */
+ 12, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Profiler,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(active),
- /* K1 */ be_nested_str_weak(log),
- /* K2 */ be_nested_str_weak(_X3C_X2D_X2Dend_X2D_X2D_X3E),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(MTR_X3A_X20Profiler_X20dump_X3A),
- /* K5 */ be_nested_str_weak(millis),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(allocs),
- /* K8 */ be_nested_str_weak(reallocs),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str_weak(len),
- /* K11 */ be_nested_str_weak(MTR_X3A_X20_X20_X20_X254i_X20_X5B_X254i_X5D_X27_X25s_X27),
- /* K12 */ be_nested_str_weak(names),
- }),
+ &be_ktab_class_Matter_Profiler, /* shared constants */
be_str_weak(dump),
&be_const_str_solidified,
- ( &(const binstruction[39]) { /* code */
+ ( &(const binstruction[37]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x740A0000, // 0001 JMPT R2 #0003
0x80000400, // 0002 RET 0
- 0x8C080101, // 0003 GETMET R2 R0 K1
- 0x58100002, // 0004 LDCONST R4 K2
+ 0x8C080109, // 0003 GETMET R2 R0 K9
+ 0x5810000F, // 0004 LDCONST R4 K15
0x7C080400, // 0005 CALL R2 2
- 0xB80A0600, // 0006 GETNGBL R2 K3
- 0x8C080501, // 0007 GETMET R2 R2 K1
- 0x58100004, // 0008 LDCONST R4 K4
- 0x5C140200, // 0009 MOVE R5 R1
- 0x7C080600, // 000A CALL R2 3
- 0x88080105, // 000B GETMBR R2 R0 K5
- 0x94080506, // 000C GETIDX R2 R2 K6
- 0x880C0107, // 000D GETMBR R3 R0 K7
- 0x940C0706, // 000E GETIDX R3 R3 K6
- 0x88100108, // 000F GETMBR R4 R0 K8
- 0x94100906, // 0010 GETIDX R4 R4 K6
- 0x58140009, // 0011 LDCONST R5 K9
- 0x8818010A, // 0012 GETMBR R6 R0 K10
- 0x14180A06, // 0013 LT R6 R5 R6
- 0x781A0010, // 0014 JMPF R6 #0026
- 0xB81A0600, // 0015 GETNGBL R6 K3
- 0x8C180D01, // 0016 GETMET R6 R6 K1
- 0x60200018, // 0017 GETGBL R8 G24
- 0x5824000B, // 0018 LDCONST R9 K11
- 0x88280105, // 0019 GETMBR R10 R0 K5
- 0x94281405, // 001A GETIDX R10 R10 R5
- 0x04281402, // 001B SUB R10 R10 R2
- 0x882C0107, // 001C GETMBR R11 R0 K7
- 0x942C1605, // 001D GETIDX R11 R11 R5
- 0x042C1603, // 001E SUB R11 R11 R3
- 0x8830010C, // 001F GETMBR R12 R0 K12
- 0x94301805, // 0020 GETIDX R12 R12 R5
- 0x7C200800, // 0021 CALL R8 4
- 0x5C240200, // 0022 MOVE R9 R1
- 0x7C180600, // 0023 CALL R6 3
- 0x00140B09, // 0024 ADD R5 R5 K9
- 0x7001FFEB, // 0025 JMP #0012
- 0x80000000, // 0026 RET 0
+ 0xB80A1200, // 0006 GETNGBL R2 K9
+ 0x580C0010, // 0007 LDCONST R3 K16
+ 0x5C100200, // 0008 MOVE R4 R1
+ 0x7C080400, // 0009 CALL R2 2
+ 0x88080103, // 000A GETMBR R2 R0 K3
+ 0x94080501, // 000B GETIDX R2 R2 K1
+ 0x880C010C, // 000C GETMBR R3 R0 K12
+ 0x940C0701, // 000D GETIDX R3 R3 K1
+ 0x8810010D, // 000E GETMBR R4 R0 K13
+ 0x94100901, // 000F GETIDX R4 R4 K1
+ 0x58140005, // 0010 LDCONST R5 K5
+ 0x88180106, // 0011 GETMBR R6 R0 K6
+ 0x14180A06, // 0012 LT R6 R5 R6
+ 0x781A000F, // 0013 JMPF R6 #0024
+ 0xB81A1200, // 0014 GETNGBL R6 K9
+ 0x601C0018, // 0015 GETGBL R7 G24
+ 0x58200011, // 0016 LDCONST R8 K17
+ 0x88240103, // 0017 GETMBR R9 R0 K3
+ 0x94241205, // 0018 GETIDX R9 R9 R5
+ 0x04241202, // 0019 SUB R9 R9 R2
+ 0x8828010C, // 001A GETMBR R10 R0 K12
+ 0x94281405, // 001B GETIDX R10 R10 R5
+ 0x04281403, // 001C SUB R10 R10 R3
+ 0x882C0104, // 001D GETMBR R11 R0 K4
+ 0x942C1605, // 001E GETIDX R11 R11 R5
+ 0x7C1C0800, // 001F CALL R7 4
+ 0x5C200200, // 0020 MOVE R8 R1
+ 0x7C180400, // 0021 CALL R6 2
+ 0x00140B05, // 0022 ADD R5 R5 K5
+ 0x7001FFEC, // 0023 JMP #0011
+ 0x80000000, // 0024 RET 0
})
)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h
index 35cfe8059..137fd7b68 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h
@@ -3,253 +3,137 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+extern const bclass be_class_Matter_Session;
+// compact class 'Matter_Session' ktab size: 109, total: 196 (saved 696 bytes)
+static const bvalue be_ktab_class_Matter_Session[109] = {
+ /* K0 */ be_nested_str_weak(_fabric),
+ /* K1 */ be_nested_str_weak(device_id),
+ /* K2 */ be_nested_str_weak(log),
+ /* K3 */ be_nested_str_weak(MTR_X3A_X20_X2DSession_X20_X20_X20_X28_X256i_X29_X20_X28removed_X29),
+ /* K4 */ be_nested_str_weak(local_session_id),
+ /* K5 */ be_const_int(3),
+ /* K6 */ be_nested_str_weak(set_mode),
+ /* K7 */ be_nested_str_weak(_CASE),
+ /* K8 */ be_nested_str_weak(mode),
+ /* K9 */ be_nested_str_weak(add_session),
+ /* K10 */ be_nested_str_weak(noc),
+ /* K11 */ be_nested_str_weak(crypto),
+ /* K12 */ be_nested_str_weak(_store),
+ /* K13 */ be_const_int(0),
+ /* K14 */ be_nested_str_weak(initiator_session_id),
+ /* K15 */ be_nested_str_weak(_counter_snd_impl),
+ /* K16 */ be_nested_str_weak(matter),
+ /* K17 */ be_nested_str_weak(Counter),
+ /* K18 */ be_nested_str_weak(_counter_rcv_impl),
+ /* K19 */ be_nested_str_weak(counter_rcv),
+ /* K20 */ be_nested_str_weak(counter_snd),
+ /* K21 */ be_nested_str_weak(next),
+ /* K22 */ be_nested_str_weak(_COUNTER_SND_INCR),
+ /* K23 */ be_nested_str_weak(_counter_insecure_rcv),
+ /* K24 */ be_nested_str_weak(_counter_insecure_snd),
+ /* K25 */ be_nested_str_weak(_breadcrumb),
+ /* K26 */ be_nested_str_weak(_exchange_id),
+ /* K27 */ be_nested_str_weak(random),
+ /* K28 */ be_const_int(2),
+ /* K29 */ be_nested_str_weak(get),
+ /* K30 */ be_nested_str_weak(update),
+ /* K31 */ be_nested_str_weak(admin_vendor),
+ /* K32 */ be_nested_str_weak(i2rkey),
+ /* K33 */ be_nested_str_weak(validate),
+ /* K34 */ be_nested_str_weak(val),
+ /* K35 */ be_nested_str_weak(root_ca_certificate),
+ /* K36 */ be_nested_str_weak(fabric_index),
+ /* K37 */ be_nested_str_weak(r2ikey),
+ /* K38 */ be_nested_str_weak(is_greater),
+ /* K39 */ be_nested_str_weak(does_persist),
+ /* K40 */ be_nested_str_weak(save),
+ /* K41 */ be_nested_str_weak(_temp_root_ca_certificate),
+ /* K42 */ be_nested_str_weak(TLV),
+ /* K43 */ be_nested_str_weak(parse),
+ /* K44 */ be_nested_str_weak(findsubval),
+ /* K45 */ be_nested_str_weak(fabric_id),
+ /* K46 */ be_nested_str_weak(_PASE),
+ /* K47 */ be_nested_str_weak(fabric_label),
+ /* K48 */ be_nested_str_weak(last_used),
+ /* K49 */ be_nested_str_weak(tasmota),
+ /* K50 */ be_nested_str_weak(rtc_utc),
+ /* K51 */ be_nested_str_weak(icac),
+ /* K52 */ be_nested_str_weak(string),
+ /* K53 */ be_nested_str_weak(get_ca_pub),
+ /* K54 */ be_nested_str_weak(get_pk),
+ /* K55 */ be_nested_str_weak(_temp_pk),
+ /* K56 */ be_nested_str_weak(json),
+ /* K57 */ be_nested_str_weak(introspect),
+ /* K58 */ be_nested_str_weak(persist_pre),
+ /* K59 */ be_nested_str_weak(members),
+ /* K60 */ be_nested_str_weak(function),
+ /* K61 */ be_nested_str_weak(_),
+ /* K62 */ be_nested_str_weak(push),
+ /* K63 */ be_nested_str_weak(stop_iteration),
+ /* K64 */ be_nested_str_weak(sort),
+ /* K65 */ be_nested_str_weak(_X24_X24),
+ /* K66 */ be_nested_str_weak(tob64),
+ /* K67 */ be_nested_str_weak(instance),
+ /* K68 */ be_nested_str_weak(_X25s_X3A_X25s),
+ /* K69 */ be_nested_str_weak(dump),
+ /* K70 */ be_nested_str_weak(persist_post),
+ /* K71 */ be_nested_str_weak(_X7B),
+ /* K72 */ be_nested_str_weak(concat),
+ /* K73 */ be_nested_str_weak(_X2C),
+ /* K74 */ be_nested_str_weak(_X7D),
+ /* K75 */ be_nested_str_weak(__future_local_session_id),
+ /* K76 */ be_nested_str_weak(__future_initiator_session_id),
+ /* K77 */ be_nested_str_weak(reset),
+ /* K78 */ be_nested_str_weak(_i2r_privacy),
+ /* K79 */ be_nested_str_weak(attestation_challenge),
+ /* K80 */ be_const_int(1),
+ /* K81 */ be_nested_str_weak(HKDF_SHA256),
+ /* K82 */ be_nested_str_weak(derive),
+ /* K83 */ be_nested_str_weak(get_i2r),
+ /* K84 */ be_nested_str_weak(fromstring),
+ /* K85 */ be_nested_str_weak(PrivacyKey),
+ /* K86 */ be_const_class(be_class_Matter_Session),
+ /* K87 */ be_nested_str_weak(Session),
+ /* K88 */ be_nested_str_weak(keys),
+ /* K89 */ be_nested_str_weak(find),
+ /* K90 */ be_nested_str_weak(0x),
+ /* K91 */ be_nested_str_weak(set),
+ /* K92 */ be_nested_str_weak(fromhex),
+ /* K93 */ be_const_int(2147483647),
+ /* K94 */ be_nested_str_weak(fromb64),
+ /* K95 */ be_nested_str_weak(hydrate_post),
+ /* K96 */ be_nested_str_weak(save_fabrics),
+ /* K97 */ be_nested_str_weak(admin_subject),
+ /* K98 */ be_nested_str_weak(ipk_epoch_key),
+ /* K99 */ be_nested_str_weak(fabric_compressed),
+ /* K100 */ be_nested_str_weak(created),
+ /* K101 */ be_nested_str_weak(EC_P256),
+ /* K102 */ be_nested_str_weak(public_key),
+ /* K103 */ be_nested_str_weak(3070020100300E310C300A060355040A0C034353523059301306072A8648CE3D020106082A8648CE3D030107034200),
+ /* K104 */ be_nested_str_weak(A000),
+ /* K105 */ be_nested_str_weak(300C06082A8648CE3D0403020500),
+ /* K106 */ be_nested_str_weak(ecdsa_sign_sha256_asn1),
+ /* K107 */ be_nested_str_weak(add),
+ /* K108 */ be_nested_str_weak(get_ipk_group_key),
+};
+
extern const bclass be_class_Matter_Session;
-/********************************************************************
-** Solidified function: close
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_close, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[23]) { /* constants */
- /* K0 */ be_nested_str_weak(local_session_id),
- /* K1 */ be_nested_str_weak(__future_local_session_id),
- /* K2 */ be_nested_str_weak(initiator_session_id),
- /* K3 */ be_nested_str_weak(__future_initiator_session_id),
- /* K4 */ be_nested_str_weak(_counter_rcv_impl),
- /* K5 */ be_nested_str_weak(reset),
- /* K6 */ be_nested_str_weak(_counter_snd_impl),
- /* K7 */ be_nested_str_weak(counter_rcv),
- /* K8 */ be_const_int(0),
- /* K9 */ be_nested_str_weak(counter_snd),
- /* K10 */ be_nested_str_weak(next),
- /* K11 */ be_nested_str_weak(i2rkey),
- /* K12 */ be_nested_str_weak(_i2r_privacy),
- /* K13 */ be_nested_str_weak(r2ikey),
- /* K14 */ be_nested_str_weak(attestation_challenge),
- /* K15 */ be_nested_str_weak(introspect),
- /* K16 */ be_nested_str_weak(members),
- /* K17 */ be_nested_str_weak(get),
- /* K18 */ be_nested_str_weak(function),
- /* K19 */ be_nested_str_weak(instance),
- /* K20 */ be_nested_str_weak(_),
- /* K21 */ be_const_int(1),
- /* K22 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(close),
- &be_const_str_solidified,
- ( &(const binstruction[59]) { /* code */
- 0x88040101, // 0000 GETMBR R1 R0 K1
- 0x90020001, // 0001 SETMBR R0 K0 R1
- 0x88040103, // 0002 GETMBR R1 R0 K3
- 0x90020401, // 0003 SETMBR R0 K2 R1
- 0x88040104, // 0004 GETMBR R1 R0 K4
- 0x8C040305, // 0005 GETMET R1 R1 K5
- 0x7C040200, // 0006 CALL R1 1
- 0x88040106, // 0007 GETMBR R1 R0 K6
- 0x8C040305, // 0008 GETMET R1 R1 K5
- 0x7C040200, // 0009 CALL R1 1
- 0x90020F08, // 000A SETMBR R0 K7 K8
- 0x88040106, // 000B GETMBR R1 R0 K6
- 0x8C04030A, // 000C GETMET R1 R1 K10
- 0x7C040200, // 000D CALL R1 1
- 0x90021201, // 000E SETMBR R0 K9 R1
- 0x4C040000, // 000F LDNIL R1
- 0x90021601, // 0010 SETMBR R0 K11 R1
- 0x4C040000, // 0011 LDNIL R1
- 0x90021801, // 0012 SETMBR R0 K12 R1
- 0x4C040000, // 0013 LDNIL R1
- 0x90021A01, // 0014 SETMBR R0 K13 R1
- 0x4C040000, // 0015 LDNIL R1
- 0x90021C01, // 0016 SETMBR R0 K14 R1
- 0xA4061E00, // 0017 IMPORT R1 K15
- 0x60080010, // 0018 GETGBL R2 G16
- 0x8C0C0310, // 0019 GETMET R3 R1 K16
- 0x5C140000, // 001A MOVE R5 R0
- 0x7C0C0400, // 001B CALL R3 2
- 0x7C080200, // 001C CALL R2 1
- 0xA8020018, // 001D EXBLK 0 #0037
- 0x5C0C0400, // 001E MOVE R3 R2
- 0x7C0C0000, // 001F CALL R3 0
- 0x8C100311, // 0020 GETMET R4 R1 K17
- 0x5C180000, // 0021 MOVE R6 R0
- 0x5C1C0600, // 0022 MOVE R7 R3
- 0x7C100600, // 0023 CALL R4 3
- 0x60140004, // 0024 GETGBL R5 G4
- 0x5C180800, // 0025 MOVE R6 R4
- 0x7C140200, // 0026 CALL R5 1
- 0x20140B12, // 0027 NE R5 R5 K18
- 0x7816000C, // 0028 JMPF R5 #0036
- 0x60140004, // 0029 GETGBL R5 G4
- 0x5C180800, // 002A MOVE R6 R4
- 0x7C140200, // 002B CALL R5 1
- 0x20140B13, // 002C NE R5 R5 K19
- 0x78160007, // 002D JMPF R5 #0036
- 0x94140708, // 002E GETIDX R5 R3 K8
- 0x1C140B14, // 002F EQ R5 R5 K20
- 0x78160004, // 0030 JMPF R5 #0036
- 0x94140715, // 0031 GETIDX R5 R3 K21
- 0x1C140B14, // 0032 EQ R5 R5 K20
- 0x78160001, // 0033 JMPF R5 #0036
- 0x4C140000, // 0034 LDNIL R5
- 0x90000605, // 0035 SETMBR R0 R3 R5
- 0x7001FFE6, // 0036 JMP #001E
- 0x58080016, // 0037 LDCONST R2 K22
- 0xAC080200, // 0038 CATCH R2 1 0
- 0xB0080000, // 0039 RAISE 2 R0 R0
- 0x80000000, // 003A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: update
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_update, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(last_used),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(rtc_utc),
- }),
- be_str_weak(update),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0xB8060200, // 0000 GETNGBL R1 K1
- 0x8C040302, // 0001 GETMET R1 R1 K2
- 0x7C040200, // 0002 CALL R1 1
- 0x90020001, // 0003 SETMBR R0 K0 R1
- 0x80000000, // 0004 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_ac
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_get_ac, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(attestation_challenge),
- }),
- be_str_weak(get_ac),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_fabric
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_get_fabric, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- }),
- be_str_weak(get_fabric),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_noc
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_get_noc, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(noc),
- }),
- be_str_weak(get_noc),
- &be_const_str_solidified,
- ( &(const binstruction[ 3]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x80040200, // 0002 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: get_device_id
********************************************************************/
-extern const bclass be_class_Matter_Session;
be_local_closure(class_Matter_Session_get_device_id, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(device_id),
- }),
+ &be_ktab_class_Matter_Session, /* shared constants */
be_str_weak(get_device_id),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
@@ -267,34 +151,29 @@ be_local_closure(class_Matter_Session_get_device_id, /* name */
/********************************************************************
-** Solidified function: set_fabric_label
+** Solidified function: before_remove
********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_set_fabric_label, /* name */
+be_local_closure(class_Matter_Session_before_remove, /* name */
be_nested_proto(
- 4, /* nstack */
- 2, /* argc */
- 2, /* varg */
+ 5, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(string),
- /* K1 */ be_nested_str_weak(_fabric),
- /* K2 */ be_nested_str_weak(fabric_label),
- }),
- be_str_weak(set_fabric_label),
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(before_remove),
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
- 0x60080004, // 0000 GETGBL R2 G4
- 0x5C0C0200, // 0001 MOVE R3 R1
- 0x7C080200, // 0002 CALL R2 1
- 0x1C080500, // 0003 EQ R2 R2 K0
- 0x780A0001, // 0004 JMPF R2 #0007
- 0x88080101, // 0005 GETMBR R2 R0 K1
- 0x900A0401, // 0006 SETMBR R2 K2 R1
+ 0xB8060400, // 0000 GETNGBL R1 K2
+ 0x60080018, // 0001 GETGBL R2 G24
+ 0x580C0003, // 0002 LDCONST R3 K3
+ 0x88100104, // 0003 GETMBR R4 R0 K4
+ 0x7C080400, // 0004 CALL R2 2
+ 0x580C0005, // 0005 LDCONST R3 K5
+ 0x7C040400, // 0006 CALL R1 2
0x80000000, // 0007 RET 0
})
)
@@ -303,36 +182,316 @@ be_local_closure(class_Matter_Session_set_fabric_label, /* name */
/********************************************************************
-** Solidified function: set_keys
+** Solidified function: set_mode_CASE
********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_set_keys, /* name */
+be_local_closure(class_Matter_Session_set_mode_CASE, /* name */
be_nested_proto(
- 6, /* nstack */
- 5, /* argc */
- 2, /* varg */
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(i2rkey),
- /* K1 */ be_nested_str_weak(_i2r_privacy),
- /* K2 */ be_nested_str_weak(r2ikey),
- /* K3 */ be_nested_str_weak(attestation_challenge),
- /* K4 */ be_nested_str_weak(created),
- }),
- be_str_weak(set_keys),
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(set_mode_CASE),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8C040106, // 0000 GETMET R1 R0 K6
+ 0x880C0107, // 0001 GETMBR R3 R0 K7
+ 0x7C040400, // 0002 CALL R1 2
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: is_CASE
+********************************************************************/
+be_local_closure(class_Matter_Session_is_CASE, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(is_CASE),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x88040108, // 0000 GETMBR R1 R0 K8
+ 0x88080107, // 0001 GETMBR R2 R0 K7
+ 0x1C040202, // 0002 EQ R1 R1 R2
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: persist_to_fabric
+********************************************************************/
+be_local_closure(class_Matter_Session_persist_to_fabric, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(persist_to_fabric),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8C040309, // 0001 GETMET R1 R1 K9
+ 0x5C0C0000, // 0002 MOVE R3 R0
+ 0x7C040400, // 0003 CALL R1 2
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_noc
+********************************************************************/
+be_local_closure(class_Matter_Session_get_noc, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(get_noc),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 3]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804030A, // 0001 GETMBR R1 R1 K10
+ 0x80040200, // 0002 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_Session_init, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 5, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[41]) { /* code */
+ 0xA4161600, // 0000 IMPORT R5 K11
+ 0x90021801, // 0001 SETMBR R0 K12 R1
+ 0x9002110D, // 0002 SETMBR R0 K8 K13
+ 0x90020802, // 0003 SETMBR R0 K4 R2
+ 0x90021C03, // 0004 SETMBR R0 K14 R3
+ 0xB81A2000, // 0005 GETNGBL R6 K16
+ 0x8C180D11, // 0006 GETMET R6 R6 K17
+ 0x7C180200, // 0007 CALL R6 1
+ 0x90021E06, // 0008 SETMBR R0 K15 R6
+ 0xB81A2000, // 0009 GETNGBL R6 K16
+ 0x8C180D11, // 000A GETMET R6 R6 K17
+ 0x7C180200, // 000B CALL R6 1
+ 0x90022406, // 000C SETMBR R0 K18 R6
+ 0x9002270D, // 000D SETMBR R0 K19 K13
+ 0x8818010F, // 000E GETMBR R6 R0 K15
+ 0x8C180D15, // 000F GETMET R6 R6 K21
+ 0x7C180200, // 0010 CALL R6 1
+ 0x881C0116, // 0011 GETMBR R7 R0 K22
+ 0x00180C07, // 0012 ADD R6 R6 R7
+ 0x90022806, // 0013 SETMBR R0 K20 R6
+ 0xB81A2000, // 0014 GETNGBL R6 K16
+ 0x8C180D11, // 0015 GETMET R6 R6 K17
+ 0x7C180200, // 0016 CALL R6 1
+ 0x90022E06, // 0017 SETMBR R0 K23 R6
+ 0xB81A2000, // 0018 GETNGBL R6 K16
+ 0x8C180D11, // 0019 GETMET R6 R6 K17
+ 0x7C180200, // 001A CALL R6 1
+ 0x90023006, // 001B SETMBR R0 K24 R6
+ 0x9002330D, // 001C SETMBR R0 K25 K13
+ 0x8C180B1B, // 001D GETMET R6 R5 K27
+ 0x5820001C, // 001E LDCONST R8 K28
+ 0x7C180400, // 001F CALL R6 2
+ 0x8C180D1D, // 0020 GETMET R6 R6 K29
+ 0x5820000D, // 0021 LDCONST R8 K13
+ 0x5824001C, // 0022 LDCONST R9 K28
+ 0x7C180600, // 0023 CALL R6 3
+ 0x90023406, // 0024 SETMBR R0 K26 R6
+ 0x90020004, // 0025 SETMBR R0 K0 R4
+ 0x8C18011E, // 0026 GETMET R6 R0 K30
+ 0x7C180200, // 0027 CALL R6 1
+ 0x80000000, // 0028 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_admin_vendor
+********************************************************************/
+be_local_closure(class_Matter_Session_get_admin_vendor, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(get_admin_vendor),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x4C140000, // 0001 LDNIL R5
- 0x90020205, // 0002 SETMBR R0 K1 R5
- 0x90020402, // 0003 SETMBR R0 K2 R2
- 0x90020603, // 0004 SETMBR R0 K3 R3
- 0x90020804, // 0005 SETMBR R0 K4 R4
- 0x80000000, // 0006 RET 0
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x78060002, // 0001 JMPF R1 #0005
+ 0x88040100, // 0002 GETMBR R1 R0 K0
+ 0x8804031F, // 0003 GETMBR R1 R1 K31
+ 0x70020000, // 0004 JMP #0006
+ 0x4C040000, // 0005 LDNIL R1
+ 0x80040200, // 0006 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_i2r
+********************************************************************/
+be_local_closure(class_Matter_Session_get_i2r, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(get_i2r),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040120, // 0000 GETMBR R1 R0 K32
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: counter_rcv_validate
+********************************************************************/
+be_local_closure(class_Matter_Session_counter_rcv_validate, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(counter_rcv_validate),
+ &be_const_str_solidified,
+ ( &(const binstruction[11]) { /* code */
+ 0x880C0112, // 0000 GETMBR R3 R0 K18
+ 0x8C0C0721, // 0001 GETMET R3 R3 K33
+ 0x5C140200, // 0002 MOVE R5 R1
+ 0x5C180400, // 0003 MOVE R6 R2
+ 0x7C0C0600, // 0004 CALL R3 3
+ 0x780E0003, // 0005 JMPF R3 #000A
+ 0x88100112, // 0006 GETMBR R4 R0 K18
+ 0x8C100922, // 0007 GETMET R4 R4 K34
+ 0x7C100200, // 0008 CALL R4 1
+ 0x90022604, // 0009 SETMBR R0 K19 R4
+ 0x80040600, // 000A RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_ca
+********************************************************************/
+be_local_closure(class_Matter_Session_get_ca, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(get_ca),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 3]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040323, // 0001 GETMBR R1 R1 K35
+ 0x80040200, // 0002 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_fabric_index
+********************************************************************/
+be_local_closure(class_Matter_Session_get_fabric_index, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(get_fabric_index),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x78060002, // 0001 JMPF R1 #0005
+ 0x88040100, // 0002 GETMBR R1 R0 K0
+ 0x88040324, // 0003 GETMBR R1 R1 K36
+ 0x70020000, // 0004 JMP #0006
+ 0x4C040000, // 0005 LDNIL R1
+ 0x80040200, // 0006 RET 1 R1
})
)
);
@@ -342,24 +501,21 @@ be_local_closure(class_Matter_Session_set_keys, /* name */
/********************************************************************
** Solidified function: get_r2i
********************************************************************/
-extern const bclass be_class_Matter_Session;
be_local_closure(class_Matter_Session_get_r2i, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(r2ikey),
- }),
+ &be_ktab_class_Matter_Session, /* shared constants */
be_str_weak(get_r2i),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040125, // 0000 GETMBR R1 R0 K37
0x80040200, // 0001 RET 1 R1
})
)
@@ -367,82 +523,452 @@ be_local_closure(class_Matter_Session_get_r2i, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: counter_snd_next
+********************************************************************/
+be_local_closure(class_Matter_Session_counter_snd_next, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(counter_snd_next),
+ &be_const_str_solidified,
+ ( &(const binstruction[19]) { /* code */
+ 0x8804010F, // 0000 GETMBR R1 R0 K15
+ 0x8C040315, // 0001 GETMET R1 R1 K21
+ 0x7C040200, // 0002 CALL R1 1
+ 0xB80A2000, // 0003 GETNGBL R2 K16
+ 0x88080511, // 0004 GETMBR R2 R2 K17
+ 0x8C080526, // 0005 GETMET R2 R2 K38
+ 0x5C100200, // 0006 MOVE R4 R1
+ 0x88140114, // 0007 GETMBR R5 R0 K20
+ 0x7C080600, // 0008 CALL R2 3
+ 0x780A0007, // 0009 JMPF R2 #0012
+ 0x88080116, // 000A GETMBR R2 R0 K22
+ 0x00080202, // 000B ADD R2 R1 R2
+ 0x90022802, // 000C SETMBR R0 K20 R2
+ 0x8C080127, // 000D GETMET R2 R0 K39
+ 0x7C080200, // 000E CALL R2 1
+ 0x780A0001, // 000F JMPF R2 #0012
+ 0x8C080128, // 0010 GETMET R2 R0 K40
+ 0x7C080200, // 0011 CALL R2 1
+ 0x80040200, // 0012 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_temp_ca_pub
+********************************************************************/
+be_local_closure(class_Matter_Session_get_temp_ca_pub, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(get_temp_ca_pub),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0x88040129, // 0000 GETMBR R1 R0 K41
+ 0x78060008, // 0001 JMPF R1 #000B
+ 0xB80A2000, // 0002 GETNGBL R2 K16
+ 0x8808052A, // 0003 GETMBR R2 R2 K42
+ 0x8C08052B, // 0004 GETMET R2 R2 K43
+ 0x5C100200, // 0005 MOVE R4 R1
+ 0x7C080400, // 0006 CALL R2 2
+ 0x8C0C052C, // 0007 GETMET R3 R2 K44
+ 0x54160008, // 0008 LDINT R5 9
+ 0x7C0C0400, // 0009 CALL R3 2
+ 0x80040600, // 000A RET 1 R3
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_temp_ca
+********************************************************************/
+be_local_closure(class_Matter_Session_get_temp_ca, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(get_temp_ca),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040129, // 0000 GETMBR R1 R0 K41
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_fabric_id
+********************************************************************/
+be_local_closure(class_Matter_Session_get_fabric_id, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(get_fabric_id),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 3]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804032D, // 0001 GETMBR R1 R1 K45
+ 0x80040200, // 0002 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_mode_PASE
+********************************************************************/
+be_local_closure(class_Matter_Session_set_mode_PASE, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(set_mode_PASE),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8C040106, // 0000 GETMET R1 R0 K6
+ 0x880C012E, // 0001 GETMBR R3 R0 K46
+ 0x7C040400, // 0002 CALL R1 2
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_fabric_label
+********************************************************************/
+be_local_closure(class_Matter_Session_get_fabric_label, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(get_fabric_label),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x78060002, // 0001 JMPF R1 #0005
+ 0x88040100, // 0002 GETMBR R1 R0 K0
+ 0x8804032F, // 0003 GETMBR R1 R1 K47
+ 0x70020000, // 0004 JMP #0006
+ 0x4C040000, // 0005 LDNIL R1
+ 0x80040200, // 0006 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: update
+********************************************************************/
+be_local_closure(class_Matter_Session_update, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(update),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0xB8066200, // 0000 GETNGBL R1 K49
+ 0x8C040332, // 0001 GETMET R1 R1 K50
+ 0x7C040200, // 0002 CALL R1 1
+ 0x90026001, // 0003 SETMBR R0 K48 R1
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_icac
+********************************************************************/
+be_local_closure(class_Matter_Session_get_icac, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(get_icac),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 3]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040333, // 0001 GETMBR R1 R1 K51
+ 0x80040200, // 0002 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: is_PASE
+********************************************************************/
+be_local_closure(class_Matter_Session_is_PASE, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(is_PASE),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x88040108, // 0000 GETMBR R1 R0 K8
+ 0x8808012E, // 0001 GETMBR R2 R0 K46
+ 0x1C040202, // 0002 EQ R1 R1 R2
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_fabric_label
+********************************************************************/
+be_local_closure(class_Matter_Session_set_fabric_label, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(set_fabric_label),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 8]) { /* code */
+ 0x60080004, // 0000 GETGBL R2 G4
+ 0x5C0C0200, // 0001 MOVE R3 R1
+ 0x7C080200, // 0002 CALL R2 1
+ 0x1C080534, // 0003 EQ R2 R2 K52
+ 0x780A0001, // 0004 JMPF R2 #0007
+ 0x88080100, // 0005 GETMBR R2 R0 K0
+ 0x900A5E01, // 0006 SETMBR R2 K47 R1
+ 0x80000000, // 0007 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_node_id
+********************************************************************/
+be_local_closure(class_Matter_Session_get_node_id, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(get_node_id),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x78060002, // 0001 JMPF R1 #0005
+ 0x88040100, // 0002 GETMBR R1 R0 K0
+ 0x88040301, // 0003 GETMBR R1 R1 K1
+ 0x70020000, // 0004 JMP #0006
+ 0x4C040000, // 0005 LDNIL R1
+ 0x80040200, // 0006 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_ca_pub
+********************************************************************/
+be_local_closure(class_Matter_Session_get_ca_pub, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(get_ca_pub),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8C040335, // 0001 GETMET R1 R1 K53
+ 0x7C040200, // 0002 CALL R1 1
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_pk
+********************************************************************/
+be_local_closure(class_Matter_Session_get_pk, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(get_pk),
+ &be_const_str_solidified,
+ ( &(const binstruction[17]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x78060004, // 0001 JMPF R1 #0007
+ 0x88040100, // 0002 GETMBR R1 R0 K0
+ 0x8C040336, // 0003 GETMET R1 R1 K54
+ 0x7C040200, // 0004 CALL R1 1
+ 0x80040200, // 0005 RET 1 R1
+ 0x70020008, // 0006 JMP #0010
+ 0x88040137, // 0007 GETMBR R1 R0 K55
+ 0x74060004, // 0008 JMPT R1 #000E
+ 0xA4061600, // 0009 IMPORT R1 K11
+ 0x8C08031B, // 000A GETMET R2 R1 K27
+ 0x5412001F, // 000B LDINT R4 32
+ 0x7C080400, // 000C CALL R2 2
+ 0x90026E02, // 000D SETMBR R0 K55 R2
+ 0x88040137, // 000E GETMBR R1 R0 K55
+ 0x80040200, // 000F RET 1 R1
+ 0x80000000, // 0010 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: tojson
********************************************************************/
-extern const bclass be_class_Matter_Session;
be_local_closure(class_Matter_Session_tojson, /* name */
be_nested_proto(
16, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[22]) { /* constants */
- /* K0 */ be_nested_str_weak(json),
- /* K1 */ be_nested_str_weak(introspect),
- /* K2 */ be_nested_str_weak(persist_pre),
- /* K3 */ be_nested_str_weak(members),
- /* K4 */ be_nested_str_weak(get),
- /* K5 */ be_nested_str_weak(function),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(_),
- /* K8 */ be_nested_str_weak(push),
- /* K9 */ be_nested_str_weak(stop_iteration),
- /* K10 */ be_nested_str_weak(matter),
- /* K11 */ be_nested_str_weak(sort),
- /* K12 */ be_nested_str_weak(_X24_X24),
- /* K13 */ be_nested_str_weak(tob64),
- /* K14 */ be_nested_str_weak(instance),
- /* K15 */ be_nested_str_weak(_X25s_X3A_X25s),
- /* K16 */ be_nested_str_weak(dump),
- /* K17 */ be_nested_str_weak(persist_post),
- /* K18 */ be_nested_str_weak(_X7B),
- /* K19 */ be_nested_str_weak(concat),
- /* K20 */ be_nested_str_weak(_X2C),
- /* K21 */ be_nested_str_weak(_X7D),
- }),
+ &be_ktab_class_Matter_Session, /* shared constants */
be_str_weak(tojson),
&be_const_str_solidified,
( &(const binstruction[95]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xA40A0200, // 0001 IMPORT R2 K1
- 0x8C0C0102, // 0002 GETMET R3 R0 K2
+ 0xA4067000, // 0000 IMPORT R1 K56
+ 0xA40A7200, // 0001 IMPORT R2 K57
+ 0x8C0C013A, // 0002 GETMET R3 R0 K58
0x7C0C0200, // 0003 CALL R3 1
0x600C0012, // 0004 GETGBL R3 G18
0x7C0C0000, // 0005 CALL R3 0
0x60100010, // 0006 GETGBL R4 G16
- 0x8C140503, // 0007 GETMET R5 R2 K3
+ 0x8C14053B, // 0007 GETMET R5 R2 K59
0x5C1C0000, // 0008 MOVE R7 R0
0x7C140400, // 0009 CALL R5 2
0x7C100200, // 000A CALL R4 1
0xA8020011, // 000B EXBLK 0 #001E
0x5C140800, // 000C MOVE R5 R4
0x7C140000, // 000D CALL R5 0
- 0x8C180504, // 000E GETMET R6 R2 K4
+ 0x8C18051D, // 000E GETMET R6 R2 K29
0x5C200000, // 000F MOVE R8 R0
0x5C240A00, // 0010 MOVE R9 R5
0x7C180600, // 0011 CALL R6 3
0x601C0004, // 0012 GETGBL R7 G4
0x5C200C00, // 0013 MOVE R8 R6
0x7C1C0200, // 0014 CALL R7 1
- 0x201C0F05, // 0015 NE R7 R7 K5
+ 0x201C0F3C, // 0015 NE R7 R7 K60
0x781E0005, // 0016 JMPF R7 #001D
- 0x941C0B06, // 0017 GETIDX R7 R5 K6
- 0x201C0F07, // 0018 NE R7 R7 K7
+ 0x941C0B0D, // 0017 GETIDX R7 R5 K13
+ 0x201C0F3D, // 0018 NE R7 R7 K61
0x781E0002, // 0019 JMPF R7 #001D
- 0x8C1C0708, // 001A GETMET R7 R3 K8
+ 0x8C1C073E, // 001A GETMET R7 R3 K62
0x5C240A00, // 001B MOVE R9 R5
0x7C1C0400, // 001C CALL R7 2
0x7001FFED, // 001D JMP #000C
- 0x58100009, // 001E LDCONST R4 K9
+ 0x5810003F, // 001E LDCONST R4 K63
0xAC100200, // 001F CATCH R4 1 0
0xB0080000, // 0020 RAISE 2 R0 R0
- 0xB8121400, // 0021 GETNGBL R4 K10
- 0x8C10090B, // 0022 GETMET R4 R4 K11
+ 0xB8122000, // 0021 GETNGBL R4 K16
+ 0x8C100940, // 0022 GETMET R4 R4 K64
0x5C180600, // 0023 MOVE R6 R3
0x7C100400, // 0024 CALL R4 2
0x5C0C0800, // 0025 MOVE R3 R4
@@ -454,7 +980,7 @@ be_local_closure(class_Matter_Session_tojson, /* name */
0xA8020027, // 002B EXBLK 0 #0054
0x5C180A00, // 002C MOVE R6 R5
0x7C180000, // 002D CALL R6 0
- 0x8C1C0504, // 002E GETMET R7 R2 K4
+ 0x8C1C051D, // 002E GETMET R7 R2 K29
0x5C240000, // 002F MOVE R9 R0
0x5C280C00, // 0030 MOVE R10 R6
0x7C1C0600, // 0031 CALL R7 3
@@ -467,41 +993,41 @@ be_local_closure(class_Matter_Session_tojson, /* name */
0x60280015, // 0038 GETGBL R10 G21
0x7C200400, // 0039 CALL R8 2
0x78220004, // 003A JMPF R8 #0040
- 0x8C200F0D, // 003B GETMET R8 R7 K13
+ 0x8C200F42, // 003B GETMET R8 R7 K66
0x7C200200, // 003C CALL R8 1
- 0x00221808, // 003D ADD R8 K12 R8
+ 0x00228208, // 003D ADD R8 K65 R8
0x5C1C1000, // 003E MOVE R7 R8
0x70020005, // 003F JMP #0046
0x60200004, // 0040 GETGBL R8 G4
0x5C240E00, // 0041 MOVE R9 R7
0x7C200200, // 0042 CALL R8 1
- 0x1C20110E, // 0043 EQ R8 R8 K14
+ 0x1C201143, // 0043 EQ R8 R8 K67
0x78220000, // 0044 JMPF R8 #0046
0x7001FFE5, // 0045 JMP #002C
- 0x8C200908, // 0046 GETMET R8 R4 K8
+ 0x8C20093E, // 0046 GETMET R8 R4 K62
0x60280018, // 0047 GETGBL R10 G24
- 0x582C000F, // 0048 LDCONST R11 K15
- 0x8C300310, // 0049 GETMET R12 R1 K16
+ 0x582C0044, // 0048 LDCONST R11 K68
+ 0x8C300345, // 0049 GETMET R12 R1 K69
0x60380008, // 004A GETGBL R14 G8
0x5C3C0C00, // 004B MOVE R15 R6
0x7C380200, // 004C CALL R14 1
0x7C300400, // 004D CALL R12 2
- 0x8C340310, // 004E GETMET R13 R1 K16
+ 0x8C340345, // 004E GETMET R13 R1 K69
0x5C3C0E00, // 004F MOVE R15 R7
0x7C340400, // 0050 CALL R13 2
0x7C280600, // 0051 CALL R10 3
0x7C200400, // 0052 CALL R8 2
0x7001FFD7, // 0053 JMP #002C
- 0x58140009, // 0054 LDCONST R5 K9
+ 0x5814003F, // 0054 LDCONST R5 K63
0xAC140200, // 0055 CATCH R5 1 0
0xB0080000, // 0056 RAISE 2 R0 R0
- 0x8C140111, // 0057 GETMET R5 R0 K17
+ 0x8C140146, // 0057 GETMET R5 R0 K70
0x7C140200, // 0058 CALL R5 1
- 0x8C140913, // 0059 GETMET R5 R4 K19
- 0x581C0014, // 005A LDCONST R7 K20
+ 0x8C140948, // 0059 GETMET R5 R4 K72
+ 0x581C0049, // 005A LDCONST R7 K73
0x7C140400, // 005B CALL R5 2
- 0x00162405, // 005C ADD R5 K18 R5
- 0x00140B15, // 005D ADD R5 R5 K21
+ 0x00168E05, // 005C ADD R5 K71 R5
+ 0x00140B4A, // 005D ADD R5 R5 K74
0x80040A00, // 005E RET 1 R5
})
)
@@ -509,54 +1035,212 @@ be_local_closure(class_Matter_Session_tojson, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: close
+********************************************************************/
+be_local_closure(class_Matter_Session_close, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(close),
+ &be_const_str_solidified,
+ ( &(const binstruction[59]) { /* code */
+ 0x8804014B, // 0000 GETMBR R1 R0 K75
+ 0x90020801, // 0001 SETMBR R0 K4 R1
+ 0x8804014C, // 0002 GETMBR R1 R0 K76
+ 0x90021C01, // 0003 SETMBR R0 K14 R1
+ 0x88040112, // 0004 GETMBR R1 R0 K18
+ 0x8C04034D, // 0005 GETMET R1 R1 K77
+ 0x7C040200, // 0006 CALL R1 1
+ 0x8804010F, // 0007 GETMBR R1 R0 K15
+ 0x8C04034D, // 0008 GETMET R1 R1 K77
+ 0x7C040200, // 0009 CALL R1 1
+ 0x9002270D, // 000A SETMBR R0 K19 K13
+ 0x8804010F, // 000B GETMBR R1 R0 K15
+ 0x8C040315, // 000C GETMET R1 R1 K21
+ 0x7C040200, // 000D CALL R1 1
+ 0x90022801, // 000E SETMBR R0 K20 R1
+ 0x4C040000, // 000F LDNIL R1
+ 0x90024001, // 0010 SETMBR R0 K32 R1
+ 0x4C040000, // 0011 LDNIL R1
+ 0x90029C01, // 0012 SETMBR R0 K78 R1
+ 0x4C040000, // 0013 LDNIL R1
+ 0x90024A01, // 0014 SETMBR R0 K37 R1
+ 0x4C040000, // 0015 LDNIL R1
+ 0x90029E01, // 0016 SETMBR R0 K79 R1
+ 0xA4067200, // 0017 IMPORT R1 K57
+ 0x60080010, // 0018 GETGBL R2 G16
+ 0x8C0C033B, // 0019 GETMET R3 R1 K59
+ 0x5C140000, // 001A MOVE R5 R0
+ 0x7C0C0400, // 001B CALL R3 2
+ 0x7C080200, // 001C CALL R2 1
+ 0xA8020018, // 001D EXBLK 0 #0037
+ 0x5C0C0400, // 001E MOVE R3 R2
+ 0x7C0C0000, // 001F CALL R3 0
+ 0x8C10031D, // 0020 GETMET R4 R1 K29
+ 0x5C180000, // 0021 MOVE R6 R0
+ 0x5C1C0600, // 0022 MOVE R7 R3
+ 0x7C100600, // 0023 CALL R4 3
+ 0x60140004, // 0024 GETGBL R5 G4
+ 0x5C180800, // 0025 MOVE R6 R4
+ 0x7C140200, // 0026 CALL R5 1
+ 0x20140B3C, // 0027 NE R5 R5 K60
+ 0x7816000C, // 0028 JMPF R5 #0036
+ 0x60140004, // 0029 GETGBL R5 G4
+ 0x5C180800, // 002A MOVE R6 R4
+ 0x7C140200, // 002B CALL R5 1
+ 0x20140B43, // 002C NE R5 R5 K67
+ 0x78160007, // 002D JMPF R5 #0036
+ 0x9414070D, // 002E GETIDX R5 R3 K13
+ 0x1C140B3D, // 002F EQ R5 R5 K61
+ 0x78160004, // 0030 JMPF R5 #0036
+ 0x94140750, // 0031 GETIDX R5 R3 K80
+ 0x1C140B3D, // 0032 EQ R5 R5 K61
+ 0x78160001, // 0033 JMPF R5 #0036
+ 0x4C140000, // 0034 LDNIL R5
+ 0x90000605, // 0035 SETMBR R0 R3 R5
+ 0x7001FFE6, // 0036 JMP #001E
+ 0x5808003F, // 0037 LDCONST R2 K63
+ 0xAC080200, // 0038 CATCH R2 1 0
+ 0xB0080000, // 0039 RAISE 2 R0 R0
+ 0x80000000, // 003A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_ac
+********************************************************************/
+be_local_closure(class_Matter_Session_get_ac, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(get_ac),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x8804014F, // 0000 GETMBR R1 R0 K79
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_fabric
+********************************************************************/
+be_local_closure(class_Matter_Session_get_fabric, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(get_fabric),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_i2r_privacy
+********************************************************************/
+be_local_closure(class_Matter_Session_get_i2r_privacy, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(get_i2r_privacy),
+ &be_const_str_solidified,
+ ( &(const binstruction[22]) { /* code */
+ 0x8804014E, // 0000 GETMBR R1 R0 K78
+ 0x4C080000, // 0001 LDNIL R2
+ 0x1C040202, // 0002 EQ R1 R1 R2
+ 0x7806000F, // 0003 JMPF R1 #0014
+ 0xA4061600, // 0004 IMPORT R1 K11
+ 0x8C080351, // 0005 GETMET R2 R1 K81
+ 0x7C080200, // 0006 CALL R2 1
+ 0x8C080552, // 0007 GETMET R2 R2 K82
+ 0x8C100153, // 0008 GETMET R4 R0 K83
+ 0x7C100200, // 0009 CALL R4 1
+ 0x60140015, // 000A GETGBL R5 G21
+ 0x7C140000, // 000B CALL R5 0
+ 0x60180015, // 000C GETGBL R6 G21
+ 0x7C180000, // 000D CALL R6 0
+ 0x8C180D54, // 000E GETMET R6 R6 K84
+ 0x58200055, // 000F LDCONST R8 K85
+ 0x7C180400, // 0010 CALL R6 2
+ 0x541E000F, // 0011 LDINT R7 16
+ 0x7C080A00, // 0012 CALL R2 5
+ 0x90029C02, // 0013 SETMBR R0 K78 R2
+ 0x8804014E, // 0014 GETMBR R1 R0 K78
+ 0x80040200, // 0015 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: fromjson
********************************************************************/
-extern const bclass be_class_Matter_Session;
be_local_closure(class_Matter_Session_fromjson, /* name */
be_nested_proto(
17, /* nstack */
3, /* argc */
- 4, /* varg */
+ 12, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_Session),
- /* K1 */ be_nested_str_weak(string),
- /* K2 */ be_nested_str_weak(introspect),
- /* K3 */ be_nested_str_weak(matter),
- /* K4 */ be_nested_str_weak(Session),
- /* K5 */ be_nested_str_weak(keys),
- /* K6 */ be_nested_str_weak(find),
- /* K7 */ be_nested_str_weak(0x),
- /* K8 */ be_const_int(0),
- /* K9 */ be_nested_str_weak(set),
- /* K10 */ be_nested_str_weak(fromhex),
- /* K11 */ be_const_int(2),
- /* K12 */ be_const_int(2147483647),
- /* K13 */ be_nested_str_weak(_X24_X24),
- /* K14 */ be_nested_str_weak(fromb64),
- /* K15 */ be_nested_str_weak(stop_iteration),
- /* K16 */ be_nested_str_weak(hydrate_post),
- }),
+ &be_ktab_class_Matter_Session, /* shared constants */
be_str_weak(fromjson),
&be_const_str_solidified,
( &(const binstruction[75]) { /* code */
- 0x580C0000, // 0000 LDCONST R3 K0
- 0xA4120200, // 0001 IMPORT R4 K1
- 0xA4160400, // 0002 IMPORT R5 K2
- 0xB81A0600, // 0003 GETNGBL R6 K3
- 0x8C180D04, // 0004 GETMET R6 R6 K4
+ 0x580C0056, // 0000 LDCONST R3 K86
+ 0xA4126800, // 0001 IMPORT R4 K52
+ 0xA4167200, // 0002 IMPORT R5 K57
+ 0xB81A2000, // 0003 GETNGBL R6 K16
+ 0x8C180D57, // 0004 GETMET R6 R6 K87
0x5C200000, // 0005 MOVE R8 R0
0x4C240000, // 0006 LDNIL R9
0x4C280000, // 0007 LDNIL R10
0x5C2C0400, // 0008 MOVE R11 R2
0x7C180A00, // 0009 CALL R6 5
0x601C0010, // 000A GETGBL R7 G16
- 0x8C200305, // 000B GETMET R8 R1 K5
+ 0x8C200358, // 000B GETMET R8 R1 K88
0x7C200200, // 000C CALL R8 1
0x7C1C0200, // 000D CALL R7 1
0xA8020035, // 000E EXBLK 0 #0045
@@ -566,58 +1250,58 @@ be_local_closure(class_Matter_Session_fromjson, /* name */
0x60280004, // 0012 GETGBL R10 G4
0x5C2C1200, // 0013 MOVE R11 R9
0x7C280200, // 0014 CALL R10 1
- 0x1C281501, // 0015 EQ R10 R10 K1
+ 0x1C281534, // 0015 EQ R10 R10 K52
0x782A0027, // 0016 JMPF R10 #003F
- 0x8C280906, // 0017 GETMET R10 R4 K6
+ 0x8C280959, // 0017 GETMET R10 R4 K89
0x5C301200, // 0018 MOVE R12 R9
- 0x58340007, // 0019 LDCONST R13 K7
+ 0x5834005A, // 0019 LDCONST R13 K90
0x7C280600, // 001A CALL R10 3
- 0x1C281508, // 001B EQ R10 R10 K8
+ 0x1C28150D, // 001B EQ R10 R10 K13
0x782A000A, // 001C JMPF R10 #0028
- 0x8C280B09, // 001D GETMET R10 R5 K9
+ 0x8C280B5B, // 001D GETMET R10 R5 K91
0x5C300C00, // 001E MOVE R12 R6
0x5C341000, // 001F MOVE R13 R8
0x60380015, // 0020 GETGBL R14 G21
0x7C380000, // 0021 CALL R14 0
- 0x8C381D0A, // 0022 GETMET R14 R14 K10
- 0x4042170C, // 0023 CONNECT R16 K11 K12
+ 0x8C381D5C, // 0022 GETMET R14 R14 K92
+ 0x4042395D, // 0023 CONNECT R16 K28 K93
0x94401210, // 0024 GETIDX R16 R9 R16
0x7C380400, // 0025 CALL R14 2
0x7C280800, // 0026 CALL R10 4
0x70020015, // 0027 JMP #003E
- 0x8C280906, // 0028 GETMET R10 R4 K6
+ 0x8C280959, // 0028 GETMET R10 R4 K89
0x5C301200, // 0029 MOVE R12 R9
- 0x5834000D, // 002A LDCONST R13 K13
+ 0x58340041, // 002A LDCONST R13 K65
0x7C280600, // 002B CALL R10 3
- 0x1C281508, // 002C EQ R10 R10 K8
+ 0x1C28150D, // 002C EQ R10 R10 K13
0x782A000A, // 002D JMPF R10 #0039
- 0x8C280B09, // 002E GETMET R10 R5 K9
+ 0x8C280B5B, // 002E GETMET R10 R5 K91
0x5C300C00, // 002F MOVE R12 R6
0x5C341000, // 0030 MOVE R13 R8
0x60380015, // 0031 GETGBL R14 G21
0x7C380000, // 0032 CALL R14 0
- 0x8C381D0E, // 0033 GETMET R14 R14 K14
- 0x4042170C, // 0034 CONNECT R16 K11 K12
+ 0x8C381D5E, // 0033 GETMET R14 R14 K94
+ 0x4042395D, // 0034 CONNECT R16 K28 K93
0x94401210, // 0035 GETIDX R16 R9 R16
0x7C380400, // 0036 CALL R14 2
0x7C280800, // 0037 CALL R10 4
0x70020004, // 0038 JMP #003E
- 0x8C280B09, // 0039 GETMET R10 R5 K9
+ 0x8C280B5B, // 0039 GETMET R10 R5 K91
0x5C300C00, // 003A MOVE R12 R6
0x5C341000, // 003B MOVE R13 R8
0x5C381200, // 003C MOVE R14 R9
0x7C280800, // 003D CALL R10 4
0x70020004, // 003E JMP #0044
- 0x8C280B09, // 003F GETMET R10 R5 K9
+ 0x8C280B5B, // 003F GETMET R10 R5 K91
0x5C300C00, // 0040 MOVE R12 R6
0x5C341000, // 0041 MOVE R13 R8
0x5C381200, // 0042 MOVE R14 R9
0x7C280800, // 0043 CALL R10 4
0x7001FFC9, // 0044 JMP #000F
- 0x581C000F, // 0045 LDCONST R7 K15
+ 0x581C003F, // 0045 LDCONST R7 K63
0xAC1C0200, // 0046 CATCH R7 1 0
0xB0080000, // 0047 RAISE 2 R0 R0
- 0x8C1C0D10, // 0048 GETMET R7 R6 K16
+ 0x8C1C0D5F, // 0048 GETMET R7 R6 K95
0x7C1C0200, // 0049 CALL R7 1
0x80040C00, // 004A RET 1 R6
})
@@ -626,77 +1310,321 @@ be_local_closure(class_Matter_Session_fromjson, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: save
+********************************************************************/
+be_local_closure(class_Matter_Session_save, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(save),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8804010C, // 0000 GETMBR R1 R0 K12
+ 0x8C040360, // 0001 GETMET R1 R1 K96
+ 0x7C040200, // 0002 CALL R1 1
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: hydrate_post
+********************************************************************/
+be_local_closure(class_Matter_Session_hydrate_post, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(hydrate_post),
+ &be_const_str_solidified,
+ ( &(const binstruction[17]) { /* code */
+ 0x8804010F, // 0000 GETMBR R1 R0 K15
+ 0x8C04034D, // 0001 GETMET R1 R1 K77
+ 0x880C0114, // 0002 GETMBR R3 R0 K20
+ 0x7C040400, // 0003 CALL R1 2
+ 0x88040112, // 0004 GETMBR R1 R0 K18
+ 0x8C04034D, // 0005 GETMET R1 R1 K77
+ 0x880C0113, // 0006 GETMBR R3 R0 K19
+ 0x7C040400, // 0007 CALL R1 2
+ 0x8804010F, // 0008 GETMBR R1 R0 K15
+ 0x8C040322, // 0009 GETMET R1 R1 K34
+ 0x7C040200, // 000A CALL R1 1
+ 0x90022801, // 000B SETMBR R0 K20 R1
+ 0x88040112, // 000C GETMBR R1 R0 K18
+ 0x8C040322, // 000D GETMET R1 R1 K34
+ 0x7C040200, // 000E CALL R1 1
+ 0x90022601, // 000F SETMBR R0 K19 R1
+ 0x80000000, // 0010 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_admin_subject
+********************************************************************/
+be_local_closure(class_Matter_Session_get_admin_subject, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(get_admin_subject),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x78060002, // 0001 JMPF R1 #0005
+ 0x88040100, // 0002 GETMBR R1 R0 K0
+ 0x88040361, // 0003 GETMBR R1 R1 K97
+ 0x70020000, // 0004 JMP #0006
+ 0x4C040000, // 0005 LDNIL R1
+ 0x80040200, // 0006 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_ipk_epoch_key
+********************************************************************/
+be_local_closure(class_Matter_Session_get_ipk_epoch_key, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(get_ipk_epoch_key),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 3]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040362, // 0001 GETMBR R1 R1 K98
+ 0x80040200, // 0002 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_fabric_compressed
+********************************************************************/
+be_local_closure(class_Matter_Session_get_fabric_compressed, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(get_fabric_compressed),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x78060002, // 0001 JMPF R1 #0005
+ 0x88040100, // 0002 GETMBR R1 R0 K0
+ 0x88040363, // 0003 GETMBR R1 R1 K99
+ 0x70020000, // 0004 JMP #0006
+ 0x4C040000, // 0005 LDNIL R1
+ 0x80040200, // 0006 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_mode
+********************************************************************/
+be_local_closure(class_Matter_Session_get_mode, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(get_mode),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040108, // 0000 GETMBR R1 R0 K8
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_temp_ca
+********************************************************************/
+be_local_closure(class_Matter_Session_set_temp_ca, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(set_temp_ca),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x90025201, // 0000 SETMBR R0 K41 R1
+ 0x80000000, // 0001 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_mode
+********************************************************************/
+be_local_closure(class_Matter_Session_set_mode, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(set_mode),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x90021001, // 0000 SETMBR R0 K8 R1
+ 0x80000000, // 0001 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_keys
+********************************************************************/
+be_local_closure(class_Matter_Session_set_keys, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 5, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session, /* shared constants */
+ be_str_weak(set_keys),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x90024001, // 0000 SETMBR R0 K32 R1
+ 0x4C140000, // 0001 LDNIL R5
+ 0x90029C05, // 0002 SETMBR R0 K78 R5
+ 0x90024A02, // 0003 SETMBR R0 K37 R2
+ 0x90029E03, // 0004 SETMBR R0 K79 R3
+ 0x9002C804, // 0005 SETMBR R0 K100 R4
+ 0x80000000, // 0006 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified function: gen_CSR
********************************************************************/
-extern const bclass be_class_Matter_Session;
be_local_closure(class_Matter_Session_gen_CSR, /* name */
be_nested_proto(
15, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(get_pk),
- /* K1 */ be_nested_str_weak(crypto),
- /* K2 */ be_nested_str_weak(EC_P256),
- /* K3 */ be_nested_str_weak(public_key),
- /* K4 */ be_nested_str_weak(3070020100300E310C300A060355040A0C034353523059301306072A8648CE3D020106082A8648CE3D030107034200),
- /* K5 */ be_nested_str_weak(A000),
- /* K6 */ be_nested_str_weak(300C06082A8648CE3D0403020500),
- /* K7 */ be_nested_str_weak(ecdsa_sign_sha256_asn1),
- /* K8 */ be_nested_str_weak(add),
- /* K9 */ be_const_int(3),
- /* K10 */ be_const_int(1),
- /* K11 */ be_const_int(0),
- }),
+ &be_ktab_class_Matter_Session, /* shared constants */
be_str_weak(gen_CSR),
&be_const_str_solidified,
( &(const binstruction[73]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040136, // 0000 GETMET R1 R0 K54
0x7C040200, // 0001 CALL R1 1
- 0xA40A0200, // 0002 IMPORT R2 K1
- 0x8C0C0502, // 0003 GETMET R3 R2 K2
+ 0xA40A1600, // 0002 IMPORT R2 K11
+ 0x8C0C0565, // 0003 GETMET R3 R2 K101
0x7C0C0200, // 0004 CALL R3 1
- 0x8C100703, // 0005 GETMET R4 R3 K3
+ 0x8C100766, // 0005 GETMET R4 R3 K102
0x5C180200, // 0006 MOVE R6 R1
0x7C100400, // 0007 CALL R4 2
0x60140015, // 0008 GETGBL R5 G21
- 0x58180004, // 0009 LDCONST R6 K4
+ 0x58180067, // 0009 LDCONST R6 K103
0x7C140200, // 000A CALL R5 1
0x40180A04, // 000B CONNECT R6 R5 R4
0x60180015, // 000C GETGBL R6 G21
- 0x581C0005, // 000D LDCONST R7 K5
+ 0x581C0068, // 000D LDCONST R7 K104
0x7C180200, // 000E CALL R6 1
0x40180A06, // 000F CONNECT R6 R5 R6
0x60180015, // 0010 GETGBL R6 G21
- 0x581C0006, // 0011 LDCONST R7 K6
+ 0x581C0069, // 0011 LDCONST R7 K105
0x7C180200, // 0012 CALL R6 1
- 0x8C1C0707, // 0013 GETMET R7 R3 K7
+ 0x8C1C076A, // 0013 GETMET R7 R3 K106
0x5C240200, // 0014 MOVE R9 R1
0x5C280A00, // 0015 MOVE R10 R5
0x7C1C0600, // 0016 CALL R7 3
0x60200015, // 0017 GETGBL R8 G21
0x5426007F, // 0018 LDINT R9 128
0x7C200200, // 0019 CALL R8 1
- 0x8C241108, // 001A GETMET R9 R8 K8
- 0x582C0009, // 001B LDCONST R11 K9
- 0x5830000A, // 001C LDCONST R12 K10
+ 0x8C24116B, // 001A GETMET R9 R8 K107
+ 0x582C0005, // 001B LDCONST R11 K5
+ 0x58300050, // 001C LDCONST R12 K80
0x7C240600, // 001D CALL R9 3
- 0x8C241108, // 001E GETMET R9 R8 K8
+ 0x8C24116B, // 001E GETMET R9 R8 K107
0x602C000C, // 001F GETGBL R11 G12
0x5C300E00, // 0020 MOVE R12 R7
0x7C2C0200, // 0021 CALL R11 1
- 0x002C170A, // 0022 ADD R11 R11 K10
- 0x5830000A, // 0023 LDCONST R12 K10
+ 0x002C1750, // 0022 ADD R11 R11 K80
+ 0x58300050, // 0023 LDCONST R12 K80
0x7C240600, // 0024 CALL R9 3
- 0x8C241108, // 0025 GETMET R9 R8 K8
- 0x582C000B, // 0026 LDCONST R11 K11
- 0x5830000A, // 0027 LDCONST R12 K10
+ 0x8C24116B, // 0025 GETMET R9 R8 K107
+ 0x582C000D, // 0026 LDCONST R11 K13
+ 0x58300050, // 0027 LDCONST R12 K80
0x7C240600, // 0028 CALL R9 3
0x40241007, // 0029 CONNECT R9 R8 R7
0x6024000C, // 002A GETGBL R9 G12
@@ -713,18 +1641,18 @@ be_local_closure(class_Matter_Session_gen_CSR, /* name */
0x60280015, // 0035 GETGBL R10 G21
0x542E00CF, // 0036 LDINT R11 208
0x7C280200, // 0037 CALL R10 1
- 0x8C2C1508, // 0038 GETMET R11 R10 K8
+ 0x8C2C156B, // 0038 GETMET R11 R10 K107
0x5436002F, // 0039 LDINT R13 48
- 0x5838000A, // 003A LDCONST R14 K10
+ 0x58380050, // 003A LDCONST R14 K80
0x7C2C0600, // 003B CALL R11 3
- 0x8C2C1508, // 003C GETMET R11 R10 K8
+ 0x8C2C156B, // 003C GETMET R11 R10 K107
0x54360080, // 003D LDINT R13 129
- 0x5838000A, // 003E LDCONST R14 K10
+ 0x58380050, // 003E LDCONST R14 K80
0x7C2C0600, // 003F CALL R11 3
- 0x8C2C1508, // 0040 GETMET R11 R10 K8
+ 0x8C2C156B, // 0040 GETMET R11 R10 K107
0x543600FE, // 0041 LDINT R13 255
0x2C34120D, // 0042 AND R13 R9 R13
- 0x5838000A, // 0043 LDCONST R14 K10
+ 0x58380050, // 0043 LDCONST R14 K80
0x7C2C0600, // 0044 CALL R11 3
0x402C1405, // 0045 CONNECT R11 R10 R5
0x402C1406, // 0046 CONNECT R11 R10 R6
@@ -736,391 +1664,25 @@ be_local_closure(class_Matter_Session_gen_CSR, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: get_ipk_epoch_key
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_get_ipk_epoch_key, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(ipk_epoch_key),
- }),
- be_str_weak(get_ipk_epoch_key),
- &be_const_str_solidified,
- ( &(const binstruction[ 3]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x80040200, // 0002 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: counter_rcv_validate
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_counter_rcv_validate, /* name */
- be_nested_proto(
- 7, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_counter_rcv_impl),
- /* K1 */ be_nested_str_weak(validate),
- /* K2 */ be_nested_str_weak(counter_rcv),
- /* K3 */ be_nested_str_weak(val),
- }),
- be_str_weak(counter_rcv_validate),
- &be_const_str_solidified,
- ( &(const binstruction[11]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x5C140200, // 0002 MOVE R5 R1
- 0x5C180400, // 0003 MOVE R6 R2
- 0x7C0C0600, // 0004 CALL R3 3
- 0x780E0003, // 0005 JMPF R3 #000A
- 0x88100100, // 0006 GETMBR R4 R0 K0
- 0x8C100903, // 0007 GETMET R4 R4 K3
- 0x7C100200, // 0008 CALL R4 1
- 0x90020404, // 0009 SETMBR R0 K2 R4
- 0x80040600, // 000A RET 1 R3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_admin_subject
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_get_admin_subject, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(admin_subject),
- }),
- be_str_weak(get_admin_subject),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x78060002, // 0001 JMPF R1 #0005
- 0x88040100, // 0002 GETMBR R1 R0 K0
- 0x88040301, // 0003 GETMBR R1 R1 K1
- 0x70020000, // 0004 JMP #0006
- 0x4C040000, // 0005 LDNIL R1
- 0x80040200, // 0006 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_fabric_compressed
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_get_fabric_compressed, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(fabric_compressed),
- }),
- be_str_weak(get_fabric_compressed),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x78060002, // 0001 JMPF R1 #0005
- 0x88040100, // 0002 GETMBR R1 R0 K0
- 0x88040301, // 0003 GETMBR R1 R1 K1
- 0x70020000, // 0004 JMP #0006
- 0x4C040000, // 0005 LDNIL R1
- 0x80040200, // 0006 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: persist_to_fabric
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_persist_to_fabric, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(add_session),
- }),
- be_str_weak(persist_to_fabric),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x5C0C0000, // 0002 MOVE R3 R0
- 0x7C040400, // 0003 CALL R1 2
- 0x80000000, // 0004 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_ca
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_get_ca, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(root_ca_certificate),
- }),
- be_str_weak(get_ca),
- &be_const_str_solidified,
- ( &(const binstruction[ 3]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x80040200, // 0002 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: is_PASE
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_is_PASE, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(mode),
- /* K1 */ be_nested_str_weak(_PASE),
- }),
- be_str_weak(is_PASE),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x1C040202, // 0002 EQ R1 R1 R2
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: is_CASE
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_is_CASE, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(mode),
- /* K1 */ be_nested_str_weak(_CASE),
- }),
- be_str_weak(is_CASE),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x1C040202, // 0002 EQ R1 R1 R2
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: before_remove
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_before_remove, /* name */
- be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(log),
- /* K2 */ be_nested_str_weak(MTR_X3A_X20_X2DSession_X20_X20_X20_X28_X256i_X29_X20_X28removed_X29),
- /* K3 */ be_nested_str_weak(local_session_id),
- /* K4 */ be_const_int(3),
- }),
- be_str_weak(before_remove),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x600C0018, // 0002 GETGBL R3 G24
- 0x58100002, // 0003 LDCONST R4 K2
- 0x88140103, // 0004 GETMBR R5 R0 K3
- 0x7C0C0400, // 0005 CALL R3 2
- 0x58100004, // 0006 LDCONST R4 K4
- 0x7C040600, // 0007 CALL R1 3
- 0x80000000, // 0008 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: save
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_save, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_store),
- /* K1 */ be_nested_str_weak(save_fabrics),
- }),
- be_str_weak(save),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x80000000, // 0003 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_fabric_id
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_get_fabric_id, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(fabric_id),
- }),
- be_str_weak(get_fabric_id),
- &be_const_str_solidified,
- ( &(const binstruction[ 3]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x80040200, // 0002 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: get_ipk_group_key
********************************************************************/
-extern const bclass be_class_Matter_Session;
be_local_closure(class_Matter_Session_get_ipk_group_key, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(get_ipk_group_key),
- }),
+ &be_ktab_class_Matter_Session, /* shared constants */
be_str_weak(get_ipk_group_key),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x8C04036C, // 0001 GETMET R1 R1 K108
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -1129,704 +1691,6 @@ be_local_closure(class_Matter_Session_get_ipk_group_key, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: get_temp_ca_pub
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_get_temp_ca_pub, /* name */
- be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_temp_root_ca_certificate),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(TLV),
- /* K3 */ be_nested_str_weak(parse),
- /* K4 */ be_nested_str_weak(findsubval),
- }),
- be_str_weak(get_temp_ca_pub),
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x78060008, // 0001 JMPF R1 #000B
- 0xB80A0200, // 0002 GETNGBL R2 K1
- 0x88080502, // 0003 GETMBR R2 R2 K2
- 0x8C080503, // 0004 GETMET R2 R2 K3
- 0x5C100200, // 0005 MOVE R4 R1
- 0x7C080400, // 0006 CALL R2 2
- 0x8C0C0504, // 0007 GETMET R3 R2 K4
- 0x54160008, // 0008 LDINT R5 9
- 0x7C0C0400, // 0009 CALL R3 2
- 0x80040600, // 000A RET 1 R3
- 0x80000000, // 000B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_ca_pub
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_get_ca_pub, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(get_ca_pub),
- }),
- be_str_weak(get_ca_pub),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_mode
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_get_mode, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(mode),
- }),
- be_str_weak(get_mode),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: hydrate_post
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_hydrate_post, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(_counter_snd_impl),
- /* K1 */ be_nested_str_weak(reset),
- /* K2 */ be_nested_str_weak(counter_snd),
- /* K3 */ be_nested_str_weak(_counter_rcv_impl),
- /* K4 */ be_nested_str_weak(counter_rcv),
- /* K5 */ be_nested_str_weak(val),
- }),
- be_str_weak(hydrate_post),
- &be_const_str_solidified,
- ( &(const binstruction[17]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x880C0102, // 0002 GETMBR R3 R0 K2
- 0x7C040400, // 0003 CALL R1 2
- 0x88040103, // 0004 GETMBR R1 R0 K3
- 0x8C040301, // 0005 GETMET R1 R1 K1
- 0x880C0104, // 0006 GETMBR R3 R0 K4
- 0x7C040400, // 0007 CALL R1 2
- 0x88040100, // 0008 GETMBR R1 R0 K0
- 0x8C040305, // 0009 GETMET R1 R1 K5
- 0x7C040200, // 000A CALL R1 1
- 0x90020401, // 000B SETMBR R0 K2 R1
- 0x88040103, // 000C GETMBR R1 R0 K3
- 0x8C040305, // 000D GETMET R1 R1 K5
- 0x7C040200, // 000E CALL R1 1
- 0x90020801, // 000F SETMBR R0 K4 R1
- 0x80000000, // 0010 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_fabric_label
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_get_fabric_label, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(fabric_label),
- }),
- be_str_weak(get_fabric_label),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x78060002, // 0001 JMPF R1 #0005
- 0x88040100, // 0002 GETMBR R1 R0 K0
- 0x88040301, // 0003 GETMBR R1 R1 K1
- 0x70020000, // 0004 JMP #0006
- 0x4C040000, // 0005 LDNIL R1
- 0x80040200, // 0006 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_icac
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_get_icac, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(icac),
- }),
- be_str_weak(get_icac),
- &be_const_str_solidified,
- ( &(const binstruction[ 3]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x80040200, // 0002 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_mode_CASE
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_set_mode_CASE, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(set_mode),
- /* K1 */ be_nested_str_weak(_CASE),
- }),
- be_str_weak(set_mode_CASE),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x880C0101, // 0001 GETMBR R3 R0 K1
- 0x7C040400, // 0002 CALL R1 2
- 0x80000000, // 0003 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: counter_snd_next
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_counter_snd_next, /* name */
- be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(_counter_snd_impl),
- /* K1 */ be_nested_str_weak(next),
- /* K2 */ be_nested_str_weak(matter),
- /* K3 */ be_nested_str_weak(Counter),
- /* K4 */ be_nested_str_weak(is_greater),
- /* K5 */ be_nested_str_weak(counter_snd),
- /* K6 */ be_nested_str_weak(_COUNTER_SND_INCR),
- /* K7 */ be_nested_str_weak(does_persist),
- /* K8 */ be_nested_str_weak(save),
- }),
- be_str_weak(counter_snd_next),
- &be_const_str_solidified,
- ( &(const binstruction[19]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0xB80A0400, // 0003 GETNGBL R2 K2
- 0x88080503, // 0004 GETMBR R2 R2 K3
- 0x8C080504, // 0005 GETMET R2 R2 K4
- 0x5C100200, // 0006 MOVE R4 R1
- 0x88140105, // 0007 GETMBR R5 R0 K5
- 0x7C080600, // 0008 CALL R2 3
- 0x780A0007, // 0009 JMPF R2 #0012
- 0x88080106, // 000A GETMBR R2 R0 K6
- 0x00080202, // 000B ADD R2 R1 R2
- 0x90020A02, // 000C SETMBR R0 K5 R2
- 0x8C080107, // 000D GETMET R2 R0 K7
- 0x7C080200, // 000E CALL R2 1
- 0x780A0001, // 000F JMPF R2 #0012
- 0x8C080108, // 0010 GETMET R2 R0 K8
- 0x7C080200, // 0011 CALL R2 1
- 0x80040200, // 0012 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_i2r_privacy
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_get_i2r_privacy, /* name */
- be_nested_proto(
- 9, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(_i2r_privacy),
- /* K1 */ be_nested_str_weak(crypto),
- /* K2 */ be_nested_str_weak(HKDF_SHA256),
- /* K3 */ be_nested_str_weak(derive),
- /* K4 */ be_nested_str_weak(get_i2r),
- /* K5 */ be_nested_str_weak(fromstring),
- /* K6 */ be_nested_str_weak(PrivacyKey),
- }),
- be_str_weak(get_i2r_privacy),
- &be_const_str_solidified,
- ( &(const binstruction[22]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x4C080000, // 0001 LDNIL R2
- 0x1C040202, // 0002 EQ R1 R1 R2
- 0x7806000F, // 0003 JMPF R1 #0014
- 0xA4060200, // 0004 IMPORT R1 K1
- 0x8C080302, // 0005 GETMET R2 R1 K2
- 0x7C080200, // 0006 CALL R2 1
- 0x8C080503, // 0007 GETMET R2 R2 K3
- 0x8C100104, // 0008 GETMET R4 R0 K4
- 0x7C100200, // 0009 CALL R4 1
- 0x60140015, // 000A GETGBL R5 G21
- 0x7C140000, // 000B CALL R5 0
- 0x60180015, // 000C GETGBL R6 G21
- 0x7C180000, // 000D CALL R6 0
- 0x8C180D05, // 000E GETMET R6 R6 K5
- 0x58200006, // 000F LDCONST R8 K6
- 0x7C180400, // 0010 CALL R6 2
- 0x541E000F, // 0011 LDINT R7 16
- 0x7C080A00, // 0012 CALL R2 5
- 0x90020002, // 0013 SETMBR R0 K0 R2
- 0x88040100, // 0014 GETMBR R1 R0 K0
- 0x80040200, // 0015 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_i2r
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_get_i2r, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(i2rkey),
- }),
- be_str_weak(get_i2r),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_admin_vendor
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_get_admin_vendor, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(admin_vendor),
- }),
- be_str_weak(get_admin_vendor),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x78060002, // 0001 JMPF R1 #0005
- 0x88040100, // 0002 GETMBR R1 R0 K0
- 0x88040301, // 0003 GETMBR R1 R1 K1
- 0x70020000, // 0004 JMP #0006
- 0x4C040000, // 0005 LDNIL R1
- 0x80040200, // 0006 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_temp_ca
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_set_temp_ca, /* name */
- be_nested_proto(
- 2, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_temp_root_ca_certificate),
- }),
- be_str_weak(set_temp_ca),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x80000000, // 0001 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_init, /* name */
- be_nested_proto(
- 10, /* nstack */
- 5, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[23]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(_store),
- /* K2 */ be_nested_str_weak(mode),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(local_session_id),
- /* K5 */ be_nested_str_weak(initiator_session_id),
- /* K6 */ be_nested_str_weak(_counter_snd_impl),
- /* K7 */ be_nested_str_weak(matter),
- /* K8 */ be_nested_str_weak(Counter),
- /* K9 */ be_nested_str_weak(_counter_rcv_impl),
- /* K10 */ be_nested_str_weak(counter_rcv),
- /* K11 */ be_nested_str_weak(counter_snd),
- /* K12 */ be_nested_str_weak(next),
- /* K13 */ be_nested_str_weak(_COUNTER_SND_INCR),
- /* K14 */ be_nested_str_weak(_counter_insecure_rcv),
- /* K15 */ be_nested_str_weak(_counter_insecure_snd),
- /* K16 */ be_nested_str_weak(_breadcrumb),
- /* K17 */ be_nested_str_weak(_exchange_id),
- /* K18 */ be_nested_str_weak(random),
- /* K19 */ be_const_int(2),
- /* K20 */ be_nested_str_weak(get),
- /* K21 */ be_nested_str_weak(_fabric),
- /* K22 */ be_nested_str_weak(update),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[41]) { /* code */
- 0xA4160000, // 0000 IMPORT R5 K0
- 0x90020201, // 0001 SETMBR R0 K1 R1
- 0x90020503, // 0002 SETMBR R0 K2 K3
- 0x90020802, // 0003 SETMBR R0 K4 R2
- 0x90020A03, // 0004 SETMBR R0 K5 R3
- 0xB81A0E00, // 0005 GETNGBL R6 K7
- 0x8C180D08, // 0006 GETMET R6 R6 K8
- 0x7C180200, // 0007 CALL R6 1
- 0x90020C06, // 0008 SETMBR R0 K6 R6
- 0xB81A0E00, // 0009 GETNGBL R6 K7
- 0x8C180D08, // 000A GETMET R6 R6 K8
- 0x7C180200, // 000B CALL R6 1
- 0x90021206, // 000C SETMBR R0 K9 R6
- 0x90021503, // 000D SETMBR R0 K10 K3
- 0x88180106, // 000E GETMBR R6 R0 K6
- 0x8C180D0C, // 000F GETMET R6 R6 K12
- 0x7C180200, // 0010 CALL R6 1
- 0x881C010D, // 0011 GETMBR R7 R0 K13
- 0x00180C07, // 0012 ADD R6 R6 R7
- 0x90021606, // 0013 SETMBR R0 K11 R6
- 0xB81A0E00, // 0014 GETNGBL R6 K7
- 0x8C180D08, // 0015 GETMET R6 R6 K8
- 0x7C180200, // 0016 CALL R6 1
- 0x90021C06, // 0017 SETMBR R0 K14 R6
- 0xB81A0E00, // 0018 GETNGBL R6 K7
- 0x8C180D08, // 0019 GETMET R6 R6 K8
- 0x7C180200, // 001A CALL R6 1
- 0x90021E06, // 001B SETMBR R0 K15 R6
- 0x90022103, // 001C SETMBR R0 K16 K3
- 0x8C180B12, // 001D GETMET R6 R5 K18
- 0x58200013, // 001E LDCONST R8 K19
- 0x7C180400, // 001F CALL R6 2
- 0x8C180D14, // 0020 GETMET R6 R6 K20
- 0x58200003, // 0021 LDCONST R8 K3
- 0x58240013, // 0022 LDCONST R9 K19
- 0x7C180600, // 0023 CALL R6 3
- 0x90022206, // 0024 SETMBR R0 K17 R6
- 0x90022A04, // 0025 SETMBR R0 K21 R4
- 0x8C180116, // 0026 GETMET R6 R0 K22
- 0x7C180200, // 0027 CALL R6 1
- 0x80000000, // 0028 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_fabric_index
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_get_fabric_index, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(fabric_index),
- }),
- be_str_weak(get_fabric_index),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x78060002, // 0001 JMPF R1 #0005
- 0x88040100, // 0002 GETMBR R1 R0 K0
- 0x88040301, // 0003 GETMBR R1 R1 K1
- 0x70020000, // 0004 JMP #0006
- 0x4C040000, // 0005 LDNIL R1
- 0x80040200, // 0006 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_temp_ca
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_get_temp_ca, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_temp_root_ca_certificate),
- }),
- be_str_weak(get_temp_ca),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_pk
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_get_pk, /* name */
- be_nested_proto(
- 5, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_fabric),
- /* K1 */ be_nested_str_weak(get_pk),
- /* K2 */ be_nested_str_weak(_temp_pk),
- /* K3 */ be_nested_str_weak(crypto),
- /* K4 */ be_nested_str_weak(random),
- }),
- be_str_weak(get_pk),
- &be_const_str_solidified,
- ( &(const binstruction[17]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x78060004, // 0001 JMPF R1 #0007
- 0x88040100, // 0002 GETMBR R1 R0 K0
- 0x8C040301, // 0003 GETMET R1 R1 K1
- 0x7C040200, // 0004 CALL R1 1
- 0x80040200, // 0005 RET 1 R1
- 0x70020008, // 0006 JMP #0010
- 0x88040102, // 0007 GETMBR R1 R0 K2
- 0x74060004, // 0008 JMPT R1 #000E
- 0xA4060600, // 0009 IMPORT R1 K3
- 0x8C080304, // 000A GETMET R2 R1 K4
- 0x5412001F, // 000B LDINT R4 32
- 0x7C080400, // 000C CALL R2 2
- 0x90020402, // 000D SETMBR R0 K2 R2
- 0x88040102, // 000E GETMBR R1 R0 K2
- 0x80040200, // 000F RET 1 R1
- 0x80000000, // 0010 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_mode_PASE
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_set_mode_PASE, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(set_mode),
- /* K1 */ be_nested_str_weak(_PASE),
- }),
- be_str_weak(set_mode_PASE),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x880C0101, // 0001 GETMBR R3 R0 K1
- 0x7C040400, // 0002 CALL R1 2
- 0x80000000, // 0003 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_mode
-********************************************************************/
-extern const bclass be_class_Matter_Session;
-be_local_closure(class_Matter_Session_set_mode, /* name */
- be_nested_proto(
- 2, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Session,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(mode),
- }),
- be_str_weak(set_mode),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x80000000, // 0001 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified class: Matter_Session
********************************************************************/
@@ -1834,92 +1698,93 @@ extern const bclass be_class_Matter_Expirable;
be_local_class(Matter_Session,
38,
&be_class_Matter_Expirable,
- be_nested_map(84,
+ be_nested_map(85,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(set_mode, 6), be_const_closure(class_Matter_Session_set_mode_closure) },
- { be_const_key_weak(set_mode_PASE, 57), be_const_closure(class_Matter_Session_set_mode_PASE_closure) },
- { be_const_key_weak(_counter_rcv_impl, 79), be_const_var(14) },
- { be_const_key_weak(attestation_challenge, 56), be_const_var(25) },
- { be_const_key_weak(get_ac, -1), be_const_closure(class_Matter_Session_get_ac_closure) },
- { be_const_key_weak(get_fabric, -1), be_const_closure(class_Matter_Session_get_fabric_closure) },
- { be_const_key_weak(get_temp_ca, 69), be_const_closure(class_Matter_Session_get_temp_ca_closure) },
- { be_const_key_weak(_COUNTER_SND_INCR, -1), be_const_int(1024) },
- { be_const_key_weak(_CASE, -1), be_const_int(2) },
- { be_const_key_weak(_counter_insecure_rcv, 2), be_const_var(20) },
- { be_const_key_weak(_breadcrumb, -1), be_const_var(27) },
- { be_const_key_weak(r2ikey, 82), be_const_var(23) },
- { be_const_key_weak(set_keys, 52), be_const_closure(class_Matter_Session_set_keys_closure) },
- { be_const_key_weak(_exchange_id, -1), be_const_var(16) },
- { be_const_key_weak(peer_node_id, 8), be_const_var(26) },
- { be_const_key_weak(last_used, 80), be_const_var(6) },
- { be_const_key_weak(_source_node_id, 48), be_const_var(7) },
- { be_const_key_weak(init, 36), be_const_closure(class_Matter_Session_init_closure) },
- { be_const_key_weak(set_temp_ca, -1), be_const_closure(class_Matter_Session_set_temp_ca_closure) },
- { be_const_key_weak(created, -1), be_const_var(5) },
- { be_const_key_weak(persist_to_fabric, -1), be_const_closure(class_Matter_Session_persist_to_fabric_closure) },
- { be_const_key_weak(__initiator_pub, -1), be_const_var(32) },
- { be_const_key_weak(gen_CSR, -1), be_const_closure(class_Matter_Session_gen_CSR_closure) },
- { be_const_key_weak(_store, -1), be_const_var(0) },
- { be_const_key_weak(get_ipk_epoch_key, 49), be_const_closure(class_Matter_Session_get_ipk_epoch_key_closure) },
- { be_const_key_weak(__responder_priv, 7), be_const_var(30) },
- { be_const_key_weak(counter_rcv_validate, -1), be_const_closure(class_Matter_Session_counter_rcv_validate_closure) },
- { be_const_key_weak(_ip, -1), be_const_var(17) },
- { be_const_key_weak(get_admin_subject, 40), be_const_closure(class_Matter_Session_get_admin_subject_closure) },
- { be_const_key_weak(resumption_id, -1), be_const_var(28) },
- { be_const_key_weak(_i2r_privacy, -1), be_const_var(24) },
- { be_const_key_weak(get_fabric_compressed, -1), be_const_closure(class_Matter_Session_get_fabric_compressed_closure) },
{ be_const_key_weak(_temp_pk, -1), be_const_var(9) },
- { be_const_key_weak(shared_secret, 74), be_const_var(29) },
- { be_const_key_weak(_temp_root_ca_certificate, -1), be_const_var(8) },
- { be_const_key_weak(get_ca, -1), be_const_closure(class_Matter_Session_get_ca_closure) },
- { be_const_key_weak(_fabric, 10), be_const_var(2) },
- { be_const_key_weak(__spake_cA, -1), be_const_var(33) },
- { be_const_key_weak(get_ipk_group_key, -1), be_const_closure(class_Matter_Session_get_ipk_group_key_closure) },
- { be_const_key_weak(initiator_session_id, 18), be_const_var(4) },
- { be_const_key_weak(get_i2r_privacy, -1), be_const_closure(class_Matter_Session_get_i2r_privacy_closure) },
- { be_const_key_weak(__chunked_attr_reports, -1), be_const_var(37) },
- { be_const_key_weak(get_ca_pub, -1), be_const_closure(class_Matter_Session_get_ca_pub_closure) },
- { be_const_key_weak(counter_snd, 20), be_const_var(13) },
- { be_const_key_weak(set_fabric_label, 35), be_const_closure(class_Matter_Session_set_fabric_label_closure) },
- { be_const_key_weak(_counter_snd_impl, 71), be_const_var(15) },
- { be_const_key_weak(is_CASE, -1), be_const_closure(class_Matter_Session_is_CASE_closure) },
- { be_const_key_weak(before_remove, -1), be_const_closure(class_Matter_Session_before_remove_closure) },
+ { be_const_key_weak(get_device_id, -1), be_const_closure(class_Matter_Session_get_device_id_closure) },
+ { be_const_key_weak(_exchange_id, 46), be_const_var(16) },
+ { be_const_key_weak(_PASE, 37), be_const_int(1) },
{ be_const_key_weak(set_mode_CASE, -1), be_const_closure(class_Matter_Session_set_mode_CASE_closure) },
- { be_const_key_weak(get_icac, -1), be_const_closure(class_Matter_Session_get_icac_closure) },
- { be_const_key_weak(tojson, 61), be_const_closure(class_Matter_Session_tojson_closure) },
- { be_const_key_weak(close, 1), be_const_closure(class_Matter_Session_close_closure) },
- { be_const_key_weak(get_fabric_label, 42), be_const_closure(class_Matter_Session_get_fabric_label_closure) },
- { be_const_key_weak(_counter_insecure_snd, -1), be_const_var(21) },
- { be_const_key_weak(get_device_id, 63), be_const_closure(class_Matter_Session_get_device_id_closure) },
- { be_const_key_weak(counter_rcv, 62), be_const_var(12) },
- { be_const_key_weak(__Msg1, -1), be_const_var(35) },
- { be_const_key_weak(hydrate_post, 66), be_const_closure(class_Matter_Session_hydrate_post_closure) },
+ { be_const_key_weak(get_ipk_group_key, 9), be_const_closure(class_Matter_Session_get_ipk_group_key_closure) },
+ { be_const_key_weak(is_CASE, -1), be_const_closure(class_Matter_Session_is_CASE_closure) },
{ be_const_key_weak(_message_handler, -1), be_const_var(19) },
- { be_const_key_weak(__future_initiator_session_id, -1), be_const_var(10) },
- { be_const_key_weak(__spake_Ke, 32), be_const_var(34) },
- { be_const_key_weak(__Msg2, 38), be_const_var(36) },
- { be_const_key_weak(get_mode, -1), be_const_closure(class_Matter_Session_get_mode_closure) },
+ { be_const_key_weak(persist_to_fabric, 2), be_const_closure(class_Matter_Session_persist_to_fabric_closure) },
{ be_const_key_weak(mode, -1), be_const_var(1) },
- { be_const_key_weak(update, 16), be_const_closure(class_Matter_Session_update_closure) },
- { be_const_key_weak(counter_snd_next, -1), be_const_closure(class_Matter_Session_counter_snd_next_closure) },
- { be_const_key_weak(get_temp_ca_pub, -1), be_const_closure(class_Matter_Session_get_temp_ca_pub_closure) },
- { be_const_key_weak(get_i2r, -1), be_const_closure(class_Matter_Session_get_i2r_closure) },
- { be_const_key_weak(get_noc, 37), be_const_closure(class_Matter_Session_get_noc_closure) },
- { be_const_key_weak(get_fabric_id, -1), be_const_closure(class_Matter_Session_get_fabric_id_closure) },
+ { be_const_key_weak(before_remove, 58), be_const_closure(class_Matter_Session_before_remove_closure) },
+ { be_const_key_weak(gen_CSR, 41), be_const_closure(class_Matter_Session_gen_CSR_closure) },
+ { be_const_key_weak(__responder_pub, 23), be_const_var(31) },
+ { be_const_key_weak(i2rkey, 83), be_const_var(22) },
+ { be_const_key_weak(_port, 29), be_const_var(18) },
+ { be_const_key_weak(init, -1), be_const_closure(class_Matter_Session_init_closure) },
{ be_const_key_weak(get_admin_vendor, -1), be_const_closure(class_Matter_Session_get_admin_vendor_closure) },
- { be_const_key_weak(is_PASE, -1), be_const_closure(class_Matter_Session_is_PASE_closure) },
- { be_const_key_weak(save, 21), be_const_closure(class_Matter_Session_save_closure) },
- { be_const_key_weak(_GROUP_KEY, -1), be_nested_str_weak(GroupKey_X20v1_X2E0) },
- { be_const_key_weak(local_session_id, 76), be_const_var(3) },
- { be_const_key_weak(i2rkey, 17), be_const_var(22) },
+ { be_const_key_weak(get_i2r, -1), be_const_closure(class_Matter_Session_get_i2r_closure) },
+ { be_const_key_weak(_fabric, 73), be_const_var(2) },
+ { be_const_key_weak(local_session_id, 84), be_const_var(3) },
+ { be_const_key_weak(counter_rcv_validate, -1), be_const_closure(class_Matter_Session_counter_rcv_validate_closure) },
+ { be_const_key_weak(get_ca, -1), be_const_closure(class_Matter_Session_get_ca_closure) },
+ { be_const_key_weak(__responder_priv, -1), be_const_var(30) },
+ { be_const_key_weak(_counter_snd_impl, -1), be_const_var(15) },
+ { be_const_key_weak(__spake_cA, 67), be_const_var(33) },
+ { be_const_key_weak(__future_initiator_session_id, -1), be_const_var(10) },
{ be_const_key_weak(__future_local_session_id, -1), be_const_var(11) },
- { be_const_key_weak(_PASE, -1), be_const_int(1) },
- { be_const_key_weak(get_fabric_index, -1), be_const_closure(class_Matter_Session_get_fabric_index_closure) },
- { be_const_key_weak(_port, -1), be_const_var(18) },
- { be_const_key_weak(get_r2i, -1), be_const_closure(class_Matter_Session_get_r2i_closure) },
+ { be_const_key_weak(set_mode, -1), be_const_closure(class_Matter_Session_set_mode_closure) },
+ { be_const_key_weak(counter_snd_next, -1), be_const_closure(class_Matter_Session_counter_snd_next_closure) },
+ { be_const_key_weak(set_temp_ca, 33), be_const_closure(class_Matter_Session_set_temp_ca_closure) },
+ { be_const_key_weak(get_temp_ca_pub, -1), be_const_closure(class_Matter_Session_get_temp_ca_pub_closure) },
+ { be_const_key_weak(get_temp_ca, 54), be_const_closure(class_Matter_Session_get_temp_ca_closure) },
+ { be_const_key_weak(get_fabric_id, -1), be_const_closure(class_Matter_Session_get_fabric_id_closure) },
+ { be_const_key_weak(get_mode, -1), be_const_closure(class_Matter_Session_get_mode_closure) },
+ { be_const_key_weak(initiator_session_id, 22), be_const_var(4) },
+ { be_const_key_weak(set_mode_PASE, -1), be_const_closure(class_Matter_Session_set_mode_PASE_closure) },
+ { be_const_key_weak(get_fabric_compressed, 43), be_const_closure(class_Matter_Session_get_fabric_compressed_closure) },
+ { be_const_key_weak(__Msg2, -1), be_const_var(36) },
+ { be_const_key_weak(_counter_insecure_snd, 26), be_const_var(21) },
+ { be_const_key_weak(get_fabric_label, 52), be_const_closure(class_Matter_Session_get_fabric_label_closure) },
+ { be_const_key_weak(last_used, -1), be_const_var(6) },
+ { be_const_key_weak(close, -1), be_const_closure(class_Matter_Session_close_closure) },
+ { be_const_key_weak(counter_snd, 74), be_const_var(13) },
+ { be_const_key_weak(_store, -1), be_const_var(0) },
+ { be_const_key_weak(_breadcrumb, 72), be_const_var(27) },
+ { be_const_key_weak(_counter_insecure_rcv, -1), be_const_var(20) },
+ { be_const_key_weak(get_ac, -1), be_const_closure(class_Matter_Session_get_ac_closure) },
+ { be_const_key_weak(set_fabric_label, -1), be_const_closure(class_Matter_Session_set_fabric_label_closure) },
+ { be_const_key_weak(get_node_id, -1), be_const_closure(class_Matter_Session_get_node_id_closure) },
+ { be_const_key_weak(get_ca_pub, -1), be_const_closure(class_Matter_Session_get_ca_pub_closure) },
+ { be_const_key_weak(_COUNTER_SND_INCR, 55), be_const_int(1024) },
+ { be_const_key_weak(tojson, -1), be_const_closure(class_Matter_Session_tojson_closure) },
+ { be_const_key_weak(hydrate_post, -1), be_const_closure(class_Matter_Session_hydrate_post_closure) },
+ { be_const_key_weak(__spake_Ke, 36), be_const_var(34) },
+ { be_const_key_weak(_i2r_privacy, -1), be_const_var(24) },
+ { be_const_key_weak(get_fabric, 71), be_const_closure(class_Matter_Session_get_fabric_closure) },
+ { be_const_key_weak(__chunked_attr_reports, -1), be_const_var(37) },
+ { be_const_key_weak(_source_node_id, 66), be_const_var(7) },
+ { be_const_key_weak(get_i2r_privacy, 19), be_const_closure(class_Matter_Session_get_i2r_privacy_closure) },
+ { be_const_key_weak(_CASE, 57), be_const_int(2) },
+ { be_const_key_weak(fromjson, -1), be_const_static_closure(class_Matter_Session_fromjson_closure) },
+ { be_const_key_weak(get_noc, 60), be_const_closure(class_Matter_Session_get_noc_closure) },
+ { be_const_key_weak(save, -1), be_const_closure(class_Matter_Session_save_closure) },
+ { be_const_key_weak(counter_rcv, -1), be_const_var(12) },
+ { be_const_key_weak(update, 56), be_const_closure(class_Matter_Session_update_closure) },
+ { be_const_key_weak(_GROUP_KEY, -1), be_nested_str_weak(GroupKey_X20v1_X2E0) },
+ { be_const_key_weak(peer_node_id, -1), be_const_var(26) },
+ { be_const_key_weak(__Msg1, 82), be_const_var(35) },
+ { be_const_key_weak(get_admin_subject, -1), be_const_closure(class_Matter_Session_get_admin_subject_closure) },
+ { be_const_key_weak(get_ipk_epoch_key, -1), be_const_closure(class_Matter_Session_get_ipk_epoch_key_closure) },
+ { be_const_key_weak(__initiator_pub, -1), be_const_var(32) },
{ be_const_key_weak(get_pk, -1), be_const_closure(class_Matter_Session_get_pk_closure) },
- { be_const_key_weak(__responder_pub, -1), be_const_var(31) },
- { be_const_key_weak(fromjson, 0), be_const_static_closure(class_Matter_Session_fromjson_closure) },
+ { be_const_key_weak(is_PASE, -1), be_const_closure(class_Matter_Session_is_PASE_closure) },
+ { be_const_key_weak(get_icac, -1), be_const_closure(class_Matter_Session_get_icac_closure) },
+ { be_const_key_weak(resumption_id, -1), be_const_var(28) },
+ { be_const_key_weak(_ip, 27), be_const_var(17) },
+ { be_const_key_weak(set_keys, -1), be_const_closure(class_Matter_Session_set_keys_closure) },
+ { be_const_key_weak(r2ikey, 25), be_const_var(23) },
+ { be_const_key_weak(attestation_challenge, 5), be_const_var(25) },
+ { be_const_key_weak(created, -1), be_const_var(5) },
+ { be_const_key_weak(_temp_root_ca_certificate, -1), be_const_var(8) },
+ { be_const_key_weak(get_r2i, 11), be_const_closure(class_Matter_Session_get_r2i_closure) },
+ { be_const_key_weak(get_fabric_index, -1), be_const_closure(class_Matter_Session_get_fabric_index_closure) },
+ { be_const_key_weak(_counter_rcv_impl, -1), be_const_var(14) },
+ { be_const_key_weak(shared_secret, -1), be_const_var(29) },
})),
be_str_weak(Matter_Session)
);
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h
index 6b86aa097..1b4e7c44b 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session_Store.h
@@ -3,29 +3,100 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_Session_Store' ktab size: 73, total: 155 (saved 656 bytes)
+static const bvalue be_ktab_class_Matter_Session_Store[73] = {
+ /* K0 */ be_const_int(0),
+ /* K1 */ be_nested_str_weak(sessions),
+ /* K2 */ be_nested_str_weak(remove),
+ /* K3 */ be_const_int(1),
+ /* K4 */ be_nested_str_weak(crypto),
+ /* K5 */ be_nested_str_weak(random),
+ /* K6 */ be_const_int(2),
+ /* K7 */ be_nested_str_weak(get),
+ /* K8 */ be_nested_str_weak(get_session_by_local_session_id),
+ /* K9 */ be_nested_str_weak(matter),
+ /* K10 */ be_nested_str_weak(Expirable_list),
+ /* K11 */ be_nested_str_weak(fabrics),
+ /* K12 */ be_nested_str_weak(_FABRICS),
+ /* K13 */ be_nested_str_weak(read),
+ /* K14 */ be_nested_str_weak(close),
+ /* K15 */ be_nested_str_weak(json),
+ /* K16 */ be_nested_str_weak(load),
+ /* K17 */ be_nested_str_weak(tasmota),
+ /* K18 */ be_nested_str_weak(gc),
+ /* K19 */ be_nested_str_weak(Fabric),
+ /* K20 */ be_nested_str_weak(fromjson),
+ /* K21 */ be_nested_str_weak(set_no_expiration),
+ /* K22 */ be_nested_str_weak(set_persist),
+ /* K23 */ be_nested_str_weak(find),
+ /* K24 */ be_nested_str_weak(_sessions),
+ /* K25 */ be_nested_str_weak(Session),
+ /* K26 */ be_nested_str_weak(add_session),
+ /* K27 */ be_nested_str_weak(stop_iteration),
+ /* K28 */ be_nested_str_weak(push),
+ /* K29 */ be_nested_str_weak(log),
+ /* K30 */ be_nested_str_weak(MTR_X3A_X20Loaded_X20_X25i_X20fabric_X28s_X29),
+ /* K31 */ be_nested_str_weak(io_error),
+ /* K32 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Aload_X20Exception_X3A),
+ /* K33 */ be_nested_str_weak(_X7C),
+ /* K34 */ be_nested_str_weak(get_device_id),
+ /* K35 */ be_nested_str_weak(get_fabric_id),
+ /* K36 */ be_nested_str_weak(active_fabrics),
+ /* K37 */ be_nested_str_weak(get_fabric_index),
+ /* K38 */ be_nested_str_weak(remove_expired),
+ /* K39 */ be_nested_str_weak(persistables),
+ /* K40 */ be_nested_str_weak(count_persistables),
+ /* K41 */ be_nested_str_weak(MTR_X3A_X20session_X2Eresumption_id_X3D_X25s_X20vs_X20_X25s),
+ /* K42 */ be_nested_str_weak(resumption_id),
+ /* K43 */ be_nested_str_weak(shared_secret),
+ /* K44 */ be_nested_str_weak(update),
+ /* K45 */ be_nested_str_weak(set_expire_in_seconds),
+ /* K46 */ be_nested_str_weak(get_session_by_source_node_id),
+ /* K47 */ be_nested_str_weak(_source_node_id),
+ /* K48 */ be_nested_str_weak(local_session_id),
+ /* K49 */ be_nested_str_weak(device),
+ /* K50 */ be_nested_str_weak(every_second),
+ /* K51 */ be_nested_str_weak(fabric_id),
+ /* K52 */ be_nested_str_weak(device_id),
+ /* K53 */ be_nested_str_weak(value_error),
+ /* K54 */ be_nested_str_weak(must_X20be_X20of_X20class_X20matter_X2EFabric),
+ /* K55 */ be_nested_str_weak(remove_redundant_fabric),
+ /* K56 */ be_nested_str_weak(fabric_index),
+ /* K57 */ be_nested_str_weak(int),
+ /* K58 */ be_nested_str_weak(path),
+ /* K59 */ be_nested_str_weak(_FABRICS_TEMP),
+ /* K60 */ be_nested_str_weak(w),
+ /* K61 */ be_nested_str_weak(write),
+ /* K62 */ be_nested_str_weak(_X5B),
+ /* K63 */ be_nested_str_weak(_X2C),
+ /* K64 */ be_nested_str_weak(writejson),
+ /* K65 */ be_nested_str_weak(_X5D),
+ /* K66 */ be_nested_str_weak(rename),
+ /* K67 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20_X25s_X20fabric_X28s_X29_X20and_X20_X25s_X20session_X28s_X29),
+ /* K68 */ be_nested_str_weak(event_fabrics_saved),
+ /* K69 */ be_nested_str_weak(MTR_X3A_X20Saving_X20Fabrics_X20failed),
+ /* K70 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A),
+ /* K71 */ be_nested_str_weak(remove_session),
+ /* K72 */ be_nested_str_weak(_fabric),
+};
+
extern const bclass be_class_Matter_Session_Store;
/********************************************************************
** Solidified function: remove_session
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_remove_session, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(sessions),
- /* K2 */ be_nested_str_weak(remove),
- /* K3 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(remove_session),
&be_const_str_solidified,
( &(const binstruction[17]) { /* code */
@@ -55,39 +126,31 @@ be_local_closure(class_Matter_Session_Store_remove_session, /* name */
/********************************************************************
** Solidified function: gen_local_session_id
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_gen_local_session_id, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(random),
- /* K2 */ be_const_int(2),
- /* K3 */ be_nested_str_weak(get),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(get_session_by_local_session_id),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(gen_local_session_id),
&be_const_str_solidified,
( &(const binstruction[19]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
+ 0xA4060800, // 0000 IMPORT R1 K4
0x50080200, // 0001 LDBOOL R2 1 0
0x780A000E, // 0002 JMPF R2 #0012
- 0x8C080301, // 0003 GETMET R2 R1 K1
- 0x58100002, // 0004 LDCONST R4 K2
+ 0x8C080305, // 0003 GETMET R2 R1 K5
+ 0x58100006, // 0004 LDCONST R4 K6
0x7C080400, // 0005 CALL R2 2
- 0x8C080503, // 0006 GETMET R2 R2 K3
- 0x58100004, // 0007 LDCONST R4 K4
- 0x58140002, // 0008 LDCONST R5 K2
+ 0x8C080507, // 0006 GETMET R2 R2 K7
+ 0x58100000, // 0007 LDCONST R4 K0
+ 0x58140006, // 0008 LDCONST R5 K6
0x7C080600, // 0009 CALL R2 3
- 0x8C0C0105, // 000A GETMET R3 R0 K5
+ 0x8C0C0108, // 000A GETMET R3 R0 K8
0x5C140400, // 000B MOVE R5 R2
0x7C0C0400, // 000C CALL R3 2
0x4C100000, // 000D LDNIL R4
@@ -105,72 +168,43 @@ be_local_closure(class_Matter_Session_Store_gen_local_session_id, /* name */
/********************************************************************
** Solidified function: load_fabrics
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_load_fabrics, /* name */
be_nested_proto(
16, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[27]) { /* constants */
- /* K0 */ be_nested_str_weak(sessions),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(Expirable_list),
- /* K3 */ be_nested_str_weak(fabrics),
- /* K4 */ be_nested_str_weak(_FABRICS),
- /* K5 */ be_nested_str_weak(read),
- /* K6 */ be_nested_str_weak(close),
- /* K7 */ be_nested_str_weak(json),
- /* K8 */ be_nested_str_weak(load),
- /* K9 */ be_nested_str_weak(tasmota),
- /* K10 */ be_nested_str_weak(gc),
- /* K11 */ be_nested_str_weak(Fabric),
- /* K12 */ be_nested_str_weak(fromjson),
- /* K13 */ be_nested_str_weak(set_no_expiration),
- /* K14 */ be_nested_str_weak(set_persist),
- /* K15 */ be_nested_str_weak(find),
- /* K16 */ be_nested_str_weak(_sessions),
- /* K17 */ be_nested_str_weak(Session),
- /* K18 */ be_nested_str_weak(add_session),
- /* K19 */ be_nested_str_weak(stop_iteration),
- /* K20 */ be_nested_str_weak(push),
- /* K21 */ be_nested_str_weak(log),
- /* K22 */ be_nested_str_weak(MTR_X3A_X20Loaded_X20_X25i_X20fabric_X28s_X29),
- /* K23 */ be_const_int(2),
- /* K24 */ be_nested_str_weak(io_error),
- /* K25 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Aload_X20Exception_X3A),
- /* K26 */ be_nested_str_weak(_X7C),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(load_fabrics),
&be_const_str_solidified,
- ( &(const binstruction[117]) { /* code */
- 0xA802005F, // 0000 EXBLK 0 #0061
- 0xB8060200, // 0001 GETNGBL R1 K1
- 0x8C040302, // 0002 GETMET R1 R1 K2
+ ( &(const binstruction[115]) { /* code */
+ 0xA802005E, // 0000 EXBLK 0 #0060
+ 0xB8061200, // 0001 GETNGBL R1 K9
+ 0x8C04030A, // 0002 GETMET R1 R1 K10
0x7C040200, // 0003 CALL R1 1
- 0x90020001, // 0004 SETMBR R0 K0 R1
- 0xB8060200, // 0005 GETNGBL R1 K1
- 0x8C040302, // 0006 GETMET R1 R1 K2
+ 0x90020201, // 0004 SETMBR R0 K1 R1
+ 0xB8061200, // 0005 GETNGBL R1 K9
+ 0x8C04030A, // 0006 GETMET R1 R1 K10
0x7C040200, // 0007 CALL R1 1
- 0x90020601, // 0008 SETMBR R0 K3 R1
+ 0x90021601, // 0008 SETMBR R0 K11 R1
0x60040011, // 0009 GETGBL R1 G17
- 0x88080104, // 000A GETMBR R2 R0 K4
+ 0x8808010C, // 000A GETMBR R2 R0 K12
0x7C040200, // 000B CALL R1 1
- 0x8C080305, // 000C GETMET R2 R1 K5
+ 0x8C08030D, // 000C GETMET R2 R1 K13
0x7C080200, // 000D CALL R2 1
- 0x8C0C0306, // 000E GETMET R3 R1 K6
+ 0x8C0C030E, // 000E GETMET R3 R1 K14
0x7C0C0200, // 000F CALL R3 1
- 0xA40E0E00, // 0010 IMPORT R3 K7
- 0x8C100708, // 0011 GETMET R4 R3 K8
+ 0xA40E1E00, // 0010 IMPORT R3 K15
+ 0x8C100710, // 0011 GETMET R4 R3 K16
0x5C180400, // 0012 MOVE R6 R2
0x7C100400, // 0013 CALL R4 2
0x4C080000, // 0014 LDNIL R2
- 0xB8161200, // 0015 GETNGBL R5 K9
- 0x8C140B0A, // 0016 GETMET R5 R5 K10
+ 0xB8162200, // 0015 GETNGBL R5 K17
+ 0x8C140B12, // 0016 GETMET R5 R5 K18
0x7C140200, // 0017 CALL R5 1
0x60140010, // 0018 GETGBL R5 G16
0x5C180800, // 0019 MOVE R6 R4
@@ -178,19 +212,19 @@ be_local_closure(class_Matter_Session_Store_load_fabrics, /* name */
0xA8020035, // 001B EXBLK 0 #0052
0x5C180A00, // 001C MOVE R6 R5
0x7C180000, // 001D CALL R6 0
- 0xB81E0200, // 001E GETNGBL R7 K1
- 0x881C0F0B, // 001F GETMBR R7 R7 K11
- 0x8C1C0F0C, // 0020 GETMET R7 R7 K12
+ 0xB81E1200, // 001E GETNGBL R7 K9
+ 0x881C0F13, // 001F GETMBR R7 R7 K19
+ 0x8C1C0F14, // 0020 GETMET R7 R7 K20
0x5C240000, // 0021 MOVE R9 R0
0x5C280C00, // 0022 MOVE R10 R6
0x7C1C0600, // 0023 CALL R7 3
- 0x8C200F0D, // 0024 GETMET R8 R7 K13
+ 0x8C200F15, // 0024 GETMET R8 R7 K21
0x7C200200, // 0025 CALL R8 1
- 0x8C200F0E, // 0026 GETMET R8 R7 K14
+ 0x8C200F16, // 0026 GETMET R8 R7 K22
0x50280200, // 0027 LDBOOL R10 1 0
0x7C200400, // 0028 CALL R8 2
- 0x8C200D0F, // 0029 GETMET R8 R6 K15
- 0x58280010, // 002A LDCONST R10 K16
+ 0x8C200D17, // 0029 GETMET R8 R6 K23
+ 0x58280018, // 002A LDCONST R10 K24
0x602C0012, // 002B GETGBL R11 G18
0x7C2C0000, // 002C CALL R11 0
0x7C200600, // 002D CALL R8 3
@@ -200,9 +234,9 @@ be_local_closure(class_Matter_Session_Store_load_fabrics, /* name */
0xA8020017, // 0031 EXBLK 0 #004A
0x5C281200, // 0032 MOVE R10 R9
0x7C280000, // 0033 CALL R10 0
- 0xB82E0200, // 0034 GETNGBL R11 K1
- 0x882C1711, // 0035 GETMBR R11 R11 K17
- 0x8C2C170C, // 0036 GETMET R11 R11 K12
+ 0xB82E1200, // 0034 GETNGBL R11 K9
+ 0x882C1719, // 0035 GETMBR R11 R11 K25
+ 0x8C2C1714, // 0036 GETMET R11 R11 K20
0x5C340000, // 0037 MOVE R13 R0
0x5C381400, // 0038 MOVE R14 R10
0x5C3C0E00, // 0039 MOVE R15 R7
@@ -210,61 +244,59 @@ be_local_closure(class_Matter_Session_Store_load_fabrics, /* name */
0x4C300000, // 003B LDNIL R12
0x2030160C, // 003C NE R12 R11 R12
0x7832000A, // 003D JMPF R12 #0049
- 0x8C30170D, // 003E GETMET R12 R11 K13
+ 0x8C301715, // 003E GETMET R12 R11 K21
0x7C300200, // 003F CALL R12 1
- 0x8C30170E, // 0040 GETMET R12 R11 K14
+ 0x8C301716, // 0040 GETMET R12 R11 K22
0x50380200, // 0041 LDBOOL R14 1 0
0x7C300400, // 0042 CALL R12 2
- 0x8C300112, // 0043 GETMET R12 R0 K18
+ 0x8C30011A, // 0043 GETMET R12 R0 K26
0x5C381600, // 0044 MOVE R14 R11
0x7C300400, // 0045 CALL R12 2
- 0x8C300F12, // 0046 GETMET R12 R7 K18
+ 0x8C300F1A, // 0046 GETMET R12 R7 K26
0x5C381600, // 0047 MOVE R14 R11
0x7C300400, // 0048 CALL R12 2
0x7001FFE7, // 0049 JMP #0032
- 0x58240013, // 004A LDCONST R9 K19
+ 0x5824001B, // 004A LDCONST R9 K27
0xAC240200, // 004B CATCH R9 1 0
0xB0080000, // 004C RAISE 2 R0 R0
- 0x88240103, // 004D GETMBR R9 R0 K3
- 0x8C241314, // 004E GETMET R9 R9 K20
+ 0x8824010B, // 004D GETMBR R9 R0 K11
+ 0x8C24131C, // 004E GETMET R9 R9 K28
0x5C2C0E00, // 004F MOVE R11 R7
0x7C240400, // 0050 CALL R9 2
0x7001FFC9, // 0051 JMP #001C
- 0x58140013, // 0052 LDCONST R5 K19
+ 0x5814001B, // 0052 LDCONST R5 K27
0xAC140200, // 0053 CATCH R5 1 0
0xB0080000, // 0054 RAISE 2 R0 R0
- 0xB8161200, // 0055 GETNGBL R5 K9
- 0x8C140B15, // 0056 GETMET R5 R5 K21
- 0x601C0018, // 0057 GETGBL R7 G24
- 0x58200016, // 0058 LDCONST R8 K22
- 0x6024000C, // 0059 GETGBL R9 G12
- 0x88280103, // 005A GETMBR R10 R0 K3
- 0x7C240200, // 005B CALL R9 1
- 0x7C1C0400, // 005C CALL R7 2
- 0x58200017, // 005D LDCONST R8 K23
- 0x7C140600, // 005E CALL R5 3
- 0xA8040001, // 005F EXBLK 1 1
- 0x70020012, // 0060 JMP #0074
- 0xAC040002, // 0061 CATCH R1 0 2
- 0x7002000F, // 0062 JMP #0073
- 0x200C0318, // 0063 NE R3 R1 K24
- 0x780E000C, // 0064 JMPF R3 #0072
- 0xB80E1200, // 0065 GETNGBL R3 K9
- 0x8C0C0715, // 0066 GETMET R3 R3 K21
- 0x60140008, // 0067 GETGBL R5 G8
- 0x5C180200, // 0068 MOVE R6 R1
- 0x7C140200, // 0069 CALL R5 1
- 0x00163205, // 006A ADD R5 K25 R5
- 0x00140B1A, // 006B ADD R5 R5 K26
- 0x60180008, // 006C GETGBL R6 G8
- 0x5C1C0400, // 006D MOVE R7 R2
- 0x7C180200, // 006E CALL R6 1
- 0x00140A06, // 006F ADD R5 R5 R6
- 0x58180017, // 0070 LDCONST R6 K23
- 0x7C0C0600, // 0071 CALL R3 3
- 0x70020000, // 0072 JMP #0074
- 0xB0080000, // 0073 RAISE 2 R0 R0
- 0x80000000, // 0074 RET 0
+ 0xB8163A00, // 0055 GETNGBL R5 K29
+ 0x60180018, // 0056 GETGBL R6 G24
+ 0x581C001E, // 0057 LDCONST R7 K30
+ 0x6020000C, // 0058 GETGBL R8 G12
+ 0x8824010B, // 0059 GETMBR R9 R0 K11
+ 0x7C200200, // 005A CALL R8 1
+ 0x7C180400, // 005B CALL R6 2
+ 0x581C0006, // 005C LDCONST R7 K6
+ 0x7C140400, // 005D CALL R5 2
+ 0xA8040001, // 005E EXBLK 1 1
+ 0x70020011, // 005F JMP #0072
+ 0xAC040002, // 0060 CATCH R1 0 2
+ 0x7002000E, // 0061 JMP #0071
+ 0x200C031F, // 0062 NE R3 R1 K31
+ 0x780E000B, // 0063 JMPF R3 #0070
+ 0xB80E3A00, // 0064 GETNGBL R3 K29
+ 0x60100008, // 0065 GETGBL R4 G8
+ 0x5C140200, // 0066 MOVE R5 R1
+ 0x7C100200, // 0067 CALL R4 1
+ 0x00124004, // 0068 ADD R4 K32 R4
+ 0x00100921, // 0069 ADD R4 R4 K33
+ 0x60140008, // 006A GETGBL R5 G8
+ 0x5C180400, // 006B MOVE R6 R2
+ 0x7C140200, // 006C CALL R5 1
+ 0x00100805, // 006D ADD R4 R4 R5
+ 0x58140006, // 006E LDCONST R5 K6
+ 0x7C0C0400, // 006F CALL R3 2
+ 0x70020000, // 0070 JMP #0072
+ 0xB0080000, // 0071 RAISE 2 R0 R0
+ 0x80000000, // 0072 RET 0
})
)
);
@@ -274,16 +306,15 @@ be_local_closure(class_Matter_Session_Store_load_fabrics, /* name */
/********************************************************************
** Solidified function: find_children_fabrics
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_find_children_fabrics, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
7, /* nstack */
1, /* argc */
@@ -295,7 +326,7 @@ be_local_closure(class_Matter_Session_Store_find_children_fabrics, /* name */
be_local_const_upval(1, 3),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 6]) { /* constants */
/* K0 */ be_nested_str_weak(active_fabrics),
@@ -340,10 +371,9 @@ be_local_closure(class_Matter_Session_Store_find_children_fabrics, /* name */
0x80000000, // 001D RET 0
})
),
- &be_class_Matter_Session_Store,
}),
- 0, /* has constants */
- NULL, /* no const */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(find_children_fabrics),
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
@@ -371,25 +401,17 @@ be_local_closure(class_Matter_Session_Store_find_children_fabrics, /* name */
/********************************************************************
** Solidified function: sessions_active
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_sessions_active, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(sessions),
- /* K2 */ be_nested_str_weak(get_device_id),
- /* K3 */ be_nested_str_weak(get_fabric_id),
- /* K4 */ be_nested_str_weak(push),
- /* K5 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(sessions_active),
&be_const_str_solidified,
( &(const binstruction[22]) { /* code */
@@ -403,16 +425,16 @@ be_local_closure(class_Matter_Session_Store_sessions_active, /* name */
0x780E000C, // 0007 JMPF R3 #0015
0x880C0101, // 0008 GETMBR R3 R0 K1
0x940C0602, // 0009 GETIDX R3 R3 R2
- 0x8C100702, // 000A GETMET R4 R3 K2
+ 0x8C100722, // 000A GETMET R4 R3 K34
0x7C100200, // 000B CALL R4 1
0x78120005, // 000C JMPF R4 #0013
- 0x8C100703, // 000D GETMET R4 R3 K3
+ 0x8C100723, // 000D GETMET R4 R3 K35
0x7C100200, // 000E CALL R4 1
0x78120002, // 000F JMPF R4 #0013
- 0x8C100304, // 0010 GETMET R4 R1 K4
+ 0x8C10031C, // 0010 GETMET R4 R1 K28
0x5C180600, // 0011 MOVE R6 R3
0x7C100400, // 0012 CALL R4 2
- 0x00080505, // 0013 ADD R2 R2 K5
+ 0x00080503, // 0013 ADD R2 R2 K3
0x7001FFED, // 0014 JMP #0003
0x80040200, // 0015 RET 1 R1
})
@@ -424,40 +446,35 @@ be_local_closure(class_Matter_Session_Store_sessions_active, /* name */
/********************************************************************
** Solidified function: find_fabric_by_index
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_find_fabric_by_index, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(active_fabrics),
- /* K1 */ be_nested_str_weak(get_fabric_index),
- /* K2 */ be_nested_str_weak(stop_iteration),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(find_fabric_by_index),
&be_const_str_solidified,
( &(const binstruction[19]) { /* code */
0x60080010, // 0000 GETGBL R2 G16
- 0x8C0C0100, // 0001 GETMET R3 R0 K0
+ 0x8C0C0124, // 0001 GETMET R3 R0 K36
0x7C0C0200, // 0002 CALL R3 1
0x7C080200, // 0003 CALL R2 1
0xA8020008, // 0004 EXBLK 0 #000E
0x5C0C0400, // 0005 MOVE R3 R2
0x7C0C0000, // 0006 CALL R3 0
- 0x8C100701, // 0007 GETMET R4 R3 K1
+ 0x8C100725, // 0007 GETMET R4 R3 K37
0x7C100200, // 0008 CALL R4 1
0x1C100801, // 0009 EQ R4 R4 R1
0x78120001, // 000A JMPF R4 #000D
0xA8040001, // 000B EXBLK 1 1
0x80040600, // 000C RET 1 R3
0x7001FFF6, // 000D JMP #0005
- 0x58080002, // 000E LDCONST R2 K2
+ 0x5808001B, // 000E LDCONST R2 K27
0xAC080200, // 000F CATCH R2 1 0
0xB0080000, // 0010 RAISE 2 R0 R0
0x4C080000, // 0011 LDNIL R2
@@ -471,29 +488,24 @@ be_local_closure(class_Matter_Session_Store_find_fabric_by_index, /* name */
/********************************************************************
** Solidified function: active_fabrics
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_active_fabrics, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(remove_expired),
- /* K1 */ be_nested_str_weak(fabrics),
- /* K2 */ be_nested_str_weak(persistables),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(active_fabrics),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040126, // 0000 GETMET R1 R0 K38
0x7C040200, // 0001 CALL R1 1
- 0x88040101, // 0002 GETMBR R1 R0 K1
- 0x8C040302, // 0003 GETMET R1 R1 K2
+ 0x8804010B, // 0002 GETMBR R1 R0 K11
+ 0x8C040327, // 0003 GETMET R1 R1 K39
0x7C040200, // 0004 CALL R1 1
0x80040200, // 0005 RET 1 R1
})
@@ -505,26 +517,22 @@ be_local_closure(class_Matter_Session_Store_active_fabrics, /* name */
/********************************************************************
** Solidified function: create_fabric
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_create_fabric, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(Fabric),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(create_fabric),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0xB8061200, // 0000 GETNGBL R1 K9
+ 0x8C040313, // 0001 GETMET R1 R1 K19
0x5C0C0000, // 0002 MOVE R3 R0
0x7C040400, // 0003 CALL R1 2
0x80040200, // 0004 RET 1 R1
@@ -537,38 +545,32 @@ be_local_closure(class_Matter_Session_Store_create_fabric, /* name */
/********************************************************************
** Solidified function: count_active_fabrics
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_count_active_fabrics, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(remove_expired),
- /* K1 */ be_nested_str_weak(fabrics),
- /* K2 */ be_nested_str_weak(count_persistables),
- /* K3 */ be_const_int(0),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(count_active_fabrics),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040126, // 0000 GETMET R1 R0 K38
0x7C040200, // 0001 CALL R1 1
- 0x88040101, // 0002 GETMBR R1 R0 K1
+ 0x8804010B, // 0002 GETMBR R1 R0 K11
0x4C080000, // 0003 LDNIL R2
0x20040202, // 0004 NE R1 R1 R2
0x78060004, // 0005 JMPF R1 #000B
- 0x88040101, // 0006 GETMBR R1 R0 K1
- 0x8C040302, // 0007 GETMET R1 R1 K2
+ 0x8804010B, // 0006 GETMBR R1 R0 K11
+ 0x8C040328, // 0007 GETMET R1 R1 K40
0x7C040200, // 0008 CALL R1 1
0x80040200, // 0009 RET 1 R1
0x70020000, // 000A JMP #000C
- 0x80060600, // 000B RET 1 K3
+ 0x80060000, // 000B RET 1 K0
0x80000000, // 000C RET 0
})
)
@@ -579,31 +581,20 @@ be_local_closure(class_Matter_Session_Store_count_active_fabrics, /* name */
/********************************************************************
** Solidified function: find_session_by_resumption_id
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_find_session_by_resumption_id, /* name */
be_nested_proto(
- 12, /* nstack */
+ 11, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(sessions),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(log),
- /* K4 */ be_nested_str_weak(MTR_X3A_X20session_X2Eresumption_id_X3D_X25s_X20vs_X20_X25s),
- /* K5 */ be_nested_str_weak(resumption_id),
- /* K6 */ be_nested_str_weak(shared_secret),
- /* K7 */ be_nested_str_weak(update),
- /* K8 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(find_session_by_resumption_id),
&be_const_str_solidified,
- ( &(const binstruction[38]) { /* code */
+ ( &(const binstruction[37]) { /* code */
0x5C080200, // 0000 MOVE R2 R1
0x740A0001, // 0001 JMPT R2 #0004
0x4C080000, // 0002 LDNIL R2
@@ -614,34 +605,33 @@ be_local_closure(class_Matter_Session_Store_find_session_by_resumption_id, /*
0x5C140600, // 0007 MOVE R5 R3
0x7C100200, // 0008 CALL R4 1
0x14100404, // 0009 LT R4 R2 R4
- 0x78120019, // 000A JMPF R4 #0025
+ 0x78120018, // 000A JMPF R4 #0024
0x94100602, // 000B GETIDX R4 R3 R2
- 0xB8160400, // 000C GETNGBL R5 K2
- 0x8C140B03, // 000D GETMET R5 R5 K3
- 0x601C0018, // 000E GETGBL R7 G24
- 0x58200004, // 000F LDCONST R8 K4
- 0x60240008, // 0010 GETGBL R9 G8
- 0x88280905, // 0011 GETMBR R10 R4 K5
- 0x7C240200, // 0012 CALL R9 1
- 0x60280008, // 0013 GETGBL R10 G8
- 0x5C2C0200, // 0014 MOVE R11 R1
- 0x7C280200, // 0015 CALL R10 1
- 0x7C1C0600, // 0016 CALL R7 3
- 0x54220003, // 0017 LDINT R8 4
- 0x7C140600, // 0018 CALL R5 3
- 0x88140905, // 0019 GETMBR R5 R4 K5
- 0x1C140A01, // 001A EQ R5 R5 R1
- 0x78160006, // 001B JMPF R5 #0023
- 0x88140906, // 001C GETMBR R5 R4 K6
- 0x4C180000, // 001D LDNIL R6
- 0x20140A06, // 001E NE R5 R5 R6
- 0x78160002, // 001F JMPF R5 #0023
- 0x8C140907, // 0020 GETMET R5 R4 K7
- 0x7C140200, // 0021 CALL R5 1
- 0x80040800, // 0022 RET 1 R4
- 0x00080508, // 0023 ADD R2 R2 K8
- 0x7001FFE0, // 0024 JMP #0006
- 0x80000000, // 0025 RET 0
+ 0xB8163A00, // 000C GETNGBL R5 K29
+ 0x60180018, // 000D GETGBL R6 G24
+ 0x581C0029, // 000E LDCONST R7 K41
+ 0x60200008, // 000F GETGBL R8 G8
+ 0x8824092A, // 0010 GETMBR R9 R4 K42
+ 0x7C200200, // 0011 CALL R8 1
+ 0x60240008, // 0012 GETGBL R9 G8
+ 0x5C280200, // 0013 MOVE R10 R1
+ 0x7C240200, // 0014 CALL R9 1
+ 0x7C180600, // 0015 CALL R6 3
+ 0x541E0003, // 0016 LDINT R7 4
+ 0x7C140400, // 0017 CALL R5 2
+ 0x8814092A, // 0018 GETMBR R5 R4 K42
+ 0x1C140A01, // 0019 EQ R5 R5 R1
+ 0x78160006, // 001A JMPF R5 #0022
+ 0x8814092B, // 001B GETMBR R5 R4 K43
+ 0x4C180000, // 001C LDNIL R6
+ 0x20140A06, // 001D NE R5 R5 R6
+ 0x78160002, // 001E JMPF R5 #0022
+ 0x8C14092C, // 001F GETMET R5 R4 K44
+ 0x7C140200, // 0020 CALL R5 1
+ 0x80040800, // 0021 RET 1 R4
+ 0x00080503, // 0022 ADD R2 R2 K3
+ 0x7001FFE1, // 0023 JMP #0006
+ 0x80000000, // 0024 RET 0
})
)
);
@@ -651,33 +641,28 @@ be_local_closure(class_Matter_Session_Store_find_session_by_resumption_id, /*
/********************************************************************
** Solidified function: add_session
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_add_session, /* name */
be_nested_proto(
6, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(set_expire_in_seconds),
- /* K1 */ be_nested_str_weak(sessions),
- /* K2 */ be_nested_str_weak(push),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(add_session),
&be_const_str_solidified,
( &(const binstruction[11]) { /* code */
0x4C0C0000, // 0000 LDNIL R3
0x200C0403, // 0001 NE R3 R2 R3
0x780E0002, // 0002 JMPF R3 #0006
- 0x8C0C0300, // 0003 GETMET R3 R1 K0
+ 0x8C0C032D, // 0003 GETMET R3 R1 K45
0x5C140400, // 0004 MOVE R5 R2
0x7C0C0400, // 0005 CALL R3 2
0x880C0101, // 0006 GETMBR R3 R0 K1
- 0x8C0C0702, // 0007 GETMET R3 R3 K2
+ 0x8C0C071C, // 0007 GETMET R3 R3 K28
0x5C140200, // 0008 MOVE R5 R1
0x7C0C0400, // 0009 CALL R3 2
0x80000000, // 000A RET 0
@@ -690,53 +675,42 @@ be_local_closure(class_Matter_Session_Store_add_session, /* name */
/********************************************************************
** Solidified function: find_session_source_id_unsecure
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_find_session_source_id_unsecure, /* name */
be_nested_proto(
9, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(get_session_by_source_node_id),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(Session),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(_source_node_id),
- /* K5 */ be_nested_str_weak(sessions),
- /* K6 */ be_nested_str_weak(push),
- /* K7 */ be_nested_str_weak(set_expire_in_seconds),
- /* K8 */ be_nested_str_weak(update),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(find_session_source_id_unsecure),
&be_const_str_solidified,
( &(const binstruction[24]) { /* code */
- 0x8C0C0100, // 0000 GETMET R3 R0 K0
+ 0x8C0C012E, // 0000 GETMET R3 R0 K46
0x5C140200, // 0001 MOVE R5 R1
0x7C0C0400, // 0002 CALL R3 2
0x4C100000, // 0003 LDNIL R4
0x1C100604, // 0004 EQ R4 R3 R4
0x7812000E, // 0005 JMPF R4 #0015
- 0xB8120200, // 0006 GETNGBL R4 K1
- 0x8C100902, // 0007 GETMET R4 R4 K2
+ 0xB8121200, // 0006 GETNGBL R4 K9
+ 0x8C100919, // 0007 GETMET R4 R4 K25
0x5C180000, // 0008 MOVE R6 R0
- 0x581C0003, // 0009 LDCONST R7 K3
- 0x58200003, // 000A LDCONST R8 K3
+ 0x581C0000, // 0009 LDCONST R7 K0
+ 0x58200000, // 000A LDCONST R8 K0
0x7C100800, // 000B CALL R4 4
0x5C0C0800, // 000C MOVE R3 R4
- 0x900E0801, // 000D SETMBR R3 K4 R1
- 0x88100105, // 000E GETMBR R4 R0 K5
- 0x8C100906, // 000F GETMET R4 R4 K6
+ 0x900E5E01, // 000D SETMBR R3 K47 R1
+ 0x88100101, // 000E GETMBR R4 R0 K1
+ 0x8C10091C, // 000F GETMET R4 R4 K28
0x5C180600, // 0010 MOVE R6 R3
0x7C100400, // 0011 CALL R4 2
- 0x8C100707, // 0012 GETMET R4 R3 K7
+ 0x8C10072D, // 0012 GETMET R4 R3 K45
0x5C180400, // 0013 MOVE R6 R2
0x7C100400, // 0014 CALL R4 2
- 0x8C100708, // 0015 GETMET R4 R3 K8
+ 0x8C10072C, // 0015 GETMET R4 R3 K44
0x7C100200, // 0016 CALL R4 1
0x80040600, // 0017 RET 1 R3
})
@@ -748,24 +722,21 @@ be_local_closure(class_Matter_Session_Store_find_session_source_id_unsecure, /
/********************************************************************
** Solidified function: every_second
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_every_second, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(remove_expired),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(every_second),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040126, // 0000 GETMET R1 R0 K38
0x7C040200, // 0001 CALL R1 1
0x80000000, // 0002 RET 0
})
@@ -777,24 +748,17 @@ be_local_closure(class_Matter_Session_Store_every_second, /* name */
/********************************************************************
** Solidified function: get_session_by_local_session_id
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_get_session_by_local_session_id, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(sessions),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(local_session_id),
- /* K3 */ be_nested_str_weak(update),
- /* K4 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(get_session_by_local_session_id),
&be_const_str_solidified,
( &(const binstruction[22]) { /* code */
@@ -804,20 +768,20 @@ be_local_closure(class_Matter_Session_Store_get_session_by_local_session_id, /
0x4C080000, // 0003 LDNIL R2
0x80040400, // 0004 RET 1 R2
0x6008000C, // 0005 GETGBL R2 G12
- 0x880C0100, // 0006 GETMBR R3 R0 K0
+ 0x880C0101, // 0006 GETMBR R3 R0 K1
0x7C080200, // 0007 CALL R2 1
- 0x580C0001, // 0008 LDCONST R3 K1
- 0x88100100, // 0009 GETMBR R4 R0 K0
+ 0x580C0000, // 0008 LDCONST R3 K0
+ 0x88100101, // 0009 GETMBR R4 R0 K1
0x14140602, // 000A LT R5 R3 R2
0x78160008, // 000B JMPF R5 #0015
0x94140803, // 000C GETIDX R5 R4 R3
- 0x88180B02, // 000D GETMBR R6 R5 K2
+ 0x88180B30, // 000D GETMBR R6 R5 K48
0x1C180C01, // 000E EQ R6 R6 R1
0x781A0002, // 000F JMPF R6 #0013
- 0x8C180B03, // 0010 GETMET R6 R5 K3
+ 0x8C180B2C, // 0010 GETMET R6 R5 K44
0x7C180200, // 0011 CALL R6 1
0x80040A00, // 0012 RET 1 R5
- 0x000C0704, // 0013 ADD R3 R3 K4
+ 0x000C0703, // 0013 ADD R3 R3 K3
0x7001FFF4, // 0014 JMP #000A
0x80000000, // 0015 RET 0
})
@@ -829,36 +793,29 @@ be_local_closure(class_Matter_Session_Store_get_session_by_local_session_id, /
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_init, /* name */
be_nested_proto(
4, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(device),
- /* K1 */ be_nested_str_weak(sessions),
- /* K2 */ be_nested_str_weak(matter),
- /* K3 */ be_nested_str_weak(Expirable_list),
- /* K4 */ be_nested_str_weak(fabrics),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0xB80A0400, // 0001 GETNGBL R2 K2
- 0x8C080503, // 0002 GETMET R2 R2 K3
+ 0x90026201, // 0000 SETMBR R0 K49 R1
+ 0xB80A1200, // 0001 GETNGBL R2 K9
+ 0x8C08050A, // 0002 GETMET R2 R2 K10
0x7C080200, // 0003 CALL R2 1
0x90020202, // 0004 SETMBR R0 K1 R2
- 0xB80A0400, // 0005 GETNGBL R2 K2
- 0x8C080503, // 0006 GETMET R2 R2 K3
+ 0xB80A1200, // 0005 GETNGBL R2 K9
+ 0x8C08050A, // 0006 GETMET R2 R2 K10
0x7C080200, // 0007 CALL R2 1
- 0x90020802, // 0008 SETMBR R0 K4 R2
+ 0x90021602, // 0008 SETMBR R0 K11 R2
0x80000000, // 0009 RET 0
})
)
@@ -869,30 +826,25 @@ be_local_closure(class_Matter_Session_Store_init, /* name */
/********************************************************************
** Solidified function: remove_expired
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_remove_expired, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(sessions),
- /* K1 */ be_nested_str_weak(every_second),
- /* K2 */ be_nested_str_weak(fabrics),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(remove_expired),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x88040101, // 0000 GETMBR R1 R0 K1
+ 0x8C040332, // 0001 GETMET R1 R1 K50
0x7C040200, // 0002 CALL R1 1
- 0x88040102, // 0003 GETMBR R1 R0 K2
- 0x8C040301, // 0004 GETMET R1 R1 K1
+ 0x8804010B, // 0003 GETMBR R1 R0 K11
+ 0x8C040332, // 0004 GETMET R1 R1 K50
0x7C040200, // 0005 CALL R1 1
0x80000000, // 0006 RET 0
})
@@ -904,52 +856,44 @@ be_local_closure(class_Matter_Session_Store_remove_expired, /* name */
/********************************************************************
** Solidified function: remove_redundant_fabric
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_remove_redundant_fabric, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(fabrics),
- /* K2 */ be_nested_str_weak(fabric_id),
- /* K3 */ be_nested_str_weak(device_id),
- /* K4 */ be_nested_str_weak(remove),
- /* K5 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(remove_redundant_fabric),
&be_const_str_solidified,
( &(const binstruction[26]) { /* code */
0x58080000, // 0000 LDCONST R2 K0
0x600C000C, // 0001 GETGBL R3 G12
- 0x88100101, // 0002 GETMBR R4 R0 K1
+ 0x8810010B, // 0002 GETMBR R4 R0 K11
0x7C0C0200, // 0003 CALL R3 1
0x140C0403, // 0004 LT R3 R2 R3
0x780E0012, // 0005 JMPF R3 #0019
- 0x880C0101, // 0006 GETMBR R3 R0 K1
+ 0x880C010B, // 0006 GETMBR R3 R0 K11
0x940C0602, // 0007 GETIDX R3 R3 R2
0x20100601, // 0008 NE R4 R3 R1
0x7812000C, // 0009 JMPF R4 #0017
- 0x88100702, // 000A GETMBR R4 R3 K2
- 0x88140302, // 000B GETMBR R5 R1 K2
+ 0x88100733, // 000A GETMBR R4 R3 K51
+ 0x88140333, // 000B GETMBR R5 R1 K51
0x1C100805, // 000C EQ R4 R4 R5
0x78120008, // 000D JMPF R4 #0017
- 0x88100703, // 000E GETMBR R4 R3 K3
- 0x88140303, // 000F GETMBR R5 R1 K3
+ 0x88100734, // 000E GETMBR R4 R3 K52
+ 0x88140334, // 000F GETMBR R5 R1 K52
0x1C100805, // 0010 EQ R4 R4 R5
0x78120004, // 0011 JMPF R4 #0017
- 0x88100101, // 0012 GETMBR R4 R0 K1
- 0x8C100904, // 0013 GETMET R4 R4 K4
+ 0x8810010B, // 0012 GETMBR R4 R0 K11
+ 0x8C100902, // 0013 GETMET R4 R4 K2
0x5C180400, // 0014 MOVE R6 R2
0x7C100400, // 0015 CALL R4 2
0x70020000, // 0016 JMP #0018
- 0x00080505, // 0017 ADD R2 R2 K5
+ 0x00080503, // 0017 ADD R2 R2 K3
0x7001FFE7, // 0018 JMP #0001
0x80000000, // 0019 RET 0
})
@@ -961,49 +905,39 @@ be_local_closure(class_Matter_Session_Store_remove_redundant_fabric, /* name *
/********************************************************************
** Solidified function: add_fabric
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_add_fabric, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(Fabric),
- /* K2 */ be_nested_str_weak(value_error),
- /* K3 */ be_nested_str_weak(must_X20be_X20of_X20class_X20matter_X2EFabric),
- /* K4 */ be_nested_str_weak(fabrics),
- /* K5 */ be_nested_str_weak(find),
- /* K6 */ be_nested_str_weak(remove_redundant_fabric),
- /* K7 */ be_nested_str_weak(push),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(add_fabric),
&be_const_str_solidified,
( &(const binstruction[22]) { /* code */
0x6008000F, // 0000 GETGBL R2 G15
0x5C0C0200, // 0001 MOVE R3 R1
- 0xB8120000, // 0002 GETNGBL R4 K0
- 0x88100901, // 0003 GETMBR R4 R4 K1
+ 0xB8121200, // 0002 GETNGBL R4 K9
+ 0x88100913, // 0003 GETMBR R4 R4 K19
0x7C080400, // 0004 CALL R2 2
0x740A0000, // 0005 JMPT R2 #0007
- 0xB0060503, // 0006 RAISE 1 K2 K3
- 0x88080104, // 0007 GETMBR R2 R0 K4
- 0x8C080505, // 0008 GETMET R2 R2 K5
+ 0xB0066B36, // 0006 RAISE 1 K53 K54
+ 0x8808010B, // 0007 GETMBR R2 R0 K11
+ 0x8C080517, // 0008 GETMET R2 R2 K23
0x5C100200, // 0009 MOVE R4 R1
0x7C080400, // 000A CALL R2 2
0x4C0C0000, // 000B LDNIL R3
0x1C080403, // 000C EQ R2 R2 R3
0x780A0006, // 000D JMPF R2 #0015
- 0x8C080106, // 000E GETMET R2 R0 K6
+ 0x8C080137, // 000E GETMET R2 R0 K55
0x5C100200, // 000F MOVE R4 R1
0x7C080400, // 0010 CALL R2 2
- 0x88080104, // 0011 GETMBR R2 R0 K4
- 0x8C080507, // 0012 GETMET R2 R2 K7
+ 0x8808010B, // 0011 GETMBR R2 R0 K11
+ 0x8C08051C, // 0012 GETMET R2 R2 K28
0x5C100200, // 0013 MOVE R4 R1
0x7C080400, // 0014 CALL R2 2
0x80000000, // 0015 RET 0
@@ -1016,24 +950,17 @@ be_local_closure(class_Matter_Session_Store_add_fabric, /* name */
/********************************************************************
** Solidified function: get_session_by_source_node_id
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_get_session_by_source_node_id, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(sessions),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(_source_node_id),
- /* K3 */ be_nested_str_weak(update),
- /* K4 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(get_session_by_source_node_id),
&be_const_str_solidified,
( &(const binstruction[22]) { /* code */
@@ -1043,20 +970,20 @@ be_local_closure(class_Matter_Session_Store_get_session_by_source_node_id, /*
0x4C080000, // 0003 LDNIL R2
0x80040400, // 0004 RET 1 R2
0x6008000C, // 0005 GETGBL R2 G12
- 0x880C0100, // 0006 GETMBR R3 R0 K0
+ 0x880C0101, // 0006 GETMBR R3 R0 K1
0x7C080200, // 0007 CALL R2 1
- 0x580C0001, // 0008 LDCONST R3 K1
- 0x88100100, // 0009 GETMBR R4 R0 K0
+ 0x580C0000, // 0008 LDCONST R3 K0
+ 0x88100101, // 0009 GETMBR R4 R0 K1
0x14140602, // 000A LT R5 R3 R2
0x78160008, // 000B JMPF R5 #0015
0x94140803, // 000C GETIDX R5 R4 R3
- 0x88180B02, // 000D GETMBR R6 R5 K2
+ 0x88180B2F, // 000D GETMBR R6 R5 K47
0x1C180C01, // 000E EQ R6 R6 R1
0x781A0002, // 000F JMPF R6 #0013
- 0x8C180B03, // 0010 GETMET R6 R5 K3
+ 0x8C180B2C, // 0010 GETMET R6 R5 K44
0x7C180200, // 0011 CALL R6 1
0x80040A00, // 0012 RET 1 R5
- 0x000C0704, // 0013 ADD R3 R3 K4
+ 0x000C0703, // 0013 ADD R3 R3 K3
0x7001FFF4, // 0014 JMP #000A
0x80000000, // 0015 RET 0
})
@@ -1068,50 +995,42 @@ be_local_closure(class_Matter_Session_Store_get_session_by_source_node_id, /*
/********************************************************************
** Solidified function: next_fabric_idx
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_next_fabric_idx, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(remove_expired),
- /* K1 */ be_const_int(1),
- /* K2 */ be_nested_str_weak(active_fabrics),
- /* K3 */ be_nested_str_weak(fabric_index),
- /* K4 */ be_nested_str_weak(int),
- /* K5 */ be_nested_str_weak(stop_iteration),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(next_fabric_idx),
&be_const_str_solidified,
( &(const binstruction[25]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040126, // 0000 GETMET R1 R0 K38
0x7C040200, // 0001 CALL R1 1
- 0x58040001, // 0002 LDCONST R1 K1
+ 0x58040003, // 0002 LDCONST R1 K3
0x60080010, // 0003 GETGBL R2 G16
- 0x8C0C0102, // 0004 GETMET R3 R0 K2
+ 0x8C0C0124, // 0004 GETMET R3 R0 K36
0x7C0C0200, // 0005 CALL R3 1
0x7C080200, // 0006 CALL R2 1
0xA802000C, // 0007 EXBLK 0 #0015
0x5C0C0400, // 0008 MOVE R3 R2
0x7C0C0000, // 0009 CALL R3 0
- 0x88100703, // 000A GETMBR R4 R3 K3
+ 0x88100738, // 000A GETMBR R4 R3 K56
0x60140004, // 000B GETGBL R5 G4
0x5C180800, // 000C MOVE R6 R4
0x7C140200, // 000D CALL R5 1
- 0x1C140B04, // 000E EQ R5 R5 K4
+ 0x1C140B39, // 000E EQ R5 R5 K57
0x78160003, // 000F JMPF R5 #0014
0x28140801, // 0010 GE R5 R4 R1
0x78160001, // 0011 JMPF R5 #0014
- 0x00140901, // 0012 ADD R5 R4 K1
+ 0x00140903, // 0012 ADD R5 R4 K3
0x5C040A00, // 0013 MOVE R1 R5
0x7001FFF2, // 0014 JMP #0008
- 0x58080005, // 0015 LDCONST R2 K5
+ 0x5808001B, // 0015 LDCONST R2 K27
0xAC080200, // 0016 CATCH R2 1 0
0xB0080000, // 0017 RAISE 2 R0 R0
0x80040200, // 0018 RET 1 R1
@@ -1124,152 +1043,118 @@ be_local_closure(class_Matter_Session_Store_next_fabric_idx, /* name */
/********************************************************************
** Solidified function: save_fabrics
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_save_fabrics, /* name */
be_nested_proto(
- 12, /* nstack */
+ 11, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[29]) { /* constants */
- /* K0 */ be_nested_str_weak(json),
- /* K1 */ be_nested_str_weak(path),
- /* K2 */ be_nested_str_weak(remove_expired),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(_FABRICS_TEMP),
- /* K5 */ be_nested_str_weak(w),
- /* K6 */ be_nested_str_weak(write),
- /* K7 */ be_nested_str_weak(_X5B),
- /* K8 */ be_nested_str_weak(fabrics),
- /* K9 */ be_nested_str_weak(persistables),
- /* K10 */ be_nested_str_weak(_sessions),
- /* K11 */ be_const_int(1),
- /* K12 */ be_nested_str_weak(stop_iteration),
- /* K13 */ be_nested_str_weak(_X2C),
- /* K14 */ be_nested_str_weak(writejson),
- /* K15 */ be_nested_str_weak(_X5D),
- /* K16 */ be_nested_str_weak(close),
- /* K17 */ be_nested_str_weak(remove),
- /* K18 */ be_nested_str_weak(_FABRICS),
- /* K19 */ be_nested_str_weak(rename),
- /* K20 */ be_nested_str_weak(tasmota),
- /* K21 */ be_nested_str_weak(log),
- /* K22 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20_X25s_X20fabric_X28s_X29_X20and_X20_X25s_X20session_X28s_X29),
- /* K23 */ be_const_int(2),
- /* K24 */ be_nested_str_weak(device),
- /* K25 */ be_nested_str_weak(event_fabrics_saved),
- /* K26 */ be_nested_str_weak(MTR_X3A_X20Saving_X20Fabrics_X20failed),
- /* K27 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A),
- /* K28 */ be_nested_str_weak(_X7C),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(save_fabrics),
&be_const_str_solidified,
- ( &(const binstruction[101]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xA40A0200, // 0001 IMPORT R2 K1
- 0xA802004F, // 0002 EXBLK 0 #0053
- 0x8C0C0102, // 0003 GETMET R3 R0 K2
+ ( &(const binstruction[98]) { /* code */
+ 0xA4061E00, // 0000 IMPORT R1 K15
+ 0xA40A7400, // 0001 IMPORT R2 K58
+ 0xA802004D, // 0002 EXBLK 0 #0051
+ 0x8C0C0126, // 0003 GETMET R3 R0 K38
0x7C0C0200, // 0004 CALL R3 1
- 0x580C0003, // 0005 LDCONST R3 K3
- 0x58100003, // 0006 LDCONST R4 K3
+ 0x580C0000, // 0005 LDCONST R3 K0
+ 0x58100000, // 0006 LDCONST R4 K0
0x60140011, // 0007 GETGBL R5 G17
- 0x88180104, // 0008 GETMBR R6 R0 K4
- 0x581C0005, // 0009 LDCONST R7 K5
+ 0x8818013B, // 0008 GETMBR R6 R0 K59
+ 0x581C003C, // 0009 LDCONST R7 K60
0x7C140400, // 000A CALL R5 2
- 0x8C180B06, // 000B GETMET R6 R5 K6
- 0x58200007, // 000C LDCONST R8 K7
+ 0x8C180B3D, // 000B GETMET R6 R5 K61
+ 0x5820003E, // 000C LDCONST R8 K62
0x7C180400, // 000D CALL R6 2
0x60180010, // 000E GETGBL R6 G16
- 0x881C0108, // 000F GETMBR R7 R0 K8
- 0x8C1C0F09, // 0010 GETMET R7 R7 K9
+ 0x881C010B, // 000F GETMBR R7 R0 K11
+ 0x8C1C0F27, // 0010 GETMET R7 R7 K39
0x7C1C0200, // 0011 CALL R7 1
0x7C180200, // 0012 CALL R6 1
0xA8020018, // 0013 EXBLK 0 #002D
0x5C1C0C00, // 0014 MOVE R7 R6
0x7C1C0000, // 0015 CALL R7 0
0x60200010, // 0016 GETGBL R8 G16
- 0x88240F0A, // 0017 GETMBR R9 R7 K10
- 0x8C241309, // 0018 GETMET R9 R9 K9
+ 0x88240F18, // 0017 GETMBR R9 R7 K24
+ 0x8C241327, // 0018 GETMET R9 R9 K39
0x7C240200, // 0019 CALL R9 1
0x7C200200, // 001A CALL R8 1
0xA8020003, // 001B EXBLK 0 #0020
0x5C241000, // 001C MOVE R9 R8
0x7C240000, // 001D CALL R9 0
- 0x000C070B, // 001E ADD R3 R3 K11
+ 0x000C0703, // 001E ADD R3 R3 K3
0x7001FFFB, // 001F JMP #001C
- 0x5820000C, // 0020 LDCONST R8 K12
+ 0x5820001B, // 0020 LDCONST R8 K27
0xAC200200, // 0021 CATCH R8 1 0
0xB0080000, // 0022 RAISE 2 R0 R0
- 0x24200903, // 0023 GT R8 R4 K3
+ 0x24200900, // 0023 GT R8 R4 K0
0x78220002, // 0024 JMPF R8 #0028
- 0x8C200B06, // 0025 GETMET R8 R5 K6
- 0x5828000D, // 0026 LDCONST R10 K13
+ 0x8C200B3D, // 0025 GETMET R8 R5 K61
+ 0x5828003F, // 0026 LDCONST R10 K63
0x7C200400, // 0027 CALL R8 2
- 0x8C200F0E, // 0028 GETMET R8 R7 K14
+ 0x8C200F40, // 0028 GETMET R8 R7 K64
0x5C280A00, // 0029 MOVE R10 R5
0x7C200400, // 002A CALL R8 2
- 0x0010090B, // 002B ADD R4 R4 K11
+ 0x00100903, // 002B ADD R4 R4 K3
0x7001FFE6, // 002C JMP #0014
- 0x5818000C, // 002D LDCONST R6 K12
+ 0x5818001B, // 002D LDCONST R6 K27
0xAC180200, // 002E CATCH R6 1 0
0xB0080000, // 002F RAISE 2 R0 R0
- 0x8C180B06, // 0030 GETMET R6 R5 K6
- 0x5820000F, // 0031 LDCONST R8 K15
+ 0x8C180B3D, // 0030 GETMET R6 R5 K61
+ 0x58200041, // 0031 LDCONST R8 K65
0x7C180400, // 0032 CALL R6 2
- 0x8C180B10, // 0033 GETMET R6 R5 K16
+ 0x8C180B0E, // 0033 GETMET R6 R5 K14
0x7C180200, // 0034 CALL R6 1
- 0x8C180511, // 0035 GETMET R6 R2 K17
- 0x88200112, // 0036 GETMBR R8 R0 K18
+ 0x8C180502, // 0035 GETMET R6 R2 K2
+ 0x8820010C, // 0036 GETMBR R8 R0 K12
0x7C180400, // 0037 CALL R6 2
- 0x8C180513, // 0038 GETMET R6 R2 K19
- 0x88200104, // 0039 GETMBR R8 R0 K4
- 0x88240112, // 003A GETMBR R9 R0 K18
+ 0x8C180542, // 0038 GETMET R6 R2 K66
+ 0x8820013B, // 0039 GETMBR R8 R0 K59
+ 0x8824010C, // 003A GETMBR R9 R0 K12
0x7C180600, // 003B CALL R6 3
- 0x781A000C, // 003C JMPF R6 #004A
- 0xB81A2800, // 003D GETNGBL R6 K20
- 0x8C180D15, // 003E GETMET R6 R6 K21
- 0x60200018, // 003F GETGBL R8 G24
- 0x58240016, // 0040 LDCONST R9 K22
- 0x5C280800, // 0041 MOVE R10 R4
- 0x5C2C0600, // 0042 MOVE R11 R3
- 0x7C200600, // 0043 CALL R8 3
- 0x58240017, // 0044 LDCONST R9 K23
- 0x7C180600, // 0045 CALL R6 3
- 0x88180118, // 0046 GETMBR R6 R0 K24
- 0x8C180D19, // 0047 GETMET R6 R6 K25
- 0x7C180200, // 0048 CALL R6 1
- 0x70020006, // 0049 JMP #0051
- 0xB81A2800, // 004A GETNGBL R6 K20
- 0x8C180D15, // 004B GETMET R6 R6 K21
- 0x60200018, // 004C GETGBL R8 G24
- 0x5824001A, // 004D LDCONST R9 K26
- 0x7C200200, // 004E CALL R8 1
- 0x58240017, // 004F LDCONST R9 K23
- 0x7C180600, // 0050 CALL R6 3
- 0xA8040001, // 0051 EXBLK 1 1
- 0x70020010, // 0052 JMP #0064
- 0xAC0C0002, // 0053 CATCH R3 0 2
- 0x7002000D, // 0054 JMP #0063
- 0xB8162800, // 0055 GETNGBL R5 K20
- 0x8C140B15, // 0056 GETMET R5 R5 K21
- 0x601C0008, // 0057 GETGBL R7 G8
- 0x5C200600, // 0058 MOVE R8 R3
- 0x7C1C0200, // 0059 CALL R7 1
- 0x001E3607, // 005A ADD R7 K27 R7
- 0x001C0F1C, // 005B ADD R7 R7 K28
- 0x60200008, // 005C GETGBL R8 G8
- 0x5C240800, // 005D MOVE R9 R4
- 0x7C200200, // 005E CALL R8 1
- 0x001C0E08, // 005F ADD R7 R7 R8
- 0x58200017, // 0060 LDCONST R8 K23
- 0x7C140600, // 0061 CALL R5 3
- 0x70020000, // 0062 JMP #0064
- 0xB0080000, // 0063 RAISE 2 R0 R0
- 0x80000000, // 0064 RET 0
+ 0x781A000B, // 003C JMPF R6 #0049
+ 0xB81A3A00, // 003D GETNGBL R6 K29
+ 0x601C0018, // 003E GETGBL R7 G24
+ 0x58200043, // 003F LDCONST R8 K67
+ 0x5C240800, // 0040 MOVE R9 R4
+ 0x5C280600, // 0041 MOVE R10 R3
+ 0x7C1C0600, // 0042 CALL R7 3
+ 0x58200006, // 0043 LDCONST R8 K6
+ 0x7C180400, // 0044 CALL R6 2
+ 0x88180131, // 0045 GETMBR R6 R0 K49
+ 0x8C180D44, // 0046 GETMET R6 R6 K68
+ 0x7C180200, // 0047 CALL R6 1
+ 0x70020005, // 0048 JMP #004F
+ 0xB81A3A00, // 0049 GETNGBL R6 K29
+ 0x601C0018, // 004A GETGBL R7 G24
+ 0x58200045, // 004B LDCONST R8 K69
+ 0x7C1C0200, // 004C CALL R7 1
+ 0x58200006, // 004D LDCONST R8 K6
+ 0x7C180400, // 004E CALL R6 2
+ 0xA8040001, // 004F EXBLK 1 1
+ 0x7002000F, // 0050 JMP #0061
+ 0xAC0C0002, // 0051 CATCH R3 0 2
+ 0x7002000C, // 0052 JMP #0060
+ 0xB8163A00, // 0053 GETNGBL R5 K29
+ 0x60180008, // 0054 GETGBL R6 G8
+ 0x5C1C0600, // 0055 MOVE R7 R3
+ 0x7C180200, // 0056 CALL R6 1
+ 0x001A8C06, // 0057 ADD R6 K70 R6
+ 0x00180D21, // 0058 ADD R6 R6 K33
+ 0x601C0008, // 0059 GETGBL R7 G8
+ 0x5C200800, // 005A MOVE R8 R4
+ 0x7C1C0200, // 005B CALL R7 1
+ 0x00180C07, // 005C ADD R6 R6 R7
+ 0x581C0006, // 005D LDCONST R7 K6
+ 0x7C140400, // 005E CALL R5 2
+ 0x70020000, // 005F JMP #0061
+ 0xB0080000, // 0060 RAISE 2 R0 R0
+ 0x80000000, // 0061 RET 0
})
)
);
@@ -1279,46 +1164,38 @@ be_local_closure(class_Matter_Session_Store_save_fabrics, /* name */
/********************************************************************
** Solidified function: create_session
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_create_session, /* name */
be_nested_proto(
9, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(get_session_by_local_session_id),
- /* K1 */ be_nested_str_weak(remove_session),
- /* K2 */ be_nested_str_weak(matter),
- /* K3 */ be_nested_str_weak(Session),
- /* K4 */ be_nested_str_weak(sessions),
- /* K5 */ be_nested_str_weak(push),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(create_session),
&be_const_str_solidified,
( &(const binstruction[21]) { /* code */
- 0x8C0C0100, // 0000 GETMET R3 R0 K0
+ 0x8C0C0108, // 0000 GETMET R3 R0 K8
0x5C140200, // 0001 MOVE R5 R1
0x7C0C0400, // 0002 CALL R3 2
0x4C100000, // 0003 LDNIL R4
0x20100604, // 0004 NE R4 R3 R4
0x78120002, // 0005 JMPF R4 #0009
- 0x8C100101, // 0006 GETMET R4 R0 K1
+ 0x8C100147, // 0006 GETMET R4 R0 K71
0x5C180600, // 0007 MOVE R6 R3
0x7C100400, // 0008 CALL R4 2
- 0xB8120400, // 0009 GETNGBL R4 K2
- 0x8C100903, // 000A GETMET R4 R4 K3
+ 0xB8121200, // 0009 GETNGBL R4 K9
+ 0x8C100919, // 000A GETMET R4 R4 K25
0x5C180000, // 000B MOVE R6 R0
0x5C1C0200, // 000C MOVE R7 R1
0x5C200400, // 000D MOVE R8 R2
0x7C100800, // 000E CALL R4 4
0x5C0C0800, // 000F MOVE R3 R4
- 0x88100104, // 0010 GETMBR R4 R0 K4
- 0x8C100905, // 0011 GETMET R4 R4 K5
+ 0x88100101, // 0010 GETMBR R4 R0 K1
+ 0x8C10091C, // 0011 GETMET R4 R4 K28
0x5C180600, // 0012 MOVE R6 R3
0x7C100400, // 0013 CALL R4 2
0x80040600, // 0014 RET 1 R3
@@ -1331,59 +1208,50 @@ be_local_closure(class_Matter_Session_Store_create_session, /* name */
/********************************************************************
** Solidified function: remove_fabric
********************************************************************/
-extern const bclass be_class_Matter_Session_Store;
be_local_closure(class_Matter_Session_Store_remove_fabric, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Session_Store,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(sessions),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(_fabric),
- /* K3 */ be_nested_str_weak(remove),
- /* K4 */ be_const_int(1),
- /* K5 */ be_nested_str_weak(fabrics),
- /* K6 */ be_nested_str_weak(find),
- }),
+ &be_ktab_class_Matter_Session_Store, /* shared constants */
be_str_weak(remove_fabric),
&be_const_str_solidified,
( &(const binstruction[34]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x88080101, // 0000 GETMBR R2 R0 K1
0x4C0C0000, // 0001 LDNIL R3
0x20080403, // 0002 NE R2 R2 R3
0x780A0011, // 0003 JMPF R2 #0016
- 0x58080001, // 0004 LDCONST R2 K1
+ 0x58080000, // 0004 LDCONST R2 K0
0x600C000C, // 0005 GETGBL R3 G12
- 0x88100100, // 0006 GETMBR R4 R0 K0
+ 0x88100101, // 0006 GETMBR R4 R0 K1
0x7C0C0200, // 0007 CALL R3 1
0x140C0403, // 0008 LT R3 R2 R3
0x780E000B, // 0009 JMPF R3 #0016
- 0x880C0100, // 000A GETMBR R3 R0 K0
+ 0x880C0101, // 000A GETMBR R3 R0 K1
0x940C0602, // 000B GETIDX R3 R3 R2
- 0x880C0702, // 000C GETMBR R3 R3 K2
+ 0x880C0748, // 000C GETMBR R3 R3 K72
0x1C0C0601, // 000D EQ R3 R3 R1
0x780E0004, // 000E JMPF R3 #0014
- 0x880C0100, // 000F GETMBR R3 R0 K0
- 0x8C0C0703, // 0010 GETMET R3 R3 K3
+ 0x880C0101, // 000F GETMBR R3 R0 K1
+ 0x8C0C0702, // 0010 GETMET R3 R3 K2
0x5C140400, // 0011 MOVE R5 R2
0x7C0C0400, // 0012 CALL R3 2
0x70020000, // 0013 JMP #0015
- 0x00080504, // 0014 ADD R2 R2 K4
+ 0x00080503, // 0014 ADD R2 R2 K3
0x7001FFEE, // 0015 JMP #0005
- 0x88080105, // 0016 GETMBR R2 R0 K5
+ 0x8808010B, // 0016 GETMBR R2 R0 K11
0x4C0C0000, // 0017 LDNIL R3
0x20080403, // 0018 NE R2 R2 R3
0x780A0006, // 0019 JMPF R2 #0021
- 0x88080105, // 001A GETMBR R2 R0 K5
- 0x8C080503, // 001B GETMET R2 R2 K3
- 0x88100105, // 001C GETMBR R4 R0 K5
- 0x8C100906, // 001D GETMET R4 R4 K6
+ 0x8808010B, // 001A GETMBR R2 R0 K11
+ 0x8C080502, // 001B GETMET R2 R2 K2
+ 0x8810010B, // 001C GETMBR R4 R0 K11
+ 0x8C100917, // 001D GETMET R4 R4 K23
0x5C180200, // 001E MOVE R6 R1
0x7C100400, // 001F CALL R4 2
0x7C080400, // 0020 CALL R2 2
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TCP_async.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TCP_async.h
index 405f2510e..9ba0435a7 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TCP_async.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TCP_async.h
@@ -3,28 +3,68 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Matter_TCP_async' ktab size: 41, total: 80 (saved 312 bytes)
+static const bvalue be_ktab_class_Matter_TCP_async[41] = {
+ /* K0 */ be_nested_str_weak(tcp_connected),
+ /* K1 */ be_nested_str_weak(tcp),
+ /* K2 */ be_nested_str_weak(read),
+ /* K3 */ be_nested_str_weak(reset),
+ /* K4 */ be_nested_str_weak(tasmota),
+ /* K5 */ be_nested_str_weak(wifi),
+ /* K6 */ be_nested_str_weak(up),
+ /* K7 */ be_nested_str_weak(eth),
+ /* K8 */ be_nested_str_weak(time_start),
+ /* K9 */ be_nested_str_weak(millis),
+ /* K10 */ be_nested_str_weak(status),
+ /* K11 */ be_const_int(0),
+ /* K12 */ be_nested_str_weak(connect),
+ /* K13 */ be_nested_str_weak(addr),
+ /* K14 */ be_nested_str_weak(port),
+ /* K15 */ be_nested_str_weak(fast_loop),
+ /* K16 */ be_nested_str_weak(remove_fast_loop),
+ /* K17 */ be_nested_str_weak(add_fast_loop),
+ /* K18 */ be_nested_str_weak(add_driver),
+ /* K19 */ be_nested_str_weak(log),
+ /* K20 */ be_nested_str_weak(BRY_X3A_X20failed_X20to_X20resolve_X20_X5B_X25s_X5D_X3A_X25i),
+ /* K21 */ be_const_int(3),
+ /* K22 */ be_nested_str_weak(close),
+ /* K23 */ be_nested_str_weak(event_dnsfailed),
+ /* K24 */ be_nested_str_weak(readbytes),
+ /* K25 */ be_nested_str_weak(available),
+ /* K26 */ be_nested_str_weak(timeout),
+ /* K27 */ be_nested_str_weak(TIMEOUT),
+ /* K28 */ be_nested_str_weak(tcpclientasync),
+ /* K29 */ be_nested_str_weak(loop),
+ /* K30 */ be_nested_str_weak(write),
+ /* K31 */ be_nested_str_weak(connected),
+ /* K32 */ be_const_int(1),
+ /* K33 */ be_nested_str_weak(event_established),
+ /* K34 */ be_nested_str_weak(event_refused),
+ /* K35 */ be_nested_str_weak(event_timeout),
+ /* K36 */ be_nested_str_weak(event_closed),
+ /* K37 */ be_nested_str_weak(event_available),
+ /* K38 */ be_nested_str_weak(listening),
+ /* K39 */ be_nested_str_weak(event_listening),
+ /* K40 */ be_nested_str_weak(remove_driver),
+};
+
extern const bclass be_class_Matter_TCP_async;
/********************************************************************
** Solidified function: read
********************************************************************/
-extern const bclass be_class_Matter_TCP_async;
be_local_closure(class_Matter_TCP_async_read, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TCP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(tcp_connected),
- /* K1 */ be_nested_str_weak(tcp),
- /* K2 */ be_nested_str_weak(read),
- }),
+ &be_ktab_class_Matter_TCP_async, /* shared constants */
be_str_weak(read),
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
@@ -45,108 +85,82 @@ be_local_closure(class_Matter_TCP_async_read, /* name */
/********************************************************************
** Solidified function: begin
********************************************************************/
-extern const bclass be_class_Matter_TCP_async;
be_local_closure(class_Matter_TCP_async_begin, /* name */
be_nested_proto(
- 7, /* nstack */
+ 6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TCP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[23]) { /* constants */
- /* K0 */ be_nested_str_weak(reset),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(wifi),
- /* K3 */ be_nested_str_weak(up),
- /* K4 */ be_nested_str_weak(eth),
- /* K5 */ be_nested_str_weak(time_start),
- /* K6 */ be_nested_str_weak(millis),
- /* K7 */ be_nested_str_weak(status),
- /* K8 */ be_const_int(0),
- /* K9 */ be_nested_str_weak(tcp),
- /* K10 */ be_nested_str_weak(connect),
- /* K11 */ be_nested_str_weak(addr),
- /* K12 */ be_nested_str_weak(port),
- /* K13 */ be_nested_str_weak(fast_loop),
- /* K14 */ be_nested_str_weak(remove_fast_loop),
- /* K15 */ be_nested_str_weak(add_fast_loop),
- /* K16 */ be_nested_str_weak(add_driver),
- /* K17 */ be_nested_str_weak(log),
- /* K18 */ be_nested_str_weak(BRY_X3A_X20failed_X20to_X20resolve_X20_X5B_X25s_X5D_X3A_X25i),
- /* K19 */ be_const_int(3),
- /* K20 */ be_nested_str_weak(close),
- /* K21 */ be_nested_str_weak(tcp_connected),
- /* K22 */ be_nested_str_weak(event_dnsfailed),
- }),
+ &be_ktab_class_Matter_TCP_async, /* shared constants */
be_str_weak(begin),
&be_const_str_solidified,
- ( &(const binstruction[63]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ ( &(const binstruction[62]) { /* code */
+ 0x8C040103, // 0000 GETMET R1 R0 K3
0x7C040200, // 0001 CALL R1 1
- 0xB8060200, // 0002 GETNGBL R1 K1
- 0x8C040302, // 0003 GETMET R1 R1 K2
+ 0xB8060800, // 0002 GETNGBL R1 K4
+ 0x8C040305, // 0003 GETMET R1 R1 K5
0x7C040200, // 0004 CALL R1 1
- 0x94040303, // 0005 GETIDX R1 R1 K3
+ 0x94040306, // 0005 GETIDX R1 R1 K6
0x74060006, // 0006 JMPT R1 #000E
- 0xB8060200, // 0007 GETNGBL R1 K1
- 0x8C040304, // 0008 GETMET R1 R1 K4
+ 0xB8060800, // 0007 GETNGBL R1 K4
+ 0x8C040307, // 0008 GETMET R1 R1 K7
0x7C040200, // 0009 CALL R1 1
- 0x94040303, // 000A GETIDX R1 R1 K3
+ 0x94040306, // 000A GETIDX R1 R1 K6
0x74060001, // 000B JMPT R1 #000E
0x4C040000, // 000C LDNIL R1
0x80040200, // 000D RET 1 R1
- 0xB8060200, // 000E GETNGBL R1 K1
- 0x8C040306, // 000F GETMET R1 R1 K6
+ 0xB8060800, // 000E GETNGBL R1 K4
+ 0x8C040309, // 000F GETMET R1 R1 K9
0x7C040200, // 0010 CALL R1 1
- 0x90020A01, // 0011 SETMBR R0 K5 R1
- 0x90020F08, // 0012 SETMBR R0 K7 K8
- 0x88040109, // 0013 GETMBR R1 R0 K9
- 0x8C04030A, // 0014 GETMET R1 R1 K10
- 0x880C010B, // 0015 GETMBR R3 R0 K11
- 0x8810010C, // 0016 GETMBR R4 R0 K12
+ 0x90021001, // 0011 SETMBR R0 K8 R1
+ 0x9002150B, // 0012 SETMBR R0 K10 K11
+ 0x88040101, // 0013 GETMBR R1 R0 K1
+ 0x8C04030C, // 0014 GETMET R1 R1 K12
+ 0x880C010D, // 0015 GETMBR R3 R0 K13
+ 0x8810010E, // 0016 GETMBR R4 R0 K14
0x7C040600, // 0017 CALL R1 3
0x78060011, // 0018 JMPF R1 #002B
- 0x8804010D, // 0019 GETMBR R1 R0 K13
+ 0x8804010F, // 0019 GETMBR R1 R0 K15
0x78060008, // 001A JMPF R1 #0024
- 0xB8060200, // 001B GETNGBL R1 K1
- 0x8C04030E, // 001C GETMET R1 R1 K14
- 0x880C010D, // 001D GETMBR R3 R0 K13
+ 0xB8060800, // 001B GETNGBL R1 K4
+ 0x8C040310, // 001C GETMET R1 R1 K16
+ 0x880C010F, // 001D GETMBR R3 R0 K15
0x7C040400, // 001E CALL R1 2
- 0xB8060200, // 001F GETNGBL R1 K1
- 0x8C04030F, // 0020 GETMET R1 R1 K15
- 0x880C010D, // 0021 GETMBR R3 R0 K13
+ 0xB8060800, // 001F GETNGBL R1 K4
+ 0x8C040311, // 0020 GETMET R1 R1 K17
+ 0x880C010F, // 0021 GETMBR R3 R0 K15
0x7C040400, // 0022 CALL R1 2
0x70020003, // 0023 JMP #0028
- 0xB8060200, // 0024 GETNGBL R1 K1
- 0x8C040310, // 0025 GETMET R1 R1 K16
+ 0xB8060800, // 0024 GETNGBL R1 K4
+ 0x8C040312, // 0025 GETMET R1 R1 K18
0x5C0C0000, // 0026 MOVE R3 R0
0x7C040400, // 0027 CALL R1 2
0x50040200, // 0028 LDBOOL R1 1 0
0x80040200, // 0029 RET 1 R1
- 0x70020012, // 002A JMP #003E
- 0xB8060200, // 002B GETNGBL R1 K1
- 0x8C040311, // 002C GETMET R1 R1 K17
- 0x600C0018, // 002D GETGBL R3 G24
- 0x58100012, // 002E LDCONST R4 K18
- 0x8814010B, // 002F GETMBR R5 R0 K11
- 0x8818010C, // 0030 GETMBR R6 R0 K12
- 0x7C0C0600, // 0031 CALL R3 3
- 0x58100013, // 0032 LDCONST R4 K19
- 0x7C040600, // 0033 CALL R1 3
- 0x8C040114, // 0034 GETMET R1 R0 K20
- 0x7C040200, // 0035 CALL R1 1
- 0x5405FFFE, // 0036 LDINT R1 -1
- 0x90020E01, // 0037 SETMBR R0 K7 R1
- 0x50040000, // 0038 LDBOOL R1 0 0
- 0x90022A01, // 0039 SETMBR R0 K21 R1
- 0x8C040116, // 003A GETMET R1 R0 K22
- 0x7C040200, // 003B CALL R1 1
- 0x50040000, // 003C LDBOOL R1 0 0
- 0x80040200, // 003D RET 1 R1
- 0x80000000, // 003E RET 0
+ 0x70020011, // 002A JMP #003D
+ 0xB8062600, // 002B GETNGBL R1 K19
+ 0x60080018, // 002C GETGBL R2 G24
+ 0x580C0014, // 002D LDCONST R3 K20
+ 0x8810010D, // 002E GETMBR R4 R0 K13
+ 0x8814010E, // 002F GETMBR R5 R0 K14
+ 0x7C080600, // 0030 CALL R2 3
+ 0x580C0015, // 0031 LDCONST R3 K21
+ 0x7C040400, // 0032 CALL R1 2
+ 0x8C040116, // 0033 GETMET R1 R0 K22
+ 0x7C040200, // 0034 CALL R1 1
+ 0x5405FFFE, // 0035 LDINT R1 -1
+ 0x90021401, // 0036 SETMBR R0 K10 R1
+ 0x50040000, // 0037 LDBOOL R1 0 0
+ 0x90020001, // 0038 SETMBR R0 K0 R1
+ 0x8C040117, // 0039 GETMET R1 R0 K23
+ 0x7C040200, // 003A CALL R1 1
+ 0x50040000, // 003B LDBOOL R1 0 0
+ 0x80040200, // 003C RET 1 R1
+ 0x80000000, // 003D RET 0
})
)
);
@@ -156,29 +170,24 @@ be_local_closure(class_Matter_TCP_async_begin, /* name */
/********************************************************************
** Solidified function: readbytes
********************************************************************/
-extern const bclass be_class_Matter_TCP_async;
be_local_closure(class_Matter_TCP_async_readbytes, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TCP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(tcp_connected),
- /* K1 */ be_nested_str_weak(tcp),
- /* K2 */ be_nested_str_weak(readbytes),
- }),
+ &be_ktab_class_Matter_TCP_async, /* shared constants */
be_str_weak(readbytes),
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
0x78060003, // 0001 JMPF R1 #0006
0x88040101, // 0002 GETMBR R1 R0 K1
- 0x8C040302, // 0003 GETMET R1 R1 K2
+ 0x8C040318, // 0003 GETMET R1 R1 K24
0x7C040200, // 0004 CALL R1 1
0x80040200, // 0005 RET 1 R1
0x4C040000, // 0006 LDNIL R1
@@ -192,18 +201,17 @@ be_local_closure(class_Matter_TCP_async_readbytes, /* name */
/********************************************************************
** Solidified function: event_closed
********************************************************************/
-extern const bclass be_class_Matter_TCP_async;
be_local_closure(class_Matter_TCP_async_event_closed, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TCP_async,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_TCP_async, /* shared constants */
be_str_weak(event_closed),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -217,33 +225,27 @@ be_local_closure(class_Matter_TCP_async_event_closed, /* name */
/********************************************************************
** Solidified function: available
********************************************************************/
-extern const bclass be_class_Matter_TCP_async;
be_local_closure(class_Matter_TCP_async_available, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TCP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(tcp_connected),
- /* K1 */ be_nested_str_weak(tcp),
- /* K2 */ be_nested_str_weak(available),
- /* K3 */ be_const_int(0),
- }),
+ &be_ktab_class_Matter_TCP_async, /* shared constants */
be_str_weak(available),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
0x78060003, // 0001 JMPF R1 #0006
0x88040101, // 0002 GETMBR R1 R0 K1
- 0x8C040302, // 0003 GETMET R1 R1 K2
+ 0x8C040319, // 0003 GETMET R1 R1 K25
0x7C040200, // 0004 CALL R1 1
0x80040200, // 0005 RET 1 R1
- 0x80060600, // 0006 RET 1 K3
+ 0x80061600, // 0006 RET 1 K11
})
)
);
@@ -253,18 +255,17 @@ be_local_closure(class_Matter_TCP_async_available, /* name */
/********************************************************************
** Solidified function: event_listening
********************************************************************/
-extern const bclass be_class_Matter_TCP_async;
be_local_closure(class_Matter_TCP_async_event_listening, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TCP_async,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_TCP_async, /* shared constants */
be_str_weak(event_listening),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -278,24 +279,21 @@ be_local_closure(class_Matter_TCP_async_event_listening, /* name */
/********************************************************************
** Solidified function: get_timeout
********************************************************************/
-extern const bclass be_class_Matter_TCP_async;
be_local_closure(class_Matter_TCP_async_get_timeout, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TCP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(timeout),
- }),
+ &be_ktab_class_Matter_TCP_async, /* shared constants */
be_str_weak(get_timeout),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804011A, // 0000 GETMBR R1 R0 K26
0x80040200, // 0001 RET 1 R1
})
)
@@ -306,16 +304,15 @@ be_local_closure(class_Matter_TCP_async_get_timeout, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_TCP_async;
be_local_closure(class_Matter_TCP_async_init, /* name */
be_nested_proto(
7, /* nstack */
5, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
2, /* nstack */
0, /* argc */
@@ -325,7 +322,7 @@ be_local_closure(class_Matter_TCP_async_init, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(loop),
@@ -339,25 +336,16 @@ be_local_closure(class_Matter_TCP_async_init, /* name */
0x80040000, // 0003 RET 1 R0
})
),
- &be_class_Matter_TCP_async,
}),
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(TIMEOUT),
- /* K1 */ be_nested_str_weak(addr),
- /* K2 */ be_nested_str_weak(port),
- /* K3 */ be_nested_str_weak(timeout),
- /* K4 */ be_nested_str_weak(tcp),
- /* K5 */ be_nested_str_weak(tcpclientasync),
- /* K6 */ be_nested_str_weak(fast_loop),
- }),
+ &be_ktab_class_Matter_TCP_async, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[25]) { /* code */
0x4C140000, // 0000 LDNIL R5
0x1C140605, // 0001 EQ R5 R3 R5
0x78160000, // 0002 JMPF R5 #0004
- 0x880C0100, // 0003 GETMBR R3 R0 K0
+ 0x880C011B, // 0003 GETMBR R3 R0 K27
0x4C140000, // 0004 LDNIL R5
0x1C140405, // 0005 EQ R5 R2 R5
0x78160000, // 0006 JMPF R5 #0008
@@ -365,18 +353,18 @@ be_local_closure(class_Matter_TCP_async_init, /* name */
0x60140008, // 0008 GETGBL R5 G8
0x5C180200, // 0009 MOVE R6 R1
0x7C140200, // 000A CALL R5 1
- 0x90020205, // 000B SETMBR R0 K1 R5
+ 0x90021A05, // 000B SETMBR R0 K13 R5
0x60140009, // 000C GETGBL R5 G9
0x5C180400, // 000D MOVE R6 R2
0x7C140200, // 000E CALL R5 1
- 0x90020405, // 000F SETMBR R0 K2 R5
- 0x90020603, // 0010 SETMBR R0 K3 R3
- 0xB8160A00, // 0011 GETNGBL R5 K5
+ 0x90021C05, // 000F SETMBR R0 K14 R5
+ 0x90023403, // 0010 SETMBR R0 K26 R3
+ 0xB8163800, // 0011 GETNGBL R5 K28
0x7C140000, // 0012 CALL R5 0
- 0x90020805, // 0013 SETMBR R0 K4 R5
+ 0x90020205, // 0013 SETMBR R0 K1 R5
0x78120001, // 0014 JMPF R4 #0017
0x84140000, // 0015 CLOSURE R5 P0
- 0x90020C05, // 0016 SETMBR R0 K6 R5
+ 0x90021E05, // 0016 SETMBR R0 K15 R5
0xA0000000, // 0017 CLOSE R0
0x80000000, // 0018 RET 0
})
@@ -388,24 +376,21 @@ be_local_closure(class_Matter_TCP_async_init, /* name */
/********************************************************************
** Solidified function: every_50ms
********************************************************************/
-extern const bclass be_class_Matter_TCP_async;
be_local_closure(class_Matter_TCP_async_every_50ms, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TCP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(loop),
- }),
+ &be_ktab_class_Matter_TCP_async, /* shared constants */
be_str_weak(every_50ms),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C04011D, // 0000 GETMET R1 R0 K29
0x7C040200, // 0001 CALL R1 1
0x80000000, // 0002 RET 0
})
@@ -417,18 +402,17 @@ be_local_closure(class_Matter_TCP_async_every_50ms, /* name */
/********************************************************************
** Solidified function: event_timeout
********************************************************************/
-extern const bclass be_class_Matter_TCP_async;
be_local_closure(class_Matter_TCP_async_event_timeout, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TCP_async,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_TCP_async, /* shared constants */
be_str_weak(event_timeout),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -442,18 +426,17 @@ be_local_closure(class_Matter_TCP_async_event_timeout, /* name */
/********************************************************************
** Solidified function: event_available
********************************************************************/
-extern const bclass be_class_Matter_TCP_async;
be_local_closure(class_Matter_TCP_async_event_available, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TCP_async,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_TCP_async, /* shared constants */
be_str_weak(event_available),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -467,34 +450,28 @@ be_local_closure(class_Matter_TCP_async_event_available, /* name */
/********************************************************************
** Solidified function: write
********************************************************************/
-extern const bclass be_class_Matter_TCP_async;
be_local_closure(class_Matter_TCP_async_write, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TCP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(tcp_connected),
- /* K1 */ be_nested_str_weak(tcp),
- /* K2 */ be_nested_str_weak(write),
- /* K3 */ be_const_int(0),
- }),
+ &be_ktab_class_Matter_TCP_async, /* shared constants */
be_str_weak(write),
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x780A0004, // 0001 JMPF R2 #0007
0x88080101, // 0002 GETMBR R2 R0 K1
- 0x8C080502, // 0003 GETMET R2 R2 K2
+ 0x8C08051E, // 0003 GETMET R2 R2 K30
0x5C100200, // 0004 MOVE R4 R1
0x7C080400, // 0005 CALL R2 2
0x80040400, // 0006 RET 1 R2
- 0x80060600, // 0007 RET 1 K3
+ 0x80061600, // 0007 RET 1 K11
})
)
);
@@ -504,18 +481,17 @@ be_local_closure(class_Matter_TCP_async_write, /* name */
/********************************************************************
** Solidified function: event_established
********************************************************************/
-extern const bclass be_class_Matter_TCP_async;
be_local_closure(class_Matter_TCP_async_event_established, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TCP_async,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_TCP_async, /* shared constants */
be_str_weak(event_established),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -529,30 +505,25 @@ be_local_closure(class_Matter_TCP_async_event_established, /* name */
/********************************************************************
** Solidified function: reset
********************************************************************/
-extern const bclass be_class_Matter_TCP_async;
be_local_closure(class_Matter_TCP_async_reset, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TCP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(tcp),
- /* K1 */ be_nested_str_weak(close),
- /* K2 */ be_nested_str_weak(tcp_connected),
- }),
+ &be_ktab_class_Matter_TCP_async, /* shared constants */
be_str_weak(reset),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x88040101, // 0000 GETMBR R1 R0 K1
+ 0x8C040316, // 0001 GETMET R1 R1 K22
0x7C040200, // 0002 CALL R1 1
0x4C040000, // 0003 LDNIL R1
- 0x90020401, // 0004 SETMBR R0 K2 R1
+ 0x90020001, // 0004 SETMBR R0 K0 R1
0x80000000, // 0005 RET 0
})
)
@@ -563,50 +534,30 @@ be_local_closure(class_Matter_TCP_async_reset, /* name */
/********************************************************************
** Solidified function: loop
********************************************************************/
-extern const bclass be_class_Matter_TCP_async;
be_local_closure(class_Matter_TCP_async_loop, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TCP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
- /* K0 */ be_nested_str_weak(tcp_connected),
- /* K1 */ be_nested_str_weak(status),
- /* K2 */ be_nested_str_weak(close),
- /* K3 */ be_nested_str_weak(tcp),
- /* K4 */ be_nested_str_weak(connected),
- /* K5 */ be_const_int(1),
- /* K6 */ be_nested_str_weak(event_established),
- /* K7 */ be_nested_str_weak(event_refused),
- /* K8 */ be_nested_str_weak(tasmota),
- /* K9 */ be_nested_str_weak(millis),
- /* K10 */ be_nested_str_weak(time_start),
- /* K11 */ be_nested_str_weak(timeout),
- /* K12 */ be_nested_str_weak(event_timeout),
- /* K13 */ be_nested_str_weak(event_closed),
- /* K14 */ be_nested_str_weak(available),
- /* K15 */ be_nested_str_weak(event_available),
- /* K16 */ be_nested_str_weak(listening),
- /* K17 */ be_nested_str_weak(event_listening),
- }),
+ &be_ktab_class_Matter_TCP_async, /* shared constants */
be_str_weak(loop),
&be_const_str_solidified,
( &(const binstruction[89]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x8808010A, // 0001 GETMBR R2 R0 K10
0x4C0C0000, // 0002 LDNIL R3
0x1C080403, // 0003 EQ R2 R2 R3
0x780A0002, // 0004 JMPF R2 #0008
- 0x8C080102, // 0005 GETMET R2 R0 K2
+ 0x8C080116, // 0005 GETMET R2 R0 K22
0x7C080200, // 0006 CALL R2 1
0x80000400, // 0007 RET 0
- 0x88080103, // 0008 GETMBR R2 R0 K3
- 0x8C080504, // 0009 GETMET R2 R2 K4
+ 0x88080101, // 0008 GETMBR R2 R0 K1
+ 0x8C08051F, // 0009 GETMET R2 R2 K31
0x7C080200, // 000A CALL R2 1
0x90020002, // 000B SETMBR R0 K0 R2
0x4C080000, // 000C LDNIL R2
@@ -616,8 +567,8 @@ be_local_closure(class_Matter_TCP_async_loop, /* name */
0x500C0200, // 0010 LDBOOL R3 1 0
0x1C080403, // 0011 EQ R2 R2 R3
0x780A0003, // 0012 JMPF R2 #0017
- 0x90020305, // 0013 SETMBR R0 K1 K5
- 0x8C080106, // 0014 GETMET R2 R0 K6
+ 0x90021520, // 0013 SETMBR R0 K10 K32
+ 0x8C080121, // 0014 GETMET R2 R0 K33
0x7C080200, // 0015 CALL R2 1
0x70020019, // 0016 JMP #0031
0x88080100, // 0017 GETMBR R2 R0 K0
@@ -625,40 +576,40 @@ be_local_closure(class_Matter_TCP_async_loop, /* name */
0x1C080403, // 0019 EQ R2 R2 R3
0x780A0007, // 001A JMPF R2 #0023
0x5409FFFD, // 001B LDINT R2 -2
- 0x90020202, // 001C SETMBR R0 K1 R2
- 0x8C080107, // 001D GETMET R2 R0 K7
+ 0x90021402, // 001C SETMBR R0 K10 R2
+ 0x8C080122, // 001D GETMET R2 R0 K34
0x7C080200, // 001E CALL R2 1
- 0x8C080102, // 001F GETMET R2 R0 K2
+ 0x8C080116, // 001F GETMET R2 R0 K22
0x7C080200, // 0020 CALL R2 1
0x80000400, // 0021 RET 0
0x7002000D, // 0022 JMP #0031
- 0xB80A1000, // 0023 GETNGBL R2 K8
+ 0xB80A0800, // 0023 GETNGBL R2 K4
0x8C080509, // 0024 GETMET R2 R2 K9
0x7C080200, // 0025 CALL R2 1
- 0x880C010A, // 0026 GETMBR R3 R0 K10
+ 0x880C0108, // 0026 GETMBR R3 R0 K8
0x04080403, // 0027 SUB R2 R2 R3
- 0x880C010B, // 0028 GETMBR R3 R0 K11
+ 0x880C011A, // 0028 GETMBR R3 R0 K26
0x24080403, // 0029 GT R2 R2 R3
0x780A0005, // 002A JMPF R2 #0031
0x5409FFFC, // 002B LDINT R2 -3
- 0x90020202, // 002C SETMBR R0 K1 R2
+ 0x90021402, // 002C SETMBR R0 K10 R2
0x50080000, // 002D LDBOOL R2 0 0
0x90020002, // 002E SETMBR R0 K0 R2
- 0x8C08010C, // 002F GETMET R2 R0 K12
+ 0x8C080123, // 002F GETMET R2 R0 K35
0x7C080200, // 0030 CALL R2 1
- 0xB80A1000, // 0031 GETNGBL R2 K8
+ 0xB80A0800, // 0031 GETNGBL R2 K4
0x8C080509, // 0032 GETMET R2 R2 K9
0x7C080200, // 0033 CALL R2 1
- 0x880C010A, // 0034 GETMBR R3 R0 K10
+ 0x880C0108, // 0034 GETMBR R3 R0 K8
0x04080403, // 0035 SUB R2 R2 R3
- 0x880C010B, // 0036 GETMBR R3 R0 K11
+ 0x880C011A, // 0036 GETMBR R3 R0 K26
0x24080403, // 0037 GT R2 R2 R3
0x780A0006, // 0038 JMPF R2 #0040
- 0x8C080102, // 0039 GETMET R2 R0 K2
+ 0x8C080116, // 0039 GETMET R2 R0 K22
0x7C080200, // 003A CALL R2 1
0x5409FFFC, // 003B LDINT R2 -3
- 0x90020202, // 003C SETMBR R0 K1 R2
- 0x8C08010C, // 003D GETMET R2 R0 K12
+ 0x90021402, // 003C SETMBR R0 K10 R2
+ 0x8C080123, // 003D GETMET R2 R0 K35
0x7C080200, // 003E CALL R2 1
0x80000400, // 003F RET 0
0x88080100, // 0040 GETMBR R2 R0 K0
@@ -668,22 +619,22 @@ be_local_closure(class_Matter_TCP_async_loop, /* name */
0x50080200, // 0044 LDBOOL R2 1 0
0x1C080202, // 0045 EQ R2 R1 R2
0x780A0001, // 0046 JMPF R2 #0049
- 0x8C08010D, // 0047 GETMET R2 R0 K13
+ 0x8C080124, // 0047 GETMET R2 R0 K36
0x7C080200, // 0048 CALL R2 1
- 0x8C080102, // 0049 GETMET R2 R0 K2
+ 0x8C080116, // 0049 GETMET R2 R0 K22
0x7C080200, // 004A CALL R2 1
0x80000400, // 004B RET 0
- 0x88080103, // 004C GETMBR R2 R0 K3
- 0x8C08050E, // 004D GETMET R2 R2 K14
+ 0x88080101, // 004C GETMBR R2 R0 K1
+ 0x8C080519, // 004D GETMET R2 R2 K25
0x7C080200, // 004E CALL R2 1
0x780A0001, // 004F JMPF R2 #0052
- 0x8C08010F, // 0050 GETMET R2 R0 K15
+ 0x8C080125, // 0050 GETMET R2 R0 K37
0x7C080200, // 0051 CALL R2 1
- 0x88080103, // 0052 GETMBR R2 R0 K3
- 0x8C080510, // 0053 GETMET R2 R2 K16
+ 0x88080101, // 0052 GETMBR R2 R0 K1
+ 0x8C080526, // 0053 GETMET R2 R2 K38
0x7C080200, // 0054 CALL R2 1
0x780A0001, // 0055 JMPF R2 #0058
- 0x8C080111, // 0056 GETMET R2 R0 K17
+ 0x8C080127, // 0056 GETMET R2 R0 K39
0x7C080200, // 0057 CALL R2 1
0x80000000, // 0058 RET 0
})
@@ -695,29 +646,24 @@ be_local_closure(class_Matter_TCP_async_loop, /* name */
/********************************************************************
** Solidified function: listening
********************************************************************/
-extern const bclass be_class_Matter_TCP_async;
be_local_closure(class_Matter_TCP_async_listening, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TCP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(tcp_connected),
- /* K1 */ be_nested_str_weak(tcp),
- /* K2 */ be_nested_str_weak(listening),
- }),
+ &be_ktab_class_Matter_TCP_async, /* shared constants */
be_str_weak(listening),
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
0x78060003, // 0001 JMPF R1 #0006
0x88040101, // 0002 GETMBR R1 R0 K1
- 0x8C040302, // 0003 GETMET R1 R1 K2
+ 0x8C040326, // 0003 GETMET R1 R1 K38
0x7C040200, // 0004 CALL R1 1
0x80040200, // 0005 RET 1 R1
0x50040000, // 0006 LDBOOL R1 0 0
@@ -731,29 +677,25 @@ be_local_closure(class_Matter_TCP_async_listening, /* name */
/********************************************************************
** Solidified function: set_timeout
********************************************************************/
-extern const bclass be_class_Matter_TCP_async;
be_local_closure(class_Matter_TCP_async_set_timeout, /* name */
be_nested_proto(
3, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TCP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(TIMEOUT),
- /* K1 */ be_nested_str_weak(timeout),
- }),
+ &be_ktab_class_Matter_TCP_async, /* shared constants */
be_str_weak(set_timeout),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
0x4C080000, // 0000 LDNIL R2
0x1C080202, // 0001 EQ R2 R1 R2
0x780A0000, // 0002 JMPF R2 #0004
- 0x88040100, // 0003 GETMBR R1 R0 K0
- 0x90020201, // 0004 SETMBR R0 K1 R1
+ 0x8804011B, // 0003 GETMBR R1 R0 K27
+ 0x90023401, // 0004 SETMBR R0 K26 R1
0x80000000, // 0005 RET 0
})
)
@@ -764,18 +706,17 @@ be_local_closure(class_Matter_TCP_async_set_timeout, /* name */
/********************************************************************
** Solidified function: event_dnsfailed
********************************************************************/
-extern const bclass be_class_Matter_TCP_async;
be_local_closure(class_Matter_TCP_async_event_dnsfailed, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TCP_async,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_TCP_async, /* shared constants */
be_str_weak(event_dnsfailed),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -789,52 +730,42 @@ be_local_closure(class_Matter_TCP_async_event_dnsfailed, /* name */
/********************************************************************
** Solidified function: close
********************************************************************/
-extern const bclass be_class_Matter_TCP_async;
be_local_closure(class_Matter_TCP_async_close, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TCP_async,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(tcp),
- /* K1 */ be_nested_str_weak(close),
- /* K2 */ be_nested_str_weak(fast_loop),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(remove_fast_loop),
- /* K5 */ be_nested_str_weak(remove_driver),
- /* K6 */ be_nested_str_weak(tcp_connected),
- /* K7 */ be_nested_str_weak(event_closed),
- }),
+ &be_ktab_class_Matter_TCP_async, /* shared constants */
be_str_weak(close),
&be_const_str_solidified,
( &(const binstruction[23]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x88040101, // 0000 GETMBR R1 R0 K1
+ 0x8C040316, // 0001 GETMET R1 R1 K22
0x7C040200, // 0002 CALL R1 1
- 0x88040102, // 0003 GETMBR R1 R0 K2
+ 0x8804010F, // 0003 GETMBR R1 R0 K15
0x78060004, // 0004 JMPF R1 #000A
- 0xB8060600, // 0005 GETNGBL R1 K3
- 0x8C040304, // 0006 GETMET R1 R1 K4
- 0x880C0102, // 0007 GETMBR R3 R0 K2
+ 0xB8060800, // 0005 GETNGBL R1 K4
+ 0x8C040310, // 0006 GETMET R1 R1 K16
+ 0x880C010F, // 0007 GETMBR R3 R0 K15
0x7C040400, // 0008 CALL R1 2
0x70020003, // 0009 JMP #000E
- 0xB8060600, // 000A GETNGBL R1 K3
- 0x8C040305, // 000B GETMET R1 R1 K5
+ 0xB8060800, // 000A GETNGBL R1 K4
+ 0x8C040328, // 000B GETMET R1 R1 K40
0x5C0C0000, // 000C MOVE R3 R0
0x7C040400, // 000D CALL R1 2
- 0x88040106, // 000E GETMBR R1 R0 K6
+ 0x88040100, // 000E GETMBR R1 R0 K0
0x50080200, // 000F LDBOOL R2 1 0
0x1C040202, // 0010 EQ R1 R1 R2
0x78060001, // 0011 JMPF R1 #0014
- 0x8C040107, // 0012 GETMET R1 R0 K7
+ 0x8C040124, // 0012 GETMET R1 R0 K36
0x7C040200, // 0013 CALL R1 1
0x50040000, // 0014 LDBOOL R1 0 0
- 0x90020C01, // 0015 SETMBR R0 K6 R1
+ 0x90020001, // 0015 SETMBR R0 K0 R1
0x80000000, // 0016 RET 0
})
)
@@ -845,18 +776,17 @@ be_local_closure(class_Matter_TCP_async_close, /* name */
/********************************************************************
** Solidified function: event_refused
********************************************************************/
-extern const bclass be_class_Matter_TCP_async;
be_local_closure(class_Matter_TCP_async_event_refused, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TCP_async,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_TCP_async, /* shared constants */
be_str_weak(event_refused),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h
index 7df38a55c..e900426ba 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h
@@ -3,681 +3,117 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+extern const bclass be_class_Matter_TLV_item;
+// compact class 'Matter_TLV_item' ktab size: 89, total: 205 (saved 928 bytes)
+static const bvalue be_ktab_class_Matter_TLV_item[89] = {
+ /* K0 */ be_nested_str_weak(parent),
+ /* K1 */ be_nested_str_weak(next_idx),
+ /* K2 */ be_nested_str_weak(tag_vendor),
+ /* K3 */ be_nested_str_weak(tag_profile),
+ /* K4 */ be_nested_str_weak(tag_number),
+ /* K5 */ be_nested_str_weak(tag_sub),
+ /* K6 */ be_nested_str_weak(typ),
+ /* K7 */ be_nested_str_weak(val),
+ /* K8 */ be_nested_str_weak(reset),
+ /* K9 */ be_nested_str_weak(TLV),
+ /* K10 */ be_const_int(0),
+ /* K11 */ be_nested_str_weak(RAW),
+ /* K12 */ be_nested_str_weak(BFALSE),
+ /* K13 */ be_nested_str_weak(BTRUE),
+ /* K14 */ be_nested_str_weak(I2),
+ /* K15 */ be_nested_str_weak(I4),
+ /* K16 */ be_nested_str_weak(I1),
+ /* K17 */ be_nested_str_weak(U2),
+ /* K18 */ be_nested_str_weak(U4),
+ /* K19 */ be_nested_str_weak(U1),
+ /* K20 */ be_nested_str_weak(B1),
+ /* K21 */ be_nested_str_weak(B8),
+ /* K22 */ be_nested_str_weak(B2),
+ /* K23 */ be_nested_str_weak(B4),
+ /* K24 */ be_nested_str_weak(UTF1),
+ /* K25 */ be_nested_str_weak(UTF8),
+ /* K26 */ be_nested_str_weak(UTF2),
+ /* K27 */ be_nested_str_weak(UTF4),
+ /* K28 */ be_nested_str_weak(_encode_tag_len),
+ /* K29 */ be_const_int(1),
+ /* K30 */ be_const_int(2),
+ /* K31 */ be_nested_str_weak(I8),
+ /* K32 */ be_nested_str_weak(U8),
+ /* K33 */ be_nested_str_weak(FLOAT),
+ /* K34 */ be_nested_str_weak(DOUBLE),
+ /* K35 */ be_nested_str_weak(value_error),
+ /* K36 */ be_nested_str_weak(Unsupported_X20type_X20TLV_X2EDOUBLE),
+ /* K37 */ be_nested_str_weak(NULL),
+ /* K38 */ be_nested_str_weak(unsupported_X20type_X20),
+ /* K39 */ be_nested_str_weak(),
+ /* K40 */ be_nested_str_weak(Matter_X3A_X3A),
+ /* K41 */ be_nested_str_weak(0x_X2508X_X20),
+ /* K42 */ be_nested_str_weak(0x_X2504X_X3A_X3A),
+ /* K43 */ be_nested_str_weak(0x_X2504X_X3A),
+ /* K44 */ be_nested_str_weak(_X25i_X20),
+ /* K45 */ be_nested_str_weak(_X3D_X20),
+ /* K46 */ be_nested_str_weak(int),
+ /* K47 */ be_nested_str_weak(_X25i),
+ /* K48 */ be_nested_str_weak(U),
+ /* K49 */ be_nested_str_weak(bool),
+ /* K50 */ be_nested_str_weak(true),
+ /* K51 */ be_nested_str_weak(false),
+ /* K52 */ be_nested_str_weak(null),
+ /* K53 */ be_nested_str_weak(real),
+ /* K54 */ be_nested_str_weak(_X25g),
+ /* K55 */ be_nested_str_weak(string),
+ /* K56 */ be_nested_str_weak(_X22_X25s_X22),
+ /* K57 */ be_nested_str_weak(int64),
+ /* K58 */ be_nested_str_weak(tostring),
+ /* K59 */ be_nested_str_weak(instance),
+ /* K60 */ be_nested_str_weak(_X25s),
+ /* K61 */ be_nested_str_weak(tohex),
+ /* K62 */ be_nested_str_weak(_X20),
+ /* K63 */ be_nested_str_weak(_len),
+ /* K64 */ be_nested_str_weak(frombytes),
+ /* K65 */ be_nested_str_weak(geti),
+ /* K66 */ be_nested_str_weak(get),
+ /* K67 */ be_nested_str_weak(getfloat),
+ /* K68 */ be_nested_str_weak(asstring),
+ /* K69 */ be_nested_str_weak(EOC),
+ /* K70 */ be_nested_str_weak(log),
+ /* K71 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20eoc),
+ /* K72 */ be_const_int(3),
+ /* K73 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20type_X3A_X20),
+ /* K74 */ be_nested_str_weak(set_fulltag),
+ /* K75 */ be_nested_str_weak(add),
+ /* K76 */ be_const_class(be_class_Matter_TLV_item),
+ /* K77 */ be_nested_str_weak(_cmp_gt),
+ /* K78 */ be_nested_str_weak(stop_iteration),
+ /* K79 */ be_nested_str_weak(_encode_tag),
+ /* K80 */ be_nested_str_weak(copy),
+ /* K81 */ be_nested_str_weak(resize),
+ /* K82 */ be_nested_str_weak(tobytes),
+ /* K83 */ be_nested_str_weak(fromu32),
+ /* K84 */ be_nested_str_weak(setfloat),
+ /* K85 */ be_nested_str_weak(string_X20too_X20big),
+ /* K86 */ be_nested_str_weak(fromstring),
+ /* K87 */ be_nested_str_weak(frostring),
+ /* K88 */ be_nested_str_weak(bytes_X20too_X20big),
+};
+
extern const bclass be_class_Matter_TLV_item;
-/********************************************************************
-** Solidified function: to_TLV
-********************************************************************/
-extern const bclass be_class_Matter_TLV_item;
-be_local_closure(class_Matter_TLV_item_to_TLV, /* name */
- be_nested_proto(
- 1, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_TLV_item,
- 0, /* has constants */
- NULL, /* no const */
- be_str_weak(to_TLV),
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80040000, // 0000 RET 1 R0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_parent
-********************************************************************/
-extern const bclass be_class_Matter_TLV_item;
-be_local_closure(class_Matter_TLV_item_set_parent, /* name */
- be_nested_proto(
- 2, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_TLV_item,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(parent),
- }),
- be_str_weak(set_parent),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x80000000, // 0001 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_fulltag
-********************************************************************/
-extern const bclass be_class_Matter_TLV_item;
-be_local_closure(class_Matter_TLV_item_set_fulltag, /* name */
- be_nested_proto(
- 6, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_TLV_item,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(tag_vendor),
- /* K1 */ be_nested_str_weak(tag_profile),
- /* K2 */ be_nested_str_weak(tag_number),
- /* K3 */ be_nested_str_weak(tag_sub),
- }),
- be_str_weak(set_fulltag),
- &be_const_str_solidified,
- ( &(const binstruction[15]) { /* code */
- 0x60100009, // 0000 GETGBL R4 G9
- 0x5C140200, // 0001 MOVE R5 R1
- 0x7C100200, // 0002 CALL R4 1
- 0x90020004, // 0003 SETMBR R0 K0 R4
- 0x60100009, // 0004 GETGBL R4 G9
- 0x5C140400, // 0005 MOVE R5 R2
- 0x7C100200, // 0006 CALL R4 1
- 0x90020204, // 0007 SETMBR R0 K1 R4
- 0x60100009, // 0008 GETGBL R4 G9
- 0x5C140600, // 0009 MOVE R5 R3
- 0x7C100200, // 000A CALL R4 1
- 0x90020404, // 000B SETMBR R0 K2 R4
- 0x4C100000, // 000C LDNIL R4
- 0x90020604, // 000D SETMBR R0 K3 R4
- 0x80000000, // 000E RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_contextspecific
-********************************************************************/
-extern const bclass be_class_Matter_TLV_item;
-be_local_closure(class_Matter_TLV_item_set_contextspecific, /* name */
- be_nested_proto(
- 4, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_TLV_item,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(set_fulltag),
- /* K1 */ be_nested_str_weak(tag_sub),
- }),
- be_str_weak(set_contextspecific),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
- 0x7C080200, // 0001 CALL R2 1
- 0x60080009, // 0002 GETGBL R2 G9
- 0x5C0C0200, // 0003 MOVE R3 R1
- 0x7C080200, // 0004 CALL R2 1
- 0x90020202, // 0005 SETMBR R0 K1 R2
- 0x80000000, // 0006 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: sort
-********************************************************************/
-extern const bclass be_class_Matter_TLV_item;
-be_local_closure(class_Matter_TLV_item_sort, /* name */
- be_nested_proto(
- 9, /* nstack */
- 1, /* argc */
- 4, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_TLV_item,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_TLV_item),
- /* K1 */ be_const_int(1),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(_cmp_gt),
- /* K4 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(sort),
- &be_const_str_solidified,
- ( &(const binstruction[33]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0x60080010, // 0001 GETGBL R2 G16
- 0x600C000C, // 0002 GETGBL R3 G12
- 0x5C100000, // 0003 MOVE R4 R0
- 0x7C0C0200, // 0004 CALL R3 1
- 0x040C0701, // 0005 SUB R3 R3 K1
- 0x400E0203, // 0006 CONNECT R3 K1 R3
- 0x7C080200, // 0007 CALL R2 1
- 0xA8020013, // 0008 EXBLK 0 #001D
- 0x5C0C0400, // 0009 MOVE R3 R2
- 0x7C0C0000, // 000A CALL R3 0
- 0x94100003, // 000B GETIDX R4 R0 R3
- 0x5C140600, // 000C MOVE R5 R3
- 0x24180B02, // 000D GT R6 R5 K2
- 0x781A000B, // 000E JMPF R6 #001B
- 0x04180B01, // 000F SUB R6 R5 K1
- 0x94180006, // 0010 GETIDX R6 R0 R6
- 0x8C180D03, // 0011 GETMET R6 R6 K3
- 0x5C200800, // 0012 MOVE R8 R4
- 0x7C180400, // 0013 CALL R6 2
- 0x24180D02, // 0014 GT R6 R6 K2
- 0x781A0004, // 0015 JMPF R6 #001B
- 0x04180B01, // 0016 SUB R6 R5 K1
- 0x94180006, // 0017 GETIDX R6 R0 R6
- 0x98000A06, // 0018 SETIDX R0 R5 R6
- 0x04140B01, // 0019 SUB R5 R5 K1
- 0x7001FFF1, // 001A JMP #000D
- 0x98000A04, // 001B SETIDX R0 R5 R4
- 0x7001FFEB, // 001C JMP #0009
- 0x58080004, // 001D LDCONST R2 K4
- 0xAC080200, // 001E CATCH R2 1 0
- 0xB0080000, // 001F RAISE 2 R0 R0
- 0x80040000, // 0020 RET 1 R0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: to_str_val
-********************************************************************/
-extern const bclass be_class_Matter_TLV_item;
-be_local_closure(class_Matter_TLV_item_to_str_val, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_TLV_item,
- 1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
- /* K0 */ be_nested_str_weak(val),
- /* K1 */ be_nested_str_weak(int),
- /* K2 */ be_nested_str_weak(typ),
- /* K3 */ be_nested_str_weak(TLV),
- /* K4 */ be_nested_str_weak(U1),
- /* K5 */ be_nested_str_weak(U8),
- /* K6 */ be_nested_str_weak(U),
- /* K7 */ be_nested_str_weak(bool),
- /* K8 */ be_nested_str_weak(true),
- /* K9 */ be_nested_str_weak(false),
- /* K10 */ be_nested_str_weak(null),
- /* K11 */ be_nested_str_weak(real),
- /* K12 */ be_nested_str_weak(string),
- /* K13 */ be_nested_str_weak(int64),
- /* K14 */ be_nested_str_weak(tostring),
- /* K15 */ be_nested_str_weak(instance),
- }),
- be_str_weak(to_str_val),
- &be_const_str_solidified,
- ( &(const binstruction[98]) { /* code */
- 0x60040004, // 0000 GETGBL R1 G4
- 0x88080100, // 0001 GETMBR R2 R0 K0
- 0x7C040200, // 0002 CALL R1 1
- 0x1C040301, // 0003 EQ R1 R1 K1
- 0x78060014, // 0004 JMPF R1 #001A
- 0x88040102, // 0005 GETMBR R1 R0 K2
- 0x88080103, // 0006 GETMBR R2 R0 K3
- 0x88080504, // 0007 GETMBR R2 R2 K4
- 0x28040202, // 0008 GE R1 R1 R2
- 0x7806000A, // 0009 JMPF R1 #0015
- 0x88040102, // 000A GETMBR R1 R0 K2
- 0x88080103, // 000B GETMBR R2 R0 K3
- 0x88080505, // 000C GETMBR R2 R2 K5
- 0x18040202, // 000D LE R1 R1 R2
- 0x78060005, // 000E JMPF R1 #0015
- 0x60040008, // 000F GETGBL R1 G8
- 0x88080100, // 0010 GETMBR R2 R0 K0
- 0x7C040200, // 0011 CALL R1 1
- 0x00040306, // 0012 ADD R1 R1 K6
- 0x80040200, // 0013 RET 1 R1
- 0x70020003, // 0014 JMP #0019
- 0x60040008, // 0015 GETGBL R1 G8
- 0x88080100, // 0016 GETMBR R2 R0 K0
- 0x7C040200, // 0017 CALL R1 1
- 0x80040200, // 0018 RET 1 R1
- 0x70020046, // 0019 JMP #0061
- 0x60040004, // 001A GETGBL R1 G4
- 0x88080100, // 001B GETMBR R2 R0 K0
- 0x7C040200, // 001C CALL R1 1
- 0x1C040307, // 001D EQ R1 R1 K7
- 0x78060006, // 001E JMPF R1 #0026
- 0x88040100, // 001F GETMBR R1 R0 K0
- 0x78060001, // 0020 JMPF R1 #0023
- 0x58040008, // 0021 LDCONST R1 K8
- 0x70020000, // 0022 JMP #0024
- 0x58040009, // 0023 LDCONST R1 K9
- 0x80040200, // 0024 RET 1 R1
- 0x7002003A, // 0025 JMP #0061
- 0x88040100, // 0026 GETMBR R1 R0 K0
- 0x4C080000, // 0027 LDNIL R2
- 0x1C040202, // 0028 EQ R1 R1 R2
- 0x78060001, // 0029 JMPF R1 #002C
- 0x80061400, // 002A RET 1 K10
- 0x70020034, // 002B JMP #0061
- 0x60040004, // 002C GETGBL R1 G4
- 0x88080100, // 002D GETMBR R2 R0 K0
- 0x7C040200, // 002E CALL R1 1
- 0x1C04030B, // 002F EQ R1 R1 K11
- 0x78060004, // 0030 JMPF R1 #0036
- 0x60040008, // 0031 GETGBL R1 G8
- 0x88080100, // 0032 GETMBR R2 R0 K0
- 0x7C040200, // 0033 CALL R1 1
- 0x80040200, // 0034 RET 1 R1
- 0x7002002A, // 0035 JMP #0061
- 0x60040004, // 0036 GETGBL R1 G4
- 0x88080100, // 0037 GETMBR R2 R0 K0
- 0x7C040200, // 0038 CALL R1 1
- 0x1C04030C, // 0039 EQ R1 R1 K12
- 0x78060002, // 003A JMPF R1 #003E
- 0x88040100, // 003B GETMBR R1 R0 K0
- 0x80040200, // 003C RET 1 R1
- 0x70020022, // 003D JMP #0061
- 0x6004000F, // 003E GETGBL R1 G15
- 0x88080100, // 003F GETMBR R2 R0 K0
- 0xB80E1A00, // 0040 GETNGBL R3 K13
- 0x7C040400, // 0041 CALL R1 2
- 0x78060014, // 0042 JMPF R1 #0058
- 0x88040102, // 0043 GETMBR R1 R0 K2
- 0x88080103, // 0044 GETMBR R2 R0 K3
- 0x88080504, // 0045 GETMBR R2 R2 K4
- 0x28040202, // 0046 GE R1 R1 R2
- 0x7806000A, // 0047 JMPF R1 #0053
- 0x88040102, // 0048 GETMBR R1 R0 K2
- 0x88080103, // 0049 GETMBR R2 R0 K3
- 0x88080505, // 004A GETMBR R2 R2 K5
- 0x18040202, // 004B LE R1 R1 R2
- 0x78060005, // 004C JMPF R1 #0053
- 0x88040100, // 004D GETMBR R1 R0 K0
- 0x8C04030E, // 004E GETMET R1 R1 K14
- 0x7C040200, // 004F CALL R1 1
- 0x00040306, // 0050 ADD R1 R1 K6
- 0x80040200, // 0051 RET 1 R1
- 0x70020003, // 0052 JMP #0057
- 0x88040100, // 0053 GETMBR R1 R0 K0
- 0x8C04030E, // 0054 GETMET R1 R1 K14
- 0x7C040200, // 0055 CALL R1 1
- 0x80040200, // 0056 RET 1 R1
- 0x70020008, // 0057 JMP #0061
- 0x60040004, // 0058 GETGBL R1 G4
- 0x88080100, // 0059 GETMBR R2 R0 K0
- 0x7C040200, // 005A CALL R1 1
- 0x1C04030F, // 005B EQ R1 R1 K15
- 0x78060003, // 005C JMPF R1 #0061
- 0x8C04010E, // 005D GETMET R1 R0 K14
- 0x500C0200, // 005E LDBOOL R3 1 0
- 0x7C040400, // 005F CALL R1 2
- 0x80040200, // 0060 RET 1 R1
- 0x80000000, // 0061 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: encode_len
-********************************************************************/
-extern const bclass be_class_Matter_TLV_item;
-be_local_closure(class_Matter_TLV_item_encode_len, /* name */
- be_nested_proto(
- 5, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_TLV_item,
- 1, /* has constants */
- ( &(const bvalue[32]) { /* constants */
- /* K0 */ be_nested_str_weak(TLV),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(typ),
- /* K3 */ be_nested_str_weak(RAW),
- /* K4 */ be_nested_str_weak(val),
- /* K5 */ be_nested_str_weak(BFALSE),
- /* K6 */ be_nested_str_weak(BTRUE),
- /* K7 */ be_nested_str_weak(I2),
- /* K8 */ be_nested_str_weak(I4),
- /* K9 */ be_nested_str_weak(I1),
- /* K10 */ be_nested_str_weak(U2),
- /* K11 */ be_nested_str_weak(U4),
- /* K12 */ be_nested_str_weak(U1),
- /* K13 */ be_nested_str_weak(B1),
- /* K14 */ be_nested_str_weak(B8),
- /* K15 */ be_nested_str_weak(B2),
- /* K16 */ be_nested_str_weak(B4),
- /* K17 */ be_nested_str_weak(UTF1),
- /* K18 */ be_nested_str_weak(UTF8),
- /* K19 */ be_nested_str_weak(UTF2),
- /* K20 */ be_nested_str_weak(UTF4),
- /* K21 */ be_nested_str_weak(_encode_tag_len),
- /* K22 */ be_const_int(1),
- /* K23 */ be_const_int(2),
- /* K24 */ be_nested_str_weak(I8),
- /* K25 */ be_nested_str_weak(U8),
- /* K26 */ be_nested_str_weak(FLOAT),
- /* K27 */ be_nested_str_weak(DOUBLE),
- /* K28 */ be_nested_str_weak(value_error),
- /* K29 */ be_nested_str_weak(Unsupported_X20type_X20TLV_X2EDOUBLE),
- /* K30 */ be_nested_str_weak(NULL),
- /* K31 */ be_nested_str_weak(unsupported_X20type_X20),
- }),
- be_str_weak(encode_len),
- &be_const_str_solidified,
- ( &(const binstruction[258]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x58080001, // 0001 LDCONST R2 K1
- 0x880C0102, // 0002 GETMBR R3 R0 K2
- 0x88100303, // 0003 GETMBR R4 R1 K3
- 0x1C0C0604, // 0004 EQ R3 R3 R4
- 0x780E0003, // 0005 JMPF R3 #000A
- 0x600C000C, // 0006 GETGBL R3 G12
- 0x88100104, // 0007 GETMBR R4 R0 K4
- 0x7C0C0200, // 0008 CALL R3 1
- 0x80040600, // 0009 RET 1 R3
- 0x880C0102, // 000A GETMBR R3 R0 K2
- 0x88100305, // 000B GETMBR R4 R1 K5
- 0x1C0C0604, // 000C EQ R3 R3 R4
- 0x740E0003, // 000D JMPT R3 #0012
- 0x880C0102, // 000E GETMBR R3 R0 K2
- 0x88100306, // 000F GETMBR R4 R1 K6
- 0x1C0C0604, // 0010 EQ R3 R3 R4
- 0x780E0008, // 0011 JMPF R3 #001B
- 0x600C0017, // 0012 GETGBL R3 G23
- 0x88100104, // 0013 GETMBR R4 R0 K4
- 0x7C0C0200, // 0014 CALL R3 1
- 0x780E0001, // 0015 JMPF R3 #0018
- 0x880C0306, // 0016 GETMBR R3 R1 K6
- 0x70020000, // 0017 JMP #0019
- 0x880C0305, // 0018 GETMBR R3 R1 K5
- 0x90020403, // 0019 SETMBR R0 K2 R3
- 0x70020070, // 001A JMP #008C
- 0x880C0102, // 001B GETMBR R3 R0 K2
- 0x88100307, // 001C GETMBR R4 R1 K7
- 0x280C0604, // 001D GE R3 R3 R4
- 0x780E0018, // 001E JMPF R3 #0038
- 0x880C0102, // 001F GETMBR R3 R0 K2
- 0x88100308, // 0020 GETMBR R4 R1 K8
- 0x180C0604, // 0021 LE R3 R3 R4
- 0x780E0014, // 0022 JMPF R3 #0038
- 0x600C0009, // 0023 GETGBL R3 G9
- 0x88100104, // 0024 GETMBR R4 R0 K4
- 0x7C0C0200, // 0025 CALL R3 1
- 0x5412007E, // 0026 LDINT R4 127
- 0x18100604, // 0027 LE R4 R3 R4
- 0x78120005, // 0028 JMPF R4 #002F
- 0x5411FF7F, // 0029 LDINT R4 -128
- 0x28100604, // 002A GE R4 R3 R4
- 0x78120002, // 002B JMPF R4 #002F
- 0x88100309, // 002C GETMBR R4 R1 K9
- 0x90020404, // 002D SETMBR R0 K2 R4
- 0x70020007, // 002E JMP #0037
- 0x54127FFE, // 002F LDINT R4 32767
- 0x18100604, // 0030 LE R4 R3 R4
- 0x78120004, // 0031 JMPF R4 #0037
- 0x54117FFF, // 0032 LDINT R4 -32768
- 0x28100604, // 0033 GE R4 R3 R4
- 0x78120001, // 0034 JMPF R4 #0037
- 0x88100307, // 0035 GETMBR R4 R1 K7
- 0x90020404, // 0036 SETMBR R0 K2 R4
- 0x70020053, // 0037 JMP #008C
- 0x880C0102, // 0038 GETMBR R3 R0 K2
- 0x8810030A, // 0039 GETMBR R4 R1 K10
- 0x280C0604, // 003A GE R3 R3 R4
- 0x780E0016, // 003B JMPF R3 #0053
- 0x880C0102, // 003C GETMBR R3 R0 K2
- 0x8810030B, // 003D GETMBR R4 R1 K11
- 0x180C0604, // 003E LE R3 R3 R4
- 0x780E0012, // 003F JMPF R3 #0053
- 0x600C0009, // 0040 GETGBL R3 G9
- 0x88100104, // 0041 GETMBR R4 R0 K4
- 0x7C0C0200, // 0042 CALL R3 1
- 0x541200FE, // 0043 LDINT R4 255
- 0x18100604, // 0044 LE R4 R3 R4
- 0x78120004, // 0045 JMPF R4 #004B
- 0x28100701, // 0046 GE R4 R3 K1
- 0x78120002, // 0047 JMPF R4 #004B
- 0x8810030C, // 0048 GETMBR R4 R1 K12
- 0x90020404, // 0049 SETMBR R0 K2 R4
- 0x70020006, // 004A JMP #0052
- 0x5412FFFE, // 004B LDINT R4 65535
- 0x18100604, // 004C LE R4 R3 R4
- 0x78120003, // 004D JMPF R4 #0052
- 0x28100701, // 004E GE R4 R3 K1
- 0x78120001, // 004F JMPF R4 #0052
- 0x8810030A, // 0050 GETMBR R4 R1 K10
- 0x90020404, // 0051 SETMBR R0 K2 R4
- 0x70020038, // 0052 JMP #008C
- 0x880C0102, // 0053 GETMBR R3 R0 K2
- 0x8810030D, // 0054 GETMBR R4 R1 K13
- 0x280C0604, // 0055 GE R3 R3 R4
- 0x780E0018, // 0056 JMPF R3 #0070
- 0x880C0102, // 0057 GETMBR R3 R0 K2
- 0x8810030E, // 0058 GETMBR R4 R1 K14
- 0x180C0604, // 0059 LE R3 R3 R4
- 0x780E0014, // 005A JMPF R3 #0070
- 0x600C000C, // 005B GETGBL R3 G12
- 0x88100104, // 005C GETMBR R4 R0 K4
- 0x7C0C0200, // 005D CALL R3 1
- 0x541200FE, // 005E LDINT R4 255
- 0x180C0604, // 005F LE R3 R3 R4
- 0x780E0002, // 0060 JMPF R3 #0064
- 0x880C030D, // 0061 GETMBR R3 R1 K13
- 0x90020403, // 0062 SETMBR R0 K2 R3
- 0x7002000A, // 0063 JMP #006F
- 0x600C000C, // 0064 GETGBL R3 G12
- 0x88100104, // 0065 GETMBR R4 R0 K4
- 0x7C0C0200, // 0066 CALL R3 1
- 0x5412FFFE, // 0067 LDINT R4 65535
- 0x180C0604, // 0068 LE R3 R3 R4
- 0x780E0002, // 0069 JMPF R3 #006D
- 0x880C030F, // 006A GETMBR R3 R1 K15
- 0x90020403, // 006B SETMBR R0 K2 R3
- 0x70020001, // 006C JMP #006F
- 0x880C0310, // 006D GETMBR R3 R1 K16
- 0x90020403, // 006E SETMBR R0 K2 R3
- 0x7002001B, // 006F JMP #008C
- 0x880C0102, // 0070 GETMBR R3 R0 K2
- 0x88100311, // 0071 GETMBR R4 R1 K17
- 0x280C0604, // 0072 GE R3 R3 R4
- 0x780E0017, // 0073 JMPF R3 #008C
- 0x880C0102, // 0074 GETMBR R3 R0 K2
- 0x88100312, // 0075 GETMBR R4 R1 K18
- 0x180C0604, // 0076 LE R3 R3 R4
- 0x780E0013, // 0077 JMPF R3 #008C
- 0x600C000C, // 0078 GETGBL R3 G12
- 0x88100104, // 0079 GETMBR R4 R0 K4
- 0x7C0C0200, // 007A CALL R3 1
- 0x541200FE, // 007B LDINT R4 255
- 0x180C0604, // 007C LE R3 R3 R4
- 0x780E0002, // 007D JMPF R3 #0081
- 0x880C0311, // 007E GETMBR R3 R1 K17
- 0x90020403, // 007F SETMBR R0 K2 R3
- 0x7002000A, // 0080 JMP #008C
- 0x600C000C, // 0081 GETGBL R3 G12
- 0x88100104, // 0082 GETMBR R4 R0 K4
- 0x7C0C0200, // 0083 CALL R3 1
- 0x5412FFFE, // 0084 LDINT R4 65535
- 0x180C0604, // 0085 LE R3 R3 R4
- 0x780E0002, // 0086 JMPF R3 #008A
- 0x880C0313, // 0087 GETMBR R3 R1 K19
- 0x90020403, // 0088 SETMBR R0 K2 R3
- 0x70020001, // 0089 JMP #008C
- 0x880C0314, // 008A GETMBR R3 R1 K20
- 0x90020403, // 008B SETMBR R0 K2 R3
- 0x8C0C0115, // 008C GETMET R3 R0 K21
- 0x7C0C0200, // 008D CALL R3 1
- 0x00080403, // 008E ADD R2 R2 R3
- 0x880C0102, // 008F GETMBR R3 R0 K2
- 0x88100309, // 0090 GETMBR R4 R1 K9
- 0x1C0C0604, // 0091 EQ R3 R3 R4
- 0x740E0003, // 0092 JMPT R3 #0097
- 0x880C0102, // 0093 GETMBR R3 R0 K2
- 0x8810030C, // 0094 GETMBR R4 R1 K12
- 0x1C0C0604, // 0095 EQ R3 R3 R4
- 0x780E0001, // 0096 JMPF R3 #0099
- 0x00080516, // 0097 ADD R2 R2 K22
- 0x70020067, // 0098 JMP #0101
- 0x880C0102, // 0099 GETMBR R3 R0 K2
- 0x88100307, // 009A GETMBR R4 R1 K7
- 0x1C0C0604, // 009B EQ R3 R3 R4
- 0x740E0003, // 009C JMPT R3 #00A1
- 0x880C0102, // 009D GETMBR R3 R0 K2
- 0x8810030A, // 009E GETMBR R4 R1 K10
- 0x1C0C0604, // 009F EQ R3 R3 R4
- 0x780E0001, // 00A0 JMPF R3 #00A3
- 0x00080517, // 00A1 ADD R2 R2 K23
- 0x7002005D, // 00A2 JMP #0101
- 0x880C0102, // 00A3 GETMBR R3 R0 K2
- 0x88100308, // 00A4 GETMBR R4 R1 K8
- 0x1C0C0604, // 00A5 EQ R3 R3 R4
- 0x740E0003, // 00A6 JMPT R3 #00AB
- 0x880C0102, // 00A7 GETMBR R3 R0 K2
- 0x8810030B, // 00A8 GETMBR R4 R1 K11
- 0x1C0C0604, // 00A9 EQ R3 R3 R4
- 0x780E0002, // 00AA JMPF R3 #00AE
- 0x540E0003, // 00AB LDINT R3 4
- 0x00080403, // 00AC ADD R2 R2 R3
- 0x70020052, // 00AD JMP #0101
- 0x880C0102, // 00AE GETMBR R3 R0 K2
- 0x88100318, // 00AF GETMBR R4 R1 K24
- 0x1C0C0604, // 00B0 EQ R3 R3 R4
- 0x740E0003, // 00B1 JMPT R3 #00B6
- 0x880C0102, // 00B2 GETMBR R3 R0 K2
- 0x88100319, // 00B3 GETMBR R4 R1 K25
- 0x1C0C0604, // 00B4 EQ R3 R3 R4
- 0x780E0002, // 00B5 JMPF R3 #00B9
- 0x540E0007, // 00B6 LDINT R3 8
- 0x00080403, // 00B7 ADD R2 R2 R3
- 0x70020047, // 00B8 JMP #0101
- 0x880C0102, // 00B9 GETMBR R3 R0 K2
- 0x88100305, // 00BA GETMBR R4 R1 K5
- 0x1C0C0604, // 00BB EQ R3 R3 R4
- 0x740E0003, // 00BC JMPT R3 #00C1
- 0x880C0102, // 00BD GETMBR R3 R0 K2
- 0x88100306, // 00BE GETMBR R4 R1 K6
- 0x1C0C0604, // 00BF EQ R3 R3 R4
- 0x780E0000, // 00C0 JMPF R3 #00C2
- 0x7002003E, // 00C1 JMP #0101
- 0x880C0102, // 00C2 GETMBR R3 R0 K2
- 0x8810031A, // 00C3 GETMBR R4 R1 K26
- 0x1C0C0604, // 00C4 EQ R3 R3 R4
- 0x780E0002, // 00C5 JMPF R3 #00C9
- 0x540E0003, // 00C6 LDINT R3 4
- 0x00080403, // 00C7 ADD R2 R2 R3
- 0x70020037, // 00C8 JMP #0101
- 0x880C0102, // 00C9 GETMBR R3 R0 K2
- 0x8810031B, // 00CA GETMBR R4 R1 K27
- 0x1C0C0604, // 00CB EQ R3 R3 R4
- 0x780E0001, // 00CC JMPF R3 #00CF
- 0xB006391D, // 00CD RAISE 1 K28 K29
- 0x70020031, // 00CE JMP #0101
- 0x880C0102, // 00CF GETMBR R3 R0 K2
- 0x88100311, // 00D0 GETMBR R4 R1 K17
- 0x1C0C0604, // 00D1 EQ R3 R3 R4
- 0x780E0005, // 00D2 JMPF R3 #00D9
- 0x600C000C, // 00D3 GETGBL R3 G12
- 0x88100104, // 00D4 GETMBR R4 R0 K4
- 0x7C0C0200, // 00D5 CALL R3 1
- 0x000E2C03, // 00D6 ADD R3 K22 R3
- 0x00080403, // 00D7 ADD R2 R2 R3
- 0x70020027, // 00D8 JMP #0101
- 0x880C0102, // 00D9 GETMBR R3 R0 K2
- 0x88100313, // 00DA GETMBR R4 R1 K19
- 0x1C0C0604, // 00DB EQ R3 R3 R4
- 0x780E0005, // 00DC JMPF R3 #00E3
- 0x600C000C, // 00DD GETGBL R3 G12
- 0x88100104, // 00DE GETMBR R4 R0 K4
- 0x7C0C0200, // 00DF CALL R3 1
- 0x000E2E03, // 00E0 ADD R3 K23 R3
- 0x00080403, // 00E1 ADD R2 R2 R3
- 0x7002001D, // 00E2 JMP #0101
- 0x880C0102, // 00E3 GETMBR R3 R0 K2
- 0x8810030D, // 00E4 GETMBR R4 R1 K13
- 0x1C0C0604, // 00E5 EQ R3 R3 R4
- 0x780E0005, // 00E6 JMPF R3 #00ED
- 0x600C000C, // 00E7 GETGBL R3 G12
- 0x88100104, // 00E8 GETMBR R4 R0 K4
- 0x7C0C0200, // 00E9 CALL R3 1
- 0x000E2C03, // 00EA ADD R3 K22 R3
- 0x00080403, // 00EB ADD R2 R2 R3
- 0x70020013, // 00EC JMP #0101
- 0x880C0102, // 00ED GETMBR R3 R0 K2
- 0x8810030F, // 00EE GETMBR R4 R1 K15
- 0x1C0C0604, // 00EF EQ R3 R3 R4
- 0x780E0005, // 00F0 JMPF R3 #00F7
- 0x600C000C, // 00F1 GETGBL R3 G12
- 0x88100104, // 00F2 GETMBR R4 R0 K4
- 0x7C0C0200, // 00F3 CALL R3 1
- 0x000E2E03, // 00F4 ADD R3 K23 R3
- 0x00080403, // 00F5 ADD R2 R2 R3
- 0x70020009, // 00F6 JMP #0101
- 0x880C0102, // 00F7 GETMBR R3 R0 K2
- 0x8810031E, // 00F8 GETMBR R4 R1 K30
- 0x1C0C0604, // 00F9 EQ R3 R3 R4
- 0x780E0000, // 00FA JMPF R3 #00FC
- 0x70020004, // 00FB JMP #0101
- 0x600C0008, // 00FC GETGBL R3 G8
- 0x88100102, // 00FD GETMBR R4 R0 K2
- 0x7C0C0200, // 00FE CALL R3 1
- 0x000E3E03, // 00FF ADD R3 K31 R3
- 0xB0063803, // 0100 RAISE 1 K28 R3
- 0x80040400, // 0101 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: reset
********************************************************************/
-extern const bclass be_class_Matter_TLV_item;
be_local_closure(class_Matter_TLV_item_reset, /* name */
be_nested_proto(
3, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_item,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(parent),
- /* K1 */ be_nested_str_weak(next_idx),
- /* K2 */ be_nested_str_weak(tag_vendor),
- /* K3 */ be_nested_str_weak(tag_profile),
- /* K4 */ be_nested_str_weak(tag_number),
- /* K5 */ be_nested_str_weak(tag_sub),
- /* K6 */ be_nested_str_weak(typ),
- /* K7 */ be_nested_str_weak(val),
- }),
+ &be_ktab_class_Matter_TLV_item, /* shared constants */
be_str_weak(reset),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
@@ -698,40 +134,727 @@ be_local_closure(class_Matter_TLV_item_reset, /* name */
/********************************************************************
-** Solidified function: create_TLV
+** Solidified function: set_or_nil
********************************************************************/
-extern const bclass be_class_Matter_TLV_item;
-be_local_closure(class_Matter_TLV_item_create_TLV, /* name */
+be_local_closure(class_Matter_TLV_item_set_or_nil, /* name */
be_nested_proto(
- 4, /* nstack */
- 2, /* argc */
- 4, /* varg */
+ 5, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_item,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_TLV_item),
- /* K1 */ be_nested_str_weak(typ),
- /* K2 */ be_nested_str_weak(val),
- }),
- be_str_weak(create_TLV),
+ &be_ktab_class_Matter_TLV_item, /* shared constants */
+ be_str_weak(set_or_nil),
&be_const_str_solidified,
- ( &(const binstruction[13]) { /* code */
- 0x58080000, // 0000 LDCONST R2 K0
- 0x4C0C0000, // 0001 LDNIL R3
- 0x200C0203, // 0002 NE R3 R1 R3
- 0x740E0002, // 0003 JMPT R3 #0007
- 0x540E0013, // 0004 LDINT R3 20
- 0x1C0C0003, // 0005 EQ R3 R0 R3
- 0x780E0004, // 0006 JMPF R3 #000C
- 0x5C0C0400, // 0007 MOVE R3 R2
- 0x7C0C0000, // 0008 CALL R3 0
- 0x900E0200, // 0009 SETMBR R3 K1 R0
- 0x900E0401, // 000A SETMBR R3 K2 R1
- 0x80040600, // 000B RET 1 R3
- 0x80000000, // 000C RET 0
+ ( &(const binstruction[16]) { /* code */
+ 0x8C0C0108, // 0000 GETMET R3 R0 K8
+ 0x7C0C0200, // 0001 CALL R3 1
+ 0x4C0C0000, // 0002 LDNIL R3
+ 0x1C0C0403, // 0003 EQ R3 R2 R3
+ 0x780E0000, // 0004 JMPF R3 #0006
+ 0x54060013, // 0005 LDINT R1 20
+ 0x4C0C0000, // 0006 LDNIL R3
+ 0x200C0403, // 0007 NE R3 R2 R3
+ 0x740E0002, // 0008 JMPT R3 #000C
+ 0x540E0013, // 0009 LDINT R3 20
+ 0x1C0C0203, // 000A EQ R3 R1 R3
+ 0x780E0002, // 000B JMPF R3 #000F
+ 0x90020C01, // 000C SETMBR R0 K6 R1
+ 0x90020E02, // 000D SETMBR R0 K7 R2
+ 0x80040000, // 000E RET 1 R0
+ 0x80000000, // 000F RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: encode_len
+********************************************************************/
+be_local_closure(class_Matter_TLV_item_encode_len, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_TLV_item, /* shared constants */
+ be_str_weak(encode_len),
+ &be_const_str_solidified,
+ ( &(const binstruction[258]) { /* code */
+ 0x88040109, // 0000 GETMBR R1 R0 K9
+ 0x5808000A, // 0001 LDCONST R2 K10
+ 0x880C0106, // 0002 GETMBR R3 R0 K6
+ 0x8810030B, // 0003 GETMBR R4 R1 K11
+ 0x1C0C0604, // 0004 EQ R3 R3 R4
+ 0x780E0003, // 0005 JMPF R3 #000A
+ 0x600C000C, // 0006 GETGBL R3 G12
+ 0x88100107, // 0007 GETMBR R4 R0 K7
+ 0x7C0C0200, // 0008 CALL R3 1
+ 0x80040600, // 0009 RET 1 R3
+ 0x880C0106, // 000A GETMBR R3 R0 K6
+ 0x8810030C, // 000B GETMBR R4 R1 K12
+ 0x1C0C0604, // 000C EQ R3 R3 R4
+ 0x740E0003, // 000D JMPT R3 #0012
+ 0x880C0106, // 000E GETMBR R3 R0 K6
+ 0x8810030D, // 000F GETMBR R4 R1 K13
+ 0x1C0C0604, // 0010 EQ R3 R3 R4
+ 0x780E0008, // 0011 JMPF R3 #001B
+ 0x600C0017, // 0012 GETGBL R3 G23
+ 0x88100107, // 0013 GETMBR R4 R0 K7
+ 0x7C0C0200, // 0014 CALL R3 1
+ 0x780E0001, // 0015 JMPF R3 #0018
+ 0x880C030D, // 0016 GETMBR R3 R1 K13
+ 0x70020000, // 0017 JMP #0019
+ 0x880C030C, // 0018 GETMBR R3 R1 K12
+ 0x90020C03, // 0019 SETMBR R0 K6 R3
+ 0x70020070, // 001A JMP #008C
+ 0x880C0106, // 001B GETMBR R3 R0 K6
+ 0x8810030E, // 001C GETMBR R4 R1 K14
+ 0x280C0604, // 001D GE R3 R3 R4
+ 0x780E0018, // 001E JMPF R3 #0038
+ 0x880C0106, // 001F GETMBR R3 R0 K6
+ 0x8810030F, // 0020 GETMBR R4 R1 K15
+ 0x180C0604, // 0021 LE R3 R3 R4
+ 0x780E0014, // 0022 JMPF R3 #0038
+ 0x600C0009, // 0023 GETGBL R3 G9
+ 0x88100107, // 0024 GETMBR R4 R0 K7
+ 0x7C0C0200, // 0025 CALL R3 1
+ 0x5412007E, // 0026 LDINT R4 127
+ 0x18100604, // 0027 LE R4 R3 R4
+ 0x78120005, // 0028 JMPF R4 #002F
+ 0x5411FF7F, // 0029 LDINT R4 -128
+ 0x28100604, // 002A GE R4 R3 R4
+ 0x78120002, // 002B JMPF R4 #002F
+ 0x88100310, // 002C GETMBR R4 R1 K16
+ 0x90020C04, // 002D SETMBR R0 K6 R4
+ 0x70020007, // 002E JMP #0037
+ 0x54127FFE, // 002F LDINT R4 32767
+ 0x18100604, // 0030 LE R4 R3 R4
+ 0x78120004, // 0031 JMPF R4 #0037
+ 0x54117FFF, // 0032 LDINT R4 -32768
+ 0x28100604, // 0033 GE R4 R3 R4
+ 0x78120001, // 0034 JMPF R4 #0037
+ 0x8810030E, // 0035 GETMBR R4 R1 K14
+ 0x90020C04, // 0036 SETMBR R0 K6 R4
+ 0x70020053, // 0037 JMP #008C
+ 0x880C0106, // 0038 GETMBR R3 R0 K6
+ 0x88100311, // 0039 GETMBR R4 R1 K17
+ 0x280C0604, // 003A GE R3 R3 R4
+ 0x780E0016, // 003B JMPF R3 #0053
+ 0x880C0106, // 003C GETMBR R3 R0 K6
+ 0x88100312, // 003D GETMBR R4 R1 K18
+ 0x180C0604, // 003E LE R3 R3 R4
+ 0x780E0012, // 003F JMPF R3 #0053
+ 0x600C0009, // 0040 GETGBL R3 G9
+ 0x88100107, // 0041 GETMBR R4 R0 K7
+ 0x7C0C0200, // 0042 CALL R3 1
+ 0x541200FE, // 0043 LDINT R4 255
+ 0x18100604, // 0044 LE R4 R3 R4
+ 0x78120004, // 0045 JMPF R4 #004B
+ 0x2810070A, // 0046 GE R4 R3 K10
+ 0x78120002, // 0047 JMPF R4 #004B
+ 0x88100313, // 0048 GETMBR R4 R1 K19
+ 0x90020C04, // 0049 SETMBR R0 K6 R4
+ 0x70020006, // 004A JMP #0052
+ 0x5412FFFE, // 004B LDINT R4 65535
+ 0x18100604, // 004C LE R4 R3 R4
+ 0x78120003, // 004D JMPF R4 #0052
+ 0x2810070A, // 004E GE R4 R3 K10
+ 0x78120001, // 004F JMPF R4 #0052
+ 0x88100311, // 0050 GETMBR R4 R1 K17
+ 0x90020C04, // 0051 SETMBR R0 K6 R4
+ 0x70020038, // 0052 JMP #008C
+ 0x880C0106, // 0053 GETMBR R3 R0 K6
+ 0x88100314, // 0054 GETMBR R4 R1 K20
+ 0x280C0604, // 0055 GE R3 R3 R4
+ 0x780E0018, // 0056 JMPF R3 #0070
+ 0x880C0106, // 0057 GETMBR R3 R0 K6
+ 0x88100315, // 0058 GETMBR R4 R1 K21
+ 0x180C0604, // 0059 LE R3 R3 R4
+ 0x780E0014, // 005A JMPF R3 #0070
+ 0x600C000C, // 005B GETGBL R3 G12
+ 0x88100107, // 005C GETMBR R4 R0 K7
+ 0x7C0C0200, // 005D CALL R3 1
+ 0x541200FE, // 005E LDINT R4 255
+ 0x180C0604, // 005F LE R3 R3 R4
+ 0x780E0002, // 0060 JMPF R3 #0064
+ 0x880C0314, // 0061 GETMBR R3 R1 K20
+ 0x90020C03, // 0062 SETMBR R0 K6 R3
+ 0x7002000A, // 0063 JMP #006F
+ 0x600C000C, // 0064 GETGBL R3 G12
+ 0x88100107, // 0065 GETMBR R4 R0 K7
+ 0x7C0C0200, // 0066 CALL R3 1
+ 0x5412FFFE, // 0067 LDINT R4 65535
+ 0x180C0604, // 0068 LE R3 R3 R4
+ 0x780E0002, // 0069 JMPF R3 #006D
+ 0x880C0316, // 006A GETMBR R3 R1 K22
+ 0x90020C03, // 006B SETMBR R0 K6 R3
+ 0x70020001, // 006C JMP #006F
+ 0x880C0317, // 006D GETMBR R3 R1 K23
+ 0x90020C03, // 006E SETMBR R0 K6 R3
+ 0x7002001B, // 006F JMP #008C
+ 0x880C0106, // 0070 GETMBR R3 R0 K6
+ 0x88100318, // 0071 GETMBR R4 R1 K24
+ 0x280C0604, // 0072 GE R3 R3 R4
+ 0x780E0017, // 0073 JMPF R3 #008C
+ 0x880C0106, // 0074 GETMBR R3 R0 K6
+ 0x88100319, // 0075 GETMBR R4 R1 K25
+ 0x180C0604, // 0076 LE R3 R3 R4
+ 0x780E0013, // 0077 JMPF R3 #008C
+ 0x600C000C, // 0078 GETGBL R3 G12
+ 0x88100107, // 0079 GETMBR R4 R0 K7
+ 0x7C0C0200, // 007A CALL R3 1
+ 0x541200FE, // 007B LDINT R4 255
+ 0x180C0604, // 007C LE R3 R3 R4
+ 0x780E0002, // 007D JMPF R3 #0081
+ 0x880C0318, // 007E GETMBR R3 R1 K24
+ 0x90020C03, // 007F SETMBR R0 K6 R3
+ 0x7002000A, // 0080 JMP #008C
+ 0x600C000C, // 0081 GETGBL R3 G12
+ 0x88100107, // 0082 GETMBR R4 R0 K7
+ 0x7C0C0200, // 0083 CALL R3 1
+ 0x5412FFFE, // 0084 LDINT R4 65535
+ 0x180C0604, // 0085 LE R3 R3 R4
+ 0x780E0002, // 0086 JMPF R3 #008A
+ 0x880C031A, // 0087 GETMBR R3 R1 K26
+ 0x90020C03, // 0088 SETMBR R0 K6 R3
+ 0x70020001, // 0089 JMP #008C
+ 0x880C031B, // 008A GETMBR R3 R1 K27
+ 0x90020C03, // 008B SETMBR R0 K6 R3
+ 0x8C0C011C, // 008C GETMET R3 R0 K28
+ 0x7C0C0200, // 008D CALL R3 1
+ 0x00080403, // 008E ADD R2 R2 R3
+ 0x880C0106, // 008F GETMBR R3 R0 K6
+ 0x88100310, // 0090 GETMBR R4 R1 K16
+ 0x1C0C0604, // 0091 EQ R3 R3 R4
+ 0x740E0003, // 0092 JMPT R3 #0097
+ 0x880C0106, // 0093 GETMBR R3 R0 K6
+ 0x88100313, // 0094 GETMBR R4 R1 K19
+ 0x1C0C0604, // 0095 EQ R3 R3 R4
+ 0x780E0001, // 0096 JMPF R3 #0099
+ 0x0008051D, // 0097 ADD R2 R2 K29
+ 0x70020067, // 0098 JMP #0101
+ 0x880C0106, // 0099 GETMBR R3 R0 K6
+ 0x8810030E, // 009A GETMBR R4 R1 K14
+ 0x1C0C0604, // 009B EQ R3 R3 R4
+ 0x740E0003, // 009C JMPT R3 #00A1
+ 0x880C0106, // 009D GETMBR R3 R0 K6
+ 0x88100311, // 009E GETMBR R4 R1 K17
+ 0x1C0C0604, // 009F EQ R3 R3 R4
+ 0x780E0001, // 00A0 JMPF R3 #00A3
+ 0x0008051E, // 00A1 ADD R2 R2 K30
+ 0x7002005D, // 00A2 JMP #0101
+ 0x880C0106, // 00A3 GETMBR R3 R0 K6
+ 0x8810030F, // 00A4 GETMBR R4 R1 K15
+ 0x1C0C0604, // 00A5 EQ R3 R3 R4
+ 0x740E0003, // 00A6 JMPT R3 #00AB
+ 0x880C0106, // 00A7 GETMBR R3 R0 K6
+ 0x88100312, // 00A8 GETMBR R4 R1 K18
+ 0x1C0C0604, // 00A9 EQ R3 R3 R4
+ 0x780E0002, // 00AA JMPF R3 #00AE
+ 0x540E0003, // 00AB LDINT R3 4
+ 0x00080403, // 00AC ADD R2 R2 R3
+ 0x70020052, // 00AD JMP #0101
+ 0x880C0106, // 00AE GETMBR R3 R0 K6
+ 0x8810031F, // 00AF GETMBR R4 R1 K31
+ 0x1C0C0604, // 00B0 EQ R3 R3 R4
+ 0x740E0003, // 00B1 JMPT R3 #00B6
+ 0x880C0106, // 00B2 GETMBR R3 R0 K6
+ 0x88100320, // 00B3 GETMBR R4 R1 K32
+ 0x1C0C0604, // 00B4 EQ R3 R3 R4
+ 0x780E0002, // 00B5 JMPF R3 #00B9
+ 0x540E0007, // 00B6 LDINT R3 8
+ 0x00080403, // 00B7 ADD R2 R2 R3
+ 0x70020047, // 00B8 JMP #0101
+ 0x880C0106, // 00B9 GETMBR R3 R0 K6
+ 0x8810030C, // 00BA GETMBR R4 R1 K12
+ 0x1C0C0604, // 00BB EQ R3 R3 R4
+ 0x740E0003, // 00BC JMPT R3 #00C1
+ 0x880C0106, // 00BD GETMBR R3 R0 K6
+ 0x8810030D, // 00BE GETMBR R4 R1 K13
+ 0x1C0C0604, // 00BF EQ R3 R3 R4
+ 0x780E0000, // 00C0 JMPF R3 #00C2
+ 0x7002003E, // 00C1 JMP #0101
+ 0x880C0106, // 00C2 GETMBR R3 R0 K6
+ 0x88100321, // 00C3 GETMBR R4 R1 K33
+ 0x1C0C0604, // 00C4 EQ R3 R3 R4
+ 0x780E0002, // 00C5 JMPF R3 #00C9
+ 0x540E0003, // 00C6 LDINT R3 4
+ 0x00080403, // 00C7 ADD R2 R2 R3
+ 0x70020037, // 00C8 JMP #0101
+ 0x880C0106, // 00C9 GETMBR R3 R0 K6
+ 0x88100322, // 00CA GETMBR R4 R1 K34
+ 0x1C0C0604, // 00CB EQ R3 R3 R4
+ 0x780E0001, // 00CC JMPF R3 #00CF
+ 0xB0064724, // 00CD RAISE 1 K35 K36
+ 0x70020031, // 00CE JMP #0101
+ 0x880C0106, // 00CF GETMBR R3 R0 K6
+ 0x88100318, // 00D0 GETMBR R4 R1 K24
+ 0x1C0C0604, // 00D1 EQ R3 R3 R4
+ 0x780E0005, // 00D2 JMPF R3 #00D9
+ 0x600C000C, // 00D3 GETGBL R3 G12
+ 0x88100107, // 00D4 GETMBR R4 R0 K7
+ 0x7C0C0200, // 00D5 CALL R3 1
+ 0x000E3A03, // 00D6 ADD R3 K29 R3
+ 0x00080403, // 00D7 ADD R2 R2 R3
+ 0x70020027, // 00D8 JMP #0101
+ 0x880C0106, // 00D9 GETMBR R3 R0 K6
+ 0x8810031A, // 00DA GETMBR R4 R1 K26
+ 0x1C0C0604, // 00DB EQ R3 R3 R4
+ 0x780E0005, // 00DC JMPF R3 #00E3
+ 0x600C000C, // 00DD GETGBL R3 G12
+ 0x88100107, // 00DE GETMBR R4 R0 K7
+ 0x7C0C0200, // 00DF CALL R3 1
+ 0x000E3C03, // 00E0 ADD R3 K30 R3
+ 0x00080403, // 00E1 ADD R2 R2 R3
+ 0x7002001D, // 00E2 JMP #0101
+ 0x880C0106, // 00E3 GETMBR R3 R0 K6
+ 0x88100314, // 00E4 GETMBR R4 R1 K20
+ 0x1C0C0604, // 00E5 EQ R3 R3 R4
+ 0x780E0005, // 00E6 JMPF R3 #00ED
+ 0x600C000C, // 00E7 GETGBL R3 G12
+ 0x88100107, // 00E8 GETMBR R4 R0 K7
+ 0x7C0C0200, // 00E9 CALL R3 1
+ 0x000E3A03, // 00EA ADD R3 K29 R3
+ 0x00080403, // 00EB ADD R2 R2 R3
+ 0x70020013, // 00EC JMP #0101
+ 0x880C0106, // 00ED GETMBR R3 R0 K6
+ 0x88100316, // 00EE GETMBR R4 R1 K22
+ 0x1C0C0604, // 00EF EQ R3 R3 R4
+ 0x780E0005, // 00F0 JMPF R3 #00F7
+ 0x600C000C, // 00F1 GETGBL R3 G12
+ 0x88100107, // 00F2 GETMBR R4 R0 K7
+ 0x7C0C0200, // 00F3 CALL R3 1
+ 0x000E3C03, // 00F4 ADD R3 K30 R3
+ 0x00080403, // 00F5 ADD R2 R2 R3
+ 0x70020009, // 00F6 JMP #0101
+ 0x880C0106, // 00F7 GETMBR R3 R0 K6
+ 0x88100325, // 00F8 GETMBR R4 R1 K37
+ 0x1C0C0604, // 00F9 EQ R3 R3 R4
+ 0x780E0000, // 00FA JMPF R3 #00FC
+ 0x70020004, // 00FB JMP #0101
+ 0x600C0008, // 00FC GETGBL R3 G8
+ 0x88100106, // 00FD GETMBR R4 R0 K6
+ 0x7C0C0200, // 00FE CALL R3 1
+ 0x000E4C03, // 00FF ADD R3 K38 R3
+ 0xB0064603, // 0100 RAISE 1 K35 R3
+ 0x80040400, // 0101 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set
+********************************************************************/
+be_local_closure(class_Matter_TLV_item_set, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_TLV_item, /* shared constants */
+ be_str_weak(set),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0x8C0C0108, // 0000 GETMET R3 R0 K8
+ 0x7C0C0200, // 0001 CALL R3 1
+ 0x4C0C0000, // 0002 LDNIL R3
+ 0x200C0403, // 0003 NE R3 R2 R3
+ 0x740E0002, // 0004 JMPT R3 #0008
+ 0x540E0013, // 0005 LDINT R3 20
+ 0x1C0C0203, // 0006 EQ R3 R1 R3
+ 0x780E0002, // 0007 JMPF R3 #000B
+ 0x90020C01, // 0008 SETMBR R0 K6 R1
+ 0x90020E02, // 0009 SETMBR R0 K7 R2
+ 0x80040000, // 000A RET 1 R0
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: to_TLV
+********************************************************************/
+be_local_closure(class_Matter_TLV_item_to_TLV, /* name */
+ be_nested_proto(
+ 1, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_TLV_item, /* shared constants */
+ be_str_weak(to_TLV),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80040000, // 0000 RET 1 R0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: tostring
+********************************************************************/
+be_local_closure(class_Matter_TLV_item_tostring, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_TLV_item, /* shared constants */
+ be_str_weak(tostring),
+ &be_const_str_solidified,
+ ( &(const binstruction[167]) { /* code */
+ 0x58080027, // 0000 LDCONST R2 K39
+ 0xA802009C, // 0001 EXBLK 0 #009F
+ 0x500C0200, // 0002 LDBOOL R3 1 0
+ 0x200C0203, // 0003 NE R3 R1 R3
+ 0x780E0038, // 0004 JMPF R3 #003E
+ 0x880C0103, // 0005 GETMBR R3 R0 K3
+ 0x5411FFFE, // 0006 LDINT R4 -1
+ 0x1C0C0604, // 0007 EQ R3 R3 R4
+ 0x780E000A, // 0008 JMPF R3 #0014
+ 0x00080528, // 0009 ADD R2 R2 K40
+ 0x880C0104, // 000A GETMBR R3 R0 K4
+ 0x4C100000, // 000B LDNIL R4
+ 0x200C0604, // 000C NE R3 R3 R4
+ 0x780E0004, // 000D JMPF R3 #0013
+ 0x600C0018, // 000E GETGBL R3 G24
+ 0x58100029, // 000F LDCONST R4 K41
+ 0x88140104, // 0010 GETMBR R5 R0 K4
+ 0x7C0C0400, // 0011 CALL R3 2
+ 0x00080403, // 0012 ADD R2 R2 R3
+ 0x70020023, // 0013 JMP #0038
+ 0x880C0102, // 0014 GETMBR R3 R0 K2
+ 0x4C100000, // 0015 LDNIL R4
+ 0x200C0604, // 0016 NE R3 R3 R4
+ 0x780E0004, // 0017 JMPF R3 #001D
+ 0x600C0018, // 0018 GETGBL R3 G24
+ 0x5810002A, // 0019 LDCONST R4 K42
+ 0x88140102, // 001A GETMBR R5 R0 K2
+ 0x7C0C0400, // 001B CALL R3 2
+ 0x00080403, // 001C ADD R2 R2 R3
+ 0x880C0103, // 001D GETMBR R3 R0 K3
+ 0x4C100000, // 001E LDNIL R4
+ 0x200C0604, // 001F NE R3 R3 R4
+ 0x780E0004, // 0020 JMPF R3 #0026
+ 0x600C0018, // 0021 GETGBL R3 G24
+ 0x5810002B, // 0022 LDCONST R4 K43
+ 0x88140103, // 0023 GETMBR R5 R0 K3
+ 0x7C0C0400, // 0024 CALL R3 2
+ 0x00080403, // 0025 ADD R2 R2 R3
+ 0x880C0104, // 0026 GETMBR R3 R0 K4
+ 0x4C100000, // 0027 LDNIL R4
+ 0x200C0604, // 0028 NE R3 R3 R4
+ 0x780E0004, // 0029 JMPF R3 #002F
+ 0x600C0018, // 002A GETGBL R3 G24
+ 0x58100029, // 002B LDCONST R4 K41
+ 0x88140104, // 002C GETMBR R5 R0 K4
+ 0x7C0C0400, // 002D CALL R3 2
+ 0x00080403, // 002E ADD R2 R2 R3
+ 0x880C0105, // 002F GETMBR R3 R0 K5
+ 0x4C100000, // 0030 LDNIL R4
+ 0x200C0604, // 0031 NE R3 R3 R4
+ 0x780E0004, // 0032 JMPF R3 #0038
+ 0x600C0018, // 0033 GETGBL R3 G24
+ 0x5810002C, // 0034 LDCONST R4 K44
+ 0x88140105, // 0035 GETMBR R5 R0 K5
+ 0x7C0C0400, // 0036 CALL R3 2
+ 0x00080403, // 0037 ADD R2 R2 R3
+ 0x600C000C, // 0038 GETGBL R3 G12
+ 0x5C100400, // 0039 MOVE R4 R2
+ 0x7C0C0200, // 003A CALL R3 1
+ 0x240C070A, // 003B GT R3 R3 K10
+ 0x780E0000, // 003C JMPF R3 #003E
+ 0x0008052D, // 003D ADD R2 R2 K45
+ 0x600C0004, // 003E GETGBL R3 G4
+ 0x88100107, // 003F GETMBR R4 R0 K7
+ 0x7C0C0200, // 0040 CALL R3 1
+ 0x1C0C072E, // 0041 EQ R3 R3 K46
+ 0x780E0010, // 0042 JMPF R3 #0054
+ 0x600C0018, // 0043 GETGBL R3 G24
+ 0x5810002F, // 0044 LDCONST R4 K47
+ 0x88140107, // 0045 GETMBR R5 R0 K7
+ 0x7C0C0400, // 0046 CALL R3 2
+ 0x00080403, // 0047 ADD R2 R2 R3
+ 0x880C0106, // 0048 GETMBR R3 R0 K6
+ 0x88100109, // 0049 GETMBR R4 R0 K9
+ 0x88100913, // 004A GETMBR R4 R4 K19
+ 0x280C0604, // 004B GE R3 R3 R4
+ 0x780E0005, // 004C JMPF R3 #0053
+ 0x880C0106, // 004D GETMBR R3 R0 K6
+ 0x88100109, // 004E GETMBR R4 R0 K9
+ 0x88100920, // 004F GETMBR R4 R4 K32
+ 0x180C0604, // 0050 LE R3 R3 R4
+ 0x780E0000, // 0051 JMPF R3 #0053
+ 0x00080530, // 0052 ADD R2 R2 K48
+ 0x70020048, // 0053 JMP #009D
+ 0x600C0004, // 0054 GETGBL R3 G4
+ 0x88100107, // 0055 GETMBR R4 R0 K7
+ 0x7C0C0200, // 0056 CALL R3 1
+ 0x1C0C0731, // 0057 EQ R3 R3 K49
+ 0x780E0006, // 0058 JMPF R3 #0060
+ 0x880C0107, // 0059 GETMBR R3 R0 K7
+ 0x780E0001, // 005A JMPF R3 #005D
+ 0x580C0032, // 005B LDCONST R3 K50
+ 0x70020000, // 005C JMP #005E
+ 0x580C0033, // 005D LDCONST R3 K51
+ 0x00080403, // 005E ADD R2 R2 R3
+ 0x7002003C, // 005F JMP #009D
+ 0x880C0107, // 0060 GETMBR R3 R0 K7
+ 0x4C100000, // 0061 LDNIL R4
+ 0x1C0C0604, // 0062 EQ R3 R3 R4
+ 0x780E0001, // 0063 JMPF R3 #0066
+ 0x00080534, // 0064 ADD R2 R2 K52
+ 0x70020036, // 0065 JMP #009D
+ 0x600C0004, // 0066 GETGBL R3 G4
+ 0x88100107, // 0067 GETMBR R4 R0 K7
+ 0x7C0C0200, // 0068 CALL R3 1
+ 0x1C0C0735, // 0069 EQ R3 R3 K53
+ 0x780E0005, // 006A JMPF R3 #0071
+ 0x600C0018, // 006B GETGBL R3 G24
+ 0x58100036, // 006C LDCONST R4 K54
+ 0x88140107, // 006D GETMBR R5 R0 K7
+ 0x7C0C0400, // 006E CALL R3 2
+ 0x00080403, // 006F ADD R2 R2 R3
+ 0x7002002B, // 0070 JMP #009D
+ 0x600C0004, // 0071 GETGBL R3 G4
+ 0x88100107, // 0072 GETMBR R4 R0 K7
+ 0x7C0C0200, // 0073 CALL R3 1
+ 0x1C0C0737, // 0074 EQ R3 R3 K55
+ 0x780E0005, // 0075 JMPF R3 #007C
+ 0x600C0018, // 0076 GETGBL R3 G24
+ 0x58100038, // 0077 LDCONST R4 K56
+ 0x88140107, // 0078 GETMBR R5 R0 K7
+ 0x7C0C0400, // 0079 CALL R3 2
+ 0x00080403, // 007A ADD R2 R2 R3
+ 0x70020020, // 007B JMP #009D
+ 0x600C000F, // 007C GETGBL R3 G15
+ 0x88100107, // 007D GETMBR R4 R0 K7
+ 0xB8167200, // 007E GETNGBL R5 K57
+ 0x7C0C0400, // 007F CALL R3 2
+ 0x780E000F, // 0080 JMPF R3 #0091
+ 0x880C0107, // 0081 GETMBR R3 R0 K7
+ 0x8C0C073A, // 0082 GETMET R3 R3 K58
+ 0x7C0C0200, // 0083 CALL R3 1
+ 0x00080403, // 0084 ADD R2 R2 R3
+ 0x880C0106, // 0085 GETMBR R3 R0 K6
+ 0x88100109, // 0086 GETMBR R4 R0 K9
+ 0x88100913, // 0087 GETMBR R4 R4 K19
+ 0x280C0604, // 0088 GE R3 R3 R4
+ 0x780E0005, // 0089 JMPF R3 #0090
+ 0x880C0106, // 008A GETMBR R3 R0 K6
+ 0x88100109, // 008B GETMBR R4 R0 K9
+ 0x88100920, // 008C GETMBR R4 R4 K32
+ 0x180C0604, // 008D LE R3 R3 R4
+ 0x780E0000, // 008E JMPF R3 #0090
+ 0x00080530, // 008F ADD R2 R2 K48
+ 0x7002000B, // 0090 JMP #009D
+ 0x600C0004, // 0091 GETGBL R3 G4
+ 0x88100107, // 0092 GETMBR R4 R0 K7
+ 0x7C0C0200, // 0093 CALL R3 1
+ 0x1C0C073B, // 0094 EQ R3 R3 K59
+ 0x780E0006, // 0095 JMPF R3 #009D
+ 0x600C0018, // 0096 GETGBL R3 G24
+ 0x5810003C, // 0097 LDCONST R4 K60
+ 0x88140107, // 0098 GETMBR R5 R0 K7
+ 0x8C140B3D, // 0099 GETMET R5 R5 K61
+ 0x7C140200, // 009A CALL R5 1
+ 0x7C0C0400, // 009B CALL R3 2
+ 0x00080403, // 009C ADD R2 R2 R3
+ 0xA8040001, // 009D EXBLK 1 1
+ 0x70020006, // 009E JMP #00A6
+ 0xAC0C0002, // 009F CATCH R3 0 2
+ 0x70020003, // 00A0 JMP #00A5
+ 0x0014073E, // 00A1 ADD R5 R3 K62
+ 0x00140A04, // 00A2 ADD R5 R5 R4
+ 0x80040A00, // 00A3 RET 1 R5
+ 0x70020000, // 00A4 JMP #00A6
+ 0xB0080000, // 00A5 RAISE 2 R0 R0
+ 0x80040400, // 00A6 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: to_str_val
+********************************************************************/
+be_local_closure(class_Matter_TLV_item_to_str_val, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_TLV_item, /* shared constants */
+ be_str_weak(to_str_val),
+ &be_const_str_solidified,
+ ( &(const binstruction[98]) { /* code */
+ 0x60040004, // 0000 GETGBL R1 G4
+ 0x88080107, // 0001 GETMBR R2 R0 K7
+ 0x7C040200, // 0002 CALL R1 1
+ 0x1C04032E, // 0003 EQ R1 R1 K46
+ 0x78060014, // 0004 JMPF R1 #001A
+ 0x88040106, // 0005 GETMBR R1 R0 K6
+ 0x88080109, // 0006 GETMBR R2 R0 K9
+ 0x88080513, // 0007 GETMBR R2 R2 K19
+ 0x28040202, // 0008 GE R1 R1 R2
+ 0x7806000A, // 0009 JMPF R1 #0015
+ 0x88040106, // 000A GETMBR R1 R0 K6
+ 0x88080109, // 000B GETMBR R2 R0 K9
+ 0x88080520, // 000C GETMBR R2 R2 K32
+ 0x18040202, // 000D LE R1 R1 R2
+ 0x78060005, // 000E JMPF R1 #0015
+ 0x60040008, // 000F GETGBL R1 G8
+ 0x88080107, // 0010 GETMBR R2 R0 K7
+ 0x7C040200, // 0011 CALL R1 1
+ 0x00040330, // 0012 ADD R1 R1 K48
+ 0x80040200, // 0013 RET 1 R1
+ 0x70020003, // 0014 JMP #0019
+ 0x60040008, // 0015 GETGBL R1 G8
+ 0x88080107, // 0016 GETMBR R2 R0 K7
+ 0x7C040200, // 0017 CALL R1 1
+ 0x80040200, // 0018 RET 1 R1
+ 0x70020046, // 0019 JMP #0061
+ 0x60040004, // 001A GETGBL R1 G4
+ 0x88080107, // 001B GETMBR R2 R0 K7
+ 0x7C040200, // 001C CALL R1 1
+ 0x1C040331, // 001D EQ R1 R1 K49
+ 0x78060006, // 001E JMPF R1 #0026
+ 0x88040107, // 001F GETMBR R1 R0 K7
+ 0x78060001, // 0020 JMPF R1 #0023
+ 0x58040032, // 0021 LDCONST R1 K50
+ 0x70020000, // 0022 JMP #0024
+ 0x58040033, // 0023 LDCONST R1 K51
+ 0x80040200, // 0024 RET 1 R1
+ 0x7002003A, // 0025 JMP #0061
+ 0x88040107, // 0026 GETMBR R1 R0 K7
+ 0x4C080000, // 0027 LDNIL R2
+ 0x1C040202, // 0028 EQ R1 R1 R2
+ 0x78060001, // 0029 JMPF R1 #002C
+ 0x80066800, // 002A RET 1 K52
+ 0x70020034, // 002B JMP #0061
+ 0x60040004, // 002C GETGBL R1 G4
+ 0x88080107, // 002D GETMBR R2 R0 K7
+ 0x7C040200, // 002E CALL R1 1
+ 0x1C040335, // 002F EQ R1 R1 K53
+ 0x78060004, // 0030 JMPF R1 #0036
+ 0x60040008, // 0031 GETGBL R1 G8
+ 0x88080107, // 0032 GETMBR R2 R0 K7
+ 0x7C040200, // 0033 CALL R1 1
+ 0x80040200, // 0034 RET 1 R1
+ 0x7002002A, // 0035 JMP #0061
+ 0x60040004, // 0036 GETGBL R1 G4
+ 0x88080107, // 0037 GETMBR R2 R0 K7
+ 0x7C040200, // 0038 CALL R1 1
+ 0x1C040337, // 0039 EQ R1 R1 K55
+ 0x78060002, // 003A JMPF R1 #003E
+ 0x88040107, // 003B GETMBR R1 R0 K7
+ 0x80040200, // 003C RET 1 R1
+ 0x70020022, // 003D JMP #0061
+ 0x6004000F, // 003E GETGBL R1 G15
+ 0x88080107, // 003F GETMBR R2 R0 K7
+ 0xB80E7200, // 0040 GETNGBL R3 K57
+ 0x7C040400, // 0041 CALL R1 2
+ 0x78060014, // 0042 JMPF R1 #0058
+ 0x88040106, // 0043 GETMBR R1 R0 K6
+ 0x88080109, // 0044 GETMBR R2 R0 K9
+ 0x88080513, // 0045 GETMBR R2 R2 K19
+ 0x28040202, // 0046 GE R1 R1 R2
+ 0x7806000A, // 0047 JMPF R1 #0053
+ 0x88040106, // 0048 GETMBR R1 R0 K6
+ 0x88080109, // 0049 GETMBR R2 R0 K9
+ 0x88080520, // 004A GETMBR R2 R2 K32
+ 0x18040202, // 004B LE R1 R1 R2
+ 0x78060005, // 004C JMPF R1 #0053
+ 0x88040107, // 004D GETMBR R1 R0 K7
+ 0x8C04033A, // 004E GETMET R1 R1 K58
+ 0x7C040200, // 004F CALL R1 1
+ 0x00040330, // 0050 ADD R1 R1 K48
+ 0x80040200, // 0051 RET 1 R1
+ 0x70020003, // 0052 JMP #0057
+ 0x88040107, // 0053 GETMBR R1 R0 K7
+ 0x8C04033A, // 0054 GETMET R1 R1 K58
+ 0x7C040200, // 0055 CALL R1 1
+ 0x80040200, // 0056 RET 1 R1
+ 0x70020008, // 0057 JMP #0061
+ 0x60040004, // 0058 GETGBL R1 G4
+ 0x88080107, // 0059 GETMBR R2 R0 K7
+ 0x7C040200, // 005A CALL R1 1
+ 0x1C04033B, // 005B EQ R1 R1 K59
+ 0x78060003, // 005C JMPF R1 #0061
+ 0x8C04013A, // 005D GETMET R1 R0 K58
+ 0x500C0200, // 005E LDBOOL R3 1 0
+ 0x7C040400, // 005F CALL R1 2
+ 0x80040200, // 0060 RET 1 R1
+ 0x80000000, // 0061 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_fulltag
+********************************************************************/
+be_local_closure(class_Matter_TLV_item_set_fulltag, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_TLV_item, /* shared constants */
+ be_str_weak(set_fulltag),
+ &be_const_str_solidified,
+ ( &(const binstruction[15]) { /* code */
+ 0x60100009, // 0000 GETGBL R4 G9
+ 0x5C140200, // 0001 MOVE R5 R1
+ 0x7C100200, // 0002 CALL R4 1
+ 0x90020404, // 0003 SETMBR R0 K2 R4
+ 0x60100009, // 0004 GETGBL R4 G9
+ 0x5C140400, // 0005 MOVE R5 R2
+ 0x7C100200, // 0006 CALL R4 1
+ 0x90020604, // 0007 SETMBR R0 K3 R4
+ 0x60100009, // 0008 GETGBL R4 G9
+ 0x5C140600, // 0009 MOVE R5 R3
+ 0x7C100200, // 000A CALL R4 1
+ 0x90020804, // 000B SETMBR R0 K4 R4
+ 0x4C100000, // 000C LDNIL R4
+ 0x90020A04, // 000D SETMBR R0 K5 R4
+ 0x80000000, // 000E RET 0
})
)
);
@@ -741,150 +864,909 @@ be_local_closure(class_Matter_TLV_item_create_TLV, /* name */
/********************************************************************
** Solidified function: parse
********************************************************************/
-extern const bclass be_class_Matter_TLV_item;
be_local_closure(class_Matter_TLV_item_parse, /* name */
be_nested_proto(
10, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_item,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[25]) { /* constants */
- /* K0 */ be_nested_str_weak(typ),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(_len),
- /* K3 */ be_nested_str_weak(val),
- /* K4 */ be_nested_str_weak(int64),
- /* K5 */ be_nested_str_weak(frombytes),
- /* K6 */ be_nested_str_weak(BFALSE),
- /* K7 */ be_nested_str_weak(BTRUE),
- /* K8 */ be_nested_str_weak(U8),
- /* K9 */ be_nested_str_weak(I8),
- /* K10 */ be_nested_str_weak(geti),
- /* K11 */ be_nested_str_weak(get),
- /* K12 */ be_nested_str_weak(FLOAT),
- /* K13 */ be_nested_str_weak(getfloat),
- /* K14 */ be_const_int(1),
- /* K15 */ be_nested_str_weak(UTF8),
- /* K16 */ be_nested_str_weak(asstring),
- /* K17 */ be_nested_str_weak(NULL),
- /* K18 */ be_nested_str_weak(EOC),
- /* K19 */ be_nested_str_weak(tasmota),
- /* K20 */ be_nested_str_weak(log),
- /* K21 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20eoc),
- /* K22 */ be_const_int(3),
- /* K23 */ be_nested_str_weak(MTR_X3A_X20unexpected_X20type_X3A_X20),
- /* K24 */ be_nested_str_weak(next_idx),
- }),
+ &be_ktab_class_Matter_TLV_item, /* shared constants */
be_str_weak(parse),
&be_const_str_solidified,
- ( &(const binstruction[103]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x88100101, // 0001 GETMBR R4 R0 K1
- 0x88140902, // 0002 GETMBR R5 R4 K2
+ ( &(const binstruction[101]) { /* code */
+ 0x880C0106, // 0000 GETMBR R3 R0 K6
+ 0x88100109, // 0001 GETMBR R4 R0 K9
+ 0x8814093F, // 0002 GETMBR R5 R4 K63
0x94140A03, // 0003 GETIDX R5 R5 R3
0x541A0007, // 0004 LDINT R6 8
0x1C180A06, // 0005 EQ R6 R5 R6
0x781A0008, // 0006 JMPF R6 #0010
- 0xB81A0800, // 0007 GETNGBL R6 K4
- 0x8C180D05, // 0008 GETMET R6 R6 K5
+ 0xB81A7200, // 0007 GETNGBL R6 K57
+ 0x8C180D40, // 0008 GETMET R6 R6 K64
0x5C200200, // 0009 MOVE R8 R1
0x5C240400, // 000A MOVE R9 R2
0x7C180600, // 000B CALL R6 3
- 0x90020606, // 000C SETMBR R0 K3 R6
+ 0x90020E06, // 000C SETMBR R0 K7 R6
0x541A0007, // 000D LDINT R6 8
0x00080406, // 000E ADD R2 R2 R6
- 0x70020054, // 000F JMP #0065
- 0x88180906, // 0010 GETMBR R6 R4 K6
+ 0x70020052, // 000F JMP #0063
+ 0x8818090C, // 0010 GETMBR R6 R4 K12
0x1C180606, // 0011 EQ R6 R3 R6
0x741A0002, // 0012 JMPT R6 #0016
- 0x88180907, // 0013 GETMBR R6 R4 K7
+ 0x8818090D, // 0013 GETMBR R6 R4 K13
0x1C180606, // 0014 EQ R6 R3 R6
0x781A0003, // 0015 JMPF R6 #001A
- 0x88180907, // 0016 GETMBR R6 R4 K7
+ 0x8818090D, // 0016 GETMBR R6 R4 K13
0x1C180606, // 0017 EQ R6 R3 R6
- 0x90020606, // 0018 SETMBR R0 K3 R6
- 0x7002004A, // 0019 JMP #0065
- 0x88180908, // 001A GETMBR R6 R4 K8
+ 0x90020E06, // 0018 SETMBR R0 K7 R6
+ 0x70020048, // 0019 JMP #0063
+ 0x88180920, // 001A GETMBR R6 R4 K32
0x14180606, // 001B LT R6 R3 R6
0x781A000E, // 001C JMPF R6 #002C
- 0x88180909, // 001D GETMBR R6 R4 K9
+ 0x8818091F, // 001D GETMBR R6 R4 K31
0x18180606, // 001E LE R6 R3 R6
0x781A0004, // 001F JMPF R6 #0025
- 0x8C18030A, // 0020 GETMET R6 R1 K10
+ 0x8C180341, // 0020 GETMET R6 R1 K65
0x5C200400, // 0021 MOVE R8 R2
0x5C240A00, // 0022 MOVE R9 R5
0x7C180600, // 0023 CALL R6 3
0x70020003, // 0024 JMP #0029
- 0x8C18030B, // 0025 GETMET R6 R1 K11
+ 0x8C180342, // 0025 GETMET R6 R1 K66
0x5C200400, // 0026 MOVE R8 R2
0x5C240A00, // 0027 MOVE R9 R5
0x7C180600, // 0028 CALL R6 3
- 0x90020606, // 0029 SETMBR R0 K3 R6
+ 0x90020E06, // 0029 SETMBR R0 K7 R6
0x00080405, // 002A ADD R2 R2 R5
- 0x70020038, // 002B JMP #0065
- 0x8818090C, // 002C GETMBR R6 R4 K12
+ 0x70020036, // 002B JMP #0063
+ 0x88180921, // 002C GETMBR R6 R4 K33
0x1C180606, // 002D EQ R6 R3 R6
0x781A0006, // 002E JMPF R6 #0036
- 0x8C18030D, // 002F GETMET R6 R1 K13
+ 0x8C180343, // 002F GETMET R6 R1 K67
0x5C200400, // 0030 MOVE R8 R2
0x7C180400, // 0031 CALL R6 2
- 0x90020606, // 0032 SETMBR R0 K3 R6
+ 0x90020E06, // 0032 SETMBR R0 K7 R6
0x541A0003, // 0033 LDINT R6 4
0x00080406, // 0034 ADD R2 R2 R6
- 0x7002002E, // 0035 JMP #0065
+ 0x7002002C, // 0035 JMP #0063
0x5419FFF7, // 0036 LDINT R6 -8
0x28180A06, // 0037 GE R6 R5 R6
0x781A0016, // 0038 JMPF R6 #0050
0x5419FFFE, // 0039 LDINT R6 -1
0x18180A06, // 003A LE R6 R5 R6
0x781A0013, // 003B JMPF R6 #0050
- 0x8C18030B, // 003C GETMET R6 R1 K11
+ 0x8C180342, // 003C GETMET R6 R1 K66
0x5C200400, // 003D MOVE R8 R2
0x44240A00, // 003E NEG R9 R5
0x7C180600, // 003F CALL R6 3
0x441C0A00, // 0040 NEG R7 R5
0x00080407, // 0041 ADD R2 R2 R7
0x001C0406, // 0042 ADD R7 R2 R6
- 0x041C0F0E, // 0043 SUB R7 R7 K14
+ 0x041C0F1D, // 0043 SUB R7 R7 K29
0x401C0407, // 0044 CONNECT R7 R2 R7
0x941C0207, // 0045 GETIDX R7 R1 R7
- 0x90020607, // 0046 SETMBR R0 K3 R7
+ 0x90020E07, // 0046 SETMBR R0 K7 R7
0x00080406, // 0047 ADD R2 R2 R6
- 0x881C090F, // 0048 GETMBR R7 R4 K15
+ 0x881C0919, // 0048 GETMBR R7 R4 K25
0x181C0607, // 0049 LE R7 R3 R7
0x781E0003, // 004A JMPF R7 #004F
- 0x881C0103, // 004B GETMBR R7 R0 K3
- 0x8C1C0F10, // 004C GETMET R7 R7 K16
+ 0x881C0107, // 004B GETMBR R7 R0 K7
+ 0x8C1C0F44, // 004C GETMET R7 R7 K68
0x7C1C0200, // 004D CALL R7 1
- 0x90020607, // 004E SETMBR R0 K3 R7
- 0x70020014, // 004F JMP #0065
- 0x88180911, // 0050 GETMBR R6 R4 K17
+ 0x90020E07, // 004E SETMBR R0 K7 R7
+ 0x70020012, // 004F JMP #0063
+ 0x88180925, // 0050 GETMBR R6 R4 K37
0x1C180606, // 0051 EQ R6 R3 R6
0x781A0000, // 0052 JMPF R6 #0054
- 0x70020010, // 0053 JMP #0065
- 0x88180912, // 0054 GETMBR R6 R4 K18
+ 0x7002000E, // 0053 JMP #0063
+ 0x88180945, // 0054 GETMBR R6 R4 K69
0x1C180606, // 0055 EQ R6 R3 R6
- 0x781A0005, // 0056 JMPF R6 #005D
- 0xB81A2600, // 0057 GETNGBL R6 K19
- 0x8C180D14, // 0058 GETMET R6 R6 K20
- 0x58200015, // 0059 LDCONST R8 K21
- 0x58240016, // 005A LDCONST R9 K22
- 0x7C180600, // 005B CALL R6 3
- 0x70020007, // 005C JMP #0065
- 0xB81A2600, // 005D GETNGBL R6 K19
- 0x8C180D14, // 005E GETMET R6 R6 K20
- 0x60200008, // 005F GETGBL R8 G8
- 0x5C240600, // 0060 MOVE R9 R3
- 0x7C200200, // 0061 CALL R8 1
- 0x00222E08, // 0062 ADD R8 K23 R8
- 0x58240016, // 0063 LDCONST R9 K22
- 0x7C180600, // 0064 CALL R6 3
- 0x90023002, // 0065 SETMBR R0 K24 R2
- 0x80040400, // 0066 RET 1 R2
+ 0x781A0004, // 0056 JMPF R6 #005C
+ 0xB81A8C00, // 0057 GETNGBL R6 K70
+ 0x581C0047, // 0058 LDCONST R7 K71
+ 0x58200048, // 0059 LDCONST R8 K72
+ 0x7C180400, // 005A CALL R6 2
+ 0x70020006, // 005B JMP #0063
+ 0xB81A8C00, // 005C GETNGBL R6 K70
+ 0x601C0008, // 005D GETGBL R7 G8
+ 0x5C200600, // 005E MOVE R8 R3
+ 0x7C1C0200, // 005F CALL R7 1
+ 0x001E9207, // 0060 ADD R7 K73 R7
+ 0x58200048, // 0061 LDCONST R8 K72
+ 0x7C180400, // 0062 CALL R6 2
+ 0x90020202, // 0063 SETMBR R0 K1 R2
+ 0x80040400, // 0064 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_commonprofile
+********************************************************************/
+be_local_closure(class_Matter_TLV_item_set_commonprofile, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_TLV_item, /* shared constants */
+ be_str_weak(set_commonprofile),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 6]) { /* code */
+ 0x8C04014A, // 0000 GETMET R1 R0 K74
+ 0x4C0C0000, // 0001 LDNIL R3
+ 0x5411FFFE, // 0002 LDINT R4 -1
+ 0x4C140000, // 0003 LDNIL R5
+ 0x7C040800, // 0004 CALL R1 4
+ 0x80000000, // 0005 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: _encode_tag
+********************************************************************/
+be_local_closure(class_Matter_TLV_item__encode_tag, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_TLV_item, /* shared constants */
+ be_str_weak(_encode_tag),
+ &be_const_str_solidified,
+ ( &(const binstruction[133]) { /* code */
+ 0x88080104, // 0000 GETMBR R2 R0 K4
+ 0x4C0C0000, // 0001 LDNIL R3
+ 0x20080403, // 0002 NE R2 R2 R3
+ 0x780A0001, // 0003 JMPF R2 #0006
+ 0x88080104, // 0004 GETMBR R2 R0 K4
+ 0x70020000, // 0005 JMP #0007
+ 0x5808000A, // 0006 LDCONST R2 K10
+ 0x540EFFFF, // 0007 LDINT R3 65536
+ 0x280C0403, // 0008 GE R3 R2 R3
+ 0x740E0002, // 0009 JMPT R3 #000D
+ 0x140C050A, // 000A LT R3 R2 K10
+ 0x740E0000, // 000B JMPT R3 #000D
+ 0x500C0001, // 000C LDBOOL R3 0 1
+ 0x500C0200, // 000D LDBOOL R3 1 0
+ 0x5810000A, // 000E LDCONST R4 K10
+ 0x88140102, // 000F GETMBR R5 R0 K2
+ 0x4C180000, // 0010 LDNIL R6
+ 0x20140A06, // 0011 NE R5 R5 R6
+ 0x78160026, // 0012 JMPF R5 #003A
+ 0x780E0012, // 0013 JMPF R3 #0027
+ 0x8C14034B, // 0014 GETMET R5 R1 K75
+ 0x541E00DF, // 0015 LDINT R7 224
+ 0x88200106, // 0016 GETMBR R8 R0 K6
+ 0x001C0E08, // 0017 ADD R7 R7 R8
+ 0x5820001D, // 0018 LDCONST R8 K29
+ 0x7C140600, // 0019 CALL R5 3
+ 0x8C14034B, // 001A GETMET R5 R1 K75
+ 0x881C0102, // 001B GETMBR R7 R0 K2
+ 0x5820001E, // 001C LDCONST R8 K30
+ 0x7C140600, // 001D CALL R5 3
+ 0x8C14034B, // 001E GETMET R5 R1 K75
+ 0x881C0103, // 001F GETMBR R7 R0 K3
+ 0x5820001E, // 0020 LDCONST R8 K30
+ 0x7C140600, // 0021 CALL R5 3
+ 0x8C14034B, // 0022 GETMET R5 R1 K75
+ 0x881C0104, // 0023 GETMBR R7 R0 K4
+ 0x54220003, // 0024 LDINT R8 4
+ 0x7C140600, // 0025 CALL R5 3
+ 0x70020011, // 0026 JMP #0039
+ 0x8C14034B, // 0027 GETMET R5 R1 K75
+ 0x541E00BF, // 0028 LDINT R7 192
+ 0x88200106, // 0029 GETMBR R8 R0 K6
+ 0x001C0E08, // 002A ADD R7 R7 R8
+ 0x5820001D, // 002B LDCONST R8 K29
+ 0x7C140600, // 002C CALL R5 3
+ 0x8C14034B, // 002D GETMET R5 R1 K75
+ 0x881C0102, // 002E GETMBR R7 R0 K2
+ 0x5820001E, // 002F LDCONST R8 K30
+ 0x7C140600, // 0030 CALL R5 3
+ 0x8C14034B, // 0031 GETMET R5 R1 K75
+ 0x881C0103, // 0032 GETMBR R7 R0 K3
+ 0x5820001E, // 0033 LDCONST R8 K30
+ 0x7C140600, // 0034 CALL R5 3
+ 0x8C14034B, // 0035 GETMET R5 R1 K75
+ 0x881C0104, // 0036 GETMBR R7 R0 K4
+ 0x5820001E, // 0037 LDCONST R8 K30
+ 0x7C140600, // 0038 CALL R5 3
+ 0x70020049, // 0039 JMP #0084
+ 0x88140103, // 003A GETMBR R5 R0 K3
+ 0x5419FFFE, // 003B LDINT R6 -1
+ 0x1C140A06, // 003C EQ R5 R5 R6
+ 0x78160016, // 003D JMPF R5 #0055
+ 0x780E000A, // 003E JMPF R3 #004A
+ 0x8C14034B, // 003F GETMET R5 R1 K75
+ 0x541E005F, // 0040 LDINT R7 96
+ 0x88200106, // 0041 GETMBR R8 R0 K6
+ 0x001C0E08, // 0042 ADD R7 R7 R8
+ 0x5820001D, // 0043 LDCONST R8 K29
+ 0x7C140600, // 0044 CALL R5 3
+ 0x8C14034B, // 0045 GETMET R5 R1 K75
+ 0x881C0104, // 0046 GETMBR R7 R0 K4
+ 0x54220003, // 0047 LDINT R8 4
+ 0x7C140600, // 0048 CALL R5 3
+ 0x70020009, // 0049 JMP #0054
+ 0x8C14034B, // 004A GETMET R5 R1 K75
+ 0x541E003F, // 004B LDINT R7 64
+ 0x88200106, // 004C GETMBR R8 R0 K6
+ 0x001C0E08, // 004D ADD R7 R7 R8
+ 0x5820001D, // 004E LDCONST R8 K29
+ 0x7C140600, // 004F CALL R5 3
+ 0x8C14034B, // 0050 GETMET R5 R1 K75
+ 0x881C0104, // 0051 GETMBR R7 R0 K4
+ 0x5820001E, // 0052 LDCONST R8 K30
+ 0x7C140600, // 0053 CALL R5 3
+ 0x7002002E, // 0054 JMP #0084
+ 0x88140103, // 0055 GETMBR R5 R0 K3
+ 0x4C180000, // 0056 LDNIL R6
+ 0x20140A06, // 0057 NE R5 R5 R6
+ 0x78160016, // 0058 JMPF R5 #0070
+ 0x780E000A, // 0059 JMPF R3 #0065
+ 0x8C14034B, // 005A GETMET R5 R1 K75
+ 0x541E009F, // 005B LDINT R7 160
+ 0x88200106, // 005C GETMBR R8 R0 K6
+ 0x001C0E08, // 005D ADD R7 R7 R8
+ 0x5820001D, // 005E LDCONST R8 K29
+ 0x7C140600, // 005F CALL R5 3
+ 0x8C14034B, // 0060 GETMET R5 R1 K75
+ 0x881C0104, // 0061 GETMBR R7 R0 K4
+ 0x54220003, // 0062 LDINT R8 4
+ 0x7C140600, // 0063 CALL R5 3
+ 0x70020009, // 0064 JMP #006F
+ 0x8C14034B, // 0065 GETMET R5 R1 K75
+ 0x541E007F, // 0066 LDINT R7 128
+ 0x88200106, // 0067 GETMBR R8 R0 K6
+ 0x001C0E08, // 0068 ADD R7 R7 R8
+ 0x5820001D, // 0069 LDCONST R8 K29
+ 0x7C140600, // 006A CALL R5 3
+ 0x8C14034B, // 006B GETMET R5 R1 K75
+ 0x881C0104, // 006C GETMBR R7 R0 K4
+ 0x5820001E, // 006D LDCONST R8 K30
+ 0x7C140600, // 006E CALL R5 3
+ 0x70020013, // 006F JMP #0084
+ 0x88140105, // 0070 GETMBR R5 R0 K5
+ 0x4C180000, // 0071 LDNIL R6
+ 0x20140A06, // 0072 NE R5 R5 R6
+ 0x7816000A, // 0073 JMPF R5 #007F
+ 0x8C14034B, // 0074 GETMET R5 R1 K75
+ 0x541E001F, // 0075 LDINT R7 32
+ 0x88200106, // 0076 GETMBR R8 R0 K6
+ 0x001C0E08, // 0077 ADD R7 R7 R8
+ 0x5820001D, // 0078 LDCONST R8 K29
+ 0x7C140600, // 0079 CALL R5 3
+ 0x8C14034B, // 007A GETMET R5 R1 K75
+ 0x881C0105, // 007B GETMBR R7 R0 K5
+ 0x5820001D, // 007C LDCONST R8 K29
+ 0x7C140600, // 007D CALL R5 3
+ 0x70020004, // 007E JMP #0084
+ 0x8C14034B, // 007F GETMET R5 R1 K75
+ 0x881C0106, // 0080 GETMBR R7 R0 K6
+ 0x001E1407, // 0081 ADD R7 K10 R7
+ 0x5820001D, // 0082 LDCONST R8 K29
+ 0x7C140600, // 0083 CALL R5 3
+ 0x80000000, // 0084 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: sort
+********************************************************************/
+be_local_closure(class_Matter_TLV_item_sort, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 1, /* argc */
+ 12, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_TLV_item, /* shared constants */
+ be_str_weak(sort),
+ &be_const_str_solidified,
+ ( &(const binstruction[33]) { /* code */
+ 0x5804004C, // 0000 LDCONST R1 K76
+ 0x60080010, // 0001 GETGBL R2 G16
+ 0x600C000C, // 0002 GETGBL R3 G12
+ 0x5C100000, // 0003 MOVE R4 R0
+ 0x7C0C0200, // 0004 CALL R3 1
+ 0x040C071D, // 0005 SUB R3 R3 K29
+ 0x400E3A03, // 0006 CONNECT R3 K29 R3
+ 0x7C080200, // 0007 CALL R2 1
+ 0xA8020013, // 0008 EXBLK 0 #001D
+ 0x5C0C0400, // 0009 MOVE R3 R2
+ 0x7C0C0000, // 000A CALL R3 0
+ 0x94100003, // 000B GETIDX R4 R0 R3
+ 0x5C140600, // 000C MOVE R5 R3
+ 0x24180B0A, // 000D GT R6 R5 K10
+ 0x781A000B, // 000E JMPF R6 #001B
+ 0x04180B1D, // 000F SUB R6 R5 K29
+ 0x94180006, // 0010 GETIDX R6 R0 R6
+ 0x8C180D4D, // 0011 GETMET R6 R6 K77
+ 0x5C200800, // 0012 MOVE R8 R4
+ 0x7C180400, // 0013 CALL R6 2
+ 0x24180D0A, // 0014 GT R6 R6 K10
+ 0x781A0004, // 0015 JMPF R6 #001B
+ 0x04180B1D, // 0016 SUB R6 R5 K29
+ 0x94180006, // 0017 GETIDX R6 R0 R6
+ 0x98000A06, // 0018 SETIDX R0 R5 R6
+ 0x04140B1D, // 0019 SUB R5 R5 K29
+ 0x7001FFF1, // 001A JMP #000D
+ 0x98000A04, // 001B SETIDX R0 R5 R4
+ 0x7001FFEB, // 001C JMP #0009
+ 0x5808004E, // 001D LDCONST R2 K78
+ 0xAC080200, // 001E CATCH R2 1 0
+ 0xB0080000, // 001F RAISE 2 R0 R0
+ 0x80040000, // 0020 RET 1 R0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_TLV_item_init, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_TLV_item, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x80000000, // 0001 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: _cmp_gt
+********************************************************************/
+be_local_closure(class_Matter_TLV_item__cmp_gt, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_TLV_item, /* shared constants */
+ be_str_weak(_cmp_gt),
+ &be_const_str_solidified,
+ ( &(const binstruction[72]) { /* code */
+ 0x88080102, // 0000 GETMBR R2 R0 K2
+ 0x4C0C0000, // 0001 LDNIL R3
+ 0x20080403, // 0002 NE R2 R2 R3
+ 0x780A0012, // 0003 JMPF R2 #0017
+ 0x88080302, // 0004 GETMBR R2 R1 K2
+ 0x4C0C0000, // 0005 LDNIL R3
+ 0x1C080403, // 0006 EQ R2 R2 R3
+ 0x780A0000, // 0007 JMPF R2 #0009
+ 0x80063A00, // 0008 RET 1 K29
+ 0x88080102, // 0009 GETMBR R2 R0 K2
+ 0x880C0302, // 000A GETMBR R3 R1 K2
+ 0x24080403, // 000B GT R2 R2 R3
+ 0x780A0000, // 000C JMPF R2 #000E
+ 0x80063A00, // 000D RET 1 K29
+ 0x88080102, // 000E GETMBR R2 R0 K2
+ 0x880C0302, // 000F GETMBR R3 R1 K2
+ 0x1C080403, // 0010 EQ R2 R2 R3
+ 0x780A0004, // 0011 JMPF R2 #0017
+ 0x88080103, // 0012 GETMBR R2 R0 K3
+ 0x880C0303, // 0013 GETMBR R3 R1 K3
+ 0x24080403, // 0014 GT R2 R2 R3
+ 0x780A0000, // 0015 JMPF R2 #0017
+ 0x80063A00, // 0016 RET 1 K29
+ 0x88080103, // 0017 GETMBR R2 R0 K3
+ 0x540DFFFE, // 0018 LDINT R3 -1
+ 0x1C080403, // 0019 EQ R2 R2 R3
+ 0x780A0005, // 001A JMPF R2 #0021
+ 0x88080303, // 001B GETMBR R2 R1 K3
+ 0x4C0C0000, // 001C LDNIL R3
+ 0x1C080403, // 001D EQ R2 R2 R3
+ 0x780A0000, // 001E JMPF R2 #0020
+ 0x80063A00, // 001F RET 1 K29
+ 0x70020008, // 0020 JMP #002A
+ 0x88080103, // 0021 GETMBR R2 R0 K3
+ 0x4C0C0000, // 0022 LDNIL R3
+ 0x1C080403, // 0023 EQ R2 R2 R3
+ 0x780A0004, // 0024 JMPF R2 #002A
+ 0x88080303, // 0025 GETMBR R2 R1 K3
+ 0x540DFFFE, // 0026 LDINT R3 -1
+ 0x1C080403, // 0027 EQ R2 R2 R3
+ 0x780A0000, // 0028 JMPF R2 #002A
+ 0x80061400, // 0029 RET 1 K10
+ 0x88080104, // 002A GETMBR R2 R0 K4
+ 0x4C0C0000, // 002B LDNIL R3
+ 0x20080403, // 002C NE R2 R2 R3
+ 0x780A000A, // 002D JMPF R2 #0039
+ 0x88080304, // 002E GETMBR R2 R1 K4
+ 0x4C0C0000, // 002F LDNIL R3
+ 0x1C080403, // 0030 EQ R2 R2 R3
+ 0x780A0000, // 0031 JMPF R2 #0033
+ 0x80063A00, // 0032 RET 1 K29
+ 0x88080104, // 0033 GETMBR R2 R0 K4
+ 0x880C0304, // 0034 GETMBR R3 R1 K4
+ 0x24080403, // 0035 GT R2 R2 R3
+ 0x780A0000, // 0036 JMPF R2 #0038
+ 0x80063A00, // 0037 RET 1 K29
+ 0x80061400, // 0038 RET 1 K10
+ 0x88080105, // 0039 GETMBR R2 R0 K5
+ 0x4C0C0000, // 003A LDNIL R3
+ 0x20080403, // 003B NE R2 R2 R3
+ 0x780A0009, // 003C JMPF R2 #0047
+ 0x88080305, // 003D GETMBR R2 R1 K5
+ 0x4C0C0000, // 003E LDNIL R3
+ 0x1C080403, // 003F EQ R2 R2 R3
+ 0x780A0000, // 0040 JMPF R2 #0042
+ 0x80063A00, // 0041 RET 1 K29
+ 0x88080105, // 0042 GETMBR R2 R0 K5
+ 0x880C0305, // 0043 GETMBR R3 R1 K5
+ 0x24080403, // 0044 GT R2 R2 R3
+ 0x780A0000, // 0045 JMPF R2 #0047
+ 0x80063A00, // 0046 RET 1 K29
+ 0x80061400, // 0047 RET 1 K10
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: tlv2raw
+********************************************************************/
+be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_TLV_item, /* shared constants */
+ be_str_weak(tlv2raw),
+ &be_const_str_solidified,
+ ( &(const binstruction[404]) { /* code */
+ 0x88080109, // 0000 GETMBR R2 R0 K9
+ 0x4C0C0000, // 0001 LDNIL R3
+ 0x1C0C0203, // 0002 EQ R3 R1 R3
+ 0x780E0002, // 0003 JMPF R3 #0007
+ 0x600C0015, // 0004 GETGBL R3 G21
+ 0x7C0C0000, // 0005 CALL R3 0
+ 0x5C040600, // 0006 MOVE R1 R3
+ 0x880C0106, // 0007 GETMBR R3 R0 K6
+ 0x8810050B, // 0008 GETMBR R4 R2 K11
+ 0x1C0C0604, // 0009 EQ R3 R3 R4
+ 0x780E0002, // 000A JMPF R3 #000E
+ 0x880C0107, // 000B GETMBR R3 R0 K7
+ 0x400C0203, // 000C CONNECT R3 R1 R3
+ 0x80040200, // 000D RET 1 R1
+ 0x880C0106, // 000E GETMBR R3 R0 K6
+ 0x8810051F, // 000F GETMBR R4 R2 K31
+ 0x1C0C0604, // 0010 EQ R3 R3 R4
+ 0x740E0003, // 0011 JMPT R3 #0016
+ 0x880C0106, // 0012 GETMBR R3 R0 K6
+ 0x88100520, // 0013 GETMBR R4 R2 K32
+ 0x1C0C0604, // 0014 EQ R3 R3 R4
+ 0x780E000D, // 0015 JMPF R3 #0024
+ 0x600C0004, // 0016 GETGBL R3 G4
+ 0x88100107, // 0017 GETMBR R4 R0 K7
+ 0x7C0C0200, // 0018 CALL R3 1
+ 0x1C0C072E, // 0019 EQ R3 R3 K46
+ 0x780E0008, // 001A JMPF R3 #0024
+ 0x880C0106, // 001B GETMBR R3 R0 K6
+ 0x8810051F, // 001C GETMBR R4 R2 K31
+ 0x1C0C0604, // 001D EQ R3 R3 R4
+ 0x780E0002, // 001E JMPF R3 #0022
+ 0x880C050F, // 001F GETMBR R3 R2 K15
+ 0x90020C03, // 0020 SETMBR R0 K6 R3
+ 0x70020001, // 0021 JMP #0024
+ 0x880C0512, // 0022 GETMBR R3 R2 K18
+ 0x90020C03, // 0023 SETMBR R0 K6 R3
+ 0x880C0106, // 0024 GETMBR R3 R0 K6
+ 0x8810050C, // 0025 GETMBR R4 R2 K12
+ 0x1C0C0604, // 0026 EQ R3 R3 R4
+ 0x740E0003, // 0027 JMPT R3 #002C
+ 0x880C0106, // 0028 GETMBR R3 R0 K6
+ 0x8810050D, // 0029 GETMBR R4 R2 K13
+ 0x1C0C0604, // 002A EQ R3 R3 R4
+ 0x780E0008, // 002B JMPF R3 #0035
+ 0x600C0017, // 002C GETGBL R3 G23
+ 0x88100107, // 002D GETMBR R4 R0 K7
+ 0x7C0C0200, // 002E CALL R3 1
+ 0x780E0001, // 002F JMPF R3 #0032
+ 0x880C050D, // 0030 GETMBR R3 R2 K13
+ 0x70020000, // 0031 JMP #0033
+ 0x880C050C, // 0032 GETMBR R3 R2 K12
+ 0x90020C03, // 0033 SETMBR R0 K6 R3
+ 0x70020070, // 0034 JMP #00A6
+ 0x880C0106, // 0035 GETMBR R3 R0 K6
+ 0x8810050E, // 0036 GETMBR R4 R2 K14
+ 0x280C0604, // 0037 GE R3 R3 R4
+ 0x780E0018, // 0038 JMPF R3 #0052
+ 0x880C0106, // 0039 GETMBR R3 R0 K6
+ 0x8810050F, // 003A GETMBR R4 R2 K15
+ 0x180C0604, // 003B LE R3 R3 R4
+ 0x780E0014, // 003C JMPF R3 #0052
+ 0x600C0009, // 003D GETGBL R3 G9
+ 0x88100107, // 003E GETMBR R4 R0 K7
+ 0x7C0C0200, // 003F CALL R3 1
+ 0x5412007E, // 0040 LDINT R4 127
+ 0x18100604, // 0041 LE R4 R3 R4
+ 0x78120005, // 0042 JMPF R4 #0049
+ 0x5411FF7F, // 0043 LDINT R4 -128
+ 0x28100604, // 0044 GE R4 R3 R4
+ 0x78120002, // 0045 JMPF R4 #0049
+ 0x88100510, // 0046 GETMBR R4 R2 K16
+ 0x90020C04, // 0047 SETMBR R0 K6 R4
+ 0x70020007, // 0048 JMP #0051
+ 0x54127FFE, // 0049 LDINT R4 32767
+ 0x18100604, // 004A LE R4 R3 R4
+ 0x78120004, // 004B JMPF R4 #0051
+ 0x54117FFF, // 004C LDINT R4 -32768
+ 0x28100604, // 004D GE R4 R3 R4
+ 0x78120001, // 004E JMPF R4 #0051
+ 0x8810050E, // 004F GETMBR R4 R2 K14
+ 0x90020C04, // 0050 SETMBR R0 K6 R4
+ 0x70020053, // 0051 JMP #00A6
+ 0x880C0106, // 0052 GETMBR R3 R0 K6
+ 0x88100511, // 0053 GETMBR R4 R2 K17
+ 0x280C0604, // 0054 GE R3 R3 R4
+ 0x780E0016, // 0055 JMPF R3 #006D
+ 0x880C0106, // 0056 GETMBR R3 R0 K6
+ 0x88100512, // 0057 GETMBR R4 R2 K18
+ 0x180C0604, // 0058 LE R3 R3 R4
+ 0x780E0012, // 0059 JMPF R3 #006D
+ 0x600C0009, // 005A GETGBL R3 G9
+ 0x88100107, // 005B GETMBR R4 R0 K7
+ 0x7C0C0200, // 005C CALL R3 1
+ 0x541200FE, // 005D LDINT R4 255
+ 0x18100604, // 005E LE R4 R3 R4
+ 0x78120004, // 005F JMPF R4 #0065
+ 0x2810070A, // 0060 GE R4 R3 K10
+ 0x78120002, // 0061 JMPF R4 #0065
+ 0x88100513, // 0062 GETMBR R4 R2 K19
+ 0x90020C04, // 0063 SETMBR R0 K6 R4
+ 0x70020006, // 0064 JMP #006C
+ 0x5412FFFE, // 0065 LDINT R4 65535
+ 0x18100604, // 0066 LE R4 R3 R4
+ 0x78120003, // 0067 JMPF R4 #006C
+ 0x2810070A, // 0068 GE R4 R3 K10
+ 0x78120001, // 0069 JMPF R4 #006C
+ 0x88100511, // 006A GETMBR R4 R2 K17
+ 0x90020C04, // 006B SETMBR R0 K6 R4
+ 0x70020038, // 006C JMP #00A6
+ 0x880C0106, // 006D GETMBR R3 R0 K6
+ 0x88100514, // 006E GETMBR R4 R2 K20
+ 0x280C0604, // 006F GE R3 R3 R4
+ 0x780E0018, // 0070 JMPF R3 #008A
+ 0x880C0106, // 0071 GETMBR R3 R0 K6
+ 0x88100515, // 0072 GETMBR R4 R2 K21
+ 0x180C0604, // 0073 LE R3 R3 R4
+ 0x780E0014, // 0074 JMPF R3 #008A
+ 0x600C000C, // 0075 GETGBL R3 G12
+ 0x88100107, // 0076 GETMBR R4 R0 K7
+ 0x7C0C0200, // 0077 CALL R3 1
+ 0x541200FE, // 0078 LDINT R4 255
+ 0x180C0604, // 0079 LE R3 R3 R4
+ 0x780E0002, // 007A JMPF R3 #007E
+ 0x880C0514, // 007B GETMBR R3 R2 K20
+ 0x90020C03, // 007C SETMBR R0 K6 R3
+ 0x7002000A, // 007D JMP #0089
+ 0x600C000C, // 007E GETGBL R3 G12
+ 0x88100107, // 007F GETMBR R4 R0 K7
+ 0x7C0C0200, // 0080 CALL R3 1
+ 0x5412FFFE, // 0081 LDINT R4 65535
+ 0x180C0604, // 0082 LE R3 R3 R4
+ 0x780E0002, // 0083 JMPF R3 #0087
+ 0x880C0516, // 0084 GETMBR R3 R2 K22
+ 0x90020C03, // 0085 SETMBR R0 K6 R3
+ 0x70020001, // 0086 JMP #0089
+ 0x880C0517, // 0087 GETMBR R3 R2 K23
+ 0x90020C03, // 0088 SETMBR R0 K6 R3
+ 0x7002001B, // 0089 JMP #00A6
+ 0x880C0106, // 008A GETMBR R3 R0 K6
+ 0x88100518, // 008B GETMBR R4 R2 K24
+ 0x280C0604, // 008C GE R3 R3 R4
+ 0x780E0017, // 008D JMPF R3 #00A6
+ 0x880C0106, // 008E GETMBR R3 R0 K6
+ 0x88100519, // 008F GETMBR R4 R2 K25
+ 0x180C0604, // 0090 LE R3 R3 R4
+ 0x780E0013, // 0091 JMPF R3 #00A6
+ 0x600C000C, // 0092 GETGBL R3 G12
+ 0x88100107, // 0093 GETMBR R4 R0 K7
+ 0x7C0C0200, // 0094 CALL R3 1
+ 0x541200FE, // 0095 LDINT R4 255
+ 0x180C0604, // 0096 LE R3 R3 R4
+ 0x780E0002, // 0097 JMPF R3 #009B
+ 0x880C0518, // 0098 GETMBR R3 R2 K24
+ 0x90020C03, // 0099 SETMBR R0 K6 R3
+ 0x7002000A, // 009A JMP #00A6
+ 0x600C000C, // 009B GETGBL R3 G12
+ 0x88100107, // 009C GETMBR R4 R0 K7
+ 0x7C0C0200, // 009D CALL R3 1
+ 0x5412FFFE, // 009E LDINT R4 65535
+ 0x180C0604, // 009F LE R3 R3 R4
+ 0x780E0002, // 00A0 JMPF R3 #00A4
+ 0x880C051A, // 00A1 GETMBR R3 R2 K26
+ 0x90020C03, // 00A2 SETMBR R0 K6 R3
+ 0x70020001, // 00A3 JMP #00A6
+ 0x880C051B, // 00A4 GETMBR R3 R2 K27
+ 0x90020C03, // 00A5 SETMBR R0 K6 R3
+ 0x8C0C014F, // 00A6 GETMET R3 R0 K79
+ 0x5C140200, // 00A7 MOVE R5 R1
+ 0x7C0C0400, // 00A8 CALL R3 2
+ 0x880C0106, // 00A9 GETMBR R3 R0 K6
+ 0x88100510, // 00AA GETMBR R4 R2 K16
+ 0x1C0C0604, // 00AB EQ R3 R3 R4
+ 0x740E0003, // 00AC JMPT R3 #00B1
+ 0x880C0106, // 00AD GETMBR R3 R0 K6
+ 0x88100513, // 00AE GETMBR R4 R2 K19
+ 0x1C0C0604, // 00AF EQ R3 R3 R4
+ 0x780E0006, // 00B0 JMPF R3 #00B8
+ 0x8C0C034B, // 00B1 GETMET R3 R1 K75
+ 0x60140009, // 00B2 GETGBL R5 G9
+ 0x88180107, // 00B3 GETMBR R6 R0 K7
+ 0x7C140200, // 00B4 CALL R5 1
+ 0x5818001D, // 00B5 LDCONST R6 K29
+ 0x7C0C0600, // 00B6 CALL R3 3
+ 0x700200DA, // 00B7 JMP #0193
+ 0x880C0106, // 00B8 GETMBR R3 R0 K6
+ 0x8810050E, // 00B9 GETMBR R4 R2 K14
+ 0x1C0C0604, // 00BA EQ R3 R3 R4
+ 0x740E0003, // 00BB JMPT R3 #00C0
+ 0x880C0106, // 00BC GETMBR R3 R0 K6
+ 0x88100511, // 00BD GETMBR R4 R2 K17
+ 0x1C0C0604, // 00BE EQ R3 R3 R4
+ 0x780E0006, // 00BF JMPF R3 #00C7
+ 0x8C0C034B, // 00C0 GETMET R3 R1 K75
+ 0x60140009, // 00C1 GETGBL R5 G9
+ 0x88180107, // 00C2 GETMBR R6 R0 K7
+ 0x7C140200, // 00C3 CALL R5 1
+ 0x5818001E, // 00C4 LDCONST R6 K30
+ 0x7C0C0600, // 00C5 CALL R3 3
+ 0x700200CB, // 00C6 JMP #0193
+ 0x880C0106, // 00C7 GETMBR R3 R0 K6
+ 0x8810050F, // 00C8 GETMBR R4 R2 K15
+ 0x1C0C0604, // 00C9 EQ R3 R3 R4
+ 0x740E0003, // 00CA JMPT R3 #00CF
+ 0x880C0106, // 00CB GETMBR R3 R0 K6
+ 0x88100512, // 00CC GETMBR R4 R2 K18
+ 0x1C0C0604, // 00CD EQ R3 R3 R4
+ 0x780E0006, // 00CE JMPF R3 #00D6
+ 0x8C0C034B, // 00CF GETMET R3 R1 K75
+ 0x60140009, // 00D0 GETGBL R5 G9
+ 0x88180107, // 00D1 GETMBR R6 R0 K7
+ 0x7C140200, // 00D2 CALL R5 1
+ 0x541A0003, // 00D3 LDINT R6 4
+ 0x7C0C0600, // 00D4 CALL R3 3
+ 0x700200BC, // 00D5 JMP #0193
+ 0x880C0106, // 00D6 GETMBR R3 R0 K6
+ 0x8810051F, // 00D7 GETMBR R4 R2 K31
+ 0x1C0C0604, // 00D8 EQ R3 R3 R4
+ 0x740E0003, // 00D9 JMPT R3 #00DE
+ 0x880C0106, // 00DA GETMBR R3 R0 K6
+ 0x88100520, // 00DB GETMBR R4 R2 K32
+ 0x1C0C0604, // 00DC EQ R3 R3 R4
+ 0x780E002D, // 00DD JMPF R3 #010C
+ 0x880C0107, // 00DE GETMBR R3 R0 K7
+ 0x6010000F, // 00DF GETGBL R4 G15
+ 0x5C140600, // 00E0 MOVE R5 R3
+ 0x60180015, // 00E1 GETGBL R6 G21
+ 0x7C100400, // 00E2 CALL R4 2
+ 0x78120006, // 00E3 JMPF R4 #00EB
+ 0x8C100750, // 00E4 GETMET R4 R3 K80
+ 0x7C100200, // 00E5 CALL R4 1
+ 0x8C100951, // 00E6 GETMET R4 R4 K81
+ 0x541A0007, // 00E7 LDINT R6 8
+ 0x7C100400, // 00E8 CALL R4 2
+ 0x5C0C0800, // 00E9 MOVE R3 R4
+ 0x7002001E, // 00EA JMP #010A
+ 0x6010000F, // 00EB GETGBL R4 G15
+ 0x5C140600, // 00EC MOVE R5 R3
+ 0xB81A7200, // 00ED GETNGBL R6 K57
+ 0x7C100400, // 00EE CALL R4 2
+ 0x78120003, // 00EF JMPF R4 #00F4
+ 0x8C100752, // 00F0 GETMET R4 R3 K82
+ 0x7C100200, // 00F1 CALL R4 1
+ 0x5C0C0800, // 00F2 MOVE R3 R4
+ 0x70020015, // 00F3 JMP #010A
+ 0x88100106, // 00F4 GETMBR R4 R0 K6
+ 0x8814051F, // 00F5 GETMBR R5 R2 K31
+ 0x1C100805, // 00F6 EQ R4 R4 R5
+ 0x78120008, // 00F7 JMPF R4 #0101
+ 0xB8127200, // 00F8 GETNGBL R4 K57
+ 0x60140009, // 00F9 GETGBL R5 G9
+ 0x5C180600, // 00FA MOVE R6 R3
+ 0x7C140200, // 00FB CALL R5 1
+ 0x7C100200, // 00FC CALL R4 1
+ 0x8C100952, // 00FD GETMET R4 R4 K82
+ 0x7C100200, // 00FE CALL R4 1
+ 0x5C0C0800, // 00FF MOVE R3 R4
+ 0x70020008, // 0100 JMP #010A
+ 0xB8127200, // 0101 GETNGBL R4 K57
+ 0x8C100953, // 0102 GETMET R4 R4 K83
+ 0x60180009, // 0103 GETGBL R6 G9
+ 0x5C1C0600, // 0104 MOVE R7 R3
+ 0x7C180200, // 0105 CALL R6 1
+ 0x7C100400, // 0106 CALL R4 2
+ 0x8C100952, // 0107 GETMET R4 R4 K82
+ 0x7C100200, // 0108 CALL R4 1
+ 0x5C0C0800, // 0109 MOVE R3 R4
+ 0x40100203, // 010A CONNECT R4 R1 R3
+ 0x70020086, // 010B JMP #0193
+ 0x880C0106, // 010C GETMBR R3 R0 K6
+ 0x8810050C, // 010D GETMBR R4 R2 K12
+ 0x1C0C0604, // 010E EQ R3 R3 R4
+ 0x740E0003, // 010F JMPT R3 #0114
+ 0x880C0106, // 0110 GETMBR R3 R0 K6
+ 0x8810050D, // 0111 GETMBR R4 R2 K13
+ 0x1C0C0604, // 0112 EQ R3 R3 R4
+ 0x780E0000, // 0113 JMPF R3 #0115
+ 0x7002007D, // 0114 JMP #0193
+ 0x880C0106, // 0115 GETMBR R3 R0 K6
+ 0x88100521, // 0116 GETMBR R4 R2 K33
+ 0x1C0C0604, // 0117 EQ R3 R3 R4
+ 0x780E000D, // 0118 JMPF R3 #0127
+ 0x600C000C, // 0119 GETGBL R3 G12
+ 0x5C100200, // 011A MOVE R4 R1
+ 0x7C0C0200, // 011B CALL R3 1
+ 0x8C10034B, // 011C GETMET R4 R1 K75
+ 0x5818000A, // 011D LDCONST R6 K10
+ 0x541E0003, // 011E LDINT R7 4
+ 0x7C100600, // 011F CALL R4 3
+ 0x8C100354, // 0120 GETMET R4 R1 K84
+ 0x5C180600, // 0121 MOVE R6 R3
+ 0x601C000A, // 0122 GETGBL R7 G10
+ 0x88200107, // 0123 GETMBR R8 R0 K7
+ 0x7C1C0200, // 0124 CALL R7 1
+ 0x7C100600, // 0125 CALL R4 3
+ 0x7002006B, // 0126 JMP #0193
+ 0x880C0106, // 0127 GETMBR R3 R0 K6
+ 0x88100522, // 0128 GETMBR R4 R2 K34
+ 0x1C0C0604, // 0129 EQ R3 R3 R4
+ 0x780E0001, // 012A JMPF R3 #012D
+ 0xB0064724, // 012B RAISE 1 K35 K36
+ 0x70020065, // 012C JMP #0193
+ 0x880C0106, // 012D GETMBR R3 R0 K6
+ 0x88100518, // 012E GETMBR R4 R2 K24
+ 0x1C0C0604, // 012F EQ R3 R3 R4
+ 0x780E0015, // 0130 JMPF R3 #0147
+ 0x600C000C, // 0131 GETGBL R3 G12
+ 0x88100107, // 0132 GETMBR R4 R0 K7
+ 0x7C0C0200, // 0133 CALL R3 1
+ 0x541200FE, // 0134 LDINT R4 255
+ 0x240C0604, // 0135 GT R3 R3 R4
+ 0x780E0000, // 0136 JMPF R3 #0138
+ 0xB0064755, // 0137 RAISE 1 K35 K85
+ 0x8C0C034B, // 0138 GETMET R3 R1 K75
+ 0x6014000C, // 0139 GETGBL R5 G12
+ 0x88180107, // 013A GETMBR R6 R0 K7
+ 0x7C140200, // 013B CALL R5 1
+ 0x5818001D, // 013C LDCONST R6 K29
+ 0x7C0C0600, // 013D CALL R3 3
+ 0x600C0015, // 013E GETGBL R3 G21
+ 0x7C0C0000, // 013F CALL R3 0
+ 0x8C0C0756, // 0140 GETMET R3 R3 K86
+ 0x60140008, // 0141 GETGBL R5 G8
+ 0x88180107, // 0142 GETMBR R6 R0 K7
+ 0x7C140200, // 0143 CALL R5 1
+ 0x7C0C0400, // 0144 CALL R3 2
+ 0x400C0203, // 0145 CONNECT R3 R1 R3
+ 0x7002004B, // 0146 JMP #0193
+ 0x880C0106, // 0147 GETMBR R3 R0 K6
+ 0x8810051A, // 0148 GETMBR R4 R2 K26
+ 0x1C0C0604, // 0149 EQ R3 R3 R4
+ 0x780E0015, // 014A JMPF R3 #0161
+ 0x600C000C, // 014B GETGBL R3 G12
+ 0x88100107, // 014C GETMBR R4 R0 K7
+ 0x7C0C0200, // 014D CALL R3 1
+ 0x5412FFFE, // 014E LDINT R4 65535
+ 0x240C0604, // 014F GT R3 R3 R4
+ 0x780E0000, // 0150 JMPF R3 #0152
+ 0xB0064755, // 0151 RAISE 1 K35 K85
+ 0x8C0C034B, // 0152 GETMET R3 R1 K75
+ 0x6014000C, // 0153 GETGBL R5 G12
+ 0x88180107, // 0154 GETMBR R6 R0 K7
+ 0x7C140200, // 0155 CALL R5 1
+ 0x5818001E, // 0156 LDCONST R6 K30
+ 0x7C0C0600, // 0157 CALL R3 3
+ 0x600C0015, // 0158 GETGBL R3 G21
+ 0x7C0C0000, // 0159 CALL R3 0
+ 0x8C0C0757, // 015A GETMET R3 R3 K87
+ 0x60140008, // 015B GETGBL R5 G8
+ 0x88180107, // 015C GETMBR R6 R0 K7
+ 0x7C140200, // 015D CALL R5 1
+ 0x7C0C0400, // 015E CALL R3 2
+ 0x400C0203, // 015F CONNECT R3 R1 R3
+ 0x70020031, // 0160 JMP #0193
+ 0x880C0106, // 0161 GETMBR R3 R0 K6
+ 0x88100514, // 0162 GETMBR R4 R2 K20
+ 0x1C0C0604, // 0163 EQ R3 R3 R4
+ 0x780E000F, // 0164 JMPF R3 #0175
+ 0x600C000C, // 0165 GETGBL R3 G12
+ 0x88100107, // 0166 GETMBR R4 R0 K7
+ 0x7C0C0200, // 0167 CALL R3 1
+ 0x541200FE, // 0168 LDINT R4 255
+ 0x240C0604, // 0169 GT R3 R3 R4
+ 0x780E0000, // 016A JMPF R3 #016C
+ 0xB0064758, // 016B RAISE 1 K35 K88
+ 0x8C0C034B, // 016C GETMET R3 R1 K75
+ 0x6014000C, // 016D GETGBL R5 G12
+ 0x88180107, // 016E GETMBR R6 R0 K7
+ 0x7C140200, // 016F CALL R5 1
+ 0x5818001D, // 0170 LDCONST R6 K29
+ 0x7C0C0600, // 0171 CALL R3 3
+ 0x880C0107, // 0172 GETMBR R3 R0 K7
+ 0x400C0203, // 0173 CONNECT R3 R1 R3
+ 0x7002001D, // 0174 JMP #0193
+ 0x880C0106, // 0175 GETMBR R3 R0 K6
+ 0x88100516, // 0176 GETMBR R4 R2 K22
+ 0x1C0C0604, // 0177 EQ R3 R3 R4
+ 0x780E000F, // 0178 JMPF R3 #0189
+ 0x600C000C, // 0179 GETGBL R3 G12
+ 0x88100107, // 017A GETMBR R4 R0 K7
+ 0x7C0C0200, // 017B CALL R3 1
+ 0x5412FFFE, // 017C LDINT R4 65535
+ 0x240C0604, // 017D GT R3 R3 R4
+ 0x780E0000, // 017E JMPF R3 #0180
+ 0xB0064758, // 017F RAISE 1 K35 K88
+ 0x8C0C034B, // 0180 GETMET R3 R1 K75
+ 0x6014000C, // 0181 GETGBL R5 G12
+ 0x88180107, // 0182 GETMBR R6 R0 K7
+ 0x7C140200, // 0183 CALL R5 1
+ 0x5818001E, // 0184 LDCONST R6 K30
+ 0x7C0C0600, // 0185 CALL R3 3
+ 0x880C0107, // 0186 GETMBR R3 R0 K7
+ 0x400C0203, // 0187 CONNECT R3 R1 R3
+ 0x70020009, // 0188 JMP #0193
+ 0x880C0106, // 0189 GETMBR R3 R0 K6
+ 0x88100525, // 018A GETMBR R4 R2 K37
+ 0x1C0C0604, // 018B EQ R3 R3 R4
+ 0x780E0000, // 018C JMPF R3 #018E
+ 0x70020004, // 018D JMP #0193
+ 0x600C0008, // 018E GETGBL R3 G8
+ 0x88100106, // 018F GETMBR R4 R0 K6
+ 0x7C0C0200, // 0190 CALL R3 1
+ 0x000E4C03, // 0191 ADD R3 K38 R3
+ 0xB0064603, // 0192 RAISE 1 K35 R3
+ 0x80040200, // 0193 RET 1 R1
})
)
);
@@ -894,45 +1776,35 @@ be_local_closure(class_Matter_TLV_item_parse, /* name */
/********************************************************************
** Solidified function: _encode_tag_len
********************************************************************/
-extern const bclass be_class_Matter_TLV_item;
be_local_closure(class_Matter_TLV_item__encode_tag_len, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_item,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(tag_number),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(tag_vendor),
- /* K3 */ be_nested_str_weak(tag_profile),
- /* K4 */ be_const_int(3),
- /* K5 */ be_nested_str_weak(tag_sub),
- /* K6 */ be_const_int(2),
- /* K7 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_TLV_item, /* shared constants */
be_str_weak(_encode_tag_len),
&be_const_str_solidified,
( &(const binstruction[54]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040104, // 0000 GETMBR R1 R0 K4
0x4C080000, // 0001 LDNIL R2
0x20040202, // 0002 NE R1 R1 R2
0x78060001, // 0003 JMPF R1 #0006
- 0x88040100, // 0004 GETMBR R1 R0 K0
+ 0x88040104, // 0004 GETMBR R1 R0 K4
0x70020000, // 0005 JMP #0007
- 0x58040001, // 0006 LDCONST R1 K1
+ 0x5804000A, // 0006 LDCONST R1 K10
0x540AFFFF, // 0007 LDINT R2 65536
0x28080202, // 0008 GE R2 R1 R2
0x740A0002, // 0009 JMPT R2 #000D
- 0x14080301, // 000A LT R2 R1 K1
+ 0x1408030A, // 000A LT R2 R1 K10
0x740A0000, // 000B JMPT R2 #000D
0x50080001, // 000C LDBOOL R2 0 1
0x50080200, // 000D LDBOOL R2 1 0
- 0x580C0001, // 000E LDCONST R3 K1
+ 0x580C000A, // 000E LDCONST R3 K10
0x88100102, // 000F GETMBR R4 R0 K2
0x4C140000, // 0010 LDNIL R5
0x20100805, // 0011 NE R4 R4 R5
@@ -952,7 +1824,7 @@ be_local_closure(class_Matter_TLV_item__encode_tag_len, /* name */
0x54120004, // 001F LDINT R4 5
0x80040800, // 0020 RET 1 R4
0x70020000, // 0021 JMP #0023
- 0x80060800, // 0022 RET 1 K4
+ 0x80069000, // 0022 RET 1 K72
0x70020010, // 0023 JMP #0035
0x88100103, // 0024 GETMBR R4 R0 K3
0x4C140000, // 0025 LDNIL R5
@@ -962,15 +1834,15 @@ be_local_closure(class_Matter_TLV_item__encode_tag_len, /* name */
0x54120004, // 0029 LDINT R4 5
0x80040800, // 002A RET 1 R4
0x70020000, // 002B JMP #002D
- 0x80060800, // 002C RET 1 K4
+ 0x80069000, // 002C RET 1 K72
0x70020006, // 002D JMP #0035
0x88100105, // 002E GETMBR R4 R0 K5
0x4C140000, // 002F LDNIL R5
0x20100805, // 0030 NE R4 R4 R5
0x78120001, // 0031 JMPF R4 #0034
- 0x80060C00, // 0032 RET 1 K6
+ 0x80063C00, // 0032 RET 1 K30
0x70020000, // 0033 JMP #0035
- 0x80060E00, // 0034 RET 1 K7
+ 0x80063A00, // 0034 RET 1 K29
0x80000000, // 0035 RET 0
})
)
@@ -979,39 +1851,29 @@ be_local_closure(class_Matter_TLV_item__encode_tag_len, /* name */
/********************************************************************
-** Solidified function: set
+** Solidified function: set_contextspecific
********************************************************************/
-extern const bclass be_class_Matter_TLV_item;
-be_local_closure(class_Matter_TLV_item_set, /* name */
+be_local_closure(class_Matter_TLV_item_set_contextspecific, /* name */
be_nested_proto(
- 5, /* nstack */
- 3, /* argc */
- 2, /* varg */
+ 4, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_item,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(reset),
- /* K1 */ be_nested_str_weak(typ),
- /* K2 */ be_nested_str_weak(val),
- }),
- be_str_weak(set),
+ &be_ktab_class_Matter_TLV_item, /* shared constants */
+ be_str_weak(set_contextspecific),
&be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x8C0C0100, // 0000 GETMET R3 R0 K0
- 0x7C0C0200, // 0001 CALL R3 1
- 0x4C0C0000, // 0002 LDNIL R3
- 0x200C0403, // 0003 NE R3 R2 R3
- 0x740E0002, // 0004 JMPT R3 #0008
- 0x540E0013, // 0005 LDINT R3 20
- 0x1C0C0203, // 0006 EQ R3 R1 R3
- 0x780E0002, // 0007 JMPF R3 #000B
- 0x90020201, // 0008 SETMBR R0 K1 R1
- 0x90020402, // 0009 SETMBR R0 K2 R2
- 0x80040000, // 000A RET 1 R0
- 0x80000000, // 000B RET 0
+ ( &(const binstruction[ 7]) { /* code */
+ 0x8C08014A, // 0000 GETMET R2 R0 K74
+ 0x7C080200, // 0001 CALL R2 1
+ 0x60080009, // 0002 GETGBL R2 G9
+ 0x5C0C0200, // 0003 MOVE R3 R1
+ 0x7C080200, // 0004 CALL R2 1
+ 0x90020A02, // 0005 SETMBR R0 K5 R2
+ 0x80000000, // 0006 RET 0
})
)
);
@@ -1019,434 +1881,60 @@ be_local_closure(class_Matter_TLV_item_set, /* name */
/********************************************************************
-** Solidified function: tlv2raw
+** Solidified function: set_parent
********************************************************************/
-extern const bclass be_class_Matter_TLV_item;
-be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */
+be_local_closure(class_Matter_TLV_item_set_parent, /* name */
be_nested_proto(
- 9, /* nstack */
+ 2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_item,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[42]) { /* constants */
- /* K0 */ be_nested_str_weak(TLV),
- /* K1 */ be_nested_str_weak(typ),
- /* K2 */ be_nested_str_weak(RAW),
- /* K3 */ be_nested_str_weak(val),
- /* K4 */ be_nested_str_weak(BFALSE),
- /* K5 */ be_nested_str_weak(BTRUE),
- /* K6 */ be_nested_str_weak(I2),
- /* K7 */ be_nested_str_weak(I4),
- /* K8 */ be_nested_str_weak(I1),
- /* K9 */ be_nested_str_weak(U2),
- /* K10 */ be_nested_str_weak(U4),
- /* K11 */ be_const_int(0),
- /* K12 */ be_nested_str_weak(U1),
- /* K13 */ be_nested_str_weak(B1),
- /* K14 */ be_nested_str_weak(B8),
- /* K15 */ be_nested_str_weak(B2),
- /* K16 */ be_nested_str_weak(B4),
- /* K17 */ be_nested_str_weak(UTF1),
- /* K18 */ be_nested_str_weak(UTF8),
- /* K19 */ be_nested_str_weak(UTF2),
- /* K20 */ be_nested_str_weak(UTF4),
- /* K21 */ be_nested_str_weak(_encode_tag),
- /* K22 */ be_nested_str_weak(add),
- /* K23 */ be_const_int(1),
- /* K24 */ be_const_int(2),
- /* K25 */ be_nested_str_weak(I8),
- /* K26 */ be_nested_str_weak(U8),
- /* K27 */ be_nested_str_weak(copy),
- /* K28 */ be_nested_str_weak(resize),
- /* K29 */ be_nested_str_weak(int64),
- /* K30 */ be_nested_str_weak(tobytes),
- /* K31 */ be_nested_str_weak(FLOAT),
- /* K32 */ be_nested_str_weak(setfloat),
- /* K33 */ be_nested_str_weak(DOUBLE),
- /* K34 */ be_nested_str_weak(value_error),
- /* K35 */ be_nested_str_weak(Unsupported_X20type_X20TLV_X2EDOUBLE),
- /* K36 */ be_nested_str_weak(string_X20too_X20big),
- /* K37 */ be_nested_str_weak(fromstring),
- /* K38 */ be_nested_str_weak(frostring),
- /* K39 */ be_nested_str_weak(bytes_X20too_X20big),
- /* K40 */ be_nested_str_weak(NULL),
- /* K41 */ be_nested_str_weak(unsupported_X20type_X20),
- }),
- be_str_weak(tlv2raw),
+ &be_ktab_class_Matter_TLV_item, /* shared constants */
+ be_str_weak(set_parent),
&be_const_str_solidified,
- ( &(const binstruction[368]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ ( &(const binstruction[ 2]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x80000000, // 0001 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: create_TLV
+********************************************************************/
+be_local_closure(class_Matter_TLV_item_create_TLV, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 2, /* argc */
+ 12, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_TLV_item, /* shared constants */
+ be_str_weak(create_TLV),
+ &be_const_str_solidified,
+ ( &(const binstruction[13]) { /* code */
+ 0x5808004C, // 0000 LDCONST R2 K76
0x4C0C0000, // 0001 LDNIL R3
- 0x1C0C0203, // 0002 EQ R3 R1 R3
- 0x780E0002, // 0003 JMPF R3 #0007
- 0x600C0015, // 0004 GETGBL R3 G21
- 0x7C0C0000, // 0005 CALL R3 0
- 0x5C040600, // 0006 MOVE R1 R3
- 0x880C0101, // 0007 GETMBR R3 R0 K1
- 0x88100502, // 0008 GETMBR R4 R2 K2
- 0x1C0C0604, // 0009 EQ R3 R3 R4
- 0x780E0002, // 000A JMPF R3 #000E
- 0x880C0103, // 000B GETMBR R3 R0 K3
- 0x400C0203, // 000C CONNECT R3 R1 R3
- 0x80040200, // 000D RET 1 R1
- 0x880C0101, // 000E GETMBR R3 R0 K1
- 0x88100504, // 000F GETMBR R4 R2 K4
- 0x1C0C0604, // 0010 EQ R3 R3 R4
- 0x740E0003, // 0011 JMPT R3 #0016
- 0x880C0101, // 0012 GETMBR R3 R0 K1
- 0x88100505, // 0013 GETMBR R4 R2 K5
- 0x1C0C0604, // 0014 EQ R3 R3 R4
- 0x780E0008, // 0015 JMPF R3 #001F
- 0x600C0017, // 0016 GETGBL R3 G23
- 0x88100103, // 0017 GETMBR R4 R0 K3
- 0x7C0C0200, // 0018 CALL R3 1
- 0x780E0001, // 0019 JMPF R3 #001C
- 0x880C0505, // 001A GETMBR R3 R2 K5
- 0x70020000, // 001B JMP #001D
- 0x880C0504, // 001C GETMBR R3 R2 K4
- 0x90020203, // 001D SETMBR R0 K1 R3
- 0x70020070, // 001E JMP #0090
- 0x880C0101, // 001F GETMBR R3 R0 K1
- 0x88100506, // 0020 GETMBR R4 R2 K6
- 0x280C0604, // 0021 GE R3 R3 R4
- 0x780E0018, // 0022 JMPF R3 #003C
- 0x880C0101, // 0023 GETMBR R3 R0 K1
- 0x88100507, // 0024 GETMBR R4 R2 K7
- 0x180C0604, // 0025 LE R3 R3 R4
- 0x780E0014, // 0026 JMPF R3 #003C
- 0x600C0009, // 0027 GETGBL R3 G9
- 0x88100103, // 0028 GETMBR R4 R0 K3
- 0x7C0C0200, // 0029 CALL R3 1
- 0x5412007E, // 002A LDINT R4 127
- 0x18100604, // 002B LE R4 R3 R4
- 0x78120005, // 002C JMPF R4 #0033
- 0x5411FF7F, // 002D LDINT R4 -128
- 0x28100604, // 002E GE R4 R3 R4
- 0x78120002, // 002F JMPF R4 #0033
- 0x88100508, // 0030 GETMBR R4 R2 K8
- 0x90020204, // 0031 SETMBR R0 K1 R4
- 0x70020007, // 0032 JMP #003B
- 0x54127FFE, // 0033 LDINT R4 32767
- 0x18100604, // 0034 LE R4 R3 R4
- 0x78120004, // 0035 JMPF R4 #003B
- 0x54117FFF, // 0036 LDINT R4 -32768
- 0x28100604, // 0037 GE R4 R3 R4
- 0x78120001, // 0038 JMPF R4 #003B
- 0x88100506, // 0039 GETMBR R4 R2 K6
- 0x90020204, // 003A SETMBR R0 K1 R4
- 0x70020053, // 003B JMP #0090
- 0x880C0101, // 003C GETMBR R3 R0 K1
- 0x88100509, // 003D GETMBR R4 R2 K9
- 0x280C0604, // 003E GE R3 R3 R4
- 0x780E0016, // 003F JMPF R3 #0057
- 0x880C0101, // 0040 GETMBR R3 R0 K1
- 0x8810050A, // 0041 GETMBR R4 R2 K10
- 0x180C0604, // 0042 LE R3 R3 R4
- 0x780E0012, // 0043 JMPF R3 #0057
- 0x600C0009, // 0044 GETGBL R3 G9
- 0x88100103, // 0045 GETMBR R4 R0 K3
- 0x7C0C0200, // 0046 CALL R3 1
- 0x541200FE, // 0047 LDINT R4 255
- 0x18100604, // 0048 LE R4 R3 R4
- 0x78120004, // 0049 JMPF R4 #004F
- 0x2810070B, // 004A GE R4 R3 K11
- 0x78120002, // 004B JMPF R4 #004F
- 0x8810050C, // 004C GETMBR R4 R2 K12
- 0x90020204, // 004D SETMBR R0 K1 R4
- 0x70020006, // 004E JMP #0056
- 0x5412FFFE, // 004F LDINT R4 65535
- 0x18100604, // 0050 LE R4 R3 R4
- 0x78120003, // 0051 JMPF R4 #0056
- 0x2810070B, // 0052 GE R4 R3 K11
- 0x78120001, // 0053 JMPF R4 #0056
- 0x88100509, // 0054 GETMBR R4 R2 K9
- 0x90020204, // 0055 SETMBR R0 K1 R4
- 0x70020038, // 0056 JMP #0090
- 0x880C0101, // 0057 GETMBR R3 R0 K1
- 0x8810050D, // 0058 GETMBR R4 R2 K13
- 0x280C0604, // 0059 GE R3 R3 R4
- 0x780E0018, // 005A JMPF R3 #0074
- 0x880C0101, // 005B GETMBR R3 R0 K1
- 0x8810050E, // 005C GETMBR R4 R2 K14
- 0x180C0604, // 005D LE R3 R3 R4
- 0x780E0014, // 005E JMPF R3 #0074
- 0x600C000C, // 005F GETGBL R3 G12
- 0x88100103, // 0060 GETMBR R4 R0 K3
- 0x7C0C0200, // 0061 CALL R3 1
- 0x541200FE, // 0062 LDINT R4 255
- 0x180C0604, // 0063 LE R3 R3 R4
- 0x780E0002, // 0064 JMPF R3 #0068
- 0x880C050D, // 0065 GETMBR R3 R2 K13
- 0x90020203, // 0066 SETMBR R0 K1 R3
- 0x7002000A, // 0067 JMP #0073
- 0x600C000C, // 0068 GETGBL R3 G12
- 0x88100103, // 0069 GETMBR R4 R0 K3
- 0x7C0C0200, // 006A CALL R3 1
- 0x5412FFFE, // 006B LDINT R4 65535
- 0x180C0604, // 006C LE R3 R3 R4
- 0x780E0002, // 006D JMPF R3 #0071
- 0x880C050F, // 006E GETMBR R3 R2 K15
- 0x90020203, // 006F SETMBR R0 K1 R3
- 0x70020001, // 0070 JMP #0073
- 0x880C0510, // 0071 GETMBR R3 R2 K16
- 0x90020203, // 0072 SETMBR R0 K1 R3
- 0x7002001B, // 0073 JMP #0090
- 0x880C0101, // 0074 GETMBR R3 R0 K1
- 0x88100511, // 0075 GETMBR R4 R2 K17
- 0x280C0604, // 0076 GE R3 R3 R4
- 0x780E0017, // 0077 JMPF R3 #0090
- 0x880C0101, // 0078 GETMBR R3 R0 K1
- 0x88100512, // 0079 GETMBR R4 R2 K18
- 0x180C0604, // 007A LE R3 R3 R4
- 0x780E0013, // 007B JMPF R3 #0090
- 0x600C000C, // 007C GETGBL R3 G12
- 0x88100103, // 007D GETMBR R4 R0 K3
- 0x7C0C0200, // 007E CALL R3 1
- 0x541200FE, // 007F LDINT R4 255
- 0x180C0604, // 0080 LE R3 R3 R4
- 0x780E0002, // 0081 JMPF R3 #0085
- 0x880C0511, // 0082 GETMBR R3 R2 K17
- 0x90020203, // 0083 SETMBR R0 K1 R3
- 0x7002000A, // 0084 JMP #0090
- 0x600C000C, // 0085 GETGBL R3 G12
- 0x88100103, // 0086 GETMBR R4 R0 K3
- 0x7C0C0200, // 0087 CALL R3 1
- 0x5412FFFE, // 0088 LDINT R4 65535
- 0x180C0604, // 0089 LE R3 R3 R4
- 0x780E0002, // 008A JMPF R3 #008E
- 0x880C0513, // 008B GETMBR R3 R2 K19
- 0x90020203, // 008C SETMBR R0 K1 R3
- 0x70020001, // 008D JMP #0090
- 0x880C0514, // 008E GETMBR R3 R2 K20
- 0x90020203, // 008F SETMBR R0 K1 R3
- 0x8C0C0115, // 0090 GETMET R3 R0 K21
- 0x5C140200, // 0091 MOVE R5 R1
- 0x7C0C0400, // 0092 CALL R3 2
- 0x880C0101, // 0093 GETMBR R3 R0 K1
- 0x88100508, // 0094 GETMBR R4 R2 K8
- 0x1C0C0604, // 0095 EQ R3 R3 R4
- 0x740E0003, // 0096 JMPT R3 #009B
- 0x880C0101, // 0097 GETMBR R3 R0 K1
- 0x8810050C, // 0098 GETMBR R4 R2 K12
- 0x1C0C0604, // 0099 EQ R3 R3 R4
- 0x780E0006, // 009A JMPF R3 #00A2
- 0x8C0C0316, // 009B GETMET R3 R1 K22
- 0x60140009, // 009C GETGBL R5 G9
- 0x88180103, // 009D GETMBR R6 R0 K3
- 0x7C140200, // 009E CALL R5 1
- 0x58180017, // 009F LDCONST R6 K23
- 0x7C0C0600, // 00A0 CALL R3 3
- 0x700200CC, // 00A1 JMP #016F
- 0x880C0101, // 00A2 GETMBR R3 R0 K1
- 0x88100506, // 00A3 GETMBR R4 R2 K6
- 0x1C0C0604, // 00A4 EQ R3 R3 R4
- 0x740E0003, // 00A5 JMPT R3 #00AA
- 0x880C0101, // 00A6 GETMBR R3 R0 K1
- 0x88100509, // 00A7 GETMBR R4 R2 K9
- 0x1C0C0604, // 00A8 EQ R3 R3 R4
- 0x780E0006, // 00A9 JMPF R3 #00B1
- 0x8C0C0316, // 00AA GETMET R3 R1 K22
- 0x60140009, // 00AB GETGBL R5 G9
- 0x88180103, // 00AC GETMBR R6 R0 K3
- 0x7C140200, // 00AD CALL R5 1
- 0x58180018, // 00AE LDCONST R6 K24
- 0x7C0C0600, // 00AF CALL R3 3
- 0x700200BD, // 00B0 JMP #016F
- 0x880C0101, // 00B1 GETMBR R3 R0 K1
- 0x88100507, // 00B2 GETMBR R4 R2 K7
- 0x1C0C0604, // 00B3 EQ R3 R3 R4
- 0x740E0003, // 00B4 JMPT R3 #00B9
- 0x880C0101, // 00B5 GETMBR R3 R0 K1
- 0x8810050A, // 00B6 GETMBR R4 R2 K10
- 0x1C0C0604, // 00B7 EQ R3 R3 R4
- 0x780E0006, // 00B8 JMPF R3 #00C0
- 0x8C0C0316, // 00B9 GETMET R3 R1 K22
- 0x60140009, // 00BA GETGBL R5 G9
- 0x88180103, // 00BB GETMBR R6 R0 K3
- 0x7C140200, // 00BC CALL R5 1
- 0x541A0003, // 00BD LDINT R6 4
- 0x7C0C0600, // 00BE CALL R3 3
- 0x700200AE, // 00BF JMP #016F
- 0x880C0101, // 00C0 GETMBR R3 R0 K1
- 0x88100519, // 00C1 GETMBR R4 R2 K25
- 0x1C0C0604, // 00C2 EQ R3 R3 R4
- 0x740E0003, // 00C3 JMPT R3 #00C8
- 0x880C0101, // 00C4 GETMBR R3 R0 K1
- 0x8810051A, // 00C5 GETMBR R4 R2 K26
- 0x1C0C0604, // 00C6 EQ R3 R3 R4
- 0x780E001F, // 00C7 JMPF R3 #00E8
- 0x880C0103, // 00C8 GETMBR R3 R0 K3
- 0x6010000F, // 00C9 GETGBL R4 G15
- 0x5C140600, // 00CA MOVE R5 R3
- 0x60180015, // 00CB GETGBL R6 G21
- 0x7C100400, // 00CC CALL R4 2
- 0x78120006, // 00CD JMPF R4 #00D5
- 0x8C10071B, // 00CE GETMET R4 R3 K27
- 0x7C100200, // 00CF CALL R4 1
- 0x8C10091C, // 00D0 GETMET R4 R4 K28
- 0x541A0007, // 00D1 LDINT R6 8
- 0x7C100400, // 00D2 CALL R4 2
- 0x5C0C0800, // 00D3 MOVE R3 R4
- 0x70020010, // 00D4 JMP #00E6
- 0x6010000F, // 00D5 GETGBL R4 G15
- 0x5C140600, // 00D6 MOVE R5 R3
- 0xB81A3A00, // 00D7 GETNGBL R6 K29
- 0x7C100400, // 00D8 CALL R4 2
- 0x78120003, // 00D9 JMPF R4 #00DE
- 0x8C10071E, // 00DA GETMET R4 R3 K30
- 0x7C100200, // 00DB CALL R4 1
- 0x5C0C0800, // 00DC MOVE R3 R4
- 0x70020007, // 00DD JMP #00E6
- 0xB8123A00, // 00DE GETNGBL R4 K29
- 0x60140009, // 00DF GETGBL R5 G9
- 0x5C180600, // 00E0 MOVE R6 R3
- 0x7C140200, // 00E1 CALL R5 1
- 0x7C100200, // 00E2 CALL R4 1
- 0x8C10091E, // 00E3 GETMET R4 R4 K30
- 0x7C100200, // 00E4 CALL R4 1
- 0x5C0C0800, // 00E5 MOVE R3 R4
- 0x40100203, // 00E6 CONNECT R4 R1 R3
- 0x70020086, // 00E7 JMP #016F
- 0x880C0101, // 00E8 GETMBR R3 R0 K1
- 0x88100504, // 00E9 GETMBR R4 R2 K4
- 0x1C0C0604, // 00EA EQ R3 R3 R4
- 0x740E0003, // 00EB JMPT R3 #00F0
- 0x880C0101, // 00EC GETMBR R3 R0 K1
- 0x88100505, // 00ED GETMBR R4 R2 K5
- 0x1C0C0604, // 00EE EQ R3 R3 R4
- 0x780E0000, // 00EF JMPF R3 #00F1
- 0x7002007D, // 00F0 JMP #016F
- 0x880C0101, // 00F1 GETMBR R3 R0 K1
- 0x8810051F, // 00F2 GETMBR R4 R2 K31
- 0x1C0C0604, // 00F3 EQ R3 R3 R4
- 0x780E000D, // 00F4 JMPF R3 #0103
- 0x600C000C, // 00F5 GETGBL R3 G12
- 0x5C100200, // 00F6 MOVE R4 R1
- 0x7C0C0200, // 00F7 CALL R3 1
- 0x8C100316, // 00F8 GETMET R4 R1 K22
- 0x5818000B, // 00F9 LDCONST R6 K11
- 0x541E0003, // 00FA LDINT R7 4
- 0x7C100600, // 00FB CALL R4 3
- 0x8C100320, // 00FC GETMET R4 R1 K32
- 0x5C180600, // 00FD MOVE R6 R3
- 0x601C000A, // 00FE GETGBL R7 G10
- 0x88200103, // 00FF GETMBR R8 R0 K3
- 0x7C1C0200, // 0100 CALL R7 1
- 0x7C100600, // 0101 CALL R4 3
- 0x7002006B, // 0102 JMP #016F
- 0x880C0101, // 0103 GETMBR R3 R0 K1
- 0x88100521, // 0104 GETMBR R4 R2 K33
- 0x1C0C0604, // 0105 EQ R3 R3 R4
- 0x780E0001, // 0106 JMPF R3 #0109
- 0xB0064523, // 0107 RAISE 1 K34 K35
- 0x70020065, // 0108 JMP #016F
- 0x880C0101, // 0109 GETMBR R3 R0 K1
- 0x88100511, // 010A GETMBR R4 R2 K17
- 0x1C0C0604, // 010B EQ R3 R3 R4
- 0x780E0015, // 010C JMPF R3 #0123
- 0x600C000C, // 010D GETGBL R3 G12
- 0x88100103, // 010E GETMBR R4 R0 K3
- 0x7C0C0200, // 010F CALL R3 1
- 0x541200FE, // 0110 LDINT R4 255
- 0x240C0604, // 0111 GT R3 R3 R4
- 0x780E0000, // 0112 JMPF R3 #0114
- 0xB0064524, // 0113 RAISE 1 K34 K36
- 0x8C0C0316, // 0114 GETMET R3 R1 K22
- 0x6014000C, // 0115 GETGBL R5 G12
- 0x88180103, // 0116 GETMBR R6 R0 K3
- 0x7C140200, // 0117 CALL R5 1
- 0x58180017, // 0118 LDCONST R6 K23
- 0x7C0C0600, // 0119 CALL R3 3
- 0x600C0015, // 011A GETGBL R3 G21
- 0x7C0C0000, // 011B CALL R3 0
- 0x8C0C0725, // 011C GETMET R3 R3 K37
- 0x60140008, // 011D GETGBL R5 G8
- 0x88180103, // 011E GETMBR R6 R0 K3
- 0x7C140200, // 011F CALL R5 1
- 0x7C0C0400, // 0120 CALL R3 2
- 0x400C0203, // 0121 CONNECT R3 R1 R3
- 0x7002004B, // 0122 JMP #016F
- 0x880C0101, // 0123 GETMBR R3 R0 K1
- 0x88100513, // 0124 GETMBR R4 R2 K19
- 0x1C0C0604, // 0125 EQ R3 R3 R4
- 0x780E0015, // 0126 JMPF R3 #013D
- 0x600C000C, // 0127 GETGBL R3 G12
- 0x88100103, // 0128 GETMBR R4 R0 K3
- 0x7C0C0200, // 0129 CALL R3 1
- 0x5412FFFE, // 012A LDINT R4 65535
- 0x240C0604, // 012B GT R3 R3 R4
- 0x780E0000, // 012C JMPF R3 #012E
- 0xB0064524, // 012D RAISE 1 K34 K36
- 0x8C0C0316, // 012E GETMET R3 R1 K22
- 0x6014000C, // 012F GETGBL R5 G12
- 0x88180103, // 0130 GETMBR R6 R0 K3
- 0x7C140200, // 0131 CALL R5 1
- 0x58180018, // 0132 LDCONST R6 K24
- 0x7C0C0600, // 0133 CALL R3 3
- 0x600C0015, // 0134 GETGBL R3 G21
- 0x7C0C0000, // 0135 CALL R3 0
- 0x8C0C0726, // 0136 GETMET R3 R3 K38
- 0x60140008, // 0137 GETGBL R5 G8
- 0x88180103, // 0138 GETMBR R6 R0 K3
- 0x7C140200, // 0139 CALL R5 1
- 0x7C0C0400, // 013A CALL R3 2
- 0x400C0203, // 013B CONNECT R3 R1 R3
- 0x70020031, // 013C JMP #016F
- 0x880C0101, // 013D GETMBR R3 R0 K1
- 0x8810050D, // 013E GETMBR R4 R2 K13
- 0x1C0C0604, // 013F EQ R3 R3 R4
- 0x780E000F, // 0140 JMPF R3 #0151
- 0x600C000C, // 0141 GETGBL R3 G12
- 0x88100103, // 0142 GETMBR R4 R0 K3
- 0x7C0C0200, // 0143 CALL R3 1
- 0x541200FE, // 0144 LDINT R4 255
- 0x240C0604, // 0145 GT R3 R3 R4
- 0x780E0000, // 0146 JMPF R3 #0148
- 0xB0064527, // 0147 RAISE 1 K34 K39
- 0x8C0C0316, // 0148 GETMET R3 R1 K22
- 0x6014000C, // 0149 GETGBL R5 G12
- 0x88180103, // 014A GETMBR R6 R0 K3
- 0x7C140200, // 014B CALL R5 1
- 0x58180017, // 014C LDCONST R6 K23
- 0x7C0C0600, // 014D CALL R3 3
- 0x880C0103, // 014E GETMBR R3 R0 K3
- 0x400C0203, // 014F CONNECT R3 R1 R3
- 0x7002001D, // 0150 JMP #016F
- 0x880C0101, // 0151 GETMBR R3 R0 K1
- 0x8810050F, // 0152 GETMBR R4 R2 K15
- 0x1C0C0604, // 0153 EQ R3 R3 R4
- 0x780E000F, // 0154 JMPF R3 #0165
- 0x600C000C, // 0155 GETGBL R3 G12
- 0x88100103, // 0156 GETMBR R4 R0 K3
- 0x7C0C0200, // 0157 CALL R3 1
- 0x5412FFFE, // 0158 LDINT R4 65535
- 0x240C0604, // 0159 GT R3 R3 R4
- 0x780E0000, // 015A JMPF R3 #015C
- 0xB0064527, // 015B RAISE 1 K34 K39
- 0x8C0C0316, // 015C GETMET R3 R1 K22
- 0x6014000C, // 015D GETGBL R5 G12
- 0x88180103, // 015E GETMBR R6 R0 K3
- 0x7C140200, // 015F CALL R5 1
- 0x58180018, // 0160 LDCONST R6 K24
- 0x7C0C0600, // 0161 CALL R3 3
- 0x880C0103, // 0162 GETMBR R3 R0 K3
- 0x400C0203, // 0163 CONNECT R3 R1 R3
- 0x70020009, // 0164 JMP #016F
- 0x880C0101, // 0165 GETMBR R3 R0 K1
- 0x88100528, // 0166 GETMBR R4 R2 K40
- 0x1C0C0604, // 0167 EQ R3 R3 R4
- 0x780E0000, // 0168 JMPF R3 #016A
- 0x70020004, // 0169 JMP #016F
- 0x600C0008, // 016A GETGBL R3 G8
- 0x88100101, // 016B GETMBR R4 R0 K1
- 0x7C0C0200, // 016C CALL R3 1
- 0x000E5203, // 016D ADD R3 K41 R3
- 0xB0064403, // 016E RAISE 1 K34 R3
- 0x80040200, // 016F RET 1 R1
+ 0x200C0203, // 0002 NE R3 R1 R3
+ 0x740E0002, // 0003 JMPT R3 #0007
+ 0x540E0013, // 0004 LDINT R3 20
+ 0x1C0C0003, // 0005 EQ R3 R0 R3
+ 0x780E0004, // 0006 JMPF R3 #000C
+ 0x5C0C0400, // 0007 MOVE R3 R2
+ 0x7C0C0000, // 0008 CALL R3 0
+ 0x900E0C00, // 0009 SETMBR R3 K6 R0
+ 0x900E0E01, // 000A SETMBR R3 K7 R1
+ 0x80040600, // 000B RET 1 R3
+ 0x80000000, // 000C RET 0
})
)
);
@@ -1456,24 +1944,21 @@ be_local_closure(class_Matter_TLV_item_tlv2raw, /* name */
/********************************************************************
** Solidified function: set_anonymoustag
********************************************************************/
-extern const bclass be_class_Matter_TLV_item;
be_local_closure(class_Matter_TLV_item_set_anonymoustag, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_item,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(set_fulltag),
- }),
+ &be_ktab_class_Matter_TLV_item, /* shared constants */
be_str_weak(set_anonymoustag),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C04014A, // 0000 GETMET R1 R0 K74
0x7C040200, // 0001 CALL R1 1
0x80000000, // 0002 RET 0
})
@@ -1482,625 +1967,119 @@ be_local_closure(class_Matter_TLV_item_set_anonymoustag, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: _cmp_gt
-********************************************************************/
-extern const bclass be_class_Matter_TLV_item;
-be_local_closure(class_Matter_TLV_item__cmp_gt, /* name */
- be_nested_proto(
- 4, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_TLV_item,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(tag_vendor),
- /* K1 */ be_const_int(1),
- /* K2 */ be_nested_str_weak(tag_profile),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(tag_number),
- /* K5 */ be_nested_str_weak(tag_sub),
- }),
- be_str_weak(_cmp_gt),
- &be_const_str_solidified,
- ( &(const binstruction[72]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x4C0C0000, // 0001 LDNIL R3
- 0x20080403, // 0002 NE R2 R2 R3
- 0x780A0012, // 0003 JMPF R2 #0017
- 0x88080300, // 0004 GETMBR R2 R1 K0
- 0x4C0C0000, // 0005 LDNIL R3
- 0x1C080403, // 0006 EQ R2 R2 R3
- 0x780A0000, // 0007 JMPF R2 #0009
- 0x80060200, // 0008 RET 1 K1
- 0x88080100, // 0009 GETMBR R2 R0 K0
- 0x880C0300, // 000A GETMBR R3 R1 K0
- 0x24080403, // 000B GT R2 R2 R3
- 0x780A0000, // 000C JMPF R2 #000E
- 0x80060200, // 000D RET 1 K1
- 0x88080100, // 000E GETMBR R2 R0 K0
- 0x880C0300, // 000F GETMBR R3 R1 K0
- 0x1C080403, // 0010 EQ R2 R2 R3
- 0x780A0004, // 0011 JMPF R2 #0017
- 0x88080102, // 0012 GETMBR R2 R0 K2
- 0x880C0302, // 0013 GETMBR R3 R1 K2
- 0x24080403, // 0014 GT R2 R2 R3
- 0x780A0000, // 0015 JMPF R2 #0017
- 0x80060200, // 0016 RET 1 K1
- 0x88080102, // 0017 GETMBR R2 R0 K2
- 0x540DFFFE, // 0018 LDINT R3 -1
- 0x1C080403, // 0019 EQ R2 R2 R3
- 0x780A0005, // 001A JMPF R2 #0021
- 0x88080302, // 001B GETMBR R2 R1 K2
- 0x4C0C0000, // 001C LDNIL R3
- 0x1C080403, // 001D EQ R2 R2 R3
- 0x780A0000, // 001E JMPF R2 #0020
- 0x80060200, // 001F RET 1 K1
- 0x70020008, // 0020 JMP #002A
- 0x88080102, // 0021 GETMBR R2 R0 K2
- 0x4C0C0000, // 0022 LDNIL R3
- 0x1C080403, // 0023 EQ R2 R2 R3
- 0x780A0004, // 0024 JMPF R2 #002A
- 0x88080302, // 0025 GETMBR R2 R1 K2
- 0x540DFFFE, // 0026 LDINT R3 -1
- 0x1C080403, // 0027 EQ R2 R2 R3
- 0x780A0000, // 0028 JMPF R2 #002A
- 0x80060600, // 0029 RET 1 K3
- 0x88080104, // 002A GETMBR R2 R0 K4
- 0x4C0C0000, // 002B LDNIL R3
- 0x20080403, // 002C NE R2 R2 R3
- 0x780A000A, // 002D JMPF R2 #0039
- 0x88080304, // 002E GETMBR R2 R1 K4
- 0x4C0C0000, // 002F LDNIL R3
- 0x1C080403, // 0030 EQ R2 R2 R3
- 0x780A0000, // 0031 JMPF R2 #0033
- 0x80060200, // 0032 RET 1 K1
- 0x88080104, // 0033 GETMBR R2 R0 K4
- 0x880C0304, // 0034 GETMBR R3 R1 K4
- 0x24080403, // 0035 GT R2 R2 R3
- 0x780A0000, // 0036 JMPF R2 #0038
- 0x80060200, // 0037 RET 1 K1
- 0x80060600, // 0038 RET 1 K3
- 0x88080105, // 0039 GETMBR R2 R0 K5
- 0x4C0C0000, // 003A LDNIL R3
- 0x20080403, // 003B NE R2 R2 R3
- 0x780A0009, // 003C JMPF R2 #0047
- 0x88080305, // 003D GETMBR R2 R1 K5
- 0x4C0C0000, // 003E LDNIL R3
- 0x1C080403, // 003F EQ R2 R2 R3
- 0x780A0000, // 0040 JMPF R2 #0042
- 0x80060200, // 0041 RET 1 K1
- 0x88080105, // 0042 GETMBR R2 R0 K5
- 0x880C0305, // 0043 GETMBR R3 R1 K5
- 0x24080403, // 0044 GT R2 R2 R3
- 0x780A0000, // 0045 JMPF R2 #0047
- 0x80060200, // 0046 RET 1 K1
- 0x80060600, // 0047 RET 1 K3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: _encode_tag
-********************************************************************/
-extern const bclass be_class_Matter_TLV_item;
-be_local_closure(class_Matter_TLV_item__encode_tag, /* name */
- be_nested_proto(
- 9, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_TLV_item,
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(tag_number),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(tag_vendor),
- /* K3 */ be_nested_str_weak(add),
- /* K4 */ be_nested_str_weak(typ),
- /* K5 */ be_const_int(1),
- /* K6 */ be_const_int(2),
- /* K7 */ be_nested_str_weak(tag_profile),
- /* K8 */ be_nested_str_weak(tag_sub),
- }),
- be_str_weak(_encode_tag),
- &be_const_str_solidified,
- ( &(const binstruction[133]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x4C0C0000, // 0001 LDNIL R3
- 0x20080403, // 0002 NE R2 R2 R3
- 0x780A0001, // 0003 JMPF R2 #0006
- 0x88080100, // 0004 GETMBR R2 R0 K0
- 0x70020000, // 0005 JMP #0007
- 0x58080001, // 0006 LDCONST R2 K1
- 0x540EFFFF, // 0007 LDINT R3 65536
- 0x280C0403, // 0008 GE R3 R2 R3
- 0x740E0002, // 0009 JMPT R3 #000D
- 0x140C0501, // 000A LT R3 R2 K1
- 0x740E0000, // 000B JMPT R3 #000D
- 0x500C0001, // 000C LDBOOL R3 0 1
- 0x500C0200, // 000D LDBOOL R3 1 0
- 0x58100001, // 000E LDCONST R4 K1
- 0x88140102, // 000F GETMBR R5 R0 K2
- 0x4C180000, // 0010 LDNIL R6
- 0x20140A06, // 0011 NE R5 R5 R6
- 0x78160026, // 0012 JMPF R5 #003A
- 0x780E0012, // 0013 JMPF R3 #0027
- 0x8C140303, // 0014 GETMET R5 R1 K3
- 0x541E00DF, // 0015 LDINT R7 224
- 0x88200104, // 0016 GETMBR R8 R0 K4
- 0x001C0E08, // 0017 ADD R7 R7 R8
- 0x58200005, // 0018 LDCONST R8 K5
- 0x7C140600, // 0019 CALL R5 3
- 0x8C140303, // 001A GETMET R5 R1 K3
- 0x881C0102, // 001B GETMBR R7 R0 K2
- 0x58200006, // 001C LDCONST R8 K6
- 0x7C140600, // 001D CALL R5 3
- 0x8C140303, // 001E GETMET R5 R1 K3
- 0x881C0107, // 001F GETMBR R7 R0 K7
- 0x58200006, // 0020 LDCONST R8 K6
- 0x7C140600, // 0021 CALL R5 3
- 0x8C140303, // 0022 GETMET R5 R1 K3
- 0x881C0100, // 0023 GETMBR R7 R0 K0
- 0x54220003, // 0024 LDINT R8 4
- 0x7C140600, // 0025 CALL R5 3
- 0x70020011, // 0026 JMP #0039
- 0x8C140303, // 0027 GETMET R5 R1 K3
- 0x541E00BF, // 0028 LDINT R7 192
- 0x88200104, // 0029 GETMBR R8 R0 K4
- 0x001C0E08, // 002A ADD R7 R7 R8
- 0x58200005, // 002B LDCONST R8 K5
- 0x7C140600, // 002C CALL R5 3
- 0x8C140303, // 002D GETMET R5 R1 K3
- 0x881C0102, // 002E GETMBR R7 R0 K2
- 0x58200006, // 002F LDCONST R8 K6
- 0x7C140600, // 0030 CALL R5 3
- 0x8C140303, // 0031 GETMET R5 R1 K3
- 0x881C0107, // 0032 GETMBR R7 R0 K7
- 0x58200006, // 0033 LDCONST R8 K6
- 0x7C140600, // 0034 CALL R5 3
- 0x8C140303, // 0035 GETMET R5 R1 K3
- 0x881C0100, // 0036 GETMBR R7 R0 K0
- 0x58200006, // 0037 LDCONST R8 K6
- 0x7C140600, // 0038 CALL R5 3
- 0x70020049, // 0039 JMP #0084
- 0x88140107, // 003A GETMBR R5 R0 K7
- 0x5419FFFE, // 003B LDINT R6 -1
- 0x1C140A06, // 003C EQ R5 R5 R6
- 0x78160016, // 003D JMPF R5 #0055
- 0x780E000A, // 003E JMPF R3 #004A
- 0x8C140303, // 003F GETMET R5 R1 K3
- 0x541E005F, // 0040 LDINT R7 96
- 0x88200104, // 0041 GETMBR R8 R0 K4
- 0x001C0E08, // 0042 ADD R7 R7 R8
- 0x58200005, // 0043 LDCONST R8 K5
- 0x7C140600, // 0044 CALL R5 3
- 0x8C140303, // 0045 GETMET R5 R1 K3
- 0x881C0100, // 0046 GETMBR R7 R0 K0
- 0x54220003, // 0047 LDINT R8 4
- 0x7C140600, // 0048 CALL R5 3
- 0x70020009, // 0049 JMP #0054
- 0x8C140303, // 004A GETMET R5 R1 K3
- 0x541E003F, // 004B LDINT R7 64
- 0x88200104, // 004C GETMBR R8 R0 K4
- 0x001C0E08, // 004D ADD R7 R7 R8
- 0x58200005, // 004E LDCONST R8 K5
- 0x7C140600, // 004F CALL R5 3
- 0x8C140303, // 0050 GETMET R5 R1 K3
- 0x881C0100, // 0051 GETMBR R7 R0 K0
- 0x58200006, // 0052 LDCONST R8 K6
- 0x7C140600, // 0053 CALL R5 3
- 0x7002002E, // 0054 JMP #0084
- 0x88140107, // 0055 GETMBR R5 R0 K7
- 0x4C180000, // 0056 LDNIL R6
- 0x20140A06, // 0057 NE R5 R5 R6
- 0x78160016, // 0058 JMPF R5 #0070
- 0x780E000A, // 0059 JMPF R3 #0065
- 0x8C140303, // 005A GETMET R5 R1 K3
- 0x541E009F, // 005B LDINT R7 160
- 0x88200104, // 005C GETMBR R8 R0 K4
- 0x001C0E08, // 005D ADD R7 R7 R8
- 0x58200005, // 005E LDCONST R8 K5
- 0x7C140600, // 005F CALL R5 3
- 0x8C140303, // 0060 GETMET R5 R1 K3
- 0x881C0100, // 0061 GETMBR R7 R0 K0
- 0x54220003, // 0062 LDINT R8 4
- 0x7C140600, // 0063 CALL R5 3
- 0x70020009, // 0064 JMP #006F
- 0x8C140303, // 0065 GETMET R5 R1 K3
- 0x541E007F, // 0066 LDINT R7 128
- 0x88200104, // 0067 GETMBR R8 R0 K4
- 0x001C0E08, // 0068 ADD R7 R7 R8
- 0x58200005, // 0069 LDCONST R8 K5
- 0x7C140600, // 006A CALL R5 3
- 0x8C140303, // 006B GETMET R5 R1 K3
- 0x881C0100, // 006C GETMBR R7 R0 K0
- 0x58200006, // 006D LDCONST R8 K6
- 0x7C140600, // 006E CALL R5 3
- 0x70020013, // 006F JMP #0084
- 0x88140108, // 0070 GETMBR R5 R0 K8
- 0x4C180000, // 0071 LDNIL R6
- 0x20140A06, // 0072 NE R5 R5 R6
- 0x7816000A, // 0073 JMPF R5 #007F
- 0x8C140303, // 0074 GETMET R5 R1 K3
- 0x541E001F, // 0075 LDINT R7 32
- 0x88200104, // 0076 GETMBR R8 R0 K4
- 0x001C0E08, // 0077 ADD R7 R7 R8
- 0x58200005, // 0078 LDCONST R8 K5
- 0x7C140600, // 0079 CALL R5 3
- 0x8C140303, // 007A GETMET R5 R1 K3
- 0x881C0108, // 007B GETMBR R7 R0 K8
- 0x58200005, // 007C LDCONST R8 K5
- 0x7C140600, // 007D CALL R5 3
- 0x70020004, // 007E JMP #0084
- 0x8C140303, // 007F GETMET R5 R1 K3
- 0x881C0104, // 0080 GETMBR R7 R0 K4
- 0x001E0207, // 0081 ADD R7 K1 R7
- 0x58200005, // 0082 LDCONST R8 K5
- 0x7C140600, // 0083 CALL R5 3
- 0x80000000, // 0084 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: tostring
-********************************************************************/
-extern const bclass be_class_Matter_TLV_item;
-be_local_closure(class_Matter_TLV_item_tostring, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_TLV_item,
- 1, /* has constants */
- ( &(const bvalue[34]) { /* constants */
- /* K0 */ be_nested_str_weak(),
- /* K1 */ be_nested_str_weak(tag_profile),
- /* K2 */ be_nested_str_weak(Matter_X3A_X3A),
- /* K3 */ be_nested_str_weak(tag_number),
- /* K4 */ be_nested_str_weak(0x_X2508X_X20),
- /* K5 */ be_nested_str_weak(tag_vendor),
- /* K6 */ be_nested_str_weak(0x_X2504X_X3A_X3A),
- /* K7 */ be_nested_str_weak(0x_X2504X_X3A),
- /* K8 */ be_nested_str_weak(tag_sub),
- /* K9 */ be_nested_str_weak(_X25i_X20),
- /* K10 */ be_const_int(0),
- /* K11 */ be_nested_str_weak(_X3D_X20),
- /* K12 */ be_nested_str_weak(val),
- /* K13 */ be_nested_str_weak(int),
- /* K14 */ be_nested_str_weak(_X25i),
- /* K15 */ be_nested_str_weak(typ),
- /* K16 */ be_nested_str_weak(TLV),
- /* K17 */ be_nested_str_weak(U1),
- /* K18 */ be_nested_str_weak(U8),
- /* K19 */ be_nested_str_weak(U),
- /* K20 */ be_nested_str_weak(bool),
- /* K21 */ be_nested_str_weak(true),
- /* K22 */ be_nested_str_weak(false),
- /* K23 */ be_nested_str_weak(null),
- /* K24 */ be_nested_str_weak(real),
- /* K25 */ be_nested_str_weak(_X25g),
- /* K26 */ be_nested_str_weak(string),
- /* K27 */ be_nested_str_weak(_X22_X25s_X22),
- /* K28 */ be_nested_str_weak(int64),
- /* K29 */ be_nested_str_weak(tostring),
- /* K30 */ be_nested_str_weak(instance),
- /* K31 */ be_nested_str_weak(_X25s),
- /* K32 */ be_nested_str_weak(tohex),
- /* K33 */ be_nested_str_weak(_X20),
- }),
- be_str_weak(tostring),
- &be_const_str_solidified,
- ( &(const binstruction[167]) { /* code */
- 0x58080000, // 0000 LDCONST R2 K0
- 0xA802009C, // 0001 EXBLK 0 #009F
- 0x500C0200, // 0002 LDBOOL R3 1 0
- 0x200C0203, // 0003 NE R3 R1 R3
- 0x780E0038, // 0004 JMPF R3 #003E
- 0x880C0101, // 0005 GETMBR R3 R0 K1
- 0x5411FFFE, // 0006 LDINT R4 -1
- 0x1C0C0604, // 0007 EQ R3 R3 R4
- 0x780E000A, // 0008 JMPF R3 #0014
- 0x00080502, // 0009 ADD R2 R2 K2
- 0x880C0103, // 000A GETMBR R3 R0 K3
- 0x4C100000, // 000B LDNIL R4
- 0x200C0604, // 000C NE R3 R3 R4
- 0x780E0004, // 000D JMPF R3 #0013
- 0x600C0018, // 000E GETGBL R3 G24
- 0x58100004, // 000F LDCONST R4 K4
- 0x88140103, // 0010 GETMBR R5 R0 K3
- 0x7C0C0400, // 0011 CALL R3 2
- 0x00080403, // 0012 ADD R2 R2 R3
- 0x70020023, // 0013 JMP #0038
- 0x880C0105, // 0014 GETMBR R3 R0 K5
- 0x4C100000, // 0015 LDNIL R4
- 0x200C0604, // 0016 NE R3 R3 R4
- 0x780E0004, // 0017 JMPF R3 #001D
- 0x600C0018, // 0018 GETGBL R3 G24
- 0x58100006, // 0019 LDCONST R4 K6
- 0x88140105, // 001A GETMBR R5 R0 K5
- 0x7C0C0400, // 001B CALL R3 2
- 0x00080403, // 001C ADD R2 R2 R3
- 0x880C0101, // 001D GETMBR R3 R0 K1
- 0x4C100000, // 001E LDNIL R4
- 0x200C0604, // 001F NE R3 R3 R4
- 0x780E0004, // 0020 JMPF R3 #0026
- 0x600C0018, // 0021 GETGBL R3 G24
- 0x58100007, // 0022 LDCONST R4 K7
- 0x88140101, // 0023 GETMBR R5 R0 K1
- 0x7C0C0400, // 0024 CALL R3 2
- 0x00080403, // 0025 ADD R2 R2 R3
- 0x880C0103, // 0026 GETMBR R3 R0 K3
- 0x4C100000, // 0027 LDNIL R4
- 0x200C0604, // 0028 NE R3 R3 R4
- 0x780E0004, // 0029 JMPF R3 #002F
- 0x600C0018, // 002A GETGBL R3 G24
- 0x58100004, // 002B LDCONST R4 K4
- 0x88140103, // 002C GETMBR R5 R0 K3
- 0x7C0C0400, // 002D CALL R3 2
- 0x00080403, // 002E ADD R2 R2 R3
- 0x880C0108, // 002F GETMBR R3 R0 K8
- 0x4C100000, // 0030 LDNIL R4
- 0x200C0604, // 0031 NE R3 R3 R4
- 0x780E0004, // 0032 JMPF R3 #0038
- 0x600C0018, // 0033 GETGBL R3 G24
- 0x58100009, // 0034 LDCONST R4 K9
- 0x88140108, // 0035 GETMBR R5 R0 K8
- 0x7C0C0400, // 0036 CALL R3 2
- 0x00080403, // 0037 ADD R2 R2 R3
- 0x600C000C, // 0038 GETGBL R3 G12
- 0x5C100400, // 0039 MOVE R4 R2
- 0x7C0C0200, // 003A CALL R3 1
- 0x240C070A, // 003B GT R3 R3 K10
- 0x780E0000, // 003C JMPF R3 #003E
- 0x0008050B, // 003D ADD R2 R2 K11
- 0x600C0004, // 003E GETGBL R3 G4
- 0x8810010C, // 003F GETMBR R4 R0 K12
- 0x7C0C0200, // 0040 CALL R3 1
- 0x1C0C070D, // 0041 EQ R3 R3 K13
- 0x780E0010, // 0042 JMPF R3 #0054
- 0x600C0018, // 0043 GETGBL R3 G24
- 0x5810000E, // 0044 LDCONST R4 K14
- 0x8814010C, // 0045 GETMBR R5 R0 K12
- 0x7C0C0400, // 0046 CALL R3 2
- 0x00080403, // 0047 ADD R2 R2 R3
- 0x880C010F, // 0048 GETMBR R3 R0 K15
- 0x88100110, // 0049 GETMBR R4 R0 K16
- 0x88100911, // 004A GETMBR R4 R4 K17
- 0x280C0604, // 004B GE R3 R3 R4
- 0x780E0005, // 004C JMPF R3 #0053
- 0x880C010F, // 004D GETMBR R3 R0 K15
- 0x88100110, // 004E GETMBR R4 R0 K16
- 0x88100912, // 004F GETMBR R4 R4 K18
- 0x180C0604, // 0050 LE R3 R3 R4
- 0x780E0000, // 0051 JMPF R3 #0053
- 0x00080513, // 0052 ADD R2 R2 K19
- 0x70020048, // 0053 JMP #009D
- 0x600C0004, // 0054 GETGBL R3 G4
- 0x8810010C, // 0055 GETMBR R4 R0 K12
- 0x7C0C0200, // 0056 CALL R3 1
- 0x1C0C0714, // 0057 EQ R3 R3 K20
- 0x780E0006, // 0058 JMPF R3 #0060
- 0x880C010C, // 0059 GETMBR R3 R0 K12
- 0x780E0001, // 005A JMPF R3 #005D
- 0x580C0015, // 005B LDCONST R3 K21
- 0x70020000, // 005C JMP #005E
- 0x580C0016, // 005D LDCONST R3 K22
- 0x00080403, // 005E ADD R2 R2 R3
- 0x7002003C, // 005F JMP #009D
- 0x880C010C, // 0060 GETMBR R3 R0 K12
- 0x4C100000, // 0061 LDNIL R4
- 0x1C0C0604, // 0062 EQ R3 R3 R4
- 0x780E0001, // 0063 JMPF R3 #0066
- 0x00080517, // 0064 ADD R2 R2 K23
- 0x70020036, // 0065 JMP #009D
- 0x600C0004, // 0066 GETGBL R3 G4
- 0x8810010C, // 0067 GETMBR R4 R0 K12
- 0x7C0C0200, // 0068 CALL R3 1
- 0x1C0C0718, // 0069 EQ R3 R3 K24
- 0x780E0005, // 006A JMPF R3 #0071
- 0x600C0018, // 006B GETGBL R3 G24
- 0x58100019, // 006C LDCONST R4 K25
- 0x8814010C, // 006D GETMBR R5 R0 K12
- 0x7C0C0400, // 006E CALL R3 2
- 0x00080403, // 006F ADD R2 R2 R3
- 0x7002002B, // 0070 JMP #009D
- 0x600C0004, // 0071 GETGBL R3 G4
- 0x8810010C, // 0072 GETMBR R4 R0 K12
- 0x7C0C0200, // 0073 CALL R3 1
- 0x1C0C071A, // 0074 EQ R3 R3 K26
- 0x780E0005, // 0075 JMPF R3 #007C
- 0x600C0018, // 0076 GETGBL R3 G24
- 0x5810001B, // 0077 LDCONST R4 K27
- 0x8814010C, // 0078 GETMBR R5 R0 K12
- 0x7C0C0400, // 0079 CALL R3 2
- 0x00080403, // 007A ADD R2 R2 R3
- 0x70020020, // 007B JMP #009D
- 0x600C000F, // 007C GETGBL R3 G15
- 0x8810010C, // 007D GETMBR R4 R0 K12
- 0xB8163800, // 007E GETNGBL R5 K28
- 0x7C0C0400, // 007F CALL R3 2
- 0x780E000F, // 0080 JMPF R3 #0091
- 0x880C010C, // 0081 GETMBR R3 R0 K12
- 0x8C0C071D, // 0082 GETMET R3 R3 K29
- 0x7C0C0200, // 0083 CALL R3 1
- 0x00080403, // 0084 ADD R2 R2 R3
- 0x880C010F, // 0085 GETMBR R3 R0 K15
- 0x88100110, // 0086 GETMBR R4 R0 K16
- 0x88100911, // 0087 GETMBR R4 R4 K17
- 0x280C0604, // 0088 GE R3 R3 R4
- 0x780E0005, // 0089 JMPF R3 #0090
- 0x880C010F, // 008A GETMBR R3 R0 K15
- 0x88100110, // 008B GETMBR R4 R0 K16
- 0x88100912, // 008C GETMBR R4 R4 K18
- 0x180C0604, // 008D LE R3 R3 R4
- 0x780E0000, // 008E JMPF R3 #0090
- 0x00080513, // 008F ADD R2 R2 K19
- 0x7002000B, // 0090 JMP #009D
- 0x600C0004, // 0091 GETGBL R3 G4
- 0x8810010C, // 0092 GETMBR R4 R0 K12
- 0x7C0C0200, // 0093 CALL R3 1
- 0x1C0C071E, // 0094 EQ R3 R3 K30
- 0x780E0006, // 0095 JMPF R3 #009D
- 0x600C0018, // 0096 GETGBL R3 G24
- 0x5810001F, // 0097 LDCONST R4 K31
- 0x8814010C, // 0098 GETMBR R5 R0 K12
- 0x8C140B20, // 0099 GETMET R5 R5 K32
- 0x7C140200, // 009A CALL R5 1
- 0x7C0C0400, // 009B CALL R3 2
- 0x00080403, // 009C ADD R2 R2 R3
- 0xA8040001, // 009D EXBLK 1 1
- 0x70020006, // 009E JMP #00A6
- 0xAC0C0002, // 009F CATCH R3 0 2
- 0x70020003, // 00A0 JMP #00A5
- 0x00140721, // 00A1 ADD R5 R3 K33
- 0x00140A04, // 00A2 ADD R5 R5 R4
- 0x80040A00, // 00A3 RET 1 R5
- 0x70020000, // 00A4 JMP #00A6
- 0xB0080000, // 00A5 RAISE 2 R0 R0
- 0x80040400, // 00A6 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_commonprofile
-********************************************************************/
-extern const bclass be_class_Matter_TLV_item;
-be_local_closure(class_Matter_TLV_item_set_commonprofile, /* name */
- be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_TLV_item,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(set_fulltag),
- }),
- be_str_weak(set_commonprofile),
- &be_const_str_solidified,
- ( &(const binstruction[ 6]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x4C0C0000, // 0001 LDNIL R3
- 0x5411FFFE, // 0002 LDINT R4 -1
- 0x4C140000, // 0003 LDNIL R5
- 0x7C040800, // 0004 CALL R1 4
- 0x80000000, // 0005 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_TLV_item;
-be_local_closure(class_Matter_TLV_item_init, /* name */
- be_nested_proto(
- 2, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_TLV_item,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(parent),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x80000000, // 0001 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified class: Matter_TLV_item
********************************************************************/
be_local_class(Matter_TLV_item,
8,
NULL,
- be_nested_map(31,
+ be_nested_map(32,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(is_array, 17), be_const_bool(0) },
- { be_const_key_weak(init, -1), be_const_closure(class_Matter_TLV_item_init_closure) },
- { be_const_key_weak(set_parent, -1), be_const_closure(class_Matter_TLV_item_set_parent_closure) },
- { be_const_key_weak(set_fulltag, -1), be_const_closure(class_Matter_TLV_item_set_fulltag_closure) },
- { be_const_key_weak(typ, -1), be_const_var(6) },
- { be_const_key_weak(parse, 30), be_const_closure(class_Matter_TLV_item_parse_closure) },
- { be_const_key_weak(parent, 22), be_const_var(0) },
- { be_const_key_weak(to_str_val, -1), be_const_closure(class_Matter_TLV_item_to_str_val_closure) },
- { be_const_key_weak(encode_len, 4), be_const_closure(class_Matter_TLV_item_encode_len_closure) },
- { be_const_key_weak(TLV, 20), be_const_class(be_class_Matter_TLV) },
- { be_const_key_weak(reset, 0), be_const_closure(class_Matter_TLV_item_reset_closure) },
- { be_const_key_weak(tag_profile, -1), be_const_var(3) },
- { be_const_key_weak(create_TLV, -1), be_const_static_closure(class_Matter_TLV_item_create_TLV_closure) },
- { be_const_key_weak(tag_sub, -1), be_const_var(5) },
- { be_const_key_weak(tag_vendor, -1), be_const_var(2) },
- { be_const_key_weak(tostring, -1), be_const_closure(class_Matter_TLV_item_tostring_closure) },
- { be_const_key_weak(val, 5), be_const_var(7) },
- { be_const_key_weak(_encode_tag, -1), be_const_closure(class_Matter_TLV_item__encode_tag_closure) },
- { be_const_key_weak(_cmp_gt, -1), be_const_closure(class_Matter_TLV_item__cmp_gt_closure) },
- { be_const_key_weak(_encode_tag_len, 25), be_const_closure(class_Matter_TLV_item__encode_tag_len_closure) },
- { be_const_key_weak(is_struct, -1), be_const_bool(0) },
- { be_const_key_weak(tlv2raw, -1), be_const_closure(class_Matter_TLV_item_tlv2raw_closure) },
- { be_const_key_weak(sort, -1), be_const_static_closure(class_Matter_TLV_item_sort_closure) },
- { be_const_key_weak(is_list, -1), be_const_bool(0) },
- { be_const_key_weak(to_TLV, 18), be_const_closure(class_Matter_TLV_item_to_TLV_closure) },
+ { be_const_key_weak(reset, -1), be_const_closure(class_Matter_TLV_item_reset_closure) },
+ { be_const_key_weak(set_or_nil, -1), be_const_closure(class_Matter_TLV_item_set_or_nil_closure) },
+ { be_const_key_weak(set_anonymoustag, 30), be_const_closure(class_Matter_TLV_item_set_anonymoustag_closure) },
{ be_const_key_weak(set, -1), be_const_closure(class_Matter_TLV_item_set_closure) },
- { be_const_key_weak(set_anonymoustag, 15), be_const_closure(class_Matter_TLV_item_set_anonymoustag_closure) },
+ { be_const_key_weak(create_TLV, -1), be_const_static_closure(class_Matter_TLV_item_create_TLV_closure) },
+ { be_const_key_weak(tostring, 22), be_const_closure(class_Matter_TLV_item_tostring_closure) },
+ { be_const_key_weak(tag_sub, -1), be_const_var(5) },
+ { be_const_key_weak(is_array, -1), be_const_bool(0) },
+ { be_const_key_weak(to_str_val, 4), be_const_closure(class_Matter_TLV_item_to_str_val_closure) },
+ { be_const_key_weak(parent, -1), be_const_var(0) },
+ { be_const_key_weak(is_list, -1), be_const_bool(0) },
+ { be_const_key_weak(is_struct, -1), be_const_bool(0) },
+ { be_const_key_weak(parse, -1), be_const_closure(class_Matter_TLV_item_parse_closure) },
+ { be_const_key_weak(set_parent, -1), be_const_closure(class_Matter_TLV_item_set_parent_closure) },
{ be_const_key_weak(set_commonprofile, -1), be_const_closure(class_Matter_TLV_item_set_commonprofile_closure) },
+ { be_const_key_weak(_encode_tag, -1), be_const_closure(class_Matter_TLV_item__encode_tag_closure) },
+ { be_const_key_weak(TLV, -1), be_const_class(be_class_Matter_TLV) },
+ { be_const_key_weak(sort, 25), be_const_static_closure(class_Matter_TLV_item_sort_closure) },
+ { be_const_key_weak(tag_vendor, -1), be_const_var(2) },
+ { be_const_key_weak(init, -1), be_const_closure(class_Matter_TLV_item_init_closure) },
+ { be_const_key_weak(_cmp_gt, -1), be_const_closure(class_Matter_TLV_item__cmp_gt_closure) },
{ be_const_key_weak(tag_number, -1), be_const_var(4) },
- { be_const_key_weak(next_idx, 1), be_const_var(1) },
+ { be_const_key_weak(tlv2raw, -1), be_const_closure(class_Matter_TLV_item_tlv2raw_closure) },
+ { be_const_key_weak(_encode_tag_len, -1), be_const_closure(class_Matter_TLV_item__encode_tag_len_closure) },
+ { be_const_key_weak(next_idx, -1), be_const_var(1) },
+ { be_const_key_weak(tag_profile, 16), be_const_var(3) },
+ { be_const_key_weak(typ, -1), be_const_var(6) },
{ be_const_key_weak(set_contextspecific, -1), be_const_closure(class_Matter_TLV_item_set_contextspecific_closure) },
+ { be_const_key_weak(val, 13), be_const_var(7) },
+ { be_const_key_weak(to_TLV, 9), be_const_closure(class_Matter_TLV_item_to_TLV_closure) },
+ { be_const_key_weak(set_fulltag, -1), be_const_closure(class_Matter_TLV_item_set_fulltag_closure) },
+ { be_const_key_weak(encode_len, 2), be_const_closure(class_Matter_TLV_item_encode_len_closure) },
})),
be_str_weak(Matter_TLV_item)
);
+// compact class 'Matter_TLV_list' ktab size: 49, total: 94 (saved 360 bytes)
+static const bvalue be_ktab_class_Matter_TLV_list[49] = {
+ /* K0 */ be_nested_str_weak(findsub),
+ /* K1 */ be_nested_str_weak(val),
+ /* K2 */ be_nested_str_weak(_encode_tag),
+ /* K3 */ be_nested_str_weak(is_struct),
+ /* K4 */ be_nested_str_weak(copy),
+ /* K5 */ be_nested_str_weak(sort),
+ /* K6 */ be_nested_str_weak(tlv2raw),
+ /* K7 */ be_nested_str_weak(stop_iteration),
+ /* K8 */ be_nested_str_weak(add),
+ /* K9 */ be_nested_str_weak(TLV),
+ /* K10 */ be_nested_str_weak(EOC),
+ /* K11 */ be_const_int(1),
+ /* K12 */ be_nested_str_weak(tostring),
+ /* K13 */ be_nested_str_weak(tostring_inner),
+ /* K14 */ be_nested_str_weak(_X5B_X5B),
+ /* K15 */ be_nested_str_weak(_X5D_X5D),
+ /* K16 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K17 */ be_nested_str_weak(tag_sub),
+ /* K18 */ be_nested_str_weak(push),
+ /* K19 */ be_nested_str_weak(Matter_TLV_list),
+ /* K20 */ be_nested_str_weak(parse),
+ /* K21 */ be_nested_str_weak(next_idx),
+ /* K22 */ be_nested_str_weak(init),
+ /* K23 */ be_nested_str_weak(typ),
+ /* K24 */ be_nested_str_weak(LIST),
+ /* K25 */ be_nested_str_weak(getsub),
+ /* K26 */ be_nested_str_weak(value_error),
+ /* K27 */ be_nested_str_weak(sub_X20not_X20found),
+ /* K28 */ be_nested_str_weak(to_TLV),
+ /* K29 */ be_nested_str_weak(matter),
+ /* K30 */ be_nested_str_weak(NULL),
+ /* K31 */ be_nested_str_weak(Matter_TLV_item),
+ /* K32 */ be_nested_str_weak(Matter_TLV_array),
+ /* K33 */ be_nested_str_weak(),
+ /* K34 */ be_nested_str_weak(tag_profile),
+ /* K35 */ be_nested_str_weak(Matter_X3A_X3A),
+ /* K36 */ be_nested_str_weak(tag_number),
+ /* K37 */ be_nested_str_weak(0x_X2508X_X20),
+ /* K38 */ be_nested_str_weak(tag_vendor),
+ /* K39 */ be_nested_str_weak(0x_X2504X_X3A_X3A),
+ /* K40 */ be_nested_str_weak(0x_X2504X_X3A),
+ /* K41 */ be_nested_str_weak(_X25i_X20),
+ /* K42 */ be_const_int(0),
+ /* K43 */ be_nested_str_weak(_X3D_X20),
+ /* K44 */ be_nested_str_weak(concat),
+ /* K45 */ be_nested_str_weak(_X2C_X20),
+ /* K46 */ be_nested_str_weak(_X20),
+ /* K47 */ be_nested_str_weak(_encode_tag_len),
+ /* K48 */ be_nested_str_weak(encode_len),
+};
+
extern const bclass be_class_Matter_TLV_list;
/********************************************************************
** Solidified function: findsubval
********************************************************************/
-extern const bclass be_class_Matter_TLV_list;
be_local_closure(class_Matter_TLV_list_findsubval, /* name */
be_nested_proto(
6, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(findsub),
- /* K1 */ be_nested_str_weak(val),
- }),
+ &be_ktab_class_Matter_TLV_list, /* shared constants */
be_str_weak(findsubval),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
@@ -2122,30 +2101,17 @@ be_local_closure(class_Matter_TLV_list_findsubval, /* name */
/********************************************************************
** Solidified function: tlv2raw
********************************************************************/
-extern const bclass be_class_Matter_TLV_list;
be_local_closure(class_Matter_TLV_list_tlv2raw, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(_encode_tag),
- /* K1 */ be_nested_str_weak(val),
- /* K2 */ be_nested_str_weak(is_struct),
- /* K3 */ be_nested_str_weak(copy),
- /* K4 */ be_nested_str_weak(sort),
- /* K5 */ be_nested_str_weak(tlv2raw),
- /* K6 */ be_nested_str_weak(stop_iteration),
- /* K7 */ be_nested_str_weak(add),
- /* K8 */ be_nested_str_weak(TLV),
- /* K9 */ be_nested_str_weak(EOC),
- /* K10 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_TLV_list, /* shared constants */
be_str_weak(tlv2raw),
&be_const_str_solidified,
( &(const binstruction[44]) { /* code */
@@ -2155,16 +2121,16 @@ be_local_closure(class_Matter_TLV_list_tlv2raw, /* name */
0x60080015, // 0003 GETGBL R2 G21
0x7C080000, // 0004 CALL R2 0
0x5C040400, // 0005 MOVE R1 R2
- 0x8C080100, // 0006 GETMET R2 R0 K0
+ 0x8C080102, // 0006 GETMET R2 R0 K2
0x5C100200, // 0007 MOVE R4 R1
0x7C080400, // 0008 CALL R2 2
0x88080101, // 0009 GETMBR R2 R0 K1
- 0x880C0102, // 000A GETMBR R3 R0 K2
+ 0x880C0103, // 000A GETMBR R3 R0 K3
0x780E0005, // 000B JMPF R3 #0012
- 0x8C0C0503, // 000C GETMET R3 R2 K3
+ 0x8C0C0504, // 000C GETMET R3 R2 K4
0x7C0C0200, // 000D CALL R3 1
0x5C080600, // 000E MOVE R2 R3
- 0x8C0C0104, // 000F GETMET R3 R0 K4
+ 0x8C0C0105, // 000F GETMET R3 R0 K5
0x5C140400, // 0010 MOVE R5 R2
0x7C0C0400, // 0011 CALL R3 2
0x600C0010, // 0012 GETGBL R3 G16
@@ -2180,17 +2146,17 @@ be_local_closure(class_Matter_TLV_list_tlv2raw, /* name */
0x78160001, // 001C JMPF R5 #001F
0x40140204, // 001D CONNECT R5 R1 R4
0x70020002, // 001E JMP #0022
- 0x8C140905, // 001F GETMET R5 R4 K5
+ 0x8C140906, // 001F GETMET R5 R4 K6
0x5C1C0200, // 0020 MOVE R7 R1
0x7C140400, // 0021 CALL R5 2
0x7001FFF2, // 0022 JMP #0016
- 0x580C0006, // 0023 LDCONST R3 K6
+ 0x580C0007, // 0023 LDCONST R3 K7
0xAC0C0200, // 0024 CATCH R3 1 0
0xB0080000, // 0025 RAISE 2 R0 R0
- 0x8C0C0307, // 0026 GETMET R3 R1 K7
- 0x88140108, // 0027 GETMBR R5 R0 K8
- 0x88140B09, // 0028 GETMBR R5 R5 K9
- 0x5818000A, // 0029 LDCONST R6 K10
+ 0x8C0C0308, // 0026 GETMET R3 R1 K8
+ 0x88140109, // 0027 GETMBR R5 R0 K9
+ 0x88140B0A, // 0028 GETMBR R5 R5 K10
+ 0x5818000B, // 0029 LDCONST R6 K11
0x7C0C0600, // 002A CALL R3 3
0x80040200, // 002B RET 1 R1
})
@@ -2202,24 +2168,21 @@ be_local_closure(class_Matter_TLV_list_tlv2raw, /* name */
/********************************************************************
** Solidified function: to_str_val
********************************************************************/
-extern const bclass be_class_Matter_TLV_list;
be_local_closure(class_Matter_TLV_list_to_str_val, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(tostring),
- }),
+ &be_ktab_class_Matter_TLV_list, /* shared constants */
be_str_weak(to_str_val),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C04010C, // 0000 GETMET R1 R0 K12
0x500C0200, // 0001 LDBOOL R3 1 0
0x7C040400, // 0002 CALL R1 2
0x80040200, // 0003 RET 1 R1
@@ -2232,29 +2195,24 @@ be_local_closure(class_Matter_TLV_list_to_str_val, /* name */
/********************************************************************
** Solidified function: tostring
********************************************************************/
-extern const bclass be_class_Matter_TLV_list;
be_local_closure(class_Matter_TLV_list_tostring, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(tostring_inner),
- /* K1 */ be_nested_str_weak(_X5B_X5B),
- /* K2 */ be_nested_str_weak(_X5D_X5D),
- }),
+ &be_ktab_class_Matter_TLV_list, /* shared constants */
be_str_weak(tostring),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C08010D, // 0000 GETMET R2 R0 K13
0x50100000, // 0001 LDBOOL R4 0 0
- 0x58140001, // 0002 LDCONST R5 K1
- 0x58180002, // 0003 LDCONST R6 K2
+ 0x5814000E, // 0002 LDCONST R5 K14
+ 0x5818000F, // 0003 LDCONST R6 K15
0x5C1C0200, // 0004 MOVE R7 R1
0x7C080A00, // 0005 CALL R2 5
0x80040400, // 0006 RET 1 R2
@@ -2267,25 +2225,22 @@ be_local_closure(class_Matter_TLV_list_tostring, /* name */
/********************************************************************
** Solidified function: size
********************************************************************/
-extern const bclass be_class_Matter_TLV_list;
be_local_closure(class_Matter_TLV_list_size, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(val),
- }),
+ &be_ktab_class_Matter_TLV_list, /* shared constants */
be_str_weak(size),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x6004000C, // 0000 GETGBL R1 G12
- 0x88080100, // 0001 GETMBR R2 R0 K0
+ 0x88080101, // 0001 GETMBR R2 R0 K1
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -2297,24 +2252,21 @@ be_local_closure(class_Matter_TLV_list_size, /* name */
/********************************************************************
** Solidified function: setitem
********************************************************************/
-extern const bclass be_class_Matter_TLV_list;
be_local_closure(class_Matter_TLV_list_setitem, /* name */
be_nested_proto(
4, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(val),
- }),
+ &be_ktab_class_Matter_TLV_list, /* shared constants */
be_str_weak(setitem),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
+ 0x880C0101, // 0000 GETMBR R3 R0 K1
0x980C0202, // 0001 SETIDX R3 R1 R2
0x80000000, // 0002 RET 0
})
@@ -2326,34 +2278,27 @@ be_local_closure(class_Matter_TLV_list_setitem, /* name */
/********************************************************************
** Solidified function: add_struct
********************************************************************/
-extern const bclass be_class_Matter_TLV_list;
be_local_closure(class_Matter_TLV_list_add_struct, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(TLV),
- /* K1 */ be_nested_str_weak(Matter_TLV_struct),
- /* K2 */ be_nested_str_weak(tag_sub),
- /* K3 */ be_nested_str_weak(val),
- /* K4 */ be_nested_str_weak(push),
- }),
+ &be_ktab_class_Matter_TLV_list, /* shared constants */
be_str_weak(add_struct),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x88080109, // 0000 GETMBR R2 R0 K9
+ 0x8C080510, // 0001 GETMET R2 R2 K16
0x5C100000, // 0002 MOVE R4 R0
0x7C080400, // 0003 CALL R2 2
- 0x900A0401, // 0004 SETMBR R2 K2 R1
- 0x880C0103, // 0005 GETMBR R3 R0 K3
- 0x8C0C0704, // 0006 GETMET R3 R3 K4
+ 0x900A2201, // 0004 SETMBR R2 K17 R1
+ 0x880C0101, // 0005 GETMBR R3 R0 K1
+ 0x8C0C0712, // 0006 GETMET R3 R3 K18
0x5C140400, // 0007 MOVE R5 R2
0x7C0C0400, // 0008 CALL R3 2
0x80040400, // 0009 RET 1 R2
@@ -2366,34 +2311,27 @@ be_local_closure(class_Matter_TLV_list_add_struct, /* name */
/********************************************************************
** Solidified function: add_list
********************************************************************/
-extern const bclass be_class_Matter_TLV_list;
be_local_closure(class_Matter_TLV_list_add_list, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(TLV),
- /* K1 */ be_nested_str_weak(Matter_TLV_list),
- /* K2 */ be_nested_str_weak(tag_sub),
- /* K3 */ be_nested_str_weak(val),
- /* K4 */ be_nested_str_weak(push),
- }),
+ &be_ktab_class_Matter_TLV_list, /* shared constants */
be_str_weak(add_list),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x88080109, // 0000 GETMBR R2 R0 K9
+ 0x8C080513, // 0001 GETMET R2 R2 K19
0x5C100000, // 0002 MOVE R4 R0
0x7C080400, // 0003 CALL R2 2
- 0x900A0401, // 0004 SETMBR R2 K2 R1
- 0x880C0103, // 0005 GETMBR R3 R0 K3
- 0x8C0C0704, // 0006 GETMET R3 R3 K4
+ 0x900A2201, // 0004 SETMBR R2 K17 R1
+ 0x880C0101, // 0005 GETMBR R3 R0 K1
+ 0x8C0C0712, // 0006 GETMET R3 R3 K18
0x5C140400, // 0007 MOVE R5 R2
0x7C0C0400, // 0008 CALL R3 2
0x80040400, // 0009 RET 1 R2
@@ -2406,48 +2344,39 @@ be_local_closure(class_Matter_TLV_list_add_list, /* name */
/********************************************************************
** Solidified function: parse
********************************************************************/
-extern const bclass be_class_Matter_TLV_list;
be_local_closure(class_Matter_TLV_list_parse, /* name */
be_nested_proto(
8, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(TLV),
- /* K1 */ be_nested_str_weak(EOC),
- /* K2 */ be_nested_str_weak(parse),
- /* K3 */ be_nested_str_weak(next_idx),
- /* K4 */ be_nested_str_weak(val),
- /* K5 */ be_nested_str_weak(push),
- /* K6 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_TLV_list, /* shared constants */
be_str_weak(parse),
&be_const_str_solidified,
( &(const binstruction[20]) { /* code */
0x940C0202, // 0000 GETIDX R3 R1 R2
- 0x88100100, // 0001 GETMBR R4 R0 K0
- 0x88100901, // 0002 GETMBR R4 R4 K1
+ 0x88100109, // 0001 GETMBR R4 R0 K9
+ 0x8810090A, // 0002 GETMBR R4 R4 K10
0x200C0604, // 0003 NE R3 R3 R4
0x780E000B, // 0004 JMPF R3 #0011
- 0x880C0100, // 0005 GETMBR R3 R0 K0
- 0x8C0C0702, // 0006 GETMET R3 R3 K2
+ 0x880C0109, // 0005 GETMBR R3 R0 K9
+ 0x8C0C0714, // 0006 GETMET R3 R3 K20
0x5C140200, // 0007 MOVE R5 R1
0x5C180400, // 0008 MOVE R6 R2
0x5C1C0000, // 0009 MOVE R7 R0
0x7C0C0800, // 000A CALL R3 4
- 0x88080703, // 000B GETMBR R2 R3 K3
- 0x88100104, // 000C GETMBR R4 R0 K4
- 0x8C100905, // 000D GETMET R4 R4 K5
+ 0x88080715, // 000B GETMBR R2 R3 K21
+ 0x88100101, // 000C GETMBR R4 R0 K1
+ 0x8C100912, // 000D GETMET R4 R4 K18
0x5C180600, // 000E MOVE R6 R3
0x7C100400, // 000F CALL R4 2
0x7001FFEE, // 0010 JMP #0000
- 0x00080506, // 0011 ADD R2 R2 K6
- 0x90020602, // 0012 SETMBR R0 K3 R2
+ 0x0008050B, // 0011 ADD R2 R2 K11
+ 0x90022A02, // 0012 SETMBR R0 K21 R2
0x80040400, // 0013 RET 1 R2
})
)
@@ -2458,39 +2387,32 @@ be_local_closure(class_Matter_TLV_list_parse, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_TLV_list;
be_local_closure(class_Matter_TLV_list_init, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(typ),
- /* K2 */ be_nested_str_weak(TLV),
- /* K3 */ be_nested_str_weak(LIST),
- /* K4 */ be_nested_str_weak(val),
- }),
+ &be_ktab_class_Matter_TLV_list, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0
0x7C080200, // 0002 CALL R2 1
- 0x8C080500, // 0003 GETMET R2 R2 K0
+ 0x8C080516, // 0003 GETMET R2 R2 K22
0x5C100200, // 0004 MOVE R4 R1
0x7C080400, // 0005 CALL R2 2
- 0x88080102, // 0006 GETMBR R2 R0 K2
- 0x88080503, // 0007 GETMBR R2 R2 K3
- 0x90020202, // 0008 SETMBR R0 K1 R2
+ 0x88080109, // 0006 GETMBR R2 R0 K9
+ 0x88080518, // 0007 GETMBR R2 R2 K24
+ 0x90022E02, // 0008 SETMBR R0 K23 R2
0x60080012, // 0009 GETGBL R2 G18
0x7C080000, // 000A CALL R2 0
- 0x90020802, // 000B SETMBR R0 K4 R2
+ 0x90020202, // 000B SETMBR R0 K1 R2
0x80000000, // 000C RET 0
})
)
@@ -2501,24 +2423,21 @@ be_local_closure(class_Matter_TLV_list_init, /* name */
/********************************************************************
** Solidified function: item
********************************************************************/
-extern const bclass be_class_Matter_TLV_list;
be_local_closure(class_Matter_TLV_list_item, /* name */
be_nested_proto(
3, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(val),
- }),
+ &be_ktab_class_Matter_TLV_list, /* shared constants */
be_str_weak(item),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x88080101, // 0000 GETMBR R2 R0 K1
0x94080401, // 0001 GETIDX R2 R2 R1
0x80040400, // 0002 RET 1 R2
})
@@ -2530,25 +2449,21 @@ be_local_closure(class_Matter_TLV_list_item, /* name */
/********************************************************************
** Solidified function: getsubval
********************************************************************/
-extern const bclass be_class_Matter_TLV_list;
be_local_closure(class_Matter_TLV_list_getsubval, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(getsub),
- /* K1 */ be_nested_str_weak(val),
- }),
+ &be_ktab_class_Matter_TLV_list, /* shared constants */
be_str_weak(getsubval),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C080119, // 0000 GETMET R2 R0 K25
0x5C100200, // 0001 MOVE R4 R1
0x7C080400, // 0002 CALL R2 2
0x88080501, // 0003 GETMBR R2 R2 K1
@@ -2562,22 +2477,17 @@ be_local_closure(class_Matter_TLV_list_getsubval, /* name */
/********************************************************************
** Solidified function: getsub
********************************************************************/
-extern const bclass be_class_Matter_TLV_list;
be_local_closure(class_Matter_TLV_list_getsub, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(findsub),
- /* K1 */ be_nested_str_weak(value_error),
- /* K2 */ be_nested_str_weak(sub_X20not_X20found),
- }),
+ &be_ktab_class_Matter_TLV_list, /* shared constants */
be_str_weak(getsub),
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
@@ -2587,7 +2497,7 @@ be_local_closure(class_Matter_TLV_list_getsub, /* name */
0x4C0C0000, // 0003 LDNIL R3
0x1C0C0403, // 0004 EQ R3 R2 R3
0x780E0000, // 0005 JMPF R3 #0007
- 0xB0060302, // 0006 RAISE 1 K1 K2
+ 0xB006351B, // 0006 RAISE 1 K26 K27
0x80040400, // 0007 RET 1 R2
})
)
@@ -2598,23 +2508,17 @@ be_local_closure(class_Matter_TLV_list_getsub, /* name */
/********************************************************************
** Solidified function: add_obj
********************************************************************/
-extern const bclass be_class_Matter_TLV_list;
be_local_closure(class_Matter_TLV_list_add_obj, /* name */
be_nested_proto(
7, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(val),
- /* K1 */ be_nested_str_weak(push),
- /* K2 */ be_nested_str_weak(to_TLV),
- /* K3 */ be_nested_str_weak(tag_sub),
- }),
+ &be_ktab_class_Matter_TLV_list, /* shared constants */
be_str_weak(add_obj),
&be_const_str_solidified,
( &(const binstruction[21]) { /* code */
@@ -2626,16 +2530,16 @@ be_local_closure(class_Matter_TLV_list_add_obj, /* name */
0x60140015, // 0005 GETGBL R5 G21
0x7C0C0400, // 0006 CALL R3 2
0x780E0004, // 0007 JMPF R3 #000D
- 0x880C0100, // 0008 GETMBR R3 R0 K0
- 0x8C0C0701, // 0009 GETMET R3 R3 K1
+ 0x880C0101, // 0008 GETMBR R3 R0 K1
+ 0x8C0C0712, // 0009 GETMET R3 R3 K18
0x5C140400, // 000A MOVE R5 R2
0x7C0C0400, // 000B CALL R3 2
0x70020006, // 000C JMP #0014
- 0x8C0C0502, // 000D GETMET R3 R2 K2
+ 0x8C0C051C, // 000D GETMET R3 R2 K28
0x7C0C0200, // 000E CALL R3 1
- 0x900E0601, // 000F SETMBR R3 K3 R1
- 0x88100100, // 0010 GETMBR R4 R0 K0
- 0x8C100901, // 0011 GETMET R4 R4 K1
+ 0x900E2201, // 000F SETMBR R3 K17 R1
+ 0x88100101, // 0010 GETMBR R4 R0 K1
+ 0x8C100912, // 0011 GETMET R4 R4 K18
0x5C180600, // 0012 MOVE R6 R3
0x7C100400, // 0013 CALL R4 2
0x80040000, // 0014 RET 1 R0
@@ -2648,47 +2552,37 @@ be_local_closure(class_Matter_TLV_list_add_obj, /* name */
/********************************************************************
** Solidified function: add_TLV
********************************************************************/
-extern const bclass be_class_Matter_TLV_list;
be_local_closure(class_Matter_TLV_list_add_TLV, /* name */
be_nested_proto(
8, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(TLV),
- /* K2 */ be_nested_str_weak(NULL),
- /* K3 */ be_nested_str_weak(Matter_TLV_item),
- /* K4 */ be_nested_str_weak(tag_sub),
- /* K5 */ be_nested_str_weak(typ),
- /* K6 */ be_nested_str_weak(val),
- /* K7 */ be_nested_str_weak(push),
- }),
+ &be_ktab_class_Matter_TLV_list, /* shared constants */
be_str_weak(add_TLV),
&be_const_str_solidified,
( &(const binstruction[20]) { /* code */
0x4C100000, // 0000 LDNIL R4
0x20100604, // 0001 NE R4 R3 R4
0x74120004, // 0002 JMPT R4 #0008
- 0xB8120000, // 0003 GETNGBL R4 K0
- 0x88100901, // 0004 GETMBR R4 R4 K1
- 0x88100902, // 0005 GETMBR R4 R4 K2
+ 0xB8123A00, // 0003 GETNGBL R4 K29
+ 0x88100909, // 0004 GETMBR R4 R4 K9
+ 0x8810091E, // 0005 GETMBR R4 R4 K30
0x1C100404, // 0006 EQ R4 R2 R4
0x7812000A, // 0007 JMPF R4 #0013
- 0x88100101, // 0008 GETMBR R4 R0 K1
- 0x8C100903, // 0009 GETMET R4 R4 K3
+ 0x88100109, // 0008 GETMBR R4 R0 K9
+ 0x8C10091F, // 0009 GETMET R4 R4 K31
0x5C180000, // 000A MOVE R6 R0
0x7C100400, // 000B CALL R4 2
- 0x90120801, // 000C SETMBR R4 K4 R1
- 0x90120A02, // 000D SETMBR R4 K5 R2
- 0x90120C03, // 000E SETMBR R4 K6 R3
- 0x88140106, // 000F GETMBR R5 R0 K6
- 0x8C140B07, // 0010 GETMET R5 R5 K7
+ 0x90122201, // 000C SETMBR R4 K17 R1
+ 0x90122E02, // 000D SETMBR R4 K23 R2
+ 0x90120203, // 000E SETMBR R4 K1 R3
+ 0x88140101, // 000F GETMBR R5 R0 K1
+ 0x8C140B12, // 0010 GETMET R5 R5 K18
0x5C1C0800, // 0011 MOVE R7 R4
0x7C140400, // 0012 CALL R5 2
0x80040000, // 0013 RET 1 R0
@@ -2701,34 +2595,27 @@ be_local_closure(class_Matter_TLV_list_add_TLV, /* name */
/********************************************************************
** Solidified function: add_array
********************************************************************/
-extern const bclass be_class_Matter_TLV_list;
be_local_closure(class_Matter_TLV_list_add_array, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(TLV),
- /* K1 */ be_nested_str_weak(Matter_TLV_array),
- /* K2 */ be_nested_str_weak(tag_sub),
- /* K3 */ be_nested_str_weak(val),
- /* K4 */ be_nested_str_weak(push),
- }),
+ &be_ktab_class_Matter_TLV_list, /* shared constants */
be_str_weak(add_array),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x88080109, // 0000 GETMBR R2 R0 K9
+ 0x8C080520, // 0001 GETMET R2 R2 K32
0x5C100000, // 0002 MOVE R4 R0
0x7C080400, // 0003 CALL R2 2
- 0x900A0401, // 0004 SETMBR R2 K2 R1
- 0x880C0103, // 0005 GETMBR R3 R0 K3
- 0x8C0C0704, // 0006 GETMET R3 R3 K4
+ 0x900A2201, // 0004 SETMBR R2 K17 R1
+ 0x880C0101, // 0005 GETMBR R3 R0 K1
+ 0x8C0C0712, // 0006 GETMET R3 R3 K18
0x5C140400, // 0007 MOVE R5 R2
0x7C0C0400, // 0008 CALL R3 2
0x80040400, // 0009 RET 1 R2
@@ -2741,38 +2628,33 @@ be_local_closure(class_Matter_TLV_list_add_array, /* name */
/********************************************************************
** Solidified function: findsub
********************************************************************/
-extern const bclass be_class_Matter_TLV_list;
be_local_closure(class_Matter_TLV_list_findsub, /* name */
be_nested_proto(
6, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(val),
- /* K1 */ be_nested_str_weak(tag_sub),
- /* K2 */ be_nested_str_weak(stop_iteration),
- }),
+ &be_ktab_class_Matter_TLV_list, /* shared constants */
be_str_weak(findsub),
&be_const_str_solidified,
( &(const binstruction[16]) { /* code */
0x600C0010, // 0000 GETGBL R3 G16
- 0x88100100, // 0001 GETMBR R4 R0 K0
+ 0x88100101, // 0001 GETMBR R4 R0 K1
0x7C0C0200, // 0002 CALL R3 1
0xA8020007, // 0003 EXBLK 0 #000C
0x5C100600, // 0004 MOVE R4 R3
0x7C100000, // 0005 CALL R4 0
- 0x88140901, // 0006 GETMBR R5 R4 K1
+ 0x88140911, // 0006 GETMBR R5 R4 K17
0x1C140A01, // 0007 EQ R5 R5 R1
0x78160001, // 0008 JMPF R5 #000B
0xA8040001, // 0009 EXBLK 1 1
0x80040800, // 000A RET 1 R4
0x7001FFF7, // 000B JMP #0004
- 0x580C0002, // 000C LDCONST R3 K2
+ 0x580C0007, // 000C LDCONST R3 K7
0xAC0C0200, // 000D CATCH R3 1 0
0xB0080000, // 000E RAISE 2 R0 R0
0x80040400, // 000F RET 1 R2
@@ -2785,112 +2667,92 @@ be_local_closure(class_Matter_TLV_list_findsub, /* name */
/********************************************************************
** Solidified function: tostring_inner
********************************************************************/
-extern const bclass be_class_Matter_TLV_list;
be_local_closure(class_Matter_TLV_list_tostring_inner, /* name */
be_nested_proto(
10, /* nstack */
5, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
- /* K0 */ be_nested_str_weak(),
- /* K1 */ be_nested_str_weak(tag_profile),
- /* K2 */ be_nested_str_weak(Matter_X3A_X3A),
- /* K3 */ be_nested_str_weak(tag_number),
- /* K4 */ be_nested_str_weak(0x_X2508X_X20),
- /* K5 */ be_nested_str_weak(tag_vendor),
- /* K6 */ be_nested_str_weak(0x_X2504X_X3A_X3A),
- /* K7 */ be_nested_str_weak(0x_X2504X_X3A),
- /* K8 */ be_nested_str_weak(tag_sub),
- /* K9 */ be_nested_str_weak(_X25i_X20),
- /* K10 */ be_const_int(0),
- /* K11 */ be_nested_str_weak(_X3D_X20),
- /* K12 */ be_nested_str_weak(val),
- /* K13 */ be_nested_str_weak(copy),
- /* K14 */ be_nested_str_weak(sort),
- /* K15 */ be_nested_str_weak(concat),
- /* K16 */ be_nested_str_weak(_X2C_X20),
- /* K17 */ be_nested_str_weak(_X20),
- }),
+ &be_ktab_class_Matter_TLV_list, /* shared constants */
be_str_weak(tostring_inner),
&be_const_str_solidified,
( &(const binstruction[85]) { /* code */
- 0x58140000, // 0000 LDCONST R5 K0
+ 0x58140021, // 0000 LDCONST R5 K33
0xA802004A, // 0001 EXBLK 0 #004D
0x50180200, // 0002 LDBOOL R6 1 0
0x20180806, // 0003 NE R6 R4 R6
0x781A0038, // 0004 JMPF R6 #003E
- 0x88180101, // 0005 GETMBR R6 R0 K1
+ 0x88180122, // 0005 GETMBR R6 R0 K34
0x541DFFFE, // 0006 LDINT R7 -1
0x1C180C07, // 0007 EQ R6 R6 R7
0x781A000A, // 0008 JMPF R6 #0014
- 0x00140B02, // 0009 ADD R5 R5 K2
- 0x88180103, // 000A GETMBR R6 R0 K3
+ 0x00140B23, // 0009 ADD R5 R5 K35
+ 0x88180124, // 000A GETMBR R6 R0 K36
0x4C1C0000, // 000B LDNIL R7
0x20180C07, // 000C NE R6 R6 R7
0x781A0004, // 000D JMPF R6 #0013
0x60180018, // 000E GETGBL R6 G24
- 0x581C0004, // 000F LDCONST R7 K4
- 0x88200103, // 0010 GETMBR R8 R0 K3
+ 0x581C0025, // 000F LDCONST R7 K37
+ 0x88200124, // 0010 GETMBR R8 R0 K36
0x7C180400, // 0011 CALL R6 2
0x00140A06, // 0012 ADD R5 R5 R6
0x70020023, // 0013 JMP #0038
- 0x88180105, // 0014 GETMBR R6 R0 K5
+ 0x88180126, // 0014 GETMBR R6 R0 K38
0x4C1C0000, // 0015 LDNIL R7
0x20180C07, // 0016 NE R6 R6 R7
0x781A0004, // 0017 JMPF R6 #001D
0x60180018, // 0018 GETGBL R6 G24
- 0x581C0006, // 0019 LDCONST R7 K6
- 0x88200105, // 001A GETMBR R8 R0 K5
+ 0x581C0027, // 0019 LDCONST R7 K39
+ 0x88200126, // 001A GETMBR R8 R0 K38
0x7C180400, // 001B CALL R6 2
0x00140A06, // 001C ADD R5 R5 R6
- 0x88180101, // 001D GETMBR R6 R0 K1
+ 0x88180122, // 001D GETMBR R6 R0 K34
0x4C1C0000, // 001E LDNIL R7
0x20180C07, // 001F NE R6 R6 R7
0x781A0004, // 0020 JMPF R6 #0026
0x60180018, // 0021 GETGBL R6 G24
- 0x581C0007, // 0022 LDCONST R7 K7
- 0x88200101, // 0023 GETMBR R8 R0 K1
+ 0x581C0028, // 0022 LDCONST R7 K40
+ 0x88200122, // 0023 GETMBR R8 R0 K34
0x7C180400, // 0024 CALL R6 2
0x00140A06, // 0025 ADD R5 R5 R6
- 0x88180103, // 0026 GETMBR R6 R0 K3
+ 0x88180124, // 0026 GETMBR R6 R0 K36
0x4C1C0000, // 0027 LDNIL R7
0x20180C07, // 0028 NE R6 R6 R7
0x781A0004, // 0029 JMPF R6 #002F
0x60180018, // 002A GETGBL R6 G24
- 0x581C0004, // 002B LDCONST R7 K4
- 0x88200103, // 002C GETMBR R8 R0 K3
+ 0x581C0025, // 002B LDCONST R7 K37
+ 0x88200124, // 002C GETMBR R8 R0 K36
0x7C180400, // 002D CALL R6 2
0x00140A06, // 002E ADD R5 R5 R6
- 0x88180108, // 002F GETMBR R6 R0 K8
+ 0x88180111, // 002F GETMBR R6 R0 K17
0x4C1C0000, // 0030 LDNIL R7
0x20180C07, // 0031 NE R6 R6 R7
0x781A0004, // 0032 JMPF R6 #0038
0x60180018, // 0033 GETGBL R6 G24
- 0x581C0009, // 0034 LDCONST R7 K9
- 0x88200108, // 0035 GETMBR R8 R0 K8
+ 0x581C0029, // 0034 LDCONST R7 K41
+ 0x88200111, // 0035 GETMBR R8 R0 K17
0x7C180400, // 0036 CALL R6 2
0x00140A06, // 0037 ADD R5 R5 R6
0x6018000C, // 0038 GETGBL R6 G12
0x5C1C0A00, // 0039 MOVE R7 R5
0x7C180200, // 003A CALL R6 1
- 0x24180D0A, // 003B GT R6 R6 K10
+ 0x24180D2A, // 003B GT R6 R6 K42
0x781A0000, // 003C JMPF R6 #003E
- 0x00140B0B, // 003D ADD R5 R5 K11
+ 0x00140B2B, // 003D ADD R5 R5 K43
0x00140A02, // 003E ADD R5 R5 R2
- 0x8818010C, // 003F GETMBR R6 R0 K12
- 0x8C180D0D, // 0040 GETMET R6 R6 K13
+ 0x88180101, // 003F GETMBR R6 R0 K1
+ 0x8C180D04, // 0040 GETMET R6 R6 K4
0x7C180200, // 0041 CALL R6 1
0x78060002, // 0042 JMPF R1 #0046
- 0x8C1C010E, // 0043 GETMET R7 R0 K14
+ 0x8C1C0105, // 0043 GETMET R7 R0 K5
0x5C240C00, // 0044 MOVE R9 R6
0x7C1C0400, // 0045 CALL R7 2
- 0x8C1C0D0F, // 0046 GETMET R7 R6 K15
- 0x58240010, // 0047 LDCONST R9 K16
+ 0x8C1C0D2C, // 0046 GETMET R7 R6 K44
+ 0x5824002D, // 0047 LDCONST R9 K45
0x7C1C0400, // 0048 CALL R7 2
0x00140A07, // 0049 ADD R5 R5 R7
0x00140A03, // 004A ADD R5 R5 R3
@@ -2898,7 +2760,7 @@ be_local_closure(class_Matter_TLV_list_tostring_inner, /* name */
0x70020006, // 004C JMP #0054
0xAC180002, // 004D CATCH R6 0 2
0x70020003, // 004E JMP #0053
- 0x00200D11, // 004F ADD R8 R6 K17
+ 0x00200D2E, // 004F ADD R8 R6 K46
0x00201007, // 0050 ADD R8 R8 R7
0x80041000, // 0051 RET 1 R8
0x70020000, // 0052 JMP #0054
@@ -2913,26 +2775,22 @@ be_local_closure(class_Matter_TLV_list_tostring_inner, /* name */
/********************************************************************
** Solidified function: push
********************************************************************/
-extern const bclass be_class_Matter_TLV_list;
be_local_closure(class_Matter_TLV_list_push, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(val),
- /* K1 */ be_nested_str_weak(push),
- }),
+ &be_ktab_class_Matter_TLV_list, /* shared constants */
be_str_weak(push),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x88080101, // 0000 GETMBR R2 R0 K1
+ 0x8C080512, // 0001 GETMET R2 R2 K18
0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
0x80000000, // 0004 RET 0
@@ -2945,21 +2803,17 @@ be_local_closure(class_Matter_TLV_list_push, /* name */
/********************************************************************
** Solidified function: findsubtyp
********************************************************************/
-extern const bclass be_class_Matter_TLV_list;
be_local_closure(class_Matter_TLV_list_findsubtyp, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(findsub),
- /* K1 */ be_nested_str_weak(typ),
- }),
+ &be_ktab_class_Matter_TLV_list, /* shared constants */
be_str_weak(findsubtyp),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
@@ -2969,7 +2823,7 @@ be_local_closure(class_Matter_TLV_list_findsubtyp, /* name */
0x4C0C0000, // 0003 LDNIL R3
0x200C0403, // 0004 NE R3 R2 R3
0x780E0001, // 0005 JMPF R3 #0008
- 0x880C0501, // 0006 GETMBR R3 R2 K1
+ 0x880C0517, // 0006 GETMBR R3 R2 K23
0x80040600, // 0007 RET 1 R3
0x4C0C0000, // 0008 LDNIL R3
0x80040600, // 0009 RET 1 R3
@@ -2982,43 +2836,36 @@ be_local_closure(class_Matter_TLV_list_findsubtyp, /* name */
/********************************************************************
** Solidified function: encode_len
********************************************************************/
-extern const bclass be_class_Matter_TLV_list;
be_local_closure(class_Matter_TLV_list_encode_len, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_encode_tag_len),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(val),
- /* K3 */ be_nested_str_weak(encode_len),
- /* K4 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_TLV_list, /* shared constants */
be_str_weak(encode_len),
&be_const_str_solidified,
( &(const binstruction[17]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C04012F, // 0000 GETMET R1 R0 K47
0x7C040200, // 0001 CALL R1 1
- 0x58080001, // 0002 LDCONST R2 K1
+ 0x5808002A, // 0002 LDCONST R2 K42
0x600C000C, // 0003 GETGBL R3 G12
- 0x88100102, // 0004 GETMBR R4 R0 K2
+ 0x88100101, // 0004 GETMBR R4 R0 K1
0x7C0C0200, // 0005 CALL R3 1
0x140C0403, // 0006 LT R3 R2 R3
0x780E0006, // 0007 JMPF R3 #000F
- 0x880C0102, // 0008 GETMBR R3 R0 K2
+ 0x880C0101, // 0008 GETMBR R3 R0 K1
0x940C0602, // 0009 GETIDX R3 R3 R2
- 0x8C0C0703, // 000A GETMET R3 R3 K3
+ 0x8C0C0730, // 000A GETMET R3 R3 K48
0x7C0C0200, // 000B CALL R3 1
0x00040203, // 000C ADD R1 R1 R3
- 0x00080504, // 000D ADD R2 R2 K4
+ 0x0008050B, // 000D ADD R2 R2 K11
0x7001FFF3, // 000E JMP #0003
- 0x00040304, // 000F ADD R1 R1 K4
+ 0x0004030B, // 000F ADD R1 R1 K11
0x80040200, // 0010 RET 1 R1
})
)
@@ -3066,7 +2913,6 @@ extern const bclass be_class_Matter_TLV_struct;
/********************************************************************
** Solidified function: tostring
********************************************************************/
-extern const bclass be_class_Matter_TLV_struct;
be_local_closure(class_Matter_TLV_struct_tostring, /* name */
be_nested_proto(
8, /* nstack */
@@ -3075,7 +2921,7 @@ be_local_closure(class_Matter_TLV_struct_tostring, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_struct,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str_weak(tostring_inner),
@@ -3101,7 +2947,6 @@ be_local_closure(class_Matter_TLV_struct_tostring, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_TLV_struct;
be_local_closure(class_Matter_TLV_struct_init, /* name */
be_nested_proto(
5, /* nstack */
@@ -3110,7 +2955,7 @@ be_local_closure(class_Matter_TLV_struct_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_struct,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 5]) { /* constants */
/* K0 */ be_nested_str_weak(init),
@@ -3157,28 +3002,44 @@ be_local_class(Matter_TLV_struct,
})),
be_str_weak(Matter_TLV_struct)
);
+// compact class 'Matter_TLV_array' ktab size: 17, total: 19 (saved 16 bytes)
+static const bvalue be_ktab_class_Matter_TLV_array[17] = {
+ /* K0 */ be_nested_str_weak(tostring_inner),
+ /* K1 */ be_nested_str_weak(_X5B),
+ /* K2 */ be_nested_str_weak(_X5D),
+ /* K3 */ be_nested_str_weak(init),
+ /* K4 */ be_nested_str_weak(typ),
+ /* K5 */ be_nested_str_weak(TLV),
+ /* K6 */ be_nested_str_weak(ARRAY),
+ /* K7 */ be_nested_str_weak(val),
+ /* K8 */ be_nested_str_weak(EOC),
+ /* K9 */ be_nested_str_weak(parse),
+ /* K10 */ be_nested_str_weak(next_idx),
+ /* K11 */ be_nested_str_weak(tag_vendor),
+ /* K12 */ be_nested_str_weak(tag_profile),
+ /* K13 */ be_nested_str_weak(tag_number),
+ /* K14 */ be_nested_str_weak(tag_sub),
+ /* K15 */ be_nested_str_weak(push),
+ /* K16 */ be_const_int(1),
+};
+
extern const bclass be_class_Matter_TLV_array;
/********************************************************************
** Solidified function: tostring
********************************************************************/
-extern const bclass be_class_Matter_TLV_array;
be_local_closure(class_Matter_TLV_array_tostring, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_array,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(tostring_inner),
- /* K1 */ be_nested_str_weak(_X5B),
- /* K2 */ be_nested_str_weak(_X5D),
- }),
+ &be_ktab_class_Matter_TLV_array, /* shared constants */
be_str_weak(tostring),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
@@ -3198,39 +3059,32 @@ be_local_closure(class_Matter_TLV_array_tostring, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_TLV_array;
be_local_closure(class_Matter_TLV_array_init, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_array,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(typ),
- /* K2 */ be_nested_str_weak(TLV),
- /* K3 */ be_nested_str_weak(ARRAY),
- /* K4 */ be_nested_str_weak(val),
- }),
+ &be_ktab_class_Matter_TLV_array, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0
0x7C080200, // 0002 CALL R2 1
- 0x8C080500, // 0003 GETMET R2 R2 K0
+ 0x8C080503, // 0003 GETMET R2 R2 K3
0x5C100200, // 0004 MOVE R4 R1
0x7C080400, // 0005 CALL R2 2
- 0x88080102, // 0006 GETMBR R2 R0 K2
- 0x88080503, // 0007 GETMBR R2 R2 K3
- 0x90020202, // 0008 SETMBR R0 K1 R2
+ 0x88080105, // 0006 GETMBR R2 R0 K5
+ 0x88080506, // 0007 GETMBR R2 R2 K6
+ 0x90020802, // 0008 SETMBR R0 K4 R2
0x60080012, // 0009 GETGBL R2 G18
0x7C080000, // 000A CALL R2 0
- 0x90020802, // 000B SETMBR R0 K4 R2
+ 0x90020E02, // 000B SETMBR R0 K7 R2
0x80000000, // 000C RET 0
})
)
@@ -3241,60 +3095,47 @@ be_local_closure(class_Matter_TLV_array_init, /* name */
/********************************************************************
** Solidified function: parse
********************************************************************/
-extern const bclass be_class_Matter_TLV_array;
be_local_closure(class_Matter_TLV_array_parse, /* name */
be_nested_proto(
8, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV_array,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(TLV),
- /* K1 */ be_nested_str_weak(EOC),
- /* K2 */ be_nested_str_weak(parse),
- /* K3 */ be_nested_str_weak(next_idx),
- /* K4 */ be_nested_str_weak(tag_vendor),
- /* K5 */ be_nested_str_weak(tag_profile),
- /* K6 */ be_nested_str_weak(tag_number),
- /* K7 */ be_nested_str_weak(tag_sub),
- /* K8 */ be_nested_str_weak(val),
- /* K9 */ be_nested_str_weak(push),
- /* K10 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_TLV_array, /* shared constants */
be_str_weak(parse),
&be_const_str_solidified,
( &(const binstruction[28]) { /* code */
0x940C0202, // 0000 GETIDX R3 R1 R2
- 0x88100100, // 0001 GETMBR R4 R0 K0
- 0x88100901, // 0002 GETMBR R4 R4 K1
+ 0x88100105, // 0001 GETMBR R4 R0 K5
+ 0x88100908, // 0002 GETMBR R4 R4 K8
0x200C0604, // 0003 NE R3 R3 R4
0x780E0013, // 0004 JMPF R3 #0019
- 0x880C0100, // 0005 GETMBR R3 R0 K0
- 0x8C0C0702, // 0006 GETMET R3 R3 K2
+ 0x880C0105, // 0005 GETMBR R3 R0 K5
+ 0x8C0C0709, // 0006 GETMET R3 R3 K9
0x5C140200, // 0007 MOVE R5 R1
0x5C180400, // 0008 MOVE R6 R2
0x5C1C0000, // 0009 MOVE R7 R0
0x7C0C0800, // 000A CALL R3 4
- 0x88080703, // 000B GETMBR R2 R3 K3
+ 0x8808070A, // 000B GETMBR R2 R3 K10
0x4C100000, // 000C LDNIL R4
- 0x900E0804, // 000D SETMBR R3 K4 R4
+ 0x900E1604, // 000D SETMBR R3 K11 R4
0x4C100000, // 000E LDNIL R4
- 0x900E0A04, // 000F SETMBR R3 K5 R4
+ 0x900E1804, // 000F SETMBR R3 K12 R4
0x4C100000, // 0010 LDNIL R4
- 0x900E0C04, // 0011 SETMBR R3 K6 R4
+ 0x900E1A04, // 0011 SETMBR R3 K13 R4
0x4C100000, // 0012 LDNIL R4
- 0x900E0E04, // 0013 SETMBR R3 K7 R4
- 0x88100108, // 0014 GETMBR R4 R0 K8
- 0x8C100909, // 0015 GETMET R4 R4 K9
+ 0x900E1C04, // 0013 SETMBR R3 K14 R4
+ 0x88100107, // 0014 GETMBR R4 R0 K7
+ 0x8C10090F, // 0015 GETMET R4 R4 K15
0x5C180600, // 0016 MOVE R6 R3
0x7C100400, // 0017 CALL R4 2
0x7001FFE6, // 0018 JMP #0000
- 0x0008050A, // 0019 ADD R2 R2 K10
- 0x90020602, // 001A SETMBR R0 K3 R2
+ 0x00080510, // 0019 ADD R2 R2 K16
+ 0x90021402, // 001A SETMBR R0 K10 R2
0x80040400, // 001B RET 1 R2
})
)
@@ -3319,28 +3160,50 @@ be_local_class(Matter_TLV_array,
})),
be_str_weak(Matter_TLV_array)
);
+extern const bclass be_class_Matter_TLV;
+// compact class 'Matter_TLV' ktab size: 22, total: 24 (saved 16 bytes)
+static const bvalue be_ktab_class_Matter_TLV[22] = {
+ /* K0 */ be_const_class(be_class_Matter_TLV),
+ /* K1 */ be_nested_str_weak(Matter_TLV_item),
+ /* K2 */ be_nested_str_weak(create_TLV),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_const_int(1),
+ /* K5 */ be_nested_str_weak(EOC),
+ /* K6 */ be_nested_str_weak(invalid_X20TLV_X20type_X20),
+ /* K7 */ be_nested_str_weak(TLV_error),
+ /* K8 */ be_nested_str_weak(STRUCT),
+ /* K9 */ be_nested_str_weak(Matter_TLV_struct),
+ /* K10 */ be_nested_str_weak(ARRAY),
+ /* K11 */ be_nested_str_weak(Matter_TLV_array),
+ /* K12 */ be_nested_str_weak(LIST),
+ /* K13 */ be_nested_str_weak(Matter_TLV_list),
+ /* K14 */ be_nested_str_weak(typ),
+ /* K15 */ be_nested_str_weak(tag_vendor),
+ /* K16 */ be_nested_str_weak(get),
+ /* K17 */ be_const_int(2),
+ /* K18 */ be_nested_str_weak(tag_profile),
+ /* K19 */ be_nested_str_weak(tag_sub),
+ /* K20 */ be_nested_str_weak(tag_number),
+ /* K21 */ be_nested_str_weak(parse),
+};
+
extern const bclass be_class_Matter_TLV;
/********************************************************************
** Solidified function: create_TLV
********************************************************************/
-extern const bclass be_class_Matter_TLV;
be_local_closure(class_Matter_TLV_create_TLV, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 4, /* varg */
+ 12, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_TLV),
- /* K1 */ be_nested_str_weak(Matter_TLV_item),
- /* K2 */ be_nested_str_weak(create_TLV),
- }),
+ &be_ktab_class_Matter_TLV, /* shared constants */
be_str_weak(create_TLV),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
@@ -3360,40 +3223,17 @@ be_local_closure(class_Matter_TLV_create_TLV, /* name */
/********************************************************************
** Solidified function: parse
********************************************************************/
-extern const bclass be_class_Matter_TLV;
be_local_closure(class_Matter_TLV_parse, /* name */
be_nested_proto(
12, /* nstack */
3, /* argc */
- 4, /* varg */
+ 12, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_TLV,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[21]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_TLV),
- /* K1 */ be_const_int(0),
- /* K2 */ be_const_int(1),
- /* K3 */ be_nested_str_weak(EOC),
- /* K4 */ be_nested_str_weak(invalid_X20TLV_X20type_X20),
- /* K5 */ be_nested_str_weak(TLV_error),
- /* K6 */ be_nested_str_weak(STRUCT),
- /* K7 */ be_nested_str_weak(Matter_TLV_struct),
- /* K8 */ be_nested_str_weak(ARRAY),
- /* K9 */ be_nested_str_weak(Matter_TLV_array),
- /* K10 */ be_nested_str_weak(LIST),
- /* K11 */ be_nested_str_weak(Matter_TLV_list),
- /* K12 */ be_nested_str_weak(Matter_TLV_item),
- /* K13 */ be_nested_str_weak(typ),
- /* K14 */ be_nested_str_weak(tag_vendor),
- /* K15 */ be_nested_str_weak(get),
- /* K16 */ be_const_int(2),
- /* K17 */ be_nested_str_weak(tag_profile),
- /* K18 */ be_nested_str_weak(tag_sub),
- /* K19 */ be_nested_str_weak(tag_number),
- /* K20 */ be_nested_str_weak(parse),
- }),
+ &be_ktab_class_Matter_TLV, /* shared constants */
be_str_weak(parse),
&be_const_str_solidified,
( &(const binstruction[118]) { /* code */
@@ -3402,68 +3242,68 @@ be_local_closure(class_Matter_TLV_parse, /* name */
0x4C140000, // 0002 LDNIL R5
0x1C140205, // 0003 EQ R5 R1 R5
0x78160000, // 0004 JMPF R5 #0006
- 0x58040001, // 0005 LDCONST R1 K1
+ 0x58040003, // 0005 LDCONST R1 K3
0x94140001, // 0006 GETIDX R5 R0 R1
0x541A001E, // 0007 LDINT R6 31
0x2C140A06, // 0008 AND R5 R5 R6
0x94180001, // 0009 GETIDX R6 R0 R1
0x541E00DF, // 000A LDINT R7 224
0x2C180C07, // 000B AND R6 R6 R7
- 0x00040302, // 000C ADD R1 R1 K2
- 0x881C0903, // 000D GETMBR R7 R4 K3
+ 0x00040304, // 000C ADD R1 R1 K4
+ 0x881C0905, // 000D GETMBR R7 R4 K5
0x241C0A07, // 000E GT R7 R5 R7
0x781E0004, // 000F JMPF R7 #0015
0x601C0008, // 0010 GETGBL R7 G8
0x5C200A00, // 0011 MOVE R8 R5
0x7C1C0200, // 0012 CALL R7 1
- 0x001E0807, // 0013 ADD R7 K4 R7
- 0xB0060A07, // 0014 RAISE 1 K5 R7
+ 0x001E0C07, // 0013 ADD R7 K6 R7
+ 0xB0060E07, // 0014 RAISE 1 K7 R7
0x4C1C0000, // 0015 LDNIL R7
- 0x88200906, // 0016 GETMBR R8 R4 K6
+ 0x88200908, // 0016 GETMBR R8 R4 K8
0x1C200A08, // 0017 EQ R8 R5 R8
0x78220004, // 0018 JMPF R8 #001E
- 0x8C200707, // 0019 GETMET R8 R3 K7
+ 0x8C200709, // 0019 GETMET R8 R3 K9
0x5C280400, // 001A MOVE R10 R2
0x7C200400, // 001B CALL R8 2
0x5C1C1000, // 001C MOVE R7 R8
0x70020013, // 001D JMP #0032
- 0x88200908, // 001E GETMBR R8 R4 K8
+ 0x8820090A, // 001E GETMBR R8 R4 K10
0x1C200A08, // 001F EQ R8 R5 R8
0x78220004, // 0020 JMPF R8 #0026
- 0x8C200709, // 0021 GETMET R8 R3 K9
+ 0x8C20070B, // 0021 GETMET R8 R3 K11
0x5C280400, // 0022 MOVE R10 R2
0x7C200400, // 0023 CALL R8 2
0x5C1C1000, // 0024 MOVE R7 R8
0x7002000B, // 0025 JMP #0032
- 0x8820090A, // 0026 GETMBR R8 R4 K10
+ 0x8820090C, // 0026 GETMBR R8 R4 K12
0x1C200A08, // 0027 EQ R8 R5 R8
0x78220004, // 0028 JMPF R8 #002E
- 0x8C20070B, // 0029 GETMET R8 R3 K11
+ 0x8C20070D, // 0029 GETMET R8 R3 K13
0x5C280400, // 002A MOVE R10 R2
0x7C200400, // 002B CALL R8 2
0x5C1C1000, // 002C MOVE R7 R8
0x70020003, // 002D JMP #0032
- 0x8C20070C, // 002E GETMET R8 R3 K12
+ 0x8C200701, // 002E GETMET R8 R3 K1
0x5C280400, // 002F MOVE R10 R2
0x7C200400, // 0030 CALL R8 2
0x5C1C1000, // 0031 MOVE R7 R8
- 0x901E1A05, // 0032 SETMBR R7 K13 R5
+ 0x901E1C05, // 0032 SETMBR R7 K14 R5
0x542200BF, // 0033 LDINT R8 192
0x1C200C08, // 0034 EQ R8 R6 R8
0x74220002, // 0035 JMPT R8 #0039
0x542200DF, // 0036 LDINT R8 224
0x1C200C08, // 0037 EQ R8 R6 R8
0x7822000B, // 0038 JMPF R8 #0045
- 0x8C20010F, // 0039 GETMET R8 R0 K15
+ 0x8C200110, // 0039 GETMET R8 R0 K16
0x5C280200, // 003A MOVE R10 R1
- 0x582C0010, // 003B LDCONST R11 K16
+ 0x582C0011, // 003B LDCONST R11 K17
0x7C200600, // 003C CALL R8 3
- 0x901E1C08, // 003D SETMBR R7 K14 R8
- 0x8C20010F, // 003E GETMET R8 R0 K15
- 0x00280310, // 003F ADD R10 R1 K16
- 0x582C0010, // 0040 LDCONST R11 K16
+ 0x901E1E08, // 003D SETMBR R7 K15 R8
+ 0x8C200110, // 003E GETMET R8 R0 K16
+ 0x00280311, // 003F ADD R10 R1 K17
+ 0x582C0011, // 0040 LDCONST R11 K17
0x7C200600, // 0041 CALL R8 3
- 0x901E2208, // 0042 SETMBR R7 K17 R8
+ 0x901E2408, // 0042 SETMBR R7 K18 R8
0x54220003, // 0043 LDINT R8 4
0x00040208, // 0044 ADD R1 R1 R8
0x5422003F, // 0045 LDINT R8 64
@@ -3473,18 +3313,18 @@ be_local_closure(class_Matter_TLV_parse, /* name */
0x1C200C08, // 0049 EQ R8 R6 R8
0x78220003, // 004A JMPF R8 #004F
0x4C200000, // 004B LDNIL R8
- 0x901E1C08, // 004C SETMBR R7 K14 R8
+ 0x901E1E08, // 004C SETMBR R7 K15 R8
0x5421FFFE, // 004D LDINT R8 -1
- 0x901E2208, // 004E SETMBR R7 K17 R8
- 0x1C200D01, // 004F EQ R8 R6 K1
+ 0x901E2408, // 004E SETMBR R7 K18 R8
+ 0x1C200D03, // 004F EQ R8 R6 K3
0x78220000, // 0050 JMPF R8 #0052
0x7002001D, // 0051 JMP #0070
0x5422001F, // 0052 LDINT R8 32
0x1C200C08, // 0053 EQ R8 R6 R8
0x78220003, // 0054 JMPF R8 #0059
0x94200001, // 0055 GETIDX R8 R0 R1
- 0x901E2408, // 0056 SETMBR R7 K18 R8
- 0x00040302, // 0057 ADD R1 R1 K2
+ 0x901E2608, // 0056 SETMBR R7 K19 R8
+ 0x00040304, // 0057 ADD R1 R1 K4
0x70020016, // 0058 JMP #0070
0x542200BF, // 0059 LDINT R8 192
0x1C200C08, // 005A EQ R8 R6 R8
@@ -3495,21 +3335,21 @@ be_local_closure(class_Matter_TLV_parse, /* name */
0x5422003F, // 005F LDINT R8 64
0x1C200C08, // 0060 EQ R8 R6 R8
0x78220006, // 0061 JMPF R8 #0069
- 0x8C20010F, // 0062 GETMET R8 R0 K15
+ 0x8C200110, // 0062 GETMET R8 R0 K16
0x5C280200, // 0063 MOVE R10 R1
- 0x582C0010, // 0064 LDCONST R11 K16
+ 0x582C0011, // 0064 LDCONST R11 K17
0x7C200600, // 0065 CALL R8 3
- 0x901E2608, // 0066 SETMBR R7 K19 R8
- 0x00040310, // 0067 ADD R1 R1 K16
+ 0x901E2808, // 0066 SETMBR R7 K20 R8
+ 0x00040311, // 0067 ADD R1 R1 K17
0x70020006, // 0068 JMP #0070
- 0x8C20010F, // 0069 GETMET R8 R0 K15
+ 0x8C200110, // 0069 GETMET R8 R0 K16
0x5C280200, // 006A MOVE R10 R1
0x542E0003, // 006B LDINT R11 4
0x7C200600, // 006C CALL R8 3
- 0x901E2608, // 006D SETMBR R7 K19 R8
+ 0x901E2808, // 006D SETMBR R7 K20 R8
0x54220003, // 006E LDINT R8 4
0x00040208, // 006F ADD R1 R1 R8
- 0x8C200F14, // 0070 GETMET R8 R7 K20
+ 0x8C200F15, // 0070 GETMET R8 R7 K21
0x5C280000, // 0071 MOVE R10 R0
0x5C2C0200, // 0072 MOVE R11 R1
0x7C200600, // 0073 CALL R8 3
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h
index 180150805..d3a39ff4e 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UDPServer.h
@@ -9,7 +9,6 @@ extern const bclass be_class_Matter_UDPPacket_sent;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_UDPPacket_sent;
be_local_closure(class_Matter_UDPPacket_sent_init, /* name */
be_nested_proto(
6, /* nstack */
@@ -18,7 +17,7 @@ be_local_closure(class_Matter_UDPPacket_sent_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UDPPacket_sent,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[19]) { /* constants */
/* K0 */ be_nested_str_weak(raw),
@@ -110,26 +109,89 @@ be_local_class(Matter_UDPPacket_sent,
})),
be_str_weak(Matter_UDPPacket_sent)
);
+extern const bclass be_class_Matter_UDPServer;
+// compact class 'Matter_UDPServer' ktab size: 61, total: 103 (saved 336 bytes)
+static const bvalue be_ktab_class_Matter_UDPServer[61] = {
+ /* K0 */ be_nested_str_weak(loop),
+ /* K1 */ be_nested_str_weak(matter),
+ /* K2 */ be_nested_str_weak(UDPPacket_sent),
+ /* K3 */ be_nested_str_weak(send),
+ /* K4 */ be_nested_str_weak(msg_id),
+ /* K5 */ be_nested_str_weak(packets_sent),
+ /* K6 */ be_nested_str_weak(push),
+ /* K7 */ be_nested_str_weak(ack_message_counter),
+ /* K8 */ be_nested_str_weak(exchange_id),
+ /* K9 */ be_const_int(0),
+ /* K10 */ be_nested_str_weak(remove),
+ /* K11 */ be_nested_str_weak(tasmota),
+ /* K12 */ be_nested_str_weak(loglevel),
+ /* K13 */ be_nested_str_weak(log),
+ /* K14 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Removed_X20packet_X20from_X20sending_X20list_X20id_X3D),
+ /* K15 */ be_const_int(1),
+ /* K16 */ be_nested_str_weak(listening),
+ /* K17 */ be_nested_str_weak(udp_socket),
+ /* K18 */ be_nested_str_weak(udp),
+ /* K19 */ be_nested_str_weak(begin),
+ /* K20 */ be_nested_str_weak(addr),
+ /* K21 */ be_nested_str_weak(port),
+ /* K22 */ be_nested_str_weak(network_error),
+ /* K23 */ be_nested_str_weak(could_X20not_X20open_X20UDP_X20server),
+ /* K24 */ be_nested_str_weak(dispatch_cb),
+ /* K25 */ be_nested_str_weak(add_fast_loop),
+ /* K26 */ be_nested_str_weak(loop_cb),
+ /* K27 */ be_nested_str_weak(remote_ip),
+ /* K28 */ be_nested_str_weak(remote_port),
+ /* K29 */ be_nested_str_weak(raw),
+ /* K30 */ be_nested_str_weak(MTR_X3A_X20sending_X20packet_X20to_X20_X27_X5B_X25s_X5D_X3A_X25i_X27),
+ /* K31 */ be_const_int(3),
+ /* K32 */ be_nested_str_weak(MTR_X3A_X20error_X20sending_X20packet_X20to_X20_X27_X5B_X25s_X5D_X3A_X25i_X27),
+ /* K33 */ be_nested_str_weak(stop),
+ /* K34 */ be_nested_str_weak(remove_fast_loop),
+ /* K35 */ be_nested_str_weak(device),
+ /* K36 */ be_nested_str_weak(),
+ /* K37 */ be_nested_str_weak(time_reached),
+ /* K38 */ be_nested_str_weak(next_try),
+ /* K39 */ be_nested_str_weak(retries),
+ /* K40 */ be_nested_str_weak(RETRIES),
+ /* K41 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Resending_X20packet_X20id_X3D),
+ /* K42 */ be_nested_str_weak(millis),
+ /* K43 */ be_nested_str_weak(_backoff_time),
+ /* K44 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20Unacked_X20packet_X20_X27_X5B_X25s_X5D_X3A_X25i_X27_X20msg_id_X3D_X25i),
+ /* K45 */ be_nested_str_weak(session_id),
+ /* K46 */ be_const_class(be_class_Matter_UDPServer),
+ /* K47 */ be_nested_str_weak(math),
+ /* K48 */ be_nested_str_weak(rand),
+ /* K49 */ be_const_real_hex(0x3FCCCCCD),
+ /* K50 */ be_const_real_hex(0x3F800000),
+ /* K51 */ be_const_real_hex(0x3E800000),
+ /* K52 */ be_nested_str_weak(profiler),
+ /* K53 */ be_nested_str_weak(read),
+ /* K54 */ be_nested_str_weak(packet),
+ /* K55 */ be_nested_str_weak(start),
+ /* K56 */ be_nested_str_weak(MTR_X3A_X20UDP_X20received_X20from_X20_X5B_X25s_X5D_X3A_X25i),
+ /* K57 */ be_nested_str_weak(dump),
+ /* K58 */ be_const_int(2),
+ /* K59 */ be_nested_str_weak(MAX_PACKETS_READ),
+ /* K60 */ be_nested_str_weak(_resend_packets),
+};
+
extern const bclass be_class_Matter_UDPServer;
/********************************************************************
** Solidified function: every_50ms
********************************************************************/
-extern const bclass be_class_Matter_UDPServer;
be_local_closure(class_Matter_UDPServer_every_50ms, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UDPServer,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(loop),
- }),
+ &be_ktab_class_Matter_UDPServer, /* shared constants */
be_str_weak(every_50ms),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
@@ -145,39 +207,31 @@ be_local_closure(class_Matter_UDPServer_every_50ms, /* name */
/********************************************************************
** Solidified function: send_UDP
********************************************************************/
-extern const bclass be_class_Matter_UDPServer;
be_local_closure(class_Matter_UDPServer_send_UDP, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UDPServer,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(UDPPacket_sent),
- /* K2 */ be_nested_str_weak(send),
- /* K3 */ be_nested_str_weak(msg_id),
- /* K4 */ be_nested_str_weak(packets_sent),
- /* K5 */ be_nested_str_weak(push),
- }),
+ &be_ktab_class_Matter_UDPServer, /* shared constants */
be_str_weak(send_UDP),
&be_const_str_solidified,
( &(const binstruction[14]) { /* code */
- 0xB80A0000, // 0000 GETNGBL R2 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0xB80A0200, // 0000 GETNGBL R2 K1
+ 0x8C080502, // 0001 GETMET R2 R2 K2
0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
- 0x8C0C0102, // 0004 GETMET R3 R0 K2
+ 0x8C0C0103, // 0004 GETMET R3 R0 K3
0x5C140400, // 0005 MOVE R5 R2
0x7C0C0400, // 0006 CALL R3 2
- 0x880C0503, // 0007 GETMBR R3 R2 K3
+ 0x880C0504, // 0007 GETMBR R3 R2 K4
0x780E0003, // 0008 JMPF R3 #000D
- 0x880C0104, // 0009 GETMBR R3 R0 K4
- 0x8C0C0705, // 000A GETMET R3 R3 K5
+ 0x880C0105, // 0009 GETMBR R3 R0 K5
+ 0x8C0C0706, // 000A GETMET R3 R3 K6
0x5C140400, // 000B MOVE R5 R2
0x7C0C0400, // 000C CALL R3 2
0x80000000, // 000D RET 0
@@ -190,74 +244,60 @@ be_local_closure(class_Matter_UDPServer_send_UDP, /* name */
/********************************************************************
** Solidified function: received_ack
********************************************************************/
-extern const bclass be_class_Matter_UDPServer;
be_local_closure(class_Matter_UDPServer_received_ack, /* name */
be_nested_proto(
- 10, /* nstack */
+ 9, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UDPServer,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(ack_message_counter),
- /* K1 */ be_nested_str_weak(exchange_id),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(packets_sent),
- /* K4 */ be_nested_str_weak(msg_id),
- /* K5 */ be_nested_str_weak(remove),
- /* K6 */ be_nested_str_weak(tasmota),
- /* K7 */ be_nested_str_weak(loglevel),
- /* K8 */ be_nested_str_weak(log),
- /* K9 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Removed_X20packet_X20from_X20sending_X20list_X20id_X3D),
- /* K10 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_UDPServer, /* shared constants */
be_str_weak(received_ack),
&be_const_str_solidified,
- ( &(const binstruction[41]) { /* code */
- 0x88080300, // 0000 GETMBR R2 R1 K0
- 0x880C0301, // 0001 GETMBR R3 R1 K1
+ ( &(const binstruction[40]) { /* code */
+ 0x88080307, // 0000 GETMBR R2 R1 K7
+ 0x880C0308, // 0001 GETMBR R3 R1 K8
0x4C100000, // 0002 LDNIL R4
0x1C100404, // 0003 EQ R4 R2 R4
0x78120000, // 0004 JMPF R4 #0006
0x80000800, // 0005 RET 0
- 0x58100002, // 0006 LDCONST R4 K2
+ 0x58100009, // 0006 LDCONST R4 K9
0x6014000C, // 0007 GETGBL R5 G12
- 0x88180103, // 0008 GETMBR R6 R0 K3
+ 0x88180105, // 0008 GETMBR R6 R0 K5
0x7C140200, // 0009 CALL R5 1
0x14140805, // 000A LT R5 R4 R5
- 0x7816001B, // 000B JMPF R5 #0028
- 0x88140103, // 000C GETMBR R5 R0 K3
+ 0x7816001A, // 000B JMPF R5 #0027
+ 0x88140105, // 000C GETMBR R5 R0 K5
0x94140A04, // 000D GETIDX R5 R5 R4
0x88180B04, // 000E GETMBR R6 R5 K4
0x1C180C02, // 000F EQ R6 R6 R2
- 0x781A0014, // 0010 JMPF R6 #0026
- 0x88180B01, // 0011 GETMBR R6 R5 K1
+ 0x781A0013, // 0010 JMPF R6 #0025
+ 0x88180B08, // 0011 GETMBR R6 R5 K8
0x1C180C03, // 0012 EQ R6 R6 R3
- 0x781A0011, // 0013 JMPF R6 #0026
- 0x88180103, // 0014 GETMBR R6 R0 K3
- 0x8C180D05, // 0015 GETMET R6 R6 K5
+ 0x781A0010, // 0013 JMPF R6 #0025
+ 0x88180105, // 0014 GETMBR R6 R0 K5
+ 0x8C180D0A, // 0015 GETMET R6 R6 K10
0x5C200800, // 0016 MOVE R8 R4
0x7C180400, // 0017 CALL R6 2
- 0xB81A0C00, // 0018 GETNGBL R6 K6
- 0x8C180D07, // 0019 GETMET R6 R6 K7
+ 0xB81A1600, // 0018 GETNGBL R6 K11
+ 0x8C180D0C, // 0019 GETMET R6 R6 K12
0x54220003, // 001A LDINT R8 4
0x7C180400, // 001B CALL R6 2
- 0x781A0007, // 001C JMPF R6 #0025
- 0xB81A0C00, // 001D GETNGBL R6 K6
- 0x8C180D08, // 001E GETMET R6 R6 K8
- 0x60200008, // 001F GETGBL R8 G8
- 0x5C240400, // 0020 MOVE R9 R2
- 0x7C200200, // 0021 CALL R8 1
- 0x00221208, // 0022 ADD R8 K9 R8
- 0x54260003, // 0023 LDINT R9 4
- 0x7C180600, // 0024 CALL R6 3
- 0x70020000, // 0025 JMP #0027
- 0x0010090A, // 0026 ADD R4 R4 K10
- 0x7001FFDE, // 0027 JMP #0007
- 0x80000000, // 0028 RET 0
+ 0x781A0006, // 001C JMPF R6 #0024
+ 0xB81A1A00, // 001D GETNGBL R6 K13
+ 0x601C0008, // 001E GETGBL R7 G8
+ 0x5C200400, // 001F MOVE R8 R2
+ 0x7C1C0200, // 0020 CALL R7 1
+ 0x001E1C07, // 0021 ADD R7 K14 R7
+ 0x54220003, // 0022 LDINT R8 4
+ 0x7C180400, // 0023 CALL R6 2
+ 0x70020000, // 0024 JMP #0026
+ 0x0010090F, // 0025 ADD R4 R4 K15
+ 0x7001FFDF, // 0026 JMP #0007
+ 0x80000000, // 0027 RET 0
})
)
);
@@ -267,53 +307,39 @@ be_local_closure(class_Matter_UDPServer_received_ack, /* name */
/********************************************************************
** Solidified function: start
********************************************************************/
-extern const bclass be_class_Matter_UDPServer;
be_local_closure(class_Matter_UDPServer_start, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UDPServer,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(listening),
- /* K1 */ be_nested_str_weak(udp_socket),
- /* K2 */ be_nested_str_weak(udp),
- /* K3 */ be_nested_str_weak(begin),
- /* K4 */ be_nested_str_weak(addr),
- /* K5 */ be_nested_str_weak(port),
- /* K6 */ be_nested_str_weak(network_error),
- /* K7 */ be_nested_str_weak(could_X20not_X20open_X20UDP_X20server),
- /* K8 */ be_nested_str_weak(dispatch_cb),
- /* K9 */ be_nested_str_weak(tasmota),
- /* K10 */ be_nested_str_weak(add_fast_loop),
- /* K11 */ be_nested_str_weak(loop_cb),
- }),
+ &be_ktab_class_Matter_UDPServer, /* shared constants */
be_str_weak(start),
&be_const_str_solidified,
( &(const binstruction[21]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x88080110, // 0000 GETMBR R2 R0 K16
0x740A0011, // 0001 JMPT R2 #0014
- 0xB80A0400, // 0002 GETNGBL R2 K2
+ 0xB80A2400, // 0002 GETNGBL R2 K18
0x7C080000, // 0003 CALL R2 0
- 0x90020202, // 0004 SETMBR R0 K1 R2
- 0x88080101, // 0005 GETMBR R2 R0 K1
- 0x8C080503, // 0006 GETMET R2 R2 K3
- 0x88100104, // 0007 GETMBR R4 R0 K4
- 0x88140105, // 0008 GETMBR R5 R0 K5
+ 0x90022202, // 0004 SETMBR R0 K17 R2
+ 0x88080111, // 0005 GETMBR R2 R0 K17
+ 0x8C080513, // 0006 GETMET R2 R2 K19
+ 0x88100114, // 0007 GETMBR R4 R0 K20
+ 0x88140115, // 0008 GETMBR R5 R0 K21
0x7C080600, // 0009 CALL R2 3
0x5C0C0400, // 000A MOVE R3 R2
0x740E0000, // 000B JMPT R3 #000D
- 0xB0060D07, // 000C RAISE 1 K6 K7
+ 0xB0062D17, // 000C RAISE 1 K22 K23
0x500C0200, // 000D LDBOOL R3 1 0
- 0x90020003, // 000E SETMBR R0 K0 R3
- 0x90021001, // 000F SETMBR R0 K8 R1
- 0xB80E1200, // 0010 GETNGBL R3 K9
- 0x8C0C070A, // 0011 GETMET R3 R3 K10
- 0x8814010B, // 0012 GETMBR R5 R0 K11
+ 0x90022003, // 000E SETMBR R0 K16 R3
+ 0x90023001, // 000F SETMBR R0 K24 R1
+ 0xB80E1600, // 0010 GETNGBL R3 K11
+ 0x8C0C0719, // 0011 GETMET R3 R3 K25
+ 0x8814011A, // 0012 GETMBR R5 R0 K26
0x7C0C0400, // 0013 CALL R3 2
0x80000000, // 0014 RET 0
})
@@ -325,82 +351,65 @@ be_local_closure(class_Matter_UDPServer_start, /* name */
/********************************************************************
** Solidified function: send
********************************************************************/
-extern const bclass be_class_Matter_UDPServer;
be_local_closure(class_Matter_UDPServer_send, /* name */
be_nested_proto(
- 9, /* nstack */
+ 8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UDPServer,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(udp_socket),
- /* K1 */ be_nested_str_weak(send),
- /* K2 */ be_nested_str_weak(addr),
- /* K3 */ be_nested_str_weak(remote_ip),
- /* K4 */ be_nested_str_weak(port),
- /* K5 */ be_nested_str_weak(remote_port),
- /* K6 */ be_nested_str_weak(raw),
- /* K7 */ be_nested_str_weak(tasmota),
- /* K8 */ be_nested_str_weak(loglevel),
- /* K9 */ be_nested_str_weak(log),
- /* K10 */ be_nested_str_weak(MTR_X3A_X20sending_X20packet_X20to_X20_X27_X5B_X25s_X5D_X3A_X25i_X27),
- /* K11 */ be_const_int(3),
- /* K12 */ be_nested_str_weak(MTR_X3A_X20error_X20sending_X20packet_X20to_X20_X27_X5B_X25s_X5D_X3A_X25i_X27),
- }),
+ &be_ktab_class_Matter_UDPServer, /* shared constants */
be_str_weak(send),
&be_const_str_solidified,
- ( &(const binstruction[47]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x88100302, // 0002 GETMBR R4 R1 K2
+ ( &(const binstruction[45]) { /* code */
+ 0x88080111, // 0000 GETMBR R2 R0 K17
+ 0x8C080503, // 0001 GETMET R2 R2 K3
+ 0x88100314, // 0002 GETMBR R4 R1 K20
0x78120001, // 0003 JMPF R4 #0006
- 0x88100302, // 0004 GETMBR R4 R1 K2
+ 0x88100314, // 0004 GETMBR R4 R1 K20
0x70020001, // 0005 JMP #0008
- 0x88100100, // 0006 GETMBR R4 R0 K0
- 0x88100903, // 0007 GETMBR R4 R4 K3
- 0x88140304, // 0008 GETMBR R5 R1 K4
+ 0x88100111, // 0006 GETMBR R4 R0 K17
+ 0x8810091B, // 0007 GETMBR R4 R4 K27
+ 0x88140315, // 0008 GETMBR R5 R1 K21
0x78160001, // 0009 JMPF R5 #000C
- 0x88140304, // 000A GETMBR R5 R1 K4
+ 0x88140315, // 000A GETMBR R5 R1 K21
0x70020001, // 000B JMP #000E
- 0x88140100, // 000C GETMBR R5 R0 K0
- 0x88140B05, // 000D GETMBR R5 R5 K5
- 0x88180306, // 000E GETMBR R6 R1 K6
+ 0x88140111, // 000C GETMBR R5 R0 K17
+ 0x88140B1C, // 000D GETMBR R5 R5 K28
+ 0x8818031D, // 000E GETMBR R6 R1 K29
0x7C080800, // 000F CALL R2 4
- 0x780A000E, // 0010 JMPF R2 #0020
- 0xB80E0E00, // 0011 GETNGBL R3 K7
- 0x8C0C0708, // 0012 GETMET R3 R3 K8
+ 0x780A000D, // 0010 JMPF R2 #001F
+ 0xB80E1600, // 0011 GETNGBL R3 K11
+ 0x8C0C070C, // 0012 GETMET R3 R3 K12
0x54160003, // 0013 LDINT R5 4
0x7C0C0400, // 0014 CALL R3 2
- 0x780E0008, // 0015 JMPF R3 #001F
- 0xB80E0E00, // 0016 GETNGBL R3 K7
- 0x8C0C0709, // 0017 GETMET R3 R3 K9
- 0x60140018, // 0018 GETGBL R5 G24
- 0x5818000A, // 0019 LDCONST R6 K10
- 0x881C0302, // 001A GETMBR R7 R1 K2
- 0x88200304, // 001B GETMBR R8 R1 K4
- 0x7C140600, // 001C CALL R5 3
- 0x541A0003, // 001D LDINT R6 4
- 0x7C0C0600, // 001E CALL R3 3
- 0x7002000D, // 001F JMP #002E
- 0xB80E0E00, // 0020 GETNGBL R3 K7
- 0x8C0C0708, // 0021 GETMET R3 R3 K8
- 0x5814000B, // 0022 LDCONST R5 K11
- 0x7C0C0400, // 0023 CALL R3 2
- 0x780E0008, // 0024 JMPF R3 #002E
- 0xB80E0E00, // 0025 GETNGBL R3 K7
- 0x8C0C0709, // 0026 GETMET R3 R3 K9
- 0x60140018, // 0027 GETGBL R5 G24
- 0x5818000C, // 0028 LDCONST R6 K12
- 0x881C0302, // 0029 GETMBR R7 R1 K2
- 0x88200304, // 002A GETMBR R8 R1 K4
- 0x7C140600, // 002B CALL R5 3
- 0x5818000B, // 002C LDCONST R6 K11
- 0x7C0C0600, // 002D CALL R3 3
- 0x80040400, // 002E RET 1 R2
+ 0x780E0007, // 0015 JMPF R3 #001E
+ 0xB80E1A00, // 0016 GETNGBL R3 K13
+ 0x60100018, // 0017 GETGBL R4 G24
+ 0x5814001E, // 0018 LDCONST R5 K30
+ 0x88180314, // 0019 GETMBR R6 R1 K20
+ 0x881C0315, // 001A GETMBR R7 R1 K21
+ 0x7C100600, // 001B CALL R4 3
+ 0x54160003, // 001C LDINT R5 4
+ 0x7C0C0400, // 001D CALL R3 2
+ 0x7002000C, // 001E JMP #002C
+ 0xB80E1600, // 001F GETNGBL R3 K11
+ 0x8C0C070C, // 0020 GETMET R3 R3 K12
+ 0x5814001F, // 0021 LDCONST R5 K31
+ 0x7C0C0400, // 0022 CALL R3 2
+ 0x780E0007, // 0023 JMPF R3 #002C
+ 0xB80E1A00, // 0024 GETNGBL R3 K13
+ 0x60100018, // 0025 GETGBL R4 G24
+ 0x58140020, // 0026 LDCONST R5 K32
+ 0x88180314, // 0027 GETMBR R6 R1 K20
+ 0x881C0315, // 0028 GETMBR R7 R1 K21
+ 0x7C100600, // 0029 CALL R4 3
+ 0x5814001F, // 002A LDCONST R5 K31
+ 0x7C0C0400, // 002B CALL R3 2
+ 0x80040400, // 002C RET 1 R2
})
)
);
@@ -410,38 +419,30 @@ be_local_closure(class_Matter_UDPServer_send, /* name */
/********************************************************************
** Solidified function: stop
********************************************************************/
-extern const bclass be_class_Matter_UDPServer;
be_local_closure(class_Matter_UDPServer_stop, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UDPServer,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(listening),
- /* K1 */ be_nested_str_weak(udp_socket),
- /* K2 */ be_nested_str_weak(stop),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(remove_fast_loop),
- /* K5 */ be_nested_str_weak(loop_cb),
- }),
+ &be_ktab_class_Matter_UDPServer, /* shared constants */
be_str_weak(stop),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040110, // 0000 GETMBR R1 R0 K16
0x78060008, // 0001 JMPF R1 #000B
- 0x88040101, // 0002 GETMBR R1 R0 K1
- 0x8C040302, // 0003 GETMET R1 R1 K2
+ 0x88040111, // 0002 GETMBR R1 R0 K17
+ 0x8C040321, // 0003 GETMET R1 R1 K33
0x7C040200, // 0004 CALL R1 1
0x50040000, // 0005 LDBOOL R1 0 0
- 0x90020001, // 0006 SETMBR R0 K0 R1
- 0xB8060600, // 0007 GETNGBL R1 K3
- 0x8C040304, // 0008 GETMET R1 R1 K4
- 0x880C0105, // 0009 GETMBR R3 R0 K5
+ 0x90022001, // 0006 SETMBR R0 K16 R1
+ 0xB8061600, // 0007 GETNGBL R1 K11
+ 0x8C040322, // 0008 GETMET R1 R1 K34
+ 0x880C011A, // 0009 GETMBR R3 R0 K26
0x7C040400, // 000A CALL R1 2
0x80000000, // 000B RET 0
})
@@ -453,16 +454,15 @@ be_local_closure(class_Matter_UDPServer_stop, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_UDPServer;
be_local_closure(class_Matter_UDPServer_init, /* name */
be_nested_proto(
5, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
2, /* nstack */
0, /* argc */
@@ -472,7 +472,7 @@ be_local_closure(class_Matter_UDPServer_init, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(loop),
@@ -486,39 +486,30 @@ be_local_closure(class_Matter_UDPServer_init, /* name */
0x80000000, // 0003 RET 0
})
),
- &be_class_Matter_UDPServer,
}),
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(device),
- /* K1 */ be_nested_str_weak(addr),
- /* K2 */ be_nested_str_weak(),
- /* K3 */ be_nested_str_weak(port),
- /* K4 */ be_nested_str_weak(listening),
- /* K5 */ be_nested_str_weak(packets_sent),
- /* K6 */ be_nested_str_weak(loop_cb),
- }),
+ &be_ktab_class_Matter_UDPServer, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[20]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90024601, // 0000 SETMBR R0 K35 R1
0x780A0001, // 0001 JMPF R2 #0004
0x5C100400, // 0002 MOVE R4 R2
0x70020000, // 0003 JMP #0005
- 0x58100002, // 0004 LDCONST R4 K2
- 0x90020204, // 0005 SETMBR R0 K1 R4
+ 0x58100024, // 0004 LDCONST R4 K36
+ 0x90022804, // 0005 SETMBR R0 K20 R4
0x780E0001, // 0006 JMPF R3 #0009
0x5C100600, // 0007 MOVE R4 R3
0x70020000, // 0008 JMP #000A
0x541215A3, // 0009 LDINT R4 5540
- 0x90020604, // 000A SETMBR R0 K3 R4
+ 0x90022A04, // 000A SETMBR R0 K21 R4
0x50100000, // 000B LDBOOL R4 0 0
- 0x90020804, // 000C SETMBR R0 K4 R4
+ 0x90022004, // 000C SETMBR R0 K16 R4
0x60100012, // 000D GETGBL R4 G18
0x7C100000, // 000E CALL R4 0
0x90020A04, // 000F SETMBR R0 K5 R4
0x84100000, // 0010 CLOSURE R4 P0
- 0x90020C04, // 0011 SETMBR R0 K6 R4
+ 0x90023404, // 0011 SETMBR R0 K26 R4
0xA0000000, // 0012 CLOSE R0
0x80000000, // 0013 RET 0
})
@@ -530,102 +521,78 @@ be_local_closure(class_Matter_UDPServer_init, /* name */
/********************************************************************
** Solidified function: _resend_packets
********************************************************************/
-extern const bclass be_class_Matter_UDPServer;
be_local_closure(class_Matter_UDPServer__resend_packets, /* name */
be_nested_proto(
- 11, /* nstack */
+ 10, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UDPServer,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[20]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(packets_sent),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(time_reached),
- /* K4 */ be_nested_str_weak(next_try),
- /* K5 */ be_nested_str_weak(retries),
- /* K6 */ be_nested_str_weak(RETRIES),
- /* K7 */ be_nested_str_weak(log),
- /* K8 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Resending_X20packet_X20id_X3D),
- /* K9 */ be_nested_str_weak(msg_id),
- /* K10 */ be_nested_str_weak(send),
- /* K11 */ be_nested_str_weak(millis),
- /* K12 */ be_nested_str_weak(_backoff_time),
- /* K13 */ be_const_int(1),
- /* K14 */ be_nested_str_weak(remove),
- /* K15 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X28_X256i_X29_X20Unacked_X20packet_X20_X27_X5B_X25s_X5D_X3A_X25i_X27_X20msg_id_X3D_X25i),
- /* K16 */ be_nested_str_weak(session_id),
- /* K17 */ be_nested_str_weak(addr),
- /* K18 */ be_nested_str_weak(port),
- /* K19 */ be_const_int(3),
- }),
+ &be_ktab_class_Matter_UDPServer, /* shared constants */
be_str_weak(_resend_packets),
&be_const_str_solidified,
- ( &(const binstruction[60]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
+ ( &(const binstruction[58]) { /* code */
+ 0x58040009, // 0000 LDCONST R1 K9
0x6008000C, // 0001 GETGBL R2 G12
- 0x880C0101, // 0002 GETMBR R3 R0 K1
+ 0x880C0105, // 0002 GETMBR R3 R0 K5
0x7C080200, // 0003 CALL R2 1
0x14080202, // 0004 LT R2 R1 R2
- 0x780A0034, // 0005 JMPF R2 #003B
- 0x88080101, // 0006 GETMBR R2 R0 K1
+ 0x780A0032, // 0005 JMPF R2 #0039
+ 0x88080105, // 0006 GETMBR R2 R0 K5
0x94080401, // 0007 GETIDX R2 R2 R1
- 0xB80E0400, // 0008 GETNGBL R3 K2
- 0x8C0C0703, // 0009 GETMET R3 R3 K3
- 0x88140504, // 000A GETMBR R5 R2 K4
+ 0xB80E1600, // 0008 GETNGBL R3 K11
+ 0x8C0C0725, // 0009 GETMET R3 R3 K37
+ 0x88140526, // 000A GETMBR R5 R2 K38
0x7C0C0400, // 000B CALL R3 2
- 0x780E002B, // 000C JMPF R3 #0039
- 0x880C0505, // 000D GETMBR R3 R2 K5
- 0x88100106, // 000E GETMBR R4 R0 K6
+ 0x780E0029, // 000C JMPF R3 #0037
+ 0x880C0527, // 000D GETMBR R3 R2 K39
+ 0x88100128, // 000E GETMBR R4 R0 K40
0x180C0604, // 000F LE R3 R3 R4
- 0x780E0017, // 0010 JMPF R3 #0029
- 0xB80E0400, // 0011 GETNGBL R3 K2
- 0x8C0C0707, // 0012 GETMET R3 R3 K7
- 0x60140008, // 0013 GETGBL R5 G8
- 0x88180509, // 0014 GETMBR R6 R2 K9
- 0x7C140200, // 0015 CALL R5 1
- 0x00161005, // 0016 ADD R5 K8 R5
- 0x541A0003, // 0017 LDINT R6 4
- 0x7C0C0600, // 0018 CALL R3 3
- 0x8C0C010A, // 0019 GETMET R3 R0 K10
- 0x5C140400, // 001A MOVE R5 R2
- 0x7C0C0400, // 001B CALL R3 2
- 0xB80E0400, // 001C GETNGBL R3 K2
- 0x8C0C070B, // 001D GETMET R3 R3 K11
- 0x7C0C0200, // 001E CALL R3 1
- 0x8C10010C, // 001F GETMET R4 R0 K12
- 0x88180505, // 0020 GETMBR R6 R2 K5
- 0x7C100400, // 0021 CALL R4 2
- 0x000C0604, // 0022 ADD R3 R3 R4
- 0x900A0803, // 0023 SETMBR R2 K4 R3
- 0x880C0505, // 0024 GETMBR R3 R2 K5
- 0x000C070D, // 0025 ADD R3 R3 K13
- 0x900A0A03, // 0026 SETMBR R2 K5 R3
- 0x0004030D, // 0027 ADD R1 R1 K13
- 0x7002000E, // 0028 JMP #0038
- 0x880C0101, // 0029 GETMBR R3 R0 K1
- 0x8C0C070E, // 002A GETMET R3 R3 K14
- 0x5C140200, // 002B MOVE R5 R1
- 0x7C0C0400, // 002C CALL R3 2
- 0xB80E0400, // 002D GETNGBL R3 K2
- 0x8C0C0707, // 002E GETMET R3 R3 K7
- 0x60140018, // 002F GETGBL R5 G24
- 0x5818000F, // 0030 LDCONST R6 K15
- 0x881C0510, // 0031 GETMBR R7 R2 K16
- 0x88200511, // 0032 GETMBR R8 R2 K17
- 0x88240512, // 0033 GETMBR R9 R2 K18
- 0x88280509, // 0034 GETMBR R10 R2 K9
- 0x7C140A00, // 0035 CALL R5 5
- 0x58180013, // 0036 LDCONST R6 K19
- 0x7C0C0600, // 0037 CALL R3 3
- 0x70020000, // 0038 JMP #003A
- 0x0004030D, // 0039 ADD R1 R1 K13
- 0x7001FFC5, // 003A JMP #0001
- 0x80000000, // 003B RET 0
+ 0x780E0016, // 0010 JMPF R3 #0028
+ 0xB80E1A00, // 0011 GETNGBL R3 K13
+ 0x60100008, // 0012 GETGBL R4 G8
+ 0x88140504, // 0013 GETMBR R5 R2 K4
+ 0x7C100200, // 0014 CALL R4 1
+ 0x00125204, // 0015 ADD R4 K41 R4
+ 0x54160003, // 0016 LDINT R5 4
+ 0x7C0C0400, // 0017 CALL R3 2
+ 0x8C0C0103, // 0018 GETMET R3 R0 K3
+ 0x5C140400, // 0019 MOVE R5 R2
+ 0x7C0C0400, // 001A CALL R3 2
+ 0xB80E1600, // 001B GETNGBL R3 K11
+ 0x8C0C072A, // 001C GETMET R3 R3 K42
+ 0x7C0C0200, // 001D CALL R3 1
+ 0x8C10012B, // 001E GETMET R4 R0 K43
+ 0x88180527, // 001F GETMBR R6 R2 K39
+ 0x7C100400, // 0020 CALL R4 2
+ 0x000C0604, // 0021 ADD R3 R3 R4
+ 0x900A4C03, // 0022 SETMBR R2 K38 R3
+ 0x880C0527, // 0023 GETMBR R3 R2 K39
+ 0x000C070F, // 0024 ADD R3 R3 K15
+ 0x900A4E03, // 0025 SETMBR R2 K39 R3
+ 0x0004030F, // 0026 ADD R1 R1 K15
+ 0x7002000D, // 0027 JMP #0036
+ 0x880C0105, // 0028 GETMBR R3 R0 K5
+ 0x8C0C070A, // 0029 GETMET R3 R3 K10
+ 0x5C140200, // 002A MOVE R5 R1
+ 0x7C0C0400, // 002B CALL R3 2
+ 0xB80E1A00, // 002C GETNGBL R3 K13
+ 0x60100018, // 002D GETGBL R4 G24
+ 0x5814002C, // 002E LDCONST R5 K44
+ 0x8818052D, // 002F GETMBR R6 R2 K45
+ 0x881C0514, // 0030 GETMBR R7 R2 K20
+ 0x88200515, // 0031 GETMBR R8 R2 K21
+ 0x88240504, // 0032 GETMBR R9 R2 K4
+ 0x7C100A00, // 0033 CALL R4 5
+ 0x5814001F, // 0034 LDCONST R5 K31
+ 0x7C0C0400, // 0035 CALL R3 2
+ 0x70020000, // 0036 JMP #0038
+ 0x0004030F, // 0037 ADD R1 R1 K15
+ 0x7001FFC7, // 0038 JMP #0001
+ 0x80000000, // 0039 RET 0
})
)
);
@@ -635,16 +602,15 @@ be_local_closure(class_Matter_UDPServer__resend_packets, /* name */
/********************************************************************
** Solidified function: _backoff_time
********************************************************************/
-extern const bclass be_class_Matter_UDPServer;
be_local_closure(class_Matter_UDPServer__backoff_time, /* name */
be_nested_proto(
10, /* nstack */
1, /* argc */
- 4, /* varg */
+ 12, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
4, /* nstack */
2, /* argc */
@@ -652,7 +618,7 @@ be_local_closure(class_Matter_UDPServer__backoff_time, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_const_int(1),
@@ -670,46 +636,36 @@ be_local_closure(class_Matter_UDPServer__backoff_time, /* name */
0x80040400, // 0006 RET 1 R2
})
),
- &be_class_Matter_UDPServer,
}),
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_UDPServer),
- /* K1 */ be_nested_str_weak(math),
- /* K2 */ be_nested_str_weak(rand),
- /* K3 */ be_const_int(0),
- /* K4 */ be_const_int(1),
- /* K5 */ be_const_real_hex(0x3FCCCCCD),
- /* K6 */ be_const_real_hex(0x3F800000),
- /* K7 */ be_const_real_hex(0x3E800000),
- }),
+ &be_ktab_class_Matter_UDPServer, /* shared constants */
be_str_weak(_backoff_time),
&be_const_str_solidified,
( &(const binstruction[29]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
+ 0x5804002E, // 0000 LDCONST R1 K46
0x84080000, // 0001 CLOSURE R2 P0
- 0xA40E0200, // 0002 IMPORT R3 K1
+ 0xA40E5E00, // 0002 IMPORT R3 K47
0x5412012B, // 0003 LDINT R4 300
0x6014000A, // 0004 GETGBL R5 G10
- 0x8C180702, // 0005 GETMET R6 R3 K2
+ 0x8C180730, // 0005 GETMET R6 R3 K48
0x7C180200, // 0006 CALL R6 1
0x541E00FE, // 0007 LDINT R7 255
0x2C180C07, // 0008 AND R6 R6 R7
0x7C140200, // 0009 CALL R5 1
0x541A00FE, // 000A LDINT R6 255
0x0C140A06, // 000B DIV R5 R5 R6
- 0x24180103, // 000C GT R6 R0 K3
+ 0x24180109, // 000C GT R6 R0 K9
0x781A0001, // 000D JMPF R6 #0010
- 0x04180104, // 000E SUB R6 R0 K4
+ 0x0418010F, // 000E SUB R6 R0 K15
0x70020000, // 000F JMP #0011
- 0x58180003, // 0010 LDCONST R6 K3
+ 0x58180009, // 0010 LDCONST R6 K9
0x5C1C0400, // 0011 MOVE R7 R2
- 0x58200005, // 0012 LDCONST R8 K5
+ 0x58200031, // 0012 LDCONST R8 K49
0x5C240C00, // 0013 MOVE R9 R6
0x7C1C0400, // 0014 CALL R7 2
0x081C0807, // 0015 MUL R7 R4 R7
- 0x08200B07, // 0016 MUL R8 R5 K7
- 0x00220C08, // 0017 ADD R8 K6 R8
+ 0x08200B33, // 0016 MUL R8 R5 K51
+ 0x00226408, // 0017 ADD R8 K50 R8
0x081C0E08, // 0018 MUL R7 R7 R8
0x60200009, // 0019 GETGBL R8 G9
0x5C240E00, // 001A MOVE R9 R7
@@ -724,105 +680,79 @@ be_local_closure(class_Matter_UDPServer__backoff_time, /* name */
/********************************************************************
** Solidified function: loop
********************************************************************/
-extern const bclass be_class_Matter_UDPServer;
be_local_closure(class_Matter_UDPServer_loop, /* name */
be_nested_proto(
- 12, /* nstack */
+ 11, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UDPServer,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[20]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(profiler),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(udp_socket),
- /* K4 */ be_nested_str_weak(read),
- /* K5 */ be_nested_str_weak(packet),
- /* K6 */ be_nested_str_weak(start),
- /* K7 */ be_const_int(1),
- /* K8 */ be_nested_str_weak(remote_ip),
- /* K9 */ be_nested_str_weak(remote_port),
- /* K10 */ be_nested_str_weak(tasmota),
- /* K11 */ be_nested_str_weak(loglevel),
- /* K12 */ be_nested_str_weak(log),
- /* K13 */ be_nested_str_weak(MTR_X3A_X20UDP_X20received_X20from_X20_X5B_X25s_X5D_X3A_X25i),
- /* K14 */ be_nested_str_weak(dispatch_cb),
- /* K15 */ be_nested_str_weak(udp_loop_dispatch),
- /* K16 */ be_nested_str_weak(dump),
- /* K17 */ be_const_int(2),
- /* K18 */ be_nested_str_weak(MAX_PACKETS_READ),
- /* K19 */ be_nested_str_weak(_resend_packets),
- }),
+ &be_ktab_class_Matter_UDPServer, /* shared constants */
be_str_weak(loop),
&be_const_str_solidified,
- ( &(const binstruction[63]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
- 0x58080002, // 0002 LDCONST R2 K2
- 0x880C0103, // 0003 GETMBR R3 R0 K3
+ ( &(const binstruction[59]) { /* code */
+ 0xB8060200, // 0000 GETNGBL R1 K1
+ 0x88040334, // 0001 GETMBR R1 R1 K52
+ 0x58080009, // 0002 LDCONST R2 K9
+ 0x880C0111, // 0003 GETMBR R3 R0 K17
0x4C100000, // 0004 LDNIL R4
0x1C0C0604, // 0005 EQ R3 R3 R4
0x780E0000, // 0006 JMPF R3 #0008
0x80000600, // 0007 RET 0
- 0x880C0103, // 0008 GETMBR R3 R0 K3
- 0x8C0C0704, // 0009 GETMET R3 R3 K4
- 0x88140105, // 000A GETMBR R5 R0 K5
+ 0x880C0111, // 0008 GETMBR R3 R0 K17
+ 0x8C0C0735, // 0009 GETMET R3 R3 K53
+ 0x88140136, // 000A GETMBR R5 R0 K54
0x7C0C0400, // 000B CALL R3 2
0x4C100000, // 000C LDNIL R4
0x20100604, // 000D NE R4 R3 R4
- 0x7812002C, // 000E JMPF R4 #003C
- 0x8C100306, // 000F GETMET R4 R1 K6
+ 0x78120028, // 000E JMPF R4 #0038
+ 0x8C100337, // 000F GETMET R4 R1 K55
0x7C100200, // 0010 CALL R4 1
- 0x90020A03, // 0011 SETMBR R0 K5 R3
- 0x00080507, // 0012 ADD R2 R2 K7
- 0x88100103, // 0013 GETMBR R4 R0 K3
- 0x88100908, // 0014 GETMBR R4 R4 K8
- 0x88140103, // 0015 GETMBR R5 R0 K3
- 0x88140B09, // 0016 GETMBR R5 R5 K9
- 0xB81A1400, // 0017 GETNGBL R6 K10
- 0x8C180D0B, // 0018 GETMET R6 R6 K11
+ 0x90026C03, // 0011 SETMBR R0 K54 R3
+ 0x0008050F, // 0012 ADD R2 R2 K15
+ 0x88100111, // 0013 GETMBR R4 R0 K17
+ 0x8810091B, // 0014 GETMBR R4 R4 K27
+ 0x88140111, // 0015 GETMBR R5 R0 K17
+ 0x88140B1C, // 0016 GETMBR R5 R5 K28
+ 0xB81A1600, // 0017 GETNGBL R6 K11
+ 0x8C180D0C, // 0018 GETMET R6 R6 K12
0x54220003, // 0019 LDINT R8 4
0x7C180400, // 001A CALL R6 2
- 0x781A0008, // 001B JMPF R6 #0025
- 0xB81A1400, // 001C GETNGBL R6 K10
- 0x8C180D0C, // 001D GETMET R6 R6 K12
- 0x60200018, // 001E GETGBL R8 G24
- 0x5824000D, // 001F LDCONST R9 K13
- 0x5C280800, // 0020 MOVE R10 R4
- 0x5C2C0A00, // 0021 MOVE R11 R5
- 0x7C200600, // 0022 CALL R8 3
- 0x54260003, // 0023 LDINT R9 4
- 0x7C180600, // 0024 CALL R6 3
- 0x8818010E, // 0025 GETMBR R6 R0 K14
- 0x781A0007, // 0026 JMPF R6 #002F
- 0x8C18030C, // 0027 GETMET R6 R1 K12
- 0x5820000F, // 0028 LDCONST R8 K15
- 0x7C180400, // 0029 CALL R6 2
- 0x8C18010E, // 002A GETMET R6 R0 K14
- 0x5C200600, // 002B MOVE R8 R3
- 0x5C240800, // 002C MOVE R9 R4
- 0x5C280A00, // 002D MOVE R10 R5
- 0x7C180800, // 002E CALL R6 4
- 0x8C180310, // 002F GETMET R6 R1 K16
- 0x58200011, // 0030 LDCONST R8 K17
- 0x7C180400, // 0031 CALL R6 2
- 0x88180112, // 0032 GETMBR R6 R0 K18
- 0x14180406, // 0033 LT R6 R2 R6
- 0x781A0004, // 0034 JMPF R6 #003A
- 0x88180103, // 0035 GETMBR R6 R0 K3
- 0x8C180D04, // 0036 GETMET R6 R6 K4
- 0x7C180200, // 0037 CALL R6 1
- 0x5C0C0C00, // 0038 MOVE R3 R6
- 0x70020000, // 0039 JMP #003B
- 0x4C0C0000, // 003A LDNIL R3
- 0x7001FFCF, // 003B JMP #000C
- 0x8C100113, // 003C GETMET R4 R0 K19
- 0x7C100200, // 003D CALL R4 1
- 0x80000000, // 003E RET 0
+ 0x781A0007, // 001B JMPF R6 #0024
+ 0xB81A1A00, // 001C GETNGBL R6 K13
+ 0x601C0018, // 001D GETGBL R7 G24
+ 0x58200038, // 001E LDCONST R8 K56
+ 0x5C240800, // 001F MOVE R9 R4
+ 0x5C280A00, // 0020 MOVE R10 R5
+ 0x7C1C0600, // 0021 CALL R7 3
+ 0x54220003, // 0022 LDINT R8 4
+ 0x7C180400, // 0023 CALL R6 2
+ 0x88180118, // 0024 GETMBR R6 R0 K24
+ 0x781A0004, // 0025 JMPF R6 #002B
+ 0x8C180118, // 0026 GETMET R6 R0 K24
+ 0x5C200600, // 0027 MOVE R8 R3
+ 0x5C240800, // 0028 MOVE R9 R4
+ 0x5C280A00, // 0029 MOVE R10 R5
+ 0x7C180800, // 002A CALL R6 4
+ 0x8C180339, // 002B GETMET R6 R1 K57
+ 0x5820003A, // 002C LDCONST R8 K58
+ 0x7C180400, // 002D CALL R6 2
+ 0x8818013B, // 002E GETMBR R6 R0 K59
+ 0x14180406, // 002F LT R6 R2 R6
+ 0x781A0004, // 0030 JMPF R6 #0036
+ 0x88180111, // 0031 GETMBR R6 R0 K17
+ 0x8C180D35, // 0032 GETMET R6 R6 K53
+ 0x7C180200, // 0033 CALL R6 1
+ 0x5C0C0C00, // 0034 MOVE R3 R6
+ 0x70020000, // 0035 JMP #0037
+ 0x4C0C0000, // 0036 LDNIL R3
+ 0x7001FFD3, // 0037 JMP #000C
+ 0x8C10013C, // 0038 GETMET R4 R0 K60
+ 0x7C100200, // 0039 CALL R4 1
+ 0x80000000, // 003A RET 0
})
)
);
@@ -832,18 +762,17 @@ be_local_closure(class_Matter_UDPServer_loop, /* name */
/********************************************************************
** Solidified function: every_second
********************************************************************/
-extern const bclass be_class_Matter_UDPServer;
be_local_closure(class_Matter_UDPServer_every_second, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UDPServer,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_UDPServer, /* shared constants */
be_str_weak(every_second),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h
index 8bae5ab68..195524c4d 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_UI.h
@@ -3,29 +3,257 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+extern const bclass be_class_Matter_UI;
+// compact class 'Matter_UI' ktab size: 229, total: 359 (saved 1040 bytes)
+static const bvalue be_ktab_class_Matter_UI[229] = {
+ /* K0 */ be_const_class(be_class_Matter_UI),
+ /* K1 */ be_nested_str_weak(keys),
+ /* K2 */ be_nested_str_weak(contains),
+ /* K3 */ be_nested_str_weak(stop_iteration),
+ /* K4 */ be_nested_str_weak(webserver),
+ /* K5 */ be_nested_str_weak(check_privileged_access),
+ /* K6 */ be_nested_str_weak(content_start),
+ /* K7 */ be_nested_str_weak(Matter_X20Advanced_X20Configuration),
+ /* K8 */ be_nested_str_weak(content_send_style),
+ /* K9 */ be_nested_str_weak(matter_enabled),
+ /* K10 */ be_nested_str_weak(show_passcode_form),
+ /* K11 */ be_nested_str_weak(show_fabric_info),
+ /* K12 */ be_nested_str_weak(web_add_config_button),
+ /* K13 */ be_nested_str_weak(content_stop),
+ /* K14 */ be_nested_str_weak(Matter),
+ /* K15 */ be_nested_str_weak(show_enable),
+ /* K16 */ be_nested_str_weak(show_plugins_configuration),
+ /* K17 */ be_nested_str_weak(content_send),
+ /* K18 */ be_nested_str_weak(_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cform_X20id_X3D_X27butmat_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27mattera_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X20name_X3D_X27_X27_X3EAdvanced_X20Configuration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E),
+ /* K19 */ be_nested_str_weak(content_button),
+ /* K20 */ be_nested_str_weak(BUTTON_CONFIGURATION),
+ /* K21 */ be_nested_str_weak(),
+ /* K22 */ be_nested_str_weak(device),
+ /* K23 */ be_nested_str_weak(get_plugin_class_displayname),
+ /* K24 */ be_nested_str_weak(tasmota),
+ /* K25 */ be_nested_str_weak(get_option),
+ /* K26 */ be_nested_str_weak(matter),
+ /* K27 */ be_nested_str_weak(MATTER_OPTION),
+ /* K28 */ be_const_int(0),
+ /* K29 */ be_nested_str_weak(POWER),
+ /* K30 */ be_const_int(1),
+ /* K31 */ be_nested_str_weak(HSBColor),
+ /* K32 */ be_nested_str_weak(CT),
+ /* K33 */ be_nested_str_weak(Dimmer),
+ /* K34 */ be_nested_str_weak(push),
+ /* K35 */ be_nested_str_weak(type),
+ /* K36 */ be_nested_str_weak(light0),
+ /* K37 */ be_nested_str_weak(relay),
+ /* K38 */ be_nested_str_weak(light1),
+ /* K39 */ be_nested_str_weak(light2),
+ /* K40 */ be_nested_str_weak(light3),
+ /* K41 */ be_nested_str_weak(autoconf),
+ /* K42 */ be_nested_str_weak(autoconf_sensors_list),
+ /* K43 */ be_nested_str_weak(sessions),
+ /* K44 */ be_nested_str_weak(count_active_fabrics),
+ /* K45 */ be_nested_str_weak(_X3Cdiv_X20style_X3D_X27text_X2Dalign_X3Aright_X3Bfont_X2Dsize_X3A11px_X3Bcolor_X3A_X23aaa_X3Bpadding_X3A0px_X3B_X27_X3E_X25s_X3C_X2Fdiv_X3E),
+ /* K46 */ be_nested_str_weak(Matter_X3A_X20No_X20active_X20association),
+ /* K47 */ be_nested_str_weak(Matter_X3A_X20),
+ /* K48 */ be_nested_str_weak(_X20active_X20association),
+ /* K49 */ be_nested_str_weak(s),
+ /* K50 */ be_nested_str_weak(show_bridge_status),
+ /* K51 */ be_nested_str_weak(commissioning),
+ /* K52 */ be_nested_str_weak(is_root_commissioning_open),
+ /* K53 */ be_nested_str_weak(show_commissioning_info),
+ /* K54 */ be_nested_str_weak(Matter_X20Create_X20new_X20endpoint),
+ /* K55 */ be_nested_str_weak(arg),
+ /* K56 */ be_nested_str_weak(url),
+ /* K57 */ be_nested_str_weak(show_remote_autoconf),
+ /* K58 */ be_nested_str_weak(string),
+ /* K59 */ be_nested_str_weak(introspect),
+ /* K60 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BCurrent_X20Configuration_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
+ /* K61 */ be_nested_str_weak(_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X3E_X3Cp_X3E_X3Cb_X3ELocal_X20sensors_X20and_X20devices_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E),
+ /* K62 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20width_X3D_X2725_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X23_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2778_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EName_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EType_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EParameter_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2715_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E),
+ /* K63 */ be_nested_str_weak(plugins_config),
+ /* K64 */ be_nested_str_weak(remove),
+ /* K65 */ be_nested_str_weak(0),
+ /* K66 */ be_nested_str_weak(k2l_num),
+ /* K67 */ be_nested_str_weak(find),
+ /* K68 */ be_nested_str_weak(http_),
+ /* K69 */ be_nested_str_weak(plugins_classes),
+ /* K70 */ be_nested_str_weak(ui_conf_to_string),
+ /* K71 */ be_nested_str_weak(ARG_HINT),
+ /* K72 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X25i_X3C_X2Fb_X3E_X3C_X2Ftd_X3E),
+ /* K73 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X3E_X3C_X2Ftd_X3E),
+ /* K74 */ be_nested_str_weak(html_escape),
+ /* K75 */ be_nested_str_weak(name),
+ /* K76 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Ftd_X3E),
+ /* K77 */ be_nested_str_weak(plugin_name),
+ /* K78 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X20placeholder_X3D_X27_X25s_X27_X20title_X3D_X27_X25s_X27_X3E_X3C_X2Ftd_X3E),
+ /* K79 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27text_X2Dalign_X3Acenter_X3B_X27_X3E_X3Cbutton_X20name_X3D_X27del_X25i_X27_X20title_X3D_X27Delete_X20Endpoint_X20_X25i_X27_X20style_X3D_X27background_X3Anone_X3Bborder_X3Anone_X3Bline_X2Dheight_X3A1_X3B_X27_X20onclick_X3D_X22return_X20confirm_X28_X27Confirm_X20removing_X20endpoint_X20_X25i_X27_X29_X22_X3E_X26_X23128293_X3B_X3C_X2Fbutton_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E),
+ /* K80 */ be_nested_str_weak(_X3C_X2Ftable_X3E),
+ /* K81 */ be_nested_str_weak(_X3Cp_X3E_X26lt_X3Bnone_X26gt_X3B_X3C_X2Fp_X3E),
+ /* K82 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E),
+ /* K83 */ be_nested_str_weak(sort_distinct),
+ /* K84 */ be_nested_str_weak(get_plugin_remote_info),
+ /* K85 */ be_nested_str_weak(_X26_X23x1F517_X3B_X20_X3Ca_X20target_X3D_X27_blank_X27_X20title_X3D_X27http_X3A_X2F_X2F_X25s_X2F_X27_X20href_X3D_X22http_X3A_X2F_X2F_X25s_X2F_X3F_X22_X3E_X25s_X3C_X2Fa_X3E),
+ /* K86 */ be_nested_str_weak(_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E_X3Ctr_X3E_X3Ctd_X20width_X3D_X2725_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2778_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2715_X27_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E),
+ /* K87 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20width_X3D_X2722_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X25i_X3C_X2Fb_X3E_X3C_X2Ftd_X3E),
+ /* K88 */ be_nested_str_weak(_X3Ctd_X20width_X3D_X2778_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X20placeholder_X3D_X27_X28optional_X29_X27_X3E_X3C_X2Ftd_X3E),
+ /* K89 */ be_nested_str_weak(_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Fselect_X3E_X3C_X2Ftd_X3E),
+ /* K90 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X278_X27_X20value_X3D_X27_X25s_X27_X20title_X3D_X27_X25s_X27_X3E_X3C_X2Ftd_X3E),
+ /* K91 */ be_nested_str_weak(_X3Ctd_X20width_X3D_X2715_X27_X20style_X3D_X27text_X2Dalign_X3Acenter_X3B_X27_X3E_X3Cbutton_X20name_X3D_X27del_X25i_X27_X20style_X3D_X27background_X3Anone_X3Bborder_X3Anone_X3Bline_X2Dheight_X3A1_X3B_X27_X20onclick_X3D_X22return_X20confirm_X28_X27Confirm_X20removing_X20endpoint_X27_X29_X22_X3E_X26_X23128293_X3B_X3C_X2Fbutton_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E),
+ /* K92 */ be_nested_str_weak(_X3C_X2Ftable_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
+ /* K93 */ be_nested_str_weak(_X3Cbutton_X20name_X3D_X27config_X27_X20class_X3D_X27button_X20bgrn_X27_X3EChange_X20configuration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E),
+ /* K94 */ be_nested_str_weak(show_plugins_hints_js),
+ /* K95 */ be_nested_str_weak(_CLASSES_TYPES),
+ /* K96 */ be_nested_str_long(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BAdd_X20to_X20Configuration_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3EAdd_X20local_X20sensor_X20or_X20device_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E_X3Ctr_X3E_X3Ctd_X20width_X3D_X27100_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EName_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EType_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EParameter_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E_X3Ctr_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X27_X20placeholder_X3D_X27_X28optional_X29_X27_X20title_X3D_X27_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cselect_X20id_X3D_X27pi_X27_X20name_X3D_X27pi_X27_X20onchange_X3D_X27otm_X28_X22arg_X22_X2Cthis_X2Evalue_X29_X27_X3E),
+ /* K97 */ be_nested_str_weak(plugin_option),
+ /* K98 */ be_nested_str_long(_X3C_X2Fselect_X3E_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20id_X3D_X27arg_X27_X20name_X3D_X27arg_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X27_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E_X3C_X2Ftable_X3E_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E_X3Cbutton_X20name_X3D_X27addep_X27_X20class_X3D_X27button_X20bgrn_X27_X3ECreate_X20new_X20endpoint_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3Chr_X3E_X3Cp_X3E_X3Cb_X3EAdd_X20Remote_X20Tasmota_X20or_X20OpenBK_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Cform_X20action_X3D_X27_X2Fmatteradd_X27_X20method_X3D_X27get_X27_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E_X3Ctr_X3E_X3Ctd_X20width_X3D_X2730_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3Ehttp_X3A_X2F_X2F_X3C_X2Fb_X3E_X3C_X2Ftd_X3E_X3Ctd_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27url_X27_X20size_X3D_X278_X27_X20value_X3D_X27_X27_X20required_X20placeholder_X3D_X27IP_X20or_X20domain_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2710_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X2F_X3C_X2Fb_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E_X3C_X2Ftr_X3E_X3C_X2Ftable_X3E_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E_X3Cbutton_X20class_X3D_X27button_X20bgrn_X27_X3EAuto_X2Dconfigure_X20remote_X20Tasmota_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3Chr_X3E_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20RESET_X20the_X20configuration_X20to_X20the_X20default_X2E_X20You_X20will_X20need_X20to_X20associate_X20again_X2E_X22_X29_X3B_X27_X3E_X3Cbutton_X20name_X3D_X27auto_X27_X20class_X3D_X27button_X20bred_X27_X3EReset_X20all_X20and_X20Auto_X2Ddiscover_X3C_X2Fbutton_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Fform_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E),
+ /* K99 */ be_nested_str_weak(commissioning_open),
+ /* K100 */ be_nested_str_weak(millis),
+ /* K101 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BCommissioning_X20open_X20for_X20_X25i_X20min_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
+ /* K102 */ be_nested_str_weak(compute_manual_pairing_code),
+ /* K103 */ be_nested_str_weak(_X3Cp_X3EManual_X20pairing_X20code_X3A_X3Cbr_X3E_X3Cb_X3E_X25s_X2D_X25s_X2D_X25s_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Chr_X3E),
+ /* K104 */ be_const_int(3),
+ /* K105 */ be_const_int(2147483647),
+ /* K106 */ be_nested_str_weak(_X3Cdiv_X3E_X3Ccenter_X3E),
+ /* K107 */ be_nested_str_weak(compute_qrcode_content),
+ /* K108 */ be_nested_str_weak(show_qrcode),
+ /* K109 */ be_nested_str_weak(_X3Cp_X3E_X20_X25s_X3C_X2Fp_X3E),
+ /* K110 */ be_nested_str_weak(_X3C_X2Fdiv_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
+ /* K111 */ be_nested_str_weak(json),
+ /* K112 */ be_nested_str_weak(Plugin_Device),
+ /* K113 */ be_nested_str_weak(PROBE_TIMEOUT),
+ /* K114 */ be_nested_str_weak(HTTP_remote),
+ /* K115 */ be_nested_str_weak(call_sync),
+ /* K116 */ be_nested_str_weak(Status_X2010),
+ /* K117 */ be_nested_str_weak(load),
+ /* K118 */ be_nested_str_weak(StatusSNS),
+ /* K119 */ be_nested_str_weak(Status_X2011),
+ /* K120 */ be_nested_str_weak(StatusSTS),
+ /* K121 */ be_nested_str_weak(log),
+ /* K122 */ be_nested_str_weak(MTR_X3A_X20probed_X20_X27_X25s_X27_X20status10_X3D_X25s_X20satus11_X3D_X25s),
+ /* K123 */ be_nested_str_weak(generate_config_from_status),
+ /* K124 */ be_nested_str_weak(_CLASSES_TYPES2),
+ /* K125 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BMatter_X20Remote_X20Device_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3EAdd_X20Remote_X20sensor_X20or_X20device_X3C_X2Fb_X3E_X3C_X2Fp_X3E),
+ /* K126 */ be_nested_str_weak(_X3Cp_X3E_X26_X23x1F517_X3B_X20_X3Ca_X20target_X3D_X27_blank_X27_X20href_X3D_X22http_X3A_X2F_X2F_X25s_X2F_X3F_X22_X3E_X25s_X3C_X2Fa_X3E_X3C_X2Fp_X3E),
+ /* K127 */ be_nested_str_weak(_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E_X3Ctr_X3E_X3Ctd_X20width_X3D_X27100_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EName_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EType_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EParameter_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E),
+ /* K128 */ be_nested_str_weak(_X3Cinput_X20name_X3D_X27url_X27_X20type_X3D_X27hidden_X27_X20value_X3D_X27_X25s_X27_X3E),
+ /* K129 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X27_X20placeholder_X3D_X27_X28optional_X29_X27_X3E_X3C_X2Ftd_X3E),
+ /* K130 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cselect_X20name_X3D_X27pi_X25i_X27_X20onchange_X3D_X27otm_X28_X22arg_X25i_X22_X2Cthis_X2Evalue_X29_X27_X3E),
+ /* K131 */ be_nested_str_weak(_X3C_X2Fselect_X3E_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E),
+ /* K132 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27text_X27_X20id_X3D_X27arg_X25i_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X20placeholder_X3D_X27_X25s_X27_X20title_X3D_X27_X25s_X27_X3E),
+ /* K133 */ be_nested_str_weak(_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E),
+ /* K134 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27text_X27_X20id_X3D_X27arg_X25i_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X3E),
+ /* K135 */ be_nested_str_weak(_X3C_X2Ftable_X3E_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E_X3Cbutton_X20name_X3D_X27addrem_X27_X20class_X3D_X27button_X20bgrn_X27_X3EAdd_X20endpoints_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fform_X3E_X3C_X2Ffieldset_X3E),
+ /* K136 */ be_nested_str_weak(_X3Cp_X3E_X3Cb_X3EUnable_X20to_X20connect_X20to_X20_X27_X25s_X27_X3C_X2Fb_X3E_X3C_X2Fp_X3E),
+ /* K137 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BFabrics_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cp_X3EAssociated_X20fabrics_X3A_X3C_X2Fp_X3E),
+ /* K138 */ be_nested_str_weak(_X3Cp_X3E_X3Cb_X3ENone_X3C_X2Fb_X3E_X3C_X2Fp_X3E),
+ /* K139 */ be_nested_str_weak(fabrics),
+ /* K140 */ be_nested_str_weak(persistables),
+ /* K141 */ be_nested_str_weak(_X3Chr_X3E),
+ /* K142 */ be_nested_str_weak(fabric_label),
+ /* K143 */ be_nested_str_weak(_X3CNo_X20label_X3E),
+ /* K144 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3B_X23_X25i_X20_X25s_X3C_X2Fb_X3E_X20_X28_X25s_X29_X26nbsp_X3B_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
+ /* K145 */ be_nested_str_weak(get_fabric_index),
+ /* K146 */ be_nested_str_weak(get_admin_vendor_name),
+ /* K147 */ be_nested_str_weak(get_fabric_id),
+ /* K148 */ be_nested_str_weak(copy),
+ /* K149 */ be_nested_str_weak(reverse),
+ /* K150 */ be_nested_str_weak(get_device_id),
+ /* K151 */ be_nested_str_weak(Fabric_X3A_X20_X25s_X3Cbr_X3E),
+ /* K152 */ be_nested_str_weak(tohex),
+ /* K153 */ be_nested_str_weak(Device_X3A_X20_X25s_X3Cbr_X3E_X26nbsp_X3B),
+ /* K154 */ be_nested_str_weak(_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X20onsubmit_X3D_X27return_X20confirm_X28_X22Are_X20you_X20sure_X3F_X22_X29_X3B_X27_X3E),
+ /* K155 */ be_nested_str_weak(_X3Cinput_X20name_X3D_X27del_fabric_X27_X20type_X3D_X27hidden_X27_X20value_X3D_X27_X25i_X27_X3E),
+ /* K156 */ be_nested_str_weak(_X3Cbutton_X20name_X3D_X27del_X27_X20class_X3D_X27button_X20bgrn_X27_X3EDelete_X20Fabric_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
+ /* K157 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
+ /* K158 */ be_nested_str_weak(has_arg),
+ /* K159 */ be_nested_str_weak(mtc0),
+ /* K160 */ be_nested_str_weak(stop_basic_commissioning),
+ /* K161 */ be_nested_str_weak(mtc1),
+ /* K162 */ be_nested_str_weak(start_root_basic_commissioning),
+ /* K163 */ be_nested_str_weak(split),
+ /* K164 */ be_nested_str_weak(_X7C),
+ /* K165 */ be_nested_str_weak(_X3Coption_X20value_X3D_X27_X27_X3E_X3C_X2Foption_X3E),
+ /* K166 */ be_nested_str_weak(_X2Dvirtual),
+ /* K167 */ be_nested_str_weak(_X3Coption_X20value_X3D_X27_X27_X20disabled_X3E_X2D_X2D_X2D_X20Virtual_X20Devices_X20_X2D_X2D_X2D_X3C_X2Foption_X3E),
+ /* K168 */ be_nested_str_weak(_X3Coption_X20value_X3D_X27_X25s_X27_X25s_X3E_X25s_X3C_X2Foption_X3E),
+ /* K169 */ be_nested_str_weak(_X20selected),
+ /* K170 */ be_nested_str_weak(_X3Cp_X3E_X3Cform_X20id_X3Dac_X20action_X3D_X27matterc_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X3E),
+ /* K171 */ be_nested_str_weak(_LOGO),
+ /* K172 */ be_nested_str_weak(_X20Configure_X20Matter_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E),
+ /* K173 */ be_nested_str_weak(add_driver),
+ /* K174 */ be_nested_str_weak(plugins),
+ /* K175 */ be_nested_str_weak(BRIDGE),
+ /* K176 */ be_nested_str_weak(http_remote),
+ /* K177 */ be_nested_str_weak(addr),
+ /* K178 */ be_nested_str_weak(_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E),
+ /* K179 */ be_nested_str_weak(_STYLESHEET),
+ /* K180 */ be_nested_str_weak(k2l),
+ /* K181 */ be_nested_str_weak(_X3Ctr_X20class_X3D_X27ztdm_X20htrm_X27_X3E_X3Ctd_X3E_X26_X23x1F517_X3B_X20_X3Ca_X20target_X3D_X27_blank_X27_X20title_X3D_X27http_X3A_X2F_X2F_X25s_X2F_X27_X20href_X3D_X22http_X3A_X2F_X2F_X25s_X2F_X3F_X22_X27_X3E_X25s_X3C_X2Fa_X3E_X3C_X2Ftd_X3E),
+ /* K182 */ be_nested_str_weak(web_last_seen),
+ /* K183 */ be_nested_str_weak(_X3Ctr_X20class_X3D_X27htrm_X27_X3E_X3Ctd_X20colspan_X3D_X272_X27_X3E),
+ /* K184 */ be_nested_str_weak(web_values),
+ /* K185 */ be_nested_str_weak(_X3C_X2Ftable_X3E_X3Chr_X3E),
+ /* K186 */ be_nested_str_weak(on),
+ /* K187 */ be_nested_str_weak(_X2Fmatterc),
+ /* K188 */ be_nested_str_weak(HTTP_GET),
+ /* K189 */ be_nested_str_weak(HTTP_POST),
+ /* K190 */ be_nested_str_weak(_X2Fmattera),
+ /* K191 */ be_nested_str_weak(_X2Fmatteradd),
+ /* K192 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BMatter_X20Advanced_X20Configuration_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X20onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E_X3Cp_X3EPasscode_X3A_X3C_X2Fp_X3E),
+ /* K193 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27number_X27_X20min_X3D_X271_X27_X20max_X3D_X2799999998_X27_X20name_X3D_X27passcode_X27_X20value_X3D_X27_X25i_X27_X3E),
+ /* K194 */ be_nested_str_weak(root_passcode),
+ /* K195 */ be_nested_str_weak(_X3Cp_X3EDistinguish_X20id_X3A_X3C_X2Fp_X3E),
+ /* K196 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27number_X27_X20min_X3D_X270_X27_X20max_X3D_X274095_X27_X20name_X3D_X27discriminator_X27_X20value_X3D_X27_X25i_X27_X3E),
+ /* K197 */ be_nested_str_weak(root_discriminator),
+ /* K198 */ be_nested_str_weak(ipv4only),
+ /* K199 */ be_nested_str_weak(_X20checked),
+ /* K200 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20type_X3D_X27checkbox_X27_X20name_X3D_X27ipv4_X27_X25s_X3EIPv4_X20only_X3C_X2Fp_X3E),
+ /* K201 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cbutton_X20name_X3D_X27passcode_X27_X20class_X3D_X27button_X20bgrn_X27_X3EChange_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
+ /* K202 */ be_nested_str_weak(_X20),
+ /* K203 */ be_nested_str_weak(_XE2_X96_X84),
+ /* K204 */ be_nested_str_weak(_XE2_X96_X80),
+ /* K205 */ be_nested_str_weak(_XE2_X96_X88),
+ /* K206 */ be_nested_str_weak(QRCode),
+ /* K207 */ be_nested_str_weak(encode_str),
+ /* K208 */ be_nested_str_weak(bitmap),
+ /* K209 */ be_nested_str_weak(size),
+ /* K210 */ be_nested_str_weak(_X3Cstyle_X3E_X2Eqr_X7Bfont_X2Dfamily_X3Amonospace_X3B_X20margin_X3A0_X3B_X20padding_X3A0_X3B_X20white_X2Dspace_X3Apre_X3B_X20font_X2Dsize_X3A18px_X3B_X20color_X3A_X23fff_X3B_X20line_X2Dheight_X3A100_X25_X3B_X7D_X3C_X2Fstyle_X3E),
+ /* K211 */ be_nested_str_weak(_X3Cdiv_X20style_X3D_X27transform_X3Ascale_X28_X2E8_X2C1_X29_X3B_X20display_X3Ainline_X2Dblock_X3B_X27_X3E),
+ /* K212 */ be_nested_str_weak(_X3Cdiv_X20class_X3D_X27qr_X27_X3E),
+ /* K213 */ be_nested_str_weak(_X3C_X2Fdiv_X3E),
+ /* K214 */ be_const_int(2),
+ /* K215 */ be_nested_str_weak(_X3Cdiv_X20class_X3D_X27qr_X27_X20style_X3D_X27background_X2Dcolor_X3A_X23000_X3B_X27_X3E),
+ /* K216 */ be_nested_str_weak(_X2F_X3Cdiv_X3E),
+ /* K217 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BMatter_X20_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X20style_X3D_X27width_X3A320px_X3B_X27_X3ECheck_X20the_X20_X3Ca_X20href_X3D_X27https_X3A_X2F_X2Ftasmota_X2Egithub_X2Eio_X2Fdocs_X2FMatter_X2F_X27_X20target_X3D_X27_blank_X27_X3EMatter_X20documentation_X3C_X2Fa_X3E_X2E_X3C_X2Fp_X3E_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X3E),
+ /* K218 */ be_nested_str_weak(checked),
+ /* K219 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20id_X3D_X27menable_X27_X20type_X3D_X27checkbox_X27_X20name_X3D_X27menable_X27_X20_X25s_X3E),
+ /* K220 */ be_nested_str_weak(_X3Clabel_X20for_X3D_X27menable_X27_X3E_X3Cb_X3EMatter_X20enable_X3C_X2Fb_X3E_X3C_X2Flabel_X3E_X3C_X2Fp_X3E),
+ /* K221 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20id_X3D_X27comm_X27_X20type_X3D_X27checkbox_X27_X20name_X3D_X27comm_X27_X20_X25s_X3E),
+ /* K222 */ be_nested_str_weak(_X3Clabel_X20for_X3D_X27comm_X27_X3E_X3Cb_X3ECommissioning_X20open_X3C_X2Fb_X3E_X3C_X2Flabel_X3E_X3C_X2Fp_X3E),
+ /* K223 */ be_nested_str_weak(disable_bridge_mode),
+ /* K224 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20type_X3D_X27checkbox_X27_X20name_X3D_X27nobridge_X27_X25s_X3E_X3Cb_X3EForce_X20Static_X20endpoints_X3C_X2Fb_X3E_X20_X28non_X2Dbridge_X29_X3C_X2Fp_X3E),
+ /* K225 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cbutton_X20name_X3D_X27save_X27_X20class_X3D_X27button_X20bgrn_X27_X3ESave_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
+ /* K226 */ be_nested_str_weak(_X3Cscript_X20type_X3D_X27text_X2Fjavascript_X27_X3Evar_X20hm_X3D_X25s_X3Bvar_X20hl_X3D_X25s_X3B_X3C_X2Fscript_X3E),
+ /* K227 */ be_nested_str_weak(dump),
+ /* K228 */ be_nested_str_weak(_ADD_ENDPOINT_JS),
+};
+
extern const bclass be_class_Matter_UI;
/********************************************************************
** Solidified function: equal_map
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_equal_map, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 4, /* varg */
+ 12, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_UI),
- /* K1 */ be_nested_str_weak(keys),
- /* K2 */ be_nested_str_weak(contains),
- /* K3 */ be_nested_str_weak(stop_iteration),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(equal_map),
&be_const_str_solidified,
( &(const binstruction[53]) { /* code */
@@ -91,53 +319,41 @@ be_local_closure(class_Matter_UI_equal_map, /* name */
/********************************************************************
** Solidified function: page_part_mgr_adv
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_page_part_mgr_adv, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(check_privileged_access),
- /* K2 */ be_nested_str_weak(content_start),
- /* K3 */ be_nested_str_weak(Matter_X20Advanced_X20Configuration),
- /* K4 */ be_nested_str_weak(content_send_style),
- /* K5 */ be_nested_str_weak(matter_enabled),
- /* K6 */ be_nested_str_weak(show_passcode_form),
- /* K7 */ be_nested_str_weak(show_fabric_info),
- /* K8 */ be_nested_str_weak(web_add_config_button),
- /* K9 */ be_nested_str_weak(content_stop),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(page_part_mgr_adv),
&be_const_str_solidified,
( &(const binstruction[23]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080301, // 0001 GETMET R2 R1 K1
+ 0xA4060800, // 0000 IMPORT R1 K4
+ 0x8C080305, // 0001 GETMET R2 R1 K5
0x7C080200, // 0002 CALL R2 1
0x740A0001, // 0003 JMPT R2 #0006
0x4C080000, // 0004 LDNIL R2
0x80040400, // 0005 RET 1 R2
- 0x8C080302, // 0006 GETMET R2 R1 K2
- 0x58100003, // 0007 LDCONST R4 K3
+ 0x8C080306, // 0006 GETMET R2 R1 K6
+ 0x58100007, // 0007 LDCONST R4 K7
0x7C080400, // 0008 CALL R2 2
- 0x8C080304, // 0009 GETMET R2 R1 K4
+ 0x8C080308, // 0009 GETMET R2 R1 K8
0x7C080200, // 000A CALL R2 1
- 0x8C080105, // 000B GETMET R2 R0 K5
+ 0x8C080109, // 000B GETMET R2 R0 K9
0x7C080200, // 000C CALL R2 1
0x780A0003, // 000D JMPF R2 #0012
- 0x8C080106, // 000E GETMET R2 R0 K6
+ 0x8C08010A, // 000E GETMET R2 R0 K10
0x7C080200, // 000F CALL R2 1
- 0x8C080107, // 0010 GETMET R2 R0 K7
+ 0x8C08010B, // 0010 GETMET R2 R0 K11
0x7C080200, // 0011 CALL R2 1
- 0x8C080108, // 0012 GETMET R2 R0 K8
+ 0x8C08010C, // 0012 GETMET R2 R0 K12
0x7C080200, // 0013 CALL R2 1
- 0x8C080309, // 0014 GETMET R2 R1 K9
+ 0x8C08030D, // 0014 GETMET R2 R1 K13
0x7C080200, // 0015 CALL R2 1
0x80000000, // 0016 RET 0
})
@@ -149,66 +365,47 @@ be_local_closure(class_Matter_UI_page_part_mgr_adv, /* name */
/********************************************************************
** Solidified function: page_part_mgr
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_page_part_mgr, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(check_privileged_access),
- /* K2 */ be_nested_str_weak(content_start),
- /* K3 */ be_nested_str_weak(Matter),
- /* K4 */ be_nested_str_weak(content_send_style),
- /* K5 */ be_nested_str_weak(show_enable),
- /* K6 */ be_nested_str_weak(matter_enabled),
- /* K7 */ be_nested_str_weak(show_plugins_configuration),
- /* K8 */ be_nested_str_weak(content_send),
- /* K9 */ be_nested_str_weak(_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E),
- /* K10 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cform_X20id_X3D_X27butmat_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27mattera_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X20name_X3D_X27_X27_X3EAdvanced_X20Configuration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E),
- /* K11 */ be_nested_str_weak(content_button),
- /* K12 */ be_nested_str_weak(BUTTON_CONFIGURATION),
- /* K13 */ be_nested_str_weak(content_stop),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(page_part_mgr),
&be_const_str_solidified,
- ( &(const binstruction[30]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080301, // 0001 GETMET R2 R1 K1
+ ( &(const binstruction[27]) { /* code */
+ 0xA4060800, // 0000 IMPORT R1 K4
+ 0x8C080305, // 0001 GETMET R2 R1 K5
0x7C080200, // 0002 CALL R2 1
0x740A0001, // 0003 JMPT R2 #0006
0x4C080000, // 0004 LDNIL R2
0x80040400, // 0005 RET 1 R2
- 0x8C080302, // 0006 GETMET R2 R1 K2
- 0x58100003, // 0007 LDCONST R4 K3
+ 0x8C080306, // 0006 GETMET R2 R1 K6
+ 0x5810000E, // 0007 LDCONST R4 K14
0x7C080400, // 0008 CALL R2 2
- 0x8C080304, // 0009 GETMET R2 R1 K4
+ 0x8C080308, // 0009 GETMET R2 R1 K8
0x7C080200, // 000A CALL R2 1
- 0x8C080105, // 000B GETMET R2 R0 K5
+ 0x8C08010F, // 000B GETMET R2 R0 K15
0x7C080200, // 000C CALL R2 1
- 0x8C080106, // 000D GETMET R2 R0 K6
+ 0x8C080109, // 000D GETMET R2 R0 K9
0x7C080200, // 000E CALL R2 1
0x780A0001, // 000F JMPF R2 #0012
- 0x8C080107, // 0010 GETMET R2 R0 K7
+ 0x8C080110, // 0010 GETMET R2 R0 K16
0x7C080200, // 0011 CALL R2 1
- 0x8C080308, // 0012 GETMET R2 R1 K8
- 0x58100009, // 0013 LDCONST R4 K9
+ 0x8C080311, // 0012 GETMET R2 R1 K17
+ 0x58100012, // 0013 LDCONST R4 K18
0x7C080400, // 0014 CALL R2 2
- 0x8C080308, // 0015 GETMET R2 R1 K8
- 0x5810000A, // 0016 LDCONST R4 K10
+ 0x8C080313, // 0015 GETMET R2 R1 K19
+ 0x88100314, // 0016 GETMBR R4 R1 K20
0x7C080400, // 0017 CALL R2 2
- 0x8C08030B, // 0018 GETMET R2 R1 K11
- 0x8810030C, // 0019 GETMBR R4 R1 K12
- 0x7C080400, // 001A CALL R2 2
- 0x8C08030D, // 001B GETMET R2 R1 K13
- 0x7C080200, // 001C CALL R2 1
- 0x80000000, // 001D RET 0
+ 0x8C08030D, // 0018 GETMET R2 R1 K13
+ 0x7C080200, // 0019 CALL R2 1
+ 0x80000000, // 001A RET 0
})
)
);
@@ -218,30 +415,25 @@ be_local_closure(class_Matter_UI_page_part_mgr, /* name */
/********************************************************************
** Solidified function: plugin_name
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_plugin_name, /* name */
be_nested_proto(
6, /* nstack */
3, /* argc */
- 3, /* varg */
+ 11, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(),
- /* K1 */ be_nested_str_weak(device),
- /* K2 */ be_nested_str_weak(get_plugin_class_displayname),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(plugin_name),
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
- 0x1C0C0300, // 0000 EQ R3 R1 K0
+ 0x1C0C0315, // 0000 EQ R3 R1 K21
0x780E0000, // 0001 JMPF R3 #0003
- 0x80060000, // 0002 RET 1 K0
- 0x880C0101, // 0003 GETMBR R3 R0 K1
- 0x8C0C0702, // 0004 GETMET R3 R3 K2
+ 0x80062A00, // 0002 RET 1 K21
+ 0x880C0116, // 0003 GETMBR R3 R0 K22
+ 0x8C0C0717, // 0004 GETMET R3 R3 K23
0x5C140200, // 0005 MOVE R5 R1
0x7C0C0400, // 0006 CALL R3 2
0x80040600, // 0007 RET 1 R3
@@ -254,31 +446,25 @@ be_local_closure(class_Matter_UI_plugin_name, /* name */
/********************************************************************
** Solidified function: matter_enabled
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_matter_enabled, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(get_option),
- /* K2 */ be_nested_str_weak(matter),
- /* K3 */ be_nested_str_weak(MATTER_OPTION),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(matter_enabled),
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
0x60040017, // 0000 GETGBL R1 G23
- 0xB80A0000, // 0001 GETNGBL R2 K0
- 0x8C080501, // 0002 GETMET R2 R2 K1
- 0xB8120400, // 0003 GETNGBL R4 K2
- 0x88100903, // 0004 GETMBR R4 R4 K3
+ 0xB80A3000, // 0001 GETNGBL R2 K24
+ 0x8C080519, // 0002 GETMET R2 R2 K25
+ 0xB8123400, // 0003 GETNGBL R4 K26
+ 0x8810091B, // 0004 GETMBR R4 R4 K27
0x7C080400, // 0005 CALL R2 2
0x7C040200, // 0006 CALL R1 1
0x80040200, // 0007 RET 1 R1
@@ -291,135 +477,117 @@ be_local_closure(class_Matter_UI_matter_enabled, /* name */
/********************************************************************
** Solidified function: generate_config_from_status
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_generate_config_from_status, /* name */
be_nested_proto(
13, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(contains),
- /* K2 */ be_nested_str_weak(POWER),
- /* K3 */ be_const_int(1),
- /* K4 */ be_nested_str_weak(HSBColor),
- /* K5 */ be_nested_str_weak(CT),
- /* K6 */ be_nested_str_weak(Dimmer),
- /* K7 */ be_nested_str_weak(push),
- /* K8 */ be_nested_str_weak(type),
- /* K9 */ be_nested_str_weak(light0),
- /* K10 */ be_nested_str_weak(relay),
- /* K11 */ be_nested_str_weak(stop_iteration),
- /* K12 */ be_nested_str_weak(light1),
- /* K13 */ be_nested_str_weak(light2),
- /* K14 */ be_nested_str_weak(light3),
- /* K15 */ be_nested_str_weak(device),
- /* K16 */ be_nested_str_weak(autoconf_sensors_list),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(generate_config_from_status),
&be_const_str_solidified,
- ( &(const binstruction[96]) { /* code */
+ ( &(const binstruction[97]) { /* code */
0x600C0012, // 0000 GETGBL R3 G18
0x7C0C0000, // 0001 CALL R3 0
- 0x58100000, // 0002 LDCONST R4 K0
- 0x8C140501, // 0003 GETMET R5 R2 K1
- 0x581C0002, // 0004 LDCONST R7 K2
+ 0x5810001C, // 0002 LDCONST R4 K28
+ 0x8C140502, // 0003 GETMET R5 R2 K2
+ 0x581C001D, // 0004 LDCONST R7 K29
0x7C140400, // 0005 CALL R5 2
0x78160001, // 0006 JMPF R5 #0009
- 0x58100003, // 0007 LDCONST R4 K3
+ 0x5810001E, // 0007 LDCONST R4 K30
0x7002000E, // 0008 JMP #0018
- 0x58140003, // 0009 LDCONST R5 K3
+ 0x5814001E, // 0009 LDCONST R5 K30
0x50180200, // 000A LDBOOL R6 1 0
0x781A000B, // 000B JMPF R6 #0018
- 0x8C180501, // 000C GETMET R6 R2 K1
+ 0x8C180502, // 000C GETMET R6 R2 K2
0x60200008, // 000D GETGBL R8 G8
0x5C240A00, // 000E MOVE R9 R5
0x7C200200, // 000F CALL R8 1
- 0x00220408, // 0010 ADD R8 K2 R8
+ 0x00223A08, // 0010 ADD R8 K29 R8
0x7C180400, // 0011 CALL R6 2
0x781A0002, // 0012 JMPF R6 #0016
0x5C100A00, // 0013 MOVE R4 R5
- 0x00140B03, // 0014 ADD R5 R5 K3
+ 0x00140B1E, // 0014 ADD R5 R5 K30
0x70020000, // 0015 JMP #0017
0x70020000, // 0016 JMP #0018
0x7001FFF1, // 0017 JMP #000A
0x4C140000, // 0018 LDNIL R5
0x4C180000, // 0019 LDNIL R6
0x4C1C0000, // 001A LDNIL R7
- 0x8C200501, // 001B GETMET R8 R2 K1
- 0x58280004, // 001C LDCONST R10 K4
+ 0x8C200502, // 001B GETMET R8 R2 K2
+ 0x5828001F, // 001C LDCONST R10 K31
0x7C200400, // 001D CALL R8 2
0x78220002, // 001E JMPF R8 #0022
0x5C1C0800, // 001F MOVE R7 R4
- 0x04100903, // 0020 SUB R4 R4 K3
+ 0x0410091E, // 0020 SUB R4 R4 K30
0x7002000C, // 0021 JMP #002F
- 0x8C200501, // 0022 GETMET R8 R2 K1
- 0x58280005, // 0023 LDCONST R10 K5
+ 0x8C200502, // 0022 GETMET R8 R2 K2
+ 0x58280020, // 0023 LDCONST R10 K32
0x7C200400, // 0024 CALL R8 2
0x78220002, // 0025 JMPF R8 #0029
0x5C180800, // 0026 MOVE R6 R4
- 0x04100903, // 0027 SUB R4 R4 K3
+ 0x0410091E, // 0027 SUB R4 R4 K30
0x70020005, // 0028 JMP #002F
- 0x8C200501, // 0029 GETMET R8 R2 K1
- 0x58280006, // 002A LDCONST R10 K6
+ 0x8C200502, // 0029 GETMET R8 R2 K2
+ 0x58280021, // 002A LDCONST R10 K33
0x7C200400, // 002B CALL R8 2
0x78220001, // 002C JMPF R8 #002F
0x5C140800, // 002D MOVE R5 R4
- 0x04100903, // 002E SUB R4 R4 K3
+ 0x0410091E, // 002E SUB R4 R4 K30
0x60200010, // 002F GETGBL R8 G16
- 0x40260604, // 0030 CONNECT R9 K3 R4
+ 0x40263C04, // 0030 CONNECT R9 K30 R4
0x7C200200, // 0031 CALL R8 1
0xA8020008, // 0032 EXBLK 0 #003C
0x5C241000, // 0033 MOVE R9 R8
0x7C240000, // 0034 CALL R9 0
- 0x8C280707, // 0035 GETMET R10 R3 K7
+ 0x8C280722, // 0035 GETMET R10 R3 K34
0x60300013, // 0036 GETGBL R12 G19
0x7C300000, // 0037 CALL R12 0
- 0x98321109, // 0038 SETIDX R12 K8 K9
- 0x98321409, // 0039 SETIDX R12 K10 R9
+ 0x98324724, // 0038 SETIDX R12 K35 K36
+ 0x98324A09, // 0039 SETIDX R12 K37 R9
0x7C280400, // 003A CALL R10 2
0x7001FFF6, // 003B JMP #0033
- 0x5820000B, // 003C LDCONST R8 K11
+ 0x58200003, // 003C LDCONST R8 K3
0xAC200200, // 003D CATCH R8 1 0
0xB0080000, // 003E RAISE 2 R0 R0
0x4C200000, // 003F LDNIL R8
0x20200A08, // 0040 NE R8 R5 R8
0x78220005, // 0041 JMPF R8 #0048
- 0x8C200707, // 0042 GETMET R8 R3 K7
+ 0x8C200722, // 0042 GETMET R8 R3 K34
0x60280013, // 0043 GETGBL R10 G19
0x7C280000, // 0044 CALL R10 0
- 0x982A110C, // 0045 SETIDX R10 K8 K12
- 0x982A1405, // 0046 SETIDX R10 K10 R5
+ 0x982A4726, // 0045 SETIDX R10 K35 K38
+ 0x982A4A05, // 0046 SETIDX R10 K37 R5
0x7C200400, // 0047 CALL R8 2
0x4C200000, // 0048 LDNIL R8
0x20200C08, // 0049 NE R8 R6 R8
0x78220005, // 004A JMPF R8 #0051
- 0x8C200707, // 004B GETMET R8 R3 K7
+ 0x8C200722, // 004B GETMET R8 R3 K34
0x60280013, // 004C GETGBL R10 G19
0x7C280000, // 004D CALL R10 0
- 0x982A110D, // 004E SETIDX R10 K8 K13
- 0x982A1406, // 004F SETIDX R10 K10 R6
+ 0x982A4727, // 004E SETIDX R10 K35 K39
+ 0x982A4A06, // 004F SETIDX R10 K37 R6
0x7C200400, // 0050 CALL R8 2
0x4C200000, // 0051 LDNIL R8
0x20200E08, // 0052 NE R8 R7 R8
0x78220005, // 0053 JMPF R8 #005A
- 0x8C200707, // 0054 GETMET R8 R3 K7
+ 0x8C200722, // 0054 GETMET R8 R3 K34
0x60280013, // 0055 GETGBL R10 G19
0x7C280000, // 0056 CALL R10 0
- 0x982A110E, // 0057 SETIDX R10 K8 K14
- 0x982A1407, // 0058 SETIDX R10 K10 R7
+ 0x982A4728, // 0057 SETIDX R10 K35 K40
+ 0x982A4A07, // 0058 SETIDX R10 K37 R7
0x7C200400, // 0059 CALL R8 2
- 0x8820010F, // 005A GETMBR R8 R0 K15
- 0x8C201110, // 005B GETMET R8 R8 K16
- 0x5C280200, // 005C MOVE R10 R1
- 0x7C200400, // 005D CALL R8 2
- 0x000C0608, // 005E ADD R3 R3 R8
- 0x80040600, // 005F RET 1 R3
+ 0x88200116, // 005A GETMBR R8 R0 K22
+ 0x88201129, // 005B GETMBR R8 R8 K41
+ 0x8C20112A, // 005C GETMET R8 R8 K42
+ 0x5C280200, // 005D MOVE R10 R1
+ 0x7C200400, // 005E CALL R8 2
+ 0x000C0608, // 005F ADD R3 R3 R8
+ 0x80040600, // 0060 RET 1 R3
})
)
);
@@ -429,88 +597,70 @@ be_local_closure(class_Matter_UI_generate_config_from_status, /* name */
/********************************************************************
** Solidified function: web_sensor
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_web_sensor, /* name */
be_nested_proto(
10, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(matter_enabled),
- /* K2 */ be_nested_str_weak(device),
- /* K3 */ be_nested_str_weak(sessions),
- /* K4 */ be_nested_str_weak(count_active_fabrics),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(content_send),
- /* K7 */ be_nested_str_weak(_X3Cdiv_X20style_X3D_X27text_X2Dalign_X3Aright_X3Bfont_X2Dsize_X3A11px_X3Bcolor_X3A_X23aaa_X3Bpadding_X3A0px_X3B_X27_X3E_X25s_X3C_X2Fdiv_X3E),
- /* K8 */ be_nested_str_weak(Matter_X3A_X20No_X20active_X20association),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str_weak(Matter_X3A_X20),
- /* K11 */ be_nested_str_weak(_X20active_X20association),
- /* K12 */ be_nested_str_weak(s),
- /* K13 */ be_nested_str_weak(),
- /* K14 */ be_nested_str_weak(show_bridge_status),
- /* K15 */ be_nested_str_weak(is_root_commissioning_open),
- /* K16 */ be_nested_str_weak(show_commissioning_info),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(web_sensor),
&be_const_str_solidified,
- ( &(const binstruction[49]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
+ ( &(const binstruction[50]) { /* code */
+ 0xA4060800, // 0000 IMPORT R1 K4
+ 0x8C080109, // 0001 GETMET R2 R0 K9
0x7C080200, // 0002 CALL R2 1
- 0x780A002B, // 0003 JMPF R2 #0030
- 0x88080102, // 0004 GETMBR R2 R0 K2
- 0x88080503, // 0005 GETMBR R2 R2 K3
+ 0x780A002C, // 0003 JMPF R2 #0031
+ 0x88080116, // 0004 GETMBR R2 R0 K22
+ 0x8808052B, // 0005 GETMBR R2 R2 K43
0x4C0C0000, // 0006 LDNIL R3
0x20080403, // 0007 NE R2 R2 R3
0x780A0004, // 0008 JMPF R2 #000E
- 0x88080102, // 0009 GETMBR R2 R0 K2
- 0x88080503, // 000A GETMBR R2 R2 K3
- 0x8C080504, // 000B GETMET R2 R2 K4
+ 0x88080116, // 0009 GETMBR R2 R0 K22
+ 0x8808052B, // 000A GETMBR R2 R2 K43
+ 0x8C08052C, // 000B GETMET R2 R2 K44
0x7C080200, // 000C CALL R2 1
0x70020000, // 000D JMP #000F
- 0x58080005, // 000E LDCONST R2 K5
- 0x1C0C0505, // 000F EQ R3 R2 K5
+ 0x5808001C, // 000E LDCONST R2 K28
+ 0x1C0C051C, // 000F EQ R3 R2 K28
0x780E0006, // 0010 JMPF R3 #0018
- 0x8C0C0306, // 0011 GETMET R3 R1 K6
+ 0x8C0C0311, // 0011 GETMET R3 R1 K17
0x60140018, // 0012 GETGBL R5 G24
- 0x58180007, // 0013 LDCONST R6 K7
- 0x581C0008, // 0014 LDCONST R7 K8
+ 0x5818002D, // 0013 LDCONST R6 K45
+ 0x581C002E, // 0014 LDCONST R7 K46
0x7C140400, // 0015 CALL R5 2
0x7C0C0400, // 0016 CALL R3 2
0x7002000F, // 0017 JMP #0028
- 0x240C0509, // 0018 GT R3 R2 K9
- 0x8C100306, // 0019 GETMET R4 R1 K6
+ 0x240C051E, // 0018 GT R3 R2 K30
+ 0x8C100311, // 0019 GETMET R4 R1 K17
0x60180018, // 001A GETGBL R6 G24
- 0x581C0007, // 001B LDCONST R7 K7
+ 0x581C002D, // 001B LDCONST R7 K45
0x60200008, // 001C GETGBL R8 G8
0x5C240400, // 001D MOVE R9 R2
0x7C200200, // 001E CALL R8 1
- 0x00221408, // 001F ADD R8 K10 R8
- 0x0020110B, // 0020 ADD R8 R8 K11
+ 0x00225E08, // 001F ADD R8 K47 R8
+ 0x00201130, // 0020 ADD R8 R8 K48
0x780E0001, // 0021 JMPF R3 #0024
- 0x5824000C, // 0022 LDCONST R9 K12
+ 0x58240031, // 0022 LDCONST R9 K49
0x70020000, // 0023 JMP #0025
- 0x5824000D, // 0024 LDCONST R9 K13
+ 0x58240015, // 0024 LDCONST R9 K21
0x00201009, // 0025 ADD R8 R8 R9
0x7C180400, // 0026 CALL R6 2
0x7C100400, // 0027 CALL R4 2
- 0x8C0C010E, // 0028 GETMET R3 R0 K14
+ 0x8C0C0132, // 0028 GETMET R3 R0 K50
0x7C0C0200, // 0029 CALL R3 1
- 0x880C0102, // 002A GETMBR R3 R0 K2
- 0x8C0C070F, // 002B GETMET R3 R3 K15
- 0x7C0C0200, // 002C CALL R3 1
- 0x780E0001, // 002D JMPF R3 #0030
- 0x8C0C0110, // 002E GETMET R3 R0 K16
- 0x7C0C0200, // 002F CALL R3 1
- 0x80000000, // 0030 RET 0
+ 0x880C0116, // 002A GETMBR R3 R0 K22
+ 0x880C0733, // 002B GETMBR R3 R3 K51
+ 0x8C0C0734, // 002C GETMET R3 R3 K52
+ 0x7C0C0200, // 002D CALL R3 1
+ 0x780E0001, // 002E JMPF R3 #0031
+ 0x8C0C0135, // 002F GETMET R3 R0 K53
+ 0x7C0C0200, // 0030 CALL R3 1
+ 0x80000000, // 0031 RET 0
})
)
);
@@ -520,58 +670,44 @@ be_local_closure(class_Matter_UI_web_sensor, /* name */
/********************************************************************
** Solidified function: page_part_mgr_add
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_page_part_mgr_add, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(check_privileged_access),
- /* K2 */ be_nested_str_weak(content_start),
- /* K3 */ be_nested_str_weak(Matter_X20Create_X20new_X20endpoint),
- /* K4 */ be_nested_str_weak(content_send_style),
- /* K5 */ be_nested_str_weak(arg),
- /* K6 */ be_nested_str_weak(url),
- /* K7 */ be_nested_str_weak(matter_enabled),
- /* K8 */ be_nested_str_weak(show_remote_autoconf),
- /* K9 */ be_nested_str_weak(content_button),
- /* K10 */ be_nested_str_weak(BUTTON_CONFIGURATION),
- /* K11 */ be_nested_str_weak(content_stop),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(page_part_mgr_add),
&be_const_str_solidified,
( &(const binstruction[26]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080301, // 0001 GETMET R2 R1 K1
+ 0xA4060800, // 0000 IMPORT R1 K4
+ 0x8C080305, // 0001 GETMET R2 R1 K5
0x7C080200, // 0002 CALL R2 1
0x740A0001, // 0003 JMPT R2 #0006
0x4C080000, // 0004 LDNIL R2
0x80040400, // 0005 RET 1 R2
- 0x8C080302, // 0006 GETMET R2 R1 K2
- 0x58100003, // 0007 LDCONST R4 K3
+ 0x8C080306, // 0006 GETMET R2 R1 K6
+ 0x58100036, // 0007 LDCONST R4 K54
0x7C080400, // 0008 CALL R2 2
- 0x8C080304, // 0009 GETMET R2 R1 K4
+ 0x8C080308, // 0009 GETMET R2 R1 K8
0x7C080200, // 000A CALL R2 1
- 0x8C080305, // 000B GETMET R2 R1 K5
- 0x58100006, // 000C LDCONST R4 K6
+ 0x8C080337, // 000B GETMET R2 R1 K55
+ 0x58100038, // 000C LDCONST R4 K56
0x7C080400, // 000D CALL R2 2
- 0x8C0C0107, // 000E GETMET R3 R0 K7
+ 0x8C0C0109, // 000E GETMET R3 R0 K9
0x7C0C0200, // 000F CALL R3 1
0x780E0002, // 0010 JMPF R3 #0014
- 0x8C0C0108, // 0011 GETMET R3 R0 K8
+ 0x8C0C0139, // 0011 GETMET R3 R0 K57
0x5C140400, // 0012 MOVE R5 R2
0x7C0C0400, // 0013 CALL R3 2
- 0x8C0C0309, // 0014 GETMET R3 R1 K9
- 0x8814030A, // 0015 GETMBR R5 R1 K10
+ 0x8C0C0313, // 0014 GETMET R3 R1 K19
+ 0x88140314, // 0015 GETMBR R5 R1 K20
0x7C0C0400, // 0016 CALL R3 2
- 0x8C0C030B, // 0017 GETMET R3 R1 K11
+ 0x8C0C030D, // 0017 GETMET R3 R1 K13
0x7C0C0200, // 0018 CALL R3 1
0x80000000, // 0019 RET 0
})
@@ -583,108 +719,43 @@ be_local_closure(class_Matter_UI_page_part_mgr_add, /* name */
/********************************************************************
** Solidified function: show_plugins_configuration
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_show_plugins_configuration, /* name */
be_nested_proto(
29, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[63]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(string),
- /* K2 */ be_nested_str_weak(introspect),
- /* K3 */ be_nested_str_weak(content_send),
- /* K4 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BCurrent_X20Configuration_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
- /* K5 */ be_nested_str_weak(_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X3E_X3Cp_X3E_X3Cb_X3ELocal_X20sensors_X20and_X20devices_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E),
- /* K6 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20width_X3D_X2725_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X23_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2778_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EName_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EType_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EParameter_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2715_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E),
- /* K7 */ be_nested_str_weak(device),
- /* K8 */ be_nested_str_weak(plugins_config),
- /* K9 */ be_nested_str_weak(remove),
- /* K10 */ be_nested_str_weak(0),
- /* K11 */ be_nested_str_weak(k2l_num),
- /* K12 */ be_const_int(0),
- /* K13 */ be_nested_str_weak(find),
- /* K14 */ be_nested_str_weak(type),
- /* K15 */ be_const_int(1),
- /* K16 */ be_nested_str_weak(http_),
- /* K17 */ be_nested_str_weak(plugins_classes),
- /* K18 */ be_nested_str_weak(),
- /* K19 */ be_nested_str_weak(ui_conf_to_string),
- /* K20 */ be_nested_str_weak(ARG_HINT),
- /* K21 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X25i_X3C_X2Fb_X3E_X3C_X2Ftd_X3E),
- /* K22 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X3E_X3C_X2Ftd_X3E),
- /* K23 */ be_nested_str_weak(html_escape),
- /* K24 */ be_nested_str_weak(name),
- /* K25 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Ftd_X3E),
- /* K26 */ be_nested_str_weak(plugin_name),
- /* K27 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X20placeholder_X3D_X27_X25s_X27_X20title_X3D_X27_X25s_X27_X3E_X3C_X2Ftd_X3E),
- /* K28 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27text_X2Dalign_X3Acenter_X3B_X27_X3E_X3Cbutton_X20name_X3D_X27del_X25i_X27_X20title_X3D_X27Delete_X20Endpoint_X20_X25i_X27_X20style_X3D_X27background_X3Anone_X3Bborder_X3Anone_X3Bline_X2Dheight_X3A1_X3B_X27_X20onclick_X3D_X22return_X20confirm_X28_X27Confirm_X20removing_X20endpoint_X20_X25i_X27_X29_X22_X3E_X26_X23128293_X3B_X3C_X2Fbutton_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E),
- /* K29 */ be_nested_str_weak(_X3C_X2Ftable_X3E),
- /* K30 */ be_nested_str_weak(_X3Cp_X3E_X26lt_X3Bnone_X26gt_X3B_X3C_X2Fp_X3E),
- /* K31 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E),
- /* K32 */ be_nested_str_weak(url),
- /* K33 */ be_nested_str_weak(push),
- /* K34 */ be_nested_str_weak(stop_iteration),
- /* K35 */ be_nested_str_weak(sort_distinct),
- /* K36 */ be_nested_str_weak(get_plugin_remote_info),
- /* K37 */ be_nested_str_weak(_X26_X23x1F517_X3B_X20_X3Ca_X20target_X3D_X27_blank_X27_X20title_X3D_X27http_X3A_X2F_X2F_X25s_X2F_X27_X20href_X3D_X22http_X3A_X2F_X2F_X25s_X2F_X3F_X22_X3E_X25s_X3C_X2Fa_X3E),
- /* K38 */ be_nested_str_weak(_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E),
- /* K39 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20width_X3D_X2725_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2778_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2715_X27_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E),
- /* K40 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20width_X3D_X2722_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X25i_X3C_X2Fb_X3E_X3C_X2Ftd_X3E),
- /* K41 */ be_nested_str_weak(_X3Ctd_X20width_X3D_X2778_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X20placeholder_X3D_X27_X28optional_X29_X27_X3E_X3C_X2Ftd_X3E),
- /* K42 */ be_nested_str_weak(_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Fselect_X3E_X3C_X2Ftd_X3E),
- /* K43 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X278_X27_X20value_X3D_X27_X25s_X27_X20title_X3D_X27_X25s_X27_X3E_X3C_X2Ftd_X3E),
- /* K44 */ be_nested_str_weak(_X3Ctd_X20width_X3D_X2715_X27_X20style_X3D_X27text_X2Dalign_X3Acenter_X3B_X27_X3E_X3Cbutton_X20name_X3D_X27del_X25i_X27_X20style_X3D_X27background_X3Anone_X3Bborder_X3Anone_X3Bline_X2Dheight_X3A1_X3B_X27_X20onclick_X3D_X22return_X20confirm_X28_X27Confirm_X20removing_X20endpoint_X27_X29_X22_X3E_X26_X23128293_X3B_X3C_X2Fbutton_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E),
- /* K45 */ be_nested_str_weak(_X3C_X2Ftable_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
- /* K46 */ be_nested_str_weak(_X3Cbutton_X20name_X3D_X27config_X27_X20class_X3D_X27button_X20bgrn_X27_X3EChange_X20configuration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E),
- /* K47 */ be_nested_str_weak(show_plugins_hints_js),
- /* K48 */ be_nested_str_weak(_CLASSES_TYPES),
- /* K49 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BAdd_X20to_X20Configuration_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
- /* K50 */ be_nested_str_weak(_X3Cp_X3E_X3Cb_X3EAdd_X20local_X20sensor_X20or_X20device_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E),
- /* K51 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20width_X3D_X27100_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EName_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EType_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EParameter_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E),
- /* K52 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X27_X20placeholder_X3D_X27_X28optional_X29_X27_X20title_X3D_X27_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cselect_X20id_X3D_X27pi_X27_X20name_X3D_X27pi_X27_X20onchange_X3D_X27otm_X28_X22arg_X22_X2Cthis_X2Evalue_X29_X27_X3E),
- /* K53 */ be_nested_str_weak(plugin_option),
- /* K54 */ be_nested_str_weak(_X3C_X2Fselect_X3E_X3C_X2Ftd_X3E),
- /* K55 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20id_X3D_X27arg_X27_X20name_X3D_X27arg_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X27_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E_X3C_X2Ftable_X3E),
- /* K56 */ be_nested_str_weak(_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E),
- /* K57 */ be_nested_str_weak(_X3Cbutton_X20name_X3D_X27addep_X27_X20class_X3D_X27button_X20bgrn_X27_X3ECreate_X20new_X20endpoint_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E),
- /* K58 */ be_nested_str_weak(_X3Chr_X3E_X3Cp_X3E_X3Cb_X3EAdd_X20Remote_X20Tasmota_X20or_X20OpenBK_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Cform_X20action_X3D_X27_X2Fmatteradd_X27_X20method_X3D_X27get_X27_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E),
- /* K59 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20width_X3D_X2730_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3Ehttp_X3A_X2F_X2F_X3C_X2Fb_X3E_X3C_X2Ftd_X3E_X3Ctd_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27url_X27_X20size_X3D_X278_X27_X20value_X3D_X27_X27_X20required_X20placeholder_X3D_X27IP_X20or_X20domain_X27_X3E_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X2710_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cb_X3E_X2F_X3C_X2Fb_X3E_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E_X3C_X2Ftr_X3E_X3C_X2Ftable_X3E),
- /* K60 */ be_nested_str_weak(_X3Cbutton_X20class_X3D_X27button_X20bgrn_X27_X3EAuto_X2Dconfigure_X20remote_X20Tasmota_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3Chr_X3E),
- /* K61 */ be_nested_str_weak(_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20RESET_X20the_X20configuration_X20to_X20the_X20default_X2E_X20You_X20will_X20need_X20to_X20associate_X20again_X2E_X22_X29_X3B_X27_X3E_X3Cbutton_X20name_X3D_X27auto_X27_X20class_X3D_X27button_X20bred_X27_X3EReset_X20all_X20and_X20Auto_X2Ddiscover_X3C_X2Fbutton_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Fform_X3E),
- /* K62 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(show_plugins_configuration),
&be_const_str_solidified,
- ( &(const binstruction[361]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xA40A0200, // 0001 IMPORT R2 K1
- 0xA40E0400, // 0002 IMPORT R3 K2
- 0x8C100303, // 0003 GETMET R4 R1 K3
- 0x58180004, // 0004 LDCONST R6 K4
+ ( &(const binstruction[322]) { /* code */
+ 0xA4060800, // 0000 IMPORT R1 K4
+ 0xA40A7400, // 0001 IMPORT R2 K58
+ 0xA40E7600, // 0002 IMPORT R3 K59
+ 0x8C100311, // 0003 GETMET R4 R1 K17
+ 0x5818003C, // 0004 LDCONST R6 K60
0x7C100400, // 0005 CALL R4 2
- 0x8C100303, // 0006 GETMET R4 R1 K3
- 0x58180005, // 0007 LDCONST R6 K5
+ 0x8C100311, // 0006 GETMET R4 R1 K17
+ 0x5818003D, // 0007 LDCONST R6 K61
0x7C100400, // 0008 CALL R4 2
- 0x8C100303, // 0009 GETMET R4 R1 K3
- 0x58180006, // 000A LDCONST R6 K6
+ 0x8C100311, // 0009 GETMET R4 R1 K17
+ 0x5818003E, // 000A LDCONST R6 K62
0x7C100400, // 000B CALL R4 2
- 0x88100107, // 000C GETMBR R4 R0 K7
- 0x88100908, // 000D GETMBR R4 R4 K8
- 0x8C100909, // 000E GETMET R4 R4 K9
- 0x5818000A, // 000F LDCONST R6 K10
+ 0x88100116, // 000C GETMBR R4 R0 K22
+ 0x8810093F, // 000D GETMBR R4 R4 K63
+ 0x8C100940, // 000E GETMET R4 R4 K64
+ 0x58180041, // 000F LDCONST R6 K65
0x7C100400, // 0010 CALL R4 2
- 0x88100107, // 0011 GETMBR R4 R0 K7
- 0x8C10090B, // 0012 GETMET R4 R4 K11
- 0x88180107, // 0013 GETMBR R6 R0 K7
- 0x88180D08, // 0014 GETMBR R6 R6 K8
+ 0x88100116, // 0011 GETMBR R4 R0 K22
+ 0x8C100942, // 0012 GETMET R4 R4 K66
+ 0x88180116, // 0013 GETMBR R6 R0 K22
+ 0x88180D3F, // 0014 GETMBR R6 R6 K63
0x7C100400, // 0015 CALL R4 2
- 0x5814000C, // 0016 LDCONST R5 K12
+ 0x5814001C, // 0016 LDCONST R5 K28
0x50180000, // 0017 LDBOOL R6 0 0
0x601C000C, // 0018 GETGBL R7 G12
0x5C200800, // 0019 MOVE R8 R4
@@ -692,337 +763,298 @@ be_local_closure(class_Matter_UI_show_plugins_configuration, /* name */
0x141C0A07, // 001B LT R7 R5 R7
0x781E005D, // 001C JMPF R7 #007B
0x941C0805, // 001D GETIDX R7 R4 R5
- 0x88200107, // 001E GETMBR R8 R0 K7
- 0x88201108, // 001F GETMBR R8 R8 K8
- 0x8C20110D, // 0020 GETMET R8 R8 K13
+ 0x88200116, // 001E GETMBR R8 R0 K22
+ 0x8820113F, // 001F GETMBR R8 R8 K63
+ 0x8C201143, // 0020 GETMET R8 R8 K67
0x60280008, // 0021 GETGBL R10 G8
0x5C2C0E00, // 0022 MOVE R11 R7
0x7C280200, // 0023 CALL R10 1
0x7C200400, // 0024 CALL R8 2
- 0x8C24110D, // 0025 GETMET R9 R8 K13
- 0x582C000E, // 0026 LDCONST R11 K14
+ 0x8C241143, // 0025 GETMET R9 R8 K67
+ 0x582C0023, // 0026 LDCONST R11 K35
0x7C240400, // 0027 CALL R9 2
0x5C281200, // 0028 MOVE R10 R9
0x742A0001, // 0029 JMPT R10 #002C
- 0x00140B0F, // 002A ADD R5 R5 K15
+ 0x00140B1E, // 002A ADD R5 R5 K30
0x7001FFEB, // 002B JMP #0018
- 0x8C28050D, // 002C GETMET R10 R2 K13
+ 0x8C280543, // 002C GETMET R10 R2 K67
0x5C301200, // 002D MOVE R12 R9
- 0x58340010, // 002E LDCONST R13 K16
+ 0x58340044, // 002E LDCONST R13 K68
0x7C280600, // 002F CALL R10 3
- 0x1C28150C, // 0030 EQ R10 R10 K12
+ 0x1C28151C, // 0030 EQ R10 R10 K28
0x782A0001, // 0031 JMPF R10 #0034
- 0x00140B0F, // 0032 ADD R5 R5 K15
+ 0x00140B1E, // 0032 ADD R5 R5 K30
0x7001FFE3, // 0033 JMP #0018
- 0x88280107, // 0034 GETMBR R10 R0 K7
- 0x88281511, // 0035 GETMBR R10 R10 K17
- 0x8C28150D, // 0036 GETMET R10 R10 K13
+ 0x88280116, // 0034 GETMBR R10 R0 K22
+ 0x88281545, // 0035 GETMBR R10 R10 K69
+ 0x8C281543, // 0036 GETMET R10 R10 K67
0x5C301200, // 0037 MOVE R12 R9
0x7C280400, // 0038 CALL R10 2
- 0x582C0012, // 0039 LDCONST R11 K18
- 0x58300012, // 003A LDCONST R12 K18
+ 0x582C0015, // 0039 LDCONST R11 K21
+ 0x58300015, // 003A LDCONST R12 K21
0x4C340000, // 003B LDNIL R13
0x2034140D, // 003C NE R13 R10 R13
0x78360005, // 003D JMPF R13 #0044
- 0x8C341513, // 003E GETMET R13 R10 K19
+ 0x8C341546, // 003E GETMET R13 R10 K70
0x5C3C1400, // 003F MOVE R15 R10
0x5C401000, // 0040 MOVE R16 R8
0x7C340600, // 0041 CALL R13 3
0x5C2C1A00, // 0042 MOVE R11 R13
- 0x88301514, // 0043 GETMBR R12 R10 K20
+ 0x88301547, // 0043 GETMBR R12 R10 K71
0x50180200, // 0044 LDBOOL R6 1 0
- 0x8C340303, // 0045 GETMET R13 R1 K3
+ 0x8C340311, // 0045 GETMET R13 R1 K17
0x603C0018, // 0046 GETGBL R15 G24
- 0x58400015, // 0047 LDCONST R16 K21
+ 0x58400048, // 0047 LDCONST R16 K72
0x5C440E00, // 0048 MOVE R17 R7
0x7C3C0400, // 0049 CALL R15 2
0x7C340400, // 004A CALL R13 2
- 0x8C340303, // 004B GETMET R13 R1 K3
+ 0x8C340311, // 004B GETMET R13 R1 K17
0x603C0018, // 004C GETGBL R15 G24
- 0x58400016, // 004D LDCONST R16 K22
+ 0x58400049, // 004D LDCONST R16 K73
0x5C440E00, // 004E MOVE R17 R7
- 0x8C480317, // 004F GETMET R18 R1 K23
- 0x8C50110D, // 0050 GETMET R20 R8 K13
- 0x58580018, // 0051 LDCONST R22 K24
- 0x585C0012, // 0052 LDCONST R23 K18
+ 0x8C48034A, // 004F GETMET R18 R1 K74
+ 0x8C501143, // 0050 GETMET R20 R8 K67
+ 0x5858004B, // 0051 LDCONST R22 K75
+ 0x585C0015, // 0052 LDCONST R23 K21
0x7C500600, // 0053 CALL R20 3
0x7C480400, // 0054 CALL R18 2
0x7C3C0600, // 0055 CALL R15 3
0x7C340400, // 0056 CALL R13 2
- 0x8C340303, // 0057 GETMET R13 R1 K3
+ 0x8C340311, // 0057 GETMET R13 R1 K17
0x603C0018, // 0058 GETGBL R15 G24
- 0x58400019, // 0059 LDCONST R16 K25
- 0x8C44011A, // 005A GETMET R17 R0 K26
- 0x8C4C110D, // 005B GETMET R19 R8 K13
- 0x5854000E, // 005C LDCONST R21 K14
- 0x58580012, // 005D LDCONST R22 K18
+ 0x5840004C, // 0059 LDCONST R16 K76
+ 0x8C44014D, // 005A GETMET R17 R0 K77
+ 0x8C4C1143, // 005B GETMET R19 R8 K67
+ 0x58540023, // 005C LDCONST R21 K35
+ 0x58580015, // 005D LDCONST R22 K21
0x7C4C0600, // 005E CALL R19 3
0x7C440400, // 005F CALL R17 2
0x7C3C0400, // 0060 CALL R15 2
0x7C340400, // 0061 CALL R13 2
- 0x8C340303, // 0062 GETMET R13 R1 K3
+ 0x8C340311, // 0062 GETMET R13 R1 K17
0x603C0018, // 0063 GETGBL R15 G24
- 0x5840001B, // 0064 LDCONST R16 K27
+ 0x5840004E, // 0064 LDCONST R16 K78
0x5C440E00, // 0065 MOVE R17 R7
- 0x8C480317, // 0066 GETMET R18 R1 K23
+ 0x8C48034A, // 0066 GETMET R18 R1 K74
0x5C501600, // 0067 MOVE R20 R11
0x7C480400, // 0068 CALL R18 2
- 0x8C4C0317, // 0069 GETMET R19 R1 K23
+ 0x8C4C034A, // 0069 GETMET R19 R1 K74
0x5C541800, // 006A MOVE R21 R12
0x7C4C0400, // 006B CALL R19 2
- 0x8C500317, // 006C GETMET R20 R1 K23
+ 0x8C50034A, // 006C GETMET R20 R1 K74
0x5C581800, // 006D MOVE R22 R12
0x7C500400, // 006E CALL R20 2
0x7C3C0A00, // 006F CALL R15 5
0x7C340400, // 0070 CALL R13 2
- 0x8C340303, // 0071 GETMET R13 R1 K3
+ 0x8C340311, // 0071 GETMET R13 R1 K17
0x603C0018, // 0072 GETGBL R15 G24
- 0x5840001C, // 0073 LDCONST R16 K28
+ 0x5840004F, // 0073 LDCONST R16 K79
0x5C440E00, // 0074 MOVE R17 R7
0x5C480E00, // 0075 MOVE R18 R7
0x5C4C0E00, // 0076 MOVE R19 R7
0x7C3C0800, // 0077 CALL R15 4
0x7C340400, // 0078 CALL R13 2
- 0x00140B0F, // 0079 ADD R5 R5 K15
+ 0x00140B1E, // 0079 ADD R5 R5 K30
0x7001FF9C, // 007A JMP #0018
- 0x8C1C0303, // 007B GETMET R7 R1 K3
- 0x5824001D, // 007C LDCONST R9 K29
+ 0x8C1C0311, // 007B GETMET R7 R1 K17
+ 0x58240050, // 007C LDCONST R9 K80
0x7C1C0400, // 007D CALL R7 2
0x5C1C0C00, // 007E MOVE R7 R6
0x741E0002, // 007F JMPT R7 #0083
- 0x8C1C0303, // 0080 GETMET R7 R1 K3
- 0x5824001E, // 0081 LDCONST R9 K30
+ 0x8C1C0311, // 0080 GETMET R7 R1 K17
+ 0x58240051, // 0081 LDCONST R9 K81
0x7C1C0400, // 0082 CALL R7 2
- 0x8C1C0303, // 0083 GETMET R7 R1 K3
- 0x5824001F, // 0084 LDCONST R9 K31
+ 0x8C1C0311, // 0083 GETMET R7 R1 K17
+ 0x58240052, // 0084 LDCONST R9 K82
0x7C1C0400, // 0085 CALL R7 2
0x601C0012, // 0086 GETGBL R7 G18
0x7C1C0000, // 0087 CALL R7 0
0x60200010, // 0088 GETGBL R8 G16
- 0x88240107, // 0089 GETMBR R9 R0 K7
- 0x88241308, // 008A GETMBR R9 R9 K8
+ 0x88240116, // 0089 GETMBR R9 R0 K22
+ 0x8824133F, // 008A GETMBR R9 R9 K63
0x7C200200, // 008B CALL R8 1
0xA802000B, // 008C EXBLK 0 #0099
0x5C241000, // 008D MOVE R9 R8
0x7C240000, // 008E CALL R9 0
- 0x8C28130D, // 008F GETMET R10 R9 K13
- 0x58300020, // 0090 LDCONST R12 K32
+ 0x8C281343, // 008F GETMET R10 R9 K67
+ 0x58300038, // 0090 LDCONST R12 K56
0x7C280400, // 0091 CALL R10 2
0x4C2C0000, // 0092 LDNIL R11
0x202C140B, // 0093 NE R11 R10 R11
0x782E0002, // 0094 JMPF R11 #0098
- 0x8C2C0F21, // 0095 GETMET R11 R7 K33
+ 0x8C2C0F22, // 0095 GETMET R11 R7 K34
0x5C341400, // 0096 MOVE R13 R10
0x7C2C0400, // 0097 CALL R11 2
0x7001FFF3, // 0098 JMP #008D
- 0x58200022, // 0099 LDCONST R8 K34
+ 0x58200003, // 0099 LDCONST R8 K3
0xAC200200, // 009A CATCH R8 1 0
0xB0080000, // 009B RAISE 2 R0 R0
- 0x88200107, // 009C GETMBR R8 R0 K7
- 0x8C201123, // 009D GETMET R8 R8 K35
+ 0x88200116, // 009C GETMBR R8 R0 K22
+ 0x8C201153, // 009D GETMET R8 R8 K83
0x5C280E00, // 009E MOVE R10 R7
0x7C200400, // 009F CALL R8 2
0x60200010, // 00A0 GETGBL R8 G16
0x5C240E00, // 00A1 MOVE R9 R7
0x7C200200, // 00A2 CALL R8 1
- 0xA8020087, // 00A3 EXBLK 0 #012C
+ 0xA8020084, // 00A3 EXBLK 0 #0129
0x5C241000, // 00A4 MOVE R9 R8
0x7C240000, // 00A5 CALL R9 0
- 0x8C280317, // 00A6 GETMET R10 R1 K23
+ 0x8C28034A, // 00A6 GETMET R10 R1 K74
0x5C301200, // 00A7 MOVE R12 R9
0x7C280400, // 00A8 CALL R10 2
- 0x8C2C0317, // 00A9 GETMET R11 R1 K23
- 0x88340107, // 00AA GETMBR R13 R0 K7
- 0x8C341B24, // 00AB GETMET R13 R13 K36
+ 0x8C2C034A, // 00A9 GETMET R11 R1 K74
+ 0x88340116, // 00AA GETMBR R13 R0 K22
+ 0x8C341B54, // 00AB GETMET R13 R13 K84
0x5C3C1200, // 00AC MOVE R15 R9
0x7C340400, // 00AD CALL R13 2
- 0x8C341B0D, // 00AE GETMET R13 R13 K13
- 0x583C0018, // 00AF LDCONST R15 K24
+ 0x8C341B43, // 00AE GETMET R13 R13 K67
+ 0x583C004B, // 00AF LDCONST R15 K75
0x5C401200, // 00B0 MOVE R16 R9
0x7C340600, // 00B1 CALL R13 3
0x7C2C0400, // 00B2 CALL R11 2
- 0x8C300303, // 00B3 GETMET R12 R1 K3
+ 0x8C300311, // 00B3 GETMET R12 R1 K17
0x60380018, // 00B4 GETGBL R14 G24
- 0x583C0025, // 00B5 LDCONST R15 K37
+ 0x583C0055, // 00B5 LDCONST R15 K85
0x5C401400, // 00B6 MOVE R16 R10
0x5C441400, // 00B7 MOVE R17 R10
0x5C481600, // 00B8 MOVE R18 R11
0x7C380800, // 00B9 CALL R14 4
0x7C300400, // 00BA CALL R12 2
- 0x8C300303, // 00BB GETMET R12 R1 K3
- 0x58380026, // 00BC LDCONST R14 K38
+ 0x8C300311, // 00BB GETMET R12 R1 K17
+ 0x58380056, // 00BC LDCONST R14 K86
0x7C300400, // 00BD CALL R12 2
- 0x8C300303, // 00BE GETMET R12 R1 K3
- 0x58380027, // 00BF LDCONST R14 K39
- 0x7C300400, // 00C0 CALL R12 2
- 0x50180000, // 00C1 LDBOOL R6 0 0
- 0x5814000C, // 00C2 LDCONST R5 K12
- 0x6030000C, // 00C3 GETGBL R12 G12
- 0x5C340800, // 00C4 MOVE R13 R4
- 0x7C300200, // 00C5 CALL R12 1
- 0x14300A0C, // 00C6 LT R12 R5 R12
- 0x7832005F, // 00C7 JMPF R12 #0128
- 0x94300805, // 00C8 GETIDX R12 R4 R5
- 0x88340107, // 00C9 GETMBR R13 R0 K7
- 0x88341B08, // 00CA GETMBR R13 R13 K8
- 0x8C341B0D, // 00CB GETMET R13 R13 K13
- 0x603C0008, // 00CC GETGBL R15 G8
- 0x5C401800, // 00CD MOVE R16 R12
- 0x7C3C0200, // 00CE CALL R15 1
- 0x7C340400, // 00CF CALL R13 2
- 0x8C381B0D, // 00D0 GETMET R14 R13 K13
- 0x5840000E, // 00D1 LDCONST R16 K14
- 0x7C380400, // 00D2 CALL R14 2
- 0x5C3C1C00, // 00D3 MOVE R15 R14
- 0x743E0001, // 00D4 JMPT R15 #00D7
- 0x00140B0F, // 00D5 ADD R5 R5 K15
- 0x7001FFEB, // 00D6 JMP #00C3
- 0x8C3C050D, // 00D7 GETMET R15 R2 K13
- 0x5C441C00, // 00D8 MOVE R17 R14
- 0x58480010, // 00D9 LDCONST R18 K16
- 0x7C3C0600, // 00DA CALL R15 3
- 0x203C1F0C, // 00DB NE R15 R15 K12
- 0x783E0001, // 00DC JMPF R15 #00DF
- 0x00140B0F, // 00DD ADD R5 R5 K15
- 0x7001FFE3, // 00DE JMP #00C3
- 0x8C3C1B0D, // 00DF GETMET R15 R13 K13
- 0x58440020, // 00E0 LDCONST R17 K32
- 0x7C3C0400, // 00E1 CALL R15 2
- 0x203C1E09, // 00E2 NE R15 R15 R9
- 0x783E0001, // 00E3 JMPF R15 #00E6
- 0x00140B0F, // 00E4 ADD R5 R5 K15
- 0x7001FFDC, // 00E5 JMP #00C3
- 0x883C0107, // 00E6 GETMBR R15 R0 K7
- 0x883C1F11, // 00E7 GETMBR R15 R15 K17
- 0x8C3C1F0D, // 00E8 GETMET R15 R15 K13
- 0x5C441C00, // 00E9 MOVE R17 R14
- 0x7C3C0400, // 00EA CALL R15 2
- 0x58400012, // 00EB LDCONST R16 K18
- 0x58440012, // 00EC LDCONST R17 K18
- 0x4C480000, // 00ED LDNIL R18
- 0x20481E12, // 00EE NE R18 R15 R18
- 0x784A0005, // 00EF JMPF R18 #00F6
- 0x8C481F13, // 00F0 GETMET R18 R15 K19
- 0x5C501E00, // 00F1 MOVE R20 R15
- 0x5C541A00, // 00F2 MOVE R21 R13
- 0x7C480600, // 00F3 CALL R18 3
- 0x5C402400, // 00F4 MOVE R16 R18
- 0x88441F14, // 00F5 GETMBR R17 R15 K20
- 0x50180200, // 00F6 LDBOOL R6 1 0
- 0x8C480303, // 00F7 GETMET R18 R1 K3
- 0x60500018, // 00F8 GETGBL R20 G24
- 0x58540028, // 00F9 LDCONST R21 K40
- 0x5C581800, // 00FA MOVE R22 R12
- 0x7C500400, // 00FB CALL R20 2
- 0x7C480400, // 00FC CALL R18 2
- 0x8C480303, // 00FD GETMET R18 R1 K3
- 0x60500018, // 00FE GETGBL R20 G24
- 0x58540029, // 00FF LDCONST R21 K41
- 0x5C581800, // 0100 MOVE R22 R12
- 0x8C5C0317, // 0101 GETMET R23 R1 K23
- 0x8C641B0D, // 0102 GETMET R25 R13 K13
- 0x586C0018, // 0103 LDCONST R27 K24
- 0x58700012, // 0104 LDCONST R28 K18
- 0x7C640600, // 0105 CALL R25 3
- 0x7C5C0400, // 0106 CALL R23 2
- 0x7C500600, // 0107 CALL R20 3
- 0x7C480400, // 0108 CALL R18 2
- 0x8C480303, // 0109 GETMET R18 R1 K3
- 0x60500018, // 010A GETGBL R20 G24
- 0x5854002A, // 010B LDCONST R21 K42
- 0x8C58011A, // 010C GETMET R22 R0 K26
- 0x8C601B0D, // 010D GETMET R24 R13 K13
- 0x5868000E, // 010E LDCONST R26 K14
- 0x586C0012, // 010F LDCONST R27 K18
- 0x7C600600, // 0110 CALL R24 3
- 0x7C580400, // 0111 CALL R22 2
- 0x7C500400, // 0112 CALL R20 2
- 0x7C480400, // 0113 CALL R18 2
- 0x8C480303, // 0114 GETMET R18 R1 K3
- 0x60500018, // 0115 GETGBL R20 G24
- 0x5854002B, // 0116 LDCONST R21 K43
- 0x5C581800, // 0117 MOVE R22 R12
- 0x8C5C0317, // 0118 GETMET R23 R1 K23
- 0x5C642000, // 0119 MOVE R25 R16
- 0x7C5C0400, // 011A CALL R23 2
- 0x8C600317, // 011B GETMET R24 R1 K23
- 0x5C682200, // 011C MOVE R26 R17
- 0x7C600400, // 011D CALL R24 2
- 0x7C500800, // 011E CALL R20 4
- 0x7C480400, // 011F CALL R18 2
- 0x8C480303, // 0120 GETMET R18 R1 K3
- 0x60500018, // 0121 GETGBL R20 G24
- 0x5854002C, // 0122 LDCONST R21 K44
- 0x5C581800, // 0123 MOVE R22 R12
- 0x7C500400, // 0124 CALL R20 2
- 0x7C480400, // 0125 CALL R18 2
- 0x00140B0F, // 0126 ADD R5 R5 K15
- 0x7001FF9A, // 0127 JMP #00C3
- 0x8C300303, // 0128 GETMET R12 R1 K3
- 0x5838002D, // 0129 LDCONST R14 K45
- 0x7C300400, // 012A CALL R12 2
- 0x7001FF77, // 012B JMP #00A4
- 0x58200022, // 012C LDCONST R8 K34
- 0xAC200200, // 012D CATCH R8 1 0
- 0xB0080000, // 012E RAISE 2 R0 R0
- 0x5C200C00, // 012F MOVE R8 R6
- 0x74220002, // 0130 JMPT R8 #0134
- 0x8C200303, // 0131 GETMET R8 R1 K3
- 0x5828001E, // 0132 LDCONST R10 K30
+ 0x50180000, // 00BE LDBOOL R6 0 0
+ 0x5814001C, // 00BF LDCONST R5 K28
+ 0x6030000C, // 00C0 GETGBL R12 G12
+ 0x5C340800, // 00C1 MOVE R13 R4
+ 0x7C300200, // 00C2 CALL R12 1
+ 0x14300A0C, // 00C3 LT R12 R5 R12
+ 0x7832005F, // 00C4 JMPF R12 #0125
+ 0x94300805, // 00C5 GETIDX R12 R4 R5
+ 0x88340116, // 00C6 GETMBR R13 R0 K22
+ 0x88341B3F, // 00C7 GETMBR R13 R13 K63
+ 0x8C341B43, // 00C8 GETMET R13 R13 K67
+ 0x603C0008, // 00C9 GETGBL R15 G8
+ 0x5C401800, // 00CA MOVE R16 R12
+ 0x7C3C0200, // 00CB CALL R15 1
+ 0x7C340400, // 00CC CALL R13 2
+ 0x8C381B43, // 00CD GETMET R14 R13 K67
+ 0x58400023, // 00CE LDCONST R16 K35
+ 0x7C380400, // 00CF CALL R14 2
+ 0x5C3C1C00, // 00D0 MOVE R15 R14
+ 0x743E0001, // 00D1 JMPT R15 #00D4
+ 0x00140B1E, // 00D2 ADD R5 R5 K30
+ 0x7001FFEB, // 00D3 JMP #00C0
+ 0x8C3C0543, // 00D4 GETMET R15 R2 K67
+ 0x5C441C00, // 00D5 MOVE R17 R14
+ 0x58480044, // 00D6 LDCONST R18 K68
+ 0x7C3C0600, // 00D7 CALL R15 3
+ 0x203C1F1C, // 00D8 NE R15 R15 K28
+ 0x783E0001, // 00D9 JMPF R15 #00DC
+ 0x00140B1E, // 00DA ADD R5 R5 K30
+ 0x7001FFE3, // 00DB JMP #00C0
+ 0x8C3C1B43, // 00DC GETMET R15 R13 K67
+ 0x58440038, // 00DD LDCONST R17 K56
+ 0x7C3C0400, // 00DE CALL R15 2
+ 0x203C1E09, // 00DF NE R15 R15 R9
+ 0x783E0001, // 00E0 JMPF R15 #00E3
+ 0x00140B1E, // 00E1 ADD R5 R5 K30
+ 0x7001FFDC, // 00E2 JMP #00C0
+ 0x883C0116, // 00E3 GETMBR R15 R0 K22
+ 0x883C1F45, // 00E4 GETMBR R15 R15 K69
+ 0x8C3C1F43, // 00E5 GETMET R15 R15 K67
+ 0x5C441C00, // 00E6 MOVE R17 R14
+ 0x7C3C0400, // 00E7 CALL R15 2
+ 0x58400015, // 00E8 LDCONST R16 K21
+ 0x58440015, // 00E9 LDCONST R17 K21
+ 0x4C480000, // 00EA LDNIL R18
+ 0x20481E12, // 00EB NE R18 R15 R18
+ 0x784A0005, // 00EC JMPF R18 #00F3
+ 0x8C481F46, // 00ED GETMET R18 R15 K70
+ 0x5C501E00, // 00EE MOVE R20 R15
+ 0x5C541A00, // 00EF MOVE R21 R13
+ 0x7C480600, // 00F0 CALL R18 3
+ 0x5C402400, // 00F1 MOVE R16 R18
+ 0x88441F47, // 00F2 GETMBR R17 R15 K71
+ 0x50180200, // 00F3 LDBOOL R6 1 0
+ 0x8C480311, // 00F4 GETMET R18 R1 K17
+ 0x60500018, // 00F5 GETGBL R20 G24
+ 0x58540057, // 00F6 LDCONST R21 K87
+ 0x5C581800, // 00F7 MOVE R22 R12
+ 0x7C500400, // 00F8 CALL R20 2
+ 0x7C480400, // 00F9 CALL R18 2
+ 0x8C480311, // 00FA GETMET R18 R1 K17
+ 0x60500018, // 00FB GETGBL R20 G24
+ 0x58540058, // 00FC LDCONST R21 K88
+ 0x5C581800, // 00FD MOVE R22 R12
+ 0x8C5C034A, // 00FE GETMET R23 R1 K74
+ 0x8C641B43, // 00FF GETMET R25 R13 K67
+ 0x586C004B, // 0100 LDCONST R27 K75
+ 0x58700015, // 0101 LDCONST R28 K21
+ 0x7C640600, // 0102 CALL R25 3
+ 0x7C5C0400, // 0103 CALL R23 2
+ 0x7C500600, // 0104 CALL R20 3
+ 0x7C480400, // 0105 CALL R18 2
+ 0x8C480311, // 0106 GETMET R18 R1 K17
+ 0x60500018, // 0107 GETGBL R20 G24
+ 0x58540059, // 0108 LDCONST R21 K89
+ 0x8C58014D, // 0109 GETMET R22 R0 K77
+ 0x8C601B43, // 010A GETMET R24 R13 K67
+ 0x58680023, // 010B LDCONST R26 K35
+ 0x586C0015, // 010C LDCONST R27 K21
+ 0x7C600600, // 010D CALL R24 3
+ 0x7C580400, // 010E CALL R22 2
+ 0x7C500400, // 010F CALL R20 2
+ 0x7C480400, // 0110 CALL R18 2
+ 0x8C480311, // 0111 GETMET R18 R1 K17
+ 0x60500018, // 0112 GETGBL R20 G24
+ 0x5854005A, // 0113 LDCONST R21 K90
+ 0x5C581800, // 0114 MOVE R22 R12
+ 0x8C5C034A, // 0115 GETMET R23 R1 K74
+ 0x5C642000, // 0116 MOVE R25 R16
+ 0x7C5C0400, // 0117 CALL R23 2
+ 0x8C60034A, // 0118 GETMET R24 R1 K74
+ 0x5C682200, // 0119 MOVE R26 R17
+ 0x7C600400, // 011A CALL R24 2
+ 0x7C500800, // 011B CALL R20 4
+ 0x7C480400, // 011C CALL R18 2
+ 0x8C480311, // 011D GETMET R18 R1 K17
+ 0x60500018, // 011E GETGBL R20 G24
+ 0x5854005B, // 011F LDCONST R21 K91
+ 0x5C581800, // 0120 MOVE R22 R12
+ 0x7C500400, // 0121 CALL R20 2
+ 0x7C480400, // 0122 CALL R18 2
+ 0x00140B1E, // 0123 ADD R5 R5 K30
+ 0x7001FF9A, // 0124 JMP #00C0
+ 0x8C300311, // 0125 GETMET R12 R1 K17
+ 0x5838005C, // 0126 LDCONST R14 K92
+ 0x7C300400, // 0127 CALL R12 2
+ 0x7001FF7A, // 0128 JMP #00A4
+ 0x58200003, // 0129 LDCONST R8 K3
+ 0xAC200200, // 012A CATCH R8 1 0
+ 0xB0080000, // 012B RAISE 2 R0 R0
+ 0x5C200C00, // 012C MOVE R8 R6
+ 0x74220002, // 012D JMPT R8 #0131
+ 0x8C200311, // 012E GETMET R8 R1 K17
+ 0x58280051, // 012F LDCONST R10 K81
+ 0x7C200400, // 0130 CALL R8 2
+ 0x8C200311, // 0131 GETMET R8 R1 K17
+ 0x5828005D, // 0132 LDCONST R10 K93
0x7C200400, // 0133 CALL R8 2
- 0x8C200303, // 0134 GETMET R8 R1 K3
- 0x5828002E, // 0135 LDCONST R10 K46
+ 0x8C20015E, // 0134 GETMET R8 R0 K94
+ 0x8828015F, // 0135 GETMBR R10 R0 K95
0x7C200400, // 0136 CALL R8 2
- 0x8C20012F, // 0137 GETMET R8 R0 K47
- 0x88280130, // 0138 GETMBR R10 R0 K48
+ 0x8C200311, // 0137 GETMET R8 R1 K17
+ 0x58280060, // 0138 LDCONST R10 K96
0x7C200400, // 0139 CALL R8 2
- 0x8C200303, // 013A GETMET R8 R1 K3
- 0x58280031, // 013B LDCONST R10 K49
- 0x7C200400, // 013C CALL R8 2
- 0x8C200303, // 013D GETMET R8 R1 K3
- 0x58280032, // 013E LDCONST R10 K50
- 0x7C200400, // 013F CALL R8 2
- 0x8C200303, // 0140 GETMET R8 R1 K3
- 0x58280033, // 0141 LDCONST R10 K51
- 0x7C200400, // 0142 CALL R8 2
- 0x8C200303, // 0143 GETMET R8 R1 K3
- 0x58280034, // 0144 LDCONST R10 K52
- 0x7C200400, // 0145 CALL R8 2
- 0x8C200135, // 0146 GETMET R8 R0 K53
- 0x58280012, // 0147 LDCONST R10 K18
- 0x882C0130, // 0148 GETMBR R11 R0 K48
- 0x7C200600, // 0149 CALL R8 3
- 0x8C200303, // 014A GETMET R8 R1 K3
- 0x58280036, // 014B LDCONST R10 K54
- 0x7C200400, // 014C CALL R8 2
- 0x8C200303, // 014D GETMET R8 R1 K3
- 0x58280037, // 014E LDCONST R10 K55
- 0x7C200400, // 014F CALL R8 2
- 0x8C200303, // 0150 GETMET R8 R1 K3
- 0x58280038, // 0151 LDCONST R10 K56
- 0x7C200400, // 0152 CALL R8 2
- 0x8C200303, // 0153 GETMET R8 R1 K3
- 0x58280039, // 0154 LDCONST R10 K57
- 0x7C200400, // 0155 CALL R8 2
- 0x8C200303, // 0156 GETMET R8 R1 K3
- 0x5828003A, // 0157 LDCONST R10 K58
- 0x7C200400, // 0158 CALL R8 2
- 0x8C200303, // 0159 GETMET R8 R1 K3
- 0x5828003B, // 015A LDCONST R10 K59
- 0x7C200400, // 015B CALL R8 2
- 0x8C200303, // 015C GETMET R8 R1 K3
- 0x58280038, // 015D LDCONST R10 K56
- 0x7C200400, // 015E CALL R8 2
- 0x8C200303, // 015F GETMET R8 R1 K3
- 0x5828003C, // 0160 LDCONST R10 K60
- 0x7C200400, // 0161 CALL R8 2
- 0x8C200303, // 0162 GETMET R8 R1 K3
- 0x5828003D, // 0163 LDCONST R10 K61
- 0x7C200400, // 0164 CALL R8 2
- 0x8C200303, // 0165 GETMET R8 R1 K3
- 0x5828003E, // 0166 LDCONST R10 K62
- 0x7C200400, // 0167 CALL R8 2
- 0x80000000, // 0168 RET 0
+ 0x8C200161, // 013A GETMET R8 R0 K97
+ 0x58280015, // 013B LDCONST R10 K21
+ 0x882C015F, // 013C GETMBR R11 R0 K95
+ 0x7C200600, // 013D CALL R8 3
+ 0x8C200311, // 013E GETMET R8 R1 K17
+ 0x58280062, // 013F LDCONST R10 K98
+ 0x7C200400, // 0140 CALL R8 2
+ 0x80000000, // 0141 RET 0
})
)
);
@@ -1032,97 +1064,81 @@ be_local_closure(class_Matter_UI_show_plugins_configuration, /* name */
/********************************************************************
** Solidified function: show_commissioning_info
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_show_commissioning_info, /* name */
be_nested_proto(
12, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(device),
- /* K2 */ be_nested_str_weak(commissioning_open),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(millis),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(content_send),
- /* K7 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BCommissioning_X20open_X20for_X20_X25i_X20min_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
- /* K8 */ be_nested_str_weak(compute_manual_pairing_code),
- /* K9 */ be_nested_str_weak(_X3Cp_X3EManual_X20pairing_X20code_X3A_X3Cbr_X3E_X3Cb_X3E_X25s_X2D_X25s_X2D_X25s_X3C_X2Fb_X3E_X3C_X2Fp_X3E_X3Chr_X3E),
- /* K10 */ be_const_int(3),
- /* K11 */ be_const_int(2147483647),
- /* K12 */ be_nested_str_weak(_X3Cdiv_X3E_X3Ccenter_X3E),
- /* K13 */ be_nested_str_weak(compute_qrcode_content),
- /* K14 */ be_nested_str_weak(show_qrcode),
- /* K15 */ be_nested_str_weak(_X3Cp_X3E_X20_X25s_X3C_X2Fp_X3E),
- /* K16 */ be_nested_str_weak(_X3C_X2Fdiv_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(show_commissioning_info),
&be_const_str_solidified,
- ( &(const binstruction[58]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x88080502, // 0002 GETMBR R2 R2 K2
- 0xB80E0600, // 0003 GETNGBL R3 K3
- 0x8C0C0704, // 0004 GETMET R3 R3 K4
- 0x7C0C0200, // 0005 CALL R3 1
- 0x04080403, // 0006 SUB R2 R2 R3
- 0x540E03E7, // 0007 LDINT R3 1000
- 0x0C080403, // 0008 DIV R2 R2 R3
- 0x140C0505, // 0009 LT R3 R2 K5
- 0x780E0000, // 000A JMPF R3 #000C
- 0x58080005, // 000B LDCONST R2 K5
- 0x540E001D, // 000C LDINT R3 30
- 0x000C0403, // 000D ADD R3 R2 R3
- 0x5412003B, // 000E LDINT R4 60
- 0x0C0C0604, // 000F DIV R3 R3 R4
- 0x8C100306, // 0010 GETMET R4 R1 K6
- 0x60180018, // 0011 GETGBL R6 G24
- 0x581C0007, // 0012 LDCONST R7 K7
- 0x5C200600, // 0013 MOVE R8 R3
- 0x7C180400, // 0014 CALL R6 2
- 0x7C100400, // 0015 CALL R4 2
- 0x88100101, // 0016 GETMBR R4 R0 K1
- 0x8C100908, // 0017 GETMET R4 R4 K8
- 0x7C100200, // 0018 CALL R4 1
- 0x8C140306, // 0019 GETMET R5 R1 K6
- 0x601C0018, // 001A GETGBL R7 G24
- 0x58200009, // 001B LDCONST R8 K9
- 0x40260B0A, // 001C CONNECT R9 K5 K10
- 0x94240809, // 001D GETIDX R9 R4 R9
- 0x542A0003, // 001E LDINT R10 4
- 0x542E0005, // 001F LDINT R11 6
- 0x4028140B, // 0020 CONNECT R10 R10 R11
- 0x9428080A, // 0021 GETIDX R10 R4 R10
- 0x542E0006, // 0022 LDINT R11 7
- 0x402C170B, // 0023 CONNECT R11 R11 K11
- 0x942C080B, // 0024 GETIDX R11 R4 R11
- 0x7C1C0800, // 0025 CALL R7 4
- 0x7C140400, // 0026 CALL R5 2
- 0x8C140306, // 0027 GETMET R5 R1 K6
- 0x581C000C, // 0028 LDCONST R7 K12
- 0x7C140400, // 0029 CALL R5 2
- 0x88140101, // 002A GETMBR R5 R0 K1
- 0x8C140B0D, // 002B GETMET R5 R5 K13
- 0x7C140200, // 002C CALL R5 1
- 0x8C18010E, // 002D GETMET R6 R0 K14
- 0x5C200A00, // 002E MOVE R8 R5
- 0x7C180400, // 002F CALL R6 2
- 0x8C180306, // 0030 GETMET R6 R1 K6
- 0x60200018, // 0031 GETGBL R8 G24
- 0x5824000F, // 0032 LDCONST R9 K15
- 0x5C280A00, // 0033 MOVE R10 R5
- 0x7C200400, // 0034 CALL R8 2
- 0x7C180400, // 0035 CALL R6 2
- 0x8C180306, // 0036 GETMET R6 R1 K6
- 0x58200010, // 0037 LDCONST R8 K16
+ ( &(const binstruction[61]) { /* code */
+ 0xA4060800, // 0000 IMPORT R1 K4
+ 0x88080116, // 0001 GETMBR R2 R0 K22
+ 0x88080533, // 0002 GETMBR R2 R2 K51
+ 0x88080563, // 0003 GETMBR R2 R2 K99
+ 0xB80E3000, // 0004 GETNGBL R3 K24
+ 0x8C0C0764, // 0005 GETMET R3 R3 K100
+ 0x7C0C0200, // 0006 CALL R3 1
+ 0x04080403, // 0007 SUB R2 R2 R3
+ 0x540E03E7, // 0008 LDINT R3 1000
+ 0x0C080403, // 0009 DIV R2 R2 R3
+ 0x140C051C, // 000A LT R3 R2 K28
+ 0x780E0000, // 000B JMPF R3 #000D
+ 0x5808001C, // 000C LDCONST R2 K28
+ 0x540E001D, // 000D LDINT R3 30
+ 0x000C0403, // 000E ADD R3 R2 R3
+ 0x5412003B, // 000F LDINT R4 60
+ 0x0C0C0604, // 0010 DIV R3 R3 R4
+ 0x8C100311, // 0011 GETMET R4 R1 K17
+ 0x60180018, // 0012 GETGBL R6 G24
+ 0x581C0065, // 0013 LDCONST R7 K101
+ 0x5C200600, // 0014 MOVE R8 R3
+ 0x7C180400, // 0015 CALL R6 2
+ 0x7C100400, // 0016 CALL R4 2
+ 0x88100116, // 0017 GETMBR R4 R0 K22
+ 0x88100933, // 0018 GETMBR R4 R4 K51
+ 0x8C100966, // 0019 GETMET R4 R4 K102
+ 0x7C100200, // 001A CALL R4 1
+ 0x8C140311, // 001B GETMET R5 R1 K17
+ 0x601C0018, // 001C GETGBL R7 G24
+ 0x58200067, // 001D LDCONST R8 K103
+ 0x40263968, // 001E CONNECT R9 K28 K104
+ 0x94240809, // 001F GETIDX R9 R4 R9
+ 0x542A0003, // 0020 LDINT R10 4
+ 0x542E0005, // 0021 LDINT R11 6
+ 0x4028140B, // 0022 CONNECT R10 R10 R11
+ 0x9428080A, // 0023 GETIDX R10 R4 R10
+ 0x542E0006, // 0024 LDINT R11 7
+ 0x402C1769, // 0025 CONNECT R11 R11 K105
+ 0x942C080B, // 0026 GETIDX R11 R4 R11
+ 0x7C1C0800, // 0027 CALL R7 4
+ 0x7C140400, // 0028 CALL R5 2
+ 0x8C140311, // 0029 GETMET R5 R1 K17
+ 0x581C006A, // 002A LDCONST R7 K106
+ 0x7C140400, // 002B CALL R5 2
+ 0x88140116, // 002C GETMBR R5 R0 K22
+ 0x88140B33, // 002D GETMBR R5 R5 K51
+ 0x8C140B6B, // 002E GETMET R5 R5 K107
+ 0x7C140200, // 002F CALL R5 1
+ 0x8C18016C, // 0030 GETMET R6 R0 K108
+ 0x5C200A00, // 0031 MOVE R8 R5
+ 0x7C180400, // 0032 CALL R6 2
+ 0x8C180311, // 0033 GETMET R6 R1 K17
+ 0x60200018, // 0034 GETGBL R8 G24
+ 0x5824006D, // 0035 LDCONST R9 K109
+ 0x5C280A00, // 0036 MOVE R10 R5
+ 0x7C200400, // 0037 CALL R8 2
0x7C180400, // 0038 CALL R6 2
- 0x80000000, // 0039 RET 0
+ 0x8C180311, // 0039 GETMET R6 R1 K17
+ 0x5820006E, // 003A LDCONST R8 K110
+ 0x7C180400, // 003B CALL R6 2
+ 0x80000000, // 003C RET 0
})
)
);
@@ -1132,299 +1148,240 @@ be_local_closure(class_Matter_UI_show_commissioning_info, /* name */
/********************************************************************
** Solidified function: show_remote_autoconf
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_show_remote_autoconf, /* name */
be_nested_proto(
27, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[47]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(json),
- /* K2 */ be_nested_str_weak(),
- /* K3 */ be_nested_str_weak(matter),
- /* K4 */ be_nested_str_weak(Plugin_Bridge_HTTP),
- /* K5 */ be_nested_str_weak(PROBE_TIMEOUT),
- /* K6 */ be_nested_str_weak(HTTP_remote),
- /* K7 */ be_nested_str_weak(call_sync),
- /* K8 */ be_nested_str_weak(Status_X208),
- /* K9 */ be_nested_str_weak(load),
- /* K10 */ be_nested_str_weak(find),
- /* K11 */ be_nested_str_weak(StatusSNS),
- /* K12 */ be_nested_str_weak(Status_X2011),
- /* K13 */ be_nested_str_weak(StatusSTS),
- /* K14 */ be_nested_str_weak(tasmota),
- /* K15 */ be_nested_str_weak(log),
- /* K16 */ be_nested_str_weak(MTR_X3A_X20probed_X20_X27_X25s_X27_X20status8_X3D_X25s_X20satus11_X3D_X25s),
- /* K17 */ be_const_int(3),
- /* K18 */ be_nested_str_weak(generate_config_from_status),
- /* K19 */ be_nested_str_weak(show_plugins_hints_js),
- /* K20 */ be_nested_str_weak(_CLASSES_TYPES2),
- /* K21 */ be_nested_str_weak(content_send),
- /* K22 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BMatter_X20Remote_X20Device_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3EAdd_X20Remote_X20sensor_X20or_X20device_X3C_X2Fb_X3E_X3C_X2Fp_X3E),
- /* K23 */ be_nested_str_weak(html_escape),
- /* K24 */ be_nested_str_weak(_X3Cp_X3E_X26_X23x1F517_X3B_X20_X3Ca_X20target_X3D_X27_blank_X27_X20href_X3D_X22http_X3A_X2F_X2F_X25s_X2F_X3F_X22_X3E_X25s_X3C_X2Fa_X3E_X3C_X2Fp_X3E),
- /* K25 */ be_nested_str_weak(_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X3E_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E_X3Ctr_X3E_X3Ctd_X20width_X3D_X27100_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EName_X3C_X2Ftd_X3E_X3Ctd_X20width_X3D_X27115_X27_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EType_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3EParameter_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E),
- /* K26 */ be_nested_str_weak(_X3Cinput_X20name_X3D_X27url_X27_X20type_X3D_X27hidden_X27_X20value_X3D_X27_X25s_X27_X3E),
- /* K27 */ be_const_int(0),
- /* K28 */ be_nested_str_weak(type),
- /* K29 */ be_nested_str_weak(http_),
- /* K30 */ be_nested_str_weak(device),
- /* K31 */ be_nested_str_weak(plugins_classes),
- /* K32 */ be_nested_str_weak(ui_conf_to_string),
- /* K33 */ be_nested_str_weak(ARG_HINT),
- /* K34 */ be_nested_str_weak(_X3Ctr_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cinput_X20type_X3D_X27text_X27_X20name_X3D_X27nam_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X27_X20placeholder_X3D_X27_X28optional_X29_X27_X3E_X3C_X2Ftd_X3E),
- /* K35 */ be_nested_str_weak(_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E_X3Cselect_X20name_X3D_X27pi_X25i_X27_X20onchange_X3D_X27otm_X28_X22arg_X25i_X22_X2Cthis_X2Evalue_X29_X27_X3E),
- /* K36 */ be_nested_str_weak(plugin_option),
- /* K37 */ be_nested_str_weak(_X3C_X2Fselect_X3E_X3C_X2Ftd_X3E_X3Ctd_X20style_X3D_X27font_X2Dsize_X3Asmaller_X3B_X27_X3E),
- /* K38 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27text_X27_X20id_X3D_X27arg_X25i_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X20placeholder_X3D_X27_X25s_X27_X20title_X3D_X27_X25s_X27_X3E),
- /* K39 */ be_nested_str_weak(_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E),
- /* K40 */ be_const_int(1),
- /* K41 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27text_X27_X20id_X3D_X27arg_X25i_X27_X20name_X3D_X27arg_X25i_X27_X20size_X3D_X271_X27_X20value_X3D_X27_X25s_X27_X3E),
- /* K42 */ be_nested_str_weak(_X3C_X2Ftable_X3E),
- /* K43 */ be_nested_str_weak(_X3Cdiv_X20style_X3D_X27display_X3A_X20block_X3B_X27_X3E_X3C_X2Fdiv_X3E),
- /* K44 */ be_nested_str_weak(_X3Cbutton_X20name_X3D_X27addrem_X27_X20class_X3D_X27button_X20bgrn_X27_X3EAdd_X20endpoints_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E),
- /* K45 */ be_nested_str_weak(_X3C_X2Fform_X3E_X3C_X2Ffieldset_X3E),
- /* K46 */ be_nested_str_weak(_X3Cp_X3E_X3Cb_X3EUnable_X20to_X20connect_X20to_X20_X27_X25s_X27_X3C_X2Fb_X3E_X3C_X2Fp_X3E),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(show_remote_autoconf),
&be_const_str_solidified,
- ( &(const binstruction[230]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0xA40E0200, // 0001 IMPORT R3 K1
- 0x1C100302, // 0002 EQ R4 R1 K2
+ ( &(const binstruction[220]) { /* code */
+ 0xA40A0800, // 0000 IMPORT R2 K4
+ 0xA40EDE00, // 0001 IMPORT R3 K111
+ 0x1C100315, // 0002 EQ R4 R1 K21
0x78120000, // 0003 JMPF R4 #0005
0x80000800, // 0004 RET 0
- 0xB8120600, // 0005 GETNGBL R4 K3
- 0x88100904, // 0006 GETMBR R4 R4 K4
- 0x88100905, // 0007 GETMBR R4 R4 K5
- 0xB8160600, // 0008 GETNGBL R5 K3
- 0x8C140B06, // 0009 GETMET R5 R5 K6
+ 0xB8123400, // 0005 GETNGBL R4 K26
+ 0x88100970, // 0006 GETMBR R4 R4 K112
+ 0x88100971, // 0007 GETMBR R4 R4 K113
+ 0xB8163400, // 0008 GETNGBL R5 K26
+ 0x8C140B72, // 0009 GETMET R5 R5 K114
0x4C1C0000, // 000A LDNIL R7
0x5C200200, // 000B MOVE R8 R1
0x5C240800, // 000C MOVE R9 R4
0x7C140800, // 000D CALL R5 4
- 0x8C180B07, // 000E GETMET R6 R5 K7
- 0x58200008, // 000F LDCONST R8 K8
+ 0x8C180B73, // 000E GETMET R6 R5 K115
+ 0x58200074, // 000F LDCONST R8 K116
0x5C240800, // 0010 MOVE R9 R4
0x7C180600, // 0011 CALL R6 3
0x4C1C0000, // 0012 LDNIL R7
0x201C0C07, // 0013 NE R7 R6 R7
0x781E0003, // 0014 JMPF R7 #0019
- 0x8C1C0709, // 0015 GETMET R7 R3 K9
+ 0x8C1C0775, // 0015 GETMET R7 R3 K117
0x5C240C00, // 0016 MOVE R9 R6
0x7C1C0400, // 0017 CALL R7 2
0x5C180E00, // 0018 MOVE R6 R7
0x4C1C0000, // 0019 LDNIL R7
0x201C0C07, // 001A NE R7 R6 R7
0x781E0003, // 001B JMPF R7 #0020
- 0x8C1C0D0A, // 001C GETMET R7 R6 K10
- 0x5824000B, // 001D LDCONST R9 K11
+ 0x8C1C0D43, // 001C GETMET R7 R6 K67
+ 0x58240076, // 001D LDCONST R9 K118
0x7C1C0400, // 001E CALL R7 2
0x5C180E00, // 001F MOVE R6 R7
0x4C1C0000, // 0020 LDNIL R7
0x4C200000, // 0021 LDNIL R8
0x20200C08, // 0022 NE R8 R6 R8
0x78220012, // 0023 JMPF R8 #0037
- 0x8C200B07, // 0024 GETMET R8 R5 K7
- 0x5828000C, // 0025 LDCONST R10 K12
+ 0x8C200B73, // 0024 GETMET R8 R5 K115
+ 0x58280077, // 0025 LDCONST R10 K119
0x5C2C0800, // 0026 MOVE R11 R4
0x7C200600, // 0027 CALL R8 3
0x5C1C1000, // 0028 MOVE R7 R8
0x4C200000, // 0029 LDNIL R8
0x20200E08, // 002A NE R8 R7 R8
0x78220003, // 002B JMPF R8 #0030
- 0x8C200709, // 002C GETMET R8 R3 K9
+ 0x8C200775, // 002C GETMET R8 R3 K117
0x5C280E00, // 002D MOVE R10 R7
0x7C200400, // 002E CALL R8 2
0x5C1C1000, // 002F MOVE R7 R8
0x4C200000, // 0030 LDNIL R8
0x20200E08, // 0031 NE R8 R7 R8
0x78220003, // 0032 JMPF R8 #0037
- 0x8C200F0A, // 0033 GETMET R8 R7 K10
- 0x5828000D, // 0034 LDCONST R10 K13
+ 0x8C200F43, // 0033 GETMET R8 R7 K67
+ 0x58280078, // 0034 LDCONST R10 K120
0x7C200400, // 0035 CALL R8 2
0x5C1C1000, // 0036 MOVE R7 R8
0x4C200000, // 0037 LDNIL R8
0x20200C08, // 0038 NE R8 R6 R8
- 0x782200A2, // 0039 JMPF R8 #00DD
+ 0x78220098, // 0039 JMPF R8 #00D3
0x4C200000, // 003A LDNIL R8
0x20200E08, // 003B NE R8 R7 R8
- 0x7822009F, // 003C JMPF R8 #00DD
- 0xB8221C00, // 003D GETNGBL R8 K14
- 0x8C20110F, // 003E GETMET R8 R8 K15
- 0x60280018, // 003F GETGBL R10 G24
- 0x582C0010, // 0040 LDCONST R11 K16
- 0x5C300200, // 0041 MOVE R12 R1
- 0x60340008, // 0042 GETGBL R13 G8
- 0x5C380C00, // 0043 MOVE R14 R6
- 0x7C340200, // 0044 CALL R13 1
- 0x60380008, // 0045 GETGBL R14 G8
- 0x5C3C0E00, // 0046 MOVE R15 R7
- 0x7C380200, // 0047 CALL R14 1
- 0x7C280800, // 0048 CALL R10 4
- 0x582C0011, // 0049 LDCONST R11 K17
- 0x7C200600, // 004A CALL R8 3
- 0x8C200112, // 004B GETMET R8 R0 K18
- 0x5C280C00, // 004C MOVE R10 R6
- 0x5C2C0E00, // 004D MOVE R11 R7
- 0x7C200600, // 004E CALL R8 3
- 0x8C240113, // 004F GETMET R9 R0 K19
- 0x882C0114, // 0050 GETMBR R11 R0 K20
- 0x7C240400, // 0051 CALL R9 2
- 0x8C240515, // 0052 GETMET R9 R2 K21
- 0x582C0016, // 0053 LDCONST R11 K22
- 0x7C240400, // 0054 CALL R9 2
- 0x8C240517, // 0055 GETMET R9 R2 K23
- 0x5C2C0200, // 0056 MOVE R11 R1
- 0x7C240400, // 0057 CALL R9 2
- 0x8C280515, // 0058 GETMET R10 R2 K21
- 0x60300018, // 0059 GETGBL R12 G24
- 0x58340018, // 005A LDCONST R13 K24
- 0x5C381200, // 005B MOVE R14 R9
- 0x5C3C1200, // 005C MOVE R15 R9
- 0x7C300600, // 005D CALL R12 3
- 0x7C280400, // 005E CALL R10 2
- 0x8C280515, // 005F GETMET R10 R2 K21
- 0x58300019, // 0060 LDCONST R12 K25
- 0x7C280400, // 0061 CALL R10 2
- 0x8C280515, // 0062 GETMET R10 R2 K21
- 0x60300018, // 0063 GETGBL R12 G24
- 0x5834001A, // 0064 LDCONST R13 K26
- 0x8C380517, // 0065 GETMET R14 R2 K23
- 0x5C400200, // 0066 MOVE R16 R1
- 0x7C380400, // 0067 CALL R14 2
- 0x7C300400, // 0068 CALL R12 2
- 0x7C280400, // 0069 CALL R10 2
- 0x5828001B, // 006A LDCONST R10 K27
- 0x602C000C, // 006B GETGBL R11 G12
- 0x5C301000, // 006C MOVE R12 R8
- 0x7C2C0200, // 006D CALL R11 1
- 0x142C140B, // 006E LT R11 R10 R11
- 0x782E0040, // 006F JMPF R11 #00B1
- 0x942C100A, // 0070 GETIDX R11 R8 R10
- 0x8C30170A, // 0071 GETMET R12 R11 K10
- 0x5838001C, // 0072 LDCONST R14 K28
- 0x583C0002, // 0073 LDCONST R15 K2
- 0x7C300600, // 0074 CALL R12 3
- 0x20341902, // 0075 NE R13 R12 K2
- 0x78360000, // 0076 JMPF R13 #0078
- 0x00323A0C, // 0077 ADD R12 K29 R12
- 0x8834011E, // 0078 GETMBR R13 R0 K30
- 0x88341B1F, // 0079 GETMBR R13 R13 K31
- 0x8C341B0A, // 007A GETMET R13 R13 K10
- 0x5C3C1800, // 007B MOVE R15 R12
- 0x7C340400, // 007C CALL R13 2
- 0x58380002, // 007D LDCONST R14 K2
- 0x583C0002, // 007E LDCONST R15 K2
- 0x4C400000, // 007F LDNIL R16
- 0x20401A10, // 0080 NE R16 R13 R16
- 0x78420005, // 0081 JMPF R16 #0088
- 0x8C401B20, // 0082 GETMET R16 R13 K32
- 0x5C481A00, // 0083 MOVE R18 R13
- 0x5C4C1600, // 0084 MOVE R19 R11
- 0x7C400600, // 0085 CALL R16 3
- 0x5C382000, // 0086 MOVE R14 R16
- 0x883C1B21, // 0087 GETMBR R15 R13 K33
- 0x8C400515, // 0088 GETMET R16 R2 K21
- 0x60480018, // 0089 GETGBL R18 G24
- 0x584C0022, // 008A LDCONST R19 K34
- 0x5C501400, // 008B MOVE R20 R10
- 0x7C480400, // 008C CALL R18 2
- 0x7C400400, // 008D CALL R16 2
- 0x8C400515, // 008E GETMET R16 R2 K21
- 0x60480018, // 008F GETGBL R18 G24
- 0x584C0023, // 0090 LDCONST R19 K35
- 0x5C501400, // 0091 MOVE R20 R10
- 0x5C541400, // 0092 MOVE R21 R10
- 0x7C480600, // 0093 CALL R18 3
- 0x7C400400, // 0094 CALL R16 2
- 0x8C400124, // 0095 GETMET R16 R0 K36
- 0x5C481800, // 0096 MOVE R18 R12
- 0x884C0114, // 0097 GETMBR R19 R0 K20
- 0x7C400600, // 0098 CALL R16 3
- 0x8C400515, // 0099 GETMET R16 R2 K21
- 0x58480025, // 009A LDCONST R18 K37
- 0x7C400400, // 009B CALL R16 2
- 0x8C400515, // 009C GETMET R16 R2 K21
- 0x60480018, // 009D GETGBL R18 G24
- 0x584C0026, // 009E LDCONST R19 K38
- 0x5C501400, // 009F MOVE R20 R10
- 0x5C541400, // 00A0 MOVE R21 R10
- 0x8C580517, // 00A1 GETMET R22 R2 K23
- 0x5C601C00, // 00A2 MOVE R24 R14
- 0x7C580400, // 00A3 CALL R22 2
- 0x8C5C0517, // 00A4 GETMET R23 R2 K23
- 0x5C641E00, // 00A5 MOVE R25 R15
- 0x7C5C0400, // 00A6 CALL R23 2
- 0x8C600517, // 00A7 GETMET R24 R2 K23
- 0x5C681E00, // 00A8 MOVE R26 R15
- 0x7C600400, // 00A9 CALL R24 2
- 0x7C480C00, // 00AA CALL R18 6
- 0x7C400400, // 00AB CALL R16 2
- 0x8C400515, // 00AC GETMET R16 R2 K21
- 0x58480027, // 00AD LDCONST R18 K39
- 0x7C400400, // 00AE CALL R16 2
- 0x00281528, // 00AF ADD R10 R10 K40
- 0x7001FFB9, // 00B0 JMP #006B
- 0x8C2C0515, // 00B1 GETMET R11 R2 K21
- 0x60340018, // 00B2 GETGBL R13 G24
- 0x58380022, // 00B3 LDCONST R14 K34
- 0x5C3C1400, // 00B4 MOVE R15 R10
- 0x7C340400, // 00B5 CALL R13 2
- 0x7C2C0400, // 00B6 CALL R11 2
- 0x8C2C0515, // 00B7 GETMET R11 R2 K21
- 0x60340018, // 00B8 GETGBL R13 G24
- 0x58380023, // 00B9 LDCONST R14 K35
- 0x5C3C1400, // 00BA MOVE R15 R10
- 0x5C401400, // 00BB MOVE R16 R10
- 0x7C340600, // 00BC CALL R13 3
- 0x7C2C0400, // 00BD CALL R11 2
- 0x8C2C0124, // 00BE GETMET R11 R0 K36
- 0x58340002, // 00BF LDCONST R13 K2
- 0x88380114, // 00C0 GETMBR R14 R0 K20
- 0x7C2C0600, // 00C1 CALL R11 3
- 0x8C2C0515, // 00C2 GETMET R11 R2 K21
- 0x58340025, // 00C3 LDCONST R13 K37
- 0x7C2C0400, // 00C4 CALL R11 2
- 0x8C2C0515, // 00C5 GETMET R11 R2 K21
- 0x60340018, // 00C6 GETGBL R13 G24
- 0x58380029, // 00C7 LDCONST R14 K41
- 0x5C3C1400, // 00C8 MOVE R15 R10
- 0x5C401400, // 00C9 MOVE R16 R10
- 0x58440002, // 00CA LDCONST R17 K2
- 0x7C340800, // 00CB CALL R13 4
- 0x7C2C0400, // 00CC CALL R11 2
- 0x8C2C0515, // 00CD GETMET R11 R2 K21
- 0x58340027, // 00CE LDCONST R13 K39
- 0x7C2C0400, // 00CF CALL R11 2
- 0x8C2C0515, // 00D0 GETMET R11 R2 K21
- 0x5834002A, // 00D1 LDCONST R13 K42
- 0x7C2C0400, // 00D2 CALL R11 2
- 0x8C2C0515, // 00D3 GETMET R11 R2 K21
- 0x5834002B, // 00D4 LDCONST R13 K43
- 0x7C2C0400, // 00D5 CALL R11 2
- 0x8C2C0515, // 00D6 GETMET R11 R2 K21
- 0x5834002C, // 00D7 LDCONST R13 K44
- 0x7C2C0400, // 00D8 CALL R11 2
- 0x8C2C0515, // 00D9 GETMET R11 R2 K21
- 0x5834002D, // 00DA LDCONST R13 K45
- 0x7C2C0400, // 00DB CALL R11 2
- 0x70020007, // 00DC JMP #00E5
- 0x8C200515, // 00DD GETMET R8 R2 K21
- 0x60280018, // 00DE GETGBL R10 G24
- 0x582C002E, // 00DF LDCONST R11 K46
- 0x8C300517, // 00E0 GETMET R12 R2 K23
- 0x5C380200, // 00E1 MOVE R14 R1
- 0x7C300400, // 00E2 CALL R12 2
- 0x7C280400, // 00E3 CALL R10 2
- 0x7C200400, // 00E4 CALL R8 2
- 0x80000000, // 00E5 RET 0
+ 0x78220095, // 003C JMPF R8 #00D3
+ 0xB822F200, // 003D GETNGBL R8 K121
+ 0x60240018, // 003E GETGBL R9 G24
+ 0x5828007A, // 003F LDCONST R10 K122
+ 0x5C2C0200, // 0040 MOVE R11 R1
+ 0x60300008, // 0041 GETGBL R12 G8
+ 0x5C340C00, // 0042 MOVE R13 R6
+ 0x7C300200, // 0043 CALL R12 1
+ 0x60340008, // 0044 GETGBL R13 G8
+ 0x5C380E00, // 0045 MOVE R14 R7
+ 0x7C340200, // 0046 CALL R13 1
+ 0x7C240800, // 0047 CALL R9 4
+ 0x58280068, // 0048 LDCONST R10 K104
+ 0x7C200400, // 0049 CALL R8 2
+ 0x8C20017B, // 004A GETMET R8 R0 K123
+ 0x5C280C00, // 004B MOVE R10 R6
+ 0x5C2C0E00, // 004C MOVE R11 R7
+ 0x7C200600, // 004D CALL R8 3
+ 0x8C24015E, // 004E GETMET R9 R0 K94
+ 0x882C017C, // 004F GETMBR R11 R0 K124
+ 0x7C240400, // 0050 CALL R9 2
+ 0x8C240511, // 0051 GETMET R9 R2 K17
+ 0x582C007D, // 0052 LDCONST R11 K125
+ 0x7C240400, // 0053 CALL R9 2
+ 0x8C24054A, // 0054 GETMET R9 R2 K74
+ 0x5C2C0200, // 0055 MOVE R11 R1
+ 0x7C240400, // 0056 CALL R9 2
+ 0x8C280511, // 0057 GETMET R10 R2 K17
+ 0x60300018, // 0058 GETGBL R12 G24
+ 0x5834007E, // 0059 LDCONST R13 K126
+ 0x5C381200, // 005A MOVE R14 R9
+ 0x5C3C1200, // 005B MOVE R15 R9
+ 0x7C300600, // 005C CALL R12 3
+ 0x7C280400, // 005D CALL R10 2
+ 0x8C280511, // 005E GETMET R10 R2 K17
+ 0x5830007F, // 005F LDCONST R12 K127
+ 0x7C280400, // 0060 CALL R10 2
+ 0x8C280511, // 0061 GETMET R10 R2 K17
+ 0x60300018, // 0062 GETGBL R12 G24
+ 0x58340080, // 0063 LDCONST R13 K128
+ 0x8C38054A, // 0064 GETMET R14 R2 K74
+ 0x5C400200, // 0065 MOVE R16 R1
+ 0x7C380400, // 0066 CALL R14 2
+ 0x7C300400, // 0067 CALL R12 2
+ 0x7C280400, // 0068 CALL R10 2
+ 0x5828001C, // 0069 LDCONST R10 K28
+ 0x602C000C, // 006A GETGBL R11 G12
+ 0x5C301000, // 006B MOVE R12 R8
+ 0x7C2C0200, // 006C CALL R11 1
+ 0x142C140B, // 006D LT R11 R10 R11
+ 0x782E0040, // 006E JMPF R11 #00B0
+ 0x942C100A, // 006F GETIDX R11 R8 R10
+ 0x8C301743, // 0070 GETMET R12 R11 K67
+ 0x58380023, // 0071 LDCONST R14 K35
+ 0x583C0015, // 0072 LDCONST R15 K21
+ 0x7C300600, // 0073 CALL R12 3
+ 0x20341915, // 0074 NE R13 R12 K21
+ 0x78360000, // 0075 JMPF R13 #0077
+ 0x0032880C, // 0076 ADD R12 K68 R12
+ 0x88340116, // 0077 GETMBR R13 R0 K22
+ 0x88341B45, // 0078 GETMBR R13 R13 K69
+ 0x8C341B43, // 0079 GETMET R13 R13 K67
+ 0x5C3C1800, // 007A MOVE R15 R12
+ 0x7C340400, // 007B CALL R13 2
+ 0x58380015, // 007C LDCONST R14 K21
+ 0x583C0015, // 007D LDCONST R15 K21
+ 0x4C400000, // 007E LDNIL R16
+ 0x20401A10, // 007F NE R16 R13 R16
+ 0x78420005, // 0080 JMPF R16 #0087
+ 0x8C401B46, // 0081 GETMET R16 R13 K70
+ 0x5C481A00, // 0082 MOVE R18 R13
+ 0x5C4C1600, // 0083 MOVE R19 R11
+ 0x7C400600, // 0084 CALL R16 3
+ 0x5C382000, // 0085 MOVE R14 R16
+ 0x883C1B47, // 0086 GETMBR R15 R13 K71
+ 0x8C400511, // 0087 GETMET R16 R2 K17
+ 0x60480018, // 0088 GETGBL R18 G24
+ 0x584C0081, // 0089 LDCONST R19 K129
+ 0x5C501400, // 008A MOVE R20 R10
+ 0x7C480400, // 008B CALL R18 2
+ 0x7C400400, // 008C CALL R16 2
+ 0x8C400511, // 008D GETMET R16 R2 K17
+ 0x60480018, // 008E GETGBL R18 G24
+ 0x584C0082, // 008F LDCONST R19 K130
+ 0x5C501400, // 0090 MOVE R20 R10
+ 0x5C541400, // 0091 MOVE R21 R10
+ 0x7C480600, // 0092 CALL R18 3
+ 0x7C400400, // 0093 CALL R16 2
+ 0x8C400161, // 0094 GETMET R16 R0 K97
+ 0x5C481800, // 0095 MOVE R18 R12
+ 0x884C017C, // 0096 GETMBR R19 R0 K124
+ 0x7C400600, // 0097 CALL R16 3
+ 0x8C400511, // 0098 GETMET R16 R2 K17
+ 0x58480083, // 0099 LDCONST R18 K131
+ 0x7C400400, // 009A CALL R16 2
+ 0x8C400511, // 009B GETMET R16 R2 K17
+ 0x60480018, // 009C GETGBL R18 G24
+ 0x584C0084, // 009D LDCONST R19 K132
+ 0x5C501400, // 009E MOVE R20 R10
+ 0x5C541400, // 009F MOVE R21 R10
+ 0x8C58054A, // 00A0 GETMET R22 R2 K74
+ 0x5C601C00, // 00A1 MOVE R24 R14
+ 0x7C580400, // 00A2 CALL R22 2
+ 0x8C5C054A, // 00A3 GETMET R23 R2 K74
+ 0x5C641E00, // 00A4 MOVE R25 R15
+ 0x7C5C0400, // 00A5 CALL R23 2
+ 0x8C60054A, // 00A6 GETMET R24 R2 K74
+ 0x5C681E00, // 00A7 MOVE R26 R15
+ 0x7C600400, // 00A8 CALL R24 2
+ 0x7C480C00, // 00A9 CALL R18 6
+ 0x7C400400, // 00AA CALL R16 2
+ 0x8C400511, // 00AB GETMET R16 R2 K17
+ 0x58480085, // 00AC LDCONST R18 K133
+ 0x7C400400, // 00AD CALL R16 2
+ 0x0028151E, // 00AE ADD R10 R10 K30
+ 0x7001FFB9, // 00AF JMP #006A
+ 0x8C2C0511, // 00B0 GETMET R11 R2 K17
+ 0x60340018, // 00B1 GETGBL R13 G24
+ 0x58380081, // 00B2 LDCONST R14 K129
+ 0x5C3C1400, // 00B3 MOVE R15 R10
+ 0x7C340400, // 00B4 CALL R13 2
+ 0x7C2C0400, // 00B5 CALL R11 2
+ 0x8C2C0511, // 00B6 GETMET R11 R2 K17
+ 0x60340018, // 00B7 GETGBL R13 G24
+ 0x58380082, // 00B8 LDCONST R14 K130
+ 0x5C3C1400, // 00B9 MOVE R15 R10
+ 0x5C401400, // 00BA MOVE R16 R10
+ 0x7C340600, // 00BB CALL R13 3
+ 0x7C2C0400, // 00BC CALL R11 2
+ 0x8C2C0161, // 00BD GETMET R11 R0 K97
+ 0x58340015, // 00BE LDCONST R13 K21
+ 0x8838017C, // 00BF GETMBR R14 R0 K124
+ 0x7C2C0600, // 00C0 CALL R11 3
+ 0x8C2C0511, // 00C1 GETMET R11 R2 K17
+ 0x58340083, // 00C2 LDCONST R13 K131
+ 0x7C2C0400, // 00C3 CALL R11 2
+ 0x8C2C0511, // 00C4 GETMET R11 R2 K17
+ 0x60340018, // 00C5 GETGBL R13 G24
+ 0x58380086, // 00C6 LDCONST R14 K134
+ 0x5C3C1400, // 00C7 MOVE R15 R10
+ 0x5C401400, // 00C8 MOVE R16 R10
+ 0x58440015, // 00C9 LDCONST R17 K21
+ 0x7C340800, // 00CA CALL R13 4
+ 0x7C2C0400, // 00CB CALL R11 2
+ 0x8C2C0511, // 00CC GETMET R11 R2 K17
+ 0x58340085, // 00CD LDCONST R13 K133
+ 0x7C2C0400, // 00CE CALL R11 2
+ 0x8C2C0511, // 00CF GETMET R11 R2 K17
+ 0x58340087, // 00D0 LDCONST R13 K135
+ 0x7C2C0400, // 00D1 CALL R11 2
+ 0x70020007, // 00D2 JMP #00DB
+ 0x8C200511, // 00D3 GETMET R8 R2 K17
+ 0x60280018, // 00D4 GETGBL R10 G24
+ 0x582C0088, // 00D5 LDCONST R11 K136
+ 0x8C30054A, // 00D6 GETMET R12 R2 K74
+ 0x5C380200, // 00D7 MOVE R14 R1
+ 0x7C300400, // 00D8 CALL R12 2
+ 0x7C280400, // 00D9 CALL R10 2
+ 0x7C200400, // 00DA CALL R8 2
+ 0x80000000, // 00DB RET 0
})
)
);
@@ -1434,150 +1391,117 @@ be_local_closure(class_Matter_UI_show_remote_autoconf, /* name */
/********************************************************************
** Solidified function: show_fabric_info
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_show_fabric_info, /* name */
be_nested_proto(
14, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[28]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(content_send),
- /* K2 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BFabrics_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3Cp_X3EAssociated_X20fabrics_X3A_X3C_X2Fp_X3E),
- /* K3 */ be_nested_str_weak(device),
- /* K4 */ be_nested_str_weak(sessions),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(_X3Cp_X3E_X3Cb_X3ENone_X3C_X2Fb_X3E_X3C_X2Fp_X3E),
- /* K7 */ be_nested_str_weak(fabrics),
- /* K8 */ be_nested_str_weak(persistables),
- /* K9 */ be_nested_str_weak(_X3Chr_X3E),
- /* K10 */ be_nested_str_weak(fabric_label),
- /* K11 */ be_nested_str_weak(_X3CNo_X20label_X3E),
- /* K12 */ be_nested_str_weak(html_escape),
- /* K13 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3B_X23_X25i_X20_X25s_X3C_X2Fb_X3E_X20_X28_X25s_X29_X26nbsp_X3B_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
- /* K14 */ be_nested_str_weak(get_fabric_index),
- /* K15 */ be_nested_str_weak(get_admin_vendor_name),
- /* K16 */ be_nested_str_weak(get_fabric_id),
- /* K17 */ be_nested_str_weak(copy),
- /* K18 */ be_nested_str_weak(reverse),
- /* K19 */ be_nested_str_weak(get_device_id),
- /* K20 */ be_nested_str_weak(Fabric_X3A_X20_X25s_X3Cbr_X3E),
- /* K21 */ be_nested_str_weak(tohex),
- /* K22 */ be_nested_str_weak(Device_X3A_X20_X25s_X3Cbr_X3E_X26nbsp_X3B),
- /* K23 */ be_nested_str_weak(_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X20onsubmit_X3D_X27return_X20confirm_X28_X22Are_X20you_X20sure_X3F_X22_X29_X3B_X27_X3E),
- /* K24 */ be_nested_str_weak(_X3Cinput_X20name_X3D_X27del_fabric_X27_X20type_X3D_X27hidden_X27_X20value_X3D_X27_X25i_X27_X3E),
- /* K25 */ be_nested_str_weak(_X3Cbutton_X20name_X3D_X27del_X27_X20class_X3D_X27button_X20bgrn_X27_X3EDelete_X20Fabric_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E),
- /* K26 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
- /* K27 */ be_nested_str_weak(stop_iteration),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(show_fabric_info),
&be_const_str_solidified,
- ( &(const binstruction[100]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080301, // 0001 GETMET R2 R1 K1
- 0x58100002, // 0002 LDCONST R4 K2
+ ( &(const binstruction[97]) { /* code */
+ 0xA4060800, // 0000 IMPORT R1 K4
+ 0x8C080311, // 0001 GETMET R2 R1 K17
+ 0x58100089, // 0002 LDCONST R4 K137
0x7C080400, // 0003 CALL R2 2
0x6008000C, // 0004 GETGBL R2 G12
- 0x880C0103, // 0005 GETMBR R3 R0 K3
- 0x880C0704, // 0006 GETMBR R3 R3 K4
- 0x880C0704, // 0007 GETMBR R3 R3 K4
+ 0x880C0116, // 0005 GETMBR R3 R0 K22
+ 0x880C072B, // 0006 GETMBR R3 R3 K43
+ 0x880C072B, // 0007 GETMBR R3 R3 K43
0x7C080200, // 0008 CALL R2 1
- 0x1C080505, // 0009 EQ R2 R2 K5
+ 0x1C08051C, // 0009 EQ R2 R2 K28
0x780A0003, // 000A JMPF R2 #000F
- 0x8C080301, // 000B GETMET R2 R1 K1
- 0x58100006, // 000C LDCONST R4 K6
+ 0x8C080311, // 000B GETMET R2 R1 K17
+ 0x5810008A, // 000C LDCONST R4 K138
0x7C080400, // 000D CALL R2 2
- 0x70020050, // 000E JMP #0060
+ 0x7002004D, // 000E JMP #005D
0x50080200, // 000F LDBOOL R2 1 0
0x600C0010, // 0010 GETGBL R3 G16
- 0x88100103, // 0011 GETMBR R4 R0 K3
- 0x88100904, // 0012 GETMBR R4 R4 K4
- 0x88100907, // 0013 GETMBR R4 R4 K7
- 0x8C100908, // 0014 GETMET R4 R4 K8
+ 0x88100116, // 0011 GETMBR R4 R0 K22
+ 0x8810092B, // 0012 GETMBR R4 R4 K43
+ 0x8810098B, // 0013 GETMBR R4 R4 K139
+ 0x8C10098C, // 0014 GETMET R4 R4 K140
0x7C100200, // 0015 CALL R4 1
0x7C0C0200, // 0016 CALL R3 1
- 0xA8020044, // 0017 EXBLK 0 #005D
+ 0xA8020041, // 0017 EXBLK 0 #005A
0x5C100600, // 0018 MOVE R4 R3
0x7C100000, // 0019 CALL R4 0
0x5C140400, // 001A MOVE R5 R2
0x74160002, // 001B JMPT R5 #001F
- 0x8C140301, // 001C GETMET R5 R1 K1
- 0x581C0009, // 001D LDCONST R7 K9
+ 0x8C140311, // 001C GETMET R5 R1 K17
+ 0x581C008D, // 001D LDCONST R7 K141
0x7C140400, // 001E CALL R5 2
0x50080000, // 001F LDBOOL R2 0 0
- 0x8814090A, // 0020 GETMBR R5 R4 K10
+ 0x8814098E, // 0020 GETMBR R5 R4 K142
0x5C180A00, // 0021 MOVE R6 R5
0x741A0000, // 0022 JMPT R6 #0024
- 0x5814000B, // 0023 LDCONST R5 K11
- 0x8C18030C, // 0024 GETMET R6 R1 K12
+ 0x5814008F, // 0023 LDCONST R5 K143
+ 0x8C18034A, // 0024 GETMET R6 R1 K74
0x5C200A00, // 0025 MOVE R8 R5
0x7C180400, // 0026 CALL R6 2
0x5C140C00, // 0027 MOVE R5 R6
- 0x8C180301, // 0028 GETMET R6 R1 K1
+ 0x8C180311, // 0028 GETMET R6 R1 K17
0x60200018, // 0029 GETGBL R8 G24
- 0x5824000D, // 002A LDCONST R9 K13
- 0x8C28090E, // 002B GETMET R10 R4 K14
+ 0x58240090, // 002A LDCONST R9 K144
+ 0x8C280991, // 002B GETMET R10 R4 K145
0x7C280200, // 002C CALL R10 1
0x5C2C0A00, // 002D MOVE R11 R5
- 0x8C30090F, // 002E GETMET R12 R4 K15
+ 0x8C300992, // 002E GETMET R12 R4 K146
0x7C300200, // 002F CALL R12 1
0x7C200800, // 0030 CALL R8 4
0x7C180400, // 0031 CALL R6 2
- 0x8C180910, // 0032 GETMET R6 R4 K16
+ 0x8C180993, // 0032 GETMET R6 R4 K147
0x7C180200, // 0033 CALL R6 1
- 0x8C180D11, // 0034 GETMET R6 R6 K17
+ 0x8C180D94, // 0034 GETMET R6 R6 K148
0x7C180200, // 0035 CALL R6 1
- 0x8C180D12, // 0036 GETMET R6 R6 K18
+ 0x8C180D95, // 0036 GETMET R6 R6 K149
0x7C180200, // 0037 CALL R6 1
- 0x8C1C0913, // 0038 GETMET R7 R4 K19
+ 0x8C1C0996, // 0038 GETMET R7 R4 K150
0x7C1C0200, // 0039 CALL R7 1
- 0x8C1C0F11, // 003A GETMET R7 R7 K17
+ 0x8C1C0F94, // 003A GETMET R7 R7 K148
0x7C1C0200, // 003B CALL R7 1
- 0x8C1C0F12, // 003C GETMET R7 R7 K18
+ 0x8C1C0F95, // 003C GETMET R7 R7 K149
0x7C1C0200, // 003D CALL R7 1
- 0x8C200301, // 003E GETMET R8 R1 K1
+ 0x8C200311, // 003E GETMET R8 R1 K17
0x60280018, // 003F GETGBL R10 G24
- 0x582C0014, // 0040 LDCONST R11 K20
- 0x8C300D15, // 0041 GETMET R12 R6 K21
+ 0x582C0097, // 0040 LDCONST R11 K151
+ 0x8C300D98, // 0041 GETMET R12 R6 K152
0x7C300200, // 0042 CALL R12 1
0x7C280400, // 0043 CALL R10 2
0x7C200400, // 0044 CALL R8 2
- 0x8C200301, // 0045 GETMET R8 R1 K1
+ 0x8C200311, // 0045 GETMET R8 R1 K17
0x60280018, // 0046 GETGBL R10 G24
- 0x582C0016, // 0047 LDCONST R11 K22
- 0x8C300F15, // 0048 GETMET R12 R7 K21
+ 0x582C0099, // 0047 LDCONST R11 K153
+ 0x8C300F98, // 0048 GETMET R12 R7 K152
0x7C300200, // 0049 CALL R12 1
0x7C280400, // 004A CALL R10 2
0x7C200400, // 004B CALL R8 2
- 0x8C200301, // 004C GETMET R8 R1 K1
- 0x58280017, // 004D LDCONST R10 K23
+ 0x8C200311, // 004C GETMET R8 R1 K17
+ 0x5828009A, // 004D LDCONST R10 K154
0x7C200400, // 004E CALL R8 2
- 0x8C200301, // 004F GETMET R8 R1 K1
+ 0x8C200311, // 004F GETMET R8 R1 K17
0x60280018, // 0050 GETGBL R10 G24
- 0x582C0018, // 0051 LDCONST R11 K24
- 0x8C30090E, // 0052 GETMET R12 R4 K14
+ 0x582C009B, // 0051 LDCONST R11 K155
+ 0x8C300991, // 0052 GETMET R12 R4 K145
0x7C300200, // 0053 CALL R12 1
0x7C280400, // 0054 CALL R10 2
0x7C200400, // 0055 CALL R8 2
- 0x8C200301, // 0056 GETMET R8 R1 K1
- 0x58280019, // 0057 LDCONST R10 K25
+ 0x8C200311, // 0056 GETMET R8 R1 K17
+ 0x5828009C, // 0057 LDCONST R10 K156
0x7C200400, // 0058 CALL R8 2
- 0x8C200301, // 0059 GETMET R8 R1 K1
- 0x5828001A, // 005A LDCONST R10 K26
- 0x7C200400, // 005B CALL R8 2
- 0x7001FFBA, // 005C JMP #0018
- 0x580C001B, // 005D LDCONST R3 K27
- 0xAC0C0200, // 005E CATCH R3 1 0
- 0xB0080000, // 005F RAISE 2 R0 R0
- 0x8C080301, // 0060 GETMET R2 R1 K1
- 0x5810001A, // 0061 LDCONST R4 K26
- 0x7C080400, // 0062 CALL R2 2
- 0x80000000, // 0063 RET 0
+ 0x7001FFBD, // 0059 JMP #0018
+ 0x580C0003, // 005A LDCONST R3 K3
+ 0xAC0C0200, // 005B CATCH R3 1 0
+ 0xB0080000, // 005C RAISE 2 R0 R0
+ 0x8C080311, // 005D GETMET R2 R1 K17
+ 0x5810009D, // 005E LDCONST R4 K157
+ 0x7C080400, // 005F CALL R2 2
+ 0x80000000, // 0060 RET 0
})
)
);
@@ -1587,46 +1511,39 @@ be_local_closure(class_Matter_UI_show_fabric_info, /* name */
/********************************************************************
** Solidified function: web_get_arg
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_web_get_arg, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(has_arg),
- /* K2 */ be_nested_str_weak(mtc0),
- /* K3 */ be_nested_str_weak(device),
- /* K4 */ be_nested_str_weak(stop_basic_commissioning),
- /* K5 */ be_nested_str_weak(mtc1),
- /* K6 */ be_nested_str_weak(start_root_basic_commissioning),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(web_get_arg),
&be_const_str_solidified,
- ( &(const binstruction[17]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080301, // 0001 GETMET R2 R1 K1
- 0x58100002, // 0002 LDCONST R4 K2
+ ( &(const binstruction[19]) { /* code */
+ 0xA4060800, // 0000 IMPORT R1 K4
+ 0x8C08039E, // 0001 GETMET R2 R1 K158
+ 0x5810009F, // 0002 LDCONST R4 K159
0x7C080400, // 0003 CALL R2 2
- 0x780A0003, // 0004 JMPF R2 #0009
- 0x88080103, // 0005 GETMBR R2 R0 K3
- 0x8C080504, // 0006 GETMET R2 R2 K4
- 0x7C080200, // 0007 CALL R2 1
- 0x70020006, // 0008 JMP #0010
- 0x8C080301, // 0009 GETMET R2 R1 K1
- 0x58100005, // 000A LDCONST R4 K5
- 0x7C080400, // 000B CALL R2 2
- 0x780A0002, // 000C JMPF R2 #0010
- 0x88080103, // 000D GETMBR R2 R0 K3
- 0x8C080506, // 000E GETMET R2 R2 K6
- 0x7C080200, // 000F CALL R2 1
- 0x80000000, // 0010 RET 0
+ 0x780A0004, // 0004 JMPF R2 #000A
+ 0x88080116, // 0005 GETMBR R2 R0 K22
+ 0x88080533, // 0006 GETMBR R2 R2 K51
+ 0x8C0805A0, // 0007 GETMET R2 R2 K160
+ 0x7C080200, // 0008 CALL R2 1
+ 0x70020007, // 0009 JMP #0012
+ 0x8C08039E, // 000A GETMET R2 R1 K158
+ 0x581000A1, // 000B LDCONST R4 K161
+ 0x7C080400, // 000C CALL R2 2
+ 0x780A0003, // 000D JMPF R2 #0012
+ 0x88080116, // 000E GETMBR R2 R0 K22
+ 0x88080533, // 000F GETMBR R2 R2 K51
+ 0x8C0805A2, // 0010 GETMET R2 R2 K162
+ 0x7C080200, // 0011 CALL R2 1
+ 0x80000000, // 0012 RET 0
})
)
);
@@ -1636,40 +1553,22 @@ be_local_closure(class_Matter_UI_web_get_arg, /* name */
/********************************************************************
** Solidified function: plugin_option
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_plugin_option, /* name */
be_nested_proto(
16, /* nstack */
3, /* argc */
- 3, /* varg */
+ 11, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(string),
- /* K2 */ be_nested_str_weak(split),
- /* K3 */ be_nested_str_weak(_X7C),
- /* K4 */ be_nested_str_weak(stop_iteration),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(),
- /* K7 */ be_nested_str_weak(content_send),
- /* K8 */ be_nested_str_weak(_X3Coption_X20value_X3D_X27_X27_X3E_X3C_X2Foption_X3E),
- /* K9 */ be_nested_str_weak(_X2Dvirtual),
- /* K10 */ be_nested_str_weak(_X3Coption_X20value_X3D_X27_X27_X20disabled_X3E_X2D_X2D_X2D_X20Virtual_X20Devices_X20_X2D_X2D_X2D_X3C_X2Foption_X3E),
- /* K11 */ be_nested_str_weak(device),
- /* K12 */ be_nested_str_weak(get_plugin_class_displayname),
- /* K13 */ be_nested_str_weak(_X3Coption_X20value_X3D_X27_X25s_X27_X25s_X3E_X25s_X3C_X2Foption_X3E),
- /* K14 */ be_nested_str_weak(_X20selected),
- /* K15 */ be_const_int(1),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(plugin_option),
&be_const_str_solidified,
( &(const binstruction[57]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
- 0xA4120200, // 0001 IMPORT R4 K1
+ 0xA40E0800, // 0000 IMPORT R3 K4
+ 0xA4127400, // 0001 IMPORT R4 K58
0x60140012, // 0002 GETGBL R5 G18
0x7C140000, // 0003 CALL R5 0
0x60180010, // 0004 GETGBL R6 G16
@@ -1678,51 +1577,51 @@ be_local_closure(class_Matter_UI_plugin_option, /* name */
0xA8020007, // 0007 EXBLK 0 #0010
0x5C1C0C00, // 0008 MOVE R7 R6
0x7C1C0000, // 0009 CALL R7 0
- 0x8C200902, // 000A GETMET R8 R4 K2
+ 0x8C2009A3, // 000A GETMET R8 R4 K163
0x5C280E00, // 000B MOVE R10 R7
- 0x582C0003, // 000C LDCONST R11 K3
+ 0x582C00A4, // 000C LDCONST R11 K164
0x7C200600, // 000D CALL R8 3
0x00140A08, // 000E ADD R5 R5 R8
0x7001FFF7, // 000F JMP #0008
- 0x58180004, // 0010 LDCONST R6 K4
+ 0x58180003, // 0010 LDCONST R6 K3
0xAC180200, // 0011 CATCH R6 1 0
0xB0080000, // 0012 RAISE 2 R0 R0
- 0x58180005, // 0013 LDCONST R6 K5
+ 0x5818001C, // 0013 LDCONST R6 K28
0x601C000C, // 0014 GETGBL R7 G12
0x5C200A00, // 0015 MOVE R8 R5
0x7C1C0200, // 0016 CALL R7 1
0x141C0C07, // 0017 LT R7 R6 R7
0x781E001E, // 0018 JMPF R7 #0038
0x941C0A06, // 0019 GETIDX R7 R5 R6
- 0x1C200F06, // 001A EQ R8 R7 K6
+ 0x1C200F15, // 001A EQ R8 R7 K21
0x78220003, // 001B JMPF R8 #0020
- 0x8C200707, // 001C GETMET R8 R3 K7
- 0x58280008, // 001D LDCONST R10 K8
+ 0x8C200711, // 001C GETMET R8 R3 K17
+ 0x582800A5, // 001D LDCONST R10 K165
0x7C200400, // 001E CALL R8 2
0x70020015, // 001F JMP #0036
- 0x1C200F09, // 0020 EQ R8 R7 K9
+ 0x1C200FA6, // 0020 EQ R8 R7 K166
0x78220003, // 0021 JMPF R8 #0026
- 0x8C200707, // 0022 GETMET R8 R3 K7
- 0x5828000A, // 0023 LDCONST R10 K10
+ 0x8C200711, // 0022 GETMET R8 R3 K17
+ 0x582800A7, // 0023 LDCONST R10 K167
0x7C200400, // 0024 CALL R8 2
0x7002000F, // 0025 JMP #0036
- 0x8820010B, // 0026 GETMBR R8 R0 K11
- 0x8C20110C, // 0027 GETMET R8 R8 K12
+ 0x88200116, // 0026 GETMBR R8 R0 K22
+ 0x8C201117, // 0027 GETMET R8 R8 K23
0x5C280E00, // 0028 MOVE R10 R7
0x7C200400, // 0029 CALL R8 2
- 0x8C240707, // 002A GETMET R9 R3 K7
+ 0x8C240711, // 002A GETMET R9 R3 K17
0x602C0018, // 002B GETGBL R11 G24
- 0x5830000D, // 002C LDCONST R12 K13
+ 0x583000A8, // 002C LDCONST R12 K168
0x5C340E00, // 002D MOVE R13 R7
0x1C380E01, // 002E EQ R14 R7 R1
0x783A0001, // 002F JMPF R14 #0032
- 0x5838000E, // 0030 LDCONST R14 K14
+ 0x583800A9, // 0030 LDCONST R14 K169
0x70020000, // 0031 JMP #0033
- 0x58380006, // 0032 LDCONST R14 K6
+ 0x58380015, // 0032 LDCONST R14 K21
0x5C3C1000, // 0033 MOVE R15 R8
0x7C2C0800, // 0034 CALL R11 4
0x7C240400, // 0035 CALL R9 2
- 0x00180D0F, // 0036 ADD R6 R6 K15
+ 0x00180D1E, // 0036 ADD R6 R6 K30
0x7001FFDB, // 0037 JMP #0014
0x80000000, // 0038 RET 0
})
@@ -1734,38 +1633,30 @@ be_local_closure(class_Matter_UI_plugin_option, /* name */
/********************************************************************
** Solidified function: web_add_config_button
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_web_add_config_button, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(content_send),
- /* K2 */ be_nested_str_weak(_X3Cp_X3E_X3Cform_X20id_X3Dac_X20action_X3D_X27matterc_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X3E),
- /* K3 */ be_nested_str_weak(matter),
- /* K4 */ be_nested_str_weak(_LOGO),
- /* K5 */ be_nested_str_weak(_X20Configure_X20Matter_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(web_add_config_button),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080301, // 0001 GETMET R2 R1 K1
- 0x58100002, // 0002 LDCONST R4 K2
+ 0xA4060800, // 0000 IMPORT R1 K4
+ 0x8C080311, // 0001 GETMET R2 R1 K17
+ 0x581000AA, // 0002 LDCONST R4 K170
0x7C080400, // 0003 CALL R2 2
- 0x8C080301, // 0004 GETMET R2 R1 K1
- 0xB8120600, // 0005 GETNGBL R4 K3
- 0x88100904, // 0006 GETMBR R4 R4 K4
+ 0x8C080311, // 0004 GETMET R2 R1 K17
+ 0xB8123400, // 0005 GETNGBL R4 K26
+ 0x881009AB, // 0006 GETMBR R4 R4 K171
0x7C080400, // 0007 CALL R2 2
- 0x8C080301, // 0008 GETMET R2 R1 K1
- 0x58100005, // 0009 LDCONST R4 K5
+ 0x8C080311, // 0008 GETMET R2 R1 K17
+ 0x581000AC, // 0009 LDCONST R4 K172
0x7C080400, // 000A CALL R2 2
0x80000000, // 000B RET 0
})
@@ -1777,28 +1668,23 @@ be_local_closure(class_Matter_UI_web_add_config_button, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_init, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(device),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(add_driver),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0xB80A0200, // 0001 GETNGBL R2 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
+ 0x90022C01, // 0000 SETMBR R0 K22 R1
+ 0xB80A3000, // 0001 GETNGBL R2 K24
+ 0x8C0805AD, // 0002 GETMET R2 R2 K173
0x5C100000, // 0003 MOVE R4 R0
0x7C080400, // 0004 CALL R2 2
0x80000000, // 0005 RET 0
@@ -1811,171 +1697,138 @@ be_local_closure(class_Matter_UI_init, /* name */
/********************************************************************
** Solidified function: show_bridge_status
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_show_bridge_status, /* name */
be_nested_proto(
15, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[27]) { /* constants */
- /* K0 */ be_nested_str_weak(device),
- /* K1 */ be_nested_str_weak(plugins),
- /* K2 */ be_nested_str_weak(webserver),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(matter),
- /* K5 */ be_nested_str_weak(Plugin_Bridge_HTTP),
- /* K6 */ be_nested_str_weak(http_remote),
- /* K7 */ be_nested_str_weak(addr),
- /* K8 */ be_nested_str_weak(contains),
- /* K9 */ be_nested_str_weak(push),
- /* K10 */ be_const_int(1),
- /* K11 */ be_nested_str_weak(content_send),
- /* K12 */ be_nested_str_weak(_X3Chr_X3E),
- /* K13 */ be_nested_str_weak(_X3Ctable_X20style_X3D_X27width_X3A100_X25_X27_X3E),
- /* K14 */ be_nested_str_weak(_STYLESHEET),
- /* K15 */ be_nested_str_weak(k2l),
- /* K16 */ be_nested_str_weak(html_escape),
- /* K17 */ be_nested_str_weak(get_plugin_remote_info),
- /* K18 */ be_nested_str_weak(find),
- /* K19 */ be_nested_str_weak(name),
- /* K20 */ be_nested_str_weak(_X3Ctr_X20class_X3D_X27ztdm_X20htrm_X27_X3E_X3Ctd_X3E_X26_X23x1F517_X3B_X20_X3Ca_X20target_X3D_X27_blank_X27_X20title_X3D_X27http_X3A_X2F_X2F_X25s_X2F_X27_X20href_X3D_X22http_X3A_X2F_X2F_X25s_X2F_X3F_X22_X27_X3E_X25s_X3C_X2Fa_X3E_X3C_X2Ftd_X3E),
- /* K21 */ be_nested_str_weak(web_last_seen),
- /* K22 */ be_nested_str_weak(_X3Ctr_X20class_X3D_X27htrm_X27_X3E_X3Ctd_X20colspan_X3D_X272_X27_X3E),
- /* K23 */ be_nested_str_weak(web_values),
- /* K24 */ be_nested_str_weak(_X3C_X2Ftd_X3E_X3C_X2Ftr_X3E),
- /* K25 */ be_nested_str_weak(stop_iteration),
- /* K26 */ be_nested_str_weak(_X3C_X2Ftable_X3E_X3Chr_X3E),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(show_bridge_status),
&be_const_str_solidified,
- ( &(const binstruction[122]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
+ ( &(const binstruction[118]) { /* code */
+ 0x88040116, // 0000 GETMBR R1 R0 K22
+ 0x880403AE, // 0001 GETMBR R1 R1 K174
0x4C080000, // 0002 LDNIL R2
0x1C040202, // 0003 EQ R1 R1 R2
0x78060000, // 0004 JMPF R1 #0006
0x80000200, // 0005 RET 0
- 0xA4060400, // 0006 IMPORT R1 K2
+ 0xA4060800, // 0006 IMPORT R1 K4
0x4C080000, // 0007 LDNIL R2
- 0x580C0003, // 0008 LDCONST R3 K3
+ 0x580C001C, // 0008 LDCONST R3 K28
0x6010000C, // 0009 GETGBL R4 G12
- 0x88140100, // 000A GETMBR R5 R0 K0
- 0x88140B01, // 000B GETMBR R5 R5 K1
+ 0x88140116, // 000A GETMBR R5 R0 K22
+ 0x88140BAE, // 000B GETMBR R5 R5 K174
0x7C100200, // 000C CALL R4 1
0x14100604, // 000D LT R4 R3 R4
- 0x7812001D, // 000E JMPF R4 #002D
- 0x88100100, // 000F GETMBR R4 R0 K0
- 0x88100901, // 0010 GETMBR R4 R4 K1
+ 0x78120019, // 000E JMPF R4 #0029
+ 0x88100116, // 000F GETMBR R4 R0 K22
+ 0x881009AE, // 0010 GETMBR R4 R4 K174
0x94100803, // 0011 GETIDX R4 R4 R3
- 0x6014000F, // 0012 GETGBL R5 G15
- 0x5C180800, // 0013 MOVE R6 R4
- 0xB81E0800, // 0014 GETNGBL R7 K4
- 0x881C0F05, // 0015 GETMBR R7 R7 K5
- 0x7C140400, // 0016 CALL R5 2
- 0x78160012, // 0017 JMPF R5 #002B
- 0x4C140000, // 0018 LDNIL R5
- 0x1C140405, // 0019 EQ R5 R2 R5
- 0x78160002, // 001A JMPF R5 #001E
- 0x60140013, // 001B GETGBL R5 G19
- 0x7C140000, // 001C CALL R5 0
- 0x5C080A00, // 001D MOVE R2 R5
- 0x88140906, // 001E GETMBR R5 R4 K6
- 0x88140B07, // 001F GETMBR R5 R5 K7
- 0x8C180508, // 0020 GETMET R6 R2 K8
- 0x5C200A00, // 0021 MOVE R8 R5
- 0x7C180400, // 0022 CALL R6 2
- 0x741A0002, // 0023 JMPT R6 #0027
- 0x60180012, // 0024 GETGBL R6 G18
- 0x7C180000, // 0025 CALL R6 0
- 0x98080A06, // 0026 SETIDX R2 R5 R6
- 0x94180405, // 0027 GETIDX R6 R2 R5
- 0x8C180D09, // 0028 GETMET R6 R6 K9
- 0x5C200800, // 0029 MOVE R8 R4
- 0x7C180400, // 002A CALL R6 2
- 0x000C070A, // 002B ADD R3 R3 K10
- 0x7001FFDB, // 002C JMP #0009
- 0x4C100000, // 002D LDNIL R4
- 0x1C100404, // 002E EQ R4 R2 R4
- 0x78120000, // 002F JMPF R4 #0031
- 0x80000800, // 0030 RET 0
- 0x8C10030B, // 0031 GETMET R4 R1 K11
- 0x5818000C, // 0032 LDCONST R6 K12
- 0x7C100400, // 0033 CALL R4 2
- 0x8C10030B, // 0034 GETMET R4 R1 K11
- 0x5818000D, // 0035 LDCONST R6 K13
+ 0x881409AF, // 0012 GETMBR R5 R4 K175
+ 0x78160012, // 0013 JMPF R5 #0027
+ 0x4C140000, // 0014 LDNIL R5
+ 0x1C140405, // 0015 EQ R5 R2 R5
+ 0x78160002, // 0016 JMPF R5 #001A
+ 0x60140013, // 0017 GETGBL R5 G19
+ 0x7C140000, // 0018 CALL R5 0
+ 0x5C080A00, // 0019 MOVE R2 R5
+ 0x881409B0, // 001A GETMBR R5 R4 K176
+ 0x88140BB1, // 001B GETMBR R5 R5 K177
+ 0x8C180502, // 001C GETMET R6 R2 K2
+ 0x5C200A00, // 001D MOVE R8 R5
+ 0x7C180400, // 001E CALL R6 2
+ 0x741A0002, // 001F JMPT R6 #0023
+ 0x60180012, // 0020 GETGBL R6 G18
+ 0x7C180000, // 0021 CALL R6 0
+ 0x98080A06, // 0022 SETIDX R2 R5 R6
+ 0x94180405, // 0023 GETIDX R6 R2 R5
+ 0x8C180D22, // 0024 GETMET R6 R6 K34
+ 0x5C200800, // 0025 MOVE R8 R4
+ 0x7C180400, // 0026 CALL R6 2
+ 0x000C071E, // 0027 ADD R3 R3 K30
+ 0x7001FFDF, // 0028 JMP #0009
+ 0x4C100000, // 0029 LDNIL R4
+ 0x1C100404, // 002A EQ R4 R2 R4
+ 0x78120000, // 002B JMPF R4 #002D
+ 0x80000800, // 002C RET 0
+ 0x8C100311, // 002D GETMET R4 R1 K17
+ 0x5818008D, // 002E LDCONST R6 K141
+ 0x7C100400, // 002F CALL R4 2
+ 0x8C100311, // 0030 GETMET R4 R1 K17
+ 0x581800B2, // 0031 LDCONST R6 K178
+ 0x7C100400, // 0032 CALL R4 2
+ 0x8C100311, // 0033 GETMET R4 R1 K17
+ 0xB81A3400, // 0034 GETNGBL R6 K26
+ 0x88180DB3, // 0035 GETMBR R6 R6 K179
0x7C100400, // 0036 CALL R4 2
- 0x8C10030B, // 0037 GETMET R4 R1 K11
- 0xB81A0800, // 0038 GETNGBL R6 K4
- 0x88180D0E, // 0039 GETMBR R6 R6 K14
- 0x7C100400, // 003A CALL R4 2
- 0x60100010, // 003B GETGBL R4 G16
- 0x88140100, // 003C GETMBR R5 R0 K0
- 0x8C140B0F, // 003D GETMET R5 R5 K15
- 0x5C1C0400, // 003E MOVE R7 R2
- 0x7C140400, // 003F CALL R5 2
- 0x7C100200, // 0040 CALL R4 1
- 0xA8020030, // 0041 EXBLK 0 #0073
- 0x5C140800, // 0042 MOVE R5 R4
- 0x7C140000, // 0043 CALL R5 0
- 0x8C180310, // 0044 GETMET R6 R1 K16
- 0x5C200A00, // 0045 MOVE R8 R5
- 0x7C180400, // 0046 CALL R6 2
- 0x8C1C0310, // 0047 GETMET R7 R1 K16
- 0x88240100, // 0048 GETMBR R9 R0 K0
- 0x8C241311, // 0049 GETMET R9 R9 K17
- 0x5C2C0A00, // 004A MOVE R11 R5
- 0x7C240400, // 004B CALL R9 2
- 0x8C241312, // 004C GETMET R9 R9 K18
- 0x582C0013, // 004D LDCONST R11 K19
- 0x5C300A00, // 004E MOVE R12 R5
- 0x7C240600, // 004F CALL R9 3
- 0x7C1C0400, // 0050 CALL R7 2
- 0x8C20030B, // 0051 GETMET R8 R1 K11
- 0x60280018, // 0052 GETGBL R10 G24
- 0x582C0014, // 0053 LDCONST R11 K20
- 0x5C300C00, // 0054 MOVE R12 R6
- 0x5C340C00, // 0055 MOVE R13 R6
- 0x5C380E00, // 0056 MOVE R14 R7
- 0x7C280800, // 0057 CALL R10 4
- 0x7C200400, // 0058 CALL R8 2
- 0x94200405, // 0059 GETIDX R8 R2 R5
- 0x94201103, // 005A GETIDX R8 R8 K3
- 0x88201106, // 005B GETMBR R8 R8 K6
- 0x8C24030B, // 005C GETMET R9 R1 K11
- 0x8C2C1115, // 005D GETMET R11 R8 K21
- 0x7C2C0200, // 005E CALL R11 1
- 0x7C240400, // 005F CALL R9 2
- 0x60240010, // 0060 GETGBL R9 G16
- 0x94280405, // 0061 GETIDX R10 R2 R5
- 0x7C240200, // 0062 CALL R9 1
- 0xA802000A, // 0063 EXBLK 0 #006F
- 0x5C281200, // 0064 MOVE R10 R9
- 0x7C280000, // 0065 CALL R10 0
- 0x8C2C030B, // 0066 GETMET R11 R1 K11
- 0x58340016, // 0067 LDCONST R13 K22
- 0x7C2C0400, // 0068 CALL R11 2
- 0x8C2C1517, // 0069 GETMET R11 R10 K23
- 0x7C2C0200, // 006A CALL R11 1
- 0x8C2C030B, // 006B GETMET R11 R1 K11
- 0x58340018, // 006C LDCONST R13 K24
- 0x7C2C0400, // 006D CALL R11 2
- 0x7001FFF4, // 006E JMP #0064
- 0x58240019, // 006F LDCONST R9 K25
- 0xAC240200, // 0070 CATCH R9 1 0
+ 0x60100010, // 0037 GETGBL R4 G16
+ 0x88140116, // 0038 GETMBR R5 R0 K22
+ 0x8C140BB4, // 0039 GETMET R5 R5 K180
+ 0x5C1C0400, // 003A MOVE R7 R2
+ 0x7C140400, // 003B CALL R5 2
+ 0x7C100200, // 003C CALL R4 1
+ 0xA8020030, // 003D EXBLK 0 #006F
+ 0x5C140800, // 003E MOVE R5 R4
+ 0x7C140000, // 003F CALL R5 0
+ 0x8C18034A, // 0040 GETMET R6 R1 K74
+ 0x5C200A00, // 0041 MOVE R8 R5
+ 0x7C180400, // 0042 CALL R6 2
+ 0x8C1C034A, // 0043 GETMET R7 R1 K74
+ 0x88240116, // 0044 GETMBR R9 R0 K22
+ 0x8C241354, // 0045 GETMET R9 R9 K84
+ 0x5C2C0A00, // 0046 MOVE R11 R5
+ 0x7C240400, // 0047 CALL R9 2
+ 0x8C241343, // 0048 GETMET R9 R9 K67
+ 0x582C004B, // 0049 LDCONST R11 K75
+ 0x5C300A00, // 004A MOVE R12 R5
+ 0x7C240600, // 004B CALL R9 3
+ 0x7C1C0400, // 004C CALL R7 2
+ 0x8C200311, // 004D GETMET R8 R1 K17
+ 0x60280018, // 004E GETGBL R10 G24
+ 0x582C00B5, // 004F LDCONST R11 K181
+ 0x5C300C00, // 0050 MOVE R12 R6
+ 0x5C340C00, // 0051 MOVE R13 R6
+ 0x5C380E00, // 0052 MOVE R14 R7
+ 0x7C280800, // 0053 CALL R10 4
+ 0x7C200400, // 0054 CALL R8 2
+ 0x94200405, // 0055 GETIDX R8 R2 R5
+ 0x9420111C, // 0056 GETIDX R8 R8 K28
+ 0x882011B0, // 0057 GETMBR R8 R8 K176
+ 0x8C240311, // 0058 GETMET R9 R1 K17
+ 0x8C2C11B6, // 0059 GETMET R11 R8 K182
+ 0x7C2C0200, // 005A CALL R11 1
+ 0x7C240400, // 005B CALL R9 2
+ 0x60240010, // 005C GETGBL R9 G16
+ 0x94280405, // 005D GETIDX R10 R2 R5
+ 0x7C240200, // 005E CALL R9 1
+ 0xA802000A, // 005F EXBLK 0 #006B
+ 0x5C281200, // 0060 MOVE R10 R9
+ 0x7C280000, // 0061 CALL R10 0
+ 0x8C2C0311, // 0062 GETMET R11 R1 K17
+ 0x583400B7, // 0063 LDCONST R13 K183
+ 0x7C2C0400, // 0064 CALL R11 2
+ 0x8C2C15B8, // 0065 GETMET R11 R10 K184
+ 0x7C2C0200, // 0066 CALL R11 1
+ 0x8C2C0311, // 0067 GETMET R11 R1 K17
+ 0x58340085, // 0068 LDCONST R13 K133
+ 0x7C2C0400, // 0069 CALL R11 2
+ 0x7001FFF4, // 006A JMP #0060
+ 0x58240003, // 006B LDCONST R9 K3
+ 0xAC240200, // 006C CATCH R9 1 0
+ 0xB0080000, // 006D RAISE 2 R0 R0
+ 0x7001FFCE, // 006E JMP #003E
+ 0x58100003, // 006F LDCONST R4 K3
+ 0xAC100200, // 0070 CATCH R4 1 0
0xB0080000, // 0071 RAISE 2 R0 R0
- 0x7001FFCE, // 0072 JMP #0042
- 0x58100019, // 0073 LDCONST R4 K25
- 0xAC100200, // 0074 CATCH R4 1 0
- 0xB0080000, // 0075 RAISE 2 R0 R0
- 0x8C10030B, // 0076 GETMET R4 R1 K11
- 0x5818001A, // 0077 LDCONST R6 K26
- 0x7C100400, // 0078 CALL R4 2
- 0x80000000, // 0079 RET 0
+ 0x8C100311, // 0072 GETMET R4 R1 K17
+ 0x581800B9, // 0073 LDCONST R6 K185
+ 0x7C100400, // 0074 CALL R4 2
+ 0x80000000, // 0075 RET 0
})
)
);
@@ -1985,16 +1838,15 @@ be_local_closure(class_Matter_UI_show_bridge_status, /* name */
/********************************************************************
** Solidified function: web_add_handler
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_web_add_handler, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 5]) {
+ ( &(const struct bproto*[ 4]) {
be_nested_proto(
2, /* nstack */
0, /* argc */
@@ -2004,7 +1856,7 @@ be_local_closure(class_Matter_UI_web_add_handler, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(page_part_mgr),
@@ -2027,7 +1879,7 @@ be_local_closure(class_Matter_UI_web_add_handler, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(page_part_ctl),
@@ -2050,7 +1902,7 @@ be_local_closure(class_Matter_UI_web_add_handler, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(page_part_mgr_adv),
@@ -2073,7 +1925,7 @@ be_local_closure(class_Matter_UI_web_add_handler, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(page_part_mgr_add),
@@ -2087,41 +1939,32 @@ be_local_closure(class_Matter_UI_web_add_handler, /* name */
0x80040000, // 0003 RET 1 R0
})
),
- &be_class_Matter_UI,
}),
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(on),
- /* K2 */ be_nested_str_weak(_X2Fmatterc),
- /* K3 */ be_nested_str_weak(HTTP_GET),
- /* K4 */ be_nested_str_weak(HTTP_POST),
- /* K5 */ be_nested_str_weak(_X2Fmattera),
- /* K6 */ be_nested_str_weak(_X2Fmatteradd),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(web_add_handler),
&be_const_str_solidified,
( &(const binstruction[23]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080301, // 0001 GETMET R2 R1 K1
- 0x58100002, // 0002 LDCONST R4 K2
+ 0xA4060800, // 0000 IMPORT R1 K4
+ 0x8C0803BA, // 0001 GETMET R2 R1 K186
+ 0x581000BB, // 0002 LDCONST R4 K187
0x84140000, // 0003 CLOSURE R5 P0
- 0x88180303, // 0004 GETMBR R6 R1 K3
+ 0x881803BC, // 0004 GETMBR R6 R1 K188
0x7C080800, // 0005 CALL R2 4
- 0x8C080301, // 0006 GETMET R2 R1 K1
- 0x58100002, // 0007 LDCONST R4 K2
+ 0x8C0803BA, // 0006 GETMET R2 R1 K186
+ 0x581000BB, // 0007 LDCONST R4 K187
0x84140001, // 0008 CLOSURE R5 P1
- 0x88180304, // 0009 GETMBR R6 R1 K4
+ 0x881803BD, // 0009 GETMBR R6 R1 K189
0x7C080800, // 000A CALL R2 4
- 0x8C080301, // 000B GETMET R2 R1 K1
- 0x58100005, // 000C LDCONST R4 K5
+ 0x8C0803BA, // 000B GETMET R2 R1 K186
+ 0x581000BE, // 000C LDCONST R4 K190
0x84140002, // 000D CLOSURE R5 P2
- 0x88180303, // 000E GETMBR R6 R1 K3
+ 0x881803BC, // 000E GETMBR R6 R1 K188
0x7C080800, // 000F CALL R2 4
- 0x8C080301, // 0010 GETMET R2 R1 K1
- 0x58100006, // 0011 LDCONST R4 K6
+ 0x8C0803BA, // 0010 GETMET R2 R1 K186
+ 0x581000BF, // 0011 LDCONST R4 K191
0x84140003, // 0012 CLOSURE R5 P3
- 0x88180303, // 0013 GETMBR R6 R1 K3
+ 0x881803BC, // 0013 GETMBR R6 R1 K188
0x7C080800, // 0014 CALL R2 4
0xA0000000, // 0015 CLOSE R0
0x80000000, // 0016 RET 0
@@ -2134,77 +1977,57 @@ be_local_closure(class_Matter_UI_web_add_handler, /* name */
/********************************************************************
** Solidified function: show_passcode_form
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_show_passcode_form, /* name */
be_nested_proto(
8, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[15]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(content_send),
- /* K2 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BMatter_X20Advanced_X20Configuration_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
- /* K3 */ be_nested_str_weak(_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X20onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E_X3Cp_X3EPasscode_X3A_X3C_X2Fp_X3E),
- /* K4 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27number_X27_X20min_X3D_X271_X27_X20max_X3D_X2799999998_X27_X20name_X3D_X27passcode_X27_X20value_X3D_X27_X25i_X27_X3E),
- /* K5 */ be_nested_str_weak(device),
- /* K6 */ be_nested_str_weak(root_passcode),
- /* K7 */ be_nested_str_weak(_X3Cp_X3EDistinguish_X20id_X3A_X3C_X2Fp_X3E),
- /* K8 */ be_nested_str_weak(_X3Cinput_X20type_X3D_X27number_X27_X20min_X3D_X270_X27_X20max_X3D_X274095_X27_X20name_X3D_X27discriminator_X27_X20value_X3D_X27_X25i_X27_X3E),
- /* K9 */ be_nested_str_weak(root_discriminator),
- /* K10 */ be_nested_str_weak(ipv4only),
- /* K11 */ be_nested_str_weak(_X20checked),
- /* K12 */ be_nested_str_weak(),
- /* K13 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20type_X3D_X27checkbox_X27_X20name_X3D_X27ipv4_X27_X25s_X3EIPv4_X20only_X3C_X2Fp_X3E),
- /* K14 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cbutton_X20name_X3D_X27passcode_X27_X20class_X3D_X27button_X20bgrn_X27_X3EChange_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(show_passcode_form),
&be_const_str_solidified,
- ( &(const binstruction[40]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080301, // 0001 GETMET R2 R1 K1
- 0x58100002, // 0002 LDCONST R4 K2
+ ( &(const binstruction[37]) { /* code */
+ 0xA4060800, // 0000 IMPORT R1 K4
+ 0x8C080311, // 0001 GETMET R2 R1 K17
+ 0x581000C0, // 0002 LDCONST R4 K192
0x7C080400, // 0003 CALL R2 2
- 0x8C080301, // 0004 GETMET R2 R1 K1
- 0x58100003, // 0005 LDCONST R4 K3
- 0x7C080400, // 0006 CALL R2 2
- 0x8C080301, // 0007 GETMET R2 R1 K1
- 0x60100018, // 0008 GETGBL R4 G24
- 0x58140004, // 0009 LDCONST R5 K4
- 0x88180105, // 000A GETMBR R6 R0 K5
- 0x88180D06, // 000B GETMBR R6 R6 K6
- 0x7C100400, // 000C CALL R4 2
+ 0x8C080311, // 0004 GETMET R2 R1 K17
+ 0x60100018, // 0005 GETGBL R4 G24
+ 0x581400C1, // 0006 LDCONST R5 K193
+ 0x88180116, // 0007 GETMBR R6 R0 K22
+ 0x88180DC2, // 0008 GETMBR R6 R6 K194
+ 0x7C100400, // 0009 CALL R4 2
+ 0x7C080400, // 000A CALL R2 2
+ 0x8C080311, // 000B GETMET R2 R1 K17
+ 0x581000C3, // 000C LDCONST R4 K195
0x7C080400, // 000D CALL R2 2
- 0x8C080301, // 000E GETMET R2 R1 K1
- 0x58100007, // 000F LDCONST R4 K7
- 0x7C080400, // 0010 CALL R2 2
- 0x8C080301, // 0011 GETMET R2 R1 K1
- 0x60100018, // 0012 GETGBL R4 G24
- 0x58140008, // 0013 LDCONST R5 K8
- 0x88180105, // 0014 GETMBR R6 R0 K5
- 0x88180D09, // 0015 GETMBR R6 R6 K9
- 0x7C100400, // 0016 CALL R4 2
- 0x7C080400, // 0017 CALL R2 2
- 0x88080105, // 0018 GETMBR R2 R0 K5
- 0x8808050A, // 0019 GETMBR R2 R2 K10
- 0x780A0001, // 001A JMPF R2 #001D
- 0x5808000B, // 001B LDCONST R2 K11
- 0x70020000, // 001C JMP #001E
- 0x5808000C, // 001D LDCONST R2 K12
- 0x8C0C0301, // 001E GETMET R3 R1 K1
- 0x60140018, // 001F GETGBL R5 G24
- 0x5818000D, // 0020 LDCONST R6 K13
- 0x5C1C0400, // 0021 MOVE R7 R2
- 0x7C140400, // 0022 CALL R5 2
+ 0x8C080311, // 000E GETMET R2 R1 K17
+ 0x60100018, // 000F GETGBL R4 G24
+ 0x581400C4, // 0010 LDCONST R5 K196
+ 0x88180116, // 0011 GETMBR R6 R0 K22
+ 0x88180DC5, // 0012 GETMBR R6 R6 K197
+ 0x7C100400, // 0013 CALL R4 2
+ 0x7C080400, // 0014 CALL R2 2
+ 0x88080116, // 0015 GETMBR R2 R0 K22
+ 0x880805C6, // 0016 GETMBR R2 R2 K198
+ 0x780A0001, // 0017 JMPF R2 #001A
+ 0x580800C7, // 0018 LDCONST R2 K199
+ 0x70020000, // 0019 JMP #001B
+ 0x58080015, // 001A LDCONST R2 K21
+ 0x8C0C0311, // 001B GETMET R3 R1 K17
+ 0x60140018, // 001C GETGBL R5 G24
+ 0x581800C8, // 001D LDCONST R6 K200
+ 0x5C1C0400, // 001E MOVE R7 R2
+ 0x7C140400, // 001F CALL R5 2
+ 0x7C0C0400, // 0020 CALL R3 2
+ 0x8C0C0311, // 0021 GETMET R3 R1 K17
+ 0x581400C9, // 0022 LDCONST R5 K201
0x7C0C0400, // 0023 CALL R3 2
- 0x8C0C0301, // 0024 GETMET R3 R1 K1
- 0x5814000E, // 0025 LDCONST R5 K14
- 0x7C0C0400, // 0026 CALL R3 2
- 0x80000000, // 0027 RET 0
+ 0x80000000, // 0024 RET 0
})
)
);
@@ -2214,18 +2037,17 @@ be_local_closure(class_Matter_UI_show_passcode_form, /* name */
/********************************************************************
** Solidified function: page_part_ctl
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_page_part_ctl, /* name */
be_nested_proto(
- 24, /* nstack */
+ 23, /* nstack */
1, /* argc */
- 2, /* varg */
+ 18, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[101]) { /* constants */
+ ( &(const bvalue[103]) { /* constants */
/* K0 */ be_nested_str_weak(webserver),
/* K1 */ be_nested_str_weak(check_privileged_access),
/* K2 */ be_nested_str_weak(string),
@@ -2234,27 +2056,27 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */
/* K5 */ be_nested_str_weak(has_arg),
/* K6 */ be_nested_str_weak(passcode),
/* K7 */ be_nested_str_weak(discriminator),
- /* K8 */ be_nested_str_weak(tasmota),
- /* K9 */ be_nested_str_weak(log),
- /* K10 */ be_nested_str_weak(MTR_X3A_X20_X2Fmatterc_X20received_X20_X27_X25s_X27_X20command),
- /* K11 */ be_const_int(3),
- /* K12 */ be_nested_str_weak(device),
- /* K13 */ be_nested_str_weak(root_passcode),
- /* K14 */ be_nested_str_weak(arg),
- /* K15 */ be_nested_str_weak(root_discriminator),
- /* K16 */ be_nested_str_weak(ipv4only),
- /* K17 */ be_nested_str_weak(ipv4),
- /* K18 */ be_nested_str_weak(on),
- /* K19 */ be_nested_str_weak(save_param),
- /* K20 */ be_nested_str_weak(redirect),
- /* K21 */ be_nested_str_weak(_X2F_X3Frst_X3D),
- /* K22 */ be_nested_str_weak(save),
- /* K23 */ be_nested_str_weak(menable),
- /* K24 */ be_nested_str_weak(comm),
- /* K25 */ be_nested_str_weak(nobridge),
- /* K26 */ be_nested_str_weak(disable_bridge_mode),
- /* K27 */ be_nested_str_weak(matter_enabled),
- /* K28 */ be_nested_str_weak(enable),
+ /* K8 */ be_nested_str_weak(log),
+ /* K9 */ be_nested_str_weak(MTR_X3A_X20_X2Fmatterc_X20received_X20_X27_X25s_X27_X20command),
+ /* K10 */ be_const_int(3),
+ /* K11 */ be_nested_str_weak(device),
+ /* K12 */ be_nested_str_weak(root_passcode),
+ /* K13 */ be_nested_str_weak(arg),
+ /* K14 */ be_nested_str_weak(root_discriminator),
+ /* K15 */ be_nested_str_weak(ipv4only),
+ /* K16 */ be_nested_str_weak(ipv4),
+ /* K17 */ be_nested_str_weak(on),
+ /* K18 */ be_nested_str_weak(save_param),
+ /* K19 */ be_nested_str_weak(redirect),
+ /* K20 */ be_nested_str_weak(_X2F_X3Frst_X3D),
+ /* K21 */ be_nested_str_weak(save),
+ /* K22 */ be_nested_str_weak(menable),
+ /* K23 */ be_nested_str_weak(comm),
+ /* K24 */ be_nested_str_weak(nobridge),
+ /* K25 */ be_nested_str_weak(disable_bridge_mode),
+ /* K26 */ be_nested_str_weak(matter_enabled),
+ /* K27 */ be_nested_str_weak(enable),
+ /* K28 */ be_nested_str_weak(tasmota),
/* K29 */ be_nested_str_weak(cmd),
/* K30 */ be_nested_str_weak(SetOption),
/* K31 */ be_nested_str_weak(matter),
@@ -2262,75 +2084,77 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */
/* K33 */ be_nested_str_weak(_X201),
/* K34 */ be_nested_str_weak(disable),
/* K35 */ be_nested_str_weak(_X200),
- /* K36 */ be_nested_str_weak(commissioning_open),
- /* K37 */ be_nested_str_weak(start_root_basic_commissioning),
- /* K38 */ be_nested_str_weak(stop_basic_commissioning),
- /* K39 */ be_nested_str_weak(_X2F),
- /* K40 */ be_nested_str_weak(del_fabric),
- /* K41 */ be_const_int(0),
- /* K42 */ be_nested_str_weak(sessions),
- /* K43 */ be_nested_str_weak(fabrics),
- /* K44 */ be_nested_str_weak(get_fabric_index),
- /* K45 */ be_nested_str_weak(remove_fabric),
- /* K46 */ be_const_int(1),
- /* K47 */ be_nested_str_weak(_X2Fmattera_X3F),
- /* K48 */ be_nested_str_weak(auto),
- /* K49 */ be_nested_str_weak(plugins_persist),
- /* K50 */ be_nested_str_weak(config),
- /* K51 */ be_nested_str_weak(arg_size),
- /* K52 */ be_nested_str_weak(arg_name),
- /* K53 */ be_nested_str_weak(find),
- /* K54 */ be_const_int(2147483647),
- /* K55 */ be_nested_str_weak(plugins_config),
- /* K56 */ be_nested_str_weak(plugins_classes),
- /* K57 */ be_nested_str_weak(type),
- /* K58 */ be_nested_str_weak(),
- /* K59 */ be_nested_str_weak(MTR_X3A_X20ep_X3D_X25i_X20arg_X3D_X25s),
- /* K60 */ be_nested_str_weak(ui_conf_to_string),
- /* K61 */ be_nested_str_weak(MTR_X3A_X20ep_X3D_X25i_X20prev_arg_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27_X20_X25s),
- /* K62 */ be_nested_str_weak(changed),
- /* K63 */ be_nested_str_weak(ui_string_to_conf),
- /* K64 */ be_nested_str_weak(find_plugin_by_endpoint),
- /* K65 */ be_nested_str_weak(MTR_X3A_X20apply_X20conf_X20_X27_X25s_X27_X20_X28_X25i_X29_X20to_X20_X25s),
- /* K66 */ be_nested_str_weak(parse_configuration),
- /* K67 */ be_nested_str_weak(MTR_X3A_X20ep_X3D_X25i_X20not_X20found),
- /* K68 */ be_nested_str_weak(nam),
- /* K69 */ be_nested_str_weak(name),
- /* K70 */ be_nested_str_weak(set_name),
- /* K71 */ be_nested_str_weak(remove),
- /* K72 */ be_nested_str_weak(MTR_X3A_X20apply_X20name_X20_X27_X25s_X27_X20_X28_X25i_X29_X20to_X20_X25s),
- /* K73 */ be_nested_str_weak(stop_iteration),
- /* K74 */ be_nested_str_weak(MTR_X3A_X20config_X20_X3D_X20_X25s),
- /* K75 */ be_nested_str_weak(MTR_X3A_X20config_X20error_X20_X3D_X20_X25s),
- /* K76 */ be_nested_str_weak(_X2Fmatterc_X3F),
- /* K77 */ be_nested_str_weak(addep),
- /* K78 */ be_nested_str_weak(pi),
- /* K79 */ be_nested_str_weak(MTR_X3A_X20add_X20endpoint_X20typ_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27),
- /* K80 */ be_nested_str_weak(bridge_add_endpoint),
- /* K81 */ be_nested_str_weak(addrem),
- /* K82 */ be_nested_str_weak(url),
- /* K83 */ be_nested_str_weak(value_error),
- /* K84 */ be_nested_str_weak(url_X20shouldn_X27t_X20be_X20null),
- /* K85 */ be_nested_str_weak(equal_map),
- /* K86 */ be_nested_str_weak(MTR_X3A_X20remote_X20add_X20url_X3D_X27_X25s_X27_X20type_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27),
- /* K87 */ be_nested_str_weak(del),
- /* K88 */ be_nested_str_weak(bridge_remove_endpoint),
- /* K89 */ be_nested_str_weak(content_start),
- /* K90 */ be_nested_str_weak(Parameter_X20error),
- /* K91 */ be_nested_str_weak(content_send_style),
- /* K92 */ be_nested_str_weak(content_send),
- /* K93 */ be_nested_str_weak(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EError_X3A_X3C_X2Fb_X3E_X25s_X3C_X2Fp_X3E),
- /* K94 */ be_nested_str_weak(html_escape),
- /* K95 */ be_nested_str_weak(content_button),
- /* K96 */ be_nested_str_weak(BUTTON_CONFIGURATION),
- /* K97 */ be_nested_str_weak(content_stop),
- /* K98 */ be_nested_str_weak(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s),
- /* K99 */ be_const_int(2),
- /* K100 */ be_nested_str_weak(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EException_X3A_X3C_X2Fb_X3E_X3Cbr_X3E_X27_X25s_X27_X3Cbr_X3E_X25s_X3C_X2Fp_X3E),
+ /* K36 */ be_nested_str_weak(commissioning),
+ /* K37 */ be_nested_str_weak(commissioning_open),
+ /* K38 */ be_nested_str_weak(start_root_basic_commissioning),
+ /* K39 */ be_nested_str_weak(stop_basic_commissioning),
+ /* K40 */ be_nested_str_weak(_X2F),
+ /* K41 */ be_nested_str_weak(del_fabric),
+ /* K42 */ be_const_int(0),
+ /* K43 */ be_nested_str_weak(sessions),
+ /* K44 */ be_nested_str_weak(fabrics),
+ /* K45 */ be_nested_str_weak(get_fabric_index),
+ /* K46 */ be_nested_str_weak(remove_fabric),
+ /* K47 */ be_const_int(1),
+ /* K48 */ be_nested_str_weak(_X2Fmattera_X3F),
+ /* K49 */ be_nested_str_weak(auto),
+ /* K50 */ be_nested_str_weak(reset_param),
+ /* K51 */ be_nested_str_weak(config),
+ /* K52 */ be_nested_str_weak(arg_size),
+ /* K53 */ be_nested_str_weak(arg_name),
+ /* K54 */ be_nested_str_weak(find),
+ /* K55 */ be_const_int(2147483647),
+ /* K56 */ be_nested_str_weak(plugins_config),
+ /* K57 */ be_nested_str_weak(plugins_classes),
+ /* K58 */ be_nested_str_weak(type),
+ /* K59 */ be_nested_str_weak(),
+ /* K60 */ be_nested_str_weak(MTR_X3A_X20ep_X3D_X25i_X20arg_X3D_X25s),
+ /* K61 */ be_nested_str_weak(ui_conf_to_string),
+ /* K62 */ be_nested_str_weak(MTR_X3A_X20ep_X3D_X25i_X20prev_arg_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27_X20_X25s),
+ /* K63 */ be_nested_str_weak(changed),
+ /* K64 */ be_nested_str_weak(ui_string_to_conf),
+ /* K65 */ be_nested_str_weak(find_plugin_by_endpoint),
+ /* K66 */ be_nested_str_weak(MTR_X3A_X20apply_X20conf_X20_X27_X25s_X27_X20_X28_X25i_X29_X20to_X20_X25s),
+ /* K67 */ be_nested_str_weak(parse_configuration),
+ /* K68 */ be_nested_str_weak(MTR_X3A_X20ep_X3D_X25i_X20not_X20found),
+ /* K69 */ be_nested_str_weak(nam),
+ /* K70 */ be_nested_str_weak(name),
+ /* K71 */ be_nested_str_weak(set_name),
+ /* K72 */ be_nested_str_weak(remove),
+ /* K73 */ be_nested_str_weak(MTR_X3A_X20apply_X20name_X20_X27_X25s_X27_X20_X28_X25i_X29_X20to_X20_X25s),
+ /* K74 */ be_nested_str_weak(stop_iteration),
+ /* K75 */ be_nested_str_weak(MTR_X3A_X20config_X20_X3D_X20_X25s),
+ /* K76 */ be_nested_str_weak(MTR_X3A_X20config_X20error_X20_X3D_X20_X25s),
+ /* K77 */ be_nested_str_weak(plugins_persist),
+ /* K78 */ be_nested_str_weak(_X2Fmatterc_X3F),
+ /* K79 */ be_nested_str_weak(addep),
+ /* K80 */ be_nested_str_weak(pi),
+ /* K81 */ be_nested_str_weak(MTR_X3A_X20add_X20endpoint_X20typ_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27),
+ /* K82 */ be_nested_str_weak(bridge_add_endpoint),
+ /* K83 */ be_nested_str_weak(addrem),
+ /* K84 */ be_nested_str_weak(url),
+ /* K85 */ be_nested_str_weak(value_error),
+ /* K86 */ be_nested_str_weak(url_X20shouldn_X27t_X20be_X20null),
+ /* K87 */ be_nested_str_weak(equal_map),
+ /* K88 */ be_nested_str_weak(MTR_X3A_X20remote_X20add_X20url_X3D_X27_X25s_X27_X20type_X3D_X27_X25s_X27_X20arg_X3D_X27_X25s_X27),
+ /* K89 */ be_nested_str_weak(del),
+ /* K90 */ be_nested_str_weak(bridge_remove_endpoint),
+ /* K91 */ be_nested_str_weak(content_start),
+ /* K92 */ be_nested_str_weak(Parameter_X20error),
+ /* K93 */ be_nested_str_weak(content_send_style),
+ /* K94 */ be_nested_str_weak(content_send),
+ /* K95 */ be_nested_str_weak(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EError_X3A_X3C_X2Fb_X3E_X25s_X3C_X2Fp_X3E),
+ /* K96 */ be_nested_str_weak(html_escape),
+ /* K97 */ be_nested_str_weak(content_button),
+ /* K98 */ be_nested_str_weak(BUTTON_CONFIGURATION),
+ /* K99 */ be_nested_str_weak(content_stop),
+ /* K100 */ be_nested_str_weak(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s),
+ /* K101 */ be_const_int(2),
+ /* K102 */ be_nested_str_weak(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EException_X3A_X3C_X2Fb_X3E_X3Cbr_X3E_X27_X25s_X27_X3Cbr_X3E_X25s_X3C_X2Fp_X3E),
}),
be_str_weak(page_part_ctl),
&be_const_str_solidified,
- ( &(const binstruction[675]) { /* code */
+ ( &(const binstruction[659]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0x8C080301, // 0001 GETMET R2 R1 K1
0x7C080200, // 0002 CALL R2 1
@@ -2341,7 +2165,7 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */
0xA40E0600, // 0007 IMPORT R3 K3
0xA4120800, // 0008 IMPORT R4 K4
0x4C140000, // 0009 LDNIL R5
- 0xA8020278, // 000A EXBLK 0 #0284
+ 0xA8020269, // 000A EXBLK 0 #0275
0x8C180305, // 000B GETMET R6 R1 K5
0x58200006, // 000C LDCONST R8 K6
0x7C180400, // 000D CALL R6 2
@@ -2349,663 +2173,647 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */
0x8C180305, // 000F GETMET R6 R1 K5
0x58200007, // 0010 LDCONST R8 K7
0x7C180400, // 0011 CALL R6 2
- 0x781A002A, // 0012 JMPF R6 #003E
+ 0x781A0029, // 0012 JMPF R6 #003D
0xB81A1000, // 0013 GETNGBL R6 K8
- 0x8C180D09, // 0014 GETMET R6 R6 K9
- 0x60200018, // 0015 GETGBL R8 G24
- 0x5824000A, // 0016 LDCONST R9 K10
- 0x58280006, // 0017 LDCONST R10 K6
- 0x7C200400, // 0018 CALL R8 2
- 0x5824000B, // 0019 LDCONST R9 K11
- 0x7C180600, // 001A CALL R6 3
- 0x8C180305, // 001B GETMET R6 R1 K5
- 0x58200006, // 001C LDCONST R8 K6
- 0x7C180400, // 001D CALL R6 2
- 0x781A0006, // 001E JMPF R6 #0026
- 0x8818010C, // 001F GETMBR R6 R0 K12
- 0x601C0009, // 0020 GETGBL R7 G9
- 0x8C20030E, // 0021 GETMET R8 R1 K14
- 0x58280006, // 0022 LDCONST R10 K6
- 0x7C200400, // 0023 CALL R8 2
- 0x7C1C0200, // 0024 CALL R7 1
- 0x901A1A07, // 0025 SETMBR R6 K13 R7
- 0x8C180305, // 0026 GETMET R6 R1 K5
- 0x58200007, // 0027 LDCONST R8 K7
- 0x7C180400, // 0028 CALL R6 2
- 0x781A0006, // 0029 JMPF R6 #0031
- 0x8818010C, // 002A GETMBR R6 R0 K12
- 0x601C0009, // 002B GETGBL R7 G9
- 0x8C20030E, // 002C GETMET R8 R1 K14
- 0x58280007, // 002D LDCONST R10 K7
- 0x7C200400, // 002E CALL R8 2
- 0x7C1C0200, // 002F CALL R7 1
- 0x901A1E07, // 0030 SETMBR R6 K15 R7
- 0x8818010C, // 0031 GETMBR R6 R0 K12
- 0x8C1C030E, // 0032 GETMET R7 R1 K14
- 0x58240011, // 0033 LDCONST R9 K17
- 0x7C1C0400, // 0034 CALL R7 2
- 0x1C1C0F12, // 0035 EQ R7 R7 K18
- 0x901A2007, // 0036 SETMBR R6 K16 R7
- 0x8818010C, // 0037 GETMBR R6 R0 K12
- 0x8C180D13, // 0038 GETMET R6 R6 K19
- 0x7C180200, // 0039 CALL R6 1
- 0x8C180314, // 003A GETMET R6 R1 K20
- 0x58200015, // 003B LDCONST R8 K21
- 0x7C180400, // 003C CALL R6 2
- 0x70020230, // 003D JMP #026F
- 0x8C180305, // 003E GETMET R6 R1 K5
- 0x58200016, // 003F LDCONST R8 K22
- 0x7C180400, // 0040 CALL R6 2
- 0x781A0054, // 0041 JMPF R6 #0097
- 0x8C180305, // 0042 GETMET R6 R1 K5
- 0x58200017, // 0043 LDCONST R8 K23
- 0x7C180400, // 0044 CALL R6 2
- 0x8C1C0305, // 0045 GETMET R7 R1 K5
- 0x58240018, // 0046 LDCONST R9 K24
- 0x7C1C0400, // 0047 CALL R7 2
- 0x8C20030E, // 0048 GETMET R8 R1 K14
- 0x58280019, // 0049 LDCONST R10 K25
- 0x7C200400, // 004A CALL R8 2
- 0x1C201112, // 004B EQ R8 R8 K18
- 0x8824010C, // 004C GETMBR R9 R0 K12
- 0x8824131A, // 004D GETMBR R9 R9 K26
- 0x20241208, // 004E NE R9 R9 R8
- 0x78260004, // 004F JMPF R9 #0055
- 0x8824010C, // 0050 GETMBR R9 R0 K12
- 0x90263408, // 0051 SETMBR R9 K26 R8
- 0x8824010C, // 0052 GETMBR R9 R0 K12
- 0x8C241313, // 0053 GETMET R9 R9 K19
- 0x7C240200, // 0054 CALL R9 1
- 0x8C24011B, // 0055 GETMET R9 R0 K27
- 0x7C240200, // 0056 CALL R9 1
- 0x20240C09, // 0057 NE R9 R6 R9
- 0x78260027, // 0058 JMPF R9 #0081
- 0x781A0011, // 0059 JMPF R6 #006C
- 0xB8261000, // 005A GETNGBL R9 K8
- 0x8C241309, // 005B GETMET R9 R9 K9
- 0x602C0018, // 005C GETGBL R11 G24
- 0x5830000A, // 005D LDCONST R12 K10
- 0x5834001C, // 005E LDCONST R13 K28
- 0x7C2C0400, // 005F CALL R11 2
- 0x5830000B, // 0060 LDCONST R12 K11
- 0x7C240600, // 0061 CALL R9 3
- 0xB8261000, // 0062 GETNGBL R9 K8
- 0x8C24131D, // 0063 GETMET R9 R9 K29
- 0x602C0008, // 0064 GETGBL R11 G8
- 0xB8323E00, // 0065 GETNGBL R12 K31
- 0x88301920, // 0066 GETMBR R12 R12 K32
- 0x7C2C0200, // 0067 CALL R11 1
- 0x002E3C0B, // 0068 ADD R11 K30 R11
- 0x002C1721, // 0069 ADD R11 R11 K33
- 0x7C240400, // 006A CALL R9 2
- 0x70020010, // 006B JMP #007D
- 0xB8261000, // 006C GETNGBL R9 K8
- 0x8C241309, // 006D GETMET R9 R9 K9
- 0x602C0018, // 006E GETGBL R11 G24
- 0x5830000A, // 006F LDCONST R12 K10
- 0x58340022, // 0070 LDCONST R13 K34
- 0x7C2C0400, // 0071 CALL R11 2
- 0x5830000B, // 0072 LDCONST R12 K11
- 0x7C240600, // 0073 CALL R9 3
- 0xB8261000, // 0074 GETNGBL R9 K8
- 0x8C24131D, // 0075 GETMET R9 R9 K29
- 0x602C0008, // 0076 GETGBL R11 G8
- 0xB8323E00, // 0077 GETNGBL R12 K31
- 0x88301920, // 0078 GETMBR R12 R12 K32
- 0x7C2C0200, // 0079 CALL R11 1
- 0x002E3C0B, // 007A ADD R11 K30 R11
- 0x002C1723, // 007B ADD R11 R11 K35
+ 0x601C0018, // 0014 GETGBL R7 G24
+ 0x58200009, // 0015 LDCONST R8 K9
+ 0x58240006, // 0016 LDCONST R9 K6
+ 0x7C1C0400, // 0017 CALL R7 2
+ 0x5820000A, // 0018 LDCONST R8 K10
+ 0x7C180400, // 0019 CALL R6 2
+ 0x8C180305, // 001A GETMET R6 R1 K5
+ 0x58200006, // 001B LDCONST R8 K6
+ 0x7C180400, // 001C CALL R6 2
+ 0x781A0006, // 001D JMPF R6 #0025
+ 0x8818010B, // 001E GETMBR R6 R0 K11
+ 0x601C0009, // 001F GETGBL R7 G9
+ 0x8C20030D, // 0020 GETMET R8 R1 K13
+ 0x58280006, // 0021 LDCONST R10 K6
+ 0x7C200400, // 0022 CALL R8 2
+ 0x7C1C0200, // 0023 CALL R7 1
+ 0x901A1807, // 0024 SETMBR R6 K12 R7
+ 0x8C180305, // 0025 GETMET R6 R1 K5
+ 0x58200007, // 0026 LDCONST R8 K7
+ 0x7C180400, // 0027 CALL R6 2
+ 0x781A0006, // 0028 JMPF R6 #0030
+ 0x8818010B, // 0029 GETMBR R6 R0 K11
+ 0x601C0009, // 002A GETGBL R7 G9
+ 0x8C20030D, // 002B GETMET R8 R1 K13
+ 0x58280007, // 002C LDCONST R10 K7
+ 0x7C200400, // 002D CALL R8 2
+ 0x7C1C0200, // 002E CALL R7 1
+ 0x901A1C07, // 002F SETMBR R6 K14 R7
+ 0x8818010B, // 0030 GETMBR R6 R0 K11
+ 0x8C1C030D, // 0031 GETMET R7 R1 K13
+ 0x58240010, // 0032 LDCONST R9 K16
+ 0x7C1C0400, // 0033 CALL R7 2
+ 0x1C1C0F11, // 0034 EQ R7 R7 K17
+ 0x901A1E07, // 0035 SETMBR R6 K15 R7
+ 0x8818010B, // 0036 GETMBR R6 R0 K11
+ 0x8C180D12, // 0037 GETMET R6 R6 K18
+ 0x7C180200, // 0038 CALL R6 1
+ 0x8C180313, // 0039 GETMET R6 R1 K19
+ 0x58200014, // 003A LDCONST R8 K20
+ 0x7C180400, // 003B CALL R6 2
+ 0x70020222, // 003C JMP #0260
+ 0x8C180305, // 003D GETMET R6 R1 K5
+ 0x58200015, // 003E LDCONST R8 K21
+ 0x7C180400, // 003F CALL R6 2
+ 0x781A0055, // 0040 JMPF R6 #0097
+ 0x8C180305, // 0041 GETMET R6 R1 K5
+ 0x58200016, // 0042 LDCONST R8 K22
+ 0x7C180400, // 0043 CALL R6 2
+ 0x8C1C0305, // 0044 GETMET R7 R1 K5
+ 0x58240017, // 0045 LDCONST R9 K23
+ 0x7C1C0400, // 0046 CALL R7 2
+ 0x8C20030D, // 0047 GETMET R8 R1 K13
+ 0x58280018, // 0048 LDCONST R10 K24
+ 0x7C200400, // 0049 CALL R8 2
+ 0x1C201111, // 004A EQ R8 R8 K17
+ 0x8824010B, // 004B GETMBR R9 R0 K11
+ 0x88241319, // 004C GETMBR R9 R9 K25
+ 0x20241208, // 004D NE R9 R9 R8
+ 0x78260004, // 004E JMPF R9 #0054
+ 0x8824010B, // 004F GETMBR R9 R0 K11
+ 0x90263208, // 0050 SETMBR R9 K25 R8
+ 0x8824010B, // 0051 GETMBR R9 R0 K11
+ 0x8C241312, // 0052 GETMET R9 R9 K18
+ 0x7C240200, // 0053 CALL R9 1
+ 0x8C24011A, // 0054 GETMET R9 R0 K26
+ 0x7C240200, // 0055 CALL R9 1
+ 0x20240C09, // 0056 NE R9 R6 R9
+ 0x78260025, // 0057 JMPF R9 #007E
+ 0x781A0010, // 0058 JMPF R6 #006A
+ 0xB8261000, // 0059 GETNGBL R9 K8
+ 0x60280018, // 005A GETGBL R10 G24
+ 0x582C0009, // 005B LDCONST R11 K9
+ 0x5830001B, // 005C LDCONST R12 K27
+ 0x7C280400, // 005D CALL R10 2
+ 0x582C000A, // 005E LDCONST R11 K10
+ 0x7C240400, // 005F CALL R9 2
+ 0xB8263800, // 0060 GETNGBL R9 K28
+ 0x8C24131D, // 0061 GETMET R9 R9 K29
+ 0x602C0008, // 0062 GETGBL R11 G8
+ 0xB8323E00, // 0063 GETNGBL R12 K31
+ 0x88301920, // 0064 GETMBR R12 R12 K32
+ 0x7C2C0200, // 0065 CALL R11 1
+ 0x002E3C0B, // 0066 ADD R11 K30 R11
+ 0x002C1721, // 0067 ADD R11 R11 K33
+ 0x7C240400, // 0068 CALL R9 2
+ 0x7002000F, // 0069 JMP #007A
+ 0xB8261000, // 006A GETNGBL R9 K8
+ 0x60280018, // 006B GETGBL R10 G24
+ 0x582C0009, // 006C LDCONST R11 K9
+ 0x58300022, // 006D LDCONST R12 K34
+ 0x7C280400, // 006E CALL R10 2
+ 0x582C000A, // 006F LDCONST R11 K10
+ 0x7C240400, // 0070 CALL R9 2
+ 0xB8263800, // 0071 GETNGBL R9 K28
+ 0x8C24131D, // 0072 GETMET R9 R9 K29
+ 0x602C0008, // 0073 GETGBL R11 G8
+ 0xB8323E00, // 0074 GETNGBL R12 K31
+ 0x88301920, // 0075 GETMBR R12 R12 K32
+ 0x7C2C0200, // 0076 CALL R11 1
+ 0x002E3C0B, // 0077 ADD R11 K30 R11
+ 0x002C1723, // 0078 ADD R11 R11 K35
+ 0x7C240400, // 0079 CALL R9 2
+ 0x8C240313, // 007A GETMET R9 R1 K19
+ 0x582C0014, // 007B LDCONST R11 K20
0x7C240400, // 007C CALL R9 2
- 0x8C240314, // 007D GETMET R9 R1 K20
- 0x582C0015, // 007E LDCONST R11 K21
- 0x7C240400, // 007F CALL R9 2
- 0x70020014, // 0080 JMP #0096
- 0x8824010C, // 0081 GETMBR R9 R0 K12
- 0x88241324, // 0082 GETMBR R9 R9 K36
- 0x4C280000, // 0083 LDNIL R10
- 0x2024120A, // 0084 NE R9 R9 R10
- 0x20240E09, // 0085 NE R9 R7 R9
- 0x7826000B, // 0086 JMPF R9 #0093
- 0x781E0003, // 0087 JMPF R7 #008C
- 0x8824010C, // 0088 GETMBR R9 R0 K12
- 0x8C241325, // 0089 GETMET R9 R9 K37
- 0x7C240200, // 008A CALL R9 1
- 0x70020002, // 008B JMP #008F
- 0x8824010C, // 008C GETMBR R9 R0 K12
- 0x8C241326, // 008D GETMET R9 R9 K38
+ 0x70020017, // 007D JMP #0096
+ 0x8824010B, // 007E GETMBR R9 R0 K11
+ 0x88241324, // 007F GETMBR R9 R9 K36
+ 0x88241325, // 0080 GETMBR R9 R9 K37
+ 0x4C280000, // 0081 LDNIL R10
+ 0x2024120A, // 0082 NE R9 R9 R10
+ 0x20240E09, // 0083 NE R9 R7 R9
+ 0x7826000D, // 0084 JMPF R9 #0093
+ 0x781E0004, // 0085 JMPF R7 #008B
+ 0x8824010B, // 0086 GETMBR R9 R0 K11
+ 0x88241324, // 0087 GETMBR R9 R9 K36
+ 0x8C241326, // 0088 GETMET R9 R9 K38
+ 0x7C240200, // 0089 CALL R9 1
+ 0x70020003, // 008A JMP #008F
+ 0x8824010B, // 008B GETMBR R9 R0 K11
+ 0x88241324, // 008C GETMBR R9 R9 K36
+ 0x8C241327, // 008D GETMET R9 R9 K39
0x7C240200, // 008E CALL R9 1
- 0x8C240314, // 008F GETMET R9 R1 K20
- 0x582C0027, // 0090 LDCONST R11 K39
+ 0x8C240313, // 008F GETMET R9 R1 K19
+ 0x582C0028, // 0090 LDCONST R11 K40
0x7C240400, // 0091 CALL R9 2
0x70020002, // 0092 JMP #0096
- 0x8C240314, // 0093 GETMET R9 R1 K20
- 0x582C0027, // 0094 LDCONST R11 K39
+ 0x8C240313, // 0093 GETMET R9 R1 K19
+ 0x582C0028, // 0094 LDCONST R11 K40
0x7C240400, // 0095 CALL R9 2
- 0x700201D7, // 0096 JMP #026F
+ 0x700201C8, // 0096 JMP #0260
0x8C180305, // 0097 GETMET R6 R1 K5
- 0x58200028, // 0098 LDCONST R8 K40
+ 0x58200029, // 0098 LDCONST R8 K41
0x7C180400, // 0099 CALL R6 2
- 0x781A0026, // 009A JMPF R6 #00C2
+ 0x781A0025, // 009A JMPF R6 #00C1
0xB81A1000, // 009B GETNGBL R6 K8
- 0x8C180D09, // 009C GETMET R6 R6 K9
- 0x60200018, // 009D GETGBL R8 G24
- 0x5824000A, // 009E LDCONST R9 K10
- 0x58280028, // 009F LDCONST R10 K40
- 0x7C200400, // 00A0 CALL R8 2
- 0x5824000B, // 00A1 LDCONST R9 K11
- 0x7C180600, // 00A2 CALL R6 3
- 0x60180009, // 00A3 GETGBL R6 G9
- 0x8C1C030E, // 00A4 GETMET R7 R1 K14
- 0x58240028, // 00A5 LDCONST R9 K40
- 0x7C1C0400, // 00A6 CALL R7 2
- 0x7C180200, // 00A7 CALL R6 1
- 0x581C0029, // 00A8 LDCONST R7 K41
- 0x8820010C, // 00A9 GETMBR R8 R0 K12
- 0x8820112A, // 00AA GETMBR R8 R8 K42
- 0x8820112B, // 00AB GETMBR R8 R8 K43
- 0x6024000C, // 00AC GETGBL R9 G12
- 0x5C281000, // 00AD MOVE R10 R8
- 0x7C240200, // 00AE CALL R9 1
- 0x14240E09, // 00AF LT R9 R7 R9
- 0x7826000C, // 00B0 JMPF R9 #00BE
- 0x94241007, // 00B1 GETIDX R9 R8 R7
- 0x8C24132C, // 00B2 GETMET R9 R9 K44
- 0x7C240200, // 00B3 CALL R9 1
- 0x1C241206, // 00B4 EQ R9 R9 R6
- 0x78260005, // 00B5 JMPF R9 #00BC
- 0x8824010C, // 00B6 GETMBR R9 R0 K12
- 0x8C24132D, // 00B7 GETMET R9 R9 K45
- 0x942C1007, // 00B8 GETIDX R11 R8 R7
- 0x7C240400, // 00B9 CALL R9 2
- 0x70020002, // 00BA JMP #00BE
- 0x70020000, // 00BB JMP #00BD
- 0x001C0F2E, // 00BC ADD R7 R7 K46
- 0x7001FFED, // 00BD JMP #00AC
- 0x8C240314, // 00BE GETMET R9 R1 K20
- 0x582C002F, // 00BF LDCONST R11 K47
- 0x7C240400, // 00C0 CALL R9 2
- 0x700201AC, // 00C1 JMP #026F
- 0x8C180305, // 00C2 GETMET R6 R1 K5
- 0x58200030, // 00C3 LDCONST R8 K48
- 0x7C180400, // 00C4 CALL R6 2
- 0x781A0011, // 00C5 JMPF R6 #00D8
- 0xB81A1000, // 00C6 GETNGBL R6 K8
- 0x8C180D09, // 00C7 GETMET R6 R6 K9
- 0x60200018, // 00C8 GETGBL R8 G24
- 0x5824000A, // 00C9 LDCONST R9 K10
- 0x58280030, // 00CA LDCONST R10 K48
- 0x7C200400, // 00CB CALL R8 2
- 0x5824000B, // 00CC LDCONST R9 K11
- 0x7C180600, // 00CD CALL R6 3
- 0x8818010C, // 00CE GETMBR R6 R0 K12
- 0x501C0000, // 00CF LDBOOL R7 0 0
- 0x901A6207, // 00D0 SETMBR R6 K49 R7
- 0x8818010C, // 00D1 GETMBR R6 R0 K12
- 0x8C180D13, // 00D2 GETMET R6 R6 K19
- 0x7C180200, // 00D3 CALL R6 1
- 0x8C180314, // 00D4 GETMET R6 R1 K20
- 0x58200015, // 00D5 LDCONST R8 K21
- 0x7C180400, // 00D6 CALL R6 2
- 0x70020196, // 00D7 JMP #026F
- 0x8C180305, // 00D8 GETMET R6 R1 K5
- 0x58200032, // 00D9 LDCONST R8 K50
- 0x7C180400, // 00DA CALL R6 2
- 0x781A00D6, // 00DB JMPF R6 #01B3
- 0xB81A1000, // 00DC GETNGBL R6 K8
- 0x8C180D09, // 00DD GETMET R6 R6 K9
- 0x60200018, // 00DE GETGBL R8 G24
- 0x5824000A, // 00DF LDCONST R9 K10
- 0x58280032, // 00E0 LDCONST R10 K50
- 0x7C200400, // 00E1 CALL R8 2
- 0x5824000B, // 00E2 LDCONST R9 K11
- 0x7C180600, // 00E3 CALL R6 3
- 0x50180000, // 00E4 LDBOOL R6 0 0
- 0x601C0010, // 00E5 GETGBL R7 G16
- 0x8C200333, // 00E6 GETMET R8 R1 K51
- 0x7C200200, // 00E7 CALL R8 1
- 0x0420112E, // 00E8 SUB R8 R8 K46
- 0x40225208, // 00E9 CONNECT R8 K41 R8
- 0x7C1C0200, // 00EA CALL R7 1
- 0xA80200A0, // 00EB EXBLK 0 #018D
- 0x5C200E00, // 00EC MOVE R8 R7
- 0x7C200000, // 00ED CALL R8 0
- 0x8C240334, // 00EE GETMET R9 R1 K52
- 0x5C2C1000, // 00EF MOVE R11 R8
- 0x7C240400, // 00F0 CALL R9 2
- 0x8C280535, // 00F1 GETMET R10 R2 K53
- 0x5C301200, // 00F2 MOVE R12 R9
- 0x5834000E, // 00F3 LDCONST R13 K14
- 0x7C280600, // 00F4 CALL R10 3
- 0x1C281529, // 00F5 EQ R10 R10 K41
- 0x782A005B, // 00F6 JMPF R10 #0153
- 0x60280009, // 00F7 GETGBL R10 G9
- 0x402E1736, // 00F8 CONNECT R11 K11 K54
- 0x942C120B, // 00F9 GETIDX R11 R9 R11
- 0x7C280200, // 00FA CALL R10 1
- 0x8C2C030E, // 00FB GETMET R11 R1 K14
- 0x5C341000, // 00FC MOVE R13 R8
- 0x7C2C0400, // 00FD CALL R11 2
- 0x8830010C, // 00FE GETMBR R12 R0 K12
- 0x88301937, // 00FF GETMBR R12 R12 K55
- 0x8C301935, // 0100 GETMET R12 R12 K53
- 0x60380008, // 0101 GETGBL R14 G8
- 0x5C3C1400, // 0102 MOVE R15 R10
- 0x7C380200, // 0103 CALL R14 1
- 0x7C300400, // 0104 CALL R12 2
- 0x4C340000, // 0105 LDNIL R13
- 0x2034180D, // 0106 NE R13 R12 R13
- 0x78360041, // 0107 JMPF R13 #014A
- 0x8834010C, // 0108 GETMBR R13 R0 K12
- 0x88341B38, // 0109 GETMBR R13 R13 K56
- 0x8C341B35, // 010A GETMET R13 R13 K53
- 0x8C3C1935, // 010B GETMET R15 R12 K53
- 0x58440039, // 010C LDCONST R17 K57
- 0x5848003A, // 010D LDCONST R18 K58
- 0x7C3C0600, // 010E CALL R15 3
- 0x7C340400, // 010F CALL R13 2
- 0x4C380000, // 0110 LDNIL R14
- 0x20381A0E, // 0111 NE R14 R13 R14
- 0x783A0035, // 0112 JMPF R14 #0149
- 0xB83A1000, // 0113 GETNGBL R14 K8
- 0x8C381D09, // 0114 GETMET R14 R14 K9
- 0x60400018, // 0115 GETGBL R16 G24
- 0x5844003B, // 0116 LDCONST R17 K59
- 0x5C481400, // 0117 MOVE R18 R10
- 0x5C4C1600, // 0118 MOVE R19 R11
- 0x7C400600, // 0119 CALL R16 3
- 0x5844000B, // 011A LDCONST R17 K11
- 0x7C380600, // 011B CALL R14 3
- 0x8C381B3C, // 011C GETMET R14 R13 K60
- 0x5C401A00, // 011D MOVE R16 R13
- 0x5C441800, // 011E MOVE R17 R12
- 0x7C380600, // 011F CALL R14 3
- 0x203C1C0B, // 0120 NE R15 R14 R11
- 0xB8421000, // 0121 GETNGBL R16 K8
- 0x8C402109, // 0122 GETMET R16 R16 K9
- 0x60480018, // 0123 GETGBL R18 G24
- 0x584C003D, // 0124 LDCONST R19 K61
- 0x5C501400, // 0125 MOVE R20 R10
- 0x5C541C00, // 0126 MOVE R21 R14
- 0x5C581600, // 0127 MOVE R22 R11
- 0x205C1C0B, // 0128 NE R23 R14 R11
- 0x785E0001, // 0129 JMPF R23 #012C
- 0x585C003E, // 012A LDCONST R23 K62
- 0x70020000, // 012B JMP #012D
- 0x585C003A, // 012C LDCONST R23 K58
- 0x7C480A00, // 012D CALL R18 5
- 0x584C000B, // 012E LDCONST R19 K11
- 0x7C400600, // 012F CALL R16 3
- 0x783E0017, // 0130 JMPF R15 #0149
- 0x50180200, // 0131 LDBOOL R6 1 0
- 0x8C401B3F, // 0132 GETMET R16 R13 K63
- 0x5C481A00, // 0133 MOVE R18 R13
- 0x5C4C1800, // 0134 MOVE R19 R12
- 0x5C501600, // 0135 MOVE R20 R11
- 0x7C400800, // 0136 CALL R16 4
- 0x8840010C, // 0137 GETMBR R16 R0 K12
- 0x8C402140, // 0138 GETMET R16 R16 K64
- 0x5C481400, // 0139 MOVE R18 R10
- 0x7C400400, // 013A CALL R16 2
- 0x7842000C, // 013B JMPF R16 #0149
- 0xB8461000, // 013C GETNGBL R17 K8
- 0x8C442309, // 013D GETMET R17 R17 K9
- 0x604C0018, // 013E GETGBL R19 G24
- 0x58500041, // 013F LDCONST R20 K65
- 0x5C541800, // 0140 MOVE R21 R12
- 0x5C581400, // 0141 MOVE R22 R10
- 0x5C5C2000, // 0142 MOVE R23 R16
- 0x7C4C0800, // 0143 CALL R19 4
- 0x5850000B, // 0144 LDCONST R20 K11
- 0x7C440600, // 0145 CALL R17 3
- 0x8C442142, // 0146 GETMET R17 R16 K66
- 0x5C4C1800, // 0147 MOVE R19 R12
- 0x7C440400, // 0148 CALL R17 2
- 0x70020007, // 0149 JMP #0152
- 0xB8361000, // 014A GETNGBL R13 K8
- 0x8C341B09, // 014B GETMET R13 R13 K9
- 0x603C0018, // 014C GETGBL R15 G24
- 0x58400043, // 014D LDCONST R16 K67
- 0x5C441400, // 014E MOVE R17 R10
- 0x7C3C0400, // 014F CALL R15 2
- 0x5840000B, // 0150 LDCONST R16 K11
- 0x7C340600, // 0151 CALL R13 3
- 0x70020038, // 0152 JMP #018C
- 0x8C280535, // 0153 GETMET R10 R2 K53
- 0x5C301200, // 0154 MOVE R12 R9
- 0x58340044, // 0155 LDCONST R13 K68
- 0x7C280600, // 0156 CALL R10 3
- 0x1C281529, // 0157 EQ R10 R10 K41
- 0x782A0032, // 0158 JMPF R10 #018C
- 0x60280009, // 0159 GETGBL R10 G9
- 0x402E1736, // 015A CONNECT R11 K11 K54
- 0x942C120B, // 015B GETIDX R11 R9 R11
- 0x7C280200, // 015C CALL R10 1
- 0x8C2C030E, // 015D GETMET R11 R1 K14
- 0x5C341000, // 015E MOVE R13 R8
- 0x7C2C0400, // 015F CALL R11 2
- 0x8830010C, // 0160 GETMBR R12 R0 K12
- 0x88301937, // 0161 GETMBR R12 R12 K55
- 0x8C301935, // 0162 GETMET R12 R12 K53
- 0x60380008, // 0163 GETGBL R14 G8
- 0x5C3C1400, // 0164 MOVE R15 R10
- 0x7C380200, // 0165 CALL R14 1
- 0x7C300400, // 0166 CALL R12 2
- 0x4C340000, // 0167 LDNIL R13
- 0x2034180D, // 0168 NE R13 R12 R13
- 0x78360021, // 0169 JMPF R13 #018C
- 0x8C341935, // 016A GETMET R13 R12 K53
- 0x583C0045, // 016B LDCONST R15 K69
- 0x5840003A, // 016C LDCONST R16 K58
- 0x7C340600, // 016D CALL R13 3
- 0x20381A0B, // 016E NE R14 R13 R11
- 0x783A001B, // 016F JMPF R14 #018C
- 0x50180200, // 0170 LDBOOL R6 1 0
- 0x883C010C, // 0171 GETMBR R15 R0 K12
- 0x8C3C1F40, // 0172 GETMET R15 R15 K64
- 0x5C441400, // 0173 MOVE R17 R10
- 0x7C3C0400, // 0174 CALL R15 2
- 0x783E0015, // 0175 JMPF R15 #018C
- 0x8C401F46, // 0176 GETMET R16 R15 K70
- 0x5C481600, // 0177 MOVE R18 R11
- 0x7C400400, // 0178 CALL R16 2
- 0x782E0001, // 0179 JMPF R11 #017C
- 0x98328A0B, // 017A SETIDX R12 K69 R11
- 0x70020002, // 017B JMP #017F
- 0x8C401947, // 017C GETMET R16 R12 K71
- 0x58480045, // 017D LDCONST R18 K69
- 0x7C400400, // 017E CALL R16 2
- 0xB8421000, // 017F GETNGBL R16 K8
- 0x8C402109, // 0180 GETMET R16 R16 K9
- 0x60480018, // 0181 GETGBL R18 G24
- 0x584C0048, // 0182 LDCONST R19 K72
- 0x5C501800, // 0183 MOVE R20 R12
- 0x5C541400, // 0184 MOVE R21 R10
- 0x5C581E00, // 0185 MOVE R22 R15
- 0x7C480800, // 0186 CALL R18 4
- 0x584C000B, // 0187 LDCONST R19 K11
- 0x7C400600, // 0188 CALL R16 3
- 0x8C401F42, // 0189 GETMET R16 R15 K66
- 0x5C481800, // 018A MOVE R18 R12
- 0x7C400400, // 018B CALL R16 2
- 0x7001FF5E, // 018C JMP #00EC
- 0x581C0049, // 018D LDCONST R7 K73
- 0xAC1C0200, // 018E CATCH R7 1 0
- 0xB0080000, // 018F RAISE 2 R0 R0
+ 0x601C0018, // 009C GETGBL R7 G24
+ 0x58200009, // 009D LDCONST R8 K9
+ 0x58240029, // 009E LDCONST R9 K41
+ 0x7C1C0400, // 009F CALL R7 2
+ 0x5820000A, // 00A0 LDCONST R8 K10
+ 0x7C180400, // 00A1 CALL R6 2
+ 0x60180009, // 00A2 GETGBL R6 G9
+ 0x8C1C030D, // 00A3 GETMET R7 R1 K13
+ 0x58240029, // 00A4 LDCONST R9 K41
+ 0x7C1C0400, // 00A5 CALL R7 2
+ 0x7C180200, // 00A6 CALL R6 1
+ 0x581C002A, // 00A7 LDCONST R7 K42
+ 0x8820010B, // 00A8 GETMBR R8 R0 K11
+ 0x8820112B, // 00A9 GETMBR R8 R8 K43
+ 0x8820112C, // 00AA GETMBR R8 R8 K44
+ 0x6024000C, // 00AB GETGBL R9 G12
+ 0x5C281000, // 00AC MOVE R10 R8
+ 0x7C240200, // 00AD CALL R9 1
+ 0x14240E09, // 00AE LT R9 R7 R9
+ 0x7826000C, // 00AF JMPF R9 #00BD
+ 0x94241007, // 00B0 GETIDX R9 R8 R7
+ 0x8C24132D, // 00B1 GETMET R9 R9 K45
+ 0x7C240200, // 00B2 CALL R9 1
+ 0x1C241206, // 00B3 EQ R9 R9 R6
+ 0x78260005, // 00B4 JMPF R9 #00BB
+ 0x8824010B, // 00B5 GETMBR R9 R0 K11
+ 0x8C24132E, // 00B6 GETMET R9 R9 K46
+ 0x942C1007, // 00B7 GETIDX R11 R8 R7
+ 0x7C240400, // 00B8 CALL R9 2
+ 0x70020002, // 00B9 JMP #00BD
+ 0x70020000, // 00BA JMP #00BC
+ 0x001C0F2F, // 00BB ADD R7 R7 K47
+ 0x7001FFED, // 00BC JMP #00AB
+ 0x8C240313, // 00BD GETMET R9 R1 K19
+ 0x582C0030, // 00BE LDCONST R11 K48
+ 0x7C240400, // 00BF CALL R9 2
+ 0x7002019E, // 00C0 JMP #0260
+ 0x8C180305, // 00C1 GETMET R6 R1 K5
+ 0x58200031, // 00C2 LDCONST R8 K49
+ 0x7C180400, // 00C3 CALL R6 2
+ 0x781A000D, // 00C4 JMPF R6 #00D3
+ 0xB81A1000, // 00C5 GETNGBL R6 K8
+ 0x601C0018, // 00C6 GETGBL R7 G24
+ 0x58200009, // 00C7 LDCONST R8 K9
+ 0x58240031, // 00C8 LDCONST R9 K49
+ 0x7C1C0400, // 00C9 CALL R7 2
+ 0x5820000A, // 00CA LDCONST R8 K10
+ 0x7C180400, // 00CB CALL R6 2
+ 0x8818010B, // 00CC GETMBR R6 R0 K11
+ 0x8C180D32, // 00CD GETMET R6 R6 K50
+ 0x7C180200, // 00CE CALL R6 1
+ 0x8C180313, // 00CF GETMET R6 R1 K19
+ 0x58200014, // 00D0 LDCONST R8 K20
+ 0x7C180400, // 00D1 CALL R6 2
+ 0x7002018C, // 00D2 JMP #0260
+ 0x8C180305, // 00D3 GETMET R6 R1 K5
+ 0x58200033, // 00D4 LDCONST R8 K51
+ 0x7C180400, // 00D5 CALL R6 2
+ 0x781A00CE, // 00D6 JMPF R6 #01A6
+ 0xB81A1000, // 00D7 GETNGBL R6 K8
+ 0x601C0018, // 00D8 GETGBL R7 G24
+ 0x58200009, // 00D9 LDCONST R8 K9
+ 0x58240033, // 00DA LDCONST R9 K51
+ 0x7C1C0400, // 00DB CALL R7 2
+ 0x5820000A, // 00DC LDCONST R8 K10
+ 0x7C180400, // 00DD CALL R6 2
+ 0x50180000, // 00DE LDBOOL R6 0 0
+ 0x601C0010, // 00DF GETGBL R7 G16
+ 0x8C200334, // 00E0 GETMET R8 R1 K52
+ 0x7C200200, // 00E1 CALL R8 1
+ 0x0420112F, // 00E2 SUB R8 R8 K47
+ 0x40225408, // 00E3 CONNECT R8 K42 R8
+ 0x7C1C0200, // 00E4 CALL R7 1
+ 0xA802009B, // 00E5 EXBLK 0 #0182
+ 0x5C200E00, // 00E6 MOVE R8 R7
+ 0x7C200000, // 00E7 CALL R8 0
+ 0x8C240335, // 00E8 GETMET R9 R1 K53
+ 0x5C2C1000, // 00E9 MOVE R11 R8
+ 0x7C240400, // 00EA CALL R9 2
+ 0x8C280536, // 00EB GETMET R10 R2 K54
+ 0x5C301200, // 00EC MOVE R12 R9
+ 0x5834000D, // 00ED LDCONST R13 K13
+ 0x7C280600, // 00EE CALL R10 3
+ 0x1C28152A, // 00EF EQ R10 R10 K42
+ 0x782A0057, // 00F0 JMPF R10 #0149
+ 0x60280009, // 00F1 GETGBL R10 G9
+ 0x402E1537, // 00F2 CONNECT R11 K10 K55
+ 0x942C120B, // 00F3 GETIDX R11 R9 R11
+ 0x7C280200, // 00F4 CALL R10 1
+ 0x8C2C030D, // 00F5 GETMET R11 R1 K13
+ 0x5C341000, // 00F6 MOVE R13 R8
+ 0x7C2C0400, // 00F7 CALL R11 2
+ 0x8830010B, // 00F8 GETMBR R12 R0 K11
+ 0x88301938, // 00F9 GETMBR R12 R12 K56
+ 0x8C301936, // 00FA GETMET R12 R12 K54
+ 0x60380008, // 00FB GETGBL R14 G8
+ 0x5C3C1400, // 00FC MOVE R15 R10
+ 0x7C380200, // 00FD CALL R14 1
+ 0x7C300400, // 00FE CALL R12 2
+ 0x4C340000, // 00FF LDNIL R13
+ 0x2034180D, // 0100 NE R13 R12 R13
+ 0x7836003E, // 0101 JMPF R13 #0141
+ 0x8834010B, // 0102 GETMBR R13 R0 K11
+ 0x88341B39, // 0103 GETMBR R13 R13 K57
+ 0x8C341B36, // 0104 GETMET R13 R13 K54
+ 0x8C3C1936, // 0105 GETMET R15 R12 K54
+ 0x5844003A, // 0106 LDCONST R17 K58
+ 0x5848003B, // 0107 LDCONST R18 K59
+ 0x7C3C0600, // 0108 CALL R15 3
+ 0x7C340400, // 0109 CALL R13 2
+ 0x4C380000, // 010A LDNIL R14
+ 0x20381A0E, // 010B NE R14 R13 R14
+ 0x783A0032, // 010C JMPF R14 #0140
+ 0xB83A1000, // 010D GETNGBL R14 K8
+ 0x603C0018, // 010E GETGBL R15 G24
+ 0x5840003C, // 010F LDCONST R16 K60
+ 0x5C441400, // 0110 MOVE R17 R10
+ 0x5C481600, // 0111 MOVE R18 R11
+ 0x7C3C0600, // 0112 CALL R15 3
+ 0x5840000A, // 0113 LDCONST R16 K10
+ 0x7C380400, // 0114 CALL R14 2
+ 0x8C381B3D, // 0115 GETMET R14 R13 K61
+ 0x5C401A00, // 0116 MOVE R16 R13
+ 0x5C441800, // 0117 MOVE R17 R12
+ 0x7C380600, // 0118 CALL R14 3
+ 0x203C1C0B, // 0119 NE R15 R14 R11
+ 0xB8421000, // 011A GETNGBL R16 K8
+ 0x60440018, // 011B GETGBL R17 G24
+ 0x5848003E, // 011C LDCONST R18 K62
+ 0x5C4C1400, // 011D MOVE R19 R10
+ 0x5C501C00, // 011E MOVE R20 R14
+ 0x5C541600, // 011F MOVE R21 R11
+ 0x20581C0B, // 0120 NE R22 R14 R11
+ 0x785A0001, // 0121 JMPF R22 #0124
+ 0x5858003F, // 0122 LDCONST R22 K63
+ 0x70020000, // 0123 JMP #0125
+ 0x5858003B, // 0124 LDCONST R22 K59
+ 0x7C440A00, // 0125 CALL R17 5
+ 0x5848000A, // 0126 LDCONST R18 K10
+ 0x7C400400, // 0127 CALL R16 2
+ 0x783E0016, // 0128 JMPF R15 #0140
+ 0x50180200, // 0129 LDBOOL R6 1 0
+ 0x8C401B40, // 012A GETMET R16 R13 K64
+ 0x5C481A00, // 012B MOVE R18 R13
+ 0x5C4C1800, // 012C MOVE R19 R12
+ 0x5C501600, // 012D MOVE R20 R11
+ 0x7C400800, // 012E CALL R16 4
+ 0x8840010B, // 012F GETMBR R16 R0 K11
+ 0x8C402141, // 0130 GETMET R16 R16 K65
+ 0x5C481400, // 0131 MOVE R18 R10
+ 0x7C400400, // 0132 CALL R16 2
+ 0x7842000B, // 0133 JMPF R16 #0140
+ 0xB8461000, // 0134 GETNGBL R17 K8
+ 0x60480018, // 0135 GETGBL R18 G24
+ 0x584C0042, // 0136 LDCONST R19 K66
+ 0x5C501800, // 0137 MOVE R20 R12
+ 0x5C541400, // 0138 MOVE R21 R10
+ 0x5C582000, // 0139 MOVE R22 R16
+ 0x7C480800, // 013A CALL R18 4
+ 0x584C000A, // 013B LDCONST R19 K10
+ 0x7C440400, // 013C CALL R17 2
+ 0x8C442143, // 013D GETMET R17 R16 K67
+ 0x5C4C1800, // 013E MOVE R19 R12
+ 0x7C440400, // 013F CALL R17 2
+ 0x70020006, // 0140 JMP #0148
+ 0xB8361000, // 0141 GETNGBL R13 K8
+ 0x60380018, // 0142 GETGBL R14 G24
+ 0x583C0044, // 0143 LDCONST R15 K68
+ 0x5C401400, // 0144 MOVE R16 R10
+ 0x7C380400, // 0145 CALL R14 2
+ 0x583C000A, // 0146 LDCONST R15 K10
+ 0x7C340400, // 0147 CALL R13 2
+ 0x70020037, // 0148 JMP #0181
+ 0x8C280536, // 0149 GETMET R10 R2 K54
+ 0x5C301200, // 014A MOVE R12 R9
+ 0x58340045, // 014B LDCONST R13 K69
+ 0x7C280600, // 014C CALL R10 3
+ 0x1C28152A, // 014D EQ R10 R10 K42
+ 0x782A0031, // 014E JMPF R10 #0181
+ 0x60280009, // 014F GETGBL R10 G9
+ 0x402E1537, // 0150 CONNECT R11 K10 K55
+ 0x942C120B, // 0151 GETIDX R11 R9 R11
+ 0x7C280200, // 0152 CALL R10 1
+ 0x8C2C030D, // 0153 GETMET R11 R1 K13
+ 0x5C341000, // 0154 MOVE R13 R8
+ 0x7C2C0400, // 0155 CALL R11 2
+ 0x8830010B, // 0156 GETMBR R12 R0 K11
+ 0x88301938, // 0157 GETMBR R12 R12 K56
+ 0x8C301936, // 0158 GETMET R12 R12 K54
+ 0x60380008, // 0159 GETGBL R14 G8
+ 0x5C3C1400, // 015A MOVE R15 R10
+ 0x7C380200, // 015B CALL R14 1
+ 0x7C300400, // 015C CALL R12 2
+ 0x4C340000, // 015D LDNIL R13
+ 0x2034180D, // 015E NE R13 R12 R13
+ 0x78360020, // 015F JMPF R13 #0181
+ 0x8C341936, // 0160 GETMET R13 R12 K54
+ 0x583C0046, // 0161 LDCONST R15 K70
+ 0x5840003B, // 0162 LDCONST R16 K59
+ 0x7C340600, // 0163 CALL R13 3
+ 0x20381A0B, // 0164 NE R14 R13 R11
+ 0x783A001A, // 0165 JMPF R14 #0181
+ 0x50180200, // 0166 LDBOOL R6 1 0
+ 0x883C010B, // 0167 GETMBR R15 R0 K11
+ 0x8C3C1F41, // 0168 GETMET R15 R15 K65
+ 0x5C441400, // 0169 MOVE R17 R10
+ 0x7C3C0400, // 016A CALL R15 2
+ 0x783E0014, // 016B JMPF R15 #0181
+ 0x8C401F47, // 016C GETMET R16 R15 K71
+ 0x5C481600, // 016D MOVE R18 R11
+ 0x7C400400, // 016E CALL R16 2
+ 0x782E0001, // 016F JMPF R11 #0172
+ 0x98328C0B, // 0170 SETIDX R12 K70 R11
+ 0x70020002, // 0171 JMP #0175
+ 0x8C401948, // 0172 GETMET R16 R12 K72
+ 0x58480046, // 0173 LDCONST R18 K70
+ 0x7C400400, // 0174 CALL R16 2
+ 0xB8421000, // 0175 GETNGBL R16 K8
+ 0x60440018, // 0176 GETGBL R17 G24
+ 0x58480049, // 0177 LDCONST R18 K73
+ 0x5C4C1800, // 0178 MOVE R19 R12
+ 0x5C501400, // 0179 MOVE R20 R10
+ 0x5C541E00, // 017A MOVE R21 R15
+ 0x7C440800, // 017B CALL R17 4
+ 0x5848000A, // 017C LDCONST R18 K10
+ 0x7C400400, // 017D CALL R16 2
+ 0x8C401F43, // 017E GETMET R16 R15 K67
+ 0x5C481800, // 017F MOVE R18 R12
+ 0x7C400400, // 0180 CALL R16 2
+ 0x7001FF63, // 0181 JMP #00E6
+ 0x581C004A, // 0182 LDCONST R7 K74
+ 0xAC1C0200, // 0183 CATCH R7 1 0
+ 0xB0080000, // 0184 RAISE 2 R0 R0
+ 0xB81E1000, // 0185 GETNGBL R7 K8
+ 0x60200018, // 0186 GETGBL R8 G24
+ 0x5824004B, // 0187 LDCONST R9 K75
+ 0x60280008, // 0188 GETGBL R10 G8
+ 0x882C010B, // 0189 GETMBR R11 R0 K11
+ 0x882C1738, // 018A GETMBR R11 R11 K56
+ 0x7C280200, // 018B CALL R10 1
+ 0x7C200400, // 018C CALL R8 2
+ 0x5824000A, // 018D LDCONST R9 K10
+ 0x7C1C0400, // 018E CALL R7 2
+ 0x78160007, // 018F JMPF R5 #0198
0xB81E1000, // 0190 GETNGBL R7 K8
- 0x8C1C0F09, // 0191 GETMET R7 R7 K9
- 0x60240018, // 0192 GETGBL R9 G24
- 0x5828004A, // 0193 LDCONST R10 K74
- 0x602C0008, // 0194 GETGBL R11 G8
- 0x8830010C, // 0195 GETMBR R12 R0 K12
- 0x88301937, // 0196 GETMBR R12 R12 K55
- 0x7C2C0200, // 0197 CALL R11 1
- 0x7C240400, // 0198 CALL R9 2
- 0x5828000B, // 0199 LDCONST R10 K11
- 0x7C1C0600, // 019A CALL R7 3
- 0x78160008, // 019B JMPF R5 #01A5
- 0xB81E1000, // 019C GETNGBL R7 K8
- 0x8C1C0F09, // 019D GETMET R7 R7 K9
- 0x60240018, // 019E GETGBL R9 G24
- 0x5828004B, // 019F LDCONST R10 K75
- 0x5C2C0A00, // 01A0 MOVE R11 R5
- 0x7C240400, // 01A1 CALL R9 2
- 0x5828000B, // 01A2 LDCONST R10 K11
- 0x7C1C0600, // 01A3 CALL R7 3
- 0x7002000C, // 01A4 JMP #01B2
- 0x741A0002, // 01A5 JMPT R6 #01A9
- 0x881C010C, // 01A6 GETMBR R7 R0 K12
- 0x881C0F31, // 01A7 GETMBR R7 R7 K49
- 0x741E0005, // 01A8 JMPT R7 #01AF
- 0x881C010C, // 01A9 GETMBR R7 R0 K12
- 0x50200200, // 01AA LDBOOL R8 1 0
- 0x901E6208, // 01AB SETMBR R7 K49 R8
- 0x881C010C, // 01AC GETMBR R7 R0 K12
- 0x8C1C0F13, // 01AD GETMET R7 R7 K19
- 0x7C1C0200, // 01AE CALL R7 1
- 0x8C1C0314, // 01AF GETMET R7 R1 K20
- 0x5824004C, // 01B0 LDCONST R9 K76
- 0x7C1C0400, // 01B1 CALL R7 2
- 0x700200BB, // 01B2 JMP #026F
- 0x8C180305, // 01B3 GETMET R6 R1 K5
- 0x5820004D, // 01B4 LDCONST R8 K77
- 0x7C180400, // 01B5 CALL R6 2
- 0x781A002B, // 01B6 JMPF R6 #01E3
- 0x8C18030E, // 01B7 GETMET R6 R1 K14
- 0x5820004E, // 01B8 LDCONST R8 K78
- 0x7C180400, // 01B9 CALL R6 2
- 0x8C1C030E, // 01BA GETMET R7 R1 K14
- 0x5824000E, // 01BB LDCONST R9 K14
- 0x7C1C0400, // 01BC CALL R7 2
- 0x8C20030E, // 01BD GETMET R8 R1 K14
- 0x58280044, // 01BE LDCONST R10 K68
- 0x7C200400, // 01BF CALL R8 2
- 0xB8261000, // 01C0 GETNGBL R9 K8
- 0x8C241309, // 01C1 GETMET R9 R9 K9
- 0x602C0018, // 01C2 GETGBL R11 G24
- 0x5830004F, // 01C3 LDCONST R12 K79
- 0x5C340C00, // 01C4 MOVE R13 R6
- 0x5C380E00, // 01C5 MOVE R14 R7
- 0x7C2C0600, // 01C6 CALL R11 3
- 0x5830000B, // 01C7 LDCONST R12 K11
- 0x7C240600, // 01C8 CALL R9 3
- 0x8824010C, // 01C9 GETMBR R9 R0 K12
- 0x88241338, // 01CA GETMBR R9 R9 K56
- 0x8C241335, // 01CB GETMET R9 R9 K53
- 0x5C2C0C00, // 01CC MOVE R11 R6
- 0x7C240400, // 01CD CALL R9 2
- 0x4C280000, // 01CE LDNIL R10
- 0x2028120A, // 01CF NE R10 R9 R10
- 0x782A000D, // 01D0 JMPF R10 #01DF
- 0x60280013, // 01D1 GETGBL R10 G19
- 0x7C280000, // 01D2 CALL R10 0
- 0x78220000, // 01D3 JMPF R8 #01D5
- 0x982A8A08, // 01D4 SETIDX R10 K69 R8
- 0x8C2C133F, // 01D5 GETMET R11 R9 K63
- 0x5C341200, // 01D6 MOVE R13 R9
- 0x5C381400, // 01D7 MOVE R14 R10
- 0x5C3C0E00, // 01D8 MOVE R15 R7
- 0x7C2C0800, // 01D9 CALL R11 4
- 0x882C010C, // 01DA GETMBR R11 R0 K12
- 0x8C2C1750, // 01DB GETMET R11 R11 K80
- 0x5C340C00, // 01DC MOVE R13 R6
- 0x5C381400, // 01DD MOVE R14 R10
- 0x7C2C0600, // 01DE CALL R11 3
- 0x8C280314, // 01DF GETMET R10 R1 K20
- 0x5830004C, // 01E0 LDCONST R12 K76
- 0x7C280400, // 01E1 CALL R10 2
- 0x7002008B, // 01E2 JMP #026F
- 0x8C180305, // 01E3 GETMET R6 R1 K5
- 0x58200051, // 01E4 LDCONST R8 K81
- 0x7C180400, // 01E5 CALL R6 2
- 0x781A005E, // 01E6 JMPF R6 #0246
- 0x8C18030E, // 01E7 GETMET R6 R1 K14
- 0x58200052, // 01E8 LDCONST R8 K82
- 0x7C180400, // 01E9 CALL R6 2
- 0x4C1C0000, // 01EA LDNIL R7
- 0x1C1C0C07, // 01EB EQ R7 R6 R7
- 0x741E0001, // 01EC JMPT R7 #01EF
- 0x1C1C0D3A, // 01ED EQ R7 R6 K58
- 0x781E0000, // 01EE JMPF R7 #01F0
- 0xB006A754, // 01EF RAISE 1 K83 K84
- 0x581C0029, // 01F0 LDCONST R7 K41
- 0x60200008, // 01F1 GETGBL R8 G8
- 0x5C240E00, // 01F2 MOVE R9 R7
- 0x7C200200, // 01F3 CALL R8 1
- 0x8C240305, // 01F4 GETMET R9 R1 K5
- 0x002E9C08, // 01F5 ADD R11 K78 R8
- 0x7C240400, // 01F6 CALL R9 2
- 0x78260049, // 01F7 JMPF R9 #0242
- 0x8C24030E, // 01F8 GETMET R9 R1 K14
- 0x002E9C08, // 01F9 ADD R11 K78 R8
- 0x7C240400, // 01FA CALL R9 2
- 0x8C28030E, // 01FB GETMET R10 R1 K14
- 0x00321C08, // 01FC ADD R12 K14 R8
- 0x7C280400, // 01FD CALL R10 2
- 0x8C2C030E, // 01FE GETMET R11 R1 K14
- 0x00368808, // 01FF ADD R13 K68 R8
- 0x7C2C0400, // 0200 CALL R11 2
- 0x2030133A, // 0201 NE R12 R9 K58
- 0x78320038, // 0202 JMPF R12 #023C
- 0x8830010C, // 0203 GETMBR R12 R0 K12
- 0x88301938, // 0204 GETMBR R12 R12 K56
- 0x8C301935, // 0205 GETMET R12 R12 K53
- 0x5C381200, // 0206 MOVE R14 R9
- 0x7C300400, // 0207 CALL R12 2
- 0x4C340000, // 0208 LDNIL R13
- 0x2034180D, // 0209 NE R13 R12 R13
- 0x78360030, // 020A JMPF R13 #023C
- 0x60340013, // 020B GETGBL R13 G19
- 0x7C340000, // 020C CALL R13 0
- 0x9836A406, // 020D SETIDX R13 K82 R6
- 0x98367209, // 020E SETIDX R13 K57 R9
- 0x782E0000, // 020F JMPF R11 #0211
- 0x98368A0B, // 0210 SETIDX R13 K69 R11
- 0x8C38193F, // 0211 GETMET R14 R12 K63
- 0x5C401800, // 0212 MOVE R16 R12
- 0x5C441A00, // 0213 MOVE R17 R13
- 0x5C481400, // 0214 MOVE R18 R10
- 0x7C380800, // 0215 CALL R14 4
- 0x50380000, // 0216 LDBOOL R14 0 0
- 0x603C0010, // 0217 GETGBL R15 G16
- 0x8840010C, // 0218 GETMBR R16 R0 K12
- 0x88402137, // 0219 GETMBR R16 R16 K55
- 0x7C3C0200, // 021A CALL R15 1
- 0xA802000B, // 021B EXBLK 0 #0228
- 0x5C401E00, // 021C MOVE R16 R15
- 0x7C400000, // 021D CALL R16 0
- 0x8C440155, // 021E GETMET R17 R0 K85
- 0x5C4C2000, // 021F MOVE R19 R16
- 0x5C501A00, // 0220 MOVE R20 R13
- 0x7C440600, // 0221 CALL R17 3
- 0x78460001, // 0222 JMPF R17 #0225
- 0x50380200, // 0223 LDBOOL R14 1 0
- 0x70020000, // 0224 JMP #0226
- 0x7001FFF5, // 0225 JMP #021C
- 0xA8040001, // 0226 EXBLK 1 1
- 0x70020002, // 0227 JMP #022B
- 0x583C0049, // 0228 LDCONST R15 K73
- 0xAC3C0200, // 0229 CATCH R15 1 0
- 0xB0080000, // 022A RAISE 2 R0 R0
- 0x5C3C1C00, // 022B MOVE R15 R14
- 0x743E000E, // 022C JMPT R15 #023C
- 0xB83E1000, // 022D GETNGBL R15 K8
- 0x8C3C1F09, // 022E GETMET R15 R15 K9
- 0x60440018, // 022F GETGBL R17 G24
- 0x58480056, // 0230 LDCONST R18 K86
- 0x5C4C0C00, // 0231 MOVE R19 R6
- 0x5C501200, // 0232 MOVE R20 R9
- 0x5C541400, // 0233 MOVE R21 R10
- 0x7C440800, // 0234 CALL R17 4
- 0x5848000B, // 0235 LDCONST R18 K11
- 0x7C3C0600, // 0236 CALL R15 3
- 0x883C010C, // 0237 GETMBR R15 R0 K12
- 0x8C3C1F50, // 0238 GETMET R15 R15 K80
- 0x5C441200, // 0239 MOVE R17 R9
- 0x5C481A00, // 023A MOVE R18 R13
- 0x7C3C0600, // 023B CALL R15 3
- 0x001C0F2E, // 023C ADD R7 R7 K46
- 0x60300008, // 023D GETGBL R12 G8
- 0x5C340E00, // 023E MOVE R13 R7
- 0x7C300200, // 023F CALL R12 1
- 0x5C201800, // 0240 MOVE R8 R12
- 0x7001FFB1, // 0241 JMP #01F4
- 0x8C240314, // 0242 GETMET R9 R1 K20
- 0x582C004C, // 0243 LDCONST R11 K76
- 0x7C240400, // 0244 CALL R9 2
- 0x70020028, // 0245 JMP #026F
- 0x4C180000, // 0246 LDNIL R6
- 0x601C0010, // 0247 GETGBL R7 G16
- 0x8C200333, // 0248 GETMET R8 R1 K51
- 0x7C200200, // 0249 CALL R8 1
- 0x0420112E, // 024A SUB R8 R8 K46
- 0x40225208, // 024B CONNECT R8 K41 R8
- 0x7C1C0200, // 024C CALL R7 1
- 0xA8020013, // 024D EXBLK 0 #0262
- 0x5C200E00, // 024E MOVE R8 R7
- 0x7C200000, // 024F CALL R8 0
- 0x8C240334, // 0250 GETMET R9 R1 K52
- 0x5C2C1000, // 0251 MOVE R11 R8
- 0x7C240400, // 0252 CALL R9 2
- 0x8C280535, // 0253 GETMET R10 R2 K53
- 0x5C301200, // 0254 MOVE R12 R9
- 0x58340057, // 0255 LDCONST R13 K87
- 0x7C280600, // 0256 CALL R10 3
- 0x1C281529, // 0257 EQ R10 R10 K41
- 0x782A0005, // 0258 JMPF R10 #025F
- 0x60280009, // 0259 GETGBL R10 G9
- 0x402E1736, // 025A CONNECT R11 K11 K54
- 0x942C120B, // 025B GETIDX R11 R9 R11
- 0x7C280200, // 025C CALL R10 1
- 0x5C181400, // 025D MOVE R6 R10
- 0x70020000, // 025E JMP #0260
- 0x7001FFED, // 025F JMP #024E
- 0xA8040001, // 0260 EXBLK 1 1
- 0x70020002, // 0261 JMP #0265
- 0x581C0049, // 0262 LDCONST R7 K73
- 0xAC1C0200, // 0263 CATCH R7 1 0
- 0xB0080000, // 0264 RAISE 2 R0 R0
- 0x4C1C0000, // 0265 LDNIL R7
- 0x201C0C07, // 0266 NE R7 R6 R7
- 0x781E0006, // 0267 JMPF R7 #026F
- 0x881C010C, // 0268 GETMBR R7 R0 K12
- 0x8C1C0F58, // 0269 GETMET R7 R7 K88
- 0x5C240C00, // 026A MOVE R9 R6
- 0x7C1C0400, // 026B CALL R7 2
- 0x8C1C0314, // 026C GETMET R7 R1 K20
- 0x5824004C, // 026D LDCONST R9 K76
- 0x7C1C0400, // 026E CALL R7 2
- 0x78160011, // 026F JMPF R5 #0282
- 0x8C180359, // 0270 GETMET R6 R1 K89
- 0x5820005A, // 0271 LDCONST R8 K90
- 0x7C180400, // 0272 CALL R6 2
- 0x8C18035B, // 0273 GETMET R6 R1 K91
- 0x7C180200, // 0274 CALL R6 1
- 0x8C18035C, // 0275 GETMET R6 R1 K92
- 0x60200018, // 0276 GETGBL R8 G24
- 0x5824005D, // 0277 LDCONST R9 K93
- 0x8C28035E, // 0278 GETMET R10 R1 K94
- 0x5C300A00, // 0279 MOVE R12 R5
- 0x7C280400, // 027A CALL R10 2
- 0x7C200400, // 027B CALL R8 2
- 0x7C180400, // 027C CALL R6 2
- 0x8C18035F, // 027D GETMET R6 R1 K95
- 0x88200360, // 027E GETMBR R8 R1 K96
- 0x7C180400, // 027F CALL R6 2
- 0x8C180361, // 0280 GETMET R6 R1 K97
- 0x7C180200, // 0281 CALL R6 1
- 0xA8040001, // 0282 EXBLK 1 1
- 0x7002001D, // 0283 JMP #02A2
- 0xAC180002, // 0284 CATCH R6 0 2
- 0x7002001A, // 0285 JMP #02A1
- 0xB8221000, // 0286 GETNGBL R8 K8
- 0x8C201109, // 0287 GETMET R8 R8 K9
- 0x60280018, // 0288 GETGBL R10 G24
- 0x582C0062, // 0289 LDCONST R11 K98
- 0x5C300C00, // 028A MOVE R12 R6
- 0x5C340E00, // 028B MOVE R13 R7
- 0x7C280600, // 028C CALL R10 3
- 0x582C0063, // 028D LDCONST R11 K99
- 0x7C200600, // 028E CALL R8 3
- 0x8C200359, // 028F GETMET R8 R1 K89
- 0x5828005A, // 0290 LDCONST R10 K90
- 0x7C200400, // 0291 CALL R8 2
- 0x8C20035B, // 0292 GETMET R8 R1 K91
- 0x7C200200, // 0293 CALL R8 1
- 0x8C20035C, // 0294 GETMET R8 R1 K92
- 0x60280018, // 0295 GETGBL R10 G24
- 0x582C0064, // 0296 LDCONST R11 K100
- 0x5C300C00, // 0297 MOVE R12 R6
- 0x5C340E00, // 0298 MOVE R13 R7
- 0x7C280600, // 0299 CALL R10 3
- 0x7C200400, // 029A CALL R8 2
- 0x8C20035F, // 029B GETMET R8 R1 K95
- 0x88280360, // 029C GETMBR R10 R1 K96
- 0x7C200400, // 029D CALL R8 2
- 0x8C200361, // 029E GETMET R8 R1 K97
- 0x7C200200, // 029F CALL R8 1
- 0x70020000, // 02A0 JMP #02A2
- 0xB0080000, // 02A1 RAISE 2 R0 R0
- 0x80000000, // 02A2 RET 0
+ 0x60200018, // 0191 GETGBL R8 G24
+ 0x5824004C, // 0192 LDCONST R9 K76
+ 0x5C280A00, // 0193 MOVE R10 R5
+ 0x7C200400, // 0194 CALL R8 2
+ 0x5824000A, // 0195 LDCONST R9 K10
+ 0x7C1C0400, // 0196 CALL R7 2
+ 0x7002000C, // 0197 JMP #01A5
+ 0x741A0002, // 0198 JMPT R6 #019C
+ 0x881C010B, // 0199 GETMBR R7 R0 K11
+ 0x881C0F4D, // 019A GETMBR R7 R7 K77
+ 0x741E0005, // 019B JMPT R7 #01A2
+ 0x881C010B, // 019C GETMBR R7 R0 K11
+ 0x50200200, // 019D LDBOOL R8 1 0
+ 0x901E9A08, // 019E SETMBR R7 K77 R8
+ 0x881C010B, // 019F GETMBR R7 R0 K11
+ 0x8C1C0F12, // 01A0 GETMET R7 R7 K18
+ 0x7C1C0200, // 01A1 CALL R7 1
+ 0x8C1C0313, // 01A2 GETMET R7 R1 K19
+ 0x5824004E, // 01A3 LDCONST R9 K78
+ 0x7C1C0400, // 01A4 CALL R7 2
+ 0x700200B9, // 01A5 JMP #0260
+ 0x8C180305, // 01A6 GETMET R6 R1 K5
+ 0x5820004F, // 01A7 LDCONST R8 K79
+ 0x7C180400, // 01A8 CALL R6 2
+ 0x781A002A, // 01A9 JMPF R6 #01D5
+ 0x8C18030D, // 01AA GETMET R6 R1 K13
+ 0x58200050, // 01AB LDCONST R8 K80
+ 0x7C180400, // 01AC CALL R6 2
+ 0x8C1C030D, // 01AD GETMET R7 R1 K13
+ 0x5824000D, // 01AE LDCONST R9 K13
+ 0x7C1C0400, // 01AF CALL R7 2
+ 0x8C20030D, // 01B0 GETMET R8 R1 K13
+ 0x58280045, // 01B1 LDCONST R10 K69
+ 0x7C200400, // 01B2 CALL R8 2
+ 0xB8261000, // 01B3 GETNGBL R9 K8
+ 0x60280018, // 01B4 GETGBL R10 G24
+ 0x582C0051, // 01B5 LDCONST R11 K81
+ 0x5C300C00, // 01B6 MOVE R12 R6
+ 0x5C340E00, // 01B7 MOVE R13 R7
+ 0x7C280600, // 01B8 CALL R10 3
+ 0x582C000A, // 01B9 LDCONST R11 K10
+ 0x7C240400, // 01BA CALL R9 2
+ 0x8824010B, // 01BB GETMBR R9 R0 K11
+ 0x88241339, // 01BC GETMBR R9 R9 K57
+ 0x8C241336, // 01BD GETMET R9 R9 K54
+ 0x5C2C0C00, // 01BE MOVE R11 R6
+ 0x7C240400, // 01BF CALL R9 2
+ 0x4C280000, // 01C0 LDNIL R10
+ 0x2028120A, // 01C1 NE R10 R9 R10
+ 0x782A000D, // 01C2 JMPF R10 #01D1
+ 0x60280013, // 01C3 GETGBL R10 G19
+ 0x7C280000, // 01C4 CALL R10 0
+ 0x78220000, // 01C5 JMPF R8 #01C7
+ 0x982A8C08, // 01C6 SETIDX R10 K70 R8
+ 0x8C2C1340, // 01C7 GETMET R11 R9 K64
+ 0x5C341200, // 01C8 MOVE R13 R9
+ 0x5C381400, // 01C9 MOVE R14 R10
+ 0x5C3C0E00, // 01CA MOVE R15 R7
+ 0x7C2C0800, // 01CB CALL R11 4
+ 0x882C010B, // 01CC GETMBR R11 R0 K11
+ 0x8C2C1752, // 01CD GETMET R11 R11 K82
+ 0x5C340C00, // 01CE MOVE R13 R6
+ 0x5C381400, // 01CF MOVE R14 R10
+ 0x7C2C0600, // 01D0 CALL R11 3
+ 0x8C280313, // 01D1 GETMET R10 R1 K19
+ 0x5830004E, // 01D2 LDCONST R12 K78
+ 0x7C280400, // 01D3 CALL R10 2
+ 0x7002008A, // 01D4 JMP #0260
+ 0x8C180305, // 01D5 GETMET R6 R1 K5
+ 0x58200053, // 01D6 LDCONST R8 K83
+ 0x7C180400, // 01D7 CALL R6 2
+ 0x781A005D, // 01D8 JMPF R6 #0237
+ 0x8C18030D, // 01D9 GETMET R6 R1 K13
+ 0x58200054, // 01DA LDCONST R8 K84
+ 0x7C180400, // 01DB CALL R6 2
+ 0x4C1C0000, // 01DC LDNIL R7
+ 0x1C1C0C07, // 01DD EQ R7 R6 R7
+ 0x741E0001, // 01DE JMPT R7 #01E1
+ 0x1C1C0D3B, // 01DF EQ R7 R6 K59
+ 0x781E0000, // 01E0 JMPF R7 #01E2
+ 0xB006AB56, // 01E1 RAISE 1 K85 K86
+ 0x581C002A, // 01E2 LDCONST R7 K42
+ 0x60200008, // 01E3 GETGBL R8 G8
+ 0x5C240E00, // 01E4 MOVE R9 R7
+ 0x7C200200, // 01E5 CALL R8 1
+ 0x8C240305, // 01E6 GETMET R9 R1 K5
+ 0x002EA008, // 01E7 ADD R11 K80 R8
+ 0x7C240400, // 01E8 CALL R9 2
+ 0x78260048, // 01E9 JMPF R9 #0233
+ 0x8C24030D, // 01EA GETMET R9 R1 K13
+ 0x002EA008, // 01EB ADD R11 K80 R8
+ 0x7C240400, // 01EC CALL R9 2
+ 0x8C28030D, // 01ED GETMET R10 R1 K13
+ 0x00321A08, // 01EE ADD R12 K13 R8
+ 0x7C280400, // 01EF CALL R10 2
+ 0x8C2C030D, // 01F0 GETMET R11 R1 K13
+ 0x00368A08, // 01F1 ADD R13 K69 R8
+ 0x7C2C0400, // 01F2 CALL R11 2
+ 0x2030133B, // 01F3 NE R12 R9 K59
+ 0x78320037, // 01F4 JMPF R12 #022D
+ 0x8830010B, // 01F5 GETMBR R12 R0 K11
+ 0x88301939, // 01F6 GETMBR R12 R12 K57
+ 0x8C301936, // 01F7 GETMET R12 R12 K54
+ 0x5C381200, // 01F8 MOVE R14 R9
+ 0x7C300400, // 01F9 CALL R12 2
+ 0x4C340000, // 01FA LDNIL R13
+ 0x2034180D, // 01FB NE R13 R12 R13
+ 0x7836002F, // 01FC JMPF R13 #022D
+ 0x60340013, // 01FD GETGBL R13 G19
+ 0x7C340000, // 01FE CALL R13 0
+ 0x9836A806, // 01FF SETIDX R13 K84 R6
+ 0x98367409, // 0200 SETIDX R13 K58 R9
+ 0x782E0000, // 0201 JMPF R11 #0203
+ 0x98368C0B, // 0202 SETIDX R13 K70 R11
+ 0x8C381940, // 0203 GETMET R14 R12 K64
+ 0x5C401800, // 0204 MOVE R16 R12
+ 0x5C441A00, // 0205 MOVE R17 R13
+ 0x5C481400, // 0206 MOVE R18 R10
+ 0x7C380800, // 0207 CALL R14 4
+ 0x50380000, // 0208 LDBOOL R14 0 0
+ 0x603C0010, // 0209 GETGBL R15 G16
+ 0x8840010B, // 020A GETMBR R16 R0 K11
+ 0x88402138, // 020B GETMBR R16 R16 K56
+ 0x7C3C0200, // 020C CALL R15 1
+ 0xA802000B, // 020D EXBLK 0 #021A
+ 0x5C401E00, // 020E MOVE R16 R15
+ 0x7C400000, // 020F CALL R16 0
+ 0x8C440157, // 0210 GETMET R17 R0 K87
+ 0x5C4C2000, // 0211 MOVE R19 R16
+ 0x5C501A00, // 0212 MOVE R20 R13
+ 0x7C440600, // 0213 CALL R17 3
+ 0x78460001, // 0214 JMPF R17 #0217
+ 0x50380200, // 0215 LDBOOL R14 1 0
+ 0x70020000, // 0216 JMP #0218
+ 0x7001FFF5, // 0217 JMP #020E
+ 0xA8040001, // 0218 EXBLK 1 1
+ 0x70020002, // 0219 JMP #021D
+ 0x583C004A, // 021A LDCONST R15 K74
+ 0xAC3C0200, // 021B CATCH R15 1 0
+ 0xB0080000, // 021C RAISE 2 R0 R0
+ 0x5C3C1C00, // 021D MOVE R15 R14
+ 0x743E000D, // 021E JMPT R15 #022D
+ 0xB83E1000, // 021F GETNGBL R15 K8
+ 0x60400018, // 0220 GETGBL R16 G24
+ 0x58440058, // 0221 LDCONST R17 K88
+ 0x5C480C00, // 0222 MOVE R18 R6
+ 0x5C4C1200, // 0223 MOVE R19 R9
+ 0x5C501400, // 0224 MOVE R20 R10
+ 0x7C400800, // 0225 CALL R16 4
+ 0x5844000A, // 0226 LDCONST R17 K10
+ 0x7C3C0400, // 0227 CALL R15 2
+ 0x883C010B, // 0228 GETMBR R15 R0 K11
+ 0x8C3C1F52, // 0229 GETMET R15 R15 K82
+ 0x5C441200, // 022A MOVE R17 R9
+ 0x5C481A00, // 022B MOVE R18 R13
+ 0x7C3C0600, // 022C CALL R15 3
+ 0x001C0F2F, // 022D ADD R7 R7 K47
+ 0x60300008, // 022E GETGBL R12 G8
+ 0x5C340E00, // 022F MOVE R13 R7
+ 0x7C300200, // 0230 CALL R12 1
+ 0x5C201800, // 0231 MOVE R8 R12
+ 0x7001FFB2, // 0232 JMP #01E6
+ 0x8C240313, // 0233 GETMET R9 R1 K19
+ 0x582C004E, // 0234 LDCONST R11 K78
+ 0x7C240400, // 0235 CALL R9 2
+ 0x70020028, // 0236 JMP #0260
+ 0x4C180000, // 0237 LDNIL R6
+ 0x601C0010, // 0238 GETGBL R7 G16
+ 0x8C200334, // 0239 GETMET R8 R1 K52
+ 0x7C200200, // 023A CALL R8 1
+ 0x0420112F, // 023B SUB R8 R8 K47
+ 0x40225408, // 023C CONNECT R8 K42 R8
+ 0x7C1C0200, // 023D CALL R7 1
+ 0xA8020013, // 023E EXBLK 0 #0253
+ 0x5C200E00, // 023F MOVE R8 R7
+ 0x7C200000, // 0240 CALL R8 0
+ 0x8C240335, // 0241 GETMET R9 R1 K53
+ 0x5C2C1000, // 0242 MOVE R11 R8
+ 0x7C240400, // 0243 CALL R9 2
+ 0x8C280536, // 0244 GETMET R10 R2 K54
+ 0x5C301200, // 0245 MOVE R12 R9
+ 0x58340059, // 0246 LDCONST R13 K89
+ 0x7C280600, // 0247 CALL R10 3
+ 0x1C28152A, // 0248 EQ R10 R10 K42
+ 0x782A0005, // 0249 JMPF R10 #0250
+ 0x60280009, // 024A GETGBL R10 G9
+ 0x402E1537, // 024B CONNECT R11 K10 K55
+ 0x942C120B, // 024C GETIDX R11 R9 R11
+ 0x7C280200, // 024D CALL R10 1
+ 0x5C181400, // 024E MOVE R6 R10
+ 0x70020000, // 024F JMP #0251
+ 0x7001FFED, // 0250 JMP #023F
+ 0xA8040001, // 0251 EXBLK 1 1
+ 0x70020002, // 0252 JMP #0256
+ 0x581C004A, // 0253 LDCONST R7 K74
+ 0xAC1C0200, // 0254 CATCH R7 1 0
+ 0xB0080000, // 0255 RAISE 2 R0 R0
+ 0x4C1C0000, // 0256 LDNIL R7
+ 0x201C0C07, // 0257 NE R7 R6 R7
+ 0x781E0006, // 0258 JMPF R7 #0260
+ 0x881C010B, // 0259 GETMBR R7 R0 K11
+ 0x8C1C0F5A, // 025A GETMET R7 R7 K90
+ 0x5C240C00, // 025B MOVE R9 R6
+ 0x7C1C0400, // 025C CALL R7 2
+ 0x8C1C0313, // 025D GETMET R7 R1 K19
+ 0x5824004E, // 025E LDCONST R9 K78
+ 0x7C1C0400, // 025F CALL R7 2
+ 0x78160011, // 0260 JMPF R5 #0273
+ 0x8C18035B, // 0261 GETMET R6 R1 K91
+ 0x5820005C, // 0262 LDCONST R8 K92
+ 0x7C180400, // 0263 CALL R6 2
+ 0x8C18035D, // 0264 GETMET R6 R1 K93
+ 0x7C180200, // 0265 CALL R6 1
+ 0x8C18035E, // 0266 GETMET R6 R1 K94
+ 0x60200018, // 0267 GETGBL R8 G24
+ 0x5824005F, // 0268 LDCONST R9 K95
+ 0x8C280360, // 0269 GETMET R10 R1 K96
+ 0x5C300A00, // 026A MOVE R12 R5
+ 0x7C280400, // 026B CALL R10 2
+ 0x7C200400, // 026C CALL R8 2
+ 0x7C180400, // 026D CALL R6 2
+ 0x8C180361, // 026E GETMET R6 R1 K97
+ 0x88200362, // 026F GETMBR R8 R1 K98
+ 0x7C180400, // 0270 CALL R6 2
+ 0x8C180363, // 0271 GETMET R6 R1 K99
+ 0x7C180200, // 0272 CALL R6 1
+ 0xA8040001, // 0273 EXBLK 1 1
+ 0x7002001C, // 0274 JMP #0292
+ 0xAC180002, // 0275 CATCH R6 0 2
+ 0x70020019, // 0276 JMP #0291
+ 0xB8221000, // 0277 GETNGBL R8 K8
+ 0x60240018, // 0278 GETGBL R9 G24
+ 0x58280064, // 0279 LDCONST R10 K100
+ 0x5C2C0C00, // 027A MOVE R11 R6
+ 0x5C300E00, // 027B MOVE R12 R7
+ 0x7C240600, // 027C CALL R9 3
+ 0x58280065, // 027D LDCONST R10 K101
+ 0x7C200400, // 027E CALL R8 2
+ 0x8C20035B, // 027F GETMET R8 R1 K91
+ 0x5828005C, // 0280 LDCONST R10 K92
+ 0x7C200400, // 0281 CALL R8 2
+ 0x8C20035D, // 0282 GETMET R8 R1 K93
+ 0x7C200200, // 0283 CALL R8 1
+ 0x8C20035E, // 0284 GETMET R8 R1 K94
+ 0x60280018, // 0285 GETGBL R10 G24
+ 0x582C0066, // 0286 LDCONST R11 K102
+ 0x5C300C00, // 0287 MOVE R12 R6
+ 0x5C340E00, // 0288 MOVE R13 R7
+ 0x7C280600, // 0289 CALL R10 3
+ 0x7C200400, // 028A CALL R8 2
+ 0x8C200361, // 028B GETMET R8 R1 K97
+ 0x88280362, // 028C GETMBR R10 R1 K98
+ 0x7C200400, // 028D CALL R8 2
+ 0x8C200363, // 028E GETMET R8 R1 K99
+ 0x7C200200, // 028F CALL R8 1
+ 0x70020000, // 0290 JMP #0292
+ 0xB0080000, // 0291 RAISE 2 R0 R0
+ 0x80000000, // 0292 RET 0
})
)
);
@@ -3015,114 +2823,90 @@ be_local_closure(class_Matter_UI_page_part_ctl, /* name */
/********************************************************************
** Solidified function: show_qrcode
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_show_qrcode, /* name */
be_nested_proto(
18, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[22]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(_X20),
- /* K2 */ be_nested_str_weak(_XE2_X96_X84),
- /* K3 */ be_nested_str_weak(_XE2_X96_X80),
- /* K4 */ be_nested_str_weak(_XE2_X96_X88),
- /* K5 */ be_nested_str_weak(matter),
- /* K6 */ be_nested_str_weak(QRCode),
- /* K7 */ be_nested_str_weak(encode_str),
- /* K8 */ be_nested_str_weak(bitmap),
- /* K9 */ be_nested_str_weak(size),
- /* K10 */ be_nested_str_weak(content_send),
- /* K11 */ be_nested_str_weak(_X3Cstyle_X3E_X2Eqr_X7Bfont_X2Dfamily_X3Amonospace_X3B_X20margin_X3A0_X3B_X20padding_X3A0_X3B_X20white_X2Dspace_X3Apre_X3B_X20font_X2Dsize_X3A18px_X3B_X20color_X3A_X23fff_X3B_X20line_X2Dheight_X3A100_X25_X3B_X7D_X3C_X2Fstyle_X3E),
- /* K12 */ be_nested_str_weak(_X3Cdiv_X20style_X3D_X27transform_X3Ascale_X28_X2E8_X2C1_X29_X3B_X20display_X3Ainline_X2Dblock_X3B_X27_X3E),
- /* K13 */ be_nested_str_weak(_X3Cdiv_X20class_X3D_X27qr_X27_X3E),
- /* K14 */ be_nested_str_weak(),
- /* K15 */ be_const_int(0),
- /* K16 */ be_const_int(1),
- /* K17 */ be_nested_str_weak(stop_iteration),
- /* K18 */ be_nested_str_weak(_X3C_X2Fdiv_X3E),
- /* K19 */ be_const_int(2),
- /* K20 */ be_nested_str_weak(_X3Cdiv_X20class_X3D_X27qr_X27_X20style_X3D_X27background_X2Dcolor_X3A_X23000_X3B_X27_X3E),
- /* K21 */ be_nested_str_weak(_X2F_X3Cdiv_X3E),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(show_qrcode),
&be_const_str_solidified,
( &(const binstruction[120]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x580C0001, // 0001 LDCONST R3 K1
- 0x58100002, // 0002 LDCONST R4 K2
- 0x58140003, // 0003 LDCONST R5 K3
- 0x58180004, // 0004 LDCONST R6 K4
- 0xB81E0A00, // 0005 GETNGBL R7 K5
- 0x881C0F06, // 0006 GETMBR R7 R7 K6
- 0x8C1C0F07, // 0007 GETMET R7 R7 K7
+ 0xA40A0800, // 0000 IMPORT R2 K4
+ 0x580C00CA, // 0001 LDCONST R3 K202
+ 0x581000CB, // 0002 LDCONST R4 K203
+ 0x581400CC, // 0003 LDCONST R5 K204
+ 0x581800CD, // 0004 LDCONST R6 K205
+ 0xB81E3400, // 0005 GETNGBL R7 K26
+ 0x881C0FCE, // 0006 GETMBR R7 R7 K206
+ 0x8C1C0FCF, // 0007 GETMET R7 R7 K207
0x5C240200, // 0008 MOVE R9 R1
0x7C1C0400, // 0009 CALL R7 2
- 0x94200F08, // 000A GETIDX R8 R7 K8
- 0x94240F09, // 000B GETIDX R9 R7 K9
- 0x8C28050A, // 000C GETMET R10 R2 K10
- 0x5830000B, // 000D LDCONST R12 K11
+ 0x94200FD0, // 000A GETIDX R8 R7 K208
+ 0x94240FD1, // 000B GETIDX R9 R7 K209
+ 0x8C280511, // 000C GETMET R10 R2 K17
+ 0x583000D2, // 000D LDCONST R12 K210
0x7C280400, // 000E CALL R10 2
- 0x8C28050A, // 000F GETMET R10 R2 K10
- 0x5830000C, // 0010 LDCONST R12 K12
+ 0x8C280511, // 000F GETMET R10 R2 K17
+ 0x583000D3, // 0010 LDCONST R12 K211
0x7C280400, // 0011 CALL R10 2
- 0x5828000D, // 0012 LDCONST R10 K13
- 0x8C2C050A, // 0013 GETMET R11 R2 K10
+ 0x582800D4, // 0012 LDCONST R10 K212
+ 0x8C2C0511, // 0013 GETMET R11 R2 K17
0x5C341400, // 0014 MOVE R13 R10
0x7C2C0400, // 0015 CALL R11 2
- 0x5828000E, // 0016 LDCONST R10 K14
+ 0x58280015, // 0016 LDCONST R10 K21
0x602C0010, // 0017 GETGBL R11 G16
- 0x00301310, // 0018 ADD R12 R9 K16
- 0x40321E0C, // 0019 CONNECT R12 K15 R12
+ 0x0030131E, // 0018 ADD R12 R9 K30
+ 0x4032380C, // 0019 CONNECT R12 K28 R12
0x7C2C0200, // 001A CALL R11 1
0xA8020003, // 001B EXBLK 0 #0020
0x5C301600, // 001C MOVE R12 R11
0x7C300000, // 001D CALL R12 0
0x00281404, // 001E ADD R10 R10 R4
0x7001FFFB, // 001F JMP #001C
- 0x582C0011, // 0020 LDCONST R11 K17
+ 0x582C0003, // 0020 LDCONST R11 K3
0xAC2C0200, // 0021 CATCH R11 1 0
0xB0080000, // 0022 RAISE 2 R0 R0
- 0x00281512, // 0023 ADD R10 R10 K18
- 0x8C2C050A, // 0024 GETMET R11 R2 K10
+ 0x002815D5, // 0023 ADD R10 R10 K213
+ 0x8C2C0511, // 0024 GETMET R11 R2 K17
0x5C341400, // 0025 MOVE R13 R10
0x7C2C0400, // 0026 CALL R11 2
0x602C0010, // 0027 GETGBL R11 G16
- 0x00301310, // 0028 ADD R12 R9 K16
- 0x0C301913, // 0029 DIV R12 R12 K19
- 0x04301910, // 002A SUB R12 R12 K16
- 0x40321E0C, // 002B CONNECT R12 K15 R12
+ 0x0030131E, // 0028 ADD R12 R9 K30
+ 0x0C3019D6, // 0029 DIV R12 R12 K214
+ 0x0430191E, // 002A SUB R12 R12 K30
+ 0x4032380C, // 002B CONNECT R12 K28 R12
0x7C2C0200, // 002C CALL R11 1
0xA802002E, // 002D EXBLK 0 #005D
0x5C301600, // 002E MOVE R12 R11
0x7C300000, // 002F CALL R12 0
- 0x00362806, // 0030 ADD R13 K20 R6
+ 0x0037AE06, // 0030 ADD R13 K215 R6
0x5C281A00, // 0031 MOVE R10 R13
0x60340010, // 0032 GETGBL R13 G16
- 0x04381310, // 0033 SUB R14 R9 K16
- 0x403A1E0E, // 0034 CONNECT R14 K15 R14
+ 0x0438131E, // 0033 SUB R14 R9 K30
+ 0x403A380E, // 0034 CONNECT R14 K28 R14
0x7C340200, // 0035 CALL R13 1
0xA802001C, // 0036 EXBLK 0 #0054
0x5C381A00, // 0037 MOVE R14 R13
0x7C380000, // 0038 CALL R14 0
- 0x083C1913, // 0039 MUL R15 R12 K19
+ 0x083C19D6, // 0039 MUL R15 R12 K214
0x943C100F, // 003A GETIDX R15 R8 R15
0x943C1E0E, // 003B GETIDX R15 R15 R14
- 0x1C3C1F01, // 003C EQ R15 R15 K1
- 0x08401913, // 003D MUL R16 R12 K19
- 0x00402110, // 003E ADD R16 R16 K16
+ 0x1C3C1FCA, // 003C EQ R15 R15 K202
+ 0x084019D6, // 003D MUL R16 R12 K214
+ 0x0040211E, // 003E ADD R16 R16 K30
0x14402009, // 003F LT R16 R16 R9
0x78420005, // 0040 JMPF R16 #0047
- 0x08401913, // 0041 MUL R16 R12 K19
- 0x00402110, // 0042 ADD R16 R16 K16
+ 0x084019D6, // 0041 MUL R16 R12 K214
+ 0x0040211E, // 0042 ADD R16 R16 K30
0x94401010, // 0043 GETIDX R16 R8 R16
0x9440200E, // 0044 GETIDX R16 R16 R14
- 0x1C402101, // 0045 EQ R16 R16 K1
+ 0x1C4021CA, // 0045 EQ R16 R16 K202
0x70020000, // 0046 JMP #0048
0x50400200, // 0047 LDBOOL R16 1 0
0x783E0004, // 0048 JMPF R15 #004E
@@ -3137,40 +2921,40 @@ be_local_closure(class_Matter_UI_show_qrcode, /* name */
0x5C440600, // 0051 MOVE R17 R3
0x00281411, // 0052 ADD R10 R10 R17
0x7001FFE2, // 0053 JMP #0037
- 0x58340011, // 0054 LDCONST R13 K17
+ 0x58340003, // 0054 LDCONST R13 K3
0xAC340200, // 0055 CATCH R13 1 0
0xB0080000, // 0056 RAISE 2 R0 R0
0x00281406, // 0057 ADD R10 R10 R6
- 0x00281512, // 0058 ADD R10 R10 K18
- 0x8C34050A, // 0059 GETMET R13 R2 K10
+ 0x002815D5, // 0058 ADD R10 R10 K213
+ 0x8C340511, // 0059 GETMET R13 R2 K17
0x5C3C1400, // 005A MOVE R15 R10
0x7C340400, // 005B CALL R13 2
0x7001FFD0, // 005C JMP #002E
- 0x582C0011, // 005D LDCONST R11 K17
+ 0x582C0003, // 005D LDCONST R11 K3
0xAC2C0200, // 005E CATCH R11 1 0
0xB0080000, // 005F RAISE 2 R0 R0
- 0x102C1313, // 0060 MOD R11 R9 K19
- 0x1C2C170F, // 0061 EQ R11 R11 K15
+ 0x102C13D6, // 0060 MOD R11 R9 K214
+ 0x1C2C171C, // 0061 EQ R11 R11 K28
0x782E0010, // 0062 JMPF R11 #0074
- 0x58280014, // 0063 LDCONST R10 K20
+ 0x582800D7, // 0063 LDCONST R10 K215
0x602C0010, // 0064 GETGBL R11 G16
- 0x00301310, // 0065 ADD R12 R9 K16
- 0x40321E0C, // 0066 CONNECT R12 K15 R12
+ 0x0030131E, // 0065 ADD R12 R9 K30
+ 0x4032380C, // 0066 CONNECT R12 K28 R12
0x7C2C0200, // 0067 CALL R11 1
0xA8020003, // 0068 EXBLK 0 #006D
0x5C301600, // 0069 MOVE R12 R11
0x7C300000, // 006A CALL R12 0
0x00281405, // 006B ADD R10 R10 R5
0x7001FFFB, // 006C JMP #0069
- 0x582C0011, // 006D LDCONST R11 K17
+ 0x582C0003, // 006D LDCONST R11 K3
0xAC2C0200, // 006E CATCH R11 1 0
0xB0080000, // 006F RAISE 2 R0 R0
- 0x00281515, // 0070 ADD R10 R10 K21
- 0x8C2C050A, // 0071 GETMET R11 R2 K10
+ 0x002815D8, // 0070 ADD R10 R10 K216
+ 0x8C2C0511, // 0071 GETMET R11 R2 K17
0x5C341400, // 0072 MOVE R13 R10
0x7C2C0400, // 0073 CALL R11 2
- 0x8C2C050A, // 0074 GETMET R11 R2 K10
- 0x58340012, // 0075 LDCONST R13 K18
+ 0x8C2C0511, // 0074 GETMET R11 R2 K17
+ 0x583400D5, // 0075 LDCONST R13 K213
0x7C2C0400, // 0076 CALL R11 2
0x80000000, // 0077 RET 0
})
@@ -3182,94 +2966,77 @@ be_local_closure(class_Matter_UI_show_qrcode, /* name */
/********************************************************************
** Solidified function: show_enable
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_show_enable, /* name */
be_nested_proto(
11, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(matter_enabled),
- /* K2 */ be_nested_str_weak(content_send),
- /* K3 */ be_nested_str_weak(_X3Cfieldset_X3E_X3Clegend_X3E_X3Cb_X3E_X26nbsp_X3BMatter_X20_X26nbsp_X3B_X3C_X2Fb_X3E_X3C_X2Flegend_X3E_X3Cp_X20style_X3D_X27width_X3A320px_X3B_X27_X3ECheck_X20the_X20_X3Ca_X20href_X3D_X27https_X3A_X2F_X2Ftasmota_X2Egithub_X2Eio_X2Fdocs_X2FMatter_X2F_X27_X20target_X3D_X27_blank_X27_X3EMatter_X20documentation_X3C_X2Fa_X3E_X2E_X3C_X2Fp_X3E_X3Cform_X20action_X3D_X27_X2Fmatterc_X27_X20method_X3D_X27post_X27_X3E),
- /* K4 */ be_nested_str_weak(checked),
- /* K5 */ be_nested_str_weak(),
- /* K6 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20id_X3D_X27menable_X27_X20type_X3D_X27checkbox_X27_X20name_X3D_X27menable_X27_X20_X25s_X3E),
- /* K7 */ be_nested_str_weak(_X3Clabel_X20for_X3D_X27menable_X27_X3E_X3Cb_X3EMatter_X20enable_X3C_X2Fb_X3E_X3C_X2Flabel_X3E_X3C_X2Fp_X3E),
- /* K8 */ be_nested_str_weak(device),
- /* K9 */ be_nested_str_weak(commissioning_open),
- /* K10 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20id_X3D_X27comm_X27_X20type_X3D_X27checkbox_X27_X20name_X3D_X27comm_X27_X20_X25s_X3E),
- /* K11 */ be_nested_str_weak(_X3Clabel_X20for_X3D_X27comm_X27_X3E_X3Cb_X3ECommissioning_X20open_X3C_X2Fb_X3E_X3C_X2Flabel_X3E_X3C_X2Fp_X3E),
- /* K12 */ be_nested_str_weak(disable_bridge_mode),
- /* K13 */ be_nested_str_weak(_X20checked),
- /* K14 */ be_nested_str_weak(_X3Cp_X3E_X3Cinput_X20type_X3D_X27checkbox_X27_X20name_X3D_X27nobridge_X27_X25s_X3E_X3Cb_X3EForce_X20Static_X20endpoints_X3C_X2Fb_X3E_X20_X28non_X2Dbridge_X29_X3C_X2Fp_X3E),
- /* K15 */ be_nested_str_weak(_X3Cp_X3E_X3C_X2Fp_X3E_X3Cbutton_X20name_X3D_X27save_X27_X20class_X3D_X27button_X20bgrn_X27_X3ESave_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(show_enable),
&be_const_str_solidified,
- ( &(const binstruction[56]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x8C0C0302, // 0002 GETMET R3 R1 K2
- 0x58140003, // 0003 LDCONST R5 K3
+ ( &(const binstruction[57]) { /* code */
+ 0xA4060800, // 0000 IMPORT R1 K4
+ 0x88080109, // 0001 GETMBR R2 R0 K9
+ 0x8C0C0311, // 0002 GETMET R3 R1 K17
+ 0x581400D9, // 0003 LDCONST R5 K217
0x7C0C0400, // 0004 CALL R3 2
- 0x8C0C0101, // 0005 GETMET R3 R0 K1
+ 0x8C0C0109, // 0005 GETMET R3 R0 K9
0x7C0C0200, // 0006 CALL R3 1
0x780E0001, // 0007 JMPF R3 #000A
- 0x580C0004, // 0008 LDCONST R3 K4
+ 0x580C00DA, // 0008 LDCONST R3 K218
0x70020000, // 0009 JMP #000B
- 0x580C0005, // 000A LDCONST R3 K5
- 0x8C100302, // 000B GETMET R4 R1 K2
+ 0x580C0015, // 000A LDCONST R3 K21
+ 0x8C100311, // 000B GETMET R4 R1 K17
0x60180018, // 000C GETGBL R6 G24
- 0x581C0006, // 000D LDCONST R7 K6
+ 0x581C00DB, // 000D LDCONST R7 K219
0x5C200600, // 000E MOVE R8 R3
0x7C180400, // 000F CALL R6 2
0x7C100400, // 0010 CALL R4 2
- 0x8C100302, // 0011 GETMET R4 R1 K2
- 0x58180007, // 0012 LDCONST R6 K7
+ 0x8C100311, // 0011 GETMET R4 R1 K17
+ 0x581800DC, // 0012 LDCONST R6 K220
0x7C100400, // 0013 CALL R4 2
- 0x8C100101, // 0014 GETMET R4 R0 K1
+ 0x8C100109, // 0014 GETMET R4 R0 K9
0x7C100200, // 0015 CALL R4 1
- 0x7812001C, // 0016 JMPF R4 #0034
- 0x88100108, // 0017 GETMBR R4 R0 K8
- 0x88100909, // 0018 GETMBR R4 R4 K9
- 0x4C140000, // 0019 LDNIL R5
- 0x20100805, // 001A NE R4 R4 R5
- 0x78120001, // 001B JMPF R4 #001E
- 0x58100004, // 001C LDCONST R4 K4
- 0x70020000, // 001D JMP #001F
- 0x58100005, // 001E LDCONST R4 K5
- 0x8C140302, // 001F GETMET R5 R1 K2
- 0x601C0018, // 0020 GETGBL R7 G24
- 0x5820000A, // 0021 LDCONST R8 K10
- 0x5C240800, // 0022 MOVE R9 R4
- 0x7C1C0400, // 0023 CALL R7 2
- 0x7C140400, // 0024 CALL R5 2
- 0x8C140302, // 0025 GETMET R5 R1 K2
- 0x581C000B, // 0026 LDCONST R7 K11
- 0x7C140400, // 0027 CALL R5 2
- 0x88140108, // 0028 GETMBR R5 R0 K8
- 0x88140B0C, // 0029 GETMBR R5 R5 K12
- 0x78160001, // 002A JMPF R5 #002D
- 0x5814000D, // 002B LDCONST R5 K13
- 0x70020000, // 002C JMP #002E
- 0x58140005, // 002D LDCONST R5 K5
- 0x8C180302, // 002E GETMET R6 R1 K2
- 0x60200018, // 002F GETGBL R8 G24
- 0x5824000E, // 0030 LDCONST R9 K14
- 0x5C280A00, // 0031 MOVE R10 R5
- 0x7C200400, // 0032 CALL R8 2
- 0x7C180400, // 0033 CALL R6 2
- 0x8C100302, // 0034 GETMET R4 R1 K2
- 0x5818000F, // 0035 LDCONST R6 K15
- 0x7C100400, // 0036 CALL R4 2
- 0x80000000, // 0037 RET 0
+ 0x7812001D, // 0016 JMPF R4 #0035
+ 0x88100116, // 0017 GETMBR R4 R0 K22
+ 0x88100933, // 0018 GETMBR R4 R4 K51
+ 0x88100963, // 0019 GETMBR R4 R4 K99
+ 0x4C140000, // 001A LDNIL R5
+ 0x20100805, // 001B NE R4 R4 R5
+ 0x78120001, // 001C JMPF R4 #001F
+ 0x581000DA, // 001D LDCONST R4 K218
+ 0x70020000, // 001E JMP #0020
+ 0x58100015, // 001F LDCONST R4 K21
+ 0x8C140311, // 0020 GETMET R5 R1 K17
+ 0x601C0018, // 0021 GETGBL R7 G24
+ 0x582000DD, // 0022 LDCONST R8 K221
+ 0x5C240800, // 0023 MOVE R9 R4
+ 0x7C1C0400, // 0024 CALL R7 2
+ 0x7C140400, // 0025 CALL R5 2
+ 0x8C140311, // 0026 GETMET R5 R1 K17
+ 0x581C00DE, // 0027 LDCONST R7 K222
+ 0x7C140400, // 0028 CALL R5 2
+ 0x88140116, // 0029 GETMBR R5 R0 K22
+ 0x88140BDF, // 002A GETMBR R5 R5 K223
+ 0x78160001, // 002B JMPF R5 #002E
+ 0x581400C7, // 002C LDCONST R5 K199
+ 0x70020000, // 002D JMP #002F
+ 0x58140015, // 002E LDCONST R5 K21
+ 0x8C180311, // 002F GETMET R6 R1 K17
+ 0x60200018, // 0030 GETGBL R8 G24
+ 0x582400E0, // 0031 LDCONST R9 K224
+ 0x5C280A00, // 0032 MOVE R10 R5
+ 0x7C200400, // 0033 CALL R8 2
+ 0x7C180400, // 0034 CALL R6 2
+ 0x8C100311, // 0035 GETMET R4 R1 K17
+ 0x581800E1, // 0036 LDCONST R6 K225
+ 0x7C100400, // 0037 CALL R4 2
+ 0x80000000, // 0038 RET 0
})
)
);
@@ -3279,42 +3046,23 @@ be_local_closure(class_Matter_UI_show_enable, /* name */
/********************************************************************
** Solidified function: show_plugins_hints_js
********************************************************************/
-extern const bclass be_class_Matter_UI;
be_local_closure(class_Matter_UI_show_plugins_hints_js, /* name */
be_nested_proto(
16, /* nstack */
2, /* argc */
- 3, /* varg */
+ 11, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_UI,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_nested_str_weak(webserver),
- /* K1 */ be_nested_str_weak(json),
- /* K2 */ be_nested_str_weak(string),
- /* K3 */ be_nested_str_weak(split),
- /* K4 */ be_nested_str_weak(_X7C),
- /* K5 */ be_nested_str_weak(stop_iteration),
- /* K6 */ be_nested_str_weak(),
- /* K7 */ be_nested_str_weak(device),
- /* K8 */ be_nested_str_weak(plugins_classes),
- /* K9 */ be_nested_str_weak(find),
- /* K10 */ be_nested_str_weak(ARG_HINT),
- /* K11 */ be_nested_str_weak(push),
- /* K12 */ be_nested_str_weak(content_send),
- /* K13 */ be_nested_str_weak(_X3Cscript_X20type_X3D_X27text_X2Fjavascript_X27_X3Evar_X20hm_X3D_X25s_X3Bvar_X20hl_X3D_X25s_X3B_X3C_X2Fscript_X3E),
- /* K14 */ be_nested_str_weak(dump),
- /* K15 */ be_nested_str_weak(matter),
- /* K16 */ be_nested_str_weak(_ADD_ENDPOINT_JS),
- }),
+ &be_ktab_class_Matter_UI, /* shared constants */
be_str_weak(show_plugins_hints_js),
&be_const_str_solidified,
( &(const binstruction[79]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0xA40E0200, // 0001 IMPORT R3 K1
- 0xA4120400, // 0002 IMPORT R4 K2
+ 0xA40A0800, // 0000 IMPORT R2 K4
+ 0xA40EDE00, // 0001 IMPORT R3 K111
+ 0xA4127400, // 0002 IMPORT R4 K58
0x60140012, // 0003 GETGBL R5 G18
0x7C140000, // 0004 CALL R5 0
0x60180010, // 0005 GETGBL R6 G16
@@ -3323,13 +3071,13 @@ be_local_closure(class_Matter_UI_show_plugins_hints_js, /* name */
0xA8020007, // 0008 EXBLK 0 #0011
0x5C1C0C00, // 0009 MOVE R7 R6
0x7C1C0000, // 000A CALL R7 0
- 0x8C200903, // 000B GETMET R8 R4 K3
+ 0x8C2009A3, // 000B GETMET R8 R4 K163
0x5C280E00, // 000C MOVE R10 R7
- 0x582C0004, // 000D LDCONST R11 K4
+ 0x582C00A4, // 000D LDCONST R11 K164
0x7C200600, // 000E CALL R8 3
0x00140A08, // 000F ADD R5 R5 R8
0x7001FFF7, // 0010 JMP #0009
- 0x58180005, // 0011 LDCONST R6 K5
+ 0x58180003, // 0011 LDCONST R6 K3
0xAC180200, // 0012 CATCH R6 1 0
0xB0080000, // 0013 RAISE 2 R0 R0
0x60180013, // 0014 GETGBL R6 G19
@@ -3342,22 +3090,22 @@ be_local_closure(class_Matter_UI_show_plugins_hints_js, /* name */
0xA802001F, // 001B EXBLK 0 #003C
0x5C241000, // 001C MOVE R9 R8
0x7C240000, // 001D CALL R9 0
- 0x1C281306, // 001E EQ R10 R9 K6
+ 0x1C281315, // 001E EQ R10 R9 K21
0x782A0000, // 001F JMPF R10 #0021
0x7001FFFA, // 0020 JMP #001C
- 0x88280107, // 0021 GETMBR R10 R0 K7
- 0x88281508, // 0022 GETMBR R10 R10 K8
- 0x8C281509, // 0023 GETMET R10 R10 K9
+ 0x88280116, // 0021 GETMBR R10 R0 K22
+ 0x88281545, // 0022 GETMBR R10 R10 K69
+ 0x8C281543, // 0023 GETMET R10 R10 K67
0x5C301200, // 0024 MOVE R12 R9
0x7C280400, // 0025 CALL R10 2
0x4C2C0000, // 0026 LDNIL R11
0x202C140B, // 0027 NE R11 R10 R11
0x782E0011, // 0028 JMPF R11 #003B
- 0x882C150A, // 0029 GETMBR R11 R10 K10
+ 0x882C1547, // 0029 GETMBR R11 R10 K71
0x4C300000, // 002A LDNIL R12
0x2030160C, // 002B NE R12 R11 R12
0x7832000D, // 002C JMPF R12 #003B
- 0x8C300F09, // 002D GETMET R12 R7 K9
+ 0x8C300F43, // 002D GETMET R12 R7 K67
0x5C381600, // 002E MOVE R14 R11
0x7C300400, // 002F CALL R12 2
0x4C340000, // 0030 LDNIL R13
@@ -3367,28 +3115,28 @@ be_local_closure(class_Matter_UI_show_plugins_hints_js, /* name */
0x5C380E00, // 0034 MOVE R14 R7
0x7C340200, // 0035 CALL R13 1
0x5C301A00, // 0036 MOVE R12 R13
- 0x8C340F0B, // 0037 GETMET R13 R7 K11
+ 0x8C340F22, // 0037 GETMET R13 R7 K34
0x5C3C1600, // 0038 MOVE R15 R11
0x7C340400, // 0039 CALL R13 2
0x9818120C, // 003A SETIDX R6 R9 R12
0x7001FFDF, // 003B JMP #001C
- 0x58200005, // 003C LDCONST R8 K5
+ 0x58200003, // 003C LDCONST R8 K3
0xAC200200, // 003D CATCH R8 1 0
0xB0080000, // 003E RAISE 2 R0 R0
- 0x8C20050C, // 003F GETMET R8 R2 K12
+ 0x8C200511, // 003F GETMET R8 R2 K17
0x60280018, // 0040 GETGBL R10 G24
- 0x582C000D, // 0041 LDCONST R11 K13
- 0x8C30070E, // 0042 GETMET R12 R3 K14
+ 0x582C00E2, // 0041 LDCONST R11 K226
+ 0x8C3007E3, // 0042 GETMET R12 R3 K227
0x5C380C00, // 0043 MOVE R14 R6
0x7C300400, // 0044 CALL R12 2
- 0x8C34070E, // 0045 GETMET R13 R3 K14
+ 0x8C3407E3, // 0045 GETMET R13 R3 K227
0x5C3C0E00, // 0046 MOVE R15 R7
0x7C340400, // 0047 CALL R13 2
0x7C280600, // 0048 CALL R10 3
0x7C200400, // 0049 CALL R8 2
- 0x8C20050C, // 004A GETMET R8 R2 K12
- 0xB82A1E00, // 004B GETNGBL R10 K15
- 0x88281510, // 004C GETMBR R10 R10 K16
+ 0x8C200511, // 004A GETMET R8 R2 K17
+ 0xB82A3400, // 004B GETNGBL R10 K26
+ 0x882815E4, // 004C GETMBR R10 R10 K228
0x7C200400, // 004D CALL R8 2
0x80000000, // 004E RET 0
})
@@ -3407,7 +3155,7 @@ be_local_class(Matter_UI,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(equal_map, -1), be_const_static_closure(class_Matter_UI_equal_map_closure) },
{ be_const_key_weak(page_part_mgr_adv, -1), be_const_closure(class_Matter_UI_page_part_mgr_adv_closure) },
- { be_const_key_weak(_CLASSES_TYPES2, -1), be_nested_str_weak(_X7Chttp_relay_X7Chttp_light0_X7Chttp_light1_X7Chttp_light2_X7Chttp_light3_X7Chttp_temperature_X7Chttp_pressure_X7Chttp_illuminance_X7Chttp_humidity_X7Chttp_occupancy_X7Chttp_contact_X7Chttp_flow_X7Chttp_waterleak) },
+ { be_const_key_weak(_CLASSES_TYPES2, -1), be_nested_str_weak(_X7Chttp_relay_X7Chttp_light0_X7Chttp_light1_X7Chttp_light2_X7Chttp_light3_X7Chttp_temperature_X7Chttp_pressure_X7Chttp_illuminance_X7Chttp_humidity_X7Chttp_occupancy_X7Chttp_contact_X7Chttp_flow_X7Chttp_rain_X7Chttp_waterleak_X7Chttp_airquality) },
{ be_const_key_weak(page_part_mgr, 25), be_const_closure(class_Matter_UI_page_part_mgr_closure) },
{ be_const_key_weak(show_plugins_hints_js, -1), be_const_closure(class_Matter_UI_show_plugins_hints_js_closure) },
{ be_const_key_weak(show_enable, -1), be_const_closure(class_Matter_UI_show_enable_closure) },
@@ -3419,7 +3167,7 @@ be_local_class(Matter_UI,
{ be_const_key_weak(show_commissioning_info, -1), be_const_closure(class_Matter_UI_show_commissioning_info_closure) },
{ be_const_key_weak(page_part_ctl, 18), be_const_closure(class_Matter_UI_page_part_ctl_closure) },
{ be_const_key_weak(show_fabric_info, -1), be_const_closure(class_Matter_UI_show_fabric_info_closure) },
- { be_const_key_weak(_CLASSES_TYPES, 4), be_nested_str_long(_X7Crelay_X7Clight0_X7Clight1_X7Clight2_X7Clight3_X7Cshutter_X7Cshutter_X2Btilt_X7Ctemperature_X7Cpressure_X7Cilluminance_X7Chumidity_X7Coccupancy_X7Conoff_X7Ccontact_X7Cflow_X7Cwaterleak_X7C_X2Dvirtual_X7Cv_relay_X7Cv_light0_X7Cv_light1_X7Cv_light2_X7Cv_light3_X7Cv_temp_X7Cv_pressure_X7Cv_illuminance_X7Cv_humidity_X7Cv_occupancy_X7Cv_contact_X7Cv_flow_X7Cv_waterleak) },
+ { be_const_key_weak(_CLASSES_TYPES, 4), be_nested_str_long(_X7Crelay_X7Clight0_X7Clight1_X7Clight2_X7Clight3_X7Cshutter_X7Cshutter_X2Btilt_X7Cgensw_btn_X7Ctemperature_X7Cpressure_X7Cilluminance_X7Chumidity_X7Coccupancy_X7Conoff_X7Ccontact_X7Cflow_X7Crain_X7Cwaterleak_X7Cairquality_X7C_X2Dvirtual_X7Cv_relay_X7Cv_light0_X7Cv_light1_X7Cv_light2_X7Cv_light3_X7Cv_fan_X7Cv_temp_X7Cv_pressure_X7Cv_illuminance_X7Cv_humidity_X7Cv_occupancy_X7Cv_contact_X7Cv_flow_X7Cv_rain_X7Cv_waterleak_X7Cv_airquality) },
{ be_const_key_weak(web_get_arg, -1), be_const_closure(class_Matter_UI_web_get_arg_closure) },
{ be_const_key_weak(plugin_option, 5), be_const_closure(class_Matter_UI_plugin_option_closure) },
{ be_const_key_weak(web_add_config_button, -1), be_const_closure(class_Matter_UI_web_add_config_button_closure) },
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_z_Autoconf.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_z_Autoconf.h
new file mode 100644
index 000000000..74081e32f
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_z_Autoconf.h
@@ -0,0 +1,728 @@
+/* Solidification of Matter_z_Autoconf.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+// compact class 'Matter_Autoconf' ktab size: 73, total: 90 (saved 136 bytes)
+static const bvalue be_ktab_class_Matter_Autoconf[73] = {
+ /* K0 */ be_nested_str_weak(device),
+ /* K1 */ be_nested_str_weak(k2l_num),
+ /* K2 */ be_nested_str_weak(plugins),
+ /* K3 */ be_nested_str_weak(push),
+ /* K4 */ be_nested_str_weak(matter),
+ /* K5 */ be_nested_str_weak(Plugin_Root),
+ /* K6 */ be_const_int(0),
+ /* K7 */ be_nested_str_weak(log),
+ /* K8 */ be_nested_str_weak(MTR_X3A_X20Configuring_X20endpoints),
+ /* K9 */ be_const_int(2),
+ /* K10 */ be_nested_str_weak(MTR_X3A_X20_X20_X20endpoint_X20_X3D_X20_X255i_X20type_X3A_X25s_X25s),
+ /* K11 */ be_nested_str_weak(root),
+ /* K12 */ be_nested_str_weak(),
+ /* K13 */ be_nested_str_weak(Plugin_Aggregator),
+ /* K14 */ be_nested_str_weak(AGGREGATOR_ENDPOINT),
+ /* K15 */ be_nested_str_weak(aggregator),
+ /* K16 */ be_nested_str_weak(find),
+ /* K17 */ be_nested_str_weak(type),
+ /* K18 */ be_nested_str_weak(MTR_X3A_X20no_X20class_X20name_X2C_X20skipping),
+ /* K19 */ be_const_int(3),
+ /* K20 */ be_nested_str_weak(MTR_X3A_X20only_X20one_X20root_X20node_X20allowed),
+ /* K21 */ be_nested_str_weak(plugins_classes),
+ /* K22 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27),
+ /* K23 */ be_nested_str_weak(_X27_X20skipping),
+ /* K24 */ be_nested_str_weak(conf_to_log),
+ /* K25 */ be_nested_str_weak(MTR_X3A_X20Exception),
+ /* K26 */ be_nested_str_weak(_X7C),
+ /* K27 */ be_nested_str_weak(stop_iteration),
+ /* K28 */ be_nested_str_weak(tasmota),
+ /* K29 */ be_nested_str_weak(publish_result),
+ /* K30 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Initialized_X22_X3A1_X7D_X7D),
+ /* K31 */ be_nested_str_weak(Matter),
+ /* K32 */ be_nested_str_weak(json),
+ /* K33 */ be_nested_str_weak(START_ENDPOINT),
+ /* K34 */ be_nested_str_weak(light),
+ /* K35 */ be_nested_str_weak(get),
+ /* K36 */ be_nested_str_weak(channels),
+ /* K37 */ be_const_int(1),
+ /* K38 */ be_nested_str_weak(light1),
+ /* K39 */ be_nested_str_weak(light2),
+ /* K40 */ be_nested_str_weak(light3),
+ /* K41 */ be_nested_str_weak(cmd),
+ /* K42 */ be_nested_str_weak(Status_X2013),
+ /* K43 */ be_nested_str_weak(MTR_X3A_X20Status_X2013_X20_X3D_X20),
+ /* K44 */ be_nested_str_weak(contains),
+ /* K45 */ be_nested_str_weak(StatusSHT),
+ /* K46 */ be_nested_str_weak(SHT),
+ /* K47 */ be_nested_str_weak(MTR_X3A_X20_X27_X25s_X27_X20_X3D_X20_X25s),
+ /* K48 */ be_nested_str_weak(Relay1),
+ /* K49 */ be_nested_str_weak(Relay2),
+ /* K50 */ be_nested_str_weak(MTR_X3A_X20relay1_X3D_X25s_X20relay2_X3D_X25s),
+ /* K51 */ be_nested_str_weak(TiltConfig),
+ /* K52 */ be_nested_str_weak(shutter_X2Btilt),
+ /* K53 */ be_nested_str_weak(shutter),
+ /* K54 */ be_nested_str_weak(get_power),
+ /* K55 */ be_nested_str_weak(relay),
+ /* K56 */ be_nested_str_weak(load),
+ /* K57 */ be_nested_str_weak(read_sensors),
+ /* K58 */ be_nested_str_weak(autoconf_sensors_list),
+ /* K59 */ be_nested_str_weak(k2l),
+ /* K60 */ be_nested_str_weak(Temperature),
+ /* K61 */ be_nested_str_weak(_X23Temperature),
+ /* K62 */ be_nested_str_weak(temperature),
+ /* K63 */ be_nested_str_weak(filter),
+ /* K64 */ be_nested_str_weak(Pressure),
+ /* K65 */ be_nested_str_weak(_X23Pressure),
+ /* K66 */ be_nested_str_weak(pressure),
+ /* K67 */ be_nested_str_weak(Illuminance),
+ /* K68 */ be_nested_str_weak(_X23Illuminance),
+ /* K69 */ be_nested_str_weak(illuminance),
+ /* K70 */ be_nested_str_weak(Humidity),
+ /* K71 */ be_nested_str_weak(_X23Humidity),
+ /* K72 */ be_nested_str_weak(humidity),
+};
+
+
+extern const bclass be_class_Matter_Autoconf;
+
+/********************************************************************
+** Solidified function: instantiate_plugins_from_config
+********************************************************************/
+be_local_closure(class_Matter_Autoconf_instantiate_plugins_from_config, /* name */
+ be_nested_proto(
+ 18, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Autoconf, /* shared constants */
+ be_str_weak(instantiate_plugins_from_config),
+ &be_const_str_solidified,
+ ( &(const binstruction[148]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x7C080400, // 0003 CALL R2 2
+ 0x880C0100, // 0004 GETMBR R3 R0 K0
+ 0x880C0702, // 0005 GETMBR R3 R3 K2
+ 0x8C100703, // 0006 GETMET R4 R3 K3
+ 0xB81A0800, // 0007 GETNGBL R6 K4
+ 0x8C180D05, // 0008 GETMET R6 R6 K5
+ 0x88200100, // 0009 GETMBR R8 R0 K0
+ 0x58240006, // 000A LDCONST R9 K6
+ 0x60280013, // 000B GETGBL R10 G19
+ 0x7C280000, // 000C CALL R10 0
+ 0x7C180800, // 000D CALL R6 4
+ 0x7C100400, // 000E CALL R4 2
+ 0xB8120E00, // 000F GETNGBL R4 K7
+ 0x58140008, // 0010 LDCONST R5 K8
+ 0x58180009, // 0011 LDCONST R6 K9
+ 0x7C100400, // 0012 CALL R4 2
+ 0xB8120E00, // 0013 GETNGBL R4 K7
+ 0x60140018, // 0014 GETGBL R5 G24
+ 0x5818000A, // 0015 LDCONST R6 K10
+ 0x581C0006, // 0016 LDCONST R7 K6
+ 0x5820000B, // 0017 LDCONST R8 K11
+ 0x5824000C, // 0018 LDCONST R9 K12
+ 0x7C140800, // 0019 CALL R5 4
+ 0x58180009, // 001A LDCONST R6 K9
+ 0x7C100400, // 001B CALL R4 2
+ 0x8C100703, // 001C GETMET R4 R3 K3
+ 0xB81A0800, // 001D GETNGBL R6 K4
+ 0x8C180D0D, // 001E GETMET R6 R6 K13
+ 0x88200100, // 001F GETMBR R8 R0 K0
+ 0xB8260800, // 0020 GETNGBL R9 K4
+ 0x8824130E, // 0021 GETMBR R9 R9 K14
+ 0x60280013, // 0022 GETGBL R10 G19
+ 0x7C280000, // 0023 CALL R10 0
+ 0x7C180800, // 0024 CALL R6 4
+ 0x7C100400, // 0025 CALL R4 2
+ 0xB8120E00, // 0026 GETNGBL R4 K7
+ 0x60140018, // 0027 GETGBL R5 G24
+ 0x5818000A, // 0028 LDCONST R6 K10
+ 0xB81E0800, // 0029 GETNGBL R7 K4
+ 0x881C0F0E, // 002A GETMBR R7 R7 K14
+ 0x5820000F, // 002B LDCONST R8 K15
+ 0x5824000C, // 002C LDCONST R9 K12
+ 0x7C140800, // 002D CALL R5 4
+ 0x58180009, // 002E LDCONST R6 K9
+ 0x7C100400, // 002F CALL R4 2
+ 0x60100010, // 0030 GETGBL R4 G16
+ 0x5C140400, // 0031 MOVE R5 R2
+ 0x7C100200, // 0032 CALL R4 1
+ 0xA8020056, // 0033 EXBLK 0 #008B
+ 0x5C140800, // 0034 MOVE R5 R4
+ 0x7C140000, // 0035 CALL R5 0
+ 0x1C180B06, // 0036 EQ R6 R5 K6
+ 0x781A0000, // 0037 JMPF R6 #0039
+ 0x7001FFFA, // 0038 JMP #0034
+ 0xA802003F, // 0039 EXBLK 0 #007A
+ 0x60180008, // 003A GETGBL R6 G8
+ 0x5C1C0A00, // 003B MOVE R7 R5
+ 0x7C180200, // 003C CALL R6 1
+ 0x94180206, // 003D GETIDX R6 R1 R6
+ 0x8C1C0D10, // 003E GETMET R7 R6 K16
+ 0x58240011, // 003F LDCONST R9 K17
+ 0x7C1C0400, // 0040 CALL R7 2
+ 0x4C200000, // 0041 LDNIL R8
+ 0x1C200E08, // 0042 EQ R8 R7 R8
+ 0x78220005, // 0043 JMPF R8 #004A
+ 0xB8220E00, // 0044 GETNGBL R8 K7
+ 0x58240012, // 0045 LDCONST R9 K18
+ 0x58280013, // 0046 LDCONST R10 K19
+ 0x7C200400, // 0047 CALL R8 2
+ 0xA8040001, // 0048 EXBLK 1 1
+ 0x7001FFE9, // 0049 JMP #0034
+ 0x1C200F0B, // 004A EQ R8 R7 K11
+ 0x78220005, // 004B JMPF R8 #0052
+ 0xB8220E00, // 004C GETNGBL R8 K7
+ 0x58240014, // 004D LDCONST R9 K20
+ 0x58280013, // 004E LDCONST R10 K19
+ 0x7C200400, // 004F CALL R8 2
+ 0xA8040001, // 0050 EXBLK 1 1
+ 0x7001FFE1, // 0051 JMP #0034
+ 0x88200100, // 0052 GETMBR R8 R0 K0
+ 0x88201115, // 0053 GETMBR R8 R8 K21
+ 0x8C201110, // 0054 GETMET R8 R8 K16
+ 0x5C280E00, // 0055 MOVE R10 R7
+ 0x7C200400, // 0056 CALL R8 2
+ 0x4C240000, // 0057 LDNIL R9
+ 0x1C241009, // 0058 EQ R9 R8 R9
+ 0x78260009, // 0059 JMPF R9 #0064
+ 0xB8260E00, // 005A GETNGBL R9 K7
+ 0x60280008, // 005B GETGBL R10 G8
+ 0x5C2C0E00, // 005C MOVE R11 R7
+ 0x7C280200, // 005D CALL R10 1
+ 0x002A2C0A, // 005E ADD R10 K22 R10
+ 0x00281517, // 005F ADD R10 R10 K23
+ 0x582C0009, // 0060 LDCONST R11 K9
+ 0x7C240400, // 0061 CALL R9 2
+ 0xA8040001, // 0062 EXBLK 1 1
+ 0x7001FFCF, // 0063 JMP #0034
+ 0x5C241000, // 0064 MOVE R9 R8
+ 0x88280100, // 0065 GETMBR R10 R0 K0
+ 0x5C2C0A00, // 0066 MOVE R11 R5
+ 0x5C300C00, // 0067 MOVE R12 R6
+ 0x7C240600, // 0068 CALL R9 3
+ 0x8C280703, // 0069 GETMET R10 R3 K3
+ 0x5C301200, // 006A MOVE R12 R9
+ 0x7C280400, // 006B CALL R10 2
+ 0xB82A0E00, // 006C GETNGBL R10 K7
+ 0x602C0018, // 006D GETGBL R11 G24
+ 0x5830000A, // 006E LDCONST R12 K10
+ 0x5C340A00, // 006F MOVE R13 R5
+ 0x5C380E00, // 0070 MOVE R14 R7
+ 0x883C0100, // 0071 GETMBR R15 R0 K0
+ 0x8C3C1F18, // 0072 GETMET R15 R15 K24
+ 0x5C440C00, // 0073 MOVE R17 R6
+ 0x7C3C0400, // 0074 CALL R15 2
+ 0x7C2C0800, // 0075 CALL R11 4
+ 0x58300009, // 0076 LDCONST R12 K9
+ 0x7C280400, // 0077 CALL R10 2
+ 0xA8040001, // 0078 EXBLK 1 1
+ 0x7002000F, // 0079 JMP #008A
+ 0xAC180002, // 007A CATCH R6 0 2
+ 0x7002000C, // 007B JMP #0089
+ 0xB8220E00, // 007C GETNGBL R8 K7
+ 0x60240008, // 007D GETGBL R9 G8
+ 0x5C280C00, // 007E MOVE R10 R6
+ 0x7C240200, // 007F CALL R9 1
+ 0x00263209, // 0080 ADD R9 K25 R9
+ 0x0024131A, // 0081 ADD R9 R9 K26
+ 0x60280008, // 0082 GETGBL R10 G8
+ 0x5C2C0E00, // 0083 MOVE R11 R7
+ 0x7C280200, // 0084 CALL R10 1
+ 0x0024120A, // 0085 ADD R9 R9 R10
+ 0x58280009, // 0086 LDCONST R10 K9
+ 0x7C200400, // 0087 CALL R8 2
+ 0x70020000, // 0088 JMP #008A
+ 0xB0080000, // 0089 RAISE 2 R0 R0
+ 0x7001FFA8, // 008A JMP #0034
+ 0x5810001B, // 008B LDCONST R4 K27
+ 0xAC100200, // 008C CATCH R4 1 0
+ 0xB0080000, // 008D RAISE 2 R0 R0
+ 0xB8123800, // 008E GETNGBL R4 K28
+ 0x8C10091D, // 008F GETMET R4 R4 K29
+ 0x5818001E, // 0090 LDCONST R6 K30
+ 0x581C001F, // 0091 LDCONST R7 K31
+ 0x7C100600, // 0092 CALL R4 3
+ 0x80000000, // 0093 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: autoconf_device_map
+********************************************************************/
+be_local_closure(class_Matter_Autoconf_autoconf_device_map, /* name */
+ be_nested_proto(
+ 19, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Autoconf, /* shared constants */
+ be_str_weak(autoconf_device_map),
+ &be_const_str_solidified,
+ ( &(const binstruction[262]) { /* code */
+ 0xA4064000, // 0000 IMPORT R1 K32
+ 0x60080013, // 0001 GETGBL R2 G19
+ 0x7C080000, // 0002 CALL R2 0
+ 0xB80E0800, // 0003 GETNGBL R3 K4
+ 0x880C0721, // 0004 GETMBR R3 R3 K33
+ 0x58100006, // 0005 LDCONST R4 K6
+ 0xA4164400, // 0006 IMPORT R5 K34
+ 0x8C180B23, // 0007 GETMET R6 R5 K35
+ 0x58200006, // 0008 LDCONST R8 K6
+ 0x7C180400, // 0009 CALL R6 2
+ 0x4C1C0000, // 000A LDNIL R7
+ 0x201C0C07, // 000B NE R7 R6 R7
+ 0x781E0066, // 000C JMPF R7 #0074
+ 0x601C000C, // 000D GETGBL R7 G12
+ 0x8C200D10, // 000E GETMET R8 R6 K16
+ 0x58280024, // 000F LDCONST R10 K36
+ 0x582C000C, // 0010 LDCONST R11 K12
+ 0x7C200600, // 0011 CALL R8 3
+ 0x7C1C0200, // 0012 CALL R7 1
+ 0x58100025, // 0013 LDCONST R4 K37
+ 0x24200F06, // 0014 GT R8 R7 K6
+ 0x7822005D, // 0015 JMPF R8 #0074
+ 0x1C200F25, // 0016 EQ R8 R7 K37
+ 0x7822001E, // 0017 JMPF R8 #0037
+ 0x60200008, // 0018 GETGBL R8 G8
+ 0x5C240600, // 0019 MOVE R9 R3
+ 0x7C200200, // 001A CALL R8 1
+ 0x60240013, // 001B GETGBL R9 G19
+ 0x7C240000, // 001C CALL R9 0
+ 0x98262326, // 001D SETIDX R9 K17 K38
+ 0x98081009, // 001E SETIDX R2 R8 R9
+ 0x000C0725, // 001F ADD R3 R3 K37
+ 0x58200025, // 0020 LDCONST R8 K37
+ 0x4C240000, // 0021 LDNIL R9
+ 0x8C280B23, // 0022 GETMET R10 R5 K35
+ 0x5C301000, // 0023 MOVE R12 R8
+ 0x7C280400, // 0024 CALL R10 2
+ 0x5C241400, // 0025 MOVE R9 R10
+ 0x4C2C0000, // 0026 LDNIL R11
+ 0x2028140B, // 0027 NE R10 R10 R11
+ 0x782A000C, // 0028 JMPF R10 #0036
+ 0x60280008, // 0029 GETGBL R10 G8
+ 0x5C2C0600, // 002A MOVE R11 R3
+ 0x7C280200, // 002B CALL R10 1
+ 0x602C0013, // 002C GETGBL R11 G19
+ 0x7C2C0000, // 002D CALL R11 0
+ 0x982E2326, // 002E SETIDX R11 K17 K38
+ 0x00301125, // 002F ADD R12 R8 K37
+ 0x982E440C, // 0030 SETIDX R11 K34 R12
+ 0x9808140B, // 0031 SETIDX R2 R10 R11
+ 0x000C0725, // 0032 ADD R3 R3 K37
+ 0x00100925, // 0033 ADD R4 R4 K37
+ 0x00201125, // 0034 ADD R8 R8 K37
+ 0x7001FFEB, // 0035 JMP #0022
+ 0x7002003C, // 0036 JMP #0074
+ 0x1C200F09, // 0037 EQ R8 R7 K9
+ 0x78220008, // 0038 JMPF R8 #0042
+ 0x60200008, // 0039 GETGBL R8 G8
+ 0x5C240600, // 003A MOVE R9 R3
+ 0x7C200200, // 003B CALL R8 1
+ 0x60240013, // 003C GETGBL R9 G19
+ 0x7C240000, // 003D CALL R9 0
+ 0x98262327, // 003E SETIDX R9 K17 K39
+ 0x98081009, // 003F SETIDX R2 R8 R9
+ 0x000C0725, // 0040 ADD R3 R3 K37
+ 0x70020031, // 0041 JMP #0074
+ 0x1C200F13, // 0042 EQ R8 R7 K19
+ 0x7822002B, // 0043 JMPF R8 #0070
+ 0x60200008, // 0044 GETGBL R8 G8
+ 0x5C240600, // 0045 MOVE R9 R3
+ 0x7C200200, // 0046 CALL R8 1
+ 0x60240013, // 0047 GETGBL R9 G19
+ 0x7C240000, // 0048 CALL R9 0
+ 0x98262328, // 0049 SETIDX R9 K17 K40
+ 0x98081009, // 004A SETIDX R2 R8 R9
+ 0x000C0725, // 004B ADD R3 R3 K37
+ 0x8C200B23, // 004C GETMET R8 R5 K35
+ 0x58280025, // 004D LDCONST R10 K37
+ 0x7C200400, // 004E CALL R8 2
+ 0x4C240000, // 004F LDNIL R9
+ 0x20241009, // 0050 NE R9 R8 R9
+ 0x7826001C, // 0051 JMPF R9 #006F
+ 0x6024000C, // 0052 GETGBL R9 G12
+ 0x8C281110, // 0053 GETMET R10 R8 K16
+ 0x58300024, // 0054 LDCONST R12 K36
+ 0x5834000C, // 0055 LDCONST R13 K12
+ 0x7C280600, // 0056 CALL R10 3
+ 0x7C240200, // 0057 CALL R9 1
+ 0x1C281325, // 0058 EQ R10 R9 K37
+ 0x782A0009, // 0059 JMPF R10 #0064
+ 0x60280008, // 005A GETGBL R10 G8
+ 0x5C2C0600, // 005B MOVE R11 R3
+ 0x7C280200, // 005C CALL R10 1
+ 0x602C0013, // 005D GETGBL R11 G19
+ 0x7C2C0000, // 005E CALL R11 0
+ 0x982E2326, // 005F SETIDX R11 K17 K38
+ 0x9808140B, // 0060 SETIDX R2 R10 R11
+ 0x000C0725, // 0061 ADD R3 R3 K37
+ 0x00100925, // 0062 ADD R4 R4 K37
+ 0x7002000A, // 0063 JMP #006F
+ 0x1C281309, // 0064 EQ R10 R9 K9
+ 0x782A0008, // 0065 JMPF R10 #006F
+ 0x60280008, // 0066 GETGBL R10 G8
+ 0x5C2C0600, // 0067 MOVE R11 R3
+ 0x7C280200, // 0068 CALL R10 1
+ 0x602C0013, // 0069 GETGBL R11 G19
+ 0x7C2C0000, // 006A CALL R11 0
+ 0x982E2327, // 006B SETIDX R11 K17 K39
+ 0x9808140B, // 006C SETIDX R2 R10 R11
+ 0x000C0725, // 006D ADD R3 R3 K37
+ 0x00100925, // 006E ADD R4 R4 K37
+ 0x70020003, // 006F JMP #0074
+ 0x54220003, // 0070 LDINT R8 4
+ 0x1C200E08, // 0071 EQ R8 R7 R8
+ 0x78220000, // 0072 JMPF R8 #0074
+ 0x7001FFFF, // 0073 JMP #0074
+ 0xB81E3800, // 0074 GETNGBL R7 K28
+ 0x8C1C0F29, // 0075 GETMET R7 R7 K41
+ 0x5824002A, // 0076 LDCONST R9 K42
+ 0x50280200, // 0077 LDBOOL R10 1 0
+ 0x7C1C0600, // 0078 CALL R7 3
+ 0x60200012, // 0079 GETGBL R8 G18
+ 0x7C200000, // 007A CALL R8 0
+ 0xB8260E00, // 007B GETNGBL R9 K7
+ 0x60280008, // 007C GETGBL R10 G8
+ 0x5C2C0E00, // 007D MOVE R11 R7
+ 0x7C280200, // 007E CALL R10 1
+ 0x002A560A, // 007F ADD R10 K43 R10
+ 0x582C0013, // 0080 LDCONST R11 K19
+ 0x7C240400, // 0081 CALL R9 2
+ 0x4C240000, // 0082 LDNIL R9
+ 0x20240E09, // 0083 NE R9 R7 R9
+ 0x7826004D, // 0084 JMPF R9 #00D3
+ 0x8C240F2C, // 0085 GETMET R9 R7 K44
+ 0x582C002D, // 0086 LDCONST R11 K45
+ 0x7C240400, // 0087 CALL R9 2
+ 0x78260049, // 0088 JMPF R9 #00D3
+ 0x941C0F2D, // 0089 GETIDX R7 R7 K45
+ 0x58240006, // 008A LDCONST R9 K6
+ 0x50280200, // 008B LDBOOL R10 1 0
+ 0x782A0045, // 008C JMPF R10 #00D3
+ 0x60280008, // 008D GETGBL R10 G8
+ 0x5C2C1200, // 008E MOVE R11 R9
+ 0x7C280200, // 008F CALL R10 1
+ 0x002A5C0A, // 0090 ADD R10 K46 R10
+ 0x8C2C0F2C, // 0091 GETMET R11 R7 K44
+ 0x5C341400, // 0092 MOVE R13 R10
+ 0x7C2C0400, // 0093 CALL R11 2
+ 0x742E0000, // 0094 JMPT R11 #0096
+ 0x7002003C, // 0095 JMP #00D3
+ 0x942C0E0A, // 0096 GETIDX R11 R7 R10
+ 0xB8320E00, // 0097 GETNGBL R12 K7
+ 0x60340018, // 0098 GETGBL R13 G24
+ 0x5838002F, // 0099 LDCONST R14 K47
+ 0x5C3C1400, // 009A MOVE R15 R10
+ 0x60400008, // 009B GETGBL R16 G8
+ 0x5C441600, // 009C MOVE R17 R11
+ 0x7C400200, // 009D CALL R16 1
+ 0x7C340600, // 009E CALL R13 3
+ 0x58380013, // 009F LDCONST R14 K19
+ 0x7C300400, // 00A0 CALL R12 2
+ 0x8C301710, // 00A1 GETMET R12 R11 K16
+ 0x58380030, // 00A2 LDCONST R14 K48
+ 0x543DFFFE, // 00A3 LDINT R15 -1
+ 0x7C300600, // 00A4 CALL R12 3
+ 0x8C341710, // 00A5 GETMET R13 R11 K16
+ 0x583C0031, // 00A6 LDCONST R15 K49
+ 0x5441FFFE, // 00A7 LDINT R16 -1
+ 0x7C340600, // 00A8 CALL R13 3
+ 0x24381906, // 00A9 GT R14 R12 K6
+ 0x783A0002, // 00AA JMPF R14 #00AE
+ 0x8C381103, // 00AB GETMET R14 R8 K3
+ 0x04401925, // 00AC SUB R16 R12 K37
+ 0x7C380400, // 00AD CALL R14 2
+ 0x24381B06, // 00AE GT R14 R13 K6
+ 0x783A0002, // 00AF JMPF R14 #00B3
+ 0x8C381103, // 00B0 GETMET R14 R8 K3
+ 0x04401B25, // 00B1 SUB R16 R13 K37
+ 0x7C380400, // 00B2 CALL R14 2
+ 0xB83A0E00, // 00B3 GETNGBL R14 K7
+ 0x603C0018, // 00B4 GETGBL R15 G24
+ 0x58400032, // 00B5 LDCONST R16 K50
+ 0x5C441800, // 00B6 MOVE R17 R12
+ 0x5C481A00, // 00B7 MOVE R18 R13
+ 0x7C3C0600, // 00B8 CALL R15 3
+ 0x58400013, // 00B9 LDCONST R16 K19
+ 0x7C380400, // 00BA CALL R14 2
+ 0x8C381710, // 00BB GETMET R14 R11 K16
+ 0x58400033, // 00BC LDCONST R16 K51
+ 0x7C380400, // 00BD CALL R14 2
+ 0x783A0002, // 00BE JMPF R14 #00C2
+ 0x943C1D09, // 00BF GETIDX R15 R14 K9
+ 0x243C1F06, // 00C0 GT R15 R15 K6
+ 0x743E0000, // 00C1 JMPT R15 #00C3
+ 0x503C0001, // 00C2 LDBOOL R15 0 1
+ 0x503C0200, // 00C3 LDBOOL R15 1 0
+ 0x60400008, // 00C4 GETGBL R16 G8
+ 0x5C440600, // 00C5 MOVE R17 R3
+ 0x7C400200, // 00C6 CALL R16 1
+ 0x60440013, // 00C7 GETGBL R17 G19
+ 0x7C440000, // 00C8 CALL R17 0
+ 0x783E0001, // 00C9 JMPF R15 #00CC
+ 0x58480034, // 00CA LDCONST R18 K52
+ 0x70020000, // 00CB JMP #00CD
+ 0x58480035, // 00CC LDCONST R18 K53
+ 0x98462212, // 00CD SETIDX R17 K17 R18
+ 0x98466A09, // 00CE SETIDX R17 K53 R9
+ 0x98082011, // 00CF SETIDX R2 R16 R17
+ 0x000C0725, // 00D0 ADD R3 R3 K37
+ 0x00241325, // 00D1 ADD R9 R9 K37
+ 0x7001FFB7, // 00D2 JMP #008B
+ 0x6024000C, // 00D3 GETGBL R9 G12
+ 0xB82A3800, // 00D4 GETNGBL R10 K28
+ 0x8C281536, // 00D5 GETMET R10 R10 K54
+ 0x7C280200, // 00D6 CALL R10 1
+ 0x7C240200, // 00D7 CALL R9 1
+ 0x58280006, // 00D8 LDCONST R10 K6
+ 0x04241204, // 00D9 SUB R9 R9 R4
+ 0x142C1409, // 00DA LT R11 R10 R9
+ 0x782E0011, // 00DB JMPF R11 #00EE
+ 0x8C2C1110, // 00DC GETMET R11 R8 K16
+ 0x5C341400, // 00DD MOVE R13 R10
+ 0x7C2C0400, // 00DE CALL R11 2
+ 0x4C300000, // 00DF LDNIL R12
+ 0x1C2C160C, // 00E0 EQ R11 R11 R12
+ 0x782E0009, // 00E1 JMPF R11 #00EC
+ 0x602C0008, // 00E2 GETGBL R11 G8
+ 0x5C300600, // 00E3 MOVE R12 R3
+ 0x7C2C0200, // 00E4 CALL R11 1
+ 0x60300013, // 00E5 GETGBL R12 G19
+ 0x7C300000, // 00E6 CALL R12 0
+ 0x98322337, // 00E7 SETIDX R12 K17 K55
+ 0x00341525, // 00E8 ADD R13 R10 K37
+ 0x98326E0D, // 00E9 SETIDX R12 K55 R13
+ 0x9808160C, // 00EA SETIDX R2 R11 R12
+ 0x000C0725, // 00EB ADD R3 R3 K37
+ 0x00281525, // 00EC ADD R10 R10 K37
+ 0x7001FFEB, // 00ED JMP #00DA
+ 0x8C2C0338, // 00EE GETMET R11 R1 K56
+ 0xB8363800, // 00EF GETNGBL R13 K28
+ 0x8C341B39, // 00F0 GETMET R13 R13 K57
+ 0x7C340200, // 00F1 CALL R13 1
+ 0x7C2C0400, // 00F2 CALL R11 2
+ 0x8C30013A, // 00F3 GETMET R12 R0 K58
+ 0x5C381600, // 00F4 MOVE R14 R11
+ 0x7C300400, // 00F5 CALL R12 2
+ 0x60340010, // 00F6 GETGBL R13 G16
+ 0x5C381800, // 00F7 MOVE R14 R12
+ 0x7C340200, // 00F8 CALL R13 1
+ 0xA8020007, // 00F9 EXBLK 0 #0102
+ 0x5C381A00, // 00FA MOVE R14 R13
+ 0x7C380000, // 00FB CALL R14 0
+ 0x603C0008, // 00FC GETGBL R15 G8
+ 0x5C400600, // 00FD MOVE R16 R3
+ 0x7C3C0200, // 00FE CALL R15 1
+ 0x98081E0E, // 00FF SETIDX R2 R15 R14
+ 0x000C0725, // 0100 ADD R3 R3 K37
+ 0x7001FFF7, // 0101 JMP #00FA
+ 0x5834001B, // 0102 LDCONST R13 K27
+ 0xAC340200, // 0103 CATCH R13 1 0
+ 0xB0080000, // 0104 RAISE 2 R0 R0
+ 0x80040400, // 0105 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_Autoconf_init, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Autoconf, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x80000000, // 0001 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: autoconf_sensors_list
+********************************************************************/
+be_local_closure(class_Matter_Autoconf_autoconf_sensors_list, /* name */
+ be_nested_proto(
+ 11, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Autoconf, /* shared constants */
+ be_str_weak(autoconf_sensors_list),
+ &be_const_str_solidified,
+ ( &(const binstruction[121]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8808053B, // 0001 GETMBR R2 R2 K59
+ 0x600C0012, // 0002 GETGBL R3 G18
+ 0x7C0C0000, // 0003 CALL R3 0
+ 0x60100010, // 0004 GETGBL R4 G16
+ 0x5C140400, // 0005 MOVE R5 R2
+ 0x5C180200, // 0006 MOVE R6 R1
+ 0x7C140200, // 0007 CALL R5 1
+ 0x7C100200, // 0008 CALL R4 1
+ 0xA8020013, // 0009 EXBLK 0 #001E
+ 0x5C140800, // 000A MOVE R5 R4
+ 0x7C140000, // 000B CALL R5 0
+ 0x94180205, // 000C GETIDX R6 R1 R5
+ 0x601C000F, // 000D GETGBL R7 G15
+ 0x5C200C00, // 000E MOVE R8 R6
+ 0x60240013, // 000F GETGBL R9 G19
+ 0x7C1C0400, // 0010 CALL R7 2
+ 0x781E000A, // 0011 JMPF R7 #001D
+ 0x8C1C0D2C, // 0012 GETMET R7 R6 K44
+ 0x5824003C, // 0013 LDCONST R9 K60
+ 0x7C1C0400, // 0014 CALL R7 2
+ 0x781E0006, // 0015 JMPF R7 #001D
+ 0x001C0B3D, // 0016 ADD R7 R5 K61
+ 0x8C200703, // 0017 GETMET R8 R3 K3
+ 0x60280013, // 0018 GETGBL R10 G19
+ 0x7C280000, // 0019 CALL R10 0
+ 0x982A233E, // 001A SETIDX R10 K17 K62
+ 0x982A7E07, // 001B SETIDX R10 K63 R7
+ 0x7C200400, // 001C CALL R8 2
+ 0x7001FFEB, // 001D JMP #000A
+ 0x5810001B, // 001E LDCONST R4 K27
+ 0xAC100200, // 001F CATCH R4 1 0
+ 0xB0080000, // 0020 RAISE 2 R0 R0
+ 0x60100010, // 0021 GETGBL R4 G16
+ 0x5C140400, // 0022 MOVE R5 R2
+ 0x5C180200, // 0023 MOVE R6 R1
+ 0x7C140200, // 0024 CALL R5 1
+ 0x7C100200, // 0025 CALL R4 1
+ 0xA8020013, // 0026 EXBLK 0 #003B
+ 0x5C140800, // 0027 MOVE R5 R4
+ 0x7C140000, // 0028 CALL R5 0
+ 0x94180205, // 0029 GETIDX R6 R1 R5
+ 0x601C000F, // 002A GETGBL R7 G15
+ 0x5C200C00, // 002B MOVE R8 R6
+ 0x60240013, // 002C GETGBL R9 G19
+ 0x7C1C0400, // 002D CALL R7 2
+ 0x781E000A, // 002E JMPF R7 #003A
+ 0x8C1C0D2C, // 002F GETMET R7 R6 K44
+ 0x58240040, // 0030 LDCONST R9 K64
+ 0x7C1C0400, // 0031 CALL R7 2
+ 0x781E0006, // 0032 JMPF R7 #003A
+ 0x001C0B41, // 0033 ADD R7 R5 K65
+ 0x8C200703, // 0034 GETMET R8 R3 K3
+ 0x60280013, // 0035 GETGBL R10 G19
+ 0x7C280000, // 0036 CALL R10 0
+ 0x982A2342, // 0037 SETIDX R10 K17 K66
+ 0x982A7E07, // 0038 SETIDX R10 K63 R7
+ 0x7C200400, // 0039 CALL R8 2
+ 0x7001FFEB, // 003A JMP #0027
+ 0x5810001B, // 003B LDCONST R4 K27
+ 0xAC100200, // 003C CATCH R4 1 0
+ 0xB0080000, // 003D RAISE 2 R0 R0
+ 0x60100010, // 003E GETGBL R4 G16
+ 0x5C140400, // 003F MOVE R5 R2
+ 0x5C180200, // 0040 MOVE R6 R1
+ 0x7C140200, // 0041 CALL R5 1
+ 0x7C100200, // 0042 CALL R4 1
+ 0xA8020013, // 0043 EXBLK 0 #0058
+ 0x5C140800, // 0044 MOVE R5 R4
+ 0x7C140000, // 0045 CALL R5 0
+ 0x94180205, // 0046 GETIDX R6 R1 R5
+ 0x601C000F, // 0047 GETGBL R7 G15
+ 0x5C200C00, // 0048 MOVE R8 R6
+ 0x60240013, // 0049 GETGBL R9 G19
+ 0x7C1C0400, // 004A CALL R7 2
+ 0x781E000A, // 004B JMPF R7 #0057
+ 0x8C1C0D2C, // 004C GETMET R7 R6 K44
+ 0x58240043, // 004D LDCONST R9 K67
+ 0x7C1C0400, // 004E CALL R7 2
+ 0x781E0006, // 004F JMPF R7 #0057
+ 0x001C0B44, // 0050 ADD R7 R5 K68
+ 0x8C200703, // 0051 GETMET R8 R3 K3
+ 0x60280013, // 0052 GETGBL R10 G19
+ 0x7C280000, // 0053 CALL R10 0
+ 0x982A2345, // 0054 SETIDX R10 K17 K69
+ 0x982A7E07, // 0055 SETIDX R10 K63 R7
+ 0x7C200400, // 0056 CALL R8 2
+ 0x7001FFEB, // 0057 JMP #0044
+ 0x5810001B, // 0058 LDCONST R4 K27
+ 0xAC100200, // 0059 CATCH R4 1 0
+ 0xB0080000, // 005A RAISE 2 R0 R0
+ 0x60100010, // 005B GETGBL R4 G16
+ 0x5C140400, // 005C MOVE R5 R2
+ 0x5C180200, // 005D MOVE R6 R1
+ 0x7C140200, // 005E CALL R5 1
+ 0x7C100200, // 005F CALL R4 1
+ 0xA8020013, // 0060 EXBLK 0 #0075
+ 0x5C140800, // 0061 MOVE R5 R4
+ 0x7C140000, // 0062 CALL R5 0
+ 0x94180205, // 0063 GETIDX R6 R1 R5
+ 0x601C000F, // 0064 GETGBL R7 G15
+ 0x5C200C00, // 0065 MOVE R8 R6
+ 0x60240013, // 0066 GETGBL R9 G19
+ 0x7C1C0400, // 0067 CALL R7 2
+ 0x781E000A, // 0068 JMPF R7 #0074
+ 0x8C1C0D2C, // 0069 GETMET R7 R6 K44
+ 0x58240046, // 006A LDCONST R9 K70
+ 0x7C1C0400, // 006B CALL R7 2
+ 0x781E0006, // 006C JMPF R7 #0074
+ 0x001C0B47, // 006D ADD R7 R5 K71
+ 0x8C200703, // 006E GETMET R8 R3 K3
+ 0x60280013, // 006F GETGBL R10 G19
+ 0x7C280000, // 0070 CALL R10 0
+ 0x982A2348, // 0071 SETIDX R10 K17 K72
+ 0x982A7E07, // 0072 SETIDX R10 K63 R7
+ 0x7C200400, // 0073 CALL R8 2
+ 0x7001FFEB, // 0074 JMP #0061
+ 0x5810001B, // 0075 LDCONST R4 K27
+ 0xAC100200, // 0076 CATCH R4 1 0
+ 0xB0080000, // 0077 RAISE 2 R0 R0
+ 0x80040600, // 0078 RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Autoconf
+********************************************************************/
+be_local_class(Matter_Autoconf,
+ 1,
+ NULL,
+ be_nested_map(5,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(instantiate_plugins_from_config, 3), be_const_closure(class_Matter_Autoconf_instantiate_plugins_from_config_closure) },
+ { be_const_key_weak(device, -1), be_const_var(0) },
+ { be_const_key_weak(autoconf_device_map, -1), be_const_closure(class_Matter_Autoconf_autoconf_device_map_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(class_Matter_Autoconf_init_closure) },
+ { be_const_key_weak(autoconf_sensors_list, -1), be_const_closure(class_Matter_Autoconf_autoconf_sensors_list_closure) },
+ })),
+ be_str_weak(Matter_Autoconf)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_z_Commissioning.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_z_Commissioning.h
new file mode 100644
index 000000000..7c5ea0da7
--- /dev/null
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_z_Commissioning.h
@@ -0,0 +1,1973 @@
+/* Solidification of Matter_z_Commissioning.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+// compact class 'Matter_Commissioning' ktab size: 132, total: 274 (saved 1136 bytes)
+static const bvalue be_ktab_class_Matter_Commissioning[132] = {
+ /* K0 */ be_nested_str_weak(device),
+ /* K1 */ be_nested_str_weak(sessions),
+ /* K2 */ be_nested_str_weak(active_fabrics),
+ /* K3 */ be_nested_str_weak(get_device_id),
+ /* K4 */ be_nested_str_weak(get_fabric_id),
+ /* K5 */ be_nested_str_weak(mdns_remove_op_discovery),
+ /* K6 */ be_nested_str_weak(stop_iteration),
+ /* K7 */ be_nested_str_weak(is_root_commissioning_open),
+ /* K8 */ be_nested_str_weak(tasmota),
+ /* K9 */ be_nested_str_weak(publish_result),
+ /* K10 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A0_X7D_X7D),
+ /* K11 */ be_nested_str_weak(Matter),
+ /* K12 */ be_nested_str_weak(commissioning_open),
+ /* K13 */ be_nested_str_weak(mdns_remove_PASE),
+ /* K14 */ be_nested_str_weak(commissioning_iterations),
+ /* K15 */ be_nested_str_weak(commissioning_discriminator),
+ /* K16 */ be_nested_str_weak(commissioning_salt),
+ /* K17 */ be_nested_str_weak(commissioning_w0),
+ /* K18 */ be_nested_str_weak(commissioning_L),
+ /* K19 */ be_nested_str_weak(commissioning_admin_fabric),
+ /* K20 */ be_nested_str_weak(count_active_fabrics),
+ /* K21 */ be_const_int(0),
+ /* K22 */ be_nested_str_weak(start_root_basic_commissioning),
+ /* K23 */ be_nested_str_weak(resize),
+ /* K24 */ be_nested_str_weak(setbits),
+ /* K25 */ be_const_int(3),
+ /* K26 */ be_nested_str_weak(VENDOR_ID),
+ /* K27 */ be_nested_str_weak(PRODUCT_ID),
+ /* K28 */ be_nested_str_weak(root_discriminator),
+ /* K29 */ be_nested_str_weak(root_passcode),
+ /* K30 */ be_const_int(134217727),
+ /* K31 */ be_nested_str_weak(MT_X3A),
+ /* K32 */ be_nested_str_weak(matter),
+ /* K33 */ be_nested_str_weak(Base38),
+ /* K34 */ be_nested_str_weak(encode),
+ /* K35 */ be_nested_str_weak(mdns),
+ /* K36 */ be_nested_str_weak(mdns_pase_eth),
+ /* K37 */ be_nested_str_weak(log),
+ /* K38 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eremove_service_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X2C_X20_X25s_X29),
+ /* K39 */ be_nested_str_weak(_matterc),
+ /* K40 */ be_nested_str_weak(_udp),
+ /* K41 */ be_nested_str_weak(commissioning_instance_eth),
+ /* K42 */ be_nested_str_weak(hostname_eth),
+ /* K43 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27),
+ /* K44 */ be_nested_str_weak(eth),
+ /* K45 */ be_nested_str_weak(remove_service),
+ /* K46 */ be_nested_str_weak(mdns_pase_wifi),
+ /* K47 */ be_nested_str_weak(commissioning_instance_wifi),
+ /* K48 */ be_nested_str_weak(hostname_wifi),
+ /* K49 */ be_nested_str_weak(wifi),
+ /* K50 */ be_nested_str_weak(MTR_X3A_X20Exception),
+ /* K51 */ be_nested_str_weak(_X7C),
+ /* K52 */ be_const_int(2),
+ /* K53 */ be_nested_str_weak(_X251i_X2505i_X2504i),
+ /* K54 */ be_nested_str_weak(Verhoeff),
+ /* K55 */ be_nested_str_weak(checksum),
+ /* K56 */ be_nested_str_weak(copy),
+ /* K57 */ be_nested_str_weak(reverse),
+ /* K58 */ be_nested_str_weak(get_fabric_compressed),
+ /* K59 */ be_nested_str_weak(tohex),
+ /* K60 */ be_nested_str_weak(_X2D),
+ /* K61 */ be_nested_str_weak(find),
+ /* K62 */ be_nested_str_weak(up),
+ /* K63 */ be_nested_str_weak(_matter),
+ /* K64 */ be_nested_str_weak(_tcp),
+ /* K65 */ be_nested_str_weak(set_timer),
+ /* K66 */ be_nested_str_weak(crypto),
+ /* K67 */ be_nested_str_weak(stop_basic_commissioning),
+ /* K68 */ be_nested_str_weak(mdns_announce_op_discovery),
+ /* K69 */ be_nested_str_weak(string),
+ /* K70 */ be_nested_str_weak(start),
+ /* K71 */ be_nested_str_weak(replace),
+ /* K72 */ be_nested_str_weak(mac),
+ /* K73 */ be_nested_str_weak(_X3A),
+ /* K74 */ be_nested_str_weak(),
+ /* K75 */ be_nested_str_weak(ipv4only),
+ /* K76 */ be_nested_str_weak(contains),
+ /* K77 */ be_nested_str_weak(ip6local),
+ /* K78 */ be_nested_str_weak(add_hostname),
+ /* K79 */ be_nested_str_weak(ip),
+ /* K80 */ be_nested_str_weak(ip6),
+ /* K81 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eadd_hostname_X28_X25s_X2C_X20_X25s_X29),
+ /* K82 */ be_nested_str_weak(MTR_X3A_X20start_X20mDNS_X20on_X20_X25s_X20host_X20_X27_X25s_X2Elocal_X27),
+ /* K83 */ be_nested_str_weak(mdns_announce_op_discovery_all_fabrics),
+ /* K84 */ be_nested_str_weak(PASE_TIMEOUT),
+ /* K85 */ be_nested_str_weak(compute_manual_pairing_code),
+ /* K86 */ be_nested_str_weak(MTR_X3A_X20Manual_X20pairing_X20code_X3A_X20_X25s),
+ /* K87 */ be_nested_str_weak(compute_qrcode_content),
+ /* K88 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A1_X2C_X22PairingCode_X22_X3A_X22_X25s_X22_X2C_X22QRCode_X22_X3A_X22_X25s_X22_X7D_X7D),
+ /* K89 */ be_nested_str_weak(random),
+ /* K90 */ be_nested_str_weak(add),
+ /* K91 */ be_nested_str_weak(PBKDF2_HMAC_SHA256),
+ /* K92 */ be_nested_str_weak(derive),
+ /* K93 */ be_nested_str_weak(PBKDF_ITERATIONS),
+ /* K94 */ be_nested_str_weak(EC_P256),
+ /* K95 */ be_nested_str_weak(mod),
+ /* K96 */ be_nested_str_weak(public_key),
+ /* K97 */ be_nested_str_weak(start_basic_commissioning),
+ /* K98 */ be_nested_str_weak(get),
+ /* K99 */ be_const_int(99999998),
+ /* K100 */ be_nested_str_weak(PASSCODE_INVALID),
+ /* K101 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20),
+ /* K102 */ be_nested_str_weak(MTR_X3A_X20adding_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60),
+ /* K103 */ be_nested_str_weak(add_service),
+ /* K104 */ be_nested_str_weak(_I),
+ /* K105 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20),
+ /* K106 */ be_nested_str_weak(add_subtype),
+ /* K107 */ be_nested_str_weak(time_reached),
+ /* K108 */ be_nested_str_weak(VP),
+ /* K109 */ be_nested_str_weak(_X25s_X2B_X25s),
+ /* K110 */ be_nested_str_weak(D),
+ /* K111 */ be_nested_str_weak(CM),
+ /* K112 */ be_const_int(1),
+ /* K113 */ be_nested_str_weak(T),
+ /* K114 */ be_nested_str_weak(SII),
+ /* K115 */ be_nested_str_weak(SAI),
+ /* K116 */ be_nested_str_weak(MTR_X3A_X20announce_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60),
+ /* K117 */ be_nested_str_weak(_L),
+ /* K118 */ be_nested_str_weak(_S),
+ /* K119 */ be_nested_str_weak(_V),
+ /* K120 */ be_nested_str_weak(_CM1),
+ /* K121 */ be_nested_str_weak(MTR_X3A_X20starting_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60),
+ /* K122 */ be_nested_str_weak(millis),
+ /* K123 */ be_nested_str_weak(mdns_announce_PASE),
+ /* K124 */ be_nested_str_weak(add_rule),
+ /* K125 */ be_nested_str_weak(Wifi_X23Connected),
+ /* K126 */ be_nested_str_weak(Eth_X23Connected),
+ /* K127 */ be_nested_str_weak(_mdns_announce_hostname),
+ /* K128 */ be_nested_str_weak(matter_mdns_host),
+ /* K129 */ be_nested_str_weak(get_fabric),
+ /* K130 */ be_nested_str_weak(get_admin_vendor_name),
+ /* K131 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X20Commissioning_X20complete_X20for_X20Fabric_X20_X27_X25s_X27_X20_X28Vendor_X20_X25s_X29_X20_X2D_X2D_X2D),
+};
+
+
+extern const bclass be_class_Matter_Commissioning;
+
+/********************************************************************
+** Solidified function: mdns_remove_op_discovery_all_fabrics
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_mdns_remove_op_discovery_all_fabrics, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(mdns_remove_op_discovery_all_fabrics),
+ &be_const_str_solidified,
+ ( &(const binstruction[23]) { /* code */
+ 0x60040010, // 0000 GETGBL R1 G16
+ 0x88080100, // 0001 GETMBR R2 R0 K0
+ 0x88080501, // 0002 GETMBR R2 R2 K1
+ 0x8C080502, // 0003 GETMET R2 R2 K2
+ 0x7C080200, // 0004 CALL R2 1
+ 0x7C040200, // 0005 CALL R1 1
+ 0xA802000B, // 0006 EXBLK 0 #0013
+ 0x5C080200, // 0007 MOVE R2 R1
+ 0x7C080000, // 0008 CALL R2 0
+ 0x8C0C0503, // 0009 GETMET R3 R2 K3
+ 0x7C0C0200, // 000A CALL R3 1
+ 0x780E0005, // 000B JMPF R3 #0012
+ 0x8C0C0504, // 000C GETMET R3 R2 K4
+ 0x7C0C0200, // 000D CALL R3 1
+ 0x780E0002, // 000E JMPF R3 #0012
+ 0x8C0C0105, // 000F GETMET R3 R0 K5
+ 0x5C140400, // 0010 MOVE R5 R2
+ 0x7C0C0400, // 0011 CALL R3 2
+ 0x7001FFF3, // 0012 JMP #0007
+ 0x58040006, // 0013 LDCONST R1 K6
+ 0xAC040200, // 0014 CATCH R1 1 0
+ 0xB0080000, // 0015 RAISE 2 R0 R0
+ 0x80000000, // 0016 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: stop_basic_commissioning
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_stop_basic_commissioning, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(stop_basic_commissioning),
+ &be_const_str_solidified,
+ ( &(const binstruction[19]) { /* code */
+ 0x4C040000, // 0000 LDNIL R1
+ 0x8C080107, // 0001 GETMET R2 R0 K7
+ 0x7C080200, // 0002 CALL R2 1
+ 0x780A0004, // 0003 JMPF R2 #0009
+ 0xB80A1000, // 0004 GETNGBL R2 K8
+ 0x8C080509, // 0005 GETMET R2 R2 K9
+ 0x5810000A, // 0006 LDCONST R4 K10
+ 0x5814000B, // 0007 LDCONST R5 K11
+ 0x7C080600, // 0008 CALL R2 3
+ 0x90021801, // 0009 SETMBR R0 K12 R1
+ 0x8C08010D, // 000A GETMET R2 R0 K13
+ 0x7C080200, // 000B CALL R2 1
+ 0x90021C01, // 000C SETMBR R0 K14 R1
+ 0x90021E01, // 000D SETMBR R0 K15 R1
+ 0x90022001, // 000E SETMBR R0 K16 R1
+ 0x90022201, // 000F SETMBR R0 K17 R1
+ 0x90022401, // 0010 SETMBR R0 K18 R1
+ 0x90022601, // 0011 SETMBR R0 K19 R1
+ 0x80000000, // 0012 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init_basic_commissioning
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_init_basic_commissioning, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(init_basic_commissioning),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040301, // 0001 GETMBR R1 R1 K1
+ 0x8C040314, // 0002 GETMET R1 R1 K20
+ 0x7C040200, // 0003 CALL R1 1
+ 0x1C040315, // 0004 EQ R1 R1 K21
+ 0x78060001, // 0005 JMPF R1 #0008
+ 0x8C040116, // 0006 GETMET R1 R0 K22
+ 0x7C040200, // 0007 CALL R1 1
+ 0x80000000, // 0008 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: compute_qrcode_content
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_compute_qrcode_content, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(compute_qrcode_content),
+ &be_const_str_solidified,
+ ( &(const binstruction[44]) { /* code */
+ 0x60040015, // 0000 GETGBL R1 G21
+ 0x7C040000, // 0001 CALL R1 0
+ 0x8C040317, // 0002 GETMET R1 R1 K23
+ 0x540E000A, // 0003 LDINT R3 11
+ 0x7C040400, // 0004 CALL R1 2
+ 0x8C080318, // 0005 GETMET R2 R1 K24
+ 0x58100019, // 0006 LDCONST R4 K25
+ 0x5416000F, // 0007 LDINT R5 16
+ 0x88180100, // 0008 GETMBR R6 R0 K0
+ 0x88180D1A, // 0009 GETMBR R6 R6 K26
+ 0x7C080800, // 000A CALL R2 4
+ 0x8C080318, // 000B GETMET R2 R1 K24
+ 0x54120012, // 000C LDINT R4 19
+ 0x5416000F, // 000D LDINT R5 16
+ 0x88180100, // 000E GETMBR R6 R0 K0
+ 0x88180D1B, // 000F GETMBR R6 R6 K27
+ 0x7C080800, // 0010 CALL R2 4
+ 0x8C080318, // 0011 GETMET R2 R1 K24
+ 0x54120024, // 0012 LDINT R4 37
+ 0x54160007, // 0013 LDINT R5 8
+ 0x541A0003, // 0014 LDINT R6 4
+ 0x7C080800, // 0015 CALL R2 4
+ 0x8C080318, // 0016 GETMET R2 R1 K24
+ 0x5412002C, // 0017 LDINT R4 45
+ 0x5416000B, // 0018 LDINT R5 12
+ 0x88180100, // 0019 GETMBR R6 R0 K0
+ 0x88180D1C, // 001A GETMBR R6 R6 K28
+ 0x541E0FFE, // 001B LDINT R7 4095
+ 0x2C180C07, // 001C AND R6 R6 R7
+ 0x7C080800, // 001D CALL R2 4
+ 0x8C080318, // 001E GETMET R2 R1 K24
+ 0x54120038, // 001F LDINT R4 57
+ 0x5416001A, // 0020 LDINT R5 27
+ 0x88180100, // 0021 GETMBR R6 R0 K0
+ 0x88180D1D, // 0022 GETMBR R6 R6 K29
+ 0x2C180D1E, // 0023 AND R6 R6 K30
+ 0x7C080800, // 0024 CALL R2 4
+ 0xB80A4000, // 0025 GETNGBL R2 K32
+ 0x88080521, // 0026 GETMBR R2 R2 K33
+ 0x8C080522, // 0027 GETMET R2 R2 K34
+ 0x5C100200, // 0028 MOVE R4 R1
+ 0x7C080400, // 0029 CALL R2 2
+ 0x000A3E02, // 002A ADD R2 K31 R2
+ 0x80040400, // 002B RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: mdns_remove_PASE
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_mdns_remove_PASE, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(mdns_remove_PASE),
+ &be_const_str_solidified,
+ ( &(const binstruction[77]) { /* code */
+ 0xA4064600, // 0000 IMPORT R1 K35
+ 0xA8020039, // 0001 EXBLK 0 #003C
+ 0x88080124, // 0002 GETMBR R2 R0 K36
+ 0x780A0019, // 0003 JMPF R2 #001E
+ 0xB80A4A00, // 0004 GETNGBL R2 K37
+ 0x600C0018, // 0005 GETGBL R3 G24
+ 0x58100026, // 0006 LDCONST R4 K38
+ 0x58140027, // 0007 LDCONST R5 K39
+ 0x58180028, // 0008 LDCONST R6 K40
+ 0x881C0129, // 0009 GETMBR R7 R0 K41
+ 0x8820012A, // 000A GETMBR R8 R0 K42
+ 0x7C0C0A00, // 000B CALL R3 5
+ 0x58100019, // 000C LDCONST R4 K25
+ 0x7C080400, // 000D CALL R2 2
+ 0xB80A4A00, // 000E GETNGBL R2 K37
+ 0x600C0018, // 000F GETGBL R3 G24
+ 0x5810002B, // 0010 LDCONST R4 K43
+ 0x5814002C, // 0011 LDCONST R5 K44
+ 0x88180129, // 0012 GETMBR R6 R0 K41
+ 0x7C0C0600, // 0013 CALL R3 3
+ 0x58100019, // 0014 LDCONST R4 K25
+ 0x7C080400, // 0015 CALL R2 2
+ 0x50080000, // 0016 LDBOOL R2 0 0
+ 0x90024802, // 0017 SETMBR R0 K36 R2
+ 0x8C08032D, // 0018 GETMET R2 R1 K45
+ 0x58100027, // 0019 LDCONST R4 K39
+ 0x58140028, // 001A LDCONST R5 K40
+ 0x88180129, // 001B GETMBR R6 R0 K41
+ 0x881C012A, // 001C GETMBR R7 R0 K42
+ 0x7C080A00, // 001D CALL R2 5
+ 0x8808012E, // 001E GETMBR R2 R0 K46
+ 0x780A0019, // 001F JMPF R2 #003A
+ 0xB80A4A00, // 0020 GETNGBL R2 K37
+ 0x600C0018, // 0021 GETGBL R3 G24
+ 0x58100026, // 0022 LDCONST R4 K38
+ 0x58140027, // 0023 LDCONST R5 K39
+ 0x58180028, // 0024 LDCONST R6 K40
+ 0x881C012F, // 0025 GETMBR R7 R0 K47
+ 0x88200130, // 0026 GETMBR R8 R0 K48
+ 0x7C0C0A00, // 0027 CALL R3 5
+ 0x58100019, // 0028 LDCONST R4 K25
+ 0x7C080400, // 0029 CALL R2 2
+ 0xB80A4A00, // 002A GETNGBL R2 K37
+ 0x600C0018, // 002B GETGBL R3 G24
+ 0x5810002B, // 002C LDCONST R4 K43
+ 0x58140031, // 002D LDCONST R5 K49
+ 0x8818012F, // 002E GETMBR R6 R0 K47
+ 0x7C0C0600, // 002F CALL R3 3
+ 0x58100019, // 0030 LDCONST R4 K25
+ 0x7C080400, // 0031 CALL R2 2
+ 0x50080000, // 0032 LDBOOL R2 0 0
+ 0x90025C02, // 0033 SETMBR R0 K46 R2
+ 0x8C08032D, // 0034 GETMET R2 R1 K45
+ 0x58100027, // 0035 LDCONST R4 K39
+ 0x58140028, // 0036 LDCONST R5 K40
+ 0x8818012F, // 0037 GETMBR R6 R0 K47
+ 0x881C0130, // 0038 GETMBR R7 R0 K48
+ 0x7C080A00, // 0039 CALL R2 5
+ 0xA8040001, // 003A EXBLK 1 1
+ 0x7002000F, // 003B JMP #004C
+ 0xAC080002, // 003C CATCH R2 0 2
+ 0x7002000C, // 003D JMP #004B
+ 0xB8124A00, // 003E GETNGBL R4 K37
+ 0x60140008, // 003F GETGBL R5 G8
+ 0x5C180400, // 0040 MOVE R6 R2
+ 0x7C140200, // 0041 CALL R5 1
+ 0x00166405, // 0042 ADD R5 K50 R5
+ 0x00140B33, // 0043 ADD R5 R5 K51
+ 0x60180008, // 0044 GETGBL R6 G8
+ 0x5C1C0600, // 0045 MOVE R7 R3
+ 0x7C180200, // 0046 CALL R6 1
+ 0x00140A06, // 0047 ADD R5 R5 R6
+ 0x58180034, // 0048 LDCONST R6 K52
+ 0x7C100400, // 0049 CALL R4 2
+ 0x70020000, // 004A JMP #004C
+ 0xB0080000, // 004B RAISE 2 R0 R0
+ 0x80000000, // 004C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: compute_manual_pairing_code
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_compute_manual_pairing_code, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(compute_manual_pairing_code),
+ &be_const_str_solidified,
+ ( &(const binstruction[34]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804031C, // 0001 GETMBR R1 R1 K28
+ 0x540A0FFE, // 0002 LDINT R2 4095
+ 0x2C040202, // 0003 AND R1 R1 R2
+ 0x540A0009, // 0004 LDINT R2 10
+ 0x3C040202, // 0005 SHR R1 R1 R2
+ 0x88080100, // 0006 GETMBR R2 R0 K0
+ 0x8808051C, // 0007 GETMBR R2 R2 K28
+ 0x540E02FF, // 0008 LDINT R3 768
+ 0x2C080403, // 0009 AND R2 R2 R3
+ 0x540E0005, // 000A LDINT R3 6
+ 0x38080403, // 000B SHL R2 R2 R3
+ 0x880C0100, // 000C GETMBR R3 R0 K0
+ 0x880C071D, // 000D GETMBR R3 R3 K29
+ 0x54123FFE, // 000E LDINT R4 16383
+ 0x2C0C0604, // 000F AND R3 R3 R4
+ 0x30080403, // 0010 OR R2 R2 R3
+ 0x880C0100, // 0011 GETMBR R3 R0 K0
+ 0x880C071D, // 0012 GETMBR R3 R3 K29
+ 0x5412000D, // 0013 LDINT R4 14
+ 0x3C0C0604, // 0014 SHR R3 R3 R4
+ 0x60100018, // 0015 GETGBL R4 G24
+ 0x58140035, // 0016 LDCONST R5 K53
+ 0x5C180200, // 0017 MOVE R6 R1
+ 0x5C1C0400, // 0018 MOVE R7 R2
+ 0x5C200600, // 0019 MOVE R8 R3
+ 0x7C100800, // 001A CALL R4 4
+ 0xB8164000, // 001B GETNGBL R5 K32
+ 0x88140B36, // 001C GETMBR R5 R5 K54
+ 0x8C140B37, // 001D GETMET R5 R5 K55
+ 0x5C1C0800, // 001E MOVE R7 R4
+ 0x7C140400, // 001F CALL R5 2
+ 0x00100805, // 0020 ADD R4 R4 R5
+ 0x80040800, // 0021 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_init, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x80000000, // 0001 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: mdns_remove_op_discovery
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_mdns_remove_op_discovery, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(mdns_remove_op_discovery),
+ &be_const_str_solidified,
+ ( &(const binstruction[77]) { /* code */
+ 0xA40A4600, // 0000 IMPORT R2 K35
+ 0xA8020039, // 0001 EXBLK 0 #003C
+ 0x8C0C0303, // 0002 GETMET R3 R1 K3
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x8C0C0738, // 0004 GETMET R3 R3 K56
+ 0x7C0C0200, // 0005 CALL R3 1
+ 0x8C0C0739, // 0006 GETMET R3 R3 K57
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0x8C10033A, // 0008 GETMET R4 R1 K58
+ 0x7C100200, // 0009 CALL R4 1
+ 0x8C14093B, // 000A GETMET R5 R4 K59
+ 0x7C140200, // 000B CALL R5 1
+ 0x00140B3C, // 000C ADD R5 R5 K60
+ 0x8C18073B, // 000D GETMET R6 R3 K59
+ 0x7C180200, // 000E CALL R6 1
+ 0x00140A06, // 000F ADD R5 R5 R6
+ 0xB81A1000, // 0010 GETNGBL R6 K8
+ 0x8C180D2C, // 0011 GETMET R6 R6 K44
+ 0x7C180200, // 0012 CALL R6 1
+ 0x8C180D3D, // 0013 GETMET R6 R6 K61
+ 0x5820003E, // 0014 LDCONST R8 K62
+ 0x7C180400, // 0015 CALL R6 2
+ 0x781A000D, // 0016 JMPF R6 #0025
+ 0xB81A4A00, // 0017 GETNGBL R6 K37
+ 0x601C0018, // 0018 GETGBL R7 G24
+ 0x5820002B, // 0019 LDCONST R8 K43
+ 0x5824002C, // 001A LDCONST R9 K44
+ 0x5C280A00, // 001B MOVE R10 R5
+ 0x7C1C0600, // 001C CALL R7 3
+ 0x58200019, // 001D LDCONST R8 K25
+ 0x7C180400, // 001E CALL R6 2
+ 0x8C18052D, // 001F GETMET R6 R2 K45
+ 0x5820003F, // 0020 LDCONST R8 K63
+ 0x58240040, // 0021 LDCONST R9 K64
+ 0x5C280A00, // 0022 MOVE R10 R5
+ 0x882C012A, // 0023 GETMBR R11 R0 K42
+ 0x7C180A00, // 0024 CALL R6 5
+ 0xB81A1000, // 0025 GETNGBL R6 K8
+ 0x8C180D31, // 0026 GETMET R6 R6 K49
+ 0x7C180200, // 0027 CALL R6 1
+ 0x8C180D3D, // 0028 GETMET R6 R6 K61
+ 0x5820003E, // 0029 LDCONST R8 K62
+ 0x7C180400, // 002A CALL R6 2
+ 0x781A000D, // 002B JMPF R6 #003A
+ 0xB81A4A00, // 002C GETNGBL R6 K37
+ 0x601C0018, // 002D GETGBL R7 G24
+ 0x5820002B, // 002E LDCONST R8 K43
+ 0x58240031, // 002F LDCONST R9 K49
+ 0x5C280A00, // 0030 MOVE R10 R5
+ 0x7C1C0600, // 0031 CALL R7 3
+ 0x58200019, // 0032 LDCONST R8 K25
+ 0x7C180400, // 0033 CALL R6 2
+ 0x8C18052D, // 0034 GETMET R6 R2 K45
+ 0x5820003F, // 0035 LDCONST R8 K63
+ 0x58240040, // 0036 LDCONST R9 K64
+ 0x5C280A00, // 0037 MOVE R10 R5
+ 0x882C0130, // 0038 GETMBR R11 R0 K48
+ 0x7C180A00, // 0039 CALL R6 5
+ 0xA8040001, // 003A EXBLK 1 1
+ 0x7002000F, // 003B JMP #004C
+ 0xAC0C0002, // 003C CATCH R3 0 2
+ 0x7002000C, // 003D JMP #004B
+ 0xB8164A00, // 003E GETNGBL R5 K37
+ 0x60180008, // 003F GETGBL R6 G8
+ 0x5C1C0600, // 0040 MOVE R7 R3
+ 0x7C180200, // 0041 CALL R6 1
+ 0x001A6406, // 0042 ADD R6 K50 R6
+ 0x00180D33, // 0043 ADD R6 R6 K51
+ 0x601C0008, // 0044 GETGBL R7 G8
+ 0x5C200800, // 0045 MOVE R8 R4
+ 0x7C1C0200, // 0046 CALL R7 1
+ 0x00180C07, // 0047 ADD R6 R6 R7
+ 0x581C0034, // 0048 LDCONST R7 K52
+ 0x7C140400, // 0049 CALL R5 2
+ 0x70020000, // 004A JMP #004C
+ 0xB0080000, // 004B RAISE 2 R0 R0
+ 0x80000000, // 004C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start_operational_discovery_deferred
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_start_operational_discovery_deferred, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 1]) {
+ be_nested_proto(
+ 3, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 2]) { /* upvals */
+ be_local_const_upval(1, 0),
+ be_local_const_upval(1, 1),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(start_operational_discovery),
+ }),
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x68080001, // 0002 GETUPV R2 U1
+ 0x7C000400, // 0003 CALL R0 2
+ 0x80040000, // 0004 RET 1 R0
+ })
+ ),
+ }),
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(start_operational_discovery_deferred),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0xB80A1000, // 0000 GETNGBL R2 K8
+ 0x8C080541, // 0001 GETMET R2 R2 K65
+ 0x58100015, // 0002 LDCONST R4 K21
+ 0x84140000, // 0003 CLOSURE R5 P0
+ 0x7C080600, // 0004 CALL R2 3
+ 0xA0000000, // 0005 CLOSE R0
+ 0x80000000, // 0006 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start_operational_discovery
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_start_operational_discovery, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(start_operational_discovery),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 8]) { /* code */
+ 0xA40A8400, // 0000 IMPORT R2 K66
+ 0xA40E4600, // 0001 IMPORT R3 K35
+ 0x8C100143, // 0002 GETMET R4 R0 K67
+ 0x7C100200, // 0003 CALL R4 1
+ 0x8C100144, // 0004 GETMET R4 R0 K68
+ 0x5C180200, // 0005 MOVE R6 R1
+ 0x7C100400, // 0006 CALL R4 2
+ 0x80000000, // 0007 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: _mdns_announce_hostname
+********************************************************************/
+be_local_closure(class_Matter_Commissioning__mdns_announce_hostname, /* name */
+ be_nested_proto(
+ 14, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(_mdns_announce_hostname),
+ &be_const_str_solidified,
+ ( &(const binstruction[146]) { /* code */
+ 0xA40A4600, // 0000 IMPORT R2 K35
+ 0xA40E8A00, // 0001 IMPORT R3 K69
+ 0x8C100546, // 0002 GETMET R4 R2 K70
+ 0x7C100200, // 0003 CALL R4 1
+ 0xA8020079, // 0004 EXBLK 0 #007F
+ 0x78060034, // 0005 JMPF R1 #003B
+ 0xB8121000, // 0006 GETNGBL R4 K8
+ 0x8C10092C, // 0007 GETMET R4 R4 K44
+ 0x7C100200, // 0008 CALL R4 1
+ 0x8C140747, // 0009 GETMET R5 R3 K71
+ 0x8C1C093D, // 000A GETMET R7 R4 K61
+ 0x58240048, // 000B LDCONST R9 K72
+ 0x7C1C0400, // 000C CALL R7 2
+ 0x58200049, // 000D LDCONST R8 K73
+ 0x5824004A, // 000E LDCONST R9 K74
+ 0x7C140800, // 000F CALL R5 4
+ 0x90025405, // 0010 SETMBR R0 K42 R5
+ 0x88140100, // 0011 GETMBR R5 R0 K0
+ 0x88140B4B, // 0012 GETMBR R5 R5 K75
+ 0x78160003, // 0013 JMPF R5 #0018
+ 0x8C14094C, // 0014 GETMET R5 R4 K76
+ 0x581C004D, // 0015 LDCONST R7 K77
+ 0x7C140400, // 0016 CALL R5 2
+ 0x7416000F, // 0017 JMPT R5 #0028
+ 0x8C14054E, // 0018 GETMET R5 R2 K78
+ 0x881C012A, // 0019 GETMBR R7 R0 K42
+ 0x8C20093D, // 001A GETMET R8 R4 K61
+ 0x5828004D, // 001B LDCONST R10 K77
+ 0x582C004A, // 001C LDCONST R11 K74
+ 0x7C200600, // 001D CALL R8 3
+ 0x8C24093D, // 001E GETMET R9 R4 K61
+ 0x582C004F, // 001F LDCONST R11 K79
+ 0x5830004A, // 0020 LDCONST R12 K74
+ 0x7C240600, // 0021 CALL R9 3
+ 0x8C28093D, // 0022 GETMET R10 R4 K61
+ 0x58300050, // 0023 LDCONST R12 K80
+ 0x5834004A, // 0024 LDCONST R13 K74
+ 0x7C280600, // 0025 CALL R10 3
+ 0x7C140A00, // 0026 CALL R5 5
+ 0x70020011, // 0027 JMP #003A
+ 0xB8164A00, // 0028 GETNGBL R5 K37
+ 0x60180018, // 0029 GETGBL R6 G24
+ 0x581C0051, // 002A LDCONST R7 K81
+ 0x8820012A, // 002B GETMBR R8 R0 K42
+ 0x8C24093D, // 002C GETMET R9 R4 K61
+ 0x582C004F, // 002D LDCONST R11 K79
+ 0x5830004A, // 002E LDCONST R12 K74
+ 0x7C240600, // 002F CALL R9 3
+ 0x7C180600, // 0030 CALL R6 3
+ 0x581C0019, // 0031 LDCONST R7 K25
+ 0x7C140400, // 0032 CALL R5 2
+ 0x8C14054E, // 0033 GETMET R5 R2 K78
+ 0x881C012A, // 0034 GETMBR R7 R0 K42
+ 0x8C20093D, // 0035 GETMET R8 R4 K61
+ 0x5828004F, // 0036 LDCONST R10 K79
+ 0x582C004A, // 0037 LDCONST R11 K74
+ 0x7C200600, // 0038 CALL R8 3
+ 0x7C140600, // 0039 CALL R5 3
+ 0x70020033, // 003A JMP #006F
+ 0xB8121000, // 003B GETNGBL R4 K8
+ 0x8C100931, // 003C GETMET R4 R4 K49
+ 0x7C100200, // 003D CALL R4 1
+ 0x8C140747, // 003E GETMET R5 R3 K71
+ 0x8C1C093D, // 003F GETMET R7 R4 K61
+ 0x58240048, // 0040 LDCONST R9 K72
+ 0x7C1C0400, // 0041 CALL R7 2
+ 0x58200049, // 0042 LDCONST R8 K73
+ 0x5824004A, // 0043 LDCONST R9 K74
+ 0x7C140800, // 0044 CALL R5 4
+ 0x90026005, // 0045 SETMBR R0 K48 R5
+ 0x88140100, // 0046 GETMBR R5 R0 K0
+ 0x88140B4B, // 0047 GETMBR R5 R5 K75
+ 0x78160003, // 0048 JMPF R5 #004D
+ 0x8C14094C, // 0049 GETMET R5 R4 K76
+ 0x581C004D, // 004A LDCONST R7 K77
+ 0x7C140400, // 004B CALL R5 2
+ 0x7416000F, // 004C JMPT R5 #005D
+ 0x8C14054E, // 004D GETMET R5 R2 K78
+ 0x881C0130, // 004E GETMBR R7 R0 K48
+ 0x8C20093D, // 004F GETMET R8 R4 K61
+ 0x5828004D, // 0050 LDCONST R10 K77
+ 0x582C004A, // 0051 LDCONST R11 K74
+ 0x7C200600, // 0052 CALL R8 3
+ 0x8C24093D, // 0053 GETMET R9 R4 K61
+ 0x582C004F, // 0054 LDCONST R11 K79
+ 0x5830004A, // 0055 LDCONST R12 K74
+ 0x7C240600, // 0056 CALL R9 3
+ 0x8C28093D, // 0057 GETMET R10 R4 K61
+ 0x58300050, // 0058 LDCONST R12 K80
+ 0x5834004A, // 0059 LDCONST R13 K74
+ 0x7C280600, // 005A CALL R10 3
+ 0x7C140A00, // 005B CALL R5 5
+ 0x70020011, // 005C JMP #006F
+ 0xB8164A00, // 005D GETNGBL R5 K37
+ 0x60180018, // 005E GETGBL R6 G24
+ 0x581C0051, // 005F LDCONST R7 K81
+ 0x88200130, // 0060 GETMBR R8 R0 K48
+ 0x8C24093D, // 0061 GETMET R9 R4 K61
+ 0x582C004F, // 0062 LDCONST R11 K79
+ 0x5830004A, // 0063 LDCONST R12 K74
+ 0x7C240600, // 0064 CALL R9 3
+ 0x7C180600, // 0065 CALL R6 3
+ 0x581C0019, // 0066 LDCONST R7 K25
+ 0x7C140400, // 0067 CALL R5 2
+ 0x8C14054E, // 0068 GETMET R5 R2 K78
+ 0x881C0130, // 0069 GETMBR R7 R0 K48
+ 0x8C20093D, // 006A GETMET R8 R4 K61
+ 0x5828004F, // 006B LDCONST R10 K79
+ 0x582C004A, // 006C LDCONST R11 K74
+ 0x7C200600, // 006D CALL R8 3
+ 0x7C140600, // 006E CALL R5 3
+ 0xB8124A00, // 006F GETNGBL R4 K37
+ 0x60140018, // 0070 GETGBL R5 G24
+ 0x58180052, // 0071 LDCONST R6 K82
+ 0x78060001, // 0072 JMPF R1 #0075
+ 0x581C002C, // 0073 LDCONST R7 K44
+ 0x70020000, // 0074 JMP #0076
+ 0x581C0031, // 0075 LDCONST R7 K49
+ 0x78060001, // 0076 JMPF R1 #0079
+ 0x8820012A, // 0077 GETMBR R8 R0 K42
+ 0x70020000, // 0078 JMP #007A
+ 0x88200130, // 0079 GETMBR R8 R0 K48
+ 0x7C140600, // 007A CALL R5 3
+ 0x58180019, // 007B LDCONST R6 K25
+ 0x7C100400, // 007C CALL R4 2
+ 0xA8040001, // 007D EXBLK 1 1
+ 0x7002000F, // 007E JMP #008F
+ 0xAC100002, // 007F CATCH R4 0 2
+ 0x7002000C, // 0080 JMP #008E
+ 0xB81A4A00, // 0081 GETNGBL R6 K37
+ 0x601C0008, // 0082 GETGBL R7 G8
+ 0x5C200800, // 0083 MOVE R8 R4
+ 0x7C1C0200, // 0084 CALL R7 1
+ 0x001E6407, // 0085 ADD R7 K50 R7
+ 0x001C0F33, // 0086 ADD R7 R7 K51
+ 0x60200008, // 0087 GETGBL R8 G8
+ 0x5C240A00, // 0088 MOVE R9 R5
+ 0x7C200200, // 0089 CALL R8 1
+ 0x001C0E08, // 008A ADD R7 R7 R8
+ 0x58200034, // 008B LDCONST R8 K52
+ 0x7C180400, // 008C CALL R6 2
+ 0x70020000, // 008D JMP #008F
+ 0xB0080000, // 008E RAISE 2 R0 R0
+ 0x8C100153, // 008F GETMET R4 R0 K83
+ 0x7C100200, // 0090 CALL R4 1
+ 0x80000000, // 0091 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: mdns_announce_op_discovery_all_fabrics
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_mdns_announce_op_discovery_all_fabrics, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(mdns_announce_op_discovery_all_fabrics),
+ &be_const_str_solidified,
+ ( &(const binstruction[23]) { /* code */
+ 0x60040010, // 0000 GETGBL R1 G16
+ 0x88080100, // 0001 GETMBR R2 R0 K0
+ 0x88080501, // 0002 GETMBR R2 R2 K1
+ 0x8C080502, // 0003 GETMET R2 R2 K2
+ 0x7C080200, // 0004 CALL R2 1
+ 0x7C040200, // 0005 CALL R1 1
+ 0xA802000B, // 0006 EXBLK 0 #0013
+ 0x5C080200, // 0007 MOVE R2 R1
+ 0x7C080000, // 0008 CALL R2 0
+ 0x8C0C0503, // 0009 GETMET R3 R2 K3
+ 0x7C0C0200, // 000A CALL R3 1
+ 0x780E0005, // 000B JMPF R3 #0012
+ 0x8C0C0504, // 000C GETMET R3 R2 K4
+ 0x7C0C0200, // 000D CALL R3 1
+ 0x780E0002, // 000E JMPF R3 #0012
+ 0x8C0C0144, // 000F GETMET R3 R0 K68
+ 0x5C140400, // 0010 MOVE R5 R2
+ 0x7C0C0400, // 0011 CALL R3 2
+ 0x7001FFF3, // 0012 JMP #0007
+ 0x58040006, // 0013 LDCONST R1 K6
+ 0xAC040200, // 0014 CATCH R1 1 0
+ 0xB0080000, // 0015 RAISE 2 R0 R0
+ 0x80000000, // 0016 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start_root_basic_commissioning
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_start_root_basic_commissioning, /* name */
+ be_nested_proto(
+ 22, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(start_root_basic_commissioning),
+ &be_const_str_solidified,
+ ( &(const binstruction[76]) { /* code */
+ 0x4C080000, // 0000 LDNIL R2
+ 0x1C080202, // 0001 EQ R2 R1 R2
+ 0x780A0000, // 0002 JMPF R2 #0004
+ 0x88040154, // 0003 GETMBR R1 R0 K84
+ 0x8C080155, // 0004 GETMET R2 R0 K85
+ 0x7C080200, // 0005 CALL R2 1
+ 0xB80E4A00, // 0006 GETNGBL R3 K37
+ 0x60100018, // 0007 GETGBL R4 G24
+ 0x58140056, // 0008 LDCONST R5 K86
+ 0x5C180400, // 0009 MOVE R6 R2
+ 0x7C100400, // 000A CALL R4 2
+ 0x58140034, // 000B LDCONST R5 K52
+ 0x7C0C0400, // 000C CALL R3 2
+ 0x8C0C0157, // 000D GETMET R3 R0 K87
+ 0x7C0C0200, // 000E CALL R3 1
+ 0xB8121000, // 000F GETNGBL R4 K8
+ 0x8C100909, // 0010 GETMET R4 R4 K9
+ 0x60180018, // 0011 GETGBL R6 G24
+ 0x581C0058, // 0012 LDCONST R7 K88
+ 0x5C200400, // 0013 MOVE R8 R2
+ 0x5C240600, // 0014 MOVE R9 R3
+ 0x7C180600, // 0015 CALL R6 3
+ 0x581C000B, // 0016 LDCONST R7 K11
+ 0x7C100600, // 0017 CALL R4 3
+ 0xA4128400, // 0018 IMPORT R4 K66
+ 0x8C140959, // 0019 GETMET R5 R4 K89
+ 0x541E000F, // 001A LDINT R7 16
+ 0x7C140400, // 001B CALL R5 2
+ 0x60180015, // 001C GETGBL R6 G21
+ 0x7C180000, // 001D CALL R6 0
+ 0x8C180D5A, // 001E GETMET R6 R6 K90
+ 0x88200100, // 001F GETMBR R8 R0 K0
+ 0x8820111D, // 0020 GETMBR R8 R8 K29
+ 0x54260003, // 0021 LDINT R9 4
+ 0x7C180600, // 0022 CALL R6 3
+ 0x8C1C095B, // 0023 GETMET R7 R4 K91
+ 0x7C1C0200, // 0024 CALL R7 1
+ 0x8C1C0F5C, // 0025 GETMET R7 R7 K92
+ 0x5C240C00, // 0026 MOVE R9 R6
+ 0x5C280A00, // 0027 MOVE R10 R5
+ 0x882C015D, // 0028 GETMBR R11 R0 K93
+ 0x5432004F, // 0029 LDINT R12 80
+ 0x7C1C0A00, // 002A CALL R7 5
+ 0x54220026, // 002B LDINT R8 39
+ 0x40222A08, // 002C CONNECT R8 K21 R8
+ 0x94200E08, // 002D GETIDX R8 R7 R8
+ 0x54260027, // 002E LDINT R9 40
+ 0x542A004E, // 002F LDINT R10 79
+ 0x4024120A, // 0030 CONNECT R9 R9 R10
+ 0x94240E09, // 0031 GETIDX R9 R7 R9
+ 0x8C28095E, // 0032 GETMET R10 R4 K94
+ 0x7C280200, // 0033 CALL R10 1
+ 0x8C28155F, // 0034 GETMET R10 R10 K95
+ 0x5C301000, // 0035 MOVE R12 R8
+ 0x7C280400, // 0036 CALL R10 2
+ 0x8C2C095E, // 0037 GETMET R11 R4 K94
+ 0x7C2C0200, // 0038 CALL R11 1
+ 0x8C2C175F, // 0039 GETMET R11 R11 K95
+ 0x5C341200, // 003A MOVE R13 R9
+ 0x7C2C0400, // 003B CALL R11 2
+ 0x8C30095E, // 003C GETMET R12 R4 K94
+ 0x7C300200, // 003D CALL R12 1
+ 0x8C301960, // 003E GETMET R12 R12 K96
+ 0x5C381600, // 003F MOVE R14 R11
+ 0x7C300400, // 0040 CALL R12 2
+ 0x8C340161, // 0041 GETMET R13 R0 K97
+ 0x5C3C0200, // 0042 MOVE R15 R1
+ 0x8840015D, // 0043 GETMBR R16 R0 K93
+ 0x88440100, // 0044 GETMBR R17 R0 K0
+ 0x8844231C, // 0045 GETMBR R17 R17 K28
+ 0x5C480A00, // 0046 MOVE R18 R5
+ 0x5C4C1400, // 0047 MOVE R19 R10
+ 0x5C501800, // 0048 MOVE R20 R12
+ 0x4C540000, // 0049 LDNIL R21
+ 0x7C341000, // 004A CALL R13 8
+ 0x80000000, // 004B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: generate_random_passcode
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_generate_random_passcode, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(generate_random_passcode),
+ &be_const_str_solidified,
+ ( &(const binstruction[35]) { /* code */
+ 0xA4068400, // 0000 IMPORT R1 K66
+ 0x4C080000, // 0001 LDNIL R2
+ 0x500C0200, // 0002 LDBOOL R3 1 0
+ 0x780E001D, // 0003 JMPF R3 #0022
+ 0x8C0C0359, // 0004 GETMET R3 R1 K89
+ 0x54160003, // 0005 LDINT R5 4
+ 0x7C0C0400, // 0006 CALL R3 2
+ 0x8C0C0762, // 0007 GETMET R3 R3 K98
+ 0x58140015, // 0008 LDCONST R5 K21
+ 0x541A0003, // 0009 LDINT R6 4
+ 0x7C0C0600, // 000A CALL R3 3
+ 0x2C0C071E, // 000B AND R3 R3 K30
+ 0x5C080600, // 000C MOVE R2 R3
+ 0x240C0563, // 000D GT R3 R2 K99
+ 0x780E0000, // 000E JMPF R3 #0010
+ 0x7001FFF1, // 000F JMP #0002
+ 0x600C0010, // 0010 GETGBL R3 G16
+ 0x88100164, // 0011 GETMBR R4 R0 K100
+ 0x7C0C0200, // 0012 CALL R3 1
+ 0xA8020005, // 0013 EXBLK 0 #001A
+ 0x5C100600, // 0014 MOVE R4 R3
+ 0x7C100000, // 0015 CALL R4 0
+ 0x1C140404, // 0016 EQ R5 R2 R4
+ 0x78160000, // 0017 JMPF R5 #0019
+ 0x4C080000, // 0018 LDNIL R2
+ 0x7001FFF9, // 0019 JMP #0014
+ 0x580C0006, // 001A LDCONST R3 K6
+ 0xAC0C0200, // 001B CATCH R3 1 0
+ 0xB0080000, // 001C RAISE 2 R0 R0
+ 0x4C0C0000, // 001D LDNIL R3
+ 0x200C0403, // 001E NE R3 R2 R3
+ 0x780E0000, // 001F JMPF R3 #0021
+ 0x80040400, // 0020 RET 1 R2
+ 0x7001FFDF, // 0021 JMP #0002
+ 0x80000000, // 0022 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: mdns_announce_op_discovery
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_mdns_announce_op_discovery, /* name */
+ be_nested_proto(
+ 14, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(mdns_announce_op_discovery),
+ &be_const_str_solidified,
+ ( &(const binstruction[115]) { /* code */
+ 0xA40A4600, // 0000 IMPORT R2 K35
+ 0xA802005F, // 0001 EXBLK 0 #0062
+ 0x8C0C0303, // 0002 GETMET R3 R1 K3
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x8C0C0738, // 0004 GETMET R3 R3 K56
+ 0x7C0C0200, // 0005 CALL R3 1
+ 0x8C0C0739, // 0006 GETMET R3 R3 K57
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0x8C10033A, // 0008 GETMET R4 R1 K58
+ 0x7C100200, // 0009 CALL R4 1
+ 0x8C14093B, // 000A GETMET R5 R4 K59
+ 0x7C140200, // 000B CALL R5 1
+ 0x00140B3C, // 000C ADD R5 R5 K60
+ 0x8C18073B, // 000D GETMET R6 R3 K59
+ 0x7C180200, // 000E CALL R6 1
+ 0x00140A06, // 000F ADD R5 R5 R6
+ 0xB81A4A00, // 0010 GETNGBL R6 K37
+ 0x001ECA05, // 0011 ADD R7 K101 R5
+ 0x58200019, // 0012 LDCONST R8 K25
+ 0x7C180400, // 0013 CALL R6 2
+ 0xB81A1000, // 0014 GETNGBL R6 K8
+ 0x8C180D2C, // 0015 GETMET R6 R6 K44
+ 0x7C180200, // 0016 CALL R6 1
+ 0x8C180D3D, // 0017 GETMET R6 R6 K61
+ 0x5820003E, // 0018 LDCONST R8 K62
+ 0x7C180400, // 0019 CALL R6 2
+ 0x781A001E, // 001A JMPF R6 #003A
+ 0xB81A4A00, // 001B GETNGBL R6 K37
+ 0x601C0018, // 001C GETGBL R7 G24
+ 0x58200066, // 001D LDCONST R8 K102
+ 0x5824002C, // 001E LDCONST R9 K44
+ 0x5C280A00, // 001F MOVE R10 R5
+ 0x882C012A, // 0020 GETMBR R11 R0 K42
+ 0x7C1C0800, // 0021 CALL R7 4
+ 0x58200019, // 0022 LDCONST R8 K25
+ 0x7C180400, // 0023 CALL R6 2
+ 0x8C180567, // 0024 GETMET R6 R2 K103
+ 0x5820003F, // 0025 LDCONST R8 K63
+ 0x58240040, // 0026 LDCONST R9 K64
+ 0x542A15A3, // 0027 LDINT R10 5540
+ 0x4C2C0000, // 0028 LDNIL R11
+ 0x5C300A00, // 0029 MOVE R12 R5
+ 0x8834012A, // 002A GETMBR R13 R0 K42
+ 0x7C180E00, // 002B CALL R6 7
+ 0x8C18093B, // 002C GETMET R6 R4 K59
+ 0x7C180200, // 002D CALL R6 1
+ 0x001AD006, // 002E ADD R6 K104 R6
+ 0xB81E4A00, // 002F GETNGBL R7 K37
+ 0x0022D206, // 0030 ADD R8 K105 R6
+ 0x58240019, // 0031 LDCONST R9 K25
+ 0x7C1C0400, // 0032 CALL R7 2
+ 0x8C1C056A, // 0033 GETMET R7 R2 K106
+ 0x5824003F, // 0034 LDCONST R9 K63
+ 0x58280040, // 0035 LDCONST R10 K64
+ 0x5C2C0A00, // 0036 MOVE R11 R5
+ 0x8830012A, // 0037 GETMBR R12 R0 K42
+ 0x5C340C00, // 0038 MOVE R13 R6
+ 0x7C1C0C00, // 0039 CALL R7 6
+ 0xB81A1000, // 003A GETNGBL R6 K8
+ 0x8C180D31, // 003B GETMET R6 R6 K49
+ 0x7C180200, // 003C CALL R6 1
+ 0x8C180D3D, // 003D GETMET R6 R6 K61
+ 0x5820003E, // 003E LDCONST R8 K62
+ 0x7C180400, // 003F CALL R6 2
+ 0x781A001E, // 0040 JMPF R6 #0060
+ 0xB81A4A00, // 0041 GETNGBL R6 K37
+ 0x601C0018, // 0042 GETGBL R7 G24
+ 0x58200066, // 0043 LDCONST R8 K102
+ 0x58240031, // 0044 LDCONST R9 K49
+ 0x5C280A00, // 0045 MOVE R10 R5
+ 0x882C0130, // 0046 GETMBR R11 R0 K48
+ 0x7C1C0800, // 0047 CALL R7 4
+ 0x58200019, // 0048 LDCONST R8 K25
+ 0x7C180400, // 0049 CALL R6 2
+ 0x8C180567, // 004A GETMET R6 R2 K103
+ 0x5820003F, // 004B LDCONST R8 K63
+ 0x58240040, // 004C LDCONST R9 K64
+ 0x542A15A3, // 004D LDINT R10 5540
+ 0x4C2C0000, // 004E LDNIL R11
+ 0x5C300A00, // 004F MOVE R12 R5
+ 0x88340130, // 0050 GETMBR R13 R0 K48
+ 0x7C180E00, // 0051 CALL R6 7
+ 0x8C18093B, // 0052 GETMET R6 R4 K59
+ 0x7C180200, // 0053 CALL R6 1
+ 0x001AD006, // 0054 ADD R6 K104 R6
+ 0xB81E4A00, // 0055 GETNGBL R7 K37
+ 0x0022D206, // 0056 ADD R8 K105 R6
+ 0x58240019, // 0057 LDCONST R9 K25
+ 0x7C1C0400, // 0058 CALL R7 2
+ 0x8C1C056A, // 0059 GETMET R7 R2 K106
+ 0x5824003F, // 005A LDCONST R9 K63
+ 0x58280040, // 005B LDCONST R10 K64
+ 0x5C2C0A00, // 005C MOVE R11 R5
+ 0x88300130, // 005D GETMBR R12 R0 K48
+ 0x5C340C00, // 005E MOVE R13 R6
+ 0x7C1C0C00, // 005F CALL R7 6
+ 0xA8040001, // 0060 EXBLK 1 1
+ 0x7002000F, // 0061 JMP #0072
+ 0xAC0C0002, // 0062 CATCH R3 0 2
+ 0x7002000C, // 0063 JMP #0071
+ 0xB8164A00, // 0064 GETNGBL R5 K37
+ 0x60180008, // 0065 GETGBL R6 G8
+ 0x5C1C0600, // 0066 MOVE R7 R3
+ 0x7C180200, // 0067 CALL R6 1
+ 0x001A6406, // 0068 ADD R6 K50 R6
+ 0x00180D33, // 0069 ADD R6 R6 K51
+ 0x601C0008, // 006A GETGBL R7 G8
+ 0x5C200800, // 006B MOVE R8 R4
+ 0x7C1C0200, // 006C CALL R7 1
+ 0x00180C07, // 006D ADD R6 R6 R7
+ 0x581C0034, // 006E LDCONST R7 K52
+ 0x7C140400, // 006F CALL R5 2
+ 0x70020000, // 0070 JMP #0072
+ 0xB0080000, // 0071 RAISE 2 R0 R0
+ 0x80000000, // 0072 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start_commissioning_complete_deferred
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_start_commissioning_complete_deferred, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 1]) {
+ be_nested_proto(
+ 3, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 2]) { /* upvals */
+ be_local_const_upval(1, 0),
+ be_local_const_upval(1, 1),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(start_commissioning_complete),
+ }),
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x68080001, // 0002 GETUPV R2 U1
+ 0x7C000400, // 0003 CALL R0 2
+ 0x80040000, // 0004 RET 1 R0
+ })
+ ),
+ }),
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(start_commissioning_complete_deferred),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0xB80A1000, // 0000 GETNGBL R2 K8
+ 0x8C080541, // 0001 GETMET R2 R2 K65
+ 0x58100015, // 0002 LDCONST R4 K21
+ 0x84140000, // 0003 CLOSURE R5 P0
+ 0x7C080600, // 0004 CALL R2 3
+ 0xA0000000, // 0005 CLOSE R0
+ 0x80000000, // 0006 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: every_second
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_every_second, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(every_second),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0x8804010C, // 0000 GETMBR R1 R0 K12
+ 0x4C080000, // 0001 LDNIL R2
+ 0x20040202, // 0002 NE R1 R1 R2
+ 0x78060006, // 0003 JMPF R1 #000B
+ 0xB8061000, // 0004 GETNGBL R1 K8
+ 0x8C04036B, // 0005 GETMET R1 R1 K107
+ 0x880C010C, // 0006 GETMBR R3 R0 K12
+ 0x7C040400, // 0007 CALL R1 2
+ 0x78060001, // 0008 JMPF R1 #000B
+ 0x4C040000, // 0009 LDNIL R1
+ 0x90021801, // 000A SETMBR R0 K12 R1
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: mdns_announce_PASE
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_mdns_announce_PASE, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(mdns_announce_PASE),
+ &be_const_str_solidified,
+ ( &(const binstruction[226]) { /* code */
+ 0xA4064600, // 0000 IMPORT R1 K35
+ 0xA40A8400, // 0001 IMPORT R2 K66
+ 0x600C0013, // 0002 GETGBL R3 G19
+ 0x7C0C0000, // 0003 CALL R3 0
+ 0x60100018, // 0004 GETGBL R4 G24
+ 0x5814006D, // 0005 LDCONST R5 K109
+ 0x88180100, // 0006 GETMBR R6 R0 K0
+ 0x88180D1A, // 0007 GETMBR R6 R6 K26
+ 0x881C0100, // 0008 GETMBR R7 R0 K0
+ 0x881C0F1B, // 0009 GETMBR R7 R7 K27
+ 0x7C100600, // 000A CALL R4 3
+ 0x980ED804, // 000B SETIDX R3 K108 R4
+ 0x8810010F, // 000C GETMBR R4 R0 K15
+ 0x980EDC04, // 000D SETIDX R3 K110 R4
+ 0x980EDF70, // 000E SETIDX R3 K111 K112
+ 0x980EE315, // 000F SETIDX R3 K113 K21
+ 0x54121387, // 0010 LDINT R4 5000
+ 0x980EE404, // 0011 SETIDX R3 K114 R4
+ 0x5412012B, // 0012 LDINT R4 300
+ 0x980EE604, // 0013 SETIDX R3 K115 R4
+ 0x8C100559, // 0014 GETMET R4 R2 K89
+ 0x541A0007, // 0015 LDINT R6 8
+ 0x7C100400, // 0016 CALL R4 2
+ 0x8C10093B, // 0017 GETMET R4 R4 K59
+ 0x7C100200, // 0018 CALL R4 1
+ 0x90025E04, // 0019 SETMBR R0 K47 R4
+ 0x8C100559, // 001A GETMET R4 R2 K89
+ 0x541A0007, // 001B LDINT R6 8
+ 0x7C100400, // 001C CALL R4 2
+ 0x8C10093B, // 001D GETMET R4 R4 K59
+ 0x7C100200, // 001E CALL R4 1
+ 0x90025204, // 001F SETMBR R0 K41 R4
+ 0xA80200AF, // 0020 EXBLK 0 #00D1
+ 0x8810012A, // 0021 GETMBR R4 R0 K42
+ 0x78120054, // 0022 JMPF R4 #0078
+ 0x8C100367, // 0023 GETMET R4 R1 K103
+ 0x58180027, // 0024 LDCONST R6 K39
+ 0x581C0028, // 0025 LDCONST R7 K40
+ 0x542215A3, // 0026 LDINT R8 5540
+ 0x5C240600, // 0027 MOVE R9 R3
+ 0x88280129, // 0028 GETMBR R10 R0 K41
+ 0x882C012A, // 0029 GETMBR R11 R0 K42
+ 0x7C100E00, // 002A CALL R4 7
+ 0x50100200, // 002B LDBOOL R4 1 0
+ 0x90024804, // 002C SETMBR R0 K36 R4
+ 0xB8124A00, // 002D GETNGBL R4 K37
+ 0x60140018, // 002E GETGBL R5 G24
+ 0x58180074, // 002F LDCONST R6 K116
+ 0x581C002C, // 0030 LDCONST R7 K44
+ 0x88200129, // 0031 GETMBR R8 R0 K41
+ 0x8824012A, // 0032 GETMBR R9 R0 K42
+ 0x7C140800, // 0033 CALL R5 4
+ 0x58180034, // 0034 LDCONST R6 K52
+ 0x7C100400, // 0035 CALL R4 2
+ 0x60100008, // 0036 GETGBL R4 G8
+ 0x8814010F, // 0037 GETMBR R5 R0 K15
+ 0x541A0FFE, // 0038 LDINT R6 4095
+ 0x2C140A06, // 0039 AND R5 R5 R6
+ 0x7C100200, // 003A CALL R4 1
+ 0x0012EA04, // 003B ADD R4 K117 R4
+ 0xB8164A00, // 003C GETNGBL R5 K37
+ 0x001AD204, // 003D ADD R6 K105 R4
+ 0x581C0019, // 003E LDCONST R7 K25
+ 0x7C140400, // 003F CALL R5 2
+ 0x8C14036A, // 0040 GETMET R5 R1 K106
+ 0x581C0027, // 0041 LDCONST R7 K39
+ 0x58200028, // 0042 LDCONST R8 K40
+ 0x88240129, // 0043 GETMBR R9 R0 K41
+ 0x8828012A, // 0044 GETMBR R10 R0 K42
+ 0x5C2C0800, // 0045 MOVE R11 R4
+ 0x7C140C00, // 0046 CALL R5 6
+ 0x60140008, // 0047 GETGBL R5 G8
+ 0x8818010F, // 0048 GETMBR R6 R0 K15
+ 0x541E0EFF, // 0049 LDINT R7 3840
+ 0x2C180C07, // 004A AND R6 R6 R7
+ 0x541E0007, // 004B LDINT R7 8
+ 0x3C180C07, // 004C SHR R6 R6 R7
+ 0x7C140200, // 004D CALL R5 1
+ 0x0016EC05, // 004E ADD R5 K118 R5
+ 0x5C100A00, // 004F MOVE R4 R5
+ 0xB8164A00, // 0050 GETNGBL R5 K37
+ 0x001AD204, // 0051 ADD R6 K105 R4
+ 0x581C0019, // 0052 LDCONST R7 K25
+ 0x7C140400, // 0053 CALL R5 2
+ 0x8C14036A, // 0054 GETMET R5 R1 K106
+ 0x581C0027, // 0055 LDCONST R7 K39
+ 0x58200028, // 0056 LDCONST R8 K40
+ 0x88240129, // 0057 GETMBR R9 R0 K41
+ 0x8828012A, // 0058 GETMBR R10 R0 K42
+ 0x5C2C0800, // 0059 MOVE R11 R4
+ 0x7C140C00, // 005A CALL R5 6
+ 0x60140008, // 005B GETGBL R5 G8
+ 0x88180100, // 005C GETMBR R6 R0 K0
+ 0x88180D1A, // 005D GETMBR R6 R6 K26
+ 0x7C140200, // 005E CALL R5 1
+ 0x0016EE05, // 005F ADD R5 K119 R5
+ 0x5C100A00, // 0060 MOVE R4 R5
+ 0xB8164A00, // 0061 GETNGBL R5 K37
+ 0x001AD204, // 0062 ADD R6 K105 R4
+ 0x581C0019, // 0063 LDCONST R7 K25
+ 0x7C140400, // 0064 CALL R5 2
+ 0x8C14036A, // 0065 GETMET R5 R1 K106
+ 0x581C0027, // 0066 LDCONST R7 K39
+ 0x58200028, // 0067 LDCONST R8 K40
+ 0x88240129, // 0068 GETMBR R9 R0 K41
+ 0x8828012A, // 0069 GETMBR R10 R0 K42
+ 0x5C2C0800, // 006A MOVE R11 R4
+ 0x7C140C00, // 006B CALL R5 6
+ 0x58100078, // 006C LDCONST R4 K120
+ 0xB8164A00, // 006D GETNGBL R5 K37
+ 0x001AD204, // 006E ADD R6 K105 R4
+ 0x581C0019, // 006F LDCONST R7 K25
+ 0x7C140400, // 0070 CALL R5 2
+ 0x8C14036A, // 0071 GETMET R5 R1 K106
+ 0x581C0027, // 0072 LDCONST R7 K39
+ 0x58200028, // 0073 LDCONST R8 K40
+ 0x88240129, // 0074 GETMBR R9 R0 K41
+ 0x8828012A, // 0075 GETMBR R10 R0 K42
+ 0x5C2C0800, // 0076 MOVE R11 R4
+ 0x7C140C00, // 0077 CALL R5 6
+ 0x88100130, // 0078 GETMBR R4 R0 K48
+ 0x78120054, // 0079 JMPF R4 #00CF
+ 0x8C100367, // 007A GETMET R4 R1 K103
+ 0x58180027, // 007B LDCONST R6 K39
+ 0x581C0028, // 007C LDCONST R7 K40
+ 0x542215A3, // 007D LDINT R8 5540
+ 0x5C240600, // 007E MOVE R9 R3
+ 0x8828012F, // 007F GETMBR R10 R0 K47
+ 0x882C0130, // 0080 GETMBR R11 R0 K48
+ 0x7C100E00, // 0081 CALL R4 7
+ 0x50100200, // 0082 LDBOOL R4 1 0
+ 0x90025C04, // 0083 SETMBR R0 K46 R4
+ 0xB8124A00, // 0084 GETNGBL R4 K37
+ 0x60140018, // 0085 GETGBL R5 G24
+ 0x58180079, // 0086 LDCONST R6 K121
+ 0x581C0031, // 0087 LDCONST R7 K49
+ 0x8820012F, // 0088 GETMBR R8 R0 K47
+ 0x88240130, // 0089 GETMBR R9 R0 K48
+ 0x7C140800, // 008A CALL R5 4
+ 0x58180019, // 008B LDCONST R6 K25
+ 0x7C100400, // 008C CALL R4 2
+ 0x60100008, // 008D GETGBL R4 G8
+ 0x8814010F, // 008E GETMBR R5 R0 K15
+ 0x541A0FFE, // 008F LDINT R6 4095
+ 0x2C140A06, // 0090 AND R5 R5 R6
+ 0x7C100200, // 0091 CALL R4 1
+ 0x0012EA04, // 0092 ADD R4 K117 R4
+ 0xB8164A00, // 0093 GETNGBL R5 K37
+ 0x001AD204, // 0094 ADD R6 K105 R4
+ 0x581C0019, // 0095 LDCONST R7 K25
+ 0x7C140400, // 0096 CALL R5 2
+ 0x8C14036A, // 0097 GETMET R5 R1 K106
+ 0x581C0027, // 0098 LDCONST R7 K39
+ 0x58200028, // 0099 LDCONST R8 K40
+ 0x8824012F, // 009A GETMBR R9 R0 K47
+ 0x88280130, // 009B GETMBR R10 R0 K48
+ 0x5C2C0800, // 009C MOVE R11 R4
+ 0x7C140C00, // 009D CALL R5 6
+ 0x60140008, // 009E GETGBL R5 G8
+ 0x8818010F, // 009F GETMBR R6 R0 K15
+ 0x541E0EFF, // 00A0 LDINT R7 3840
+ 0x2C180C07, // 00A1 AND R6 R6 R7
+ 0x541E0007, // 00A2 LDINT R7 8
+ 0x3C180C07, // 00A3 SHR R6 R6 R7
+ 0x7C140200, // 00A4 CALL R5 1
+ 0x0016EC05, // 00A5 ADD R5 K118 R5
+ 0x5C100A00, // 00A6 MOVE R4 R5
+ 0xB8164A00, // 00A7 GETNGBL R5 K37
+ 0x001AD204, // 00A8 ADD R6 K105 R4
+ 0x581C0019, // 00A9 LDCONST R7 K25
+ 0x7C140400, // 00AA CALL R5 2
+ 0x8C14036A, // 00AB GETMET R5 R1 K106
+ 0x581C0027, // 00AC LDCONST R7 K39
+ 0x58200028, // 00AD LDCONST R8 K40
+ 0x8824012F, // 00AE GETMBR R9 R0 K47
+ 0x88280130, // 00AF GETMBR R10 R0 K48
+ 0x5C2C0800, // 00B0 MOVE R11 R4
+ 0x7C140C00, // 00B1 CALL R5 6
+ 0x60140008, // 00B2 GETGBL R5 G8
+ 0x88180100, // 00B3 GETMBR R6 R0 K0
+ 0x88180D1A, // 00B4 GETMBR R6 R6 K26
+ 0x7C140200, // 00B5 CALL R5 1
+ 0x0016EE05, // 00B6 ADD R5 K119 R5
+ 0x5C100A00, // 00B7 MOVE R4 R5
+ 0xB8164A00, // 00B8 GETNGBL R5 K37
+ 0x001AD204, // 00B9 ADD R6 K105 R4
+ 0x581C0019, // 00BA LDCONST R7 K25
+ 0x7C140400, // 00BB CALL R5 2
+ 0x8C14036A, // 00BC GETMET R5 R1 K106
+ 0x581C0027, // 00BD LDCONST R7 K39
+ 0x58200028, // 00BE LDCONST R8 K40
+ 0x8824012F, // 00BF GETMBR R9 R0 K47
+ 0x88280130, // 00C0 GETMBR R10 R0 K48
+ 0x5C2C0800, // 00C1 MOVE R11 R4
+ 0x7C140C00, // 00C2 CALL R5 6
+ 0x58100078, // 00C3 LDCONST R4 K120
+ 0xB8164A00, // 00C4 GETNGBL R5 K37
+ 0x001AD204, // 00C5 ADD R6 K105 R4
+ 0x581C0019, // 00C6 LDCONST R7 K25
+ 0x7C140400, // 00C7 CALL R5 2
+ 0x8C14036A, // 00C8 GETMET R5 R1 K106
+ 0x581C0027, // 00C9 LDCONST R7 K39
+ 0x58200028, // 00CA LDCONST R8 K40
+ 0x8824012F, // 00CB GETMBR R9 R0 K47
+ 0x88280130, // 00CC GETMBR R10 R0 K48
+ 0x5C2C0800, // 00CD MOVE R11 R4
+ 0x7C140C00, // 00CE CALL R5 6
+ 0xA8040001, // 00CF EXBLK 1 1
+ 0x7002000F, // 00D0 JMP #00E1
+ 0xAC100002, // 00D1 CATCH R4 0 2
+ 0x7002000C, // 00D2 JMP #00E0
+ 0xB81A4A00, // 00D3 GETNGBL R6 K37
+ 0x601C0008, // 00D4 GETGBL R7 G8
+ 0x5C200800, // 00D5 MOVE R8 R4
+ 0x7C1C0200, // 00D6 CALL R7 1
+ 0x001E6407, // 00D7 ADD R7 K50 R7
+ 0x001C0F33, // 00D8 ADD R7 R7 K51
+ 0x60200008, // 00D9 GETGBL R8 G8
+ 0x5C240A00, // 00DA MOVE R9 R5
+ 0x7C200200, // 00DB CALL R8 1
+ 0x001C0E08, // 00DC ADD R7 R7 R8
+ 0x58200034, // 00DD LDCONST R8 K52
+ 0x7C180400, // 00DE CALL R6 2
+ 0x70020000, // 00DF JMP #00E1
+ 0xB0080000, // 00E0 RAISE 2 R0 R0
+ 0x80000000, // 00E1 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start_basic_commissioning
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_start_basic_commissioning, /* name */
+ be_nested_proto(
+ 13, /* nstack */
+ 8, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 2]) {
+ be_nested_proto(
+ 4, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(mdns_announce_PASE),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(remove_rule),
+ /* K3 */ be_nested_str_weak(Wifi_X23Connected),
+ }),
+ be_str_weak(_anonymous_),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x7C000200, // 0002 CALL R0 1
+ 0xB8020200, // 0003 GETNGBL R0 K1
+ 0x8C000102, // 0004 GETMET R0 R0 K2
+ 0x58080003, // 0005 LDCONST R2 K3
+ 0x580C0000, // 0006 LDCONST R3 K0
+ 0x7C000600, // 0007 CALL R0 3
+ 0x80000000, // 0008 RET 0
+ })
+ ),
+ be_nested_proto(
+ 4, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str_weak(mdns_announce_PASE),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(remove_rule),
+ /* K3 */ be_nested_str_weak(Eth_X23Connected),
+ }),
+ be_str_weak(_anonymous_),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x7C000200, // 0002 CALL R0 1
+ 0xB8020200, // 0003 GETNGBL R0 K1
+ 0x8C000102, // 0004 GETMET R0 R0 K2
+ 0x58080003, // 0005 LDCONST R2 K3
+ 0x580C0000, // 0006 LDCONST R3 K0
+ 0x7C000600, // 0007 CALL R0 3
+ 0x80000000, // 0008 RET 0
+ })
+ ),
+ }),
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(start_basic_commissioning),
+ &be_const_str_solidified,
+ ( &(const binstruction[40]) { /* code */
+ 0xB8221000, // 0000 GETNGBL R8 K8
+ 0x8C20117A, // 0001 GETMET R8 R8 K122
+ 0x7C200200, // 0002 CALL R8 1
+ 0x542603E7, // 0003 LDINT R9 1000
+ 0x08240209, // 0004 MUL R9 R1 R9
+ 0x00201009, // 0005 ADD R8 R8 R9
+ 0x90021808, // 0006 SETMBR R0 K12 R8
+ 0x90021C02, // 0007 SETMBR R0 K14 R2
+ 0x90021E03, // 0008 SETMBR R0 K15 R3
+ 0x90022004, // 0009 SETMBR R0 K16 R4
+ 0x90022205, // 000A SETMBR R0 K17 R5
+ 0x90022406, // 000B SETMBR R0 K18 R6
+ 0x90022607, // 000C SETMBR R0 K19 R7
+ 0xB8221000, // 000D GETNGBL R8 K8
+ 0x8C201131, // 000E GETMET R8 R8 K49
+ 0x7C200200, // 000F CALL R8 1
+ 0x9420113E, // 0010 GETIDX R8 R8 K62
+ 0x74220004, // 0011 JMPT R8 #0017
+ 0xB8221000, // 0012 GETNGBL R8 K8
+ 0x8C20112C, // 0013 GETMET R8 R8 K44
+ 0x7C200200, // 0014 CALL R8 1
+ 0x9420113E, // 0015 GETIDX R8 R8 K62
+ 0x78220002, // 0016 JMPF R8 #001A
+ 0x8C20017B, // 0017 GETMET R8 R0 K123
+ 0x7C200200, // 0018 CALL R8 1
+ 0x7002000B, // 0019 JMP #0026
+ 0xB8221000, // 001A GETNGBL R8 K8
+ 0x8C20117C, // 001B GETMET R8 R8 K124
+ 0x5828007D, // 001C LDCONST R10 K125
+ 0x842C0000, // 001D CLOSURE R11 P0
+ 0x5830007B, // 001E LDCONST R12 K123
+ 0x7C200800, // 001F CALL R8 4
+ 0xB8221000, // 0020 GETNGBL R8 K8
+ 0x8C20117C, // 0021 GETMET R8 R8 K124
+ 0x5828007E, // 0022 LDCONST R10 K126
+ 0x842C0001, // 0023 CLOSURE R11 P1
+ 0x5830007B, // 0024 LDCONST R12 K123
+ 0x7C200800, // 0025 CALL R8 4
+ 0xA0000000, // 0026 CLOSE R0
+ 0x80000000, // 0027 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start_mdns_announce_hostnames
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_start_mdns_announce_hostnames, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 2]) {
+ be_nested_proto(
+ 4, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(_mdns_announce_hostname),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(remove_rule),
+ /* K3 */ be_nested_str_weak(Wifi_X23Connected),
+ /* K4 */ be_nested_str_weak(matter_mdns_host),
+ }),
+ be_str_weak(_anonymous_),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x50080000, // 0002 LDBOOL R2 0 0
+ 0x7C000400, // 0003 CALL R0 2
+ 0xB8020200, // 0004 GETNGBL R0 K1
+ 0x8C000102, // 0005 GETMET R0 R0 K2
+ 0x58080003, // 0006 LDCONST R2 K3
+ 0x580C0004, // 0007 LDCONST R3 K4
+ 0x7C000600, // 0008 CALL R0 3
+ 0x80000000, // 0009 RET 0
+ })
+ ),
+ be_nested_proto(
+ 4, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(_mdns_announce_hostname),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(remove_rule),
+ /* K3 */ be_nested_str_weak(Eth_X23Connected),
+ /* K4 */ be_nested_str_weak(matter_mdns_host),
+ }),
+ be_str_weak(_anonymous_),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x50080200, // 0002 LDBOOL R2 1 0
+ 0x7C000400, // 0003 CALL R0 2
+ 0xB8020200, // 0004 GETNGBL R0 K1
+ 0x8C000102, // 0005 GETMET R0 R0 K2
+ 0x58080003, // 0006 LDCONST R2 K3
+ 0x580C0004, // 0007 LDCONST R3 K4
+ 0x7C000600, // 0008 CALL R0 3
+ 0x80000000, // 0009 RET 0
+ })
+ ),
+ }),
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(start_mdns_announce_hostnames),
+ &be_const_str_solidified,
+ ( &(const binstruction[32]) { /* code */
+ 0xB8061000, // 0000 GETNGBL R1 K8
+ 0x8C040331, // 0001 GETMET R1 R1 K49
+ 0x7C040200, // 0002 CALL R1 1
+ 0x9404033E, // 0003 GETIDX R1 R1 K62
+ 0x78060003, // 0004 JMPF R1 #0009
+ 0x8C04017F, // 0005 GETMET R1 R0 K127
+ 0x500C0000, // 0006 LDBOOL R3 0 0
+ 0x7C040400, // 0007 CALL R1 2
+ 0x70020005, // 0008 JMP #000F
+ 0xB8061000, // 0009 GETNGBL R1 K8
+ 0x8C04037C, // 000A GETMET R1 R1 K124
+ 0x580C007D, // 000B LDCONST R3 K125
+ 0x84100000, // 000C CLOSURE R4 P0
+ 0x58140080, // 000D LDCONST R5 K128
+ 0x7C040800, // 000E CALL R1 4
+ 0xB8061000, // 000F GETNGBL R1 K8
+ 0x8C04032C, // 0010 GETMET R1 R1 K44
+ 0x7C040200, // 0011 CALL R1 1
+ 0x9404033E, // 0012 GETIDX R1 R1 K62
+ 0x78060003, // 0013 JMPF R1 #0018
+ 0x8C04017F, // 0014 GETMET R1 R0 K127
+ 0x500C0200, // 0015 LDBOOL R3 1 0
+ 0x7C040400, // 0016 CALL R1 2
+ 0x70020005, // 0017 JMP #001E
+ 0xB8061000, // 0018 GETNGBL R1 K8
+ 0x8C04037C, // 0019 GETMET R1 R1 K124
+ 0x580C007E, // 001A LDCONST R3 K126
+ 0x84100001, // 001B CLOSURE R4 P1
+ 0x58140080, // 001C LDCONST R5 K128
+ 0x7C040800, // 001D CALL R1 4
+ 0xA0000000, // 001E CLOSE R0
+ 0x80000000, // 001F RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: is_root_commissioning_open
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_is_root_commissioning_open, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(is_root_commissioning_open),
+ &be_const_str_solidified,
+ ( &(const binstruction[11]) { /* code */
+ 0x8804010C, // 0000 GETMBR R1 R0 K12
+ 0x4C080000, // 0001 LDNIL R2
+ 0x20040202, // 0002 NE R1 R1 R2
+ 0x78060003, // 0003 JMPF R1 #0008
+ 0x88040113, // 0004 GETMBR R1 R0 K19
+ 0x4C080000, // 0005 LDNIL R2
+ 0x1C040202, // 0006 EQ R1 R1 R2
+ 0x74060000, // 0007 JMPT R1 #0009
+ 0x50040001, // 0008 LDBOOL R1 0 1
+ 0x50040200, // 0009 LDBOOL R1 1 0
+ 0x80040200, // 000A RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: is_commissioning_open
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_is_commissioning_open, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(is_commissioning_open),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8804010C, // 0000 GETMBR R1 R0 K12
+ 0x4C080000, // 0001 LDNIL R2
+ 0x20040202, // 0002 NE R1 R1 R2
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start_commissioning_complete
+********************************************************************/
+be_local_closure(class_Matter_Commissioning_start_commissioning_complete, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Commissioning, /* shared constants */
+ be_str_weak(start_commissioning_complete),
+ &be_const_str_solidified,
+ ( &(const binstruction[23]) { /* code */
+ 0x8C080381, // 0000 GETMET R2 R1 K129
+ 0x7C080200, // 0001 CALL R2 1
+ 0x8C0C0504, // 0002 GETMET R3 R2 K4
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x8C0C0738, // 0004 GETMET R3 R3 K56
+ 0x7C0C0200, // 0005 CALL R3 1
+ 0x8C0C0739, // 0006 GETMET R3 R3 K57
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0x8C0C073B, // 0008 GETMET R3 R3 K59
+ 0x7C0C0200, // 0009 CALL R3 1
+ 0x8C100582, // 000A GETMET R4 R2 K130
+ 0x7C100200, // 000B CALL R4 1
+ 0xB8164A00, // 000C GETNGBL R5 K37
+ 0x60180018, // 000D GETGBL R6 G24
+ 0x581C0083, // 000E LDCONST R7 K131
+ 0x5C200600, // 000F MOVE R8 R3
+ 0x5C240800, // 0010 MOVE R9 R4
+ 0x7C180600, // 0011 CALL R6 3
+ 0x581C0034, // 0012 LDCONST R7 K52
+ 0x7C140400, // 0013 CALL R5 2
+ 0x8C140143, // 0014 GETMET R5 R0 K67
+ 0x7C140200, // 0015 CALL R5 1
+ 0x80000000, // 0016 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: Matter_Commissioning
+********************************************************************/
+be_local_class(Matter_Commissioning,
+ 14,
+ NULL,
+ be_nested_map(40,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(commissioning_admin_fabric, -1), be_const_var(7) },
+ { be_const_key_weak(commissioning_w0, -1), be_const_var(5) },
+ { be_const_key_weak(commissioning_instance_eth, 1), be_const_var(9) },
+ { be_const_key_weak(start_commissioning_complete, -1), be_const_closure(class_Matter_Commissioning_start_commissioning_complete_closure) },
+ { be_const_key_weak(stop_basic_commissioning, -1), be_const_closure(class_Matter_Commissioning_stop_basic_commissioning_closure) },
+ { be_const_key_weak(mdns_pase_wifi, -1), be_const_var(13) },
+ { be_const_key_weak(init_basic_commissioning, -1), be_const_closure(class_Matter_Commissioning_init_basic_commissioning_closure) },
+ { be_const_key_weak(compute_qrcode_content, -1), be_const_closure(class_Matter_Commissioning_compute_qrcode_content_closure) },
+ { be_const_key_weak(compute_manual_pairing_code, 38), be_const_closure(class_Matter_Commissioning_compute_manual_pairing_code_closure) },
+ { be_const_key_weak(commissioning_open, -1), be_const_var(1) },
+ { be_const_key_weak(mdns_remove_op_discovery_all_fabrics, 8), be_const_closure(class_Matter_Commissioning_mdns_remove_op_discovery_all_fabrics_closure) },
+ { be_const_key_weak(device, -1), be_const_var(0) },
+ { be_const_key_weak(start_operational_discovery, -1), be_const_closure(class_Matter_Commissioning_start_operational_discovery_closure) },
+ { be_const_key_weak(PASSCODE_INVALID, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
+ be_const_list( * be_nested_list(12,
+ ( (struct bvalue*) &(const bvalue[]) {
+ be_const_int(0),
+ be_const_int(11111111),
+ be_const_int(22222222),
+ be_const_int(33333333),
+ be_const_int(44444444),
+ be_const_int(55555555),
+ be_const_int(66666666),
+ be_const_int(77777777),
+ be_const_int(88888888),
+ be_const_int(99999999),
+ be_const_int(12345678),
+ be_const_int(87654321),
+ })) ) } )) },
+ { be_const_key_weak(commissioning_discriminator, 30), be_const_var(3) },
+ { be_const_key_weak(mdns_remove_op_discovery, 3), be_const_closure(class_Matter_Commissioning_mdns_remove_op_discovery_closure) },
+ { be_const_key_weak(mdns_announce_op_discovery_all_fabrics, -1), be_const_closure(class_Matter_Commissioning_mdns_announce_op_discovery_all_fabrics_closure) },
+ { be_const_key_weak(start_operational_discovery_deferred, 12), be_const_closure(class_Matter_Commissioning_start_operational_discovery_deferred_closure) },
+ { be_const_key_weak(_mdns_announce_hostname, 28), be_const_closure(class_Matter_Commissioning__mdns_announce_hostname_closure) },
+ { be_const_key_weak(commissioning_L, 16), be_const_var(6) },
+ { be_const_key_weak(start_commissioning_complete_deferred, -1), be_const_closure(class_Matter_Commissioning_start_commissioning_complete_deferred_closure) },
+ { be_const_key_weak(generate_random_passcode, -1), be_const_closure(class_Matter_Commissioning_generate_random_passcode_closure) },
+ { be_const_key_weak(mdns_announce_op_discovery, -1), be_const_closure(class_Matter_Commissioning_mdns_announce_op_discovery_closure) },
+ { be_const_key_weak(commissioning_instance_wifi, -1), be_const_var(8) },
+ { be_const_key_weak(hostname_eth, -1), be_const_var(11) },
+ { be_const_key_weak(start_root_basic_commissioning, 32), be_const_closure(class_Matter_Commissioning_start_root_basic_commissioning_closure) },
+ { be_const_key_weak(PASE_TIMEOUT, 23), be_const_int(600) },
+ { be_const_key_weak(mdns_announce_PASE, -1), be_const_closure(class_Matter_Commissioning_mdns_announce_PASE_closure) },
+ { be_const_key_weak(start_basic_commissioning, -1), be_const_closure(class_Matter_Commissioning_start_basic_commissioning_closure) },
+ { be_const_key_weak(start_mdns_announce_hostnames, -1), be_const_closure(class_Matter_Commissioning_start_mdns_announce_hostnames_closure) },
+ { be_const_key_weak(mdns_pase_eth, 20), be_const_var(12) },
+ { be_const_key_weak(is_root_commissioning_open, -1), be_const_closure(class_Matter_Commissioning_is_root_commissioning_open_closure) },
+ { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_Commissioning_every_second_closure) },
+ { be_const_key_weak(commissioning_salt, -1), be_const_var(4) },
+ { be_const_key_weak(is_commissioning_open, -1), be_const_closure(class_Matter_Commissioning_is_commissioning_open_closure) },
+ { be_const_key_weak(init, 14), be_const_closure(class_Matter_Commissioning_init_closure) },
+ { be_const_key_weak(hostname_wifi, -1), be_const_var(10) },
+ { be_const_key_weak(commissioning_iterations, -1), be_const_var(2) },
+ { be_const_key_weak(mdns_remove_PASE, -1), be_const_closure(class_Matter_Commissioning_mdns_remove_PASE_closure) },
+ { be_const_key_weak(PBKDF_ITERATIONS, -1), be_const_int(1000) },
+ })),
+ be_str_weak(Matter_Commissioning)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h
index 3a49183ff..4869abc0c 100644
--- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h
+++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_zz_Device.h
@@ -3,1072 +3,249 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+extern const bclass be_class_Matter_Device;
+// compact class 'Matter_Device' ktab size: 213, total: 455 (saved 1936 bytes)
+static const bvalue be_ktab_class_Matter_Device[213] = {
+ /* K0 */ be_nested_str_weak(udp_server),
+ /* K1 */ be_nested_str_weak(received_ack),
+ /* K2 */ be_nested_str_weak(message_handler),
+ /* K3 */ be_nested_str_weak(msg_received),
+ /* K4 */ be_nested_str_weak(sessions),
+ /* K5 */ be_nested_str_weak(count_active_fabrics),
+ /* K6 */ be_const_int(0),
+ /* K7 */ be_nested_str_weak(plugins_persist),
+ /* K8 */ be_nested_str_weak(save_param),
+ /* K9 */ be_nested_str_weak(commissioning),
+ /* K10 */ be_nested_str_weak(stop_basic_commissioning),
+ /* K11 */ be_nested_str_weak(mdns_remove_op_discovery_all_fabrics),
+ /* K12 */ be_const_class(be_class_Matter_Device),
+ /* K13 */ be_nested_str_weak(),
+ /* K14 */ be_nested_str_weak(k2l),
+ /* K15 */ be_nested_str_weak(type),
+ /* K16 */ be_nested_str_weak(_X20_X25s_X3A_X25s),
+ /* K17 */ be_nested_str_weak(stop_iteration),
+ /* K18 */ be_nested_str_weak(plugins),
+ /* K19 */ be_nested_str_weak(get_name),
+ /* K20 */ be_const_int(1),
+ /* K21 */ be_nested_str_weak(plugins_config_remotes),
+ /* K22 */ be_nested_str_weak(find),
+ /* K23 */ be_nested_str_weak(log),
+ /* K24 */ be_nested_str_weak(MTR_X3A_X20removing_X20fabric_X20),
+ /* K25 */ be_nested_str_weak(get_fabric_id),
+ /* K26 */ be_nested_str_weak(copy),
+ /* K27 */ be_nested_str_weak(reverse),
+ /* K28 */ be_nested_str_weak(tohex),
+ /* K29 */ be_const_int(2),
+ /* K30 */ be_nested_str_weak(im),
+ /* K31 */ be_nested_str_weak(subs_shop),
+ /* K32 */ be_nested_str_weak(remove_by_fabric),
+ /* K33 */ be_nested_str_weak(mdns_remove_op_discovery),
+ /* K34 */ be_nested_str_weak(remove_fabric),
+ /* K35 */ be_nested_str_weak(save_fabrics),
+ /* K36 */ be_nested_str_weak(endpoint),
+ /* K37 */ be_nested_str_weak(cluster),
+ /* K38 */ be_nested_str_weak(attribute),
+ /* K39 */ be_nested_str_weak(find_plugin_by_endpoint),
+ /* K40 */ be_nested_str_weak(status),
+ /* K41 */ be_nested_str_weak(matter),
+ /* K42 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT),
+ /* K43 */ be_nested_str_weak(contains_cluster),
+ /* K44 */ be_nested_str_weak(UNSUPPORTED_CLUSTER),
+ /* K45 */ be_nested_str_weak(contains_attribute),
+ /* K46 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
+ /* K47 */ be_nested_str_weak(attribute_updated),
+ /* K48 */ be_const_int(3),
+ /* K49 */ be_nested_str_weak(AGGREGATOR_ENDPOINT),
+ /* K50 */ be_nested_str_weak(json),
+ /* K51 */ be_nested_str_weak(autoconf),
+ /* K52 */ be_nested_str_weak(Autoconf),
+ /* K53 */ be_nested_str_weak(plugins_config),
+ /* K54 */ be_nested_str_weak(autoconf_device_map),
+ /* K55 */ be_nested_str_weak(adjust_next_ep),
+ /* K56 */ be_nested_str_weak(MTR_X3A_X20autoconfig_X20_X3D_X20),
+ /* K57 */ be_nested_str_weak(instantiate_plugins_from_config),
+ /* K58 */ be_nested_str_weak(tasmota),
+ /* K59 */ be_nested_str_weak(read_sensors),
+ /* K60 */ be_nested_str_weak(loglevel),
+ /* K61 */ be_nested_str_weak(MTR_X3A_X20read_sensors_X3A_X20),
+ /* K62 */ be_nested_str_weak(load),
+ /* K63 */ be_nested_str_weak(parse_sensors),
+ /* K64 */ be_nested_str_weak(MTR_X3A_X20unable_X20to_X20parse_X20read_sensors_X3A_X20),
+ /* K65 */ be_nested_str_weak(get_endpoint),
+ /* K66 */ be_nested_str_weak(push),
+ /* K67 */ be_nested_str_weak(send_UDP),
+ /* K68 */ be_nested_str_weak(remove_driver),
+ /* K69 */ be_nested_str_weak(stop),
+ /* K70 */ be_nested_str_weak(keys),
+ /* K71 */ be_nested_str_weak(next_ep),
+ /* K72 */ be_nested_str_weak(probe_sensor_time),
+ /* K73 */ be_nested_str_weak(probe_sensor_timestamp),
+ /* K74 */ be_nested_str_weak(jitter),
+ /* K75 */ be_nested_str_weak(button_handler),
+ /* K76 */ be_nested_str_weak(started),
+ /* K77 */ be_nested_str_weak(autoconf_device),
+ /* K78 */ be_nested_str_weak(_start_udp),
+ /* K79 */ be_nested_str_weak(UDP_PORT),
+ /* K80 */ be_nested_str_weak(start_mdns_announce_hostnames),
+ /* K81 */ be_nested_str_weak(plugins_classes),
+ /* K82 */ be_nested_str_weak(DISPLAY_NAME),
+ /* K83 */ be_nested_str_weak(remove),
+ /* K84 */ be_nested_str_weak(MTR_X3A_X20invalid_X20entry_X20with_X20ep_X20_X270_X27),
+ /* K85 */ be_nested_str_weak(MTR_X3A_X20endpoint_X20_X25s_X20collides_X20wit_X20aggregator_X2C_X20relocating_X20to_X20_X25s),
+ /* K86 */ be_nested_str_weak(introspect),
+ /* K87 */ be_nested_str_weak(contains),
+ /* K88 */ be_nested_str_weak(crypto),
+ /* K89 */ be_nested_str_weak(get_option),
+ /* K90 */ be_nested_str_weak(MATTER_OPTION),
+ /* K91 */ be_nested_str_weak(UI),
+ /* K92 */ be_nested_str_weak(profiler),
+ /* K93 */ be_nested_str_weak(Profiler),
+ /* K94 */ be_nested_str_weak(tick),
+ /* K95 */ be_nested_str_weak(EP),
+ /* K96 */ be_nested_str_weak(ipv4only),
+ /* K97 */ be_nested_str_weak(disable_bridge_mode),
+ /* K98 */ be_nested_str_weak(Commissioning),
+ /* K99 */ be_nested_str_weak(load_param),
+ /* K100 */ be_nested_str_weak(Session_Store),
+ /* K101 */ be_nested_str_weak(load_fabrics),
+ /* K102 */ be_nested_str_weak(MessageHandler),
+ /* K103 */ be_nested_str_weak(events),
+ /* K104 */ be_nested_str_weak(EventHandler),
+ /* K105 */ be_nested_str_weak(ui),
+ /* K106 */ be_nested_str_weak(wifi),
+ /* K107 */ be_nested_str_weak(up),
+ /* K108 */ be_nested_str_weak(eth),
+ /* K109 */ be_nested_str_weak(start),
+ /* K110 */ be_nested_str_weak(add_rule),
+ /* K111 */ be_nested_str_weak(Wifi_X23Connected),
+ /* K112 */ be_nested_str_weak(matter_start),
+ /* K113 */ be_nested_str_weak(Eth_X23Connected),
+ /* K114 */ be_nested_str_weak(init_basic_commissioning),
+ /* K115 */ be_nested_str_weak(add_driver),
+ /* K116 */ be_nested_str_weak(register_commands),
+ /* K117 */ be_nested_str_weak(every_second),
+ /* K118 */ be_nested_str_weak(http_remotes),
+ /* K119 */ be_nested_str_weak(get),
+ /* K120 */ be_nested_str_weak(http_remote),
+ /* K121 */ be_nested_str_weak(MTR_X3A_X20remove_X20unused_X20remote_X3A_X20),
+ /* K122 */ be_nested_str_weak(addr),
+ /* K123 */ be_nested_str_weak(close),
+ /* K124 */ be_nested_str_weak(read_sensors_scheduler),
+ /* K125 */ be_nested_str_weak(every_250ms),
+ /* K126 */ be_nested_str_weak(PathGenerator),
+ /* K127 */ be_nested_str_weak(is_direct),
+ /* K128 */ be_nested_str_weak(next_attribute),
+ /* K129 */ be_nested_str_weak(get_pi),
+ /* K130 */ be_nested_str_weak(Path),
+ /* K131 */ be_nested_str_weak(attribute_updated_ctx),
+ /* K132 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27),
+ /* K133 */ be_nested_str_weak(_X27_X20skipping),
+ /* K134 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X3A_X25s_X25s),
+ /* K135 */ be_nested_str_weak(conf_to_log),
+ /* K136 */ be_nested_str_weak(signal_endpoints_changed),
+ /* K137 */ be_nested_str_weak(MtrInfo_one),
+ /* K138 */ be_nested_str_weak(int),
+ /* K139 */ be_nested_str_weak(find_plugin_by_friendly_name),
+ /* K140 */ be_nested_str_weak(resp_cmnd_done),
+ /* K141 */ be_nested_str_weak(MTR_X3A_X20Starting_X20UDP_X20server_X20on_X20port_X3A_X20),
+ /* K142 */ be_nested_str_weak(UDPServer),
+ /* K143 */ be_nested_str_weak(FILENAME),
+ /* K144 */ be_nested_str_weak(read),
+ /* K145 */ be_nested_str_weak(root_discriminator),
+ /* K146 */ be_nested_str_weak(distinguish),
+ /* K147 */ be_nested_str_weak(root_passcode),
+ /* K148 */ be_nested_str_weak(passcode),
+ /* K149 */ be_nested_str_weak(nextep),
+ /* K150 */ be_nested_str_weak(config),
+ /* K151 */ be_nested_str_weak(debug),
+ /* K152 */ be_nested_str_weak(MTR_X3A_X20Load_config_X20_X3D_X20_X25s),
+ /* K153 */ be_nested_str_weak(check_config_ep),
+ /* K154 */ be_nested_str_weak(remotes),
+ /* K155 */ be_nested_str_weak(MTR_X3A_X20load_remotes_X20_X3D_X20),
+ /* K156 */ be_nested_str_weak(io_error),
+ /* K157 */ be_nested_str_weak(MTR_X3A_X20load_param_X20Exception_X3A),
+ /* K158 */ be_nested_str_weak(_X7C),
+ /* K159 */ be_nested_str_weak(random),
+ /* K160 */ be_nested_str_weak(generate_random_passcode),
+ /* K161 */ be_nested_str_weak(every_50ms),
+ /* K162 */ be_nested_str_weak(add_cmd),
+ /* K163 */ be_nested_str_weak(MtrJoin),
+ /* K164 */ be_nested_str_weak(MtrUpdate),
+ /* K165 */ be_nested_str_weak(MtrInfo),
+ /* K166 */ be_nested_str_weak(update_remotes_info),
+ /* K167 */ be_nested_str_weak(_X7B_X22distinguish_X22_X3A_X25i_X2C_X22passcode_X22_X3A_X25i_X2C_X22ipv4only_X22_X3A_X25s_X2C_X22disable_bridge_mode_X22_X3A_X25s_X2C_X22nextep_X22_X3A_X25i),
+ /* K168 */ be_nested_str_weak(true),
+ /* K169 */ be_nested_str_weak(false),
+ /* K170 */ be_nested_str_weak(_X2C_X22debug_X22_X3Atrue),
+ /* K171 */ be_nested_str_weak(_X2C_X0A_X22config_X22_X3A),
+ /* K172 */ be_nested_str_weak(dump),
+ /* K173 */ be_nested_str_weak(_X2C_X0A_X22remotes_X22_X3A),
+ /* K174 */ be_nested_str_weak(_X7D),
+ /* K175 */ be_nested_str_weak(w),
+ /* K176 */ be_nested_str_weak(write),
+ /* K177 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20parameters_X25s),
+ /* K178 */ be_nested_str_weak(_X20and_X20configuration),
+ /* K179 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A),
+ /* K180 */ be_nested_str_weak(MTR_X3A_X20Cannot_X20remove_X20an_X20enpoint_X20not_X20configured_X3A_X20),
+ /* K181 */ be_nested_str_weak(MTR_X3A_X20deleting_X20endpoint_X20_X3D_X20_X25i),
+ /* K182 */ be_nested_str_weak(clean_remotes),
+ /* K183 */ be_nested_str_weak(invoke_request),
+ /* K184 */ be_nested_str_weak(time_reached),
+ /* K185 */ be_nested_str_weak(_trigger_read_sensors),
+ /* K186 */ be_nested_str_weak(millis),
+ /* K187 */ be_nested_str_weak(get_timeout),
+ /* K188 */ be_nested_str_weak(set_timeout),
+ /* K189 */ be_nested_str_weak(HTTP_remote),
+ /* K190 */ be_nested_str_weak(set_info),
+ /* K191 */ be_nested_str_weak(resp_cmnd_str),
+ /* K192 */ be_nested_str_weak(Invalid_X20JSON),
+ /* K193 */ be_nested_str_weak(find_key_i),
+ /* K194 */ be_nested_str_weak(Ep),
+ /* K195 */ be_nested_str_weak(Name),
+ /* K196 */ be_nested_str_weak(Invalid_X20_X27Ep_X27_X20attribute),
+ /* K197 */ be_nested_str_weak(Invalid_X20Device),
+ /* K198 */ be_nested_str_weak(VIRTUAL),
+ /* K199 */ be_nested_str_weak(Device_X20is_X20not_X20virtual),
+ /* K200 */ be_nested_str_weak(consolidate_update_commands),
+ /* K201 */ be_nested_str_weak(find_list_i),
+ /* K202 */ be_nested_str_weak(Invalid_X20attribute_X20_X27_X25s_X27),
+ /* K203 */ be_nested_str_weak(update_virtual),
+ /* K204 */ be_nested_str_weak(state_json),
+ /* K205 */ be_nested_str_weak(_X7B_X22_X25s_X22_X3A_X25s_X7D),
+ /* K206 */ be_nested_str_weak(resp_cmnd),
+ /* K207 */ be_nested_str_weak(Missing_X20_X27Device_X27_X20attribute),
+ /* K208 */ be_nested_str_weak(_X7B_X22MtrInfo_X22_X3A_X25s_X7D),
+ /* K209 */ be_nested_str_weak(publish_result),
+ /* K210 */ be_nested_str_weak(start_root_basic_commissioning),
+ /* K211 */ be_nested_str_weak(ARG),
+ /* K212 */ be_nested_str_weak(get_info),
+};
+
extern const bclass be_class_Matter_Device;
/********************************************************************
-** Solidified function: is_commissioning_open
+** Solidified function: received_ack
********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_is_commissioning_open, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(commissioning_open),
- }),
- be_str_weak(is_commissioning_open),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x4C080000, // 0001 LDNIL R2
- 0x20040202, // 0002 NE R1 R1 R2
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: MtrInfo_one
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_MtrInfo_one, /* name */
- be_nested_proto(
- 9, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(find_plugin_by_endpoint),
- /* K1 */ be_nested_str_weak(state_json),
- /* K2 */ be_nested_str_weak(_X7B_X22MtrInfo_X22_X3A_X25s_X7D),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(publish_result),
- /* K5 */ be_nested_str_weak(),
- }),
- be_str_weak(MtrInfo_one),
- &be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
- 0x5C100200, // 0001 MOVE R4 R1
- 0x7C080400, // 0002 CALL R2 2
- 0x4C0C0000, // 0003 LDNIL R3
- 0x1C0C0403, // 0004 EQ R3 R2 R3
- 0x780E0000, // 0005 JMPF R3 #0007
- 0x80000600, // 0006 RET 0
- 0x8C0C0501, // 0007 GETMET R3 R2 K1
- 0x7C0C0200, // 0008 CALL R3 1
- 0x780E0008, // 0009 JMPF R3 #0013
- 0x60100018, // 000A GETGBL R4 G24
- 0x58140002, // 000B LDCONST R5 K2
- 0x5C180600, // 000C MOVE R6 R3
- 0x7C100400, // 000D CALL R4 2
- 0xB8160600, // 000E GETNGBL R5 K3
- 0x8C140B04, // 000F GETMET R5 R5 K4
- 0x5C1C0800, // 0010 MOVE R7 R4
- 0x58200005, // 0011 LDCONST R8 K5
- 0x7C140600, // 0012 CALL R5 3
- 0x80000000, // 0013 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: event_fabrics_saved
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_event_fabrics_saved, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(sessions),
- /* K1 */ be_nested_str_weak(count_active_fabrics),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(plugins_persist),
- /* K4 */ be_nested_str_weak(save_param),
- }),
- be_str_weak(event_fabrics_saved),
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x24040302, // 0003 GT R1 R1 K2
- 0x78060005, // 0004 JMPF R1 #000B
- 0x88040103, // 0005 GETMBR R1 R0 K3
- 0x74060003, // 0006 JMPT R1 #000B
- 0x50040200, // 0007 LDBOOL R1 1 0
- 0x90020601, // 0008 SETMBR R0 K3 R1
- 0x8C040104, // 0009 GETMET R1 R0 K4
- 0x7C040200, // 000A CALL R1 1
- 0x80000000, // 000B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start_commissioning_complete
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_start_commissioning_complete, /* name */
- be_nested_proto(
- 11, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(get_fabric),
- /* K1 */ be_nested_str_weak(get_fabric_id),
- /* K2 */ be_nested_str_weak(copy),
- /* K3 */ be_nested_str_weak(reverse),
- /* K4 */ be_nested_str_weak(tohex),
- /* K5 */ be_nested_str_weak(get_admin_vendor_name),
- /* K6 */ be_nested_str_weak(tasmota),
- /* K7 */ be_nested_str_weak(log),
- /* K8 */ be_nested_str_weak(MTR_X3A_X20_X2D_X2D_X2D_X20Commissioning_X20complete_X20for_X20Fabric_X20_X27_X25s_X27_X20_X28Vendor_X20_X25s_X29_X20_X2D_X2D_X2D),
- /* K9 */ be_const_int(2),
- /* K10 */ be_nested_str_weak(stop_basic_commissioning),
- }),
- be_str_weak(start_commissioning_complete),
- &be_const_str_solidified,
- ( &(const binstruction[24]) { /* code */
- 0x8C080300, // 0000 GETMET R2 R1 K0
- 0x7C080200, // 0001 CALL R2 1
- 0x8C0C0501, // 0002 GETMET R3 R2 K1
- 0x7C0C0200, // 0003 CALL R3 1
- 0x8C0C0702, // 0004 GETMET R3 R3 K2
- 0x7C0C0200, // 0005 CALL R3 1
- 0x8C0C0703, // 0006 GETMET R3 R3 K3
- 0x7C0C0200, // 0007 CALL R3 1
- 0x8C0C0704, // 0008 GETMET R3 R3 K4
- 0x7C0C0200, // 0009 CALL R3 1
- 0x8C100505, // 000A GETMET R4 R2 K5
- 0x7C100200, // 000B CALL R4 1
- 0xB8160C00, // 000C GETNGBL R5 K6
- 0x8C140B07, // 000D GETMET R5 R5 K7
- 0x601C0018, // 000E GETGBL R7 G24
- 0x58200008, // 000F LDCONST R8 K8
- 0x5C240600, // 0010 MOVE R9 R3
- 0x5C280800, // 0011 MOVE R10 R4
- 0x7C1C0600, // 0012 CALL R7 3
- 0x58200009, // 0013 LDCONST R8 K9
- 0x7C140600, // 0014 CALL R5 3
- 0x8C14010A, // 0015 GETMET R5 R0 K10
- 0x7C140200, // 0016 CALL R5 1
- 0x80000000, // 0017 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: bridge_remove_endpoint
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_bridge_remove_endpoint, /* name */
- be_nested_proto(
- 11, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
- /* K0 */ be_nested_str_weak(json),
- /* K1 */ be_nested_str_weak(plugins_config),
- /* K2 */ be_nested_str_weak(contains),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(log),
- /* K5 */ be_nested_str_weak(MTR_X3A_X20Cannot_X20remove_X20an_X20enpoint_X20not_X20configured_X3A_X20),
- /* K6 */ be_const_int(3),
- /* K7 */ be_nested_str_weak(MTR_X3A_X20deleting_X20endpoint_X20_X3D_X20_X25i),
- /* K8 */ be_const_int(2),
- /* K9 */ be_nested_str_weak(remove),
- /* K10 */ be_nested_str_weak(plugins_persist),
- /* K11 */ be_const_int(0),
- /* K12 */ be_nested_str_weak(plugins),
- /* K13 */ be_nested_str_weak(get_endpoint),
- /* K14 */ be_const_int(1),
- /* K15 */ be_nested_str_weak(clean_remotes),
- /* K16 */ be_nested_str_weak(save_param),
- /* K17 */ be_nested_str_weak(signal_endpoints_changed),
- }),
- be_str_weak(bridge_remove_endpoint),
- &be_const_str_solidified,
- ( &(const binstruction[58]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x600C0008, // 0001 GETGBL R3 G8
- 0x5C100200, // 0002 MOVE R4 R1
- 0x7C0C0200, // 0003 CALL R3 1
- 0x4C100000, // 0004 LDNIL R4
- 0x4C140000, // 0005 LDNIL R5
- 0x88180101, // 0006 GETMBR R6 R0 K1
- 0x8C180D02, // 0007 GETMET R6 R6 K2
- 0x5C200600, // 0008 MOVE R8 R3
- 0x7C180400, // 0009 CALL R6 2
- 0x741A0005, // 000A JMPT R6 #0011
- 0xB81A0600, // 000B GETNGBL R6 K3
- 0x8C180D04, // 000C GETMET R6 R6 K4
- 0x00220A03, // 000D ADD R8 K5 R3
- 0x58240006, // 000E LDCONST R9 K6
- 0x7C180600, // 000F CALL R6 3
- 0x80000C00, // 0010 RET 0
- 0xB81A0600, // 0011 GETNGBL R6 K3
- 0x8C180D04, // 0012 GETMET R6 R6 K4
- 0x60200018, // 0013 GETGBL R8 G24
- 0x58240007, // 0014 LDCONST R9 K7
- 0x5C280200, // 0015 MOVE R10 R1
- 0x7C200400, // 0016 CALL R8 2
- 0x58240008, // 0017 LDCONST R9 K8
- 0x7C180600, // 0018 CALL R6 3
- 0x88180101, // 0019 GETMBR R6 R0 K1
- 0x8C180D09, // 001A GETMET R6 R6 K9
- 0x5C200600, // 001B MOVE R8 R3
- 0x7C180400, // 001C CALL R6 2
- 0x50180200, // 001D LDBOOL R6 1 0
- 0x90021406, // 001E SETMBR R0 K10 R6
- 0x5818000B, // 001F LDCONST R6 K11
- 0x601C000C, // 0020 GETGBL R7 G12
- 0x8820010C, // 0021 GETMBR R8 R0 K12
- 0x7C1C0200, // 0022 CALL R7 1
- 0x141C0C07, // 0023 LT R7 R6 R7
- 0x781E000D, // 0024 JMPF R7 #0033
- 0x881C010C, // 0025 GETMBR R7 R0 K12
- 0x941C0E06, // 0026 GETIDX R7 R7 R6
- 0x8C1C0F0D, // 0027 GETMET R7 R7 K13
- 0x7C1C0200, // 0028 CALL R7 1
- 0x1C1C0207, // 0029 EQ R7 R1 R7
- 0x781E0005, // 002A JMPF R7 #0031
- 0x881C010C, // 002B GETMBR R7 R0 K12
- 0x8C1C0F09, // 002C GETMET R7 R7 K9
- 0x5C240C00, // 002D MOVE R9 R6
- 0x7C1C0400, // 002E CALL R7 2
- 0x70020002, // 002F JMP #0033
- 0x70020000, // 0030 JMP #0032
- 0x00180D0E, // 0031 ADD R6 R6 K14
- 0x7001FFEC, // 0032 JMP #0020
- 0x8C1C010F, // 0033 GETMET R7 R0 K15
- 0x7C1C0200, // 0034 CALL R7 1
- 0x8C1C0110, // 0035 GETMET R7 R0 K16
- 0x7C1C0200, // 0036 CALL R7 1
- 0x8C1C0111, // 0037 GETMET R7 R0 K17
- 0x7C1C0200, // 0038 CALL R7 1
- 0x80000000, // 0039 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: mdns_remove_PASE
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_mdns_remove_PASE, /* name */
- be_nested_proto(
- 10, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[20]) { /* constants */
- /* K0 */ be_nested_str_weak(mdns),
- /* K1 */ be_nested_str_weak(mdns_pase_eth),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(log),
- /* K4 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eremove_service_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X2C_X20_X25s_X29),
- /* K5 */ be_nested_str_weak(_matterc),
- /* K6 */ be_nested_str_weak(_udp),
- /* K7 */ be_nested_str_weak(commissioning_instance_eth),
- /* K8 */ be_nested_str_weak(hostname_eth),
- /* K9 */ be_const_int(3),
- /* K10 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27),
- /* K11 */ be_nested_str_weak(eth),
- /* K12 */ be_nested_str_weak(remove_service),
- /* K13 */ be_nested_str_weak(mdns_pase_wifi),
- /* K14 */ be_nested_str_weak(commissioning_instance_wifi),
- /* K15 */ be_nested_str_weak(hostname_wifi),
- /* K16 */ be_nested_str_weak(wifi),
- /* K17 */ be_nested_str_weak(MTR_X3A_X20Exception),
- /* K18 */ be_nested_str_weak(_X7C),
- /* K19 */ be_const_int(2),
- }),
- be_str_weak(mdns_remove_PASE),
- &be_const_str_solidified,
- ( &(const binstruction[82]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xA802003D, // 0001 EXBLK 0 #0040
- 0x88080101, // 0002 GETMBR R2 R0 K1
- 0x780A001B, // 0003 JMPF R2 #0020
- 0xB80A0400, // 0004 GETNGBL R2 K2
- 0x8C080503, // 0005 GETMET R2 R2 K3
- 0x60100018, // 0006 GETGBL R4 G24
- 0x58140004, // 0007 LDCONST R5 K4
- 0x58180005, // 0008 LDCONST R6 K5
- 0x581C0006, // 0009 LDCONST R7 K6
- 0x88200107, // 000A GETMBR R8 R0 K7
- 0x88240108, // 000B GETMBR R9 R0 K8
- 0x7C100A00, // 000C CALL R4 5
- 0x58140009, // 000D LDCONST R5 K9
- 0x7C080600, // 000E CALL R2 3
- 0xB80A0400, // 000F GETNGBL R2 K2
- 0x8C080503, // 0010 GETMET R2 R2 K3
- 0x60100018, // 0011 GETGBL R4 G24
- 0x5814000A, // 0012 LDCONST R5 K10
- 0x5818000B, // 0013 LDCONST R6 K11
- 0x881C0107, // 0014 GETMBR R7 R0 K7
- 0x7C100600, // 0015 CALL R4 3
- 0x58140009, // 0016 LDCONST R5 K9
- 0x7C080600, // 0017 CALL R2 3
- 0x50080000, // 0018 LDBOOL R2 0 0
- 0x90020202, // 0019 SETMBR R0 K1 R2
- 0x8C08030C, // 001A GETMET R2 R1 K12
- 0x58100005, // 001B LDCONST R4 K5
- 0x58140006, // 001C LDCONST R5 K6
- 0x88180107, // 001D GETMBR R6 R0 K7
- 0x881C0108, // 001E GETMBR R7 R0 K8
- 0x7C080A00, // 001F CALL R2 5
- 0x8808010D, // 0020 GETMBR R2 R0 K13
- 0x780A001B, // 0021 JMPF R2 #003E
- 0xB80A0400, // 0022 GETNGBL R2 K2
- 0x8C080503, // 0023 GETMET R2 R2 K3
- 0x60100018, // 0024 GETGBL R4 G24
- 0x58140004, // 0025 LDCONST R5 K4
- 0x58180005, // 0026 LDCONST R6 K5
- 0x581C0006, // 0027 LDCONST R7 K6
- 0x8820010E, // 0028 GETMBR R8 R0 K14
- 0x8824010F, // 0029 GETMBR R9 R0 K15
- 0x7C100A00, // 002A CALL R4 5
- 0x58140009, // 002B LDCONST R5 K9
- 0x7C080600, // 002C CALL R2 3
- 0xB80A0400, // 002D GETNGBL R2 K2
- 0x8C080503, // 002E GETMET R2 R2 K3
- 0x60100018, // 002F GETGBL R4 G24
- 0x5814000A, // 0030 LDCONST R5 K10
- 0x58180010, // 0031 LDCONST R6 K16
- 0x881C010E, // 0032 GETMBR R7 R0 K14
- 0x7C100600, // 0033 CALL R4 3
- 0x58140009, // 0034 LDCONST R5 K9
- 0x7C080600, // 0035 CALL R2 3
- 0x50080000, // 0036 LDBOOL R2 0 0
- 0x90021A02, // 0037 SETMBR R0 K13 R2
- 0x8C08030C, // 0038 GETMET R2 R1 K12
- 0x58100005, // 0039 LDCONST R4 K5
- 0x58140006, // 003A LDCONST R5 K6
- 0x8818010E, // 003B GETMBR R6 R0 K14
- 0x881C010F, // 003C GETMBR R7 R0 K15
- 0x7C080A00, // 003D CALL R2 5
- 0xA8040001, // 003E EXBLK 1 1
- 0x70020010, // 003F JMP #0051
- 0xAC080002, // 0040 CATCH R2 0 2
- 0x7002000D, // 0041 JMP #0050
- 0xB8120400, // 0042 GETNGBL R4 K2
- 0x8C100903, // 0043 GETMET R4 R4 K3
- 0x60180008, // 0044 GETGBL R6 G8
- 0x5C1C0400, // 0045 MOVE R7 R2
- 0x7C180200, // 0046 CALL R6 1
- 0x001A2206, // 0047 ADD R6 K17 R6
- 0x00180D12, // 0048 ADD R6 R6 K18
- 0x601C0008, // 0049 GETGBL R7 G8
- 0x5C200600, // 004A MOVE R8 R3
- 0x7C1C0200, // 004B CALL R7 1
- 0x00180C07, // 004C ADD R6 R6 R7
- 0x581C0013, // 004D LDCONST R7 K19
- 0x7C100600, // 004E CALL R4 3
- 0x70020000, // 004F JMP #0051
- 0xB0080000, // 0050 RAISE 2 R0 R0
- 0x80000000, // 0051 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: _mdns_announce_hostname
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device__mdns_announce_hostname, /* name */
- be_nested_proto(
- 14, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[27]) { /* constants */
- /* K0 */ be_nested_str_weak(mdns),
- /* K1 */ be_nested_str_weak(string),
- /* K2 */ be_nested_str_weak(start),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(eth),
- /* K5 */ be_nested_str_weak(hostname_eth),
- /* K6 */ be_nested_str_weak(replace),
- /* K7 */ be_nested_str_weak(find),
- /* K8 */ be_nested_str_weak(mac),
- /* K9 */ be_nested_str_weak(_X3A),
- /* K10 */ be_nested_str_weak(),
- /* K11 */ be_nested_str_weak(ipv4only),
- /* K12 */ be_nested_str_weak(contains),
- /* K13 */ be_nested_str_weak(ip6local),
- /* K14 */ be_nested_str_weak(add_hostname),
- /* K15 */ be_nested_str_weak(ip),
- /* K16 */ be_nested_str_weak(ip6),
- /* K17 */ be_nested_str_weak(log),
- /* K18 */ be_nested_str_weak(MTR_X3A_X20calling_X20mdns_X2Eadd_hostname_X28_X25s_X2C_X20_X25s_X29),
- /* K19 */ be_const_int(3),
- /* K20 */ be_nested_str_weak(wifi),
- /* K21 */ be_nested_str_weak(hostname_wifi),
- /* K22 */ be_nested_str_weak(MTR_X3A_X20start_X20mDNS_X20on_X20_X25s_X20host_X20_X27_X25s_X2Elocal_X27),
- /* K23 */ be_nested_str_weak(MTR_X3A_X20Exception),
- /* K24 */ be_nested_str_weak(_X7C),
- /* K25 */ be_const_int(2),
- /* K26 */ be_nested_str_weak(mdns_announce_op_discovery_all_fabrics),
- }),
- be_str_weak(_mdns_announce_hostname),
- &be_const_str_solidified,
- ( &(const binstruction[148]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0xA40E0200, // 0001 IMPORT R3 K1
- 0x8C100502, // 0002 GETMET R4 R2 K2
- 0x7C100200, // 0003 CALL R4 1
- 0xA802007A, // 0004 EXBLK 0 #0080
- 0x78060034, // 0005 JMPF R1 #003B
- 0xB8120600, // 0006 GETNGBL R4 K3
- 0x8C100904, // 0007 GETMET R4 R4 K4
- 0x7C100200, // 0008 CALL R4 1
- 0x8C140706, // 0009 GETMET R5 R3 K6
- 0x8C1C0907, // 000A GETMET R7 R4 K7
- 0x58240008, // 000B LDCONST R9 K8
- 0x7C1C0400, // 000C CALL R7 2
- 0x58200009, // 000D LDCONST R8 K9
- 0x5824000A, // 000E LDCONST R9 K10
- 0x7C140800, // 000F CALL R5 4
- 0x90020A05, // 0010 SETMBR R0 K5 R5
- 0x8814010B, // 0011 GETMBR R5 R0 K11
- 0x78160003, // 0012 JMPF R5 #0017
- 0x8C14090C, // 0013 GETMET R5 R4 K12
- 0x581C000D, // 0014 LDCONST R7 K13
- 0x7C140400, // 0015 CALL R5 2
- 0x7416000F, // 0016 JMPT R5 #0027
- 0x8C14050E, // 0017 GETMET R5 R2 K14
- 0x881C0105, // 0018 GETMBR R7 R0 K5
- 0x8C200907, // 0019 GETMET R8 R4 K7
- 0x5828000D, // 001A LDCONST R10 K13
- 0x582C000A, // 001B LDCONST R11 K10
- 0x7C200600, // 001C CALL R8 3
- 0x8C240907, // 001D GETMET R9 R4 K7
- 0x582C000F, // 001E LDCONST R11 K15
- 0x5830000A, // 001F LDCONST R12 K10
- 0x7C240600, // 0020 CALL R9 3
- 0x8C280907, // 0021 GETMET R10 R4 K7
- 0x58300010, // 0022 LDCONST R12 K16
- 0x5834000A, // 0023 LDCONST R13 K10
- 0x7C280600, // 0024 CALL R10 3
- 0x7C140A00, // 0025 CALL R5 5
- 0x70020012, // 0026 JMP #003A
- 0xB8160600, // 0027 GETNGBL R5 K3
- 0x8C140B11, // 0028 GETMET R5 R5 K17
- 0x601C0018, // 0029 GETGBL R7 G24
- 0x58200012, // 002A LDCONST R8 K18
- 0x88240105, // 002B GETMBR R9 R0 K5
- 0x8C280907, // 002C GETMET R10 R4 K7
- 0x5830000F, // 002D LDCONST R12 K15
- 0x5834000A, // 002E LDCONST R13 K10
- 0x7C280600, // 002F CALL R10 3
- 0x7C1C0600, // 0030 CALL R7 3
- 0x58200013, // 0031 LDCONST R8 K19
- 0x7C140600, // 0032 CALL R5 3
- 0x8C14050E, // 0033 GETMET R5 R2 K14
- 0x881C0105, // 0034 GETMBR R7 R0 K5
- 0x8C200907, // 0035 GETMET R8 R4 K7
- 0x5828000F, // 0036 LDCONST R10 K15
- 0x582C000A, // 0037 LDCONST R11 K10
- 0x7C200600, // 0038 CALL R8 3
- 0x7C140600, // 0039 CALL R5 3
- 0x70020033, // 003A JMP #006F
- 0xB8120600, // 003B GETNGBL R4 K3
- 0x8C100914, // 003C GETMET R4 R4 K20
- 0x7C100200, // 003D CALL R4 1
- 0x8C140706, // 003E GETMET R5 R3 K6
- 0x8C1C0907, // 003F GETMET R7 R4 K7
- 0x58240008, // 0040 LDCONST R9 K8
- 0x7C1C0400, // 0041 CALL R7 2
- 0x58200009, // 0042 LDCONST R8 K9
- 0x5824000A, // 0043 LDCONST R9 K10
- 0x7C140800, // 0044 CALL R5 4
- 0x90022A05, // 0045 SETMBR R0 K21 R5
- 0x8814010B, // 0046 GETMBR R5 R0 K11
- 0x78160003, // 0047 JMPF R5 #004C
- 0x8C14090C, // 0048 GETMET R5 R4 K12
- 0x581C000D, // 0049 LDCONST R7 K13
- 0x7C140400, // 004A CALL R5 2
- 0x7416000F, // 004B JMPT R5 #005C
- 0x8C14050E, // 004C GETMET R5 R2 K14
- 0x881C0115, // 004D GETMBR R7 R0 K21
- 0x8C200907, // 004E GETMET R8 R4 K7
- 0x5828000D, // 004F LDCONST R10 K13
- 0x582C000A, // 0050 LDCONST R11 K10
- 0x7C200600, // 0051 CALL R8 3
- 0x8C240907, // 0052 GETMET R9 R4 K7
- 0x582C000F, // 0053 LDCONST R11 K15
- 0x5830000A, // 0054 LDCONST R12 K10
- 0x7C240600, // 0055 CALL R9 3
- 0x8C280907, // 0056 GETMET R10 R4 K7
- 0x58300010, // 0057 LDCONST R12 K16
- 0x5834000A, // 0058 LDCONST R13 K10
- 0x7C280600, // 0059 CALL R10 3
- 0x7C140A00, // 005A CALL R5 5
- 0x70020012, // 005B JMP #006F
- 0xB8160600, // 005C GETNGBL R5 K3
- 0x8C140B11, // 005D GETMET R5 R5 K17
- 0x601C0018, // 005E GETGBL R7 G24
- 0x58200012, // 005F LDCONST R8 K18
- 0x88240115, // 0060 GETMBR R9 R0 K21
- 0x8C280907, // 0061 GETMET R10 R4 K7
- 0x5830000F, // 0062 LDCONST R12 K15
- 0x5834000A, // 0063 LDCONST R13 K10
- 0x7C280600, // 0064 CALL R10 3
- 0x7C1C0600, // 0065 CALL R7 3
- 0x58200013, // 0066 LDCONST R8 K19
- 0x7C140600, // 0067 CALL R5 3
- 0x8C14050E, // 0068 GETMET R5 R2 K14
- 0x881C0115, // 0069 GETMBR R7 R0 K21
- 0x8C200907, // 006A GETMET R8 R4 K7
- 0x5828000F, // 006B LDCONST R10 K15
- 0x582C000A, // 006C LDCONST R11 K10
- 0x7C200600, // 006D CALL R8 3
- 0x7C140600, // 006E CALL R5 3
- 0xB8120600, // 006F GETNGBL R4 K3
- 0x8C100911, // 0070 GETMET R4 R4 K17
- 0x60180018, // 0071 GETGBL R6 G24
- 0x581C0016, // 0072 LDCONST R7 K22
- 0x78060001, // 0073 JMPF R1 #0076
- 0x58200004, // 0074 LDCONST R8 K4
- 0x70020000, // 0075 JMP #0077
- 0x58200014, // 0076 LDCONST R8 K20
- 0x78060001, // 0077 JMPF R1 #007A
- 0x88240105, // 0078 GETMBR R9 R0 K5
- 0x70020000, // 0079 JMP #007B
- 0x88240115, // 007A GETMBR R9 R0 K21
- 0x7C180600, // 007B CALL R6 3
- 0x581C0013, // 007C LDCONST R7 K19
- 0x7C100600, // 007D CALL R4 3
- 0xA8040001, // 007E EXBLK 1 1
- 0x70020010, // 007F JMP #0091
- 0xAC100002, // 0080 CATCH R4 0 2
- 0x7002000D, // 0081 JMP #0090
- 0xB81A0600, // 0082 GETNGBL R6 K3
- 0x8C180D11, // 0083 GETMET R6 R6 K17
- 0x60200008, // 0084 GETGBL R8 G8
- 0x5C240800, // 0085 MOVE R9 R4
- 0x7C200200, // 0086 CALL R8 1
- 0x00222E08, // 0087 ADD R8 K23 R8
- 0x00201118, // 0088 ADD R8 R8 K24
- 0x60240008, // 0089 GETGBL R9 G8
- 0x5C280A00, // 008A MOVE R10 R5
- 0x7C240200, // 008B CALL R9 1
- 0x00201009, // 008C ADD R8 R8 R9
- 0x58240019, // 008D LDCONST R9 K25
- 0x7C180600, // 008E CALL R6 3
- 0x70020000, // 008F JMP #0091
- 0xB0080000, // 0090 RAISE 2 R0 R0
- 0x8C10011A, // 0091 GETMET R4 R0 K26
- 0x7C100200, // 0092 CALL R4 1
- 0x80000000, // 0093 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: conf_to_log
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_conf_to_log, /* name */
- be_nested_proto(
- 9, /* nstack */
- 1, /* argc */
- 4, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_Device),
- /* K1 */ be_nested_str_weak(),
- /* K2 */ be_nested_str_weak(k2l),
- /* K3 */ be_nested_str_weak(type),
- /* K4 */ be_nested_str_weak(_X20_X25s_X3A_X25s),
- /* K5 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(conf_to_log),
- &be_const_str_solidified,
- ( &(const binstruction[24]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0x58080001, // 0001 LDCONST R2 K1
- 0x600C0010, // 0002 GETGBL R3 G16
- 0x8C100302, // 0003 GETMET R4 R1 K2
- 0x5C180000, // 0004 MOVE R6 R0
- 0x7C100400, // 0005 CALL R4 2
- 0x7C0C0200, // 0006 CALL R3 1
- 0xA802000B, // 0007 EXBLK 0 #0014
- 0x5C100600, // 0008 MOVE R4 R3
- 0x7C100000, // 0009 CALL R4 0
- 0x1C140903, // 000A EQ R5 R4 K3
- 0x78160000, // 000B JMPF R5 #000D
- 0x7001FFFA, // 000C JMP #0008
- 0x60140018, // 000D GETGBL R5 G24
- 0x58180004, // 000E LDCONST R6 K4
- 0x5C1C0800, // 000F MOVE R7 R4
- 0x94200004, // 0010 GETIDX R8 R0 R4
- 0x7C140600, // 0011 CALL R5 3
- 0x00080405, // 0012 ADD R2 R2 R5
- 0x7001FFF3, // 0013 JMP #0008
- 0x580C0005, // 0014 LDCONST R3 K5
- 0xAC0C0200, // 0015 CATCH R3 1 0
- 0xB0080000, // 0016 RAISE 2 R0 R0
- 0x80040400, // 0017 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: invoke_request
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_invoke_request, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(endpoint),
- /* K2 */ be_nested_str_weak(plugins),
- /* K3 */ be_nested_str_weak(invoke_request),
- /* K4 */ be_const_int(1),
- /* K5 */ be_nested_str_weak(status),
- /* K6 */ be_nested_str_weak(matter),
- /* K7 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT),
- }),
- be_str_weak(invoke_request),
- &be_const_str_solidified,
- ( &(const binstruction[24]) { /* code */
- 0x58100000, // 0000 LDCONST R4 K0
- 0x88140701, // 0001 GETMBR R5 R3 K1
- 0x6018000C, // 0002 GETGBL R6 G12
- 0x881C0102, // 0003 GETMBR R7 R0 K2
- 0x7C180200, // 0004 CALL R6 1
- 0x14180806, // 0005 LT R6 R4 R6
- 0x781A000C, // 0006 JMPF R6 #0014
- 0x88180102, // 0007 GETMBR R6 R0 K2
- 0x94180C04, // 0008 GETIDX R6 R6 R4
- 0x881C0D01, // 0009 GETMBR R7 R6 K1
- 0x1C1C0E05, // 000A EQ R7 R7 R5
- 0x781E0005, // 000B JMPF R7 #0012
- 0x8C1C0D03, // 000C GETMET R7 R6 K3
- 0x5C240200, // 000D MOVE R9 R1
- 0x5C280400, // 000E MOVE R10 R2
- 0x5C2C0600, // 000F MOVE R11 R3
- 0x7C1C0800, // 0010 CALL R7 4
- 0x80040E00, // 0011 RET 1 R7
- 0x00100904, // 0012 ADD R4 R4 K4
- 0x7001FFED, // 0013 JMP #0002
- 0xB81A0C00, // 0014 GETNGBL R6 K6
- 0x88180D07, // 0015 GETMBR R6 R6 K7
- 0x900E0A06, // 0016 SETMBR R3 K5 R6
- 0x80000000, // 0017 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: MtrInfo
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_MtrInfo, /* name */
- be_nested_proto(
- 10, /* nstack */
- 5, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(),
- /* K1 */ be_nested_str_weak(plugins),
- /* K2 */ be_nested_str_weak(MtrInfo_one),
- /* K3 */ be_nested_str_weak(endpoint),
- /* K4 */ be_nested_str_weak(stop_iteration),
- /* K5 */ be_nested_str_weak(int),
- /* K6 */ be_nested_str_weak(find_plugin_by_friendly_name),
- /* K7 */ be_nested_str_weak(tasmota),
- /* K8 */ be_nested_str_weak(resp_cmnd_done),
- }),
- be_str_weak(MtrInfo),
- &be_const_str_solidified,
- ( &(const binstruction[40]) { /* code */
- 0x1C140700, // 0000 EQ R5 R3 K0
- 0x7815FFFF, // 0001 JMPF R5 #0002
- 0x1C140700, // 0002 EQ R5 R3 K0
- 0x7816000D, // 0003 JMPF R5 #0012
- 0x60140010, // 0004 GETGBL R5 G16
- 0x88180101, // 0005 GETMBR R6 R0 K1
- 0x7C140200, // 0006 CALL R5 1
- 0xA8020005, // 0007 EXBLK 0 #000E
- 0x5C180A00, // 0008 MOVE R6 R5
- 0x7C180000, // 0009 CALL R6 0
- 0x8C1C0102, // 000A GETMET R7 R0 K2
- 0x88240D03, // 000B GETMBR R9 R6 K3
- 0x7C1C0400, // 000C CALL R7 2
- 0x7001FFF9, // 000D JMP #0008
- 0x58140004, // 000E LDCONST R5 K4
- 0xAC140200, // 000F CATCH R5 1 0
- 0xB0080000, // 0010 RAISE 2 R0 R0
- 0x70020011, // 0011 JMP #0024
- 0x60140004, // 0012 GETGBL R5 G4
- 0x5C180800, // 0013 MOVE R6 R4
- 0x7C140200, // 0014 CALL R5 1
- 0x1C140B05, // 0015 EQ R5 R5 K5
- 0x78160003, // 0016 JMPF R5 #001B
- 0x8C140102, // 0017 GETMET R5 R0 K2
- 0x5C1C0800, // 0018 MOVE R7 R4
- 0x7C140400, // 0019 CALL R5 2
- 0x70020008, // 001A JMP #0024
- 0x8C140106, // 001B GETMET R5 R0 K6
- 0x5C1C0600, // 001C MOVE R7 R3
- 0x7C140400, // 001D CALL R5 2
- 0x4C180000, // 001E LDNIL R6
- 0x20180A06, // 001F NE R6 R5 R6
- 0x781A0002, // 0020 JMPF R6 #0024
- 0x8C180102, // 0021 GETMET R6 R0 K2
- 0x88200B03, // 0022 GETMBR R8 R5 K3
- 0x7C180400, // 0023 CALL R6 2
- 0xB8160E00, // 0024 GETNGBL R5 K7
- 0x8C140B08, // 0025 GETMET R5 R5 K8
- 0x7C140200, // 0026 CALL R5 1
- 0x80000000, // 0027 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_plugin_class_displayname
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_get_plugin_class_displayname, /* name */
+be_local_closure(class_Matter_Device_received_ack, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Device,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(plugins_classes),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(DISPLAY_NAME),
- /* K3 */ be_nested_str_weak(),
- }),
- be_str_weak(get_plugin_class_displayname),
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(received_ack),
&be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
+ ( &(const binstruction[ 5]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x8C080501, // 0001 GETMET R2 R2 K1
0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
- 0x780A0001, // 0004 JMPF R2 #0007
- 0x880C0502, // 0005 GETMBR R3 R2 K2
- 0x70020000, // 0006 JMP #0008
- 0x580C0003, // 0007 LDCONST R3 K3
- 0x80040600, // 0008 RET 1 R3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: bridge_add_endpoint
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_bridge_add_endpoint, /* name */
- be_nested_proto(
- 17, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[21]) { /* constants */
- /* K0 */ be_nested_str_weak(plugins_classes),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(log),
- /* K4 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27),
- /* K5 */ be_nested_str_weak(_X27_X20skipping),
- /* K6 */ be_const_int(3),
- /* K7 */ be_nested_str_weak(next_ep),
- /* K8 */ be_nested_str_weak(plugins),
- /* K9 */ be_nested_str_weak(push),
- /* K10 */ be_nested_str_weak(type),
- /* K11 */ be_nested_str_weak(keys),
- /* K12 */ be_nested_str_weak(stop_iteration),
- /* K13 */ be_nested_str_weak(MTR_X3A_X20adding_X20endpoint_X20_X3D_X20_X25i_X20type_X3A_X25s_X25s),
- /* K14 */ be_nested_str_weak(conf_to_log),
- /* K15 */ be_const_int(2),
- /* K16 */ be_nested_str_weak(plugins_config),
- /* K17 */ be_nested_str_weak(plugins_persist),
- /* K18 */ be_const_int(1),
- /* K19 */ be_nested_str_weak(save_param),
- /* K20 */ be_nested_str_weak(signal_endpoints_changed),
- }),
- be_str_weak(bridge_add_endpoint),
- &be_const_str_solidified,
- ( &(const binstruction[70]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x5C140200, // 0002 MOVE R5 R1
- 0x7C0C0400, // 0003 CALL R3 2
- 0x4C100000, // 0004 LDNIL R4
- 0x1C100604, // 0005 EQ R4 R3 R4
- 0x78120009, // 0006 JMPF R4 #0011
- 0xB8120400, // 0007 GETNGBL R4 K2
- 0x8C100903, // 0008 GETMET R4 R4 K3
- 0x60180008, // 0009 GETGBL R6 G8
- 0x5C1C0200, // 000A MOVE R7 R1
- 0x7C180200, // 000B CALL R6 1
- 0x001A0806, // 000C ADD R6 K4 R6
- 0x00180D05, // 000D ADD R6 R6 K5
- 0x581C0006, // 000E LDCONST R7 K6
- 0x7C100600, // 000F CALL R4 3
- 0x80000800, // 0010 RET 0
- 0x88100107, // 0011 GETMBR R4 R0 K7
- 0x60140008, // 0012 GETGBL R5 G8
- 0x5C180800, // 0013 MOVE R6 R4
- 0x7C140200, // 0014 CALL R5 1
- 0x5C180600, // 0015 MOVE R6 R3
- 0x5C1C0000, // 0016 MOVE R7 R0
- 0x5C200800, // 0017 MOVE R8 R4
- 0x5C240400, // 0018 MOVE R9 R2
- 0x7C180600, // 0019 CALL R6 3
- 0x881C0108, // 001A GETMBR R7 R0 K8
- 0x8C1C0F09, // 001B GETMET R7 R7 K9
- 0x5C240C00, // 001C MOVE R9 R6
- 0x7C1C0400, // 001D CALL R7 2
- 0x601C0013, // 001E GETGBL R7 G19
- 0x7C1C0000, // 001F CALL R7 0
- 0x981E1401, // 0020 SETIDX R7 K10 R1
- 0x60200010, // 0021 GETGBL R8 G16
- 0x8C24050B, // 0022 GETMET R9 R2 K11
- 0x7C240200, // 0023 CALL R9 1
- 0x7C200200, // 0024 CALL R8 1
- 0xA8020004, // 0025 EXBLK 0 #002B
- 0x5C241000, // 0026 MOVE R9 R8
- 0x7C240000, // 0027 CALL R9 0
- 0x94280409, // 0028 GETIDX R10 R2 R9
- 0x981C120A, // 0029 SETIDX R7 R9 R10
- 0x7001FFFA, // 002A JMP #0026
- 0x5820000C, // 002B LDCONST R8 K12
- 0xAC200200, // 002C CATCH R8 1 0
- 0xB0080000, // 002D RAISE 2 R0 R0
- 0xB8220400, // 002E GETNGBL R8 K2
- 0x8C201103, // 002F GETMET R8 R8 K3
- 0x60280018, // 0030 GETGBL R10 G24
- 0x582C000D, // 0031 LDCONST R11 K13
- 0x5C300800, // 0032 MOVE R12 R4
- 0x5C340200, // 0033 MOVE R13 R1
- 0x8C38010E, // 0034 GETMET R14 R0 K14
- 0x5C400400, // 0035 MOVE R16 R2
- 0x7C380400, // 0036 CALL R14 2
- 0x7C280800, // 0037 CALL R10 4
- 0x582C000F, // 0038 LDCONST R11 K15
- 0x7C200600, // 0039 CALL R8 3
- 0x88200110, // 003A GETMBR R8 R0 K16
- 0x98200A07, // 003B SETIDX R8 R5 R7
- 0x50200200, // 003C LDBOOL R8 1 0
- 0x90022208, // 003D SETMBR R0 K17 R8
- 0x88200107, // 003E GETMBR R8 R0 K7
- 0x00201112, // 003F ADD R8 R8 K18
- 0x90020E08, // 0040 SETMBR R0 K7 R8
- 0x8C200113, // 0041 GETMET R8 R0 K19
- 0x7C200200, // 0042 CALL R8 1
- 0x8C200114, // 0043 GETMET R8 R0 K20
- 0x7C200200, // 0044 CALL R8 1
- 0x80040800, // 0045 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: register_http_remote
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_register_http_remote, /* name */
- be_nested_proto(
- 9, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(http_remotes),
- /* K1 */ be_nested_str_weak(contains),
- /* K2 */ be_nested_str_weak(get_timeout),
- /* K3 */ be_nested_str_weak(set_timeout),
- /* K4 */ be_nested_str_weak(matter),
- /* K5 */ be_nested_str_weak(HTTP_remote),
- /* K6 */ be_nested_str_weak(plugins_config_remotes),
- /* K7 */ be_nested_str_weak(set_info),
- }),
- be_str_weak(register_http_remote),
- &be_const_str_solidified,
- ( &(const binstruction[42]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x4C100000, // 0001 LDNIL R4
- 0x1C0C0604, // 0002 EQ R3 R3 R4
- 0x780E0002, // 0003 JMPF R3 #0007
- 0x600C0013, // 0004 GETGBL R3 G19
- 0x7C0C0000, // 0005 CALL R3 0
- 0x90020003, // 0006 SETMBR R0 K0 R3
- 0x4C0C0000, // 0007 LDNIL R3
- 0x88100100, // 0008 GETMBR R4 R0 K0
- 0x8C100901, // 0009 GETMET R4 R4 K1
- 0x5C180200, // 000A MOVE R6 R1
- 0x7C100400, // 000B CALL R4 2
- 0x78120009, // 000C JMPF R4 #0017
- 0x88100100, // 000D GETMBR R4 R0 K0
- 0x940C0801, // 000E GETIDX R3 R4 R1
- 0x8C140702, // 000F GETMET R5 R3 K2
- 0x7C140200, // 0010 CALL R5 1
- 0x14140405, // 0011 LT R5 R2 R5
- 0x78160002, // 0012 JMPF R5 #0016
- 0x8C140703, // 0013 GETMET R5 R3 K3
- 0x5C1C0400, // 0014 MOVE R7 R2
- 0x7C140400, // 0015 CALL R5 2
- 0x70020011, // 0016 JMP #0029
- 0xB8120800, // 0017 GETNGBL R4 K4
- 0x8C100905, // 0018 GETMET R4 R4 K5
- 0x5C180000, // 0019 MOVE R6 R0
- 0x5C1C0200, // 001A MOVE R7 R1
- 0x5C200400, // 001B MOVE R8 R2
- 0x7C100800, // 001C CALL R4 4
- 0x5C0C0800, // 001D MOVE R3 R4
- 0x88100106, // 001E GETMBR R4 R0 K6
- 0x8C100901, // 001F GETMET R4 R4 K1
- 0x5C180200, // 0020 MOVE R6 R1
- 0x7C100400, // 0021 CALL R4 2
- 0x78120003, // 0022 JMPF R4 #0027
- 0x8C100707, // 0023 GETMET R4 R3 K7
- 0x88180106, // 0024 GETMBR R6 R0 K6
- 0x94180C01, // 0025 GETIDX R6 R6 R1
- 0x7C100400, // 0026 CALL R4 2
- 0x88100100, // 0027 GETMBR R4 R0 K0
- 0x98100203, // 0028 SETIDX R4 R1 R3
- 0x80040600, // 0029 RET 1 R3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: add_read_sensors_schedule
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_add_read_sensors_schedule, /* name */
- be_nested_proto(
- 5, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(probe_sensor_time),
- /* K1 */ be_nested_str_weak(probe_sensor_timestamp),
- /* K2 */ be_nested_str_weak(matter),
- /* K3 */ be_nested_str_weak(jitter),
- }),
- be_str_weak(add_read_sensors_schedule),
- &be_const_str_solidified,
- ( &(const binstruction[14]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x4C0C0000, // 0001 LDNIL R3
- 0x1C080403, // 0002 EQ R2 R2 R3
- 0x740A0002, // 0003 JMPT R2 #0007
- 0x88080100, // 0004 GETMBR R2 R0 K0
- 0x24080401, // 0005 GT R2 R2 R1
- 0x780A0005, // 0006 JMPF R2 #000D
- 0x90020001, // 0007 SETMBR R0 K0 R1
- 0xB80A0400, // 0008 GETNGBL R2 K2
- 0x8C080503, // 0009 GETMET R2 R2 K3
- 0x5C100200, // 000A MOVE R4 R1
- 0x7C080400, // 000B CALL R2 2
- 0x90020202, // 000C SETMBR R0 K1 R2
- 0x80000000, // 000D RET 0
+ 0x80040400, // 0004 RET 1 R2
})
)
);
@@ -1078,26 +255,22 @@ be_local_closure(class_Matter_Device_add_read_sensors_schedule, /* name */
/********************************************************************
** Solidified function: msg_received
********************************************************************/
-extern const bclass be_class_Matter_Device;
be_local_closure(class_Matter_Device_msg_received, /* name */
be_nested_proto(
9, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Device,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(message_handler),
- /* K1 */ be_nested_str_weak(msg_received),
- }),
+ &be_ktab_class_Matter_Device, /* shared constants */
be_str_weak(msg_received),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x88100100, // 0000 GETMBR R4 R0 K0
- 0x8C100901, // 0001 GETMET R4 R4 K1
+ 0x88100102, // 0000 GETMBR R4 R0 K2
+ 0x8C100903, // 0001 GETMET R4 R4 K3
0x5C180200, // 0002 MOVE R6 R1
0x5C1C0400, // 0003 MOVE R7 R2
0x5C200600, // 0004 MOVE R8 R3
@@ -1110,338 +283,506 @@ be_local_closure(class_Matter_Device_msg_received, /* name */
/********************************************************************
-** Solidified function: compute_qrcode_content
+** Solidified function: event_fabrics_saved
********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_compute_qrcode_content, /* name */
+be_local_closure(class_Matter_Device_event_fabrics_saved, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(event_fabrics_saved),
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0x88040104, // 0000 GETMBR R1 R0 K4
+ 0x8C040305, // 0001 GETMET R1 R1 K5
+ 0x7C040200, // 0002 CALL R1 1
+ 0x24040306, // 0003 GT R1 R1 K6
+ 0x78060005, // 0004 JMPF R1 #000B
+ 0x88040107, // 0005 GETMBR R1 R0 K7
+ 0x74060003, // 0006 JMPT R1 #000B
+ 0x50040200, // 0007 LDBOOL R1 1 0
+ 0x90020E01, // 0008 SETMBR R0 K7 R1
+ 0x8C040108, // 0009 GETMET R1 R0 K8
+ 0x7C040200, // 000A CALL R1 1
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: save_before_restart
+********************************************************************/
+be_local_closure(class_Matter_Device_save_before_restart, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(save_before_restart),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x88040109, // 0000 GETMBR R1 R0 K9
+ 0x8C04030A, // 0001 GETMET R1 R1 K10
+ 0x7C040200, // 0002 CALL R1 1
+ 0x88040109, // 0003 GETMBR R1 R0 K9
+ 0x8C04030B, // 0004 GETMET R1 R1 K11
+ 0x7C040200, // 0005 CALL R1 1
+ 0x80000000, // 0006 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: conf_to_log
+********************************************************************/
+be_local_closure(class_Matter_Device_conf_to_log, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 1, /* argc */
+ 12, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(conf_to_log),
+ &be_const_str_solidified,
+ ( &(const binstruction[24]) { /* code */
+ 0x5804000C, // 0000 LDCONST R1 K12
+ 0x5808000D, // 0001 LDCONST R2 K13
+ 0x600C0010, // 0002 GETGBL R3 G16
+ 0x8C10030E, // 0003 GETMET R4 R1 K14
+ 0x5C180000, // 0004 MOVE R6 R0
+ 0x7C100400, // 0005 CALL R4 2
+ 0x7C0C0200, // 0006 CALL R3 1
+ 0xA802000B, // 0007 EXBLK 0 #0014
+ 0x5C100600, // 0008 MOVE R4 R3
+ 0x7C100000, // 0009 CALL R4 0
+ 0x1C14090F, // 000A EQ R5 R4 K15
+ 0x78160000, // 000B JMPF R5 #000D
+ 0x7001FFFA, // 000C JMP #0008
+ 0x60140018, // 000D GETGBL R5 G24
+ 0x58180010, // 000E LDCONST R6 K16
+ 0x5C1C0800, // 000F MOVE R7 R4
+ 0x94200004, // 0010 GETIDX R8 R0 R4
+ 0x7C140600, // 0011 CALL R5 3
+ 0x00080405, // 0012 ADD R2 R2 R5
+ 0x7001FFF3, // 0013 JMP #0008
+ 0x580C0011, // 0014 LDCONST R3 K17
+ 0xAC0C0200, // 0015 CATCH R3 1 0
+ 0xB0080000, // 0016 RAISE 2 R0 R0
+ 0x80040400, // 0017 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: find_plugin_by_friendly_name
+********************************************************************/
+be_local_closure(class_Matter_Device_find_plugin_by_friendly_name, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(find_plugin_by_friendly_name),
+ &be_const_str_solidified,
+ ( &(const binstruction[35]) { /* code */
+ 0x4C080000, // 0000 LDNIL R2
+ 0x1C080202, // 0001 EQ R2 R1 R2
+ 0x740A0004, // 0002 JMPT R2 #0008
+ 0x6008000C, // 0003 GETGBL R2 G12
+ 0x5C0C0200, // 0004 MOVE R3 R1
+ 0x7C080200, // 0005 CALL R2 1
+ 0x1C080506, // 0006 EQ R2 R2 K6
+ 0x780A0001, // 0007 JMPF R2 #000A
+ 0x4C080000, // 0008 LDNIL R2
+ 0x80040400, // 0009 RET 1 R2
+ 0x58080006, // 000A LDCONST R2 K6
+ 0x600C000C, // 000B GETGBL R3 G12
+ 0x88100112, // 000C GETMBR R4 R0 K18
+ 0x7C0C0200, // 000D CALL R3 1
+ 0x140C0403, // 000E LT R3 R2 R3
+ 0x780E0010, // 000F JMPF R3 #0021
+ 0x880C0112, // 0010 GETMBR R3 R0 K18
+ 0x940C0602, // 0011 GETIDX R3 R3 R2
+ 0x8C100713, // 0012 GETMET R4 R3 K19
+ 0x7C100200, // 0013 CALL R4 1
+ 0x4C140000, // 0014 LDNIL R5
+ 0x20140805, // 0015 NE R5 R4 R5
+ 0x78160007, // 0016 JMPF R5 #001F
+ 0x6014000C, // 0017 GETGBL R5 G12
+ 0x5C180800, // 0018 MOVE R6 R4
+ 0x7C140200, // 0019 CALL R5 1
+ 0x24140B06, // 001A GT R5 R5 K6
+ 0x78160002, // 001B JMPF R5 #001F
+ 0x1C140801, // 001C EQ R5 R4 R1
+ 0x78160000, // 001D JMPF R5 #001F
+ 0x80040600, // 001E RET 1 R3
+ 0x00080514, // 001F ADD R2 R2 K20
+ 0x7001FFE9, // 0020 JMP #000B
+ 0x4C0C0000, // 0021 LDNIL R3
+ 0x80040600, // 0022 RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_plugin_remote_info
+********************************************************************/
+be_local_closure(class_Matter_Device_get_plugin_remote_info, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(get_plugin_remote_info),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x88080115, // 0000 GETMBR R2 R0 K21
+ 0x8C080516, // 0001 GETMET R2 R2 K22
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x60140013, // 0003 GETGBL R5 G19
+ 0x7C140000, // 0004 CALL R5 0
+ 0x7C080600, // 0005 CALL R2 3
+ 0x80040400, // 0006 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: remove_fabric
+********************************************************************/
+be_local_closure(class_Matter_Device_remove_fabric, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(remove_fabric),
+ &be_const_str_solidified,
+ ( &(const binstruction[33]) { /* code */
+ 0x4C080000, // 0000 LDNIL R2
+ 0x20080202, // 0001 NE R2 R1 R2
+ 0x780A0019, // 0002 JMPF R2 #001D
+ 0xB80A2E00, // 0003 GETNGBL R2 K23
+ 0x8C0C0319, // 0004 GETMET R3 R1 K25
+ 0x7C0C0200, // 0005 CALL R3 1
+ 0x8C0C071A, // 0006 GETMET R3 R3 K26
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0x8C0C071B, // 0008 GETMET R3 R3 K27
+ 0x7C0C0200, // 0009 CALL R3 1
+ 0x8C0C071C, // 000A GETMET R3 R3 K28
+ 0x7C0C0200, // 000B CALL R3 1
+ 0x000E3003, // 000C ADD R3 K24 R3
+ 0x5810001D, // 000D LDCONST R4 K29
+ 0x7C080400, // 000E CALL R2 2
+ 0x88080102, // 000F GETMBR R2 R0 K2
+ 0x8808051E, // 0010 GETMBR R2 R2 K30
+ 0x8808051F, // 0011 GETMBR R2 R2 K31
+ 0x8C080520, // 0012 GETMET R2 R2 K32
+ 0x5C100200, // 0013 MOVE R4 R1
+ 0x7C080400, // 0014 CALL R2 2
+ 0x88080109, // 0015 GETMBR R2 R0 K9
+ 0x8C080521, // 0016 GETMET R2 R2 K33
+ 0x5C100200, // 0017 MOVE R4 R1
+ 0x7C080400, // 0018 CALL R2 2
+ 0x88080104, // 0019 GETMBR R2 R0 K4
+ 0x8C080522, // 001A GETMET R2 R2 K34
+ 0x5C100200, // 001B MOVE R4 R1
+ 0x7C080400, // 001C CALL R2 2
+ 0x88080104, // 001D GETMBR R2 R0 K4
+ 0x8C080523, // 001E GETMET R2 R2 K35
+ 0x7C080200, // 001F CALL R2 1
+ 0x80000000, // 0020 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: resolve_attribute_read_solo
+********************************************************************/
+be_local_closure(class_Matter_Device_resolve_attribute_read_solo, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(resolve_attribute_read_solo),
+ &be_const_str_solidified,
+ ( &(const binstruction[47]) { /* code */
+ 0x88080324, // 0000 GETMBR R2 R1 K36
+ 0x880C0325, // 0001 GETMBR R3 R1 K37
+ 0x88100326, // 0002 GETMBR R4 R1 K38
+ 0x4C140000, // 0003 LDNIL R5
+ 0x1C140405, // 0004 EQ R5 R2 R5
+ 0x74160005, // 0005 JMPT R5 #000C
+ 0x4C140000, // 0006 LDNIL R5
+ 0x1C140605, // 0007 EQ R5 R3 R5
+ 0x74160002, // 0008 JMPT R5 #000C
+ 0x4C140000, // 0009 LDNIL R5
+ 0x1C140805, // 000A EQ R5 R4 R5
+ 0x78160001, // 000B JMPF R5 #000E
+ 0x4C140000, // 000C LDNIL R5
+ 0x80040A00, // 000D RET 1 R5
+ 0x8C140127, // 000E GETMET R5 R0 K39
+ 0x5C1C0400, // 000F MOVE R7 R2
+ 0x7C140400, // 0010 CALL R5 2
+ 0x4C180000, // 0011 LDNIL R6
+ 0x1C180A06, // 0012 EQ R6 R5 R6
+ 0x781A0005, // 0013 JMPF R6 #001A
+ 0xB81A5200, // 0014 GETNGBL R6 K41
+ 0x88180D2A, // 0015 GETMBR R6 R6 K42
+ 0x90065006, // 0016 SETMBR R1 K40 R6
+ 0x4C180000, // 0017 LDNIL R6
+ 0x80040C00, // 0018 RET 1 R6
+ 0x70020013, // 0019 JMP #002E
+ 0x8C180B2B, // 001A GETMET R6 R5 K43
+ 0x5C200600, // 001B MOVE R8 R3
+ 0x7C180400, // 001C CALL R6 2
+ 0x741A0005, // 001D JMPT R6 #0024
+ 0xB81A5200, // 001E GETNGBL R6 K41
+ 0x88180D2C, // 001F GETMBR R6 R6 K44
+ 0x90065006, // 0020 SETMBR R1 K40 R6
+ 0x4C180000, // 0021 LDNIL R6
+ 0x80040C00, // 0022 RET 1 R6
+ 0x70020009, // 0023 JMP #002E
+ 0x8C180B2D, // 0024 GETMET R6 R5 K45
+ 0x5C200600, // 0025 MOVE R8 R3
+ 0x5C240800, // 0026 MOVE R9 R4
+ 0x7C180600, // 0027 CALL R6 3
+ 0x741A0004, // 0028 JMPT R6 #002E
+ 0xB81A5200, // 0029 GETNGBL R6 K41
+ 0x88180D2E, // 002A GETMBR R6 R6 K46
+ 0x90065006, // 002B SETMBR R1 K40 R6
+ 0x4C180000, // 002C LDNIL R6
+ 0x80040C00, // 002D RET 1 R6
+ 0x80040A00, // 002E RET 1 R5
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: signal_endpoints_changed
+********************************************************************/
+be_local_closure(class_Matter_Device_signal_endpoints_changed, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(signal_endpoints_changed),
+ &be_const_str_solidified,
+ ( &(const binstruction[14]) { /* code */
+ 0x8C04012F, // 0000 GETMET R1 R0 K47
+ 0x580C0006, // 0001 LDCONST R3 K6
+ 0x5412001C, // 0002 LDINT R4 29
+ 0x58140030, // 0003 LDCONST R5 K48
+ 0x50180000, // 0004 LDBOOL R6 0 0
+ 0x7C040A00, // 0005 CALL R1 5
+ 0x8C04012F, // 0006 GETMET R1 R0 K47
+ 0xB80E5200, // 0007 GETNGBL R3 K41
+ 0x880C0731, // 0008 GETMBR R3 R3 K49
+ 0x5412001C, // 0009 LDINT R4 29
+ 0x58140030, // 000A LDCONST R5 K48
+ 0x50180000, // 000B LDBOOL R6 0 0
+ 0x7C040A00, // 000C CALL R1 5
+ 0x80000000, // 000D RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: autoconf_device
+********************************************************************/
+be_local_closure(class_Matter_Device_autoconf_device, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(autoconf_device),
+ &be_const_str_solidified,
+ ( &(const binstruction[50]) { /* code */
+ 0xA4066400, // 0000 IMPORT R1 K50
+ 0x6008000C, // 0001 GETGBL R2 G12
+ 0x880C0112, // 0002 GETMBR R3 R0 K18
+ 0x7C080200, // 0003 CALL R2 1
+ 0x24080506, // 0004 GT R2 R2 K6
+ 0x780A0000, // 0005 JMPF R2 #0007
+ 0x80000400, // 0006 RET 0
+ 0x88080133, // 0007 GETMBR R2 R0 K51
+ 0x4C0C0000, // 0008 LDNIL R3
+ 0x1C080403, // 0009 EQ R2 R2 R3
+ 0x780A0004, // 000A JMPF R2 #0010
+ 0xB80A5200, // 000B GETNGBL R2 K41
+ 0x8C080534, // 000C GETMET R2 R2 K52
+ 0x5C100000, // 000D MOVE R4 R0
+ 0x7C080400, // 000E CALL R2 2
+ 0x90026602, // 000F SETMBR R0 K51 R2
+ 0x88080107, // 0010 GETMBR R2 R0 K7
+ 0x740A000F, // 0011 JMPT R2 #0022
+ 0x88080133, // 0012 GETMBR R2 R0 K51
+ 0x8C080536, // 0013 GETMET R2 R2 K54
+ 0x7C080200, // 0014 CALL R2 1
+ 0x90026A02, // 0015 SETMBR R0 K53 R2
+ 0x60080013, // 0016 GETGBL R2 G19
+ 0x7C080000, // 0017 CALL R2 0
+ 0x90022A02, // 0018 SETMBR R0 K21 R2
+ 0x8C080137, // 0019 GETMET R2 R0 K55
+ 0x7C080200, // 001A CALL R2 1
+ 0xB80A2E00, // 001B GETNGBL R2 K23
+ 0x600C0008, // 001C GETGBL R3 G8
+ 0x88100135, // 001D GETMBR R4 R0 K53
+ 0x7C0C0200, // 001E CALL R3 1
+ 0x000E7003, // 001F ADD R3 K56 R3
+ 0x58100030, // 0020 LDCONST R4 K48
+ 0x7C080400, // 0021 CALL R2 2
+ 0x88080133, // 0022 GETMBR R2 R0 K51
+ 0x8C080539, // 0023 GETMET R2 R2 K57
+ 0x88100135, // 0024 GETMBR R4 R0 K53
+ 0x7C080400, // 0025 CALL R2 2
+ 0x88080107, // 0026 GETMBR R2 R0 K7
+ 0x740A0008, // 0027 JMPT R2 #0031
+ 0x88080104, // 0028 GETMBR R2 R0 K4
+ 0x8C080505, // 0029 GETMET R2 R2 K5
+ 0x7C080200, // 002A CALL R2 1
+ 0x24080506, // 002B GT R2 R2 K6
+ 0x780A0003, // 002C JMPF R2 #0031
+ 0x50080200, // 002D LDBOOL R2 1 0
+ 0x90020E02, // 002E SETMBR R0 K7 R2
+ 0x8C080108, // 002F GETMET R2 R0 K8
+ 0x7C080200, // 0030 CALL R2 1
+ 0x80000000, // 0031 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: _trigger_read_sensors
+********************************************************************/
+be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */
be_nested_proto(
8, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Device,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(resize),
- /* K1 */ be_nested_str_weak(setbits),
- /* K2 */ be_const_int(3),
- /* K3 */ be_nested_str_weak(vendorid),
- /* K4 */ be_nested_str_weak(productid),
- /* K5 */ be_nested_str_weak(root_discriminator),
- /* K6 */ be_nested_str_weak(root_passcode),
- /* K7 */ be_const_int(134217727),
- /* K8 */ be_nested_str_weak(MT_X3A),
- /* K9 */ be_nested_str_weak(matter),
- /* K10 */ be_nested_str_weak(Base38),
- /* K11 */ be_nested_str_weak(encode),
- }),
- be_str_weak(compute_qrcode_content),
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(_trigger_read_sensors),
&be_const_str_solidified,
- ( &(const binstruction[40]) { /* code */
- 0x60040015, // 0000 GETGBL R1 G21
- 0x7C040000, // 0001 CALL R1 0
- 0x8C040300, // 0002 GETMET R1 R1 K0
- 0x540E000A, // 0003 LDINT R3 11
- 0x7C040400, // 0004 CALL R1 2
- 0x8C080301, // 0005 GETMET R2 R1 K1
- 0x58100002, // 0006 LDCONST R4 K2
- 0x5416000F, // 0007 LDINT R5 16
- 0x88180103, // 0008 GETMBR R6 R0 K3
- 0x7C080800, // 0009 CALL R2 4
- 0x8C080301, // 000A GETMET R2 R1 K1
- 0x54120012, // 000B LDINT R4 19
- 0x5416000F, // 000C LDINT R5 16
- 0x88180104, // 000D GETMBR R6 R0 K4
- 0x7C080800, // 000E CALL R2 4
- 0x8C080301, // 000F GETMET R2 R1 K1
- 0x54120024, // 0010 LDINT R4 37
- 0x54160007, // 0011 LDINT R5 8
- 0x541A0003, // 0012 LDINT R6 4
- 0x7C080800, // 0013 CALL R2 4
- 0x8C080301, // 0014 GETMET R2 R1 K1
- 0x5412002C, // 0015 LDINT R4 45
- 0x5416000B, // 0016 LDINT R5 12
- 0x88180105, // 0017 GETMBR R6 R0 K5
- 0x541E0FFE, // 0018 LDINT R7 4095
- 0x2C180C07, // 0019 AND R6 R6 R7
- 0x7C080800, // 001A CALL R2 4
- 0x8C080301, // 001B GETMET R2 R1 K1
- 0x54120038, // 001C LDINT R4 57
- 0x5416001A, // 001D LDINT R5 27
- 0x88180106, // 001E GETMBR R6 R0 K6
- 0x2C180D07, // 001F AND R6 R6 K7
- 0x7C080800, // 0020 CALL R2 4
- 0xB80A1200, // 0021 GETNGBL R2 K9
- 0x8808050A, // 0022 GETMBR R2 R2 K10
- 0x8C08050B, // 0023 GETMET R2 R2 K11
- 0x5C100200, // 0024 MOVE R4 R1
- 0x7C080400, // 0025 CALL R2 2
- 0x000A1002, // 0026 ADD R2 K8 R2
- 0x80040400, // 0027 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: autoconf_device_map
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_autoconf_device_map, /* name */
- be_nested_proto(
- 20, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[38]) { /* constants */
- /* K0 */ be_nested_str_weak(json),
- /* K1 */ be_nested_str_weak(matter),
- /* K2 */ be_nested_str_weak(START_ENDPOINT),
- /* K3 */ be_nested_str_weak(light),
- /* K4 */ be_nested_str_weak(get),
- /* K5 */ be_nested_str_weak(find),
- /* K6 */ be_nested_str_weak(channels),
- /* K7 */ be_nested_str_weak(),
- /* K8 */ be_const_int(0),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str_weak(type),
- /* K11 */ be_nested_str_weak(light1),
- /* K12 */ be_const_int(2),
- /* K13 */ be_nested_str_weak(light2),
- /* K14 */ be_nested_str_weak(light3),
- /* K15 */ be_nested_str_weak(tasmota),
- /* K16 */ be_nested_str_weak(cmd),
- /* K17 */ be_nested_str_weak(Status_X2013),
- /* K18 */ be_nested_str_weak(log),
- /* K19 */ be_nested_str_weak(MTR_X3A_X20Status_X2013_X20_X3D_X20),
- /* K20 */ be_const_int(3),
- /* K21 */ be_nested_str_weak(contains),
- /* K22 */ be_nested_str_weak(StatusSHT),
- /* K23 */ be_nested_str_weak(SHT),
- /* K24 */ be_nested_str_weak(MTR_X3A_X20_X27_X25s_X27_X20_X3D_X20_X25s),
- /* K25 */ be_nested_str_weak(Relay1),
- /* K26 */ be_nested_str_weak(Relay2),
- /* K27 */ be_nested_str_weak(push),
- /* K28 */ be_nested_str_weak(MTR_X3A_X20relay1_X3D_X25s_X20relay2_X3D_X25s),
- /* K29 */ be_nested_str_weak(TiltConfig),
- /* K30 */ be_nested_str_weak(shutter_X2Btilt),
- /* K31 */ be_nested_str_weak(shutter),
- /* K32 */ be_nested_str_weak(get_power),
- /* K33 */ be_nested_str_weak(relay),
- /* K34 */ be_nested_str_weak(load),
- /* K35 */ be_nested_str_weak(read_sensors),
- /* K36 */ be_nested_str_weak(autoconf_sensors_list),
- /* K37 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(autoconf_device_map),
- &be_const_str_solidified,
- ( &(const binstruction[199]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x60080013, // 0001 GETGBL R2 G19
- 0x7C080000, // 0002 CALL R2 0
- 0xB80E0200, // 0003 GETNGBL R3 K1
- 0x880C0702, // 0004 GETMBR R3 R3 K2
- 0x50100000, // 0005 LDBOOL R4 0 0
- 0xA4160600, // 0006 IMPORT R5 K3
- 0x8C180B04, // 0007 GETMET R6 R5 K4
- 0x7C180200, // 0008 CALL R6 1
- 0x4C1C0000, // 0009 LDNIL R7
- 0x201C0C07, // 000A NE R7 R6 R7
- 0x781E0024, // 000B JMPF R7 #0031
- 0x601C000C, // 000C GETGBL R7 G12
- 0x8C200D05, // 000D GETMET R8 R6 K5
- 0x58280006, // 000E LDCONST R10 K6
- 0x582C0007, // 000F LDCONST R11 K7
- 0x7C200600, // 0010 CALL R8 3
- 0x7C1C0200, // 0011 CALL R7 1
- 0x24200F08, // 0012 GT R8 R7 K8
- 0x7822001C, // 0013 JMPF R8 #0031
- 0x1C200F09, // 0014 EQ R8 R7 K9
- 0x78220007, // 0015 JMPF R8 #001E
- 0x60200008, // 0016 GETGBL R8 G8
- 0x5C240600, // 0017 MOVE R9 R3
- 0x7C200200, // 0018 CALL R8 1
- 0x60240013, // 0019 GETGBL R9 G19
- 0x7C240000, // 001A CALL R9 0
- 0x9826150B, // 001B SETIDX R9 K10 K11
- 0x98081009, // 001C SETIDX R2 R8 R9
- 0x70020010, // 001D JMP #002F
- 0x1C200F0C, // 001E EQ R8 R7 K12
- 0x78220007, // 001F JMPF R8 #0028
- 0x60200008, // 0020 GETGBL R8 G8
- 0x5C240600, // 0021 MOVE R9 R3
- 0x7C200200, // 0022 CALL R8 1
- 0x60240013, // 0023 GETGBL R9 G19
- 0x7C240000, // 0024 CALL R9 0
- 0x9826150D, // 0025 SETIDX R9 K10 K13
- 0x98081009, // 0026 SETIDX R2 R8 R9
+ ( &(const binstruction[48]) { /* code */
+ 0xA4066400, // 0000 IMPORT R1 K50
+ 0xB80A7400, // 0001 GETNGBL R2 K58
+ 0x8C08053B, // 0002 GETMET R2 R2 K59
+ 0x7C080200, // 0003 CALL R2 1
+ 0xB80E7400, // 0004 GETNGBL R3 K58
+ 0x8C0C073C, // 0005 GETMET R3 R3 K60
+ 0x58140030, // 0006 LDCONST R5 K48
+ 0x7C0C0400, // 0007 CALL R3 2
+ 0x780E0006, // 0008 JMPF R3 #0010
+ 0xB80E2E00, // 0009 GETNGBL R3 K23
+ 0x60100008, // 000A GETGBL R4 G8
+ 0x5C140400, // 000B MOVE R5 R2
+ 0x7C100200, // 000C CALL R4 1
+ 0x00127A04, // 000D ADD R4 K61 R4
+ 0x58140030, // 000E LDCONST R5 K48
+ 0x7C0C0400, // 000F CALL R3 2
+ 0x4C0C0000, // 0010 LDNIL R3
+ 0x1C0C0403, // 0011 EQ R3 R2 R3
+ 0x780E0000, // 0012 JMPF R3 #0014
+ 0x80000600, // 0013 RET 0
+ 0x8C0C033E, // 0014 GETMET R3 R1 K62
+ 0x5C140400, // 0015 MOVE R5 R2
+ 0x7C0C0400, // 0016 CALL R3 2
+ 0x4C100000, // 0017 LDNIL R4
+ 0x20100604, // 0018 NE R4 R3 R4
+ 0x7812000D, // 0019 JMPF R4 #0028
+ 0x58100006, // 001A LDCONST R4 K6
+ 0x6014000C, // 001B GETGBL R5 G12
+ 0x88180112, // 001C GETMBR R6 R0 K18
+ 0x7C140200, // 001D CALL R5 1
+ 0x14140805, // 001E LT R5 R4 R5
+ 0x78160006, // 001F JMPF R5 #0027
+ 0x88140112, // 0020 GETMBR R5 R0 K18
+ 0x94140A04, // 0021 GETIDX R5 R5 R4
+ 0x8C140B3F, // 0022 GETMET R5 R5 K63
+ 0x5C1C0600, // 0023 MOVE R7 R3
+ 0x7C140400, // 0024 CALL R5 2
+ 0x00100914, // 0025 ADD R4 R4 K20
+ 0x7001FFF3, // 0026 JMP #001B
0x70020006, // 0027 JMP #002F
- 0x60200008, // 0028 GETGBL R8 G8
- 0x5C240600, // 0029 MOVE R9 R3
- 0x7C200200, // 002A CALL R8 1
- 0x60240013, // 002B GETGBL R9 G19
- 0x7C240000, // 002C CALL R9 0
- 0x9826150E, // 002D SETIDX R9 K10 K14
- 0x98081009, // 002E SETIDX R2 R8 R9
- 0x50100200, // 002F LDBOOL R4 1 0
- 0x000C0709, // 0030 ADD R3 R3 K9
- 0xB81E1E00, // 0031 GETNGBL R7 K15
- 0x8C1C0F10, // 0032 GETMET R7 R7 K16
- 0x58240011, // 0033 LDCONST R9 K17
- 0x50280200, // 0034 LDBOOL R10 1 0
- 0x7C1C0600, // 0035 CALL R7 3
- 0x60200012, // 0036 GETGBL R8 G18
- 0x7C200000, // 0037 CALL R8 0
- 0xB8261E00, // 0038 GETNGBL R9 K15
- 0x8C241312, // 0039 GETMET R9 R9 K18
- 0x602C0008, // 003A GETGBL R11 G8
- 0x5C300E00, // 003B MOVE R12 R7
- 0x7C2C0200, // 003C CALL R11 1
- 0x002E260B, // 003D ADD R11 K19 R11
- 0x58300014, // 003E LDCONST R12 K20
- 0x7C240600, // 003F CALL R9 3
- 0x4C240000, // 0040 LDNIL R9
- 0x20240E09, // 0041 NE R9 R7 R9
- 0x7826004F, // 0042 JMPF R9 #0093
- 0x8C240F15, // 0043 GETMET R9 R7 K21
- 0x582C0016, // 0044 LDCONST R11 K22
- 0x7C240400, // 0045 CALL R9 2
- 0x7826004B, // 0046 JMPF R9 #0093
- 0x941C0F16, // 0047 GETIDX R7 R7 K22
- 0x58240008, // 0048 LDCONST R9 K8
- 0x50280200, // 0049 LDBOOL R10 1 0
- 0x782A0047, // 004A JMPF R10 #0093
- 0x60280008, // 004B GETGBL R10 G8
- 0x5C2C1200, // 004C MOVE R11 R9
- 0x7C280200, // 004D CALL R10 1
- 0x002A2E0A, // 004E ADD R10 K23 R10
- 0x8C2C0F15, // 004F GETMET R11 R7 K21
- 0x5C341400, // 0050 MOVE R13 R10
- 0x7C2C0400, // 0051 CALL R11 2
- 0x742E0000, // 0052 JMPT R11 #0054
- 0x7002003E, // 0053 JMP #0093
- 0x942C0E0A, // 0054 GETIDX R11 R7 R10
- 0xB8321E00, // 0055 GETNGBL R12 K15
- 0x8C301912, // 0056 GETMET R12 R12 K18
- 0x60380018, // 0057 GETGBL R14 G24
- 0x583C0018, // 0058 LDCONST R15 K24
- 0x5C401400, // 0059 MOVE R16 R10
- 0x60440008, // 005A GETGBL R17 G8
- 0x5C481600, // 005B MOVE R18 R11
- 0x7C440200, // 005C CALL R17 1
- 0x7C380600, // 005D CALL R14 3
- 0x583C0014, // 005E LDCONST R15 K20
- 0x7C300600, // 005F CALL R12 3
- 0x8C301705, // 0060 GETMET R12 R11 K5
- 0x58380019, // 0061 LDCONST R14 K25
- 0x543DFFFE, // 0062 LDINT R15 -1
- 0x7C300600, // 0063 CALL R12 3
- 0x8C341705, // 0064 GETMET R13 R11 K5
- 0x583C001A, // 0065 LDCONST R15 K26
- 0x5441FFFE, // 0066 LDINT R16 -1
- 0x7C340600, // 0067 CALL R13 3
- 0x24381908, // 0068 GT R14 R12 K8
- 0x783A0002, // 0069 JMPF R14 #006D
- 0x8C38111B, // 006A GETMET R14 R8 K27
- 0x04401909, // 006B SUB R16 R12 K9
- 0x7C380400, // 006C CALL R14 2
- 0x24381B08, // 006D GT R14 R13 K8
- 0x783A0002, // 006E JMPF R14 #0072
- 0x8C38111B, // 006F GETMET R14 R8 K27
- 0x04401B09, // 0070 SUB R16 R13 K9
- 0x7C380400, // 0071 CALL R14 2
- 0xB83A1E00, // 0072 GETNGBL R14 K15
- 0x8C381D12, // 0073 GETMET R14 R14 K18
- 0x60400018, // 0074 GETGBL R16 G24
- 0x5844001C, // 0075 LDCONST R17 K28
- 0x5C481800, // 0076 MOVE R18 R12
- 0x5C4C1A00, // 0077 MOVE R19 R13
- 0x7C400600, // 0078 CALL R16 3
- 0x58440014, // 0079 LDCONST R17 K20
- 0x7C380600, // 007A CALL R14 3
- 0x8C381705, // 007B GETMET R14 R11 K5
- 0x5840001D, // 007C LDCONST R16 K29
- 0x7C380400, // 007D CALL R14 2
- 0x783A0002, // 007E JMPF R14 #0082
- 0x943C1D0C, // 007F GETIDX R15 R14 K12
- 0x243C1F08, // 0080 GT R15 R15 K8
- 0x743E0000, // 0081 JMPT R15 #0083
- 0x503C0001, // 0082 LDBOOL R15 0 1
- 0x503C0200, // 0083 LDBOOL R15 1 0
- 0x60400008, // 0084 GETGBL R16 G8
- 0x5C440600, // 0085 MOVE R17 R3
- 0x7C400200, // 0086 CALL R16 1
- 0x60440013, // 0087 GETGBL R17 G19
- 0x7C440000, // 0088 CALL R17 0
- 0x783E0001, // 0089 JMPF R15 #008C
- 0x5848001E, // 008A LDCONST R18 K30
- 0x70020000, // 008B JMP #008D
- 0x5848001F, // 008C LDCONST R18 K31
- 0x98461412, // 008D SETIDX R17 K10 R18
- 0x98463E09, // 008E SETIDX R17 K31 R9
- 0x98082011, // 008F SETIDX R2 R16 R17
- 0x000C0709, // 0090 ADD R3 R3 K9
- 0x00241309, // 0091 ADD R9 R9 K9
- 0x7001FFB5, // 0092 JMP #0049
- 0x6024000C, // 0093 GETGBL R9 G12
- 0xB82A1E00, // 0094 GETNGBL R10 K15
- 0x8C281520, // 0095 GETMET R10 R10 K32
- 0x7C280200, // 0096 CALL R10 1
- 0x7C240200, // 0097 CALL R9 1
- 0x58280008, // 0098 LDCONST R10 K8
- 0x78120000, // 0099 JMPF R4 #009B
- 0x04241309, // 009A SUB R9 R9 K9
- 0x142C1409, // 009B LT R11 R10 R9
- 0x782E0011, // 009C JMPF R11 #00AF
- 0x8C2C1105, // 009D GETMET R11 R8 K5
- 0x5C341400, // 009E MOVE R13 R10
- 0x7C2C0400, // 009F CALL R11 2
- 0x4C300000, // 00A0 LDNIL R12
- 0x1C2C160C, // 00A1 EQ R11 R11 R12
- 0x782E0009, // 00A2 JMPF R11 #00AD
- 0x602C0008, // 00A3 GETGBL R11 G8
- 0x5C300600, // 00A4 MOVE R12 R3
- 0x7C2C0200, // 00A5 CALL R11 1
- 0x60300013, // 00A6 GETGBL R12 G19
- 0x7C300000, // 00A7 CALL R12 0
- 0x98321521, // 00A8 SETIDX R12 K10 K33
- 0x00341509, // 00A9 ADD R13 R10 K9
- 0x9832420D, // 00AA SETIDX R12 K33 R13
- 0x9808160C, // 00AB SETIDX R2 R11 R12
- 0x000C0709, // 00AC ADD R3 R3 K9
- 0x00281509, // 00AD ADD R10 R10 K9
- 0x7001FFEB, // 00AE JMP #009B
- 0x8C2C0322, // 00AF GETMET R11 R1 K34
- 0xB8361E00, // 00B0 GETNGBL R13 K15
- 0x8C341B23, // 00B1 GETMET R13 R13 K35
- 0x7C340200, // 00B2 CALL R13 1
- 0x7C2C0400, // 00B3 CALL R11 2
- 0x8C300124, // 00B4 GETMET R12 R0 K36
- 0x5C381600, // 00B5 MOVE R14 R11
- 0x7C300400, // 00B6 CALL R12 2
- 0x60340010, // 00B7 GETGBL R13 G16
- 0x5C381800, // 00B8 MOVE R14 R12
- 0x7C340200, // 00B9 CALL R13 1
- 0xA8020007, // 00BA EXBLK 0 #00C3
- 0x5C381A00, // 00BB MOVE R14 R13
- 0x7C380000, // 00BC CALL R14 0
- 0x603C0008, // 00BD GETGBL R15 G8
- 0x5C400600, // 00BE MOVE R16 R3
- 0x7C3C0200, // 00BF CALL R15 1
- 0x98081E0E, // 00C0 SETIDX R2 R15 R14
- 0x000C0709, // 00C1 ADD R3 R3 K9
- 0x7001FFF7, // 00C2 JMP #00BB
- 0x58340025, // 00C3 LDCONST R13 K37
- 0xAC340200, // 00C4 CATCH R13 1 0
- 0xB0080000, // 00C5 RAISE 2 R0 R0
- 0x80040400, // 00C6 RET 1 R2
+ 0xB8122E00, // 0028 GETNGBL R4 K23
+ 0x60140008, // 0029 GETGBL R5 G8
+ 0x5C180400, // 002A MOVE R6 R2
+ 0x7C140200, // 002B CALL R5 1
+ 0x00168005, // 002C ADD R5 K64 R5
+ 0x58180030, // 002D LDCONST R6 K48
+ 0x7C100400, // 002E CALL R4 2
+ 0x80000000, // 002F RET 0
})
)
);
@@ -1449,52 +790,1025 @@ be_local_closure(class_Matter_Device_autoconf_device_map, /* name */
/********************************************************************
-** Solidified function: mdns_announce_op_discovery_all_fabrics
+** Solidified function: get_active_endpoints
********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics, /* name */
+be_local_closure(class_Matter_Device_get_active_endpoints, /* name */
be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
+ 9, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Device,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(sessions),
- /* K1 */ be_nested_str_weak(active_fabrics),
- /* K2 */ be_nested_str_weak(get_device_id),
- /* K3 */ be_nested_str_weak(get_fabric_id),
- /* K4 */ be_nested_str_weak(mdns_announce_op_discovery),
- /* K5 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(mdns_announce_op_discovery_all_fabrics),
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(get_active_endpoints),
&be_const_str_solidified,
- ( &(const binstruction[22]) { /* code */
+ ( &(const binstruction[28]) { /* code */
+ 0x60080012, // 0000 GETGBL R2 G18
+ 0x7C080000, // 0001 CALL R2 0
+ 0x600C0010, // 0002 GETGBL R3 G16
+ 0x88100112, // 0003 GETMBR R4 R0 K18
+ 0x7C0C0200, // 0004 CALL R3 1
+ 0xA8020011, // 0005 EXBLK 0 #0018
+ 0x5C100600, // 0006 MOVE R4 R3
+ 0x7C100000, // 0007 CALL R4 0
+ 0x8C140941, // 0008 GETMET R5 R4 K65
+ 0x7C140200, // 0009 CALL R5 1
+ 0x78060002, // 000A JMPF R1 #000E
+ 0x1C180B06, // 000B EQ R6 R5 K6
+ 0x781A0000, // 000C JMPF R6 #000E
+ 0x7001FFF7, // 000D JMP #0006
+ 0x8C180516, // 000E GETMET R6 R2 K22
+ 0x5C200A00, // 000F MOVE R8 R5
+ 0x7C180400, // 0010 CALL R6 2
+ 0x4C1C0000, // 0011 LDNIL R7
+ 0x1C180C07, // 0012 EQ R6 R6 R7
+ 0x781A0002, // 0013 JMPF R6 #0017
+ 0x8C180542, // 0014 GETMET R6 R2 K66
+ 0x5C200A00, // 0015 MOVE R8 R5
+ 0x7C180400, // 0016 CALL R6 2
+ 0x7001FFED, // 0017 JMP #0006
+ 0x580C0011, // 0018 LDCONST R3 K17
+ 0xAC0C0200, // 0019 CATCH R3 1 0
+ 0xB0080000, // 001A RAISE 2 R0 R0
+ 0x80040400, // 001B RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: msg_send
+********************************************************************/
+be_local_closure(class_Matter_Device_msg_send, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(msg_send),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8C080543, // 0001 GETMET R2 R2 K67
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x7C080400, // 0003 CALL R2 2
+ 0x80040400, // 0004 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: stop
+********************************************************************/
+be_local_closure(class_Matter_Device_stop, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(stop),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0xB8067400, // 0000 GETNGBL R1 K58
+ 0x8C040344, // 0001 GETMET R1 R1 K68
+ 0x5C0C0000, // 0002 MOVE R3 R0
+ 0x7C040400, // 0003 CALL R1 2
+ 0x88040100, // 0004 GETMBR R1 R0 K0
+ 0x78060002, // 0005 JMPF R1 #0009
+ 0x88040100, // 0006 GETMBR R1 R0 K0
+ 0x8C040345, // 0007 GETMET R1 R1 K69
+ 0x7C040200, // 0008 CALL R1 1
+ 0x80000000, // 0009 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: adjust_next_ep
+********************************************************************/
+be_local_closure(class_Matter_Device_adjust_next_ep, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(adjust_next_ep),
+ &be_const_str_solidified,
+ ( &(const binstruction[21]) { /* code */
0x60040010, // 0000 GETGBL R1 G16
- 0x88080100, // 0001 GETMBR R2 R0 K0
- 0x8C080501, // 0002 GETMET R2 R2 K1
+ 0x88080135, // 0001 GETMBR R2 R0 K53
+ 0x8C080546, // 0002 GETMET R2 R2 K70
0x7C080200, // 0003 CALL R2 1
0x7C040200, // 0004 CALL R1 1
- 0xA802000B, // 0005 EXBLK 0 #0012
+ 0xA802000A, // 0005 EXBLK 0 #0011
0x5C080200, // 0006 MOVE R2 R1
0x7C080000, // 0007 CALL R2 0
- 0x8C0C0502, // 0008 GETMET R3 R2 K2
- 0x7C0C0200, // 0009 CALL R3 1
- 0x780E0005, // 000A JMPF R3 #0011
- 0x8C0C0503, // 000B GETMET R3 R2 K3
- 0x7C0C0200, // 000C CALL R3 1
- 0x780E0002, // 000D JMPF R3 #0011
- 0x8C0C0104, // 000E GETMET R3 R0 K4
- 0x5C140400, // 000F MOVE R5 R2
- 0x7C0C0400, // 0010 CALL R3 2
- 0x7001FFF3, // 0011 JMP #0006
- 0x58040005, // 0012 LDCONST R1 K5
- 0xAC040200, // 0013 CATCH R1 1 0
- 0xB0080000, // 0014 RAISE 2 R0 R0
- 0x80000000, // 0015 RET 0
+ 0x600C0009, // 0008 GETGBL R3 G9
+ 0x5C100400, // 0009 MOVE R4 R2
+ 0x7C0C0200, // 000A CALL R3 1
+ 0x88100147, // 000B GETMBR R4 R0 K71
+ 0x28100604, // 000C GE R4 R3 R4
+ 0x78120001, // 000D JMPF R4 #0010
+ 0x00100714, // 000E ADD R4 R3 K20
+ 0x90028E04, // 000F SETMBR R0 K71 R4
+ 0x7001FFF4, // 0010 JMP #0006
+ 0x58040011, // 0011 LDCONST R1 K17
+ 0xAC040200, // 0012 CATCH R1 1 0
+ 0xB0080000, // 0013 RAISE 2 R0 R0
+ 0x80000000, // 0014 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: add_read_sensors_schedule
+********************************************************************/
+be_local_closure(class_Matter_Device_add_read_sensors_schedule, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(add_read_sensors_schedule),
+ &be_const_str_solidified,
+ ( &(const binstruction[14]) { /* code */
+ 0x88080148, // 0000 GETMBR R2 R0 K72
+ 0x4C0C0000, // 0001 LDNIL R3
+ 0x1C080403, // 0002 EQ R2 R2 R3
+ 0x740A0002, // 0003 JMPT R2 #0007
+ 0x88080148, // 0004 GETMBR R2 R0 K72
+ 0x24080401, // 0005 GT R2 R2 R1
+ 0x780A0005, // 0006 JMPF R2 #000D
+ 0x90029001, // 0007 SETMBR R0 K72 R1
+ 0xB80A5200, // 0008 GETNGBL R2 K41
+ 0x8C08054A, // 0009 GETMET R2 R2 K74
+ 0x5C100200, // 000A MOVE R4 R1
+ 0x7C080400, // 000B CALL R2 2
+ 0x90029202, // 000C SETMBR R0 K73 R2
+ 0x80000000, // 000D RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: button_pressed
+********************************************************************/
+be_local_closure(class_Matter_Device_button_pressed, /* name */
+ be_nested_proto(
+ 13, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(button_pressed),
+ &be_const_str_solidified,
+ ( &(const binstruction[28]) { /* code */
+ 0x540E000F, // 0000 LDINT R3 16
+ 0x3C0C0403, // 0001 SHR R3 R2 R3
+ 0x541200FE, // 0002 LDINT R4 255
+ 0x2C0C0604, // 0003 AND R3 R3 R4
+ 0x54120007, // 0004 LDINT R4 8
+ 0x3C100404, // 0005 SHR R4 R2 R4
+ 0x541600FE, // 0006 LDINT R5 255
+ 0x2C100805, // 0007 AND R4 R4 R5
+ 0x541600FE, // 0008 LDINT R5 255
+ 0x2C140405, // 0009 AND R5 R2 R5
+ 0x541A0017, // 000A LDINT R6 24
+ 0x3C180406, // 000B SHR R6 R2 R6
+ 0x541E00FE, // 000C LDINT R7 255
+ 0x2C180C07, // 000D AND R6 R6 R7
+ 0x8C1C014B, // 000E GETMET R7 R0 K75
+ 0x00240B14, // 000F ADD R9 R5 K20
+ 0x20280604, // 0010 NE R10 R3 R4
+ 0x782A0001, // 0011 JMPF R10 #0014
+ 0x58280014, // 0012 LDCONST R10 K20
+ 0x70020000, // 0013 JMP #0015
+ 0x58280006, // 0014 LDCONST R10 K6
+ 0x780E0001, // 0015 JMPF R3 #0018
+ 0x582C0006, // 0016 LDCONST R11 K6
+ 0x70020000, // 0017 JMP #0019
+ 0x582C0014, // 0018 LDCONST R11 K20
+ 0x5C300C00, // 0019 MOVE R12 R6
+ 0x7C1C0A00, // 001A CALL R7 5
+ 0x80000000, // 001B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: start
+********************************************************************/
+be_local_closure(class_Matter_Device_start, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(start),
+ &be_const_str_solidified,
+ ( &(const binstruction[14]) { /* code */
+ 0x8804014C, // 0000 GETMBR R1 R0 K76
+ 0x78060000, // 0001 JMPF R1 #0003
+ 0x80000200, // 0002 RET 0
+ 0x8C04014D, // 0003 GETMET R1 R0 K77
+ 0x7C040200, // 0004 CALL R1 1
+ 0x8C04014E, // 0005 GETMET R1 R0 K78
+ 0x880C014F, // 0006 GETMBR R3 R0 K79
+ 0x7C040400, // 0007 CALL R1 2
+ 0x88040109, // 0008 GETMBR R1 R0 K9
+ 0x8C040350, // 0009 GETMET R1 R1 K80
+ 0x7C040200, // 000A CALL R1 1
+ 0x50040200, // 000B LDBOOL R1 1 0
+ 0x90029801, // 000C SETMBR R0 K76 R1
+ 0x80000000, // 000D RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_plugin_class_displayname
+********************************************************************/
+be_local_closure(class_Matter_Device_get_plugin_class_displayname, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(get_plugin_class_displayname),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x88080151, // 0000 GETMBR R2 R0 K81
+ 0x8C080516, // 0001 GETMET R2 R2 K22
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x7C080400, // 0003 CALL R2 2
+ 0x780A0001, // 0004 JMPF R2 #0007
+ 0x880C0552, // 0005 GETMBR R3 R2 K82
+ 0x70020000, // 0006 JMP #0008
+ 0x580C000D, // 0007 LDCONST R3 K13
+ 0x80040600, // 0008 RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: find_plugin_by_endpoint
+********************************************************************/
+be_local_closure(class_Matter_Device_find_plugin_by_endpoint, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(find_plugin_by_endpoint),
+ &be_const_str_solidified,
+ ( &(const binstruction[17]) { /* code */
+ 0x58080006, // 0000 LDCONST R2 K6
+ 0x600C000C, // 0001 GETGBL R3 G12
+ 0x88100112, // 0002 GETMBR R4 R0 K18
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x140C0403, // 0004 LT R3 R2 R3
+ 0x780E0008, // 0005 JMPF R3 #000F
+ 0x880C0112, // 0006 GETMBR R3 R0 K18
+ 0x940C0602, // 0007 GETIDX R3 R3 R2
+ 0x8C100741, // 0008 GETMET R4 R3 K65
+ 0x7C100200, // 0009 CALL R4 1
+ 0x1C100801, // 000A EQ R4 R4 R1
+ 0x78120000, // 000B JMPF R4 #000D
+ 0x80040600, // 000C RET 1 R3
+ 0x00080514, // 000D ADD R2 R2 K20
+ 0x7001FFF1, // 000E JMP #0001
+ 0x4C0C0000, // 000F LDNIL R3
+ 0x80040600, // 0010 RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: sort_distinct
+********************************************************************/
+be_local_closure(class_Matter_Device_sort_distinct, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 1, /* argc */
+ 12, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(sort_distinct),
+ &be_const_str_solidified,
+ ( &(const binstruction[53]) { /* code */
+ 0x5804000C, // 0000 LDCONST R1 K12
+ 0x60080010, // 0001 GETGBL R2 G16
+ 0x600C000C, // 0002 GETGBL R3 G12
+ 0x5C100000, // 0003 MOVE R4 R0
+ 0x7C0C0200, // 0004 CALL R3 1
+ 0x040C0714, // 0005 SUB R3 R3 K20
+ 0x400E2803, // 0006 CONNECT R3 K20 R3
+ 0x7C080200, // 0007 CALL R2 1
+ 0xA8020010, // 0008 EXBLK 0 #001A
+ 0x5C0C0400, // 0009 MOVE R3 R2
+ 0x7C0C0000, // 000A CALL R3 0
+ 0x94100003, // 000B GETIDX R4 R0 R3
+ 0x5C140600, // 000C MOVE R5 R3
+ 0x24180B06, // 000D GT R6 R5 K6
+ 0x781A0008, // 000E JMPF R6 #0018
+ 0x04180B14, // 000F SUB R6 R5 K20
+ 0x94180006, // 0010 GETIDX R6 R0 R6
+ 0x24180C04, // 0011 GT R6 R6 R4
+ 0x781A0004, // 0012 JMPF R6 #0018
+ 0x04180B14, // 0013 SUB R6 R5 K20
+ 0x94180006, // 0014 GETIDX R6 R0 R6
+ 0x98000A06, // 0015 SETIDX R0 R5 R6
+ 0x04140B14, // 0016 SUB R5 R5 K20
+ 0x7001FFF4, // 0017 JMP #000D
+ 0x98000A04, // 0018 SETIDX R0 R5 R4
+ 0x7001FFEE, // 0019 JMP #0009
+ 0x58080011, // 001A LDCONST R2 K17
+ 0xAC080200, // 001B CATCH R2 1 0
+ 0xB0080000, // 001C RAISE 2 R0 R0
+ 0x58080014, // 001D LDCONST R2 K20
+ 0x600C000C, // 001E GETGBL R3 G12
+ 0x5C100000, // 001F MOVE R4 R0
+ 0x7C0C0200, // 0020 CALL R3 1
+ 0x180C0714, // 0021 LE R3 R3 K20
+ 0x780E0000, // 0022 JMPF R3 #0024
+ 0x80040000, // 0023 RET 1 R0
+ 0x940C0106, // 0024 GETIDX R3 R0 K6
+ 0x6010000C, // 0025 GETGBL R4 G12
+ 0x5C140000, // 0026 MOVE R5 R0
+ 0x7C100200, // 0027 CALL R4 1
+ 0x14100404, // 0028 LT R4 R2 R4
+ 0x78120009, // 0029 JMPF R4 #0034
+ 0x94100002, // 002A GETIDX R4 R0 R2
+ 0x1C100803, // 002B EQ R4 R4 R3
+ 0x78120003, // 002C JMPF R4 #0031
+ 0x8C100153, // 002D GETMET R4 R0 K83
+ 0x5C180400, // 002E MOVE R6 R2
+ 0x7C100400, // 002F CALL R4 2
+ 0x70020001, // 0030 JMP #0033
+ 0x940C0002, // 0031 GETIDX R3 R0 R2
+ 0x00080514, // 0032 ADD R2 R2 K20
+ 0x7001FFF0, // 0033 JMP #0025
+ 0x80040000, // 0034 RET 1 R0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: check_config_ep
+********************************************************************/
+be_local_closure(class_Matter_Device_check_config_ep, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(check_config_ep),
+ &be_const_str_solidified,
+ ( &(const binstruction[77]) { /* code */
+ 0x50040000, // 0000 LDBOOL R1 0 0
+ 0x60080012, // 0001 GETGBL R2 G18
+ 0x7C080000, // 0002 CALL R2 0
+ 0x600C0010, // 0003 GETGBL R3 G16
+ 0x88100135, // 0004 GETMBR R4 R0 K53
+ 0x8C100946, // 0005 GETMET R4 R4 K70
+ 0x7C100200, // 0006 CALL R4 1
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0xA8020007, // 0008 EXBLK 0 #0011
+ 0x5C100600, // 0009 MOVE R4 R3
+ 0x7C100000, // 000A CALL R4 0
+ 0x8C140542, // 000B GETMET R5 R2 K66
+ 0x601C0009, // 000C GETGBL R7 G9
+ 0x5C200800, // 000D MOVE R8 R4
+ 0x7C1C0200, // 000E CALL R7 1
+ 0x7C140400, // 000F CALL R5 2
+ 0x7001FFF7, // 0010 JMP #0009
+ 0x580C0011, // 0011 LDCONST R3 K17
+ 0xAC0C0200, // 0012 CATCH R3 1 0
+ 0xB0080000, // 0013 RAISE 2 R0 R0
+ 0x600C0010, // 0014 GETGBL R3 G16
+ 0x5C100400, // 0015 MOVE R4 R2
+ 0x7C0C0200, // 0016 CALL R3 1
+ 0xA8020030, // 0017 EXBLK 0 #0049
+ 0x5C100600, // 0018 MOVE R4 R3
+ 0x7C100000, // 0019 CALL R4 0
+ 0x1C140906, // 001A EQ R5 R4 K6
+ 0x7816000B, // 001B JMPF R5 #0028
+ 0xB8162E00, // 001C GETNGBL R5 K23
+ 0x58180054, // 001D LDCONST R6 K84
+ 0x581C001D, // 001E LDCONST R7 K29
+ 0x7C140400, // 001F CALL R5 2
+ 0x88140135, // 0020 GETMBR R5 R0 K53
+ 0x8C140B53, // 0021 GETMET R5 R5 K83
+ 0x601C0008, // 0022 GETGBL R7 G8
+ 0x5C200800, // 0023 MOVE R8 R4
+ 0x7C1C0200, // 0024 CALL R7 1
+ 0x7C140400, // 0025 CALL R5 2
+ 0x50040200, // 0026 LDBOOL R1 1 0
+ 0x7002001F, // 0027 JMP #0048
+ 0xB8165200, // 0028 GETNGBL R5 K41
+ 0x88140B31, // 0029 GETMBR R5 R5 K49
+ 0x1C140805, // 002A EQ R5 R4 R5
+ 0x7816001B, // 002B JMPF R5 #0048
+ 0x50040200, // 002C LDBOOL R1 1 0
+ 0xB8162E00, // 002D GETNGBL R5 K23
+ 0x60180018, // 002E GETGBL R6 G24
+ 0x581C0055, // 002F LDCONST R7 K85
+ 0x5C200800, // 0030 MOVE R8 R4
+ 0x88240147, // 0031 GETMBR R9 R0 K71
+ 0x7C180600, // 0032 CALL R6 3
+ 0x581C001D, // 0033 LDCONST R7 K29
+ 0x7C140400, // 0034 CALL R5 2
+ 0x60140008, // 0035 GETGBL R5 G8
+ 0x88180147, // 0036 GETMBR R6 R0 K71
+ 0x7C140200, // 0037 CALL R5 1
+ 0x88180135, // 0038 GETMBR R6 R0 K53
+ 0x601C0008, // 0039 GETGBL R7 G8
+ 0x5C200800, // 003A MOVE R8 R4
+ 0x7C1C0200, // 003B CALL R7 1
+ 0x88200135, // 003C GETMBR R8 R0 K53
+ 0x941C1007, // 003D GETIDX R7 R8 R7
+ 0x98180A07, // 003E SETIDX R6 R5 R7
+ 0x88140135, // 003F GETMBR R5 R0 K53
+ 0x8C140B53, // 0040 GETMET R5 R5 K83
+ 0x601C0008, // 0041 GETGBL R7 G8
+ 0x5C200800, // 0042 MOVE R8 R4
+ 0x7C1C0200, // 0043 CALL R7 1
+ 0x7C140400, // 0044 CALL R5 2
+ 0x88140147, // 0045 GETMBR R5 R0 K71
+ 0x00140B14, // 0046 ADD R5 R5 K20
+ 0x90028E05, // 0047 SETMBR R0 K71 R5
+ 0x7001FFCE, // 0048 JMP #0018
+ 0x580C0011, // 0049 LDCONST R3 K17
+ 0xAC0C0200, // 004A CATCH R3 1 0
+ 0xB0080000, // 004B RAISE 2 R0 R0
+ 0x80040200, // 004C RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: button_handler
+********************************************************************/
+be_local_closure(class_Matter_Device_button_handler, /* name */
+ be_nested_proto(
+ 14, /* nstack */
+ 5, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(button_handler),
+ &be_const_str_solidified,
+ ( &(const binstruction[25]) { /* code */
+ 0x58140006, // 0000 LDCONST R5 K6
+ 0xA41AAC00, // 0001 IMPORT R6 K86
+ 0x601C000C, // 0002 GETGBL R7 G12
+ 0x88200112, // 0003 GETMBR R8 R0 K18
+ 0x7C1C0200, // 0004 CALL R7 1
+ 0x141C0A07, // 0005 LT R7 R5 R7
+ 0x781E0010, // 0006 JMPF R7 #0018
+ 0x881C0112, // 0007 GETMBR R7 R0 K18
+ 0x941C0E05, // 0008 GETIDX R7 R7 R5
+ 0x8C200D57, // 0009 GETMET R8 R6 K87
+ 0x5C280E00, // 000A MOVE R10 R7
+ 0x582C004B, // 000B LDCONST R11 K75
+ 0x7C200600, // 000C CALL R8 3
+ 0x78220007, // 000D JMPF R8 #0016
+ 0x88200112, // 000E GETMBR R8 R0 K18
+ 0x94201005, // 000F GETIDX R8 R8 R5
+ 0x8C20114B, // 0010 GETMET R8 R8 K75
+ 0x5C280200, // 0011 MOVE R10 R1
+ 0x5C2C0400, // 0012 MOVE R11 R2
+ 0x5C300600, // 0013 MOVE R12 R3
+ 0x5C340800, // 0014 MOVE R13 R4
+ 0x7C200A00, // 0015 CALL R8 5
+ 0x00140B14, // 0016 ADD R5 R5 K20
+ 0x7001FFE9, // 0017 JMP #0002
+ 0x80000000, // 0018 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Matter_Device_init, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 2]) {
+ be_nested_proto(
+ 4, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(start),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(remove_rule),
+ /* K3 */ be_nested_str_weak(Wifi_X23Connected),
+ /* K4 */ be_nested_str_weak(matter_start),
+ }),
+ be_str_weak(_anonymous_),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x7C000200, // 0002 CALL R0 1
+ 0xB8020200, // 0003 GETNGBL R0 K1
+ 0x8C000102, // 0004 GETMET R0 R0 K2
+ 0x58080003, // 0005 LDCONST R2 K3
+ 0x580C0004, // 0006 LDCONST R3 K4
+ 0x7C000600, // 0007 CALL R0 3
+ 0x80000000, // 0008 RET 0
+ })
+ ),
+ be_nested_proto(
+ 4, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str_weak(start),
+ /* K1 */ be_nested_str_weak(tasmota),
+ /* K2 */ be_nested_str_weak(remove_rule),
+ /* K3 */ be_nested_str_weak(Eth_X23Connected),
+ /* K4 */ be_nested_str_weak(matter_start),
+ }),
+ be_str_weak(_anonymous_),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x7C000200, // 0002 CALL R0 1
+ 0xB8020200, // 0003 GETNGBL R0 K1
+ 0x8C000102, // 0004 GETMET R0 R0 K2
+ 0x58080003, // 0005 LDCONST R2 K3
+ 0x580C0004, // 0006 LDCONST R3 K4
+ 0x7C000600, // 0007 CALL R0 3
+ 0x80000000, // 0008 RET 0
+ })
+ ),
+ }),
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[109]) { /* code */
+ 0xA406B000, // 0000 IMPORT R1 K88
+ 0xB80A7400, // 0001 GETNGBL R2 K58
+ 0x8C080559, // 0002 GETMET R2 R2 K89
+ 0xB8125200, // 0003 GETNGBL R4 K41
+ 0x8810095A, // 0004 GETMBR R4 R4 K90
+ 0x7C080400, // 0005 CALL R2 2
+ 0x740A0004, // 0006 JMPT R2 #000C
+ 0xB80A5200, // 0007 GETNGBL R2 K41
+ 0x8C08055B, // 0008 GETMET R2 R2 K91
+ 0x5C100000, // 0009 MOVE R4 R0
+ 0x7C080400, // 000A CALL R2 2
+ 0x80000400, // 000B RET 0
+ 0xB80A5200, // 000C GETNGBL R2 K41
+ 0xB80E5200, // 000D GETNGBL R3 K41
+ 0x8C0C075D, // 000E GETMET R3 R3 K93
+ 0x7C0C0200, // 000F CALL R3 1
+ 0x900AB803, // 0010 SETMBR R2 K92 R3
+ 0x50080000, // 0011 LDBOOL R2 0 0
+ 0x90029802, // 0012 SETMBR R0 K76 R2
+ 0x9002BD06, // 0013 SETMBR R0 K94 K6
+ 0x60080012, // 0014 GETGBL R2 G18
+ 0x7C080000, // 0015 CALL R2 0
+ 0x90022402, // 0016 SETMBR R0 K18 R2
+ 0x50080000, // 0017 LDBOOL R2 0 0
+ 0x90020E02, // 0018 SETMBR R0 K7 R2
+ 0x60080013, // 0019 GETGBL R2 G19
+ 0x7C080000, // 001A CALL R2 0
+ 0x90022A02, // 001B SETMBR R0 K21 R2
+ 0x8808015F, // 001C GETMBR R2 R0 K95
+ 0x90028E02, // 001D SETMBR R0 K71 R2
+ 0x50080000, // 001E LDBOOL R2 0 0
+ 0x9002C002, // 001F SETMBR R0 K96 R2
+ 0x50080000, // 0020 LDBOOL R2 0 0
+ 0x9002C202, // 0021 SETMBR R0 K97 R2
+ 0xB80A5200, // 0022 GETNGBL R2 K41
+ 0x8C080562, // 0023 GETMET R2 R2 K98
+ 0x5C100000, // 0024 MOVE R4 R0
+ 0x7C080400, // 0025 CALL R2 2
+ 0x90021202, // 0026 SETMBR R0 K9 R2
+ 0x8C080163, // 0027 GETMET R2 R0 K99
+ 0x7C080200, // 0028 CALL R2 1
+ 0xB80A5200, // 0029 GETNGBL R2 K41
+ 0x8C080564, // 002A GETMET R2 R2 K100
+ 0x5C100000, // 002B MOVE R4 R0
+ 0x7C080400, // 002C CALL R2 2
+ 0x90020802, // 002D SETMBR R0 K4 R2
+ 0x88080104, // 002E GETMBR R2 R0 K4
+ 0x8C080565, // 002F GETMET R2 R2 K101
+ 0x7C080200, // 0030 CALL R2 1
+ 0xB80A5200, // 0031 GETNGBL R2 K41
+ 0x8C080566, // 0032 GETMET R2 R2 K102
+ 0x5C100000, // 0033 MOVE R4 R0
+ 0x7C080400, // 0034 CALL R2 2
+ 0x90020402, // 0035 SETMBR R0 K2 R2
+ 0xB80A5200, // 0036 GETNGBL R2 K41
+ 0x8C080568, // 0037 GETMET R2 R2 K104
+ 0x5C100000, // 0038 MOVE R4 R0
+ 0x7C080400, // 0039 CALL R2 2
+ 0x9002CE02, // 003A SETMBR R0 K103 R2
+ 0xB80A5200, // 003B GETNGBL R2 K41
+ 0x8C08055B, // 003C GETMET R2 R2 K91
+ 0x5C100000, // 003D MOVE R4 R0
+ 0x7C080400, // 003E CALL R2 2
+ 0x9002D202, // 003F SETMBR R0 K105 R2
+ 0xB80A7400, // 0040 GETNGBL R2 K58
+ 0x8C08056A, // 0041 GETMET R2 R2 K106
+ 0x7C080200, // 0042 CALL R2 1
+ 0x9408056B, // 0043 GETIDX R2 R2 K107
+ 0x740A0004, // 0044 JMPT R2 #004A
+ 0xB80A7400, // 0045 GETNGBL R2 K58
+ 0x8C08056C, // 0046 GETMET R2 R2 K108
+ 0x7C080200, // 0047 CALL R2 1
+ 0x9408056B, // 0048 GETIDX R2 R2 K107
+ 0x780A0001, // 0049 JMPF R2 #004C
+ 0x8C08016D, // 004A GETMET R2 R0 K109
+ 0x7C080200, // 004B CALL R2 1
+ 0xB80A7400, // 004C GETNGBL R2 K58
+ 0x8C08056A, // 004D GETMET R2 R2 K106
+ 0x7C080200, // 004E CALL R2 1
+ 0x9408056B, // 004F GETIDX R2 R2 K107
+ 0x740A0005, // 0050 JMPT R2 #0057
+ 0xB80A7400, // 0051 GETNGBL R2 K58
+ 0x8C08056E, // 0052 GETMET R2 R2 K110
+ 0x5810006F, // 0053 LDCONST R4 K111
+ 0x84140000, // 0054 CLOSURE R5 P0
+ 0x58180070, // 0055 LDCONST R6 K112
+ 0x7C080800, // 0056 CALL R2 4
+ 0xB80A7400, // 0057 GETNGBL R2 K58
+ 0x8C08056C, // 0058 GETMET R2 R2 K108
+ 0x7C080200, // 0059 CALL R2 1
+ 0x9408056B, // 005A GETIDX R2 R2 K107
+ 0x740A0005, // 005B JMPT R2 #0062
+ 0xB80A7400, // 005C GETNGBL R2 K58
+ 0x8C08056E, // 005D GETMET R2 R2 K110
+ 0x58100071, // 005E LDCONST R4 K113
+ 0x84140001, // 005F CLOSURE R5 P1
+ 0x58180070, // 0060 LDCONST R6 K112
+ 0x7C080800, // 0061 CALL R2 4
+ 0x88080109, // 0062 GETMBR R2 R0 K9
+ 0x8C080572, // 0063 GETMET R2 R2 K114
+ 0x7C080200, // 0064 CALL R2 1
+ 0xB80A7400, // 0065 GETNGBL R2 K58
+ 0x8C080573, // 0066 GETMET R2 R2 K115
+ 0x5C100000, // 0067 MOVE R4 R0
+ 0x7C080400, // 0068 CALL R2 2
+ 0x8C080174, // 0069 GETMET R2 R0 K116
+ 0x7C080200, // 006A CALL R2 1
+ 0xA0000000, // 006B CLOSE R0
+ 0x80000000, // 006C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: every_second
+********************************************************************/
+be_local_closure(class_Matter_Device_every_second, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(every_second),
+ &be_const_str_solidified,
+ ( &(const binstruction[13]) { /* code */
+ 0x88040104, // 0000 GETMBR R1 R0 K4
+ 0x8C040375, // 0001 GETMET R1 R1 K117
+ 0x7C040200, // 0002 CALL R1 1
+ 0x88040102, // 0003 GETMBR R1 R0 K2
+ 0x8C040375, // 0004 GETMET R1 R1 K117
+ 0x7C040200, // 0005 CALL R1 1
+ 0x88040167, // 0006 GETMBR R1 R0 K103
+ 0x8C040375, // 0007 GETMET R1 R1 K117
+ 0x7C040200, // 0008 CALL R1 1
+ 0x88040109, // 0009 GETMBR R1 R0 K9
+ 0x8C040375, // 000A GETMET R1 R1 K117
+ 0x7C040200, // 000B CALL R1 1
+ 0x80000000, // 000C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: k2l_num
+********************************************************************/
+be_local_closure(class_Matter_Device_k2l_num, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 1, /* argc */
+ 12, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(k2l_num),
+ &be_const_str_solidified,
+ ( &(const binstruction[52]) { /* code */
+ 0x5804000C, // 0000 LDCONST R1 K12
+ 0x60080012, // 0001 GETGBL R2 G18
+ 0x7C080000, // 0002 CALL R2 0
+ 0x4C0C0000, // 0003 LDNIL R3
+ 0x1C0C0003, // 0004 EQ R3 R0 R3
+ 0x780E0000, // 0005 JMPF R3 #0007
+ 0x80040400, // 0006 RET 1 R2
+ 0x600C0010, // 0007 GETGBL R3 G16
+ 0x8C100146, // 0008 GETMET R4 R0 K70
+ 0x7C100200, // 0009 CALL R4 1
+ 0x7C0C0200, // 000A CALL R3 1
+ 0xA8020007, // 000B EXBLK 0 #0014
+ 0x5C100600, // 000C MOVE R4 R3
+ 0x7C100000, // 000D CALL R4 0
+ 0x8C140542, // 000E GETMET R5 R2 K66
+ 0x601C0009, // 000F GETGBL R7 G9
+ 0x5C200800, // 0010 MOVE R8 R4
+ 0x7C1C0200, // 0011 CALL R7 1
+ 0x7C140400, // 0012 CALL R5 2
+ 0x7001FFF7, // 0013 JMP #000C
+ 0x580C0011, // 0014 LDCONST R3 K17
+ 0xAC0C0200, // 0015 CATCH R3 1 0
+ 0xB0080000, // 0016 RAISE 2 R0 R0
+ 0x600C0010, // 0017 GETGBL R3 G16
+ 0x6010000C, // 0018 GETGBL R4 G12
+ 0x5C140400, // 0019 MOVE R5 R2
+ 0x7C100200, // 001A CALL R4 1
+ 0x04100914, // 001B SUB R4 R4 K20
+ 0x40122804, // 001C CONNECT R4 K20 R4
+ 0x7C0C0200, // 001D CALL R3 1
+ 0xA8020010, // 001E EXBLK 0 #0030
+ 0x5C100600, // 001F MOVE R4 R3
+ 0x7C100000, // 0020 CALL R4 0
+ 0x94140404, // 0021 GETIDX R5 R2 R4
+ 0x5C180800, // 0022 MOVE R6 R4
+ 0x241C0D06, // 0023 GT R7 R6 K6
+ 0x781E0008, // 0024 JMPF R7 #002E
+ 0x041C0D14, // 0025 SUB R7 R6 K20
+ 0x941C0407, // 0026 GETIDX R7 R2 R7
+ 0x241C0E05, // 0027 GT R7 R7 R5
+ 0x781E0004, // 0028 JMPF R7 #002E
+ 0x041C0D14, // 0029 SUB R7 R6 K20
+ 0x941C0407, // 002A GETIDX R7 R2 R7
+ 0x98080C07, // 002B SETIDX R2 R6 R7
+ 0x04180D14, // 002C SUB R6 R6 K20
+ 0x7001FFF4, // 002D JMP #0023
+ 0x98080C05, // 002E SETIDX R2 R6 R5
+ 0x7001FFEE, // 002F JMP #001F
+ 0x580C0011, // 0030 LDCONST R3 K17
+ 0xAC0C0200, // 0031 CATCH R3 1 0
+ 0xB0080000, // 0032 RAISE 2 R0 R0
+ 0x80040400, // 0033 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: clean_remotes
+********************************************************************/
+be_local_closure(class_Matter_Device_clean_remotes, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(clean_remotes),
+ &be_const_str_solidified,
+ ( &(const binstruction[80]) { /* code */
+ 0xA406AC00, // 0000 IMPORT R1 K86
+ 0x88080176, // 0001 GETMBR R2 R0 K118
+ 0x780A004B, // 0002 JMPF R2 #004F
+ 0x60080013, // 0003 GETGBL R2 G19
+ 0x7C080000, // 0004 CALL R2 0
+ 0x600C0010, // 0005 GETGBL R3 G16
+ 0x88100176, // 0006 GETMBR R4 R0 K118
+ 0x7C0C0200, // 0007 CALL R3 1
+ 0xA8020003, // 0008 EXBLK 0 #000D
+ 0x5C100600, // 0009 MOVE R4 R3
+ 0x7C100000, // 000A CALL R4 0
+ 0x98080906, // 000B SETIDX R2 R4 K6
+ 0x7001FFFB, // 000C JMP #0009
+ 0x580C0011, // 000D LDCONST R3 K17
+ 0xAC0C0200, // 000E CATCH R3 1 0
+ 0xB0080000, // 000F RAISE 2 R0 R0
+ 0x600C0010, // 0010 GETGBL R3 G16
+ 0x88100112, // 0011 GETMBR R4 R0 K18
+ 0x7C0C0200, // 0012 CALL R3 1
+ 0xA802000F, // 0013 EXBLK 0 #0024
+ 0x5C100600, // 0014 MOVE R4 R3
+ 0x7C100000, // 0015 CALL R4 0
+ 0x8C140377, // 0016 GETMET R5 R1 K119
+ 0x5C1C0800, // 0017 MOVE R7 R4
+ 0x58200078, // 0018 LDCONST R8 K120
+ 0x7C140600, // 0019 CALL R5 3
+ 0x4C180000, // 001A LDNIL R6
+ 0x20180A06, // 001B NE R6 R5 R6
+ 0x781A0005, // 001C JMPF R6 #0023
+ 0x8C180516, // 001D GETMET R6 R2 K22
+ 0x5C200A00, // 001E MOVE R8 R5
+ 0x58240006, // 001F LDCONST R9 K6
+ 0x7C180600, // 0020 CALL R6 3
+ 0x00180D14, // 0021 ADD R6 R6 K20
+ 0x98080A06, // 0022 SETIDX R2 R5 R6
+ 0x7001FFEF, // 0023 JMP #0014
+ 0x580C0011, // 0024 LDCONST R3 K17
+ 0xAC0C0200, // 0025 CATCH R3 1 0
+ 0xB0080000, // 0026 RAISE 2 R0 R0
+ 0x600C0012, // 0027 GETGBL R3 G18
+ 0x7C0C0000, // 0028 CALL R3 0
+ 0x60100010, // 0029 GETGBL R4 G16
+ 0x8C140546, // 002A GETMET R5 R2 K70
+ 0x7C140200, // 002B CALL R5 1
+ 0x7C100200, // 002C CALL R4 1
+ 0xA8020008, // 002D EXBLK 0 #0037
+ 0x5C140800, // 002E MOVE R5 R4
+ 0x7C140000, // 002F CALL R5 0
+ 0x94180405, // 0030 GETIDX R6 R2 R5
+ 0x1C180D06, // 0031 EQ R6 R6 K6
+ 0x781A0002, // 0032 JMPF R6 #0036
+ 0x8C180742, // 0033 GETMET R6 R3 K66
+ 0x5C200A00, // 0034 MOVE R8 R5
+ 0x7C180400, // 0035 CALL R6 2
+ 0x7001FFF6, // 0036 JMP #002E
+ 0x58100011, // 0037 LDCONST R4 K17
+ 0xAC100200, // 0038 CATCH R4 1 0
+ 0xB0080000, // 0039 RAISE 2 R0 R0
+ 0x60100010, // 003A GETGBL R4 G16
+ 0x5C140600, // 003B MOVE R5 R3
+ 0x7C100200, // 003C CALL R4 1
+ 0xA802000D, // 003D EXBLK 0 #004C
+ 0x5C140800, // 003E MOVE R5 R4
+ 0x7C140000, // 003F CALL R5 0
+ 0xB81A2E00, // 0040 GETNGBL R6 K23
+ 0x881C0B7A, // 0041 GETMBR R7 R5 K122
+ 0x001EF207, // 0042 ADD R7 K121 R7
+ 0x58200030, // 0043 LDCONST R8 K48
+ 0x7C180400, // 0044 CALL R6 2
+ 0x8C180B7B, // 0045 GETMET R6 R5 K123
+ 0x7C180200, // 0046 CALL R6 1
+ 0x88180176, // 0047 GETMBR R6 R0 K118
+ 0x8C180D53, // 0048 GETMET R6 R6 K83
+ 0x88200B7A, // 0049 GETMBR R8 R5 K122
+ 0x7C180400, // 004A CALL R6 2
+ 0x7001FFF1, // 004B JMP #003E
+ 0x58100011, // 004C LDCONST R4 K17
+ 0xAC100200, // 004D CATCH R4 1 0
+ 0xB0080000, // 004E RAISE 2 R0 R0
+ 0x80000000, // 004F RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: every_250ms
+********************************************************************/
+be_local_closure(class_Matter_Device_every_250ms, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(every_250ms),
+ &be_const_str_solidified,
+ ( &(const binstruction[15]) { /* code */
+ 0x8C04017C, // 0000 GETMET R1 R0 K124
+ 0x7C040200, // 0001 CALL R1 1
+ 0x58040006, // 0002 LDCONST R1 K6
+ 0x6008000C, // 0003 GETGBL R2 G12
+ 0x880C0112, // 0004 GETMBR R3 R0 K18
+ 0x7C080200, // 0005 CALL R2 1
+ 0x14080202, // 0006 LT R2 R1 R2
+ 0x780A0005, // 0007 JMPF R2 #000E
+ 0x88080112, // 0008 GETMBR R2 R0 K18
+ 0x94080401, // 0009 GETIDX R2 R2 R1
+ 0x8C08057D, // 000A GETMET R2 R2 K125
+ 0x7C080200, // 000B CALL R2 1
+ 0x00040314, // 000C ADD R1 R1 K20
+ 0x7001FFF4, // 000D JMP #0003
+ 0x80000000, // 000E RET 0
})
)
);
@@ -1504,111 +1818,537 @@ be_local_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics, /
/********************************************************************
** Solidified function: process_attribute_expansion
********************************************************************/
-extern const bclass be_class_Matter_Device;
be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */
be_nested_proto(
- 16, /* nstack */
+ 12, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Device,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
- /* K0 */ be_nested_str_weak(endpoint),
- /* K1 */ be_nested_str_weak(cluster),
- /* K2 */ be_nested_str_weak(attribute),
- /* K3 */ be_nested_str_weak(matter),
- /* K4 */ be_nested_str_weak(PathGenerator),
- /* K5 */ be_nested_str_weak(start),
- /* K6 */ be_nested_str_weak(next),
- /* K7 */ be_nested_str_weak(get_pi),
- /* K8 */ be_nested_str_weak(endpoint_found),
- /* K9 */ be_nested_str_weak(status),
- /* K10 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT),
- /* K11 */ be_nested_str_weak(cluster_found),
- /* K12 */ be_nested_str_weak(UNSUPPORTED_CLUSTER),
- /* K13 */ be_nested_str_weak(attribute_found),
- /* K14 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
- /* K15 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE),
- }),
+ &be_ktab_class_Matter_Device, /* shared constants */
be_str_weak(process_attribute_expansion),
&be_const_str_solidified,
- ( &(const binstruction[73]) { /* code */
- 0x880C0300, // 0000 GETMBR R3 R1 K0
- 0x88100301, // 0001 GETMBR R4 R1 K1
- 0x88140302, // 0002 GETMBR R5 R1 K2
- 0x50180000, // 0003 LDBOOL R6 0 0
- 0x501C0000, // 0004 LDBOOL R7 0 0
- 0x50200000, // 0005 LDBOOL R8 0 0
- 0x88240300, // 0006 GETMBR R9 R1 K0
- 0x4C280000, // 0007 LDNIL R10
- 0x2024120A, // 0008 NE R9 R9 R10
- 0x78260007, // 0009 JMPF R9 #0012
- 0x88240301, // 000A GETMBR R9 R1 K1
- 0x4C280000, // 000B LDNIL R10
- 0x2024120A, // 000C NE R9 R9 R10
- 0x78260003, // 000D JMPF R9 #0012
- 0x88240302, // 000E GETMBR R9 R1 K2
- 0x4C280000, // 000F LDNIL R10
- 0x2024120A, // 0010 NE R9 R9 R10
- 0x74260000, // 0011 JMPT R9 #0013
- 0x50240001, // 0012 LDBOOL R9 0 1
- 0x50240200, // 0013 LDBOOL R9 1 0
- 0xB82A0600, // 0014 GETNGBL R10 K3
- 0x8C281504, // 0015 GETMET R10 R10 K4
- 0x5C300000, // 0016 MOVE R12 R0
- 0x7C280400, // 0017 CALL R10 2
- 0x8C2C1505, // 0018 GETMET R11 R10 K5
- 0x5C340200, // 0019 MOVE R13 R1
- 0x4C380000, // 001A LDNIL R14
- 0x7C2C0600, // 001B CALL R11 3
- 0x4C2C0000, // 001C LDNIL R11
- 0x8C301506, // 001D GETMET R12 R10 K6
- 0x7C300200, // 001E CALL R12 1
- 0x5C2C1800, // 001F MOVE R11 R12
- 0x4C340000, // 0020 LDNIL R13
- 0x2030180D, // 0021 NE R12 R12 R13
- 0x78320009, // 0022 JMPF R12 #002D
- 0x5C300400, // 0023 MOVE R12 R2
- 0x8C341507, // 0024 GETMET R13 R10 K7
- 0x7C340200, // 0025 CALL R13 1
- 0x5C381600, // 0026 MOVE R14 R11
- 0x5C3C1200, // 0027 MOVE R15 R9
- 0x7C300600, // 0028 CALL R12 3
- 0x78260001, // 0029 JMPF R9 #002C
- 0x78320000, // 002A JMPF R12 #002C
- 0x80001A00, // 002B RET 0
- 0x7001FFEF, // 002C JMP #001D
- 0x78260019, // 002D JMPF R9 #0048
- 0x88301508, // 002E GETMBR R12 R10 K8
- 0x74320003, // 002F JMPT R12 #0034
- 0xB8320600, // 0030 GETNGBL R12 K3
- 0x8830190A, // 0031 GETMBR R12 R12 K10
- 0x9006120C, // 0032 SETMBR R1 K9 R12
- 0x7002000E, // 0033 JMP #0043
- 0x8830150B, // 0034 GETMBR R12 R10 K11
- 0x74320003, // 0035 JMPT R12 #003A
- 0xB8320600, // 0036 GETNGBL R12 K3
- 0x8830190C, // 0037 GETMBR R12 R12 K12
- 0x9006120C, // 0038 SETMBR R1 K9 R12
- 0x70020008, // 0039 JMP #0043
- 0x8830150D, // 003A GETMBR R12 R10 K13
- 0x74320003, // 003B JMPT R12 #0040
- 0xB8320600, // 003C GETNGBL R12 K3
- 0x8830190E, // 003D GETMBR R12 R12 K14
- 0x9006120C, // 003E SETMBR R1 K9 R12
- 0x70020002, // 003F JMP #0043
- 0xB8320600, // 0040 GETNGBL R12 K3
- 0x8830190F, // 0041 GETMBR R12 R12 K15
- 0x9006120C, // 0042 SETMBR R1 K9 R12
- 0x5C300400, // 0043 MOVE R12 R2
- 0x4C340000, // 0044 LDNIL R13
- 0x5C380200, // 0045 MOVE R14 R1
- 0x503C0200, // 0046 LDBOOL R15 1 0
- 0x7C300600, // 0047 CALL R12 3
- 0x80000000, // 0048 RET 0
+ ( &(const binstruction[28]) { /* code */
+ 0x880C0324, // 0000 GETMBR R3 R1 K36
+ 0x88100325, // 0001 GETMBR R4 R1 K37
+ 0x88140326, // 0002 GETMBR R5 R1 K38
+ 0xB81A5200, // 0003 GETNGBL R6 K41
+ 0x8C180D7E, // 0004 GETMET R6 R6 K126
+ 0x5C200000, // 0005 MOVE R8 R0
+ 0x7C180400, // 0006 CALL R6 2
+ 0x8C1C0D6D, // 0007 GETMET R7 R6 K109
+ 0x5C240600, // 0008 MOVE R9 R3
+ 0x5C280800, // 0009 MOVE R10 R4
+ 0x5C2C0A00, // 000A MOVE R11 R5
+ 0x7C1C0800, // 000B CALL R7 4
+ 0x8C1C0D7F, // 000C GETMET R7 R6 K127
+ 0x7C1C0200, // 000D CALL R7 1
+ 0x4C200000, // 000E LDNIL R8
+ 0x8C240D80, // 000F GETMET R9 R6 K128
+ 0x7C240200, // 0010 CALL R9 1
+ 0x5C201200, // 0011 MOVE R8 R9
+ 0x4C280000, // 0012 LDNIL R10
+ 0x2024120A, // 0013 NE R9 R9 R10
+ 0x78260005, // 0014 JMPF R9 #001B
+ 0x5C240400, // 0015 MOVE R9 R2
+ 0x8C280D81, // 0016 GETMET R10 R6 K129
+ 0x7C280200, // 0017 CALL R10 1
+ 0x5C2C1000, // 0018 MOVE R11 R8
+ 0x7C240400, // 0019 CALL R9 2
+ 0x7001FFF3, // 001A JMP #000F
+ 0x80000000, // 001B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: attribute_updated
+********************************************************************/
+be_local_closure(class_Matter_Device_attribute_updated, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 5, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(attribute_updated),
+ &be_const_str_solidified,
+ ( &(const binstruction[18]) { /* code */
+ 0x4C140000, // 0000 LDNIL R5
+ 0x1C140805, // 0001 EQ R5 R4 R5
+ 0x78160000, // 0002 JMPF R5 #0004
+ 0x50100000, // 0003 LDBOOL R4 0 0
+ 0xB8165200, // 0004 GETNGBL R5 K41
+ 0x8C140B82, // 0005 GETMET R5 R5 K130
+ 0x7C140200, // 0006 CALL R5 1
+ 0x90164801, // 0007 SETMBR R5 K36 R1
+ 0x90164A02, // 0008 SETMBR R5 K37 R2
+ 0x90164C03, // 0009 SETMBR R5 K38 R3
+ 0x88180102, // 000A GETMBR R6 R0 K2
+ 0x88180D1E, // 000B GETMBR R6 R6 K30
+ 0x88180D1F, // 000C GETMBR R6 R6 K31
+ 0x8C180D83, // 000D GETMET R6 R6 K131
+ 0x5C200A00, // 000E MOVE R8 R5
+ 0x5C240800, // 000F MOVE R9 R4
+ 0x7C180600, // 0010 CALL R6 3
+ 0x80000000, // 0011 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: reset_param
+********************************************************************/
+be_local_closure(class_Matter_Device_reset_param, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(reset_param),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x50040000, // 0000 LDBOOL R1 0 0
+ 0x90020E01, // 0001 SETMBR R0 K7 R1
+ 0x8804015F, // 0002 GETMBR R1 R0 K95
+ 0x90028E01, // 0003 SETMBR R0 K71 R1
+ 0x8C040108, // 0004 GETMET R1 R0 K8
+ 0x7C040200, // 0005 CALL R1 1
+ 0x80000000, // 0006 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: bridge_add_endpoint
+********************************************************************/
+be_local_closure(class_Matter_Device_bridge_add_endpoint, /* name */
+ be_nested_proto(
+ 16, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(bridge_add_endpoint),
+ &be_const_str_solidified,
+ ( &(const binstruction[68]) { /* code */
+ 0x880C0151, // 0000 GETMBR R3 R0 K81
+ 0x8C0C0716, // 0001 GETMET R3 R3 K22
+ 0x5C140200, // 0002 MOVE R5 R1
+ 0x7C0C0400, // 0003 CALL R3 2
+ 0x4C100000, // 0004 LDNIL R4
+ 0x1C100604, // 0005 EQ R4 R3 R4
+ 0x78120008, // 0006 JMPF R4 #0010
+ 0xB8122E00, // 0007 GETNGBL R4 K23
+ 0x60140008, // 0008 GETGBL R5 G8
+ 0x5C180200, // 0009 MOVE R6 R1
+ 0x7C140200, // 000A CALL R5 1
+ 0x00170805, // 000B ADD R5 K132 R5
+ 0x00140B85, // 000C ADD R5 R5 K133
+ 0x58180030, // 000D LDCONST R6 K48
+ 0x7C100400, // 000E CALL R4 2
+ 0x80000800, // 000F RET 0
+ 0x88100147, // 0010 GETMBR R4 R0 K71
+ 0x60140008, // 0011 GETGBL R5 G8
+ 0x5C180800, // 0012 MOVE R6 R4
+ 0x7C140200, // 0013 CALL R5 1
+ 0x5C180600, // 0014 MOVE R6 R3
+ 0x5C1C0000, // 0015 MOVE R7 R0
+ 0x5C200800, // 0016 MOVE R8 R4
+ 0x5C240400, // 0017 MOVE R9 R2
+ 0x7C180600, // 0018 CALL R6 3
+ 0x881C0112, // 0019 GETMBR R7 R0 K18
+ 0x8C1C0F42, // 001A GETMET R7 R7 K66
+ 0x5C240C00, // 001B MOVE R9 R6
+ 0x7C1C0400, // 001C CALL R7 2
+ 0x601C0013, // 001D GETGBL R7 G19
+ 0x7C1C0000, // 001E CALL R7 0
+ 0x981E1E01, // 001F SETIDX R7 K15 R1
+ 0x60200010, // 0020 GETGBL R8 G16
+ 0x8C240546, // 0021 GETMET R9 R2 K70
+ 0x7C240200, // 0022 CALL R9 1
+ 0x7C200200, // 0023 CALL R8 1
+ 0xA8020004, // 0024 EXBLK 0 #002A
+ 0x5C241000, // 0025 MOVE R9 R8
+ 0x7C240000, // 0026 CALL R9 0
+ 0x94280409, // 0027 GETIDX R10 R2 R9
+ 0x981C120A, // 0028 SETIDX R7 R9 R10
+ 0x7001FFFA, // 0029 JMP #0025
+ 0x58200011, // 002A LDCONST R8 K17
+ 0xAC200200, // 002B CATCH R8 1 0
+ 0xB0080000, // 002C RAISE 2 R0 R0
+ 0xB8222E00, // 002D GETNGBL R8 K23
+ 0x60240018, // 002E GETGBL R9 G24
+ 0x58280086, // 002F LDCONST R10 K134
+ 0x5C2C0800, // 0030 MOVE R11 R4
+ 0x5C300200, // 0031 MOVE R12 R1
+ 0x8C340187, // 0032 GETMET R13 R0 K135
+ 0x5C3C0400, // 0033 MOVE R15 R2
+ 0x7C340400, // 0034 CALL R13 2
+ 0x7C240800, // 0035 CALL R9 4
+ 0x5828001D, // 0036 LDCONST R10 K29
+ 0x7C200400, // 0037 CALL R8 2
+ 0x88200135, // 0038 GETMBR R8 R0 K53
+ 0x98200A07, // 0039 SETIDX R8 R5 R7
+ 0x50200200, // 003A LDBOOL R8 1 0
+ 0x90020E08, // 003B SETMBR R0 K7 R8
+ 0x88200147, // 003C GETMBR R8 R0 K71
+ 0x00201114, // 003D ADD R8 R8 K20
+ 0x90028E08, // 003E SETMBR R0 K71 R8
+ 0x8C200108, // 003F GETMET R8 R0 K8
+ 0x7C200200, // 0040 CALL R8 1
+ 0x8C200188, // 0041 GETMET R8 R0 K136
+ 0x7C200200, // 0042 CALL R8 1
+ 0x80040800, // 0043 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: MtrInfo
+********************************************************************/
+be_local_closure(class_Matter_Device_MtrInfo, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 5, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(MtrInfo),
+ &be_const_str_solidified,
+ ( &(const binstruction[40]) { /* code */
+ 0x1C14070D, // 0000 EQ R5 R3 K13
+ 0x7815FFFF, // 0001 JMPF R5 #0002
+ 0x1C14070D, // 0002 EQ R5 R3 K13
+ 0x7816000D, // 0003 JMPF R5 #0012
+ 0x60140010, // 0004 GETGBL R5 G16
+ 0x88180112, // 0005 GETMBR R6 R0 K18
+ 0x7C140200, // 0006 CALL R5 1
+ 0xA8020005, // 0007 EXBLK 0 #000E
+ 0x5C180A00, // 0008 MOVE R6 R5
+ 0x7C180000, // 0009 CALL R6 0
+ 0x8C1C0189, // 000A GETMET R7 R0 K137
+ 0x88240D24, // 000B GETMBR R9 R6 K36
+ 0x7C1C0400, // 000C CALL R7 2
+ 0x7001FFF9, // 000D JMP #0008
+ 0x58140011, // 000E LDCONST R5 K17
+ 0xAC140200, // 000F CATCH R5 1 0
+ 0xB0080000, // 0010 RAISE 2 R0 R0
+ 0x70020011, // 0011 JMP #0024
+ 0x60140004, // 0012 GETGBL R5 G4
+ 0x5C180800, // 0013 MOVE R6 R4
+ 0x7C140200, // 0014 CALL R5 1
+ 0x1C140B8A, // 0015 EQ R5 R5 K138
+ 0x78160003, // 0016 JMPF R5 #001B
+ 0x8C140189, // 0017 GETMET R5 R0 K137
+ 0x5C1C0800, // 0018 MOVE R7 R4
+ 0x7C140400, // 0019 CALL R5 2
+ 0x70020008, // 001A JMP #0024
+ 0x8C14018B, // 001B GETMET R5 R0 K139
+ 0x5C1C0600, // 001C MOVE R7 R3
+ 0x7C140400, // 001D CALL R5 2
+ 0x4C180000, // 001E LDNIL R6
+ 0x20180A06, // 001F NE R6 R5 R6
+ 0x781A0002, // 0020 JMPF R6 #0024
+ 0x8C180189, // 0021 GETMET R6 R0 K137
+ 0x88200B24, // 0022 GETMBR R8 R5 K36
+ 0x7C180400, // 0023 CALL R6 2
+ 0xB8167400, // 0024 GETNGBL R5 K58
+ 0x8C140B8C, // 0025 GETMET R5 R5 K140
+ 0x7C140200, // 0026 CALL R5 1
+ 0x80000000, // 0027 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: _start_udp
+********************************************************************/
+be_local_closure(class_Matter_Device__start_udp, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 1]) {
+ be_nested_proto(
+ 8, /* nstack */
+ 3, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(msg_received),
+ }),
+ be_str_weak(_X3Clambda_X3E),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x680C0000, // 0000 GETUPV R3 U0
+ 0x8C0C0700, // 0001 GETMET R3 R3 K0
+ 0x5C140000, // 0002 MOVE R5 R0
+ 0x5C180200, // 0003 MOVE R6 R1
+ 0x5C1C0400, // 0004 MOVE R7 R2
+ 0x7C0C0800, // 0005 CALL R3 4
+ 0x80040600, // 0006 RET 1 R3
+ })
+ ),
+ }),
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(_start_udp),
+ &be_const_str_solidified,
+ ( &(const binstruction[27]) { /* code */
+ 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x780A0000, // 0001 JMPF R2 #0003
+ 0x80000400, // 0002 RET 0
+ 0x4C080000, // 0003 LDNIL R2
+ 0x1C080202, // 0004 EQ R2 R1 R2
+ 0x780A0000, // 0005 JMPF R2 #0007
+ 0x540615A3, // 0006 LDINT R1 5540
+ 0xB80A2E00, // 0007 GETNGBL R2 K23
+ 0x600C0008, // 0008 GETGBL R3 G8
+ 0x5C100200, // 0009 MOVE R4 R1
+ 0x7C0C0200, // 000A CALL R3 1
+ 0x000F1A03, // 000B ADD R3 K141 R3
+ 0x5810001D, // 000C LDCONST R4 K29
+ 0x7C080400, // 000D CALL R2 2
+ 0xB80A5200, // 000E GETNGBL R2 K41
+ 0x8C08058E, // 000F GETMET R2 R2 K142
+ 0x5C100000, // 0010 MOVE R4 R0
+ 0x5814000D, // 0011 LDCONST R5 K13
+ 0x5C180200, // 0012 MOVE R6 R1
+ 0x7C080800, // 0013 CALL R2 4
+ 0x90020002, // 0014 SETMBR R0 K0 R2
+ 0x88080100, // 0015 GETMBR R2 R0 K0
+ 0x8C08056D, // 0016 GETMET R2 R2 K109
+ 0x84100000, // 0017 CLOSURE R4 P0
+ 0x7C080400, // 0018 CALL R2 2
+ 0xA0000000, // 0019 CLOSE R0
+ 0x80000000, // 001A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: load_param
+********************************************************************/
+be_local_closure(class_Matter_Device_load_param, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(load_param),
+ &be_const_str_solidified,
+ ( &(const binstruction[134]) { /* code */
+ 0xA406B000, // 0000 IMPORT R1 K88
+ 0x50080000, // 0001 LDBOOL R2 0 0
+ 0xA8020054, // 0002 EXBLK 0 #0058
+ 0x600C0011, // 0003 GETGBL R3 G17
+ 0x8810018F, // 0004 GETMBR R4 R0 K143
+ 0x7C0C0200, // 0005 CALL R3 1
+ 0x8C100790, // 0006 GETMET R4 R3 K144
+ 0x7C100200, // 0007 CALL R4 1
+ 0x8C14077B, // 0008 GETMET R5 R3 K123
+ 0x7C140200, // 0009 CALL R5 1
+ 0xA4166400, // 000A IMPORT R5 K50
+ 0x8C180B3E, // 000B GETMET R6 R5 K62
+ 0x5C200800, // 000C MOVE R8 R4
+ 0x7C180400, // 000D CALL R6 2
+ 0x8C1C0D16, // 000E GETMET R7 R6 K22
+ 0x58240092, // 000F LDCONST R9 K146
+ 0x88280191, // 0010 GETMBR R10 R0 K145
+ 0x7C1C0600, // 0011 CALL R7 3
+ 0x90032207, // 0012 SETMBR R0 K145 R7
+ 0x8C1C0D16, // 0013 GETMET R7 R6 K22
+ 0x58240094, // 0014 LDCONST R9 K148
+ 0x88280193, // 0015 GETMBR R10 R0 K147
+ 0x7C1C0600, // 0016 CALL R7 3
+ 0x90032607, // 0017 SETMBR R0 K147 R7
+ 0x601C0017, // 0018 GETGBL R7 G23
+ 0x8C200D16, // 0019 GETMET R8 R6 K22
+ 0x58280060, // 001A LDCONST R10 K96
+ 0x502C0000, // 001B LDBOOL R11 0 0
+ 0x7C200600, // 001C CALL R8 3
+ 0x7C1C0200, // 001D CALL R7 1
+ 0x9002C007, // 001E SETMBR R0 K96 R7
+ 0x601C0017, // 001F GETGBL R7 G23
+ 0x8C200D16, // 0020 GETMET R8 R6 K22
+ 0x58280061, // 0021 LDCONST R10 K97
+ 0x502C0000, // 0022 LDBOOL R11 0 0
+ 0x7C200600, // 0023 CALL R8 3
+ 0x7C1C0200, // 0024 CALL R7 1
+ 0x9002C207, // 0025 SETMBR R0 K97 R7
+ 0x8C1C0D16, // 0026 GETMET R7 R6 K22
+ 0x58240095, // 0027 LDCONST R9 K149
+ 0x88280147, // 0028 GETMBR R10 R0 K71
+ 0x7C1C0600, // 0029 CALL R7 3
+ 0x90028E07, // 002A SETMBR R0 K71 R7
+ 0x8C1C0D16, // 002B GETMET R7 R6 K22
+ 0x58240096, // 002C LDCONST R9 K150
+ 0x7C1C0400, // 002D CALL R7 2
+ 0x90026A07, // 002E SETMBR R0 K53 R7
+ 0x601C0017, // 002F GETGBL R7 G23
+ 0x8C200D16, // 0030 GETMET R8 R6 K22
+ 0x58280097, // 0031 LDCONST R10 K151
+ 0x7C200400, // 0032 CALL R8 2
+ 0x7C1C0200, // 0033 CALL R7 1
+ 0x90032E07, // 0034 SETMBR R0 K151 R7
+ 0x881C0135, // 0035 GETMBR R7 R0 K53
+ 0x4C200000, // 0036 LDNIL R8
+ 0x201C0E08, // 0037 NE R7 R7 R8
+ 0x781E000D, // 0038 JMPF R7 #0047
+ 0xB81E2E00, // 0039 GETNGBL R7 K23
+ 0x60200018, // 003A GETGBL R8 G24
+ 0x58240098, // 003B LDCONST R9 K152
+ 0x88280135, // 003C GETMBR R10 R0 K53
+ 0x7C200400, // 003D CALL R8 2
+ 0x58240030, // 003E LDCONST R9 K48
+ 0x7C1C0400, // 003F CALL R7 2
+ 0x8C1C0137, // 0040 GETMET R7 R0 K55
+ 0x7C1C0200, // 0041 CALL R7 1
+ 0x8C1C0199, // 0042 GETMET R7 R0 K153
+ 0x7C1C0200, // 0043 CALL R7 1
+ 0x5C080E00, // 0044 MOVE R2 R7
+ 0x501C0200, // 0045 LDBOOL R7 1 0
+ 0x90020E07, // 0046 SETMBR R0 K7 R7
+ 0x8C1C0D16, // 0047 GETMET R7 R6 K22
+ 0x5824009A, // 0048 LDCONST R9 K154
+ 0x60280013, // 0049 GETGBL R10 G19
+ 0x7C280000, // 004A CALL R10 0
+ 0x7C1C0600, // 004B CALL R7 3
+ 0x90022A07, // 004C SETMBR R0 K21 R7
+ 0x881C0115, // 004D GETMBR R7 R0 K21
+ 0x781E0006, // 004E JMPF R7 #0056
+ 0xB81E2E00, // 004F GETNGBL R7 K23
+ 0x60200008, // 0050 GETGBL R8 G8
+ 0x88240115, // 0051 GETMBR R9 R0 K21
+ 0x7C200200, // 0052 CALL R8 1
+ 0x00233608, // 0053 ADD R8 K155 R8
+ 0x58240030, // 0054 LDCONST R9 K48
+ 0x7C1C0400, // 0055 CALL R7 2
+ 0xA8040001, // 0056 EXBLK 1 1
+ 0x70020011, // 0057 JMP #006A
+ 0xAC0C0002, // 0058 CATCH R3 0 2
+ 0x7002000E, // 0059 JMP #0069
+ 0x2014079C, // 005A NE R5 R3 K156
+ 0x7816000B, // 005B JMPF R5 #0068
+ 0xB8162E00, // 005C GETNGBL R5 K23
+ 0x60180008, // 005D GETGBL R6 G8
+ 0x5C1C0600, // 005E MOVE R7 R3
+ 0x7C180200, // 005F CALL R6 1
+ 0x001B3A06, // 0060 ADD R6 K157 R6
+ 0x00180D9E, // 0061 ADD R6 R6 K158
+ 0x601C0008, // 0062 GETGBL R7 G8
+ 0x5C200800, // 0063 MOVE R8 R4
+ 0x7C1C0200, // 0064 CALL R7 1
+ 0x00180C07, // 0065 ADD R6 R6 R7
+ 0x581C001D, // 0066 LDCONST R7 K29
+ 0x7C140400, // 0067 CALL R5 2
+ 0x70020000, // 0068 JMP #006A
+ 0xB0080000, // 0069 RAISE 2 R0 R0
+ 0x880C0191, // 006A GETMBR R3 R0 K145
+ 0x4C100000, // 006B LDNIL R4
+ 0x1C0C0604, // 006C EQ R3 R3 R4
+ 0x780E000A, // 006D JMPF R3 #0079
+ 0x8C0C039F, // 006E GETMET R3 R1 K159
+ 0x5814001D, // 006F LDCONST R5 K29
+ 0x7C0C0400, // 0070 CALL R3 2
+ 0x8C0C0777, // 0071 GETMET R3 R3 K119
+ 0x58140006, // 0072 LDCONST R5 K6
+ 0x5818001D, // 0073 LDCONST R6 K29
+ 0x7C0C0600, // 0074 CALL R3 3
+ 0x54120FFE, // 0075 LDINT R4 4095
+ 0x2C0C0604, // 0076 AND R3 R3 R4
+ 0x90032203, // 0077 SETMBR R0 K145 R3
+ 0x50080200, // 0078 LDBOOL R2 1 0
+ 0x880C0193, // 0079 GETMBR R3 R0 K147
+ 0x4C100000, // 007A LDNIL R4
+ 0x1C0C0604, // 007B EQ R3 R3 R4
+ 0x780E0004, // 007C JMPF R3 #0082
+ 0x880C0109, // 007D GETMBR R3 R0 K9
+ 0x8C0C07A0, // 007E GETMET R3 R3 K160
+ 0x7C0C0200, // 007F CALL R3 1
+ 0x90032603, // 0080 SETMBR R0 K147 R3
+ 0x50080200, // 0081 LDBOOL R2 1 0
+ 0x780A0001, // 0082 JMPF R2 #0085
+ 0x8C0C0108, // 0083 GETMET R3 R0 K8
+ 0x7C0C0200, // 0084 CALL R3 1
+ 0x80000000, // 0085 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: every_50ms
+********************************************************************/
+be_local_closure(class_Matter_Device_every_50ms, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(every_50ms),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x8804015E, // 0000 GETMBR R1 R0 K94
+ 0x00040314, // 0001 ADD R1 R1 K20
+ 0x9002BC01, // 0002 SETMBR R0 K94 R1
+ 0x88040102, // 0003 GETMBR R1 R0 K2
+ 0x8C0403A1, // 0004 GETMET R1 R1 K161
+ 0x7C040200, // 0005 CALL R1 1
+ 0x80000000, // 0006 RET 0
})
)
);
@@ -1618,16 +2358,15 @@ be_local_closure(class_Matter_Device_process_attribute_expansion, /* name */
/********************************************************************
** Solidified function: register_commands
********************************************************************/
-extern const bclass be_class_Matter_Device;
be_local_closure(class_Matter_Device_register_commands, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 4]) {
+ ( &(const struct bproto*[ 3]) {
be_nested_proto(
10, /* nstack */
4, /* argc */
@@ -1637,7 +2376,7 @@ be_local_closure(class_Matter_Device_register_commands, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(MtrJoin),
@@ -1664,7 +2403,7 @@ be_local_closure(class_Matter_Device_register_commands, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(MtrUpdate),
@@ -1691,7 +2430,7 @@ be_local_closure(class_Matter_Device_register_commands, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(MtrInfo),
@@ -1709,32 +2448,25 @@ be_local_closure(class_Matter_Device_register_commands, /* name */
0x80040800, // 0007 RET 1 R4
})
),
- &be_class_Matter_Device,
}),
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(add_cmd),
- /* K2 */ be_nested_str_weak(MtrJoin),
- /* K3 */ be_nested_str_weak(MtrUpdate),
- /* K4 */ be_nested_str_weak(MtrInfo),
- }),
+ &be_ktab_class_Matter_Device, /* shared constants */
be_str_weak(register_commands),
&be_const_str_solidified,
( &(const binstruction[17]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x580C0002, // 0002 LDCONST R3 K2
+ 0xB8067400, // 0000 GETNGBL R1 K58
+ 0x8C0403A2, // 0001 GETMET R1 R1 K162
+ 0x580C00A3, // 0002 LDCONST R3 K163
0x84100000, // 0003 CLOSURE R4 P0
0x7C040600, // 0004 CALL R1 3
- 0xB8060000, // 0005 GETNGBL R1 K0
- 0x8C040301, // 0006 GETMET R1 R1 K1
- 0x580C0003, // 0007 LDCONST R3 K3
+ 0xB8067400, // 0005 GETNGBL R1 K58
+ 0x8C0403A2, // 0006 GETMET R1 R1 K162
+ 0x580C00A4, // 0007 LDCONST R3 K164
0x84100001, // 0008 CLOSURE R4 P1
0x7C040600, // 0009 CALL R1 3
- 0xB8060000, // 000A GETNGBL R1 K0
- 0x8C040301, // 000B GETMET R1 R1 K1
- 0x580C0004, // 000C LDCONST R3 K4
+ 0xB8067400, // 000A GETNGBL R1 K58
+ 0x8C0403A2, // 000B GETMET R1 R1 K162
+ 0x580C00A5, // 000C LDCONST R3 K165
0x84100002, // 000D CLOSURE R4 P2
0x7C040600, // 000E CALL R1 3
0xA0000000, // 000F CLOSE R0
@@ -1746,387 +2478,105 @@ be_local_closure(class_Matter_Device_register_commands, /* name */
/********************************************************************
-** Solidified function: update_remotes_info
+** Solidified function: save_param
********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_update_remotes_info, /* name */
- be_nested_proto(
- 7, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(http_remotes),
- /* K1 */ be_nested_str_weak(keys),
- /* K2 */ be_nested_str_weak(get_info),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(stop_iteration),
- /* K5 */ be_nested_str_weak(plugins_config_remotes),
- }),
- be_str_weak(update_remotes_info),
- &be_const_str_solidified,
- ( &(const binstruction[33]) { /* code */
- 0x60040013, // 0000 GETGBL R1 G19
- 0x7C040000, // 0001 CALL R1 0
- 0x88080100, // 0002 GETMBR R2 R0 K0
- 0x4C0C0000, // 0003 LDNIL R3
- 0x20080403, // 0004 NE R2 R2 R3
- 0x780A0018, // 0005 JMPF R2 #001F
- 0x60080010, // 0006 GETGBL R2 G16
- 0x880C0100, // 0007 GETMBR R3 R0 K0
- 0x8C0C0701, // 0008 GETMET R3 R3 K1
- 0x7C0C0200, // 0009 CALL R3 1
- 0x7C080200, // 000A CALL R2 1
- 0xA802000F, // 000B EXBLK 0 #001C
- 0x5C0C0400, // 000C MOVE R3 R2
- 0x7C0C0000, // 000D CALL R3 0
- 0x88100100, // 000E GETMBR R4 R0 K0
- 0x94100803, // 000F GETIDX R4 R4 R3
- 0x8C100902, // 0010 GETMET R4 R4 K2
- 0x7C100200, // 0011 CALL R4 1
- 0x4C140000, // 0012 LDNIL R5
- 0x20140805, // 0013 NE R5 R4 R5
- 0x78160005, // 0014 JMPF R5 #001B
- 0x6014000C, // 0015 GETGBL R5 G12
- 0x5C180800, // 0016 MOVE R6 R4
- 0x7C140200, // 0017 CALL R5 1
- 0x24140B03, // 0018 GT R5 R5 K3
- 0x78160000, // 0019 JMPF R5 #001B
- 0x98040604, // 001A SETIDX R1 R3 R4
- 0x7001FFEF, // 001B JMP #000C
- 0x58080004, // 001C LDCONST R2 K4
- 0xAC080200, // 001D CATCH R2 1 0
- 0xB0080000, // 001E RAISE 2 R0 R0
- 0x90020A01, // 001F SETMBR R0 K5 R1
- 0x80040200, // 0020 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: _compute_pbkdf
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device__compute_pbkdf, /* name */
- be_nested_proto(
- 13, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(add),
- /* K2 */ be_nested_str_weak(PBKDF2_HMAC_SHA256),
- /* K3 */ be_nested_str_weak(derive),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(root_w0),
- /* K6 */ be_nested_str_weak(EC_P256),
- /* K7 */ be_nested_str_weak(mod),
- /* K8 */ be_nested_str_weak(root_L),
- /* K9 */ be_nested_str_weak(public_key),
- }),
- be_str_weak(_compute_pbkdf),
- &be_const_str_solidified,
- ( &(const binstruction[40]) { /* code */
- 0xA4120000, // 0000 IMPORT R4 K0
- 0x60140015, // 0001 GETGBL R5 G21
- 0x7C140000, // 0002 CALL R5 0
- 0x8C140B01, // 0003 GETMET R5 R5 K1
- 0x5C1C0200, // 0004 MOVE R7 R1
- 0x54220003, // 0005 LDINT R8 4
- 0x7C140600, // 0006 CALL R5 3
- 0x8C180902, // 0007 GETMET R6 R4 K2
- 0x7C180200, // 0008 CALL R6 1
- 0x8C180D03, // 0009 GETMET R6 R6 K3
- 0x5C200A00, // 000A MOVE R8 R5
- 0x5C240600, // 000B MOVE R9 R3
- 0x5C280400, // 000C MOVE R10 R2
- 0x542E004F, // 000D LDINT R11 80
- 0x7C180A00, // 000E CALL R6 5
- 0x541E0026, // 000F LDINT R7 39
- 0x401E0807, // 0010 CONNECT R7 K4 R7
- 0x941C0C07, // 0011 GETIDX R7 R6 R7
- 0x54220027, // 0012 LDINT R8 40
- 0x5426004E, // 0013 LDINT R9 79
- 0x40201009, // 0014 CONNECT R8 R8 R9
- 0x94200C08, // 0015 GETIDX R8 R6 R8
- 0x8C240906, // 0016 GETMET R9 R4 K6
- 0x7C240200, // 0017 CALL R9 1
- 0x8C241307, // 0018 GETMET R9 R9 K7
- 0x5C2C0E00, // 0019 MOVE R11 R7
- 0x7C240400, // 001A CALL R9 2
- 0x90020A09, // 001B SETMBR R0 K5 R9
- 0x8C240906, // 001C GETMET R9 R4 K6
- 0x7C240200, // 001D CALL R9 1
- 0x8C241307, // 001E GETMET R9 R9 K7
- 0x5C2C1000, // 001F MOVE R11 R8
- 0x7C240400, // 0020 CALL R9 2
- 0x8C280906, // 0021 GETMET R10 R4 K6
- 0x7C280200, // 0022 CALL R10 1
- 0x8C281509, // 0023 GETMET R10 R10 K9
- 0x5C301200, // 0024 MOVE R12 R9
- 0x7C280400, // 0025 CALL R10 2
- 0x9002100A, // 0026 SETMBR R0 K8 R10
- 0x80000000, // 0027 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: find_plugin_by_friendly_name
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_find_plugin_by_friendly_name, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(plugins),
- /* K2 */ be_nested_str_weak(get_name),
- /* K3 */ be_const_int(1),
- }),
- be_str_weak(find_plugin_by_friendly_name),
- &be_const_str_solidified,
- ( &(const binstruction[35]) { /* code */
- 0x4C080000, // 0000 LDNIL R2
- 0x1C080202, // 0001 EQ R2 R1 R2
- 0x740A0004, // 0002 JMPT R2 #0008
- 0x6008000C, // 0003 GETGBL R2 G12
- 0x5C0C0200, // 0004 MOVE R3 R1
- 0x7C080200, // 0005 CALL R2 1
- 0x1C080500, // 0006 EQ R2 R2 K0
- 0x780A0001, // 0007 JMPF R2 #000A
- 0x4C080000, // 0008 LDNIL R2
- 0x80040400, // 0009 RET 1 R2
- 0x58080000, // 000A LDCONST R2 K0
- 0x600C000C, // 000B GETGBL R3 G12
- 0x88100101, // 000C GETMBR R4 R0 K1
- 0x7C0C0200, // 000D CALL R3 1
- 0x140C0403, // 000E LT R3 R2 R3
- 0x780E0010, // 000F JMPF R3 #0021
- 0x880C0101, // 0010 GETMBR R3 R0 K1
- 0x940C0602, // 0011 GETIDX R3 R3 R2
- 0x8C100702, // 0012 GETMET R4 R3 K2
- 0x7C100200, // 0013 CALL R4 1
- 0x4C140000, // 0014 LDNIL R5
- 0x20140805, // 0015 NE R5 R4 R5
- 0x78160007, // 0016 JMPF R5 #001F
- 0x6014000C, // 0017 GETGBL R5 G12
- 0x5C180800, // 0018 MOVE R6 R4
- 0x7C140200, // 0019 CALL R5 1
- 0x24140B00, // 001A GT R5 R5 K0
- 0x78160002, // 001B JMPF R5 #001F
- 0x1C140801, // 001C EQ R5 R4 R1
- 0x78160000, // 001D JMPF R5 #001F
- 0x80040600, // 001E RET 1 R3
- 0x00080503, // 001F ADD R2 R2 K3
- 0x7001FFE9, // 0020 JMP #000B
- 0x4C0C0000, // 0021 LDNIL R3
- 0x80040600, // 0022 RET 1 R3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: clean_remotes
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_clean_remotes, /* name */
- be_nested_proto(
- 10, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
- /* K0 */ be_nested_str_weak(introspect),
- /* K1 */ be_nested_str_weak(http_remotes),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(stop_iteration),
- /* K4 */ be_nested_str_weak(plugins),
- /* K5 */ be_nested_str_weak(get),
- /* K6 */ be_nested_str_weak(http_remote),
- /* K7 */ be_nested_str_weak(find),
- /* K8 */ be_const_int(1),
- /* K9 */ be_nested_str_weak(keys),
- /* K10 */ be_nested_str_weak(push),
- /* K11 */ be_nested_str_weak(tasmota),
- /* K12 */ be_nested_str_weak(log),
- /* K13 */ be_nested_str_weak(MTR_X3A_X20remove_X20unused_X20remote_X3A_X20),
- /* K14 */ be_nested_str_weak(addr),
- /* K15 */ be_const_int(3),
- /* K16 */ be_nested_str_weak(close),
- /* K17 */ be_nested_str_weak(remove),
- }),
- be_str_weak(clean_remotes),
- &be_const_str_solidified,
- ( &(const binstruction[81]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x780A004C, // 0002 JMPF R2 #0050
- 0x60080013, // 0003 GETGBL R2 G19
- 0x7C080000, // 0004 CALL R2 0
- 0x600C0010, // 0005 GETGBL R3 G16
- 0x88100101, // 0006 GETMBR R4 R0 K1
- 0x7C0C0200, // 0007 CALL R3 1
- 0xA8020003, // 0008 EXBLK 0 #000D
- 0x5C100600, // 0009 MOVE R4 R3
- 0x7C100000, // 000A CALL R4 0
- 0x98080902, // 000B SETIDX R2 R4 K2
- 0x7001FFFB, // 000C JMP #0009
- 0x580C0003, // 000D LDCONST R3 K3
- 0xAC0C0200, // 000E CATCH R3 1 0
- 0xB0080000, // 000F RAISE 2 R0 R0
- 0x600C0010, // 0010 GETGBL R3 G16
- 0x88100104, // 0011 GETMBR R4 R0 K4
- 0x7C0C0200, // 0012 CALL R3 1
- 0xA802000F, // 0013 EXBLK 0 #0024
- 0x5C100600, // 0014 MOVE R4 R3
- 0x7C100000, // 0015 CALL R4 0
- 0x8C140305, // 0016 GETMET R5 R1 K5
- 0x5C1C0800, // 0017 MOVE R7 R4
- 0x58200006, // 0018 LDCONST R8 K6
- 0x7C140600, // 0019 CALL R5 3
- 0x4C180000, // 001A LDNIL R6
- 0x20180A06, // 001B NE R6 R5 R6
- 0x781A0005, // 001C JMPF R6 #0023
- 0x8C180507, // 001D GETMET R6 R2 K7
- 0x5C200A00, // 001E MOVE R8 R5
- 0x58240002, // 001F LDCONST R9 K2
- 0x7C180600, // 0020 CALL R6 3
- 0x00180D08, // 0021 ADD R6 R6 K8
- 0x98080A06, // 0022 SETIDX R2 R5 R6
- 0x7001FFEF, // 0023 JMP #0014
- 0x580C0003, // 0024 LDCONST R3 K3
- 0xAC0C0200, // 0025 CATCH R3 1 0
- 0xB0080000, // 0026 RAISE 2 R0 R0
- 0x600C0012, // 0027 GETGBL R3 G18
- 0x7C0C0000, // 0028 CALL R3 0
- 0x60100010, // 0029 GETGBL R4 G16
- 0x8C140509, // 002A GETMET R5 R2 K9
- 0x7C140200, // 002B CALL R5 1
- 0x7C100200, // 002C CALL R4 1
- 0xA8020008, // 002D EXBLK 0 #0037
- 0x5C140800, // 002E MOVE R5 R4
- 0x7C140000, // 002F CALL R5 0
- 0x94180405, // 0030 GETIDX R6 R2 R5
- 0x1C180D02, // 0031 EQ R6 R6 K2
- 0x781A0002, // 0032 JMPF R6 #0036
- 0x8C18070A, // 0033 GETMET R6 R3 K10
- 0x5C200A00, // 0034 MOVE R8 R5
- 0x7C180400, // 0035 CALL R6 2
- 0x7001FFF6, // 0036 JMP #002E
- 0x58100003, // 0037 LDCONST R4 K3
- 0xAC100200, // 0038 CATCH R4 1 0
- 0xB0080000, // 0039 RAISE 2 R0 R0
- 0x60100010, // 003A GETGBL R4 G16
- 0x5C140600, // 003B MOVE R5 R3
- 0x7C100200, // 003C CALL R4 1
- 0xA802000E, // 003D EXBLK 0 #004D
- 0x5C140800, // 003E MOVE R5 R4
- 0x7C140000, // 003F CALL R5 0
- 0xB81A1600, // 0040 GETNGBL R6 K11
- 0x8C180D0C, // 0041 GETMET R6 R6 K12
- 0x88200B0E, // 0042 GETMBR R8 R5 K14
- 0x00221A08, // 0043 ADD R8 K13 R8
- 0x5824000F, // 0044 LDCONST R9 K15
- 0x7C180600, // 0045 CALL R6 3
- 0x8C180B10, // 0046 GETMET R6 R5 K16
- 0x7C180200, // 0047 CALL R6 1
- 0x88180101, // 0048 GETMBR R6 R0 K1
- 0x8C180D11, // 0049 GETMET R6 R6 K17
- 0x88200B0E, // 004A GETMBR R8 R5 K14
- 0x7C180400, // 004B CALL R6 2
- 0x7001FFF0, // 004C JMP #003E
- 0x58100003, // 004D LDCONST R4 K3
- 0xAC100200, // 004E CATCH R4 1 0
- 0xB0080000, // 004F RAISE 2 R0 R0
- 0x80000000, // 0050 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: compute_manual_pairing_code
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_compute_manual_pairing_code, /* name */
+be_local_closure(class_Matter_Device_save_param, /* name */
be_nested_proto(
9, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Device,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(root_discriminator),
- /* K1 */ be_nested_str_weak(root_passcode),
- /* K2 */ be_nested_str_weak(_X251i_X2505i_X2504i),
- /* K3 */ be_nested_str_weak(matter),
- /* K4 */ be_nested_str_weak(Verhoeff),
- /* K5 */ be_nested_str_weak(checksum),
- }),
- be_str_weak(compute_manual_pairing_code),
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(save_param),
&be_const_str_solidified,
- ( &(const binstruction[30]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x540A0FFE, // 0001 LDINT R2 4095
- 0x2C040202, // 0002 AND R1 R1 R2
- 0x540A0009, // 0003 LDINT R2 10
- 0x3C040202, // 0004 SHR R1 R1 R2
- 0x88080100, // 0005 GETMBR R2 R0 K0
- 0x540E02FF, // 0006 LDINT R3 768
- 0x2C080403, // 0007 AND R2 R2 R3
- 0x540E0005, // 0008 LDINT R3 6
- 0x38080403, // 0009 SHL R2 R2 R3
- 0x880C0101, // 000A GETMBR R3 R0 K1
- 0x54123FFE, // 000B LDINT R4 16383
- 0x2C0C0604, // 000C AND R3 R3 R4
- 0x30080403, // 000D OR R2 R2 R3
- 0x880C0101, // 000E GETMBR R3 R0 K1
- 0x5412000D, // 000F LDINT R4 14
- 0x3C0C0604, // 0010 SHR R3 R3 R4
- 0x60100018, // 0011 GETGBL R4 G24
- 0x58140002, // 0012 LDCONST R5 K2
- 0x5C180200, // 0013 MOVE R6 R1
- 0x5C1C0400, // 0014 MOVE R7 R2
- 0x5C200600, // 0015 MOVE R8 R3
- 0x7C100800, // 0016 CALL R4 4
- 0xB8160600, // 0017 GETNGBL R5 K3
- 0x88140B04, // 0018 GETMBR R5 R5 K4
- 0x8C140B05, // 0019 GETMET R5 R5 K5
- 0x5C1C0800, // 001A MOVE R7 R4
- 0x7C140400, // 001B CALL R5 2
- 0x00100805, // 001C ADD R4 R4 R5
- 0x80040800, // 001D RET 1 R4
+ ( &(const binstruction[83]) { /* code */
+ 0xA4066400, // 0000 IMPORT R1 K50
+ 0x8C0801A6, // 0001 GETMET R2 R0 K166
+ 0x7C080200, // 0002 CALL R2 1
+ 0x60080018, // 0003 GETGBL R2 G24
+ 0x580C00A7, // 0004 LDCONST R3 K167
+ 0x88100191, // 0005 GETMBR R4 R0 K145
+ 0x88140193, // 0006 GETMBR R5 R0 K147
+ 0x88180160, // 0007 GETMBR R6 R0 K96
+ 0x781A0001, // 0008 JMPF R6 #000B
+ 0x581800A8, // 0009 LDCONST R6 K168
+ 0x70020000, // 000A JMP #000C
+ 0x581800A9, // 000B LDCONST R6 K169
+ 0x881C0161, // 000C GETMBR R7 R0 K97
+ 0x781E0001, // 000D JMPF R7 #0010
+ 0x581C00A8, // 000E LDCONST R7 K168
+ 0x70020000, // 000F JMP #0011
+ 0x581C00A9, // 0010 LDCONST R7 K169
+ 0x88200147, // 0011 GETMBR R8 R0 K71
+ 0x7C080C00, // 0012 CALL R2 6
+ 0x880C0197, // 0013 GETMBR R3 R0 K151
+ 0x780E0000, // 0014 JMPF R3 #0016
+ 0x000805AA, // 0015 ADD R2 R2 K170
+ 0x880C0107, // 0016 GETMBR R3 R0 K7
+ 0x780E000E, // 0017 JMPF R3 #0027
+ 0x000805AB, // 0018 ADD R2 R2 K171
+ 0x8C0C03AC, // 0019 GETMET R3 R1 K172
+ 0x88140135, // 001A GETMBR R5 R0 K53
+ 0x7C0C0400, // 001B CALL R3 2
+ 0x00080403, // 001C ADD R2 R2 R3
+ 0x600C000C, // 001D GETGBL R3 G12
+ 0x88100115, // 001E GETMBR R4 R0 K21
+ 0x7C0C0200, // 001F CALL R3 1
+ 0x240C0706, // 0020 GT R3 R3 K6
+ 0x780E0004, // 0021 JMPF R3 #0027
+ 0x000805AD, // 0022 ADD R2 R2 K173
+ 0x8C0C03AC, // 0023 GETMET R3 R1 K172
+ 0x88140115, // 0024 GETMBR R5 R0 K21
+ 0x7C0C0400, // 0025 CALL R3 2
+ 0x00080403, // 0026 ADD R2 R2 R3
+ 0x000805AE, // 0027 ADD R2 R2 K174
+ 0xA8020017, // 0028 EXBLK 0 #0041
+ 0x600C0011, // 0029 GETGBL R3 G17
+ 0x8810018F, // 002A GETMBR R4 R0 K143
+ 0x581400AF, // 002B LDCONST R5 K175
+ 0x7C0C0400, // 002C CALL R3 2
+ 0x8C1007B0, // 002D GETMET R4 R3 K176
+ 0x5C180400, // 002E MOVE R6 R2
+ 0x7C100400, // 002F CALL R4 2
+ 0x8C10077B, // 0030 GETMET R4 R3 K123
+ 0x7C100200, // 0031 CALL R4 1
+ 0xB8122E00, // 0032 GETNGBL R4 K23
+ 0x60140018, // 0033 GETGBL R5 G24
+ 0x581800B1, // 0034 LDCONST R6 K177
+ 0x881C0107, // 0035 GETMBR R7 R0 K7
+ 0x781E0001, // 0036 JMPF R7 #0039
+ 0x581C00B2, // 0037 LDCONST R7 K178
+ 0x70020000, // 0038 JMP #003A
+ 0x581C000D, // 0039 LDCONST R7 K13
+ 0x7C140400, // 003A CALL R5 2
+ 0x5818001D, // 003B LDCONST R6 K29
+ 0x7C100400, // 003C CALL R4 2
+ 0xA8040001, // 003D EXBLK 1 1
+ 0x80040400, // 003E RET 1 R2
+ 0xA8040001, // 003F EXBLK 1 1
+ 0x70020010, // 0040 JMP #0052
+ 0xAC0C0002, // 0041 CATCH R3 0 2
+ 0x7002000D, // 0042 JMP #0051
+ 0xB8162E00, // 0043 GETNGBL R5 K23
+ 0x60180008, // 0044 GETGBL R6 G8
+ 0x5C1C0600, // 0045 MOVE R7 R3
+ 0x7C180200, // 0046 CALL R6 1
+ 0x001B6606, // 0047 ADD R6 K179 R6
+ 0x00180D9E, // 0048 ADD R6 R6 K158
+ 0x601C0008, // 0049 GETGBL R7 G8
+ 0x5C200800, // 004A MOVE R8 R4
+ 0x7C1C0200, // 004B CALL R7 1
+ 0x00180C07, // 004C ADD R6 R6 R7
+ 0x581C001D, // 004D LDCONST R7 K29
+ 0x7C140400, // 004E CALL R5 2
+ 0x80040400, // 004F RET 1 R2
+ 0x70020000, // 0050 JMP #0052
+ 0xB0080000, // 0051 RAISE 2 R0 R0
+ 0x80000000, // 0052 RET 0
})
)
);
@@ -2134,264 +2584,78 @@ be_local_closure(class_Matter_Device_compute_manual_pairing_code, /* name */
/********************************************************************
-** Solidified function: autoconf_device
+** Solidified function: bridge_remove_endpoint
********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_autoconf_device, /* name */
- be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
- /* K0 */ be_nested_str_weak(json),
- /* K1 */ be_nested_str_weak(plugins),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(plugins_persist),
- /* K4 */ be_nested_str_weak(plugins_config),
- /* K5 */ be_nested_str_weak(autoconf_device_map),
- /* K6 */ be_nested_str_weak(plugins_config_remotes),
- /* K7 */ be_nested_str_weak(adjust_next_ep),
- /* K8 */ be_nested_str_weak(tasmota),
- /* K9 */ be_nested_str_weak(log),
- /* K10 */ be_nested_str_weak(MTR_X3A_X20autoconfig_X20_X3D_X20),
- /* K11 */ be_const_int(3),
- /* K12 */ be_nested_str_weak(_instantiate_plugins_from_config),
- /* K13 */ be_nested_str_weak(sessions),
- /* K14 */ be_nested_str_weak(count_active_fabrics),
- /* K15 */ be_nested_str_weak(save_param),
- }),
- be_str_weak(autoconf_device),
- &be_const_str_solidified,
- ( &(const binstruction[40]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x6008000C, // 0001 GETGBL R2 G12
- 0x880C0101, // 0002 GETMBR R3 R0 K1
- 0x7C080200, // 0003 CALL R2 1
- 0x24080502, // 0004 GT R2 R2 K2
- 0x780A0000, // 0005 JMPF R2 #0007
- 0x80000400, // 0006 RET 0
- 0x88080103, // 0007 GETMBR R2 R0 K3
- 0x740A000F, // 0008 JMPT R2 #0019
- 0x8C080105, // 0009 GETMET R2 R0 K5
- 0x7C080200, // 000A CALL R2 1
- 0x90020802, // 000B SETMBR R0 K4 R2
- 0x60080013, // 000C GETGBL R2 G19
- 0x7C080000, // 000D CALL R2 0
- 0x90020C02, // 000E SETMBR R0 K6 R2
- 0x8C080107, // 000F GETMET R2 R0 K7
- 0x7C080200, // 0010 CALL R2 1
- 0xB80A1000, // 0011 GETNGBL R2 K8
- 0x8C080509, // 0012 GETMET R2 R2 K9
- 0x60100008, // 0013 GETGBL R4 G8
- 0x88140104, // 0014 GETMBR R5 R0 K4
- 0x7C100200, // 0015 CALL R4 1
- 0x00121404, // 0016 ADD R4 K10 R4
- 0x5814000B, // 0017 LDCONST R5 K11
- 0x7C080600, // 0018 CALL R2 3
- 0x8C08010C, // 0019 GETMET R2 R0 K12
- 0x88100104, // 001A GETMBR R4 R0 K4
- 0x7C080400, // 001B CALL R2 2
- 0x88080103, // 001C GETMBR R2 R0 K3
- 0x740A0008, // 001D JMPT R2 #0027
- 0x8808010D, // 001E GETMBR R2 R0 K13
- 0x8C08050E, // 001F GETMET R2 R2 K14
- 0x7C080200, // 0020 CALL R2 1
- 0x24080502, // 0021 GT R2 R2 K2
- 0x780A0003, // 0022 JMPF R2 #0027
- 0x50080200, // 0023 LDBOOL R2 1 0
- 0x90020602, // 0024 SETMBR R0 K3 R2
- 0x8C08010F, // 0025 GETMET R2 R0 K15
- 0x7C080200, // 0026 CALL R2 1
- 0x80000000, // 0027 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: attribute_updated
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_attribute_updated, /* name */
+be_local_closure(class_Matter_Device_bridge_remove_endpoint, /* name */
be_nested_proto(
10, /* nstack */
- 5, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(matter),
- /* K1 */ be_nested_str_weak(Path),
- /* K2 */ be_nested_str_weak(endpoint),
- /* K3 */ be_nested_str_weak(cluster),
- /* K4 */ be_nested_str_weak(attribute),
- /* K5 */ be_nested_str_weak(message_handler),
- /* K6 */ be_nested_str_weak(im),
- /* K7 */ be_nested_str_weak(subs_shop),
- /* K8 */ be_nested_str_weak(attribute_updated_ctx),
- }),
- be_str_weak(attribute_updated),
- &be_const_str_solidified,
- ( &(const binstruction[18]) { /* code */
- 0x4C140000, // 0000 LDNIL R5
- 0x1C140805, // 0001 EQ R5 R4 R5
- 0x78160000, // 0002 JMPF R5 #0004
- 0x50100000, // 0003 LDBOOL R4 0 0
- 0xB8160000, // 0004 GETNGBL R5 K0
- 0x8C140B01, // 0005 GETMET R5 R5 K1
- 0x7C140200, // 0006 CALL R5 1
- 0x90160401, // 0007 SETMBR R5 K2 R1
- 0x90160602, // 0008 SETMBR R5 K3 R2
- 0x90160803, // 0009 SETMBR R5 K4 R3
- 0x88180105, // 000A GETMBR R6 R0 K5
- 0x88180D06, // 000B GETMBR R6 R6 K6
- 0x88180D07, // 000C GETMBR R6 R6 K7
- 0x8C180D08, // 000D GETMET R6 R6 K8
- 0x5C200A00, // 000E MOVE R8 R5
- 0x5C240800, // 000F MOVE R9 R4
- 0x7C180600, // 0010 CALL R6 3
- 0x80000000, // 0011 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: save_before_restart
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_save_before_restart, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(stop_basic_commissioning),
- /* K1 */ be_nested_str_weak(mdns_remove_op_discovery_all_fabrics),
- }),
- be_str_weak(save_before_restart),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x7C040200, // 0001 CALL R1 1
- 0x8C040101, // 0002 GETMET R1 R0 K1
- 0x7C040200, // 0003 CALL R1 1
- 0x80000000, // 0004 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: is_root_commissioning_open
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_is_root_commissioning_open, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(commissioning_open),
- /* K1 */ be_nested_str_weak(commissioning_admin_fabric),
- }),
- be_str_weak(is_root_commissioning_open),
- &be_const_str_solidified,
- ( &(const binstruction[11]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x4C080000, // 0001 LDNIL R2
- 0x20040202, // 0002 NE R1 R1 R2
- 0x78060003, // 0003 JMPF R1 #0008
- 0x88040101, // 0004 GETMBR R1 R0 K1
- 0x4C080000, // 0005 LDNIL R2
- 0x1C040202, // 0006 EQ R1 R1 R2
- 0x74060000, // 0007 JMPT R1 #0009
- 0x50040001, // 0008 LDBOOL R1 0 1
- 0x50040200, // 0009 LDBOOL R1 1 0
- 0x80040200, // 000A RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start_commissioning_complete_deferred
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_start_commissioning_complete_deferred, /* name */
- be_nested_proto(
- 6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
- be_nested_proto(
- 3, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 2]) { /* upvals */
- be_local_const_upval(1, 0),
- be_local_const_upval(1, 1),
- }),
- 0, /* has sup protos */
- NULL,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(start_commissioning_complete),
- }),
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x68080001, // 0002 GETUPV R2 U1
- 0x7C000400, // 0003 CALL R0 2
- 0x80040000, // 0004 RET 1 R0
- })
- ),
- &be_class_Matter_Device,
- }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(set_timer),
- /* K2 */ be_const_int(0),
- }),
- be_str_weak(start_commissioning_complete_deferred),
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(bridge_remove_endpoint),
&be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0xB80A0000, // 0000 GETNGBL R2 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x58100002, // 0002 LDCONST R4 K2
- 0x84140000, // 0003 CLOSURE R5 P0
- 0x7C080600, // 0004 CALL R2 3
- 0xA0000000, // 0005 CLOSE R0
- 0x80000000, // 0006 RET 0
+ ( &(const binstruction[56]) { /* code */
+ 0xA40A6400, // 0000 IMPORT R2 K50
+ 0x600C0008, // 0001 GETGBL R3 G8
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x4C100000, // 0004 LDNIL R4
+ 0x4C140000, // 0005 LDNIL R5
+ 0x88180135, // 0006 GETMBR R6 R0 K53
+ 0x8C180D57, // 0007 GETMET R6 R6 K87
+ 0x5C200600, // 0008 MOVE R8 R3
+ 0x7C180400, // 0009 CALL R6 2
+ 0x741A0004, // 000A JMPT R6 #0010
+ 0xB81A2E00, // 000B GETNGBL R6 K23
+ 0x001F6803, // 000C ADD R7 K180 R3
+ 0x58200030, // 000D LDCONST R8 K48
+ 0x7C180400, // 000E CALL R6 2
+ 0x80000C00, // 000F RET 0
+ 0xB81A2E00, // 0010 GETNGBL R6 K23
+ 0x601C0018, // 0011 GETGBL R7 G24
+ 0x582000B5, // 0012 LDCONST R8 K181
+ 0x5C240200, // 0013 MOVE R9 R1
+ 0x7C1C0400, // 0014 CALL R7 2
+ 0x5820001D, // 0015 LDCONST R8 K29
+ 0x7C180400, // 0016 CALL R6 2
+ 0x88180135, // 0017 GETMBR R6 R0 K53
+ 0x8C180D53, // 0018 GETMET R6 R6 K83
+ 0x5C200600, // 0019 MOVE R8 R3
+ 0x7C180400, // 001A CALL R6 2
+ 0x50180200, // 001B LDBOOL R6 1 0
+ 0x90020E06, // 001C SETMBR R0 K7 R6
+ 0x58180006, // 001D LDCONST R6 K6
+ 0x601C000C, // 001E GETGBL R7 G12
+ 0x88200112, // 001F GETMBR R8 R0 K18
+ 0x7C1C0200, // 0020 CALL R7 1
+ 0x141C0C07, // 0021 LT R7 R6 R7
+ 0x781E000D, // 0022 JMPF R7 #0031
+ 0x881C0112, // 0023 GETMBR R7 R0 K18
+ 0x941C0E06, // 0024 GETIDX R7 R7 R6
+ 0x8C1C0F41, // 0025 GETMET R7 R7 K65
+ 0x7C1C0200, // 0026 CALL R7 1
+ 0x1C1C0207, // 0027 EQ R7 R1 R7
+ 0x781E0005, // 0028 JMPF R7 #002F
+ 0x881C0112, // 0029 GETMBR R7 R0 K18
+ 0x8C1C0F53, // 002A GETMET R7 R7 K83
+ 0x5C240C00, // 002B MOVE R9 R6
+ 0x7C1C0400, // 002C CALL R7 2
+ 0x70020002, // 002D JMP #0031
+ 0x70020000, // 002E JMP #0030
+ 0x00180D14, // 002F ADD R6 R6 K20
+ 0x7001FFEC, // 0030 JMP #001E
+ 0x8C1C01B6, // 0031 GETMET R7 R0 K182
+ 0x7C1C0200, // 0032 CALL R7 1
+ 0x8C1C0108, // 0033 GETMET R7 R0 K8
+ 0x7C1C0200, // 0034 CALL R7 1
+ 0x8C1C0188, // 0035 GETMET R7 R0 K136
+ 0x7C1C0200, // 0036 CALL R7 1
+ 0x80000000, // 0037 RET 0
})
)
);
@@ -2399,92 +2663,34 @@ be_local_closure(class_Matter_Device_start_commissioning_complete_deferred, /*
/********************************************************************
-** Solidified function: adjust_next_ep
+** Solidified function: button_multi_pressed
********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_adjust_next_ep, /* name */
+be_local_closure(class_Matter_Device_button_multi_pressed, /* name */
be_nested_proto(
- 5, /* nstack */
- 1, /* argc */
- 2, /* varg */
+ 11, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Device,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(plugins_config),
- /* K1 */ be_nested_str_weak(keys),
- /* K2 */ be_nested_str_weak(next_ep),
- /* K3 */ be_const_int(1),
- /* K4 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(adjust_next_ep),
- &be_const_str_solidified,
- ( &(const binstruction[21]) { /* code */
- 0x60040010, // 0000 GETGBL R1 G16
- 0x88080100, // 0001 GETMBR R2 R0 K0
- 0x8C080501, // 0002 GETMET R2 R2 K1
- 0x7C080200, // 0003 CALL R2 1
- 0x7C040200, // 0004 CALL R1 1
- 0xA802000A, // 0005 EXBLK 0 #0011
- 0x5C080200, // 0006 MOVE R2 R1
- 0x7C080000, // 0007 CALL R2 0
- 0x600C0009, // 0008 GETGBL R3 G9
- 0x5C100400, // 0009 MOVE R4 R2
- 0x7C0C0200, // 000A CALL R3 1
- 0x88100102, // 000B GETMBR R4 R0 K2
- 0x28100604, // 000C GE R4 R3 R4
- 0x78120001, // 000D JMPF R4 #0010
- 0x00100703, // 000E ADD R4 R3 K3
- 0x90020404, // 000F SETMBR R0 K2 R4
- 0x7001FFF4, // 0010 JMP #0006
- 0x58040004, // 0011 LDCONST R1 K4
- 0xAC040200, // 0012 CATCH R1 1 0
- 0xB0080000, // 0013 RAISE 2 R0 R0
- 0x80000000, // 0014 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_start, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(started),
- /* K1 */ be_nested_str_weak(autoconf_device),
- /* K2 */ be_nested_str_weak(_start_udp),
- /* K3 */ be_nested_str_weak(UDP_PORT),
- /* K4 */ be_nested_str_weak(start_mdns_announce_hostnames),
- }),
- be_str_weak(start),
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(button_multi_pressed),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x78060000, // 0001 JMPF R1 #0003
- 0x80000200, // 0002 RET 0
- 0x8C040101, // 0003 GETMET R1 R0 K1
- 0x7C040200, // 0004 CALL R1 1
- 0x8C040102, // 0005 GETMET R1 R0 K2
- 0x880C0103, // 0006 GETMBR R3 R0 K3
- 0x7C040400, // 0007 CALL R1 2
- 0x8C040104, // 0008 GETMET R1 R0 K4
- 0x7C040200, // 0009 CALL R1 1
- 0x50040200, // 000A LDBOOL R1 1 0
- 0x90020001, // 000B SETMBR R0 K0 R1
+ 0x540E0007, // 0000 LDINT R3 8
+ 0x3C0C0403, // 0001 SHR R3 R2 R3
+ 0x541200FE, // 0002 LDINT R4 255
+ 0x2C0C0604, // 0003 AND R3 R3 R4
+ 0x541200FE, // 0004 LDINT R4 255
+ 0x2C100404, // 0005 AND R4 R2 R4
+ 0x8C14014B, // 0006 GETMET R5 R0 K75
+ 0x001C0914, // 0007 ADD R7 R4 K20
+ 0x5820001D, // 0008 LDCONST R8 K29
+ 0x58240006, // 0009 LDCONST R9 K6
+ 0x5C280600, // 000A MOVE R10 R3
+ 0x7C140A00, // 000B CALL R5 5
0x80000000, // 000C RET 0
})
)
@@ -2493,1972 +2699,155 @@ be_local_closure(class_Matter_Device_start, /* name */
/********************************************************************
-** Solidified function: every_second
+** Solidified function: invoke_request
********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_every_second, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(sessions),
- /* K1 */ be_nested_str_weak(every_second),
- /* K2 */ be_nested_str_weak(message_handler),
- /* K3 */ be_nested_str_weak(commissioning_open),
- /* K4 */ be_nested_str_weak(tasmota),
- /* K5 */ be_nested_str_weak(time_reached),
- }),
- be_str_weak(every_second),
- &be_const_str_solidified,
- ( &(const binstruction[18]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x88040102, // 0003 GETMBR R1 R0 K2
- 0x8C040301, // 0004 GETMET R1 R1 K1
- 0x7C040200, // 0005 CALL R1 1
- 0x88040103, // 0006 GETMBR R1 R0 K3
- 0x4C080000, // 0007 LDNIL R2
- 0x20040202, // 0008 NE R1 R1 R2
- 0x78060006, // 0009 JMPF R1 #0011
- 0xB8060800, // 000A GETNGBL R1 K4
- 0x8C040305, // 000B GETMET R1 R1 K5
- 0x880C0103, // 000C GETMBR R3 R0 K3
- 0x7C040400, // 000D CALL R1 2
- 0x78060001, // 000E JMPF R1 #0011
- 0x4C040000, // 000F LDNIL R1
- 0x90020601, // 0010 SETMBR R0 K3 R1
- 0x80000000, // 0011 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: remove_fabric
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_remove_fabric, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(log),
- /* K2 */ be_nested_str_weak(MTR_X3A_X20removing_X20fabric_X20),
- /* K3 */ be_nested_str_weak(get_fabric_id),
- /* K4 */ be_nested_str_weak(copy),
- /* K5 */ be_nested_str_weak(reverse),
- /* K6 */ be_nested_str_weak(tohex),
- /* K7 */ be_const_int(2),
- /* K8 */ be_nested_str_weak(message_handler),
- /* K9 */ be_nested_str_weak(im),
- /* K10 */ be_nested_str_weak(subs_shop),
- /* K11 */ be_nested_str_weak(remove_by_fabric),
- /* K12 */ be_nested_str_weak(mdns_remove_op_discovery),
- /* K13 */ be_nested_str_weak(sessions),
- /* K14 */ be_nested_str_weak(remove_fabric),
- /* K15 */ be_nested_str_weak(save_fabrics),
- }),
- be_str_weak(remove_fabric),
- &be_const_str_solidified,
- ( &(const binstruction[33]) { /* code */
- 0x4C080000, // 0000 LDNIL R2
- 0x20080202, // 0001 NE R2 R1 R2
- 0x780A0019, // 0002 JMPF R2 #001D
- 0xB80A0000, // 0003 GETNGBL R2 K0
- 0x8C080501, // 0004 GETMET R2 R2 K1
- 0x8C100303, // 0005 GETMET R4 R1 K3
- 0x7C100200, // 0006 CALL R4 1
- 0x8C100904, // 0007 GETMET R4 R4 K4
- 0x7C100200, // 0008 CALL R4 1
- 0x8C100905, // 0009 GETMET R4 R4 K5
- 0x7C100200, // 000A CALL R4 1
- 0x8C100906, // 000B GETMET R4 R4 K6
- 0x7C100200, // 000C CALL R4 1
- 0x00120404, // 000D ADD R4 K2 R4
- 0x58140007, // 000E LDCONST R5 K7
- 0x7C080600, // 000F CALL R2 3
- 0x88080108, // 0010 GETMBR R2 R0 K8
- 0x88080509, // 0011 GETMBR R2 R2 K9
- 0x8808050A, // 0012 GETMBR R2 R2 K10
- 0x8C08050B, // 0013 GETMET R2 R2 K11
- 0x5C100200, // 0014 MOVE R4 R1
- 0x7C080400, // 0015 CALL R2 2
- 0x8C08010C, // 0016 GETMET R2 R0 K12
- 0x5C100200, // 0017 MOVE R4 R1
- 0x7C080400, // 0018 CALL R2 2
- 0x8808010D, // 0019 GETMBR R2 R0 K13
- 0x8C08050E, // 001A GETMET R2 R2 K14
- 0x5C100200, // 001B MOVE R4 R1
- 0x7C080400, // 001C CALL R2 2
- 0x8808010D, // 001D GETMBR R2 R0 K13
- 0x8C08050F, // 001E GETMET R2 R2 K15
- 0x7C080200, // 001F CALL R2 1
- 0x80000000, // 0020 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: sort_distinct
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_sort_distinct, /* name */
- be_nested_proto(
- 7, /* nstack */
- 1, /* argc */
- 4, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_Device),
- /* K1 */ be_const_int(1),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(stop_iteration),
- /* K4 */ be_nested_str_weak(remove),
- }),
- be_str_weak(sort_distinct),
- &be_const_str_solidified,
- ( &(const binstruction[53]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0x60080010, // 0001 GETGBL R2 G16
- 0x600C000C, // 0002 GETGBL R3 G12
- 0x5C100000, // 0003 MOVE R4 R0
- 0x7C0C0200, // 0004 CALL R3 1
- 0x040C0701, // 0005 SUB R3 R3 K1
- 0x400E0203, // 0006 CONNECT R3 K1 R3
- 0x7C080200, // 0007 CALL R2 1
- 0xA8020010, // 0008 EXBLK 0 #001A
- 0x5C0C0400, // 0009 MOVE R3 R2
- 0x7C0C0000, // 000A CALL R3 0
- 0x94100003, // 000B GETIDX R4 R0 R3
- 0x5C140600, // 000C MOVE R5 R3
- 0x24180B02, // 000D GT R6 R5 K2
- 0x781A0008, // 000E JMPF R6 #0018
- 0x04180B01, // 000F SUB R6 R5 K1
- 0x94180006, // 0010 GETIDX R6 R0 R6
- 0x24180C04, // 0011 GT R6 R6 R4
- 0x781A0004, // 0012 JMPF R6 #0018
- 0x04180B01, // 0013 SUB R6 R5 K1
- 0x94180006, // 0014 GETIDX R6 R0 R6
- 0x98000A06, // 0015 SETIDX R0 R5 R6
- 0x04140B01, // 0016 SUB R5 R5 K1
- 0x7001FFF4, // 0017 JMP #000D
- 0x98000A04, // 0018 SETIDX R0 R5 R4
- 0x7001FFEE, // 0019 JMP #0009
- 0x58080003, // 001A LDCONST R2 K3
- 0xAC080200, // 001B CATCH R2 1 0
- 0xB0080000, // 001C RAISE 2 R0 R0
- 0x58080001, // 001D LDCONST R2 K1
- 0x600C000C, // 001E GETGBL R3 G12
- 0x5C100000, // 001F MOVE R4 R0
- 0x7C0C0200, // 0020 CALL R3 1
- 0x180C0701, // 0021 LE R3 R3 K1
- 0x780E0000, // 0022 JMPF R3 #0024
- 0x80040000, // 0023 RET 1 R0
- 0x940C0102, // 0024 GETIDX R3 R0 K2
- 0x6010000C, // 0025 GETGBL R4 G12
- 0x5C140000, // 0026 MOVE R5 R0
- 0x7C100200, // 0027 CALL R4 1
- 0x14100404, // 0028 LT R4 R2 R4
- 0x78120009, // 0029 JMPF R4 #0034
- 0x94100002, // 002A GETIDX R4 R0 R2
- 0x1C100803, // 002B EQ R4 R4 R3
- 0x78120003, // 002C JMPF R4 #0031
- 0x8C100104, // 002D GETMET R4 R0 K4
- 0x5C180400, // 002E MOVE R6 R2
- 0x7C100400, // 002F CALL R4 2
- 0x70020001, // 0030 JMP #0033
- 0x940C0002, // 0031 GETIDX R3 R0 R2
- 0x00080501, // 0032 ADD R2 R2 K1
- 0x7001FFF0, // 0033 JMP #0025
- 0x80040000, // 0034 RET 1 R0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: _init_basic_commissioning
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device__init_basic_commissioning, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(sessions),
- /* K1 */ be_nested_str_weak(count_active_fabrics),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(start_root_basic_commissioning),
- }),
- be_str_weak(_init_basic_commissioning),
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x1C040302, // 0003 EQ R1 R1 K2
- 0x78060001, // 0004 JMPF R1 #0007
- 0x8C040103, // 0005 GETMET R1 R0 K3
- 0x7C040200, // 0006 CALL R1 1
- 0x80000000, // 0007 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: stop
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_stop, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(remove_driver),
- /* K2 */ be_nested_str_weak(udp_server),
- /* K3 */ be_nested_str_weak(stop),
- }),
- be_str_weak(stop),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x5C0C0000, // 0002 MOVE R3 R0
- 0x7C040400, // 0003 CALL R1 2
- 0x88040102, // 0004 GETMBR R1 R0 K2
- 0x78060002, // 0005 JMPF R1 #0009
- 0x88040102, // 0006 GETMBR R1 R0 K2
- 0x8C040303, // 0007 GETMET R1 R1 K3
- 0x7C040200, // 0008 CALL R1 1
- 0x80000000, // 0009 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: _trigger_read_sensors
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device__trigger_read_sensors, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(json),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(read_sensors),
- /* K3 */ be_nested_str_weak(loglevel),
- /* K4 */ be_const_int(3),
- /* K5 */ be_nested_str_weak(log),
- /* K6 */ be_nested_str_weak(MTR_X3A_X20read_sensors_X3A_X20),
- /* K7 */ be_nested_str_weak(load),
- /* K8 */ be_const_int(0),
- /* K9 */ be_nested_str_weak(plugins),
- /* K10 */ be_nested_str_weak(parse_sensors),
- /* K11 */ be_const_int(1),
- /* K12 */ be_nested_str_weak(MTR_X3A_X20unable_X20to_X20parse_X20read_sensors_X3A_X20),
- }),
- be_str_weak(_trigger_read_sensors),
- &be_const_str_solidified,
- ( &(const binstruction[50]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xB80A0200, // 0001 GETNGBL R2 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
- 0x7C080200, // 0003 CALL R2 1
- 0xB80E0200, // 0004 GETNGBL R3 K1
- 0x8C0C0703, // 0005 GETMET R3 R3 K3
- 0x58140004, // 0006 LDCONST R5 K4
- 0x7C0C0400, // 0007 CALL R3 2
- 0x780E0007, // 0008 JMPF R3 #0011
- 0xB80E0200, // 0009 GETNGBL R3 K1
- 0x8C0C0705, // 000A GETMET R3 R3 K5
- 0x60140008, // 000B GETGBL R5 G8
- 0x5C180400, // 000C MOVE R6 R2
- 0x7C140200, // 000D CALL R5 1
- 0x00160C05, // 000E ADD R5 K6 R5
- 0x58180004, // 000F LDCONST R6 K4
- 0x7C0C0600, // 0010 CALL R3 3
- 0x4C0C0000, // 0011 LDNIL R3
- 0x1C0C0403, // 0012 EQ R3 R2 R3
- 0x780E0000, // 0013 JMPF R3 #0015
- 0x80000600, // 0014 RET 0
- 0x8C0C0307, // 0015 GETMET R3 R1 K7
- 0x5C140400, // 0016 MOVE R5 R2
- 0x7C0C0400, // 0017 CALL R3 2
- 0x4C100000, // 0018 LDNIL R4
- 0x20100604, // 0019 NE R4 R3 R4
- 0x7812000D, // 001A JMPF R4 #0029
- 0x58100008, // 001B LDCONST R4 K8
- 0x6014000C, // 001C GETGBL R5 G12
- 0x88180109, // 001D GETMBR R6 R0 K9
- 0x7C140200, // 001E CALL R5 1
- 0x14140805, // 001F LT R5 R4 R5
- 0x78160006, // 0020 JMPF R5 #0028
- 0x88140109, // 0021 GETMBR R5 R0 K9
- 0x94140A04, // 0022 GETIDX R5 R5 R4
- 0x8C140B0A, // 0023 GETMET R5 R5 K10
- 0x5C1C0600, // 0024 MOVE R7 R3
- 0x7C140400, // 0025 CALL R5 2
- 0x0010090B, // 0026 ADD R4 R4 K11
- 0x7001FFF3, // 0027 JMP #001C
- 0x70020007, // 0028 JMP #0031
- 0xB8120200, // 0029 GETNGBL R4 K1
- 0x8C100905, // 002A GETMET R4 R4 K5
- 0x60180008, // 002B GETGBL R6 G8
- 0x5C1C0400, // 002C MOVE R7 R2
- 0x7C180200, // 002D CALL R6 1
- 0x001A1806, // 002E ADD R6 K12 R6
- 0x581C0004, // 002F LDCONST R7 K4
- 0x7C100600, // 0030 CALL R4 3
- 0x80000000, // 0031 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: _instantiate_plugins_from_config
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device__instantiate_plugins_from_config, /* name */
- be_nested_proto(
- 18, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[31]) { /* constants */
- /* K0 */ be_nested_str_weak(k2l_num),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(log),
- /* K3 */ be_nested_str_weak(MTR_X3A_X20Configuring_X20endpoints),
- /* K4 */ be_const_int(2),
- /* K5 */ be_nested_str_weak(plugins),
- /* K6 */ be_nested_str_weak(push),
- /* K7 */ be_nested_str_weak(matter),
- /* K8 */ be_nested_str_weak(Plugin_Root),
- /* K9 */ be_const_int(0),
- /* K10 */ be_nested_str_weak(MTR_X3A_X20_X20_X20endpoint_X20_X3D_X20_X255i_X20type_X3A_X25s_X25s),
- /* K11 */ be_nested_str_weak(root),
- /* K12 */ be_nested_str_weak(),
- /* K13 */ be_nested_str_weak(Plugin_Aggregator),
- /* K14 */ be_nested_str_weak(AGGREGATOR_ENDPOINT),
- /* K15 */ be_nested_str_weak(aggregator),
- /* K16 */ be_nested_str_weak(find),
- /* K17 */ be_nested_str_weak(type),
- /* K18 */ be_nested_str_weak(MTR_X3A_X20no_X20class_X20name_X2C_X20skipping),
- /* K19 */ be_const_int(3),
- /* K20 */ be_nested_str_weak(MTR_X3A_X20only_X20one_X20root_X20node_X20allowed),
- /* K21 */ be_nested_str_weak(plugins_classes),
- /* K22 */ be_nested_str_weak(MTR_X3A_X20unknown_X20class_X20name_X20_X27),
- /* K23 */ be_nested_str_weak(_X27_X20skipping),
- /* K24 */ be_nested_str_weak(conf_to_log),
- /* K25 */ be_nested_str_weak(MTR_X3A_X20Exception),
- /* K26 */ be_nested_str_weak(_X7C),
- /* K27 */ be_nested_str_weak(stop_iteration),
- /* K28 */ be_nested_str_weak(publish_result),
- /* K29 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Initialized_X22_X3A1_X7D_X7D),
- /* K30 */ be_nested_str_weak(Matter),
- }),
- be_str_weak(_instantiate_plugins_from_config),
- &be_const_str_solidified,
- ( &(const binstruction[154]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
- 0x5C100200, // 0001 MOVE R4 R1
- 0x7C080400, // 0002 CALL R2 2
- 0xB80E0200, // 0003 GETNGBL R3 K1
- 0x8C0C0702, // 0004 GETMET R3 R3 K2
- 0x58140003, // 0005 LDCONST R5 K3
- 0x58180004, // 0006 LDCONST R6 K4
- 0x7C0C0600, // 0007 CALL R3 3
- 0x880C0105, // 0008 GETMBR R3 R0 K5
- 0x8C0C0706, // 0009 GETMET R3 R3 K6
- 0xB8160E00, // 000A GETNGBL R5 K7
- 0x8C140B08, // 000B GETMET R5 R5 K8
- 0x5C1C0000, // 000C MOVE R7 R0
- 0x58200009, // 000D LDCONST R8 K9
- 0x60240013, // 000E GETGBL R9 G19
- 0x7C240000, // 000F CALL R9 0
- 0x7C140800, // 0010 CALL R5 4
- 0x7C0C0400, // 0011 CALL R3 2
- 0xB80E0200, // 0012 GETNGBL R3 K1
- 0x8C0C0702, // 0013 GETMET R3 R3 K2
- 0x60140018, // 0014 GETGBL R5 G24
- 0x5818000A, // 0015 LDCONST R6 K10
- 0x581C0009, // 0016 LDCONST R7 K9
- 0x5820000B, // 0017 LDCONST R8 K11
- 0x5824000C, // 0018 LDCONST R9 K12
- 0x7C140800, // 0019 CALL R5 4
- 0x58180004, // 001A LDCONST R6 K4
- 0x7C0C0600, // 001B CALL R3 3
- 0x880C0105, // 001C GETMBR R3 R0 K5
- 0x8C0C0706, // 001D GETMET R3 R3 K6
- 0xB8160E00, // 001E GETNGBL R5 K7
- 0x8C140B0D, // 001F GETMET R5 R5 K13
- 0x5C1C0000, // 0020 MOVE R7 R0
- 0xB8220E00, // 0021 GETNGBL R8 K7
- 0x8820110E, // 0022 GETMBR R8 R8 K14
- 0x60240013, // 0023 GETGBL R9 G19
- 0x7C240000, // 0024 CALL R9 0
- 0x7C140800, // 0025 CALL R5 4
- 0x7C0C0400, // 0026 CALL R3 2
- 0xB80E0200, // 0027 GETNGBL R3 K1
- 0x8C0C0702, // 0028 GETMET R3 R3 K2
- 0x60140018, // 0029 GETGBL R5 G24
- 0x5818000A, // 002A LDCONST R6 K10
- 0xB81E0E00, // 002B GETNGBL R7 K7
- 0x881C0F0E, // 002C GETMBR R7 R7 K14
- 0x5820000F, // 002D LDCONST R8 K15
- 0x5824000C, // 002E LDCONST R9 K12
- 0x7C140800, // 002F CALL R5 4
- 0x58180004, // 0030 LDCONST R6 K4
- 0x7C0C0600, // 0031 CALL R3 3
- 0x600C0010, // 0032 GETGBL R3 G16
- 0x5C100400, // 0033 MOVE R4 R2
- 0x7C0C0200, // 0034 CALL R3 1
- 0xA802005A, // 0035 EXBLK 0 #0091
- 0x5C100600, // 0036 MOVE R4 R3
- 0x7C100000, // 0037 CALL R4 0
- 0x1C140909, // 0038 EQ R5 R4 K9
- 0x78160000, // 0039 JMPF R5 #003B
- 0x7001FFFA, // 003A JMP #0036
- 0xA8020042, // 003B EXBLK 0 #007F
- 0x60140008, // 003C GETGBL R5 G8
- 0x5C180800, // 003D MOVE R6 R4
- 0x7C140200, // 003E CALL R5 1
- 0x94140205, // 003F GETIDX R5 R1 R5
- 0x8C180B10, // 0040 GETMET R6 R5 K16
- 0x58200011, // 0041 LDCONST R8 K17
- 0x7C180400, // 0042 CALL R6 2
- 0x4C1C0000, // 0043 LDNIL R7
- 0x1C1C0C07, // 0044 EQ R7 R6 R7
- 0x781E0006, // 0045 JMPF R7 #004D
- 0xB81E0200, // 0046 GETNGBL R7 K1
- 0x8C1C0F02, // 0047 GETMET R7 R7 K2
- 0x58240012, // 0048 LDCONST R9 K18
- 0x58280013, // 0049 LDCONST R10 K19
- 0x7C1C0600, // 004A CALL R7 3
- 0xA8040001, // 004B EXBLK 1 1
- 0x7001FFE8, // 004C JMP #0036
- 0x1C1C0D0B, // 004D EQ R7 R6 K11
- 0x781E0006, // 004E JMPF R7 #0056
- 0xB81E0200, // 004F GETNGBL R7 K1
- 0x8C1C0F02, // 0050 GETMET R7 R7 K2
- 0x58240014, // 0051 LDCONST R9 K20
- 0x58280013, // 0052 LDCONST R10 K19
- 0x7C1C0600, // 0053 CALL R7 3
- 0xA8040001, // 0054 EXBLK 1 1
- 0x7001FFDF, // 0055 JMP #0036
- 0x881C0115, // 0056 GETMBR R7 R0 K21
- 0x8C1C0F10, // 0057 GETMET R7 R7 K16
- 0x5C240C00, // 0058 MOVE R9 R6
- 0x7C1C0400, // 0059 CALL R7 2
- 0x4C200000, // 005A LDNIL R8
- 0x1C200E08, // 005B EQ R8 R7 R8
- 0x7822000A, // 005C JMPF R8 #0068
- 0xB8220200, // 005D GETNGBL R8 K1
- 0x8C201102, // 005E GETMET R8 R8 K2
- 0x60280008, // 005F GETGBL R10 G8
- 0x5C2C0C00, // 0060 MOVE R11 R6
- 0x7C280200, // 0061 CALL R10 1
- 0x002A2C0A, // 0062 ADD R10 K22 R10
- 0x00281517, // 0063 ADD R10 R10 K23
- 0x582C0004, // 0064 LDCONST R11 K4
- 0x7C200600, // 0065 CALL R8 3
- 0xA8040001, // 0066 EXBLK 1 1
- 0x7001FFCD, // 0067 JMP #0036
- 0x5C200E00, // 0068 MOVE R8 R7
- 0x5C240000, // 0069 MOVE R9 R0
- 0x5C280800, // 006A MOVE R10 R4
- 0x5C2C0A00, // 006B MOVE R11 R5
- 0x7C200600, // 006C CALL R8 3
- 0x88240105, // 006D GETMBR R9 R0 K5
- 0x8C241306, // 006E GETMET R9 R9 K6
- 0x5C2C1000, // 006F MOVE R11 R8
- 0x7C240400, // 0070 CALL R9 2
- 0xB8260200, // 0071 GETNGBL R9 K1
- 0x8C241302, // 0072 GETMET R9 R9 K2
- 0x602C0018, // 0073 GETGBL R11 G24
- 0x5830000A, // 0074 LDCONST R12 K10
- 0x5C340800, // 0075 MOVE R13 R4
- 0x5C380C00, // 0076 MOVE R14 R6
- 0x8C3C0118, // 0077 GETMET R15 R0 K24
- 0x5C440A00, // 0078 MOVE R17 R5
- 0x7C3C0400, // 0079 CALL R15 2
- 0x7C2C0800, // 007A CALL R11 4
- 0x58300004, // 007B LDCONST R12 K4
- 0x7C240600, // 007C CALL R9 3
- 0xA8040001, // 007D EXBLK 1 1
- 0x70020010, // 007E JMP #0090
- 0xAC140002, // 007F CATCH R5 0 2
- 0x7002000D, // 0080 JMP #008F
- 0xB81E0200, // 0081 GETNGBL R7 K1
- 0x8C1C0F02, // 0082 GETMET R7 R7 K2
- 0x60240008, // 0083 GETGBL R9 G8
- 0x5C280A00, // 0084 MOVE R10 R5
- 0x7C240200, // 0085 CALL R9 1
- 0x00263209, // 0086 ADD R9 K25 R9
- 0x0024131A, // 0087 ADD R9 R9 K26
- 0x60280008, // 0088 GETGBL R10 G8
- 0x5C2C0C00, // 0089 MOVE R11 R6
- 0x7C280200, // 008A CALL R10 1
- 0x0024120A, // 008B ADD R9 R9 R10
- 0x58280004, // 008C LDCONST R10 K4
- 0x7C1C0600, // 008D CALL R7 3
- 0x70020000, // 008E JMP #0090
- 0xB0080000, // 008F RAISE 2 R0 R0
- 0x7001FFA4, // 0090 JMP #0036
- 0x580C001B, // 0091 LDCONST R3 K27
- 0xAC0C0200, // 0092 CATCH R3 1 0
- 0xB0080000, // 0093 RAISE 2 R0 R0
- 0xB80E0200, // 0094 GETNGBL R3 K1
- 0x8C0C071C, // 0095 GETMET R3 R3 K28
- 0x5814001D, // 0096 LDCONST R5 K29
- 0x5818001E, // 0097 LDCONST R6 K30
- 0x7C0C0600, // 0098 CALL R3 3
- 0x80000000, // 0099 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: mdns_announce_op_discovery
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_mdns_announce_op_discovery, /* name */
- be_nested_proto(
- 14, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[27]) { /* constants */
- /* K0 */ be_nested_str_weak(mdns),
- /* K1 */ be_nested_str_weak(get_device_id),
- /* K2 */ be_nested_str_weak(copy),
- /* K3 */ be_nested_str_weak(reverse),
- /* K4 */ be_nested_str_weak(get_fabric_compressed),
- /* K5 */ be_nested_str_weak(tohex),
- /* K6 */ be_nested_str_weak(_X2D),
- /* K7 */ be_nested_str_weak(tasmota),
- /* K8 */ be_nested_str_weak(log),
- /* K9 */ be_nested_str_weak(MTR_X3A_X20Operational_X20Discovery_X20node_X20_X3D_X20),
- /* K10 */ be_const_int(3),
- /* K11 */ be_nested_str_weak(eth),
- /* K12 */ be_nested_str_weak(find),
- /* K13 */ be_nested_str_weak(up),
- /* K14 */ be_nested_str_weak(MTR_X3A_X20adding_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60),
- /* K15 */ be_nested_str_weak(hostname_eth),
- /* K16 */ be_nested_str_weak(add_service),
- /* K17 */ be_nested_str_weak(_matter),
- /* K18 */ be_nested_str_weak(_tcp),
- /* K19 */ be_nested_str_weak(_I),
- /* K20 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20),
- /* K21 */ be_nested_str_weak(add_subtype),
- /* K22 */ be_nested_str_weak(wifi),
- /* K23 */ be_nested_str_weak(hostname_wifi),
- /* K24 */ be_nested_str_weak(MTR_X3A_X20Exception),
- /* K25 */ be_nested_str_weak(_X7C),
- /* K26 */ be_const_int(2),
- }),
- be_str_weak(mdns_announce_op_discovery),
- &be_const_str_solidified,
- ( &(const binstruction[121]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0xA8020064, // 0001 EXBLK 0 #0067
- 0x8C0C0301, // 0002 GETMET R3 R1 K1
- 0x7C0C0200, // 0003 CALL R3 1
- 0x8C0C0702, // 0004 GETMET R3 R3 K2
- 0x7C0C0200, // 0005 CALL R3 1
- 0x8C0C0703, // 0006 GETMET R3 R3 K3
- 0x7C0C0200, // 0007 CALL R3 1
- 0x8C100304, // 0008 GETMET R4 R1 K4
- 0x7C100200, // 0009 CALL R4 1
- 0x8C140905, // 000A GETMET R5 R4 K5
- 0x7C140200, // 000B CALL R5 1
- 0x00140B06, // 000C ADD R5 R5 K6
- 0x8C180705, // 000D GETMET R6 R3 K5
- 0x7C180200, // 000E CALL R6 1
- 0x00140A06, // 000F ADD R5 R5 R6
- 0xB81A0E00, // 0010 GETNGBL R6 K7
- 0x8C180D08, // 0011 GETMET R6 R6 K8
- 0x00221205, // 0012 ADD R8 K9 R5
- 0x5824000A, // 0013 LDCONST R9 K10
- 0x7C180600, // 0014 CALL R6 3
- 0xB81A0E00, // 0015 GETNGBL R6 K7
- 0x8C180D0B, // 0016 GETMET R6 R6 K11
- 0x7C180200, // 0017 CALL R6 1
- 0x8C180D0C, // 0018 GETMET R6 R6 K12
- 0x5820000D, // 0019 LDCONST R8 K13
- 0x7C180400, // 001A CALL R6 2
- 0x781A0020, // 001B JMPF R6 #003D
- 0xB81A0E00, // 001C GETNGBL R6 K7
- 0x8C180D08, // 001D GETMET R6 R6 K8
- 0x60200018, // 001E GETGBL R8 G24
- 0x5824000E, // 001F LDCONST R9 K14
- 0x5828000B, // 0020 LDCONST R10 K11
- 0x5C2C0A00, // 0021 MOVE R11 R5
- 0x8830010F, // 0022 GETMBR R12 R0 K15
- 0x7C200800, // 0023 CALL R8 4
- 0x5824000A, // 0024 LDCONST R9 K10
- 0x7C180600, // 0025 CALL R6 3
- 0x8C180510, // 0026 GETMET R6 R2 K16
- 0x58200011, // 0027 LDCONST R8 K17
- 0x58240012, // 0028 LDCONST R9 K18
- 0x542A15A3, // 0029 LDINT R10 5540
- 0x4C2C0000, // 002A LDNIL R11
- 0x5C300A00, // 002B MOVE R12 R5
- 0x8834010F, // 002C GETMBR R13 R0 K15
- 0x7C180E00, // 002D CALL R6 7
- 0x8C180905, // 002E GETMET R6 R4 K5
- 0x7C180200, // 002F CALL R6 1
- 0x001A2606, // 0030 ADD R6 K19 R6
- 0xB81E0E00, // 0031 GETNGBL R7 K7
- 0x8C1C0F08, // 0032 GETMET R7 R7 K8
- 0x00262806, // 0033 ADD R9 K20 R6
- 0x5828000A, // 0034 LDCONST R10 K10
- 0x7C1C0600, // 0035 CALL R7 3
- 0x8C1C0515, // 0036 GETMET R7 R2 K21
- 0x58240011, // 0037 LDCONST R9 K17
- 0x58280012, // 0038 LDCONST R10 K18
- 0x5C2C0A00, // 0039 MOVE R11 R5
- 0x8830010F, // 003A GETMBR R12 R0 K15
- 0x5C340C00, // 003B MOVE R13 R6
- 0x7C1C0C00, // 003C CALL R7 6
- 0xB81A0E00, // 003D GETNGBL R6 K7
- 0x8C180D16, // 003E GETMET R6 R6 K22
- 0x7C180200, // 003F CALL R6 1
- 0x8C180D0C, // 0040 GETMET R6 R6 K12
- 0x5820000D, // 0041 LDCONST R8 K13
- 0x7C180400, // 0042 CALL R6 2
- 0x781A0020, // 0043 JMPF R6 #0065
- 0xB81A0E00, // 0044 GETNGBL R6 K7
- 0x8C180D08, // 0045 GETMET R6 R6 K8
- 0x60200018, // 0046 GETGBL R8 G24
- 0x5824000E, // 0047 LDCONST R9 K14
- 0x58280016, // 0048 LDCONST R10 K22
- 0x5C2C0A00, // 0049 MOVE R11 R5
- 0x88300117, // 004A GETMBR R12 R0 K23
- 0x7C200800, // 004B CALL R8 4
- 0x5824000A, // 004C LDCONST R9 K10
- 0x7C180600, // 004D CALL R6 3
- 0x8C180510, // 004E GETMET R6 R2 K16
- 0x58200011, // 004F LDCONST R8 K17
- 0x58240012, // 0050 LDCONST R9 K18
- 0x542A15A3, // 0051 LDINT R10 5540
- 0x4C2C0000, // 0052 LDNIL R11
- 0x5C300A00, // 0053 MOVE R12 R5
- 0x88340117, // 0054 GETMBR R13 R0 K23
- 0x7C180E00, // 0055 CALL R6 7
- 0x8C180905, // 0056 GETMET R6 R4 K5
- 0x7C180200, // 0057 CALL R6 1
- 0x001A2606, // 0058 ADD R6 K19 R6
- 0xB81E0E00, // 0059 GETNGBL R7 K7
- 0x8C1C0F08, // 005A GETMET R7 R7 K8
- 0x00262806, // 005B ADD R9 K20 R6
- 0x5828000A, // 005C LDCONST R10 K10
- 0x7C1C0600, // 005D CALL R7 3
- 0x8C1C0515, // 005E GETMET R7 R2 K21
- 0x58240011, // 005F LDCONST R9 K17
- 0x58280012, // 0060 LDCONST R10 K18
- 0x5C2C0A00, // 0061 MOVE R11 R5
- 0x88300117, // 0062 GETMBR R12 R0 K23
- 0x5C340C00, // 0063 MOVE R13 R6
- 0x7C1C0C00, // 0064 CALL R7 6
- 0xA8040001, // 0065 EXBLK 1 1
- 0x70020010, // 0066 JMP #0078
- 0xAC0C0002, // 0067 CATCH R3 0 2
- 0x7002000D, // 0068 JMP #0077
- 0xB8160E00, // 0069 GETNGBL R5 K7
- 0x8C140B08, // 006A GETMET R5 R5 K8
- 0x601C0008, // 006B GETGBL R7 G8
- 0x5C200600, // 006C MOVE R8 R3
- 0x7C1C0200, // 006D CALL R7 1
- 0x001E3007, // 006E ADD R7 K24 R7
- 0x001C0F19, // 006F ADD R7 R7 K25
- 0x60200008, // 0070 GETGBL R8 G8
- 0x5C240800, // 0071 MOVE R9 R4
- 0x7C200200, // 0072 CALL R8 1
- 0x001C0E08, // 0073 ADD R7 R7 R8
- 0x5820001A, // 0074 LDCONST R8 K26
- 0x7C140600, // 0075 CALL R5 3
- 0x70020000, // 0076 JMP #0078
- 0xB0080000, // 0077 RAISE 2 R0 R0
- 0x80000000, // 0078 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: k2l
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_k2l, /* name */
- be_nested_proto(
- 8, /* nstack */
- 1, /* argc */
- 4, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_Device),
- /* K1 */ be_nested_str_weak(keys),
- /* K2 */ be_nested_str_weak(push),
- /* K3 */ be_nested_str_weak(stop_iteration),
- /* K4 */ be_const_int(1),
- /* K5 */ be_const_int(0),
- }),
- be_str_weak(k2l),
- &be_const_str_solidified,
- ( &(const binstruction[50]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0x60080012, // 0001 GETGBL R2 G18
- 0x7C080000, // 0002 CALL R2 0
- 0x4C0C0000, // 0003 LDNIL R3
- 0x1C0C0003, // 0004 EQ R3 R0 R3
- 0x780E0000, // 0005 JMPF R3 #0007
- 0x80040400, // 0006 RET 1 R2
- 0x600C0010, // 0007 GETGBL R3 G16
- 0x8C100101, // 0008 GETMET R4 R0 K1
- 0x7C100200, // 0009 CALL R4 1
- 0x7C0C0200, // 000A CALL R3 1
- 0xA8020005, // 000B EXBLK 0 #0012
- 0x5C100600, // 000C MOVE R4 R3
- 0x7C100000, // 000D CALL R4 0
- 0x8C140502, // 000E GETMET R5 R2 K2
- 0x5C1C0800, // 000F MOVE R7 R4
- 0x7C140400, // 0010 CALL R5 2
- 0x7001FFF9, // 0011 JMP #000C
- 0x580C0003, // 0012 LDCONST R3 K3
- 0xAC0C0200, // 0013 CATCH R3 1 0
- 0xB0080000, // 0014 RAISE 2 R0 R0
- 0x600C0010, // 0015 GETGBL R3 G16
- 0x6010000C, // 0016 GETGBL R4 G12
- 0x5C140400, // 0017 MOVE R5 R2
- 0x7C100200, // 0018 CALL R4 1
- 0x04100904, // 0019 SUB R4 R4 K4
- 0x40120804, // 001A CONNECT R4 K4 R4
- 0x7C0C0200, // 001B CALL R3 1
- 0xA8020010, // 001C EXBLK 0 #002E
- 0x5C100600, // 001D MOVE R4 R3
- 0x7C100000, // 001E CALL R4 0
- 0x94140404, // 001F GETIDX R5 R2 R4
- 0x5C180800, // 0020 MOVE R6 R4
- 0x241C0D05, // 0021 GT R7 R6 K5
- 0x781E0008, // 0022 JMPF R7 #002C
- 0x041C0D04, // 0023 SUB R7 R6 K4
- 0x941C0407, // 0024 GETIDX R7 R2 R7
- 0x241C0E05, // 0025 GT R7 R7 R5
- 0x781E0004, // 0026 JMPF R7 #002C
- 0x041C0D04, // 0027 SUB R7 R6 K4
- 0x941C0407, // 0028 GETIDX R7 R2 R7
- 0x98080C07, // 0029 SETIDX R2 R6 R7
- 0x04180D04, // 002A SUB R6 R6 K4
- 0x7001FFF4, // 002B JMP #0021
- 0x98080C05, // 002C SETIDX R2 R6 R5
- 0x7001FFEE, // 002D JMP #001D
- 0x580C0003, // 002E LDCONST R3 K3
- 0xAC0C0200, // 002F CATCH R3 1 0
- 0xB0080000, // 0030 RAISE 2 R0 R0
- 0x80040400, // 0031 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_plugin_class_arg
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_get_plugin_class_arg, /* name */
- be_nested_proto(
- 5, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(plugins_classes),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(ARG),
- /* K3 */ be_nested_str_weak(),
- }),
- be_str_weak(get_plugin_class_arg),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100200, // 0002 MOVE R4 R1
- 0x7C080400, // 0003 CALL R2 2
- 0x780A0001, // 0004 JMPF R2 #0007
- 0x880C0502, // 0005 GETMBR R3 R2 K2
- 0x70020000, // 0006 JMP #0008
- 0x580C0003, // 0007 LDCONST R3 K3
- 0x80040600, // 0008 RET 1 R3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: stop_basic_commissioning
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_stop_basic_commissioning, /* name */
- be_nested_proto(
- 5, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(is_root_commissioning_open),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(publish_result),
- /* K3 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A0_X7D_X7D),
- /* K4 */ be_nested_str_weak(Matter),
- /* K5 */ be_nested_str_weak(commissioning_open),
- /* K6 */ be_nested_str_weak(mdns_remove_PASE),
- /* K7 */ be_nested_str_weak(commissioning_iterations),
- /* K8 */ be_nested_str_weak(commissioning_discriminator),
- /* K9 */ be_nested_str_weak(commissioning_salt),
- /* K10 */ be_nested_str_weak(commissioning_w0),
- /* K11 */ be_nested_str_weak(commissioning_L),
- /* K12 */ be_nested_str_weak(commissioning_admin_fabric),
- }),
- be_str_weak(stop_basic_commissioning),
- &be_const_str_solidified,
- ( &(const binstruction[25]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x7C040200, // 0001 CALL R1 1
- 0x78060004, // 0002 JMPF R1 #0008
- 0xB8060200, // 0003 GETNGBL R1 K1
- 0x8C040302, // 0004 GETMET R1 R1 K2
- 0x580C0003, // 0005 LDCONST R3 K3
- 0x58100004, // 0006 LDCONST R4 K4
- 0x7C040600, // 0007 CALL R1 3
- 0x4C040000, // 0008 LDNIL R1
- 0x90020A01, // 0009 SETMBR R0 K5 R1
- 0x8C040106, // 000A GETMET R1 R0 K6
- 0x7C040200, // 000B CALL R1 1
- 0x4C040000, // 000C LDNIL R1
- 0x90020E01, // 000D SETMBR R0 K7 R1
- 0x4C040000, // 000E LDNIL R1
- 0x90021001, // 000F SETMBR R0 K8 R1
- 0x4C040000, // 0010 LDNIL R1
- 0x90021201, // 0011 SETMBR R0 K9 R1
- 0x4C040000, // 0012 LDNIL R1
- 0x90021401, // 0013 SETMBR R0 K10 R1
- 0x4C040000, // 0014 LDNIL R1
- 0x90021601, // 0015 SETMBR R0 K11 R1
- 0x4C040000, // 0016 LDNIL R1
- 0x90021801, // 0017 SETMBR R0 K12 R1
- 0x80000000, // 0018 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: every_250ms
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_every_250ms, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(message_handler),
- /* K1 */ be_nested_str_weak(every_250ms),
- /* K2 */ be_nested_str_weak(read_sensors_scheduler),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(plugins),
- /* K5 */ be_const_int(1),
- }),
- be_str_weak(every_250ms),
- &be_const_str_solidified,
- ( &(const binstruction[18]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x8C040102, // 0003 GETMET R1 R0 K2
- 0x7C040200, // 0004 CALL R1 1
- 0x58040003, // 0005 LDCONST R1 K3
- 0x6008000C, // 0006 GETGBL R2 G12
- 0x880C0104, // 0007 GETMBR R3 R0 K4
- 0x7C080200, // 0008 CALL R2 1
- 0x14080202, // 0009 LT R2 R1 R2
- 0x780A0005, // 000A JMPF R2 #0011
- 0x88080104, // 000B GETMBR R2 R0 K4
- 0x94080401, // 000C GETIDX R2 R2 R1
- 0x8C080501, // 000D GETMET R2 R2 K1
- 0x7C080200, // 000E CALL R2 1
- 0x00040305, // 000F ADD R1 R1 K5
- 0x7001FFF4, // 0010 JMP #0006
- 0x80000000, // 0011 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: _start_udp
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device__start_udp, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
- be_nested_proto(
- 8, /* nstack */
- 3, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(msg_received),
- }),
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x680C0000, // 0000 GETUPV R3 U0
- 0x8C0C0700, // 0001 GETMET R3 R3 K0
- 0x5C140000, // 0002 MOVE R5 R0
- 0x5C180200, // 0003 MOVE R6 R1
- 0x5C1C0400, // 0004 MOVE R7 R2
- 0x7C0C0800, // 0005 CALL R3 4
- 0x80040600, // 0006 RET 1 R3
- })
- ),
- &be_class_Matter_Device,
- }),
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(udp_server),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(log),
- /* K3 */ be_nested_str_weak(MTR_X3A_X20Starting_X20UDP_X20server_X20on_X20port_X3A_X20),
- /* K4 */ be_const_int(2),
- /* K5 */ be_nested_str_weak(matter),
- /* K6 */ be_nested_str_weak(UDPServer),
- /* K7 */ be_nested_str_weak(),
- /* K8 */ be_nested_str_weak(start),
- }),
- be_str_weak(_start_udp),
- &be_const_str_solidified,
- ( &(const binstruction[28]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x780A0000, // 0001 JMPF R2 #0003
- 0x80000400, // 0002 RET 0
- 0x4C080000, // 0003 LDNIL R2
- 0x1C080202, // 0004 EQ R2 R1 R2
- 0x780A0000, // 0005 JMPF R2 #0007
- 0x540615A3, // 0006 LDINT R1 5540
- 0xB80A0200, // 0007 GETNGBL R2 K1
- 0x8C080502, // 0008 GETMET R2 R2 K2
- 0x60100008, // 0009 GETGBL R4 G8
- 0x5C140200, // 000A MOVE R5 R1
- 0x7C100200, // 000B CALL R4 1
- 0x00120604, // 000C ADD R4 K3 R4
- 0x58140004, // 000D LDCONST R5 K4
- 0x7C080600, // 000E CALL R2 3
- 0xB80A0A00, // 000F GETNGBL R2 K5
- 0x8C080506, // 0010 GETMET R2 R2 K6
- 0x5C100000, // 0011 MOVE R4 R0
- 0x58140007, // 0012 LDCONST R5 K7
- 0x5C180200, // 0013 MOVE R6 R1
- 0x7C080800, // 0014 CALL R2 4
- 0x90020002, // 0015 SETMBR R0 K0 R2
- 0x88080100, // 0016 GETMBR R2 R0 K0
- 0x8C080508, // 0017 GETMET R2 R2 K8
- 0x84100000, // 0018 CLOSURE R4 P0
- 0x7C080400, // 0019 CALL R2 2
- 0xA0000000, // 001A CLOSE R0
- 0x80000000, // 001B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: k2l_num
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_k2l_num, /* name */
- be_nested_proto(
- 9, /* nstack */
- 1, /* argc */
- 4, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_const_class(be_class_Matter_Device),
- /* K1 */ be_nested_str_weak(keys),
- /* K2 */ be_nested_str_weak(push),
- /* K3 */ be_nested_str_weak(stop_iteration),
- /* K4 */ be_const_int(1),
- /* K5 */ be_const_int(0),
- }),
- be_str_weak(k2l_num),
- &be_const_str_solidified,
- ( &(const binstruction[52]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0x60080012, // 0001 GETGBL R2 G18
- 0x7C080000, // 0002 CALL R2 0
- 0x4C0C0000, // 0003 LDNIL R3
- 0x1C0C0003, // 0004 EQ R3 R0 R3
- 0x780E0000, // 0005 JMPF R3 #0007
- 0x80040400, // 0006 RET 1 R2
- 0x600C0010, // 0007 GETGBL R3 G16
- 0x8C100101, // 0008 GETMET R4 R0 K1
- 0x7C100200, // 0009 CALL R4 1
- 0x7C0C0200, // 000A CALL R3 1
- 0xA8020007, // 000B EXBLK 0 #0014
- 0x5C100600, // 000C MOVE R4 R3
- 0x7C100000, // 000D CALL R4 0
- 0x8C140502, // 000E GETMET R5 R2 K2
- 0x601C0009, // 000F GETGBL R7 G9
- 0x5C200800, // 0010 MOVE R8 R4
- 0x7C1C0200, // 0011 CALL R7 1
- 0x7C140400, // 0012 CALL R5 2
- 0x7001FFF7, // 0013 JMP #000C
- 0x580C0003, // 0014 LDCONST R3 K3
- 0xAC0C0200, // 0015 CATCH R3 1 0
- 0xB0080000, // 0016 RAISE 2 R0 R0
- 0x600C0010, // 0017 GETGBL R3 G16
- 0x6010000C, // 0018 GETGBL R4 G12
- 0x5C140400, // 0019 MOVE R5 R2
- 0x7C100200, // 001A CALL R4 1
- 0x04100904, // 001B SUB R4 R4 K4
- 0x40120804, // 001C CONNECT R4 K4 R4
- 0x7C0C0200, // 001D CALL R3 1
- 0xA8020010, // 001E EXBLK 0 #0030
- 0x5C100600, // 001F MOVE R4 R3
- 0x7C100000, // 0020 CALL R4 0
- 0x94140404, // 0021 GETIDX R5 R2 R4
- 0x5C180800, // 0022 MOVE R6 R4
- 0x241C0D05, // 0023 GT R7 R6 K5
- 0x781E0008, // 0024 JMPF R7 #002E
- 0x041C0D04, // 0025 SUB R7 R6 K4
- 0x941C0407, // 0026 GETIDX R7 R2 R7
- 0x241C0E05, // 0027 GT R7 R7 R5
- 0x781E0004, // 0028 JMPF R7 #002E
- 0x041C0D04, // 0029 SUB R7 R6 K4
- 0x941C0407, // 002A GETIDX R7 R2 R7
- 0x98080C07, // 002B SETIDX R2 R6 R7
- 0x04180D04, // 002C SUB R6 R6 K4
- 0x7001FFF4, // 002D JMP #0023
- 0x98080C05, // 002E SETIDX R2 R6 R5
- 0x7001FFEE, // 002F JMP #001F
- 0x580C0003, // 0030 LDCONST R3 K3
- 0xAC0C0200, // 0031 CATCH R3 1 0
- 0xB0080000, // 0032 RAISE 2 R0 R0
- 0x80040400, // 0033 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_active_endpoints
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_get_active_endpoints, /* name */
- be_nested_proto(
- 9, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(plugins),
- /* K1 */ be_nested_str_weak(get_endpoint),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(find),
- /* K4 */ be_nested_str_weak(push),
- /* K5 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(get_active_endpoints),
- &be_const_str_solidified,
- ( &(const binstruction[28]) { /* code */
- 0x60080012, // 0000 GETGBL R2 G18
- 0x7C080000, // 0001 CALL R2 0
- 0x600C0010, // 0002 GETGBL R3 G16
- 0x88100100, // 0003 GETMBR R4 R0 K0
- 0x7C0C0200, // 0004 CALL R3 1
- 0xA8020011, // 0005 EXBLK 0 #0018
- 0x5C100600, // 0006 MOVE R4 R3
- 0x7C100000, // 0007 CALL R4 0
- 0x8C140901, // 0008 GETMET R5 R4 K1
- 0x7C140200, // 0009 CALL R5 1
- 0x78060002, // 000A JMPF R1 #000E
- 0x1C180B02, // 000B EQ R6 R5 K2
- 0x781A0000, // 000C JMPF R6 #000E
- 0x7001FFF7, // 000D JMP #0006
- 0x8C180503, // 000E GETMET R6 R2 K3
- 0x5C200A00, // 000F MOVE R8 R5
- 0x7C180400, // 0010 CALL R6 2
- 0x4C1C0000, // 0011 LDNIL R7
- 0x1C180C07, // 0012 EQ R6 R6 R7
- 0x781A0002, // 0013 JMPF R6 #0017
- 0x8C180504, // 0014 GETMET R6 R2 K4
- 0x5C200A00, // 0015 MOVE R8 R5
- 0x7C180400, // 0016 CALL R6 2
- 0x7001FFED, // 0017 JMP #0006
- 0x580C0005, // 0018 LDCONST R3 K5
- 0xAC0C0200, // 0019 CATCH R3 1 0
- 0xB0080000, // 001A RAISE 2 R0 R0
- 0x80040400, // 001B RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: check_config_ep
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_check_config_ep, /* name */
- be_nested_proto(
- 11, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[15]) { /* constants */
- /* K0 */ be_nested_str_weak(plugins_config),
- /* K1 */ be_nested_str_weak(keys),
- /* K2 */ be_nested_str_weak(push),
- /* K3 */ be_nested_str_weak(stop_iteration),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str_weak(tasmota),
- /* K6 */ be_nested_str_weak(log),
- /* K7 */ be_nested_str_weak(MTR_X3A_X20invalid_X20entry_X20with_X20ep_X20_X270_X27),
- /* K8 */ be_const_int(2),
- /* K9 */ be_nested_str_weak(remove),
- /* K10 */ be_nested_str_weak(matter),
- /* K11 */ be_nested_str_weak(AGGREGATOR_ENDPOINT),
- /* K12 */ be_nested_str_weak(MTR_X3A_X20endpoint_X20_X25s_X20collides_X20wit_X20aggregator_X2C_X20relocating_X20to_X20_X25s),
- /* K13 */ be_nested_str_weak(next_ep),
- /* K14 */ be_const_int(1),
- }),
- be_str_weak(check_config_ep),
- &be_const_str_solidified,
- ( &(const binstruction[79]) { /* code */
- 0x50040000, // 0000 LDBOOL R1 0 0
- 0x60080012, // 0001 GETGBL R2 G18
- 0x7C080000, // 0002 CALL R2 0
- 0x600C0010, // 0003 GETGBL R3 G16
- 0x88100100, // 0004 GETMBR R4 R0 K0
- 0x8C100901, // 0005 GETMET R4 R4 K1
- 0x7C100200, // 0006 CALL R4 1
- 0x7C0C0200, // 0007 CALL R3 1
- 0xA8020007, // 0008 EXBLK 0 #0011
- 0x5C100600, // 0009 MOVE R4 R3
- 0x7C100000, // 000A CALL R4 0
- 0x8C140502, // 000B GETMET R5 R2 K2
- 0x601C0009, // 000C GETGBL R7 G9
- 0x5C200800, // 000D MOVE R8 R4
- 0x7C1C0200, // 000E CALL R7 1
- 0x7C140400, // 000F CALL R5 2
- 0x7001FFF7, // 0010 JMP #0009
- 0x580C0003, // 0011 LDCONST R3 K3
- 0xAC0C0200, // 0012 CATCH R3 1 0
- 0xB0080000, // 0013 RAISE 2 R0 R0
- 0x600C0010, // 0014 GETGBL R3 G16
- 0x5C100400, // 0015 MOVE R4 R2
- 0x7C0C0200, // 0016 CALL R3 1
- 0xA8020032, // 0017 EXBLK 0 #004B
- 0x5C100600, // 0018 MOVE R4 R3
- 0x7C100000, // 0019 CALL R4 0
- 0x1C140904, // 001A EQ R5 R4 K4
- 0x7816000C, // 001B JMPF R5 #0029
- 0xB8160A00, // 001C GETNGBL R5 K5
- 0x8C140B06, // 001D GETMET R5 R5 K6
- 0x581C0007, // 001E LDCONST R7 K7
- 0x58200008, // 001F LDCONST R8 K8
- 0x7C140600, // 0020 CALL R5 3
- 0x88140100, // 0021 GETMBR R5 R0 K0
- 0x8C140B09, // 0022 GETMET R5 R5 K9
- 0x601C0008, // 0023 GETGBL R7 G8
- 0x5C200800, // 0024 MOVE R8 R4
- 0x7C1C0200, // 0025 CALL R7 1
- 0x7C140400, // 0026 CALL R5 2
- 0x50040200, // 0027 LDBOOL R1 1 0
- 0x70020020, // 0028 JMP #004A
- 0xB8161400, // 0029 GETNGBL R5 K10
- 0x88140B0B, // 002A GETMBR R5 R5 K11
- 0x1C140805, // 002B EQ R5 R4 R5
- 0x7816001C, // 002C JMPF R5 #004A
- 0x50040200, // 002D LDBOOL R1 1 0
- 0xB8160A00, // 002E GETNGBL R5 K5
- 0x8C140B06, // 002F GETMET R5 R5 K6
- 0x601C0018, // 0030 GETGBL R7 G24
- 0x5820000C, // 0031 LDCONST R8 K12
- 0x5C240800, // 0032 MOVE R9 R4
- 0x8828010D, // 0033 GETMBR R10 R0 K13
- 0x7C1C0600, // 0034 CALL R7 3
- 0x58200008, // 0035 LDCONST R8 K8
- 0x7C140600, // 0036 CALL R5 3
- 0x60140008, // 0037 GETGBL R5 G8
- 0x8818010D, // 0038 GETMBR R6 R0 K13
- 0x7C140200, // 0039 CALL R5 1
- 0x88180100, // 003A GETMBR R6 R0 K0
- 0x601C0008, // 003B GETGBL R7 G8
- 0x5C200800, // 003C MOVE R8 R4
- 0x7C1C0200, // 003D CALL R7 1
- 0x88200100, // 003E GETMBR R8 R0 K0
- 0x941C1007, // 003F GETIDX R7 R8 R7
- 0x98180A07, // 0040 SETIDX R6 R5 R7
- 0x88140100, // 0041 GETMBR R5 R0 K0
- 0x8C140B09, // 0042 GETMET R5 R5 K9
- 0x601C0008, // 0043 GETGBL R7 G8
- 0x5C200800, // 0044 MOVE R8 R4
- 0x7C1C0200, // 0045 CALL R7 1
- 0x7C140400, // 0046 CALL R5 2
- 0x8814010D, // 0047 GETMBR R5 R0 K13
- 0x00140B0E, // 0048 ADD R5 R5 K14
- 0x90021A05, // 0049 SETMBR R0 K13 R5
- 0x7001FFCC, // 004A JMP #0018
- 0x580C0003, // 004B LDCONST R3 K3
- 0xAC0C0200, // 004C CATCH R3 1 0
- 0xB0080000, // 004D RAISE 2 R0 R0
- 0x80040200, // 004E RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: msg_send
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_msg_send, /* name */
- be_nested_proto(
- 5, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(udp_server),
- /* K1 */ be_nested_str_weak(send_UDP),
- }),
- be_str_weak(msg_send),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100200, // 0002 MOVE R4 R1
- 0x7C080400, // 0003 CALL R2 2
- 0x80040400, // 0004 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: autoconf_sensors_list
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_autoconf_sensors_list, /* name */
- be_nested_proto(
- 10, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
- /* K0 */ be_nested_str_weak(k2l),
- /* K1 */ be_nested_str_weak(contains),
- /* K2 */ be_nested_str_weak(Temperature),
- /* K3 */ be_nested_str_weak(_X23Temperature),
- /* K4 */ be_nested_str_weak(push),
- /* K5 */ be_nested_str_weak(type),
- /* K6 */ be_nested_str_weak(temperature),
- /* K7 */ be_nested_str_weak(filter),
- /* K8 */ be_nested_str_weak(stop_iteration),
- /* K9 */ be_nested_str_weak(Pressure),
- /* K10 */ be_nested_str_weak(_X23Pressure),
- /* K11 */ be_nested_str_weak(pressure),
- /* K12 */ be_nested_str_weak(Illuminance),
- /* K13 */ be_nested_str_weak(_X23Illuminance),
- /* K14 */ be_nested_str_weak(illuminance),
- /* K15 */ be_nested_str_weak(Humidity),
- /* K16 */ be_nested_str_weak(_X23Humidity),
- /* K17 */ be_nested_str_weak(humidity),
- }),
- be_str_weak(autoconf_sensors_list),
- &be_const_str_solidified,
- ( &(const binstruction[119]) { /* code */
- 0x60080012, // 0000 GETGBL R2 G18
- 0x7C080000, // 0001 CALL R2 0
- 0x600C0010, // 0002 GETGBL R3 G16
- 0x8C100100, // 0003 GETMET R4 R0 K0
- 0x5C180200, // 0004 MOVE R6 R1
- 0x7C100400, // 0005 CALL R4 2
- 0x7C0C0200, // 0006 CALL R3 1
- 0xA8020013, // 0007 EXBLK 0 #001C
- 0x5C100600, // 0008 MOVE R4 R3
- 0x7C100000, // 0009 CALL R4 0
- 0x94140204, // 000A GETIDX R5 R1 R4
- 0x6018000F, // 000B GETGBL R6 G15
- 0x5C1C0A00, // 000C MOVE R7 R5
- 0x60200013, // 000D GETGBL R8 G19
- 0x7C180400, // 000E CALL R6 2
- 0x781A000A, // 000F JMPF R6 #001B
- 0x8C180B01, // 0010 GETMET R6 R5 K1
- 0x58200002, // 0011 LDCONST R8 K2
- 0x7C180400, // 0012 CALL R6 2
- 0x781A0006, // 0013 JMPF R6 #001B
- 0x00180903, // 0014 ADD R6 R4 K3
- 0x8C1C0504, // 0015 GETMET R7 R2 K4
- 0x60240013, // 0016 GETGBL R9 G19
- 0x7C240000, // 0017 CALL R9 0
- 0x98260B06, // 0018 SETIDX R9 K5 K6
- 0x98260E06, // 0019 SETIDX R9 K7 R6
- 0x7C1C0400, // 001A CALL R7 2
- 0x7001FFEB, // 001B JMP #0008
- 0x580C0008, // 001C LDCONST R3 K8
- 0xAC0C0200, // 001D CATCH R3 1 0
- 0xB0080000, // 001E RAISE 2 R0 R0
- 0x600C0010, // 001F GETGBL R3 G16
- 0x8C100100, // 0020 GETMET R4 R0 K0
- 0x5C180200, // 0021 MOVE R6 R1
- 0x7C100400, // 0022 CALL R4 2
- 0x7C0C0200, // 0023 CALL R3 1
- 0xA8020013, // 0024 EXBLK 0 #0039
- 0x5C100600, // 0025 MOVE R4 R3
- 0x7C100000, // 0026 CALL R4 0
- 0x94140204, // 0027 GETIDX R5 R1 R4
- 0x6018000F, // 0028 GETGBL R6 G15
- 0x5C1C0A00, // 0029 MOVE R7 R5
- 0x60200013, // 002A GETGBL R8 G19
- 0x7C180400, // 002B CALL R6 2
- 0x781A000A, // 002C JMPF R6 #0038
- 0x8C180B01, // 002D GETMET R6 R5 K1
- 0x58200009, // 002E LDCONST R8 K9
- 0x7C180400, // 002F CALL R6 2
- 0x781A0006, // 0030 JMPF R6 #0038
- 0x0018090A, // 0031 ADD R6 R4 K10
- 0x8C1C0504, // 0032 GETMET R7 R2 K4
- 0x60240013, // 0033 GETGBL R9 G19
- 0x7C240000, // 0034 CALL R9 0
- 0x98260B0B, // 0035 SETIDX R9 K5 K11
- 0x98260E06, // 0036 SETIDX R9 K7 R6
- 0x7C1C0400, // 0037 CALL R7 2
- 0x7001FFEB, // 0038 JMP #0025
- 0x580C0008, // 0039 LDCONST R3 K8
- 0xAC0C0200, // 003A CATCH R3 1 0
- 0xB0080000, // 003B RAISE 2 R0 R0
- 0x600C0010, // 003C GETGBL R3 G16
- 0x8C100100, // 003D GETMET R4 R0 K0
- 0x5C180200, // 003E MOVE R6 R1
- 0x7C100400, // 003F CALL R4 2
- 0x7C0C0200, // 0040 CALL R3 1
- 0xA8020013, // 0041 EXBLK 0 #0056
- 0x5C100600, // 0042 MOVE R4 R3
- 0x7C100000, // 0043 CALL R4 0
- 0x94140204, // 0044 GETIDX R5 R1 R4
- 0x6018000F, // 0045 GETGBL R6 G15
- 0x5C1C0A00, // 0046 MOVE R7 R5
- 0x60200013, // 0047 GETGBL R8 G19
- 0x7C180400, // 0048 CALL R6 2
- 0x781A000A, // 0049 JMPF R6 #0055
- 0x8C180B01, // 004A GETMET R6 R5 K1
- 0x5820000C, // 004B LDCONST R8 K12
- 0x7C180400, // 004C CALL R6 2
- 0x781A0006, // 004D JMPF R6 #0055
- 0x0018090D, // 004E ADD R6 R4 K13
- 0x8C1C0504, // 004F GETMET R7 R2 K4
- 0x60240013, // 0050 GETGBL R9 G19
- 0x7C240000, // 0051 CALL R9 0
- 0x98260B0E, // 0052 SETIDX R9 K5 K14
- 0x98260E06, // 0053 SETIDX R9 K7 R6
- 0x7C1C0400, // 0054 CALL R7 2
- 0x7001FFEB, // 0055 JMP #0042
- 0x580C0008, // 0056 LDCONST R3 K8
- 0xAC0C0200, // 0057 CATCH R3 1 0
- 0xB0080000, // 0058 RAISE 2 R0 R0
- 0x600C0010, // 0059 GETGBL R3 G16
- 0x8C100100, // 005A GETMET R4 R0 K0
- 0x5C180200, // 005B MOVE R6 R1
- 0x7C100400, // 005C CALL R4 2
- 0x7C0C0200, // 005D CALL R3 1
- 0xA8020013, // 005E EXBLK 0 #0073
- 0x5C100600, // 005F MOVE R4 R3
- 0x7C100000, // 0060 CALL R4 0
- 0x94140204, // 0061 GETIDX R5 R1 R4
- 0x6018000F, // 0062 GETGBL R6 G15
- 0x5C1C0A00, // 0063 MOVE R7 R5
- 0x60200013, // 0064 GETGBL R8 G19
- 0x7C180400, // 0065 CALL R6 2
- 0x781A000A, // 0066 JMPF R6 #0072
- 0x8C180B01, // 0067 GETMET R6 R5 K1
- 0x5820000F, // 0068 LDCONST R8 K15
- 0x7C180400, // 0069 CALL R6 2
- 0x781A0006, // 006A JMPF R6 #0072
- 0x00180910, // 006B ADD R6 R4 K16
- 0x8C1C0504, // 006C GETMET R7 R2 K4
- 0x60240013, // 006D GETGBL R9 G19
- 0x7C240000, // 006E CALL R9 0
- 0x98260B11, // 006F SETIDX R9 K5 K17
- 0x98260E06, // 0070 SETIDX R9 K7 R6
- 0x7C1C0400, // 0071 CALL R7 2
- 0x7001FFEB, // 0072 JMP #005F
- 0x580C0008, // 0073 LDCONST R3 K8
- 0xAC0C0200, // 0074 CATCH R3 1 0
- 0xB0080000, // 0075 RAISE 2 R0 R0
- 0x80040400, // 0076 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: find_plugin_by_endpoint
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_find_plugin_by_endpoint, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(plugins),
- /* K2 */ be_nested_str_weak(get_endpoint),
- /* K3 */ be_const_int(1),
- }),
- be_str_weak(find_plugin_by_endpoint),
- &be_const_str_solidified,
- ( &(const binstruction[17]) { /* code */
- 0x58080000, // 0000 LDCONST R2 K0
- 0x600C000C, // 0001 GETGBL R3 G12
- 0x88100101, // 0002 GETMBR R4 R0 K1
- 0x7C0C0200, // 0003 CALL R3 1
- 0x140C0403, // 0004 LT R3 R2 R3
- 0x780E0008, // 0005 JMPF R3 #000F
- 0x880C0101, // 0006 GETMBR R3 R0 K1
- 0x940C0602, // 0007 GETIDX R3 R3 R2
- 0x8C100702, // 0008 GETMET R4 R3 K2
- 0x7C100200, // 0009 CALL R4 1
- 0x1C100801, // 000A EQ R4 R4 R1
- 0x78120000, // 000B JMPF R4 #000D
- 0x80040600, // 000C RET 1 R3
- 0x00080503, // 000D ADD R2 R2 K3
- 0x7001FFF1, // 000E JMP #0001
- 0x4C0C0000, // 000F LDNIL R3
- 0x80040600, // 0010 RET 1 R3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start_root_basic_commissioning
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_start_root_basic_commissioning, /* name */
- be_nested_proto(
- 13, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
- /* K0 */ be_nested_str_weak(PASE_TIMEOUT),
- /* K1 */ be_nested_str_weak(compute_manual_pairing_code),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(log),
- /* K4 */ be_nested_str_weak(MTR_X3A_X20Manual_X20pairing_X20code_X3A_X20_X25s),
- /* K5 */ be_const_int(2),
- /* K6 */ be_nested_str_weak(compute_qrcode_content),
- /* K7 */ be_nested_str_weak(publish_result),
- /* K8 */ be_nested_str_weak(_X7B_X22Matter_X22_X3A_X7B_X22Commissioning_X22_X3A1_X2C_X22PairingCode_X22_X3A_X22_X25s_X22_X2C_X22QRCode_X22_X3A_X22_X25s_X22_X7D_X7D),
- /* K9 */ be_nested_str_weak(Matter),
- /* K10 */ be_nested_str_weak(_compute_pbkdf),
- /* K11 */ be_nested_str_weak(root_passcode),
- /* K12 */ be_nested_str_weak(root_iterations),
- /* K13 */ be_nested_str_weak(root_salt),
- /* K14 */ be_nested_str_weak(start_basic_commissioning),
- /* K15 */ be_nested_str_weak(root_discriminator),
- /* K16 */ be_nested_str_weak(root_w0),
- /* K17 */ be_nested_str_weak(root_L),
- }),
- be_str_weak(start_root_basic_commissioning),
- &be_const_str_solidified,
- ( &(const binstruction[40]) { /* code */
- 0x4C080000, // 0000 LDNIL R2
- 0x1C080202, // 0001 EQ R2 R1 R2
- 0x780A0000, // 0002 JMPF R2 #0004
- 0x88040100, // 0003 GETMBR R1 R0 K0
- 0x8C080101, // 0004 GETMET R2 R0 K1
- 0x7C080200, // 0005 CALL R2 1
- 0xB80E0400, // 0006 GETNGBL R3 K2
- 0x8C0C0703, // 0007 GETMET R3 R3 K3
- 0x60140018, // 0008 GETGBL R5 G24
- 0x58180004, // 0009 LDCONST R6 K4
- 0x5C1C0400, // 000A MOVE R7 R2
- 0x7C140400, // 000B CALL R5 2
- 0x58180005, // 000C LDCONST R6 K5
- 0x7C0C0600, // 000D CALL R3 3
- 0x8C0C0106, // 000E GETMET R3 R0 K6
- 0x7C0C0200, // 000F CALL R3 1
- 0xB8120400, // 0010 GETNGBL R4 K2
- 0x8C100907, // 0011 GETMET R4 R4 K7
- 0x60180018, // 0012 GETGBL R6 G24
- 0x581C0008, // 0013 LDCONST R7 K8
- 0x5C200400, // 0014 MOVE R8 R2
- 0x5C240600, // 0015 MOVE R9 R3
- 0x7C180600, // 0016 CALL R6 3
- 0x581C0009, // 0017 LDCONST R7 K9
- 0x7C100600, // 0018 CALL R4 3
- 0x8C10010A, // 0019 GETMET R4 R0 K10
- 0x8818010B, // 001A GETMBR R6 R0 K11
- 0x881C010C, // 001B GETMBR R7 R0 K12
- 0x8820010D, // 001C GETMBR R8 R0 K13
- 0x7C100800, // 001D CALL R4 4
- 0x8C10010E, // 001E GETMET R4 R0 K14
- 0x5C180200, // 001F MOVE R6 R1
- 0x881C010C, // 0020 GETMBR R7 R0 K12
- 0x8820010F, // 0021 GETMBR R8 R0 K15
- 0x8824010D, // 0022 GETMBR R9 R0 K13
- 0x88280110, // 0023 GETMBR R10 R0 K16
- 0x882C0111, // 0024 GETMBR R11 R0 K17
- 0x4C300000, // 0025 LDNIL R12
- 0x7C101000, // 0026 CALL R4 8
- 0x80000000, // 0027 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: process_attribute_read_solo
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_process_attribute_read_solo, /* name */
- be_nested_proto(
- 10, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(endpoint),
- /* K1 */ be_nested_str_weak(cluster),
- /* K2 */ be_nested_str_weak(attribute),
- /* K3 */ be_nested_str_weak(find_plugin_by_endpoint),
- /* K4 */ be_nested_str_weak(status),
- /* K5 */ be_nested_str_weak(matter),
- /* K6 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT),
- /* K7 */ be_nested_str_weak(contains_cluster),
- /* K8 */ be_nested_str_weak(UNSUPPORTED_CLUSTER),
- /* K9 */ be_nested_str_weak(contains_attribute),
- /* K10 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
- }),
- be_str_weak(process_attribute_read_solo),
- &be_const_str_solidified,
- ( &(const binstruction[45]) { /* code */
- 0x88080300, // 0000 GETMBR R2 R1 K0
- 0x880C0301, // 0001 GETMBR R3 R1 K1
- 0x88100302, // 0002 GETMBR R4 R1 K2
- 0x4C140000, // 0003 LDNIL R5
- 0x1C140405, // 0004 EQ R5 R2 R5
- 0x74160005, // 0005 JMPT R5 #000C
- 0x4C140000, // 0006 LDNIL R5
- 0x1C140605, // 0007 EQ R5 R3 R5
- 0x74160002, // 0008 JMPT R5 #000C
- 0x4C140000, // 0009 LDNIL R5
- 0x1C140805, // 000A EQ R5 R4 R5
- 0x78160001, // 000B JMPF R5 #000E
- 0x4C140000, // 000C LDNIL R5
- 0x80040A00, // 000D RET 1 R5
- 0x8C140103, // 000E GETMET R5 R0 K3
- 0x5C1C0400, // 000F MOVE R7 R2
- 0x7C140400, // 0010 CALL R5 2
- 0x4C180000, // 0011 LDNIL R6
- 0x1C180A06, // 0012 EQ R6 R5 R6
- 0x781A0004, // 0013 JMPF R6 #0019
- 0xB81A0A00, // 0014 GETNGBL R6 K5
- 0x88180D06, // 0015 GETMBR R6 R6 K6
- 0x90060806, // 0016 SETMBR R1 K4 R6
- 0x4C180000, // 0017 LDNIL R6
- 0x80040C00, // 0018 RET 1 R6
- 0x8C180B07, // 0019 GETMET R6 R5 K7
- 0x5C200600, // 001A MOVE R8 R3
- 0x7C180400, // 001B CALL R6 2
- 0x741A0004, // 001C JMPT R6 #0022
- 0xB81A0A00, // 001D GETNGBL R6 K5
- 0x88180D08, // 001E GETMBR R6 R6 K8
- 0x90060806, // 001F SETMBR R1 K4 R6
- 0x4C180000, // 0020 LDNIL R6
- 0x80040C00, // 0021 RET 1 R6
- 0x8C180B09, // 0022 GETMET R6 R5 K9
- 0x5C200600, // 0023 MOVE R8 R3
- 0x5C240800, // 0024 MOVE R9 R4
- 0x7C180600, // 0025 CALL R6 3
- 0x741A0004, // 0026 JMPT R6 #002C
- 0xB81A0A00, // 0027 GETNGBL R6 K5
- 0x88180D0A, // 0028 GETMBR R6 R6 K10
- 0x90060806, // 0029 SETMBR R1 K4 R6
- 0x4C180000, // 002A LDNIL R6
- 0x80040C00, // 002B RET 1 R6
- 0x80040A00, // 002C RET 1 R5
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start_operational_discovery
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_start_operational_discovery, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(mdns),
- /* K2 */ be_nested_str_weak(stop_basic_commissioning),
- /* K3 */ be_nested_str_weak(root_w0),
- /* K4 */ be_nested_str_weak(root_L),
- /* K5 */ be_nested_str_weak(mdns_announce_op_discovery),
- }),
- be_str_weak(start_operational_discovery),
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0xA40E0200, // 0001 IMPORT R3 K1
- 0x8C100102, // 0002 GETMET R4 R0 K2
- 0x7C100200, // 0003 CALL R4 1
- 0x4C100000, // 0004 LDNIL R4
- 0x90020604, // 0005 SETMBR R0 K3 R4
- 0x4C100000, // 0006 LDNIL R4
- 0x90020804, // 0007 SETMBR R0 K4 R4
- 0x8C100105, // 0008 GETMET R4 R0 K5
- 0x5C180200, // 0009 MOVE R6 R1
- 0x7C100400, // 000A CALL R4 2
- 0x80000000, // 000B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: load_param
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_load_param, /* name */
+be_local_closure(class_Matter_Device_invoke_request, /* name */
be_nested_proto(
12, /* nstack */
- 1, /* argc */
- 2, /* varg */
+ 4, /* argc */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Device,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[36]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(FILENAME),
- /* K2 */ be_nested_str_weak(read),
- /* K3 */ be_nested_str_weak(close),
- /* K4 */ be_nested_str_weak(json),
- /* K5 */ be_nested_str_weak(load),
- /* K6 */ be_nested_str_weak(root_discriminator),
- /* K7 */ be_nested_str_weak(find),
- /* K8 */ be_nested_str_weak(distinguish),
- /* K9 */ be_nested_str_weak(root_passcode),
- /* K10 */ be_nested_str_weak(passcode),
- /* K11 */ be_nested_str_weak(ipv4only),
- /* K12 */ be_nested_str_weak(disable_bridge_mode),
- /* K13 */ be_nested_str_weak(next_ep),
- /* K14 */ be_nested_str_weak(nextep),
- /* K15 */ be_nested_str_weak(plugins_config),
- /* K16 */ be_nested_str_weak(config),
- /* K17 */ be_nested_str_weak(tasmota),
- /* K18 */ be_nested_str_weak(log),
- /* K19 */ be_nested_str_weak(MTR_X3A_X20Load_config_X20_X3D_X20_X25s),
- /* K20 */ be_const_int(3),
- /* K21 */ be_nested_str_weak(adjust_next_ep),
- /* K22 */ be_nested_str_weak(check_config_ep),
- /* K23 */ be_nested_str_weak(plugins_persist),
- /* K24 */ be_nested_str_weak(plugins_config_remotes),
- /* K25 */ be_nested_str_weak(remotes),
- /* K26 */ be_nested_str_weak(MTR_X3A_X20load_remotes_X20_X3D_X20),
- /* K27 */ be_nested_str_weak(io_error),
- /* K28 */ be_nested_str_weak(MTR_X3A_X20load_param_X20Exception_X3A),
- /* K29 */ be_nested_str_weak(_X7C),
- /* K30 */ be_const_int(2),
- /* K31 */ be_nested_str_weak(random),
- /* K32 */ be_nested_str_weak(get),
- /* K33 */ be_const_int(0),
- /* K34 */ be_nested_str_weak(generate_random_passcode),
- /* K35 */ be_nested_str_weak(save_param),
- }),
- be_str_weak(load_param),
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(invoke_request),
&be_const_str_solidified,
- ( &(const binstruction[130]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x50080000, // 0001 LDBOOL R2 0 0
- 0xA8020050, // 0002 EXBLK 0 #0054
- 0x600C0011, // 0003 GETGBL R3 G17
- 0x88100101, // 0004 GETMBR R4 R0 K1
- 0x7C0C0200, // 0005 CALL R3 1
- 0x8C100702, // 0006 GETMET R4 R3 K2
- 0x7C100200, // 0007 CALL R4 1
- 0x8C140703, // 0008 GETMET R5 R3 K3
- 0x7C140200, // 0009 CALL R5 1
- 0xA4160800, // 000A IMPORT R5 K4
- 0x8C180B05, // 000B GETMET R6 R5 K5
- 0x5C200800, // 000C MOVE R8 R4
- 0x7C180400, // 000D CALL R6 2
- 0x8C1C0D07, // 000E GETMET R7 R6 K7
- 0x58240008, // 000F LDCONST R9 K8
- 0x88280106, // 0010 GETMBR R10 R0 K6
- 0x7C1C0600, // 0011 CALL R7 3
- 0x90020C07, // 0012 SETMBR R0 K6 R7
- 0x8C1C0D07, // 0013 GETMET R7 R6 K7
- 0x5824000A, // 0014 LDCONST R9 K10
- 0x88280109, // 0015 GETMBR R10 R0 K9
- 0x7C1C0600, // 0016 CALL R7 3
- 0x90021207, // 0017 SETMBR R0 K9 R7
- 0x601C0017, // 0018 GETGBL R7 G23
- 0x8C200D07, // 0019 GETMET R8 R6 K7
- 0x5828000B, // 001A LDCONST R10 K11
- 0x502C0000, // 001B LDBOOL R11 0 0
- 0x7C200600, // 001C CALL R8 3
- 0x7C1C0200, // 001D CALL R7 1
- 0x90021607, // 001E SETMBR R0 K11 R7
- 0x601C0017, // 001F GETGBL R7 G23
- 0x8C200D07, // 0020 GETMET R8 R6 K7
- 0x5828000C, // 0021 LDCONST R10 K12
- 0x502C0000, // 0022 LDBOOL R11 0 0
- 0x7C200600, // 0023 CALL R8 3
- 0x7C1C0200, // 0024 CALL R7 1
- 0x90021807, // 0025 SETMBR R0 K12 R7
- 0x8C1C0D07, // 0026 GETMET R7 R6 K7
- 0x5824000E, // 0027 LDCONST R9 K14
- 0x8828010D, // 0028 GETMBR R10 R0 K13
- 0x7C1C0600, // 0029 CALL R7 3
- 0x90021A07, // 002A SETMBR R0 K13 R7
- 0x8C1C0D07, // 002B GETMET R7 R6 K7
- 0x58240010, // 002C LDCONST R9 K16
- 0x7C1C0400, // 002D CALL R7 2
- 0x90021E07, // 002E SETMBR R0 K15 R7
- 0x881C010F, // 002F GETMBR R7 R0 K15
- 0x4C200000, // 0030 LDNIL R8
- 0x201C0E08, // 0031 NE R7 R7 R8
- 0x781E000E, // 0032 JMPF R7 #0042
- 0xB81E2200, // 0033 GETNGBL R7 K17
- 0x8C1C0F12, // 0034 GETMET R7 R7 K18
- 0x60240018, // 0035 GETGBL R9 G24
- 0x58280013, // 0036 LDCONST R10 K19
- 0x882C010F, // 0037 GETMBR R11 R0 K15
- 0x7C240400, // 0038 CALL R9 2
- 0x58280014, // 0039 LDCONST R10 K20
- 0x7C1C0600, // 003A CALL R7 3
- 0x8C1C0115, // 003B GETMET R7 R0 K21
- 0x7C1C0200, // 003C CALL R7 1
- 0x8C1C0116, // 003D GETMET R7 R0 K22
- 0x7C1C0200, // 003E CALL R7 1
- 0x5C080E00, // 003F MOVE R2 R7
- 0x501C0200, // 0040 LDBOOL R7 1 0
- 0x90022E07, // 0041 SETMBR R0 K23 R7
- 0x8C1C0D07, // 0042 GETMET R7 R6 K7
- 0x58240019, // 0043 LDCONST R9 K25
- 0x60280013, // 0044 GETGBL R10 G19
- 0x7C280000, // 0045 CALL R10 0
- 0x7C1C0600, // 0046 CALL R7 3
- 0x90023007, // 0047 SETMBR R0 K24 R7
- 0x881C0118, // 0048 GETMBR R7 R0 K24
- 0x781E0007, // 0049 JMPF R7 #0052
- 0xB81E2200, // 004A GETNGBL R7 K17
- 0x8C1C0F12, // 004B GETMET R7 R7 K18
- 0x60240008, // 004C GETGBL R9 G8
- 0x88280118, // 004D GETMBR R10 R0 K24
- 0x7C240200, // 004E CALL R9 1
- 0x00263409, // 004F ADD R9 K26 R9
- 0x58280014, // 0050 LDCONST R10 K20
- 0x7C1C0600, // 0051 CALL R7 3
- 0xA8040001, // 0052 EXBLK 1 1
- 0x70020012, // 0053 JMP #0067
- 0xAC0C0002, // 0054 CATCH R3 0 2
- 0x7002000F, // 0055 JMP #0066
- 0x2014071B, // 0056 NE R5 R3 K27
- 0x7816000C, // 0057 JMPF R5 #0065
- 0xB8162200, // 0058 GETNGBL R5 K17
- 0x8C140B12, // 0059 GETMET R5 R5 K18
- 0x601C0008, // 005A GETGBL R7 G8
- 0x5C200600, // 005B MOVE R8 R3
- 0x7C1C0200, // 005C CALL R7 1
- 0x001E3807, // 005D ADD R7 K28 R7
- 0x001C0F1D, // 005E ADD R7 R7 K29
- 0x60200008, // 005F GETGBL R8 G8
- 0x5C240800, // 0060 MOVE R9 R4
- 0x7C200200, // 0061 CALL R8 1
- 0x001C0E08, // 0062 ADD R7 R7 R8
- 0x5820001E, // 0063 LDCONST R8 K30
- 0x7C140600, // 0064 CALL R5 3
- 0x70020000, // 0065 JMP #0067
- 0xB0080000, // 0066 RAISE 2 R0 R0
- 0x880C0106, // 0067 GETMBR R3 R0 K6
- 0x4C100000, // 0068 LDNIL R4
- 0x1C0C0604, // 0069 EQ R3 R3 R4
- 0x780E000A, // 006A JMPF R3 #0076
- 0x8C0C031F, // 006B GETMET R3 R1 K31
- 0x5814001E, // 006C LDCONST R5 K30
- 0x7C0C0400, // 006D CALL R3 2
- 0x8C0C0720, // 006E GETMET R3 R3 K32
- 0x58140021, // 006F LDCONST R5 K33
- 0x5818001E, // 0070 LDCONST R6 K30
- 0x7C0C0600, // 0071 CALL R3 3
- 0x54120FFE, // 0072 LDINT R4 4095
- 0x2C0C0604, // 0073 AND R3 R3 R4
- 0x90020C03, // 0074 SETMBR R0 K6 R3
- 0x50080200, // 0075 LDBOOL R2 1 0
- 0x880C0109, // 0076 GETMBR R3 R0 K9
- 0x4C100000, // 0077 LDNIL R4
- 0x1C0C0604, // 0078 EQ R3 R3 R4
- 0x780E0003, // 0079 JMPF R3 #007E
- 0x8C0C0122, // 007A GETMET R3 R0 K34
- 0x7C0C0200, // 007B CALL R3 1
- 0x90021203, // 007C SETMBR R0 K9 R3
- 0x50080200, // 007D LDBOOL R2 1 0
- 0x780A0001, // 007E JMPF R2 #0081
- 0x8C0C0123, // 007F GETMET R3 R0 K35
- 0x7C0C0200, // 0080 CALL R3 1
- 0x80000000, // 0081 RET 0
+ ( &(const binstruction[24]) { /* code */
+ 0x58100006, // 0000 LDCONST R4 K6
+ 0x88140724, // 0001 GETMBR R5 R3 K36
+ 0x6018000C, // 0002 GETGBL R6 G12
+ 0x881C0112, // 0003 GETMBR R7 R0 K18
+ 0x7C180200, // 0004 CALL R6 1
+ 0x14180806, // 0005 LT R6 R4 R6
+ 0x781A000C, // 0006 JMPF R6 #0014
+ 0x88180112, // 0007 GETMBR R6 R0 K18
+ 0x94180C04, // 0008 GETIDX R6 R6 R4
+ 0x881C0D24, // 0009 GETMBR R7 R6 K36
+ 0x1C1C0E05, // 000A EQ R7 R7 R5
+ 0x781E0005, // 000B JMPF R7 #0012
+ 0x8C1C0DB7, // 000C GETMET R7 R6 K183
+ 0x5C240200, // 000D MOVE R9 R1
+ 0x5C280400, // 000E MOVE R10 R2
+ 0x5C2C0600, // 000F MOVE R11 R3
+ 0x7C1C0800, // 0010 CALL R7 4
+ 0x80040E00, // 0011 RET 1 R7
+ 0x00100914, // 0012 ADD R4 R4 K20
+ 0x7001FFED, // 0013 JMP #0002
+ 0xB81A5200, // 0014 GETNGBL R6 K41
+ 0x88180D2A, // 0015 GETMBR R6 R6 K42
+ 0x900E5006, // 0016 SETMBR R3 K40 R6
+ 0x80000000, // 0017 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: read_sensors_scheduler
+********************************************************************/
+be_local_closure(class_Matter_Device_read_sensors_scheduler, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(read_sensors_scheduler),
+ &be_const_str_solidified,
+ ( &(const binstruction[21]) { /* code */
+ 0x88040148, // 0000 GETMBR R1 R0 K72
+ 0x4C080000, // 0001 LDNIL R2
+ 0x1C040202, // 0002 EQ R1 R1 R2
+ 0x78060000, // 0003 JMPF R1 #0005
+ 0x80000200, // 0004 RET 0
+ 0x88040149, // 0005 GETMBR R1 R0 K73
+ 0x1C040306, // 0006 EQ R1 R1 K6
+ 0x74060004, // 0007 JMPT R1 #000D
+ 0xB8067400, // 0008 GETNGBL R1 K58
+ 0x8C0403B8, // 0009 GETMET R1 R1 K184
+ 0x880C0149, // 000A GETMBR R3 R0 K73
+ 0x7C040400, // 000B CALL R1 2
+ 0x78060006, // 000C JMPF R1 #0014
+ 0x8C0401B9, // 000D GETMET R1 R0 K185
+ 0x7C040200, // 000E CALL R1 1
+ 0xB8067400, // 000F GETNGBL R1 K58
+ 0x8C0403BA, // 0010 GETMET R1 R1 K186
+ 0x880C0148, // 0011 GETMBR R3 R0 K72
+ 0x7C040400, // 0012 CALL R1 2
+ 0x90029201, // 0013 SETMBR R0 K73 R1
+ 0x80000000, // 0014 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: register_http_remote
+********************************************************************/
+be_local_closure(class_Matter_Device_register_http_remote, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(register_http_remote),
+ &be_const_str_solidified,
+ ( &(const binstruction[42]) { /* code */
+ 0x880C0176, // 0000 GETMBR R3 R0 K118
+ 0x4C100000, // 0001 LDNIL R4
+ 0x1C0C0604, // 0002 EQ R3 R3 R4
+ 0x780E0002, // 0003 JMPF R3 #0007
+ 0x600C0013, // 0004 GETGBL R3 G19
+ 0x7C0C0000, // 0005 CALL R3 0
+ 0x9002EC03, // 0006 SETMBR R0 K118 R3
+ 0x4C0C0000, // 0007 LDNIL R3
+ 0x88100176, // 0008 GETMBR R4 R0 K118
+ 0x8C100957, // 0009 GETMET R4 R4 K87
+ 0x5C180200, // 000A MOVE R6 R1
+ 0x7C100400, // 000B CALL R4 2
+ 0x78120009, // 000C JMPF R4 #0017
+ 0x88100176, // 000D GETMBR R4 R0 K118
+ 0x940C0801, // 000E GETIDX R3 R4 R1
+ 0x8C1407BB, // 000F GETMET R5 R3 K187
+ 0x7C140200, // 0010 CALL R5 1
+ 0x14140405, // 0011 LT R5 R2 R5
+ 0x78160002, // 0012 JMPF R5 #0016
+ 0x8C1407BC, // 0013 GETMET R5 R3 K188
+ 0x5C1C0400, // 0014 MOVE R7 R2
+ 0x7C140400, // 0015 CALL R5 2
+ 0x70020011, // 0016 JMP #0029
+ 0xB8125200, // 0017 GETNGBL R4 K41
+ 0x8C1009BD, // 0018 GETMET R4 R4 K189
+ 0x5C180000, // 0019 MOVE R6 R0
+ 0x5C1C0200, // 001A MOVE R7 R1
+ 0x5C200400, // 001B MOVE R8 R2
+ 0x7C100800, // 001C CALL R4 4
+ 0x5C0C0800, // 001D MOVE R3 R4
+ 0x88100115, // 001E GETMBR R4 R0 K21
+ 0x8C100957, // 001F GETMET R4 R4 K87
+ 0x5C180200, // 0020 MOVE R6 R1
+ 0x7C100400, // 0021 CALL R4 2
+ 0x78120003, // 0022 JMPF R4 #0027
+ 0x8C1007BE, // 0023 GETMET R4 R3 K190
+ 0x88180115, // 0024 GETMBR R6 R0 K21
+ 0x94180C01, // 0025 GETIDX R6 R6 R1
+ 0x7C100400, // 0026 CALL R4 2
+ 0x88100176, // 0027 GETMBR R4 R0 K118
+ 0x98100203, // 0028 SETIDX R4 R1 R3
+ 0x80040600, // 0029 RET 1 R3
})
)
);
@@ -4468,64 +2857,37 @@ be_local_closure(class_Matter_Device_load_param, /* name */
/********************************************************************
** Solidified function: MtrUpdate
********************************************************************/
-extern const bclass be_class_Matter_Device;
be_local_closure(class_Matter_Device_MtrUpdate, /* name */
be_nested_proto(
18, /* nstack */
5, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Device,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[25]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(resp_cmnd_str),
- /* K2 */ be_nested_str_weak(Invalid_X20JSON),
- /* K3 */ be_nested_str_weak(find_key_i),
- /* K4 */ be_nested_str_weak(Ep),
- /* K5 */ be_nested_str_weak(Name),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(Invalid_X20_X27Ep_X27_X20attribute),
- /* K8 */ be_nested_str_weak(find_plugin_by_endpoint),
- /* K9 */ be_nested_str_weak(remove),
- /* K10 */ be_nested_str_weak(find_plugin_by_friendly_name),
- /* K11 */ be_nested_str_weak(Invalid_X20Device),
- /* K12 */ be_nested_str_weak(VIRTUAL),
- /* K13 */ be_nested_str_weak(Device_X20is_X20not_X20virtual),
- /* K14 */ be_nested_str_weak(consolidate_update_commands),
- /* K15 */ be_nested_str_weak(keys),
- /* K16 */ be_nested_str_weak(find_list_i),
- /* K17 */ be_nested_str_weak(Invalid_X20attribute_X20_X27_X25s_X27),
- /* K18 */ be_nested_str_weak(stop_iteration),
- /* K19 */ be_nested_str_weak(update_virtual),
- /* K20 */ be_nested_str_weak(state_json),
- /* K21 */ be_nested_str_weak(_X7B_X22_X25s_X22_X3A_X25s_X7D),
- /* K22 */ be_nested_str_weak(resp_cmnd),
- /* K23 */ be_nested_str_weak(resp_cmnd_done),
- /* K24 */ be_nested_str_weak(Missing_X20_X27Device_X27_X20attribute),
- }),
+ &be_ktab_class_Matter_Device, /* shared constants */
be_str_weak(MtrUpdate),
&be_const_str_solidified,
( &(const binstruction[126]) { /* code */
0x4C140000, // 0000 LDNIL R5
0x1C140805, // 0001 EQ R5 R4 R5
0x78160004, // 0002 JMPF R5 #0008
- 0xB8160000, // 0003 GETNGBL R5 K0
- 0x8C140B01, // 0004 GETMET R5 R5 K1
- 0x581C0002, // 0005 LDCONST R7 K2
+ 0xB8167400, // 0003 GETNGBL R5 K58
+ 0x8C140BBF, // 0004 GETMET R5 R5 K191
+ 0x581C00C0, // 0005 LDCONST R7 K192
0x7C140400, // 0006 CALL R5 2
0x80040A00, // 0007 RET 1 R5
- 0xB8160000, // 0008 GETNGBL R5 K0
- 0x8C140B03, // 0009 GETMET R5 R5 K3
+ 0xB8167400, // 0008 GETNGBL R5 K58
+ 0x8C140BC1, // 0009 GETMET R5 R5 K193
0x5C1C0800, // 000A MOVE R7 R4
- 0x58200004, // 000B LDCONST R8 K4
+ 0x582000C2, // 000B LDCONST R8 K194
0x7C140600, // 000C CALL R5 3
- 0xB81A0000, // 000D GETNGBL R6 K0
- 0x8C180D03, // 000E GETMET R6 R6 K3
+ 0xB81A7400, // 000D GETNGBL R6 K58
+ 0x8C180DC1, // 000E GETMET R6 R6 K193
0x5C200800, // 000F MOVE R8 R4
- 0x58240005, // 0010 LDCONST R9 K5
+ 0x582400C3, // 0010 LDCONST R9 K195
0x7C180600, // 0011 CALL R6 3
0x74160000, // 0012 JMPT R5 #0014
0x781A0064, // 0013 JMPF R6 #0079
@@ -4536,67 +2898,67 @@ be_local_closure(class_Matter_Device_MtrUpdate, /* name */
0x7C200200, // 0018 CALL R8 1
0x18241106, // 0019 LE R9 R8 K6
0x78260004, // 001A JMPF R9 #0020
- 0xB8260000, // 001B GETNGBL R9 K0
- 0x8C241301, // 001C GETMET R9 R9 K1
- 0x582C0007, // 001D LDCONST R11 K7
+ 0xB8267400, // 001B GETNGBL R9 K58
+ 0x8C2413BF, // 001C GETMET R9 R9 K191
+ 0x582C00C4, // 001D LDCONST R11 K196
0x7C240400, // 001E CALL R9 2
0x80041200, // 001F RET 1 R9
- 0x8C240108, // 0020 GETMET R9 R0 K8
+ 0x8C240127, // 0020 GETMET R9 R0 K39
0x5C2C1000, // 0021 MOVE R11 R8
0x7C240400, // 0022 CALL R9 2
0x5C1C1200, // 0023 MOVE R7 R9
- 0x8C240909, // 0024 GETMET R9 R4 K9
+ 0x8C240953, // 0024 GETMET R9 R4 K83
0x5C2C0A00, // 0025 MOVE R11 R5
0x7C240400, // 0026 CALL R9 2
0x781A0009, // 0027 JMPF R6 #0032
0x4C200000, // 0028 LDNIL R8
0x1C200E08, // 0029 EQ R8 R7 R8
0x78220003, // 002A JMPF R8 #002F
- 0x8C20010A, // 002B GETMET R8 R0 K10
+ 0x8C20018B, // 002B GETMET R8 R0 K139
0x94280806, // 002C GETIDX R10 R4 R6
0x7C200400, // 002D CALL R8 2
0x5C1C1000, // 002E MOVE R7 R8
- 0x8C200909, // 002F GETMET R8 R4 K9
+ 0x8C200953, // 002F GETMET R8 R4 K83
0x5C280C00, // 0030 MOVE R10 R6
0x7C200400, // 0031 CALL R8 2
0x4C200000, // 0032 LDNIL R8
0x1C200E08, // 0033 EQ R8 R7 R8
0x78220004, // 0034 JMPF R8 #003A
- 0xB8220000, // 0035 GETNGBL R8 K0
- 0x8C201101, // 0036 GETMET R8 R8 K1
- 0x5828000B, // 0037 LDCONST R10 K11
+ 0xB8227400, // 0035 GETNGBL R8 K58
+ 0x8C2011BF, // 0036 GETMET R8 R8 K191
+ 0x582800C5, // 0037 LDCONST R10 K197
0x7C200400, // 0038 CALL R8 2
0x80041000, // 0039 RET 1 R8
- 0x88200F0C, // 003A GETMBR R8 R7 K12
+ 0x88200FC6, // 003A GETMBR R8 R7 K198
0x74220004, // 003B JMPT R8 #0041
- 0xB8220000, // 003C GETNGBL R8 K0
- 0x8C201101, // 003D GETMET R8 R8 K1
- 0x5828000D, // 003E LDCONST R10 K13
+ 0xB8227400, // 003C GETNGBL R8 K58
+ 0x8C2011BF, // 003D GETMET R8 R8 K191
+ 0x582800C7, // 003E LDCONST R10 K199
0x7C200400, // 003F CALL R8 2
0x80041000, // 0040 RET 1 R8
- 0x8C200F0E, // 0041 GETMET R8 R7 K14
+ 0x8C200FC8, // 0041 GETMET R8 R7 K200
0x7C200200, // 0042 CALL R8 1
0x60240013, // 0043 GETGBL R9 G19
0x7C240000, // 0044 CALL R9 0
0x60280010, // 0045 GETGBL R10 G16
- 0x8C2C090F, // 0046 GETMET R11 R4 K15
+ 0x8C2C0946, // 0046 GETMET R11 R4 K70
0x7C2C0200, // 0047 CALL R11 1
0x7C280200, // 0048 CALL R10 1
0xA8020016, // 0049 EXBLK 0 #0061
0x5C2C1400, // 004A MOVE R11 R10
0x7C2C0000, // 004B CALL R11 0
- 0xB8320000, // 004C GETNGBL R12 K0
- 0x8C301910, // 004D GETMET R12 R12 K16
+ 0xB8327400, // 004C GETNGBL R12 K58
+ 0x8C3019C9, // 004D GETMET R12 R12 K201
0x5C381000, // 004E MOVE R14 R8
0x5C3C1600, // 004F MOVE R15 R11
0x7C300600, // 0050 CALL R12 3
0x4C340000, // 0051 LDNIL R13
0x1C34180D, // 0052 EQ R13 R12 R13
0x78360008, // 0053 JMPF R13 #005D
- 0xB8360000, // 0054 GETNGBL R13 K0
- 0x8C341B01, // 0055 GETMET R13 R13 K1
+ 0xB8367400, // 0054 GETNGBL R13 K58
+ 0x8C341BBF, // 0055 GETMET R13 R13 K191
0x603C0018, // 0056 GETGBL R15 G24
- 0x58400011, // 0057 LDCONST R16 K17
+ 0x584000CA, // 0057 LDCONST R16 K202
0x5C441600, // 0058 MOVE R17 R11
0x7C3C0400, // 0059 CALL R15 2
0x7C340400, // 005A CALL R13 2
@@ -4606,33 +2968,33 @@ be_local_closure(class_Matter_Device_MtrUpdate, /* name */
0x9438080B, // 005E GETIDX R14 R4 R11
0x98241A0E, // 005F SETIDX R9 R13 R14
0x7001FFE8, // 0060 JMP #004A
- 0x58280012, // 0061 LDCONST R10 K18
+ 0x58280011, // 0061 LDCONST R10 K17
0xAC280200, // 0062 CATCH R10 1 0
0xB0080000, // 0063 RAISE 2 R0 R0
- 0x8C280F13, // 0064 GETMET R10 R7 K19
+ 0x8C280FCB, // 0064 GETMET R10 R7 K203
0x5C301200, // 0065 MOVE R12 R9
0x7C280400, // 0066 CALL R10 2
- 0x8C280F14, // 0067 GETMET R10 R7 K20
+ 0x8C280FCC, // 0067 GETMET R10 R7 K204
0x7C280200, // 0068 CALL R10 1
0x782A000A, // 0069 JMPF R10 #0075
0x602C0018, // 006A GETGBL R11 G24
- 0x58300015, // 006B LDCONST R12 K21
+ 0x583000CD, // 006B LDCONST R12 K205
0x5C340200, // 006C MOVE R13 R1
0x5C381400, // 006D MOVE R14 R10
0x7C2C0600, // 006E CALL R11 3
- 0xB8320000, // 006F GETNGBL R12 K0
- 0x8C301916, // 0070 GETMET R12 R12 K22
+ 0xB8327400, // 006F GETNGBL R12 K58
+ 0x8C3019CE, // 0070 GETMET R12 R12 K206
0x5C381600, // 0071 MOVE R14 R11
0x7C300400, // 0072 CALL R12 2
0x80041800, // 0073 RET 1 R12
0x70020003, // 0074 JMP #0079
- 0xB82E0000, // 0075 GETNGBL R11 K0
- 0x8C2C1717, // 0076 GETMET R11 R11 K23
+ 0xB82E7400, // 0075 GETNGBL R11 K58
+ 0x8C2C178C, // 0076 GETMET R11 R11 K140
0x7C2C0200, // 0077 CALL R11 1
0x80041600, // 0078 RET 1 R11
- 0xB81E0000, // 0079 GETNGBL R7 K0
- 0x8C1C0F01, // 007A GETMET R7 R7 K1
- 0x58240018, // 007B LDCONST R9 K24
+ 0xB81E7400, // 0079 GETNGBL R7 K58
+ 0x8C1C0FBF, // 007A GETMET R7 R7 K191
+ 0x582400CF, // 007B LDCONST R9 K207
0x7C1C0400, // 007C CALL R7 2
0x80000000, // 007D RET 0
})
@@ -4642,487 +3004,42 @@ be_local_closure(class_Matter_Device_MtrUpdate, /* name */
/********************************************************************
-** Solidified function: start_basic_commissioning
+** Solidified function: MtrInfo_one
********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_start_basic_commissioning, /* name */
+be_local_closure(class_Matter_Device_MtrInfo_one, /* name */
be_nested_proto(
- 13, /* nstack */
- 8, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 3]) {
- be_nested_proto(
- 4, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(mdns_announce_PASE),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(remove_rule),
- /* K3 */ be_nested_str_weak(Wifi_X23Connected),
- }),
- be_str_weak(_anonymous_),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x7C000200, // 0002 CALL R0 1
- 0xB8020200, // 0003 GETNGBL R0 K1
- 0x8C000102, // 0004 GETMET R0 R0 K2
- 0x58080003, // 0005 LDCONST R2 K3
- 0x580C0000, // 0006 LDCONST R3 K0
- 0x7C000600, // 0007 CALL R0 3
- 0x80000000, // 0008 RET 0
- })
- ),
- be_nested_proto(
- 4, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(mdns_announce_PASE),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(remove_rule),
- /* K3 */ be_nested_str_weak(Eth_X23Connected),
- }),
- be_str_weak(_anonymous_),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x7C000200, // 0002 CALL R0 1
- 0xB8020200, // 0003 GETNGBL R0 K1
- 0x8C000102, // 0004 GETMET R0 R0 K2
- 0x58080003, // 0005 LDCONST R2 K3
- 0x580C0000, // 0006 LDCONST R3 K0
- 0x7C000600, // 0007 CALL R0 3
- 0x80000000, // 0008 RET 0
- })
- ),
- &be_class_Matter_Device,
- }),
- 1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
- /* K0 */ be_nested_str_weak(commissioning_open),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(millis),
- /* K3 */ be_nested_str_weak(commissioning_iterations),
- /* K4 */ be_nested_str_weak(commissioning_discriminator),
- /* K5 */ be_nested_str_weak(commissioning_salt),
- /* K6 */ be_nested_str_weak(commissioning_w0),
- /* K7 */ be_nested_str_weak(commissioning_L),
- /* K8 */ be_nested_str_weak(commissioning_admin_fabric),
- /* K9 */ be_nested_str_weak(wifi),
- /* K10 */ be_nested_str_weak(up),
- /* K11 */ be_nested_str_weak(eth),
- /* K12 */ be_nested_str_weak(mdns_announce_PASE),
- /* K13 */ be_nested_str_weak(add_rule),
- /* K14 */ be_nested_str_weak(Wifi_X23Connected),
- /* K15 */ be_nested_str_weak(Eth_X23Connected),
- }),
- be_str_weak(start_basic_commissioning),
- &be_const_str_solidified,
- ( &(const binstruction[40]) { /* code */
- 0xB8220200, // 0000 GETNGBL R8 K1
- 0x8C201102, // 0001 GETMET R8 R8 K2
- 0x7C200200, // 0002 CALL R8 1
- 0x542603E7, // 0003 LDINT R9 1000
- 0x08240209, // 0004 MUL R9 R1 R9
- 0x00201009, // 0005 ADD R8 R8 R9
- 0x90020008, // 0006 SETMBR R0 K0 R8
- 0x90020602, // 0007 SETMBR R0 K3 R2
- 0x90020803, // 0008 SETMBR R0 K4 R3
- 0x90020A04, // 0009 SETMBR R0 K5 R4
- 0x90020C05, // 000A SETMBR R0 K6 R5
- 0x90020E06, // 000B SETMBR R0 K7 R6
- 0x90021007, // 000C SETMBR R0 K8 R7
- 0xB8220200, // 000D GETNGBL R8 K1
- 0x8C201109, // 000E GETMET R8 R8 K9
- 0x7C200200, // 000F CALL R8 1
- 0x9420110A, // 0010 GETIDX R8 R8 K10
- 0x74220004, // 0011 JMPT R8 #0017
- 0xB8220200, // 0012 GETNGBL R8 K1
- 0x8C20110B, // 0013 GETMET R8 R8 K11
- 0x7C200200, // 0014 CALL R8 1
- 0x9420110A, // 0015 GETIDX R8 R8 K10
- 0x78220002, // 0016 JMPF R8 #001A
- 0x8C20010C, // 0017 GETMET R8 R0 K12
- 0x7C200200, // 0018 CALL R8 1
- 0x7002000B, // 0019 JMP #0026
- 0xB8220200, // 001A GETNGBL R8 K1
- 0x8C20110D, // 001B GETMET R8 R8 K13
- 0x5828000E, // 001C LDCONST R10 K14
- 0x842C0000, // 001D CLOSURE R11 P0
- 0x5830000C, // 001E LDCONST R12 K12
- 0x7C200800, // 001F CALL R8 4
- 0xB8220200, // 0020 GETNGBL R8 K1
- 0x8C20110D, // 0021 GETMET R8 R8 K13
- 0x5828000F, // 0022 LDCONST R10 K15
- 0x842C0001, // 0023 CLOSURE R11 P1
- 0x5830000C, // 0024 LDCONST R12 K12
- 0x7C200800, // 0025 CALL R8 4
- 0xA0000000, // 0026 CLOSE R0
- 0x80000000, // 0027 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: received_ack
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_received_ack, /* name */
- be_nested_proto(
- 5, /* nstack */
+ 9, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Device,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(udp_server),
- /* K1 */ be_nested_str_weak(received_ack),
- }),
- be_str_weak(received_ack),
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(MtrInfo_one),
&be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100200, // 0002 MOVE R4 R1
- 0x7C080400, // 0003 CALL R2 2
- 0x80040400, // 0004 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: mdns_remove_op_discovery
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_mdns_remove_op_discovery, /* name */
- be_nested_proto(
- 12, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[23]) { /* constants */
- /* K0 */ be_nested_str_weak(mdns),
- /* K1 */ be_nested_str_weak(get_device_id),
- /* K2 */ be_nested_str_weak(copy),
- /* K3 */ be_nested_str_weak(reverse),
- /* K4 */ be_nested_str_weak(get_fabric_compressed),
- /* K5 */ be_nested_str_weak(tohex),
- /* K6 */ be_nested_str_weak(_X2D),
- /* K7 */ be_nested_str_weak(tasmota),
- /* K8 */ be_nested_str_weak(eth),
- /* K9 */ be_nested_str_weak(find),
- /* K10 */ be_nested_str_weak(up),
- /* K11 */ be_nested_str_weak(log),
- /* K12 */ be_nested_str_weak(MTR_X3A_X20remove_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27),
- /* K13 */ be_const_int(3),
- /* K14 */ be_nested_str_weak(remove_service),
- /* K15 */ be_nested_str_weak(_matter),
- /* K16 */ be_nested_str_weak(_tcp),
- /* K17 */ be_nested_str_weak(hostname_eth),
- /* K18 */ be_nested_str_weak(wifi),
- /* K19 */ be_nested_str_weak(hostname_wifi),
- /* K20 */ be_nested_str_weak(MTR_X3A_X20Exception),
- /* K21 */ be_nested_str_weak(_X7C),
- /* K22 */ be_const_int(2),
- }),
- be_str_weak(mdns_remove_op_discovery),
- &be_const_str_solidified,
- ( &(const binstruction[80]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0xA802003B, // 0001 EXBLK 0 #003E
- 0x8C0C0301, // 0002 GETMET R3 R1 K1
- 0x7C0C0200, // 0003 CALL R3 1
- 0x8C0C0702, // 0004 GETMET R3 R3 K2
- 0x7C0C0200, // 0005 CALL R3 1
- 0x8C0C0703, // 0006 GETMET R3 R3 K3
- 0x7C0C0200, // 0007 CALL R3 1
- 0x8C100304, // 0008 GETMET R4 R1 K4
- 0x7C100200, // 0009 CALL R4 1
- 0x8C140905, // 000A GETMET R5 R4 K5
- 0x7C140200, // 000B CALL R5 1
- 0x00140B06, // 000C ADD R5 R5 K6
- 0x8C180705, // 000D GETMET R6 R3 K5
- 0x7C180200, // 000E CALL R6 1
- 0x00140A06, // 000F ADD R5 R5 R6
- 0xB81A0E00, // 0010 GETNGBL R6 K7
- 0x8C180D08, // 0011 GETMET R6 R6 K8
- 0x7C180200, // 0012 CALL R6 1
- 0x8C180D09, // 0013 GETMET R6 R6 K9
- 0x5820000A, // 0014 LDCONST R8 K10
- 0x7C180400, // 0015 CALL R6 2
- 0x781A000E, // 0016 JMPF R6 #0026
- 0xB81A0E00, // 0017 GETNGBL R6 K7
- 0x8C180D0B, // 0018 GETMET R6 R6 K11
- 0x60200018, // 0019 GETGBL R8 G24
- 0x5824000C, // 001A LDCONST R9 K12
- 0x58280008, // 001B LDCONST R10 K8
- 0x5C2C0A00, // 001C MOVE R11 R5
- 0x7C200600, // 001D CALL R8 3
- 0x5824000D, // 001E LDCONST R9 K13
- 0x7C180600, // 001F CALL R6 3
- 0x8C18050E, // 0020 GETMET R6 R2 K14
- 0x5820000F, // 0021 LDCONST R8 K15
- 0x58240010, // 0022 LDCONST R9 K16
- 0x5C280A00, // 0023 MOVE R10 R5
- 0x882C0111, // 0024 GETMBR R11 R0 K17
- 0x7C180A00, // 0025 CALL R6 5
- 0xB81A0E00, // 0026 GETNGBL R6 K7
- 0x8C180D12, // 0027 GETMET R6 R6 K18
- 0x7C180200, // 0028 CALL R6 1
- 0x8C180D09, // 0029 GETMET R6 R6 K9
- 0x5820000A, // 002A LDCONST R8 K10
- 0x7C180400, // 002B CALL R6 2
- 0x781A000E, // 002C JMPF R6 #003C
- 0xB81A0E00, // 002D GETNGBL R6 K7
- 0x8C180D0B, // 002E GETMET R6 R6 K11
- 0x60200018, // 002F GETGBL R8 G24
- 0x5824000C, // 0030 LDCONST R9 K12
- 0x58280012, // 0031 LDCONST R10 K18
- 0x5C2C0A00, // 0032 MOVE R11 R5
- 0x7C200600, // 0033 CALL R8 3
- 0x5824000D, // 0034 LDCONST R9 K13
- 0x7C180600, // 0035 CALL R6 3
- 0x8C18050E, // 0036 GETMET R6 R2 K14
- 0x5820000F, // 0037 LDCONST R8 K15
- 0x58240010, // 0038 LDCONST R9 K16
- 0x5C280A00, // 0039 MOVE R10 R5
- 0x882C0113, // 003A GETMBR R11 R0 K19
- 0x7C180A00, // 003B CALL R6 5
- 0xA8040001, // 003C EXBLK 1 1
- 0x70020010, // 003D JMP #004F
- 0xAC0C0002, // 003E CATCH R3 0 2
- 0x7002000D, // 003F JMP #004E
- 0xB8160E00, // 0040 GETNGBL R5 K7
- 0x8C140B0B, // 0041 GETMET R5 R5 K11
- 0x601C0008, // 0042 GETGBL R7 G8
- 0x5C200600, // 0043 MOVE R8 R3
- 0x7C1C0200, // 0044 CALL R7 1
- 0x001E2807, // 0045 ADD R7 K20 R7
- 0x001C0F15, // 0046 ADD R7 R7 K21
- 0x60200008, // 0047 GETGBL R8 G8
- 0x5C240800, // 0048 MOVE R9 R4
- 0x7C200200, // 0049 CALL R8 1
- 0x001C0E08, // 004A ADD R7 R7 R8
- 0x58200016, // 004B LDCONST R8 K22
- 0x7C140600, // 004C CALL R5 3
- 0x70020000, // 004D JMP #004F
- 0xB0080000, // 004E RAISE 2 R0 R0
- 0x80000000, // 004F RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: read_sensors_scheduler
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_read_sensors_scheduler, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(probe_sensor_time),
- /* K1 */ be_nested_str_weak(probe_sensor_timestamp),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(time_reached),
- /* K5 */ be_nested_str_weak(_trigger_read_sensors),
- /* K6 */ be_nested_str_weak(millis),
- }),
- be_str_weak(read_sensors_scheduler),
- &be_const_str_solidified,
- ( &(const binstruction[21]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x4C080000, // 0001 LDNIL R2
- 0x1C040202, // 0002 EQ R1 R1 R2
- 0x78060000, // 0003 JMPF R1 #0005
- 0x80000200, // 0004 RET 0
- 0x88040101, // 0005 GETMBR R1 R0 K1
- 0x1C040302, // 0006 EQ R1 R1 K2
- 0x74060004, // 0007 JMPT R1 #000D
- 0xB8060600, // 0008 GETNGBL R1 K3
- 0x8C040304, // 0009 GETMET R1 R1 K4
- 0x880C0101, // 000A GETMBR R3 R0 K1
- 0x7C040400, // 000B CALL R1 2
- 0x78060006, // 000C JMPF R1 #0014
- 0x8C040105, // 000D GETMET R1 R0 K5
- 0x7C040200, // 000E CALL R1 1
- 0xB8060600, // 000F GETNGBL R1 K3
- 0x8C040306, // 0010 GETMET R1 R1 K6
- 0x880C0100, // 0011 GETMBR R3 R0 K0
- 0x7C040400, // 0012 CALL R1 2
- 0x90020201, // 0013 SETMBR R0 K1 R1
- 0x80000000, // 0014 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start_operational_discovery_deferred
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_start_operational_discovery_deferred, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
- be_nested_proto(
- 3, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 2]) { /* upvals */
- be_local_const_upval(1, 0),
- be_local_const_upval(1, 1),
- }),
- 0, /* has sup protos */
- NULL,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(start_operational_discovery),
- }),
- be_str_weak(_X3Clambda_X3E),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x68080001, // 0002 GETUPV R2 U1
- 0x7C000400, // 0003 CALL R0 2
- 0x80040000, // 0004 RET 1 R0
- })
- ),
- &be_class_Matter_Device,
- }),
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(set_timer),
- /* K2 */ be_const_int(0),
- }),
- be_str_weak(start_operational_discovery_deferred),
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0xB80A0000, // 0000 GETNGBL R2 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x58100002, // 0002 LDCONST R4 K2
- 0x84140000, // 0003 CLOSURE R5 P0
- 0x7C080600, // 0004 CALL R2 3
- 0xA0000000, // 0005 CLOSE R0
- 0x80000000, // 0006 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: generate_random_passcode
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_generate_random_passcode, /* name */
- be_nested_proto(
- 7, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(random),
- /* K2 */ be_nested_str_weak(get),
- /* K3 */ be_const_int(0),
- /* K4 */ be_const_int(134217727),
- /* K5 */ be_const_int(99999998),
- /* K6 */ be_nested_str_weak(PASSCODE_INVALID),
- /* K7 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(generate_random_passcode),
- &be_const_str_solidified,
- ( &(const binstruction[35]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x4C080000, // 0001 LDNIL R2
- 0x500C0200, // 0002 LDBOOL R3 1 0
- 0x780E001D, // 0003 JMPF R3 #0022
- 0x8C0C0301, // 0004 GETMET R3 R1 K1
- 0x54160003, // 0005 LDINT R5 4
- 0x7C0C0400, // 0006 CALL R3 2
- 0x8C0C0702, // 0007 GETMET R3 R3 K2
- 0x58140003, // 0008 LDCONST R5 K3
- 0x541A0003, // 0009 LDINT R6 4
- 0x7C0C0600, // 000A CALL R3 3
- 0x2C0C0704, // 000B AND R3 R3 K4
- 0x5C080600, // 000C MOVE R2 R3
- 0x240C0505, // 000D GT R3 R2 K5
- 0x780E0000, // 000E JMPF R3 #0010
- 0x7001FFF1, // 000F JMP #0002
- 0x600C0010, // 0010 GETGBL R3 G16
- 0x88100106, // 0011 GETMBR R4 R0 K6
- 0x7C0C0200, // 0012 CALL R3 1
- 0xA8020005, // 0013 EXBLK 0 #001A
- 0x5C100600, // 0014 MOVE R4 R3
- 0x7C100000, // 0015 CALL R4 0
- 0x1C140404, // 0016 EQ R5 R2 R4
- 0x78160000, // 0017 JMPF R5 #0019
- 0x4C080000, // 0018 LDNIL R2
- 0x7001FFF9, // 0019 JMP #0014
- 0x580C0007, // 001A LDCONST R3 K7
- 0xAC0C0200, // 001B CATCH R3 1 0
- 0xB0080000, // 001C RAISE 2 R0 R0
- 0x4C0C0000, // 001D LDNIL R3
- 0x200C0403, // 001E NE R3 R2 R3
- 0x780E0000, // 001F JMPF R3 #0021
- 0x80040400, // 0020 RET 1 R2
- 0x7001FFDF, // 0021 JMP #0002
- 0x80000000, // 0022 RET 0
+ ( &(const binstruction[20]) { /* code */
+ 0x8C080127, // 0000 GETMET R2 R0 K39
+ 0x5C100200, // 0001 MOVE R4 R1
+ 0x7C080400, // 0002 CALL R2 2
+ 0x4C0C0000, // 0003 LDNIL R3
+ 0x1C0C0403, // 0004 EQ R3 R2 R3
+ 0x780E0000, // 0005 JMPF R3 #0007
+ 0x80000600, // 0006 RET 0
+ 0x8C0C05CC, // 0007 GETMET R3 R2 K204
+ 0x7C0C0200, // 0008 CALL R3 1
+ 0x780E0008, // 0009 JMPF R3 #0013
+ 0x60100018, // 000A GETGBL R4 G24
+ 0x581400D0, // 000B LDCONST R5 K208
+ 0x5C180600, // 000C MOVE R6 R3
+ 0x7C100400, // 000D CALL R4 2
+ 0xB8167400, // 000E GETNGBL R5 K58
+ 0x8C140BD1, // 000F GETMET R5 R5 K209
+ 0x5C1C0800, // 0010 MOVE R7 R4
+ 0x5820000D, // 0011 LDCONST R8 K13
+ 0x7C140600, // 0012 CALL R5 3
+ 0x80000000, // 0013 RET 0
})
)
);
@@ -5132,39 +3049,35 @@ be_local_closure(class_Matter_Device_generate_random_passcode, /* name */
/********************************************************************
** Solidified function: MtrJoin
********************************************************************/
-extern const bclass be_class_Matter_Device;
be_local_closure(class_Matter_Device_MtrJoin, /* name */
be_nested_proto(
8, /* nstack */
5, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Device,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(start_root_basic_commissioning),
- /* K1 */ be_nested_str_weak(stop_basic_commissioning),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(resp_cmnd_done),
- }),
+ &be_ktab_class_Matter_Device, /* shared constants */
be_str_weak(MtrJoin),
&be_const_str_solidified,
- ( &(const binstruction[13]) { /* code */
+ ( &(const binstruction[15]) { /* code */
0x60140009, // 0000 GETGBL R5 G9
0x5C180600, // 0001 MOVE R6 R3
0x7C140200, // 0002 CALL R5 1
- 0x78160002, // 0003 JMPF R5 #0007
- 0x8C180100, // 0004 GETMET R6 R0 K0
- 0x7C180200, // 0005 CALL R6 1
- 0x70020001, // 0006 JMP #0009
- 0x8C180101, // 0007 GETMET R6 R0 K1
- 0x7C180200, // 0008 CALL R6 1
- 0xB81A0400, // 0009 GETNGBL R6 K2
- 0x8C180D03, // 000A GETMET R6 R6 K3
- 0x7C180200, // 000B CALL R6 1
- 0x80000000, // 000C RET 0
+ 0x78160003, // 0003 JMPF R5 #0008
+ 0x88180109, // 0004 GETMBR R6 R0 K9
+ 0x8C180DD2, // 0005 GETMET R6 R6 K210
+ 0x7C180200, // 0006 CALL R6 1
+ 0x70020002, // 0007 JMP #000B
+ 0x88180109, // 0008 GETMBR R6 R0 K9
+ 0x8C180D0A, // 0009 GETMET R6 R6 K10
+ 0x7C180200, // 000A CALL R6 1
+ 0xB81A7400, // 000B GETNGBL R6 K58
+ 0x8C180D8C, // 000C GETMET R6 R6 K140
+ 0x7C180200, // 000D CALL R6 1
+ 0x80000000, // 000E RET 0
})
)
);
@@ -5172,945 +3085,31 @@ be_local_closure(class_Matter_Device_MtrJoin, /* name */
/********************************************************************
-** Solidified function: save_param
+** Solidified function: get_plugin_class_arg
********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_save_param, /* name */
+be_local_closure(class_Matter_Device_get_plugin_class_arg, /* name */
be_nested_proto(
- 10, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[30]) { /* constants */
- /* K0 */ be_nested_str_weak(json),
- /* K1 */ be_nested_str_weak(update_remotes_info),
- /* K2 */ be_nested_str_weak(_X7B_X22distinguish_X22_X3A_X25i_X2C_X22passcode_X22_X3A_X25i_X2C_X22ipv4only_X22_X3A_X25s_X2C_X22disable_bridge_mode_X22_X3A_X25s_X2C_X22nextep_X22_X3A_X25i),
- /* K3 */ be_nested_str_weak(root_discriminator),
- /* K4 */ be_nested_str_weak(root_passcode),
- /* K5 */ be_nested_str_weak(ipv4only),
- /* K6 */ be_nested_str_weak(true),
- /* K7 */ be_nested_str_weak(false),
- /* K8 */ be_nested_str_weak(disable_bridge_mode),
- /* K9 */ be_nested_str_weak(next_ep),
- /* K10 */ be_nested_str_weak(plugins_persist),
- /* K11 */ be_nested_str_weak(_X2C_X22config_X22_X3A),
- /* K12 */ be_nested_str_weak(dump),
- /* K13 */ be_nested_str_weak(plugins_config),
- /* K14 */ be_nested_str_weak(plugins_config_remotes),
- /* K15 */ be_const_int(0),
- /* K16 */ be_nested_str_weak(_X2C_X22remotes_X22_X3A),
- /* K17 */ be_nested_str_weak(_X7D),
- /* K18 */ be_nested_str_weak(FILENAME),
- /* K19 */ be_nested_str_weak(w),
- /* K20 */ be_nested_str_weak(write),
- /* K21 */ be_nested_str_weak(close),
- /* K22 */ be_nested_str_weak(tasmota),
- /* K23 */ be_nested_str_weak(log),
- /* K24 */ be_nested_str_weak(MTR_X3A_X20_X3DSaved_X20_X20_X20_X20_X20parameters_X25s),
- /* K25 */ be_nested_str_weak(_X20and_X20configuration),
- /* K26 */ be_nested_str_weak(),
- /* K27 */ be_const_int(2),
- /* K28 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A),
- /* K29 */ be_nested_str_weak(_X7C),
- }),
- be_str_weak(save_param),
- &be_const_str_solidified,
- ( &(const binstruction[82]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
- 0x7C080200, // 0002 CALL R2 1
- 0x60080018, // 0003 GETGBL R2 G24
- 0x580C0002, // 0004 LDCONST R3 K2
- 0x88100103, // 0005 GETMBR R4 R0 K3
- 0x88140104, // 0006 GETMBR R5 R0 K4
- 0x88180105, // 0007 GETMBR R6 R0 K5
- 0x781A0001, // 0008 JMPF R6 #000B
- 0x58180006, // 0009 LDCONST R6 K6
- 0x70020000, // 000A JMP #000C
- 0x58180007, // 000B LDCONST R6 K7
- 0x881C0108, // 000C GETMBR R7 R0 K8
- 0x781E0001, // 000D JMPF R7 #0010
- 0x581C0006, // 000E LDCONST R7 K6
- 0x70020000, // 000F JMP #0011
- 0x581C0007, // 0010 LDCONST R7 K7
- 0x88200109, // 0011 GETMBR R8 R0 K9
- 0x7C080C00, // 0012 CALL R2 6
- 0x880C010A, // 0013 GETMBR R3 R0 K10
- 0x780E000E, // 0014 JMPF R3 #0024
- 0x0008050B, // 0015 ADD R2 R2 K11
- 0x8C0C030C, // 0016 GETMET R3 R1 K12
- 0x8814010D, // 0017 GETMBR R5 R0 K13
- 0x7C0C0400, // 0018 CALL R3 2
- 0x00080403, // 0019 ADD R2 R2 R3
- 0x600C000C, // 001A GETGBL R3 G12
- 0x8810010E, // 001B GETMBR R4 R0 K14
- 0x7C0C0200, // 001C CALL R3 1
- 0x240C070F, // 001D GT R3 R3 K15
- 0x780E0004, // 001E JMPF R3 #0024
- 0x00080510, // 001F ADD R2 R2 K16
- 0x8C0C030C, // 0020 GETMET R3 R1 K12
- 0x8814010E, // 0021 GETMBR R5 R0 K14
- 0x7C0C0400, // 0022 CALL R3 2
- 0x00080403, // 0023 ADD R2 R2 R3
- 0x00080511, // 0024 ADD R2 R2 K17
- 0xA8020018, // 0025 EXBLK 0 #003F
- 0x600C0011, // 0026 GETGBL R3 G17
- 0x88100112, // 0027 GETMBR R4 R0 K18
- 0x58140013, // 0028 LDCONST R5 K19
- 0x7C0C0400, // 0029 CALL R3 2
- 0x8C100714, // 002A GETMET R4 R3 K20
- 0x5C180400, // 002B MOVE R6 R2
- 0x7C100400, // 002C CALL R4 2
- 0x8C100715, // 002D GETMET R4 R3 K21
- 0x7C100200, // 002E CALL R4 1
- 0xB8122C00, // 002F GETNGBL R4 K22
- 0x8C100917, // 0030 GETMET R4 R4 K23
- 0x60180018, // 0031 GETGBL R6 G24
- 0x581C0018, // 0032 LDCONST R7 K24
- 0x8820010A, // 0033 GETMBR R8 R0 K10
- 0x78220001, // 0034 JMPF R8 #0037
- 0x58200019, // 0035 LDCONST R8 K25
- 0x70020000, // 0036 JMP #0038
- 0x5820001A, // 0037 LDCONST R8 K26
- 0x7C180400, // 0038 CALL R6 2
- 0x581C001B, // 0039 LDCONST R7 K27
- 0x7C100600, // 003A CALL R4 3
- 0xA8040001, // 003B EXBLK 1 1
- 0x80040400, // 003C RET 1 R2
- 0xA8040001, // 003D EXBLK 1 1
- 0x70020011, // 003E JMP #0051
- 0xAC0C0002, // 003F CATCH R3 0 2
- 0x7002000E, // 0040 JMP #0050
- 0xB8162C00, // 0041 GETNGBL R5 K22
- 0x8C140B17, // 0042 GETMET R5 R5 K23
- 0x601C0008, // 0043 GETGBL R7 G8
- 0x5C200600, // 0044 MOVE R8 R3
- 0x7C1C0200, // 0045 CALL R7 1
- 0x001E3807, // 0046 ADD R7 K28 R7
- 0x001C0F1D, // 0047 ADD R7 R7 K29
- 0x60200008, // 0048 GETGBL R8 G8
- 0x5C240800, // 0049 MOVE R9 R4
- 0x7C200200, // 004A CALL R8 1
- 0x001C0E08, // 004B ADD R7 R7 R8
- 0x5820001B, // 004C LDCONST R8 K27
- 0x7C140600, // 004D CALL R5 3
- 0x80040400, // 004E RET 1 R2
- 0x70020000, // 004F JMP #0051
- 0xB0080000, // 0050 RAISE 2 R0 R0
- 0x80000000, // 0051 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: mdns_remove_op_discovery_all_fabrics
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics, /* name */
- be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(sessions),
- /* K1 */ be_nested_str_weak(active_fabrics),
- /* K2 */ be_nested_str_weak(get_device_id),
- /* K3 */ be_nested_str_weak(get_fabric_id),
- /* K4 */ be_nested_str_weak(mdns_remove_op_discovery),
- /* K5 */ be_nested_str_weak(stop_iteration),
- }),
- be_str_weak(mdns_remove_op_discovery_all_fabrics),
- &be_const_str_solidified,
- ( &(const binstruction[22]) { /* code */
- 0x60040010, // 0000 GETGBL R1 G16
- 0x88080100, // 0001 GETMBR R2 R0 K0
- 0x8C080501, // 0002 GETMET R2 R2 K1
- 0x7C080200, // 0003 CALL R2 1
- 0x7C040200, // 0004 CALL R1 1
- 0xA802000B, // 0005 EXBLK 0 #0012
- 0x5C080200, // 0006 MOVE R2 R1
- 0x7C080000, // 0007 CALL R2 0
- 0x8C0C0502, // 0008 GETMET R3 R2 K2
- 0x7C0C0200, // 0009 CALL R3 1
- 0x780E0005, // 000A JMPF R3 #0011
- 0x8C0C0503, // 000B GETMET R3 R2 K3
- 0x7C0C0200, // 000C CALL R3 1
- 0x780E0002, // 000D JMPF R3 #0011
- 0x8C0C0104, // 000E GETMET R3 R0 K4
- 0x5C140400, // 000F MOVE R5 R2
- 0x7C0C0400, // 0010 CALL R3 2
- 0x7001FFF3, // 0011 JMP #0006
- 0x58040005, // 0012 LDCONST R1 K5
- 0xAC040200, // 0013 CATCH R1 1 0
- 0xB0080000, // 0014 RAISE 2 R0 R0
- 0x80000000, // 0015 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_init, /* name */
- be_nested_proto(
- 7, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 3]) {
- be_nested_proto(
- 4, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(start),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(remove_rule),
- /* K3 */ be_nested_str_weak(Wifi_X23Connected),
- /* K4 */ be_nested_str_weak(matter_start),
- }),
- be_str_weak(_anonymous_),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x7C000200, // 0002 CALL R0 1
- 0xB8020200, // 0003 GETNGBL R0 K1
- 0x8C000102, // 0004 GETMET R0 R0 K2
- 0x58080003, // 0005 LDCONST R2 K3
- 0x580C0004, // 0006 LDCONST R3 K4
- 0x7C000600, // 0007 CALL R0 3
- 0x80000000, // 0008 RET 0
- })
- ),
- be_nested_proto(
- 4, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(start),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(remove_rule),
- /* K3 */ be_nested_str_weak(Eth_X23Connected),
- /* K4 */ be_nested_str_weak(matter_start),
- }),
- be_str_weak(_anonymous_),
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x7C000200, // 0002 CALL R0 1
- 0xB8020200, // 0003 GETNGBL R0 K1
- 0x8C000102, // 0004 GETMET R0 R0 K2
- 0x58080003, // 0005 LDCONST R2 K3
- 0x580C0004, // 0006 LDCONST R3 K4
- 0x7C000600, // 0007 CALL R0 3
- 0x80000000, // 0008 RET 0
- })
- ),
- &be_class_Matter_Device,
- }),
- 1, /* has constants */
- ( &(const bvalue[44]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(get_option),
- /* K3 */ be_nested_str_weak(matter),
- /* K4 */ be_nested_str_weak(MATTER_OPTION),
- /* K5 */ be_nested_str_weak(UI),
- /* K6 */ be_nested_str_weak(profiler),
- /* K7 */ be_nested_str_weak(Profiler),
- /* K8 */ be_nested_str_weak(started),
- /* K9 */ be_nested_str_weak(tick),
- /* K10 */ be_const_int(0),
- /* K11 */ be_nested_str_weak(plugins),
- /* K12 */ be_nested_str_weak(plugins_persist),
- /* K13 */ be_nested_str_weak(plugins_config_remotes),
- /* K14 */ be_nested_str_weak(vendorid),
- /* K15 */ be_nested_str_weak(VENDOR_ID),
- /* K16 */ be_nested_str_weak(productid),
- /* K17 */ be_nested_str_weak(PRODUCT_ID),
- /* K18 */ be_nested_str_weak(root_iterations),
- /* K19 */ be_nested_str_weak(PBKDF_ITERATIONS),
- /* K20 */ be_nested_str_weak(next_ep),
- /* K21 */ be_const_int(1),
- /* K22 */ be_nested_str_weak(root_salt),
- /* K23 */ be_nested_str_weak(random),
- /* K24 */ be_nested_str_weak(ipv4only),
- /* K25 */ be_nested_str_weak(disable_bridge_mode),
- /* K26 */ be_nested_str_weak(load_param),
- /* K27 */ be_nested_str_weak(sessions),
- /* K28 */ be_nested_str_weak(Session_Store),
- /* K29 */ be_nested_str_weak(load_fabrics),
- /* K30 */ be_nested_str_weak(message_handler),
- /* K31 */ be_nested_str_weak(MessageHandler),
- /* K32 */ be_nested_str_weak(ui),
- /* K33 */ be_nested_str_weak(wifi),
- /* K34 */ be_nested_str_weak(up),
- /* K35 */ be_nested_str_weak(eth),
- /* K36 */ be_nested_str_weak(start),
- /* K37 */ be_nested_str_weak(add_rule),
- /* K38 */ be_nested_str_weak(Wifi_X23Connected),
- /* K39 */ be_nested_str_weak(matter_start),
- /* K40 */ be_nested_str_weak(Eth_X23Connected),
- /* K41 */ be_nested_str_weak(_init_basic_commissioning),
- /* K42 */ be_nested_str_weak(add_driver),
- /* K43 */ be_nested_str_weak(register_commands),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[107]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xB80A0200, // 0001 GETNGBL R2 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
- 0xB8120600, // 0003 GETNGBL R4 K3
- 0x88100904, // 0004 GETMBR R4 R4 K4
- 0x7C080400, // 0005 CALL R2 2
- 0x740A0004, // 0006 JMPT R2 #000C
- 0xB80A0600, // 0007 GETNGBL R2 K3
- 0x8C080505, // 0008 GETMET R2 R2 K5
- 0x5C100000, // 0009 MOVE R4 R0
- 0x7C080400, // 000A CALL R2 2
- 0x80000400, // 000B RET 0
- 0xB80A0600, // 000C GETNGBL R2 K3
- 0xB80E0600, // 000D GETNGBL R3 K3
- 0x8C0C0707, // 000E GETMET R3 R3 K7
- 0x7C0C0200, // 000F CALL R3 1
- 0x900A0C03, // 0010 SETMBR R2 K6 R3
- 0x50080000, // 0011 LDBOOL R2 0 0
- 0x90021002, // 0012 SETMBR R0 K8 R2
- 0x9002130A, // 0013 SETMBR R0 K9 K10
- 0x60080012, // 0014 GETGBL R2 G18
- 0x7C080000, // 0015 CALL R2 0
- 0x90021602, // 0016 SETMBR R0 K11 R2
- 0x50080000, // 0017 LDBOOL R2 0 0
- 0x90021802, // 0018 SETMBR R0 K12 R2
- 0x60080013, // 0019 GETGBL R2 G19
- 0x7C080000, // 001A CALL R2 0
- 0x90021A02, // 001B SETMBR R0 K13 R2
- 0x8808010F, // 001C GETMBR R2 R0 K15
- 0x90021C02, // 001D SETMBR R0 K14 R2
- 0x88080111, // 001E GETMBR R2 R0 K17
- 0x90022002, // 001F SETMBR R0 K16 R2
- 0x88080113, // 0020 GETMBR R2 R0 K19
- 0x90022402, // 0021 SETMBR R0 K18 R2
- 0x90022915, // 0022 SETMBR R0 K20 K21
- 0x8C080317, // 0023 GETMET R2 R1 K23
- 0x5412000F, // 0024 LDINT R4 16
- 0x7C080400, // 0025 CALL R2 2
- 0x90022C02, // 0026 SETMBR R0 K22 R2
- 0x50080000, // 0027 LDBOOL R2 0 0
- 0x90023002, // 0028 SETMBR R0 K24 R2
- 0x50080000, // 0029 LDBOOL R2 0 0
- 0x90023202, // 002A SETMBR R0 K25 R2
- 0x8C08011A, // 002B GETMET R2 R0 K26
- 0x7C080200, // 002C CALL R2 1
- 0xB80A0600, // 002D GETNGBL R2 K3
- 0x8C08051C, // 002E GETMET R2 R2 K28
- 0x5C100000, // 002F MOVE R4 R0
- 0x7C080400, // 0030 CALL R2 2
- 0x90023602, // 0031 SETMBR R0 K27 R2
- 0x8808011B, // 0032 GETMBR R2 R0 K27
- 0x8C08051D, // 0033 GETMET R2 R2 K29
- 0x7C080200, // 0034 CALL R2 1
- 0xB80A0600, // 0035 GETNGBL R2 K3
- 0x8C08051F, // 0036 GETMET R2 R2 K31
- 0x5C100000, // 0037 MOVE R4 R0
- 0x7C080400, // 0038 CALL R2 2
- 0x90023C02, // 0039 SETMBR R0 K30 R2
- 0xB80A0600, // 003A GETNGBL R2 K3
- 0x8C080505, // 003B GETMET R2 R2 K5
- 0x5C100000, // 003C MOVE R4 R0
- 0x7C080400, // 003D CALL R2 2
- 0x90024002, // 003E SETMBR R0 K32 R2
- 0xB80A0200, // 003F GETNGBL R2 K1
- 0x8C080521, // 0040 GETMET R2 R2 K33
- 0x7C080200, // 0041 CALL R2 1
- 0x94080522, // 0042 GETIDX R2 R2 K34
- 0x740A0004, // 0043 JMPT R2 #0049
- 0xB80A0200, // 0044 GETNGBL R2 K1
- 0x8C080523, // 0045 GETMET R2 R2 K35
- 0x7C080200, // 0046 CALL R2 1
- 0x94080522, // 0047 GETIDX R2 R2 K34
- 0x780A0001, // 0048 JMPF R2 #004B
- 0x8C080124, // 0049 GETMET R2 R0 K36
- 0x7C080200, // 004A CALL R2 1
- 0xB80A0200, // 004B GETNGBL R2 K1
- 0x8C080521, // 004C GETMET R2 R2 K33
- 0x7C080200, // 004D CALL R2 1
- 0x94080522, // 004E GETIDX R2 R2 K34
- 0x740A0005, // 004F JMPT R2 #0056
- 0xB80A0200, // 0050 GETNGBL R2 K1
- 0x8C080525, // 0051 GETMET R2 R2 K37
- 0x58100026, // 0052 LDCONST R4 K38
- 0x84140000, // 0053 CLOSURE R5 P0
- 0x58180027, // 0054 LDCONST R6 K39
- 0x7C080800, // 0055 CALL R2 4
- 0xB80A0200, // 0056 GETNGBL R2 K1
- 0x8C080523, // 0057 GETMET R2 R2 K35
- 0x7C080200, // 0058 CALL R2 1
- 0x94080522, // 0059 GETIDX R2 R2 K34
- 0x740A0005, // 005A JMPT R2 #0061
- 0xB80A0200, // 005B GETNGBL R2 K1
- 0x8C080525, // 005C GETMET R2 R2 K37
- 0x58100028, // 005D LDCONST R4 K40
- 0x84140001, // 005E CLOSURE R5 P1
- 0x58180027, // 005F LDCONST R6 K39
- 0x7C080800, // 0060 CALL R2 4
- 0x8C080129, // 0061 GETMET R2 R0 K41
- 0x7C080200, // 0062 CALL R2 1
- 0xB80A0200, // 0063 GETNGBL R2 K1
- 0x8C08052A, // 0064 GETMET R2 R2 K42
- 0x5C100000, // 0065 MOVE R4 R0
- 0x7C080400, // 0066 CALL R2 2
- 0x8C08012B, // 0067 GETMET R2 R0 K43
- 0x7C080200, // 0068 CALL R2 1
- 0xA0000000, // 0069 CLOSE R0
- 0x80000000, // 006A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: start_mdns_announce_hostnames
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_start_mdns_announce_hostnames, /* name */
- be_nested_proto(
- 6, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 1, /* has sup protos */
- ( &(const struct bproto*[ 3]) {
- be_nested_proto(
- 4, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_mdns_announce_hostname),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(remove_rule),
- /* K3 */ be_nested_str_weak(Wifi_X23Connected),
- /* K4 */ be_nested_str_weak(matter_mdns_host),
- }),
- be_str_weak(_anonymous_),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x50080000, // 0002 LDBOOL R2 0 0
- 0x7C000400, // 0003 CALL R0 2
- 0xB8020200, // 0004 GETNGBL R0 K1
- 0x8C000102, // 0005 GETMET R0 R0 K2
- 0x58080003, // 0006 LDCONST R2 K3
- 0x580C0004, // 0007 LDCONST R3 K4
- 0x7C000600, // 0008 CALL R0 3
- 0x80000000, // 0009 RET 0
- })
- ),
- be_nested_proto(
- 4, /* nstack */
- 0, /* argc */
- 0, /* varg */
- 1, /* has upvals */
- ( &(const bupvaldesc[ 1]) { /* upvals */
- be_local_const_upval(1, 0),
- }),
- 0, /* has sup protos */
- NULL,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_mdns_announce_hostname),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(remove_rule),
- /* K3 */ be_nested_str_weak(Eth_X23Connected),
- /* K4 */ be_nested_str_weak(matter_mdns_host),
- }),
- be_str_weak(_anonymous_),
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x68000000, // 0000 GETUPV R0 U0
- 0x8C000100, // 0001 GETMET R0 R0 K0
- 0x50080200, // 0002 LDBOOL R2 1 0
- 0x7C000400, // 0003 CALL R0 2
- 0xB8020200, // 0004 GETNGBL R0 K1
- 0x8C000102, // 0005 GETMET R0 R0 K2
- 0x58080003, // 0006 LDCONST R2 K3
- 0x580C0004, // 0007 LDCONST R3 K4
- 0x7C000600, // 0008 CALL R0 3
- 0x80000000, // 0009 RET 0
- })
- ),
- &be_class_Matter_Device,
- }),
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(wifi),
- /* K2 */ be_nested_str_weak(up),
- /* K3 */ be_nested_str_weak(_mdns_announce_hostname),
- /* K4 */ be_nested_str_weak(add_rule),
- /* K5 */ be_nested_str_weak(Wifi_X23Connected),
- /* K6 */ be_nested_str_weak(matter_mdns_host),
- /* K7 */ be_nested_str_weak(eth),
- /* K8 */ be_nested_str_weak(Eth_X23Connected),
- }),
- be_str_weak(start_mdns_announce_hostnames),
- &be_const_str_solidified,
- ( &(const binstruction[32]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x94040302, // 0003 GETIDX R1 R1 K2
- 0x78060003, // 0004 JMPF R1 #0009
- 0x8C040103, // 0005 GETMET R1 R0 K3
- 0x500C0000, // 0006 LDBOOL R3 0 0
- 0x7C040400, // 0007 CALL R1 2
- 0x70020005, // 0008 JMP #000F
- 0xB8060000, // 0009 GETNGBL R1 K0
- 0x8C040304, // 000A GETMET R1 R1 K4
- 0x580C0005, // 000B LDCONST R3 K5
- 0x84100000, // 000C CLOSURE R4 P0
- 0x58140006, // 000D LDCONST R5 K6
- 0x7C040800, // 000E CALL R1 4
- 0xB8060000, // 000F GETNGBL R1 K0
- 0x8C040307, // 0010 GETMET R1 R1 K7
- 0x7C040200, // 0011 CALL R1 1
- 0x94040302, // 0012 GETIDX R1 R1 K2
- 0x78060003, // 0013 JMPF R1 #0018
- 0x8C040103, // 0014 GETMET R1 R0 K3
- 0x500C0200, // 0015 LDBOOL R3 1 0
- 0x7C040400, // 0016 CALL R1 2
- 0x70020005, // 0017 JMP #001E
- 0xB8060000, // 0018 GETNGBL R1 K0
- 0x8C040304, // 0019 GETMET R1 R1 K4
- 0x580C0008, // 001A LDCONST R3 K8
- 0x84100001, // 001B CLOSURE R4 P1
- 0x58140006, // 001C LDCONST R5 K6
- 0x7C040800, // 001D CALL R1 4
- 0xA0000000, // 001E CLOSE R0
- 0x80000000, // 001F RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: signal_endpoints_changed
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_signal_endpoints_changed, /* name */
- be_nested_proto(
- 7, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(attribute_updated),
- /* K1 */ be_const_int(0),
- /* K2 */ be_const_int(3),
- /* K3 */ be_nested_str_weak(matter),
- /* K4 */ be_nested_str_weak(AGGREGATOR_ENDPOINT),
- }),
- be_str_weak(signal_endpoints_changed),
- &be_const_str_solidified,
- ( &(const binstruction[14]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x580C0001, // 0001 LDCONST R3 K1
- 0x5412001C, // 0002 LDINT R4 29
- 0x58140002, // 0003 LDCONST R5 K2
- 0x50180000, // 0004 LDBOOL R6 0 0
- 0x7C040A00, // 0005 CALL R1 5
- 0x8C040100, // 0006 GETMET R1 R0 K0
- 0xB80E0600, // 0007 GETNGBL R3 K3
- 0x880C0704, // 0008 GETMBR R3 R3 K4
- 0x5412001C, // 0009 LDINT R4 29
- 0x58140002, // 000A LDCONST R5 K2
- 0x50180000, // 000B LDBOOL R6 0 0
- 0x7C040A00, // 000C CALL R1 5
- 0x80000000, // 000D RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: mdns_announce_PASE
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_mdns_announce_PASE, /* name */
- be_nested_proto(
- 12, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Matter_Device,
- 1, /* has constants */
- ( &(const bvalue[41]) { /* constants */
- /* K0 */ be_nested_str_weak(mdns),
- /* K1 */ be_nested_str_weak(crypto),
- /* K2 */ be_nested_str_weak(VP),
- /* K3 */ be_nested_str_weak(vendorid),
- /* K4 */ be_nested_str_weak(_X2B),
- /* K5 */ be_nested_str_weak(productid),
- /* K6 */ be_nested_str_weak(D),
- /* K7 */ be_nested_str_weak(commissioning_discriminator),
- /* K8 */ be_nested_str_weak(CM),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str_weak(T),
- /* K11 */ be_const_int(0),
- /* K12 */ be_nested_str_weak(SII),
- /* K13 */ be_nested_str_weak(SAI),
- /* K14 */ be_nested_str_weak(commissioning_instance_wifi),
- /* K15 */ be_nested_str_weak(random),
- /* K16 */ be_nested_str_weak(tohex),
- /* K17 */ be_nested_str_weak(commissioning_instance_eth),
- /* K18 */ be_nested_str_weak(hostname_eth),
- /* K19 */ be_nested_str_weak(add_service),
- /* K20 */ be_nested_str_weak(_matterc),
- /* K21 */ be_nested_str_weak(_udp),
- /* K22 */ be_nested_str_weak(mdns_pase_eth),
- /* K23 */ be_nested_str_weak(tasmota),
- /* K24 */ be_nested_str_weak(log),
- /* K25 */ be_nested_str_weak(MTR_X3A_X20announce_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60),
- /* K26 */ be_nested_str_weak(eth),
- /* K27 */ be_const_int(2),
- /* K28 */ be_nested_str_weak(_L),
- /* K29 */ be_nested_str_weak(MTR_X3A_X20adding_X20subtype_X3A_X20),
- /* K30 */ be_const_int(3),
- /* K31 */ be_nested_str_weak(add_subtype),
- /* K32 */ be_nested_str_weak(_S),
- /* K33 */ be_nested_str_weak(_V),
- /* K34 */ be_nested_str_weak(_CM1),
- /* K35 */ be_nested_str_weak(hostname_wifi),
- /* K36 */ be_nested_str_weak(mdns_pase_wifi),
- /* K37 */ be_nested_str_weak(MTR_X3A_X20starting_X20mDNS_X20on_X20_X25s_X20_X27_X25s_X27_X20ptr_X20to_X20_X60_X25s_X2Elocal_X60),
- /* K38 */ be_nested_str_weak(wifi),
- /* K39 */ be_nested_str_weak(MTR_X3A_X20Exception),
- /* K40 */ be_nested_str_weak(_X7C),
- }),
- be_str_weak(mdns_announce_PASE),
- &be_const_str_solidified,
- ( &(const binstruction[236]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xA40A0200, // 0001 IMPORT R2 K1
- 0x600C0013, // 0002 GETGBL R3 G19
- 0x7C0C0000, // 0003 CALL R3 0
- 0x60100008, // 0004 GETGBL R4 G8
- 0x88140103, // 0005 GETMBR R5 R0 K3
- 0x7C100200, // 0006 CALL R4 1
- 0x00100904, // 0007 ADD R4 R4 K4
- 0x60140008, // 0008 GETGBL R5 G8
- 0x88180105, // 0009 GETMBR R6 R0 K5
- 0x7C140200, // 000A CALL R5 1
- 0x00100805, // 000B ADD R4 R4 R5
- 0x980E0404, // 000C SETIDX R3 K2 R4
- 0x88100107, // 000D GETMBR R4 R0 K7
- 0x980E0C04, // 000E SETIDX R3 K6 R4
- 0x980E1109, // 000F SETIDX R3 K8 K9
- 0x980E150B, // 0010 SETIDX R3 K10 K11
- 0x54121387, // 0011 LDINT R4 5000
- 0x980E1804, // 0012 SETIDX R3 K12 R4
- 0x5412012B, // 0013 LDINT R4 300
- 0x980E1A04, // 0014 SETIDX R3 K13 R4
- 0x8C10050F, // 0015 GETMET R4 R2 K15
- 0x541A0007, // 0016 LDINT R6 8
- 0x7C100400, // 0017 CALL R4 2
- 0x8C100910, // 0018 GETMET R4 R4 K16
- 0x7C100200, // 0019 CALL R4 1
- 0x90021C04, // 001A SETMBR R0 K14 R4
- 0x8C10050F, // 001B GETMET R4 R2 K15
- 0x541A0007, // 001C LDINT R6 8
- 0x7C100400, // 001D CALL R4 2
- 0x8C100910, // 001E GETMET R4 R4 K16
- 0x7C100200, // 001F CALL R4 1
- 0x90022204, // 0020 SETMBR R0 K17 R4
- 0xA80200B7, // 0021 EXBLK 0 #00DA
- 0x88100112, // 0022 GETMBR R4 R0 K18
- 0x78120058, // 0023 JMPF R4 #007D
- 0x8C100313, // 0024 GETMET R4 R1 K19
- 0x58180014, // 0025 LDCONST R6 K20
- 0x581C0015, // 0026 LDCONST R7 K21
- 0x542215A3, // 0027 LDINT R8 5540
- 0x5C240600, // 0028 MOVE R9 R3
- 0x88280111, // 0029 GETMBR R10 R0 K17
- 0x882C0112, // 002A GETMBR R11 R0 K18
- 0x7C100E00, // 002B CALL R4 7
- 0x50100200, // 002C LDBOOL R4 1 0
- 0x90022C04, // 002D SETMBR R0 K22 R4
- 0xB8122E00, // 002E GETNGBL R4 K23
- 0x8C100918, // 002F GETMET R4 R4 K24
- 0x60180018, // 0030 GETGBL R6 G24
- 0x581C0019, // 0031 LDCONST R7 K25
- 0x5820001A, // 0032 LDCONST R8 K26
- 0x88240111, // 0033 GETMBR R9 R0 K17
- 0x88280112, // 0034 GETMBR R10 R0 K18
- 0x7C180800, // 0035 CALL R6 4
- 0x581C001B, // 0036 LDCONST R7 K27
- 0x7C100600, // 0037 CALL R4 3
- 0x60100008, // 0038 GETGBL R4 G8
- 0x88140107, // 0039 GETMBR R5 R0 K7
- 0x541A0FFE, // 003A LDINT R6 4095
- 0x2C140A06, // 003B AND R5 R5 R6
- 0x7C100200, // 003C CALL R4 1
- 0x00123804, // 003D ADD R4 K28 R4
- 0xB8162E00, // 003E GETNGBL R5 K23
- 0x8C140B18, // 003F GETMET R5 R5 K24
- 0x001E3A04, // 0040 ADD R7 K29 R4
- 0x5820001E, // 0041 LDCONST R8 K30
- 0x7C140600, // 0042 CALL R5 3
- 0x8C14031F, // 0043 GETMET R5 R1 K31
- 0x581C0014, // 0044 LDCONST R7 K20
- 0x58200015, // 0045 LDCONST R8 K21
- 0x88240111, // 0046 GETMBR R9 R0 K17
- 0x88280112, // 0047 GETMBR R10 R0 K18
- 0x5C2C0800, // 0048 MOVE R11 R4
- 0x7C140C00, // 0049 CALL R5 6
- 0x60140008, // 004A GETGBL R5 G8
- 0x88180107, // 004B GETMBR R6 R0 K7
- 0x541E0EFF, // 004C LDINT R7 3840
- 0x2C180C07, // 004D AND R6 R6 R7
- 0x541E0007, // 004E LDINT R7 8
- 0x3C180C07, // 004F SHR R6 R6 R7
- 0x7C140200, // 0050 CALL R5 1
- 0x00164005, // 0051 ADD R5 K32 R5
- 0x5C100A00, // 0052 MOVE R4 R5
- 0xB8162E00, // 0053 GETNGBL R5 K23
- 0x8C140B18, // 0054 GETMET R5 R5 K24
- 0x001E3A04, // 0055 ADD R7 K29 R4
- 0x5820001E, // 0056 LDCONST R8 K30
- 0x7C140600, // 0057 CALL R5 3
- 0x8C14031F, // 0058 GETMET R5 R1 K31
- 0x581C0014, // 0059 LDCONST R7 K20
- 0x58200015, // 005A LDCONST R8 K21
- 0x88240111, // 005B GETMBR R9 R0 K17
- 0x88280112, // 005C GETMBR R10 R0 K18
- 0x5C2C0800, // 005D MOVE R11 R4
- 0x7C140C00, // 005E CALL R5 6
- 0x60140008, // 005F GETGBL R5 G8
- 0x88180103, // 0060 GETMBR R6 R0 K3
- 0x7C140200, // 0061 CALL R5 1
- 0x00164205, // 0062 ADD R5 K33 R5
- 0x5C100A00, // 0063 MOVE R4 R5
- 0xB8162E00, // 0064 GETNGBL R5 K23
- 0x8C140B18, // 0065 GETMET R5 R5 K24
- 0x001E3A04, // 0066 ADD R7 K29 R4
- 0x5820001E, // 0067 LDCONST R8 K30
- 0x7C140600, // 0068 CALL R5 3
- 0x8C14031F, // 0069 GETMET R5 R1 K31
- 0x581C0014, // 006A LDCONST R7 K20
- 0x58200015, // 006B LDCONST R8 K21
- 0x88240111, // 006C GETMBR R9 R0 K17
- 0x88280112, // 006D GETMBR R10 R0 K18
- 0x5C2C0800, // 006E MOVE R11 R4
- 0x7C140C00, // 006F CALL R5 6
- 0x58100022, // 0070 LDCONST R4 K34
- 0xB8162E00, // 0071 GETNGBL R5 K23
- 0x8C140B18, // 0072 GETMET R5 R5 K24
- 0x001E3A04, // 0073 ADD R7 K29 R4
- 0x5820001E, // 0074 LDCONST R8 K30
- 0x7C140600, // 0075 CALL R5 3
- 0x8C14031F, // 0076 GETMET R5 R1 K31
- 0x581C0014, // 0077 LDCONST R7 K20
- 0x58200015, // 0078 LDCONST R8 K21
- 0x88240111, // 0079 GETMBR R9 R0 K17
- 0x88280112, // 007A GETMBR R10 R0 K18
- 0x5C2C0800, // 007B MOVE R11 R4
- 0x7C140C00, // 007C CALL R5 6
- 0x88100123, // 007D GETMBR R4 R0 K35
- 0x78120058, // 007E JMPF R4 #00D8
- 0x8C100313, // 007F GETMET R4 R1 K19
- 0x58180014, // 0080 LDCONST R6 K20
- 0x581C0015, // 0081 LDCONST R7 K21
- 0x542215A3, // 0082 LDINT R8 5540
- 0x5C240600, // 0083 MOVE R9 R3
- 0x8828010E, // 0084 GETMBR R10 R0 K14
- 0x882C0123, // 0085 GETMBR R11 R0 K35
- 0x7C100E00, // 0086 CALL R4 7
- 0x50100200, // 0087 LDBOOL R4 1 0
- 0x90024804, // 0088 SETMBR R0 K36 R4
- 0xB8122E00, // 0089 GETNGBL R4 K23
- 0x8C100918, // 008A GETMET R4 R4 K24
- 0x60180018, // 008B GETGBL R6 G24
- 0x581C0025, // 008C LDCONST R7 K37
- 0x58200026, // 008D LDCONST R8 K38
- 0x8824010E, // 008E GETMBR R9 R0 K14
- 0x88280123, // 008F GETMBR R10 R0 K35
- 0x7C180800, // 0090 CALL R6 4
- 0x581C001E, // 0091 LDCONST R7 K30
- 0x7C100600, // 0092 CALL R4 3
- 0x60100008, // 0093 GETGBL R4 G8
- 0x88140107, // 0094 GETMBR R5 R0 K7
- 0x541A0FFE, // 0095 LDINT R6 4095
- 0x2C140A06, // 0096 AND R5 R5 R6
- 0x7C100200, // 0097 CALL R4 1
- 0x00123804, // 0098 ADD R4 K28 R4
- 0xB8162E00, // 0099 GETNGBL R5 K23
- 0x8C140B18, // 009A GETMET R5 R5 K24
- 0x001E3A04, // 009B ADD R7 K29 R4
- 0x5820001E, // 009C LDCONST R8 K30
- 0x7C140600, // 009D CALL R5 3
- 0x8C14031F, // 009E GETMET R5 R1 K31
- 0x581C0014, // 009F LDCONST R7 K20
- 0x58200015, // 00A0 LDCONST R8 K21
- 0x8824010E, // 00A1 GETMBR R9 R0 K14
- 0x88280123, // 00A2 GETMBR R10 R0 K35
- 0x5C2C0800, // 00A3 MOVE R11 R4
- 0x7C140C00, // 00A4 CALL R5 6
- 0x60140008, // 00A5 GETGBL R5 G8
- 0x88180107, // 00A6 GETMBR R6 R0 K7
- 0x541E0EFF, // 00A7 LDINT R7 3840
- 0x2C180C07, // 00A8 AND R6 R6 R7
- 0x541E0007, // 00A9 LDINT R7 8
- 0x3C180C07, // 00AA SHR R6 R6 R7
- 0x7C140200, // 00AB CALL R5 1
- 0x00164005, // 00AC ADD R5 K32 R5
- 0x5C100A00, // 00AD MOVE R4 R5
- 0xB8162E00, // 00AE GETNGBL R5 K23
- 0x8C140B18, // 00AF GETMET R5 R5 K24
- 0x001E3A04, // 00B0 ADD R7 K29 R4
- 0x5820001E, // 00B1 LDCONST R8 K30
- 0x7C140600, // 00B2 CALL R5 3
- 0x8C14031F, // 00B3 GETMET R5 R1 K31
- 0x581C0014, // 00B4 LDCONST R7 K20
- 0x58200015, // 00B5 LDCONST R8 K21
- 0x8824010E, // 00B6 GETMBR R9 R0 K14
- 0x88280123, // 00B7 GETMBR R10 R0 K35
- 0x5C2C0800, // 00B8 MOVE R11 R4
- 0x7C140C00, // 00B9 CALL R5 6
- 0x60140008, // 00BA GETGBL R5 G8
- 0x88180103, // 00BB GETMBR R6 R0 K3
- 0x7C140200, // 00BC CALL R5 1
- 0x00164205, // 00BD ADD R5 K33 R5
- 0x5C100A00, // 00BE MOVE R4 R5
- 0xB8162E00, // 00BF GETNGBL R5 K23
- 0x8C140B18, // 00C0 GETMET R5 R5 K24
- 0x001E3A04, // 00C1 ADD R7 K29 R4
- 0x5820001E, // 00C2 LDCONST R8 K30
- 0x7C140600, // 00C3 CALL R5 3
- 0x8C14031F, // 00C4 GETMET R5 R1 K31
- 0x581C0014, // 00C5 LDCONST R7 K20
- 0x58200015, // 00C6 LDCONST R8 K21
- 0x8824010E, // 00C7 GETMBR R9 R0 K14
- 0x88280123, // 00C8 GETMBR R10 R0 K35
- 0x5C2C0800, // 00C9 MOVE R11 R4
- 0x7C140C00, // 00CA CALL R5 6
- 0x58100022, // 00CB LDCONST R4 K34
- 0xB8162E00, // 00CC GETNGBL R5 K23
- 0x8C140B18, // 00CD GETMET R5 R5 K24
- 0x001E3A04, // 00CE ADD R7 K29 R4
- 0x5820001E, // 00CF LDCONST R8 K30
- 0x7C140600, // 00D0 CALL R5 3
- 0x8C14031F, // 00D1 GETMET R5 R1 K31
- 0x581C0014, // 00D2 LDCONST R7 K20
- 0x58200015, // 00D3 LDCONST R8 K21
- 0x8824010E, // 00D4 GETMBR R9 R0 K14
- 0x88280123, // 00D5 GETMBR R10 R0 K35
- 0x5C2C0800, // 00D6 MOVE R11 R4
- 0x7C140C00, // 00D7 CALL R5 6
- 0xA8040001, // 00D8 EXBLK 1 1
- 0x70020010, // 00D9 JMP #00EB
- 0xAC100002, // 00DA CATCH R4 0 2
- 0x7002000D, // 00DB JMP #00EA
- 0xB81A2E00, // 00DC GETNGBL R6 K23
- 0x8C180D18, // 00DD GETMET R6 R6 K24
- 0x60200008, // 00DE GETGBL R8 G8
- 0x5C240800, // 00DF MOVE R9 R4
- 0x7C200200, // 00E0 CALL R8 1
- 0x00224E08, // 00E1 ADD R8 K39 R8
- 0x00201128, // 00E2 ADD R8 R8 K40
- 0x60240008, // 00E3 GETGBL R9 G8
- 0x5C280A00, // 00E4 MOVE R10 R5
- 0x7C240200, // 00E5 CALL R9 1
- 0x00201009, // 00E6 ADD R8 R8 R9
- 0x5824001B, // 00E7 LDCONST R9 K27
- 0x7C180600, // 00E8 CALL R6 3
- 0x70020000, // 00E9 JMP #00EB
- 0xB0080000, // 00EA RAISE 2 R0 R0
- 0x80000000, // 00EB RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_plugin_remote_info
-********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_get_plugin_remote_info, /* name */
- be_nested_proto(
- 6, /* nstack */
+ 5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Device,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(plugins_config_remotes),
- /* K1 */ be_nested_str_weak(find),
- }),
- be_str_weak(get_plugin_remote_info),
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(get_plugin_class_arg),
&be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ ( &(const binstruction[ 9]) { /* code */
+ 0x88080151, // 0000 GETMBR R2 R0 K81
+ 0x8C080516, // 0001 GETMET R2 R2 K22
0x5C100200, // 0002 MOVE R4 R1
- 0x60140013, // 0003 GETGBL R5 G19
- 0x7C140000, // 0004 CALL R5 0
- 0x7C080600, // 0005 CALL R2 3
- 0x80040400, // 0006 RET 1 R2
+ 0x7C080400, // 0003 CALL R2 2
+ 0x780A0001, // 0004 JMPF R2 #0007
+ 0x880C05D3, // 0005 GETMBR R3 R2 K211
+ 0x70020000, // 0006 JMP #0008
+ 0x580C000D, // 0007 LDCONST R3 K13
+ 0x80040600, // 0008 RET 1 R3
})
)
);
@@ -6118,30 +3117,128 @@ be_local_closure(class_Matter_Device_get_plugin_remote_info, /* name */
/********************************************************************
-** Solidified function: every_50ms
+** Solidified function: update_remotes_info
********************************************************************/
-extern const bclass be_class_Matter_Device;
-be_local_closure(class_Matter_Device_every_50ms, /* name */
+be_local_closure(class_Matter_Device_update_remotes_info, /* name */
be_nested_proto(
- 2, /* nstack */
+ 7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Matter_Device,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(tick),
- /* K1 */ be_const_int(1),
- }),
- be_str_weak(every_50ms),
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(update_remotes_info),
&be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x00040301, // 0001 ADD R1 R1 K1
- 0x90020001, // 0002 SETMBR R0 K0 R1
- 0x80000000, // 0003 RET 0
+ ( &(const binstruction[33]) { /* code */
+ 0x60040013, // 0000 GETGBL R1 G19
+ 0x7C040000, // 0001 CALL R1 0
+ 0x88080176, // 0002 GETMBR R2 R0 K118
+ 0x4C0C0000, // 0003 LDNIL R3
+ 0x20080403, // 0004 NE R2 R2 R3
+ 0x780A0018, // 0005 JMPF R2 #001F
+ 0x60080010, // 0006 GETGBL R2 G16
+ 0x880C0176, // 0007 GETMBR R3 R0 K118
+ 0x8C0C0746, // 0008 GETMET R3 R3 K70
+ 0x7C0C0200, // 0009 CALL R3 1
+ 0x7C080200, // 000A CALL R2 1
+ 0xA802000F, // 000B EXBLK 0 #001C
+ 0x5C0C0400, // 000C MOVE R3 R2
+ 0x7C0C0000, // 000D CALL R3 0
+ 0x88100176, // 000E GETMBR R4 R0 K118
+ 0x94100803, // 000F GETIDX R4 R4 R3
+ 0x8C1009D4, // 0010 GETMET R4 R4 K212
+ 0x7C100200, // 0011 CALL R4 1
+ 0x4C140000, // 0012 LDNIL R5
+ 0x20140805, // 0013 NE R5 R4 R5
+ 0x78160005, // 0014 JMPF R5 #001B
+ 0x6014000C, // 0015 GETGBL R5 G12
+ 0x5C180800, // 0016 MOVE R6 R4
+ 0x7C140200, // 0017 CALL R5 1
+ 0x24140B06, // 0018 GT R5 R5 K6
+ 0x78160000, // 0019 JMPF R5 #001B
+ 0x98040604, // 001A SETIDX R1 R3 R4
+ 0x7001FFEF, // 001B JMP #000C
+ 0x58080011, // 001C LDCONST R2 K17
+ 0xAC080200, // 001D CATCH R2 1 0
+ 0xB0080000, // 001E RAISE 2 R0 R0
+ 0x90022A01, // 001F SETMBR R0 K21 R1
+ 0x80040200, // 0020 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: k2l
+********************************************************************/
+be_local_closure(class_Matter_Device_k2l, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 1, /* argc */
+ 12, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Matter_Device, /* shared constants */
+ be_str_weak(k2l),
+ &be_const_str_solidified,
+ ( &(const binstruction[50]) { /* code */
+ 0x5804000C, // 0000 LDCONST R1 K12
+ 0x60080012, // 0001 GETGBL R2 G18
+ 0x7C080000, // 0002 CALL R2 0
+ 0x4C0C0000, // 0003 LDNIL R3
+ 0x1C0C0003, // 0004 EQ R3 R0 R3
+ 0x780E0000, // 0005 JMPF R3 #0007
+ 0x80040400, // 0006 RET 1 R2
+ 0x600C0010, // 0007 GETGBL R3 G16
+ 0x8C100146, // 0008 GETMET R4 R0 K70
+ 0x7C100200, // 0009 CALL R4 1
+ 0x7C0C0200, // 000A CALL R3 1
+ 0xA8020005, // 000B EXBLK 0 #0012
+ 0x5C100600, // 000C MOVE R4 R3
+ 0x7C100000, // 000D CALL R4 0
+ 0x8C140542, // 000E GETMET R5 R2 K66
+ 0x5C1C0800, // 000F MOVE R7 R4
+ 0x7C140400, // 0010 CALL R5 2
+ 0x7001FFF9, // 0011 JMP #000C
+ 0x580C0011, // 0012 LDCONST R3 K17
+ 0xAC0C0200, // 0013 CATCH R3 1 0
+ 0xB0080000, // 0014 RAISE 2 R0 R0
+ 0x600C0010, // 0015 GETGBL R3 G16
+ 0x6010000C, // 0016 GETGBL R4 G12
+ 0x5C140400, // 0017 MOVE R5 R2
+ 0x7C100200, // 0018 CALL R4 1
+ 0x04100914, // 0019 SUB R4 R4 K20
+ 0x40122804, // 001A CONNECT R4 K20 R4
+ 0x7C0C0200, // 001B CALL R3 1
+ 0xA8020010, // 001C EXBLK 0 #002E
+ 0x5C100600, // 001D MOVE R4 R3
+ 0x7C100000, // 001E CALL R4 0
+ 0x94140404, // 001F GETIDX R5 R2 R4
+ 0x5C180800, // 0020 MOVE R6 R4
+ 0x241C0D06, // 0021 GT R7 R6 K6
+ 0x781E0008, // 0022 JMPF R7 #002C
+ 0x041C0D14, // 0023 SUB R7 R6 K20
+ 0x941C0407, // 0024 GETIDX R7 R2 R7
+ 0x241C0E05, // 0025 GT R7 R7 R5
+ 0x781E0004, // 0026 JMPF R7 #002C
+ 0x041C0D14, // 0027 SUB R7 R6 K20
+ 0x941C0407, // 0028 GETIDX R7 R2 R7
+ 0x98080C07, // 0029 SETIDX R2 R6 R7
+ 0x04180D14, // 002A SUB R6 R6 K20
+ 0x7001FFF4, // 002B JMP #0021
+ 0x98080C05, // 002C SETIDX R2 R6 R5
+ 0x7001FFEE, // 002D JMP #001D
+ 0x580C0011, // 002E LDCONST R3 K17
+ 0xAC0C0200, // 002F CATCH R3 1 0
+ 0xB0080000, // 0030 RAISE 2 R0 R0
+ 0x80040400, // 0031 RET 1 R2
})
)
);
@@ -6152,189 +3249,145 @@ be_local_closure(class_Matter_Device_every_50ms, /* name */
** Solidified class: Matter_Device
********************************************************************/
be_local_class(Matter_Device,
- 38,
+ 23,
NULL,
- be_nested_map(117,
+ be_nested_map(79,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(udp_server, -1), be_const_var(5) },
- { be_const_key_weak(next_ep, 108), be_const_var(31) },
- { be_const_key_weak(is_commissioning_open, -1), be_const_closure(class_Matter_Device_is_commissioning_open_closure) },
- { be_const_key_weak(MtrInfo_one, -1), be_const_closure(class_Matter_Device_MtrInfo_one_closure) },
- { be_const_key_weak(invoke_request, -1), be_const_closure(class_Matter_Device_invoke_request_closure) },
- { be_const_key_weak(start_commissioning_complete, 4), be_const_closure(class_Matter_Device_start_commissioning_complete_closure) },
- { be_const_key_weak(bridge_remove_endpoint, 23), be_const_closure(class_Matter_Device_bridge_remove_endpoint_closure) },
- { be_const_key_weak(get_plugin_remote_info, -1), be_const_closure(class_Matter_Device_get_plugin_remote_info_closure) },
- { be_const_key_weak(probe_sensor_time, 43), be_const_var(36) },
- { be_const_key_weak(vendorid, -1), be_const_var(22) },
- { be_const_key_weak(UDP_PORT, -1), be_const_int(5540) },
- { be_const_key_weak(commissioning_instance_eth, -1), be_const_var(19) },
- { be_const_key_weak(MtrInfo, 17), be_const_closure(class_Matter_Device_MtrInfo_closure) },
- { be_const_key_weak(mdns_announce_PASE, -1), be_const_closure(class_Matter_Device_mdns_announce_PASE_closure) },
- { be_const_key_weak(productid, 44), be_const_var(23) },
- { be_const_key_weak(bridge_add_endpoint, 20), be_const_closure(class_Matter_Device_bridge_add_endpoint_closure) },
- { be_const_key_weak(register_http_remote, -1), be_const_closure(class_Matter_Device_register_http_remote_closure) },
- { be_const_key_weak(signal_endpoints_changed, -1), be_const_closure(class_Matter_Device_signal_endpoints_changed_closure) },
- { be_const_key_weak(disable_bridge_mode, -1), be_const_var(30) },
- { be_const_key_weak(get_plugin_class_displayname, 89), be_const_closure(class_Matter_Device_get_plugin_class_displayname_closure) },
- { be_const_key_weak(start_mdns_announce_hostnames, 69), be_const_closure(class_Matter_Device_start_mdns_announce_hostnames_closure) },
- { be_const_key_weak(commissioning_instance_wifi, 114), be_const_var(18) },
- { be_const_key_weak(autoconf_device_map, -1), be_const_closure(class_Matter_Device_autoconf_device_map_closure) },
- { be_const_key_weak(init, -1), be_const_closure(class_Matter_Device_init_closure) },
- { be_const_key_weak(mdns_announce_op_discovery_all_fabrics, 8), be_const_closure(class_Matter_Device_mdns_announce_op_discovery_all_fabrics_closure) },
- { be_const_key_weak(sessions, 98), be_const_var(8) },
- { be_const_key_weak(_mdns_announce_hostname, 55), be_const_closure(class_Matter_Device__mdns_announce_hostname_closure) },
- { be_const_key_weak(commissioning_discriminator, -1), be_const_var(13) },
- { be_const_key_weak(register_commands, 100), be_const_closure(class_Matter_Device_register_commands_closure) },
- { be_const_key_weak(start, 109), be_const_closure(class_Matter_Device_start_closure) },
- { be_const_key_weak(_compute_pbkdf, -1), be_const_closure(class_Matter_Device__compute_pbkdf_closure) },
- { be_const_key_weak(find_plugin_by_friendly_name, 95), be_const_closure(class_Matter_Device_find_plugin_by_friendly_name_closure) },
- { be_const_key_weak(save_param, -1), be_const_closure(class_Matter_Device_save_param_closure) },
- { be_const_key_weak(clean_remotes, -1), be_const_closure(class_Matter_Device_clean_remotes_closure) },
- { be_const_key_weak(MtrJoin, 58), be_const_closure(class_Matter_Device_MtrJoin_closure) },
- { be_const_key_weak(autoconf_device, -1), be_const_closure(class_Matter_Device_autoconf_device_closure) },
- { be_const_key_weak(hostname_wifi, 68), be_const_var(20) },
- { be_const_key_weak(_trigger_read_sensors, -1), be_const_closure(class_Matter_Device__trigger_read_sensors_closure) },
- { be_const_key_weak(root_passcode, 63), be_const_var(28) },
- { be_const_key_weak(save_before_restart, -1), be_const_closure(class_Matter_Device_save_before_restart_closure) },
- { be_const_key_weak(generate_random_passcode, 64), be_const_closure(class_Matter_Device_generate_random_passcode_closure) },
- { be_const_key_weak(is_root_commissioning_open, 90), be_const_closure(class_Matter_Device_is_root_commissioning_open_closure) },
- { be_const_key_weak(start_commissioning_complete_deferred, -1), be_const_closure(class_Matter_Device_start_commissioning_complete_deferred_closure) },
- { be_const_key_weak(root_iterations, -1), be_const_var(32) },
- { be_const_key_weak(start_operational_discovery_deferred, -1), be_const_closure(class_Matter_Device_start_operational_discovery_deferred_closure) },
- { be_const_key_weak(probe_sensor_timestamp, -1), be_const_var(37) },
- { be_const_key_weak(ipv4only, 34), be_const_var(29) },
- { be_const_key_weak(mdns_remove_PASE, 29), be_const_closure(class_Matter_Device_mdns_remove_PASE_closure) },
- { be_const_key_weak(plugins_config_remotes, 103), be_const_var(4) },
- { be_const_key_weak(remove_fabric, -1), be_const_closure(class_Matter_Device_remove_fabric_closure) },
- { be_const_key_weak(sort_distinct, -1), be_const_static_closure(class_Matter_Device_sort_distinct_closure) },
- { be_const_key_weak(commissioning_iterations, -1), be_const_var(12) },
- { be_const_key_weak(plugins_config, 40), be_const_var(3) },
- { be_const_key_weak(_init_basic_commissioning, 37), be_const_closure(class_Matter_Device__init_basic_commissioning_closure) },
- { be_const_key_weak(plugins_persist, -1), be_const_var(2) },
- { be_const_key_weak(hostname_eth, -1), be_const_var(21) },
- { be_const_key_weak(mdns_remove_op_discovery, 77), be_const_closure(class_Matter_Device_mdns_remove_op_discovery_closure) },
- { be_const_key_weak(received_ack, 76), be_const_closure(class_Matter_Device_received_ack_closure) },
- { be_const_key_weak(PASE_TIMEOUT, 27), be_const_int(600) },
- { be_const_key_weak(_instantiate_plugins_from_config, -1), be_const_closure(class_Matter_Device__instantiate_plugins_from_config_closure) },
- { be_const_key_weak(mdns_pase_eth, -1), be_const_var(24) },
- { be_const_key_weak(mdns_pase_wifi, -1), be_const_var(25) },
- { be_const_key_weak(commissioning_salt, -1), be_const_var(14) },
- { be_const_key_weak(start_basic_commissioning, 94), be_const_closure(class_Matter_Device_start_basic_commissioning_closure) },
- { be_const_key_weak(commissioning_L, -1), be_const_var(16) },
- { be_const_key_weak(message_handler, 36), be_const_var(7) },
- { be_const_key_weak(get_plugin_class_arg, -1), be_const_closure(class_Matter_Device_get_plugin_class_arg_closure) },
- { be_const_key_weak(process_attribute_expansion, 54), be_const_closure(class_Matter_Device_process_attribute_expansion_closure) },
- { be_const_key_weak(k2l, -1), be_const_static_closure(class_Matter_Device_k2l_closure) },
- { be_const_key_weak(compute_manual_pairing_code, -1), be_const_closure(class_Matter_Device_compute_manual_pairing_code_closure) },
- { be_const_key_weak(root_discriminator, 93), be_const_var(27) },
- { be_const_key_weak(_start_udp, -1), be_const_closure(class_Matter_Device__start_udp_closure) },
- { be_const_key_weak(k2l_num, -1), be_const_static_closure(class_Matter_Device_k2l_num_closure) },
- { be_const_key_weak(commissioning_open, -1), be_const_var(11) },
- { be_const_key_weak(add_read_sensors_schedule, 91), be_const_closure(class_Matter_Device_add_read_sensors_schedule_closure) },
- { be_const_key_weak(check_config_ep, -1), be_const_closure(class_Matter_Device_check_config_ep_closure) },
- { be_const_key_weak(PASSCODE_INVALID, 107), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
- be_const_list( * be_nested_list(12,
- ( (struct bvalue*) &(const bvalue[]) {
- be_const_int(0),
- be_const_int(11111111),
- be_const_int(22222222),
- be_const_int(33333333),
- be_const_int(44444444),
- be_const_int(55555555),
- be_const_int(66666666),
- be_const_int(77777777),
- be_const_int(88888888),
- be_const_int(99999999),
- be_const_int(12345678),
- be_const_int(87654321),
- })) ) } )) },
- { be_const_key_weak(started, -1), be_const_var(0) },
- { be_const_key_weak(autoconf_sensors_list, -1), be_const_closure(class_Matter_Device_autoconf_sensors_list_closure) },
- { be_const_key_weak(find_plugin_by_endpoint, -1), be_const_closure(class_Matter_Device_find_plugin_by_endpoint_closure) },
- { be_const_key_weak(start_root_basic_commissioning, -1), be_const_closure(class_Matter_Device_start_root_basic_commissioning_closure) },
+ { be_const_key_weak(received_ack, -1), be_const_closure(class_Matter_Device_received_ack_closure) },
+ { be_const_key_weak(add_read_sensors_schedule, -1), be_const_closure(class_Matter_Device_add_read_sensors_schedule_closure) },
{ be_const_key_weak(plugins, -1), be_const_var(1) },
- { be_const_key_weak(event_fabrics_saved, 88), be_const_closure(class_Matter_Device_event_fabrics_saved_closure) },
- { be_const_key_weak(commissioning_w0, 73), be_const_var(15) },
- { be_const_key_weak(compute_qrcode_content, 57), be_const_closure(class_Matter_Device_compute_qrcode_content_closure) },
- { be_const_key_weak(conf_to_log, 56), be_const_static_closure(class_Matter_Device_conf_to_log_closure) },
- { be_const_key_weak(start_operational_discovery, -1), be_const_closure(class_Matter_Device_start_operational_discovery_closure) },
- { be_const_key_weak(load_param, -1), be_const_closure(class_Matter_Device_load_param_closure) },
- { be_const_key_weak(process_attribute_read_solo, -1), be_const_closure(class_Matter_Device_process_attribute_read_solo_closure) },
- { be_const_key_weak(msg_received, -1), be_const_closure(class_Matter_Device_msg_received_closure) },
- { be_const_key_weak(root_w0, -1), be_const_var(34) },
+ { be_const_key_weak(debug, -1), be_const_var(20) },
+ { be_const_key_weak(autoconf, -1), be_const_var(9) },
+ { be_const_key_weak(message_handler, -1), be_const_var(7) },
+ { be_const_key_weak(event_fabrics_saved, -1), be_const_closure(class_Matter_Device_event_fabrics_saved_closure) },
+ { be_const_key_weak(save_before_restart, -1), be_const_closure(class_Matter_Device_save_before_restart_closure) },
+ { be_const_key_weak(probe_sensor_time, 63), be_const_var(21) },
+ { be_const_key_weak(conf_to_log, 53), be_const_static_closure(class_Matter_Device_conf_to_log_closure) },
+ { be_const_key_weak(EP, 72), be_const_int(2) },
+ { be_const_key_weak(ui, -1), be_const_var(11) },
+ { be_const_key_weak(root_passcode, -1), be_const_var(16) },
+ { be_const_key_weak(find_plugin_by_endpoint, -1), be_const_closure(class_Matter_Device_find_plugin_by_endpoint_closure) },
+ { be_const_key_weak(UDP_PORT, 40), be_const_int(5540) },
+ { be_const_key_weak(disable_bridge_mode, -1), be_const_var(18) },
+ { be_const_key_weak(remove_fabric, -1), be_const_closure(class_Matter_Device_remove_fabric_closure) },
+ { be_const_key_weak(resolve_attribute_read_solo, 66), be_const_closure(class_Matter_Device_resolve_attribute_read_solo_closure) },
+ { be_const_key_weak(signal_endpoints_changed, -1), be_const_closure(class_Matter_Device_signal_endpoints_changed_closure) },
+ { be_const_key_weak(autoconf_device, 69), be_const_closure(class_Matter_Device_autoconf_device_closure) },
+ { be_const_key_weak(_trigger_read_sensors, -1), be_const_closure(class_Matter_Device__trigger_read_sensors_closure) },
{ be_const_key_weak(get_active_endpoints, -1), be_const_closure(class_Matter_Device_get_active_endpoints_closure) },
- { be_const_key_weak(FILENAME, -1), be_nested_str_weak(_matter_device_X2Ejson) },
- { be_const_key_weak(PBKDF_ITERATIONS, -1), be_const_int(1000) },
- { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_Device_every_250ms_closure) },
- { be_const_key_weak(attribute_updated, -1), be_const_closure(class_Matter_Device_attribute_updated_closure) },
- { be_const_key_weak(read_sensors_scheduler, -1), be_const_closure(class_Matter_Device_read_sensors_scheduler_closure) },
- { be_const_key_weak(MtrUpdate, 45), be_const_closure(class_Matter_Device_MtrUpdate_closure) },
- { be_const_key_weak(mdns_announce_op_discovery, -1), be_const_closure(class_Matter_Device_mdns_announce_op_discovery_closure) },
- { be_const_key_weak(http_remotes, -1), be_const_var(26) },
- { be_const_key_weak(VENDOR_ID, -1), be_const_int(65521) },
- { be_const_key_weak(root_salt, -1), be_const_var(33) },
- { be_const_key_weak(PRODUCT_ID, -1), be_const_int(32768) },
- { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_Device_every_second_closure) },
- { be_const_key_weak(update_remotes_info, 32), be_const_closure(class_Matter_Device_update_remotes_info_closure) },
- { be_const_key_weak(mdns_remove_op_discovery_all_fabrics, -1), be_const_closure(class_Matter_Device_mdns_remove_op_discovery_all_fabrics_closure) },
{ be_const_key_weak(profiler, -1), be_const_var(6) },
- { be_const_key_weak(root_L, 102), be_const_var(35) },
+ { be_const_key_weak(msg_send, 3), be_const_closure(class_Matter_Device_msg_send_closure) },
+ { be_const_key_weak(stop, 31), be_const_closure(class_Matter_Device_stop_closure) },
{ be_const_key_weak(adjust_next_ep, -1), be_const_closure(class_Matter_Device_adjust_next_ep_closure) },
- { be_const_key_weak(ui, -1), be_const_var(9) },
- { be_const_key_weak(stop, 14), be_const_closure(class_Matter_Device_stop_closure) },
- { be_const_key_weak(stop_basic_commissioning, 13), be_const_closure(class_Matter_Device_stop_basic_commissioning_closure) },
- { be_const_key_weak(plugins_classes, 10), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
- be_const_map( * be_nested_map(44,
+ { be_const_key_weak(msg_received, 50), be_const_closure(class_Matter_Device_msg_received_closure) },
+ { be_const_key_weak(button_pressed, -1), be_const_closure(class_Matter_Device_button_pressed_closure) },
+ { be_const_key_weak(FILENAME, 44), be_nested_str_weak(_matter_device_X2Ejson) },
+ { be_const_key_weak(root_discriminator, -1), be_const_var(15) },
+ { be_const_key_weak(start, -1), be_const_closure(class_Matter_Device_start_closure) },
+ { be_const_key_weak(MtrJoin, 46), be_const_closure(class_Matter_Device_MtrJoin_closure) },
+ { be_const_key_weak(MtrInfo_one, -1), be_const_closure(class_Matter_Device_MtrInfo_one_closure) },
+ { be_const_key_weak(get_plugin_class_displayname, -1), be_const_closure(class_Matter_Device_get_plugin_class_displayname_closure) },
+ { be_const_key_weak(plugins_config, -1), be_const_var(3) },
+ { be_const_key_weak(http_remotes, 11), be_const_var(14) },
+ { be_const_key_weak(get_plugin_remote_info, 13), be_const_closure(class_Matter_Device_get_plugin_remote_info_closure) },
+ { be_const_key_weak(plugins_classes, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(53,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(humidity, 37), be_const_class(be_class_Matter_Plugin_Sensor_Humidity) },
- { be_const_key_weak(flow, -1), be_const_class(be_class_Matter_Plugin_Sensor_Flow) },
- { be_const_key_weak(v_flow, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Flow) },
- { be_const_key_weak(waterleak, -1), be_const_class(be_class_Matter_Plugin_Sensor_Waterleak) },
- { be_const_key_weak(http_flow, 25), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Flow) },
- { be_const_key_weak(v_pressure, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Pressure) },
- { be_const_key_weak(v_waterleak, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Waterleak) },
- { be_const_key_weak(onoff, -1), be_const_class(be_class_Matter_Plugin_Sensor_OnOff) },
- { be_const_key_weak(v_occupancy, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Occupancy) },
- { be_const_key_weak(temperature, -1), be_const_class(be_class_Matter_Plugin_Sensor_Temp) },
- { be_const_key_weak(illuminance, 22), be_const_class(be_class_Matter_Plugin_Sensor_Illuminance) },
- { be_const_key_weak(v_light3, 33), be_const_class(be_class_Matter_Plugin_Virt_Light3) },
- { be_const_key_weak(contact, -1), be_const_class(be_class_Matter_Plugin_Sensor_Contact) },
- { be_const_key_weak(v_light1, 14), be_const_class(be_class_Matter_Plugin_Virt_Light1) },
- { be_const_key_weak(http_light1, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light1) },
- { be_const_key_weak(http_occupancy, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Occupancy) },
- { be_const_key_weak(http_illuminance, 12), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Illuminance) },
- { be_const_key_weak(http_pressure, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Pressure) },
- { be_const_key_weak(http_contact, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Contact) },
- { be_const_key_weak(light2, -1), be_const_class(be_class_Matter_Plugin_Light2) },
- { be_const_key_weak(aggregator, -1), be_const_class(be_class_Matter_Plugin_Aggregator) },
- { be_const_key_weak(light0, -1), be_const_class(be_class_Matter_Plugin_Light0) },
{ be_const_key_weak(occupancy, -1), be_const_class(be_class_Matter_Plugin_Sensor_Occupancy) },
- { be_const_key_weak(http_humidity, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Humidity) },
- { be_const_key_weak(shutter, 28), be_const_class(be_class_Matter_Plugin_Shutter) },
- { be_const_key_weak(http_light0, 24), be_const_class(be_class_Matter_Plugin_Bridge_Light0) },
- { be_const_key_weak(http_light2, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light2) },
- { be_const_key_weak(v_relay, -1), be_const_class(be_class_Matter_Plugin_Virt_OnOff) },
- { be_const_key_weak(v_contact, 41), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Contact) },
- { be_const_key_weak(root, 7), be_const_class(be_class_Matter_Plugin_Root) },
{ be_const_key_weak(pressure, -1), be_const_class(be_class_Matter_Plugin_Sensor_Pressure) },
- { be_const_key_weak(v_illuminance, 8), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Illuminance) },
- { be_const_key_weak(v_light2, 26), be_const_class(be_class_Matter_Plugin_Virt_Light2) },
- { be_const_key_weak(http_light3, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light3) },
- { be_const_key_weak(v_light0, 4), be_const_class(be_class_Matter_Plugin_Virt_Light0) },
- { be_const_key_weak(v_humidity, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Humidity) },
- { be_const_key_weak(v_temp, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Temp) },
- { be_const_key_weak(shutter_X2Btilt, 43), be_const_class(be_class_Matter_Plugin_ShutterTilt) },
- { be_const_key_weak(http_waterleak, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Waterleak) },
- { be_const_key_weak(http_relay, 16), be_const_class(be_class_Matter_Plugin_Bridge_OnOff) },
- { be_const_key_weak(light3, -1), be_const_class(be_class_Matter_Plugin_Light3) },
+ { be_const_key_weak(http_light2, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light2) },
+ { be_const_key_weak(v_contact, 36), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Contact) },
+ { be_const_key_weak(v_occupancy, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Occupancy) },
+ { be_const_key_weak(flow, 8), be_const_class(be_class_Matter_Plugin_Sensor_Flow) },
+ { be_const_key_weak(http_contact, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Contact) },
+ { be_const_key_weak(shutter, -1), be_const_class(be_class_Matter_Plugin_Shutter) },
+ { be_const_key_weak(v_pressure, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Pressure) },
+ { be_const_key_weak(http_rain, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Rain) },
+ { be_const_key_weak(http_pressure, 12), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Pressure) },
+ { be_const_key_weak(v_light2, -1), be_const_class(be_class_Matter_Plugin_Virt_Light2) },
+ { be_const_key_weak(v_flow, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Flow) },
{ be_const_key_weak(relay, -1), be_const_class(be_class_Matter_Plugin_OnOff) },
+ { be_const_key_weak(v_illuminance, 29), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Illuminance) },
+ { be_const_key_weak(v_airquality, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Air_Quality) },
+ { be_const_key_weak(temperature, 20), be_const_class(be_class_Matter_Plugin_Sensor_Temp) },
+ { be_const_key_weak(waterleak, -1), be_const_class(be_class_Matter_Plugin_Sensor_Waterleak) },
+ { be_const_key_weak(v_fan, -1), be_const_class(be_class_Matter_Plugin_Virt_Fan) },
+ { be_const_key_weak(http_occupancy, 6), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Occupancy) },
+ { be_const_key_weak(http_relay, -1), be_const_class(be_class_Matter_Plugin_Bridge_OnOff) },
+ { be_const_key_weak(fan, -1), be_const_class(be_class_Matter_Plugin_Fan) },
{ be_const_key_weak(light1, -1), be_const_class(be_class_Matter_Plugin_Light1) },
- { be_const_key_weak(http_temperature, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Temp) },
+ { be_const_key_weak(root, -1), be_const_class(be_class_Matter_Plugin_Root) },
+ { be_const_key_weak(illuminance, -1), be_const_class(be_class_Matter_Plugin_Sensor_Illuminance) },
+ { be_const_key_weak(v_temp, 15), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Temp) },
+ { be_const_key_weak(v_light1, -1), be_const_class(be_class_Matter_Plugin_Virt_Light1) },
+ { be_const_key_weak(v_waterleak, -1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Waterleak) },
+ { be_const_key_weak(v_relay, -1), be_const_class(be_class_Matter_Plugin_Virt_OnOff) },
+ { be_const_key_weak(contact, 52), be_const_class(be_class_Matter_Plugin_Sensor_Contact) },
+ { be_const_key_weak(light2, 27), be_const_class(be_class_Matter_Plugin_Light2) },
+ { be_const_key_weak(http_light1, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light1) },
+ { be_const_key_weak(gensw_btn, -1), be_const_class(be_class_Matter_Plugin_Sensor_GenericSwitch_Btn) },
+ { be_const_key_weak(onoff, -1), be_const_class(be_class_Matter_Plugin_Sensor_OnOff) },
+ { be_const_key_weak(v_light0, -1), be_const_class(be_class_Matter_Plugin_Virt_Light0) },
+ { be_const_key_weak(light3, -1), be_const_class(be_class_Matter_Plugin_Light3) },
+ { be_const_key_weak(http_humidity, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Humidity) },
+ { be_const_key_weak(http_illuminance, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Illuminance) },
+ { be_const_key_weak(v_rain, 43), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Rain) },
+ { be_const_key_weak(http_light0, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light0) },
+ { be_const_key_weak(http_waterleak, 45), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Waterleak) },
+ { be_const_key_weak(shutter_X2Btilt, -1), be_const_class(be_class_Matter_Plugin_ShutterTilt) },
+ { be_const_key_weak(v_light3, -1), be_const_class(be_class_Matter_Plugin_Virt_Light3) },
+ { be_const_key_weak(airquality, 35), be_const_class(be_class_Matter_Plugin_Sensor_Air_Quality) },
+ { be_const_key_weak(http_flow, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Flow) },
+ { be_const_key_weak(humidity, -1), be_const_class(be_class_Matter_Plugin_Sensor_Humidity) },
+ { be_const_key_weak(http_temperature, 41), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Temp) },
+ { be_const_key_weak(http_light3, -1), be_const_class(be_class_Matter_Plugin_Bridge_Light3) },
+ { be_const_key_weak(v_humidity, 1), be_const_class(be_class_Matter_Plugin_Virt_Sensor_Humidity) },
+ { be_const_key_weak(http_airquality, -1), be_const_class(be_class_Matter_Plugin_Bridge_Sensor_Air_Quality) },
+ { be_const_key_weak(aggregator, 11), be_const_class(be_class_Matter_Plugin_Aggregator) },
+ { be_const_key_weak(rain, -1), be_const_class(be_class_Matter_Plugin_Sensor_Rain) },
+ { be_const_key_weak(light0, -1), be_const_class(be_class_Matter_Plugin_Light0) },
})) ) } )) },
- { be_const_key_weak(tick, 9), be_const_var(10) },
- { be_const_key_weak(commissioning_admin_fabric, -1), be_const_var(17) },
- { be_const_key_weak(msg_send, 7), be_const_closure(class_Matter_Device_msg_send_closure) },
+ { be_const_key_weak(tick, 49), be_const_var(12) },
+ { be_const_key_weak(check_config_ep, 41), be_const_closure(class_Matter_Device_check_config_ep_closure) },
+ { be_const_key_weak(MtrUpdate, 58), be_const_closure(class_Matter_Device_MtrUpdate_closure) },
+ { be_const_key_weak(clean_remotes, -1), be_const_closure(class_Matter_Device_clean_remotes_closure) },
+ { be_const_key_weak(every_second, -1), be_const_closure(class_Matter_Device_every_second_closure) },
+ { be_const_key_weak(udp_server, -1), be_const_var(5) },
+ { be_const_key_weak(register_http_remote, -1), be_const_closure(class_Matter_Device_register_http_remote_closure) },
+ { be_const_key_weak(k2l_num, -1), be_const_static_closure(class_Matter_Device_k2l_num_closure) },
+ { be_const_key_weak(reset_param, -1), be_const_closure(class_Matter_Device_reset_param_closure) },
+ { be_const_key_weak(every_250ms, -1), be_const_closure(class_Matter_Device_every_250ms_closure) },
+ { be_const_key_weak(process_attribute_expansion, -1), be_const_closure(class_Matter_Device_process_attribute_expansion_closure) },
+ { be_const_key_weak(probe_sensor_timestamp, -1), be_const_var(22) },
+ { be_const_key_weak(button_multi_pressed, 1), be_const_closure(class_Matter_Device_button_multi_pressed_closure) },
+ { be_const_key_weak(VENDOR_ID, 64), be_const_int(65521) },
+ { be_const_key_weak(MtrInfo, -1), be_const_closure(class_Matter_Device_MtrInfo_closure) },
+ { be_const_key_weak(events, -1), be_const_var(13) },
+ { be_const_key_weak(ipv4only, -1), be_const_var(17) },
+ { be_const_key_weak(commissioning, -1), be_const_var(8) },
+ { be_const_key_weak(load_param, -1), be_const_closure(class_Matter_Device_load_param_closure) },
+ { be_const_key_weak(sessions, 55), be_const_var(10) },
{ be_const_key_weak(every_50ms, -1), be_const_closure(class_Matter_Device_every_50ms_closure) },
+ { be_const_key_weak(register_commands, -1), be_const_closure(class_Matter_Device_register_commands_closure) },
+ { be_const_key_weak(next_ep, -1), be_const_var(19) },
+ { be_const_key_weak(save_param, -1), be_const_closure(class_Matter_Device_save_param_closure) },
+ { be_const_key_weak(bridge_remove_endpoint, -1), be_const_closure(class_Matter_Device_bridge_remove_endpoint_closure) },
+ { be_const_key_weak(_start_udp, -1), be_const_closure(class_Matter_Device__start_udp_closure) },
+ { be_const_key_weak(bridge_add_endpoint, -1), be_const_closure(class_Matter_Device_bridge_add_endpoint_closure) },
+ { be_const_key_weak(read_sensors_scheduler, -1), be_const_closure(class_Matter_Device_read_sensors_scheduler_closure) },
+ { be_const_key_weak(attribute_updated, -1), be_const_closure(class_Matter_Device_attribute_updated_closure) },
+ { be_const_key_weak(find_plugin_by_friendly_name, 43), be_const_closure(class_Matter_Device_find_plugin_by_friendly_name_closure) },
+ { be_const_key_weak(plugins_config_remotes, -1), be_const_var(4) },
+ { be_const_key_weak(plugins_persist, -1), be_const_var(2) },
+ { be_const_key_weak(sort_distinct, 37), be_const_static_closure(class_Matter_Device_sort_distinct_closure) },
+ { be_const_key_weak(started, 32), be_const_var(0) },
+ { be_const_key_weak(init, -1), be_const_closure(class_Matter_Device_init_closure) },
+ { be_const_key_weak(invoke_request, 22), be_const_closure(class_Matter_Device_invoke_request_closure) },
+ { be_const_key_weak(button_handler, 14), be_const_closure(class_Matter_Device_button_handler_closure) },
+ { be_const_key_weak(get_plugin_class_arg, -1), be_const_closure(class_Matter_Device_get_plugin_class_arg_closure) },
+ { be_const_key_weak(PRODUCT_ID, -1), be_const_int(32768) },
+ { be_const_key_weak(update_remotes_info, -1), be_const_closure(class_Matter_Device_update_remotes_info_closure) },
+ { be_const_key_weak(k2l, -1), be_const_static_closure(class_Matter_Device_k2l_closure) },
})),
be_str_weak(Matter_Device)
);
diff --git a/lib/libesp32/berry_tasmota/include/be_ctypes.h b/lib/libesp32/berry_tasmota/include/be_ctypes.h
index da97971bd..8b29110c4 100644
--- a/lib/libesp32/berry_tasmota/include/be_ctypes.h
+++ b/lib/libesp32/berry_tasmota/include/be_ctypes.h
@@ -33,6 +33,10 @@ enum {
ctypes_ptr32 = 9,
ctypes_ptr64 = -9,
+ // address (no acces to the value)
+ ctypes_addr = 15,
+
+ // special
ctypes_bf = 0, //bif-field
};
@@ -52,17 +56,6 @@ typedef struct be_ctypes_structure_t {
const be_ctypes_structure_item_t * items;
} be_ctypes_structure_t;
-typedef struct be_ctypes_class_t {
- const char * name;
- const be_ctypes_structure_t * definitions;
-} be_ctypes_class_t;
-
-typedef struct be_ctypes_classes_t {
- uint16_t size;
- const char **instance_mapping; /* array of instance class names for automatic instanciation of class */
- const be_ctypes_class_t * classes;
-} be_ctypes_classes_t;
-
#ifdef __cplusplus
extern "C" {
#endif
diff --git a/lib/libesp32/berry_tasmota/solidify_all.be b/lib/libesp32/berry_tasmota/solidify_all.be
index c15d0c4fa..84794af13 100755
--- a/lib/libesp32/berry_tasmota/solidify_all.be
+++ b/lib/libesp32/berry_tasmota/solidify_all.be
@@ -7,12 +7,13 @@ import global
import solidify
import string as string2
import re
+import introspect
import sys
sys.path().push('src/embedded') # allow to import from src/embedded
# globals that need to exist to make compilation succeed
-var globs = "path,ctypes_bytes_dyn,tasmota,ccronexpr,gpio,light,webclient,load,MD5,lv,light_state,udp,I2C_Driver,tcpserver,"
+var globs = "path,ctypes_bytes_dyn,tasmota,ccronexpr,gpio,light,webclient,load,MD5,lv,light_state,udp,I2C_Driver,tcpserver,log,"
"lv_clock,lv_clock_icon,lv_signal_arcs,lv_signal_bars,lv_wifi_arcs_icon,lv_wifi_arcs,"
"lv_wifi_bars_icon,lv_wifi_bars,"
"_lvgl,"
diff --git a/lib/libesp32/berry_tasmota/src/be_TFL_lib.c b/lib/libesp32/berry_tasmota/src/be_TFL_lib.c
index 517693a57..3e7a1264c 100644
--- a/lib/libesp32/berry_tasmota/src/be_TFL_lib.c
+++ b/lib/libesp32/berry_tasmota/src/be_TFL_lib.c
@@ -21,8 +21,8 @@ BE_FUNC_CTYPE_DECLARE(be_TFL_begin, "b", "@s[(bytes)~]");
extern bbool be_TFL_load(struct bvm *vm, const uint8_t *model_buf, size_t model_size, const uint8_t *output_buf, size_t output_size,int arena);
BE_FUNC_CTYPE_DECLARE(be_TFL_load, "b", "@(bytes)~(bytes)~[i]");
-extern bbool be_TFL_input(struct bvm *vm, const uint8_t *buf, size_t size);
-BE_FUNC_CTYPE_DECLARE(be_TFL_input, "b", "@(bytes)~");
+extern bbool be_TFL_input(struct bvm *vm, const uint8_t *buf, size_t size, bbool quantize_to_int8);
+BE_FUNC_CTYPE_DECLARE(be_TFL_input, "b", "@(bytes)~[b]");
extern bbool be_TFL_output(struct bvm *vm, const uint8_t *buf, size_t size);
BE_FUNC_CTYPE_DECLARE(be_TFL_output, "b", "@(bytes)~");
diff --git a/lib/libesp32/berry_tasmota/src/be_cam_lib.c b/lib/libesp32/berry_tasmota/src/be_cam_lib.c
new file mode 100644
index 000000000..a271c324a
--- /dev/null
+++ b/lib/libesp32/berry_tasmota/src/be_cam_lib.c
@@ -0,0 +1,31 @@
+/********************************************************************
+ * Tasmota lib
+ *
+ * To use: `import cam`
+ *
+ *******************************************************************/
+
+#ifdef USE_BERRY_CAM
+
+// #include "be_constobj.h"
+#include "be_mapping.h"
+
+extern int be_cam_init(bvm *vm);
+extern int be_cam_setup(bvm *vm);
+extern int be_cam_get_image(bvm *vm);
+extern int be_cam_info(bvm *vm);
+
+#include "be_fixed_cam.h"
+
+/* @const_object_info_begin
+
+module cam (scope: global) {
+
+ init, func(be_cam_init)
+ setup, func(be_cam_setup)
+ get_image, func(be_cam_get_image)
+ info, func(be_cam_info)
+}
+@const_object_info_end */
+
+#endif // USE_BERRY_CAM
diff --git a/lib/libesp32/berry_tasmota/src/be_ctypes.c b/lib/libesp32/berry_tasmota/src/be_ctypes.c
index 66b119ed2..acd4e3744 100644
--- a/lib/libesp32/berry_tasmota/src/be_ctypes.c
+++ b/lib/libesp32/berry_tasmota/src/be_ctypes.c
@@ -3,6 +3,7 @@
*******************************************************************/
#include "be_constobj.h"
#include
+#include "be_ctypes.h"
extern __attribute__((noreturn)) void be_raisef(bvm *vm, const char *except, const char *msg, ...);
@@ -34,65 +35,6 @@ int32_t bin_search_ctypes(const char * needle, const void * table, size_t elt_si
}
}
-enum {
- ctypes_i32 = 14,
- ctypes_i24 = 13,
- ctypes_i16 = 12,
- ctypes_i8 = 11,
- ctypes_u32 = 4,
- ctypes_u24 = 3,
- ctypes_u16 = 2,
- ctypes_u8 = 1,
-
- // big endian
- ctypes_be_i32 = -14,
- ctypes_be_i24 = -13,
- ctypes_be_i16 = -12,
- ctypes_be_i8 = -11,
- ctypes_be_u32 = -4,
- ctypes_be_u16 = -2,
- ctypes_be_u8 = -1,
-
- // floating point
- ctypes_float = 5,
- ctypes_double = 10,
-
- // pointer
- ctypes_ptr32 = 9,
- ctypes_ptr64 = -9,
-
- ctypes_bf = 0, //bif-field
-};
-
-typedef struct be_ctypes_structure_item_t {
- const char * name;
- uint16_t offset_bytes;
- uint8_t offset_bits : 3;
- uint8_t len_bits : 5;
- int8_t type : 5;
- uint8_t mapping : 3;
-} be_ctypes_structure_item_t;
-
-typedef struct be_ctypes_structure_t {
- uint16_t size_bytes; /* size in bytes */
- uint16_t size_elt; /* number of elements */
- const char **instance_mapping; /* array of instance class names for automatic instanciation of class */
- const be_ctypes_structure_item_t * items;
-} be_ctypes_structure_t;
-
-typedef struct be_ctypes_class_t {
- const char * name;
- const be_ctypes_structure_t * definitions;
-} be_ctypes_class_t;
-
-typedef struct be_ctypes_classes_t {
- uint16_t size;
- const char **instance_mapping; /* array of instance class names for automatic instanciation of class */
- const be_ctypes_class_t * classes;
-} be_ctypes_classes_t;
-
-// const be_ctypes_class_t * g_ctypes_classes = NULL;
-
//
// Constructor for ctypes structure
//
@@ -232,6 +174,15 @@ int be_ctypes_member(bvm *vm) {
int32_t val = be_toint(vm, -1);
be_pop(vm, 1);
be_pushcomptr(vm, (void*) val);
+ } else if (ctypes_addr == member->type) {
+ be_getmember(vm, 1, "_buffer"); // self.get or self.geti
+ be_pushvalue(vm, 1); // push self
+ be_call(vm, 1);
+ be_pop(vm, 1);
+ uint8_t *addr = (uint8_t*) be_tocomptr(vm, -1);
+ be_pop(vm, 1);
+ addr += member->offset_bytes;
+ be_pushcomptr(vm, addr);
} else {
// general int support
int size = member->type; // eventually 1/2/4, positive if little endian, negative if big endian
@@ -253,7 +204,7 @@ int be_ctypes_member(bvm *vm) {
be_pop(vm, 3);
// int result at top of stack
}
- // the int result is at top of the stack
+ // the int or comptr result is at top of the stack
// check if we need an instance mapping
if (member->mapping > 0 && definitions->instance_mapping) {
const char * mapping_name = definitions->instance_mapping[member->mapping - 1];
@@ -362,6 +313,9 @@ int be_ctypes_setmember(bvm *vm) {
be_call(vm, 4);
be_pop(vm, 5);
be_return_nil(vm);
+ } else if (ctypes_addr == member->type) {
+ be_raisef(vm, "attribute_error", "class '%s' cannot assign to attribute '%s'",
+ be_classname(vm, 1), be_tostring(vm, 2));
} else {
// general int support
int size = member->type; // eventually 1/2/4, positive if little endian, negative if big endian
diff --git a/lib/libesp32/berry_tasmota/src/be_energylib.c b/lib/libesp32/berry_tasmota/src/be_energylib.c
index b21259058..854f41d60 100644
--- a/lib/libesp32/berry_tasmota/src/be_energylib.c
+++ b/lib/libesp32/berry_tasmota/src/be_energylib.c
@@ -9,6 +9,9 @@
#ifdef USE_ENERGY_SENSOR
+// unless we get it from an include
+#define ENERGY_MAX_PHASES 8 // Support max eight phases/channels
+
extern struct ENERGY Energy;
extern int module_energy_update_total(bvm *vm);
@@ -21,10 +24,17 @@ module energy (scope: global) {
init, closure(module_energy_init_closure)
_ptr, comptr(&Energy)
_deref, closure(module_energy__deref_closure)
+ _phases, int(ENERGY_MAX_PHASES)
+
+ _phases_float, class(be_class_energy_phases_float)
+ _phases_int32, class(be_class_energy_phases_int32)
+ _phases_uint8, class(be_class_energy_phases_uint8)
+ _phases_uint16, class(be_class_energy_phases_uint16)
read, closure(module_energy_read_closure)
member, closure(module_energy_member_closure)
setmember, closure(module_energy_setmember_closure)
+ tomap, closure(module_energy_tomap_closure)
update_total, func(module_energy_update_total)
}
diff --git a/lib/libesp32/berry_tasmota/src/be_img_lib.c b/lib/libesp32/berry_tasmota/src/be_img_lib.c
new file mode 100644
index 000000000..91e94b85e
--- /dev/null
+++ b/lib/libesp32/berry_tasmota/src/be_img_lib.c
@@ -0,0 +1,39 @@
+/********************************************************************
+ * Berry class `img`
+ *
+ *******************************************************************/
+
+#include "be_constobj.h"
+
+#ifdef USE_BERRY_IMAGE
+
+extern int be_img_init(bvm *vm);
+extern int be_img_deinit(bvm *vm);
+extern int be_img_from_jpg(bvm *vm);
+extern int be_img_from_buffer(bvm *vm);
+extern int be_img_get_buffer(bvm *vm);
+extern int be_img_convert_to(bvm *vm);
+extern int be_img_info(bvm *vm);
+
+/* @const_object_info_begin
+class be_class_img (scope: global, name: img, strings: weak) {
+ .p, var
+
+ GRAYSCALE, int(3)
+ RGB565, int(0)
+ RGB888, int(5)
+ JPEG, int(4)
+
+ init, func(be_img_init)
+ deinit, func(be_img_deinit)
+ from_jpg, func(be_img_from_jpg)
+ from_buffer, func(be_img_from_buffer)
+ get_buffer, func(be_img_get_buffer)
+ convert_to, func(be_img_convert_to)
+ info, func(be_img_info)
+}
+@const_object_info_end */
+
+#include "be_fixed_be_class_img.h"
+
+#endif // USE_BERRY_IMAGE
diff --git a/lib/libesp32/berry_tasmota/src/be_port.cpp b/lib/libesp32/berry_tasmota/src/be_port.cpp
index 0c70bf61c..db40e153f 100644
--- a/lib/libesp32/berry_tasmota/src/be_port.cpp
+++ b/lib/libesp32/berry_tasmota/src/be_port.cpp
@@ -216,7 +216,10 @@ extern "C" {
BERRY_API char* be_readstring(char *buffer, size_t size)
{
- return be_fgets(stdin, buffer, (int)size);
+ if ((size > 0) && (buffer != NULL)) {
+ *buffer = 0;
+ }
+ return buffer;
}
/* use the standard library implementation file API. */
diff --git a/lib/libesp32/berry_tasmota/src/be_webserver_async_lib.c b/lib/libesp32/berry_tasmota/src/be_webserver_async_lib.c
new file mode 100644
index 000000000..1589352ab
--- /dev/null
+++ b/lib/libesp32/berry_tasmota/src/be_webserver_async_lib.c
@@ -0,0 +1,5 @@
+/********************************************************************
+ * Class `webserver_async` for simple asynchronous non-blocking web server
+ *
+ *******************************************************************/
+#include "solidify/solidified_webserver_async.h"
diff --git a/lib/libesp32/berry_tasmota/src/be_zigbee.c b/lib/libesp32/berry_tasmota/src/be_zigbee.c
index 22c67301a..7ec6f7bba 100644
--- a/lib/libesp32/berry_tasmota/src/be_zigbee.c
+++ b/lib/libesp32/berry_tasmota/src/be_zigbee.c
@@ -49,8 +49,10 @@ static int zd_member(bvm *vm) {
be_return(vm);
}
+extern int zc_started(struct bvm *vm);
extern int zc_info(struct bvm *vm);
extern int zc_item(struct bvm *vm);
+extern int zc_find(struct bvm *vm);
extern int32_t zc_size(void* d); BE_FUNC_CTYPE_DECLARE(zc_size, "i", ".");
extern int zc_iter(bvm *vm);
extern void zc_abort(void); BE_FUNC_CTYPE_DECLARE(zc_abort, "", ".");
@@ -111,8 +113,11 @@ class be_class_zb_coord_ntv (scope: global, name: zb_coord_ntv, strings: weak) {
zcl_attribute_list, class(be_class_zcl_attribute_list)
zb_device, class(be_class_zb_device)
+ started, func(zc_started)
+
info, func(zc_info)
item, func(zc_item)
+ find, func(zc_find)
size, ctype_func(zc_size)
iter, func(zc_iter)
diff --git a/lib/libesp32/berry_tasmota/src/embedded/energy.be b/lib/libesp32/berry_tasmota/src/embedded/energy.be
index 2f5bb2e1d..9a21db917 100644
--- a/lib/libesp32/berry_tasmota/src/embedded/energy.be
+++ b/lib/libesp32/berry_tasmota/src/embedded/energy.be
@@ -2,8 +2,117 @@
_energy = nil # avoid compilation error
energy_struct = nil
+#@ solidify:bytes_array
+# implement an array of simple types
+class bytes_array : bytes
+ var item_type # item_type number for each element
+ var sz # size (number of items in the array)
+ var item_size # size in bytes of each element (inferred from item_type)
+
+ def init(ptr, item_type, sz)
+ self.item_type = item_type
+ self.sz = sz
+ var item_size # size in bytes of each element
+ if (item_type >= -4) && (item_type <= 4) && (item_type != 0)
+ item_size = (item_type > 0) ? item_type : - item_type
+ elif (item_type == 5)
+ item_size = 4
+ else
+ raise "value error", "unsupported item_type number"
+ end
+ self.item_size = item_size
+ super(self).init(ptr, self.item_size * self.sz)
+ end
+
+ def item(idx)
+ if (idx < 0) idx += self.sz end
+ if (idx < 0) || (idx >= self.sz)
+ raise "index_error", "list index out of range"
+ end
+ if (self.item_type == 5)
+ return self.getfloat(idx * self.item_size)
+ else
+ return self.get(idx * self.item_size, self.item_type)
+ end
+ end
+
+ def setitem(idx, v)
+ if (idx < 0) idx += self.sz end
+ if (idx < 0) || (idx >= self.sz)
+ raise "index_error", "list assignment index out of range"
+ end
+ if (self.item_type == 5)
+ return self.setfloat(idx * self.item_size, v)
+ else
+ return self.set(idx * self.item_size, self.item_type, v)
+ end
+ end
+
+ def size()
+ return self.sz
+ end
+
+ def tostring()
+ var ret = '['
+ var idx = 0
+ while (idx < self.sz)
+ if idx > 0
+ ret += ','
+ end
+ #
+ if (self.item_type == 5)
+ ret += str(self.getfloat(idx * self.item_size))
+ else
+ ret += str(self.get(idx * self.item_size, self.item_type))
+ end
+
+ idx += 1
+ end
+ ret += ']'
+ return ret
+ end
+end
+
+#@ solidify:energy_phases_float
+class energy_phases_float : bytes_array
+ def init(ptr)
+ import energy
+ super(self).init(ptr, 5 #-type float-#, energy._phases)
+ end
+end
+
+
+#@ solidify:energy_phases_int32
+class energy_phases_int32 : bytes_array
+ def init(ptr)
+ import energy
+ super(self).init(ptr, 4 #-type int32-#, energy._phases)
+ end
+end
+
+#@ solidify:energy_phases_uint8
+class energy_phases_uint8 : bytes_array
+ def init(ptr)
+ import energy
+ super(self).init(ptr, 1 #-type int32-#, energy._phases)
+ end
+end
+
+#@ solidify:energy_phases_uint16
+class energy_phases_uint16 : bytes_array
+ def init(ptr)
+ import energy
+ super(self).init(ptr, 2 #-type uint16-#, energy._phases)
+ end
+end
+
energy = module("energy")
-energy._ptr = nil
+energy._ptr = nil # will be replaced by C code
+energy._phases = 8 # will be replaced by C code
+energy._phases_float = energy_phases_float
+energy._phases_int32 = energy_phases_int32
+energy._phases_uint8 = energy_phases_uint8
+energy._phases_uint16 = energy_phases_uint16
def init(m)
global._energy = nil
@@ -46,8 +155,17 @@ def setmember(k, v)
end
energy.setmember = setmember
+def tomap()
+ energy._deref()
+ if global._energy
+ return _energy.tomap()
+ end
+end
+energy.tomap = tomap
+
#@ solidify:energy.init
#@ solidify:energy._deref
#@ solidify:energy.read
#@ solidify:energy.member
#@ solidify:energy.setmember
+#@ solidify:energy.tomap
diff --git a/lib/libesp32/berry_tasmota/src/embedded/persist.be b/lib/libesp32/berry_tasmota/src/embedded/persist.be
index 901b7e2d5..51bdd55da 100644
--- a/lib/libesp32/berry_tasmota/src/embedded/persist.be
+++ b/lib/libesp32/berry_tasmota/src/embedded/persist.be
@@ -15,17 +15,10 @@ class Persist
var _p
var _dirty
- #- persist can be initialized with pre-existing values. The map is not copied so any change will be reflected -#
- def init(m)
- # print("Persist init")
- if isinstance(m,map)
- self._p = m.copy() # need to copy instead?
- else
- self._p = {}
- end
- self.load(self._p, self._filename)
+ def init()
+ self._p = {}
self._dirty = false
- # print("Persist init")
+ self.load()
end
#- virtual member getter, if a key does not exists return `nil` instead of exception -#
@@ -50,8 +43,12 @@ class Persist
self._dirty = true
end
- def has(k)
- return self._p.has(k)
+ def contains(k)
+ return self._p.contains(k)
+ end
+
+ def has(k) # deprecated, use contains instead
+ return self._p.contains(k)
end
def find(k, d)
@@ -74,7 +71,7 @@ class Persist
raise e, m
end
if isinstance(val, map)
- self._p = val # sucess
+ self._p = val # success
else
print("BRY: failed to load _persist.json")
end
@@ -87,24 +84,25 @@ class Persist
end
def save()
- var f # file object
- try
- f = open(self._filename, "w")
- self.json_fdump(f)
- f.close()
- except .. as e, m
- if f != nil f.close() end
- f = nil
+ if self._dirty # do not save if not dirty
+ var f # file object
try
f = open(self._filename, "w")
- f.write('{}') # fallback write empty map
- except ..
+ self.json_fdump(f)
+ f.close()
+ except .. as e, m
+ if (f != nil) f.close() end
+ f = nil
+ try
+ f = open(self._filename, "w")
+ f.write('{}') # fallback write empty map
+ except ..
+ end
+ if f != nil f.close() end
+ raise e, m
end
- if f != nil f.close() end
- raise e, m
+ self._dirty = false
end
- self._dirty = false
- # print("Saving")
end
def json_fdump_any(f, v)
diff --git a/lib/libesp32/berry_tasmota/src/embedded/webserver_async.be b/lib/libesp32/berry_tasmota/src/embedded/webserver_async.be
new file mode 100644
index 000000000..c14b5dccf
--- /dev/null
+++ b/lib/libesp32/berry_tasmota/src/embedded/webserver_async.be
@@ -0,0 +1,723 @@
+#
+# webserber_async.be - implements a generic async non-blocking HTTP server
+#
+# Copyright (C) 2023 Stephan Hadinger & Theo Arends
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+
+# restrictions for now:
+#
+# Listen to all interfaces
+# - GET only
+# - no HTTPS
+# - support for limited headers
+# - HTTP 1.0 only
+
+#@ solidify:webserver_async.webserver_async_cnx,weak
+#@ solidify:webserver_async.webserver_async_dispatcher,weak
+#@ solidify:webserver_async,weak
+
+class webserver_async
+ #############################################################
+ # class webserver_async_cnx
+ #
+ # This instance represents an active connection between
+ # the server and a client (TCP connection)
+ #############################################################
+ static class webserver_async_cnx
+ var server # link to server object
+ var cnx # holds the tcpclientasync instance
+ var close_after_send # if true, close after we finished sending the out_buffer
+ var fastloop_cb # cb for fastloop
+ var buf_in # incoming buffer
+ var buf_in_offset
+ var buf_out
+ var phase # parsing phase: 0/ status line, 1/ headers, 2/ payload
+ # request
+ var req_verb # verb for request (we support only GET)
+ var req_uri # URI for request
+ var req_version # HTTP version for request
+ var header_host # 'Host' header - useful for redirections
+ # response
+ var resp_headers # (string) aggregate headers
+ var chunked # if true enable chunked encoding (default true)
+ # conversion
+ static var CODE_TO_STRING = {
+ # 100: "Continue",
+ 200: "OK",
+ # 204: "No Content",
+ 301: "Moved Permanently",
+ # 400: "Bad Request",
+ # 401: "Unauthorized",
+ # 403: "Payment Required", # not sure it's useful in Tasmota context
+ 404: "Not Found",
+ 500: "Internal Server Error",
+ # 501: "Not Implemented"
+ }
+
+ #############################################################
+ # init
+ #
+ # Called when a new connection is received from a client
+ # Arg:
+ # - server : main instance of `webserver_async` server
+ # - cnx : instance of `tcpclientasync`
+ #
+ # By default:
+ # version is HTTP/1.1
+ # response is chunked-encoded
+ def init(server, cnx)
+ self.server = server
+ self.cnx = cnx
+ self.buf_in = ''
+ self.buf_in_offset = 0
+ self.buf_out = bytes()
+ self.phase = 0 # 0 = status line
+ # util
+ self.close_after_send = false
+ # response
+ self.resp_headers = ''
+ self.chunked = true
+ # register cb
+ self.fastloop_cb = def () self.loop() end # the closure needs to be kept, to allow removal of fast_loop later
+ tasmota.add_fast_loop(self.fastloop_cb)
+ end
+
+ #############################################################
+ # set_chunked: sets whether the response is chunked encoded
+ # true by default
+ #
+ def set_chunked(chunked)
+ self.chunked = bool(chunked)
+ end
+
+ #############################################################
+ # connected: returns `true` if the connection is still open
+ #
+ def connected()
+ return self.cnx ? self.cnx.connected() : false
+ end
+
+ #############################################################
+ # buf_out_empty: returns `true` if out buffer is empty,
+ # i.e. all content was sent to client
+ #
+ def buf_out_empty()
+ return size(self.buf_out) == 0
+ end
+
+ #############################################################
+ # _write: (internal method) write bytes
+ #
+ # Arg:
+ # v must be bytes()
+ #
+ def _write(v)
+ var sz_v = size(v)
+ if (sz_v == 0) return end # do nothing if empty content
+
+ var buf_out = self.buf_out # keep a copy of reference in local variable (avoids multiple dereferencing)
+ var buf_out_sz = size(buf_out)
+ buf_out.resize(buf_out_sz + sz_v)
+ buf_out.setbytes(buf_out_sz, v)
+
+ self._send() # try sending `self.buf_out` now
+ end
+
+ #############################################################
+ # close: close the connection to client
+ #
+ # Can be called multiple times
+ # Does nothing if connection is already closed
+ #
+ def close()
+ # log(f"WEB: closing cnx", 3)
+ if (self.cnx != nil) self.cnx.close() end
+ self.cnx = nil
+ end
+
+ #############################################################
+ # loop: called by fastloop every 5 ms
+ #
+ def loop()
+ if self.cnx == nil # if connection is closed, this instance is marked for deletion
+ tasmota.remove_fast_loop(self.fastloop_cb) # remove from fast_loop
+ self.fastloop_cb = nil # fastloop_cb can be garbage collected
+ return
+ end
+
+ self._send() # try sending any pending output data
+
+ var cnx = self.cnx # keep copy
+ if (cnx == nil) return end # it's possible that it was closed after _send()
+
+ # any new incoming data received?
+ if cnx.available() > 0
+ var buf_in_new = cnx.read() # read bytes() object
+ if (!self.buf_in) # use the same instance if none present
+ self.buf_in = buf_in_new
+ else # or append to current incoming buffer
+ self.buf_in += buf_in_new
+ end
+ end
+
+ # parse incoming data if any
+ if (self.buf_in)
+ self.parse()
+ end
+ end
+
+ #############################################################
+ # _send: (internal method) try sending pendin data out
+ #
+ # the content is in `self.buf_out`
+ #
+ def _send()
+ # any data waiting to go out?
+ var cnx = self.cnx
+ if (cnx == nil) return end # abort if connection is closed
+
+ var buf_out = self.buf_out # keep reference in local variable
+ if size(buf_out) > 0
+ if cnx.listening() # is the client ready to receive?
+ var sent = cnx.write(buf_out) # send the buffer, `sent` contains the number of bytes actually sent
+ if sent > 0 # did we succeed in sending anything?
+ # we did sent something
+ if sent >= size(buf_out) # the entire buffer was sent, clear it
+ # all sent
+ self.buf_out.clear()
+ else # buffer was sent partially, remove what was sent from `out_buf`
+ # remove the first bytes already sent
+ self.buf_out.setbytes(0, buf_out, sent) # copy to index 0 (start of buffer), content from the same buffer starting at offset 'sent'
+ self.buf_out.resize(size(buf_out) - sent) # shrink buffer
+ end
+ end
+ end
+ else
+ # empty buffer, do the cleaning
+ # self.buf_out.clear() # TODO not needed?
+ # self.buf_in_offset = 0 # TODO really useful?
+
+ if self.close_after_send # close connection if we have sent everything
+ self.close()
+ end
+ end
+ end
+
+ #############################################################
+ # parse incoming
+ #
+ # pre: self.buf_in is not empty
+ # post: self.buf_in has made progress (smaller or '')
+ def parse()
+ # log(f"WEB: incoming {bytes().fromstring(self.buf_in).tohex()}", 3)
+ if self.phase == 0
+ self.parse_http_req_line()
+ elif self.phase == 1
+ self.parse_http_headers()
+ elif self.phase == 2
+ self.parse_http_payload()
+ end
+ end
+
+ #############################################################
+ # parse incoming request
+ #
+ # pre: self.buf_in is not empty
+ # post: self.buf_in has made progress (smaller or '')
+ def parse_http_req_line()
+ var m = global._re_http_srv.match2(self.buf_in, self.buf_in_offset)
+ # Ex: "GET / HTTP/1.1\r\n"
+ if m
+ var offset = m[0]
+ self.req_verb = m[1] # GET/POST...
+ self.req_uri = m[2] # /
+ self.req_version = m[3] # "1.0" or "1.1"
+ self.phase = 1 # proceed to parsing headers
+ self.buf_in = self.buf_in[offset .. ] # remove what we parsed
+ if tasmota.loglevel(4)
+ log(f"WEB: HTTP verb: {self.req_verb} URI: '{self.req_uri}' Version:{self.req_version}", 4)
+ end
+ self.parse_http_headers()
+ elif size(self.buf_in) > 100 # if no match and we still have 100 bytes, then it fails
+ log("WEB: error invalid request", 4)
+ self.close()
+ self.buf_in = ''
+ end
+ end
+
+ #############################################################
+ # parse incoming headers
+ def parse_http_headers()
+ while true
+ # print("parse_http_headers", "self.buf_in_offset=", self.buf_in_offset)
+ var m = global._re_http_srv_header.match2(self.buf_in, self.buf_in_offset)
+ # print("m=", m)
+ # Ex: [32, 'Content-Type', 'application/json']
+ if m
+ self.event_http_header(m[1], m[2])
+ self.buf_in_offset += m[0]
+ else # no more headers
+ var m2 = global._re_http_srv_body.match2(self.buf_in, self.buf_in_offset)
+ if m2
+ # end of headers
+ # we keep \r\n which is used by pattern
+ self.buf_in = self.buf_in[self.buf_in_offset + m2[0] .. ] # truncate
+ self.buf_in_offset = 0
+
+ # self.event_http_headers_end() # no more headers
+ self.phase = 2
+ self.parse_http_payload() # continue to parsing payload
+ end
+ if size(self.buf_in) > 1024 # we don't accept a single header larger than 1KB
+ log("WEB: error header is bigger than 1KB", 4)
+ self.close()
+ self.buf_in = ''
+ end
+ return
+ end
+ end
+
+ end
+
+ #############################################################
+ # event_http_header: method called for each header received
+ #
+ # Default implementation only stores "Host" header
+ # and ignores all other headers
+ #
+ # Args:
+ # header_key: string
+ # header_value: string
+ #
+ def event_http_header(header_key, header_value)
+ # log(f"WEB: header key '{header_key}' = '{header_value}'")
+
+ if (header_key == "Host")
+ self.header_host = header_value
+ end
+ end
+
+ #############################################################
+ # event_http_headers_end: called afte all headers are received
+ #
+ # By default does nothing
+ #
+ # def event_http_headers_end()
+ # end
+
+ #############################################################
+ # parse incoming payload (if any)
+ #
+ # Calls the server's dispatcher with 'verb' and 'uri'
+ #
+ # Payload is in `self.buf_in`
+ #
+ def parse_http_payload()
+ # log(f"WEB: parsing payload '{bytes().fromstring(self.buf_in).tohex()}'")
+ # dispatch request before parsing payload
+ self.server.dispatch(self, self.req_uri, self.req_verb)
+ end
+
+
+ #############################################################
+ # Responses
+ #############################################################
+ # send_header: add header to the response
+ #
+ # Args:
+ # name: key of header
+ # value: value of header
+ # first: if 'true' prepend, or append if 'false'
+ def send_header(name, value, first)
+ if first
+ self.resp_headers = f"{name}: {value}\r\n{self.resp_headers}"
+ else
+ self.resp_headers = f"{self.resp_headers}{name}: {value}\r\n"
+ end
+ end
+
+ #############################################################
+ # send: send response to client
+ #
+ # Args
+ # code: (int) http code (ex: 200)
+ # content_type: (string, opt) MIME type, "text/html" if not specified
+ # content: (bytes or string, opt) first content to send to client (you can send more later)
+ #
+ def send(code, content_type, content)
+ var response = f"HTTP/1.1 {code} {self.CODE_TO_STRING.find(code, 'UNKNOWN')}\r\n"
+ self.send_header("Content-Type", content_type ? content_type : "text/html", true)
+
+ self.send_header("Accept-Ranges", "none")
+ # chunked encoding?
+ if self.chunked
+ self.send_header("Transfer-Encoding", "chunked")
+ end
+ # cors?
+ if self.server.cors
+ self.send_header("Access-Control-Allow-Origin", "*")
+ self.send_header("Access-Control-Allow-Methods", "*")
+ self.send_header("Access-Control-Allow-Headers", "*")
+ end
+ # others
+ self.send_header("Connection", "close")
+
+ response += self.resp_headers
+ response += "\r\n"
+ self.resp_headers = nil
+
+ # send status-line and headers
+ self.write_raw(response)
+
+ # send first part of content
+ if (content) self.write(content) end
+ end
+
+ #############################################################
+ # write: writes a bytes or string piece of content
+ #
+ # If chunked encoding is enabled, it is sent as a separate chunk
+ #
+ # If content is empty, it can be sent as an empty chunk
+ # which is an indicator of end-of-content
+ #
+ def write(v)
+ if type(v) == 'string' # if string, convert to bytes
+ v = bytes().fromstring(v)
+ end
+
+ # use chunk encoding
+ if self.chunked
+ var p1 = self.server.p1
+ p1.clear()
+ p1.append(f"{size(v):X}\r\n")
+ p1.append(v)
+ p1.append("\r\n")
+
+ # log(f"WEB: sending chunk '{p1.tohex()}'")
+ self._write(p1)
+ else
+ self._write(v)
+ end
+ end
+
+ #############################################################
+ # write_raw: low-level write of string or bytes (without chunk encoding)
+ #
+ # If content is empty, nothing is sent
+ #
+ def write_raw(v)
+ if (size(v) == 0) return end
+
+ if type(v) == 'string' # if string, convert to bytes
+ v = bytes().fromstring(v)
+ end
+
+ self._write(v)
+ end
+
+ #############################################################
+ # content_stop: signal that the response is finished
+ #
+ def content_stop()
+ self.write('') # send 'end-of-content' for chunked encoding
+ self.close_after_send = true # close connection when everything was sent to client
+ end
+ end
+
+ #######################################################################
+ # class webserver_async_dispatcher
+ #
+ # Pre-register callbacks triggered when a certain URL is accessed
+ #
+ # You can register either a pure function or a method and an instance
+ #
+ # Pure function:
+ # webserver_async_dispatcher(uri_prefix, nil, func, verb)
+ # will call:
+ # func(cnx, uri, verb)
+ #
+ # Instance and method:
+ # webserver_async_dispatcher(uri_prefix, instance, method, verb)
+ # will call:
+ # insatnce.method(cnx, uri, verb)
+ #
+ # Args in:
+ # uri_prefix: prefix string for matchin URI, must start with '/'
+ # cb_obj: 'nil' for pure function or instance from which we call a method
+ # cb_mth: pure function or method to call
+ # verb: verb to match, only supported: 'GET' or 'nil' for any
+ #
+ # Args of callback:
+ # cnx: instance of 'webserver_async_cnx' for the current connection
+ # uri: full uri of request
+ # verb: verb received (currently only GET is supported)
+ #######################################################################
+ static class webserver_async_dispatcher
+ var uri_prefix # prefix string, must start with '/'
+ var verb # verb to match, or nil for ANY
+ var cb_obj # callback object (sent as first argument if not 'nil')
+ var cb_mth # callback function
+
+ def init(uri_prefix, cb_obj, cb_mth, verb)
+ self.uri_prefix = uri_prefix
+ self.cb_obj = cb_obj
+ self.cb_mth = cb_mth
+ self.verb = verb
+ end
+
+ # return true if matched
+ def dispatch(cnx, uri, verb)
+ import string
+ if string.find(uri, self.uri_prefix) == 0
+ var match = false
+ if (self.verb == nil) || (self.verb == verb)
+ # method is valid
+ var cb_obj = self.cb_obj
+ if (cb_obj != nil)
+ self.cb_mth(self.cb_obj, cnx, uri, verb)
+ else
+ self.cb_mth(cnx, uri, verb)
+ end
+ return true
+ end
+ end
+ return false
+ end
+ end
+
+ #############################################################
+ # class webserver_async
+ #
+ # This is the main class to call
+ #############################################################
+ var local_port # listening port, 80 is already used by Tasmota
+ var server # instance of `tcpserver`
+ var fastloop_cb # closure used by fastloop
+ # var timeout # default timeout for tcp connection
+ var connections # list of active connections
+ # var auth # web authentication string (Basic Auth) or `nil`, in format `user:password` as bade64
+ # var cmd # GET url command
+ var dispatchers
+ # copied in each connection
+ var chunked # if true enable chunked encoding (default true)
+ var cors # if true send CORS headers (default false)
+ #
+ var p1 # temporary object bytes() to avoid reallocation
+
+ # static var TIMEOUT = 1000 # default timeout: 1000ms
+ # static var HTTP_REQ = "^(\\w+) (\\S+) HTTP\\/(\\d\\.\\d)\r\n"
+ # static var HTTP_HEADER_REGEX = "([A-Za-z0-9-]+): (.*?)\r\n" # extract a header with its 2 parts
+ # static var HTTP_BODY_REGEX = "\r\n" # end of headers
+
+ #############################################################
+ # init
+ def init(port, timeout)
+ # if (timeout == nil) timeout = self.TIMEOUT end
+ # if (timeout == nil) timeout = 1000 end
+ self.connections = []
+ self.dispatchers = []
+ self.server = tcpserver(port) # throws an exception if port is not available
+ self.chunked = true
+ self.cors = false
+ self.p1 = bytes(100) # reserve 100 bytes by default
+ # TODO what about max_clients ?
+ self.compile_re()
+ # register cb
+ tasmota.add_driver(self)
+ self.fastloop_cb = def () self.loop() end
+ tasmota.add_fast_loop(self.fastloop_cb)
+ end
+
+ #############################################################
+ # compile once for all the regex
+ def compile_re()
+ import re
+ if !global.contains("_re_http_srv")
+ # global._re_http_srv = re.compile(self.HTTP_REQ)
+ # global._re_http_srv_header = re.compile(self.HTTP_HEADER_REGEX)
+ # global._re_http_srv_body = re.compile(self.HTTP_BODY_REGEX)
+ global._re_http_srv = re.compile("^(\\w+) (\\S+) HTTP\\/(\\d\\.\\d)\r\n")
+ global._re_http_srv_header = re.compile("([A-Za-z0-9-]+): (.*?)\r\n")
+ global._re_http_srv_body = re.compile("\r\n")
+ end
+ end
+
+ #############################################################
+ # enable or disable chunked mode (enabled by default)
+ def set_chunked(chunked)
+ self.chunked = bool(chunked)
+ end
+
+ #############################################################
+ # enable or disable CORS mode (enabled by default)
+ def set_cors(cors)
+ self.cors = bool(cors)
+ end
+
+ #############################################################
+ # Helper function to encode integer as hex (uppercase)
+ static def bytes_format_hex(b, i, default)
+ b.clear()
+ if (i == nil) b .. default return end
+ # sanity check
+ if (i < 0) i = -i end
+ if (i < 0) return end # special case for MININT
+ if (i == 0) b.resize(1) b[0] = 0x30 return end # return bytes("30")
+
+ b.resize(8)
+ var len = 0
+ while i > 0
+ var digit = i & 0x0F
+ if (digit < 10)
+ b[len] = 0x30 + digit
+ else
+ b[len] = 0x37 + digit # 0x37 = 0x41 ('A') - 10
+ end
+ len += 1
+ i = (i >> 4)
+ end
+ # reverse order
+ b.resize(len)
+ b.reverse()
+ end
+
+ #############################################################
+ # Helper function to encode integer as int
+ static def bytes_format_int(b, i, default)
+ b.clear()
+ if (i == nil) b .. default return end
+ var negative = false
+ # sanity check
+ if (i < 0) i = -i negative = true end
+ if (i < 0) return end # special case for MININT
+ if (i == 0) b.resize(1) b[0] = 0x30 return end # return bytes("30")
+
+ b.resize(11) # max size for 32 bits ints '-2147483647'
+ var len = 0
+ while i > 0
+ var digit = i % 10
+ b[len] = 0x30 + digit
+ len += 1
+ i = (i / 10)
+ end
+ if negative
+ b[len] = 0x2D
+ len += 1
+ end
+ # reverse order
+ b.resize(len)
+ b.reverse()
+ end
+
+ #############################################################
+ # closing web server
+ def close()
+ tasmota.remove_driver(self)
+ tasmota.remove_fast_loop(self.fastloop_cb)
+ self.fastloop_cb = nil
+ self.server.close()
+
+ # close all active connections
+ for cnx: self.connections
+ cnx.close()
+ end
+ self.connections = nil # and free memory
+ end
+
+ #############################################################
+ # clean connections
+ #
+ # Remove any connections that is closed or in error
+ def clean_connections()
+ var idx = 0
+ while idx < size(self.connections)
+ var cnx = self.connections[idx]
+ # remove if not connected
+ if !cnx.connected()
+ # log("WEB: does not appear to be connected")
+ cnx.close()
+ self.connections.remove(idx)
+ else
+ idx += 1
+ end
+ end
+ end
+
+ #############################################################
+ # called by fastloop
+ def loop()
+ self.clean_connections()
+ # check if any incoming connection
+ while self.server.hasclient()
+ # retrieve new client
+ var cnx = self.webserver_async_cnx(self, self.server.acceptasync())
+ cnx.set_chunked(self.chunked)
+ self.connections.push(cnx)
+ end
+ end
+
+ #############################################################
+ # add to dispatcher
+ def on(prefix, obj, mth, verb)
+ var dispatcher = self.webserver_async_dispatcher(prefix, obj, mth, verb)
+ self.dispatchers.push(dispatcher)
+ end
+
+ #############################################################
+ # add to dispatcher
+ def dispatch(cnx, uri, verb)
+ var idx = 0
+ while idx < size(self.dispatchers)
+ if (self.dispatchers[idx].dispatch(cnx, uri, verb))
+ return
+ end
+ idx += 1
+ end
+ # fallback unsupported request
+ cnx.send(500, "text/plain")
+ cnx.write("Unsupported")
+ cnx.content_stop()
+ end
+
+end
+
+return webserver_async
+
+#- Test
+
+var web = webserver_async(888)
+
+def send_more(cnx, i)
+ cnx.write(f"Hello world {i}
")
+ if i < 10
+ tasmota.set_timer(1000, def () send_more(cnx, i+1) end)
+ else
+ cnx.content_stop()
+ end
+end
+
+def f(obj, cnx, uri, verb)
+ cnx.send(200, "text/html")
+ cnx.write("")
+ send_more(cnx, 0)
+ # cnx.write("Hello world")
+ # cnx.content_stop()
+end
+
+web.on("/hello", nil, f)
+
+-#
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_Wire.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_Wire.h
index 36aa24169..5a34d9b53 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_Wire.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_Wire.h
@@ -7,7 +7,6 @@
/********************************************************************
** Solidified function: read_bytes
********************************************************************/
-extern const bclass be_class_Wire;
be_local_closure(class_Wire_read_bytes, /* name */
be_nested_proto(
8, /* nstack */
@@ -16,7 +15,7 @@ be_local_closure(class_Wire_read_bytes, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Wire,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 6]) { /* constants */
/* K0 */ be_nested_str(_begin_transmission),
@@ -62,7 +61,6 @@ be_local_closure(class_Wire_read_bytes, /* name */
/********************************************************************
** Solidified function: write_bytes
********************************************************************/
-extern const bclass be_class_Wire;
be_local_closure(class_Wire_write_bytes, /* name */
be_nested_proto(
7, /* nstack */
@@ -71,7 +69,7 @@ be_local_closure(class_Wire_write_bytes, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Wire,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str(_begin_transmission),
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_autoconf_module.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_autoconf_module.h
index a814e12c7..2e8ea0789 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_autoconf_module.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_autoconf_module.h
@@ -3,64 +3,151 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Autoconf' ktab size: 124, total: 205 (saved 648 bytes)
+static const bvalue be_ktab_class_Autoconf[124] = {
+ /* K0 */ be_nested_str(webserver),
+ /* K1 */ be_nested_str(path),
+ /* K2 */ be_nested_str(check_privileged_access),
+ /* K3 */ be_nested_str(has_arg),
+ /* K4 */ be_nested_str(reapply),
+ /* K5 */ be_nested_str(tasmota),
+ /* K6 */ be_nested_str(log),
+ /* K7 */ be_nested_str(CFG_X3A_X20removing_X20first_X20time_X20marker),
+ /* K8 */ be_const_int(2),
+ /* K9 */ be_nested_str(clear_first_time),
+ /* K10 */ be_nested_str(redirect),
+ /* K11 */ be_nested_str(_X2F_X3Frst_X3D),
+ /* K12 */ be_nested_str(zip),
+ /* K13 */ be_nested_str(CFG_X3A_X20removing_X20autoconf_X20files),
+ /* K14 */ be_nested_str(delete_all_configs),
+ /* K15 */ be_nested_str(arg),
+ /* K16 */ be_nested_str(reset),
+ /* K17 */ be_nested_str(https_X3A_X2F_X2Fraw_X2Egithubusercontent_X2Ecom_X2Ftasmota_X2Fautoconf_X2Fmain_X2F_X25s_X2F_X25s_X2Eautoconf),
+ /* K18 */ be_nested_str(arch),
+ /* K19 */ be_nested_str(CFG_X3A_X20downloading_X20_X27_X25s_X27),
+ /* K20 */ be_nested_str(_X25s_X2Eautoconf),
+ /* K21 */ be_nested_str(webclient),
+ /* K22 */ be_nested_str(begin),
+ /* K23 */ be_nested_str(GET),
+ /* K24 */ be_nested_str(return_X20code_X3D_X25i),
+ /* K25 */ be_nested_str(connection_error),
+ /* K26 */ be_nested_str(write_file),
+ /* K27 */ be_nested_str(close),
+ /* K28 */ be_nested_str(value_error),
+ /* K29 */ be_nested_str(Unknown_X20command),
+ /* K30 */ be_nested_str(CFG_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s),
+ /* K31 */ be_nested_str(content_start),
+ /* K32 */ be_nested_str(Parameter_X20error),
+ /* K33 */ be_nested_str(content_send_style),
+ /* K34 */ be_nested_str(content_send),
+ /* K35 */ be_nested_str(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EException_X3A_X3C_X2Fb_X3E_X3Cbr_X3E_X27_X25s_X27_X3Cbr_X3E_X25s_X3C_X2Fp_X3E),
+ /* K36 */ be_nested_str(content_button),
+ /* K37 */ be_nested_str(BUTTON_CONFIGURATION),
+ /* K38 */ be_nested_str(content_stop),
+ /* K39 */ be_nested_str(_archive),
+ /* K40 */ be_nested_str(_X23init_X2Ebat),
+ /* K41 */ be_nested_str(is_first_time),
+ /* K42 */ be_nested_str(exists),
+ /* K43 */ be_nested_str(set_first_time),
+ /* K44 */ be_nested_str(run_bat),
+ /* K45 */ be_nested_str(CFG_X3A_X20_X27init_X2Ebat_X27_X20done_X2C_X20restarting),
+ /* K46 */ be_nested_str(_X23display_X2Eini),
+ /* K47 */ be_nested_str(display_X2Eini),
+ /* K48 */ be_nested_str(r),
+ /* K49 */ be_nested_str(w),
+ /* K50 */ be_nested_str(readbytes),
+ /* K51 */ be_nested_str(write),
+ /* K52 */ be_nested_str(CFG_X3A_X20_X27display_X2Eini_X27_X20extracted_X2C_X20restarting),
+ /* K53 */ be_nested_str(CFG_X3A_X20could_X20not_X20copy_X20_X27display_X2Eini_X27_X20_X28_X25s_X20_X2D_X20_X25s_X29_X27),
+ /* K54 */ be_nested_str(cmd),
+ /* K55 */ be_nested_str(Restart_X201),
+ /* K56 */ be_nested_str(_X23autoexec_X2Ebat),
+ /* K57 */ be_nested_str(CFG_X3A_X20running_X20),
+ /* K58 */ be_const_int(3),
+ /* K59 */ be_nested_str(CFG_X3A_X20ran_X20_X20),
+ /* K60 */ be_nested_str(_X23autoexec_X2Ebe),
+ /* K61 */ be_nested_str(CFG_X3A_X20loading_X20),
+ /* K62 */ be_nested_str(load),
+ /* K63 */ be_nested_str(CFG_X3A_X20loaded_X20_X20),
+ /* K64 */ be_nested_str(readline),
+ /* K65 */ be_const_int(0),
+ /* K66 */ be_nested_str(_X0A),
+ /* K67 */ be_nested_str(_X0D),
+ /* K68 */ be_nested_str(CFG_X3A_X20could_X20not_X20run_X20_X25s_X20_X28_X25s_X20_X2D_X20_X25s_X29),
+ /* K69 */ be_const_int(1),
+ /* K70 */ be_nested_str(string),
+ /* K71 */ be_nested_str(Auto_X2Dconfiguration),
+ /* K72 */ be_nested_str(_X3Cp_X3E_X3Csmall_X3E_X26nbsp_X3B_X28This_X20feature_X20requires_X20an_X20internet_X20connection_X29_X3C_X2Fsmall_X3E_X3C_X2Fp_X3E),
+ /* K73 */ be_nested_str(get_current_module_path),
+ /* K74 */ be_nested_str(tr),
+ /* K75 */ be_nested_str(get_current_module_name),
+ /* K76 */ be_nested_str(_),
+ /* K77 */ be_nested_str(_X20),
+ /* K78 */ be_nested_str(_error),
+ /* K79 */ be_nested_str(_X26lt_X3BError_X3A_X20apply_X20new_X20or_X20remove_X26gt_X3B),
+ /* K80 */ be_nested_str(_X26lt_X3BNone_X26gt_X3B),
+ /* K81 */ be_nested_str(_X3Cfieldset_X3E_X3Cstyle_X3E_X2Ebdis_X7Bbackground_X3A_X23888_X3B_X7D_X2Ebdis_X3Ahover_X7Bbackground_X3A_X23888_X3B_X7D_X3C_X2Fstyle_X3E),
+ /* K82 */ be_nested_str(_X3Clegend_X3E_X3Cb_X20title_X3D_X27Autoconfiguration_X27_X3E_X26nbsp_X3BCurrent_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E),
+ /* K83 */ be_nested_str(_X3Cp_X3ECurrent_X20configuration_X3A_X20_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Fp_X3E),
+ /* K84 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dreapply_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20),
+ /* K85 */ be_nested_str(onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E),
+ /* K86 */ be_nested_str(_X3Cbutton_X20name_X3D_X27reapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3ERe_X2Dapply_X20current_X20configuration_X3C_X2Fbutton_X3E),
+ /* K87 */ be_nested_str(_X3C_X2Fform_X3E_X3C_X2Fp_X3E),
+ /* K88 */ be_nested_str(_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
+ /* K89 */ be_nested_str(_X3Clegend_X3E_X3Cb_X20title_X3D_X27New_X20autoconf_X27_X3E_X26nbsp_X3BSelect_X20new_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E),
+ /* K90 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dzip_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20),
+ /* K91 */ be_nested_str(onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20change_X20the_X20current_X20configuration_X20and_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E),
+ /* K92 */ be_nested_str(_X3Clabel_X3EChoose_X20a_X20device_X20configuration_X3A_X3C_X2Flabel_X3E_X3Cbr_X3E),
+ /* K93 */ be_nested_str(_X3Cselect_X20name_X3D_X27zip_X27_X3E),
+ /* K94 */ be_nested_str(load_templates),
+ /* K95 */ be_nested_str(_X3Coption_X20value_X3D_X27reset_X27_X3E_X26lt_X3BRemove_X20autoconf_X26gt_X3B_X3C_X2Foption_X3E),
+ /* K96 */ be_nested_str(_X3Coption_X20value_X3D_X27_X25s_X27_X3E_X25s_X3C_X2Foption_X3E),
+ /* K97 */ be_nested_str(stop_iteration),
+ /* K98 */ be_nested_str(_X3C_X2Fselect_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
+ /* K99 */ be_nested_str(_X3Cbutton_X20name_X3D_X27zipapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3EApply_X20configuration_X3C_X2Fbutton_X3E),
+ /* K100 */ be_nested_str(listdir),
+ /* K101 */ be_nested_str(_X2F),
+ /* K102 */ be_nested_str(find),
+ /* K103 */ be_nested_str(_X2Eautoconf),
+ /* K104 */ be_nested_str(remove),
+ /* K105 */ be_nested_str(_X2F_X2Eautoconf),
+ /* K106 */ be_nested_str(json),
+ /* K107 */ be_nested_str(https_X3A_X2F_X2Fraw_X2Egithubusercontent_X2Ecom_X2Ftasmota_X2Fautoconf_X2Fmain_X2F_X25s_manifest_X2Ejson),
+ /* K108 */ be_nested_str(CFG_X3A_X20loading_X20_X27_X25s_X27),
+ /* K109 */ be_nested_str(CFG_X3A_X20return_code_X3D_X25i),
+ /* K110 */ be_nested_str(get_string),
+ /* K111 */ be_nested_str(CFG_X3A_X20loaded_X20_X27_X25s_X27),
+ /* K112 */ be_nested_str(files),
+ /* K113 */ be_nested_str(CFG_X3A_X20exception_X20_X27_X25s_X27_X20_X2D_X20_X27_X25s_X27),
+ /* K114 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dac_X20action_X3D_X27ac_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X3EAuto_X2Dconfiguration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E),
+ /* K115 */ be_nested_str(add_driver),
+ /* K116 */ be_nested_str(CFG_X3A_X20multiple_X20autoconf_X20files_X20found_X2C_X20aborting_X20_X28_X27_X25s_X27_X20_X2B_X20_X27_X25s_X27_X29),
+ /* K117 */ be_nested_str(CFG_X3A_X20No_X20_X27_X2A_X2Eautoconf_X27_X20file_X20found),
+ /* K118 */ be_nested_str(_X23preinit_X2Ebe),
+ /* K119 */ be_nested_str(CFG_X3A_X20removed_X20file_X20_X27_X25s_X27),
+ /* K120 */ be_nested_str(on),
+ /* K121 */ be_nested_str(_X2Fac),
+ /* K122 */ be_nested_str(HTTP_GET),
+ /* K123 */ be_nested_str(HTTP_POST),
+};
+
extern const bclass be_class_Autoconf;
/********************************************************************
** Solidified function: page_autoconf_ctl
********************************************************************/
-extern const bclass be_class_Autoconf;
be_local_closure(class_Autoconf_page_autoconf_ctl, /* name */
be_nested_proto(
11, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Autoconf,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[39]) { /* constants */
- /* K0 */ be_nested_str(webserver),
- /* K1 */ be_nested_str(path),
- /* K2 */ be_nested_str(check_privileged_access),
- /* K3 */ be_nested_str(has_arg),
- /* K4 */ be_nested_str(reapply),
- /* K5 */ be_nested_str(tasmota),
- /* K6 */ be_nested_str(log),
- /* K7 */ be_nested_str(CFG_X3A_X20removing_X20first_X20time_X20marker),
- /* K8 */ be_const_int(2),
- /* K9 */ be_nested_str(clear_first_time),
- /* K10 */ be_nested_str(redirect),
- /* K11 */ be_nested_str(_X2F_X3Frst_X3D),
- /* K12 */ be_nested_str(zip),
- /* K13 */ be_nested_str(CFG_X3A_X20removing_X20autoconf_X20files),
- /* K14 */ be_nested_str(delete_all_configs),
- /* K15 */ be_nested_str(arg),
- /* K16 */ be_nested_str(reset),
- /* K17 */ be_nested_str(https_X3A_X2F_X2Fraw_X2Egithubusercontent_X2Ecom_X2Ftasmota_X2Fautoconf_X2Fmain_X2F_X25s_X2F_X25s_X2Eautoconf),
- /* K18 */ be_nested_str(arch),
- /* K19 */ be_nested_str(CFG_X3A_X20downloading_X20_X27_X25s_X27),
- /* K20 */ be_nested_str(_X25s_X2Eautoconf),
- /* K21 */ be_nested_str(webclient),
- /* K22 */ be_nested_str(begin),
- /* K23 */ be_nested_str(GET),
- /* K24 */ be_nested_str(return_X20code_X3D_X25i),
- /* K25 */ be_nested_str(connection_error),
- /* K26 */ be_nested_str(write_file),
- /* K27 */ be_nested_str(close),
- /* K28 */ be_nested_str(value_error),
- /* K29 */ be_nested_str(Unknown_X20command),
- /* K30 */ be_nested_str(CFG_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s),
- /* K31 */ be_nested_str(content_start),
- /* K32 */ be_nested_str(Parameter_X20error),
- /* K33 */ be_nested_str(content_send_style),
- /* K34 */ be_nested_str(content_send),
- /* K35 */ be_nested_str(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EException_X3A_X3C_X2Fb_X3E_X3Cbr_X3E_X27_X25s_X27_X3Cbr_X3E_X25s_X3C_X2Fp_X3E),
- /* K36 */ be_nested_str(content_button),
- /* K37 */ be_nested_str(BUTTON_CONFIGURATION),
- /* K38 */ be_nested_str(content_stop),
- }),
+ &be_ktab_class_Autoconf, /* shared constants */
&be_const_str_page_autoconf_ctl,
&be_const_str_solidified,
( &(const binstruction[116]) { /* code */
@@ -189,128 +276,96 @@ be_local_closure(class_Autoconf_page_autoconf_ctl, /* name */
/********************************************************************
** Solidified function: autoexec
********************************************************************/
-extern const bclass be_class_Autoconf;
be_local_closure(class_Autoconf_autoexec, /* name */
be_nested_proto(
13, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Autoconf,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[30]) { /* constants */
- /* K0 */ be_nested_str(_archive),
- /* K1 */ be_nested_str(path),
- /* K2 */ be_nested_str(_X23init_X2Ebat),
- /* K3 */ be_nested_str(is_first_time),
- /* K4 */ be_nested_str(exists),
- /* K5 */ be_nested_str(set_first_time),
- /* K6 */ be_nested_str(run_bat),
- /* K7 */ be_nested_str(tasmota),
- /* K8 */ be_nested_str(log),
- /* K9 */ be_nested_str(CFG_X3A_X20_X27init_X2Ebat_X27_X20done_X2C_X20restarting),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str(_X23display_X2Eini),
- /* K12 */ be_nested_str(display_X2Eini),
- /* K13 */ be_nested_str(r),
- /* K14 */ be_nested_str(w),
- /* K15 */ be_nested_str(readbytes),
- /* K16 */ be_nested_str(write),
- /* K17 */ be_nested_str(close),
- /* K18 */ be_nested_str(CFG_X3A_X20_X27display_X2Eini_X27_X20extracted_X2C_X20restarting),
- /* K19 */ be_nested_str(CFG_X3A_X20could_X20not_X20copy_X20_X27display_X2Eini_X27_X20_X28_X25s_X20_X2D_X20_X25s_X29_X27),
- /* K20 */ be_nested_str(cmd),
- /* K21 */ be_nested_str(Restart_X201),
- /* K22 */ be_nested_str(_X23autoexec_X2Ebat),
- /* K23 */ be_nested_str(CFG_X3A_X20running_X20),
- /* K24 */ be_const_int(3),
- /* K25 */ be_nested_str(CFG_X3A_X20ran_X20_X20),
- /* K26 */ be_nested_str(_X23autoexec_X2Ebe),
- /* K27 */ be_nested_str(CFG_X3A_X20loading_X20),
- /* K28 */ be_nested_str(load),
- /* K29 */ be_nested_str(CFG_X3A_X20loaded_X20_X20),
- }),
+ &be_ktab_class_Autoconf, /* shared constants */
&be_const_str_autoexec,
&be_const_str_solidified,
( &(const binstruction[147]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040127, // 0000 GETMBR R1 R0 K39
0x4C080000, // 0001 LDNIL R2
0x1C040202, // 0002 EQ R1 R1 R2
0x78060000, // 0003 JMPF R1 #0005
0x80000200, // 0004 RET 0
0xA4060200, // 0005 IMPORT R1 K1
0x50080000, // 0006 LDBOOL R2 0 0
- 0x880C0100, // 0007 GETMBR R3 R0 K0
- 0x000C0702, // 0008 ADD R3 R3 K2
- 0x8C100103, // 0009 GETMET R4 R0 K3
+ 0x880C0127, // 0007 GETMBR R3 R0 K39
+ 0x000C0728, // 0008 ADD R3 R3 K40
+ 0x8C100129, // 0009 GETMET R4 R0 K41
0x7C100200, // 000A CALL R4 1
0x7812000F, // 000B JMPF R4 #001C
- 0x8C100304, // 000C GETMET R4 R1 K4
+ 0x8C10032A, // 000C GETMET R4 R1 K42
0x5C180600, // 000D MOVE R6 R3
0x7C100400, // 000E CALL R4 2
0x7812000B, // 000F JMPF R4 #001C
- 0x8C100105, // 0010 GETMET R4 R0 K5
+ 0x8C10012B, // 0010 GETMET R4 R0 K43
0x7C100200, // 0011 CALL R4 1
- 0x8C100106, // 0012 GETMET R4 R0 K6
+ 0x8C10012C, // 0012 GETMET R4 R0 K44
0x5C180600, // 0013 MOVE R6 R3
0x7C100400, // 0014 CALL R4 2
- 0xB8120E00, // 0015 GETNGBL R4 K7
- 0x8C100908, // 0016 GETMET R4 R4 K8
- 0x58180009, // 0017 LDCONST R6 K9
- 0x581C000A, // 0018 LDCONST R7 K10
+ 0xB8120A00, // 0015 GETNGBL R4 K5
+ 0x8C100906, // 0016 GETMET R4 R4 K6
+ 0x5818002D, // 0017 LDCONST R6 K45
+ 0x581C0008, // 0018 LDCONST R7 K8
0x7C100600, // 0019 CALL R4 3
0x50080200, // 001A LDBOOL R2 1 0
0x80000800, // 001B RET 0
- 0x88100100, // 001C GETMBR R4 R0 K0
- 0x0010090B, // 001D ADD R4 R4 K11
+ 0x88100127, // 001C GETMBR R4 R0 K39
+ 0x0010092E, // 001D ADD R4 R4 K46
0x5C0C0800, // 001E MOVE R3 R4
- 0x8C100304, // 001F GETMET R4 R1 K4
+ 0x8C10032A, // 001F GETMET R4 R1 K42
0x5C180600, // 0020 MOVE R6 R3
0x7C100400, // 0021 CALL R4 2
0x78120040, // 0022 JMPF R4 #0064
- 0x8C100103, // 0023 GETMET R4 R0 K3
+ 0x8C100129, // 0023 GETMET R4 R0 K41
0x7C100200, // 0024 CALL R4 1
0x74120003, // 0025 JMPT R4 #002A
- 0x8C100304, // 0026 GETMET R4 R1 K4
- 0x5818000C, // 0027 LDCONST R6 K12
+ 0x8C10032A, // 0026 GETMET R4 R1 K42
+ 0x5818002F, // 0027 LDCONST R6 K47
0x7C100400, // 0028 CALL R4 2
0x74120039, // 0029 JMPT R4 #0064
- 0x8C100103, // 002A GETMET R4 R0 K3
+ 0x8C100129, // 002A GETMET R4 R0 K41
0x7C100200, // 002B CALL R4 1
0x78120003, // 002C JMPF R4 #0031
0x5C100400, // 002D MOVE R4 R2
0x74120001, // 002E JMPT R4 #0031
- 0x8C100105, // 002F GETMET R4 R0 K5
+ 0x8C10012B, // 002F GETMET R4 R0 K43
0x7C100200, // 0030 CALL R4 1
0x4C100000, // 0031 LDNIL R4
0x4C140000, // 0032 LDNIL R5
0xA802001A, // 0033 EXBLK 0 #004F
0x60180011, // 0034 GETGBL R6 G17
0x5C1C0600, // 0035 MOVE R7 R3
- 0x5820000D, // 0036 LDCONST R8 K13
+ 0x58200030, // 0036 LDCONST R8 K48
0x7C180400, // 0037 CALL R6 2
0x5C100C00, // 0038 MOVE R4 R6
0x60180011, // 0039 GETGBL R6 G17
- 0x581C000C, // 003A LDCONST R7 K12
- 0x5820000E, // 003B LDCONST R8 K14
+ 0x581C002F, // 003A LDCONST R7 K47
+ 0x58200031, // 003B LDCONST R8 K49
0x7C180400, // 003C CALL R6 2
0x5C140C00, // 003D MOVE R5 R6
- 0x8C18090F, // 003E GETMET R6 R4 K15
+ 0x8C180932, // 003E GETMET R6 R4 K50
0x7C180200, // 003F CALL R6 1
- 0x8C1C0B10, // 0040 GETMET R7 R5 K16
+ 0x8C1C0B33, // 0040 GETMET R7 R5 K51
0x5C240C00, // 0041 MOVE R9 R6
0x7C1C0400, // 0042 CALL R7 2
- 0x8C1C0911, // 0043 GETMET R7 R4 K17
+ 0x8C1C091B, // 0043 GETMET R7 R4 K27
0x7C1C0200, // 0044 CALL R7 1
- 0x8C1C0B11, // 0045 GETMET R7 R5 K17
+ 0x8C1C0B1B, // 0045 GETMET R7 R5 K27
0x7C1C0200, // 0046 CALL R7 1
0x50080200, // 0047 LDBOOL R2 1 0
- 0xB81E0E00, // 0048 GETNGBL R7 K7
- 0x8C1C0F08, // 0049 GETMET R7 R7 K8
- 0x58240012, // 004A LDCONST R9 K18
- 0x5828000A, // 004B LDCONST R10 K10
+ 0xB81E0A00, // 0048 GETNGBL R7 K5
+ 0x8C1C0F06, // 0049 GETMET R7 R7 K6
+ 0x58240034, // 004A LDCONST R9 K52
+ 0x58280008, // 004B LDCONST R10 K8
0x7C1C0600, // 004C CALL R7 3
0xA8040001, // 004D EXBLK 1 1
0x70020014, // 004E JMP #0064
@@ -318,7 +373,7 @@ be_local_closure(class_Autoconf_autoexec, /* name */
0x70020011, // 0050 JMP #0063
0x60200001, // 0051 GETGBL R8 G1
0x60240018, // 0052 GETGBL R9 G24
- 0x58280013, // 0053 LDCONST R10 K19
+ 0x58280035, // 0053 LDCONST R10 K53
0x5C2C0C00, // 0054 MOVE R11 R6
0x5C300E00, // 0055 MOVE R12 R7
0x7C240600, // 0056 CALL R9 3
@@ -326,60 +381,60 @@ be_local_closure(class_Autoconf_autoexec, /* name */
0x4C200000, // 0058 LDNIL R8
0x20200808, // 0059 NE R8 R4 R8
0x78220001, // 005A JMPF R8 #005D
- 0x8C200911, // 005B GETMET R8 R4 K17
+ 0x8C20091B, // 005B GETMET R8 R4 K27
0x7C200200, // 005C CALL R8 1
0x4C200000, // 005D LDNIL R8
0x20200A08, // 005E NE R8 R5 R8
0x78220001, // 005F JMPF R8 #0062
- 0x8C200B11, // 0060 GETMET R8 R5 K17
+ 0x8C200B1B, // 0060 GETMET R8 R5 K27
0x7C200200, // 0061 CALL R8 1
0x70020000, // 0062 JMP #0064
0xB0080000, // 0063 RAISE 2 R0 R0
0x780A0004, // 0064 JMPF R2 #006A
- 0xB8120E00, // 0065 GETNGBL R4 K7
- 0x8C100914, // 0066 GETMET R4 R4 K20
- 0x58180015, // 0067 LDCONST R6 K21
+ 0xB8120A00, // 0065 GETNGBL R4 K5
+ 0x8C100936, // 0066 GETMET R4 R4 K54
+ 0x58180037, // 0067 LDCONST R6 K55
0x7C100400, // 0068 CALL R4 2
0x80000800, // 0069 RET 0
- 0x88100100, // 006A GETMBR R4 R0 K0
- 0x00100916, // 006B ADD R4 R4 K22
+ 0x88100127, // 006A GETMBR R4 R0 K39
+ 0x00100938, // 006B ADD R4 R4 K56
0x5C0C0800, // 006C MOVE R3 R4
- 0x8C100304, // 006D GETMET R4 R1 K4
+ 0x8C10032A, // 006D GETMET R4 R1 K42
0x5C180600, // 006E MOVE R6 R3
0x7C100400, // 006F CALL R4 2
0x7812000C, // 0070 JMPF R4 #007E
- 0xB8120E00, // 0071 GETNGBL R4 K7
- 0x8C100908, // 0072 GETMET R4 R4 K8
- 0x001A2E03, // 0073 ADD R6 K23 R3
- 0x581C0018, // 0074 LDCONST R7 K24
+ 0xB8120A00, // 0071 GETNGBL R4 K5
+ 0x8C100906, // 0072 GETMET R4 R4 K6
+ 0x001A7203, // 0073 ADD R6 K57 R3
+ 0x581C003A, // 0074 LDCONST R7 K58
0x7C100600, // 0075 CALL R4 3
- 0x8C100106, // 0076 GETMET R4 R0 K6
+ 0x8C10012C, // 0076 GETMET R4 R0 K44
0x5C180600, // 0077 MOVE R6 R3
0x7C100400, // 0078 CALL R4 2
- 0xB8120E00, // 0079 GETNGBL R4 K7
- 0x8C100908, // 007A GETMET R4 R4 K8
- 0x001A3203, // 007B ADD R6 K25 R3
- 0x581C0018, // 007C LDCONST R7 K24
+ 0xB8120A00, // 0079 GETNGBL R4 K5
+ 0x8C100906, // 007A GETMET R4 R4 K6
+ 0x001A7603, // 007B ADD R6 K59 R3
+ 0x581C003A, // 007C LDCONST R7 K58
0x7C100600, // 007D CALL R4 3
- 0x88100100, // 007E GETMBR R4 R0 K0
- 0x0010091A, // 007F ADD R4 R4 K26
+ 0x88100127, // 007E GETMBR R4 R0 K39
+ 0x0010093C, // 007F ADD R4 R4 K60
0x5C0C0800, // 0080 MOVE R3 R4
- 0x8C100304, // 0081 GETMET R4 R1 K4
+ 0x8C10032A, // 0081 GETMET R4 R1 K42
0x5C180600, // 0082 MOVE R6 R3
0x7C100400, // 0083 CALL R4 2
0x7812000C, // 0084 JMPF R4 #0092
- 0xB8120E00, // 0085 GETNGBL R4 K7
- 0x8C100908, // 0086 GETMET R4 R4 K8
- 0x001A3603, // 0087 ADD R6 K27 R3
- 0x581C0018, // 0088 LDCONST R7 K24
+ 0xB8120A00, // 0085 GETNGBL R4 K5
+ 0x8C100906, // 0086 GETMET R4 R4 K6
+ 0x001A7A03, // 0087 ADD R6 K61 R3
+ 0x581C003A, // 0088 LDCONST R7 K58
0x7C100600, // 0089 CALL R4 3
- 0xB8123800, // 008A GETNGBL R4 K28
+ 0xB8127C00, // 008A GETNGBL R4 K62
0x5C140600, // 008B MOVE R5 R3
0x7C100200, // 008C CALL R4 1
- 0xB8120E00, // 008D GETNGBL R4 K7
- 0x8C100908, // 008E GETMET R4 R4 K8
- 0x001A3A03, // 008F ADD R6 K29 R3
- 0x581C0018, // 0090 LDCONST R7 K24
+ 0xB8120A00, // 008D GETNGBL R4 K5
+ 0x8C100906, // 008E GETMET R4 R4 K6
+ 0x001A7E03, // 008F ADD R6 K63 R3
+ 0x581C003A, // 0090 LDCONST R7 K58
0x7C100600, // 0091 CALL R4 3
0x80000000, // 0092 RET 0
})
@@ -391,30 +446,17 @@ be_local_closure(class_Autoconf_autoexec, /* name */
/********************************************************************
** Solidified function: run_bat
********************************************************************/
-extern const bclass be_class_Autoconf;
be_local_closure(class_Autoconf_run_bat, /* name */
be_nested_proto(
12, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Autoconf,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str(r),
- /* K1 */ be_nested_str(readline),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str(_X0A),
- /* K4 */ be_nested_str(_X0D),
- /* K5 */ be_nested_str(tasmota),
- /* K6 */ be_nested_str(cmd),
- /* K7 */ be_nested_str(close),
- /* K8 */ be_nested_str(log),
- /* K9 */ be_nested_str(CFG_X3A_X20could_X20not_X20run_X20_X25s_X20_X28_X25s_X20_X2D_X20_X25s_X29),
- /* K10 */ be_const_int(1),
- }),
+ &be_ktab_class_Autoconf, /* shared constants */
&be_const_str_run_bat,
&be_const_str_solidified,
( &(const binstruction[68]) { /* code */
@@ -422,66 +464,66 @@ be_local_closure(class_Autoconf_run_bat, /* name */
0xA802002D, // 0001 EXBLK 0 #0030
0x600C0011, // 0002 GETGBL R3 G17
0x5C100200, // 0003 MOVE R4 R1
- 0x58140000, // 0004 LDCONST R5 K0
+ 0x58140030, // 0004 LDCONST R5 K48
0x7C0C0400, // 0005 CALL R3 2
0x5C080600, // 0006 MOVE R2 R3
0x500C0200, // 0007 LDBOOL R3 1 0
0x780E0022, // 0008 JMPF R3 #002C
- 0x8C0C0501, // 0009 GETMET R3 R2 K1
+ 0x8C0C0540, // 0009 GETMET R3 R2 K64
0x7C0C0200, // 000A CALL R3 1
0x6010000C, // 000B GETGBL R4 G12
0x5C140600, // 000C MOVE R5 R3
0x7C100200, // 000D CALL R4 1
- 0x1C100902, // 000E EQ R4 R4 K2
+ 0x1C100941, // 000E EQ R4 R4 K65
0x78120000, // 000F JMPF R4 #0011
0x7002001A, // 0010 JMP #002C
0x6010000C, // 0011 GETGBL R4 G12
0x5C140600, // 0012 MOVE R5 R3
0x7C100200, // 0013 CALL R4 1
- 0x24100902, // 0014 GT R4 R4 K2
+ 0x24100941, // 0014 GT R4 R4 K65
0x7812000B, // 0015 JMPF R4 #0022
0x5411FFFE, // 0016 LDINT R4 -1
0x94100604, // 0017 GETIDX R4 R3 R4
- 0x1C100903, // 0018 EQ R4 R4 K3
+ 0x1C100942, // 0018 EQ R4 R4 K66
0x74120003, // 0019 JMPT R4 #001E
0x5411FFFE, // 001A LDINT R4 -1
0x94100604, // 001B GETIDX R4 R3 R4
- 0x1C100904, // 001C EQ R4 R4 K4
+ 0x1C100943, // 001C EQ R4 R4 K67
0x78120003, // 001D JMPF R4 #0022
0x5411FFFD, // 001E LDINT R4 -2
- 0x40120404, // 001F CONNECT R4 K2 R4
+ 0x40128204, // 001F CONNECT R4 K65 R4
0x940C0604, // 0020 GETIDX R3 R3 R4
0x7001FFEE, // 0021 JMP #0011
0x6010000C, // 0022 GETGBL R4 G12
0x5C140600, // 0023 MOVE R5 R3
0x7C100200, // 0024 CALL R4 1
- 0x24100902, // 0025 GT R4 R4 K2
+ 0x24100941, // 0025 GT R4 R4 K65
0x78120003, // 0026 JMPF R4 #002B
0xB8120A00, // 0027 GETNGBL R4 K5
- 0x8C100906, // 0028 GETMET R4 R4 K6
+ 0x8C100936, // 0028 GETMET R4 R4 K54
0x5C180600, // 0029 MOVE R6 R3
0x7C100400, // 002A CALL R4 2
0x7001FFDA, // 002B JMP #0007
- 0x8C0C0507, // 002C GETMET R3 R2 K7
+ 0x8C0C051B, // 002C GETMET R3 R2 K27
0x7C0C0200, // 002D CALL R3 1
0xA8040001, // 002E EXBLK 1 1
0x70020012, // 002F JMP #0043
0xAC0C0002, // 0030 CATCH R3 0 2
0x7002000F, // 0031 JMP #0042
0xB8160A00, // 0032 GETNGBL R5 K5
- 0x8C140B08, // 0033 GETMET R5 R5 K8
+ 0x8C140B06, // 0033 GETMET R5 R5 K6
0x601C0018, // 0034 GETGBL R7 G24
- 0x58200009, // 0035 LDCONST R8 K9
+ 0x58200044, // 0035 LDCONST R8 K68
0x5C240200, // 0036 MOVE R9 R1
0x5C280600, // 0037 MOVE R10 R3
0x5C2C0800, // 0038 MOVE R11 R4
0x7C1C0800, // 0039 CALL R7 4
- 0x5820000A, // 003A LDCONST R8 K10
+ 0x58200045, // 003A LDCONST R8 K69
0x7C140600, // 003B CALL R5 3
0x4C140000, // 003C LDNIL R5
0x20140405, // 003D NE R5 R2 R5
0x78160001, // 003E JMPF R5 #0041
- 0x8C140507, // 003F GETMET R5 R2 K7
+ 0x8C14051B, // 003F GETMET R5 R2 K27
0x7C140200, // 0040 CALL R5 1
0x70020000, // 0041 JMP #0043
0xB0080000, // 0042 RAISE 2 R0 R0
@@ -495,144 +537,104 @@ be_local_closure(class_Autoconf_run_bat, /* name */
/********************************************************************
** Solidified function: page_autoconf_mgr
********************************************************************/
-extern const bclass be_class_Autoconf;
be_local_closure(class_Autoconf_page_autoconf_mgr, /* name */
be_nested_proto(
18, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Autoconf,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[38]) { /* constants */
- /* K0 */ be_nested_str(webserver),
- /* K1 */ be_nested_str(string),
- /* K2 */ be_nested_str(check_privileged_access),
- /* K3 */ be_nested_str(content_start),
- /* K4 */ be_nested_str(Auto_X2Dconfiguration),
- /* K5 */ be_nested_str(content_send_style),
- /* K6 */ be_nested_str(content_send),
- /* K7 */ be_nested_str(_X3Cp_X3E_X3Csmall_X3E_X26nbsp_X3B_X28This_X20feature_X20requires_X20an_X20internet_X20connection_X29_X3C_X2Fsmall_X3E_X3C_X2Fp_X3E),
- /* K8 */ be_nested_str(get_current_module_path),
- /* K9 */ be_nested_str(tr),
- /* K10 */ be_nested_str(get_current_module_name),
- /* K11 */ be_nested_str(_),
- /* K12 */ be_nested_str(_X20),
- /* K13 */ be_nested_str(_error),
- /* K14 */ be_nested_str(_X26lt_X3BError_X3A_X20apply_X20new_X20or_X20remove_X26gt_X3B),
- /* K15 */ be_nested_str(_X26lt_X3BNone_X26gt_X3B),
- /* K16 */ be_nested_str(_X3Cfieldset_X3E_X3Cstyle_X3E_X2Ebdis_X7Bbackground_X3A_X23888_X3B_X7D_X2Ebdis_X3Ahover_X7Bbackground_X3A_X23888_X3B_X7D_X3C_X2Fstyle_X3E),
- /* K17 */ be_nested_str(_X3Clegend_X3E_X3Cb_X20title_X3D_X27Autoconfiguration_X27_X3E_X26nbsp_X3BCurrent_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E),
- /* K18 */ be_nested_str(_X3Cp_X3ECurrent_X20configuration_X3A_X20_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Fp_X3E),
- /* K19 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dreapply_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20),
- /* K20 */ be_nested_str(onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E),
- /* K21 */ be_nested_str(_X3Cbutton_X20name_X3D_X27reapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3ERe_X2Dapply_X20current_X20configuration_X3C_X2Fbutton_X3E),
- /* K22 */ be_nested_str(_X3C_X2Fform_X3E_X3C_X2Fp_X3E),
- /* K23 */ be_nested_str(_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
- /* K24 */ be_nested_str(_X3Clegend_X3E_X3Cb_X20title_X3D_X27New_X20autoconf_X27_X3E_X26nbsp_X3BSelect_X20new_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E),
- /* K25 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dzip_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20),
- /* K26 */ be_nested_str(onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20change_X20the_X20current_X20configuration_X20and_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E),
- /* K27 */ be_nested_str(_X3Clabel_X3EChoose_X20a_X20device_X20configuration_X3A_X3C_X2Flabel_X3E_X3Cbr_X3E),
- /* K28 */ be_nested_str(_X3Cselect_X20name_X3D_X27zip_X27_X3E),
- /* K29 */ be_nested_str(load_templates),
- /* K30 */ be_nested_str(_X3Coption_X20value_X3D_X27reset_X27_X3E_X26lt_X3BRemove_X20autoconf_X26gt_X3B_X3C_X2Foption_X3E),
- /* K31 */ be_nested_str(_X3Coption_X20value_X3D_X27_X25s_X27_X3E_X25s_X3C_X2Foption_X3E),
- /* K32 */ be_nested_str(stop_iteration),
- /* K33 */ be_nested_str(_X3C_X2Fselect_X3E_X3Cp_X3E_X3C_X2Fp_X3E),
- /* K34 */ be_nested_str(_X3Cbutton_X20name_X3D_X27zipapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3EApply_X20configuration_X3C_X2Fbutton_X3E),
- /* K35 */ be_nested_str(content_button),
- /* K36 */ be_nested_str(BUTTON_CONFIGURATION),
- /* K37 */ be_nested_str(content_stop),
- }),
+ &be_ktab_class_Autoconf, /* shared constants */
&be_const_str_page_autoconf_mgr,
&be_const_str_solidified,
( &(const binstruction[124]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
- 0xA40A0200, // 0001 IMPORT R2 K1
+ 0xA40A8C00, // 0001 IMPORT R2 K70
0x8C0C0302, // 0002 GETMET R3 R1 K2
0x7C0C0200, // 0003 CALL R3 1
0x740E0001, // 0004 JMPT R3 #0007
0x4C0C0000, // 0005 LDNIL R3
0x80040600, // 0006 RET 1 R3
- 0x8C0C0303, // 0007 GETMET R3 R1 K3
- 0x58140004, // 0008 LDCONST R5 K4
+ 0x8C0C031F, // 0007 GETMET R3 R1 K31
+ 0x58140047, // 0008 LDCONST R5 K71
0x7C0C0400, // 0009 CALL R3 2
- 0x8C0C0305, // 000A GETMET R3 R1 K5
+ 0x8C0C0321, // 000A GETMET R3 R1 K33
0x7C0C0200, // 000B CALL R3 1
- 0x8C0C0306, // 000C GETMET R3 R1 K6
- 0x58140007, // 000D LDCONST R5 K7
+ 0x8C0C0322, // 000C GETMET R3 R1 K34
+ 0x58140048, // 000D LDCONST R5 K72
0x7C0C0400, // 000E CALL R3 2
- 0x8C0C0108, // 000F GETMET R3 R0 K8
+ 0x8C0C0149, // 000F GETMET R3 R0 K73
0x7C0C0200, // 0010 CALL R3 1
0x780E0006, // 0011 JMPF R3 #0019
- 0x8C100509, // 0012 GETMET R4 R2 K9
- 0x8C18010A, // 0013 GETMET R6 R0 K10
+ 0x8C10054A, // 0012 GETMET R4 R2 K74
+ 0x8C18014B, // 0013 GETMET R6 R0 K75
0x7C180200, // 0014 CALL R6 1
- 0x581C000B, // 0015 LDCONST R7 K11
- 0x5820000C, // 0016 LDCONST R8 K12
+ 0x581C004C, // 0015 LDCONST R7 K76
+ 0x5820004D, // 0016 LDCONST R8 K77
0x7C100800, // 0017 CALL R4 4
0x70020004, // 0018 JMP #001E
- 0x8810010D, // 0019 GETMBR R4 R0 K13
+ 0x8810014E, // 0019 GETMBR R4 R0 K78
0x78120001, // 001A JMPF R4 #001D
- 0x5810000E, // 001B LDCONST R4 K14
+ 0x5810004F, // 001B LDCONST R4 K79
0x70020000, // 001C JMP #001E
- 0x5810000F, // 001D LDCONST R4 K15
- 0x8C140306, // 001E GETMET R5 R1 K6
- 0x581C0010, // 001F LDCONST R7 K16
+ 0x58100050, // 001D LDCONST R4 K80
+ 0x8C140322, // 001E GETMET R5 R1 K34
+ 0x581C0051, // 001F LDCONST R7 K81
0x7C140400, // 0020 CALL R5 2
- 0x8C140306, // 0021 GETMET R5 R1 K6
+ 0x8C140322, // 0021 GETMET R5 R1 K34
0x601C0018, // 0022 GETGBL R7 G24
- 0x58200011, // 0023 LDCONST R8 K17
+ 0x58200052, // 0023 LDCONST R8 K82
0x7C1C0200, // 0024 CALL R7 1
0x7C140400, // 0025 CALL R5 2
- 0x8C140306, // 0026 GETMET R5 R1 K6
+ 0x8C140322, // 0026 GETMET R5 R1 K34
0x601C0018, // 0027 GETGBL R7 G24
- 0x58200012, // 0028 LDCONST R8 K18
+ 0x58200053, // 0028 LDCONST R8 K83
0x5C240800, // 0029 MOVE R9 R4
0x7C1C0400, // 002A CALL R7 2
0x7C140400, // 002B CALL R5 2
0x780E000B, // 002C JMPF R3 #0039
- 0x8C140306, // 002D GETMET R5 R1 K6
- 0x581C0013, // 002E LDCONST R7 K19
+ 0x8C140322, // 002D GETMET R5 R1 K34
+ 0x581C0054, // 002E LDCONST R7 K84
0x7C140400, // 002F CALL R5 2
- 0x8C140306, // 0030 GETMET R5 R1 K6
- 0x581C0014, // 0031 LDCONST R7 K20
+ 0x8C140322, // 0030 GETMET R5 R1 K34
+ 0x581C0055, // 0031 LDCONST R7 K85
0x7C140400, // 0032 CALL R5 2
- 0x8C140306, // 0033 GETMET R5 R1 K6
- 0x581C0015, // 0034 LDCONST R7 K21
+ 0x8C140322, // 0033 GETMET R5 R1 K34
+ 0x581C0056, // 0034 LDCONST R7 K86
0x7C140400, // 0035 CALL R5 2
- 0x8C140306, // 0036 GETMET R5 R1 K6
- 0x581C0016, // 0037 LDCONST R7 K22
+ 0x8C140322, // 0036 GETMET R5 R1 K34
+ 0x581C0057, // 0037 LDCONST R7 K87
0x7C140400, // 0038 CALL R5 2
- 0x8C140306, // 0039 GETMET R5 R1 K6
- 0x581C0017, // 003A LDCONST R7 K23
+ 0x8C140322, // 0039 GETMET R5 R1 K34
+ 0x581C0058, // 003A LDCONST R7 K88
0x7C140400, // 003B CALL R5 2
- 0x8C140306, // 003C GETMET R5 R1 K6
- 0x581C0010, // 003D LDCONST R7 K16
+ 0x8C140322, // 003C GETMET R5 R1 K34
+ 0x581C0051, // 003D LDCONST R7 K81
0x7C140400, // 003E CALL R5 2
- 0x8C140306, // 003F GETMET R5 R1 K6
+ 0x8C140322, // 003F GETMET R5 R1 K34
0x601C0018, // 0040 GETGBL R7 G24
- 0x58200018, // 0041 LDCONST R8 K24
+ 0x58200059, // 0041 LDCONST R8 K89
0x7C1C0200, // 0042 CALL R7 1
0x7C140400, // 0043 CALL R5 2
- 0x8C140306, // 0044 GETMET R5 R1 K6
- 0x581C0019, // 0045 LDCONST R7 K25
+ 0x8C140322, // 0044 GETMET R5 R1 K34
+ 0x581C005A, // 0045 LDCONST R7 K90
0x7C140400, // 0046 CALL R5 2
- 0x8C140306, // 0047 GETMET R5 R1 K6
- 0x581C001A, // 0048 LDCONST R7 K26
+ 0x8C140322, // 0047 GETMET R5 R1 K34
+ 0x581C005B, // 0048 LDCONST R7 K91
0x7C140400, // 0049 CALL R5 2
- 0x8C140306, // 004A GETMET R5 R1 K6
- 0x581C001B, // 004B LDCONST R7 K27
+ 0x8C140322, // 004A GETMET R5 R1 K34
+ 0x581C005C, // 004B LDCONST R7 K92
0x7C140400, // 004C CALL R5 2
- 0x8C140306, // 004D GETMET R5 R1 K6
- 0x581C001C, // 004E LDCONST R7 K28
+ 0x8C140322, // 004D GETMET R5 R1 K34
+ 0x581C005D, // 004E LDCONST R7 K93
0x7C140400, // 004F CALL R5 2
- 0x8C14011D, // 0050 GETMET R5 R0 K29
+ 0x8C14015E, // 0050 GETMET R5 R0 K94
0x7C140200, // 0051 CALL R5 1
- 0x8C180306, // 0052 GETMET R6 R1 K6
- 0x5820001E, // 0053 LDCONST R8 K30
+ 0x8C180322, // 0052 GETMET R6 R1 K34
+ 0x5820005F, // 0053 LDCONST R8 K95
0x7C180400, // 0054 CALL R6 2
0x60180010, // 0055 GETGBL R6 G16
0x5C1C0A00, // 0056 MOVE R7 R5
@@ -640,37 +642,37 @@ be_local_closure(class_Autoconf_page_autoconf_mgr, /* name */
0xA802000D, // 0058 EXBLK 0 #0067
0x5C1C0C00, // 0059 MOVE R7 R6
0x7C1C0000, // 005A CALL R7 0
- 0x8C200306, // 005B GETMET R8 R1 K6
+ 0x8C200322, // 005B GETMET R8 R1 K34
0x60280018, // 005C GETGBL R10 G24
- 0x582C001F, // 005D LDCONST R11 K31
+ 0x582C0060, // 005D LDCONST R11 K96
0x5C300E00, // 005E MOVE R12 R7
- 0x8C340509, // 005F GETMET R13 R2 K9
+ 0x8C34054A, // 005F GETMET R13 R2 K74
0x5C3C0E00, // 0060 MOVE R15 R7
- 0x5840000B, // 0061 LDCONST R16 K11
- 0x5844000C, // 0062 LDCONST R17 K12
+ 0x5840004C, // 0061 LDCONST R16 K76
+ 0x5844004D, // 0062 LDCONST R17 K77
0x7C340800, // 0063 CALL R13 4
0x7C280600, // 0064 CALL R10 3
0x7C200400, // 0065 CALL R8 2
0x7001FFF1, // 0066 JMP #0059
- 0x58180020, // 0067 LDCONST R6 K32
+ 0x58180061, // 0067 LDCONST R6 K97
0xAC180200, // 0068 CATCH R6 1 0
0xB0080000, // 0069 RAISE 2 R0 R0
- 0x8C180306, // 006A GETMET R6 R1 K6
- 0x58200021, // 006B LDCONST R8 K33
+ 0x8C180322, // 006A GETMET R6 R1 K34
+ 0x58200062, // 006B LDCONST R8 K98
0x7C180400, // 006C CALL R6 2
- 0x8C180306, // 006D GETMET R6 R1 K6
- 0x58200022, // 006E LDCONST R8 K34
+ 0x8C180322, // 006D GETMET R6 R1 K34
+ 0x58200063, // 006E LDCONST R8 K99
0x7C180400, // 006F CALL R6 2
- 0x8C180306, // 0070 GETMET R6 R1 K6
- 0x58200016, // 0071 LDCONST R8 K22
+ 0x8C180322, // 0070 GETMET R6 R1 K34
+ 0x58200057, // 0071 LDCONST R8 K87
0x7C180400, // 0072 CALL R6 2
- 0x8C180306, // 0073 GETMET R6 R1 K6
- 0x58200017, // 0074 LDCONST R8 K23
+ 0x8C180322, // 0073 GETMET R6 R1 K34
+ 0x58200058, // 0074 LDCONST R8 K88
0x7C180400, // 0075 CALL R6 2
- 0x8C180323, // 0076 GETMET R6 R1 K35
- 0x88200324, // 0077 GETMBR R8 R1 K36
+ 0x8C180324, // 0076 GETMET R6 R1 K36
+ 0x88200325, // 0077 GETMBR R8 R1 K37
0x7C180400, // 0078 CALL R6 2
- 0x8C180325, // 0079 GETMET R6 R1 K37
+ 0x8C180326, // 0079 GETMET R6 R1 K38
0x7C180200, // 007A CALL R6 1
0x80000000, // 007B RET 0
})
@@ -682,27 +684,23 @@ be_local_closure(class_Autoconf_page_autoconf_mgr, /* name */
/********************************************************************
** Solidified function: get_current_module_name
********************************************************************/
-extern const bclass be_class_Autoconf;
be_local_closure(class_Autoconf_get_current_module_name, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Autoconf,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(_archive),
- /* K1 */ be_const_int(0),
- }),
+ &be_ktab_class_Autoconf, /* shared constants */
&be_const_str_get_current_module_name,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
0x5405FFF5, // 0000 LDINT R1 -10
- 0x40060201, // 0001 CONNECT R1 K1 R1
- 0x88080100, // 0002 GETMBR R2 R0 K0
+ 0x40068201, // 0001 CONNECT R1 K65 R1
+ 0x88080127, // 0002 GETMBR R2 R0 K39
0x94040401, // 0003 GETIDX R1 R2 R1
0x80040200, // 0004 RET 1 R1
})
@@ -714,35 +712,24 @@ be_local_closure(class_Autoconf_get_current_module_name, /* name */
/********************************************************************
** Solidified function: delete_all_configs
********************************************************************/
-extern const bclass be_class_Autoconf;
be_local_closure(class_Autoconf_delete_all_configs, /* name */
be_nested_proto(
10, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Autoconf,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str(path),
- /* K1 */ be_nested_str(string),
- /* K2 */ be_nested_str(listdir),
- /* K3 */ be_nested_str(_X2F),
- /* K4 */ be_nested_str(find),
- /* K5 */ be_nested_str(_X2Eautoconf),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str(remove),
- /* K8 */ be_nested_str(stop_iteration),
- }),
+ &be_ktab_class_Autoconf, /* shared constants */
&be_const_str_delete_all_configs,
&be_const_str_solidified,
( &(const binstruction[25]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xA40A0200, // 0001 IMPORT R2 K1
- 0x8C0C0302, // 0002 GETMET R3 R1 K2
- 0x58140003, // 0003 LDCONST R5 K3
+ 0xA4060200, // 0000 IMPORT R1 K1
+ 0xA40A8C00, // 0001 IMPORT R2 K70
+ 0x8C0C0364, // 0002 GETMET R3 R1 K100
+ 0x58140065, // 0003 LDCONST R5 K101
0x7C0C0400, // 0004 CALL R3 2
0x60100010, // 0005 GETGBL R4 G16
0x5C140600, // 0006 MOVE R5 R3
@@ -750,17 +737,17 @@ be_local_closure(class_Autoconf_delete_all_configs, /* name */
0xA802000B, // 0008 EXBLK 0 #0015
0x5C140800, // 0009 MOVE R5 R4
0x7C140000, // 000A CALL R5 0
- 0x8C180504, // 000B GETMET R6 R2 K4
+ 0x8C180566, // 000B GETMET R6 R2 K102
0x5C200A00, // 000C MOVE R8 R5
- 0x58240005, // 000D LDCONST R9 K5
+ 0x58240067, // 000D LDCONST R9 K103
0x7C180600, // 000E CALL R6 3
- 0x24180D06, // 000F GT R6 R6 K6
+ 0x24180D41, // 000F GT R6 R6 K65
0x781A0002, // 0010 JMPF R6 #0014
- 0x8C180307, // 0011 GETMET R6 R1 K7
+ 0x8C180368, // 0011 GETMET R6 R1 K104
0x5C200A00, // 0012 MOVE R8 R5
0x7C180400, // 0013 CALL R6 2
0x7001FFF3, // 0014 JMP #0009
- 0x58100008, // 0015 LDCONST R4 K8
+ 0x58100061, // 0015 LDCONST R4 K97
0xAC100200, // 0016 CATCH R4 1 0
0xB0080000, // 0017 RAISE 2 R0 R0
0x80000000, // 0018 RET 0
@@ -773,30 +760,25 @@ be_local_closure(class_Autoconf_delete_all_configs, /* name */
/********************************************************************
** Solidified function: set_first_time
********************************************************************/
-extern const bclass be_class_Autoconf;
be_local_closure(class_Autoconf_set_first_time, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Autoconf,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(_X2F_X2Eautoconf),
- /* K1 */ be_nested_str(w),
- /* K2 */ be_nested_str(close),
- }),
+ &be_ktab_class_Autoconf, /* shared constants */
&be_const_str_set_first_time,
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
0x60040011, // 0000 GETGBL R1 G17
- 0x58080000, // 0001 LDCONST R2 K0
- 0x580C0001, // 0002 LDCONST R3 K1
+ 0x58080069, // 0001 LDCONST R2 K105
+ 0x580C0031, // 0002 LDCONST R3 K49
0x7C040400, // 0003 CALL R1 2
- 0x8C080302, // 0004 GETMET R2 R1 K2
+ 0x8C08031B, // 0004 GETMET R2 R1 K27
0x7C080200, // 0005 CALL R2 1
0x80000000, // 0006 RET 0
})
@@ -808,97 +790,76 @@ be_local_closure(class_Autoconf_set_first_time, /* name */
/********************************************************************
** Solidified function: load_templates
********************************************************************/
-extern const bclass be_class_Autoconf;
be_local_closure(class_Autoconf_load_templates, /* name */
be_nested_proto(
13, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Autoconf,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[19]) { /* constants */
- /* K0 */ be_nested_str(json),
- /* K1 */ be_nested_str(https_X3A_X2F_X2Fraw_X2Egithubusercontent_X2Ecom_X2Ftasmota_X2Fautoconf_X2Fmain_X2F_X25s_manifest_X2Ejson),
- /* K2 */ be_nested_str(tasmota),
- /* K3 */ be_nested_str(arch),
- /* K4 */ be_nested_str(log),
- /* K5 */ be_nested_str(CFG_X3A_X20loading_X20_X27_X25s_X27),
- /* K6 */ be_const_int(3),
- /* K7 */ be_nested_str(webclient),
- /* K8 */ be_nested_str(begin),
- /* K9 */ be_nested_str(GET),
- /* K10 */ be_nested_str(CFG_X3A_X20return_code_X3D_X25i),
- /* K11 */ be_const_int(2),
- /* K12 */ be_nested_str(get_string),
- /* K13 */ be_nested_str(close),
- /* K14 */ be_nested_str(load),
- /* K15 */ be_nested_str(CFG_X3A_X20loaded_X20_X27_X25s_X27),
- /* K16 */ be_nested_str(find),
- /* K17 */ be_nested_str(files),
- /* K18 */ be_nested_str(CFG_X3A_X20exception_X20_X27_X25s_X27_X20_X2D_X20_X27_X25s_X27),
- }),
+ &be_ktab_class_Autoconf, /* shared constants */
&be_const_str_load_templates,
&be_const_str_solidified,
( &(const binstruction[85]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
+ 0xA406D400, // 0000 IMPORT R1 K106
0xA8020042, // 0001 EXBLK 0 #0045
0x60080018, // 0002 GETGBL R2 G24
- 0x580C0001, // 0003 LDCONST R3 K1
- 0xB8120400, // 0004 GETNGBL R4 K2
- 0x8C100903, // 0005 GETMET R4 R4 K3
+ 0x580C006B, // 0003 LDCONST R3 K107
+ 0xB8120A00, // 0004 GETNGBL R4 K5
+ 0x8C100912, // 0005 GETMET R4 R4 K18
0x7C100200, // 0006 CALL R4 1
0x7C080400, // 0007 CALL R2 2
- 0xB80E0400, // 0008 GETNGBL R3 K2
- 0x8C0C0704, // 0009 GETMET R3 R3 K4
+ 0xB80E0A00, // 0008 GETNGBL R3 K5
+ 0x8C0C0706, // 0009 GETMET R3 R3 K6
0x60140018, // 000A GETGBL R5 G24
- 0x58180005, // 000B LDCONST R6 K5
+ 0x5818006C, // 000B LDCONST R6 K108
0x5C1C0400, // 000C MOVE R7 R2
0x7C140400, // 000D CALL R5 2
- 0x58180006, // 000E LDCONST R6 K6
+ 0x5818003A, // 000E LDCONST R6 K58
0x7C0C0600, // 000F CALL R3 3
- 0xB80E0E00, // 0010 GETNGBL R3 K7
+ 0xB80E2A00, // 0010 GETNGBL R3 K21
0x7C0C0000, // 0011 CALL R3 0
- 0x8C100708, // 0012 GETMET R4 R3 K8
+ 0x8C100716, // 0012 GETMET R4 R3 K22
0x5C180400, // 0013 MOVE R6 R2
0x7C100400, // 0014 CALL R4 2
- 0x8C100709, // 0015 GETMET R4 R3 K9
+ 0x8C100717, // 0015 GETMET R4 R3 K23
0x7C100200, // 0016 CALL R4 1
0x541600C7, // 0017 LDINT R5 200
0x20140805, // 0018 NE R5 R4 R5
0x7816000A, // 0019 JMPF R5 #0025
- 0xB8160400, // 001A GETNGBL R5 K2
- 0x8C140B04, // 001B GETMET R5 R5 K4
+ 0xB8160A00, // 001A GETNGBL R5 K5
+ 0x8C140B06, // 001B GETMET R5 R5 K6
0x601C0018, // 001C GETGBL R7 G24
- 0x5820000A, // 001D LDCONST R8 K10
+ 0x5820006D, // 001D LDCONST R8 K109
0x5C240800, // 001E MOVE R9 R4
0x7C1C0400, // 001F CALL R7 2
- 0x5820000B, // 0020 LDCONST R8 K11
+ 0x58200008, // 0020 LDCONST R8 K8
0x7C140600, // 0021 CALL R5 3
0x4C140000, // 0022 LDNIL R5
0xA8040001, // 0023 EXBLK 1 1
0x80040A00, // 0024 RET 1 R5
- 0x8C14070C, // 0025 GETMET R5 R3 K12
+ 0x8C14076E, // 0025 GETMET R5 R3 K110
0x7C140200, // 0026 CALL R5 1
- 0x8C18070D, // 0027 GETMET R6 R3 K13
+ 0x8C18071B, // 0027 GETMET R6 R3 K27
0x7C180200, // 0028 CALL R6 1
- 0x8C18030E, // 0029 GETMET R6 R1 K14
+ 0x8C18033E, // 0029 GETMET R6 R1 K62
0x5C200A00, // 002A MOVE R8 R5
0x7C180400, // 002B CALL R6 2
- 0xB81E0400, // 002C GETNGBL R7 K2
- 0x8C1C0F04, // 002D GETMET R7 R7 K4
+ 0xB81E0A00, // 002C GETNGBL R7 K5
+ 0x8C1C0F06, // 002D GETMET R7 R7 K6
0x60240018, // 002E GETGBL R9 G24
- 0x5828000F, // 002F LDCONST R10 K15
+ 0x5828006F, // 002F LDCONST R10 K111
0x602C0008, // 0030 GETGBL R11 G8
0x5C300C00, // 0031 MOVE R12 R6
0x7C2C0200, // 0032 CALL R11 1
0x7C240400, // 0033 CALL R9 2
- 0x58280006, // 0034 LDCONST R10 K6
+ 0x5828003A, // 0034 LDCONST R10 K58
0x7C1C0600, // 0035 CALL R7 3
- 0x8C1C0D10, // 0036 GETMET R7 R6 K16
- 0x58240011, // 0037 LDCONST R9 K17
+ 0x8C1C0D66, // 0036 GETMET R7 R6 K102
+ 0x58240070, // 0037 LDCONST R9 K112
0x7C1C0400, // 0038 CALL R7 2
0x6020000F, // 0039 GETGBL R8 G15
0x5C240E00, // 003A MOVE R9 R7
@@ -914,14 +875,14 @@ be_local_closure(class_Autoconf_load_templates, /* name */
0x7002000E, // 0044 JMP #0054
0xAC080002, // 0045 CATCH R2 0 2
0x7002000B, // 0046 JMP #0053
- 0xB8120400, // 0047 GETNGBL R4 K2
- 0x8C100904, // 0048 GETMET R4 R4 K4
+ 0xB8120A00, // 0047 GETNGBL R4 K5
+ 0x8C100906, // 0048 GETMET R4 R4 K6
0x60180018, // 0049 GETGBL R6 G24
- 0x581C0012, // 004A LDCONST R7 K18
+ 0x581C0071, // 004A LDCONST R7 K113
0x5C200400, // 004B MOVE R8 R2
0x5C240600, // 004C MOVE R9 R3
0x7C180600, // 004D CALL R6 3
- 0x581C000B, // 004E LDCONST R7 K11
+ 0x581C0008, // 004E LDCONST R7 K8
0x7C100600, // 004F CALL R4 3
0x4C100000, // 0050 LDNIL R4
0x80040800, // 0051 RET 1 R4
@@ -937,28 +898,23 @@ be_local_closure(class_Autoconf_load_templates, /* name */
/********************************************************************
** Solidified function: web_add_config_button
********************************************************************/
-extern const bclass be_class_Autoconf;
be_local_closure(class_Autoconf_web_add_config_button, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Autoconf,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(webserver),
- /* K1 */ be_nested_str(content_send),
- /* K2 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dac_X20action_X3D_X27ac_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X3EAuto_X2Dconfiguration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E),
- }),
+ &be_ktab_class_Autoconf, /* shared constants */
&be_const_str_web_add_config_button,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080301, // 0001 GETMET R2 R1 K1
- 0x58100002, // 0002 LDCONST R4 K2
+ 0x8C080322, // 0001 GETMET R2 R1 K34
+ 0x58100072, // 0002 LDCONST R4 K114
0x7C080400, // 0003 CALL R2 2
0x80000000, // 0004 RET 0
})
@@ -970,28 +926,23 @@ be_local_closure(class_Autoconf_web_add_config_button, /* name */
/********************************************************************
** Solidified function: is_first_time
********************************************************************/
-extern const bclass be_class_Autoconf;
be_local_closure(class_Autoconf_is_first_time, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Autoconf,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(path),
- /* K1 */ be_nested_str(exists),
- /* K2 */ be_nested_str(_X2F_X2Eautoconf),
- }),
+ &be_ktab_class_Autoconf, /* shared constants */
&be_const_str_is_first_time,
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080301, // 0001 GETMET R2 R1 K1
- 0x58100002, // 0002 LDCONST R4 K2
+ 0xA4060200, // 0000 IMPORT R1 K1
+ 0x8C08032A, // 0001 GETMET R2 R1 K42
+ 0x58100069, // 0002 LDCONST R4 K105
0x7C080400, // 0003 CALL R2 2
0x780A0000, // 0004 JMPF R2 #0006
0x50080001, // 0005 LDBOOL R2 0 1
@@ -1006,91 +957,72 @@ be_local_closure(class_Autoconf_is_first_time, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Autoconf;
be_local_closure(class_Autoconf_init, /* name */
be_nested_proto(
12, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Autoconf,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_nested_str(path),
- /* K1 */ be_nested_str(string),
- /* K2 */ be_nested_str(listdir),
- /* K3 */ be_nested_str(_X2F),
- /* K4 */ be_nested_str(tasmota),
- /* K5 */ be_nested_str(add_driver),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str(find),
- /* K8 */ be_nested_str(_X2Eautoconf),
- /* K9 */ be_nested_str(log),
- /* K10 */ be_nested_str(CFG_X3A_X20multiple_X20autoconf_X20files_X20found_X2C_X20aborting_X20_X28_X27_X25s_X27_X20_X2B_X20_X27_X25s_X27_X29),
- /* K11 */ be_const_int(2),
- /* K12 */ be_nested_str(_error),
- /* K13 */ be_const_int(1),
- /* K14 */ be_nested_str(CFG_X3A_X20No_X20_X27_X2A_X2Eautoconf_X27_X20file_X20found),
- /* K15 */ be_const_int(3),
- /* K16 */ be_nested_str(_archive),
- }),
+ &be_ktab_class_Autoconf, /* shared constants */
&be_const_str_init,
&be_const_str_solidified,
( &(const binstruction[53]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xA40A0200, // 0001 IMPORT R2 K1
- 0x8C0C0302, // 0002 GETMET R3 R1 K2
- 0x58140003, // 0003 LDCONST R5 K3
+ 0xA4060200, // 0000 IMPORT R1 K1
+ 0xA40A8C00, // 0001 IMPORT R2 K70
+ 0x8C0C0364, // 0002 GETMET R3 R1 K100
+ 0x58140065, // 0003 LDCONST R5 K101
0x7C0C0400, // 0004 CALL R3 2
0x4C100000, // 0005 LDNIL R4
- 0xB8160800, // 0006 GETNGBL R5 K4
- 0x8C140B05, // 0007 GETMET R5 R5 K5
+ 0xB8160A00, // 0006 GETNGBL R5 K5
+ 0x8C140B73, // 0007 GETMET R5 R5 K115
0x5C1C0000, // 0008 MOVE R7 R0
0x7C140400, // 0009 CALL R5 2
- 0x58140006, // 000A LDCONST R5 K6
+ 0x58140041, // 000A LDCONST R5 K65
0x6018000C, // 000B GETGBL R6 G12
0x5C1C0600, // 000C MOVE R7 R3
0x7C180200, // 000D CALL R6 1
0x14180A06, // 000E LT R6 R5 R6
0x781A0018, // 000F JMPF R6 #0029
- 0x8C180507, // 0010 GETMET R6 R2 K7
+ 0x8C180566, // 0010 GETMET R6 R2 K102
0x94200605, // 0011 GETIDX R8 R3 R5
- 0x58240008, // 0012 LDCONST R9 K8
+ 0x58240067, // 0012 LDCONST R9 K103
0x7C180600, // 0013 CALL R6 3
- 0x24180D06, // 0014 GT R6 R6 K6
+ 0x24180D41, // 0014 GT R6 R6 K65
0x781A0010, // 0015 JMPF R6 #0027
0x4C180000, // 0016 LDNIL R6
0x20180806, // 0017 NE R6 R4 R6
0x781A000C, // 0018 JMPF R6 #0026
- 0xB81A0800, // 0019 GETNGBL R6 K4
- 0x8C180D09, // 001A GETMET R6 R6 K9
+ 0xB81A0A00, // 0019 GETNGBL R6 K5
+ 0x8C180D06, // 001A GETMET R6 R6 K6
0x60200018, // 001B GETGBL R8 G24
- 0x5824000A, // 001C LDCONST R9 K10
+ 0x58240074, // 001C LDCONST R9 K116
0x5C280800, // 001D MOVE R10 R4
0x942C0605, // 001E GETIDX R11 R3 R5
0x7C200600, // 001F CALL R8 3
- 0x5824000B, // 0020 LDCONST R9 K11
+ 0x58240008, // 0020 LDCONST R9 K8
0x7C180600, // 0021 CALL R6 3
0x50180200, // 0022 LDBOOL R6 1 0
- 0x90021806, // 0023 SETMBR R0 K12 R6
+ 0x90029C06, // 0023 SETMBR R0 K78 R6
0x4C180000, // 0024 LDNIL R6
0x80040C00, // 0025 RET 1 R6
0x94100605, // 0026 GETIDX R4 R3 R5
- 0x00140B0D, // 0027 ADD R5 R5 K13
+ 0x00140B45, // 0027 ADD R5 R5 K69
0x7001FFE1, // 0028 JMP #000B
0x4C180000, // 0029 LDNIL R6
0x1C180806, // 002A EQ R6 R4 R6
0x781A0006, // 002B JMPF R6 #0033
- 0xB81A0800, // 002C GETNGBL R6 K4
- 0x8C180D09, // 002D GETMET R6 R6 K9
- 0x5820000E, // 002E LDCONST R8 K14
- 0x5824000F, // 002F LDCONST R9 K15
+ 0xB81A0A00, // 002C GETNGBL R6 K5
+ 0x8C180D06, // 002D GETMET R6 R6 K6
+ 0x58200075, // 002E LDCONST R8 K117
+ 0x5824003A, // 002F LDCONST R9 K58
0x7C180600, // 0030 CALL R6 3
0x4C180000, // 0031 LDNIL R6
0x80040C00, // 0032 RET 1 R6
- 0x90022004, // 0033 SETMBR R0 K16 R4
+ 0x90024E04, // 0033 SETMBR R0 K39 R4
0x80000000, // 0034 RET 0
})
)
@@ -1101,56 +1033,44 @@ be_local_closure(class_Autoconf_init, /* name */
/********************************************************************
** Solidified function: preinit
********************************************************************/
-extern const bclass be_class_Autoconf;
be_local_closure(class_Autoconf_preinit, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Autoconf,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str(_archive),
- /* K1 */ be_nested_str(path),
- /* K2 */ be_nested_str(_X23preinit_X2Ebe),
- /* K3 */ be_nested_str(exists),
- /* K4 */ be_nested_str(tasmota),
- /* K5 */ be_nested_str(log),
- /* K6 */ be_nested_str(CFG_X3A_X20loading_X20),
- /* K7 */ be_const_int(3),
- /* K8 */ be_nested_str(load),
- /* K9 */ be_nested_str(CFG_X3A_X20loaded_X20_X20),
- }),
+ &be_ktab_class_Autoconf, /* shared constants */
&be_const_str_preinit,
&be_const_str_solidified,
( &(const binstruction[26]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040127, // 0000 GETMBR R1 R0 K39
0x4C080000, // 0001 LDNIL R2
0x1C040202, // 0002 EQ R1 R1 R2
0x78060000, // 0003 JMPF R1 #0005
0x80000200, // 0004 RET 0
0xA4060200, // 0005 IMPORT R1 K1
- 0x88080100, // 0006 GETMBR R2 R0 K0
- 0x00080502, // 0007 ADD R2 R2 K2
- 0x8C0C0303, // 0008 GETMET R3 R1 K3
+ 0x88080127, // 0006 GETMBR R2 R0 K39
+ 0x00080576, // 0007 ADD R2 R2 K118
+ 0x8C0C032A, // 0008 GETMET R3 R1 K42
0x5C140400, // 0009 MOVE R5 R2
0x7C0C0400, // 000A CALL R3 2
0x780E000C, // 000B JMPF R3 #0019
- 0xB80E0800, // 000C GETNGBL R3 K4
- 0x8C0C0705, // 000D GETMET R3 R3 K5
- 0x00160C02, // 000E ADD R5 K6 R2
- 0x58180007, // 000F LDCONST R6 K7
+ 0xB80E0A00, // 000C GETNGBL R3 K5
+ 0x8C0C0706, // 000D GETMET R3 R3 K6
+ 0x00167A02, // 000E ADD R5 K61 R2
+ 0x5818003A, // 000F LDCONST R6 K58
0x7C0C0600, // 0010 CALL R3 3
- 0xB80E1000, // 0011 GETNGBL R3 K8
+ 0xB80E7C00, // 0011 GETNGBL R3 K62
0x5C100400, // 0012 MOVE R4 R2
0x7C0C0200, // 0013 CALL R3 1
- 0xB80E0800, // 0014 GETNGBL R3 K4
- 0x8C0C0705, // 0015 GETMET R3 R3 K5
- 0x00161202, // 0016 ADD R5 K9 R2
- 0x58180007, // 0017 LDCONST R6 K7
+ 0xB80E0A00, // 0014 GETNGBL R3 K5
+ 0x8C0C0706, // 0015 GETMET R3 R3 K6
+ 0x00167E02, // 0016 ADD R5 K63 R2
+ 0x5818003A, // 0017 LDCONST R6 K58
0x7C0C0600, // 0018 CALL R3 3
0x80000000, // 0019 RET 0
})
@@ -1162,68 +1082,54 @@ be_local_closure(class_Autoconf_preinit, /* name */
/********************************************************************
** Solidified function: reset
********************************************************************/
-extern const bclass be_class_Autoconf;
be_local_closure(class_Autoconf_reset, /* name */
be_nested_proto(
11, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Autoconf,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str(path),
- /* K1 */ be_nested_str(string),
- /* K2 */ be_nested_str(listdir),
- /* K3 */ be_nested_str(_X2F),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str(find),
- /* K6 */ be_nested_str(_X2Eautoconf),
- /* K7 */ be_nested_str(remove),
- /* K8 */ be_nested_str(CFG_X3A_X20removed_X20file_X20_X27_X25s_X27),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str(_archive),
- /* K11 */ be_nested_str(_error),
- }),
+ &be_ktab_class_Autoconf, /* shared constants */
&be_const_str_reset,
&be_const_str_solidified,
( &(const binstruction[35]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xA40A0200, // 0001 IMPORT R2 K1
- 0x8C0C0302, // 0002 GETMET R3 R1 K2
- 0x58140003, // 0003 LDCONST R5 K3
+ 0xA4060200, // 0000 IMPORT R1 K1
+ 0xA40A8C00, // 0001 IMPORT R2 K70
+ 0x8C0C0364, // 0002 GETMET R3 R1 K100
+ 0x58140065, // 0003 LDCONST R5 K101
0x7C0C0400, // 0004 CALL R3 2
0x4C100000, // 0005 LDNIL R4
- 0x58140004, // 0006 LDCONST R5 K4
+ 0x58140041, // 0006 LDCONST R5 K65
0x6018000C, // 0007 GETGBL R6 G12
0x5C1C0600, // 0008 MOVE R7 R3
0x7C180200, // 0009 CALL R6 1
0x14180A06, // 000A LT R6 R5 R6
0x781A0011, // 000B JMPF R6 #001E
0x94180605, // 000C GETIDX R6 R3 R5
- 0x8C1C0505, // 000D GETMET R7 R2 K5
+ 0x8C1C0566, // 000D GETMET R7 R2 K102
0x5C240C00, // 000E MOVE R9 R6
- 0x58280006, // 000F LDCONST R10 K6
+ 0x58280067, // 000F LDCONST R10 K103
0x7C1C0600, // 0010 CALL R7 3
- 0x241C0F04, // 0011 GT R7 R7 K4
+ 0x241C0F41, // 0011 GT R7 R7 K65
0x781E0008, // 0012 JMPF R7 #001C
- 0x8C1C0307, // 0013 GETMET R7 R1 K7
+ 0x8C1C0368, // 0013 GETMET R7 R1 K104
0x5C240C00, // 0014 MOVE R9 R6
0x7C1C0400, // 0015 CALL R7 2
0x601C0001, // 0016 GETGBL R7 G1
0x60200018, // 0017 GETGBL R8 G24
- 0x58240008, // 0018 LDCONST R9 K8
+ 0x58240077, // 0018 LDCONST R9 K119
0x5C280C00, // 0019 MOVE R10 R6
0x7C200400, // 001A CALL R8 2
0x7C1C0200, // 001B CALL R7 1
- 0x00140B09, // 001C ADD R5 R5 K9
+ 0x00140B45, // 001C ADD R5 R5 K69
0x7001FFE8, // 001D JMP #0007
0x4C180000, // 001E LDNIL R6
- 0x90021406, // 001F SETMBR R0 K10 R6
+ 0x90024E06, // 001F SETMBR R0 K39 R6
0x4C180000, // 0020 LDNIL R6
- 0x90021606, // 0021 SETMBR R0 K11 R6
+ 0x90029C06, // 0021 SETMBR R0 K78 R6
0x80000000, // 0022 RET 0
})
)
@@ -1234,16 +1140,15 @@ be_local_closure(class_Autoconf_reset, /* name */
/********************************************************************
** Solidified function: web_add_handler
********************************************************************/
-extern const bclass be_class_Autoconf;
be_local_closure(class_Autoconf_web_add_handler, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 3]) {
+ ( &(const struct bproto*[ 2]) {
be_nested_proto(
2, /* nstack */
0, /* argc */
@@ -1253,7 +1158,7 @@ be_local_closure(class_Autoconf_web_add_handler, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str(page_autoconf_mgr),
@@ -1276,7 +1181,7 @@ be_local_closure(class_Autoconf_web_add_handler, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str(page_autoconf_ctl),
@@ -1290,29 +1195,22 @@ be_local_closure(class_Autoconf_web_add_handler, /* name */
0x80040000, // 0003 RET 1 R0
})
),
- &be_class_Autoconf,
}),
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str(webserver),
- /* K1 */ be_nested_str(on),
- /* K2 */ be_nested_str(_X2Fac),
- /* K3 */ be_nested_str(HTTP_GET),
- /* K4 */ be_nested_str(HTTP_POST),
- }),
+ &be_ktab_class_Autoconf, /* shared constants */
&be_const_str_web_add_handler,
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080301, // 0001 GETMET R2 R1 K1
- 0x58100002, // 0002 LDCONST R4 K2
+ 0x8C080378, // 0001 GETMET R2 R1 K120
+ 0x58100079, // 0002 LDCONST R4 K121
0x84140000, // 0003 CLOSURE R5 P0
- 0x88180303, // 0004 GETMBR R6 R1 K3
+ 0x8818037A, // 0004 GETMBR R6 R1 K122
0x7C080800, // 0005 CALL R2 4
- 0x8C080301, // 0006 GETMET R2 R1 K1
- 0x58100002, // 0007 LDCONST R4 K2
+ 0x8C080378, // 0006 GETMET R2 R1 K120
+ 0x58100079, // 0007 LDCONST R4 K121
0x84140001, // 0008 CLOSURE R5 P1
- 0x88180304, // 0009 GETMBR R6 R1 K4
+ 0x8818037B, // 0009 GETMBR R6 R1 K123
0x7C080800, // 000A CALL R2 4
0xA0000000, // 000B CLOSE R0
0x80000000, // 000C RET 0
@@ -1325,28 +1223,23 @@ be_local_closure(class_Autoconf_web_add_handler, /* name */
/********************************************************************
** Solidified function: clear_first_time
********************************************************************/
-extern const bclass be_class_Autoconf;
be_local_closure(class_Autoconf_clear_first_time, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Autoconf,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(path),
- /* K1 */ be_nested_str(remove),
- /* K2 */ be_nested_str(_X2F_X2Eautoconf),
- }),
+ &be_ktab_class_Autoconf, /* shared constants */
&be_const_str_clear_first_time,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080301, // 0001 GETMET R2 R1 K1
- 0x58100002, // 0002 LDCONST R4 K2
+ 0xA4060200, // 0000 IMPORT R1 K1
+ 0x8C080368, // 0001 GETMET R2 R1 K104
+ 0x58100069, // 0002 LDCONST R4 K105
0x7C080400, // 0003 CALL R2 2
0x80000000, // 0004 RET 0
})
@@ -1358,24 +1251,21 @@ be_local_closure(class_Autoconf_clear_first_time, /* name */
/********************************************************************
** Solidified function: get_current_module_path
********************************************************************/
-extern const bclass be_class_Autoconf;
be_local_closure(class_Autoconf_get_current_module_path, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Autoconf,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(_archive),
- }),
+ &be_ktab_class_Autoconf, /* shared constants */
&be_const_str_get_current_module_path,
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040127, // 0000 GETMBR R1 R0 K39
0x80040200, // 0001 RET 1 R1
})
)
@@ -1424,7 +1314,7 @@ be_local_closure(_anonymous_, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_const_class(be_class_Autoconf),
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_pbkdf2_hmac_sha256.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_pbkdf2_hmac_sha256.h
index 5a3d208c4..365a97a07 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_pbkdf2_hmac_sha256.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_pbkdf2_hmac_sha256.h
@@ -15,7 +15,7 @@ be_local_closure(_f, /* name */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
6, /* nstack */
2, /* argc */
@@ -23,7 +23,7 @@ be_local_closure(_f, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str_weak(size),
@@ -54,7 +54,6 @@ be_local_closure(_f, /* name */
0x80000000, // 0012 RET 0
})
),
- NULL,
}),
1, /* has constants */
( &(const bvalue[10]) { /* constants */
@@ -126,7 +125,7 @@ be_local_closure(PBKDF2_HMAC_SHA256, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 9]) { /* constants */
/* K0 */ be_nested_str_weak(string),
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_spake2p_matter.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_spake2p_matter.h
index b4c27d263..ed42f2852 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_spake2p_matter.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_crypto_spake2p_matter.h
@@ -3,34 +3,200 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+extern const bclass be_class_SPAKE_Hasher;
+// compact class 'SPAKE_Hasher' ktab size: 8, total: 10 (saved 16 bytes)
+static const bvalue be_ktab_class_SPAKE_Hasher[8] = {
+ /* K0 */ be_nested_str_weak(crypto),
+ /* K1 */ be_nested_str_weak(hash),
+ /* K2 */ be_nested_str_weak(SHA256),
+ /* K3 */ be_nested_str_weak(size),
+ /* K4 */ be_nested_str_weak(add),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_nested_str_weak(update),
+ /* K7 */ be_nested_str_weak(out),
+};
+
+
+extern const bclass be_class_SPAKE_Hasher;
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_SPAKE_Hasher_init, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_SPAKE_Hasher, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0xA4060000, // 0000 IMPORT R1 K0
+ 0x8C080302, // 0001 GETMET R2 R1 K2
+ 0x7C080200, // 0002 CALL R2 1
+ 0x90020202, // 0003 SETMBR R0 K1 R2
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: add_item
+********************************************************************/
+be_local_closure(class_SPAKE_Hasher_add_item, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_SPAKE_Hasher, /* shared constants */
+ be_str_weak(add_item),
+ &be_const_str_solidified,
+ ( &(const binstruction[21]) { /* code */
+ 0x8C080303, // 0000 GETMET R2 R1 K3
+ 0x7C080200, // 0001 CALL R2 1
+ 0x600C0015, // 0002 GETGBL R3 G21
+ 0x7C0C0000, // 0003 CALL R3 0
+ 0x8C0C0704, // 0004 GETMET R3 R3 K4
+ 0x5C140400, // 0005 MOVE R5 R2
+ 0x541A0003, // 0006 LDINT R6 4
+ 0x7C0C0600, // 0007 CALL R3 3
+ 0x8C0C0704, // 0008 GETMET R3 R3 K4
+ 0x58140005, // 0009 LDCONST R5 K5
+ 0x541A0003, // 000A LDINT R6 4
+ 0x7C0C0600, // 000B CALL R3 3
+ 0x88100101, // 000C GETMBR R4 R0 K1
+ 0x8C100906, // 000D GETMET R4 R4 K6
+ 0x5C180600, // 000E MOVE R6 R3
+ 0x7C100400, // 000F CALL R4 2
+ 0x88100101, // 0010 GETMBR R4 R0 K1
+ 0x8C100906, // 0011 GETMET R4 R4 K6
+ 0x5C180200, // 0012 MOVE R6 R1
+ 0x7C100400, // 0013 CALL R4 2
+ 0x80000000, // 0014 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: out
+********************************************************************/
+be_local_closure(class_SPAKE_Hasher_out, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_SPAKE_Hasher, /* shared constants */
+ be_str_weak(out),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x88040101, // 0000 GETMBR R1 R0 K1
+ 0x8C040307, // 0001 GETMET R1 R1 K7
+ 0x7C040200, // 0002 CALL R1 1
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: SPAKE_Hasher
+********************************************************************/
+be_local_class(SPAKE_Hasher,
+ 1,
+ NULL,
+ be_nested_map(4,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(out, -1), be_const_closure(class_SPAKE_Hasher_out_closure) },
+ { be_const_key_weak(hash, -1), be_const_var(0) },
+ { be_const_key_weak(add_item, -1), be_const_closure(class_SPAKE_Hasher_add_item_closure) },
+ { be_const_key_weak(init, 0), be_const_closure(class_SPAKE_Hasher_init_closure) },
+ })),
+ be_str_weak(SPAKE_Hasher)
+);
+// compact class 'SPAKE2P_Matter' ktab size: 43, total: 84 (saved 328 bytes)
+static const bvalue be_ktab_class_SPAKE2P_Matter[43] = {
+ /* K0 */ be_nested_str_weak(crypto),
+ /* K1 */ be_nested_str_weak(random),
+ /* K2 */ be_nested_str_weak(EC_P256),
+ /* K3 */ be_nested_str_weak(y),
+ /* K4 */ be_nested_str_weak(mod),
+ /* K5 */ be_nested_str_weak(pB),
+ /* K6 */ be_nested_str_weak(muladd),
+ /* K7 */ be_nested_str_weak(w0),
+ /* K8 */ be_nested_str_weak(N),
+ /* K9 */ be_const_class(be_class_SPAKE_Hasher),
+ /* K10 */ be_nested_str_weak(add_item),
+ /* K11 */ be_nested_str_weak(Context),
+ /* K12 */ be_nested_str_weak(A),
+ /* K13 */ be_nested_str_weak(B),
+ /* K14 */ be_nested_str_weak(M),
+ /* K15 */ be_nested_str_weak(pA),
+ /* K16 */ be_nested_str_weak(Z),
+ /* K17 */ be_nested_str_weak(V),
+ /* K18 */ be_nested_str_weak(Kmain),
+ /* K19 */ be_nested_str_weak(out),
+ /* K20 */ be_nested_str_weak(Ke),
+ /* K21 */ be_const_int(0),
+ /* K22 */ be_nested_str_weak(HKDF_SHA256),
+ /* K23 */ be_nested_str_weak(derive),
+ /* K24 */ be_nested_str_weak(fromstring),
+ /* K25 */ be_nested_str_weak(ConfirmationKeys),
+ /* K26 */ be_nested_str_weak(KcA),
+ /* K27 */ be_nested_str_weak(KcB),
+ /* K28 */ be_nested_str_weak(K_shared),
+ /* K29 */ be_nested_str_weak(SharedKey),
+ /* K30 */ be_nested_str_weak(cA),
+ /* K31 */ be_nested_str_weak(HMAC_SHA256),
+ /* K32 */ be_nested_str_weak(update),
+ /* K33 */ be_nested_str_weak(cB),
+ /* K34 */ be_nested_str_weak(fromhex),
+ /* K35 */ be_nested_str_weak(spake_M_hex),
+ /* K36 */ be_nested_str_weak(spake_N_hex),
+ /* K37 */ be_nested_str_weak(w1),
+ /* K38 */ be_nested_str_weak(L),
+ /* K39 */ be_nested_str_weak(x),
+ /* K40 */ be_nested_str_weak(neg),
+ /* K41 */ be_nested_str_weak(01),
+ /* K42 */ be_nested_str_weak(mul),
+};
+
extern const bclass be_class_SPAKE2P_Matter;
/********************************************************************
** Solidified function: compute_pB
********************************************************************/
-extern const bclass be_class_SPAKE2P_Matter;
be_local_closure(class_SPAKE2P_Matter_compute_pB, /* name */
be_nested_proto(
10, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_SPAKE2P_Matter,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(random),
- /* K2 */ be_nested_str_weak(EC_P256),
- /* K3 */ be_nested_str_weak(y),
- /* K4 */ be_nested_str_weak(mod),
- /* K5 */ be_nested_str_weak(pB),
- /* K6 */ be_nested_str_weak(muladd),
- /* K7 */ be_nested_str_weak(w0),
- /* K8 */ be_nested_str_weak(N),
- }),
+ &be_ktab_class_SPAKE2P_Matter, /* shared constants */
be_str_weak(compute_pB),
&be_const_str_solidified,
( &(const binstruction[24]) { /* code */
@@ -64,260 +230,96 @@ be_local_closure(class_SPAKE2P_Matter_compute_pB, /* name */
/*******************************************************************/
-extern const bclass be_class_SPAKE_Hasher;
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_SPAKE_Hasher;
-be_local_closure(class_SPAKE_Hasher_init, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_SPAKE_Hasher,
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(hash),
- /* K2 */ be_nested_str_weak(SHA256),
- }),
- be_str_weak(init),
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080302, // 0001 GETMET R2 R1 K2
- 0x7C080200, // 0002 CALL R2 1
- 0x90020202, // 0003 SETMBR R0 K1 R2
- 0x80000000, // 0004 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: add_item
-********************************************************************/
-extern const bclass be_class_SPAKE_Hasher;
-be_local_closure(class_SPAKE_Hasher_add_item, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_SPAKE_Hasher,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(size),
- /* K1 */ be_nested_str_weak(add),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(hash),
- /* K4 */ be_nested_str_weak(update),
- }),
- be_str_weak(add_item),
- &be_const_str_solidified,
- ( &(const binstruction[21]) { /* code */
- 0x8C080300, // 0000 GETMET R2 R1 K0
- 0x7C080200, // 0001 CALL R2 1
- 0x600C0015, // 0002 GETGBL R3 G21
- 0x7C0C0000, // 0003 CALL R3 0
- 0x8C0C0701, // 0004 GETMET R3 R3 K1
- 0x5C140400, // 0005 MOVE R5 R2
- 0x541A0003, // 0006 LDINT R6 4
- 0x7C0C0600, // 0007 CALL R3 3
- 0x8C0C0701, // 0008 GETMET R3 R3 K1
- 0x58140002, // 0009 LDCONST R5 K2
- 0x541A0003, // 000A LDINT R6 4
- 0x7C0C0600, // 000B CALL R3 3
- 0x88100103, // 000C GETMBR R4 R0 K3
- 0x8C100904, // 000D GETMET R4 R4 K4
- 0x5C180600, // 000E MOVE R6 R3
- 0x7C100400, // 000F CALL R4 2
- 0x88100103, // 0010 GETMBR R4 R0 K3
- 0x8C100904, // 0011 GETMET R4 R4 K4
- 0x5C180200, // 0012 MOVE R6 R1
- 0x7C100400, // 0013 CALL R4 2
- 0x80000000, // 0014 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: out
-********************************************************************/
-extern const bclass be_class_SPAKE_Hasher;
-be_local_closure(class_SPAKE_Hasher_out, /* name */
- be_nested_proto(
- 3, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_SPAKE_Hasher,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(hash),
- /* K1 */ be_nested_str_weak(out),
- }),
- be_str_weak(out),
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x7C040200, // 0002 CALL R1 1
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: SPAKE_Hasher
-********************************************************************/
-be_local_class(SPAKE_Hasher,
- 1,
- NULL,
- be_nested_map(4,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key_weak(out, -1), be_const_closure(class_SPAKE_Hasher_out_closure) },
- { be_const_key_weak(hash, -1), be_const_var(0) },
- { be_const_key_weak(add_item, -1), be_const_closure(class_SPAKE_Hasher_add_item_closure) },
- { be_const_key_weak(init, 0), be_const_closure(class_SPAKE_Hasher_init_closure) },
- })),
- be_str_weak(SPAKE_Hasher)
-);
-
/********************************************************************
** Solidified function: compute_TT_hash
********************************************************************/
-extern const bclass be_class_SPAKE2P_Matter;
be_local_closure(class_SPAKE2P_Matter_compute_TT_hash, /* name */
be_nested_proto(
14, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_SPAKE2P_Matter,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[29]) { /* constants */
- /* K0 */ be_const_class(be_class_SPAKE_Hasher),
- /* K1 */ be_nested_str_weak(crypto),
- /* K2 */ be_nested_str_weak(add_item),
- /* K3 */ be_nested_str_weak(Context),
- /* K4 */ be_nested_str_weak(A),
- /* K5 */ be_nested_str_weak(B),
- /* K6 */ be_nested_str_weak(M),
- /* K7 */ be_nested_str_weak(N),
- /* K8 */ be_nested_str_weak(pA),
- /* K9 */ be_nested_str_weak(pB),
- /* K10 */ be_nested_str_weak(Z),
- /* K11 */ be_nested_str_weak(V),
- /* K12 */ be_nested_str_weak(w0),
- /* K13 */ be_nested_str_weak(Kmain),
- /* K14 */ be_nested_str_weak(out),
- /* K15 */ be_nested_str_weak(Ke),
- /* K16 */ be_const_int(0),
- /* K17 */ be_nested_str_weak(HKDF_SHA256),
- /* K18 */ be_nested_str_weak(derive),
- /* K19 */ be_nested_str_weak(fromstring),
- /* K20 */ be_nested_str_weak(ConfirmationKeys),
- /* K21 */ be_nested_str_weak(KcA),
- /* K22 */ be_nested_str_weak(KcB),
- /* K23 */ be_nested_str_weak(K_shared),
- /* K24 */ be_nested_str_weak(SharedKey),
- /* K25 */ be_nested_str_weak(cA),
- /* K26 */ be_nested_str_weak(HMAC_SHA256),
- /* K27 */ be_nested_str_weak(update),
- /* K28 */ be_nested_str_weak(cB),
- }),
+ &be_ktab_class_SPAKE2P_Matter, /* shared constants */
be_str_weak(compute_TT_hash),
&be_const_str_solidified,
( &(const binstruction[115]) { /* code */
- 0x58080000, // 0000 LDCONST R2 K0
- 0xB4000000, // 0001 CLASS K0
+ 0x58080009, // 0000 LDCONST R2 K9
+ 0xB4000009, // 0001 CLASS K9
0x5C0C0400, // 0002 MOVE R3 R2
- 0xA40E0200, // 0003 IMPORT R3 K1
+ 0xA40E0000, // 0003 IMPORT R3 K0
0x5C100400, // 0004 MOVE R4 R2
0x7C100000, // 0005 CALL R4 0
- 0x8C140902, // 0006 GETMET R5 R4 K2
- 0x881C0103, // 0007 GETMBR R7 R0 K3
+ 0x8C14090A, // 0006 GETMET R5 R4 K10
+ 0x881C010B, // 0007 GETMBR R7 R0 K11
0x7C140400, // 0008 CALL R5 2
- 0x8C140902, // 0009 GETMET R5 R4 K2
- 0x881C0104, // 000A GETMBR R7 R0 K4
+ 0x8C14090A, // 0009 GETMET R5 R4 K10
+ 0x881C010C, // 000A GETMBR R7 R0 K12
0x7C140400, // 000B CALL R5 2
- 0x8C140902, // 000C GETMET R5 R4 K2
- 0x881C0105, // 000D GETMBR R7 R0 K5
+ 0x8C14090A, // 000C GETMET R5 R4 K10
+ 0x881C010D, // 000D GETMBR R7 R0 K13
0x7C140400, // 000E CALL R5 2
- 0x8C140902, // 000F GETMET R5 R4 K2
- 0x881C0106, // 0010 GETMBR R7 R0 K6
+ 0x8C14090A, // 000F GETMET R5 R4 K10
+ 0x881C010E, // 0010 GETMBR R7 R0 K14
0x7C140400, // 0011 CALL R5 2
- 0x8C140902, // 0012 GETMET R5 R4 K2
- 0x881C0107, // 0013 GETMBR R7 R0 K7
+ 0x8C14090A, // 0012 GETMET R5 R4 K10
+ 0x881C0108, // 0013 GETMBR R7 R0 K8
0x7C140400, // 0014 CALL R5 2
- 0x8C140902, // 0015 GETMET R5 R4 K2
- 0x881C0108, // 0016 GETMBR R7 R0 K8
+ 0x8C14090A, // 0015 GETMET R5 R4 K10
+ 0x881C010F, // 0016 GETMBR R7 R0 K15
0x7C140400, // 0017 CALL R5 2
- 0x8C140902, // 0018 GETMET R5 R4 K2
- 0x881C0109, // 0019 GETMBR R7 R0 K9
+ 0x8C14090A, // 0018 GETMET R5 R4 K10
+ 0x881C0105, // 0019 GETMBR R7 R0 K5
0x7C140400, // 001A CALL R5 2
- 0x8C140902, // 001B GETMET R5 R4 K2
- 0x881C010A, // 001C GETMBR R7 R0 K10
+ 0x8C14090A, // 001B GETMET R5 R4 K10
+ 0x881C0110, // 001C GETMBR R7 R0 K16
0x7C140400, // 001D CALL R5 2
- 0x8C140902, // 001E GETMET R5 R4 K2
- 0x881C010B, // 001F GETMBR R7 R0 K11
+ 0x8C14090A, // 001E GETMET R5 R4 K10
+ 0x881C0111, // 001F GETMBR R7 R0 K17
0x7C140400, // 0020 CALL R5 2
- 0x8C140902, // 0021 GETMET R5 R4 K2
- 0x881C010C, // 0022 GETMBR R7 R0 K12
+ 0x8C14090A, // 0021 GETMET R5 R4 K10
+ 0x881C0107, // 0022 GETMBR R7 R0 K7
0x7C140400, // 0023 CALL R5 2
- 0x8C14090E, // 0024 GETMET R5 R4 K14
+ 0x8C140913, // 0024 GETMET R5 R4 K19
0x7C140200, // 0025 CALL R5 1
- 0x90021A05, // 0026 SETMBR R0 K13 R5
+ 0x90022405, // 0026 SETMBR R0 K18 R5
0x7806000A, // 0027 JMPF R1 #0033
0x5416000F, // 0028 LDINT R5 16
0x541A001E, // 0029 LDINT R6 31
0x40140A06, // 002A CONNECT R5 R5 R6
- 0x8818010D, // 002B GETMBR R6 R0 K13
+ 0x88180112, // 002B GETMBR R6 R0 K18
0x94140C05, // 002C GETIDX R5 R6 R5
- 0x90021E05, // 002D SETMBR R0 K15 R5
+ 0x90022805, // 002D SETMBR R0 K20 R5
0x5416000E, // 002E LDINT R5 15
- 0x40162005, // 002F CONNECT R5 K16 R5
- 0x8818010D, // 0030 GETMBR R6 R0 K13
+ 0x40162A05, // 002F CONNECT R5 K21 R5
+ 0x88180112, // 0030 GETMBR R6 R0 K18
0x94140C05, // 0031 GETIDX R5 R6 R5
- 0x90021A05, // 0032 SETMBR R0 K13 R5
- 0x8C140711, // 0033 GETMET R5 R3 K17
+ 0x90022405, // 0032 SETMBR R0 K18 R5
+ 0x8C140716, // 0033 GETMET R5 R3 K22
0x7C140200, // 0034 CALL R5 1
- 0x8C180B12, // 0035 GETMET R6 R5 K18
- 0x8820010D, // 0036 GETMBR R8 R0 K13
+ 0x8C180B17, // 0035 GETMET R6 R5 K23
+ 0x88200112, // 0036 GETMBR R8 R0 K18
0x60240015, // 0037 GETGBL R9 G21
0x7C240000, // 0038 CALL R9 0
0x60280015, // 0039 GETGBL R10 G21
0x7C280000, // 003A CALL R10 0
- 0x8C281513, // 003B GETMET R10 R10 K19
- 0x58300014, // 003C LDCONST R12 K20
+ 0x8C281518, // 003B GETMET R10 R10 K24
+ 0x58300019, // 003C LDCONST R12 K25
0x7C280400, // 003D CALL R10 2
0x542E003F, // 003E LDINT R11 64
0x7C180A00, // 003F CALL R6 5
0x78060003, // 0040 JMPF R1 #0045
0x541E000E, // 0041 LDINT R7 15
- 0x401E2007, // 0042 CONNECT R7 K16 R7
+ 0x401E2A07, // 0042 CONNECT R7 K21 R7
0x941C0C07, // 0043 GETIDX R7 R6 R7
0x70020002, // 0044 JMP #0048
0x541E001E, // 0045 LDINT R7 31
- 0x401E2007, // 0046 CONNECT R7 K16 R7
+ 0x401E2A07, // 0046 CONNECT R7 K21 R7
0x941C0C07, // 0047 GETIDX R7 R6 R7
- 0x90022A07, // 0048 SETMBR R0 K21 R7
+ 0x90023407, // 0048 SETMBR R0 K26 R7
0x78060004, // 0049 JMPF R1 #004F
0x541E000F, // 004A LDINT R7 16
0x5422001E, // 004B LDINT R8 31
@@ -328,37 +330,37 @@ be_local_closure(class_SPAKE2P_Matter_compute_TT_hash, /* name */
0x5422003E, // 0050 LDINT R8 63
0x401C0E08, // 0051 CONNECT R7 R7 R8
0x941C0C07, // 0052 GETIDX R7 R6 R7
- 0x90022C07, // 0053 SETMBR R0 K22 R7
- 0x8C1C0B12, // 0054 GETMET R7 R5 K18
- 0x8824010D, // 0055 GETMBR R9 R0 K13
+ 0x90023607, // 0053 SETMBR R0 K27 R7
+ 0x8C1C0B17, // 0054 GETMET R7 R5 K23
+ 0x88240112, // 0055 GETMBR R9 R0 K18
0x60280015, // 0056 GETGBL R10 G21
0x7C280000, // 0057 CALL R10 0
0x602C0015, // 0058 GETGBL R11 G21
0x7C2C0000, // 0059 CALL R11 0
- 0x8C2C1713, // 005A GETMET R11 R11 K19
- 0x58340018, // 005B LDCONST R13 K24
+ 0x8C2C1718, // 005A GETMET R11 R11 K24
+ 0x5834001D, // 005B LDCONST R13 K29
0x7C2C0400, // 005C CALL R11 2
0x5432001F, // 005D LDINT R12 32
0x7C1C0A00, // 005E CALL R7 5
- 0x90022E07, // 005F SETMBR R0 K23 R7
- 0x8C1C071A, // 0060 GETMET R7 R3 K26
- 0x88240115, // 0061 GETMBR R9 R0 K21
+ 0x90023807, // 005F SETMBR R0 K28 R7
+ 0x8C1C071F, // 0060 GETMET R7 R3 K31
+ 0x8824011A, // 0061 GETMBR R9 R0 K26
0x7C1C0400, // 0062 CALL R7 2
- 0x8C1C0F1B, // 0063 GETMET R7 R7 K27
- 0x88240109, // 0064 GETMBR R9 R0 K9
+ 0x8C1C0F20, // 0063 GETMET R7 R7 K32
+ 0x88240105, // 0064 GETMBR R9 R0 K5
0x7C1C0400, // 0065 CALL R7 2
- 0x8C1C0F0E, // 0066 GETMET R7 R7 K14
+ 0x8C1C0F13, // 0066 GETMET R7 R7 K19
0x7C1C0200, // 0067 CALL R7 1
- 0x90023207, // 0068 SETMBR R0 K25 R7
- 0x8C1C071A, // 0069 GETMET R7 R3 K26
- 0x88240116, // 006A GETMBR R9 R0 K22
+ 0x90023C07, // 0068 SETMBR R0 K30 R7
+ 0x8C1C071F, // 0069 GETMET R7 R3 K31
+ 0x8824011B, // 006A GETMBR R9 R0 K27
0x7C1C0400, // 006B CALL R7 2
- 0x8C1C0F1B, // 006C GETMET R7 R7 K27
- 0x88240108, // 006D GETMBR R9 R0 K8
+ 0x8C1C0F20, // 006C GETMET R7 R7 K32
+ 0x8824010F, // 006D GETMBR R9 R0 K15
0x7C1C0400, // 006E CALL R7 2
- 0x8C1C0F0E, // 006F GETMET R7 R7 K14
+ 0x8C1C0F13, // 006F GETMET R7 R7 K19
0x7C1C0200, // 0070 CALL R7 1
- 0x90023807, // 0071 SETMBR R0 K28 R7
+ 0x90024207, // 0071 SETMBR R0 K33 R7
0x80000000, // 0072 RET 0
})
)
@@ -369,45 +371,35 @@ be_local_closure(class_SPAKE2P_Matter_compute_TT_hash, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_SPAKE2P_Matter;
be_local_closure(class_SPAKE2P_Matter_init, /* name */
be_nested_proto(
7, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_SPAKE2P_Matter,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(M),
- /* K1 */ be_nested_str_weak(fromhex),
- /* K2 */ be_nested_str_weak(spake_M_hex),
- /* K3 */ be_nested_str_weak(N),
- /* K4 */ be_nested_str_weak(spake_N_hex),
- /* K5 */ be_nested_str_weak(w0),
- /* K6 */ be_nested_str_weak(w1),
- /* K7 */ be_nested_str_weak(L),
- }),
+ &be_ktab_class_SPAKE2P_Matter, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[16]) { /* code */
0x60100015, // 0000 GETGBL R4 G21
0x7C100000, // 0001 CALL R4 0
- 0x8C100901, // 0002 GETMET R4 R4 K1
- 0x88180102, // 0003 GETMBR R6 R0 K2
+ 0x8C100922, // 0002 GETMET R4 R4 K34
+ 0x88180123, // 0003 GETMBR R6 R0 K35
0x7C100400, // 0004 CALL R4 2
- 0x90020004, // 0005 SETMBR R0 K0 R4
+ 0x90021C04, // 0005 SETMBR R0 K14 R4
0x60100015, // 0006 GETGBL R4 G21
0x7C100000, // 0007 CALL R4 0
- 0x8C100901, // 0008 GETMET R4 R4 K1
- 0x88180104, // 0009 GETMBR R6 R0 K4
+ 0x8C100922, // 0008 GETMET R4 R4 K34
+ 0x88180124, // 0009 GETMBR R6 R0 K36
0x7C100400, // 000A CALL R4 2
- 0x90020604, // 000B SETMBR R0 K3 R4
- 0x90020A01, // 000C SETMBR R0 K5 R1
- 0x90020C02, // 000D SETMBR R0 K6 R2
- 0x90020E03, // 000E SETMBR R0 K7 R3
+ 0x90021004, // 000B SETMBR R0 K8 R4
+ 0x90020E01, // 000C SETMBR R0 K7 R1
+ 0x90024A02, // 000D SETMBR R0 K37 R2
+ 0x90024C03, // 000E SETMBR R0 K38 R3
0x80000000, // 000F RET 0
})
)
@@ -418,28 +410,17 @@ be_local_closure(class_SPAKE2P_Matter_init, /* name */
/********************************************************************
** Solidified function: compute_pA
********************************************************************/
-extern const bclass be_class_SPAKE2P_Matter;
be_local_closure(class_SPAKE2P_Matter_compute_pA, /* name */
be_nested_proto(
10, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_SPAKE2P_Matter,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(random),
- /* K2 */ be_nested_str_weak(EC_P256),
- /* K3 */ be_nested_str_weak(x),
- /* K4 */ be_nested_str_weak(mod),
- /* K5 */ be_nested_str_weak(pA),
- /* K6 */ be_nested_str_weak(muladd),
- /* K7 */ be_nested_str_weak(w0),
- /* K8 */ be_nested_str_weak(M),
- }),
+ &be_ktab_class_SPAKE2P_Matter, /* shared constants */
be_str_weak(compute_pA),
&be_const_str_solidified,
( &(const binstruction[24]) { /* code */
@@ -456,16 +437,16 @@ be_local_closure(class_SPAKE2P_Matter_compute_pA, /* name */
0x8C100704, // 000A GETMET R4 R3 K4
0x5C180200, // 000B MOVE R6 R1
0x7C100400, // 000C CALL R4 2
- 0x90020604, // 000D SETMBR R0 K3 R4
+ 0x90024E04, // 000D SETMBR R0 K39 R4
0x8C100706, // 000E GETMET R4 R3 K6
0x88180107, // 000F GETMBR R6 R0 K7
- 0x881C0108, // 0010 GETMBR R7 R0 K8
- 0x88200103, // 0011 GETMBR R8 R0 K3
+ 0x881C010E, // 0010 GETMBR R7 R0 K14
+ 0x88200127, // 0011 GETMBR R8 R0 K39
0x60240015, // 0012 GETGBL R9 G21
0x7C240000, // 0013 CALL R9 0
0x7C100A00, // 0014 CALL R4 5
- 0x90020A04, // 0015 SETMBR R0 K5 R4
- 0x88100105, // 0016 GETMBR R4 R0 K5
+ 0x90021E04, // 0015 SETMBR R0 K15 R4
+ 0x8810010F, // 0016 GETMBR R4 R0 K15
0x80040800, // 0017 RET 1 R4
})
)
@@ -476,22 +457,17 @@ be_local_closure(class_SPAKE2P_Matter_compute_pA, /* name */
/********************************************************************
** Solidified function: set_context
********************************************************************/
-extern const bclass be_class_SPAKE2P_Matter;
be_local_closure(class_SPAKE2P_Matter_set_context, /* name */
be_nested_proto(
5, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_SPAKE2P_Matter,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(Context),
- /* K1 */ be_nested_str_weak(A),
- /* K2 */ be_nested_str_weak(B),
- }),
+ &be_ktab_class_SPAKE2P_Matter, /* shared constants */
be_str_weak(set_context),
&be_const_str_solidified,
( &(const binstruction[16]) { /* code */
@@ -507,9 +483,9 @@ be_local_closure(class_SPAKE2P_Matter_set_context, /* name */
0x60100015, // 0009 GETGBL R4 G21
0x7C100000, // 000A CALL R4 0
0x5C0C0800, // 000B MOVE R3 R4
- 0x90020001, // 000C SETMBR R0 K0 R1
- 0x90020202, // 000D SETMBR R0 K1 R2
- 0x90020403, // 000E SETMBR R0 K2 R3
+ 0x90021601, // 000C SETMBR R0 K11 R1
+ 0x90021802, // 000D SETMBR R0 K12 R2
+ 0x90021A03, // 000E SETMBR R0 K13 R3
0x80000000, // 000F RET 0
})
)
@@ -520,60 +496,45 @@ be_local_closure(class_SPAKE2P_Matter_set_context, /* name */
/********************************************************************
** Solidified function: compute_ZV_verifier
********************************************************************/
-extern const bclass be_class_SPAKE2P_Matter;
be_local_closure(class_SPAKE2P_Matter_compute_ZV_verifier, /* name */
be_nested_proto(
11, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_SPAKE2P_Matter,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(EC_P256),
- /* K2 */ be_nested_str_weak(pA),
- /* K3 */ be_nested_str_weak(neg),
- /* K4 */ be_nested_str_weak(w0),
- /* K5 */ be_nested_str_weak(muladd),
- /* K6 */ be_nested_str_weak(01),
- /* K7 */ be_nested_str_weak(M),
- /* K8 */ be_nested_str_weak(Z),
- /* K9 */ be_nested_str_weak(mul),
- /* K10 */ be_nested_str_weak(y),
- /* K11 */ be_nested_str_weak(V),
- /* K12 */ be_nested_str_weak(L),
- }),
+ &be_ktab_class_SPAKE2P_Matter, /* shared constants */
be_str_weak(compute_ZV_verifier),
&be_const_str_solidified,
( &(const binstruction[26]) { /* code */
0xA40A0000, // 0000 IMPORT R2 K0
- 0x8C0C0501, // 0001 GETMET R3 R2 K1
+ 0x8C0C0502, // 0001 GETMET R3 R2 K2
0x7C0C0200, // 0002 CALL R3 1
- 0x90020401, // 0003 SETMBR R0 K2 R1
- 0x8C100703, // 0004 GETMET R4 R3 K3
- 0x88180104, // 0005 GETMBR R6 R0 K4
+ 0x90021E01, // 0003 SETMBR R0 K15 R1
+ 0x8C100728, // 0004 GETMET R4 R3 K40
+ 0x88180107, // 0005 GETMBR R6 R0 K7
0x7C100400, // 0006 CALL R4 2
- 0x8C140705, // 0007 GETMET R5 R3 K5
+ 0x8C140706, // 0007 GETMET R5 R3 K6
0x601C0015, // 0008 GETGBL R7 G21
- 0x58200006, // 0009 LDCONST R8 K6
+ 0x58200029, // 0009 LDCONST R8 K41
0x7C1C0200, // 000A CALL R7 1
- 0x88200102, // 000B GETMBR R8 R0 K2
+ 0x8820010F, // 000B GETMBR R8 R0 K15
0x5C240800, // 000C MOVE R9 R4
- 0x88280107, // 000D GETMBR R10 R0 K7
+ 0x8828010E, // 000D GETMBR R10 R0 K14
0x7C140A00, // 000E CALL R5 5
- 0x8C180709, // 000F GETMET R6 R3 K9
- 0x8820010A, // 0010 GETMBR R8 R0 K10
+ 0x8C18072A, // 000F GETMET R6 R3 K42
+ 0x88200103, // 0010 GETMBR R8 R0 K3
0x5C240A00, // 0011 MOVE R9 R5
0x7C180600, // 0012 CALL R6 3
- 0x90021006, // 0013 SETMBR R0 K8 R6
- 0x8C180709, // 0014 GETMET R6 R3 K9
- 0x8820010A, // 0015 GETMBR R8 R0 K10
- 0x8824010C, // 0016 GETMBR R9 R0 K12
+ 0x90022006, // 0013 SETMBR R0 K16 R6
+ 0x8C18072A, // 0014 GETMET R6 R3 K42
+ 0x88200103, // 0015 GETMBR R8 R0 K3
+ 0x88240126, // 0016 GETMBR R9 R0 K38
0x7C180600, // 0017 CALL R6 3
- 0x90021606, // 0018 SETMBR R0 K11 R6
+ 0x90022206, // 0018 SETMBR R0 K17 R6
0x80000000, // 0019 RET 0
})
)
@@ -584,60 +545,45 @@ be_local_closure(class_SPAKE2P_Matter_compute_ZV_verifier, /* name */
/********************************************************************
** Solidified function: compute_ZV_prover
********************************************************************/
-extern const bclass be_class_SPAKE2P_Matter;
be_local_closure(class_SPAKE2P_Matter_compute_ZV_prover, /* name */
be_nested_proto(
11, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_SPAKE2P_Matter,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(crypto),
- /* K1 */ be_nested_str_weak(EC_P256),
- /* K2 */ be_nested_str_weak(pB),
- /* K3 */ be_nested_str_weak(neg),
- /* K4 */ be_nested_str_weak(w0),
- /* K5 */ be_nested_str_weak(muladd),
- /* K6 */ be_nested_str_weak(01),
- /* K7 */ be_nested_str_weak(N),
- /* K8 */ be_nested_str_weak(Z),
- /* K9 */ be_nested_str_weak(mul),
- /* K10 */ be_nested_str_weak(x),
- /* K11 */ be_nested_str_weak(V),
- /* K12 */ be_nested_str_weak(w1),
- }),
+ &be_ktab_class_SPAKE2P_Matter, /* shared constants */
be_str_weak(compute_ZV_prover),
&be_const_str_solidified,
( &(const binstruction[26]) { /* code */
0xA40A0000, // 0000 IMPORT R2 K0
- 0x8C0C0501, // 0001 GETMET R3 R2 K1
+ 0x8C0C0502, // 0001 GETMET R3 R2 K2
0x7C0C0200, // 0002 CALL R3 1
- 0x90020401, // 0003 SETMBR R0 K2 R1
- 0x8C100703, // 0004 GETMET R4 R3 K3
- 0x88180104, // 0005 GETMBR R6 R0 K4
+ 0x90020A01, // 0003 SETMBR R0 K5 R1
+ 0x8C100728, // 0004 GETMET R4 R3 K40
+ 0x88180107, // 0005 GETMBR R6 R0 K7
0x7C100400, // 0006 CALL R4 2
- 0x8C140705, // 0007 GETMET R5 R3 K5
+ 0x8C140706, // 0007 GETMET R5 R3 K6
0x601C0015, // 0008 GETGBL R7 G21
- 0x58200006, // 0009 LDCONST R8 K6
+ 0x58200029, // 0009 LDCONST R8 K41
0x7C1C0200, // 000A CALL R7 1
- 0x88200102, // 000B GETMBR R8 R0 K2
+ 0x88200105, // 000B GETMBR R8 R0 K5
0x5C240800, // 000C MOVE R9 R4
- 0x88280107, // 000D GETMBR R10 R0 K7
+ 0x88280108, // 000D GETMBR R10 R0 K8
0x7C140A00, // 000E CALL R5 5
- 0x8C180709, // 000F GETMET R6 R3 K9
- 0x8820010A, // 0010 GETMBR R8 R0 K10
+ 0x8C18072A, // 000F GETMET R6 R3 K42
+ 0x88200127, // 0010 GETMBR R8 R0 K39
0x5C240A00, // 0011 MOVE R9 R5
0x7C180600, // 0012 CALL R6 3
- 0x90021006, // 0013 SETMBR R0 K8 R6
- 0x8C180709, // 0014 GETMET R6 R3 K9
- 0x8820010C, // 0015 GETMBR R8 R0 K12
+ 0x90022006, // 0013 SETMBR R0 K16 R6
+ 0x8C18072A, // 0014 GETMET R6 R3 K42
+ 0x88200125, // 0015 GETMBR R8 R0 K37
0x5C240A00, // 0016 MOVE R9 R5
0x7C180600, // 0017 CALL R6 3
- 0x90021606, // 0018 SETMBR R0 K11 R6
+ 0x90022206, // 0018 SETMBR R0 K17 R6
0x80000000, // 0019 RET 0
})
)
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_driver_class.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_driver_class.h
index 3572e477e..b022dc55a 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_driver_class.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_driver_class.h
@@ -9,7 +9,6 @@ extern const bclass be_class_Driver;
/********************************************************************
** Solidified function: add_cmd
********************************************************************/
-extern const bclass be_class_Driver;
be_local_closure(class_Driver_add_cmd, /* name */
be_nested_proto(
7, /* nstack */
@@ -18,7 +17,7 @@ be_local_closure(class_Driver_add_cmd, /* name */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
10, /* nstack */
4, /* argc */
@@ -29,7 +28,7 @@ be_local_closure(class_Driver_add_cmd, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
&be_const_str__X3Clambda_X3E,
@@ -45,7 +44,6 @@ be_local_closure(class_Driver_add_cmd, /* name */
0x80040800, // 0007 RET 1 R4
})
),
- &be_class_Driver,
}),
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_dyn.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_dyn.h
index be718732c..5632678a0 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_dyn.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_dyn.h
@@ -3,27 +3,31 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'dyn' ktab size: 4, total: 7 (saved 24 bytes)
+static const bvalue be_ktab_class_dyn[4] = {
+ /* K0 */ be_nested_str(_attr),
+ /* K1 */ be_nested_str(tostring),
+ /* K2 */ be_nested_str(contains),
+ /* K3 */ be_nested_str(undefined),
+};
+
extern const bclass be_class_dyn;
/********************************************************************
** Solidified function: tostring
********************************************************************/
-extern const bclass be_class_dyn;
be_local_closure(class_dyn_tostring, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_dyn,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(_attr),
- /* K1 */ be_nested_str(tostring),
- }),
+ &be_ktab_class_dyn, /* shared constants */
&be_const_str_tostring,
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
@@ -40,27 +44,22 @@ be_local_closure(class_dyn_tostring, /* name */
/********************************************************************
** Solidified function: member
********************************************************************/
-extern const bclass be_class_dyn;
be_local_closure(class_dyn_member, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_dyn,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(_attr),
- /* K1 */ be_nested_str(contains),
- /* K2 */ be_nested_str(undefined),
- }),
+ &be_ktab_class_dyn, /* shared constants */
&be_const_str_member,
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x8C080502, // 0001 GETMET R2 R2 K2
0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
0x780A0003, // 0004 JMPF R2 #0009
@@ -68,7 +67,7 @@ be_local_closure(class_dyn_member, /* name */
0x94080401, // 0006 GETIDX R2 R2 R1
0x80040400, // 0007 RET 1 R2
0x70020001, // 0008 JMP #000B
- 0xA40A0400, // 0009 IMPORT R2 K2
+ 0xA40A0600, // 0009 IMPORT R2 K3
0x80040400, // 000A RET 1 R2
0x80000000, // 000B RET 0
})
@@ -80,20 +79,17 @@ be_local_closure(class_dyn_member, /* name */
/********************************************************************
** Solidified function: setmember
********************************************************************/
-extern const bclass be_class_dyn;
be_local_closure(class_dyn_setmember, /* name */
be_nested_proto(
4, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_dyn,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(_attr),
- }),
+ &be_ktab_class_dyn, /* shared constants */
&be_const_str_setmember,
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
@@ -109,20 +105,17 @@ be_local_closure(class_dyn_setmember, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_dyn;
be_local_closure(class_dyn_init, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_dyn,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(_attr),
- }),
+ &be_ktab_class_dyn, /* shared constants */
&be_const_str_init,
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_energy.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_energy.h
index 8fe87503b..d1765fd6c 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_energy.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_energy.h
@@ -3,6 +3,505 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'bytes_array' ktab size: 18, total: 34 (saved 128 bytes)
+static const bvalue be_ktab_class_bytes_array[18] = {
+ /* K0 */ be_nested_str(item_type),
+ /* K1 */ be_nested_str(sz),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str(value_X20error),
+ /* K4 */ be_nested_str(unsupported_X20item_type_X20number),
+ /* K5 */ be_nested_str(item_size),
+ /* K6 */ be_nested_str(init),
+ /* K7 */ be_nested_str(_X5B),
+ /* K8 */ be_nested_str(_X2C),
+ /* K9 */ be_nested_str(getfloat),
+ /* K10 */ be_nested_str(get),
+ /* K11 */ be_const_int(1),
+ /* K12 */ be_nested_str(_X5D),
+ /* K13 */ be_nested_str(index_error),
+ /* K14 */ be_nested_str(list_X20index_X20out_X20of_X20range),
+ /* K15 */ be_nested_str(list_X20assignment_X20index_X20out_X20of_X20range),
+ /* K16 */ be_nested_str(setfloat),
+ /* K17 */ be_nested_str(set),
+};
+
+
+extern const bclass be_class_bytes_array;
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_bytes_array_init, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_bytes_array, /* shared constants */
+ &be_const_str_init,
+ &be_const_str_solidified,
+ ( &(const binstruction[35]) { /* code */
+ 0x90020002, // 0000 SETMBR R0 K0 R2
+ 0x90020203, // 0001 SETMBR R0 K1 R3
+ 0x4C100000, // 0002 LDNIL R4
+ 0x5415FFFB, // 0003 LDINT R5 -4
+ 0x28140405, // 0004 GE R5 R2 R5
+ 0x7816000B, // 0005 JMPF R5 #0012
+ 0x54160003, // 0006 LDINT R5 4
+ 0x18140405, // 0007 LE R5 R2 R5
+ 0x78160008, // 0008 JMPF R5 #0012
+ 0x20140502, // 0009 NE R5 R2 K2
+ 0x78160006, // 000A JMPF R5 #0012
+ 0x24140502, // 000B GT R5 R2 K2
+ 0x78160001, // 000C JMPF R5 #000F
+ 0x5C140400, // 000D MOVE R5 R2
+ 0x70020000, // 000E JMP #0010
+ 0x44140400, // 000F NEG R5 R2
+ 0x5C100A00, // 0010 MOVE R4 R5
+ 0x70020005, // 0011 JMP #0018
+ 0x54160004, // 0012 LDINT R5 5
+ 0x1C140405, // 0013 EQ R5 R2 R5
+ 0x78160001, // 0014 JMPF R5 #0017
+ 0x54120003, // 0015 LDINT R4 4
+ 0x70020000, // 0016 JMP #0018
+ 0xB0060704, // 0017 RAISE 1 K3 K4
+ 0x90020A04, // 0018 SETMBR R0 K5 R4
+ 0x60140003, // 0019 GETGBL R5 G3
+ 0x5C180000, // 001A MOVE R6 R0
+ 0x7C140200, // 001B CALL R5 1
+ 0x8C140B06, // 001C GETMET R5 R5 K6
+ 0x5C1C0200, // 001D MOVE R7 R1
+ 0x88200105, // 001E GETMBR R8 R0 K5
+ 0x88240101, // 001F GETMBR R9 R0 K1
+ 0x08201009, // 0020 MUL R8 R8 R9
+ 0x7C140600, // 0021 CALL R5 3
+ 0x80000000, // 0022 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: size
+********************************************************************/
+be_local_closure(class_bytes_array_size, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_bytes_array, /* shared constants */
+ &be_const_str_size,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040101, // 0000 GETMBR R1 R0 K1
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: tostring
+********************************************************************/
+be_local_closure(class_bytes_array_tostring, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_bytes_array, /* shared constants */
+ &be_const_str_tostring,
+ &be_const_str_solidified,
+ ( &(const binstruction[32]) { /* code */
+ 0x58040007, // 0000 LDCONST R1 K7
+ 0x58080002, // 0001 LDCONST R2 K2
+ 0x880C0101, // 0002 GETMBR R3 R0 K1
+ 0x140C0403, // 0003 LT R3 R2 R3
+ 0x780E0018, // 0004 JMPF R3 #001E
+ 0x240C0502, // 0005 GT R3 R2 K2
+ 0x780E0000, // 0006 JMPF R3 #0008
+ 0x00040308, // 0007 ADD R1 R1 K8
+ 0x880C0100, // 0008 GETMBR R3 R0 K0
+ 0x54120004, // 0009 LDINT R4 5
+ 0x1C0C0604, // 000A EQ R3 R3 R4
+ 0x780E0007, // 000B JMPF R3 #0014
+ 0x600C0008, // 000C GETGBL R3 G8
+ 0x8C100109, // 000D GETMET R4 R0 K9
+ 0x88180105, // 000E GETMBR R6 R0 K5
+ 0x08180406, // 000F MUL R6 R2 R6
+ 0x7C100400, // 0010 CALL R4 2
+ 0x7C0C0200, // 0011 CALL R3 1
+ 0x00040203, // 0012 ADD R1 R1 R3
+ 0x70020007, // 0013 JMP #001C
+ 0x600C0008, // 0014 GETGBL R3 G8
+ 0x8C10010A, // 0015 GETMET R4 R0 K10
+ 0x88180105, // 0016 GETMBR R6 R0 K5
+ 0x08180406, // 0017 MUL R6 R2 R6
+ 0x881C0100, // 0018 GETMBR R7 R0 K0
+ 0x7C100600, // 0019 CALL R4 3
+ 0x7C0C0200, // 001A CALL R3 1
+ 0x00040203, // 001B ADD R1 R1 R3
+ 0x0008050B, // 001C ADD R2 R2 K11
+ 0x7001FFE3, // 001D JMP #0002
+ 0x0004030C, // 001E ADD R1 R1 K12
+ 0x80040200, // 001F RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: item
+********************************************************************/
+be_local_closure(class_bytes_array_item, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_bytes_array, /* shared constants */
+ &be_const_str_item,
+ &be_const_str_solidified,
+ ( &(const binstruction[27]) { /* code */
+ 0x14080302, // 0000 LT R2 R1 K2
+ 0x780A0001, // 0001 JMPF R2 #0004
+ 0x88080101, // 0002 GETMBR R2 R0 K1
+ 0x00040202, // 0003 ADD R1 R1 R2
+ 0x14080302, // 0004 LT R2 R1 K2
+ 0x740A0002, // 0005 JMPT R2 #0009
+ 0x88080101, // 0006 GETMBR R2 R0 K1
+ 0x28080202, // 0007 GE R2 R1 R2
+ 0x780A0000, // 0008 JMPF R2 #000A
+ 0xB0061B0E, // 0009 RAISE 1 K13 K14
+ 0x88080100, // 000A GETMBR R2 R0 K0
+ 0x540E0004, // 000B LDINT R3 5
+ 0x1C080403, // 000C EQ R2 R2 R3
+ 0x780A0005, // 000D JMPF R2 #0014
+ 0x8C080109, // 000E GETMET R2 R0 K9
+ 0x88100105, // 000F GETMBR R4 R0 K5
+ 0x08100204, // 0010 MUL R4 R1 R4
+ 0x7C080400, // 0011 CALL R2 2
+ 0x80040400, // 0012 RET 1 R2
+ 0x70020005, // 0013 JMP #001A
+ 0x8C08010A, // 0014 GETMET R2 R0 K10
+ 0x88100105, // 0015 GETMBR R4 R0 K5
+ 0x08100204, // 0016 MUL R4 R1 R4
+ 0x88140100, // 0017 GETMBR R5 R0 K0
+ 0x7C080600, // 0018 CALL R2 3
+ 0x80040400, // 0019 RET 1 R2
+ 0x80000000, // 001A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: setitem
+********************************************************************/
+be_local_closure(class_bytes_array_setitem, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_bytes_array, /* shared constants */
+ &be_const_str_setitem,
+ &be_const_str_solidified,
+ ( &(const binstruction[29]) { /* code */
+ 0x140C0302, // 0000 LT R3 R1 K2
+ 0x780E0001, // 0001 JMPF R3 #0004
+ 0x880C0101, // 0002 GETMBR R3 R0 K1
+ 0x00040203, // 0003 ADD R1 R1 R3
+ 0x140C0302, // 0004 LT R3 R1 K2
+ 0x740E0002, // 0005 JMPT R3 #0009
+ 0x880C0101, // 0006 GETMBR R3 R0 K1
+ 0x280C0203, // 0007 GE R3 R1 R3
+ 0x780E0000, // 0008 JMPF R3 #000A
+ 0xB0061B0F, // 0009 RAISE 1 K13 K15
+ 0x880C0100, // 000A GETMBR R3 R0 K0
+ 0x54120004, // 000B LDINT R4 5
+ 0x1C0C0604, // 000C EQ R3 R3 R4
+ 0x780E0006, // 000D JMPF R3 #0015
+ 0x8C0C0110, // 000E GETMET R3 R0 K16
+ 0x88140105, // 000F GETMBR R5 R0 K5
+ 0x08140205, // 0010 MUL R5 R1 R5
+ 0x5C180400, // 0011 MOVE R6 R2
+ 0x7C0C0600, // 0012 CALL R3 3
+ 0x80040600, // 0013 RET 1 R3
+ 0x70020006, // 0014 JMP #001C
+ 0x8C0C0111, // 0015 GETMET R3 R0 K17
+ 0x88140105, // 0016 GETMBR R5 R0 K5
+ 0x08140205, // 0017 MUL R5 R1 R5
+ 0x88180100, // 0018 GETMBR R6 R0 K0
+ 0x5C1C0400, // 0019 MOVE R7 R2
+ 0x7C0C0800, // 001A CALL R3 4
+ 0x80040600, // 001B RET 1 R3
+ 0x80000000, // 001C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: bytes_array
+********************************************************************/
+extern const bclass be_class_bytes;
+be_local_class(bytes_array,
+ 3,
+ &be_class_bytes,
+ be_nested_map(8,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key(sz, -1), be_const_var(1) },
+ { be_const_key(setitem, -1), be_const_closure(class_bytes_array_setitem_closure) },
+ { be_const_key(item_size, -1), be_const_var(2) },
+ { be_const_key(init, 7), be_const_closure(class_bytes_array_init_closure) },
+ { be_const_key(size, 1), be_const_closure(class_bytes_array_size_closure) },
+ { be_const_key(tostring, -1), be_const_closure(class_bytes_array_tostring_closure) },
+ { be_const_key(item, -1), be_const_closure(class_bytes_array_item_closure) },
+ { be_const_key(item_type, -1), be_const_var(0) },
+ })),
+ (bstring*) &be_const_str_bytes_array
+);
+
+extern const bclass be_class_energy_phases_float;
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_energy_phases_float_init, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str(energy),
+ /* K1 */ be_nested_str(init),
+ /* K2 */ be_nested_str(_phases),
+ }),
+ &be_const_str_init,
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0x600C0003, // 0001 GETGBL R3 G3
+ 0x5C100000, // 0002 MOVE R4 R0
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x8C0C0701, // 0004 GETMET R3 R3 K1
+ 0x5C140200, // 0005 MOVE R5 R1
+ 0x541A0004, // 0006 LDINT R6 5
+ 0x881C0502, // 0007 GETMBR R7 R2 K2
+ 0x7C0C0800, // 0008 CALL R3 4
+ 0x80000000, // 0009 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: energy_phases_float
+********************************************************************/
+extern const bclass be_class_bytes_array;
+be_local_class(energy_phases_float,
+ 0,
+ &be_class_bytes_array,
+ be_nested_map(1,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key(init, -1), be_const_closure(class_energy_phases_float_init_closure) },
+ })),
+ (bstring*) &be_const_str_energy_phases_float
+);
+
+extern const bclass be_class_energy_phases_int32;
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_energy_phases_int32_init, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 3]) { /* constants */
+ /* K0 */ be_nested_str(energy),
+ /* K1 */ be_nested_str(init),
+ /* K2 */ be_nested_str(_phases),
+ }),
+ &be_const_str_init,
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0x600C0003, // 0001 GETGBL R3 G3
+ 0x5C100000, // 0002 MOVE R4 R0
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x8C0C0701, // 0004 GETMET R3 R3 K1
+ 0x5C140200, // 0005 MOVE R5 R1
+ 0x541A0003, // 0006 LDINT R6 4
+ 0x881C0502, // 0007 GETMBR R7 R2 K2
+ 0x7C0C0800, // 0008 CALL R3 4
+ 0x80000000, // 0009 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: energy_phases_int32
+********************************************************************/
+extern const bclass be_class_bytes_array;
+be_local_class(energy_phases_int32,
+ 0,
+ &be_class_bytes_array,
+ be_nested_map(1,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key(init, -1), be_const_closure(class_energy_phases_int32_init_closure) },
+ })),
+ (bstring*) &be_const_str_energy_phases_int32
+);
+
+extern const bclass be_class_energy_phases_uint8;
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_energy_phases_uint8_init, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str(energy),
+ /* K1 */ be_nested_str(init),
+ /* K2 */ be_const_int(1),
+ /* K3 */ be_nested_str(_phases),
+ }),
+ &be_const_str_init,
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0x600C0003, // 0001 GETGBL R3 G3
+ 0x5C100000, // 0002 MOVE R4 R0
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x8C0C0701, // 0004 GETMET R3 R3 K1
+ 0x5C140200, // 0005 MOVE R5 R1
+ 0x58180002, // 0006 LDCONST R6 K2
+ 0x881C0503, // 0007 GETMBR R7 R2 K3
+ 0x7C0C0800, // 0008 CALL R3 4
+ 0x80000000, // 0009 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: energy_phases_uint8
+********************************************************************/
+extern const bclass be_class_bytes_array;
+be_local_class(energy_phases_uint8,
+ 0,
+ &be_class_bytes_array,
+ be_nested_map(1,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key(init, -1), be_const_closure(class_energy_phases_uint8_init_closure) },
+ })),
+ (bstring*) &be_const_str_energy_phases_uint8
+);
+
+extern const bclass be_class_energy_phases_uint16;
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_energy_phases_uint16_init, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 2, /* argc */
+ 2, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 4]) { /* constants */
+ /* K0 */ be_nested_str(energy),
+ /* K1 */ be_nested_str(init),
+ /* K2 */ be_const_int(2),
+ /* K3 */ be_nested_str(_phases),
+ }),
+ &be_const_str_init,
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0x600C0003, // 0001 GETGBL R3 G3
+ 0x5C100000, // 0002 MOVE R4 R0
+ 0x7C0C0200, // 0003 CALL R3 1
+ 0x8C0C0701, // 0004 GETMET R3 R3 K1
+ 0x5C140200, // 0005 MOVE R5 R1
+ 0x58180002, // 0006 LDCONST R6 K2
+ 0x881C0503, // 0007 GETMBR R7 R2 K3
+ 0x7C0C0800, // 0008 CALL R3 4
+ 0x80000000, // 0009 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: energy_phases_uint16
+********************************************************************/
+extern const bclass be_class_bytes_array;
+be_local_class(energy_phases_uint16,
+ 0,
+ &be_class_bytes_array,
+ be_nested_map(1,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key(init, -1), be_const_closure(class_energy_phases_uint16_init_closure) },
+ })),
+ (bstring*) &be_const_str_energy_phases_uint16
+);
/********************************************************************
** Solidified function: init
@@ -15,7 +514,7 @@ be_local_closure(module_energy_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str(global),
@@ -45,7 +544,7 @@ be_local_closure(module_energy__deref, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 9]) { /* constants */
/* K0 */ be_nested_str(global),
@@ -103,7 +602,7 @@ be_local_closure(module_energy_read, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 5]) { /* constants */
/* K0 */ be_nested_str(energy),
@@ -143,7 +642,7 @@ be_local_closure(module_energy_member, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str(energy),
@@ -181,7 +680,7 @@ be_local_closure(module_energy_setmember, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str(energy),
@@ -206,5 +705,45 @@ be_local_closure(module_energy_setmember, /* name */
);
/*******************************************************************/
+
+/********************************************************************
+** Solidified function: tomap
+********************************************************************/
+be_local_closure(module_energy_tomap, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 5]) { /* constants */
+ /* K0 */ be_nested_str(energy),
+ /* K1 */ be_nested_str(_deref),
+ /* K2 */ be_nested_str(global),
+ /* K3 */ be_nested_str(_energy),
+ /* K4 */ be_nested_str(tomap),
+ }),
+ &be_const_str_tomap,
+ &be_const_str_solidified,
+ ( &(const binstruction[11]) { /* code */
+ 0xB8020000, // 0000 GETNGBL R0 K0
+ 0x8C000101, // 0001 GETMET R0 R0 K1
+ 0x7C000200, // 0002 CALL R0 1
+ 0xB8020400, // 0003 GETNGBL R0 K2
+ 0x88000103, // 0004 GETMBR R0 R0 K3
+ 0x78020003, // 0005 JMPF R0 #000A
+ 0xB8020600, // 0006 GETNGBL R0 K3
+ 0x8C000104, // 0007 GETMET R0 R0 K4
+ 0x7C000200, // 0008 CALL R0 1
+ 0x80040000, // 0009 RET 1 R0
+ 0x80000000, // 000A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
/********************************************************************/
/* End of solidification */
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_hue_bridge.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_hue_bridge.h
index 75166567d..567efa5eb 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_hue_bridge.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_hue_bridge.h
@@ -3,33 +3,77 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'hue_bridge_monad' ktab size: 50, total: 85 (saved 280 bytes)
+static const bvalue be_ktab_class_hue_bridge_monad[50] = {
+ /* K0 */ be_nested_str(hue_ntv),
+ /* K1 */ be_nested_str(lights),
+ /* K2 */ be_nested_str(contains),
+ /* K3 */ be_nested_str(full_state),
+ /* K4 */ be_nested_str(light),
+ /* K5 */ be_nested_str(name),
+ /* K6 */ be_nested_str(model),
+ /* K7 */ be_nested_str(manuf),
+ /* K8 */ be_nested_str(light_state),
+ /* K9 */ be_nested_str(int),
+ /* K10 */ be_nested_str(value_error),
+ /* K11 */ be_nested_str(id_X20must_X20be_X20of_X20type_X20_X27int_X27),
+ /* K12 */ be_nested_str(light_X20must_X20be_X20of_X20class_X20_X27light_state_X27),
+ /* K13 */ be_const_int(0),
+ /* K14 */ be_nested_str(missing_X20name),
+ /* K15 */ be_nested_str(Unknown),
+ /* K16 */ be_nested_str(Tasmota),
+ /* K17 */ be_nested_str(remove),
+ /* K18 */ be_nested_str(json),
+ /* K19 */ be_nested_str(keys),
+ /* K20 */ be_nested_str(full_status),
+ /* K21 */ be_nested_str(_X22),
+ /* K22 */ be_nested_str(_X22_X3A),
+ /* K23 */ be_nested_str(push),
+ /* K24 */ be_nested_str(stop_iteration),
+ /* K25 */ be_nested_str(concat),
+ /* K26 */ be_nested_str(_X2C),
+ /* K27 */ be_nested_str(load),
+ /* K28 */ be_nested_str(tasmota),
+ /* K29 */ be_nested_str(log),
+ /* K30 */ be_nested_str(BRY_X3A_X20invalid_X20hue_X20payload_X3A_X20),
+ /* K31 */ be_const_int(3),
+ /* K32 */ be_nested_str(on),
+ /* K33 */ be_nested_str(set_power),
+ /* K34 */ be_nested_str(xy),
+ /* K35 */ be_const_int(1),
+ /* K36 */ be_nested_str(set_xy),
+ /* K37 */ be_nested_str(hue),
+ /* K38 */ be_nested_str(sat),
+ /* K39 */ be_nested_str(type),
+ /* K40 */ be_nested_str(set_hue16sat),
+ /* K41 */ be_nested_str(ct),
+ /* K42 */ be_nested_str(set_ct),
+ /* K43 */ be_nested_str(bri),
+ /* K44 */ be_nested_str(set_bri),
+ /* K45 */ be_nested_str(_X2Flights_X2F),
+ /* K46 */ be_nested_str(_X2Fstate_X2F),
+ /* K47 */ be_nested_str(success),
+ /* K48 */ be_nested_str(signal_change),
+ /* K49 */ be_nested_str(dump),
+};
+
extern const bclass be_class_hue_bridge_monad;
/********************************************************************
** Solidified function: full_status
********************************************************************/
-extern const bclass be_class_hue_bridge_monad;
be_local_closure(class_hue_bridge_monad_full_status, /* name */
be_nested_proto(
11, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_hue_bridge_monad,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str(hue_ntv),
- /* K1 */ be_nested_str(lights),
- /* K2 */ be_nested_str(contains),
- /* K3 */ be_nested_str(full_state),
- /* K4 */ be_nested_str(light),
- /* K5 */ be_nested_str(name),
- /* K6 */ be_nested_str(model),
- /* K7 */ be_nested_str(manuf),
- }),
+ &be_ktab_class_hue_bridge_monad, /* shared constants */
&be_const_str_full_status,
&be_const_str_solidified,
( &(const binstruction[17]) { /* code */
@@ -59,24 +103,17 @@ be_local_closure(class_hue_bridge_monad_full_status, /* name */
/********************************************************************
** Solidified function: hue_status
********************************************************************/
-extern const bclass be_class_hue_bridge_monad;
be_local_closure(class_hue_bridge_monad_hue_status, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_hue_bridge_monad,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str(hue_ntv),
- /* K1 */ be_nested_str(lights),
- /* K2 */ be_nested_str(contains),
- /* K3 */ be_nested_str(light_state),
- /* K4 */ be_nested_str(light),
- }),
+ &be_ktab_class_hue_bridge_monad, /* shared constants */
&be_const_str_hue_status,
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
@@ -86,7 +123,7 @@ be_local_closure(class_hue_bridge_monad_hue_status, /* name */
0x5C140200, // 0003 MOVE R5 R1
0x7C0C0400, // 0004 CALL R3 2
0x780E0005, // 0005 JMPF R3 #000C
- 0x8C0C0503, // 0006 GETMET R3 R2 K3
+ 0x8C0C0508, // 0006 GETMET R3 R2 K8
0x88140101, // 0007 GETMBR R5 R0 K1
0x94140A01, // 0008 GETIDX R5 R5 R1
0x94140B04, // 0009 GETIDX R5 R5 K4
@@ -102,48 +139,32 @@ be_local_closure(class_hue_bridge_monad_hue_status, /* name */
/********************************************************************
** Solidified function: add_light
********************************************************************/
-extern const bclass be_class_hue_bridge_monad;
be_local_closure(class_hue_bridge_monad_add_light, /* name */
be_nested_proto(
10, /* nstack */
6, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_hue_bridge_monad,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str(int),
- /* K1 */ be_nested_str(value_error),
- /* K2 */ be_nested_str(id_X20must_X20be_X20of_X20type_X20_X27int_X27),
- /* K3 */ be_nested_str(light_state),
- /* K4 */ be_nested_str(light_X20must_X20be_X20of_X20class_X20_X27light_state_X27),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str(missing_X20name),
- /* K7 */ be_nested_str(Unknown),
- /* K8 */ be_nested_str(Tasmota),
- /* K9 */ be_nested_str(lights),
- /* K10 */ be_nested_str(light),
- /* K11 */ be_nested_str(name),
- /* K12 */ be_nested_str(model),
- /* K13 */ be_nested_str(manuf),
- }),
+ &be_ktab_class_hue_bridge_monad, /* shared constants */
&be_const_str_add_light,
&be_const_str_solidified,
( &(const binstruction[43]) { /* code */
0x60180004, // 0000 GETGBL R6 G4
0x5C1C0200, // 0001 MOVE R7 R1
0x7C180200, // 0002 CALL R6 1
- 0x20180D00, // 0003 NE R6 R6 K0
+ 0x20180D09, // 0003 NE R6 R6 K9
0x781A0000, // 0004 JMPF R6 #0006
- 0xB0060302, // 0005 RAISE 1 K1 K2
+ 0xB006150B, // 0005 RAISE 1 K10 K11
0x6018000F, // 0006 GETGBL R6 G15
0x5C1C0400, // 0007 MOVE R7 R2
- 0xB8220600, // 0008 GETNGBL R8 K3
+ 0xB8221000, // 0008 GETNGBL R8 K8
0x7C180400, // 0009 CALL R6 2
0x741A0000, // 000A JMPT R6 #000C
- 0xB0060304, // 000B RAISE 1 K1 K4
+ 0xB006150C, // 000B RAISE 1 K10 K12
0x60180008, // 000C GETGBL R6 G8
0x5C1C0600, // 000D MOVE R7 R3
0x7C180200, // 000E CALL R6 1
@@ -151,28 +172,28 @@ be_local_closure(class_hue_bridge_monad_add_light, /* name */
0x6018000C, // 0010 GETGBL R6 G12
0x5C1C0600, // 0011 MOVE R7 R3
0x7C180200, // 0012 CALL R6 1
- 0x1C180D05, // 0013 EQ R6 R6 K5
+ 0x1C180D0D, // 0013 EQ R6 R6 K13
0x781A0000, // 0014 JMPF R6 #0016
- 0xB0060306, // 0015 RAISE 1 K1 K6
+ 0xB006150E, // 0015 RAISE 1 K10 K14
0x5C180800, // 0016 MOVE R6 R4
0x741A0000, // 0017 JMPT R6 #0019
- 0x58100007, // 0018 LDCONST R4 K7
+ 0x5810000F, // 0018 LDCONST R4 K15
0x5C180A00, // 0019 MOVE R6 R5
0x741A0000, // 001A JMPT R6 #001C
- 0x58140008, // 001B LDCONST R5 K8
- 0x88180109, // 001C GETMBR R6 R0 K9
+ 0x58140010, // 001B LDCONST R5 K16
+ 0x88180101, // 001C GETMBR R6 R0 K1
0x601C0013, // 001D GETGBL R7 G19
0x7C1C0000, // 001E CALL R7 0
- 0x981E1402, // 001F SETIDX R7 K10 R2
- 0x981E1603, // 0020 SETIDX R7 K11 R3
+ 0x981E0802, // 001F SETIDX R7 K4 R2
+ 0x981E0A03, // 0020 SETIDX R7 K5 R3
0x60200008, // 0021 GETGBL R8 G8
0x5C240800, // 0022 MOVE R9 R4
0x7C200200, // 0023 CALL R8 1
- 0x981E1808, // 0024 SETIDX R7 K12 R8
+ 0x981E0C08, // 0024 SETIDX R7 K6 R8
0x60200008, // 0025 GETGBL R8 G8
0x5C240A00, // 0026 MOVE R9 R5
0x7C200200, // 0027 CALL R8 1
- 0x981E1A08, // 0028 SETIDX R7 K13 R8
+ 0x981E0E08, // 0028 SETIDX R7 K7 R8
0x98180207, // 0029 SETIDX R6 R1 R7
0x80040400, // 002A RET 1 R2
})
@@ -184,26 +205,22 @@ be_local_closure(class_hue_bridge_monad_add_light, /* name */
/********************************************************************
** Solidified function: remove_light
********************************************************************/
-extern const bclass be_class_hue_bridge_monad;
be_local_closure(class_hue_bridge_monad_remove_light, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_hue_bridge_monad,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(lights),
- /* K1 */ be_nested_str(remove),
- }),
+ &be_ktab_class_hue_bridge_monad, /* shared constants */
&be_const_str_remove_light,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x88080101, // 0000 GETMBR R2 R0 K1
+ 0x8C080511, // 0001 GETMET R2 R2 K17
0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
0x80000000, // 0004 RET 0
@@ -216,26 +233,23 @@ be_local_closure(class_hue_bridge_monad_remove_light, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_hue_bridge_monad;
be_local_closure(class_hue_bridge_monad_init, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_hue_bridge_monad,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(lights),
- }),
+ &be_ktab_class_hue_bridge_monad, /* shared constants */
&be_const_str_init,
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x60040013, // 0000 GETGBL R1 G19
0x7C040000, // 0001 CALL R1 0
- 0x90020001, // 0002 SETMBR R0 K0 R1
+ 0x90020201, // 0002 SETMBR R0 K1 R1
0x80000000, // 0003 RET 0
})
)
@@ -246,70 +260,56 @@ be_local_closure(class_hue_bridge_monad_init, /* name */
/********************************************************************
** Solidified function: discover
********************************************************************/
-extern const bclass be_class_hue_bridge_monad;
be_local_closure(class_hue_bridge_monad_discover, /* name */
be_nested_proto(
10, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_hue_bridge_monad,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str(hue_ntv),
- /* K1 */ be_nested_str(json),
- /* K2 */ be_nested_str(lights),
- /* K3 */ be_nested_str(keys),
- /* K4 */ be_nested_str(full_status),
- /* K5 */ be_nested_str(_X22),
- /* K6 */ be_nested_str(_X22_X3A),
- /* K7 */ be_nested_str(push),
- /* K8 */ be_nested_str(stop_iteration),
- /* K9 */ be_const_int(0),
- /* K10 */ be_nested_str(concat),
- /* K11 */ be_nested_str(_X2C),
- }),
+ &be_ktab_class_hue_bridge_monad, /* shared constants */
&be_const_str_discover,
&be_const_str_solidified,
( &(const binstruction[39]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
- 0xA40A0200, // 0001 IMPORT R2 K1
+ 0xA40A2400, // 0001 IMPORT R2 K18
0x600C0012, // 0002 GETGBL R3 G18
0x7C0C0000, // 0003 CALL R3 0
0x60100010, // 0004 GETGBL R4 G16
- 0x88140102, // 0005 GETMBR R5 R0 K2
- 0x8C140B03, // 0006 GETMET R5 R5 K3
+ 0x88140101, // 0005 GETMBR R5 R0 K1
+ 0x8C140B13, // 0006 GETMET R5 R5 K19
0x7C140200, // 0007 CALL R5 1
0x7C100200, // 0008 CALL R4 1
0xA802000F, // 0009 EXBLK 0 #001A
0x5C140800, // 000A MOVE R5 R4
0x7C140000, // 000B CALL R5 0
- 0x8C180104, // 000C GETMET R6 R0 K4
+ 0x8C180114, // 000C GETMET R6 R0 K20
0x5C200A00, // 000D MOVE R8 R5
0x7C180400, // 000E CALL R6 2
0x781A0008, // 000F JMPF R6 #0019
0x601C0008, // 0010 GETGBL R7 G8
0x5C200A00, // 0011 MOVE R8 R5
0x7C1C0200, // 0012 CALL R7 1
- 0x001E0A07, // 0013 ADD R7 K5 R7
- 0x001C0F06, // 0014 ADD R7 R7 K6
+ 0x001E2A07, // 0013 ADD R7 K21 R7
+ 0x001C0F16, // 0014 ADD R7 R7 K22
0x00180E06, // 0015 ADD R6 R7 R6
- 0x8C1C0707, // 0016 GETMET R7 R3 K7
+ 0x8C1C0717, // 0016 GETMET R7 R3 K23
0x5C240C00, // 0017 MOVE R9 R6
0x7C1C0400, // 0018 CALL R7 2
0x7001FFEF, // 0019 JMP #000A
- 0x58100008, // 001A LDCONST R4 K8
+ 0x58100018, // 001A LDCONST R4 K24
0xAC100200, // 001B CATCH R4 1 0
0xB0080000, // 001C RAISE 2 R0 R0
0x6010000C, // 001D GETGBL R4 G12
0x5C140600, // 001E MOVE R5 R3
0x7C100200, // 001F CALL R4 1
- 0x24100909, // 0020 GT R4 R4 K9
+ 0x2410090D, // 0020 GT R4 R4 K13
0x78120003, // 0021 JMPF R4 #0026
- 0x8C10070A, // 0022 GETMET R4 R3 K10
- 0x5818000B, // 0023 LDCONST R6 K11
+ 0x8C100719, // 0022 GETMET R4 R3 K25
+ 0x5818001A, // 0023 LDCONST R6 K26
0x7C100400, // 0024 CALL R4 2
0x80040800, // 0025 RET 1 R4
0x80000000, // 0026 RET 0
@@ -322,43 +322,37 @@ be_local_closure(class_hue_bridge_monad_discover, /* name */
/********************************************************************
** Solidified function: light_to_id
********************************************************************/
-extern const bclass be_class_hue_bridge_monad;
be_local_closure(class_hue_bridge_monad_light_to_id, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_hue_bridge_monad,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str(lights),
- /* K1 */ be_nested_str(keys),
- /* K2 */ be_nested_str(light),
- /* K3 */ be_nested_str(stop_iteration),
- }),
+ &be_ktab_class_hue_bridge_monad, /* shared constants */
&be_const_str_light_to_id,
&be_const_str_solidified,
( &(const binstruction[20]) { /* code */
0x60080010, // 0000 GETGBL R2 G16
- 0x880C0100, // 0001 GETMBR R3 R0 K0
- 0x8C0C0701, // 0002 GETMET R3 R3 K1
+ 0x880C0101, // 0001 GETMBR R3 R0 K1
+ 0x8C0C0713, // 0002 GETMET R3 R3 K19
0x7C0C0200, // 0003 CALL R3 1
0x7C080200, // 0004 CALL R2 1
0xA8020009, // 0005 EXBLK 0 #0010
0x5C0C0400, // 0006 MOVE R3 R2
0x7C0C0000, // 0007 CALL R3 0
- 0x88100100, // 0008 GETMBR R4 R0 K0
+ 0x88100101, // 0008 GETMBR R4 R0 K1
0x94100803, // 0009 GETIDX R4 R4 R3
- 0x94100902, // 000A GETIDX R4 R4 K2
+ 0x94100904, // 000A GETIDX R4 R4 K4
0x1C100204, // 000B EQ R4 R1 R4
0x78120001, // 000C JMPF R4 #000F
0xA8040001, // 000D EXBLK 1 1
0x80040600, // 000E RET 1 R3
0x7001FFF5, // 000F JMP #0006
- 0x58080003, // 0010 LDCONST R2 K3
+ 0x58080018, // 0010 LDCONST R2 K24
0xAC080200, // 0011 CATCH R2 1 0
0xB0080000, // 0012 RAISE 2 R0 R0
0x80000000, // 0013 RET 0
@@ -371,54 +365,21 @@ be_local_closure(class_hue_bridge_monad_light_to_id, /* name */
/********************************************************************
** Solidified function: cmd
********************************************************************/
-extern const bclass be_class_hue_bridge_monad;
be_local_closure(class_hue_bridge_monad_cmd, /* name */
be_nested_proto(
18, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_hue_bridge_monad,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[31]) { /* constants */
- /* K0 */ be_nested_str(json),
- /* K1 */ be_nested_str(lights),
- /* K2 */ be_nested_str(contains),
- /* K3 */ be_nested_str(light),
- /* K4 */ be_nested_str(load),
- /* K5 */ be_nested_str(tasmota),
- /* K6 */ be_nested_str(log),
- /* K7 */ be_nested_str(BRY_X3A_X20invalid_X20hue_X20payload_X3A_X20),
- /* K8 */ be_const_int(3),
- /* K9 */ be_nested_str(on),
- /* K10 */ be_nested_str(set_power),
- /* K11 */ be_nested_str(xy),
- /* K12 */ be_const_int(0),
- /* K13 */ be_const_int(1),
- /* K14 */ be_nested_str(set_xy),
- /* K15 */ be_nested_str(hue),
- /* K16 */ be_nested_str(sat),
- /* K17 */ be_nested_str(type),
- /* K18 */ be_nested_str(set_hue16sat),
- /* K19 */ be_nested_str(ct),
- /* K20 */ be_nested_str(set_ct),
- /* K21 */ be_nested_str(bri),
- /* K22 */ be_nested_str(set_bri),
- /* K23 */ be_nested_str(keys),
- /* K24 */ be_nested_str(_X2Flights_X2F),
- /* K25 */ be_nested_str(_X2Fstate_X2F),
- /* K26 */ be_nested_str(success),
- /* K27 */ be_nested_str(push),
- /* K28 */ be_nested_str(stop_iteration),
- /* K29 */ be_nested_str(signal_change),
- /* K30 */ be_nested_str(dump),
- }),
+ &be_ktab_class_hue_bridge_monad, /* shared constants */
&be_const_str_cmd,
&be_const_str_solidified,
( &(const binstruction[167]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
+ 0xA40E2400, // 0000 IMPORT R3 K18
0x88100101, // 0001 GETMBR R4 R0 K1
0x8C100902, // 0002 GETMET R4 R4 K2
0x5C180200, // 0003 MOVE R6 R1
@@ -427,128 +388,128 @@ be_local_closure(class_hue_bridge_monad_cmd, /* name */
0x80000800, // 0006 RET 0
0x88100101, // 0007 GETMBR R4 R0 K1
0x94100801, // 0008 GETIDX R4 R4 R1
- 0x94100903, // 0009 GETIDX R4 R4 K3
+ 0x94100904, // 0009 GETIDX R4 R4 K4
0x60140013, // 000A GETGBL R5 G19
0x7C140000, // 000B CALL R5 0
- 0x8C180704, // 000C GETMET R6 R3 K4
+ 0x8C18071B, // 000C GETMET R6 R3 K27
0x5C200400, // 000D MOVE R8 R2
0x7C180400, // 000E CALL R6 2
0x4C1C0000, // 000F LDNIL R7
0x1C1C0407, // 0010 EQ R7 R2 R7
0x781E0008, // 0011 JMPF R7 #001B
- 0xB81E0A00, // 0012 GETNGBL R7 K5
- 0x8C1C0F06, // 0013 GETMET R7 R7 K6
+ 0xB81E3800, // 0012 GETNGBL R7 K28
+ 0x8C1C0F1D, // 0013 GETMET R7 R7 K29
0x60240008, // 0014 GETGBL R9 G8
0x5C280400, // 0015 MOVE R10 R2
0x7C240200, // 0016 CALL R9 1
- 0x00260E09, // 0017 ADD R9 K7 R9
- 0x58280008, // 0018 LDCONST R10 K8
+ 0x00263C09, // 0017 ADD R9 K30 R9
+ 0x5828001F, // 0018 LDCONST R10 K31
0x7C1C0600, // 0019 CALL R7 3
0x80000E00, // 001A RET 0
0x8C1C0D02, // 001B GETMET R7 R6 K2
- 0x58240009, // 001C LDCONST R9 K9
+ 0x58240020, // 001C LDCONST R9 K32
0x7C1C0400, // 001D CALL R7 2
0x781E0006, // 001E JMPF R7 #0026
0x601C0017, // 001F GETGBL R7 G23
- 0x94200D09, // 0020 GETIDX R8 R6 K9
+ 0x94200D20, // 0020 GETIDX R8 R6 K32
0x7C1C0200, // 0021 CALL R7 1
- 0x98161207, // 0022 SETIDX R5 K9 R7
- 0x8C20090A, // 0023 GETMET R8 R4 K10
+ 0x98164007, // 0022 SETIDX R5 K32 R7
+ 0x8C200921, // 0023 GETMET R8 R4 K33
0x5C280E00, // 0024 MOVE R10 R7
0x7C200400, // 0025 CALL R8 2
0x8C1C0D02, // 0026 GETMET R7 R6 K2
- 0x5824000B, // 0027 LDCONST R9 K11
+ 0x58240022, // 0027 LDCONST R9 K34
0x7C1C0400, // 0028 CALL R7 2
0x781E0013, // 0029 JMPF R7 #003E
- 0x941C0D0B, // 002A GETIDX R7 R6 K11
+ 0x941C0D22, // 002A GETIDX R7 R6 K34
0x6020000A, // 002B GETGBL R8 G10
- 0x94240F0C, // 002C GETIDX R9 R7 K12
+ 0x94240F0D, // 002C GETIDX R9 R7 K13
0x7C200200, // 002D CALL R8 1
0x6024000A, // 002E GETGBL R9 G10
- 0x94280F0D, // 002F GETIDX R10 R7 K13
+ 0x94280F23, // 002F GETIDX R10 R7 K35
0x7C240200, // 0030 CALL R9 1
0x60280012, // 0031 GETGBL R10 G18
0x7C280000, // 0032 CALL R10 0
0x402C1408, // 0033 CONNECT R11 R10 R8
0x402C1409, // 0034 CONNECT R11 R10 R9
- 0x9816160A, // 0035 SETIDX R5 K11 R10
+ 0x9816440A, // 0035 SETIDX R5 K34 R10
0x542AFFFF, // 0036 LDINT R10 65536
0x0820100A, // 0037 MUL R8 R8 R10
0x542AFFFF, // 0038 LDINT R10 65536
0x0824120A, // 0039 MUL R9 R9 R10
- 0x8C28090E, // 003A GETMET R10 R4 K14
+ 0x8C280924, // 003A GETMET R10 R4 K36
0x5C301000, // 003B MOVE R12 R8
0x5C341200, // 003C MOVE R13 R9
0x7C280600, // 003D CALL R10 3
0x501C0000, // 003E LDBOOL R7 0 0
- 0x8820090F, // 003F GETMBR R8 R4 K15
- 0x88240910, // 0040 GETMBR R9 R4 K16
+ 0x88200925, // 003F GETMBR R8 R4 K37
+ 0x88240926, // 0040 GETMBR R9 R4 K38
0x8C280D02, // 0041 GETMET R10 R6 K2
- 0x5830000F, // 0042 LDCONST R12 K15
+ 0x58300025, // 0042 LDCONST R12 K37
0x7C280400, // 0043 CALL R10 2
0x782A0009, // 0044 JMPF R10 #004F
0x60280009, // 0045 GETGBL R10 G9
- 0x942C0D0F, // 0046 GETIDX R11 R6 K15
+ 0x942C0D25, // 0046 GETIDX R11 R6 K37
0x7C280200, // 0047 CALL R10 1
0x5C201400, // 0048 MOVE R8 R10
- 0x98161E08, // 0049 SETIDX R5 K15 R8
+ 0x98164A08, // 0049 SETIDX R5 K37 R8
0x542AFFFE, // 004A LDINT R10 65535
0x2428100A, // 004B GT R10 R8 R10
0x782A0000, // 004C JMPF R10 #004E
0x5422FFFE, // 004D LDINT R8 65535
0x501C0200, // 004E LDBOOL R7 1 0
0x8C280D02, // 004F GETMET R10 R6 K2
- 0x58300010, // 0050 LDCONST R12 K16
+ 0x58300026, // 0050 LDCONST R12 K38
0x7C280400, // 0051 CALL R10 2
0x782A000C, // 0052 JMPF R10 #0060
0x60280009, // 0053 GETGBL R10 G9
- 0x942C0D10, // 0054 GETIDX R11 R6 K16
+ 0x942C0D26, // 0054 GETIDX R11 R6 K38
0x7C280200, // 0055 CALL R10 1
0x5C241400, // 0056 MOVE R9 R10
- 0x98162009, // 0057 SETIDX R5 K16 R9
+ 0x98164C09, // 0057 SETIDX R5 K38 R9
0x542A00FD, // 0058 LDINT R10 254
0x2828120A, // 0059 GE R10 R9 R10
0x782A0000, // 005A JMPF R10 #005C
0x542600FE, // 005B LDINT R9 255
- 0x88280911, // 005C GETMBR R10 R4 K17
- 0x28281508, // 005D GE R10 R10 K8
+ 0x88280927, // 005C GETMBR R10 R4 K39
+ 0x2828151F, // 005D GE R10 R10 K31
0x782A0000, // 005E JMPF R10 #0060
0x501C0200, // 005F LDBOOL R7 1 0
0x781E0003, // 0060 JMPF R7 #0065
- 0x8C280912, // 0061 GETMET R10 R4 K18
+ 0x8C280928, // 0061 GETMET R10 R4 K40
0x5C301000, // 0062 MOVE R12 R8
0x5C341200, // 0063 MOVE R13 R9
0x7C280600, // 0064 CALL R10 3
0x8C280D02, // 0065 GETMET R10 R6 K2
- 0x58300013, // 0066 LDCONST R12 K19
+ 0x58300029, // 0066 LDCONST R12 K41
0x7C280400, // 0067 CALL R10 2
0x782A0006, // 0068 JMPF R10 #0070
0x60280009, // 0069 GETGBL R10 G9
- 0x942C0D13, // 006A GETIDX R11 R6 K19
+ 0x942C0D29, // 006A GETIDX R11 R6 K41
0x7C280200, // 006B CALL R10 1
- 0x9816260A, // 006C SETIDX R5 K19 R10
- 0x8C2C0914, // 006D GETMET R11 R4 K20
+ 0x9816520A, // 006C SETIDX R5 K41 R10
+ 0x8C2C092A, // 006D GETMET R11 R4 K42
0x5C341400, // 006E MOVE R13 R10
0x7C2C0400, // 006F CALL R11 2
0x8C280D02, // 0070 GETMET R10 R6 K2
- 0x58300015, // 0071 LDCONST R12 K21
+ 0x5830002B, // 0071 LDCONST R12 K43
0x7C280400, // 0072 CALL R10 2
0x782A000A, // 0073 JMPF R10 #007F
0x60280009, // 0074 GETGBL R10 G9
- 0x942C0D15, // 0075 GETIDX R11 R6 K21
+ 0x942C0D2B, // 0075 GETIDX R11 R6 K43
0x7C280200, // 0076 CALL R10 1
- 0x98162A0A, // 0077 SETIDX R5 K21 R10
+ 0x9816560A, // 0077 SETIDX R5 K43 R10
0x542E00FD, // 0078 LDINT R11 254
0x282C140B, // 0079 GE R11 R10 R11
0x782E0000, // 007A JMPF R11 #007C
0x542A00FE, // 007B LDINT R10 255
- 0x8C2C0916, // 007C GETMET R11 R4 K22
+ 0x8C2C092C, // 007C GETMET R11 R4 K44
0x5C341400, // 007D MOVE R13 R10
0x7C2C0400, // 007E CALL R11 2
0x60280012, // 007F GETGBL R10 G18
0x7C280000, // 0080 CALL R10 0
0x602C0010, // 0081 GETGBL R11 G16
- 0x8C300B17, // 0082 GETMET R12 R5 K23
+ 0x8C300B13, // 0082 GETMET R12 R5 K19
0x7C300200, // 0083 CALL R12 1
0x7C2C0200, // 0084 CALL R11 1
0xA8020012, // 0085 EXBLK 0 #0099
@@ -557,8 +518,8 @@ be_local_closure(class_hue_bridge_monad_cmd, /* name */
0x60340008, // 0088 GETGBL R13 G8
0x5C380200, // 0089 MOVE R14 R1
0x7C340200, // 008A CALL R13 1
- 0x0036300D, // 008B ADD R13 K24 R13
- 0x00341B19, // 008C ADD R13 R13 K25
+ 0x00365A0D, // 008B ADD R13 K45 R13
+ 0x00341B2E, // 008C ADD R13 R13 K46
0x00341A0C, // 008D ADD R13 R13 R12
0x60380013, // 008E GETGBL R14 G19
0x7C380000, // 008F CALL R14 0
@@ -566,22 +527,22 @@ be_local_closure(class_hue_bridge_monad_cmd, /* name */
0x7C3C0000, // 0091 CALL R15 0
0x94400A0C, // 0092 GETIDX R16 R5 R12
0x983C1A10, // 0093 SETIDX R15 R13 R16
- 0x983A340F, // 0094 SETIDX R14 K26 R15
- 0x8C3C151B, // 0095 GETMET R15 R10 K27
+ 0x983A5E0F, // 0094 SETIDX R14 K47 R15
+ 0x8C3C1517, // 0095 GETMET R15 R10 K23
0x5C441C00, // 0096 MOVE R17 R14
0x7C3C0400, // 0097 CALL R15 2
0x7001FFEC, // 0098 JMP #0086
- 0x582C001C, // 0099 LDCONST R11 K28
+ 0x582C0018, // 0099 LDCONST R11 K24
0xAC2C0200, // 009A CATCH R11 1 0
0xB0080000, // 009B RAISE 2 R0 R0
0x602C000C, // 009C GETGBL R11 G12
0x5C301400, // 009D MOVE R12 R10
0x7C2C0200, // 009E CALL R11 1
- 0x242C170C, // 009F GT R11 R11 K12
+ 0x242C170D, // 009F GT R11 R11 K13
0x782E0001, // 00A0 JMPF R11 #00A3
- 0x8C2C091D, // 00A1 GETMET R11 R4 K29
+ 0x8C2C0930, // 00A1 GETMET R11 R4 K48
0x7C2C0200, // 00A2 CALL R11 1
- 0x8C2C071E, // 00A3 GETMET R11 R3 K30
+ 0x8C2C0731, // 00A3 GETMET R11 R3 K49
0x5C341400, // 00A4 MOVE R13 R10
0x7C2C0400, // 00A5 CALL R11 2
0x80041600, // 00A6 RET 1 R11
@@ -594,58 +555,48 @@ be_local_closure(class_hue_bridge_monad_cmd, /* name */
/********************************************************************
** Solidified function: groups
********************************************************************/
-extern const bclass be_class_hue_bridge_monad;
be_local_closure(class_hue_bridge_monad_groups, /* name */
be_nested_proto(
8, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_hue_bridge_monad,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str(lights),
- /* K1 */ be_nested_str(keys),
- /* K2 */ be_nested_str(push),
- /* K3 */ be_nested_str(_X22),
- /* K4 */ be_nested_str(stop_iteration),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str(concat),
- /* K7 */ be_nested_str(_X2C),
- }),
+ &be_ktab_class_hue_bridge_monad, /* shared constants */
&be_const_str_groups,
&be_const_str_solidified,
( &(const binstruction[31]) { /* code */
0x60040012, // 0000 GETGBL R1 G18
0x7C040000, // 0001 CALL R1 0
0x60080010, // 0002 GETGBL R2 G16
- 0x880C0100, // 0003 GETMBR R3 R0 K0
- 0x8C0C0701, // 0004 GETMET R3 R3 K1
+ 0x880C0101, // 0003 GETMBR R3 R0 K1
+ 0x8C0C0713, // 0004 GETMET R3 R3 K19
0x7C0C0200, // 0005 CALL R3 1
0x7C080200, // 0006 CALL R2 1
0xA8020009, // 0007 EXBLK 0 #0012
0x5C0C0400, // 0008 MOVE R3 R2
0x7C0C0000, // 0009 CALL R3 0
- 0x8C100302, // 000A GETMET R4 R1 K2
+ 0x8C100317, // 000A GETMET R4 R1 K23
0x60180008, // 000B GETGBL R6 G8
0x5C1C0600, // 000C MOVE R7 R3
0x7C180200, // 000D CALL R6 1
- 0x001A0606, // 000E ADD R6 K3 R6
- 0x00180D03, // 000F ADD R6 R6 K3
+ 0x001A2A06, // 000E ADD R6 K21 R6
+ 0x00180D15, // 000F ADD R6 R6 K21
0x7C100400, // 0010 CALL R4 2
0x7001FFF5, // 0011 JMP #0008
- 0x58080004, // 0012 LDCONST R2 K4
+ 0x58080018, // 0012 LDCONST R2 K24
0xAC080200, // 0013 CATCH R2 1 0
0xB0080000, // 0014 RAISE 2 R0 R0
0x6008000C, // 0015 GETGBL R2 G12
0x5C0C0200, // 0016 MOVE R3 R1
0x7C080200, // 0017 CALL R2 1
- 0x24080505, // 0018 GT R2 R2 K5
+ 0x2408050D, // 0018 GT R2 R2 K13
0x780A0003, // 0019 JMPF R2 #001E
- 0x8C080306, // 001A GETMET R2 R1 K6
- 0x58100007, // 001B LDCONST R4 K7
+ 0x8C080319, // 001A GETMET R2 R1 K25
+ 0x5810001A, // 001B LDCONST R4 K26
0x7C080400, // 001C CALL R2 2
0x80040400, // 001D RET 1 R2
0x80000000, // 001E RET 0
@@ -688,7 +639,7 @@ be_local_closure(_anonymous_, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_const_class(be_class_hue_bridge_monad),
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h
index 696a4aa77..003818560 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp192.h
@@ -3,30 +3,64 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'AXP192' ktab size: 37, total: 82 (saved 360 bytes)
+static const bvalue be_ktab_class_AXP192[37] = {
+ /* K0 */ be_const_int(1),
+ /* K1 */ be_nested_str(write_bit),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_const_int(2),
+ /* K4 */ be_const_int(3),
+ /* K5 */ be_nested_str(read24),
+ /* K6 */ be_const_real_hex(0x3A102DE0),
+ /* K7 */ be_nested_str(read12),
+ /* K8 */ be_const_real_hex(0x3A902DE0),
+ /* K9 */ be_const_real_hex(0x3EC00000),
+ /* K10 */ be_nested_str(wire),
+ /* K11 */ be_nested_str(read),
+ /* K12 */ be_nested_str(addr),
+ /* K13 */ be_const_real_hex(0x3AB78035),
+ /* K14 */ be_const_real_hex(0x3ADED28A),
+ /* K15 */ be_nested_str(write8),
+ /* K16 */ be_nested_str(read8),
+ /* K17 */ be_nested_str(_X2C_X22AXP192_X22_X3A_X7B_X22VBusVoltage_X22_X3A_X25_X2E3f_X2C_X22VBusCurrent_X22_X3A_X25_X2E1f_X2C_X22BattVoltage_X22_X3A_X25_X2E3f_X2C_X22BattCurrent_X22_X3A_X25_X2E1f_X2C_X22Temperature_X22_X3A_X25_X2E1f_X7D),
+ /* K18 */ be_nested_str(get_vbus_voltage),
+ /* K19 */ be_nested_str(get_bat_voltage),
+ /* K20 */ be_nested_str(get_bat_current),
+ /* K21 */ be_nested_str(get_temp),
+ /* K22 */ be_nested_str(tasmota),
+ /* K23 */ be_nested_str(response_append),
+ /* K24 */ be_nested_str(I2C_Driver),
+ /* K25 */ be_nested_str(init),
+ /* K26 */ be_nested_str(AXP192),
+ /* K27 */ be_nested_str(read13),
+ /* K28 */ be_const_real_hex(0x3F000000),
+ /* K29 */ be_nested_str(_X7Bs_X7DVBus_X20Voltage_X7Bm_X7D_X25_X2E3f_X20V_X7Be_X7D),
+ /* K30 */ be_nested_str(_X7Bs_X7DVBus_X20Current_X7Bm_X7D_X25_X2E1f_X20mA_X7Be_X7D),
+ /* K31 */ be_nested_str(_X7Bs_X7DBatt_X20Voltage_X7Bm_X7D_X25_X2E3f_X20V_X7Be_X7D),
+ /* K32 */ be_nested_str(_X7Bs_X7DBatt_X20Current_X7Bm_X7D_X25_X2E1f_X20mA_X7Be_X7D),
+ /* K33 */ be_nested_str(_X7Bs_X7DAXP_X20Temperature_X7Bm_X7D_X25_X2E1f_X20_X26deg_X3BC_X7Be_X7D),
+ /* K34 */ be_nested_str(web_send_decimal),
+ /* K35 */ be_const_real_hex(0x3DCCCCCD),
+ /* K36 */ be_const_real_hex(0x4310B333),
+};
+
extern const bclass be_class_AXP192;
/********************************************************************
** Solidified function: set_dcdc_enable
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_set_dcdc_enable, /* name */
be_nested_proto(
8, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_const_int(1),
- /* K1 */ be_nested_str(write_bit),
- /* K2 */ be_const_int(0),
- /* K3 */ be_const_int(2),
- /* K4 */ be_const_int(3),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_set_dcdc_enable,
&be_const_str_solidified,
( &(const binstruction[22]) { /* code */
@@ -61,28 +95,24 @@ be_local_closure(class_AXP192_set_dcdc_enable, /* name */
/********************************************************************
** Solidified function: get_bat_power
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_get_bat_power, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(read24),
- /* K1 */ be_const_real_hex(0x3A102DE0),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_get_bat_power,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040105, // 0000 GETMET R1 R0 K5
0x540E006F, // 0001 LDINT R3 112
0x7C040400, // 0002 CALL R1 2
- 0x08040301, // 0003 MUL R1 R1 K1
+ 0x08040306, // 0003 MUL R1 R1 K6
0x80040200, // 0004 RET 1 R1
})
)
@@ -93,28 +123,24 @@ be_local_closure(class_AXP192_get_bat_power, /* name */
/********************************************************************
** Solidified function: get_bat_voltage
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_get_bat_voltage, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(read12),
- /* K1 */ be_const_real_hex(0x3A902DE0),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_get_bat_voltage,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040107, // 0000 GETMET R1 R0 K7
0x540E0077, // 0001 LDINT R3 120
0x7C040400, // 0002 CALL R1 2
- 0x08040301, // 0003 MUL R1 R1 K1
+ 0x08040308, // 0003 MUL R1 R1 K8
0x80040200, // 0004 RET 1 R1
})
)
@@ -125,28 +151,24 @@ be_local_closure(class_AXP192_get_bat_voltage, /* name */
/********************************************************************
** Solidified function: get_vbus_current
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_get_vbus_current, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(read12),
- /* K1 */ be_const_real_hex(0x3EC00000),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_get_vbus_current,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040107, // 0000 GETMET R1 R0 K7
0x540E005B, // 0001 LDINT R3 92
0x7C040400, // 0002 CALL R1 2
- 0x08040301, // 0003 MUL R1 R1 K1
+ 0x08040309, // 0003 MUL R1 R1 K9
0x80040200, // 0004 RET 1 R1
})
)
@@ -157,28 +179,24 @@ be_local_closure(class_AXP192_get_vbus_current, /* name */
/********************************************************************
** Solidified function: get_warning_level
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_get_warning_level, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(read12),
- /* K1 */ be_const_int(1),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_get_warning_level,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040107, // 0000 GETMET R1 R0 K7
0x540E0046, // 0001 LDINT R3 71
0x7C040400, // 0002 CALL R1 2
- 0x2C040301, // 0003 AND R1 R1 K1
+ 0x2C040300, // 0003 AND R1 R1 K0
0x80040200, // 0004 RET 1 R1
})
)
@@ -189,37 +207,32 @@ be_local_closure(class_AXP192_get_warning_level, /* name */
/********************************************************************
** Solidified function: set_ldo_enable
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_set_ldo_enable, /* name */
be_nested_proto(
8, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_const_int(2),
- /* K1 */ be_nested_str(write_bit),
- /* K2 */ be_const_int(3),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_set_ldo_enable,
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
- 0x1C0C0300, // 0000 EQ R3 R1 K0
+ 0x1C0C0303, // 0000 EQ R3 R1 K3
0x780E0004, // 0001 JMPF R3 #0007
0x8C0C0101, // 0002 GETMET R3 R0 K1
0x54160011, // 0003 LDINT R5 18
- 0x58180000, // 0004 LDCONST R6 K0
+ 0x58180003, // 0004 LDCONST R6 K3
0x5C1C0400, // 0005 MOVE R7 R2
0x7C0C0800, // 0006 CALL R3 4
- 0x1C0C0302, // 0007 EQ R3 R1 K2
+ 0x1C0C0304, // 0007 EQ R3 R1 K4
0x780E0004, // 0008 JMPF R3 #000E
0x8C0C0101, // 0009 GETMET R3 R0 K1
0x54160011, // 000A LDINT R5 18
- 0x58180002, // 000B LDCONST R6 K2
+ 0x58180004, // 000B LDCONST R6 K4
0x5C1C0400, // 000C MOVE R7 R2
0x7C0C0800, // 000D CALL R3 4
0x80000000, // 000E RET 0
@@ -232,32 +245,25 @@ be_local_closure(class_AXP192_set_ldo_enable, /* name */
/********************************************************************
** Solidified function: get_input_power_status
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_get_input_power_status, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str(wire),
- /* K1 */ be_nested_str(read),
- /* K2 */ be_nested_str(addr),
- /* K3 */ be_const_int(0),
- /* K4 */ be_const_int(1),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_get_input_power_status,
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x880C0102, // 0002 GETMBR R3 R0 K2
- 0x58100003, // 0003 LDCONST R4 K3
- 0x58140004, // 0004 LDCONST R5 K4
+ 0x8804010A, // 0000 GETMBR R1 R0 K10
+ 0x8C04030B, // 0001 GETMET R1 R1 K11
+ 0x880C010C, // 0002 GETMBR R3 R0 K12
+ 0x58100002, // 0003 LDCONST R4 K2
+ 0x58140000, // 0004 LDCONST R5 K0
0x7C040800, // 0005 CALL R1 4
0x80040200, // 0006 RET 1 R1
})
@@ -269,28 +275,24 @@ be_local_closure(class_AXP192_get_input_power_status, /* name */
/********************************************************************
** Solidified function: get_aps_voltage
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_get_aps_voltage, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(read12),
- /* K1 */ be_const_real_hex(0x3AB78035),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_get_aps_voltage,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040107, // 0000 GETMET R1 R0 K7
0x540E007D, // 0001 LDINT R3 126
0x7C040400, // 0002 CALL R1 2
- 0x08040301, // 0003 MUL R1 R1 K1
+ 0x0804030D, // 0003 MUL R1 R1 K13
0x80040200, // 0004 RET 1 R1
})
)
@@ -301,24 +303,21 @@ be_local_closure(class_AXP192_get_aps_voltage, /* name */
/********************************************************************
** Solidified function: set_exten
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_set_exten, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(write_bit),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_set_exten,
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C080101, // 0000 GETMET R2 R0 K1
0x54120011, // 0001 LDINT R4 18
0x54160005, // 0002 LDINT R5 6
0x5C180200, // 0003 MOVE R6 R1
@@ -333,31 +332,25 @@ be_local_closure(class_AXP192_set_exten, /* name */
/********************************************************************
** Solidified function: battery_present
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_battery_present, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str(wire),
- /* K1 */ be_nested_str(read),
- /* K2 */ be_nested_str(addr),
- /* K3 */ be_const_int(1),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_battery_present,
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x880C0102, // 0002 GETMBR R3 R0 K2
- 0x58100003, // 0003 LDCONST R4 K3
- 0x58140003, // 0004 LDCONST R5 K3
+ 0x8804010A, // 0000 GETMBR R1 R0 K10
+ 0x8C04030B, // 0001 GETMET R1 R1 K11
+ 0x880C010C, // 0002 GETMBR R3 R0 K12
+ 0x58100000, // 0003 LDCONST R4 K0
+ 0x58140000, // 0004 LDCONST R5 K0
0x7C040800, // 0005 CALL R1 4
0x540A001F, // 0006 LDINT R2 32
0x2C040202, // 0007 AND R1 R1 R2
@@ -377,28 +370,24 @@ be_local_closure(class_AXP192_battery_present, /* name */
/********************************************************************
** Solidified function: get_vbus_voltage
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_get_vbus_voltage, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(read12),
- /* K1 */ be_const_real_hex(0x3ADED28A),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_get_vbus_voltage,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040107, // 0000 GETMET R1 R0 K7
0x540E0059, // 0001 LDINT R3 90
0x7C040400, // 0002 CALL R1 2
- 0x08040301, // 0003 MUL R1 R1 K1
+ 0x0804030E, // 0003 MUL R1 R1 K14
0x80040200, // 0004 RET 1 R1
})
)
@@ -409,44 +398,38 @@ be_local_closure(class_AXP192_get_vbus_voltage, /* name */
/********************************************************************
** Solidified function: write_gpio
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_write_gpio, /* name */
be_nested_proto(
8, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_const_int(2),
- /* K2 */ be_nested_str(write_bit),
- /* K3 */ be_const_int(3),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_write_gpio,
&be_const_str_solidified,
( &(const binstruction[21]) { /* code */
- 0x280C0300, // 0000 GE R3 R1 K0
+ 0x280C0302, // 0000 GE R3 R1 K2
0x780E0007, // 0001 JMPF R3 #000A
- 0x180C0301, // 0002 LE R3 R1 K1
+ 0x180C0303, // 0002 LE R3 R1 K3
0x780E0005, // 0003 JMPF R3 #000A
- 0x8C0C0102, // 0004 GETMET R3 R0 K2
+ 0x8C0C0101, // 0004 GETMET R3 R0 K1
0x54160093, // 0005 LDINT R5 148
0x5C180200, // 0006 MOVE R6 R1
0x5C1C0400, // 0007 MOVE R7 R2
0x7C0C0800, // 0008 CALL R3 4
0x70020009, // 0009 JMP #0014
- 0x280C0303, // 000A GE R3 R1 K3
+ 0x280C0304, // 000A GE R3 R1 K4
0x780E0007, // 000B JMPF R3 #0014
0x540E0003, // 000C LDINT R3 4
0x180C0203, // 000D LE R3 R1 R3
0x780E0004, // 000E JMPF R3 #0014
- 0x8C0C0102, // 000F GETMET R3 R0 K2
+ 0x8C0C0101, // 000F GETMET R3 R0 K1
0x54160095, // 0010 LDINT R5 150
- 0x04180303, // 0011 SUB R6 R1 K3
+ 0x04180304, // 0011 SUB R6 R1 K4
0x5C1C0400, // 0012 MOVE R7 R2
0x7C0C0800, // 0013 CALL R3 4
0x80000000, // 0014 RET 0
@@ -459,23 +442,17 @@ be_local_closure(class_AXP192_write_gpio, /* name */
/********************************************************************
** Solidified function: set_ldo_voltage
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_set_ldo_voltage, /* name */
be_nested_proto(
9, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_const_int(2),
- /* K1 */ be_nested_str(write8),
- /* K2 */ be_nested_str(read8),
- /* K3 */ be_const_int(3),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_set_ldo_voltage,
&be_const_str_solidified,
( &(const binstruction[39]) { /* code */
@@ -489,11 +466,11 @@ be_local_closure(class_AXP192_set_ldo_voltage, /* name */
0x54120011, // 0007 LDINT R4 18
0x040C0604, // 0008 SUB R3 R3 R4
0x5C080600, // 0009 MOVE R2 R3
- 0x1C0C0300, // 000A EQ R3 R1 K0
+ 0x1C0C0303, // 000A EQ R3 R1 K3
0x780E000C, // 000B JMPF R3 #0019
- 0x8C0C0101, // 000C GETMET R3 R0 K1
+ 0x8C0C010F, // 000C GETMET R3 R0 K15
0x54160027, // 000D LDINT R5 40
- 0x8C180102, // 000E GETMET R6 R0 K2
+ 0x8C180110, // 000E GETMET R6 R0 K16
0x54220027, // 000F LDINT R8 40
0x7C180400, // 0010 CALL R6 2
0x541E000E, // 0011 LDINT R7 15
@@ -504,11 +481,11 @@ be_local_closure(class_AXP192_set_ldo_voltage, /* name */
0x381C0E08, // 0016 SHL R7 R7 R8
0x30180C07, // 0017 OR R6 R6 R7
0x7C0C0600, // 0018 CALL R3 3
- 0x1C0C0303, // 0019 EQ R3 R1 K3
+ 0x1C0C0304, // 0019 EQ R3 R1 K4
0x780E000A, // 001A JMPF R3 #0026
- 0x8C0C0101, // 001B GETMET R3 R0 K1
+ 0x8C0C010F, // 001B GETMET R3 R0 K15
0x54160027, // 001C LDINT R5 40
- 0x8C180102, // 001D GETMET R6 R0 K2
+ 0x8C180110, // 001D GETMET R6 R0 K16
0x54220027, // 001E LDINT R8 40
0x7C180400, // 001F CALL R6 2
0x541E00EF, // 0020 LDINT R7 240
@@ -527,49 +504,39 @@ be_local_closure(class_AXP192_set_ldo_voltage, /* name */
/********************************************************************
** Solidified function: json_append
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_json_append, /* name */
be_nested_proto(
9, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str(wire),
- /* K1 */ be_nested_str(_X2C_X22AXP192_X22_X3A_X7B_X22VBusVoltage_X22_X3A_X25_X2E3f_X2C_X22VBusCurrent_X22_X3A_X25_X2E1f_X2C_X22BattVoltage_X22_X3A_X25_X2E3f_X2C_X22BattCurrent_X22_X3A_X25_X2E1f_X2C_X22Temperature_X22_X3A_X25_X2E1f_X7D),
- /* K2 */ be_nested_str(get_vbus_voltage),
- /* K3 */ be_nested_str(get_bat_voltage),
- /* K4 */ be_nested_str(get_bat_current),
- /* K5 */ be_nested_str(get_temp),
- /* K6 */ be_nested_str(tasmota),
- /* K7 */ be_nested_str(response_append),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_json_append,
&be_const_str_solidified,
( &(const binstruction[22]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804010A, // 0000 GETMBR R1 R0 K10
0x74060001, // 0001 JMPT R1 #0004
0x4C040000, // 0002 LDNIL R1
0x80040200, // 0003 RET 1 R1
0x60040018, // 0004 GETGBL R1 G24
- 0x58080001, // 0005 LDCONST R2 K1
- 0x8C0C0102, // 0006 GETMET R3 R0 K2
+ 0x58080011, // 0005 LDCONST R2 K17
+ 0x8C0C0112, // 0006 GETMET R3 R0 K18
0x7C0C0200, // 0007 CALL R3 1
- 0x8C100102, // 0008 GETMET R4 R0 K2
+ 0x8C100112, // 0008 GETMET R4 R0 K18
0x7C100200, // 0009 CALL R4 1
- 0x8C140103, // 000A GETMET R5 R0 K3
+ 0x8C140113, // 000A GETMET R5 R0 K19
0x7C140200, // 000B CALL R5 1
- 0x8C180104, // 000C GETMET R6 R0 K4
+ 0x8C180114, // 000C GETMET R6 R0 K20
0x7C180200, // 000D CALL R6 1
- 0x8C1C0105, // 000E GETMET R7 R0 K5
+ 0x8C1C0115, // 000E GETMET R7 R0 K21
0x7C1C0200, // 000F CALL R7 1
0x7C040C00, // 0010 CALL R1 6
- 0xB80A0C00, // 0011 GETNGBL R2 K6
- 0x8C080507, // 0012 GETMET R2 R2 K7
+ 0xB80A2C00, // 0011 GETNGBL R2 K22
+ 0x8C080517, // 0012 GETMET R2 R2 K23
0x5C100200, // 0013 MOVE R4 R1
0x7C080400, // 0014 CALL R2 2
0x80000000, // 0015 RET 0
@@ -582,31 +549,26 @@ be_local_closure(class_AXP192_json_append, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_init, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(I2C_Driver),
- /* K1 */ be_nested_str(init),
- /* K2 */ be_nested_str(AXP192),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_init,
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
0x60040003, // 0000 GETGBL R1 G3
0x5C080000, // 0001 MOVE R2 R0
- 0xB80E0000, // 0002 GETNGBL R3 K0
+ 0xB80E3000, // 0002 GETNGBL R3 K24
0x7C040400, // 0003 CALL R1 2
- 0x8C040301, // 0004 GETMET R1 R1 K1
- 0x580C0002, // 0005 LDCONST R3 K2
+ 0x8C040319, // 0004 GETMET R1 R1 K25
+ 0x580C001A, // 0005 LDCONST R3 K26
0x54120033, // 0006 LDINT R4 52
0x7C040600, // 0007 CALL R1 3
0x80000000, // 0008 RET 0
@@ -619,32 +581,28 @@ be_local_closure(class_AXP192_init, /* name */
/********************************************************************
** Solidified function: get_bat_current
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_get_bat_current, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(read13),
- /* K1 */ be_const_real_hex(0x3F000000),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_get_bat_current,
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C04011B, // 0000 GETMET R1 R0 K27
0x540E0079, // 0001 LDINT R3 122
0x7C040400, // 0002 CALL R1 2
- 0x8C080100, // 0003 GETMET R2 R0 K0
+ 0x8C08011B, // 0003 GETMET R2 R0 K27
0x5412007B, // 0004 LDINT R4 124
0x7C080400, // 0005 CALL R2 2
0x04040202, // 0006 SUB R1 R1 R2
- 0x08040301, // 0007 MUL R1 R1 K1
+ 0x0804031C, // 0007 MUL R1 R1 K28
0x80040200, // 0008 RET 1 R1
})
)
@@ -655,56 +613,42 @@ be_local_closure(class_AXP192_get_bat_current, /* name */
/********************************************************************
** Solidified function: web_sensor
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_web_sensor, /* name */
be_nested_proto(
9, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str(wire),
- /* K1 */ be_nested_str(_X7Bs_X7DVBus_X20Voltage_X7Bm_X7D_X25_X2E3f_X20V_X7Be_X7D),
- /* K2 */ be_nested_str(_X7Bs_X7DVBus_X20Current_X7Bm_X7D_X25_X2E1f_X20mA_X7Be_X7D),
- /* K3 */ be_nested_str(_X7Bs_X7DBatt_X20Voltage_X7Bm_X7D_X25_X2E3f_X20V_X7Be_X7D),
- /* K4 */ be_nested_str(_X7Bs_X7DBatt_X20Current_X7Bm_X7D_X25_X2E1f_X20mA_X7Be_X7D),
- /* K5 */ be_nested_str(_X7Bs_X7DAXP_X20Temperature_X7Bm_X7D_X25_X2E1f_X20_X26deg_X3BC_X7Be_X7D),
- /* K6 */ be_nested_str(get_vbus_voltage),
- /* K7 */ be_nested_str(get_bat_voltage),
- /* K8 */ be_nested_str(get_bat_current),
- /* K9 */ be_nested_str(get_temp),
- /* K10 */ be_nested_str(tasmota),
- /* K11 */ be_nested_str(web_send_decimal),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_web_sensor,
&be_const_str_solidified,
( &(const binstruction[25]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804010A, // 0000 GETMBR R1 R0 K10
0x74060001, // 0001 JMPT R1 #0004
0x4C040000, // 0002 LDNIL R1
0x80040200, // 0003 RET 1 R1
0x60040018, // 0004 GETGBL R1 G24
- 0x400A0302, // 0005 CONNECT R2 K1 K2
- 0x40080503, // 0006 CONNECT R2 R2 K3
- 0x40080504, // 0007 CONNECT R2 R2 K4
- 0x40080505, // 0008 CONNECT R2 R2 K5
- 0x8C0C0106, // 0009 GETMET R3 R0 K6
+ 0x400A3B1E, // 0005 CONNECT R2 K29 K30
+ 0x4008051F, // 0006 CONNECT R2 R2 K31
+ 0x40080520, // 0007 CONNECT R2 R2 K32
+ 0x40080521, // 0008 CONNECT R2 R2 K33
+ 0x8C0C0112, // 0009 GETMET R3 R0 K18
0x7C0C0200, // 000A CALL R3 1
- 0x8C100106, // 000B GETMET R4 R0 K6
+ 0x8C100112, // 000B GETMET R4 R0 K18
0x7C100200, // 000C CALL R4 1
- 0x8C140107, // 000D GETMET R5 R0 K7
+ 0x8C140113, // 000D GETMET R5 R0 K19
0x7C140200, // 000E CALL R5 1
- 0x8C180108, // 000F GETMET R6 R0 K8
+ 0x8C180114, // 000F GETMET R6 R0 K20
0x7C180200, // 0010 CALL R6 1
- 0x8C1C0109, // 0011 GETMET R7 R0 K9
+ 0x8C1C0115, // 0011 GETMET R7 R0 K21
0x7C1C0200, // 0012 CALL R7 1
0x7C040C00, // 0013 CALL R1 6
- 0xB80A1400, // 0014 GETNGBL R2 K10
- 0x8C08050B, // 0015 GETMET R2 R2 K11
+ 0xB80A2C00, // 0014 GETNGBL R2 K22
+ 0x8C080522, // 0015 GETMET R2 R2 K34
0x5C100200, // 0016 MOVE R4 R1
0x7C080400, // 0017 CALL R2 2
0x80000000, // 0018 RET 0
@@ -717,27 +661,23 @@ be_local_closure(class_AXP192_web_sensor, /* name */
/********************************************************************
** Solidified function: set_chg_current
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_set_chg_current, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(write8),
- /* K1 */ be_nested_str(read8),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_set_chg_current,
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C08010F, // 0000 GETMET R2 R0 K15
0x54120032, // 0001 LDINT R4 51
- 0x8C140101, // 0002 GETMET R5 R0 K1
+ 0x8C140110, // 0002 GETMET R5 R0 K16
0x541E0032, // 0003 LDINT R7 51
0x7C140400, // 0004 CALL R5 2
0x541A00EF, // 0005 LDINT R6 240
@@ -756,30 +696,25 @@ be_local_closure(class_AXP192_set_chg_current, /* name */
/********************************************************************
** Solidified function: get_temp
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_get_temp, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(read12),
- /* K1 */ be_const_real_hex(0x3DCCCCCD),
- /* K2 */ be_const_real_hex(0x4310B333),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_get_temp,
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040107, // 0000 GETMET R1 R0 K7
0x540E005D, // 0001 LDINT R3 94
0x7C040400, // 0002 CALL R1 2
- 0x08040301, // 0003 MUL R1 R1 K1
- 0x04040302, // 0004 SUB R1 R1 K2
+ 0x08040323, // 0003 MUL R1 R1 K35
+ 0x04040324, // 0004 SUB R1 R1 K36
0x80040200, // 0005 RET 1 R1
})
)
@@ -790,31 +725,23 @@ be_local_closure(class_AXP192_get_temp, /* name */
/********************************************************************
** Solidified function: set_dc_voltage
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_set_dc_voltage, /* name */
be_nested_proto(
11, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_const_int(1),
- /* K1 */ be_const_int(3),
- /* K2 */ be_const_int(0),
- /* K3 */ be_const_int(2),
- /* K4 */ be_nested_str(write8),
- /* K5 */ be_nested_str(read8),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_set_dc_voltage,
&be_const_str_solidified,
( &(const binstruction[48]) { /* code */
0x140C0300, // 0000 LT R3 R1 K0
0x740E0001, // 0001 JMPT R3 #0004
- 0x240C0301, // 0002 GT R3 R1 K1
+ 0x240C0304, // 0002 GT R3 R1 K4
0x780E0000, // 0003 JMPF R3 #0005
0x80000600, // 0004 RET 0
0x4C0C0000, // 0005 LDNIL R3
@@ -841,16 +768,16 @@ be_local_closure(class_AXP192_set_dc_voltage, /* name */
0x0C100805, // 001A DIV R4 R4 R5
0x5C0C0800, // 001B MOVE R3 R4
0x54120025, // 001C LDINT R4 38
- 0x1C140301, // 001D EQ R5 R1 K1
+ 0x1C140304, // 001D EQ R5 R1 K4
0x78160001, // 001E JMPF R5 #0021
0x54120026, // 001F LDINT R4 39
0x70020002, // 0020 JMP #0024
0x1C140303, // 0021 EQ R5 R1 K3
0x78160000, // 0022 JMPF R5 #0024
0x54120022, // 0023 LDINT R4 35
- 0x8C140104, // 0024 GETMET R5 R0 K4
+ 0x8C14010F, // 0024 GETMET R5 R0 K15
0x5C1C0800, // 0025 MOVE R7 R4
- 0x8C200105, // 0026 GETMET R8 R0 K5
+ 0x8C200110, // 0026 GETMET R8 R0 K16
0x5C280800, // 0027 MOVE R10 R4
0x7C200400, // 0028 CALL R8 2
0x5426007F, // 0029 LDINT R9 128
@@ -869,28 +796,24 @@ be_local_closure(class_AXP192_set_dc_voltage, /* name */
/********************************************************************
** Solidified function: power_off
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_power_off, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(write_bit),
- /* K1 */ be_const_int(1),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_power_off,
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040101, // 0000 GETMET R1 R0 K1
0x540E0031, // 0001 LDINT R3 50
0x54120006, // 0002 LDINT R4 7
- 0x58140001, // 0003 LDCONST R5 K1
+ 0x58140000, // 0003 LDCONST R5 K0
0x7C040800, // 0004 CALL R1 4
0x80000000, // 0005 RET 0
})
@@ -902,31 +825,25 @@ be_local_closure(class_AXP192_power_off, /* name */
/********************************************************************
** Solidified function: get_battery_chargin_status
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_get_battery_chargin_status, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str(wire),
- /* K1 */ be_nested_str(read),
- /* K2 */ be_nested_str(addr),
- /* K3 */ be_const_int(1),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_get_battery_chargin_status,
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x880C0102, // 0002 GETMBR R3 R0 K2
- 0x58100003, // 0003 LDCONST R4 K3
- 0x58140003, // 0004 LDCONST R5 K3
+ 0x8804010A, // 0000 GETMBR R1 R0 K10
+ 0x8C04030B, // 0001 GETMET R1 R1 K11
+ 0x880C010C, // 0002 GETMBR R3 R0 K12
+ 0x58100000, // 0003 LDCONST R4 K0
+ 0x58140000, // 0004 LDCONST R5 K0
0x7C040800, // 0005 CALL R1 4
0x80040200, // 0006 RET 1 R1
})
@@ -938,28 +855,24 @@ be_local_closure(class_AXP192_get_battery_chargin_status, /* name */
/********************************************************************
** Solidified function: get_bat_charge_current
********************************************************************/
-extern const bclass be_class_AXP192;
be_local_closure(class_AXP192_get_bat_charge_current, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP192,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(read13),
- /* K1 */ be_const_real_hex(0x3F000000),
- }),
+ &be_ktab_class_AXP192, /* shared constants */
&be_const_str_get_bat_charge_current,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C04011B, // 0000 GETMET R1 R0 K27
0x540E0079, // 0001 LDINT R3 122
0x7C040400, // 0002 CALL R1 2
- 0x08040301, // 0003 MUL R1 R1 K1
+ 0x0804031C, // 0003 MUL R1 R1 K28
0x80040200, // 0004 RET 1 R1
})
)
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h
index 211c9bef6..c15ccbf69 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_axp202.h
@@ -3,31 +3,51 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'AXP202' ktab size: 24, total: 64 (saved 320 bytes)
+static const bvalue be_ktab_class_AXP202[24] = {
+ /* K0 */ be_const_int(0),
+ /* K1 */ be_const_int(1),
+ /* K2 */ be_const_int(2),
+ /* K3 */ be_const_int(3),
+ /* K4 */ be_nested_str(write8),
+ /* K5 */ be_nested_str(read8),
+ /* K6 */ be_nested_str(read12),
+ /* K7 */ be_const_real_hex(0x3EC00000),
+ /* K8 */ be_const_real_hex(0x3A902DE0),
+ /* K9 */ be_nested_str(read13),
+ /* K10 */ be_const_real_hex(0x3F000000),
+ /* K11 */ be_nested_str(read24),
+ /* K12 */ be_const_real_hex(0x3A102DE0),
+ /* K13 */ be_const_real_hex(0x3AB78035),
+ /* K14 */ be_const_real_hex(0x3ADED28A),
+ /* K15 */ be_nested_str(write_bit),
+ /* K16 */ be_nested_str(wire),
+ /* K17 */ be_nested_str(read),
+ /* K18 */ be_nested_str(addr),
+ /* K19 */ be_nested_str(I2C_Driver),
+ /* K20 */ be_nested_str(init),
+ /* K21 */ be_nested_str(AXP202),
+ /* K22 */ be_const_real_hex(0x3DCCCCCD),
+ /* K23 */ be_const_real_hex(0x4310B333),
+};
+
extern const bclass be_class_AXP202;
/********************************************************************
** Solidified function: set_shutdown_time
********************************************************************/
-extern const bclass be_class_AXP202;
be_local_closure(class_AXP202_set_shutdown_time, /* name */
be_nested_proto(
9, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP202,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_const_int(1),
- /* K2 */ be_const_int(2),
- /* K3 */ be_const_int(3),
- /* K4 */ be_nested_str(write8),
- /* K5 */ be_nested_str(read8),
- }),
+ &be_ktab_class_AXP202, /* shared constants */
&be_const_str_set_shutdown_time,
&be_const_str_solidified,
( &(const binstruction[24]) { /* code */
@@ -64,28 +84,24 @@ be_local_closure(class_AXP202_set_shutdown_time, /* name */
/********************************************************************
** Solidified function: get_vbus_current
********************************************************************/
-extern const bclass be_class_AXP202;
be_local_closure(class_AXP202_get_vbus_current, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP202,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(read12),
- /* K1 */ be_const_real_hex(0x3EC00000),
- }),
+ &be_ktab_class_AXP202, /* shared constants */
&be_const_str_get_vbus_current,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040106, // 0000 GETMET R1 R0 K6
0x540E005B, // 0001 LDINT R3 92
0x7C040400, // 0002 CALL R1 2
- 0x08040301, // 0003 MUL R1 R1 K1
+ 0x08040307, // 0003 MUL R1 R1 K7
0x80040200, // 0004 RET 1 R1
})
)
@@ -96,28 +112,24 @@ be_local_closure(class_AXP202_get_vbus_current, /* name */
/********************************************************************
** Solidified function: get_bat_voltage
********************************************************************/
-extern const bclass be_class_AXP202;
be_local_closure(class_AXP202_get_bat_voltage, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP202,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(read12),
- /* K1 */ be_const_real_hex(0x3A902DE0),
- }),
+ &be_ktab_class_AXP202, /* shared constants */
&be_const_str_get_bat_voltage,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040106, // 0000 GETMET R1 R0 K6
0x540E0077, // 0001 LDINT R3 120
0x7C040400, // 0002 CALL R1 2
- 0x08040301, // 0003 MUL R1 R1 K1
+ 0x08040308, // 0003 MUL R1 R1 K8
0x80040200, // 0004 RET 1 R1
})
)
@@ -128,32 +140,28 @@ be_local_closure(class_AXP202_get_bat_voltage, /* name */
/********************************************************************
** Solidified function: get_bat_current
********************************************************************/
-extern const bclass be_class_AXP202;
be_local_closure(class_AXP202_get_bat_current, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP202,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(read13),
- /* K1 */ be_const_real_hex(0x3F000000),
- }),
+ &be_ktab_class_AXP202, /* shared constants */
&be_const_str_get_bat_current,
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040109, // 0000 GETMET R1 R0 K9
0x540E0079, // 0001 LDINT R3 122
0x7C040400, // 0002 CALL R1 2
- 0x8C080100, // 0003 GETMET R2 R0 K0
+ 0x8C080109, // 0003 GETMET R2 R0 K9
0x5412007B, // 0004 LDINT R4 124
0x7C080400, // 0005 CALL R2 2
0x04040202, // 0006 SUB R1 R1 R2
- 0x08040301, // 0007 MUL R1 R1 K1
+ 0x0804030A, // 0007 MUL R1 R1 K10
0x80040200, // 0008 RET 1 R1
})
)
@@ -164,28 +172,24 @@ be_local_closure(class_AXP202_get_bat_current, /* name */
/********************************************************************
** Solidified function: get_bat_power
********************************************************************/
-extern const bclass be_class_AXP202;
be_local_closure(class_AXP202_get_bat_power, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP202,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(read24),
- /* K1 */ be_const_real_hex(0x3A102DE0),
- }),
+ &be_ktab_class_AXP202, /* shared constants */
&be_const_str_get_bat_power,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C04010B, // 0000 GETMET R1 R0 K11
0x540E006F, // 0001 LDINT R3 112
0x7C040400, // 0002 CALL R1 2
- 0x08040301, // 0003 MUL R1 R1 K1
+ 0x0804030C, // 0003 MUL R1 R1 K12
0x80040200, // 0004 RET 1 R1
})
)
@@ -196,28 +200,24 @@ be_local_closure(class_AXP202_get_bat_power, /* name */
/********************************************************************
** Solidified function: get_aps_voltage
********************************************************************/
-extern const bclass be_class_AXP202;
be_local_closure(class_AXP202_get_aps_voltage, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP202,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(read12),
- /* K1 */ be_const_real_hex(0x3AB78035),
- }),
+ &be_ktab_class_AXP202, /* shared constants */
&be_const_str_get_aps_voltage,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040106, // 0000 GETMET R1 R0 K6
0x540E007D, // 0001 LDINT R3 126
0x7C040400, // 0002 CALL R1 2
- 0x08040301, // 0003 MUL R1 R1 K1
+ 0x0804030D, // 0003 MUL R1 R1 K13
0x80040200, // 0004 RET 1 R1
})
)
@@ -228,28 +228,24 @@ be_local_closure(class_AXP202_get_aps_voltage, /* name */
/********************************************************************
** Solidified function: get_vbus_voltage
********************************************************************/
-extern const bclass be_class_AXP202;
be_local_closure(class_AXP202_get_vbus_voltage, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP202,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(read12),
- /* K1 */ be_const_real_hex(0x3ADED28A),
- }),
+ &be_ktab_class_AXP202, /* shared constants */
&be_const_str_get_vbus_voltage,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040106, // 0000 GETMET R1 R0 K6
0x540E0059, // 0001 LDINT R3 90
0x7C040400, // 0002 CALL R1 2
- 0x08040301, // 0003 MUL R1 R1 K1
+ 0x0804030E, // 0003 MUL R1 R1 K14
0x80040200, // 0004 RET 1 R1
})
)
@@ -260,35 +256,30 @@ be_local_closure(class_AXP202_get_vbus_voltage, /* name */
/********************************************************************
** Solidified function: set_ldo_enable
********************************************************************/
-extern const bclass be_class_AXP202;
be_local_closure(class_AXP202_set_ldo_enable, /* name */
be_nested_proto(
8, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP202,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_const_int(2),
- /* K1 */ be_nested_str(write_bit),
- /* K2 */ be_const_int(3),
- }),
+ &be_ktab_class_AXP202, /* shared constants */
&be_const_str_set_ldo_enable,
&be_const_str_solidified,
( &(const binstruction[23]) { /* code */
- 0x1C0C0300, // 0000 EQ R3 R1 K0
+ 0x1C0C0302, // 0000 EQ R3 R1 K2
0x780E0004, // 0001 JMPF R3 #0007
- 0x8C0C0101, // 0002 GETMET R3 R0 K1
+ 0x8C0C010F, // 0002 GETMET R3 R0 K15
0x54160011, // 0003 LDINT R5 18
- 0x58180000, // 0004 LDCONST R6 K0
+ 0x58180002, // 0004 LDCONST R6 K2
0x5C1C0400, // 0005 MOVE R7 R2
0x7C0C0800, // 0006 CALL R3 4
- 0x1C0C0302, // 0007 EQ R3 R1 K2
+ 0x1C0C0303, // 0007 EQ R3 R1 K3
0x780E0004, // 0008 JMPF R3 #000E
- 0x8C0C0101, // 0009 GETMET R3 R0 K1
+ 0x8C0C010F, // 0009 GETMET R3 R0 K15
0x54160011, // 000A LDINT R5 18
0x541A0005, // 000B LDINT R6 6
0x5C1C0400, // 000C MOVE R7 R2
@@ -296,9 +287,9 @@ be_local_closure(class_AXP202_set_ldo_enable, /* name */
0x540E0003, // 000E LDINT R3 4
0x1C0C0203, // 000F EQ R3 R1 R3
0x780E0004, // 0010 JMPF R3 #0016
- 0x8C0C0101, // 0011 GETMET R3 R0 K1
+ 0x8C0C010F, // 0011 GETMET R3 R0 K15
0x54160011, // 0012 LDINT R5 18
- 0x58180002, // 0013 LDCONST R6 K2
+ 0x58180003, // 0013 LDCONST R6 K3
0x5C1C0400, // 0014 MOVE R7 R2
0x7C0C0800, // 0015 CALL R3 4
0x80000000, // 0016 RET 0
@@ -311,31 +302,25 @@ be_local_closure(class_AXP202_set_ldo_enable, /* name */
/********************************************************************
** Solidified function: battery_present
********************************************************************/
-extern const bclass be_class_AXP202;
be_local_closure(class_AXP202_battery_present, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP202,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str(wire),
- /* K1 */ be_nested_str(read),
- /* K2 */ be_nested_str(addr),
- /* K3 */ be_const_int(1),
- }),
+ &be_ktab_class_AXP202, /* shared constants */
&be_const_str_battery_present,
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x880C0102, // 0002 GETMBR R3 R0 K2
- 0x58100003, // 0003 LDCONST R4 K3
- 0x58140003, // 0004 LDCONST R5 K3
+ 0x88040110, // 0000 GETMBR R1 R0 K16
+ 0x8C040311, // 0001 GETMET R1 R1 K17
+ 0x880C0112, // 0002 GETMBR R3 R0 K18
+ 0x58100001, // 0003 LDCONST R4 K1
+ 0x58140001, // 0004 LDCONST R5 K1
0x7C040800, // 0005 CALL R1 4
0x540A001F, // 0006 LDINT R2 32
0x2C040202, // 0007 AND R1 R1 R2
@@ -355,21 +340,17 @@ be_local_closure(class_AXP202_battery_present, /* name */
/********************************************************************
** Solidified function: set_chg_current_ma
********************************************************************/
-extern const bclass be_class_AXP202;
be_local_closure(class_AXP202_set_chg_current_ma, /* name */
be_nested_proto(
9, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP202,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(write8),
- /* K1 */ be_nested_str(read8),
- }),
+ &be_ktab_class_AXP202, /* shared constants */
&be_const_str_set_chg_current_ma,
&be_const_str_solidified,
( &(const binstruction[16]) { /* code */
@@ -377,9 +358,9 @@ be_local_closure(class_AXP202_set_chg_current_ma, /* name */
0x04080202, // 0001 SUB R2 R1 R2
0x540E0063, // 0002 LDINT R3 100
0x0C080403, // 0003 DIV R2 R2 R3
- 0x8C0C0100, // 0004 GETMET R3 R0 K0
+ 0x8C0C0104, // 0004 GETMET R3 R0 K4
0x54160032, // 0005 LDINT R5 51
- 0x8C180101, // 0006 GETMET R6 R0 K1
+ 0x8C180105, // 0006 GETMET R6 R0 K5
0x54220032, // 0007 LDINT R8 51
0x7C180400, // 0008 CALL R6 2
0x541E00EF, // 0009 LDINT R7 240
@@ -398,38 +379,32 @@ be_local_closure(class_AXP202_set_chg_current_ma, /* name */
/********************************************************************
** Solidified function: set_dcdc_enable
********************************************************************/
-extern const bclass be_class_AXP202;
be_local_closure(class_AXP202_set_dcdc_enable, /* name */
be_nested_proto(
8, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP202,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_const_int(2),
- /* K1 */ be_nested_str(write_bit),
- /* K2 */ be_const_int(3),
- /* K3 */ be_const_int(1),
- }),
+ &be_ktab_class_AXP202, /* shared constants */
&be_const_str_set_dcdc_enable,
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
- 0x1C0C0300, // 0000 EQ R3 R1 K0
+ 0x1C0C0302, // 0000 EQ R3 R1 K2
0x780E0004, // 0001 JMPF R3 #0007
- 0x8C0C0101, // 0002 GETMET R3 R0 K1
+ 0x8C0C010F, // 0002 GETMET R3 R0 K15
0x54160011, // 0003 LDINT R5 18
0x541A0003, // 0004 LDINT R6 4
0x5C1C0400, // 0005 MOVE R7 R2
0x7C0C0800, // 0006 CALL R3 4
- 0x1C0C0302, // 0007 EQ R3 R1 K2
+ 0x1C0C0303, // 0007 EQ R3 R1 K3
0x780E0004, // 0008 JMPF R3 #000E
- 0x8C0C0101, // 0009 GETMET R3 R0 K1
+ 0x8C0C010F, // 0009 GETMET R3 R0 K15
0x54160011, // 000A LDINT R5 18
- 0x58180003, // 000B LDCONST R6 K3
+ 0x58180001, // 000B LDCONST R6 K1
0x5C1C0400, // 000C MOVE R7 R2
0x7C0C0800, // 000D CALL R3 4
0x80000000, // 000E RET 0
@@ -442,26 +417,21 @@ be_local_closure(class_AXP202_set_dcdc_enable, /* name */
/********************************************************************
** Solidified function: set_chg_led_mode
********************************************************************/
-extern const bclass be_class_AXP202;
be_local_closure(class_AXP202_set_chg_led_mode, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP202,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(read8),
- /* K1 */ be_const_int(3),
- /* K2 */ be_nested_str(write8),
- }),
+ &be_ktab_class_AXP202, /* shared constants */
&be_const_str_set_chg_led_mode,
&be_const_str_solidified,
( &(const binstruction[17]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C080105, // 0000 GETMET R2 R0 K5
0x54120031, // 0001 LDINT R4 50
0x7C080400, // 0002 CALL R2 2
0x540E00CE, // 0003 LDINT R3 207
@@ -469,11 +439,11 @@ be_local_closure(class_AXP202_set_chg_led_mode, /* name */
0x54120007, // 0005 LDINT R4 8
0x300C0604, // 0006 OR R3 R3 R4
0x5C080600, // 0007 MOVE R2 R3
- 0x2C0C0301, // 0008 AND R3 R1 K1
+ 0x2C0C0303, // 0008 AND R3 R1 K3
0x54120003, // 0009 LDINT R4 4
0x380C0604, // 000A SHL R3 R3 R4
0x30080403, // 000B OR R2 R2 R3
- 0x8C0C0102, // 000C GETMET R3 R0 K2
+ 0x8C0C0104, // 000C GETMET R3 R0 K4
0x54160031, // 000D LDINT R5 50
0x5C180400, // 000E MOVE R6 R2
0x7C0C0600, // 000F CALL R3 3
@@ -487,31 +457,26 @@ be_local_closure(class_AXP202_set_chg_led_mode, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_AXP202;
be_local_closure(class_AXP202_init, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP202,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(I2C_Driver),
- /* K1 */ be_nested_str(init),
- /* K2 */ be_nested_str(AXP202),
- }),
+ &be_ktab_class_AXP202, /* shared constants */
&be_const_str_init,
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
0x60040003, // 0000 GETGBL R1 G3
0x5C080000, // 0001 MOVE R2 R0
- 0xB80E0000, // 0002 GETNGBL R3 K0
+ 0xB80E2600, // 0002 GETNGBL R3 K19
0x7C040400, // 0003 CALL R1 2
- 0x8C040301, // 0004 GETMET R1 R1 K1
- 0x580C0002, // 0005 LDCONST R3 K2
+ 0x8C040314, // 0004 GETMET R1 R1 K20
+ 0x580C0015, // 0005 LDCONST R3 K21
0x54120034, // 0006 LDINT R4 53
0x7C040600, // 0007 CALL R1 3
0x80000000, // 0008 RET 0
@@ -524,27 +489,23 @@ be_local_closure(class_AXP202_init, /* name */
/********************************************************************
** Solidified function: set_exten
********************************************************************/
-extern const bclass be_class_AXP202;
be_local_closure(class_AXP202_set_exten, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP202,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(write_bit),
- /* K1 */ be_const_int(0),
- }),
+ &be_ktab_class_AXP202, /* shared constants */
&be_const_str_set_exten,
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C08010F, // 0000 GETMET R2 R0 K15
0x54120011, // 0001 LDINT R4 18
- 0x58140001, // 0002 LDCONST R5 K1
+ 0x58140000, // 0002 LDCONST R5 K0
0x5C180200, // 0003 MOVE R6 R1
0x7C080800, // 0004 CALL R2 4
0x80000000, // 0005 RET 0
@@ -557,31 +518,25 @@ be_local_closure(class_AXP202_set_exten, /* name */
/********************************************************************
** Solidified function: get_battery_chargin_status
********************************************************************/
-extern const bclass be_class_AXP202;
be_local_closure(class_AXP202_get_battery_chargin_status, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP202,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str(wire),
- /* K1 */ be_nested_str(read),
- /* K2 */ be_nested_str(addr),
- /* K3 */ be_const_int(1),
- }),
+ &be_ktab_class_AXP202, /* shared constants */
&be_const_str_get_battery_chargin_status,
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x880C0102, // 0002 GETMBR R3 R0 K2
- 0x58100003, // 0003 LDCONST R4 K3
- 0x58140003, // 0004 LDCONST R5 K3
+ 0x88040110, // 0000 GETMBR R1 R0 K16
+ 0x8C040311, // 0001 GETMET R1 R1 K17
+ 0x880C0112, // 0002 GETMBR R3 R0 K18
+ 0x58100001, // 0003 LDCONST R4 K1
+ 0x58140001, // 0004 LDCONST R5 K1
0x7C040800, // 0005 CALL R1 4
0x80040200, // 0006 RET 1 R1
})
@@ -593,44 +548,37 @@ be_local_closure(class_AXP202_get_battery_chargin_status, /* name */
/********************************************************************
** Solidified function: set_dc_voltage
********************************************************************/
-extern const bclass be_class_AXP202;
be_local_closure(class_AXP202_set_dc_voltage, /* name */
be_nested_proto(
11, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP202,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_const_int(2),
- /* K1 */ be_const_int(3),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str(write8),
- /* K4 */ be_nested_str(read8),
- }),
+ &be_ktab_class_AXP202, /* shared constants */
&be_const_str_set_dc_voltage,
&be_const_str_solidified,
( &(const binstruction[44]) { /* code */
- 0x140C0300, // 0000 LT R3 R1 K0
+ 0x140C0302, // 0000 LT R3 R1 K2
0x740E0001, // 0001 JMPT R3 #0004
- 0x240C0301, // 0002 GT R3 R1 K1
+ 0x240C0303, // 0002 GT R3 R1 K3
0x780E0000, // 0003 JMPF R3 #0005
0x80000600, // 0004 RET 0
0x4C0C0000, // 0005 LDNIL R3
0x541202BB, // 0006 LDINT R4 700
0x14100404, // 0007 LT R4 R2 R4
0x78120001, // 0008 JMPF R4 #000B
- 0x580C0002, // 0009 LDCONST R3 K2
+ 0x580C0000, // 0009 LDCONST R3 K0
0x70020010, // 000A JMP #001C
0x54120DAB, // 000B LDINT R4 3500
0x24100404, // 000C GT R4 R2 R4
0x78120001, // 000D JMPF R4 #0010
0x540E006F, // 000E LDINT R3 112
0x7002000B, // 000F JMP #001C
- 0x1C100300, // 0010 EQ R4 R1 K0
+ 0x1C100302, // 0010 EQ R4 R1 K2
0x78120004, // 0011 JMPF R4 #0017
0x541208E2, // 0012 LDINT R4 2275
0x24100404, // 0013 GT R4 R2 R4
@@ -643,12 +591,12 @@ be_local_closure(class_AXP202_set_dc_voltage, /* name */
0x0C100805, // 001A DIV R4 R4 R5
0x5C0C0800, // 001B MOVE R3 R4
0x54120022, // 001C LDINT R4 35
- 0x1C140301, // 001D EQ R5 R1 K1
+ 0x1C140303, // 001D EQ R5 R1 K3
0x78160000, // 001E JMPF R5 #0020
0x54120026, // 001F LDINT R4 39
- 0x8C140103, // 0020 GETMET R5 R0 K3
+ 0x8C140104, // 0020 GETMET R5 R0 K4
0x5C1C0800, // 0021 MOVE R7 R4
- 0x8C200104, // 0022 GETMET R8 R0 K4
+ 0x8C200105, // 0022 GETMET R8 R0 K5
0x5C280800, // 0023 MOVE R10 R4
0x7C200400, // 0024 CALL R8 2
0x5426007F, // 0025 LDINT R9 128
@@ -667,28 +615,24 @@ be_local_closure(class_AXP202_set_dc_voltage, /* name */
/********************************************************************
** Solidified function: get_bat_charge_current
********************************************************************/
-extern const bclass be_class_AXP202;
be_local_closure(class_AXP202_get_bat_charge_current, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP202,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(read13),
- /* K1 */ be_const_real_hex(0x3F000000),
- }),
+ &be_ktab_class_AXP202, /* shared constants */
&be_const_str_get_bat_charge_current,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040109, // 0000 GETMET R1 R0 K9
0x540E0079, // 0001 LDINT R3 122
0x7C040400, // 0002 CALL R1 2
- 0x08040301, // 0003 MUL R1 R1 K1
+ 0x0804030A, // 0003 MUL R1 R1 K10
0x80040200, // 0004 RET 1 R1
})
)
@@ -699,30 +643,25 @@ be_local_closure(class_AXP202_get_bat_charge_current, /* name */
/********************************************************************
** Solidified function: get_temp
********************************************************************/
-extern const bclass be_class_AXP202;
be_local_closure(class_AXP202_get_temp, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP202,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(read12),
- /* K1 */ be_const_real_hex(0x3DCCCCCD),
- /* K2 */ be_const_real_hex(0x4310B333),
- }),
+ &be_ktab_class_AXP202, /* shared constants */
&be_const_str_get_temp,
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040106, // 0000 GETMET R1 R0 K6
0x540E005D, // 0001 LDINT R3 94
0x7C040400, // 0002 CALL R1 2
- 0x08040301, // 0003 MUL R1 R1 K1
- 0x04040302, // 0004 SUB R1 R1 K2
+ 0x08040316, // 0003 MUL R1 R1 K22
+ 0x04040317, // 0004 SUB R1 R1 K23
0x80040200, // 0005 RET 1 R1
})
)
@@ -733,22 +672,17 @@ be_local_closure(class_AXP202_get_temp, /* name */
/********************************************************************
** Solidified function: set_ldo_voltage
********************************************************************/
-extern const bclass be_class_AXP202;
be_local_closure(class_AXP202_set_ldo_voltage, /* name */
be_nested_proto(
9, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP202,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_const_int(2),
- /* K1 */ be_nested_str(write8),
- /* K2 */ be_nested_str(read8),
- }),
+ &be_ktab_class_AXP202, /* shared constants */
&be_const_str_set_ldo_voltage,
&be_const_str_solidified,
( &(const binstruction[59]) { /* code */
@@ -756,7 +690,7 @@ be_local_closure(class_AXP202_set_ldo_voltage, /* name */
0x240C0403, // 0001 GT R3 R2 R3
0x780E0000, // 0002 JMPF R3 #0004
0x540A000E, // 0003 LDINT R2 15
- 0x1C0C0300, // 0004 EQ R3 R1 K0
+ 0x1C0C0302, // 0004 EQ R3 R1 K2
0x740E0002, // 0005 JMPT R3 #0009
0x540E0003, // 0006 LDINT R3 4
0x1C0C0203, // 0007 EQ R3 R1 R3
@@ -766,11 +700,11 @@ be_local_closure(class_AXP202_set_ldo_voltage, /* name */
0x54120011, // 000B LDINT R4 18
0x040C0604, // 000C SUB R3 R3 R4
0x5C080600, // 000D MOVE R2 R3
- 0x1C0C0300, // 000E EQ R3 R1 K0
+ 0x1C0C0302, // 000E EQ R3 R1 K2
0x780E000D, // 000F JMPF R3 #001E
- 0x8C0C0101, // 0010 GETMET R3 R0 K1
+ 0x8C0C0104, // 0010 GETMET R3 R0 K4
0x54160027, // 0011 LDINT R5 40
- 0x8C180102, // 0012 GETMET R6 R0 K2
+ 0x8C180105, // 0012 GETMET R6 R0 K5
0x54220027, // 0013 LDINT R8 40
0x7C180400, // 0014 CALL R6 2
0x541E000E, // 0015 LDINT R7 15
@@ -782,9 +716,9 @@ be_local_closure(class_AXP202_set_ldo_voltage, /* name */
0x30180C07, // 001B OR R6 R6 R7
0x7C0C0600, // 001C CALL R3 3
0x7002000A, // 001D JMP #0029
- 0x8C0C0101, // 001E GETMET R3 R0 K1
+ 0x8C0C0104, // 001E GETMET R3 R0 K4
0x54160027, // 001F LDINT R5 40
- 0x8C180102, // 0020 GETMET R6 R0 K2
+ 0x8C180105, // 0020 GETMET R6 R0 K5
0x54220027, // 0021 LDINT R8 40
0x7C180400, // 0022 CALL R6 2
0x541E00EF, // 0023 LDINT R7 240
@@ -799,9 +733,9 @@ be_local_closure(class_AXP202_set_ldo_voltage, /* name */
0x5412001B, // 002C LDINT R4 28
0x040C0604, // 002D SUB R3 R3 R4
0x5C080600, // 002E MOVE R2 R3
- 0x8C0C0101, // 002F GETMET R3 R0 K1
+ 0x8C0C0104, // 002F GETMET R3 R0 K4
0x54160027, // 0030 LDINT R5 40
- 0x8C180102, // 0031 GETMET R6 R0 K2
+ 0x8C180105, // 0031 GETMET R6 R0 K5
0x54220028, // 0032 LDINT R8 41
0x7C180400, // 0033 CALL R6 2
0x541E007F, // 0034 LDINT R7 128
@@ -820,31 +754,26 @@ be_local_closure(class_AXP202_set_ldo_voltage, /* name */
/********************************************************************
** Solidified function: set_limiting_off
********************************************************************/
-extern const bclass be_class_AXP202;
be_local_closure(class_AXP202_set_limiting_off, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP202,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(write8),
- /* K1 */ be_nested_str(read8),
- /* K2 */ be_const_int(3),
- }),
+ &be_ktab_class_AXP202, /* shared constants */
&be_const_str_set_limiting_off,
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040104, // 0000 GETMET R1 R0 K4
0x540E002F, // 0001 LDINT R3 48
- 0x8C100101, // 0002 GETMET R4 R0 K1
+ 0x8C100105, // 0002 GETMET R4 R0 K5
0x541A002F, // 0003 LDINT R6 48
0x7C100400, // 0004 CALL R4 2
- 0x30100902, // 0005 OR R4 R4 K2
+ 0x30100903, // 0005 OR R4 R4 K3
0x7C040600, // 0006 CALL R1 3
0x80000000, // 0007 RET 0
})
@@ -856,32 +785,25 @@ be_local_closure(class_AXP202_set_limiting_off, /* name */
/********************************************************************
** Solidified function: get_input_power_status
********************************************************************/
-extern const bclass be_class_AXP202;
be_local_closure(class_AXP202_get_input_power_status, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_AXP202,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str(wire),
- /* K1 */ be_nested_str(read),
- /* K2 */ be_nested_str(addr),
- /* K3 */ be_const_int(0),
- /* K4 */ be_const_int(1),
- }),
+ &be_ktab_class_AXP202, /* shared constants */
&be_const_str_get_input_power_status,
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x880C0102, // 0002 GETMBR R3 R0 K2
- 0x58100003, // 0003 LDCONST R4 K3
- 0x58140004, // 0004 LDCONST R5 K4
+ 0x88040110, // 0000 GETMBR R1 R0 K16
+ 0x8C040311, // 0001 GETMET R1 R1 K17
+ 0x880C0112, // 0002 GETMBR R3 R0 K18
+ 0x58100000, // 0003 LDCONST R4 K0
+ 0x58140001, // 0004 LDCONST R5 K1
0x7C040800, // 0005 CALL R1 4
0x80040200, // 0006 RET 1 R1
})
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_driver.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_driver.h
index 9b925d78e..1c0147425 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_driver.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_driver.h
@@ -3,29 +3,46 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'I2C_Driver' ktab size: 19, total: 60 (saved 328 bytes)
+static const bvalue be_ktab_class_I2C_Driver[19] = {
+ /* K0 */ be_const_int(0),
+ /* K1 */ be_const_int(1),
+ /* K2 */ be_nested_str(write8),
+ /* K3 */ be_nested_str(read8),
+ /* K4 */ be_nested_str(wire),
+ /* K5 */ be_nested_str(read_bytes),
+ /* K6 */ be_nested_str(addr),
+ /* K7 */ be_const_int(2),
+ /* K8 */ be_const_int(3),
+ /* K9 */ be_nested_str(tasmota),
+ /* K10 */ be_nested_str(i2c_enabled),
+ /* K11 */ be_nested_str(wire_scan),
+ /* K12 */ be_nested_str(function),
+ /* K13 */ be_nested_str(name),
+ /* K14 */ be_nested_str(I2C_X3A),
+ /* K15 */ be_nested_str(detected_X20on_X20bus),
+ /* K16 */ be_nested_str(bus),
+ /* K17 */ be_nested_str(write),
+ /* K18 */ be_nested_str(read),
+};
+
extern const bclass be_class_I2C_Driver;
/********************************************************************
** Solidified function: write_bit
********************************************************************/
-extern const bclass be_class_I2C_Driver;
be_local_closure(class_I2C_Driver_write_bit, /* name */
be_nested_proto(
11, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_I2C_Driver,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_const_int(1),
- /* K2 */ be_nested_str(write8),
- /* K3 */ be_nested_str(read8),
- }),
+ &be_ktab_class_I2C_Driver, /* shared constants */
&be_const_str_write_bit,
&be_const_str_solidified,
( &(const binstruction[26]) { /* code */
@@ -64,47 +81,38 @@ be_local_closure(class_I2C_Driver_write_bit, /* name */
/********************************************************************
** Solidified function: read32
********************************************************************/
-extern const bclass be_class_I2C_Driver;
be_local_closure(class_I2C_Driver_read32, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_I2C_Driver,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str(wire),
- /* K1 */ be_nested_str(read_bytes),
- /* K2 */ be_nested_str(addr),
- /* K3 */ be_const_int(0),
- /* K4 */ be_const_int(1),
- /* K5 */ be_const_int(2),
- /* K6 */ be_const_int(3),
- }),
+ &be_ktab_class_I2C_Driver, /* shared constants */
&be_const_str_read32,
&be_const_str_solidified,
( &(const binstruction[20]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x88100102, // 0002 GETMBR R4 R0 K2
+ 0x88080104, // 0000 GETMBR R2 R0 K4
+ 0x8C080505, // 0001 GETMET R2 R2 K5
+ 0x88100106, // 0002 GETMBR R4 R0 K6
0x5C140200, // 0003 MOVE R5 R1
0x541A0003, // 0004 LDINT R6 4
0x7C080800, // 0005 CALL R2 4
- 0x940C0503, // 0006 GETIDX R3 R2 K3
+ 0x940C0500, // 0006 GETIDX R3 R2 K0
0x54120017, // 0007 LDINT R4 24
0x380C0604, // 0008 SHL R3 R3 R4
- 0x94100504, // 0009 GETIDX R4 R2 K4
+ 0x94100501, // 0009 GETIDX R4 R2 K1
0x5416000F, // 000A LDINT R5 16
0x38100805, // 000B SHL R4 R4 R5
0x000C0604, // 000C ADD R3 R3 R4
- 0x94100505, // 000D GETIDX R4 R2 K5
+ 0x94100507, // 000D GETIDX R4 R2 K7
0x54160007, // 000E LDINT R5 8
0x38100805, // 000F SHL R4 R4 R5
0x000C0604, // 0010 ADD R3 R3 R4
- 0x94100506, // 0011 GETIDX R4 R2 K6
+ 0x94100508, // 0011 GETIDX R4 R2 K8
0x000C0604, // 0012 ADD R3 R3 R4
0x80040600, // 0013 RET 1 R3
})
@@ -116,38 +124,30 @@ be_local_closure(class_I2C_Driver_read32, /* name */
/********************************************************************
** Solidified function: read13
********************************************************************/
-extern const bclass be_class_I2C_Driver;
be_local_closure(class_I2C_Driver_read13, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_I2C_Driver,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str(wire),
- /* K1 */ be_nested_str(read_bytes),
- /* K2 */ be_nested_str(addr),
- /* K3 */ be_const_int(2),
- /* K4 */ be_const_int(0),
- /* K5 */ be_const_int(1),
- }),
+ &be_ktab_class_I2C_Driver, /* shared constants */
&be_const_str_read13,
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x88100102, // 0002 GETMBR R4 R0 K2
+ 0x88080104, // 0000 GETMBR R2 R0 K4
+ 0x8C080505, // 0001 GETMET R2 R2 K5
+ 0x88100106, // 0002 GETMBR R4 R0 K6
0x5C140200, // 0003 MOVE R5 R1
- 0x58180003, // 0004 LDCONST R6 K3
+ 0x58180007, // 0004 LDCONST R6 K7
0x7C080800, // 0005 CALL R2 4
- 0x940C0504, // 0006 GETIDX R3 R2 K4
+ 0x940C0500, // 0006 GETIDX R3 R2 K0
0x54120004, // 0007 LDINT R4 5
0x380C0604, // 0008 SHL R3 R3 R4
- 0x94100505, // 0009 GETIDX R4 R2 K5
+ 0x94100501, // 0009 GETIDX R4 R2 K1
0x000C0604, // 000A ADD R3 R3 R4
0x80040600, // 000B RET 1 R3
})
@@ -159,43 +159,34 @@ be_local_closure(class_I2C_Driver_read13, /* name */
/********************************************************************
** Solidified function: read24
********************************************************************/
-extern const bclass be_class_I2C_Driver;
be_local_closure(class_I2C_Driver_read24, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_I2C_Driver,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str(wire),
- /* K1 */ be_nested_str(read_bytes),
- /* K2 */ be_nested_str(addr),
- /* K3 */ be_const_int(3),
- /* K4 */ be_const_int(0),
- /* K5 */ be_const_int(1),
- /* K6 */ be_const_int(2),
- }),
+ &be_ktab_class_I2C_Driver, /* shared constants */
&be_const_str_read24,
&be_const_str_solidified,
( &(const binstruction[16]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x88100102, // 0002 GETMBR R4 R0 K2
+ 0x88080104, // 0000 GETMBR R2 R0 K4
+ 0x8C080505, // 0001 GETMET R2 R2 K5
+ 0x88100106, // 0002 GETMBR R4 R0 K6
0x5C140200, // 0003 MOVE R5 R1
- 0x58180003, // 0004 LDCONST R6 K3
+ 0x58180008, // 0004 LDCONST R6 K8
0x7C080800, // 0005 CALL R2 4
- 0x940C0504, // 0006 GETIDX R3 R2 K4
+ 0x940C0500, // 0006 GETIDX R3 R2 K0
0x5412000F, // 0007 LDINT R4 16
0x380C0604, // 0008 SHL R3 R3 R4
- 0x94100505, // 0009 GETIDX R4 R2 K5
+ 0x94100501, // 0009 GETIDX R4 R2 K1
0x54160007, // 000A LDINT R5 8
0x38100805, // 000B SHL R4 R4 R5
0x000C0604, // 000C ADD R3 R3 R4
- 0x94100506, // 000D GETIDX R4 R2 K6
+ 0x94100507, // 000D GETIDX R4 R2 K7
0x000C0604, // 000E ADD R3 R3 R4
0x80040600, // 000F RET 1 R3
})
@@ -207,38 +198,30 @@ be_local_closure(class_I2C_Driver_read24, /* name */
/********************************************************************
** Solidified function: read14
********************************************************************/
-extern const bclass be_class_I2C_Driver;
be_local_closure(class_I2C_Driver_read14, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_I2C_Driver,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str(wire),
- /* K1 */ be_nested_str(read_bytes),
- /* K2 */ be_nested_str(addr),
- /* K3 */ be_const_int(2),
- /* K4 */ be_const_int(0),
- /* K5 */ be_const_int(1),
- }),
+ &be_ktab_class_I2C_Driver, /* shared constants */
&be_const_str_read14,
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x88100102, // 0002 GETMBR R4 R0 K2
+ 0x88080104, // 0000 GETMBR R2 R0 K4
+ 0x8C080505, // 0001 GETMET R2 R2 K5
+ 0x88100106, // 0002 GETMBR R4 R0 K6
0x5C140200, // 0003 MOVE R5 R1
- 0x58180003, // 0004 LDCONST R6 K3
+ 0x58180007, // 0004 LDCONST R6 K7
0x7C080800, // 0005 CALL R2 4
- 0x940C0504, // 0006 GETIDX R3 R2 K4
+ 0x940C0500, // 0006 GETIDX R3 R2 K0
0x54120005, // 0007 LDINT R4 6
0x380C0604, // 0008 SHL R3 R3 R4
- 0x94100505, // 0009 GETIDX R4 R2 K5
+ 0x94100501, // 0009 GETIDX R4 R2 K1
0x000C0604, // 000A ADD R3 R3 R4
0x80040600, // 000B RET 1 R3
})
@@ -250,74 +233,62 @@ be_local_closure(class_I2C_Driver_read14, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_I2C_Driver;
be_local_closure(class_I2C_Driver_init, /* name */
be_nested_proto(
9, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_I2C_Driver,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str(tasmota),
- /* K1 */ be_nested_str(i2c_enabled),
- /* K2 */ be_nested_str(addr),
- /* K3 */ be_nested_str(wire),
- /* K4 */ be_nested_str(wire_scan),
- /* K5 */ be_nested_str(function),
- /* K6 */ be_nested_str(name),
- /* K7 */ be_nested_str(I2C_X3A),
- /* K8 */ be_nested_str(detected_X20on_X20bus),
- /* K9 */ be_nested_str(bus),
- }),
+ &be_ktab_class_I2C_Driver, /* shared constants */
&be_const_str_init,
&be_const_str_solidified,
( &(const binstruction[44]) { /* code */
0x4C100000, // 0000 LDNIL R4
0x20100604, // 0001 NE R4 R3 R4
0x78120005, // 0002 JMPF R4 #0009
- 0xB8120000, // 0003 GETNGBL R4 K0
- 0x8C100901, // 0004 GETMET R4 R4 K1
+ 0xB8121200, // 0003 GETNGBL R4 K9
+ 0x8C10090A, // 0004 GETMET R4 R4 K10
0x5C180600, // 0005 MOVE R6 R3
0x7C100400, // 0006 CALL R4 2
0x74120000, // 0007 JMPT R4 #0009
0x80000800, // 0008 RET 0
- 0x90020402, // 0009 SETMBR R0 K2 R2
- 0xB8120000, // 000A GETNGBL R4 K0
- 0x8C100904, // 000B GETMET R4 R4 K4
- 0x88180102, // 000C GETMBR R6 R0 K2
+ 0x90020C02, // 0009 SETMBR R0 K6 R2
+ 0xB8121200, // 000A GETNGBL R4 K9
+ 0x8C10090B, // 000B GETMET R4 R4 K11
+ 0x88180106, // 000C GETMBR R6 R0 K6
0x7C100400, // 000D CALL R4 2
- 0x90020604, // 000E SETMBR R0 K3 R4
- 0x88100103, // 000F GETMBR R4 R0 K3
+ 0x90020804, // 000E SETMBR R0 K4 R4
+ 0x88100104, // 000F GETMBR R4 R0 K4
0x78120019, // 0010 JMPF R4 #002B
0x60100004, // 0011 GETGBL R4 G4
0x5C140200, // 0012 MOVE R5 R1
0x7C100200, // 0013 CALL R4 1
- 0x1C100905, // 0014 EQ R4 R4 K5
+ 0x1C10090C, // 0014 EQ R4 R4 K12
0x78120004, // 0015 JMPF R4 #001B
0x5C100200, // 0016 MOVE R4 R1
0x5C140000, // 0017 MOVE R5 R0
0x7C100200, // 0018 CALL R4 1
- 0x90020C04, // 0019 SETMBR R0 K6 R4
+ 0x90021A04, // 0019 SETMBR R0 K13 R4
0x70020000, // 001A JMP #001C
- 0x90020C01, // 001B SETMBR R0 K6 R1
- 0x88100106, // 001C GETMBR R4 R0 K6
+ 0x90021A01, // 001B SETMBR R0 K13 R1
+ 0x8810010D, // 001C GETMBR R4 R0 K13
0x4C140000, // 001D LDNIL R5
0x1C100805, // 001E EQ R4 R4 R5
0x78120001, // 001F JMPF R4 #0022
0x4C100000, // 0020 LDNIL R4
- 0x90020604, // 0021 SETMBR R0 K3 R4
- 0x88100103, // 0022 GETMBR R4 R0 K3
+ 0x90020804, // 0021 SETMBR R0 K4 R4
+ 0x88100104, // 0022 GETMBR R4 R0 K4
0x78120006, // 0023 JMPF R4 #002B
0x60100001, // 0024 GETGBL R4 G1
- 0x58140007, // 0025 LDCONST R5 K7
- 0x88180106, // 0026 GETMBR R6 R0 K6
- 0x581C0008, // 0027 LDCONST R7 K8
- 0x88200103, // 0028 GETMBR R8 R0 K3
- 0x88201109, // 0029 GETMBR R8 R8 K9
+ 0x5814000E, // 0025 LDCONST R5 K14
+ 0x8818010D, // 0026 GETMBR R6 R0 K13
+ 0x581C000F, // 0027 LDCONST R7 K15
+ 0x88200104, // 0028 GETMBR R8 R0 K4
+ 0x88201110, // 0029 GETMBR R8 R8 K16
0x7C100800, // 002A CALL R4 4
0x80000000, // 002B RET 0
})
@@ -329,32 +300,26 @@ be_local_closure(class_I2C_Driver_init, /* name */
/********************************************************************
** Solidified function: write8
********************************************************************/
-extern const bclass be_class_I2C_Driver;
be_local_closure(class_I2C_Driver_write8, /* name */
be_nested_proto(
9, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_I2C_Driver,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str(wire),
- /* K1 */ be_nested_str(write),
- /* K2 */ be_nested_str(addr),
- /* K3 */ be_const_int(1),
- }),
+ &be_ktab_class_I2C_Driver, /* shared constants */
&be_const_str_write8,
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x88140102, // 0002 GETMBR R5 R0 K2
+ 0x880C0104, // 0000 GETMBR R3 R0 K4
+ 0x8C0C0711, // 0001 GETMET R3 R3 K17
+ 0x88140106, // 0002 GETMBR R5 R0 K6
0x5C180200, // 0003 MOVE R6 R1
0x5C1C0400, // 0004 MOVE R7 R2
- 0x58200003, // 0005 LDCONST R8 K3
+ 0x58200001, // 0005 LDCONST R8 K1
0x7C0C0A00, // 0006 CALL R3 5
0x80040600, // 0007 RET 1 R3
})
@@ -366,31 +331,25 @@ be_local_closure(class_I2C_Driver_write8, /* name */
/********************************************************************
** Solidified function: read8
********************************************************************/
-extern const bclass be_class_I2C_Driver;
be_local_closure(class_I2C_Driver_read8, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_I2C_Driver,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str(wire),
- /* K1 */ be_nested_str(read),
- /* K2 */ be_nested_str(addr),
- /* K3 */ be_const_int(1),
- }),
+ &be_ktab_class_I2C_Driver, /* shared constants */
&be_const_str_read8,
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x88100102, // 0002 GETMBR R4 R0 K2
+ 0x88080104, // 0000 GETMBR R2 R0 K4
+ 0x8C080512, // 0001 GETMET R2 R2 K18
+ 0x88100106, // 0002 GETMBR R4 R0 K6
0x5C140200, // 0003 MOVE R5 R1
- 0x58180003, // 0004 LDCONST R6 K3
+ 0x58180001, // 0004 LDCONST R6 K1
0x7C080800, // 0005 CALL R2 4
0x80040400, // 0006 RET 1 R2
})
@@ -402,38 +361,30 @@ be_local_closure(class_I2C_Driver_read8, /* name */
/********************************************************************
** Solidified function: read12
********************************************************************/
-extern const bclass be_class_I2C_Driver;
be_local_closure(class_I2C_Driver_read12, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_I2C_Driver,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str(wire),
- /* K1 */ be_nested_str(read_bytes),
- /* K2 */ be_nested_str(addr),
- /* K3 */ be_const_int(2),
- /* K4 */ be_const_int(0),
- /* K5 */ be_const_int(1),
- }),
+ &be_ktab_class_I2C_Driver, /* shared constants */
&be_const_str_read12,
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x88100102, // 0002 GETMBR R4 R0 K2
+ 0x88080104, // 0000 GETMBR R2 R0 K4
+ 0x8C080505, // 0001 GETMET R2 R2 K5
+ 0x88100106, // 0002 GETMBR R4 R0 K6
0x5C140200, // 0003 MOVE R5 R1
- 0x58180003, // 0004 LDCONST R6 K3
+ 0x58180007, // 0004 LDCONST R6 K7
0x7C080800, // 0005 CALL R2 4
- 0x940C0504, // 0006 GETIDX R3 R2 K4
+ 0x940C0500, // 0006 GETIDX R3 R2 K0
0x54120003, // 0007 LDINT R4 4
0x380C0604, // 0008 SHL R3 R3 R4
- 0x94100505, // 0009 GETIDX R4 R2 K5
+ 0x94100501, // 0009 GETIDX R4 R2 K1
0x000C0604, // 000A ADD R3 R3 R4
0x80040600, // 000B RET 1 R3
})
@@ -445,38 +396,30 @@ be_local_closure(class_I2C_Driver_read12, /* name */
/********************************************************************
** Solidified function: read16
********************************************************************/
-extern const bclass be_class_I2C_Driver;
be_local_closure(class_I2C_Driver_read16, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_I2C_Driver,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str(wire),
- /* K1 */ be_nested_str(read_bytes),
- /* K2 */ be_nested_str(addr),
- /* K3 */ be_const_int(2),
- /* K4 */ be_const_int(0),
- /* K5 */ be_const_int(1),
- }),
+ &be_ktab_class_I2C_Driver, /* shared constants */
&be_const_str_read16,
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x88100102, // 0002 GETMBR R4 R0 K2
+ 0x88080104, // 0000 GETMBR R2 R0 K4
+ 0x8C080505, // 0001 GETMET R2 R2 K5
+ 0x88100106, // 0002 GETMBR R4 R0 K6
0x5C140200, // 0003 MOVE R5 R1
- 0x58180003, // 0004 LDCONST R6 K3
+ 0x58180007, // 0004 LDCONST R6 K7
0x7C080800, // 0005 CALL R2 4
- 0x940C0504, // 0006 GETIDX R3 R2 K4
+ 0x940C0500, // 0006 GETIDX R3 R2 K0
0x54120007, // 0007 LDINT R4 8
0x380C0604, // 0008 SHL R3 R3 R4
- 0x94100505, // 0009 GETIDX R4 R2 K5
+ 0x94100501, // 0009 GETIDX R4 R2 K1
0x000C0604, // 000A ADD R3 R3 R4
0x80040600, // 000B RET 1 R3
})
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_ft3663.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_ft3663.h
index b9b71da46..e643c05b9 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_ft3663.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_i2c_ft3663.h
@@ -3,27 +3,48 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'FT3663' ktab size: 21, total: 25 (saved 32 bytes)
+static const bvalue be_ktab_class_FT3663[21] = {
+ /* K0 */ be_nested_str(wire),
+ /* K1 */ be_nested_str(ts_loop),
+ /* K2 */ be_nested_str(init),
+ /* K3 */ be_nested_str(FT3663),
+ /* K4 */ be_nested_str(read8),
+ /* K5 */ be_nested_str(tasmota),
+ /* K6 */ be_nested_str(log),
+ /* K7 */ be_nested_str(I2C_X3A_X20ignoring_X20address_X200x38_X2C_X20not_X20FT3663),
+ /* K8 */ be_const_int(2),
+ /* K9 */ be_nested_str(TS_X20_X3A_X20FT3663_X20Touch_X20Screen_X20detected),
+ /* K10 */ be_nested_str(write8),
+ /* K11 */ be_const_int(0),
+ /* K12 */ be_nested_str(add_driver),
+ /* K13 */ be_nested_str(display),
+ /* K14 */ be_nested_str(read_bytes),
+ /* K15 */ be_nested_str(addr),
+ /* K16 */ be_const_int(3),
+ /* K17 */ be_nested_str(gest_id_codes),
+ /* K18 */ be_nested_str(find),
+ /* K19 */ be_const_int(1),
+ /* K20 */ be_nested_str(touch_update),
+};
+
extern const bclass be_class_FT3663;
/********************************************************************
** Solidified function: every_100ms
********************************************************************/
-extern const bclass be_class_FT3663;
be_local_closure(class_FT3663_every_100ms, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_FT3663,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(wire),
- /* K1 */ be_nested_str(ts_loop),
- }),
+ &be_ktab_class_FT3663, /* shared constants */
&be_const_str_every_100ms,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
@@ -41,47 +62,33 @@ be_local_closure(class_FT3663_every_100ms, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_FT3663;
be_local_closure(class_FT3663_init, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_FT3663,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str(init),
- /* K1 */ be_nested_str(FT3663),
- /* K2 */ be_nested_str(wire),
- /* K3 */ be_nested_str(read8),
- /* K4 */ be_nested_str(tasmota),
- /* K5 */ be_nested_str(log),
- /* K6 */ be_nested_str(I2C_X3A_X20ignoring_X20address_X200x38_X2C_X20not_X20FT3663),
- /* K7 */ be_const_int(2),
- /* K8 */ be_nested_str(TS_X20_X3A_X20FT3663_X20Touch_X20Screen_X20detected),
- /* K9 */ be_nested_str(write8),
- /* K10 */ be_const_int(0),
- /* K11 */ be_nested_str(add_driver),
- }),
+ &be_ktab_class_FT3663, /* shared constants */
&be_const_str_init,
&be_const_str_solidified,
( &(const binstruction[50]) { /* code */
0x60040003, // 0000 GETGBL R1 G3
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
- 0x8C040300, // 0003 GETMET R1 R1 K0
- 0x580C0001, // 0004 LDCONST R3 K1
+ 0x8C040302, // 0003 GETMET R1 R1 K2
+ 0x580C0003, // 0004 LDCONST R3 K3
0x54120037, // 0005 LDINT R4 56
0x7C040600, // 0006 CALL R1 3
- 0x88040102, // 0007 GETMBR R1 R0 K2
+ 0x88040100, // 0007 GETMBR R1 R0 K0
0x78060027, // 0008 JMPF R1 #0031
- 0x8C040103, // 0009 GETMET R1 R0 K3
+ 0x8C040104, // 0009 GETMET R1 R0 K4
0x540E00A7, // 000A LDINT R3 168
0x7C040400, // 000B CALL R1 2
- 0x8C080103, // 000C GETMET R2 R0 K3
+ 0x8C080104, // 000C GETMET R2 R0 K4
0x541200A2, // 000D LDINT R4 163
0x7C080400, // 000E CALL R2 2
0x540E0010, // 000F LDINT R3 17
@@ -90,32 +97,32 @@ be_local_closure(class_FT3663_init, /* name */
0x540E0063, // 0012 LDINT R3 100
0x200C0403, // 0013 NE R3 R2 R3
0x780E0007, // 0014 JMPF R3 #001D
- 0xB80E0800, // 0015 GETNGBL R3 K4
- 0x8C0C0705, // 0016 GETMET R3 R3 K5
- 0x58140006, // 0017 LDCONST R5 K6
- 0x58180007, // 0018 LDCONST R6 K7
+ 0xB80E0A00, // 0015 GETNGBL R3 K5
+ 0x8C0C0706, // 0016 GETMET R3 R3 K6
+ 0x58140007, // 0017 LDCONST R5 K7
+ 0x58180008, // 0018 LDCONST R6 K8
0x7C0C0600, // 0019 CALL R3 3
0x4C0C0000, // 001A LDNIL R3
- 0x90020403, // 001B SETMBR R0 K2 R3
+ 0x90020003, // 001B SETMBR R0 K0 R3
0x80000600, // 001C RET 0
- 0xB80E0800, // 001D GETNGBL R3 K4
- 0x8C0C0705, // 001E GETMET R3 R3 K5
- 0x58140008, // 001F LDCONST R5 K8
+ 0xB80E0A00, // 001D GETNGBL R3 K5
+ 0x8C0C0706, // 001E GETMET R3 R3 K6
+ 0x58140009, // 001F LDCONST R5 K9
0x7C0C0400, // 0020 CALL R3 2
- 0x8C0C0109, // 0021 GETMET R3 R0 K9
- 0x5814000A, // 0022 LDCONST R5 K10
- 0x5818000A, // 0023 LDCONST R6 K10
+ 0x8C0C010A, // 0021 GETMET R3 R0 K10
+ 0x5814000B, // 0022 LDCONST R5 K11
+ 0x5818000B, // 0023 LDCONST R6 K11
0x7C0C0600, // 0024 CALL R3 3
- 0x8C0C0109, // 0025 GETMET R3 R0 K9
+ 0x8C0C010A, // 0025 GETMET R3 R0 K10
0x5416007F, // 0026 LDINT R5 128
0x541A0015, // 0027 LDINT R6 22
0x7C0C0600, // 0028 CALL R3 3
- 0x8C0C0109, // 0029 GETMET R3 R0 K9
+ 0x8C0C010A, // 0029 GETMET R3 R0 K10
0x54160087, // 002A LDINT R5 136
0x541A000D, // 002B LDINT R6 14
0x7C0C0600, // 002C CALL R3 3
- 0xB80E0800, // 002D GETNGBL R3 K4
- 0x8C0C070B, // 002E GETMET R3 R3 K11
+ 0xB80E0A00, // 002D GETNGBL R3 K5
+ 0x8C0C070C, // 002E GETMET R3 R3 K12
0x5C140000, // 002F MOVE R5 R0
0x7C0C0400, // 0030 CALL R3 2
0x80000000, // 0031 RET 0
@@ -128,47 +135,34 @@ be_local_closure(class_FT3663_init, /* name */
/********************************************************************
** Solidified function: ts_loop
********************************************************************/
-extern const bclass be_class_FT3663;
be_local_closure(class_FT3663_ts_loop, /* name */
be_nested_proto(
17, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_FT3663,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str(wire),
- /* K1 */ be_nested_str(display),
- /* K2 */ be_nested_str(read_bytes),
- /* K3 */ be_nested_str(addr),
- /* K4 */ be_const_int(0),
- /* K5 */ be_const_int(2),
- /* K6 */ be_const_int(3),
- /* K7 */ be_nested_str(gest_id_codes),
- /* K8 */ be_nested_str(find),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str(touch_update),
- }),
+ &be_ktab_class_FT3663, /* shared constants */
&be_const_str_ts_loop,
&be_const_str_solidified,
( &(const binstruction[63]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
0x74060000, // 0001 JMPT R1 #0003
0x80000200, // 0002 RET 0
- 0xA4060200, // 0003 IMPORT R1 K1
+ 0xA4061A00, // 0003 IMPORT R1 K13
0x88080100, // 0004 GETMBR R2 R0 K0
- 0x8C080502, // 0005 GETMET R2 R2 K2
- 0x88100103, // 0006 GETMBR R4 R0 K3
- 0x58140004, // 0007 LDCONST R5 K4
+ 0x8C08050E, // 0005 GETMET R2 R2 K14
+ 0x8810010F, // 0006 GETMBR R4 R0 K15
+ 0x5814000B, // 0007 LDCONST R5 K11
0x541A000E, // 0008 LDINT R6 15
0x7C080800, // 0009 CALL R2 4
- 0x940C0505, // 000A GETIDX R3 R2 K5
+ 0x940C0508, // 000A GETIDX R3 R2 K8
0x5412000E, // 000B LDINT R4 15
0x2C0C0604, // 000C AND R3 R3 R4
- 0x94100506, // 000D GETIDX R4 R2 K6
+ 0x94100510, // 000D GETIDX R4 R2 K16
0x5416000E, // 000E LDINT R5 15
0x2C100805, // 000F AND R4 R4 R5
0x54160007, // 0010 LDINT R5 8
@@ -187,7 +181,7 @@ be_local_closure(class_FT3663_ts_loop, /* name */
0x30140A06, // 001D OR R5 R5 R6
0x541A0006, // 001E LDINT R6 7
0x94180406, // 001F GETIDX R6 R2 R6
- 0x941C0506, // 0020 GETIDX R7 R2 K6
+ 0x941C0510, // 0020 GETIDX R7 R2 K16
0x54220008, // 0021 LDINT R8 9
0x2C1C0E08, // 0022 AND R7 R7 R8
0x54220007, // 0023 LDINT R8 8
@@ -206,12 +200,12 @@ be_local_closure(class_FT3663_ts_loop, /* name */
0x30201009, // 0030 OR R8 R8 R9
0x5426000C, // 0031 LDINT R9 13
0x94240409, // 0032 GETIDX R9 R2 R9
- 0x88280107, // 0033 GETMBR R10 R0 K7
- 0x8C281508, // 0034 GETMET R10 R10 K8
- 0x94300509, // 0035 GETIDX R12 R2 K9
- 0x58340004, // 0036 LDCONST R13 K4
+ 0x88280111, // 0033 GETMBR R10 R0 K17
+ 0x8C281512, // 0034 GETMET R10 R10 K18
+ 0x94300513, // 0035 GETIDX R12 R2 K19
+ 0x5834000B, // 0036 LDCONST R13 K11
0x7C280600, // 0037 CALL R10 3
- 0x8C2C030A, // 0038 GETMET R11 R1 K10
+ 0x8C2C0314, // 0038 GETMET R11 R1 K20
0x5C340600, // 0039 MOVE R13 R3
0x5C380800, // 003A MOVE R14 R4
0x5C3C0A00, // 003B MOVE R15 R5
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h
index 99caae874..683e7e756 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_leds.h
@@ -3,28 +3,46 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
-
+extern const bclass be_class_Leds_segment;
extern const bclass be_class_Leds;
+extern const bclass be_class_Leds_matrix;
+// compact class 'Leds_segment' ktab size: 16, total: 34 (saved 144 bytes)
+static const bvalue be_ktab_class_Leds_segment[16] = {
+ /* K0 */ be_nested_str(offset),
+ /* K1 */ be_nested_str(bri),
+ /* K2 */ be_nested_str(strip),
+ /* K3 */ be_nested_str(call_native),
+ /* K4 */ be_nested_str(to_gamma),
+ /* K5 */ be_nested_str(leds),
+ /* K6 */ be_nested_str(dirty),
+ /* K7 */ be_nested_str(can_show),
+ /* K8 */ be_nested_str(set_pixel_color),
+ /* K9 */ be_nested_str(is_dirty),
+ /* K10 */ be_nested_str(clear_to),
+ /* K11 */ be_const_int(0),
+ /* K12 */ be_nested_str(show),
+ /* K13 */ be_nested_str(get_pixel_color),
+ /* K14 */ be_nested_str(offseta),
+ /* K15 */ be_nested_str(pixel_size),
+};
+
extern const bclass be_class_Leds_segment;
/********************************************************************
** Solidified function: pixel_offset
********************************************************************/
-extern const bclass be_class_Leds_segment;
be_local_closure(class_Leds_segment_pixel_offset, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_segment,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(offset),
- }),
+ &be_ktab_class_Leds_segment, /* shared constants */
&be_const_str_pixel_offset,
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
@@ -39,41 +57,33 @@ be_local_closure(class_Leds_segment_pixel_offset, /* name */
/********************************************************************
** Solidified function: clear_to
********************************************************************/
-extern const bclass be_class_Leds_segment;
be_local_closure(class_Leds_segment_clear_to, /* name */
be_nested_proto(
10, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_segment,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str(bri),
- /* K1 */ be_nested_str(strip),
- /* K2 */ be_nested_str(call_native),
- /* K3 */ be_nested_str(to_gamma),
- /* K4 */ be_nested_str(offset),
- /* K5 */ be_nested_str(leds),
- }),
+ &be_ktab_class_Leds_segment, /* shared constants */
&be_const_str_clear_to,
&be_const_str_solidified,
( &(const binstruction[16]) { /* code */
0x4C0C0000, // 0000 LDNIL R3
0x1C0C0403, // 0001 EQ R3 R2 R3
0x780E0000, // 0002 JMPF R3 #0004
- 0x88080100, // 0003 GETMBR R2 R0 K0
- 0x880C0101, // 0004 GETMBR R3 R0 K1
- 0x8C0C0702, // 0005 GETMET R3 R3 K2
+ 0x88080101, // 0003 GETMBR R2 R0 K1
+ 0x880C0102, // 0004 GETMBR R3 R0 K2
+ 0x8C0C0703, // 0005 GETMET R3 R3 K3
0x54160008, // 0006 LDINT R5 9
- 0x88180101, // 0007 GETMBR R6 R0 K1
- 0x8C180D03, // 0008 GETMET R6 R6 K3
+ 0x88180102, // 0007 GETMBR R6 R0 K2
+ 0x8C180D04, // 0008 GETMET R6 R6 K4
0x5C200200, // 0009 MOVE R8 R1
0x5C240400, // 000A MOVE R9 R2
0x7C180600, // 000B CALL R6 3
- 0x881C0104, // 000C GETMBR R7 R0 K4
+ 0x881C0100, // 000C GETMBR R7 R0 K0
0x88200105, // 000D GETMBR R8 R0 K5
0x7C0C0A00, // 000E CALL R3 5
0x80000000, // 000F RET 0
@@ -86,24 +96,21 @@ be_local_closure(class_Leds_segment_clear_to, /* name */
/********************************************************************
** Solidified function: pixel_count
********************************************************************/
-extern const bclass be_class_Leds_segment;
be_local_closure(class_Leds_segment_pixel_count, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_segment,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(leds),
- }),
+ &be_ktab_class_Leds_segment, /* shared constants */
&be_const_str_pixel_count,
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040105, // 0000 GETMBR R1 R0 K5
0x80040200, // 0001 RET 1 R1
})
)
@@ -114,18 +121,17 @@ be_local_closure(class_Leds_segment_pixel_count, /* name */
/********************************************************************
** Solidified function: pixels_buffer
********************************************************************/
-extern const bclass be_class_Leds_segment;
be_local_closure(class_Leds_segment_pixels_buffer, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_segment,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Leds_segment, /* shared constants */
&be_const_str_pixels_buffer,
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
@@ -140,26 +146,22 @@ be_local_closure(class_Leds_segment_pixels_buffer, /* name */
/********************************************************************
** Solidified function: dirty
********************************************************************/
-extern const bclass be_class_Leds_segment;
be_local_closure(class_Leds_segment_dirty, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_segment,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(strip),
- /* K1 */ be_nested_str(dirty),
- }),
+ &be_ktab_class_Leds_segment, /* shared constants */
&be_const_str_dirty,
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x88040102, // 0000 GETMBR R1 R0 K2
+ 0x8C040306, // 0001 GETMET R1 R1 K6
0x7C040200, // 0002 CALL R1 1
0x80000000, // 0003 RET 0
})
@@ -171,26 +173,22 @@ be_local_closure(class_Leds_segment_dirty, /* name */
/********************************************************************
** Solidified function: can_show
********************************************************************/
-extern const bclass be_class_Leds_segment;
be_local_closure(class_Leds_segment_can_show, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_segment,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(strip),
- /* K1 */ be_nested_str(can_show),
- }),
+ &be_ktab_class_Leds_segment, /* shared constants */
&be_const_str_can_show,
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x88040102, // 0000 GETMBR R1 R0 K2
+ 0x8C040307, // 0001 GETMET R1 R1 K7
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -202,33 +200,27 @@ be_local_closure(class_Leds_segment_can_show, /* name */
/********************************************************************
** Solidified function: set_pixel_color
********************************************************************/
-extern const bclass be_class_Leds_segment;
be_local_closure(class_Leds_segment_set_pixel_color, /* name */
be_nested_proto(
9, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_segment,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str(bri),
- /* K1 */ be_nested_str(strip),
- /* K2 */ be_nested_str(set_pixel_color),
- /* K3 */ be_nested_str(offset),
- }),
+ &be_ktab_class_Leds_segment, /* shared constants */
&be_const_str_set_pixel_color,
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
0x4C100000, // 0000 LDNIL R4
0x1C100604, // 0001 EQ R4 R3 R4
0x78120000, // 0002 JMPF R4 #0004
- 0x880C0100, // 0003 GETMBR R3 R0 K0
- 0x88100101, // 0004 GETMBR R4 R0 K1
- 0x8C100902, // 0005 GETMET R4 R4 K2
- 0x88180103, // 0006 GETMBR R6 R0 K3
+ 0x880C0101, // 0003 GETMBR R3 R0 K1
+ 0x88100102, // 0004 GETMBR R4 R0 K2
+ 0x8C100908, // 0005 GETMET R4 R4 K8
+ 0x88180100, // 0006 GETMBR R6 R0 K0
0x00180206, // 0007 ADD R6 R1 R6
0x5C1C0400, // 0008 MOVE R7 R2
0x5C200600, // 0009 MOVE R8 R3
@@ -243,26 +235,22 @@ be_local_closure(class_Leds_segment_set_pixel_color, /* name */
/********************************************************************
** Solidified function: is_dirty
********************************************************************/
-extern const bclass be_class_Leds_segment;
be_local_closure(class_Leds_segment_is_dirty, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_segment,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(strip),
- /* K1 */ be_nested_str(is_dirty),
- }),
+ &be_ktab_class_Leds_segment, /* shared constants */
&be_const_str_is_dirty,
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x88040102, // 0000 GETMBR R1 R0 K2
+ 0x8C040309, // 0001 GETMET R1 R1 K9
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -274,29 +262,24 @@ be_local_closure(class_Leds_segment_is_dirty, /* name */
/********************************************************************
** Solidified function: clear
********************************************************************/
-extern const bclass be_class_Leds_segment;
be_local_closure(class_Leds_segment_clear, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_segment,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(clear_to),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(show),
- }),
+ &be_ktab_class_Leds_segment, /* shared constants */
&be_const_str_clear,
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x580C0001, // 0001 LDCONST R3 K1
+ 0x8C04010A, // 0000 GETMET R1 R0 K10
+ 0x580C000B, // 0001 LDCONST R3 K11
0x7C040400, // 0002 CALL R1 2
- 0x8C040102, // 0003 GETMET R1 R0 K2
+ 0x8C04010C, // 0003 GETMET R1 R0 K12
0x7C040200, // 0004 CALL R1 1
0x80000000, // 0005 RET 0
})
@@ -308,18 +291,17 @@ be_local_closure(class_Leds_segment_clear, /* name */
/********************************************************************
** Solidified function: begin
********************************************************************/
-extern const bclass be_class_Leds_segment;
be_local_closure(class_Leds_segment_begin, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_segment,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Leds_segment, /* shared constants */
&be_const_str_begin,
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -333,28 +315,23 @@ be_local_closure(class_Leds_segment_begin, /* name */
/********************************************************************
** Solidified function: get_pixel_color
********************************************************************/
-extern const bclass be_class_Leds_segment;
be_local_closure(class_Leds_segment_get_pixel_color, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_segment,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(strip),
- /* K1 */ be_nested_str(get_pixel_color),
- /* K2 */ be_nested_str(offseta),
- }),
+ &be_ktab_class_Leds_segment, /* shared constants */
&be_const_str_get_pixel_color,
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x88100102, // 0002 GETMBR R4 R0 K2
+ 0x88080102, // 0000 GETMBR R2 R0 K2
+ 0x8C08050D, // 0001 GETMET R2 R2 K13
+ 0x8810010E, // 0002 GETMBR R4 R0 K14
0x00100204, // 0003 ADD R4 R1 R4
0x7C080400, // 0004 CALL R2 2
0x80040400, // 0005 RET 1 R2
@@ -367,26 +344,22 @@ be_local_closure(class_Leds_segment_get_pixel_color, /* name */
/********************************************************************
** Solidified function: pixel_size
********************************************************************/
-extern const bclass be_class_Leds_segment;
be_local_closure(class_Leds_segment_pixel_size, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_segment,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(strip),
- /* K1 */ be_nested_str(pixel_size),
- }),
+ &be_ktab_class_Leds_segment, /* shared constants */
&be_const_str_pixel_size,
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x88040102, // 0000 GETMBR R1 R0 K2
+ 0x8C04030F, // 0001 GETMET R1 R1 K15
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -398,34 +371,29 @@ be_local_closure(class_Leds_segment_pixel_size, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Leds_segment;
be_local_closure(class_Leds_segment_init, /* name */
be_nested_proto(
6, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_segment,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(strip),
- /* K1 */ be_nested_str(offset),
- /* K2 */ be_nested_str(leds),
- }),
+ &be_ktab_class_Leds_segment, /* shared constants */
&be_const_str_init,
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90020401, // 0000 SETMBR R0 K2 R1
0x60100009, // 0001 GETGBL R4 G9
0x5C140400, // 0002 MOVE R5 R2
0x7C100200, // 0003 CALL R4 1
- 0x90020204, // 0004 SETMBR R0 K1 R4
+ 0x90020004, // 0004 SETMBR R0 K0 R4
0x60100009, // 0005 GETGBL R4 G9
0x5C140600, // 0006 MOVE R5 R3
0x7C100200, // 0007 CALL R4 1
- 0x90020404, // 0008 SETMBR R0 K2 R4
+ 0x90020A04, // 0008 SETMBR R0 K5 R4
0x80000000, // 0009 RET 0
})
)
@@ -436,24 +404,17 @@ be_local_closure(class_Leds_segment_init, /* name */
/********************************************************************
** Solidified function: show
********************************************************************/
-extern const bclass be_class_Leds_segment;
be_local_closure(class_Leds_segment_show, /* name */
be_nested_proto(
4, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_segment,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str(offset),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(leds),
- /* K3 */ be_nested_str(strip),
- /* K4 */ be_nested_str(show),
- }),
+ &be_ktab_class_Leds_segment, /* shared constants */
&be_const_str_show,
&be_const_str_solidified,
( &(const binstruction[16]) { /* code */
@@ -462,15 +423,15 @@ be_local_closure(class_Leds_segment_show, /* name */
0x7C080200, // 0002 CALL R2 1
0x740A0007, // 0003 JMPT R2 #000C
0x88080100, // 0004 GETMBR R2 R0 K0
- 0x1C080501, // 0005 EQ R2 R2 K1
+ 0x1C08050B, // 0005 EQ R2 R2 K11
0x780A0007, // 0006 JMPF R2 #000F
- 0x88080102, // 0007 GETMBR R2 R0 K2
- 0x880C0103, // 0008 GETMBR R3 R0 K3
- 0x880C0702, // 0009 GETMBR R3 R3 K2
+ 0x88080105, // 0007 GETMBR R2 R0 K5
+ 0x880C0102, // 0008 GETMBR R3 R0 K2
+ 0x880C0705, // 0009 GETMBR R3 R3 K5
0x1C080403, // 000A EQ R2 R2 R3
0x780A0002, // 000B JMPF R2 #000F
- 0x88080103, // 000C GETMBR R2 R0 K3
- 0x8C080504, // 000D GETMET R2 R2 K4
+ 0x88080102, // 000C GETMBR R2 R0 K2
+ 0x8C08050C, // 000D GETMET R2 R2 K12
0x7C080200, // 000E CALL R2 1
0x80000000, // 000F RET 0
})
@@ -507,640 +468,33 @@ be_local_class(Leds_segment,
})),
(bstring*) &be_const_str_Leds_segment
);
-
-/********************************************************************
-** Solidified function: create_segment
-********************************************************************/
-extern const bclass be_class_Leds;
-be_local_closure(class_Leds_create_segment, /* name */
- be_nested_proto(
- 8, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Leds,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str(leds),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(value_error),
- /* K3 */ be_nested_str(out_X20of_X20range),
- /* K4 */ be_const_class(be_class_Leds_segment),
- }),
- &be_const_str_create_segment,
- &be_const_str_solidified,
- ( &(const binstruction[23]) { /* code */
- 0x600C0009, // 0000 GETGBL R3 G9
- 0x5C100200, // 0001 MOVE R4 R1
- 0x7C0C0200, // 0002 CALL R3 1
- 0x60100009, // 0003 GETGBL R4 G9
- 0x5C140400, // 0004 MOVE R5 R2
- 0x7C100200, // 0005 CALL R4 1
- 0x000C0604, // 0006 ADD R3 R3 R4
- 0x88100100, // 0007 GETMBR R4 R0 K0
- 0x240C0604, // 0008 GT R3 R3 R4
- 0x740E0003, // 0009 JMPT R3 #000E
- 0x140C0301, // 000A LT R3 R1 K1
- 0x740E0001, // 000B JMPT R3 #000E
- 0x140C0501, // 000C LT R3 R2 K1
- 0x780E0000, // 000D JMPF R3 #000F
- 0xB0060503, // 000E RAISE 1 K2 K3
- 0x580C0004, // 000F LDCONST R3 K4
- 0xB4000004, // 0010 CLASS K4
- 0x5C100600, // 0011 MOVE R4 R3
- 0x5C140000, // 0012 MOVE R5 R0
- 0x5C180200, // 0013 MOVE R6 R1
- 0x5C1C0400, // 0014 MOVE R7 R2
- 0x7C100600, // 0015 CALL R4 3
- 0x80040800, // 0016 RET 1 R4
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_bri
-********************************************************************/
-extern const bclass be_class_Leds;
-be_local_closure(class_Leds_set_bri, /* name */
- be_nested_proto(
- 3, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Leds,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str(bri),
- }),
- &be_const_str_set_bri,
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0x14080300, // 0000 LT R2 R1 K0
- 0x780A0000, // 0001 JMPF R2 #0003
- 0x58040000, // 0002 LDCONST R1 K0
- 0x540A00FE, // 0003 LDINT R2 255
- 0x24080202, // 0004 GT R2 R1 R2
- 0x780A0000, // 0005 JMPF R2 #0007
- 0x540600FE, // 0006 LDINT R1 255
- 0x90020201, // 0007 SETMBR R0 K1 R1
- 0x80000000, // 0008 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: begin
-********************************************************************/
-extern const bclass be_class_Leds;
-be_local_closure(class_Leds_begin, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Leds,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(call_native),
- /* K1 */ be_const_int(1),
- }),
- &be_const_str_begin,
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x580C0001, // 0001 LDCONST R3 K1
- 0x7C040400, // 0002 CALL R1 2
- 0x80000000, // 0003 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: clear
-********************************************************************/
-extern const bclass be_class_Leds;
-be_local_closure(class_Leds_clear, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Leds,
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(clear_to),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(show),
- }),
- &be_const_str_clear,
- &be_const_str_solidified,
- ( &(const binstruction[ 6]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x580C0001, // 0001 LDCONST R3 K1
- 0x7C040400, // 0002 CALL R1 2
- 0x8C040102, // 0003 GETMET R1 R0 K2
- 0x7C040200, // 0004 CALL R1 1
- 0x80000000, // 0005 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_Leds;
-be_local_closure(class_Leds_init, /* name */
- be_nested_proto(
- 12, /* nstack */
- 5, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Leds,
- 1, /* has constants */
- ( &(const bvalue[15]) { /* constants */
- /* K0 */ be_nested_str(gpio),
- /* K1 */ be_nested_str(gamma),
- /* K2 */ be_nested_str(pin),
- /* K3 */ be_nested_str(WS2812),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str(ctor),
- /* K6 */ be_nested_str(leds),
- /* K7 */ be_nested_str(pixel_count),
- /* K8 */ be_nested_str(light),
- /* K9 */ be_nested_str(bri),
- /* K10 */ be_nested_str(get),
- /* K11 */ be_nested_str(_p),
- /* K12 */ be_nested_str(internal_error),
- /* K13 */ be_nested_str(couldn_X27t_X20not_X20initialize_X20noepixelbus),
- /* K14 */ be_nested_str(begin),
- }),
- &be_const_str_init,
- &be_const_str_solidified,
- ( &(const binstruction[43]) { /* code */
- 0xA4160000, // 0000 IMPORT R5 K0
- 0x50180200, // 0001 LDBOOL R6 1 0
- 0x90020206, // 0002 SETMBR R0 K1 R6
- 0x4C180000, // 0003 LDNIL R6
- 0x1C180406, // 0004 EQ R6 R2 R6
- 0x741A0005, // 0005 JMPT R6 #000C
- 0x8C180B02, // 0006 GETMET R6 R5 K2
- 0x88200B03, // 0007 GETMBR R8 R5 K3
- 0x58240004, // 0008 LDCONST R9 K4
- 0x7C180600, // 0009 CALL R6 3
- 0x1C180406, // 000A EQ R6 R2 R6
- 0x781A000A, // 000B JMPF R6 #0017
- 0x8C180105, // 000C GETMET R6 R0 K5
- 0x7C180200, // 000D CALL R6 1
- 0x8C180107, // 000E GETMET R6 R0 K7
- 0x7C180200, // 000F CALL R6 1
- 0x90020C06, // 0010 SETMBR R0 K6 R6
- 0xA41A1000, // 0011 IMPORT R6 K8
- 0x8C1C0D0A, // 0012 GETMET R7 R6 K10
- 0x7C1C0200, // 0013 CALL R7 1
- 0x941C0F09, // 0014 GETIDX R7 R7 K9
- 0x90021207, // 0015 SETMBR R0 K9 R7
- 0x7002000B, // 0016 JMP #0023
- 0x60180009, // 0017 GETGBL R6 G9
- 0x5C1C0200, // 0018 MOVE R7 R1
- 0x7C180200, // 0019 CALL R6 1
- 0x90020C06, // 001A SETMBR R0 K6 R6
- 0x541A007E, // 001B LDINT R6 127
- 0x90021206, // 001C SETMBR R0 K9 R6
- 0x8C180105, // 001D GETMET R6 R0 K5
- 0x88200106, // 001E GETMBR R8 R0 K6
- 0x5C240400, // 001F MOVE R9 R2
- 0x5C280600, // 0020 MOVE R10 R3
- 0x5C2C0800, // 0021 MOVE R11 R4
- 0x7C180A00, // 0022 CALL R6 5
- 0x8818010B, // 0023 GETMBR R6 R0 K11
- 0x4C1C0000, // 0024 LDNIL R7
- 0x1C180C07, // 0025 EQ R6 R6 R7
- 0x781A0000, // 0026 JMPF R6 #0028
- 0xB006190D, // 0027 RAISE 1 K12 K13
- 0x8C18010E, // 0028 GETMET R6 R0 K14
- 0x7C180200, // 0029 CALL R6 1
- 0x80000000, // 002A RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: to_gamma
-********************************************************************/
-extern const bclass be_class_Leds;
-be_local_closure(class_Leds_to_gamma, /* name */
- be_nested_proto(
- 8, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Leds,
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(bri),
- /* K1 */ be_nested_str(apply_bri_gamma),
- /* K2 */ be_nested_str(gamma),
- }),
- &be_const_str_to_gamma,
- &be_const_str_solidified,
- ( &(const binstruction[10]) { /* code */
- 0x4C0C0000, // 0000 LDNIL R3
- 0x1C0C0403, // 0001 EQ R3 R2 R3
- 0x780E0000, // 0002 JMPF R3 #0004
- 0x88080100, // 0003 GETMBR R2 R0 K0
- 0x8C0C0101, // 0004 GETMET R3 R0 K1
- 0x5C140200, // 0005 MOVE R5 R1
- 0x5C180400, // 0006 MOVE R6 R2
- 0x881C0102, // 0007 GETMBR R7 R0 K2
- 0x7C0C0800, // 0008 CALL R3 4
- 0x80040600, // 0009 RET 1 R3
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: show
-********************************************************************/
-extern const bclass be_class_Leds;
-be_local_closure(class_Leds_show, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Leds,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(call_native),
- /* K1 */ be_const_int(2),
- }),
- &be_const_str_show,
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x580C0001, // 0001 LDCONST R3 K1
- 0x7C040400, // 0002 CALL R1 2
- 0x80000000, // 0003 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: pixel_count
-********************************************************************/
-extern const bclass be_class_Leds;
-be_local_closure(class_Leds_pixel_count, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Leds,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(call_native),
- }),
- &be_const_str_pixel_count,
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x540E0007, // 0001 LDINT R3 8
- 0x7C040400, // 0002 CALL R1 2
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_bri
-********************************************************************/
-extern const bclass be_class_Leds;
-be_local_closure(class_Leds_get_bri, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Leds,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(bri),
- }),
- &be_const_str_get_bri,
- &be_const_str_solidified,
- ( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x80040200, // 0001 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_gamma
-********************************************************************/
-extern const bclass be_class_Leds;
-be_local_closure(class_Leds_set_gamma, /* name */
- be_nested_proto(
- 4, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Leds,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(gamma),
- }),
- &be_const_str_set_gamma,
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x60080017, // 0000 GETGBL R2 G23
- 0x5C0C0200, // 0001 MOVE R3 R1
- 0x7C080200, // 0002 CALL R2 1
- 0x90020002, // 0003 SETMBR R0 K0 R2
- 0x80000000, // 0004 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: get_pixel_color
-********************************************************************/
-extern const bclass be_class_Leds;
-be_local_closure(class_Leds_get_pixel_color, /* name */
- be_nested_proto(
- 6, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Leds,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(call_native),
- }),
- &be_const_str_get_pixel_color,
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
- 0x5412000A, // 0001 LDINT R4 11
- 0x5C140200, // 0002 MOVE R5 R1
- 0x7C080600, // 0003 CALL R2 3
- 0x80040400, // 0004 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: dirty
-********************************************************************/
-extern const bclass be_class_Leds;
-be_local_closure(class_Leds_dirty, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Leds,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(call_native),
- }),
- &be_const_str_dirty,
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x540E0004, // 0001 LDINT R3 5
- 0x7C040400, // 0002 CALL R1 2
- 0x80000000, // 0003 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: matrix
-********************************************************************/
-extern const bclass be_class_Leds;
-be_local_closure(class_Leds_matrix, /* name */
- be_nested_proto(
- 11, /* nstack */
- 4, /* argc */
- 4, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Leds,
- 1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_const_class(be_class_Leds),
- /* K1 */ be_nested_str(Leds),
- /* K2 */ be_nested_str(create_matrix),
- /* K3 */ be_const_int(0),
- }),
- &be_const_str_matrix,
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x58100000, // 0000 LDCONST R4 K0
- 0xB8160200, // 0001 GETNGBL R5 K1
- 0x08180001, // 0002 MUL R6 R0 R1
- 0x5C1C0400, // 0003 MOVE R7 R2
- 0x5C200600, // 0004 MOVE R8 R3
- 0x7C140600, // 0005 CALL R5 3
- 0x8C180B02, // 0006 GETMET R6 R5 K2
- 0x5C200000, // 0007 MOVE R8 R0
- 0x5C240200, // 0008 MOVE R9 R1
- 0x58280003, // 0009 LDCONST R10 K3
- 0x7C180800, // 000A CALL R6 4
- 0x80040C00, // 000B RET 1 R6
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: pixel_offset
-********************************************************************/
-extern const bclass be_class_Leds;
-be_local_closure(class_Leds_pixel_offset, /* name */
- be_nested_proto(
- 1, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Leds,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_const_int(0),
- }),
- &be_const_str_pixel_offset,
- &be_const_str_solidified,
- ( &(const binstruction[ 1]) { /* code */
- 0x80060000, // 0000 RET 1 K0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: clear_to
-********************************************************************/
-extern const bclass be_class_Leds;
-be_local_closure(class_Leds_clear_to, /* name */
- be_nested_proto(
- 10, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Leds,
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(bri),
- /* K1 */ be_nested_str(call_native),
- /* K2 */ be_nested_str(to_gamma),
- }),
- &be_const_str_clear_to,
- &be_const_str_solidified,
- ( &(const binstruction[12]) { /* code */
- 0x4C0C0000, // 0000 LDNIL R3
- 0x1C0C0403, // 0001 EQ R3 R2 R3
- 0x780E0000, // 0002 JMPF R3 #0004
- 0x88080100, // 0003 GETMBR R2 R0 K0
- 0x8C0C0101, // 0004 GETMET R3 R0 K1
- 0x54160008, // 0005 LDINT R5 9
- 0x8C180102, // 0006 GETMET R6 R0 K2
- 0x5C200200, // 0007 MOVE R8 R1
- 0x5C240400, // 0008 MOVE R9 R2
- 0x7C180600, // 0009 CALL R6 3
- 0x7C0C0600, // 000A CALL R3 3
- 0x80000000, // 000B RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: set_pixel_color
-********************************************************************/
-extern const bclass be_class_Leds;
-be_local_closure(class_Leds_set_pixel_color, /* name */
- be_nested_proto(
- 12, /* nstack */
- 4, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Leds,
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(bri),
- /* K1 */ be_nested_str(call_native),
- /* K2 */ be_nested_str(to_gamma),
- }),
- &be_const_str_set_pixel_color,
- &be_const_str_solidified,
- ( &(const binstruction[13]) { /* code */
- 0x4C100000, // 0000 LDNIL R4
- 0x1C100604, // 0001 EQ R4 R3 R4
- 0x78120000, // 0002 JMPF R4 #0004
- 0x880C0100, // 0003 GETMBR R3 R0 K0
- 0x8C100101, // 0004 GETMET R4 R0 K1
- 0x541A0009, // 0005 LDINT R6 10
- 0x5C1C0200, // 0006 MOVE R7 R1
- 0x8C200102, // 0007 GETMET R8 R0 K2
- 0x5C280400, // 0008 MOVE R10 R2
- 0x5C2C0600, // 0009 MOVE R11 R3
- 0x7C200600, // 000A CALL R8 3
- 0x7C100800, // 000B CALL R4 4
- 0x80000000, // 000C RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: pixel_size
-********************************************************************/
-extern const bclass be_class_Leds;
-be_local_closure(class_Leds_pixel_size, /* name */
- be_nested_proto(
- 4, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Leds,
- 1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(call_native),
- }),
- &be_const_str_pixel_size,
- &be_const_str_solidified,
- ( &(const binstruction[ 4]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x540E0006, // 0001 LDINT R3 7
- 0x7C040400, // 0002 CALL R1 2
- 0x80040200, // 0003 RET 1 R1
- })
- )
-);
-/*******************************************************************/
+// compact class 'Leds_matrix' ktab size: 24, total: 62 (saved 304 bytes)
+static const bvalue be_ktab_class_Leds_matrix[24] = {
+ /* K0 */ be_nested_str(strip),
+ /* K1 */ be_nested_str(bri),
+ /* K2 */ be_nested_str(call_native),
+ /* K3 */ be_nested_str(to_gamma),
+ /* K4 */ be_nested_str(offset),
+ /* K5 */ be_nested_str(w),
+ /* K6 */ be_nested_str(h),
+ /* K7 */ be_const_int(0),
+ /* K8 */ be_nested_str(leds),
+ /* K9 */ be_nested_str(show),
+ /* K10 */ be_nested_str(pix_buffer),
+ /* K11 */ be_nested_str(pixels_buffer),
+ /* K12 */ be_nested_str(pix_size),
+ /* K13 */ be_nested_str(alternate),
+ /* K14 */ be_nested_str(pixel_size),
+ /* K15 */ be_nested_str(set_pixel_color),
+ /* K16 */ be_nested_str(dirty),
+ /* K17 */ be_const_int(1),
+ /* K18 */ be_nested_str(is_dirty),
+ /* K19 */ be_nested_str(can_show),
+ /* K20 */ be_nested_str(setbytes),
+ /* K21 */ be_nested_str(get_pixel_color),
+ /* K22 */ be_nested_str(offseta),
+ /* K23 */ be_nested_str(clear_to),
+};
extern const bclass be_class_Leds_matrix;
@@ -1148,26 +502,17 @@ extern const bclass be_class_Leds_matrix;
/********************************************************************
** Solidified function: clear_to
********************************************************************/
-extern const bclass be_class_Leds_matrix;
be_local_closure(class_Leds_matrix_clear_to, /* name */
be_nested_proto(
10, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_matrix,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str(strip),
- /* K1 */ be_nested_str(bri),
- /* K2 */ be_nested_str(call_native),
- /* K3 */ be_nested_str(to_gamma),
- /* K4 */ be_nested_str(offset),
- /* K5 */ be_nested_str(w),
- /* K6 */ be_nested_str(h),
- }),
+ &be_ktab_class_Leds_matrix, /* shared constants */
&be_const_str_clear_to,
&be_const_str_solidified,
( &(const binstruction[19]) { /* code */
@@ -1199,28 +544,17 @@ be_local_closure(class_Leds_matrix_clear_to, /* name */
/********************************************************************
** Solidified function: show
********************************************************************/
-extern const bclass be_class_Leds_matrix;
be_local_closure(class_Leds_matrix_show, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_matrix,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str(offset),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(w),
- /* K3 */ be_nested_str(h),
- /* K4 */ be_nested_str(strip),
- /* K5 */ be_nested_str(leds),
- /* K6 */ be_nested_str(show),
- /* K7 */ be_nested_str(pix_buffer),
- /* K8 */ be_nested_str(pixels_buffer),
- }),
+ &be_ktab_class_Leds_matrix, /* shared constants */
&be_const_str_show,
&be_const_str_solidified,
( &(const binstruction[23]) { /* code */
@@ -1228,24 +562,24 @@ be_local_closure(class_Leds_matrix_show, /* name */
0x5C0C0200, // 0001 MOVE R3 R1
0x7C080200, // 0002 CALL R2 1
0x740A0009, // 0003 JMPT R2 #000E
- 0x88080100, // 0004 GETMBR R2 R0 K0
- 0x1C080501, // 0005 EQ R2 R2 K1
+ 0x88080104, // 0004 GETMBR R2 R0 K4
+ 0x1C080507, // 0005 EQ R2 R2 K7
0x780A000E, // 0006 JMPF R2 #0016
- 0x88080102, // 0007 GETMBR R2 R0 K2
- 0x880C0103, // 0008 GETMBR R3 R0 K3
+ 0x88080105, // 0007 GETMBR R2 R0 K5
+ 0x880C0106, // 0008 GETMBR R3 R0 K6
0x08080403, // 0009 MUL R2 R2 R3
- 0x880C0104, // 000A GETMBR R3 R0 K4
- 0x880C0705, // 000B GETMBR R3 R3 K5
+ 0x880C0100, // 000A GETMBR R3 R0 K0
+ 0x880C0708, // 000B GETMBR R3 R3 K8
0x1C080403, // 000C EQ R2 R2 R3
0x780A0007, // 000D JMPF R2 #0016
- 0x88080104, // 000E GETMBR R2 R0 K4
- 0x8C080506, // 000F GETMET R2 R2 K6
+ 0x88080100, // 000E GETMBR R2 R0 K0
+ 0x8C080509, // 000F GETMET R2 R2 K9
0x7C080200, // 0010 CALL R2 1
- 0x88080104, // 0011 GETMBR R2 R0 K4
- 0x8C080508, // 0012 GETMET R2 R2 K8
- 0x88100107, // 0013 GETMBR R4 R0 K7
+ 0x88080100, // 0011 GETMBR R2 R0 K0
+ 0x8C08050B, // 0012 GETMET R2 R2 K11
+ 0x8810010A, // 0013 GETMBR R4 R0 K10
0x7C080400, // 0014 CALL R2 2
- 0x90020E02, // 0015 SETMBR R0 K7 R2
+ 0x90021402, // 0015 SETMBR R0 K10 R2
0x80000000, // 0016 RET 0
})
)
@@ -1256,24 +590,21 @@ be_local_closure(class_Leds_matrix_show, /* name */
/********************************************************************
** Solidified function: pixel_size
********************************************************************/
-extern const bclass be_class_Leds_matrix;
be_local_closure(class_Leds_matrix_pixel_size, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_matrix,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(pix_size),
- }),
+ &be_ktab_class_Leds_matrix, /* shared constants */
&be_const_str_pixel_size,
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804010C, // 0000 GETMBR R1 R0 K12
0x80040200, // 0001 RET 1 R1
})
)
@@ -1284,45 +615,34 @@ be_local_closure(class_Leds_matrix_pixel_size, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Leds_matrix;
be_local_closure(class_Leds_matrix_init, /* name */
be_nested_proto(
7, /* nstack */
5, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_matrix,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str(strip),
- /* K1 */ be_nested_str(offset),
- /* K2 */ be_nested_str(h),
- /* K3 */ be_nested_str(w),
- /* K4 */ be_nested_str(alternate),
- /* K5 */ be_nested_str(pix_buffer),
- /* K6 */ be_nested_str(pixels_buffer),
- /* K7 */ be_nested_str(pix_size),
- /* K8 */ be_nested_str(pixel_size),
- }),
+ &be_ktab_class_Leds_matrix, /* shared constants */
&be_const_str_init,
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020204, // 0001 SETMBR R0 K1 R4
- 0x90020403, // 0002 SETMBR R0 K2 R3
- 0x90020602, // 0003 SETMBR R0 K3 R2
+ 0x90020804, // 0001 SETMBR R0 K4 R4
+ 0x90020C03, // 0002 SETMBR R0 K6 R3
+ 0x90020A02, // 0003 SETMBR R0 K5 R2
0x50140000, // 0004 LDBOOL R5 0 0
- 0x90020805, // 0005 SETMBR R0 K4 R5
+ 0x90021A05, // 0005 SETMBR R0 K13 R5
0x88140100, // 0006 GETMBR R5 R0 K0
- 0x8C140B06, // 0007 GETMET R5 R5 K6
+ 0x8C140B0B, // 0007 GETMET R5 R5 K11
0x7C140200, // 0008 CALL R5 1
- 0x90020A05, // 0009 SETMBR R0 K5 R5
+ 0x90021405, // 0009 SETMBR R0 K10 R5
0x88140100, // 000A GETMBR R5 R0 K0
- 0x8C140B08, // 000B GETMET R5 R5 K8
+ 0x8C140B0E, // 000B GETMET R5 R5 K14
0x7C140200, // 000C CALL R5 1
- 0x90020E05, // 000D SETMBR R0 K7 R5
+ 0x90021805, // 000D SETMBR R0 K12 R5
0x80000000, // 000E RET 0
})
)
@@ -1333,23 +653,17 @@ be_local_closure(class_Leds_matrix_init, /* name */
/********************************************************************
** Solidified function: set_pixel_color
********************************************************************/
-extern const bclass be_class_Leds_matrix;
be_local_closure(class_Leds_matrix_set_pixel_color, /* name */
be_nested_proto(
9, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_matrix,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str(strip),
- /* K1 */ be_nested_str(bri),
- /* K2 */ be_nested_str(set_pixel_color),
- /* K3 */ be_nested_str(offset),
- }),
+ &be_ktab_class_Leds_matrix, /* shared constants */
&be_const_str_set_pixel_color,
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
@@ -1359,8 +673,8 @@ be_local_closure(class_Leds_matrix_set_pixel_color, /* name */
0x88100100, // 0003 GETMBR R4 R0 K0
0x880C0901, // 0004 GETMBR R3 R4 K1
0x88100100, // 0005 GETMBR R4 R0 K0
- 0x8C100902, // 0006 GETMET R4 R4 K2
- 0x88180103, // 0007 GETMBR R6 R0 K3
+ 0x8C10090F, // 0006 GETMET R4 R4 K15
+ 0x88180104, // 0007 GETMBR R6 R0 K4
0x00180206, // 0008 ADD R6 R1 R6
0x5C1C0400, // 0009 MOVE R7 R2
0x5C200600, // 000A MOVE R8 R3
@@ -1375,26 +689,22 @@ be_local_closure(class_Leds_matrix_set_pixel_color, /* name */
/********************************************************************
** Solidified function: pixels_buffer
********************************************************************/
-extern const bclass be_class_Leds_matrix;
be_local_closure(class_Leds_matrix_pixels_buffer, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_matrix,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(strip),
- /* K1 */ be_nested_str(pixels_buffer),
- }),
+ &be_ktab_class_Leds_matrix, /* shared constants */
&be_const_str_pixels_buffer,
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x8C04030B, // 0001 GETMET R1 R1 K11
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -1406,26 +716,22 @@ be_local_closure(class_Leds_matrix_pixels_buffer, /* name */
/********************************************************************
** Solidified function: dirty
********************************************************************/
-extern const bclass be_class_Leds_matrix;
be_local_closure(class_Leds_matrix_dirty, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_matrix,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(strip),
- /* K1 */ be_nested_str(dirty),
- }),
+ &be_ktab_class_Leds_matrix, /* shared constants */
&be_const_str_dirty,
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x8C040310, // 0001 GETMET R1 R1 K16
0x7C040200, // 0002 CALL R1 1
0x80000000, // 0003 RET 0
})
@@ -1437,27 +743,17 @@ be_local_closure(class_Leds_matrix_dirty, /* name */
/********************************************************************
** Solidified function: set_matrix_pixel_color
********************************************************************/
-extern const bclass be_class_Leds_matrix;
be_local_closure(class_Leds_matrix_set_matrix_pixel_color, /* name */
be_nested_proto(
10, /* nstack */
5, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_matrix,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str(strip),
- /* K1 */ be_nested_str(bri),
- /* K2 */ be_nested_str(alternate),
- /* K3 */ be_const_int(1),
- /* K4 */ be_nested_str(set_pixel_color),
- /* K5 */ be_nested_str(w),
- /* K6 */ be_nested_str(h),
- /* K7 */ be_nested_str(offset),
- }),
+ &be_ktab_class_Leds_matrix, /* shared constants */
&be_const_str_set_matrix_pixel_color,
&be_const_str_solidified,
( &(const binstruction[34]) { /* code */
@@ -1466,30 +762,30 @@ be_local_closure(class_Leds_matrix_set_matrix_pixel_color, /* name */
0x78160001, // 0002 JMPF R5 #0005
0x88140100, // 0003 GETMBR R5 R0 K0
0x88100B01, // 0004 GETMBR R4 R5 K1
- 0x88140102, // 0005 GETMBR R5 R0 K2
+ 0x8814010D, // 0005 GETMBR R5 R0 K13
0x7816000F, // 0006 JMPF R5 #0017
- 0x2C140503, // 0007 AND R5 R2 K3
+ 0x2C140511, // 0007 AND R5 R2 K17
0x7816000D, // 0008 JMPF R5 #0017
0x88140100, // 0009 GETMBR R5 R0 K0
- 0x8C140B04, // 000A GETMET R5 R5 K4
+ 0x8C140B0F, // 000A GETMET R5 R5 K15
0x881C0105, // 000B GETMBR R7 R0 K5
0x081C0207, // 000C MUL R7 R1 R7
0x88200106, // 000D GETMBR R8 R0 K6
0x001C0E08, // 000E ADD R7 R7 R8
0x041C0E02, // 000F SUB R7 R7 R2
- 0x041C0F03, // 0010 SUB R7 R7 K3
- 0x88200107, // 0011 GETMBR R8 R0 K7
+ 0x041C0F11, // 0010 SUB R7 R7 K17
+ 0x88200104, // 0011 GETMBR R8 R0 K4
0x001C0E08, // 0012 ADD R7 R7 R8
0x5C200600, // 0013 MOVE R8 R3
0x5C240800, // 0014 MOVE R9 R4
0x7C140800, // 0015 CALL R5 4
0x70020009, // 0016 JMP #0021
0x88140100, // 0017 GETMBR R5 R0 K0
- 0x8C140B04, // 0018 GETMET R5 R5 K4
+ 0x8C140B0F, // 0018 GETMET R5 R5 K15
0x881C0105, // 0019 GETMBR R7 R0 K5
0x081C0207, // 001A MUL R7 R1 R7
0x001C0E02, // 001B ADD R7 R7 R2
- 0x88200107, // 001C GETMBR R8 R0 K7
+ 0x88200104, // 001C GETMBR R8 R0 K4
0x001C0E08, // 001D ADD R7 R7 R8
0x5C200600, // 001E MOVE R8 R3
0x5C240800, // 001F MOVE R9 R4
@@ -1504,26 +800,22 @@ be_local_closure(class_Leds_matrix_set_matrix_pixel_color, /* name */
/********************************************************************
** Solidified function: is_dirty
********************************************************************/
-extern const bclass be_class_Leds_matrix;
be_local_closure(class_Leds_matrix_is_dirty, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_matrix,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(strip),
- /* K1 */ be_nested_str(is_dirty),
- }),
+ &be_ktab_class_Leds_matrix, /* shared constants */
&be_const_str_is_dirty,
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x8C040312, // 0001 GETMET R1 R1 K18
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -1535,24 +827,21 @@ be_local_closure(class_Leds_matrix_is_dirty, /* name */
/********************************************************************
** Solidified function: set_alternate
********************************************************************/
-extern const bclass be_class_Leds_matrix;
be_local_closure(class_Leds_matrix_set_alternate, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_matrix,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(alternate),
- }),
+ &be_ktab_class_Leds_matrix, /* shared constants */
&be_const_str_set_alternate,
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90021A01, // 0000 SETMBR R0 K13 R1
0x80000000, // 0001 RET 0
})
)
@@ -1563,18 +852,17 @@ be_local_closure(class_Leds_matrix_set_alternate, /* name */
/********************************************************************
** Solidified function: begin
********************************************************************/
-extern const bclass be_class_Leds_matrix;
be_local_closure(class_Leds_matrix_begin, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_matrix,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Leds_matrix, /* shared constants */
&be_const_str_begin,
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -1588,26 +876,22 @@ be_local_closure(class_Leds_matrix_begin, /* name */
/********************************************************************
** Solidified function: pixel_count
********************************************************************/
-extern const bclass be_class_Leds_matrix;
be_local_closure(class_Leds_matrix_pixel_count, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_matrix,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(w),
- /* K1 */ be_nested_str(h),
- }),
+ &be_ktab_class_Leds_matrix, /* shared constants */
&be_const_str_pixel_count,
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x88040105, // 0000 GETMBR R1 R0 K5
+ 0x88080106, // 0001 GETMBR R2 R0 K6
0x08040202, // 0002 MUL R1 R1 R2
0x80040200, // 0003 RET 1 R1
})
@@ -1619,24 +903,21 @@ be_local_closure(class_Leds_matrix_pixel_count, /* name */
/********************************************************************
** Solidified function: get_alternate
********************************************************************/
-extern const bclass be_class_Leds_matrix;
be_local_closure(class_Leds_matrix_get_alternate, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_matrix,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(alternate),
- }),
+ &be_ktab_class_Leds_matrix, /* shared constants */
&be_const_str_get_alternate,
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804010D, // 0000 GETMBR R1 R0 K13
0x80040200, // 0001 RET 1 R1
})
)
@@ -1647,24 +928,21 @@ be_local_closure(class_Leds_matrix_get_alternate, /* name */
/********************************************************************
** Solidified function: pixel_offset
********************************************************************/
-extern const bclass be_class_Leds_matrix;
be_local_closure(class_Leds_matrix_pixel_offset, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_matrix,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(offset),
- }),
+ &be_ktab_class_Leds_matrix, /* shared constants */
&be_const_str_pixel_offset,
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040104, // 0000 GETMBR R1 R0 K4
0x80040200, // 0001 RET 1 R1
})
)
@@ -1675,26 +953,22 @@ be_local_closure(class_Leds_matrix_pixel_offset, /* name */
/********************************************************************
** Solidified function: can_show
********************************************************************/
-extern const bclass be_class_Leds_matrix;
be_local_closure(class_Leds_matrix_can_show, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_matrix,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(strip),
- /* K1 */ be_nested_str(can_show),
- }),
+ &be_ktab_class_Leds_matrix, /* shared constants */
&be_const_str_can_show,
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x8C040313, // 0001 GETMET R1 R1 K19
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -1706,38 +980,31 @@ be_local_closure(class_Leds_matrix_can_show, /* name */
/********************************************************************
** Solidified function: set_bytes
********************************************************************/
-extern const bclass be_class_Leds_matrix;
be_local_closure(class_Leds_matrix_set_bytes, /* name */
be_nested_proto(
13, /* nstack */
5, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_matrix,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str(h),
- /* K1 */ be_nested_str(pix_size),
- /* K2 */ be_nested_str(offset),
- /* K3 */ be_nested_str(pix_buffer),
- /* K4 */ be_nested_str(setbytes),
- }),
+ &be_ktab_class_Leds_matrix, /* shared constants */
&be_const_str_set_bytes,
&be_const_str_solidified,
( &(const binstruction[17]) { /* code */
- 0x88140100, // 0000 GETMBR R5 R0 K0
- 0x88180101, // 0001 GETMBR R6 R0 K1
+ 0x88140106, // 0000 GETMBR R5 R0 K6
+ 0x8818010C, // 0001 GETMBR R6 R0 K12
0x08140A06, // 0002 MUL R5 R5 R6
0x24180805, // 0003 GT R6 R4 R5
0x781A0000, // 0004 JMPF R6 #0006
0x5C100A00, // 0005 MOVE R4 R5
- 0x88180102, // 0006 GETMBR R6 R0 K2
+ 0x88180104, // 0006 GETMBR R6 R0 K4
0x00180C01, // 0007 ADD R6 R6 R1
0x08180C05, // 0008 MUL R6 R6 R5
- 0x881C0103, // 0009 GETMBR R7 R0 K3
- 0x8C1C0F04, // 000A GETMET R7 R7 K4
+ 0x881C010A, // 0009 GETMBR R7 R0 K10
+ 0x8C1C0F14, // 000A GETMET R7 R7 K20
0x5C240C00, // 000B MOVE R9 R6
0x5C280400, // 000C MOVE R10 R2
0x5C2C0600, // 000D MOVE R11 R3
@@ -1753,28 +1020,23 @@ be_local_closure(class_Leds_matrix_set_bytes, /* name */
/********************************************************************
** Solidified function: get_pixel_color
********************************************************************/
-extern const bclass be_class_Leds_matrix;
be_local_closure(class_Leds_matrix_get_pixel_color, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_matrix,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(strip),
- /* K1 */ be_nested_str(get_pixel_color),
- /* K2 */ be_nested_str(offseta),
- }),
+ &be_ktab_class_Leds_matrix, /* shared constants */
&be_const_str_get_pixel_color,
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x88100102, // 0002 GETMBR R4 R0 K2
+ 0x8C080515, // 0001 GETMET R2 R2 K21
+ 0x88100116, // 0002 GETMBR R4 R0 K22
0x00100204, // 0003 ADD R4 R1 R4
0x7C080400, // 0004 CALL R2 2
0x80040400, // 0005 RET 1 R2
@@ -1787,29 +1049,24 @@ be_local_closure(class_Leds_matrix_get_pixel_color, /* name */
/********************************************************************
** Solidified function: clear
********************************************************************/
-extern const bclass be_class_Leds_matrix;
be_local_closure(class_Leds_matrix_clear, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds_matrix,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(clear_to),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(show),
- }),
+ &be_ktab_class_Leds_matrix, /* shared constants */
&be_const_str_clear,
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x580C0001, // 0001 LDCONST R3 K1
+ 0x8C040117, // 0000 GETMET R1 R0 K23
+ 0x580C0007, // 0001 LDCONST R3 K7
0x7C040400, // 0002 CALL R1 2
- 0x8C040102, // 0003 GETMET R1 R0 K2
+ 0x8C040109, // 0003 GETMET R1 R0 K9
0x7C040200, // 0004 CALL R1 1
0x80000000, // 0005 RET 0
})
@@ -1854,28 +1111,622 @@ be_local_class(Leds_matrix,
})),
(bstring*) &be_const_str_Leds_matrix
);
+// compact class 'Leds' ktab size: 43, total: 83 (saved 320 bytes)
+static const bvalue be_ktab_class_Leds[43] = {
+ /* K0 */ be_nested_str(leds),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str(value_error),
+ /* K3 */ be_nested_str(out_X20of_X20range),
+ /* K4 */ be_const_class(be_class_Leds_segment),
+ /* K5 */ be_nested_str(bri),
+ /* K6 */ be_nested_str(call_native),
+ /* K7 */ be_const_int(1),
+ /* K8 */ be_nested_str(clear_to),
+ /* K9 */ be_nested_str(show),
+ /* K10 */ be_nested_str(gpio),
+ /* K11 */ be_nested_str(gamma),
+ /* K12 */ be_nested_str(pin),
+ /* K13 */ be_nested_str(WS2812),
+ /* K14 */ be_nested_str(ctor),
+ /* K15 */ be_nested_str(pixel_count),
+ /* K16 */ be_nested_str(light),
+ /* K17 */ be_nested_str(get),
+ /* K18 */ be_nested_str(_p),
+ /* K19 */ be_nested_str(internal_error),
+ /* K20 */ be_nested_str(couldn_X27t_X20not_X20initialize_X20noepixelbus),
+ /* K21 */ be_nested_str(begin),
+ /* K22 */ be_nested_str(apply_bri_gamma),
+ /* K23 */ be_const_int(2),
+ /* K24 */ be_const_class(be_class_Leds),
+ /* K25 */ be_nested_str(Leds),
+ /* K26 */ be_nested_str(create_matrix),
+ /* K27 */ be_nested_str(to_gamma),
+ /* K28 */ be_const_class(be_class_Leds_matrix),
+ /* K29 */ be_const_int(3),
+ /* K30 */ be_nested_str(invalid_X20GPIO_X20number),
+ /* K31 */ be_nested_str(global),
+ /* K32 */ be_nested_str(contains),
+ /* K33 */ be_nested_str(_rmt),
+ /* K34 */ be_nested_str(MAX_RMT),
+ /* K35 */ be_nested_str(push),
+ /* K36 */ be_nested_str(stop_iteration),
+ /* K37 */ be_nested_str(pin_used),
+ /* K38 */ be_nested_str(no_X20more_X20RMT_X20channel_X20available),
+ /* K39 */ be_nested_str(WS2812_GRB),
+ /* K40 */ be_nested_str(assign_rmt),
+ /* K41 */ be_nested_str(pixel_size),
+ /* K42 */ be_nested_str(_change_buffer),
+};
+
+
+extern const bclass be_class_Leds;
+
+/********************************************************************
+** Solidified function: create_segment
+********************************************************************/
+be_local_closure(class_Leds_create_segment, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Leds, /* shared constants */
+ &be_const_str_create_segment,
+ &be_const_str_solidified,
+ ( &(const binstruction[23]) { /* code */
+ 0x600C0009, // 0000 GETGBL R3 G9
+ 0x5C100200, // 0001 MOVE R4 R1
+ 0x7C0C0200, // 0002 CALL R3 1
+ 0x60100009, // 0003 GETGBL R4 G9
+ 0x5C140400, // 0004 MOVE R5 R2
+ 0x7C100200, // 0005 CALL R4 1
+ 0x000C0604, // 0006 ADD R3 R3 R4
+ 0x88100100, // 0007 GETMBR R4 R0 K0
+ 0x240C0604, // 0008 GT R3 R3 R4
+ 0x740E0003, // 0009 JMPT R3 #000E
+ 0x140C0301, // 000A LT R3 R1 K1
+ 0x740E0001, // 000B JMPT R3 #000E
+ 0x140C0501, // 000C LT R3 R2 K1
+ 0x780E0000, // 000D JMPF R3 #000F
+ 0xB0060503, // 000E RAISE 1 K2 K3
+ 0x580C0004, // 000F LDCONST R3 K4
+ 0xB4000004, // 0010 CLASS K4
+ 0x5C100600, // 0011 MOVE R4 R3
+ 0x5C140000, // 0012 MOVE R5 R0
+ 0x5C180200, // 0013 MOVE R6 R1
+ 0x5C1C0400, // 0014 MOVE R7 R2
+ 0x7C100600, // 0015 CALL R4 3
+ 0x80040800, // 0016 RET 1 R4
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_bri
+********************************************************************/
+be_local_closure(class_Leds_set_bri, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Leds, /* shared constants */
+ &be_const_str_set_bri,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0x14080301, // 0000 LT R2 R1 K1
+ 0x780A0000, // 0001 JMPF R2 #0003
+ 0x58040001, // 0002 LDCONST R1 K1
+ 0x540A00FE, // 0003 LDINT R2 255
+ 0x24080202, // 0004 GT R2 R1 R2
+ 0x780A0000, // 0005 JMPF R2 #0007
+ 0x540600FE, // 0006 LDINT R1 255
+ 0x90020A01, // 0007 SETMBR R0 K5 R1
+ 0x80000000, // 0008 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: begin
+********************************************************************/
+be_local_closure(class_Leds_begin, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Leds, /* shared constants */
+ &be_const_str_begin,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8C040106, // 0000 GETMET R1 R0 K6
+ 0x580C0007, // 0001 LDCONST R3 K7
+ 0x7C040400, // 0002 CALL R1 2
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: clear
+********************************************************************/
+be_local_closure(class_Leds_clear, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Leds, /* shared constants */
+ &be_const_str_clear,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 6]) { /* code */
+ 0x8C040108, // 0000 GETMET R1 R0 K8
+ 0x580C0001, // 0001 LDCONST R3 K1
+ 0x7C040400, // 0002 CALL R1 2
+ 0x8C040109, // 0003 GETMET R1 R0 K9
+ 0x7C040200, // 0004 CALL R1 1
+ 0x80000000, // 0005 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_Leds_init, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 5, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Leds, /* shared constants */
+ &be_const_str_init,
+ &be_const_str_solidified,
+ ( &(const binstruction[43]) { /* code */
+ 0xA4161400, // 0000 IMPORT R5 K10
+ 0x50180200, // 0001 LDBOOL R6 1 0
+ 0x90021606, // 0002 SETMBR R0 K11 R6
+ 0x4C180000, // 0003 LDNIL R6
+ 0x1C180406, // 0004 EQ R6 R2 R6
+ 0x741A0005, // 0005 JMPT R6 #000C
+ 0x8C180B0C, // 0006 GETMET R6 R5 K12
+ 0x88200B0D, // 0007 GETMBR R8 R5 K13
+ 0x58240001, // 0008 LDCONST R9 K1
+ 0x7C180600, // 0009 CALL R6 3
+ 0x1C180406, // 000A EQ R6 R2 R6
+ 0x781A000A, // 000B JMPF R6 #0017
+ 0x8C18010E, // 000C GETMET R6 R0 K14
+ 0x7C180200, // 000D CALL R6 1
+ 0x8C18010F, // 000E GETMET R6 R0 K15
+ 0x7C180200, // 000F CALL R6 1
+ 0x90020006, // 0010 SETMBR R0 K0 R6
+ 0xA41A2000, // 0011 IMPORT R6 K16
+ 0x8C1C0D11, // 0012 GETMET R7 R6 K17
+ 0x7C1C0200, // 0013 CALL R7 1
+ 0x941C0F05, // 0014 GETIDX R7 R7 K5
+ 0x90020A07, // 0015 SETMBR R0 K5 R7
+ 0x7002000B, // 0016 JMP #0023
+ 0x60180009, // 0017 GETGBL R6 G9
+ 0x5C1C0200, // 0018 MOVE R7 R1
+ 0x7C180200, // 0019 CALL R6 1
+ 0x90020006, // 001A SETMBR R0 K0 R6
+ 0x541A007E, // 001B LDINT R6 127
+ 0x90020A06, // 001C SETMBR R0 K5 R6
+ 0x8C18010E, // 001D GETMET R6 R0 K14
+ 0x88200100, // 001E GETMBR R8 R0 K0
+ 0x5C240400, // 001F MOVE R9 R2
+ 0x5C280600, // 0020 MOVE R10 R3
+ 0x5C2C0800, // 0021 MOVE R11 R4
+ 0x7C180A00, // 0022 CALL R6 5
+ 0x88180112, // 0023 GETMBR R6 R0 K18
+ 0x4C1C0000, // 0024 LDNIL R7
+ 0x1C180C07, // 0025 EQ R6 R6 R7
+ 0x781A0000, // 0026 JMPF R6 #0028
+ 0xB0062714, // 0027 RAISE 1 K19 K20
+ 0x8C180115, // 0028 GETMET R6 R0 K21
+ 0x7C180200, // 0029 CALL R6 1
+ 0x80000000, // 002A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: to_gamma
+********************************************************************/
+be_local_closure(class_Leds_to_gamma, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Leds, /* shared constants */
+ &be_const_str_to_gamma,
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x4C0C0000, // 0000 LDNIL R3
+ 0x1C0C0403, // 0001 EQ R3 R2 R3
+ 0x780E0000, // 0002 JMPF R3 #0004
+ 0x88080105, // 0003 GETMBR R2 R0 K5
+ 0x8C0C0116, // 0004 GETMET R3 R0 K22
+ 0x5C140200, // 0005 MOVE R5 R1
+ 0x5C180400, // 0006 MOVE R6 R2
+ 0x881C010B, // 0007 GETMBR R7 R0 K11
+ 0x7C0C0800, // 0008 CALL R3 4
+ 0x80040600, // 0009 RET 1 R3
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: show
+********************************************************************/
+be_local_closure(class_Leds_show, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Leds, /* shared constants */
+ &be_const_str_show,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8C040106, // 0000 GETMET R1 R0 K6
+ 0x580C0017, // 0001 LDCONST R3 K23
+ 0x7C040400, // 0002 CALL R1 2
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: pixel_count
+********************************************************************/
+be_local_closure(class_Leds_pixel_count, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Leds, /* shared constants */
+ &be_const_str_pixel_count,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8C040106, // 0000 GETMET R1 R0 K6
+ 0x540E0007, // 0001 LDINT R3 8
+ 0x7C040400, // 0002 CALL R1 2
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_bri
+********************************************************************/
+be_local_closure(class_Leds_get_bri, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Leds, /* shared constants */
+ &be_const_str_get_bri,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 2]) { /* code */
+ 0x88040105, // 0000 GETMBR R1 R0 K5
+ 0x80040200, // 0001 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_gamma
+********************************************************************/
+be_local_closure(class_Leds_set_gamma, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Leds, /* shared constants */
+ &be_const_str_set_gamma,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x60080017, // 0000 GETGBL R2 G23
+ 0x5C0C0200, // 0001 MOVE R3 R1
+ 0x7C080200, // 0002 CALL R2 1
+ 0x90021602, // 0003 SETMBR R0 K11 R2
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: get_pixel_color
+********************************************************************/
+be_local_closure(class_Leds_get_pixel_color, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Leds, /* shared constants */
+ &be_const_str_get_pixel_color,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x8C080106, // 0000 GETMET R2 R0 K6
+ 0x5412000A, // 0001 LDINT R4 11
+ 0x5C140200, // 0002 MOVE R5 R1
+ 0x7C080600, // 0003 CALL R2 3
+ 0x80040400, // 0004 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: dirty
+********************************************************************/
+be_local_closure(class_Leds_dirty, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Leds, /* shared constants */
+ &be_const_str_dirty,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8C040106, // 0000 GETMET R1 R0 K6
+ 0x540E0004, // 0001 LDINT R3 5
+ 0x7C040400, // 0002 CALL R1 2
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: matrix
+********************************************************************/
+be_local_closure(class_Leds_matrix, /* name */
+ be_nested_proto(
+ 11, /* nstack */
+ 4, /* argc */
+ 12, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Leds, /* shared constants */
+ &be_const_str_matrix,
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0x58100018, // 0000 LDCONST R4 K24
+ 0xB8163200, // 0001 GETNGBL R5 K25
+ 0x08180001, // 0002 MUL R6 R0 R1
+ 0x5C1C0400, // 0003 MOVE R7 R2
+ 0x5C200600, // 0004 MOVE R8 R3
+ 0x7C140600, // 0005 CALL R5 3
+ 0x8C180B1A, // 0006 GETMET R6 R5 K26
+ 0x5C200000, // 0007 MOVE R8 R0
+ 0x5C240200, // 0008 MOVE R9 R1
+ 0x58280001, // 0009 LDCONST R10 K1
+ 0x7C180800, // 000A CALL R6 4
+ 0x80040C00, // 000B RET 1 R6
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: pixel_offset
+********************************************************************/
+be_local_closure(class_Leds_pixel_offset, /* name */
+ be_nested_proto(
+ 1, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Leds, /* shared constants */
+ &be_const_str_pixel_offset,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 1]) { /* code */
+ 0x80060200, // 0000 RET 1 K1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: clear_to
+********************************************************************/
+be_local_closure(class_Leds_clear_to, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Leds, /* shared constants */
+ &be_const_str_clear_to,
+ &be_const_str_solidified,
+ ( &(const binstruction[12]) { /* code */
+ 0x4C0C0000, // 0000 LDNIL R3
+ 0x1C0C0403, // 0001 EQ R3 R2 R3
+ 0x780E0000, // 0002 JMPF R3 #0004
+ 0x88080105, // 0003 GETMBR R2 R0 K5
+ 0x8C0C0106, // 0004 GETMET R3 R0 K6
+ 0x54160008, // 0005 LDINT R5 9
+ 0x8C18011B, // 0006 GETMET R6 R0 K27
+ 0x5C200200, // 0007 MOVE R8 R1
+ 0x5C240400, // 0008 MOVE R9 R2
+ 0x7C180600, // 0009 CALL R6 3
+ 0x7C0C0600, // 000A CALL R3 3
+ 0x80000000, // 000B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_pixel_color
+********************************************************************/
+be_local_closure(class_Leds_set_pixel_color, /* name */
+ be_nested_proto(
+ 12, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Leds, /* shared constants */
+ &be_const_str_set_pixel_color,
+ &be_const_str_solidified,
+ ( &(const binstruction[13]) { /* code */
+ 0x4C100000, // 0000 LDNIL R4
+ 0x1C100604, // 0001 EQ R4 R3 R4
+ 0x78120000, // 0002 JMPF R4 #0004
+ 0x880C0105, // 0003 GETMBR R3 R0 K5
+ 0x8C100106, // 0004 GETMET R4 R0 K6
+ 0x541A0009, // 0005 LDINT R6 10
+ 0x5C1C0200, // 0006 MOVE R7 R1
+ 0x8C20011B, // 0007 GETMET R8 R0 K27
+ 0x5C280400, // 0008 MOVE R10 R2
+ 0x5C2C0600, // 0009 MOVE R11 R3
+ 0x7C200600, // 000A CALL R8 3
+ 0x7C100800, // 000B CALL R4 4
+ 0x80000000, // 000C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: pixel_size
+********************************************************************/
+be_local_closure(class_Leds_pixel_size, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Leds, /* shared constants */
+ &be_const_str_pixel_size,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x8C040106, // 0000 GETMET R1 R0 K6
+ 0x540E0006, // 0001 LDINT R3 7
+ 0x7C040400, // 0002 CALL R1 2
+ 0x80040200, // 0003 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
/********************************************************************
** Solidified function: create_matrix
********************************************************************/
-extern const bclass be_class_Leds;
be_local_closure(class_Leds_create_matrix, /* name */
be_nested_proto(
10, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str(leds),
- /* K2 */ be_nested_str(value_error),
- /* K3 */ be_nested_str(out_X20of_X20range),
- /* K4 */ be_const_class(be_class_Leds_matrix),
- }),
+ &be_ktab_class_Leds, /* shared constants */
&be_const_str_create_matrix,
&be_const_str_solidified,
( &(const binstruction[37]) { /* code */
@@ -1894,21 +1745,21 @@ be_local_closure(class_Leds_create_matrix, /* name */
0x4C100000, // 000C LDNIL R4
0x1C100604, // 000D EQ R4 R3 R4
0x78120000, // 000E JMPF R4 #0010
- 0x580C0000, // 000F LDCONST R3 K0
+ 0x580C0001, // 000F LDCONST R3 K1
0x08100202, // 0010 MUL R4 R1 R2
0x00100803, // 0011 ADD R4 R4 R3
- 0x88140101, // 0012 GETMBR R5 R0 K1
+ 0x88140100, // 0012 GETMBR R5 R0 K0
0x24100805, // 0013 GT R4 R4 R5
0x74120005, // 0014 JMPT R4 #001B
- 0x14100500, // 0015 LT R4 R2 K0
+ 0x14100501, // 0015 LT R4 R2 K1
0x74120003, // 0016 JMPT R4 #001B
- 0x14100300, // 0017 LT R4 R1 K0
+ 0x14100301, // 0017 LT R4 R1 K1
0x74120001, // 0018 JMPT R4 #001B
- 0x14100700, // 0019 LT R4 R3 K0
+ 0x14100701, // 0019 LT R4 R3 K1
0x78120000, // 001A JMPF R4 #001C
0xB0060503, // 001B RAISE 1 K2 K3
- 0x58100004, // 001C LDCONST R4 K4
- 0xB4000004, // 001D CLASS K4
+ 0x5810001C, // 001C LDCONST R4 K28
+ 0xB400001C, // 001D CLASS K28
0x5C140800, // 001E MOVE R5 R4
0x5C180000, // 001F MOVE R6 R0
0x5C1C0200, // 0020 MOVE R7 R1
@@ -1925,24 +1776,21 @@ be_local_closure(class_Leds_create_matrix, /* name */
/********************************************************************
** Solidified function: get_gamma
********************************************************************/
-extern const bclass be_class_Leds;
be_local_closure(class_Leds_get_gamma, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(gamma),
- }),
+ &be_ktab_class_Leds, /* shared constants */
&be_const_str_get_gamma,
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804010B, // 0000 GETMBR R1 R0 K11
0x80040200, // 0001 RET 1 R1
})
)
@@ -1953,24 +1801,21 @@ be_local_closure(class_Leds_get_gamma, /* name */
/********************************************************************
** Solidified function: is_dirty
********************************************************************/
-extern const bclass be_class_Leds;
be_local_closure(class_Leds_is_dirty, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(call_native),
- }),
+ &be_ktab_class_Leds, /* shared constants */
&be_const_str_is_dirty,
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040106, // 0000 GETMET R1 R0 K6
0x540E0003, // 0001 LDINT R3 4
0x7C040400, // 0002 CALL R1 2
0x80040200, // 0003 RET 1 R1
@@ -1983,26 +1828,22 @@ be_local_closure(class_Leds_is_dirty, /* name */
/********************************************************************
** Solidified function: can_show
********************************************************************/
-extern const bclass be_class_Leds;
be_local_closure(class_Leds_can_show, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(call_native),
- /* K1 */ be_const_int(3),
- }),
+ &be_ktab_class_Leds, /* shared constants */
&be_const_str_can_show,
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
- 0x580C0001, // 0001 LDCONST R3 K1
+ 0x8C040106, // 0000 GETMET R1 R0 K6
+ 0x580C001D, // 0001 LDCONST R3 K29
0x7C040400, // 0002 CALL R1 2
0x80040200, // 0003 RET 1 R1
})
@@ -2014,92 +1855,73 @@ be_local_closure(class_Leds_can_show, /* name */
/********************************************************************
** Solidified function: assign_rmt
********************************************************************/
-extern const bclass be_class_Leds;
be_local_closure(class_Leds_assign_rmt, /* name */
be_nested_proto(
9, /* nstack */
1, /* argc */
- 4, /* varg */
+ 12, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_const_class(be_class_Leds),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(value_error),
- /* K3 */ be_nested_str(invalid_X20GPIO_X20number),
- /* K4 */ be_nested_str(global),
- /* K5 */ be_nested_str(contains),
- /* K6 */ be_nested_str(_rmt),
- /* K7 */ be_nested_str(gpio),
- /* K8 */ be_nested_str(MAX_RMT),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str(push),
- /* K11 */ be_nested_str(stop_iteration),
- /* K12 */ be_nested_str(pin_used),
- /* K13 */ be_nested_str(WS2812),
- /* K14 */ be_nested_str(pin),
- /* K15 */ be_nested_str(internal_error),
- /* K16 */ be_nested_str(no_X20more_X20RMT_X20channel_X20available),
- }),
+ &be_ktab_class_Leds, /* shared constants */
&be_const_str_assign_rmt,
&be_const_str_solidified,
( &(const binstruction[72]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
+ 0x58040018, // 0000 LDCONST R1 K24
0x60080009, // 0001 GETGBL R2 G9
0x5C0C0000, // 0002 MOVE R3 R0
0x7C080200, // 0003 CALL R2 1
0x5C000400, // 0004 MOVE R0 R2
0x14080101, // 0005 LT R2 R0 K1
0x780A0000, // 0006 JMPF R2 #0008
- 0xB0060503, // 0007 RAISE 1 K2 K3
- 0xA40A0800, // 0008 IMPORT R2 K4
+ 0xB006051E, // 0007 RAISE 1 K2 K30
+ 0xA40A3E00, // 0008 IMPORT R2 K31
0x4C0C0000, // 0009 LDNIL R3
- 0x8C100505, // 000A GETMET R4 R2 K5
- 0x58180006, // 000B LDCONST R6 K6
+ 0x8C100520, // 000A GETMET R4 R2 K32
+ 0x58180021, // 000B LDCONST R6 K33
0x7C100400, // 000C CALL R4 2
0x74120021, // 000D JMPT R4 #0030
0x60100012, // 000E GETGBL R4 G18
0x7C100000, // 000F CALL R4 0
0x5C0C0800, // 0010 MOVE R3 R4
- 0x900A0C03, // 0011 SETMBR R2 K6 R3
+ 0x900A4203, // 0011 SETMBR R2 K33 R3
0x60100010, // 0012 GETGBL R4 G16
- 0xB8160E00, // 0013 GETNGBL R5 K7
- 0x88140B08, // 0014 GETMBR R5 R5 K8
- 0x04140B09, // 0015 SUB R5 R5 K9
+ 0xB8161400, // 0013 GETNGBL R5 K10
+ 0x88140B22, // 0014 GETMBR R5 R5 K34
+ 0x04140B07, // 0015 SUB R5 R5 K7
0x40160205, // 0016 CONNECT R5 K1 R5
0x7C100200, // 0017 CALL R4 1
0xA8020005, // 0018 EXBLK 0 #001F
0x5C140800, // 0019 MOVE R5 R4
0x7C140000, // 001A CALL R5 0
- 0x8C18070A, // 001B GETMET R6 R3 K10
+ 0x8C180723, // 001B GETMET R6 R3 K35
0x5421FFFE, // 001C LDINT R8 -1
0x7C180400, // 001D CALL R6 2
0x7001FFF9, // 001E JMP #0019
- 0x5810000B, // 001F LDCONST R4 K11
+ 0x58100024, // 001F LDCONST R4 K36
0xAC100200, // 0020 CATCH R4 1 0
0xB0080000, // 0021 RAISE 2 R0 R0
- 0xB8120E00, // 0022 GETNGBL R4 K7
- 0x8C10090C, // 0023 GETMET R4 R4 K12
- 0xB81A0E00, // 0024 GETNGBL R6 K7
+ 0xB8121400, // 0022 GETNGBL R4 K10
+ 0x8C100925, // 0023 GETMET R4 R4 K37
+ 0xB81A1400, // 0024 GETNGBL R6 K10
0x88180D0D, // 0025 GETMBR R6 R6 K13
0x581C0001, // 0026 LDCONST R7 K1
0x7C100600, // 0027 CALL R4 3
0x78120006, // 0028 JMPF R4 #0030
- 0xB8120E00, // 0029 GETNGBL R4 K7
- 0x8C10090E, // 002A GETMET R4 R4 K14
- 0xB81A0E00, // 002B GETNGBL R6 K7
+ 0xB8121400, // 0029 GETNGBL R4 K10
+ 0x8C10090C, // 002A GETMET R4 R4 K12
+ 0xB81A1400, // 002B GETNGBL R6 K10
0x88180D0D, // 002C GETMBR R6 R6 K13
0x581C0001, // 002D LDCONST R7 K1
0x7C100600, // 002E CALL R4 3
0x980E0204, // 002F SETIDX R3 K1 R4
- 0x880C0506, // 0030 GETMBR R3 R2 K6
+ 0x880C0521, // 0030 GETMBR R3 R2 K33
0x58100001, // 0031 LDCONST R4 K1
0x5415FFFE, // 0032 LDINT R5 -1
- 0xB81A0E00, // 0033 GETNGBL R6 K7
- 0x88180D08, // 0034 GETMBR R6 R6 K8
+ 0xB81A1400, // 0033 GETNGBL R6 K10
+ 0x88180D22, // 0034 GETMBR R6 R6 K34
0x14180806, // 0035 LT R6 R4 R6
0x781A000A, // 0036 JMPF R6 #0042
0x94180604, // 0037 GETIDX R6 R3 R4
@@ -2111,13 +1933,13 @@ be_local_closure(class_Leds_assign_rmt, /* name */
0x141C0B01, // 003D LT R7 R5 K1
0x781E0000, // 003E JMPF R7 #0040
0x5C140800, // 003F MOVE R5 R4
- 0x00100909, // 0040 ADD R4 R4 K9
+ 0x00100907, // 0040 ADD R4 R4 K7
0x7001FFF0, // 0041 JMP #0033
0x28180B01, // 0042 GE R6 R5 K1
0x781A0001, // 0043 JMPF R6 #0046
0x980C0A00, // 0044 SETIDX R3 R5 R0
0x80040A00, // 0045 RET 1 R5
- 0xB0061F10, // 0046 RAISE 1 K15 K16
+ 0xB0062726, // 0046 RAISE 1 K19 K38
0x80000000, // 0047 RET 0
})
)
@@ -2128,45 +1950,39 @@ be_local_closure(class_Leds_assign_rmt, /* name */
/********************************************************************
** Solidified function: ctor
********************************************************************/
-extern const bclass be_class_Leds;
be_local_closure(class_Leds_ctor, /* name */
be_nested_proto(
12, /* nstack */
5, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str(call_native),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(WS2812_GRB),
- /* K3 */ be_nested_str(assign_rmt),
- }),
+ &be_ktab_class_Leds, /* shared constants */
&be_const_str_ctor,
&be_const_str_solidified,
( &(const binstruction[26]) { /* code */
0x4C140000, // 0000 LDNIL R5
0x1C140405, // 0001 EQ R5 R2 R5
0x78160003, // 0002 JMPF R5 #0007
- 0x8C140100, // 0003 GETMET R5 R0 K0
+ 0x8C140106, // 0003 GETMET R5 R0 K6
0x581C0001, // 0004 LDCONST R7 K1
0x7C140400, // 0005 CALL R5 2
0x70020011, // 0006 JMP #0019
0x4C140000, // 0007 LDNIL R5
0x1C140605, // 0008 EQ R5 R3 R5
0x78160000, // 0009 JMPF R5 #000B
- 0x880C0102, // 000A GETMBR R3 R0 K2
+ 0x880C0127, // 000A GETMBR R3 R0 K39
0x4C140000, // 000B LDNIL R5
0x1C140805, // 000C EQ R5 R4 R5
0x78160003, // 000D JMPF R5 #0012
- 0x8C140103, // 000E GETMET R5 R0 K3
+ 0x8C140128, // 000E GETMET R5 R0 K40
0x5C1C0400, // 000F MOVE R7 R2
0x7C140400, // 0010 CALL R5 2
0x5C100A00, // 0011 MOVE R4 R5
- 0x8C140100, // 0012 GETMET R5 R0 K0
+ 0x8C140106, // 0012 GETMET R5 R0 K6
0x581C0001, // 0013 LDCONST R7 K1
0x5C200200, // 0014 MOVE R8 R1
0x5C240400, // 0015 MOVE R9 R2
@@ -2183,27 +1999,21 @@ be_local_closure(class_Leds_ctor, /* name */
/********************************************************************
** Solidified function: pixels_buffer
********************************************************************/
-extern const bclass be_class_Leds;
be_local_closure(class_Leds_pixels_buffer, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Leds,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str(call_native),
- /* K1 */ be_nested_str(pixel_size),
- /* K2 */ be_nested_str(pixel_count),
- /* K3 */ be_nested_str(_change_buffer),
- }),
+ &be_ktab_class_Leds, /* shared constants */
&be_const_str_pixels_buffer,
&be_const_str_solidified,
( &(const binstruction[21]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C080106, // 0000 GETMET R2 R0 K6
0x54120005, // 0001 LDINT R4 6
0x7C080400, // 0002 CALL R2 2
0x4C0C0000, // 0003 LDNIL R3
@@ -2211,15 +2021,15 @@ be_local_closure(class_Leds_pixels_buffer, /* name */
0x780E0009, // 0005 JMPF R3 #0010
0x600C0015, // 0006 GETGBL R3 G21
0x5C100400, // 0007 MOVE R4 R2
- 0x8C140101, // 0008 GETMET R5 R0 K1
+ 0x8C140129, // 0008 GETMET R5 R0 K41
0x7C140200, // 0009 CALL R5 1
- 0x8C180102, // 000A GETMET R6 R0 K2
+ 0x8C18010F, // 000A GETMET R6 R0 K15
0x7C180200, // 000B CALL R6 1
0x08140A06, // 000C MUL R5 R5 R6
0x7C0C0400, // 000D CALL R3 2
0x80040600, // 000E RET 1 R3
0x70020003, // 000F JMP #0014
- 0x8C0C0303, // 0010 GETMET R3 R1 K3
+ 0x8C0C032A, // 0010 GETMET R3 R1 K42
0x5C140400, // 0011 MOVE R5 R2
0x7C0C0400, // 0012 CALL R3 2
0x80040200, // 0013 RET 1 R1
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota.h
index f3c777748..5d4d0254b 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota.h
@@ -15,7 +15,7 @@ be_local_closure(module_lv_tasmota_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[36]) { /* constants */
/* K0 */ be_nested_str_weak(lv),
@@ -121,27 +121,35 @@ be_local_closure(module_lv_tasmota_init, /* name */
);
/*******************************************************************/
+// compact class 'splash_runner' ktab size: 8, total: 9 (saved 8 bytes)
+static const bvalue be_ktab_class_splash_runner[8] = {
+ /* K0 */ be_nested_str_weak(tasmota),
+ /* K1 */ be_nested_str_weak(add_driver),
+ /* K2 */ be_nested_str_weak(display),
+ /* K3 */ be_nested_str_weak(dim),
+ /* K4 */ be_nested_str_weak(started),
+ /* K5 */ be_nested_str_weak(remove_driver),
+ /* K6 */ be_nested_str_weak(lv),
+ /* K7 */ be_nested_str_weak(splash),
+};
+
extern const bclass be_class_splash_runner;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_splash_runner;
be_local_closure(class_splash_runner_init, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_splash_runner,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(add_driver),
- }),
+ &be_ktab_class_splash_runner, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
@@ -159,41 +167,32 @@ be_local_closure(class_splash_runner_init, /* name */
/********************************************************************
** Solidified function: display
********************************************************************/
-extern const bclass be_class_splash_runner;
be_local_closure(class_splash_runner_display, /* name */
be_nested_proto(
9, /* nstack */
5, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_splash_runner,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(display),
- /* K1 */ be_nested_str_weak(dim),
- /* K2 */ be_nested_str_weak(started),
- /* K3 */ be_nested_str_weak(tasmota),
- /* K4 */ be_nested_str_weak(remove_driver),
- /* K5 */ be_nested_str_weak(lv),
- /* K6 */ be_nested_str_weak(splash),
- }),
+ &be_ktab_class_splash_runner, /* shared constants */
be_str_weak(display),
&be_const_str_solidified,
( &(const binstruction[14]) { /* code */
- 0xA4160000, // 0000 IMPORT R5 K0
- 0x1C180301, // 0001 EQ R6 R1 K1
+ 0xA4160400, // 0000 IMPORT R5 K2
+ 0x1C180303, // 0001 EQ R6 R1 K3
0x781A0009, // 0002 JMPF R6 #000D
- 0x8C180B02, // 0003 GETMET R6 R5 K2
+ 0x8C180B04, // 0003 GETMET R6 R5 K4
0x7C180200, // 0004 CALL R6 1
0x781A0006, // 0005 JMPF R6 #000D
- 0xB81A0600, // 0006 GETNGBL R6 K3
- 0x8C180D04, // 0007 GETMET R6 R6 K4
+ 0xB81A0000, // 0006 GETNGBL R6 K0
+ 0x8C180D05, // 0007 GETMET R6 R6 K5
0x5C200000, // 0008 MOVE R8 R0
0x7C180400, // 0009 CALL R6 2
- 0xB81A0A00, // 000A GETNGBL R6 K5
- 0x8C180D06, // 000B GETMET R6 R6 K6
+ 0xB81A0C00, // 000A GETNGBL R6 K6
+ 0x8C180D07, // 000B GETMET R6 R6 K7
0x7C180200, // 000C CALL R6 1
0x80000000, // 000D RET 0
})
@@ -227,7 +226,7 @@ be_local_closure(module_lv_tasmota_splash_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 5]) { /* constants */
/* K0 */ be_nested_str_weak(display),
@@ -269,7 +268,7 @@ be_local_closure(module_lv_tasmota_splash_remove, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str_weak(lv),
@@ -305,7 +304,7 @@ be_local_closure(module_lv_tasmota_splash, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[43]) { /* constants */
/* K0 */ be_nested_str_weak(display),
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h
index 2e91aeeb0..47dccd82f 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota_widgets.h
@@ -3,33 +3,54 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'lv_clock' ktab size: 27, total: 32 (saved 40 bytes)
+static const bvalue be_ktab_class_lv_clock[27] = {
+ /* K0 */ be_nested_str_weak(hour),
+ /* K1 */ be_nested_str_weak(minute),
+ /* K2 */ be_nested_str_weak(sec),
+ /* K3 */ be_nested_str_weak(_X2502d_X25s_X2502d),
+ /* K4 */ be_const_int(2),
+ /* K5 */ be_nested_str_weak(_X3A),
+ /* K6 */ be_nested_str_weak(_X20),
+ /* K7 */ be_nested_str_weak(set_text),
+ /* K8 */ be_nested_str_weak(tasmota),
+ /* K9 */ be_nested_str_weak(time_dump),
+ /* K10 */ be_nested_str_weak(rtc),
+ /* K11 */ be_nested_str_weak(local),
+ /* K12 */ be_nested_str_weak(year),
+ /* K13 */ be_nested_str_weak(set_time),
+ /* K14 */ be_nested_str_weak(min),
+ /* K15 */ be_nested_str_weak(init),
+ /* K16 */ be_nested_str_weak(lv),
+ /* K17 */ be_nested_str_weak(seg7_font),
+ /* K18 */ be_nested_str_weak(set_style_text_font),
+ /* K19 */ be_nested_str_weak(PART_MAIN),
+ /* K20 */ be_nested_str_weak(STATE_DEFAULT),
+ /* K21 */ be_nested_str_weak(_X2D_X2D_X3A_X2D_X2D),
+ /* K22 */ be_nested_str_weak(add_event_cb),
+ /* K23 */ be_nested_str_weak(EVENT_DELETE),
+ /* K24 */ be_const_int(0),
+ /* K25 */ be_nested_str_weak(add_driver),
+ /* K26 */ be_nested_str_weak(remove_driver),
+};
+
extern const bclass be_class_lv_clock;
/********************************************************************
** Solidified function: set_time
********************************************************************/
-extern const bclass be_class_lv_clock;
be_local_closure(class_lv_clock_set_time, /* name */
be_nested_proto(
9, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_clock,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(hour),
- /* K1 */ be_nested_str_weak(minute),
- /* K2 */ be_nested_str_weak(sec),
- /* K3 */ be_nested_str_weak(_X2502d_X25s_X2502d),
- /* K4 */ be_const_int(2),
- /* K5 */ be_nested_str_weak(_X3A),
- /* K6 */ be_nested_str_weak(_X20),
- /* K7 */ be_nested_str_weak(set_text),
- }),
+ &be_ktab_class_lv_clock, /* shared constants */
be_str_weak(set_time),
&be_const_str_solidified,
( &(const binstruction[26]) { /* code */
@@ -68,46 +89,35 @@ be_local_closure(class_lv_clock_set_time, /* name */
/********************************************************************
** Solidified function: every_second
********************************************************************/
-extern const bclass be_class_lv_clock;
be_local_closure(class_lv_clock_every_second, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_clock,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(time_dump),
- /* K2 */ be_nested_str_weak(rtc),
- /* K3 */ be_nested_str_weak(local),
- /* K4 */ be_nested_str_weak(year),
- /* K5 */ be_nested_str_weak(set_time),
- /* K6 */ be_nested_str_weak(hour),
- /* K7 */ be_nested_str_weak(min),
- /* K8 */ be_nested_str_weak(sec),
- }),
+ &be_ktab_class_lv_clock, /* shared constants */
be_str_weak(every_second),
&be_const_str_solidified,
( &(const binstruction[17]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0xB80E0000, // 0002 GETNGBL R3 K0
- 0x8C0C0702, // 0003 GETMET R3 R3 K2
+ 0xB8061000, // 0000 GETNGBL R1 K8
+ 0x8C040309, // 0001 GETMET R1 R1 K9
+ 0xB80E1000, // 0002 GETNGBL R3 K8
+ 0x8C0C070A, // 0003 GETMET R3 R3 K10
0x7C0C0200, // 0004 CALL R3 1
- 0x940C0703, // 0005 GETIDX R3 R3 K3
+ 0x940C070B, // 0005 GETIDX R3 R3 K11
0x7C040400, // 0006 CALL R1 2
- 0x94080304, // 0007 GETIDX R2 R1 K4
+ 0x9408030C, // 0007 GETIDX R2 R1 K12
0x540E07B1, // 0008 LDINT R3 1970
0x20080403, // 0009 NE R2 R2 R3
0x780A0004, // 000A JMPF R2 #0010
- 0x8C080105, // 000B GETMET R2 R0 K5
- 0x94100306, // 000C GETIDX R4 R1 K6
- 0x94140307, // 000D GETIDX R5 R1 K7
- 0x94180308, // 000E GETIDX R6 R1 K8
+ 0x8C08010D, // 000B GETMET R2 R0 K13
+ 0x94100300, // 000C GETIDX R4 R1 K0
+ 0x9414030E, // 000D GETIDX R5 R1 K14
+ 0x94180302, // 000E GETIDX R6 R1 K2
0x7C080800, // 000F CALL R2 4
0x80000000, // 0010 RET 0
})
@@ -119,16 +129,15 @@ be_local_closure(class_lv_clock_every_second, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_lv_clock;
be_local_closure(class_lv_clock_init, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
2, /* nstack */
0, /* argc */
@@ -138,7 +147,7 @@ be_local_closure(class_lv_clock_init, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(before_del),
@@ -152,59 +161,44 @@ be_local_closure(class_lv_clock_init, /* name */
0x80040000, // 0003 RET 1 R0
})
),
- &be_class_lv_clock,
}),
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(lv),
- /* K2 */ be_nested_str_weak(seg7_font),
- /* K3 */ be_nested_str_weak(set_style_text_font),
- /* K4 */ be_nested_str_weak(PART_MAIN),
- /* K5 */ be_nested_str_weak(STATE_DEFAULT),
- /* K6 */ be_nested_str_weak(set_text),
- /* K7 */ be_nested_str_weak(_X2D_X2D_X3A_X2D_X2D),
- /* K8 */ be_nested_str_weak(add_event_cb),
- /* K9 */ be_nested_str_weak(EVENT_DELETE),
- /* K10 */ be_const_int(0),
- /* K11 */ be_nested_str_weak(tasmota),
- /* K12 */ be_nested_str_weak(add_driver),
- }),
+ &be_ktab_class_lv_clock, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[36]) { /* code */
0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0
0x7C080200, // 0002 CALL R2 1
- 0x8C080500, // 0003 GETMET R2 R2 K0
+ 0x8C08050F, // 0003 GETMET R2 R2 K15
0x5C100200, // 0004 MOVE R4 R1
0x7C080400, // 0005 CALL R2 2
- 0xB80A0200, // 0006 GETNGBL R2 K1
- 0x8C080502, // 0007 GETMET R2 R2 K2
+ 0xB80A2000, // 0006 GETNGBL R2 K16
+ 0x8C080511, // 0007 GETMET R2 R2 K17
0x5412000F, // 0008 LDINT R4 16
0x7C080400, // 0009 CALL R2 2
0x4C0C0000, // 000A LDNIL R3
0x200C0403, // 000B NE R3 R2 R3
0x780E0007, // 000C JMPF R3 #0015
- 0x8C0C0103, // 000D GETMET R3 R0 K3
+ 0x8C0C0112, // 000D GETMET R3 R0 K18
0x5C140400, // 000E MOVE R5 R2
- 0xB81A0200, // 000F GETNGBL R6 K1
- 0x88180D04, // 0010 GETMBR R6 R6 K4
- 0xB81E0200, // 0011 GETNGBL R7 K1
- 0x881C0F05, // 0012 GETMBR R7 R7 K5
+ 0xB81A2000, // 000F GETNGBL R6 K16
+ 0x88180D13, // 0010 GETMBR R6 R6 K19
+ 0xB81E2000, // 0011 GETNGBL R7 K16
+ 0x881C0F14, // 0012 GETMBR R7 R7 K20
0x30180C07, // 0013 OR R6 R6 R7
0x7C0C0600, // 0014 CALL R3 3
- 0x8C0C0106, // 0015 GETMET R3 R0 K6
- 0x58140007, // 0016 LDCONST R5 K7
+ 0x8C0C0107, // 0015 GETMET R3 R0 K7
+ 0x58140015, // 0016 LDCONST R5 K21
0x7C0C0400, // 0017 CALL R3 2
- 0x8C0C0108, // 0018 GETMET R3 R0 K8
+ 0x8C0C0116, // 0018 GETMET R3 R0 K22
0x84140000, // 0019 CLOSURE R5 P0
- 0xB81A0200, // 001A GETNGBL R6 K1
- 0x88180D09, // 001B GETMBR R6 R6 K9
- 0x581C000A, // 001C LDCONST R7 K10
+ 0xB81A2000, // 001A GETNGBL R6 K16
+ 0x88180D17, // 001B GETMBR R6 R6 K23
+ 0x581C0018, // 001C LDCONST R7 K24
0x7C0C0800, // 001D CALL R3 4
- 0xB80E1600, // 001E GETNGBL R3 K11
- 0x8C0C070C, // 001F GETMET R3 R3 K12
+ 0xB80E1000, // 001E GETNGBL R3 K8
+ 0x8C0C0719, // 001F GETMET R3 R3 K25
0x5C140000, // 0020 MOVE R5 R0
0x7C0C0400, // 0021 CALL R3 2
0xA0000000, // 0022 CLOSE R0
@@ -218,26 +212,22 @@ be_local_closure(class_lv_clock_init, /* name */
/********************************************************************
** Solidified function: before_del
********************************************************************/
-extern const bclass be_class_lv_clock;
be_local_closure(class_lv_clock_before_del, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_clock,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(remove_driver),
- }),
+ &be_ktab_class_lv_clock, /* shared constants */
be_str_weak(before_del),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0xB8061000, // 0000 GETNGBL R1 K8
+ 0x8C04031A, // 0001 GETMET R1 R1 K26
0x5C0C0000, // 0002 MOVE R3 R0
0x7C040400, // 0003 CALL R1 2
0x80000000, // 0004 RET 0
@@ -272,7 +262,6 @@ extern const bclass be_class_lv_clock_icon;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_lv_clock_icon;
be_local_closure(class_lv_clock_icon_init, /* name */
be_nested_proto(
10, /* nstack */
@@ -281,7 +270,7 @@ be_local_closure(class_lv_clock_icon_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_clock_icon,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[16]) { /* constants */
/* K0 */ be_nested_str_weak(init),
@@ -383,22 +372,68 @@ be_local_class(lv_clock_icon,
})),
be_str_weak(lv_clock_icon)
);
+// compact class 'lv_signal_arcs' ktab size: 43, total: 52 (saved 72 bytes)
+static const bvalue be_ktab_class_lv_signal_arcs[43] = {
+ /* K0 */ be_nested_str_weak(get_code),
+ /* K1 */ be_nested_str_weak(math),
+ /* K2 */ be_nested_str_weak(get_height),
+ /* K3 */ be_nested_str_weak(get_width),
+ /* K4 */ be_const_int(2),
+ /* K5 */ be_const_int(3),
+ /* K6 */ be_nested_str_weak(lv),
+ /* K7 */ be_nested_str_weak(EVENT_DRAW_MAIN),
+ /* K8 */ be_nested_str_weak(arc_dsc),
+ /* K9 */ be_nested_str_weak(get_param),
+ /* K10 */ be_nested_str_weak(get_layer),
+ /* K11 */ be_nested_str_weak(get_coords),
+ /* K12 */ be_nested_str_weak(area),
+ /* K13 */ be_nested_str_weak(x1),
+ /* K14 */ be_nested_str_weak(y1),
+ /* K15 */ be_nested_str_weak(draw_arc_dsc_init),
+ /* K16 */ be_nested_str_weak(init_draw_arc_dsc),
+ /* K17 */ be_nested_str_weak(PART_MAIN),
+ /* K18 */ be_nested_str_weak(rounded),
+ /* K19 */ be_const_int(1),
+ /* K20 */ be_nested_str_weak(width),
+ /* K21 */ be_nested_str_weak(get_style_line_color),
+ /* K22 */ be_nested_str_weak(STATE_DEFAULT),
+ /* K23 */ be_nested_str_weak(get_style_bg_color),
+ /* K24 */ be_nested_str_weak(deg),
+ /* K25 */ be_nested_str_weak(acos),
+ /* K26 */ be_nested_str_weak(center_x),
+ /* K27 */ be_nested_str_weak(center_y),
+ /* K28 */ be_nested_str_weak(color),
+ /* K29 */ be_nested_str_weak(percentage),
+ /* K30 */ be_nested_str_weak(radius),
+ /* K31 */ be_const_int(0),
+ /* K32 */ be_nested_str_weak(start_angle),
+ /* K33 */ be_nested_str_weak(end_angle),
+ /* K34 */ be_nested_str_weak(draw_arc),
+ /* K35 */ be_nested_str_weak(init),
+ /* K36 */ be_nested_str_weak(set_style_bg_opa),
+ /* K37 */ be_nested_str_weak(set_style_border_width),
+ /* K38 */ be_nested_str_weak(set_style_pad_all),
+ /* K39 */ be_nested_str_weak(draw_arc_dsc),
+ /* K40 */ be_nested_str_weak(add_event_cb),
+ /* K41 */ be_nested_str_weak(widget_event),
+ /* K42 */ be_nested_str_weak(invalidate),
+};
+
extern const bclass be_class_lv_signal_arcs;
/********************************************************************
** Solidified function: widget_event
********************************************************************/
-extern const bclass be_class_lv_signal_arcs;
be_local_closure(class_lv_signal_arcs_widget_event, /* name */
be_nested_proto(
28, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
2, /* nstack */
1, /* argc */
@@ -406,7 +441,7 @@ be_local_closure(class_lv_signal_arcs_widget_event, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_const_int(1),
@@ -422,46 +457,9 @@ be_local_closure(class_lv_signal_arcs_widget_event, /* name */
0x80000000, // 0005 RET 0
})
),
- &be_class_lv_signal_arcs,
}),
1, /* has constants */
- ( &(const bvalue[35]) { /* constants */
- /* K0 */ be_nested_str_weak(get_code),
- /* K1 */ be_nested_str_weak(math),
- /* K2 */ be_nested_str_weak(get_height),
- /* K3 */ be_nested_str_weak(get_width),
- /* K4 */ be_const_int(2),
- /* K5 */ be_const_int(3),
- /* K6 */ be_nested_str_weak(lv),
- /* K7 */ be_nested_str_weak(EVENT_DRAW_MAIN),
- /* K8 */ be_nested_str_weak(arc_dsc),
- /* K9 */ be_nested_str_weak(get_param),
- /* K10 */ be_nested_str_weak(get_layer),
- /* K11 */ be_nested_str_weak(get_coords),
- /* K12 */ be_nested_str_weak(area),
- /* K13 */ be_nested_str_weak(x1),
- /* K14 */ be_nested_str_weak(y1),
- /* K15 */ be_nested_str_weak(draw_arc_dsc_init),
- /* K16 */ be_nested_str_weak(init_draw_arc_dsc),
- /* K17 */ be_nested_str_weak(PART_MAIN),
- /* K18 */ be_nested_str_weak(rounded),
- /* K19 */ be_const_int(1),
- /* K20 */ be_nested_str_weak(width),
- /* K21 */ be_nested_str_weak(get_style_line_color),
- /* K22 */ be_nested_str_weak(STATE_DEFAULT),
- /* K23 */ be_nested_str_weak(get_style_bg_color),
- /* K24 */ be_nested_str_weak(deg),
- /* K25 */ be_nested_str_weak(acos),
- /* K26 */ be_nested_str_weak(center_x),
- /* K27 */ be_nested_str_weak(center_y),
- /* K28 */ be_nested_str_weak(color),
- /* K29 */ be_nested_str_weak(percentage),
- /* K30 */ be_nested_str_weak(radius),
- /* K31 */ be_const_int(0),
- /* K32 */ be_nested_str_weak(start_angle),
- /* K33 */ be_nested_str_weak(end_angle),
- /* K34 */ be_nested_str_weak(draw_arc),
- }),
+ &be_ktab_class_lv_signal_arcs, /* shared constants */
be_str_weak(widget_event),
&be_const_str_solidified,
( &(const binstruction[161]) { /* code */
@@ -635,24 +633,21 @@ be_local_closure(class_lv_signal_arcs_widget_event, /* name */
/********************************************************************
** Solidified function: get_percentage
********************************************************************/
-extern const bclass be_class_lv_signal_arcs;
be_local_closure(class_lv_signal_arcs_get_percentage, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_signal_arcs,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(percentage),
- }),
+ &be_ktab_class_lv_signal_arcs, /* shared constants */
be_str_weak(get_percentage),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804011D, // 0000 GETMBR R1 R0 K29
0x80040200, // 0001 RET 1 R1
})
)
@@ -663,68 +658,53 @@ be_local_closure(class_lv_signal_arcs_get_percentage, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_lv_signal_arcs;
be_local_closure(class_lv_signal_arcs_init, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_signal_arcs,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(set_style_bg_opa),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(set_style_border_width),
- /* K4 */ be_nested_str_weak(set_style_pad_all),
- /* K5 */ be_nested_str_weak(percentage),
- /* K6 */ be_nested_str_weak(area),
- /* K7 */ be_nested_str_weak(lv),
- /* K8 */ be_nested_str_weak(arc_dsc),
- /* K9 */ be_nested_str_weak(draw_arc_dsc),
- /* K10 */ be_nested_str_weak(add_event_cb),
- /* K11 */ be_nested_str_weak(widget_event),
- /* K12 */ be_nested_str_weak(EVENT_DRAW_MAIN),
- }),
+ &be_ktab_class_lv_signal_arcs, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[35]) { /* code */
0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0
0x7C080200, // 0002 CALL R2 1
- 0x8C080500, // 0003 GETMET R2 R2 K0
+ 0x8C080523, // 0003 GETMET R2 R2 K35
0x5C100200, // 0004 MOVE R4 R1
0x7C080400, // 0005 CALL R2 2
- 0x8C080101, // 0006 GETMET R2 R0 K1
- 0x58100002, // 0007 LDCONST R4 K2
- 0x58140002, // 0008 LDCONST R5 K2
+ 0x8C080124, // 0006 GETMET R2 R0 K36
+ 0x5810001F, // 0007 LDCONST R4 K31
+ 0x5814001F, // 0008 LDCONST R5 K31
0x7C080600, // 0009 CALL R2 3
- 0x8C080103, // 000A GETMET R2 R0 K3
- 0x58100002, // 000B LDCONST R4 K2
- 0x58140002, // 000C LDCONST R5 K2
+ 0x8C080125, // 000A GETMET R2 R0 K37
+ 0x5810001F, // 000B LDCONST R4 K31
+ 0x5814001F, // 000C LDCONST R5 K31
0x7C080600, // 000D CALL R2 3
- 0x8C080104, // 000E GETMET R2 R0 K4
- 0x58100002, // 000F LDCONST R4 K2
- 0x58140002, // 0010 LDCONST R5 K2
+ 0x8C080126, // 000E GETMET R2 R0 K38
+ 0x5810001F, // 000F LDCONST R4 K31
+ 0x5814001F, // 0010 LDCONST R5 K31
0x7C080600, // 0011 CALL R2 3
0x540A0063, // 0012 LDINT R2 100
- 0x90020A02, // 0013 SETMBR R0 K5 R2
- 0xB80A0E00, // 0014 GETNGBL R2 K7
- 0x8C080506, // 0015 GETMET R2 R2 K6
+ 0x90023A02, // 0013 SETMBR R0 K29 R2
+ 0xB80A0C00, // 0014 GETNGBL R2 K6
+ 0x8C08050C, // 0015 GETMET R2 R2 K12
0x7C080200, // 0016 CALL R2 1
- 0x90020C02, // 0017 SETMBR R0 K6 R2
- 0xB80A0E00, // 0018 GETNGBL R2 K7
- 0x8C080509, // 0019 GETMET R2 R2 K9
+ 0x90021802, // 0017 SETMBR R0 K12 R2
+ 0xB80A0C00, // 0018 GETNGBL R2 K6
+ 0x8C080527, // 0019 GETMET R2 R2 K39
0x7C080200, // 001A CALL R2 1
0x90021002, // 001B SETMBR R0 K8 R2
- 0x8C08010A, // 001C GETMET R2 R0 K10
- 0x8810010B, // 001D GETMBR R4 R0 K11
- 0xB8160E00, // 001E GETNGBL R5 K7
- 0x88140B0C, // 001F GETMBR R5 R5 K12
- 0x58180002, // 0020 LDCONST R6 K2
+ 0x8C080128, // 001C GETMET R2 R0 K40
+ 0x88100129, // 001D GETMBR R4 R0 K41
+ 0xB8160C00, // 001E GETNGBL R5 K6
+ 0x88140B07, // 001F GETMBR R5 R5 K7
+ 0x5818001F, // 0020 LDCONST R6 K31
0x7C080800, // 0021 CALL R2 4
0x80000000, // 0022 RET 0
})
@@ -736,41 +716,36 @@ be_local_closure(class_lv_signal_arcs_init, /* name */
/********************************************************************
** Solidified function: set_percentage
********************************************************************/
-extern const bclass be_class_lv_signal_arcs;
be_local_closure(class_lv_signal_arcs_set_percentage, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_signal_arcs,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(percentage),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(invalidate),
- }),
+ &be_ktab_class_lv_signal_arcs, /* shared constants */
be_str_weak(set_percentage),
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8808011D, // 0000 GETMBR R2 R0 K29
0x540E0018, // 0001 LDINT R3 25
0x0C080403, // 0002 DIV R2 R2 R3
0x540E0063, // 0003 LDINT R3 100
0x240C0203, // 0004 GT R3 R1 R3
0x780E0000, // 0005 JMPF R3 #0007
0x54060063, // 0006 LDINT R1 100
- 0x140C0301, // 0007 LT R3 R1 K1
+ 0x140C031F, // 0007 LT R3 R1 K31
0x780E0000, // 0008 JMPF R3 #000A
- 0x58040001, // 0009 LDCONST R1 K1
- 0x90020001, // 000A SETMBR R0 K0 R1
+ 0x5804001F, // 0009 LDCONST R1 K31
+ 0x90023A01, // 000A SETMBR R0 K29 R1
0x540E0018, // 000B LDINT R3 25
0x0C0C0203, // 000C DIV R3 R1 R3
0x200C0403, // 000D NE R3 R2 R3
0x780E0001, // 000E JMPF R3 #0011
- 0x8C0C0102, // 000F GETMET R3 R0 K2
+ 0x8C0C012A, // 000F GETMET R3 R0 K42
0x7C0C0200, // 0010 CALL R3 1
0x80000000, // 0011 RET 0
})
@@ -798,27 +773,37 @@ be_local_class(lv_signal_arcs,
})),
be_str_weak(lv_signal_arcs)
);
+// compact class 'lv_wifi_arcs' ktab size: 10, total: 14 (saved 32 bytes)
+static const bvalue be_ktab_class_lv_wifi_arcs[10] = {
+ /* K0 */ be_nested_str_weak(tasmota),
+ /* K1 */ be_nested_str_weak(remove_driver),
+ /* K2 */ be_nested_str_weak(init),
+ /* K3 */ be_nested_str_weak(add_driver),
+ /* K4 */ be_nested_str_weak(set_percentage),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_nested_str_weak(wifi),
+ /* K7 */ be_nested_str_weak(find),
+ /* K8 */ be_nested_str_weak(quality),
+ /* K9 */ be_nested_str_weak(ip),
+};
+
extern const bclass be_class_lv_wifi_arcs;
/********************************************************************
** Solidified function: before_del
********************************************************************/
-extern const bclass be_class_lv_wifi_arcs;
be_local_closure(class_lv_wifi_arcs_before_del, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_wifi_arcs,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(remove_driver),
- }),
+ &be_ktab_class_lv_wifi_arcs, /* shared constants */
be_str_weak(before_del),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
@@ -836,39 +821,32 @@ be_local_closure(class_lv_wifi_arcs_before_del, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_lv_wifi_arcs;
be_local_closure(class_lv_wifi_arcs_init, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_wifi_arcs,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(add_driver),
- /* K3 */ be_nested_str_weak(set_percentage),
- /* K4 */ be_const_int(0),
- }),
+ &be_ktab_class_lv_wifi_arcs, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[14]) { /* code */
0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0
0x7C080200, // 0002 CALL R2 1
- 0x8C080500, // 0003 GETMET R2 R2 K0
+ 0x8C080502, // 0003 GETMET R2 R2 K2
0x5C100200, // 0004 MOVE R4 R1
0x7C080400, // 0005 CALL R2 2
- 0xB80A0200, // 0006 GETNGBL R2 K1
- 0x8C080502, // 0007 GETMET R2 R2 K2
+ 0xB80A0000, // 0006 GETNGBL R2 K0
+ 0x8C080503, // 0007 GETMET R2 R2 K3
0x5C100000, // 0008 MOVE R4 R0
0x7C080400, // 0009 CALL R2 2
- 0x8C080103, // 000A GETMET R2 R0 K3
- 0x58100004, // 000B LDCONST R4 K4
+ 0x8C080104, // 000A GETMET R2 R0 K4
+ 0x58100005, // 000B LDCONST R4 K5
0x7C080400, // 000C CALL R2 2
0x80000000, // 000D RET 0
})
@@ -880,49 +858,40 @@ be_local_closure(class_lv_wifi_arcs_init, /* name */
/********************************************************************
** Solidified function: every_second
********************************************************************/
-extern const bclass be_class_lv_wifi_arcs;
be_local_closure(class_lv_wifi_arcs_every_second, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_wifi_arcs,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(wifi),
- /* K2 */ be_nested_str_weak(find),
- /* K3 */ be_nested_str_weak(quality),
- /* K4 */ be_nested_str_weak(ip),
- /* K5 */ be_nested_str_weak(set_percentage),
- /* K6 */ be_const_int(0),
- }),
+ &be_ktab_class_lv_wifi_arcs, /* shared constants */
be_str_weak(every_second),
&be_const_str_solidified,
( &(const binstruction[23]) { /* code */
0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x8C040306, // 0001 GETMET R1 R1 K6
0x7C040200, // 0002 CALL R1 1
- 0x8C080302, // 0003 GETMET R2 R1 K2
- 0x58100003, // 0004 LDCONST R4 K3
+ 0x8C080307, // 0003 GETMET R2 R1 K7
+ 0x58100008, // 0004 LDCONST R4 K8
0x7C080400, // 0005 CALL R2 2
- 0x8C0C0302, // 0006 GETMET R3 R1 K2
- 0x58140004, // 0007 LDCONST R5 K4
+ 0x8C0C0307, // 0006 GETMET R3 R1 K7
+ 0x58140009, // 0007 LDCONST R5 K9
0x7C0C0400, // 0008 CALL R3 2
0x4C100000, // 0009 LDNIL R4
0x1C100604, // 000A EQ R4 R3 R4
0x78120003, // 000B JMPF R4 #0010
- 0x8C100105, // 000C GETMET R4 R0 K5
- 0x58180006, // 000D LDCONST R6 K6
+ 0x8C100104, // 000C GETMET R4 R0 K4
+ 0x58180005, // 000D LDCONST R6 K5
0x7C100400, // 000E CALL R4 2
0x70020005, // 000F JMP #0016
0x4C100000, // 0010 LDNIL R4
0x20100404, // 0011 NE R4 R2 R4
0x78120002, // 0012 JMPF R4 #0016
- 0x8C100105, // 0013 GETMET R4 R0 K5
+ 0x8C100104, // 0013 GETMET R4 R0 K4
0x5C180400, // 0014 MOVE R6 R2
0x7C100400, // 0015 CALL R4 2
0x80000000, // 0016 RET 0
@@ -953,7 +922,6 @@ extern const bclass be_class_lv_wifi_arcs_icon;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_lv_wifi_arcs_icon;
be_local_closure(class_lv_wifi_arcs_icon_init, /* name */
be_nested_proto(
10, /* nstack */
@@ -962,7 +930,7 @@ be_local_closure(class_lv_wifi_arcs_icon_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_wifi_arcs_icon,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[18]) { /* constants */
/* K0 */ be_nested_str_weak(init),
@@ -1073,28 +1041,67 @@ be_local_class(lv_wifi_arcs_icon,
})),
be_str_weak(lv_wifi_arcs_icon)
);
+// compact class 'lv_signal_bars' ktab size: 40, total: 49 (saved 72 bytes)
+static const bvalue be_ktab_class_lv_signal_bars[40] = {
+ /* K0 */ be_nested_str_weak(percentage),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str_weak(invalidate),
+ /* K3 */ be_nested_str_weak(get_code),
+ /* K4 */ be_nested_str_weak(get_height),
+ /* K5 */ be_nested_str_weak(get_width),
+ /* K6 */ be_const_int(3),
+ /* K7 */ be_const_int(2),
+ /* K8 */ be_nested_str_weak(lv),
+ /* K9 */ be_nested_str_weak(EVENT_DRAW_MAIN),
+ /* K10 */ be_nested_str_weak(line_dsc),
+ /* K11 */ be_nested_str_weak(get_param),
+ /* K12 */ be_nested_str_weak(get_layer),
+ /* K13 */ be_nested_str_weak(get_coords),
+ /* K14 */ be_nested_str_weak(area),
+ /* K15 */ be_nested_str_weak(x1),
+ /* K16 */ be_nested_str_weak(y1),
+ /* K17 */ be_nested_str_weak(draw_line_dsc_init),
+ /* K18 */ be_nested_str_weak(init_draw_line_dsc),
+ /* K19 */ be_nested_str_weak(PART_MAIN),
+ /* K20 */ be_nested_str_weak(round_start),
+ /* K21 */ be_const_int(1),
+ /* K22 */ be_nested_str_weak(round_end),
+ /* K23 */ be_nested_str_weak(width),
+ /* K24 */ be_nested_str_weak(get_style_line_color),
+ /* K25 */ be_nested_str_weak(STATE_DEFAULT),
+ /* K26 */ be_nested_str_weak(get_style_bg_color),
+ /* K27 */ be_nested_str_weak(color),
+ /* K28 */ be_nested_str_weak(p1_y),
+ /* K29 */ be_nested_str_weak(p1_x),
+ /* K30 */ be_nested_str_weak(p2_y),
+ /* K31 */ be_nested_str_weak(p2_x),
+ /* K32 */ be_nested_str_weak(draw_line),
+ /* K33 */ be_nested_str_weak(stop_iteration),
+ /* K34 */ be_nested_str_weak(init),
+ /* K35 */ be_nested_str_weak(set_style_bg_opa),
+ /* K36 */ be_nested_str_weak(set_style_border_width),
+ /* K37 */ be_nested_str_weak(draw_line_dsc),
+ /* K38 */ be_nested_str_weak(add_event_cb),
+ /* K39 */ be_nested_str_weak(widget_event),
+};
+
extern const bclass be_class_lv_signal_bars;
/********************************************************************
** Solidified function: set_percentage
********************************************************************/
-extern const bclass be_class_lv_signal_bars;
be_local_closure(class_lv_signal_bars_set_percentage, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_signal_bars,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(percentage),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(invalidate),
- }),
+ &be_ktab_class_lv_signal_bars, /* shared constants */
be_str_weak(set_percentage),
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
@@ -1125,20 +1132,17 @@ be_local_closure(class_lv_signal_bars_set_percentage, /* name */
/********************************************************************
** Solidified function: get_percentage
********************************************************************/
-extern const bclass be_class_lv_signal_bars;
be_local_closure(class_lv_signal_bars_get_percentage, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_signal_bars,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(percentage),
- }),
+ &be_ktab_class_lv_signal_bars, /* shared constants */
be_str_weak(get_percentage),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
@@ -1153,16 +1157,15 @@ be_local_closure(class_lv_signal_bars_get_percentage, /* name */
/********************************************************************
** Solidified function: widget_event
********************************************************************/
-extern const bclass be_class_lv_signal_bars;
be_local_closure(class_lv_signal_bars_widget_event, /* name */
be_nested_proto(
22, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
2, /* nstack */
1, /* argc */
@@ -1170,7 +1173,7 @@ be_local_closure(class_lv_signal_bars_widget_event, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_const_int(1),
@@ -1186,115 +1189,80 @@ be_local_closure(class_lv_signal_bars_widget_event, /* name */
0x80000000, // 0005 RET 0
})
),
- &be_class_lv_signal_bars,
}),
1, /* has constants */
- ( &(const bvalue[33]) { /* constants */
- /* K0 */ be_nested_str_weak(get_code),
- /* K1 */ be_nested_str_weak(get_height),
- /* K2 */ be_nested_str_weak(get_width),
- /* K3 */ be_const_int(3),
- /* K4 */ be_const_int(2),
- /* K5 */ be_nested_str_weak(lv),
- /* K6 */ be_nested_str_weak(EVENT_DRAW_MAIN),
- /* K7 */ be_nested_str_weak(line_dsc),
- /* K8 */ be_nested_str_weak(get_param),
- /* K9 */ be_nested_str_weak(get_layer),
- /* K10 */ be_nested_str_weak(get_coords),
- /* K11 */ be_nested_str_weak(area),
- /* K12 */ be_nested_str_weak(x1),
- /* K13 */ be_nested_str_weak(y1),
- /* K14 */ be_nested_str_weak(draw_line_dsc_init),
- /* K15 */ be_nested_str_weak(init_draw_line_dsc),
- /* K16 */ be_nested_str_weak(PART_MAIN),
- /* K17 */ be_nested_str_weak(round_start),
- /* K18 */ be_const_int(1),
- /* K19 */ be_nested_str_weak(round_end),
- /* K20 */ be_nested_str_weak(width),
- /* K21 */ be_nested_str_weak(get_style_line_color),
- /* K22 */ be_nested_str_weak(STATE_DEFAULT),
- /* K23 */ be_nested_str_weak(get_style_bg_color),
- /* K24 */ be_const_int(0),
- /* K25 */ be_nested_str_weak(color),
- /* K26 */ be_nested_str_weak(percentage),
- /* K27 */ be_nested_str_weak(p1_y),
- /* K28 */ be_nested_str_weak(p1_x),
- /* K29 */ be_nested_str_weak(p2_y),
- /* K30 */ be_nested_str_weak(p2_x),
- /* K31 */ be_nested_str_weak(draw_line),
- /* K32 */ be_nested_str_weak(stop_iteration),
- }),
+ &be_ktab_class_lv_signal_bars, /* shared constants */
be_str_weak(widget_event),
&be_const_str_solidified,
( &(const binstruction[105]) { /* code */
- 0x8C080300, // 0000 GETMET R2 R1 K0
+ 0x8C080303, // 0000 GETMET R2 R1 K3
0x7C080200, // 0001 CALL R2 1
0x840C0000, // 0002 CLOSURE R3 P0
- 0x8C100101, // 0003 GETMET R4 R0 K1
+ 0x8C100104, // 0003 GETMET R4 R0 K4
0x7C100200, // 0004 CALL R4 1
- 0x8C140102, // 0005 GETMET R5 R0 K2
+ 0x8C140105, // 0005 GETMET R5 R0 K5
0x7C140200, // 0006 CALL R5 1
0x5C180600, // 0007 MOVE R6 R3
0x541E000E, // 0008 LDINT R7 15
0x0C1C0A07, // 0009 DIV R7 R5 R7
0x7C180200, // 000A CALL R6 1
0x5C1C0600, // 000B MOVE R7 R3
- 0x08200D03, // 000C MUL R8 R6 K3
+ 0x08200D06, // 000C MUL R8 R6 K6
0x04200A08, // 000D SUB R8 R5 R8
0x54260003, // 000E LDINT R9 4
0x0C201009, // 000F DIV R8 R8 R9
0x7C1C0200, // 0010 CALL R7 1
- 0x0C200F04, // 0011 DIV R8 R7 K4
- 0xB8260A00, // 0012 GETNGBL R9 K5
- 0x88241306, // 0013 GETMBR R9 R9 K6
+ 0x0C200F07, // 0011 DIV R8 R7 K7
+ 0xB8261000, // 0012 GETNGBL R9 K8
+ 0x88241309, // 0013 GETMBR R9 R9 K9
0x1C240409, // 0014 EQ R9 R2 R9
0x78260051, // 0015 JMPF R9 #0068
- 0x88240107, // 0016 GETMBR R9 R0 K7
- 0x8C280308, // 0017 GETMET R10 R1 K8
+ 0x8824010A, // 0016 GETMBR R9 R0 K10
+ 0x8C28030B, // 0017 GETMET R10 R1 K11
0x7C280200, // 0018 CALL R10 1
- 0x8C2C0309, // 0019 GETMET R11 R1 K9
+ 0x8C2C030C, // 0019 GETMET R11 R1 K12
0x7C2C0200, // 001A CALL R11 1
- 0x8C30010A, // 001B GETMET R12 R0 K10
- 0x8838010B, // 001C GETMBR R14 R0 K11
+ 0x8C30010D, // 001B GETMET R12 R0 K13
+ 0x8838010E, // 001C GETMBR R14 R0 K14
0x7C300400, // 001D CALL R12 2
- 0x8830010B, // 001E GETMBR R12 R0 K11
- 0x8830190C, // 001F GETMBR R12 R12 K12
- 0x8834010B, // 0020 GETMBR R13 R0 K11
- 0x88341B0D, // 0021 GETMBR R13 R13 K13
- 0xB83A0A00, // 0022 GETNGBL R14 K5
- 0x8C381D0E, // 0023 GETMET R14 R14 K14
+ 0x8830010E, // 001E GETMBR R12 R0 K14
+ 0x8830190F, // 001F GETMBR R12 R12 K15
+ 0x8834010E, // 0020 GETMBR R13 R0 K14
+ 0x88341B10, // 0021 GETMBR R13 R13 K16
+ 0xB83A1000, // 0022 GETNGBL R14 K8
+ 0x8C381D11, // 0023 GETMET R14 R14 K17
0x5C401200, // 0024 MOVE R16 R9
0x7C380400, // 0025 CALL R14 2
- 0x8C38010F, // 0026 GETMET R14 R0 K15
- 0xB8420A00, // 0027 GETNGBL R16 K5
- 0x88402110, // 0028 GETMBR R16 R16 K16
+ 0x8C380112, // 0026 GETMET R14 R0 K18
+ 0xB8421000, // 0027 GETNGBL R16 K8
+ 0x88402113, // 0028 GETMBR R16 R16 K19
0x5C441200, // 0029 MOVE R17 R9
0x7C380600, // 002A CALL R14 3
- 0x90262312, // 002B SETMBR R9 K17 K18
- 0x90262712, // 002C SETMBR R9 K19 K18
- 0x90262807, // 002D SETMBR R9 K20 R7
- 0x8C380115, // 002E GETMET R14 R0 K21
- 0xB8420A00, // 002F GETNGBL R16 K5
- 0x88402110, // 0030 GETMBR R16 R16 K16
- 0xB8460A00, // 0031 GETNGBL R17 K5
- 0x88442316, // 0032 GETMBR R17 R17 K22
+ 0x90262915, // 002B SETMBR R9 K20 K21
+ 0x90262D15, // 002C SETMBR R9 K22 K21
+ 0x90262E07, // 002D SETMBR R9 K23 R7
+ 0x8C380118, // 002E GETMET R14 R0 K24
+ 0xB8421000, // 002F GETNGBL R16 K8
+ 0x88402113, // 0030 GETMBR R16 R16 K19
+ 0xB8461000, // 0031 GETNGBL R17 K8
+ 0x88442319, // 0032 GETMBR R17 R17 K25
0x30402011, // 0033 OR R16 R16 R17
0x7C380400, // 0034 CALL R14 2
- 0x8C3C0117, // 0035 GETMET R15 R0 K23
- 0xB8460A00, // 0036 GETNGBL R17 K5
- 0x88442310, // 0037 GETMBR R17 R17 K16
- 0xB84A0A00, // 0038 GETNGBL R18 K5
- 0x88482516, // 0039 GETMBR R18 R18 K22
+ 0x8C3C011A, // 0035 GETMET R15 R0 K26
+ 0xB8461000, // 0036 GETNGBL R17 K8
+ 0x88442313, // 0037 GETMBR R17 R17 K19
+ 0xB84A1000, // 0038 GETNGBL R18 K8
+ 0x88482519, // 0039 GETMBR R18 R18 K25
0x30442212, // 003A OR R17 R17 R18
0x7C3C0400, // 003B CALL R15 2
0x60400010, // 003C GETGBL R16 G16
- 0x40463103, // 003D CONNECT R17 K24 K3
+ 0x40460306, // 003D CONNECT R17 K1 K6
0x7C400200, // 003E CALL R16 1
0xA8020024, // 003F EXBLK 0 #0065
0x5C442000, // 0040 MOVE R17 R16
0x7C440000, // 0041 CALL R17 0
- 0x8848011A, // 0042 GETMBR R18 R0 K26
- 0x004C2312, // 0043 ADD R19 R17 K18
+ 0x88480100, // 0042 GETMBR R18 R0 K0
+ 0x004C2315, // 0043 ADD R19 R17 K21
0x54520013, // 0044 LDINT R20 20
0x084C2614, // 0045 MUL R19 R19 R20
0x28482413, // 0046 GE R18 R18 R19
@@ -1302,33 +1270,33 @@ be_local_closure(class_lv_signal_bars_widget_event, /* name */
0x5C481C00, // 0048 MOVE R18 R14
0x70020000, // 0049 JMP #004B
0x5C481E00, // 004A MOVE R18 R15
- 0x90263212, // 004B SETMBR R9 K25 R18
+ 0x90263612, // 004B SETMBR R9 K27 R18
0x00481A04, // 004C ADD R18 R13 R4
- 0x04482512, // 004D SUB R18 R18 K18
+ 0x04482515, // 004D SUB R18 R18 K21
0x04482408, // 004E SUB R18 R18 R8
- 0x90263612, // 004F SETMBR R9 K27 R18
+ 0x90263812, // 004F SETMBR R9 K28 R18
0x00480E06, // 0050 ADD R18 R7 R6
0x08482212, // 0051 MUL R18 R17 R18
0x00481812, // 0052 ADD R18 R12 R18
0x00482408, // 0053 ADD R18 R18 R8
- 0x90263812, // 0054 SETMBR R9 K28 R18
- 0x044A0611, // 0055 SUB R18 K3 R17
+ 0x90263A12, // 0054 SETMBR R9 K29 R18
+ 0x044A0C11, // 0055 SUB R18 K6 R17
0x044C0807, // 0056 SUB R19 R4 R7
0x08482413, // 0057 MUL R18 R18 R19
0x544E0003, // 0058 LDINT R19 4
0x0C482413, // 0059 DIV R18 R18 R19
0x00481A12, // 005A ADD R18 R13 R18
0x00482408, // 005B ADD R18 R18 R8
- 0x90263A12, // 005C SETMBR R9 K29 R18
- 0x8848131C, // 005D GETMBR R18 R9 K28
- 0x90263C12, // 005E SETMBR R9 K30 R18
- 0xB84A0A00, // 005F GETNGBL R18 K5
- 0x8C48251F, // 0060 GETMET R18 R18 K31
+ 0x90263C12, // 005C SETMBR R9 K30 R18
+ 0x8848131D, // 005D GETMBR R18 R9 K29
+ 0x90263E12, // 005E SETMBR R9 K31 R18
+ 0xB84A1000, // 005F GETNGBL R18 K8
+ 0x8C482520, // 0060 GETMET R18 R18 K32
0x5C501600, // 0061 MOVE R20 R11
0x5C541200, // 0062 MOVE R21 R9
0x7C480600, // 0063 CALL R18 3
0x7001FFDA, // 0064 JMP #0040
- 0x58400020, // 0065 LDCONST R16 K32
+ 0x58400021, // 0065 LDCONST R16 K33
0xAC400200, // 0066 CATCH R16 1 0
0xB0080000, // 0067 RAISE 2 R0 R0
0x80000000, // 0068 RET 0
@@ -1341,63 +1309,49 @@ be_local_closure(class_lv_signal_bars_widget_event, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_lv_signal_bars;
be_local_closure(class_lv_signal_bars_init, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_signal_bars,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(set_style_bg_opa),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(set_style_border_width),
- /* K4 */ be_nested_str_weak(percentage),
- /* K5 */ be_nested_str_weak(area),
- /* K6 */ be_nested_str_weak(lv),
- /* K7 */ be_nested_str_weak(line_dsc),
- /* K8 */ be_nested_str_weak(draw_line_dsc),
- /* K9 */ be_nested_str_weak(add_event_cb),
- /* K10 */ be_nested_str_weak(widget_event),
- /* K11 */ be_nested_str_weak(EVENT_DRAW_MAIN),
- }),
+ &be_ktab_class_lv_signal_bars, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[31]) { /* code */
0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0
0x7C080200, // 0002 CALL R2 1
- 0x8C080500, // 0003 GETMET R2 R2 K0
+ 0x8C080522, // 0003 GETMET R2 R2 K34
0x5C100200, // 0004 MOVE R4 R1
0x7C080400, // 0005 CALL R2 2
- 0x8C080101, // 0006 GETMET R2 R0 K1
- 0x58100002, // 0007 LDCONST R4 K2
- 0x58140002, // 0008 LDCONST R5 K2
+ 0x8C080123, // 0006 GETMET R2 R0 K35
+ 0x58100001, // 0007 LDCONST R4 K1
+ 0x58140001, // 0008 LDCONST R5 K1
0x7C080600, // 0009 CALL R2 3
- 0x8C080103, // 000A GETMET R2 R0 K3
- 0x58100002, // 000B LDCONST R4 K2
- 0x58140002, // 000C LDCONST R5 K2
+ 0x8C080124, // 000A GETMET R2 R0 K36
+ 0x58100001, // 000B LDCONST R4 K1
+ 0x58140001, // 000C LDCONST R5 K1
0x7C080600, // 000D CALL R2 3
0x540A0063, // 000E LDINT R2 100
- 0x90020802, // 000F SETMBR R0 K4 R2
- 0xB80A0C00, // 0010 GETNGBL R2 K6
- 0x8C080505, // 0011 GETMET R2 R2 K5
+ 0x90020002, // 000F SETMBR R0 K0 R2
+ 0xB80A1000, // 0010 GETNGBL R2 K8
+ 0x8C08050E, // 0011 GETMET R2 R2 K14
0x7C080200, // 0012 CALL R2 1
- 0x90020A02, // 0013 SETMBR R0 K5 R2
- 0xB80A0C00, // 0014 GETNGBL R2 K6
- 0x8C080508, // 0015 GETMET R2 R2 K8
+ 0x90021C02, // 0013 SETMBR R0 K14 R2
+ 0xB80A1000, // 0014 GETNGBL R2 K8
+ 0x8C080525, // 0015 GETMET R2 R2 K37
0x7C080200, // 0016 CALL R2 1
- 0x90020E02, // 0017 SETMBR R0 K7 R2
- 0x8C080109, // 0018 GETMET R2 R0 K9
- 0x8810010A, // 0019 GETMBR R4 R0 K10
- 0xB8160C00, // 001A GETNGBL R5 K6
- 0x88140B0B, // 001B GETMBR R5 R5 K11
- 0x58180002, // 001C LDCONST R6 K2
+ 0x90021402, // 0017 SETMBR R0 K10 R2
+ 0x8C080126, // 0018 GETMET R2 R0 K38
+ 0x88100127, // 0019 GETMBR R4 R0 K39
+ 0xB8161000, // 001A GETNGBL R5 K8
+ 0x88140B09, // 001B GETMBR R5 R5 K9
+ 0x58180001, // 001C LDCONST R6 K1
0x7C080800, // 001D CALL R2 4
0x80000000, // 001E RET 0
})
@@ -1425,27 +1379,37 @@ be_local_class(lv_signal_bars,
})),
be_str_weak(lv_signal_bars)
);
+// compact class 'lv_wifi_bars' ktab size: 10, total: 14 (saved 32 bytes)
+static const bvalue be_ktab_class_lv_wifi_bars[10] = {
+ /* K0 */ be_nested_str_weak(tasmota),
+ /* K1 */ be_nested_str_weak(remove_driver),
+ /* K2 */ be_nested_str_weak(init),
+ /* K3 */ be_nested_str_weak(add_driver),
+ /* K4 */ be_nested_str_weak(set_percentage),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_nested_str_weak(wifi),
+ /* K7 */ be_nested_str_weak(find),
+ /* K8 */ be_nested_str_weak(quality),
+ /* K9 */ be_nested_str_weak(ip),
+};
+
extern const bclass be_class_lv_wifi_bars;
/********************************************************************
** Solidified function: before_del
********************************************************************/
-extern const bclass be_class_lv_wifi_bars;
be_local_closure(class_lv_wifi_bars_before_del, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_wifi_bars,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(remove_driver),
- }),
+ &be_ktab_class_lv_wifi_bars, /* shared constants */
be_str_weak(before_del),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
@@ -1463,39 +1427,32 @@ be_local_closure(class_lv_wifi_bars_before_del, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_lv_wifi_bars;
be_local_closure(class_lv_wifi_bars_init, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_wifi_bars,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(add_driver),
- /* K3 */ be_nested_str_weak(set_percentage),
- /* K4 */ be_const_int(0),
- }),
+ &be_ktab_class_lv_wifi_bars, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[14]) { /* code */
0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0
0x7C080200, // 0002 CALL R2 1
- 0x8C080500, // 0003 GETMET R2 R2 K0
+ 0x8C080502, // 0003 GETMET R2 R2 K2
0x5C100200, // 0004 MOVE R4 R1
0x7C080400, // 0005 CALL R2 2
- 0xB80A0200, // 0006 GETNGBL R2 K1
- 0x8C080502, // 0007 GETMET R2 R2 K2
+ 0xB80A0000, // 0006 GETNGBL R2 K0
+ 0x8C080503, // 0007 GETMET R2 R2 K3
0x5C100000, // 0008 MOVE R4 R0
0x7C080400, // 0009 CALL R2 2
- 0x8C080103, // 000A GETMET R2 R0 K3
- 0x58100004, // 000B LDCONST R4 K4
+ 0x8C080104, // 000A GETMET R2 R0 K4
+ 0x58100005, // 000B LDCONST R4 K5
0x7C080400, // 000C CALL R2 2
0x80000000, // 000D RET 0
})
@@ -1507,49 +1464,40 @@ be_local_closure(class_lv_wifi_bars_init, /* name */
/********************************************************************
** Solidified function: every_second
********************************************************************/
-extern const bclass be_class_lv_wifi_bars;
be_local_closure(class_lv_wifi_bars_every_second, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_wifi_bars,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota),
- /* K1 */ be_nested_str_weak(wifi),
- /* K2 */ be_nested_str_weak(find),
- /* K3 */ be_nested_str_weak(quality),
- /* K4 */ be_nested_str_weak(ip),
- /* K5 */ be_nested_str_weak(set_percentage),
- /* K6 */ be_const_int(0),
- }),
+ &be_ktab_class_lv_wifi_bars, /* shared constants */
be_str_weak(every_second),
&be_const_str_solidified,
( &(const binstruction[23]) { /* code */
0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x8C040306, // 0001 GETMET R1 R1 K6
0x7C040200, // 0002 CALL R1 1
- 0x8C080302, // 0003 GETMET R2 R1 K2
- 0x58100003, // 0004 LDCONST R4 K3
+ 0x8C080307, // 0003 GETMET R2 R1 K7
+ 0x58100008, // 0004 LDCONST R4 K8
0x7C080400, // 0005 CALL R2 2
- 0x8C0C0302, // 0006 GETMET R3 R1 K2
- 0x58140004, // 0007 LDCONST R5 K4
+ 0x8C0C0307, // 0006 GETMET R3 R1 K7
+ 0x58140009, // 0007 LDCONST R5 K9
0x7C0C0400, // 0008 CALL R3 2
0x4C100000, // 0009 LDNIL R4
0x1C100604, // 000A EQ R4 R3 R4
0x78120003, // 000B JMPF R4 #0010
- 0x8C100105, // 000C GETMET R4 R0 K5
- 0x58180006, // 000D LDCONST R6 K6
+ 0x8C100104, // 000C GETMET R4 R0 K4
+ 0x58180005, // 000D LDCONST R6 K5
0x7C100400, // 000E CALL R4 2
0x70020005, // 000F JMP #0016
0x4C100000, // 0010 LDNIL R4
0x20100404, // 0011 NE R4 R2 R4
0x78120002, // 0012 JMPF R4 #0016
- 0x8C100105, // 0013 GETMET R4 R0 K5
+ 0x8C100104, // 0013 GETMET R4 R0 K4
0x5C180400, // 0014 MOVE R6 R2
0x7C100400, // 0015 CALL R4 2
0x80000000, // 0016 RET 0
@@ -1580,7 +1528,6 @@ extern const bclass be_class_lv_wifi_bars_icon;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_lv_wifi_bars_icon;
be_local_closure(class_lv_wifi_bars_icon_init, /* name */
be_nested_proto(
9, /* nstack */
@@ -1589,7 +1536,7 @@ be_local_closure(class_lv_wifi_bars_icon_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_wifi_bars_icon,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[17]) { /* constants */
/* K0 */ be_nested_str_weak(init),
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_mqtt.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_mqtt.h
index 267f65ad1..a1d6a85b3 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_mqtt.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_mqtt.h
@@ -3,29 +3,225 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+extern const bclass be_class_mqtt_listener;
+// compact class 'mqtt_listener' ktab size: 11, total: 17 (saved 48 bytes)
+static const bvalue be_ktab_class_mqtt_listener[11] = {
+ /* K0 */ be_nested_str(_X3Cinstance_X3A_X20_X25s_X28_X27_X25s_X27_X29_X3E),
+ /* K1 */ be_nested_str(fulltopic),
+ /* K2 */ be_nested_str(string),
+ /* K3 */ be_nested_str(topic),
+ /* K4 */ be_nested_str(split),
+ /* K5 */ be_nested_str(_X2F),
+ /* K6 */ be_nested_str(closure),
+ /* K7 */ be_const_int(0),
+ /* K8 */ be_nested_str(_X23),
+ /* K9 */ be_nested_str(_X2B),
+ /* K10 */ be_const_int(1),
+};
+
+
+extern const bclass be_class_mqtt_listener;
+
+/********************************************************************
+** Solidified function: tostring
+********************************************************************/
+be_local_closure(class_mqtt_listener_tostring, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_mqtt_listener, /* shared constants */
+ &be_const_str_tostring,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 8]) { /* code */
+ 0x60040018, // 0000 GETGBL R1 G24
+ 0x58080000, // 0001 LDCONST R2 K0
+ 0x600C0005, // 0002 GETGBL R3 G5
+ 0x5C100000, // 0003 MOVE R4 R0
+ 0x7C0C0200, // 0004 CALL R3 1
+ 0x88100101, // 0005 GETMBR R4 R0 K1
+ 0x7C040600, // 0006 CALL R1 3
+ 0x80040200, // 0007 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_mqtt_listener_init, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_mqtt_listener, /* shared constants */
+ &be_const_str_init,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 9]) { /* code */
+ 0xA40E0400, // 0000 IMPORT R3 K2
+ 0x90020201, // 0001 SETMBR R0 K1 R1
+ 0x8C100704, // 0002 GETMET R4 R3 K4
+ 0x5C180200, // 0003 MOVE R6 R1
+ 0x581C0005, // 0004 LDCONST R7 K5
+ 0x7C100600, // 0005 CALL R4 3
+ 0x90020604, // 0006 SETMBR R0 K3 R4
+ 0x90020C02, // 0007 SETMBR R0 K6 R2
+ 0x80000000, // 0008 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: mqtt_data
+********************************************************************/
+be_local_closure(class_mqtt_listener_mqtt_data, /* name */
+ be_nested_proto(
+ 17, /* nstack */
+ 5, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_mqtt_listener, /* shared constants */
+ &be_const_str_mqtt_data,
+ &be_const_str_solidified,
+ ( &(const binstruction[53]) { /* code */
+ 0xA4160400, // 0000 IMPORT R5 K2
+ 0x8C180B04, // 0001 GETMET R6 R5 K4
+ 0x5C200200, // 0002 MOVE R8 R1
+ 0x58240005, // 0003 LDCONST R9 K5
+ 0x7C180600, // 0004 CALL R6 3
+ 0x601C000C, // 0005 GETGBL R7 G12
+ 0x5C200C00, // 0006 MOVE R8 R6
+ 0x7C1C0200, // 0007 CALL R7 1
+ 0x88200103, // 0008 GETMBR R8 R0 K3
+ 0x6024000C, // 0009 GETGBL R9 G12
+ 0x5C281000, // 000A MOVE R10 R8
+ 0x7C240200, // 000B CALL R9 1
+ 0x58280007, // 000C LDCONST R10 K7
+ 0x142C1409, // 000D LT R11 R10 R9
+ 0x782E0013, // 000E JMPF R11 #0023
+ 0x942C100A, // 000F GETIDX R11 R8 R10
+ 0x1C301708, // 0010 EQ R12 R11 K8
+ 0x78320001, // 0011 JMPF R12 #0014
+ 0x7002000F, // 0012 JMP #0023
+ 0x7002000C, // 0013 JMP #0021
+ 0x28301407, // 0014 GE R12 R10 R7
+ 0x78320002, // 0015 JMPF R12 #0019
+ 0x50300000, // 0016 LDBOOL R12 0 0
+ 0x80041800, // 0017 RET 1 R12
+ 0x70020007, // 0018 JMP #0021
+ 0x1C301709, // 0019 EQ R12 R11 K9
+ 0x78320000, // 001A JMPF R12 #001C
+ 0x70020004, // 001B JMP #0021
+ 0x94300C0A, // 001C GETIDX R12 R6 R10
+ 0x2030160C, // 001D NE R12 R11 R12
+ 0x78320001, // 001E JMPF R12 #0021
+ 0x50300000, // 001F LDBOOL R12 0 0
+ 0x80041800, // 0020 RET 1 R12
+ 0x0028150A, // 0021 ADD R10 R10 K10
+ 0x7001FFE9, // 0022 JMP #000D
+ 0x282C1409, // 0023 GE R11 R10 R9
+ 0x782E0003, // 0024 JMPF R11 #0029
+ 0x202C1207, // 0025 NE R11 R9 R7
+ 0x782E0001, // 0026 JMPF R11 #0029
+ 0x502C0000, // 0027 LDBOOL R11 0 0
+ 0x80041600, // 0028 RET 1 R11
+ 0x882C0106, // 0029 GETMBR R11 R0 K6
+ 0x5C301600, // 002A MOVE R12 R11
+ 0x5C340200, // 002B MOVE R13 R1
+ 0x5C380400, // 002C MOVE R14 R2
+ 0x5C3C0600, // 002D MOVE R15 R3
+ 0x5C400800, // 002E MOVE R16 R4
+ 0x7C300800, // 002F CALL R12 4
+ 0x4C340000, // 0030 LDNIL R13
+ 0x1C34180D, // 0031 EQ R13 R12 R13
+ 0x78360000, // 0032 JMPF R13 #0034
+ 0x50300200, // 0033 LDBOOL R12 1 0
+ 0x80041800, // 0034 RET 1 R12
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: mqtt_listener
+********************************************************************/
+be_local_class(mqtt_listener,
+ 3,
+ NULL,
+ be_nested_map(6,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key(mqtt_data, -1), be_const_closure(class_mqtt_listener_mqtt_data_closure) },
+ { be_const_key(tostring, -1), be_const_closure(class_mqtt_listener_tostring_closure) },
+ { be_const_key(topic, -1), be_const_var(0) },
+ { be_const_key(init, -1), be_const_closure(class_mqtt_listener_init_closure) },
+ { be_const_key(closure, 0), be_const_var(2) },
+ { be_const_key(fulltopic, -1), be_const_var(1) },
+ })),
+ (bstring*) &be_const_str_mqtt_listener
+);
+// compact class 'MQTT' ktab size: 23, total: 35 (saved 96 bytes)
+static const bvalue be_ktab_class_MQTT[23] = {
+ /* K0 */ be_nested_str(topics),
+ /* K1 */ be_nested_str(closure),
+ /* K2 */ be_nested_str(mqtt_data),
+ /* K3 */ be_nested_str(stop_iteration),
+ /* K4 */ be_nested_str(tasmota),
+ /* K5 */ be_nested_str(add_driver),
+ /* K6 */ be_nested_str(add_rule),
+ /* K7 */ be_nested_str(Mqtt_X23Connected),
+ /* K8 */ be_const_int(0),
+ /* K9 */ be_nested_str(fulltopic),
+ /* K10 */ be_nested_str(_unsubscribe),
+ /* K11 */ be_nested_str(remove),
+ /* K12 */ be_const_int(1),
+ /* K13 */ be_nested_str(log),
+ /* K14 */ be_nested_str(BRY_X3A_X20mqtt_X20subscribe_X20all_X20registered_X20topics),
+ /* K15 */ be_const_int(3),
+ /* K16 */ be_nested_str(_subscribe),
+ /* K17 */ be_const_class(be_class_mqtt_listener),
+ /* K18 */ be_nested_str(lazy_init),
+ /* K19 */ be_nested_str(mqtt_listener_class),
+ /* K20 */ be_nested_str(function),
+ /* K21 */ be_nested_str(check_not_method),
+ /* K22 */ be_nested_str(push),
+};
+
extern const bclass be_class_MQTT;
/********************************************************************
** Solidified function: mqtt_data
********************************************************************/
-extern const bclass be_class_MQTT;
be_local_closure(class_MQTT_mqtt_data, /* name */
be_nested_proto(
14, /* nstack */
5, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_MQTT,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str(topics),
- /* K1 */ be_nested_str(closure),
- /* K2 */ be_nested_str(mqtt_data),
- /* K3 */ be_nested_str(stop_iteration),
- }),
+ &be_ktab_class_MQTT, /* shared constants */
&be_const_str_mqtt_data,
&be_const_str_solidified,
( &(const binstruction[31]) { /* code */
@@ -69,16 +265,15 @@ be_local_closure(class_MQTT_mqtt_data, /* name */
/********************************************************************
** Solidified function: lazy_init
********************************************************************/
-extern const bclass be_class_MQTT;
be_local_closure(class_MQTT_lazy_init, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
2, /* nstack */
0, /* argc */
@@ -88,7 +283,7 @@ be_local_closure(class_MQTT_lazy_init, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str(mqtt_connect),
@@ -102,16 +297,9 @@ be_local_closure(class_MQTT_lazy_init, /* name */
0x80040000, // 0003 RET 1 R0
})
),
- &be_class_MQTT,
}),
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str(topics),
- /* K1 */ be_nested_str(tasmota),
- /* K2 */ be_nested_str(add_driver),
- /* K3 */ be_nested_str(add_rule),
- /* K4 */ be_nested_str(Mqtt_X23Connected),
- }),
+ &be_ktab_class_MQTT, /* shared constants */
&be_const_str_lazy_init,
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
@@ -122,13 +310,13 @@ be_local_closure(class_MQTT_lazy_init, /* name */
0x60040012, // 0004 GETGBL R1 G18
0x7C040000, // 0005 CALL R1 0
0x90020001, // 0006 SETMBR R0 K0 R1
- 0xB8060200, // 0007 GETNGBL R1 K1
- 0x8C040302, // 0008 GETMET R1 R1 K2
+ 0xB8060800, // 0007 GETNGBL R1 K4
+ 0x8C040305, // 0008 GETMET R1 R1 K5
0x5C0C0000, // 0009 MOVE R3 R0
0x7C040400, // 000A CALL R1 2
- 0xB8060200, // 000B GETNGBL R1 K1
- 0x8C040303, // 000C GETMET R1 R1 K3
- 0x580C0004, // 000D LDCONST R3 K4
+ 0xB8060800, // 000B GETNGBL R1 K4
+ 0x8C040306, // 000C GETMET R1 R1 K6
+ 0x580C0007, // 000D LDCONST R3 K7
0x84100000, // 000E CLOSURE R4 P0
0x7C040600, // 000F CALL R1 3
0xA0000000, // 0010 CLOSE R0
@@ -142,25 +330,17 @@ be_local_closure(class_MQTT_lazy_init, /* name */
/********************************************************************
** Solidified function: unsubscribe
********************************************************************/
-extern const bclass be_class_MQTT;
be_local_closure(class_MQTT_unsubscribe, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_MQTT,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str(topics),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(fulltopic),
- /* K3 */ be_nested_str(_unsubscribe),
- /* K4 */ be_nested_str(remove),
- /* K5 */ be_const_int(1),
- }),
+ &be_ktab_class_MQTT, /* shared constants */
&be_const_str_unsubscribe,
&be_const_str_solidified,
( &(const binstruction[41]) { /* code */
@@ -169,7 +349,7 @@ be_local_closure(class_MQTT_unsubscribe, /* name */
0x1C080403, // 0002 EQ R2 R2 R3
0x780A0000, // 0003 JMPF R2 #0005
0x80000400, // 0004 RET 0
- 0x58080001, // 0005 LDCONST R2 K1
+ 0x58080008, // 0005 LDCONST R2 K8
0x600C000C, // 0006 GETGBL R3 G12
0x88100100, // 0007 GETMBR R4 R0 K0
0x7C0C0200, // 0008 CALL R3 1
@@ -180,28 +360,28 @@ be_local_closure(class_MQTT_unsubscribe, /* name */
0x740E0004, // 000D JMPT R3 #0013
0x880C0100, // 000E GETMBR R3 R0 K0
0x940C0602, // 000F GETIDX R3 R3 R2
- 0x880C0702, // 0010 GETMBR R3 R3 K2
+ 0x880C0709, // 0010 GETMBR R3 R3 K9
0x1C0C0601, // 0011 EQ R3 R3 R1
0x780E000C, // 0012 JMPF R3 #0020
0x4C0C0000, // 0013 LDNIL R3
0x1C0C0203, // 0014 EQ R3 R1 R3
0x780E0004, // 0015 JMPF R3 #001B
- 0x8C0C0103, // 0016 GETMET R3 R0 K3
+ 0x8C0C010A, // 0016 GETMET R3 R0 K10
0x88140100, // 0017 GETMBR R5 R0 K0
0x94140A02, // 0018 GETIDX R5 R5 R2
- 0x88140B02, // 0019 GETMBR R5 R5 K2
+ 0x88140B09, // 0019 GETMBR R5 R5 K9
0x7C0C0400, // 001A CALL R3 2
0x880C0100, // 001B GETMBR R3 R0 K0
- 0x8C0C0704, // 001C GETMET R3 R3 K4
+ 0x8C0C070B, // 001C GETMET R3 R3 K11
0x5C140400, // 001D MOVE R5 R2
0x7C0C0400, // 001E CALL R3 2
0x70020000, // 001F JMP #0021
- 0x00080505, // 0020 ADD R2 R2 K5
+ 0x0008050C, // 0020 ADD R2 R2 K12
0x7001FFE3, // 0021 JMP #0006
0x4C0C0000, // 0022 LDNIL R3
0x200C0203, // 0023 NE R3 R1 R3
0x780E0002, // 0024 JMPF R3 #0028
- 0x8C0C0103, // 0025 GETMET R3 R0 K3
+ 0x8C0C010A, // 0025 GETMET R3 R0 K10
0x5C140200, // 0026 MOVE R5 R1
0x7C0C0400, // 0027 CALL R3 2
0x80000000, // 0028 RET 0
@@ -214,47 +394,37 @@ be_local_closure(class_MQTT_unsubscribe, /* name */
/********************************************************************
** Solidified function: mqtt_connect
********************************************************************/
-extern const bclass be_class_MQTT;
be_local_closure(class_MQTT_mqtt_connect, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_MQTT,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str(tasmota),
- /* K1 */ be_nested_str(log),
- /* K2 */ be_nested_str(BRY_X3A_X20mqtt_X20subscribe_X20all_X20registered_X20topics),
- /* K3 */ be_const_int(3),
- /* K4 */ be_nested_str(topics),
- /* K5 */ be_nested_str(fulltopic),
- /* K6 */ be_nested_str(_subscribe),
- /* K7 */ be_nested_str(stop_iteration),
- }),
+ &be_ktab_class_MQTT, /* shared constants */
&be_const_str_mqtt_connect,
&be_const_str_solidified,
( &(const binstruction[21]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0x580C0002, // 0002 LDCONST R3 K2
- 0x58100003, // 0003 LDCONST R4 K3
+ 0xB8060800, // 0000 GETNGBL R1 K4
+ 0x8C04030D, // 0001 GETMET R1 R1 K13
+ 0x580C000E, // 0002 LDCONST R3 K14
+ 0x5810000F, // 0003 LDCONST R4 K15
0x7C040600, // 0004 CALL R1 3
0x60040010, // 0005 GETGBL R1 G16
- 0x88080104, // 0006 GETMBR R2 R0 K4
+ 0x88080100, // 0006 GETMBR R2 R0 K0
0x7C040200, // 0007 CALL R1 1
0xA8020006, // 0008 EXBLK 0 #0010
0x5C080200, // 0009 MOVE R2 R1
0x7C080000, // 000A CALL R2 0
- 0x880C0505, // 000B GETMBR R3 R2 K5
- 0x8C100106, // 000C GETMET R4 R0 K6
+ 0x880C0509, // 000B GETMBR R3 R2 K9
+ 0x8C100110, // 000C GETMET R4 R0 K16
0x5C180600, // 000D MOVE R6 R3
0x7C100400, // 000E CALL R4 2
0x7001FFF8, // 000F JMP #0009
- 0x58040007, // 0010 LDCONST R1 K7
+ 0x58040003, // 0010 LDCONST R1 K3
0xAC040200, // 0011 CATCH R1 1 0
0xB0080000, // 0012 RAISE 2 R0 R0
0x50040000, // 0013 LDBOOL R1 0 0
@@ -265,210 +435,25 @@ be_local_closure(class_MQTT_mqtt_connect, /* name */
/*******************************************************************/
-extern const bclass be_class_mqtt_listener;
-
-/********************************************************************
-** Solidified function: tostring
-********************************************************************/
-extern const bclass be_class_mqtt_listener;
-be_local_closure(class_mqtt_listener_tostring, /* name */
- be_nested_proto(
- 5, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_mqtt_listener,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(_X3Cinstance_X3A_X20_X25s_X28_X27_X25s_X27_X29_X3E),
- /* K1 */ be_nested_str(fulltopic),
- }),
- &be_const_str_tostring,
- &be_const_str_solidified,
- ( &(const binstruction[ 8]) { /* code */
- 0x60040018, // 0000 GETGBL R1 G24
- 0x58080000, // 0001 LDCONST R2 K0
- 0x600C0005, // 0002 GETGBL R3 G5
- 0x5C100000, // 0003 MOVE R4 R0
- 0x7C0C0200, // 0004 CALL R3 1
- 0x88100101, // 0005 GETMBR R4 R0 K1
- 0x7C040600, // 0006 CALL R1 3
- 0x80040200, // 0007 RET 1 R1
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: init
-********************************************************************/
-extern const bclass be_class_mqtt_listener;
-be_local_closure(class_mqtt_listener_init, /* name */
- be_nested_proto(
- 8, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_mqtt_listener,
- 1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str(string),
- /* K1 */ be_nested_str(fulltopic),
- /* K2 */ be_nested_str(topic),
- /* K3 */ be_nested_str(split),
- /* K4 */ be_nested_str(_X2F),
- /* K5 */ be_nested_str(closure),
- }),
- &be_const_str_init,
- &be_const_str_solidified,
- ( &(const binstruction[ 9]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
- 0x90020201, // 0001 SETMBR R0 K1 R1
- 0x8C100703, // 0002 GETMET R4 R3 K3
- 0x5C180200, // 0003 MOVE R6 R1
- 0x581C0004, // 0004 LDCONST R7 K4
- 0x7C100600, // 0005 CALL R4 3
- 0x90020404, // 0006 SETMBR R0 K2 R4
- 0x90020A02, // 0007 SETMBR R0 K5 R2
- 0x80000000, // 0008 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: mqtt_data
-********************************************************************/
-extern const bclass be_class_mqtt_listener;
-be_local_closure(class_mqtt_listener_mqtt_data, /* name */
- be_nested_proto(
- 17, /* nstack */
- 5, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_mqtt_listener,
- 1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str(string),
- /* K1 */ be_nested_str(split),
- /* K2 */ be_nested_str(_X2F),
- /* K3 */ be_nested_str(topic),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str(_X23),
- /* K6 */ be_nested_str(_X2B),
- /* K7 */ be_const_int(1),
- /* K8 */ be_nested_str(closure),
- }),
- &be_const_str_mqtt_data,
- &be_const_str_solidified,
- ( &(const binstruction[53]) { /* code */
- 0xA4160000, // 0000 IMPORT R5 K0
- 0x8C180B01, // 0001 GETMET R6 R5 K1
- 0x5C200200, // 0002 MOVE R8 R1
- 0x58240002, // 0003 LDCONST R9 K2
- 0x7C180600, // 0004 CALL R6 3
- 0x601C000C, // 0005 GETGBL R7 G12
- 0x5C200C00, // 0006 MOVE R8 R6
- 0x7C1C0200, // 0007 CALL R7 1
- 0x88200103, // 0008 GETMBR R8 R0 K3
- 0x6024000C, // 0009 GETGBL R9 G12
- 0x5C281000, // 000A MOVE R10 R8
- 0x7C240200, // 000B CALL R9 1
- 0x58280004, // 000C LDCONST R10 K4
- 0x142C1409, // 000D LT R11 R10 R9
- 0x782E0013, // 000E JMPF R11 #0023
- 0x942C100A, // 000F GETIDX R11 R8 R10
- 0x1C301705, // 0010 EQ R12 R11 K5
- 0x78320001, // 0011 JMPF R12 #0014
- 0x7002000F, // 0012 JMP #0023
- 0x7002000C, // 0013 JMP #0021
- 0x28301407, // 0014 GE R12 R10 R7
- 0x78320002, // 0015 JMPF R12 #0019
- 0x50300000, // 0016 LDBOOL R12 0 0
- 0x80041800, // 0017 RET 1 R12
- 0x70020007, // 0018 JMP #0021
- 0x1C301706, // 0019 EQ R12 R11 K6
- 0x78320000, // 001A JMPF R12 #001C
- 0x70020004, // 001B JMP #0021
- 0x94300C0A, // 001C GETIDX R12 R6 R10
- 0x2030160C, // 001D NE R12 R11 R12
- 0x78320001, // 001E JMPF R12 #0021
- 0x50300000, // 001F LDBOOL R12 0 0
- 0x80041800, // 0020 RET 1 R12
- 0x00281507, // 0021 ADD R10 R10 K7
- 0x7001FFE9, // 0022 JMP #000D
- 0x282C1409, // 0023 GE R11 R10 R9
- 0x782E0003, // 0024 JMPF R11 #0029
- 0x202C1207, // 0025 NE R11 R9 R7
- 0x782E0001, // 0026 JMPF R11 #0029
- 0x502C0000, // 0027 LDBOOL R11 0 0
- 0x80041600, // 0028 RET 1 R11
- 0x882C0108, // 0029 GETMBR R11 R0 K8
- 0x5C301600, // 002A MOVE R12 R11
- 0x5C340200, // 002B MOVE R13 R1
- 0x5C380400, // 002C MOVE R14 R2
- 0x5C3C0600, // 002D MOVE R15 R3
- 0x5C400800, // 002E MOVE R16 R4
- 0x7C300800, // 002F CALL R12 4
- 0x4C340000, // 0030 LDNIL R13
- 0x1C34180D, // 0031 EQ R13 R12 R13
- 0x78360000, // 0032 JMPF R13 #0034
- 0x50300200, // 0033 LDBOOL R12 1 0
- 0x80041800, // 0034 RET 1 R12
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified class: mqtt_listener
-********************************************************************/
-be_local_class(mqtt_listener,
- 3,
- NULL,
- be_nested_map(6,
- ( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key(mqtt_data, -1), be_const_closure(class_mqtt_listener_mqtt_data_closure) },
- { be_const_key(tostring, -1), be_const_closure(class_mqtt_listener_tostring_closure) },
- { be_const_key(topic, -1), be_const_var(0) },
- { be_const_key(init, -1), be_const_closure(class_mqtt_listener_init_closure) },
- { be_const_key(closure, 0), be_const_var(2) },
- { be_const_key(fulltopic, -1), be_const_var(1) },
- })),
- (bstring*) &be_const_str_mqtt_listener
-);
-
/********************************************************************
** Solidified function: mqtt_listener_class
********************************************************************/
-extern const bclass be_class_MQTT;
be_local_closure(class_MQTT_mqtt_listener_class, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_MQTT,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_const_class(be_class_mqtt_listener),
- }),
+ &be_ktab_class_MQTT, /* shared constants */
&be_const_str_mqtt_listener_class,
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0xB4000000, // 0001 CLASS K0
+ 0x58040011, // 0000 LDCONST R1 K17
+ 0xB4000011, // 0001 CLASS K17
0x5C080200, // 0002 MOVE R2 R1
0x80040200, // 0003 RET 1 R1
})
@@ -480,80 +465,67 @@ be_local_closure(class_MQTT_mqtt_listener_class, /* name */
/********************************************************************
** Solidified function: subscribe
********************************************************************/
-extern const bclass be_class_MQTT;
be_local_closure(class_MQTT_subscribe, /* name */
be_nested_proto(
10, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_MQTT,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str(lazy_init),
- /* K1 */ be_nested_str(topics),
- /* K2 */ be_nested_str(fulltopic),
- /* K3 */ be_nested_str(closure),
- /* K4 */ be_nested_str(stop_iteration),
- /* K5 */ be_nested_str(mqtt_listener_class),
- /* K6 */ be_nested_str(function),
- /* K7 */ be_nested_str(tasmota),
- /* K8 */ be_nested_str(check_not_method),
- /* K9 */ be_nested_str(push),
- /* K10 */ be_nested_str(_subscribe),
- }),
+ &be_ktab_class_MQTT, /* shared constants */
&be_const_str_subscribe,
&be_const_str_solidified,
( &(const binstruction[50]) { /* code */
- 0x8C0C0100, // 0000 GETMET R3 R0 K0
+ 0x8C0C0112, // 0000 GETMET R3 R0 K18
0x7C0C0200, // 0001 CALL R3 1
0x500C0000, // 0002 LDBOOL R3 0 0
0x60100010, // 0003 GETGBL R4 G16
- 0x88140101, // 0004 GETMBR R5 R0 K1
+ 0x88140100, // 0004 GETMBR R5 R0 K0
0x7C100200, // 0005 CALL R4 1
0xA802000A, // 0006 EXBLK 0 #0012
0x5C140800, // 0007 MOVE R5 R4
0x7C140000, // 0008 CALL R5 0
- 0x88180B02, // 0009 GETMBR R6 R5 K2
+ 0x88180B09, // 0009 GETMBR R6 R5 K9
0x1C180C01, // 000A EQ R6 R6 R1
0x781A0004, // 000B JMPF R6 #0011
- 0x88180B03, // 000C GETMBR R6 R5 K3
+ 0x88180B01, // 000C GETMBR R6 R5 K1
0x1C180C02, // 000D EQ R6 R6 R2
0x781A0001, // 000E JMPF R6 #0011
0xA8040001, // 000F EXBLK 1 1
0x80000C00, // 0010 RET 0
0x7001FFF4, // 0011 JMP #0007
- 0x58100004, // 0012 LDCONST R4 K4
+ 0x58100003, // 0012 LDCONST R4 K3
0xAC100200, // 0013 CATCH R4 1 0
0xB0080000, // 0014 RAISE 2 R0 R0
- 0x8C100105, // 0015 GETMET R4 R0 K5
+ 0x8C100113, // 0015 GETMET R4 R0 K19
0x7C100200, // 0016 CALL R4 1
0x60140004, // 0017 GETGBL R5 G4
0x5C180400, // 0018 MOVE R6 R2
0x7C140200, // 0019 CALL R5 1
- 0x1C140B06, // 001A EQ R5 R5 K6
+ 0x1C140B14, // 001A EQ R5 R5 K20
0x7816000B, // 001B JMPF R5 #0028
- 0xB8160E00, // 001C GETNGBL R5 K7
- 0x8C140B08, // 001D GETMET R5 R5 K8
+ 0xB8160800, // 001C GETNGBL R5 K4
+ 0x8C140B15, // 001D GETMET R5 R5 K21
0x5C1C0400, // 001E MOVE R7 R2
0x7C140400, // 001F CALL R5 2
- 0x88140101, // 0020 GETMBR R5 R0 K1
- 0x8C140B09, // 0021 GETMET R5 R5 K9
+ 0x88140100, // 0020 GETMBR R5 R0 K0
+ 0x8C140B16, // 0021 GETMET R5 R5 K22
0x5C1C0800, // 0022 MOVE R7 R4
0x5C200200, // 0023 MOVE R8 R1
0x5C240400, // 0024 MOVE R9 R2
0x7C1C0400, // 0025 CALL R7 2
0x7C140400, // 0026 CALL R5 2
0x70020005, // 0027 JMP #002E
- 0x88140101, // 0028 GETMBR R5 R0 K1
- 0x8C140B09, // 0029 GETMET R5 R5 K9
+ 0x88140100, // 0028 GETMBR R5 R0 K0
+ 0x8C140B16, // 0029 GETMET R5 R5 K22
0x5C1C0800, // 002A MOVE R7 R4
0x5C200200, // 002B MOVE R8 R1
0x7C1C0200, // 002C CALL R7 1
0x7C140400, // 002D CALL R5 2
- 0x8C14010A, // 002E GETMET R5 R0 K10
+ 0x8C140110, // 002E GETMET R5 R0 K16
0x5C1C0200, // 002F MOVE R7 R1
0x7C140400, // 0030 CALL R5 2
0x80000000, // 0031 RET 0
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h
index c3889218d..a3fdf5e99 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_partition_core.h
@@ -3,36 +3,52 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+extern const bclass be_class_Partition_otadata;
+// compact class 'Partition_otadata' ktab size: 24, total: 52 (saved 224 bytes)
+static const bvalue be_ktab_class_Partition_otadata[24] = {
+ /* K0 */ be_nested_str(flash),
+ /* K1 */ be_nested_str(seq0),
+ /* K2 */ be_const_int(0),
+ /* K3 */ be_nested_str(seq1),
+ /* K4 */ be_const_int(1),
+ /* K5 */ be_nested_str(offset),
+ /* K6 */ be_nested_str(add),
+ /* K7 */ be_nested_str(FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF),
+ /* K8 */ be_nested_str(crc32_ota_seq),
+ /* K9 */ be_nested_str(erase),
+ /* K10 */ be_nested_str(write),
+ /* K11 */ be_nested_str(_X3Cinstance_X3A_X20Partition_otadata_X28ota_active_X3A_X25s_X2C_X20ota_seq_X3D_X5B_X25d_X2C_X25d_X5D_X2C_X20ota_max_X3D_X25d_X29_X3E),
+ /* K12 */ be_nested_str(active_otadata),
+ /* K13 */ be_nested_str(ota_),
+ /* K14 */ be_nested_str(factory),
+ /* K15 */ be_nested_str(maxota),
+ /* K16 */ be_nested_str(has_factory),
+ /* K17 */ be_nested_str(read),
+ /* K18 */ be_nested_str(get),
+ /* K19 */ be_nested_str(_validate),
+ /* K20 */ be_const_class(be_class_Partition_otadata),
+ /* K21 */ be_nested_str(crc),
+ /* K22 */ be_nested_str(crc32),
+ /* K23 */ be_nested_str(load),
+};
+
extern const bclass be_class_Partition_otadata;
/********************************************************************
** Solidified function: save
********************************************************************/
-extern const bclass be_class_Partition_otadata;
be_local_closure(class_Partition_otadata_save, /* name */
be_nested_proto(
11, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition_otadata,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str(flash),
- /* K1 */ be_nested_str(seq0),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str(seq1),
- /* K4 */ be_const_int(1),
- /* K5 */ be_nested_str(offset),
- /* K6 */ be_nested_str(add),
- /* K7 */ be_nested_str(FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF),
- /* K8 */ be_nested_str(crc32_ota_seq),
- /* K9 */ be_nested_str(erase),
- /* K10 */ be_nested_str(write),
- }),
+ &be_ktab_class_Partition_otadata, /* shared constants */
&be_const_str_save,
&be_const_str_solidified,
( &(const binstruction[53]) { /* code */
@@ -98,44 +114,34 @@ be_local_closure(class_Partition_otadata_save, /* name */
/********************************************************************
** Solidified function: tostring
********************************************************************/
-extern const bclass be_class_Partition_otadata;
be_local_closure(class_Partition_otadata_tostring, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition_otadata,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str(_X3Cinstance_X3A_X20Partition_otadata_X28ota_active_X3A_X25s_X2C_X20ota_seq_X3D_X5B_X25d_X2C_X25d_X5D_X2C_X20ota_max_X3D_X25d_X29_X3E),
- /* K1 */ be_nested_str(active_otadata),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str(ota_),
- /* K4 */ be_nested_str(factory),
- /* K5 */ be_nested_str(seq0),
- /* K6 */ be_nested_str(seq1),
- /* K7 */ be_nested_str(maxota),
- }),
+ &be_ktab_class_Partition_otadata, /* shared constants */
&be_const_str_tostring,
&be_const_str_solidified,
( &(const binstruction[16]) { /* code */
0x60040018, // 0000 GETGBL R1 G24
- 0x58080000, // 0001 LDCONST R2 K0
- 0x880C0101, // 0002 GETMBR R3 R0 K1
+ 0x5808000B, // 0001 LDCONST R2 K11
+ 0x880C010C, // 0002 GETMBR R3 R0 K12
0x280C0702, // 0003 GE R3 R3 K2
0x780E0004, // 0004 JMPF R3 #000A
0x600C0008, // 0005 GETGBL R3 G8
- 0x88100101, // 0006 GETMBR R4 R0 K1
+ 0x8810010C, // 0006 GETMBR R4 R0 K12
0x7C0C0200, // 0007 CALL R3 1
- 0x000E0603, // 0008 ADD R3 K3 R3
+ 0x000E1A03, // 0008 ADD R3 K13 R3
0x70020000, // 0009 JMP #000B
- 0x580C0004, // 000A LDCONST R3 K4
- 0x88100105, // 000B GETMBR R4 R0 K5
- 0x88140106, // 000C GETMBR R5 R0 K6
- 0x88180107, // 000D GETMBR R6 R0 K7
+ 0x580C000E, // 000A LDCONST R3 K14
+ 0x88100101, // 000B GETMBR R4 R0 K1
+ 0x88140103, // 000C GETMBR R5 R0 K3
+ 0x8818010F, // 000D GETMBR R6 R0 K15
0x7C040A00, // 000E CALL R1 5
0x80040200, // 000F RET 1 R1
})
@@ -147,63 +153,54 @@ be_local_closure(class_Partition_otadata_tostring, /* name */
/********************************************************************
** Solidified function: _validate
********************************************************************/
-extern const bclass be_class_Partition_otadata;
be_local_closure(class_Partition_otadata__validate, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition_otadata,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str(active_otadata),
- /* K1 */ be_nested_str(has_factory),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str(seq0),
- /* K4 */ be_const_int(1),
- /* K5 */ be_nested_str(maxota),
- /* K6 */ be_nested_str(seq1),
- }),
+ &be_ktab_class_Partition_otadata, /* shared constants */
&be_const_str__validate,
&be_const_str_solidified,
( &(const binstruction[35]) { /* code */
- 0x88040101, // 0000 GETMBR R1 R0 K1
+ 0x88040110, // 0000 GETMBR R1 R0 K16
0x78060001, // 0001 JMPF R1 #0004
0x5405FFFE, // 0002 LDINT R1 -1
0x70020000, // 0003 JMP #0005
0x58040002, // 0004 LDCONST R1 K2
- 0x90020001, // 0005 SETMBR R0 K0 R1
- 0x88040103, // 0006 GETMBR R1 R0 K3
+ 0x90021801, // 0005 SETMBR R0 K12 R1
+ 0x88040101, // 0006 GETMBR R1 R0 K1
0x4C080000, // 0007 LDNIL R2
0x20040202, // 0008 NE R1 R1 R2
0x78060005, // 0009 JMPF R1 #0010
- 0x88040103, // 000A GETMBR R1 R0 K3
+ 0x88040101, // 000A GETMBR R1 R0 K1
0x04040304, // 000B SUB R1 R1 K4
- 0x88080105, // 000C GETMBR R2 R0 K5
+ 0x8808010F, // 000C GETMBR R2 R0 K15
0x00080504, // 000D ADD R2 R2 K4
0x10040202, // 000E MOD R1 R1 R2
- 0x90020001, // 000F SETMBR R0 K0 R1
- 0x88040106, // 0010 GETMBR R1 R0 K6
+ 0x90021801, // 000F SETMBR R0 K12 R1
+ 0x88040103, // 0010 GETMBR R1 R0 K3
0x4C080000, // 0011 LDNIL R2
0x20040202, // 0012 NE R1 R1 R2
0x7806000D, // 0013 JMPF R1 #0022
- 0x88040103, // 0014 GETMBR R1 R0 K3
+ 0x88040101, // 0014 GETMBR R1 R0 K1
0x4C080000, // 0015 LDNIL R2
0x1C040202, // 0016 EQ R1 R1 R2
0x74060003, // 0017 JMPT R1 #001C
- 0x88040106, // 0018 GETMBR R1 R0 K6
- 0x88080103, // 0019 GETMBR R2 R0 K3
+ 0x88040103, // 0018 GETMBR R1 R0 K3
+ 0x88080101, // 0019 GETMBR R2 R0 K1
0x24040202, // 001A GT R1 R1 R2
0x78060005, // 001B JMPF R1 #0022
- 0x88040106, // 001C GETMBR R1 R0 K6
+ 0x88040103, // 001C GETMBR R1 R0 K3
0x04040304, // 001D SUB R1 R1 K4
- 0x88080105, // 001E GETMBR R2 R0 K5
+ 0x8808010F, // 001E GETMBR R2 R0 K15
0x00080504, // 001F ADD R2 R2 K4
0x10040202, // 0020 MOD R1 R1 R2
- 0x90020001, // 0021 SETMBR R0 K0 R1
+ 0x90021801, // 0021 SETMBR R0 K12 R1
0x80000000, // 0022 RET 0
})
)
@@ -214,24 +211,21 @@ be_local_closure(class_Partition_otadata__validate, /* name */
/********************************************************************
** Solidified function: set_ota_max
********************************************************************/
-extern const bclass be_class_Partition_otadata;
be_local_closure(class_Partition_otadata_set_ota_max, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition_otadata,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(maxota),
- }),
+ &be_ktab_class_Partition_otadata, /* shared constants */
&be_const_str_set_ota_max,
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90021E01, // 0000 SETMBR R0 K15 R1
0x80000000, // 0001 RET 0
})
)
@@ -242,77 +236,66 @@ be_local_closure(class_Partition_otadata_set_ota_max, /* name */
/********************************************************************
** Solidified function: load
********************************************************************/
-extern const bclass be_class_Partition_otadata;
be_local_closure(class_Partition_otadata_load, /* name */
be_nested_proto(
9, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition_otadata,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str(flash),
- /* K1 */ be_nested_str(read),
- /* K2 */ be_nested_str(offset),
- /* K3 */ be_nested_str(seq0),
- /* K4 */ be_nested_str(get),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str(seq1),
- /* K7 */ be_nested_str(crc32_ota_seq),
- /* K8 */ be_nested_str(_validate),
- }),
+ &be_ktab_class_Partition_otadata, /* shared constants */
&be_const_str_load,
&be_const_str_solidified,
( &(const binstruction[48]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080301, // 0001 GETMET R2 R1 K1
- 0x88100102, // 0002 GETMBR R4 R0 K2
+ 0x8C080311, // 0001 GETMET R2 R1 K17
+ 0x88100105, // 0002 GETMBR R4 R0 K5
0x5416001F, // 0003 LDINT R5 32
0x7C080600, // 0004 CALL R2 3
- 0x8C0C0301, // 0005 GETMET R3 R1 K1
- 0x88140102, // 0006 GETMBR R5 R0 K2
+ 0x8C0C0311, // 0005 GETMET R3 R1 K17
+ 0x88140105, // 0006 GETMBR R5 R0 K5
0x541A0FFF, // 0007 LDINT R6 4096
0x00140A06, // 0008 ADD R5 R5 R6
0x541A001F, // 0009 LDINT R6 32
0x7C0C0600, // 000A CALL R3 3
- 0x8C100504, // 000B GETMET R4 R2 K4
- 0x58180005, // 000C LDCONST R6 K5
+ 0x8C100512, // 000B GETMET R4 R2 K18
+ 0x58180002, // 000C LDCONST R6 K2
0x541E0003, // 000D LDINT R7 4
0x7C100600, // 000E CALL R4 3
- 0x90020604, // 000F SETMBR R0 K3 R4
- 0x8C100704, // 0010 GETMET R4 R3 K4
- 0x58180005, // 0011 LDCONST R6 K5
+ 0x90020204, // 000F SETMBR R0 K1 R4
+ 0x8C100712, // 0010 GETMET R4 R3 K18
+ 0x58180002, // 0011 LDCONST R6 K2
0x541E0003, // 0012 LDINT R7 4
0x7C100600, // 0013 CALL R4 3
- 0x90020C04, // 0014 SETMBR R0 K6 R4
- 0x8C100504, // 0015 GETMET R4 R2 K4
+ 0x90020604, // 0014 SETMBR R0 K3 R4
+ 0x8C100512, // 0015 GETMET R4 R2 K18
0x541A001B, // 0016 LDINT R6 28
0x541E0003, // 0017 LDINT R7 4
0x7C100600, // 0018 CALL R4 3
- 0x8C140107, // 0019 GETMET R5 R0 K7
- 0x881C0103, // 001A GETMBR R7 R0 K3
+ 0x8C140108, // 0019 GETMET R5 R0 K8
+ 0x881C0101, // 001A GETMBR R7 R0 K1
0x7C140400, // 001B CALL R5 2
0x1C100805, // 001C EQ R4 R4 R5
- 0x8C140704, // 001D GETMET R5 R3 K4
+ 0x8C140712, // 001D GETMET R5 R3 K18
0x541E001B, // 001E LDINT R7 28
0x54220003, // 001F LDINT R8 4
0x7C140600, // 0020 CALL R5 3
- 0x8C180107, // 0021 GETMET R6 R0 K7
- 0x88200106, // 0022 GETMBR R8 R0 K6
+ 0x8C180108, // 0021 GETMET R6 R0 K8
+ 0x88200103, // 0022 GETMBR R8 R0 K3
0x7C180400, // 0023 CALL R6 2
0x1C140A06, // 0024 EQ R5 R5 R6
0x5C180800, // 0025 MOVE R6 R4
0x741A0001, // 0026 JMPT R6 #0029
0x4C180000, // 0027 LDNIL R6
- 0x90020606, // 0028 SETMBR R0 K3 R6
+ 0x90020206, // 0028 SETMBR R0 K1 R6
0x5C180A00, // 0029 MOVE R6 R5
0x741A0001, // 002A JMPT R6 #002D
0x4C180000, // 002B LDNIL R6
- 0x90020C06, // 002C SETMBR R0 K6 R6
- 0x8C180108, // 002D GETMET R6 R0 K8
+ 0x90020606, // 002C SETMBR R0 K3 R6
+ 0x8C180113, // 002D GETMET R6 R0 K19
0x7C180200, // 002E CALL R6 1
0x80000000, // 002F RET 0
})
@@ -324,33 +307,27 @@ be_local_closure(class_Partition_otadata_load, /* name */
/********************************************************************
** Solidified function: crc32_ota_seq
********************************************************************/
-extern const bclass be_class_Partition_otadata;
be_local_closure(class_Partition_otadata_crc32_ota_seq, /* name */
be_nested_proto(
10, /* nstack */
1, /* argc */
- 4, /* varg */
+ 12, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition_otadata,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_const_class(be_class_Partition_otadata),
- /* K1 */ be_nested_str(crc),
- /* K2 */ be_nested_str(crc32),
- /* K3 */ be_nested_str(add),
- }),
+ &be_ktab_class_Partition_otadata, /* shared constants */
&be_const_str_crc32_ota_seq,
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0xA40A0200, // 0001 IMPORT R2 K1
- 0x8C0C0502, // 0002 GETMET R3 R2 K2
+ 0x58040014, // 0000 LDCONST R1 K20
+ 0xA40A2A00, // 0001 IMPORT R2 K21
+ 0x8C0C0516, // 0002 GETMET R3 R2 K22
0x5415FFFE, // 0003 LDINT R5 -1
0x60180015, // 0004 GETGBL R6 G21
0x7C180000, // 0005 CALL R6 0
- 0x8C180D03, // 0006 GETMET R6 R6 K3
+ 0x8C180D06, // 0006 GETMET R6 R6 K6
0x5C200000, // 0007 MOVE R8 R0
0x54260003, // 0008 LDINT R9 4
0x7C180600, // 0009 CALL R6 3
@@ -365,48 +342,40 @@ be_local_closure(class_Partition_otadata_crc32_ota_seq, /* name */
/********************************************************************
** Solidified function: set_active
********************************************************************/
-extern const bclass be_class_Partition_otadata;
be_local_closure(class_Partition_otadata_set_active, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition_otadata,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str(seq0),
- /* K2 */ be_nested_str(seq1),
- /* K3 */ be_const_int(1),
- /* K4 */ be_nested_str(maxota),
- /* K5 */ be_nested_str(_validate),
- }),
+ &be_ktab_class_Partition_otadata, /* shared constants */
&be_const_str_set_active,
&be_const_str_solidified,
( &(const binstruction[41]) { /* code */
- 0x58080000, // 0000 LDCONST R2 K0
- 0x580C0000, // 0001 LDCONST R3 K0
+ 0x58080002, // 0000 LDCONST R2 K2
+ 0x580C0002, // 0001 LDCONST R3 K2
0x88100101, // 0002 GETMBR R4 R0 K1
0x4C140000, // 0003 LDNIL R5
0x20100805, // 0004 NE R4 R4 R5
0x78120001, // 0005 JMPF R4 #0008
0x88080101, // 0006 GETMBR R2 R0 K1
- 0x580C0000, // 0007 LDCONST R3 K0
- 0x88100102, // 0008 GETMBR R4 R0 K2
+ 0x580C0002, // 0007 LDCONST R3 K2
+ 0x88100103, // 0008 GETMBR R4 R0 K3
0x4C140000, // 0009 LDNIL R5
0x20100805, // 000A NE R4 R4 R5
0x78120004, // 000B JMPF R4 #0011
- 0x88100102, // 000C GETMBR R4 R0 K2
+ 0x88100103, // 000C GETMBR R4 R0 K3
0x24100802, // 000D GT R4 R4 R2
0x78120001, // 000E JMPF R4 #0011
- 0x88080102, // 000F GETMBR R2 R0 K2
- 0x580C0003, // 0010 LDCONST R3 K3
- 0x04100503, // 0011 SUB R4 R2 K3
- 0x88140104, // 0012 GETMBR R5 R0 K4
- 0x00140B03, // 0013 ADD R5 R5 K3
+ 0x88080103, // 000F GETMBR R2 R0 K3
+ 0x580C0004, // 0010 LDCONST R3 K4
+ 0x04100504, // 0011 SUB R4 R2 K4
+ 0x8814010F, // 0012 GETMBR R5 R0 K15
+ 0x00140B04, // 0013 ADD R5 R5 K4
0x10100805, // 0014 MOD R4 R4 R5
0x20140801, // 0015 NE R5 R4 R1
0x78160010, // 0016 JMPF R5 #0028
@@ -415,17 +384,17 @@ be_local_closure(class_Partition_otadata_set_active, /* name */
0x04140204, // 0019 SUB R5 R1 R4
0x00080405, // 001A ADD R2 R2 R5
0x70020004, // 001B JMP #0021
- 0x88140104, // 001C GETMBR R5 R0 K4
- 0x00140B03, // 001D ADD R5 R5 K3
+ 0x8814010F, // 001C GETMBR R5 R0 K15
+ 0x00140B04, // 001D ADD R5 R5 K4
0x04140A04, // 001E SUB R5 R5 R4
0x00140A01, // 001F ADD R5 R5 R1
0x00080405, // 0020 ADD R2 R2 R5
- 0x1C140703, // 0021 EQ R5 R3 K3
+ 0x1C140704, // 0021 EQ R5 R3 K4
0x78160001, // 0022 JMPF R5 #0025
0x90020202, // 0023 SETMBR R0 K1 R2
0x70020000, // 0024 JMP #0026
- 0x90020402, // 0025 SETMBR R0 K2 R2
- 0x8C140105, // 0026 GETMET R5 R0 K5
+ 0x90020602, // 0025 SETMBR R0 K3 R2
+ 0x8C140113, // 0026 GETMET R5 R0 K19
0x7C140200, // 0027 CALL R5 1
0x80000000, // 0028 RET 0
})
@@ -437,45 +406,37 @@ be_local_closure(class_Partition_otadata_set_active, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Partition_otadata;
be_local_closure(class_Partition_otadata_init, /* name */
be_nested_proto(
6, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition_otadata,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str(maxota),
- /* K1 */ be_nested_str(has_factory),
- /* K2 */ be_const_int(1),
- /* K3 */ be_nested_str(offset),
- /* K4 */ be_nested_str(active_otadata),
- /* K5 */ be_nested_str(load),
- }),
+ &be_ktab_class_Partition_otadata, /* shared constants */
&be_const_str_init,
&be_const_str_solidified,
( &(const binstruction[19]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
- 0x88100100, // 0002 GETMBR R4 R0 K0
+ 0x90021E01, // 0000 SETMBR R0 K15 R1
+ 0x90022002, // 0001 SETMBR R0 K16 R2
+ 0x8810010F, // 0002 GETMBR R4 R0 K15
0x4C140000, // 0003 LDNIL R5
0x1C100805, // 0004 EQ R4 R4 R5
0x78120000, // 0005 JMPF R4 #0007
- 0x90020102, // 0006 SETMBR R0 K0 K2
- 0x90020603, // 0007 SETMBR R0 K3 R3
- 0x88100103, // 0008 GETMBR R4 R0 K3
+ 0x90021F04, // 0006 SETMBR R0 K15 K4
+ 0x90020A03, // 0007 SETMBR R0 K5 R3
+ 0x88100105, // 0008 GETMBR R4 R0 K5
0x4C140000, // 0009 LDNIL R5
0x1C100805, // 000A EQ R4 R4 R5
0x78120001, // 000B JMPF R4 #000E
0x5412DFFF, // 000C LDINT R4 57344
- 0x90020604, // 000D SETMBR R0 K3 R4
+ 0x90020A04, // 000D SETMBR R0 K5 R4
0x5411FFFE, // 000E LDINT R4 -1
- 0x90020804, // 000F SETMBR R0 K4 R4
- 0x8C100105, // 0010 GETMET R4 R0 K5
+ 0x90021804, // 000F SETMBR R0 K12 R4
+ 0x8C100117, // 0010 GETMET R4 R0 K23
0x7C100200, // 0011 CALL R4 1
0x80000000, // 0012 RET 0
})
@@ -509,31 +470,99 @@ be_local_class(Partition_otadata,
})),
(bstring*) &be_const_str_Partition_otadata
);
+extern const bclass be_class_Partition;
+// compact class 'Partition' ktab size: 71, total: 134 (saved 504 bytes)
+static const bvalue be_ktab_class_Partition[71] = {
+ /* K0 */ be_nested_str(flash),
+ /* K1 */ be_nested_str(tobytes),
+ /* K2 */ be_nested_str(erase),
+ /* K3 */ be_nested_str(write),
+ /* K4 */ be_nested_str(otadata),
+ /* K5 */ be_nested_str(save),
+ /* K6 */ be_nested_str(raw),
+ /* K7 */ be_nested_str(read),
+ /* K8 */ be_nested_str(active_otadata),
+ /* K9 */ be_nested_str(slots),
+ /* K10 */ be_nested_str(load),
+ /* K11 */ be_nested_str(parse),
+ /* K12 */ be_nested_str(load_otadata),
+ /* K13 */ be_const_int(0),
+ /* K14 */ be_const_int(1),
+ /* K15 */ be_nested_str(get),
+ /* K16 */ be_const_int(2),
+ /* K17 */ be_nested_str(partition_core),
+ /* K18 */ be_nested_str(Partition_info),
+ /* K19 */ be_nested_str(push),
+ /* K20 */ be_nested_str(md5),
+ /* K21 */ be_nested_str(stop_iteration),
+ /* K22 */ be_nested_str(tasmota),
+ /* K23 */ be_nested_str(memory),
+ /* K24 */ be_nested_str(find),
+ /* K25 */ be_nested_str(flash_real),
+ /* K26 */ be_nested_str(get_flash_definition_sector),
+ /* K27 */ be_const_int(3),
+ /* K28 */ be_nested_str(log),
+ /* K29 */ be_nested_str(UPL_X3A_X20changing_X20flash_X20definition_X20from_X200x02X_X20to_X200x_X2502X),
+ /* K30 */ be_nested_str(wrong_X20flash_X20size_X20),
+ /* K31 */ be_nested_str(internal_error),
+ /* K32 */ be_const_class(be_class_Partition),
+ /* K33 */ be_nested_str(E9),
+ /* K34 */ be_nested_str(get_unallocated_k),
+ /* K35 */ be_nested_str(BRY_X3A_X20Trying_X20to_X20expand_X20FS_X20by_X20_X25i_X20kB),
+ /* K36 */ be_nested_str(resize_max_flash_size_k),
+ /* K37 */ be_nested_str(sz),
+ /* K38 */ be_nested_str(global),
+ /* K39 */ be_nested_str(restart_flag),
+ /* K40 */ be_nested_str(BRY_X3A_X20Successfully_X20resized_X20FS_X2C_X20restarting),
+ /* K41 */ be_nested_str(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s),
+ /* K42 */ be_nested_str(factory),
+ /* K43 */ be_nested_str(ota_max),
+ /* K44 */ be_nested_str(type),
+ /* K45 */ be_nested_str(subtype),
+ /* K46 */ be_nested_str(start),
+ /* K47 */ be_nested_str(Partition_otadata),
+ /* K48 */ be_nested_str(has_factory),
+ /* K49 */ be_nested_str(_X3Cinstance_X3A_X20Partition_X28_X5B_X0A),
+ /* K50 */ be_nested_str(_X20_X20),
+ /* K51 */ be_nested_str(tostring),
+ /* K52 */ be_nested_str(_X0A),
+ /* K53 */ be_nested_str(_X5D_X2C_X0A_X20_X20),
+ /* K54 */ be_nested_str(_X0A_X29_X3E),
+ /* K55 */ be_nested_str(get_factory_slot),
+ /* K56 */ be_nested_str(value_error),
+ /* K57 */ be_nested_str(Too_X20many_X20partiition_X20slots),
+ /* K58 */ be_nested_str(MD5),
+ /* K59 */ be_nested_str(update),
+ /* K60 */ be_nested_str(EBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFF),
+ /* K61 */ be_nested_str(finish),
+ /* K62 */ be_nested_str(is_spiffs),
+ /* K63 */ be_nested_str(No_X20FS_X20partition_X20found),
+ /* K64 */ be_nested_str(00),
+ /* K65 */ be_nested_str(is_factory),
+ /* K66 */ be_nested_str(Invalid_X20ota_X20partition_X20number),
+ /* K67 */ be_nested_str(set_ota_max),
+ /* K68 */ be_nested_str(set_active),
+ /* K69 */ be_nested_str(get_max_flash_size_k),
+ /* K70 */ be_nested_str(is_ota),
+};
+
extern const bclass be_class_Partition;
/********************************************************************
** Solidified function: save
********************************************************************/
-extern const bclass be_class_Partition;
be_local_closure(class_Partition_save, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str(flash),
- /* K1 */ be_nested_str(tobytes),
- /* K2 */ be_nested_str(erase),
- /* K3 */ be_nested_str(write),
- /* K4 */ be_nested_str(otadata),
- /* K5 */ be_nested_str(save),
- }),
+ &be_ktab_class_Partition, /* shared constants */
&be_const_str_save,
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
@@ -561,31 +590,26 @@ be_local_closure(class_Partition_save, /* name */
/********************************************************************
** Solidified function: load
********************************************************************/
-extern const bclass be_class_Partition;
be_local_closure(class_Partition_load, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(flash),
- /* K1 */ be_nested_str(raw),
- /* K2 */ be_nested_str(read),
- }),
+ &be_ktab_class_Partition, /* shared constants */
&be_const_str_load,
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080302, // 0001 GETMET R2 R1 K2
+ 0x8C080307, // 0001 GETMET R2 R1 K7
0x54127FFF, // 0002 LDINT R4 32768
0x54160FFF, // 0003 LDINT R5 4096
0x7C080600, // 0004 CALL R2 3
- 0x90020202, // 0005 SETMBR R0 K1 R2
+ 0x90020C02, // 0005 SETMBR R0 K6 R2
0x80000000, // 0006 RET 0
})
)
@@ -596,26 +620,22 @@ be_local_closure(class_Partition_load, /* name */
/********************************************************************
** Solidified function: get_active
********************************************************************/
-extern const bclass be_class_Partition;
be_local_closure(class_Partition_get_active, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(otadata),
- /* K1 */ be_nested_str(active_otadata),
- }),
+ &be_ktab_class_Partition, /* shared constants */
&be_const_str_get_active,
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
+ 0x88040104, // 0000 GETMBR R1 R0 K4
+ 0x88040308, // 0001 GETMBR R1 R1 K8
0x80040200, // 0002 RET 1 R1
})
)
@@ -626,34 +646,28 @@ be_local_closure(class_Partition_get_active, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Partition;
be_local_closure(class_Partition_init, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str(slots),
- /* K1 */ be_nested_str(load),
- /* K2 */ be_nested_str(parse),
- /* K3 */ be_nested_str(load_otadata),
- }),
+ &be_ktab_class_Partition, /* shared constants */
&be_const_str_init,
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
0x60040012, // 0000 GETGBL R1 G18
0x7C040000, // 0001 CALL R1 0
- 0x90020001, // 0002 SETMBR R0 K0 R1
- 0x8C040101, // 0003 GETMET R1 R0 K1
+ 0x90021201, // 0002 SETMBR R0 K9 R1
+ 0x8C04010A, // 0003 GETMET R1 R0 K10
0x7C040200, // 0004 CALL R1 1
- 0x8C040102, // 0005 GETMET R1 R0 K2
+ 0x8C04010B, // 0005 GETMET R1 R0 K11
0x7C040200, // 0006 CALL R1 1
- 0x8C040103, // 0007 GETMET R1 R0 K3
+ 0x8C04010C, // 0007 GETMET R1 R0 K12
0x7C040200, // 0008 CALL R1 1
0x80000000, // 0009 RET 0
})
@@ -665,63 +679,50 @@ be_local_closure(class_Partition_init, /* name */
/********************************************************************
** Solidified function: parse
********************************************************************/
-extern const bclass be_class_Partition;
be_local_closure(class_Partition_parse, /* name */
be_nested_proto(
9, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str(raw),
- /* K2 */ be_const_int(1),
- /* K3 */ be_nested_str(get),
- /* K4 */ be_const_int(2),
- /* K5 */ be_nested_str(partition_core),
- /* K6 */ be_nested_str(Partition_info),
- /* K7 */ be_nested_str(slots),
- /* K8 */ be_nested_str(push),
- /* K9 */ be_nested_str(md5),
- /* K10 */ be_nested_str(stop_iteration),
- }),
+ &be_ktab_class_Partition, /* shared constants */
&be_const_str_parse,
&be_const_str_solidified,
( &(const binstruction[57]) { /* code */
0x60040010, // 0000 GETGBL R1 G16
0x540A005D, // 0001 LDINT R2 94
- 0x400A0002, // 0002 CONNECT R2 K0 R2
+ 0x400A1A02, // 0002 CONNECT R2 K13 R2
0x7C040200, // 0003 CALL R1 1
0xA802002F, // 0004 EXBLK 0 #0035
0x5C080200, // 0005 MOVE R2 R1
0x7C080000, // 0006 CALL R2 0
0x540E001F, // 0007 LDINT R3 32
0x080C0403, // 0008 MUL R3 R2 R3
- 0x00100502, // 0009 ADD R4 R2 K2
+ 0x0010050E, // 0009 ADD R4 R2 K14
0x5416001F, // 000A LDINT R5 32
0x08100805, // 000B MUL R4 R4 R5
- 0x04100902, // 000C SUB R4 R4 K2
+ 0x0410090E, // 000C SUB R4 R4 K14
0x400C0604, // 000D CONNECT R3 R3 R4
- 0x88100101, // 000E GETMBR R4 R0 K1
+ 0x88100106, // 000E GETMBR R4 R0 K6
0x940C0803, // 000F GETIDX R3 R4 R3
- 0x8C140703, // 0010 GETMET R5 R3 K3
- 0x581C0000, // 0011 LDCONST R7 K0
- 0x58200004, // 0012 LDCONST R8 K4
+ 0x8C14070F, // 0010 GETMET R5 R3 K15
+ 0x581C000D, // 0011 LDCONST R7 K13
+ 0x58200010, // 0012 LDCONST R8 K16
0x7C140600, // 0013 CALL R5 3
0x5C100A00, // 0014 MOVE R4 R5
0x541650A9, // 0015 LDINT R5 20650
0x1C140805, // 0016 EQ R5 R4 R5
0x78160008, // 0017 JMPF R5 #0021
- 0xB8160A00, // 0018 GETNGBL R5 K5
- 0x8C140B06, // 0019 GETMET R5 R5 K6
+ 0xB8162200, // 0018 GETNGBL R5 K17
+ 0x8C140B12, // 0019 GETMET R5 R5 K18
0x5C1C0600, // 001A MOVE R7 R3
0x7C140400, // 001B CALL R5 2
- 0x88180107, // 001C GETMBR R6 R0 K7
- 0x8C180D08, // 001D GETMET R6 R6 K8
+ 0x88180109, // 001C GETMBR R6 R0 K9
+ 0x8C180D13, // 001D GETMET R6 R6 K19
0x5C200A00, // 001E MOVE R8 R5
0x7C180400, // 001F CALL R6 2
0x70020010, // 0020 JMP #0032
@@ -734,18 +735,18 @@ be_local_closure(class_Partition_parse, /* name */
0x00140A06, // 0027 ADD R5 R5 R6
0x541A0020, // 0028 LDINT R6 33
0x08180406, // 0029 MUL R6 R2 R6
- 0x04180D02, // 002A SUB R6 R6 K2
+ 0x04180D0E, // 002A SUB R6 R6 K14
0x40140A06, // 002B CONNECT R5 R5 R6
- 0x88180101, // 002C GETMBR R6 R0 K1
+ 0x88180106, // 002C GETMBR R6 R0 K6
0x94140C05, // 002D GETIDX R5 R6 R5
- 0x90021205, // 002E SETMBR R0 K9 R5
+ 0x90022805, // 002E SETMBR R0 K20 R5
0x70020002, // 002F JMP #0033
0x70020000, // 0030 JMP #0032
0x70020000, // 0031 JMP #0033
0x7001FFD1, // 0032 JMP #0005
0xA8040001, // 0033 EXBLK 1 1
0x70020002, // 0034 JMP #0038
- 0x5804000A, // 0035 LDCONST R1 K10
+ 0x58040015, // 0035 LDCONST R1 K21
0xAC040200, // 0036 CATCH R1 1 0
0xB0080000, // 0037 RAISE 2 R0 R0
0x80000000, // 0038 RET 0
@@ -758,42 +759,34 @@ be_local_closure(class_Partition_parse, /* name */
/********************************************************************
** Solidified function: get_max_flash_size_k
********************************************************************/
-extern const bclass be_class_Partition;
be_local_closure(class_Partition_get_max_flash_size_k, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str(tasmota),
- /* K1 */ be_nested_str(memory),
- /* K2 */ be_nested_str(flash),
- /* K3 */ be_nested_str(find),
- /* K4 */ be_nested_str(flash_real),
- /* K5 */ be_nested_str(get_flash_definition_sector),
- }),
+ &be_ktab_class_Partition, /* shared constants */
&be_const_str_get_max_flash_size_k,
&be_const_str_solidified,
( &(const binstruction[20]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0xB8062C00, // 0000 GETNGBL R1 K22
+ 0x8C040317, // 0001 GETMET R1 R1 K23
0x7C040200, // 0002 CALL R1 1
- 0x94040302, // 0003 GETIDX R1 R1 K2
- 0xB80A0000, // 0004 GETNGBL R2 K0
- 0x8C080501, // 0005 GETMET R2 R2 K1
+ 0x94040300, // 0003 GETIDX R1 R1 K0
+ 0xB80A2C00, // 0004 GETNGBL R2 K22
+ 0x8C080517, // 0005 GETMET R2 R2 K23
0x7C080200, // 0006 CALL R2 1
- 0x8C080503, // 0007 GETMET R2 R2 K3
- 0x58100004, // 0008 LDCONST R4 K4
+ 0x8C080518, // 0007 GETMET R2 R2 K24
+ 0x58100019, // 0008 LDCONST R4 K25
0x5C140200, // 0009 MOVE R5 R1
0x7C080600, // 000A CALL R2 3
0x200C0202, // 000B NE R3 R1 R2
0x780E0005, // 000C JMPF R3 #0013
- 0x8C0C0105, // 000D GETMET R3 R0 K5
+ 0x8C0C011A, // 000D GETMET R3 R0 K26
0x7C0C0200, // 000E CALL R3 1
0x4C100000, // 000F LDNIL R4
0x200C0604, // 0010 NE R3 R3 R4
@@ -809,71 +802,53 @@ be_local_closure(class_Partition_get_max_flash_size_k, /* name */
/********************************************************************
** Solidified function: resize_max_flash_size_k
********************************************************************/
-extern const bclass be_class_Partition;
be_local_closure(class_Partition_resize_max_flash_size_k, /* name */
be_nested_proto(
16, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
- /* K0 */ be_nested_str(tasmota),
- /* K1 */ be_nested_str(memory),
- /* K2 */ be_nested_str(flash),
- /* K3 */ be_nested_str(find),
- /* K4 */ be_nested_str(flash_real),
- /* K5 */ be_nested_str(get_flash_definition_sector),
- /* K6 */ be_nested_str(read),
- /* K7 */ be_const_int(3),
- /* K8 */ be_const_int(1),
- /* K9 */ be_const_int(0),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str(write),
- /* K12 */ be_nested_str(log),
- /* K13 */ be_nested_str(UPL_X3A_X20changing_X20flash_X20definition_X20from_X200x02X_X20to_X200x_X2502X),
- /* K14 */ be_nested_str(wrong_X20flash_X20size_X20),
- /* K15 */ be_nested_str(internal_error),
- }),
+ &be_ktab_class_Partition, /* shared constants */
&be_const_str_resize_max_flash_size_k,
&be_const_str_solidified,
( &(const binstruction[94]) { /* code */
- 0xB8060000, // 0000 GETNGBL R1 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0xB8062C00, // 0000 GETNGBL R1 K22
+ 0x8C040317, // 0001 GETMET R1 R1 K23
0x7C040200, // 0002 CALL R1 1
- 0x94040302, // 0003 GETIDX R1 R1 K2
- 0xB80A0000, // 0004 GETNGBL R2 K0
- 0x8C080501, // 0005 GETMET R2 R2 K1
+ 0x94040300, // 0003 GETIDX R1 R1 K0
+ 0xB80A2C00, // 0004 GETNGBL R2 K22
+ 0x8C080517, // 0005 GETMET R2 R2 K23
0x7C080200, // 0006 CALL R2 1
- 0x8C080503, // 0007 GETMET R2 R2 K3
- 0x58100004, // 0008 LDCONST R4 K4
+ 0x8C080518, // 0007 GETMET R2 R2 K24
+ 0x58100019, // 0008 LDCONST R4 K25
0x5C140200, // 0009 MOVE R5 R1
0x7C080600, // 000A CALL R2 3
- 0x8C0C0105, // 000B GETMET R3 R0 K5
+ 0x8C0C011A, // 000B GETMET R3 R0 K26
0x7C0C0200, // 000C CALL R3 1
0x20100202, // 000D NE R4 R1 R2
0x7812004D, // 000E JMPF R4 #005D
0x4C100000, // 000F LDNIL R4
0x20100604, // 0010 NE R4 R3 R4
0x7812004A, // 0011 JMPF R4 #005D
- 0xA4120400, // 0012 IMPORT R4 K2
+ 0xA4120000, // 0012 IMPORT R4 K0
0x5C040400, // 0013 MOVE R1 R2
- 0x8C140906, // 0014 GETMET R5 R4 K6
+ 0x8C140907, // 0014 GETMET R5 R4 K7
0x5C1C0600, // 0015 MOVE R7 R3
0x54220003, // 0016 LDINT R8 4
0x7C140600, // 0017 CALL R5 3
- 0x94180B07, // 0018 GETIDX R6 R5 K7
+ 0x94180B1B, // 0018 GETIDX R6 R5 K27
0x4C1C0000, // 0019 LDNIL R7
0x542203FF, // 001A LDINT R8 1024
0x0C200408, // 001B DIV R8 R2 R8
- 0x1C241108, // 001C EQ R9 R8 K8
+ 0x1C24110E, // 001C EQ R9 R8 K14
0x78260001, // 001D JMPF R9 #0020
- 0x581C0009, // 001E LDCONST R7 K9
+ 0x581C000D, // 001E LDCONST R7 K13
0x70020020, // 001F JMP #0041
- 0x1C24110A, // 0020 EQ R9 R8 K10
+ 0x1C241110, // 0020 EQ R9 R8 K16
0x78260001, // 0021 JMPF R9 #0024
0x541E000F, // 0022 LDINT R7 16
0x7002001C, // 0023 JMP #0041
@@ -909,31 +884,31 @@ be_local_closure(class_Partition_resize_max_flash_size_k, /* name */
0x4C240000, // 0041 LDNIL R9
0x20240E09, // 0042 NE R9 R7 R9
0x78260013, // 0043 JMPF R9 #0058
- 0x94240B07, // 0044 GETIDX R9 R5 K7
- 0x94280B07, // 0045 GETIDX R10 R5 K7
+ 0x94240B1B, // 0044 GETIDX R9 R5 K27
+ 0x94280B1B, // 0045 GETIDX R10 R5 K27
0x542E000E, // 0046 LDINT R11 15
0x2C28140B, // 0047 AND R10 R10 R11
0x30281407, // 0048 OR R10 R10 R7
- 0x98160E0A, // 0049 SETIDX R5 K7 R10
- 0x8C28090B, // 004A GETMET R10 R4 K11
+ 0x9816360A, // 0049 SETIDX R5 K27 R10
+ 0x8C280903, // 004A GETMET R10 R4 K3
0x5C300600, // 004B MOVE R12 R3
0x5C340A00, // 004C MOVE R13 R5
0x7C280600, // 004D CALL R10 3
- 0xB82A0000, // 004E GETNGBL R10 K0
- 0x8C28150C, // 004F GETMET R10 R10 K12
+ 0xB82A2C00, // 004E GETNGBL R10 K22
+ 0x8C28151C, // 004F GETMET R10 R10 K28
0x60300018, // 0050 GETGBL R12 G24
- 0x5834000D, // 0051 LDCONST R13 K13
+ 0x5834001D, // 0051 LDCONST R13 K29
0x5C381200, // 0052 MOVE R14 R9
- 0x943C0B07, // 0053 GETIDX R15 R5 K7
+ 0x943C0B1B, // 0053 GETIDX R15 R5 K27
0x7C300600, // 0054 CALL R12 3
- 0x58340007, // 0055 LDCONST R13 K7
+ 0x5834001B, // 0055 LDCONST R13 K27
0x7C280600, // 0056 CALL R10 3
0x70020004, // 0057 JMP #005D
0x60240008, // 0058 GETGBL R9 G8
0x5C281000, // 0059 MOVE R10 R8
0x7C240200, // 005A CALL R9 1
- 0x00261C09, // 005B ADD R9 K14 R9
- 0xB0061E09, // 005C RAISE 1 K15 R9
+ 0x00263C09, // 005B ADD R9 K30 R9
+ 0xB0063E09, // 005C RAISE 1 K31 R9
0x80000000, // 005D RET 0
})
)
@@ -944,52 +919,43 @@ be_local_closure(class_Partition_resize_max_flash_size_k, /* name */
/********************************************************************
** Solidified function: get_flash_definition_sector
********************************************************************/
-extern const bclass be_class_Partition;
be_local_closure(class_Partition_get_flash_definition_sector, /* name */
be_nested_proto(
9, /* nstack */
0, /* argc */
- 4, /* varg */
+ 12, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_const_class(be_class_Partition),
- /* K1 */ be_nested_str(flash),
- /* K2 */ be_const_int(0),
- /* K3 */ be_const_int(1),
- /* K4 */ be_nested_str(read),
- /* K5 */ be_nested_str(E9),
- /* K6 */ be_nested_str(stop_iteration),
- }),
+ &be_ktab_class_Partition, /* shared constants */
&be_const_str_get_flash_definition_sector,
&be_const_str_solidified,
( &(const binstruction[26]) { /* code */
- 0x58000000, // 0000 LDCONST R0 K0
- 0xA4060200, // 0001 IMPORT R1 K1
+ 0x58000020, // 0000 LDCONST R0 K32
+ 0xA4060000, // 0001 IMPORT R1 K0
0x60080010, // 0002 GETGBL R2 G16
- 0x400E0503, // 0003 CONNECT R3 K2 K3
+ 0x400E1B0E, // 0003 CONNECT R3 K13 K14
0x7C080200, // 0004 CALL R2 1
0xA802000F, // 0005 EXBLK 0 #0016
0x5C0C0400, // 0006 MOVE R3 R2
0x7C0C0000, // 0007 CALL R3 0
0x54120FFF, // 0008 LDINT R4 4096
0x08100604, // 0009 MUL R4 R3 R4
- 0x8C140304, // 000A GETMET R5 R1 K4
+ 0x8C140307, // 000A GETMET R5 R1 K7
0x5C1C0800, // 000B MOVE R7 R4
- 0x58200003, // 000C LDCONST R8 K3
+ 0x5820000E, // 000C LDCONST R8 K14
0x7C140600, // 000D CALL R5 3
0x60180015, // 000E GETGBL R6 G21
- 0x581C0005, // 000F LDCONST R7 K5
+ 0x581C0021, // 000F LDCONST R7 K33
0x7C180200, // 0010 CALL R6 1
0x1C140A06, // 0011 EQ R5 R5 R6
0x78160001, // 0012 JMPF R5 #0015
0xA8040001, // 0013 EXBLK 1 1
0x80040800, // 0014 RET 1 R4
0x7001FFEF, // 0015 JMP #0006
- 0x58080006, // 0016 LDCONST R2 K6
+ 0x58080015, // 0016 LDCONST R2 K21
0xAC080200, // 0017 CATCH R2 1 0
0xB0080000, // 0018 RAISE 2 R0 R0
0x80000000, // 0019 RET 0
@@ -1002,84 +968,68 @@ be_local_closure(class_Partition_get_flash_definition_sector, /* name */
/********************************************************************
** Solidified function: resize_fs_to_max
********************************************************************/
-extern const bclass be_class_Partition;
be_local_closure(class_Partition_resize_fs_to_max, /* name */
be_nested_proto(
9, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str(get_unallocated_k),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(tasmota),
- /* K3 */ be_nested_str(log),
- /* K4 */ be_nested_str(BRY_X3A_X20Trying_X20to_X20expand_X20FS_X20by_X20_X25i_X20kB),
- /* K5 */ be_const_int(2),
- /* K6 */ be_nested_str(resize_max_flash_size_k),
- /* K7 */ be_nested_str(slots),
- /* K8 */ be_nested_str(sz),
- /* K9 */ be_nested_str(save),
- /* K10 */ be_nested_str(global),
- /* K11 */ be_nested_str(restart_flag),
- /* K12 */ be_nested_str(BRY_X3A_X20Successfully_X20resized_X20FS_X2C_X20restarting),
- /* K13 */ be_nested_str(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s),
- }),
+ &be_ktab_class_Partition, /* shared constants */
&be_const_str_resize_fs_to_max,
&be_const_str_solidified,
( &(const binstruction[52]) { /* code */
0xA8020024, // 0000 EXBLK 0 #0026
- 0x8C040100, // 0001 GETMET R1 R0 K0
+ 0x8C040122, // 0001 GETMET R1 R0 K34
0x7C040200, // 0002 CALL R1 1
- 0x18080301, // 0003 LE R2 R1 K1
+ 0x1808030D, // 0003 LE R2 R1 K13
0x780A0002, // 0004 JMPF R2 #0008
0x4C080000, // 0005 LDNIL R2
0xA8040001, // 0006 EXBLK 1 1
0x80040400, // 0007 RET 1 R2
- 0xB80A0400, // 0008 GETNGBL R2 K2
- 0x8C080503, // 0009 GETMET R2 R2 K3
+ 0xB80A2C00, // 0008 GETNGBL R2 K22
+ 0x8C08051C, // 0009 GETMET R2 R2 K28
0x60100018, // 000A GETGBL R4 G24
- 0x58140004, // 000B LDCONST R5 K4
+ 0x58140023, // 000B LDCONST R5 K35
0x5C180200, // 000C MOVE R6 R1
0x7C100400, // 000D CALL R4 2
- 0x58140005, // 000E LDCONST R5 K5
+ 0x58140010, // 000E LDCONST R5 K16
0x7C080600, // 000F CALL R2 3
- 0x8C080106, // 0010 GETMET R2 R0 K6
+ 0x8C080124, // 0010 GETMET R2 R0 K36
0x7C080200, // 0011 CALL R2 1
- 0x88080107, // 0012 GETMBR R2 R0 K7
+ 0x88080109, // 0012 GETMBR R2 R0 K9
0x540DFFFE, // 0013 LDINT R3 -1
0x94080403, // 0014 GETIDX R2 R2 R3
0x541203FF, // 0015 LDINT R4 1024
0x08100204, // 0016 MUL R4 R1 R4
- 0x880C0508, // 0017 GETMBR R3 R2 K8
+ 0x880C0525, // 0017 GETMBR R3 R2 K37
0x000C0604, // 0018 ADD R3 R3 R4
- 0x900A1003, // 0019 SETMBR R2 K8 R3
- 0x8C0C0109, // 001A GETMET R3 R0 K9
+ 0x900A4A03, // 0019 SETMBR R2 K37 R3
+ 0x8C0C0105, // 001A GETMET R3 R0 K5
0x7C0C0200, // 001B CALL R3 1
- 0xB80E0400, // 001C GETNGBL R3 K2
- 0x880C070A, // 001D GETMBR R3 R3 K10
- 0x900E1705, // 001E SETMBR R3 K11 K5
- 0xB80E0400, // 001F GETNGBL R3 K2
- 0x8C0C0703, // 0020 GETMET R3 R3 K3
- 0x5814000C, // 0021 LDCONST R5 K12
- 0x58180005, // 0022 LDCONST R6 K5
+ 0xB80E2C00, // 001C GETNGBL R3 K22
+ 0x880C0726, // 001D GETMBR R3 R3 K38
+ 0x900E4F10, // 001E SETMBR R3 K39 K16
+ 0xB80E2C00, // 001F GETNGBL R3 K22
+ 0x8C0C071C, // 0020 GETMET R3 R3 K28
+ 0x58140028, // 0021 LDCONST R5 K40
+ 0x58180010, // 0022 LDCONST R6 K16
0x7C0C0600, // 0023 CALL R3 3
0xA8040001, // 0024 EXBLK 1 1
0x7002000C, // 0025 JMP #0033
0xAC040002, // 0026 CATCH R1 0 2
0x70020009, // 0027 JMP #0032
- 0xB80E0400, // 0028 GETNGBL R3 K2
- 0x8C0C0703, // 0029 GETMET R3 R3 K3
+ 0xB80E2C00, // 0028 GETNGBL R3 K22
+ 0x8C0C071C, // 0029 GETMET R3 R3 K28
0x60140018, // 002A GETGBL R5 G24
- 0x5818000D, // 002B LDCONST R6 K13
+ 0x58180029, // 002B LDCONST R6 K41
0x5C1C0200, // 002C MOVE R7 R1
0x5C200400, // 002D MOVE R8 R2
0x7C140600, // 002E CALL R5 3
- 0x58180005, // 002F LDCONST R6 K5
+ 0x58180010, // 002F LDCONST R6 K16
0x7C0C0600, // 0030 CALL R3 3
0x70020000, // 0031 JMP #0033
0xB0080000, // 0032 RAISE 2 R0 R0
@@ -1093,26 +1043,22 @@ be_local_closure(class_Partition_resize_fs_to_max, /* name */
/********************************************************************
** Solidified function: switch_factory
********************************************************************/
-extern const bclass be_class_Partition;
be_local_closure(class_Partition_switch_factory, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(flash),
- /* K1 */ be_nested_str(factory),
- }),
+ &be_ktab_class_Partition, /* shared constants */
&be_const_str_switch_factory,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
0xA40A0000, // 0000 IMPORT R2 K0
- 0x8C0C0501, // 0001 GETMET R3 R2 K1
+ 0x8C0C052A, // 0001 GETMET R3 R2 K42
0x5C140200, // 0002 MOVE R5 R1
0x7C0C0400, // 0003 CALL R3 2
0x80000000, // 0004 RET 0
@@ -1125,62 +1071,48 @@ be_local_closure(class_Partition_switch_factory, /* name */
/********************************************************************
** Solidified function: load_otadata
********************************************************************/
-extern const bclass be_class_Partition;
be_local_closure(class_Partition_load_otadata, /* name */
be_nested_proto(
8, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str(ota_max),
- /* K1 */ be_nested_str(slots),
- /* K2 */ be_nested_str(type),
- /* K3 */ be_const_int(1),
- /* K4 */ be_nested_str(subtype),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str(start),
- /* K7 */ be_nested_str(stop_iteration),
- /* K8 */ be_nested_str(otadata),
- /* K9 */ be_nested_str(partition_core),
- /* K10 */ be_nested_str(Partition_otadata),
- /* K11 */ be_nested_str(has_factory),
- }),
+ &be_ktab_class_Partition, /* shared constants */
&be_const_str_load_otadata,
&be_const_str_solidified,
( &(const binstruction[29]) { /* code */
0x5406DFFF, // 0000 LDINT R1 57344
- 0x8C080100, // 0001 GETMET R2 R0 K0
+ 0x8C08012B, // 0001 GETMET R2 R0 K43
0x7C080200, // 0002 CALL R2 1
0x600C0010, // 0003 GETGBL R3 G16
- 0x88100101, // 0004 GETMBR R4 R0 K1
+ 0x88100109, // 0004 GETMBR R4 R0 K9
0x7C0C0200, // 0005 CALL R3 1
0xA8020009, // 0006 EXBLK 0 #0011
0x5C100600, // 0007 MOVE R4 R3
0x7C100000, // 0008 CALL R4 0
- 0x88140902, // 0009 GETMBR R5 R4 K2
- 0x1C140B03, // 000A EQ R5 R5 K3
+ 0x8814092C, // 0009 GETMBR R5 R4 K44
+ 0x1C140B0E, // 000A EQ R5 R5 K14
0x78160003, // 000B JMPF R5 #0010
- 0x88140904, // 000C GETMBR R5 R4 K4
- 0x1C140B05, // 000D EQ R5 R5 K5
+ 0x8814092D, // 000C GETMBR R5 R4 K45
+ 0x1C140B0D, // 000D EQ R5 R5 K13
0x78160000, // 000E JMPF R5 #0010
- 0x88040906, // 000F GETMBR R1 R4 K6
+ 0x8804092E, // 000F GETMBR R1 R4 K46
0x7001FFF5, // 0010 JMP #0007
- 0x580C0007, // 0011 LDCONST R3 K7
+ 0x580C0015, // 0011 LDCONST R3 K21
0xAC0C0200, // 0012 CATCH R3 1 0
0xB0080000, // 0013 RAISE 2 R0 R0
- 0xB80E1200, // 0014 GETNGBL R3 K9
- 0x8C0C070A, // 0015 GETMET R3 R3 K10
+ 0xB80E2200, // 0014 GETNGBL R3 K17
+ 0x8C0C072F, // 0015 GETMET R3 R3 K47
0x5C140400, // 0016 MOVE R5 R2
- 0x8C18010B, // 0017 GETMET R6 R0 K11
+ 0x8C180130, // 0017 GETMET R6 R0 K48
0x7C180200, // 0018 CALL R6 1
0x5C1C0200, // 0019 MOVE R7 R1
0x7C0C0800, // 001A CALL R3 4
- 0x90021003, // 001B SETMBR R0 K8 R3
+ 0x90020803, // 001B SETMBR R0 K4 R3
0x80000000, // 001C RET 0
})
)
@@ -1191,53 +1123,42 @@ be_local_closure(class_Partition_load_otadata, /* name */
/********************************************************************
** Solidified function: tostring
********************************************************************/
-extern const bclass be_class_Partition;
be_local_closure(class_Partition_tostring, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str(_X3Cinstance_X3A_X20Partition_X28_X5B_X0A),
- /* K1 */ be_nested_str(slots),
- /* K2 */ be_nested_str(_X20_X20),
- /* K3 */ be_nested_str(tostring),
- /* K4 */ be_nested_str(_X0A),
- /* K5 */ be_nested_str(stop_iteration),
- /* K6 */ be_nested_str(_X5D_X2C_X0A_X20_X20),
- /* K7 */ be_nested_str(otadata),
- /* K8 */ be_nested_str(_X0A_X29_X3E),
- }),
+ &be_ktab_class_Partition, /* shared constants */
&be_const_str_tostring,
&be_const_str_solidified,
( &(const binstruction[23]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
+ 0x58040031, // 0000 LDCONST R1 K49
0x60080010, // 0001 GETGBL R2 G16
- 0x880C0101, // 0002 GETMBR R3 R0 K1
+ 0x880C0109, // 0002 GETMBR R3 R0 K9
0x7C080200, // 0003 CALL R2 1
0xA8020007, // 0004 EXBLK 0 #000D
0x5C0C0400, // 0005 MOVE R3 R2
0x7C0C0000, // 0006 CALL R3 0
- 0x00040302, // 0007 ADD R1 R1 K2
- 0x8C100703, // 0008 GETMET R4 R3 K3
+ 0x00040332, // 0007 ADD R1 R1 K50
+ 0x8C100733, // 0008 GETMET R4 R3 K51
0x7C100200, // 0009 CALL R4 1
0x00040204, // 000A ADD R1 R1 R4
- 0x00040304, // 000B ADD R1 R1 K4
+ 0x00040334, // 000B ADD R1 R1 K52
0x7001FFF7, // 000C JMP #0005
- 0x58080005, // 000D LDCONST R2 K5
+ 0x58080015, // 000D LDCONST R2 K21
0xAC080200, // 000E CATCH R2 1 0
0xB0080000, // 000F RAISE 2 R0 R0
- 0x00040306, // 0010 ADD R1 R1 K6
- 0x88080107, // 0011 GETMBR R2 R0 K7
- 0x8C080503, // 0012 GETMET R2 R2 K3
+ 0x00040335, // 0010 ADD R1 R1 K53
+ 0x88080104, // 0011 GETMBR R2 R0 K4
+ 0x8C080533, // 0012 GETMET R2 R2 K51
0x7C080200, // 0013 CALL R2 1
0x00040202, // 0014 ADD R1 R1 R2
- 0x00040308, // 0015 ADD R1 R1 K8
+ 0x00040336, // 0015 ADD R1 R1 K54
0x80040200, // 0016 RET 1 R1
})
)
@@ -1248,24 +1169,21 @@ be_local_closure(class_Partition_tostring, /* name */
/********************************************************************
** Solidified function: has_factory
********************************************************************/
-extern const bclass be_class_Partition;
be_local_closure(class_Partition_has_factory, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(get_factory_slot),
- }),
+ &be_ktab_class_Partition, /* shared constants */
&be_const_str_has_factory,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040137, // 0000 GETMET R1 R0 K55
0x7C040200, // 0001 CALL R1 1
0x4C080000, // 0002 LDNIL R2
0x20040202, // 0003 NE R1 R1 R2
@@ -1279,63 +1197,52 @@ be_local_closure(class_Partition_has_factory, /* name */
/********************************************************************
** Solidified function: tobytes
********************************************************************/
-extern const bclass be_class_Partition;
be_local_closure(class_Partition_tobytes, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str(slots),
- /* K1 */ be_nested_str(value_error),
- /* K2 */ be_nested_str(Too_X20many_X20partiition_X20slots),
- /* K3 */ be_nested_str(tobytes),
- /* K4 */ be_nested_str(stop_iteration),
- /* K5 */ be_nested_str(MD5),
- /* K6 */ be_nested_str(update),
- /* K7 */ be_nested_str(EBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFF),
- /* K8 */ be_nested_str(finish),
- }),
+ &be_ktab_class_Partition, /* shared constants */
&be_const_str_tobytes,
&be_const_str_solidified,
( &(const binstruction[35]) { /* code */
0x6004000C, // 0000 GETGBL R1 G12
- 0x88080100, // 0001 GETMBR R2 R0 K0
+ 0x88080109, // 0001 GETMBR R2 R0 K9
0x7C040200, // 0002 CALL R1 1
0x540A005E, // 0003 LDINT R2 95
0x24040202, // 0004 GT R1 R1 R2
0x78060000, // 0005 JMPF R1 #0007
- 0xB0060302, // 0006 RAISE 1 K1 K2
+ 0xB0067139, // 0006 RAISE 1 K56 K57
0x60040015, // 0007 GETGBL R1 G21
0x7C040000, // 0008 CALL R1 0
0x60080010, // 0009 GETGBL R2 G16
- 0x880C0100, // 000A GETMBR R3 R0 K0
+ 0x880C0109, // 000A GETMBR R3 R0 K9
0x7C080200, // 000B CALL R2 1
0xA8020005, // 000C EXBLK 0 #0013
0x5C0C0400, // 000D MOVE R3 R2
0x7C0C0000, // 000E CALL R3 0
- 0x8C100703, // 000F GETMET R4 R3 K3
+ 0x8C100701, // 000F GETMET R4 R3 K1
0x7C100200, // 0010 CALL R4 1
0x00040204, // 0011 ADD R1 R1 R4
0x7001FFF9, // 0012 JMP #000D
- 0x58080004, // 0013 LDCONST R2 K4
+ 0x58080015, // 0013 LDCONST R2 K21
0xAC080200, // 0014 CATCH R2 1 0
0xB0080000, // 0015 RAISE 2 R0 R0
- 0xB80A0A00, // 0016 GETNGBL R2 K5
+ 0xB80A7400, // 0016 GETNGBL R2 K58
0x7C080000, // 0017 CALL R2 0
- 0x8C0C0506, // 0018 GETMET R3 R2 K6
+ 0x8C0C053B, // 0018 GETMET R3 R2 K59
0x5C140200, // 0019 MOVE R5 R1
0x7C0C0400, // 001A CALL R3 2
0x600C0015, // 001B GETGBL R3 G21
- 0x58100007, // 001C LDCONST R4 K7
+ 0x5810003C, // 001C LDCONST R4 K60
0x7C0C0200, // 001D CALL R3 1
0x00040203, // 001E ADD R1 R1 R3
- 0x8C0C0508, // 001F GETMET R3 R2 K8
+ 0x8C0C053D, // 001F GETMET R3 R2 K61
0x7C0C0200, // 0020 CALL R3 1
0x00040203, // 0021 ADD R1 R1 R3
0x80040200, // 0022 RET 1 R1
@@ -1348,46 +1255,39 @@ be_local_closure(class_Partition_tobytes, /* name */
/********************************************************************
** Solidified function: ota_max
********************************************************************/
-extern const bclass be_class_Partition;
be_local_closure(class_Partition_ota_max, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str(slots),
- /* K1 */ be_nested_str(type),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str(subtype),
- /* K4 */ be_nested_str(stop_iteration),
- }),
+ &be_ktab_class_Partition, /* shared constants */
&be_const_str_ota_max,
&be_const_str_solidified,
( &(const binstruction[32]) { /* code */
0x4C040000, // 0000 LDNIL R1
0x60080010, // 0001 GETGBL R2 G16
- 0x880C0100, // 0002 GETMBR R3 R0 K0
+ 0x880C0109, // 0002 GETMBR R3 R0 K9
0x7C080200, // 0003 CALL R2 1
0xA8020016, // 0004 EXBLK 0 #001C
0x5C0C0400, // 0005 MOVE R3 R2
0x7C0C0000, // 0006 CALL R3 0
- 0x88100701, // 0007 GETMBR R4 R3 K1
- 0x1C100902, // 0008 EQ R4 R4 K2
+ 0x8810072C, // 0007 GETMBR R4 R3 K44
+ 0x1C10090D, // 0008 EQ R4 R4 K13
0x78120010, // 0009 JMPF R4 #001B
- 0x88100703, // 000A GETMBR R4 R3 K3
+ 0x8810072D, // 000A GETMBR R4 R3 K45
0x5416000F, // 000B LDINT R5 16
0x28100805, // 000C GE R4 R4 R5
0x7812000C, // 000D JMPF R4 #001B
- 0x88100703, // 000E GETMBR R4 R3 K3
+ 0x8810072D, // 000E GETMBR R4 R3 K45
0x5416001F, // 000F LDINT R5 32
0x14100805, // 0010 LT R4 R4 R5
0x78120008, // 0011 JMPF R4 #001B
- 0x88100703, // 0012 GETMBR R4 R3 K3
+ 0x8810072D, // 0012 GETMBR R4 R3 K45
0x5416000F, // 0013 LDINT R5 16
0x04100805, // 0014 SUB R4 R4 R5
0x4C140000, // 0015 LDNIL R5
@@ -1397,7 +1297,7 @@ be_local_closure(class_Partition_ota_max, /* name */
0x78160000, // 0019 JMPF R5 #001B
0x5C040800, // 001A MOVE R1 R4
0x7001FFE8, // 001B JMP #0005
- 0x58080004, // 001C LDCONST R2 K4
+ 0x58080015, // 001C LDCONST R2 K21
0xAC080200, // 001D CATCH R2 1 0
0xB0080000, // 001E RAISE 2 R0 R0
0x80040200, // 001F RET 1 R1
@@ -1410,47 +1310,37 @@ be_local_closure(class_Partition_ota_max, /* name */
/********************************************************************
** Solidified function: invalidate_spiffs
********************************************************************/
-extern const bclass be_class_Partition;
be_local_closure(class_Partition_invalidate_spiffs, /* name */
be_nested_proto(
8, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str(flash),
- /* K1 */ be_nested_str(slots),
- /* K2 */ be_nested_str(is_spiffs),
- /* K3 */ be_nested_str(value_error),
- /* K4 */ be_nested_str(No_X20FS_X20partition_X20found),
- /* K5 */ be_nested_str(00),
- /* K6 */ be_nested_str(write),
- /* K7 */ be_nested_str(start),
- }),
+ &be_ktab_class_Partition, /* shared constants */
&be_const_str_invalidate_spiffs,
&be_const_str_solidified,
( &(const binstruction[22]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x88080109, // 0001 GETMBR R2 R0 K9
0x540DFFFE, // 0002 LDINT R3 -1
0x94080403, // 0003 GETIDX R2 R2 R3
- 0x8C0C0502, // 0004 GETMET R3 R2 K2
+ 0x8C0C053E, // 0004 GETMET R3 R2 K62
0x7C0C0200, // 0005 CALL R3 1
0x740E0000, // 0006 JMPT R3 #0008
- 0xB0060704, // 0007 RAISE 1 K3 K4
+ 0xB006713F, // 0007 RAISE 1 K56 K63
0x600C0015, // 0008 GETGBL R3 G21
- 0x58100005, // 0009 LDCONST R4 K5
+ 0x58100040, // 0009 LDCONST R4 K64
0x7C0C0200, // 000A CALL R3 1
- 0x8C100306, // 000B GETMET R4 R1 K6
- 0x88180507, // 000C GETMBR R6 R2 K7
+ 0x8C100303, // 000B GETMET R4 R1 K3
+ 0x8818052E, // 000C GETMBR R6 R2 K46
0x5C1C0600, // 000D MOVE R7 R3
0x7C100600, // 000E CALL R4 3
- 0x8C100306, // 000F GETMET R4 R1 K6
- 0x88180507, // 0010 GETMBR R6 R2 K7
+ 0x8C100303, // 000F GETMET R4 R1 K3
+ 0x8818052E, // 0010 GETMBR R6 R2 K46
0x541E0FFF, // 0011 LDINT R7 4096
0x00180C07, // 0012 ADD R6 R6 R7
0x5C1C0600, // 0013 MOVE R7 R3
@@ -1465,38 +1355,33 @@ be_local_closure(class_Partition_invalidate_spiffs, /* name */
/********************************************************************
** Solidified function: get_factory_slot
********************************************************************/
-extern const bclass be_class_Partition;
be_local_closure(class_Partition_get_factory_slot, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(slots),
- /* K1 */ be_nested_str(is_factory),
- /* K2 */ be_nested_str(stop_iteration),
- }),
+ &be_ktab_class_Partition, /* shared constants */
&be_const_str_get_factory_slot,
&be_const_str_solidified,
( &(const binstruction[16]) { /* code */
0x60040010, // 0000 GETGBL R1 G16
- 0x88080100, // 0001 GETMBR R2 R0 K0
+ 0x88080109, // 0001 GETMBR R2 R0 K9
0x7C040200, // 0002 CALL R1 1
0xA8020007, // 0003 EXBLK 0 #000C
0x5C080200, // 0004 MOVE R2 R1
0x7C080000, // 0005 CALL R2 0
- 0x8C0C0501, // 0006 GETMET R3 R2 K1
+ 0x8C0C0541, // 0006 GETMET R3 R2 K65
0x7C0C0200, // 0007 CALL R3 1
0x780E0001, // 0008 JMPF R3 #000B
0xA8040001, // 0009 EXBLK 1 1
0x80040400, // 000A RET 1 R2
0x7001FFF7, // 000B JMP #0004
- 0x58040002, // 000C LDCONST R1 K2
+ 0x58040015, // 000C LDCONST R1 K21
0xAC040200, // 000D CATCH R1 1 0
0xB0080000, // 000E RAISE 2 R0 R0
0x80000000, // 000F RET 0
@@ -1509,43 +1394,34 @@ be_local_closure(class_Partition_get_factory_slot, /* name */
/********************************************************************
** Solidified function: set_active
********************************************************************/
-extern const bclass be_class_Partition;
be_local_closure(class_Partition_set_active, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str(ota_max),
- /* K2 */ be_nested_str(value_error),
- /* K3 */ be_nested_str(Invalid_X20ota_X20partition_X20number),
- /* K4 */ be_nested_str(otadata),
- /* K5 */ be_nested_str(set_ota_max),
- /* K6 */ be_nested_str(set_active),
- }),
+ &be_ktab_class_Partition, /* shared constants */
&be_const_str_set_active,
&be_const_str_solidified,
( &(const binstruction[17]) { /* code */
- 0x14080300, // 0000 LT R2 R1 K0
+ 0x1408030D, // 0000 LT R2 R1 K13
0x740A0003, // 0001 JMPT R2 #0006
- 0x8C080101, // 0002 GETMET R2 R0 K1
+ 0x8C08012B, // 0002 GETMET R2 R0 K43
0x7C080200, // 0003 CALL R2 1
0x24080202, // 0004 GT R2 R1 R2
0x780A0000, // 0005 JMPF R2 #0007
- 0xB0060503, // 0006 RAISE 1 K2 K3
+ 0xB0067142, // 0006 RAISE 1 K56 K66
0x88080104, // 0007 GETMBR R2 R0 K4
- 0x8C080505, // 0008 GETMET R2 R2 K5
- 0x8C100101, // 0009 GETMET R4 R0 K1
+ 0x8C080543, // 0008 GETMET R2 R2 K67
+ 0x8C10012B, // 0009 GETMET R4 R0 K43
0x7C100200, // 000A CALL R4 1
0x7C080400, // 000B CALL R2 2
0x88080104, // 000C GETMBR R2 R0 K4
- 0x8C080506, // 000D GETMET R2 R2 K6
+ 0x8C080544, // 000D GETMET R2 R2 K68
0x5C100200, // 000E MOVE R4 R1
0x7C080400, // 000F CALL R2 2
0x80000000, // 0010 RET 0
@@ -1558,38 +1434,30 @@ be_local_closure(class_Partition_set_active, /* name */
/********************************************************************
** Solidified function: get_unallocated_k
********************************************************************/
-extern const bclass be_class_Partition;
be_local_closure(class_Partition_get_unallocated_k, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str(slots),
- /* K1 */ be_nested_str(is_spiffs),
- /* K2 */ be_nested_str(get_max_flash_size_k),
- /* K3 */ be_nested_str(start),
- /* K4 */ be_nested_str(sz),
- /* K5 */ be_const_int(0),
- }),
+ &be_ktab_class_Partition, /* shared constants */
&be_const_str_get_unallocated_k,
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040109, // 0000 GETMBR R1 R0 K9
0x5409FFFE, // 0001 LDINT R2 -1
0x94040202, // 0002 GETIDX R1 R1 R2
- 0x8C080301, // 0003 GETMET R2 R1 K1
+ 0x8C08033E, // 0003 GETMET R2 R1 K62
0x7C080200, // 0004 CALL R2 1
0x780A000A, // 0005 JMPF R2 #0011
- 0x8C080102, // 0006 GETMET R2 R0 K2
+ 0x8C080145, // 0006 GETMET R2 R0 K69
0x7C080200, // 0007 CALL R2 1
- 0x880C0303, // 0008 GETMBR R3 R1 K3
- 0x88100304, // 0009 GETMBR R4 R1 K4
+ 0x880C032E, // 0008 GETMBR R3 R1 K46
+ 0x88100325, // 0009 GETMBR R4 R1 K37
0x000C0604, // 000A ADD R3 R3 R4
0x541203FF, // 000B LDINT R4 1024
0x0C0C0604, // 000C DIV R3 R3 R4
@@ -1597,7 +1465,7 @@ be_local_closure(class_Partition_get_unallocated_k, /* name */
0x78120001, // 000E JMPF R4 #0011
0x04100403, // 000F SUB R4 R2 R3
0x80040800, // 0010 RET 1 R4
- 0x80060A00, // 0011 RET 1 K5
+ 0x80061A00, // 0011 RET 1 K13
})
)
);
@@ -1607,39 +1475,34 @@ be_local_closure(class_Partition_get_unallocated_k, /* name */
/********************************************************************
** Solidified function: get_ota_slot
********************************************************************/
-extern const bclass be_class_Partition;
be_local_closure(class_Partition_get_ota_slot, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(slots),
- /* K1 */ be_nested_str(is_ota),
- /* K2 */ be_nested_str(stop_iteration),
- }),
+ &be_ktab_class_Partition, /* shared constants */
&be_const_str_get_ota_slot,
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
0x60080010, // 0000 GETGBL R2 G16
- 0x880C0100, // 0001 GETMBR R3 R0 K0
+ 0x880C0109, // 0001 GETMBR R3 R0 K9
0x7C080200, // 0002 CALL R2 1
0xA8020008, // 0003 EXBLK 0 #000D
0x5C0C0400, // 0004 MOVE R3 R2
0x7C0C0000, // 0005 CALL R3 0
- 0x8C100701, // 0006 GETMET R4 R3 K1
+ 0x8C100746, // 0006 GETMET R4 R3 K70
0x7C100200, // 0007 CALL R4 1
0x1C100801, // 0008 EQ R4 R4 R1
0x78120001, // 0009 JMPF R4 #000C
0xA8040001, // 000A EXBLK 1 1
0x80040600, // 000B RET 1 R3
0x7001FFF6, // 000C JMP #0004
- 0x58080002, // 000D LDCONST R2 K2
+ 0x58080015, // 000D LDCONST R2 K21
0xAC080200, // 000E CATCH R2 1 0
0xB0080000, // 000F RAISE 2 R0 R0
0x4C080000, // 0010 LDNIL R2
@@ -1685,28 +1548,77 @@ be_local_class(Partition,
})),
(bstring*) &be_const_str_Partition
);
+extern const bclass be_class_Partition_info;
+// compact class 'Partition_info' ktab size: 49, total: 92 (saved 344 bytes)
+static const bvalue be_ktab_class_Partition_info[49] = {
+ /* K0 */ be_nested_str(type),
+ /* K1 */ be_const_int(0),
+ /* K2 */ be_nested_str(subtype),
+ /* K3 */ be_nested_str(app),
+ /* K4 */ be_const_int(1),
+ /* K5 */ be_nested_str(data),
+ /* K6 */ be_nested_str(0x_X2502X),
+ /* K7 */ be_nested_str(start),
+ /* K8 */ be_nested_str(sz),
+ /* K9 */ be_nested_str(label),
+ /* K10 */ be_nested_str(),
+ /* K11 */ be_nested_str(flags),
+ /* K12 */ be_nested_str(get),
+ /* K13 */ be_const_int(2),
+ /* K14 */ be_const_int(3),
+ /* K15 */ be_nested_str(remove_trailing_zeroes),
+ /* K16 */ be_nested_str(asstring),
+ /* K17 */ be_nested_str(invalid_X20magic_X20number_X20_X2502X),
+ /* K18 */ be_nested_str(internal_error),
+ /* K19 */ be_nested_str(factory),
+ /* K20 */ be_nested_str(ota_),
+ /* K21 */ be_nested_str(test),
+ /* K22 */ be_nested_str(otadata),
+ /* K23 */ be_nested_str(phy),
+ /* K24 */ be_nested_str(nvs),
+ /* K25 */ be_nested_str(coredump),
+ /* K26 */ be_nested_str(nvskeys),
+ /* K27 */ be_nested_str(efuse_em),
+ /* K28 */ be_nested_str(esphttpd),
+ /* K29 */ be_nested_str(fat),
+ /* K30 */ be_nested_str(spiffs),
+ /* K31 */ be_nested_str(type_to_string),
+ /* K32 */ be_nested_str(subtype_to_string),
+ /* K33 */ be_nested_str(_X20_X28),
+ /* K34 */ be_nested_str(_X29),
+ /* K35 */ be_nested_str(_X3Cinstance_X3A_X20Partition_info_X28_X25d_X25s_X2C_X25d_X25s_X2C0x_X2508X_X2C0x_X2508X_X2C_X27_X25s_X27_X2C0x_X25X_X29_X3E),
+ /* K36 */ be_nested_str(AA50),
+ /* K37 */ be_nested_str(resize),
+ /* K38 */ be_nested_str(add),
+ /* K39 */ be_nested_str(fromstring),
+ /* K40 */ be_const_class(be_class_Partition_info),
+ /* K41 */ be_nested_str(flash),
+ /* K42 */ be_nested_str(is_ota),
+ /* K43 */ be_nested_str(is_factory),
+ /* K44 */ be_nested_str(read),
+ /* K45 */ be_nested_str(tasmota),
+ /* K46 */ be_nested_str(log),
+ /* K47 */ be_nested_str(BRY_X3A_X20Exception_X3E_X20_X27),
+ /* K48 */ be_nested_str(_X27_X20_X2D_X20),
+};
+
extern const bclass be_class_Partition_info;
/********************************************************************
** Solidified function: is_factory
********************************************************************/
-extern const bclass be_class_Partition_info;
be_local_closure(class_Partition_info_is_factory, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition_info,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(type),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(subtype),
- }),
+ &be_ktab_class_Partition_info, /* shared constants */
&be_const_str_is_factory,
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
@@ -1728,39 +1640,31 @@ be_local_closure(class_Partition_info_is_factory, /* name */
/********************************************************************
** Solidified function: type_to_string
********************************************************************/
-extern const bclass be_class_Partition_info;
be_local_closure(class_Partition_info_type_to_string, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition_info,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str(type),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(app),
- /* K3 */ be_const_int(1),
- /* K4 */ be_nested_str(data),
- /* K5 */ be_nested_str(0x_X2502X),
- }),
+ &be_ktab_class_Partition_info, /* shared constants */
&be_const_str_type_to_string,
&be_const_str_solidified,
( &(const binstruction[14]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
0x1C040301, // 0001 EQ R1 R1 K1
0x78060001, // 0002 JMPF R1 #0005
- 0x80060400, // 0003 RET 1 K2
+ 0x80060600, // 0003 RET 1 K3
0x70020003, // 0004 JMP #0009
0x88040100, // 0005 GETMBR R1 R0 K0
- 0x1C040303, // 0006 EQ R1 R1 K3
+ 0x1C040304, // 0006 EQ R1 R1 K4
0x78060000, // 0007 JMPF R1 #0009
- 0x80060800, // 0008 RET 1 K4
+ 0x80060A00, // 0008 RET 1 K5
0x60040018, // 0009 GETGBL R1 G24
- 0x58080005, // 000A LDCONST R2 K5
+ 0x58080006, // 000A LDCONST R2 K6
0x880C0100, // 000B GETMBR R3 R0 K0
0x7C040400, // 000C CALL R1 2
0x80040200, // 000D RET 1 R1
@@ -1773,97 +1677,79 @@ be_local_closure(class_Partition_info_type_to_string, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Partition_info;
be_local_closure(class_Partition_info_init, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition_info,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
- /* K0 */ be_nested_str(type),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(subtype),
- /* K3 */ be_nested_str(start),
- /* K4 */ be_nested_str(sz),
- /* K5 */ be_nested_str(label),
- /* K6 */ be_nested_str(),
- /* K7 */ be_nested_str(flags),
- /* K8 */ be_nested_str(get),
- /* K9 */ be_const_int(2),
- /* K10 */ be_const_int(1),
- /* K11 */ be_const_int(3),
- /* K12 */ be_nested_str(remove_trailing_zeroes),
- /* K13 */ be_nested_str(asstring),
- /* K14 */ be_nested_str(invalid_X20magic_X20number_X20_X2502X),
- /* K15 */ be_nested_str(internal_error),
- }),
+ &be_ktab_class_Partition_info, /* shared constants */
&be_const_str_init,
&be_const_str_solidified,
( &(const binstruction[60]) { /* code */
0x90020101, // 0000 SETMBR R0 K0 K1
0x90020501, // 0001 SETMBR R0 K2 K1
- 0x90020701, // 0002 SETMBR R0 K3 K1
- 0x90020901, // 0003 SETMBR R0 K4 K1
- 0x90020B06, // 0004 SETMBR R0 K5 K6
- 0x90020F01, // 0005 SETMBR R0 K7 K1
+ 0x90020F01, // 0002 SETMBR R0 K7 K1
+ 0x90021101, // 0003 SETMBR R0 K8 K1
+ 0x9002130A, // 0004 SETMBR R0 K9 K10
+ 0x90021701, // 0005 SETMBR R0 K11 K1
0x6008000E, // 0006 GETGBL R2 G14
0x600C0015, // 0007 GETGBL R3 G21
0x5C100200, // 0008 MOVE R4 R1
0x7C080400, // 0009 CALL R2 2
0x740A0000, // 000A JMPT R2 #000C
0x80000400, // 000B RET 0
- 0x8C080308, // 000C GETMET R2 R1 K8
+ 0x8C08030C, // 000C GETMET R2 R1 K12
0x58100001, // 000D LDCONST R4 K1
- 0x58140009, // 000E LDCONST R5 K9
+ 0x5814000D, // 000E LDCONST R5 K13
0x7C080600, // 000F CALL R2 3
0x540E50A9, // 0010 LDINT R3 20650
0x1C0C0403, // 0011 EQ R3 R2 R3
0x780E0022, // 0012 JMPF R3 #0036
- 0x8C0C0308, // 0013 GETMET R3 R1 K8
- 0x58140009, // 0014 LDCONST R5 K9
- 0x5818000A, // 0015 LDCONST R6 K10
+ 0x8C0C030C, // 0013 GETMET R3 R1 K12
+ 0x5814000D, // 0014 LDCONST R5 K13
+ 0x58180004, // 0015 LDCONST R6 K4
0x7C0C0600, // 0016 CALL R3 3
0x90020003, // 0017 SETMBR R0 K0 R3
- 0x8C0C0308, // 0018 GETMET R3 R1 K8
- 0x5814000B, // 0019 LDCONST R5 K11
- 0x5818000A, // 001A LDCONST R6 K10
+ 0x8C0C030C, // 0018 GETMET R3 R1 K12
+ 0x5814000E, // 0019 LDCONST R5 K14
+ 0x58180004, // 001A LDCONST R6 K4
0x7C0C0600, // 001B CALL R3 3
0x90020403, // 001C SETMBR R0 K2 R3
- 0x8C0C0308, // 001D GETMET R3 R1 K8
+ 0x8C0C030C, // 001D GETMET R3 R1 K12
0x54160003, // 001E LDINT R5 4
0x541A0003, // 001F LDINT R6 4
0x7C0C0600, // 0020 CALL R3 3
- 0x90020603, // 0021 SETMBR R0 K3 R3
- 0x8C0C0308, // 0022 GETMET R3 R1 K8
+ 0x90020E03, // 0021 SETMBR R0 K7 R3
+ 0x8C0C030C, // 0022 GETMET R3 R1 K12
0x54160007, // 0023 LDINT R5 8
0x541A0003, // 0024 LDINT R6 4
0x7C0C0600, // 0025 CALL R3 3
- 0x90020803, // 0026 SETMBR R0 K4 R3
- 0x8C0C010C, // 0027 GETMET R3 R0 K12
+ 0x90021003, // 0026 SETMBR R0 K8 R3
+ 0x8C0C010F, // 0027 GETMET R3 R0 K15
0x5416000B, // 0028 LDINT R5 12
0x541A001A, // 0029 LDINT R6 27
0x40140A06, // 002A CONNECT R5 R5 R6
0x94140205, // 002B GETIDX R5 R1 R5
0x7C0C0400, // 002C CALL R3 2
- 0x8C0C070D, // 002D GETMET R3 R3 K13
+ 0x8C0C0710, // 002D GETMET R3 R3 K16
0x7C0C0200, // 002E CALL R3 1
- 0x90020A03, // 002F SETMBR R0 K5 R3
- 0x8C0C0308, // 0030 GETMET R3 R1 K8
+ 0x90021203, // 002F SETMBR R0 K9 R3
+ 0x8C0C030C, // 0030 GETMET R3 R1 K12
0x5416001B, // 0031 LDINT R5 28
0x541A0003, // 0032 LDINT R6 4
0x7C0C0600, // 0033 CALL R3 3
- 0x90020E03, // 0034 SETMBR R0 K7 R3
+ 0x90021603, // 0034 SETMBR R0 K11 R3
0x70020004, // 0035 JMP #003B
0x600C0018, // 0036 GETGBL R3 G24
- 0x5810000E, // 0037 LDCONST R4 K14
+ 0x58100011, // 0037 LDCONST R4 K17
0x5C140400, // 0038 MOVE R5 R2
0x7C0C0400, // 0039 CALL R3 2
- 0xB0061E03, // 003A RAISE 1 K15 R3
+ 0xB0062403, // 003A RAISE 1 K18 R3
0x80000000, // 003B RET 0
})
)
@@ -1874,38 +1760,17 @@ be_local_closure(class_Partition_info_init, /* name */
/********************************************************************
** Solidified function: subtype_to_string
********************************************************************/
-extern const bclass be_class_Partition_info;
be_local_closure(class_Partition_info_subtype_to_string, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition_info,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[19]) { /* constants */
- /* K0 */ be_nested_str(type),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(subtype),
- /* K3 */ be_nested_str(factory),
- /* K4 */ be_nested_str(ota_),
- /* K5 */ be_nested_str(test),
- /* K6 */ be_const_int(1),
- /* K7 */ be_nested_str(otadata),
- /* K8 */ be_nested_str(phy),
- /* K9 */ be_const_int(2),
- /* K10 */ be_nested_str(nvs),
- /* K11 */ be_const_int(3),
- /* K12 */ be_nested_str(coredump),
- /* K13 */ be_nested_str(nvskeys),
- /* K14 */ be_nested_str(efuse_em),
- /* K15 */ be_nested_str(esphttpd),
- /* K16 */ be_nested_str(fat),
- /* K17 */ be_nested_str(spiffs),
- /* K18 */ be_nested_str(0x_X2502X),
- }),
+ &be_ktab_class_Partition_info, /* shared constants */
&be_const_str_subtype_to_string,
&be_const_str_solidified,
( &(const binstruction[87]) { /* code */
@@ -1915,7 +1780,7 @@ be_local_closure(class_Partition_info_subtype_to_string, /* name */
0x88040102, // 0003 GETMBR R1 R0 K2
0x1C040301, // 0004 EQ R1 R1 K1
0x78060001, // 0005 JMPF R1 #0008
- 0x80060600, // 0006 RET 1 K3
+ 0x80062600, // 0006 RET 1 K19
0x70020014, // 0007 JMP #001D
0x88040102, // 0008 GETMBR R1 R0 K2
0x540A000F, // 0009 LDINT R2 16
@@ -1930,69 +1795,69 @@ be_local_closure(class_Partition_info_subtype_to_string, /* name */
0x540E000F, // 0012 LDINT R3 16
0x04080403, // 0013 SUB R2 R2 R3
0x7C040200, // 0014 CALL R1 1
- 0x00060801, // 0015 ADD R1 K4 R1
+ 0x00062801, // 0015 ADD R1 K20 R1
0x80040200, // 0016 RET 1 R1
0x70020004, // 0017 JMP #001D
0x88040102, // 0018 GETMBR R1 R0 K2
0x540A001F, // 0019 LDINT R2 32
0x1C040202, // 001A EQ R1 R1 R2
0x78060000, // 001B JMPF R1 #001D
- 0x80060A00, // 001C RET 1 K5
+ 0x80062A00, // 001C RET 1 K21
0x70020033, // 001D JMP #0052
0x88040100, // 001E GETMBR R1 R0 K0
- 0x1C040306, // 001F EQ R1 R1 K6
+ 0x1C040304, // 001F EQ R1 R1 K4
0x78060030, // 0020 JMPF R1 #0052
0x88040102, // 0021 GETMBR R1 R0 K2
0x1C040301, // 0022 EQ R1 R1 K1
0x78060001, // 0023 JMPF R1 #0026
- 0x80060E00, // 0024 RET 1 K7
+ 0x80062C00, // 0024 RET 1 K22
0x7002002B, // 0025 JMP #0052
0x88040102, // 0026 GETMBR R1 R0 K2
- 0x1C040306, // 0027 EQ R1 R1 K6
+ 0x1C040304, // 0027 EQ R1 R1 K4
0x78060001, // 0028 JMPF R1 #002B
- 0x80061000, // 0029 RET 1 K8
+ 0x80062E00, // 0029 RET 1 K23
0x70020026, // 002A JMP #0052
0x88040102, // 002B GETMBR R1 R0 K2
- 0x1C040309, // 002C EQ R1 R1 K9
+ 0x1C04030D, // 002C EQ R1 R1 K13
0x78060001, // 002D JMPF R1 #0030
- 0x80061400, // 002E RET 1 K10
+ 0x80063000, // 002E RET 1 K24
0x70020021, // 002F JMP #0052
0x88040102, // 0030 GETMBR R1 R0 K2
- 0x1C04030B, // 0031 EQ R1 R1 K11
+ 0x1C04030E, // 0031 EQ R1 R1 K14
0x78060001, // 0032 JMPF R1 #0035
- 0x80061800, // 0033 RET 1 K12
+ 0x80063200, // 0033 RET 1 K25
0x7002001C, // 0034 JMP #0052
0x88040102, // 0035 GETMBR R1 R0 K2
0x540A0003, // 0036 LDINT R2 4
0x1C040202, // 0037 EQ R1 R1 R2
0x78060001, // 0038 JMPF R1 #003B
- 0x80061A00, // 0039 RET 1 K13
+ 0x80063400, // 0039 RET 1 K26
0x70020016, // 003A JMP #0052
0x88040102, // 003B GETMBR R1 R0 K2
0x540A0004, // 003C LDINT R2 5
0x1C040202, // 003D EQ R1 R1 R2
0x78060001, // 003E JMPF R1 #0041
- 0x80061C00, // 003F RET 1 K14
+ 0x80063600, // 003F RET 1 K27
0x70020010, // 0040 JMP #0052
0x88040102, // 0041 GETMBR R1 R0 K2
0x540A007F, // 0042 LDINT R2 128
0x1C040202, // 0043 EQ R1 R1 R2
0x78060001, // 0044 JMPF R1 #0047
- 0x80061E00, // 0045 RET 1 K15
+ 0x80063800, // 0045 RET 1 K28
0x7002000A, // 0046 JMP #0052
0x88040102, // 0047 GETMBR R1 R0 K2
0x540A0080, // 0048 LDINT R2 129
0x1C040202, // 0049 EQ R1 R1 R2
0x78060001, // 004A JMPF R1 #004D
- 0x80062000, // 004B RET 1 K16
+ 0x80063A00, // 004B RET 1 K29
0x70020004, // 004C JMP #0052
0x88040102, // 004D GETMBR R1 R0 K2
0x540A0081, // 004E LDINT R2 130
0x1C040202, // 004F EQ R1 R1 R2
0x78060000, // 0050 JMPF R1 #0052
- 0x80062200, // 0051 RET 1 K17
+ 0x80063C00, // 0051 RET 1 K30
0x60040018, // 0052 GETGBL R1 G24
- 0x58080012, // 0053 LDCONST R2 K18
+ 0x58080006, // 0053 LDCONST R2 K6
0x880C0102, // 0054 GETMBR R3 R0 K2
0x7C040400, // 0055 CALL R1 2
0x80040200, // 0056 RET 1 R1
@@ -2005,57 +1870,43 @@ be_local_closure(class_Partition_info_subtype_to_string, /* name */
/********************************************************************
** Solidified function: tostring
********************************************************************/
-extern const bclass be_class_Partition_info;
be_local_closure(class_Partition_info_tostring, /* name */
be_nested_proto(
13, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition_info,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str(type_to_string),
- /* K1 */ be_nested_str(subtype_to_string),
- /* K2 */ be_nested_str(),
- /* K3 */ be_nested_str(_X20_X28),
- /* K4 */ be_nested_str(_X29),
- /* K5 */ be_nested_str(_X3Cinstance_X3A_X20Partition_info_X28_X25d_X25s_X2C_X25d_X25s_X2C0x_X2508X_X2C0x_X2508X_X2C_X27_X25s_X27_X2C0x_X25X_X29_X3E),
- /* K6 */ be_nested_str(type),
- /* K7 */ be_nested_str(subtype),
- /* K8 */ be_nested_str(start),
- /* K9 */ be_nested_str(sz),
- /* K10 */ be_nested_str(label),
- /* K11 */ be_nested_str(flags),
- }),
+ &be_ktab_class_Partition_info, /* shared constants */
&be_const_str_tostring,
&be_const_str_solidified,
( &(const binstruction[26]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C04011F, // 0000 GETMET R1 R0 K31
0x7C040200, // 0001 CALL R1 1
- 0x8C080101, // 0002 GETMET R2 R0 K1
+ 0x8C080120, // 0002 GETMET R2 R0 K32
0x7C080200, // 0003 CALL R2 1
- 0x200C0302, // 0004 NE R3 R1 K2
+ 0x200C030A, // 0004 NE R3 R1 K10
0x780E0002, // 0005 JMPF R3 #0009
- 0x000E0601, // 0006 ADD R3 K3 R1
- 0x000C0704, // 0007 ADD R3 R3 K4
+ 0x000E4201, // 0006 ADD R3 K33 R1
+ 0x000C0722, // 0007 ADD R3 R3 K34
0x5C040600, // 0008 MOVE R1 R3
- 0x200C0502, // 0009 NE R3 R2 K2
+ 0x200C050A, // 0009 NE R3 R2 K10
0x780E0002, // 000A JMPF R3 #000E
- 0x000E0602, // 000B ADD R3 K3 R2
- 0x000C0704, // 000C ADD R3 R3 K4
+ 0x000E4202, // 000B ADD R3 K33 R2
+ 0x000C0722, // 000C ADD R3 R3 K34
0x5C080600, // 000D MOVE R2 R3
0x600C0018, // 000E GETGBL R3 G24
- 0x58100005, // 000F LDCONST R4 K5
- 0x88140106, // 0010 GETMBR R5 R0 K6
+ 0x58100023, // 000F LDCONST R4 K35
+ 0x88140100, // 0010 GETMBR R5 R0 K0
0x5C180200, // 0011 MOVE R6 R1
- 0x881C0107, // 0012 GETMBR R7 R0 K7
+ 0x881C0102, // 0012 GETMBR R7 R0 K2
0x5C200400, // 0013 MOVE R8 R2
- 0x88240108, // 0014 GETMBR R9 R0 K8
- 0x88280109, // 0015 GETMBR R10 R0 K9
- 0x882C010A, // 0016 GETMBR R11 R0 K10
+ 0x88240107, // 0014 GETMBR R9 R0 K7
+ 0x88280108, // 0015 GETMBR R10 R0 K8
+ 0x882C0109, // 0016 GETMBR R11 R0 K9
0x8830010B, // 0017 GETMBR R12 R0 K11
0x7C0C1200, // 0018 CALL R3 9
0x80040600, // 0019 RET 1 R3
@@ -2068,28 +1919,23 @@ be_local_closure(class_Partition_info_tostring, /* name */
/********************************************************************
** Solidified function: is_ota
********************************************************************/
-extern const bclass be_class_Partition_info;
be_local_closure(class_Partition_info_is_ota, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition_info,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(subtype),
- /* K1 */ be_nested_str(type),
- /* K2 */ be_const_int(0),
- }),
+ &be_ktab_class_Partition_info, /* shared constants */
&be_const_str_is_ota,
&be_const_str_solidified,
( &(const binstruction[14]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x1C080502, // 0002 EQ R2 R2 K2
+ 0x88040102, // 0000 GETMBR R1 R0 K2
+ 0x88080100, // 0001 GETMBR R2 R0 K0
+ 0x1C080501, // 0002 EQ R2 R2 K1
0x780A0008, // 0003 JMPF R2 #000D
0x540A000F, // 0004 LDINT R2 16
0x28080202, // 0005 GE R2 R1 R2
@@ -2110,69 +1956,55 @@ be_local_closure(class_Partition_info_is_ota, /* name */
/********************************************************************
** Solidified function: tobytes
********************************************************************/
-extern const bclass be_class_Partition_info;
be_local_closure(class_Partition_info_tobytes, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition_info,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str(AA50),
- /* K1 */ be_nested_str(resize),
- /* K2 */ be_const_int(2),
- /* K3 */ be_nested_str(add),
- /* K4 */ be_nested_str(type),
- /* K5 */ be_const_int(1),
- /* K6 */ be_nested_str(subtype),
- /* K7 */ be_nested_str(start),
- /* K8 */ be_nested_str(sz),
- /* K9 */ be_nested_str(fromstring),
- /* K10 */ be_nested_str(label),
- /* K11 */ be_nested_str(flags),
- }),
+ &be_ktab_class_Partition_info, /* shared constants */
&be_const_str_tobytes,
&be_const_str_solidified,
( &(const binstruction[39]) { /* code */
0x60040015, // 0000 GETGBL R1 G21
- 0x58080000, // 0001 LDCONST R2 K0
+ 0x58080024, // 0001 LDCONST R2 K36
0x7C040200, // 0002 CALL R1 1
- 0x8C080301, // 0003 GETMET R2 R1 K1
+ 0x8C080325, // 0003 GETMET R2 R1 K37
0x5412001F, // 0004 LDINT R4 32
0x7C080400, // 0005 CALL R2 2
- 0x8C080501, // 0006 GETMET R2 R2 K1
- 0x58100002, // 0007 LDCONST R4 K2
+ 0x8C080525, // 0006 GETMET R2 R2 K37
+ 0x5810000D, // 0007 LDCONST R4 K13
0x7C080400, // 0008 CALL R2 2
- 0x8C080303, // 0009 GETMET R2 R1 K3
- 0x88100104, // 000A GETMBR R4 R0 K4
- 0x58140005, // 000B LDCONST R5 K5
+ 0x8C080326, // 0009 GETMET R2 R1 K38
+ 0x88100100, // 000A GETMBR R4 R0 K0
+ 0x58140004, // 000B LDCONST R5 K4
0x7C080600, // 000C CALL R2 3
- 0x8C080303, // 000D GETMET R2 R1 K3
- 0x88100106, // 000E GETMBR R4 R0 K6
- 0x58140005, // 000F LDCONST R5 K5
+ 0x8C080326, // 000D GETMET R2 R1 K38
+ 0x88100102, // 000E GETMBR R4 R0 K2
+ 0x58140004, // 000F LDCONST R5 K4
0x7C080600, // 0010 CALL R2 3
- 0x8C080303, // 0011 GETMET R2 R1 K3
+ 0x8C080326, // 0011 GETMET R2 R1 K38
0x88100107, // 0012 GETMBR R4 R0 K7
0x54160003, // 0013 LDINT R5 4
0x7C080600, // 0014 CALL R2 3
- 0x8C080303, // 0015 GETMET R2 R1 K3
+ 0x8C080326, // 0015 GETMET R2 R1 K38
0x88100108, // 0016 GETMBR R4 R0 K8
0x54160003, // 0017 LDINT R5 4
0x7C080600, // 0018 CALL R2 3
0x60080015, // 0019 GETGBL R2 G21
0x7C080000, // 001A CALL R2 0
- 0x8C080509, // 001B GETMET R2 R2 K9
- 0x8810010A, // 001C GETMBR R4 R0 K10
+ 0x8C080527, // 001B GETMET R2 R2 K39
+ 0x88100109, // 001C GETMBR R4 R0 K9
0x7C080400, // 001D CALL R2 2
- 0x8C0C0501, // 001E GETMET R3 R2 K1
+ 0x8C0C0525, // 001E GETMET R3 R2 K37
0x5416000F, // 001F LDINT R5 16
0x7C0C0400, // 0020 CALL R3 2
0x00040202, // 0021 ADD R1 R1 R2
- 0x8C0C0303, // 0022 GETMET R3 R1 K3
+ 0x8C0C0326, // 0022 GETMET R3 R1 K38
0x8814010B, // 0023 GETMBR R5 R0 K11
0x541A0003, // 0024 LDINT R6 4
0x7C0C0600, // 0025 CALL R3 3
@@ -2186,27 +2018,21 @@ be_local_closure(class_Partition_info_tobytes, /* name */
/********************************************************************
** Solidified function: remove_trailing_zeroes
********************************************************************/
-extern const bclass be_class_Partition_info;
be_local_closure(class_Partition_info_remove_trailing_zeroes, /* name */
be_nested_proto(
8, /* nstack */
1, /* argc */
- 4, /* varg */
+ 12, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition_info,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_const_class(be_class_Partition_info),
- /* K1 */ be_const_int(0),
- /* K2 */ be_const_int(1),
- /* K3 */ be_nested_str(resize),
- }),
+ &be_ktab_class_Partition_info, /* shared constants */
&be_const_str_remove_trailing_zeroes,
&be_const_str_solidified,
( &(const binstruction[24]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
+ 0x58040028, // 0000 LDCONST R1 K40
0x6008000C, // 0001 GETGBL R2 G12
0x5C0C0000, // 0002 MOVE R3 R0
0x7C080200, // 0003 CALL R2 1
@@ -2219,11 +2045,11 @@ be_local_closure(class_Partition_info_remove_trailing_zeroes, /* name */
0x20100901, // 000A NE R4 R4 K1
0x78120000, // 000B JMPF R4 #000D
0x70020001, // 000C JMP #000F
- 0x000C0702, // 000D ADD R3 R3 K2
+ 0x000C0704, // 000D ADD R3 R3 K4
0x7001FFF5, // 000E JMP #0005
0x24100701, // 000F GT R4 R3 K1
0x78120005, // 0010 JMPF R4 #0017
- 0x8C100103, // 0011 GETMET R4 R0 K3
+ 0x8C100125, // 0011 GETMET R4 R0 K37
0x6018000C, // 0012 GETGBL R6 G12
0x5C1C0000, // 0013 MOVE R7 R0
0x7C180200, // 0014 CALL R6 1
@@ -2239,27 +2065,22 @@ be_local_closure(class_Partition_info_remove_trailing_zeroes, /* name */
/********************************************************************
** Solidified function: is_spiffs
********************************************************************/
-extern const bclass be_class_Partition_info;
be_local_closure(class_Partition_info_is_spiffs, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition_info,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(type),
- /* K1 */ be_const_int(1),
- /* K2 */ be_nested_str(subtype),
- }),
+ &be_ktab_class_Partition_info, /* shared constants */
&be_const_str_is_spiffs,
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x1C040301, // 0001 EQ R1 R1 K1
+ 0x1C040304, // 0001 EQ R1 R1 K4
0x78060003, // 0002 JMPF R1 #0007
0x88040102, // 0003 GETMBR R1 R0 K2
0x540A0081, // 0004 LDINT R2 130
@@ -2277,57 +2098,41 @@ be_local_closure(class_Partition_info_is_spiffs, /* name */
/********************************************************************
** Solidified function: get_image_size
********************************************************************/
-extern const bclass be_class_Partition_info;
be_local_closure(class_Partition_info_get_image_size, /* name */
be_nested_proto(
14, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Partition_info,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str(flash),
- /* K1 */ be_nested_str(is_ota),
- /* K2 */ be_nested_str(is_factory),
- /* K3 */ be_nested_str(start),
- /* K4 */ be_nested_str(sz),
- /* K5 */ be_nested_str(read),
- /* K6 */ be_const_int(1),
- /* K7 */ be_nested_str(get),
- /* K8 */ be_const_int(0),
- /* K9 */ be_nested_str(tasmota),
- /* K10 */ be_nested_str(log),
- /* K11 */ be_nested_str(BRY_X3A_X20Exception_X3E_X20_X27),
- /* K12 */ be_nested_str(_X27_X20_X2D_X20),
- /* K13 */ be_const_int(2),
- }),
+ &be_ktab_class_Partition_info, /* shared constants */
&be_const_str_get_image_size,
&be_const_str_solidified,
( &(const binstruction[85]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080101, // 0001 GETMET R2 R0 K1
+ 0xA4065200, // 0000 IMPORT R1 K41
+ 0x8C08012A, // 0001 GETMET R2 R0 K42
0x7C080200, // 0002 CALL R2 1
0x4C0C0000, // 0003 LDNIL R3
0x1C080403, // 0004 EQ R2 R2 R3
0x780A0004, // 0005 JMPF R2 #000B
- 0x8C080102, // 0006 GETMET R2 R0 K2
+ 0x8C08012B, // 0006 GETMET R2 R0 K43
0x7C080200, // 0007 CALL R2 1
0x740A0001, // 0008 JMPT R2 #000B
0x5409FFFE, // 0009 LDINT R2 -1
0x80040400, // 000A RET 1 R2
0xA802003A, // 000B EXBLK 0 #0047
- 0x88080103, // 000C GETMBR R2 R0 K3
- 0x880C0104, // 000D GETMBR R3 R0 K4
- 0x8C100305, // 000E GETMET R4 R1 K5
+ 0x88080107, // 000C GETMBR R2 R0 K7
+ 0x880C0108, // 000D GETMBR R3 R0 K8
+ 0x8C10032C, // 000E GETMET R4 R1 K44
0x5C180400, // 000F MOVE R6 R2
- 0x581C0006, // 0010 LDCONST R7 K6
+ 0x581C0004, // 0010 LDCONST R7 K4
0x7C100600, // 0011 CALL R4 3
- 0x8C100907, // 0012 GETMET R4 R4 K7
- 0x58180008, // 0013 LDCONST R6 K8
- 0x581C0006, // 0014 LDCONST R7 K6
+ 0x8C10090C, // 0012 GETMET R4 R4 K12
+ 0x58180001, // 0013 LDCONST R6 K1
+ 0x581C0004, // 0014 LDCONST R7 K4
0x7C100600, // 0015 CALL R4 3
0x541600E8, // 0016 LDINT R5 233
0x20140805, // 0017 NE R5 R4 R5
@@ -2335,29 +2140,29 @@ be_local_closure(class_Partition_info_get_image_size, /* name */
0x5415FFFE, // 0019 LDINT R5 -1
0xA8040001, // 001A EXBLK 1 1
0x80040A00, // 001B RET 1 R5
- 0x8C140305, // 001C GETMET R5 R1 K5
- 0x001C0506, // 001D ADD R7 R2 K6
- 0x58200006, // 001E LDCONST R8 K6
+ 0x8C14032C, // 001C GETMET R5 R1 K44
+ 0x001C0504, // 001D ADD R7 R2 K4
+ 0x58200004, // 001E LDCONST R8 K4
0x7C140600, // 001F CALL R5 3
- 0x8C140B07, // 0020 GETMET R5 R5 K7
- 0x581C0008, // 0021 LDCONST R7 K8
- 0x58200006, // 0022 LDCONST R8 K6
+ 0x8C140B0C, // 0020 GETMET R5 R5 K12
+ 0x581C0001, // 0021 LDCONST R7 K1
+ 0x58200004, // 0022 LDCONST R8 K4
0x7C140600, // 0023 CALL R5 3
0x541A001F, // 0024 LDINT R6 32
0x00180406, // 0025 ADD R6 R2 R6
- 0x581C0008, // 0026 LDCONST R7 K8
+ 0x581C0001, // 0026 LDCONST R7 K1
0x14200E05, // 0027 LT R8 R7 R5
0x78220017, // 0028 JMPF R8 #0041
- 0x8C200305, // 0029 GETMET R8 R1 K5
+ 0x8C20032C, // 0029 GETMET R8 R1 K44
0x542A0007, // 002A LDINT R10 8
0x04280C0A, // 002B SUB R10 R6 R10
0x542E0007, // 002C LDINT R11 8
0x7C200600, // 002D CALL R8 3
- 0x8C241107, // 002E GETMET R9 R8 K7
- 0x582C0008, // 002F LDCONST R11 K8
+ 0x8C24110C, // 002E GETMET R9 R8 K12
+ 0x582C0001, // 002F LDCONST R11 K1
0x54320003, // 0030 LDINT R12 4
0x7C240600, // 0031 CALL R9 3
- 0x8C281107, // 0032 GETMET R10 R8 K7
+ 0x8C28110C, // 0032 GETMET R10 R8 K12
0x54320003, // 0033 LDINT R12 4
0x54360003, // 0034 LDINT R13 4
0x7C280600, // 0035 CALL R10 3
@@ -2370,20 +2175,20 @@ be_local_closure(class_Partition_info_get_image_size, /* name */
0x542DFFFE, // 003C LDINT R11 -1
0xA8040001, // 003D EXBLK 1 1
0x80041600, // 003E RET 1 R11
- 0x001C0F06, // 003F ADD R7 R7 K6
+ 0x001C0F04, // 003F ADD R7 R7 K4
0x7001FFE5, // 0040 JMP #0027
0x04200C02, // 0041 SUB R8 R6 R2
- 0x00201106, // 0042 ADD R8 R8 K6
+ 0x00201104, // 0042 ADD R8 R8 K4
0xA8040001, // 0043 EXBLK 1 1
0x80041000, // 0044 RET 1 R8
0xA8040001, // 0045 EXBLK 1 1
0x7002000C, // 0046 JMP #0054
0xAC080002, // 0047 CATCH R2 0 2
0x70020009, // 0048 JMP #0053
- 0xB8121200, // 0049 GETNGBL R4 K9
- 0x8C10090A, // 004A GETMET R4 R4 K10
- 0x001A1602, // 004B ADD R6 K11 R2
- 0x00180D0C, // 004C ADD R6 R6 K12
+ 0xB8125A00, // 0049 GETNGBL R4 K45
+ 0x8C10092E, // 004A GETMET R4 R4 K46
+ 0x001A5E02, // 004B ADD R6 K47 R2
+ 0x00180D30, // 004C ADD R6 R6 K48
0x00180C03, // 004D ADD R6 R6 R3
0x581C000D, // 004E LDCONST R7 K13
0x7C100600, // 004F CALL R4 3
@@ -2437,7 +2242,7 @@ be_local_closure(init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str(global),
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_persist.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_persist.h
index a084b51ef..44d7da7e1 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_persist.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_persist.h
@@ -15,7 +15,7 @@ be_local_closure(_anonymous_, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str(Persist),
@@ -31,35 +31,62 @@ be_local_closure(_anonymous_, /* name */
);
/*******************************************************************/
+// compact class 'Persist' ktab size: 35, total: 65 (saved 240 bytes)
+static const bvalue be_ktab_class_Persist[35] = {
+ /* K0 */ be_nested_str(json),
+ /* K1 */ be_nested_str(write),
+ /* K2 */ be_nested_str(_X7B),
+ /* K3 */ be_nested_str(keys),
+ /* K4 */ be_nested_str(dump),
+ /* K5 */ be_nested_str(_X3A),
+ /* K6 */ be_nested_str(json_fdump_any),
+ /* K7 */ be_nested_str(_X2C),
+ /* K8 */ be_nested_str(stop_iteration),
+ /* K9 */ be_nested_str(_X7D),
+ /* K10 */ be_nested_str(json_fdump_map),
+ /* K11 */ be_nested_str(json_fdump_list),
+ /* K12 */ be_nested_str(_p),
+ /* K13 */ be_nested_str(_dirty),
+ /* K14 */ be_nested_str(load),
+ /* K15 */ be_nested_str(_filename),
+ /* K16 */ be_nested_str(w),
+ /* K17 */ be_nested_str(json_fdump),
+ /* K18 */ be_nested_str(close),
+ /* K19 */ be_nested_str(_X7B_X7D),
+ /* K20 */ be_nested_str(find),
+ /* K21 */ be_nested_str(contains),
+ /* K22 */ be_nested_str(_X5B),
+ /* K23 */ be_const_int(0),
+ /* K24 */ be_const_int(1),
+ /* K25 */ be_nested_str(_X5D),
+ /* K26 */ be_nested_str(internal_error),
+ /* K27 */ be_nested_str(persist_X2E_p_X20is_X20not_X20a_X20map),
+ /* K28 */ be_nested_str(path),
+ /* K29 */ be_nested_str(exists),
+ /* K30 */ be_nested_str(r),
+ /* K31 */ be_nested_str(read),
+ /* K32 */ be_nested_str(BRY_X3A_X20failed_X20to_X20load_X20_persist_X2Ejson),
+ /* K33 */ be_nested_str(save),
+ /* K34 */ be_nested_str(remove),
+};
+
extern const bclass be_class_Persist;
/********************************************************************
** Solidified function: json_fdump_map
********************************************************************/
-extern const bclass be_class_Persist;
be_local_closure(class_Persist_json_fdump_map, /* name */
be_nested_proto(
13, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Persist,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str(json),
- /* K1 */ be_nested_str(write),
- /* K2 */ be_nested_str(_X7B),
- /* K3 */ be_nested_str(keys),
- /* K4 */ be_nested_str(dump),
- /* K5 */ be_nested_str(_X3A),
- /* K6 */ be_nested_str(json_fdump_any),
- /* K7 */ be_nested_str(_X2C),
- /* K8 */ be_nested_str(stop_iteration),
- /* K9 */ be_nested_str(_X7D),
- }),
+ &be_ktab_class_Persist, /* shared constants */
&be_const_str_json_fdump_map,
&be_const_str_solidified,
( &(const binstruction[41]) { /* code */
@@ -110,202 +137,20 @@ be_local_closure(class_Persist_json_fdump_map, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: setmember
-********************************************************************/
-extern const bclass be_class_Persist;
-be_local_closure(class_Persist_setmember, /* name */
- be_nested_proto(
- 4, /* nstack */
- 3, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Persist,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(_p),
- /* K1 */ be_nested_str(_dirty),
- }),
- &be_const_str_setmember,
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x980C0202, // 0001 SETIDX R3 R1 R2
- 0x500C0200, // 0002 LDBOOL R3 1 0
- 0x90020203, // 0003 SETMBR R0 K1 R3
- 0x80000000, // 0004 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: zero
-********************************************************************/
-extern const bclass be_class_Persist;
-be_local_closure(class_Persist_zero, /* name */
- be_nested_proto(
- 2, /* nstack */
- 1, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Persist,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(_p),
- /* K1 */ be_nested_str(_dirty),
- }),
- &be_const_str_zero,
- &be_const_str_solidified,
- ( &(const binstruction[ 6]) { /* code */
- 0x60040013, // 0000 GETGBL R1 G19
- 0x7C040000, // 0001 CALL R1 0
- 0x90020001, // 0002 SETMBR R0 K0 R1
- 0x50040200, // 0003 LDBOOL R1 1 0
- 0x90020201, // 0004 SETMBR R0 K1 R1
- 0x80000000, // 0005 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: member
-********************************************************************/
-extern const bclass be_class_Persist;
-be_local_closure(class_Persist_member, /* name */
- be_nested_proto(
- 5, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Persist,
- 1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(_p),
- /* K1 */ be_nested_str(find),
- }),
- &be_const_str_member,
- &be_const_str_solidified,
- ( &(const binstruction[ 5]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100200, // 0002 MOVE R4 R1
- 0x7C080400, // 0003 CALL R2 2
- 0x80040400, // 0004 RET 1 R2
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: json_fdump
-********************************************************************/
-extern const bclass be_class_Persist;
-be_local_closure(class_Persist_json_fdump, /* name */
- be_nested_proto(
- 7, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Persist,
- 1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str(json),
- /* K1 */ be_nested_str(_p),
- /* K2 */ be_nested_str(json_fdump_map),
- /* K3 */ be_nested_str(internal_error),
- /* K4 */ be_nested_str(persist_X2E_p_X20is_X20not_X20a_X20map),
- }),
- &be_const_str_json_fdump,
- &be_const_str_solidified,
- ( &(const binstruction[13]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x600C000F, // 0001 GETGBL R3 G15
- 0x88100101, // 0002 GETMBR R4 R0 K1
- 0x60140013, // 0003 GETGBL R5 G19
- 0x7C0C0400, // 0004 CALL R3 2
- 0x780E0004, // 0005 JMPF R3 #000B
- 0x8C0C0102, // 0006 GETMET R3 R0 K2
- 0x5C140200, // 0007 MOVE R5 R1
- 0x88180101, // 0008 GETMBR R6 R0 K1
- 0x7C0C0600, // 0009 CALL R3 3
- 0x70020000, // 000A JMP #000C
- 0xB0060704, // 000B RAISE 1 K3 K4
- 0x80000000, // 000C RET 0
- })
- )
-);
-/*******************************************************************/
-
-
-/********************************************************************
-** Solidified function: remove
-********************************************************************/
-extern const bclass be_class_Persist;
-be_local_closure(class_Persist_remove, /* name */
- be_nested_proto(
- 5, /* nstack */
- 2, /* argc */
- 2, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- &be_class_Persist,
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(_p),
- /* K1 */ be_nested_str(remove),
- /* K2 */ be_nested_str(_dirty),
- }),
- &be_const_str_remove,
- &be_const_str_solidified,
- ( &(const binstruction[ 7]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x5C100200, // 0002 MOVE R4 R1
- 0x7C080400, // 0003 CALL R2 2
- 0x50080200, // 0004 LDBOOL R2 1 0
- 0x90020402, // 0005 SETMBR R0 K2 R2
- 0x80000000, // 0006 RET 0
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: json_fdump_any
********************************************************************/
-extern const bclass be_class_Persist;
be_local_closure(class_Persist_json_fdump_any, /* name */
be_nested_proto(
9, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Persist,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str(json),
- /* K1 */ be_nested_str(json_fdump_map),
- /* K2 */ be_nested_str(json_fdump_list),
- /* K3 */ be_nested_str(write),
- /* K4 */ be_nested_str(dump),
- }),
+ &be_ktab_class_Persist, /* shared constants */
&be_const_str_json_fdump_any,
&be_const_str_solidified,
( &(const binstruction[27]) { /* code */
@@ -315,7 +160,7 @@ be_local_closure(class_Persist_json_fdump_any, /* name */
0x60180013, // 0003 GETGBL R6 G19
0x7C100400, // 0004 CALL R4 2
0x78120004, // 0005 JMPF R4 #000B
- 0x8C100101, // 0006 GETMET R4 R0 K1
+ 0x8C10010A, // 0006 GETMET R4 R0 K10
0x5C180200, // 0007 MOVE R6 R1
0x5C1C0400, // 0008 MOVE R7 R2
0x7C100600, // 0009 CALL R4 3
@@ -325,12 +170,12 @@ be_local_closure(class_Persist_json_fdump_any, /* name */
0x60180012, // 000D GETGBL R6 G18
0x7C100400, // 000E CALL R4 2
0x78120004, // 000F JMPF R4 #0015
- 0x8C100102, // 0010 GETMET R4 R0 K2
+ 0x8C10010B, // 0010 GETMET R4 R0 K11
0x5C180200, // 0011 MOVE R6 R1
0x5C1C0400, // 0012 MOVE R7 R2
0x7C100600, // 0013 CALL R4 3
0x70020004, // 0014 JMP #001A
- 0x8C100303, // 0015 GETMET R4 R1 K3
+ 0x8C100301, // 0015 GETMET R4 R1 K1
0x8C180704, // 0016 GETMET R6 R3 K4
0x5C200400, // 0017 MOVE R8 R2
0x7C180400, // 0018 CALL R6 2
@@ -343,79 +188,30 @@ be_local_closure(class_Persist_json_fdump_any, /* name */
/********************************************************************
-** Solidified function: save
+** Solidified function: init
********************************************************************/
-extern const bclass be_class_Persist;
-be_local_closure(class_Persist_save, /* name */
+be_local_closure(class_Persist_init, /* name */
be_nested_proto(
- 7, /* nstack */
+ 3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Persist,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str(_filename),
- /* K1 */ be_nested_str(w),
- /* K2 */ be_nested_str(json_fdump),
- /* K3 */ be_nested_str(close),
- /* K4 */ be_nested_str(write),
- /* K5 */ be_nested_str(_X7B_X7D),
- /* K6 */ be_nested_str(_dirty),
- }),
- &be_const_str_save,
+ &be_ktab_class_Persist, /* shared constants */
+ &be_const_str_init,
&be_const_str_solidified,
- ( &(const binstruction[48]) { /* code */
- 0x4C040000, // 0000 LDNIL R1
- 0xA802000B, // 0001 EXBLK 0 #000E
- 0x60080011, // 0002 GETGBL R2 G17
- 0x880C0100, // 0003 GETMBR R3 R0 K0
- 0x58100001, // 0004 LDCONST R4 K1
- 0x7C080400, // 0005 CALL R2 2
- 0x5C040400, // 0006 MOVE R1 R2
- 0x8C080102, // 0007 GETMET R2 R0 K2
- 0x5C100200, // 0008 MOVE R4 R1
- 0x7C080400, // 0009 CALL R2 2
- 0x8C080303, // 000A GETMET R2 R1 K3
- 0x7C080200, // 000B CALL R2 1
- 0xA8040001, // 000C EXBLK 1 1
- 0x7002001E, // 000D JMP #002D
- 0xAC080002, // 000E CATCH R2 0 2
- 0x7002001B, // 000F JMP #002C
- 0x4C100000, // 0010 LDNIL R4
- 0x20100204, // 0011 NE R4 R1 R4
- 0x78120001, // 0012 JMPF R4 #0015
- 0x8C100303, // 0013 GETMET R4 R1 K3
- 0x7C100200, // 0014 CALL R4 1
- 0x4C040000, // 0015 LDNIL R1
- 0xA8020009, // 0016 EXBLK 0 #0021
- 0x60100011, // 0017 GETGBL R4 G17
- 0x88140100, // 0018 GETMBR R5 R0 K0
- 0x58180001, // 0019 LDCONST R6 K1
- 0x7C100400, // 001A CALL R4 2
- 0x5C040800, // 001B MOVE R1 R4
- 0x8C100304, // 001C GETMET R4 R1 K4
- 0x58180005, // 001D LDCONST R6 K5
- 0x7C100400, // 001E CALL R4 2
- 0xA8040001, // 001F EXBLK 1 1
- 0x70020003, // 0020 JMP #0025
- 0xAC100000, // 0021 CATCH R4 0 0
- 0x70020000, // 0022 JMP #0024
- 0x70020000, // 0023 JMP #0025
- 0xB0080000, // 0024 RAISE 2 R0 R0
- 0x4C100000, // 0025 LDNIL R4
- 0x20100204, // 0026 NE R4 R1 R4
- 0x78120001, // 0027 JMPF R4 #002A
- 0x8C100303, // 0028 GETMET R4 R1 K3
- 0x7C100200, // 0029 CALL R4 1
- 0xB0040403, // 002A RAISE 1 R2 R3
- 0x70020000, // 002B JMP #002D
- 0xB0080000, // 002C RAISE 2 R0 R0
- 0x50080000, // 002D LDBOOL R2 0 0
- 0x90020C02, // 002E SETMBR R0 K6 R2
- 0x80000000, // 002F RET 0
+ ( &(const binstruction[ 8]) { /* code */
+ 0x60040013, // 0000 GETGBL R1 G19
+ 0x7C040000, // 0001 CALL R1 0
+ 0x90021801, // 0002 SETMBR R0 K12 R1
+ 0x50040000, // 0003 LDBOOL R1 0 0
+ 0x90021A01, // 0004 SETMBR R0 K13 R1
+ 0x8C04010E, // 0005 GETMET R1 R0 K14
+ 0x7C040200, // 0006 CALL R1 1
+ 0x80000000, // 0007 RET 0
})
)
);
@@ -423,85 +219,101 @@ be_local_closure(class_Persist_save, /* name */
/********************************************************************
-** Solidified function: load
+** Solidified function: save
********************************************************************/
-extern const bclass be_class_Persist;
-be_local_closure(class_Persist_load, /* name */
+be_local_closure(class_Persist_save, /* name */
be_nested_proto(
- 9, /* nstack */
+ 7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Persist,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str(json),
- /* K1 */ be_nested_str(path),
- /* K2 */ be_nested_str(exists),
- /* K3 */ be_nested_str(_filename),
- /* K4 */ be_nested_str(r),
- /* K5 */ be_nested_str(load),
- /* K6 */ be_nested_str(read),
- /* K7 */ be_nested_str(close),
- /* K8 */ be_nested_str(_p),
- /* K9 */ be_nested_str(BRY_X3A_X20failed_X20to_X20load_X20_persist_X2Ejson),
- /* K10 */ be_nested_str(_dirty),
- /* K11 */ be_nested_str(save),
- }),
- &be_const_str_load,
+ &be_ktab_class_Persist, /* shared constants */
+ &be_const_str_save,
&be_const_str_solidified,
- ( &(const binstruction[49]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xA40A0200, // 0001 IMPORT R2 K1
- 0x4C0C0000, // 0002 LDNIL R3
- 0x4C100000, // 0003 LDNIL R4
- 0x8C140502, // 0004 GETMET R5 R2 K2
- 0x881C0103, // 0005 GETMBR R7 R0 K3
- 0x7C140400, // 0006 CALL R5 2
- 0x78160025, // 0007 JMPF R5 #002E
- 0xA802000D, // 0008 EXBLK 0 #0017
- 0x60140011, // 0009 GETGBL R5 G17
- 0x88180103, // 000A GETMBR R6 R0 K3
- 0x581C0004, // 000B LDCONST R7 K4
- 0x7C140400, // 000C CALL R5 2
- 0x5C0C0A00, // 000D MOVE R3 R5
- 0x8C140305, // 000E GETMET R5 R1 K5
- 0x8C1C0706, // 000F GETMET R7 R3 K6
- 0x7C1C0200, // 0010 CALL R7 1
- 0x7C140400, // 0011 CALL R5 2
- 0x5C100A00, // 0012 MOVE R4 R5
- 0x8C140707, // 0013 GETMET R5 R3 K7
- 0x7C140200, // 0014 CALL R5 1
- 0xA8040001, // 0015 EXBLK 1 1
- 0x70020009, // 0016 JMP #0021
- 0xAC140002, // 0017 CATCH R5 0 2
- 0x70020006, // 0018 JMP #0020
- 0x4C1C0000, // 0019 LDNIL R7
- 0x201C0607, // 001A NE R7 R3 R7
- 0x781E0001, // 001B JMPF R7 #001E
- 0x8C1C0707, // 001C GETMET R7 R3 K7
- 0x7C1C0200, // 001D CALL R7 1
- 0xB0040A06, // 001E RAISE 1 R5 R6
- 0x70020000, // 001F JMP #0021
- 0xB0080000, // 0020 RAISE 2 R0 R0
- 0x6014000F, // 0021 GETGBL R5 G15
- 0x5C180800, // 0022 MOVE R6 R4
- 0x601C0013, // 0023 GETGBL R7 G19
- 0x7C140400, // 0024 CALL R5 2
- 0x78160001, // 0025 JMPF R5 #0028
- 0x90021004, // 0026 SETMBR R0 K8 R4
- 0x70020002, // 0027 JMP #002B
- 0x60140001, // 0028 GETGBL R5 G1
- 0x58180009, // 0029 LDCONST R6 K9
- 0x7C140200, // 002A CALL R5 1
- 0x50140000, // 002B LDBOOL R5 0 0
- 0x90021405, // 002C SETMBR R0 K10 R5
- 0x70020001, // 002D JMP #0030
- 0x8C14010B, // 002E GETMET R5 R0 K11
- 0x7C140200, // 002F CALL R5 1
- 0x80000000, // 0030 RET 0
+ ( &(const binstruction[50]) { /* code */
+ 0x8804010D, // 0000 GETMBR R1 R0 K13
+ 0x7806002E, // 0001 JMPF R1 #0031
+ 0x4C040000, // 0002 LDNIL R1
+ 0xA802000B, // 0003 EXBLK 0 #0010
+ 0x60080011, // 0004 GETGBL R2 G17
+ 0x880C010F, // 0005 GETMBR R3 R0 K15
+ 0x58100010, // 0006 LDCONST R4 K16
+ 0x7C080400, // 0007 CALL R2 2
+ 0x5C040400, // 0008 MOVE R1 R2
+ 0x8C080111, // 0009 GETMET R2 R0 K17
+ 0x5C100200, // 000A MOVE R4 R1
+ 0x7C080400, // 000B CALL R2 2
+ 0x8C080312, // 000C GETMET R2 R1 K18
+ 0x7C080200, // 000D CALL R2 1
+ 0xA8040001, // 000E EXBLK 1 1
+ 0x7002001E, // 000F JMP #002F
+ 0xAC080002, // 0010 CATCH R2 0 2
+ 0x7002001B, // 0011 JMP #002E
+ 0x4C100000, // 0012 LDNIL R4
+ 0x20100204, // 0013 NE R4 R1 R4
+ 0x78120001, // 0014 JMPF R4 #0017
+ 0x8C100312, // 0015 GETMET R4 R1 K18
+ 0x7C100200, // 0016 CALL R4 1
+ 0x4C040000, // 0017 LDNIL R1
+ 0xA8020009, // 0018 EXBLK 0 #0023
+ 0x60100011, // 0019 GETGBL R4 G17
+ 0x8814010F, // 001A GETMBR R5 R0 K15
+ 0x58180010, // 001B LDCONST R6 K16
+ 0x7C100400, // 001C CALL R4 2
+ 0x5C040800, // 001D MOVE R1 R4
+ 0x8C100301, // 001E GETMET R4 R1 K1
+ 0x58180013, // 001F LDCONST R6 K19
+ 0x7C100400, // 0020 CALL R4 2
+ 0xA8040001, // 0021 EXBLK 1 1
+ 0x70020003, // 0022 JMP #0027
+ 0xAC100000, // 0023 CATCH R4 0 0
+ 0x70020000, // 0024 JMP #0026
+ 0x70020000, // 0025 JMP #0027
+ 0xB0080000, // 0026 RAISE 2 R0 R0
+ 0x4C100000, // 0027 LDNIL R4
+ 0x20100204, // 0028 NE R4 R1 R4
+ 0x78120001, // 0029 JMPF R4 #002C
+ 0x8C100312, // 002A GETMET R4 R1 K18
+ 0x7C100200, // 002B CALL R4 1
+ 0xB0040403, // 002C RAISE 1 R2 R3
+ 0x70020000, // 002D JMP #002F
+ 0xB0080000, // 002E RAISE 2 R0 R0
+ 0x50080000, // 002F LDBOOL R2 0 0
+ 0x90021A02, // 0030 SETMBR R0 K13 R2
+ 0x80000000, // 0031 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: zero
+********************************************************************/
+be_local_closure(class_Persist_zero, /* name */
+ be_nested_proto(
+ 2, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Persist, /* shared constants */
+ &be_const_str_zero,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 6]) { /* code */
+ 0x60040013, // 0000 GETGBL R1 G19
+ 0x7C040000, // 0001 CALL R1 0
+ 0x90021801, // 0002 SETMBR R0 K12 R1
+ 0x50040200, // 0003 LDBOOL R1 1 0
+ 0x90021A01, // 0004 SETMBR R0 K13 R1
+ 0x80000000, // 0005 RET 0
})
)
);
@@ -511,26 +323,22 @@ be_local_closure(class_Persist_load, /* name */
/********************************************************************
** Solidified function: find
********************************************************************/
-extern const bclass be_class_Persist;
be_local_closure(class_Persist_find, /* name */
be_nested_proto(
7, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Persist,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(_p),
- /* K1 */ be_nested_str(find),
- }),
+ &be_ktab_class_Persist, /* shared constants */
&be_const_str_find,
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
+ 0x880C010C, // 0000 GETMBR R3 R0 K12
+ 0x8C0C0714, // 0001 GETMET R3 R3 K20
0x5C140200, // 0002 MOVE R5 R1
0x5C180400, // 0003 MOVE R6 R2
0x7C0C0600, // 0004 CALL R3 3
@@ -542,48 +350,27 @@ be_local_closure(class_Persist_find, /* name */
/********************************************************************
-** Solidified function: init
+** Solidified function: has
********************************************************************/
-extern const bclass be_class_Persist;
-be_local_closure(class_Persist_init, /* name */
+be_local_closure(class_Persist_has, /* name */
be_nested_proto(
- 6, /* nstack */
+ 5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Persist,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str(_p),
- /* K1 */ be_nested_str(copy),
- /* K2 */ be_nested_str(load),
- /* K3 */ be_nested_str(_filename),
- /* K4 */ be_nested_str(_dirty),
- }),
- &be_const_str_init,
+ &be_ktab_class_Persist, /* shared constants */
+ &be_const_str_has,
&be_const_str_solidified,
- ( &(const binstruction[19]) { /* code */
- 0x6008000F, // 0000 GETGBL R2 G15
- 0x5C0C0200, // 0001 MOVE R3 R1
- 0x60100013, // 0002 GETGBL R4 G19
+ ( &(const binstruction[ 5]) { /* code */
+ 0x8808010C, // 0000 GETMBR R2 R0 K12
+ 0x8C080515, // 0001 GETMET R2 R2 K21
+ 0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
- 0x780A0003, // 0004 JMPF R2 #0009
- 0x8C080301, // 0005 GETMET R2 R1 K1
- 0x7C080200, // 0006 CALL R2 1
- 0x90020002, // 0007 SETMBR R0 K0 R2
- 0x70020002, // 0008 JMP #000C
- 0x60080013, // 0009 GETGBL R2 G19
- 0x7C080000, // 000A CALL R2 0
- 0x90020002, // 000B SETMBR R0 K0 R2
- 0x8C080102, // 000C GETMET R2 R0 K2
- 0x88100100, // 000D GETMBR R4 R0 K0
- 0x88140103, // 000E GETMBR R5 R0 K3
- 0x7C080600, // 000F CALL R2 3
- 0x50080000, // 0010 LDBOOL R2 0 0
- 0x90020802, // 0011 SETMBR R0 K4 R2
- 0x80000000, // 0012 RET 0
+ 0x80040400, // 0004 RET 1 R2
})
)
);
@@ -593,53 +380,43 @@ be_local_closure(class_Persist_init, /* name */
/********************************************************************
** Solidified function: json_fdump_list
********************************************************************/
-extern const bclass be_class_Persist;
be_local_closure(class_Persist_json_fdump_list, /* name */
be_nested_proto(
9, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Persist,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str(json),
- /* K1 */ be_nested_str(write),
- /* K2 */ be_nested_str(_X5B),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str(_X2C),
- /* K5 */ be_nested_str(json_fdump_any),
- /* K6 */ be_const_int(1),
- /* K7 */ be_nested_str(_X5D),
- }),
+ &be_ktab_class_Persist, /* shared constants */
&be_const_str_json_fdump_list,
&be_const_str_solidified,
( &(const binstruction[25]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0
0x8C100301, // 0001 GETMET R4 R1 K1
- 0x58180002, // 0002 LDCONST R6 K2
+ 0x58180016, // 0002 LDCONST R6 K22
0x7C100400, // 0003 CALL R4 2
- 0x58100003, // 0004 LDCONST R4 K3
+ 0x58100017, // 0004 LDCONST R4 K23
0x6014000C, // 0005 GETGBL R5 G12
0x5C180400, // 0006 MOVE R6 R2
0x7C140200, // 0007 CALL R5 1
0x14140805, // 0008 LT R5 R4 R5
0x7816000A, // 0009 JMPF R5 #0015
- 0x24140903, // 000A GT R5 R4 K3
+ 0x24140917, // 000A GT R5 R4 K23
0x78160002, // 000B JMPF R5 #000F
0x8C140301, // 000C GETMET R5 R1 K1
- 0x581C0004, // 000D LDCONST R7 K4
+ 0x581C0007, // 000D LDCONST R7 K7
0x7C140400, // 000E CALL R5 2
- 0x8C140105, // 000F GETMET R5 R0 K5
+ 0x8C140106, // 000F GETMET R5 R0 K6
0x5C1C0200, // 0010 MOVE R7 R1
0x94200404, // 0011 GETIDX R8 R2 R4
0x7C140600, // 0012 CALL R5 3
- 0x00100906, // 0013 ADD R4 R4 K6
+ 0x00100918, // 0013 ADD R4 R4 K24
0x7001FFEF, // 0014 JMP #0005
0x8C140301, // 0015 GETMET R5 R1 K1
- 0x581C0007, // 0016 LDCONST R7 K7
+ 0x581C0019, // 0016 LDCONST R7 K25
0x7C140400, // 0017 CALL R5 2
0x80000000, // 0018 RET 0
})
@@ -649,28 +426,24 @@ be_local_closure(class_Persist_json_fdump_list, /* name */
/********************************************************************
-** Solidified function: has
+** Solidified function: member
********************************************************************/
-extern const bclass be_class_Persist;
-be_local_closure(class_Persist_has, /* name */
+be_local_closure(class_Persist_member, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Persist,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(_p),
- /* K1 */ be_nested_str(has),
- }),
- &be_const_str_has,
+ &be_ktab_class_Persist, /* shared constants */
+ &be_const_str_member,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x8808010C, // 0000 GETMBR R2 R0 K12
+ 0x8C080514, // 0001 GETMET R2 R2 K20
0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
0x80040400, // 0004 RET 1 R2
@@ -680,30 +453,225 @@ be_local_closure(class_Persist_has, /* name */
/*******************************************************************/
+/********************************************************************
+** Solidified function: setmember
+********************************************************************/
+be_local_closure(class_Persist_setmember, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Persist, /* shared constants */
+ &be_const_str_setmember,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x880C010C, // 0000 GETMBR R3 R0 K12
+ 0x980C0202, // 0001 SETIDX R3 R1 R2
+ 0x500C0200, // 0002 LDBOOL R3 1 0
+ 0x90021A03, // 0003 SETMBR R0 K13 R3
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: contains
+********************************************************************/
+be_local_closure(class_Persist_contains, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Persist, /* shared constants */
+ &be_const_str_contains,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x8808010C, // 0000 GETMBR R2 R0 K12
+ 0x8C080515, // 0001 GETMET R2 R2 K21
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x7C080400, // 0003 CALL R2 2
+ 0x80040400, // 0004 RET 1 R2
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: json_fdump
+********************************************************************/
+be_local_closure(class_Persist_json_fdump, /* name */
+ be_nested_proto(
+ 7, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Persist, /* shared constants */
+ &be_const_str_json_fdump,
+ &be_const_str_solidified,
+ ( &(const binstruction[13]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0x600C000F, // 0001 GETGBL R3 G15
+ 0x8810010C, // 0002 GETMBR R4 R0 K12
+ 0x60140013, // 0003 GETGBL R5 G19
+ 0x7C0C0400, // 0004 CALL R3 2
+ 0x780E0004, // 0005 JMPF R3 #000B
+ 0x8C0C010A, // 0006 GETMET R3 R0 K10
+ 0x5C140200, // 0007 MOVE R5 R1
+ 0x8818010C, // 0008 GETMBR R6 R0 K12
+ 0x7C0C0600, // 0009 CALL R3 3
+ 0x70020000, // 000A JMP #000C
+ 0xB006351B, // 000B RAISE 1 K26 K27
+ 0x80000000, // 000C RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: load
+********************************************************************/
+be_local_closure(class_Persist_load, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Persist, /* shared constants */
+ &be_const_str_load,
+ &be_const_str_solidified,
+ ( &(const binstruction[49]) { /* code */
+ 0xA4060000, // 0000 IMPORT R1 K0
+ 0xA40A3800, // 0001 IMPORT R2 K28
+ 0x4C0C0000, // 0002 LDNIL R3
+ 0x4C100000, // 0003 LDNIL R4
+ 0x8C14051D, // 0004 GETMET R5 R2 K29
+ 0x881C010F, // 0005 GETMBR R7 R0 K15
+ 0x7C140400, // 0006 CALL R5 2
+ 0x78160025, // 0007 JMPF R5 #002E
+ 0xA802000D, // 0008 EXBLK 0 #0017
+ 0x60140011, // 0009 GETGBL R5 G17
+ 0x8818010F, // 000A GETMBR R6 R0 K15
+ 0x581C001E, // 000B LDCONST R7 K30
+ 0x7C140400, // 000C CALL R5 2
+ 0x5C0C0A00, // 000D MOVE R3 R5
+ 0x8C14030E, // 000E GETMET R5 R1 K14
+ 0x8C1C071F, // 000F GETMET R7 R3 K31
+ 0x7C1C0200, // 0010 CALL R7 1
+ 0x7C140400, // 0011 CALL R5 2
+ 0x5C100A00, // 0012 MOVE R4 R5
+ 0x8C140712, // 0013 GETMET R5 R3 K18
+ 0x7C140200, // 0014 CALL R5 1
+ 0xA8040001, // 0015 EXBLK 1 1
+ 0x70020009, // 0016 JMP #0021
+ 0xAC140002, // 0017 CATCH R5 0 2
+ 0x70020006, // 0018 JMP #0020
+ 0x4C1C0000, // 0019 LDNIL R7
+ 0x201C0607, // 001A NE R7 R3 R7
+ 0x781E0001, // 001B JMPF R7 #001E
+ 0x8C1C0712, // 001C GETMET R7 R3 K18
+ 0x7C1C0200, // 001D CALL R7 1
+ 0xB0040A06, // 001E RAISE 1 R5 R6
+ 0x70020000, // 001F JMP #0021
+ 0xB0080000, // 0020 RAISE 2 R0 R0
+ 0x6014000F, // 0021 GETGBL R5 G15
+ 0x5C180800, // 0022 MOVE R6 R4
+ 0x601C0013, // 0023 GETGBL R7 G19
+ 0x7C140400, // 0024 CALL R5 2
+ 0x78160001, // 0025 JMPF R5 #0028
+ 0x90021804, // 0026 SETMBR R0 K12 R4
+ 0x70020002, // 0027 JMP #002B
+ 0x60140001, // 0028 GETGBL R5 G1
+ 0x58180020, // 0029 LDCONST R6 K32
+ 0x7C140200, // 002A CALL R5 1
+ 0x50140000, // 002B LDBOOL R5 0 0
+ 0x90021A05, // 002C SETMBR R0 K13 R5
+ 0x70020001, // 002D JMP #0030
+ 0x8C140121, // 002E GETMET R5 R0 K33
+ 0x7C140200, // 002F CALL R5 1
+ 0x80000000, // 0030 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: remove
+********************************************************************/
+be_local_closure(class_Persist_remove, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_Persist, /* shared constants */
+ &be_const_str_remove,
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x8808010C, // 0000 GETMBR R2 R0 K12
+ 0x8C080522, // 0001 GETMET R2 R2 K34
+ 0x5C100200, // 0002 MOVE R4 R1
+ 0x7C080400, // 0003 CALL R2 2
+ 0x50080200, // 0004 LDBOOL R2 1 0
+ 0x90021A02, // 0005 SETMBR R0 K13 R2
+ 0x80000000, // 0006 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
/********************************************************************
** Solidified class: Persist
********************************************************************/
be_local_class(Persist,
2,
NULL,
- be_nested_map(16,
+ be_nested_map(17,
( (struct bmapnode*) &(const bmapnode[]) {
- { be_const_key(has, 6), be_const_closure(class_Persist_has_closure) },
- { be_const_key(setmember, -1), be_const_closure(class_Persist_setmember_closure) },
{ be_const_key(remove, -1), be_const_closure(class_Persist_remove_closure) },
- { be_const_key(zero, 0), be_const_closure(class_Persist_zero_closure) },
- { be_const_key(json_fdump, -1), be_const_closure(class_Persist_json_fdump_closure) },
- { be_const_key(json_fdump_list, 2), be_const_closure(class_Persist_json_fdump_list_closure) },
- { be_const_key(init, 15), be_const_closure(class_Persist_init_closure) },
- { be_const_key(find, -1), be_const_closure(class_Persist_find_closure) },
- { be_const_key(save, -1), be_const_closure(class_Persist_save_closure) },
- { be_const_key(json_fdump_any, 12), be_const_closure(class_Persist_json_fdump_any_closure) },
- { be_const_key(_p, 7), be_const_var(0) },
{ be_const_key(_filename, -1), be_nested_str(_persist_X2Ejson) },
- { be_const_key(load, -1), be_const_closure(class_Persist_load_closure) },
- { be_const_key(json_fdump_map, 5), be_const_closure(class_Persist_json_fdump_map_closure) },
- { be_const_key(_dirty, -1), be_const_var(1) },
+ { be_const_key(json_fdump_any, 4), be_const_closure(class_Persist_json_fdump_any_closure) },
+ { be_const_key(load, 16), be_const_closure(class_Persist_load_closure) },
+ { be_const_key(zero, -1), be_const_closure(class_Persist_zero_closure) },
+ { be_const_key(json_fdump_list, -1), be_const_closure(class_Persist_json_fdump_list_closure) },
+ { be_const_key(find, 5), be_const_closure(class_Persist_find_closure) },
+ { be_const_key(has, -1), be_const_closure(class_Persist_has_closure) },
{ be_const_key(member, -1), be_const_closure(class_Persist_member_closure) },
+ { be_const_key(setmember, 8), be_const_closure(class_Persist_setmember_closure) },
+ { be_const_key(_dirty, 0), be_const_var(1) },
+ { be_const_key(save, 9), be_const_closure(class_Persist_save_closure) },
+ { be_const_key(contains, -1), be_const_closure(class_Persist_contains_closure) },
+ { be_const_key(_p, -1), be_const_var(0) },
+ { be_const_key(json_fdump, -1), be_const_closure(class_Persist_json_fdump_closure) },
+ { be_const_key(json_fdump_map, 3), be_const_closure(class_Persist_json_fdump_map_closure) },
+ { be_const_key(init, -1), be_const_closure(class_Persist_init_closure) },
})),
(bstring*) &be_const_str_Persist
);
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_python_compat.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_python_compat.h
index 21e5ac374..01d239710 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_python_compat.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_python_compat.h
@@ -15,7 +15,7 @@ be_local_closure(_anonymous_, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 5]) { /* constants */
/* K0 */ be_nested_str(global),
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_rule_matcher.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_rule_matcher.h
index 727fcf3a9..66322afb7 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_rule_matcher.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_rule_matcher.h
@@ -3,28 +3,37 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+extern const bclass be_class_Rule_Matcher_Key;
+// compact class 'Rule_Matcher_Key' ktab size: 9, total: 11 (saved 16 bytes)
+static const bvalue be_ktab_class_Rule_Matcher_Key[9] = {
+ /* K0 */ be_nested_str(_X3CMatcher_X20key_X3D_X27),
+ /* K1 */ be_nested_str(name),
+ /* K2 */ be_nested_str(_X27_X3E),
+ /* K3 */ be_const_class(be_class_Rule_Matcher_Key),
+ /* K4 */ be_nested_str(string),
+ /* K5 */ be_nested_str(toupper),
+ /* K6 */ be_nested_str(keys),
+ /* K7 */ be_nested_str(stop_iteration),
+ /* K8 */ be_nested_str(find_key_i),
+};
+
extern const bclass be_class_Rule_Matcher_Key;
/********************************************************************
** Solidified function: tostring
********************************************************************/
-extern const bclass be_class_Rule_Matcher_Key;
be_local_closure(class_Rule_Matcher_Key_tostring, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Rule_Matcher_Key,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(_X3CMatcher_X20key_X3D_X27),
- /* K1 */ be_nested_str(name),
- /* K2 */ be_nested_str(_X27_X3E),
- }),
+ &be_ktab_class_Rule_Matcher_Key, /* shared constants */
&be_const_str_tostring,
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
@@ -43,30 +52,23 @@ be_local_closure(class_Rule_Matcher_Key_tostring, /* name */
/********************************************************************
** Solidified function: find_key_i
********************************************************************/
-extern const bclass be_class_Rule_Matcher_Key;
be_local_closure(class_Rule_Matcher_Key_find_key_i, /* name */
be_nested_proto(
11, /* nstack */
2, /* argc */
- 4, /* varg */
+ 12, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Rule_Matcher_Key,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_const_class(be_class_Rule_Matcher_Key),
- /* K1 */ be_nested_str(string),
- /* K2 */ be_nested_str(toupper),
- /* K3 */ be_nested_str(keys),
- /* K4 */ be_nested_str(stop_iteration),
- }),
+ &be_ktab_class_Rule_Matcher_Key, /* shared constants */
&be_const_str_find_key_i,
&be_const_str_solidified,
( &(const binstruction[31]) { /* code */
- 0x58080000, // 0000 LDCONST R2 K0
- 0xA40E0200, // 0001 IMPORT R3 K1
- 0x8C100702, // 0002 GETMET R4 R3 K2
+ 0x58080003, // 0000 LDCONST R2 K3
+ 0xA40E0800, // 0001 IMPORT R3 K4
+ 0x8C100705, // 0002 GETMET R4 R3 K5
0x5C180200, // 0003 MOVE R6 R1
0x7C100400, // 0004 CALL R4 2
0x6014000F, // 0005 GETGBL R5 G15
@@ -75,13 +77,13 @@ be_local_closure(class_Rule_Matcher_Key_find_key_i, /* name */
0x7C140400, // 0008 CALL R5 2
0x78160013, // 0009 JMPF R5 #001E
0x60140010, // 000A GETGBL R5 G16
- 0x8C180103, // 000B GETMET R6 R0 K3
+ 0x8C180106, // 000B GETMET R6 R0 K6
0x7C180200, // 000C CALL R6 1
0x7C140200, // 000D CALL R5 1
0xA802000B, // 000E EXBLK 0 #001B
0x5C180A00, // 000F MOVE R6 R5
0x7C180000, // 0010 CALL R6 0
- 0x8C1C0702, // 0011 GETMET R7 R3 K2
+ 0x8C1C0705, // 0011 GETMET R7 R3 K5
0x60240008, // 0012 GETGBL R9 G8
0x5C280C00, // 0013 MOVE R10 R6
0x7C240200, // 0014 CALL R9 1
@@ -91,7 +93,7 @@ be_local_closure(class_Rule_Matcher_Key_find_key_i, /* name */
0xA8040001, // 0018 EXBLK 1 1
0x80040C00, // 0019 RET 1 R6
0x7001FFF3, // 001A JMP #000F
- 0x58140004, // 001B LDCONST R5 K4
+ 0x58140007, // 001B LDCONST R5 K7
0xAC140200, // 001C CATCH R5 1 0
0xB0080000, // 001D RAISE 2 R0 R0
0x80000000, // 001E RET 0
@@ -104,21 +106,17 @@ be_local_closure(class_Rule_Matcher_Key_find_key_i, /* name */
/********************************************************************
** Solidified function: match
********************************************************************/
-extern const bclass be_class_Rule_Matcher_Key;
be_local_closure(class_Rule_Matcher_Key_match, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Rule_Matcher_Key,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(find_key_i),
- /* K1 */ be_nested_str(name),
- }),
+ &be_ktab_class_Rule_Matcher_Key, /* shared constants */
&be_const_str_match,
&be_const_str_solidified,
( &(const binstruction[23]) { /* code */
@@ -134,7 +132,7 @@ be_local_closure(class_Rule_Matcher_Key_match, /* name */
0x740A0001, // 0009 JMPT R2 #000C
0x4C080000, // 000A LDNIL R2
0x80040400, // 000B RET 1 R2
- 0x8C080100, // 000C GETMET R2 R0 K0
+ 0x8C080108, // 000C GETMET R2 R0 K8
0x5C100200, // 000D MOVE R4 R1
0x88140101, // 000E GETMBR R5 R0 K1
0x7C080600, // 000F CALL R2 3
@@ -154,24 +152,21 @@ be_local_closure(class_Rule_Matcher_Key_match, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Rule_Matcher_Key;
be_local_closure(class_Rule_Matcher_Key_init, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Rule_Matcher_Key,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(name),
- }),
+ &be_ktab_class_Rule_Matcher_Key, /* shared constants */
&be_const_str_init,
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90020201, // 0000 SETMBR R0 K1 R1
0x80000000, // 0001 RET 0
})
)
@@ -201,7 +196,6 @@ extern const bclass be_class_Rule_Matcher_Wildcard;
/********************************************************************
** Solidified function: match
********************************************************************/
-extern const bclass be_class_Rule_Matcher_Wildcard;
be_local_closure(class_Rule_Matcher_Wildcard_match, /* name */
be_nested_proto(
5, /* nstack */
@@ -210,7 +204,7 @@ be_local_closure(class_Rule_Matcher_Wildcard_match, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Rule_Matcher_Wildcard,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_const_int(0),
@@ -251,7 +245,6 @@ be_local_closure(class_Rule_Matcher_Wildcard_match, /* name */
/********************************************************************
** Solidified function: tostring
********************************************************************/
-extern const bclass be_class_Rule_Matcher_Wildcard;
be_local_closure(class_Rule_Matcher_Wildcard_tostring, /* name */
be_nested_proto(
1, /* nstack */
@@ -260,7 +253,7 @@ be_local_closure(class_Rule_Matcher_Wildcard_tostring, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Rule_Matcher_Wildcard,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str(_X3CMatcher_X20any_X3E),
@@ -288,30 +281,56 @@ be_local_class(Rule_Matcher_Wildcard,
})),
(bstring*) &be_const_str_Rule_Matcher_Wildcard
);
+// compact class 'Rule_Matcher_Operator' ktab size: 29, total: 37 (saved 64 bytes)
+static const bvalue be_ktab_class_Rule_Matcher_Operator[29] = {
+ /* K0 */ be_nested_str(int),
+ /* K1 */ be_nested_str(real),
+ /* K2 */ be_nested_str(string),
+ /* K3 */ be_nested_str(op_func),
+ /* K4 */ be_nested_str(op_value),
+ /* K5 */ be_nested_str(op_str),
+ /* K6 */ be_nested_str(_X3D),
+ /* K7 */ be_nested_str(_X21_X3D_X3D),
+ /* K8 */ be_nested_str(_X24_X21),
+ /* K9 */ be_nested_str(_X24_X3C),
+ /* K10 */ be_nested_str(_X24_X3E),
+ /* K11 */ be_nested_str(_X24_X7C),
+ /* K12 */ be_nested_str(_X24_X5E),
+ /* K13 */ be_nested_str(_X3D_X3D),
+ /* K14 */ be_nested_str(_X21_X3D),
+ /* K15 */ be_nested_str(_X3E),
+ /* K16 */ be_nested_str(_X3E_X3D),
+ /* K17 */ be_nested_str(_X3C),
+ /* K18 */ be_nested_str(_X3C_X3D),
+ /* K19 */ be_nested_str(_X7C),
+ /* K20 */ be_nested_str(json),
+ /* K21 */ be_nested_str(load),
+ /* K22 */ be_nested_str(value_error),
+ /* K23 */ be_nested_str(value_X20needs_X20to_X20be_X20a_X20number),
+ /* K24 */ be_nested_str(_X3CMatcher_X20op_X20_X27),
+ /* K25 */ be_nested_str(_X27_X20val_X3D_X27),
+ /* K26 */ be_nested_str(_X27_X3E),
+ /* K27 */ be_nested_str(_X27_X20val_X3D),
+ /* K28 */ be_nested_str(op_parse),
+};
+
extern const bclass be_class_Rule_Matcher_Operator;
/********************************************************************
** Solidified function: match
********************************************************************/
-extern const bclass be_class_Rule_Matcher_Operator;
be_local_closure(class_Rule_Matcher_Operator_match, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Rule_Matcher_Operator,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str(int),
- /* K1 */ be_nested_str(real),
- /* K2 */ be_nested_str(string),
- /* K3 */ be_nested_str(op_func),
- /* K4 */ be_nested_str(op_value),
- }),
+ &be_ktab_class_Rule_Matcher_Operator, /* shared constants */
&be_const_str_match,
&be_const_str_solidified,
( &(const binstruction[20]) { /* code */
@@ -344,16 +363,15 @@ be_local_closure(class_Rule_Matcher_Operator_match, /* name */
/********************************************************************
** Solidified function: op_parse
********************************************************************/
-extern const bclass be_class_Rule_Matcher_Operator;
be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */
be_nested_proto(
22, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[14]) {
+ ( &(const struct bproto*[13]) {
be_nested_proto(
7, /* nstack */
2, /* argc */
@@ -361,7 +379,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str(tasmota),
@@ -389,7 +407,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str(tasmota),
@@ -417,7 +435,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str(tasmota),
@@ -445,7 +463,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str(tasmota),
@@ -472,7 +490,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str(tasmota),
@@ -499,7 +517,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str(tasmota),
@@ -526,7 +544,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
&be_const_str_op_eq,
@@ -546,7 +564,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
&be_const_str_op_neq,
@@ -566,7 +584,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
&be_const_str_op_gt,
@@ -586,7 +604,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
&be_const_str_op_gte,
@@ -606,7 +624,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
&be_const_str_op_lt,
@@ -626,7 +644,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
&be_const_str_op_lte,
@@ -646,7 +664,7 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_const_int(0),
@@ -662,38 +680,13 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */
0x80040400, // 0005 RET 1 R2
})
),
- &be_class_Rule_Matcher_Operator,
}),
1, /* has constants */
- ( &(const bvalue[23]) { /* constants */
- /* K0 */ be_nested_str(op_str),
- /* K1 */ be_nested_str(_X3D),
- /* K2 */ be_nested_str(_X21_X3D_X3D),
- /* K3 */ be_nested_str(_X24_X21),
- /* K4 */ be_nested_str(_X24_X3C),
- /* K5 */ be_nested_str(_X24_X3E),
- /* K6 */ be_nested_str(_X24_X7C),
- /* K7 */ be_nested_str(_X24_X5E),
- /* K8 */ be_nested_str(_X3D_X3D),
- /* K9 */ be_nested_str(_X21_X3D),
- /* K10 */ be_nested_str(_X3E),
- /* K11 */ be_nested_str(_X3E_X3D),
- /* K12 */ be_nested_str(_X3C),
- /* K13 */ be_nested_str(_X3C_X3D),
- /* K14 */ be_nested_str(_X7C),
- /* K15 */ be_nested_str(op_func),
- /* K16 */ be_nested_str(json),
- /* K17 */ be_nested_str(load),
- /* K18 */ be_nested_str(int),
- /* K19 */ be_nested_str(real),
- /* K20 */ be_nested_str(value_error),
- /* K21 */ be_nested_str(value_X20needs_X20to_X20be_X20a_X20number),
- /* K22 */ be_nested_str(op_value),
- }),
+ &be_ktab_class_Rule_Matcher_Operator, /* shared constants */
&be_const_str_op_parse,
&be_const_str_solidified,
( &(const binstruction[97]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90020A01, // 0000 SETMBR R0 K5 R1
0x840C0000, // 0001 CLOSURE R3 P0
0x84100001, // 0002 CLOSURE R4 P1
0x84140002, // 0003 CLOSURE R5 P2
@@ -709,86 +702,86 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */
0x843C000C, // 000D CLOSURE R15 P12
0x50400000, // 000E LDBOOL R16 0 0
0x4C440000, // 000F LDNIL R17
- 0x1C480301, // 0010 EQ R18 R1 K1
+ 0x1C480306, // 0010 EQ R18 R1 K6
0x784A0001, // 0011 JMPF R18 #0014
0x5C440600, // 0012 MOVE R17 R3
0x70020033, // 0013 JMP #0048
- 0x1C480302, // 0014 EQ R18 R1 K2
+ 0x1C480307, // 0014 EQ R18 R1 K7
0x784A0001, // 0015 JMPF R18 #0018
0x5C440800, // 0016 MOVE R17 R4
0x7002002F, // 0017 JMP #0048
- 0x1C480303, // 0018 EQ R18 R1 K3
+ 0x1C480308, // 0018 EQ R18 R1 K8
0x784A0001, // 0019 JMPF R18 #001C
0x5C440800, // 001A MOVE R17 R4
0x7002002B, // 001B JMP #0048
- 0x1C480304, // 001C EQ R18 R1 K4
+ 0x1C480309, // 001C EQ R18 R1 K9
0x784A0001, // 001D JMPF R18 #0020
0x5C440A00, // 001E MOVE R17 R5
0x70020027, // 001F JMP #0048
- 0x1C480305, // 0020 EQ R18 R1 K5
+ 0x1C48030A, // 0020 EQ R18 R1 K10
0x784A0001, // 0021 JMPF R18 #0024
0x5C440C00, // 0022 MOVE R17 R6
0x70020023, // 0023 JMP #0048
- 0x1C480306, // 0024 EQ R18 R1 K6
+ 0x1C48030B, // 0024 EQ R18 R1 K11
0x784A0001, // 0025 JMPF R18 #0028
0x5C440E00, // 0026 MOVE R17 R7
0x7002001F, // 0027 JMP #0048
- 0x1C480307, // 0028 EQ R18 R1 K7
+ 0x1C48030C, // 0028 EQ R18 R1 K12
0x784A0001, // 0029 JMPF R18 #002C
0x5C441000, // 002A MOVE R17 R8
0x7002001B, // 002B JMP #0048
0x50400200, // 002C LDBOOL R16 1 0
- 0x1C480308, // 002D EQ R18 R1 K8
+ 0x1C48030D, // 002D EQ R18 R1 K13
0x784A0001, // 002E JMPF R18 #0031
0x5C441200, // 002F MOVE R17 R9
0x70020016, // 0030 JMP #0048
- 0x1C480309, // 0031 EQ R18 R1 K9
+ 0x1C48030E, // 0031 EQ R18 R1 K14
0x784A0001, // 0032 JMPF R18 #0035
0x5C441400, // 0033 MOVE R17 R10
0x70020012, // 0034 JMP #0048
- 0x1C48030A, // 0035 EQ R18 R1 K10
+ 0x1C48030F, // 0035 EQ R18 R1 K15
0x784A0001, // 0036 JMPF R18 #0039
0x5C441600, // 0037 MOVE R17 R11
0x7002000E, // 0038 JMP #0048
- 0x1C48030B, // 0039 EQ R18 R1 K11
+ 0x1C480310, // 0039 EQ R18 R1 K16
0x784A0001, // 003A JMPF R18 #003D
0x5C441800, // 003B MOVE R17 R12
0x7002000A, // 003C JMP #0048
- 0x1C48030C, // 003D EQ R18 R1 K12
+ 0x1C480311, // 003D EQ R18 R1 K17
0x784A0001, // 003E JMPF R18 #0041
0x5C441A00, // 003F MOVE R17 R13
0x70020006, // 0040 JMP #0048
- 0x1C48030D, // 0041 EQ R18 R1 K13
+ 0x1C480312, // 0041 EQ R18 R1 K18
0x784A0001, // 0042 JMPF R18 #0045
0x5C441C00, // 0043 MOVE R17 R14
0x70020002, // 0044 JMP #0048
- 0x1C48030E, // 0045 EQ R18 R1 K14
+ 0x1C480313, // 0045 EQ R18 R1 K19
0x784A0000, // 0046 JMPF R18 #0048
0x5C441E00, // 0047 MOVE R17 R15
- 0x90021E11, // 0048 SETMBR R0 K15 R17
+ 0x90020611, // 0048 SETMBR R0 K3 R17
0x78420011, // 0049 JMPF R16 #005C
- 0xA44A2000, // 004A IMPORT R18 K16
- 0x8C4C2511, // 004B GETMET R19 R18 K17
+ 0xA44A2800, // 004A IMPORT R18 K20
+ 0x8C4C2515, // 004B GETMET R19 R18 K21
0x5C540400, // 004C MOVE R21 R2
0x7C4C0400, // 004D CALL R19 2
0x60500004, // 004E GETGBL R20 G4
0x5C542600, // 004F MOVE R21 R19
0x7C500200, // 0050 CALL R20 1
- 0x20502912, // 0051 NE R20 R20 K18
+ 0x20502900, // 0051 NE R20 R20 K0
0x78520006, // 0052 JMPF R20 #005A
0x60500004, // 0053 GETGBL R20 G4
0x5C542600, // 0054 MOVE R21 R19
0x7C500200, // 0055 CALL R20 1
- 0x20502913, // 0056 NE R20 R20 K19
+ 0x20502901, // 0056 NE R20 R20 K1
0x78520001, // 0057 JMPF R20 #005A
- 0xB0062915, // 0058 RAISE 1 K20 K21
+ 0xB0062D17, // 0058 RAISE 1 K22 K23
0x70020000, // 0059 JMP #005B
- 0x90022C13, // 005A SETMBR R0 K22 R19
+ 0x90020813, // 005A SETMBR R0 K4 R19
0x70020003, // 005B JMP #0060
0x60480008, // 005C GETGBL R18 G8
0x5C4C0400, // 005D MOVE R19 R2
0x7C480200, // 005E CALL R18 1
- 0x90022C12, // 005F SETMBR R0 K22 R18
+ 0x90020812, // 005F SETMBR R0 K4 R18
0x80000000, // 0060 RET 0
})
)
@@ -799,53 +792,43 @@ be_local_closure(class_Rule_Matcher_Operator_op_parse, /* name */
/********************************************************************
** Solidified function: tostring
********************************************************************/
-extern const bclass be_class_Rule_Matcher_Operator;
be_local_closure(class_Rule_Matcher_Operator_tostring, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Rule_Matcher_Operator,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str(op_value),
- /* K1 */ be_nested_str(string),
- /* K2 */ be_nested_str(_X3CMatcher_X20op_X20_X27),
- /* K3 */ be_nested_str(op_str),
- /* K4 */ be_nested_str(_X27_X20val_X3D_X27),
- /* K5 */ be_nested_str(_X27_X3E),
- /* K6 */ be_nested_str(_X27_X20val_X3D),
- /* K7 */ be_nested_str(_X3E),
- }),
+ &be_ktab_class_Rule_Matcher_Operator, /* shared constants */
&be_const_str_tostring,
&be_const_str_solidified,
( &(const binstruction[25]) { /* code */
0x60040004, // 0000 GETGBL R1 G4
- 0x88080100, // 0001 GETMBR R2 R0 K0
+ 0x88080104, // 0001 GETMBR R2 R0 K4
0x7C040200, // 0002 CALL R1 1
- 0x1C040301, // 0003 EQ R1 R1 K1
+ 0x1C040302, // 0003 EQ R1 R1 K2
0x78060009, // 0004 JMPF R1 #000F
- 0x88040103, // 0005 GETMBR R1 R0 K3
- 0x00060401, // 0006 ADD R1 K2 R1
- 0x00040304, // 0007 ADD R1 R1 K4
+ 0x88040105, // 0005 GETMBR R1 R0 K5
+ 0x00063001, // 0006 ADD R1 K24 R1
+ 0x00040319, // 0007 ADD R1 R1 K25
0x60080008, // 0008 GETGBL R2 G8
- 0x880C0100, // 0009 GETMBR R3 R0 K0
+ 0x880C0104, // 0009 GETMBR R3 R0 K4
0x7C080200, // 000A CALL R2 1
0x00040202, // 000B ADD R1 R1 R2
- 0x00040305, // 000C ADD R1 R1 K5
+ 0x0004031A, // 000C ADD R1 R1 K26
0x80040200, // 000D RET 1 R1
0x70020008, // 000E JMP #0018
- 0x88040103, // 000F GETMBR R1 R0 K3
- 0x00060401, // 0010 ADD R1 K2 R1
- 0x00040306, // 0011 ADD R1 R1 K6
+ 0x88040105, // 000F GETMBR R1 R0 K5
+ 0x00063001, // 0010 ADD R1 K24 R1
+ 0x0004031B, // 0011 ADD R1 R1 K27
0x60080008, // 0012 GETGBL R2 G8
- 0x880C0100, // 0013 GETMBR R3 R0 K0
+ 0x880C0104, // 0013 GETMBR R3 R0 K4
0x7C080200, // 0014 CALL R2 1
0x00040202, // 0015 ADD R1 R1 R2
- 0x00040307, // 0016 ADD R1 R1 K7
+ 0x0004030F, // 0016 ADD R1 R1 K15
0x80040200, // 0017 RET 1 R1
0x80000000, // 0018 RET 0
})
@@ -857,24 +840,21 @@ be_local_closure(class_Rule_Matcher_Operator_tostring, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Rule_Matcher_Operator;
be_local_closure(class_Rule_Matcher_Operator_init, /* name */
be_nested_proto(
7, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Rule_Matcher_Operator,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(op_parse),
- }),
+ &be_ktab_class_Rule_Matcher_Operator, /* shared constants */
&be_const_str_init,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x8C0C0100, // 0000 GETMET R3 R0 K0
+ 0x8C0C011C, // 0000 GETMET R3 R0 K28
0x5C140200, // 0001 MOVE R5 R1
0x5C180400, // 0002 MOVE R6 R2
0x7C0C0600, // 0003 CALL R3 3
@@ -903,26 +883,32 @@ be_local_class(Rule_Matcher_Operator,
})),
(bstring*) &be_const_str_Rule_Matcher_Operator
);
+// compact class 'Rule_Matcher_Array' ktab size: 5, total: 7 (saved 16 bytes)
+static const bvalue be_ktab_class_Rule_Matcher_Array[5] = {
+ /* K0 */ be_nested_str(index),
+ /* K1 */ be_nested_str(_X3CMatcher_X20_X5B),
+ /* K2 */ be_nested_str(_X5D_X3E),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_const_int(1),
+};
+
extern const bclass be_class_Rule_Matcher_Array;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Rule_Matcher_Array;
be_local_closure(class_Rule_Matcher_Array_init, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Rule_Matcher_Array,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(index),
- }),
+ &be_ktab_class_Rule_Matcher_Array, /* shared constants */
&be_const_str_init,
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
@@ -937,29 +923,24 @@ be_local_closure(class_Rule_Matcher_Array_init, /* name */
/********************************************************************
** Solidified function: tostring
********************************************************************/
-extern const bclass be_class_Rule_Matcher_Array;
be_local_closure(class_Rule_Matcher_Array_tostring, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Rule_Matcher_Array,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(_X3CMatcher_X20_X5B),
- /* K1 */ be_nested_str(index),
- /* K2 */ be_nested_str(_X5D_X3E),
- }),
+ &be_ktab_class_Rule_Matcher_Array, /* shared constants */
&be_const_str_tostring,
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
0x60040008, // 0000 GETGBL R1 G8
- 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x88080100, // 0001 GETMBR R2 R0 K0
0x7C040200, // 0002 CALL R1 1
- 0x00060001, // 0003 ADD R1 K0 R1
+ 0x00060201, // 0003 ADD R1 K1 R1
0x00040302, // 0004 ADD R1 R1 K2
0x80040200, // 0005 RET 1 R1
})
@@ -971,22 +952,17 @@ be_local_closure(class_Rule_Matcher_Array_tostring, /* name */
/********************************************************************
** Solidified function: match
********************************************************************/
-extern const bclass be_class_Rule_Matcher_Array;
be_local_closure(class_Rule_Matcher_Array_match, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Rule_Matcher_Array,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(index),
- /* K1 */ be_const_int(0),
- /* K2 */ be_const_int(1),
- }),
+ &be_ktab_class_Rule_Matcher_Array, /* shared constants */
&be_const_str_match,
&be_const_str_solidified,
( &(const binstruction[28]) { /* code */
@@ -1002,7 +978,7 @@ be_local_closure(class_Rule_Matcher_Array_match, /* name */
0x740A0000, // 0009 JMPT R2 #000B
0x80040200, // 000A RET 1 R1
0x88080100, // 000B GETMBR R2 R0 K0
- 0x18080501, // 000C LE R2 R2 K1
+ 0x18080503, // 000C LE R2 R2 K3
0x780A0001, // 000D JMPF R2 #0010
0x4C080000, // 000E LDNIL R2
0x80040400, // 000F RET 1 R2
@@ -1015,7 +991,7 @@ be_local_closure(class_Rule_Matcher_Array_match, /* name */
0x4C080000, // 0016 LDNIL R2
0x80040400, // 0017 RET 1 R2
0x88080100, // 0018 GETMBR R2 R0 K0
- 0x04080502, // 0019 SUB R2 R2 K2
+ 0x04080504, // 0019 SUB R2 R2 K4
0x94080202, // 001A GETIDX R2 R1 R2
0x80040400, // 001B RET 1 R2
})
@@ -1039,26 +1015,34 @@ be_local_class(Rule_Matcher_Array,
})),
(bstring*) &be_const_str_Rule_Matcher_Array
);
+// compact class 'Rule_Matcher_AND_List' ktab size: 7, total: 9 (saved 16 bytes)
+static const bvalue be_ktab_class_Rule_Matcher_AND_List[7] = {
+ /* K0 */ be_nested_str(and_list),
+ /* K1 */ be_nested_str(_X3CMatcher_AND_List_X20),
+ /* K2 */ be_nested_str(_X3E),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_nested_str(match),
+ /* K5 */ be_nested_str(push),
+ /* K6 */ be_const_int(1),
+};
+
extern const bclass be_class_Rule_Matcher_AND_List;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Rule_Matcher_AND_List;
be_local_closure(class_Rule_Matcher_AND_List_init, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Rule_Matcher_AND_List,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(and_list),
- }),
+ &be_ktab_class_Rule_Matcher_AND_List, /* shared constants */
&be_const_str_init,
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
@@ -1073,29 +1057,24 @@ be_local_closure(class_Rule_Matcher_AND_List_init, /* name */
/********************************************************************
** Solidified function: tostring
********************************************************************/
-extern const bclass be_class_Rule_Matcher_AND_List;
be_local_closure(class_Rule_Matcher_AND_List_tostring, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Rule_Matcher_AND_List,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(_X3CMatcher_AND_List_X20),
- /* K1 */ be_nested_str(and_list),
- /* K2 */ be_nested_str(_X3E),
- }),
+ &be_ktab_class_Rule_Matcher_AND_List, /* shared constants */
&be_const_str_tostring,
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
0x60040008, // 0000 GETGBL R1 G8
- 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x88080100, // 0001 GETMBR R2 R0 K0
0x7C040200, // 0002 CALL R1 1
- 0x00060001, // 0003 ADD R1 K0 R1
+ 0x00060201, // 0003 ADD R1 K1 R1
0x00040302, // 0004 ADD R1 R1 K2
0x80040200, // 0005 RET 1 R1
})
@@ -1107,38 +1086,31 @@ be_local_closure(class_Rule_Matcher_AND_List_tostring, /* name */
/********************************************************************
** Solidified function: match
********************************************************************/
-extern const bclass be_class_Rule_Matcher_AND_List;
be_local_closure(class_Rule_Matcher_AND_List_match, /* name */
be_nested_proto(
9, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Rule_Matcher_AND_List,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str(and_list),
- /* K2 */ be_nested_str(match),
- /* K3 */ be_nested_str(push),
- /* K4 */ be_const_int(1),
- }),
+ &be_ktab_class_Rule_Matcher_AND_List, /* shared constants */
&be_const_str_match,
&be_const_str_solidified,
( &(const binstruction[24]) { /* code */
- 0x58080000, // 0000 LDCONST R2 K0
+ 0x58080003, // 0000 LDCONST R2 K3
0x600C0012, // 0001 GETGBL R3 G18
0x7C0C0000, // 0002 CALL R3 0
0x6010000C, // 0003 GETGBL R4 G12
- 0x88140101, // 0004 GETMBR R5 R0 K1
+ 0x88140100, // 0004 GETMBR R5 R0 K0
0x7C100200, // 0005 CALL R4 1
0x14100404, // 0006 LT R4 R2 R4
0x7812000E, // 0007 JMPF R4 #0017
- 0x88100101, // 0008 GETMBR R4 R0 K1
+ 0x88100100, // 0008 GETMBR R4 R0 K0
0x94100802, // 0009 GETIDX R4 R4 R2
- 0x8C140902, // 000A GETMET R5 R4 K2
+ 0x8C140904, // 000A GETMET R5 R4 K4
0x5C1C0200, // 000B MOVE R7 R1
0x7C140400, // 000C CALL R5 2
0x4C180000, // 000D LDNIL R6
@@ -1146,10 +1118,10 @@ be_local_closure(class_Rule_Matcher_AND_List_match, /* name */
0x781A0001, // 000F JMPF R6 #0012
0x4C180000, // 0010 LDNIL R6
0x80040C00, // 0011 RET 1 R6
- 0x8C180703, // 0012 GETMET R6 R3 K3
+ 0x8C180705, // 0012 GETMET R6 R3 K5
0x5C200A00, // 0013 MOVE R8 R5
0x7C180400, // 0014 CALL R6 2
- 0x00080504, // 0015 ADD R2 R2 K4
+ 0x00080506, // 0015 ADD R2 R2 K6
0x7001FFEB, // 0016 JMP #0003
0x80040600, // 0017 RET 1 R3
})
@@ -1173,26 +1145,57 @@ be_local_class(Rule_Matcher_AND_List,
})),
(bstring*) &be_const_str_Rule_Matcher_AND_List
);
+extern const bclass be_class_Rule_Matcher;
+// compact class 'Rule_Matcher' ktab size: 29, total: 34 (saved 40 bytes)
+static const bvalue be_ktab_class_Rule_Matcher[29] = {
+ /* K0 */ be_nested_str(matchers),
+ /* K1 */ be_nested_str(rule),
+ /* K2 */ be_nested_str(trigger),
+ /* K3 */ be_const_class(be_class_Rule_Matcher),
+ /* K4 */ be_nested_str(string),
+ /* K5 */ be_nested_str(parse),
+ /* K6 */ be_nested_str(push),
+ /* K7 */ be_nested_str(stop_iteration),
+ /* K8 */ be_nested_str(Rule_Matcher_AND_List),
+ /* K9 */ be_nested_str(tasmota),
+ /* K10 */ be_nested_str(find_op),
+ /* K11 */ be_const_int(0),
+ /* K12 */ be_const_int(1),
+ /* K13 */ be_const_int(2),
+ /* K14 */ be_nested_str(find),
+ /* K15 */ be_nested_str(_X23),
+ /* K16 */ be_nested_str(pattern_error),
+ /* K17 */ be_nested_str(empty_X20pattern_X20not_X20allowed),
+ /* K18 */ be_const_int(2147483647),
+ /* K19 */ be_nested_str(_X5B),
+ /* K20 */ be_nested_str(_X5D),
+ /* K21 */ be_nested_str(value_error),
+ /* K22 */ be_nested_str(missing_X20_X27_X5D_X27_X20in_X20rule_X20pattern),
+ /* K23 */ be_nested_str(_X3F),
+ /* K24 */ be_nested_str(Rule_Matcher_Wildcard),
+ /* K25 */ be_nested_str(Rule_Matcher_Key),
+ /* K26 */ be_nested_str(Rule_Matcher_Array),
+ /* K27 */ be_nested_str(Rule_Matcher_Operator),
+ /* K28 */ be_nested_str(match),
+};
+
extern const bclass be_class_Rule_Matcher;
/********************************************************************
** Solidified function: tostring
********************************************************************/
-extern const bclass be_class_Rule_Matcher;
be_local_closure(class_Rule_Matcher_tostring, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Rule_Matcher,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str(matchers),
- }),
+ &be_ktab_class_Rule_Matcher, /* shared constants */
&be_const_str_tostring,
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
@@ -1209,28 +1212,23 @@ be_local_closure(class_Rule_Matcher_tostring, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Rule_Matcher;
be_local_closure(class_Rule_Matcher_init, /* name */
be_nested_proto(
4, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Rule_Matcher,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(rule),
- /* K1 */ be_nested_str(trigger),
- /* K2 */ be_nested_str(matchers),
- }),
+ &be_ktab_class_Rule_Matcher, /* shared constants */
&be_const_str_init,
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
- 0x90020403, // 0002 SETMBR R0 K2 R3
+ 0x90020201, // 0000 SETMBR R0 K1 R1
+ 0x90020402, // 0001 SETMBR R0 K2 R2
+ 0x90020003, // 0002 SETMBR R0 K0 R3
0x80000000, // 0003 RET 0
})
)
@@ -1241,50 +1239,22 @@ be_local_closure(class_Rule_Matcher_init, /* name */
/********************************************************************
** Solidified function: parse
********************************************************************/
-extern const bclass be_class_Rule_Matcher;
be_local_closure(class_Rule_Matcher_parse, /* name */
be_nested_proto(
20, /* nstack */
1, /* argc */
- 4, /* varg */
+ 12, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Rule_Matcher,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[26]) { /* constants */
- /* K0 */ be_const_class(be_class_Rule_Matcher),
- /* K1 */ be_nested_str(string),
- /* K2 */ be_nested_str(parse),
- /* K3 */ be_nested_str(push),
- /* K4 */ be_nested_str(trigger),
- /* K5 */ be_nested_str(stop_iteration),
- /* K6 */ be_nested_str(Rule_Matcher_AND_List),
- /* K7 */ be_nested_str(tasmota),
- /* K8 */ be_nested_str(find_op),
- /* K9 */ be_const_int(0),
- /* K10 */ be_const_int(1),
- /* K11 */ be_const_int(2),
- /* K12 */ be_nested_str(find),
- /* K13 */ be_nested_str(_X23),
- /* K14 */ be_nested_str(pattern_error),
- /* K15 */ be_nested_str(empty_X20pattern_X20not_X20allowed),
- /* K16 */ be_const_int(2147483647),
- /* K17 */ be_nested_str(_X5B),
- /* K18 */ be_nested_str(_X5D),
- /* K19 */ be_nested_str(value_error),
- /* K20 */ be_nested_str(missing_X20_X27_X5D_X27_X20in_X20rule_X20pattern),
- /* K21 */ be_nested_str(_X3F),
- /* K22 */ be_nested_str(Rule_Matcher_Wildcard),
- /* K23 */ be_nested_str(Rule_Matcher_Key),
- /* K24 */ be_nested_str(Rule_Matcher_Array),
- /* K25 */ be_nested_str(Rule_Matcher_Operator),
- }),
+ &be_ktab_class_Rule_Matcher, /* shared constants */
&be_const_str_parse,
&be_const_str_solidified,
( &(const binstruction[147]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0xA40A0200, // 0001 IMPORT R2 K1
+ 0x58040003, // 0000 LDCONST R1 K3
+ 0xA40A0800, // 0001 IMPORT R2 K4
0x4C0C0000, // 0002 LDNIL R3
0x1C0C0003, // 0003 EQ R3 R0 R3
0x780E0001, // 0004 JMPF R3 #0007
@@ -1305,17 +1275,17 @@ be_local_closure(class_Rule_Matcher_parse, /* name */
0xA802000B, // 0013 EXBLK 0 #0020
0x5C180A00, // 0014 MOVE R6 R5
0x7C180000, // 0015 CALL R6 0
- 0x8C1C0302, // 0016 GETMET R7 R1 K2
+ 0x8C1C0305, // 0016 GETMET R7 R1 K5
0x5C240C00, // 0017 MOVE R9 R6
0x7C1C0400, // 0018 CALL R7 2
- 0x8C200703, // 0019 GETMET R8 R3 K3
+ 0x8C200706, // 0019 GETMET R8 R3 K6
0x5C280E00, // 001A MOVE R10 R7
0x7C200400, // 001B CALL R8 2
- 0x8C200903, // 001C GETMET R8 R4 K3
- 0x88280F04, // 001D GETMBR R10 R7 K4
+ 0x8C200906, // 001C GETMET R8 R4 K6
+ 0x88280F02, // 001D GETMBR R10 R7 K2
0x7C200400, // 001E CALL R8 2
0x7001FFF3, // 001F JMP #0014
- 0x58140005, // 0020 LDCONST R5 K5
+ 0x58140007, // 0020 LDCONST R5 K7
0xAC140200, // 0021 CATCH R5 1 0
0xB0080000, // 0022 RAISE 2 R0 R0
0x5C140200, // 0023 MOVE R5 R1
@@ -1323,7 +1293,7 @@ be_local_closure(class_Rule_Matcher_parse, /* name */
0x5C1C0800, // 0025 MOVE R7 R4
0x60200012, // 0026 GETGBL R8 G18
0x7C200000, // 0027 CALL R8 0
- 0x8C240306, // 0028 GETMET R9 R1 K6
+ 0x8C240308, // 0028 GETMET R9 R1 K8
0x5C2C0600, // 0029 MOVE R11 R3
0x7C240400, // 002A CALL R9 2
0x40241009, // 002B CONNECT R9 R8 R9
@@ -1331,83 +1301,83 @@ be_local_closure(class_Rule_Matcher_parse, /* name */
0x80040A00, // 002D RET 1 R5
0x600C0012, // 002E GETGBL R3 G18
0x7C0C0000, // 002F CALL R3 0
- 0xB8120E00, // 0030 GETNGBL R4 K7
- 0x8C100908, // 0031 GETMET R4 R4 K8
+ 0xB8121200, // 0030 GETNGBL R4 K9
+ 0x8C10090A, // 0031 GETMET R4 R4 K10
0x5C180000, // 0032 MOVE R6 R0
0x7C100400, // 0033 CALL R4 2
- 0x94140909, // 0034 GETIDX R5 R4 K9
- 0x9418090A, // 0035 GETIDX R6 R4 K10
- 0x941C090B, // 0036 GETIDX R7 R4 K11
+ 0x9414090B, // 0034 GETIDX R5 R4 K11
+ 0x9418090C, // 0035 GETIDX R6 R4 K12
+ 0x941C090D, // 0036 GETIDX R7 R4 K13
0x6020000C, // 0037 GETGBL R8 G12
0x5C240A00, // 0038 MOVE R9 R5
0x7C200200, // 0039 CALL R8 1
- 0x58240009, // 003A LDCONST R9 K9
+ 0x5824000B, // 003A LDCONST R9 K11
0x5429FFFE, // 003B LDINT R10 -1
0x142C1208, // 003C LT R11 R9 R8
0x782E0042, // 003D JMPF R11 #0081
- 0x8C2C050C, // 003E GETMET R11 R2 K12
+ 0x8C2C050E, // 003E GETMET R11 R2 K14
0x5C340A00, // 003F MOVE R13 R5
- 0x5838000D, // 0040 LDCONST R14 K13
+ 0x5838000F, // 0040 LDCONST R14 K15
0x5C3C1200, // 0041 MOVE R15 R9
0x7C2C0800, // 0042 CALL R11 4
0x4C300000, // 0043 LDNIL R12
- 0x28341709, // 0044 GE R13 R11 K9
+ 0x2834170B, // 0044 GE R13 R11 K11
0x78360008, // 0045 JMPF R13 #004F
0x1C341609, // 0046 EQ R13 R11 R9
0x78360000, // 0047 JMPF R13 #0049
- 0xB0061D0F, // 0048 RAISE 1 K14 K15
- 0x0434170A, // 0049 SUB R13 R11 K10
+ 0xB0062111, // 0048 RAISE 1 K16 K17
+ 0x0434170C, // 0049 SUB R13 R11 K12
0x4034120D, // 004A CONNECT R13 R9 R13
0x94300A0D, // 004B GETIDX R12 R5 R13
- 0x0034170A, // 004C ADD R13 R11 K10
+ 0x0034170C, // 004C ADD R13 R11 K12
0x5C241A00, // 004D MOVE R9 R13
0x70020002, // 004E JMP #0052
- 0x40341310, // 004F CONNECT R13 R9 K16
+ 0x40341312, // 004F CONNECT R13 R9 K18
0x94300A0D, // 0050 GETIDX R12 R5 R13
0x5C241000, // 0051 MOVE R9 R8
- 0x8C34050C, // 0052 GETMET R13 R2 K12
+ 0x8C34050E, // 0052 GETMET R13 R2 K14
0x5C3C1800, // 0053 MOVE R15 R12
- 0x58400011, // 0054 LDCONST R16 K17
+ 0x58400013, // 0054 LDCONST R16 K19
0x7C340600, // 0055 CALL R13 3
0x4C380000, // 0056 LDNIL R14
- 0x283C1B09, // 0057 GE R15 R13 K9
+ 0x283C1B0B, // 0057 GE R15 R13 K11
0x783E0012, // 0058 JMPF R15 #006C
- 0x8C3C050C, // 0059 GETMET R15 R2 K12
+ 0x8C3C050E, // 0059 GETMET R15 R2 K14
0x5C441800, // 005A MOVE R17 R12
- 0x58480012, // 005B LDCONST R18 K18
+ 0x58480014, // 005B LDCONST R18 K20
0x5C4C1A00, // 005C MOVE R19 R13
0x7C3C0800, // 005D CALL R15 4
- 0x14401F09, // 005E LT R16 R15 K9
+ 0x14401F0B, // 005E LT R16 R15 K11
0x78420000, // 005F JMPF R16 #0061
- 0xB0062714, // 0060 RAISE 1 K19 K20
- 0x00401B0A, // 0061 ADD R16 R13 K10
- 0x04441F0A, // 0062 SUB R17 R15 K10
+ 0xB0062B16, // 0060 RAISE 1 K21 K22
+ 0x00401B0C, // 0061 ADD R16 R13 K12
+ 0x04441F0C, // 0062 SUB R17 R15 K12
0x40402011, // 0063 CONNECT R16 R16 R17
0x94401810, // 0064 GETIDX R16 R12 R16
- 0x04441B0A, // 0065 SUB R17 R13 K10
- 0x40461211, // 0066 CONNECT R17 K9 R17
+ 0x04441B0C, // 0065 SUB R17 R13 K12
+ 0x40461611, // 0066 CONNECT R17 K11 R17
0x94301811, // 0067 GETIDX R12 R12 R17
0x60440009, // 0068 GETGBL R17 G9
0x5C482000, // 0069 MOVE R18 R16
0x7C440200, // 006A CALL R17 1
0x5C382200, // 006B MOVE R14 R17
- 0x1C3C1915, // 006C EQ R15 R12 K21
+ 0x1C3C1917, // 006C EQ R15 R12 K23
0x783E0004, // 006D JMPF R15 #0073
- 0x8C3C0703, // 006E GETMET R15 R3 K3
- 0x8C440316, // 006F GETMET R17 R1 K22
+ 0x8C3C0706, // 006E GETMET R15 R3 K6
+ 0x8C440318, // 006F GETMET R17 R1 K24
0x7C440200, // 0070 CALL R17 1
0x7C3C0400, // 0071 CALL R15 2
0x70020004, // 0072 JMP #0078
- 0x8C3C0703, // 0073 GETMET R15 R3 K3
- 0x8C440317, // 0074 GETMET R17 R1 K23
+ 0x8C3C0706, // 0073 GETMET R15 R3 K6
+ 0x8C440319, // 0074 GETMET R17 R1 K25
0x5C4C1800, // 0075 MOVE R19 R12
0x7C440400, // 0076 CALL R17 2
0x7C3C0400, // 0077 CALL R15 2
0x4C3C0000, // 0078 LDNIL R15
0x203C1C0F, // 0079 NE R15 R14 R15
0x783E0004, // 007A JMPF R15 #0080
- 0x8C3C0703, // 007B GETMET R15 R3 K3
- 0x8C440318, // 007C GETMET R17 R1 K24
+ 0x8C3C0706, // 007B GETMET R15 R3 K6
+ 0x8C44031A, // 007C GETMET R17 R1 K26
0x5C4C1C00, // 007D MOVE R19 R14
0x7C440400, // 007E CALL R17 2
0x7C3C0400, // 007F CALL R15 2
@@ -1418,8 +1388,8 @@ be_local_closure(class_Rule_Matcher_parse, /* name */
0x4C2C0000, // 0084 LDNIL R11
0x202C0E0B, // 0085 NE R11 R7 R11
0x782E0005, // 0086 JMPF R11 #008D
- 0x8C2C0703, // 0087 GETMET R11 R3 K3
- 0x8C340319, // 0088 GETMET R13 R1 K25
+ 0x8C2C0706, // 0087 GETMET R11 R3 K6
+ 0x8C34031B, // 0088 GETMET R13 R1 K27
0x5C3C0C00, // 0089 MOVE R15 R6
0x5C400E00, // 008A MOVE R16 R7
0x7C340600, // 008B CALL R13 3
@@ -1439,23 +1409,17 @@ be_local_closure(class_Rule_Matcher_parse, /* name */
/********************************************************************
** Solidified function: match
********************************************************************/
-extern const bclass be_class_Rule_Matcher;
be_local_closure(class_Rule_Matcher_match, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Rule_Matcher,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str(matchers),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(match),
- /* K3 */ be_const_int(1),
- }),
+ &be_ktab_class_Rule_Matcher, /* shared constants */
&be_const_str_match,
&be_const_str_solidified,
( &(const binstruction[27]) { /* code */
@@ -1466,7 +1430,7 @@ be_local_closure(class_Rule_Matcher_match, /* name */
0x4C080000, // 0004 LDNIL R2
0x80040400, // 0005 RET 1 R2
0x5C080200, // 0006 MOVE R2 R1
- 0x580C0001, // 0007 LDCONST R3 K1
+ 0x580C000B, // 0007 LDCONST R3 K11
0x6010000C, // 0008 GETGBL R4 G12
0x88140100, // 0009 GETMBR R5 R0 K0
0x7C100200, // 000A CALL R4 1
@@ -1474,7 +1438,7 @@ be_local_closure(class_Rule_Matcher_match, /* name */
0x7812000C, // 000C JMPF R4 #001A
0x88100100, // 000D GETMBR R4 R0 K0
0x94100803, // 000E GETIDX R4 R4 R3
- 0x8C100902, // 000F GETMET R4 R4 K2
+ 0x8C10091C, // 000F GETMET R4 R4 K28
0x5C180400, // 0010 MOVE R6 R2
0x7C100400, // 0011 CALL R4 2
0x5C080800, // 0012 MOVE R2 R4
@@ -1483,7 +1447,7 @@ be_local_closure(class_Rule_Matcher_match, /* name */
0x78120001, // 0015 JMPF R4 #0018
0x4C100000, // 0016 LDNIL R4
0x80040800, // 0017 RET 1 R4
- 0x000C0703, // 0018 ADD R3 R3 K3
+ 0x000C070C, // 0018 ADD R3 R3 K12
0x7001FFED, // 0019 JMP #0008
0x80040400, // 001A RET 1 R2
})
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_tapp.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_tapp.h
index 3420576b9..56da5bbc5 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_tapp.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_tapp.h
@@ -3,27 +3,42 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Tapp' ktab size: 15, total: 16 (saved 8 bytes)
+static const bvalue be_ktab_class_Tapp[15] = {
+ /* K0 */ be_nested_str(tasmota),
+ /* K1 */ be_nested_str(add_driver),
+ /* K2 */ be_nested_str(path),
+ /* K3 */ be_nested_str(string),
+ /* K4 */ be_nested_str(listdir),
+ /* K5 */ be_nested_str(_X2F),
+ /* K6 */ be_nested_str(find),
+ /* K7 */ be_nested_str(_X2Etapp),
+ /* K8 */ be_const_int(0),
+ /* K9 */ be_nested_str(log),
+ /* K10 */ be_nested_str(TAP_X3A_X20Loaded_X20Tasmota_X20App_X20_X27_X25s_X27),
+ /* K11 */ be_const_int(2),
+ /* K12 */ be_nested_str(load),
+ /* K13 */ be_nested_str(_X23autoexec_X2Ebe),
+ /* K14 */ be_nested_str(stop_iteration),
+};
+
extern const bclass be_class_Tapp;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Tapp;
be_local_closure(class_Tapp_init, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tapp,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(tasmota),
- /* K1 */ be_nested_str(add_driver),
- }),
+ &be_ktab_class_Tapp, /* shared constants */
&be_const_str_init,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
@@ -41,40 +56,24 @@ be_local_closure(class_Tapp_init, /* name */
/********************************************************************
** Solidified function: autoexec
********************************************************************/
-extern const bclass be_class_Tapp;
be_local_closure(class_Tapp_autoexec, /* name */
be_nested_proto(
11, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tapp,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str(path),
- /* K1 */ be_nested_str(string),
- /* K2 */ be_nested_str(listdir),
- /* K3 */ be_nested_str(_X2F),
- /* K4 */ be_nested_str(find),
- /* K5 */ be_nested_str(_X2Etapp),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str(tasmota),
- /* K8 */ be_nested_str(log),
- /* K9 */ be_nested_str(TAP_X3A_X20Loaded_X20Tasmota_X20App_X20_X27_X25s_X27),
- /* K10 */ be_const_int(2),
- /* K11 */ be_nested_str(load),
- /* K12 */ be_nested_str(_X23autoexec_X2Ebe),
- /* K13 */ be_nested_str(stop_iteration),
- }),
+ &be_ktab_class_Tapp, /* shared constants */
&be_const_str_autoexec,
&be_const_str_solidified,
( &(const binstruction[34]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xA40A0200, // 0001 IMPORT R2 K1
- 0x8C0C0302, // 0002 GETMET R3 R1 K2
- 0x58140003, // 0003 LDCONST R5 K3
+ 0xA4060400, // 0000 IMPORT R1 K2
+ 0xA40A0600, // 0001 IMPORT R2 K3
+ 0x8C0C0304, // 0002 GETMET R3 R1 K4
+ 0x58140005, // 0003 LDCONST R5 K5
0x7C0C0400, // 0004 CALL R3 2
0x60100010, // 0005 GETGBL R4 G16
0x5C140600, // 0006 MOVE R5 R3
@@ -82,26 +81,26 @@ be_local_closure(class_Tapp_autoexec, /* name */
0xA8020014, // 0008 EXBLK 0 #001E
0x5C140800, // 0009 MOVE R5 R4
0x7C140000, // 000A CALL R5 0
- 0x8C180504, // 000B GETMET R6 R2 K4
+ 0x8C180506, // 000B GETMET R6 R2 K6
0x5C200A00, // 000C MOVE R8 R5
- 0x58240005, // 000D LDCONST R9 K5
+ 0x58240007, // 000D LDCONST R9 K7
0x7C180600, // 000E CALL R6 3
- 0x24180D06, // 000F GT R6 R6 K6
+ 0x24180D08, // 000F GT R6 R6 K8
0x781A000B, // 0010 JMPF R6 #001D
- 0xB81A0E00, // 0011 GETNGBL R6 K7
- 0x8C180D08, // 0012 GETMET R6 R6 K8
+ 0xB81A0000, // 0011 GETNGBL R6 K0
+ 0x8C180D09, // 0012 GETMET R6 R6 K9
0x60200018, // 0013 GETGBL R8 G24
- 0x58240009, // 0014 LDCONST R9 K9
+ 0x5824000A, // 0014 LDCONST R9 K10
0x5C280A00, // 0015 MOVE R10 R5
0x7C200400, // 0016 CALL R8 2
- 0x5824000A, // 0017 LDCONST R9 K10
+ 0x5824000B, // 0017 LDCONST R9 K11
0x7C180600, // 0018 CALL R6 3
- 0xB81A0E00, // 0019 GETNGBL R6 K7
- 0x8C180D0B, // 001A GETMET R6 R6 K11
- 0x00200B0C, // 001B ADD R8 R5 K12
+ 0xB81A0000, // 0019 GETNGBL R6 K0
+ 0x8C180D0C, // 001A GETMET R6 R6 K12
+ 0x00200B0D, // 001B ADD R8 R5 K13
0x7C180400, // 001C CALL R6 2
0x7001FFEA, // 001D JMP #0009
- 0x5810000D, // 001E LDCONST R4 K13
+ 0x5810000E, // 001E LDCONST R4 K14
0xAC100200, // 001F CATCH R4 1 0
0xB0080000, // 0020 RAISE 2 R0 R0
0x80000000, // 0021 RET 0
@@ -136,7 +135,7 @@ be_local_closure(_anonymous_, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_const_class(be_class_Tapp),
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h
index ca4ace0ee..d81bff087 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_tasmota_class.h
@@ -3,32 +3,178 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Tasmota' ktab size: 151, total: 285 (saved 1072 bytes)
+static const bvalue be_ktab_class_Tasmota[151] = {
+ /* K0 */ be_nested_str(cmd_res),
+ /* K1 */ be_nested_str(tasmota),
+ /* K2 */ be_nested_str(global),
+ /* K3 */ be_nested_str(maxlog_level),
+ /* K4 */ be_const_int(2),
+ /* K5 */ be_const_int(1),
+ /* K6 */ be_nested_str(_cmd),
+ /* K7 */ be_nested_str(introspect),
+ /* K8 */ be_nested_str(function),
+ /* K9 */ be_nested_str(type_error),
+ /* K10 */ be_nested_str(BRY_X3A_X20argument_X20must_X20be_X20a_X20function),
+ /* K11 */ be_nested_str(ismethod),
+ /* K12 */ be_nested_str(BRY_X3A_X20method_X20not_X20allowed_X2C_X20use_X20a_X20closure_X20like_X20_X27_X2F_X20args_X20_X2D_X3E_X20obj_X2Efunc_X28args_X29_X27),
+ /* K13 */ be_nested_str(_drivers),
+ /* K14 */ be_nested_str(find),
+ /* K15 */ be_nested_str(pop),
+ /* K16 */ be_nested_str(every_50ms),
+ /* K17 */ be_nested_str(run_deferred),
+ /* K18 */ be_nested_str(every_250ms),
+ /* K19 */ be_nested_str(run_cron),
+ /* K20 */ be_nested_str(mqtt_data),
+ /* K21 */ be_nested_str(cmd),
+ /* K22 */ be_nested_str(exec_cmd),
+ /* K23 */ be_nested_str(tele),
+ /* K24 */ be_nested_str(exec_tele),
+ /* K25 */ be_nested_str(rule),
+ /* K26 */ be_nested_str(exec_rules),
+ /* K27 */ be_nested_str(gc),
+ /* K28 */ be_const_int(0),
+ /* K29 */ be_nested_str(get),
+ /* K30 */ be_nested_str(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s),
+ /* K31 */ be_nested_str(_debug_present),
+ /* K32 */ be_nested_str(debug),
+ /* K33 */ be_nested_str(traceback),
+ /* K34 */ be_nested_str(save_before_restart),
+ /* K35 */ be_nested_str(persist),
+ /* K36 */ be_nested_str(save),
+ /* K37 */ be_nested_str(_ccmd),
+ /* K38 */ be_nested_str(json),
+ /* K39 */ be_nested_str(load),
+ /* K40 */ be_nested_str(find_key_i),
+ /* K41 */ be_nested_str(resolvecmnd),
+ /* K42 */ be_nested_str(tasmota_X2Eset_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eset_X28_X29),
+ /* K43 */ be_nested_str(light),
+ /* K44 */ be_nested_str(set),
+ /* K45 */ be_nested_str(_crons),
+ /* K46 */ be_nested_str(ccronexpr),
+ /* K47 */ be_nested_str(now),
+ /* K48 */ be_nested_str(size),
+ /* K49 */ be_nested_str(trig),
+ /* K50 */ be_nested_str(next),
+ /* K51 */ be_nested_str(time_reached),
+ /* K52 */ be_nested_str(f),
+ /* K53 */ be_nested_str(check_not_method),
+ /* K54 */ be_nested_str(_timers),
+ /* K55 */ be_nested_str(push),
+ /* K56 */ be_nested_str(Trigger),
+ /* K57 */ be_nested_str(millis),
+ /* K58 */ be_nested_str(instance),
+ /* K59 */ be_nested_str(value_error),
+ /* K60 */ be_nested_str(instance_X20required),
+ /* K61 */ be_nested_str(id),
+ /* K62 */ be_nested_str(ctypes_bytes_dyn),
+ /* K63 */ be_nested_str(_global_addr),
+ /* K64 */ be_nested_str(_global_def),
+ /* K65 */ be_nested_str(_settings_ptr),
+ /* K66 */ be_nested_str(settings),
+ /* K67 */ be_nested_str(toptr),
+ /* K68 */ be_nested_str(_settings_def),
+ /* K69 */ be_nested_str(wd),
+ /* K70 */ be_nested_str(),
+ /* K71 */ be_nested_str(contains),
+ /* K72 */ be_nested_str(add_cmd),
+ /* K73 */ be_nested_str(UrlFetch),
+ /* K74 */ be_nested_str(_rules),
+ /* K75 */ be_nested_str(Rule_Matcher),
+ /* K76 */ be_nested_str(parse),
+ /* K77 */ be_nested_str(the_X20second_X20argument_X20is_X20not_X20a_X20function),
+ /* K78 */ be_nested_str(match),
+ /* K79 */ be_nested_str(trigger),
+ /* K80 */ be_nested_str(_find_op),
+ /* K81 */ be_const_int(2147483647),
+ /* K82 */ be_nested_str(remove),
+ /* K83 */ be_nested_str(collect),
+ /* K84 */ be_nested_str(allocated),
+ /* K85 */ be_nested_str(string),
+ /* K86 */ be_nested_str(toupper),
+ /* K87 */ be_nested_str(_fl),
+ /* K88 */ be_nested_str(log),
+ /* K89 */ be_nested_str(BRY_X3A_X20ERROR_X2C_X20bad_X20json_X3A_X20),
+ /* K90 */ be_const_int(3),
+ /* K91 */ be_nested_str(try_rule),
+ /* K92 */ be_nested_str(endswith),
+ /* K93 */ be_nested_str(_X2Ebe),
+ /* K94 */ be_nested_str(BRY_X3A_X20file_X20_X27_X25s_X27_X20does_X20not_X20have_X20_X27_X2Ebe_X27_X20extension),
+ /* K95 */ be_nested_str(_X23),
+ /* K96 */ be_nested_str(BRY_X3A_X20cannot_X20compile_X20file_X20in_X20read_X2Donly_X20archive),
+ /* K97 */ be_nested_str(file),
+ /* K98 */ be_nested_str(BRY_X3A_X20empty_X20compiled_X20file),
+ /* K99 */ be_nested_str(BRY_X3A_X20failed_X20to_X20load_X20_X27_X25s_X27_X20_X28_X25s_X20_X2D_X20_X25s_X29),
+ /* K100 */ be_nested_str(c),
+ /* K101 */ be_nested_str(BRY_X3A_X20could_X20not_X20save_X20compiled_X20file_X20_X25s_X20_X28_X25s_X29),
+ /* K102 */ be_nested_str(Tele),
+ /* K103 */ be_nested_str(i2c_enabled),
+ /* K104 */ be_nested_str(wire1),
+ /* K105 */ be_nested_str(enabled),
+ /* K106 */ be_nested_str(detect),
+ /* K107 */ be_nested_str(wire2),
+ /* K108 */ be_nested_str(keys),
+ /* K109 */ be_nested_str(_X3F),
+ /* K110 */ be_nested_str(stop_iteration),
+ /* K111 */ be_nested_str(split),
+ /* K112 */ be_nested_str(_X2F),
+ /* K113 */ be_nested_str(index_X2Ehtml),
+ /* K114 */ be_nested_str(webclient),
+ /* K115 */ be_nested_str(set_follow_redirects),
+ /* K116 */ be_nested_str(begin),
+ /* K117 */ be_nested_str(GET),
+ /* K118 */ be_nested_str(status_X3A_X20),
+ /* K119 */ be_nested_str(connection_error),
+ /* K120 */ be_nested_str(write_file),
+ /* K121 */ be_nested_str(close),
+ /* K122 */ be_nested_str(BRY_X3A_X20Fetched_X20),
+ /* K123 */ be_nested_str(cb),
+ /* K124 */ be_nested_str(gen_cb),
+ /* K125 */ be_nested_str(time_dump),
+ /* K126 */ be_nested_str(_X2504d_X2D_X2502d_X2D_X2502dT_X2502d_X3A_X2502d_X3A_X2502d),
+ /* K127 */ be_nested_str(year),
+ /* K128 */ be_nested_str(month),
+ /* K129 */ be_nested_str(day),
+ /* K130 */ be_nested_str(hour),
+ /* K131 */ be_nested_str(min),
+ /* K132 */ be_nested_str(sec),
+ /* K133 */ be_nested_str(argument_X20must_X20be_X20a_X20function),
+ /* K134 */ be_nested_str(fast_loop_enabled),
+ /* K135 */ be_nested_str(tasmota_X2Eget_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eget_X28_X29),
+ /* K136 */ be_nested_str(scale_uint),
+ /* K137 */ be_nested_str(path),
+ /* K138 */ be_nested_str(startswith),
+ /* K139 */ be_nested_str(_X2E),
+ /* K140 */ be_nested_str(_X2Ebec),
+ /* K141 */ be_nested_str(BRY_X3A_X20file_X20extension_X20is_X20not_X20_X27_X2Ebe_X27_X20nor_X20_X27_X2Ebec_X27),
+ /* K142 */ be_nested_str(exists),
+ /* K143 */ be_nested_str(BRY_X3A_X20corrupt_X20bytecode_X20_X27_X25s_X27),
+ /* K144 */ be_nested_str(BRY_X3A_X20bytecode_X20has_X20wrong_X20version_X20_X27_X25s_X27_X20_X28_X25s_X29),
+ /* K145 */ be_nested_str(http),
+ /* K146 */ be_nested_str(resp_cmnd_str),
+ /* K147 */ be_nested_str(URL_X20must_X20start_X20with_X20_X27http_X28s_X29_X27),
+ /* K148 */ be_nested_str(urlfetch),
+ /* K149 */ be_nested_str(resp_cmnd_failed),
+ /* K150 */ be_nested_str(resp_cmnd_done),
+};
+
extern const bclass be_class_Tasmota;
/********************************************************************
** Solidified function: cmd
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_cmd, /* name */
be_nested_proto(
8, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str(cmd_res),
- /* K1 */ be_nested_str(tasmota),
- /* K2 */ be_nested_str(global),
- /* K3 */ be_nested_str(maxlog_level),
- /* K4 */ be_const_int(2),
- /* K5 */ be_const_int(1),
- /* K6 */ be_nested_str(_cmd),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_cmd,
&be_const_str_solidified,
( &(const binstruction[27]) { /* code */
@@ -68,42 +214,34 @@ be_local_closure(class_Tasmota_cmd, /* name */
/********************************************************************
** Solidified function: check_not_method
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_check_not_method, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str(introspect),
- /* K1 */ be_nested_str(function),
- /* K2 */ be_nested_str(type_error),
- /* K3 */ be_nested_str(BRY_X3A_X20argument_X20must_X20be_X20a_X20function),
- /* K4 */ be_nested_str(ismethod),
- /* K5 */ be_nested_str(BRY_X3A_X20method_X20not_X20allowed_X2C_X20use_X20a_X20closure_X20like_X20_X27_X2F_X20args_X20_X2D_X3E_X20obj_X2Efunc_X28args_X29_X27),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_check_not_method,
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
+ 0xA40A0E00, // 0000 IMPORT R2 K7
0x600C0004, // 0001 GETGBL R3 G4
0x5C100200, // 0002 MOVE R4 R1
0x7C0C0200, // 0003 CALL R3 1
- 0x200C0701, // 0004 NE R3 R3 K1
+ 0x200C0708, // 0004 NE R3 R3 K8
0x780E0000, // 0005 JMPF R3 #0007
- 0xB0060503, // 0006 RAISE 1 K2 K3
- 0x8C0C0504, // 0007 GETMET R3 R2 K4
+ 0xB006130A, // 0006 RAISE 1 K9 K10
+ 0x8C0C050B, // 0007 GETMET R3 R2 K11
0x5C140200, // 0008 MOVE R5 R1
0x7C0C0400, // 0009 CALL R3 2
0x50100200, // 000A LDBOOL R4 1 0
0x1C0C0604, // 000B EQ R3 R3 R4
0x780E0000, // 000C JMPF R3 #000E
- 0xB0060505, // 000D RAISE 1 K2 K5
+ 0xB006130C, // 000D RAISE 1 K9 K12
0x80000000, // 000E RET 0
})
)
@@ -114,36 +252,31 @@ be_local_closure(class_Tasmota_check_not_method, /* name */
/********************************************************************
** Solidified function: remove_driver
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_remove_driver, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(_drivers),
- /* K1 */ be_nested_str(find),
- /* K2 */ be_nested_str(pop),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_remove_driver,
&be_const_str_solidified,
( &(const binstruction[14]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8808010D, // 0000 GETMBR R2 R0 K13
0x780A000A, // 0001 JMPF R2 #000D
- 0x88080100, // 0002 GETMBR R2 R0 K0
- 0x8C080501, // 0003 GETMET R2 R2 K1
+ 0x8808010D, // 0002 GETMBR R2 R0 K13
+ 0x8C08050E, // 0003 GETMET R2 R2 K14
0x5C100200, // 0004 MOVE R4 R1
0x7C080400, // 0005 CALL R2 2
0x4C0C0000, // 0006 LDNIL R3
0x200C0403, // 0007 NE R3 R2 R3
0x780E0003, // 0008 JMPF R3 #000D
- 0x880C0100, // 0009 GETMBR R3 R0 K0
- 0x8C0C0702, // 000A GETMET R3 R3 K2
+ 0x880C010D, // 0009 GETMBR R3 R0 K13
+ 0x8C0C070F, // 000A GETMET R3 R3 K15
0x5C140400, // 000B MOVE R5 R2
0x7C0C0400, // 000C CALL R3 2
0x80000000, // 000D RET 0
@@ -156,80 +289,53 @@ be_local_closure(class_Tasmota_remove_driver, /* name */
/********************************************************************
** Solidified function: event
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_event, /* name */
be_nested_proto(
19, /* nstack */
6, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[25]) { /* constants */
- /* K0 */ be_nested_str(introspect),
- /* K1 */ be_nested_str(every_50ms),
- /* K2 */ be_nested_str(run_deferred),
- /* K3 */ be_nested_str(every_250ms),
- /* K4 */ be_nested_str(run_cron),
- /* K5 */ be_nested_str(mqtt_data),
- /* K6 */ be_nested_str(cmd),
- /* K7 */ be_nested_str(exec_cmd),
- /* K8 */ be_nested_str(tele),
- /* K9 */ be_nested_str(exec_tele),
- /* K10 */ be_nested_str(rule),
- /* K11 */ be_nested_str(exec_rules),
- /* K12 */ be_nested_str(gc),
- /* K13 */ be_nested_str(_drivers),
- /* K14 */ be_const_int(0),
- /* K15 */ be_nested_str(get),
- /* K16 */ be_nested_str(function),
- /* K17 */ be_nested_str(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s),
- /* K18 */ be_nested_str(_debug_present),
- /* K19 */ be_nested_str(debug),
- /* K20 */ be_nested_str(traceback),
- /* K21 */ be_const_int(1),
- /* K22 */ be_nested_str(save_before_restart),
- /* K23 */ be_nested_str(persist),
- /* K24 */ be_nested_str(save),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_event,
&be_const_str_solidified,
( &(const binstruction[108]) { /* code */
- 0xA41A0000, // 0000 IMPORT R6 K0
- 0x1C1C0301, // 0001 EQ R7 R1 K1
+ 0xA41A0E00, // 0000 IMPORT R6 K7
+ 0x1C1C0310, // 0001 EQ R7 R1 K16
0x781E0001, // 0002 JMPF R7 #0005
- 0x8C1C0102, // 0003 GETMET R7 R0 K2
+ 0x8C1C0111, // 0003 GETMET R7 R0 K17
0x7C1C0200, // 0004 CALL R7 1
- 0x1C1C0303, // 0005 EQ R7 R1 K3
+ 0x1C1C0312, // 0005 EQ R7 R1 K18
0x781E0001, // 0006 JMPF R7 #0009
- 0x8C1C0104, // 0007 GETMET R7 R0 K4
+ 0x8C1C0113, // 0007 GETMET R7 R0 K19
0x7C1C0200, // 0008 CALL R7 1
0x501C0000, // 0009 LDBOOL R7 0 0
0x50200000, // 000A LDBOOL R8 0 0
- 0x1C240305, // 000B EQ R9 R1 K5
+ 0x1C240314, // 000B EQ R9 R1 K20
0x78260000, // 000C JMPF R9 #000E
0x50200200, // 000D LDBOOL R8 1 0
- 0x1C240306, // 000E EQ R9 R1 K6
+ 0x1C240315, // 000E EQ R9 R1 K21
0x78260006, // 000F JMPF R9 #0017
- 0x8C240107, // 0010 GETMET R9 R0 K7
+ 0x8C240116, // 0010 GETMET R9 R0 K22
0x5C2C0400, // 0011 MOVE R11 R2
0x5C300600, // 0012 MOVE R12 R3
0x5C340800, // 0013 MOVE R13 R4
0x7C240800, // 0014 CALL R9 4
0x80041200, // 0015 RET 1 R9
0x7002004E, // 0016 JMP #0066
- 0x1C240308, // 0017 EQ R9 R1 K8
+ 0x1C240317, // 0017 EQ R9 R1 K23
0x78260004, // 0018 JMPF R9 #001E
- 0x8C240109, // 0019 GETMET R9 R0 K9
+ 0x8C240118, // 0019 GETMET R9 R0 K24
0x5C2C0800, // 001A MOVE R11 R4
0x7C240400, // 001B CALL R9 2
0x80041200, // 001C RET 1 R9
0x70020047, // 001D JMP #0066
- 0x1C24030A, // 001E EQ R9 R1 K10
+ 0x1C240319, // 001E EQ R9 R1 K25
0x78260007, // 001F JMPF R9 #0028
- 0x8C24010B, // 0020 GETMET R9 R0 K11
+ 0x8C24011A, // 0020 GETMET R9 R0 K26
0x5C2C0800, // 0021 MOVE R11 R4
0x60300017, // 0022 GETGBL R12 G23
0x5C340600, // 0023 MOVE R13 R3
@@ -237,15 +343,15 @@ be_local_closure(class_Tasmota_event, /* name */
0x7C240600, // 0025 CALL R9 3
0x80041200, // 0026 RET 1 R9
0x7002003D, // 0027 JMP #0066
- 0x1C24030C, // 0028 EQ R9 R1 K12
+ 0x1C24031B, // 0028 EQ R9 R1 K27
0x78260003, // 0029 JMPF R9 #002E
- 0x8C24010C, // 002A GETMET R9 R0 K12
+ 0x8C24011B, // 002A GETMET R9 R0 K27
0x7C240200, // 002B CALL R9 1
0x80041200, // 002C RET 1 R9
0x70020037, // 002D JMP #0066
0x8824010D, // 002E GETMBR R9 R0 K13
0x78260035, // 002F JMPF R9 #0066
- 0x5824000E, // 0030 LDCONST R9 K14
+ 0x5824001C, // 0030 LDCONST R9 K28
0x6028000C, // 0031 GETGBL R10 G12
0x882C010D, // 0032 GETMBR R11 R0 K13
0x7C280200, // 0033 CALL R10 1
@@ -253,14 +359,14 @@ be_local_closure(class_Tasmota_event, /* name */
0x782A002F, // 0035 JMPF R10 #0066
0x8828010D, // 0036 GETMBR R10 R0 K13
0x94281409, // 0037 GETIDX R10 R10 R9
- 0x8C2C0D0F, // 0038 GETMET R11 R6 K15
+ 0x8C2C0D1D, // 0038 GETMET R11 R6 K29
0x5C341400, // 0039 MOVE R13 R10
0x5C380200, // 003A MOVE R14 R1
0x7C2C0600, // 003B CALL R11 3
0x60300004, // 003C GETGBL R12 G4
0x5C341600, // 003D MOVE R13 R11
0x7C300200, // 003E CALL R12 1
- 0x1C301910, // 003F EQ R12 R12 K16
+ 0x1C301908, // 003F EQ R12 R12 K8
0x78320022, // 0040 JMPF R12 #0064
0xA8020011, // 0041 EXBLK 0 #0054
0x5C301600, // 0042 MOVE R12 R11
@@ -285,24 +391,24 @@ be_local_closure(class_Tasmota_event, /* name */
0x7002000C, // 0055 JMP #0063
0x60380001, // 0056 GETGBL R14 G1
0x603C0018, // 0057 GETGBL R15 G24
- 0x58400011, // 0058 LDCONST R16 K17
+ 0x5840001E, // 0058 LDCONST R16 K30
0x5C441800, // 0059 MOVE R17 R12
0x5C481A00, // 005A MOVE R18 R13
0x7C3C0600, // 005B CALL R15 3
0x7C380200, // 005C CALL R14 1
- 0x88380112, // 005D GETMBR R14 R0 K18
+ 0x8838011F, // 005D GETMBR R14 R0 K31
0x783A0002, // 005E JMPF R14 #0062
- 0xA43A2600, // 005F IMPORT R14 K19
- 0x8C3C1D14, // 0060 GETMET R15 R14 K20
+ 0xA43A4000, // 005F IMPORT R14 K32
+ 0x8C3C1D21, // 0060 GETMET R15 R14 K33
0x7C3C0200, // 0061 CALL R15 1
0x70020000, // 0062 JMP #0064
0xB0080000, // 0063 RAISE 2 R0 R0
- 0x00241315, // 0064 ADD R9 R9 K21
+ 0x00241305, // 0064 ADD R9 R9 K5
0x7001FFCA, // 0065 JMP #0031
- 0x1C240316, // 0066 EQ R9 R1 K22
+ 0x1C240322, // 0066 EQ R9 R1 K34
0x78260002, // 0067 JMPF R9 #006B
- 0xA4262E00, // 0068 IMPORT R9 K23
- 0x8C281318, // 0069 GETMET R10 R9 K24
+ 0xA4264600, // 0068 IMPORT R9 K35
+ 0x8C281324, // 0069 GETMET R10 R9 K36
0x7C280200, // 006A CALL R10 1
0x80040E00, // 006B RET 1 R7
})
@@ -314,44 +420,37 @@ be_local_closure(class_Tasmota_event, /* name */
/********************************************************************
** Solidified function: exec_cmd
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_exec_cmd, /* name */
be_nested_proto(
12, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str(_ccmd),
- /* K1 */ be_nested_str(json),
- /* K2 */ be_nested_str(load),
- /* K3 */ be_nested_str(find_key_i),
- /* K4 */ be_nested_str(resolvecmnd),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_exec_cmd,
&be_const_str_solidified,
( &(const binstruction[27]) { /* code */
- 0x88100100, // 0000 GETMBR R4 R0 K0
+ 0x88100125, // 0000 GETMBR R4 R0 K37
0x78120016, // 0001 JMPF R4 #0019
- 0xA4120200, // 0002 IMPORT R4 K1
- 0x8C140902, // 0003 GETMET R5 R4 K2
+ 0xA4124C00, // 0002 IMPORT R4 K38
+ 0x8C140927, // 0003 GETMET R5 R4 K39
0x5C1C0600, // 0004 MOVE R7 R3
0x7C140400, // 0005 CALL R5 2
- 0x8C180103, // 0006 GETMET R6 R0 K3
- 0x88200100, // 0007 GETMBR R8 R0 K0
+ 0x8C180128, // 0006 GETMET R6 R0 K40
+ 0x88200125, // 0007 GETMBR R8 R0 K37
0x5C240200, // 0008 MOVE R9 R1
0x7C180600, // 0009 CALL R6 3
0x4C1C0000, // 000A LDNIL R7
0x201C0C07, // 000B NE R7 R6 R7
0x781E000B, // 000C JMPF R7 #0019
- 0x8C1C0104, // 000D GETMET R7 R0 K4
+ 0x8C1C0129, // 000D GETMET R7 R0 K41
0x5C240C00, // 000E MOVE R9 R6
0x7C1C0400, // 000F CALL R7 2
- 0x881C0100, // 0010 GETMBR R7 R0 K0
+ 0x881C0125, // 0010 GETMBR R7 R0 K37
0x941C0E06, // 0011 GETIDX R7 R7 R6
0x5C200C00, // 0012 MOVE R8 R6
0x5C240400, // 0013 MOVE R9 R2
@@ -371,39 +470,34 @@ be_local_closure(class_Tasmota_exec_cmd, /* name */
/********************************************************************
** Solidified function: set_light
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_set_light, /* name */
be_nested_proto(
8, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(tasmota_X2Eset_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eset_X28_X29),
- /* K1 */ be_nested_str(light),
- /* K2 */ be_nested_str(set),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_set_light,
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
0x600C0001, // 0000 GETGBL R3 G1
- 0x58100000, // 0001 LDCONST R4 K0
+ 0x5810002A, // 0001 LDCONST R4 K42
0x7C0C0200, // 0002 CALL R3 1
- 0xA40E0200, // 0003 IMPORT R3 K1
+ 0xA40E5600, // 0003 IMPORT R3 K43
0x4C100000, // 0004 LDNIL R4
0x20100404, // 0005 NE R4 R2 R4
0x78120005, // 0006 JMPF R4 #000D
- 0x8C100702, // 0007 GETMET R4 R3 K2
+ 0x8C10072C, // 0007 GETMET R4 R3 K44
0x5C180200, // 0008 MOVE R6 R1
0x5C1C0400, // 0009 MOVE R7 R2
0x7C100600, // 000A CALL R4 3
0x80040800, // 000B RET 1 R4
0x70020003, // 000C JMP #0011
- 0x8C100702, // 000D GETMET R4 R3 K2
+ 0x8C10072C, // 000D GETMET R4 R3 K44
0x5C180200, // 000E MOVE R6 R1
0x7C100400, // 000F CALL R4 2
0x80040800, // 0010 RET 1 R4
@@ -417,64 +511,52 @@ be_local_closure(class_Tasmota_set_light, /* name */
/********************************************************************
** Solidified function: run_cron
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_run_cron, /* name */
be_nested_proto(
9, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str(_crons),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(ccronexpr),
- /* K3 */ be_nested_str(now),
- /* K4 */ be_nested_str(size),
- /* K5 */ be_nested_str(trig),
- /* K6 */ be_nested_str(next),
- /* K7 */ be_nested_str(time_reached),
- /* K8 */ be_nested_str(f),
- /* K9 */ be_const_int(1),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_run_cron,
&be_const_str_solidified,
( &(const binstruction[34]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804012D, // 0000 GETMBR R1 R0 K45
0x7806001E, // 0001 JMPF R1 #0021
- 0x58040001, // 0002 LDCONST R1 K1
- 0xB80A0400, // 0003 GETNGBL R2 K2
- 0x8C080503, // 0004 GETMET R2 R2 K3
+ 0x5804001C, // 0002 LDCONST R1 K28
+ 0xB80A5C00, // 0003 GETNGBL R2 K46
+ 0x8C08052F, // 0004 GETMET R2 R2 K47
0x7C080200, // 0005 CALL R2 1
- 0x880C0100, // 0006 GETMBR R3 R0 K0
- 0x8C0C0704, // 0007 GETMET R3 R3 K4
+ 0x880C012D, // 0006 GETMBR R3 R0 K45
+ 0x8C0C0730, // 0007 GETMET R3 R3 K48
0x7C0C0200, // 0008 CALL R3 1
0x140C0203, // 0009 LT R3 R1 R3
0x780E0015, // 000A JMPF R3 #0021
- 0x880C0100, // 000B GETMBR R3 R0 K0
+ 0x880C012D, // 000B GETMBR R3 R0 K45
0x940C0601, // 000C GETIDX R3 R3 R1
- 0x88100705, // 000D GETMBR R4 R3 K5
- 0x1C100901, // 000E EQ R4 R4 K1
+ 0x88100731, // 000D GETMBR R4 R3 K49
+ 0x1C10091C, // 000E EQ R4 R4 K28
0x78120003, // 000F JMPF R4 #0014
- 0x8C100706, // 0010 GETMET R4 R3 K6
+ 0x8C100732, // 0010 GETMET R4 R3 K50
0x7C100200, // 0011 CALL R4 1
- 0x900E0A04, // 0012 SETMBR R3 K5 R4
+ 0x900E6204, // 0012 SETMBR R3 K49 R4
0x7002000A, // 0013 JMP #001F
- 0x8C100707, // 0014 GETMET R4 R3 K7
+ 0x8C100733, // 0014 GETMET R4 R3 K51
0x7C100200, // 0015 CALL R4 1
0x78120007, // 0016 JMPF R4 #001F
- 0x88100708, // 0017 GETMBR R4 R3 K8
- 0x8C140706, // 0018 GETMET R5 R3 K6
+ 0x88100734, // 0017 GETMBR R4 R3 K52
+ 0x8C140732, // 0018 GETMET R5 R3 K50
0x7C140200, // 0019 CALL R5 1
- 0x900E0A05, // 001A SETMBR R3 K5 R5
+ 0x900E6205, // 001A SETMBR R3 K49 R5
0x5C180800, // 001B MOVE R6 R4
0x5C1C0400, // 001C MOVE R7 R2
0x5C200A00, // 001D MOVE R8 R5
0x7C180400, // 001E CALL R6 2
- 0x00040309, // 001F ADD R1 R1 K9
+ 0x00040305, // 001F ADD R1 R1 K5
0x7001FFE4, // 0020 JMP #0006
0x80000000, // 0021 RET 0
})
@@ -486,41 +568,34 @@ be_local_closure(class_Tasmota_run_cron, /* name */
/********************************************************************
** Solidified function: set_timer
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_set_timer, /* name */
be_nested_proto(
10, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str(check_not_method),
- /* K1 */ be_nested_str(_timers),
- /* K2 */ be_nested_str(push),
- /* K3 */ be_nested_str(Trigger),
- /* K4 */ be_nested_str(millis),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_set_timer,
&be_const_str_solidified,
( &(const binstruction[21]) { /* code */
- 0x8C100100, // 0000 GETMET R4 R0 K0
+ 0x8C100135, // 0000 GETMET R4 R0 K53
0x5C180400, // 0001 MOVE R6 R2
0x7C100400, // 0002 CALL R4 2
- 0x88100101, // 0003 GETMBR R4 R0 K1
+ 0x88100136, // 0003 GETMBR R4 R0 K54
0x4C140000, // 0004 LDNIL R5
0x1C100805, // 0005 EQ R4 R4 R5
0x78120002, // 0006 JMPF R4 #000A
0x60100012, // 0007 GETGBL R4 G18
0x7C100000, // 0008 CALL R4 0
- 0x90020204, // 0009 SETMBR R0 K1 R4
- 0x88100101, // 000A GETMBR R4 R0 K1
- 0x8C100902, // 000B GETMET R4 R4 K2
- 0xB81A0600, // 000C GETNGBL R6 K3
- 0x8C1C0104, // 000D GETMET R7 R0 K4
+ 0x90026C04, // 0009 SETMBR R0 K54 R4
+ 0x88100136, // 000A GETMBR R4 R0 K54
+ 0x8C100937, // 000B GETMET R4 R4 K55
+ 0xB81A7000, // 000C GETNGBL R6 K56
+ 0x8C1C0139, // 000D GETMET R7 R0 K57
0x5C240200, // 000E MOVE R9 R1
0x7C1C0400, // 000F CALL R7 2
0x5C200400, // 0010 MOVE R8 R2
@@ -537,52 +612,44 @@ be_local_closure(class_Tasmota_set_timer, /* name */
/********************************************************************
** Solidified function: add_driver
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_add_driver, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str(instance),
- /* K1 */ be_nested_str(value_error),
- /* K2 */ be_nested_str(instance_X20required),
- /* K3 */ be_nested_str(_drivers),
- /* K4 */ be_nested_str(find),
- /* K5 */ be_nested_str(push),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_add_driver,
&be_const_str_solidified,
( &(const binstruction[25]) { /* code */
0x60080004, // 0000 GETGBL R2 G4
0x5C0C0200, // 0001 MOVE R3 R1
0x7C080200, // 0002 CALL R2 1
- 0x20080500, // 0003 NE R2 R2 K0
+ 0x2008053A, // 0003 NE R2 R2 K58
0x780A0000, // 0004 JMPF R2 #0006
- 0xB0060302, // 0005 RAISE 1 K1 K2
- 0x88080103, // 0006 GETMBR R2 R0 K3
+ 0xB006773C, // 0005 RAISE 1 K59 K60
+ 0x8808010D, // 0006 GETMBR R2 R0 K13
0x780A000B, // 0007 JMPF R2 #0014
- 0x88080103, // 0008 GETMBR R2 R0 K3
- 0x8C080504, // 0009 GETMET R2 R2 K4
+ 0x8808010D, // 0008 GETMBR R2 R0 K13
+ 0x8C08050E, // 0009 GETMET R2 R2 K14
0x5C100200, // 000A MOVE R4 R1
0x7C080400, // 000B CALL R2 2
0x4C0C0000, // 000C LDNIL R3
0x1C080403, // 000D EQ R2 R2 R3
0x780A0003, // 000E JMPF R2 #0013
- 0x88080103, // 000F GETMBR R2 R0 K3
- 0x8C080505, // 0010 GETMET R2 R2 K5
+ 0x8808010D, // 000F GETMBR R2 R0 K13
+ 0x8C080537, // 0010 GETMET R2 R2 K55
0x5C100200, // 0011 MOVE R4 R1
0x7C080400, // 0012 CALL R2 2
0x70020003, // 0013 JMP #0018
0x60080012, // 0014 GETGBL R2 G18
0x7C080000, // 0015 CALL R2 0
0x400C0401, // 0016 CONNECT R3 R2 R1
- 0x90020602, // 0017 SETMBR R0 K3 R2
+ 0x90021A02, // 0017 SETMBR R0 K13 R2
0x80000000, // 0018 RET 0
})
)
@@ -593,41 +660,33 @@ be_local_closure(class_Tasmota_add_driver, /* name */
/********************************************************************
** Solidified function: next_cron
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_next_cron, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str(_crons),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(size),
- /* K3 */ be_nested_str(id),
- /* K4 */ be_nested_str(trig),
- /* K5 */ be_const_int(1),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_next_cron,
&be_const_str_solidified,
( &(const binstruction[17]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8808012D, // 0000 GETMBR R2 R0 K45
0x780A000D, // 0001 JMPF R2 #0010
- 0x580C0001, // 0002 LDCONST R3 K1
- 0x8C100502, // 0003 GETMET R4 R2 K2
+ 0x580C001C, // 0002 LDCONST R3 K28
+ 0x8C100530, // 0003 GETMET R4 R2 K48
0x7C100200, // 0004 CALL R4 1
0x14100604, // 0005 LT R4 R3 R4
0x78120008, // 0006 JMPF R4 #0010
0x94100403, // 0007 GETIDX R4 R2 R3
- 0x88100903, // 0008 GETMBR R4 R4 K3
+ 0x8810093D, // 0008 GETMBR R4 R4 K61
0x1C100801, // 0009 EQ R4 R4 R1
0x78120002, // 000A JMPF R4 #000E
0x94100403, // 000B GETIDX R4 R2 R3
- 0x88100904, // 000C GETMBR R4 R4 K4
+ 0x88100931, // 000C GETMBR R4 R4 K49
0x80040800, // 000D RET 1 R4
0x000C0705, // 000E ADD R3 R3 K5
0x7001FFF2, // 000F JMP #0003
@@ -641,16 +700,15 @@ be_local_closure(class_Tasmota_next_cron, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_init, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
10, /* nstack */
4, /* argc */
@@ -660,7 +718,7 @@ be_local_closure(class_Tasmota_init, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str(urlfetch_cmd),
@@ -678,62 +736,42 @@ be_local_closure(class_Tasmota_init, /* name */
0x80000000, // 0007 RET 0
})
),
- &be_class_Tasmota,
}),
1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
- /* K0 */ be_nested_str(global),
- /* K1 */ be_nested_str(ctypes_bytes_dyn),
- /* K2 */ be_nested_str(_global_addr),
- /* K3 */ be_nested_str(_global_def),
- /* K4 */ be_nested_str(introspect),
- /* K5 */ be_nested_str(_settings_ptr),
- /* K6 */ be_nested_str(get),
- /* K7 */ be_const_int(0),
- /* K8 */ be_nested_str(settings),
- /* K9 */ be_nested_str(toptr),
- /* K10 */ be_nested_str(_settings_def),
- /* K11 */ be_nested_str(wd),
- /* K12 */ be_nested_str(),
- /* K13 */ be_nested_str(_debug_present),
- /* K14 */ be_nested_str(contains),
- /* K15 */ be_nested_str(debug),
- /* K16 */ be_nested_str(add_cmd),
- /* K17 */ be_nested_str(UrlFetch),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_init,
&be_const_str_solidified,
( &(const binstruction[34]) { /* code */
- 0xB8060200, // 0000 GETNGBL R1 K1
- 0x88080102, // 0001 GETMBR R2 R0 K2
- 0x880C0103, // 0002 GETMBR R3 R0 K3
+ 0xB8067C00, // 0000 GETNGBL R1 K62
+ 0x8808013F, // 0001 GETMBR R2 R0 K63
+ 0x880C0140, // 0002 GETMBR R3 R0 K64
0x7C040400, // 0003 CALL R1 2
- 0x90020001, // 0004 SETMBR R0 K0 R1
- 0xA4060800, // 0005 IMPORT R1 K4
+ 0x90020401, // 0004 SETMBR R0 K2 R1
+ 0xA4060E00, // 0005 IMPORT R1 K7
0x60080015, // 0006 GETGBL R2 G21
- 0x880C0105, // 0007 GETMBR R3 R0 K5
+ 0x880C0141, // 0007 GETMBR R3 R0 K65
0x54120003, // 0008 LDINT R4 4
0x7C080400, // 0009 CALL R2 2
- 0x8C080506, // 000A GETMET R2 R2 K6
- 0x58100007, // 000B LDCONST R4 K7
+ 0x8C08051D, // 000A GETMET R2 R2 K29
+ 0x5810001C, // 000B LDCONST R4 K28
0x54160003, // 000C LDINT R5 4
0x7C080600, // 000D CALL R2 3
0x780A0006, // 000E JMPF R2 #0016
- 0xB80E0200, // 000F GETNGBL R3 K1
- 0x8C100309, // 0010 GETMET R4 R1 K9
+ 0xB80E7C00, // 000F GETNGBL R3 K62
+ 0x8C100343, // 0010 GETMET R4 R1 K67
0x5C180400, // 0011 MOVE R6 R2
0x7C100400, // 0012 CALL R4 2
- 0x8814010A, // 0013 GETMBR R5 R0 K10
+ 0x88140144, // 0013 GETMBR R5 R0 K68
0x7C0C0400, // 0014 CALL R3 2
- 0x90021003, // 0015 SETMBR R0 K8 R3
- 0x9002170C, // 0016 SETMBR R0 K11 K12
- 0xB80E0000, // 0017 GETNGBL R3 K0
- 0x8C0C070E, // 0018 GETMET R3 R3 K14
- 0x5814000F, // 0019 LDCONST R5 K15
+ 0x90028403, // 0015 SETMBR R0 K66 R3
+ 0x90028B46, // 0016 SETMBR R0 K69 K70
+ 0xB80E0400, // 0017 GETNGBL R3 K2
+ 0x8C0C0747, // 0018 GETMET R3 R3 K71
+ 0x58140020, // 0019 LDCONST R5 K32
0x7C0C0400, // 001A CALL R3 2
- 0x90021A03, // 001B SETMBR R0 K13 R3
- 0x8C0C0110, // 001C GETMET R3 R0 K16
- 0x58140011, // 001D LDCONST R5 K17
+ 0x90023E03, // 001B SETMBR R0 K31 R3
+ 0x8C0C0148, // 001C GETMET R3 R0 K72
+ 0x58140049, // 001D LDCONST R5 K73
0x84180000, // 001E CLOSURE R6 P0
0x7C0C0600, // 001F CALL R3 3
0xA0000000, // 0020 CLOSE R0
@@ -747,51 +785,40 @@ be_local_closure(class_Tasmota_init, /* name */
/********************************************************************
** Solidified function: add_rule
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_add_rule, /* name */
be_nested_proto(
10, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str(check_not_method),
- /* K1 */ be_nested_str(_rules),
- /* K2 */ be_nested_str(function),
- /* K3 */ be_nested_str(push),
- /* K4 */ be_nested_str(Trigger),
- /* K5 */ be_nested_str(Rule_Matcher),
- /* K6 */ be_nested_str(parse),
- /* K7 */ be_nested_str(value_error),
- /* K8 */ be_nested_str(the_X20second_X20argument_X20is_X20not_X20a_X20function),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_add_rule,
&be_const_str_solidified,
( &(const binstruction[29]) { /* code */
- 0x8C100100, // 0000 GETMET R4 R0 K0
+ 0x8C100135, // 0000 GETMET R4 R0 K53
0x5C180400, // 0001 MOVE R6 R2
0x7C100400, // 0002 CALL R4 2
- 0x88100101, // 0003 GETMBR R4 R0 K1
+ 0x8810014A, // 0003 GETMBR R4 R0 K74
0x4C140000, // 0004 LDNIL R5
0x1C100805, // 0005 EQ R4 R4 R5
0x78120002, // 0006 JMPF R4 #000A
0x60100012, // 0007 GETGBL R4 G18
0x7C100000, // 0008 CALL R4 0
- 0x90020204, // 0009 SETMBR R0 K1 R4
+ 0x90029404, // 0009 SETMBR R0 K74 R4
0x60100004, // 000A GETGBL R4 G4
0x5C140400, // 000B MOVE R5 R2
0x7C100200, // 000C CALL R4 1
- 0x1C100902, // 000D EQ R4 R4 K2
+ 0x1C100908, // 000D EQ R4 R4 K8
0x7812000B, // 000E JMPF R4 #001B
- 0x88100101, // 000F GETMBR R4 R0 K1
- 0x8C100903, // 0010 GETMET R4 R4 K3
- 0xB81A0800, // 0011 GETNGBL R6 K4
- 0x881C0105, // 0012 GETMBR R7 R0 K5
- 0x8C1C0F06, // 0013 GETMET R7 R7 K6
+ 0x8810014A, // 000F GETMBR R4 R0 K74
+ 0x8C100937, // 0010 GETMET R4 R4 K55
+ 0xB81A7000, // 0011 GETNGBL R6 K56
+ 0x881C014B, // 0012 GETMBR R7 R0 K75
+ 0x8C1C0F4C, // 0013 GETMET R7 R7 K76
0x5C240200, // 0014 MOVE R9 R1
0x7C1C0400, // 0015 CALL R7 2
0x5C200400, // 0016 MOVE R8 R2
@@ -799,7 +826,7 @@ be_local_closure(class_Tasmota_add_rule, /* name */
0x7C180600, // 0018 CALL R6 3
0x7C100400, // 0019 CALL R4 2
0x70020000, // 001A JMP #001C
- 0xB0060F08, // 001B RAISE 1 K7 K8
+ 0xB006774D, // 001B RAISE 1 K59 K77
0x80000000, // 001C RET 0
})
)
@@ -810,25 +837,21 @@ be_local_closure(class_Tasmota_add_rule, /* name */
/********************************************************************
** Solidified function: try_rule
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_try_rule, /* name */
be_nested_proto(
9, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(match),
- /* K1 */ be_nested_str(trigger),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_try_rule,
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
- 0x8C100500, // 0000 GETMET R4 R2 K0
+ 0x8C10054E, // 0000 GETMET R4 R2 K78
0x5C180200, // 0001 MOVE R6 R1
0x7C100400, // 0002 CALL R4 2
0x4C140000, // 0003 LDNIL R5
@@ -839,7 +862,7 @@ be_local_closure(class_Tasmota_try_rule, /* name */
0x78160004, // 0008 JMPF R5 #000E
0x5C140600, // 0009 MOVE R5 R3
0x5C180800, // 000A MOVE R6 R4
- 0x881C0501, // 000B GETMBR R7 R2 K1
+ 0x881C054F, // 000B GETMBR R7 R2 K79
0x5C200200, // 000C MOVE R8 R1
0x7C140600, // 000D CALL R5 3
0x50140200, // 000E LDBOOL R5 1 0
@@ -855,30 +878,24 @@ be_local_closure(class_Tasmota_try_rule, /* name */
/********************************************************************
** Solidified function: find_op
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_find_op, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str(_find_op),
- /* K1 */ be_const_int(0),
- /* K2 */ be_const_int(1),
- /* K3 */ be_const_int(2147483647),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_find_op,
&be_const_str_solidified,
( &(const binstruction[31]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C080150, // 0000 GETMET R2 R0 K80
0x5C100200, // 0001 MOVE R4 R1
0x7C080400, // 0002 CALL R2 2
- 0x280C0501, // 0003 GE R3 R2 K1
+ 0x280C051C, // 0003 GE R3 R2 K28
0x780E0011, // 0004 JMPF R3 #0017
0x540E7FFE, // 0005 LDINT R3 32767
0x2C0C0403, // 0006 AND R3 R2 R3
@@ -886,15 +903,15 @@ be_local_closure(class_Tasmota_find_op, /* name */
0x3C100404, // 0008 SHR R4 R2 R4
0x60140012, // 0009 GETGBL R5 G18
0x7C140000, // 000A CALL R5 0
- 0x04180702, // 000B SUB R6 R3 K2
- 0x401A0206, // 000C CONNECT R6 K1 R6
+ 0x04180705, // 000B SUB R6 R3 K5
+ 0x401A3806, // 000C CONNECT R6 K28 R6
0x94180206, // 000D GETIDX R6 R1 R6
0x40180A06, // 000E CONNECT R6 R5 R6
- 0x04180902, // 000F SUB R6 R4 K2
+ 0x04180905, // 000F SUB R6 R4 K5
0x40180606, // 0010 CONNECT R6 R3 R6
0x94180206, // 0011 GETIDX R6 R1 R6
0x40180A06, // 0012 CONNECT R6 R5 R6
- 0x40180903, // 0013 CONNECT R6 R4 K3
+ 0x40180951, // 0013 CONNECT R6 R4 K81
0x94180206, // 0014 GETIDX R6 R1 R6
0x40180A06, // 0015 CONNECT R6 R5 R6
0x80040A00, // 0016 RET 1 R5
@@ -915,28 +932,24 @@ be_local_closure(class_Tasmota_find_op, /* name */
/********************************************************************
** Solidified function: remove_cmd
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_remove_cmd, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(_ccmd),
- /* K1 */ be_nested_str(remove),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_remove_cmd,
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x88080125, // 0000 GETMBR R2 R0 K37
0x780A0003, // 0001 JMPF R2 #0006
- 0x88080100, // 0002 GETMBR R2 R0 K0
- 0x8C080501, // 0003 GETMET R2 R2 K1
+ 0x88080125, // 0002 GETMBR R2 R0 K37
+ 0x8C080552, // 0003 GETMET R2 R2 K82
0x5C100200, // 0004 MOVE R4 R1
0x7C080400, // 0005 CALL R2 2
0x80000000, // 0006 RET 0
@@ -949,29 +962,24 @@ be_local_closure(class_Tasmota_remove_cmd, /* name */
/********************************************************************
** Solidified function: gc
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_gc, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(gc),
- /* K1 */ be_nested_str(collect),
- /* K2 */ be_nested_str(allocated),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_gc,
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080301, // 0001 GETMET R2 R1 K1
+ 0xA4063600, // 0000 IMPORT R1 K27
+ 0x8C080353, // 0001 GETMET R2 R1 K83
0x7C080200, // 0002 CALL R2 1
- 0x8C080302, // 0003 GETMET R2 R1 K2
+ 0x8C080354, // 0003 GETMET R2 R1 K84
0x7C080200, // 0004 CALL R2 1
0x80040400, // 0005 RET 1 R2
})
@@ -983,29 +991,23 @@ be_local_closure(class_Tasmota_gc, /* name */
/********************************************************************
** Solidified function: find_list_i
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_find_list_i, /* name */
be_nested_proto(
9, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str(string),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(toupper),
- /* K3 */ be_const_int(1),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_find_list_i,
&be_const_str_solidified,
( &(const binstruction[20]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
- 0x58100001, // 0001 LDCONST R4 K1
- 0x8C140702, // 0002 GETMET R5 R3 K2
+ 0xA40EAA00, // 0000 IMPORT R3 K85
+ 0x5810001C, // 0001 LDCONST R4 K28
+ 0x8C140756, // 0002 GETMET R5 R3 K86
0x5C1C0400, // 0003 MOVE R7 R2
0x7C140400, // 0004 CALL R5 2
0x6018000C, // 0005 GETGBL R6 G12
@@ -1013,13 +1015,13 @@ be_local_closure(class_Tasmota_find_list_i, /* name */
0x7C180200, // 0007 CALL R6 1
0x14180806, // 0008 LT R6 R4 R6
0x781A0007, // 0009 JMPF R6 #0012
- 0x8C180702, // 000A GETMET R6 R3 K2
+ 0x8C180756, // 000A GETMET R6 R3 K86
0x94200204, // 000B GETIDX R8 R1 R4
0x7C180400, // 000C CALL R6 2
0x1C180C05, // 000D EQ R6 R6 R5
0x781A0000, // 000E JMPF R6 #0010
0x80040800, // 000F RET 1 R4
- 0x00100903, // 0010 ADD R4 R4 K3
+ 0x00100905, // 0010 ADD R4 R4 K5
0x7001FFF2, // 0011 JMP #0005
0x4C180000, // 0012 LDNIL R6
0x80040C00, // 0013 RET 1 R6
@@ -1032,37 +1034,32 @@ be_local_closure(class_Tasmota_find_list_i, /* name */
/********************************************************************
** Solidified function: remove_fast_loop
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_remove_fast_loop, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(_fl),
- /* K1 */ be_nested_str(find),
- /* K2 */ be_nested_str(remove),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_remove_fast_loop,
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x88080157, // 0000 GETMBR R2 R0 K87
0x740A0000, // 0001 JMPT R2 #0003
0x80000400, // 0002 RET 0
- 0x88080100, // 0003 GETMBR R2 R0 K0
- 0x8C080501, // 0004 GETMET R2 R2 K1
+ 0x88080157, // 0003 GETMBR R2 R0 K87
+ 0x8C08050E, // 0004 GETMET R2 R2 K14
0x5C100200, // 0005 MOVE R4 R1
0x7C080400, // 0006 CALL R2 2
0x4C0C0000, // 0007 LDNIL R3
0x200C0403, // 0008 NE R3 R2 R3
0x780E0003, // 0009 JMPF R3 #000E
- 0x880C0100, // 000A GETMBR R3 R0 K0
- 0x8C0C0702, // 000B GETMET R3 R3 K2
+ 0x880C0157, // 000A GETMBR R3 R0 K87
+ 0x8C0C0752, // 000B GETMET R3 R3 K82
0x5C140400, // 000C MOVE R5 R2
0x7C0C0400, // 000D CALL R3 2
0x80000000, // 000E RET 0
@@ -1075,76 +1072,62 @@ be_local_closure(class_Tasmota_remove_fast_loop, /* name */
/********************************************************************
** Solidified function: exec_rules
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_exec_rules, /* name */
be_nested_proto(
14, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str(cmd_res),
- /* K1 */ be_nested_str(_rules),
- /* K2 */ be_nested_str(json),
- /* K3 */ be_nested_str(load),
- /* K4 */ be_nested_str(log),
- /* K5 */ be_nested_str(BRY_X3A_X20ERROR_X2C_X20bad_X20json_X3A_X20),
- /* K6 */ be_const_int(3),
- /* K7 */ be_const_int(0),
- /* K8 */ be_nested_str(try_rule),
- /* K9 */ be_nested_str(trig),
- /* K10 */ be_nested_str(f),
- /* K11 */ be_const_int(1),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_exec_rules,
&be_const_str_solidified,
( &(const binstruction[50]) { /* code */
0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x88100101, // 0001 GETMBR R4 R0 K1
+ 0x8810014A, // 0001 GETMBR R4 R0 K74
0x74120002, // 0002 JMPT R4 #0006
0x4C100000, // 0003 LDNIL R4
0x20100604, // 0004 NE R4 R3 R4
0x78120029, // 0005 JMPF R4 #0030
- 0xA4120400, // 0006 IMPORT R4 K2
+ 0xA4124C00, // 0006 IMPORT R4 K38
0x4C140000, // 0007 LDNIL R5
0x90020005, // 0008 SETMBR R0 K0 R5
0x50140000, // 0009 LDBOOL R5 0 0
- 0x8C180903, // 000A GETMET R6 R4 K3
+ 0x8C180927, // 000A GETMET R6 R4 K39
0x5C200200, // 000B MOVE R8 R1
0x7C180400, // 000C CALL R6 2
0x4C1C0000, // 000D LDNIL R7
0x1C1C0C07, // 000E EQ R7 R6 R7
0x781E0004, // 000F JMPF R7 #0015
- 0x8C1C0104, // 0010 GETMET R7 R0 K4
- 0x00260A01, // 0011 ADD R9 K5 R1
- 0x58280006, // 0012 LDCONST R10 K6
+ 0x8C1C0158, // 0010 GETMET R7 R0 K88
+ 0x0026B201, // 0011 ADD R9 K89 R1
+ 0x5828005A, // 0012 LDCONST R10 K90
0x7C1C0600, // 0013 CALL R7 3
0x5C180200, // 0014 MOVE R6 R1
0x780A0014, // 0015 JMPF R2 #002B
- 0x881C0101, // 0016 GETMBR R7 R0 K1
+ 0x881C014A, // 0016 GETMBR R7 R0 K74
0x781E0012, // 0017 JMPF R7 #002B
- 0x581C0007, // 0018 LDCONST R7 K7
+ 0x581C001C, // 0018 LDCONST R7 K28
0x6020000C, // 0019 GETGBL R8 G12
- 0x88240101, // 001A GETMBR R9 R0 K1
+ 0x8824014A, // 001A GETMBR R9 R0 K74
0x7C200200, // 001B CALL R8 1
0x14200E08, // 001C LT R8 R7 R8
0x7822000C, // 001D JMPF R8 #002B
- 0x88200101, // 001E GETMBR R8 R0 K1
+ 0x8820014A, // 001E GETMBR R8 R0 K74
0x94201007, // 001F GETIDX R8 R8 R7
- 0x8C240108, // 0020 GETMET R9 R0 K8
+ 0x8C24015B, // 0020 GETMET R9 R0 K91
0x5C2C0C00, // 0021 MOVE R11 R6
- 0x88301109, // 0022 GETMBR R12 R8 K9
- 0x8834110A, // 0023 GETMBR R13 R8 K10
+ 0x88301131, // 0022 GETMBR R12 R8 K49
+ 0x88341134, // 0023 GETMBR R13 R8 K52
0x7C240800, // 0024 CALL R9 4
0x74260001, // 0025 JMPT R9 #0028
0x74160000, // 0026 JMPT R5 #0028
0x50140001, // 0027 LDBOOL R5 0 1
0x50140200, // 0028 LDBOOL R5 1 0
- 0x001C0F0B, // 0029 ADD R7 R7 K11
+ 0x001C0F05, // 0029 ADD R7 R7 K5
0x7001FFED, // 002A JMP #0019
0x4C1C0000, // 002B LDNIL R7
0x201C0607, // 002C NE R7 R3 R7
@@ -1162,53 +1145,43 @@ be_local_closure(class_Tasmota_exec_rules, /* name */
/********************************************************************
** Solidified function: run_deferred
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_run_deferred, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str(_timers),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(size),
- /* K3 */ be_nested_str(time_reached),
- /* K4 */ be_nested_str(trig),
- /* K5 */ be_nested_str(f),
- /* K6 */ be_nested_str(remove),
- /* K7 */ be_const_int(1),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_run_deferred,
&be_const_str_solidified,
( &(const binstruction[25]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040136, // 0000 GETMBR R1 R0 K54
0x78060015, // 0001 JMPF R1 #0018
- 0x58040001, // 0002 LDCONST R1 K1
- 0x88080100, // 0003 GETMBR R2 R0 K0
- 0x8C080502, // 0004 GETMET R2 R2 K2
+ 0x5804001C, // 0002 LDCONST R1 K28
+ 0x88080136, // 0003 GETMBR R2 R0 K54
+ 0x8C080530, // 0004 GETMET R2 R2 K48
0x7C080200, // 0005 CALL R2 1
0x14080202, // 0006 LT R2 R1 R2
0x780A000F, // 0007 JMPF R2 #0018
- 0x88080100, // 0008 GETMBR R2 R0 K0
+ 0x88080136, // 0008 GETMBR R2 R0 K54
0x94080401, // 0009 GETIDX R2 R2 R1
- 0x8C0C0103, // 000A GETMET R3 R0 K3
- 0x88140504, // 000B GETMBR R5 R2 K4
+ 0x8C0C0133, // 000A GETMET R3 R0 K51
+ 0x88140531, // 000B GETMBR R5 R2 K49
0x7C0C0400, // 000C CALL R3 2
0x780E0007, // 000D JMPF R3 #0016
- 0x880C0505, // 000E GETMBR R3 R2 K5
- 0x88100100, // 000F GETMBR R4 R0 K0
- 0x8C100906, // 0010 GETMET R4 R4 K6
+ 0x880C0534, // 000E GETMBR R3 R2 K52
+ 0x88100136, // 000F GETMBR R4 R0 K54
+ 0x8C100952, // 0010 GETMET R4 R4 K82
0x5C180200, // 0011 MOVE R6 R1
0x7C100400, // 0012 CALL R4 2
0x5C100600, // 0013 MOVE R4 R3
0x7C100000, // 0014 CALL R4 0
0x70020000, // 0015 JMP #0017
- 0x00040307, // 0016 ADD R1 R1 K7
+ 0x00040305, // 0016 ADD R1 R1 K5
0x7001FFEA, // 0017 JMP #0003
0x80000000, // 0018 RET 0
})
@@ -1220,59 +1193,43 @@ be_local_closure(class_Tasmota_run_deferred, /* name */
/********************************************************************
** Solidified function: compile
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_compile, /* name */
be_nested_proto(
12, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str(string),
- /* K1 */ be_nested_str(endswith),
- /* K2 */ be_nested_str(_X2Ebe),
- /* K3 */ be_nested_str(BRY_X3A_X20file_X20_X27_X25s_X27_X20does_X20not_X20have_X20_X27_X2Ebe_X27_X20extension),
- /* K4 */ be_nested_str(find),
- /* K5 */ be_nested_str(_X23),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str(BRY_X3A_X20cannot_X20compile_X20file_X20in_X20read_X2Donly_X20archive),
- /* K8 */ be_nested_str(file),
- /* K9 */ be_nested_str(BRY_X3A_X20empty_X20compiled_X20file),
- /* K10 */ be_nested_str(BRY_X3A_X20failed_X20to_X20load_X20_X27_X25s_X27_X20_X28_X25s_X20_X2D_X20_X25s_X29),
- /* K11 */ be_nested_str(c),
- /* K12 */ be_nested_str(save),
- /* K13 */ be_nested_str(BRY_X3A_X20could_X20not_X20save_X20compiled_X20file_X20_X25s_X20_X28_X25s_X29),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_compile,
&be_const_str_solidified,
( &(const binstruction[84]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x8C0C0501, // 0001 GETMET R3 R2 K1
+ 0xA40AAA00, // 0000 IMPORT R2 K85
+ 0x8C0C055C, // 0001 GETMET R3 R2 K92
0x5C140200, // 0002 MOVE R5 R1
- 0x58180002, // 0003 LDCONST R6 K2
+ 0x5818005D, // 0003 LDCONST R6 K93
0x7C0C0600, // 0004 CALL R3 3
0x740E0007, // 0005 JMPT R3 #000E
0x600C0001, // 0006 GETGBL R3 G1
0x60100018, // 0007 GETGBL R4 G24
- 0x58140003, // 0008 LDCONST R5 K3
+ 0x5814005E, // 0008 LDCONST R5 K94
0x5C180200, // 0009 MOVE R6 R1
0x7C100400, // 000A CALL R4 2
0x7C0C0200, // 000B CALL R3 1
0x500C0000, // 000C LDBOOL R3 0 0
0x80040600, // 000D RET 1 R3
- 0x8C0C0504, // 000E GETMET R3 R2 K4
+ 0x8C0C050E, // 000E GETMET R3 R2 K14
0x5C140200, // 000F MOVE R5 R1
- 0x58180005, // 0010 LDCONST R6 K5
+ 0x5818005F, // 0010 LDCONST R6 K95
0x7C0C0600, // 0011 CALL R3 3
- 0x240C0706, // 0012 GT R3 R3 K6
+ 0x240C071C, // 0012 GT R3 R3 K28
0x780E0006, // 0013 JMPF R3 #001B
0x600C0001, // 0014 GETGBL R3 G1
0x60100018, // 0015 GETGBL R4 G24
- 0x58140007, // 0016 LDCONST R5 K7
+ 0x58140060, // 0016 LDCONST R5 K96
0x7C100200, // 0017 CALL R4 1
0x7C0C0200, // 0018 CALL R3 1
0x500C0000, // 0019 LDBOOL R3 0 0
@@ -1281,7 +1238,7 @@ be_local_closure(class_Tasmota_compile, /* name */
0xA8020011, // 001C EXBLK 0 #002F
0x6010000D, // 001D GETGBL R4 G13
0x5C140200, // 001E MOVE R5 R1
- 0x58180008, // 001F LDCONST R6 K8
+ 0x58180061, // 001F LDCONST R6 K97
0x7C100400, // 0020 CALL R4 2
0x5C0C0800, // 0021 MOVE R3 R4
0x4C100000, // 0022 LDNIL R4
@@ -1289,7 +1246,7 @@ be_local_closure(class_Tasmota_compile, /* name */
0x78120007, // 0024 JMPF R4 #002D
0x60100001, // 0025 GETGBL R4 G1
0x60140018, // 0026 GETGBL R5 G24
- 0x58180009, // 0027 LDCONST R6 K9
+ 0x58180062, // 0027 LDCONST R6 K98
0x7C140200, // 0028 CALL R5 1
0x7C100200, // 0029 CALL R4 1
0x50100000, // 002A LDBOOL R4 0 0
@@ -1301,7 +1258,7 @@ be_local_closure(class_Tasmota_compile, /* name */
0x7002000A, // 0030 JMP #003C
0x60180001, // 0031 GETGBL R6 G1
0x601C0018, // 0032 GETGBL R7 G24
- 0x5820000A, // 0033 LDCONST R8 K10
+ 0x58200063, // 0033 LDCONST R8 K99
0x5C240200, // 0034 MOVE R9 R1
0x5C280800, // 0035 MOVE R10 R4
0x5C2C0A00, // 0036 MOVE R11 R5
@@ -1311,9 +1268,9 @@ be_local_closure(class_Tasmota_compile, /* name */
0x80040C00, // 003A RET 1 R6
0x70020000, // 003B JMP #003D
0xB0080000, // 003C RAISE 2 R0 R0
- 0x0010030B, // 003D ADD R4 R1 K11
+ 0x00100364, // 003D ADD R4 R1 K100
0xA8020005, // 003E EXBLK 0 #0045
- 0x8C14010C, // 003F GETMET R5 R0 K12
+ 0x8C140124, // 003F GETMET R5 R0 K36
0x5C1C0800, // 0040 MOVE R7 R4
0x5C200600, // 0041 MOVE R8 R3
0x7C140600, // 0042 CALL R5 3
@@ -1323,7 +1280,7 @@ be_local_closure(class_Tasmota_compile, /* name */
0x70020009, // 0046 JMP #0051
0x60180001, // 0047 GETGBL R6 G1
0x601C0018, // 0048 GETGBL R7 G24
- 0x5820000D, // 0049 LDCONST R8 K13
+ 0x58200065, // 0049 LDCONST R8 K101
0x5C240800, // 004A MOVE R9 R4
0x5C280A00, // 004B MOVE R10 R5
0x7C1C0600, // 004C CALL R7 3
@@ -1343,40 +1300,32 @@ be_local_closure(class_Tasmota_compile, /* name */
/********************************************************************
** Solidified function: remove_timer
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_remove_timer, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str(_timers),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(size),
- /* K3 */ be_nested_str(id),
- /* K4 */ be_nested_str(remove),
- /* K5 */ be_const_int(1),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_remove_timer,
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x88080136, // 0000 GETMBR R2 R0 K54
0x780A000E, // 0001 JMPF R2 #0011
- 0x580C0001, // 0002 LDCONST R3 K1
- 0x8C100502, // 0003 GETMET R4 R2 K2
+ 0x580C001C, // 0002 LDCONST R3 K28
+ 0x8C100530, // 0003 GETMET R4 R2 K48
0x7C100200, // 0004 CALL R4 1
0x14100604, // 0005 LT R4 R3 R4
0x78120009, // 0006 JMPF R4 #0011
0x94100403, // 0007 GETIDX R4 R2 R3
- 0x88100903, // 0008 GETMBR R4 R4 K3
+ 0x8810093D, // 0008 GETMBR R4 R4 K61
0x1C100801, // 0009 EQ R4 R4 R1
0x78120003, // 000A JMPF R4 #000F
- 0x8C100504, // 000B GETMET R4 R2 K4
+ 0x8C100552, // 000B GETMET R4 R2 K82
0x5C180600, // 000C MOVE R6 R3
0x7C100400, // 000D CALL R4 2
0x70020000, // 000E JMP #0010
@@ -1392,54 +1341,45 @@ be_local_closure(class_Tasmota_remove_timer, /* name */
/********************************************************************
** Solidified function: remove_rule
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_remove_rule, /* name */
be_nested_proto(
7, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str(_rules),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(trig),
- /* K3 */ be_nested_str(rule),
- /* K4 */ be_nested_str(id),
- /* K5 */ be_nested_str(remove),
- /* K6 */ be_const_int(1),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_remove_rule,
&be_const_str_solidified,
( &(const binstruction[27]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
+ 0x880C014A, // 0000 GETMBR R3 R0 K74
0x780E0017, // 0001 JMPF R3 #001A
- 0x580C0001, // 0002 LDCONST R3 K1
+ 0x580C001C, // 0002 LDCONST R3 K28
0x6010000C, // 0003 GETGBL R4 G12
- 0x88140100, // 0004 GETMBR R5 R0 K0
+ 0x8814014A, // 0004 GETMBR R5 R0 K74
0x7C100200, // 0005 CALL R4 1
0x14100604, // 0006 LT R4 R3 R4
0x78120011, // 0007 JMPF R4 #001A
- 0x88100100, // 0008 GETMBR R4 R0 K0
+ 0x8810014A, // 0008 GETMBR R4 R0 K74
0x94100803, // 0009 GETIDX R4 R4 R3
- 0x88100902, // 000A GETMBR R4 R4 K2
- 0x88100903, // 000B GETMBR R4 R4 K3
+ 0x88100931, // 000A GETMBR R4 R4 K49
+ 0x88100919, // 000B GETMBR R4 R4 K25
0x1C100801, // 000C EQ R4 R4 R1
0x78120009, // 000D JMPF R4 #0018
- 0x88100100, // 000E GETMBR R4 R0 K0
+ 0x8810014A, // 000E GETMBR R4 R0 K74
0x94100803, // 000F GETIDX R4 R4 R3
- 0x88100904, // 0010 GETMBR R4 R4 K4
+ 0x8810093D, // 0010 GETMBR R4 R4 K61
0x1C100802, // 0011 EQ R4 R4 R2
0x78120004, // 0012 JMPF R4 #0018
- 0x88100100, // 0013 GETMBR R4 R0 K0
- 0x8C100905, // 0014 GETMET R4 R4 K5
+ 0x8810014A, // 0013 GETMBR R4 R0 K74
+ 0x8C100952, // 0014 GETMET R4 R4 K82
0x5C180600, // 0015 MOVE R6 R3
0x7C100400, // 0016 CALL R4 2
0x70020000, // 0017 JMP #0019
- 0x000C0706, // 0018 ADD R3 R3 K6
+ 0x000C0705, // 0018 ADD R3 R3 K5
0x7001FFE8, // 0019 JMP #0003
0x80000000, // 001A RET 0
})
@@ -1451,71 +1391,57 @@ be_local_closure(class_Tasmota_remove_rule, /* name */
/********************************************************************
** Solidified function: exec_tele
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_exec_tele, /* name */
be_nested_proto(
12, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str(_rules),
- /* K1 */ be_nested_str(json),
- /* K2 */ be_nested_str(load),
- /* K3 */ be_nested_str(log),
- /* K4 */ be_nested_str(BRY_X3A_X20ERROR_X2C_X20bad_X20json_X3A_X20),
- /* K5 */ be_const_int(3),
- /* K6 */ be_nested_str(Tele),
- /* K7 */ be_const_int(0),
- /* K8 */ be_nested_str(try_rule),
- /* K9 */ be_nested_str(trig),
- /* K10 */ be_nested_str(f),
- /* K11 */ be_const_int(1),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_exec_tele,
&be_const_str_solidified,
( &(const binstruction[41]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8808014A, // 0000 GETMBR R2 R0 K74
0x780A0024, // 0001 JMPF R2 #0027
- 0xA40A0200, // 0002 IMPORT R2 K1
- 0x8C0C0502, // 0003 GETMET R3 R2 K2
+ 0xA40A4C00, // 0002 IMPORT R2 K38
+ 0x8C0C0527, // 0003 GETMET R3 R2 K39
0x5C140200, // 0004 MOVE R5 R1
0x7C0C0400, // 0005 CALL R3 2
0x50100000, // 0006 LDBOOL R4 0 0
0x4C140000, // 0007 LDNIL R5
0x1C140605, // 0008 EQ R5 R3 R5
0x78160004, // 0009 JMPF R5 #000F
- 0x8C140103, // 000A GETMET R5 R0 K3
- 0x001E0801, // 000B ADD R7 K4 R1
- 0x58200005, // 000C LDCONST R8 K5
+ 0x8C140158, // 000A GETMET R5 R0 K88
+ 0x001EB201, // 000B ADD R7 K89 R1
+ 0x5820005A, // 000C LDCONST R8 K90
0x7C140600, // 000D CALL R5 3
0x5C0C0200, // 000E MOVE R3 R1
0x60140013, // 000F GETGBL R5 G19
0x7C140000, // 0010 CALL R5 0
- 0x98160C03, // 0011 SETIDX R5 K6 R3
+ 0x9816CC03, // 0011 SETIDX R5 K102 R3
0x5C0C0A00, // 0012 MOVE R3 R5
- 0x58140007, // 0013 LDCONST R5 K7
+ 0x5814001C, // 0013 LDCONST R5 K28
0x6018000C, // 0014 GETGBL R6 G12
- 0x881C0100, // 0015 GETMBR R7 R0 K0
+ 0x881C014A, // 0015 GETMBR R7 R0 K74
0x7C180200, // 0016 CALL R6 1
0x14180A06, // 0017 LT R6 R5 R6
0x781A000C, // 0018 JMPF R6 #0026
- 0x88180100, // 0019 GETMBR R6 R0 K0
+ 0x8818014A, // 0019 GETMBR R6 R0 K74
0x94180C05, // 001A GETIDX R6 R6 R5
- 0x8C1C0108, // 001B GETMET R7 R0 K8
+ 0x8C1C015B, // 001B GETMET R7 R0 K91
0x5C240600, // 001C MOVE R9 R3
- 0x88280D09, // 001D GETMBR R10 R6 K9
- 0x882C0D0A, // 001E GETMBR R11 R6 K10
+ 0x88280D31, // 001D GETMBR R10 R6 K49
+ 0x882C0D34, // 001E GETMBR R11 R6 K52
0x7C1C0800, // 001F CALL R7 4
0x741E0001, // 0020 JMPT R7 #0023
0x74120000, // 0021 JMPT R4 #0023
0x50100001, // 0022 LDBOOL R4 0 1
0x50100200, // 0023 LDBOOL R4 1 0
- 0x00140B0B, // 0024 ADD R5 R5 K11
+ 0x00140B05, // 0024 ADD R5 R5 K5
0x7001FFED, // 0025 JMP #0014
0x80040800, // 0026 RET 1 R4
0x50080000, // 0027 LDBOOL R2 0 0
@@ -1529,46 +1455,39 @@ be_local_closure(class_Tasmota_exec_tele, /* name */
/********************************************************************
** Solidified function: add_cmd
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_add_cmd, /* name */
be_nested_proto(
6, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str(check_not_method),
- /* K1 */ be_nested_str(_ccmd),
- /* K2 */ be_nested_str(function),
- /* K3 */ be_nested_str(value_error),
- /* K4 */ be_nested_str(the_X20second_X20argument_X20is_X20not_X20a_X20function),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_add_cmd,
&be_const_str_solidified,
( &(const binstruction[20]) { /* code */
- 0x8C0C0100, // 0000 GETMET R3 R0 K0
+ 0x8C0C0135, // 0000 GETMET R3 R0 K53
0x5C140400, // 0001 MOVE R5 R2
0x7C0C0400, // 0002 CALL R3 2
- 0x880C0101, // 0003 GETMBR R3 R0 K1
+ 0x880C0125, // 0003 GETMBR R3 R0 K37
0x4C100000, // 0004 LDNIL R4
0x1C0C0604, // 0005 EQ R3 R3 R4
0x780E0002, // 0006 JMPF R3 #000A
0x600C0013, // 0007 GETGBL R3 G19
0x7C0C0000, // 0008 CALL R3 0
- 0x90020203, // 0009 SETMBR R0 K1 R3
+ 0x90024A03, // 0009 SETMBR R0 K37 R3
0x600C0004, // 000A GETGBL R3 G4
0x5C100400, // 000B MOVE R4 R2
0x7C0C0200, // 000C CALL R3 1
- 0x1C0C0702, // 000D EQ R3 R3 K2
+ 0x1C0C0708, // 000D EQ R3 R3 K8
0x780E0002, // 000E JMPF R3 #0012
- 0x880C0101, // 000F GETMBR R3 R0 K1
+ 0x880C0125, // 000F GETMBR R3 R0 K37
0x980C0202, // 0010 SETIDX R3 R1 R2
0x70020000, // 0011 JMP #0013
- 0xB0060704, // 0012 RAISE 1 K3 K4
+ 0xB006774D, // 0012 RAISE 1 K59 K77
0x80000000, // 0013 RET 0
})
)
@@ -1579,57 +1498,50 @@ be_local_closure(class_Tasmota_add_cmd, /* name */
/********************************************************************
** Solidified function: wire_scan
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_wire_scan, /* name */
be_nested_proto(
6, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str(i2c_enabled),
- /* K1 */ be_nested_str(wire1),
- /* K2 */ be_nested_str(enabled),
- /* K3 */ be_nested_str(detect),
- /* K4 */ be_nested_str(wire2),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_wire_scan,
&be_const_str_solidified,
( &(const binstruction[33]) { /* code */
0x4C0C0000, // 0000 LDNIL R3
0x200C0403, // 0001 NE R3 R2 R3
0x780E0005, // 0002 JMPF R3 #0009
- 0x8C0C0100, // 0003 GETMET R3 R0 K0
+ 0x8C0C0167, // 0003 GETMET R3 R0 K103
0x5C140400, // 0004 MOVE R5 R2
0x7C0C0400, // 0005 CALL R3 2
0x740E0001, // 0006 JMPT R3 #0009
0x4C0C0000, // 0007 LDNIL R3
0x80040600, // 0008 RET 1 R3
- 0x880C0101, // 0009 GETMBR R3 R0 K1
- 0x8C0C0702, // 000A GETMET R3 R3 K2
+ 0x880C0168, // 0009 GETMBR R3 R0 K104
+ 0x8C0C0769, // 000A GETMET R3 R3 K105
0x7C0C0200, // 000B CALL R3 1
0x780E0006, // 000C JMPF R3 #0014
- 0x880C0101, // 000D GETMBR R3 R0 K1
- 0x8C0C0703, // 000E GETMET R3 R3 K3
+ 0x880C0168, // 000D GETMBR R3 R0 K104
+ 0x8C0C076A, // 000E GETMET R3 R3 K106
0x5C140200, // 000F MOVE R5 R1
0x7C0C0400, // 0010 CALL R3 2
0x780E0001, // 0011 JMPF R3 #0014
- 0x880C0101, // 0012 GETMBR R3 R0 K1
+ 0x880C0168, // 0012 GETMBR R3 R0 K104
0x80040600, // 0013 RET 1 R3
- 0x880C0104, // 0014 GETMBR R3 R0 K4
- 0x8C0C0702, // 0015 GETMET R3 R3 K2
+ 0x880C016B, // 0014 GETMBR R3 R0 K107
+ 0x8C0C0769, // 0015 GETMET R3 R3 K105
0x7C0C0200, // 0016 CALL R3 1
0x780E0006, // 0017 JMPF R3 #001F
- 0x880C0104, // 0018 GETMBR R3 R0 K4
- 0x8C0C0703, // 0019 GETMET R3 R3 K3
+ 0x880C016B, // 0018 GETMBR R3 R0 K107
+ 0x8C0C076A, // 0019 GETMET R3 R3 K106
0x5C140200, // 001A MOVE R5 R1
0x7C0C0400, // 001B CALL R3 2
0x780E0001, // 001C JMPF R3 #001F
- 0x880C0104, // 001D GETMBR R3 R0 K4
+ 0x880C016B, // 001D GETMBR R3 R0 K107
0x80040600, // 001E RET 1 R3
0x4C0C0000, // 001F LDNIL R3
0x80040600, // 0020 RET 1 R3
@@ -1642,29 +1554,22 @@ be_local_closure(class_Tasmota_wire_scan, /* name */
/********************************************************************
** Solidified function: find_key_i
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_find_key_i, /* name */
be_nested_proto(
10, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str(string),
- /* K1 */ be_nested_str(toupper),
- /* K2 */ be_nested_str(keys),
- /* K3 */ be_nested_str(_X3F),
- /* K4 */ be_nested_str(stop_iteration),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_find_key_i,
&be_const_str_solidified,
( &(const binstruction[30]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
- 0x8C100701, // 0001 GETMET R4 R3 K1
+ 0xA40EAA00, // 0000 IMPORT R3 K85
+ 0x8C100756, // 0001 GETMET R4 R3 K86
0x5C180400, // 0002 MOVE R6 R2
0x7C100400, // 0003 CALL R4 2
0x6014000F, // 0004 GETGBL R5 G15
@@ -1673,23 +1578,23 @@ be_local_closure(class_Tasmota_find_key_i, /* name */
0x7C140400, // 0007 CALL R5 2
0x78160013, // 0008 JMPF R5 #001D
0x60140010, // 0009 GETGBL R5 G16
- 0x8C180302, // 000A GETMET R6 R1 K2
+ 0x8C18036C, // 000A GETMET R6 R1 K108
0x7C180200, // 000B CALL R6 1
0x7C140200, // 000C CALL R5 1
0xA802000B, // 000D EXBLK 0 #001A
0x5C180A00, // 000E MOVE R6 R5
0x7C180000, // 000F CALL R6 0
- 0x8C1C0701, // 0010 GETMET R7 R3 K1
+ 0x8C1C0756, // 0010 GETMET R7 R3 K86
0x5C240C00, // 0011 MOVE R9 R6
0x7C1C0400, // 0012 CALL R7 2
0x1C1C0E04, // 0013 EQ R7 R7 R4
0x741E0001, // 0014 JMPT R7 #0017
- 0x1C1C0503, // 0015 EQ R7 R2 K3
+ 0x1C1C056D, // 0015 EQ R7 R2 K109
0x781E0001, // 0016 JMPF R7 #0019
0xA8040001, // 0017 EXBLK 1 1
0x80040C00, // 0018 RET 1 R6
0x7001FFF3, // 0019 JMP #000E
- 0x58140004, // 001A LDCONST R5 K4
+ 0x5814006E, // 001A LDCONST R5 K110
0xAC140200, // 001B CATCH R5 1 0
0xB0080000, // 001C RAISE 2 R0 R0
0x80000000, // 001D RET 0
@@ -1702,65 +1607,46 @@ be_local_closure(class_Tasmota_find_key_i, /* name */
/********************************************************************
** Solidified function: urlfetch
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_urlfetch, /* name */
be_nested_proto(
10, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_nested_str(string),
- /* K1 */ be_nested_str(split),
- /* K2 */ be_nested_str(_X2F),
- /* K3 */ be_nested_str(pop),
- /* K4 */ be_const_int(0),
- /* K5 */ be_nested_str(index_X2Ehtml),
- /* K6 */ be_nested_str(webclient),
- /* K7 */ be_nested_str(set_follow_redirects),
- /* K8 */ be_nested_str(begin),
- /* K9 */ be_nested_str(GET),
- /* K10 */ be_nested_str(status_X3A_X20),
- /* K11 */ be_nested_str(connection_error),
- /* K12 */ be_nested_str(write_file),
- /* K13 */ be_nested_str(close),
- /* K14 */ be_nested_str(log),
- /* K15 */ be_nested_str(BRY_X3A_X20Fetched_X20),
- /* K16 */ be_const_int(3),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_urlfetch,
&be_const_str_solidified,
( &(const binstruction[48]) { /* code */
0x4C0C0000, // 0000 LDNIL R3
0x1C0C0403, // 0001 EQ R3 R2 R3
0x780E000D, // 0002 JMPF R3 #0011
- 0xA40E0000, // 0003 IMPORT R3 K0
- 0x8C100701, // 0004 GETMET R4 R3 K1
+ 0xA40EAA00, // 0003 IMPORT R3 K85
+ 0x8C10076F, // 0004 GETMET R4 R3 K111
0x5C180200, // 0005 MOVE R6 R1
- 0x581C0002, // 0006 LDCONST R7 K2
+ 0x581C0070, // 0006 LDCONST R7 K112
0x7C100600, // 0007 CALL R4 3
- 0x8C100903, // 0008 GETMET R4 R4 K3
+ 0x8C10090F, // 0008 GETMET R4 R4 K15
0x7C100200, // 0009 CALL R4 1
0x5C080800, // 000A MOVE R2 R4
0x6010000C, // 000B GETGBL R4 G12
0x5C140400, // 000C MOVE R5 R2
0x7C100200, // 000D CALL R4 1
- 0x1C100904, // 000E EQ R4 R4 K4
+ 0x1C10091C, // 000E EQ R4 R4 K28
0x78120000, // 000F JMPF R4 #0011
- 0x58080005, // 0010 LDCONST R2 K5
- 0xB80E0C00, // 0011 GETNGBL R3 K6
+ 0x58080071, // 0010 LDCONST R2 K113
+ 0xB80EE400, // 0011 GETNGBL R3 K114
0x7C0C0000, // 0012 CALL R3 0
- 0x8C100707, // 0013 GETMET R4 R3 K7
+ 0x8C100773, // 0013 GETMET R4 R3 K115
0x50180200, // 0014 LDBOOL R6 1 0
0x7C100400, // 0015 CALL R4 2
- 0x8C100708, // 0016 GETMET R4 R3 K8
+ 0x8C100774, // 0016 GETMET R4 R3 K116
0x5C180200, // 0017 MOVE R6 R1
0x7C100400, // 0018 CALL R4 2
- 0x8C100709, // 0019 GETMET R4 R3 K9
+ 0x8C100775, // 0019 GETMET R4 R3 K117
0x7C100200, // 001A CALL R4 1
0x541600C7, // 001B LDINT R5 200
0x20140805, // 001C NE R5 R4 R5
@@ -1768,19 +1654,19 @@ be_local_closure(class_Tasmota_urlfetch, /* name */
0x60140008, // 001E GETGBL R5 G8
0x5C180800, // 001F MOVE R6 R4
0x7C140200, // 0020 CALL R5 1
- 0x00161405, // 0021 ADD R5 K10 R5
- 0xB0061605, // 0022 RAISE 1 K11 R5
- 0x8C14070C, // 0023 GETMET R5 R3 K12
+ 0x0016EC05, // 0021 ADD R5 K118 R5
+ 0xB006EE05, // 0022 RAISE 1 K119 R5
+ 0x8C140778, // 0023 GETMET R5 R3 K120
0x5C1C0400, // 0024 MOVE R7 R2
0x7C140400, // 0025 CALL R5 2
- 0x8C18070D, // 0026 GETMET R6 R3 K13
+ 0x8C180779, // 0026 GETMET R6 R3 K121
0x7C180200, // 0027 CALL R6 1
- 0x8C18010E, // 0028 GETMET R6 R0 K14
+ 0x8C180158, // 0028 GETMET R6 R0 K88
0x60200008, // 0029 GETGBL R8 G8
0x5C240A00, // 002A MOVE R9 R5
0x7C200200, // 002B CALL R8 1
- 0x00221E08, // 002C ADD R8 K15 R8
- 0x58240010, // 002D LDCONST R9 K16
+ 0x0022F408, // 002C ADD R8 K122 R8
+ 0x5824005A, // 002D LDCONST R9 K90
0x7C180600, // 002E CALL R6 3
0x80040800, // 002F RET 1 R4
})
@@ -1792,30 +1678,25 @@ be_local_closure(class_Tasmota_urlfetch, /* name */
/********************************************************************
** Solidified function: fast_loop
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_fast_loop, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(_fl),
- /* K1 */ be_const_int(0),
- /* K2 */ be_const_int(1),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_fast_loop,
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040157, // 0000 GETMBR R1 R0 K87
0x5C080200, // 0001 MOVE R2 R1
0x740A0000, // 0002 JMPT R2 #0004
0x80000400, // 0003 RET 0
- 0x58080001, // 0004 LDCONST R2 K1
+ 0x5808001C, // 0004 LDCONST R2 K28
0x600C000C, // 0005 GETGBL R3 G12
0x5C100200, // 0006 MOVE R4 R1
0x7C0C0200, // 0007 CALL R3 1
@@ -1823,7 +1704,7 @@ be_local_closure(class_Tasmota_fast_loop, /* name */
0x780E0003, // 0009 JMPF R3 #000E
0x940C0202, // 000A GETIDX R3 R1 R2
0x7C0C0000, // 000B CALL R3 0
- 0x00080502, // 000C ADD R2 R2 K2
+ 0x00080505, // 000C ADD R2 R2 K5
0x7001FFF6, // 000D JMP #0005
0x80000000, // 000E RET 0
})
@@ -1835,26 +1716,22 @@ be_local_closure(class_Tasmota_fast_loop, /* name */
/********************************************************************
** Solidified function: gen_cb
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_gen_cb, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(cb),
- /* K1 */ be_nested_str(gen_cb),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_gen_cb,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x8C0C0501, // 0001 GETMET R3 R2 K1
+ 0xA40AF600, // 0000 IMPORT R2 K123
+ 0x8C0C057C, // 0001 GETMET R3 R2 K124
0x5C140200, // 0002 MOVE R5 R1
0x7C0C0400, // 0003 CALL R3 2
0x80040600, // 0004 RET 1 R3
@@ -1867,41 +1744,31 @@ be_local_closure(class_Tasmota_gen_cb, /* name */
/********************************************************************
** Solidified function: time_str
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_time_str, /* name */
be_nested_proto(
11, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str(time_dump),
- /* K1 */ be_nested_str(_X2504d_X2D_X2502d_X2D_X2502dT_X2502d_X3A_X2502d_X3A_X2502d),
- /* K2 */ be_nested_str(year),
- /* K3 */ be_nested_str(month),
- /* K4 */ be_nested_str(day),
- /* K5 */ be_nested_str(hour),
- /* K6 */ be_nested_str(min),
- /* K7 */ be_nested_str(sec),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_time_str,
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C08017D, // 0000 GETMET R2 R0 K125
0x5C100200, // 0001 MOVE R4 R1
0x7C080400, // 0002 CALL R2 2
0x600C0018, // 0003 GETGBL R3 G24
- 0x58100001, // 0004 LDCONST R4 K1
- 0x94140502, // 0005 GETIDX R5 R2 K2
- 0x94180503, // 0006 GETIDX R6 R2 K3
- 0x941C0504, // 0007 GETIDX R7 R2 K4
- 0x94200505, // 0008 GETIDX R8 R2 K5
- 0x94240506, // 0009 GETIDX R9 R2 K6
- 0x94280507, // 000A GETIDX R10 R2 K7
+ 0x5810007E, // 0004 LDCONST R4 K126
+ 0x9414057F, // 0005 GETIDX R5 R2 K127
+ 0x94180580, // 0006 GETIDX R6 R2 K128
+ 0x941C0581, // 0007 GETIDX R7 R2 K129
+ 0x94200582, // 0008 GETIDX R8 R2 K130
+ 0x94240583, // 0009 GETIDX R9 R2 K131
+ 0x94280584, // 000A GETIDX R10 R2 K132
0x7C0C0E00, // 000B CALL R3 7
0x80040600, // 000C RET 1 R3
})
@@ -1913,51 +1780,40 @@ be_local_closure(class_Tasmota_time_str, /* name */
/********************************************************************
** Solidified function: add_fast_loop
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_add_fast_loop, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str(check_not_method),
- /* K1 */ be_nested_str(_fl),
- /* K2 */ be_nested_str(function),
- /* K3 */ be_nested_str(value_error),
- /* K4 */ be_nested_str(argument_X20must_X20be_X20a_X20function),
- /* K5 */ be_nested_str(global),
- /* K6 */ be_nested_str(fast_loop_enabled),
- /* K7 */ be_const_int(1),
- /* K8 */ be_nested_str(push),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_add_fast_loop,
&be_const_str_solidified,
( &(const binstruction[23]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C080135, // 0000 GETMET R2 R0 K53
0x5C100200, // 0001 MOVE R4 R1
0x7C080400, // 0002 CALL R2 2
- 0x88080101, // 0003 GETMBR R2 R0 K1
+ 0x88080157, // 0003 GETMBR R2 R0 K87
0x4C0C0000, // 0004 LDNIL R3
0x1C080403, // 0005 EQ R2 R2 R3
0x780A0002, // 0006 JMPF R2 #000A
0x60080012, // 0007 GETGBL R2 G18
0x7C080000, // 0008 CALL R2 0
- 0x90020202, // 0009 SETMBR R0 K1 R2
+ 0x9002AE02, // 0009 SETMBR R0 K87 R2
0x60080004, // 000A GETGBL R2 G4
0x5C0C0200, // 000B MOVE R3 R1
0x7C080200, // 000C CALL R2 1
- 0x20080502, // 000D NE R2 R2 K2
+ 0x20080508, // 000D NE R2 R2 K8
0x780A0000, // 000E JMPF R2 #0010
- 0xB0060704, // 000F RAISE 1 K3 K4
- 0x88080105, // 0010 GETMBR R2 R0 K5
- 0x900A0D07, // 0011 SETMBR R2 K6 K7
- 0x88080101, // 0012 GETMBR R2 R0 K1
- 0x8C080508, // 0013 GETMET R2 R2 K8
+ 0xB0067785, // 000F RAISE 1 K59 K133
+ 0x88080102, // 0010 GETMBR R2 R0 K2
+ 0x900B0D05, // 0011 SETMBR R2 K134 K5
+ 0x88080157, // 0012 GETMBR R2 R0 K87
+ 0x8C080537, // 0013 GETMET R2 R2 K55
0x5C100200, // 0014 MOVE R4 R1
0x7C080400, // 0015 CALL R2 2
0x80000000, // 0016 RET 0
@@ -1970,38 +1826,33 @@ be_local_closure(class_Tasmota_add_fast_loop, /* name */
/********************************************************************
** Solidified function: get_light
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_get_light, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(tasmota_X2Eget_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eget_X28_X29),
- /* K1 */ be_nested_str(light),
- /* K2 */ be_nested_str(get),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_get_light,
&be_const_str_solidified,
( &(const binstruction[16]) { /* code */
0x60080001, // 0000 GETGBL R2 G1
- 0x580C0000, // 0001 LDCONST R3 K0
+ 0x580C0087, // 0001 LDCONST R3 K135
0x7C080200, // 0002 CALL R2 1
- 0xA40A0200, // 0003 IMPORT R2 K1
+ 0xA40A5600, // 0003 IMPORT R2 K43
0x4C0C0000, // 0004 LDNIL R3
0x200C0203, // 0005 NE R3 R1 R3
0x780E0004, // 0006 JMPF R3 #000C
- 0x8C0C0502, // 0007 GETMET R3 R2 K2
+ 0x8C0C051D, // 0007 GETMET R3 R2 K29
0x5C140200, // 0008 MOVE R5 R1
0x7C0C0400, // 0009 CALL R3 2
0x80040600, // 000A RET 1 R3
0x70020002, // 000B JMP #000F
- 0x8C0C0502, // 000C GETMET R3 R2 K2
+ 0x8C0C051D, // 000C GETMET R3 R2 K29
0x7C0C0200, // 000D CALL R3 1
0x80040600, // 000E RET 1 R3
0x80000000, // 000F RET 0
@@ -2014,48 +1865,40 @@ be_local_closure(class_Tasmota_get_light, /* name */
/********************************************************************
** Solidified function: add_cron
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_add_cron, /* name */
be_nested_proto(
13, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str(check_not_method),
- /* K1 */ be_nested_str(_crons),
- /* K2 */ be_nested_str(ccronexpr),
- /* K3 */ be_nested_str(next),
- /* K4 */ be_nested_str(push),
- /* K5 */ be_nested_str(Trigger),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_add_cron,
&be_const_str_solidified,
( &(const binstruction[27]) { /* code */
- 0x8C100100, // 0000 GETMET R4 R0 K0
+ 0x8C100135, // 0000 GETMET R4 R0 K53
0x5C180400, // 0001 MOVE R6 R2
0x7C100400, // 0002 CALL R4 2
- 0x88100101, // 0003 GETMBR R4 R0 K1
+ 0x8810012D, // 0003 GETMBR R4 R0 K45
0x4C140000, // 0004 LDNIL R5
0x1C100805, // 0005 EQ R4 R4 R5
0x78120002, // 0006 JMPF R4 #000A
0x60100012, // 0007 GETGBL R4 G18
0x7C100000, // 0008 CALL R4 0
- 0x90020204, // 0009 SETMBR R0 K1 R4
- 0xB8120400, // 000A GETNGBL R4 K2
+ 0x90025A04, // 0009 SETMBR R0 K45 R4
+ 0xB8125C00, // 000A GETNGBL R4 K46
0x60140008, // 000B GETGBL R5 G8
0x5C180200, // 000C MOVE R6 R1
0x7C140200, // 000D CALL R5 1
0x7C100200, // 000E CALL R4 1
- 0x8C140903, // 000F GETMET R5 R4 K3
+ 0x8C140932, // 000F GETMET R5 R4 K50
0x7C140200, // 0010 CALL R5 1
- 0x88180101, // 0011 GETMBR R6 R0 K1
- 0x8C180D04, // 0012 GETMET R6 R6 K4
- 0xB8220A00, // 0013 GETNGBL R8 K5
+ 0x8818012D, // 0011 GETMBR R6 R0 K45
+ 0x8C180D37, // 0012 GETMET R6 R6 K55
+ 0xB8227000, // 0013 GETNGBL R8 K56
0x5C240A00, // 0014 MOVE R9 R5
0x5C280400, // 0015 MOVE R10 R2
0x5C2C0600, // 0016 MOVE R11 R3
@@ -2072,25 +1915,17 @@ be_local_closure(class_Tasmota_add_cron, /* name */
/********************************************************************
** Solidified function: hs2rgb
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_hs2rgb, /* name */
be_nested_proto(
17, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str(tasmota),
- /* K2 */ be_nested_str(scale_uint),
- /* K3 */ be_const_int(1),
- /* K4 */ be_const_int(2),
- /* K5 */ be_const_int(3),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_hs2rgb,
&be_const_str_solidified,
( &(const binstruction[68]) { /* code */
@@ -2103,7 +1938,7 @@ be_local_closure(class_Tasmota_hs2rgb, /* name */
0x541600FE, // 0006 LDINT R5 255
0x541A0167, // 0007 LDINT R6 360
0x10040206, // 0008 MOD R1 R1 R6
- 0x24180500, // 0009 GT R6 R2 K0
+ 0x2418051C, // 0009 GT R6 R2 K28
0x781A0031, // 000A JMPF R6 #003D
0x541A003B, // 000B LDINT R6 60
0x0C180206, // 000C DIV R6 R1 R6
@@ -2112,27 +1947,27 @@ be_local_closure(class_Tasmota_hs2rgb, /* name */
0x542200FE, // 000F LDINT R8 255
0x04201002, // 0010 SUB R8 R8 R2
0xB8260200, // 0011 GETNGBL R9 K1
- 0x8C241302, // 0012 GETMET R9 R9 K2
+ 0x8C241388, // 0012 GETMET R9 R9 K136
0x5C2C0E00, // 0013 MOVE R11 R7
- 0x58300000, // 0014 LDCONST R12 K0
+ 0x5830001C, // 0014 LDCONST R12 K28
0x5436003B, // 0015 LDINT R13 60
0x543A00FE, // 0016 LDINT R14 255
0x5C3C1000, // 0017 MOVE R15 R8
0x7C240C00, // 0018 CALL R9 6
0xB82A0200, // 0019 GETNGBL R10 K1
- 0x8C281502, // 001A GETMET R10 R10 K2
+ 0x8C281588, // 001A GETMET R10 R10 K136
0x5C300E00, // 001B MOVE R12 R7
- 0x58340000, // 001C LDCONST R13 K0
+ 0x5834001C, // 001C LDCONST R13 K28
0x543A003B, // 001D LDINT R14 60
0x5C3C1000, // 001E MOVE R15 R8
0x544200FE, // 001F LDINT R16 255
0x7C280C00, // 0020 CALL R10 6
- 0x1C2C0D00, // 0021 EQ R11 R6 K0
+ 0x1C2C0D1C, // 0021 EQ R11 R6 K28
0x782E0002, // 0022 JMPF R11 #0026
0x5C141400, // 0023 MOVE R5 R10
0x5C101000, // 0024 MOVE R4 R8
0x70020016, // 0025 JMP #003D
- 0x1C2C0D03, // 0026 EQ R11 R6 K3
+ 0x1C2C0D05, // 0026 EQ R11 R6 K5
0x782E0002, // 0027 JMPF R11 #002B
0x5C0C1200, // 0028 MOVE R3 R9
0x5C101000, // 0029 MOVE R4 R8
@@ -2142,7 +1977,7 @@ be_local_closure(class_Tasmota_hs2rgb, /* name */
0x5C0C1000, // 002D MOVE R3 R8
0x5C101400, // 002E MOVE R4 R10
0x7002000C, // 002F JMP #003D
- 0x1C2C0D05, // 0030 EQ R11 R6 K5
+ 0x1C2C0D5A, // 0030 EQ R11 R6 K90
0x782E0002, // 0031 JMPF R11 #0035
0x5C0C1000, // 0032 MOVE R3 R8
0x5C141200, // 0033 MOVE R5 R9
@@ -2171,40 +2006,32 @@ be_local_closure(class_Tasmota_hs2rgb, /* name */
/********************************************************************
** Solidified function: remove_cron
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_remove_cron, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str(_crons),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(size),
- /* K3 */ be_nested_str(id),
- /* K4 */ be_nested_str(remove),
- /* K5 */ be_const_int(1),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_remove_cron,
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8808012D, // 0000 GETMBR R2 R0 K45
0x780A000E, // 0001 JMPF R2 #0011
- 0x580C0001, // 0002 LDCONST R3 K1
- 0x8C100502, // 0003 GETMET R4 R2 K2
+ 0x580C001C, // 0002 LDCONST R3 K28
+ 0x8C100530, // 0003 GETMET R4 R2 K48
0x7C100200, // 0004 CALL R4 1
0x14100604, // 0005 LT R4 R3 R4
0x78120009, // 0006 JMPF R4 #0011
0x94100403, // 0007 GETIDX R4 R2 R3
- 0x88100903, // 0008 GETMBR R4 R4 K3
+ 0x8810093D, // 0008 GETMBR R4 R4 K61
0x1C100801, // 0009 EQ R4 R4 R1
0x78120003, // 000A JMPF R4 #000F
- 0x8C100504, // 000B GETMET R4 R2 K4
+ 0x8C100552, // 000B GETMET R4 R2 K82
0x5C180600, // 000C MOVE R6 R3
0x7C100400, // 000D CALL R4 2
0x70020000, // 000E JMP #0010
@@ -2220,16 +2047,15 @@ be_local_closure(class_Tasmota_remove_cron, /* name */
/********************************************************************
** Solidified function: load
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_load, /* name */
be_nested_proto(
26, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 7]) {
+ ( &(const struct bproto*[ 6]) {
be_nested_proto(
6, /* nstack */
1, /* argc */
@@ -2237,7 +2063,7 @@ be_local_closure(class_Tasmota_load, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str(sys),
@@ -2270,7 +2096,7 @@ be_local_closure(class_Tasmota_load, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str(sys),
@@ -2303,7 +2129,7 @@ be_local_closure(class_Tasmota_load, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 8]) { /* constants */
/* K0 */ be_nested_str(r),
@@ -2370,7 +2196,7 @@ be_local_closure(class_Tasmota_load, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str(path),
@@ -2403,7 +2229,7 @@ be_local_closure(class_Tasmota_load, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str(file),
@@ -2446,7 +2272,7 @@ be_local_closure(class_Tasmota_load, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str(BRY_X3A_X20failed_X20to_X20run_X20compiled_X20code_X20_X28_X25s_X20_X2D_X20_X25s_X29),
@@ -2489,31 +2315,9 @@ be_local_closure(class_Tasmota_load, /* name */
0x80040200, // 001D RET 1 R1
})
),
- &be_class_Tasmota,
}),
1, /* has constants */
- ( &(const bvalue[20]) { /* constants */
- /* K0 */ be_nested_str(string),
- /* K1 */ be_nested_str(path),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str(startswith),
- /* K4 */ be_nested_str(_X2F),
- /* K5 */ be_nested_str(find),
- /* K6 */ be_nested_str(_X23),
- /* K7 */ be_const_int(1),
- /* K8 */ be_const_int(2147483647),
- /* K9 */ be_nested_str(_X2E),
- /* K10 */ be_nested_str(_X2Ebe),
- /* K11 */ be_nested_str(endswith),
- /* K12 */ be_nested_str(_X2Ebec),
- /* K13 */ be_nested_str(c),
- /* K14 */ be_nested_str(BRY_X3A_X20file_X20extension_X20is_X20not_X20_X27_X2Ebe_X27_X20nor_X20_X27_X2Ebec_X27),
- /* K15 */ be_nested_str(exists),
- /* K16 */ be_nested_str(wd),
- /* K17 */ be_nested_str(),
- /* K18 */ be_nested_str(BRY_X3A_X20corrupt_X20bytecode_X20_X27_X25s_X27),
- /* K19 */ be_nested_str(BRY_X3A_X20bytecode_X20has_X20wrong_X20version_X20_X27_X25s_X27_X20_X28_X25s_X29),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_load,
&be_const_str_solidified,
( &(const binstruction[164]) { /* code */
@@ -2523,72 +2327,72 @@ be_local_closure(class_Tasmota_load, /* name */
0x84140003, // 0003 CLOSURE R5 P3
0x84180004, // 0004 CLOSURE R6 P4
0x841C0005, // 0005 CLOSURE R7 P5
- 0xA4220000, // 0006 IMPORT R8 K0
- 0xA4260200, // 0007 IMPORT R9 K1
+ 0xA422AA00, // 0006 IMPORT R8 K85
+ 0xA4271200, // 0007 IMPORT R9 K137
0x6028000C, // 0008 GETGBL R10 G12
0x5C2C0200, // 0009 MOVE R11 R1
0x7C280200, // 000A CALL R10 1
- 0x1C281502, // 000B EQ R10 R10 K2
+ 0x1C28151C, // 000B EQ R10 R10 K28
0x782A0002, // 000C JMPF R10 #0010
0x50280000, // 000D LDBOOL R10 0 0
0xA0000000, // 000E CLOSE R0
0x80041400, // 000F RET 1 R10
- 0x8C281103, // 0010 GETMET R10 R8 K3
+ 0x8C28118A, // 0010 GETMET R10 R8 K138
0x5C300200, // 0011 MOVE R12 R1
- 0x58340004, // 0012 LDCONST R13 K4
+ 0x58340070, // 0012 LDCONST R13 K112
0x7C280600, // 0013 CALL R10 3
0x742A0000, // 0014 JMPT R10 #0016
- 0x00060801, // 0015 ADD R1 K4 R1
- 0x8C281105, // 0016 GETMET R10 R8 K5
+ 0x0006E001, // 0015 ADD R1 K112 R1
+ 0x8C28110E, // 0016 GETMET R10 R8 K14
0x5C300200, // 0017 MOVE R12 R1
- 0x58340006, // 0018 LDCONST R13 K6
+ 0x5834005F, // 0018 LDCONST R13 K95
0x7C280600, // 0019 CALL R10 3
- 0x242C1502, // 001A GT R11 R10 K2
+ 0x242C151C, // 001A GT R11 R10 K28
0x782E0003, // 001B JMPF R11 #0020
- 0x04301507, // 001C SUB R12 R10 K7
- 0x4032040C, // 001D CONNECT R12 K2 R12
+ 0x04301505, // 001C SUB R12 R10 K5
+ 0x4032380C, // 001D CONNECT R12 K28 R12
0x9430020C, // 001E GETIDX R12 R1 R12
0x70020000, // 001F JMP #0021
0x5C300200, // 0020 MOVE R12 R1
0x782E0003, // 0021 JMPF R11 #0026
- 0x00341507, // 0022 ADD R13 R10 K7
- 0x40341B08, // 0023 CONNECT R13 R13 K8
+ 0x00341505, // 0022 ADD R13 R10 K5
+ 0x40341B51, // 0023 CONNECT R13 R13 K81
0x9434020D, // 0024 GETIDX R13 R1 R13
0x70020000, // 0025 JMP #0027
0x5C340200, // 0026 MOVE R13 R1
- 0x8C381105, // 0027 GETMET R14 R8 K5
+ 0x8C38110E, // 0027 GETMET R14 R8 K14
0x5C401A00, // 0028 MOVE R16 R13
- 0x58440009, // 0029 LDCONST R17 K9
+ 0x5844008B, // 0029 LDCONST R17 K139
0x7C380600, // 002A CALL R14 3
- 0x14381D02, // 002B LT R14 R14 K2
+ 0x14381D1C, // 002B LT R14 R14 K28
0x783A0001, // 002C JMPF R14 #002F
- 0x0004030A, // 002D ADD R1 R1 K10
- 0x00341B0A, // 002E ADD R13 R13 K10
- 0x8C38110B, // 002F GETMET R14 R8 K11
+ 0x0004035D, // 002D ADD R1 R1 K93
+ 0x00341B5D, // 002E ADD R13 R13 K93
+ 0x8C38115C, // 002F GETMET R14 R8 K92
0x5C401A00, // 0030 MOVE R16 R13
- 0x5844000A, // 0031 LDCONST R17 K10
+ 0x5844005D, // 0031 LDCONST R17 K93
0x7C380600, // 0032 CALL R14 3
- 0x8C3C110B, // 0033 GETMET R15 R8 K11
+ 0x8C3C115C, // 0033 GETMET R15 R8 K92
0x5C441A00, // 0034 MOVE R17 R13
- 0x5848000C, // 0035 LDCONST R18 K12
+ 0x5848008C, // 0035 LDCONST R18 K140
0x7C3C0600, // 0036 CALL R15 3
0x783E0001, // 0037 JMPF R15 #003A
0x5C400200, // 0038 MOVE R16 R1
0x70020000, // 0039 JMP #003B
- 0x0040030D, // 003A ADD R16 R1 K13
+ 0x00400364, // 003A ADD R16 R1 K100
0x5C441C00, // 003B MOVE R17 R14
0x74460007, // 003C JMPT R17 #0045
0x5C441E00, // 003D MOVE R17 R15
0x74460005, // 003E JMPT R17 #0045
0x60440001, // 003F GETGBL R17 G1
- 0x5848000E, // 0040 LDCONST R18 K14
+ 0x5848008D, // 0040 LDCONST R18 K141
0x7C440200, // 0041 CALL R17 1
0x50440000, // 0042 LDBOOL R17 0 0
0xA0000000, // 0043 CLOSE R0
0x80042200, // 0044 RET 1 R17
0x50440000, // 0045 LDBOOL R17 0 0
0x783E0008, // 0046 JMPF R15 #0050
- 0x8C48130F, // 0047 GETMET R18 R9 K15
+ 0x8C48138E, // 0047 GETMET R18 R9 K142
0x5C502000, // 0048 MOVE R20 R16
0x7C480400, // 0049 CALL R18 2
0x744A0002, // 004A JMPT R18 #004E
@@ -2597,11 +2401,11 @@ be_local_closure(class_Tasmota_load, /* name */
0x80042400, // 004D RET 1 R18
0x50440200, // 004E LDBOOL R17 1 0
0x70020014, // 004F JMP #0065
- 0x8C48130F, // 0050 GETMET R18 R9 K15
+ 0x8C48138E, // 0050 GETMET R18 R9 K142
0x5C500200, // 0051 MOVE R20 R1
0x7C480400, // 0052 CALL R18 2
0x784A0007, // 0053 JMPF R18 #005C
- 0x8C48130F, // 0054 GETMET R18 R9 K15
+ 0x8C48138E, // 0054 GETMET R18 R9 K142
0x5C502000, // 0055 MOVE R20 R16
0x7C480400, // 0056 CALL R18 2
0x784A0002, // 0057 JMPF R18 #005B
@@ -2609,7 +2413,7 @@ be_local_closure(class_Tasmota_load, /* name */
0x5C4C2000, // 0059 MOVE R19 R16
0x7C480200, // 005A CALL R18 1
0x70020008, // 005B JMP #0065
- 0x8C48130F, // 005C GETMET R18 R9 K15
+ 0x8C48138E, // 005C GETMET R18 R9 K142
0x5C502000, // 005D MOVE R20 R16
0x7C480400, // 005E CALL R18 2
0x784A0001, // 005F JMPF R18 #0062
@@ -2619,13 +2423,13 @@ be_local_closure(class_Tasmota_load, /* name */
0xA0000000, // 0063 CLOSE R0
0x80042400, // 0064 RET 1 R18
0x782E0005, // 0065 JMPF R11 #006C
- 0x00481906, // 0066 ADD R18 R12 K6
- 0x90022012, // 0067 SETMBR R0 K16 R18
+ 0x0048195F, // 0066 ADD R18 R12 K95
+ 0x90028A12, // 0067 SETMBR R0 K69 R18
0x5C480400, // 0068 MOVE R18 R2
- 0x884C0110, // 0069 GETMBR R19 R0 K16
+ 0x884C0145, // 0069 GETMBR R19 R0 K69
0x7C480200, // 006A CALL R18 1
0x70020000, // 006B JMP #006D
- 0x90022111, // 006C SETMBR R0 K16 K17
+ 0x90028B46, // 006C SETMBR R0 K69 K70
0x4C480000, // 006D LDNIL R18
0x78460025, // 006E JMPF R17 #0095
0x5C4C0800, // 006F MOVE R19 R4
@@ -2637,7 +2441,7 @@ be_local_closure(class_Tasmota_load, /* name */
0x78560007, // 0075 JMPF R21 #007E
0x60540001, // 0076 GETGBL R21 G1
0x60580018, // 0077 GETGBL R22 G24
- 0x585C0012, // 0078 LDCONST R23 K18
+ 0x585C008F, // 0078 LDCONST R23 K143
0x5C602000, // 0079 MOVE R24 R16
0x7C580400, // 007A CALL R22 2
0x7C540200, // 007B CALL R21 1
@@ -2648,7 +2452,7 @@ be_local_closure(class_Tasmota_load, /* name */
0x78560007, // 0080 JMPF R21 #0089
0x60540001, // 0081 GETGBL R21 G1
0x60580018, // 0082 GETGBL R22 G24
- 0x585C0013, // 0083 LDCONST R23 K19
+ 0x585C0090, // 0083 LDCONST R23 K144
0x5C602000, // 0084 MOVE R24 R16
0x5C642600, // 0085 MOVE R25 R19
0x7C580600, // 0086 CALL R22 3
@@ -2677,7 +2481,7 @@ be_local_closure(class_Tasmota_load, /* name */
0x7C4C0200, // 009D CALL R19 1
0x782E0002, // 009E JMPF R11 #00A2
0x5C500600, // 009F MOVE R20 R3
- 0x00541906, // 00A0 ADD R21 R12 K6
+ 0x0054195F, // 00A0 ADD R21 R12 K95
0x7C500200, // 00A1 CALL R20 1
0xA0000000, // 00A2 CLOSE R0
0x80042600, // 00A3 RET 1 R19
@@ -2690,50 +2494,38 @@ be_local_closure(class_Tasmota_load, /* name */
/********************************************************************
** Solidified function: urlfetch_cmd
********************************************************************/
-extern const bclass be_class_Tasmota;
be_local_closure(class_Tasmota_urlfetch_cmd, /* name */
be_nested_proto(
10, /* nstack */
5, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Tasmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str(string),
- /* K1 */ be_nested_str(find),
- /* K2 */ be_nested_str(http),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str(resp_cmnd_str),
- /* K5 */ be_nested_str(URL_X20must_X20start_X20with_X20_X27http_X28s_X29_X27),
- /* K6 */ be_nested_str(urlfetch),
- /* K7 */ be_nested_str(resp_cmnd_failed),
- /* K8 */ be_nested_str(tasmota),
- /* K9 */ be_nested_str(resp_cmnd_done),
- }),
+ &be_ktab_class_Tasmota, /* shared constants */
&be_const_str_urlfetch_cmd,
&be_const_str_solidified,
( &(const binstruction[34]) { /* code */
- 0xA4160000, // 0000 IMPORT R5 K0
- 0x8C180B01, // 0001 GETMET R6 R5 K1
+ 0xA416AA00, // 0000 IMPORT R5 K85
+ 0x8C180B0E, // 0001 GETMET R6 R5 K14
0x5C200600, // 0002 MOVE R8 R3
- 0x58240002, // 0003 LDCONST R9 K2
+ 0x58240091, // 0003 LDCONST R9 K145
0x7C180600, // 0004 CALL R6 3
- 0x20180D03, // 0005 NE R6 R6 K3
+ 0x20180D1C, // 0005 NE R6 R6 K28
0x781A0003, // 0006 JMPF R6 #000B
- 0x8C180104, // 0007 GETMET R6 R0 K4
- 0x58200005, // 0008 LDCONST R8 K5
+ 0x8C180192, // 0007 GETMET R6 R0 K146
+ 0x58200093, // 0008 LDCONST R8 K147
0x7C180400, // 0009 CALL R6 2
0x80000C00, // 000A RET 0
0xA802000A, // 000B EXBLK 0 #0017
- 0x8C180106, // 000C GETMET R6 R0 K6
+ 0x8C180194, // 000C GETMET R6 R0 K148
0x5C200600, // 000D MOVE R8 R3
0x7C180400, // 000E CALL R6 2
- 0x141C0D03, // 000F LT R7 R6 K3
+ 0x141C0D1C, // 000F LT R7 R6 K28
0x781E0003, // 0010 JMPF R7 #0015
- 0x8C1C0107, // 0011 GETMET R7 R0 K7
+ 0x8C1C0195, // 0011 GETMET R7 R0 K149
0x7C1C0200, // 0012 CALL R7 1
0xA8040001, // 0013 EXBLK 1 1
0x80000E00, // 0014 RET 0
@@ -2741,13 +2533,13 @@ be_local_closure(class_Tasmota_urlfetch_cmd, /* name */
0x70020006, // 0016 JMP #001E
0xAC180002, // 0017 CATCH R6 0 2
0x70020003, // 0018 JMP #001D
- 0x8C200107, // 0019 GETMET R8 R0 K7
+ 0x8C200195, // 0019 GETMET R8 R0 K149
0x7C200200, // 001A CALL R8 1
0x80001000, // 001B RET 0
0x70020000, // 001C JMP #001E
0xB0080000, // 001D RAISE 2 R0 R0
- 0xB81A1000, // 001E GETNGBL R6 K8
- 0x8C180D09, // 001F GETMET R6 R6 K9
+ 0xB81A0200, // 001E GETNGBL R6 K1
+ 0x8C180D96, // 001F GETMET R6 R6 K150
0x7C180200, // 0020 CALL R6 1
0x80000000, // 0021 RET 0
})
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_trigger_class.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_trigger_class.h
index b917c6e09..7a27c3116 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_trigger_class.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_trigger_class.h
@@ -3,29 +3,35 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'Trigger' ktab size: 8, total: 14 (saved 48 bytes)
+static const bvalue be_ktab_class_Trigger[8] = {
+ /* K0 */ be_nested_str(trig),
+ /* K1 */ be_nested_str(f),
+ /* K2 */ be_nested_str(id),
+ /* K3 */ be_nested_str(o),
+ /* K4 */ be_nested_str(_X3Cinstance_X3A_X20_X25s_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X29),
+ /* K5 */ be_const_int(0),
+ /* K6 */ be_nested_str(time_reached),
+ /* K7 */ be_nested_str(next),
+};
+
extern const bclass be_class_Trigger;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_Trigger;
be_local_closure(class_Trigger_init, /* name */
be_nested_proto(
5, /* nstack */
5, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Trigger,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str(trig),
- /* K1 */ be_nested_str(f),
- /* K2 */ be_nested_str(id),
- /* K3 */ be_nested_str(o),
- }),
+ &be_ktab_class_Trigger, /* shared constants */
&be_const_str_init,
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
@@ -43,41 +49,35 @@ be_local_closure(class_Trigger_init, /* name */
/********************************************************************
** Solidified function: tostring
********************************************************************/
-extern const bclass be_class_Trigger;
be_local_closure(class_Trigger_tostring, /* name */
be_nested_proto(
8, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Trigger,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str(_X3Cinstance_X3A_X20_X25s_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X29),
- /* K1 */ be_nested_str(trig),
- /* K2 */ be_nested_str(f),
- /* K3 */ be_nested_str(id),
- }),
+ &be_ktab_class_Trigger, /* shared constants */
&be_const_str_tostring,
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
0x60040018, // 0000 GETGBL R1 G24
- 0x58080000, // 0001 LDCONST R2 K0
+ 0x58080004, // 0001 LDCONST R2 K4
0x600C0008, // 0002 GETGBL R3 G8
0x60100006, // 0003 GETGBL R4 G6
0x5C140000, // 0004 MOVE R5 R0
0x7C100200, // 0005 CALL R4 1
0x7C0C0200, // 0006 CALL R3 1
0x60100008, // 0007 GETGBL R4 G8
- 0x88140101, // 0008 GETMBR R5 R0 K1
+ 0x88140100, // 0008 GETMBR R5 R0 K0
0x7C100200, // 0009 CALL R4 1
0x60140008, // 000A GETGBL R5 G8
- 0x88180102, // 000B GETMBR R6 R0 K2
+ 0x88180101, // 000B GETMBR R6 R0 K1
0x7C140200, // 000C CALL R5 1
0x60180008, // 000D GETGBL R6 G8
- 0x881C0103, // 000E GETMBR R7 R0 K3
+ 0x881C0102, // 000E GETMBR R7 R0 K2
0x7C180200, // 000F CALL R6 1
0x7C040A00, // 0010 CALL R1 5
0x80040200, // 0011 RET 1 R1
@@ -90,34 +90,28 @@ be_local_closure(class_Trigger_tostring, /* name */
/********************************************************************
** Solidified function: time_reached
********************************************************************/
-extern const bclass be_class_Trigger;
be_local_closure(class_Trigger_time_reached, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Trigger,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str(o),
- /* K1 */ be_nested_str(trig),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str(time_reached),
- }),
+ &be_ktab_class_Trigger, /* shared constants */
&be_const_str_time_reached,
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040103, // 0000 GETMBR R1 R0 K3
0x78060007, // 0001 JMPF R1 #000A
- 0x88040101, // 0002 GETMBR R1 R0 K1
- 0x24040302, // 0003 GT R1 R1 K2
+ 0x88040100, // 0002 GETMBR R1 R0 K0
+ 0x24040305, // 0003 GT R1 R1 K5
0x78060004, // 0004 JMPF R1 #000A
- 0x88040100, // 0005 GETMBR R1 R0 K0
- 0x8C040303, // 0006 GETMET R1 R1 K3
- 0x880C0101, // 0007 GETMBR R3 R0 K1
+ 0x88040103, // 0005 GETMBR R1 R0 K3
+ 0x8C040306, // 0006 GETMET R1 R1 K6
+ 0x880C0100, // 0007 GETMBR R3 R0 K0
0x7C040400, // 0008 CALL R1 2
0x80040200, // 0009 RET 1 R1
0x50040000, // 000A LDBOOL R1 0 0
@@ -131,28 +125,24 @@ be_local_closure(class_Trigger_time_reached, /* name */
/********************************************************************
** Solidified function: next
********************************************************************/
-extern const bclass be_class_Trigger;
be_local_closure(class_Trigger_next, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_Trigger,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str(o),
- /* K1 */ be_nested_str(next),
- }),
+ &be_ktab_class_Trigger, /* shared constants */
&be_const_str_next,
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040103, // 0000 GETMBR R1 R0 K3
0x78060003, // 0001 JMPF R1 #0006
- 0x88040100, // 0002 GETMBR R1 R0 K0
- 0x8C040301, // 0003 GETMET R1 R1 K1
+ 0x88040103, // 0002 GETMBR R1 R0 K3
+ 0x8C040307, // 0003 GETMET R1 R1 K7
0x7C040200, // 0004 CALL R1 1
0x80040200, // 0005 RET 1 R1
0x80000000, // 0006 RET 0
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_uuid.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_uuid.h
index 32ba659c0..11ad36ff4 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_uuid.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_uuid.h
@@ -15,7 +15,7 @@ be_local_closure(_anonymous_, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str(math),
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_webserver_async.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_webserver_async.h
new file mode 100644
index 000000000..9ca5531f9
--- /dev/null
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_webserver_async.h
@@ -0,0 +1,1756 @@
+/* Solidification of webserver_async.h */
+/********************************************************************\
+* Generated code, don't edit *
+\********************************************************************/
+#include "be_constobj.h"
+// compact class 'webserver_async_cnx' ktab size: 76, total: 141 (saved 520 bytes)
+static const bvalue be_ktab_class_webserver_async_cnx[76] = {
+ /* K0 */ be_nested_str_weak(server),
+ /* K1 */ be_nested_str_weak(dispatch),
+ /* K2 */ be_nested_str_weak(req_uri),
+ /* K3 */ be_nested_str_weak(req_verb),
+ /* K4 */ be_nested_str_weak(string),
+ /* K5 */ be_nested_str_weak(fromstring),
+ /* K6 */ be_nested_str_weak(chunked),
+ /* K7 */ be_nested_str_weak(p1),
+ /* K8 */ be_nested_str_weak(clear),
+ /* K9 */ be_nested_str_weak(append),
+ /* K10 */ be_nested_str_weak(_X25X_X0D_X0A),
+ /* K11 */ be_nested_str_weak(_X0D_X0A),
+ /* K12 */ be_nested_str_weak(_write),
+ /* K13 */ be_const_int(0),
+ /* K14 */ be_nested_str_weak(buf_out),
+ /* K15 */ be_nested_str_weak(resize),
+ /* K16 */ be_nested_str_weak(setbytes),
+ /* K17 */ be_nested_str_weak(_send),
+ /* K18 */ be_nested_str_weak(HTTP_X2F1_X2E1_X20_X25s_X20_X25s_X0D_X0A),
+ /* K19 */ be_nested_str_weak(CODE_TO_STRING),
+ /* K20 */ be_nested_str_weak(find),
+ /* K21 */ be_nested_str_weak(UNKNOWN),
+ /* K22 */ be_nested_str_weak(send_header),
+ /* K23 */ be_nested_str_weak(Content_X2DType),
+ /* K24 */ be_nested_str_weak(text_X2Fhtml),
+ /* K25 */ be_nested_str_weak(Accept_X2DRanges),
+ /* K26 */ be_nested_str_weak(none),
+ /* K27 */ be_nested_str_weak(Transfer_X2DEncoding),
+ /* K28 */ be_nested_str_weak(cors),
+ /* K29 */ be_nested_str_weak(Access_X2DControl_X2DAllow_X2DOrigin),
+ /* K30 */ be_nested_str_weak(_X2A),
+ /* K31 */ be_nested_str_weak(Access_X2DControl_X2DAllow_X2DMethods),
+ /* K32 */ be_nested_str_weak(Access_X2DControl_X2DAllow_X2DHeaders),
+ /* K33 */ be_nested_str_weak(Connection),
+ /* K34 */ be_nested_str_weak(close),
+ /* K35 */ be_nested_str_weak(resp_headers),
+ /* K36 */ be_nested_str_weak(write_raw),
+ /* K37 */ be_nested_str_weak(write),
+ /* K38 */ be_nested_str_weak(cnx),
+ /* K39 */ be_nested_str_weak(buf_in),
+ /* K40 */ be_nested_str_weak(),
+ /* K41 */ be_nested_str_weak(buf_in_offset),
+ /* K42 */ be_nested_str_weak(phase),
+ /* K43 */ be_nested_str_weak(close_after_send),
+ /* K44 */ be_nested_str_weak(fastloop_cb),
+ /* K45 */ be_nested_str_weak(tasmota),
+ /* K46 */ be_nested_str_weak(add_fast_loop),
+ /* K47 */ be_nested_str_weak(Host),
+ /* K48 */ be_nested_str_weak(header_host),
+ /* K49 */ be_nested_str_weak(_X25s_X3A_X20_X25s_X0D_X0A_X25s),
+ /* K50 */ be_nested_str_weak(_X25s_X25s_X3A_X20_X25s_X0D_X0A),
+ /* K51 */ be_nested_str_weak(listening),
+ /* K52 */ be_nested_str_weak(connected),
+ /* K53 */ be_nested_str_weak(parse_http_req_line),
+ /* K54 */ be_const_int(1),
+ /* K55 */ be_nested_str_weak(parse_http_headers),
+ /* K56 */ be_const_int(2),
+ /* K57 */ be_nested_str_weak(parse_http_payload),
+ /* K58 */ be_nested_str_weak(remove_fast_loop),
+ /* K59 */ be_nested_str_weak(available),
+ /* K60 */ be_nested_str_weak(read),
+ /* K61 */ be_nested_str_weak(parse),
+ /* K62 */ be_nested_str_weak(global),
+ /* K63 */ be_nested_str_weak(_re_http_srv_header),
+ /* K64 */ be_nested_str_weak(match2),
+ /* K65 */ be_nested_str_weak(event_http_header),
+ /* K66 */ be_nested_str_weak(_re_http_srv_body),
+ /* K67 */ be_const_int(2147483647),
+ /* K68 */ be_nested_str_weak(log),
+ /* K69 */ be_nested_str_weak(WEB_X3A_X20error_X20header_X20is_X20bigger_X20than_X201KB),
+ /* K70 */ be_nested_str_weak(_re_http_srv),
+ /* K71 */ be_nested_str_weak(req_version),
+ /* K72 */ be_const_int(3),
+ /* K73 */ be_nested_str_weak(loglevel),
+ /* K74 */ be_nested_str_weak(WEB_X3A_X20HTTP_X20verb_X3A_X20_X25s_X20URI_X3A_X20_X27_X25s_X27_X20Version_X3A_X25s),
+ /* K75 */ be_nested_str_weak(WEB_X3A_X20error_X20invalid_X20request),
+};
+
+
+extern const bclass be_class_webserver_async_cnx;
+
+/********************************************************************
+** Solidified function: parse_http_payload
+********************************************************************/
+be_local_closure(class_webserver_async_cnx_parse_http_payload, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async_cnx, /* shared constants */
+ be_str_weak(parse_http_payload),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 7]) { /* code */
+ 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x5C0C0000, // 0002 MOVE R3 R0
+ 0x88100102, // 0003 GETMBR R4 R0 K2
+ 0x88140103, // 0004 GETMBR R5 R0 K3
+ 0x7C040800, // 0005 CALL R1 4
+ 0x80000000, // 0006 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: write
+********************************************************************/
+be_local_closure(class_webserver_async_cnx_write, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async_cnx, /* shared constants */
+ be_str_weak(write),
+ &be_const_str_solidified,
+ ( &(const binstruction[39]) { /* code */
+ 0x60080004, // 0000 GETGBL R2 G4
+ 0x5C0C0200, // 0001 MOVE R3 R1
+ 0x7C080200, // 0002 CALL R2 1
+ 0x1C080504, // 0003 EQ R2 R2 K4
+ 0x780A0005, // 0004 JMPF R2 #000B
+ 0x60080015, // 0005 GETGBL R2 G21
+ 0x7C080000, // 0006 CALL R2 0
+ 0x8C080505, // 0007 GETMET R2 R2 K5
+ 0x5C100200, // 0008 MOVE R4 R1
+ 0x7C080400, // 0009 CALL R2 2
+ 0x5C040400, // 000A MOVE R1 R2
+ 0x88080106, // 000B GETMBR R2 R0 K6
+ 0x780A0015, // 000C JMPF R2 #0023
+ 0x88080100, // 000D GETMBR R2 R0 K0
+ 0x88080507, // 000E GETMBR R2 R2 K7
+ 0x8C0C0508, // 000F GETMET R3 R2 K8
+ 0x7C0C0200, // 0010 CALL R3 1
+ 0x8C0C0509, // 0011 GETMET R3 R2 K9
+ 0x60140018, // 0012 GETGBL R5 G24
+ 0x5818000A, // 0013 LDCONST R6 K10
+ 0x601C000C, // 0014 GETGBL R7 G12
+ 0x5C200200, // 0015 MOVE R8 R1
+ 0x7C1C0200, // 0016 CALL R7 1
+ 0x7C140400, // 0017 CALL R5 2
+ 0x7C0C0400, // 0018 CALL R3 2
+ 0x8C0C0509, // 0019 GETMET R3 R2 K9
+ 0x5C140200, // 001A MOVE R5 R1
+ 0x7C0C0400, // 001B CALL R3 2
+ 0x8C0C0509, // 001C GETMET R3 R2 K9
+ 0x5814000B, // 001D LDCONST R5 K11
+ 0x7C0C0400, // 001E CALL R3 2
+ 0x8C0C010C, // 001F GETMET R3 R0 K12
+ 0x5C140400, // 0020 MOVE R5 R2
+ 0x7C0C0400, // 0021 CALL R3 2
+ 0x70020002, // 0022 JMP #0026
+ 0x8C08010C, // 0023 GETMET R2 R0 K12
+ 0x5C100200, // 0024 MOVE R4 R1
+ 0x7C080400, // 0025 CALL R2 2
+ 0x80000000, // 0026 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: _write
+********************************************************************/
+be_local_closure(class_webserver_async_cnx__write, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async_cnx, /* shared constants */
+ be_str_weak(_write),
+ &be_const_str_solidified,
+ ( &(const binstruction[20]) { /* code */
+ 0x6008000C, // 0000 GETGBL R2 G12
+ 0x5C0C0200, // 0001 MOVE R3 R1
+ 0x7C080200, // 0002 CALL R2 1
+ 0x1C0C050D, // 0003 EQ R3 R2 K13
+ 0x780E0000, // 0004 JMPF R3 #0006
+ 0x80000600, // 0005 RET 0
+ 0x880C010E, // 0006 GETMBR R3 R0 K14
+ 0x6010000C, // 0007 GETGBL R4 G12
+ 0x5C140600, // 0008 MOVE R5 R3
+ 0x7C100200, // 0009 CALL R4 1
+ 0x8C14070F, // 000A GETMET R5 R3 K15
+ 0x001C0802, // 000B ADD R7 R4 R2
+ 0x7C140400, // 000C CALL R5 2
+ 0x8C140710, // 000D GETMET R5 R3 K16
+ 0x5C1C0800, // 000E MOVE R7 R4
+ 0x5C200200, // 000F MOVE R8 R1
+ 0x7C140600, // 0010 CALL R5 3
+ 0x8C140111, // 0011 GETMET R5 R0 K17
+ 0x7C140200, // 0012 CALL R5 1
+ 0x80000000, // 0013 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: send
+********************************************************************/
+be_local_closure(class_webserver_async_cnx_send, /* name */
+ be_nested_proto(
+ 11, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async_cnx, /* shared constants */
+ be_str_weak(send),
+ &be_const_str_solidified,
+ ( &(const binstruction[59]) { /* code */
+ 0x60100018, // 0000 GETGBL R4 G24
+ 0x58140012, // 0001 LDCONST R5 K18
+ 0x5C180200, // 0002 MOVE R6 R1
+ 0x881C0113, // 0003 GETMBR R7 R0 K19
+ 0x8C1C0F14, // 0004 GETMET R7 R7 K20
+ 0x5C240200, // 0005 MOVE R9 R1
+ 0x58280015, // 0006 LDCONST R10 K21
+ 0x7C1C0600, // 0007 CALL R7 3
+ 0x7C100600, // 0008 CALL R4 3
+ 0x8C140116, // 0009 GETMET R5 R0 K22
+ 0x581C0017, // 000A LDCONST R7 K23
+ 0x780A0001, // 000B JMPF R2 #000E
+ 0x5C200400, // 000C MOVE R8 R2
+ 0x70020000, // 000D JMP #000F
+ 0x58200018, // 000E LDCONST R8 K24
+ 0x50240200, // 000F LDBOOL R9 1 0
+ 0x7C140800, // 0010 CALL R5 4
+ 0x8C140116, // 0011 GETMET R5 R0 K22
+ 0x581C0019, // 0012 LDCONST R7 K25
+ 0x5820001A, // 0013 LDCONST R8 K26
+ 0x7C140600, // 0014 CALL R5 3
+ 0x88140106, // 0015 GETMBR R5 R0 K6
+ 0x78160003, // 0016 JMPF R5 #001B
+ 0x8C140116, // 0017 GETMET R5 R0 K22
+ 0x581C001B, // 0018 LDCONST R7 K27
+ 0x58200006, // 0019 LDCONST R8 K6
+ 0x7C140600, // 001A CALL R5 3
+ 0x88140100, // 001B GETMBR R5 R0 K0
+ 0x88140B1C, // 001C GETMBR R5 R5 K28
+ 0x7816000B, // 001D JMPF R5 #002A
+ 0x8C140116, // 001E GETMET R5 R0 K22
+ 0x581C001D, // 001F LDCONST R7 K29
+ 0x5820001E, // 0020 LDCONST R8 K30
+ 0x7C140600, // 0021 CALL R5 3
+ 0x8C140116, // 0022 GETMET R5 R0 K22
+ 0x581C001F, // 0023 LDCONST R7 K31
+ 0x5820001E, // 0024 LDCONST R8 K30
+ 0x7C140600, // 0025 CALL R5 3
+ 0x8C140116, // 0026 GETMET R5 R0 K22
+ 0x581C0020, // 0027 LDCONST R7 K32
+ 0x5820001E, // 0028 LDCONST R8 K30
+ 0x7C140600, // 0029 CALL R5 3
+ 0x8C140116, // 002A GETMET R5 R0 K22
+ 0x581C0021, // 002B LDCONST R7 K33
+ 0x58200022, // 002C LDCONST R8 K34
+ 0x7C140600, // 002D CALL R5 3
+ 0x88140123, // 002E GETMBR R5 R0 K35
+ 0x00100805, // 002F ADD R4 R4 R5
+ 0x0010090B, // 0030 ADD R4 R4 K11
+ 0x4C140000, // 0031 LDNIL R5
+ 0x90024605, // 0032 SETMBR R0 K35 R5
+ 0x8C140124, // 0033 GETMET R5 R0 K36
+ 0x5C1C0800, // 0034 MOVE R7 R4
+ 0x7C140400, // 0035 CALL R5 2
+ 0x780E0002, // 0036 JMPF R3 #003A
+ 0x8C140125, // 0037 GETMET R5 R0 K37
+ 0x5C1C0600, // 0038 MOVE R7 R3
+ 0x7C140400, // 0039 CALL R5 2
+ 0x80000000, // 003A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_webserver_async_cnx_init, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 1]) {
+ be_nested_proto(
+ 2, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(loop),
+ }),
+ be_str_weak(_anonymous_),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x7C000200, // 0002 CALL R0 1
+ 0x80000000, // 0003 RET 0
+ })
+ ),
+ }),
+ 1, /* has constants */
+ &be_ktab_class_webserver_async_cnx, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[21]) { /* code */
+ 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90024C02, // 0001 SETMBR R0 K38 R2
+ 0x90024F28, // 0002 SETMBR R0 K39 K40
+ 0x9002530D, // 0003 SETMBR R0 K41 K13
+ 0x600C0015, // 0004 GETGBL R3 G21
+ 0x7C0C0000, // 0005 CALL R3 0
+ 0x90021C03, // 0006 SETMBR R0 K14 R3
+ 0x9002550D, // 0007 SETMBR R0 K42 K13
+ 0x500C0000, // 0008 LDBOOL R3 0 0
+ 0x90025603, // 0009 SETMBR R0 K43 R3
+ 0x90024728, // 000A SETMBR R0 K35 K40
+ 0x500C0200, // 000B LDBOOL R3 1 0
+ 0x90020C03, // 000C SETMBR R0 K6 R3
+ 0x840C0000, // 000D CLOSURE R3 P0
+ 0x90025803, // 000E SETMBR R0 K44 R3
+ 0xB80E5A00, // 000F GETNGBL R3 K45
+ 0x8C0C072E, // 0010 GETMET R3 R3 K46
+ 0x8814012C, // 0011 GETMBR R5 R0 K44
+ 0x7C0C0400, // 0012 CALL R3 2
+ 0xA0000000, // 0013 CLOSE R0
+ 0x80000000, // 0014 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: event_http_header
+********************************************************************/
+be_local_closure(class_webserver_async_cnx_event_http_header, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async_cnx, /* shared constants */
+ be_str_weak(event_http_header),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x1C0C032F, // 0000 EQ R3 R1 K47
+ 0x780E0000, // 0001 JMPF R3 #0003
+ 0x90026002, // 0002 SETMBR R0 K48 R2
+ 0x80000000, // 0003 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: close
+********************************************************************/
+be_local_closure(class_webserver_async_cnx_close, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async_cnx, /* shared constants */
+ be_str_weak(close),
+ &be_const_str_solidified,
+ ( &(const binstruction[10]) { /* code */
+ 0x88040126, // 0000 GETMBR R1 R0 K38
+ 0x4C080000, // 0001 LDNIL R2
+ 0x20040202, // 0002 NE R1 R1 R2
+ 0x78060002, // 0003 JMPF R1 #0007
+ 0x88040126, // 0004 GETMBR R1 R0 K38
+ 0x8C040322, // 0005 GETMET R1 R1 K34
+ 0x7C040200, // 0006 CALL R1 1
+ 0x4C040000, // 0007 LDNIL R1
+ 0x90024C01, // 0008 SETMBR R0 K38 R1
+ 0x80000000, // 0009 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: send_header
+********************************************************************/
+be_local_closure(class_webserver_async_cnx_send_header, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async_cnx, /* shared constants */
+ be_str_weak(send_header),
+ &be_const_str_solidified,
+ ( &(const binstruction[17]) { /* code */
+ 0x780E0007, // 0000 JMPF R3 #0009
+ 0x60100018, // 0001 GETGBL R4 G24
+ 0x58140031, // 0002 LDCONST R5 K49
+ 0x5C180200, // 0003 MOVE R6 R1
+ 0x5C1C0400, // 0004 MOVE R7 R2
+ 0x88200123, // 0005 GETMBR R8 R0 K35
+ 0x7C100800, // 0006 CALL R4 4
+ 0x90024604, // 0007 SETMBR R0 K35 R4
+ 0x70020006, // 0008 JMP #0010
+ 0x60100018, // 0009 GETGBL R4 G24
+ 0x58140032, // 000A LDCONST R5 K50
+ 0x88180123, // 000B GETMBR R6 R0 K35
+ 0x5C1C0200, // 000C MOVE R7 R1
+ 0x5C200400, // 000D MOVE R8 R2
+ 0x7C100800, // 000E CALL R4 4
+ 0x90024604, // 000F SETMBR R0 K35 R4
+ 0x80000000, // 0010 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: _send
+********************************************************************/
+be_local_closure(class_webserver_async_cnx__send, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async_cnx, /* shared constants */
+ be_str_weak(_send),
+ &be_const_str_solidified,
+ ( &(const binstruction[47]) { /* code */
+ 0x88040126, // 0000 GETMBR R1 R0 K38
+ 0x4C080000, // 0001 LDNIL R2
+ 0x1C080202, // 0002 EQ R2 R1 R2
+ 0x780A0000, // 0003 JMPF R2 #0005
+ 0x80000400, // 0004 RET 0
+ 0x8808010E, // 0005 GETMBR R2 R0 K14
+ 0x600C000C, // 0006 GETGBL R3 G12
+ 0x5C100400, // 0007 MOVE R4 R2
+ 0x7C0C0200, // 0008 CALL R3 1
+ 0x240C070D, // 0009 GT R3 R3 K13
+ 0x780E001E, // 000A JMPF R3 #002A
+ 0x8C0C0333, // 000B GETMET R3 R1 K51
+ 0x7C0C0200, // 000C CALL R3 1
+ 0x780E001A, // 000D JMPF R3 #0029
+ 0x8C0C0325, // 000E GETMET R3 R1 K37
+ 0x5C140400, // 000F MOVE R5 R2
+ 0x7C0C0400, // 0010 CALL R3 2
+ 0x2410070D, // 0011 GT R4 R3 K13
+ 0x78120015, // 0012 JMPF R4 #0029
+ 0x6010000C, // 0013 GETGBL R4 G12
+ 0x5C140400, // 0014 MOVE R5 R2
+ 0x7C100200, // 0015 CALL R4 1
+ 0x28100604, // 0016 GE R4 R3 R4
+ 0x78120003, // 0017 JMPF R4 #001C
+ 0x8810010E, // 0018 GETMBR R4 R0 K14
+ 0x8C100908, // 0019 GETMET R4 R4 K8
+ 0x7C100200, // 001A CALL R4 1
+ 0x7002000C, // 001B JMP #0029
+ 0x8810010E, // 001C GETMBR R4 R0 K14
+ 0x8C100910, // 001D GETMET R4 R4 K16
+ 0x5818000D, // 001E LDCONST R6 K13
+ 0x5C1C0400, // 001F MOVE R7 R2
+ 0x5C200600, // 0020 MOVE R8 R3
+ 0x7C100800, // 0021 CALL R4 4
+ 0x8810010E, // 0022 GETMBR R4 R0 K14
+ 0x8C10090F, // 0023 GETMET R4 R4 K15
+ 0x6018000C, // 0024 GETGBL R6 G12
+ 0x5C1C0400, // 0025 MOVE R7 R2
+ 0x7C180200, // 0026 CALL R6 1
+ 0x04180C03, // 0027 SUB R6 R6 R3
+ 0x7C100400, // 0028 CALL R4 2
+ 0x70020003, // 0029 JMP #002E
+ 0x880C012B, // 002A GETMBR R3 R0 K43
+ 0x780E0001, // 002B JMPF R3 #002E
+ 0x8C0C0122, // 002C GETMET R3 R0 K34
+ 0x7C0C0200, // 002D CALL R3 1
+ 0x80000000, // 002E RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: connected
+********************************************************************/
+be_local_closure(class_webserver_async_cnx_connected, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async_cnx, /* shared constants */
+ be_str_weak(connected),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 8]) { /* code */
+ 0x88040126, // 0000 GETMBR R1 R0 K38
+ 0x78060003, // 0001 JMPF R1 #0006
+ 0x88040126, // 0002 GETMBR R1 R0 K38
+ 0x8C040334, // 0003 GETMET R1 R1 K52
+ 0x7C040200, // 0004 CALL R1 1
+ 0x70020000, // 0005 JMP #0007
+ 0x50040000, // 0006 LDBOOL R1 0 0
+ 0x80040200, // 0007 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse
+********************************************************************/
+be_local_closure(class_webserver_async_cnx_parse, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async_cnx, /* shared constants */
+ be_str_weak(parse),
+ &be_const_str_solidified,
+ ( &(const binstruction[18]) { /* code */
+ 0x8804012A, // 0000 GETMBR R1 R0 K42
+ 0x1C04030D, // 0001 EQ R1 R1 K13
+ 0x78060002, // 0002 JMPF R1 #0006
+ 0x8C040135, // 0003 GETMET R1 R0 K53
+ 0x7C040200, // 0004 CALL R1 1
+ 0x7002000A, // 0005 JMP #0011
+ 0x8804012A, // 0006 GETMBR R1 R0 K42
+ 0x1C040336, // 0007 EQ R1 R1 K54
+ 0x78060002, // 0008 JMPF R1 #000C
+ 0x8C040137, // 0009 GETMET R1 R0 K55
+ 0x7C040200, // 000A CALL R1 1
+ 0x70020004, // 000B JMP #0011
+ 0x8804012A, // 000C GETMBR R1 R0 K42
+ 0x1C040338, // 000D EQ R1 R1 K56
+ 0x78060001, // 000E JMPF R1 #0011
+ 0x8C040139, // 000F GETMET R1 R0 K57
+ 0x7C040200, // 0010 CALL R1 1
+ 0x80000000, // 0011 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: loop
+********************************************************************/
+be_local_closure(class_webserver_async_cnx_loop, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async_cnx, /* shared constants */
+ be_str_weak(loop),
+ &be_const_str_solidified,
+ ( &(const binstruction[36]) { /* code */
+ 0x88040126, // 0000 GETMBR R1 R0 K38
+ 0x4C080000, // 0001 LDNIL R2
+ 0x1C040202, // 0002 EQ R1 R1 R2
+ 0x78060006, // 0003 JMPF R1 #000B
+ 0xB8065A00, // 0004 GETNGBL R1 K45
+ 0x8C04033A, // 0005 GETMET R1 R1 K58
+ 0x880C012C, // 0006 GETMBR R3 R0 K44
+ 0x7C040400, // 0007 CALL R1 2
+ 0x4C040000, // 0008 LDNIL R1
+ 0x90025801, // 0009 SETMBR R0 K44 R1
+ 0x80000200, // 000A RET 0
+ 0x8C040111, // 000B GETMET R1 R0 K17
+ 0x7C040200, // 000C CALL R1 1
+ 0x88040126, // 000D GETMBR R1 R0 K38
+ 0x4C080000, // 000E LDNIL R2
+ 0x1C080202, // 000F EQ R2 R1 R2
+ 0x780A0000, // 0010 JMPF R2 #0012
+ 0x80000400, // 0011 RET 0
+ 0x8C08033B, // 0012 GETMET R2 R1 K59
+ 0x7C080200, // 0013 CALL R2 1
+ 0x2408050D, // 0014 GT R2 R2 K13
+ 0x780A0008, // 0015 JMPF R2 #001F
+ 0x8C08033C, // 0016 GETMET R2 R1 K60
+ 0x7C080200, // 0017 CALL R2 1
+ 0x880C0127, // 0018 GETMBR R3 R0 K39
+ 0x740E0001, // 0019 JMPT R3 #001C
+ 0x90024E02, // 001A SETMBR R0 K39 R2
+ 0x70020002, // 001B JMP #001F
+ 0x880C0127, // 001C GETMBR R3 R0 K39
+ 0x000C0602, // 001D ADD R3 R3 R2
+ 0x90024E03, // 001E SETMBR R0 K39 R3
+ 0x88080127, // 001F GETMBR R2 R0 K39
+ 0x780A0001, // 0020 JMPF R2 #0023
+ 0x8C08013D, // 0021 GETMET R2 R0 K61
+ 0x7C080200, // 0022 CALL R2 1
+ 0x80000000, // 0023 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: buf_out_empty
+********************************************************************/
+be_local_closure(class_webserver_async_cnx_buf_out_empty, /* name */
+ be_nested_proto(
+ 3, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async_cnx, /* shared constants */
+ be_str_weak(buf_out_empty),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x6004000C, // 0000 GETGBL R1 G12
+ 0x8808010E, // 0001 GETMBR R2 R0 K14
+ 0x7C040200, // 0002 CALL R1 1
+ 0x1C04030D, // 0003 EQ R1 R1 K13
+ 0x80040200, // 0004 RET 1 R1
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_chunked
+********************************************************************/
+be_local_closure(class_webserver_async_cnx_set_chunked, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async_cnx, /* shared constants */
+ be_str_weak(set_chunked),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x60080017, // 0000 GETGBL R2 G23
+ 0x5C0C0200, // 0001 MOVE R3 R1
+ 0x7C080200, // 0002 CALL R2 1
+ 0x90020C02, // 0003 SETMBR R0 K6 R2
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_http_headers
+********************************************************************/
+be_local_closure(class_webserver_async_cnx_parse_http_headers, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async_cnx, /* shared constants */
+ be_str_weak(parse_http_headers),
+ &be_const_str_solidified,
+ ( &(const binstruction[52]) { /* code */
+ 0x50040200, // 0000 LDBOOL R1 1 0
+ 0x78060030, // 0001 JMPF R1 #0033
+ 0xB8067C00, // 0002 GETNGBL R1 K62
+ 0x8804033F, // 0003 GETMBR R1 R1 K63
+ 0x8C040340, // 0004 GETMET R1 R1 K64
+ 0x880C0127, // 0005 GETMBR R3 R0 K39
+ 0x88100129, // 0006 GETMBR R4 R0 K41
+ 0x7C040600, // 0007 CALL R1 3
+ 0x78060008, // 0008 JMPF R1 #0012
+ 0x8C080141, // 0009 GETMET R2 R0 K65
+ 0x94100336, // 000A GETIDX R4 R1 K54
+ 0x94140338, // 000B GETIDX R5 R1 K56
+ 0x7C080600, // 000C CALL R2 3
+ 0x88080129, // 000D GETMBR R2 R0 K41
+ 0x940C030D, // 000E GETIDX R3 R1 K13
+ 0x00080403, // 000F ADD R2 R2 R3
+ 0x90025202, // 0010 SETMBR R0 K41 R2
+ 0x7002001F, // 0011 JMP #0032
+ 0xB80A7C00, // 0012 GETNGBL R2 K62
+ 0x88080542, // 0013 GETMBR R2 R2 K66
+ 0x8C080540, // 0014 GETMET R2 R2 K64
+ 0x88100127, // 0015 GETMBR R4 R0 K39
+ 0x88140129, // 0016 GETMBR R5 R0 K41
+ 0x7C080600, // 0017 CALL R2 3
+ 0x780A000A, // 0018 JMPF R2 #0024
+ 0x880C0129, // 0019 GETMBR R3 R0 K41
+ 0x9410050D, // 001A GETIDX R4 R2 K13
+ 0x000C0604, // 001B ADD R3 R3 R4
+ 0x400C0743, // 001C CONNECT R3 R3 K67
+ 0x88100127, // 001D GETMBR R4 R0 K39
+ 0x940C0803, // 001E GETIDX R3 R4 R3
+ 0x90024E03, // 001F SETMBR R0 K39 R3
+ 0x9002530D, // 0020 SETMBR R0 K41 K13
+ 0x90025538, // 0021 SETMBR R0 K42 K56
+ 0x8C0C0139, // 0022 GETMET R3 R0 K57
+ 0x7C0C0200, // 0023 CALL R3 1
+ 0x600C000C, // 0024 GETGBL R3 G12
+ 0x88100127, // 0025 GETMBR R4 R0 K39
+ 0x7C0C0200, // 0026 CALL R3 1
+ 0x541203FF, // 0027 LDINT R4 1024
+ 0x240C0604, // 0028 GT R3 R3 R4
+ 0x780E0006, // 0029 JMPF R3 #0031
+ 0xB80E8800, // 002A GETNGBL R3 K68
+ 0x58100045, // 002B LDCONST R4 K69
+ 0x54160003, // 002C LDINT R5 4
+ 0x7C0C0400, // 002D CALL R3 2
+ 0x8C0C0122, // 002E GETMET R3 R0 K34
+ 0x7C0C0200, // 002F CALL R3 1
+ 0x90024F28, // 0030 SETMBR R0 K39 K40
+ 0x80000600, // 0031 RET 0
+ 0x7001FFCC, // 0032 JMP #0000
+ 0x80000000, // 0033 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: write_raw
+********************************************************************/
+be_local_closure(class_webserver_async_cnx_write_raw, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async_cnx, /* shared constants */
+ be_str_weak(write_raw),
+ &be_const_str_solidified,
+ ( &(const binstruction[21]) { /* code */
+ 0x6008000C, // 0000 GETGBL R2 G12
+ 0x5C0C0200, // 0001 MOVE R3 R1
+ 0x7C080200, // 0002 CALL R2 1
+ 0x1C08050D, // 0003 EQ R2 R2 K13
+ 0x780A0000, // 0004 JMPF R2 #0006
+ 0x80000400, // 0005 RET 0
+ 0x60080004, // 0006 GETGBL R2 G4
+ 0x5C0C0200, // 0007 MOVE R3 R1
+ 0x7C080200, // 0008 CALL R2 1
+ 0x1C080504, // 0009 EQ R2 R2 K4
+ 0x780A0005, // 000A JMPF R2 #0011
+ 0x60080015, // 000B GETGBL R2 G21
+ 0x7C080000, // 000C CALL R2 0
+ 0x8C080505, // 000D GETMET R2 R2 K5
+ 0x5C100200, // 000E MOVE R4 R1
+ 0x7C080400, // 000F CALL R2 2
+ 0x5C040400, // 0010 MOVE R1 R2
+ 0x8C08010C, // 0011 GETMET R2 R0 K12
+ 0x5C100200, // 0012 MOVE R4 R1
+ 0x7C080400, // 0013 CALL R2 2
+ 0x80000000, // 0014 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: content_stop
+********************************************************************/
+be_local_closure(class_webserver_async_cnx_content_stop, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async_cnx, /* shared constants */
+ be_str_weak(content_stop),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 6]) { /* code */
+ 0x8C040125, // 0000 GETMET R1 R0 K37
+ 0x580C0028, // 0001 LDCONST R3 K40
+ 0x7C040400, // 0002 CALL R1 2
+ 0x50040200, // 0003 LDBOOL R1 1 0
+ 0x90025601, // 0004 SETMBR R0 K43 R1
+ 0x80000000, // 0005 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: parse_http_req_line
+********************************************************************/
+be_local_closure(class_webserver_async_cnx_parse_http_req_line, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async_cnx, /* shared constants */
+ be_str_weak(parse_http_req_line),
+ &be_const_str_solidified,
+ ( &(const binstruction[50]) { /* code */
+ 0xB8067C00, // 0000 GETNGBL R1 K62
+ 0x88040346, // 0001 GETMBR R1 R1 K70
+ 0x8C040340, // 0002 GETMET R1 R1 K64
+ 0x880C0127, // 0003 GETMBR R3 R0 K39
+ 0x88100129, // 0004 GETMBR R4 R0 K41
+ 0x7C040600, // 0005 CALL R1 3
+ 0x7806001C, // 0006 JMPF R1 #0024
+ 0x9408030D, // 0007 GETIDX R2 R1 K13
+ 0x940C0336, // 0008 GETIDX R3 R1 K54
+ 0x90020603, // 0009 SETMBR R0 K3 R3
+ 0x940C0338, // 000A GETIDX R3 R1 K56
+ 0x90020403, // 000B SETMBR R0 K2 R3
+ 0x940C0348, // 000C GETIDX R3 R1 K72
+ 0x90028E03, // 000D SETMBR R0 K71 R3
+ 0x90025536, // 000E SETMBR R0 K42 K54
+ 0x400C0543, // 000F CONNECT R3 R2 K67
+ 0x88100127, // 0010 GETMBR R4 R0 K39
+ 0x940C0803, // 0011 GETIDX R3 R4 R3
+ 0x90024E03, // 0012 SETMBR R0 K39 R3
+ 0xB80E5A00, // 0013 GETNGBL R3 K45
+ 0x8C0C0749, // 0014 GETMET R3 R3 K73
+ 0x54160003, // 0015 LDINT R5 4
+ 0x7C0C0400, // 0016 CALL R3 2
+ 0x780E0008, // 0017 JMPF R3 #0021
+ 0xB80E8800, // 0018 GETNGBL R3 K68
+ 0x60100018, // 0019 GETGBL R4 G24
+ 0x5814004A, // 001A LDCONST R5 K74
+ 0x88180103, // 001B GETMBR R6 R0 K3
+ 0x881C0102, // 001C GETMBR R7 R0 K2
+ 0x88200147, // 001D GETMBR R8 R0 K71
+ 0x7C100800, // 001E CALL R4 4
+ 0x54160003, // 001F LDINT R5 4
+ 0x7C0C0400, // 0020 CALL R3 2
+ 0x8C0C0137, // 0021 GETMET R3 R0 K55
+ 0x7C0C0200, // 0022 CALL R3 1
+ 0x7002000C, // 0023 JMP #0031
+ 0x6008000C, // 0024 GETGBL R2 G12
+ 0x880C0127, // 0025 GETMBR R3 R0 K39
+ 0x7C080200, // 0026 CALL R2 1
+ 0x540E0063, // 0027 LDINT R3 100
+ 0x24080403, // 0028 GT R2 R2 R3
+ 0x780A0006, // 0029 JMPF R2 #0031
+ 0xB80A8800, // 002A GETNGBL R2 K68
+ 0x580C004B, // 002B LDCONST R3 K75
+ 0x54120003, // 002C LDINT R4 4
+ 0x7C080400, // 002D CALL R2 2
+ 0x8C080122, // 002E GETMET R2 R0 K34
+ 0x7C080200, // 002F CALL R2 1
+ 0x90024F28, // 0030 SETMBR R0 K39 K40
+ 0x80000000, // 0031 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: webserver_async_cnx
+********************************************************************/
+be_local_class(webserver_async_cnx,
+ 14,
+ NULL,
+ be_nested_map(33,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(chunked, 20), be_const_var(13) },
+ { be_const_key_weak(parse_http_payload, 31), be_const_closure(class_webserver_async_cnx_parse_http_payload_closure) },
+ { be_const_key_weak(write, 5), be_const_closure(class_webserver_async_cnx_write_closure) },
+ { be_const_key_weak(phase, 32), be_const_var(7) },
+ { be_const_key_weak(_write, -1), be_const_closure(class_webserver_async_cnx__write_closure) },
+ { be_const_key_weak(parse_http_req_line, 25), be_const_closure(class_webserver_async_cnx_parse_http_req_line_closure) },
+ { be_const_key_weak(server, -1), be_const_var(0) },
+ { be_const_key_weak(send, 27), be_const_closure(class_webserver_async_cnx_send_closure) },
+ { be_const_key_weak(content_stop, -1), be_const_closure(class_webserver_async_cnx_content_stop_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(class_webserver_async_cnx_init_closure) },
+ { be_const_key_weak(_send, -1), be_const_closure(class_webserver_async_cnx__send_closure) },
+ { be_const_key_weak(event_http_header, -1), be_const_closure(class_webserver_async_cnx_event_http_header_closure) },
+ { be_const_key_weak(close, -1), be_const_closure(class_webserver_async_cnx_close_closure) },
+ { be_const_key_weak(req_uri, 21), be_const_var(9) },
+ { be_const_key_weak(buf_in, -1), be_const_var(4) },
+ { be_const_key_weak(req_version, 22), be_const_var(10) },
+ { be_const_key_weak(resp_headers, -1), be_const_var(12) },
+ { be_const_key_weak(close_after_send, 14), be_const_var(2) },
+ { be_const_key_weak(cnx, -1), be_const_var(1) },
+ { be_const_key_weak(parse, 8), be_const_closure(class_webserver_async_cnx_parse_closure) },
+ { be_const_key_weak(CODE_TO_STRING, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
+ be_const_map( * be_nested_map(4,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_int(200, 2), be_nested_str_weak(OK) },
+ { be_const_key_int(301, -1), be_nested_str_weak(Moved_X20Permanently) },
+ { be_const_key_int(404, 3), be_nested_str_weak(Not_X20Found) },
+ { be_const_key_int(500, -1), be_nested_str_weak(Internal_X20Server_X20Error) },
+ })) ) } )) },
+ { be_const_key_weak(buf_out_empty, 10), be_const_closure(class_webserver_async_cnx_buf_out_empty_closure) },
+ { be_const_key_weak(loop, -1), be_const_closure(class_webserver_async_cnx_loop_closure) },
+ { be_const_key_weak(buf_out, -1), be_const_var(6) },
+ { be_const_key_weak(req_verb, 18), be_const_var(8) },
+ { be_const_key_weak(buf_in_offset, -1), be_const_var(5) },
+ { be_const_key_weak(set_chunked, -1), be_const_closure(class_webserver_async_cnx_set_chunked_closure) },
+ { be_const_key_weak(connected, -1), be_const_closure(class_webserver_async_cnx_connected_closure) },
+ { be_const_key_weak(parse_http_headers, -1), be_const_closure(class_webserver_async_cnx_parse_http_headers_closure) },
+ { be_const_key_weak(fastloop_cb, 13), be_const_var(3) },
+ { be_const_key_weak(write_raw, -1), be_const_closure(class_webserver_async_cnx_write_raw_closure) },
+ { be_const_key_weak(send_header, -1), be_const_closure(class_webserver_async_cnx_send_header_closure) },
+ { be_const_key_weak(header_host, -1), be_const_var(11) },
+ })),
+ be_str_weak(webserver_async_cnx)
+);
+// compact class 'webserver_async_dispatcher' ktab size: 7, total: 11 (saved 32 bytes)
+static const bvalue be_ktab_class_webserver_async_dispatcher[7] = {
+ /* K0 */ be_nested_str_weak(string),
+ /* K1 */ be_nested_str_weak(find),
+ /* K2 */ be_nested_str_weak(uri_prefix),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_nested_str_weak(verb),
+ /* K5 */ be_nested_str_weak(cb_obj),
+ /* K6 */ be_nested_str_weak(cb_mth),
+};
+
+
+extern const bclass be_class_webserver_async_dispatcher;
+
+/********************************************************************
+** Solidified function: dispatch
+********************************************************************/
+be_local_closure(class_webserver_async_dispatcher_dispatch, /* name */
+ be_nested_proto(
+ 13, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async_dispatcher, /* shared constants */
+ be_str_weak(dispatch),
+ &be_const_str_solidified,
+ ( &(const binstruction[35]) { /* code */
+ 0xA4120000, // 0000 IMPORT R4 K0
+ 0x8C140901, // 0001 GETMET R5 R4 K1
+ 0x5C1C0400, // 0002 MOVE R7 R2
+ 0x88200102, // 0003 GETMBR R8 R0 K2
+ 0x7C140600, // 0004 CALL R5 3
+ 0x1C140B03, // 0005 EQ R5 R5 K3
+ 0x78160019, // 0006 JMPF R5 #0021
+ 0x50140000, // 0007 LDBOOL R5 0 0
+ 0x88180104, // 0008 GETMBR R6 R0 K4
+ 0x4C1C0000, // 0009 LDNIL R7
+ 0x1C180C07, // 000A EQ R6 R6 R7
+ 0x741A0002, // 000B JMPT R6 #000F
+ 0x88180104, // 000C GETMBR R6 R0 K4
+ 0x1C180C03, // 000D EQ R6 R6 R3
+ 0x781A0011, // 000E JMPF R6 #0021
+ 0x88180105, // 000F GETMBR R6 R0 K5
+ 0x4C1C0000, // 0010 LDNIL R7
+ 0x201C0C07, // 0011 NE R7 R6 R7
+ 0x781E0006, // 0012 JMPF R7 #001A
+ 0x8C1C0106, // 0013 GETMET R7 R0 K6
+ 0x88240105, // 0014 GETMBR R9 R0 K5
+ 0x5C280200, // 0015 MOVE R10 R1
+ 0x5C2C0400, // 0016 MOVE R11 R2
+ 0x5C300600, // 0017 MOVE R12 R3
+ 0x7C1C0A00, // 0018 CALL R7 5
+ 0x70020004, // 0019 JMP #001F
+ 0x8C1C0106, // 001A GETMET R7 R0 K6
+ 0x5C240200, // 001B MOVE R9 R1
+ 0x5C280400, // 001C MOVE R10 R2
+ 0x5C2C0600, // 001D MOVE R11 R3
+ 0x7C1C0800, // 001E CALL R7 4
+ 0x501C0200, // 001F LDBOOL R7 1 0
+ 0x80040E00, // 0020 RET 1 R7
+ 0x50140000, // 0021 LDBOOL R5 0 0
+ 0x80040A00, // 0022 RET 1 R5
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_webserver_async_dispatcher_init, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 5, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async_dispatcher, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x90020401, // 0000 SETMBR R0 K2 R1
+ 0x90020A02, // 0001 SETMBR R0 K5 R2
+ 0x90020C03, // 0002 SETMBR R0 K6 R3
+ 0x90020804, // 0003 SETMBR R0 K4 R4
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: webserver_async_dispatcher
+********************************************************************/
+be_local_class(webserver_async_dispatcher,
+ 4,
+ NULL,
+ be_nested_map(6,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(verb, 4), be_const_var(1) },
+ { be_const_key_weak(init, -1), be_const_closure(class_webserver_async_dispatcher_init_closure) },
+ { be_const_key_weak(uri_prefix, -1), be_const_var(0) },
+ { be_const_key_weak(dispatch, 1), be_const_closure(class_webserver_async_dispatcher_dispatch_closure) },
+ { be_const_key_weak(cb_obj, 5), be_const_var(2) },
+ { be_const_key_weak(cb_mth, -1), be_const_var(3) },
+ })),
+ be_str_weak(webserver_async_dispatcher)
+);
+extern const bclass be_class_webserver_async;
+// compact class 'webserver_async' ktab size: 47, total: 71 (saved 192 bytes)
+static const bvalue be_ktab_class_webserver_async[47] = {
+ /* K0 */ be_nested_str_weak(chunked),
+ /* K1 */ be_nested_str_weak(re),
+ /* K2 */ be_nested_str_weak(global),
+ /* K3 */ be_nested_str_weak(contains),
+ /* K4 */ be_nested_str_weak(_re_http_srv),
+ /* K5 */ be_nested_str_weak(compile),
+ /* K6 */ be_nested_str_weak(_X5E_X28_X5Cw_X2B_X29_X20_X28_X5CS_X2B_X29_X20HTTP_X5C_X2F_X28_X5Cd_X5C_X2E_X5Cd_X29_X0D_X0A),
+ /* K7 */ be_nested_str_weak(_re_http_srv_header),
+ /* K8 */ be_nested_str_weak(_X28_X5BA_X2DZa_X2Dz0_X2D9_X2D_X5D_X2B_X29_X3A_X20_X28_X2E_X2A_X3F_X29_X0D_X0A),
+ /* K9 */ be_nested_str_weak(_re_http_srv_body),
+ /* K10 */ be_nested_str_weak(_X0D_X0A),
+ /* K11 */ be_nested_str_weak(cors),
+ /* K12 */ be_nested_str_weak(clean_connections),
+ /* K13 */ be_nested_str_weak(server),
+ /* K14 */ be_nested_str_weak(hasclient),
+ /* K15 */ be_nested_str_weak(webserver_async_cnx),
+ /* K16 */ be_nested_str_weak(acceptasync),
+ /* K17 */ be_nested_str_weak(set_chunked),
+ /* K18 */ be_nested_str_weak(connections),
+ /* K19 */ be_nested_str_weak(push),
+ /* K20 */ be_nested_str_weak(tasmota),
+ /* K21 */ be_nested_str_weak(remove_driver),
+ /* K22 */ be_nested_str_weak(remove_fast_loop),
+ /* K23 */ be_nested_str_weak(fastloop_cb),
+ /* K24 */ be_nested_str_weak(close),
+ /* K25 */ be_nested_str_weak(stop_iteration),
+ /* K26 */ be_const_class(be_class_webserver_async),
+ /* K27 */ be_nested_str_weak(clear),
+ /* K28 */ be_const_int(0),
+ /* K29 */ be_nested_str_weak(resize),
+ /* K30 */ be_const_int(1),
+ /* K31 */ be_nested_str_weak(reverse),
+ /* K32 */ be_nested_str_weak(dispatchers),
+ /* K33 */ be_nested_str_weak(tcpserver),
+ /* K34 */ be_nested_str_weak(p1),
+ /* K35 */ be_nested_str_weak(compile_re),
+ /* K36 */ be_nested_str_weak(add_driver),
+ /* K37 */ be_nested_str_weak(add_fast_loop),
+ /* K38 */ be_nested_str_weak(connected),
+ /* K39 */ be_nested_str_weak(remove),
+ /* K40 */ be_nested_str_weak(webserver_async_dispatcher),
+ /* K41 */ be_nested_str_weak(dispatch),
+ /* K42 */ be_nested_str_weak(send),
+ /* K43 */ be_nested_str_weak(text_X2Fplain),
+ /* K44 */ be_nested_str_weak(write),
+ /* K45 */ be_nested_str_weak(Unsupported),
+ /* K46 */ be_nested_str_weak(content_stop),
+};
+
+
+extern const bclass be_class_webserver_async;
+
+/********************************************************************
+** Solidified function: set_chunked
+********************************************************************/
+be_local_closure(class_webserver_async_set_chunked, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async, /* shared constants */
+ be_str_weak(set_chunked),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x60080017, // 0000 GETGBL R2 G23
+ 0x5C0C0200, // 0001 MOVE R3 R1
+ 0x7C080200, // 0002 CALL R2 1
+ 0x90020002, // 0003 SETMBR R0 K0 R2
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: compile_re
+********************************************************************/
+be_local_closure(class_webserver_async_compile_re, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async, /* shared constants */
+ be_str_weak(compile_re),
+ &be_const_str_solidified,
+ ( &(const binstruction[22]) { /* code */
+ 0xA4060200, // 0000 IMPORT R1 K1
+ 0xB80A0400, // 0001 GETNGBL R2 K2
+ 0x8C080503, // 0002 GETMET R2 R2 K3
+ 0x58100004, // 0003 LDCONST R4 K4
+ 0x7C080400, // 0004 CALL R2 2
+ 0x740A000E, // 0005 JMPT R2 #0015
+ 0xB80A0400, // 0006 GETNGBL R2 K2
+ 0x8C0C0305, // 0007 GETMET R3 R1 K5
+ 0x58140006, // 0008 LDCONST R5 K6
+ 0x7C0C0400, // 0009 CALL R3 2
+ 0x900A0803, // 000A SETMBR R2 K4 R3
+ 0xB80A0400, // 000B GETNGBL R2 K2
+ 0x8C0C0305, // 000C GETMET R3 R1 K5
+ 0x58140008, // 000D LDCONST R5 K8
+ 0x7C0C0400, // 000E CALL R3 2
+ 0x900A0E03, // 000F SETMBR R2 K7 R3
+ 0xB80A0400, // 0010 GETNGBL R2 K2
+ 0x8C0C0305, // 0011 GETMET R3 R1 K5
+ 0x5814000A, // 0012 LDCONST R5 K10
+ 0x7C0C0400, // 0013 CALL R3 2
+ 0x900A1203, // 0014 SETMBR R2 K9 R3
+ 0x80000000, // 0015 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: set_cors
+********************************************************************/
+be_local_closure(class_webserver_async_set_cors, /* name */
+ be_nested_proto(
+ 4, /* nstack */
+ 2, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async, /* shared constants */
+ be_str_weak(set_cors),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 5]) { /* code */
+ 0x60080017, // 0000 GETGBL R2 G23
+ 0x5C0C0200, // 0001 MOVE R3 R1
+ 0x7C080200, // 0002 CALL R2 1
+ 0x90021602, // 0003 SETMBR R0 K11 R2
+ 0x80000000, // 0004 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: loop
+********************************************************************/
+be_local_closure(class_webserver_async_loop, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async, /* shared constants */
+ be_str_weak(loop),
+ &be_const_str_solidified,
+ ( &(const binstruction[21]) { /* code */
+ 0x8C04010C, // 0000 GETMET R1 R0 K12
+ 0x7C040200, // 0001 CALL R1 1
+ 0x8804010D, // 0002 GETMBR R1 R0 K13
+ 0x8C04030E, // 0003 GETMET R1 R1 K14
+ 0x7C040200, // 0004 CALL R1 1
+ 0x7806000D, // 0005 JMPF R1 #0014
+ 0x8C04010F, // 0006 GETMET R1 R0 K15
+ 0x5C0C0000, // 0007 MOVE R3 R0
+ 0x8810010D, // 0008 GETMBR R4 R0 K13
+ 0x8C100910, // 0009 GETMET R4 R4 K16
+ 0x7C100200, // 000A CALL R4 1
+ 0x7C040600, // 000B CALL R1 3
+ 0x8C080311, // 000C GETMET R2 R1 K17
+ 0x88100100, // 000D GETMBR R4 R0 K0
+ 0x7C080400, // 000E CALL R2 2
+ 0x88080112, // 000F GETMBR R2 R0 K18
+ 0x8C080513, // 0010 GETMET R2 R2 K19
+ 0x5C100200, // 0011 MOVE R4 R1
+ 0x7C080400, // 0012 CALL R2 2
+ 0x7001FFED, // 0013 JMP #0002
+ 0x80000000, // 0014 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: close
+********************************************************************/
+be_local_closure(class_webserver_async_close, /* name */
+ be_nested_proto(
+ 5, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async, /* shared constants */
+ be_str_weak(close),
+ &be_const_str_solidified,
+ ( &(const binstruction[28]) { /* code */
+ 0xB8062800, // 0000 GETNGBL R1 K20
+ 0x8C040315, // 0001 GETMET R1 R1 K21
+ 0x5C0C0000, // 0002 MOVE R3 R0
+ 0x7C040400, // 0003 CALL R1 2
+ 0xB8062800, // 0004 GETNGBL R1 K20
+ 0x8C040316, // 0005 GETMET R1 R1 K22
+ 0x880C0117, // 0006 GETMBR R3 R0 K23
+ 0x7C040400, // 0007 CALL R1 2
+ 0x4C040000, // 0008 LDNIL R1
+ 0x90022E01, // 0009 SETMBR R0 K23 R1
+ 0x8804010D, // 000A GETMBR R1 R0 K13
+ 0x8C040318, // 000B GETMET R1 R1 K24
+ 0x7C040200, // 000C CALL R1 1
+ 0x60040010, // 000D GETGBL R1 G16
+ 0x88080112, // 000E GETMBR R2 R0 K18
+ 0x7C040200, // 000F CALL R1 1
+ 0xA8020004, // 0010 EXBLK 0 #0016
+ 0x5C080200, // 0011 MOVE R2 R1
+ 0x7C080000, // 0012 CALL R2 0
+ 0x8C0C0518, // 0013 GETMET R3 R2 K24
+ 0x7C0C0200, // 0014 CALL R3 1
+ 0x7001FFFA, // 0015 JMP #0011
+ 0x58040019, // 0016 LDCONST R1 K25
+ 0xAC040200, // 0017 CATCH R1 1 0
+ 0xB0080000, // 0018 RAISE 2 R0 R0
+ 0x4C040000, // 0019 LDNIL R1
+ 0x90022401, // 001A SETMBR R0 K18 R1
+ 0x80000000, // 001B RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: bytes_format_hex
+********************************************************************/
+be_local_closure(class_webserver_async_bytes_format_hex, /* name */
+ be_nested_proto(
+ 8, /* nstack */
+ 3, /* argc */
+ 12, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async, /* shared constants */
+ be_str_weak(bytes_format_hex),
+ &be_const_str_solidified,
+ ( &(const binstruction[50]) { /* code */
+ 0x580C001A, // 0000 LDCONST R3 K26
+ 0x8C10011B, // 0001 GETMET R4 R0 K27
+ 0x7C100200, // 0002 CALL R4 1
+ 0x4C100000, // 0003 LDNIL R4
+ 0x1C100204, // 0004 EQ R4 R1 R4
+ 0x78120001, // 0005 JMPF R4 #0008
+ 0x40100002, // 0006 CONNECT R4 R0 R2
+ 0x80000800, // 0007 RET 0
+ 0x1410031C, // 0008 LT R4 R1 K28
+ 0x78120000, // 0009 JMPF R4 #000B
+ 0x44040200, // 000A NEG R1 R1
+ 0x1410031C, // 000B LT R4 R1 K28
+ 0x78120000, // 000C JMPF R4 #000E
+ 0x80000800, // 000D RET 0
+ 0x1C10031C, // 000E EQ R4 R1 K28
+ 0x78120005, // 000F JMPF R4 #0016
+ 0x8C10011D, // 0010 GETMET R4 R0 K29
+ 0x5818001E, // 0011 LDCONST R6 K30
+ 0x7C100400, // 0012 CALL R4 2
+ 0x5412002F, // 0013 LDINT R4 48
+ 0x98023804, // 0014 SETIDX R0 K28 R4
+ 0x80000800, // 0015 RET 0
+ 0x8C10011D, // 0016 GETMET R4 R0 K29
+ 0x541A0007, // 0017 LDINT R6 8
+ 0x7C100400, // 0018 CALL R4 2
+ 0x5810001C, // 0019 LDCONST R4 K28
+ 0x2414031C, // 001A GT R5 R1 K28
+ 0x7816000F, // 001B JMPF R5 #002C
+ 0x5416000E, // 001C LDINT R5 15
+ 0x2C140205, // 001D AND R5 R1 R5
+ 0x541A0009, // 001E LDINT R6 10
+ 0x14180A06, // 001F LT R6 R5 R6
+ 0x781A0003, // 0020 JMPF R6 #0025
+ 0x541A002F, // 0021 LDINT R6 48
+ 0x00180C05, // 0022 ADD R6 R6 R5
+ 0x98000806, // 0023 SETIDX R0 R4 R6
+ 0x70020002, // 0024 JMP #0028
+ 0x541A0036, // 0025 LDINT R6 55
+ 0x00180C05, // 0026 ADD R6 R6 R5
+ 0x98000806, // 0027 SETIDX R0 R4 R6
+ 0x0010091E, // 0028 ADD R4 R4 K30
+ 0x541A0003, // 0029 LDINT R6 4
+ 0x3C040206, // 002A SHR R1 R1 R6
+ 0x7001FFED, // 002B JMP #001A
+ 0x8C14011D, // 002C GETMET R5 R0 K29
+ 0x5C1C0800, // 002D MOVE R7 R4
+ 0x7C140400, // 002E CALL R5 2
+ 0x8C14011F, // 002F GETMET R5 R0 K31
+ 0x7C140200, // 0030 CALL R5 1
+ 0x80000000, // 0031 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: init
+********************************************************************/
+be_local_closure(class_webserver_async_init, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 3, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 1, /* has sup protos */
+ ( &(const struct bproto*[ 1]) {
+ be_nested_proto(
+ 2, /* nstack */
+ 0, /* argc */
+ 0, /* varg */
+ 1, /* has upvals */
+ ( &(const bupvaldesc[ 1]) { /* upvals */
+ be_local_const_upval(1, 0),
+ }),
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ ( &(const bvalue[ 1]) { /* constants */
+ /* K0 */ be_nested_str_weak(loop),
+ }),
+ be_str_weak(_anonymous_),
+ &be_const_str_solidified,
+ ( &(const binstruction[ 4]) { /* code */
+ 0x68000000, // 0000 GETUPV R0 U0
+ 0x8C000100, // 0001 GETMET R0 R0 K0
+ 0x7C000200, // 0002 CALL R0 1
+ 0x80000000, // 0003 RET 0
+ })
+ ),
+ }),
+ 1, /* has constants */
+ &be_ktab_class_webserver_async, /* shared constants */
+ be_str_weak(init),
+ &be_const_str_solidified,
+ ( &(const binstruction[32]) { /* code */
+ 0x600C0012, // 0000 GETGBL R3 G18
+ 0x7C0C0000, // 0001 CALL R3 0
+ 0x90022403, // 0002 SETMBR R0 K18 R3
+ 0x600C0012, // 0003 GETGBL R3 G18
+ 0x7C0C0000, // 0004 CALL R3 0
+ 0x90024003, // 0005 SETMBR R0 K32 R3
+ 0xB80E4200, // 0006 GETNGBL R3 K33
+ 0x5C100200, // 0007 MOVE R4 R1
+ 0x7C0C0200, // 0008 CALL R3 1
+ 0x90021A03, // 0009 SETMBR R0 K13 R3
+ 0x500C0200, // 000A LDBOOL R3 1 0
+ 0x90020003, // 000B SETMBR R0 K0 R3
+ 0x500C0000, // 000C LDBOOL R3 0 0
+ 0x90021603, // 000D SETMBR R0 K11 R3
+ 0x600C0015, // 000E GETGBL R3 G21
+ 0x54120063, // 000F LDINT R4 100
+ 0x7C0C0200, // 0010 CALL R3 1
+ 0x90024403, // 0011 SETMBR R0 K34 R3
+ 0x8C0C0123, // 0012 GETMET R3 R0 K35
+ 0x7C0C0200, // 0013 CALL R3 1
+ 0xB80E2800, // 0014 GETNGBL R3 K20
+ 0x8C0C0724, // 0015 GETMET R3 R3 K36
+ 0x5C140000, // 0016 MOVE R5 R0
+ 0x7C0C0400, // 0017 CALL R3 2
+ 0x840C0000, // 0018 CLOSURE R3 P0
+ 0x90022E03, // 0019 SETMBR R0 K23 R3
+ 0xB80E2800, // 001A GETNGBL R3 K20
+ 0x8C0C0725, // 001B GETMET R3 R3 K37
+ 0x88140117, // 001C GETMBR R5 R0 K23
+ 0x7C0C0400, // 001D CALL R3 2
+ 0xA0000000, // 001E CLOSE R0
+ 0x80000000, // 001F RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: clean_connections
+********************************************************************/
+be_local_closure(class_webserver_async_clean_connections, /* name */
+ be_nested_proto(
+ 6, /* nstack */
+ 1, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async, /* shared constants */
+ be_str_weak(clean_connections),
+ &be_const_str_solidified,
+ ( &(const binstruction[21]) { /* code */
+ 0x5804001C, // 0000 LDCONST R1 K28
+ 0x6008000C, // 0001 GETGBL R2 G12
+ 0x880C0112, // 0002 GETMBR R3 R0 K18
+ 0x7C080200, // 0003 CALL R2 1
+ 0x14080202, // 0004 LT R2 R1 R2
+ 0x780A000D, // 0005 JMPF R2 #0014
+ 0x88080112, // 0006 GETMBR R2 R0 K18
+ 0x94080401, // 0007 GETIDX R2 R2 R1
+ 0x8C0C0526, // 0008 GETMET R3 R2 K38
+ 0x7C0C0200, // 0009 CALL R3 1
+ 0x740E0006, // 000A JMPT R3 #0012
+ 0x8C0C0518, // 000B GETMET R3 R2 K24
+ 0x7C0C0200, // 000C CALL R3 1
+ 0x880C0112, // 000D GETMBR R3 R0 K18
+ 0x8C0C0727, // 000E GETMET R3 R3 K39
+ 0x5C140200, // 000F MOVE R5 R1
+ 0x7C0C0400, // 0010 CALL R3 2
+ 0x70020000, // 0011 JMP #0013
+ 0x0004031E, // 0012 ADD R1 R1 K30
+ 0x7001FFEC, // 0013 JMP #0001
+ 0x80000000, // 0014 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: bytes_format_int
+********************************************************************/
+be_local_closure(class_webserver_async_bytes_format_int, /* name */
+ be_nested_proto(
+ 9, /* nstack */
+ 3, /* argc */
+ 12, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async, /* shared constants */
+ be_str_weak(bytes_format_int),
+ &be_const_str_solidified,
+ ( &(const binstruction[49]) { /* code */
+ 0x580C001A, // 0000 LDCONST R3 K26
+ 0x8C10011B, // 0001 GETMET R4 R0 K27
+ 0x7C100200, // 0002 CALL R4 1
+ 0x4C100000, // 0003 LDNIL R4
+ 0x1C100204, // 0004 EQ R4 R1 R4
+ 0x78120001, // 0005 JMPF R4 #0008
+ 0x40100002, // 0006 CONNECT R4 R0 R2
+ 0x80000800, // 0007 RET 0
+ 0x50100000, // 0008 LDBOOL R4 0 0
+ 0x1414031C, // 0009 LT R5 R1 K28
+ 0x78160001, // 000A JMPF R5 #000D
+ 0x44040200, // 000B NEG R1 R1
+ 0x50100200, // 000C LDBOOL R4 1 0
+ 0x1414031C, // 000D LT R5 R1 K28
+ 0x78160000, // 000E JMPF R5 #0010
+ 0x80000A00, // 000F RET 0
+ 0x1C14031C, // 0010 EQ R5 R1 K28
+ 0x78160005, // 0011 JMPF R5 #0018
+ 0x8C14011D, // 0012 GETMET R5 R0 K29
+ 0x581C001E, // 0013 LDCONST R7 K30
+ 0x7C140400, // 0014 CALL R5 2
+ 0x5416002F, // 0015 LDINT R5 48
+ 0x98023805, // 0016 SETIDX R0 K28 R5
+ 0x80000A00, // 0017 RET 0
+ 0x8C14011D, // 0018 GETMET R5 R0 K29
+ 0x541E000A, // 0019 LDINT R7 11
+ 0x7C140400, // 001A CALL R5 2
+ 0x5814001C, // 001B LDCONST R5 K28
+ 0x2418031C, // 001C GT R6 R1 K28
+ 0x781A0008, // 001D JMPF R6 #0027
+ 0x541A0009, // 001E LDINT R6 10
+ 0x10180206, // 001F MOD R6 R1 R6
+ 0x541E002F, // 0020 LDINT R7 48
+ 0x001C0E06, // 0021 ADD R7 R7 R6
+ 0x98000A07, // 0022 SETIDX R0 R5 R7
+ 0x00140B1E, // 0023 ADD R5 R5 K30
+ 0x541E0009, // 0024 LDINT R7 10
+ 0x0C040207, // 0025 DIV R1 R1 R7
+ 0x7001FFF4, // 0026 JMP #001C
+ 0x78120002, // 0027 JMPF R4 #002B
+ 0x541A002C, // 0028 LDINT R6 45
+ 0x98000A06, // 0029 SETIDX R0 R5 R6
+ 0x00140B1E, // 002A ADD R5 R5 K30
+ 0x8C18011D, // 002B GETMET R6 R0 K29
+ 0x5C200A00, // 002C MOVE R8 R5
+ 0x7C180400, // 002D CALL R6 2
+ 0x8C18011F, // 002E GETMET R6 R0 K31
+ 0x7C180200, // 002F CALL R6 1
+ 0x80000000, // 0030 RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: on
+********************************************************************/
+be_local_closure(class_webserver_async_on, /* name */
+ be_nested_proto(
+ 11, /* nstack */
+ 5, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async, /* shared constants */
+ be_str_weak(on),
+ &be_const_str_solidified,
+ ( &(const binstruction[11]) { /* code */
+ 0x8C140128, // 0000 GETMET R5 R0 K40
+ 0x5C1C0200, // 0001 MOVE R7 R1
+ 0x5C200400, // 0002 MOVE R8 R2
+ 0x5C240600, // 0003 MOVE R9 R3
+ 0x5C280800, // 0004 MOVE R10 R4
+ 0x7C140A00, // 0005 CALL R5 5
+ 0x88180120, // 0006 GETMBR R6 R0 K32
+ 0x8C180D13, // 0007 GETMET R6 R6 K19
+ 0x5C200A00, // 0008 MOVE R8 R5
+ 0x7C180400, // 0009 CALL R6 2
+ 0x80000000, // 000A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified function: dispatch
+********************************************************************/
+be_local_closure(class_webserver_async_dispatch, /* name */
+ be_nested_proto(
+ 10, /* nstack */
+ 4, /* argc */
+ 10, /* varg */
+ 0, /* has upvals */
+ NULL, /* no upvals */
+ 0, /* has sup protos */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_webserver_async, /* shared constants */
+ be_str_weak(dispatch),
+ &be_const_str_solidified,
+ ( &(const binstruction[27]) { /* code */
+ 0x5810001C, // 0000 LDCONST R4 K28
+ 0x6014000C, // 0001 GETGBL R5 G12
+ 0x88180120, // 0002 GETMBR R6 R0 K32
+ 0x7C140200, // 0003 CALL R5 1
+ 0x14140805, // 0004 LT R5 R4 R5
+ 0x7816000A, // 0005 JMPF R5 #0011
+ 0x88140120, // 0006 GETMBR R5 R0 K32
+ 0x94140A04, // 0007 GETIDX R5 R5 R4
+ 0x8C140B29, // 0008 GETMET R5 R5 K41
+ 0x5C1C0200, // 0009 MOVE R7 R1
+ 0x5C200400, // 000A MOVE R8 R2
+ 0x5C240600, // 000B MOVE R9 R3
+ 0x7C140800, // 000C CALL R5 4
+ 0x78160000, // 000D JMPF R5 #000F
+ 0x80000A00, // 000E RET 0
+ 0x0010091E, // 000F ADD R4 R4 K30
+ 0x7001FFEF, // 0010 JMP #0001
+ 0x8C14032A, // 0011 GETMET R5 R1 K42
+ 0x541E01F3, // 0012 LDINT R7 500
+ 0x5820002B, // 0013 LDCONST R8 K43
+ 0x7C140600, // 0014 CALL R5 3
+ 0x8C14032C, // 0015 GETMET R5 R1 K44
+ 0x581C002D, // 0016 LDCONST R7 K45
+ 0x7C140400, // 0017 CALL R5 2
+ 0x8C14032E, // 0018 GETMET R5 R1 K46
+ 0x7C140200, // 0019 CALL R5 1
+ 0x80000000, // 001A RET 0
+ })
+ )
+);
+/*******************************************************************/
+
+
+/********************************************************************
+** Solidified class: webserver_async
+********************************************************************/
+be_local_class(webserver_async,
+ 8,
+ NULL,
+ be_nested_map(21,
+ ( (struct bmapnode*) &(const bmapnode[]) {
+ { be_const_key_weak(local_port, -1), be_const_var(0) },
+ { be_const_key_weak(dispatchers, 18), be_const_var(4) },
+ { be_const_key_weak(set_chunked, 10), be_const_closure(class_webserver_async_set_chunked_closure) },
+ { be_const_key_weak(webserver_async_cnx, 20), be_const_class(be_class_webserver_async_cnx) },
+ { be_const_key_weak(webserver_async_dispatcher, -1), be_const_class(be_class_webserver_async_dispatcher) },
+ { be_const_key_weak(compile_re, -1), be_const_closure(class_webserver_async_compile_re_closure) },
+ { be_const_key_weak(dispatch, 7), be_const_closure(class_webserver_async_dispatch_closure) },
+ { be_const_key_weak(cors, 11), be_const_var(6) },
+ { be_const_key_weak(connections, -1), be_const_var(3) },
+ { be_const_key_weak(set_cors, 1), be_const_closure(class_webserver_async_set_cors_closure) },
+ { be_const_key_weak(on, -1), be_const_closure(class_webserver_async_on_closure) },
+ { be_const_key_weak(bytes_format_int, 16), be_const_static_closure(class_webserver_async_bytes_format_int_closure) },
+ { be_const_key_weak(init, -1), be_const_closure(class_webserver_async_init_closure) },
+ { be_const_key_weak(p1, -1), be_const_var(7) },
+ { be_const_key_weak(fastloop_cb, -1), be_const_var(2) },
+ { be_const_key_weak(server, 6), be_const_var(1) },
+ { be_const_key_weak(clean_connections, 17), be_const_closure(class_webserver_async_clean_connections_closure) },
+ { be_const_key_weak(bytes_format_hex, -1), be_const_static_closure(class_webserver_async_bytes_format_hex_closure) },
+ { be_const_key_weak(close, 19), be_const_closure(class_webserver_async_close_closure) },
+ { be_const_key_weak(loop, -1), be_const_closure(class_webserver_async_loop_closure) },
+ { be_const_key_weak(chunked, -1), be_const_var(5) },
+ })),
+ be_str_weak(webserver_async)
+);
+/********************************************************************/
+/* End of solidification */
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee.h
index 33ee2991e..8f504d019 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee.h
@@ -7,7 +7,6 @@
/********************************************************************
** Solidified function: tostring
********************************************************************/
-extern const bclass be_class_zb_device;
be_local_closure(class_zb_device_tostring, /* name */
be_nested_proto(
12, /* nstack */
@@ -16,7 +15,7 @@ be_local_closure(class_zb_device_tostring, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zb_device,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 9]) { /* constants */
/* K0 */ be_nested_str_weak(json),
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zb_coord.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zb_coord.h
index 7539e57e7..95dbf423b 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zb_coord.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zb_coord.h
@@ -3,26 +3,48 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'zb_coord' ktab size: 21, total: 24 (saved 24 bytes)
+static const bvalue be_ktab_class_zb_coord[21] = {
+ /* K0 */ be_nested_str_weak(init),
+ /* K1 */ be_nested_str_weak(instance),
+ /* K2 */ be_nested_str_weak(value_error),
+ /* K3 */ be_nested_str_weak(instance_X20required),
+ /* K4 */ be_nested_str_weak(_handlers),
+ /* K5 */ be_nested_str_weak(find),
+ /* K6 */ be_nested_str_weak(push),
+ /* K7 */ be_nested_str_weak(introspect),
+ /* K8 */ be_nested_str_weak(toptr),
+ /* K9 */ be_const_int(0),
+ /* K10 */ be_nested_str_weak(zcl_frame),
+ /* K11 */ be_nested_str_weak(zcl_attribute_list),
+ /* K12 */ be_nested_str_weak(get),
+ /* K13 */ be_nested_str_weak(function),
+ /* K14 */ be_nested_str_weak(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s),
+ /* K15 */ be_nested_str_weak(tasmota),
+ /* K16 */ be_nested_str_weak(_debug_present),
+ /* K17 */ be_nested_str_weak(debug),
+ /* K18 */ be_nested_str_weak(traceback),
+ /* K19 */ be_const_int(1),
+ /* K20 */ be_nested_str_weak(remove),
+};
+
extern const bclass be_class_zb_coord;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_zb_coord;
be_local_closure(class_zb_coord_init, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zb_coord,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- }),
+ &be_ktab_class_zb_coord, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
@@ -41,52 +63,44 @@ be_local_closure(class_zb_coord_init, /* name */
/********************************************************************
** Solidified function: add_handler
********************************************************************/
-extern const bclass be_class_zb_coord;
be_local_closure(class_zb_coord_add_handler, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zb_coord,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(instance),
- /* K1 */ be_nested_str_weak(value_error),
- /* K2 */ be_nested_str_weak(instance_X20required),
- /* K3 */ be_nested_str_weak(_handlers),
- /* K4 */ be_nested_str_weak(find),
- /* K5 */ be_nested_str_weak(push),
- }),
+ &be_ktab_class_zb_coord, /* shared constants */
be_str_weak(add_handler),
&be_const_str_solidified,
( &(const binstruction[25]) { /* code */
0x60080004, // 0000 GETGBL R2 G4
0x5C0C0200, // 0001 MOVE R3 R1
0x7C080200, // 0002 CALL R2 1
- 0x20080500, // 0003 NE R2 R2 K0
+ 0x20080501, // 0003 NE R2 R2 K1
0x780A0000, // 0004 JMPF R2 #0006
- 0xB0060302, // 0005 RAISE 1 K1 K2
- 0x88080103, // 0006 GETMBR R2 R0 K3
+ 0xB0060503, // 0005 RAISE 1 K2 K3
+ 0x88080104, // 0006 GETMBR R2 R0 K4
0x780A000B, // 0007 JMPF R2 #0014
- 0x88080103, // 0008 GETMBR R2 R0 K3
- 0x8C080504, // 0009 GETMET R2 R2 K4
+ 0x88080104, // 0008 GETMBR R2 R0 K4
+ 0x8C080505, // 0009 GETMET R2 R2 K5
0x5C100200, // 000A MOVE R4 R1
0x7C080400, // 000B CALL R2 2
0x4C0C0000, // 000C LDNIL R3
0x1C080403, // 000D EQ R2 R2 R3
0x780A0003, // 000E JMPF R2 #0013
- 0x88080103, // 000F GETMBR R2 R0 K3
- 0x8C080505, // 0010 GETMET R2 R2 K5
+ 0x88080104, // 000F GETMBR R2 R0 K4
+ 0x8C080506, // 0010 GETMET R2 R2 K6
0x5C100200, // 0011 MOVE R4 R1
0x7C080400, // 0012 CALL R2 2
0x70020003, // 0013 JMP #0018
0x60080012, // 0014 GETGBL R2 G18
0x7C080000, // 0015 CALL R2 0
0x400C0401, // 0016 CONNECT R3 R2 R1
- 0x90020602, // 0017 SETMBR R0 K3 R2
+ 0x90020802, // 0017 SETMBR R0 K4 R2
0x80000000, // 0018 RET 0
})
)
@@ -97,75 +111,59 @@ be_local_closure(class_zb_coord_add_handler, /* name */
/********************************************************************
** Solidified function: dispatch
********************************************************************/
-extern const bclass be_class_zb_coord;
be_local_closure(class_zb_coord_dispatch, /* name */
be_nested_proto(
19, /* nstack */
5, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zb_coord,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(_handlers),
- /* K1 */ be_nested_str_weak(introspect),
- /* K2 */ be_nested_str_weak(toptr),
- /* K3 */ be_const_int(0),
- /* K4 */ be_nested_str_weak(zcl_frame),
- /* K5 */ be_nested_str_weak(zcl_attribute_list),
- /* K6 */ be_nested_str_weak(get),
- /* K7 */ be_nested_str_weak(function),
- /* K8 */ be_nested_str_weak(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s),
- /* K9 */ be_nested_str_weak(tasmota),
- /* K10 */ be_nested_str_weak(_debug_present),
- /* K11 */ be_nested_str_weak(debug),
- /* K12 */ be_nested_str_weak(traceback),
- /* K13 */ be_const_int(1),
- }),
+ &be_ktab_class_zb_coord, /* shared constants */
be_str_weak(dispatch),
&be_const_str_solidified,
( &(const binstruction[70]) { /* code */
- 0x88140100, // 0000 GETMBR R5 R0 K0
+ 0x88140104, // 0000 GETMBR R5 R0 K4
0x4C180000, // 0001 LDNIL R6
0x1C140A06, // 0002 EQ R5 R5 R6
0x78160000, // 0003 JMPF R5 #0005
0x80000A00, // 0004 RET 0
- 0xA4160200, // 0005 IMPORT R5 K1
+ 0xA4160E00, // 0005 IMPORT R5 K7
0x4C180000, // 0006 LDNIL R6
0x4C1C0000, // 0007 LDNIL R7
- 0x8C200B02, // 0008 GETMET R8 R5 K2
- 0x58280003, // 0009 LDCONST R10 K3
+ 0x8C200B08, // 0008 GETMET R8 R5 K8
+ 0x58280009, // 0009 LDCONST R10 K9
0x7C200400, // 000A CALL R8 2
0x20240408, // 000B NE R9 R2 R8
0x78260003, // 000C JMPF R9 #0011
- 0x8C240104, // 000D GETMET R9 R0 K4
+ 0x8C24010A, // 000D GETMET R9 R0 K10
0x5C2C0400, // 000E MOVE R11 R2
0x7C240400, // 000F CALL R9 2
0x5C181200, // 0010 MOVE R6 R9
0x20240608, // 0011 NE R9 R3 R8
0x78260003, // 0012 JMPF R9 #0017
- 0x8C240105, // 0013 GETMET R9 R0 K5
+ 0x8C24010B, // 0013 GETMET R9 R0 K11
0x5C2C0600, // 0014 MOVE R11 R3
0x7C240400, // 0015 CALL R9 2
0x5C1C1200, // 0016 MOVE R7 R9
- 0x58240003, // 0017 LDCONST R9 K3
+ 0x58240009, // 0017 LDCONST R9 K9
0x6028000C, // 0018 GETGBL R10 G12
- 0x882C0100, // 0019 GETMBR R11 R0 K0
+ 0x882C0104, // 0019 GETMBR R11 R0 K4
0x7C280200, // 001A CALL R10 1
0x1428120A, // 001B LT R10 R9 R10
0x782A0027, // 001C JMPF R10 #0045
- 0x88280100, // 001D GETMBR R10 R0 K0
+ 0x88280104, // 001D GETMBR R10 R0 K4
0x94281409, // 001E GETIDX R10 R10 R9
- 0x8C2C0B06, // 001F GETMET R11 R5 K6
+ 0x8C2C0B0C, // 001F GETMET R11 R5 K12
0x5C341400, // 0020 MOVE R13 R10
0x5C380200, // 0021 MOVE R14 R1
0x7C2C0600, // 0022 CALL R11 3
0x60300004, // 0023 GETGBL R12 G4
0x5C341600, // 0024 MOVE R13 R11
0x7C300200, // 0025 CALL R12 1
- 0x1C301907, // 0026 EQ R12 R12 K7
+ 0x1C30190D, // 0026 EQ R12 R12 K13
0x7832001A, // 0027 JMPF R12 #0043
0xA8020008, // 0028 EXBLK 0 #0032
0x5C301600, // 0029 MOVE R12 R11
@@ -181,20 +179,20 @@ be_local_closure(class_zb_coord_dispatch, /* name */
0x7002000D, // 0033 JMP #0042
0x60380001, // 0034 GETGBL R14 G1
0x603C0018, // 0035 GETGBL R15 G24
- 0x58400008, // 0036 LDCONST R16 K8
+ 0x5840000E, // 0036 LDCONST R16 K14
0x5C441800, // 0037 MOVE R17 R12
0x5C481A00, // 0038 MOVE R18 R13
0x7C3C0600, // 0039 CALL R15 3
0x7C380200, // 003A CALL R14 1
- 0xB83A1200, // 003B GETNGBL R14 K9
- 0x88381D0A, // 003C GETMBR R14 R14 K10
+ 0xB83A1E00, // 003B GETNGBL R14 K15
+ 0x88381D10, // 003C GETMBR R14 R14 K16
0x783A0002, // 003D JMPF R14 #0041
- 0xA43A1600, // 003E IMPORT R14 K11
- 0x8C3C1D0C, // 003F GETMET R15 R14 K12
+ 0xA43A2200, // 003E IMPORT R14 K17
+ 0x8C3C1D12, // 003F GETMET R15 R14 K18
0x7C3C0200, // 0040 CALL R15 1
0x70020000, // 0041 JMP #0043
0xB0080000, // 0042 RAISE 2 R0 R0
- 0x0024130D, // 0043 ADD R9 R9 K13
+ 0x00241313, // 0043 ADD R9 R9 K19
0x7001FFD2, // 0044 JMP #0018
0x80000000, // 0045 RET 0
})
@@ -206,36 +204,31 @@ be_local_closure(class_zb_coord_dispatch, /* name */
/********************************************************************
** Solidified function: remove_handler
********************************************************************/
-extern const bclass be_class_zb_coord;
be_local_closure(class_zb_coord_remove_handler, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zb_coord,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_handlers),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(remove),
- }),
+ &be_ktab_class_zb_coord, /* shared constants */
be_str_weak(remove_handler),
&be_const_str_solidified,
( &(const binstruction[14]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x88080104, // 0000 GETMBR R2 R0 K4
0x780A000A, // 0001 JMPF R2 #000D
- 0x88080100, // 0002 GETMBR R2 R0 K0
- 0x8C080501, // 0003 GETMET R2 R2 K1
+ 0x88080104, // 0002 GETMBR R2 R0 K4
+ 0x8C080505, // 0003 GETMET R2 R2 K5
0x5C100200, // 0004 MOVE R4 R1
0x7C080400, // 0005 CALL R2 2
0x4C0C0000, // 0006 LDNIL R3
0x200C0403, // 0007 NE R3 R2 R3
0x780E0003, // 0008 JMPF R3 #000D
- 0x880C0100, // 0009 GETMBR R3 R0 K0
- 0x8C0C0702, // 000A GETMET R3 R3 K2
+ 0x880C0104, // 0009 GETMBR R3 R0 K4
+ 0x8C0C0714, // 000A GETMET R3 R3 K20
0x5C140400, // 000B MOVE R5 R2
0x7C0C0400, // 000C CALL R3 2
0x80000000, // 000D RET 0
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_attribute.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_attribute.h
index ccdf0d811..f35bcc17f 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_attribute.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_attribute.h
@@ -3,32 +3,70 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'zcl_attribute' ktab size: 43, total: 70 (saved 216 bytes)
+static const bvalue be_ktab_class_zcl_attribute[43] = {
+ /* K0 */ be_nested_str_weak(tomap),
+ /* K1 */ be_nested_str_weak(cluster),
+ /* K2 */ be_nested_str_weak(attr_id),
+ /* K3 */ be_nested_str_weak(cmd),
+ /* K4 */ be_nested_str_weak(direction),
+ /* K5 */ be_nested_str_weak(key),
+ /* K6 */ be_nested_str_weak(val),
+ /* K7 */ be_nested_str_weak(_X3Cundefined_X3E),
+ /* K8 */ be_nested_str_weak(key_suffix),
+ /* K9 */ be_const_int(1),
+ /* K10 */ be_nested_str_weak(_X2504X_X2F_X2504X),
+ /* K11 */ be_nested_str_weak(_X2B),
+ /* K12 */ be_nested_str_weak(_X2504X_X25s_X2502X),
+ /* K13 */ be_nested_str_weak(_X3F),
+ /* K14 */ be_nested_str_weak(_X21),
+ /* K15 */ be_nested_str_weak(_cluster),
+ /* K16 */ be_nested_str_weak(_attr_id),
+ /* K17 */ be_nested_str_weak(_iscmd),
+ /* K18 */ be_const_int(0),
+ /* K19 */ be_nested_str_weak(_cmd),
+ /* K20 */ be_nested_str_weak(_direction),
+ /* K21 */ be_nested_str_weak(_set_val),
+ /* K22 */ be_nested_str_weak(_set_key),
+ /* K23 */ be_nested_str_weak(setmember),
+ /* K24 */ be_nested_str_weak(introspect),
+ /* K25 */ be_nested_str_weak(json),
+ /* K26 */ be_nested_str_weak(dump),
+ /* K27 */ be_nested_str_weak(key_tostring),
+ /* K28 */ be_nested_str_weak(_X3A),
+ /* K29 */ be_nested_str_weak(get),
+ /* K30 */ be_nested_str_weak(tojson),
+ /* K31 */ be_nested_str_weak(_X28_X25s_X29),
+ /* K32 */ be_nested_str_weak(_X2C_X25s_X3A_X22_X2504X_X2F_X2504X_X22),
+ /* K33 */ be_nested_str_weak(init),
+ /* K34 */ be_nested_str_weak(_init),
+ /* K35 */ be_nested_str_weak(ismapped),
+ /* K36 */ be_nested_str_weak(_deinit),
+ /* K37 */ be_nested_str_weak(cmd_general),
+ /* K38 */ be_nested_str_weak(_cmd_general),
+ /* K39 */ be_nested_str_weak(_get_val),
+ /* K40 */ be_nested_str_weak(tohex),
+ /* K41 */ be_nested_str_weak(_get_key),
+ /* K42 */ be_nested_str_weak(member),
+};
+
extern const bclass be_class_zcl_attribute;
/********************************************************************
** Solidified function: tomap
********************************************************************/
-extern const bclass be_class_zcl_attribute;
be_local_closure(class_zcl_attribute_tomap, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zcl_attribute,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(tomap),
- /* K1 */ be_nested_str_weak(cluster),
- /* K2 */ be_nested_str_weak(attr_id),
- /* K3 */ be_nested_str_weak(cmd),
- /* K4 */ be_nested_str_weak(direction),
- /* K5 */ be_nested_str_weak(key),
- /* K6 */ be_nested_str_weak(val),
- }),
+ &be_ktab_class_zcl_attribute, /* shared constants */
be_str_weak(tomap),
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
@@ -59,102 +97,87 @@ be_local_closure(class_zcl_attribute_tomap, /* name */
/********************************************************************
** Solidified function: key_tostring
********************************************************************/
-extern const bclass be_class_zcl_attribute;
be_local_closure(class_zcl_attribute_key_tostring, /* name */
be_nested_proto(
8, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zcl_attribute,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(_X3Cundefined_X3E),
- /* K1 */ be_nested_str_weak(key),
- /* K2 */ be_nested_str_weak(key_suffix),
- /* K3 */ be_const_int(1),
- /* K4 */ be_nested_str_weak(cluster),
- /* K5 */ be_nested_str_weak(attr_id),
- /* K6 */ be_nested_str_weak(_X2504X_X2F_X2504X),
- /* K7 */ be_nested_str_weak(_X2B),
- /* K8 */ be_nested_str_weak(cmd),
- /* K9 */ be_nested_str_weak(direction),
- /* K10 */ be_nested_str_weak(_X2504X_X25s_X2502X),
- /* K11 */ be_nested_str_weak(_X3F),
- /* K12 */ be_nested_str_weak(_X21),
- }),
+ &be_ktab_class_zcl_attribute, /* shared constants */
be_str_weak(key_tostring),
&be_const_str_solidified,
( &(const binstruction[69]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x58040007, // 0000 LDCONST R1 K7
+ 0x88080105, // 0001 GETMBR R2 R0 K5
0x4C0C0000, // 0002 LDNIL R3
0x200C0403, // 0003 NE R3 R2 R3
0x780E0008, // 0004 JMPF R3 #000E
0x5C040400, // 0005 MOVE R1 R2
- 0x880C0102, // 0006 GETMBR R3 R0 K2
- 0x240C0703, // 0007 GT R3 R3 K3
+ 0x880C0108, // 0006 GETMBR R3 R0 K8
+ 0x240C0709, // 0007 GT R3 R3 K9
0x780E0003, // 0008 JMPF R3 #000D
0x600C0008, // 0009 GETGBL R3 G8
- 0x88100102, // 000A GETMBR R4 R0 K2
+ 0x88100108, // 000A GETMBR R4 R0 K8
0x7C0C0200, // 000B CALL R3 1
0x00040203, // 000C ADD R1 R1 R3
0x70020035, // 000D JMP #0044
- 0x880C0104, // 000E GETMBR R3 R0 K4
+ 0x880C0101, // 000E GETMBR R3 R0 K1
0x4C100000, // 000F LDNIL R4
0x200C0604, // 0010 NE R3 R3 R4
0x780E0012, // 0011 JMPF R3 #0025
- 0x880C0105, // 0012 GETMBR R3 R0 K5
+ 0x880C0102, // 0012 GETMBR R3 R0 K2
0x4C100000, // 0013 LDNIL R4
0x200C0604, // 0014 NE R3 R3 R4
0x780E000E, // 0015 JMPF R3 #0025
0x600C0018, // 0016 GETGBL R3 G24
- 0x58100006, // 0017 LDCONST R4 K6
- 0x88140104, // 0018 GETMBR R5 R0 K4
- 0x88180105, // 0019 GETMBR R6 R0 K5
+ 0x5810000A, // 0017 LDCONST R4 K10
+ 0x88140101, // 0018 GETMBR R5 R0 K1
+ 0x88180102, // 0019 GETMBR R6 R0 K2
0x7C0C0600, // 001A CALL R3 3
0x5C040600, // 001B MOVE R1 R3
- 0x880C0102, // 001C GETMBR R3 R0 K2
- 0x240C0703, // 001D GT R3 R3 K3
+ 0x880C0108, // 001C GETMBR R3 R0 K8
+ 0x240C0709, // 001D GT R3 R3 K9
0x780E0004, // 001E JMPF R3 #0024
0x600C0008, // 001F GETGBL R3 G8
- 0x88100102, // 0020 GETMBR R4 R0 K2
+ 0x88100108, // 0020 GETMBR R4 R0 K8
0x7C0C0200, // 0021 CALL R3 1
- 0x000E0E03, // 0022 ADD R3 K7 R3
+ 0x000E1603, // 0022 ADD R3 K11 R3
0x00040203, // 0023 ADD R1 R1 R3
0x7002001E, // 0024 JMP #0044
- 0x880C0104, // 0025 GETMBR R3 R0 K4
+ 0x880C0101, // 0025 GETMBR R3 R0 K1
0x4C100000, // 0026 LDNIL R4
0x200C0604, // 0027 NE R3 R3 R4
0x780E001A, // 0028 JMPF R3 #0044
- 0x880C0108, // 0029 GETMBR R3 R0 K8
+ 0x880C0103, // 0029 GETMBR R3 R0 K3
0x4C100000, // 002A LDNIL R4
0x200C0604, // 002B NE R3 R3 R4
0x780E0016, // 002C JMPF R3 #0044
- 0x880C0109, // 002D GETMBR R3 R0 K9
+ 0x880C0104, // 002D GETMBR R3 R0 K4
0x4C100000, // 002E LDNIL R4
0x200C0604, // 002F NE R3 R3 R4
0x780E0012, // 0030 JMPF R3 #0044
0x600C0018, // 0031 GETGBL R3 G24
- 0x5810000A, // 0032 LDCONST R4 K10
- 0x88140104, // 0033 GETMBR R5 R0 K4
- 0x88180109, // 0034 GETMBR R6 R0 K9
+ 0x5810000C, // 0032 LDCONST R4 K12
+ 0x88140101, // 0033 GETMBR R5 R0 K1
+ 0x88180104, // 0034 GETMBR R6 R0 K4
0x781A0001, // 0035 JMPF R6 #0038
- 0x5818000B, // 0036 LDCONST R6 K11
+ 0x5818000D, // 0036 LDCONST R6 K13
0x70020000, // 0037 JMP #0039
- 0x5818000C, // 0038 LDCONST R6 K12
- 0x881C0108, // 0039 GETMBR R7 R0 K8
+ 0x5818000E, // 0038 LDCONST R6 K14
+ 0x881C0103, // 0039 GETMBR R7 R0 K3
0x7C0C0800, // 003A CALL R3 4
0x5C040600, // 003B MOVE R1 R3
- 0x880C0102, // 003C GETMBR R3 R0 K2
- 0x240C0703, // 003D GT R3 R3 K3
+ 0x880C0108, // 003C GETMBR R3 R0 K8
+ 0x240C0709, // 003D GT R3 R3 K9
0x780E0004, // 003E JMPF R3 #0044
0x600C0008, // 003F GETGBL R3 G8
- 0x88100102, // 0040 GETMBR R4 R0 K2
+ 0x88100108, // 0040 GETMBR R4 R0 K8
0x7C0C0200, // 0041 CALL R3 1
- 0x000E0E03, // 0042 ADD R3 K7 R3
+ 0x000E1603, // 0042 ADD R3 K11 R3
0x00040203, // 0043 ADD R1 R1 R3
0x80040200, // 0044 RET 1 R1
})
@@ -166,47 +189,29 @@ be_local_closure(class_zcl_attribute_key_tostring, /* name */
/********************************************************************
** Solidified function: setmember
********************************************************************/
-extern const bclass be_class_zcl_attribute;
be_local_closure(class_zcl_attribute_setmember, /* name */
be_nested_proto(
7, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zcl_attribute,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
- /* K0 */ be_nested_str_weak(cluster),
- /* K1 */ be_nested_str_weak(_cluster),
- /* K2 */ be_nested_str_weak(attr_id),
- /* K3 */ be_nested_str_weak(_attr_id),
- /* K4 */ be_nested_str_weak(_iscmd),
- /* K5 */ be_const_int(0),
- /* K6 */ be_nested_str_weak(cmd),
- /* K7 */ be_nested_str_weak(_cmd),
- /* K8 */ be_const_int(1),
- /* K9 */ be_nested_str_weak(direction),
- /* K10 */ be_nested_str_weak(_direction),
- /* K11 */ be_nested_str_weak(val),
- /* K12 */ be_nested_str_weak(_set_val),
- /* K13 */ be_nested_str_weak(key),
- /* K14 */ be_nested_str_weak(_set_key),
- /* K15 */ be_nested_str_weak(setmember),
- }),
+ &be_ktab_class_zcl_attribute, /* shared constants */
be_str_weak(setmember),
&be_const_str_solidified,
( &(const binstruction[66]) { /* code */
- 0x1C0C0300, // 0000 EQ R3 R1 K0
+ 0x1C0C0301, // 0000 EQ R3 R1 K1
0x780E0007, // 0001 JMPF R3 #000A
0x4C0C0000, // 0002 LDNIL R3
0x1C0C0403, // 0003 EQ R3 R2 R3
0x780E0002, // 0004 JMPF R3 #0008
0x540EFFFE, // 0005 LDINT R3 65535
- 0x90020203, // 0006 SETMBR R0 K1 R3
+ 0x90021E03, // 0006 SETMBR R0 K15 R3
0x70020000, // 0007 JMP #0009
- 0x90020202, // 0008 SETMBR R0 K1 R2
+ 0x90021E02, // 0008 SETMBR R0 K15 R2
0x70020036, // 0009 JMP #0041
0x1C0C0302, // 000A EQ R3 R1 K2
0x780E0008, // 000B JMPF R3 #0015
@@ -214,52 +219,52 @@ be_local_closure(class_zcl_attribute_setmember, /* name */
0x1C0C0403, // 000D EQ R3 R2 R3
0x780E0002, // 000E JMPF R3 #0012
0x540EFFFE, // 000F LDINT R3 65535
- 0x90020603, // 0010 SETMBR R0 K3 R3
+ 0x90022003, // 0010 SETMBR R0 K16 R3
0x70020001, // 0011 JMP #0014
- 0x90020602, // 0012 SETMBR R0 K3 R2
- 0x90020905, // 0013 SETMBR R0 K4 K5
+ 0x90022002, // 0012 SETMBR R0 K16 R2
+ 0x90022312, // 0013 SETMBR R0 K17 K18
0x7002002B, // 0014 JMP #0041
- 0x1C0C0306, // 0015 EQ R3 R1 K6
+ 0x1C0C0303, // 0015 EQ R3 R1 K3
0x780E0008, // 0016 JMPF R3 #0020
0x4C0C0000, // 0017 LDNIL R3
0x1C0C0403, // 0018 EQ R3 R2 R3
0x780E0002, // 0019 JMPF R3 #001D
0x540E00FE, // 001A LDINT R3 255
- 0x90020E03, // 001B SETMBR R0 K7 R3
+ 0x90022603, // 001B SETMBR R0 K19 R3
0x70020001, // 001C JMP #001F
- 0x90020E02, // 001D SETMBR R0 K7 R2
- 0x90020908, // 001E SETMBR R0 K4 K8
+ 0x90022602, // 001D SETMBR R0 K19 R2
+ 0x90022309, // 001E SETMBR R0 K17 K9
0x70020020, // 001F JMP #0041
- 0x1C0C0309, // 0020 EQ R3 R1 K9
+ 0x1C0C0304, // 0020 EQ R3 R1 K4
0x780E000B, // 0021 JMPF R3 #002E
0x4C0C0000, // 0022 LDNIL R3
0x1C0C0403, // 0023 EQ R3 R2 R3
0x780E0001, // 0024 JMPF R3 #0027
- 0x90021505, // 0025 SETMBR R0 K10 K5
+ 0x90022912, // 0025 SETMBR R0 K20 K18
0x70020005, // 0026 JMP #002D
0x780A0001, // 0027 JMPF R2 #002A
- 0x580C0008, // 0028 LDCONST R3 K8
+ 0x580C0009, // 0028 LDCONST R3 K9
0x70020000, // 0029 JMP #002B
- 0x580C0005, // 002A LDCONST R3 K5
- 0x90021403, // 002B SETMBR R0 K10 R3
- 0x90020908, // 002C SETMBR R0 K4 K8
+ 0x580C0012, // 002A LDCONST R3 K18
+ 0x90022803, // 002B SETMBR R0 K20 R3
+ 0x90022309, // 002C SETMBR R0 K17 K9
0x70020012, // 002D JMP #0041
- 0x1C0C030B, // 002E EQ R3 R1 K11
+ 0x1C0C0306, // 002E EQ R3 R1 K6
0x780E0003, // 002F JMPF R3 #0034
- 0x8C0C010C, // 0030 GETMET R3 R0 K12
+ 0x8C0C0115, // 0030 GETMET R3 R0 K21
0x5C140400, // 0031 MOVE R5 R2
0x7C0C0400, // 0032 CALL R3 2
0x7002000C, // 0033 JMP #0041
- 0x1C0C030D, // 0034 EQ R3 R1 K13
+ 0x1C0C0305, // 0034 EQ R3 R1 K5
0x780E0003, // 0035 JMPF R3 #003A
- 0x8C0C010E, // 0036 GETMET R3 R0 K14
+ 0x8C0C0116, // 0036 GETMET R3 R0 K22
0x5C140400, // 0037 MOVE R5 R2
0x7C0C0400, // 0038 CALL R3 2
0x70020006, // 0039 JMP #0041
0x600C0003, // 003A GETGBL R3 G3
0x5C100000, // 003B MOVE R4 R0
0x7C0C0200, // 003C CALL R3 1
- 0x8C0C070F, // 003D GETMET R3 R3 K15
+ 0x8C0C0717, // 003D GETMET R3 R3 K23
0x5C140200, // 003E MOVE R5 R1
0x5C180400, // 003F MOVE R6 R2
0x7C0C0600, // 0040 CALL R3 3
@@ -273,82 +278,67 @@ be_local_closure(class_zcl_attribute_setmember, /* name */
/********************************************************************
** Solidified function: tostring
********************************************************************/
-extern const bclass be_class_zcl_attribute;
be_local_closure(class_zcl_attribute_tostring, /* name */
be_nested_proto(
10, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zcl_attribute,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(introspect),
- /* K1 */ be_nested_str_weak(json),
- /* K2 */ be_nested_str_weak(dump),
- /* K3 */ be_nested_str_weak(key_tostring),
- /* K4 */ be_nested_str_weak(_X3A),
- /* K5 */ be_nested_str_weak(get),
- /* K6 */ be_nested_str_weak(val),
- /* K7 */ be_nested_str_weak(tojson),
- /* K8 */ be_nested_str_weak(cluster),
- /* K9 */ be_nested_str_weak(attr_id),
- /* K10 */ be_nested_str_weak(key),
- /* K11 */ be_nested_str_weak(_X28_X25s_X29),
- /* K12 */ be_nested_str_weak(_X2C_X25s_X3A_X22_X2504X_X2F_X2504X_X22),
- }),
+ &be_ktab_class_zcl_attribute, /* shared constants */
be_str_weak(tostring),
&be_const_str_solidified,
( &(const binstruction[50]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0xA40A0200, // 0001 IMPORT R2 K1
- 0x8C0C0502, // 0002 GETMET R3 R2 K2
- 0x8C140103, // 0003 GETMET R5 R0 K3
+ 0xA4063000, // 0000 IMPORT R1 K24
+ 0xA40A3200, // 0001 IMPORT R2 K25
+ 0x8C0C051A, // 0002 GETMET R3 R2 K26
+ 0x8C14011B, // 0003 GETMET R5 R0 K27
0x7C140200, // 0004 CALL R5 1
0x7C0C0400, // 0005 CALL R3 2
- 0x000C0704, // 0006 ADD R3 R3 K4
- 0x8C100305, // 0007 GETMET R4 R1 K5
+ 0x000C071C, // 0006 ADD R3 R3 K28
+ 0x8C10031D, // 0007 GETMET R4 R1 K29
0x88180106, // 0008 GETMBR R6 R0 K6
- 0x581C0007, // 0009 LDCONST R7 K7
+ 0x581C001E, // 0009 LDCONST R7 K30
0x7C100600, // 000A CALL R4 3
0x4C140000, // 000B LDNIL R5
0x20100805, // 000C NE R4 R4 R5
0x78120004, // 000D JMPF R4 #0013
0x88100106, // 000E GETMBR R4 R0 K6
- 0x8C100907, // 000F GETMET R4 R4 K7
+ 0x8C10091E, // 000F GETMET R4 R4 K30
0x7C100200, // 0010 CALL R4 1
0x000C0604, // 0011 ADD R3 R3 R4
0x70020003, // 0012 JMP #0017
- 0x8C100502, // 0013 GETMET R4 R2 K2
+ 0x8C10051A, // 0013 GETMET R4 R2 K26
0x88180106, // 0014 GETMBR R6 R0 K6
0x7C100400, // 0015 CALL R4 2
0x000C0604, // 0016 ADD R3 R3 R4
- 0x88100108, // 0017 GETMBR R4 R0 K8
+ 0x88100101, // 0017 GETMBR R4 R0 K1
0x4C140000, // 0018 LDNIL R5
0x20100805, // 0019 NE R4 R4 R5
0x78120015, // 001A JMPF R4 #0031
- 0x88100109, // 001B GETMBR R4 R0 K9
+ 0x88100102, // 001B GETMBR R4 R0 K2
0x4C140000, // 001C LDNIL R5
0x20100805, // 001D NE R4 R4 R5
0x78120011, // 001E JMPF R4 #0031
- 0x8810010A, // 001F GETMBR R4 R0 K10
+ 0x88100105, // 001F GETMBR R4 R0 K5
0x4C140000, // 0020 LDNIL R5
0x20100805, // 0021 NE R4 R4 R5
0x7812000D, // 0022 JMPF R4 #0031
0x60100018, // 0023 GETGBL R4 G24
- 0x5814000B, // 0024 LDCONST R5 K11
- 0x8C180103, // 0025 GETMET R6 R0 K3
+ 0x5814001F, // 0024 LDCONST R5 K31
+ 0x8C18011B, // 0025 GETMET R6 R0 K27
0x7C180200, // 0026 CALL R6 1
0x7C100400, // 0027 CALL R4 2
0x60140018, // 0028 GETGBL R5 G24
- 0x5818000C, // 0029 LDCONST R6 K12
- 0x8C1C0502, // 002A GETMET R7 R2 K2
+ 0x58180020, // 0029 LDCONST R6 K32
+ 0x8C1C051A, // 002A GETMET R7 R2 K26
0x5C240800, // 002B MOVE R9 R4
0x7C1C0400, // 002C CALL R7 2
- 0x88200108, // 002D GETMBR R8 R0 K8
- 0x88240109, // 002E GETMBR R9 R0 K9
+ 0x88200101, // 002D GETMBR R8 R0 K1
+ 0x88240102, // 002E GETMBR R9 R0 K2
0x7C140800, // 002F CALL R5 4
0x000C0605, // 0030 ADD R3 R3 R5
0x80040600, // 0031 RET 1 R3
@@ -361,34 +351,30 @@ be_local_closure(class_zcl_attribute_tostring, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_zcl_attribute;
be_local_closure(class_zcl_attribute_init, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zcl_attribute,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(_init),
- }),
+ &be_ktab_class_zcl_attribute, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0
0x7C080200, // 0002 CALL R2 1
- 0x8C080500, // 0003 GETMET R2 R2 K0
+ 0x8C080521, // 0003 GETMET R2 R2 K33
0x5C100200, // 0004 MOVE R4 R1
0x7C080400, // 0005 CALL R2 2
0x4C080000, // 0006 LDNIL R2
0x1C080202, // 0007 EQ R2 R1 R2
0x780A0001, // 0008 JMPF R2 #000B
- 0x8C080101, // 0009 GETMET R2 R0 K1
+ 0x8C080122, // 0009 GETMET R2 R0 K34
0x7C080200, // 000A CALL R2 1
0x80000000, // 000B RET 0
})
@@ -400,28 +386,24 @@ be_local_closure(class_zcl_attribute_init, /* name */
/********************************************************************
** Solidified function: deinit
********************************************************************/
-extern const bclass be_class_zcl_attribute;
be_local_closure(class_zcl_attribute_deinit, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zcl_attribute,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(ismapped),
- /* K1 */ be_nested_str_weak(_deinit),
- }),
+ &be_ktab_class_zcl_attribute, /* shared constants */
be_str_weak(deinit),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040123, // 0000 GETMET R1 R0 K35
0x7C040200, // 0001 CALL R1 1
0x74060001, // 0002 JMPT R1 #0005
- 0x8C040101, // 0003 GETMET R1 R0 K1
+ 0x8C040124, // 0003 GETMET R1 R0 K36
0x7C040200, // 0004 CALL R1 1
0x80000000, // 0005 RET 0
})
@@ -433,42 +415,23 @@ be_local_closure(class_zcl_attribute_deinit, /* name */
/********************************************************************
** Solidified function: member
********************************************************************/
-extern const bclass be_class_zcl_attribute;
be_local_closure(class_zcl_attribute_member, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zcl_attribute,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_nested_str_weak(cluster),
- /* K1 */ be_nested_str_weak(_cluster),
- /* K2 */ be_nested_str_weak(attr_id),
- /* K3 */ be_nested_str_weak(_attr_id),
- /* K4 */ be_nested_str_weak(_iscmd),
- /* K5 */ be_nested_str_weak(cmd),
- /* K6 */ be_nested_str_weak(_cmd),
- /* K7 */ be_nested_str_weak(direction),
- /* K8 */ be_nested_str_weak(_direction),
- /* K9 */ be_nested_str_weak(cmd_general),
- /* K10 */ be_nested_str_weak(_cmd_general),
- /* K11 */ be_nested_str_weak(val),
- /* K12 */ be_nested_str_weak(_get_val),
- /* K13 */ be_nested_str_weak(tohex),
- /* K14 */ be_nested_str_weak(key),
- /* K15 */ be_nested_str_weak(_get_key),
- /* K16 */ be_nested_str_weak(member),
- }),
+ &be_ktab_class_zcl_attribute, /* shared constants */
be_str_weak(member),
&be_const_str_solidified,
( &(const binstruction[75]) { /* code */
- 0x1C080300, // 0000 EQ R2 R1 K0
+ 0x1C080301, // 0000 EQ R2 R1 K1
0x780A0008, // 0001 JMPF R2 #000B
- 0x88080101, // 0002 GETMBR R2 R0 K1
+ 0x8808010F, // 0002 GETMBR R2 R0 K15
0x540EFFFE, // 0003 LDINT R3 65535
0x200C0403, // 0004 NE R3 R2 R3
0x780E0001, // 0005 JMPF R3 #0008
@@ -479,64 +442,64 @@ be_local_closure(class_zcl_attribute_member, /* name */
0x7002003E, // 000A JMP #004A
0x1C080302, // 000B EQ R2 R1 K2
0x780A000A, // 000C JMPF R2 #0018
- 0x88080103, // 000D GETMBR R2 R0 K3
+ 0x88080110, // 000D GETMBR R2 R0 K16
0x540EFFFE, // 000E LDINT R3 65535
0x200C0403, // 000F NE R3 R2 R3
0x780E0003, // 0010 JMPF R3 #0015
- 0x880C0104, // 0011 GETMBR R3 R0 K4
+ 0x880C0111, // 0011 GETMBR R3 R0 K17
0x740E0001, // 0012 JMPT R3 #0015
0x5C0C0400, // 0013 MOVE R3 R2
0x70020000, // 0014 JMP #0016
0x4C0C0000, // 0015 LDNIL R3
0x80040600, // 0016 RET 1 R3
0x70020031, // 0017 JMP #004A
- 0x1C080305, // 0018 EQ R2 R1 K5
+ 0x1C080303, // 0018 EQ R2 R1 K3
0x780A000A, // 0019 JMPF R2 #0025
- 0x88080106, // 001A GETMBR R2 R0 K6
+ 0x88080113, // 001A GETMBR R2 R0 K19
0x540E00FE, // 001B LDINT R3 255
0x200C0403, // 001C NE R3 R2 R3
0x780E0003, // 001D JMPF R3 #0022
- 0x880C0104, // 001E GETMBR R3 R0 K4
+ 0x880C0111, // 001E GETMBR R3 R0 K17
0x780E0001, // 001F JMPF R3 #0022
0x5C0C0400, // 0020 MOVE R3 R2
0x70020000, // 0021 JMP #0023
0x4C0C0000, // 0022 LDNIL R3
0x80040600, // 0023 RET 1 R3
0x70020024, // 0024 JMP #004A
- 0x1C080307, // 0025 EQ R2 R1 K7
+ 0x1C080304, // 0025 EQ R2 R1 K4
0x780A0002, // 0026 JMPF R2 #002A
- 0x88080108, // 0027 GETMBR R2 R0 K8
+ 0x88080114, // 0027 GETMBR R2 R0 K20
0x80040400, // 0028 RET 1 R2
0x7002001F, // 0029 JMP #004A
- 0x1C080309, // 002A EQ R2 R1 K9
+ 0x1C080325, // 002A EQ R2 R1 K37
0x780A0002, // 002B JMPF R2 #002F
- 0x8808010A, // 002C GETMBR R2 R0 K10
+ 0x88080126, // 002C GETMBR R2 R0 K38
0x80040400, // 002D RET 1 R2
0x7002001A, // 002E JMP #004A
- 0x1C08030B, // 002F EQ R2 R1 K11
+ 0x1C080306, // 002F EQ R2 R1 K6
0x780A000B, // 0030 JMPF R2 #003D
- 0x8C08010C, // 0031 GETMET R2 R0 K12
+ 0x8C080127, // 0031 GETMET R2 R0 K39
0x7C080200, // 0032 CALL R2 1
0x600C000F, // 0033 GETGBL R3 G15
0x5C100400, // 0034 MOVE R4 R2
0x60140015, // 0035 GETGBL R5 G21
0x7C0C0400, // 0036 CALL R3 2
0x780E0002, // 0037 JMPF R3 #003B
- 0x8C0C050D, // 0038 GETMET R3 R2 K13
+ 0x8C0C0528, // 0038 GETMET R3 R2 K40
0x7C0C0200, // 0039 CALL R3 1
0x5C080600, // 003A MOVE R2 R3
0x80040400, // 003B RET 1 R2
0x7002000C, // 003C JMP #004A
- 0x1C08030E, // 003D EQ R2 R1 K14
+ 0x1C080305, // 003D EQ R2 R1 K5
0x780A0003, // 003E JMPF R2 #0043
- 0x8C08010F, // 003F GETMET R2 R0 K15
+ 0x8C080129, // 003F GETMET R2 R0 K41
0x7C080200, // 0040 CALL R2 1
0x80040400, // 0041 RET 1 R2
0x70020006, // 0042 JMP #004A
0x60080003, // 0043 GETGBL R2 G3
0x5C0C0000, // 0044 MOVE R3 R0
0x7C080200, // 0045 CALL R2 1
- 0x8C080510, // 0046 GETMET R2 R2 K16
+ 0x8C08052A, // 0046 GETMET R2 R2 K42
0x5C100200, // 0047 MOVE R4 R1
0x7C080400, // 0048 CALL R2 2
0x80040400, // 0049 RET 1 R2
@@ -566,32 +529,54 @@ be_local_class(zcl_attribute,
})),
be_str_weak(zcl_attribute)
);
+// compact class 'zcl_attribute_list' ktab size: 27, total: 36 (saved 72 bytes)
+static const bvalue be_ktab_class_zcl_attribute_list[27] = {
+ /* K0 */ be_nested_str_weak(groupaddr),
+ /* K1 */ be_nested_str_weak(_groupaddr),
+ /* K2 */ be_nested_str_weak(src_ep),
+ /* K3 */ be_nested_str_weak(_src_ep),
+ /* K4 */ be_nested_str_weak(lqi),
+ /* K5 */ be_nested_str_weak(_lqi),
+ /* K6 */ be_nested_str_weak(member),
+ /* K7 */ be_nested_str_weak(setmember),
+ /* K8 */ be_nested_str_weak(init),
+ /* K9 */ be_nested_str_weak(_init),
+ /* K10 */ be_nested_str_weak(ismapped),
+ /* K11 */ be_nested_str_weak(_deinit),
+ /* K12 */ be_nested_str_weak(json),
+ /* K13 */ be_nested_str_weak(shortaddr),
+ /* K14 */ be_nested_str_weak(push),
+ /* K15 */ be_nested_str_weak(_X22Device_X22_X3A_X220x_X2504X_X22),
+ /* K16 */ be_nested_str_weak(_X22Group_X22_X3A_X220x_X2504X_X22),
+ /* K17 */ be_const_int(0),
+ /* K18 */ be_nested_str_weak(size),
+ /* K19 */ be_nested_str_weak(tostring),
+ /* K20 */ be_const_int(1),
+ /* K21 */ be_nested_str_weak(_X22Endpoint_X22_X3A_X25s),
+ /* K22 */ be_nested_str_weak(_X22LinkQuality_X22_X3A_X25s),
+ /* K23 */ be_nested_str_weak(_X7B),
+ /* K24 */ be_nested_str_weak(concat),
+ /* K25 */ be_nested_str_weak(_X2C),
+ /* K26 */ be_nested_str_weak(_X7D),
+};
+
extern const bclass be_class_zcl_attribute_list;
/********************************************************************
** Solidified function: member
********************************************************************/
-extern const bclass be_class_zcl_attribute_list;
be_local_closure(class_zcl_attribute_list_member, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zcl_attribute_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(groupaddr),
- /* K1 */ be_nested_str_weak(_groupaddr),
- /* K2 */ be_nested_str_weak(src_ep),
- /* K3 */ be_nested_str_weak(_src_ep),
- /* K4 */ be_nested_str_weak(lqi),
- /* K5 */ be_nested_str_weak(_lqi),
- /* K6 */ be_nested_str_weak(member),
- }),
+ &be_ktab_class_zcl_attribute_list, /* shared constants */
be_str_weak(member),
&be_const_str_solidified,
( &(const binstruction[41]) { /* code */
@@ -645,26 +630,17 @@ be_local_closure(class_zcl_attribute_list_member, /* name */
/********************************************************************
** Solidified function: setmember
********************************************************************/
-extern const bclass be_class_zcl_attribute_list;
be_local_closure(class_zcl_attribute_list_setmember, /* name */
be_nested_proto(
7, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zcl_attribute_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(groupaddr),
- /* K1 */ be_nested_str_weak(_groupaddr),
- /* K2 */ be_nested_str_weak(src_ep),
- /* K3 */ be_nested_str_weak(_src_ep),
- /* K4 */ be_nested_str_weak(lqi),
- /* K5 */ be_nested_str_weak(_lqi),
- /* K6 */ be_nested_str_weak(setmember),
- }),
+ &be_ktab_class_zcl_attribute_list, /* shared constants */
be_str_weak(setmember),
&be_const_str_solidified,
( &(const binstruction[38]) { /* code */
@@ -701,7 +677,7 @@ be_local_closure(class_zcl_attribute_list_setmember, /* name */
0x600C0003, // 001E GETGBL R3 G3
0x5C100000, // 001F MOVE R4 R0
0x7C0C0200, // 0020 CALL R3 1
- 0x8C0C0706, // 0021 GETMET R3 R3 K6
+ 0x8C0C0707, // 0021 GETMET R3 R3 K7
0x5C140200, // 0022 MOVE R5 R1
0x5C180400, // 0023 MOVE R6 R2
0x7C0C0600, // 0024 CALL R3 3
@@ -715,34 +691,30 @@ be_local_closure(class_zcl_attribute_list_setmember, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_zcl_attribute_list;
be_local_closure(class_zcl_attribute_list_init, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zcl_attribute_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(_init),
- }),
+ &be_ktab_class_zcl_attribute_list, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0
0x7C080200, // 0002 CALL R2 1
- 0x8C080500, // 0003 GETMET R2 R2 K0
+ 0x8C080508, // 0003 GETMET R2 R2 K8
0x5C100200, // 0004 MOVE R4 R1
0x7C080400, // 0005 CALL R2 2
0x4C080000, // 0006 LDNIL R2
0x1C080202, // 0007 EQ R2 R1 R2
0x780A0001, // 0008 JMPF R2 #000B
- 0x8C080101, // 0009 GETMET R2 R0 K1
+ 0x8C080109, // 0009 GETMET R2 R0 K9
0x7C080200, // 000A CALL R2 1
0x80000000, // 000B RET 0
})
@@ -754,28 +726,24 @@ be_local_closure(class_zcl_attribute_list_init, /* name */
/********************************************************************
** Solidified function: deinit
********************************************************************/
-extern const bclass be_class_zcl_attribute_list;
be_local_closure(class_zcl_attribute_list_deinit, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zcl_attribute_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(ismapped),
- /* K1 */ be_nested_str_weak(_deinit),
- }),
+ &be_ktab_class_zcl_attribute_list, /* shared constants */
be_str_weak(deinit),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C04010A, // 0000 GETMET R1 R0 K10
0x7C040200, // 0001 CALL R1 1
0x74060001, // 0002 JMPT R1 #0005
- 0x8C040101, // 0003 GETMET R1 R0 K1
+ 0x8C04010B, // 0003 GETMET R1 R0 K11
0x7C040200, // 0004 CALL R1 1
0x80000000, // 0005 RET 0
})
@@ -787,101 +755,81 @@ be_local_closure(class_zcl_attribute_list_deinit, /* name */
/********************************************************************
** Solidified function: tostring
********************************************************************/
-extern const bclass be_class_zcl_attribute_list;
be_local_closure(class_zcl_attribute_list_tostring, /* name */
be_nested_proto(
11, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zcl_attribute_list,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
- /* K0 */ be_nested_str_weak(json),
- /* K1 */ be_nested_str_weak(shortaddr),
- /* K2 */ be_nested_str_weak(push),
- /* K3 */ be_nested_str_weak(_X22Device_X22_X3A_X220x_X2504X_X22),
- /* K4 */ be_nested_str_weak(groupaddr),
- /* K5 */ be_nested_str_weak(_X22Group_X22_X3A_X220x_X2504X_X22),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(size),
- /* K8 */ be_nested_str_weak(tostring),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str_weak(src_ep),
- /* K11 */ be_nested_str_weak(_X22Endpoint_X22_X3A_X25s),
- /* K12 */ be_nested_str_weak(lqi),
- /* K13 */ be_nested_str_weak(_X22LinkQuality_X22_X3A_X25s),
- /* K14 */ be_nested_str_weak(_X7B),
- /* K15 */ be_nested_str_weak(concat),
- /* K16 */ be_nested_str_weak(_X2C),
- /* K17 */ be_nested_str_weak(_X7D),
- }),
+ &be_ktab_class_zcl_attribute_list, /* shared constants */
be_str_weak(tostring),
&be_const_str_solidified,
( &(const binstruction[62]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
+ 0xA4061800, // 0000 IMPORT R1 K12
0x60080012, // 0001 GETGBL R2 G18
0x7C080000, // 0002 CALL R2 0
0x4C0C0000, // 0003 LDNIL R3
- 0x880C0101, // 0004 GETMBR R3 R0 K1
+ 0x880C010D, // 0004 GETMBR R3 R0 K13
0x4C100000, // 0005 LDNIL R4
0x200C0604, // 0006 NE R3 R3 R4
0x780E0005, // 0007 JMPF R3 #000E
- 0x8C0C0502, // 0008 GETMET R3 R2 K2
+ 0x8C0C050E, // 0008 GETMET R3 R2 K14
0x60140018, // 0009 GETGBL R5 G24
- 0x58180003, // 000A LDCONST R6 K3
+ 0x5818000F, // 000A LDCONST R6 K15
0x5C1C0600, // 000B MOVE R7 R3
0x7C140400, // 000C CALL R5 2
0x7C0C0400, // 000D CALL R3 2
- 0x880C0104, // 000E GETMBR R3 R0 K4
+ 0x880C0100, // 000E GETMBR R3 R0 K0
0x4C100000, // 000F LDNIL R4
0x200C0604, // 0010 NE R3 R3 R4
0x780E0005, // 0011 JMPF R3 #0018
- 0x8C0C0502, // 0012 GETMET R3 R2 K2
+ 0x8C0C050E, // 0012 GETMET R3 R2 K14
0x60140018, // 0013 GETGBL R5 G24
- 0x58180005, // 0014 LDCONST R6 K5
+ 0x58180010, // 0014 LDCONST R6 K16
0x5C1C0600, // 0015 MOVE R7 R3
0x7C140400, // 0016 CALL R5 2
0x7C0C0400, // 0017 CALL R3 2
- 0x58100006, // 0018 LDCONST R4 K6
- 0x8C140107, // 0019 GETMET R5 R0 K7
+ 0x58100011, // 0018 LDCONST R4 K17
+ 0x8C140112, // 0019 GETMET R5 R0 K18
0x7C140200, // 001A CALL R5 1
0x14180805, // 001B LT R6 R4 R5
0x781A0006, // 001C JMPF R6 #0024
- 0x8C180502, // 001D GETMET R6 R2 K2
+ 0x8C18050E, // 001D GETMET R6 R2 K14
0x94200004, // 001E GETIDX R8 R0 R4
- 0x8C201108, // 001F GETMET R8 R8 K8
+ 0x8C201113, // 001F GETMET R8 R8 K19
0x7C200200, // 0020 CALL R8 1
0x7C180400, // 0021 CALL R6 2
- 0x00100909, // 0022 ADD R4 R4 K9
+ 0x00100914, // 0022 ADD R4 R4 K20
0x7001FFF6, // 0023 JMP #001B
- 0x880C010A, // 0024 GETMBR R3 R0 K10
+ 0x880C0102, // 0024 GETMBR R3 R0 K2
0x4C180000, // 0025 LDNIL R6
0x200C0606, // 0026 NE R3 R3 R6
0x780E0005, // 0027 JMPF R3 #002E
- 0x8C180502, // 0028 GETMET R6 R2 K2
+ 0x8C18050E, // 0028 GETMET R6 R2 K14
0x60200018, // 0029 GETGBL R8 G24
- 0x5824000B, // 002A LDCONST R9 K11
+ 0x58240015, // 002A LDCONST R9 K21
0x5C280600, // 002B MOVE R10 R3
0x7C200400, // 002C CALL R8 2
0x7C180400, // 002D CALL R6 2
- 0x880C010C, // 002E GETMBR R3 R0 K12
+ 0x880C0104, // 002E GETMBR R3 R0 K4
0x4C180000, // 002F LDNIL R6
0x200C0606, // 0030 NE R3 R3 R6
0x780E0005, // 0031 JMPF R3 #0038
- 0x8C180502, // 0032 GETMET R6 R2 K2
+ 0x8C18050E, // 0032 GETMET R6 R2 K14
0x60200018, // 0033 GETGBL R8 G24
- 0x5824000D, // 0034 LDCONST R9 K13
+ 0x58240016, // 0034 LDCONST R9 K22
0x5C280600, // 0035 MOVE R10 R3
0x7C200400, // 0036 CALL R8 2
0x7C180400, // 0037 CALL R6 2
- 0x8C18050F, // 0038 GETMET R6 R2 K15
- 0x58200010, // 0039 LDCONST R8 K16
+ 0x8C180518, // 0038 GETMET R6 R2 K24
+ 0x58200019, // 0039 LDCONST R8 K25
0x7C180400, // 003A CALL R6 2
- 0x001A1C06, // 003B ADD R6 K14 R6
- 0x00180D11, // 003C ADD R6 R6 K17
+ 0x001A2E06, // 003B ADD R6 K23 R6
+ 0x00180D1A, // 003C ADD R6 R6 K26
0x80040C00, // 003D RET 1 R6
})
)
diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_frame.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_frame.h
index 9c6ab3a5d..a6d64dc00 100644
--- a/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_frame.h
+++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_zigbee_zcl_frame.h
@@ -3,29 +3,39 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'zcl_frame' ktab size: 12, total: 16 (saved 32 bytes)
+static const bvalue be_ktab_class_zcl_frame[12] = {
+ /* K0 */ be_nested_str_weak(payload),
+ /* K1 */ be_nested_str_weak(_get_bytes),
+ /* K2 */ be_nested_str_weak(payload_ptr),
+ /* K3 */ be_nested_str_weak(member),
+ /* K4 */ be_nested_str_weak(_set_bytes),
+ /* K5 */ be_nested_str_weak(setmember),
+ /* K6 */ be_nested_str_weak(init),
+ /* K7 */ be_nested_str_weak(no_bytes),
+ /* K8 */ be_nested_str_weak(tomap),
+ /* K9 */ be_nested_str_weak(shortaddr_hex),
+ /* K10 */ be_nested_str_weak(0x_X2504X),
+ /* K11 */ be_nested_str_weak(shortaddr),
+};
+
extern const bclass be_class_zcl_frame;
/********************************************************************
** Solidified function: member
********************************************************************/
-extern const bclass be_class_zcl_frame;
be_local_closure(class_zcl_frame_member, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zcl_frame,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(payload),
- /* K1 */ be_nested_str_weak(_get_bytes),
- /* K2 */ be_nested_str_weak(payload_ptr),
- /* K3 */ be_nested_str_weak(member),
- }),
+ &be_ktab_class_zcl_frame, /* shared constants */
be_str_weak(member),
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
@@ -53,29 +63,23 @@ be_local_closure(class_zcl_frame_member, /* name */
/********************************************************************
** Solidified function: setmember
********************************************************************/
-extern const bclass be_class_zcl_frame;
be_local_closure(class_zcl_frame_setmember, /* name */
be_nested_proto(
7, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zcl_frame,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(payload),
- /* K1 */ be_nested_str_weak(_set_bytes),
- /* K2 */ be_nested_str_weak(payload_ptr),
- /* K3 */ be_nested_str_weak(setmember),
- }),
+ &be_ktab_class_zcl_frame, /* shared constants */
be_str_weak(setmember),
&be_const_str_solidified,
( &(const binstruction[17]) { /* code */
0x1C0C0300, // 0000 EQ R3 R1 K0
0x780E0005, // 0001 JMPF R3 #0008
- 0x8C0C0101, // 0002 GETMET R3 R0 K1
+ 0x8C0C0104, // 0002 GETMET R3 R0 K4
0x88140102, // 0003 GETMBR R5 R0 K2
0x5C180400, // 0004 MOVE R6 R2
0x7C0C0600, // 0005 CALL R3 3
@@ -84,7 +88,7 @@ be_local_closure(class_zcl_frame_setmember, /* name */
0x600C0003, // 0008 GETGBL R3 G3
0x5C100000, // 0009 MOVE R4 R0
0x7C0C0200, // 000A CALL R3 1
- 0x8C0C0703, // 000B GETMET R3 R3 K3
+ 0x8C0C0705, // 000B GETMET R3 R3 K5
0x5C140200, // 000C MOVE R5 R1
0x5C180400, // 000D MOVE R6 R2
0x7C0C0600, // 000E CALL R3 3
@@ -99,33 +103,29 @@ be_local_closure(class_zcl_frame_setmember, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_zcl_frame;
be_local_closure(class_zcl_frame_init, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zcl_frame,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- /* K1 */ be_nested_str_weak(no_bytes),
- }),
+ &be_ktab_class_zcl_frame, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0
0x7C080200, // 0002 CALL R2 1
- 0x8C080500, // 0003 GETMET R2 R2 K0
+ 0x8C080506, // 0003 GETMET R2 R2 K6
0x5C100200, // 0004 MOVE R4 R1
0x7C080400, // 0005 CALL R2 2
0x60080015, // 0006 GETGBL R2 G21
0x7C080000, // 0007 CALL R2 0
- 0x90020202, // 0008 SETMBR R0 K1 R2
+ 0x90020E02, // 0008 SETMBR R0 K7 R2
0x80000000, // 0009 RET 0
})
)
@@ -136,39 +136,32 @@ be_local_closure(class_zcl_frame_init, /* name */
/********************************************************************
** Solidified function: tomap
********************************************************************/
-extern const bclass be_class_zcl_frame;
be_local_closure(class_zcl_frame_tomap, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zcl_frame,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(tomap),
- /* K1 */ be_nested_str_weak(shortaddr_hex),
- /* K2 */ be_nested_str_weak(0x_X2504X),
- /* K3 */ be_nested_str_weak(shortaddr),
- /* K4 */ be_nested_str_weak(payload),
- }),
+ &be_ktab_class_zcl_frame, /* shared constants */
be_str_weak(tomap),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
0x60040003, // 0000 GETGBL R1 G3
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
- 0x8C040300, // 0003 GETMET R1 R1 K0
+ 0x8C040308, // 0003 GETMET R1 R1 K8
0x7C040200, // 0004 CALL R1 1
0x60080018, // 0005 GETGBL R2 G24
- 0x580C0002, // 0006 LDCONST R3 K2
- 0x88100103, // 0007 GETMBR R4 R0 K3
+ 0x580C000A, // 0006 LDCONST R3 K10
+ 0x8810010B, // 0007 GETMBR R4 R0 K11
0x7C080400, // 0008 CALL R2 2
- 0x98060202, // 0009 SETIDX R1 K1 R2
- 0x88080104, // 000A GETMBR R2 R0 K4
- 0x98060802, // 000B SETIDX R1 K4 R2
+ 0x98061202, // 0009 SETIDX R1 K9 R2
+ 0x88080100, // 000A GETMBR R2 R0 K0
+ 0x98060002, // 000B SETIDX R1 K0 R2
0x80040200, // 000C RET 1 R1
})
)
@@ -179,24 +172,21 @@ be_local_closure(class_zcl_frame_tomap, /* name */
/********************************************************************
** Solidified function: tostring
********************************************************************/
-extern const bclass be_class_zcl_frame;
be_local_closure(class_zcl_frame_tostring, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_zcl_frame,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(tomap),
- }),
+ &be_ktab_class_zcl_frame, /* shared constants */
be_str_weak(tostring),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040108, // 0000 GETMET R1 R0 K8
0x7C040200, // 0001 CALL R1 1
0x60080008, // 0002 GETGBL R2 G8
0x5C0C0200, // 0003 MOVE R3 R1
diff --git a/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lv.h b/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lv.h
index 3a7fdb769..c8a8c84e7 100644
--- a/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lv.h
+++ b/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lv.h
@@ -15,7 +15,7 @@ be_local_closure(lv_module_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[12]) { /* constants */
/* K0 */ be_nested_str_weak(lv),
diff --git a/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_extra.h b/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_extra.h
index 6c023695c..9255abbd2 100644
--- a/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_extra.h
+++ b/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_extra.h
@@ -9,7 +9,6 @@ extern const bclass be_class_lv_str_arr;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_lv_str_arr;
be_local_closure(class_lv_str_arr_init, /* name */
be_nested_proto(
11, /* nstack */
@@ -18,7 +17,7 @@ be_local_closure(class_lv_str_arr_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_str_arr,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 6]) { /* constants */
/* K0 */ be_nested_str_weak(l),
@@ -88,7 +87,6 @@ extern const bclass be_class_lv_int_arr;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_lv_int_arr;
be_local_closure(class_lv_int_arr_init, /* name */
be_nested_proto(
9, /* nstack */
@@ -97,7 +95,7 @@ be_local_closure(class_lv_int_arr_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_int_arr,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 8]) { /* constants */
/* K0 */ be_nested_str_weak(instance),
@@ -179,7 +177,6 @@ be_local_closure(class_lv_int_arr_init, /* name */
/********************************************************************
** Solidified function: item
********************************************************************/
-extern const bclass be_class_lv_int_arr;
be_local_closure(class_lv_int_arr_item, /* name */
be_nested_proto(
6, /* nstack */
@@ -188,7 +185,7 @@ be_local_closure(class_lv_int_arr_item, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_int_arr,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(get),
@@ -211,7 +208,6 @@ be_local_closure(class_lv_int_arr_item, /* name */
/********************************************************************
** Solidified function: setitem
********************************************************************/
-extern const bclass be_class_lv_int_arr;
be_local_closure(class_lv_int_arr_setitem, /* name */
be_nested_proto(
8, /* nstack */
@@ -220,7 +216,7 @@ be_local_closure(class_lv_int_arr_setitem, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_int_arr,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(set),
@@ -262,7 +258,6 @@ extern const bclass be_class_lv_point_arr;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_lv_point_arr;
be_local_closure(class_lv_point_arr_init, /* name */
be_nested_proto(
8, /* nstack */
@@ -271,7 +266,7 @@ be_local_closure(class_lv_point_arr_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_point_arr,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[11]) { /* constants */
/* K0 */ be_nested_str_weak(instance),
@@ -372,7 +367,7 @@ be_local_closure(_anonymous_, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[12]) { /* constants */
/* K0 */ be_nested_str_weak(global),
@@ -421,7 +416,6 @@ extern const bclass be_class_lv_style_prop_arr;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_lv_style_prop_arr;
be_local_closure(class_lv_style_prop_arr_init, /* name */
be_nested_proto(
8, /* nstack */
@@ -430,7 +424,7 @@ be_local_closure(class_lv_style_prop_arr_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_style_prop_arr,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 6]) { /* constants */
/* K0 */ be_nested_str_weak(instance),
@@ -506,7 +500,6 @@ extern const bclass be_class_lv_coord_arr;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_lv_coord_arr;
be_local_closure(class_lv_coord_arr_init, /* name */
be_nested_proto(
9, /* nstack */
@@ -515,7 +508,7 @@ be_local_closure(class_lv_coord_arr_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_coord_arr,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 8]) { /* constants */
/* K0 */ be_nested_str_weak(instance),
@@ -597,7 +590,6 @@ be_local_closure(class_lv_coord_arr_init, /* name */
/********************************************************************
** Solidified function: item
********************************************************************/
-extern const bclass be_class_lv_coord_arr;
be_local_closure(class_lv_coord_arr_item, /* name */
be_nested_proto(
6, /* nstack */
@@ -606,7 +598,7 @@ be_local_closure(class_lv_coord_arr_item, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_coord_arr,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(get),
@@ -629,7 +621,6 @@ be_local_closure(class_lv_coord_arr_item, /* name */
/********************************************************************
** Solidified function: setitem
********************************************************************/
-extern const bclass be_class_lv_coord_arr;
be_local_closure(class_lv_coord_arr_setitem, /* name */
be_nested_proto(
8, /* nstack */
@@ -638,7 +629,7 @@ be_local_closure(class_lv_coord_arr_setitem, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lv_coord_arr,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(set),
diff --git a/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_glob.h b/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_glob.h
index 5801d36dc..d2bf5ca7c 100644
--- a/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_glob.h
+++ b/lib/libesp32_lvgl/lv_binding_berry/src/solidify/solidified_lvgl_glob.h
@@ -3,22 +3,97 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+// compact class 'LVGL_glob' ktab size: 72, total: 131 (saved 472 bytes)
+static const bvalue be_ktab_class_LVGL_glob[72] = {
+ /* K0 */ be_nested_str_weak(event_cb),
+ /* K1 */ be_nested_str_weak(cb),
+ /* K2 */ be_nested_str_weak(gen_cb),
+ /* K3 */ be_nested_str_weak(push),
+ /* K4 */ be_nested_str_weak(stop_iteration),
+ /* K5 */ be_nested_str_weak(cb_event_closure),
+ /* K6 */ be_nested_str_weak(contains),
+ /* K7 */ be_nested_str_weak(function),
+ /* K8 */ be_const_int(1),
+ /* K9 */ be_const_int(0),
+ /* K10 */ be_nested_str_weak(lv_event_cb),
+ /* K11 */ be_nested_str_weak(register_obj),
+ /* K12 */ be_nested_str_weak(add_event_cb),
+ /* K13 */ be_nested_str_weak(lv),
+ /* K14 */ be_nested_str_weak(EVENT_DELETE),
+ /* K15 */ be_nested_str_weak(add_cb_event_closure),
+ /* K16 */ be_nested_str_weak(_p),
+ /* K17 */ be_nested_str_weak(get_event_cb),
+ /* K18 */ be_nested_str_weak(lv_timer_cb),
+ /* K19 */ be_nested_str_weak(timer_cb),
+ /* K20 */ be_const_int(2),
+ /* K21 */ be_nested_str_weak(lv_),
+ /* K22 */ be_nested_str_weak(null_cb),
+ /* K23 */ be_nested_str_weak(cb_do_nothing),
+ /* K24 */ be_nested_str_weak(introspect),
+ /* K25 */ be_nested_str_weak(toptr),
+ /* K26 */ be_nested_str_weak(event),
+ /* K27 */ be_nested_str_weak(lv_event),
+ /* K28 */ be_nested_str_weak(get_target),
+ /* K29 */ be_nested_str_weak(get_object_from_ptr),
+ /* K30 */ be_nested_str_weak(cb_obj),
+ /* K31 */ be_nested_str_weak(remove),
+ /* K32 */ be_nested_str_weak(lv_obj_class),
+ /* K33 */ be_nested_str_weak(get_target_obj),
+ /* K34 */ be_nested_str_weak(instance),
+ /* K35 */ be_nested_str_weak(get_code),
+ /* K36 */ be_nested_str_weak(get),
+ /* K37 */ be_nested_str_weak(before_del),
+ /* K38 */ be_nested_str_weak(widget_event),
+ /* K39 */ be_nested_str_weak(widget_destructor),
+ /* K40 */ be_nested_str_weak(find),
+ /* K41 */ be_nested_str_weak(widget_constructor),
+ /* K42 */ be_nested_str_weak(LVG_X3A_X20call_X20to_X20unsupported_X20callback),
+ /* K43 */ be_nested_str_weak(add_handler),
+ /* K44 */ be_nested_str_weak(lv_extra),
+ /* K45 */ be_nested_str_weak(lv_obj),
+ /* K46 */ be_nested_str_weak(value_error),
+ /* K47 */ be_nested_str_weak(arg_X20must_X20be_X20a_X20subclass_X20of_X20lv_obj),
+ /* K48 */ be_nested_str_weak(widget_struct_by_class),
+ /* K49 */ be_nested_str_weak(widget_cb),
+ /* K50 */ be_nested_str_weak(widget_struct_default),
+ /* K51 */ be_nested_str_weak(copy),
+ /* K52 */ be_nested_str_weak(base_class),
+ /* K53 */ be_nested_str_weak(_class),
+ /* K54 */ be_nested_str_weak(widget_width_def),
+ /* K55 */ be_nested_str_weak(width_def),
+ /* K56 */ be_nested_str_weak(widget_height_def),
+ /* K57 */ be_nested_str_weak(height_def),
+ /* K58 */ be_nested_str_weak(widget_editable),
+ /* K59 */ be_nested_str_weak(editable),
+ /* K60 */ be_nested_str_weak(widget_group_def),
+ /* K61 */ be_nested_str_weak(group_def),
+ /* K62 */ be_nested_str_weak(widget_instance_size),
+ /* K63 */ be_nested_str_weak(instance_size),
+ /* K64 */ be_nested_str_weak(obj_class_create_obj),
+ /* K65 */ be_nested_str_weak(class_init_obj),
+ /* K66 */ be_nested_str_weak(widget_ctor_cb),
+ /* K67 */ be_nested_str_weak(widget_dtor_cb),
+ /* K68 */ be_nested_str_weak(widget_event_cb),
+ /* K69 */ be_nested_str_weak(constructor_cb),
+ /* K70 */ be_nested_str_weak(destructor_cb),
+ /* K71 */ be_nested_str_weak(deregister_obj),
+};
+
extern const bclass be_class_LVGL_glob;
/********************************************************************
** Solidified function: get_event_cb
********************************************************************/
-extern const bclass be_class_LVGL_glob;
be_local_closure(class_LVGL_glob_get_event_cb, /* name */
be_nested_proto(
9, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
5, /* nstack */
1, /* argc */
@@ -29,7 +104,7 @@ be_local_closure(class_LVGL_glob_get_event_cb, /* name */
be_local_const_upval(1, 4),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(lvgl_event_dispatch),
@@ -45,16 +120,9 @@ be_local_closure(class_LVGL_glob_get_event_cb, /* name */
0x80040200, // 0005 RET 1 R1
})
),
- &be_class_LVGL_glob,
}),
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(event_cb),
- /* K1 */ be_nested_str_weak(cb),
- /* K2 */ be_nested_str_weak(gen_cb),
- /* K3 */ be_nested_str_weak(push),
- /* K4 */ be_nested_str_weak(stop_iteration),
- }),
+ &be_ktab_class_LVGL_glob, /* shared constants */
be_str_weak(get_event_cb),
&be_const_str_solidified,
( &(const binstruction[32]) { /* code */
@@ -99,70 +167,62 @@ be_local_closure(class_LVGL_glob_get_event_cb, /* name */
/********************************************************************
** Solidified function: add_cb_event_closure
********************************************************************/
-extern const bclass be_class_LVGL_glob;
be_local_closure(class_LVGL_glob_add_cb_event_closure, /* name */
be_nested_proto(
7, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_LVGL_glob,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(cb_event_closure),
- /* K1 */ be_nested_str_weak(contains),
- /* K2 */ be_nested_str_weak(function),
- /* K3 */ be_const_int(1),
- /* K4 */ be_nested_str_weak(push),
- /* K5 */ be_const_int(0),
- }),
+ &be_ktab_class_LVGL_glob, /* shared constants */
be_str_weak(add_cb_event_closure),
&be_const_str_solidified,
( &(const binstruction[43]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
+ 0x880C0105, // 0000 GETMBR R3 R0 K5
0x4C100000, // 0001 LDNIL R4
0x1C0C0604, // 0002 EQ R3 R3 R4
0x780E0002, // 0003 JMPF R3 #0007
0x600C0013, // 0004 GETGBL R3 G19
0x7C0C0000, // 0005 CALL R3 0
- 0x90020003, // 0006 SETMBR R0 K0 R3
- 0x880C0100, // 0007 GETMBR R3 R0 K0
- 0x8C0C0701, // 0008 GETMET R3 R3 K1
+ 0x90020A03, // 0006 SETMBR R0 K5 R3
+ 0x880C0105, // 0007 GETMBR R3 R0 K5
+ 0x8C0C0706, // 0008 GETMET R3 R3 K6
0x5C140200, // 0009 MOVE R5 R1
0x7C0C0400, // 000A CALL R3 2
0x780E001A, // 000B JMPF R3 #0027
- 0x880C0100, // 000C GETMBR R3 R0 K0
+ 0x880C0105, // 000C GETMBR R3 R0 K5
0x940C0601, // 000D GETIDX R3 R3 R1
0x60100004, // 000E GETGBL R4 G4
0x5C140600, // 000F MOVE R5 R3
0x7C100200, // 0010 CALL R4 1
- 0x1C100902, // 0011 EQ R4 R4 K2
+ 0x1C100907, // 0011 EQ R4 R4 K7
0x78120007, // 0012 JMPF R4 #001B
- 0x88100100, // 0013 GETMBR R4 R0 K0
+ 0x88100105, // 0013 GETMBR R4 R0 K5
0x60140012, // 0014 GETGBL R5 G18
0x7C140000, // 0015 CALL R5 0
0x40180A03, // 0016 CONNECT R6 R5 R3
0x40180A02, // 0017 CONNECT R6 R5 R2
0x98100205, // 0018 SETIDX R4 R1 R5
- 0x80060600, // 0019 RET 1 K3
+ 0x80061000, // 0019 RET 1 K8
0x7002000A, // 001A JMP #0026
- 0x88100100, // 001B GETMBR R4 R0 K0
+ 0x88100105, // 001B GETMBR R4 R0 K5
0x94100801, // 001C GETIDX R4 R4 R1
- 0x8C100904, // 001D GETMET R4 R4 K4
+ 0x8C100903, // 001D GETMET R4 R4 K3
0x5C180400, // 001E MOVE R6 R2
0x7C100400, // 001F CALL R4 2
0x6010000C, // 0020 GETGBL R4 G12
- 0x88140100, // 0021 GETMBR R5 R0 K0
+ 0x88140105, // 0021 GETMBR R5 R0 K5
0x94140A01, // 0022 GETIDX R5 R5 R1
0x7C100200, // 0023 CALL R4 1
- 0x04100903, // 0024 SUB R4 R4 K3
+ 0x04100908, // 0024 SUB R4 R4 K8
0x80040800, // 0025 RET 1 R4
0x70020002, // 0026 JMP #002A
- 0x880C0100, // 0027 GETMBR R3 R0 K0
+ 0x880C0105, // 0027 GETMBR R3 R0 K5
0x980C0202, // 0028 SETIDX R3 R1 R2
- 0x80060A00, // 0029 RET 1 K5
+ 0x80061200, // 0029 RET 1 K9
0x80000000, // 002A RET 0
})
)
@@ -173,16 +233,15 @@ be_local_closure(class_LVGL_glob_add_cb_event_closure, /* name */
/********************************************************************
** Solidified function: make_cb
********************************************************************/
-extern const bclass be_class_LVGL_glob;
be_local_closure(class_LVGL_glob_make_cb, /* name */
be_nested_proto(
11, /* nstack */
4, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 3]) {
+ ( &(const struct bproto*[ 2]) {
be_nested_proto(
4, /* nstack */
1, /* argc */
@@ -192,7 +251,7 @@ be_local_closure(class_LVGL_glob_make_cb, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(remove_cb),
@@ -216,7 +275,7 @@ be_local_closure(class_LVGL_glob_make_cb, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(lvgl_timer_dispatch),
@@ -231,28 +290,9 @@ be_local_closure(class_LVGL_glob_make_cb, /* name */
0x80040200, // 0004 RET 1 R1
})
),
- &be_class_LVGL_glob,
}),
1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_nested_str_weak(cb),
- /* K1 */ be_nested_str_weak(lv_event_cb),
- /* K2 */ be_nested_str_weak(register_obj),
- /* K3 */ be_nested_str_weak(add_event_cb),
- /* K4 */ be_nested_str_weak(lv),
- /* K5 */ be_nested_str_weak(EVENT_DELETE),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(add_cb_event_closure),
- /* K8 */ be_nested_str_weak(_p),
- /* K9 */ be_nested_str_weak(get_event_cb),
- /* K10 */ be_nested_str_weak(lv_timer_cb),
- /* K11 */ be_nested_str_weak(timer_cb),
- /* K12 */ be_nested_str_weak(gen_cb),
- /* K13 */ be_const_int(2),
- /* K14 */ be_nested_str_weak(lv_),
- /* K15 */ be_nested_str_weak(null_cb),
- /* K16 */ be_nested_str_weak(cb_do_nothing),
- }),
+ &be_ktab_class_LVGL_glob, /* shared constants */
be_str_weak(make_cb),
&be_const_str_solidified,
( &(const binstruction[70]) { /* code */
@@ -261,63 +301,63 @@ be_local_closure(class_LVGL_glob_make_cb, /* name */
0x78120001, // 0002 JMPF R4 #0005
0x4C100000, // 0003 LDNIL R4
0x80040800, // 0004 RET 1 R4
- 0xA4120000, // 0005 IMPORT R4 K0
- 0x1C140701, // 0006 EQ R5 R3 K1
+ 0xA4120200, // 0005 IMPORT R4 K1
+ 0x1C14070A, // 0006 EQ R5 R3 K10
0x78160016, // 0007 JMPF R5 #001F
- 0x8C140102, // 0008 GETMET R5 R0 K2
+ 0x8C14010B, // 0008 GETMET R5 R0 K11
0x5C1C0400, // 0009 MOVE R7 R2
0x7C140400, // 000A CALL R5 2
0x78160000, // 000B JMPF R5 #000D
0x50140001, // 000C LDBOOL R5 0 1
0x50140200, // 000D LDBOOL R5 1 0
0x78160005, // 000E JMPF R5 #0015
- 0x8C180503, // 000F GETMET R6 R2 K3
+ 0x8C18050C, // 000F GETMET R6 R2 K12
0x84200000, // 0010 CLOSURE R8 P0
- 0xB8260800, // 0011 GETNGBL R9 K4
- 0x88241305, // 0012 GETMBR R9 R9 K5
- 0x58280006, // 0013 LDCONST R10 K6
+ 0xB8261A00, // 0011 GETNGBL R9 K13
+ 0x8824130E, // 0012 GETMBR R9 R9 K14
+ 0x58280009, // 0013 LDCONST R10 K9
0x7C180800, // 0014 CALL R6 4
- 0x8C180107, // 0015 GETMET R6 R0 K7
- 0x88200508, // 0016 GETMBR R8 R2 K8
+ 0x8C18010F, // 0015 GETMET R6 R0 K15
+ 0x88200510, // 0016 GETMBR R8 R2 K16
0x5C240200, // 0017 MOVE R9 R1
0x7C180600, // 0018 CALL R6 3
- 0x8C1C0109, // 0019 GETMET R7 R0 K9
+ 0x8C1C0111, // 0019 GETMET R7 R0 K17
0x5C240C00, // 001A MOVE R9 R6
0x7C1C0400, // 001B CALL R7 2
0xA0000000, // 001C CLOSE R0
0x80040E00, // 001D RET 1 R7
0x70020024, // 001E JMP #0044
- 0x1C14070A, // 001F EQ R5 R3 K10
+ 0x1C140712, // 001F EQ R5 R3 K18
0x7816000F, // 0020 JMPF R5 #0031
- 0x8814010B, // 0021 GETMBR R5 R0 K11
+ 0x88140113, // 0021 GETMBR R5 R0 K19
0x4C180000, // 0022 LDNIL R6
0x1C140A06, // 0023 EQ R5 R5 R6
0x78160003, // 0024 JMPF R5 #0029
- 0x8C14090C, // 0025 GETMET R5 R4 K12
+ 0x8C140902, // 0025 GETMET R5 R4 K2
0x841C0001, // 0026 CLOSURE R7 P1
0x7C140400, // 0027 CALL R5 2
- 0x90021605, // 0028 SETMBR R0 K11 R5
- 0x8C140107, // 0029 GETMET R5 R0 K7
- 0x881C0508, // 002A GETMBR R7 R2 K8
+ 0x90022605, // 0028 SETMBR R0 K19 R5
+ 0x8C14010F, // 0029 GETMET R5 R0 K15
+ 0x881C0510, // 002A GETMBR R7 R2 K16
0x5C200200, // 002B MOVE R8 R1
0x7C140600, // 002C CALL R5 3
- 0x8814010B, // 002D GETMBR R5 R0 K11
+ 0x88140113, // 002D GETMBR R5 R0 K19
0xA0000000, // 002E CLOSE R0
0x80040A00, // 002F RET 1 R5
0x70020012, // 0030 JMP #0044
- 0x40160D0D, // 0031 CONNECT R5 K6 K13
+ 0x40161314, // 0031 CONNECT R5 K9 K20
0x94140605, // 0032 GETIDX R5 R3 R5
- 0x1C140B0E, // 0033 EQ R5 R5 K14
+ 0x1C140B15, // 0033 EQ R5 R5 K21
0x7816000B, // 0034 JMPF R5 #0041
- 0x8814010F, // 0035 GETMBR R5 R0 K15
+ 0x88140116, // 0035 GETMBR R5 R0 K22
0x4C180000, // 0036 LDNIL R6
0x1C140A06, // 0037 EQ R5 R5 R6
0x78160003, // 0038 JMPF R5 #003D
- 0x8C14090C, // 0039 GETMET R5 R4 K12
- 0x881C0110, // 003A GETMBR R7 R0 K16
+ 0x8C140902, // 0039 GETMET R5 R4 K2
+ 0x881C0117, // 003A GETMBR R7 R0 K23
0x7C140400, // 003B CALL R5 2
- 0x90021E05, // 003C SETMBR R0 K15 R5
- 0x8814010F, // 003D GETMBR R5 R0 K15
+ 0x90022C05, // 003C SETMBR R0 K22 R5
+ 0x88140116, // 003D GETMBR R5 R0 K22
0xA0000000, // 003E CLOSE R0
0x80040A00, // 003F RET 1 R5
0x70020002, // 0040 JMP #0044
@@ -335,44 +375,36 @@ be_local_closure(class_LVGL_glob_make_cb, /* name */
/********************************************************************
** Solidified function: lvgl_timer_dispatch
********************************************************************/
-extern const bclass be_class_LVGL_glob;
be_local_closure(class_LVGL_glob_lvgl_timer_dispatch, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_LVGL_glob,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(introspect),
- /* K1 */ be_nested_str_weak(toptr),
- /* K2 */ be_nested_str_weak(cb_event_closure),
- /* K3 */ be_nested_str_weak(function),
- /* K4 */ be_const_int(0),
- /* K5 */ be_const_int(1),
- }),
+ &be_ktab_class_LVGL_glob, /* shared constants */
be_str_weak(lvgl_timer_dispatch),
&be_const_str_solidified,
( &(const binstruction[27]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x8C0C0501, // 0001 GETMET R3 R2 K1
+ 0xA40A3000, // 0000 IMPORT R2 K24
+ 0x8C0C0519, // 0001 GETMET R3 R2 K25
0x5C140200, // 0002 MOVE R5 R1
0x7C0C0400, // 0003 CALL R3 2
- 0x88100102, // 0004 GETMBR R4 R0 K2
+ 0x88100105, // 0004 GETMBR R4 R0 K5
0x94100803, // 0005 GETIDX R4 R4 R3
0x60140004, // 0006 GETGBL R5 G4
0x5C180800, // 0007 MOVE R6 R4
0x7C140200, // 0008 CALL R5 1
- 0x1C140B03, // 0009 EQ R5 R5 K3
+ 0x1C140B07, // 0009 EQ R5 R5 K7
0x78160003, // 000A JMPF R5 #000F
0x5C140800, // 000B MOVE R5 R4
0x5C180600, // 000C MOVE R6 R3
0x7C140200, // 000D CALL R5 1
0x7002000A, // 000E JMP #001A
- 0x58140004, // 000F LDCONST R5 K4
+ 0x58140009, // 000F LDCONST R5 K9
0x6018000C, // 0010 GETGBL R6 G12
0x5C1C0800, // 0011 MOVE R7 R4
0x7C180200, // 0012 CALL R6 1
@@ -381,7 +413,7 @@ be_local_closure(class_LVGL_glob_lvgl_timer_dispatch, /* name */
0x94180805, // 0015 GETIDX R6 R4 R5
0x5C1C0600, // 0016 MOVE R7 R3
0x7C180200, // 0017 CALL R6 1
- 0x00140B05, // 0018 ADD R5 R5 K5
+ 0x00140B08, // 0018 ADD R5 R5 K8
0x7001FFF5, // 0019 JMP #0010
0x80000000, // 001A RET 0
})
@@ -393,62 +425,50 @@ be_local_closure(class_LVGL_glob_lvgl_timer_dispatch, /* name */
/********************************************************************
** Solidified function: lvgl_event_dispatch
********************************************************************/
-extern const bclass be_class_LVGL_glob;
be_local_closure(class_LVGL_glob_lvgl_event_dispatch, /* name */
be_nested_proto(
11, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_LVGL_glob,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(introspect),
- /* K1 */ be_nested_str_weak(toptr),
- /* K2 */ be_nested_str_weak(event),
- /* K3 */ be_nested_str_weak(_p),
- /* K4 */ be_nested_str_weak(lv),
- /* K5 */ be_nested_str_weak(lv_event),
- /* K6 */ be_nested_str_weak(get_target),
- /* K7 */ be_nested_str_weak(get_object_from_ptr),
- /* K8 */ be_nested_str_weak(cb_event_closure),
- /* K9 */ be_nested_str_weak(function),
- }),
+ &be_ktab_class_LVGL_glob, /* shared constants */
be_str_weak(lvgl_event_dispatch),
&be_const_str_solidified,
( &(const binstruction[42]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
- 0x8C100701, // 0001 GETMET R4 R3 K1
+ 0xA40E3000, // 0000 IMPORT R3 K24
+ 0x8C100719, // 0001 GETMET R4 R3 K25
0x5C180400, // 0002 MOVE R6 R2
0x7C100400, // 0003 CALL R4 2
- 0x88140102, // 0004 GETMBR R5 R0 K2
+ 0x8814011A, // 0004 GETMBR R5 R0 K26
0x78160002, // 0005 JMPF R5 #0009
- 0x88140102, // 0006 GETMBR R5 R0 K2
- 0x90160604, // 0007 SETMBR R5 K3 R4
+ 0x8814011A, // 0006 GETMBR R5 R0 K26
+ 0x90162004, // 0007 SETMBR R5 K16 R4
0x70020004, // 0008 JMP #000E
- 0xB8160800, // 0009 GETNGBL R5 K4
- 0x8C140B05, // 000A GETMET R5 R5 K5
+ 0xB8161A00, // 0009 GETNGBL R5 K13
+ 0x8C140B1B, // 000A GETMET R5 R5 K27
0x5C1C0800, // 000B MOVE R7 R4
0x7C140400, // 000C CALL R5 2
- 0x90020405, // 000D SETMBR R0 K2 R5
- 0x88140102, // 000E GETMBR R5 R0 K2
- 0x8C140B06, // 000F GETMET R5 R5 K6
+ 0x90023405, // 000D SETMBR R0 K26 R5
+ 0x8814011A, // 000E GETMBR R5 R0 K26
+ 0x8C140B1C, // 000F GETMET R5 R5 K28
0x7C140200, // 0010 CALL R5 1
- 0x8C180107, // 0011 GETMET R6 R0 K7
+ 0x8C18011D, // 0011 GETMET R6 R0 K29
0x5C200A00, // 0012 MOVE R8 R5
0x7C180400, // 0013 CALL R6 2
- 0x881C0108, // 0014 GETMBR R7 R0 K8
+ 0x881C0105, // 0014 GETMBR R7 R0 K5
0x941C0E05, // 0015 GETIDX R7 R7 R5
0x60200004, // 0016 GETGBL R8 G4
0x5C240E00, // 0017 MOVE R9 R7
0x7C200200, // 0018 CALL R8 1
- 0x1C201109, // 0019 EQ R8 R8 K9
+ 0x1C201107, // 0019 EQ R8 R8 K7
0x78220004, // 001A JMPF R8 #0020
0x5C200E00, // 001B MOVE R8 R7
0x5C240C00, // 001C MOVE R9 R6
- 0x88280102, // 001D GETMBR R10 R0 K2
+ 0x8828011A, // 001D GETMBR R10 R0 K26
0x7C200400, // 001E CALL R8 2
0x70020008, // 001F JMP #0029
0x6020000C, // 0020 GETGBL R8 G12
@@ -458,7 +478,7 @@ be_local_closure(class_LVGL_glob_lvgl_event_dispatch, /* name */
0x78220003, // 0024 JMPF R8 #0029
0x94200E01, // 0025 GETIDX R8 R7 R1
0x5C240C00, // 0026 MOVE R9 R6
- 0x88280102, // 0027 GETMBR R10 R0 K2
+ 0x8828011A, // 0027 GETMBR R10 R0 K26
0x7C200400, // 0028 CALL R8 2
0x80000000, // 0029 RET 0
})
@@ -470,39 +490,34 @@ be_local_closure(class_LVGL_glob_lvgl_event_dispatch, /* name */
/********************************************************************
** Solidified function: deregister_obj
********************************************************************/
-extern const bclass be_class_LVGL_glob;
be_local_closure(class_LVGL_glob_deregister_obj, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_LVGL_glob,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(cb_obj),
- /* K1 */ be_nested_str_weak(remove),
- /* K2 */ be_nested_str_weak(cb_event_closure),
- }),
+ &be_ktab_class_LVGL_glob, /* shared constants */
be_str_weak(deregister_obj),
&be_const_str_solidified,
( &(const binstruction[17]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8808011E, // 0000 GETMBR R2 R0 K30
0x4C0C0000, // 0001 LDNIL R3
0x20080403, // 0002 NE R2 R2 R3
0x780A0003, // 0003 JMPF R2 #0008
- 0x88080100, // 0004 GETMBR R2 R0 K0
- 0x8C080501, // 0005 GETMET R2 R2 K1
+ 0x8808011E, // 0004 GETMBR R2 R0 K30
+ 0x8C08051F, // 0005 GETMET R2 R2 K31
0x5C100200, // 0006 MOVE R4 R1
0x7C080400, // 0007 CALL R2 2
- 0x88080102, // 0008 GETMBR R2 R0 K2
+ 0x88080105, // 0008 GETMBR R2 R0 K5
0x4C0C0000, // 0009 LDNIL R3
0x20080403, // 000A NE R2 R2 R3
0x780A0003, // 000B JMPF R2 #0010
- 0x88080102, // 000C GETMBR R2 R0 K2
- 0x8C080501, // 000D GETMET R2 R2 K1
+ 0x88080105, // 000C GETMBR R2 R0 K5
+ 0x8C08051F, // 000D GETMET R2 R2 K31
0x5C100200, // 000E MOVE R4 R1
0x7C080400, // 000F CALL R2 2
0x80000000, // 0010 RET 0
@@ -515,42 +530,37 @@ be_local_closure(class_LVGL_glob_deregister_obj, /* name */
/********************************************************************
** Solidified function: register_obj
********************************************************************/
-extern const bclass be_class_LVGL_glob;
be_local_closure(class_LVGL_glob_register_obj, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_LVGL_glob,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(cb_obj),
- /* K1 */ be_nested_str_weak(contains),
- /* K2 */ be_nested_str_weak(_p),
- }),
+ &be_ktab_class_LVGL_glob, /* shared constants */
be_str_weak(register_obj),
&be_const_str_solidified,
( &(const binstruction[21]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8808011E, // 0000 GETMBR R2 R0 K30
0x4C0C0000, // 0001 LDNIL R3
0x1C080403, // 0002 EQ R2 R2 R3
0x780A0002, // 0003 JMPF R2 #0007
0x60080013, // 0004 GETGBL R2 G19
0x7C080000, // 0005 CALL R2 0
- 0x90020002, // 0006 SETMBR R0 K0 R2
- 0x88080100, // 0007 GETMBR R2 R0 K0
- 0x8C080501, // 0008 GETMET R2 R2 K1
- 0x88100302, // 0009 GETMBR R4 R1 K2
+ 0x90023C02, // 0006 SETMBR R0 K30 R2
+ 0x8808011E, // 0007 GETMBR R2 R0 K30
+ 0x8C080506, // 0008 GETMET R2 R2 K6
+ 0x88100310, // 0009 GETMBR R4 R1 K16
0x7C080400, // 000A CALL R2 2
0x780A0002, // 000B JMPF R2 #000F
0x50080200, // 000C LDBOOL R2 1 0
0x80040400, // 000D RET 1 R2
0x70020004, // 000E JMP #0014
- 0x88080100, // 000F GETMBR R2 R0 K0
- 0x880C0302, // 0010 GETMBR R3 R1 K2
+ 0x8808011E, // 000F GETMBR R2 R0 K30
+ 0x880C0310, // 0010 GETMBR R3 R1 K16
0x98080601, // 0011 SETIDX R2 R3 R1
0x50080000, // 0012 LDBOOL R2 0 0
0x80040400, // 0013 RET 1 R2
@@ -564,79 +574,63 @@ be_local_closure(class_LVGL_glob_register_obj, /* name */
/********************************************************************
** Solidified function: widget_event_impl
********************************************************************/
-extern const bclass be_class_LVGL_glob;
be_local_closure(class_LVGL_glob_widget_event_impl, /* name */
be_nested_proto(
12, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_LVGL_glob,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(introspect),
- /* K1 */ be_nested_str_weak(lv),
- /* K2 */ be_nested_str_weak(lv_obj_class),
- /* K3 */ be_nested_str_weak(lv_event),
- /* K4 */ be_nested_str_weak(toptr),
- /* K5 */ be_nested_str_weak(get_target_obj),
- /* K6 */ be_nested_str_weak(get_object_from_ptr),
- /* K7 */ be_nested_str_weak(_p),
- /* K8 */ be_nested_str_weak(instance),
- /* K9 */ be_nested_str_weak(get_code),
- /* K10 */ be_nested_str_weak(EVENT_DELETE),
- /* K11 */ be_nested_str_weak(get),
- /* K12 */ be_nested_str_weak(before_del),
- /* K13 */ be_nested_str_weak(widget_event),
- }),
+ &be_ktab_class_LVGL_glob, /* shared constants */
be_str_weak(widget_event_impl),
&be_const_str_solidified,
( &(const binstruction[47]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
- 0xB8120200, // 0001 GETNGBL R4 K1
- 0x8C100902, // 0002 GETMET R4 R4 K2
+ 0xA40E3000, // 0000 IMPORT R3 K24
+ 0xB8121A00, // 0001 GETNGBL R4 K13
+ 0x8C100920, // 0002 GETMET R4 R4 K32
0x5C180200, // 0003 MOVE R6 R1
0x7C100400, // 0004 CALL R4 2
- 0xB8160200, // 0005 GETNGBL R5 K1
- 0x8C140B03, // 0006 GETMET R5 R5 K3
- 0x8C1C0704, // 0007 GETMET R7 R3 K4
+ 0xB8161A00, // 0005 GETNGBL R5 K13
+ 0x8C140B1B, // 0006 GETMET R5 R5 K27
+ 0x8C1C0719, // 0007 GETMET R7 R3 K25
0x5C240400, // 0008 MOVE R9 R2
0x7C1C0400, // 0009 CALL R7 2
0x7C140400, // 000A CALL R5 2
- 0x8C180B05, // 000B GETMET R6 R5 K5
+ 0x8C180B21, // 000B GETMET R6 R5 K33
0x7C180200, // 000C CALL R6 1
- 0x8C1C0106, // 000D GETMET R7 R0 K6
- 0x88240D07, // 000E GETMBR R9 R6 K7
+ 0x8C1C011D, // 000D GETMET R7 R0 K29
+ 0x88240D10, // 000E GETMBR R9 R6 K16
0x7C1C0400, // 000F CALL R7 2
0x60200004, // 0010 GETGBL R8 G4
0x5C240E00, // 0011 MOVE R9 R7
0x7C200200, // 0012 CALL R8 1
- 0x1C201108, // 0013 EQ R8 R8 K8
+ 0x1C201122, // 0013 EQ R8 R8 K34
0x78220018, // 0014 JMPF R8 #002E
- 0x8C200B09, // 0015 GETMET R8 R5 K9
+ 0x8C200B23, // 0015 GETMET R8 R5 K35
0x7C200200, // 0016 CALL R8 1
- 0xB8260200, // 0017 GETNGBL R9 K1
- 0x8824130A, // 0018 GETMBR R9 R9 K10
+ 0xB8261A00, // 0017 GETNGBL R9 K13
+ 0x8824130E, // 0018 GETMBR R9 R9 K14
0x1C201009, // 0019 EQ R8 R8 R9
0x78220009, // 001A JMPF R8 #0025
- 0x8C20070B, // 001B GETMET R8 R3 K11
+ 0x8C200724, // 001B GETMET R8 R3 K36
0x5C280E00, // 001C MOVE R10 R7
- 0x582C000C, // 001D LDCONST R11 K12
+ 0x582C0025, // 001D LDCONST R11 K37
0x7C200600, // 001E CALL R8 3
0x78220004, // 001F JMPF R8 #0025
- 0x8C200F0C, // 0020 GETMET R8 R7 K12
+ 0x8C200F25, // 0020 GETMET R8 R7 K37
0x5C280800, // 0021 MOVE R10 R4
0x5C2C0A00, // 0022 MOVE R11 R5
0x7C200600, // 0023 CALL R8 3
0x70020008, // 0024 JMP #002E
- 0x8C20070B, // 0025 GETMET R8 R3 K11
+ 0x8C200724, // 0025 GETMET R8 R3 K36
0x5C280E00, // 0026 MOVE R10 R7
- 0x582C000D, // 0027 LDCONST R11 K13
+ 0x582C0026, // 0027 LDCONST R11 K38
0x7C200600, // 0028 CALL R8 3
0x78220003, // 0029 JMPF R8 #002E
- 0x8C200F0D, // 002A GETMET R8 R7 K13
+ 0x8C200F26, // 002A GETMET R8 R7 K38
0x5C280800, // 002B MOVE R10 R4
0x5C2C0A00, // 002C MOVE R11 R5
0x7C200600, // 002D CALL R8 3
@@ -650,48 +644,39 @@ be_local_closure(class_LVGL_glob_widget_event_impl, /* name */
/********************************************************************
** Solidified function: widget_dtor_impl
********************************************************************/
-extern const bclass be_class_LVGL_glob;
be_local_closure(class_LVGL_glob_widget_dtor_impl, /* name */
be_nested_proto(
10, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_LVGL_glob,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(introspect),
- /* K1 */ be_nested_str_weak(lv),
- /* K2 */ be_nested_str_weak(lv_obj_class),
- /* K3 */ be_nested_str_weak(get_object_from_ptr),
- /* K4 */ be_nested_str_weak(instance),
- /* K5 */ be_nested_str_weak(get),
- /* K6 */ be_nested_str_weak(widget_destructor),
- }),
+ &be_ktab_class_LVGL_glob, /* shared constants */
be_str_weak(widget_dtor_impl),
&be_const_str_solidified,
( &(const binstruction[22]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
- 0xB8120200, // 0001 GETNGBL R4 K1
- 0x8C100902, // 0002 GETMET R4 R4 K2
+ 0xA40E3000, // 0000 IMPORT R3 K24
+ 0xB8121A00, // 0001 GETNGBL R4 K13
+ 0x8C100920, // 0002 GETMET R4 R4 K32
0x5C180200, // 0003 MOVE R6 R1
0x7C100400, // 0004 CALL R4 2
- 0x8C140103, // 0005 GETMET R5 R0 K3
+ 0x8C14011D, // 0005 GETMET R5 R0 K29
0x5C1C0400, // 0006 MOVE R7 R2
0x7C140400, // 0007 CALL R5 2
0x60180004, // 0008 GETGBL R6 G4
0x5C1C0A00, // 0009 MOVE R7 R5
0x7C180200, // 000A CALL R6 1
- 0x1C180D04, // 000B EQ R6 R6 K4
+ 0x1C180D22, // 000B EQ R6 R6 K34
0x781A0007, // 000C JMPF R6 #0015
- 0x8C180705, // 000D GETMET R6 R3 K5
+ 0x8C180724, // 000D GETMET R6 R3 K36
0x5C200A00, // 000E MOVE R8 R5
- 0x58240006, // 000F LDCONST R9 K6
+ 0x58240027, // 000F LDCONST R9 K39
0x7C180600, // 0010 CALL R6 3
0x781A0002, // 0011 JMPF R6 #0015
- 0x8C180B06, // 0012 GETMET R6 R5 K6
+ 0x8C180B27, // 0012 GETMET R6 R5 K39
0x5C200800, // 0013 MOVE R8 R4
0x7C180400, // 0014 CALL R6 2
0x80000000, // 0015 RET 0
@@ -704,57 +689,46 @@ be_local_closure(class_LVGL_glob_widget_dtor_impl, /* name */
/********************************************************************
** Solidified function: widget_ctor_impl
********************************************************************/
-extern const bclass be_class_LVGL_glob;
be_local_closure(class_LVGL_glob_widget_ctor_impl, /* name */
be_nested_proto(
10, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_LVGL_glob,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(introspect),
- /* K1 */ be_nested_str_weak(lv),
- /* K2 */ be_nested_str_weak(lv_obj_class),
- /* K3 */ be_nested_str_weak(get_object_from_ptr),
- /* K4 */ be_nested_str_weak(cb_obj),
- /* K5 */ be_nested_str_weak(find),
- /* K6 */ be_nested_str_weak(instance),
- /* K7 */ be_nested_str_weak(get),
- /* K8 */ be_nested_str_weak(widget_constructor),
- }),
+ &be_ktab_class_LVGL_glob, /* shared constants */
be_str_weak(widget_ctor_impl),
&be_const_str_solidified,
( &(const binstruction[29]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
- 0xB8120200, // 0001 GETNGBL R4 K1
- 0x8C100902, // 0002 GETMET R4 R4 K2
+ 0xA40E3000, // 0000 IMPORT R3 K24
+ 0xB8121A00, // 0001 GETNGBL R4 K13
+ 0x8C100920, // 0002 GETMET R4 R4 K32
0x5C180200, // 0003 MOVE R6 R1
0x7C100400, // 0004 CALL R4 2
- 0x8C140103, // 0005 GETMET R5 R0 K3
+ 0x8C14011D, // 0005 GETMET R5 R0 K29
0x5C1C0400, // 0006 MOVE R7 R2
0x7C140400, // 0007 CALL R5 2
- 0x88180104, // 0008 GETMBR R6 R0 K4
- 0x8C180D05, // 0009 GETMET R6 R6 K5
+ 0x8818011E, // 0008 GETMBR R6 R0 K30
+ 0x8C180D28, // 0009 GETMET R6 R6 K40
0x5C200A00, // 000A MOVE R8 R5
0x7C180400, // 000B CALL R6 2
0x781A0001, // 000C JMPF R6 #000F
- 0x88180104, // 000D GETMBR R6 R0 K4
+ 0x8818011E, // 000D GETMBR R6 R0 K30
0x94140C05, // 000E GETIDX R5 R6 R5
0x60180004, // 000F GETGBL R6 G4
0x5C1C0A00, // 0010 MOVE R7 R5
0x7C180200, // 0011 CALL R6 1
- 0x1C180D06, // 0012 EQ R6 R6 K6
+ 0x1C180D22, // 0012 EQ R6 R6 K34
0x781A0007, // 0013 JMPF R6 #001C
- 0x8C180707, // 0014 GETMET R6 R3 K7
+ 0x8C180724, // 0014 GETMET R6 R3 K36
0x5C200A00, // 0015 MOVE R8 R5
- 0x58240008, // 0016 LDCONST R9 K8
+ 0x58240029, // 0016 LDCONST R9 K41
0x7C180600, // 0017 CALL R6 3
0x781A0002, // 0018 JMPF R6 #001C
- 0x8C180B08, // 0019 GETMET R6 R5 K8
+ 0x8C180B29, // 0019 GETMET R6 R5 K41
0x5C200800, // 001A MOVE R8 R4
0x7C180400, // 001B CALL R6 2
0x80000000, // 001C RET 0
@@ -771,20 +745,18 @@ be_local_closure(class_LVGL_glob__anonymous_, /* name */
be_nested_proto(
2, /* nstack */
0, /* argc */
- 0, /* varg */
+ 8, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(LVG_X3A_X20call_X20to_X20unsupported_X20callback),
- }),
+ &be_ktab_class_LVGL_glob, /* shared constants */
be_str_weak(_anonymous_),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x60000001, // 0000 GETGBL R0 G1
- 0x58040000, // 0001 LDCONST R1 K0
+ 0x5804002A, // 0001 LDCONST R1 K42
0x7C000200, // 0002 CALL R0 1
0x80000000, // 0003 RET 0
})
@@ -796,16 +768,15 @@ be_local_closure(class_LVGL_glob__anonymous_, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_LVGL_glob;
be_local_closure(class_LVGL_glob_init, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
8, /* nstack */
3, /* argc */
@@ -815,7 +786,7 @@ be_local_closure(class_LVGL_glob_init, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(make_cb),
@@ -832,22 +803,17 @@ be_local_closure(class_LVGL_glob_init, /* name */
0x80040600, // 0006 RET 1 R3
})
),
- &be_class_LVGL_glob,
}),
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(cb),
- /* K1 */ be_nested_str_weak(add_handler),
- /* K2 */ be_nested_str_weak(lv_extra),
- }),
+ &be_ktab_class_LVGL_glob, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x8C080301, // 0001 GETMET R2 R1 K1
+ 0xA4060200, // 0000 IMPORT R1 K1
+ 0x8C08032B, // 0001 GETMET R2 R1 K43
0x84100000, // 0002 CLOSURE R4 P0
0x7C080400, // 0003 CALL R2 2
- 0xA40A0400, // 0004 IMPORT R2 K2
+ 0xA40A5800, // 0004 IMPORT R2 K44
0xA0000000, // 0005 CLOSE R0
0x80000000, // 0006 RET 0
})
@@ -859,30 +825,26 @@ be_local_closure(class_LVGL_glob_init, /* name */
/********************************************************************
** Solidified function: get_object_from_ptr
********************************************************************/
-extern const bclass be_class_LVGL_glob;
be_local_closure(class_LVGL_glob_get_object_from_ptr, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_LVGL_glob,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(cb_obj),
- /* K1 */ be_nested_str_weak(find),
- }),
+ &be_ktab_class_LVGL_glob, /* shared constants */
be_str_weak(get_object_from_ptr),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8808011E, // 0000 GETMBR R2 R0 K30
0x4C0C0000, // 0001 LDNIL R3
0x20080403, // 0002 NE R2 R2 R3
0x780A0004, // 0003 JMPF R2 #0009
- 0x88080100, // 0004 GETMBR R2 R0 K0
- 0x8C080501, // 0005 GETMET R2 R2 K1
+ 0x8808011E, // 0004 GETMBR R2 R0 K30
+ 0x8C080528, // 0005 GETMET R2 R2 K40
0x5C100200, // 0006 MOVE R4 R1
0x7C080400, // 0007 CALL R2 2
0x80040400, // 0008 RET 1 R2
@@ -896,133 +858,104 @@ be_local_closure(class_LVGL_glob_get_object_from_ptr, /* name */
/********************************************************************
** Solidified function: create_custom_widget
********************************************************************/
-extern const bclass be_class_LVGL_glob;
be_local_closure(class_LVGL_glob_create_custom_widget, /* name */
be_nested_proto(
10, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_LVGL_glob,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[27]) { /* constants */
- /* K0 */ be_nested_str_weak(introspect),
- /* K1 */ be_nested_str_weak(lv),
- /* K2 */ be_nested_str_weak(lv_obj),
- /* K3 */ be_nested_str_weak(value_error),
- /* K4 */ be_nested_str_weak(arg_X20must_X20be_X20a_X20subclass_X20of_X20lv_obj),
- /* K5 */ be_nested_str_weak(widget_struct_by_class),
- /* K6 */ be_nested_str_weak(find),
- /* K7 */ be_nested_str_weak(widget_cb),
- /* K8 */ be_nested_str_weak(widget_struct_default),
- /* K9 */ be_nested_str_weak(copy),
- /* K10 */ be_nested_str_weak(base_class),
- /* K11 */ be_nested_str_weak(_class),
- /* K12 */ be_nested_str_weak(contains),
- /* K13 */ be_nested_str_weak(widget_width_def),
- /* K14 */ be_nested_str_weak(width_def),
- /* K15 */ be_nested_str_weak(widget_height_def),
- /* K16 */ be_nested_str_weak(height_def),
- /* K17 */ be_nested_str_weak(widget_editable),
- /* K18 */ be_nested_str_weak(editable),
- /* K19 */ be_nested_str_weak(widget_group_def),
- /* K20 */ be_nested_str_weak(group_def),
- /* K21 */ be_nested_str_weak(widget_instance_size),
- /* K22 */ be_nested_str_weak(instance_size),
- /* K23 */ be_nested_str_weak(obj_class_create_obj),
- /* K24 */ be_nested_str_weak(_p),
- /* K25 */ be_nested_str_weak(register_obj),
- /* K26 */ be_nested_str_weak(class_init_obj),
- }),
+ &be_ktab_class_LVGL_glob, /* shared constants */
be_str_weak(create_custom_widget),
&be_const_str_solidified,
( &(const binstruction[86]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
+ 0xA40E3000, // 0000 IMPORT R3 K24
0x6010000F, // 0001 GETGBL R4 G15
0x5C140200, // 0002 MOVE R5 R1
- 0xB81A0200, // 0003 GETNGBL R6 K1
- 0x88180D02, // 0004 GETMBR R6 R6 K2
+ 0xB81A1A00, // 0003 GETNGBL R6 K13
+ 0x88180D2D, // 0004 GETMBR R6 R6 K45
0x7C100400, // 0005 CALL R4 2
0x74120000, // 0006 JMPT R4 #0008
- 0xB0060704, // 0007 RAISE 1 K3 K4
- 0x88100105, // 0008 GETMBR R4 R0 K5
+ 0xB0065D2F, // 0007 RAISE 1 K46 K47
+ 0x88100130, // 0008 GETMBR R4 R0 K48
0x4C140000, // 0009 LDNIL R5
0x1C100805, // 000A EQ R4 R4 R5
0x78120002, // 000B JMPF R4 #000F
0x60100013, // 000C GETGBL R4 G19
0x7C100000, // 000D CALL R4 0
- 0x90020A04, // 000E SETMBR R0 K5 R4
+ 0x90026004, // 000E SETMBR R0 K48 R4
0x60100005, // 000F GETGBL R4 G5
0x5C140200, // 0010 MOVE R5 R1
0x7C100200, // 0011 CALL R4 1
- 0x88140105, // 0012 GETMBR R5 R0 K5
- 0x8C140B06, // 0013 GETMET R5 R5 K6
+ 0x88140130, // 0012 GETMBR R5 R0 K48
+ 0x8C140B28, // 0013 GETMET R5 R5 K40
0x5C1C0800, // 0014 MOVE R7 R4
0x7C140400, // 0015 CALL R5 2
0x4C180000, // 0016 LDNIL R6
0x1C180A06, // 0017 EQ R6 R5 R6
0x781A002F, // 0018 JMPF R6 #0049
- 0x8C180107, // 0019 GETMET R6 R0 K7
+ 0x8C180131, // 0019 GETMET R6 R0 K49
0x7C180200, // 001A CALL R6 1
- 0x88180108, // 001B GETMBR R6 R0 K8
- 0x8C180D09, // 001C GETMET R6 R6 K9
+ 0x88180132, // 001B GETMBR R6 R0 K50
+ 0x8C180D33, // 001C GETMET R6 R6 K51
0x7C180200, // 001D CALL R6 1
0x5C140C00, // 001E MOVE R5 R6
0x60180003, // 001F GETGBL R6 G3
0x5C1C0200, // 0020 MOVE R7 R1
0x7C180200, // 0021 CALL R6 1
- 0x88180D0B, // 0022 GETMBR R6 R6 K11
- 0x90161406, // 0023 SETMBR R5 K10 R6
- 0x8C18070C, // 0024 GETMET R6 R3 K12
+ 0x88180D35, // 0022 GETMBR R6 R6 K53
+ 0x90166806, // 0023 SETMBR R5 K52 R6
+ 0x8C180706, // 0024 GETMET R6 R3 K6
0x5C200200, // 0025 MOVE R8 R1
- 0x5824000D, // 0026 LDCONST R9 K13
+ 0x58240036, // 0026 LDCONST R9 K54
0x7C180600, // 0027 CALL R6 3
0x781A0001, // 0028 JMPF R6 #002B
- 0x8818030D, // 0029 GETMBR R6 R1 K13
- 0x90161C06, // 002A SETMBR R5 K14 R6
- 0x8C18070C, // 002B GETMET R6 R3 K12
+ 0x88180336, // 0029 GETMBR R6 R1 K54
+ 0x90166E06, // 002A SETMBR R5 K55 R6
+ 0x8C180706, // 002B GETMET R6 R3 K6
0x5C200200, // 002C MOVE R8 R1
- 0x5824000F, // 002D LDCONST R9 K15
+ 0x58240038, // 002D LDCONST R9 K56
0x7C180600, // 002E CALL R6 3
0x781A0001, // 002F JMPF R6 #0032
- 0x8818030F, // 0030 GETMBR R6 R1 K15
- 0x90162006, // 0031 SETMBR R5 K16 R6
- 0x8C18070C, // 0032 GETMET R6 R3 K12
+ 0x88180338, // 0030 GETMBR R6 R1 K56
+ 0x90167206, // 0031 SETMBR R5 K57 R6
+ 0x8C180706, // 0032 GETMET R6 R3 K6
0x5C200200, // 0033 MOVE R8 R1
- 0x58240011, // 0034 LDCONST R9 K17
+ 0x5824003A, // 0034 LDCONST R9 K58
0x7C180600, // 0035 CALL R6 3
0x781A0001, // 0036 JMPF R6 #0039
- 0x88180311, // 0037 GETMBR R6 R1 K17
- 0x90162406, // 0038 SETMBR R5 K18 R6
- 0x8C18070C, // 0039 GETMET R6 R3 K12
+ 0x8818033A, // 0037 GETMBR R6 R1 K58
+ 0x90167606, // 0038 SETMBR R5 K59 R6
+ 0x8C180706, // 0039 GETMET R6 R3 K6
0x5C200200, // 003A MOVE R8 R1
- 0x58240013, // 003B LDCONST R9 K19
+ 0x5824003C, // 003B LDCONST R9 K60
0x7C180600, // 003C CALL R6 3
0x781A0001, // 003D JMPF R6 #0040
- 0x88180313, // 003E GETMBR R6 R1 K19
- 0x90162806, // 003F SETMBR R5 K20 R6
- 0x8C18070C, // 0040 GETMET R6 R3 K12
+ 0x8818033C, // 003E GETMBR R6 R1 K60
+ 0x90167A06, // 003F SETMBR R5 K61 R6
+ 0x8C180706, // 0040 GETMET R6 R3 K6
0x5C200200, // 0041 MOVE R8 R1
- 0x58240015, // 0042 LDCONST R9 K21
+ 0x5824003E, // 0042 LDCONST R9 K62
0x7C180600, // 0043 CALL R6 3
0x781A0001, // 0044 JMPF R6 #0047
- 0x88180315, // 0045 GETMBR R6 R1 K21
- 0x90162C06, // 0046 SETMBR R5 K22 R6
- 0x88180105, // 0047 GETMBR R6 R0 K5
+ 0x8818033E, // 0045 GETMBR R6 R1 K62
+ 0x90167E06, // 0046 SETMBR R5 K63 R6
+ 0x88180130, // 0047 GETMBR R6 R0 K48
0x98180805, // 0048 SETIDX R6 R4 R5
- 0xB81A0200, // 0049 GETNGBL R6 K1
- 0x8C180D17, // 004A GETMET R6 R6 K23
+ 0xB81A1A00, // 0049 GETNGBL R6 K13
+ 0x8C180D40, // 004A GETMET R6 R6 K64
0x5C200A00, // 004B MOVE R8 R5
0x5C240400, // 004C MOVE R9 R2
0x7C180600, // 004D CALL R6 3
- 0x881C0D18, // 004E GETMBR R7 R6 K24
- 0x90063007, // 004F SETMBR R1 K24 R7
- 0x8C1C0119, // 0050 GETMET R7 R0 K25
+ 0x881C0D10, // 004E GETMBR R7 R6 K16
+ 0x90062007, // 004F SETMBR R1 K16 R7
+ 0x8C1C010B, // 0050 GETMET R7 R0 K11
0x5C240200, // 0051 MOVE R9 R1
0x7C1C0400, // 0052 CALL R7 2
- 0x8C1C031A, // 0053 GETMET R7 R1 K26
+ 0x8C1C0341, // 0053 GETMET R7 R1 K65
0x7C1C0200, // 0054 CALL R7 1
0x80000000, // 0055 RET 0
})
@@ -1034,16 +967,15 @@ be_local_closure(class_LVGL_glob_create_custom_widget, /* name */
/********************************************************************
** Solidified function: widget_cb
********************************************************************/
-extern const bclass be_class_LVGL_glob;
be_local_closure(class_LVGL_glob_widget_cb, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 4]) {
+ ( &(const struct bproto*[ 3]) {
be_nested_proto(
6, /* nstack */
2, /* argc */
@@ -1053,7 +985,7 @@ be_local_closure(class_LVGL_glob_widget_cb, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(widget_ctor_impl),
@@ -1078,7 +1010,7 @@ be_local_closure(class_LVGL_glob_widget_cb, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(widget_dtor_impl),
@@ -1103,7 +1035,7 @@ be_local_closure(class_LVGL_glob_widget_cb, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(widget_event_impl),
@@ -1119,81 +1051,64 @@ be_local_closure(class_LVGL_glob_widget_cb, /* name */
0x80040400, // 0005 RET 1 R2
})
),
- &be_class_LVGL_glob,
}),
1, /* has constants */
- ( &(const bvalue[15]) { /* constants */
- /* K0 */ be_nested_str_weak(cb),
- /* K1 */ be_nested_str_weak(widget_ctor_cb),
- /* K2 */ be_nested_str_weak(gen_cb),
- /* K3 */ be_nested_str_weak(widget_dtor_cb),
- /* K4 */ be_nested_str_weak(widget_event_cb),
- /* K5 */ be_nested_str_weak(widget_struct_default),
- /* K6 */ be_nested_str_weak(lv),
- /* K7 */ be_nested_str_weak(lv_obj_class),
- /* K8 */ be_nested_str_weak(lv_obj),
- /* K9 */ be_nested_str_weak(_class),
- /* K10 */ be_nested_str_weak(copy),
- /* K11 */ be_nested_str_weak(base_class),
- /* K12 */ be_nested_str_weak(constructor_cb),
- /* K13 */ be_nested_str_weak(destructor_cb),
- /* K14 */ be_nested_str_weak(event_cb),
- }),
+ &be_ktab_class_LVGL_glob, /* shared constants */
be_str_weak(widget_cb),
&be_const_str_solidified,
( &(const binstruction[54]) { /* code */
- 0xA4060000, // 0000 IMPORT R1 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0xA4060200, // 0000 IMPORT R1 K1
+ 0x88080142, // 0001 GETMBR R2 R0 K66
0x4C0C0000, // 0002 LDNIL R3
0x1C080403, // 0003 EQ R2 R2 R3
0x780A0003, // 0004 JMPF R2 #0009
0x8C080302, // 0005 GETMET R2 R1 K2
0x84100000, // 0006 CLOSURE R4 P0
0x7C080400, // 0007 CALL R2 2
- 0x90020202, // 0008 SETMBR R0 K1 R2
- 0x88080103, // 0009 GETMBR R2 R0 K3
+ 0x90028402, // 0008 SETMBR R0 K66 R2
+ 0x88080143, // 0009 GETMBR R2 R0 K67
0x4C0C0000, // 000A LDNIL R3
0x1C080403, // 000B EQ R2 R2 R3
0x780A0003, // 000C JMPF R2 #0011
0x8C080302, // 000D GETMET R2 R1 K2
0x84100001, // 000E CLOSURE R4 P1
0x7C080400, // 000F CALL R2 2
- 0x90020602, // 0010 SETMBR R0 K3 R2
- 0x88080104, // 0011 GETMBR R2 R0 K4
+ 0x90028602, // 0010 SETMBR R0 K67 R2
+ 0x88080144, // 0011 GETMBR R2 R0 K68
0x4C0C0000, // 0012 LDNIL R3
0x1C080403, // 0013 EQ R2 R2 R3
0x780A0003, // 0014 JMPF R2 #0019
0x8C080302, // 0015 GETMET R2 R1 K2
0x84100002, // 0016 CLOSURE R4 P2
0x7C080400, // 0017 CALL R2 2
- 0x90020802, // 0018 SETMBR R0 K4 R2
- 0x88080105, // 0019 GETMBR R2 R0 K5
+ 0x90028802, // 0018 SETMBR R0 K68 R2
+ 0x88080132, // 0019 GETMBR R2 R0 K50
0x4C0C0000, // 001A LDNIL R3
0x1C080403, // 001B EQ R2 R2 R3
0x780A0016, // 001C JMPF R2 #0034
- 0xB80A0C00, // 001D GETNGBL R2 K6
- 0x8C080507, // 001E GETMET R2 R2 K7
- 0xB8120C00, // 001F GETNGBL R4 K6
- 0x88100908, // 0020 GETMBR R4 R4 K8
- 0x88100909, // 0021 GETMBR R4 R4 K9
+ 0xB80A1A00, // 001D GETNGBL R2 K13
+ 0x8C080520, // 001E GETMET R2 R2 K32
+ 0xB8121A00, // 001F GETNGBL R4 K13
+ 0x8810092D, // 0020 GETMBR R4 R4 K45
+ 0x88100935, // 0021 GETMBR R4 R4 K53
0x7C080400, // 0022 CALL R2 2
- 0x8C08050A, // 0023 GETMET R2 R2 K10
+ 0x8C080533, // 0023 GETMET R2 R2 K51
0x7C080200, // 0024 CALL R2 1
- 0x90020A02, // 0025 SETMBR R0 K5 R2
- 0x88080105, // 0026 GETMBR R2 R0 K5
- 0xB80E0C00, // 0027 GETNGBL R3 K6
- 0x880C0708, // 0028 GETMBR R3 R3 K8
- 0x880C0709, // 0029 GETMBR R3 R3 K9
- 0x900A1603, // 002A SETMBR R2 K11 R3
- 0x88080105, // 002B GETMBR R2 R0 K5
- 0x880C0101, // 002C GETMBR R3 R0 K1
- 0x900A1803, // 002D SETMBR R2 K12 R3
- 0x88080105, // 002E GETMBR R2 R0 K5
- 0x880C0103, // 002F GETMBR R3 R0 K3
- 0x900A1A03, // 0030 SETMBR R2 K13 R3
- 0x88080105, // 0031 GETMBR R2 R0 K5
- 0x880C0104, // 0032 GETMBR R3 R0 K4
- 0x900A1C03, // 0033 SETMBR R2 K14 R3
+ 0x90026402, // 0025 SETMBR R0 K50 R2
+ 0x88080132, // 0026 GETMBR R2 R0 K50
+ 0xB80E1A00, // 0027 GETNGBL R3 K13
+ 0x880C072D, // 0028 GETMBR R3 R3 K45
+ 0x880C0735, // 0029 GETMBR R3 R3 K53
+ 0x900A6803, // 002A SETMBR R2 K52 R3
+ 0x88080132, // 002B GETMBR R2 R0 K50
+ 0x880C0142, // 002C GETMBR R3 R0 K66
+ 0x900A8A03, // 002D SETMBR R2 K69 R3
+ 0x88080132, // 002E GETMBR R2 R0 K50
+ 0x880C0143, // 002F GETMBR R3 R0 K67
+ 0x900A8C03, // 0030 SETMBR R2 K70 R3
+ 0x88080132, // 0031 GETMBR R2 R0 K50
+ 0x880C0144, // 0032 GETMBR R3 R0 K68
+ 0x900A0003, // 0033 SETMBR R2 K0 R3
0xA0000000, // 0034 CLOSE R0
0x80000000, // 0035 RET 0
})
@@ -1205,28 +1120,23 @@ be_local_closure(class_LVGL_glob_widget_cb, /* name */
/********************************************************************
** Solidified function: remove_cb
********************************************************************/
-extern const bclass be_class_LVGL_glob;
be_local_closure(class_LVGL_glob_remove_cb, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_LVGL_glob,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(introspect),
- /* K1 */ be_nested_str_weak(_p),
- /* K2 */ be_nested_str_weak(deregister_obj),
- }),
+ &be_ktab_class_LVGL_glob, /* shared constants */
be_str_weak(remove_cb),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x880C0301, // 0001 GETMBR R3 R1 K1
- 0x8C100102, // 0002 GETMET R4 R0 K2
+ 0xA40A3000, // 0000 IMPORT R2 K24
+ 0x880C0310, // 0001 GETMBR R3 R1 K16
+ 0x8C100147, // 0002 GETMET R4 R0 K71
0x5C180600, // 0003 MOVE R6 R3
0x7C100400, // 0004 CALL R4 2
0x80000000, // 0005 RET 0
diff --git a/lib/libesp32_lvgl/lv_haspmota/src/embedded/lv_haspmota.be b/lib/libesp32_lvgl/lv_haspmota/src/embedded/lv_haspmota.be
index a6da27b03..d0822dbeb 100644
--- a/lib/libesp32_lvgl/lv_haspmota/src/embedded/lv_haspmota.be
+++ b/lib/libesp32_lvgl/lv_haspmota/src/embedded/lv_haspmota.be
@@ -1018,6 +1018,12 @@ class lvh_obj : lvh_root
if string.startswith(k, "set_") || string.startswith(k, "get_") return end
+ # if value is 'real', round to nearest int
+ if type(v) == 'real'
+ import math
+ v = int(math.round(v))
+ end
+
# parse value in percentage
if string.endswith(k, "%")
k = k[0..-2]
diff --git a/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h b/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h
index db8b25d01..6ec64d494 100644
--- a/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h
+++ b/lib/libesp32_lvgl/lv_haspmota/src/solidify/solidified_lv_haspmota.h
@@ -3,24 +3,91 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
+extern const bclass be_class_lvh_root;
+// compact class 'lvh_root' ktab size: 63, total: 95 (saved 256 bytes)
+static const bvalue be_ktab_class_lvh_root[63] = {
+ /* K0 */ be_nested_str_weak(_text_rule_formula),
+ /* K1 */ be_nested_str_weak(return_X20_X2F_X20val_X20_X2D_X3E_X20_X28),
+ /* K2 */ be_nested_str_weak(_X29),
+ /* K3 */ be_nested_str_weak(_text_rule_function),
+ /* K4 */ be_nested_str_weak(HSP_X3A_X20failed_X20to_X20compile_X20_X27_X25s_X27_X20_X2D_X20_X25s_X20_X28_X25s_X29),
+ /* K5 */ be_nested_str_weak(_text_rule),
+ /* K6 */ be_nested_str_weak(_val_rule_function),
+ /* K7 */ be_nested_str_weak(HSP_X3A_X20failed_X20to_X20run_X20self_X2E_val_rule_function_X20_X2D_X20_X25s_X20_X28_X25s_X29),
+ /* K8 */ be_nested_str_weak(val),
+ /* K9 */ be_nested_str_weak(int),
+ /* K10 */ be_nested_str_weak(lv),
+ /* K11 */ be_nested_str_weak(font_embedded),
+ /* K12 */ be_nested_str_weak(robotocondensed),
+ /* K13 */ be_nested_str_weak(montserrat),
+ /* K14 */ be_nested_str_weak(HSP_X3A_X20Unsupported_X20font_X3A),
+ /* K15 */ be_nested_str_weak(string),
+ /* K16 */ be_nested_str_weak(split),
+ /* K17 */ be_nested_str_weak(_X3A),
+ /* K18 */ be_const_int(1),
+ /* K19 */ be_nested_str_weak(_X2D),
+ /* K20 */ be_const_int(0),
+ /* K21 */ be_const_int(2),
+ /* K22 */ be_nested_str_weak(concat),
+ /* K23 */ be_nested_str_weak(endswith),
+ /* K24 */ be_nested_str_weak(_X2Ettf),
+ /* K25 */ be_nested_str_weak(load_freetype_font),
+ /* K26 */ be_nested_str_weak(load_font),
+ /* K27 */ be_nested_str_weak(_val_rule_formula),
+ /* K28 */ be_nested_str_weak(_val),
+ /* K29 */ be_nested_str_weak(set_val),
+ /* K30 */ be_nested_str_weak(HSP_X3A_X20failed_X20to_X20run_X20self_X2E_text_rule_function_X20_X2D_X20_X25s_X20_X28_X25s_X29),
+ /* K31 */ be_nested_str_weak(_text_rule_format),
+ /* K32 */ be_nested_str_weak(),
+ /* K33 */ be_nested_str_weak(text),
+ /* K34 */ be_nested_str_weak(_meta),
+ /* K35 */ be_nested_str_weak(set_text),
+ /* K36 */ be_nested_str_weak(_page),
+ /* K37 */ be_nested_str_weak(_parent_lvh),
+ /* K38 */ be_nested_str_weak(_lv_class),
+ /* K39 */ be_nested_str_weak(_lv_obj),
+ /* K40 */ be_nested_str_weak(post_init),
+ /* K41 */ be_nested_str_weak(delete),
+ /* K42 */ be_const_class(be_class_lvh_root),
+ /* K43 */ be_nested_str_weak(resize),
+ /* K44 */ be_nested_str_weak(remove_val_rule),
+ /* K45 */ be_nested_str_weak(_val_rule),
+ /* K46 */ be_nested_str_weak(tasmota),
+ /* K47 */ be_nested_str_weak(add_rule),
+ /* K48 */ be_nested_str_weak(_digit2part),
+ /* K49 */ be_nested_str_weak(_digit2state),
+ /* K50 */ be_nested_str_weak(invalid_X20style_X20suffix_X20_X2502i),
+ /* K51 */ be_nested_str_weak(value_error),
+ /* K52 */ be_nested_str_weak(remove_rule),
+ /* K53 */ be_nested_str_weak(color),
+ /* K54 */ be_nested_str_weak(type_error),
+ /* K55 */ be_nested_str_weak(you_X20cannot_X20assign_X20to_X20_X27delete_X27),
+ /* K56 */ be_nested_str_weak(get_text),
+ /* K57 */ be_nested_str_weak(_X23),
+ /* K58 */ be_nested_str_weak(introspect),
+ /* K59 */ be_nested_str_weak(COLOR_),
+ /* K60 */ be_nested_str_weak(toupper),
+ /* K61 */ be_nested_str_weak(get),
+ /* K62 */ be_nested_str_weak(remove_text_rule),
+};
+
extern const bclass be_class_lvh_root;
/********************************************************************
** Solidified function: get_text
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_get_text, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(get_text),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
@@ -35,20 +102,17 @@ be_local_closure(class_lvh_root_get_text, /* name */
/********************************************************************
** Solidified function: get_text_rule_formula
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_get_text_rule_formula, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_text_rule_formula),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(get_text_rule_formula),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
@@ -63,24 +127,17 @@ be_local_closure(class_lvh_root_get_text_rule_formula, /* name */
/********************************************************************
** Solidified function: set_text_rule_formula
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_set_text_rule_formula, /* name */
be_nested_proto(
11, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_text_rule_formula),
- /* K1 */ be_nested_str_weak(return_X20_X2F_X20val_X20_X2D_X3E_X20_X28),
- /* K2 */ be_nested_str_weak(_X29),
- /* K3 */ be_nested_str_weak(_text_rule_function),
- /* K4 */ be_nested_str_weak(HSP_X3A_X20failed_X20to_X20compile_X20_X27_X25s_X27_X20_X2D_X20_X25s_X20_X28_X25s_X29),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(set_text_rule_formula),
&be_const_str_solidified,
( &(const binstruction[29]) { /* code */
@@ -122,24 +179,21 @@ be_local_closure(class_lvh_root_set_text_rule_formula, /* name */
/********************************************************************
** Solidified function: get_text_rule
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_get_text_rule, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_text_rule),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(get_text_rule),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040105, // 0000 GETMBR R1 R0 K5
0x80040200, // 0001 RET 1 R1
})
)
@@ -150,18 +204,17 @@ be_local_closure(class_lvh_root_get_text_rule, /* name */
/********************************************************************
** Solidified function: set_text
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_set_text, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(set_text),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -175,22 +228,17 @@ be_local_closure(class_lvh_root_set_text, /* name */
/********************************************************************
** Solidified function: val_rule_matched
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_val_rule_matched, /* name */
be_nested_proto(
11, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_val_rule_function),
- /* K1 */ be_nested_str_weak(HSP_X3A_X20failed_X20to_X20run_X20self_X2E_val_rule_function_X20_X2D_X20_X25s_X20_X28_X25s_X29),
- /* K2 */ be_nested_str_weak(val),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(val_rule_matched),
&be_const_str_solidified,
( &(const binstruction[36]) { /* code */
@@ -202,7 +250,7 @@ be_local_closure(class_lvh_root_val_rule_matched, /* name */
0x780E0001, // 0005 JMPF R3 #0008
0x500C0000, // 0006 LDBOOL R3 0 0
0x80040600, // 0007 RET 1 R3
- 0x880C0100, // 0008 GETMBR R3 R0 K0
+ 0x880C0106, // 0008 GETMBR R3 R0 K6
0x4C100000, // 0009 LDNIL R4
0x20100604, // 000A NE R4 R3 R4
0x78120011, // 000B JMPF R4 #001E
@@ -217,7 +265,7 @@ be_local_closure(class_lvh_root_val_rule_matched, /* name */
0x70020007, // 0014 JMP #001D
0x60180001, // 0015 GETGBL R6 G1
0x601C0018, // 0016 GETGBL R7 G24
- 0x58200001, // 0017 LDCONST R8 K1
+ 0x58200007, // 0017 LDCONST R8 K7
0x5C240800, // 0018 MOVE R9 R4
0x5C280A00, // 0019 MOVE R10 R5
0x7C1C0600, // 001A CALL R7 3
@@ -227,7 +275,7 @@ be_local_closure(class_lvh_root_val_rule_matched, /* name */
0x60100009, // 001E GETGBL R4 G9
0x5C140400, // 001F MOVE R5 R2
0x7C100200, // 0020 CALL R4 1
- 0x90020404, // 0021 SETMBR R0 K2 R4
+ 0x90021004, // 0021 SETMBR R0 K8 R4
0x50100000, // 0022 LDBOOL R4 0 0
0x80040800, // 0023 RET 1 R4
})
@@ -239,37 +287,17 @@ be_local_closure(class_lvh_root_val_rule_matched, /* name */
/********************************************************************
** Solidified function: parse_font
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_parse_font, /* name */
be_nested_proto(
15, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
- /* K0 */ be_nested_str_weak(int),
- /* K1 */ be_nested_str_weak(lv),
- /* K2 */ be_nested_str_weak(font_embedded),
- /* K3 */ be_nested_str_weak(robotocondensed),
- /* K4 */ be_nested_str_weak(montserrat),
- /* K5 */ be_nested_str_weak(HSP_X3A_X20Unsupported_X20font_X3A),
- /* K6 */ be_nested_str_weak(string),
- /* K7 */ be_nested_str_weak(split),
- /* K8 */ be_nested_str_weak(_X3A),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str_weak(_X2D),
- /* K11 */ be_const_int(0),
- /* K12 */ be_const_int(2),
- /* K13 */ be_nested_str_weak(concat),
- /* K14 */ be_nested_str_weak(endswith),
- /* K15 */ be_nested_str_weak(_X2Ettf),
- /* K16 */ be_nested_str_weak(load_freetype_font),
- /* K17 */ be_nested_str_weak(load_font),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(parse_font),
&be_const_str_solidified,
( &(const binstruction[148]) { /* code */
@@ -277,12 +305,12 @@ be_local_closure(class_lvh_root_parse_font, /* name */
0x600C0004, // 0001 GETGBL R3 G4
0x5C100200, // 0002 MOVE R4 R1
0x7C0C0200, // 0003 CALL R3 1
- 0x1C0C0700, // 0004 EQ R3 R3 K0
+ 0x1C0C0709, // 0004 EQ R3 R3 K9
0x780E0020, // 0005 JMPF R3 #0027
0xA8020007, // 0006 EXBLK 0 #000F
- 0xB80E0200, // 0007 GETNGBL R3 K1
- 0x8C0C0702, // 0008 GETMET R3 R3 K2
- 0x58140003, // 0009 LDCONST R5 K3
+ 0xB80E1400, // 0007 GETNGBL R3 K10
+ 0x8C0C070B, // 0008 GETMET R3 R3 K11
+ 0x5814000C, // 0009 LDCONST R5 K12
0x5C180200, // 000A MOVE R6 R1
0x7C0C0600, // 000B CALL R3 3
0x5C080600, // 000C MOVE R2 R3
@@ -291,9 +319,9 @@ be_local_closure(class_lvh_root_parse_font, /* name */
0xAC0C0000, // 000F CATCH R3 0 0
0x70020013, // 0010 JMP #0025
0xA8020007, // 0011 EXBLK 0 #001A
- 0xB80E0200, // 0012 GETNGBL R3 K1
- 0x8C0C0702, // 0013 GETMET R3 R3 K2
- 0x58140004, // 0014 LDCONST R5 K4
+ 0xB80E1400, // 0012 GETNGBL R3 K10
+ 0x8C0C070B, // 0013 GETMET R3 R3 K11
+ 0x5814000D, // 0014 LDCONST R5 K13
0x5C180200, // 0015 MOVE R6 R1
0x7C0C0600, // 0016 CALL R3 3
0x5C080600, // 0017 MOVE R2 R3
@@ -302,7 +330,7 @@ be_local_closure(class_lvh_root_parse_font, /* name */
0xAC0C0000, // 001A CATCH R3 0 0
0x70020006, // 001B JMP #0023
0x600C0001, // 001C GETGBL R3 G1
- 0x58100005, // 001D LDCONST R4 K5
+ 0x5810000E, // 001D LDCONST R4 K14
0x5C140200, // 001E MOVE R5 R1
0x7C0C0400, // 001F CALL R3 2
0x4C0C0000, // 0020 LDNIL R3
@@ -315,28 +343,28 @@ be_local_closure(class_lvh_root_parse_font, /* name */
0x600C0004, // 0027 GETGBL R3 G4
0x5C100200, // 0028 MOVE R4 R1
0x7C0C0200, // 0029 CALL R3 1
- 0x1C0C0706, // 002A EQ R3 R3 K6
+ 0x1C0C070F, // 002A EQ R3 R3 K15
0x780E005D, // 002B JMPF R3 #008A
- 0xA40E0C00, // 002C IMPORT R3 K6
- 0x8C100707, // 002D GETMET R4 R3 K7
+ 0xA40E1E00, // 002C IMPORT R3 K15
+ 0x8C100710, // 002D GETMET R4 R3 K16
0x5C180200, // 002E MOVE R6 R1
- 0x581C0008, // 002F LDCONST R7 K8
- 0x58200009, // 0030 LDCONST R8 K9
+ 0x581C0011, // 002F LDCONST R7 K17
+ 0x58200012, // 0030 LDCONST R8 K18
0x7C100800, // 0031 CALL R4 4
- 0x8C140707, // 0032 GETMET R5 R3 K7
+ 0x8C140710, // 0032 GETMET R5 R3 K16
0x5C1C0200, // 0033 MOVE R7 R1
- 0x5820000A, // 0034 LDCONST R8 K10
+ 0x58200013, // 0034 LDCONST R8 K19
0x7C140600, // 0035 CALL R5 3
0x5C180200, // 0036 MOVE R6 R1
- 0x581C000B, // 0037 LDCONST R7 K11
+ 0x581C0014, // 0037 LDCONST R7 K20
0x50200000, // 0038 LDBOOL R8 0 0
0x6024000C, // 0039 GETGBL R9 G12
0x5C280800, // 003A MOVE R10 R4
0x7C240200, // 003B CALL R9 1
- 0x24241309, // 003C GT R9 R9 K9
+ 0x24241312, // 003C GT R9 R9 K18
0x78260003, // 003D JMPF R9 #0042
0x6024000C, // 003E GETGBL R9 G12
- 0x9428090B, // 003F GETIDX R10 R4 K11
+ 0x94280914, // 003F GETIDX R10 R4 K20
0x7C240200, // 0040 CALL R9 1
0x74260000, // 0041 JMPT R9 #0043
0x50240001, // 0042 LDBOOL R9 0 1
@@ -344,7 +372,7 @@ be_local_closure(class_lvh_root_parse_font, /* name */
0x6028000C, // 0044 GETGBL R10 G12
0x5C2C0A00, // 0045 MOVE R11 R5
0x7C280200, // 0046 CALL R10 1
- 0x2828150C, // 0047 GE R10 R10 K12
+ 0x28281515, // 0047 GE R10 R10 K21
0x782A000B, // 0048 JMPF R10 #0055
0x60280009, // 0049 GETGBL R10 G9
0x542DFFFE, // 004A LDINT R11 -1
@@ -352,51 +380,51 @@ be_local_closure(class_lvh_root_parse_font, /* name */
0x7C280200, // 004C CALL R10 1
0x5C1C1400, // 004D MOVE R7 R10
0x5429FFFD, // 004E LDINT R10 -2
- 0x402A160A, // 004F CONNECT R10 K11 R10
+ 0x402A280A, // 004F CONNECT R10 K20 R10
0x94280A0A, // 0050 GETIDX R10 R5 R10
- 0x8C28150D, // 0051 GETMET R10 R10 K13
- 0x5830000A, // 0052 LDCONST R12 K10
+ 0x8C281516, // 0051 GETMET R10 R10 K22
+ 0x58300013, // 0052 LDCONST R12 K19
0x7C280400, // 0053 CALL R10 2
0x5C181400, // 0054 MOVE R6 R10
- 0x8C28070E, // 0055 GETMET R10 R3 K14
+ 0x8C280717, // 0055 GETMET R10 R3 K23
0x5C300C00, // 0056 MOVE R12 R6
- 0x5834000F, // 0057 LDCONST R13 K15
+ 0x58340018, // 0057 LDCONST R13 K24
0x50380200, // 0058 LDBOOL R14 1 0
0x7C280800, // 0059 CALL R10 4
0x782A0006, // 005A JMPF R10 #0062
- 0x8C280707, // 005B GETMET R10 R3 K7
+ 0x8C280710, // 005B GETMET R10 R3 K16
0x5C300C00, // 005C MOVE R12 R6
- 0x58340008, // 005D LDCONST R13 K8
+ 0x58340011, // 005D LDCONST R13 K17
0x7C280600, // 005E CALL R10 3
0x542DFFFE, // 005F LDINT R11 -1
0x9418140B, // 0060 GETIDX R6 R10 R11
0x50200200, // 0061 LDBOOL R8 1 0
0x78220007, // 0062 JMPF R8 #006B
- 0xB82A0200, // 0063 GETNGBL R10 K1
- 0x8C281510, // 0064 GETMET R10 R10 K16
+ 0xB82A1400, // 0063 GETNGBL R10 K10
+ 0x8C281519, // 0064 GETMET R10 R10 K25
0x5C300C00, // 0065 MOVE R12 R6
0x5C340E00, // 0066 MOVE R13 R7
- 0x5838000B, // 0067 LDCONST R14 K11
+ 0x58380014, // 0067 LDCONST R14 K20
0x7C280800, // 0068 CALL R10 4
0x5C081400, // 0069 MOVE R2 R10
0x7002001E, // 006A JMP #008A
0x78260005, // 006B JMPF R9 #0072
- 0xB82A0200, // 006C GETNGBL R10 K1
- 0x8C281511, // 006D GETMET R10 R10 K17
+ 0xB82A1400, // 006C GETNGBL R10 K10
+ 0x8C28151A, // 006D GETMET R10 R10 K26
0x5C300200, // 006E MOVE R12 R1
0x7C280400, // 006F CALL R10 2
0x5C081400, // 0070 MOVE R2 R10
0x70020017, // 0071 JMP #008A
- 0x24280F0B, // 0072 GT R10 R7 K11
+ 0x24280F14, // 0072 GT R10 R7 K20
0x782A0015, // 0073 JMPF R10 #008A
0x6028000C, // 0074 GETGBL R10 G12
0x5C2C0C00, // 0075 MOVE R11 R6
0x7C280200, // 0076 CALL R10 1
- 0x2428150B, // 0077 GT R10 R10 K11
+ 0x24281514, // 0077 GT R10 R10 K20
0x782A0010, // 0078 JMPF R10 #008A
0xA8020007, // 0079 EXBLK 0 #0082
- 0xB82A0200, // 007A GETNGBL R10 K1
- 0x8C281502, // 007B GETMET R10 R10 K2
+ 0xB82A1400, // 007A GETNGBL R10 K10
+ 0x8C28150B, // 007B GETMET R10 R10 K11
0x5C300C00, // 007C MOVE R12 R6
0x5C340E00, // 007D MOVE R13 R7
0x7C280600, // 007E CALL R10 3
@@ -406,7 +434,7 @@ be_local_closure(class_lvh_root_parse_font, /* name */
0xAC280000, // 0082 CATCH R10 0 0
0x70020004, // 0083 JMP #0089
0x60280001, // 0084 GETGBL R10 G1
- 0x582C0005, // 0085 LDCONST R11 K5
+ 0x582C000E, // 0085 LDCONST R11 K14
0x5C300200, // 0086 MOVE R12 R1
0x7C280400, // 0087 CALL R10 2
0x70020000, // 0088 JMP #008A
@@ -417,7 +445,7 @@ be_local_closure(class_lvh_root_parse_font, /* name */
0x80040400, // 008D RET 1 R2
0x70020003, // 008E JMP #0093
0x600C0001, // 008F GETGBL R3 G1
- 0x58100005, // 0090 LDCONST R4 K5
+ 0x5810000E, // 0090 LDCONST R4 K14
0x5C140200, // 0091 MOVE R5 R1
0x7C0C0400, // 0092 CALL R3 2
0x80000000, // 0093 RET 0
@@ -430,24 +458,21 @@ be_local_closure(class_lvh_root_parse_font, /* name */
/********************************************************************
** Solidified function: get_val_rule_formula
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_get_val_rule_formula, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_val_rule_formula),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(get_val_rule_formula),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804011B, // 0000 GETMBR R1 R0 K27
0x80040200, // 0001 RET 1 R1
})
)
@@ -458,30 +483,26 @@ be_local_closure(class_lvh_root_get_val_rule_formula, /* name */
/********************************************************************
** Solidified function: post_config
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_post_config, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_val),
- /* K1 */ be_nested_str_weak(set_val),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(post_config),
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804011C, // 0000 GETMBR R1 R0 K28
0x4C080000, // 0001 LDNIL R2
0x20040202, // 0002 NE R1 R1 R2
0x78060002, // 0003 JMPF R1 #0007
- 0x8C040101, // 0004 GETMET R1 R0 K1
- 0x880C0100, // 0005 GETMBR R3 R0 K0
+ 0x8C04011D, // 0004 GETMET R1 R0 K29
+ 0x880C011C, // 0005 GETMBR R3 R0 K28
0x7C040400, // 0006 CALL R1 2
0x80000000, // 0007 RET 0
})
@@ -493,39 +514,30 @@ be_local_closure(class_lvh_root_post_config, /* name */
/********************************************************************
** Solidified function: text_rule_matched
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_text_rule_matched, /* name */
be_nested_proto(
10, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(int),
- /* K1 */ be_nested_str_weak(_text_rule_function),
- /* K2 */ be_nested_str_weak(HSP_X3A_X20failed_X20to_X20run_X20self_X2E_text_rule_function_X20_X2D_X20_X25s_X20_X28_X25s_X29),
- /* K3 */ be_nested_str_weak(_text_rule_format),
- /* K4 */ be_nested_str_weak(string),
- /* K5 */ be_nested_str_weak(),
- /* K6 */ be_nested_str_weak(text),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(text_rule_matched),
&be_const_str_solidified,
( &(const binstruction[47]) { /* code */
0x60080004, // 0000 GETGBL R2 G4
0x5C0C0200, // 0001 MOVE R3 R1
0x7C080200, // 0002 CALL R2 1
- 0x1C080500, // 0003 EQ R2 R2 K0
+ 0x1C080509, // 0003 EQ R2 R2 K9
0x780A0003, // 0004 JMPF R2 #0009
0x6008000A, // 0005 GETGBL R2 G10
0x5C0C0200, // 0006 MOVE R3 R1
0x7C080200, // 0007 CALL R2 1
0x5C040400, // 0008 MOVE R1 R2
- 0x88080101, // 0009 GETMBR R2 R0 K1
+ 0x88080103, // 0009 GETMBR R2 R0 K3
0x4C0C0000, // 000A LDNIL R3
0x200C0403, // 000B NE R3 R2 R3
0x780E0011, // 000C JMPF R3 #001F
@@ -540,18 +552,18 @@ be_local_closure(class_lvh_root_text_rule_matched, /* name */
0x70020007, // 0015 JMP #001E
0x60140001, // 0016 GETGBL R5 G1
0x60180018, // 0017 GETGBL R6 G24
- 0x581C0002, // 0018 LDCONST R7 K2
+ 0x581C001E, // 0018 LDCONST R7 K30
0x5C200600, // 0019 MOVE R8 R3
0x5C240800, // 001A MOVE R9 R4
0x7C180600, // 001B CALL R6 3
0x7C140200, // 001C CALL R5 1
0x70020000, // 001D JMP #001F
0xB0080000, // 001E RAISE 2 R0 R0
- 0x880C0103, // 001F GETMBR R3 R0 K3
+ 0x880C011F, // 001F GETMBR R3 R0 K31
0x60100004, // 0020 GETGBL R4 G4
0x5C140600, // 0021 MOVE R5 R3
0x7C100200, // 0022 CALL R4 1
- 0x1C100904, // 0023 EQ R4 R4 K4
+ 0x1C10090F, // 0023 EQ R4 R4 K15
0x78120005, // 0024 JMPF R4 #002B
0x60100018, // 0025 GETGBL R4 G24
0x5C140600, // 0026 MOVE R5 R3
@@ -559,8 +571,8 @@ be_local_closure(class_lvh_root_text_rule_matched, /* name */
0x7C100400, // 0028 CALL R4 2
0x5C0C0800, // 0029 MOVE R3 R4
0x70020000, // 002A JMP #002C
- 0x580C0005, // 002B LDCONST R3 K5
- 0x90020C03, // 002C SETMBR R0 K6 R3
+ 0x580C0020, // 002B LDCONST R3 K32
+ 0x90024203, // 002C SETMBR R0 K33 R3
0x50100000, // 002D LDBOOL R4 0 0
0x80040800, // 002E RET 1 R4
})
@@ -572,24 +584,21 @@ be_local_closure(class_lvh_root_text_rule_matched, /* name */
/********************************************************************
** Solidified function: get_meta
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_get_meta, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_meta),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(get_meta),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040122, // 0000 GETMBR R1 R0 K34
0x80040200, // 0001 RET 1 R1
})
)
@@ -600,24 +609,21 @@ be_local_closure(class_lvh_root_get_meta, /* name */
/********************************************************************
** Solidified function: set_value_str
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_set_value_str, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(set_text),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(set_value_str),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C080123, // 0000 GETMET R2 R0 K35
0x5C100200, // 0001 MOVE R4 R1
0x7C080400, // 0002 CALL R2 2
0x80000000, // 0003 RET 0
@@ -630,42 +636,35 @@ be_local_closure(class_lvh_root_set_value_str, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_init, /* name */
be_nested_proto(
9, /* nstack */
6, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_page),
- /* K1 */ be_nested_str_weak(_parent_lvh),
- /* K2 */ be_nested_str_weak(_lv_class),
- /* K3 */ be_nested_str_weak(_lv_obj),
- /* K4 */ be_nested_str_weak(post_init),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[17]) { /* code */
- 0x90020002, // 0000 SETMBR R0 K0 R2
- 0x90020205, // 0001 SETMBR R0 K1 R5
+ 0x90024802, // 0000 SETMBR R0 K36 R2
+ 0x90024A05, // 0001 SETMBR R0 K37 R5
0x4C180000, // 0002 LDNIL R6
0x1C180806, // 0003 EQ R6 R4 R6
0x781A0007, // 0004 JMPF R6 #000D
- 0x88180102, // 0005 GETMBR R6 R0 K2
+ 0x88180126, // 0005 GETMBR R6 R0 K38
0x781A0005, // 0006 JMPF R6 #000D
- 0x88180102, // 0007 GETMBR R6 R0 K2
+ 0x88180126, // 0007 GETMBR R6 R0 K38
0x5C1C0C00, // 0008 MOVE R7 R6
0x5C200200, // 0009 MOVE R8 R1
0x7C1C0200, // 000A CALL R7 1
- 0x90020607, // 000B SETMBR R0 K3 R7
+ 0x90024E07, // 000B SETMBR R0 K39 R7
0x70020000, // 000C JMP #000E
- 0x90020604, // 000D SETMBR R0 K3 R4
- 0x8C180104, // 000E GETMET R6 R0 K4
+ 0x90024E04, // 000D SETMBR R0 K39 R4
+ 0x8C180128, // 000E GETMET R6 R0 K40
0x7C180200, // 000F CALL R6 1
0x80000000, // 0010 RET 0
})
@@ -677,24 +676,21 @@ be_local_closure(class_lvh_root_init, /* name */
/********************************************************************
** Solidified function: get_delete
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_get_delete, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(delete),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(get_delete),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040129, // 0000 GETMET R1 R0 K41
0x7C040200, // 0001 CALL R1 1
0x80000000, // 0002 RET 0
})
@@ -706,44 +702,38 @@ be_local_closure(class_lvh_root_get_delete, /* name */
/********************************************************************
** Solidified function: remove_trailing_zeroes
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_remove_trailing_zeroes, /* name */
be_nested_proto(
8, /* nstack */
1, /* argc */
- 4, /* varg */
+ 12, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_const_class(be_class_lvh_root),
- /* K1 */ be_const_int(0),
- /* K2 */ be_const_int(1),
- /* K3 */ be_nested_str_weak(resize),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(remove_trailing_zeroes),
&be_const_str_solidified,
( &(const binstruction[24]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
+ 0x5804002A, // 0000 LDCONST R1 K42
0x6008000C, // 0001 GETGBL R2 G12
0x5C0C0000, // 0002 MOVE R3 R0
0x7C080200, // 0003 CALL R2 1
- 0x580C0001, // 0004 LDCONST R3 K1
+ 0x580C0014, // 0004 LDCONST R3 K20
0x14100602, // 0005 LT R4 R3 R2
0x78120007, // 0006 JMPF R4 #000F
0x5411FFFE, // 0007 LDINT R4 -1
0x04100803, // 0008 SUB R4 R4 R3
0x94100004, // 0009 GETIDX R4 R0 R4
- 0x20100901, // 000A NE R4 R4 K1
+ 0x20100914, // 000A NE R4 R4 K20
0x78120000, // 000B JMPF R4 #000D
0x70020001, // 000C JMP #000F
- 0x000C0702, // 000D ADD R3 R3 K2
+ 0x000C0712, // 000D ADD R3 R3 K18
0x7001FFF5, // 000E JMP #0005
- 0x24100701, // 000F GT R4 R3 K1
+ 0x24100714, // 000F GT R4 R3 K20
0x78120005, // 0010 JMPF R4 #0017
- 0x8C100103, // 0011 GETMET R4 R0 K3
+ 0x8C10012B, // 0011 GETMET R4 R0 K43
0x6018000C, // 0012 GETGBL R6 G12
0x5C1C0000, // 0013 MOVE R7 R0
0x7C180200, // 0014 CALL R6 1
@@ -759,16 +749,15 @@ be_local_closure(class_lvh_root_remove_trailing_zeroes, /* name */
/********************************************************************
** Solidified function: set_val_rule
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_set_val_rule, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
4, /* nstack */
1, /* argc */
@@ -778,7 +767,7 @@ be_local_closure(class_lvh_root_set_val_rule, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(val_rule_matched),
@@ -793,27 +782,21 @@ be_local_closure(class_lvh_root_set_val_rule, /* name */
0x80040200, // 0004 RET 1 R1
})
),
- &be_class_lvh_root,
}),
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(remove_val_rule),
- /* K1 */ be_nested_str_weak(_val_rule),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(add_rule),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(set_val_rule),
&be_const_str_solidified,
( &(const binstruction[14]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C08012C, // 0000 GETMET R2 R0 K44
0x7C080200, // 0001 CALL R2 1
0x60080008, // 0002 GETGBL R2 G8
0x5C0C0200, // 0003 MOVE R3 R1
0x7C080200, // 0004 CALL R2 1
- 0x90020202, // 0005 SETMBR R0 K1 R2
- 0xB80A0400, // 0006 GETNGBL R2 K2
- 0x8C080503, // 0007 GETMET R2 R2 K3
- 0x88100101, // 0008 GETMBR R4 R0 K1
+ 0x90025A02, // 0005 SETMBR R0 K45 R2
+ 0xB80A5C00, // 0006 GETNGBL R2 K46
+ 0x8C08052F, // 0007 GETMET R2 R2 K47
+ 0x8810012D, // 0008 GETMBR R4 R0 K45
0x84140000, // 0009 CLOSURE R5 P0
0x5C180000, // 000A MOVE R6 R0
0x7C080800, // 000B CALL R2 4
@@ -828,24 +811,21 @@ be_local_closure(class_lvh_root_set_val_rule, /* name */
/********************************************************************
** Solidified function: get_val_rule
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_get_val_rule, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_val_rule),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(get_val_rule),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804012D, // 0000 GETMBR R1 R0 K45
0x80040200, // 0001 RET 1 R1
})
)
@@ -856,58 +836,51 @@ be_local_closure(class_lvh_root_get_val_rule, /* name */
/********************************************************************
** Solidified function: digits_to_style
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_digits_to_style, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(_digit2part),
- /* K2 */ be_nested_str_weak(_digit2state),
- /* K3 */ be_nested_str_weak(invalid_X20style_X20suffix_X20_X2502i),
- /* K4 */ be_nested_str_weak(value_error),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(digits_to_style),
&be_const_str_solidified,
( &(const binstruction[44]) { /* code */
0x4C080000, // 0000 LDNIL R2
0x1C080202, // 0001 EQ R2 R1 R2
0x780A0000, // 0002 JMPF R2 #0004
- 0x80060000, // 0003 RET 1 K0
+ 0x80062800, // 0003 RET 1 K20
0x540A0009, // 0004 LDINT R2 10
0x0C080202, // 0005 DIV R2 R1 R2
0x540E0009, // 0006 LDINT R3 10
0x10080403, // 0007 MOD R2 R2 R3
0x540E0009, // 0008 LDINT R3 10
0x100C0203, // 0009 MOD R3 R1 R3
- 0x58100000, // 000A LDCONST R4 K0
- 0x28140500, // 000B GE R5 R2 K0
+ 0x58100014, // 000A LDCONST R4 K20
+ 0x28140514, // 000B GE R5 R2 K20
0x78160008, // 000C JMPF R5 #0016
0x6014000C, // 000D GETGBL R5 G12
- 0x88180101, // 000E GETMBR R6 R0 K1
+ 0x88180130, // 000E GETMBR R6 R0 K48
0x7C140200, // 000F CALL R5 1
0x14140405, // 0010 LT R5 R2 R5
0x78160003, // 0011 JMPF R5 #0016
- 0x88140101, // 0012 GETMBR R5 R0 K1
+ 0x88140130, // 0012 GETMBR R5 R0 K48
0x94140A02, // 0013 GETIDX R5 R5 R2
0x30100805, // 0014 OR R4 R4 R5
0x70020000, // 0015 JMP #0017
0x4C100000, // 0016 LDNIL R4
- 0x28140700, // 0017 GE R5 R3 K0
+ 0x28140714, // 0017 GE R5 R3 K20
0x78160008, // 0018 JMPF R5 #0022
0x6014000C, // 0019 GETGBL R5 G12
- 0x88180102, // 001A GETMBR R6 R0 K2
+ 0x88180131, // 001A GETMBR R6 R0 K49
0x7C140200, // 001B CALL R5 1
0x14140605, // 001C LT R5 R3 R5
0x78160003, // 001D JMPF R5 #0022
- 0x88140102, // 001E GETMBR R5 R0 K2
+ 0x88140131, // 001E GETMBR R5 R0 K49
0x94140A03, // 001F GETIDX R5 R5 R3
0x30100805, // 0020 OR R4 R4 R5
0x70020000, // 0021 JMP #0023
@@ -916,10 +889,10 @@ be_local_closure(class_lvh_root_digits_to_style, /* name */
0x1C140805, // 0024 EQ R5 R4 R5
0x78160004, // 0025 JMPF R5 #002B
0x60140018, // 0026 GETGBL R5 G24
- 0x58180003, // 0027 LDCONST R6 K3
+ 0x58180032, // 0027 LDCONST R6 K50
0x5C1C0200, // 0028 MOVE R7 R1
0x7C140400, // 0029 CALL R5 2
- 0xB0060805, // 002A RAISE 1 K4 R5
+ 0xB0066605, // 002A RAISE 1 K51 R5
0x80040800, // 002B RET 1 R4
})
)
@@ -930,27 +903,24 @@ be_local_closure(class_lvh_root_digits_to_style, /* name */
/********************************************************************
** Solidified function: set_text_rule_format
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_set_text_rule_format, /* name */
be_nested_proto(
4, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_text_rule_format),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(set_text_rule_format),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
0x60080008, // 0000 GETGBL R2 G8
0x5C0C0200, // 0001 MOVE R3 R1
0x7C080200, // 0002 CALL R2 1
- 0x90020002, // 0003 SETMBR R0 K0 R2
+ 0x90023E02, // 0003 SETMBR R0 K31 R2
0x80000000, // 0004 RET 0
})
)
@@ -961,32 +931,27 @@ be_local_closure(class_lvh_root_set_text_rule_format, /* name */
/********************************************************************
** Solidified function: remove_val_rule
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_remove_val_rule, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_val_rule),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(remove_rule),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(remove_val_rule),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804012D, // 0000 GETMBR R1 R0 K45
0x4C080000, // 0001 LDNIL R2
0x20040202, // 0002 NE R1 R1 R2
0x78060004, // 0003 JMPF R1 #0009
- 0xB8060200, // 0004 GETNGBL R1 K1
- 0x8C040302, // 0005 GETMET R1 R1 K2
- 0x880C0100, // 0006 GETMBR R3 R0 K0
+ 0xB8065C00, // 0004 GETNGBL R1 K46
+ 0x8C040334, // 0005 GETMET R1 R1 K52
+ 0x880C012D, // 0006 GETMBR R3 R0 K45
0x5C100000, // 0007 MOVE R4 R0
0x7C040600, // 0008 CALL R1 3
0x80000000, // 0009 RET 0
@@ -999,18 +964,17 @@ be_local_closure(class_lvh_root_remove_val_rule, /* name */
/********************************************************************
** Solidified function: delete
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_delete, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(delete),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -1024,24 +988,21 @@ be_local_closure(class_lvh_root_delete, /* name */
/********************************************************************
** Solidified function: get_obj
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_get_obj, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(get_obj),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040127, // 0000 GETMBR R1 R0 K39
0x80040200, // 0001 RET 1 R1
})
)
@@ -1052,31 +1013,26 @@ be_local_closure(class_lvh_root_get_obj, /* name */
/********************************************************************
** Solidified function: is_color_attribute
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_is_color_attribute, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(string),
- /* K1 */ be_nested_str_weak(endswith),
- /* K2 */ be_nested_str_weak(color),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(is_color_attribute),
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x8C0C0501, // 0001 GETMET R3 R2 K1
+ 0xA40A1E00, // 0000 IMPORT R2 K15
+ 0x8C0C0517, // 0001 GETMET R3 R2 K23
0x60140008, // 0002 GETGBL R5 G8
0x5C180200, // 0003 MOVE R6 R1
0x7C140200, // 0004 CALL R5 1
- 0x58180002, // 0005 LDCONST R6 K2
+ 0x58180035, // 0005 LDCONST R6 K53
0x7C0C0600, // 0006 CALL R3 3
0x80040600, // 0007 RET 1 R3
})
@@ -1088,24 +1044,21 @@ be_local_closure(class_lvh_root_is_color_attribute, /* name */
/********************************************************************
** Solidified function: set_meta
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_set_meta, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_meta),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(set_meta),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90024401, // 0000 SETMBR R0 K34 R1
0x80000000, // 0001 RET 0
})
)
@@ -1116,25 +1069,21 @@ be_local_closure(class_lvh_root_set_meta, /* name */
/********************************************************************
** Solidified function: set_delete
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_set_delete, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(type_error),
- /* K1 */ be_nested_str_weak(you_X20cannot_X20assign_X20to_X20_X27delete_X27),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(set_delete),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0xB0060101, // 0000 RAISE 1 K0 K1
+ 0xB0066D37, // 0000 RAISE 1 K54 K55
0x80000000, // 0001 RET 0
})
)
@@ -1145,24 +1094,21 @@ be_local_closure(class_lvh_root_set_delete, /* name */
/********************************************************************
** Solidified function: get_value_str
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_get_value_str, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(get_text),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(get_value_str),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040138, // 0000 GETMET R1 R0 K56
0x7C040200, // 0001 CALL R1 1
0x80040200, // 0002 RET 1 R1
})
@@ -1174,16 +1120,15 @@ be_local_closure(class_lvh_root_get_value_str, /* name */
/********************************************************************
** Solidified function: parse_color
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_parse_color, /* name */
be_nested_proto(
10, /* nstack */
1, /* argc */
- 4, /* varg */
+ 12, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
10, /* nstack */
1, /* argc */
@@ -1191,7 +1136,7 @@ be_local_closure(class_lvh_root_parse_color, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[14]) { /* constants */
/* K0 */ be_nested_str_weak(string),
@@ -1281,62 +1226,50 @@ be_local_closure(class_lvh_root_parse_color, /* name */
0x80040400, // 0042 RET 1 R2
})
),
- &be_class_lvh_root,
}),
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_const_class(be_class_lvh_root),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(_X23),
- /* K3 */ be_nested_str_weak(lv),
- /* K4 */ be_nested_str_weak(color),
- /* K5 */ be_nested_str_weak(string),
- /* K6 */ be_nested_str_weak(introspect),
- /* K7 */ be_nested_str_weak(COLOR_),
- /* K8 */ be_nested_str_weak(toupper),
- /* K9 */ be_nested_str_weak(get),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(parse_color),
&be_const_str_solidified,
( &(const binstruction[40]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
+ 0x5804002A, // 0000 LDCONST R1 K42
0x84080000, // 0001 CLOSURE R2 P0
0x600C0008, // 0002 GETGBL R3 G8
0x5C100000, // 0003 MOVE R4 R0
0x7C0C0200, // 0004 CALL R3 1
0x5C000600, // 0005 MOVE R0 R3
- 0x940C0101, // 0006 GETIDX R3 R0 K1
- 0x1C0C0702, // 0007 EQ R3 R3 K2
+ 0x940C0114, // 0006 GETIDX R3 R0 K20
+ 0x1C0C0739, // 0007 EQ R3 R3 K57
0x780E0007, // 0008 JMPF R3 #0011
- 0xB80E0600, // 0009 GETNGBL R3 K3
- 0x8C0C0704, // 000A GETMET R3 R3 K4
+ 0xB80E1400, // 0009 GETNGBL R3 K10
+ 0x8C0C0735, // 000A GETMET R3 R3 K53
0x5C140400, // 000B MOVE R5 R2
0x5C180000, // 000C MOVE R6 R0
0x7C140200, // 000D CALL R5 1
0x7C0C0400, // 000E CALL R3 2
0x80040600, // 000F RET 1 R3
0x70020011, // 0010 JMP #0023
- 0xA40E0A00, // 0011 IMPORT R3 K5
- 0xA4120C00, // 0012 IMPORT R4 K6
- 0x8C140708, // 0013 GETMET R5 R3 K8
+ 0xA40E1E00, // 0011 IMPORT R3 K15
+ 0xA4127400, // 0012 IMPORT R4 K58
+ 0x8C14073C, // 0013 GETMET R5 R3 K60
0x5C1C0000, // 0014 MOVE R7 R0
0x7C140400, // 0015 CALL R5 2
- 0x00160E05, // 0016 ADD R5 K7 R5
- 0x8C180909, // 0017 GETMET R6 R4 K9
- 0xB8220600, // 0018 GETNGBL R8 K3
+ 0x00167605, // 0016 ADD R5 K59 R5
+ 0x8C18093D, // 0017 GETMET R6 R4 K61
+ 0xB8221400, // 0018 GETNGBL R8 K10
0x5C240A00, // 0019 MOVE R9 R5
0x7C180600, // 001A CALL R6 3
0x4C1C0000, // 001B LDNIL R7
0x201C0C07, // 001C NE R7 R6 R7
0x781E0004, // 001D JMPF R7 #0023
- 0xB81E0600, // 001E GETNGBL R7 K3
- 0x8C1C0F04, // 001F GETMET R7 R7 K4
+ 0xB81E1400, // 001E GETNGBL R7 K10
+ 0x8C1C0F35, // 001F GETMET R7 R7 K53
0x5C240C00, // 0020 MOVE R9 R6
0x7C1C0400, // 0021 CALL R7 2
0x80040E00, // 0022 RET 1 R7
- 0xB80E0600, // 0023 GETNGBL R3 K3
- 0x8C0C0704, // 0024 GETMET R3 R3 K4
- 0x58140001, // 0025 LDCONST R5 K1
+ 0xB80E1400, // 0023 GETNGBL R3 K10
+ 0x8C0C0735, // 0024 GETMET R3 R3 K53
+ 0x58140014, // 0025 LDCONST R5 K20
0x7C0C0400, // 0026 CALL R3 2
0x80040600, // 0027 RET 1 R3
})
@@ -1348,24 +1281,21 @@ be_local_closure(class_lvh_root_parse_color, /* name */
/********************************************************************
** Solidified function: get_text_rule_format
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_get_text_rule_format, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_text_rule_format),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(get_text_rule_format),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x8804011F, // 0000 GETMBR R1 R0 K31
0x80040200, // 0001 RET 1 R1
})
)
@@ -1376,32 +1306,27 @@ be_local_closure(class_lvh_root_get_text_rule_format, /* name */
/********************************************************************
** Solidified function: remove_text_rule
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_remove_text_rule, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_text_rule),
- /* K1 */ be_nested_str_weak(tasmota),
- /* K2 */ be_nested_str_weak(remove_rule),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(remove_text_rule),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040105, // 0000 GETMBR R1 R0 K5
0x4C080000, // 0001 LDNIL R2
0x20040202, // 0002 NE R1 R1 R2
0x78060004, // 0003 JMPF R1 #0009
- 0xB8060200, // 0004 GETNGBL R1 K1
- 0x8C040302, // 0005 GETMET R1 R1 K2
- 0x880C0100, // 0006 GETMBR R3 R0 K0
+ 0xB8065C00, // 0004 GETNGBL R1 K46
+ 0x8C040334, // 0005 GETMET R1 R1 K52
+ 0x880C0105, // 0006 GETMBR R3 R0 K5
0x5C100000, // 0007 MOVE R4 R0
0x7C040600, // 0008 CALL R1 3
0x80000000, // 0009 RET 0
@@ -1414,32 +1339,25 @@ be_local_closure(class_lvh_root_remove_text_rule, /* name */
/********************************************************************
** Solidified function: set_val_rule_formula
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_set_val_rule_formula, /* name */
be_nested_proto(
11, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_root,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_val_rule_formula),
- /* K1 */ be_nested_str_weak(return_X20_X2F_X20val_X20_X2D_X3E_X20_X28),
- /* K2 */ be_nested_str_weak(_X29),
- /* K3 */ be_nested_str_weak(_val_rule_function),
- /* K4 */ be_nested_str_weak(HSP_X3A_X20failed_X20to_X20compile_X20_X27_X25s_X27_X20_X2D_X20_X25s_X20_X28_X25s_X29),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(set_val_rule_formula),
&be_const_str_solidified,
( &(const binstruction[29]) { /* code */
0x60080008, // 0000 GETGBL R2 G8
0x5C0C0200, // 0001 MOVE R3 R1
0x7C080200, // 0002 CALL R2 1
- 0x90020002, // 0003 SETMBR R0 K0 R2
- 0x88080100, // 0004 GETMBR R2 R0 K0
+ 0x90023602, // 0003 SETMBR R0 K27 R2
+ 0x8808011B, // 0004 GETMBR R2 R0 K27
0x000A0202, // 0005 ADD R2 K1 R2
0x00080502, // 0006 ADD R2 R2 K2
0xA8020007, // 0007 EXBLK 0 #0010
@@ -1448,7 +1366,7 @@ be_local_closure(class_lvh_root_set_val_rule_formula, /* name */
0x7C0C0200, // 000A CALL R3 1
0x5C100600, // 000B MOVE R4 R3
0x7C100000, // 000C CALL R4 0
- 0x90020604, // 000D SETMBR R0 K3 R4
+ 0x90020C04, // 000D SETMBR R0 K6 R4
0xA8040001, // 000E EXBLK 1 1
0x7002000B, // 000F JMP #001C
0xAC0C0002, // 0010 CATCH R3 0 2
@@ -1473,16 +1391,15 @@ be_local_closure(class_lvh_root_set_val_rule_formula, /* name */
/********************************************************************
** Solidified function: set_text_rule
********************************************************************/
-extern const bclass be_class_lvh_root;
be_local_closure(class_lvh_root_set_text_rule, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
4, /* nstack */
1, /* argc */
@@ -1492,7 +1409,7 @@ be_local_closure(class_lvh_root_set_text_rule, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(text_rule_matched),
@@ -1507,27 +1424,21 @@ be_local_closure(class_lvh_root_set_text_rule, /* name */
0x80040200, // 0004 RET 1 R1
})
),
- &be_class_lvh_root,
}),
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(remove_text_rule),
- /* K1 */ be_nested_str_weak(_text_rule),
- /* K2 */ be_nested_str_weak(tasmota),
- /* K3 */ be_nested_str_weak(add_rule),
- }),
+ &be_ktab_class_lvh_root, /* shared constants */
be_str_weak(set_text_rule),
&be_const_str_solidified,
( &(const binstruction[14]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C08013E, // 0000 GETMET R2 R0 K62
0x7C080200, // 0001 CALL R2 1
0x60080008, // 0002 GETGBL R2 G8
0x5C0C0200, // 0003 MOVE R3 R1
0x7C080200, // 0004 CALL R2 1
- 0x90020202, // 0005 SETMBR R0 K1 R2
- 0xB80A0400, // 0006 GETNGBL R2 K2
- 0x8C080503, // 0007 GETMET R2 R2 K3
- 0x88100101, // 0008 GETMBR R4 R0 K1
+ 0x90020A02, // 0005 SETMBR R0 K5 R2
+ 0xB80A5C00, // 0006 GETNGBL R2 K46
+ 0x8C08052F, // 0007 GETMET R2 R2 K47
+ 0x88100105, // 0008 GETMBR R4 R0 K5
0x84140000, // 0009 CLOSURE R5 P0
0x5C180000, // 000A MOVE R6 R0
0x7C080800, // 000B CALL R2 4
@@ -1642,30 +1553,165 @@ be_local_class(lvh_root,
})),
be_str_weak(lvh_root)
);
+// compact class 'lvh_obj' ktab size: 138, total: 284 (saved 1168 bytes)
+static const bvalue be_ktab_class_lvh_obj[138] = {
+ /* K0 */ be_nested_str_weak(_lv_part2_selector),
+ /* K1 */ be_nested_str_weak(_lv_obj),
+ /* K2 */ be_nested_str_weak(set_style_pad_bottom),
+ /* K3 */ be_nested_str_weak(lv),
+ /* K4 */ be_nested_str_weak(STATE_DEFAULT),
+ /* K5 */ be_nested_str_weak(string),
+ /* K6 */ be_nested_str_weak(toupper),
+ /* K7 */ be_nested_str_weak(TRUE),
+ /* K8 */ be_nested_str_weak(FALSE),
+ /* K9 */ be_nested_str_weak(add_state),
+ /* K10 */ be_nested_str_weak(STATE_CHECKED),
+ /* K11 */ be_nested_str_weak(clear_state),
+ /* K12 */ be_nested_str_weak(set_style_pad_left),
+ /* K13 */ be_nested_str_weak(get_style_pad_top),
+ /* K14 */ be_nested_str_weak(get_style_line_width),
+ /* K15 */ be_nested_str_weak(has_flag),
+ /* K16 */ be_nested_str_weak(OBJ_FLAG_CLICKABLE),
+ /* K17 */ be_nested_str_weak(_lv_label),
+ /* K18 */ be_nested_str_weak(get_text),
+ /* K19 */ be_nested_str_weak(set_style_line_width),
+ /* K20 */ be_nested_str_weak(check_label),
+ /* K21 */ be_nested_str_weak(set_text),
+ /* K22 */ be_const_int(0),
+ /* K23 */ be_nested_str_weak(left),
+ /* K24 */ be_nested_str_weak(TEXT_ALIGN_LEFT),
+ /* K25 */ be_const_int(1),
+ /* K26 */ be_nested_str_weak(center),
+ /* K27 */ be_nested_str_weak(TEXT_ALIGN_CENTER),
+ /* K28 */ be_const_int(2),
+ /* K29 */ be_nested_str_weak(right),
+ /* K30 */ be_nested_str_weak(TEXT_ALIGN_RIGHT),
+ /* K31 */ be_nested_str_weak(set_style_text_align),
+ /* K32 */ be_nested_str_weak(get_value_color),
+ /* K33 */ be_nested_str_weak(get_style_pad_right),
+ /* K34 */ be_nested_str_weak(get_style_text_color),
+ /* K35 */ be_nested_str_weak(_action),
+ /* K36 */ be_nested_str_weak(),
+ /* K37 */ be_nested_str_weak(get_y),
+ /* K38 */ be_nested_str_weak(set_style_pad_all),
+ /* K39 */ be_nested_str_weak(introspect),
+ /* K40 */ be_nested_str_weak(contains),
+ /* K41 */ be_nested_str_weak(label),
+ /* K42 */ be_nested_str_weak(get_obj),
+ /* K43 */ be_nested_str_weak(set_align),
+ /* K44 */ be_nested_str_weak(ALIGN_CENTER),
+ /* K45 */ be_nested_str_weak(set_text_color),
+ /* K46 */ be_nested_str_weak(OBJ_FLAG_FLEX_IN_NEW_TRACK),
+ /* K47 */ be_nested_str_weak(remove_val_rule),
+ /* K48 */ be_nested_str_weak(remove_text_rule),
+ /* K49 */ be_nested_str_weak(del),
+ /* K50 */ be_nested_str_weak(_page),
+ /* K51 */ be_nested_str_weak(remove_obj),
+ /* K52 */ be_nested_str_weak(id),
+ /* K53 */ be_nested_str_weak(get_x),
+ /* K54 */ be_nested_str_weak(set_style_pad_top),
+ /* K55 */ be_nested_str_weak(set_enabled),
+ /* K56 */ be_nested_str_weak(add_flag),
+ /* K57 */ be_nested_str_weak(clear_flag),
+ /* K58 */ be_nested_str_weak(_oh),
+ /* K59 */ be_nested_str_weak(get_code),
+ /* K60 */ be_nested_str_weak(action),
+ /* K61 */ be_nested_str_weak(EVENT_CLICKED),
+ /* K62 */ be_nested_str_weak(tasmota),
+ /* K63 */ be_nested_str_weak(set_timer),
+ /* K64 */ be_nested_str_weak(_event_map),
+ /* K65 */ be_nested_str_weak(find),
+ /* K66 */ be_nested_str_weak(json),
+ /* K67 */ be_nested_str_weak(EVENT_VALUE_CHANGED),
+ /* K68 */ be_nested_str_weak(val),
+ /* K69 */ be_nested_str_weak(_X2C_X22val_X22_X3A_X25s),
+ /* K70 */ be_nested_str_weak(dump),
+ /* K71 */ be_nested_str_weak(text),
+ /* K72 */ be_nested_str_weak(_X2C_X22text_X22_X3A),
+ /* K73 */ be_nested_str_weak(_X7B_X22hasp_X22_X3A_X7B_X22p_X25ib_X25i_X22_X3A_X7B_X22event_X22_X3A_X22_X25s_X22_X25s_X7D_X7D_X7D),
+ /* K74 */ be_nested_str_weak(_page_id),
+ /* K75 */ be_nested_str_weak(init),
+ /* K76 */ be_nested_str_weak(has_state),
+ /* K77 */ be_nested_str_weak(STATE_DISABLED),
+ /* K78 */ be_nested_str_weak(get_enabled),
+ /* K79 */ be_nested_str_weak(get_long_mode),
+ /* K80 */ be_nested_str_weak(OBJ_FLAG_HIDDEN),
+ /* K81 */ be_nested_str_weak(set_text_font),
+ /* K82 */ be_nested_str_weak(get_text_font),
+ /* K83 */ be_nested_str_weak(_val),
+ /* K84 */ be_nested_str_weak(set_value),
+ /* K85 */ be_nested_str_weak(set_style_text_color),
+ /* K86 */ be_nested_str_weak(parse_color),
+ /* K87 */ be_nested_str_weak(get_style_radius),
+ /* K88 */ be_nested_str_weak(set_style_pad_right),
+ /* K89 */ be_nested_str_weak(expand),
+ /* K90 */ be_nested_str_weak(set_width),
+ /* K91 */ be_nested_str_weak(SIZE_CONTENT),
+ /* K92 */ be_nested_str_weak(break),
+ /* K93 */ be_nested_str_weak(LABEL_LONG_WRAP),
+ /* K94 */ be_nested_str_weak(dots),
+ /* K95 */ be_nested_str_weak(LABEL_LONG_DOT),
+ /* K96 */ be_nested_str_weak(scroll),
+ /* K97 */ be_nested_str_weak(LABEL_LONG_SCROLL),
+ /* K98 */ be_nested_str_weak(loop),
+ /* K99 */ be_nested_str_weak(LABEL_LONG_SCROLL_CIRCULAR),
+ /* K100 */ be_nested_str_weak(crop),
+ /* K101 */ be_nested_str_weak(LABEL_LONG_CLIP),
+ /* K102 */ be_nested_str_weak(set_long_mode),
+ /* K103 */ be_nested_str_weak(startswith),
+ /* K104 */ be_nested_str_weak(set_),
+ /* K105 */ be_nested_str_weak(get_),
+ /* K106 */ be_nested_str_weak(real),
+ /* K107 */ be_nested_str_weak(math),
+ /* K108 */ be_nested_str_weak(round),
+ /* K109 */ be_nested_str_weak(endswith),
+ /* K110 */ be_nested_str_weak(_X25),
+ /* K111 */ be_nested_str_weak(pct),
+ /* K112 */ be_const_int(3),
+ /* K113 */ be_nested_str_weak(byte),
+ /* K114 */ be_const_int(2147483647),
+ /* K115 */ be_nested_str_weak(digits_to_style),
+ /* K116 */ be_nested_str_weak(_attr_ignore),
+ /* K117 */ be_nested_str_weak(get),
+ /* K118 */ be_nested_str_weak(function),
+ /* K119 */ be_nested_str_weak(_attr_map),
+ /* K120 */ be_nested_str_weak(is_color_attribute),
+ /* K121 */ be_nested_str_weak(set_style_),
+ /* K122 */ be_nested_str_weak(HSP_X3A_X20unknown_X20attribute_X3A),
+ /* K123 */ be_nested_str_weak(get_style_text_align),
+ /* K124 */ be_nested_str_weak(get_style_pad_left),
+ /* K125 */ be_nested_str_weak(set_x),
+ /* K126 */ be_nested_str_weak(get_style_),
+ /* K127 */ be_nested_str_weak(undefined),
+ /* K128 */ be_nested_str_weak(set_y),
+ /* K129 */ be_nested_str_weak(set_style_radius),
+ /* K130 */ be_nested_str_weak(keys),
+ /* K131 */ be_nested_str_weak(register_event),
+ /* K132 */ be_nested_str_weak(stop_iteration),
+ /* K133 */ be_nested_str_weak(parse_font),
+ /* K134 */ be_nested_str_weak(set_style_text_font),
+ /* K135 */ be_nested_str_weak(get_style_pad_bottom),
+ /* K136 */ be_nested_str_weak(get_value),
+ /* K137 */ be_nested_str_weak(register_event_cb),
+};
+
extern const bclass be_class_lvh_obj;
/********************************************************************
** Solidified function: set_pad_bottom2
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_pad_bottom2, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_part2_selector),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(set_style_pad_bottom),
- /* K3 */ be_nested_str_weak(lv),
- /* K4 */ be_nested_str_weak(STATE_DEFAULT),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_pad_bottom2),
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
@@ -1693,61 +1739,50 @@ be_local_closure(class_lvh_obj_set_pad_bottom2, /* name */
/********************************************************************
** Solidified function: set_toggle
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_toggle, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(string),
- /* K1 */ be_nested_str_weak(toupper),
- /* K2 */ be_nested_str_weak(TRUE),
- /* K3 */ be_nested_str_weak(FALSE),
- /* K4 */ be_nested_str_weak(_lv_obj),
- /* K5 */ be_nested_str_weak(add_state),
- /* K6 */ be_nested_str_weak(lv),
- /* K7 */ be_nested_str_weak(STATE_CHECKED),
- /* K8 */ be_nested_str_weak(clear_state),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_toggle),
&be_const_str_solidified,
( &(const binstruction[32]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
+ 0xA40A0A00, // 0000 IMPORT R2 K5
0x600C0004, // 0001 GETGBL R3 G4
0x5C100200, // 0002 MOVE R4 R1
0x7C0C0200, // 0003 CALL R3 1
- 0x1C0C0700, // 0004 EQ R3 R3 K0
+ 0x1C0C0705, // 0004 EQ R3 R3 K5
0x780E000C, // 0005 JMPF R3 #0013
- 0x8C0C0501, // 0006 GETMET R3 R2 K1
+ 0x8C0C0506, // 0006 GETMET R3 R2 K6
0x60140008, // 0007 GETGBL R5 G8
0x5C180200, // 0008 MOVE R6 R1
0x7C140200, // 0009 CALL R5 1
0x7C0C0400, // 000A CALL R3 2
0x5C040600, // 000B MOVE R1 R3
- 0x1C0C0302, // 000C EQ R3 R1 K2
+ 0x1C0C0307, // 000C EQ R3 R1 K7
0x780E0001, // 000D JMPF R3 #0010
0x50040200, // 000E LDBOOL R1 1 0
0x70020002, // 000F JMP #0013
- 0x1C0C0303, // 0010 EQ R3 R1 K3
+ 0x1C0C0308, // 0010 EQ R3 R1 K8
0x780E0000, // 0011 JMPF R3 #0013
0x50040000, // 0012 LDBOOL R1 0 0
0x78060005, // 0013 JMPF R1 #001A
- 0x880C0104, // 0014 GETMBR R3 R0 K4
- 0x8C0C0705, // 0015 GETMET R3 R3 K5
- 0xB8160C00, // 0016 GETNGBL R5 K6
- 0x88140B07, // 0017 GETMBR R5 R5 K7
+ 0x880C0101, // 0014 GETMBR R3 R0 K1
+ 0x8C0C0709, // 0015 GETMET R3 R3 K9
+ 0xB8160600, // 0016 GETNGBL R5 K3
+ 0x88140B0A, // 0017 GETMBR R5 R5 K10
0x7C0C0400, // 0018 CALL R3 2
0x70020004, // 0019 JMP #001F
- 0x880C0104, // 001A GETMBR R3 R0 K4
- 0x8C0C0708, // 001B GETMET R3 R3 K8
- 0xB8160C00, // 001C GETNGBL R5 K6
- 0x88140B07, // 001D GETMBR R5 R5 K7
+ 0x880C0101, // 001A GETMBR R3 R0 K1
+ 0x8C0C070B, // 001B GETMET R3 R3 K11
+ 0xB8160600, // 001C GETNGBL R5 K3
+ 0x88140B0A, // 001D GETMBR R5 R5 K10
0x7C0C0400, // 001E CALL R3 2
0x80000000, // 001F RET 0
})
@@ -1759,24 +1794,17 @@ be_local_closure(class_lvh_obj_set_toggle, /* name */
/********************************************************************
** Solidified function: set_pad_left2
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_pad_left2, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_part2_selector),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(set_style_pad_left),
- /* K3 */ be_nested_str_weak(lv),
- /* K4 */ be_nested_str_weak(STATE_DEFAULT),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_pad_left2),
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
@@ -1785,7 +1813,7 @@ be_local_closure(class_lvh_obj_set_pad_left2, /* name */
0x20080403, // 0002 NE R2 R2 R3
0x780A0009, // 0003 JMPF R2 #000E
0x88080101, // 0004 GETMBR R2 R0 K1
- 0x8C080502, // 0005 GETMET R2 R2 K2
+ 0x8C08050C, // 0005 GETMET R2 R2 K12
0x60100009, // 0006 GETGBL R4 G9
0x5C140200, // 0007 MOVE R5 R1
0x7C100200, // 0008 CALL R4 1
@@ -1804,24 +1832,17 @@ be_local_closure(class_lvh_obj_set_pad_left2, /* name */
/********************************************************************
** Solidified function: get_pad_top
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_pad_top, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_part2_selector),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(get_style_pad_top),
- /* K3 */ be_nested_str_weak(lv),
- /* K4 */ be_nested_str_weak(STATE_DEFAULT),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_pad_top),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
@@ -1830,7 +1851,7 @@ be_local_closure(class_lvh_obj_get_pad_top, /* name */
0x20040202, // 0002 NE R1 R1 R2
0x78060007, // 0003 JMPF R1 #000C
0x88040101, // 0004 GETMBR R1 R0 K1
- 0x8C040302, // 0005 GETMET R1 R1 K2
+ 0x8C04030D, // 0005 GETMET R1 R1 K13
0x880C0100, // 0006 GETMBR R3 R0 K0
0xB8120600, // 0007 GETNGBL R4 K3
0x88100904, // 0008 GETMBR R4 R4 K4
@@ -1847,26 +1868,22 @@ be_local_closure(class_lvh_obj_get_pad_top, /* name */
/********************************************************************
** Solidified function: get_line_width
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_line_width, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_style_line_width),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_line_width),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x88080101, // 0000 GETMBR R2 R0 K1
+ 0x8C08050E, // 0001 GETMET R2 R2 K14
0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
0x80040400, // 0004 RET 1 R2
@@ -1879,30 +1896,24 @@ be_local_closure(class_lvh_obj_get_line_width, /* name */
/********************************************************************
** Solidified function: get_adjustable
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_adjustable, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(has_flag),
- /* K2 */ be_nested_str_weak(lv),
- /* K3 */ be_nested_str_weak(OBJ_FLAG_CLICKABLE),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_adjustable),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0xB80E0400, // 0002 GETNGBL R3 K2
- 0x880C0703, // 0003 GETMBR R3 R3 K3
+ 0x88040101, // 0000 GETMBR R1 R0 K1
+ 0x8C04030F, // 0001 GETMET R1 R1 K15
+ 0xB80E0600, // 0002 GETNGBL R3 K3
+ 0x880C0710, // 0003 GETMBR R3 R3 K16
0x7C040400, // 0004 CALL R1 2
0x80040200, // 0005 RET 1 R1
})
@@ -1914,32 +1925,28 @@ be_local_closure(class_lvh_obj_get_adjustable, /* name */
/********************************************************************
** Solidified function: get_text
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_text, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_label),
- /* K1 */ be_nested_str_weak(get_text),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_text),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040111, // 0000 GETMBR R1 R0 K17
0x4C080000, // 0001 LDNIL R2
0x1C040202, // 0002 EQ R1 R1 R2
0x78060001, // 0003 JMPF R1 #0006
0x4C040000, // 0004 LDNIL R1
0x80040200, // 0005 RET 1 R1
- 0x88040100, // 0006 GETMBR R1 R0 K0
- 0x8C040301, // 0007 GETMET R1 R1 K1
+ 0x88040111, // 0006 GETMBR R1 R0 K17
+ 0x8C040312, // 0007 GETMET R1 R1 K18
0x7C040200, // 0008 CALL R1 1
0x80040200, // 0009 RET 1 R1
})
@@ -1951,26 +1958,22 @@ be_local_closure(class_lvh_obj_get_text, /* name */
/********************************************************************
** Solidified function: set_line_width
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_line_width, /* name */
be_nested_proto(
7, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_style_line_width),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_line_width),
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
+ 0x880C0101, // 0000 GETMBR R3 R0 K1
+ 0x8C0C0713, // 0001 GETMET R3 R3 K19
0x60140009, // 0002 GETGBL R5 G9
0x5C180200, // 0003 MOVE R6 R1
0x7C140200, // 0004 CALL R5 1
@@ -1986,29 +1989,24 @@ be_local_closure(class_lvh_obj_set_line_width, /* name */
/********************************************************************
** Solidified function: set_text
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_text, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(check_label),
- /* K1 */ be_nested_str_weak(_lv_label),
- /* K2 */ be_nested_str_weak(set_text),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_text),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C080114, // 0000 GETMET R2 R0 K20
0x7C080200, // 0001 CALL R2 1
- 0x88080101, // 0002 GETMBR R2 R0 K1
- 0x8C080502, // 0003 GETMET R2 R2 K2
+ 0x88080111, // 0002 GETMBR R2 R0 K17
+ 0x8C080515, // 0003 GETMET R2 R2 K21
0x60100008, // 0004 GETGBL R4 G8
0x5C140200, // 0005 MOVE R5 R1
0x7C100200, // 0006 CALL R4 1
@@ -2023,63 +2021,48 @@ be_local_closure(class_lvh_obj_set_text, /* name */
/********************************************************************
** Solidified function: set_align
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_align, /* name */
be_nested_proto(
8, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(check_label),
- /* K2 */ be_nested_str_weak(left),
- /* K3 */ be_nested_str_weak(lv),
- /* K4 */ be_nested_str_weak(TEXT_ALIGN_LEFT),
- /* K5 */ be_const_int(1),
- /* K6 */ be_nested_str_weak(center),
- /* K7 */ be_nested_str_weak(TEXT_ALIGN_CENTER),
- /* K8 */ be_const_int(2),
- /* K9 */ be_nested_str_weak(right),
- /* K10 */ be_nested_str_weak(TEXT_ALIGN_RIGHT),
- /* K11 */ be_nested_str_weak(_lv_label),
- /* K12 */ be_nested_str_weak(set_style_text_align),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_align),
&be_const_str_solidified,
( &(const binstruction[32]) { /* code */
0x4C0C0000, // 0000 LDNIL R3
- 0x1C100500, // 0001 EQ R4 R2 K0
+ 0x1C100516, // 0001 EQ R4 R2 K22
0x78120000, // 0002 JMPF R4 #0004
- 0x58080000, // 0003 LDCONST R2 K0
- 0x8C100101, // 0004 GETMET R4 R0 K1
+ 0x58080016, // 0003 LDCONST R2 K22
+ 0x8C100114, // 0004 GETMET R4 R0 K20
0x7C100200, // 0005 CALL R4 1
- 0x1C100300, // 0006 EQ R4 R1 K0
+ 0x1C100316, // 0006 EQ R4 R1 K22
0x74120001, // 0007 JMPT R4 #000A
- 0x1C100302, // 0008 EQ R4 R1 K2
+ 0x1C100317, // 0008 EQ R4 R1 K23
0x78120002, // 0009 JMPF R4 #000D
0xB8120600, // 000A GETNGBL R4 K3
- 0x880C0904, // 000B GETMBR R3 R4 K4
+ 0x880C0918, // 000B GETMBR R3 R4 K24
0x7002000C, // 000C JMP #001A
- 0x1C100305, // 000D EQ R4 R1 K5
+ 0x1C100319, // 000D EQ R4 R1 K25
0x74120001, // 000E JMPT R4 #0011
- 0x1C100306, // 000F EQ R4 R1 K6
+ 0x1C10031A, // 000F EQ R4 R1 K26
0x78120002, // 0010 JMPF R4 #0014
0xB8120600, // 0011 GETNGBL R4 K3
- 0x880C0907, // 0012 GETMBR R3 R4 K7
+ 0x880C091B, // 0012 GETMBR R3 R4 K27
0x70020005, // 0013 JMP #001A
- 0x1C100308, // 0014 EQ R4 R1 K8
+ 0x1C10031C, // 0014 EQ R4 R1 K28
0x74120001, // 0015 JMPT R4 #0018
- 0x1C100309, // 0016 EQ R4 R1 K9
+ 0x1C10031D, // 0016 EQ R4 R1 K29
0x78120001, // 0017 JMPF R4 #001A
0xB8120600, // 0018 GETNGBL R4 K3
- 0x880C090A, // 0019 GETMBR R3 R4 K10
- 0x8810010B, // 001A GETMBR R4 R0 K11
- 0x8C10090C, // 001B GETMET R4 R4 K12
+ 0x880C091E, // 0019 GETMBR R3 R4 K30
+ 0x88100111, // 001A GETMBR R4 R0 K17
+ 0x8C10091F, // 001B GETMET R4 R4 K31
0x5C180600, // 001C MOVE R6 R3
0x5C1C0400, // 001D MOVE R7 R2
0x7C100600, // 001E CALL R4 3
@@ -2093,24 +2076,21 @@ be_local_closure(class_lvh_obj_set_align, /* name */
/********************************************************************
** Solidified function: get_value_color
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_value_color, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(get_value_color),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_value_color),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040120, // 0000 GETMET R1 R0 K32
0x7C040200, // 0001 CALL R1 1
0x80040200, // 0002 RET 1 R1
})
@@ -2122,24 +2102,17 @@ be_local_closure(class_lvh_obj_get_value_color, /* name */
/********************************************************************
** Solidified function: get_pad_right
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_pad_right, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_part2_selector),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(get_style_pad_right),
- /* K3 */ be_nested_str_weak(lv),
- /* K4 */ be_nested_str_weak(STATE_DEFAULT),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_pad_right),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
@@ -2148,7 +2121,7 @@ be_local_closure(class_lvh_obj_get_pad_right, /* name */
0x20040202, // 0002 NE R1 R1 R2
0x78060007, // 0003 JMPF R1 #000C
0x88040101, // 0004 GETMBR R1 R0 K1
- 0x8C040302, // 0005 GETMET R1 R1 K2
+ 0x8C040321, // 0005 GETMET R1 R1 K33
0x880C0100, // 0006 GETMBR R3 R0 K0
0xB8120600, // 0007 GETNGBL R4 K3
0x88100904, // 0008 GETMBR R4 R4 K4
@@ -2165,26 +2138,22 @@ be_local_closure(class_lvh_obj_get_pad_right, /* name */
/********************************************************************
** Solidified function: get_text_color
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_text_color, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_style_text_color),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_text_color),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x88080101, // 0000 GETMBR R2 R0 K1
+ 0x8C080522, // 0001 GETMET R2 R2 K34
0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
0x80040400, // 0004 RET 1 R2
@@ -2197,29 +2166,25 @@ be_local_closure(class_lvh_obj_get_text_color, /* name */
/********************************************************************
** Solidified function: get_action
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_action, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_action),
- /* K1 */ be_nested_str_weak(),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_action),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040123, // 0000 GETMBR R1 R0 K35
0x78060001, // 0001 JMPF R1 #0004
0x5C080200, // 0002 MOVE R2 R1
0x70020000, // 0003 JMP #0005
- 0x58080001, // 0004 LDCONST R2 K1
+ 0x58080024, // 0004 LDCONST R2 K36
0x80040400, // 0005 RET 1 R2
})
)
@@ -2230,26 +2195,22 @@ be_local_closure(class_lvh_obj_get_action, /* name */
/********************************************************************
** Solidified function: get_value_ofs_y
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_value_ofs_y, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_label),
- /* K1 */ be_nested_str_weak(get_y),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_value_ofs_y),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x88040111, // 0000 GETMBR R1 R0 K17
+ 0x8C040325, // 0001 GETMET R1 R1 K37
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -2261,24 +2222,17 @@ be_local_closure(class_lvh_obj_get_value_ofs_y, /* name */
/********************************************************************
** Solidified function: set_pad_all2
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_pad_all2, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_part2_selector),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(set_style_pad_all),
- /* K3 */ be_nested_str_weak(lv),
- /* K4 */ be_nested_str_weak(STATE_DEFAULT),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_pad_all2),
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
@@ -2287,7 +2241,7 @@ be_local_closure(class_lvh_obj_set_pad_all2, /* name */
0x20080403, // 0002 NE R2 R2 R3
0x780A0009, // 0003 JMPF R2 #000E
0x88080101, // 0004 GETMBR R2 R0 K1
- 0x8C080502, // 0005 GETMET R2 R2 K2
+ 0x8C080526, // 0005 GETMET R2 R2 K38
0x60100009, // 0006 GETGBL R4 G9
0x5C140200, // 0007 MOVE R5 R1
0x7C100200, // 0008 CALL R4 1
@@ -2306,55 +2260,43 @@ be_local_closure(class_lvh_obj_set_pad_all2, /* name */
/********************************************************************
** Solidified function: check_label
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_check_label, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_label),
- /* K1 */ be_nested_str_weak(introspect),
- /* K2 */ be_nested_str_weak(contains),
- /* K3 */ be_nested_str_weak(_lv_obj),
- /* K4 */ be_nested_str_weak(set_text),
- /* K5 */ be_nested_str_weak(lv),
- /* K6 */ be_nested_str_weak(label),
- /* K7 */ be_nested_str_weak(get_obj),
- /* K8 */ be_nested_str_weak(set_align),
- /* K9 */ be_nested_str_weak(ALIGN_CENTER),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(check_label),
&be_const_str_solidified,
( &(const binstruction[25]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040111, // 0000 GETMBR R1 R0 K17
0x4C080000, // 0001 LDNIL R2
0x1C040202, // 0002 EQ R1 R1 R2
0x78060013, // 0003 JMPF R1 #0018
- 0xA4060200, // 0004 IMPORT R1 K1
- 0x8C080302, // 0005 GETMET R2 R1 K2
- 0x88100103, // 0006 GETMBR R4 R0 K3
- 0x58140004, // 0007 LDCONST R5 K4
+ 0xA4064E00, // 0004 IMPORT R1 K39
+ 0x8C080328, // 0005 GETMET R2 R1 K40
+ 0x88100101, // 0006 GETMBR R4 R0 K1
+ 0x58140015, // 0007 LDCONST R5 K21
0x7C080600, // 0008 CALL R2 3
0x780A0002, // 0009 JMPF R2 #000D
- 0x88080103, // 000A GETMBR R2 R0 K3
- 0x90020002, // 000B SETMBR R0 K0 R2
+ 0x88080101, // 000A GETMBR R2 R0 K1
+ 0x90022202, // 000B SETMBR R0 K17 R2
0x7002000A, // 000C JMP #0018
- 0xB80A0A00, // 000D GETNGBL R2 K5
- 0x8C080506, // 000E GETMET R2 R2 K6
- 0x8C100107, // 000F GETMET R4 R0 K7
+ 0xB80A0600, // 000D GETNGBL R2 K3
+ 0x8C080529, // 000E GETMET R2 R2 K41
+ 0x8C10012A, // 000F GETMET R4 R0 K42
0x7C100200, // 0010 CALL R4 1
0x7C080400, // 0011 CALL R2 2
- 0x90020002, // 0012 SETMBR R0 K0 R2
- 0x88080100, // 0013 GETMBR R2 R0 K0
- 0x8C080508, // 0014 GETMET R2 R2 K8
- 0xB8120A00, // 0015 GETNGBL R4 K5
- 0x88100909, // 0016 GETMBR R4 R4 K9
+ 0x90022202, // 0012 SETMBR R0 K17 R2
+ 0x88080111, // 0013 GETMBR R2 R0 K17
+ 0x8C08052B, // 0014 GETMET R2 R2 K43
+ 0xB8120600, // 0015 GETNGBL R4 K3
+ 0x8810092C, // 0016 GETMBR R4 R4 K44
0x7C080400, // 0017 CALL R2 2
0x80000000, // 0018 RET 0
})
@@ -2366,24 +2308,21 @@ be_local_closure(class_lvh_obj_check_label, /* name */
/********************************************************************
** Solidified function: set_value_color
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_value_color, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(set_text_color),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_value_color),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C08012D, // 0000 GETMET R2 R0 K45
0x5C100200, // 0001 MOVE R4 R1
0x7C080400, // 0002 CALL R2 2
0x80000000, // 0003 RET 0
@@ -2396,30 +2335,24 @@ be_local_closure(class_lvh_obj_set_value_color, /* name */
/********************************************************************
** Solidified function: get_flex_in_new_track
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_flex_in_new_track, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(has_flag),
- /* K2 */ be_nested_str_weak(lv),
- /* K3 */ be_nested_str_weak(OBJ_FLAG_FLEX_IN_NEW_TRACK),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_flex_in_new_track),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0xB80E0400, // 0002 GETNGBL R3 K2
- 0x880C0703, // 0003 GETMBR R3 R3 K3
+ 0x88040101, // 0000 GETMBR R1 R0 K1
+ 0x8C04030F, // 0001 GETMET R1 R1 K15
+ 0xB80E0600, // 0002 GETNGBL R3 K3
+ 0x880C072E, // 0003 GETMBR R3 R3 K46
0x7C040400, // 0004 CALL R1 2
0x80040200, // 0005 RET 1 R1
})
@@ -2431,51 +2364,41 @@ be_local_closure(class_lvh_obj_get_flex_in_new_track, /* name */
/********************************************************************
** Solidified function: delete
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_delete, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(remove_val_rule),
- /* K1 */ be_nested_str_weak(remove_text_rule),
- /* K2 */ be_nested_str_weak(_lv_label),
- /* K3 */ be_nested_str_weak(del),
- /* K4 */ be_nested_str_weak(_lv_obj),
- /* K5 */ be_nested_str_weak(_page),
- /* K6 */ be_nested_str_weak(remove_obj),
- /* K7 */ be_nested_str_weak(id),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(delete),
&be_const_str_solidified,
( &(const binstruction[23]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C04012F, // 0000 GETMET R1 R0 K47
0x7C040200, // 0001 CALL R1 1
- 0x8C040101, // 0002 GETMET R1 R0 K1
+ 0x8C040130, // 0002 GETMET R1 R0 K48
0x7C040200, // 0003 CALL R1 1
- 0x88040102, // 0004 GETMBR R1 R0 K2
+ 0x88040111, // 0004 GETMBR R1 R0 K17
0x78060004, // 0005 JMPF R1 #000B
- 0x88040102, // 0006 GETMBR R1 R0 K2
- 0x8C040303, // 0007 GETMET R1 R1 K3
+ 0x88040111, // 0006 GETMBR R1 R0 K17
+ 0x8C040331, // 0007 GETMET R1 R1 K49
0x7C040200, // 0008 CALL R1 1
0x4C040000, // 0009 LDNIL R1
- 0x90020401, // 000A SETMBR R0 K2 R1
- 0x88040104, // 000B GETMBR R1 R0 K4
+ 0x90022201, // 000A SETMBR R0 K17 R1
+ 0x88040101, // 000B GETMBR R1 R0 K1
0x78060004, // 000C JMPF R1 #0012
- 0x88040104, // 000D GETMBR R1 R0 K4
- 0x8C040303, // 000E GETMET R1 R1 K3
+ 0x88040101, // 000D GETMBR R1 R0 K1
+ 0x8C040331, // 000E GETMET R1 R1 K49
0x7C040200, // 000F CALL R1 1
0x4C040000, // 0010 LDNIL R1
- 0x90020801, // 0011 SETMBR R0 K4 R1
- 0x88040105, // 0012 GETMBR R1 R0 K5
- 0x8C040306, // 0013 GETMET R1 R1 K6
- 0x880C0107, // 0014 GETMBR R3 R0 K7
+ 0x90020201, // 0011 SETMBR R0 K1 R1
+ 0x88040132, // 0012 GETMBR R1 R0 K50
+ 0x8C040333, // 0013 GETMET R1 R1 K51
+ 0x880C0134, // 0014 GETMBR R3 R0 K52
0x7C040400, // 0015 CALL R1 2
0x80000000, // 0016 RET 0
})
@@ -2487,26 +2410,22 @@ be_local_closure(class_lvh_obj_delete, /* name */
/********************************************************************
** Solidified function: get_value_ofs_x
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_value_ofs_x, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_label),
- /* K1 */ be_nested_str_weak(get_x),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_value_ofs_x),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x88040111, // 0000 GETMBR R1 R0 K17
+ 0x8C040335, // 0001 GETMET R1 R1 K53
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -2518,24 +2437,17 @@ be_local_closure(class_lvh_obj_get_value_ofs_x, /* name */
/********************************************************************
** Solidified function: set_pad_top2
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_pad_top2, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_part2_selector),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(set_style_pad_top),
- /* K3 */ be_nested_str_weak(lv),
- /* K4 */ be_nested_str_weak(STATE_DEFAULT),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_pad_top2),
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
@@ -2544,7 +2456,7 @@ be_local_closure(class_lvh_obj_set_pad_top2, /* name */
0x20080403, // 0002 NE R2 R2 R3
0x780A0009, // 0003 JMPF R2 #000E
0x88080101, // 0004 GETMBR R2 R0 K1
- 0x8C080502, // 0005 GETMET R2 R2 K2
+ 0x8C080536, // 0005 GETMET R2 R2 K54
0x60100009, // 0006 GETGBL R4 G9
0x5C140200, // 0007 MOVE R5 R1
0x7C100200, // 0008 CALL R4 1
@@ -2563,24 +2475,21 @@ be_local_closure(class_lvh_obj_set_pad_top2, /* name */
/********************************************************************
** Solidified function: set_click
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_click, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(set_enabled),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_click),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C080137, // 0000 GETMET R2 R0 K55
0x5C100200, // 0001 MOVE R4 R1
0x7C080400, // 0002 CALL R2 2
0x80000000, // 0003 RET 0
@@ -2593,38 +2502,31 @@ be_local_closure(class_lvh_obj_set_click, /* name */
/********************************************************************
** Solidified function: set_adjustable
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_adjustable, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(add_flag),
- /* K2 */ be_nested_str_weak(lv),
- /* K3 */ be_nested_str_weak(OBJ_FLAG_CLICKABLE),
- /* K4 */ be_nested_str_weak(clear_flag),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_adjustable),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
0x78060005, // 0000 JMPF R1 #0007
- 0x88080100, // 0001 GETMBR R2 R0 K0
- 0x8C080501, // 0002 GETMET R2 R2 K1
- 0xB8120400, // 0003 GETNGBL R4 K2
- 0x88100903, // 0004 GETMBR R4 R4 K3
+ 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x8C080538, // 0002 GETMET R2 R2 K56
+ 0xB8120600, // 0003 GETNGBL R4 K3
+ 0x88100910, // 0004 GETMBR R4 R4 K16
0x7C080400, // 0005 CALL R2 2
0x70020004, // 0006 JMP #000C
- 0x88080100, // 0007 GETMBR R2 R0 K0
- 0x8C080504, // 0008 GETMET R2 R2 K4
- 0xB8120400, // 0009 GETNGBL R4 K2
- 0x88100903, // 000A GETMBR R4 R4 K3
+ 0x88080101, // 0007 GETMBR R2 R0 K1
+ 0x8C080539, // 0008 GETMET R2 R2 K57
+ 0xB8120600, // 0009 GETNGBL R4 K3
+ 0x88100910, // 000A GETMBR R4 R4 K16
0x7C080400, // 000B CALL R2 2
0x80000000, // 000C RET 0
})
@@ -2636,16 +2538,15 @@ be_local_closure(class_lvh_obj_set_adjustable, /* name */
/********************************************************************
** Solidified function: event_cb
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_event_cb, /* name */
be_nested_proto(
13, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 3]) {
+ ( &(const struct bproto*[ 2]) {
be_nested_proto(
4, /* nstack */
0, /* argc */
@@ -2657,7 +2558,7 @@ be_local_closure(class_lvh_obj_event_cb, /* name */
be_local_const_upval(1, 3),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(do_action),
@@ -2682,7 +2583,7 @@ be_local_closure(class_lvh_obj_event_cb, /* name */
be_local_const_upval(1, 7),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(tasmota),
@@ -2698,83 +2599,59 @@ be_local_closure(class_lvh_obj_event_cb, /* name */
0x80040000, // 0004 RET 1 R0
})
),
- &be_class_lvh_obj,
}),
1, /* has constants */
- ( &(const bvalue[22]) { /* constants */
- /* K0 */ be_nested_str_weak(_page),
- /* K1 */ be_nested_str_weak(_oh),
- /* K2 */ be_nested_str_weak(get_code),
- /* K3 */ be_nested_str_weak(action),
- /* K4 */ be_nested_str_weak(),
- /* K5 */ be_nested_str_weak(lv),
- /* K6 */ be_nested_str_weak(EVENT_CLICKED),
- /* K7 */ be_nested_str_weak(tasmota),
- /* K8 */ be_nested_str_weak(set_timer),
- /* K9 */ be_const_int(0),
- /* K10 */ be_nested_str_weak(_event_map),
- /* K11 */ be_nested_str_weak(find),
- /* K12 */ be_nested_str_weak(json),
- /* K13 */ be_nested_str_weak(EVENT_VALUE_CHANGED),
- /* K14 */ be_nested_str_weak(val),
- /* K15 */ be_nested_str_weak(_X2C_X22val_X22_X3A_X25s),
- /* K16 */ be_nested_str_weak(dump),
- /* K17 */ be_nested_str_weak(text),
- /* K18 */ be_nested_str_weak(_X2C_X22text_X22_X3A),
- /* K19 */ be_nested_str_weak(_X7B_X22hasp_X22_X3A_X7B_X22p_X25ib_X25i_X22_X3A_X7B_X22event_X22_X3A_X22_X25s_X22_X25s_X7D_X7D_X7D),
- /* K20 */ be_nested_str_weak(_page_id),
- /* K21 */ be_nested_str_weak(id),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(event_cb),
&be_const_str_solidified,
( &(const binstruction[72]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x88080501, // 0001 GETMBR R2 R2 K1
- 0x8C0C0302, // 0002 GETMET R3 R1 K2
+ 0x88080132, // 0000 GETMBR R2 R0 K50
+ 0x8808053A, // 0001 GETMBR R2 R2 K58
+ 0x8C0C033B, // 0002 GETMET R3 R1 K59
0x7C0C0200, // 0003 CALL R3 1
- 0x88100103, // 0004 GETMBR R4 R0 K3
- 0x20100904, // 0005 NE R4 R4 K4
+ 0x8810013C, // 0004 GETMBR R4 R0 K60
+ 0x20100924, // 0005 NE R4 R4 K36
0x78120008, // 0006 JMPF R4 #0010
- 0xB8120A00, // 0007 GETNGBL R4 K5
- 0x88100906, // 0008 GETMBR R4 R4 K6
+ 0xB8120600, // 0007 GETNGBL R4 K3
+ 0x8810093D, // 0008 GETMBR R4 R4 K61
0x1C100604, // 0009 EQ R4 R3 R4
0x78120004, // 000A JMPF R4 #0010
- 0xB8120E00, // 000B GETNGBL R4 K7
- 0x8C100908, // 000C GETMET R4 R4 K8
- 0x58180009, // 000D LDCONST R6 K9
+ 0xB8127C00, // 000B GETNGBL R4 K62
+ 0x8C10093F, // 000C GETMET R4 R4 K63
+ 0x58180016, // 000D LDCONST R6 K22
0x841C0000, // 000E CLOSURE R7 P0
0x7C100600, // 000F CALL R4 3
- 0x8810010A, // 0010 GETMBR R4 R0 K10
- 0x8C10090B, // 0011 GETMET R4 R4 K11
+ 0x88100140, // 0010 GETMBR R4 R0 K64
+ 0x8C100941, // 0011 GETMET R4 R4 K65
0x5C180600, // 0012 MOVE R6 R3
0x7C100400, // 0013 CALL R4 2
0x4C140000, // 0014 LDNIL R5
0x20140805, // 0015 NE R5 R4 R5
0x7816002E, // 0016 JMPF R5 #0046
- 0xA4161800, // 0017 IMPORT R5 K12
- 0x58180004, // 0018 LDCONST R6 K4
- 0xB81E0A00, // 0019 GETNGBL R7 K5
- 0x881C0F0D, // 001A GETMBR R7 R7 K13
+ 0xA4168400, // 0017 IMPORT R5 K66
+ 0x58180024, // 0018 LDCONST R6 K36
+ 0xB81E0600, // 0019 GETNGBL R7 K3
+ 0x881C0F43, // 001A GETMBR R7 R7 K67
0x1C1C0607, // 001B EQ R7 R3 R7
0x781E001A, // 001C JMPF R7 #0038
0xA8020015, // 001D EXBLK 0 #0034
- 0x881C010E, // 001E GETMBR R7 R0 K14
+ 0x881C0144, // 001E GETMBR R7 R0 K68
0x4C200000, // 001F LDNIL R8
0x20200E08, // 0020 NE R8 R7 R8
0x78220006, // 0021 JMPF R8 #0029
0x60200018, // 0022 GETGBL R8 G24
- 0x5824000F, // 0023 LDCONST R9 K15
- 0x8C280B10, // 0024 GETMET R10 R5 K16
+ 0x58240045, // 0023 LDCONST R9 K69
+ 0x8C280B46, // 0024 GETMET R10 R5 K70
0x5C300E00, // 0025 MOVE R12 R7
0x7C280400, // 0026 CALL R10 2
0x7C200400, // 0027 CALL R8 2
0x5C181000, // 0028 MOVE R6 R8
- 0x88200111, // 0029 GETMBR R8 R0 K17
+ 0x88200147, // 0029 GETMBR R8 R0 K71
0x4C240000, // 002A LDNIL R9
0x20241009, // 002B NE R9 R8 R9
0x78260004, // 002C JMPF R9 #0032
- 0x00180D12, // 002D ADD R6 R6 K18
- 0x8C240B10, // 002E GETMET R9 R5 K16
+ 0x00180D48, // 002D ADD R6 R6 K72
+ 0x8C240B46, // 002E GETMET R9 R5 K70
0x5C2C1000, // 002F MOVE R11 R8
0x7C240400, // 0030 CALL R9 2
0x00180C09, // 0031 ADD R6 R6 R9
@@ -2785,16 +2662,16 @@ be_local_closure(class_lvh_obj_event_cb, /* name */
0x70020000, // 0036 JMP #0038
0xB0080000, // 0037 RAISE 2 R0 R0
0x601C0018, // 0038 GETGBL R7 G24
- 0x58200013, // 0039 LDCONST R8 K19
- 0x88240100, // 003A GETMBR R9 R0 K0
- 0x88241314, // 003B GETMBR R9 R9 K20
- 0x88280115, // 003C GETMBR R10 R0 K21
+ 0x58200049, // 0039 LDCONST R8 K73
+ 0x88240132, // 003A GETMBR R9 R0 K50
+ 0x8824134A, // 003B GETMBR R9 R9 K74
+ 0x88280134, // 003C GETMBR R10 R0 K52
0x5C2C0800, // 003D MOVE R11 R4
0x5C300C00, // 003E MOVE R12 R6
0x7C1C0A00, // 003F CALL R7 5
- 0xB8220E00, // 0040 GETNGBL R8 K7
- 0x8C201108, // 0041 GETMET R8 R8 K8
- 0x58280009, // 0042 LDCONST R10 K9
+ 0xB8227C00, // 0040 GETNGBL R8 K62
+ 0x8C20113F, // 0041 GETMET R8 R8 K63
+ 0x58280016, // 0042 LDCONST R10 K22
0x842C0001, // 0043 CLOSURE R11 P1
0x7C200600, // 0044 CALL R8 3
0xA0140000, // 0045 CLOSE R5
@@ -2809,27 +2686,24 @@ be_local_closure(class_lvh_obj_event_cb, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_init, /* name */
be_nested_proto(
13, /* nstack */
6, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(init),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[11]) { /* code */
0x60180003, // 0000 GETGBL R6 G3
0x5C1C0000, // 0001 MOVE R7 R0
0x7C180200, // 0002 CALL R6 1
- 0x8C180D00, // 0003 GETMET R6 R6 K0
+ 0x8C180D4B, // 0003 GETMET R6 R6 K75
0x5C200200, // 0004 MOVE R8 R1
0x5C240400, // 0005 MOVE R9 R2
0x5C280600, // 0006 MOVE R10 R3
@@ -2846,30 +2720,24 @@ be_local_closure(class_lvh_obj_init, /* name */
/********************************************************************
** Solidified function: get_enabled
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_enabled, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(has_state),
- /* K2 */ be_nested_str_weak(lv),
- /* K3 */ be_nested_str_weak(STATE_DISABLED),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_enabled),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0xB80E0400, // 0002 GETNGBL R3 K2
- 0x880C0703, // 0003 GETMBR R3 R3 K3
+ 0x88040101, // 0000 GETMBR R1 R0 K1
+ 0x8C04034C, // 0001 GETMET R1 R1 K76
+ 0xB80E0600, // 0002 GETNGBL R3 K3
+ 0x880C074D, // 0003 GETMBR R3 R3 K77
0x7C040400, // 0004 CALL R1 2
0x78060000, // 0005 JMPF R1 #0007
0x50040001, // 0006 LDBOOL R1 0 1
@@ -2884,24 +2752,21 @@ be_local_closure(class_lvh_obj_get_enabled, /* name */
/********************************************************************
** Solidified function: get_click
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_click, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(get_enabled),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_click),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C04014E, // 0000 GETMET R1 R0 K78
0x7C040200, // 0001 CALL R1 1
0x80040200, // 0002 RET 1 R1
})
@@ -2913,30 +2778,26 @@ be_local_closure(class_lvh_obj_get_click, /* name */
/********************************************************************
** Solidified function: get_label_mode
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_label_mode, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_label),
- /* K1 */ be_nested_str_weak(get_long_mode),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_label_mode),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040111, // 0000 GETMBR R1 R0 K17
0x4C080000, // 0001 LDNIL R2
0x20040202, // 0002 NE R1 R1 R2
0x78060003, // 0003 JMPF R1 #0008
- 0x88040100, // 0004 GETMBR R1 R0 K0
- 0x8C040301, // 0005 GETMET R1 R1 K1
+ 0x88040111, // 0004 GETMBR R1 R0 K17
+ 0x8C04034F, // 0005 GETMET R1 R1 K79
0x7C040200, // 0006 CALL R1 1
0x80040200, // 0007 RET 1 R1
0x80000000, // 0008 RET 0
@@ -2949,30 +2810,24 @@ be_local_closure(class_lvh_obj_get_label_mode, /* name */
/********************************************************************
** Solidified function: get_toggle
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_toggle, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(has_state),
- /* K2 */ be_nested_str_weak(lv),
- /* K3 */ be_nested_str_weak(STATE_CHECKED),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_toggle),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0xB80E0400, // 0002 GETNGBL R3 K2
- 0x880C0703, // 0003 GETMBR R3 R3 K3
+ 0x88040101, // 0000 GETMBR R1 R0 K1
+ 0x8C04034C, // 0001 GETMET R1 R1 K76
+ 0xB80E0600, // 0002 GETNGBL R3 K3
+ 0x880C070A, // 0003 GETMBR R3 R3 K10
0x7C040400, // 0004 CALL R1 2
0x80040200, // 0005 RET 1 R1
})
@@ -2984,30 +2839,24 @@ be_local_closure(class_lvh_obj_get_toggle, /* name */
/********************************************************************
** Solidified function: get_hidden
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_hidden, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(has_flag),
- /* K2 */ be_nested_str_weak(lv),
- /* K3 */ be_nested_str_weak(OBJ_FLAG_HIDDEN),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_hidden),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0xB80E0400, // 0002 GETNGBL R3 K2
- 0x880C0703, // 0003 GETMBR R3 R3 K3
+ 0x88040101, // 0000 GETMBR R1 R0 K1
+ 0x8C04030F, // 0001 GETMET R1 R1 K15
+ 0xB80E0600, // 0002 GETNGBL R3 K3
+ 0x880C0750, // 0003 GETMBR R3 R3 K80
0x7C040400, // 0004 CALL R1 2
0x80040200, // 0005 RET 1 R1
})
@@ -3019,24 +2868,21 @@ be_local_closure(class_lvh_obj_get_hidden, /* name */
/********************************************************************
** Solidified function: set_value_font
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_value_font, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(set_text_font),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_value_font),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C080151, // 0000 GETMET R2 R0 K81
0x5C100200, // 0001 MOVE R4 R1
0x7C080400, // 0002 CALL R2 2
0x80000000, // 0003 RET 0
@@ -3049,24 +2895,21 @@ be_local_closure(class_lvh_obj_set_value_font, /* name */
/********************************************************************
** Solidified function: get_value_font
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_value_font, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(get_text_font),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_value_font),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040152, // 0000 GETMET R1 R0 K82
0x7C040200, // 0001 CALL R1 1
0x80040200, // 0002 RET 1 R1
})
@@ -3078,36 +2921,29 @@ be_local_closure(class_lvh_obj_get_value_font, /* name */
/********************************************************************
** Solidified function: set_val
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_val, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(introspect),
- /* K1 */ be_nested_str_weak(_val),
- /* K2 */ be_nested_str_weak(contains),
- /* K3 */ be_nested_str_weak(_lv_obj),
- /* K4 */ be_nested_str_weak(set_value),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_val),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x90020201, // 0001 SETMBR R0 K1 R1
- 0x8C0C0502, // 0002 GETMET R3 R2 K2
- 0x88140103, // 0003 GETMBR R5 R0 K3
- 0x58180004, // 0004 LDCONST R6 K4
+ 0xA40A4E00, // 0000 IMPORT R2 K39
+ 0x9002A601, // 0001 SETMBR R0 K83 R1
+ 0x8C0C0528, // 0002 GETMET R3 R2 K40
+ 0x88140101, // 0003 GETMBR R5 R0 K1
+ 0x58180054, // 0004 LDCONST R6 K84
0x7C0C0600, // 0005 CALL R3 3
0x780E0003, // 0006 JMPF R3 #000B
- 0x880C0103, // 0007 GETMBR R3 R0 K3
- 0x8C0C0704, // 0008 GETMET R3 R3 K4
+ 0x880C0101, // 0007 GETMBR R3 R0 K1
+ 0x8C0C0754, // 0008 GETMET R3 R3 K84
0x5C140200, // 0009 MOVE R5 R1
0x7C0C0400, // 000A CALL R3 2
0x80000000, // 000B RET 0
@@ -3120,28 +2956,23 @@ be_local_closure(class_lvh_obj_set_val, /* name */
/********************************************************************
** Solidified function: set_text_color
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_text_color, /* name */
be_nested_proto(
8, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_style_text_color),
- /* K2 */ be_nested_str_weak(parse_color),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_text_color),
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
- 0x8C140102, // 0002 GETMET R5 R0 K2
+ 0x880C0101, // 0000 GETMBR R3 R0 K1
+ 0x8C0C0755, // 0001 GETMET R3 R3 K85
+ 0x8C140156, // 0002 GETMET R5 R0 K86
0x5C1C0200, // 0003 MOVE R7 R1
0x7C140400, // 0004 CALL R5 2
0x5C180400, // 0005 MOVE R6 R2
@@ -3156,27 +2987,24 @@ be_local_closure(class_lvh_obj_set_text_color, /* name */
/********************************************************************
** Solidified function: set_action
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_action, /* name */
be_nested_proto(
4, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_action),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_action),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
0x60080008, // 0000 GETGBL R2 G8
0x5C0C0200, // 0001 MOVE R3 R1
0x7C080200, // 0002 CALL R2 1
- 0x90020002, // 0003 SETMBR R0 K0 R2
+ 0x90024602, // 0003 SETMBR R0 K35 R2
0x80000000, // 0004 RET 0
})
)
@@ -3187,24 +3015,17 @@ be_local_closure(class_lvh_obj_set_action, /* name */
/********************************************************************
** Solidified function: get_radius2
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_radius2, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_part2_selector),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(get_style_radius),
- /* K3 */ be_nested_str_weak(lv),
- /* K4 */ be_nested_str_weak(STATE_DEFAULT),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_radius2),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
@@ -3213,7 +3034,7 @@ be_local_closure(class_lvh_obj_get_radius2, /* name */
0x20040202, // 0002 NE R1 R1 R2
0x78060007, // 0003 JMPF R1 #000C
0x88040101, // 0004 GETMBR R1 R0 K1
- 0x8C040302, // 0005 GETMET R1 R1 K2
+ 0x8C040357, // 0005 GETMET R1 R1 K87
0x880C0100, // 0006 GETMBR R3 R0 K0
0xB8120600, // 0007 GETNGBL R4 K3
0x88100904, // 0008 GETMBR R4 R4 K4
@@ -3230,24 +3051,17 @@ be_local_closure(class_lvh_obj_get_radius2, /* name */
/********************************************************************
** Solidified function: set_pad_right2
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_pad_right2, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_part2_selector),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(set_style_pad_right),
- /* K3 */ be_nested_str_weak(lv),
- /* K4 */ be_nested_str_weak(STATE_DEFAULT),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_pad_right2),
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
@@ -3256,7 +3070,7 @@ be_local_closure(class_lvh_obj_set_pad_right2, /* name */
0x20080403, // 0002 NE R2 R2 R3
0x780A0009, // 0003 JMPF R2 #000E
0x88080101, // 0004 GETMBR R2 R0 K1
- 0x8C080502, // 0005 GETMET R2 R2 K2
+ 0x8C080558, // 0005 GETMET R2 R2 K88
0x60100009, // 0006 GETGBL R4 G9
0x5C140200, // 0007 MOVE R5 R1
0x7C100200, // 0008 CALL R4 1
@@ -3275,80 +3089,60 @@ be_local_closure(class_lvh_obj_set_pad_right2, /* name */
/********************************************************************
** Solidified function: set_label_mode
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_label_mode, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
- /* K0 */ be_nested_str_weak(expand),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(set_width),
- /* K3 */ be_nested_str_weak(lv),
- /* K4 */ be_nested_str_weak(SIZE_CONTENT),
- /* K5 */ be_nested_str_weak(break),
- /* K6 */ be_nested_str_weak(LABEL_LONG_WRAP),
- /* K7 */ be_nested_str_weak(dots),
- /* K8 */ be_nested_str_weak(LABEL_LONG_DOT),
- /* K9 */ be_nested_str_weak(scroll),
- /* K10 */ be_nested_str_weak(LABEL_LONG_SCROLL),
- /* K11 */ be_nested_str_weak(loop),
- /* K12 */ be_nested_str_weak(LABEL_LONG_SCROLL_CIRCULAR),
- /* K13 */ be_nested_str_weak(crop),
- /* K14 */ be_nested_str_weak(LABEL_LONG_CLIP),
- /* K15 */ be_nested_str_weak(check_label),
- /* K16 */ be_nested_str_weak(_lv_label),
- /* K17 */ be_nested_str_weak(set_long_mode),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_label_mode),
&be_const_str_solidified,
( &(const binstruction[43]) { /* code */
0x4C080000, // 0000 LDNIL R2
- 0x1C0C0300, // 0001 EQ R3 R1 K0
+ 0x1C0C0359, // 0001 EQ R3 R1 K89
0x780E0005, // 0002 JMPF R3 #0009
0x880C0101, // 0003 GETMBR R3 R0 K1
- 0x8C0C0702, // 0004 GETMET R3 R3 K2
+ 0x8C0C075A, // 0004 GETMET R3 R3 K90
0xB8160600, // 0005 GETNGBL R5 K3
- 0x88140B04, // 0006 GETMBR R5 R5 K4
+ 0x88140B5B, // 0006 GETMBR R5 R5 K91
0x7C0C0400, // 0007 CALL R3 2
0x70020017, // 0008 JMP #0021
- 0x1C0C0305, // 0009 EQ R3 R1 K5
+ 0x1C0C035C, // 0009 EQ R3 R1 K92
0x780E0002, // 000A JMPF R3 #000E
0xB80E0600, // 000B GETNGBL R3 K3
- 0x88080706, // 000C GETMBR R2 R3 K6
+ 0x8808075D, // 000C GETMBR R2 R3 K93
0x70020012, // 000D JMP #0021
- 0x1C0C0307, // 000E EQ R3 R1 K7
+ 0x1C0C035E, // 000E EQ R3 R1 K94
0x780E0002, // 000F JMPF R3 #0013
0xB80E0600, // 0010 GETNGBL R3 K3
- 0x88080708, // 0011 GETMBR R2 R3 K8
+ 0x8808075F, // 0011 GETMBR R2 R3 K95
0x7002000D, // 0012 JMP #0021
- 0x1C0C0309, // 0013 EQ R3 R1 K9
+ 0x1C0C0360, // 0013 EQ R3 R1 K96
0x780E0002, // 0014 JMPF R3 #0018
0xB80E0600, // 0015 GETNGBL R3 K3
- 0x8808070A, // 0016 GETMBR R2 R3 K10
+ 0x88080761, // 0016 GETMBR R2 R3 K97
0x70020008, // 0017 JMP #0021
- 0x1C0C030B, // 0018 EQ R3 R1 K11
+ 0x1C0C0362, // 0018 EQ R3 R1 K98
0x780E0002, // 0019 JMPF R3 #001D
0xB80E0600, // 001A GETNGBL R3 K3
- 0x8808070C, // 001B GETMBR R2 R3 K12
+ 0x88080763, // 001B GETMBR R2 R3 K99
0x70020003, // 001C JMP #0021
- 0x1C0C030D, // 001D EQ R3 R1 K13
+ 0x1C0C0364, // 001D EQ R3 R1 K100
0x780E0001, // 001E JMPF R3 #0021
0xB80E0600, // 001F GETNGBL R3 K3
- 0x8808070E, // 0020 GETMBR R2 R3 K14
+ 0x88080765, // 0020 GETMBR R2 R3 K101
0x4C0C0000, // 0021 LDNIL R3
0x200C0403, // 0022 NE R3 R2 R3
0x780E0005, // 0023 JMPF R3 #002A
- 0x8C0C010F, // 0024 GETMET R3 R0 K15
+ 0x8C0C0114, // 0024 GETMET R3 R0 K20
0x7C0C0200, // 0025 CALL R3 1
- 0x880C0110, // 0026 GETMBR R3 R0 K16
- 0x8C0C0711, // 0027 GETMET R3 R3 K17
+ 0x880C0111, // 0026 GETMBR R3 R0 K17
+ 0x8C0C0766, // 0027 GETMET R3 R3 K102
0x5C140400, // 0028 MOVE R5 R2
0x7C0C0400, // 0029 CALL R3 2
0x80000000, // 002A RET 0
@@ -3361,198 +3155,184 @@ be_local_closure(class_lvh_obj_set_label_mode, /* name */
/********************************************************************
** Solidified function: setmember
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_setmember, /* name */
be_nested_proto(
12, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[24]) { /* constants */
- /* K0 */ be_nested_str_weak(string),
- /* K1 */ be_nested_str_weak(introspect),
- /* K2 */ be_nested_str_weak(startswith),
- /* K3 */ be_nested_str_weak(set_),
- /* K4 */ be_nested_str_weak(get_),
- /* K5 */ be_nested_str_weak(endswith),
- /* K6 */ be_nested_str_weak(_X25),
- /* K7 */ be_const_int(0),
- /* K8 */ be_nested_str_weak(lv),
- /* K9 */ be_nested_str_weak(pct),
- /* K10 */ be_const_int(3),
- /* K11 */ be_nested_str_weak(byte),
- /* K12 */ be_const_int(2147483647),
- /* K13 */ be_nested_str_weak(digits_to_style),
- /* K14 */ be_nested_str_weak(_attr_ignore),
- /* K15 */ be_nested_str_weak(find),
- /* K16 */ be_nested_str_weak(get),
- /* K17 */ be_nested_str_weak(function),
- /* K18 */ be_nested_str_weak(_attr_map),
- /* K19 */ be_nested_str_weak(is_color_attribute),
- /* K20 */ be_nested_str_weak(parse_color),
- /* K21 */ be_nested_str_weak(_lv_obj),
- /* K22 */ be_nested_str_weak(set_style_),
- /* K23 */ be_nested_str_weak(HSP_X3A_X20unknown_X20attribute_X3A),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(setmember),
&be_const_str_solidified,
- ( &(const binstruction[152]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
- 0xA4120200, // 0001 IMPORT R4 K1
- 0x8C140702, // 0002 GETMET R5 R3 K2
+ ( &(const binstruction[164]) { /* code */
+ 0xA40E0A00, // 0000 IMPORT R3 K5
+ 0xA4124E00, // 0001 IMPORT R4 K39
+ 0x8C140767, // 0002 GETMET R5 R3 K103
0x5C1C0200, // 0003 MOVE R7 R1
- 0x58200003, // 0004 LDCONST R8 K3
+ 0x58200068, // 0004 LDCONST R8 K104
0x7C140600, // 0005 CALL R5 3
0x74160004, // 0006 JMPT R5 #000C
- 0x8C140702, // 0007 GETMET R5 R3 K2
+ 0x8C140767, // 0007 GETMET R5 R3 K103
0x5C1C0200, // 0008 MOVE R7 R1
- 0x58200004, // 0009 LDCONST R8 K4
+ 0x58200069, // 0009 LDCONST R8 K105
0x7C140600, // 000A CALL R5 3
0x78160000, // 000B JMPF R5 #000D
0x80000A00, // 000C RET 0
- 0x8C140705, // 000D GETMET R5 R3 K5
- 0x5C1C0200, // 000E MOVE R7 R1
- 0x58200006, // 000F LDCONST R8 K6
- 0x7C140600, // 0010 CALL R5 3
- 0x78160009, // 0011 JMPF R5 #001C
- 0x5415FFFD, // 0012 LDINT R5 -2
- 0x40160E05, // 0013 CONNECT R5 K7 R5
- 0x94040205, // 0014 GETIDX R1 R1 R5
- 0xB8161000, // 0015 GETNGBL R5 K8
- 0x8C140B09, // 0016 GETMET R5 R5 K9
- 0x601C0009, // 0017 GETGBL R7 G9
- 0x5C200400, // 0018 MOVE R8 R2
- 0x7C1C0200, // 0019 CALL R7 1
- 0x7C140400, // 001A CALL R5 2
- 0x5C080A00, // 001B MOVE R2 R5
- 0x4C140000, // 001C LDNIL R5
- 0x6018000C, // 001D GETGBL R6 G12
- 0x5C1C0200, // 001E MOVE R7 R1
- 0x7C180200, // 001F CALL R6 1
- 0x28180D0A, // 0020 GE R6 R6 K10
- 0x781A001F, // 0021 JMPF R6 #0042
- 0x8C18070B, // 0022 GETMET R6 R3 K11
- 0x5421FFFE, // 0023 LDINT R8 -1
- 0x94200208, // 0024 GETIDX R8 R1 R8
- 0x7C180400, // 0025 CALL R6 2
- 0x8C1C070B, // 0026 GETMET R7 R3 K11
- 0x5425FFFD, // 0027 LDINT R9 -2
- 0x94240209, // 0028 GETIDX R9 R1 R9
- 0x7C1C0400, // 0029 CALL R7 2
- 0x5422002F, // 002A LDINT R8 48
- 0x28200C08, // 002B GE R8 R6 R8
- 0x78220014, // 002C JMPF R8 #0042
- 0x54220038, // 002D LDINT R8 57
- 0x18200C08, // 002E LE R8 R6 R8
- 0x78220011, // 002F JMPF R8 #0042
- 0x5422002F, // 0030 LDINT R8 48
- 0x28200E08, // 0031 GE R8 R7 R8
- 0x7822000E, // 0032 JMPF R8 #0042
- 0x54220038, // 0033 LDINT R8 57
- 0x18200E08, // 0034 LE R8 R7 R8
- 0x7822000B, // 0035 JMPF R8 #0042
- 0x60200009, // 0036 GETGBL R8 G9
- 0x5425FFFD, // 0037 LDINT R9 -2
- 0x4024130C, // 0038 CONNECT R9 R9 K12
- 0x94240209, // 0039 GETIDX R9 R1 R9
- 0x7C200200, // 003A CALL R8 1
- 0x5425FFFC, // 003B LDINT R9 -3
- 0x40260E09, // 003C CONNECT R9 K7 R9
- 0x94040209, // 003D GETIDX R1 R1 R9
- 0x8C24010D, // 003E GETMET R9 R0 K13
- 0x5C2C1000, // 003F MOVE R11 R8
- 0x7C240400, // 0040 CALL R9 2
- 0x5C141200, // 0041 MOVE R5 R9
- 0x8818010E, // 0042 GETMBR R6 R0 K14
- 0x8C180D0F, // 0043 GETMET R6 R6 K15
- 0x5C200200, // 0044 MOVE R8 R1
- 0x7C180400, // 0045 CALL R6 2
- 0x4C1C0000, // 0046 LDNIL R7
- 0x20180C07, // 0047 NE R6 R6 R7
- 0x781A0000, // 0048 JMPF R6 #004A
- 0x80000C00, // 0049 RET 0
- 0x8C180910, // 004A GETMET R6 R4 K16
- 0x5C200000, // 004B MOVE R8 R0
- 0x00260601, // 004C ADD R9 K3 R1
- 0x7C180600, // 004D CALL R6 3
- 0x601C0004, // 004E GETGBL R7 G4
- 0x5C200C00, // 004F MOVE R8 R6
- 0x7C1C0200, // 0050 CALL R7 1
- 0x1C1C0F11, // 0051 EQ R7 R7 K17
- 0x781E000A, // 0052 JMPF R7 #005E
- 0x5C1C0C00, // 0053 MOVE R7 R6
- 0x5C200000, // 0054 MOVE R8 R0
- 0x5C240400, // 0055 MOVE R9 R2
- 0x4C280000, // 0056 LDNIL R10
- 0x20280A0A, // 0057 NE R10 R5 R10
- 0x782A0001, // 0058 JMPF R10 #005B
- 0x5C280A00, // 0059 MOVE R10 R5
- 0x70020000, // 005A JMP #005C
- 0x58280007, // 005B LDCONST R10 K7
- 0x7C1C0600, // 005C CALL R7 3
- 0x80000E00, // 005D RET 0
- 0x881C0112, // 005E GETMBR R7 R0 K18
- 0x8C1C0F0F, // 005F GETMET R7 R7 K15
- 0x5C240200, // 0060 MOVE R9 R1
- 0x5C280200, // 0061 MOVE R10 R1
- 0x7C1C0600, // 0062 CALL R7 3
- 0x5C040E00, // 0063 MOVE R1 R7
- 0x8C1C0113, // 0064 GETMET R7 R0 K19
- 0x5C240200, // 0065 MOVE R9 R1
- 0x7C1C0400, // 0066 CALL R7 2
- 0x781E0003, // 0067 JMPF R7 #006C
- 0x8C1C0114, // 0068 GETMET R7 R0 K20
- 0x5C240400, // 0069 MOVE R9 R2
- 0x7C1C0400, // 006A CALL R7 2
- 0x5C080E00, // 006B MOVE R2 R7
- 0x4C1C0000, // 006C LDNIL R7
- 0x1C1C0A07, // 006D EQ R7 R5 R7
- 0x781E000E, // 006E JMPF R7 #007E
- 0x8C1C0910, // 006F GETMET R7 R4 K16
- 0x88240115, // 0070 GETMBR R9 R0 K21
- 0x002A0601, // 0071 ADD R10 K3 R1
- 0x7C1C0600, // 0072 CALL R7 3
- 0x5C180E00, // 0073 MOVE R6 R7
- 0x601C0004, // 0074 GETGBL R7 G4
- 0x5C200C00, // 0075 MOVE R8 R6
- 0x7C1C0200, // 0076 CALL R7 1
- 0x1C1C0F11, // 0077 EQ R7 R7 K17
- 0x781E0004, // 0078 JMPF R7 #007E
- 0x5C1C0C00, // 0079 MOVE R7 R6
- 0x88200115, // 007A GETMBR R8 R0 K21
- 0x5C240400, // 007B MOVE R9 R2
- 0x7C1C0400, // 007C CALL R7 2
- 0x80040E00, // 007D RET 1 R7
- 0x8C1C0910, // 007E GETMET R7 R4 K16
- 0x88240115, // 007F GETMBR R9 R0 K21
- 0x002A2C01, // 0080 ADD R10 K22 R1
- 0x7C1C0600, // 0081 CALL R7 3
- 0x5C180E00, // 0082 MOVE R6 R7
- 0x601C0004, // 0083 GETGBL R7 G4
- 0x5C200C00, // 0084 MOVE R8 R6
- 0x7C1C0200, // 0085 CALL R7 1
- 0x1C1C0F11, // 0086 EQ R7 R7 K17
- 0x781E000A, // 0087 JMPF R7 #0093
- 0x5C1C0C00, // 0088 MOVE R7 R6
- 0x88200115, // 0089 GETMBR R8 R0 K21
- 0x5C240400, // 008A MOVE R9 R2
- 0x4C280000, // 008B LDNIL R10
- 0x20280A0A, // 008C NE R10 R5 R10
- 0x782A0001, // 008D JMPF R10 #0090
- 0x5C280A00, // 008E MOVE R10 R5
- 0x70020000, // 008F JMP #0091
- 0x58280007, // 0090 LDCONST R10 K7
- 0x7C1C0600, // 0091 CALL R7 3
- 0x80040E00, // 0092 RET 1 R7
- 0x601C0001, // 0093 GETGBL R7 G1
- 0x58200017, // 0094 LDCONST R8 K23
- 0x5C240200, // 0095 MOVE R9 R1
- 0x7C1C0400, // 0096 CALL R7 2
- 0x80000000, // 0097 RET 0
+ 0x60140004, // 000D GETGBL R5 G4
+ 0x5C180400, // 000E MOVE R6 R2
+ 0x7C140200, // 000F CALL R5 1
+ 0x1C140B6A, // 0010 EQ R5 R5 K106
+ 0x78160006, // 0011 JMPF R5 #0019
+ 0xA416D600, // 0012 IMPORT R5 K107
+ 0x60180009, // 0013 GETGBL R6 G9
+ 0x8C1C0B6C, // 0014 GETMET R7 R5 K108
+ 0x5C240400, // 0015 MOVE R9 R2
+ 0x7C1C0400, // 0016 CALL R7 2
+ 0x7C180200, // 0017 CALL R6 1
+ 0x5C080C00, // 0018 MOVE R2 R6
+ 0x8C14076D, // 0019 GETMET R5 R3 K109
+ 0x5C1C0200, // 001A MOVE R7 R1
+ 0x5820006E, // 001B LDCONST R8 K110
+ 0x7C140600, // 001C CALL R5 3
+ 0x78160009, // 001D JMPF R5 #0028
+ 0x5415FFFD, // 001E LDINT R5 -2
+ 0x40162C05, // 001F CONNECT R5 K22 R5
+ 0x94040205, // 0020 GETIDX R1 R1 R5
+ 0xB8160600, // 0021 GETNGBL R5 K3
+ 0x8C140B6F, // 0022 GETMET R5 R5 K111
+ 0x601C0009, // 0023 GETGBL R7 G9
+ 0x5C200400, // 0024 MOVE R8 R2
+ 0x7C1C0200, // 0025 CALL R7 1
+ 0x7C140400, // 0026 CALL R5 2
+ 0x5C080A00, // 0027 MOVE R2 R5
+ 0x4C140000, // 0028 LDNIL R5
+ 0x6018000C, // 0029 GETGBL R6 G12
+ 0x5C1C0200, // 002A MOVE R7 R1
+ 0x7C180200, // 002B CALL R6 1
+ 0x28180D70, // 002C GE R6 R6 K112
+ 0x781A001F, // 002D JMPF R6 #004E
+ 0x8C180771, // 002E GETMET R6 R3 K113
+ 0x5421FFFE, // 002F LDINT R8 -1
+ 0x94200208, // 0030 GETIDX R8 R1 R8
+ 0x7C180400, // 0031 CALL R6 2
+ 0x8C1C0771, // 0032 GETMET R7 R3 K113
+ 0x5425FFFD, // 0033 LDINT R9 -2
+ 0x94240209, // 0034 GETIDX R9 R1 R9
+ 0x7C1C0400, // 0035 CALL R7 2
+ 0x5422002F, // 0036 LDINT R8 48
+ 0x28200C08, // 0037 GE R8 R6 R8
+ 0x78220014, // 0038 JMPF R8 #004E
+ 0x54220038, // 0039 LDINT R8 57
+ 0x18200C08, // 003A LE R8 R6 R8
+ 0x78220011, // 003B JMPF R8 #004E
+ 0x5422002F, // 003C LDINT R8 48
+ 0x28200E08, // 003D GE R8 R7 R8
+ 0x7822000E, // 003E JMPF R8 #004E
+ 0x54220038, // 003F LDINT R8 57
+ 0x18200E08, // 0040 LE R8 R7 R8
+ 0x7822000B, // 0041 JMPF R8 #004E
+ 0x60200009, // 0042 GETGBL R8 G9
+ 0x5425FFFD, // 0043 LDINT R9 -2
+ 0x40241372, // 0044 CONNECT R9 R9 K114
+ 0x94240209, // 0045 GETIDX R9 R1 R9
+ 0x7C200200, // 0046 CALL R8 1
+ 0x5425FFFC, // 0047 LDINT R9 -3
+ 0x40262C09, // 0048 CONNECT R9 K22 R9
+ 0x94040209, // 0049 GETIDX R1 R1 R9
+ 0x8C240173, // 004A GETMET R9 R0 K115
+ 0x5C2C1000, // 004B MOVE R11 R8
+ 0x7C240400, // 004C CALL R9 2
+ 0x5C141200, // 004D MOVE R5 R9
+ 0x88180174, // 004E GETMBR R6 R0 K116
+ 0x8C180D41, // 004F GETMET R6 R6 K65
+ 0x5C200200, // 0050 MOVE R8 R1
+ 0x7C180400, // 0051 CALL R6 2
+ 0x4C1C0000, // 0052 LDNIL R7
+ 0x20180C07, // 0053 NE R6 R6 R7
+ 0x781A0000, // 0054 JMPF R6 #0056
+ 0x80000C00, // 0055 RET 0
+ 0x8C180975, // 0056 GETMET R6 R4 K117
+ 0x5C200000, // 0057 MOVE R8 R0
+ 0x0026D001, // 0058 ADD R9 K104 R1
+ 0x7C180600, // 0059 CALL R6 3
+ 0x601C0004, // 005A GETGBL R7 G4
+ 0x5C200C00, // 005B MOVE R8 R6
+ 0x7C1C0200, // 005C CALL R7 1
+ 0x1C1C0F76, // 005D EQ R7 R7 K118
+ 0x781E000A, // 005E JMPF R7 #006A
+ 0x5C1C0C00, // 005F MOVE R7 R6
+ 0x5C200000, // 0060 MOVE R8 R0
+ 0x5C240400, // 0061 MOVE R9 R2
+ 0x4C280000, // 0062 LDNIL R10
+ 0x20280A0A, // 0063 NE R10 R5 R10
+ 0x782A0001, // 0064 JMPF R10 #0067
+ 0x5C280A00, // 0065 MOVE R10 R5
+ 0x70020000, // 0066 JMP #0068
+ 0x58280016, // 0067 LDCONST R10 K22
+ 0x7C1C0600, // 0068 CALL R7 3
+ 0x80000E00, // 0069 RET 0
+ 0x881C0177, // 006A GETMBR R7 R0 K119
+ 0x8C1C0F41, // 006B GETMET R7 R7 K65
+ 0x5C240200, // 006C MOVE R9 R1
+ 0x5C280200, // 006D MOVE R10 R1
+ 0x7C1C0600, // 006E CALL R7 3
+ 0x5C040E00, // 006F MOVE R1 R7
+ 0x8C1C0178, // 0070 GETMET R7 R0 K120
+ 0x5C240200, // 0071 MOVE R9 R1
+ 0x7C1C0400, // 0072 CALL R7 2
+ 0x781E0003, // 0073 JMPF R7 #0078
+ 0x8C1C0156, // 0074 GETMET R7 R0 K86
+ 0x5C240400, // 0075 MOVE R9 R2
+ 0x7C1C0400, // 0076 CALL R7 2
+ 0x5C080E00, // 0077 MOVE R2 R7
+ 0x4C1C0000, // 0078 LDNIL R7
+ 0x1C1C0A07, // 0079 EQ R7 R5 R7
+ 0x781E000E, // 007A JMPF R7 #008A
+ 0x8C1C0975, // 007B GETMET R7 R4 K117
+ 0x88240101, // 007C GETMBR R9 R0 K1
+ 0x002AD001, // 007D ADD R10 K104 R1
+ 0x7C1C0600, // 007E CALL R7 3
+ 0x5C180E00, // 007F MOVE R6 R7
+ 0x601C0004, // 0080 GETGBL R7 G4
+ 0x5C200C00, // 0081 MOVE R8 R6
+ 0x7C1C0200, // 0082 CALL R7 1
+ 0x1C1C0F76, // 0083 EQ R7 R7 K118
+ 0x781E0004, // 0084 JMPF R7 #008A
+ 0x5C1C0C00, // 0085 MOVE R7 R6
+ 0x88200101, // 0086 GETMBR R8 R0 K1
+ 0x5C240400, // 0087 MOVE R9 R2
+ 0x7C1C0400, // 0088 CALL R7 2
+ 0x80040E00, // 0089 RET 1 R7
+ 0x8C1C0975, // 008A GETMET R7 R4 K117
+ 0x88240101, // 008B GETMBR R9 R0 K1
+ 0x002AF201, // 008C ADD R10 K121 R1
+ 0x7C1C0600, // 008D CALL R7 3
+ 0x5C180E00, // 008E MOVE R6 R7
+ 0x601C0004, // 008F GETGBL R7 G4
+ 0x5C200C00, // 0090 MOVE R8 R6
+ 0x7C1C0200, // 0091 CALL R7 1
+ 0x1C1C0F76, // 0092 EQ R7 R7 K118
+ 0x781E000A, // 0093 JMPF R7 #009F
+ 0x5C1C0C00, // 0094 MOVE R7 R6
+ 0x88200101, // 0095 GETMBR R8 R0 K1
+ 0x5C240400, // 0096 MOVE R9 R2
+ 0x4C280000, // 0097 LDNIL R10
+ 0x20280A0A, // 0098 NE R10 R5 R10
+ 0x782A0001, // 0099 JMPF R10 #009C
+ 0x5C280A00, // 009A MOVE R10 R5
+ 0x70020000, // 009B JMP #009D
+ 0x58280016, // 009C LDCONST R10 K22
+ 0x7C1C0600, // 009D CALL R7 3
+ 0x80040E00, // 009E RET 1 R7
+ 0x601C0001, // 009F GETGBL R7 G1
+ 0x5820007A, // 00A0 LDCONST R8 K122
+ 0x5C240200, // 00A1 MOVE R9 R1
+ 0x7C1C0400, // 00A2 CALL R7 2
+ 0x80000000, // 00A3 RET 0
})
)
);
@@ -3562,38 +3342,31 @@ be_local_closure(class_lvh_obj_setmember, /* name */
/********************************************************************
** Solidified function: set_enabled
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_enabled, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(clear_state),
- /* K2 */ be_nested_str_weak(lv),
- /* K3 */ be_nested_str_weak(STATE_DISABLED),
- /* K4 */ be_nested_str_weak(add_state),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_enabled),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
0x78060005, // 0000 JMPF R1 #0007
- 0x88080100, // 0001 GETMBR R2 R0 K0
- 0x8C080501, // 0002 GETMET R2 R2 K1
- 0xB8120400, // 0003 GETNGBL R4 K2
- 0x88100903, // 0004 GETMBR R4 R4 K3
+ 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x8C08050B, // 0002 GETMET R2 R2 K11
+ 0xB8120600, // 0003 GETNGBL R4 K3
+ 0x8810094D, // 0004 GETMBR R4 R4 K77
0x7C080400, // 0005 CALL R2 2
0x70020004, // 0006 JMP #000C
- 0x88080100, // 0007 GETMBR R2 R0 K0
- 0x8C080504, // 0008 GETMET R2 R2 K4
- 0xB8120400, // 0009 GETNGBL R4 K2
- 0x88100903, // 000A GETMBR R4 R4 K3
+ 0x88080101, // 0007 GETMBR R2 R0 K1
+ 0x8C080509, // 0008 GETMET R2 R2 K9
+ 0xB8120600, // 0009 GETNGBL R4 K3
+ 0x8810094D, // 000A GETMBR R4 R4 K77
0x7C080400, // 000B CALL R2 2
0x80000000, // 000C RET 0
})
@@ -3605,62 +3378,50 @@ be_local_closure(class_lvh_obj_set_enabled, /* name */
/********************************************************************
** Solidified function: get_align
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_align, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(_lv_label),
- /* K2 */ be_nested_str_weak(get_style_text_align),
- /* K3 */ be_nested_str_weak(lv),
- /* K4 */ be_nested_str_weak(TEXT_ALIGN_LEFT),
- /* K5 */ be_nested_str_weak(left),
- /* K6 */ be_nested_str_weak(TEXT_ALIGN_CENTER),
- /* K7 */ be_nested_str_weak(center),
- /* K8 */ be_nested_str_weak(TEXT_ALIGN_RIGHT),
- /* K9 */ be_nested_str_weak(right),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_align),
&be_const_str_solidified,
( &(const binstruction[33]) { /* code */
- 0x1C080300, // 0000 EQ R2 R1 K0
+ 0x1C080316, // 0000 EQ R2 R1 K22
0x780A0000, // 0001 JMPF R2 #0003
- 0x58040000, // 0002 LDCONST R1 K0
- 0x88080101, // 0003 GETMBR R2 R0 K1
+ 0x58040016, // 0002 LDCONST R1 K22
+ 0x88080111, // 0003 GETMBR R2 R0 K17
0x4C0C0000, // 0004 LDNIL R3
0x1C080403, // 0005 EQ R2 R2 R3
0x780A0001, // 0006 JMPF R2 #0009
0x4C080000, // 0007 LDNIL R2
0x80040400, // 0008 RET 1 R2
- 0x88080101, // 0009 GETMBR R2 R0 K1
- 0x8C080502, // 000A GETMET R2 R2 K2
+ 0x88080111, // 0009 GETMBR R2 R0 K17
+ 0x8C08057B, // 000A GETMET R2 R2 K123
0x5C100200, // 000B MOVE R4 R1
0x7C080400, // 000C CALL R2 2
0xB80E0600, // 000D GETNGBL R3 K3
- 0x880C0704, // 000E GETMBR R3 R3 K4
+ 0x880C0718, // 000E GETMBR R3 R3 K24
0x1C0C0403, // 000F EQ R3 R2 R3
0x780E0001, // 0010 JMPF R3 #0013
- 0x80060A00, // 0011 RET 1 K5
+ 0x80062E00, // 0011 RET 1 K23
0x7002000C, // 0012 JMP #0020
0xB80E0600, // 0013 GETNGBL R3 K3
- 0x880C0706, // 0014 GETMBR R3 R3 K6
+ 0x880C071B, // 0014 GETMBR R3 R3 K27
0x1C0C0403, // 0015 EQ R3 R2 R3
0x780E0001, // 0016 JMPF R3 #0019
- 0x80060E00, // 0017 RET 1 K7
+ 0x80063400, // 0017 RET 1 K26
0x70020006, // 0018 JMP #0020
0xB80E0600, // 0019 GETNGBL R3 K3
- 0x880C0708, // 001A GETMBR R3 R3 K8
+ 0x880C071E, // 001A GETMBR R3 R3 K30
0x1C0C0403, // 001B EQ R3 R2 R3
0x780E0001, // 001C JMPF R3 #001F
- 0x80061200, // 001D RET 1 K9
+ 0x80063A00, // 001D RET 1 K29
0x70020000, // 001E JMP #0020
0x80040400, // 001F RET 1 R2
0x80000000, // 0020 RET 0
@@ -3673,24 +3434,17 @@ be_local_closure(class_lvh_obj_get_align, /* name */
/********************************************************************
** Solidified function: get_pad_left
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_pad_left, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_part2_selector),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(get_style_pad_left),
- /* K3 */ be_nested_str_weak(lv),
- /* K4 */ be_nested_str_weak(STATE_DEFAULT),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_pad_left),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
@@ -3699,7 +3453,7 @@ be_local_closure(class_lvh_obj_get_pad_left, /* name */
0x20040202, // 0002 NE R1 R1 R2
0x78060007, // 0003 JMPF R1 #000C
0x88040101, // 0004 GETMBR R1 R0 K1
- 0x8C040302, // 0005 GETMET R1 R1 K2
+ 0x8C04037C, // 0005 GETMET R1 R1 K124
0x880C0100, // 0006 GETMBR R3 R0 K0
0xB8120600, // 0007 GETNGBL R4 K3
0x88100904, // 0008 GETMBR R4 R4 K4
@@ -3716,29 +3470,24 @@ be_local_closure(class_lvh_obj_get_pad_left, /* name */
/********************************************************************
** Solidified function: set_value_ofs_x
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_value_ofs_x, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(check_label),
- /* K1 */ be_nested_str_weak(_lv_label),
- /* K2 */ be_nested_str_weak(set_x),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_value_ofs_x),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C080114, // 0000 GETMET R2 R0 K20
0x7C080200, // 0001 CALL R2 1
- 0x88080101, // 0002 GETMBR R2 R0 K1
- 0x8C080502, // 0003 GETMET R2 R2 K2
+ 0x88080111, // 0002 GETMBR R2 R0 K17
+ 0x8C08057D, // 0003 GETMET R2 R2 K125
0x60100009, // 0004 GETGBL R4 G9
0x5C140200, // 0005 MOVE R5 R1
0x7C100200, // 0006 CALL R4 1
@@ -3753,38 +3502,31 @@ be_local_closure(class_lvh_obj_set_value_ofs_x, /* name */
/********************************************************************
** Solidified function: set_flex_in_new_track
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_flex_in_new_track, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(add_flag),
- /* K2 */ be_nested_str_weak(lv),
- /* K3 */ be_nested_str_weak(OBJ_FLAG_FLEX_IN_NEW_TRACK),
- /* K4 */ be_nested_str_weak(clear_flag),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_flex_in_new_track),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
0x78060005, // 0000 JMPF R1 #0007
- 0x88080100, // 0001 GETMBR R2 R0 K0
- 0x8C080501, // 0002 GETMET R2 R2 K1
- 0xB8120400, // 0003 GETNGBL R4 K2
- 0x88100903, // 0004 GETMBR R4 R4 K3
+ 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x8C080538, // 0002 GETMET R2 R2 K56
+ 0xB8120600, // 0003 GETNGBL R4 K3
+ 0x8810092E, // 0004 GETMBR R4 R4 K46
0x7C080400, // 0005 CALL R2 2
0x70020004, // 0006 JMP #000C
- 0x88080100, // 0007 GETMBR R2 R0 K0
- 0x8C080504, // 0008 GETMET R2 R2 K4
- 0xB8120400, // 0009 GETNGBL R4 K2
- 0x88100903, // 000A GETMBR R4 R4 K3
+ 0x88080101, // 0007 GETMBR R2 R0 K1
+ 0x8C080539, // 0008 GETMET R2 R2 K57
+ 0xB8120600, // 0009 GETNGBL R4 K3
+ 0x8810092E, // 000A GETMBR R4 R4 K46
0x7C080400, // 000B CALL R2 2
0x80000000, // 000C RET 0
})
@@ -3796,50 +3538,30 @@ be_local_closure(class_lvh_obj_set_flex_in_new_track, /* name */
/********************************************************************
** Solidified function: member
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_member, /* name */
be_nested_proto(
11, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
- /* K0 */ be_nested_str_weak(string),
- /* K1 */ be_nested_str_weak(introspect),
- /* K2 */ be_nested_str_weak(startswith),
- /* K3 */ be_nested_str_weak(set_),
- /* K4 */ be_nested_str_weak(get_),
- /* K5 */ be_const_int(3),
- /* K6 */ be_nested_str_weak(byte),
- /* K7 */ be_const_int(2147483647),
- /* K8 */ be_const_int(0),
- /* K9 */ be_nested_str_weak(digits_to_style),
- /* K10 */ be_nested_str_weak(_attr_ignore),
- /* K11 */ be_nested_str_weak(find),
- /* K12 */ be_nested_str_weak(get),
- /* K13 */ be_nested_str_weak(function),
- /* K14 */ be_nested_str_weak(_attr_map),
- /* K15 */ be_nested_str_weak(_lv_obj),
- /* K16 */ be_nested_str_weak(get_style_),
- /* K17 */ be_nested_str_weak(undefined),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(member),
&be_const_str_solidified,
( &(const binstruction[125]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0xA40E0200, // 0001 IMPORT R3 K1
- 0x8C100502, // 0002 GETMET R4 R2 K2
+ 0xA40A0A00, // 0000 IMPORT R2 K5
+ 0xA40E4E00, // 0001 IMPORT R3 K39
+ 0x8C100567, // 0002 GETMET R4 R2 K103
0x5C180200, // 0003 MOVE R6 R1
- 0x581C0003, // 0004 LDCONST R7 K3
+ 0x581C0068, // 0004 LDCONST R7 K104
0x7C100600, // 0005 CALL R4 3
0x74120004, // 0006 JMPT R4 #000C
- 0x8C100502, // 0007 GETMET R4 R2 K2
+ 0x8C100567, // 0007 GETMET R4 R2 K103
0x5C180200, // 0008 MOVE R6 R1
- 0x581C0004, // 0009 LDCONST R7 K4
+ 0x581C0069, // 0009 LDCONST R7 K105
0x7C100600, // 000A CALL R4 3
0x78120000, // 000B JMPF R4 #000D
0x80000800, // 000C RET 0
@@ -3847,13 +3569,13 @@ be_local_closure(class_lvh_obj_member, /* name */
0x6014000C, // 000E GETGBL R5 G12
0x5C180200, // 000F MOVE R6 R1
0x7C140200, // 0010 CALL R5 1
- 0x28140B05, // 0011 GE R5 R5 K5
+ 0x28140B70, // 0011 GE R5 R5 K112
0x7816001F, // 0012 JMPF R5 #0033
- 0x8C140506, // 0013 GETMET R5 R2 K6
+ 0x8C140571, // 0013 GETMET R5 R2 K113
0x541DFFFE, // 0014 LDINT R7 -1
0x941C0207, // 0015 GETIDX R7 R1 R7
0x7C140400, // 0016 CALL R5 2
- 0x8C180506, // 0017 GETMET R6 R2 K6
+ 0x8C180571, // 0017 GETMET R6 R2 K113
0x5421FFFD, // 0018 LDINT R8 -2
0x94200208, // 0019 GETIDX R8 R1 R8
0x7C180400, // 001A CALL R6 2
@@ -3871,32 +3593,32 @@ be_local_closure(class_lvh_obj_member, /* name */
0x781E000B, // 0026 JMPF R7 #0033
0x601C0009, // 0027 GETGBL R7 G9
0x5421FFFD, // 0028 LDINT R8 -2
- 0x40201107, // 0029 CONNECT R8 R8 K7
+ 0x40201172, // 0029 CONNECT R8 R8 K114
0x94200208, // 002A GETIDX R8 R1 R8
0x7C1C0200, // 002B CALL R7 1
0x5421FFFC, // 002C LDINT R8 -3
- 0x40221008, // 002D CONNECT R8 K8 R8
+ 0x40222C08, // 002D CONNECT R8 K22 R8
0x94040208, // 002E GETIDX R1 R1 R8
- 0x8C200109, // 002F GETMET R8 R0 K9
+ 0x8C200173, // 002F GETMET R8 R0 K115
0x5C280E00, // 0030 MOVE R10 R7
0x7C200400, // 0031 CALL R8 2
0x5C101000, // 0032 MOVE R4 R8
- 0x8814010A, // 0033 GETMBR R5 R0 K10
- 0x8C140B0B, // 0034 GETMET R5 R5 K11
+ 0x88140174, // 0033 GETMBR R5 R0 K116
+ 0x8C140B41, // 0034 GETMET R5 R5 K65
0x5C1C0200, // 0035 MOVE R7 R1
0x7C140400, // 0036 CALL R5 2
0x4C180000, // 0037 LDNIL R6
0x20140A06, // 0038 NE R5 R5 R6
0x78160000, // 0039 JMPF R5 #003B
0x80000A00, // 003A RET 0
- 0x8C14070C, // 003B GETMET R5 R3 K12
+ 0x8C140775, // 003B GETMET R5 R3 K117
0x5C1C0000, // 003C MOVE R7 R0
- 0x00220801, // 003D ADD R8 K4 R1
+ 0x0022D201, // 003D ADD R8 K105 R1
0x7C140600, // 003E CALL R5 3
0x60180004, // 003F GETGBL R6 G4
0x5C1C0A00, // 0040 MOVE R7 R5
0x7C180200, // 0041 CALL R6 1
- 0x1C180D0D, // 0042 EQ R6 R6 K13
+ 0x1C180D76, // 0042 EQ R6 R6 K118
0x781A0009, // 0043 JMPF R6 #004E
0x5C180A00, // 0044 MOVE R6 R5
0x5C1C0000, // 0045 MOVE R7 R0
@@ -3905,11 +3627,11 @@ be_local_closure(class_lvh_obj_member, /* name */
0x78220001, // 0048 JMPF R8 #004B
0x5C200800, // 0049 MOVE R8 R4
0x70020000, // 004A JMP #004C
- 0x58200008, // 004B LDCONST R8 K8
+ 0x58200016, // 004B LDCONST R8 K22
0x7C180400, // 004C CALL R6 2
0x80040C00, // 004D RET 1 R6
- 0x8818010E, // 004E GETMBR R6 R0 K14
- 0x8C180D0B, // 004F GETMET R6 R6 K11
+ 0x88180177, // 004E GETMBR R6 R0 K119
+ 0x8C180D41, // 004F GETMET R6 R6 K65
0x5C200200, // 0050 MOVE R8 R1
0x5C240200, // 0051 MOVE R9 R1
0x7C180600, // 0052 CALL R6 3
@@ -3917,42 +3639,42 @@ be_local_closure(class_lvh_obj_member, /* name */
0x4C180000, // 0054 LDNIL R6
0x1C180806, // 0055 EQ R6 R4 R6
0x781A000D, // 0056 JMPF R6 #0065
- 0x8C18070C, // 0057 GETMET R6 R3 K12
- 0x8820010F, // 0058 GETMBR R8 R0 K15
- 0x00260801, // 0059 ADD R9 K4 R1
+ 0x8C180775, // 0057 GETMET R6 R3 K117
+ 0x88200101, // 0058 GETMBR R8 R0 K1
+ 0x0026D201, // 0059 ADD R9 K105 R1
0x7C180600, // 005A CALL R6 3
0x5C140C00, // 005B MOVE R5 R6
0x60180004, // 005C GETGBL R6 G4
0x5C1C0A00, // 005D MOVE R7 R5
0x7C180200, // 005E CALL R6 1
- 0x1C180D0D, // 005F EQ R6 R6 K13
+ 0x1C180D76, // 005F EQ R6 R6 K118
0x781A0003, // 0060 JMPF R6 #0065
0x5C180A00, // 0061 MOVE R6 R5
- 0x881C010F, // 0062 GETMBR R7 R0 K15
+ 0x881C0101, // 0062 GETMBR R7 R0 K1
0x7C180200, // 0063 CALL R6 1
0x80040C00, // 0064 RET 1 R6
- 0x8C18070C, // 0065 GETMET R6 R3 K12
- 0x8820010F, // 0066 GETMBR R8 R0 K15
- 0x00262001, // 0067 ADD R9 K16 R1
+ 0x8C180775, // 0065 GETMET R6 R3 K117
+ 0x88200101, // 0066 GETMBR R8 R0 K1
+ 0x0026FC01, // 0067 ADD R9 K126 R1
0x7C180600, // 0068 CALL R6 3
0x5C140C00, // 0069 MOVE R5 R6
0x60180004, // 006A GETGBL R6 G4
0x5C1C0A00, // 006B MOVE R7 R5
0x7C180200, // 006C CALL R6 1
- 0x1C180D0D, // 006D EQ R6 R6 K13
+ 0x1C180D76, // 006D EQ R6 R6 K118
0x781A0009, // 006E JMPF R6 #0079
0x5C180A00, // 006F MOVE R6 R5
- 0x881C010F, // 0070 GETMBR R7 R0 K15
+ 0x881C0101, // 0070 GETMBR R7 R0 K1
0x4C200000, // 0071 LDNIL R8
0x20200808, // 0072 NE R8 R4 R8
0x78220001, // 0073 JMPF R8 #0076
0x5C200800, // 0074 MOVE R8 R4
0x70020000, // 0075 JMP #0077
- 0x58200008, // 0076 LDCONST R8 K8
+ 0x58200016, // 0076 LDCONST R8 K22
0x7C180400, // 0077 CALL R6 2
0x80040C00, // 0078 RET 1 R6
0x6018000B, // 0079 GETGBL R6 G11
- 0x581C0011, // 007A LDCONST R7 K17
+ 0x581C007F, // 007A LDCONST R7 K127
0x7C180200, // 007B CALL R6 1
0x80040C00, // 007C RET 1 R6
})
@@ -3964,18 +3686,17 @@ be_local_closure(class_lvh_obj_member, /* name */
/********************************************************************
** Solidified function: get_text_font
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_text_font, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_text_font),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -3989,29 +3710,24 @@ be_local_closure(class_lvh_obj_get_text_font, /* name */
/********************************************************************
** Solidified function: set_value_ofs_y
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_value_ofs_y, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(check_label),
- /* K1 */ be_nested_str_weak(_lv_label),
- /* K2 */ be_nested_str_weak(set_y),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_value_ofs_y),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C080114, // 0000 GETMET R2 R0 K20
0x7C080200, // 0001 CALL R2 1
- 0x88080101, // 0002 GETMBR R2 R0 K1
- 0x8C080502, // 0003 GETMET R2 R2 K2
+ 0x88080111, // 0002 GETMBR R2 R0 K17
+ 0x8C080580, // 0003 GETMET R2 R2 K128
0x60100009, // 0004 GETGBL R4 G9
0x5C140200, // 0005 MOVE R5 R1
0x7C100200, // 0006 CALL R4 1
@@ -4026,24 +3742,17 @@ be_local_closure(class_lvh_obj_set_value_ofs_y, /* name */
/********************************************************************
** Solidified function: set_radius2
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_radius2, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_part2_selector),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(set_style_radius),
- /* K3 */ be_nested_str_weak(lv),
- /* K4 */ be_nested_str_weak(STATE_DEFAULT),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_radius2),
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
@@ -4052,7 +3761,7 @@ be_local_closure(class_lvh_obj_set_radius2, /* name */
0x20080403, // 0002 NE R2 R2 R3
0x780A0009, // 0003 JMPF R2 #000E
0x88080101, // 0004 GETMBR R2 R0 K1
- 0x8C080502, // 0005 GETMET R2 R2 K2
+ 0x8C080581, // 0005 GETMET R2 R2 K129
0x60100009, // 0006 GETGBL R4 G9
0x5C140200, // 0007 MOVE R5 R1
0x7C100200, // 0008 CALL R4 1
@@ -4071,38 +3780,31 @@ be_local_closure(class_lvh_obj_set_radius2, /* name */
/********************************************************************
** Solidified function: set_hidden
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_hidden, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(add_flag),
- /* K2 */ be_nested_str_weak(lv),
- /* K3 */ be_nested_str_weak(OBJ_FLAG_HIDDEN),
- /* K4 */ be_nested_str_weak(clear_flag),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_hidden),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
0x78060005, // 0000 JMPF R1 #0007
- 0x88080100, // 0001 GETMBR R2 R0 K0
- 0x8C080501, // 0002 GETMET R2 R2 K1
- 0xB8120400, // 0003 GETNGBL R4 K2
- 0x88100903, // 0004 GETMBR R4 R4 K3
+ 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x8C080538, // 0002 GETMET R2 R2 K56
+ 0xB8120600, // 0003 GETNGBL R4 K3
+ 0x88100950, // 0004 GETMBR R4 R4 K80
0x7C080400, // 0005 CALL R2 2
0x70020004, // 0006 JMP #000C
- 0x88080100, // 0007 GETMBR R2 R0 K0
- 0x8C080504, // 0008 GETMET R2 R2 K4
- 0xB8120400, // 0009 GETNGBL R4 K2
- 0x88100903, // 000A GETMBR R4 R4 K3
+ 0x88080101, // 0007 GETMBR R2 R0 K1
+ 0x8C080539, // 0008 GETMET R2 R2 K57
+ 0xB8120600, // 0009 GETNGBL R4 K3
+ 0x88100950, // 000A GETMBR R4 R4 K80
0x7C080400, // 000B CALL R2 2
0x80000000, // 000C RET 0
})
@@ -4114,44 +3816,36 @@ be_local_closure(class_lvh_obj_set_hidden, /* name */
/********************************************************************
** Solidified function: register_event_cb
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_register_event_cb, /* name */
be_nested_proto(
8, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(_page),
- /* K1 */ be_nested_str_weak(_oh),
- /* K2 */ be_nested_str_weak(_event_map),
- /* K3 */ be_nested_str_weak(keys),
- /* K4 */ be_nested_str_weak(register_event),
- /* K5 */ be_nested_str_weak(stop_iteration),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(register_event_cb),
&be_const_str_solidified,
( &(const binstruction[19]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88040301, // 0001 GETMBR R1 R1 K1
+ 0x88040132, // 0000 GETMBR R1 R0 K50
+ 0x8804033A, // 0001 GETMBR R1 R1 K58
0x60080010, // 0002 GETGBL R2 G16
- 0x880C0102, // 0003 GETMBR R3 R0 K2
- 0x8C0C0703, // 0004 GETMET R3 R3 K3
+ 0x880C0140, // 0003 GETMBR R3 R0 K64
+ 0x8C0C0782, // 0004 GETMET R3 R3 K130
0x7C0C0200, // 0005 CALL R3 1
0x7C080200, // 0006 CALL R2 1
0xA8020006, // 0007 EXBLK 0 #000F
0x5C0C0400, // 0008 MOVE R3 R2
0x7C0C0000, // 0009 CALL R3 0
- 0x8C100304, // 000A GETMET R4 R1 K4
+ 0x8C100383, // 000A GETMET R4 R1 K131
0x5C180000, // 000B MOVE R6 R0
0x5C1C0600, // 000C MOVE R7 R3
0x7C100600, // 000D CALL R4 3
0x7001FFF8, // 000E JMP #0008
- 0x58080005, // 000F LDCONST R2 K5
+ 0x58080084, // 000F LDCONST R2 K132
0xAC080200, // 0010 CATCH R2 1 0
0xB0080000, // 0011 RAISE 2 R0 R0
0x80000000, // 0012 RET 0
@@ -4164,36 +3858,30 @@ be_local_closure(class_lvh_obj_register_event_cb, /* name */
/********************************************************************
** Solidified function: set_text_font
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_set_text_font, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(parse_font),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(set_style_text_font),
- /* K3 */ be_const_int(0),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(set_text_font),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C080185, // 0000 GETMET R2 R0 K133
0x5C100200, // 0001 MOVE R4 R1
0x7C080400, // 0002 CALL R2 2
0x4C0C0000, // 0003 LDNIL R3
0x200C0403, // 0004 NE R3 R2 R3
0x780E0004, // 0005 JMPF R3 #000B
0x880C0101, // 0006 GETMBR R3 R0 K1
- 0x8C0C0702, // 0007 GETMET R3 R3 K2
+ 0x8C0C0786, // 0007 GETMET R3 R3 K134
0x5C140400, // 0008 MOVE R5 R2
- 0x58180003, // 0009 LDCONST R6 K3
+ 0x58180016, // 0009 LDCONST R6 K22
0x7C0C0600, // 000A CALL R3 3
0x80000000, // 000B RET 0
})
@@ -4205,24 +3893,17 @@ be_local_closure(class_lvh_obj_set_text_font, /* name */
/********************************************************************
** Solidified function: get_pad_bottom
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_pad_bottom, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_part2_selector),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(get_style_pad_bottom),
- /* K3 */ be_nested_str_weak(lv),
- /* K4 */ be_nested_str_weak(STATE_DEFAULT),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_pad_bottom),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
@@ -4231,7 +3912,7 @@ be_local_closure(class_lvh_obj_get_pad_bottom, /* name */
0x20040202, // 0002 NE R1 R1 R2
0x78060007, // 0003 JMPF R1 #000C
0x88040101, // 0004 GETMBR R1 R0 K1
- 0x8C040302, // 0005 GETMET R1 R1 K2
+ 0x8C040387, // 0005 GETMET R1 R1 K135
0x880C0100, // 0006 GETMBR R3 R0 K0
0xB8120600, // 0007 GETNGBL R4 K3
0x88100904, // 0008 GETMBR R4 R4 K4
@@ -4248,18 +3929,17 @@ be_local_closure(class_lvh_obj_get_pad_bottom, /* name */
/********************************************************************
** Solidified function: get_pad_all
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_pad_all, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_pad_all),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -4273,26 +3953,22 @@ be_local_closure(class_lvh_obj_get_pad_all, /* name */
/********************************************************************
** Solidified function: get_val
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_get_val, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_value),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(get_val),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x88040101, // 0000 GETMBR R1 R0 K1
+ 0x8C040388, // 0001 GETMET R1 R1 K136
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -4304,24 +3980,21 @@ be_local_closure(class_lvh_obj_get_val, /* name */
/********************************************************************
** Solidified function: post_init
********************************************************************/
-extern const bclass be_class_lvh_obj;
be_local_closure(class_lvh_obj_post_init, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_obj,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(register_event_cb),
- }),
+ &be_ktab_class_lvh_obj, /* shared constants */
be_str_weak(post_init),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040189, // 0000 GETMET R1 R0 K137
0x7C040200, // 0001 CALL R1 1
0x80000000, // 0002 RET 0
})
@@ -4419,7 +4092,6 @@ extern const bclass be_class_lvh_fixed;
/********************************************************************
** Solidified function: post_init
********************************************************************/
-extern const bclass be_class_lvh_fixed;
be_local_closure(class_lvh_fixed_post_init, /* name */
be_nested_proto(
8, /* nstack */
@@ -4428,7 +4100,7 @@ be_local_closure(class_lvh_fixed_post_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_fixed,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[11]) { /* constants */
/* K0 */ be_nested_str_weak(post_init),
@@ -4508,7 +4180,6 @@ extern const bclass be_class_lvh_flex;
/********************************************************************
** Solidified function: post_init
********************************************************************/
-extern const bclass be_class_lvh_flex;
be_local_closure(class_lvh_flex_post_init, /* name */
be_nested_proto(
5, /* nstack */
@@ -4517,7 +4188,7 @@ be_local_closure(class_lvh_flex_post_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_flex,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 5]) { /* constants */
/* K0 */ be_nested_str_weak(post_init),
@@ -4565,7 +4236,6 @@ extern const bclass be_class_lvh_label;
/********************************************************************
** Solidified function: post_init
********************************************************************/
-extern const bclass be_class_lvh_label;
be_local_closure(class_lvh_label_post_init, /* name */
be_nested_proto(
3, /* nstack */
@@ -4574,7 +4244,7 @@ be_local_closure(class_lvh_label_post_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_label,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str_weak(_lv_label),
@@ -4612,27 +4282,53 @@ be_local_class(lvh_label,
})),
be_str_weak(lvh_label)
);
+// compact class 'lvh_arc' ktab size: 26, total: 49 (saved 184 bytes)
+static const bvalue be_ktab_class_lvh_arc[26] = {
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(get_mode),
+ /* K2 */ be_nested_str_weak(_label_angle),
+ /* K3 */ be_nested_str_weak(_lv_label),
+ /* K4 */ be_nested_str_weak(rotate_obj_to_angle),
+ /* K5 */ be_nested_str_weak(set_range),
+ /* K6 */ be_nested_str_weak(get_max),
+ /* K7 */ be_nested_str_weak(refresh_label_to_angle),
+ /* K8 */ be_nested_str_weak(get_arc_line_width),
+ /* K9 */ be_nested_str_weak(lv),
+ /* K10 */ be_nested_str_weak(PART_INDICATOR),
+ /* K11 */ be_nested_str_weak(STATE_DEFAULT),
+ /* K12 */ be_const_int(0),
+ /* K13 */ be_nested_str_weak(ARC_MODE_NORMAL),
+ /* K14 */ be_const_int(1),
+ /* K15 */ be_nested_str_weak(ARC_MODE_REVERSE),
+ /* K16 */ be_const_int(2),
+ /* K17 */ be_nested_str_weak(ARC_MODE_SYMMETRICAL),
+ /* K18 */ be_nested_str_weak(set_mode),
+ /* K19 */ be_nested_str_weak(set_style_arc_width),
+ /* K20 */ be_nested_str_weak(get_min_value),
+ /* K21 */ be_nested_str_weak(get_max_value),
+ /* K22 */ be_nested_str_weak(set_val),
+ /* K23 */ be_nested_str_weak(post_config),
+ /* K24 */ be_nested_str_weak(get_min),
+ /* K25 */ be_nested_str_weak(set_text),
+};
+
extern const bclass be_class_lvh_arc;
/********************************************************************
** Solidified function: get_type
********************************************************************/
-extern const bclass be_class_lvh_arc;
be_local_closure(class_lvh_arc_get_type, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_arc,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_mode),
- }),
+ &be_ktab_class_lvh_arc, /* shared constants */
be_str_weak(get_type),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
@@ -4649,38 +4345,32 @@ be_local_closure(class_lvh_arc_get_type, /* name */
/********************************************************************
** Solidified function: refresh_label_to_angle
********************************************************************/
-extern const bclass be_class_lvh_arc;
be_local_closure(class_lvh_arc_refresh_label_to_angle, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_arc,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_label_angle),
- /* K1 */ be_nested_str_weak(_lv_label),
- /* K2 */ be_nested_str_weak(_lv_obj),
- /* K3 */ be_nested_str_weak(rotate_obj_to_angle),
- }),
+ &be_ktab_class_lvh_arc, /* shared constants */
be_str_weak(refresh_label_to_angle),
&be_const_str_solidified,
( &(const binstruction[14]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040102, // 0000 GETMBR R1 R0 K2
0x4C080000, // 0001 LDNIL R2
0x20040202, // 0002 NE R1 R1 R2
0x78060008, // 0003 JMPF R1 #000D
- 0x88040101, // 0004 GETMBR R1 R0 K1
+ 0x88040103, // 0004 GETMBR R1 R0 K3
0x4C080000, // 0005 LDNIL R2
0x20040202, // 0006 NE R1 R1 R2
0x78060004, // 0007 JMPF R1 #000D
- 0x88040102, // 0008 GETMBR R1 R0 K2
- 0x8C040303, // 0009 GETMET R1 R1 K3
- 0x880C0101, // 000A GETMBR R3 R0 K1
- 0x88100100, // 000B GETMBR R4 R0 K0
+ 0x88040100, // 0008 GETMBR R1 R0 K0
+ 0x8C040304, // 0009 GETMET R1 R1 K4
+ 0x880C0103, // 000A GETMBR R3 R0 K3
+ 0x88100102, // 000B GETMBR R4 R0 K2
0x7C040600, // 000C CALL R1 3
0x80000000, // 000D RET 0
})
@@ -4692,35 +4382,29 @@ be_local_closure(class_lvh_arc_refresh_label_to_angle, /* name */
/********************************************************************
** Solidified function: set_min
********************************************************************/
-extern const bclass be_class_lvh_arc;
be_local_closure(class_lvh_arc_set_min, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_arc,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_range),
- /* K2 */ be_nested_str_weak(get_max),
- /* K3 */ be_nested_str_weak(refresh_label_to_angle),
- }),
+ &be_ktab_class_lvh_arc, /* shared constants */
be_str_weak(set_min),
&be_const_str_solidified,
( &(const binstruction[11]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x8C080505, // 0001 GETMET R2 R2 K5
0x60100009, // 0002 GETGBL R4 G9
0x5C140200, // 0003 MOVE R5 R1
0x7C100200, // 0004 CALL R4 1
- 0x8C140102, // 0005 GETMET R5 R0 K2
+ 0x8C140106, // 0005 GETMET R5 R0 K6
0x7C140200, // 0006 CALL R5 1
0x7C080600, // 0007 CALL R2 3
- 0x8C080103, // 0008 GETMET R2 R0 K3
+ 0x8C080107, // 0008 GETMET R2 R0 K7
0x7C080200, // 0009 CALL R2 1
0x80000000, // 000A RET 0
})
@@ -4732,33 +4416,26 @@ be_local_closure(class_lvh_arc_set_min, /* name */
/********************************************************************
** Solidified function: get_line_width1
********************************************************************/
-extern const bclass be_class_lvh_arc;
be_local_closure(class_lvh_arc_get_line_width1, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_arc,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_arc_line_width),
- /* K2 */ be_nested_str_weak(lv),
- /* K3 */ be_nested_str_weak(PART_INDICATOR),
- /* K4 */ be_nested_str_weak(STATE_DEFAULT),
- }),
+ &be_ktab_class_lvh_arc, /* shared constants */
be_str_weak(get_line_width1),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
- 0xB80E0400, // 0002 GETNGBL R3 K2
- 0x880C0703, // 0003 GETMBR R3 R3 K3
- 0xB8120400, // 0004 GETNGBL R4 K2
- 0x88100904, // 0005 GETMBR R4 R4 K4
+ 0x8C040308, // 0001 GETMET R1 R1 K8
+ 0xB80E1200, // 0002 GETNGBL R3 K9
+ 0x880C070A, // 0003 GETMBR R3 R3 K10
+ 0xB8121200, // 0004 GETNGBL R4 K9
+ 0x8810090B, // 0005 GETMBR R4 R4 K11
0x300C0604, // 0006 OR R3 R3 R4
0x7C040400, // 0007 CALL R1 2
0x80040200, // 0008 RET 1 R1
@@ -4771,51 +4448,40 @@ be_local_closure(class_lvh_arc_get_line_width1, /* name */
/********************************************************************
** Solidified function: set_type
********************************************************************/
-extern const bclass be_class_lvh_arc;
be_local_closure(class_lvh_arc_set_type, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_arc,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(lv),
- /* K2 */ be_nested_str_weak(ARC_MODE_NORMAL),
- /* K3 */ be_const_int(1),
- /* K4 */ be_nested_str_weak(ARC_MODE_REVERSE),
- /* K5 */ be_const_int(2),
- /* K6 */ be_nested_str_weak(ARC_MODE_SYMMETRICAL),
- /* K7 */ be_nested_str_weak(_lv_obj),
- /* K8 */ be_nested_str_weak(set_mode),
- }),
+ &be_ktab_class_lvh_arc, /* shared constants */
be_str_weak(set_type),
&be_const_str_solidified,
( &(const binstruction[23]) { /* code */
0x4C080000, // 0000 LDNIL R2
- 0x1C0C0300, // 0001 EQ R3 R1 K0
+ 0x1C0C030C, // 0001 EQ R3 R1 K12
0x780E0002, // 0002 JMPF R3 #0006
- 0xB80E0200, // 0003 GETNGBL R3 K1
- 0x88080702, // 0004 GETMBR R2 R3 K2
+ 0xB80E1200, // 0003 GETNGBL R3 K9
+ 0x8808070D, // 0004 GETMBR R2 R3 K13
0x70020008, // 0005 JMP #000F
- 0x1C0C0303, // 0006 EQ R3 R1 K3
+ 0x1C0C030E, // 0006 EQ R3 R1 K14
0x780E0002, // 0007 JMPF R3 #000B
- 0xB80E0200, // 0008 GETNGBL R3 K1
- 0x88080704, // 0009 GETMBR R2 R3 K4
+ 0xB80E1200, // 0008 GETNGBL R3 K9
+ 0x8808070F, // 0009 GETMBR R2 R3 K15
0x70020003, // 000A JMP #000F
- 0x1C0C0305, // 000B EQ R3 R1 K5
+ 0x1C0C0310, // 000B EQ R3 R1 K16
0x780E0001, // 000C JMPF R3 #000F
- 0xB80E0200, // 000D GETNGBL R3 K1
- 0x88080706, // 000E GETMBR R2 R3 K6
+ 0xB80E1200, // 000D GETNGBL R3 K9
+ 0x88080711, // 000E GETMBR R2 R3 K17
0x4C0C0000, // 000F LDNIL R3
0x200C0403, // 0010 NE R3 R2 R3
0x780E0003, // 0011 JMPF R3 #0016
- 0x880C0107, // 0012 GETMBR R3 R0 K7
- 0x8C0C0708, // 0013 GETMET R3 R3 K8
+ 0x880C0100, // 0012 GETMBR R3 R0 K0
+ 0x8C0C0712, // 0013 GETMET R3 R3 K18
0x5C140400, // 0014 MOVE R5 R2
0x7C0C0400, // 0015 CALL R3 2
0x80000000, // 0016 RET 0
@@ -4828,36 +4494,29 @@ be_local_closure(class_lvh_arc_set_type, /* name */
/********************************************************************
** Solidified function: set_line_width1
********************************************************************/
-extern const bclass be_class_lvh_arc;
be_local_closure(class_lvh_arc_set_line_width1, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_arc,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_style_arc_width),
- /* K2 */ be_nested_str_weak(lv),
- /* K3 */ be_nested_str_weak(PART_INDICATOR),
- /* K4 */ be_nested_str_weak(STATE_DEFAULT),
- }),
+ &be_ktab_class_lvh_arc, /* shared constants */
be_str_weak(set_line_width1),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x8C080513, // 0001 GETMET R2 R2 K19
0x60100009, // 0002 GETGBL R4 G9
0x5C140200, // 0003 MOVE R5 R1
0x7C100200, // 0004 CALL R4 1
- 0xB8160400, // 0005 GETNGBL R5 K2
- 0x88140B03, // 0006 GETMBR R5 R5 K3
- 0xB81A0400, // 0007 GETNGBL R6 K2
- 0x88180D04, // 0008 GETMBR R6 R6 K4
+ 0xB8161200, // 0005 GETNGBL R5 K9
+ 0x88140B0A, // 0006 GETMBR R5 R5 K10
+ 0xB81A1200, // 0007 GETNGBL R6 K9
+ 0x88180D0B, // 0008 GETMBR R6 R6 K11
0x30140A06, // 0009 OR R5 R5 R6
0x7C080600, // 000A CALL R2 3
0x80000000, // 000B RET 0
@@ -4870,26 +4529,22 @@ be_local_closure(class_lvh_arc_set_line_width1, /* name */
/********************************************************************
** Solidified function: get_min
********************************************************************/
-extern const bclass be_class_lvh_arc;
be_local_closure(class_lvh_arc_get_min, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_arc,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_min_value),
- }),
+ &be_ktab_class_lvh_arc, /* shared constants */
be_str_weak(get_min),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x8C040314, // 0001 GETMET R1 R1 K20
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -4901,26 +4556,22 @@ be_local_closure(class_lvh_arc_get_min, /* name */
/********************************************************************
** Solidified function: set_line_width
********************************************************************/
-extern const bclass be_class_lvh_arc;
be_local_closure(class_lvh_arc_set_line_width, /* name */
be_nested_proto(
7, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_arc,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_style_arc_width),
- }),
+ &be_ktab_class_lvh_arc, /* shared constants */
be_str_weak(set_line_width),
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
0x880C0100, // 0000 GETMBR R3 R0 K0
- 0x8C0C0701, // 0001 GETMET R3 R3 K1
+ 0x8C0C0713, // 0001 GETMET R3 R3 K19
0x60140009, // 0002 GETGBL R5 G9
0x5C180200, // 0003 MOVE R6 R1
0x7C140200, // 0004 CALL R5 1
@@ -4936,26 +4587,22 @@ be_local_closure(class_lvh_arc_set_line_width, /* name */
/********************************************************************
** Solidified function: get_max
********************************************************************/
-extern const bclass be_class_lvh_arc;
be_local_closure(class_lvh_arc_get_max, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_arc,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_max_value),
- }),
+ &be_ktab_class_lvh_arc, /* shared constants */
be_str_weak(get_max),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x8C040315, // 0001 GETMET R1 R1 K21
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -4967,29 +4614,25 @@ be_local_closure(class_lvh_arc_get_max, /* name */
/********************************************************************
** Solidified function: set_label_to_angle
********************************************************************/
-extern const bclass be_class_lvh_arc;
be_local_closure(class_lvh_arc_set_label_to_angle, /* name */
be_nested_proto(
4, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_arc,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_label_angle),
- /* K1 */ be_nested_str_weak(refresh_label_to_angle),
- }),
+ &be_ktab_class_lvh_arc, /* shared constants */
be_str_weak(set_label_to_angle),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
0x60080009, // 0000 GETGBL R2 G9
0x5C0C0200, // 0001 MOVE R3 R1
0x7C080200, // 0002 CALL R2 1
- 0x90020002, // 0003 SETMBR R0 K0 R2
- 0x8C080101, // 0004 GETMET R2 R0 K1
+ 0x90020402, // 0003 SETMBR R0 K2 R2
+ 0x8C080107, // 0004 GETMET R2 R0 K7
0x7C080200, // 0005 CALL R2 1
0x80000000, // 0006 RET 0
})
@@ -5001,31 +4644,27 @@ be_local_closure(class_lvh_arc_set_label_to_angle, /* name */
/********************************************************************
** Solidified function: set_val
********************************************************************/
-extern const bclass be_class_lvh_arc;
be_local_closure(class_lvh_arc_set_val, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_arc,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(set_val),
- /* K1 */ be_nested_str_weak(refresh_label_to_angle),
- }),
+ &be_ktab_class_lvh_arc, /* shared constants */
be_str_weak(set_val),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0
0x7C080200, // 0002 CALL R2 1
- 0x8C080500, // 0003 GETMET R2 R2 K0
+ 0x8C080516, // 0003 GETMET R2 R2 K22
0x5C100200, // 0004 MOVE R4 R1
0x7C080400, // 0005 CALL R2 2
- 0x8C080101, // 0006 GETMET R2 R0 K1
+ 0x8C080107, // 0006 GETMET R2 R0 K7
0x7C080200, // 0007 CALL R2 1
0x80000000, // 0008 RET 0
})
@@ -5037,30 +4676,26 @@ be_local_closure(class_lvh_arc_set_val, /* name */
/********************************************************************
** Solidified function: post_config
********************************************************************/
-extern const bclass be_class_lvh_arc;
be_local_closure(class_lvh_arc_post_config, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_arc,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(post_config),
- /* K1 */ be_nested_str_weak(refresh_label_to_angle),
- }),
+ &be_ktab_class_lvh_arc, /* shared constants */
be_str_weak(post_config),
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
0x60040003, // 0000 GETGBL R1 G3
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
- 0x8C040300, // 0003 GETMET R1 R1 K0
+ 0x8C040317, // 0003 GETMET R1 R1 K23
0x7C040200, // 0004 CALL R1 1
- 0x8C040101, // 0005 GETMET R1 R0 K1
+ 0x8C040107, // 0005 GETMET R1 R0 K7
0x7C040200, // 0006 CALL R1 1
0x80000000, // 0007 RET 0
})
@@ -5072,26 +4707,22 @@ be_local_closure(class_lvh_arc_post_config, /* name */
/********************************************************************
** Solidified function: get_line_width
********************************************************************/
-extern const bclass be_class_lvh_arc;
be_local_closure(class_lvh_arc_get_line_width, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_arc,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_arc_line_width),
- }),
+ &be_ktab_class_lvh_arc, /* shared constants */
be_str_weak(get_line_width),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x8C080508, // 0001 GETMET R2 R2 K8
0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
0x80040400, // 0004 RET 1 R2
@@ -5104,35 +4735,29 @@ be_local_closure(class_lvh_arc_get_line_width, /* name */
/********************************************************************
** Solidified function: set_max
********************************************************************/
-extern const bclass be_class_lvh_arc;
be_local_closure(class_lvh_arc_set_max, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_arc,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_range),
- /* K2 */ be_nested_str_weak(get_min),
- /* K3 */ be_nested_str_weak(refresh_label_to_angle),
- }),
+ &be_ktab_class_lvh_arc, /* shared constants */
be_str_weak(set_max),
&be_const_str_solidified,
( &(const binstruction[11]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x8C100102, // 0002 GETMET R4 R0 K2
+ 0x8C080505, // 0001 GETMET R2 R2 K5
+ 0x8C100118, // 0002 GETMET R4 R0 K24
0x7C100200, // 0003 CALL R4 1
0x60140009, // 0004 GETGBL R5 G9
0x5C180200, // 0005 MOVE R6 R1
0x7C140200, // 0006 CALL R5 1
0x7C080600, // 0007 CALL R2 3
- 0x8C080103, // 0008 GETMET R2 R0 K3
+ 0x8C080107, // 0008 GETMET R2 R0 K7
0x7C080200, // 0009 CALL R2 1
0x80000000, // 000A RET 0
})
@@ -5144,31 +4769,27 @@ be_local_closure(class_lvh_arc_set_max, /* name */
/********************************************************************
** Solidified function: set_text
********************************************************************/
-extern const bclass be_class_lvh_arc;
be_local_closure(class_lvh_arc_set_text, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_arc,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(set_text),
- /* K1 */ be_nested_str_weak(refresh_label_to_angle),
- }),
+ &be_ktab_class_lvh_arc, /* shared constants */
be_str_weak(set_text),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0
0x7C080200, // 0002 CALL R2 1
- 0x8C080500, // 0003 GETMET R2 R2 K0
+ 0x8C080519, // 0003 GETMET R2 R2 K25
0x5C100200, // 0004 MOVE R4 R1
0x7C080400, // 0005 CALL R2 2
- 0x8C080101, // 0006 GETMET R2 R0 K1
+ 0x8C080107, // 0006 GETMET R2 R0 K7
0x7C080200, // 0007 CALL R2 1
0x80000000, // 0008 RET 0
})
@@ -5213,7 +4834,6 @@ extern const bclass be_class_lvh_switch;
/********************************************************************
** Solidified function: set_val
********************************************************************/
-extern const bclass be_class_lvh_switch;
be_local_closure(class_lvh_switch_set_val, /* name */
be_nested_proto(
5, /* nstack */
@@ -5222,7 +4842,7 @@ be_local_closure(class_lvh_switch_set_val, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_switch,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(_val),
@@ -5245,7 +4865,6 @@ be_local_closure(class_lvh_switch_set_val, /* name */
/********************************************************************
** Solidified function: get_val
********************************************************************/
-extern const bclass be_class_lvh_switch;
be_local_closure(class_lvh_switch_get_val, /* name */
be_nested_proto(
3, /* nstack */
@@ -5254,7 +4873,7 @@ be_local_closure(class_lvh_switch_get_val, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_switch,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(get_toggle),
@@ -5293,7 +4912,6 @@ extern const bclass be_class_lvh_spinner;
/********************************************************************
** Solidified function: set_angle
********************************************************************/
-extern const bclass be_class_lvh_spinner;
be_local_closure(class_lvh_spinner_set_angle, /* name */
be_nested_proto(
2, /* nstack */
@@ -5302,7 +4920,7 @@ be_local_closure(class_lvh_spinner_set_angle, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_spinner,
+ NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(set_angle),
@@ -5318,7 +4936,6 @@ be_local_closure(class_lvh_spinner_set_angle, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_lvh_spinner;
be_local_closure(class_lvh_spinner_init, /* name */
be_nested_proto(
10, /* nstack */
@@ -5327,7 +4944,7 @@ be_local_closure(class_lvh_spinner_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_spinner,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 9]) { /* constants */
/* K0 */ be_nested_str_weak(_page),
@@ -5374,7 +4991,6 @@ be_local_closure(class_lvh_spinner_init, /* name */
/********************************************************************
** Solidified function: get_speed
********************************************************************/
-extern const bclass be_class_lvh_spinner;
be_local_closure(class_lvh_spinner_get_speed, /* name */
be_nested_proto(
1, /* nstack */
@@ -5383,7 +4999,7 @@ be_local_closure(class_lvh_spinner_get_speed, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_spinner,
+ NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(get_speed),
@@ -5399,7 +5015,6 @@ be_local_closure(class_lvh_spinner_get_speed, /* name */
/********************************************************************
** Solidified function: get_angle
********************************************************************/
-extern const bclass be_class_lvh_spinner;
be_local_closure(class_lvh_spinner_get_angle, /* name */
be_nested_proto(
1, /* nstack */
@@ -5408,7 +5023,7 @@ be_local_closure(class_lvh_spinner_get_angle, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_spinner,
+ NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(get_angle),
@@ -5424,7 +5039,6 @@ be_local_closure(class_lvh_spinner_get_angle, /* name */
/********************************************************************
** Solidified function: set_speed
********************************************************************/
-extern const bclass be_class_lvh_spinner;
be_local_closure(class_lvh_spinner_set_speed, /* name */
be_nested_proto(
2, /* nstack */
@@ -5433,7 +5047,7 @@ be_local_closure(class_lvh_spinner_set_speed, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_spinner,
+ NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(set_speed),
@@ -5466,29 +5080,45 @@ be_local_class(lvh_spinner,
})),
be_str_weak(lvh_spinner)
);
+// compact class 'lvh_img' ktab size: 18, total: 24 (saved 48 bytes)
+static const bvalue be_ktab_class_lvh_img[18] = {
+ /* K0 */ be_nested_str_weak(tasmota_logo),
+ /* K1 */ be_nested_str_weak(_lv_obj),
+ /* K2 */ be_nested_str_weak(set_tasmota_logo),
+ /* K3 */ be_nested_str_weak(set_src),
+ /* K4 */ be_nested_str_weak(set_inner_align),
+ /* K5 */ be_nested_str_weak(lv),
+ /* K6 */ be_nested_str_weak(IMAGE_ALIGN_STRETCH),
+ /* K7 */ be_nested_str_weak(set_angle),
+ /* K8 */ be_nested_str_weak(get_angle),
+ /* K9 */ be_nested_str_weak(_raw),
+ /* K10 */ be_nested_str_weak(fromb64),
+ /* K11 */ be_nested_str_weak(lv_image_dsc),
+ /* K12 */ be_nested_str_weak(header_cf),
+ /* K13 */ be_nested_str_weak(COLOR_FORMAT_RAW),
+ /* K14 */ be_nested_str_weak(data_size),
+ /* K15 */ be_nested_str_weak(data),
+ /* K16 */ be_nested_str_weak(_buffer),
+ /* K17 */ be_nested_str_weak(_imd_dsc),
+};
+
extern const bclass be_class_lvh_img;
/********************************************************************
** Solidified function: set_src
********************************************************************/
-extern const bclass be_class_lvh_img;
be_local_closure(class_lvh_img_set_src, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_img,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(tasmota_logo),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(set_tasmota_logo),
- /* K3 */ be_nested_str_weak(set_src),
- }),
+ &be_ktab_class_lvh_img, /* shared constants */
be_str_weak(set_src),
&be_const_str_solidified,
( &(const binstruction[11]) { /* code */
@@ -5512,18 +5142,17 @@ be_local_closure(class_lvh_img_set_src, /* name */
/********************************************************************
** Solidified function: get_auto_size
********************************************************************/
-extern const bclass be_class_lvh_img;
be_local_closure(class_lvh_img_get_auto_size, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_img,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_lvh_img, /* shared constants */
be_str_weak(get_auto_size),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -5537,31 +5166,25 @@ be_local_closure(class_lvh_img_get_auto_size, /* name */
/********************************************************************
** Solidified function: set_auto_size
********************************************************************/
-extern const bclass be_class_lvh_img;
be_local_closure(class_lvh_img_set_auto_size, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_img,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_inner_align),
- /* K2 */ be_nested_str_weak(lv),
- /* K3 */ be_nested_str_weak(IMAGE_ALIGN_STRETCH),
- }),
+ &be_ktab_class_lvh_img, /* shared constants */
be_str_weak(set_auto_size),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
0x78060004, // 0000 JMPF R1 #0006
- 0x88080100, // 0001 GETMBR R2 R0 K0
- 0x8C080501, // 0002 GETMET R2 R2 K1
- 0xB8120400, // 0003 GETNGBL R4 K2
- 0x88100903, // 0004 GETMBR R4 R4 K3
+ 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x8C080504, // 0002 GETMET R2 R2 K4
+ 0xB8120A00, // 0003 GETNGBL R4 K5
+ 0x88100906, // 0004 GETMBR R4 R4 K6
0x7C080400, // 0005 CALL R2 2
0x80000000, // 0006 RET 0
})
@@ -5573,21 +5196,17 @@ be_local_closure(class_lvh_img_set_auto_size, /* name */
/********************************************************************
** Solidified function: set_angle
********************************************************************/
-extern const bclass be_class_lvh_img;
be_local_closure(class_lvh_img_set_angle, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_img,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_angle),
- }),
+ &be_ktab_class_lvh_img, /* shared constants */
be_str_weak(set_angle),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
@@ -5595,8 +5214,8 @@ be_local_closure(class_lvh_img_set_angle, /* name */
0x5C0C0200, // 0001 MOVE R3 R1
0x7C080200, // 0002 CALL R2 1
0x5C040400, // 0003 MOVE R1 R2
- 0x88080100, // 0004 GETMBR R2 R0 K0
- 0x8C080501, // 0005 GETMET R2 R2 K1
+ 0x88080101, // 0004 GETMBR R2 R0 K1
+ 0x8C080507, // 0005 GETMET R2 R2 K7
0x5C100200, // 0006 MOVE R4 R1
0x7C080400, // 0007 CALL R2 2
0x80000000, // 0008 RET 0
@@ -5609,26 +5228,22 @@ be_local_closure(class_lvh_img_set_angle, /* name */
/********************************************************************
** Solidified function: get_angle
********************************************************************/
-extern const bclass be_class_lvh_img;
be_local_closure(class_lvh_img_get_angle, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_img,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_angle),
- }),
+ &be_ktab_class_lvh_img, /* shared constants */
be_str_weak(get_angle),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x88040101, // 0000 GETMBR R1 R0 K1
+ 0x8C040308, // 0001 GETMET R1 R1 K8
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -5640,57 +5255,43 @@ be_local_closure(class_lvh_img_get_angle, /* name */
/********************************************************************
** Solidified function: set_raw
********************************************************************/
-extern const bclass be_class_lvh_img;
be_local_closure(class_lvh_img_set_raw, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_img,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(_raw),
- /* K1 */ be_nested_str_weak(fromb64),
- /* K2 */ be_nested_str_weak(lv),
- /* K3 */ be_nested_str_weak(lv_image_dsc),
- /* K4 */ be_nested_str_weak(header_cf),
- /* K5 */ be_nested_str_weak(COLOR_FORMAT_RAW),
- /* K6 */ be_nested_str_weak(data_size),
- /* K7 */ be_nested_str_weak(data),
- /* K8 */ be_nested_str_weak(_buffer),
- /* K9 */ be_nested_str_weak(_imd_dsc),
- /* K10 */ be_nested_str_weak(_lv_obj),
- /* K11 */ be_nested_str_weak(set_src),
- }),
+ &be_ktab_class_lvh_img, /* shared constants */
be_str_weak(set_raw),
&be_const_str_solidified,
( &(const binstruction[26]) { /* code */
0x60080015, // 0000 GETGBL R2 G21
0x7C080000, // 0001 CALL R2 0
- 0x8C080501, // 0002 GETMET R2 R2 K1
+ 0x8C08050A, // 0002 GETMET R2 R2 K10
0x5C100200, // 0003 MOVE R4 R1
0x7C080400, // 0004 CALL R2 2
- 0x90020002, // 0005 SETMBR R0 K0 R2
- 0xB80A0400, // 0006 GETNGBL R2 K2
- 0x8C080503, // 0007 GETMET R2 R2 K3
+ 0x90021202, // 0005 SETMBR R0 K9 R2
+ 0xB80A0A00, // 0006 GETNGBL R2 K5
+ 0x8C08050B, // 0007 GETMET R2 R2 K11
0x7C080200, // 0008 CALL R2 1
- 0xB80E0400, // 0009 GETNGBL R3 K2
- 0x880C0705, // 000A GETMBR R3 R3 K5
- 0x900A0803, // 000B SETMBR R2 K4 R3
+ 0xB80E0A00, // 0009 GETNGBL R3 K5
+ 0x880C070D, // 000A GETMBR R3 R3 K13
+ 0x900A1803, // 000B SETMBR R2 K12 R3
0x600C000C, // 000C GETGBL R3 G12
- 0x88100100, // 000D GETMBR R4 R0 K0
+ 0x88100109, // 000D GETMBR R4 R0 K9
0x7C0C0200, // 000E CALL R3 1
- 0x900A0C03, // 000F SETMBR R2 K6 R3
- 0x880C0100, // 0010 GETMBR R3 R0 K0
- 0x8C0C0708, // 0011 GETMET R3 R3 K8
+ 0x900A1C03, // 000F SETMBR R2 K14 R3
+ 0x880C0109, // 0010 GETMBR R3 R0 K9
+ 0x8C0C0710, // 0011 GETMET R3 R3 K16
0x7C0C0200, // 0012 CALL R3 1
- 0x900A0E03, // 0013 SETMBR R2 K7 R3
- 0x90021202, // 0014 SETMBR R0 K9 R2
- 0x880C010A, // 0015 GETMBR R3 R0 K10
- 0x8C0C070B, // 0016 GETMET R3 R3 K11
+ 0x900A1E03, // 0013 SETMBR R2 K15 R3
+ 0x90022202, // 0014 SETMBR R0 K17 R2
+ 0x880C0101, // 0015 GETMBR R3 R0 K1
+ 0x8C0C0703, // 0016 GETMET R3 R3 K3
0x5C140400, // 0017 MOVE R5 R2
0x7C0C0400, // 0018 CALL R3 2
0x80000000, // 0019 RET 0
@@ -5721,24 +5322,36 @@ be_local_class(lvh_img,
})),
be_str_weak(lvh_img)
);
+// compact class 'lvh_qrcode' ktab size: 9, total: 29 (saved 160 bytes)
+static const bvalue be_ktab_class_lvh_qrcode[9] = {
+ /* K0 */ be_nested_str_weak(qr_text),
+ /* K1 */ be_nested_str_weak(_update),
+ /* K2 */ be_nested_str_weak(_lv_obj),
+ /* K3 */ be_nested_str_weak(set_light_color),
+ /* K4 */ be_nested_str_weak(parse_color),
+ /* K5 */ be_nested_str_weak(set_size),
+ /* K6 */ be_nested_str_weak(set_dark_color),
+ /* K7 */ be_nested_str_weak(post_config),
+ /* K8 */ be_nested_str_weak(update),
+};
+
extern const bclass be_class_lvh_qrcode;
/********************************************************************
** Solidified function: get_qr_dark_color
********************************************************************/
-extern const bclass be_class_lvh_qrcode;
be_local_closure(class_lvh_qrcode_get_qr_dark_color, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_qrcode,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_lvh_qrcode, /* shared constants */
be_str_weak(get_qr_dark_color),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -5752,21 +5365,17 @@ be_local_closure(class_lvh_qrcode_get_qr_dark_color, /* name */
/********************************************************************
** Solidified function: set_qr_text
********************************************************************/
-extern const bclass be_class_lvh_qrcode;
be_local_closure(class_lvh_qrcode_set_qr_text, /* name */
be_nested_proto(
4, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_qrcode,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(qr_text),
- /* K1 */ be_nested_str_weak(_update),
- }),
+ &be_ktab_class_lvh_qrcode, /* shared constants */
be_str_weak(set_qr_text),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
@@ -5786,33 +5395,27 @@ be_local_closure(class_lvh_qrcode_set_qr_text, /* name */
/********************************************************************
** Solidified function: set_light_color
********************************************************************/
-extern const bclass be_class_lvh_qrcode;
be_local_closure(class_lvh_qrcode_set_light_color, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_qrcode,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_light_color),
- /* K2 */ be_nested_str_weak(parse_color),
- /* K3 */ be_nested_str_weak(_update),
- }),
+ &be_ktab_class_lvh_qrcode, /* shared constants */
be_str_weak(set_light_color),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x8C100102, // 0002 GETMET R4 R0 K2
+ 0x88080102, // 0000 GETMBR R2 R0 K2
+ 0x8C080503, // 0001 GETMET R2 R2 K3
+ 0x8C100104, // 0002 GETMET R4 R0 K4
0x5C180200, // 0003 MOVE R6 R1
0x7C100400, // 0004 CALL R4 2
0x7C080400, // 0005 CALL R2 2
- 0x8C080103, // 0006 GETMET R2 R0 K3
+ 0x8C080101, // 0006 GETMET R2 R0 K1
0x7C080200, // 0007 CALL R2 1
0x80000000, // 0008 RET 0
})
@@ -5824,18 +5427,17 @@ be_local_closure(class_lvh_qrcode_set_light_color, /* name */
/********************************************************************
** Solidified function: get_dark_color
********************************************************************/
-extern const bclass be_class_lvh_qrcode;
be_local_closure(class_lvh_qrcode_get_dark_color, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_qrcode,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_lvh_qrcode, /* shared constants */
be_str_weak(get_dark_color),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -5849,33 +5451,27 @@ be_local_closure(class_lvh_qrcode_get_dark_color, /* name */
/********************************************************************
** Solidified function: set_qr_light_color
********************************************************************/
-extern const bclass be_class_lvh_qrcode;
be_local_closure(class_lvh_qrcode_set_qr_light_color, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_qrcode,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_light_color),
- /* K2 */ be_nested_str_weak(parse_color),
- /* K3 */ be_nested_str_weak(_update),
- }),
+ &be_ktab_class_lvh_qrcode, /* shared constants */
be_str_weak(set_qr_light_color),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x8C100102, // 0002 GETMET R4 R0 K2
+ 0x88080102, // 0000 GETMBR R2 R0 K2
+ 0x8C080503, // 0001 GETMET R2 R2 K3
+ 0x8C100104, // 0002 GETMET R4 R0 K4
0x5C180200, // 0003 MOVE R6 R1
0x7C100400, // 0004 CALL R4 2
0x7C080400, // 0005 CALL R2 2
- 0x8C080103, // 0006 GETMET R2 R0 K3
+ 0x8C080101, // 0006 GETMET R2 R0 K1
0x7C080200, // 0007 CALL R2 1
0x80000000, // 0008 RET 0
})
@@ -5887,18 +5483,17 @@ be_local_closure(class_lvh_qrcode_set_qr_light_color, /* name */
/********************************************************************
** Solidified function: get_qr_light_color
********************************************************************/
-extern const bclass be_class_lvh_qrcode;
be_local_closure(class_lvh_qrcode_get_qr_light_color, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_qrcode,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_lvh_qrcode, /* shared constants */
be_str_weak(get_qr_light_color),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -5912,30 +5507,25 @@ be_local_closure(class_lvh_qrcode_get_qr_light_color, /* name */
/********************************************************************
** Solidified function: set_qr_size
********************************************************************/
-extern const bclass be_class_lvh_qrcode;
be_local_closure(class_lvh_qrcode_set_qr_size, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_qrcode,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_size),
- /* K2 */ be_nested_str_weak(_update),
- }),
+ &be_ktab_class_lvh_qrcode, /* shared constants */
be_str_weak(set_qr_size),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x88080102, // 0000 GETMBR R2 R0 K2
+ 0x8C080505, // 0001 GETMET R2 R2 K5
0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
- 0x8C080102, // 0004 GETMET R2 R0 K2
+ 0x8C080101, // 0004 GETMET R2 R0 K1
0x7C080200, // 0005 CALL R2 1
0x80000000, // 0006 RET 0
})
@@ -5947,18 +5537,17 @@ be_local_closure(class_lvh_qrcode_set_qr_size, /* name */
/********************************************************************
** Solidified function: get_light_color
********************************************************************/
-extern const bclass be_class_lvh_qrcode;
be_local_closure(class_lvh_qrcode_get_light_color, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_qrcode,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_lvh_qrcode, /* shared constants */
be_str_weak(get_light_color),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -5972,30 +5561,25 @@ be_local_closure(class_lvh_qrcode_get_light_color, /* name */
/********************************************************************
** Solidified function: set_size
********************************************************************/
-extern const bclass be_class_lvh_qrcode;
be_local_closure(class_lvh_qrcode_set_size, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_qrcode,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_size),
- /* K2 */ be_nested_str_weak(_update),
- }),
+ &be_ktab_class_lvh_qrcode, /* shared constants */
be_str_weak(set_size),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x88080102, // 0000 GETMBR R2 R0 K2
+ 0x8C080505, // 0001 GETMET R2 R2 K5
0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
- 0x8C080102, // 0004 GETMET R2 R0 K2
+ 0x8C080101, // 0004 GETMET R2 R0 K1
0x7C080200, // 0005 CALL R2 1
0x80000000, // 0006 RET 0
})
@@ -6007,33 +5591,27 @@ be_local_closure(class_lvh_qrcode_set_size, /* name */
/********************************************************************
** Solidified function: set_qr_dark_color
********************************************************************/
-extern const bclass be_class_lvh_qrcode;
be_local_closure(class_lvh_qrcode_set_qr_dark_color, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_qrcode,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_dark_color),
- /* K2 */ be_nested_str_weak(parse_color),
- /* K3 */ be_nested_str_weak(_update),
- }),
+ &be_ktab_class_lvh_qrcode, /* shared constants */
be_str_weak(set_qr_dark_color),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x8C100102, // 0002 GETMET R4 R0 K2
+ 0x88080102, // 0000 GETMBR R2 R0 K2
+ 0x8C080506, // 0001 GETMET R2 R2 K6
+ 0x8C100104, // 0002 GETMET R4 R0 K4
0x5C180200, // 0003 MOVE R6 R1
0x7C100400, // 0004 CALL R4 2
0x7C080400, // 0005 CALL R2 2
- 0x8C080103, // 0006 GETMET R2 R0 K3
+ 0x8C080101, // 0006 GETMET R2 R0 K1
0x7C080200, // 0007 CALL R2 1
0x80000000, // 0008 RET 0
})
@@ -6045,18 +5623,17 @@ be_local_closure(class_lvh_qrcode_set_qr_dark_color, /* name */
/********************************************************************
** Solidified function: get_qr_text
********************************************************************/
-extern const bclass be_class_lvh_qrcode;
be_local_closure(class_lvh_qrcode_get_qr_text, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_qrcode,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_lvh_qrcode, /* shared constants */
be_str_weak(get_qr_text),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -6070,33 +5647,27 @@ be_local_closure(class_lvh_qrcode_get_qr_text, /* name */
/********************************************************************
** Solidified function: set_dark_color
********************************************************************/
-extern const bclass be_class_lvh_qrcode;
be_local_closure(class_lvh_qrcode_set_dark_color, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_qrcode,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_dark_color),
- /* K2 */ be_nested_str_weak(parse_color),
- /* K3 */ be_nested_str_weak(_update),
- }),
+ &be_ktab_class_lvh_qrcode, /* shared constants */
be_str_weak(set_dark_color),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x8C100102, // 0002 GETMET R4 R0 K2
+ 0x88080102, // 0000 GETMBR R2 R0 K2
+ 0x8C080506, // 0001 GETMET R2 R2 K6
+ 0x8C100104, // 0002 GETMET R4 R0 K4
0x5C180200, // 0003 MOVE R6 R1
0x7C100400, // 0004 CALL R4 2
0x7C080400, // 0005 CALL R2 2
- 0x8C080103, // 0006 GETMET R2 R0 K3
+ 0x8C080101, // 0006 GETMET R2 R0 K1
0x7C080200, // 0007 CALL R2 1
0x80000000, // 0008 RET 0
})
@@ -6108,18 +5679,17 @@ be_local_closure(class_lvh_qrcode_set_dark_color, /* name */
/********************************************************************
** Solidified function: get_size
********************************************************************/
-extern const bclass be_class_lvh_qrcode;
be_local_closure(class_lvh_qrcode_get_size, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_qrcode,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_lvh_qrcode, /* shared constants */
be_str_weak(get_size),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -6133,28 +5703,24 @@ be_local_closure(class_lvh_qrcode_get_size, /* name */
/********************************************************************
** Solidified function: post_config
********************************************************************/
-extern const bclass be_class_lvh_qrcode;
be_local_closure(class_lvh_qrcode_post_config, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_qrcode,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(post_config),
- /* K1 */ be_nested_str_weak(_update),
- }),
+ &be_ktab_class_lvh_qrcode, /* shared constants */
be_str_weak(post_config),
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
0x60040003, // 0000 GETGBL R1 G3
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
- 0x8C040300, // 0003 GETMET R1 R1 K0
+ 0x8C040307, // 0003 GETMET R1 R1 K7
0x7C040200, // 0004 CALL R1 1
0x8C040101, // 0005 GETMET R1 R0 K1
0x7C040200, // 0006 CALL R1 1
@@ -6168,22 +5734,17 @@ be_local_closure(class_lvh_qrcode_post_config, /* name */
/********************************************************************
** Solidified function: _update
********************************************************************/
-extern const bclass be_class_lvh_qrcode;
be_local_closure(class_lvh_qrcode__update, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_qrcode,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(qr_text),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(update),
- }),
+ &be_ktab_class_lvh_qrcode, /* shared constants */
be_str_weak(_update),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
@@ -6191,8 +5752,8 @@ be_local_closure(class_lvh_qrcode__update, /* name */
0x4C080000, // 0001 LDNIL R2
0x20080202, // 0002 NE R2 R1 R2
0x780A0006, // 0003 JMPF R2 #000B
- 0x88080101, // 0004 GETMBR R2 R0 K1
- 0x8C080502, // 0005 GETMET R2 R2 K2
+ 0x88080102, // 0004 GETMBR R2 R0 K2
+ 0x8C080508, // 0005 GETMET R2 R2 K8
0x5C100200, // 0006 MOVE R4 R1
0x6014000C, // 0007 GETGBL R5 G12
0x5C180200, // 0008 MOVE R6 R1
@@ -6208,18 +5769,17 @@ be_local_closure(class_lvh_qrcode__update, /* name */
/********************************************************************
** Solidified function: get_qr_size
********************************************************************/
-extern const bclass be_class_lvh_qrcode;
be_local_closure(class_lvh_qrcode_get_qr_size, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_qrcode,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_lvh_qrcode, /* shared constants */
be_str_weak(get_qr_size),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -6260,28 +5820,36 @@ be_local_class(lvh_qrcode,
})),
be_str_weak(lvh_qrcode)
);
+// compact class 'lvh_slider' ktab size: 9, total: 14 (saved 40 bytes)
+static const bvalue be_ktab_class_lvh_slider[9] = {
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(set_range),
+ /* K2 */ be_nested_str_weak(get_min),
+ /* K3 */ be_nested_str_weak(get_min_value),
+ /* K4 */ be_nested_str_weak(_val),
+ /* K5 */ be_nested_str_weak(set_value),
+ /* K6 */ be_const_int(0),
+ /* K7 */ be_nested_str_weak(get_max_value),
+ /* K8 */ be_nested_str_weak(get_max),
+};
+
extern const bclass be_class_lvh_slider;
/********************************************************************
** Solidified function: set_max
********************************************************************/
-extern const bclass be_class_lvh_slider;
be_local_closure(class_lvh_slider_set_max, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_slider,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_range),
- /* K2 */ be_nested_str_weak(get_min),
- }),
+ &be_ktab_class_lvh_slider, /* shared constants */
be_str_weak(set_max),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
@@ -6303,26 +5871,22 @@ be_local_closure(class_lvh_slider_set_max, /* name */
/********************************************************************
** Solidified function: get_min
********************************************************************/
-extern const bclass be_class_lvh_slider;
be_local_closure(class_lvh_slider_get_min, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_slider,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_min_value),
- }),
+ &be_ktab_class_lvh_slider, /* shared constants */
be_str_weak(get_min),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x8C040303, // 0001 GETMET R1 R1 K3
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -6334,31 +5898,25 @@ be_local_closure(class_lvh_slider_get_min, /* name */
/********************************************************************
** Solidified function: set_val
********************************************************************/
-extern const bclass be_class_lvh_slider;
be_local_closure(class_lvh_slider_set_val, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_slider,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_val),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(set_value),
- /* K3 */ be_const_int(0),
- }),
+ &be_ktab_class_lvh_slider, /* shared constants */
be_str_weak(set_val),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
+ 0x90020801, // 0000 SETMBR R0 K4 R1
+ 0x88080100, // 0001 GETMBR R2 R0 K0
+ 0x8C080505, // 0002 GETMET R2 R2 K5
0x5C100200, // 0003 MOVE R4 R1
- 0x58140003, // 0004 LDCONST R5 K3
+ 0x58140006, // 0004 LDCONST R5 K6
0x7C080600, // 0005 CALL R2 3
0x80000000, // 0006 RET 0
})
@@ -6370,26 +5928,22 @@ be_local_closure(class_lvh_slider_set_val, /* name */
/********************************************************************
** Solidified function: get_max
********************************************************************/
-extern const bclass be_class_lvh_slider;
be_local_closure(class_lvh_slider_get_max, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_slider,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_max_value),
- }),
+ &be_ktab_class_lvh_slider, /* shared constants */
be_str_weak(get_max),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x8C040307, // 0001 GETMET R1 R1 K7
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -6401,22 +5955,17 @@ be_local_closure(class_lvh_slider_get_max, /* name */
/********************************************************************
** Solidified function: set_min
********************************************************************/
-extern const bclass be_class_lvh_slider;
be_local_closure(class_lvh_slider_set_min, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_slider,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_range),
- /* K2 */ be_nested_str_weak(get_max),
- }),
+ &be_ktab_class_lvh_slider, /* shared constants */
be_str_weak(set_min),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
@@ -6425,7 +5974,7 @@ be_local_closure(class_lvh_slider_set_min, /* name */
0x60100009, // 0002 GETGBL R4 G9
0x5C140200, // 0003 MOVE R5 R1
0x7C100200, // 0004 CALL R4 1
- 0x8C140102, // 0005 GETMET R5 R0 K2
+ 0x8C140108, // 0005 GETMET R5 R0 K8
0x7C140200, // 0006 CALL R5 1
0x7C080600, // 0007 CALL R2 3
0x80000000, // 0008 RET 0
@@ -6453,29 +6002,43 @@ be_local_class(lvh_slider,
})),
be_str_weak(lvh_slider)
);
+// compact class 'lvh_roller' ktab size: 16, total: 20 (saved 32 bytes)
+static const bvalue be_ktab_class_lvh_roller[16] = {
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(set_options),
+ /* K2 */ be_nested_str_weak(lv),
+ /* K3 */ be_nested_str_weak(ROLLER_MODE_NORMAL),
+ /* K4 */ be_nested_str_weak(resize),
+ /* K5 */ be_nested_str_weak(get_selected_str),
+ /* K6 */ be_nested_str_weak(_buffer),
+ /* K7 */ be_nested_str_weak(remove_trailing_zeroes),
+ /* K8 */ be_nested_str_weak(asstring),
+ /* K9 */ be_nested_str_weak(get_options),
+ /* K10 */ be_nested_str_weak(_val),
+ /* K11 */ be_nested_str_weak(set_selected),
+ /* K12 */ be_const_int(0),
+ /* K13 */ be_nested_str_weak(attribute_error),
+ /* K14 */ be_nested_str_weak(set_text_X20unsupported_X20on_X20roller),
+ /* K15 */ be_nested_str_weak(get_selected),
+};
+
extern const bclass be_class_lvh_roller;
/********************************************************************
** Solidified function: set_options
********************************************************************/
-extern const bclass be_class_lvh_roller;
be_local_closure(class_lvh_roller_set_options, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_roller,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_options),
- /* K2 */ be_nested_str_weak(lv),
- /* K3 */ be_nested_str_weak(ROLLER_MODE_NORMAL),
- }),
+ &be_ktab_class_lvh_roller, /* shared constants */
be_str_weak(set_options),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
@@ -6495,44 +6058,36 @@ be_local_closure(class_lvh_roller_set_options, /* name */
/********************************************************************
** Solidified function: get_text
********************************************************************/
-extern const bclass be_class_lvh_roller;
be_local_closure(class_lvh_roller_get_text, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_roller,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(resize),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(get_selected_str),
- /* K3 */ be_nested_str_weak(_buffer),
- /* K4 */ be_nested_str_weak(remove_trailing_zeroes),
- /* K5 */ be_nested_str_weak(asstring),
- }),
+ &be_ktab_class_lvh_roller, /* shared constants */
be_str_weak(get_text),
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
0x60040015, // 0000 GETGBL R1 G21
0x7C040000, // 0001 CALL R1 0
- 0x8C040300, // 0002 GETMET R1 R1 K0
+ 0x8C040304, // 0002 GETMET R1 R1 K4
0x540E00FF, // 0003 LDINT R3 256
0x7C040400, // 0004 CALL R1 2
- 0x88080101, // 0005 GETMBR R2 R0 K1
- 0x8C080502, // 0006 GETMET R2 R2 K2
- 0x8C100303, // 0007 GETMET R4 R1 K3
+ 0x88080100, // 0005 GETMBR R2 R0 K0
+ 0x8C080505, // 0006 GETMET R2 R2 K5
+ 0x8C100306, // 0007 GETMET R4 R1 K6
0x7C100200, // 0008 CALL R4 1
0x541600FF, // 0009 LDINT R5 256
0x7C080600, // 000A CALL R2 3
- 0x8C080104, // 000B GETMET R2 R0 K4
+ 0x8C080107, // 000B GETMET R2 R0 K7
0x5C100200, // 000C MOVE R4 R1
0x7C080400, // 000D CALL R2 2
0x5C040400, // 000E MOVE R1 R2
- 0x8C080305, // 000F GETMET R2 R1 K5
+ 0x8C080308, // 000F GETMET R2 R1 K8
0x7C080200, // 0010 CALL R2 1
0x80040400, // 0011 RET 1 R2
})
@@ -6544,26 +6099,22 @@ be_local_closure(class_lvh_roller_get_text, /* name */
/********************************************************************
** Solidified function: get_options
********************************************************************/
-extern const bclass be_class_lvh_roller;
be_local_closure(class_lvh_roller_get_options, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_roller,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_options),
- }),
+ &be_ktab_class_lvh_roller, /* shared constants */
be_str_weak(get_options),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x8C040309, // 0001 GETMET R1 R1 K9
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -6575,31 +6126,25 @@ be_local_closure(class_lvh_roller_get_options, /* name */
/********************************************************************
** Solidified function: set_val
********************************************************************/
-extern const bclass be_class_lvh_roller;
be_local_closure(class_lvh_roller_set_val, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_roller,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_val),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(set_selected),
- /* K3 */ be_const_int(0),
- }),
+ &be_ktab_class_lvh_roller, /* shared constants */
be_str_weak(set_val),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
+ 0x90021401, // 0000 SETMBR R0 K10 R1
+ 0x88080100, // 0001 GETMBR R2 R0 K0
+ 0x8C08050B, // 0002 GETMET R2 R2 K11
0x5C100200, // 0003 MOVE R4 R1
- 0x58140003, // 0004 LDCONST R5 K3
+ 0x5814000C, // 0004 LDCONST R5 K12
0x7C080600, // 0005 CALL R2 3
0x80000000, // 0006 RET 0
})
@@ -6611,25 +6156,21 @@ be_local_closure(class_lvh_roller_set_val, /* name */
/********************************************************************
** Solidified function: set_text
********************************************************************/
-extern const bclass be_class_lvh_roller;
be_local_closure(class_lvh_roller_set_text, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_roller,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(attribute_error),
- /* K1 */ be_nested_str_weak(set_text_X20unsupported_X20on_X20roller),
- }),
+ &be_ktab_class_lvh_roller, /* shared constants */
be_str_weak(set_text),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0xB0060101, // 0000 RAISE 1 K0 K1
+ 0xB0061B0E, // 0000 RAISE 1 K13 K14
0x80000000, // 0001 RET 0
})
)
@@ -6640,26 +6181,22 @@ be_local_closure(class_lvh_roller_set_text, /* name */
/********************************************************************
** Solidified function: get_val
********************************************************************/
-extern const bclass be_class_lvh_roller;
be_local_closure(class_lvh_roller_get_val, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_roller,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_selected),
- }),
+ &be_ktab_class_lvh_roller, /* shared constants */
be_str_weak(get_val),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x8C04030F, // 0001 GETMET R1 R1 K15
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -6687,28 +6224,33 @@ be_local_class(lvh_roller,
})),
be_str_weak(lvh_roller)
);
+// compact class 'lvh_led' ktab size: 6, total: 8 (saved 16 bytes)
+static const bvalue be_ktab_class_lvh_led[6] = {
+ /* K0 */ be_nested_str_weak(_val),
+ /* K1 */ be_nested_str_weak(_lv_obj),
+ /* K2 */ be_nested_str_weak(set_brightness),
+ /* K3 */ be_nested_str_weak(get_brightness),
+ /* K4 */ be_nested_str_weak(parse_color),
+ /* K5 */ be_nested_str_weak(set_color),
+};
+
extern const bclass be_class_lvh_led;
/********************************************************************
** Solidified function: set_val
********************************************************************/
-extern const bclass be_class_lvh_led;
be_local_closure(class_lvh_led_set_val, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_led,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_val),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(set_brightness),
- }),
+ &be_ktab_class_lvh_led, /* shared constants */
be_str_weak(set_val),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
@@ -6727,18 +6269,17 @@ be_local_closure(class_lvh_led_set_val, /* name */
/********************************************************************
** Solidified function: get_color
********************************************************************/
-extern const bclass be_class_lvh_led;
be_local_closure(class_lvh_led_get_color, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_led,
- 0, /* has constants */
- NULL, /* no const */
+ NULL, /* no sub protos */
+ 1, /* has constants */
+ &be_ktab_class_lvh_led, /* shared constants */
be_str_weak(get_color),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@@ -6752,26 +6293,22 @@ be_local_closure(class_lvh_led_get_color, /* name */
/********************************************************************
** Solidified function: get_val
********************************************************************/
-extern const bclass be_class_lvh_led;
be_local_closure(class_lvh_led_get_val, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_led,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_brightness),
- }),
+ &be_ktab_class_lvh_led, /* shared constants */
be_str_weak(get_val),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x88040101, // 0000 GETMBR R1 R0 K1
+ 0x8C040303, // 0001 GETMET R1 R1 K3
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -6783,30 +6320,25 @@ be_local_closure(class_lvh_led_get_val, /* name */
/********************************************************************
** Solidified function: set_color
********************************************************************/
-extern const bclass be_class_lvh_led;
be_local_closure(class_lvh_led_set_color, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_led,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(parse_color),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(set_color),
- }),
+ &be_ktab_class_lvh_led, /* shared constants */
be_str_weak(set_color),
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C080104, // 0000 GETMET R2 R0 K4
0x5C100200, // 0001 MOVE R4 R1
0x7C080400, // 0002 CALL R2 2
0x880C0101, // 0003 GETMBR R3 R0 K1
- 0x8C0C0702, // 0004 GETMET R3 R3 K2
+ 0x8C0C0705, // 0004 GETMET R3 R3 K5
0x5C140400, // 0005 MOVE R5 R2
0x7C0C0400, // 0006 CALL R3 2
0x80000000, // 0007 RET 0
@@ -6833,27 +6365,52 @@ be_local_class(lvh_led,
})),
be_str_weak(lvh_led)
);
+// compact class 'lvh_dropdown' ktab size: 25, total: 37 (saved 96 bytes)
+static const bvalue be_ktab_class_lvh_dropdown[25] = {
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(get_selected),
+ /* K2 */ be_nested_str_weak(set_text),
+ /* K3 */ be_const_int(0),
+ /* K4 */ be_const_int(3),
+ /* K5 */ be_nested_str_weak(set_dir),
+ /* K6 */ be_nested_str_weak(_dir),
+ /* K7 */ be_const_int(1),
+ /* K8 */ be_nested_str_weak(_symbol),
+ /* K9 */ be_nested_str_weak(lv),
+ /* K10 */ be_nested_str_weak(SYMBOL_UP),
+ /* K11 */ be_const_int(2),
+ /* K12 */ be_nested_str_weak(SYMBOL_LEFT),
+ /* K13 */ be_nested_str_weak(SYMBOL_RIGHT),
+ /* K14 */ be_nested_str_weak(SYMBOL_DOWN),
+ /* K15 */ be_nested_str_weak(set_symbol),
+ /* K16 */ be_nested_str_weak(get_dir),
+ /* K17 */ be_nested_str_weak(_val),
+ /* K18 */ be_nested_str_weak(set_selected),
+ /* K19 */ be_nested_str_weak(get_text),
+ /* K20 */ be_nested_str_weak(resize),
+ /* K21 */ be_nested_str_weak(get_selected_str),
+ /* K22 */ be_nested_str_weak(_buffer),
+ /* K23 */ be_nested_str_weak(remove_trailing_zeroes),
+ /* K24 */ be_nested_str_weak(asstring),
+};
+
extern const bclass be_class_lvh_dropdown;
/********************************************************************
** Solidified function: get_val
********************************************************************/
-extern const bclass be_class_lvh_dropdown;
be_local_closure(class_lvh_dropdown_get_val, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_dropdown,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_selected),
- }),
+ &be_ktab_class_lvh_dropdown, /* shared constants */
be_str_weak(get_val),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
@@ -6870,26 +6427,22 @@ be_local_closure(class_lvh_dropdown_get_val, /* name */
/********************************************************************
** Solidified function: set_text
********************************************************************/
-extern const bclass be_class_lvh_dropdown;
be_local_closure(class_lvh_dropdown_set_text, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_dropdown,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_text),
- }),
+ &be_ktab_class_lvh_dropdown, /* shared constants */
be_str_weak(set_text),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x8C080502, // 0001 GETMET R2 R2 K2
0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
0x80000000, // 0004 RET 0
@@ -6902,33 +6455,17 @@ be_local_closure(class_lvh_dropdown_set_text, /* name */
/********************************************************************
** Solidified function: set_direction
********************************************************************/
-extern const bclass be_class_lvh_dropdown;
be_local_closure(class_lvh_dropdown_set_direction, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_dropdown,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_const_int(3),
- /* K2 */ be_nested_str_weak(_lv_obj),
- /* K3 */ be_nested_str_weak(set_dir),
- /* K4 */ be_nested_str_weak(_dir),
- /* K5 */ be_const_int(1),
- /* K6 */ be_nested_str_weak(_symbol),
- /* K7 */ be_nested_str_weak(lv),
- /* K8 */ be_nested_str_weak(SYMBOL_UP),
- /* K9 */ be_const_int(2),
- /* K10 */ be_nested_str_weak(SYMBOL_LEFT),
- /* K11 */ be_nested_str_weak(SYMBOL_RIGHT),
- /* K12 */ be_nested_str_weak(SYMBOL_DOWN),
- /* K13 */ be_nested_str_weak(set_symbol),
- }),
+ &be_ktab_class_lvh_dropdown, /* shared constants */
be_str_weak(set_direction),
&be_const_str_solidified,
( &(const binstruction[40]) { /* code */
@@ -6936,40 +6473,40 @@ be_local_closure(class_lvh_dropdown_set_direction, /* name */
0x5C0C0200, // 0001 MOVE R3 R1
0x7C080200, // 0002 CALL R2 1
0x5C040400, // 0003 MOVE R1 R2
- 0x14080300, // 0004 LT R2 R1 K0
+ 0x14080303, // 0004 LT R2 R1 K3
0x740A0001, // 0005 JMPT R2 #0008
- 0x24080301, // 0006 GT R2 R1 K1
+ 0x24080304, // 0006 GT R2 R1 K4
0x780A0000, // 0007 JMPF R2 #0009
- 0x58040000, // 0008 LDCONST R1 K0
- 0x88080102, // 0009 GETMBR R2 R0 K2
- 0x8C080503, // 000A GETMET R2 R2 K3
- 0x88100104, // 000B GETMBR R4 R0 K4
+ 0x58040003, // 0008 LDCONST R1 K3
+ 0x88080100, // 0009 GETMBR R2 R0 K0
+ 0x8C080505, // 000A GETMET R2 R2 K5
+ 0x88100106, // 000B GETMBR R4 R0 K6
0x94100801, // 000C GETIDX R4 R4 R1
0x7C080400, // 000D CALL R2 2
- 0x1C080305, // 000E EQ R2 R1 K5
+ 0x1C080307, // 000E EQ R2 R1 K7
0x780A0003, // 000F JMPF R2 #0014
- 0xB80A0E00, // 0010 GETNGBL R2 K7
- 0x88080508, // 0011 GETMBR R2 R2 K8
- 0x90020C02, // 0012 SETMBR R0 K6 R2
+ 0xB80A1200, // 0010 GETNGBL R2 K9
+ 0x8808050A, // 0011 GETMBR R2 R2 K10
+ 0x90021002, // 0012 SETMBR R0 K8 R2
0x7002000E, // 0013 JMP #0023
- 0x1C080309, // 0014 EQ R2 R1 K9
+ 0x1C08030B, // 0014 EQ R2 R1 K11
0x780A0003, // 0015 JMPF R2 #001A
- 0xB80A0E00, // 0016 GETNGBL R2 K7
- 0x8808050A, // 0017 GETMBR R2 R2 K10
- 0x90020C02, // 0018 SETMBR R0 K6 R2
+ 0xB80A1200, // 0016 GETNGBL R2 K9
+ 0x8808050C, // 0017 GETMBR R2 R2 K12
+ 0x90021002, // 0018 SETMBR R0 K8 R2
0x70020008, // 0019 JMP #0023
- 0x1C080301, // 001A EQ R2 R1 K1
+ 0x1C080304, // 001A EQ R2 R1 K4
0x780A0003, // 001B JMPF R2 #0020
- 0xB80A0E00, // 001C GETNGBL R2 K7
- 0x8808050B, // 001D GETMBR R2 R2 K11
- 0x90020C02, // 001E SETMBR R0 K6 R2
+ 0xB80A1200, // 001C GETNGBL R2 K9
+ 0x8808050D, // 001D GETMBR R2 R2 K13
+ 0x90021002, // 001E SETMBR R0 K8 R2
0x70020002, // 001F JMP #0023
- 0xB80A0E00, // 0020 GETNGBL R2 K7
- 0x8808050C, // 0021 GETMBR R2 R2 K12
- 0x90020C02, // 0022 SETMBR R0 K6 R2
- 0x88080102, // 0023 GETMBR R2 R0 K2
- 0x8C08050D, // 0024 GETMET R2 R2 K13
- 0x88100106, // 0025 GETMBR R4 R0 K6
+ 0xB80A1200, // 0020 GETNGBL R2 K9
+ 0x8808050E, // 0021 GETMBR R2 R2 K14
+ 0x90021002, // 0022 SETMBR R0 K8 R2
+ 0x88080100, // 0023 GETMBR R2 R0 K0
+ 0x8C08050F, // 0024 GETMET R2 R2 K15
+ 0x88100108, // 0025 GETMBR R4 R0 K8
0x7C080400, // 0026 CALL R2 2
0x80000000, // 0027 RET 0
})
@@ -6981,42 +6518,35 @@ be_local_closure(class_lvh_dropdown_set_direction, /* name */
/********************************************************************
** Solidified function: get_direction
********************************************************************/
-extern const bclass be_class_lvh_dropdown;
be_local_closure(class_lvh_dropdown_get_direction, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_dropdown,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_dir),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(_dir),
- /* K4 */ be_const_int(1),
- }),
+ &be_ktab_class_lvh_dropdown, /* shared constants */
be_str_weak(get_direction),
&be_const_str_solidified,
( &(const binstruction[18]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x8C040310, // 0001 GETMET R1 R1 K16
0x7C040200, // 0002 CALL R1 1
- 0x58080002, // 0003 LDCONST R2 K2
+ 0x58080003, // 0003 LDCONST R2 K3
0x600C000C, // 0004 GETGBL R3 G12
- 0x88100103, // 0005 GETMBR R4 R0 K3
+ 0x88100106, // 0005 GETMBR R4 R0 K6
0x7C0C0200, // 0006 CALL R3 1
0x140C0403, // 0007 LT R3 R2 R3
0x780E0006, // 0008 JMPF R3 #0010
- 0x880C0103, // 0009 GETMBR R3 R0 K3
+ 0x880C0106, // 0009 GETMBR R3 R0 K6
0x940C0602, // 000A GETIDX R3 R3 R2
0x1C0C0203, // 000B EQ R3 R1 R3
0x780E0000, // 000C JMPF R3 #000E
0x80040400, // 000D RET 1 R2
- 0x00080504, // 000E ADD R2 R2 K4
+ 0x00080507, // 000E ADD R2 R2 K7
0x7001FFF3, // 000F JMP #0004
0x540DFFFE, // 0010 LDINT R3 -1
0x80040600, // 0011 RET 1 R3
@@ -7029,27 +6559,23 @@ be_local_closure(class_lvh_dropdown_get_direction, /* name */
/********************************************************************
** Solidified function: set_show_selected
********************************************************************/
-extern const bclass be_class_lvh_dropdown;
be_local_closure(class_lvh_dropdown_set_show_selected, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_dropdown,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_text),
- }),
+ &be_ktab_class_lvh_dropdown, /* shared constants */
be_str_weak(set_show_selected),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
0x78060003, // 0000 JMPF R1 #0005
0x88080100, // 0001 GETMBR R2 R0 K0
- 0x8C080501, // 0002 GETMET R2 R2 K1
+ 0x8C080502, // 0002 GETMET R2 R2 K2
0x4C100000, // 0003 LDNIL R4
0x7C080400, // 0004 CALL R2 2
0x80000000, // 0005 RET 0
@@ -7062,28 +6588,23 @@ be_local_closure(class_lvh_dropdown_set_show_selected, /* name */
/********************************************************************
** Solidified function: set_val
********************************************************************/
-extern const bclass be_class_lvh_dropdown;
be_local_closure(class_lvh_dropdown_set_val, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_dropdown,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_val),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(set_selected),
- }),
+ &be_ktab_class_lvh_dropdown, /* shared constants */
be_str_weak(set_val),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
+ 0x90022201, // 0000 SETMBR R0 K17 R1
+ 0x88080100, // 0001 GETMBR R2 R0 K0
+ 0x8C080512, // 0002 GETMET R2 R2 K18
0x5C100200, // 0003 MOVE R4 R1
0x7C080400, // 0004 CALL R2 2
0x80000000, // 0005 RET 0
@@ -7096,51 +6617,42 @@ be_local_closure(class_lvh_dropdown_set_val, /* name */
/********************************************************************
** Solidified function: get_text
********************************************************************/
-extern const bclass be_class_lvh_dropdown;
be_local_closure(class_lvh_dropdown_get_text, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_dropdown,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_text),
- /* K2 */ be_nested_str_weak(resize),
- /* K3 */ be_nested_str_weak(get_selected_str),
- /* K4 */ be_nested_str_weak(_buffer),
- /* K5 */ be_nested_str_weak(remove_trailing_zeroes),
- /* K6 */ be_nested_str_weak(asstring),
- }),
+ &be_ktab_class_lvh_dropdown, /* shared constants */
be_str_weak(get_text),
&be_const_str_solidified,
( &(const binstruction[27]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x8C040313, // 0001 GETMET R1 R1 K19
0x7C040200, // 0002 CALL R1 1
0x4C080000, // 0003 LDNIL R2
0x1C080202, // 0004 EQ R2 R1 R2
0x780A0012, // 0005 JMPF R2 #0019
0x60080015, // 0006 GETGBL R2 G21
0x7C080000, // 0007 CALL R2 0
- 0x8C080502, // 0008 GETMET R2 R2 K2
+ 0x8C080514, // 0008 GETMET R2 R2 K20
0x541200FF, // 0009 LDINT R4 256
0x7C080400, // 000A CALL R2 2
0x880C0100, // 000B GETMBR R3 R0 K0
- 0x8C0C0703, // 000C GETMET R3 R3 K3
- 0x8C140504, // 000D GETMET R5 R2 K4
+ 0x8C0C0715, // 000C GETMET R3 R3 K21
+ 0x8C140516, // 000D GETMET R5 R2 K22
0x7C140200, // 000E CALL R5 1
0x541A00FF, // 000F LDINT R6 256
0x7C0C0600, // 0010 CALL R3 3
- 0x8C0C0105, // 0011 GETMET R3 R0 K5
+ 0x8C0C0117, // 0011 GETMET R3 R0 K23
0x5C140400, // 0012 MOVE R5 R2
0x7C0C0400, // 0013 CALL R3 2
0x5C080600, // 0014 MOVE R2 R3
- 0x8C0C0506, // 0015 GETMET R3 R2 K6
+ 0x8C0C0518, // 0015 GETMET R3 R2 K24
0x7C0C0200, // 0016 CALL R3 1
0x80040600, // 0017 RET 1 R3
0x70020000, // 0018 JMP #001A
@@ -7155,26 +6667,22 @@ be_local_closure(class_lvh_dropdown_get_text, /* name */
/********************************************************************
** Solidified function: get_show_selected
********************************************************************/
-extern const bclass be_class_lvh_dropdown;
be_local_closure(class_lvh_dropdown_get_show_selected, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_dropdown,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_text),
- }),
+ &be_ktab_class_lvh_dropdown, /* shared constants */
be_str_weak(get_show_selected),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x8C040313, // 0001 GETMET R1 R1 K19
0x7C040200, // 0002 CALL R1 1
0x4C080000, // 0003 LDNIL R2
0x1C080202, // 0004 EQ R2 R1 R2
@@ -7221,7 +6729,6 @@ extern const bclass be_class_lvh_dropdown_list;
/********************************************************************
** Solidified function: post_init
********************************************************************/
-extern const bclass be_class_lvh_dropdown_list;
be_local_closure(class_lvh_dropdown_list_post_init, /* name */
be_nested_proto(
5, /* nstack */
@@ -7230,7 +6737,7 @@ be_local_closure(class_lvh_dropdown_list_post_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_dropdown_list,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(_lv_obj),
@@ -7290,27 +6797,42 @@ be_local_class(lvh_dropdown_list,
})),
be_str_weak(lvh_dropdown_list)
);
+// compact class 'lvh_bar' ktab size: 15, total: 24 (saved 72 bytes)
+static const bvalue be_ktab_class_lvh_bar[15] = {
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(get_max_value),
+ /* K2 */ be_nested_str_weak(set_range),
+ /* K3 */ be_nested_str_weak(get_min_value),
+ /* K4 */ be_nested_str_weak(post_init),
+ /* K5 */ be_nested_str_weak(_parent_lvh),
+ /* K6 */ be_nested_str_weak(_page),
+ /* K7 */ be_nested_str_weak(_oh),
+ /* K8 */ be_nested_str_weak(lvh_scale),
+ /* K9 */ be_nested_str_weak(get_range_min_value),
+ /* K10 */ be_nested_str_weak(get_range_max_value),
+ /* K11 */ be_nested_str_weak(_val),
+ /* K12 */ be_nested_str_weak(set_value),
+ /* K13 */ be_nested_str_weak(lv),
+ /* K14 */ be_nested_str_weak(ANIM_OFF),
+};
+
extern const bclass be_class_lvh_bar;
/********************************************************************
** Solidified function: get_max
********************************************************************/
-extern const bclass be_class_lvh_bar;
be_local_closure(class_lvh_bar_get_max, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_bar,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_max_value),
- }),
+ &be_ktab_class_lvh_bar, /* shared constants */
be_str_weak(get_max),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
@@ -7327,29 +6849,24 @@ be_local_closure(class_lvh_bar_get_max, /* name */
/********************************************************************
** Solidified function: set_max
********************************************************************/
-extern const bclass be_class_lvh_bar;
be_local_closure(class_lvh_bar_set_max, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_bar,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_range),
- /* K2 */ be_nested_str_weak(get_min_value),
- }),
+ &be_ktab_class_lvh_bar, /* shared constants */
be_str_weak(set_max),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x8C080502, // 0001 GETMET R2 R2 K2
0x88100100, // 0002 GETMBR R4 R0 K0
- 0x8C100902, // 0003 GETMET R4 R4 K2
+ 0x8C100903, // 0003 GETMET R4 R4 K3
0x7C100200, // 0004 CALL R4 1
0x60140009, // 0005 GETGBL R5 G9
0x5C180200, // 0006 MOVE R6 R1
@@ -7365,53 +6882,42 @@ be_local_closure(class_lvh_bar_set_max, /* name */
/********************************************************************
** Solidified function: post_init
********************************************************************/
-extern const bclass be_class_lvh_bar;
be_local_closure(class_lvh_bar_post_init, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_bar,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(post_init),
- /* K1 */ be_nested_str_weak(_parent_lvh),
- /* K2 */ be_nested_str_weak(_page),
- /* K3 */ be_nested_str_weak(_oh),
- /* K4 */ be_nested_str_weak(lvh_scale),
- /* K5 */ be_nested_str_weak(_lv_obj),
- /* K6 */ be_nested_str_weak(get_range_min_value),
- /* K7 */ be_nested_str_weak(get_range_max_value),
- /* K8 */ be_nested_str_weak(set_range),
- }),
+ &be_ktab_class_lvh_bar, /* shared constants */
be_str_weak(post_init),
&be_const_str_solidified,
( &(const binstruction[26]) { /* code */
0x60040003, // 0000 GETGBL R1 G3
0x5C080000, // 0001 MOVE R2 R0
0x7C040200, // 0002 CALL R1 1
- 0x8C040300, // 0003 GETMET R1 R1 K0
+ 0x8C040304, // 0003 GETMET R1 R1 K4
0x7C040200, // 0004 CALL R1 1
0x6004000F, // 0005 GETGBL R1 G15
- 0x88080101, // 0006 GETMBR R2 R0 K1
- 0x880C0102, // 0007 GETMBR R3 R0 K2
- 0x880C0703, // 0008 GETMBR R3 R3 K3
- 0x880C0704, // 0009 GETMBR R3 R3 K4
+ 0x88080105, // 0006 GETMBR R2 R0 K5
+ 0x880C0106, // 0007 GETMBR R3 R0 K6
+ 0x880C0707, // 0008 GETMBR R3 R3 K7
+ 0x880C0708, // 0009 GETMBR R3 R3 K8
0x7C040400, // 000A CALL R1 2
0x7806000C, // 000B JMPF R1 #0019
- 0x88040101, // 000C GETMBR R1 R0 K1
- 0x88040305, // 000D GETMBR R1 R1 K5
- 0x8C040306, // 000E GETMET R1 R1 K6
+ 0x88040105, // 000C GETMBR R1 R0 K5
+ 0x88040300, // 000D GETMBR R1 R1 K0
+ 0x8C040309, // 000E GETMET R1 R1 K9
0x7C040200, // 000F CALL R1 1
- 0x88080101, // 0010 GETMBR R2 R0 K1
- 0x88080505, // 0011 GETMBR R2 R2 K5
- 0x8C080507, // 0012 GETMET R2 R2 K7
+ 0x88080105, // 0010 GETMBR R2 R0 K5
+ 0x88080500, // 0011 GETMBR R2 R2 K0
+ 0x8C08050A, // 0012 GETMET R2 R2 K10
0x7C080200, // 0013 CALL R2 1
- 0x880C0105, // 0014 GETMBR R3 R0 K5
- 0x8C0C0708, // 0015 GETMET R3 R3 K8
+ 0x880C0100, // 0014 GETMBR R3 R0 K0
+ 0x8C0C0702, // 0015 GETMET R3 R3 K2
0x5C140200, // 0016 MOVE R5 R1
0x5C180400, // 0017 MOVE R6 R2
0x7C0C0600, // 0018 CALL R3 3
@@ -7425,26 +6931,22 @@ be_local_closure(class_lvh_bar_post_init, /* name */
/********************************************************************
** Solidified function: get_min
********************************************************************/
-extern const bclass be_class_lvh_bar;
be_local_closure(class_lvh_bar_get_min, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_bar,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_min_value),
- }),
+ &be_ktab_class_lvh_bar, /* shared constants */
be_str_weak(get_min),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x8C040303, // 0001 GETMET R1 R1 K3
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -7456,32 +6958,27 @@ be_local_closure(class_lvh_bar_get_min, /* name */
/********************************************************************
** Solidified function: set_min
********************************************************************/
-extern const bclass be_class_lvh_bar;
be_local_closure(class_lvh_bar_set_min, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_bar,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_range),
- /* K2 */ be_nested_str_weak(get_max_value),
- }),
+ &be_ktab_class_lvh_bar, /* shared constants */
be_str_weak(set_min),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x8C080502, // 0001 GETMET R2 R2 K2
0x60100009, // 0002 GETGBL R4 G9
0x5C140200, // 0003 MOVE R5 R1
0x7C100200, // 0004 CALL R4 1
0x88140100, // 0005 GETMBR R5 R0 K0
- 0x8C140B02, // 0006 GETMET R5 R5 K2
+ 0x8C140B01, // 0006 GETMET R5 R5 K1
0x7C140200, // 0007 CALL R5 1
0x7C080600, // 0008 CALL R2 3
0x80000000, // 0009 RET 0
@@ -7494,33 +6991,26 @@ be_local_closure(class_lvh_bar_set_min, /* name */
/********************************************************************
** Solidified function: set_val
********************************************************************/
-extern const bclass be_class_lvh_bar;
be_local_closure(class_lvh_bar_set_val, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_bar,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_val),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(set_value),
- /* K3 */ be_nested_str_weak(lv),
- /* K4 */ be_nested_str_weak(ANIM_OFF),
- }),
+ &be_ktab_class_lvh_bar, /* shared constants */
be_str_weak(set_val),
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x88080101, // 0001 GETMBR R2 R0 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
+ 0x90021601, // 0000 SETMBR R0 K11 R1
+ 0x88080100, // 0001 GETMBR R2 R0 K0
+ 0x8C08050C, // 0002 GETMET R2 R2 K12
0x5C100200, // 0003 MOVE R4 R1
- 0xB8160600, // 0004 GETNGBL R5 K3
- 0x88140B04, // 0005 GETMBR R5 R5 K4
+ 0xB8161A00, // 0004 GETNGBL R5 K13
+ 0x88140B0E, // 0005 GETMBR R5 R5 K14
0x7C080600, // 0006 CALL R2 3
0x80000000, // 0007 RET 0
})
@@ -7554,7 +7044,6 @@ extern const bclass be_class_lvh_line;
/********************************************************************
** Solidified function: set_points
********************************************************************/
-extern const bclass be_class_lvh_line;
be_local_closure(class_lvh_line_set_points, /* name */
be_nested_proto(
9, /* nstack */
@@ -7563,7 +7052,7 @@ be_local_closure(class_lvh_line_set_points, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_line,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[14]) { /* constants */
/* K0 */ be_const_int(2),
@@ -7666,35 +7155,40 @@ be_local_class(lvh_line,
})),
be_str_weak(lvh_line)
);
+// compact class 'lvh_scale' ktab size: 13, total: 21 (saved 64 bytes)
+static const bvalue be_ktab_class_lvh_scale[13] = {
+ /* K0 */ be_const_int(0),
+ /* K1 */ be_nested_str_weak(push),
+ /* K2 */ be_nested_str_weak(),
+ /* K3 */ be_nested_str_weak(_options),
+ /* K4 */ be_nested_str_weak(_options_arr),
+ /* K5 */ be_nested_str_weak(lv),
+ /* K6 */ be_nested_str_weak(str_arr),
+ /* K7 */ be_nested_str_weak(_lv_obj),
+ /* K8 */ be_nested_str_weak(set_text_src),
+ /* K9 */ be_nested_str_weak(HTP_X3A_X20_X27scale_X27_X20needs_X20_X27text_src_X27_X20to_X20be_X20a_X20list_X20of_X20strings),
+ /* K10 */ be_nested_str_weak(get_range_max_value),
+ /* K11 */ be_nested_str_weak(set_range),
+ /* K12 */ be_nested_str_weak(get_range_min_value),
+};
+
extern const bclass be_class_lvh_scale;
/********************************************************************
** Solidified function: set_text_src
********************************************************************/
-extern const bclass be_class_lvh_scale;
be_local_closure(class_lvh_scale_set_text_src, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_scale,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(push),
- /* K2 */ be_nested_str_weak(),
- /* K3 */ be_nested_str_weak(_options),
- /* K4 */ be_nested_str_weak(_options_arr),
- /* K5 */ be_nested_str_weak(lv),
- /* K6 */ be_nested_str_weak(str_arr),
- /* K7 */ be_nested_str_weak(_lv_obj),
- /* K8 */ be_nested_str_weak(set_text_src),
- /* K9 */ be_nested_str_weak(HTP_X3A_X20_X27scale_X27_X20needs_X20_X27text_src_X27_X20to_X20be_X20a_X20list_X20of_X20strings),
- }),
+ &be_ktab_class_lvh_scale, /* shared constants */
be_str_weak(set_text_src),
&be_const_str_solidified,
( &(const binstruction[34]) { /* code */
@@ -7741,26 +7235,22 @@ be_local_closure(class_lvh_scale_set_text_src, /* name */
/********************************************************************
** Solidified function: get_max
********************************************************************/
-extern const bclass be_class_lvh_scale;
be_local_closure(class_lvh_scale_get_max, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_scale,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_range_max_value),
- }),
+ &be_ktab_class_lvh_scale, /* shared constants */
be_str_weak(get_max),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x88040107, // 0000 GETMBR R1 R0 K7
+ 0x8C04030A, // 0001 GETMET R1 R1 K10
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -7772,32 +7262,27 @@ be_local_closure(class_lvh_scale_get_max, /* name */
/********************************************************************
** Solidified function: set_min
********************************************************************/
-extern const bclass be_class_lvh_scale;
be_local_closure(class_lvh_scale_set_min, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_scale,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_range),
- /* K2 */ be_nested_str_weak(get_range_max_value),
- }),
+ &be_ktab_class_lvh_scale, /* shared constants */
be_str_weak(set_min),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x88080107, // 0000 GETMBR R2 R0 K7
+ 0x8C08050B, // 0001 GETMET R2 R2 K11
0x60100009, // 0002 GETGBL R4 G9
0x5C140200, // 0003 MOVE R5 R1
0x7C100200, // 0004 CALL R4 1
- 0x88140100, // 0005 GETMBR R5 R0 K0
- 0x8C140B02, // 0006 GETMET R5 R5 K2
+ 0x88140107, // 0005 GETMBR R5 R0 K7
+ 0x8C140B0A, // 0006 GETMET R5 R5 K10
0x7C140200, // 0007 CALL R5 1
0x7C080600, // 0008 CALL R2 3
0x80000000, // 0009 RET 0
@@ -7810,24 +7295,21 @@ be_local_closure(class_lvh_scale_set_min, /* name */
/********************************************************************
** Solidified function: get_text_src
********************************************************************/
-extern const bclass be_class_lvh_scale;
be_local_closure(class_lvh_scale_get_text_src, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_scale,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_options),
- }),
+ &be_ktab_class_lvh_scale, /* shared constants */
be_str_weak(get_text_src),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040103, // 0000 GETMBR R1 R0 K3
0x80040200, // 0001 RET 1 R1
})
)
@@ -7838,29 +7320,24 @@ be_local_closure(class_lvh_scale_get_text_src, /* name */
/********************************************************************
** Solidified function: set_max
********************************************************************/
-extern const bclass be_class_lvh_scale;
be_local_closure(class_lvh_scale_set_max, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_scale,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_range),
- /* K2 */ be_nested_str_weak(get_range_min_value),
- }),
+ &be_ktab_class_lvh_scale, /* shared constants */
be_str_weak(set_max),
&be_const_str_solidified,
( &(const binstruction[10]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x88100100, // 0002 GETMBR R4 R0 K0
- 0x8C100902, // 0003 GETMET R4 R4 K2
+ 0x88080107, // 0000 GETMBR R2 R0 K7
+ 0x8C08050B, // 0001 GETMET R2 R2 K11
+ 0x88100107, // 0002 GETMBR R4 R0 K7
+ 0x8C10090C, // 0003 GETMET R4 R4 K12
0x7C100200, // 0004 CALL R4 1
0x60140009, // 0005 GETGBL R5 G9
0x5C180200, // 0006 MOVE R6 R1
@@ -7876,26 +7353,22 @@ be_local_closure(class_lvh_scale_set_max, /* name */
/********************************************************************
** Solidified function: get_min
********************************************************************/
-extern const bclass be_class_lvh_scale;
be_local_closure(class_lvh_scale_get_min, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_scale,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(get_range_min_value),
- }),
+ &be_ktab_class_lvh_scale, /* shared constants */
be_str_weak(get_min),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x88040107, // 0000 GETMBR R1 R0 K7
+ 0x8C04030C, // 0001 GETMET R1 R1 K12
0x7C040200, // 0002 CALL R1 1
0x80040200, // 0003 RET 1 R1
})
@@ -7925,51 +7398,69 @@ be_local_class(lvh_scale,
})),
be_str_weak(lvh_scale)
);
+// compact class 'lvh_scale_section' ktab size: 42, total: 57 (saved 120 bytes)
+static const bvalue be_ktab_class_lvh_scale_section[42] = {
+ /* K0 */ be_nested_str_weak(string),
+ /* K1 */ be_nested_str_weak(introspect),
+ /* K2 */ be_nested_str_weak(startswith),
+ /* K3 */ be_nested_str_weak(set_),
+ /* K4 */ be_nested_str_weak(get_),
+ /* K5 */ be_nested_str_weak(endswith),
+ /* K6 */ be_nested_str_weak(_X25),
+ /* K7 */ be_const_int(0),
+ /* K8 */ be_nested_str_weak(lv),
+ /* K9 */ be_nested_str_weak(pct),
+ /* K10 */ be_const_int(3),
+ /* K11 */ be_nested_str_weak(byte),
+ /* K12 */ be_const_int(2147483647),
+ /* K13 */ be_nested_str_weak(value_error),
+ /* K14 */ be_nested_str_weak(only_X20modifiers_X20_X2710_X27_X20or_X20_X2730_X27_X20allowed),
+ /* K15 */ be_nested_str_weak(_attr_ignore),
+ /* K16 */ be_nested_str_weak(find),
+ /* K17 */ be_nested_str_weak(_style),
+ /* K18 */ be_nested_str_weak(_style10),
+ /* K19 */ be_nested_str_weak(_style30),
+ /* K20 */ be_nested_str_weak(get),
+ /* K21 */ be_nested_str_weak(function),
+ /* K22 */ be_nested_str_weak(is_color_attribute),
+ /* K23 */ be_nested_str_weak(parse_color),
+ /* K24 */ be_nested_str_weak(_X20for_X20),
+ /* K25 */ be_nested_str_weak(HSP_X3A_X20Could_X20not_X20find_X20function_X20set_),
+ /* K26 */ be_nested_str_weak(_lv_obj),
+ /* K27 */ be_nested_str_weak(_min),
+ /* K28 */ be_nested_str_weak(_max),
+ /* K29 */ be_nested_str_weak(_parent_lvh),
+ /* K30 */ be_nested_str_weak(_page),
+ /* K31 */ be_nested_str_weak(_oh),
+ /* K32 */ be_nested_str_weak(lvh_scale),
+ /* K33 */ be_nested_str_weak(add_section),
+ /* K34 */ be_nested_str_weak(style),
+ /* K35 */ be_nested_str_weak(set_style),
+ /* K36 */ be_nested_str_weak(PART_MAIN),
+ /* K37 */ be_nested_str_weak(PART_INDICATOR),
+ /* K38 */ be_nested_str_weak(PART_ITEMS),
+ /* K39 */ be_nested_str_weak(HSP_X3A_X20_X27scale_section_X27_X20should_X20have_X20a_X20parent_X20of_X20type_X20_X27scale_X27),
+ /* K40 */ be_nested_str_weak(set_range),
+ /* K41 */ be_nested_str_weak(del),
+};
+
extern const bclass be_class_lvh_scale_section;
/********************************************************************
** Solidified function: setmember
********************************************************************/
-extern const bclass be_class_lvh_scale_section;
be_local_closure(class_lvh_scale_section_setmember, /* name */
be_nested_proto(
12, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_scale_section,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[26]) { /* constants */
- /* K0 */ be_nested_str_weak(string),
- /* K1 */ be_nested_str_weak(introspect),
- /* K2 */ be_nested_str_weak(startswith),
- /* K3 */ be_nested_str_weak(set_),
- /* K4 */ be_nested_str_weak(get_),
- /* K5 */ be_nested_str_weak(endswith),
- /* K6 */ be_nested_str_weak(_X25),
- /* K7 */ be_const_int(0),
- /* K8 */ be_nested_str_weak(lv),
- /* K9 */ be_nested_str_weak(pct),
- /* K10 */ be_const_int(3),
- /* K11 */ be_nested_str_weak(byte),
- /* K12 */ be_const_int(2147483647),
- /* K13 */ be_nested_str_weak(value_error),
- /* K14 */ be_nested_str_weak(only_X20modifiers_X20_X2710_X27_X20or_X20_X2730_X27_X20allowed),
- /* K15 */ be_nested_str_weak(_attr_ignore),
- /* K16 */ be_nested_str_weak(find),
- /* K17 */ be_nested_str_weak(_style),
- /* K18 */ be_nested_str_weak(_style10),
- /* K19 */ be_nested_str_weak(_style30),
- /* K20 */ be_nested_str_weak(get),
- /* K21 */ be_nested_str_weak(function),
- /* K22 */ be_nested_str_weak(is_color_attribute),
- /* K23 */ be_nested_str_weak(parse_color),
- /* K24 */ be_nested_str_weak(_X20for_X20),
- /* K25 */ be_nested_str_weak(HSP_X3A_X20Could_X20not_X20find_X20function_X20set_),
- }),
+ &be_ktab_class_lvh_scale_section, /* shared constants */
be_str_weak(setmember),
&be_const_str_solidified,
( &(const binstruction[141]) { /* code */
@@ -8123,90 +7614,69 @@ be_local_closure(class_lvh_scale_section_setmember, /* name */
/********************************************************************
** Solidified function: post_init
********************************************************************/
-extern const bclass be_class_lvh_scale_section;
be_local_closure(class_lvh_scale_section_post_init, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_scale_section,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[19]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(_min),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(_max),
- /* K4 */ be_nested_str_weak(_parent_lvh),
- /* K5 */ be_nested_str_weak(_page),
- /* K6 */ be_nested_str_weak(_oh),
- /* K7 */ be_nested_str_weak(lvh_scale),
- /* K8 */ be_nested_str_weak(add_section),
- /* K9 */ be_nested_str_weak(_style),
- /* K10 */ be_nested_str_weak(lv),
- /* K11 */ be_nested_str_weak(style),
- /* K12 */ be_nested_str_weak(set_style),
- /* K13 */ be_nested_str_weak(PART_MAIN),
- /* K14 */ be_nested_str_weak(_style10),
- /* K15 */ be_nested_str_weak(PART_INDICATOR),
- /* K16 */ be_nested_str_weak(_style30),
- /* K17 */ be_nested_str_weak(PART_ITEMS),
- /* K18 */ be_nested_str_weak(HSP_X3A_X20_X27scale_section_X27_X20should_X20have_X20a_X20parent_X20of_X20type_X20_X27scale_X27),
- }),
+ &be_ktab_class_lvh_scale_section, /* shared constants */
be_str_weak(post_init),
&be_const_str_solidified,
( &(const binstruction[51]) { /* code */
0x4C040000, // 0000 LDNIL R1
- 0x90020001, // 0001 SETMBR R0 K0 R1
- 0x90020302, // 0002 SETMBR R0 K1 K2
- 0x90020702, // 0003 SETMBR R0 K3 K2
+ 0x90023401, // 0001 SETMBR R0 K26 R1
+ 0x90023707, // 0002 SETMBR R0 K27 K7
+ 0x90023907, // 0003 SETMBR R0 K28 K7
0x6004000F, // 0004 GETGBL R1 G15
- 0x88080104, // 0005 GETMBR R2 R0 K4
- 0x880C0105, // 0006 GETMBR R3 R0 K5
- 0x880C0706, // 0007 GETMBR R3 R3 K6
- 0x880C0707, // 0008 GETMBR R3 R3 K7
+ 0x8808011D, // 0005 GETMBR R2 R0 K29
+ 0x880C011E, // 0006 GETMBR R3 R0 K30
+ 0x880C071F, // 0007 GETMBR R3 R3 K31
+ 0x880C0720, // 0008 GETMBR R3 R3 K32
0x7C040400, // 0009 CALL R1 2
0x78060023, // 000A JMPF R1 #002F
- 0x88040104, // 000B GETMBR R1 R0 K4
- 0x88040300, // 000C GETMBR R1 R1 K0
- 0x8C040308, // 000D GETMET R1 R1 K8
+ 0x8804011D, // 000B GETMBR R1 R0 K29
+ 0x8804031A, // 000C GETMBR R1 R1 K26
+ 0x8C040321, // 000D GETMET R1 R1 K33
0x7C040200, // 000E CALL R1 1
- 0x90020001, // 000F SETMBR R0 K0 R1
- 0xB8061400, // 0010 GETNGBL R1 K10
- 0x8C04030B, // 0011 GETMET R1 R1 K11
+ 0x90023401, // 000F SETMBR R0 K26 R1
+ 0xB8061000, // 0010 GETNGBL R1 K8
+ 0x8C040322, // 0011 GETMET R1 R1 K34
0x7C040200, // 0012 CALL R1 1
- 0x90021201, // 0013 SETMBR R0 K9 R1
- 0x88040100, // 0014 GETMBR R1 R0 K0
- 0x8C04030C, // 0015 GETMET R1 R1 K12
- 0xB80E1400, // 0016 GETNGBL R3 K10
- 0x880C070D, // 0017 GETMBR R3 R3 K13
- 0x88100109, // 0018 GETMBR R4 R0 K9
+ 0x90022201, // 0013 SETMBR R0 K17 R1
+ 0x8804011A, // 0014 GETMBR R1 R0 K26
+ 0x8C040323, // 0015 GETMET R1 R1 K35
+ 0xB80E1000, // 0016 GETNGBL R3 K8
+ 0x880C0724, // 0017 GETMBR R3 R3 K36
+ 0x88100111, // 0018 GETMBR R4 R0 K17
0x7C040600, // 0019 CALL R1 3
- 0xB8061400, // 001A GETNGBL R1 K10
- 0x8C04030B, // 001B GETMET R1 R1 K11
+ 0xB8061000, // 001A GETNGBL R1 K8
+ 0x8C040322, // 001B GETMET R1 R1 K34
0x7C040200, // 001C CALL R1 1
- 0x90021C01, // 001D SETMBR R0 K14 R1
- 0x88040100, // 001E GETMBR R1 R0 K0
- 0x8C04030C, // 001F GETMET R1 R1 K12
- 0xB80E1400, // 0020 GETNGBL R3 K10
- 0x880C070F, // 0021 GETMBR R3 R3 K15
- 0x8810010E, // 0022 GETMBR R4 R0 K14
+ 0x90022401, // 001D SETMBR R0 K18 R1
+ 0x8804011A, // 001E GETMBR R1 R0 K26
+ 0x8C040323, // 001F GETMET R1 R1 K35
+ 0xB80E1000, // 0020 GETNGBL R3 K8
+ 0x880C0725, // 0021 GETMBR R3 R3 K37
+ 0x88100112, // 0022 GETMBR R4 R0 K18
0x7C040600, // 0023 CALL R1 3
- 0xB8061400, // 0024 GETNGBL R1 K10
- 0x8C04030B, // 0025 GETMET R1 R1 K11
+ 0xB8061000, // 0024 GETNGBL R1 K8
+ 0x8C040322, // 0025 GETMET R1 R1 K34
0x7C040200, // 0026 CALL R1 1
- 0x90022001, // 0027 SETMBR R0 K16 R1
- 0x88040100, // 0028 GETMBR R1 R0 K0
- 0x8C04030C, // 0029 GETMET R1 R1 K12
- 0xB80E1400, // 002A GETNGBL R3 K10
- 0x880C0711, // 002B GETMBR R3 R3 K17
- 0x88100110, // 002C GETMBR R4 R0 K16
+ 0x90022601, // 0027 SETMBR R0 K19 R1
+ 0x8804011A, // 0028 GETMBR R1 R0 K26
+ 0x8C040323, // 0029 GETMET R1 R1 K35
+ 0xB80E1000, // 002A GETNGBL R3 K8
+ 0x880C0726, // 002B GETMBR R3 R3 K38
+ 0x88100113, // 002C GETMBR R4 R0 K19
0x7C040600, // 002D CALL R1 3
0x70020002, // 002E JMP #0032
0x60040001, // 002F GETGBL R1 G1
- 0x58080012, // 0030 LDCONST R2 K18
+ 0x58080027, // 0030 LDCONST R2 K39
0x7C040200, // 0031 CALL R1 1
0x80000000, // 0032 RET 0
})
@@ -8218,32 +7688,28 @@ be_local_closure(class_lvh_scale_section_post_init, /* name */
/********************************************************************
** Solidified function: set_min
********************************************************************/
-extern const bclass be_class_lvh_scale_section;
be_local_closure(class_lvh_scale_section_set_min, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_scale_section,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_max),
- /* K1 */ be_nested_str_weak(set_range),
- }),
+ &be_ktab_class_lvh_scale_section, /* shared constants */
be_str_weak(set_min),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
0x60080009, // 0000 GETGBL R2 G9
0x5C0C0200, // 0001 MOVE R3 R1
0x7C080200, // 0002 CALL R2 1
- 0x880C0100, // 0003 GETMBR R3 R0 K0
+ 0x880C011C, // 0003 GETMBR R3 R0 K28
0x14100602, // 0004 LT R4 R3 R2
0x78120000, // 0005 JMPF R4 #0007
0x5C0C0400, // 0006 MOVE R3 R2
- 0x8C100101, // 0007 GETMET R4 R0 K1
+ 0x8C100128, // 0007 GETMET R4 R0 K40
0x5C180400, // 0008 MOVE R6 R2
0x5C1C0600, // 0009 MOVE R7 R3
0x7C100600, // 000A CALL R4 3
@@ -8257,32 +7723,28 @@ be_local_closure(class_lvh_scale_section_set_min, /* name */
/********************************************************************
** Solidified function: set_max
********************************************************************/
-extern const bclass be_class_lvh_scale_section;
be_local_closure(class_lvh_scale_section_set_max, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_scale_section,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_min),
- /* K1 */ be_nested_str_weak(set_range),
- }),
+ &be_ktab_class_lvh_scale_section, /* shared constants */
be_str_weak(set_max),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
+ 0x8808011B, // 0000 GETMBR R2 R0 K27
0x600C0009, // 0001 GETGBL R3 G9
0x5C100200, // 0002 MOVE R4 R1
0x7C0C0200, // 0003 CALL R3 1
0x24100403, // 0004 GT R4 R2 R3
0x78120000, // 0005 JMPF R4 #0007
0x5C080600, // 0006 MOVE R2 R3
- 0x8C100101, // 0007 GETMET R4 R0 K1
+ 0x8C100128, // 0007 GETMET R4 R0 K40
0x5C180400, // 0008 MOVE R6 R2
0x5C1C0600, // 0009 MOVE R7 R3
0x7C100600, // 000A CALL R4 3
@@ -8296,30 +7758,24 @@ be_local_closure(class_lvh_scale_section_set_max, /* name */
/********************************************************************
** Solidified function: set_range
********************************************************************/
-extern const bclass be_class_lvh_scale_section;
be_local_closure(class_lvh_scale_section_set_range, /* name */
be_nested_proto(
7, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_scale_section,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_min),
- /* K1 */ be_nested_str_weak(_max),
- /* K2 */ be_nested_str_weak(_lv_obj),
- /* K3 */ be_nested_str_weak(set_range),
- }),
+ &be_ktab_class_lvh_scale_section, /* shared constants */
be_str_weak(set_range),
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x90020202, // 0001 SETMBR R0 K1 R2
- 0x880C0102, // 0002 GETMBR R3 R0 K2
- 0x8C0C0703, // 0003 GETMET R3 R3 K3
+ 0x90023601, // 0000 SETMBR R0 K27 R1
+ 0x90023802, // 0001 SETMBR R0 K28 R2
+ 0x880C011A, // 0002 GETMBR R3 R0 K26
+ 0x8C0C0728, // 0003 GETMET R3 R3 K40
0x5C140200, // 0004 MOVE R5 R1
0x5C180400, // 0005 MOVE R6 R2
0x7C0C0600, // 0006 CALL R3 3
@@ -8333,41 +7789,35 @@ be_local_closure(class_lvh_scale_section_set_range, /* name */
/********************************************************************
** Solidified function: delete
********************************************************************/
-extern const bclass be_class_lvh_scale_section;
be_local_closure(class_lvh_scale_section_delete, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_scale_section,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_style),
- /* K1 */ be_nested_str_weak(del),
- /* K2 */ be_nested_str_weak(_style10),
- /* K3 */ be_nested_str_weak(_style30),
- }),
+ &be_ktab_class_lvh_scale_section, /* shared constants */
be_str_weak(delete),
&be_const_str_solidified,
( &(const binstruction[16]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x88040111, // 0000 GETMBR R1 R0 K17
+ 0x8C040329, // 0001 GETMET R1 R1 K41
0x7C040200, // 0002 CALL R1 1
0x4C040000, // 0003 LDNIL R1
- 0x90020001, // 0004 SETMBR R0 K0 R1
- 0x88040102, // 0005 GETMBR R1 R0 K2
- 0x8C040301, // 0006 GETMET R1 R1 K1
+ 0x90022201, // 0004 SETMBR R0 K17 R1
+ 0x88040112, // 0005 GETMBR R1 R0 K18
+ 0x8C040329, // 0006 GETMET R1 R1 K41
0x7C040200, // 0007 CALL R1 1
0x4C040000, // 0008 LDNIL R1
- 0x90020401, // 0009 SETMBR R0 K2 R1
- 0x88040103, // 000A GETMBR R1 R0 K3
- 0x8C040301, // 000B GETMET R1 R1 K1
+ 0x90022401, // 0009 SETMBR R0 K18 R1
+ 0x88040113, // 000A GETMBR R1 R0 K19
+ 0x8C040329, // 000B GETMET R1 R1 K41
0x7C040200, // 000C CALL R1 1
0x4C040000, // 000D LDNIL R1
- 0x90020601, // 000E SETMBR R0 K3 R1
+ 0x90022601, // 000E SETMBR R0 K19 R1
0x80000000, // 000F RET 0
})
)
@@ -8399,38 +7849,48 @@ be_local_class(lvh_scale_section,
})),
be_str_weak(lvh_scale_section)
);
+// compact class 'lvh_scale_line' ktab size: 21, total: 29 (saved 64 bytes)
+static const bvalue be_ktab_class_lvh_scale_line[21] = {
+ /* K0 */ be_nested_str_weak(set_val),
+ /* K1 */ be_nested_str_weak(_parent_lvh),
+ /* K2 */ be_nested_str_weak(_lv_obj),
+ /* K3 */ be_nested_str_weak(set_line_needle_value),
+ /* K4 */ be_nested_str_weak(_needle_length),
+ /* K5 */ be_nested_str_weak(_val),
+ /* K6 */ be_nested_str_weak(get_points_num),
+ /* K7 */ be_const_int(2),
+ /* K8 */ be_nested_str_weak(get_points),
+ /* K9 */ be_nested_str_weak(_lv_points),
+ /* K10 */ be_nested_str_weak(setbytes),
+ /* K11 */ be_const_int(0),
+ /* K12 */ be_nested_str_weak(set_points),
+ /* K13 */ be_nested_str_weak(_page),
+ /* K14 */ be_nested_str_weak(_oh),
+ /* K15 */ be_nested_str_weak(lvh_scale),
+ /* K16 */ be_nested_str_weak(HSP_X3A_X20_X27scale_line_X27_X20should_X20have_X20a_X20parent_X20of_X20type_X20_X27scale_X27),
+ /* K17 */ be_nested_str_weak(lv),
+ /* K18 */ be_nested_str_weak(point_arr),
+ /* K19 */ be_nested_str_weak(point),
+ /* K20 */ be_nested_str_weak(post_init),
+};
+
extern const bclass be_class_lvh_scale_line;
/********************************************************************
** Solidified function: set_val
********************************************************************/
-extern const bclass be_class_lvh_scale_line;
be_local_closure(class_lvh_scale_line_set_val, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_scale_line,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[13]) { /* constants */
- /* K0 */ be_nested_str_weak(set_val),
- /* K1 */ be_nested_str_weak(_parent_lvh),
- /* K2 */ be_nested_str_weak(_lv_obj),
- /* K3 */ be_nested_str_weak(set_line_needle_value),
- /* K4 */ be_nested_str_weak(_needle_length),
- /* K5 */ be_nested_str_weak(_val),
- /* K6 */ be_nested_str_weak(get_points_num),
- /* K7 */ be_const_int(2),
- /* K8 */ be_nested_str_weak(get_points),
- /* K9 */ be_nested_str_weak(_lv_points),
- /* K10 */ be_nested_str_weak(setbytes),
- /* K11 */ be_const_int(0),
- /* K12 */ be_nested_str_weak(set_points),
- }),
+ &be_ktab_class_lvh_scale_line, /* shared constants */
be_str_weak(set_val),
&be_const_str_solidified,
( &(const binstruction[37]) { /* code */
@@ -8480,63 +7940,49 @@ be_local_closure(class_lvh_scale_line_set_val, /* name */
/********************************************************************
** Solidified function: post_init
********************************************************************/
-extern const bclass be_class_lvh_scale_line;
be_local_closure(class_lvh_scale_line_post_init, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_scale_line,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[12]) { /* constants */
- /* K0 */ be_nested_str_weak(_parent_lvh),
- /* K1 */ be_nested_str_weak(_page),
- /* K2 */ be_nested_str_weak(_oh),
- /* K3 */ be_nested_str_weak(lvh_scale),
- /* K4 */ be_nested_str_weak(HSP_X3A_X20_X27scale_line_X27_X20should_X20have_X20a_X20parent_X20of_X20type_X20_X27scale_X27),
- /* K5 */ be_nested_str_weak(_needle_length),
- /* K6 */ be_const_int(0),
- /* K7 */ be_nested_str_weak(_lv_points),
- /* K8 */ be_nested_str_weak(lv),
- /* K9 */ be_nested_str_weak(point_arr),
- /* K10 */ be_nested_str_weak(point),
- /* K11 */ be_nested_str_weak(post_init),
- }),
+ &be_ktab_class_lvh_scale_line, /* shared constants */
be_str_weak(post_init),
&be_const_str_solidified,
( &(const binstruction[31]) { /* code */
0x6004000F, // 0000 GETGBL R1 G15
- 0x88080100, // 0001 GETMBR R2 R0 K0
- 0x880C0101, // 0002 GETMBR R3 R0 K1
- 0x880C0702, // 0003 GETMBR R3 R3 K2
- 0x880C0703, // 0004 GETMBR R3 R3 K3
+ 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x880C010D, // 0002 GETMBR R3 R0 K13
+ 0x880C070E, // 0003 GETMBR R3 R3 K14
+ 0x880C070F, // 0004 GETMBR R3 R3 K15
0x7C040400, // 0005 CALL R1 2
0x74060002, // 0006 JMPT R1 #000A
0x60040001, // 0007 GETGBL R1 G1
- 0x58080004, // 0008 LDCONST R2 K4
+ 0x58080010, // 0008 LDCONST R2 K16
0x7C040200, // 0009 CALL R1 1
- 0x90020B06, // 000A SETMBR R0 K5 K6
- 0xB8061000, // 000B GETNGBL R1 K8
- 0x8C040309, // 000C GETMET R1 R1 K9
+ 0x9002090B, // 000A SETMBR R0 K4 K11
+ 0xB8062200, // 000B GETNGBL R1 K17
+ 0x8C040312, // 000C GETMET R1 R1 K18
0x600C0012, // 000D GETGBL R3 G18
0x7C0C0000, // 000E CALL R3 0
- 0xB8121000, // 000F GETNGBL R4 K8
- 0x8C10090A, // 0010 GETMET R4 R4 K10
+ 0xB8122200, // 000F GETNGBL R4 K17
+ 0x8C100913, // 0010 GETMET R4 R4 K19
0x7C100200, // 0011 CALL R4 1
0x40100604, // 0012 CONNECT R4 R3 R4
- 0xB8121000, // 0013 GETNGBL R4 K8
- 0x8C10090A, // 0014 GETMET R4 R4 K10
+ 0xB8122200, // 0013 GETNGBL R4 K17
+ 0x8C100913, // 0014 GETMET R4 R4 K19
0x7C100200, // 0015 CALL R4 1
0x40100604, // 0016 CONNECT R4 R3 R4
0x7C040400, // 0017 CALL R1 2
- 0x90020E01, // 0018 SETMBR R0 K7 R1
+ 0x90021201, // 0018 SETMBR R0 K9 R1
0x60040003, // 0019 GETGBL R1 G3
0x5C080000, // 001A MOVE R2 R0
0x7C040200, // 001B CALL R1 1
- 0x8C04030B, // 001C GETMET R1 R1 K11
+ 0x8C040314, // 001C GETMET R1 R1 K20
0x7C040200, // 001D CALL R1 1
0x80000000, // 001E RET 0
})
@@ -8548,24 +7994,21 @@ be_local_closure(class_lvh_scale_line_post_init, /* name */
/********************************************************************
** Solidified function: get_needle_length
********************************************************************/
-extern const bclass be_class_lvh_scale_line;
be_local_closure(class_lvh_scale_line_get_needle_length, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_scale_line,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_needle_length),
- }),
+ &be_ktab_class_lvh_scale_line, /* shared constants */
be_str_weak(get_needle_length),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040104, // 0000 GETMBR R1 R0 K4
0x80040200, // 0001 RET 1 R1
})
)
@@ -8576,35 +8019,30 @@ be_local_closure(class_lvh_scale_line_get_needle_length, /* name */
/********************************************************************
** Solidified function: set_needle_length
********************************************************************/
-extern const bclass be_class_lvh_scale_line;
be_local_closure(class_lvh_scale_line_set_needle_length, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_scale_line,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_needle_length),
- /* K1 */ be_nested_str_weak(_val),
- /* K2 */ be_nested_str_weak(set_val),
- }),
+ &be_ktab_class_lvh_scale_line, /* shared constants */
be_str_weak(set_needle_length),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
0x60080009, // 0000 GETGBL R2 G9
0x5C0C0200, // 0001 MOVE R3 R1
0x7C080200, // 0002 CALL R2 1
- 0x90020002, // 0003 SETMBR R0 K0 R2
- 0x88080101, // 0004 GETMBR R2 R0 K1
+ 0x90020802, // 0003 SETMBR R0 K4 R2
+ 0x88080105, // 0004 GETMBR R2 R0 K5
0x4C0C0000, // 0005 LDNIL R3
0x20080403, // 0006 NE R2 R2 R3
0x780A0002, // 0007 JMPF R2 #000B
- 0x8C080102, // 0008 GETMET R2 R0 K2
- 0x88100101, // 0009 GETMBR R4 R0 K1
+ 0x8C080100, // 0008 GETMET R2 R0 K0
+ 0x88100105, // 0009 GETMBR R4 R0 K5
0x7C080400, // 000A CALL R2 2
0x80000000, // 000B RET 0
})
@@ -8630,31 +8068,33 @@ be_local_class(lvh_scale_line,
})),
be_str_weak(lvh_scale_line)
);
+// compact class 'lvh_spangroup' ktab size: 6, total: 8 (saved 16 bytes)
+static const bvalue be_ktab_class_lvh_spangroup[6] = {
+ /* K0 */ be_nested_str_weak(_lv_obj),
+ /* K1 */ be_nested_str_weak(set_mode),
+ /* K2 */ be_nested_str_weak(lv),
+ /* K3 */ be_nested_str_weak(SPAN_MODE_BREAK),
+ /* K4 */ be_nested_str_weak(refr_mode),
+ /* K5 */ be_nested_str_weak(post_init),
+};
+
extern const bclass be_class_lvh_spangroup;
/********************************************************************
** Solidified function: post_init
********************************************************************/
-extern const bclass be_class_lvh_spangroup;
be_local_closure(class_lvh_spangroup_post_init, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_spangroup,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_mode),
- /* K2 */ be_nested_str_weak(lv),
- /* K3 */ be_nested_str_weak(SPAN_MODE_BREAK),
- /* K4 */ be_nested_str_weak(refr_mode),
- /* K5 */ be_nested_str_weak(post_init),
- }),
+ &be_ktab_class_lvh_spangroup, /* shared constants */
be_str_weak(post_init),
&be_const_str_solidified,
( &(const binstruction[14]) { /* code */
@@ -8681,26 +8121,22 @@ be_local_closure(class_lvh_spangroup_post_init, /* name */
/********************************************************************
** Solidified function: refr_mode
********************************************************************/
-extern const bclass be_class_lvh_spangroup;
be_local_closure(class_lvh_spangroup_refr_mode, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_spangroup,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(refr_mode),
- }),
+ &be_ktab_class_lvh_spangroup, /* shared constants */
be_str_weak(refr_mode),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
- 0x8C040301, // 0001 GETMET R1 R1 K1
+ 0x8C040304, // 0001 GETMET R1 R1 K4
0x7C040200, // 0002 CALL R1 1
0x80000000, // 0003 RET 0
})
@@ -8724,46 +8160,57 @@ be_local_class(lvh_spangroup,
})),
be_str_weak(lvh_spangroup)
);
+// compact class 'lvh_span' ktab size: 30, total: 36 (saved 48 bytes)
+static const bvalue be_ktab_class_lvh_span[30] = {
+ /* K0 */ be_nested_str_weak(string),
+ /* K1 */ be_nested_str_weak(introspect),
+ /* K2 */ be_nested_str_weak(startswith),
+ /* K3 */ be_nested_str_weak(set_),
+ /* K4 */ be_nested_str_weak(get_),
+ /* K5 */ be_nested_str_weak(endswith),
+ /* K6 */ be_nested_str_weak(_X25),
+ /* K7 */ be_const_int(0),
+ /* K8 */ be_nested_str_weak(lv),
+ /* K9 */ be_nested_str_weak(pct),
+ /* K10 */ be_nested_str_weak(_attr_ignore),
+ /* K11 */ be_nested_str_weak(find),
+ /* K12 */ be_nested_str_weak(get),
+ /* K13 */ be_nested_str_weak(function),
+ /* K14 */ be_nested_str_weak(_style),
+ /* K15 */ be_nested_str_weak(is_color_attribute),
+ /* K16 */ be_nested_str_weak(parse_color),
+ /* K17 */ be_nested_str_weak(_parent_lvh),
+ /* K18 */ be_nested_str_weak(refr_mode),
+ /* K19 */ be_nested_str_weak(_X20for_X20),
+ /* K20 */ be_nested_str_weak(HSP_X3A_X20Could_X20not_X20find_X20function_X20set_),
+ /* K21 */ be_nested_str_weak(_lv_obj),
+ /* K22 */ be_nested_str_weak(_page),
+ /* K23 */ be_nested_str_weak(_oh),
+ /* K24 */ be_nested_str_weak(lvh_spangroup),
+ /* K25 */ be_nested_str_weak(new_span),
+ /* K26 */ be_nested_str_weak(get_style),
+ /* K27 */ be_nested_str_weak(parse_font),
+ /* K28 */ be_nested_str_weak(set_text_font),
+ /* K29 */ be_nested_str_weak(set_text),
+};
+
extern const bclass be_class_lvh_span;
/********************************************************************
** Solidified function: setmember
********************************************************************/
-extern const bclass be_class_lvh_span;
be_local_closure(class_lvh_span_setmember, /* name */
be_nested_proto(
10, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_span,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[21]) { /* constants */
- /* K0 */ be_nested_str_weak(string),
- /* K1 */ be_nested_str_weak(introspect),
- /* K2 */ be_nested_str_weak(startswith),
- /* K3 */ be_nested_str_weak(set_),
- /* K4 */ be_nested_str_weak(get_),
- /* K5 */ be_nested_str_weak(endswith),
- /* K6 */ be_nested_str_weak(_X25),
- /* K7 */ be_const_int(0),
- /* K8 */ be_nested_str_weak(lv),
- /* K9 */ be_nested_str_weak(pct),
- /* K10 */ be_nested_str_weak(_attr_ignore),
- /* K11 */ be_nested_str_weak(find),
- /* K12 */ be_nested_str_weak(get),
- /* K13 */ be_nested_str_weak(function),
- /* K14 */ be_nested_str_weak(_style),
- /* K15 */ be_nested_str_weak(is_color_attribute),
- /* K16 */ be_nested_str_weak(parse_color),
- /* K17 */ be_nested_str_weak(_parent_lvh),
- /* K18 */ be_nested_str_weak(refr_mode),
- /* K19 */ be_nested_str_weak(_X20for_X20),
- /* K20 */ be_nested_str_weak(HSP_X3A_X20Could_X20not_X20find_X20function_X20set_),
- }),
+ &be_ktab_class_lvh_span, /* shared constants */
be_str_weak(setmember),
&be_const_str_solidified,
( &(const binstruction[92]) { /* code */
@@ -8868,48 +8315,38 @@ be_local_closure(class_lvh_span_setmember, /* name */
/********************************************************************
** Solidified function: post_init
********************************************************************/
-extern const bclass be_class_lvh_span;
be_local_closure(class_lvh_span_post_init, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_span,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 8]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(_parent_lvh),
- /* K2 */ be_nested_str_weak(_page),
- /* K3 */ be_nested_str_weak(_oh),
- /* K4 */ be_nested_str_weak(lvh_spangroup),
- /* K5 */ be_nested_str_weak(new_span),
- /* K6 */ be_nested_str_weak(_style),
- /* K7 */ be_nested_str_weak(get_style),
- }),
+ &be_ktab_class_lvh_span, /* shared constants */
be_str_weak(post_init),
&be_const_str_solidified,
( &(const binstruction[19]) { /* code */
0x4C040000, // 0000 LDNIL R1
- 0x90020001, // 0001 SETMBR R0 K0 R1
+ 0x90022A01, // 0001 SETMBR R0 K21 R1
0x6004000F, // 0002 GETGBL R1 G15
- 0x88080101, // 0003 GETMBR R2 R0 K1
- 0x880C0102, // 0004 GETMBR R3 R0 K2
- 0x880C0703, // 0005 GETMBR R3 R3 K3
- 0x880C0704, // 0006 GETMBR R3 R3 K4
+ 0x88080111, // 0003 GETMBR R2 R0 K17
+ 0x880C0116, // 0004 GETMBR R3 R0 K22
+ 0x880C0717, // 0005 GETMBR R3 R3 K23
+ 0x880C0718, // 0006 GETMBR R3 R3 K24
0x7C040400, // 0007 CALL R1 2
0x78060008, // 0008 JMPF R1 #0012
- 0x88040101, // 0009 GETMBR R1 R0 K1
- 0x88040300, // 000A GETMBR R1 R1 K0
- 0x8C040305, // 000B GETMET R1 R1 K5
+ 0x88040111, // 0009 GETMBR R1 R0 K17
+ 0x88040315, // 000A GETMBR R1 R1 K21
+ 0x8C040319, // 000B GETMET R1 R1 K25
0x7C040200, // 000C CALL R1 1
- 0x90020001, // 000D SETMBR R0 K0 R1
- 0x88040100, // 000E GETMBR R1 R0 K0
- 0x8C040307, // 000F GETMET R1 R1 K7
+ 0x90022A01, // 000D SETMBR R0 K21 R1
+ 0x88040115, // 000E GETMBR R1 R0 K21
+ 0x8C04031A, // 000F GETMET R1 R1 K26
0x7C040200, // 0010 CALL R1 1
- 0x90020C01, // 0011 SETMBR R0 K6 R1
+ 0x90021C01, // 0011 SETMBR R0 K14 R1
0x80000000, // 0012 RET 0
})
)
@@ -8920,39 +8357,32 @@ be_local_closure(class_lvh_span_post_init, /* name */
/********************************************************************
** Solidified function: set_text_font
********************************************************************/
-extern const bclass be_class_lvh_span;
be_local_closure(class_lvh_span_set_text_font, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_span,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(parse_font),
- /* K1 */ be_nested_str_weak(_style),
- /* K2 */ be_nested_str_weak(set_text_font),
- /* K3 */ be_nested_str_weak(_parent_lvh),
- /* K4 */ be_nested_str_weak(refr_mode),
- }),
+ &be_ktab_class_lvh_span, /* shared constants */
be_str_weak(set_text_font),
&be_const_str_solidified,
( &(const binstruction[14]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C08011B, // 0000 GETMET R2 R0 K27
0x5C100200, // 0001 MOVE R4 R1
0x7C080400, // 0002 CALL R2 2
0x4C0C0000, // 0003 LDNIL R3
0x200C0403, // 0004 NE R3 R2 R3
0x780E0006, // 0005 JMPF R3 #000D
- 0x880C0101, // 0006 GETMBR R3 R0 K1
- 0x8C0C0702, // 0007 GETMET R3 R3 K2
+ 0x880C010E, // 0006 GETMBR R3 R0 K14
+ 0x8C0C071C, // 0007 GETMET R3 R3 K28
0x5C140400, // 0008 MOVE R5 R2
0x7C0C0400, // 0009 CALL R3 2
- 0x880C0103, // 000A GETMBR R3 R0 K3
- 0x8C0C0704, // 000B GETMET R3 R3 K4
+ 0x880C0111, // 000A GETMBR R3 R0 K17
+ 0x8C0C0712, // 000B GETMET R3 R3 K18
0x7C0C0200, // 000C CALL R3 1
0x80000000, // 000D RET 0
})
@@ -8964,26 +8394,22 @@ be_local_closure(class_lvh_span_set_text_font, /* name */
/********************************************************************
** Solidified function: set_text
********************************************************************/
-extern const bclass be_class_lvh_span;
be_local_closure(class_lvh_span_set_text, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_span,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_text),
- }),
+ &be_ktab_class_lvh_span, /* shared constants */
be_str_weak(set_text),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x88080115, // 0000 GETMBR R2 R0 K21
+ 0x8C08051D, // 0001 GETMET R2 R2 K29
0x60100008, // 0002 GETGBL R4 G8
0x5C140200, // 0003 MOVE R5 R1
0x7C100200, // 0004 CALL R4 1
@@ -9013,26 +8439,51 @@ be_local_class(lvh_span,
})),
be_str_weak(lvh_span)
);
+// compact class 'lvh_chart' ktab size: 24, total: 54 (saved 240 bytes)
+static const bvalue be_ktab_class_lvh_chart[24] = {
+ /* K0 */ be_nested_str_weak(_y_min),
+ /* K1 */ be_nested_str_weak(_lv_obj),
+ /* K2 */ be_nested_str_weak(set_next_value),
+ /* K3 */ be_nested_str_weak(_ser1),
+ /* K4 */ be_nested_str_weak(add_point2),
+ /* K5 */ be_nested_str_weak(set_range),
+ /* K6 */ be_nested_str_weak(lv),
+ /* K7 */ be_nested_str_weak(CHART_AXIS_PRIMARY_Y),
+ /* K8 */ be_nested_str_weak(_y_max),
+ /* K9 */ be_nested_str_weak(_ser2),
+ /* K10 */ be_nested_str_weak(set_series_color),
+ /* K11 */ be_const_int(0),
+ /* K12 */ be_nested_str_weak(_h_div),
+ /* K13 */ be_const_int(3),
+ /* K14 */ be_nested_str_weak(_v_div),
+ /* K15 */ be_nested_str_weak(set_update_mode),
+ /* K16 */ be_nested_str_weak(CHART_UPDATE_MODE_SHIFT),
+ /* K17 */ be_nested_str_weak(add_series),
+ /* K18 */ be_nested_str_weak(color),
+ /* K19 */ be_const_int(15615044),
+ /* K20 */ be_const_int(4517444),
+ /* K21 */ be_nested_str_weak(_val),
+ /* K22 */ be_nested_str_weak(add_point),
+ /* K23 */ be_nested_str_weak(set_div_line_count),
+};
+
extern const bclass be_class_lvh_chart;
/********************************************************************
** Solidified function: get_y_min
********************************************************************/
-extern const bclass be_class_lvh_chart;
be_local_closure(class_lvh_chart_get_y_min, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_chart,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_y_min),
- }),
+ &be_ktab_class_lvh_chart, /* shared constants */
be_str_weak(get_y_min),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
@@ -9047,28 +8498,23 @@ be_local_closure(class_lvh_chart_get_y_min, /* name */
/********************************************************************
** Solidified function: add_point
********************************************************************/
-extern const bclass be_class_lvh_chart;
be_local_closure(class_lvh_chart_add_point, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_chart,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_next_value),
- /* K2 */ be_nested_str_weak(_ser1),
- }),
+ &be_ktab_class_lvh_chart, /* shared constants */
be_str_weak(add_point),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x88100102, // 0002 GETMBR R4 R0 K2
+ 0x88080101, // 0000 GETMBR R2 R0 K1
+ 0x8C080502, // 0001 GETMET R2 R2 K2
+ 0x88100103, // 0002 GETMBR R4 R0 K3
0x5C140200, // 0003 MOVE R5 R1
0x7C080600, // 0004 CALL R2 3
0x80000000, // 0005 RET 0
@@ -9081,24 +8527,21 @@ be_local_closure(class_lvh_chart_add_point, /* name */
/********************************************************************
** Solidified function: set_val2
********************************************************************/
-extern const bclass be_class_lvh_chart;
be_local_closure(class_lvh_chart_set_val2, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_chart,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(add_point2),
- }),
+ &be_ktab_class_lvh_chart, /* shared constants */
be_str_weak(set_val2),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
+ 0x8C080104, // 0000 GETMET R2 R0 K4
0x5C100200, // 0001 MOVE R4 R1
0x7C080400, // 0002 CALL R2 2
0x80000000, // 0003 RET 0
@@ -9111,35 +8554,27 @@ be_local_closure(class_lvh_chart_set_val2, /* name */
/********************************************************************
** Solidified function: set_y_min
********************************************************************/
-extern const bclass be_class_lvh_chart;
be_local_closure(class_lvh_chart_set_y_min, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_chart,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(_y_min),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(set_range),
- /* K3 */ be_nested_str_weak(lv),
- /* K4 */ be_nested_str_weak(CHART_AXIS_PRIMARY_Y),
- /* K5 */ be_nested_str_weak(_y_max),
- }),
+ &be_ktab_class_lvh_chart, /* shared constants */
be_str_weak(set_y_min),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
0x90020001, // 0000 SETMBR R0 K0 R1
0x88080101, // 0001 GETMBR R2 R0 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
- 0xB8120600, // 0003 GETNGBL R4 K3
- 0x88100904, // 0004 GETMBR R4 R4 K4
+ 0x8C080505, // 0002 GETMET R2 R2 K5
+ 0xB8120C00, // 0003 GETNGBL R4 K6
+ 0x88100907, // 0004 GETMBR R4 R4 K7
0x88140100, // 0005 GETMBR R5 R0 K0
- 0x88180105, // 0006 GETMBR R6 R0 K5
+ 0x88180108, // 0006 GETMBR R6 R0 K8
0x7C080800, // 0007 CALL R2 4
0x80000000, // 0008 RET 0
})
@@ -9151,28 +8586,23 @@ be_local_closure(class_lvh_chart_set_y_min, /* name */
/********************************************************************
** Solidified function: add_point2
********************************************************************/
-extern const bclass be_class_lvh_chart;
be_local_closure(class_lvh_chart_add_point2, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_chart,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_next_value),
- /* K2 */ be_nested_str_weak(_ser2),
- }),
+ &be_ktab_class_lvh_chart, /* shared constants */
be_str_weak(add_point2),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x88100102, // 0002 GETMBR R4 R0 K2
+ 0x88080101, // 0000 GETMBR R2 R0 K1
+ 0x8C080502, // 0001 GETMET R2 R2 K2
+ 0x88100109, // 0002 GETMBR R4 R0 K9
0x5C140200, // 0003 MOVE R5 R1
0x7C080600, // 0004 CALL R2 3
0x80000000, // 0005 RET 0
@@ -9185,28 +8615,23 @@ be_local_closure(class_lvh_chart_add_point2, /* name */
/********************************************************************
** Solidified function: set_series1_color
********************************************************************/
-extern const bclass be_class_lvh_chart;
be_local_closure(class_lvh_chart_set_series1_color, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_chart,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_series_color),
- /* K2 */ be_nested_str_weak(_ser1),
- }),
+ &be_ktab_class_lvh_chart, /* shared constants */
be_str_weak(set_series1_color),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x88100102, // 0002 GETMBR R4 R0 K2
+ 0x88080101, // 0000 GETMBR R2 R0 K1
+ 0x8C08050A, // 0001 GETMET R2 R2 K10
+ 0x88100103, // 0002 GETMBR R4 R0 K3
0x5C140200, // 0003 MOVE R5 R1
0x7C080600, // 0004 CALL R2 3
0x80000000, // 0005 RET 0
@@ -9219,28 +8644,23 @@ be_local_closure(class_lvh_chart_set_series1_color, /* name */
/********************************************************************
** Solidified function: set_series2_color
********************************************************************/
-extern const bclass be_class_lvh_chart;
be_local_closure(class_lvh_chart_set_series2_color, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_chart,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_obj),
- /* K1 */ be_nested_str_weak(set_series_color),
- /* K2 */ be_nested_str_weak(_ser2),
- }),
+ &be_ktab_class_lvh_chart, /* shared constants */
be_str_weak(set_series2_color),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
- 0x88100102, // 0002 GETMBR R4 R0 K2
+ 0x88080101, // 0000 GETMBR R2 R0 K1
+ 0x8C08050A, // 0001 GETMET R2 R2 K10
+ 0x88100109, // 0002 GETMBR R4 R0 K9
0x5C140200, // 0003 MOVE R5 R1
0x7C080600, // 0004 CALL R2 3
0x80000000, // 0005 RET 0
@@ -9253,35 +8673,27 @@ be_local_closure(class_lvh_chart_set_series2_color, /* name */
/********************************************************************
** Solidified function: set_y_max
********************************************************************/
-extern const bclass be_class_lvh_chart;
be_local_closure(class_lvh_chart_set_y_max, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_chart,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_nested_str_weak(_y_max),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(set_range),
- /* K3 */ be_nested_str_weak(lv),
- /* K4 */ be_nested_str_weak(CHART_AXIS_PRIMARY_Y),
- /* K5 */ be_nested_str_weak(_y_min),
- }),
+ &be_ktab_class_lvh_chart, /* shared constants */
be_str_weak(set_y_max),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90021001, // 0000 SETMBR R0 K8 R1
0x88080101, // 0001 GETMBR R2 R0 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
- 0xB8120600, // 0003 GETNGBL R4 K3
- 0x88100904, // 0004 GETMBR R4 R4 K4
- 0x88140105, // 0005 GETMBR R5 R0 K5
- 0x88180100, // 0006 GETMBR R6 R0 K0
+ 0x8C080505, // 0002 GETMET R2 R2 K5
+ 0xB8120C00, // 0003 GETNGBL R4 K6
+ 0x88100907, // 0004 GETMBR R4 R4 K7
+ 0x88140100, // 0005 GETMBR R5 R0 K0
+ 0x88180108, // 0006 GETMBR R6 R0 K8
0x7C080800, // 0007 CALL R2 4
0x80000000, // 0008 RET 0
})
@@ -9293,70 +8705,51 @@ be_local_closure(class_lvh_chart_set_y_max, /* name */
/********************************************************************
** Solidified function: post_init
********************************************************************/
-extern const bclass be_class_lvh_chart;
be_local_closure(class_lvh_chart_post_init, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_chart,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[17]) { /* constants */
- /* K0 */ be_nested_str_weak(_y_min),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str_weak(_y_max),
- /* K3 */ be_nested_str_weak(_h_div),
- /* K4 */ be_const_int(3),
- /* K5 */ be_nested_str_weak(_v_div),
- /* K6 */ be_nested_str_weak(_lv_obj),
- /* K7 */ be_nested_str_weak(set_update_mode),
- /* K8 */ be_nested_str_weak(lv),
- /* K9 */ be_nested_str_weak(CHART_UPDATE_MODE_SHIFT),
- /* K10 */ be_nested_str_weak(_ser1),
- /* K11 */ be_nested_str_weak(add_series),
- /* K12 */ be_nested_str_weak(color),
- /* K13 */ be_const_int(15615044),
- /* K14 */ be_nested_str_weak(CHART_AXIS_PRIMARY_Y),
- /* K15 */ be_nested_str_weak(_ser2),
- /* K16 */ be_const_int(4517444),
- }),
+ &be_ktab_class_lvh_chart, /* shared constants */
be_str_weak(post_init),
&be_const_str_solidified,
( &(const binstruction[32]) { /* code */
- 0x90020101, // 0000 SETMBR R0 K0 K1
+ 0x9002010B, // 0000 SETMBR R0 K0 K11
0x54060063, // 0001 LDINT R1 100
- 0x90020401, // 0002 SETMBR R0 K2 R1
- 0x90020704, // 0003 SETMBR R0 K3 K4
+ 0x90021001, // 0002 SETMBR R0 K8 R1
+ 0x9002190D, // 0003 SETMBR R0 K12 K13
0x54060004, // 0004 LDINT R1 5
- 0x90020A01, // 0005 SETMBR R0 K5 R1
- 0x88040106, // 0006 GETMBR R1 R0 K6
- 0x8C040307, // 0007 GETMET R1 R1 K7
- 0xB80E1000, // 0008 GETNGBL R3 K8
- 0x880C0709, // 0009 GETMBR R3 R3 K9
+ 0x90021C01, // 0005 SETMBR R0 K14 R1
+ 0x88040101, // 0006 GETMBR R1 R0 K1
+ 0x8C04030F, // 0007 GETMET R1 R1 K15
+ 0xB80E0C00, // 0008 GETNGBL R3 K6
+ 0x880C0710, // 0009 GETMBR R3 R3 K16
0x7C040400, // 000A CALL R1 2
- 0x88040106, // 000B GETMBR R1 R0 K6
- 0x8C04030B, // 000C GETMET R1 R1 K11
- 0xB80E1000, // 000D GETNGBL R3 K8
- 0x8C0C070C, // 000E GETMET R3 R3 K12
- 0x5814000D, // 000F LDCONST R5 K13
+ 0x88040101, // 000B GETMBR R1 R0 K1
+ 0x8C040311, // 000C GETMET R1 R1 K17
+ 0xB80E0C00, // 000D GETNGBL R3 K6
+ 0x8C0C0712, // 000E GETMET R3 R3 K18
+ 0x58140013, // 000F LDCONST R5 K19
0x7C0C0400, // 0010 CALL R3 2
- 0xB8121000, // 0011 GETNGBL R4 K8
- 0x8810090E, // 0012 GETMBR R4 R4 K14
+ 0xB8120C00, // 0011 GETNGBL R4 K6
+ 0x88100907, // 0012 GETMBR R4 R4 K7
0x7C040600, // 0013 CALL R1 3
- 0x90021401, // 0014 SETMBR R0 K10 R1
- 0x88040106, // 0015 GETMBR R1 R0 K6
- 0x8C04030B, // 0016 GETMET R1 R1 K11
- 0xB80E1000, // 0017 GETNGBL R3 K8
- 0x8C0C070C, // 0018 GETMET R3 R3 K12
- 0x58140010, // 0019 LDCONST R5 K16
+ 0x90020601, // 0014 SETMBR R0 K3 R1
+ 0x88040101, // 0015 GETMBR R1 R0 K1
+ 0x8C040311, // 0016 GETMET R1 R1 K17
+ 0xB80E0C00, // 0017 GETNGBL R3 K6
+ 0x8C0C0712, // 0018 GETMET R3 R3 K18
+ 0x58140014, // 0019 LDCONST R5 K20
0x7C0C0400, // 001A CALL R3 2
- 0xB8121000, // 001B GETNGBL R4 K8
- 0x8810090E, // 001C GETMBR R4 R4 K14
+ 0xB8120C00, // 001B GETNGBL R4 K6
+ 0x88100907, // 001C GETMBR R4 R4 K7
0x7C040600, // 001D CALL R1 3
- 0x90021E01, // 001E SETMBR R0 K15 R1
+ 0x90021201, // 001E SETMBR R0 K9 R1
0x80000000, // 001F RET 0
})
)
@@ -9367,24 +8760,21 @@ be_local_closure(class_lvh_chart_post_init, /* name */
/********************************************************************
** Solidified function: get_y_max
********************************************************************/
-extern const bclass be_class_lvh_chart;
be_local_closure(class_lvh_chart_get_y_max, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_chart,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_y_max),
- }),
+ &be_ktab_class_lvh_chart, /* shared constants */
be_str_weak(get_y_max),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040108, // 0000 GETMBR R1 R0 K8
0x80040200, // 0001 RET 1 R1
})
)
@@ -9395,26 +8785,22 @@ be_local_closure(class_lvh_chart_get_y_max, /* name */
/********************************************************************
** Solidified function: set_val
********************************************************************/
-extern const bclass be_class_lvh_chart;
be_local_closure(class_lvh_chart_set_val, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_chart,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_val),
- /* K1 */ be_nested_str_weak(add_point),
- }),
+ &be_ktab_class_lvh_chart, /* shared constants */
be_str_weak(set_val),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
- 0x8C080101, // 0001 GETMET R2 R0 K1
+ 0x90022A01, // 0000 SETMBR R0 K21 R1
+ 0x8C080116, // 0001 GETMET R2 R0 K22
0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
0x80000000, // 0004 RET 0
@@ -9427,31 +8813,25 @@ be_local_closure(class_lvh_chart_set_val, /* name */
/********************************************************************
** Solidified function: set_v_div_line_count
********************************************************************/
-extern const bclass be_class_lvh_chart;
be_local_closure(class_lvh_chart_set_v_div_line_count, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_chart,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_v_div),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(set_div_line_count),
- /* K3 */ be_nested_str_weak(_h_div),
- }),
+ &be_ktab_class_lvh_chart, /* shared constants */
be_str_weak(set_v_div_line_count),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90021C01, // 0000 SETMBR R0 K14 R1
0x88080101, // 0001 GETMBR R2 R0 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
- 0x88100103, // 0003 GETMBR R4 R0 K3
- 0x88140100, // 0004 GETMBR R5 R0 K0
+ 0x8C080517, // 0002 GETMET R2 R2 K23
+ 0x8810010C, // 0003 GETMBR R4 R0 K12
+ 0x8814010E, // 0004 GETMBR R5 R0 K14
0x7C080600, // 0005 CALL R2 3
0x80000000, // 0006 RET 0
})
@@ -9463,31 +8843,25 @@ be_local_closure(class_lvh_chart_set_v_div_line_count, /* name */
/********************************************************************
** Solidified function: set_h_div_line_count
********************************************************************/
-extern const bclass be_class_lvh_chart;
be_local_closure(class_lvh_chart_set_h_div_line_count, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_chart,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(_h_div),
- /* K1 */ be_nested_str_weak(_lv_obj),
- /* K2 */ be_nested_str_weak(set_div_line_count),
- /* K3 */ be_nested_str_weak(_v_div),
- }),
+ &be_ktab_class_lvh_chart, /* shared constants */
be_str_weak(set_h_div_line_count),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
- 0x90020001, // 0000 SETMBR R0 K0 R1
+ 0x90021801, // 0000 SETMBR R0 K12 R1
0x88080101, // 0001 GETMBR R2 R0 K1
- 0x8C080502, // 0002 GETMET R2 R2 K2
- 0x88100100, // 0003 GETMBR R4 R0 K0
- 0x88140103, // 0004 GETMBR R5 R0 K3
+ 0x8C080517, // 0002 GETMET R2 R2 K23
+ 0x8810010C, // 0003 GETMBR R4 R0 K12
+ 0x8814010E, // 0004 GETMBR R5 R0 K14
0x7C080600, // 0005 CALL R2 3
0x80000000, // 0006 RET 0
})
@@ -9528,35 +8902,37 @@ be_local_class(lvh_chart,
})),
be_str_weak(lvh_chart)
);
+// compact class 'lvh_btnmatrix' ktab size: 10, total: 11 (saved 8 bytes)
+static const bvalue be_ktab_class_lvh_btnmatrix[10] = {
+ /* K0 */ be_const_int(0),
+ /* K1 */ be_nested_str_weak(push),
+ /* K2 */ be_nested_str_weak(),
+ /* K3 */ be_nested_str_weak(_options),
+ /* K4 */ be_nested_str_weak(_options_arr),
+ /* K5 */ be_nested_str_weak(lv),
+ /* K6 */ be_nested_str_weak(str_arr),
+ /* K7 */ be_nested_str_weak(_lv_obj),
+ /* K8 */ be_nested_str_weak(set_map),
+ /* K9 */ be_nested_str_weak(HTP_X3A_X20_X27btnmatrix_X27_X20needs_X20_X27options_X27_X20to_X20be_X20a_X20list_X20of_X20strings),
+};
+
extern const bclass be_class_lvh_btnmatrix;
/********************************************************************
** Solidified function: set_options
********************************************************************/
-extern const bclass be_class_lvh_btnmatrix;
be_local_closure(class_lvh_btnmatrix_set_options, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_btnmatrix,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[10]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(push),
- /* K2 */ be_nested_str_weak(),
- /* K3 */ be_nested_str_weak(_options),
- /* K4 */ be_nested_str_weak(_options_arr),
- /* K5 */ be_nested_str_weak(lv),
- /* K6 */ be_nested_str_weak(str_arr),
- /* K7 */ be_nested_str_weak(_lv_obj),
- /* K8 */ be_nested_str_weak(set_map),
- /* K9 */ be_nested_str_weak(HTP_X3A_X20_X27btnmatrix_X27_X20needs_X20_X27options_X27_X20to_X20be_X20a_X20list_X20of_X20strings),
- }),
+ &be_ktab_class_lvh_btnmatrix, /* shared constants */
be_str_weak(set_options),
&be_const_str_solidified,
( &(const binstruction[34]) { /* code */
@@ -9603,24 +8979,21 @@ be_local_closure(class_lvh_btnmatrix_set_options, /* name */
/********************************************************************
** Solidified function: get_options
********************************************************************/
-extern const bclass be_class_lvh_btnmatrix;
be_local_closure(class_lvh_btnmatrix_get_options, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_btnmatrix,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_options),
- }),
+ &be_ktab_class_lvh_btnmatrix, /* shared constants */
be_str_weak(get_options),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040103, // 0000 GETMBR R1 R0 K3
0x80040200, // 0001 RET 1 R1
})
)
@@ -9693,41 +9066,58 @@ be_local_class(lvh_scr,
})),
be_str_weak(lvh_scr)
);
+// compact class 'lvh_page' ktab size: 31, total: 50 (saved 152 bytes)
+static const bvalue be_ktab_class_lvh_page[31] = {
+ /* K0 */ be_nested_str_weak(global),
+ /* K1 */ be_nested_str_weak(_oh),
+ /* K2 */ be_const_int(1),
+ /* K3 */ be_nested_str_weak(_page_id),
+ /* K4 */ be_nested_str_weak(_obj_id),
+ /* K5 */ be_nested_str_weak(_lv_scr),
+ /* K6 */ be_nested_str_weak(lv),
+ /* K7 */ be_nested_str_weak(scr_act),
+ /* K8 */ be_const_int(0),
+ /* K9 */ be_nested_str_weak(layer_top),
+ /* K10 */ be_nested_str_weak(obj),
+ /* K11 */ be_nested_str_weak(get_style_bg_color),
+ /* K12 */ be_nested_str_weak(set_style_bg_color),
+ /* K13 */ be_nested_str_weak(lvh_scr),
+ /* K14 */ be_nested_str_weak(p),
+ /* K15 */ be_nested_str_weak(b0),
+ /* K16 */ be_nested_str_weak(_p),
+ /* K17 */ be_nested_str_weak(page_dir_to),
+ /* K18 */ be_nested_str_weak(id),
+ /* K19 */ be_nested_str_weak(_X7B_X22hasp_X22_X3A_X7B_X22p_X25i_X22_X3A_X22out_X22_X7D_X7D),
+ /* K20 */ be_nested_str_weak(lvh_page_cur_idx),
+ /* K21 */ be_nested_str_weak(tasmota),
+ /* K22 */ be_nested_str_weak(set_timer),
+ /* K23 */ be_nested_str_weak(_X7B_X22hasp_X22_X3A_X7B_X22p_X25i_X22_X3A_X22in_X22_X7D_X7D),
+ /* K24 */ be_nested_str_weak(show_anim),
+ /* K25 */ be_nested_str_weak(find),
+ /* K26 */ be_nested_str_weak(SCR_LOAD_ANIM_NONE),
+ /* K27 */ be_nested_str_weak(screen_load_anim),
+ /* K28 */ be_nested_str_weak(p_X25ib_X25i),
+ /* K29 */ be_nested_str_weak(_page),
+ /* K30 */ be_nested_str_weak(remove),
+};
+
extern const bclass be_class_lvh_page;
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_lvh_page;
be_local_closure(class_lvh_page_init, /* name */
be_nested_proto(
10, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_page,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[16]) { /* constants */
- /* K0 */ be_nested_str_weak(global),
- /* K1 */ be_nested_str_weak(_oh),
- /* K2 */ be_const_int(1),
- /* K3 */ be_nested_str_weak(_page_id),
- /* K4 */ be_nested_str_weak(_obj_id),
- /* K5 */ be_nested_str_weak(_lv_scr),
- /* K6 */ be_nested_str_weak(lv),
- /* K7 */ be_nested_str_weak(scr_act),
- /* K8 */ be_const_int(0),
- /* K9 */ be_nested_str_weak(layer_top),
- /* K10 */ be_nested_str_weak(obj),
- /* K11 */ be_nested_str_weak(get_style_bg_color),
- /* K12 */ be_nested_str_weak(set_style_bg_color),
- /* K13 */ be_nested_str_weak(lvh_scr),
- /* K14 */ be_nested_str_weak(p),
- /* K15 */ be_nested_str_weak(b0),
- }),
+ &be_ktab_class_lvh_page, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[66]) { /* code */
@@ -9806,16 +9196,15 @@ be_local_closure(class_lvh_page_init, /* name */
/********************************************************************
** Solidified function: show
********************************************************************/
-extern const bclass be_class_lvh_page;
be_local_closure(class_lvh_page_show, /* name */
be_nested_proto(
13, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 3]) {
+ ( &(const struct bproto*[ 2]) {
be_nested_proto(
3, /* nstack */
0, /* argc */
@@ -9825,7 +9214,7 @@ be_local_closure(class_lvh_page_show, /* name */
be_local_const_upval(1, 3),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(tasmota),
@@ -9850,7 +9239,7 @@ be_local_closure(class_lvh_page_show, /* name */
be_local_const_upval(1, 4),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(tasmota),
@@ -9866,44 +9255,24 @@ be_local_closure(class_lvh_page_show, /* name */
0x80040000, // 0004 RET 1 R0
})
),
- &be_class_lvh_page,
}),
1, /* has constants */
- ( &(const bvalue[18]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_scr),
- /* K1 */ be_nested_str_weak(_p),
- /* K2 */ be_nested_str_weak(lv),
- /* K3 */ be_nested_str_weak(scr_act),
- /* K4 */ be_nested_str_weak(_oh),
- /* K5 */ be_nested_str_weak(page_dir_to),
- /* K6 */ be_nested_str_weak(id),
- /* K7 */ be_nested_str_weak(_X7B_X22hasp_X22_X3A_X7B_X22p_X25i_X22_X3A_X22out_X22_X7D_X7D),
- /* K8 */ be_nested_str_weak(lvh_page_cur_idx),
- /* K9 */ be_nested_str_weak(tasmota),
- /* K10 */ be_nested_str_weak(set_timer),
- /* K11 */ be_const_int(0),
- /* K12 */ be_nested_str_weak(_X7B_X22hasp_X22_X3A_X7B_X22p_X25i_X22_X3A_X22in_X22_X7D_X7D),
- /* K13 */ be_nested_str_weak(_page_id),
- /* K14 */ be_nested_str_weak(show_anim),
- /* K15 */ be_nested_str_weak(find),
- /* K16 */ be_nested_str_weak(SCR_LOAD_ANIM_NONE),
- /* K17 */ be_nested_str_weak(screen_load_anim),
- }),
+ &be_ktab_class_lvh_page, /* shared constants */
be_str_weak(show),
&be_const_str_solidified,
( &(const binstruction[66]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
+ 0x880C0105, // 0000 GETMBR R3 R0 K5
0x4C100000, // 0001 LDNIL R4
0x1C0C0604, // 0002 EQ R3 R3 R4
0x780E0001, // 0003 JMPF R3 #0006
0x4C0C0000, // 0004 LDNIL R3
0x80040600, // 0005 RET 1 R3
- 0x880C0100, // 0006 GETMBR R3 R0 K0
- 0x880C0701, // 0007 GETMBR R3 R3 K1
- 0xB8120400, // 0008 GETNGBL R4 K2
- 0x8C100903, // 0009 GETMET R4 R4 K3
+ 0x880C0105, // 0006 GETMBR R3 R0 K5
+ 0x880C0710, // 0007 GETMBR R3 R3 K16
+ 0xB8120C00, // 0008 GETNGBL R4 K6
+ 0x8C100907, // 0009 GETMET R4 R4 K7
0x7C100200, // 000A CALL R4 1
- 0x88100901, // 000B GETMBR R4 R4 K1
+ 0x88100910, // 000B GETMBR R4 R4 K16
0x1C0C0604, // 000C EQ R3 R3 R4
0x780E0000, // 000D JMPF R3 #000F
0x80000600, // 000E RET 0
@@ -9914,46 +9283,46 @@ be_local_closure(class_lvh_page_show, /* name */
0x4C0C0000, // 0013 LDNIL R3
0x1C0C0203, // 0014 EQ R3 R1 R3
0x780E0005, // 0015 JMPF R3 #001C
- 0x880C0104, // 0016 GETMBR R3 R0 K4
- 0x8C0C0705, // 0017 GETMET R3 R3 K5
- 0x8C140106, // 0018 GETMET R5 R0 K6
+ 0x880C0101, // 0016 GETMBR R3 R0 K1
+ 0x8C0C0711, // 0017 GETMET R3 R3 K17
+ 0x8C140112, // 0018 GETMET R5 R0 K18
0x7C140200, // 0019 CALL R5 1
0x7C0C0400, // 001A CALL R3 2
0x5C040600, // 001B MOVE R1 R3
0x600C0018, // 001C GETGBL R3 G24
- 0x58100007, // 001D LDCONST R4 K7
- 0x88140104, // 001E GETMBR R5 R0 K4
- 0x88140B08, // 001F GETMBR R5 R5 K8
+ 0x58100013, // 001D LDCONST R4 K19
+ 0x88140101, // 001E GETMBR R5 R0 K1
+ 0x88140B14, // 001F GETMBR R5 R5 K20
0x7C0C0400, // 0020 CALL R3 2
- 0xB8121200, // 0021 GETNGBL R4 K9
- 0x8C10090A, // 0022 GETMET R4 R4 K10
- 0x5818000B, // 0023 LDCONST R6 K11
+ 0xB8122A00, // 0021 GETNGBL R4 K21
+ 0x8C100916, // 0022 GETMET R4 R4 K22
+ 0x58180008, // 0023 LDCONST R6 K8
0x841C0000, // 0024 CLOSURE R7 P0
0x7C100600, // 0025 CALL R4 3
0x60100018, // 0026 GETGBL R4 G24
- 0x5814000C, // 0027 LDCONST R5 K12
- 0x8818010D, // 0028 GETMBR R6 R0 K13
+ 0x58140017, // 0027 LDCONST R5 K23
+ 0x88180103, // 0028 GETMBR R6 R0 K3
0x7C100400, // 0029 CALL R4 2
- 0xB8161200, // 002A GETNGBL R5 K9
- 0x8C140B0A, // 002B GETMET R5 R5 K10
- 0x581C000B, // 002C LDCONST R7 K11
+ 0xB8162A00, // 002A GETNGBL R5 K21
+ 0x8C140B16, // 002B GETMET R5 R5 K22
+ 0x581C0008, // 002C LDCONST R7 K8
0x84200001, // 002D CLOSURE R8 P1
0x7C140600, // 002E CALL R5 3
- 0x88140104, // 002F GETMBR R5 R0 K4
- 0x8818010D, // 0030 GETMBR R6 R0 K13
- 0x90161006, // 0031 SETMBR R5 K8 R6
- 0x8814010E, // 0032 GETMBR R5 R0 K14
- 0x8C140B0F, // 0033 GETMET R5 R5 K15
+ 0x88140101, // 002F GETMBR R5 R0 K1
+ 0x88180103, // 0030 GETMBR R6 R0 K3
+ 0x90162806, // 0031 SETMBR R5 K20 R6
+ 0x88140118, // 0032 GETMBR R5 R0 K24
+ 0x8C140B19, // 0033 GETMET R5 R5 K25
0x5C1C0200, // 0034 MOVE R7 R1
- 0xB8220400, // 0035 GETNGBL R8 K2
- 0x88201110, // 0036 GETMBR R8 R8 K16
+ 0xB8220C00, // 0035 GETNGBL R8 K6
+ 0x8820111A, // 0036 GETMBR R8 R8 K26
0x7C140600, // 0037 CALL R5 3
- 0xB81A0400, // 0038 GETNGBL R6 K2
- 0x8C180D11, // 0039 GETMET R6 R6 K17
- 0x88200100, // 003A GETMBR R8 R0 K0
+ 0xB81A0C00, // 0038 GETNGBL R6 K6
+ 0x8C180D1B, // 0039 GETMET R6 R6 K27
+ 0x88200105, // 003A GETMBR R8 R0 K5
0x5C240A00, // 003B MOVE R9 R5
0x5C280400, // 003C MOVE R10 R2
- 0x582C000B, // 003D LDCONST R11 K11
+ 0x582C0008, // 003D LDCONST R11 K8
0x50300000, // 003E LDBOOL R12 0 0
0x7C180C00, // 003F CALL R6 6
0xA0000000, // 0040 CLOSE R0
@@ -9967,24 +9336,21 @@ be_local_closure(class_lvh_page_show, /* name */
/********************************************************************
** Solidified function: id
********************************************************************/
-extern const bclass be_class_lvh_page;
be_local_closure(class_lvh_page_id, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_page,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_page_id),
- }),
+ &be_ktab_class_lvh_page, /* shared constants */
be_str_weak(id),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040103, // 0000 GETMBR R1 R0 K3
0x80040200, // 0001 RET 1 R1
})
)
@@ -9995,24 +9361,21 @@ be_local_closure(class_lvh_page_id, /* name */
/********************************************************************
** Solidified function: get_scr
********************************************************************/
-extern const bclass be_class_lvh_page;
be_local_closure(class_lvh_page_get_scr, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_page,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 1]) { /* constants */
- /* K0 */ be_nested_str_weak(_lv_scr),
- }),
+ &be_ktab_class_lvh_page, /* shared constants */
be_str_weak(get_scr),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
+ 0x88040105, // 0000 GETMBR R1 R0 K5
0x80040200, // 0001 RET 1 R1
})
)
@@ -10023,26 +9386,22 @@ be_local_closure(class_lvh_page_get_scr, /* name */
/********************************************************************
** Solidified function: get_obj
********************************************************************/
-extern const bclass be_class_lvh_page;
be_local_closure(class_lvh_page_get_obj, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_page,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(_obj_id),
- /* K1 */ be_nested_str_weak(find),
- }),
+ &be_ktab_class_lvh_page, /* shared constants */
be_str_weak(get_obj),
&be_const_str_solidified,
( &(const binstruction[ 5]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x88080104, // 0000 GETMBR R2 R0 K4
+ 0x8C080519, // 0001 GETMET R2 R2 K25
0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
0x80040400, // 0004 RET 1 R2
@@ -10055,37 +9414,30 @@ be_local_closure(class_lvh_page_get_obj, /* name */
/********************************************************************
** Solidified function: add_obj
********************************************************************/
-extern const bclass be_class_lvh_page;
be_local_closure(class_lvh_page_add_obj, /* name */
be_nested_proto(
7, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_page,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(_obj_id),
- /* K1 */ be_nested_str_weak(p_X25ib_X25i),
- /* K2 */ be_nested_str_weak(_page),
- /* K3 */ be_nested_str_weak(id),
- /* K4 */ be_nested_str_weak(global),
- }),
+ &be_ktab_class_lvh_page, /* shared constants */
be_str_weak(add_obj),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
- 0x880C0100, // 0000 GETMBR R3 R0 K0
+ 0x880C0104, // 0000 GETMBR R3 R0 K4
0x980C0202, // 0001 SETIDX R3 R1 R2
0x600C0018, // 0002 GETGBL R3 G24
- 0x58100001, // 0003 LDCONST R4 K1
- 0x88140502, // 0004 GETMBR R5 R2 K2
- 0x8C140B03, // 0005 GETMET R5 R5 K3
+ 0x5810001C, // 0003 LDCONST R4 K28
+ 0x8814051D, // 0004 GETMBR R5 R2 K29
+ 0x8C140B12, // 0005 GETMET R5 R5 K18
0x7C140200, // 0006 CALL R5 1
0x5C180200, // 0007 MOVE R6 R1
0x7C0C0600, // 0008 CALL R3 3
- 0xB8120800, // 0009 GETNGBL R4 K4
+ 0xB8120000, // 0009 GETNGBL R4 K0
0x90100602, // 000A SETMBR R4 R3 R2
0x80000000, // 000B RET 0
})
@@ -10097,46 +9449,37 @@ be_local_closure(class_lvh_page_add_obj, /* name */
/********************************************************************
** Solidified function: remove_obj
********************************************************************/
-extern const bclass be_class_lvh_page;
be_local_closure(class_lvh_page_remove_obj, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_lvh_page,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(_obj_id),
- /* K1 */ be_nested_str_weak(find),
- /* K2 */ be_nested_str_weak(remove),
- /* K3 */ be_nested_str_weak(p_X25ib_X25i),
- /* K4 */ be_nested_str_weak(_page),
- /* K5 */ be_nested_str_weak(id),
- /* K6 */ be_nested_str_weak(global),
- }),
+ &be_ktab_class_lvh_page, /* shared constants */
be_str_weak(remove_obj),
&be_const_str_solidified,
( &(const binstruction[20]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x8C080501, // 0001 GETMET R2 R2 K1
+ 0x88080104, // 0000 GETMBR R2 R0 K4
+ 0x8C080519, // 0001 GETMET R2 R2 K25
0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
- 0x880C0100, // 0004 GETMBR R3 R0 K0
- 0x8C0C0702, // 0005 GETMET R3 R3 K2
+ 0x880C0104, // 0004 GETMBR R3 R0 K4
+ 0x8C0C071E, // 0005 GETMET R3 R3 K30
0x5C140200, // 0006 MOVE R5 R1
0x7C0C0400, // 0007 CALL R3 2
0x780A0009, // 0008 JMPF R2 #0013
0x600C0018, // 0009 GETGBL R3 G24
- 0x58100003, // 000A LDCONST R4 K3
- 0x88140504, // 000B GETMBR R5 R2 K4
- 0x8C140B05, // 000C GETMET R5 R5 K5
+ 0x5810001C, // 000A LDCONST R4 K28
+ 0x8814051D, // 000B GETMBR R5 R2 K29
+ 0x8C140B12, // 000C GETMET R5 R5 K18
0x7C140200, // 000D CALL R5 1
0x5C180200, // 000E MOVE R6 R1
0x7C0C0600, // 000F CALL R3 3
- 0xB8120C00, // 0010 GETNGBL R4 K6
+ 0xB8120000, // 0010 GETNGBL R4 K0
0x4C140000, // 0011 LDNIL R5
0x90100605, // 0012 SETMBR R4 R3 R5
0x80000000, // 0013 RET 0
@@ -10180,51 +9523,147 @@ be_local_class(lvh_page,
})),
be_str_weak(lvh_page)
);
+extern const bclass be_class_HASPmota;
+// compact class 'HASPmota' ktab size: 119, total: 176 (saved 456 bytes)
+static const bvalue be_ktab_class_HASPmota[119] = {
+ /* K0 */ be_nested_str_weak(string),
+ /* K1 */ be_nested_str_weak(json),
+ /* K2 */ be_nested_str_weak(lvh_page_cur_idx),
+ /* K3 */ be_const_int(1),
+ /* K4 */ be_nested_str_weak(lvh_page),
+ /* K5 */ be_nested_str_weak(lvh_pages),
+ /* K6 */ be_nested_str_weak(r),
+ /* K7 */ be_nested_str_weak(read),
+ /* K8 */ be_nested_str_weak(close),
+ /* K9 */ be_nested_str_weak(split),
+ /* K10 */ be_nested_str_weak(_X0A),
+ /* K11 */ be_const_int(0),
+ /* K12 */ be_nested_str_weak(load),
+ /* K13 */ be_nested_str_weak(instance),
+ /* K14 */ be_nested_str_weak(tasmota),
+ /* K15 */ be_nested_str_weak(loglevel),
+ /* K16 */ be_nested_str_weak(log),
+ /* K17 */ be_nested_str_weak(HSP_X3A_X20parsing_X20line_X20_X27_X25s_X27),
+ /* K18 */ be_nested_str_weak(parse_page),
+ /* K19 */ be_nested_str_weak(parse_obj),
+ /* K20 */ be_nested_str_weak(tr),
+ /* K21 */ be_nested_str_weak(_X20_X09),
+ /* K22 */ be_nested_str_weak(),
+ /* K23 */ be_nested_str_weak(HSP_X3A_X20invalid_X20JSON_X20line_X20_X27_X25s_X27),
+ /* K24 */ be_const_int(2),
+ /* K25 */ be_nested_str_weak(remove),
+ /* K26 */ be_nested_str_weak(pages_list_sorted),
+ /* K27 */ be_nested_str_weak(prev),
+ /* K28 */ be_nested_str_weak(next),
+ /* K29 */ be_nested_str_weak(back),
+ /* K30 */ be_nested_str_weak(re_page_target),
+ /* K31 */ be_nested_str_weak(match),
+ /* K32 */ be_nested_str_weak(show),
+ /* K33 */ be_nested_str_weak(fix_lv_version),
+ /* K34 */ be_nested_str_weak(re),
+ /* K35 */ be_nested_str_weak(compile),
+ /* K36 */ be_nested_str_weak(p_X5Cd_X2B),
+ /* K37 */ be_nested_str_weak(introspect),
+ /* K38 */ be_nested_str_weak(toptr),
+ /* K39 */ be_nested_str_weak(event),
+ /* K40 */ be_nested_str_weak(_p),
+ /* K41 */ be_nested_str_weak(lv),
+ /* K42 */ be_nested_str_weak(lv_event),
+ /* K43 */ be_nested_str_weak(get_user_data),
+ /* K44 */ be_nested_str_weak(fromptr),
+ /* K45 */ be_nested_str_weak(event_cb),
+ /* K46 */ be_nested_str_weak(keys),
+ /* K47 */ be_nested_str_weak(push),
+ /* K48 */ be_nested_str_weak(stop_iteration),
+ /* K49 */ be_nested_str_weak(sort),
+ /* K50 */ be_nested_str_weak(find),
+ /* K51 */ be_const_class(be_class_HASPmota),
+ /* K52 */ be_nested_str_weak(get),
+ /* K53 */ be_nested_str_weak(version),
+ /* K54 */ be_nested_str_weak(int),
+ /* K55 */ be_nested_str_weak(EVENT_CLICKED),
+ /* K56 */ be_nested_str_weak(page_show),
+ /* K57 */ be_nested_str_weak(_action),
+ /* K58 */ be_nested_str_weak(value_error),
+ /* K59 */ be_nested_str_weak(unable_X20to_X20parse_X20JSON_X20line),
+ /* K60 */ be_nested_str_weak(cb),
+ /* K61 */ be_nested_str_weak(gen_cb),
+ /* K62 */ be_nested_str_weak(_lv_obj),
+ /* K63 */ be_nested_str_weak(add_event_cb),
+ /* K64 */ be_nested_str_weak(has),
+ /* K65 */ be_nested_str_weak(page),
+ /* K66 */ be_nested_str_weak(contains),
+ /* K67 */ be_nested_str_weak(id),
+ /* K68 */ be_nested_str_weak(get_page_cur),
+ /* K69 */ be_nested_str_weak(path),
+ /* K70 */ be_nested_str_weak(def_templ_name),
+ /* K71 */ be_nested_str_weak(exists),
+ /* K72 */ be_nested_str_weak(file_X20_X27),
+ /* K73 */ be_nested_str_weak(_X27_X20not_X20found),
+ /* K74 */ be_nested_str_weak(io_erorr),
+ /* K75 */ be_nested_str_weak(start),
+ /* K76 */ be_nested_str_weak(dark),
+ /* K77 */ be_nested_str_weak(hres),
+ /* K78 */ be_nested_str_weak(get_hor_res),
+ /* K79 */ be_nested_str_weak(vres),
+ /* K80 */ be_nested_str_weak(get_ver_res),
+ /* K81 */ be_nested_str_weak(scr),
+ /* K82 */ be_nested_str_weak(scr_act),
+ /* K83 */ be_nested_str_weak(r16),
+ /* K84 */ be_nested_str_weak(font_embedded),
+ /* K85 */ be_nested_str_weak(robotocondensed),
+ /* K86 */ be_nested_str_weak(montserrat),
+ /* K87 */ be_nested_str_weak(theme_haspmota_init),
+ /* K88 */ be_nested_str_weak(color),
+ /* K89 */ be_const_int(16711935),
+ /* K90 */ be_const_int(3158064),
+ /* K91 */ be_nested_str_weak(get_disp),
+ /* K92 */ be_nested_str_weak(set_theme),
+ /* K93 */ be_nested_str_weak(set_style_bg_color),
+ /* K94 */ be_const_int(16777215),
+ /* K95 */ be_nested_str_weak(theme_apply),
+ /* K96 */ be_nested_str_weak(layer_top),
+ /* K97 */ be_nested_str_weak(set_style_bg_opa),
+ /* K98 */ be_nested_str_weak(_load),
+ /* K99 */ be_nested_str_weak(global),
+ /* K100 */ be_nested_str_weak(obj),
+ /* K101 */ be_nested_str_weak(berry_run),
+ /* K102 */ be_nested_str_weak(nil),
+ /* K103 */ be_nested_str_weak(HSP_X3A_X20unable_X20to_X20compile_X20berry_X20code_X20_X22_X25s_X22_X20_X2D_X20_X27_X25s_X27_X20_X2D_X20_X25s),
+ /* K104 */ be_nested_str_weak(HSP_X3A_X20invalid_X20_X27id_X27_X3A_X20),
+ /* K105 */ be_nested_str_weak(_X20for_X20_X27obj_X27_X3A),
+ /* K106 */ be_nested_str_weak(parentid),
+ /* K107 */ be_nested_str_weak(get_obj),
+ /* K108 */ be_nested_str_weak(get_scr),
+ /* K109 */ be_nested_str_weak(lvh_),
+ /* K110 */ be_nested_str_weak(class),
+ /* K111 */ be_nested_str_weak(lvh_obj),
+ /* K112 */ be_nested_str_weak(module),
+ /* K113 */ be_nested_str_weak(HSP_X3A_X20Cannot_X20find_X20object_X20of_X20type_X20),
+ /* K114 */ be_nested_str_weak(add_obj),
+ /* K115 */ be_nested_str_weak(function),
+ /* K116 */ be_nested_str_weak(HSP_X3A_X20unable_X20to_X20run_X20berry_X20code_X20_X22_X25s_X22_X20_X2D_X20_X27_X25s_X27_X20_X2D_X20_X25s),
+ /* K117 */ be_nested_str_weak(HSP_X3A_X20cannot_X20specify_X20_X27obj_X27_X20for_X20_X27id_X27_X3A0),
+ /* K118 */ be_nested_str_weak(post_config),
+};
+
extern const bclass be_class_HASPmota;
/********************************************************************
** Solidified function: _load
********************************************************************/
-extern const bclass be_class_HASPmota;
be_local_closure(class_HASPmota__load, /* name */
be_nested_proto(
15, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_HASPmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[26]) { /* constants */
- /* K0 */ be_nested_str_weak(string),
- /* K1 */ be_nested_str_weak(json),
- /* K2 */ be_nested_str_weak(lvh_page_cur_idx),
- /* K3 */ be_const_int(1),
- /* K4 */ be_nested_str_weak(lvh_page),
- /* K5 */ be_nested_str_weak(lvh_pages),
- /* K6 */ be_nested_str_weak(r),
- /* K7 */ be_nested_str_weak(read),
- /* K8 */ be_nested_str_weak(close),
- /* K9 */ be_nested_str_weak(split),
- /* K10 */ be_nested_str_weak(_X0A),
- /* K11 */ be_const_int(0),
- /* K12 */ be_nested_str_weak(load),
- /* K13 */ be_nested_str_weak(instance),
- /* K14 */ be_nested_str_weak(tasmota),
- /* K15 */ be_nested_str_weak(loglevel),
- /* K16 */ be_nested_str_weak(log),
- /* K17 */ be_nested_str_weak(HSP_X3A_X20parsing_X20line_X20_X27_X25s_X27),
- /* K18 */ be_nested_str_weak(parse_page),
- /* K19 */ be_nested_str_weak(parse_obj),
- /* K20 */ be_nested_str_weak(tr),
- /* K21 */ be_nested_str_weak(_X20_X09),
- /* K22 */ be_nested_str_weak(),
- /* K23 */ be_nested_str_weak(HSP_X3A_X20invalid_X20JSON_X20line_X20_X27_X25s_X27),
- /* K24 */ be_const_int(2),
- /* K25 */ be_nested_str_weak(remove),
- }),
+ &be_ktab_class_HASPmota, /* shared constants */
be_str_weak(_load),
&be_const_str_solidified,
( &(const binstruction[85]) { /* code */
@@ -10322,39 +9761,26 @@ be_local_closure(class_HASPmota__load, /* name */
/********************************************************************
** Solidified function: page_show
********************************************************************/
-extern const bclass be_class_HASPmota;
be_local_closure(class_HASPmota_page_show, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_HASPmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(lvh_pages),
- /* K1 */ be_nested_str_weak(lvh_page_cur_idx),
- /* K2 */ be_nested_str_weak(pages_list_sorted),
- /* K3 */ be_const_int(1),
- /* K4 */ be_nested_str_weak(prev),
- /* K5 */ be_nested_str_weak(next),
- /* K6 */ be_nested_str_weak(back),
- /* K7 */ be_nested_str_weak(re_page_target),
- /* K8 */ be_nested_str_weak(match),
- /* K9 */ be_const_int(0),
- /* K10 */ be_nested_str_weak(show),
- }),
+ &be_ktab_class_HASPmota, /* shared constants */
be_str_weak(page_show),
&be_const_str_solidified,
( &(const binstruction[68]) { /* code */
0x4C080000, // 0000 LDNIL R2
- 0x880C0100, // 0001 GETMBR R3 R0 K0
- 0x88100101, // 0002 GETMBR R4 R0 K1
+ 0x880C0105, // 0001 GETMBR R3 R0 K5
+ 0x88100102, // 0002 GETMBR R4 R0 K2
0x940C0604, // 0003 GETIDX R3 R3 R4
- 0x8C100102, // 0004 GETMET R4 R0 K2
- 0x88180101, // 0005 GETMBR R6 R0 K1
+ 0x8C10011A, // 0004 GETMET R4 R0 K26
+ 0x88180102, // 0005 GETMBR R6 R0 K2
0x7C100400, // 0006 CALL R4 2
0x6014000C, // 0007 GETGBL R5 G12
0x5C180800, // 0008 MOVE R6 R4
@@ -10362,10 +9788,10 @@ be_local_closure(class_HASPmota_page_show, /* name */
0x18140B03, // 000A LE R5 R5 K3
0x78160000, // 000B JMPF R5 #000D
0x80000A00, // 000C RET 0
- 0x1C140304, // 000D EQ R5 R1 K4
+ 0x1C14031B, // 000D EQ R5 R1 K27
0x78160009, // 000E JMPF R5 #0019
0x60140009, // 000F GETGBL R5 G9
- 0x88180704, // 0010 GETMBR R6 R3 K4
+ 0x8818071B, // 0010 GETMBR R6 R3 K27
0x7C140200, // 0011 CALL R5 1
0x5C080A00, // 0012 MOVE R2 R5
0x4C140000, // 0013 LDNIL R5
@@ -10374,10 +9800,10 @@ be_local_closure(class_HASPmota_page_show, /* name */
0x5415FFFE, // 0016 LDINT R5 -1
0x94080805, // 0017 GETIDX R2 R4 R5
0x70020020, // 0018 JMP #003A
- 0x1C140305, // 0019 EQ R5 R1 K5
+ 0x1C14031C, // 0019 EQ R5 R1 K28
0x78160008, // 001A JMPF R5 #0024
0x60140009, // 001B GETGBL R5 G9
- 0x88180705, // 001C GETMBR R6 R3 K5
+ 0x8818071C, // 001C GETMBR R6 R3 K28
0x7C140200, // 001D CALL R5 1
0x5C080A00, // 001E MOVE R2 R5
0x4C140000, // 001F LDNIL R5
@@ -10385,10 +9811,10 @@ be_local_closure(class_HASPmota_page_show, /* name */
0x78160000, // 0021 JMPF R5 #0023
0x94080903, // 0022 GETIDX R2 R4 K3
0x70020015, // 0023 JMP #003A
- 0x1C140306, // 0024 EQ R5 R1 K6
+ 0x1C14031D, // 0024 EQ R5 R1 K29
0x78160008, // 0025 JMPF R5 #002F
0x60140009, // 0026 GETGBL R5 G9
- 0x88180706, // 0027 GETMBR R6 R3 K6
+ 0x8818071D, // 0027 GETMBR R6 R3 K29
0x7C140200, // 0028 CALL R5 1
0x5C080A00, // 0029 MOVE R2 R5
0x4C140000, // 002A LDNIL R5
@@ -10396,8 +9822,8 @@ be_local_closure(class_HASPmota_page_show, /* name */
0x78160000, // 002C JMPF R5 #002E
0x58080003, // 002D LDCONST R2 K3
0x7002000A, // 002E JMP #003A
- 0x88140107, // 002F GETMBR R5 R0 K7
- 0x8C140B08, // 0030 GETMET R5 R5 K8
+ 0x8814011E, // 002F GETMBR R5 R0 K30
+ 0x8C140B1F, // 0030 GETMET R5 R5 K31
0x5C1C0200, // 0031 MOVE R7 R1
0x7C140400, // 0032 CALL R5 2
0x78160005, // 0033 JMPF R5 #003A
@@ -10410,11 +9836,11 @@ be_local_closure(class_HASPmota_page_show, /* name */
0x4C140000, // 003A LDNIL R5
0x20140405, // 003B NE R5 R2 R5
0x78160005, // 003C JMPF R5 #0043
- 0x24140509, // 003D GT R5 R2 K9
+ 0x2414050B, // 003D GT R5 R2 K11
0x78160003, // 003E JMPF R5 #0043
- 0x88140100, // 003F GETMBR R5 R0 K0
+ 0x88140105, // 003F GETMBR R5 R0 K5
0x94140A02, // 0040 GETIDX R5 R5 R2
- 0x8C140B0A, // 0041 GETMET R5 R5 K10
+ 0x8C140B20, // 0041 GETMET R5 R5 K32
0x7C140200, // 0042 CALL R5 1
0x80000000, // 0043 RET 0
})
@@ -10426,34 +9852,27 @@ be_local_closure(class_HASPmota_page_show, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
-extern const bclass be_class_HASPmota;
be_local_closure(class_HASPmota_init, /* name */
be_nested_proto(
5, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_HASPmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(fix_lv_version),
- /* K1 */ be_nested_str_weak(re),
- /* K2 */ be_nested_str_weak(re_page_target),
- /* K3 */ be_nested_str_weak(compile),
- /* K4 */ be_nested_str_weak(p_X5Cd_X2B),
- }),
+ &be_ktab_class_HASPmota, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
- 0x8C040100, // 0000 GETMET R1 R0 K0
+ 0x8C040121, // 0000 GETMET R1 R0 K33
0x7C040200, // 0001 CALL R1 1
- 0xA4060200, // 0002 IMPORT R1 K1
- 0x8C080303, // 0003 GETMET R2 R1 K3
- 0x58100004, // 0004 LDCONST R4 K4
+ 0xA4064400, // 0002 IMPORT R1 K34
+ 0x8C080323, // 0003 GETMET R2 R1 K35
+ 0x58100024, // 0004 LDCONST R4 K36
0x7C080400, // 0005 CALL R2 2
- 0x90020402, // 0006 SETMBR R0 K2 R2
+ 0x90023C02, // 0006 SETMBR R0 K30 R2
0x80000000, // 0007 RET 0
})
)
@@ -10464,65 +9883,52 @@ be_local_closure(class_HASPmota_init, /* name */
/********************************************************************
** Solidified function: event_dispatch
********************************************************************/
-extern const bclass be_class_HASPmota;
be_local_closure(class_HASPmota_event_dispatch, /* name */
be_nested_proto(
9, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_HASPmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[11]) { /* constants */
- /* K0 */ be_nested_str_weak(introspect),
- /* K1 */ be_nested_str_weak(toptr),
- /* K2 */ be_nested_str_weak(event),
- /* K3 */ be_nested_str_weak(_p),
- /* K4 */ be_nested_str_weak(lv),
- /* K5 */ be_nested_str_weak(lv_event),
- /* K6 */ be_nested_str_weak(get_user_data),
- /* K7 */ be_const_int(0),
- /* K8 */ be_nested_str_weak(fromptr),
- /* K9 */ be_nested_str_weak(instance),
- /* K10 */ be_nested_str_weak(event_cb),
- }),
+ &be_ktab_class_HASPmota, /* shared constants */
be_str_weak(event_dispatch),
&be_const_str_solidified,
( &(const binstruction[34]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x8C0C0501, // 0001 GETMET R3 R2 K1
+ 0xA40A4A00, // 0000 IMPORT R2 K37
+ 0x8C0C0526, // 0001 GETMET R3 R2 K38
0x5C140200, // 0002 MOVE R5 R1
0x7C0C0400, // 0003 CALL R3 2
- 0x88100102, // 0004 GETMBR R4 R0 K2
+ 0x88100127, // 0004 GETMBR R4 R0 K39
0x78120002, // 0005 JMPF R4 #0009
- 0x88100102, // 0006 GETMBR R4 R0 K2
- 0x90120603, // 0007 SETMBR R4 K3 R3
+ 0x88100127, // 0006 GETMBR R4 R0 K39
+ 0x90125003, // 0007 SETMBR R4 K40 R3
0x70020004, // 0008 JMP #000E
- 0xB8120800, // 0009 GETNGBL R4 K4
- 0x8C100905, // 000A GETMET R4 R4 K5
+ 0xB8125200, // 0009 GETNGBL R4 K41
+ 0x8C10092A, // 000A GETMET R4 R4 K42
0x5C180600, // 000B MOVE R6 R3
0x7C100400, // 000C CALL R4 2
- 0x90020404, // 000D SETMBR R0 K2 R4
- 0x88100102, // 000E GETMBR R4 R0 K2
- 0x8C100906, // 000F GETMET R4 R4 K6
+ 0x90024E04, // 000D SETMBR R0 K39 R4
+ 0x88100127, // 000E GETMBR R4 R0 K39
+ 0x8C10092B, // 000F GETMET R4 R4 K43
0x7C100200, // 0010 CALL R4 1
0x60140009, // 0011 GETGBL R5 G9
0x5C180800, // 0012 MOVE R6 R4
0x7C140200, // 0013 CALL R5 1
- 0x20140B07, // 0014 NE R5 R5 K7
+ 0x20140B0B, // 0014 NE R5 R5 K11
0x7816000A, // 0015 JMPF R5 #0021
- 0x8C140508, // 0016 GETMET R5 R2 K8
+ 0x8C14052C, // 0016 GETMET R5 R2 K44
0x5C1C0800, // 0017 MOVE R7 R4
0x7C140400, // 0018 CALL R5 2
0x60180004, // 0019 GETGBL R6 G4
0x5C1C0A00, // 001A MOVE R7 R5
0x7C180200, // 001B CALL R6 1
- 0x1C180D09, // 001C EQ R6 R6 K9
+ 0x1C180D0D, // 001C EQ R6 R6 K13
0x781A0002, // 001D JMPF R6 #0021
- 0x8C180B0A, // 001E GETMET R6 R5 K10
- 0x88200102, // 001F GETMBR R8 R0 K2
+ 0x8C180B2D, // 001E GETMET R6 R5 K45
+ 0x88200127, // 001F GETMBR R8 R0 K39
0x7C180400, // 0020 CALL R6 2
0x80000000, // 0021 RET 0
})
@@ -10534,54 +9940,43 @@ be_local_closure(class_HASPmota_event_dispatch, /* name */
/********************************************************************
** Solidified function: pages_list_sorted
********************************************************************/
-extern const bclass be_class_HASPmota;
be_local_closure(class_HASPmota_pages_list_sorted, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_HASPmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_const_int(0),
- /* K1 */ be_nested_str_weak(lvh_page_cur_idx),
- /* K2 */ be_nested_str_weak(lvh_pages),
- /* K3 */ be_nested_str_weak(keys),
- /* K4 */ be_nested_str_weak(push),
- /* K5 */ be_nested_str_weak(stop_iteration),
- /* K6 */ be_nested_str_weak(sort),
- /* K7 */ be_nested_str_weak(find),
- /* K8 */ be_const_int(1),
- }),
+ &be_ktab_class_HASPmota, /* shared constants */
be_str_weak(pages_list_sorted),
&be_const_str_solidified,
( &(const binstruction[47]) { /* code */
0x60080012, // 0000 GETGBL R2 G18
0x7C080000, // 0001 CALL R2 0
- 0x1C0C0300, // 0002 EQ R3 R1 K0
+ 0x1C0C030B, // 0002 EQ R3 R1 K11
0x780E0000, // 0003 JMPF R3 #0005
- 0x88040101, // 0004 GETMBR R1 R0 K1
+ 0x88040102, // 0004 GETMBR R1 R0 K2
0x600C0010, // 0005 GETGBL R3 G16
- 0x88100102, // 0006 GETMBR R4 R0 K2
- 0x8C100903, // 0007 GETMET R4 R4 K3
+ 0x88100105, // 0006 GETMBR R4 R0 K5
+ 0x8C10092E, // 0007 GETMET R4 R4 K46
0x7C100200, // 0008 CALL R4 1
0x7C0C0200, // 0009 CALL R3 1
0xA8020007, // 000A EXBLK 0 #0013
0x5C100600, // 000B MOVE R4 R3
0x7C100000, // 000C CALL R4 0
- 0x20140900, // 000D NE R5 R4 K0
+ 0x2014090B, // 000D NE R5 R4 K11
0x78160002, // 000E JMPF R5 #0012
- 0x8C140504, // 000F GETMET R5 R2 K4
+ 0x8C14052F, // 000F GETMET R5 R2 K47
0x5C1C0800, // 0010 MOVE R7 R4
0x7C140400, // 0011 CALL R5 2
0x7001FFF7, // 0012 JMP #000B
- 0x580C0005, // 0013 LDCONST R3 K5
+ 0x580C0030, // 0013 LDCONST R3 K48
0xAC0C0200, // 0014 CATCH R3 1 0
0xB0080000, // 0015 RAISE 2 R0 R0
- 0x8C0C0106, // 0016 GETMET R3 R0 K6
+ 0x8C0C0131, // 0016 GETMET R3 R0 K49
0x5C140400, // 0017 MOVE R5 R2
0x7C0C0400, // 0018 CALL R3 2
0x5C080600, // 0019 MOVE R2 R3
@@ -10593,7 +9988,7 @@ be_local_closure(class_HASPmota_pages_list_sorted, /* name */
0x5C100400, // 001F MOVE R4 R2
0x7C0C0200, // 0020 CALL R3 1
0x00080402, // 0021 ADD R2 R2 R2
- 0x8C100507, // 0022 GETMET R4 R2 K7
+ 0x8C100532, // 0022 GETMET R4 R2 K50
0x5C180200, // 0023 MOVE R6 R1
0x7C100400, // 0024 CALL R4 2
0x4C140000, // 0025 LDNIL R5
@@ -10602,7 +9997,7 @@ be_local_closure(class_HASPmota_pages_list_sorted, /* name */
0x4C140000, // 0028 LDNIL R5
0x80040A00, // 0029 RET 1 R5
0x00140803, // 002A ADD R5 R4 R3
- 0x04140B08, // 002B SUB R5 R5 K8
+ 0x04140B03, // 002B SUB R5 R5 K3
0x40140805, // 002C CONNECT R5 R4 R5
0x94080405, // 002D GETIDX R2 R2 R5
0x80040400, // 002E RET 1 R2
@@ -10615,26 +10010,22 @@ be_local_closure(class_HASPmota_pages_list_sorted, /* name */
/********************************************************************
** Solidified function: get_page_cur
********************************************************************/
-extern const bclass be_class_HASPmota;
be_local_closure(class_HASPmota_get_page_cur, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_HASPmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 2]) { /* constants */
- /* K0 */ be_nested_str_weak(lvh_pages),
- /* K1 */ be_nested_str_weak(lvh_page_cur_idx),
- }),
+ &be_ktab_class_HASPmota, /* shared constants */
be_str_weak(get_page_cur),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
- 0x88040100, // 0000 GETMBR R1 R0 K0
- 0x88080101, // 0001 GETMBR R2 R0 K1
+ 0x88040105, // 0000 GETMBR R1 R0 K5
+ 0x88080102, // 0001 GETMBR R2 R0 K2
0x94040202, // 0002 GETIDX R1 R1 R2
0x80040200, // 0003 RET 1 R1
})
@@ -10646,42 +10037,34 @@ be_local_closure(class_HASPmota_get_page_cur, /* name */
/********************************************************************
** Solidified function: fix_lv_version
********************************************************************/
-extern const bclass be_class_HASPmota;
be_local_closure(class_HASPmota_fix_lv_version, /* name */
be_nested_proto(
6, /* nstack */
0, /* argc */
- 4, /* varg */
+ 12, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_HASPmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 6]) { /* constants */
- /* K0 */ be_const_class(be_class_HASPmota),
- /* K1 */ be_nested_str_weak(introspect),
- /* K2 */ be_nested_str_weak(get),
- /* K3 */ be_nested_str_weak(lv),
- /* K4 */ be_nested_str_weak(version),
- /* K5 */ be_nested_str_weak(int),
- }),
+ &be_ktab_class_HASPmota, /* shared constants */
be_str_weak(fix_lv_version),
&be_const_str_solidified,
( &(const binstruction[15]) { /* code */
- 0x58000000, // 0000 LDCONST R0 K0
- 0xA4060200, // 0001 IMPORT R1 K1
- 0x8C080302, // 0002 GETMET R2 R1 K2
- 0xB8120600, // 0003 GETNGBL R4 K3
- 0x58140004, // 0004 LDCONST R5 K4
+ 0x58000033, // 0000 LDCONST R0 K51
+ 0xA4064A00, // 0001 IMPORT R1 K37
+ 0x8C080334, // 0002 GETMET R2 R1 K52
+ 0xB8125200, // 0003 GETNGBL R4 K41
+ 0x58140035, // 0004 LDCONST R5 K53
0x7C080600, // 0005 CALL R2 3
0x600C0004, // 0006 GETGBL R3 G4
0x5C100400, // 0007 MOVE R4 R2
0x7C0C0200, // 0008 CALL R3 1
- 0x200C0705, // 0009 NE R3 R3 K5
+ 0x200C0736, // 0009 NE R3 R3 K54
0x780E0002, // 000A JMPF R3 #000E
- 0xB80E0600, // 000B GETNGBL R3 K3
+ 0xB80E5200, // 000B GETNGBL R3 K41
0x54120007, // 000C LDINT R4 8
- 0x900E0804, // 000D SETMBR R3 K4 R4
+ 0x900E6A04, // 000D SETMBR R3 K53 R4
0x80000000, // 000E RET 0
})
)
@@ -10692,33 +10075,27 @@ be_local_closure(class_HASPmota_fix_lv_version, /* name */
/********************************************************************
** Solidified function: do_action
********************************************************************/
-extern const bclass be_class_HASPmota;
be_local_closure(class_HASPmota_do_action, /* name */
be_nested_proto(
6, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_HASPmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_nested_str_weak(lv),
- /* K1 */ be_nested_str_weak(EVENT_CLICKED),
- /* K2 */ be_nested_str_weak(page_show),
- /* K3 */ be_nested_str_weak(_action),
- }),
+ &be_ktab_class_HASPmota, /* shared constants */
be_str_weak(do_action),
&be_const_str_solidified,
( &(const binstruction[ 9]) { /* code */
- 0xB80E0000, // 0000 GETNGBL R3 K0
- 0x880C0701, // 0001 GETMBR R3 R3 K1
+ 0xB80E5200, // 0000 GETNGBL R3 K41
+ 0x880C0737, // 0001 GETMBR R3 R3 K55
0x200C0403, // 0002 NE R3 R2 R3
0x780E0000, // 0003 JMPF R3 #0005
0x80000600, // 0004 RET 0
- 0x8C0C0102, // 0005 GETMET R3 R0 K2
- 0x88140303, // 0006 GETMBR R5 R1 K3
+ 0x8C0C0138, // 0005 GETMET R3 R0 K56
+ 0x88140339, // 0006 GETMBR R5 R1 K57
0x7C0C0400, // 0007 CALL R3 2
0x80000000, // 0008 RET 0
})
@@ -10730,51 +10107,40 @@ be_local_closure(class_HASPmota_do_action, /* name */
/********************************************************************
** Solidified function: parse
********************************************************************/
-extern const bclass be_class_HASPmota;
be_local_closure(class_HASPmota_parse, /* name */
be_nested_proto(
9, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_HASPmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 9]) { /* constants */
- /* K0 */ be_nested_str_weak(json),
- /* K1 */ be_nested_str_weak(load),
- /* K2 */ be_nested_str_weak(instance),
- /* K3 */ be_nested_str_weak(parse_page),
- /* K4 */ be_nested_str_weak(parse_obj),
- /* K5 */ be_nested_str_weak(lvh_pages),
- /* K6 */ be_nested_str_weak(lvh_page_cur_idx),
- /* K7 */ be_nested_str_weak(value_error),
- /* K8 */ be_nested_str_weak(unable_X20to_X20parse_X20JSON_X20line),
- }),
+ &be_ktab_class_HASPmota, /* shared constants */
be_str_weak(parse),
&be_const_str_solidified,
( &(const binstruction[21]) { /* code */
- 0xA40A0000, // 0000 IMPORT R2 K0
- 0x8C0C0501, // 0001 GETMET R3 R2 K1
+ 0xA40A0200, // 0000 IMPORT R2 K1
+ 0x8C0C050C, // 0001 GETMET R3 R2 K12
0x5C140200, // 0002 MOVE R5 R1
0x7C0C0400, // 0003 CALL R3 2
0x60100004, // 0004 GETGBL R4 G4
0x5C140600, // 0005 MOVE R5 R3
0x7C100200, // 0006 CALL R4 1
- 0x1C100902, // 0007 EQ R4 R4 K2
+ 0x1C10090D, // 0007 EQ R4 R4 K13
0x78120009, // 0008 JMPF R4 #0013
- 0x8C100103, // 0009 GETMET R4 R0 K3
+ 0x8C100112, // 0009 GETMET R4 R0 K18
0x5C180600, // 000A MOVE R6 R3
0x7C100400, // 000B CALL R4 2
- 0x8C100104, // 000C GETMET R4 R0 K4
+ 0x8C100113, // 000C GETMET R4 R0 K19
0x5C180600, // 000D MOVE R6 R3
0x881C0105, // 000E GETMBR R7 R0 K5
- 0x88200106, // 000F GETMBR R8 R0 K6
+ 0x88200102, // 000F GETMBR R8 R0 K2
0x941C0E08, // 0010 GETIDX R7 R7 R8
0x7C100600, // 0011 CALL R4 3
0x70020000, // 0012 JMP #0014
- 0xB0060F08, // 0013 RAISE 1 K7 K8
+ 0xB006753B, // 0013 RAISE 1 K58 K59
0x80000000, // 0014 RET 0
})
)
@@ -10785,16 +10151,15 @@ be_local_closure(class_HASPmota_parse, /* name */
/********************************************************************
** Solidified function: register_event
********************************************************************/
-extern const bclass be_class_HASPmota;
be_local_closure(class_HASPmota_register_event, /* name */
be_nested_proto(
13, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
- ( &(const struct bproto*[ 2]) {
+ ( &(const struct bproto*[ 1]) {
be_nested_proto(
4, /* nstack */
1, /* argc */
@@ -10804,7 +10169,7 @@ be_local_closure(class_HASPmota_register_event, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(event_dispatch),
@@ -10819,36 +10184,27 @@ be_local_closure(class_HASPmota_register_event, /* name */
0x80040200, // 0004 RET 1 R1
})
),
- &be_class_HASPmota,
}),
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str_weak(cb),
- /* K1 */ be_nested_str_weak(introspect),
- /* K2 */ be_nested_str_weak(event_cb),
- /* K3 */ be_nested_str_weak(gen_cb),
- /* K4 */ be_nested_str_weak(_lv_obj),
- /* K5 */ be_nested_str_weak(add_event_cb),
- /* K6 */ be_nested_str_weak(toptr),
- }),
+ &be_ktab_class_HASPmota, /* shared constants */
be_str_weak(register_event),
&be_const_str_solidified,
( &(const binstruction[20]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
- 0xA4120200, // 0001 IMPORT R4 K1
- 0x88140102, // 0002 GETMBR R5 R0 K2
+ 0xA40E7800, // 0000 IMPORT R3 K60
+ 0xA4124A00, // 0001 IMPORT R4 K37
+ 0x8814012D, // 0002 GETMBR R5 R0 K45
0x4C180000, // 0003 LDNIL R6
0x1C140A06, // 0004 EQ R5 R5 R6
0x78160003, // 0005 JMPF R5 #000A
- 0x8C140703, // 0006 GETMET R5 R3 K3
+ 0x8C14073D, // 0006 GETMET R5 R3 K61
0x841C0000, // 0007 CLOSURE R7 P0
0x7C140400, // 0008 CALL R5 2
- 0x90020405, // 0009 SETMBR R0 K2 R5
- 0x88140304, // 000A GETMBR R5 R1 K4
- 0x8C180B05, // 000B GETMET R6 R5 K5
- 0x88200102, // 000C GETMBR R8 R0 K2
+ 0x90025A05, // 0009 SETMBR R0 K45 R5
+ 0x8814033E, // 000A GETMBR R5 R1 K62
+ 0x8C180B3F, // 000B GETMET R6 R5 K63
+ 0x8820012D, // 000C GETMBR R8 R0 K45
0x5C240400, // 000D MOVE R9 R2
- 0x8C280906, // 000E GETMET R10 R4 K6
+ 0x8C280926, // 000E GETMET R10 R4 K38
0x5C300200, // 000F MOVE R12 R1
0x7C280400, // 0010 CALL R10 2
0x7C180800, // 0011 CALL R6 4
@@ -10863,55 +10219,48 @@ be_local_closure(class_HASPmota_register_event, /* name */
/********************************************************************
** Solidified function: page_dir_to
********************************************************************/
-extern const bclass be_class_HASPmota;
be_local_closure(class_HASPmota_page_dir_to, /* name */
be_nested_proto(
7, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_HASPmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 5]) { /* constants */
- /* K0 */ be_nested_str_weak(pages_list_sorted),
- /* K1 */ be_const_int(0),
- /* K2 */ be_const_int(1),
- /* K3 */ be_const_int(2),
- /* K4 */ be_nested_str_weak(find),
- }),
+ &be_ktab_class_HASPmota, /* shared constants */
be_str_weak(page_dir_to),
&be_const_str_solidified,
( &(const binstruction[32]) { /* code */
- 0x8C080100, // 0000 GETMET R2 R0 K0
- 0x58100001, // 0001 LDCONST R4 K1
+ 0x8C08011A, // 0000 GETMET R2 R0 K26
+ 0x5810000B, // 0001 LDCONST R4 K11
0x7C080400, // 0002 CALL R2 2
0x4C0C0000, // 0003 LDNIL R3
0x1C0C0403, // 0004 EQ R3 R2 R3
0x780E0000, // 0005 JMPF R3 #0007
- 0x80060200, // 0006 RET 1 K1
+ 0x80061600, // 0006 RET 1 K11
0x600C000C, // 0007 GETGBL R3 G12
0x5C100400, // 0008 MOVE R4 R2
0x7C0C0200, // 0009 CALL R3 1
- 0x18100702, // 000A LE R4 R3 K2
+ 0x18100703, // 000A LE R4 R3 K3
0x78120000, // 000B JMPF R4 #000D
- 0x80060200, // 000C RET 1 K1
- 0x1C100703, // 000D EQ R4 R3 K3
+ 0x80061600, // 000C RET 1 K11
+ 0x1C100718, // 000D EQ R4 R3 K24
0x78120000, // 000E JMPF R4 #0010
- 0x80060400, // 000F RET 1 K2
- 0x8C100504, // 0010 GETMET R4 R2 K4
+ 0x80060600, // 000F RET 1 K3
+ 0x8C100532, // 0010 GETMET R4 R2 K50
0x5C180200, // 0011 MOVE R6 R1
0x7C100400, // 0012 CALL R4 2
0x4C140000, // 0013 LDNIL R5
0x1C140805, // 0014 EQ R5 R4 R5
0x78160000, // 0015 JMPF R5 #0017
- 0x80060200, // 0016 RET 1 K1
- 0x00140702, // 0017 ADD R5 R3 K2
- 0x0C140B03, // 0018 DIV R5 R5 K3
+ 0x80061600, // 0016 RET 1 K11
+ 0x00140703, // 0017 ADD R5 R3 K3
+ 0x0C140B18, // 0018 DIV R5 R5 K24
0x18140805, // 0019 LE R5 R4 R5
0x78160001, // 001A JMPF R5 #001D
- 0x80060400, // 001B RET 1 K2
+ 0x80060600, // 001B RET 1 K3
0x70020001, // 001C JMP #001F
0x5415FFFE, // 001D LDINT R5 -1
0x80040A00, // 001E RET 1 R5
@@ -10925,89 +10274,73 @@ be_local_closure(class_HASPmota_page_dir_to, /* name */
/********************************************************************
** Solidified function: parse_page
********************************************************************/
-extern const bclass be_class_HASPmota;
be_local_closure(class_HASPmota_parse_page, /* name */
be_nested_proto(
9, /* nstack */
2, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_HASPmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[14]) { /* constants */
- /* K0 */ be_nested_str_weak(has),
- /* K1 */ be_nested_str_weak(page),
- /* K2 */ be_nested_str_weak(int),
- /* K3 */ be_nested_str_weak(lvh_page_cur_idx),
- /* K4 */ be_nested_str_weak(lvh_pages),
- /* K5 */ be_nested_str_weak(contains),
- /* K6 */ be_nested_str_weak(lvh_page),
- /* K7 */ be_nested_str_weak(find),
- /* K8 */ be_nested_str_weak(id),
- /* K9 */ be_const_int(0),
- /* K10 */ be_nested_str_weak(get_page_cur),
- /* K11 */ be_nested_str_weak(prev),
- /* K12 */ be_nested_str_weak(next),
- /* K13 */ be_nested_str_weak(back),
- }),
+ &be_ktab_class_HASPmota, /* shared constants */
be_str_weak(parse_page),
&be_const_str_solidified,
( &(const binstruction[54]) { /* code */
- 0x8C080300, // 0000 GETMET R2 R1 K0
- 0x58100001, // 0001 LDCONST R4 K1
+ 0x8C080340, // 0000 GETMET R2 R1 K64
+ 0x58100041, // 0001 LDCONST R4 K65
0x7C080400, // 0002 CALL R2 2
0x780A0030, // 0003 JMPF R2 #0035
0x60080004, // 0004 GETGBL R2 G4
- 0x940C0301, // 0005 GETIDX R3 R1 K1
+ 0x940C0341, // 0005 GETIDX R3 R1 K65
0x7C080200, // 0006 CALL R2 1
- 0x1C080502, // 0007 EQ R2 R2 K2
+ 0x1C080536, // 0007 EQ R2 R2 K54
0x780A002B, // 0008 JMPF R2 #0035
0x60080009, // 0009 GETGBL R2 G9
- 0x940C0301, // 000A GETIDX R3 R1 K1
+ 0x940C0341, // 000A GETIDX R3 R1 K65
0x7C080200, // 000B CALL R2 1
- 0x90020602, // 000C SETMBR R0 K3 R2
- 0x880C0104, // 000D GETMBR R3 R0 K4
- 0x8C0C0705, // 000E GETMET R3 R3 K5
+ 0x90020402, // 000C SETMBR R0 K2 R2
+ 0x880C0105, // 000D GETMBR R3 R0 K5
+ 0x8C0C0742, // 000E GETMET R3 R3 K66
0x5C140400, // 000F MOVE R5 R2
0x7C0C0400, // 0010 CALL R3 2
0x740E0006, // 0011 JMPT R3 #0019
- 0x880C0106, // 0012 GETMBR R3 R0 K6
- 0x88100104, // 0013 GETMBR R4 R0 K4
+ 0x880C0104, // 0012 GETMBR R3 R0 K4
+ 0x88100105, // 0013 GETMBR R4 R0 K5
0x5C140600, // 0014 MOVE R5 R3
0x5C180400, // 0015 MOVE R6 R2
0x5C1C0000, // 0016 MOVE R7 R0
0x7C140400, // 0017 CALL R5 2
0x98100405, // 0018 SETIDX R4 R2 R5
- 0x8C0C0307, // 0019 GETMET R3 R1 K7
- 0x58140008, // 001A LDCONST R5 K8
+ 0x8C0C0332, // 0019 GETMET R3 R1 K50
+ 0x58140043, // 001A LDCONST R5 K67
0x7C0C0400, // 001B CALL R3 2
- 0x1C0C0709, // 001C EQ R3 R3 K9
+ 0x1C0C070B, // 001C EQ R3 R3 K11
0x780E0016, // 001D JMPF R3 #0035
- 0x8C0C010A, // 001E GETMET R3 R0 K10
+ 0x8C0C0144, // 001E GETMET R3 R0 K68
0x7C0C0200, // 001F CALL R3 1
0x60100009, // 0020 GETGBL R4 G9
- 0x8C140307, // 0021 GETMET R5 R1 K7
- 0x581C000B, // 0022 LDCONST R7 K11
+ 0x8C140332, // 0021 GETMET R5 R1 K50
+ 0x581C001B, // 0022 LDCONST R7 K27
0x4C200000, // 0023 LDNIL R8
0x7C140600, // 0024 CALL R5 3
0x7C100200, // 0025 CALL R4 1
- 0x900E1604, // 0026 SETMBR R3 K11 R4
+ 0x900E3604, // 0026 SETMBR R3 K27 R4
0x60100009, // 0027 GETGBL R4 G9
- 0x8C140307, // 0028 GETMET R5 R1 K7
- 0x581C000C, // 0029 LDCONST R7 K12
+ 0x8C140332, // 0028 GETMET R5 R1 K50
+ 0x581C001C, // 0029 LDCONST R7 K28
0x4C200000, // 002A LDNIL R8
0x7C140600, // 002B CALL R5 3
0x7C100200, // 002C CALL R4 1
- 0x900E1804, // 002D SETMBR R3 K12 R4
+ 0x900E3804, // 002D SETMBR R3 K28 R4
0x60100009, // 002E GETGBL R4 G9
- 0x8C140307, // 002F GETMET R5 R1 K7
- 0x581C000D, // 0030 LDCONST R7 K13
+ 0x8C140332, // 002F GETMET R5 R1 K50
+ 0x581C001D, // 0030 LDCONST R7 K29
0x4C200000, // 0031 LDNIL R8
0x7C140600, // 0032 CALL R5 3
0x7C100200, // 0033 CALL R4 1
- 0x900E1A04, // 0034 SETMBR R3 K13 R4
+ 0x900E3A04, // 0034 SETMBR R3 K29 R4
0x80000000, // 0035 RET 0
})
)
@@ -11018,53 +10351,47 @@ be_local_closure(class_HASPmota_parse_page, /* name */
/********************************************************************
** Solidified function: sort
********************************************************************/
-extern const bclass be_class_HASPmota;
be_local_closure(class_HASPmota_sort, /* name */
be_nested_proto(
7, /* nstack */
1, /* argc */
- 4, /* varg */
+ 12, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_HASPmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 4]) { /* constants */
- /* K0 */ be_const_class(be_class_HASPmota),
- /* K1 */ be_const_int(1),
- /* K2 */ be_const_int(0),
- /* K3 */ be_nested_str_weak(stop_iteration),
- }),
+ &be_ktab_class_HASPmota, /* shared constants */
be_str_weak(sort),
&be_const_str_solidified,
( &(const binstruction[30]) { /* code */
- 0x58040000, // 0000 LDCONST R1 K0
+ 0x58040033, // 0000 LDCONST R1 K51
0x60080010, // 0001 GETGBL R2 G16
0x600C000C, // 0002 GETGBL R3 G12
0x5C100000, // 0003 MOVE R4 R0
0x7C0C0200, // 0004 CALL R3 1
- 0x040C0701, // 0005 SUB R3 R3 K1
- 0x400E0203, // 0006 CONNECT R3 K1 R3
+ 0x040C0703, // 0005 SUB R3 R3 K3
+ 0x400E0603, // 0006 CONNECT R3 K3 R3
0x7C080200, // 0007 CALL R2 1
0xA8020010, // 0008 EXBLK 0 #001A
0x5C0C0400, // 0009 MOVE R3 R2
0x7C0C0000, // 000A CALL R3 0
0x94100003, // 000B GETIDX R4 R0 R3
0x5C140600, // 000C MOVE R5 R3
- 0x24180B02, // 000D GT R6 R5 K2
+ 0x24180B0B, // 000D GT R6 R5 K11
0x781A0008, // 000E JMPF R6 #0018
- 0x04180B01, // 000F SUB R6 R5 K1
+ 0x04180B03, // 000F SUB R6 R5 K3
0x94180006, // 0010 GETIDX R6 R0 R6
0x24180C04, // 0011 GT R6 R6 R4
0x781A0004, // 0012 JMPF R6 #0018
- 0x04180B01, // 0013 SUB R6 R5 K1
+ 0x04180B03, // 0013 SUB R6 R5 K3
0x94180006, // 0014 GETIDX R6 R0 R6
0x98000A06, // 0015 SETIDX R0 R5 R6
- 0x04140B01, // 0016 SUB R5 R5 K1
+ 0x04140B03, // 0016 SUB R5 R5 K3
0x7001FFF4, // 0017 JMP #000D
0x98000A04, // 0018 SETIDX R0 R5 R4
0x7001FFEE, // 0019 JMP #0009
- 0x58080003, // 001A LDCONST R2 K3
+ 0x58080030, // 001A LDCONST R2 K48
0xAC080200, // 001B CATCH R2 1 0
0xB0080000, // 001C RAISE 2 R0 R0
0x80040000, // 001D RET 1 R0
@@ -11077,157 +10404,122 @@ be_local_closure(class_HASPmota_sort, /* name */
/********************************************************************
** Solidified function: start
********************************************************************/
-extern const bclass be_class_HASPmota;
be_local_closure(class_HASPmota_start, /* name */
be_nested_proto(
11, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_HASPmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[33]) { /* constants */
- /* K0 */ be_nested_str_weak(path),
- /* K1 */ be_nested_str_weak(def_templ_name),
- /* K2 */ be_nested_str_weak(exists),
- /* K3 */ be_nested_str_weak(file_X20_X27),
- /* K4 */ be_nested_str_weak(_X27_X20not_X20found),
- /* K5 */ be_nested_str_weak(io_erorr),
- /* K6 */ be_nested_str_weak(lv),
- /* K7 */ be_nested_str_weak(start),
- /* K8 */ be_nested_str_weak(dark),
- /* K9 */ be_nested_str_weak(hres),
- /* K10 */ be_nested_str_weak(get_hor_res),
- /* K11 */ be_nested_str_weak(vres),
- /* K12 */ be_nested_str_weak(get_ver_res),
- /* K13 */ be_nested_str_weak(scr),
- /* K14 */ be_nested_str_weak(scr_act),
- /* K15 */ be_nested_str_weak(r16),
- /* K16 */ be_nested_str_weak(font_embedded),
- /* K17 */ be_nested_str_weak(robotocondensed),
- /* K18 */ be_nested_str_weak(montserrat),
- /* K19 */ be_nested_str_weak(theme_haspmota_init),
- /* K20 */ be_const_int(0),
- /* K21 */ be_nested_str_weak(color),
- /* K22 */ be_const_int(16711935),
- /* K23 */ be_const_int(3158064),
- /* K24 */ be_nested_str_weak(get_disp),
- /* K25 */ be_nested_str_weak(set_theme),
- /* K26 */ be_nested_str_weak(set_style_bg_color),
- /* K27 */ be_const_int(16777215),
- /* K28 */ be_nested_str_weak(theme_apply),
- /* K29 */ be_nested_str_weak(layer_top),
- /* K30 */ be_nested_str_weak(set_style_bg_opa),
- /* K31 */ be_nested_str_weak(lvh_pages),
- /* K32 */ be_nested_str_weak(_load),
- }),
+ &be_ktab_class_HASPmota, /* shared constants */
be_str_weak(start),
&be_const_str_solidified,
( &(const binstruction[105]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
+ 0xA40E8A00, // 0000 IMPORT R3 K69
0x4C100000, // 0001 LDNIL R4
0x1C100404, // 0002 EQ R4 R2 R4
0x78120000, // 0003 JMPF R4 #0005
- 0x88080101, // 0004 GETMBR R2 R0 K1
- 0x8C100702, // 0005 GETMET R4 R3 K2
+ 0x88080146, // 0004 GETMBR R2 R0 K70
+ 0x8C100747, // 0005 GETMET R4 R3 K71
0x5C180400, // 0006 MOVE R6 R2
0x7C100400, // 0007 CALL R4 2
0x74120002, // 0008 JMPT R4 #000C
- 0x00120602, // 0009 ADD R4 K3 R2
- 0x00100904, // 000A ADD R4 R4 K4
- 0xB0060A04, // 000B RAISE 1 K5 R4
- 0xB8120C00, // 000C GETNGBL R4 K6
- 0x8C100907, // 000D GETMET R4 R4 K7
+ 0x00129002, // 0009 ADD R4 K72 R2
+ 0x00100949, // 000A ADD R4 R4 K73
+ 0xB0069404, // 000B RAISE 1 K74 R4
+ 0xB8125200, // 000C GETNGBL R4 K41
+ 0x8C10094B, // 000D GETMET R4 R4 K75
0x7C100200, // 000E CALL R4 1
0x60100017, // 000F GETGBL R4 G23
0x5C140200, // 0010 MOVE R5 R1
0x7C100200, // 0011 CALL R4 1
- 0x90021004, // 0012 SETMBR R0 K8 R4
- 0xB8120C00, // 0013 GETNGBL R4 K6
- 0x8C10090A, // 0014 GETMET R4 R4 K10
+ 0x90029804, // 0012 SETMBR R0 K76 R4
+ 0xB8125200, // 0013 GETNGBL R4 K41
+ 0x8C10094E, // 0014 GETMET R4 R4 K78
0x7C100200, // 0015 CALL R4 1
- 0x90021204, // 0016 SETMBR R0 K9 R4
- 0xB8120C00, // 0017 GETNGBL R4 K6
- 0x8C10090C, // 0018 GETMET R4 R4 K12
+ 0x90029A04, // 0016 SETMBR R0 K77 R4
+ 0xB8125200, // 0017 GETNGBL R4 K41
+ 0x8C100950, // 0018 GETMET R4 R4 K80
0x7C100200, // 0019 CALL R4 1
- 0x90021604, // 001A SETMBR R0 K11 R4
- 0xB8120C00, // 001B GETNGBL R4 K6
- 0x8C10090E, // 001C GETMET R4 R4 K14
+ 0x90029E04, // 001A SETMBR R0 K79 R4
+ 0xB8125200, // 001B GETNGBL R4 K41
+ 0x8C100952, // 001C GETMET R4 R4 K82
0x7C100200, // 001D CALL R4 1
- 0x90021A04, // 001E SETMBR R0 K13 R4
+ 0x9002A204, // 001E SETMBR R0 K81 R4
0xA8020007, // 001F EXBLK 0 #0028
- 0xB8120C00, // 0020 GETNGBL R4 K6
- 0x8C100910, // 0021 GETMET R4 R4 K16
- 0x58180011, // 0022 LDCONST R6 K17
+ 0xB8125200, // 0020 GETNGBL R4 K41
+ 0x8C100954, // 0021 GETMET R4 R4 K84
+ 0x58180055, // 0022 LDCONST R6 K85
0x541E000F, // 0023 LDINT R7 16
0x7C100600, // 0024 CALL R4 3
- 0x90021E04, // 0025 SETMBR R0 K15 R4
+ 0x9002A604, // 0025 SETMBR R0 K83 R4
0xA8040001, // 0026 EXBLK 1 1
0x70020009, // 0027 JMP #0032
0xAC100000, // 0028 CATCH R4 0 0
0x70020006, // 0029 JMP #0031
- 0xB8120C00, // 002A GETNGBL R4 K6
- 0x8C100910, // 002B GETMET R4 R4 K16
- 0x58180012, // 002C LDCONST R6 K18
+ 0xB8125200, // 002A GETNGBL R4 K41
+ 0x8C100954, // 002B GETMET R4 R4 K84
+ 0x58180056, // 002C LDCONST R6 K86
0x541E000D, // 002D LDINT R7 14
0x7C100600, // 002E CALL R4 3
- 0x90021E04, // 002F SETMBR R0 K15 R4
+ 0x9002A604, // 002F SETMBR R0 K83 R4
0x70020000, // 0030 JMP #0032
0xB0080000, // 0031 RAISE 2 R0 R0
- 0xB8120C00, // 0032 GETNGBL R4 K6
- 0x8C100913, // 0033 GETMET R4 R4 K19
- 0x58180014, // 0034 LDCONST R6 K20
- 0xB81E0C00, // 0035 GETNGBL R7 K6
- 0x8C1C0F15, // 0036 GETMET R7 R7 K21
- 0x58240016, // 0037 LDCONST R9 K22
+ 0xB8125200, // 0032 GETNGBL R4 K41
+ 0x8C100957, // 0033 GETMET R4 R4 K87
+ 0x5818000B, // 0034 LDCONST R6 K11
+ 0xB81E5200, // 0035 GETNGBL R7 K41
+ 0x8C1C0F58, // 0036 GETMET R7 R7 K88
+ 0x58240059, // 0037 LDCONST R9 K89
0x7C1C0400, // 0038 CALL R7 2
- 0xB8220C00, // 0039 GETNGBL R8 K6
- 0x8C201115, // 003A GETMET R8 R8 K21
- 0x58280017, // 003B LDCONST R10 K23
+ 0xB8225200, // 0039 GETNGBL R8 K41
+ 0x8C201158, // 003A GETMET R8 R8 K88
+ 0x5828005A, // 003B LDCONST R10 K90
0x7C200400, // 003C CALL R8 2
- 0x88240108, // 003D GETMBR R9 R0 K8
- 0x8828010F, // 003E GETMBR R10 R0 K15
+ 0x8824014C, // 003D GETMBR R9 R0 K76
+ 0x88280153, // 003E GETMBR R10 R0 K83
0x7C100C00, // 003F CALL R4 6
- 0x8814010D, // 0040 GETMBR R5 R0 K13
- 0x8C140B18, // 0041 GETMET R5 R5 K24
+ 0x88140151, // 0040 GETMBR R5 R0 K81
+ 0x8C140B5B, // 0041 GETMET R5 R5 K91
0x7C140200, // 0042 CALL R5 1
- 0x8C140B19, // 0043 GETMET R5 R5 K25
+ 0x8C140B5C, // 0043 GETMET R5 R5 K92
0x5C1C0800, // 0044 MOVE R7 R4
0x7C140400, // 0045 CALL R5 2
- 0x8814010D, // 0046 GETMBR R5 R0 K13
- 0x8C140B1A, // 0047 GETMET R5 R5 K26
- 0x881C0108, // 0048 GETMBR R7 R0 K8
+ 0x88140151, // 0046 GETMBR R5 R0 K81
+ 0x8C140B5D, // 0047 GETMET R5 R5 K93
+ 0x881C014C, // 0048 GETMBR R7 R0 K76
0x781E0004, // 0049 JMPF R7 #004F
- 0xB81E0C00, // 004A GETNGBL R7 K6
- 0x8C1C0F15, // 004B GETMET R7 R7 K21
- 0x58240014, // 004C LDCONST R9 K20
+ 0xB81E5200, // 004A GETNGBL R7 K41
+ 0x8C1C0F58, // 004B GETMET R7 R7 K88
+ 0x5824000B, // 004C LDCONST R9 K11
0x7C1C0400, // 004D CALL R7 2
0x70020003, // 004E JMP #0053
- 0xB81E0C00, // 004F GETNGBL R7 K6
- 0x8C1C0F15, // 0050 GETMET R7 R7 K21
- 0x5824001B, // 0051 LDCONST R9 K27
+ 0xB81E5200, // 004F GETNGBL R7 K41
+ 0x8C1C0F58, // 0050 GETMET R7 R7 K88
+ 0x5824005E, // 0051 LDCONST R9 K94
0x7C1C0400, // 0052 CALL R7 2
- 0x58200014, // 0053 LDCONST R8 K20
+ 0x5820000B, // 0053 LDCONST R8 K11
0x7C140600, // 0054 CALL R5 3
- 0xB8160C00, // 0055 GETNGBL R5 K6
- 0x8C140B1C, // 0056 GETMET R5 R5 K28
- 0xB81E0C00, // 0057 GETNGBL R7 K6
- 0x8C1C0F1D, // 0058 GETMET R7 R7 K29
+ 0xB8165200, // 0055 GETNGBL R5 K41
+ 0x8C140B5F, // 0056 GETMET R5 R5 K95
+ 0xB81E5200, // 0057 GETNGBL R7 K41
+ 0x8C1C0F60, // 0058 GETMET R7 R7 K96
0x7C1C0200, // 0059 CALL R7 1
0x7C140400, // 005A CALL R5 2
- 0xB8160C00, // 005B GETNGBL R5 K6
- 0x8C140B1D, // 005C GETMET R5 R5 K29
+ 0xB8165200, // 005B GETNGBL R5 K41
+ 0x8C140B60, // 005C GETMET R5 R5 K96
0x7C140200, // 005D CALL R5 1
- 0x8C140B1E, // 005E GETMET R5 R5 K30
- 0x581C0014, // 005F LDCONST R7 K20
- 0x58200014, // 0060 LDCONST R8 K20
+ 0x8C140B61, // 005E GETMET R5 R5 K97
+ 0x581C000B, // 005F LDCONST R7 K11
+ 0x5820000B, // 0060 LDCONST R8 K11
0x7C140600, // 0061 CALL R5 3
0x60140013, // 0062 GETGBL R5 G19
0x7C140000, // 0063 CALL R5 0
- 0x90023E05, // 0064 SETMBR R0 K31 R5
- 0x8C140120, // 0065 GETMET R5 R0 K32
+ 0x90020A05, // 0064 SETMBR R0 K5 R5
+ 0x8C140162, // 0065 GETMET R5 R0 K98
0x5C1C0400, // 0066 MOVE R7 R2
0x7C140400, // 0067 CALL R5 2
0x80000000, // 0068 RET 0
@@ -11240,74 +10532,42 @@ be_local_closure(class_HASPmota_start, /* name */
/********************************************************************
** Solidified function: parse_obj
********************************************************************/
-extern const bclass be_class_HASPmota;
be_local_closure(class_HASPmota_parse_obj, /* name */
be_nested_proto(
22, /* nstack */
3, /* argc */
- 2, /* varg */
+ 10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- &be_class_HASPmota,
+ NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[30]) { /* constants */
- /* K0 */ be_nested_str_weak(global),
- /* K1 */ be_nested_str_weak(introspect),
- /* K2 */ be_nested_str_weak(find),
- /* K3 */ be_nested_str_weak(id),
- /* K4 */ be_nested_str_weak(obj),
- /* K5 */ be_nested_str_weak(get_page_cur),
- /* K6 */ be_nested_str_weak(berry_run),
- /* K7 */ be_nested_str_weak(nil),
- /* K8 */ be_nested_str_weak(HSP_X3A_X20unable_X20to_X20compile_X20berry_X20code_X20_X22_X25s_X22_X20_X2D_X20_X27_X25s_X27_X20_X2D_X20_X25s),
- /* K9 */ be_const_int(1),
- /* K10 */ be_nested_str_weak(HSP_X3A_X20invalid_X20_X27id_X27_X3A_X20),
- /* K11 */ be_nested_str_weak(_X20for_X20_X27obj_X27_X3A),
- /* K12 */ be_nested_str_weak(parentid),
- /* K13 */ be_nested_str_weak(get_obj),
- /* K14 */ be_nested_str_weak(_lv_obj),
- /* K15 */ be_nested_str_weak(get_scr),
- /* K16 */ be_nested_str_weak(get),
- /* K17 */ be_nested_str_weak(lvh_),
- /* K18 */ be_nested_str_weak(class),
- /* K19 */ be_nested_str_weak(lvh_obj),
- /* K20 */ be_nested_str_weak(module),
- /* K21 */ be_nested_str_weak(HSP_X3A_X20Cannot_X20find_X20object_X20of_X20type_X20),
- /* K22 */ be_nested_str_weak(add_obj),
- /* K23 */ be_nested_str_weak(function),
- /* K24 */ be_nested_str_weak(HSP_X3A_X20unable_X20to_X20run_X20berry_X20code_X20_X22_X25s_X22_X20_X2D_X20_X27_X25s_X27_X20_X2D_X20_X25s),
- /* K25 */ be_const_int(0),
- /* K26 */ be_nested_str_weak(HSP_X3A_X20cannot_X20specify_X20_X27obj_X27_X20for_X20_X27id_X27_X3A0),
- /* K27 */ be_nested_str_weak(keys),
- /* K28 */ be_nested_str_weak(stop_iteration),
- /* K29 */ be_nested_str_weak(post_config),
- }),
+ &be_ktab_class_HASPmota, /* shared constants */
be_str_weak(parse_obj),
&be_const_str_solidified,
( &(const binstruction[215]) { /* code */
- 0xA40E0000, // 0000 IMPORT R3 K0
- 0xA4120200, // 0001 IMPORT R4 K1
+ 0xA40EC600, // 0000 IMPORT R3 K99
+ 0xA4124A00, // 0001 IMPORT R4 K37
0x60140009, // 0002 GETGBL R5 G9
- 0x8C180302, // 0003 GETMET R6 R1 K2
- 0x58200003, // 0004 LDCONST R8 K3
+ 0x8C180332, // 0003 GETMET R6 R1 K50
+ 0x58200043, // 0004 LDCONST R8 K67
0x7C180400, // 0005 CALL R6 2
0x7C140200, // 0006 CALL R5 1
0x60180008, // 0007 GETGBL R6 G8
- 0x8C1C0302, // 0008 GETMET R7 R1 K2
- 0x58240004, // 0009 LDCONST R9 K4
+ 0x8C1C0332, // 0008 GETMET R7 R1 K50
+ 0x58240064, // 0009 LDCONST R9 K100
0x7C1C0400, // 000A CALL R7 2
0x7C180200, // 000B CALL R6 1
0x4C1C0000, // 000C LDNIL R7
- 0x8C200105, // 000D GETMET R8 R0 K5
+ 0x8C200144, // 000D GETMET R8 R0 K68
0x7C200200, // 000E CALL R8 1
0x60240008, // 000F GETGBL R9 G8
- 0x8C280302, // 0010 GETMET R10 R1 K2
- 0x58300006, // 0011 LDCONST R12 K6
+ 0x8C280332, // 0010 GETMET R10 R1 K50
+ 0x58300065, // 0011 LDCONST R12 K101
0x7C280400, // 0012 CALL R10 2
0x7C240200, // 0013 CALL R9 1
0x4C280000, // 0014 LDNIL R10
- 0x202C1307, // 0015 NE R11 R9 K7
+ 0x202C1366, // 0015 NE R11 R9 K102
0x782E0012, // 0016 JMPF R11 #002A
0xA8020005, // 0017 EXBLK 0 #001E
0x602C000D, // 0018 GETGBL R11 G13
@@ -11320,7 +10580,7 @@ be_local_closure(class_HASPmota_parse_obj, /* name */
0x70020008, // 001F JMP #0029
0x60340001, // 0020 GETGBL R13 G1
0x60380018, // 0021 GETGBL R14 G24
- 0x583C0008, // 0022 LDCONST R15 K8
+ 0x583C0067, // 0022 LDCONST R15 K103
0x5C401200, // 0023 MOVE R16 R9
0x5C441600, // 0024 MOVE R17 R11
0x5C481800, // 0025 MOVE R18 R12
@@ -11328,12 +10588,12 @@ be_local_closure(class_HASPmota_parse_obj, /* name */
0x7C340200, // 0027 CALL R13 1
0x70020000, // 0028 JMP #002A
0xB0080000, // 0029 RAISE 2 R0 R0
- 0x202C0D07, // 002A NE R11 R6 K7
+ 0x202C0D66, // 002A NE R11 R6 K102
0x782E006A, // 002B JMPF R11 #0097
0x4C2C0000, // 002C LDNIL R11
0x202C0A0B, // 002D NE R11 R5 R11
0x782E0067, // 002E JMPF R11 #0097
- 0x142C0B09, // 002F LT R11 R5 K9
+ 0x142C0B03, // 002F LT R11 R5 K3
0x742E0002, // 0030 JMPT R11 #0034
0x542E00FD, // 0031 LDINT R11 254
0x242C0A0B, // 0032 GT R11 R5 R11
@@ -11342,44 +10602,44 @@ be_local_closure(class_HASPmota_parse_obj, /* name */
0x60300008, // 0035 GETGBL R12 G8
0x5C340A00, // 0036 MOVE R13 R5
0x7C300200, // 0037 CALL R12 1
- 0x0032140C, // 0038 ADD R12 K10 R12
- 0x0030190B, // 0039 ADD R12 R12 K11
+ 0x0032D00C, // 0038 ADD R12 K104 R12
+ 0x00301969, // 0039 ADD R12 R12 K105
0x00301806, // 003A ADD R12 R12 R6
0x7C2C0200, // 003B CALL R11 1
0x80001600, // 003C RET 0
0x4C2C0000, // 003D LDNIL R11
0x60300009, // 003E GETGBL R12 G9
- 0x8C340302, // 003F GETMET R13 R1 K2
- 0x583C000C, // 0040 LDCONST R15 K12
+ 0x8C340332, // 003F GETMET R13 R1 K50
+ 0x583C006A, // 0040 LDCONST R15 K106
0x7C340400, // 0041 CALL R13 2
0x7C300200, // 0042 CALL R12 1
0x4C340000, // 0043 LDNIL R13
0x4C380000, // 0044 LDNIL R14
0x2038180E, // 0045 NE R14 R12 R14
0x783A0007, // 0046 JMPF R14 #004F
- 0x8C38110D, // 0047 GETMET R14 R8 K13
+ 0x8C38116B, // 0047 GETMET R14 R8 K107
0x5C401800, // 0048 MOVE R16 R12
0x7C380400, // 0049 CALL R14 2
0x5C341C00, // 004A MOVE R13 R14
0x4C380000, // 004B LDNIL R14
0x20381A0E, // 004C NE R14 R13 R14
0x783A0000, // 004D JMPF R14 #004F
- 0x882C1B0E, // 004E GETMBR R11 R13 K14
+ 0x882C1B3E, // 004E GETMBR R11 R13 K62
0x4C380000, // 004F LDNIL R14
0x1C38160E, // 0050 EQ R14 R11 R14
0x783A0002, // 0051 JMPF R14 #0055
- 0x8C38110F, // 0052 GETMET R14 R8 K15
+ 0x8C38116C, // 0052 GETMET R14 R8 K108
0x7C380200, // 0053 CALL R14 1
0x5C2C1C00, // 0054 MOVE R11 R14
- 0x8C380910, // 0055 GETMET R14 R4 K16
+ 0x8C380934, // 0055 GETMET R14 R4 K52
0x5C400000, // 0056 MOVE R16 R0
- 0x00462206, // 0057 ADD R17 K17 R6
+ 0x0046DA06, // 0057 ADD R17 K109 R6
0x7C380600, // 0058 CALL R14 3
0x4C3C0000, // 0059 LDNIL R15
0x4C400000, // 005A LDNIL R16
0x1C401C10, // 005B EQ R16 R14 R16
0x78420010, // 005C JMPF R16 #006E
- 0x8C400910, // 005D GETMET R16 R4 K16
+ 0x8C400934, // 005D GETMET R16 R4 K52
0x5C480600, // 005E MOVE R18 R3
0x5C4C0C00, // 005F MOVE R19 R6
0x7C400600, // 0060 CALL R16 3
@@ -11389,17 +10649,17 @@ be_local_closure(class_HASPmota_parse_obj, /* name */
0x60440004, // 0064 GETGBL R17 G4
0x5C482000, // 0065 MOVE R18 R16
0x7C440200, // 0066 CALL R17 1
- 0x1C442312, // 0067 EQ R17 R17 K18
+ 0x1C44236E, // 0067 EQ R17 R17 K110
0x78460004, // 0068 JMPF R17 #006E
0x5C442000, // 0069 MOVE R17 R16
0x5C481600, // 006A MOVE R18 R11
0x7C440200, // 006B CALL R17 1
0x5C3C2200, // 006C MOVE R15 R17
- 0x88380113, // 006D GETMBR R14 R0 K19
+ 0x8838016F, // 006D GETMBR R14 R0 K111
0x4C400000, // 006E LDNIL R16
0x1C401C10, // 006F EQ R16 R14 R16
0x7842000F, // 0070 JMPF R16 #0081
- 0x8C400914, // 0071 GETMET R16 R4 K20
+ 0x8C400970, // 0071 GETMET R16 R4 K112
0x5C480C00, // 0072 MOVE R18 R6
0x7C400400, // 0073 CALL R16 2
0x4C440000, // 0074 LDNIL R17
@@ -11408,13 +10668,13 @@ be_local_closure(class_HASPmota_parse_obj, /* name */
0x60440004, // 0077 GETGBL R17 G4
0x5C482000, // 0078 MOVE R18 R16
0x7C440200, // 0079 CALL R17 1
- 0x1C442312, // 007A EQ R17 R17 K18
+ 0x1C44236E, // 007A EQ R17 R17 K110
0x78460004, // 007B JMPF R17 #0081
0x5C442000, // 007C MOVE R17 R16
0x5C481600, // 007D MOVE R18 R11
0x7C440200, // 007E CALL R17 1
0x5C3C2200, // 007F MOVE R15 R17
- 0x88380113, // 0080 GETMBR R14 R0 K19
+ 0x8838016F, // 0080 GETMBR R14 R0 K111
0x4C400000, // 0081 LDNIL R16
0x1C401C10, // 0082 EQ R16 R14 R16
0x78420006, // 0083 JMPF R16 #008B
@@ -11422,7 +10682,7 @@ be_local_closure(class_HASPmota_parse_obj, /* name */
0x60440008, // 0085 GETGBL R17 G8
0x5C480C00, // 0086 MOVE R18 R6
0x7C440200, // 0087 CALL R17 1
- 0x00462A11, // 0088 ADD R17 K21 R17
+ 0x0046E211, // 0088 ADD R17 K113 R17
0x7C400200, // 0089 CALL R16 1
0x80002000, // 008A RET 0
0x5C401C00, // 008B MOVE R16 R14
@@ -11433,7 +10693,7 @@ be_local_closure(class_HASPmota_parse_obj, /* name */
0x5C541A00, // 0090 MOVE R21 R13
0x7C400A00, // 0091 CALL R16 5
0x5C1C2000, // 0092 MOVE R7 R16
- 0x8C401116, // 0093 GETMET R16 R8 K22
+ 0x8C401172, // 0093 GETMET R16 R8 K114
0x5C480A00, // 0094 MOVE R18 R5
0x5C4C0E00, // 0095 MOVE R19 R7
0x7C400600, // 0096 CALL R16 3
@@ -11446,7 +10706,7 @@ be_local_closure(class_HASPmota_parse_obj, /* name */
0x60300004, // 009D GETGBL R12 G4
0x5C341600, // 009E MOVE R13 R11
0x7C300200, // 009F CALL R12 1
- 0x1C301917, // 00A0 EQ R12 R12 K23
+ 0x1C301973, // 00A0 EQ R12 R12 K115
0x78320002, // 00A1 JMPF R12 #00A5
0x5C301600, // 00A2 MOVE R12 R11
0x5C340E00, // 00A3 MOVE R13 R7
@@ -11457,7 +10717,7 @@ be_local_closure(class_HASPmota_parse_obj, /* name */
0x70020008, // 00A8 JMP #00B2
0x60340001, // 00A9 GETGBL R13 G1
0x60380018, // 00AA GETGBL R14 G24
- 0x583C0018, // 00AB LDCONST R15 K24
+ 0x583C0074, // 00AB LDCONST R15 K116
0x5C401200, // 00AC MOVE R16 R9
0x5C441600, // 00AD MOVE R17 R11
0x5C481800, // 00AE MOVE R18 R12
@@ -11469,24 +10729,24 @@ be_local_closure(class_HASPmota_parse_obj, /* name */
0x1C2C0A0B, // 00B4 EQ R11 R5 R11
0x782E0000, // 00B5 JMPF R11 #00B7
0x80001600, // 00B6 RET 0
- 0x1C2C0B19, // 00B7 EQ R11 R5 K25
+ 0x1C2C0B0B, // 00B7 EQ R11 R5 K11
0x782E0005, // 00B8 JMPF R11 #00BF
- 0x202C0D07, // 00B9 NE R11 R6 K7
+ 0x202C0D66, // 00B9 NE R11 R6 K102
0x782E0003, // 00BA JMPF R11 #00BF
0x602C0001, // 00BB GETGBL R11 G1
- 0x5830001A, // 00BC LDCONST R12 K26
+ 0x58300075, // 00BC LDCONST R12 K117
0x7C2C0200, // 00BD CALL R11 1
0x80001600, // 00BE RET 0
- 0x1C2C0B19, // 00BF EQ R11 R5 K25
+ 0x1C2C0B0B, // 00BF EQ R11 R5 K11
0x782E0005, // 00C0 JMPF R11 #00C7
- 0x8C2C0105, // 00C1 GETMET R11 R0 K5
+ 0x8C2C0144, // 00C1 GETMET R11 R0 K68
0x7C2C0200, // 00C2 CALL R11 1
- 0x8C2C170D, // 00C3 GETMET R11 R11 K13
- 0x58340019, // 00C4 LDCONST R13 K25
+ 0x8C2C176B, // 00C3 GETMET R11 R11 K107
+ 0x5834000B, // 00C4 LDCONST R13 K11
0x7C2C0400, // 00C5 CALL R11 2
0x5C1C1600, // 00C6 MOVE R7 R11
0x602C0010, // 00C7 GETGBL R11 G16
- 0x8C30031B, // 00C8 GETMET R12 R1 K27
+ 0x8C30032E, // 00C8 GETMET R12 R1 K46
0x7C300200, // 00C9 CALL R12 1
0x7C2C0200, // 00CA CALL R11 1
0xA8020004, // 00CB EXBLK 0 #00D1
@@ -11495,10 +10755,10 @@ be_local_closure(class_HASPmota_parse_obj, /* name */
0x9434020C, // 00CE GETIDX R13 R1 R12
0x901C180D, // 00CF SETMBR R7 R12 R13
0x7001FFFA, // 00D0 JMP #00CC
- 0x582C001C, // 00D1 LDCONST R11 K28
+ 0x582C0030, // 00D1 LDCONST R11 K48
0xAC2C0200, // 00D2 CATCH R11 1 0
0xB0080000, // 00D3 RAISE 2 R0 R0
- 0x8C2C0F1D, // 00D4 GETMET R11 R7 K29
+ 0x8C2C0F76, // 00D4 GETMET R11 R7 K118
0x7C2C0200, // 00D5 CALL R11 1
0x80000000, // 00D6 RET 0
})
@@ -11584,7 +10844,7 @@ be_local_closure(_anonymous_, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
- NULL,
+ NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(HASPmota),
diff --git a/pio-tools/add_c_flags.py b/pio-tools/add_c_flags.py
index 1ce5d5936..345d4e814 100644
--- a/pio-tools/add_c_flags.py
+++ b/pio-tools/add_c_flags.py
@@ -1,7 +1,21 @@
Import("env")
+build_flags = env['BUILD_FLAGS']
+chip = env.get("BOARD_MCU").lower()
+
# General options that are passed to the C++ compiler
env.Append(CXXFLAGS=["-Wno-volatile"])
# General options that are passed to the C compiler (C only; not C++).
env.Append(CFLAGS=["-Wno-discarded-qualifiers", "-Wno-implicit-function-declaration", "-Wno-incompatible-pointer-types"])
+
+# Remove build flags which are not valid for risc-v
+if chip in ("esp32c2", "esp32c3", "esp32c6", "esp32h2"):
+ try:
+ build_flags.pop(build_flags.index("-mno-target-align"))
+ except:
+ do_nothing=""
+ try:
+ build_flags.pop(build_flags.index("-mtarget-align"))
+ except:
+ do_nothing=""
\ No newline at end of file
diff --git a/pio-tools/post_esp32.py b/pio-tools/post_esp32.py
index a468e14e1..e296be29e 100644
--- a/pio-tools/post_esp32.py
+++ b/pio-tools/post_esp32.py
@@ -181,18 +181,30 @@ def esp32_fetch_safeboot_bin(tasmota_platform):
safeboot_fw_name = join(variants_dir, tasmota_platform + "-safeboot.bin")
if(exists(safeboot_fw_name)):
print("safeboot binary already in place.")
- return
+ return True
print("Will download safeboot binary from URL:")
print(safeboot_fw_url)
- response = requests.get(safeboot_fw_url)
- open(safeboot_fw_name, "wb").write(response.content)
- print("safeboot binary written to variants dir.")
+ try:
+ response = requests.get(safeboot_fw_url)
+ open(safeboot_fw_name, "wb").write(response.content)
+ print("safeboot binary written to variants dir.")
+ return True
+ except:
+ print(Fore.RED + "Download of safeboot binary failed. Please check your Internet connection.")
+ print(Fore.RED + "Creation of " + tasmota_platform + "-factory.bin not possible")
+ print(Fore.YELLOW + "Without Internet " + Fore.GREEN + tasmota_platform + "-safeboot.bin" + Fore.YELLOW + " needs to be compiled before " + Fore.GREEN + tasmota_platform)
+ return False
def esp32_copy_new_safeboot_bin(tasmota_platform,new_local_safeboot_fw):
print("Copy new local safeboot firmware to variants dir -> using it for further flashing operations")
safeboot_fw_name = join(variants_dir, tasmota_platform + "-safeboot.bin")
if os.path.exists(variants_dir):
- shutil.copy(new_local_safeboot_fw, safeboot_fw_name)
+ try:
+ shutil.copy(new_local_safeboot_fw, safeboot_fw_name)
+ return True
+ except:
+ return False
+
def esp32_create_combined_bin(source, target, env):
#print("Generating combined binary for serial flashing")
@@ -235,69 +247,70 @@ def esp32_create_combined_bin(source, target, env):
if not os.path.exists(variants_dir):
os.makedirs(variants_dir)
if "safeboot" in firmware_name:
- esp32_copy_new_safeboot_bin(tasmota_platform,firmware_name)
+ s_flag = esp32_copy_new_safeboot_bin(tasmota_platform,firmware_name)
else:
- esp32_fetch_safeboot_bin(tasmota_platform)
+ s_flag = esp32_fetch_safeboot_bin(tasmota_platform)
- flash_size = env.BoardConfig().get("upload.flash_size", "4MB")
- flash_mode = env["__get_board_flash_mode"](env)
- flash_freq = env["__get_board_f_flash"](env)
+ if s_flag: # check if safeboot firmware is existing
+ flash_size = env.BoardConfig().get("upload.flash_size", "4MB")
+ flash_mode = env["__get_board_flash_mode"](env)
+ flash_freq = env["__get_board_f_flash"](env)
- cmd = [
- "--chip",
- chip,
- "merge_bin",
- "-o",
- new_file_name,
- "--flash_mode",
- flash_mode,
- "--flash_freq",
- flash_freq,
- "--flash_size",
- flash_size,
- ]
+ cmd = [
+ "--chip",
+ chip,
+ "merge_bin",
+ "-o",
+ new_file_name,
+ "--flash_mode",
+ flash_mode,
+ "--flash_freq",
+ flash_freq,
+ "--flash_size",
+ flash_size,
+ ]
- print(" Offset | File")
- for section in sections:
- sect_adr, sect_file = section.split(" ", 1)
- print(f" - {sect_adr} | {sect_file}")
- cmd += [sect_adr, sect_file]
+ print(" Offset | File")
+ for section in sections:
+ sect_adr, sect_file = section.split(" ", 1)
+ print(f" - {sect_adr} | {sect_file}")
+ cmd += [sect_adr, sect_file]
- # "main" firmware to app0 - mandatory, except we just built a new safeboot bin locally
- if "safeboot" not in firmware_name:
- print(f" - {hex(app_offset)} | {firmware_name}")
- cmd += [hex(app_offset), firmware_name]
+ # "main" firmware to app0 - mandatory, except we just built a new safeboot bin locally
+ if ("safeboot" not in firmware_name):
+ print(f" - {hex(app_offset)} | {firmware_name}")
+ cmd += [hex(app_offset), firmware_name]
- else:
- print("Upload new safeboot binary only")
+ else:
+ print("Upload new safeboot binary only")
- upload_protocol = env.subst("$UPLOAD_PROTOCOL")
- if(upload_protocol == "esptool") and (fs_offset != -1):
- fs_bin = join(env.subst("$BUILD_DIR"),"littlefs.bin")
- if exists(fs_bin):
- before_reset = env.BoardConfig().get("upload.before_reset", "default_reset")
- after_reset = env.BoardConfig().get("upload.after_reset", "hard_reset")
- print(f" - {hex(fs_offset)}| {fs_bin}")
- cmd += [hex(fs_offset), fs_bin]
- env.Replace(
- UPLOADERFLAGS=[
- "--chip", chip,
- "--port", '"$UPLOAD_PORT"',
- "--baud", "$UPLOAD_SPEED",
- "--before", before_reset,
- "--after", after_reset,
- "write_flash", "-z",
- "--flash_mode", "${__get_board_flash_mode(__env__)}",
- "--flash_freq", "${__get_board_f_flash(__env__)}",
- "--flash_size", flash_size
- ],
- UPLOADCMD='"$PYTHONEXE" "$UPLOADER" $UPLOADERFLAGS ' + " ".join(cmd[7:])
- )
- print("Will use custom upload command for flashing operation to add file system defined for this build target.")
+ upload_protocol = env.subst("$UPLOAD_PROTOCOL")
+ if(upload_protocol == "esptool") and (fs_offset != -1):
+ fs_bin = join(env.subst("$BUILD_DIR"),"littlefs.bin")
+ if exists(fs_bin):
+ before_reset = env.BoardConfig().get("upload.before_reset", "default_reset")
+ after_reset = env.BoardConfig().get("upload.after_reset", "hard_reset")
+ print(f" - {hex(fs_offset)}| {fs_bin}")
+ cmd += [hex(fs_offset), fs_bin]
+ env.Replace(
+ UPLOADERFLAGS=[
+ "--chip", chip,
+ "--port", '"$UPLOAD_PORT"',
+ "--baud", "$UPLOAD_SPEED",
+ "--before", before_reset,
+ "--after", after_reset,
+ "write_flash", "-z",
+ "--flash_mode", "${__get_board_flash_mode(__env__)}",
+ "--flash_freq", "${__get_board_f_flash(__env__)}",
+ "--flash_size", flash_size
+ ],
+ UPLOADCMD='"$PYTHONEXE" "$UPLOADER" $UPLOADERFLAGS ' + " ".join(cmd[7:])
+ )
+ print("Will use custom upload command for flashing operation to add file system defined for this build target.")
- if("safeboot" not in firmware_name):
- #print('Using esptool.py arguments: %s' % ' '.join(cmd))
- esptool.main(cmd)
+ if("safeboot" not in firmware_name):
+ #print('Using esptool.py arguments: %s' % ' '.join(cmd))
+ esptool.main(cmd)
env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", esp32_create_combined_bin)
diff --git a/pio-tools/strip-flags.py b/pio-tools/strip-flags.py
new file mode 100644
index 000000000..981918273
--- /dev/null
+++ b/pio-tools/strip-flags.py
@@ -0,0 +1,15 @@
+Import('env')
+
+link_flags = env['LINKFLAGS']
+build_flags = " ".join(env['BUILD_FLAGS'])
+
+if "FIRMWARE_SAFEBOOT" in build_flags:
+ # Crash Recorder is not included in safeboot firmware -> remove Linker wrap
+ try:
+ link_flags.pop(link_flags.index("-Wl,--wrap=panicHandler"))
+ except:
+ do_nothing=""
+ try:
+ link_flags.pop(link_flags.index("-Wl,--wrap=xt_unhandled_exception"))
+ except:
+ do_nothing=""
\ No newline at end of file
diff --git a/pio-tools/strip-floats.py b/pio-tools/strip-floats.py
deleted file mode 100644
index dfb8916dc..000000000
--- a/pio-tools/strip-floats.py
+++ /dev/null
@@ -1,21 +0,0 @@
-Import('env')
-
-build_flags = " ".join(env.GetProjectOption("build_flags"))
-
-#
-# Dump build environment (for debug)
-#print env.Dump()
-#
-
-flags = " ".join(env['LINKFLAGS'])
-flags = flags.replace("-u _printf_float", "")
-flags = flags.replace("-u _scanf_float", "")
-if "FIRMWARE_SAFEBOOT" in build_flags:
- # Crash Recorder is not included in safeboot firmware -> remove Linker wrap
- flags = flags.replace("-Wl,--wrap=panicHandler", "")
- flags = flags.replace("-Wl,--wrap=xt_unhandled_exception", "")
-newflags = flags.split()
-
-env.Replace(
- LINKFLAGS=newflags
-)
\ No newline at end of file
diff --git a/platformio.ini b/platformio.ini
index 0f21033da..0a56d36eb 100644
--- a/platformio.ini
+++ b/platformio.ini
@@ -73,7 +73,7 @@ build_flags =
extra_scripts = pre:pio-tools/pre_source_dir.py
pre:pio-tools/set_partition_table.py
pre:pio-tools/override_copy.py
- post:pio-tools/strip-floats.py
+ post:pio-tools/strip-flags.py
[esp_defaults]
extra_scripts = post:pio-tools/name-firmware.py
@@ -121,18 +121,12 @@ build_flags = ${esp_defaults.build_flags}
; uncomment the following to enable TLS with 4096 RSA certificates
;-DUSE_4K_RSA
lib_ignore =
- Servo(esp8266)
- ESP8266AVRISP
ESP8266LLMNR
ESP8266NetBIOS
ESP8266SSDP
- SP8266WiFiMesh
- Ethernet(esp8266)
- GDBStub
- TFT_Touch_Shield_V2
- ESP8266HTTPUpdateServer
ESP8266WiFiMesh
- EspSoftwareSerial
+ GDBStub
+ ESP8266HTTPUpdateServer
SPISlave
Hash
; Disable next if you want to use ArduinoOTA in Tasmota (default disabled)
@@ -140,8 +134,8 @@ lib_ignore =
[core]
; *** Esp8266 Tasmota modified Arduino core based on core 2.7.4. Added Backport for PWM selection
-platform = https://github.com/tasmota/platform-espressif8266/releases/download/2024.01.01/platform-espressif8266.zip
-platform_packages = tool-esptoolpy @ https://github.com/tasmota/esptool/releases/download/v4.7.2/esptool.zip
+platform = https://github.com/tasmota/platform-espressif8266/releases/download/2024.06.00/platform-espressif8266.zip
+platform_packages =
build_unflags = ${esp_defaults.build_unflags}
build_flags = ${esp82xx_defaults.build_flags}
; *** Use ONE of the two PWM variants. Tasmota default is Locked PWM
diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini
index 83e69e23b..7604a1144 100644
--- a/platformio_override_sample.ini
+++ b/platformio_override_sample.ini
@@ -77,7 +77,8 @@ lib_extra_dirs = ${library.lib_extra_dirs}
[env:tasmota32_base]
; *** Uncomment next lines ";" to enable development Tasmota Arduino version ESP32
-;platform = https://github.com/tasmota/platform-espressif32.git
+;platform = https://github.com/Jason2866/platform-espressif32/releases/download/2024.07.22/platform-espressif32.zip
+
;platform_packages = framework-arduinoespressif32 @
; framework-arduino-solo1 @
; framework-arduino-ITEAD @
diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini
index b90c3aaa8..d8486c2e5 100644
--- a/platformio_tasmota32.ini
+++ b/platformio_tasmota32.ini
@@ -62,6 +62,7 @@ lib_ignore = ${esp32_defaults.lib_ignore}
EEPROM
EEPROM 24C128_256_521
MFRC522
+ JPEGDEC
universal display Library
ESP8266Audio
ESP8266SAM
@@ -81,7 +82,7 @@ lib_ignore = ${esp32_defaults.lib_ignore}
ccronexpr
[core32]
-platform = https://github.com/tasmota/platform-espressif32/releases/download/2024.05.13/platform-espressif32.zip
+platform = https://github.com/tasmota/platform-espressif32/releases/download/2024.08.10/platform-espressif32.zip
platform_packages =
build_unflags = ${esp32_defaults.build_unflags}
build_flags = ${esp32_defaults.build_flags}
diff --git a/platformio_tasmota_cenv_sample.ini b/platformio_tasmota_cenv_sample.ini
index 1fd7c5e17..3643e3d7c 100644
--- a/platformio_tasmota_cenv_sample.ini
+++ b/platformio_tasmota_cenv_sample.ini
@@ -81,8 +81,6 @@ build_flags = ${env:tasmota32_base.build_flags}
[env:tasmota32c3-bluetooth]
extends = env:tasmota32_base
board = esp32c3
-build_unflags = ${env:tasmota32_base.build_unflags}
- -mtarget-align
build_flags = ${env:tasmota32_base.build_flags}
-DFIRMWARE_BLUETOOTH
; -DUSE_EQ3_ESP32
@@ -111,8 +109,6 @@ lib_ignore = Micro-RTSP
[env:tasmota32c3-mi32]
extends = env:tasmota32_base
board = esp32c3
-build_unflags = ${env:tasmota32_base.build_unflags}
- -mtarget-align
build_flags = ${env:tasmota32_base.build_flags}
-DFIRMWARE_BLUETOOTH
-DUSE_MI_EXT_GUI
@@ -133,8 +129,6 @@ lib_ignore = Micro-RTSP
[env:tasmota32c6-mi32]
extends = env:tasmota32_base
board = esp32c6
-build_unflags = ${env:tasmota32_base.build_unflags}
- -mtarget-align
build_flags = ${env:tasmota32_base.build_flags}
-DFIRMWARE_BLUETOOTH
-DUSE_MI_EXT_GUI
diff --git a/platformio_tasmota_env32.ini b/platformio_tasmota_env32.ini
index 8876956d2..ef8d46a58 100644
--- a/platformio_tasmota_env32.ini
+++ b/platformio_tasmota_env32.ini
@@ -71,8 +71,6 @@ lib_ignore = ${safeboot_flags.lib_ignore}
extends = env:tasmota32_base
board = esp32c2
board_build.app_partition_name = safeboot
-build_unflags = ${env:tasmota32_base.build_unflags}
- -mno-target-align
build_flags = ${env:tasmota32_base.build_flags}
-DFIRMWARE_SAFEBOOT
-DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32c2-safeboot.bin"'
@@ -83,8 +81,6 @@ lib_ignore = ${safeboot_flags.lib_ignore}
extends = env:tasmota32_base
board = esp32c3
board_build.app_partition_name = safeboot
-build_unflags = ${env:tasmota32_base.build_unflags}
- -mno-target-align
build_flags = ${env:tasmota32_base.build_flags}
-DFIRMWARE_SAFEBOOT
-DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32c3-safeboot.bin"'
@@ -95,8 +91,6 @@ lib_ignore = ${safeboot_flags.lib_ignore}
extends = env:tasmota32_base
board = esp32c3ser
board_build.app_partition_name = safeboot
-build_unflags = ${env:tasmota32_base.build_unflags}
- -mno-target-align
build_flags = ${env:tasmota32_base.build_flags}
-DFIRMWARE_SAFEBOOT
-DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32c3ser-safeboot.bin"'
@@ -117,8 +111,6 @@ lib_ignore = ${safeboot_flags.lib_ignore}
extends = env:tasmota32_base
board = esp32c6
board_build.app_partition_name = safeboot
-build_unflags = ${env:tasmota32_base.build_unflags}
- -mno-target-align
build_flags = ${env:tasmota32_base.build_flags}
-DFIRMWARE_SAFEBOOT
-DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32c6-safeboot.bin"'
@@ -129,8 +121,6 @@ lib_ignore = ${safeboot_flags.lib_ignore}
extends = env:tasmota32_base
board = esp32c6ser
board_build.app_partition_name = safeboot
-build_unflags = ${env:tasmota32_base.build_unflags}
- -mno-target-align
build_flags = ${env:tasmota32_base.build_flags}
-DFIRMWARE_SAFEBOOT
-DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32c6ser-safeboot.bin"'
@@ -187,29 +177,29 @@ lib_ignore = ${env:tasmota32_base.lib_ignore}
[env:tasmota32c2]
extends = env:tasmota32_base
board = esp32c2
-build_unflags = ${env:tasmota32_base.build_unflags}
- -mno-target-align
build_flags = ${env:tasmota32_base.build_flags}
-DFIRMWARE_TASMOTA32
-DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32c2.bin"'
+lib_ignore = ${env:tasmota32_base.lib_ignore}
+ Micro-RTSP
[env:tasmota32c3]
extends = env:tasmota32_base
board = esp32c3
-build_unflags = ${env:tasmota32_base.build_unflags}
- -mno-target-align
build_flags = ${env:tasmota32_base.build_flags}
-DFIRMWARE_TASMOTA32
-DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32c3.bin"'
+lib_ignore = ${env:tasmota32_base.lib_ignore}
+ Micro-RTSP
[env:tasmota32c6]
extends = env:tasmota32_base
board = esp32c6
-build_unflags = ${env:tasmota32_base.build_unflags}
- -mno-target-align
build_flags = ${env:tasmota32_base.build_flags}
-DFIRMWARE_TASMOTA32
-DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32c6.bin"'
+lib_ignore = ${env:tasmota32_base.lib_ignore}
+ Micro-RTSP
[env:tasmota32s3]
extends = env:tasmota32_base
@@ -237,6 +227,8 @@ build_flags = ${env:tasmota32_base.build_flags}
-DFIRMWARE_BLUETOOTH
-DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32-bluetooth.bin"'
lib_extra_dirs = lib/libesp32, lib/libesp32_div, lib/lib_basic, lib/lib_i2c, lib/lib_ssl
+lib_ignore = ${env:tasmota32_base.lib_ignore}
+ Micro-RTSP
[env:tasmota32-display]
extends = env:tasmota32_base
@@ -244,6 +236,8 @@ build_flags = ${env:tasmota32_base.build_flags}
-DFIRMWARE_DISPLAYS
-DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32-display.bin"'
lib_extra_dirs = lib/libesp32, lib/lib_basic, lib/lib_display, lib/lib_ssl
+lib_ignore = ${env:tasmota32_base.lib_ignore}
+ Micro-RTSP
[env:tasmota32-lvgl]
extends = env:tasmota32_base
@@ -252,6 +246,8 @@ build_flags = ${env:tasmota32_base.build_flags}
-DOTA_URL='"http://ota.tasmota.com/tasmota32/release/tasmota32-lvgl.bin"'
board_build.f_cpu = 240000000L
lib_extra_dirs = lib/libesp32, lib/libesp32_lvgl, lib/lib_basic, lib/lib_i2c, lib/lib_rf, lib/lib_div, lib/lib_ssl, lib/lib_display
+lib_ignore = ${env:tasmota32_base.lib_ignore}
+ Micro-RTSP
[env:tasmota32-ir]
extends = env:tasmota32_base
diff --git a/tasmota/berry/gpio_viewer/debug_panel.be b/tasmota/berry/gpio_viewer/debug_panel.be
index 31759a72f..507dbb9c9 100644
--- a/tasmota/berry/gpio_viewer/debug_panel.be
+++ b/tasmota/berry/gpio_viewer/debug_panel.be
@@ -21,6 +21,7 @@ class debug_panel
var port
var web
var sampling_interval
+ var p1, p2
static var SAMPLING = 100
static var HTML_HEAD1 =
@@ -72,6 +73,9 @@ class debug_panel
self.web = webserver_async(port)
self.sampling_interval = self.SAMPLING
+ self.p1 = bytes(100)
+ self.p2 = bytes(100)
+
self.web.set_chunked(true)
self.web.set_cors(true)
self.web.on("/info_feed", self, self.send_info_feed)
@@ -107,9 +111,11 @@ class debug_panel
end
static class feeder
+ var app # overarching app (debug_panel)
var cnx # connection object
- def init(cnx)
+ def init(app, cnx)
+ self.app = app
self.cnx = cnx
tasmota.add_driver(self)
end
@@ -129,8 +135,8 @@ class debug_panel
return
end
- var payload1 = self.cnx.server.payload1
- var payload2 = self.cnx.server.payload2
+ var payload1 = self.app.p1
+ var payload2 = self.app.p2
var server = self.cnx.server
if cnx.buf_out_empty()
# if out buffer is not empty, do not send any new information
@@ -172,7 +178,7 @@ class debug_panel
cnx.set_chunked(false) # no chunking since we use EventSource
cnx.send(200, "text/event-stream")
#
- var feed = feeder(cnx)
+ var feed = feeder(self, cnx)
feed.send_feed() # send first values immediately
end
diff --git a/tasmota/berry/gpio_viewer/webserver_async.be b/tasmota/berry/gpio_viewer/webserver_async.be
deleted file mode 100644
index dc7801868..000000000
--- a/tasmota/berry/gpio_viewer/webserver_async.be
+++ /dev/null
@@ -1,642 +0,0 @@
-#
-# webserber_async.be - implements a generic async non-blocking HTTP server
-#
-# Copyright (C) 2023 Stephan Hadinger & Theo Arends
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-#
-
-# restrictions for now:
-#
-# Listen to all interfaces
-# - GET only
-# - no HTTPS
-# - support for limited headers
-# - HTTP 1.0 only
-
-#@ solidify:webserver_async
-#@ solidify:Webserver_async_cnx
-
-#############################################################
-# class Webserver_async_cnx
-#############################################################
-class Webserver_async_cnx
- var server # link to server object
- var cnx # holds the tcpclientasync instance
- var close_after_send # if true, close after sending
- var fastloop_cb # cb for fastloop
- var buf_in # incoming buffer
- var buf_in_offset
- var buf_out
- var phase # parsing phase: 0/ status line, 1/ headers, 2/ payload
- # request
- var req_verb
- var req_uri
- var req_version
- var header_host
- # response
- var resp_headers
- var resp_version
- var chunked # if true enable chunked encoding (default true)
- var cors # if true send CORS headers (default false)
- # bytes objects to be reused
- var payload1
- # conversion
- static var CODE_TO_STRING = {
- 100: "Continue",
- 200: "OK",
- 204: "No Content",
- 301: "Moved Permanently",
- 400: "Bad Request",
- 401: "Unauthorized",
- 403: "Payment Required",
- 404: "Not Found",
- 500: "Internal Server Error",
- 501: "Not Implemented"
- }
-
- #############################################################
- # init
- def init(server, cnx)
- self.server = server
- self.cnx = cnx
- self.buf_in = ''
- self.buf_in_offset = 0
- self.buf_out = bytes()
- self.phase = 0
- # util
- self.payload1 = bytes()
- self.close_after_send = false
- # response
- self.resp_headers = ''
- self.resp_version = 1 # HTTP 1.1 # TODO
- self.chunked = true
- self.cors = false
- # register cb
- self.fastloop_cb = def () self.loop() end
- tasmota.add_fast_loop(self.fastloop_cb)
- end
-
- def set_chunked(chunked)
- self.chunked = bool(chunked)
- end
-
- def set_cors(cors)
- self.cors = bool(cors)
- end
-
- #############################################################
- # test if connected
- def connected()
- return self.cnx ? self.cnx.connected() : false
- end
-
- #############################################################
- # test if out buffer is empty, meaning all was sent
- def buf_out_empty()
- return size(self.buf_out) == 0
- end
-
- #############################################################
- # write bytes or string
- #
- # v must be bytes()
- def _write(v)
- if (size(v) == 0) return end
-
- var buf_out = self.buf_out
- var buf_out_sz = size(buf_out)
- buf_out.resize(buf_out_sz + size(v))
- buf_out.setbytes(buf_out_sz, v)
-
- self._send() # try sending this now
- end
-
- #############################################################
- # closing web server
- def close()
- tasmota.log(f"WEB: closing cnx", 3)
- if (self.cnx != nil) self.cnx.close() end
- self.cnx = nil
- end
-
- #############################################################
- # called by fastloop
- def loop()
- if self.cnx == nil # marked for deletion
- # mark as closed with self.cnx == nil
- tasmota.remove_fast_loop(self.fastloop_cb)
- self.fastloop_cb = nil
- return
- end
-
- self._send() # try sending outgoing
-
- var cnx = self.cnx
- if (cnx == nil) return end # it's possible that it was closed after _send()
-
- # any incoming data?
- if cnx.available() > 0
- var buf_in_new = cnx.read()
- if (!self.buf_in)
- self.buf_in = buf_in_new
- else
- self.buf_in += buf_in_new
- end
- end
-
- # parse incoming if any
- if (self.buf_in)
- self.parse()
- end
- end
-
- #############################################################
- # try sending what we can immediately
- def _send()
- # any data waiting to go out?
- var cnx = self.cnx
- if (cnx == nil) return end
- var buf_out = self.buf_out
- if size(buf_out) > 0
- if cnx.listening()
- var sent = cnx.write(buf_out)
- if sent > 0
- # we did sent something
- if sent >= size(buf_out)
- # all sent
- self.buf_out.clear()
- else
- # remove the first bytes already sent
- self.buf_out.setbytes(0, buf_out, sent)
- self.buf_out.resize(size(buf_out) - sent)
- end
- end
- end
- else
- # empty buffer, do the cleaning
- self.buf_out.clear()
- self.buf_in_offset = 0
-
- if self.close_after_send
- self.close()
- end
- end
- end
-
- #############################################################
- # parse incoming
- #
- # pre: self.buf_in is not empty
- # post: self.buf_in has made progress (smaller or '')
- def parse()
- # tasmota.log(f"WEB: incoming {bytes().fromstring(self.buf_in).tohex()}", 3)
- if self.phase == 0
- self.parse_http_req_line()
- elif self.phase == 1
- self.parse_http_headers()
- elif self.phase == 2
- self.parse_http_payload()
- end
- end
-
- #############################################################
- # parse incoming request
- #
- # pre: self.buf_in is not empty
- # post: self.buf_in has made progress (smaller or '')
- def parse_http_req_line()
- var m = global._re_http_srv.match2(self.buf_in, self.buf_in_offset)
- # Ex: "GET / HTTP/1.1\r\n"
- if m
- var offset = m[0]
- self.req_verb = m[1] # GET/POST...
- self.req_uri = m[2] # /
- self.req_version = m[3] # "1.0" or "1.1"
- self.phase = 1 # proceed to parsing headers
- self.buf_in = self.buf_in[offset .. ] # remove what we parsed
- tasmota.log(f"WEB: HTTP verb: {self.req_verb} URI: '{self.req_uri}' Version:{self.req_version}", 3)
- self.parse_http_headers()
- elif size(self.buf_in) > 100 # if no match and we still have 100 bytes, then it fails
- tasmota.log("WEB: error invalid request", 3)
- self.close()
- self.buf_in = ''
- end
- end
-
- #############################################################
- # parse incoming headers
- def parse_http_headers()
- while true
- # print("parse_http_headers", "self.buf_in_offset=", self.buf_in_offset)
- var m = global._re_http_srv_header.match2(self.buf_in, self.buf_in_offset)
- # print("m=", m)
- # Ex: [32, 'Content-Type', 'application/json']
- if m
- self.event_http_header(m[1], m[2])
- self.buf_in_offset += m[0]
- else # no more headers
- var m2 = global._re_http_srv_body.match2(self.buf_in, self.buf_in_offset)
- if m2
- # end of headers
- # we keep \r\n which is used by pattern
- self.buf_in = self.buf_in[self.buf_in_offset + m2[0] .. ] # truncate
- self.buf_in_offset = 0
-
- self.event_http_headers_end() # no more headers
- self.phase = 2
- self.parse_http_payload() # continue to parsing payload
- end
- if size(self.buf_in) > 1024 # we don't accept a single header larger than 1KB
- tasmota.log("WEB: error header is bigger than 1KB", 3)
- self.close()
- self.buf_in = ''
- end
- return
- end
- end
-
-
- self.close()
- self.buf_in = ''
- end
-
- #############################################################
- # event_http_header
- #
- # Received header
- def event_http_header(header_key, header_value)
- # tasmota.log(f"WEB: header key '{header_key}' = '{header_value}'")
-
- if (header_key == "Host")
- self.header_host = header_value
- end
- end
-
- #############################################################
- # event_http_headers_end
- #
- # All headers are received
- def event_http_headers_end()
- end
-
- #############################################################
- # parse incoming payload (if any)
- def parse_http_payload()
- # tasmota.log(f"WEB: parsing payload '{bytes().fromstring(self.buf_in).tohex()}'")
- # dispatch request before parsing payload
- self.server.dispatch(self, self.req_uri, self.req_verb)
- end
-
-
- #############################################################
- # Responses
- #############################################################
- # parse incoming payload (if any)
- def send_header(name, value, first)
- if first
- self.resp_headers = f"{name}: {value}\r\n{self.resp_headers}"
- else
- self.resp_headers = f"{self.resp_headers}{name}: {value}\r\n"
- end
- end
-
- def send(code, content_type, content)
- var response = f"HTTP/1.{self.resp_version} {code} {self.code_to_string(code)}\r\n"
- if (content_type == nil) content_type = "text/html" end
- self.send_header("Content-Type", content_type, true)
-
- # force chunked TODO
- self.send_header("Accept-Ranges", "none")
- if self.chunked
- self.send_header("Transfer-Encoding", "chunked")
- end
- # cors
- if self.cors
- self.send_header("Access-Control-Allow-Origin", "*")
- self.send_header("Access-Control-Allow-Methods", "*")
- self.send_header("Access-Control-Allow-Headers", "*")
- end
- # others
- self.send_header("Connection", "close")
-
- response += self.resp_headers
- response += "\r\n"
- self.resp_headers = nil
-
- # send
- self.write_raw(response)
-
- if (content) self.write(content) end
- end
-
- static def code_to_string(code)
- return _class.CODE_TO_STRING.find(code, "UNKNOWN")
- end
-
- #############################################################
- # async write
- def write(v)
- if type(v) == 'string' # if string, convert to bytes
- v = bytes().fromstring(v)
- end
-
- # use chunk encoding
- if self.chunked
- var payload1 = self.payload1
- payload1.clear()
- payload1 .. f"{size(v):X}\r\n"
- payload1 .. v
- payload1 .. "\r\n"
-
- # var chunk = f"{size(v):X}\r\n{v}\r\n"
- # tasmota.log(f"WEB: sending chunk '{payload1.tohex()}'")
- self._write(payload1)
- else
- self._write(v)
- end
- end
-
- #############################################################
- # async write
- def write_raw(v)
- if (size(v) == 0) return end
-
- if type(v) == 'string' # if string, convert to bytes
- v = bytes().fromstring(v)
- end
-
- self._write(v)
- end
-
-
- def content_stop()
- self.write('')
- self.close_after_send = true
- end
-end
-
-#############################################################
-# class Webserver_dispatcher
-#############################################################
-class Webserver_dispatcher
- var uri_prefix # prefix string, must start with '/'
- var verb # verb to match, or nil for ANY
- var cb_obj
- var cb_mth
-
- def init(uri, cb_obj, cb_mth, verb)
- self.uri_prefix = uri
- self.cb_obj = cb_obj
- self.cb_mth = cb_mth
- self.verb = verb
- end
-
- # return true if matched
- def dispatch(cnx, uri, verb)
- import string
- if string.find(uri, self.uri_prefix) == 0
- var match = false
- if (self.verb == nil) || (self.verb == verb)
- # method is valid
- self.cb_mth(self.cb_obj, cnx, uri, verb)
- return true
- end
- end
- return false
- end
-end
-
-#############################################################
-# class webserver_async
-#
-# This is the main class to call
-#############################################################
-class webserver_async
- var local_port # listening port, 80 is already used by Tasmota
- var server # instance of `tcpserver`
- var fastloop_cb # closure used by fastloop
- var timeout # default timeout for tcp connection
- var connections # list of active connections
- # var timeout # timeout in ms
- # var auth # web authentication string (Basic Auth) or `nil`, in format `user:password` as bade64
- # var cmd # GET url command
- var dispatchers
- # copied in each connection
- var chunked # if true enable chunked encoding (default true)
- var cors # if true send CORS headers (default false)
- #
- var payload1, payload2 # temporary object bytes() to avoid reallocation
-
- static var TIMEOUT = 1000 # default timeout: 1000ms
- static var HTTP_REQ = "^(\\w+) (\\S+) HTTP\\/(\\d\\.\\d)\r\n"
- static var HTTP_HEADER_REGEX = "([A-Za-z0-9-]+): (.*?)\r\n" # extract a header with its 2 parts
- static var HTTP_BODY_REGEX = "\r\n" # end of headers
-
- #############################################################
- # init
- def init(port, timeout)
- if (timeout == nil) timeout = self.TIMEOUT end
- self.connections = []
- self.dispatchers = []
- self.server = tcpserver(port) # throws an exception if port is not available
- self.chunked = true
- self.cors = false
- self.payload1 = bytes(100) # reserve 100 bytes by default
- self.payload2 = bytes(100) # reserve 100 bytes by default
- # TODO what about max_clients ?
- self.compile_re()
- # register cb
- tasmota.add_driver(self)
- self.fastloop_cb = def () self.loop() end
- tasmota.add_fast_loop(self.fastloop_cb)
- end
-
- #############################################################
- # compile once for all the regex
- def compile_re()
- import re
- if !global.contains("_re_http_srv")
- global._re_http_srv = re.compile(self.HTTP_REQ)
- global._re_http_srv_header = re.compile(self.HTTP_HEADER_REGEX)
- global._re_http_srv_body = re.compile(self.HTTP_BODY_REGEX)
- end
- end
-
- #############################################################
- # enable or disable chunked mode (enabled by default)
- def set_chunked(chunked)
- self.chunked = bool(chunked)
- end
-
- #############################################################
- # enable or disable CORS mode (enabled by default)
- def set_cors(cors)
- self.cors = bool(cors)
- end
-
- #############################################################
- # Helper function to encode integer as hex (uppercase)
- static def bytes_format_hex(b, i, default)
- b.clear()
- if (i == nil) b .. default return end
- # sanity check
- if (i < 0) i = -i end
- if (i < 0) return end # special case for MININT
- if (i == 0) b.resize(1) b[0] = 0x30 return end # return bytes("30")
-
- b.resize(8)
- var len = 0
- while i > 0
- var digit = i & 0x0F
- if (digit < 10)
- b[len] = 0x30 + digit
- else
- b[len] = 0x37 + digit # 0x37 = 0x41 ('A') - 10
- end
- len += 1
- i = (i >> 4)
- end
- # reverse order
- b.resize(len)
- b.reverse()
- end
-
- #############################################################
- # Helper function to encode integer as int
- static def bytes_format_int(b, i, default)
- b.clear()
- if (i == nil) b .. default return end
- var negative = false
- # sanity check
- if (i < 0) i = -i negative = true end
- if (i < 0) return end # special case for MININT
- if (i == 0) b.resize(1) b[0] = 0x30 return end # return bytes("30")
-
- b.resize(11) # max size for 32 bits ints '-2147483647'
- var len = 0
- while i > 0
- var digit = i % 10
- b[len] = 0x30 + digit
- len += 1
- i = (i / 10)
- end
- if negative
- b[len] = 0x2D
- len += 1
- end
- # reverse order
- b.resize(len)
- b.reverse()
- end
-
- #############################################################
- # closing web server
- def close()
- tasmota.remove_driver(self)
- tasmota.remove_fast_loop(self.fastloop_cb)
- self.fastloop_cb = nil
- self.server.close()
-
- # close all active connections
- for cnx: self.connections
- cnx.close()
- end
- self.connections = nil # and free memory
- end
-
- #############################################################
- # clean connections
- #
- # Remove any connections that is closed or in error
- def clean_connections()
- var idx = 0
- while idx < size(self.connections)
- var cnx = self.connections[idx]
- # remove if not connected
- if !cnx.connected()
- # tasmota.log("WEB: does not appear to be connected")
- cnx.close()
- self.connections.remove(idx)
- else
- idx += 1
- end
- end
- end
-
- #############################################################
- # called by fastloop
- def loop()
- self.clean_connections()
- # check if any incoming connection
- while self.server.hasclient()
- # retrieve new client
- var cnx = Webserver_async_cnx(self, self.server.acceptasync())
- cnx.set_chunked(self.chunked)
- cnx.set_cors(self.cors)
- self.connections.push(cnx)
- end
- end
-
- #############################################################
- # add to dispatcher
- def on(prefix, obj, mth, verb)
- var dispatcher = Webserver_dispatcher(prefix, obj, mth, verb)
- self.dispatchers.push(dispatcher)
- end
-
- #############################################################
- # add to dispatcher
- def dispatch(cnx, uri, verb)
- var idx = 0
- while idx < size(self.dispatchers)
- if (self.dispatchers[idx].dispatch(cnx, uri, verb))
- return
- end
- idx += 1
- end
- # fallback unsupported request
- cnx.send(500, "text/plain")
- cnx.write("Unsupported")
- cnx.content_stop()
- end
-
-end
-
-return webserver_async
-
-#- Test
-
-var web = webserver_async(888)
-
-def send_more(cnx, i)
- cnx.write(f"Hello world {i}
")
- if i < 10
- tasmota.set_timer(1000, def () send_more(cnx, i+1) end)
- else
- cnx.content_stop()
- end
-end
-
-def f(obj, cnx, uri, verb)
- cnx.send(200, "text/html")
- cnx.write("")
- send_more(cnx, 0)
- # cnx.write("Hello world")
- # cnx.content_stop()
-end
-
-web.on("/hello", nil, f)
-
--#
diff --git a/tasmota/berry/include/be_gpio_defines.h b/tasmota/berry/include/be_gpio_defines.h
index 61bd20c71..9b9880872 100644
--- a/tasmota/berry/include/be_gpio_defines.h
+++ b/tasmota/berry/include/be_gpio_defines.h
@@ -350,6 +350,7 @@ const be_const_member_t lv_gpio_constants[] = {
{ "WIEGAND_D0", (int32_t) GPIO_WIEGAND_D0 },
{ "WIEGAND_D1", (int32_t) GPIO_WIEGAND_D1 },
{ "WINDMETER_SPEED", (int32_t) GPIO_WINDMETER_SPEED },
+ { "WOOLIIS_RX", (int32_t) GPIO_WOOLIIS_RX },
{ "WS2812", (int32_t) GPIO_WS2812 },
{ "XPT2046_CS", (int32_t) GPIO_XPT2046_CS },
{ "ZEROCROSS", (int32_t) GPIO_ZEROCROSS },
diff --git a/tasmota/berry/modules/Partition_Wizard.tapp b/tasmota/berry/modules/Partition_Wizard.tapp
index 8198ccd14..278ba857c 100644
Binary files a/tasmota/berry/modules/Partition_Wizard.tapp and b/tasmota/berry/modules/Partition_Wizard.tapp differ
diff --git a/tasmota/berry/modules/Partition_Wizard/autoexec.be b/tasmota/berry/modules/Partition_Wizard/autoexec.be
index da230371a..e1b45bc74 100644
--- a/tasmota/berry/modules/Partition_Wizard/autoexec.be
+++ b/tasmota/berry/modules/Partition_Wizard/autoexec.be
@@ -1,2 +1,2 @@
-# rm Partition_Wizard.tapp; zip -j -0 Partition_Wizard.tapp Partition_Wizard/*
+# rm Partition_Wizard.tapp; zip -j -0 Partition_Wizard.tapp Partition_Wizard/autoexec.be Partition_Wizard/partition_wizard.bec
import partition_wizard
diff --git a/tasmota/berry/modules/Partition_Wizard/partition_wizard.bec b/tasmota/berry/modules/Partition_Wizard/partition_wizard.bec
index 3f884314c..1a77a823c 100644
Binary files a/tasmota/berry/modules/Partition_Wizard/partition_wizard.bec and b/tasmota/berry/modules/Partition_Wizard/partition_wizard.bec differ
diff --git a/tasmota/displaydesc/Lanbon_L8_display.ini b/tasmota/displaydesc/Lanbon_L8_display.ini
index 23ffc0f07..b1f66f350 100644
--- a/tasmota/displaydesc/Lanbon_L8_display.ini
+++ b/tasmota/displaydesc/Lanbon_L8_display.ini
@@ -18,5 +18,19 @@
:2,00,00,00,02
:3,60,00,00,03
:i,20,21
-:TI1,38,0,4
+:UTI,FT6336U,I1,38,*,*
+RD A0
+CP 02
+RTF
+RT
+:UTT
+RDM 00 16
+MV 2 1
+RT
+:UTX
+MV 3 2
+RT
+:UTY
+MV 5 2
+RT
#
diff --git a/tasmota/displaydesc/M5stack_core2_display.ini b/tasmota/displaydesc/M5stack_core2_display.ini
index 9426de46b..b0b0b82d2 100644
--- a/tasmota/displaydesc/M5stack_core2_display.ini
+++ b/tasmota/displaydesc/M5stack_core2_display.ini
@@ -34,5 +34,19 @@ E1,0F,00,0E,14,03,11,07,31,C1,48,08,0F,0C,31,36,0F
:2,C8,00,00,02
:3,68,00,00,85
:i,21,20
-:TI2,38,22,21
+:UTI,FT6336U,I2,38,-1,-1
+RD A0
+CP 02
+RTF
+RT
+:UTT
+RDM 00 16
+MV 2 1
+RT
+:UTX
+MV 3 2
+RT
+:UTY
+MV 5 2
+RT
#
diff --git a/tasmota/displaydesc/WeAct_epaper42_display.ini b/tasmota/displaydesc/WeAct_epaper42_display.ini
new file mode 100644
index 000000000..e9b0eff2a
--- /dev/null
+++ b/tasmota/displaydesc/WeAct_epaper42_display.ini
@@ -0,0 +1,41 @@
+:H,E-PAPER-42-WeAct,400,300,1,SPI,4,*,*,*,*,*,*,*,10
+:S,1,1,1,0,10,10
+:I
+12,0
+63,1,80
+01,3,2b,01,01
+3c,1,01
+67,0;
+20,0
+63,1,80
+24,0
+66,0
+20,0
+63,1,80
+62,0
+:f
+64,0
+65,0
+24,0
+66,0
+21,2,40,00
+22,1,f7
+20,0
+63,1,80
+:p
+62,0
+22,1,c0
+20,0
+63,1,80
+64,0
+65,0
+24,0
+66,0
+21,2,00,00
+22,1,fc
+20,0
+63,1,80
+62,0
+
+:T,350,35,10
+#
diff --git a/tasmota/include/i18n.h b/tasmota/include/i18n.h
index 6b17b534a..5555ec9d9 100644
--- a/tasmota/include/i18n.h
+++ b/tasmota/include/i18n.h
@@ -46,7 +46,9 @@
#define D_JSON_BSSID "BSSId"
#define D_JSON_BUTTON "Button"
#define D_JSON_BUILDDATETIME "BuildDateTime"
+#define D_JSON_CAPACITY "Capacity"
#define D_JSON_CHANNEL "Channel"
+#define D_JSON_CHARGING "Charging"
#define D_JSON_CO2 "CarbonDioxide"
#define D_JSON_CODINGRATE4 "CodingRate4"
#define D_JSON_COMMAND "Command"
@@ -609,6 +611,7 @@
// Commands xdrv_08_serial_bridge.ino
#define D_CMND_SSERIALSEND "SSerialSend"
#define D_CMND_SBAUDRATE "SBaudrate"
+#define D_CMND_SSERIALMODE "SSerialMode"
#define D_CMND_SSERIALBUFFER "SSerialBuffer"
#define D_CMND_SSERIALCONFIG "SSerialConfig"
#define D_JSON_SSERIALRECEIVED "SSerialReceived"
@@ -814,7 +817,8 @@
#define D_CMND_DALI_DIMMER "dim"
// Commands xsns_02_analog.ino
-#define D_CMND_ADCPARAM "AdcParam"
+#define D_CMND_ADCGPIO "Gpio"
+#define D_CMND_ADCPARAM "Param"
// Commands xsns_05_ds18x20.ino
#define D_CMND_DS_ALIAS "Alias"
@@ -960,6 +964,7 @@ const char HTTP_SNS_HR[] PROGMEM = " ";
const char HTTP_SNS_F_TEMP[] PROGMEM = "{s}%s " D_TEMPERATURE "{m}%*_f " D_UNIT_DEGREE "%c{e}";
const char HTTP_SNS_F_VOLTAGE[] PROGMEM = "{s}%s " D_VOLTAGE "{m}%*_f " D_UNIT_VOLT "{e}";
+const char HTTP_SNS_F_CURRENT[] PROGMEM = "{s}%s " D_CURRENT "{m}%*_f " D_UNIT_AMPERE "{e}";
const char HTTP_SNS_F_CURRENT_MA[] PROGMEM = "{s}%s " D_CURRENT "{m}%*_f " D_UNIT_MILLIAMPERE "{e}";
const char HTTP_SNS_F_DISTANCE_CM[] PROGMEM = "{s}%s " D_DISTANCE "{m}%1_f " D_UNIT_CENTIMETER "{e}";
const char HTTP_SNS_F_NOX[] PROGMEM = "{s}%s " D_NOX "{m}%*_f " "{e}";
diff --git a/tasmota/include/tasmota.h b/tasmota/include/tasmota.h
index 06a2c9dd3..31f6ce7c8 100644
--- a/tasmota/include/tasmota.h
+++ b/tasmota/include/tasmota.h
@@ -80,7 +80,7 @@ const uint8_t MAX_DOMOTICZ_SNS_IDX = 12; // Max number of Domoticz sensors in
const uint8_t MAX_KNX_GA = 10; // Max number of KNX Group Addresses to read that can be set
const uint8_t MAX_KNX_CB = 10; // Max number of KNX Group Addresses to write that can be set
const uint8_t MAX_XNRG_DRIVERS = 32; // Max number of allowed energy drivers
-const uint8_t MAX_XDRV_DRIVERS = 96; // Max number of allowed driver drivers
+const uint8_t MAX_XDRV_DRIVERS = 128; // Max number of allowed driver drivers
const uint8_t MAX_XSNS_DRIVERS = 128; // Max number of allowed sensor drivers
const uint8_t MAX_I2C_DRIVERS = 96; // Max number of allowed i2c drivers
const uint8_t MAX_SHUTTERS = 4; // Max number of shutters
diff --git a/tasmota/include/tasmota_configurations.h b/tasmota/include/tasmota_configurations.h
index 80401756f..2cecc2d46 100644
--- a/tasmota/include/tasmota_configurations.h
+++ b/tasmota/include/tasmota_configurations.h
@@ -356,6 +356,8 @@
#define USE_DISPLAY_TM1637 // [DisplayModel 15] Enable TM1637 module
#define USE_DISPLAY_MAX7219 // [DisplayModel 19] Enable MAX7219 7-segment module
+#define USE_TM1638 // Add support for TM1638 switches copying Switch1 .. Switch8 (+1k code)
+
#define USE_I2C // I2C using library wire (+10k code, 0k2 mem, 124 iram)
#define USE_DISPLAY_MODES1TO5 // Enable display mode 1 to 5 in addition to mode 0
#define USE_DISPLAY_LCD // [DisplayModel 1] Enable Lcd display (I2C addresses 0x27 and 0x3F) (+6k code)
diff --git a/tasmota/include/tasmota_configurations_ESP32.h b/tasmota/include/tasmota_configurations_ESP32.h
index c323ec5f0..f6ac7fc22 100644
--- a/tasmota/include/tasmota_configurations_ESP32.h
+++ b/tasmota/include/tasmota_configurations_ESP32.h
@@ -825,5 +825,13 @@
#endif // USE_MATTER_DEVICE
+/*********************************************************************************************\
+ * Post-process compile options for esp32-c2
+\*********************************************************************************************/
+
+#ifdef CONFIG_IDF_TARGET_ESP32C2
+ #undef USE_ETHERNET
+#endif // CONFIG_IDF_TARGET_ESP32C2
+
#endif // ESP32
#endif // _TASMOTA_CONFIGURATIONS_ESP32_H_
diff --git a/tasmota/include/tasmota_template.h b/tasmota/include/tasmota_template.h
index 78343eb5a..7005d81bf 100644
--- a/tasmota/include/tasmota_template.h
+++ b/tasmota/include/tasmota_template.h
@@ -166,8 +166,8 @@ enum UserSelectablePins {
#ifdef ESP32
GPIO_KEY1_PD, GPIO_KEY1_INV_PD, GPIO_SWT1_PD,
#endif
- GPIO_I2S_DOUT, GPIO_I2S_BCLK, GPIO_I2S_WS,
- GPIO_I2S_DIN, GPIO_I2S_BCLK_IN, GPIO_I2S_WS_IN,
+ GPIO_I2S_DOUT, GPIO_I2S_BCLK, GPIO_I2S_WS, GPIO_I2S_DIN,
+ GPIO_I2S_BCLK_IN, GPIO_I2S_WS_IN, // Spare since 20240603
GPIO_INTERRUPT,
GPIO_MCP2515_CS, // MCP2515 Chip Select
GPIO_HRG15_TX, GPIO_HRG15_RX, // Hydreon RG-15 rain sensor serial interface
@@ -221,6 +221,8 @@ enum UserSelectablePins {
GPIO_RN2XX3_TX, GPIO_RN2XX3_RX, GPIO_RN2XX3_RST, // RN2XX3 LoRaWan node Serial interface
GPIO_TCP_TX_EN, // TCP to serial bridge, EN pin
GPIO_ASR650X_TX, GPIO_ASR650X_RX, // ASR650X LoRaWan node Serial interface
+ GPIO_WOOLIIS_RX, // Wooliis Battery capacity monitor Serial RX
+ GPIO_ADC_VOLTAGE, GPIO_ADC_CURRENT, // Analog Voltage and Current
GPIO_SENSOR_END };
// Error as warning to rethink GPIO usage with max 2045
@@ -231,7 +233,7 @@ enum ProgramSelectablePins {
GPIO_USER, // User configurable needs to be 2047
GPIO_MAX };
-#define MAX_OPTIONS_A 7 // Increase if more bits are used from GpioOptionABits
+#define MAX_OPTIONS_A 8 // Increase if more bits are used from GpioOptionABits
typedef union { // Restricted by MISRA-C Rule 18.4 but so useful...
uint32_t data; // Allow bit manipulation using SetOption
@@ -243,7 +245,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu
uint32_t rotary_mi_desk : 1; // bit 4 (v9.5.0.5) - Option_A5 - (Rotary) Enable Mi Desk emulation
uint32_t linkind_support : 1; // bit 5 (v10.1.0.4) - Option_A6 - (Light) LinkInd support
uint32_t shelly_pro : 1; // bit 6 (v12.2.0.1) - Option_A7 - (Device) Shelly Pro
- uint32_t spare07 : 1; // bit 7
+ uint32_t ifan04_h : 1; // bit 7 (v14.1.0.4) - Option_A8 - (Device) Sonoff ifan04-H
uint32_t spare08 : 1; // bit 8
uint32_t spare09 : 1; // bit 9
uint32_t spare10 : 1; // bit 10
@@ -429,8 +431,8 @@ const char kSensorNames[] PROGMEM =
#ifdef ESP32
D_SENSOR_BUTTON "_d|" D_SENSOR_BUTTON "_id|" D_SENSOR_SWITCH "_d|"
#endif
- D_SENSOR_I2S_DOUT "|" D_SENSOR_I2S_BCLK "|" D_SENSOR_I2S_WS "|"
- D_SENSOR_I2S_DIN "|" D_SENSOR_I2S_BCLK_IN "|" D_SENSOR_I2S_WS_IN "|"
+ D_SENSOR_I2S_DOUT "|" D_SENSOR_I2S_BCLK "|" D_SENSOR_I2S_WS "|" D_SENSOR_I2S_DIN "|"
+ D_SENSOR_I2S_BCLK_IN "|" D_SENSOR_I2S_WS_IN "|"
D_SENSOR_INTERRUPT "|"
D_SENSOR_MCP2515_CS "|"
D_SENSOR_HRG15_TX "|" D_SENSOR_HRG15_RX "|"
@@ -489,6 +491,8 @@ const char kSensorNames[] PROGMEM =
D_GPIO_RN2XX3_TX "|" D_GPIO_RN2XX3_RX "|" D_GPIO_RN2XX3_RST "|"
D_SENSOR_TCP_TXD_EN "|"
D_GPIO_ASR650X_TX "|" D_GPIO_ASR650X_RX "|"
+ D_SENSOR_WOOLIIS_RX "|"
+ D_SENSOR_ADC_VOLTAGE "|" D_SENSOR_ADC_CURRENT "|"
;
const char kSensorNamesFixed[] PROGMEM =
@@ -509,6 +513,7 @@ const char kSensorNamesFixed[] PROGMEM =
#define MAX_DINGTIAN_SHIFT 4
#define MAX_MAGIC_SWITCH_MODES 2
#define MAX_BL0942_RX 8 // Baudrates 1/5 (4800), 2/6 (9600), 3/7 (19200), 4/8 (38400), Support Positive values only 1..4, Support also negative values 5..8
+#define MAX_CSE7761 2 // Model 1/2 (DUALR3), 2/2 (POWCT)
const uint16_t kGpioNiceList[] PROGMEM = {
GPIO_NONE, // Not used
@@ -600,10 +605,6 @@ const uint16_t kGpioNiceList[] PROGMEM = {
AGPIO(GPIO_I2S_WS) + MAX_I2S, // I2S word select
AGPIO(GPIO_I2S_DIN) + MAX_I2S, // I2S IN Data
#endif
-#ifdef USE_I2S
- AGPIO(GPIO_I2S_BCLK_IN) + MAX_I2S, // I2S bit clock in
- AGPIO(GPIO_I2S_WS_IN) + MAX_I2S, // I2S word select in
-#endif
#ifdef USE_SPI
AGPIO(GPIO_SPI_MISO) + MAX_SPI, // SPI MISO
@@ -890,7 +891,7 @@ const uint16_t kGpioNiceList[] PROGMEM = {
#endif // USE_ADE7953
#ifdef USE_CSE7761
AGPIO(GPIO_CSE7761_TX), // CSE7761 Serial interface (Dual R3)
- AGPIO(GPIO_CSE7761_RX), // CSE7761 Serial interface (Dual R3)
+ AGPIO(GPIO_CSE7761_RX) + MAX_CSE7761, // CSE7761 Serial interface (1 = Dual R3, 2 = POWCT)
#endif
#ifdef USE_CSE7766
AGPIO(GPIO_CSE7766_TX), // CSE7766 Serial interface (S31 and Pow R2)
@@ -1098,6 +1099,9 @@ const uint16_t kGpioNiceList[] PROGMEM = {
AGPIO(GPIO_ASR650X_TX),
AGPIO(GPIO_ASR650X_RX), // ASR650X LoRaWan node Serial interface
#endif
+#ifdef USE_WOOLIIS // xsns_115_wooliis.ino
+ AGPIO(GPIO_WOOLIIS_RX), // Wooliis Battery capacity monitor Serial interface
+#endif
/*-------------------------------------------------------------------------------------------*\
* Other sensors
@@ -1222,6 +1226,11 @@ const uint16_t kGpioNiceList[] PROGMEM = {
AGPIO(GPIO_ETH_PHY_MDC),
AGPIO(GPIO_ETH_PHY_MDIO), // Ethernet
#endif // USE_ETHERNET
+#ifdef USE_BIOPDU
+ AGPIO(GPIO_BIOPDU_PZEM0XX_TX), // Biomine BioPDU pins
+ AGPIO(GPIO_BIOPDU_PZEM016_RX),
+ AGPIO(GPIO_BIOPDU_BIT) + 3,
+#endif
/*-------------------------------------------------------------------------------------------*\
* ESP32 multiple Analog / Digital converter inputs
@@ -1237,12 +1246,8 @@ const uint16_t kGpioNiceList[] PROGMEM = {
AGPIO(GPIO_ADC_JOY) + MAX_ADCS, // Joystick
AGPIO(GPIO_ADC_PH) + MAX_ADCS, // Analog PH Sensor
AGPIO(GPIO_ADC_MQ) + MAX_ADCS, // Analog MQ Sensor
-
-#ifdef USE_BIOPDU
- AGPIO(GPIO_BIOPDU_PZEM0XX_TX), // Biomine BioPDU pins
- AGPIO(GPIO_BIOPDU_PZEM016_RX),
- AGPIO(GPIO_BIOPDU_BIT) + 3,
-#endif
+ AGPIO(GPIO_ADC_VOLTAGE) + MAX_ADCS, // Voltage
+ AGPIO(GPIO_ADC_CURRENT) + MAX_ADCS, // Current
#endif // ESP32
};
@@ -1263,26 +1268,11 @@ const uint16_t kAdcNiceList[] PROGMEM = {
AGPIO(GPIO_ADC_JOY), // Joystick
AGPIO(GPIO_ADC_PH), // Analog PH Sensor
AGPIO(GPIO_ADC_MQ), // Analog MQ Sensor
+ AGPIO(GPIO_ADC_VOLTAGE), // Voltage
+ AGPIO(GPIO_ADC_CURRENT), // Current
};
#endif // ESP8266
-// User selectable ADC functionality
-enum UserSelectableAdc {
- ADC_NONE, // Not used
- ADC_INPUT, // Analog input
- ADC_TEMP, // Thermistor
- ADC_LIGHT, // Light sensor
- ADC_BUTTON, // Button
- ADC_BUTTON_INV,
- ADC_RANGE, // Range
- ADC_CT_POWER, // Current
- ADC_JOY, // Joystick
- ADC_PH, // Analog PH Sensor
- ADC_MQ, // Analog MQ Sensor
-// ADC_SWITCH, // Switch
-// ADC_SWITCH_INV,
- ADC_END };
-
/*********************************************************************************************\
* ATTENTION: No user changeable features beyond this point - do not add templates !!!
\*********************************************************************************************/
diff --git a/tasmota/include/tasmota_types.h b/tasmota/include/tasmota_types.h
index 97f0a2c9d..ddd0566a6 100755
--- a/tasmota/include/tasmota_types.h
+++ b/tasmota/include/tasmota_types.h
@@ -180,7 +180,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu
uint32_t data; // Allow bit manipulation using SetOption
struct { // SetOption146 .. SetOption177
uint32_t use_esp32_temperature : 1; // bit 0 (v12.1.1.1) - SetOption146 - (ESP32) Show ESP32 internal temperature sensor
- uint32_t mqtt_disable_sserialrec : 1; // bit 1 (v12.1.1.2) - SetOption147 - (MQTT) Disable publish SSerialReceived MQTT messages, you must use event trigger rules instead.
+ uint32_t mqtt_disable_publish : 1; // bit 1 (v12.1.1.2) - SetOption147 - (MQTT) Disable publish SSerialReceived/IRReceived MQTT messages, you must use event trigger rules instead.
uint32_t artnet_autorun : 1; // bit 2 (v12.2.0.4) - SetOption148 - (Light) start DMX ArtNet at boot, listen to UDP port as soon as network is up
uint32_t dns_ipv6_priority : 1; // bit 3 (v12.2.0.6) - SetOption149 - (Wifi) prefer IPv6 DNS resolution to IPv4 address when available. Requires `#define USE_IPV6`
uint32_t no_voltage_common : 1; // bit 4 (v12.3.1.5) - SetOption150 - (Energy) Force no voltage/frequency common
@@ -286,7 +286,7 @@ typedef union {
uint32_t sspm_display : 1; // bit 8 (v10.0.0.4) - CMND_SSPMDISPLAY - Enable gui display of powered on relays only
uint32_t local_ntp_server : 1; // bit 9 (v11.0.0.4) - CMND_RTCNTPSERVER - Enable local NTP server
uint32_t influxdb_sensor : 1; // bit 10 (v11.0.0.5) - CMND_IFXSENSOR - Enable sensor support in addition to teleperiod support
- uint32_t serbridge_console : 1; // bit 11 (v11.1.0.4) - CMND_SSERIALSEND9 - Enable logging tee to serialbridge
+ uint32_t ex_serbridge_console : 1; // bit 11 (v11.1.0.4) - (v14.1.0.2) Replaced by CMND_SSERIALMODE
uint32_t telegram_disable_af : 1; // bit 12 (v14.0.0.2) - CMND_TMSTATE 6/7 - Disable Telegram auto-fingerprint fix
uint32_t spare13 : 1; // bit 13
uint32_t spare14 : 1; // bit 14
@@ -515,6 +515,7 @@ typedef struct {
uint8_t text_pool_290[66]; // 290
// End of single char array of 698 chars max ****************
+
uint8_t display_model; // 2D2
uint8_t display_mode; // 2D3
uint8_t display_refresh; // 2D4
@@ -561,9 +562,9 @@ typedef struct {
uint16_t energy_max_power_limit; // 386 MaxPowerLimit
uint16_t energy_max_power_limit_hold; // 388 MaxPowerLimitHold
uint16_t energy_max_power_limit_window; // 38A MaxPowerLimitWindow
- uint16_t energy_max_power_safe_limit; // 38C MaxSafePowerLimit
- uint16_t energy_max_power_safe_limit_hold; // 38E MaxSafePowerLimitHold
- uint16_t energy_max_power_safe_limit_window; // 390 MaxSafePowerLimitWindow
+ uint16_t ex_energy_max_power_safe_limit; // 38C MaxSafePowerLimit - Free since 14.1.0.3
+ uint16_t ex_energy_max_power_safe_limit_hold; // 38E MaxSafePowerLimitHold - Free since 14.1.0.3
+ uint16_t ex_energy_max_power_safe_limit_window; // 390 MaxSafePowerLimitWindow - Free since 14.1.0.3
uint16_t energy_max_energy; // 392 MaxEnergy
uint16_t energy_max_energy_start; // 394 MaxEnergyStart
uint16_t mqtt_retry; // 396
@@ -832,9 +833,7 @@ typedef struct {
uint8_t windmeter_tele_pchange; // F3E
uint8_t ledpwm_on; // F3F
uint8_t ledpwm_off; // F40
-
- uint8_t ex_tcp_baudrate; // F41 ex_tcp_baudrate, free since v14.0.0.4
-
+ uint8_t sserial_mode; // F41
uint8_t fallback_module; // F42
uint8_t shutter_mode; // F43
uint16_t energy_power_delta[3]; // F44
diff --git a/tasmota/include/tasmota_version.h b/tasmota/include/tasmota_version.h
index 9b18a6fd2..8edd72ca9 100644
--- a/tasmota/include/tasmota_version.h
+++ b/tasmota/include/tasmota_version.h
@@ -22,6 +22,6 @@
#define TASMOTA_SHA_SHORT // Filled by Github sed
-const uint32_t TASMOTA_VERSION = 0x0E010000; // 14.1.0.0
+const uint32_t TASMOTA_VERSION = 0x0E020000; // 14.2.0.0
#endif // _TASMOTA_VERSION_H_
diff --git a/tasmota/include/xsns_62_esp32_mi.h b/tasmota/include/xsns_62_esp32_mi.h
index 004d9413a..9995b2ff1 100644
--- a/tasmota/include/xsns_62_esp32_mi.h
+++ b/tasmota/include/xsns_62_esp32_mi.h
@@ -44,8 +44,7 @@ struct frame_crtl_t{
};
struct mi_payload_t{
- uint8_t type;
- uint8_t ten;
+ uint16_t type;
uint8_t size;
union {
struct{ //0d
@@ -61,6 +60,7 @@ struct mi_payload_t{
uint8_t leak; //14
uint32_t NMT; //17
uint8_t door; //19
+ uint16_t objID; //0x0002
struct{ //01
uint8_t num;
uint8_t value;
@@ -199,6 +199,7 @@ struct {
uint32_t updateScan:1;
uint32_t deleteScanTask:1;
+
uint32_t canConnect:1;
uint32_t willConnect:1;
uint32_t readingDone:1;
@@ -230,7 +231,7 @@ struct {
uint32_t directBridgeMode:1; // send every received BLE-packet as a MQTT-message in real-time
uint32_t activeScan:1;
uint32_t ignoreBogusBattery:1;
- uint32_t minimalSummary:1; // DEPRECATED!!
+ uint32_t handleEveryDevice:1;
} option;
#ifdef USE_MI_EXT_GUI
uint32_t widgetSlot;
@@ -271,8 +272,9 @@ struct mi_sensor_t{
uint32_t knob:1;
uint32_t door:1;
uint32_t leak:1;
+ uint32_t payload:1;
};
- uint32_t raw;
+ uint32_t raw = 0;
} feature;
union {
struct {
@@ -291,19 +293,20 @@ struct mi_sensor_t{
uint32_t longpress:1; //needs no extra feature bit, because knob is sufficient
uint32_t door:1;
uint32_t leak:1;
+ uint32_t payload:1;
};
- uint32_t raw;
+ uint32_t raw = 0;
} eventType;
union{
struct{
uint8_t hasWrongKey:1;
uint8_t isUnbounded:1;
};
- uint8_t raw;
+ uint8_t raw = 0;
} status;
- int RSSI;
- uint32_t lastTime;
+ int RSSI = 0;
+ uint32_t lastTime = 0;
uint32_t lux;
uint8_t lux_history[24];
float temp; //Flora, MJ_HT_V1, LYWSD0x, CGx
@@ -331,10 +334,15 @@ struct mi_sensor_t{
uint8_t longpress; // dimmer knob pressed without rotating
};
uint8_t door;
+
};
union {
uint8_t bat; // many values seem to be hard-coded garbage (LYWSD0x, GCD1)
};
+ struct {
+ uint8_t * payload = nullptr;
+ uint8_t payload_len;
+ };
};
/*********************************************************************************************\
@@ -475,8 +483,9 @@ enum MI32_BLEInfoMsg {
const char HTTP_BTN_MENU_MI32[] PROGMEM = "
Mi Dashboard ";
const char HTTP_MI32_SCRIPT_1[] PROGMEM =
- "function setUp(){setInterval(countUp,1000); setInterval(update,1000);}"
- "function countUp(){let ti=document.querySelectorAll('.Ti');"
+ "function setUp(){setInterval(countUp,1000); setInterval(update,200);}"
+ "function countUp(){let ti=document.querySelectorAll('.Ti');eb('clock').innerText=Date().slice(4,24);"
+ "eb('numDev').innerText=eb('pr').childElementCount-1;"
"for(const el of ti){var t=parseInt(el.innerText);el.innerText=t+1;}}"
"function update(){"
"fetch('/m32?wi=1').then(r=>r.text())"
@@ -499,7 +508,7 @@ const char HTTP_MI32_STYLE[] PROGMEM =
".parent{display:grid;grid-template-columns:repeat(auto-fill,350px);grid-template-rows:repeat(auto-fill,220px);"
"grid-auto-rows:220px;grid-auto-columns:350px;gap:1rem;justify-content:center;}"
"svg{float:inline-end;}"
- ".box{padding:10px;border-radius:0.8rem;background-color:rgba(221, 221, 221, 0.2);}"
+ ".box{padding:10px;border-radius:0.8rem;background-color:rgba(221, 221, 221, 0.2);overflow-y:auto;}"
"@media screen and (min-width: 720px){.wide{grid-column:span 2;grid-row:span 1;}.big {grid-column:span 2;grid-row:span 2;}}"
".tall {grid-column:span 1;grid-row:span 2;}"
"";
@@ -515,6 +524,7 @@ const char HTTP_MI32_PARENT_BLE_ROLE[] PROGMEM = "None|Observer|Peripheral|Centr
const char HTTP_MI32_PARENT_START[] PROGMEM =
""
"
MI32 Bridge "
+ "
"
"Observing
%u devices
"
"Uptime:
%u seconds
"
"Free Heap: %u kB
"
diff --git a/tasmota/language/af_AF.h b/tasmota/language/af_AF.h
index fabaec1e1..d98293d85 100644
--- a/tasmota/language/af_AF.h
+++ b/tasmota/language/af_AF.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Signal Strength"
#define D_CHIPTEMPERATURE "Chip Temperature"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Geen"
#define D_SENSOR_USER "Gebruiker"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "A"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_AF_AF_H_
diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h
index 834009096..e7784ea41 100644
--- a/tasmota/language/bg_BG.h
+++ b/tasmota/language/bg_BG.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Сила на сигнала"
#define D_CHIPTEMPERATURE "Температура на чипа"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Няма"
#define D_SENSOR_USER "Потребителско"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "А"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "л"
#define D_UNIT_LITERS_PER_MIN "л/м"
#define D_UNIT_LUX "лукс"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µг/м³"
#define D_UNIT_MICROMETER "µм"
#define D_UNIT_MICROSECOND "µс"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_BG_BG_H_
diff --git a/tasmota/language/ca_AD.h b/tasmota/language/ca_AD.h
index 75151988a..1eaface65 100644
--- a/tasmota/language/ca_AD.h
+++ b/tasmota/language/ca_AD.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Nivell del senyal"
#define D_CHIPTEMPERATURE "Temperatura del Xip"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Cap"
#define D_SENSOR_USER "Usuari"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "A"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_CA_AD_H_
diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h
index d0838a0a6..b08c48b8c 100644
--- a/tasmota/language/cs_CZ.h
+++ b/tasmota/language/cs_CZ.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Signal Strength"
#define D_CHIPTEMPERATURE "Chip Temperature"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Není"
#define D_SENSOR_USER "User"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "A"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_CS_CZ_H_
diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h
index 43d5a5535..f92b819d0 100644
--- a/tasmota/language/de_DE.h
+++ b/tasmota/language/de_DE.h
@@ -28,7 +28,7 @@
* Use online command StateText to translate ON, OFF, HOLD and TOGGLE.
* Use online command Prefix to translate cmnd, stat and tele.
*
- * Updated until v13.3.0.3 - Last update 12.01.2024
+ * Updated until v14.1.0.4 - Last update 28.07.2024
\*********************************************************************/
//#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English)
@@ -421,7 +421,7 @@
// xdrv_01_mqtt.ino
#define D_FINGERPRINT "TLS-Fingerabdruck wird verifiziert…"
#define D_TLS_CONNECT_FAILED_TO "TLS-Verbindung fehlgeschlagen an"
-#define D_RETRY_IN "Wiederversuch in"
+#define D_RETRY_IN "Erneuter Versuch in"
#define D_VERIFIED "verifiziert mit Fingerabdruck"
#define D_INSECURE "unsichere Verbindung aufgrund ungültigen Fingerabdrucks"
#define D_CONNECT_FAILED_TO "Verbindung fehlgeschlagen aufgrund von"
@@ -506,7 +506,7 @@
#define D_ZIGBEE_MAPPING_IN_PROGRESS_SEC "Karte in Erstellung (%d s․ verbleibend)"
#define D_ZIGBEE_MAPPING_NOT_PRESENT "Keine Karte"
#define D_ZIGBEE_MAP_REFRESH "Zigbee Karte erneuern"
-#define D_ZIGBEE_MAP "Zigbee Karte"
+#define D_ZIGBEE_MAP "Zigbee Karte"
#define D_ZIGBEE_PERMITJOIN "Zigbee Kopplung ein"
#define D_ZIGBEE_GENERATE_KEY "Erzeuge zufälligen Zigbee Netzwerkschlüssel"
#define D_ZIGBEE_UNKNOWN_DEVICE "Unbekanntes Gerät"
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Signalstärke"
#define D_CHIPTEMPERATURE "Chiptemperatur"
+// xsns_60_GPS
+#define D_LATITUDE "Breite"
+#define D_LONGITUDE "Länge"
+#define D_HORIZONTAL_ACCURACY "Horizontale Genauigkeit"
+#define D_ALTITUDE "Höhe"
+#define D_VERTICAL_ACCURACY "Vertikale Genauigkeit"
+#define D_SPEED "Geschwindigkeit"
+#define D_SPEED_ACCURACY "Geschwindigkeitsgenauigkeit"
+#define D_HEADING "Kurs"
+#define D_HEADING_ACCURACY "Kursgenauigkeit"
+#define D_SAT_FIX "Satelliten Fix"
+#define D_SAT_FIX_NO_FIX "Kein Fix"
+#define D_SAT_FIX_DEAD_RECK "Koppelnavigation"
+#define D_SAT_FIX_2D "2D"
+#define D_SAT_FIX_3D "3D"
+#define D_SAT_FIX_GPS_DEAD "GPS und Koppelnavigation"
+#define D_SAT_FIX_TIME "Nur Uhrzeit"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "None"
#define D_SENSOR_USER "User"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Spannung"
+#define D_SENSOR_ADC_CURRENT "ADC Strom"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -982,6 +1002,7 @@
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "A"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Aufladen"
+#define D_CAPACITY "Kapazität"
+
#endif // _LANGUAGE_DE_DE_H_
diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h
index 1c47c5560..61566829d 100644
--- a/tasmota/language/el_GR.h
+++ b/tasmota/language/el_GR.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Signal Strength"
#define D_CHIPTEMPERATURE "Chip Temperature"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Κανένα"
#define D_SENSOR_USER "User"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "A"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_EL_GR_H_
diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h
index 2187a6871..82d509835 100644
--- a/tasmota/language/en_GB.h
+++ b/tasmota/language/en_GB.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Signal Strength"
#define D_CHIPTEMPERATURE "Chip Temperature"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "None"
#define D_SENSOR_USER "User"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "A"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1251,4 +1273,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_EN_GB_H_
diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h
index 82ba7a2d6..10c40cd0e 100644
--- a/tasmota/language/es_ES.h
+++ b/tasmota/language/es_ES.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Señal"
#define D_CHIPTEMPERATURE "Temperatura del Chip"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Ninguno"
#define D_SENSOR_USER "Por Usuario"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "A"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Cargando"
+#define D_CAPACITY "Capacidad"
+
#endif // _LANGUAGE_ES_ES_H_
diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h
index d7ac06abf..2c5937d7a 100644
--- a/tasmota/language/fr_FR.h
+++ b/tasmota/language/fr_FR.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Signal Strength"
#define D_CHIPTEMPERATURE "Chip Temperature"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Aucun"
#define D_SENSOR_USER "Utilisateur"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Manette"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PwDn"
#define D_GPIO_WEBCAM_RESET "CAM_Reset"
#define D_GPIO_WEBCAM_XCLK "CAM_XClk"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
@@ -1007,6 +1028,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/min"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1251,4 +1273,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "En charge"
+#define D_CAPACITY "Capacité"
+
#endif // _LANGUAGE_FR_FR_H_
diff --git a/tasmota/language/fy_NL.h b/tasmota/language/fy_NL.h
index bf1b2cdbe..5b3b69898 100644
--- a/tasmota/language/fy_NL.h
+++ b/tasmota/language/fy_NL.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Signal Strength"
#define D_CHIPTEMPERATURE "Chip Temperature"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Gjin"
#define D_SENSOR_USER "Brûker"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "A"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_FY_NL_H_
diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h
index e7422821a..9ae1525d6 100644
--- a/tasmota/language/he_HE.h
+++ b/tasmota/language/he_HE.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Signal Strength"
#define D_CHIPTEMPERATURE "Chip Temperature"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "None"
#define D_SENSOR_USER "משתמש"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "A"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_HE_HE_H_
diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h
index a037e28a5..8c3dbb393 100644
--- a/tasmota/language/hu_HU.h
+++ b/tasmota/language/hu_HU.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Signal Strength"
#define D_CHIPTEMPERATURE "Chip Temperature"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Nincs"
#define D_SENSOR_USER "User"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -984,7 +1004,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "A"
@@ -1009,6 +1030,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1253,4 +1275,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_HU_HU_H_
diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h
index 080799eda..c9e621919 100644
--- a/tasmota/language/it_IT.h
+++ b/tasmota/language/it_IT.h
@@ -28,7 +28,7 @@
* Use online command StateText to translate ON, OFF, HOLD and TOGGLE.
* Use online command Prefix to translate cmnd, stat and tele.
*
- * Updated until v9.4.0.1 - Last update 19.05.2024
+ * Updated until v9.4.0.1 - Last update 27.07.2024
\*********************************************************************/
#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English)
@@ -76,7 +76,6 @@
#define D_COMMAND "Comando"
#define D_CONNECTED "Connesso"
#define D_CORS_DOMAIN "Dominio CORS"
-
#define D_COLOR "Colore"
#define D_COUNT "Conteggio"
#define D_COUNTER "Contatore"
@@ -665,6 +664,24 @@
#define D_SIGNALSTRENGTH "Livello segnale"
#define D_CHIPTEMPERATURE "Temperatura chip"
+// xsns_60_GPS
+#define D_LATITUDE "Latitudine"
+#define D_LONGITUDE "Longitudine"
+#define D_HORIZONTAL_ACCURACY "Precisione orizzontale"
+#define D_ALTITUDE "Altitudine"
+#define D_VERTICAL_ACCURACY "Precisione verticale"
+#define D_SPEED "Velocità"
+#define D_SPEED_ACCURACY "Precisione velocità"
+#define D_HEADING "Direzione"
+#define D_HEADING_ACCURACY "Precisione direzione"
+#define D_SAT_FIX "Aggancio satelliti"
+#define D_SAT_FIX_NO_FIX "Nessuno"
+#define D_SAT_FIX_DEAD_RECK "Navigazione stimata"
+#define D_SAT_FIX_2D "2D"
+#define D_SAT_FIX_3D "3D"
+#define D_SAT_FIX_GPS_DEAD "GPS e navigazione stimata"
+#define D_SAT_FIX_TIME "Solo corrzione orario"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Nessuno"
#define D_SENSOR_USER "Utente"
@@ -794,8 +811,6 @@
#define D_GPIO_ASR650X_TX "ASR650X - Tx"
#define D_GPIO_ASR650X_RX "ASR650X - Rx"
#define D_GPIO_LORA_CS "LoRa - CS"
-#define D_GPIO_ASR650X_TX "ASR650x - TX"
-#define D_GPIO_ASR650X_RX "ASR650x - RX"
#define D_GPIO_LORA_RST "LoRa - Rst"
#define D_GPIO_LORA_BUSY "LoRa - Busy"
#define D_GPIO_LORA_DI "LoRa - DIO" // Suffix "0","1","2"
@@ -810,6 +825,8 @@
#define D_SENSOR_CSE7761_RX "CSE7761 - RX"
#define D_SENSOR_CSE7766_TX "CSE7766 - TX"
#define D_SENSOR_CSE7766_RX "CSE7766 - RX"
+#define D_SENSOR_BL0939_RX "BL0939 - RX"
+#define D_SENSOR_BL0942_RX "BL0942 - RX"
#define D_SENSOR_HM330X_SET "HM330X - SET"
#define D_SENSOR_PN532_TX "PN532 - TX"
#define D_SENSOR_PN532_RX "PN532 - RX"
@@ -877,8 +894,6 @@
#define D_SENSOR_LE01MR_RX "LE-01MR - RX"
#define D_SENSOR_LE01MR_TX "LE-01MR - TX"
#define D_SENSOR_BL0940_RX "BL0940 - RX"
-#define D_SENSOR_BL0939_RX "BL0939 - RX"
-#define D_SENSOR_BL0942_RX "BL0942 - RX"
#define D_SENSOR_CC1101_GDO0 "CC1101 - GDO0"
#define D_SENSOR_CC1101_GDO2 "CC1101 - GDO2"
#define D_SENSOR_HRXL_RX "HRXL - RX"
@@ -898,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC - Joystick"
#define D_SENSOR_ADC_PH "ADC - pH"
#define D_SENSOR_ADC_MQ "ADC - MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC - Voltaggio"
+#define D_SENSOR_ADC_CURRENT "ADC - Corrente"
#define D_GPIO_WEBCAM_PWDN "Webcam - PWDN"
#define D_GPIO_WEBCAM_RESET "Webcam - RESET"
#define D_GPIO_WEBCAM_XCLK "Webcam - XCLK"
@@ -985,6 +1002,7 @@
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 - RX"
#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis - RX"
// Units
#define D_UNIT_AMPERE "A"
@@ -1009,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1251,7 +1270,13 @@
#define D_UNIT_US_H "µSv/h"
// ixrv92_pipsolar.ino
-#define D_SENSOR_PIPSOLAR_TX "Pipsolar - TX"
-#define D_SENSOR_PIPSOLAR_RX "Pipsolar - RX"
+#define D_SENSOR_PIPSOLAR_TX "Pipsolar - TX"
+#define D_SENSOR_PIPSOLAR_RX "Pipsolar - RX"
+
+// xsns_115_wooliis.ino
+#define D_IMPORT "Importa"
+#define D_EXPORT "Esporta"
+#define D_CHARGING "In carica"
+#define D_CAPACITY "Capacità"
#endif // _LANGUAGE_IT_IT_H_
diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h
index dae42e67d..7f3dbb0ad 100644
--- a/tasmota/language/ko_KO.h
+++ b/tasmota/language/ko_KO.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Signal Strength"
#define D_CHIPTEMPERATURE "Chip Temperature"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "없음"
#define D_SENSOR_USER "User"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "A"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "마이크로미터"
#define D_UNIT_MICROSECOND "마이크로초"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_KO_KO_H_
diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h
index 7a2466dc5..a181aa1ad 100644
--- a/tasmota/language/nl_NL.h
+++ b/tasmota/language/nl_NL.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Signal Strength"
#define D_CHIPTEMPERATURE "Chip Temperature"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Geen"
#define D_SENSOR_USER "Gebruiker"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "A"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_NL_NL_H_
diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h
index d16a56c72..4e6c8c845 100644
--- a/tasmota/language/pl_PL.h
+++ b/tasmota/language/pl_PL.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Siła sygnału"
#define D_CHIPTEMPERATURE "Temperatura Chipa"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Brak"
#define D_SENSOR_USER "Użytkownik"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Dżojstik"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "A"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_PL_PL_D_H_
diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h
index c26076964..602062bd8 100644
--- a/tasmota/language/pt_BR.h
+++ b/tasmota/language/pt_BR.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Força do sinal"
#define D_CHIPTEMPERATURE "Temperatura do CHIP"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Nenhum"
#define D_SENSOR_USER "Usuário"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "Joystick ADC"
#define D_SENSOR_ADC_PH "pH ADC"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "A"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_PT_BR_H_
diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h
index 4daa0a48b..ab1b20e23 100644
--- a/tasmota/language/pt_PT.h
+++ b/tasmota/language/pt_PT.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Signal Strength"
#define D_CHIPTEMPERATURE "Chip Temperature"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Nenhum"
#define D_SENSOR_USER "Utilizador"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "Joystick ADC"
#define D_SENSOR_ADC_PH "pH ADC"
#define D_SENSOR_ADC_MQ "MQ ADC"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "A"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_PT_PT_H_
diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h
index bcbdbb23a..7e9b8272c 100644
--- a/tasmota/language/ro_RO.h
+++ b/tasmota/language/ro_RO.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Signal Strength"
#define D_CHIPTEMPERATURE "Chip Temperature"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Fără"
#define D_SENSOR_USER "Utilizator"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "A"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_RO_RO_H_
diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h
index 18b0d438d..6e1031d02 100644
--- a/tasmota/language/ru_RU.h
+++ b/tasmota/language/ru_RU.h
@@ -665,6 +665,24 @@
#define D_SIGNALSTRENGTH "Сила сигнала"
#define D_CHIPTEMPERATURE "Температура чипа"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "-нет-"
#define D_SENSOR_USER "User"
@@ -896,6 +914,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -982,7 +1002,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "А"
@@ -1007,6 +1028,7 @@
#define D_UNIT_LITERS "л"
#define D_UNIT_LITERS_PER_MIN "л/мин"
#define D_UNIT_LUX "лк"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "мкг/м³"
#define D_UNIT_MICROMETER "мкм"
#define D_UNIT_MICROSECOND "мкс"
@@ -1251,4 +1273,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_RU_RU_H_
diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h
index f273cae32..fbaa7b824 100644
--- a/tasmota/language/sk_SK.h
+++ b/tasmota/language/sk_SK.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Signal Strength"
#define D_CHIPTEMPERATURE "Chip Temperature"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Žiaden"
#define D_SENSOR_USER "User"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "A"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_SK_SK_H_
diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h
index c968ef2ca..a433d033d 100644
--- a/tasmota/language/sv_SE.h
+++ b/tasmota/language/sv_SE.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Signal Strength"
#define D_CHIPTEMPERATURE "Chip Temperature"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Ingen"
#define D_SENSOR_USER "User"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "A"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_SV_SE_H_
diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h
index a570fc57e..d6b560b85 100644
--- a/tasmota/language/tr_TR.h
+++ b/tasmota/language/tr_TR.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Signal Strength"
#define D_CHIPTEMPERATURE "Chip Temperature"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "None"
#define D_SENSOR_USER "User"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "A"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_TR_TR_H_
diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h
index 490328438..761bae707 100644
--- a/tasmota/language/uk_UA.h
+++ b/tasmota/language/uk_UA.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Signal Strength"
#define D_CHIPTEMPERATURE "Chip Temperature"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Немає"
#define D_SENSOR_USER "Користувач"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "А"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "лк"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µг/м³"
#define D_UNIT_MICROMETER "µм"
#define D_UNIT_MICROSECOND "µС"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_UK_UA_H_
diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h
index 6c279b59d..1af378629 100644
--- a/tasmota/language/vi_VN.h
+++ b/tasmota/language/vi_VN.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Signal Strength"
#define D_CHIPTEMPERATURE "Chip Temperature"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Không dùng"
#define D_SENSOR_USER "Người Dùng"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "A"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_VI_VN_H_
diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h
index 5542facae..a64634c24 100644
--- a/tasmota/language/zh_CN.h
+++ b/tasmota/language/zh_CN.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Signal Strength"
#define D_CHIPTEMPERATURE "Chip Temperature"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "无"
#define D_SENSOR_USER "User"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "A"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lx"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_ZH_CN_H_
diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h
index d285af57f..0909ad140 100644
--- a/tasmota/language/zh_TW.h
+++ b/tasmota/language/zh_TW.h
@@ -664,6 +664,24 @@
#define D_SIGNALSTRENGTH "Signal Strength"
#define D_CHIPTEMPERATURE "Chip Temperature"
+// xsns_60_GPS
+#define D_LATITUDE "Latitude"
+#define D_LONGITUDE "Longitude"
+#define D_HORIZONTAL_ACCURACY "Horizontal Accuracy"
+#define D_ALTITUDE "Altitude"
+#define D_VERTICAL_ACCURACY "Vertical Accuracy"
+#define D_SPEED "Speed"
+#define D_SPEED_ACCURACY "Speed Accuracy"
+#define D_HEADING "Heading"
+#define D_HEADING_ACCURACY "Heading Accuracy"
+#define D_SAT_FIX "Satellite Fix"
+ #define D_SAT_FIX_NO_FIX "None"
+ #define D_SAT_FIX_DEAD_RECK "Dead reckoning"
+ #define D_SAT_FIX_2D "2D"
+ #define D_SAT_FIX_3D "3D"
+ #define D_SAT_FIX_GPS_DEAD "GPS and dead reckoning"
+ #define D_SAT_FIX_TIME "Time only fix"
+
// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "無"
#define D_SENSOR_USER "使用者"
@@ -895,6 +913,8 @@
#define D_SENSOR_ADC_JOYSTICK "ADC Joystick"
#define D_SENSOR_ADC_PH "ADC pH"
#define D_SENSOR_ADC_MQ "ADC MQ"
+#define D_SENSOR_ADC_VOLTAGE "ADC Voltage"
+#define D_SENSOR_ADC_CURRENT "ADC Current"
#define D_GPIO_WEBCAM_PWDN "CAM_PWDN"
#define D_GPIO_WEBCAM_RESET "CAM_RESET"
#define D_GPIO_WEBCAM_XCLK "CAM_XCLK"
@@ -981,7 +1001,8 @@
#define D_SENSOR_BIOPDU_PZEM016_RX "BioPDU PZEM016 Rx"
#define D_SENSOR_BIOPDU_BIT "BioPDU Bit"
#define D_SENSOR_LOX_O2_RX "LoxO2 RX"
-#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_GPIO_MAGIC_SWITCH "MagicSwitch"
+#define D_SENSOR_WOOLIIS_RX "Wooliis Rx"
// Units
#define D_UNIT_AMPERE "安培"
@@ -1006,6 +1027,7 @@
#define D_UNIT_LITERS "L"
#define D_UNIT_LITERS_PER_MIN "L/m"
#define D_UNIT_LUX "lux"
+#define D_UNIT_METER "m"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "微克/立方公尺"
#define D_UNIT_MICROMETER "微米"
#define D_UNIT_MICROSECOND "微秒"
@@ -1250,4 +1272,10 @@
#define D_SENSOR_PIPSOLAR_TX "Pipsolar TX"
#define D_SENSOR_PIPSOLAR_RX "Pipsolar RX"
+// xsns_115_wooliis.ino
+#define D_IMPORT "Import"
+#define D_EXPORT "Export"
+#define D_CHARGING "Charging"
+#define D_CAPACITY "Capacity"
+
#endif // _LANGUAGE_ZH_TW_H_
diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h
index 8bc62baae..d18952b07 100644
--- a/tasmota/my_user_config.h
+++ b/tasmota/my_user_config.h
@@ -71,11 +71,21 @@
#define WIFI_DNS "192.168.1.1" // [IpAddress4] If not using DHCP set DNS1 IP address (might be equal to WIFI_GATEWAY)
#define WIFI_DNS2 "0.0.0.0" // [IpAddress5] If not using DHCP set DNS2 IP address (might be equal to WIFI_GATEWAY)
+#ifndef STA_SSID1
#define STA_SSID1 "" // [Ssid1] Wi-Fi SSID
+#endif
+#ifndef STA_PASS1
#define STA_PASS1 "" // [Password1] Wi-Fi password
+#endif
+#ifndef STA_SSID2
#define STA_SSID2 "" // [Ssid2] Optional alternate AP Wi-Fi SSID
+#endif
+#ifndef STA_PASS2
#define STA_PASS2 "" // [Password2] Optional alternate AP Wi-Fi password
+#endif
+#ifndef WIFI_AP_PASSPHRASE
#define WIFI_AP_PASSPHRASE "" // AccessPoint passphrase. For WPA2 min 8 char, for open use "" (max 63 char).
+#endif
#define WIFI_CONFIG_TOOL WIFI_RETRY // [WifiConfig] Default tool if Wi-Fi fails to connect (default option: 4 - WIFI_RETRY)
// (WIFI_RESTART, WIFI_MANAGER, WIFI_RETRY, WIFI_WAIT, WIFI_SERIAL, WIFI_MANAGER_RESET_ONLY)
// The configuration can be changed after first setup using WifiConfig 0, 2, 4, 5, 6 and 7.
@@ -421,10 +431,9 @@
#define MQTT_LWT_OFFLINE "Offline" // MQTT LWT offline topic message
#define MQTT_LWT_ONLINE "Online" // MQTT LWT online topic message
-#define MQTT_TELE_RETAIN 0 // Tele messages may send retain flag (0 = off, 1 = on)
-#define MQTT_CLEAN_SESSION 1 // Mqtt clean session connection (0 = No clean session, 1 = Clean session (default))
-#define MQTT_DISABLE_SSERIALRECEIVED 0 // 1 = Disable sserialreceived mqtt messages, 0 = Enable sserialreceived mqtt messages (default)
-#define MQTT_DISABLE_MODBUSRECEIVED 0 // 1 = Disable ModbusReceived mqtt messages, 0 = Enable ModbusReceived mqtt messages (default)
+#define MQTT_CLEAN_SESSION 1 // [SetOption140] Mqtt clean session connection (0 = No clean session, 1 = Clean session (default))
+#define MQTT_DISABLE_SSERIALRECEIVED 0 // [SetOption147] 1 = Disable SSerialReceived/IrReceived mqtt messages, 0 = Enable these mqtt messages (default)
+#define MQTT_DISABLE_MODBUSRECEIVED 0 // [SetOption158] 1 = Disable ModbusReceived mqtt messages, 0 = Enable ModbusReceived mqtt messages (default)
// -- MQTT - Domoticz -----------------------------
#define USE_DOMOTICZ // Enable Domoticz (+6k code, +0.3k mem)
@@ -739,6 +748,7 @@
// #define MAX17043_ALERT_THRESHOLD 32 // [I2cDriver83] Define the alert threshold for low battery level percentage 1-32
// #define USE_AMSX915 // [I2CDriver86] Enable AMS5915/AMS6915 pressure/temperature sensor (+1k2 code)
// #define USE_SPL06_007 // [I2cDriver87] Enable SPL06_007 pressure and temperature sensor (I2C addresses 0x76) (+2k5 code)
+// #define USE_QMP6988 // [I2cDriver88] Enable QMP6988 pressure and temperature sensor (I2C address 0x56 or 0x70) (+2k9 code)
// #define USE_RTC_CHIPS // Enable RTC chip support and NTP server - Select only one
// #define USE_DS3231 // [I2cDriver26] Enable DS3231 RTC (I2C address 0x68) (+1k2 code)
@@ -872,6 +882,7 @@
//#define USE_GM861 // Add support for GM861 1D and 2D Bar Code Reader (+1k3 code)
// #define GM861_DECODE_AIM // Decode AIM-id (+0k3 code)
// #define GM861_HEARTBEAT // Enable heartbeat (+0k2 code)
+//#define USE_WOOLIIS // Add support for Wooliis Hall Effect Coulometer or Battery capacity monitor (+1k6 code)
// -- Power monitoring sensors --------------------
#define USE_ENERGY_SENSOR // Add support for Energy Monitors (+14k code)
@@ -895,6 +906,7 @@
//#define USE_SDM630 // Add support for Eastron SDM630-Modbus energy monitor (+0k6 code)
#define SDM630_SPEED 9600 // SDM630-Modbus RS485 serial speed (default: 9600 baud)
// #define SDM630_IMPORT // Show import active energy in MQTT and Web (+0k3 code)
+// #define SDM630_HIGH_UPDATE_RATE // SDM630-Modbus improved readout with higher update rate (+0k1 RAM)
//#define USE_DDS2382 // Add support for Hiking DDS2382 Modbus energy monitor (+0k6 code)
#define DDS2382_SPEED 9600 // Hiking DDS2382 Modbus RS485 serial speed (default: 9600 baud)
//#define USE_DDSU666 // Add support for Chint DDSU666 Modbus energy monitor (+0k6 code)
@@ -1014,6 +1026,9 @@
#define USE_ZIGBEE_MAXTIME_LIGHT 60*60 // 1h
#define USE_ZIGBEE_MAXTIME_LIFT 4*60*60 // 4h
+// -- Matter support (ESP32 and variants) ----------------------------
+#define MATTER_ENABLED false // [SetOption151] Is Matter enabled by default
+
// -- Other sensors/drivers -----------------------
//#define USE_SHIFT595 // Add support for 74xx595 8-bit shift registers (+0k7 code)
@@ -1239,6 +1254,10 @@
// #define BE_LV_WIDGET_TABVIEW
// #define BE_LV_WIDGET_TILEVIEW
+// -- Matter protocol ---------------------------------
+ // #define USE_MATTER_DEVICE // Enable Matter device support (+380KB)
+ // Enabled by default in standard ESP32 binary
+
#endif // ESP32
/*********************************************************************************************\
diff --git a/tasmota/tasmota.ino b/tasmota/tasmota.ino
index fb8416f68..e93e4c7eb 100644
--- a/tasmota/tasmota.ino
+++ b/tasmota/tasmota.ino
@@ -83,7 +83,9 @@
#include
#ifdef USE_SDCARD
#include
+#ifdef SOC_SDMMC_HOST_SUPPORTED
#include
+#endif // SOC_SDMMC_HOST_SUPPORTED
#endif // USE_SDCARD
#include "FFat.h"
#include "FS.h"
@@ -303,8 +305,10 @@ struct TasmotaGlobal_t {
bool serial_local; // Handle serial locally
bool fallback_topic_flag; // Use Topic or FallbackTopic
+ bool no_mqtt_response; // Respond with rule processing only
bool backlog_nodelay; // Execute all backlog commands with no delay
bool backlog_mutex; // Command backlog pending
+ bool backlog_no_mqtt_response; // Set respond with rule processing only
bool stop_flash_rotate; // Allow flash configuration rotation
bool blinkstate; // LED state
bool pwm_present; // Any PWM channel configured with SetOption15 0
@@ -709,6 +713,7 @@ void BacklogLoop(void) {
free(cmd);
nodelay = true;
} else {
+ TasmotaGlobal.no_mqtt_response = TasmotaGlobal.backlog_no_mqtt_response;
ExecuteCommand(cmd, SRC_BACKLOG);
free(cmd);
if (nodelay || TasmotaGlobal.backlog_nodelay) {
@@ -717,23 +722,6 @@ void BacklogLoop(void) {
break;
}
} while (!BACKLOG_EMPTY);
-/*
- // This adds 96 bytes
- for (auto &cmd : backlog) {
- backlog.remove(&cmd);
- if (!strncasecmp_P(cmd, PSTR(D_CMND_NODELAY), strlen(D_CMND_NODELAY))) {
- free(cmd);
- nodelay = true;
- } else {
- ExecuteCommand(cmd, SRC_BACKLOG);
- free(cmd);
- if (nodelay || TasmotaGlobal.backlog_nodelay) {
- TasmotaGlobal.backlog_timer = millis(); // Reset backlog_timer which has been set by ExecuteCommand (CommandHandler)
- }
- break;
- }
- }
-*/
TasmotaGlobal.backlog_mutex = false;
}
if (BACKLOG_EMPTY) {
diff --git a/tasmota/tasmota_support/settings.ino b/tasmota/tasmota_support/settings.ino
index 24dc0d636..aa1457983 100644
--- a/tasmota/tasmota_support/settings.ino
+++ b/tasmota/tasmota_support/settings.ino
@@ -1137,7 +1137,7 @@ void SettingsDefaultSet2(void) {
flag5.mqtt_status_retain |= MQTT_STATUS_RETAIN;
flag5.mqtt_switches |= MQTT_SWITCHES;
flag5.mqtt_persistent |= ~MQTT_CLEAN_SESSION;
- flag6.mqtt_disable_sserialrec |= MQTT_DISABLE_SSERIALRECEIVED;
+ flag6.mqtt_disable_publish |= MQTT_DISABLE_SSERIALRECEIVED;
flag6.mqtt_disable_modbus |= MQTT_DISABLE_MODBUSRECEIVED;
// flag.mqtt_serial |= 0;
flag.device_index_enable |= MQTT_POWER_FORMAT;
@@ -1208,9 +1208,9 @@ void SettingsDefaultSet2(void) {
// Settings->energy_max_power_limit = 0; // MaxPowerLimit
Settings->energy_max_power_limit_hold = MAX_POWER_HOLD;
Settings->energy_max_power_limit_window = MAX_POWER_WINDOW;
-// Settings->energy_max_power_safe_limit = 0; // MaxSafePowerLimit
- Settings->energy_max_power_safe_limit_hold = SAFE_POWER_HOLD;
- Settings->energy_max_power_safe_limit_window = SAFE_POWER_WINDOW;
+// Settings->ex_energy_max_power_safe_limit = 0; // MaxSafePowerLimit
+// Settings->ex_energy_max_power_safe_limit_hold = SAFE_POWER_HOLD;
+// Settings->ex_energy_max_power_safe_limit_window = SAFE_POWER_WINDOW;
// Settings->energy_max_energy = 0; // MaxEnergy
// Settings->energy_max_energy_start = 0; // MaxEnergyStart
// Settings->energy_kWhtotal_ph[0] = 0;
@@ -1425,6 +1425,9 @@ void SettingsDefaultSet2(void) {
#endif
#endif // FIRMWARE_MINIMAL
+ // Matter
+ flag6.matter_enabled |= MATTER_ENABLED;
+
Settings->flag = flag;
Settings->flag2 = flag2;
Settings->flag3 = flag3;
@@ -1723,6 +1726,13 @@ void SettingsDelta(void) {
if (Settings->version < 0x0A010003) { // 10.1.0.3
Settings->sserial_config = Settings->serial_config;
}
+
+ // Change CalVer (2022.01.1-4 = 0x14160101) to SemVer (10.1.0.4-7 = 0x0A010004)
+ uint32_t version2022 = Settings->version & 0x00FF0000;
+ if (0x00160000 == version2022) { // Version x.22.x.x is not likely to appear
+ Settings->version = 0x0A010005; // Choose this as 0x0A010006 has a change following
+ }
+
if (Settings->version < 0x0A010006) { // 10.1.0.6
Settings->web_time_start = 0;
Settings->web_time_end = 0;
@@ -1814,7 +1824,10 @@ void SettingsDelta(void) {
Settings->power_lock = 0;
}
if (Settings->version < 0x0E000004) { // 14.0.0.4
- Settings->tcp_baudrate = (uint16_t)Settings->ex_tcp_baudrate * 4;
+ Settings->tcp_baudrate = (uint16_t)Settings->sserial_mode * 4;
+ }
+ if (Settings->version < 0x0E010002) { // 14.1.0.2
+ Settings->sserial_mode = Settings->sbflag1.ex_serbridge_console;
}
Settings->version = TASMOTA_VERSION;
diff --git a/tasmota/tasmota_support/support.ino b/tasmota/tasmota_support/support.ino
index 0552a30d1..829c3ef4a 100755
--- a/tasmota/tasmota_support/support.ino
+++ b/tasmota/tasmota_support/support.ino
@@ -590,12 +590,17 @@ char* SetStr(const char* str) {
return new_str;
}
-bool StrCaseStr_P(const char* source, const char* search) {
+char* StrCaseStr_P(const char* source, const char* search) {
char case_source[strlen_P(source) +1];
UpperCase_P(case_source, source);
char case_search[strlen_P(search) +1];
UpperCase_P(case_search, search);
- return (strstr(case_source, case_search) != nullptr);
+ char *cp = strstr(case_source, case_search);
+ if (cp) {
+ uint32_t offset = cp - case_source;
+ cp = (char*)source + offset;
+ }
+ return cp;
}
bool IsNumeric(const char* value) {
@@ -646,7 +651,7 @@ int32_t HexToBytes(const char* hex, uint8_t* out, size_t out_len) {
}
size_t bytes_out = len / 2;
- if (bytes_out < out_len) {
+ if (bytes_out > out_len) {
bytes_out = out_len;
}
@@ -1411,6 +1416,49 @@ bool ResponseContains_P(const char* needle) {
return (strstr_P(ResponseData(), needle) != nullptr);
}
+bool GetNextSensor(void) {
+ static uint32_t start_time = 0;
+ static uint8_t sensor_set = 0;
+
+ ResponseClear();
+ int tele_period_save = TasmotaGlobal.tele_period;
+ TasmotaGlobal.tele_period = 2; // Do not allow HA updates during next function call
+ while (!ResponseLength()) {
+ if (0 == sensor_set) {
+ if (TimeReached(start_time)) {
+ SetNextTimeInterval(start_time, 1000);
+ sensor_set++; // Minimal loop time is 1 second
+ }
+ break;
+ }
+ else if (1 == sensor_set) {
+ if (!XsnsCallNextJsonAppend()) { // ,"INA219":{"Voltage":4.494,"Current":0.020,"Power":0.089}
+ sensor_set++; // Looped
+ break;
+ }
+ }
+ else {
+ if (!XdrvCallNextJsonAppend()) { // ,"INA219":{"Voltage":4.494,"Current":0.020,"Power":0.089}
+ sensor_set = 0; // Looped
+ break;
+ }
+ }
+ }
+
+// AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("DBG: GetNextSensor %d, %d"), sensor_set, ResponseLength());
+
+ TasmotaGlobal.tele_period = tele_period_save;
+ if (ResponseLength()) {
+ ResponseJsonStart(); // {"INA219":{"Voltage":4.494,"Current":0.020,"Power":0.089}}
+ ResponseJsonEnd();
+
+// AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("DBG: GetNextSensor %d, '%s'"), sensor_set, ResponseData());
+
+ return true;
+ }
+ return false;
+}
+
/*********************************************************************************************\
* GPIO Module and Template management
\*********************************************************************************************/
@@ -1534,16 +1582,7 @@ bool ValidModule(uint32_t index)
}
bool ValidTemplate(const char *search) {
-/*
- char template_name[strlen(SettingsText(SET_TEMPLATE_NAME)) +1];
- char search_name[strlen(search) +1];
-
- LowerCase(template_name, SettingsText(SET_TEMPLATE_NAME));
- LowerCase(search_name, search);
-
- return (strstr(template_name, search_name) != nullptr);
-*/
- return StrCaseStr_P(SettingsText(SET_TEMPLATE_NAME), search);
+ return (StrCaseStr_P(SettingsText(SET_TEMPLATE_NAME), search) != nullptr);
}
String AnyModuleName(uint32_t index)
@@ -1784,6 +1823,7 @@ bool ValidGPIO(uint32_t pin, uint32_t gpio) {
return (GPIO_USER == ValidPin(pin, BGPIO(gpio))); // Only allow GPIO_USER pins
}
+
bool ValidSpiPinUsed(uint32_t gpio) {
// ESP8266: If SPI pin selected chk if it's not one of the three Hardware SPI pins (12..14)
bool result = false;
@@ -2063,7 +2103,14 @@ uint32_t ConvertSerialConfig(uint8_t serial_config) {
//}
//#else
uint32_t GetSerialBaudrate(void) {
- return (Serial.baudRate() / 300) * 300; // Fix ESP32 strange results like 115201
+// return (Serial.baudRate() / 300) * 300; // Fix ESP32 strange results like 115201
+// Since core 3.0.4 the returned baudrate could even be 115942 instead of 115200 !!!
+ uint32_t margin = 300;
+ uint32_t baudrate = Serial.baudRate();
+ if (baudrate > 10000) {
+ margin = 2400;
+ }
+ return (baudrate / margin) * margin; // Fix ESP32 strange results like 115201
}
//#endif
@@ -2138,7 +2185,9 @@ void ClaimSerial(void) {
#ifdef ESP32
#if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3
#ifdef USE_USB_CDC_CONSOLE
- return; // USB console does not use serial
+ if (!tasconsole_serial) {
+ return; // USB console does not use serial
+ }
#endif // USE_USB_CDC_CONSOLE
#endif // ESP32C3/C6, S2 or S3
#endif // ESP32
@@ -2651,38 +2700,6 @@ void AddLogMissed(const char *sensor, uint32_t misses)
AddLog(LOG_LEVEL_DEBUG, PSTR("SNS: %s missed %d"), sensor, SENSOR_MAX_MISS - misses);
}
-void AddLogSpi(uint32_t hardware, int clk, int mosi, int miso) {
- uint32_t enabled = TasmotaGlobal.soft_spi_enabled;
- char hwswbus[8];
- if (hardware) {
-#ifdef ESP8266
- strcpy_P(hwswbus, PSTR("Hard"));
- enabled = TasmotaGlobal.spi_enabled;
-#endif
-#ifdef ESP32
- strcpy_P(hwswbus, PSTR("Bus0"));
- hwswbus[3] += (char)hardware;
- enabled = (1 == hardware) ? TasmotaGlobal.spi_enabled : TasmotaGlobal.spi_enabled2;
-#endif
- } else {
- strcpy_P(hwswbus, PSTR("Soft"));
- }
- switch(enabled) {
- case SPI_MOSI:
- AddLog(LOG_LEVEL_INFO, PSTR("SPI: %s using GPIO%02d(CLK) and GPIO%02d(MOSI)"),
- hwswbus, clk, mosi);
- break;
- case SPI_MISO:
- AddLog(LOG_LEVEL_INFO, PSTR("SPI: %s using GPIO%02d(CLK) and GPIO%02d(MISO)"),
- hwswbus, clk, miso);
- break;
- case SPI_MOSI_MISO:
- AddLog(LOG_LEVEL_INFO, PSTR("SPI: %s using GPIO%02d(CLK), GPIO%02d(MOSI) and GPIO%02d(MISO)"),
- hwswbus, clk, mosi, miso);
- break;
- }
-}
-
/*********************************************************************************************\
* HTML and URL encode
\*********************************************************************************************/
@@ -2707,6 +2724,10 @@ String HtmlEscape(const String unescaped) {
return result;
}
+String SettingsTextEscaped(uint32_t index) {
+ return HtmlEscape(SettingsText(index));
+}
+
String UrlEscape(const char *unescaped) {
static const char *hex = "0123456789ABCDEF";
String result;
diff --git a/tasmota/tasmota_support/support_a_i2c.ino b/tasmota/tasmota_support/support_a_i2c.ino
index 5912bbfc9..364cd1fe5 100644
--- a/tasmota/tasmota_support/support_a_i2c.ino
+++ b/tasmota/tasmota_support/support_a_i2c.ino
@@ -58,6 +58,10 @@ TwoWire& I2cGetWire(uint8_t bus = 0) {
}
}
+/*-------------------------------------------------------------------------------------------*\
+ * Return code: 0 = Error, 1 = OK
+\*-------------------------------------------------------------------------------------------*/
+
bool I2cValidRead(uint8_t addr, uint8_t reg, uint8_t size, uint8_t bus = 0) {
i2c_buffer = 0;
@@ -75,51 +79,51 @@ bool I2cValidRead(uint8_t addr, uint8_t reg, uint8_t size, uint8_t bus = 0) {
for (uint32_t i = 0; i < size; i++) {
i2c_buffer = i2c_buffer << 8 | myWire.read(); // receive DATA
}
- status = true;
+ status = true; // 1 = OK
}
}
retry--;
}
if (!retry) myWire.endTransmission();
- return status;
+ return status; // 0 = Error, 1 = OK
}
bool I2cValidRead8(uint8_t *data, uint8_t addr, uint8_t reg, uint8_t bus = 0) {
bool status = I2cValidRead(addr, reg, 1, bus);
*data = (uint8_t)i2c_buffer;
- return status;
+ return status; // 0 = Error, 1 = OK
}
bool I2cValidRead16(uint16_t *data, uint8_t addr, uint8_t reg, uint8_t bus = 0) {
bool status = I2cValidRead(addr, reg, 2, bus);
*data = (uint16_t)i2c_buffer;
- return status;
+ return status; // 0 = Error, 1 = OK
}
bool I2cValidReadS16(int16_t *data, uint8_t addr, uint8_t reg, uint8_t bus = 0) {
bool status = I2cValidRead(addr, reg, 2, bus);
*data = (int16_t)i2c_buffer;
- return status;
+ return status; // 0 = Error, 1 = OK
}
bool I2cValidRead16LE(uint16_t *data, uint8_t addr, uint8_t reg, uint8_t bus = 0) {
uint16_t ldata;
bool status = I2cValidRead16(&ldata, addr, reg, bus);
*data = (ldata >> 8) | (ldata << 8);
- return status;
+ return status; // 0 = Error, 1 = OK
}
bool I2cValidReadS16_LE(int16_t *data, uint8_t addr, uint8_t reg, uint8_t bus = 0) {
uint16_t ldata;
bool status = I2cValidRead16LE(&ldata, addr, reg, bus);
*data = (int16_t)ldata;
- return status;
+ return status; // 0 = Error, 1 = OK
}
bool I2cValidRead24(int32_t *data, uint8_t addr, uint8_t reg, uint8_t bus = 0) {
bool status = I2cValidRead(addr, reg, 3, bus);
*data = i2c_buffer;
- return status;
+ return status; // 0 = Error, 1 = OK
}
uint8_t I2cRead8(uint8_t addr, uint8_t reg, uint8_t bus = 0) {
@@ -166,37 +170,41 @@ bool I2cWrite(uint8_t addr, uint8_t reg, uint32_t val, uint8_t size, uint8_t bus
}
x--;
} while (myWire.endTransmission(true) != 0 && x != 0); // end transmission
- return (x);
+ return (x); // 0 = Error, 1 = OK
}
bool I2cWrite8(uint8_t addr, uint8_t reg, uint32_t val, uint8_t bus = 0) {
- return I2cWrite(addr, reg, val, 1, bus);
+ return I2cWrite(addr, reg, val, 1, bus); // 0 = Error, 1 = OK
}
bool I2cWrite16(uint8_t addr, uint8_t reg, uint32_t val, uint8_t bus = 0) {
- return I2cWrite(addr, reg, val, 2, bus);
+ return I2cWrite(addr, reg, val, 2, bus); // 0 = Error, 1 = OK
}
+/*-------------------------------------------------------------------------------------------*\
+ * Return code: 0 = OK, 1 = Error
+\*-------------------------------------------------------------------------------------------*/
+
bool I2cReadBuffer(uint8_t addr, uint8_t reg, uint8_t *reg_data, uint16_t len, uint8_t bus = 0) {
TwoWire& myWire = I2cGetWire(bus);
- if (&myWire == nullptr) { return true; } // No valid I2c bus
+ if (&myWire == nullptr) { return true; } // No valid I2c bus
myWire.beginTransmission((uint8_t)addr);
myWire.write((uint8_t)reg);
myWire.endTransmission();
if (len != myWire.requestFrom((uint8_t)addr, (uint8_t)len)) {
- return true; // Error
+ return true; // 1 = Error
}
while (len--) {
*reg_data = (uint8_t)myWire.read();
reg_data++;
}
- return false; // OK
+ return false; // 0 = OK
}
int8_t I2cWriteBuffer(uint8_t addr, uint8_t reg, uint8_t *reg_data, uint16_t len, uint8_t bus = 0) {
TwoWire& myWire = I2cGetWire(bus);
- if (&myWire == nullptr) { return 1; } // No valid I2c bus
+ if (&myWire == nullptr) { return 1; } // 1 = Error, No valid I2c bus
myWire.beginTransmission((uint8_t)addr);
myWire.write((uint8_t)reg);
@@ -205,9 +213,11 @@ int8_t I2cWriteBuffer(uint8_t addr, uint8_t reg, uint8_t *reg_data, uint16_t len
reg_data++;
}
myWire.endTransmission();
- return 0; // OK
+ return 0; // 0 = OK
}
+/*-------------------------------------------------------------------------------------------*/
+
void I2cScan(uint8_t bus = 0) {
// Return error codes defined in twi.h and core_esp8266_si2c.c
// I2C_OK 0
diff --git a/tasmota/tasmota_support/support_a_spi.ino b/tasmota/tasmota_support/support_a_spi.ino
new file mode 100644
index 000000000..35a3db4b0
--- /dev/null
+++ b/tasmota/tasmota_support/support_a_spi.ino
@@ -0,0 +1,75 @@
+/*
+ support_a_spi.ino - SPI support for Tasmota
+
+ SPDX-FileCopyrightText: 2024 Theo Arends
+
+ SPDX-License-Identifier: GPL-3.0-only
+*/
+
+#ifdef USE_SPI
+/*********************************************************************************************\
+ * Basic SPI routines supporting two busses
+\*********************************************************************************************/
+
+SPIClass *SpiBegin(uint32 bus = 1);
+SPIClass *SpiBegin(uint32 bus) {
+ SPIClass *spi;
+ if (1 == bus) { // SPI bus 1
+ if (TasmotaGlobal.spi_enabled) {
+ spi = &SPI; // Uses VSPI on ESP32 or FSPI on all other ESP32 derivatives (See SPI.cpp)
+#ifdef ESP8266
+ spi->begin();
+#endif // ESP8266
+#ifdef ESP32
+ spi->begin(Pin(GPIO_SPI_CLK), Pin(GPIO_SPI_MISO), Pin(GPIO_SPI_MOSI), -1);
+#endif // ESP32
+ return spi;
+ }
+ }
+#ifdef ESP32
+ if (2 == bus) { // SPI bus 2
+ if (TasmotaGlobal.spi_enabled2) {
+ spi = new SPIClass(HSPI); // See framework-arduinoespressif32 esp32-hal-spi.h
+ spi->begin(Pin(GPIO_SPI_CLK, 1), Pin(GPIO_SPI_MISO, 1), Pin(GPIO_SPI_MOSI, 1), -1);
+ return spi;
+ }
+ }
+#endif // ESP32
+ return nullptr;
+}
+
+#endif // USE_SPI
+
+/********************************************************************************************/
+
+void AddLogSpi(uint32_t hardware, int clk, int mosi, int miso) {
+ uint32_t enabled = TasmotaGlobal.soft_spi_enabled;
+ char hwswbus[8];
+ if (hardware) {
+#ifdef ESP8266
+ strcpy_P(hwswbus, PSTR("Hard"));
+ enabled = TasmotaGlobal.spi_enabled;
+#endif
+#ifdef ESP32
+ strcpy_P(hwswbus, PSTR("Bus0"));
+ hwswbus[3] += (char)hardware;
+ enabled = (1 == hardware) ? TasmotaGlobal.spi_enabled : TasmotaGlobal.spi_enabled2;
+#endif
+ } else {
+ strcpy_P(hwswbus, PSTR("Soft"));
+ }
+ switch(enabled) {
+ case SPI_MOSI:
+ AddLog(LOG_LEVEL_INFO, PSTR("SPI: %s using GPIO%02d(CLK) and GPIO%02d(MOSI)"),
+ hwswbus, clk, mosi);
+ break;
+ case SPI_MISO:
+ AddLog(LOG_LEVEL_INFO, PSTR("SPI: %s using GPIO%02d(CLK) and GPIO%02d(MISO)"),
+ hwswbus, clk, miso);
+ break;
+ case SPI_MOSI_MISO:
+ AddLog(LOG_LEVEL_INFO, PSTR("SPI: %s using GPIO%02d(CLK), GPIO%02d(MOSI) and GPIO%02d(MISO)"),
+ hwswbus, clk, mosi, miso);
+ break;
+ }
+}
diff --git a/tasmota/tasmota_support/support_button_v4.ino b/tasmota/tasmota_support/support_button_v4.ino
index 7766eadd7..191718975 100644
--- a/tasmota/tasmota_support/support_button_v4.ino
+++ b/tasmota/tasmota_support/support_button_v4.ino
@@ -419,7 +419,7 @@ void ButtonHandler(void) {
XdrvMailbox.index = button_index;
XdrvMailbox.payload = button;
- XdrvMailbox.command_code = Button.last_state[button_index];
+ XdrvMailbox.command_code = (Button.last_state[button_index] & 0xFF) | ((Button.press_counter[button_index] & 0xFF) << 8);
if (XdrvCall(FUNC_BUTTON_PRESSED)) {
// Serviced
}
diff --git a/tasmota/tasmota_support/support_command.ino b/tasmota/tasmota_support/support_command.ino
index 98a88c0d6..593bfdac5 100644
--- a/tasmota/tasmota_support/support_command.ino
+++ b/tasmota/tasmota_support/support_command.ino
@@ -24,7 +24,7 @@ const char kTasmotaCommands[] PROGMEM = "|" // No prefix
D_CMND_UPGRADE "|" D_CMND_UPLOAD "|" D_CMND_OTAURL "|" D_CMND_SERIALLOG "|" D_CMND_RESTART "|"
#ifndef FIRMWARE_MINIMAL_ONLY
D_CMND_BACKLOG "|" D_CMND_DELAY "|" D_CMND_POWER "|" D_CMND_POWERLOCK "|" D_CMND_TIMEDPOWER "|" D_CMND_STATUS "|" D_CMND_STATE "|" D_CMND_SLEEP "|"
- D_CMND_POWERONSTATE "|" D_CMND_PULSETIME "|" D_CMND_BLINKTIME "|" D_CMND_BLINKCOUNT "|" D_CMND_SAVEDATA "|"
+ D_CMND_POWERONSTATE "|" D_CMND_PULSETIME "|" D_CMND_BLINKTIME "|" D_CMND_BLINKCOUNT "|" D_CMND_STATETEXT "|" D_CMND_SAVEDATA "|"
D_CMND_SO "|" D_CMND_SETOPTION "|" D_CMND_TEMPERATURE_RESOLUTION "|" D_CMND_HUMIDITY_RESOLUTION "|" D_CMND_PRESSURE_RESOLUTION "|" D_CMND_POWER_RESOLUTION "|"
D_CMND_VOLTAGE_RESOLUTION "|" D_CMND_FREQUENCY_RESOLUTION "|" D_CMND_CURRENT_RESOLUTION "|" D_CMND_ENERGY_RESOLUTION "|" D_CMND_WEIGHT_RESOLUTION "|"
D_CMND_MODULE "|" D_CMND_MODULES "|" D_CMND_GPIO "|" D_CMND_GPIOREAD "|" D_CMND_GPIOS "|" D_CMND_TEMPLATE "|" D_CMND_PWM "|" D_CMND_PWMFREQUENCY "|" D_CMND_PWMRANGE "|"
@@ -64,7 +64,7 @@ void (* const TasmotaCommand[])(void) PROGMEM = {
&CmndUpgrade, &CmndUpgrade, &CmndOtaUrl, &CmndSeriallog, &CmndRestart,
#ifndef FIRMWARE_MINIMAL_ONLY
&CmndBacklog, &CmndDelay, &CmndPower, &CmndPowerLock, &CmndTimedPower, &CmndStatus, &CmndState, &CmndSleep,
- &CmndPowerOnState, &CmndPulsetime, &CmndBlinktime, &CmndBlinkcount, &CmndSavedata,
+ &CmndPowerOnState, &CmndPulsetime, &CmndBlinktime, &CmndBlinkcount, &CmndStateText, &CmndSavedata,
&CmndSetoption, &CmndSetoption, &CmndTemperatureResolution, &CmndHumidityResolution, &CmndPressureResolution, &CmndPowerResolution,
&CmndVoltageResolution, &CmndFrequencyResolution, &CmndCurrentResolution, &CmndEnergyResolution, &CmndWeightResolution,
&CmndModule, &CmndModules, &CmndGpio, &CmndGpioRead, &CmndGpios, &CmndTemplate, &CmndPwm, &CmndPwmfrequency, &CmndPwmrange,
@@ -374,7 +374,7 @@ void CommandHandler(char* topicBuf, char* dataBuf, uint32_t data_len) {
}
char stemp1[TOPSZ];
- GetFallbackTopic_P(stemp1, ""); // Full Fallback topic = cmnd/DVES_xxxxxxxx_fb/
+ GetFallbackTopic_P(stemp1, ""); // Full Fallback topic = cmnd/DVES_xxxxxxxx_fb/
TasmotaGlobal.fallback_topic_flag = (!strncmp(topicBuf, stemp1, strlen(stemp1)));
char *type = strrchr(topicBuf, '/'); // Last part of received topic is always the command (type)
@@ -384,13 +384,13 @@ void CommandHandler(char* topicBuf, char* dataBuf, uint32_t data_len) {
if (type != nullptr) {
type++;
uint32_t i;
- int nLen; // strlen(type)
+ int nLen; // strlen(type)
char *s = type;
for (nLen = 0; *s; s++, nLen++) {
*s=toupper(*s);
}
i = nLen;
- if (i > 0) { // may be 0
+ if (i > 0) { // may be 0
while (isdigit(type[i-1])) {
i--;
}
@@ -400,13 +400,17 @@ void CommandHandler(char* topicBuf, char* dataBuf, uint32_t data_len) {
user_index = true;
}
type[i] = '\0';
+ if ((i > 1) && ('_' == type[0])) {
+ type++; // Skip leading _ in command
+ TasmotaGlobal.no_mqtt_response = true;
+ }
- bool binary_data = (index > 299); // Suppose binary data on topic index > 299
+ bool binary_data = (index > 299); // Suppose binary data on topic index > 299
if (!binary_data) {
bool keep_spaces = ((strstr_P(type, PSTR("SERIALSEND")) != nullptr) && (index > 9)); // Do not skip leading spaces on (s)serialsend10 and up
if (!keep_spaces) {
while (*dataBuf && isspace(*dataBuf)) {
- dataBuf++; // Skip leading spaces in data
+ dataBuf++; // Skip leading spaces in data
data_len--;
}
}
@@ -474,19 +478,25 @@ void CommandHandler(char* topicBuf, char* dataBuf, uint32_t data_len) {
}
if (ResponseLength()) {
- MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, type);
+ if (TasmotaGlobal.no_mqtt_response){ // If it is activated, Tasmota will not publish MQTT messages, but it will proccess event trigger rules
+ XdrvRulesProcess(0);
+ } else {
+ MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, type);
+ }
}
TasmotaGlobal.fallback_topic_flag = false;
+ TasmotaGlobal.no_mqtt_response = false;
}
void CmndBacklog(void) {
// Backlog command1;command2;.. Execute commands in sequence with a delay in between set with SetOption34
// Backlog0 command1;command2;.. Execute commands in sequence with no delay
+ // Backlog2 command1;command2;.. Execute commands in sequence with no delay and no response but rule processing only
+ // Backlog3 command1;command2;.. Execute commands in sequence with a delay but no response but rule processing only
if (XdrvMailbox.data_len) {
- if (0 == XdrvMailbox.index) {
- TasmotaGlobal.backlog_nodelay = true;
- }
+ TasmotaGlobal.backlog_nodelay = (0 == (XdrvMailbox.index & 0x01)); // Backlog0, Backlog2
+ TasmotaGlobal.backlog_no_mqtt_response = (2 == (XdrvMailbox.index & 0x02)); // Backlog2, Backlog3
char *blcommand = strtok(XdrvMailbox.data, ";");
while (blcommand != nullptr) {
@@ -1367,6 +1377,22 @@ void CmndBlinkcount(void)
ResponseCmndNumber(Settings->blinkcount);
}
+void CmndStateText(void) {
+ if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= MAX_STATE_TEXT)) {
+ if (!XdrvMailbox.usridx) {
+ ResponseCmndAll(SET_STATE_TXT1, MAX_STATE_TEXT);
+ } else {
+ if (XdrvMailbox.data_len > 0) {
+ for (uint32_t i = 0; i <= XdrvMailbox.data_len; i++) {
+ if (XdrvMailbox.data[i] == ' ') XdrvMailbox.data[i] = '_';
+ }
+ SettingsUpdateText(SET_STATE_TXT1 + XdrvMailbox.index -1, XdrvMailbox.data);
+ }
+ ResponseCmndIdxChar(GetStateText(XdrvMailbox.index -1));
+ }
+ }
+}
+
void CmndSavedata(void)
{
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 3600)) {
diff --git a/tasmota/tasmota_support/support_crash_recorder.ino b/tasmota/tasmota_support/support_crash_recorder.ino
index 853b5baab..ab894e1ee 100644
--- a/tasmota/tasmota_support/support_crash_recorder.ino
+++ b/tasmota/tasmota_support/support_crash_recorder.ino
@@ -166,7 +166,11 @@ void CrashDumpClear(void)
// extern "C" void custom_crash_callback(struct rst_info * rst_info, uint32_t stack, uint32_t stack_end )
// esp_err_t IRAM_ATTR esp_backtrace_print(int depth)
+#if defined __has_include && __has_include("xtensa_api.h")
+#include "xtensa_api.h"
+#else
#include "freertos/xtensa_api.h"
+#endif
#include "esp_debug_helpers.h"
#include "esp_cpu_utils.h"
extern "C" {
diff --git a/tasmota/tasmota_support/support_features.ino b/tasmota/tasmota_support/support_features.ino
index 457150896..be84d2617 100644
--- a/tasmota/tasmota_support/support_features.ino
+++ b/tasmota/tasmota_support/support_features.ino
@@ -919,8 +919,12 @@ constexpr uint32_t feature[] = {
#if defined(USE_I2C) && defined(USE_SPL06_007)
0x00000020 | // xsns_25_spl006-7_sensor.ino
#endif
-// 0x00000040 | //
-// 0x00000080 | //
+#if defined(USE_I2C) && defined(USE_QMP6988)
+ 0x00000040 | // xsns_28_qmp6988.ino
+#endif
+#ifdef USE_WOOLIIS
+ 0x00000080 | // xsns_115_wooliis.ino
+#endif
// 0x00000100 | //
// 0x00000200 | //
// 0x00000400 | //
diff --git a/tasmota/tasmota_support/support_flash_log.ino b/tasmota/tasmota_support/support_flash_log.ino
index c28528a7f..42b2b1eed 100644
--- a/tasmota/tasmota_support/support_flash_log.ino
+++ b/tasmota/tasmota_support/support_flash_log.ino
@@ -19,13 +19,11 @@
--------------------------------------------------------------------------------------------
Version Date Action Description
--------------------------------------------------------------------------------------------
-
-
+ 2.0.0.0 20240625 expand - Add support for ESP32
---
1.0.0.0 20190923 started - further development by Christian Baars - https://github.com/Staars/Sonoff-Tasmota
forked - from arendst/tasmota - https://github.com/arendst/Sonoff-Tasmota
base - code base from arendst and - written from scratch
-
*/
/********************************************************************************************\
@@ -37,7 +35,6 @@
\*********************************************************************************************/
#ifdef USE_FLOG
-#ifdef ESP8266
class FLOG
@@ -84,8 +81,8 @@ public:
bool recording = false; // ready for recording
union sector_t{
- uint32_t dword_buffer[FLASH_SECTOR_SIZE/4];
- uint8_t byte_buffer[FLASH_SECTOR_SIZE];
+ uint32_t dword_buffer[SPI_FLASH_SEC_SIZE/4];
+ uint8_t byte_buffer[SPI_FLASH_SEC_SIZE];
header_t header; // should be 4-byte-aligned
} sector; // the global buffer of 4096 bytes, used for reading and writing
@@ -100,20 +97,16 @@ public:
void startDownload(size_t size, CallbackNoArgs sendHeader, CallbackWithArgs sendRecord, CallbackNoArgs sendFooter);
};
-extern "C" uint32_t _SPIFFS_start; // we make shure later, that only one of the two is really used ...
-extern "C" uint32_t _FS_start; // ... depending on core-sdk-version
-
/**
* @brief Will examine the start and end of the OTA-partition. Then the sector size will be computed, saved data should be found and the initial state will be configured.
*/
void FLOG::init(void)
{
DEBUG_SENSOR_LOG(PSTR("FLOG: init ..."));
-size = ESP.getSketchSize();
-// round one sector up
-start = (size + FLASH_SECTOR_SIZE - 1) & (~(FLASH_SECTOR_SIZE - 1));
-end = (uint32_t)&_FS_start - 0x40200000;
-num_sectors = (end - start)/FLASH_SECTOR_SIZE;
+size = ESP_getSketchSize();
+start = FlashWriteStartSector() * SPI_FLASH_SEC_SIZE;
+end = FlashWriteMaxSector() * SPI_FLASH_SEC_SIZE;
+num_sectors = (end - start) / SPI_FLASH_SEC_SIZE;
DEBUG_SENSOR_LOG(PSTR("FLOG: size: 0x%lx, start: 0x%lx, end: 0x%lx, num_sectors(dec): %lu"), size, start, end, num_sectors );
_findFirstErasedSector();
if(first_erased_sector == 0xffff){
@@ -138,7 +131,7 @@ ready = true;
*/
void FLOG::_readSector(uint8_t one_sector){
DEBUG_SENSOR_LOG(PSTR("FLOG: read sector number: %u" ), one_sector);
- ESP.flashRead(start+(one_sector * FLASH_SECTOR_SIZE),(uint32_t *)§or.dword_buffer, FLASH_SECTOR_SIZE);
+ ESP.flashRead(start+(one_sector * SPI_FLASH_SEC_SIZE),(uint32_t *)§or.dword_buffer, SPI_FLASH_SEC_SIZE);
}
/**
* @brief Erase the given sector og the OTA-partition
@@ -147,7 +140,7 @@ void FLOG::_readSector(uint8_t one_sector){
*/
void FLOG::_eraseSector(uint8_t one_sector){ // Erase sector of FLOG/OTA
DEBUG_SENSOR_LOG(PSTR("FLOG: erasing sector number: %u" ), one_sector);
- ESP.flashEraseSector((start/FLASH_SECTOR_SIZE)+one_sector);
+ ESP.flashEraseSector((start/SPI_FLASH_SEC_SIZE)+one_sector);
}
/**
* @brief Write the global buffer to the given sector
@@ -156,7 +149,7 @@ void FLOG::_eraseSector(uint8_t one_sector){ // Erase sector of FLOG/OTA
*/
void FLOG::_writeSector(uint8_t one_sector){ // Write sector of FLOG/OTA
DEBUG_SENSOR_LOG(PSTR("FLOG: write buffer to sector number: %u" ), one_sector);
- ESP.flashWrite(start+(one_sector * FLASH_SECTOR_SIZE),(uint32_t *)§or.dword_buffer, FLASH_SECTOR_SIZE);
+ ESP.flashWrite(start+(one_sector * SPI_FLASH_SEC_SIZE),(uint32_t *)§or.dword_buffer, SPI_FLASH_SEC_SIZE);
}
/**
* @brief Clear the global buffer, but leave the header intact
@@ -301,8 +294,8 @@ void FLOG::addToBuffer(uint8_t src[], uint32_t size){
return; // we ignore additional calls and are done, TODO: maybe use meaningful return values
}
}
- if((FLASH_SECTOR_SIZE-sector.header.buf_pointer-sizeof(sector.header))>size){
- // DEBUG_SENSOR_LOG(PSTR("FLOG: enough space left in buffer: %u"), FLASH_SECTOR_SIZE - sector.header.buf_pointer - sizeof(sector.header));
+ if((SPI_FLASH_SEC_SIZE-sector.header.buf_pointer-sizeof(sector.header))>size){
+ // DEBUG_SENSOR_LOG(PSTR("FLOG: enough space left in buffer: %u"), SPI_FLASH_SEC_SIZE - sector.header.buf_pointer - sizeof(sector.header));
// DEBUG_SENSOR_LOG(PSTR("FLOG: current buf_pointer: %u, size of added: %u"), sector.header.buf_pointer, size);
memcpy(sector.byte_buffer + sector.header.buf_pointer, src, size);
@@ -315,7 +308,7 @@ void FLOG::addToBuffer(uint8_t src[], uint32_t size){
_saveBufferToSector();
sectors_left++;
// but now save the data to the fresh buffer
- if((FLASH_SECTOR_SIZE-sector.header.buf_pointer-sizeof(sector.header))>size){
+ if((SPI_FLASH_SEC_SIZE-sector.header.buf_pointer-sizeof(sector.header))>size){
memcpy(sector.byte_buffer + sector.header.buf_pointer, src, size);
sector.header.buf_pointer+=size; // this is the next free spot
}
@@ -426,5 +419,4 @@ void FLOG::stopRecording(void){
_initBuffer();
}
- #endif // ESP8266
- #endif // USE_FLOG
\ No newline at end of file
+#endif // USE_FLOG
\ No newline at end of file
diff --git a/tasmota/tasmota_support/support_tasmota.ino b/tasmota/tasmota_support/support_tasmota.ino
index 71421ea9c..d77d2945e 100644
--- a/tasmota/tasmota_support/support_tasmota.ino
+++ b/tasmota/tasmota_support/support_tasmota.ino
@@ -690,6 +690,7 @@ void ExecuteCommandPower(uint32_t device, uint32_t state, uint32_t source)
// state 2 = POWER_TOGGLE = Toggle relay
// state 3 = POWER_BLINK = Blink relay
// state 4 = POWER_BLINK_STOP = Stop blinking relay
+// state 5 = POWER_OFF_FORCE = Relay off even if locked
// state 8 = POWER_OFF_NO_STATE = Relay Off and no publishPowerState
// state 9 = POWER_ON_NO_STATE = Relay On and no publishPowerState
// state 10 = POWER_TOGGLE_NO_STATE = Toggle relay and no publishPowerState
@@ -709,6 +710,12 @@ void ExecuteCommandPower(uint32_t device, uint32_t state, uint32_t source)
}
#endif // USE_SONOFF_IFAN
+ bool force_power_off = false;
+ if (POWER_OFF_FORCE == state) {
+ force_power_off = true;
+ state = POWER_OFF;
+ }
+
bool publish_power = true;
if ((state >= POWER_OFF_NO_STATE) && (state <= POWER_TOGGLE_NO_STATE)) {
state &= 3; // POWER_OFF, POWER_ON or POWER_TOGGLE
@@ -720,7 +727,7 @@ void ExecuteCommandPower(uint32_t device, uint32_t state, uint32_t source)
}
TasmotaGlobal.active_device = device;
- if (bitRead(Settings->power_lock, device -1)) {
+ if (!force_power_off && bitRead(Settings->power_lock, device -1)) {
AddLog(LOG_LEVEL_INFO, PSTR("CMD: Power%d is LOCKED"), device);
state = POWER_SHOW_STATE; // Only show state. Make no change
}
@@ -1611,12 +1618,12 @@ void Every250mSeconds(void)
#ifdef ESP32
if (OtaFactoryRead()) {
OtaFactoryWrite(false);
- TasmotaGlobal.ota_state_flag = 3;
- AddLog(LOG_LEVEL_DEBUG, PSTR("OTA: Propagating upload"));
+ RtcSettings.ota_loader = 1;
}
#endif
if (1 == RtcSettings.ota_loader) {
RtcSettings.ota_loader = 0;
+ AddLog(LOG_LEVEL_DEBUG, PSTR("OTA: Propagating upload"));
TasmotaGlobal.ota_state_flag = 3;
}
#endif // FIRMWARE_MINIMAL
diff --git a/tasmota/tasmota_support/support_wifi.ino b/tasmota/tasmota_support/support_wifi.ino
index 852664ad4..35b07046e 100644
--- a/tasmota/tasmota_support/support_wifi.ino
+++ b/tasmota/tasmota_support/support_wifi.ino
@@ -923,18 +923,6 @@ void WifiCheck(uint8_t param)
if (Wifi.config_counter) {
Wifi.config_counter--;
Wifi.counter = Wifi.config_counter +5;
- if (Wifi.config_counter) {
- if (!Wifi.config_counter) {
- if (strlen(WiFi.SSID().c_str())) {
- SettingsUpdateText(SET_STASSID1, WiFi.SSID().c_str());
- }
- if (strlen(WiFi.psk().c_str())) {
- SettingsUpdateText(SET_STAPWD1, WiFi.psk().c_str());
- }
- Settings->sta_active = 0;
- AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_WCFG_2_WIFIMANAGER D_CMND_SSID "1 %s"), SettingsText(SET_STASSID1));
- }
- }
if (!Wifi.config_counter) {
// SettingsSdkErase(); // Disabled v6.1.0b due to possible bad wifi connects
TasmotaGlobal.restart_flag = 2;
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino b/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino
index de9b796ba..b9837b786 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino
@@ -477,10 +477,6 @@ static void WebGetArg(const char* arg, char* out, size_t max)
// out[max-1] = '\0'; // Ensure terminating NUL
}
-String SettingsTextEscaped(uint32_t index) {
- return HtmlEscape(SettingsText(index));
-}
-
String AddWebCommand(const char* command, const char* arg, const char* dflt) {
/*
// OK but fixed max argument
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_02_9_mqtt.ino b/tasmota/tasmota_xdrv_driver/xdrv_02_9_mqtt.ino
index 9a793f8d1..a9bbfef73 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_02_9_mqtt.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_02_9_mqtt.ino
@@ -63,7 +63,7 @@ const char kMqttCommands[] PROGMEM = "|" // No prefix
#ifdef USE_MQTT_FILE
D_CMND_FILEUPLOAD "|" D_CMND_FILEDOWNLOAD "|"
#endif // USE_MQTT_FILE
- D_CMND_MQTTHOST "|" D_CMND_MQTTPORT "|" D_CMND_MQTTRETRY "|" D_CMND_STATETEXT "|" D_CMND_MQTTCLIENT "|"
+ D_CMND_MQTTHOST "|" D_CMND_MQTTPORT "|" D_CMND_MQTTRETRY "|" D_CMND_MQTTCLIENT "|"
D_CMND_FULLTOPIC "|" D_CMND_PREFIX "|" D_CMND_GROUPTOPIC "|" D_CMND_TOPIC "|" D_CMND_PUBLISH "|" D_CMND_MQTTLOG "|"
D_CMND_BUTTONTOPIC "|" D_CMND_SWITCHTOPIC "|" D_CMND_BUTTONRETAIN "|" D_CMND_SWITCHRETAIN "|" D_CMND_POWERRETAIN "|"
D_CMND_SENSORRETAIN "|" D_CMND_INFORETAIN "|" D_CMND_STATERETAIN "|" D_CMND_STATUSRETAIN
@@ -90,7 +90,7 @@ void (* const MqttCommand[])(void) PROGMEM = {
#ifdef USE_MQTT_FILE
&CmndFileUpload, &CmndFileDownload,
#endif // USE_MQTT_FILE
- &CmndMqttHost, &CmndMqttPort, &CmndMqttRetry, &CmndStateText, &CmndMqttClient,
+ &CmndMqttHost, &CmndMqttPort, &CmndMqttRetry, &CmndMqttClient,
&CmndFullTopic, &CmndPrefix, &CmndGroupTopic, &CmndTopic, &CmndPublish, &CmndMqttlog,
&CmndButtonTopic, &CmndSwitchTopic, &CmndButtonRetain, &CmndSwitchRetain, &CmndPowerRetain,
&CmndSensorRetain, &CmndInfoRetain, &CmndStateRetain, &CmndStatusRetain
@@ -639,7 +639,8 @@ void MqttDataHandler(char* mqtt_topic, uint8_t* mqtt_data, unsigned int data_len
if (XdrvCall(FUNC_MQTT_DATA)) { return; }
ShowSource(SRC_MQTT);
-
+ TasmotaGlobal.last_source = SRC_MQTT;
+
CommandHandler(topic, (char*)mqtt_data, data_len);
if (Mqtt.disable_logging) {
@@ -861,13 +862,19 @@ void MqttPublishPrefixTopicRulesProcess_P(uint32_t prefix, const char* subtopic)
MqttPublishPrefixTopicRulesProcess_P(prefix, subtopic, false);
}
-void MqttPublishTeleSensor(void) {
- // Publish tele//SENSOR default ResponseData string with optional retained
+void MqttPublishTele(const char* subtopic) {
+ // Publish tele// default ResponseData string with optional retained
// then process rules
#ifdef USE_INFLUXDB
InfluxDbProcess(1); // Use a copy of ResponseData
#endif
- MqttPublishPrefixTopicRulesProcess_P(TELE, PSTR(D_RSLT_SENSOR), Settings->flag.mqtt_sensor_retain); // CMND_SENSORRETAIN
+ MqttPublishPrefixTopicRulesProcess_P(TELE, subtopic, Settings->flag.mqtt_sensor_retain); // CMND_SENSORRETAIN
+}
+
+void MqttPublishTeleSensor(void) {
+ // Publish tele//SENSOR default ResponseData string with optional retained
+ // then process rules
+ MqttPublishTele(PSTR(D_RSLT_SENSOR));
}
void MqttPublishPowerState(uint32_t device) {
@@ -1499,22 +1506,6 @@ void CmndMqttRetry(void) {
ResponseCmndNumber(Settings->mqtt_retry);
}
-void CmndStateText(void) {
- if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= MAX_STATE_TEXT)) {
- if (!XdrvMailbox.usridx) {
- ResponseCmndAll(SET_STATE_TXT1, MAX_STATE_TEXT);
- } else {
- if (XdrvMailbox.data_len > 0) {
- for (uint32_t i = 0; i <= XdrvMailbox.data_len; i++) {
- if (XdrvMailbox.data[i] == ' ') XdrvMailbox.data[i] = '_';
- }
- SettingsUpdateText(SET_STATE_TXT1 + XdrvMailbox.index -1, XdrvMailbox.data);
- }
- ResponseCmndIdxChar(GetStateText(XdrvMailbox.index -1));
- }
- }
-}
-
void CmndMqttClient(void) {
if (!XdrvMailbox.grpflg && (XdrvMailbox.data_len > 0)) {
SettingsUpdateText(SET_MQTT_CLIENT, (SC_DEFAULT == Shortcut()) ? PSTR(MQTT_CLIENT_ID) : XdrvMailbox.data);
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino
index 0d15ffd4f..f6229bf4b 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino
@@ -29,10 +29,6 @@
//#define USE_ENERGY_MARGIN_DETECTION
// #define USE_ENERGY_POWER_LIMIT
-#ifndef MQTT_TELE_RETAIN
-#define MQTT_TELE_RETAIN 0
-#endif
-
#define ENERGY_NONE 0
#define ENERGY_WATCHDOG 4 // Allow up to 4 seconds before deciding no valid data present
@@ -63,7 +59,6 @@ const char kEnergyCommands[] PROGMEM = "|" // No prefix
#ifdef USE_ENERGY_POWER_LIMIT
D_CMND_MAXENERGY "|" D_CMND_MAXENERGYSTART "|"
D_CMND_MAXPOWER "|" D_CMND_MAXPOWERHOLD "|" D_CMND_MAXPOWERWINDOW "|"
- D_CMND_SAFEPOWER "|" D_CMND_SAFEPOWERHOLD "|" D_CMND_SAFEPOWERWINDOW "|"
#endif // USE_ENERGY_POWER_LIMIT
#endif // USE_ENERGY_MARGIN_DETECTION
D_CMND_ENERGYTODAY "|" D_CMND_ENERGYYESTERDAY "|" D_CMND_ENERGYTOTAL "|" D_CMND_ENERGYEXPORTACTIVE "|" D_CMND_ENERGYUSAGE "|" D_CMND_ENERGYEXPORT "|" D_CMND_TARIFF;
@@ -76,7 +71,6 @@ void (* const EnergyCommand[])(void) PROGMEM = {
#ifdef USE_ENERGY_POWER_LIMIT
&CmndMaxEnergy, &CmndMaxEnergyStart,
&CmndMaxPower, &CmndMaxPowerHold, &CmndMaxPowerWindow,
- &CmndSafePower, &CmndSafePowerHold, &CmndSafePowerWindow,
#endif // USE_ENERGY_POWER_LIMIT
#endif // USE_ENERGY_MARGIN_DETECTION
&CmndEnergyToday, &CmndEnergyYesterday, &CmndEnergyTotal, &CmndEnergyExportActive, &CmndEnergyUsage, &CmndEnergyExport, &CmndTariff};
@@ -126,7 +120,7 @@ typedef struct {
bool power_on;
#ifdef USE_ENERGY_MARGIN_DETECTION
- uint16_t power_history[ENERGY_MAX_PHASES][3];
+ uint16_t power_history[3][ENERGY_MAX_PHASES];
uint8_t power_steady_counter; // Allow for power on stabilization
uint8_t margin_stable;
bool min_power_flag;
@@ -137,9 +131,9 @@ typedef struct {
bool max_current_flag;
#ifdef USE_ENERGY_POWER_LIMIT
- uint16_t mplh_counter;
- uint16_t mplw_counter;
- uint8_t mplr_counter;
+ uint16_t mpl_hold_counter;
+ uint16_t mpl_window_counter;
+ uint8_t mpl_retry_counter;
uint8_t max_energy_state;
#endif // USE_ENERGY_POWER_LIMIT
#endif // USE_ENERGY_MARGIN_DETECTION
@@ -488,15 +482,15 @@ void EnergyMarginCheck(void) {
for (uint32_t phase = 0; phase < Energy->phase_count; phase++) {
uint16_t active_power = (uint16_t)(Energy->active_power[phase]);
-// AddLog(LOG_LEVEL_DEBUG, PSTR("NRG: APower %d, HPower0 %d, HPower1 %d, HPower2 %d"), active_power, Energy->power_history[phase][0], Energy->power_history[phase][1], Energy->power_history[phase][2]);
+// AddLog(LOG_LEVEL_DEBUG, PSTR("NRG: APower %d, HPower0 %d, HPower1 %d, HPower2 %d"), active_power, Energy->power_history[0][phase], Energy->power_history[1][phase], Energy->power_history[2][phase]);
if (Settings->energy_power_delta[phase]) {
- power_diff[phase] = active_power - Energy->power_history[phase][0];
+ power_diff[phase] = active_power - Energy->power_history[0][phase];
uint16_t delta = abs(power_diff[phase]);
bool threshold_met = false;
if (delta > 0) {
if (Settings->energy_power_delta[phase] < 101) { // 1..100 = Percentage
- uint16_t min_power = (Energy->power_history[phase][0] > active_power) ? active_power : Energy->power_history[phase][0];
+ uint16_t min_power = (Energy->power_history[0][phase] > active_power) ? active_power : Energy->power_history[0][phase];
if (0 == min_power) { min_power++; } // Fix divide by 0 exception (#6741)
delta = (delta * 100) / min_power;
if (delta >= Settings->energy_power_delta[phase]) {
@@ -509,16 +503,16 @@ void EnergyMarginCheck(void) {
}
}
if (threshold_met) {
- Energy->power_history[phase][1] = active_power; // We only want one report so reset history
- Energy->power_history[phase][2] = active_power;
+ Energy->power_history[1][phase] = active_power; // We only want one report so reset history
+ Energy->power_history[2][phase] = active_power;
jsonflg = true;
} else {
power_diff[phase] = 0;
}
}
- Energy->power_history[phase][0] = Energy->power_history[phase][1]; // Shift in history every second allowing power changes to settle for up to three seconds
- Energy->power_history[phase][1] = Energy->power_history[phase][2];
- Energy->power_history[phase][2] = active_power;
+ Energy->power_history[0][phase] = Energy->power_history[1][phase]; // Shift in history every second allowing power changes to settle for up to three seconds
+ Energy->power_history[1][phase] = Energy->power_history[2][phase];
+ Energy->power_history[2][phase] = active_power;
}
if (jsonflg) {
float power_diff_f[Energy->phase_count];
@@ -564,7 +558,7 @@ void EnergyMarginCheck(void) {
}
if (jsonflg) {
ResponseJsonEndEnd();
- MqttPublishPrefixTopicRulesProcess_P(TELE, PSTR(D_RSLT_MARGINS), MQTT_TELE_RETAIN);
+ MqttPublishTele(PSTR(D_RSLT_MARGINS));
EnergyMqttShow();
Energy->margin_stable = 3; // Allow 2 seconds to stabilize before reporting
}
@@ -572,44 +566,40 @@ void EnergyMarginCheck(void) {
#ifdef USE_ENERGY_POWER_LIMIT
// Max Power
if (Settings->energy_max_power_limit) {
- if (Energy->active_power[0] > Settings->energy_max_power_limit) {
- if (!Energy->mplh_counter) {
- Energy->mplh_counter = Settings->energy_max_power_limit_hold;
- } else {
- Energy->mplh_counter--;
- if (!Energy->mplh_counter) {
- ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHED "\":%d}"), energy_power_u);
- MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING);
- EnergyMqttShow();
- SetAllPower(POWER_OFF_FORCE, SRC_MAXPOWER);
- if (!Energy->mplr_counter) {
- Energy->mplr_counter = Settings->param[P_MAX_POWER_RETRY] +1; // SetOption33 - Max Power Retry count
- }
- Energy->mplw_counter = Settings->energy_max_power_limit_window;
+ if (energy_power_u > Settings->energy_max_power_limit) {
+ if (!Energy->mpl_hold_counter) {
+ Energy->mpl_hold_counter = Settings->energy_max_power_limit_hold +1;
+ }
+ Energy->mpl_hold_counter--;
+ if (!Energy->mpl_hold_counter) {
+ if (!Energy->mpl_retry_counter) {
+ Energy->mpl_retry_counter = Settings->param[P_MAX_POWER_RETRY] +1; // SetOption33 - Max Power Retry count
}
+ Energy->mpl_retry_counter--;
+ if (Energy->mpl_retry_counter) {
+ ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHED "\":%d}"), energy_power_u);
+ } else {
+ ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHEDRETRY "\":\"%s\"}"), GetStateText(0));
+ }
+ MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING);
+ EnergyMqttShow();
+ SetAllPower(POWER_OFF_FORCE, SRC_MAXPOWER);
+ Energy->mpl_window_counter = Settings->energy_max_power_limit_window;
}
}
else if (TasmotaGlobal.power && (energy_power_u <= Settings->energy_max_power_limit)) {
- Energy->mplh_counter = 0;
- Energy->mplr_counter = 0;
- Energy->mplw_counter = 0;
+ Energy->mpl_hold_counter = 0;
+ Energy->mpl_retry_counter = 0;
+ Energy->mpl_window_counter = 0;
}
if (!TasmotaGlobal.power) {
- if (Energy->mplw_counter) {
- Energy->mplw_counter--;
+ if (Energy->mpl_window_counter) {
+ Energy->mpl_window_counter--;
} else {
- if (Energy->mplr_counter) {
- Energy->mplr_counter--;
- if (Energy->mplr_counter) {
- ResponseTime_P(PSTR(",\"" D_JSON_POWERMONITOR "\":\"%s\"}"), GetStateText(1));
- MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_JSON_POWERMONITOR));
- RestorePower(true, SRC_MAXPOWER);
- } else {
- ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHEDRETRY "\":\"%s\"}"), GetStateText(0));
- MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING);
- EnergyMqttShow();
- SetAllPower(POWER_OFF_FORCE, SRC_MAXPOWER);
- }
+ if (Energy->mpl_retry_counter) {
+ ResponseTime_P(PSTR(",\"" D_JSON_POWERMONITOR "\":\"%s\"}"), GetStateText(1));
+ MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_JSON_POWERMONITOR));
+ RestorePower(true, SRC_MAXPOWER);
}
}
}
@@ -1022,10 +1012,30 @@ void CmndEnergyConfig(void) {
\*********************************************************************************************/
void EnergyMarginStatus(void) {
- Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS9_MARGIN "\":{\"" D_CMND_POWERDELTA "\":[%d,%d,%d],\"" D_CMND_POWERLOW "\":%d,\"" D_CMND_POWERHIGH "\":%d,\""
- D_CMND_VOLTAGELOW "\":%d,\"" D_CMND_VOLTAGEHIGH "\":%d,\"" D_CMND_CURRENTLOW "\":%d,\"" D_CMND_CURRENTHIGH "\":%d}}"),
- Settings->energy_power_delta[0], Settings->energy_power_delta[1], Settings->energy_power_delta[2], Settings->energy_min_power, Settings->energy_max_power,
- Settings->energy_min_voltage, Settings->energy_max_voltage, Settings->energy_min_current, Settings->energy_max_current);
+ Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS9_MARGIN "\":{\"" D_CMND_POWERDELTA "\":"));
+ if (Energy->phase_count > 1) {
+ for (uint32_t i = 0; i < Energy->phase_count; i++) {
+ ResponseAppend_P(PSTR("%c%d"), (i)?',':'[', Settings->energy_power_delta[i]);
+ }
+ ResponseAppend_P(PSTR("]"));
+ } else {
+ ResponseAppend_P(PSTR("%d"), Settings->energy_power_delta[0]);
+ }
+ ResponseAppend_P(PSTR(",\"" D_CMND_POWERLOW "\":%d,\"" D_CMND_POWERHIGH "\":%d,\""
+ D_CMND_VOLTAGELOW "\":%d,\"" D_CMND_VOLTAGEHIGH "\":%d,\""
+ D_CMND_CURRENTLOW "\":%d,\"" D_CMND_CURRENTHIGH "\":%d"),
+ Settings->energy_min_power, Settings->energy_max_power,
+ Settings->energy_min_voltage, Settings->energy_max_voltage,
+ Settings->energy_min_current, Settings->energy_max_current);
+#ifdef USE_ENERGY_POWER_LIMIT
+ ResponseAppend_P(PSTR(",\"" D_CMND_MAXPOWER "\":%d,\""
+ D_CMND_MAXPOWERHOLD "\":%d,\"" D_CMND_MAXPOWERWINDOW "\":%d,\""
+ D_CMND_MAXENERGY "\":%d,\"" D_CMND_MAXENERGYSTART "\":%d"),
+ Settings->energy_max_power_limit,
+ Settings->energy_max_power_limit_hold, Settings->energy_max_power_limit_window,
+ Settings->energy_max_energy, Settings->energy_max_energy_start);
+#endif // USE_ENERGY_POWER_LIMIT
+ ResponseJsonEndEnd();
}
void CmndPowerDelta(void) {
@@ -1037,104 +1047,62 @@ void CmndPowerDelta(void) {
}
}
-void CmndPowerLow(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) {
- Settings->energy_min_power = XdrvMailbox.payload;
+bool ResponseCmndEnergyMargin(uint16_t* value, uint32_t max_value, uint32_t default_value = 1);
+bool ResponseCmndEnergyMargin(uint16_t* value, uint32_t max_value, uint32_t default_value) {
+ bool value_changed = false;
+ if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= max_value)) {
+ *value = (1 == XdrvMailbox.payload) ? default_value : XdrvMailbox.payload;
+ value_changed = true;
}
- ResponseCmndNumber(Settings->energy_min_power);
+ ResponseCmndNumber(*value);
+ return value_changed;
+}
+
+void CmndPowerLow(void) {
+ ResponseCmndEnergyMargin(&Settings->energy_min_power, 6000);
}
void CmndPowerHigh(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) {
- Settings->energy_max_power = XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_max_power);
+ ResponseCmndEnergyMargin(&Settings->energy_max_power, 6000);
}
void CmndVoltageLow(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 500)) {
- Settings->energy_min_voltage = XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_min_voltage);
+ ResponseCmndEnergyMargin(&Settings->energy_min_voltage, 500);
}
void CmndVoltageHigh(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 500)) {
- Settings->energy_max_voltage = XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_max_voltage);
+ ResponseCmndEnergyMargin(&Settings->energy_max_voltage, 500);
}
void CmndCurrentLow(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 25000)) {
- Settings->energy_min_current = XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_min_current);
+ ResponseCmndEnergyMargin(&Settings->energy_min_current, 25000);
}
void CmndCurrentHigh(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 25000)) {
- Settings->energy_max_current = XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_max_current);
+ ResponseCmndEnergyMargin(&Settings->energy_max_current, 25000);
}
#ifdef USE_ENERGY_POWER_LIMIT
void CmndMaxPower(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) {
- Settings->energy_max_power_limit = XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_max_power_limit);
+ ResponseCmndEnergyMargin(&Settings->energy_max_power_limit, 6000);
}
void CmndMaxPowerHold(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) {
- Settings->energy_max_power_limit_hold = (1 == XdrvMailbox.payload) ? MAX_POWER_HOLD : XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_max_power_limit_hold);
+ ResponseCmndEnergyMargin(&Settings->energy_max_power_limit_hold, 6000, MAX_POWER_HOLD);
}
void CmndMaxPowerWindow(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) {
- Settings->energy_max_power_limit_window = (1 == XdrvMailbox.payload) ? MAX_POWER_WINDOW : XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_max_power_limit_window);
-}
-
-void CmndSafePower(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) {
- Settings->energy_max_power_safe_limit = XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_max_power_safe_limit);
-}
-
-void CmndSafePowerHold(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) {
- Settings->energy_max_power_safe_limit_hold = (1 == XdrvMailbox.payload) ? SAFE_POWER_HOLD : XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_max_power_safe_limit_hold);
-}
-
-void CmndSafePowerWindow(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < 1440)) {
- Settings->energy_max_power_safe_limit_window = (1 == XdrvMailbox.payload) ? SAFE_POWER_WINDOW : XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_max_power_safe_limit_window);
+ ResponseCmndEnergyMargin(&Settings->energy_max_power_limit_window, 6000, MAX_POWER_WINDOW);
}
void CmndMaxEnergy(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) {
- Settings->energy_max_energy = XdrvMailbox.payload;
+ if (ResponseCmndEnergyMargin(&Settings->energy_max_energy, 6000)) {
Energy->max_energy_state = 3;
}
- ResponseCmndNumber(Settings->energy_max_energy);
}
void CmndMaxEnergyStart(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < 24)) {
- Settings->energy_max_energy_start = XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_max_energy_start);
+ ResponseCmndEnergyMargin(&Settings->energy_max_energy_start, 23);
}
#endif // USE_ENERGY_POWER_LIMIT
#endif // USE_ENERGY_MARGIN_DETECTION
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino
index 64f4f271a..a44d804b6 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino
@@ -26,10 +26,6 @@
#define XDRV_03 3
#define XSNS_03 3
-#ifndef MQTT_TELE_RETAIN
-#define MQTT_TELE_RETAIN 0
-#endif
-
#define ENERGY_NONE 0
#define ENERGY_WATCHDOG 4 // Allow up to 4 seconds before deciding no valid data present
@@ -66,7 +62,6 @@ const char kEnergyCommands[] PROGMEM = "|" // No prefix
D_CMND_POWERDELTA "|" D_CMND_POWERLOW "|" D_CMND_POWERHIGH "|" D_CMND_VOLTAGELOW "|" D_CMND_VOLTAGEHIGH "|" D_CMND_CURRENTLOW "|" D_CMND_CURRENTHIGH "|"
D_CMND_MAXENERGY "|" D_CMND_MAXENERGYSTART "|"
D_CMND_MAXPOWER "|" D_CMND_MAXPOWERHOLD "|" D_CMND_MAXPOWERWINDOW "|"
- D_CMND_SAFEPOWER "|" D_CMND_SAFEPOWERHOLD "|" D_CMND_SAFEPOWERWINDOW "|"
D_CMND_ENERGYTODAY "|" D_CMND_ENERGYYESTERDAY "|" D_CMND_ENERGYTOTAL "|" D_CMND_ENERGYEXPORTACTIVE "|" D_CMND_ENERGYUSAGE "|" D_CMND_ENERGYEXPORT "|"
D_CMND_TARIFF "|" D_CMND_ENERGYDISPLAY "|" D_CMND_ENERGYCOLS ;
@@ -76,7 +71,6 @@ void (* const EnergyCommand[])(void) PROGMEM = {
&CmndPowerDelta, &CmndPowerLow, &CmndPowerHigh, &CmndVoltageLow, &CmndVoltageHigh, &CmndCurrentLow, &CmndCurrentHigh,
&CmndMaxEnergy, &CmndMaxEnergyStart,
&CmndMaxPower, &CmndMaxPowerHold, &CmndMaxPowerWindow,
- &CmndSafePower, &CmndSafePowerHold, &CmndSafePowerWindow,
&CmndEnergyToday, &CmndEnergyYesterday, &CmndEnergyTotal, &CmndEnergyExportActive, &CmndEnergyUsage, &CmndEnergyExport,
&CmndTariff, &CmndEnergyDisplay, &CmndEnergyCols };
@@ -111,6 +105,20 @@ typedef union {
};
} tEnergyBitfield;
+typedef struct {
+ uint16_t min_voltage; // VoltageLow
+ uint16_t max_voltage; // VoltageHigh
+ uint16_t min_current; // CurrentLow
+ uint16_t max_current; // CurrentHigh
+ uint16_t min_power; // PowerLow
+ uint16_t max_power; // PowerHigh
+ uint16_t max_power_limit; // MaxPower
+ uint16_t max_power_limit_hold; // MaxPowerHold
+ uint16_t max_power_limit_window; // MaxPowerWindow
+ uint16_t max_energy; // MaxEnergy
+ uint16_t max_energy_start; // MaxEnergyStart
+} tPhase;
+
typedef struct {
uint32_t crc32; // To detect file changes
uint16_t version; // To detect driver function changes
@@ -138,6 +146,7 @@ typedef struct {
uint16_t tariff[4][2];
tEnergyUsage energy_usage;
+ tPhase phase[ENERGY_MAX_PHASES];
} tEnergySettings;
typedef struct {
@@ -171,9 +180,9 @@ typedef struct {
float daily_sum_import_balanced; // 123.123 kWh
float daily_sum_export_balanced; // 123.123 kWh
- uint16_t power_history[ENERGY_MAX_PHASES][3];
- uint16_t mplh_counter;
- uint16_t mplw_counter;
+ uint16_t power_history[3][ENERGY_MAX_PHASES];
+ uint16_t mpl_hold_counter[ENERGY_MAX_PHASES];
+ uint16_t mpl_window_counter[ENERGY_MAX_PHASES];
uint8_t data_valid[ENERGY_MAX_PHASES];
uint8_t phase_count; // Number of phases active
@@ -181,8 +190,9 @@ typedef struct {
uint8_t command_code;
uint8_t power_steady_counter; // Allow for power on stabilization
uint8_t margin_stable;
- uint8_t mplr_counter;
- uint8_t max_energy_state;
+ uint8_t mpl_retry_counter[ENERGY_MAX_PHASES];
+ uint8_t max_energy_state[ENERGY_MAX_PHASES];
+ uint8_t hour;
uint8_t gui_indirect[ENERGY_MAX_PHASES];
uint8_t gui_rotate;
@@ -199,12 +209,12 @@ typedef struct {
bool type_dc;
bool power_on;
- bool min_power_flag;
- bool max_power_flag;
- bool min_voltage_flag;
- bool max_voltage_flag;
- bool min_current_flag;
- bool max_current_flag;
+ bool min_power_flag[ENERGY_MAX_PHASES];
+ bool max_power_flag[ENERGY_MAX_PHASES];
+ bool min_voltage_flag[ENERGY_MAX_PHASES];
+ bool max_voltage_flag[ENERGY_MAX_PHASES];
+ bool min_current_flag[ENERGY_MAX_PHASES];
+ bool max_current_flag[ENERGY_MAX_PHASES];
} tEnergy;
tEnergy *Energy = nullptr;
@@ -290,10 +300,23 @@ void EnergySettingsLoad(bool erase) {
Energy->Settings.voltage_calibration[i] = Settings->energy_voltage_calibration;;
Energy->Settings.current_calibration[i] = Settings->energy_current_calibration;;
Energy->Settings.frequency_calibration[i] = Settings->energy_frequency_calibration;
+ Energy->Settings.phase[i].min_voltage = Settings->energy_min_voltage;
+ Energy->Settings.phase[i].max_voltage = Settings->energy_max_voltage;
+ Energy->Settings.phase[i].min_current = Settings->energy_min_current;
+ Energy->Settings.phase[i].max_current = Settings->energy_max_current;
+ Energy->Settings.phase[i].min_power = Settings->energy_min_power;
+ Energy->Settings.phase[i].max_power = Settings->energy_max_power;
+ Energy->Settings.phase[i].max_power_limit_hold = Settings->energy_max_power_limit_hold;
+ Energy->Settings.phase[i].max_power_limit_window = Settings->energy_max_power_limit_window;
+ Energy->Settings.phase[i].max_energy_start = Settings->energy_max_energy_start;
}
Energy->Settings.power_calibration[1] = Settings->energy_power_calibration2;
Energy->Settings.voltage_calibration[1] = Settings->energy_voltage_calibration2;
Energy->Settings.current_calibration[1] = Settings->energy_current_calibration2;
+
+ // Only restore phase 1 for backward compatibility (all power off)
+ Energy->Settings.phase[0].max_power_limit = Settings->energy_max_power_limit;
+ Energy->Settings.phase[0].max_energy = Settings->energy_max_energy;
/*
RtcEnergySettings.energy_total_kWh[0] = 0;
RtcEnergySettings.energy_total_kWh[1] = 0;
@@ -658,11 +681,19 @@ void Energy200ms(void) {
}
EnergyUpdateToday();
}
+
if (midnight) {
- Energy->max_energy_state = 3;
+ for (uint32_t phase = 0; phase < Energy->phase_count; phase++) {
+ Energy->max_energy_state[phase] = 3;
+ }
}
- if ((RtcTime.hour == Settings->energy_max_energy_start) && (3 == Energy->max_energy_state )) {
- Energy->max_energy_state = 0;
+ if (RtcTime.hour != Energy->hour) {
+ Energy->hour = RtcTime.hour;
+ for (uint32_t phase = 0; phase < Energy->phase_count; phase++) {
+ if ((RtcTime.hour == Energy->Settings.phase[phase].max_energy_start) && (3 == Energy->max_energy_state[phase] )) {
+ Energy->max_energy_state[phase] = 0;
+ }
+ }
}
}
@@ -684,10 +715,8 @@ void EnergySaveState(void) {
}
bool EnergyMargin(bool type, uint16_t margin, uint16_t value, bool &flag, bool &save_flag) {
- bool change;
-
- if (!margin) return false;
- change = save_flag;
+ if (!margin) { return false; }
+ bool change = save_flag;
if (type) {
flag = (value > margin);
} else {
@@ -707,19 +736,20 @@ void EnergyMarginCheck(void) {
bool jsonflg = false;
Response_P(PSTR("{\"" D_RSLT_MARGINS "\":{"));
+ // PowerDelta
int16_t power_diff[ENERGY_MAX_PHASES] = { 0 };
for (uint32_t phase = 0; phase < Energy->phase_count; phase++) {
uint16_t active_power = (uint16_t)(Energy->active_power[phase]);
-// AddLog(LOG_LEVEL_DEBUG, PSTR("NRG: APower %d, HPower0 %d, HPower1 %d, HPower2 %d"), active_power, Energy->power_history[phase][0], Energy->power_history[phase][1], Energy->power_history[phase][2]);
+// AddLog(LOG_LEVEL_DEBUG, PSTR("NRG: APower %d, HPower0 %d, HPower1 %d, HPower2 %d"), active_power, Energy->power_history[0][phase], Energy->power_history[1][phase], Energy->power_history[2][phase]);
if (Energy->Settings.power_delta[phase]) {
- power_diff[phase] = active_power - Energy->power_history[phase][0];
+ power_diff[phase] = active_power - Energy->power_history[0][phase];
uint16_t delta = abs(power_diff[phase]);
bool threshold_met = false;
if (delta > 0) {
if (Energy->Settings.power_delta[phase] < 101) { // 1..100 = Percentage
- uint16_t min_power = (Energy->power_history[phase][0] > active_power) ? active_power : Energy->power_history[phase][0];
+ uint16_t min_power = (Energy->power_history[0][phase] > active_power) ? active_power : Energy->power_history[0][phase];
if (0 == min_power) { min_power++; } // Fix divide by 0 exception (#6741)
delta = (delta * 100) / min_power;
if (delta >= Energy->Settings.power_delta[phase]) {
@@ -732,16 +762,16 @@ void EnergyMarginCheck(void) {
}
}
if (threshold_met) {
- Energy->power_history[phase][1] = active_power; // We only want one report so reset history
- Energy->power_history[phase][2] = active_power;
+ Energy->power_history[1][phase] = active_power; // We only want one report so reset history
+ Energy->power_history[2][phase] = active_power;
jsonflg = true;
} else {
power_diff[phase] = 0;
}
}
- Energy->power_history[phase][0] = Energy->power_history[phase][1]; // Shift in history every second allowing power changes to settle for up to three seconds
- Energy->power_history[phase][1] = Energy->power_history[phase][2];
- Energy->power_history[phase][2] = active_power;
+ Energy->power_history[0][phase] = Energy->power_history[1][phase]; // Shift in history every second allowing power changes to settle for up to three seconds
+ Energy->power_history[1][phase] = Energy->power_history[2][phase];
+ Energy->power_history[2][phase] = active_power;
}
if (jsonflg) {
float power_diff_f[Energy->phase_count];
@@ -751,86 +781,102 @@ void EnergyMarginCheck(void) {
ResponseAppend_P(PSTR("\"" D_CMND_POWERDELTA "\":%s"), EnergyFmt(power_diff_f, 0));
}
- uint16_t energy_power_u = (uint16_t)(Energy->active_power[0]);
-
- if (Energy->power_on && (Settings->energy_min_power || Settings->energy_max_power || Settings->energy_min_voltage || Settings->energy_max_voltage || Settings->energy_min_current || Settings->energy_max_current)) {
- uint16_t energy_voltage_u = (uint16_t)(Energy->voltage[0]);
- uint16_t energy_current_u = (uint16_t)(Energy->current[0] * 1000);
-
- DEBUG_DRIVER_LOG(PSTR("NRG: W %d, U %d, I %d"), energy_power_u, energy_voltage_u, energy_current_u);
-
+ // PowerMargins
+ uint16_t energy_power_u;
+ if (Energy->power_on) {
bool flag;
- if (EnergyMargin(false, Settings->energy_min_power, energy_power_u, flag, Energy->min_power_flag)) {
- ResponseAppend_P(PSTR("%s\"" D_CMND_POWERLOW "\":\"%s\""), (jsonflg)?",":"", GetStateText(flag));
- jsonflg = true;
+ for (uint32_t phase = 0; phase < Energy->phase_count; phase++) {
+ energy_power_u = (uint16_t)(Energy->active_power[phase]);
+ uint16_t energy_voltage_u = (uint16_t)(Energy->voltage[phase]);
+ uint16_t energy_current_u = (uint16_t)(Energy->current[phase] * 1000);
+
+ if (EnergyMargin(false, Energy->Settings.phase[phase].min_power, energy_power_u, flag, Energy->min_power_flag[phase])) {
+ ResponseAppend_P(PSTR("%s\"" D_CMND_POWERLOW "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag));
+ jsonflg = true;
+ }
+ if (EnergyMargin(true, Energy->Settings.phase[phase].max_power, energy_power_u, flag, Energy->max_power_flag[phase])) {
+ ResponseAppend_P(PSTR("%s\"" D_CMND_POWERHIGH "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag));
+ jsonflg = true;
+ }
+ if (EnergyMargin(false, Energy->Settings.phase[phase].min_voltage, energy_voltage_u, flag, Energy->min_voltage_flag[phase])) {
+ ResponseAppend_P(PSTR("%s\"" D_CMND_VOLTAGELOW "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag));
+ jsonflg = true;
+ }
+ if (EnergyMargin(true, Energy->Settings.phase[phase].max_voltage, energy_voltage_u, flag, Energy->max_voltage_flag[phase])) {
+ ResponseAppend_P(PSTR("%s\"" D_CMND_VOLTAGEHIGH "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag));
+ jsonflg = true;
+ }
+ if (EnergyMargin(false, Energy->Settings.phase[phase].min_current, energy_current_u, flag, Energy->min_current_flag[phase])) {
+ ResponseAppend_P(PSTR("%s\"" D_CMND_CURRENTLOW "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag));
+ jsonflg = true;
+ }
+ if (EnergyMargin(true, Energy->Settings.phase[phase].max_current, energy_current_u, flag, Energy->max_current_flag[phase])) {
+ ResponseAppend_P(PSTR("%s\"" D_CMND_CURRENTHIGH "%d\":\"%s\""), (jsonflg)?",":"", phase +1, GetStateText(flag));
+ jsonflg = true;
+ }
}
- if (EnergyMargin(true, Settings->energy_max_power, energy_power_u, flag, Energy->max_power_flag)) {
- ResponseAppend_P(PSTR("%s\"" D_CMND_POWERHIGH "\":\"%s\""), (jsonflg)?",":"", GetStateText(flag));
- jsonflg = true;
+ if (jsonflg) {
+ ResponseJsonEndEnd();
+ MqttPublishTele(PSTR(D_RSLT_MARGINS));
+ EnergyMqttShow();
+ Energy->margin_stable = 3; // Allow 2 seconds to stabilize before reporting
}
- if (EnergyMargin(false, Settings->energy_min_voltage, energy_voltage_u, flag, Energy->min_voltage_flag)) {
- ResponseAppend_P(PSTR("%s\"" D_CMND_VOLTAGELOW "\":\"%s\""), (jsonflg)?",":"", GetStateText(flag));
- jsonflg = true;
- }
- if (EnergyMargin(true, Settings->energy_max_voltage, energy_voltage_u, flag, Energy->max_voltage_flag)) {
- ResponseAppend_P(PSTR("%s\"" D_CMND_VOLTAGEHIGH "\":\"%s\""), (jsonflg)?",":"", GetStateText(flag));
- jsonflg = true;
- }
- if (EnergyMargin(false, Settings->energy_min_current, energy_current_u, flag, Energy->min_current_flag)) {
- ResponseAppend_P(PSTR("%s\"" D_CMND_CURRENTLOW "\":\"%s\""), (jsonflg)?",":"", GetStateText(flag));
- jsonflg = true;
- }
- if (EnergyMargin(true, Settings->energy_max_current, energy_current_u, flag, Energy->max_current_flag)) {
- ResponseAppend_P(PSTR("%s\"" D_CMND_CURRENTHIGH "\":\"%s\""), (jsonflg)?",":"", GetStateText(flag));
- jsonflg = true;
- }
- }
- if (jsonflg) {
- ResponseJsonEndEnd();
- MqttPublishPrefixTopicRulesProcess_P(TELE, PSTR(D_RSLT_MARGINS), MQTT_TELE_RETAIN);
- EnergyMqttShow();
- Energy->margin_stable = 3; // Allow 2 seconds to stabilize before reporting
}
// Max Power
- if (Settings->energy_max_power_limit) {
- if (Energy->active_power[0] > Settings->energy_max_power_limit) {
- if (!Energy->mplh_counter) {
- Energy->mplh_counter = Settings->energy_max_power_limit_hold;
- } else {
- Energy->mplh_counter--;
- if (!Energy->mplh_counter) {
- ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHED "\":%d}"), energy_power_u);
+ bool set_all_power = true; // Use all power control for backward compatibility
+ for (uint32_t phase = 1; phase < Energy->phase_count; phase++) {
+ if (Energy->Settings.phase[phase].max_power_limit) {
+ set_all_power = false; // If any other power limit is set use new selected power control
+ break;
+ }
+ }
+ for (uint32_t phase = 0; phase < Energy->phase_count; phase++) {
+ if (Energy->Settings.phase[phase].max_power_limit) {
+ energy_power_u = (uint16_t)(Energy->active_power[phase]);
+ bool power_on = (TasmotaGlobal.power & (1 << phase));
+ if (energy_power_u > Energy->Settings.phase[phase].max_power_limit) {
+ if (!Energy->mpl_hold_counter[phase]) {
+ Energy->mpl_hold_counter[phase] = Energy->Settings.phase[phase].max_power_limit_hold +1;
+ }
+ Energy->mpl_hold_counter[phase]--;
+ if (!Energy->mpl_hold_counter[phase]) {
+ if (!Energy->mpl_retry_counter[phase]) {
+ Energy->mpl_retry_counter[phase] = Settings->param[P_MAX_POWER_RETRY] +1; // SetOption33 - Max Power Retry count
+ }
+ Energy->mpl_retry_counter[phase]--;
+ if (Energy->mpl_retry_counter[phase]) {
+ ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHED "%d\":%d}"), phase +1, energy_power_u);
+ } else {
+ ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHEDRETRY "%d\":\"%s\"}"), phase +1, GetStateText(0));
+ }
MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING);
EnergyMqttShow();
- SetAllPower(POWER_OFF_FORCE, SRC_MAXPOWER);
- if (!Energy->mplr_counter) {
- Energy->mplr_counter = Settings->param[P_MAX_POWER_RETRY] +1; // SetOption33 - Max Power Retry count
+ if (set_all_power) {
+ SetAllPower(POWER_OFF_FORCE, SRC_MAXPOWER);
+ } else {
+ ExecuteCommandPower(phase +1, POWER_OFF_FORCE, SRC_MAXPOWER);
}
- Energy->mplw_counter = Settings->energy_max_power_limit_window;
+ Energy->mpl_window_counter[phase] = Energy->Settings.phase[phase].max_power_limit_window;
}
}
- }
- else if (TasmotaGlobal.power && (energy_power_u <= Settings->energy_max_power_limit)) {
- Energy->mplh_counter = 0;
- Energy->mplr_counter = 0;
- Energy->mplw_counter = 0;
- }
- if (!TasmotaGlobal.power) {
- if (Energy->mplw_counter) {
- Energy->mplw_counter--;
- } else {
- if (Energy->mplr_counter) {
- Energy->mplr_counter--;
- if (Energy->mplr_counter) {
- ResponseTime_P(PSTR(",\"" D_JSON_POWERMONITOR "\":\"%s\"}"), GetStateText(1));
+ else if (power_on && (energy_power_u <= Energy->Settings.phase[phase].max_power_limit)) {
+ Energy->mpl_hold_counter[phase] = 0;
+ Energy->mpl_retry_counter[phase] = 0;
+ Energy->mpl_window_counter[phase] = 0;
+ }
+ if (!power_on) {
+ if (Energy->mpl_window_counter[phase]) {
+ Energy->mpl_window_counter[phase]--;
+ } else {
+ if (Energy->mpl_retry_counter[phase]) {
+ ResponseTime_P(PSTR(",\"" D_JSON_POWERMONITOR "%d\":\"%s\"}"), phase +1, GetStateText(1));
MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_JSON_POWERMONITOR));
- RestorePower(true, SRC_MAXPOWER);
- } else {
- ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHEDRETRY "\":\"%s\"}"), GetStateText(0));
- MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING);
- EnergyMqttShow();
- SetAllPower(POWER_OFF_FORCE, SRC_MAXPOWER);
+ if (set_all_power) {
+ RestorePower(true, SRC_MAXPOWER);
+ } else {
+ ExecuteCommandPower(phase +1, POWER_ON, SRC_MAXPOWER);
+ }
}
}
}
@@ -838,22 +884,44 @@ void EnergyMarginCheck(void) {
}
// Max Energy
- if (Settings->energy_max_energy) {
- uint16_t energy_daily_u = (uint16_t)(Energy->daily_sum * 1000);
- if (!Energy->max_energy_state && (RtcTime.hour == Settings->energy_max_energy_start)) {
- Energy->max_energy_state = 1;
- ResponseTime_P(PSTR(",\"" D_JSON_ENERGYMONITOR "\":\"%s\"}"), GetStateText(1));
- MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_JSON_ENERGYMONITOR));
- RestorePower(true, SRC_MAXENERGY);
- }
- else if ((1 == Energy->max_energy_state ) && (energy_daily_u >= Settings->energy_max_energy)) {
- Energy->max_energy_state = 2;
- ResponseTime_P(PSTR(",\"" D_JSON_MAXENERGYREACHED "\":%3_f}"), &Energy->daily_sum);
- MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING);
- EnergyMqttShow();
- SetAllPower(POWER_OFF_FORCE, SRC_MAXENERGY);
+ set_all_power = true; // Use all power control for backward compatibility
+ for (uint32_t phase = 1; phase < Energy->phase_count; phase++) {
+ if (Energy->Settings.phase[phase].max_energy) {
+ set_all_power = false; // If any other max energy is set use new selected power control
+ break;
}
}
+ float daily_sum = Energy->daily_sum;
+ for (uint32_t phase = 0; phase < Energy->phase_count; phase++) {
+ if (Energy->Settings.phase[phase].max_energy) {
+ if (!set_all_power) {
+ daily_sum = Energy->daily_kWh[phase];
+ }
+ uint16_t energy_daily_u = (uint16_t)(daily_sum * 1000);
+ if (!Energy->max_energy_state[phase] && (RtcTime.hour == Energy->Settings.phase[phase].max_energy_start)) {
+ Energy->max_energy_state[phase] = 1;
+ ResponseTime_P(PSTR(",\"" D_JSON_ENERGYMONITOR "\":\"%s\"}"), GetStateText(1));
+ MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_JSON_ENERGYMONITOR));
+ if (set_all_power) {
+ RestorePower(true, SRC_MAXENERGY);
+ } else {
+ ExecuteCommandPower(phase +1, POWER_ON, SRC_MAXENERGY);
+ }
+ }
+ else if ((1 == Energy->max_energy_state[phase]) && (energy_daily_u >= Energy->Settings.phase[phase].max_energy)) {
+ Energy->max_energy_state[phase] = 2;
+ ResponseTime_P(PSTR(",\"" D_JSON_MAXENERGYREACHED "\":%3_f}"), &daily_sum);
+ MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING);
+ EnergyMqttShow();
+ if (set_all_power) {
+ SetAllPower(POWER_OFF_FORCE, SRC_MAXENERGY);
+ } else {
+ ExecuteCommandPower(phase +1, POWER_OFF_FORCE, SRC_MAXENERGY);
+ }
+ }
+ }
+ }
+
EnergyFmtFree();
}
@@ -1253,123 +1321,129 @@ void CmndEnergyConfig(void) {
* USE_ENERGY_MARGIN_DETECTION and USE_ENERGY_POWER_LIMIT
\*********************************************************************************************/
-void EnergyMarginStatus(void) {
- Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS9_MARGIN "\":{\"" D_CMND_POWERDELTA "\":["));
- for (uint32_t i = 0; i < ENERGY_MAX_PHASES; i++) {
- ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Energy->Settings.power_delta[i]);
+void ResponseAppendMargin(uint16_t* value, uint32_t step_size = 0);
+void ResponseAppendMargin(uint16_t* value, uint32_t step_size) {
+ if (Energy->phase_count > 1) {
+ if (0 == step_size) {
+ step_size = sizeof(tPhase) / sizeof(uint16_t);
+ }
+ for (uint32_t i = 0; i < Energy->phase_count; i++) {
+ ResponseAppend_P(PSTR("%c%d"), (i)?',':'[', value[i * step_size]);
+ }
+ ResponseAppend_P(PSTR("]"));
+ } else {
+ ResponseAppend_P(PSTR("%d"), value[0]);
}
- ResponseAppend_P(PSTR("],\"" D_CMND_POWERLOW "\":%d,\"" D_CMND_POWERHIGH "\":%d,\""
- D_CMND_VOLTAGELOW "\":%d,\"" D_CMND_VOLTAGEHIGH "\":%d,\"" D_CMND_CURRENTLOW "\":%d,\"" D_CMND_CURRENTHIGH "\":%d}}"),
- Settings->energy_min_power, Settings->energy_max_power,
- Settings->energy_min_voltage, Settings->energy_max_voltage, Settings->energy_min_current, Settings->energy_max_current);
+}
+
+void EnergyMarginStatus(void) {
+ Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS9_MARGIN "\":{\"" D_CMND_POWERDELTA "\":"));
+ ResponseAppendMargin(&Energy->Settings.power_delta[0], 1);
+ ResponseAppend_P(PSTR(",\"" D_CMND_POWERLOW "\":"));
+ ResponseAppendMargin(&Energy->Settings.phase[0].min_power);
+ ResponseAppend_P(PSTR(",\"" D_CMND_POWERHIGH "\":"));
+ ResponseAppendMargin(&Energy->Settings.phase[0].max_power);
+ ResponseAppend_P(PSTR(",\"" D_CMND_VOLTAGELOW "\":"));
+ ResponseAppendMargin(&Energy->Settings.phase[0].min_voltage);
+ ResponseAppend_P(PSTR(",\"" D_CMND_VOLTAGEHIGH "\":"));
+ ResponseAppendMargin(&Energy->Settings.phase[0].max_voltage);
+ ResponseAppend_P(PSTR(",\"" D_CMND_CURRENTLOW "\":"));
+ ResponseAppendMargin(&Energy->Settings.phase[0].min_current);
+ ResponseAppend_P(PSTR(",\"" D_CMND_CURRENTHIGH "\":"));
+ ResponseAppendMargin(&Energy->Settings.phase[0].max_current);
+ ResponseAppend_P(PSTR(",\"" D_CMND_MAXPOWER "\":"));
+ ResponseAppendMargin(&Energy->Settings.phase[0].max_power_limit);
+ ResponseAppend_P(PSTR(",\"" D_CMND_MAXPOWERHOLD "\":"));
+ ResponseAppendMargin(&Energy->Settings.phase[0].max_power_limit_hold);
+ ResponseAppend_P(PSTR(",\"" D_CMND_MAXPOWERWINDOW "\":"));
+ ResponseAppendMargin(&Energy->Settings.phase[0].max_power_limit_window);
+ ResponseAppend_P(PSTR(",\"" D_CMND_MAXENERGY "\":"));
+ ResponseAppendMargin(&Energy->Settings.phase[0].max_energy);
+ ResponseAppend_P(PSTR(",\"" D_CMND_MAXENERGYSTART "\":"));
+ ResponseAppendMargin(&Energy->Settings.phase[0].max_energy_start);
+ ResponseJsonEndEnd();
+}
+
+bool ResponseCmndIdxEnergyMargin(uint16_t* value, uint32_t max_value, uint32_t default_value = 1, uint32_t step_size = 0);
+bool ResponseCmndIdxEnergyMargin(uint16_t* value, uint32_t max_value, uint32_t default_value, uint32_t step_size) {
+ bool value_changed = false;
+ if ((XdrvMailbox.index >= 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) {
+ if (0 == step_size) {
+ step_size = sizeof(tPhase) / sizeof(uint16_t);
+ }
+ if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= max_value)) {
+ if (0 == XdrvMailbox.index) {
+ // PowerLow0 10
+ for (uint32_t i = 0; i < Energy->phase_count; i++) {
+ value[i * step_size] = (1 == XdrvMailbox.payload) ? default_value : XdrvMailbox.payload;
+ }
+ } else {
+ // PowerLow 10 = PowerLow1 10 .. PowerLow8 10
+ value[(XdrvMailbox.index -1) * step_size] = (1 == XdrvMailbox.payload) ? default_value : XdrvMailbox.payload;
+ }
+ value_changed = true;
+ }
+ if (0 == XdrvMailbox.index) {
+ // PowerLow0, PowerLow0 10
+ ResponseCmnd();
+ ResponseAppendMargin(value, step_size);
+ ResponseJsonEnd();
+ } else {
+ // PowerLow = PowerLow1 .. PowerLow8
+ ResponseCmndIdxNumber(value[(XdrvMailbox.index -1) * step_size]);
+ }
+ }
+ return value_changed;
}
void CmndPowerDelta(void) {
- if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= ENERGY_MAX_PHASES)) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 32000)) {
- Energy->Settings.power_delta[XdrvMailbox.index -1] = XdrvMailbox.payload;
- }
- ResponseCmndIdxNumber(Energy->Settings.power_delta[XdrvMailbox.index -1]);
- }
+ ResponseCmndIdxEnergyMargin(&Energy->Settings.power_delta[0], 32000, 1, 1);
}
void CmndPowerLow(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) {
- Settings->energy_min_power = XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_min_power);
+ ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].min_power, 6000);
}
void CmndPowerHigh(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) {
- Settings->energy_max_power = XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_max_power);
+ ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].max_power, 6000);
}
void CmndVoltageLow(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 500)) {
- Settings->energy_min_voltage = XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_min_voltage);
+ ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].min_voltage, 500);
}
void CmndVoltageHigh(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 500)) {
- Settings->energy_max_voltage = XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_max_voltage);
+ ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].max_voltage, 500);
}
void CmndCurrentLow(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 25000)) {
- Settings->energy_min_current = XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_min_current);
+ ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].min_current, 25000);
}
void CmndCurrentHigh(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 25000)) {
- Settings->energy_max_current = XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_max_current);
+ ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].max_current, 25000);
}
void CmndMaxPower(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) {
- Settings->energy_max_power_limit = XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_max_power_limit);
+ ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].max_power_limit, 6000);
}
void CmndMaxPowerHold(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) {
- Settings->energy_max_power_limit_hold = (1 == XdrvMailbox.payload) ? MAX_POWER_HOLD : XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_max_power_limit_hold);
+ ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].max_power_limit_hold, 6000, MAX_POWER_HOLD);
}
void CmndMaxPowerWindow(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) {
- Settings->energy_max_power_limit_window = (1 == XdrvMailbox.payload) ? MAX_POWER_WINDOW : XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_max_power_limit_window);
-}
-
-void CmndSafePower(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) {
- Settings->energy_max_power_safe_limit = XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_max_power_safe_limit);
-}
-
-void CmndSafePowerHold(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) {
- Settings->energy_max_power_safe_limit_hold = (1 == XdrvMailbox.payload) ? SAFE_POWER_HOLD : XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_max_power_safe_limit_hold);
-}
-
-void CmndSafePowerWindow(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < 1440)) {
- Settings->energy_max_power_safe_limit_window = (1 == XdrvMailbox.payload) ? SAFE_POWER_WINDOW : XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_max_power_safe_limit_window);
+ ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].max_power_limit_window, 6000, MAX_POWER_WINDOW);
}
void CmndMaxEnergy(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 6000)) {
- Settings->energy_max_energy = XdrvMailbox.payload;
- Energy->max_energy_state = 3;
+ if (ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].max_energy, 6000)) {
+ Energy->max_energy_state[XdrvMailbox.index -1] = 3;
}
- ResponseCmndNumber(Settings->energy_max_energy);
}
void CmndMaxEnergyStart(void) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < 24)) {
- Settings->energy_max_energy_start = XdrvMailbox.payload;
- }
- ResponseCmndNumber(Settings->energy_max_energy_start);
+ ResponseCmndIdxEnergyMargin(&Energy->Settings.phase[0].max_energy_start, 23);
}
/********************************************************************************************/
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_05_irremote.ino b/tasmota/tasmota_xdrv_driver/xdrv_05_irremote.ino
index 271a34b9d..c64cfa5e9 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_05_irremote.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_05_irremote.ino
@@ -296,7 +296,11 @@ void IrReceiveCheck(void)
}
ResponseJsonEndEnd();
- MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_TELE, PSTR(D_JSON_IRRECEIVED));
+ if (Settings->flag6.mqtt_disable_publish ) { // SetOption147 - If it is activated, Tasmota will not publish IRReceived MQTT messages, but it will proccess event trigger rules
+ XdrvRulesProcess(0);
+ } else {
+ MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_TELE, PSTR(D_JSON_IRRECEIVED));
+ }
#ifdef USE_DOMOTICZ
if (iridx) {
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_05_irremote_full.ino b/tasmota/tasmota_xdrv_driver/xdrv_05_irremote_full.ino
index e0f6da521..5b761eb73 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_05_irremote_full.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_05_irremote_full.ino
@@ -375,7 +375,11 @@ void IrReceiveCheck(void) {
}
ResponseJsonEndEnd();
- MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_TELE, PSTR(D_JSON_IRRECEIVED));
+ if (Settings->flag6.mqtt_disable_publish ) { // SetOption147 - If it is activated, Tasmota will not publish IRReceived MQTT messages, but it will proccess event trigger rules
+ XdrvRulesProcess(0);
+ } else {
+ MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_TELE, PSTR(D_JSON_IRRECEIVED));
+ }
}
irrecv->resume();
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_08_serial_bridge.ino b/tasmota/tasmota_xdrv_driver/xdrv_08_serial_bridge.ino
index fdce70e4a..938194fc2 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_08_serial_bridge.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_08_serial_bridge.ino
@@ -20,6 +20,28 @@
#ifdef USE_SERIAL_BRIDGE
/*********************************************************************************************\
* Serial Bridge using Software Serial library (TasmotaSerial)
+ *
+ * SBaudrate - Set baudrate
+ * SBaudrate 9600
+ * SSerialConfig - Set serial config
+ * SSerialConfig 8N1
+ * SSerialBuffer - Set serial receive buffer
+ * SSerialSend "Hello Tiger" - Send "Hello Tiger\n"
+ * SSerialSend - Set to text decoding
+ * SSerialSend1 "Hello Tiger" - Send "Hello Tiger\n"
+ * SSerialSend2 "Hello Tiger" - Send "Hello Tiger"
+ * SSerialSend3 "Hello Tiger" - Send "Hello Tiger\f"
+ * SSerialSend4 - Set to binary decoding
+ * SSerialSend4 "Hello Tiger" - Send "Hello Tiger" and set to binary decoding
+ * SSerialSend5 "AA004566" - Send "AA004566" as hex values
+ * SSerialSend6 "72,101,108,108" - Send decimals as hex values
+ * SSerialMode 0 - Default mode (Console tee off, 115200bps, 8N1)
+ * SSerialMode 1 - Enable console tee
+ * SSerialMode 2 - Enable dump of serial data in log level 4
+ * SSerialMode 3 - Enable Sonoff WTS01 sensor decoding (ESP32 only)
+ * SerialDelimiter 255 - Receive data between 32 and 127 only
+ * SerialDelimiter 254 - Receive hexadecimal data
+ * SerialDelimiter 128 - Receive no data between 32 and 127
\*********************************************************************************************/
#define XDRV_08 8
@@ -27,6 +49,10 @@
#define USE_SERIAL_BRIDGE_TEE
+#ifdef ESP32
+#define USE_SERIAL_BRIDGE_WTS01
+#endif // ESP32
+
#ifdef SERIAL_BRIDGE_BUFFER_SIZE
const uint16_t SERIAL_BRIDGE_BUFSIZE = SERIAL_BRIDGE_BUFFER_SIZE;
#else
@@ -37,19 +63,25 @@ const uint16_t SERIAL_BRIDGE_BUFSIZE = INPUT_BUFFER_SIZE; // 800
#endif // ESP32
#endif // SERIAL_BRIDGE_BUFFER_SIZE
+enum SerialBridgeModes { SB_NONE, SB_TEE, SB_DUMP, SB_WTS01 };
+
const char kSerialBridgeCommands[] PROGMEM = "|" // No prefix
- D_CMND_SSERIALSEND "|" D_CMND_SBAUDRATE "|" D_CMND_SSERIALBUFFER "|" D_CMND_SSERIALCONFIG;
+ D_CMND_SSERIALSEND "|" D_CMND_SBAUDRATE "|" D_CMND_SSERIALBUFFER "|" D_CMND_SSERIALCONFIG "|" D_CMND_SSERIALMODE;
void (* const SerialBridgeCommand[])(void) PROGMEM = {
- &CmndSSerialSend, &CmndSBaudrate, &CmndSSerialBuffer, &CmndSSerialConfig };
+ &CmndSSerialSend, &CmndSBaudrate, &CmndSSerialBuffer, &CmndSSerialConfig, &CmndSSerialMode };
#include
TasmotaSerial *SerialBridgeSerial = nullptr;
-unsigned long serial_bridge_polling_window = 0;
char *serial_bridge_buffer = nullptr;
-int serial_bridge_in_byte_counter = 0;
-bool serial_bridge_raw = false;
+
+struct {
+ uint32_t polling_window;
+ int in_byte_counter = 0;
+ float temperature;
+ bool raw = false;
+} SBridge;
/********************************************************************************************/
@@ -69,7 +101,7 @@ void SetSSerialConfig(uint32_t serial_config) {
void SerialBridgePrintf(PGM_P formatP, ...) {
#ifdef USE_SERIAL_BRIDGE_TEE
- if (Settings->sbflag1.serbridge_console && serial_bridge_buffer) {
+ if ((SB_TEE == Settings->sserial_mode) && serial_bridge_buffer) {
va_list arg;
va_start(arg, formatP);
char* data = ext_vsnprintf_malloc_P(formatP, arg);
@@ -91,18 +123,18 @@ void SerialBridgeInput(void) {
uint8_t serial_in_byte = SerialBridgeSerial->read();
#ifdef USE_SERIAL_BRIDGE_TEE
- if (Settings->sbflag1.serbridge_console) {
+ if (SB_TEE == Settings->sserial_mode) { // CMND_SSERIALSEND9 - Enable logging tee to serialbridge
static bool serial_bridge_overrun = false;
if (isprint(serial_in_byte)) { // Any char between 32 and 127
- if (serial_bridge_in_byte_counter < SERIAL_BRIDGE_BUFSIZE -1) { // Add char to string if it still fits
- serial_bridge_buffer[serial_bridge_in_byte_counter++] = serial_in_byte;
+ if (SBridge.in_byte_counter < SERIAL_BRIDGE_BUFSIZE -1) { // Add char to string if it still fits
+ serial_bridge_buffer[SBridge.in_byte_counter++] = serial_in_byte;
} else {
serial_bridge_overrun = true; // Signal overrun but continue reading input to flush until '\n' (EOL)
}
}
else if (serial_in_byte == '\n') {
- serial_bridge_buffer[serial_bridge_in_byte_counter] = 0; // Serial data completed
+ serial_bridge_buffer[SBridge.in_byte_counter] = 0; // Serial data completed
TasmotaGlobal.seriallog_level = (Settings->seriallog_level < LOG_LEVEL_INFO) ? (uint8_t)LOG_LEVEL_INFO : Settings->seriallog_level;
if (serial_bridge_overrun) {
AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_COMMAND "SSerial buffer overrun"));
@@ -110,85 +142,104 @@ void SerialBridgeInput(void) {
AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_COMMAND "%s"), serial_bridge_buffer);
ExecuteCommand(serial_bridge_buffer, SRC_SSERIAL);
}
- serial_bridge_in_byte_counter = 0;
+ SBridge.in_byte_counter = 0;
serial_bridge_overrun = false;
SerialBridgeSerial->flush();
return;
}
} else {
#endif // USE_SERIAL_BRIDGE_TEE
- serial_bridge_raw = (254 == Settings->serial_delimiter);
- if ((serial_in_byte > 127) && !serial_bridge_raw) { // Discard binary data above 127 if no raw reception allowed
- serial_bridge_in_byte_counter = 0;
+ SBridge.raw = (Settings->sserial_mode > SB_TEE) ? true : (254 == Settings->serial_delimiter); // SerialDelimiter
+ if ((serial_in_byte > 127) && !SBridge.raw) { // Discard binary data above 127 if no raw reception allowed
+ SBridge.in_byte_counter = 0;
SerialBridgeSerial->flush();
return;
}
- if (serial_in_byte || serial_bridge_raw) { // Any char between 1 and 127 or any char (0 - 255)
+ if (serial_in_byte || SBridge.raw) { // Any char between 1 and 127 or any char (0 - 255)
bool in_byte_is_delimiter = // Char is delimiter when...
(((Settings->serial_delimiter < 128) && (serial_in_byte == Settings->serial_delimiter)) || // Any char between 1 and 127 and being delimiter
((Settings->serial_delimiter == 128) && !isprint(serial_in_byte))) && // Any char not between 32 and 127
- !serial_bridge_raw; // In raw mode (CMND_SERIALSEND3) there is never a delimiter
+ !SBridge.raw; // In raw mode (CMND_SERIALSEND3) there is never a delimiter
- if ((serial_bridge_in_byte_counter < SERIAL_BRIDGE_BUFSIZE -1) && // Add char to string if it still fits and ...
+ if ((SBridge.in_byte_counter < SERIAL_BRIDGE_BUFSIZE -1) && // Add char to string if it still fits and ...
!in_byte_is_delimiter) { // Char is not a delimiter
- serial_bridge_buffer[serial_bridge_in_byte_counter++] = serial_in_byte;
+ serial_bridge_buffer[SBridge.in_byte_counter++] = serial_in_byte;
}
- if ((serial_bridge_in_byte_counter >= SERIAL_BRIDGE_BUFSIZE -1) || // Send message when buffer is full or ...
+ if ((SBridge.in_byte_counter >= SERIAL_BRIDGE_BUFSIZE -1) || // Send message when buffer is full or ...
in_byte_is_delimiter) { // Char is delimiter
- serial_bridge_polling_window = 0; // Publish now
+ SBridge.polling_window = 0; // Publish now
break;
}
}
- serial_bridge_polling_window = millis(); // Wait for more data
+ SBridge.polling_window = millis(); // Wait for more data
#ifdef USE_SERIAL_BRIDGE_TEE
}
#endif // USE_SERIAL_BRIDGE_TEE
}
#ifdef USE_SERIAL_BRIDGE_TEE
- if (Settings->sbflag1.serbridge_console) {
+ if (SB_TEE == Settings->sserial_mode) { // CMND_SSERIALSEND9 - Enable logging tee to serialbridge
return;
}
#endif // USE_SERIAL_BRIDGE_TEE
- if (serial_bridge_in_byte_counter && (millis() > (serial_bridge_polling_window + SERIAL_POLLING))) {
- serial_bridge_buffer[serial_bridge_in_byte_counter] = 0; // Serial data completed
- bool assume_json = (!serial_bridge_raw && (serial_bridge_buffer[0] == '{'));
+ if (SBridge.in_byte_counter && (millis() > (SBridge.polling_window + SERIAL_POLLING))) {
+ serial_bridge_buffer[SBridge.in_byte_counter] = 0; // Serial data completed
- TasmotaGlobal.serial_skip++; // SetOption35 Skip number of serial messages received (default 0)
- if (TasmotaGlobal.serial_skip > Settings->param[P_SERIAL_SKIP]) { // Handle intermediate changes to SetOption35
- TasmotaGlobal.serial_skip = 0;
-
- Response_P(PSTR("{\"" D_JSON_SSERIALRECEIVED "\":"));
- if (assume_json) {
- ResponseAppend_P(serial_bridge_buffer);
- } else {
- ResponseAppend_P(PSTR("\""));
- if (serial_bridge_raw) {
- ResponseAppend_P(PSTR("%*_H"), serial_bridge_in_byte_counter, serial_bridge_buffer);
+ if (SB_NONE == Settings->sserial_mode) {
+ bool assume_json = (!SBridge.raw && (serial_bridge_buffer[0] == '{'));
+ TasmotaGlobal.serial_skip++; // SetOption35 Skip number of serial messages received (default 0)
+ if (TasmotaGlobal.serial_skip > Settings->param[P_SERIAL_SKIP]) { // Handle intermediate changes to SetOption35
+ TasmotaGlobal.serial_skip = 0;
+ Response_P(PSTR("{\"" D_JSON_SSERIALRECEIVED "\":"));
+ if (assume_json) {
+ ResponseAppend_P(serial_bridge_buffer);
} else {
- ResponseAppend_P(EscapeJSONString(serial_bridge_buffer).c_str());
+ ResponseAppend_P(PSTR("\""));
+ if (SBridge.raw) {
+ ResponseAppend_P(PSTR("%*_H"), SBridge.in_byte_counter, serial_bridge_buffer);
+ } else {
+ ResponseAppend_P(EscapeJSONString(serial_bridge_buffer).c_str());
+ }
+ ResponseAppend_P(PSTR("\""));
+ }
+ ResponseJsonEnd();
+ if (Settings->flag6.mqtt_disable_publish ) { // SetOption147 - If it is activated, Tasmota will not publish SSerialReceived MQTT messages, but it will proccess event trigger rules
+ XdrvRulesProcess(0);
+ } else {
+ MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_TELE, PSTR(D_JSON_SSERIALRECEIVED));
}
- ResponseAppend_P(PSTR("\""));
- }
- ResponseJsonEnd();
-
- if (Settings->flag6.mqtt_disable_sserialrec ) { // SetOption147 If it is activated, Tasmota will not publish SSerialReceived MQTT messages, but it will proccess event trigger rules
- XdrvRulesProcess(0);
- } else {
- MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_TELE, PSTR(D_JSON_SSERIALRECEIVED));
}
}
- serial_bridge_in_byte_counter = 0;
+ if (Settings->sserial_mode > SB_TEE) {
+ AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("SBR: Rcvd '%*_H'"), SBridge.in_byte_counter, serial_bridge_buffer);
+ }
+
+#ifdef USE_SERIAL_BRIDGE_WTS01
+ // Sonoff WTS01 9600bps, 8N1 datagram every second
+ // 0 1 2 3 4 5 6 7 8
+ // 55 01 01 04 01 11 16 12 95
+ // header T Td Ck - T = Temperature, Td = Temperature decimal, Ck = Checksum
+ if (SB_WTS01 == Settings->sserial_mode) {
+ if (9 == SBridge.in_byte_counter) {
+ uint32_t *header = (uint32_t*)serial_bridge_buffer;
+ if (0x04010155 == *header) {
+ SBridge.temperature = (float)serial_bridge_buffer[6] + ((float)serial_bridge_buffer[7] / 100.0f);
+ }
+ }
+ }
+#endif // USE_SERIAL_BRIDGE_WTS01
+
+ SBridge.in_byte_counter = 0;
}
}
/********************************************************************************************/
void SerialBridgeInit(void) {
- if (PinUsed(GPIO_SBR_RX) && PinUsed(GPIO_SBR_TX)) {
+ if (PinUsed(GPIO_SBR_RX) || PinUsed(GPIO_SBR_TX)) {
// SerialBridgeSerial = new TasmotaSerial(Pin(GPIO_SBR_RX), Pin(GPIO_SBR_TX), HARDWARE_FALLBACK); // Default TM_SERIAL_BUFFER_SIZE (=64) size
SerialBridgeSerial = new TasmotaSerial(Pin(GPIO_SBR_RX), Pin(GPIO_SBR_TX), HARDWARE_FALLBACK, 0, MIN_INPUT_BUFFER_SIZE); // 256
if (SetSSerialBegin()) {
@@ -212,10 +263,10 @@ void SerialBridgeInit(void) {
\*********************************************************************************************/
void CmndSSerialSend(void) {
+ if (Settings->sserial_mode > SB_DUMP) { return; } // Not supported in receive only mode
if (XdrvMailbox.index > 9) { XdrvMailbox.index -= 10; }
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= 6)) {
- serial_bridge_raw = (XdrvMailbox.index > 3);
- Settings->sbflag1.serbridge_console = 0; // Disable console Tee
+ SBridge.raw = (XdrvMailbox.index > 3);
if (XdrvMailbox.data_len > 0) {
if (1 == XdrvMailbox.index) {
SerialBridgeSerial->write(XdrvMailbox.data, XdrvMailbox.data_len); // "Hello Tiger"
@@ -255,14 +306,6 @@ void CmndSSerialSend(void) {
ResponseCmndDone();
}
}
-#ifdef USE_SERIAL_BRIDGE_TEE
- if (9 == XdrvMailbox.index) {
- if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 1)) {
- Settings->sbflag1.serbridge_console = XdrvMailbox.payload;
- }
- ResponseCmndStateText(Settings->sbflag1.serbridge_console);
- }
-#endif // USE_SERIAL_BRIDGE_TEE
}
void CmndSBaudrate(void) {
@@ -317,6 +360,66 @@ void CmndSSerialConfig(void) {
ResponseCmndChar(GetSerialConfig(Settings->sserial_config).c_str());
}
+void CmndSSerialMode(void) {
+ // SSerialMode 0 - Default mode (Tee off, 115200bps, 8N1)
+ // SSerialMode 1 - Toggle console tee
+ // SSerialMode 2 - Dump hex data to log level 4 for analysis
+ // SSerialMode 3 - Sonoff WTS01 decode
+ if (XdrvMailbox.payload >= 0) {
+ switch (XdrvMailbox.payload) {
+ case SB_NONE:
+ Settings->sserial_mode = XdrvMailbox.payload;
+ // Settings->serial_delimiter = 255;
+ Settings->sbaudrate = 115200 / 300; // 115200bps
+ SetSSerialConfig(3); // 8N1
+ break;
+#ifdef USE_SERIAL_BRIDGE_TEE
+ case SB_TEE:
+ Settings->sserial_mode = XdrvMailbox.payload;
+ break;
+#endif // USE_SERIAL_BRIDGE_TEE
+ case SB_DUMP:
+ Settings->sserial_mode = XdrvMailbox.payload;
+ break;
+#ifdef USE_SERIAL_BRIDGE_WTS01
+ case SB_WTS01:
+ Settings->sserial_mode = XdrvMailbox.payload;
+ Settings->sbaudrate = 9600 / 300; // 9600bps
+ SetSSerialConfig(3); // 8N1
+ break;
+#endif // USE_SERIAL_BRIDGE_WTS01
+ default:
+ return; // Not supported
+ }
+ }
+ ResponseCmndNumber(Settings->sserial_mode);
+}
+
+/*********************************************************************************************\
+ * Presentation
+\*********************************************************************************************/
+
+void SerialBridgeShow(bool json) {
+#ifdef USE_SERIAL_BRIDGE_WTS01
+ if (SB_WTS01 == Settings->sserial_mode) {
+ float temperature = ConvertTemp(SBridge.temperature);
+ if (json) {
+ ResponseAppend_P(PSTR(",\"WTS01\":{\"" D_JSON_TEMPERATURE "\":%*_f}"), Settings->flag2.temperature_resolution, &temperature);
+ #ifdef USE_DOMOTICZ
+ if (0 == TasmotaGlobal.tele_period) { DomoticzFloatSensor(DZ_TEMP, temperature); }
+ #endif // USE_DOMOTICZ
+ #ifdef USE_KNX
+ if (0 == TasmotaGlobal.tele_period) { KnxSensor(KNX_TEMPERATURE, temperature); }
+ #endif // USE_KNX
+ #ifdef USE_WEBSERVER
+ } else {
+ WSContentSend_Temp("WTS01", temperature);
+ #endif // USE_WEBSERVER
+ }
+ }
+#endif // USE_SERIAL_BRIDGE_WTS01
+}
+
/*********************************************************************************************\
* Interface
\*********************************************************************************************/
@@ -333,6 +436,14 @@ bool Xdrv08(uint32_t function) {
case FUNC_SLEEP_LOOP:
SerialBridgeInput();
break;
+ case FUNC_JSON_APPEND:
+ SerialBridgeShow(1);
+ break;
+#ifdef USE_WEBSERVER
+ case FUNC_WEB_SENSOR:
+ SerialBridgeShow(0);
+ break;
+#endif // USE_WEBSERVER
case FUNC_COMMAND:
result = DecodeCommand(kSerialBridgeCommands, SerialBridgeCommand);
break;
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_10_rules.ino b/tasmota/tasmota_xdrv_driver/xdrv_10_rules.ino
index 392cbd690..38f063d72 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_10_rules.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_10_rules.ino
@@ -1093,16 +1093,8 @@ void RulesEvery50ms(void)
}
void RulesEvery100ms(void) {
- static uint8_t xsns_index = 0;
if ((Settings->rule_enabled || BERRY_RULES) && !Rules.busy && (TasmotaGlobal.uptime > 4)) { // Any rule enabled and allow 4 seconds start-up time for sensors (#3811)
- ResponseClear();
- int tele_period_save = TasmotaGlobal.tele_period;
- TasmotaGlobal.tele_period = 2; // Do not allow HA updates during next function call
- XsnsNextCall(FUNC_JSON_APPEND, xsns_index); // ,"INA219":{"Voltage":4.494,"Current":0.020,"Power":0.089}
- TasmotaGlobal.tele_period = tele_period_save;
- if (ResponseLength()) {
- ResponseJsonStart(); // {"INA219":{"Voltage":4.494,"Current":0.020,"Power":0.089}
- ResponseJsonEnd();
+ if (GetNextSensor()) {
RulesProcessEvent(ResponseData());
}
}
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_10_scripter.ino b/tasmota/tasmota_xdrv_driver/xdrv_10_scripter.ino
index b116e7abf..ad5789b9d 100755
--- a/tasmota/tasmota_xdrv_driver/xdrv_10_scripter.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_10_scripter.ino
@@ -2600,12 +2600,19 @@ char *isargs(char *lp, uint32_t isind) {
if (glob_script_mem.si_num[isind] > MAX_SARRAY_NUM) {
glob_script_mem.si_num[isind] = MAX_SARRAY_NUM;
}
+ //glob_script_mem.last_index_string[isind] = (char*)calloc(glob_script_mem.max_ssize * glob_script_mem.si_num[isind], 1);
+ uint32_t sasize = glob_script_mem.max_ssize * glob_script_mem.si_num[isind];
+ glob_script_mem.last_index_string[isind] = (char*)special_malloc(sasize);
+ if (glob_script_mem.last_index_string[isind]) {
+ memset(glob_script_mem.last_index_string[isind], 0, sasize);
+ for (uint32_t cnt = 0; cnt < glob_script_mem.siro_num[isind]; cnt++) {
+ char str[SCRIPT_MAX_SBSIZE];
+ GetTextIndexed(str, sizeof(str), cnt, sstart);
+ strlcpy(glob_script_mem.last_index_string[isind] + (cnt * glob_script_mem.max_ssize), str, glob_script_mem.max_ssize);
+ }
+ } else {
+ // memory error
- glob_script_mem.last_index_string[isind] = (char*)calloc(glob_script_mem.max_ssize * glob_script_mem.si_num[isind], 1);
- for (uint32_t cnt = 0; cnt < glob_script_mem.siro_num[isind]; cnt++) {
- char str[SCRIPT_MAX_SBSIZE];
- GetTextIndexed(str, sizeof(str), cnt, sstart);
- strlcpy(glob_script_mem.last_index_string[isind] + (cnt * glob_script_mem.max_ssize), str, glob_script_mem.max_ssize);
}
} else {
glob_script_mem.last_index_string[isind] = sstart;
@@ -3439,7 +3446,7 @@ extern void W8960_SetGain(uint8_t sel, uint16_t value);
FS *cfp = script_file_path(str);
while (*lp == ' ') lp++;
uint8_t mode = 0;
- if ((*lp == 'r') || (*lp == 'w') || (*lp == 'a')) {
+ if ((*lp == 'r') || (*lp == 'w') || (*lp == 'a') || (*lp == 'u')) {
switch (*lp) {
case 'r':
mode = 0;
@@ -3450,6 +3457,12 @@ extern void W8960_SetGain(uint8_t sel, uint16_t value);
case 'a':
mode = 2;
break;
+ case 'u':
+ mode = 3;
+ break;
+ case 'U':
+ mode = 4;
+ break;
}
lp++;
} else {
@@ -3477,10 +3490,20 @@ extern void W8960_SetGain(uint8_t sel, uint16_t value);
#ifdef DEBUG_FS
AddLog(LOG_LEVEL_INFO, PSTR("SCR: open file for write %d"), cnt);
#endif
- } else {
+ } else if (mode == 2) {
glob_script_mem.files[cnt] = cfp->open(str,FS_FILE_APPEND);
#ifdef DEBUG_FS
AddLog(LOG_LEVEL_INFO, PSTR("SCR: open file for append %d"), cnt);
+#endif
+ } else if (mode == 3) {
+ glob_script_mem.files[cnt] = cfp->open(str, "w+");
+#ifdef DEBUG_FS
+ AddLog(LOG_LEVEL_INFO, PSTR("SCR: open file for write update %d"), cnt);
+#endif
+ } else {
+ glob_script_mem.files[cnt] = cfp->open(str, "r+");
+#ifdef DEBUG_FS
+ AddLog(LOG_LEVEL_INFO, PSTR("SCR: open file for read update %d"), cnt);
#endif
}
}
@@ -4744,7 +4767,8 @@ extern void W8960_SetGain(uint8_t sel, uint16_t value);
len = 0;
goto exit;
}
-#ifdef USE_MORITZ
+#ifdef USE_BINPLUGINS
+char *Plugin_Query(uint8_t, uint8_t);
if (!strncmp_XP(lp, XPSTR("mo("), 3)) {
TS_FLOAT fvar1;
lp = GetNumericArgument(lp + 3, OPER_EQU, &fvar1, gv);
@@ -4752,14 +4776,21 @@ extern void W8960_SetGain(uint8_t sel, uint16_t value);
TS_FLOAT fvar2;
lp = GetNumericArgument(lp, OPER_EQU, &fvar2, gv);
SCRIPT_SKIP_SPACES
- char rbuff[64];
- fvar = mo_getvars(fvar1, fvar2, rbuff);
+ char *rbuff = Plugin_Query(fvar1, fvar2);
+ if (rbuff) {
+ if (sp) strlcpy(sp, rbuff, glob_script_mem.max_ssize);
+ free (rbuff);
+ } else {
+ if (sp) {
+ strcpy_P(sp, PSTR("not found"));
+ }
+ }
lp++;
- if (sp) strlcpy(sp, rbuff, glob_script_mem.max_ssize);
len = 0;
goto strexit;
}
-#endif //USE_MORITZ
+#endif //USE_BINPLUGINS
+
#ifdef ESP32_FAST_MUX
if (!strncmp_XP(lp, XPSTR("mux("), 4)) {
lp = GetNumericArgument(lp + 4, OPER_EQU, &fvar, gv);
@@ -6219,16 +6250,24 @@ void tmod_directModeOutput(uint32_t pin);
if (!strncmp_XP(lp, XPSTR("wso("), 4)) {
TS_FLOAT port;
lp = GetNumericArgument(lp + 4, OPER_EQU, &port, gv);
- glob_script_mem.tcp_server = new WiFiServer(port);
- fvar = 0;
- if (!glob_script_mem.tcp_server) {
- fvar = -1;
- } else {
- AddLog(LOG_LEVEL_INFO, PSTR("tcp server started"));
+ if (TasmotaGlobal.global_state.wifi_down) {
+ fvar = - 2;
+ } else {
+ if (glob_script_mem.tcp_server) {
+ glob_script_mem.tcp_client.stop();
+ glob_script_mem.tcp_server->stop();
+ delete glob_script_mem.tcp_server;
+ }
+ glob_script_mem.tcp_server = new WiFiServer(port);
+ fvar = 0;
+ if (!glob_script_mem.tcp_server) {
+ fvar = -1;
+ } else {
+ glob_script_mem.tcp_server->begin();
+ glob_script_mem.tcp_server->setNoDelay(true);
+ AddLog(LOG_LEVEL_INFO, PSTR("tcp server started"));
+ }
}
- glob_script_mem.tcp_server->begin();
- glob_script_mem.tcp_server->setNoDelay(true);
-
goto nfuncexit;
}
if (!strncmp_XP(lp, XPSTR("wsc("), 4)) {
@@ -8784,21 +8823,13 @@ bool Is_gpio_used(uint8_t gpiopin) {
}
void ScripterEvery100ms(void) {
- static uint8_t xsns_index = 0;
-
if (bitRead(Settings->rule_enabled, 0) && (TasmotaGlobal.uptime > 4)) {
- ResponseClear();
- uint16_t script_tele_period_save = TasmotaGlobal.tele_period;
- TasmotaGlobal.tele_period = 2;
- XsnsNextCall(FUNC_JSON_APPEND, xsns_index);
- TasmotaGlobal.tele_period = script_tele_period_save;
- if (ResponseLength()) {
- ResponseJsonStart();
- ResponseJsonEnd();
+ if (GetNextSensor()) {
//Run_Scripter(">T", 2, ResponseData());
if (glob_script_mem.teleperiod) Run_Scripter(glob_script_mem.teleperiod, 0, ResponseData());
}
}
+
if (bitRead(Settings->rule_enabled, 0)) {
if (glob_script_mem.fast_script) Run_Scripter1(glob_script_mem.fast_script, 0, 0);
}
@@ -12055,7 +12086,6 @@ exgc:
}
}
snprintf_P(options, SCRIPT_GC_OPTIONS_SIZE, SCRIPT_MSG_GOPT4);
- if (options) free(options);
}
if (tonly) {
WSContentSend_P("]);");
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_121_gpioviewer.ino b/tasmota/tasmota_xdrv_driver/xdrv_121_gpioviewer.ino
index 0cce3bbf3..c806d94fe 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_121_gpioviewer.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_121_gpioviewer.ino
@@ -30,6 +30,9 @@
* GvUrl 1 - Select default url (GV_BASE_URL)
* GvUrl https://thelastoutpostworkshop.github.io/microcontroller_devkit/gpio_viewer_1_5/
*
+ * Note 20240717
+ * - GVRelease 1.5.5
+ *
* Note 20240602
* - GVRelease 1.5.4
*
@@ -65,7 +68,7 @@
#define GV_KEEP_ALIVE 1000 // milliseconds - If no activity after this do a heap size event anyway
-const char *GVRelease = "1.5.4";
+const char *GVRelease = "1.5.5";
/*********************************************************************************************/
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_12_home_assistant.ino b/tasmota/tasmota_xdrv_driver/xdrv_12_home_assistant.ino
index 4e637adc4..d65d6a22f 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_12_home_assistant.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_12_home_assistant.ino
@@ -958,13 +958,13 @@ void HAssAnnounceSensor(const char *sensorname, const char *subsensortype, const
void HAssAnnounceSensors(void)
{
- uint8_t hass_xsns_index = 0;
+ bool hass_xsns_index = true;
do
{
ResponseClear();
int tele_period_save = TasmotaGlobal.tele_period;
TasmotaGlobal.tele_period = 2; // Do not allow HA updates during next function call
- XsnsNextCall(FUNC_JSON_APPEND, hass_xsns_index); // ,"INA219":{"Voltage":4.494,"Current":0.020,"Power":0.089}
+ hass_xsns_index = XsnsCallNextJsonAppend(); // ,"INA219":{"Voltage":4.494,"Current":0.020,"Power":0.089}
TasmotaGlobal.tele_period = tele_period_save;
size_t sensordata_len = ResponseLength();
char sensordata[sensordata_len+2]; // dynamically adjust the size
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino b/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino
index 2f963237e..545040ef9 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_13_display.ino
@@ -256,6 +256,7 @@ char **disp_log_buffer;
char **disp_screen_buffer;
char disp_temp[2]; // C or F
char disp_pres[5]; // hPa or mmHg
+char disp_topic[TOPSZ];
uint8_t disp_log_buffer_cols = 0;
uint8_t disp_log_buffer_idx = 0;
@@ -268,30 +269,35 @@ bool disp_subscribed = false;
/*********************************************************************************************/
-void DisplayInit(uint8_t mode)
-{
- if (renderer) {
- renderer->DisplayInit(mode, Settings->display_size, Settings->display_rotate, Settings->display_font);
+void DisplayClear(void) {
+ if (renderer) {
+ renderer->fillScreen(bg_color);
+ } else {
+ XdspCall(FUNC_DISPLAY_CLEAR);
}
- else {
+}
+
+void DisplayInit(uint8_t mode) {
+ if (renderer) {
+ renderer->DisplayInit(mode, Settings->display_size, Settings->display_rotate, Settings->display_font);
+ } else {
dsp_init = mode;
XdspCall(FUNC_DISPLAY_INIT);
}
+ DisplayClear();
}
-void DisplayClear(void)
-{
- XdspCall(FUNC_DISPLAY_CLEAR);
-}
-
-void DisplayDrawStringAt(uint16_t x, uint16_t y, char *str, uint16_t color, uint8_t flag)
-{
- dsp_x = x;
- dsp_y = y;
- dsp_str = str;
- dsp_color = color;
- dsp_flag = flag;
- XdspCall(FUNC_DISPLAY_DRAW_STRING);
+void DisplayDrawStringAt(uint16_t x, uint16_t y, char *str, uint16_t color, uint8_t flag) {
+ if (renderer) {
+ renderer->DrawStringAt(x, y, str, color, flag);
+ } else {
+ dsp_x = x;
+ dsp_y = y;
+ dsp_str = str;
+ dsp_color = color;
+ dsp_flag = flag;
+ XdspCall(FUNC_DISPLAY_DRAW_STRING);
+ }
}
void DisplayOnOff(uint8_t on) {
@@ -482,18 +488,22 @@ void DisplayText(void)
dp -= decode_te(linebuf);
if ((uint32_t)dp - (uint32_t)linebuf) {
if (!fill) { *dp = 0; }
+#ifdef USE_DISPLAY_MODES1TO5
+ if (!Settings->display_mode) {
+#endif // USE_DISPLAY_MODES1TO5
if (col > 0 && lin > 0) {
// use col and lin
- if (!renderer) DisplayDrawStringAt(col, lin, linebuf, fg_color, 1);
- else renderer->DrawStringAt(col, lin, linebuf, fg_color, 1);
+ DisplayDrawStringAt(col, lin, linebuf, fg_color, 1);
} else {
// use disp_xpos, disp_ypos
- if (!renderer) DisplayDrawStringAt(disp_xpos, disp_ypos, linebuf, fg_color, 0);
- else renderer->DrawStringAt(disp_xpos, disp_ypos, linebuf, fg_color, 0);
+ DisplayDrawStringAt(disp_xpos, disp_ypos, linebuf, fg_color, 0);
}
memset(linebuf, ' ', sizeof(linebuf));
linebuf[sizeof(linebuf)-1] = 0;
dp = linebuf;
+#ifdef USE_DISPLAY_MODES1TO5
+ }
+#endif // USE_DISPLAY_MODES1TO5
}
} else {
// copy chars
@@ -513,8 +523,7 @@ void DisplayText(void)
switch (*cp++) {
case 'z':
// clear display
- if (!renderer) DisplayClear();
- else renderer->fillScreen(bg_color);
+ DisplayClear();
disp_xpos = 0;
disp_ypos = 0;
col = 0;
@@ -1225,14 +1234,17 @@ extern FS *ffsp;
// right align
alignright(linebuf);
}
+#ifdef USE_DISPLAY_MODES1TO5
+ if (Settings->display_mode) {
+ DisplayLogBufferAdd(linebuf);
+ } else
+#endif // USE_DISPLAY_MODES1TO5
if (col > 0 && lin > 0) {
// use col and lin
- if (!renderer) DisplayDrawStringAt(col, lin, linebuf, fg_color, 1);
- else renderer->DrawStringAt(col, lin, linebuf, fg_color, 1);
+ DisplayDrawStringAt(col, lin, linebuf, fg_color, 1);
} else {
// use disp_xpos, disp_ypos
- if (!renderer) DisplayDrawStringAt(disp_xpos, disp_ypos, linebuf, fg_color, 0);
- else renderer->DrawStringAt(disp_xpos, disp_ypos, linebuf, fg_color, 0);
+ DisplayDrawStringAt(disp_xpos, disp_ypos, linebuf, fg_color, 0);
}
}
// draw buffer
@@ -1242,8 +1254,6 @@ extern FS *ffsp;
}
}
-
-
#ifdef USE_UFILESYS
void Display_Text_From_File(const char *file) {
File fp;
@@ -1433,17 +1443,7 @@ void DisplayDTVarsTeleperiod(void) {
}
void get_dt_mqtt(void) {
- static uint8_t xsns_index = 0;
-
- ResponseClear();
- uint16_t script_tele_period_save = TasmotaGlobal.tele_period;
- TasmotaGlobal.tele_period = 2;
- XsnsNextCall(FUNC_JSON_APPEND, xsns_index);
- TasmotaGlobal.tele_period = script_tele_period_save;
- if (ResponseLength()) {
- ResponseJsonStart();
- ResponseJsonEnd();
- }
+ GetNextSensor();
get_dt_vars(ResponseData());
}
@@ -1488,8 +1488,7 @@ void free_dt_vars(void) {
#ifdef USE_DISPLAY_MODES1TO5
-void DisplayClearScreenBuffer(void)
-{
+void DisplayClearScreenBuffer(void) {
if (disp_screen_buffer_cols) {
for (uint32_t i = 0; i < disp_screen_buffer_rows; i++) {
memset(disp_screen_buffer[i], 0, disp_screen_buffer_cols);
@@ -1497,8 +1496,7 @@ void DisplayClearScreenBuffer(void)
}
}
-void DisplayFreeScreenBuffer(void)
-{
+void DisplayFreeScreenBuffer(void) {
if (disp_screen_buffer != nullptr) {
for (uint32_t i = 0; i < disp_screen_buffer_rows; i++) {
if (disp_screen_buffer[i] != nullptr) { free(disp_screen_buffer[i]); }
@@ -1509,14 +1507,13 @@ void DisplayFreeScreenBuffer(void)
}
}
-void DisplayAllocScreenBuffer(void)
-{
+void DisplayAllocScreenBuffer(void) {
if (!disp_screen_buffer_cols) {
disp_screen_buffer_rows = Settings->display_rows;
- disp_screen_buffer = (char**)malloc(sizeof(*disp_screen_buffer) * disp_screen_buffer_rows);
+ disp_screen_buffer = (char**)calloc(sizeof(*disp_screen_buffer) * disp_screen_buffer_rows, 1);
if (disp_screen_buffer != nullptr) {
for (uint32_t i = 0; i < disp_screen_buffer_rows; i++) {
- disp_screen_buffer[i] = (char*)malloc(sizeof(*disp_screen_buffer[i]) * (Settings->display_cols[0] +1));
+ disp_screen_buffer[i] = (char*)calloc(sizeof(*disp_screen_buffer[i]) * (Settings->display_cols[0] +1), 1);
if (disp_screen_buffer[i] == nullptr) {
DisplayFreeScreenBuffer();
break;
@@ -1530,14 +1527,12 @@ void DisplayAllocScreenBuffer(void)
}
}
-void DisplayReAllocScreenBuffer(void)
-{
+void DisplayReAllocScreenBuffer(void) {
DisplayFreeScreenBuffer();
DisplayAllocScreenBuffer();
}
-void DisplayFillScreen(uint32_t line)
-{
+void DisplayFillScreen(uint32_t line) {
uint32_t len = disp_screen_buffer_cols - strlen(disp_screen_buffer[line]);
if (len) {
memset(disp_screen_buffer[line] + strlen(disp_screen_buffer[line]), 0x20, len);
@@ -1547,17 +1542,7 @@ void DisplayFillScreen(uint32_t line)
/*-------------------------------------------------------------------------------------------*/
-void DisplayClearLogBuffer(void)
-{
- if (disp_log_buffer_cols) {
- for (uint32_t i = 0; i < DISPLAY_LOG_ROWS; i++) {
- memset(disp_log_buffer[i], 0, disp_log_buffer_cols);
- }
- }
-}
-
-void DisplayFreeLogBuffer(void)
-{
+void DisplayFreeLogBuffer(void) {
if (disp_log_buffer != nullptr) {
for (uint32_t i = 0; i < DISPLAY_LOG_ROWS; i++) {
if (disp_log_buffer[i] != nullptr) { free(disp_log_buffer[i]); }
@@ -1567,13 +1552,12 @@ void DisplayFreeLogBuffer(void)
}
}
-void DisplayAllocLogBuffer(void)
-{
+void DisplayAllocLogBuffer(void) {
if (!disp_log_buffer_cols) {
- disp_log_buffer = (char**)malloc(sizeof(*disp_log_buffer) * DISPLAY_LOG_ROWS);
+ disp_log_buffer = (char**)calloc(sizeof(*disp_log_buffer) * DISPLAY_LOG_ROWS, 1);
if (disp_log_buffer != nullptr) {
for (uint32_t i = 0; i < DISPLAY_LOG_ROWS; i++) {
- disp_log_buffer[i] = (char*)malloc(sizeof(*disp_log_buffer[i]) * (Settings->display_cols[0] +1));
+ disp_log_buffer[i] = (char*)calloc(sizeof(*disp_log_buffer[i]) * (Settings->display_cols[0] +1), 1);
if (disp_log_buffer[i] == nullptr) {
DisplayFreeLogBuffer();
break;
@@ -1582,44 +1566,42 @@ void DisplayAllocLogBuffer(void)
}
if (disp_log_buffer != nullptr) {
disp_log_buffer_cols = Settings->display_cols[0] +1;
- DisplayClearLogBuffer();
+ DisplayClearScreenBuffer();
+ DisplayClear();
}
}
}
-void DisplayReAllocLogBuffer(void)
-{
+void DisplayReAllocLogBuffer(void) {
DisplayFreeLogBuffer();
DisplayAllocLogBuffer();
}
-void DisplayLogBufferAdd(char* txt)
-{
+void DisplayLogBufferAdd(char* txt) {
if (disp_log_buffer_cols) {
- strlcpy(disp_log_buffer[disp_log_buffer_idx], txt, disp_log_buffer_cols); // This preserves the % sign where printf won't
- disp_log_buffer_idx++;
+ strlcpy(disp_log_buffer[disp_log_buffer_idx++], txt, disp_log_buffer_cols); // This preserves the % sign where printf won't
if (DISPLAY_LOG_ROWS == disp_log_buffer_idx) { disp_log_buffer_idx = 0; }
}
}
-char* DisplayLogBuffer(char temp_code)
-{
+char* DisplayLogBuffer(char temp_code) {
char* result = nullptr;
if (disp_log_buffer_cols) {
if (disp_log_buffer_idx != disp_log_buffer_ptr) {
- result = disp_log_buffer[disp_log_buffer_ptr];
- disp_log_buffer_ptr++;
+ uint32_t log_buffer_ptr = disp_log_buffer_ptr;
+ result = disp_log_buffer[disp_log_buffer_ptr++];
if (DISPLAY_LOG_ROWS == disp_log_buffer_ptr) { disp_log_buffer_ptr = 0; }
char *pch = strchr(result, '~'); // = 0x7E (~) Replace degrees character (276 octal)
if (pch != nullptr) { result[pch - result] = temp_code; }
+
+ AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("DSP: %02d %s"), log_buffer_ptr, result);
}
}
return result;
}
-void DisplayLogBufferInit(void)
-{
+void DisplayLogBufferInit(void) {
if (Settings->display_mode) {
disp_log_buffer_idx = 0;
disp_log_buffer_ptr = 0;
@@ -1656,100 +1638,94 @@ void DisplayLogBufferInit(void)
\*********************************************************************************************/
enum SensorQuantity {
- JSON_TEMPERATURE,
- JSON_HUMIDITY, JSON_LIGHT, JSON_NOISE, JSON_AIRQUALITY,
+ JSON_TEMPERATURE, JSON_DEWPOINT, JSON_HEATINDEX,
JSON_PRESSURE, JSON_PRESSUREATSEALEVEL,
+ JSON_POWERFACTOR, JSON_COUNTER, JSON_ANALOG_INPUT, JSON_UV_LEVEL,
+ JSON_HUMIDITY, JSON_LIGHT, JSON_NOISE, JSON_AIRQUALITY,
JSON_ILLUMINANCE,
JSON_GAS,
JSON_YESTERDAY, JSON_TOTAL, JSON_TODAY,
JSON_PERIOD,
- JSON_POWERFACTOR, JSON_COUNTER, JSON_ANALOG_INPUT, JSON_UV_LEVEL,
JSON_CURRENT,
JSON_VOLTAGE,
JSON_POWERUSAGE,
JSON_CO2,
JSON_FREQUENCY };
const char kSensorQuantity[] PROGMEM =
- D_JSON_TEMPERATURE "|" // degrees
- D_JSON_HUMIDITY "|" D_JSON_LIGHT "|" D_JSON_NOISE "|" D_JSON_AIRQUALITY "|" // percentage
+ D_JSON_TEMPERATURE "|" D_JSON_DEWPOINT "|" D_JSON_HEATINDEX "|" // degrees
D_JSON_PRESSURE "|" D_JSON_PRESSUREATSEALEVEL "|" // hPa
+ D_JSON_POWERFACTOR "|" D_JSON_COUNTER "|" D_JSON_ANALOG_INPUT "|" D_JSON_UV_LEVEL "|" // No unit
+ D_JSON_HUMIDITY "|" D_JSON_LIGHT "|" D_JSON_NOISE "|" D_JSON_AIRQUALITY "|" // percentage
D_JSON_ILLUMINANCE "|" // lx
D_JSON_GAS "|" // kOhm
D_JSON_YESTERDAY "|" D_JSON_TOTAL "|" D_JSON_TODAY "|" // kWh
D_JSON_PERIOD "|" // Wh
- D_JSON_POWERFACTOR "|" D_JSON_COUNTER "|" D_JSON_ANALOG_INPUT "|" D_JSON_UV_LEVEL "|" // No unit
D_JSON_CURRENT "|" // Ampere
D_JSON_VOLTAGE "|" // Volt
D_JSON_POWERUSAGE "|" // Watt
D_JSON_CO2 "|" // ppm
- D_JSON_FREQUENCY ; // Hz
-
-void DisplayJsonValue(const char* topic, const char* device, const char* mkey, const char* value)
-{
- char quantity[TOPSZ];
- char buffer[Settings->display_cols[0] +1];
- char spaces[Settings->display_cols[0]];
- char source[Settings->display_cols[0] - Settings->display_cols[1]];
- char svalue[Settings->display_cols[1] +1];
+ D_JSON_FREQUENCY; // Hz
+const char kSensorUnit[] PROGMEM =
+ "|||" // degrees Celsius or Fahrenheit
+ "||" // pressure hPa or mmHg
+ "||||" // No unit
+ "%|%|%|%|" // percentage
+ D_UNIT_LUX "|" // lx
+ D_UNIT_KILOOHM "|" // kOhm
+ D_UNIT_KILOWATTHOUR "|" D_UNIT_KILOWATTHOUR "|" D_UNIT_KILOWATTHOUR "|" // kWh
+ D_UNIT_WATTHOUR "|" // Wh
+ D_UNIT_AMPERE "|" // A
+ D_UNIT_VOLT "|" // V
+ D_UNIT_WATT "|" // W
+ D_UNIT_PARTS_PER_MILLION "|" // ppm
+ D_UNIT_HERTZ; // Hz
+void DisplayJsonValue(const char* topic, const char* device, const char* mkey, const char* value) {
SHOW_FREE_MEM(PSTR("DisplayJsonValue"));
- memset(spaces, 0x20, sizeof(spaces));
- spaces[sizeof(spaces) -1] = '\0';
- snprintf_P(source, sizeof(source), PSTR("%s%s%s%s"), topic, (strlen(topic))?"/":"", mkey, spaces); // pow1/Voltage or Voltage if topic is empty (local sensor)
+ char temp[TOPSZ];
+ int quantity_code = GetCommandCode(temp, sizeof(temp), mkey, kSensorQuantity);
+ if ((-1 == quantity_code) || !strcmp_P(mkey, S_RSLT_POWER)) { // Ok: Power, Not ok: POWER
+ return; // Display value not supported
+ }
- int quantity_code = GetCommandCode(quantity, sizeof(quantity), mkey, kSensorQuantity);
- if ((-1 == quantity_code) || !strcmp_P(mkey, S_RSLT_POWER)) { // Ok: Power, Not ok: POWER
- return;
+ char svalue[Settings->display_cols[1] +1]; // Max sized unit string
+ if (quantity_code <= JSON_HEATINDEX) { // Temperature
+ snprintf_P(svalue, sizeof(svalue), PSTR("%s~%s"), value, disp_temp); // Used by DisplayLogBuffer replace degrees character (276 octal)
}
- if (JSON_TEMPERATURE == quantity_code) {
- snprintf_P(svalue, sizeof(svalue), PSTR("%s~%s"), value, disp_temp);
+ else if (quantity_code <= JSON_PRESSUREATSEALEVEL) { // Pressure
+ snprintf_P(svalue, sizeof(svalue), PSTR("%s%s"), value, disp_pres); // hPa or mmHg
}
- else if ((quantity_code >= JSON_HUMIDITY) && (quantity_code <= JSON_AIRQUALITY)) {
- snprintf_P(svalue, sizeof(svalue), PSTR("%s%%"), value);
+ else {
+ snprintf_P(svalue, sizeof(svalue), PSTR("%s%s"), value, GetTextIndexed(temp, sizeof(temp), quantity_code, kSensorUnit));
}
- else if ((quantity_code >= JSON_PRESSURE) && (quantity_code <= JSON_PRESSUREATSEALEVEL)) {
- snprintf_P(svalue, sizeof(svalue), PSTR("%s%s"), value, disp_pres);
- }
- else if (JSON_ILLUMINANCE == quantity_code) {
- snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_LUX), value);
- }
- else if (JSON_GAS == quantity_code) {
- snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_KILOOHM), value);
- }
- else if ((quantity_code >= JSON_YESTERDAY) && (quantity_code <= JSON_TODAY)) {
- snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_KILOWATTHOUR), value);
- }
- else if (JSON_PERIOD == quantity_code) {
- snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_WATTHOUR), value);
- }
- else if ((quantity_code >= JSON_POWERFACTOR) && (quantity_code <= JSON_UV_LEVEL)) {
- snprintf_P(svalue, sizeof(svalue), PSTR("%s"), value);
- }
- else if (JSON_CURRENT == quantity_code) {
- snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_AMPERE), value);
- }
- else if (JSON_VOLTAGE == quantity_code) {
- snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_VOLT), value);
- }
- else if (JSON_POWERUSAGE == quantity_code) {
- snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_WATT), value);
- }
- else if (JSON_CO2 == quantity_code) {
- snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_PARTS_PER_MILLION), value);
- }
- else if (JSON_FREQUENCY == quantity_code) {
- snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_HERTZ), value);
+
+ char buffer[Settings->display_cols[0] +1]; // Max sized buffer string
+ uint32_t size = strlen(topic);
+ if ((Settings->display_rows > 4) && size) { // Skip header if less than five rows
+ if (strcmp(topic, disp_topic)) { // Show topic header only once
+ strcpy(disp_topic, topic);
+ char buffer2[Settings->display_cols[0] +1]; // Max sized buffer string
+ memset(buffer2, '-', sizeof(buffer2)); // Set to -
+ buffer2[sizeof(buffer2) -1] = '\0';
+ snprintf_P(buffer, sizeof(buffer), PSTR("- %s %s"), topic, buffer2); // - pow1 -------------
+ DisplayLogBufferAdd(buffer);
+ }
+ size = 0; // Remove topic from source
}
+ memset(buffer, ' ', sizeof(buffer)); // Temporarily use for spaces
+ buffer[sizeof(buffer) -1] = '\0';
+ char source[Settings->display_cols[0] - Settings->display_cols[1]]; // Max sized source string
+ snprintf_P(source, sizeof(source), PSTR("%s%s%s%s"), (size)?topic:"", (size)?"/":"", mkey, buffer); // pow1/Voltage or Voltage if topic is empty (local sensor or header)
snprintf_P(buffer, sizeof(buffer), PSTR("%s %s"), source, svalue);
-// AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "mkey [%s], source [%s], value [%s], quantity_code %d, log_buffer [%s]"), mkey, source, value, quantity_code, buffer);
+// AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "topic [%s], device [%s], mkey [%s], source [%s], value [%s], quantity_code %d, log_buffer [%s]"),
+// topic, device, mkey, source, value, quantity_code, buffer);
DisplayLogBufferAdd(buffer);
}
-void DisplayAnalyzeJson(char *topic, const char *json)
-{
+void DisplayAnalyzeJson(char *topic, const char *json) {
// //tele/pow2/STATE {"Time":"2017-09-20T11:53:03", "Uptime":10, "Vcc":3.123, "POWER":"ON", "Wifi":{"AP":2, "SSId":"indebuurt2", "RSSI":68, "APMac":"00:22:6B:FE:8E:20"}}
// //tele/pow2/ENERGY {"Time":"2017-09-20T11:53:03", "Total":6.522, "Yesterday":0.150, "Today":0.073, "Period":0.5, "Power":12.1, "Factor":0.56, "Voltage":210.1, "Current":0.102}
@@ -1804,40 +1780,39 @@ void DisplayAnalyzeJson(char *topic, const char *json)
}
}
-void DisplayMqttSubscribe(void)
-{
+void DisplayMqttSubscribe(void) {
/* Subscribe to tele messages only
* Supports the following FullTopic formats
* - %prefix%/%topic%
* - home/%prefix%/%topic%
* - home/level2/%prefix%/%topic% etc.
*/
- if (Settings->display_model && (Settings->display_mode &0x04)) {
-
- char stopic[TOPSZ];
- char ntopic[TOPSZ];
-
- ntopic[0] = '\0';
- strlcpy(stopic, SettingsText(SET_MQTT_FULLTOPIC), sizeof(stopic));
- char *tp = strtok(stopic, "/");
- while (tp != nullptr) {
- if (!strcmp_P(tp, MQTT_TOKEN_PREFIX)) {
- break;
- }
- strncat_P(ntopic, PSTR("+/"), sizeof(ntopic) - strlen(ntopic) -1); // Add single-level wildcards
- tp = strtok(nullptr, "/");
+ char stopic[TOPSZ];
+ strlcpy(stopic, SettingsText(SET_MQTT_FULLTOPIC), sizeof(stopic));
+ char *tp = strtok(stopic, "/");
+ char ntopic[TOPSZ];
+ ntopic[0] = '\0';
+ while (tp != nullptr) {
+ if (!strcmp_P(tp, MQTT_TOKEN_PREFIX)) {
+ break;
}
- strncat(ntopic, SettingsText(SET_MQTTPREFIX3), sizeof(ntopic) - strlen(ntopic) -1); // Subscribe to tele messages
- strncat_P(ntopic, PSTR("/#"), sizeof(ntopic) - strlen(ntopic) -1); // Add multi-level wildcard
- MqttSubscribe(ntopic);
+ strncat_P(ntopic, PSTR("+/"), sizeof(ntopic) - strlen(ntopic) -1); // Add single-level wildcards
+ tp = strtok(nullptr, "/");
+ }
+ strncat(ntopic, SettingsText(SET_MQTTPREFIX3), sizeof(ntopic) - strlen(ntopic) -1); // Subscribe to tele messages
+ strncat_P(ntopic, PSTR("/#"), sizeof(ntopic) - strlen(ntopic) -1); // Add multi-level wildcard
+ if (Settings->display_model && (Settings->display_mode &0x04)) {
disp_subscribed = true;
+ MqttSubscribe(ntopic);
} else {
- disp_subscribed = false;
+ if (disp_subscribed) {
+ disp_subscribed = false;
+ MqttUnsubscribe(ntopic);
+ }
}
}
-bool DisplayMqttData(void)
-{
+bool DisplayMqttData(void) {
if (disp_subscribed) {
char stopic[TOPSZ];
@@ -1866,7 +1841,6 @@ void DisplayLocalSensor(void)
#endif // USE_DISPLAY_MODES1TO5
-
/*********************************************************************************************\
* Public
\*********************************************************************************************/
@@ -1908,12 +1882,11 @@ void DisplayInitDriver(void) {
UpdateDevicesPresent(1);
if (!PinUsed(GPIO_BACKLIGHT)) {
-// if (TasmotaGlobal.light_type && (4 == Settings->display_model)) {
- if (TasmotaGlobal.light_type && // Assume PWM channel
- ((4 == Settings->display_model) || // ILI9341 legacy
- (17 == Settings->display_model)) // Universal
+ if ((LT_PWM1 == TasmotaGlobal.light_type) && // Single PWM light channel
+ ((4 == Settings->display_model) || // ILI9341 legacy
+ (17 == Settings->display_model)) // Universal
) {
- UpdateDevicesPresent(-1); // Assume PWM channel is used for backlight
+ UpdateDevicesPresent(-1); // Assume PWM channel is used for backlight
}
}
disp_device = TasmotaGlobal.devices_present;
@@ -2012,18 +1985,18 @@ void CmndDisplayMode(void) {
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 5)) {
uint32_t last_display_mode = Settings->display_mode;
Settings->display_mode = XdrvMailbox.payload;
-
- if (disp_subscribed != (Settings->display_mode &0x04)) {
- TasmotaGlobal.restart_flag = 2; // Restart to Add/Remove MQTT subscribe
- } else {
- if (last_display_mode && !Settings->display_mode) { // Switch to mode 0
- DisplayInit(DISPLAY_INIT_MODE);
- if (renderer) renderer->fillScreen(bg_color);
- else DisplayClear();
- } else {
- DisplayLogBufferInit();
+ if (last_display_mode != Settings->display_mode) { // Switch to different mode
+ if ((!last_display_mode && Settings->display_mode) || // Switch to mode 1, 2, 3 or 4
+ (last_display_mode && !Settings->display_mode)) { // Switch to mode 0
DisplayInit(DISPLAY_INIT_MODE);
}
+ if (1 == Settings->display_mode) { // Switch to mode 1
+ DisplayClear();
+ }
+ else if (Settings->display_mode > 1) { // Switch to mode 2, 3 or 4
+ DisplayLogBufferInit();
+ }
+ DisplayMqttSubscribe();
}
}
#endif // USE_DISPLAY_MODES1TO5
@@ -2068,6 +2041,7 @@ void CmndDisplayDimmer(void) {
void CmndDisplaySize(void) {
if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= TXT_MAX_SFAC)) {
Settings->display_size = XdrvMailbox.payload;
+ DisplayClear();
if (renderer) renderer->setTextSize(Settings->display_size);
//else DisplaySetSize(Settings->display_size);
}
@@ -2077,6 +2051,7 @@ void CmndDisplaySize(void) {
void CmndDisplayFont(void) {
if ((XdrvMailbox.payload >=0) && (XdrvMailbox.payload <= 4)) {
Settings->display_font = XdrvMailbox.payload;
+ DisplayClear();
if (renderer) renderer->setTextFont(Settings->display_font);
//else DisplaySetFont(Settings->display_font);
}
@@ -2179,17 +2154,11 @@ void CmndDisplayBatch(void) {
void CmndDisplayText(void) {
if (disp_device && XdrvMailbox.data_len > 0) {
-#ifndef USE_DISPLAY_MODES1TO5
- DisplayText();
-#else
if(Settings->display_model == 15 || Settings->display_model == 20) {
XdspCall(FUNC_DISPLAY_SEVENSEG_TEXT);
- } else if (!Settings->display_mode) {
- DisplayText();
} else {
- DisplayLogBufferAdd(XdrvMailbox.data);
+ DisplayText();
}
-#endif // USE_DISPLAY_MODES1TO5
ResponseCmndChar(XdrvMailbox.data);
}
}
@@ -2199,8 +2168,7 @@ void CmndDisplayText(void) {
\*********************************************************************************************/
void CmndDisplayClear(void) {
- if (!renderer)
- XdspCall(FUNC_DISPLAY_CLEAR);
+ DisplayClear();
ResponseCmndChar(XdrvMailbox.data);
}
@@ -2943,8 +2911,7 @@ void AddValue(uint8_t num,float fval) {
* Interface
\*********************************************************************************************/
-bool Xdrv13(uint32_t function)
-{
+bool Xdrv13(uint32_t function) {
bool result = false;
if (XdspPresent()) {
@@ -2958,7 +2925,9 @@ bool Xdrv13(uint32_t function)
}
break;
case FUNC_EVERY_50_MSECOND:
- if (Settings->display_model) { XdspCall(FUNC_DISPLAY_EVERY_50_MSECOND); }
+ if (Settings->display_model) {
+ XdspCall(FUNC_DISPLAY_EVERY_50_MSECOND);
+ }
break;
case FUNC_SET_POWER:
DisplaySetPower();
@@ -2966,20 +2935,27 @@ bool Xdrv13(uint32_t function)
case FUNC_EVERY_SECOND:
#ifdef USE_GRAPH
DisplayCheckGraph();
-#endif
+#endif // USE_GRAPH
#ifdef USE_DT_VARS
get_dt_mqtt();
draw_dt_vars();
-#endif // USE_DT_VARS
-
+#endif // USE_DT_VARS
#ifdef USE_DISPLAY_MODES1TO5
- if (Settings->display_model && Settings->display_mode) { XdspCall(FUNC_DISPLAY_EVERY_SECOND); }
-#endif
+ if (Settings->display_model && Settings->display_mode) {
+ uint32_t wait = 0;
+ if (!Settings->flag5.display_no_splash) { // SetOption135 - (Display & LVGL) force disabling default 5 second splash screen
+ wait = 6;
+ }
+ if (TasmotaGlobal.uptime > wait) { // Allow time to display splash screen
+ XdspCall(FUNC_DISPLAY_EVERY_SECOND);
+ }
+ }
+#endif // USE_DISPLAY_MODES1TO5
break;
case FUNC_AFTER_TELEPERIOD:
#ifdef USE_DT_VARS
DisplayDTVarsTeleperiod();
-#endif // USE_DT_VARS
+#endif // USE_DT_VARS
break;
#ifdef USE_DISPLAY_MODES1TO5
case FUNC_MQTT_SUBSCRIBE:
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_22_sonoff_ifan.ino b/tasmota/tasmota_xdrv_driver/xdrv_22_sonoff_ifan.ino
index 13d8cfe24..ef640165c 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_22_sonoff_ifan.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_22_sonoff_ifan.ino
@@ -1,5 +1,5 @@
/*
- xdrv_22_sonoff_ifan.ino - sonoff iFan02 and iFan03 support for Tasmota
+ xdrv_22_sonoff_ifan.ino - sonoff iFan02, iFan03 and iFan04 support for Tasmota
Copyright (C) 2021 Theo Arends
@@ -19,16 +19,30 @@
#ifdef USE_SONOFF_IFAN
/*********************************************************************************************\
- Sonoff iFan02 and iFan03
+ * Sonoff iFan02, iFan03 and iFan04
+ *
+ * For iFan04-H activate below template:
+ * {"NAME":"Sonoff iFan04-H","GPIO":[32,3200,5735,3232,0,0,256,512,226,320,225,227,0,0],"FLAG":0,"BASE":71}
+ *
+ * #ifdef USE_SONOFF_IFAN_CONFIG
+ * No template change needed. For iFan04-H select
+ * - a rule like: rule3 on file#ifan.dat do {"Name":"iFan04-H","Speed":[0,1,2,4,5,6],"Sequence":[[0,4,5,3],[0,1,2,3],[0,1,2,3],[0,4,5,3]]} endon
+ * - a script like: -y{"Name":"iFan04-H","Speed":[0,1,2,4,5,6],"Sequence":[[0,4,5,3],[0,1,2,3],[0,1,2,3],[0,4,5,3]]}#
+ * - a file called ifan.dat with contents: {"Name":"iFan04-H","Speed":[0,1,2,4,5,6],"Sequence":[[0,4,5,3],[0,1,2,3],[0,1,2,3],[0,4,5,3]]}
+ *
+ * For reference only:
+ * rule3 on file#ifan.dat do {"Name":"iFan03","Speed":[0,1,3,4,5,6],"Sequence":[[0,2,2,2],[0,1,2,4],[1,1,2,5],[4,4,5,3]]} endon
\*********************************************************************************************/
#define XDRV_22 22
+//#define USE_SONOFF_IFAN_CONFIG // Enable ifan user config
+
const uint8_t MAX_FAN_SPEED = 4; // Max number of iFan02 fan speeds (0 .. 3)
const uint8_t kIFan02Speed[MAX_FAN_SPEED] = { 0x00, 0x01, 0x03, 0x05 };
-const uint8_t kIFan03Speed[MAX_FAN_SPEED +2] = { 0x00, 0x01, 0x03, 0x04, 0x05, 0x06 };
-const uint8_t kIFan03Sequence[MAX_FAN_SPEED][MAX_FAN_SPEED] = {{0, 2, 2, 2}, {0, 1, 2, 4}, {1, 1, 2, 5}, {4, 4, 5, 3}};
+const uint8_t kIFan04Speed[MAX_FAN_SPEED +2] = { 0x00, 0x01, 0x02, 0x04, 0x05, 0x06 };
+const uint8_t kIFan04Sequence[MAX_FAN_SPEED][MAX_FAN_SPEED] = {{0, 4, 5, 3}, {0, 1, 2, 3}, {0, 1, 2, 3}, {0, 4, 5, 3}};
const char kSonoffIfanCommands[] PROGMEM = "|" // No prefix
D_CMND_FANSPEED;
@@ -36,27 +50,28 @@ const char kSonoffIfanCommands[] PROGMEM = "|" // No prefix
void (* const SonoffIfanCommand[])(void) PROGMEM = {
&CmndFanspeed };
-uint8_t ifan_fanspeed_timer = 0;
-uint8_t ifan_fanspeed_goal = 0;
-bool ifan_receive_flag = false;
-bool ifan_restart_flag = true;
+struct IFAN {
+ uint8_t speed[MAX_FAN_SPEED +2] = { 0x00, 0x01, 0x03, 0x04, 0x05, 0x06 };
+ uint8_t sequence[MAX_FAN_SPEED][MAX_FAN_SPEED] = {{0, 2, 2, 2}, {0, 1, 2, 4}, {1, 1, 2, 5}, {4, 4, 5, 3}};
+ uint8_t fanspeed_timer = 0;
+ uint8_t fanspeed_goal = 0;
+ bool receive_flag = false;
+ bool restart_flag = true;
+} Ifan;
/*********************************************************************************************/
-bool IsModuleIfan(void)
-{
+bool IsModuleIfan(void) {
return ((SONOFF_IFAN02 == TasmotaGlobal.module_type) || (SONOFF_IFAN03 == TasmotaGlobal.module_type));
}
-uint8_t MaxFanspeed(void)
-{
+uint8_t MaxFanspeed(void) {
return MAX_FAN_SPEED;
}
-uint8_t GetFanspeed(void)
-{
- if (ifan_fanspeed_timer) {
- return ifan_fanspeed_goal; // Do not show sequence fanspeed
+uint8_t GetFanspeed(void) {
+ if (Ifan.fanspeed_timer) {
+ return Ifan.fanspeed_goal; // Do not show sequence fanspeed
} else {
/* Fanspeed is controlled by relay 2, 3 and 4 as in Sonoff 4CH.
000x = 0
@@ -72,28 +87,26 @@ uint8_t GetFanspeed(void)
/*********************************************************************************************/
-void SonoffIFanSetFanspeed(uint8_t fanspeed, bool sequence)
-{
- ifan_fanspeed_timer = 0; // Stop any sequence
- ifan_fanspeed_goal = fanspeed;
+void SonoffIFanSetFanspeed(uint8_t fanspeed, bool sequence) {
+ Ifan.fanspeed_timer = 0; // Stop any sequence
+ Ifan.fanspeed_goal = fanspeed;
uint8_t fanspeed_now = GetFanspeed();
-
if (fanspeed == fanspeed_now) { return; }
uint8_t fans = kIFan02Speed[fanspeed];
if (SONOFF_IFAN03 == TasmotaGlobal.module_type) {
if (sequence) {
- fanspeed = kIFan03Sequence[fanspeed_now][ifan_fanspeed_goal];
- if (fanspeed != ifan_fanspeed_goal) {
+ fanspeed = Ifan.sequence[fanspeed_now][Ifan.fanspeed_goal];
+ if (fanspeed != Ifan.fanspeed_goal) {
if (0 == fanspeed_now) {
- ifan_fanspeed_timer = 20; // Need extra time to power up fan
+ Ifan.fanspeed_timer = 20; // Need extra time to power up fan
} else {
- ifan_fanspeed_timer = 2;
+ Ifan.fanspeed_timer = 2;
}
}
}
- fans = kIFan03Speed[fanspeed];
+ fans = Ifan.speed[fanspeed];
}
for (uint32_t i = 2; i < 5; i++) {
uint8_t state = (fans &1) + POWER_OFF_NO_STATE; // Add no publishPowerState
@@ -108,8 +121,7 @@ void SonoffIFanSetFanspeed(uint8_t fanspeed, bool sequence)
/*********************************************************************************************/
-void SonoffIfanReceived(void)
-{
+void SonoffIfanReceived(void) {
char svalue[32];
uint8_t mode = TasmotaGlobal.serial_in_buffer[3];
@@ -154,15 +166,14 @@ void SonoffIfanReceived(void)
}
}
-bool SonoffIfanSerialInput(void)
-{
+bool SonoffIfanSerialInput(void) {
if (SONOFF_IFAN03 != TasmotaGlobal.module_type) { return false; }
if (0xAA == TasmotaGlobal.serial_in_byte) { // 0xAA - Start of text
TasmotaGlobal.serial_in_byte_counter = 0;
- ifan_receive_flag = true;
+ Ifan.receive_flag = true;
}
- if (ifan_receive_flag) {
+ if (Ifan.receive_flag) {
TasmotaGlobal.serial_in_buffer[TasmotaGlobal.serial_in_byte_counter++] = TasmotaGlobal.serial_in_byte;
if (TasmotaGlobal.serial_in_byte_counter == 8) {
// AA 55 01 01 00 01 01 04 - Wifi long press - start wifi setup
@@ -181,7 +192,7 @@ bool SonoffIfanSerialInput(void)
}
if (crc == TasmotaGlobal.serial_in_buffer[7]) {
SonoffIfanReceived();
- ifan_receive_flag = false;
+ Ifan.receive_flag = false;
return true;
}
}
@@ -194,8 +205,7 @@ bool SonoffIfanSerialInput(void)
* Commands
\*********************************************************************************************/
-void CmndFanspeed(void)
-{
+void CmndFanspeed(void) {
if (XdrvMailbox.data_len > 0) {
if ('-' == XdrvMailbox.data[0]) {
XdrvMailbox.payload = (int16_t)GetFanspeed() -1;
@@ -214,27 +224,84 @@ void CmndFanspeed(void)
/*********************************************************************************************/
-bool SonoffIfanInit(void)
-{
+void SonoffIFanParameters(void) {
+ if (TasmotaGlobal.gpio_optiona.ifan04_h) { // GPIO Option_A8
+ memcpy(Ifan.speed, kIFan04Speed, sizeof(Ifan.speed));
+ memcpy(Ifan.sequence, kIFan04Sequence, sizeof(Ifan.sequence));
+ }
+
+#ifdef USE_SONOFF_IFAN_CONFIG
+
+ String ifantmplt = "";
+#ifdef USE_UFILESYS
+ ifantmplt = TfsLoadString("/ifan.dat");
+#endif // USE_UFILESYS
+#ifdef USE_RULES
+ if (!ifantmplt.length()) {
+ ifantmplt = RuleLoadFile("IFAN.DAT");
+ }
+#endif // USE_RULES
+#ifdef USE_SCRIPT
+ if (!ifantmplt.length()) {
+ ifantmplt = ScriptLoadSection(">y");
+ }
+#endif // USE_SCRIPT
+ if (ifantmplt.length() > 75) {
+ JsonParser parser((char*)ifantmplt.c_str());
+ JsonParserObject root = parser.getRootObject();
+ if (root) {
+ // rule3 on file#ifan.dat do {"Name":"iFan03","Speed":[0,1,3,4,5,6],"Sequence":[[0,2,2,2],[0,1,2,4],[1,1,2,5],[4,4,5,3]]} endon
+ // rule3 on file#ifan.dat do {"Name":"iFan04-H","Speed":[0,1,2,4,5,6],"Sequence":[[0,4,5,3],[0,1,2,3],[0,1,2,3],[0,4,5,3]]} endon
+ JsonParserArray arr_speed = root[PSTR("SPEED")];
+ if (arr_speed) {
+ for (uint32_t i = 0; i < sizeof(Ifan.speed); i++) {
+ JsonParserToken val = arr_speed[i];
+ if (!val) { break; }
+ Ifan.speed[i] = val.getUInt() & 0x07;
+ }
+ }
+ JsonParserArray arr_sequence = root[PSTR("SEQUENCE")];
+ if (arr_sequence) {
+ for (uint32_t j = 0; j < MAX_FAN_SPEED; j++) {
+ JsonParserArray arr_sequence2 = arr_sequence[j];
+ if (!arr_sequence2) { break; }
+ for (uint32_t i = 0; i < MAX_FAN_SPEED; i++) {
+ JsonParserToken val = arr_sequence2[i];
+ if (!val) { break; }
+ Ifan.sequence[j][i] = val.getUInt() & 0x07;
+ }
+ }
+ }
+ JsonParserToken val = root[PSTR(D_JSON_NAME)];
+ AddLog(LOG_LEVEL_DEBUG, PSTR("IFN: Loaded%s%s"), (val)?" ":"", (val)?val.getStr():"");
+ }
+ }
+
+#endif // USE_SONOFF_IFAN_CONFIG
+
+// AddLog(LOG_LEVEL_DEBUG, PSTR("IFN: Speed %6_H, Sequence %16_H"), Ifan.speed, Ifan.sequence);
+}
+
+bool SonoffIfanInit(void) {
if (SONOFF_IFAN03 == TasmotaGlobal.module_type) {
SetSerial(9600, TS_SERIAL_8N1);
+ SonoffIFanParameters();
}
return false; // Continue init chain
}
-void SonoffIfanUpdate(void)
-{
+void SonoffIfanUpdate(void) {
if (SONOFF_IFAN03 == TasmotaGlobal.module_type) {
- if (ifan_fanspeed_timer) {
- ifan_fanspeed_timer--;
- if (!ifan_fanspeed_timer) {
- SonoffIFanSetFanspeed(ifan_fanspeed_goal, false);
+ if (Ifan.fanspeed_timer) {
+ Ifan.fanspeed_timer--;
+ if (!Ifan.fanspeed_timer) {
+ SonoffIFanSetFanspeed(Ifan.fanspeed_goal, false);
}
}
}
- if (ifan_restart_flag && (4 == TasmotaGlobal.uptime) && (SONOFF_IFAN02 == TasmotaGlobal.module_type)) { // Microcontroller needs 3 seconds before accepting commands
- ifan_restart_flag = false;
+ if (Ifan.restart_flag && (4 == TasmotaGlobal.uptime) && (SONOFF_IFAN02 == TasmotaGlobal.module_type)) { // Microcontroller needs 3 seconds before accepting commands
+ Ifan.restart_flag = false;
SetDevicePower(1, SRC_RETRY); // Sync with default power on state microcontroller being Light ON and Fan OFF
SetDevicePower(TasmotaGlobal.power, SRC_RETRY); // Set required power on state
}
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_1_headers.ino b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_1_headers.ino
index a28afeae1..77c993a87 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_1_headers.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_1_headers.ino
@@ -69,7 +69,7 @@ public:
#endif // USE_ZIGBEE_EEPROM
{}
- bool active = true; // is Zigbee active for this device, i.e. GPIOs configured
+ bool active = false; // is Zigbee active for this device, i.e. GPIOs configured
bool state_machine = false; // the state machine is running
bool state_waiting = false; // the state machine is waiting for external event or timeout
bool state_no_timeout = false; // the current wait loop does not generate a timeout but only continues running
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_7_0_statemachine.ino b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_7_0_statemachine.ino
index 204dc9406..bffd6d1c8 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_7_0_statemachine.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_7_0_statemachine.ino
@@ -425,7 +425,27 @@ static const Zigbee_Instruction zb_prog[] PROGMEM = {
ZI_ON_ERROR_GOTO(ZIGBEE_LABEL_ABORT)
ZI_ON_TIMEOUT_GOTO(ZIGBEE_LABEL_ABORT)
ZI_ON_RECV_UNEXPECTED(&ZNP_Recv_Default)
+
+ ZI_LOG(LOG_LEVEL_INFO, D_LOG_ZIGBEE "Loading Zigbee data")
+ ZI_CALL(&Z_Prepare_Storage, 0)
+ ZI_CALL(&Z_Load_Devices, 0)
+ ZI_CALL(&Z_Load_Data, 0)
+ ZI_CALL(&Z_Set_Save_Data_Timer, 0)
+ ZI_CALL(&Z_ZbAutoload, 0)
+#ifndef USE_ZIGBEE_DEBUG
ZI_WAIT(15500) // wait for 15 seconds for Tasmota to stabilize
+#else
+ ZI_WAIT(30000) // wait for cumulated 5 minutes
+ ZI_WAIT(30000)
+ ZI_WAIT(30000)
+ ZI_WAIT(30000)
+ ZI_WAIT(30000)
+ ZI_WAIT(30000)
+ ZI_WAIT(30000)
+ ZI_WAIT(30000)
+ ZI_WAIT(30000)
+ ZI_WAIT(30000)
+#endif
//ZI_MQTT_STATE(ZIGBEE_STATUS_BOOT, "Booting")
ZI_LOG(LOG_LEVEL_INFO, D_LOG_ZIGBEE "rebooting ZNP device")
@@ -532,11 +552,6 @@ static const Zigbee_Instruction zb_prog[] PROGMEM = {
// Correctly configured and running, enable all Tasmota features
// ======================================================================
ZI_LABEL(ZIGBEE_LABEL_READY)
- ZI_CALL(&Z_Prepare_Storage, 0)
- ZI_CALL(&Z_Load_Devices, 0)
- ZI_CALL(&Z_Load_Data, 0)
- ZI_CALL(&Z_Set_Save_Data_Timer, 0)
- ZI_CALL(&Z_ZbAutoload, 0)
ZI_MQTT_STATE(ZIGBEE_STATUS_OK, kStarted)
ZI_LOG(LOG_LEVEL_INFO, kZigbeeStarted)
ZI_CALL(&Z_State_Ready, 1) // Now accept incoming messages
@@ -881,7 +896,27 @@ static const Zigbee_Instruction zb_prog[] PROGMEM = {
ZI_ON_ERROR_GOTO(ZIGBEE_LABEL_ABORT)
ZI_ON_TIMEOUT_GOTO(ZIGBEE_LABEL_ABORT)
ZI_ON_RECV_UNEXPECTED(&EZ_Recv_Default)
+
+ ZI_LOG(LOG_LEVEL_INFO, D_LOG_ZIGBEE "Loading Zigbee data")
+ ZI_CALL(&Z_Prepare_Storage, 0)
+ ZI_CALL(&Z_Load_Devices, 0)
+ ZI_CALL(&Z_Load_Data, 0)
+ ZI_CALL(&Z_Set_Save_Data_Timer, 0)
+ ZI_CALL(&Z_ZbAutoload, 0)
+#ifndef USE_ZIGBEE_DEBUG
ZI_WAIT(15500) // wait for 15 seconds for Tasmota to stabilize
+#else
+ ZI_WAIT(30000) // wait for cumulated 5 minutes
+ ZI_WAIT(30000)
+ ZI_WAIT(30000)
+ ZI_WAIT(30000)
+ ZI_WAIT(30000)
+ ZI_WAIT(30000)
+ ZI_WAIT(30000)
+ ZI_WAIT(30000)
+ ZI_WAIT(30000)
+ ZI_WAIT(30000)
+#endif
// Hardware reset
ZI_LOG(LOG_LEVEL_INFO, kResettingDevice) // Log Debug: resetting EZSP device
@@ -978,12 +1013,7 @@ static const Zigbee_Instruction zb_prog[] PROGMEM = {
ZI_LOG(LOG_LEVEL_INFO, kZigbeeGroup0)
ZI_SEND(ZBS_SET_MCAST_ENTRY) ZI_WAIT_RECV(2500, ZBR_SET_MCAST_ENTRY)
- // ZI_LABEL(ZIGBEE_LABEL_READY)
- ZI_CALL(&Z_Prepare_Storage, 0)
- ZI_CALL(&Z_Load_Devices, 0)
- ZI_CALL(&Z_Load_Data, 0)
- ZI_CALL(&Z_Set_Save_Data_Timer, 0)
- ZI_CALL(&Z_ZbAutoload, 0)
+ ZI_LABEL(ZIGBEE_LABEL_READY)
ZI_MQTT_STATE(ZIGBEE_STATUS_OK, kStarted)
ZI_LOG(LOG_LEVEL_INFO, kZigbeeStarted)
ZI_CALL(&Z_State_Ready, 1) // Now accept incoming messages
@@ -1088,6 +1118,7 @@ void ZigbeeStateMachine_Run(void) {
}
if (zigbee.pc < 0) {
zigbee.state_machine = false;
+ zigbee.active = false;
return;
}
@@ -1133,6 +1164,7 @@ void ZigbeeStateMachine_Run(void) {
zigbee.state_machine = false;
if (cur_d8) {
AddLog(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Stopping (%d)"), cur_d8);
+ zigbee.active = false;
}
break;
case ZGB_INSTR_CALL:
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_A_impl.ino b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_A_impl.ino
index f010d2a2a..c19edc77b 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_A_impl.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_23_zigbee_A_impl.ino
@@ -1172,8 +1172,6 @@ void CmndZbName(void) {
//
// Where can be: short_addr, long_addr, device_index, friendly_name
- if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; }
-
// check if parameters contain a comma ','
char *p = XdrvMailbox.data;
char *device_id = strsep(&p, ","); // zigbee identifier
@@ -1214,8 +1212,6 @@ void CmndZbModelId(void) {
//
// Where can be: short_addr, long_addr, device_index, friendly_name
- if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; }
-
// check if parameters contain a comma ','
char *p;
strtok_r(XdrvMailbox.data, ",", &p);
@@ -1241,8 +1237,6 @@ void CmndZbLight(void) {
//
// Where can be: short_addr, long_addr, device_index, friendly_name
- if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; }
-
// check if parameters contain a comma ','
char *p = XdrvMailbox.data;
char *device_id = strsep(&p, ","); // zigbee identifier
@@ -1287,8 +1281,6 @@ void CmndZbOccupancy(void) {
// 0x8 = 120 s
// Where can be: short_addr, long_addr, device_index, friendly_name
- if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; }
-
// check if parameters contain a comma ','
char *p;
strtok_r(XdrvMailbox.data, ",", &p);
@@ -1320,7 +1312,6 @@ void CmndZbOccupancy(void) {
// Remove an old Zigbee device from the list of known devices, use ZigbeeStatus to know all registered devices
//
void CmndZbForget(void) {
- if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; }
Z_Device & device = zigbee_devices.parseDeviceFromName(XdrvMailbox.data, nullptr, nullptr, XdrvMailbox.payload); // in case of short_addr, it must be already registered
if (!device.valid()) { ResponseCmndChar_P(PSTR(D_ZIGBEE_UNKNOWN_DEVICE)); return; }
@@ -1342,7 +1333,6 @@ void CmndZbInfo_inner(const Z_Device & device) {
device.jsonPublishAttrList(PSTR(D_JSON_ZIGBEE_INFO), attr_list); // publish as ZbReceived
}
void CmndZbInfo(void) {
- if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; }
TrimSpace(XdrvMailbox.data);
if (strlen(XdrvMailbox.data) == 0) {
@@ -1369,7 +1359,6 @@ void CmndZbInfo(void) {
// Save Zigbee information to flash
//
void CmndZbSave(void) {
- if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; }
switch (XdrvMailbox.payload) {
case 2: // save only data
hibernateAllData();
@@ -1578,7 +1567,6 @@ void CmndZbEmulation(void) {
// ZbRestore [{"Device":"0x5ADF","Name":"Petite_Lampe","IEEEAddr":"0x90FD9FFFFE03B051","ModelId":"TRADFRI bulb E27 WS opal 980lm","Manufacturer":"IKEA of Sweden","Endpoints":["0x01","0xF2"]}]
// ZbRestore {"Device":"0x5ADF","Name":"Petite_Lampe","IEEEAddr":"0x90FD9FFFFE03B051","ModelId":"TRADFRI bulb E27 WS opal 980lm","Manufacturer":"IKEA of Sweden","Endpoints":["0x01","0xF2"]}
void CmndZbRestore(void) {
- if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; }
TrimSpace(XdrvMailbox.data);
if (strlen(XdrvMailbox.data) == 0) {
@@ -1795,34 +1783,31 @@ void ZigbeePermitJoinUpdate(void) {
// 1.b. `ZbStatus Room` - Show single device shortaddr and name `{"ZbStatus1":[{"Device":"0x868E","Name":"Room"}]}`
// 2. `ZbStatus2 Room` - Show detailed information of device `{"ZbStatus2":[{"Device":"0x868E","Name":"Room","IEEEAddr":"0x90FD9FFFFE03B051","ModelId":"TRADFRI bulb E27 WS opal 980lm","Manufacturer":"IKEA of Sweden","Endpoints":[1,242],"Config":["L01.2","O01"]}]}`
void CmndZbStatus(void) {
- if (ZigbeeSerial) {
- if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; }
- String dump;
+ TrimSpace(XdrvMailbox.data);
+ String dump;
- if (0 == XdrvMailbox.index) { // Case 0
- dump = zigbee_devices.dumpCoordinator();
+ if (0 == XdrvMailbox.index) { // Case 0
+ dump = zigbee_devices.dumpCoordinator();
+ } else {
+ Z_Device & device = zigbee_devices.parseDeviceFromName(XdrvMailbox.data, nullptr, nullptr, XdrvMailbox.payload);
+ if (XdrvMailbox.data_len > 0) {
+ if (!device.valid()) { ResponseCmndChar_P(PSTR(D_ZIGBEE_UNKNOWN_DEVICE)); return; }
+ // case 1.b and 2.
+ dump = zigbee_devices.dumpDevice(XdrvMailbox.index, device);
} else {
- Z_Device & device = zigbee_devices.parseDeviceFromName(XdrvMailbox.data, nullptr, nullptr, XdrvMailbox.payload);
- if (XdrvMailbox.data_len > 0) {
- if (!device.valid()) { ResponseCmndChar_P(PSTR(D_ZIGBEE_UNKNOWN_DEVICE)); return; }
- // case 1.b and 2.
- dump = zigbee_devices.dumpDevice(XdrvMailbox.index, device);
- } else {
- if (XdrvMailbox.index >= 2) { ResponseCmndChar_P(PSTR(D_ZIGBEE_UNKNOWN_DEVICE)); return; }
- // case 1.a
- dump = zigbee_devices.dumpDevice(XdrvMailbox.index, device_unk);
- }
+ if (XdrvMailbox.index >= 2) { ResponseCmndChar_P(PSTR(D_ZIGBEE_UNKNOWN_DEVICE)); return; }
+ // case 1.a
+ dump = zigbee_devices.dumpDevice(XdrvMailbox.index, device_unk);
}
-
- Response_P(PSTR("{\"%s%d\":%s}"), XdrvMailbox.command, XdrvMailbox.index, dump.c_str());
}
+
+ Response_P(PSTR("{\"%s%d\":%s}"), XdrvMailbox.command, XdrvMailbox.index, dump.c_str());
}
//
// Command `ZbData`
//
void CmndZbData(void) {
- if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; }
TrimSpace(XdrvMailbox.data);
if (strlen(XdrvMailbox.data) == 0) {
@@ -1867,7 +1852,6 @@ void CmndZbConfig(void) {
uint64_t zb_precfgkey_h = Settings->zb_precfgkey_h;
int8_t zb_txradio_dbm = Settings->zb_txradio_dbm;
- // if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; }
TrimSpace(XdrvMailbox.data);
if (strlen(XdrvMailbox.data) > 0) {
JsonParser parser(XdrvMailbox.data);
@@ -2224,10 +2208,10 @@ void ZigbeeShow(bool json)
if (json) {
return;
#ifdef USE_WEBSERVER
- } else {
+ } else {
UnishoxStrings msg(ZB_WEB);
uint32_t zigbee_num = zigbee_devices.devicesSize();
- if (zigbee_num > 0) {
+ if ((zigbee_num > 0) && (!zigbee.init_phase)) { // don't displays devices on UI if still in initialization phase
if (zigbee_num > 255) { zigbee_num = 255; }
WSContentSend_P(msg[ZB_WEB_CSS], WebColor(COL_TEXT));
@@ -2485,6 +2469,9 @@ bool Xdrv23(uint32_t function) {
if (TasmotaGlobal.gpio_optiona.enable_ccloader) { return false; }
bool result = false;
+ if (!zigbee.active && (FUNC_PRE_INIT == function)) {
+ ZigbeeInit();
+ }
if (zigbee.active) {
switch (function) {
@@ -2521,9 +2508,6 @@ bool Xdrv23(uint32_t function) {
WebServer_on(PSTR("/zbr"), ZigbeeMapRefresh, HTTP_GET); // add web handler for Zigbee map refresh
break;
#endif // USE_WEBSERVER
- case FUNC_PRE_INIT:
- ZigbeeInit();
- break;
case FUNC_COMMAND:
result = DecodeCommand(kZbCommands, ZigbeeCommand, kZbSynonyms);
break;
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_27_esp32_shutter.ino b/tasmota/tasmota_xdrv_driver/xdrv_27_esp32_shutter.ino
index 283be9951..2a028bb97 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_27_esp32_shutter.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_27_esp32_shutter.ino
@@ -1868,12 +1868,10 @@ void CmndShutterPosition(void)
}
int8_t target_pos_percent = (XdrvMailbox.payload < 0) ? (XdrvMailbox.payload == -99 ? ShutterRealToPercentPosition(Shutter[index].real_position, index) : 0) : ((XdrvMailbox.payload > 100) ? 100 : XdrvMailbox.payload);
- target_pos_percent = ((ShutterSettings.shutter_options[index] & 1) && ((SRC_MQTT != TasmotaGlobal.last_source) // 1
- && (SRC_SERIAL != TasmotaGlobal.last_source) // 6
- && (SRC_WEBGUI != TasmotaGlobal.last_source) // 7
- && (SRC_WEBCOMMAND != TasmotaGlobal.last_source) // 8
- )) ? 100 - target_pos_percent : target_pos_percent;
-
+ target_pos_percent = ((ShutterSettings.shutter_options[index] & 1) && ( (SRC_SERIAL != TasmotaGlobal.last_source) // 6
+ && (SRC_WEBGUI != TasmotaGlobal.last_source) // 7
+ && (SRC_WEBCOMMAND != TasmotaGlobal.last_source) // 8
+ )) ? 100 - target_pos_percent : target_pos_percent;
// if position is either 0 or 100 reset the tilt to avoid tilt moving at the end
if (target_pos_percent == 0 && ShutterRealToPercentPosition(Shutter[index].real_position, index) > 0 ) {Shutter[index].tilt_target_pos = Shutter[index].tilt_config[4];}
if (target_pos_percent == 100 && ShutterRealToPercentPosition(Shutter[index].real_position, index) < 100) {Shutter[index].tilt_target_pos = Shutter[index].tilt_config[3];}
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_27_shutter.ino b/tasmota/tasmota_xdrv_driver/xdrv_27_shutter.ino
index db1f622fb..776f08a74 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_27_shutter.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_27_shutter.ino
@@ -1332,11 +1332,10 @@ void CmndShutterPosition(void)
}
int8_t target_pos_percent = (XdrvMailbox.payload < 0) ? (XdrvMailbox.payload == -99 ? ShutterRealToPercentPosition(Shutter[index].real_position, index) : 0) : ((XdrvMailbox.payload > 100) ? 100 : XdrvMailbox.payload);
- target_pos_percent = ((Settings->shutter_options[index] & 1) && ((SRC_MQTT != TasmotaGlobal.last_source)
- && (SRC_SERIAL != TasmotaGlobal.last_source)
- && (SRC_WEBGUI != TasmotaGlobal.last_source)
- && (SRC_WEBCOMMAND != TasmotaGlobal.last_source)
- )) ? 100 - target_pos_percent : target_pos_percent;
+ target_pos_percent = ((Settings->shutter_options[index] & 1) && ( (SRC_SERIAL != TasmotaGlobal.last_source)
+ && (SRC_WEBGUI != TasmotaGlobal.last_source)
+ && (SRC_WEBCOMMAND != TasmotaGlobal.last_source)
+ )) ? 100 - target_pos_percent : target_pos_percent;
// if position is either 0 or 100 reset the tilt to avoid tilt moving at the end
if (target_pos_percent == 0 && ShutterRealToPercentPosition(Shutter[index].real_position, index) > 0 ) {Shutter[index].tilt_target_pos = Shutter[index].tilt_config[4];}
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_3_lib_idf51.ino b/tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_3_lib_idf51.ino
index 65466f716..f77bbdfb8 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_3_lib_idf51.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_3_lib_idf51.ino
@@ -105,7 +105,7 @@ public:
void setSlotConfig(i2s_port_t i2s_port, uint8_t tx_slot_config,
uint8_t tx_slot_mask, uint8_t rx_slot_mask) {
- _i2s_port = i2s_port;
+ // _i2s_port = i2s_port;
_tx_slot_config = tx_slot_config;
}
void setRxFreq(uint16_t freq) { _rx_freq = freq; }
@@ -323,14 +323,9 @@ bool TasmotaI2S::beginTx(void) {
} else
#endif // SOC_DAC_SUPPORTED
{
- uint8_t zero_buffer[240] = {0};
- size_t sz;
- for(int i = 0;i < 6;i++){
- i2s_channel_preload_data(_tx_handle, zero_buffer, sizeof(zero_buffer), &sz); // preload DMA buffer with silence
- }
err = i2s_channel_enable(_tx_handle);
}
- AddLog(LOG_LEVEL_INFO, "I2S: Tx i2s_channel_enable err=0x%04X", err);
+ AddLog(LOG_LEVEL_DEBUG, "I2S: Tx i2s_channel_enable err=0x%04X", err);
if (err != ERR_OK){
return false;
}
@@ -349,6 +344,11 @@ bool TasmotaI2S::stopTx() {
dac_task_stop();
err = dac_continuous_disable((dac_continuous_handle_t) _tx_handle);
} else {
+ uint8_t zero_buffer[240] = {0};
+ size_t sz;
+ for(int i = 0;i < 6;i++){
+ i2s_channel_write(_tx_handle, zero_buffer, sizeof(zero_buffer), &sz, 0); // fill DMA buffer with silence
+ }
err = i2s_channel_disable(_tx_handle);
}
AddLog(LOG_LEVEL_DEBUG, "I2S: stopTx i2s_channel_disable err=0x%04X", err);
@@ -364,7 +364,7 @@ bool TasmotaI2S::stopTx() {
AddLog(LOG_LEVEL_DEBUG, "I2S: stopTx i2s_del_channel err=0x%04X", err);
_tx_handle = nullptr;
}
- AddLog(LOG_LEVEL_INFO, "I2S: stop: I2S channel disabled");
+ AddLog(LOG_LEVEL_DEBUG, "I2S: stop: I2S channel disabled");
}
return true;
}
@@ -380,7 +380,7 @@ void TasmotaI2S::flush()
delay(1);
}
}
- AddLog(LOG_LEVEL_INFO, "I2S: flush DMA TX buffer");
+ AddLog(LOG_LEVEL_DEBUG, "I2S: flush DMA TX buffer");
}
bool TasmotaI2S::delTxHandle(void) {
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_audio_idf51.ino b/tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_audio_idf51.ino
index 7b0545856..cd8dccd85 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_audio_idf51.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_audio_idf51.ino
@@ -179,6 +179,10 @@ void (* const I2SAudio_Command[])(void) PROGMEM = {
\*********************************************************************************************/
void CmndI2SConfig(void) {
+ if(!audio_i2s.Settings){
+ ResponseCmndChar_P(PSTR("no valid settings"));
+ return;
+ }
tI2SSettings * cfg = audio_i2s.Settings;
// if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; }
@@ -718,8 +722,8 @@ void I2sInit(void) {
audio_i2s.Settings->tx.slot_mask, audio_i2s.Settings->rx.slot_mask);
if (tx) {
i2s->setTxMode(audio_i2s.Settings->tx.mode);
- i2s->setTxChannels(audio_i2s.Settings->tx.channels);
- i2s->setRate(audio_i2s.Settings->tx.sample_rate);
+ // i2s->setTxChannels(audio_i2s.Settings->tx.channels);
+ // i2s->setRate(audio_i2s.Settings->tx.sample_rate);
}
if (rx) {
i2s->setRxMode(audio_i2s.Settings->rx.mode);
@@ -786,20 +790,7 @@ void I2sInit(void) {
//
// Returns `I2S_OK` if ok to send to output or error code
int32_t I2SPrepareTx(void) {
-
- if(audio_i2s_mp3.task_running){
- audio_i2s_mp3.task_running = false;
- while(!audio_i2s_mp3.task_has_ended){
- delay(1);
- }
- }
-
- if (audio_i2s_mp3.mic_task_handle) {
- audio_i2s_mp3.mic_stop = 1;
- while (audio_i2s_mp3.mic_stop) {
- delay(1);
- }
- }
+ I2sStopPlaying();
AddLog(LOG_LEVEL_DEBUG, "I2S: I2SPrepareTx out=%p", audio_i2s.out);
if (!audio_i2s.out) { return I2S_ERR_OUTPUT_NOT_CONFIGURED; }
@@ -835,13 +826,12 @@ void I2sMp3Task(void *arg) {
audio_i2s_mp3.task_running = true;
while (audio_i2s_mp3.mp3->isRunning() && audio_i2s_mp3.task_running) {
if (!audio_i2s_mp3.mp3->loop()) {
- audio_i2s_mp3.task_running == false;
+ audio_i2s_mp3.task_running = false;
}
vTaskDelay(pdMS_TO_TICKS(1));
}
audio_i2s.out->flush();
audio_i2s_mp3.mp3->stop();
- I2sStopPlaying();
mp3_delete();
audio_i2s_mp3.mp3_task_handle = nullptr;
audio_i2s_mp3.task_has_ended = true;
@@ -853,8 +843,7 @@ void I2sStatusCallback(void *cbData, int code, const char *string) {
const char *ptr = reinterpret_cast(cbData);
(void) code;
(void) ptr;
- //strncpy_P(status, string, sizeof(status)-1);
- //status[sizeof(status)-1] = 0;
+ AddLog(LOG_LEVEL_DEBUG, "I2S: -> %s", string);
}
#ifdef USE_I2S_MP3
@@ -870,7 +859,7 @@ void I2sMp3WrTask(void *arg){
}
}
audio_i2s.out->flush();
- I2sStopPlaying();
+ I2sWebRadioStopPlaying();
audio_i2s_mp3.mp3_task_handle = nullptr;
audio_i2s_mp3.task_has_ended = true;
vTaskDelete(NULL);
@@ -879,11 +868,23 @@ void I2sMp3WrTask(void *arg){
#endif // USE_I2S_MP3
void I2sStopPlaying() {
-
-#ifdef USE_I2S_WEBRADIO
- I2sWebRadioStopPlaying();
-#endif
I2SAudioPower(false);
+
+ if(audio_i2s_mp3.task_running){
+ audio_i2s_mp3.task_running = false;
+ while(audio_i2s_mp3.task_has_ended == false){
+ delay(10);
+ }
+ while(audio_i2s_mp3.mp3){
+ delay(10);
+ }
+ }
+ if (audio_i2s_mp3.mic_task_handle) {
+ audio_i2s_mp3.mic_stop = 1;
+ while (audio_i2s_mp3.mic_stop) {
+ delay(10);
+ }
+ }
}
#ifdef USE_I2S_MP3
@@ -891,9 +892,9 @@ void I2sStopPlaying() {
//
// Returns I2S_error_t
int32_t I2SPlayMp3(const char *path) {
- int32_t i2s_err = I2S_OK;
- if ((i2s_err = I2SPrepareTx()) != I2S_OK) { return i2s_err; }
- if (audio_i2s_mp3.decoder || audio_i2s_mp3.mp3) return I2S_ERR_DECODER_IN_USE;
+ int32_t i2s_err = I2SPrepareTx();
+ if ((i2s_err) != I2S_OK) { return i2s_err; }
+ if (audio_i2s_mp3.mp3) return I2S_ERR_DECODER_IN_USE;
// check if the filename starts with '/', if not add it
char fname[64];
@@ -926,13 +927,14 @@ void mp3_delete(void) {
delete audio_i2s_mp3.file;
delete audio_i2s_mp3.id3;
delete audio_i2s_mp3.mp3;
- audio_i2s_mp3.mp3=nullptr;
+ audio_i2s_mp3.mp3 = nullptr;
- if (audio_i2s_mp3.decoder) {
- audio_i2s_mp3.decoder->stop();
- delete audio_i2s_mp3.decoder;
- audio_i2s_mp3.decoder = NULL;
- }
+ // if (audio_i2s_mp3.decoder) {
+ // audio_i2s_mp3.decoder->stop();
+ // delete audio_i2s_mp3.decoder;
+ // audio_i2s_mp3.decoder = nullptr;
+ // AddLog(LOG_LEVEL_DEBUG, "I2S: audio_i2s_mp3.decoder = nullptr");
+ // }
}
#endif // USE_I2S_MP3
@@ -974,16 +976,12 @@ void CmndI2SStop(void) {
ResponseCmndChar("I2S output not configured");
return;
}
- I2sStopPlaying();
+ audio_i2s.out->setGain(0);
ResponseCmndDone();
}
#ifdef USE_I2S_MP3
void CmndI2SPlay(void) {
- if (I2SPrepareTx()) {
- ResponseCmndChar("I2S output not configured");
- return;
- }
if (XdrvMailbox.data_len > 0) {
int32_t err = I2SPlayMp3(XdrvMailbox.data);
// display return message
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_42_7_i2s_webradio_idf51.ino b/tasmota/tasmota_xdrv_driver/xdrv_42_7_i2s_webradio_idf51.ino
index 1f0a8e7e4..c88c14514 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_42_7_i2s_webradio_idf51.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_42_7_i2s_webradio_idf51.ino
@@ -75,11 +75,18 @@ void Webradio(const char *url) {
I2sWebRadioStopPlaying();
return;
}
-
+ AddLog(LOG_LEVEL_INFO, "I2S: did connect to %s",url);
+
I2SAudioPower(true);
Audio_webradio.buff = new AudioFileSourceBuffer(Audio_webradio.ifile, Audio_webradio.preallocateBuffer, preallocateBufferSize);
+ if(Audio_webradio.buff == nullptr){
+ return;
+ }
Audio_webradio.buff->RegisterStatusCB(I2sStatusCallback, NULL);
audio_i2s_mp3.decoder = new AudioGeneratorMP3(Audio_webradio.preallocateCodec, preallocateCodecSize);
+ if(audio_i2s_mp3.decoder == nullptr){
+ return;
+ }
audio_i2s_mp3.decoder->RegisterStatusCB(I2sStatusCallback, NULL);
audio_i2s_mp3.decoder->begin(Audio_webradio.buff, audio_i2s.out);
if (!audio_i2s_mp3.decoder->isRunning()) {
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_50_filesystem.ino b/tasmota/tasmota_xdrv_driver/xdrv_50_filesystem.ino
index c7eb25f68..5c27384fe 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_50_filesystem.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_50_filesystem.ino
@@ -64,6 +64,9 @@ ftp start stop ftp server: 0 = OFF, 1 = SDC, 2 = FlashFile
#define UFS_TFAT 2
#define UFS_TLFS 3
+#define UFS_SDC 0
+#define UFS_SDMMC 1
+
/*
// In tasmota.ino
#ifdef ESP8266
@@ -97,6 +100,8 @@ uint8_t ufs_dir;
// 0 = None, 1 = SD, 2 = ffat, 3 = littlefs
uint8_t ufs_type;
uint8_t ffs_type;
+// sd type 0 = SD spi interface, 1 = MMC interface
+uint8_t sd_type;
struct {
char run_file[48];
@@ -206,6 +211,7 @@ void UfsCheckSDCardInit(void) {
#endif // ESP32
ufs_type = UFS_TSDC;
+ sd_type = UFS_SDC;
dfsp = ufsp;
if (ffsp) {ufs_dir = 1;}
// make sd card the global filesystem
@@ -239,6 +245,7 @@ void UfsCheckSDCardInit(void) {
ufsp = &SD_MMC;
ufs_type = UFS_TSDC;
+ sd_type = UFS_SDMMC;
dfsp = ufsp;
if (ffsp) {ufs_dir = 1;}
// make sd card the global filesystem
@@ -274,11 +281,29 @@ uint32_t UfsInfo(uint32_t sel, uint32_t type) {
}
#endif // ESP8266
#ifdef ESP32
+#ifdef SOC_SDMMC_HOST_SUPPORTED
+ if (sd_type == UFS_SDC) {
+ if (sel == 0) {
+ result = SD.totalBytes();
+ } else {
+ result = (SD.totalBytes() - SD.usedBytes());
+ }
+ } else if (sd_type == UFS_SDMMC) {
+ if (sel == 0) {
+ result = SD_MMC.totalBytes();
+ } else {
+ result = (SD_MMC.totalBytes() - SD_MMC.usedBytes());
+ }
+ } else {
+ result = 0;
+ }
+#else
if (sel == 0) {
result = SD.totalBytes();
} else {
result = (SD.totalBytes() - SD.usedBytes());
}
+#endif // SOC_SDMMC_HOST_SUPPORTED
#endif // ESP32
#endif // USE_SDCARD
break;
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_energy.ino
index 6622f76f1..fcc55f795 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_energy.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_energy.ino
@@ -38,106 +38,135 @@ extern "C" {
be_return_nil(vm);
}
-
-
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Winvalid-offsetof" // avoid warnings since we're using offsetof() in a risky way
+ enum {
+ PHASES_ARRAY_FLOAT = 1,
+ PHASES_ARRAY_INT32,
+ PHASES_ARRAY_UINT8,
+ PHASES_ARRAY_UINT16,
+ };
+
static const char * be_ctypes_instance_mappings[] = {
+ "energy._phases_float",
+ "energy._phases_int32",
+ "energy._phases_uint8",
+ "energy._phases_uint16",
NULL
};
extern "C" const be_ctypes_structure_t be_energy_struct = {
sizeof(tEnergy), /* size in bytes */
- 88, /* number of elements */
+ 68, /* number of elements */
be_ctypes_instance_mappings,
- (const be_ctypes_structure_item_t[88]) {
+ (const be_ctypes_structure_item_t[68]) {
{ "active_power", offsetof(tEnergy, active_power[0]), 0, 0, ctypes_float, 0 },
- { "active_power_2", offsetof(tEnergy, active_power[1]), 0, 0, ctypes_float, 0 },
- { "active_power_3", offsetof(tEnergy, active_power[2]), 0, 0, ctypes_float, 0 },
+ // { "active_power_2", offsetof(tEnergy, active_power[1]), 0, 0, ctypes_float, 0 },
+ // { "active_power_3", offsetof(tEnergy, active_power[2]), 0, 0, ctypes_float, 0 },
+ { "active_power_phases", offsetof(tEnergy, active_power[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT },
{ "apparent_power", offsetof(tEnergy, apparent_power[0]), 0, 0, ctypes_float, 0 },
- { "apparent_power_2", offsetof(tEnergy, apparent_power[1]), 0, 0, ctypes_float, 0 },
- { "apparent_power_3", offsetof(tEnergy, apparent_power[2]), 0, 0, ctypes_float, 0 },
+ // { "apparent_power_2", offsetof(tEnergy, apparent_power[1]), 0, 0, ctypes_float, 0 },
+ // { "apparent_power_3", offsetof(tEnergy, apparent_power[2]), 0, 0, ctypes_float, 0 },
+ { "apparent_power_phases", offsetof(tEnergy, apparent_power[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT },
{ "command_code", offsetof(tEnergy, command_code), 0, 0, ctypes_u8, 0 },
{ "current", offsetof(tEnergy, current[0]), 0, 0, ctypes_float, 0 },
- { "current_2", offsetof(tEnergy, current[1]), 0, 0, ctypes_float, 0 },
- { "current_3", offsetof(tEnergy, current[2]), 0, 0, ctypes_float, 0 },
+ // { "current_2", offsetof(tEnergy, current[1]), 0, 0, ctypes_float, 0 },
+ // { "current_3", offsetof(tEnergy, current[2]), 0, 0, ctypes_float, 0 },
{ "current_available", offsetof(tEnergy, current_available), 0, 0, ctypes_u8, 0 },
+ { "current_phases", offsetof(tEnergy, current[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT },
{ "daily", offsetof(tEnergy, daily_kWh[0]), 0, 0, ctypes_float, 0 },
- { "daily_2", offsetof(tEnergy, daily_kWh[1]), 0, 0, ctypes_float, 0 },
- { "daily_3", offsetof(tEnergy, daily_kWh[2]), 0, 0, ctypes_float, 0 },
+ // { "daily_2", offsetof(tEnergy, daily_kWh[1]), 0, 0, ctypes_float, 0 },
+ // { "daily_3", offsetof(tEnergy, daily_kWh[2]), 0, 0, ctypes_float, 0 },
+ { "daily_phases", offsetof(tEnergy, daily_kWh[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT },
{ "daily_sum", offsetof(tEnergy, daily_sum), 0, 0, ctypes_float, 0 },
{ "daily_sum_export_balanced", offsetof(tEnergy, daily_sum_export_balanced), 0, 0, ctypes_float, 0 },
{ "daily_sum_import_balanced", offsetof(tEnergy, daily_sum_import_balanced), 0, 0, ctypes_float, 0 },
{ "data_valid", offsetof(tEnergy, data_valid[0]), 0, 0, ctypes_u8, 0 },
- { "data_valid_2", offsetof(tEnergy, data_valid[1]), 0, 0, ctypes_u8, 0 },
- { "data_valid_3", offsetof(tEnergy, data_valid[2]), 0, 0, ctypes_u8, 0 },
+ // { "data_valid_2", offsetof(tEnergy, data_valid[1]), 0, 0, ctypes_u8, 0 },
+ // { "data_valid_3", offsetof(tEnergy, data_valid[2]), 0, 0, ctypes_u8, 0 },
+ { "data_valid_phases", offsetof(tEnergy, data_valid[0]), 0, 0, ctypes_addr, PHASES_ARRAY_UINT8 },
{ "energy_active_export", offsetof(tEnergy, local_energy_active_export), 0, 0, ctypes_u8, 0 },
{ "export_active", offsetof(tEnergy, export_active[0]), 0, 0, ctypes_float, 0 },
- { "export_active_2", offsetof(tEnergy, export_active[1]), 0, 0, ctypes_float, 0 },
- { "export_active_3", offsetof(tEnergy, export_active[2]), 0, 0, ctypes_float, 0 },
+ // { "export_active_2", offsetof(tEnergy, export_active[1]), 0, 0, ctypes_float, 0 },
+ // { "export_active_3", offsetof(tEnergy, export_active[2]), 0, 0, ctypes_float, 0 },
+ { "export_active_phases", offsetof(tEnergy, export_active[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT },
{ "fifth_second", offsetof(tEnergy, fifth_second), 0, 0, ctypes_u8, 0 },
{ "frequency", offsetof(tEnergy, frequency[0]), 0, 0, ctypes_float, 0 },
- { "frequency_2", offsetof(tEnergy, frequency[1]), 0, 0, ctypes_float, 0 },
- { "frequency_3", offsetof(tEnergy, frequency[2]), 0, 0, ctypes_float, 0 },
+ // { "frequency_2", offsetof(tEnergy, frequency[1]), 0, 0, ctypes_float, 0 },
+ // { "frequency_3", offsetof(tEnergy, frequency[2]), 0, 0, ctypes_float, 0 },
{ "frequency_common", offsetof(tEnergy, frequency_common), 0, 0, ctypes_u8, 0 },
+ { "frequency_phases", offsetof(tEnergy, frequency[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT },
{ "import_active", offsetof(tEnergy, import_active[0]), 0, 0, ctypes_float, 0 },
- { "import_active_2", offsetof(tEnergy, import_active[1]), 0, 0, ctypes_float, 0 },
- { "import_active_3", offsetof(tEnergy, import_active[2]), 0, 0, ctypes_float, 0 },
- { "max_current_flag", offsetof(tEnergy, max_current_flag), 0, 0, ctypes_u8, 0 },
- { "max_energy_state", offsetof(tEnergy, max_energy_state), 0, 0, ctypes_u8, 0 },
- { "max_power_flag", offsetof(tEnergy, max_power_flag), 0, 0, ctypes_u8, 0 },
- { "max_voltage_flag", offsetof(tEnergy, max_voltage_flag), 0, 0, ctypes_u8, 0 },
- { "min_current_flag", offsetof(tEnergy, min_current_flag), 0, 0, ctypes_u8, 0 },
- { "min_power_flag", offsetof(tEnergy, min_power_flag), 0, 0, ctypes_u8, 0 },
- { "min_voltage_flag", offsetof(tEnergy, min_voltage_flag), 0, 0, ctypes_u8, 0 },
- { "mplh_counter", offsetof(tEnergy, mplh_counter), 0, 0, ctypes_u16, 0 },
- { "mplr_counter", offsetof(tEnergy, mplr_counter), 0, 0, ctypes_u8, 0 },
- { "mplw_counter", offsetof(tEnergy, mplw_counter), 0, 0, ctypes_u16, 0 },
+ // { "import_active_2", offsetof(tEnergy, import_active[1]), 0, 0, ctypes_float, 0 },
+ // { "import_active_3", offsetof(tEnergy, import_active[2]), 0, 0, ctypes_float, 0 },
+ { "import_active_phases", offsetof(tEnergy, import_active[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT },
+ { "max_current_flag", offsetof(tEnergy, max_current_flag[0]), 0, 0, ctypes_u8, 0 },
+ { "max_energy_state", offsetof(tEnergy, max_energy_state[0]), 0, 0, ctypes_u8, 0 },
+ { "max_power_flag", offsetof(tEnergy, max_power_flag[0]), 0, 0, ctypes_u8, 0 },
+ { "max_voltage_flag", offsetof(tEnergy, max_voltage_flag[0]), 0, 0, ctypes_u8, 0 },
+ { "min_current_flag", offsetof(tEnergy, min_current_flag[0]), 0, 0, ctypes_u8, 0 },
+ { "min_power_flag", offsetof(tEnergy, min_power_flag[0]), 0, 0, ctypes_u8, 0 },
+ { "min_voltage_flag", offsetof(tEnergy, min_voltage_flag[0]), 0, 0, ctypes_u8, 0 },
+ { "mpl_hold_counter", offsetof(tEnergy, mpl_hold_counter[0]), 0, 0, ctypes_u16, 0 },
+ { "mpl_retry_counter", offsetof(tEnergy, mpl_retry_counter[0]), 0, 0, ctypes_u8, 0 },
+ { "mpl_window_counter", offsetof(tEnergy, mpl_window_counter[0]), 0, 0, ctypes_u16, 0 },
{ "period", offsetof(tEnergy, period_kWh[0]), 0, 0, ctypes_float, 0 },
- { "period_2", offsetof(tEnergy, period_kWh[1]), 0, 0, ctypes_float, 0 },
- { "period_3", offsetof(tEnergy, period_kWh[2]), 0, 0, ctypes_float, 0 },
+ // { "period_2", offsetof(tEnergy, period_kWh[1]), 0, 0, ctypes_float, 0 },
+ // { "period_3", offsetof(tEnergy, period_kWh[2]), 0, 0, ctypes_float, 0 },
+ { "period_phases", offsetof(tEnergy, period_kWh[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT },
{ "phase_count", offsetof(tEnergy, phase_count), 0, 0, ctypes_u8, 0 },
{ "power_factor", offsetof(tEnergy, power_factor[0]), 0, 0, ctypes_float, 0 },
- { "power_factor_2", offsetof(tEnergy, power_factor[1]), 0, 0, ctypes_float, 0 },
- { "power_factor_3", offsetof(tEnergy, power_factor[2]), 0, 0, ctypes_float, 0 },
+ // { "power_factor_2", offsetof(tEnergy, power_factor[1]), 0, 0, ctypes_float, 0 },
+ // { "power_factor_3", offsetof(tEnergy, power_factor[2]), 0, 0, ctypes_float, 0 },
+ { "power_factor_phases", offsetof(tEnergy, power_factor[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT },
{ "power_history_0", offsetof(tEnergy, power_history[0][0]), 0, 0, ctypes_u16, 0 },
- { "power_history_0_2", offsetof(tEnergy, power_history[0][1]), 0, 0, ctypes_u16, 0 },
- { "power_history_0_3", offsetof(tEnergy, power_history[0][2]), 0, 0, ctypes_u16, 0 },
+ // { "power_history_0_2", offsetof(tEnergy, power_history[0][1]), 0, 0, ctypes_u16, 0 },
+ // { "power_history_0_3", offsetof(tEnergy, power_history[0][2]), 0, 0, ctypes_u16, 0 },
+ { "power_history_0_phases", offsetof(tEnergy, power_history[0][0]), 0, 0, ctypes_addr, PHASES_ARRAY_UINT16 },
{ "power_history_1", offsetof(tEnergy, power_history[1][0]), 0, 0, ctypes_u16, 0 },
- { "power_history_1_2", offsetof(tEnergy, power_history[1][1]), 0, 0, ctypes_u16, 0 },
- { "power_history_1_3", offsetof(tEnergy, power_history[1][2]), 0, 0, ctypes_u16, 0 },
+ // { "power_history_1_2", offsetof(tEnergy, power_history[1][1]), 0, 0, ctypes_u16, 0 },
+ // { "power_history_1_3", offsetof(tEnergy, power_history[1][2]), 0, 0, ctypes_u16, 0 },
+ { "power_history_1_phases", offsetof(tEnergy, power_history[1][0]), 0, 0, ctypes_addr, PHASES_ARRAY_UINT16 },
{ "power_history_2", offsetof(tEnergy, power_history[2][0]), 0, 0, ctypes_u16, 0 },
- { "power_history_2_2", offsetof(tEnergy, power_history[2][1]), 0, 0, ctypes_u16, 0 },
- { "power_history_2_3", offsetof(tEnergy, power_history[2][2]), 0, 0, ctypes_u16, 0 },
+ // { "power_history_2_2", offsetof(tEnergy, power_history[2][1]), 0, 0, ctypes_u16, 0 },
+ // { "power_history_2_3", offsetof(tEnergy, power_history[2][2]), 0, 0, ctypes_u16, 0 },
+ { "power_history_2_phases", offsetof(tEnergy, power_history[2][0]), 0, 0, ctypes_addr, PHASES_ARRAY_UINT16 },
{ "power_on", offsetof(tEnergy, power_on), 0, 0, ctypes_u8, 0 },
{ "power_steady_counter", offsetof(tEnergy, power_steady_counter), 0, 0, ctypes_u8, 0 },
{ "reactive_power", offsetof(tEnergy, reactive_power[0]), 0, 0, ctypes_float, 0 },
- { "reactive_power_2", offsetof(tEnergy, reactive_power[1]), 0, 0, ctypes_float, 0 },
- { "reactive_power_3", offsetof(tEnergy, reactive_power[2]), 0, 0, ctypes_float, 0 },
+ // { "reactive_power_2", offsetof(tEnergy, reactive_power[1]), 0, 0, ctypes_float, 0 },
+ // { "reactive_power_3", offsetof(tEnergy, reactive_power[2]), 0, 0, ctypes_float, 0 },
+ { "reactive_power_phases", offsetof(tEnergy, reactive_power[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT },
{ "start_energy", offsetof(tEnergy, start_energy[0]), 0, 0, ctypes_float, 0 },
- { "start_energy_2", offsetof(tEnergy, start_energy[1]), 0, 0, ctypes_float, 0 },
- { "start_energy_3", offsetof(tEnergy, start_energy[2]), 0, 0, ctypes_float, 0 },
- { "today_delta_kwh", offsetof(tEnergy, kWhtoday_delta[0]), 0, 0, ctypes_u32, 0 },
- { "today_delta_kwh_2", offsetof(tEnergy, kWhtoday_delta[1]), 0, 0, ctypes_u32, 0 },
- { "today_delta_kwh_3", offsetof(tEnergy, kWhtoday_delta[2]), 0, 0, ctypes_u32, 0 },
- { "today_kwh", offsetof(tEnergy, kWhtoday[0]), 0, 0, ctypes_u32, 0 },
- { "today_kwh_2", offsetof(tEnergy, kWhtoday[1]), 0, 0, ctypes_u32, 0 },
- { "today_kwh_3", offsetof(tEnergy, kWhtoday[2]), 0, 0, ctypes_u32, 0 },
+ // { "start_energy_2", offsetof(tEnergy, start_energy[1]), 0, 0, ctypes_float, 0 },
+ // { "start_energy_3", offsetof(tEnergy, start_energy[2]), 0, 0, ctypes_float, 0 },
+ { "start_energy_phases", offsetof(tEnergy, start_energy[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT },
+ { "today_delta_kwh", offsetof(tEnergy, kWhtoday_delta[0]), 0, 0, ctypes_i32, 0 },
+ // { "today_delta_kwh_2", offsetof(tEnergy, kWhtoday_delta[1]), 0, 0, ctypes_i32, 0 },
+ // { "today_delta_kwh_3", offsetof(tEnergy, kWhtoday_delta[2]), 0, 0, ctypes_i32, 0 },
+ { "today_delta_kwh_phases", offsetof(tEnergy, kWhtoday_delta[0]), 0, 0, ctypes_addr, PHASES_ARRAY_UINT8 },
+ { "today_kwh", offsetof(tEnergy, kWhtoday[0]), 0, 0, ctypes_i32, 0 },
+ // { "today_kwh_2", offsetof(tEnergy, kWhtoday[1]), 0, 0, ctypes_i32, 0 },
+ // { "today_kwh_3", offsetof(tEnergy, kWhtoday[2]), 0, 0, ctypes_i32, 0 },
+ { "today_kwh_phases", offsetof(tEnergy, kWhtoday[0]), 0, 0, ctypes_addr, PHASES_ARRAY_INT32 },
{ "today_offset_init_kwh", offsetof(tEnergy, kWhtoday_offset_init), 0, 0, ctypes_u8, 0 },
{ "today_offset_kwh", offsetof(tEnergy, energy_today_offset_kWh[0]), 0, 0, ctypes_float, 0 },
- { "today_offset_kwh_2", offsetof(tEnergy, energy_today_offset_kWh[1]), 0, 0, ctypes_float, 0 },
- { "today_offset_kwh_3", offsetof(tEnergy, energy_today_offset_kWh[2]), 0, 0, ctypes_float, 0 },
+ // { "today_offset_kwh_2", offsetof(tEnergy, energy_today_offset_kWh[1]), 0, 0, ctypes_float, 0 },
+ // { "today_offset_kwh_3", offsetof(tEnergy, energy_today_offset_kWh[2]), 0, 0, ctypes_float, 0 },
+ { "today_offset_kwh_phases", offsetof(tEnergy, energy_today_offset_kWh[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT },
{ "total", offsetof(tEnergy, total[0]), 0, 0, ctypes_float, 0 },
- { "total_2", offsetof(tEnergy, total[1]), 0, 0, ctypes_float, 0 },
- { "total_3", offsetof(tEnergy, total[2]), 0, 0, ctypes_float, 0 },
+ // { "total_2", offsetof(tEnergy, total[1]), 0, 0, ctypes_float, 0 },
+ // { "total_3", offsetof(tEnergy, total[2]), 0, 0, ctypes_float, 0 },
+ { "total_phases", offsetof(tEnergy, total[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT },
{ "total_sum", offsetof(tEnergy, total_sum), 0, 0, ctypes_float, 0 },
{ "type_dc", offsetof(tEnergy, type_dc), 0, 0, ctypes_u8, 0 },
{ "use_overtemp", offsetof(tEnergy, use_overtemp), 0, 0, ctypes_u8, 0 },
{ "voltage", offsetof(tEnergy, voltage[0]), 0, 0, ctypes_float, 0 },
- { "voltage_2", offsetof(tEnergy, voltage[1]), 0, 0, ctypes_float, 0 },
- { "voltage_3", offsetof(tEnergy, voltage[2]), 0, 0, ctypes_float, 0 },
+ // { "voltage_2", offsetof(tEnergy, voltage[1]), 0, 0, ctypes_float, 0 },
+ // { "voltage_3", offsetof(tEnergy, voltage[2]), 0, 0, ctypes_float, 0 },
{ "voltage_available", offsetof(tEnergy, voltage_available), 0, 0, ctypes_u8, 0 },
{ "voltage_common", offsetof(tEnergy, voltage_common), 0, 0, ctypes_u8, 0 },
+ { "voltage_phases", offsetof(tEnergy, voltage[0]), 0, 0, ctypes_addr, PHASES_ARRAY_FLOAT },
{ "yesterday_sum", offsetof(tEnergy, yesterday_sum), 0, 0, ctypes_float, 0 },
}};
// be_define_ctypes_class(energy_struct, &be_energy_struct, &be_class_ctypes_bytes, "energy_struct");
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_img.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_img.ino
new file mode 100644
index 000000000..c3f1bde3f
--- /dev/null
+++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_img.ino
@@ -0,0 +1,499 @@
+/*
+ xdrv_52_3_berry_img.ino - Berry scripting language, native functions
+
+ Copyright (C) 2024 Christian Baars & Stephan Hadinger, Berry language by Guan Wenliang https://github.com/Skiars/berry
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+*/
+
+
+#ifdef USE_BERRY
+
+#include
+
+#ifdef USE_BERRY_IMAGE
+
+#include "esp_camera.h"
+#include "JPEGDEC.h"
+
+/*********************************************************************************************\
+ * typedefs
+\*********************************************************************************************/
+
+typedef struct {
+ uint8_t * buf = nullptr;
+ size_t len = 0;
+ uint16_t width = 0;
+ uint16_t height = 0;
+ pixformat_t format = PIXFORMAT_JPEG;
+ JPEGDEC * jpeg = nullptr;
+} image_t;
+
+typedef struct {
+ float scale_X;
+ float shear_X;
+ float shear_Y;
+ float scale_Y;
+ uint16_t translation_X;
+ uint16_t translation_Y;
+ uint16_t width;
+ uint16_t height;
+} be_img_roi_descriptor_t;
+
+typedef struct {
+ uint16_t width;
+ uint16_t height;
+ const uint8_t *input;
+ uint8_t *output;
+ size_t output_len;
+} be_jpg_encoder_t;
+
+/*********************************************************************************************\
+ * helper functions
+\*********************************************************************************************/
+
+struct be_img_util {
+ static void clear(image_t *img){
+ if(img->buf){
+ free(img->buf);
+ img->buf = nullptr;
+ }
+ img->len = 0;
+ img->format = PIXFORMAT_JPEG;
+ img->width = 0;
+ img->height = 0;
+ }
+
+ static int getBytesPerPixel(pixformat_t f){
+ int bpp;
+ switch(f) {
+ case PIXFORMAT_GRAYSCALE:
+ bpp = 1;
+ break;
+ case PIXFORMAT_RGB565:
+ bpp = 2;
+ break;
+ default:
+ bpp = 3;
+ }
+ return bpp;
+ }
+
+ static bool from_jpg(image_t *img, uint8_t* buffer, size_t len) {
+ uint16_t width, height;
+ if(jpeg_size(buffer, len, &width, &height) != true){
+ return false;
+ }
+ pixformat_t format = PIXFORMAT_JPEG;
+ return from_buffer(img, buffer, len, width, height, format);
+ }
+
+ static bool from_buffer(image_t *img, uint8_t* buffer, size_t len, uint16_t w, uint16_t h, pixformat_t f) {
+ if(img->buf != nullptr) {
+ free(img->buf);
+ }
+ img->buf = (uint8_t *)heap_caps_malloc((len)+4, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT);
+ if(img->buf) {
+ memcpy(img->buf,buffer,len);
+ img->len = len;
+ img->format = f;
+ img->width = w;
+ img->height = h;
+ return true;
+ }
+ return false;
+ }
+
+ static void rgb888_to_grayscale_inplace(uint8_t * buffer, size_t buffer_len){
+ uint8_t r, g, b;
+ for (uint32_t cnt=0; cnt> 3) & 0x1f;
+ g = ((grn >> 2) & 0x3f) << 5;
+ r = ((red >> 3) & 0x1f) << 11;
+ temp_buf_16[j++] = (r | g | b);
+ }
+ }
+
+ static size_t _jpg_out_cb(void * arg, size_t index, const void* data, size_t len){
+ be_jpg_encoder_t *jpeg = (be_jpg_encoder_t *)arg;
+
+ memcpy(jpeg->output + index, data, len);
+ jpeg->output_len = index+len;
+ return len;
+ }
+
+ static int _rgb_write_dummy(JPEGDRAW* d)
+ {
+ // not used for now
+ return 1;
+ }
+
+ static bool jpeg_decode_one_image(uint8_t *input_buf, int len, uint8_t *output_buf, int type, image_t * img) {
+ img->jpeg = new JPEGDEC;
+ img->jpeg->openRAM(input_buf, len, _rgb_write_dummy);
+ img->jpeg->setPixelType(type);
+ img->jpeg->setFramebuffer(output_buf);
+ bool success = img->jpeg->decode(0,0,0);
+ img->jpeg->close();
+ delete img->jpeg;
+ return success;
+ }
+
+
+ // https://web.archive.org/web/20131016210645/http://www.64lines.com/jpeg-width-height , but shorter now by 48 bytes flash
+ static bool jpeg_size(uint8_t* buffer, size_t data_size, uint16_t *width, uint16_t *height) {
+ union{
+ uint8_t * data;
+ uint16_t * data16;
+ uint32_t * data32;
+ };
+ data = buffer;
+ if(data[data_size-2] != 0xff || data[data_size-1] != 0xd9){
+ return false; // quick check for correct termination
+ }
+ if(data32[0] == 0xE0FFD8FF) {
+ // Check for valid JPEG header (null terminated JFIF)
+ // if(data[i+2] == 'J' && data[i+3] == 'F' && data[i+4] == 'I' && data[i+5] == 'F' && data[i+6] == 0x00) {
+ if(data16[3] == 0x464a && data16[4] == 0x4649) {
+ //Retrieve the block length of the first block since the first block will not contain the size of file
+ int i = 20;
+ uint16_t block_length = 0;
+ while(i= data_size) {
+ return false;} //Check to protect against segmentation faults
+ if (data[i] != 0xFF) {
+ return false;}
+ if(data[i+1] == 0xC0 || data[i+1] == 0xC2) { //0xFFC0 or 0xFFC2 is the "Start of frame" marker which contains the file size
+ //The structure of the 0xFFC0 block is quite simple [0xFFC0][ushort length][uchar precision][ushort x][ushort y]
+ *height = data[i+5]*256 + data[i+6];
+ *width = data[i+7]*256 + data[i+8];
+ return true;
+ }
+ else
+ {
+ i+=2; //Skip the block marker
+ block_length = data[i] * 256 + data[i+1]; //Go to the next block
+ }
+ }
+ }
+ }
+ return false; //Not a valid SOI header
+ }
+};
+
+/*********************************************************************************************\
+ * Native functions mapped to Berry functions
+\*********************************************************************************************/
+
+extern "C" {
+
+ image_t* be_get_image_instance(struct bvm *vm);
+ image_t* be_get_image_instance(struct bvm *vm) {
+ be_getmember(vm, 1, ".p");
+ image_t * img = (image_t *) be_tocomptr(vm, -1);
+ be_pop(vm, 1);
+ if(!img){
+ be_raise(vm, "img_error", "no store instance");
+ }
+ return img;
+ }
+
+ int be_img_init(struct bvm *vm);
+ int be_img_init(struct bvm *vm) {
+ image_t *img = new image_t;
+ be_pushcomptr(vm, (void*)img);
+ be_setmember(vm, 1, ".p");
+ be_return_nil(vm);
+ }
+
+ int be_img_deinit(struct bvm *vm);
+ int be_img_deinit(struct bvm *vm) {
+ be_getmember(vm, 1, ".p");
+ image_t * img = (image_t *) be_tocomptr(vm, -1);
+ if(img){
+ if(img->buf != nullptr){
+ free(img->buf);
+ }
+ delete img;
+ be_pushcomptr(vm, (void*) NULL);
+ be_setmember(vm, 1, ".p");
+ }
+ be_return_nil(vm);
+ }
+
+ int be_img_from_jpg(struct bvm *vm);
+ int be_img_from_jpg(struct bvm *vm) {
+ int32_t argc = be_top(vm); // Get the number of arguments
+ if (argc > 1 && be_isbytes(vm, 2)){
+ size_t src_buf_len;
+ uint8_t* src_buf = (uint8_t*) be_tobytes(vm, 2, &src_buf_len);
+ int format = -1;
+ if(argc == 3 && be_isint(vm, 3)){
+ format = be_toint(vm, 3);
+ }
+ image_t * img = be_get_image_instance(vm);
+ if(format == -1){
+ if(be_img_util::from_jpg(img,src_buf,src_buf_len) == false){
+ be_raise(vm, "img_error", "could not store from jpg buffer");
+ } else {
+ be_return_nil(vm); // done
+ }
+ }
+ bool success = false;
+ const int bpp = be_img_util::getBytesPerPixel(pixformat_t(format));
+ uint16_t w,h;
+ if (be_img_util::jpeg_size(src_buf, src_buf_len, &w, &h) == false){
+ be_raise(vm, "img_error", "no compatible jpg buffer");
+ be_return_nil(vm); //do not destroy the old image
+ }
+ const size_t newSize = w * h * bpp;
+ if(newSize != img->len){
+ img->buf = (uint8_t*)heap_caps_realloc((void*)img->buf, newSize, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT);
+ if(!img->buf){
+ be_img_util::clear(img);
+ be_raise(vm, "img_error", "reallocation failed");
+ be_return_nil(vm);
+ }
+ }
+ switch(pixformat_t(format)) {
+ case PIXFORMAT_GRAYSCALE:
+ success = be_img_util::jpeg_decode_one_image(src_buf, src_buf_len, img->buf, EIGHT_BIT_GRAYSCALE, img);
+ break;
+ case PIXFORMAT_RGB565:
+ success = be_img_util::jpeg_decode_one_image(src_buf, src_buf_len, img->buf, RGB565_LITTLE_ENDIAN, img);
+ success = true;
+ break;
+ case PIXFORMAT_RGB888:
+ success = be_img_util::jpeg_decode_one_image(src_buf, src_buf_len, img->buf, RGB8888, img);
+ success = true;
+ break;
+ }
+ if(success){
+ img->len = newSize;
+ img->format = pixformat_t(format);
+ img->width = w;
+ img->height = h;
+ } else {
+ be_img_util::clear(img);
+ be_raise(vm, "img_error", "jpg decoding failed");
+ }
+ }
+ else{
+ be_raise(vm, "img_error", "wrong args for jpg buffer");
+ }
+ be_return(vm);
+ }
+
+ int be_img_from_buffer(struct bvm *vm); // (bytes(),width,height,format)
+ int be_img_from_buffer(struct bvm *vm) {
+ int32_t argc = be_top(vm); // Get the number of arguments
+ if (argc == 5 && be_isbytes(vm, 2) && be_isint(vm, 3) && be_isint(vm, 4) && be_isint(vm, 5)){
+ size_t src_buf_len;
+ uint8_t* src_buf = (uint8_t*) be_tobytes(vm, 2, &src_buf_len);
+ // be_pop(vm, 2);
+ image_t * img = be_get_image_instance(vm);
+ if(img){
+ if(img->buf != nullptr){
+ free(img->buf);
+ }
+ uint16_t width = be_toint(vm, 3);
+ uint16_t height = be_toint(vm, 4);
+ int format = be_toint(vm, 5);
+ if(be_img_util::from_buffer(img, src_buf, src_buf_len, width, height, (pixformat_t)format) == false){
+ be_raise(vm, "img_error", "could not store from byte buffer");
+ }
+ }
+ }
+ be_return(vm);
+ }
+
+ int be_img_get_buffer(struct bvm *vm); //(roi)
+ int be_img_get_buffer(struct bvm *vm) {
+ image_t * img = be_get_image_instance(vm);
+ be_img_roi_descriptor_t * dsc;
+
+ int32_t argc = be_top(vm); // Get the number of arguments
+ if (argc == 2 && be_isbytes(vm, 2)){
+ if(img->format == PIXFORMAT_JPEG){
+ be_raise(vm, "img_error", "JPEG not supported for ROI");
+ }
+ size_t dsc_len;
+ dsc = (be_img_roi_descriptor_t*) be_tobytes(vm, 2, &dsc_len);
+ if(dsc_len != sizeof(be_img_roi_descriptor_t)){
+ be_raise(vm, "img_error", "invalid ROI descriptor");
+ }
+ }
+ else{
+ be_pushbytes(vm, img->buf, img->len);
+ be_return(vm);
+ }
+
+ const int bpp = be_img_util::getBytesPerPixel(img->format);
+ const size_t roi_size = dsc->width * dsc->height * bpp;
+ uint8_t* roi_buf = (uint8_t*)malloc(roi_size);
+ if(roi_buf == nullptr) {
+ be_raise(vm, "img_error", "ROI buffer allocation failed");
+ }
+
+ /**
+ * Fills ROI using an affine matrix (https://en.wikipedia.org/wiki/Affine_transformation#Image_transformation)
+ * | scale_x shear_x translation_x |
+ * | shear_y scale_y translation_y |
+ * | 0 0 1 | - these are constants in this scope
+ */
+ uint32_t in_idx = 0;
+ for(uint16_t y = 0; y < dsc->height; y += 1) {
+ for(uint16_t x = 0; x < dsc->width; x += 1) {
+ int transformed_X = (x * dsc->scale_X) + (y * dsc->shear_Y) + dsc->translation_X;
+ int transformed_Y = (x * dsc->shear_X) + (y * dsc->scale_Y) + dsc->translation_Y;
+ for(int byte_comp = 0; byte_comp < bpp; byte_comp += 1){
+ roi_buf[in_idx++] = img->buf[(transformed_X * bpp) + ((transformed_Y * bpp) * img->width) + byte_comp];
+ }
+ }
+ }
+
+ be_pushbytes(vm, roi_buf, roi_size);
+ free(roi_buf);
+ be_return(vm);
+ }
+
+ int be_img_convert_to(struct bvm *vm); // (pixformat)
+ int be_img_convert_to(struct bvm *vm) {
+ image_t * img = be_get_image_instance(vm);
+ if(img->len == 0) {
+ be_raise(vm, "img_error", "no image data");
+ be_return(vm);
+ }
+
+ int32_t argc = be_top(vm);
+ if (argc >= 2 && be_isint(vm, 2)) {
+ uint32_t format = be_toint(vm, 2);
+ int32_t option = -1;
+ if(be_isint(vm, 3)){
+ option = be_toint(vm, 3);
+ }
+ uint8_t* temp_buf = nullptr;
+
+ if(img->format == format){
+ be_raise(vm, "img_error", "no format change");
+ be_return(vm);
+ }
+ uint16_t bpp = 3; // most likely byte-per-pixel value
+ const size_t pixel_count = img->width * img->height ;
+ size_t temp_buf_len = pixel_count * bpp;
+ if(format == PIXFORMAT_JPEG) {
+ temp_buf_len /= 4; // a very rough guess
+ }
+ temp_buf = (uint8_t *)heap_caps_malloc((temp_buf_len)+4, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT);
+ if(temp_buf == nullptr) {
+ be_raise(vm, "img_error", "not enough heap");
+ be_return_nil(vm);
+ }
+ if(format != PIXFORMAT_JPEG) {
+ if(!fmt2rgb888((const uint8_t *)img->buf, img->len, img->format, temp_buf)) {
+ free(temp_buf);
+ be_raise(vm, "img_error", "not enough heap");
+ be_return_nil(vm);
+ }
+ }
+ be_jpg_encoder_t jpeg;
+ jpeg.width = 0;
+ jpeg.height = 0;
+ jpeg.input = img->buf;
+ jpeg.output = temp_buf;
+ jpeg.output_len = 0;
+ switch(format){
+ case PIXFORMAT_GRAYSCALE: // always from temporary RGB88
+ be_img_util::rgb888_to_grayscale_inplace(temp_buf,temp_buf_len);
+ temp_buf_len = pixel_count;
+ break;
+ case PIXFORMAT_RGB565: // always from temporary RGB88
+ be_img_util::rgb888_to_565_inplace(temp_buf,temp_buf_len);
+ temp_buf_len = pixel_count * 2;
+ break;
+ case PIXFORMAT_RGB888:
+ // should already be there
+ break;
+ case PIXFORMAT_JPEG:
+ {
+ int quality = 12;
+ if(option != -1){
+ quality = option;
+ }
+ fmt2jpg_cb(img->buf, img->len, img->width, img->height, img->format, quality, be_img_util::_jpg_out_cb, (void *)&jpeg);
+ temp_buf_len = jpeg.output_len;
+ }
+ break;
+ default:
+ free(temp_buf);
+ be_raise(vm, "img_error", "format not supported");
+ // be_return_nil(vm);
+ break;
+ }
+ free(img->buf);
+ img->format = pixformat_t(format);
+ img->len = temp_buf_len;
+ img->buf = (uint8_t*)heap_caps_realloc((void*)temp_buf, img->len, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT); // shrinking should never fail ...
+ if(img->buf == nullptr) {
+ be_img_util::clear(img);
+ free(temp_buf);
+ be_raise(vm, "img_error", "reallocation failed");
+ }
+ }
+ be_return(vm);
+ }
+
+ int be_img_info(struct bvm *vm);
+ int be_img_info(struct bvm *vm) {
+ image_t * img = be_get_image_instance(vm);
+ if(!img){
+ be_raise(vm, "img_error", "no image instance");
+ be_return(vm);
+ }
+ be_newobject(vm, "map");
+ be_map_insert_int(vm, "buf_addr", (uint32_t)img->buf);
+ be_map_insert_int(vm, "size", img->len);
+ be_map_insert_int(vm, "width", img->width);
+ be_map_insert_int(vm, "height", img->height);
+ be_map_insert_int(vm, "format", img->format);
+ be_pop(vm, 1);
+ be_return(vm);
+ }
+
+} //extern "C"
+
+#endif // USE_BERRY_JPEG
+
+#endif // USE_BERRY
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_light.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_light.ino
index b268dba3d..31eb37125 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_light.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_light.ino
@@ -105,7 +105,7 @@ extern "C" {
}
}
} else { // Light.pwm_multi_channels
- if ((light_num >= 0) && (light_num < LST_MAX)) {
+ if ((light_num >= 0) && (light_num < LST_MAX) && (light_num < Light.subtype)) {
data_present = true;
be_map_insert_bool(vm, "power", Light.power & (1 << light_num));
be_map_insert_int(vm, "bri", Light.current_color[light_num]);
@@ -130,7 +130,7 @@ extern "C" {
int32_t top = be_top(vm); // Get the number of arguments
if (top == 0 || (top == 1 && be_isint(vm, 1))) {
int32_t light_num = 0;
- if (top > 1) {
+ if (top > 0) {
light_num = be_toint(vm, 1);
}
push_getlight(vm, light_num);
@@ -221,56 +221,72 @@ extern "C" {
}
}
- // ct
- if (has_ct) {
- light_controller.changeCTB(val_ct, light_state.getBriCT());
- }
-
- // hue
- if (has_hue) {
- uint8_t sat;
- uint8_t bri;
- light_state.getHSB(nullptr, &sat, &bri);
- light_controller.changeHSB(val_hue, sat, bri);
- }
-
- // sat
- if (has_sat) {
- uint16_t hue;
- uint8_t bri;
- light_state.getHSB(&hue, nullptr, &bri);
- light_controller.changeHSB(hue, val_sat, bri);
- }
-
- // rgb
- if (has_rgb) {
- SBuffer buf = SBuffer::SBufferFromHex(val_rgb_s, strlen(val_rgb_s));
- uint8_t channels[LST_MAX] = {};
- memcpy(channels, buf.buf(), buf.len() > LST_MAX ? LST_MAX : buf.len());
- bool on = false; // if all are zero, then only set power off
- for (uint32_t i = 0; i < LST_MAX; i++) {
- if (channels[i] != 0) { on = true; }
+ if (!Light.pwm_multi_channels) {
+ // ct
+ if (has_ct) {
+ light_controller.changeCTB(val_ct, light_state.getBriCT());
}
- if (on) {
- light_controller.changeChannels(channels);
- } else {
- ExecuteCommandPower(idx + 1, POWER_OFF, SRC_BERRY);
- }
- }
- // channels
- if (has_channels) {
- if (val_on) {
- light_controller.changeChannels(channels);
- } else {
- ExecuteCommandPower(idx + 1, POWER_OFF, SRC_BERRY);
+ // hue
+ if (has_hue) {
+ uint8_t sat;
+ uint8_t bri;
+ light_state.getHSB(nullptr, &sat, &bri);
+ light_controller.changeHSB(val_hue, sat, bri);
}
- }
- // bri is done after channels and rgb
- // bri
- if (has_bri) {
- light_controller.changeBri(val_bri);
+ // sat
+ if (has_sat) {
+ uint16_t hue;
+ uint8_t bri;
+ light_state.getHSB(&hue, nullptr, &bri);
+ light_controller.changeHSB(hue, val_sat, bri);
+ }
+
+ // rgb
+ if (has_rgb) {
+ SBuffer buf = SBuffer::SBufferFromHex(val_rgb_s, strlen(val_rgb_s));
+ uint8_t channels[LST_MAX] = {};
+ memcpy(channels, buf.buf(), buf.len() > LST_MAX ? LST_MAX : buf.len());
+ bool on = false; // if all are zero, then only set power off
+ for (uint32_t i = 0; i < LST_MAX; i++) {
+ if (channels[i] != 0) { on = true; }
+ }
+ if (on) {
+ light_controller.changeChannels(channels);
+ } else {
+ ExecuteCommandPower(idx + 1, POWER_OFF, SRC_BERRY);
+ }
+ }
+
+ // channels
+ if (has_channels) {
+ if (val_on) {
+ light_controller.changeChannels(channels);
+ } else {
+ ExecuteCommandPower(idx + 1, POWER_OFF, SRC_BERRY);
+ }
+ }
+
+ // bri is done after channels and rgb
+ // bri
+ if (has_bri) {
+ if (light_controller.isCTRGBLinked()) {
+ light_controller.changeBri(val_bri);
+ } else {
+ if (idx == 0) {
+ light_controller.changeBriRGB(val_bri);
+ } else {
+ light_controller.changeBriCT(val_bri);
+ }
+ }
+ }
+ } else {
+ // multi-channel (SetOption68 1)
+ // bri
+ if (has_bri) {
+ LightSetBri(Light.device + idx, val_bri);
+ }
}
push_getlight(vm, idx);
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tasmota.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tasmota.ino
index eb87fede7..9a642cea9 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tasmota.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tasmota.ino
@@ -183,6 +183,7 @@ extern "C" {
be_map_insert_int(vm, "local", Rtc.local_time);
be_map_insert_int(vm, "restart", Rtc.restart_time);
be_map_insert_int(vm, "timezone", Rtc.time_timezone);
+ be_map_insert_int(vm, "config_time", Settings->cfg_timestamp);
be_pop(vm, 1);
be_return(vm);
}
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tcpserver.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tcpserver.ino
index 969ec9bd9..4f75397e1 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tcpserver.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tcpserver.ino
@@ -240,7 +240,7 @@ extern "C" {
WiFiClient * client_ptr = nullptr;
if (server_tcp->hasClient()) {
WiFiClient new_client = server_tcp->available();
- AddLog(LOG_LEVEL_INFO, "BRY: Got connection from %s:%i local %s:%i", new_client.remoteIP().toString(true).c_str(), new_client.remotePort(), new_client.localIP().toString().c_str(), new_client.localPort());
+ AddLog(LOG_LEVEL_DEBUG_MORE, "BRY: Got connection from %s:%i local %s:%i", new_client.remoteIP().toString(true).c_str(), new_client.remotePort(), new_client.localIP().toString().c_str(), new_client.localPort());
client_ptr = new WiFiClient();
*client_ptr = new_client;
} else {
@@ -254,7 +254,7 @@ extern "C" {
AsyncTCPClient * client_ptr = nullptr;
if (server_tcp->hasClient()) {
client_ptr = server_tcp->availableAsync();
- AddLog(LOG_LEVEL_INFO, "BRY: Got connection from %s:%i local %s:%i", client_ptr->remoteIP().toString(true).c_str(), client_ptr->remotePort(), client_ptr->localIP().toString().c_str(), client_ptr->localPort());
+ AddLog(LOG_LEVEL_DEBUG_MORE, "BRY: Got connection from %s:%i local %s:%i", client_ptr->remoteIP().toString(true).c_str(), client_ptr->remotePort(), client_ptr->localIP().toString().c_str(), client_ptr->localPort());
} else {
be_raise(vm, "internal_error", "tcpserver has no client connected");
}
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tf_lite_micro.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tf_lite_micro.ino
index 5d18ac570..45cbb7cd4 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tf_lite_micro.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tf_lite_micro.ino
@@ -70,7 +70,7 @@ struct TFL_mic_ctx_t{
struct {
uint32_t is_audio_initialized:1;
uint32_t is_first_time:1;
- uint32_t new_feature_data:1;
+ // uint32_t new_feature_data:1;
uint32_t continue_audio_capture:1;
uint32_t stop_audio_capture:1;
uint32_t audio_capture_ended:1;
@@ -102,7 +102,7 @@ struct TFL_mic_ctx_t{
struct TFL_stats_t{
uint32_t model_size = 0;
uint32_t used_arena_bytes = 0;
- uint32_t invokations = 0;
+ uint32_t invocations = 0;
uint32_t loop_task_free_stack_bytes = 0;
uint32_t mic_task_free_stack_bytes = 0;
};
@@ -114,7 +114,7 @@ TfLiteTensor* output = nullptr;
int8_t *berry_output_buf = nullptr;
size_t berry_output_bufsize;
int TensorArenaSize = 2000;
-uint8_t max_invocations; // max. invocations per second
+uint8_t max_invocations = 4; // max. invocations per second
TaskHandle_t loop_task = nullptr;
// QueueHandle_t loop_queue = nullptr;
@@ -127,9 +127,8 @@ union{
// uint32_t stop_loop:1;
uint32_t loop_ended:1;
uint32_t unread_output:1;
- uint32_t use_cam:1;
+ uint32_t new_input_data:1;
uint32_t use_mic:1;
- uint32_t mode_inference:1;
} option;
uint32_t options;
};
@@ -176,13 +175,6 @@ bool TFL_create_task(){
return btrue;
}
-bool TFL_init_CAM(){
- AddLog(LOG_LEVEL_DEBUG, PSTR("TFL: mode webcam not implemented yet"));
- delete TFL;
- TFL = nullptr;
- return bfalse;
-}
-
#ifdef USE_I2S
/**
* @brief Set up some buffers and tables for feature extraction of audio samples. Must run once before starting audio capturing.
@@ -304,10 +296,10 @@ void TFL_capture_samples(void* arg) {
/* read slice data at once from i2s */
// i2s_read(I2S_NUM, i2s_read_buffer, i2s_bytes_to_read, &bytes_read, pdMS_TO_TICKS(TFL->mic->slice_stride));
- i2s_channel_read(audio_i2s.in->getRxHandle(), (void*)i2s_read_buffer, i2s_bytes_to_read, &bytes_read, pdMS_TO_TICKS(TFL->mic->slice_stride));
+ esp_err_t err = i2s_channel_read(audio_i2s.in->getRxHandle(), (void*)i2s_read_buffer, i2s_bytes_to_read, &bytes_read, pdMS_TO_TICKS(TFL->mic->slice_stride));
if (bytes_read <= 0) {
- MicroPrintf( PSTR( "Error in I2S read : %d"), bytes_read);
+ MicroPrintf( PSTR( "Error %d in I2S, did read %d bytes"), err, bytes_read);
}
else {
if (bytes_read < i2s_bytes_to_read) {
@@ -328,7 +320,7 @@ void TFL_capture_samples(void* arg) {
if(TFL->mic->feature_buffer_idx == TFL->mic->slice_count){
TFL->mic->feature_buffer_idx = 0;
}
- TFL->mic->flag.new_feature_data = 1;
+ TFL->option.new_input_data = 1;
xSemaphoreGive(TFL->mic->feature_buffer_mutex);
}
@@ -473,7 +465,6 @@ void TFL_task_loop(void *pvParameters){
TickType_t xLastWakeTime = xTaskGetTickCount();
TFL->stats->loop_task_free_stack_bytes = uxTaskGetStackHighWaterMark(NULL);
- bool do_invokation = true;
while(TFL->option.delay_next_invocation == 1 && TFL->option.running_loop == 1){
MicroPrintf(PSTR("delay_next_invocation"));
vTaskDelay(10/ portTICK_PERIOD_MS);
@@ -483,16 +474,13 @@ void TFL_task_loop(void *pvParameters){
#ifdef USE_I2S
if(TFL->option.use_mic == 1){
TFL->option.delay_next_invocation = 0; // Clean up later
- if (TFL->mic->flag.new_feature_data == 0){
- do_invokation = false;
- }
if(TFL->mic->flag.continue_audio_capture == 1){
TFL_mic_feature_buf_to_input();
}
}
#endif
- if(do_invokation){
- // MicroPrintf(PSTR("Invokation requested"));
+ if(TFL->option.new_input_data){
+ // MicroPrintf(PSTR("invocation requested"));
TFL->option.running_invocation = 1;
int invoke_status = interpreter.Invoke();
if (invoke_status != kTfLiteOk) {
@@ -502,15 +490,10 @@ void TFL_task_loop(void *pvParameters){
if(TFL->berry_output_buf != nullptr){
memcpy(TFL->berry_output_buf,(int8_t*)TFL->output->data.data,TFL->berry_output_bufsize);
}
- TFL->stats->invokations++;
-
+ TFL->stats->invocations++;
TFL->option.unread_output = 1;
- #ifdef USE_I2S
- if(TFL->option.use_mic == 1) {
- TFL->mic->flag.new_feature_data = 0;
- }
- TFL->option.running_invocation = 0;
- #endif //USE_I2S
+ TFL->option.running_invocation = 0;
+ TFL->option.new_input_data == 0;
}
if(TFL->option.running_loop == 1) vTaskDelayUntil(&xLastWakeTime, pdMS_TO_TICKS(1000 / TFL->max_invocations)); //maybe we already want to exit
}
@@ -535,7 +518,7 @@ extern "C" {
* @brief Create a context for a tensor flow session, that will later run in a task
*
* @param vm
- * @param type BUF - generic byte buffer, CAM - webcam input, MIC - microphone input
+ * @param type BUF - generic byte buffer, MIC - microphone input
* @return btrue
* @return bfalse
*/
@@ -549,21 +532,12 @@ extern "C" {
AddLog(LOG_LEVEL_DEBUG, PSTR("TFL: context deleted"));
return btrue;
}
- TFL = new TFL_ctx_t;
+ TFL = new TFL_ctx_t{};
TFL->options = 0;
if(*(uint32_t*)type == 0x00465542){ //BUF
AddLog(LOG_LEVEL_DEBUG, PSTR("TFL: mode generic buffer"));
}
- else if(*(uint32_t*)type == 0x004D4143){ //CAM - not yet implemented
- AddLog(LOG_LEVEL_DEBUG, PSTR("TFL: mode webcam"));
- if(TFL_init_CAM()){
- TFL->option.use_cam = 1;
- }
- else{
- return bfalse;
- }
- }
else if(*(uint32_t*)type == 0x0043494D){ //MIC
#ifdef USE_I2S
if(descriptor && len==sizeof(TFL_mic_descriptor_t)){
@@ -620,7 +594,7 @@ extern "C" {
if(arena){
TFL->TensorArenaSize = arena;
}
- TFL->option.mode_inference = 1;
+
TFL->berry_output_buf = (int8_t*)output_buf;
TFL->berry_output_bufsize = output_size;
TFL_create_task();
@@ -636,24 +610,35 @@ extern "C" {
* @brief Send new input data to the tensor flow session
*
* @param vm
- * @param buf Arbitrary data in a byte buffer, must fit to the TF model
- * @param size Size of buffer (auto-calculated by Berry)
+ * @param buf Arbitrary data in a byte buffer, must fit to the TF model
+ * @param size Size of buffer (auto-calculated by Berry)
+ * @param quantize_to_int8 Optional: convert bytes to quantized int8 values
* @return btrue
* @return bfalse
*/
- bbool be_TFL_input(struct bvm *vm, const uint8_t *buf, size_t size){
+ bbool be_TFL_input(struct bvm *vm, const uint8_t *buf, size_t size, bbool quantize_to_int8){
if(!TFL) return bfalse;
if(TFL->option.running_loop == 1){
uint32_t timeout = 0;
+ int8_t* tensor_input_buffer = tflite::GetTensorData(TFL->input);
while(!TFL->option.delay_next_invocation == 1) {
- if(timeout>10) break;
- delay(2);
+ if(timeout>4) return bfalse;;
+ delay(5);
timeout++;
}
AddLog(LOG_LEVEL_DEBUG, PSTR("TFL: imput new data and invoke"));
- memcpy((uint8_t*)TFL->input->data.data,(uint8_t*)buf,size);
+ if(quantize_to_int8){
+ int16_t temp_int;
+ for(int i = 0; i < size; i++){
+ temp_int = buf[i];
+ tensor_input_buffer[i] = (int8_t)(temp_int - 128);
+ }
+ } else {
+ memcpy(tensor_input_buffer, buf,size);
+ }
TFL->option.delay_next_invocation = 0;
+ TFL->option.new_input_data = 1;
return btrue;
}
return bfalse;
@@ -697,7 +682,6 @@ extern "C" {
return (const char *)item;
}
-
/**
* @brief Shows statistics about the model and the running TFL session
*
@@ -734,7 +718,7 @@ extern "C" {
}
inc = snprintf_P(s + pos, size-pos, PSTR("],\"output_type\":%u}"),TFL->output->type);
pos += inc;
- inc = snprintf_P(s + pos, size-pos, PSTR(",\"sessiom\":{\"used_arena\":%u"),TFL->stats->used_arena_bytes);
+ inc = snprintf_P(s + pos, size-pos, PSTR(",\"session\":{\"used_arena\":%u"),TFL->stats->used_arena_bytes);
pos += inc;
inc = snprintf_P(s + pos, size-pos, PSTR(",\"loop_stack\":%u"),TFL->stats->loop_task_free_stack_bytes);
pos += inc;
@@ -742,7 +726,7 @@ extern "C" {
inc = snprintf_P(s + pos, size-pos, PSTR(",\"audio_stack\":%u"),TFL->stats->mic_task_free_stack_bytes);
pos += inc;
}
- inc = snprintf_P(s + pos, size-pos, PSTR(",\"invokations\":%u}}"),TFL->stats->invokations);
+ inc = snprintf_P(s + pos, size-pos, PSTR(",\"invocations\":%u}}"),TFL->stats->invocations);
be_pushstring(vm, s);
free(s);
return s;
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_webcam.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_webcam.ino
new file mode 100644
index 000000000..b904ede0d
--- /dev/null
+++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_webcam.ino
@@ -0,0 +1,164 @@
+/*
+ xdrv_52_3_berry_cam.ino - Berry scripting language, native functions
+
+ Copyright (C) 2024 Christian Baars & Stephan Hadinger, Berry language by Guan Wenliang https://github.com/Skiars/berry
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+*/
+
+
+#ifdef USE_BERRY
+
+#include
+
+#if defined(USE_WEBCAM)
+#ifdef USE_BERRY_CAM // driver name is webcam in order to have this code behind the berry_img driver
+#define USE_WEBCAM_SETUP_ONLY
+
+#include "esp_camera.h"
+
+/*********************************************************************************************\
+ * Native functions mapped to Berry functions
+\*********************************************************************************************/
+extern "C" {
+
+ struct {
+ uint16_t width = 0;
+ uint16_t height = 0;
+ uint8_t mode = 0;
+ } WcBerry;
+
+ int be_cam_init(struct bvm *vm);
+ int be_cam_init(struct bvm *vm) {
+ WcInit();
+ be_return(vm);
+ }
+
+ int be_cam_setup(struct bvm *vm);
+ int be_cam_setup(struct bvm *vm) {
+
+ int32_t argc = be_top(vm); // Get the number of arguments
+ if (argc == 1) {
+ WcBerry.mode = be_toint(vm, 1);
+ }
+ else{
+ be_raise(vm, "cam_error", "need mode");
+ be_return_nil(vm);
+ }
+
+ int result = WcSetup(WcBerry.mode);
+ if (result > 0) {
+ camera_fb_t *wc_fb = esp_camera_fb_get();
+ if(wc_fb){
+ WcBerry.width = wc_fb->width;
+ WcBerry.height = wc_fb->height;
+ esp_camera_fb_return(wc_fb);
+ }
+ }
+ be_pushint(vm, result);
+ be_pop(vm, 1);
+ be_return(vm);
+ }
+
+ int be_cam_get_image(struct bvm *vm);
+ int be_cam_get_image(struct bvm *vm) {
+
+ camera_fb_t *wc_fb = esp_camera_fb_get();
+ if (!wc_fb) {
+ be_raise(vm, "cam_error", "could not get frame");
+ be_return_nil(vm);
+ }
+
+ WcBerry.width = wc_fb->width;
+ WcBerry.height = wc_fb->height;
+
+ int32_t argc = be_top(vm);
+ if (argc >= 1 && be_isinstance(vm, 1)) {
+ const char * c = be_classname(vm, 1);
+ if(strcmp(c,"img") != 0) {
+ be_raise(vm, "cam_error", "instance not of img class");
+ esp_camera_fb_return(wc_fb);
+ be_return_nil(vm);
+ }
+ image_t * img = be_get_image_instance(vm);
+ int format = -1;
+ if (argc == 2 && be_isint(vm, 2)) {
+ format = be_toint(vm, 2);
+ }
+ if(img){
+ if(format < 0 || format == PIXFORMAT_JPEG){
+ be_img_util::from_buffer(img,wc_fb->buf, wc_fb->len, wc_fb->width, wc_fb->height, PIXFORMAT_JPEG);
+ }
+ else {
+ bool success = false;
+ int bpp = be_img_util::getBytesPerPixel(pixformat_t(format));
+ if(wc_fb->width * wc_fb->height * bpp != img->len){ // we do not really want tu use it like that, but repeatedly write the same format
+ img->buf = (uint8_t*)heap_caps_realloc((void*)img->buf, wc_fb->width * wc_fb->height * bpp, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT);
+ if(!img->buf){
+ be_img_util::clear(img);
+ be_raise(vm, "cam_error", "reallocation failed");
+ be_return_nil(vm);
+ }
+ }
+ switch(pixformat_t(format)) {
+ case PIXFORMAT_GRAYSCALE:
+ success = be_img_util::jpeg_decode_one_image(wc_fb->buf, wc_fb->len, img->buf, EIGHT_BIT_GRAYSCALE, img);
+ break;
+ case PIXFORMAT_RGB565:
+ success = be_img_util::jpeg_decode_one_image(wc_fb->buf, wc_fb->len, img->buf, RGB565_LITTLE_ENDIAN, img);
+ break;
+ case PIXFORMAT_RGB888:
+ success = be_img_util::jpeg_decode_one_image(wc_fb->buf, wc_fb->len, img->buf, RGB8888, img);
+ break;
+ }
+ if(success){
+ img->len = wc_fb->width * wc_fb->height * bpp;
+ img->format = pixformat_t(format);
+ img->width = wc_fb->width;
+ img->height = wc_fb->height;
+ } else {
+ be_img_util::clear(img);
+ }
+ }
+ }
+ else{
+ esp_camera_fb_return(wc_fb);
+ be_raise(vm, "cam_error", "no image store");
+ }
+ }
+ else{
+ be_pushbytes(vm, wc_fb->buf, wc_fb->len); // JPG
+ }
+
+ esp_camera_fb_return(wc_fb);
+ be_return(vm);
+ }
+
+ // cam.info(void) -> map
+ int be_cam_info(struct bvm *vm);
+ int be_cam_info(struct bvm *vm) {
+ be_newobject(vm, "map");
+ be_map_insert_int(vm, "mode", WcBerry.mode);
+ be_map_insert_int(vm, "width", WcBerry.width);
+ be_map_insert_int(vm, "height", WcBerry.height);
+
+ be_pop(vm, 1);
+ be_return(vm);
+ }
+} //extern "C"
+
+#endif // USE_BERRY_CAM
+#endif // USE_WEBCAM
+
+#endif // USE_BERRY
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_zigbee.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_zigbee.ino
index f684a9a6b..b7d95d7c3 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_zigbee.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_zigbee.ino
@@ -75,6 +75,21 @@ extern "C" {
extern "C" {
// Zigbee Coordinator `zc`
+
+ // `zigbee.started() -> bool or nil`
+ // Returns `true` if Zigbee sucessfully started, `false` if not yet started
+ // or `nil` if not configured or aborted
+ int zc_started(struct bvm *vm);
+ int zc_started(struct bvm *vm) {
+ // return `nil` if `zigbee.active` is false (i.e. no GPIO configured)
+ // or aborted, `zigbee.init_phase` is `true` but `zigbee.state_machine` is `false`
+ if (!zigbee.active) {
+ be_return_nil(vm);
+ }
+ be_pushbool(vm, !zigbee.init_phase);
+ be_return(vm);
+ }
+
int zc_info(struct bvm *vm);
int zc_info(struct bvm *vm) {
int32_t top = be_top(vm); // Get the number of arguments
@@ -99,17 +114,21 @@ extern "C" {
be_raise(vm, kTypeError, nullptr);
}
- int zc_item(struct bvm *vm);
- int zc_item(struct bvm *vm) {
+ // implement item() and find()
+ int zc_item_or_find(struct bvm *vm, bbool raise_if_unknown) {
int32_t top = be_top(vm); // Get the number of arguments
- if (zigbee.init_phase) {
+ if (!zigbee.active) {
be_raise(vm, "internal_error", "zigbee not started");
}
if (top >= 2 && (be_isint(vm, 2) || be_isstring(vm, 2))) {
const Z_Device & device = be_isint(vm, 2) ? zigbee_devices.findShortAddr(be_toint(vm, 2))
: zigbee_devices.parseDeviceFromName(be_tostring(vm, 2));
if (!device.valid()) {
- be_raise(vm, "value_error", "unknown device");
+ if (raise_if_unknown) {
+ be_raise(vm, "index_error", "unknown device");
+ } else {
+ be_return_nil(vm);
+ }
}
be_pushntvclass(vm, &be_class_zb_device);
@@ -121,6 +140,20 @@ extern "C" {
be_raise(vm, kTypeError, nullptr);
}
+ // `zigbee.item(shortaddr:int | friendlyname:str) -> instance of zb_device`
+ // raise en exception if not found
+ int zc_item(struct bvm *vm);
+ int zc_item(struct bvm *vm) {
+ return zc_item_or_find(vm, true);
+ }
+
+ // `zigbee.find(shortaddr:int | friendlyname:str) -> instance of zb_device`
+ // return `nil` if not found
+ int zc_find(struct bvm *vm);
+ int zc_find(struct bvm *vm) {
+ return zc_item_or_find(vm, false);
+ }
+
int32_t zc_size(void*) {
return zigbee_devices.devicesSize();
}
@@ -156,7 +189,7 @@ extern "C" {
int zc_iter(bvm *vm);
int zc_iter(bvm *vm) {
- if (zigbee.init_phase) {
+ if (!zigbee.active) {
be_raise(vm, "internal_error", "zigbee not started");
}
be_pushntvclosure(vm, zc_iter_closure, 1);
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino
index 58c6f691a..c5bad3c9e 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_52_9_berry.ino
@@ -894,6 +894,7 @@ bool Xdrv52(uint32_t function)
BrLoad("autoexec.be"); // run autoexec.be at first tick, so we know all modules are initialized
berry.autoexec_done = true;
+#ifdef USE_WEBSERVER
// check if `web_add_handler` was missed, for example because of Berry VM restart
if (!berry.web_add_handler_done) {
bool network_up = WifiHasIP();
@@ -905,6 +906,7 @@ bool Xdrv52(uint32_t function)
berry.web_add_handler_done = true;
}
}
+#endif // USE_WEBSERVER
}
if (TasmotaGlobal.berry_fast_loop_enabled) { // call only if enabled at global level
callBerryFastLoop(false); // call `tasmota.fast_loop()` optimized for minimal performance impact
@@ -944,6 +946,51 @@ bool Xdrv52(uint32_t function)
case FUNC_SET_DEVICE_POWER:
result = callBerryEventDispatcher(PSTR("set_power_handler"), nullptr, XdrvMailbox.index, nullptr);
break;
+ case FUNC_BUTTON_PRESSED:
+ {
+ static uint32_t timer_last_button_sent = 0;
+ // XdrvMailbox.index = button_index;
+ // XdrvMailbox.payload = button;
+ // XdrvMailbox.command_code = Button.last_state[button_index];
+ uint8_t state = (XdrvMailbox.command_code & 0xFF);
+ uint8_t multipress_state = (XdrvMailbox.command_code >> 8) & 0xFF;
+ if ((XdrvMailbox.payload != state) || TimeReached(timer_last_button_sent)) { // fire event only when state changes
+ timer_last_button_sent = millis() + 1000; // wait for 1 second
+ result = callBerryEventDispatcher(PSTR("button_pressed"), nullptr,
+ (multipress_state & 0xFF) << 24 | (XdrvMailbox.payload & 0xFF) << 16 | (XdrvMailbox.command_code & 0xFF) << 8 | (XdrvMailbox.index & 0xFF) ,
+ nullptr);
+ }
+ }
+ break;
+ case FUNC_BUTTON_MULTI_PRESSED:
+ // XdrvMailbox.index = button_index;
+ // XdrvMailbox.payload = Button.press_counter[button_index];
+ result = callBerryEventDispatcher(PSTR("button_multi_pressed"), nullptr,
+ (XdrvMailbox.payload & 0xFF) << 8 | (XdrvMailbox.index & 0xFF) ,
+ nullptr);
+ break;
+ case FUNC_ANY_KEY:
+ // XdrvMailbox.payload = device_save << 24 | key << 16 | state << 8 | device;
+ // key 0 = KEY_BUTTON = button_topic
+ // key 1 = KEY_SWITCH = switch_topic
+ // state 0 = POWER_OFF = off
+ // state 1 = POWER_ON = on
+ // state 2 = POWER_TOGGLE = toggle
+ // state 3 = POWER_HOLD = hold
+ // state 4 = POWER_INCREMENT = button still pressed
+ // state 5 = POWER_INV = button released
+ // state 6 = POWER_CLEAR = button released
+ // state 7 = POWER_RELEASE = button released
+ // state 9 = CLEAR_RETAIN = clear retain flag
+ // state 10 = POWER_DELAYED = button released delayed
+ // Button Multipress
+ // state 10 = SINGLE
+ // state 11 = DOUBLE
+ // state 12 = TRIPLE
+ // state 13 = QUAD
+ // state 14 = PENTA
+ result = callBerryEventDispatcher("any_key", nullptr, XdrvMailbox.payload, nullptr);
+ break;
#ifdef USE_WEBSERVER
case FUNC_WEB_ADD_CONSOLE_BUTTON:
if (XdrvMailbox.index) {
@@ -990,10 +1037,6 @@ bool Xdrv52(uint32_t function)
callBerryEventDispatcher(PSTR("after_teleperiod"), nullptr, 0, nullptr);
break;
- case FUNC_BUTTON_PRESSED:
- callBerryEventDispatcher(PSTR("button_pressed"), nullptr, 0, nullptr);
- break;
-
case FUNC_ACTIVE:
result = true;
break;
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_54_lvgl.ino b/tasmota/tasmota_xdrv_driver/xdrv_54_lvgl.ino
index ab16b8b4f..622b06d00 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_54_lvgl.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_54_lvgl.ino
@@ -88,6 +88,7 @@ void lv_flush_callback(lv_display_t *disp, const lv_area_t *area, uint8_t *color
renderer->setAddrWindow(area->x1, area->y1, area->x1+width, area->y1+height);
renderer->pushColors((uint16_t *)color_p, pixels_len, true);
renderer->setAddrWindow(0,0,0,0);
+ renderer->Updateframe();
uint32_t chrono_time = millis() - chrono_start;
lv_disp_flush_ready(disp);
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_55_touch.ino b/tasmota/tasmota_xdrv_driver/xdrv_55_touch.ino
index 213c7859f..c3ff07870 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_55_touch.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_55_touch.ino
@@ -242,7 +242,7 @@ void utouch_Touch_Init() {
char *name;
utouch_found = renderer->utouch_Init(&name);
if (utouch_found) {
- AddLog(LOG_LEVEL_INFO, PSTR("UT : %s"), name);
+ AddLog(LOG_LEVEL_INFO, PSTR("UTI: %s initialized"), name);
}
}
}
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_79_esp32_ble.ino b/tasmota/tasmota_xdrv_driver/xdrv_79_esp32_ble.ino
index 7c10f2967..763ffc477 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_79_esp32_ble.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_79_esp32_ble.ino
@@ -32,7 +32,7 @@
#endif
#ifdef ESP32 // ESP32 family only. Use define USE_HM10 for ESP8266 support
-#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32S3
+#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32S3
#ifdef USE_BLE_ESP32
/*
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_81_esp32_webcam.ino b/tasmota/tasmota_xdrv_driver/xdrv_81_esp32_webcam.ino
index 904e73c84..8d6e6f256 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_81_esp32_webcam.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_81_esp32_webcam.ino
@@ -122,11 +122,12 @@
#include "fb_gfx.h"
#include "camera_pins.h"
+SemaphoreHandle_t WebcamMutex = nullptr;
+
+#ifndef USE_WEBCAM_SETUP_ONLY
bool HttpCheckPriviledgedAccess(bool);
extern ESP8266WebServer *Webserver;
-SemaphoreHandle_t WebcamMutex = nullptr;;
-
// use mutex like:
// TasAutoMutex localmutex(&WebcamMutex, "somename");
// in any function. Will wait for mutex to be clear, and auto-release when the function exits.
@@ -134,7 +135,7 @@ SemaphoreHandle_t WebcamMutex = nullptr;;
#define BOUNDARY "e8b8c539-047d-4777-a985-fbba6edff11e"
#ifndef MAX_PICSTORE
-#define MAX_PICSTORE 4
+ #define MAX_PICSTORE 4
#endif
struct PICSTORE {
uint8_t *buff;
@@ -151,11 +152,14 @@ struct PICSTORE {
#endif // RTSP_FRAME_TIME
#endif // ENABLE_RTSPSERVER
+#endif //USE_WEBCAM_SETUP_ONLY
+
struct {
uint8_t up = 0;
uint16_t width;
uint16_t height;
uint8_t stream_active;
+ #ifndef USE_WEBCAM_SETUP_ONLY
WiFiClient client;
ESP8266WebServer *CamServer;
struct PICSTORE picstore[MAX_PICSTORE];
@@ -165,9 +169,10 @@ struct {
CRtspSession *rtsp_session;
WiFiClient rtsp_client;
uint8_t rtsp_start;
+#endif // ENABLE_RTSPSERVER
OV2640 cam;
uint32_t rtsp_lastframe_time;
-#endif // ENABLE_RTSPSERVER
+#endif // USE_WEBCAM_SETUP_ONLY
} Wc;
struct {
@@ -219,6 +224,7 @@ bool WcPinUsed(void) {
return pin_used;
}
+
void WcFeature(int32_t value) {
TasAutoMutex localmutex(&WebcamMutex, "WcFeature");
sensor_t * wc_s = esp_camera_sensor_get();
@@ -253,6 +259,7 @@ void WcFeature(int32_t value) {
AddLog(LOG_LEVEL_DEBUG, PSTR("CAM: Feature: %d"), value);
}
+
void WcApplySettings() {
TasAutoMutex localmutex(&WebcamMutex, "WcApplySettings");
sensor_t * wc_s = esp_camera_sensor_get();
@@ -493,7 +500,7 @@ uint32_t WcSetup(int32_t fsiz) {
}
/*********************************************************************************************/
-
+#ifndef USE_WEBCAM_SETUP_ONLY
int32_t WcSetOptions(uint32_t sel, int32_t value) {
int32_t res = 0;
TasAutoMutex localmutex(&WebcamMutex, "WcSetOptions");
@@ -772,7 +779,6 @@ pcopy:
//////////////// Handle authentication /////////////////
-
bool WebcamAuthenticate(void)
{
if (strlen(SettingsText(SET_WEBPWD)) && (HTTP_MANAGER_RESET_ONLY != Web.state)) {
@@ -1120,6 +1126,8 @@ void WcShowStream(void) {
}
}
+#endif // USE_WEBCAM_SETUP_ONLY
+
void WcInit(void) {
if (!Settings->webcam_config.data) {
Settings->webcam_config.stream = 1;
@@ -1138,6 +1146,7 @@ void WcInit(void) {
/*********************************************************************************************\
* Commands
\*********************************************************************************************/
+#ifndef USE_WEBCAM_SETUP_ONLY
#define D_PRFX_WEBCAM "WC"
#define D_CMND_WC_STREAM "Stream"
@@ -1502,13 +1511,15 @@ void WcStatsShow(void) {
#endif // USE_WEBSERVER
}
+#endif //USE_WEBCAM_SETUP_ONLY
+
/*********************************************************************************************\
* Interface
\*********************************************************************************************/
bool Xdrv81(uint32_t function) {
bool result = false;
-
+ #ifndef USE_WEBCAM_SETUP_ONLY
switch (function) {
case FUNC_LOOP:
WcLoop();
@@ -1536,8 +1547,8 @@ bool Xdrv81(uint32_t function) {
case FUNC_ACTIVE:
result = true;
break;
-
}
+ #endif // USE_WEBCAM_SETUP_ONLY
return result;
}
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_82_esp32_ethernet.ino b/tasmota/tasmota_xdrv_driver/xdrv_82_esp32_ethernet.ino
index b44be11f3..a9e7ed17c 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_82_esp32_ethernet.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_82_esp32_ethernet.ino
@@ -18,7 +18,7 @@
*/
#ifdef ESP32
-//#if CONFIG_IDF_TARGET_ESP32
+#ifndef CONFIG_IDF_TARGET_ESP32C2
#ifdef USE_ETHERNET
/*********************************************************************************************\
* Ethernet support for ESP32
@@ -445,5 +445,5 @@ bool Xdrv82(uint32_t function) {
}
#endif // USE_ETHERNET
-//#endif // CONFIG_IDF_TARGET_ESP32
+#endif // CONFIG_IDF_TARGET_ESP32C2
#endif // ESP32
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_85_esp32_ble_eq3_trv.ino b/tasmota/tasmota_xdrv_driver/xdrv_85_esp32_ble_eq3_trv.ino
index 23a82d2fc..219b083a9 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_85_esp32_ble_eq3_trv.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_85_esp32_ble_eq3_trv.ino
@@ -128,7 +128,7 @@ print("".join(pin))
#define USE_EQ3_ESP32
#endif
-#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32S3
+#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32S3
#ifdef USE_EQ3_ESP32
#ifdef ESP32 // ESP32 only. Use define USE_HM10 for ESP8266 support
#ifdef USE_BLE_ESP32
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino b/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino
index 368ed1c75..327b0d855 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_87_esp32_sonoff_tm1621.ino
@@ -9,7 +9,7 @@
#ifdef ESP32
#ifdef USE_DISPLAY_TM1621_SONOFF
/*********************************************************************************************\
- * Sonoff POWR3xxD and THR3xxD LCD support
+ * Sonoff POWR3xxD, POWCT and THR3xxD LCD support
*
* {"NAME":"Sonoff POWR316D","GPIO":[32,0,0,0,0,576,0,0,0,224,9280,0,3104,0,320,0,0,0,0,0,0,9184,9248,9216,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
* {"NAME":"Sonoff POWR320D","GPIO":[32,0,9313,0,9312,576,0,0,0,0,9280,0,3104,0,320,0,0,0,0,0,0,9184,9248,9216,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
@@ -17,6 +17,7 @@
* {"NAME":"Sonoff THR316D GPIO26","GPIO":[32,0,0,0,225,9280,0,0,0,321,0,576,320,9184,9216,0,0,224,0,9248,0,1,1,3840,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
* {"NAME":"Sonoff THR320D","GPIO":[32,0,0,0,226,9280,0,0,0,321,0,576,320,9184,9216,9312,0,0,9313,9248,0,1,0,3840,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
* {"NAME":"Sonoff THR320D GPIO26","GPIO":[32,0,0,0,226,9280,0,0,0,321,0,576,320,9184,9216,9312,0,0,9313,9248,0,1,1,3840,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
+ * {"NAME":"Sonoff POWCT","GPIO":[32,0,0,0,0,9280,0,0,0,320,0,576,0,9184,9216,0,0,224,0,9248,0,7329,7296,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
*
* DspSpeed 2..127 = Display rotation speed in seconds if more than one value is requested
* DspLine<1|2> ,,,,... = Display specific JSON value and rotate between them
@@ -41,6 +42,8 @@
#define TM1621_ROTATE 5 // Seconds display rotation speed
#define TM1621_MAX_VALUES 8 // Default 8 x two different lines
+//#define TM1621_DEBUG
+
#define TM1621_PULSE_WIDTH 10 // microseconds (Sonoff = 100)
#define TM1621_SYS_EN 0x01 // 0b00000001
@@ -51,15 +54,20 @@
#define TM1621_BIAS 0x29 // 0b00101001 = LCD 1/3 bias 4 commons option
#define TM1621_IRQ_DIS 0x80 // 0b100x0xxx
-enum Tm1621Device { TM1621_USER, TM1621_POWR316D, TM1621_THR316D };
+enum Tm1621Device { TM1621_USER, TM1621_POWR316D, TM1621_THR316D, TM1621_POWCT };
+const char tm1621_device PROGMEM[] = "User|PowR3|THR3|PowCT";
+
enum Tm1621Units { TM1621_NONE, TM1621_TEMPERATURE, TM1621_HUMIDITY, TM1621_VOLTAGE_CURRENT, TM1621_ENERGY_POWER };
const uint8_t tm1621_commands[] = { TM1621_SYS_EN, TM1621_LCD_ON, TM1621_BIAS, TM1621_TIMER_DIS, TM1621_WDT_DIS, TM1621_TONE_OFF, TM1621_IRQ_DIS };
-const char tm1621_kchar[] PROGMEM = { "0|1|2|3|4|5|6|7|8|9|-| " };
-// 0 1 2 3 4 5 6 7 8 9 - off
-const uint8_t tm1621_digit_row[2][12] = {{ 0x5F, 0x50, 0x3D, 0x79, 0x72, 0x6B, 0x6F, 0x51, 0x7F, 0x7B, 0x20, 0x00 },
- { 0xF5, 0x05, 0xB6, 0x97, 0x47, 0xD3, 0xF3, 0x85, 0xF7, 0xD7, 0x02, 0x00 }};
+const char tm1621_kchar[] PROGMEM = " |0|1|2|3|4|5|6|7|8|9|-|E";
+// b0 ---
+// b1 / / b4
+// --- b5
+// b2 / / b6
+// b3 --- off 0 1 2 3 4 5 6 7 8 9 - E
+const uint8_t tm1621_digit[] = { 0x00, 0x5F, 0x50, 0x3D, 0x79, 0x72, 0x6B, 0x6F, 0x51, 0x7F, 0x7B, 0x20, 0x2F };
struct Tm1621 {
uint8_t buffer[8];
@@ -228,16 +236,29 @@ void TM1621SendCommon(uint8_t common) {
}
}
+uint32_t TM1621Row2(uint32_t row1) {
+ uint32_t row2 = 0;
+ bitWrite(row2, 0, bitRead(row1, 6));
+ bitWrite(row2, 1, bitRead(row1, 5));
+ bitWrite(row2, 2, bitRead(row1, 4));
+ bitWrite(row2, 3, bitRead(row1, 7));
+ bitWrite(row2, 4, bitRead(row1, 3));
+ bitWrite(row2, 5, bitRead(row1, 2));
+ bitWrite(row2, 6, bitRead(row1, 1));
+ bitWrite(row2, 7, bitRead(row1, 0));
+ return row2;
+}
+
void TM1621SendRows(void) {
// Tm1621.row[x] = "text", "----", " " or a number with one decimal like "0.4", "237.5", "123456.7"
- // "123456.7" will be shown as "9999" being a four digit overflow
+ // "123456.7" will be shown as "12E4" being a four digit overflow
// AddLog(LOG_LEVEL_DEBUG, PSTR("TM1: Row1 '%s', Row2 '%s'"), Tm1621.row[0], Tm1621.row[1]);
uint8_t buffer[8] = { 0 }; // TM1621 16-segment 4-bit common buffer
char row[4];
for (uint32_t j = 0; j < 2; j++) {
- // 0.4V => " 04", 0.0A => " ", 1234.5V => "1234"
+ // 0.4V => " 04", 0.0A => " ", 1234.5V => "1234", 12345.6V => "12E3"
uint32_t len = strlen(Tm1621.row[j]);
char *dp = nullptr; // Expect number larger than "123"
int row_idx = len -3; // "1234.5"
@@ -245,8 +266,9 @@ void TM1621SendRows(void) {
dp = strchr(Tm1621.row[j], '.');
row_idx = len -1;
}
- else if (len > 6) { // "12345.6"
- snprintf_P(Tm1621.row[j], sizeof(Tm1621.row[j]), PSTR("9999"));
+ else if (len > 6) { // "1234567890.3" = "12E8"
+ Tm1621.row[j][2] = 'E';
+ Tm1621.row[j][3] = '0' + len -4;
row_idx = 3;
}
row[3] = (row_idx >= 0) ? Tm1621.row[j][row_idx--] : ' ';
@@ -262,16 +284,11 @@ void TM1621SendRows(void) {
for (uint32_t i = 0; i < 4; i++) {
needle[0] = row[i];
int index = GetCommandCode(command, sizeof(command), (const char*)needle, tm1621_kchar);
- if (-1 == index) { index = 11; }
- uint32_t bidx = (0 == j) ? i : 7 -i;
- buffer[bidx] = tm1621_digit_row[j][index];
- }
- if (dp) {
- if (0 == j) {
- buffer[2] |= 0x80; // Row 1 decimal point
- } else {
- buffer[5] |= 0x08; // Row 2 decimal point
- }
+ if (-1 == index) { index = 0; } // Off
+ uint32_t digit = tm1621_digit[index];
+ if ((2 == i) && dp) { digit |= 0x80; } // Decimal point
+ uint32_t bidx = (!j) ? i : 7 -i;
+ buffer[bidx] = (j) ? TM1621Row2(digit) : digit;
}
}
@@ -293,7 +310,18 @@ void TM1621SendRows(void) {
void TM1621PreInit(void) {
if (!PinUsed(GPIO_TM1621_CS) || !PinUsed(GPIO_TM1621_WR) || !PinUsed(GPIO_TM1621_RD) || !PinUsed(GPIO_TM1621_DAT)) { return; }
- Tm1621.device = (14 == Pin(GPIO_TM1621_DAT)) ? TM1621_POWR316D : (5 == Pin(GPIO_TM1621_DAT)) ? TM1621_THR316D : TM1621_USER;
+ Tm1621.device = TM1621_USER;
+ uint32_t pin_tm1621_dat = Pin(GPIO_TM1621_DAT);
+ if (5 == Pin(GPIO_TM1621_DAT)) {
+ if (25 == Pin(GPIO_CSE7761_RX, 1)) {
+ Tm1621.device = TM1621_POWCT;
+ } else {
+ Tm1621.device = TM1621_THR316D;
+ }
+ }
+ else if (14 == Pin(GPIO_TM1621_DAT)) {
+ Tm1621.device = TM1621_POWR316D;
+ }
Tm1621.present = true;
Tm1621.pin_da = Pin(GPIO_TM1621_DAT);
Tm1621.pin_cs = Pin(GPIO_TM1621_CS);
@@ -312,7 +340,9 @@ void TM1621PreInit(void) {
Tm1621.state = 200;
- AddLog(LOG_LEVEL_INFO, PSTR("DSP: TM1621"));
+ char stemp[8];
+ AddLog(LOG_LEVEL_INFO, PSTR("DSP: TM1621 for %s"),
+ GetTextIndexed(stemp, sizeof(stemp), Tm1621.device, tm1621_device));
}
void TM1621Init(void) {
@@ -438,7 +468,8 @@ void TM1621Show(void) {
}
#ifdef USE_ENERGY_SENSOR
- if (TM1621_POWR316D == Tm1621.device) {
+ if ((TM1621_POWR316D == Tm1621.device) ||
+ (TM1621_POWCT == Tm1621.device)) {
if (0 == Tm1621.display_rotate) {
ext_snprintf_P(Tm1621.row[0], sizeof(Tm1621.row[0]), PSTR("%1_f"), &Energy->voltage[0]);
ext_snprintf_P(Tm1621.row[1], sizeof(Tm1621.row[1]), PSTR("%1_f"), &Energy->current[0]);
@@ -512,9 +543,17 @@ void TM1621EverySecond(void) {
\*********************************************************************************************/
const char kTm1621Commands[] PROGMEM = "Dsp|" // No prefix
- "Line|Speed";
+ "Line|"
+#ifdef TM1621_DEBUG
+ "Test|"
+#endif // TM1621_DEBUG
+ "Speed";
void (*const kTm1621Command[])(void) PROGMEM = {
- &CmndDspLine, &CmndDspSpeed };
+ &CmndDspLine,
+#ifdef TM1621_DEBUG
+ &CmndDspTest,
+#endif // TM1621_DEBUG
+ &CmndDspSpeed };
void CmndDspLine(void) {
// DspLine1 ,,,,... = Display specific JSON value and rotate between them
@@ -575,6 +614,22 @@ void CmndDspSpeed(void) {
ResponseCmndNumber(Xdrv87Settings.rotate);
}
+#ifdef TM1621_DEBUG
+void CmndDspTest(void) {
+ // Only one decimal is supported !!!
+ if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= 2)) {
+ if (XdrvMailbox.data_len > 0) {
+ uint32_t line = XdrvMailbox.index -1;
+ snprintf_P(Tm1621.row[0], sizeof(Tm1621.row[0]), PSTR("----"));
+ snprintf_P(Tm1621.row[1], sizeof(Tm1621.row[1]), PSTR("----"));
+ snprintf_P(Tm1621.row[line], sizeof(Tm1621.row[line]), PSTR("%s"), XdrvMailbox.data);
+ TM1621SendRows();
+ }
+ }
+ ResponseCmndDone();
+}
+#endif // TM1621_DEBUG
+
/*********************************************************************************************\
* Interface
\*********************************************************************************************/
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_88_esp32_shelly_pro.ino b/tasmota/tasmota_xdrv_driver/xdrv_88_esp32_shelly_pro.ino
index 20d0d01c7..00da8d88f 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_88_esp32_shelly_pro.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_88_esp32_shelly_pro.ino
@@ -91,7 +91,7 @@ bool ShellyProButton(void) {
if (button_index > 2) { return false; } // Only support Up, Down, Ok
uint32_t button = XdrvMailbox.payload;
- uint32_t last_state = XdrvMailbox.command_code;
+ uint32_t last_state = (XdrvMailbox.command_code & 0xFF);
if ((PRESSED == button) && (NOT_PRESSED == last_state)) { // Button pressed
AddLog(LOG_LEVEL_DEBUG, PSTR("SHP: Button %d pressed"), button_index +1);
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_88_esp32_shelly_pro_v2.ino b/tasmota/tasmota_xdrv_driver/xdrv_88_esp32_shelly_pro_v2.ino
index 06456b990..175ed8b8b 100644
--- a/tasmota/tasmota_xdrv_driver/xdrv_88_esp32_shelly_pro_v2.ino
+++ b/tasmota/tasmota_xdrv_driver/xdrv_88_esp32_shelly_pro_v2.ino
@@ -307,7 +307,7 @@ bool ShellyProButton(void) {
if (button_index > 2) { return false; } // Only support Up, Down, Ok
uint32_t button = XdrvMailbox.payload;
- uint32_t last_state = XdrvMailbox.command_code;
+ uint32_t last_state = (XdrvMailbox.command_code & 0xFF);
if ((PRESSED == button) && (NOT_PRESSED == last_state)) { // Button pressed
AddLog(LOG_LEVEL_DEBUG, PSTR("SHP: Button %d pressed"), button_index +1);
diff --git a/tasmota/tasmota_xdsp_display/xdsp_01_lcd.ino b/tasmota/tasmota_xdsp_display/xdsp_01_lcd.ino
index 2dff946f2..c70ac4bb3 100644
--- a/tasmota/tasmota_xdsp_display/xdsp_01_lcd.ino
+++ b/tasmota/tasmota_xdsp_display/xdsp_01_lcd.ino
@@ -149,9 +149,6 @@ bool LcdPrintLog(void)
}
strlcpy(disp_screen_buffer[last_row], txt, disp_screen_buffer_cols);
DisplayFillScreen(last_row);
-
- AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]);
-
lcd->setCursor(0, last_row);
lcd->print(disp_screen_buffer[last_row]);
diff --git a/tasmota/tasmota_xdsp_display/xdsp_03_matrix.ino b/tasmota/tasmota_xdsp_display/xdsp_03_matrix.ino
index c314d4982..d8a6d5fa4 100644
--- a/tasmota/tasmota_xdsp_display/xdsp_03_matrix.ino
+++ b/tasmota/tasmota_xdsp_display/xdsp_03_matrix.ino
@@ -267,9 +267,6 @@ void MatrixPrintLog(uint8_t direction)
}
i++;
}
-
- AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION "[%s]"), mtx_buffer);
-
mtx_done = 1;
}
diff --git a/tasmota/tasmota_xdsp_display/xdsp_05_epaper_29.ino b/tasmota/tasmota_xdsp_display/xdsp_05_epaper_29.ino
index 4c18e219b..959c4c48f 100644
--- a/tasmota/tasmota_xdsp_display/xdsp_05_epaper_29.ino
+++ b/tasmota/tasmota_xdsp_display/xdsp_05_epaper_29.ino
@@ -130,8 +130,6 @@ void EpdPrintLog29(void)
DisplayFillScreen(last_row);
renderer->DrawStringAt(0, epd_scroll, disp_screen_buffer[last_row], COLORED, 0);
// EpdDisplayFrame();
-
- AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION "[%s]"), txt);
}
}
}
diff --git a/tasmota/tasmota_xdsp_display/xdsp_15_tm1637.ino b/tasmota/tasmota_xdsp_display/xdsp_15_tm1637.ino
index 4d43d23ff..62b48632f 100644
--- a/tasmota/tasmota_xdsp_display/xdsp_15_tm1637.ino
+++ b/tasmota/tasmota_xdsp_display/xdsp_15_tm1637.ino
@@ -1203,9 +1203,6 @@ bool TM1637PrintLog(void) {
strlcpy(disp_screen_buffer[last_row], txt, disp_screen_buffer_cols);
DisplayFillScreen(last_row);
-
- AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]);
-
TM1637Print(disp_screen_buffer[last_row]);
result = true;
diff --git a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino
index e1845ccea..a8cfdccfc 100644
--- a/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino
+++ b/tasmota/tasmota_xdsp_display/xdsp_17_universal.ino
@@ -17,8 +17,7 @@
along with this program. If not, see .
*/
-
-#if defined(USE_DISPLAY)
+#ifdef USE_DISPLAY
#ifdef USE_UNIVERSAL_DISPLAY
#define XDSP_17 17
@@ -28,7 +27,6 @@
bool udisp_init_done = false;
uint8_t ctouch_counter;
-
#ifdef USE_UFILESYS
extern FS *ffsp;
#endif
@@ -38,8 +36,7 @@ extern FS *ffsp;
#undef CST816S_address
#define CST816S_address 0x15
-enum {GPIO_DP_RES=GPIO_SENSOR_END-1,GPIO_DP_CS,GPIO_DP_RS,GPIO_DP_WR,GPIO_DP_RD,GPIO_DPAR0,GPIO_DPAR1,GPIO_DPAR2,GPIO_DPAR3,GPIO_DPAR4,GPIO_DPAR5,GPIO_DPAR6,GPIO_DPAR7,GPIO_DPAR8,GPIO_DPAR9,GPIO_DPAR10,GPIO_DPAR11,GPIO_DPAR12,GPIO_DPAR13,GPIO_DPAR14,GPIO_DPAR15};
-
+enum { GPIO_DP_RES = GPIO_SENSOR_END-1,GPIO_DP_CS,GPIO_DP_RS,GPIO_DP_WR,GPIO_DP_RD,GPIO_DPAR0,GPIO_DPAR1,GPIO_DPAR2,GPIO_DPAR3,GPIO_DPAR4,GPIO_DPAR5,GPIO_DPAR6,GPIO_DPAR7,GPIO_DPAR8,GPIO_DPAR9,GPIO_DPAR10,GPIO_DPAR11,GPIO_DPAR12,GPIO_DPAR13,GPIO_DPAR14,GPIO_DPAR15};
#ifndef USE_DISPLAY
uint8_t color_type;
@@ -72,26 +69,20 @@ const char DSP_SAMPLE_DESC[] PROGMEM = DSP_ROM_DESC;
#endif // DSP_ROM_DESC
/*********************************************************************************************/
Renderer *Init_uDisplay(const char *desc) {
-char *ddesc = 0;
-char *fbuff;
-uDisplay *udisp;
-int8_t cs;
-
if (TasmotaGlobal.gpio_optiona.udisplay_driver || desc) {
Settings->display_model = XDSP_17;
-
- fbuff = (char*)calloc(DISPDESC_SIZE, 1);
+ char *fbuff = (char*)calloc(DISPDESC_SIZE, 1);
if (!fbuff) return 0;
+ char *ddesc = nullptr;
if (desc) {
memcpy_P(fbuff, desc, DISPDESC_SIZE - 1);
ddesc = fbuff;
- AddLog(LOG_LEVEL_DEBUG, PSTR("DSP: const char descriptor used"));
+ AddLog(LOG_LEVEL_DEBUG, PSTR("DSP: Const char descriptor used"));
}
-
#ifdef USE_UFILESYS
if (ffsp && !TasmotaGlobal.no_autoexec && !ddesc) {
File fp;
@@ -111,7 +102,6 @@ int8_t cs;
}
#endif // USE_UFILESYS
-
#ifdef USE_SCRIPT
if (bitRead(Settings->rule_enabled, 0) && !ddesc) {
uint8_t dfound = Run_Scripter(">d",-2,0);
@@ -137,13 +127,12 @@ int8_t cs;
if (fbuff[cnt] == ' ') fbuff[cnt] = '\n';
}
ddesc = fbuff;
- AddLog(LOG_LEVEL_DEBUG, PSTR("DSP: Rule 3 descriptor used"));
+ AddLog(LOG_LEVEL_DEBUG, PSTR("DSP: Rule3 descriptor used"));
}
}
#endif // USE_RULES
-
#ifdef DSP_ROM_DESC
if (!ddesc) {
memcpy_P(fbuff, DSP_SAMPLE_DESC, sizeof(DSP_SAMPLE_DESC));
@@ -154,90 +143,92 @@ int8_t cs;
if (!ddesc) {
AddLog(LOG_LEVEL_DEBUG, PSTR("DSP: No valid descriptor found"));
- if (fbuff) free(fbuff);
+ if (fbuff) {
+ free(fbuff);
+ }
return 0;
}
- // now replace tasmota vars before passing to driver
+ // Replace tasmota vars before passing to driver uDisplay.cpp
char *cp = strstr(ddesc, "I2C");
if (cp) {
+ // I2C,3c,22,21,*
+ // I2C1,3c,22,21,*
+ // I2C2,3c,22,21,*
cp += 3;
- uint8_t wire_n = 1;
+ // ,3c,22,21,*
+ // 1,3c,22,21,*
+ // 2,3c,22,21,*
+ uint8_t wire_n = 0;
if (*cp == '1' || *cp == '2') {
- wire_n = *cp & 3;
+ wire_n = (*cp & 3) - 1;
cp += 2;
} else {
cp++;
}
- //,3c,22,21,-1
+ // 3c,22,21,-1
uint8_t i2caddr = strtol(cp, &cp, 16);
- int8_t scl, sda;
- scl = replacepin(&cp, Pin(GPIO_I2C_SCL, wire_n - 1));
- sda = replacepin(&cp, Pin(GPIO_I2C_SDA, wire_n - 1));
+ // ,22,21,-1
+ cp++;
+ // 22,21,-1
+ int8_t scl = replacepin(&cp, Pin(GPIO_I2C_SCL, wire_n));
+ int8_t sda = replacepin(&cp, Pin(GPIO_I2C_SDA, wire_n));
replacepin(&cp, Pin(GPIO_OLED_RESET));
- if (wire_n == 1) {
+ if (wire_n == 0) {
if (!TasmotaGlobal.i2c_enabled) {
I2cBegin(sda, scl);
}
}
#ifdef ESP32
- if (wire_n == 2) {
+ if (wire_n == 1) {
if (!TasmotaGlobal.i2c_enabled_2) {
I2c2Begin(sda, scl);
}
}
- if (I2cSetDevice(i2caddr, wire_n - 1)) {
- I2cSetActiveFound(i2caddr, "DSP-I2C", wire_n - 1);
- }
#endif // ESP32
-
-#ifdef ESP8266
- if (I2cSetDevice(i2caddr)) {
- I2cSetActiveFound(i2caddr, "DSP-I2C");
+ if (I2cSetDevice(i2caddr, wire_n)) {
+ char display_name[16] = { 0 }; // Loosly related to dname in uDisplay.h
+ strcpy_P(display_name, PSTR("Display"));
+ cp = strstr(ddesc, ":H,");
+ if (cp) {
+ // :H,SH1106,128,64,1,I2C,3c,22,21,*
+ cp += 3;
+ char *lp = strchr(cp, ',');
+ if (lp) {
+ uint32_t len = lp - cp +1;
+ if (len < sizeof(display_name)) {
+ strlcpy(display_name, cp, len);
+ }
+ }
+ }
+ I2cSetActiveFound(i2caddr, display_name, wire_n);
}
-#endif // ESP8266
- //AddLog(LOG_LEVEL_INFO, PSTR("DSP: i2c %x, %d, %d, %d!"), i2caddr, wire_n, scl, sda);
}
cp = strstr(ddesc, "SPI,");
if (cp) {
+ // 9 params nr,cs,sclk,mosi,dc,bl,reset,miso,mhz
+ // SPI,1,*,*,*,*,*,*,*,80
+ // SPI,3,*,*,*,*,*,*,*,40
cp += 4;
- //; 7 params nr,cs,sclk,mosi,dc,bl,reset,miso
- //SPI,*,*,*,*,*,*,*
- switch (*cp) {
- case '1':
- cs = Pin(GPIO_SPI_CS);
- break;
- case '2':
- cs = Pin(GPIO_SPI_CS, 1);
- break;
- default:
- cs = Pin(GPIO_SSPI_CS);
- break;
+ // 1,*,*,*,*,*,*,*,80
+ uint32_t spi_type = 2; // SPI,3 = Software SPI
+ if ((*cp == '1') || (*cp == '2')) {
+ spi_type = *cp - '1'; // SPI,1 = 0, SPI,2 = 1 etc
}
- if (*cp == '1') {
- cp+=2;
- replacepin(&cp, cs);
- replacepin(&cp, Pin(GPIO_SPI_CLK));
- replacepin(&cp, Pin(GPIO_SPI_MOSI));
- replacepin(&cp, Pin(GPIO_SPI_DC));
+ cp += 2;
+ // *,*,*,*,*,*,*,80
+ if (spi_type < 2) { // SPI,1 or SPI,2
+ replacepin(&cp, Pin(GPIO_SPI_CS, spi_type));
+ replacepin(&cp, Pin(GPIO_SPI_CLK, spi_type));
+ replacepin(&cp, Pin(GPIO_SPI_MOSI, spi_type));
+ replacepin(&cp, Pin(GPIO_SPI_DC, spi_type));
replacepin(&cp, Pin(GPIO_BACKLIGHT));
replacepin(&cp, Pin(GPIO_OLED_RESET));
- replacepin(&cp, Pin(GPIO_SPI_MISO));
- } else if (*cp == '2') {
- cp+=2;
- replacepin(&cp, cs);
- replacepin(&cp, Pin(GPIO_SPI_CLK, 1));
- replacepin(&cp, Pin(GPIO_SPI_MOSI, 1));
- replacepin(&cp, Pin(GPIO_SPI_DC, 1));
- replacepin(&cp, Pin(GPIO_BACKLIGHT));
- replacepin(&cp, Pin(GPIO_OLED_RESET));
- replacepin(&cp, Pin(GPIO_SPI_MISO, 1));
- } else {
- // soft spi pins
- cp+=2;
- replacepin(&cp, cs);
+ replacepin(&cp, Pin(GPIO_SPI_MISO, spi_type));
+ } else { // SPI,3 is software SPI
+ replacepin(&cp, Pin(GPIO_SSPI_CS));
replacepin(&cp, Pin(GPIO_SSPI_SCLK));
replacepin(&cp, Pin(GPIO_SSPI_MOSI));
replacepin(&cp, Pin(GPIO_SSPI_DC));
@@ -247,23 +238,36 @@ int8_t cs;
}
}
- cp = strstr(ddesc, ":UTI");
+ cp = strstr(ddesc, ":UTI,");
if (cp) {
- cp += 4; // skip ":UTI"
- cp = strchr(cp, ','); // skip device name
+ // :UTI,FT3267,I1,38,-1,-1
+ // :UTI,FT5206,I1,38,-1,-1
+ // :UTI,FT5206,I2,38,*,*
+ // :UTI,FT6236,I1,38,-1,-1
+ // :UTI,FT6336U,I2,38,-1,-1
+ // :UTI,FT6336U,I1,38,*,*
+ // :UTI,GT911,I1,5d,-1,-1
+ // :UTI,XPT2046,S1,*,*,*
+ // :UTI,SRES,R
+ cp += 5; // Skip ":UTI,"
+ // FT5206,I1,38,-1,-1
+ cp = strchr(cp, ','); // Skip name
+ // ,I1,38,-1,-1
cp++;
- cp = strchr(cp, ',');
- cp++;
- if (*cp == 'I') { // I= I2C
- cp = strchr(cp, ','); // skip interface type
- cp++;
- cp = strchr(cp, ','); // skip I2C bus number
+ // I1,38,-1,-1
+ // S1,*,*,*
+ if (*cp == 'I') { // I = I2C
+ cp += 3; // Skip interface type and bus
+ // 38,-1,-1
+ cp = strchr(cp, ','); // Skip I2C address
+ // ,-1,-1
cp++;
+ // -1,-1
replacepin(&cp, Pin(GPIO_TS_RST));
replacepin(&cp, Pin(GPIO_TS_IRQ));
- } else if (*cp == 'S') { // S= SPI
- cp = strchr(cp, ','); // skip interface type
- cp++;
+ } else if (*cp == 'S') { // S = SPI
+ cp += 3; // Skip interface type and bus
+ // *,*,*
replacepin(&cp, Pin(GPIO_TS_SPI_CS));
replacepin(&cp, Pin(GPIO_TS_RST));
replacepin(&cp, Pin(GPIO_TS_IRQ));
@@ -287,11 +291,14 @@ int8_t cs;
cp = strstr(ddesc, "PAR,");
if (cp) {
+ // PAR,8,41,40,39,38,42,-1,8,9,10,11,12,13,14,15,20
+ // PAR,16,-1,37,36,35,48,45,47,21,14,13,12,11,10,9,3,8,16,15,7,6,5,4,20
cp += 4;
+ // 8,41,40,39,38,42,-1,8,9,10,11,12,13,14,15,20
// 8 or 16 bus
uint8_t mode = strtol(cp, &cp, 10);
cp++;
-
+ // 41,40,39,38,42,-1,8,9,10,11,12,13,14,15,20
replacepin(&cp, Pin(GPIO_DP_RES));
xm = replacepin(&cp, Pin(GPIO_DP_CS));
yp = replacepin(&cp, Pin(GPIO_DP_RS));
@@ -334,31 +341,32 @@ int8_t cs;
AddLog(LOG_LEVEL_DEBUG, PSTR("DSP: reinit"));
}
- udisp = new uDisplay(ddesc);
+ uDisplay *udisp = new uDisplay(ddesc);
- // checck for touch option TI1 or TI2
+ // check for touch option TI1 or TI2
#if defined (USE_CST816S) || defined(USE_FT5206) || defined(USE_GT911)
cp = strstr(ddesc, ":TI");
if (cp) {
- uint8_t wire_n = 1;
+ // :TI1,38,39,38
+ // :TI2,38,22,21
cp += 3;
- wire_n = (*cp & 3) - 1;
+ // 1,38,39,38
+ uint8_t wire_n = (*cp & 3) - 1;
cp += 2;
-
+ // 38,39,38
uint8_t i2caddr = strtol(cp, &cp, 16);
- int8_t scl, sda, irq = -1, rst = -1;
- scl = replacepin(&cp, Pin(GPIO_I2C_SCL, wire_n));
- sda = replacepin(&cp, Pin(GPIO_I2C_SDA, wire_n));
+ cp++;
+ // 39,38
+ int8_t scl = replacepin(&cp, Pin(GPIO_I2C_SCL, wire_n));
+ int8_t sda = replacepin(&cp, Pin(GPIO_I2C_SDA, wire_n));
+ int8_t irq = -1;
if (*(cp - 1) == ',') {
irq = strtol(cp, &cp, 10);
- } else {
- irq = -1;
}
+ int8_t rst = -1;
if (*cp == ',') {
cp++;
rst = strtol(cp, &cp, 10);
- } else {
- rst = -1;
}
if (wire_n == 0) {
@@ -372,6 +380,7 @@ int8_t cs;
I2c2Begin(sda, scl, 400000);
}
}
+#endif // ESP32
if (I2cSetDevice(i2caddr, wire_n)) {
if (i2caddr == GT911_address) {
I2cSetActiveFound(i2caddr, "GT911", wire_n);
@@ -381,63 +390,44 @@ int8_t cs;
I2cSetActiveFound(i2caddr, "FT5206", wire_n);
}
}
-#endif // ESP32
-#ifdef ESP8266
- //AddLog(LOG_LEVEL_INFO, PSTR("DSP: touch %x, %d, %d, %d!"), i2caddr, wire_n, scl, sda);
- if (I2cSetDevice(i2caddr)) {
- if (i2caddr == GT911_address) {
- I2cSetActiveFound(i2caddr, "GT911");
- } else if (i2caddr == CST816S_address) {
- I2cSetActiveFound(i2caddr, "CST816S");
- } else {
- I2cSetActiveFound(i2caddr, "FT5206");
- }
- }
-#endif // ESP8266
-
- // start digitizer
-
-#ifdef ESP32
+ // Start digitizer
if (i2caddr == GT911_address) {
#ifdef USE_GT911
- if (!wire_n) GT911_Touch_Init(&Wire, irq, rst, xs, ys);
- else GT911_Touch_Init(&Wire1, irq, rst, xs, ys);
-#endif
- } else if (i2caddr == CST816S_address) {
+ if (!wire_n) {
+ GT911_Touch_Init(&Wire, irq, rst, xs, ys);
+ }
+#ifdef ESP32
+ else {
+ GT911_Touch_Init(&Wire1, irq, rst, xs, ys);
+ }
+#endif // ESP32
+#endif // USE_GT911
+ }
+ else if (i2caddr == CST816S_address) {
#ifdef USE_CST816S
CST816S_Touch_Init(wire_n, irq, rst);
-#endif
- } else {
+#endif // USE_CST816S
+ }
+ else {
#ifdef USE_FT5206
- if (!wire_n) FT5206_Touch_Init(Wire);
- else FT5206_Touch_Init(Wire1);
-#endif
+ if (!wire_n) {
+ FT5206_Touch_Init(Wire);
+ }
+#ifdef ESP32
+ else {
+ FT5206_Touch_Init(Wire1);
+ }
+#endif // ESP32
+#endif // USE_FT5206
}
-
-#else
-
- if (i2caddr == GT911_address) {
-#ifdef USE_GT911
- if (!wire_n) GT911_Touch_Init(&Wire, irq, rst, xs, ys);
-#endif
- } else if (i2caddr == CST816S_address) {
-#ifdef USE_CST816S
- CST816S_Touch_Init(wire_n, irq, rst);
-#endif
- } else {
-#ifdef USE_FT5206
- if (!wire_n) FT5206_Touch_Init(Wire);
-#endif
- }
-#endif // ESP32
-
}
#endif // USE_FT5206 || GT911
#ifdef USE_XPT2046
cp = strstr(ddesc, ":TS,");
if (cp) {
+ // :TS,16
cp += 4;
uint8_t touch_cs = replacepin(&cp, Pin(GPIO_XPT2046_CS));
int8_t irqpin = -1;
@@ -483,6 +473,7 @@ int8_t cs;
color_type = renderer->color_type();
renderer->DisplayInit(DISPLAY_INIT_MODE, Settings->display_size, inirot, Settings->display_font);
+ renderer->clearDisplay();
Settings->display_width = renderer->width();
Settings->display_height = renderer->height();
@@ -504,13 +495,13 @@ int8_t cs;
ApplyDisplayDimmer();
#ifdef SHOW_SPLASH
- if (!Settings->flag5.display_no_splash) {
+ if (!Settings->flag5.display_no_splash) { // SetOption135 - (Display & LVGL) force disabling default splash screen
renderer->Splash();
}
#endif // SHOW_SPLASH
udisp_init_done = true;
- AddLog(LOG_LEVEL_INFO, PSTR("DSP: Configured display '%s'"), renderer->devname());
+ AddLog(LOG_LEVEL_INFO, PSTR("DSP: %s initialized"), renderer->devname());
return renderer;
}
@@ -520,18 +511,21 @@ int8_t cs;
/*********************************************************************************************/
int8_t replacepin(char **cp, int16_t pin) {
- int8_t res = 0;
+ // cp = 6,*,* and pin = 4 => lp = 6,*,* and cp = *,*
+ // cp = *,*,* and pin = 4 => lp = 4,*,* and cp = *,*
+ // cp = ,*,* and pin = 4 => lp = 4,*,* and cp = *,*
char *lp = *cp;
- if (*lp == ',') lp++;
- if (*lp == '*') {
+ if ((*lp == '*') || (*lp == ',')) {
char val[8];
itoa(pin, val, 10);
uint16_t slen = strlen(val);
//AddLog(LOG_LEVEL_INFO, PSTR("replace pin: %d"), pin);
- memmove(lp + slen, lp + 1, strlen(lp));
+ uint32_t idx = 0;
+ if (*lp == '*') { idx++; }
+ memmove(lp + slen, lp + idx, strlen(lp));
memmove(lp, val, slen);
}
- res= strtol(lp, 0, 10);
+ int8_t res = strtol(lp, 0, 10);
char *np = strchr(lp, ',');
if (np) {
*cp = np + 1;
@@ -539,42 +533,46 @@ int8_t replacepin(char **cp, int16_t pin) {
return res;
}
+/*********************************************************************************************/
+
#ifdef USE_DISPLAY_MODES1TO5
-void UDISP_PrintLog(void)
-{
- disp_refresh--;
- if (!disp_refresh) {
- disp_refresh = Settings->display_refresh;
- if (!disp_screen_buffer_cols) { DisplayAllocScreenBuffer(); }
+void UDISP_PrintLog(void) {
+ // This can take over 3 seconds depending on renderer->Updateframe() speed
+ // due to not connected busy pin (configure as MISO)
+ static bool printlog_mutex = false;
- char* txt = DisplayLogBuffer('\370');
- if (txt != NULL) {
- uint8_t last_row = Settings->display_rows -1;
-
- renderer->clearDisplay();
- renderer->setTextSize(Settings->display_size);
- renderer->setCursor(0,0);
- for (byte i = 0; i < last_row; i++) {
- strlcpy(disp_screen_buffer[i], disp_screen_buffer[i +1], disp_screen_buffer_cols);
- renderer->println(disp_screen_buffer[i]);
- }
- strlcpy(disp_screen_buffer[last_row], txt, disp_screen_buffer_cols);
- DisplayFillScreen(last_row);
-
- AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]);
-
- renderer->println(disp_screen_buffer[last_row]);
- renderer->Updateframe();
- }
+ if (disp_refresh) { disp_refresh--; }
+ if (disp_refresh || printlog_mutex || TasmotaGlobal.restart_flag || TasmotaGlobal.ota_state_flag) {
+ return;
}
+ printlog_mutex = true;
+ disp_refresh = Settings->display_refresh;
+ if (!disp_screen_buffer_cols) { DisplayAllocScreenBuffer(); }
+
+ char* txt = DisplayLogBuffer('\370');
+ if (txt != nullptr) {
+ uint8_t last_row = Settings->display_rows -1;
+
+// renderer->clearDisplay();
+ renderer->setTextSize(Settings->display_size);
+ renderer->setCursor(0,0);
+ for (byte i = 0; i < last_row; i++) {
+ strlcpy(disp_screen_buffer[i], disp_screen_buffer[i +1], disp_screen_buffer_cols);
+ renderer->println(disp_screen_buffer[i]);
+ }
+ strlcpy(disp_screen_buffer[last_row], txt, disp_screen_buffer_cols);
+ DisplayFillScreen(last_row);
+ renderer->println(disp_screen_buffer[last_row]);
+ renderer->Updateframe();
+ }
+ printlog_mutex = false;
}
-void UDISP_Time(void)
-{
+void UDISP_Time(void) {
char line[12];
- renderer->clearDisplay();
+// renderer->clearDisplay();
renderer->setTextSize(Settings->display_size);
renderer->setTextFont(Settings->display_font);
renderer->setCursor(0, 0);
@@ -586,8 +584,7 @@ void UDISP_Time(void)
renderer->Updateframe();
}
-void UDISP_Refresh(void) // Every second
-{
+void UDISP_Refresh(void) { // Every second
if (!renderer) return;
if (Settings->display_mode) { // Mode 0 is User text
switch (Settings->display_mode) {
diff --git a/tasmota/tasmota_xnrg_energy/xnrg_04_mcp39f501.ino b/tasmota/tasmota_xnrg_energy/xnrg_04_mcp39f501.ino
index 1c4695b4d..f3b6a580b 100644
--- a/tasmota/tasmota_xnrg_energy/xnrg_04_mcp39f501.ino
+++ b/tasmota/tasmota_xnrg_energy/xnrg_04_mcp39f501.ino
@@ -604,7 +604,7 @@ bool McpCommand(void)
if (CMND_POWERSET == Energy->command_code) {
if (XdrvMailbox.data_len && mcp_active_power) {
value = (unsigned long)(CharToFloat(XdrvMailbox.data) * 100);
- if ((value > 100) && (value < 200000)) { // Between 1W and 2000W
+ if ((value > 100) && (value < 2000000)) { // Between 1W and 20000W
XdrvMailbox.payload = value;
mcp_calibrate |= MCP_CALIBRATE_POWER;
McpGetCalibration();
@@ -614,7 +614,7 @@ bool McpCommand(void)
else if (CMND_VOLTAGESET == Energy->command_code) {
if (XdrvMailbox.data_len && mcp_voltage_rms) {
value = (unsigned long)(CharToFloat(XdrvMailbox.data) * 10);
- if ((value > 1000) && (value < 2600)) { // Between 100V and 260V
+ if ((value > 1000) && (value < 4000)) { // Between 100V and 400V
XdrvMailbox.payload = value;
mcp_calibrate |= MCP_CALIBRATE_VOLTAGE;
McpGetCalibration();
@@ -624,7 +624,7 @@ bool McpCommand(void)
else if (CMND_CURRENTSET == Energy->command_code) {
if (XdrvMailbox.data_len && mcp_current_rms) {
value = (unsigned long)(CharToFloat(XdrvMailbox.data) * 10);
- if ((value > 100) && (value < 80000)) { // Between 10mA and 8A
+ if ((value > 100) && (value < 800000)) { // Between 10mA and 80A
XdrvMailbox.payload = value;
mcp_calibrate |= MCP_CALIBRATE_CURRENT;
McpGetCalibration();
diff --git a/tasmota/tasmota_xnrg_energy/xnrg_07_ade7953.ino b/tasmota/tasmota_xnrg_energy/xnrg_07_ade7953.ino
index 526950d1d..30330d1fe 100644
--- a/tasmota/tasmota_xnrg_energy/xnrg_07_ade7953.ino
+++ b/tasmota/tasmota_xnrg_energy/xnrg_07_ade7953.ino
@@ -829,7 +829,7 @@ bool Ade7953Command(void) {
}
else if (CMND_POWERSET == Energy->command_code) {
if (XdrvMailbox.data_len && Ade7953.active_power[channel]) {
- if ((value > 100) && (value < 200000)) { // Between 1W and 2000W
+ if ((value > 100) && (value < 2000000)) { // Between 1W and 20000W
#ifdef ADE7953_ACCU_ENERGY
float power_calibration = (float)(Ade7953.active_power[channel] * 1000) / value; // 0.00 W
power_calibration *= ADE7953_POWER_CORRECTION;
@@ -842,14 +842,14 @@ bool Ade7953Command(void) {
}
else if (CMND_VOLTAGESET == Energy->command_code) {
if (XdrvMailbox.data_len && Ade7953.voltage_rms[channel]) {
- if ((value > 10000) && (value < 26000)) { // Between 100V and 260V
+ if ((value > 10000) && (value < 40000)) { // Between 100V and 400V
XdrvMailbox.payload = (Ade7953.voltage_rms[channel] * 100) / value; // 0.00 V
}
}
}
else if (CMND_CURRENTSET == Energy->command_code) {
if (XdrvMailbox.data_len && Ade7953.current_rms[channel]) {
- if ((value > 2000) && (value < 1000000)) { // Between 20mA and 10A
+ if ((value > 2000) && (value < 10000000)) { // Between 20mA and 100A
XdrvMailbox.payload = ((Ade7953.current_rms[channel] * 100) / value) * 100; // 0.00 mA
}
}
diff --git a/tasmota/tasmota_xnrg_energy/xnrg_10_sdm630.ino b/tasmota/tasmota_xnrg_energy/xnrg_10_sdm630.ino
index 826d6a1e1..45174c976 100644
--- a/tasmota/tasmota_xnrg_energy/xnrg_10_sdm630.ino
+++ b/tasmota/tasmota_xnrg_energy/xnrg_10_sdm630.ino
@@ -39,6 +39,36 @@
#include
TasmotaModbus *Sdm630Modbus;
+#ifdef SDM630_HIGH_UPDATE_RATE
+struct sSdm630RequestConfig{
+ uint16_t startAddress;
+ uint8_t registerToRead; // according to spec: max 80 register can be read a once
+};
+
+const struct sSdm630RequestConfig sdm630ReqConf[] {
+ {0x0000, 18*2}, // 0x0000 - 0x0025
+ {0x0046, 1*2}, // 0x0046
+ {0x0156, 8*2} // 0x0156 - 0x0165
+};
+
+struct SDM630 {
+ uint8_t read_state = 0;
+ uint8_t send_retry = 0;
+} Sdm630;
+
+
+/* convert data buffer to float value according to IEEE754 */
+float convBufToFloat(uint8_t *buffer)
+{
+ float value;
+
+ ((uint8_t*)&value)[3] = buffer[0]; // Get float values
+ ((uint8_t*)&value)[2] = buffer[1];
+ ((uint8_t*)&value)[1] = buffer[2];
+ ((uint8_t*)&value)[0] = buffer[3];
+ return value;
+}
+#else
const uint16_t sdm630_start_addresses[] {
// 3P4 3P3 1P2 Unit Description
0x0000, // + - + V Phase 1 line to neutral volts
@@ -72,17 +102,26 @@ struct SDM630 {
uint8_t read_state = 0;
uint8_t send_retry = 0;
} Sdm630;
+#endif
/*********************************************************************************************/
+#ifdef SDM630_HIGH_UPDATE_RATE
+uint8_t sdm630ReadBuffer[128]; // at least 5 + (2*max_RegisterToRead)
+#endif
+
void SDM630Every250ms(void)
{
bool data_ready = Sdm630Modbus->ReceiveReady();
if (data_ready) {
+#ifdef SDM630_HIGH_UPDATE_RATE
+ uint8_t* buffer = &sdm630ReadBuffer[0];
+ uint32_t error = Sdm630Modbus->ReceiveBuffer(buffer, sdm630ReqConf[Sdm630.read_state].registerToRead);
+#else
uint8_t buffer[14]; // At least 5 + (2 * 2) = 9
-
uint32_t error = Sdm630Modbus->ReceiveBuffer(buffer, 2);
+#endif
AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, Sdm630Modbus->ReceiveCount());
if (error) {
@@ -92,6 +131,7 @@ void SDM630Every250ms(void)
Energy->data_valid[1] = 0;
Energy->data_valid[2] = 0;
+#ifndef SDM630_HIGH_UPDATE_RATE
// 0 1 2 3 4 5 6 7 8
// SA FC BC Fh Fl Sh Sl Cl Ch
// 01 04 04 43 66 33 34 1B 38 = 230.2 Volt
@@ -100,8 +140,64 @@ void SDM630Every250ms(void)
((uint8_t*)&value)[2] = buffer[4];
((uint8_t*)&value)[1] = buffer[5];
((uint8_t*)&value)[0] = buffer[6];
+#endif
switch(Sdm630.read_state) {
+#ifdef SDM630_HIGH_UPDATE_RATE
+ case 0: // start address 0x0000 // 3P4 3P3 1P2 Unit Description
+ Energy->voltage[0] = convBufToFloat(&buffer[3]); // + - + V Phase 1 line to neutral volts
+ Energy->voltage[1] = convBufToFloat(&buffer[7]); // + - - V Phase 2 line to neutral volts
+ Energy->voltage[2] = convBufToFloat(&buffer[11]); // + - - V Phase 3 line to neutral volts
+
+ //0x0006
+ Energy->current[0] = convBufToFloat(&buffer[15]); // + + + A Phase 1 current
+ Energy->current[1] = convBufToFloat(&buffer[19]); // + + - A Phase 2 current
+ Energy->current[2] = convBufToFloat(&buffer[23]); // + + - A Phase 3 current
+
+ //0x000C
+ Energy->active_power[0] = convBufToFloat(&buffer[27]); // + - + W Phase 1 power
+ Energy->active_power[1] = convBufToFloat(&buffer[31]); // + - - W Phase 2 power
+ Energy->active_power[2] = convBufToFloat(&buffer[35]); // + - - W Phase 3 power
+
+ //0x0012
+ Energy->apparent_power[0] = convBufToFloat(&buffer[39]); // + - + VA Phase 1 volt amps
+ Energy->apparent_power[1] = convBufToFloat(&buffer[43]); // + - - VA Phase 2 volt amps
+ Energy->apparent_power[2] = convBufToFloat(&buffer[47]); // + - - VA Phase 3 volt amps
+
+ //0x0018
+ Energy->reactive_power[0] = convBufToFloat(&buffer[51]); // + - + VAr Phase 1 volt amps reactive
+ Energy->reactive_power[1] = convBufToFloat(&buffer[55]); // + - - VAr Phase 2 volt amps reactive
+ Energy->reactive_power[2] = convBufToFloat(&buffer[59]); // + - - VAr Phase 3 volt amps reactive
+
+ //0x001E
+ Energy->power_factor[0] = convBufToFloat(&buffer[63]); // + - + Phase 1 power factor
+ Energy->power_factor[1] = convBufToFloat(&buffer[67]); // + - - Phase 2 power factor
+ Energy->power_factor[2] = convBufToFloat(&buffer[71]); // + - - Phase 3 power factor
+ break;
+
+ case 1: // start address 0x0046
+ Energy->frequency[0] = convBufToFloat(&buffer[3]); // + + + Hz Frequency of supply voltages
+ break;
+
+ case 2: // start address 0x0156
+ // 0x0156 // + + + kWh Total active energy
+ // 0x0158 // + + + kvarh Total reactive energy
+
+#ifdef SDM630_IMPORT
+ //0x015A
+ Energy->import_active[0] = convBufToFloat(&buffer[11]); // + + + kWh Phase 1 import active energy
+ Energy->import_active[1] = convBufToFloat(&buffer[15]); // + + + kWh Phase 2 import active energy
+ Energy->import_active[2] = convBufToFloat(&buffer[19]); // + + + kWh Phase 3 import active energy
+#endif
+ //0x0160
+ Energy->export_active[0] = convBufToFloat(&buffer[23]); // + + + kWh Phase 1 export active energy
+ Energy->export_active[1] = convBufToFloat(&buffer[27]); // + + + kWh Phase 2 export active energy
+ Energy->export_active[2] = convBufToFloat(&buffer[31]); // + + + kWh Phase 3 export active energy
+
+ EnergyUpdateTotal();
+ break;
+
+#else //old sdm630 implementation
case 0:
Energy->voltage[0] = value;
break;
@@ -194,10 +290,15 @@ void SDM630Every250ms(void)
// Energy->import_active[0] = value;
EnergyUpdateTotal();
break;
+#endif
}
Sdm630.read_state++;
+#ifdef SDM630_HIGH_UPDATE_RATE
+ if ( nitems(sdm630ReqConf) == Sdm630.read_state) {
+#else
if (sizeof(sdm630_start_addresses)/2 == Sdm630.read_state) {
+#endif
Sdm630.read_state = 0;
}
}
@@ -205,7 +306,11 @@ void SDM630Every250ms(void)
if (0 == Sdm630.send_retry || data_ready) {
Sdm630.send_retry = 5;
+#ifdef SDM630_HIGH_UPDATE_RATE
+ Sdm630Modbus->Send(SDM630_ADDR, 0x04, sdm630ReqConf[Sdm630.read_state].startAddress, sdm630ReqConf[Sdm630.read_state].registerToRead);
+#else
Sdm630Modbus->Send(SDM630_ADDR, 0x04, sdm630_start_addresses[Sdm630.read_state], 2);
+#endif
} else {
Sdm630.send_retry--;
}
diff --git a/tasmota/tasmota_xnrg_energy/xnrg_19_cse7761.ino b/tasmota/tasmota_xnrg_energy/xnrg_19_cse7761.ino
index 09a454201..2f1493c58 100644
--- a/tasmota/tasmota_xnrg_energy/xnrg_19_cse7761.ino
+++ b/tasmota/tasmota_xnrg_energy/xnrg_19_cse7761.ino
@@ -20,7 +20,7 @@
#ifdef USE_ENERGY_SENSOR
#ifdef USE_CSE7761
/*********************************************************************************************\
- * CSE7761 - Energy (Sonoff Dual R3 Pow)
+ * CSE7761 - Energy (Sonoff Dual R3 and Pow CT)
*
* Without zero-cross detection
* {"NAME":"Sonoff Dual R3","GPIO":[32,0,0,0,0,0,0,0,0,576,225,0,0,0,0,0,0,0,0,0,0,7296,7328,224,0,0,0,0,160,161,0,0,0,0,0,0],"FLAG":0,"BASE":1}
@@ -28,6 +28,8 @@
* With zero-cross detection
* {"NAME":"Sonoff Dual R3 (ZCD)","GPIO":[32,0,0,0,7552,0,0,0,0,576,225,0,0,0,0,0,0,0,0,0,0,7296,7328,224,0,0,0,0,160,161,0,0,0,0,0,0],"FLAG":0,"BASE":1}
*
+ * {"NAME":"Sonoff POWCT","GPIO":[32,0,0,0,0,9280,0,0,0,288,0,576,0,9184,9216,0,0,224,0,9248,0,7329,7296,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
+ *
* Based on datasheet from ChipSea and analysing serial data
* See https://github.com/arendst/Tasmota/discussions/10793
* https://goldenrelay.en.alibaba.com/product/62119012875-811845870/GOLDEN_GI_1A_5LH_SPST_5V_5A_10A_250VAC_NO_18_5_10_5_15_3mm_sealed_type_all_certificate_compliances_class_F_SPDT_Form_available.html
@@ -88,6 +90,8 @@ enum CSE7761 { RmsIAC, RmsIBC, RmsUC, PowerPAC, PowerPBC, PowerSC, EnergyAC, Ene
TasmotaSerial *Cse7761Serial = nullptr;
+enum CSE7761Model { CSE7761_MODEL_DUALR3, CSE7761_MODEL_POWCT }; // Model index number starting from 0
+
struct {
uint32_t frequency = 0;
uint32_t voltage_rms = 0;
@@ -98,6 +102,7 @@ struct {
uint8_t energy_update[2] = { 0 };
uint8_t init = 4;
uint8_t ready = 0;
+ uint8_t model;
} CSE7761Data;
/********************************************************************************************/
@@ -196,10 +201,14 @@ uint32_t Cse7761ReadFallback(uint32_t reg, uint32_t prev, uint32_t size) {
/********************************************************************************************/
uint32_t Cse7761Ref(uint32_t unit) {
+ uint32_t coeff = 1;
+ if (CSE7761_MODEL_POWCT == CSE7761Data.model) {
+ coeff = 5;
+ }
switch (unit) {
case RmsUC: return 0x400000 * 100 / CSE7761Data.coefficient[RmsUC];
- case RmsIAC: return (0x800000 * 100 / CSE7761Data.coefficient[RmsIAC]) * 10; // Stay within 32 bits
- case PowerPAC: return 0x80000000 / CSE7761Data.coefficient[PowerPAC];
+ case RmsIAC: return (0x800000 * 100 / (CSE7761Data.coefficient[RmsIAC] * coeff)) * 10; // Stay within 32 bits
+ case PowerPAC: return 0x80000000 / (CSE7761Data.coefficient[PowerPAC] * coeff);
}
return 0;
}
@@ -250,124 +259,129 @@ bool Cse7761ChipInit(void) {
Bit name Function description
15-11 NC -, the default is 1
10 ADC2ON
- =1, means ADC current channel B is on (Sonoff Dual R3 Pow)
- =0, means ADC current channel B is closed
+ =1, means ADC current channel B is on (Sonoff Dual R3)
+ =0, means ADC current channel B is closed (Pow CT)
9 NC -, the default is 1.
8-6 PGAIB[2:0] Current channel B analog gain selection highest bit
- =1XX, PGA of current channel B=16 (Sonoff Dual R3 Pow)
+ =1XX, PGA of current channel B=16 (Sonoff Dual R3)
=011, PGA of current channel B=8
=010, PGA of current channel B=4
=001, PGA of current channel B=2
- =000, PGA of current channel B=1
+ =000, PGA of current channel B=1 (Pow CT)
5-3 PGAU[2:0] Highest bit of voltage channel analog gain selection
=1XX, PGA of voltage U=16
=011, PGA of voltage U=8
=010, PGA of voltage U=4
=001, PGA of voltage U=2
- =000, PGA of voltage U=1 (Sonoff Dual R3 Pow)
+ =000, PGA of voltage U=1 (Sonoff Dual R3 / Pow CT)
2-0 PGAIA[2:0] Current channel A analog gain selection highest bit
- =1XX, PGA of current channel A=16 (Sonoff Dual R3 Pow)
+ =1XX, PGA of current channel A=16 (Sonoff Dual R3)
=011, PGA of current channel A=8
=010, PGA of current channel A=4
=001, PGA of current channel A=2
- =000, PGA of current channel A=1
+ =000, PGA of current channel A=1 (Pow CT)
*/
- Cse7761Write(CSE7761_REG_SYSCON | 0x80, 0xFF04);
+ if (CSE7761_MODEL_POWCT == CSE7761Data.model) {
+// Cse7761Write(CSE7761_REG_SYSCON | 0x80, 0x0A00); // Pow CT
+ Cse7761Write(CSE7761_REG_SYSCON | 0x80, 0xFE00); // Pow CT - Tasmota (enable B)
+ } else {
+ Cse7761Write(CSE7761_REG_SYSCON | 0x80, 0xFF04); // Sonoff Dual R3
+ }
/*
Energy Measure Control Register (EMUCON) Addr:0x01 Default value: 0x0000
Bit name Function description
15-14 Tsensor_Step[1:0] Measurement steps of temperature sensor:
- =2'b00 The first step of temperature sensor measurement, the Offset of OP1 and OP2 is +/+. (Sonoff Dual R3 Pow)
+ =2'b00 The first step of temperature sensor measurement, the Offset of OP1 and OP2 is +/+. (Sonoff Dual R3 / Pow CT)
=2'b01 The second step of temperature sensor measurement, the Offset of OP1 and OP2 is +/-.
=2'b10 The third step of temperature sensor measurement, the Offset of OP1 and OP2 is -/+.
=2'b11 The fourth step of temperature sensor measurement, the Offset of OP1 and OP2 is -/-.
After measuring these four results and averaging, the AD value of the current measured temperature can be obtained.
13 tensor_en Temperature measurement module control
- =0 when the temperature measurement module is closed; (Sonoff Dual R3 Pow)
+ =0 when the temperature measurement module is closed; (Sonoff Dual R3 / Pow CT)
=1 when the temperature measurement module is turned on;
12 comp_off Comparator module close signal:
=0 when the comparator module is in working state
- =1 when the comparator module is off (Sonoff Dual R3 Pow)
+ =1 when the comparator module is off (Sonoff Dual R3 / Pow CT)
11-10 Pmode[1:0] Selection of active energy calculation method:
Pmode =00, both positive and negative active energy participate in the accumulation,
- the accumulation method is algebraic sum mode, the reverse REVQ symbol indicates to active power; (Sonoff Dual R3 Pow)
+ the accumulation method is algebraic sum mode, the reverse REVQ symbol indicates to active power; (Sonoff Dual R3 / Pow CT)
Pmode = 01, only accumulate positive active energy;
Pmode = 10, both positive and negative active energy participate in the accumulation,
and the accumulation method is absolute value method. No reverse active power indication;
Pmode =11, reserved, the mode is the same as Pmode =00
9 NC -
8 ZXD1 The initial value of ZX output is 0, and different waveforms are output according to the configuration of ZXD1 and ZXD0:
- =0, it means that the ZX output changes only at the selected zero-crossing point (Sonoff Dual R3 Pow)
+ =0, it means that the ZX output changes only at the selected zero-crossing point (Sonoff Dual R3 / Pow CT)
=1, indicating that the ZX output changes at both the positive and negative zero crossings
7 ZXD0
- =0, indicates that the positive zero-crossing point is selected as the zero-crossing detection signal (Sonoff Dual R3 Pow)
+ =0, indicates that the positive zero-crossing point is selected as the zero-crossing detection signal (Sonoff Dual R3 / Pow CT)
=1, indicating that the negative zero-crossing point is selected as the zero-crossing detection signal
6 HPFIBOFF
- =0, enable current channel B digital high-pass filter (Sonoff Dual R3 Pow)
- =1, turn off the digital high-pass filter of current channel B
+ =0, enable current channel B digital high-pass filter (Sonoff Dual R3)
+ =1, turn off the digital high-pass filter of current channel B (Pow CT)
5 HPFIAOFF
- =0, enable current channel A digital high-pass filter (Sonoff Dual R3 Pow)
+ =0, enable current channel A digital high-pass filter (Sonoff Dual R3 / Pow CT)
=1, turn off the digital high-pass filter of current channel A
4 HPFUOFF
- =0, enable U channel digital high pass filter (Sonoff Dual R3 Pow)
+ =0, enable U channel digital high pass filter (Sonoff Dual R3 / Pow CT)
=1, turn off the U channel digital high-pass filter
3-2 NC -
1 PBRUN
- =1, enable PFB pulse output and active energy register accumulation; (Sonoff Dual R3 Pow)
+ =1, enable PFB pulse output and active energy register accumulation; (Sonoff Dual R3 / Pow CT)
=0 (default), turn off PFB pulse output and active energy register accumulation.
0 PARUN
- =1, enable PFA pulse output and active energy register accumulation; (Sonoff Dual R3 Pow)
+ =1, enable PFA pulse output and active energy register accumulation; (Sonoff Dual R3 / Pow CT)
=0 (default), turn off PFA pulse output and active energy register accumulation.
*/
-// Cse7761Write(CSE7761_REG_EMUCON | 0x80, 0x1003);
+// Cse7761Write(CSE7761_REG_EMUCON | 0x80, 0x1043); // Pow CT
+// Cse7761Write(CSE7761_REG_EMUCON | 0x80, 0x1003); // Sonoff Dual R3
Cse7761Write(CSE7761_REG_EMUCON | 0x80, 0x1183); // Tasmota enable zero cross detection on both positive and negative signal
-
/*
Energy Measure Control Register (EMUCON2) Addr: 0x13 Default value: 0x0001
Bit name Function description
15-13 NC -
12 SDOCmos
=1, SDO pin CMOS open-drain output
- =0, SDO pin CMOS output (Sonoff Dual R3 Pow)
+ =0, SDO pin CMOS output (Sonoff Dual R3 / Pow CT)
11 EPB_CB Energy_PB clear signal control, the default is 0, and it needs to be configured to 1 in UART mode.
Clear after reading is not supported in UART mode
- =1, Energy_PB will not be cleared after reading; (Sonoff Dual R3 Pow)
+ =1, Energy_PB will not be cleared after reading; (Sonoff Dual R3 / Pow CT)
=0, Energy_PB is cleared after reading;
10 EPA_CB Energy_PA clear signal control, the default is 0, it needs to be configured to 1 in UART mode,
Clear after reading is not supported in UART mode
- =1, Energy_PA will not be cleared after reading; (Sonoff Dual R3 Pow)
+ =1, Energy_PA will not be cleared after reading; (Sonoff Dual R3 / Pow CT)
=0, Energy_PA is cleared after reading;
9-8 DUPSEL[1:0] Average register update frequency control
=00, Update frequency 3.4Hz
=01, Update frequency 6.8Hz
=10, Update frequency 13.65Hz
- =11, Update frequency 27.3Hz (Sonoff Dual R3 Pow)
+ =11, Update frequency 27.3Hz (Sonoff Dual R3 / Pow CT)
7 CHS_IB Current channel B measurement selection signal
- =1, measure the current of channel B (Sonoff Dual R3 Pow)
+ =1, measure the current of channel B (Sonoff Dual R3 / Pow CT)
=0, measure the internal temperature of the chip
6 PfactorEN Power factor function enable
- =1, turn on the power factor output function (Sonoff Dual R3 Pow)
+ =1, turn on the power factor output function (Sonoff Dual R3 / Pow CT)
=0, turn off the power factor output function
5 WaveEN Waveform data, instantaneous data output enable signal
=1, turn on the waveform data output function (Tasmota add frequency)
- =0, turn off the waveform data output function (Sonoff Dual R3 Pow)
+ =0, turn off the waveform data output function (Sonoff Dual R3 / Pow CT)
4 SAGEN Voltage drop detection enable signal, WaveEN=1 must be configured first
=1, turn on the voltage drop detection function
- =0, turn off the voltage drop detection function (Sonoff Dual R3 Pow)
+ =0, turn off the voltage drop detection function (Sonoff Dual R3 / Pow CT)
3 OverEN Overvoltage, overcurrent, and overload detection enable signal, WaveEN=1 must be configured first
=1, turn on the overvoltage, overcurrent, and overload detection functions
- =0, turn off the overvoltage, overcurrent, and overload detection functions (Sonoff Dual R3 Pow)
+ =0, turn off the overvoltage, overcurrent, and overload detection functions (Sonoff Dual R3 / Pow CT)
2 ZxEN Zero-crossing detection, phase angle, voltage frequency measurement enable signal
=1, turn on the zero-crossing detection, phase angle, and voltage frequency measurement functions (Tasmota add frequency)
- =0, disable zero-crossing detection, phase angle, voltage frequency measurement functions (Sonoff Dual R3 Pow)
+ =0, disable zero-crossing detection, phase angle, voltage frequency measurement functions (Sonoff Dual R3 / Pow CT)
1 PeakEN Peak detect enable signal
=1, turn on the peak detection function
- =0, turn off the peak detection function (Sonoff Dual R3 Pow)
+ =0, turn off the peak detection function (Sonoff Dual R3 / Pow CT)
0 NC Default is 1
*/
#ifndef CSE7761_FREQUENCY
- Cse7761Write(CSE7761_REG_EMUCON2 | 0x80, 0x0FC1); // Sonoff Dual R3 Pow
+ Cse7761Write(CSE7761_REG_EMUCON2 | 0x80, 0x0FC1); // Sonoff Dual R3 / Pow CT
#else
Cse7761Write(CSE7761_REG_EMUCON2 | 0x80, 0x0FE5); // Tasmota add Frequency
@@ -442,16 +456,18 @@ void Cse7761GetData(void) {
#endif
CSE7761Data.active_power[0] = (0 == CSE7761Data.current_rms[0]) ? 0 : (value & 0x80000000) ? (~value) + 1 : value;
- value = Cse7761ReadFallback(CSE7761_REG_RMSIB, CSE7761Data.current_rms[1], 3);
+ if (2 == Energy->phase_count) {
+ value = Cse7761ReadFallback(CSE7761_REG_RMSIB, CSE7761Data.current_rms[1], 3);
#ifdef CSE7761_SIMULATE
- value = 29760; // 0.185A
+ value = 29760; // 0.185A
#endif
- CSE7761Data.current_rms[1] = ((value >= 0x800000) || (value < 1600)) ? 0 : value; // No load threshold of 10mA
- value = Cse7761ReadFallback(CSE7761_REG_POWERPB, CSE7761Data.active_power[1], 4);
+ CSE7761Data.current_rms[1] = ((value >= 0x800000) || (value < 1600)) ? 0 : value; // No load threshold of 10mA
+ value = Cse7761ReadFallback(CSE7761_REG_POWERPB, CSE7761Data.active_power[1], 4);
#ifdef CSE7761_SIMULATE
- value = 2126641; // 44.05W
+ value = 2126641; // 44.05W
#endif
- CSE7761Data.active_power[1] = (0 == CSE7761Data.current_rms[1]) ? 0 : (value & 0x80000000) ? (~value) + 1 : value;
+ CSE7761Data.active_power[1] = (0 == CSE7761Data.current_rms[1]) ? 0 : (value & 0x80000000) ? (~value) + 1 : value;
+ }
AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("C61: F%d, U%d, I%d/%d, P%d/%d"),
CSE7761Data.frequency, CSE7761Data.voltage_rms,
@@ -459,16 +475,20 @@ void Cse7761GetData(void) {
CSE7761Data.active_power[0], CSE7761Data.active_power[1]);
if (Energy->power_on) { // Powered on
- // Voltage = RmsU * RmsUC * 10 / 0x400000
- // Energy->voltage[0] = (float)(((uint64_t)CSE7761Data.voltage_rms * CSE7761Data.coefficient[RmsUC] * 10) >> 22) / 1000; // V
- Energy->voltage[0] = ((float)CSE7761Data.voltage_rms / EnergyGetCalibration(ENERGY_VOLTAGE_CALIBRATION)); // V
- Energy->voltage[1] = Energy->voltage[0];
+ for (uint32_t channel = 0; channel < Energy->phase_count; channel++) {
+ if (0 == channel) {
+ // Voltage = RmsU * RmsUC * 10 / 0x400000
+ // Energy->voltage[0] = (float)(((uint64_t)CSE7761Data.voltage_rms * CSE7761Data.coefficient[RmsUC] * 10) >> 22) / 1000; // V
+ Energy->voltage[0] = ((float)CSE7761Data.voltage_rms / EnergyGetCalibration(ENERGY_VOLTAGE_CALIBRATION)); // V
#ifdef CSE7761_FREQUENCY
- Energy->frequency[0] = (CSE7761Data.frequency) ? ((float)EnergyGetCalibration(ENERGY_FREQUENCY_CALIBRATION) / 8 / CSE7761Data.frequency) : 0; // Hz
- Energy->frequency[1] = Energy->frequency[0];
+ Energy->frequency[0] = (CSE7761Data.frequency) ? ((float)EnergyGetCalibration(ENERGY_FREQUENCY_CALIBRATION) / 8 / CSE7761Data.frequency) : 0; // Hz
#endif
-
- for (uint32_t channel = 0; channel < 2; channel++) {
+ } else {
+ Energy->voltage[1] = Energy->voltage[0];
+#ifdef CSE7761_FREQUENCY
+ Energy->frequency[1] = Energy->frequency[0];
+#endif
+ }
Energy->data_valid[channel] = 0;
uint32_t power_calibration = EnergyGetCalibration(ENERGY_POWER_CALIBRATION, channel);
// Active power = PowerPA * PowerPAC * 1000 / 0x80000000
@@ -563,7 +583,7 @@ void Cse7761EverySecond(void) {
}
else {
if (2 == CSE7761Data.ready) {
- for (uint32_t channel = 0; channel < 2; channel++) {
+ for (uint32_t channel = 0; channel < Energy->phase_count; channel++) {
if (CSE7761Data.energy_update[channel]) {
Energy->kWhtoday_delta[channel] += ((CSE7761Data.energy[channel] * 1000) / CSE7761Data.energy_update[channel]) / 36;
CSE7761Data.energy[channel] = 0;
@@ -577,7 +597,7 @@ void Cse7761EverySecond(void) {
void Cse7761SnsInit(void) {
// Software serial init needs to be done here as earlier (serial) interrupts may lead to Exceptions
- Cse7761Serial = new TasmotaSerial(Pin(GPIO_CSE7761_RX), Pin(GPIO_CSE7761_TX), 1);
+ Cse7761Serial = new TasmotaSerial(Pin(GPIO_CSE7761_RX, GPIO_ANY), Pin(GPIO_CSE7761_TX), 1);
if (Cse7761Serial->begin(38400, SERIAL_8E1)) {
if (Cse7761Serial->hardwareSerial()) {
SetSerial(38400, TS_SERIAL_8E1);
@@ -599,10 +619,15 @@ void Cse7761SnsInit(void) {
}
void Cse7761DrvInit(void) {
- if (PinUsed(GPIO_CSE7761_RX) && PinUsed(GPIO_CSE7761_TX)) {
+ if (PinUsed(GPIO_CSE7761_RX, GPIO_ANY) && PinUsed(GPIO_CSE7761_TX)) {
+ CSE7761Data.model = GetPin(Pin(GPIO_CSE7761_RX, GPIO_ANY)) - AGPIO(GPIO_CSE7761_RX);
CSE7761Data.ready = 0;
- CSE7761Data.init = 4; // Init setup steps
- Energy->phase_count = 2; // Handle two channels as two phases
+ CSE7761Data.init = 4; // Init setup steps
+
+// Energy->phase_count = 1; // Handle one channel (default set by xdrv_03_energy.ino)
+ if (CSE7761_MODEL_DUALR3 == CSE7761Data.model) {
+ Energy->phase_count = 2; // Handle two channels as two phases
+ }
Energy->voltage_common = true; // Use common voltage
#ifdef CSE7761_FREQUENCY
Energy->frequency_common = true; // Use common frequency
@@ -615,7 +640,10 @@ void Cse7761DrvInit(void) {
bool Cse7761Command(void) {
bool serviced = true;
- uint32_t channel = (2 == XdrvMailbox.index) ? 1 : 0;
+ uint32_t channel = 0;
+ if (Energy->phase_count > 1) {
+ channel = (2 == XdrvMailbox.index) ? 1 : 0;
+ }
uint32_t value = (uint32_t)(CharToFloat(XdrvMailbox.data) * 100); // 1.23 = 123
if (CMND_POWERCAL == Energy->command_code) {
@@ -624,7 +652,7 @@ bool Cse7761Command(void) {
}
else if (CMND_POWERSET == Energy->command_code) {
if (XdrvMailbox.data_len && CSE7761Data.active_power[channel]) {
- if ((value > 100) && (value < 200000)) { // Between 1W and 2000W
+ if ((value > 100) && (value < 2000000)) { // Between 1W and 20000W
XdrvMailbox.payload = ((CSE7761Data.active_power[channel]) / value) * 100;
}
}
@@ -635,7 +663,7 @@ bool Cse7761Command(void) {
}
else if (CMND_VOLTAGESET == Energy->command_code) {
if (XdrvMailbox.data_len && CSE7761Data.voltage_rms) {
- if ((value > 10000) && (value < 26000)) { // Between 100V and 260V
+ if ((value > 10000) && (value < 40000)) { // Between 100V and 400V
XdrvMailbox.payload = (CSE7761Data.voltage_rms * 100) / value;
}
}
@@ -646,7 +674,7 @@ bool Cse7761Command(void) {
}
else if (CMND_CURRENTSET == Energy->command_code) {
if (XdrvMailbox.data_len && CSE7761Data.current_rms[channel]) {
- if ((value > 1000) && (value < 1000000)) { // Between 10mA and 10A
+ if ((value > 1000) && (value < 10000000)) { // Between 10mA and 100A
XdrvMailbox.payload = ((CSE7761Data.current_rms[channel] * 100) / value) * 1000;
}
}
diff --git a/tasmota/tasmota_xnrg_energy/xnrg_22_bl6523.ino b/tasmota/tasmota_xnrg_energy/xnrg_22_bl6523.ino
index b0b5d442a..1e95abf6f 100644
--- a/tasmota/tasmota_xnrg_energy/xnrg_22_bl6523.ino
+++ b/tasmota/tasmota_xnrg_energy/xnrg_22_bl6523.ino
@@ -264,21 +264,21 @@ bool Bl6523Command(void) {
}
else if (CMND_POWERSET == Energy->command_code) {
if (XdrvMailbox.data_len) {
- if ((abs_value > 100) && (abs_value < 200000)) { // Between 1.00 and 2000.00 W
+ if ((abs_value > 100) && (abs_value < 2000000)) { // Between 1.00 and 20000.00 W
XdrvMailbox.payload = abs_value;
}
}
}
else if (CMND_VOLTAGESET == Energy->command_code) {
if (XdrvMailbox.data_len) {
- if ((abs_value > 10000) && (abs_value < 26000)) { // Between 100.00 and 260.00 V
+ if ((abs_value > 10000) && (abs_value < 40000)) { // Between 100.00 and 400.00 V
XdrvMailbox.payload = abs_value;
}
}
}
else if (CMND_CURRENTSET == Energy->command_code) {
if (XdrvMailbox.data_len) {
- if ((abs_value > 1000) && (abs_value < 1000000)) { // Between 10.00 mA and 10.00000 A
+ if ((abs_value > 1000) && (abs_value < 10000000)) { // Between 10.00 mA and 100.00000 A
XdrvMailbox.payload = abs_value;
}
}
diff --git a/tasmota/tasmota_xnrg_energy/xnrg_24_esp32_biopdu.ino b/tasmota/tasmota_xnrg_energy/xnrg_24_esp32_biopdu.ino
index ac681fbf3..33ddf67b4 100644
--- a/tasmota/tasmota_xnrg_energy/xnrg_24_esp32_biopdu.ino
+++ b/tasmota/tasmota_xnrg_energy/xnrg_24_esp32_biopdu.ino
@@ -1,7 +1,7 @@
/*
xnrg_24_biopdu.ino - BioPDU-625x12 (based on xnrg_05_pzem_ac.ino)
- Copyright (C) 2023 Fabrizio Amodio
+ Copyright (C) 2023-24 Fabrizio Amodio
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -21,26 +21,36 @@
#if defined(USE_ENERGY_SENSOR) && defined(USE_I2C)
#ifdef USE_BIOPDU
/*********************************************************************************************\
- Biomine 625x12 Custom Board
+ Biomine 625x12 Custom Board rev 2.0
6 x 25A Relays
- 6 x Independent PZEM-004V3 Modbus AC energy sensor
+ 6 x Independent PZEM-004T-100A-D-P Modbus AC energy sensor
3bit serial switch
Integrated MCP23008
+ SSD1309 OLED Display I2C
- Template {"NAME":"Olimex ESP32-PoE-BioPDU","GPIO":[1,10209,10210,1,10144,1,0,0,5536,640,1,1,608,0,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,1,10208,1,1,10176,0,0,1],"FLAG":0,"BASE":1}
+ Template {"NAME":"Olimex ESP32-PoE-BioPDU","GPIO":[1,10209,10210,1,10144,1,0,0,5536,640,1,1,608,0,5600,1,1,1,1,5568,1,1,1,1,6210,0,0,0,1,10208,1,1,10176,1,1,1],"FLAG":0,"BASE":1}
BioPDU 625x12 Factory Settings:
- Template {"NAME":"Olimex ESP32-PoE-BioPDU","GPIO":[1,10209,10210,1,10144,1,0,0,5536,640,1,1,608,0,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,1,10208,1,1,10176,0,0,1],"FLAG":0,"BASE":1}
+ Template {"NAME":"Olimex ESP32-PoE-BioPDU","GPIO":[1,10209,10210,1,10144,1,0,0,5536,640,1,1,608,0,5600,1,1,1,1,5568,1,1,1,1,6210,0,0,0,1,10208,1,1,10176,1,1,1],"FLAG":0,"BASE":1}
Module 0
EthType 0
EthAddress 0
EthClockMode 3
+ SetOption21 1
SetOption26 1
+ SetOption65 1
SetOption129 1
SetOption150 1
EnergyDisplay 1
EnergyCols 6
+ displaymodel 17
+ displaymode 0
+ displayrows 8
+ displaycols 25
+ PowerOnState1 ON
+ PowerLock1 1
+ TelePeriod 30
i2cscan
Sensor29 0,1,0
Sensor29 1,5,2
@@ -61,12 +71,21 @@
USE_MCP230xx
USE_MCP230xx_ADDR=0x20
USE_MCP230xx_OUTPUT
+ USE_DISPLAY
+ USE_UNIVERSAL_DISPLAY
+ USE_ALL_EPD_FONTS
+ USE_TINY_FONT
USE_BIOPDU
+
+extra dirs:
+
+ lib_extra_dirs = ${env:tasmota32_base.lib_extra_dirs} lib/libesp32, lib/lib_basic, lib/lib_display, lib/lib_ssl, lib/lib_rf, lib/lib_i2c, lib/lib_div
+
\*********************************************************************************************/
#define XNRG_24 24
-#define BIOPDU_MAX_PHASES 6 // BioPDU support max six phases/channels
+#define BIOPDU_MAX_PHASES 6 // BioPDU support max six phases/channels
const uint8_t BIOPDU_DEVICE_ADDRESS = 0x01; // PZEM default address
const uint32_t BIOPDU_STABILIZE = 10; // Number of seconds to stabilize 1 device
@@ -124,7 +143,7 @@ void BioPduEvery250ms(void)
BioPdu.address_step--;
}
uint8_t error = BioPduModbus->ReceiveBuffer(buffer, registers);
- AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, BioPduModbus->ReceiveCount());
+ // AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, BioPduModbus->ReceiveCount());
if (error)
{
@@ -147,6 +166,21 @@ void BioPduEvery250ms(void)
Energy->frequency[BioPdu.phase] = (float)((buffer[17] << 8) + buffer[18]) / 10.0f; // 50.0 Hz
Energy->power_factor[BioPdu.phase] = (float)((buffer[19] << 8) + buffer[20]) / 100.0f; // 1.00
Energy->import_active[BioPdu.phase] = (float)((buffer[15] << 24) + (buffer[16] << 16) + (buffer[13] << 8) + buffer[14]) / 1000.0f; // 4294967.295 kWh
+
+ // Sanity check to prevent spike on power ON
+ if (Energy->voltage[BioPdu.phase] < 0 || Energy->voltage[BioPdu.phase] > 300 // Voltage range 0-300
+ || Energy->current[BioPdu.phase] < 0 || Energy->current[BioPdu.phase] > 25 // Ampere range 0-25
+ || Energy->active_power[BioPdu.phase] < 0 || Energy->active_power[BioPdu.phase] > 5500) // Watt range 0-5500
+ {
+ AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("PDU: phase %d, spike detected"), BioPdu.phase);
+
+ Energy->voltage[BioPdu.phase] = 0;
+ Energy->current[BioPdu.phase] = 0;
+ Energy->active_power[BioPdu.phase] = 0;
+ Energy->frequency[BioPdu.phase] = 0;
+ Energy->power_factor[BioPdu.phase] = 0;
+ Energy->import_active[BioPdu.phase] = 0;
+ }
}
}
}
@@ -291,6 +325,6 @@ bool Xnrg24(uint32_t function)
return result;
}
-#endif // USE_BIOPDU
-#endif // USE_ENERGY_SENSOR
-#endif // ESP32
+#endif // USE_BIOPDU
+#endif // USE_ENERGY_SENSOR
+#endif // ESP32
diff --git a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino
index 8ad0de246..68754c514 100644
--- a/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino
+++ b/tasmota/tasmota_xsns_sensor/xsns_02_analog.ino
@@ -22,9 +22,56 @@
#ifdef USE_ADC
/*********************************************************************************************\
* ADC support for ESP8266 GPIO17 (=PIN_A0) and ESP32 up to 8 channels on GPIO32 to GPIO39
+ *
+ * Command AdcParam allows for configuration of multiple sequential ADC GPIOs.
+ * Due to it's sequential nature it loses configurations when in-between ADC GPIOs are redefined.
+ * --------------------------------- --------------------------------------------------------------------------------------------------
+ * AdcParam
+ * AdcParam1 1 <- Set first ADC GPIO found, counting from GPIO0 up, to default parameters based on configured GPIO_ADC_xxxx
+ * AdcParam1 1,32000,40000,3350 <- Temperature parameters for first ADC GPIO found, counting from GPIO0 up, and configured as GPIO_ADC_TEMP
+ * AdcParam2 1,511 <- Button parameter for second ADC GPIO found, counting from GPIO0 up, and configured as GPIO_ADC_BUTTON1
+ * AdcParam3 1,511 <- Button parameter for third ADC GPIO found, counting from GPIO0 up, and configured as GPIO_ADC_BUTTON2
+ *
+ * Version v14.1.0.4 supersedes previous command with command AdcGpio for easier configuration of multiple ADC GPIOs.
+ * As it is GPIO based it will not loose configurations when in-between GPIOs are redefined.
+ * --------------------------------- --------------------------------------------------------------------------------------------------
+ * AdcGpio
+ * AdcGpio 1 <- ESP8266 Set ADC on GPIO17 to default parameters based on configured GPIO_ADC_xxxx
+ * AdcGpio 32000,40000,3350 <- ESP8266 Temperature parameters for ADC on GPIO17 configured as GPIO_ADC_TEMP (no index needed)
+ * AdcGpio33 1 <- ESP32 Set ADC on GPIO33 to default parameters based on configured GPIO_ADC_xxxx
+ * AdcGpio33 32000,40000,3350 <- ESP32 Temperature parameters for ADC on GPIO33 configured as GPIO_ADC_TEMP
+ * AdcGpio37 511 <- ESP32 Button parameter for ADC on GPIO37 configured as GPIO_ADC_BUTTON1
+ *
+ *
+ * For shelly RGBW PM:
+ * Template {"NAME":"Shelly Plus RGBW PM Pot.meter","GPIO":[1,0,0,0,419,0,0,0,0,0,544,0,0,0,0,1,0,0,1,0,0,416,417,418,0,0,0,0,0,4736,11264,11296,4704,0,4705,0],"FLAG":0,"BASE":1}
+ * AdcGpio33 32000,40000,3350 <- Temperature parameters
+ * AdcGpio34 1161,3472,10,30 <- Voltage parameters
+ * AdcGpio35 960,1017,0.01,0.706 <- Current parameters
+ * AdcGpio36 1552,176,3,1 <- I1 Potentiometer RGBW or RGB if SO37 128
+ * AdcGpio36 1552,176,3,3 <- I1 Potentiometer RGBW or RGB if SO37 128 without fading
+ * AdcGpio38 1552,176,3,1 <- I3 Potentiometer W if SO37 128
+ * Fade 1
+ * Speed 6
+ * VoltRes 2
+ * WattRes 2
+ *
+ * Template {"NAME":"Shelly Plus RGBW PM Button","GPIO":[1,0,0,0,419,0,0,0,0,0,544,0,0,0,0,1,0,0,1,0,0,416,417,418,0,0,0,0,0,4736,11264,11296,4800,4801,4802,4803],"FLAG":0,"BASE":1}
+ * AdcGpio33 32000,40000,3350 <- Temperature parameters
+ * AdcGpio34 1161,3472,10,30 <- Voltage parameters
+ * AdcGpio35 960,1017,0.01,0.706 <- Current parameters
+ * AdcGpio36 511 <- I1 ADC Button
+ * AdcGpio37 511 <- I2 ADC Button
+ * AdcGpio38 511 <- I3 ADC Button
+ * AdcGpio39 511 <- I4 ADC Button
+ * Fade 1
+ * Speed 6
+ * VoltRes 2
+ * WattRes 2
\*********************************************************************************************/
#define XSNS_02 2
+#define XNRG_33 33
#ifdef ESP32
#include "esp32-hal-adc.h"
@@ -33,23 +80,23 @@
#ifdef ESP8266
#define ANALOG_RESOLUTION 10 // 12 = 4095, 11 = 2047, 10 = 1023
#define ANALOG_RANGE 1023 // 4095 = 12, 2047 = 11, 1023 = 10
-#define ANALOG_PERCENT 10 // backward compatible div10 range
#endif // ESP8266
+
#ifdef ESP32
#undef ANALOG_RESOLUTION
#define ANALOG_RESOLUTION 12 // 12 = 4095, 11 = 2047, 10 = 1023
#undef ANALOG_RANGE
#define ANALOG_RANGE 4095 // 4095 = 12, 2047 = 11, 1023 = 10
-#undef ANALOG_PERCENT
-#define ANALOG_PERCENT ((ANALOG_RANGE + 50) / 100) // approximation to 1% ADC range
#endif // ESP32
-#define TO_CELSIUS(x) ((x) - 273.15)
-#define TO_KELVIN(x) ((x) + 273.15)
+#define ANALOG_MARGIN 5 // backward compatible div10 range
+
+#define TO_CELSIUS(x) ((x) - 273.15f)
+#define TO_KELVIN(x) ((x) + 273.15f)
// Parameters for equation
-#define ANALOG_V33 3.3 // ESP8266 / ESP32 Analog voltage
-#define ANALOG_T0 TO_KELVIN(25.0) // 25 degrees Celsius in Kelvin (= 298.15)
+#define ANALOG_V33 3.3f // ESP8266 / ESP32 Analog voltage
+#define ANALOG_T0 TO_KELVIN(25.0f) // 25 degrees Celsius in Kelvin (= 298.15)
// Mode 0 : Shelly 2.5 NTC Thermistor
// 3V3 --- ANALOG_NTC_BRIDGE_RESISTANCE ---v--- NTC --- Gnd
@@ -63,13 +110,13 @@
#define ANALOG_NTC_RESISTANCE 10000 // NTC Resistance
#define ANALOG_NTC_B_COEFFICIENT 3350 // NTC Beta Coefficient
-// LDR parameters
+// LDR parameters (example as used on Ulanzi)
// 3V3 --- LDR ---v--- ANALOG_LDR_BRIDGE_RESISTANCE --- Gnd
// |
// ADC0
#define ANALOG_LDR_BRIDGE_RESISTANCE 10000 // LDR Voltage bridge resistor
#define ANALOG_LDR_LUX_CALC_SCALAR 12518931 // Experimental
-#define ANALOG_LDR_LUX_CALC_EXPONENT -1.4050 // Experimental
+#define ANALOG_LDR_LUX_CALC_EXPONENT -1.4050f // Experimental
// CT Based Apparrent Power Measurement Parameters
// 3V3 --- R1 ----v--- R1 --- Gnd
@@ -94,7 +141,7 @@
// |---| |--- Gnd
// | ----
// ADC
-#define ANALOG_BUTTON 128 // Add resistor tolerance
+#define ANALOG_BUTTON_THRESHOLD ANALOG_RANGE / 8 // Add resistor tolerance
// Odroid joysticks
// ---- Up
@@ -105,21 +152,21 @@
// |
// ADC
// Press "Up" will raise ADC to ANALOG_RANGE, Press "Dn" will raise ADC to ANALOG_RANGE/2
-#define ANALOG_JOYSTICK (ANALOG_RANGE / 3) +100 // Add resistor tolerance
+#define ANALOG_JOYSTICK_THRESHOLD (ANALOG_RANGE / 3) +100 // Add resistor tolerance
// pH scale minimum and maximum values
-#define ANALOG_PH_MAX 14.0
-#define ANALOG_PH_MIN 0.0
+#define ANALOG_PH_MAX 14.0f
+#define ANALOG_PH_MIN 0.0f
// Default values for calibration solution with lower PH
-#define ANALOG_PH_CALSOLUTION_LOW_PH 4.0
+#define ANALOG_PH_CALSOLUTION_LOW_PH 4.0f
#define ANALOG_PH_CALSOLUTION_LOW_ANALOG_VALUE 282
// Default values for calibration solution with higher PH
-#define ANALOG_PH_CALSOLUTION_HIGH_PH 9.18
+#define ANALOG_PH_CALSOLUTION_HIGH_PH 9.18f
#define ANALOG_PH_CALSOLUTION_HIGH_ANALOG_VALUE 435
// Multiplier used to store pH with 2 decimal places in a non decimal datatype
-#define ANALOG_PH_DECIMAL_MULTIPLIER 100.0
+#define ANALOG_PH_DECIMAL_MULTIPLIER 100.0f
// MQ-X sensor (MQ-02, MQ-03, MQ-04, MQ-05, MQ-06, MQ-07, MQ-08, MQ-09, MQ-131, MQ-135)
//
@@ -133,9 +180,9 @@
//means mq type (ex for mq-02 use 2, mq-131 use 131)
#define ANALOG_MQ_TYPE 2
//exponential regression a params
-#define ANALOG_MQ_A 574.25
+#define ANALOG_MQ_A 574.25f
//exponential regression b params
-#define ANALOG_MQ_B -2.222
+#define ANALOG_MQ_B -2.222f
/*
Exponential regression:
Gas | a | b
@@ -150,196 +197,282 @@
O3 | 23.943 | -1.11
*/
//ratio for alarm, NOT USED yet (RS / R0 = 15 ppm)
-#define ANALOG_MQ_RatioMQCleanAir 15.0
+#define ANALOG_MQ_RatioMQCleanAir 15.0f
// Multiplier used to store pH with 2 decimal places in a non decimal datatype
-#define ANALOG_MQ_DECIMAL_MULTIPLIER 100.0
+#define ANALOG_MQ_DECIMAL_MULTIPLIER 100.0f
// lenght of filter
#define ANALOG_MQ_SAMPLES 60
+/*********************************************************************************************/
+
struct {
- uint8_t present = 0;
- uint8_t type = 0;
+ uint8_t present;
} Adcs;
struct {
- float temperature = 0;
- float current = 0;
- float energy = 0;
- uint32_t param1 = 0;
- uint32_t param2 = 0;
- int param3 = 0;
- int param4 = 0;
- uint32_t previous_millis = 0;
- uint16_t last_value = 0;
- uint8_t type = 0;
- uint8_t pin = 0;
- float mq_samples[ANALOG_MQ_SAMPLES];
- int indexOfPointer = -1;
+ float *mq_samples;
+ float temperature;
+ float current;
+ float energy;
+ int param[4];
+ int indexOfPointer;
+ uint32_t previous_millis;
+ uint16_t last_value;
+ uint16_t type;
+ uint8_t index;
+ uint8_t pin;
} Adc[MAX_ADCS];
-bool adcAttachPin(uint8_t pin) {
-#ifdef ESP8266
- return (ADC0_PIN == pin);
-#else // ESP32
- return true;
-#endif // ESP32
-}
-
-void AdcSaveSettings(uint32_t idx) {
- char parameters[32];
- snprintf_P(parameters, sizeof(parameters), PSTR("%d,%d,%d,%d,%d"),
- Adc[idx].type, Adc[idx].param1, Adc[idx].param2, Adc[idx].param3, Adc[idx].param4);
- SettingsUpdateText(SET_ADC_PARAM1 + idx, parameters);
-}
-
-void AdcGetSettings(uint32_t idx) {
- char parameters[32];
- Adcs.type = 0;
- Adc[idx].param1 = 0;
- Adc[idx].param2 = 0;
- Adc[idx].param3 = 0;
- Adc[idx].param4 = 0;
- if (strchr(SettingsText(SET_ADC_PARAM1 + idx), ',') != nullptr) {
- Adcs.type = atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + idx), ",", 1));
- Adc[idx].param1 = atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + idx), ",", 2));
- Adc[idx].param2 = atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + idx), ",", 3));
- Adc[idx].param3 = atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + idx), ",", 4));
- Adc[idx].param4 = atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + idx), ",", 5));
- }
-}
-
-void AdcInitParams(uint8_t idx) {
- if ((Adcs.type != Adc[idx].type) || (Adc[idx].param1 > 1000000)) {
- if (ADC_TEMP == Adc[idx].type) {
- // Default Shelly 2.5 and 1PM parameters
- Adc[idx].param1 = ANALOG_NTC_BRIDGE_RESISTANCE;
- Adc[idx].param2 = ANALOG_NTC_RESISTANCE;
- Adc[idx].param3 = ANALOG_NTC_B_COEFFICIENT * 10000;
- Adc[idx].param4 = 0; // Default to Shelly mode with NTC towards GND
- }
- else if (ADC_LIGHT == Adc[idx].type) {
- Adc[idx].param1 = ANALOG_LDR_BRIDGE_RESISTANCE;
- Adc[idx].param2 = ANALOG_LDR_LUX_CALC_SCALAR;
- Adc[idx].param3 = ANALOG_LDR_LUX_CALC_EXPONENT * 10000;
- }
- else if (ADC_RANGE == Adc[idx].type) {
- Adc[idx].param1 = 0;
- Adc[idx].param2 = ANALOG_RANGE;
- Adc[idx].param3 = 0;
- Adc[idx].param4 = 100;
- }
- else if (ADC_CT_POWER == Adc[idx].type) {
- Adc[idx].param1 = ANALOG_CT_FLAGS; // (uint32_t) 0
- Adc[idx].param2 = ANALOG_CT_MULTIPLIER; // (uint32_t) 100000
- Adc[idx].param3 = ANALOG_CT_VOLTAGE; // (int) 10
- }
- else if (ADC_PH == Adc[idx].type) {
- Adc[idx].param1 = ANALOG_PH_CALSOLUTION_LOW_PH * ANALOG_PH_DECIMAL_MULTIPLIER; // PH of the calibration solution 1, which is the one with the lower PH
- Adc[idx].param2 = ANALOG_PH_CALSOLUTION_LOW_ANALOG_VALUE; // Reading of AnalogInput while probe is in solution 1
- Adc[idx].param3 = ANALOG_PH_CALSOLUTION_HIGH_PH * ANALOG_PH_DECIMAL_MULTIPLIER; // PH of the calibration solution 2, which is the one with the higher PH
- Adc[idx].param4 = ANALOG_PH_CALSOLUTION_HIGH_ANALOG_VALUE; // Reading of AnalogInput while probe is in solution 2
- }
- else if (ADC_MQ == Adc[idx].type) {
- Adc[idx].param1 = ANALOG_MQ_TYPE; // Could be MQ-002, MQ-004, MQ-131 ....
- Adc[idx].param2 = (int)(ANALOG_MQ_A * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression
- Adc[idx].param3 = (int)(ANALOG_MQ_B * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression
- Adc[idx].param4 = (int)(ANALOG_MQ_RatioMQCleanAir * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression
- }
- }
- if ((Adcs.type != Adc[idx].type) || (0 == Adc[idx].param1) || (Adc[idx].param1 > ANALOG_RANGE)) {
- if ((ADC_BUTTON == Adc[idx].type) || (ADC_BUTTON_INV == Adc[idx].type)) {
- Adc[idx].param1 = ANALOG_BUTTON;
- }
- else if (ADC_JOY == Adc[idx].type) {
- Adc[idx].param1 = ANALOG_JOYSTICK;
- }
- }
-}
-
-void AdcAttach(uint32_t pin, uint8_t type) {
- if (Adcs.present == MAX_ADCS) { return; }
- Adc[Adcs.present].pin = pin;
- if (adcAttachPin(Adc[Adcs.present].pin)) {
- Adc[Adcs.present].type = type;
-// analogSetPinAttenuation(Adc[Adcs.present].pin, ADC_11db); // Default
- Adcs.present++;
- }
-}
-
-void AdcInit(void) {
- Adcs.present = 0;
- for (uint32_t i = 0; i < MAX_ADCS; i++) {
- if (PinUsed(GPIO_ADC_INPUT, i)) {
- AdcAttach(Pin(GPIO_ADC_INPUT, i), ADC_INPUT);
- }
- if (PinUsed(GPIO_ADC_TEMP, i)) {
- AdcAttach(Pin(GPIO_ADC_TEMP, i), ADC_TEMP);
- }
- if (PinUsed(GPIO_ADC_LIGHT, i)) {
- AdcAttach(Pin(GPIO_ADC_LIGHT, i), ADC_LIGHT);
- }
- if (PinUsed(GPIO_ADC_RANGE, i)) {
- AdcAttach(Pin(GPIO_ADC_RANGE, i), ADC_RANGE);
- }
- if (PinUsed(GPIO_ADC_CT_POWER, i)) {
- AdcAttach(Pin(GPIO_ADC_CT_POWER, i), ADC_CT_POWER);
- }
- if (PinUsed(GPIO_ADC_JOY, i)) {
- AdcAttach(Pin(GPIO_ADC_JOY, i), ADC_JOY);
- }
- if (PinUsed(GPIO_ADC_PH, i)) {
- AdcAttach(Pin(GPIO_ADC_PH, i), ADC_PH);
- }
- if (PinUsed(GPIO_ADC_MQ, i)) {
- AdcAttach(Pin(GPIO_ADC_MQ, i), ADC_MQ);
- }
- }
- for (uint32_t i = 0; i < MAX_KEYS; i++) {
- if (PinUsed(GPIO_ADC_BUTTON, i)) {
- AdcAttach(Pin(GPIO_ADC_BUTTON, i), ADC_BUTTON);
- }
- else if (PinUsed(GPIO_ADC_BUTTON_INV, i)) {
- AdcAttach(Pin(GPIO_ADC_BUTTON_INV, i), ADC_BUTTON_INV);
- }
- }
-
- if (Adcs.present) {
-#ifdef ESP32
-#if CONFIG_IDF_TARGET_ESP32
- analogSetWidth(ANALOG_RESOLUTION); // Default 12 bits (0 - 4095)
-#endif // CONFIG_IDF_TARGET_ESP32
- analogSetAttenuation(ADC_11db); // Default 11db
-#endif
- for (uint32_t idx = 0; idx < Adcs.present; idx++) {
- AdcGetSettings(idx);
- AdcInitParams(idx);
- AdcSaveSettings(idx);
- }
- }
-}
+/*********************************************************************************************\
+ * External use
+\*********************************************************************************************/
uint32_t AdcRange(void) {
return ANALOG_RANGE;
}
bool AdcPin(uint32_t pin) {
- for (uint32_t idx = 0; idx < Adcs.present; idx++) {
- if (pin == Adc[idx].pin) {
+ for (uint32_t channel = 0; channel < Adcs.present; channel++) {
+ if (pin == Adc[channel].pin) {
return true;
}
}
return false;
}
-uint16_t AdcRead1(uint32_t pin) {
+/*********************************************************************************************/
+
+#ifdef ESP32
+void AdcFreeUnusedSettings(void) {
+ // Go over all SET_ADC_PARAMx looking for pin numbers currently used on channels
+ // Clear non used freeing global text space
+ char parameters[40];
+ for (uint32_t param_idx = 0; param_idx <= MAX_ADCS; param_idx++) {
+ if (strchr(SettingsText(SET_ADC_PARAM1 + param_idx), ',') != nullptr) {
+ uint32_t pin = atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + param_idx), ",", 6));
+ uint32_t channel;
+ for (channel = 0; channel < Adcs.present; channel++) {
+ if (pin == Adc[channel].pin) { break; }
+ }
+ if (channel == Adcs.present) {
+ SettingsUpdateText(SET_ADC_PARAM1 + param_idx, "");
+ }
+ }
+ }
+}
+#endif // ESP32
+
+int AdcFindSlot(uint32_t channel) {
+ char parameters[40];
+ for (uint32_t param_idx = 0; param_idx < MAX_ADCS; param_idx++) {
+ if (strchr(SettingsText(SET_ADC_PARAM1 + param_idx), ',') != nullptr) {
+// if (Adc[channel].pin == atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + param_idx), ",", 6))) { // Assuming pin 0 is never an ADC channel
+ subStr(parameters, SettingsText(SET_ADC_PARAM1 + param_idx), ",", 6);
+ if (strlen(parameters) && (atoi(parameters) == Adc[channel].pin)) {
+ return param_idx; // Found
+ }
+ }
+ }
+ return -1; // Not found
+}
+
+void AdcSaveSettings(uint32_t channel) {
+ char parameters[40];
+ snprintf_P(parameters, sizeof(parameters), PSTR("%d,%d,%d,%d,%d,%d"),
+ Adc[channel].type,
+ Adc[channel].param[0], Adc[channel].param[1], Adc[channel].param[2], Adc[channel].param[3],
+ Adc[channel].pin);
+
+#ifdef ESP8266
+ SettingsUpdateText(SET_ADC_PARAM1, parameters); // Save in only slot
+#else // ESP32
+ // Find used slot based on channel pin. If not find a free slot.
+ int param_idx = AdcFindSlot(channel);
+ if (-1 == param_idx) {
+ for (param_idx = 0; param_idx < MAX_ADCS; param_idx++) { // Find a free slot
+ if (strchr(SettingsText(SET_ADC_PARAM1 + param_idx), ',') == nullptr) {
+ break;
+ }
+ }
+ }
+ SettingsUpdateText(SET_ADC_PARAM1 + param_idx, parameters); // Save in current slot
+#endif // ESP32
+}
+
+uint32_t AdcGetType(uint32_t channel, uint32_t param_idx) {
+ // Get params and adc_type
+ char parameters[40];
+ for (uint32_t i = 0; i < 4; i++) {
+ Adc[channel].param[i] = atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + param_idx), ",", i +2));
+ }
+ return atoi(subStr(parameters, SettingsText(SET_ADC_PARAM1 + param_idx), ",", 1));
+}
+
+bool AdcGetSettings(uint32_t channel) {
+ uint32_t adc_type = 0;
+ // Find corresponding pin (since v14.1.0.4)
+ int param_idx = AdcFindSlot(channel);
+ if (param_idx > -1) {
+ // Param is 148,32000,10000,3350,0,17
+ adc_type = AdcGetType(channel, param_idx);
+ } else {
+ // Legacy support (No pin in param)
+ // Param is 1,32000,10000,33500000,0 or 148,32000,10000,33500000,0 or 148,32000,10000,3350,0
+ if (strchr(SettingsText(SET_ADC_PARAM1 + channel), ',') != nullptr) {
+ adc_type = AdcGetType(channel, channel);
+ if ((adc_type > 0) && (adc_type < GPIO_ADC_INPUT)) { // Former ADC_END
+ adc_type = Adc[channel].type; // Migrate adc_type from 1..12 to UserSelectablePins index
+ }
+ if (GPIO_ADC_INPUT == adc_type) {
+ Adc[channel].param[2] = ANALOG_MARGIN; // Margin / Tolerance
+ Adc[channel].param[3] = 0; // Default mode (0) or Direct mode (1) using Dimmer or Channel command
+ }
+ if ((GPIO_ADC_TEMP == adc_type) && (Adc[channel].param[2] > 1000000)) {
+ Adc[channel].param[2] /= 10000; // Fix legacy value from 33500000 to 3350
+ }
+ AdcSaveSettings(channel); // Add pin
+ }
+ }
+ return (Adc[channel].type == adc_type);
+}
+
+void AdcInitParams(uint32_t channel) {
+ Adc[channel].param[0] = 0;
+ Adc[channel].param[1] = 0;
+ Adc[channel].param[2] = 0;
+ Adc[channel].param[3] = 0;
+ uint32_t adc_type = Adc[channel].type;
+ switch (adc_type) {
+ case GPIO_ADC_INPUT:
+// Adc[channel].param[0] = 0;
+ Adc[channel].param[1] = ANALOG_RANGE;
+ Adc[channel].param[2] = ANALOG_MARGIN; // Margin / Tolerance
+// Adc[channel].param[3] = 0; // Default mode (0) or Direct mode (1) using Dimmer or Channel command
+ break;
+ case GPIO_ADC_TEMP:
+ // Default Shelly 2.5 and 1PM parameters
+ Adc[channel].param[0] = ANALOG_NTC_BRIDGE_RESISTANCE;
+ Adc[channel].param[1] = ANALOG_NTC_RESISTANCE;
+ Adc[channel].param[2] = ANALOG_NTC_B_COEFFICIENT;
+// Adc[channel].param[3] = 0; // Default to Shelly mode with NTC towards GND
+ break;
+ case GPIO_ADC_LIGHT:
+ Adc[channel].param[0] = ANALOG_LDR_BRIDGE_RESISTANCE;
+ Adc[channel].param[1] = ANALOG_LDR_LUX_CALC_SCALAR;
+ Adc[channel].param[2] = ANALOG_LDR_LUX_CALC_EXPONENT * 10000;
+// Adc[channel].param[3] = 0;
+ break;
+ case GPIO_ADC_BUTTON:
+ case GPIO_ADC_BUTTON_INV:
+ Adc[channel].param[0] = ANALOG_BUTTON_THRESHOLD; // Between 0 or 1
+// Adc[channel].param[1] = 0;
+// Adc[channel].param[2] = 0;
+// Adc[channel].param[3] = 0;
+ break;
+ case GPIO_ADC_RANGE:
+// Adc[channel].param[0] = 0;
+ Adc[channel].param[1] = ANALOG_RANGE;
+// Adc[channel].param[2] = 0;
+ Adc[channel].param[3] = 100;
+ break;
+ case GPIO_ADC_CT_POWER:
+ Adc[channel].param[0] = ANALOG_CT_FLAGS; // (uint32_t) 0
+ Adc[channel].param[1] = ANALOG_CT_MULTIPLIER; // (uint32_t) 100000
+ Adc[channel].param[2] = ANALOG_CT_VOLTAGE; // (int) 10
+// Adc[channel].param[3] = 0;
+ break;
+ case GPIO_ADC_JOY:
+ Adc[channel].param[0] = ANALOG_JOYSTICK_THRESHOLD;
+// Adc[channel].param[1] = 0;
+// Adc[channel].param[2] = 0;
+// Adc[channel].param[3] = 0;
+ break;
+ case GPIO_ADC_PH:
+ Adc[channel].param[0] = ANALOG_PH_CALSOLUTION_LOW_PH * ANALOG_PH_DECIMAL_MULTIPLIER; // PH of the calibration solution 1, which is the one with the lower PH
+ Adc[channel].param[1] = ANALOG_PH_CALSOLUTION_LOW_ANALOG_VALUE; // Reading of AnalogInput while probe is in solution 1
+ Adc[channel].param[2] = ANALOG_PH_CALSOLUTION_HIGH_PH * ANALOG_PH_DECIMAL_MULTIPLIER; // PH of the calibration solution 2, which is the one with the higher PH
+ Adc[channel].param[3] = ANALOG_PH_CALSOLUTION_HIGH_ANALOG_VALUE; // Reading of AnalogInput while probe is in solution 2
+ break;
+ case GPIO_ADC_MQ:
+ Adc[channel].param[0] = ANALOG_MQ_TYPE; // Could be MQ-002, MQ-004, MQ-131 ....
+ Adc[channel].param[1] = (int)(ANALOG_MQ_A * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression
+ Adc[channel].param[2] = (int)(ANALOG_MQ_B * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression
+ Adc[channel].param[3] = (int)(ANALOG_MQ_RatioMQCleanAir * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression
+ break;
+ case GPIO_ADC_VOLTAGE:
+ case GPIO_ADC_CURRENT:
+// Adc[channel].param[0] = 0;
+ Adc[channel].param[1] = ANALOG_RANGE;
+// Adc[channel].param[2] = 0;
+ Adc[channel].param[3] = ANALOG_V33 * 10000;
+ break;
+ }
+
+// AddLog(LOG_LEVEL_DEBUG, PSTR("ADC: AdcParam%d %d,%d,%d,%d,%d"), channel+1, Adc[channel].pin, Adc[channel].param[0], Adc[channel].param[1], Adc[channel].param[2], Adc[channel].param[3]);
+}
+
+void AdcInit(void) {
+ Adcs.present = 0;
+ memset(&Adc, 0, sizeof(Adc));
+
+ uint32_t pin = 0; // ESP32 full range of GPIOs possible for ADC channels
+#ifdef ESP8266
+ pin = ADC0_PIN; // ESP8266 single ADC channel
+#endif
+ for (pin; pin < nitems(TasmotaGlobal.gpio_pin); pin++) {
+ uint32_t adc_type = TasmotaGlobal.gpio_pin[pin] >> 5;
+ switch(adc_type) {
+ case GPIO_ADC_MQ:
+ Adc[Adcs.present].mq_samples = (float*)calloc(sizeof(float), ANALOG_MQ_SAMPLES); // Need calloc to reset registers to 0
+ if (nullptr == Adc[Adcs.present].mq_samples) { continue; }
+ case GPIO_ADC_INPUT:
+ case GPIO_ADC_TEMP:
+ case GPIO_ADC_LIGHT:
+ case GPIO_ADC_BUTTON:
+ case GPIO_ADC_BUTTON_INV:
+ case GPIO_ADC_RANGE:
+ case GPIO_ADC_CT_POWER:
+ case GPIO_ADC_JOY:
+ case GPIO_ADC_PH:
+ case GPIO_ADC_VOLTAGE:
+ case GPIO_ADC_CURRENT:
+ Adc[Adcs.present].indexOfPointer = -1; // Used to skip first update of GPIO_ADC_INPUT after restart
+ Adc[Adcs.present].pin = pin;
+ Adc[Adcs.present].type = adc_type;
+ Adc[Adcs.present].index = TasmotaGlobal.gpio_pin[pin] & 0x001F;
+ Adcs.present++;
+ if (Adcs.present == MAX_ADCS) { break; }
+ }
+ }
+
+ if (Adcs.present) {
+#ifdef ESP32
+ analogReadResolution(ANALOG_RESOLUTION); // Default 12 bits (0 - 4095)
+ analogSetAttenuation(ADC_11db); // Default 11db
+#endif
+ for (uint32_t channel = 0; channel < Adcs.present; channel++) {
+ if (!AdcGetSettings(channel)) {
+ AdcInitParams(channel);
+ AdcSaveSettings(channel);
+ }
+ }
+ }
+#ifdef ESP32
+ AdcFreeUnusedSettings();
+#endif // ESP32
+}
+
+/*********************************************************************************************/
+
+uint32_t AdcRead1(uint32_t pin) {
#ifdef ESP32
- return analogReadMilliVolts(pin) / (ANALOG_V33*1000) * ANALOG_RANGE; // go back from mV to ADC
+ return analogReadMilliVolts(pin) / (ANALOG_V33 * 1000) * ANALOG_RANGE; // Go back from mV to ADC
#else
return analogRead(pin);
#endif
}
-uint16_t AdcRead(uint32_t pin, uint32_t factor) {
+uint32_t AdcRead(uint32_t pin, uint32_t factor) {
// factor 1 = 2 samples
// factor 2 = 4 samples
// factor 3 = 8 samples
@@ -359,96 +492,147 @@ uint16_t AdcRead(uint32_t pin, uint32_t factor) {
}
analog >>= factor;
#ifdef ESP32
- analog = analog/(ANALOG_V33*1000) * ANALOG_RANGE; // go back from mV to ADC
+ analog = analog / (ANALOG_V33 * 1000) * ANALOG_RANGE; // Go back from mV to ADC
#endif
return analog;
}
-#ifdef USE_RULES
void AdcEvery250ms(void) {
- char adc_idx[3] = { 0 };
+ char adc_channel[3] = { 0 };
uint32_t offset = 0;
- for (uint32_t idx = 0; idx < Adcs.present; idx++) {
-#ifdef ESP32
- snprintf_P(adc_idx, sizeof(adc_idx), PSTR("%d"), idx +1);
- offset = 1;
-#endif
- if (ADC_INPUT == Adc[idx].type) {
- uint16_t new_value = AdcRead(Adc[idx].pin, 5);
- if ((new_value < Adc[idx].last_value -ANALOG_PERCENT) || (new_value > Adc[idx].last_value +ANALOG_PERCENT)) {
- Adc[idx].last_value = new_value;
- uint16_t value = Adc[idx].last_value / ANALOG_PERCENT;
- Response_P(PSTR("{\"ANALOG\":{\"A%ddiv10\":%d}}"), idx + offset, (value > 99) ? 100 : value);
- XdrvRulesProcess(0);
+
+ uint32_t dimmer_count = 0;
+#ifdef USE_LIGHT
+ if (!light_controller.isCTRGBLinked()) { // SetOption37 >= 128 (Light) RGB and White channel separation (default 0)
+ for (uint32_t channel = 0; channel < Adcs.present; channel++) {
+ if ((GPIO_ADC_INPUT == Adc[channel].type) && (Adc[channel].param[3] > 0)) {
+ dimmer_count++;
}
}
- else if (ADC_JOY == Adc[idx].type) {
- uint16_t new_value = AdcRead(Adc[idx].pin, 1);
- if (new_value && (new_value != Adc[idx].last_value)) {
- Adc[idx].last_value = new_value;
- uint16_t value = new_value / Adc[idx].param1;
- Response_P(PSTR("{\"ANALOG\":{\"Joy%s\":%d}}"), adc_idx, value);
+ }
+#endif // USE_LIGHT
+ for (uint32_t channel = 0; channel < Adcs.present; channel++) {
+ uint32_t type_index = Adc[channel].index;
+#ifdef ESP32
+ snprintf_P(adc_channel, sizeof(adc_channel), PSTR("%d"), type_index +1);
+ offset = 1;
+#endif
+ uint32_t adc_type = Adc[channel].type;
+ int param0 = Adc[channel].param[0];
+ int param1 = Adc[channel].param[1];
+ int param2 = Adc[channel].param[2];
+ int param3 = Adc[channel].param[3];
+ if (GPIO_ADC_INPUT == adc_type) {
+ int adc = AdcRead(Adc[channel].pin, 4); // 4 = 16 mS
+ bool swap = (param1 < param0);
+ uint32_t lo = (swap) ? param1 : param0;
+ uint32_t hi = (swap) ? param0 : param1;
+ int new_value = changeUIntScale(adc, lo, hi, 0, 100);
+ if (swap) {
+ new_value = 100 - new_value;
+ }
+ if ((new_value < Adc[channel].last_value -param2) ||
+ (new_value > Adc[channel].last_value +param2) ||
+ ((0 == new_value) && (Adc[channel].last_value != 0)) || // Lowest end
+ ((100 == new_value) && (Adc[channel].last_value != 100))) { // Highest end
+ Adc[channel].last_value = new_value;
+ if (-1 == Adc[channel].indexOfPointer) {
+ Adc[channel].indexOfPointer = 0;
+ continue; // Do not use potentiometer state on restart
+ }
+#ifdef USE_LIGHT
+ if (0 == param3) { // Default (0) or Direct mode (1)
+#endif // USE_LIGHT
+ Response_P(PSTR("{\"ANALOG\":{\"A%ddiv10\":%d}}"), type_index + offset, new_value);
+ XdrvRulesProcess(0);
+#ifdef USE_LIGHT
+ } else {
+ char command[33];
+ if (Settings->flag3.pwm_multi_channels) { // SetOption68 - Enable multi-channels PWM instead of Color PWM
+ snprintf_P(command, sizeof(command), PSTR(D_CMND_CHANNEL "%d %d"), type_index +1, new_value);
+ } else {
+ uint32_t dimmer_option;
+ if (dimmer_count > 1) {
+ dimmer_option = (0 == type_index) ? 1 : 2; // Change RGB (1) or W(W) (2) dimmer
+ } else {
+ dimmer_option = (3 == param3) ? 3 : 0; // Change both RGB and W(W) Dimmers (0) with no fading (3)
+ }
+ snprintf_P(command, sizeof(command), PSTR(D_CMND_DIMMER "%d %d"), dimmer_option, new_value);
+ }
+ ExecuteCommand(command, SRC_SWITCH);
+ }
+#endif // USE_LIGHT
+ }
+ }
+ else if (GPIO_ADC_JOY == adc_type) {
+ uint16_t new_value = AdcRead(Adc[channel].pin, 1);
+ if (new_value && (new_value != Adc[channel].last_value)) {
+ Adc[channel].last_value = new_value;
+ uint16_t value = new_value / param0;
+ Response_P(PSTR("{\"ANALOG\":{\"Joy%s\":%d}}"), adc_channel, value);
XdrvRulesProcess(0);
} else {
- Adc[idx].last_value = 0;
+ Adc[channel].last_value = 0;
}
}
}
}
-#endif // USE_RULES
uint8_t AdcGetButton(uint32_t pin) {
- for (uint32_t idx = 0; idx < Adcs.present; idx++) {
- if (Adc[idx].pin == pin) {
- if (ADC_BUTTON_INV == Adc[idx].type) {
- return (AdcRead(Adc[idx].pin, 1) < Adc[idx].param1);
+ for (uint32_t channel = 0; channel < Adcs.present; channel++) {
+ if (Adc[channel].pin == pin) {
+ uint32_t adc_type = Adc[channel].type;
+ uint32_t adc = AdcRead(Adc[channel].pin, 1);
+ uint32_t param0 = Adc[channel].param[0];
+ if (GPIO_ADC_BUTTON_INV == adc_type) {
+ return (adc < param0);
}
- else if (ADC_BUTTON == Adc[idx].type) {
- return (AdcRead(Adc[idx].pin, 1) > Adc[idx].param1);
+ else if (GPIO_ADC_BUTTON == adc_type) {
+ return (adc > param0);
}
}
}
return 0;
}
-uint16_t AdcGetLux(uint32_t idx) {
- int adc = AdcRead(Adc[idx].pin, 2);
+uint32_t AdcGetLux(uint32_t channel) {
+ int adc = AdcRead(Adc[channel].pin, 2);
// Source: https://www.allaboutcircuits.com/projects/design-a-luxmeter-using-a-light-dependent-resistor/
- double resistorVoltage = ((double)adc / ANALOG_RANGE) * ANALOG_V33;
- double ldrVoltage = ANALOG_V33 - resistorVoltage;
- double ldrResistance = ldrVoltage / resistorVoltage * (double)Adc[idx].param1;
- double ldrLux = (double)Adc[idx].param2 * FastPrecisePow(ldrResistance, (double)Adc[idx].param3 / 10000);
+ float resistorVoltage = ((float)adc / ANALOG_RANGE) * ANALOG_V33;
+ float ldrVoltage = ANALOG_V33 - resistorVoltage;
+ float ldrResistance = ldrVoltage / resistorVoltage * (float)Adc[channel].param[0];
+ float ldrLux = (float)Adc[channel].param[1] * FastPrecisePowf(ldrResistance, (float)Adc[channel].param[2] / 10000);
- return (uint16_t)ldrLux;
+ return (uint32_t)ldrLux;
}
-void AddSampleMq(uint32_t idx){
+void AddSampleMq(uint32_t channel){
// AddLog(LOG_LEVEL_DEBUG, PSTR("ADC: Adding sample for mq-sensor"));
- int _adc = AdcRead(Adc[idx].pin, 2);
+ int _adc = AdcRead(Adc[channel].pin, 2);
// init af array at same value
- if (Adc[idx].indexOfPointer==-1) {
+ if (Adc[channel].indexOfPointer == -1) {
// AddLog(LOG_LEVEL_DEBUG, PSTR("ADC: Init samples for mq-sensor"));
for (int i = 0; i < ANALOG_MQ_SAMPLES; i ++) {
- Adc[idx].mq_samples[i] = _adc;
+ Adc[channel].mq_samples[i] = _adc;
}
} else {
- Adc[idx].mq_samples[Adc[idx].indexOfPointer] = _adc;
+ Adc[channel].mq_samples[Adc[channel].indexOfPointer] = _adc;
}
- Adc[idx].indexOfPointer++;
- if (Adc[idx].indexOfPointer==ANALOG_MQ_SAMPLES) {
- Adc[idx].indexOfPointer=0;
+ Adc[channel].indexOfPointer++;
+ if (Adc[channel].indexOfPointer==ANALOG_MQ_SAMPLES) {
+ Adc[channel].indexOfPointer=0;
}
}
-float AdcGetMq(uint32_t idx) {
+float AdcGetMq(uint32_t channel) {
// AddLog(LOG_LEVEL_DEBUG, PSTR("ADC: Getting value for mq-sensor"));
float avg = 0.0;
for (int i = 0; i < ANALOG_MQ_SAMPLES; i ++) {
- avg += Adc[idx].mq_samples[i];
+ avg += Adc[channel].mq_samples[i];
}
float voltage = (avg / ANALOG_MQ_SAMPLES) * ANALOG_V33 / ANALOG_RANGE;
@@ -460,7 +644,7 @@ float AdcGetMq(uint32_t idx) {
float _R0 = 10;
float _ratio = _RS_Calc / _R0; // Get ratio RS_gas/RS_air
- float ppm = Adc[idx].param2 / ANALOG_MQ_DECIMAL_MULTIPLIER * FastPrecisePow(_ratio, Adc[idx].param3 / ANALOG_MQ_DECIMAL_MULTIPLIER); // Source excel analisis https://github.com/miguel5612/MQSensorsLib_Docs/tree/master/Internal_design_documents
+ float ppm = Adc[channel].param[1] / ANALOG_MQ_DECIMAL_MULTIPLIER * FastPrecisePowf(_ratio, Adc[channel].param[2] / ANALOG_MQ_DECIMAL_MULTIPLIER); // Source excel analisis https://github.com/miguel5612/MQSensorsLib_Docs/tree/master/Internal_design_documents
if (ppm < 0) { ppm = 0; } // No negative values accepted or upper datasheet recomendation.
if (ppm > 100000) { ppm = 100000; }
@@ -469,13 +653,13 @@ float AdcGetMq(uint32_t idx) {
return ppm;
}
-float AdcGetPh(uint32_t idx) {
- int adc = AdcRead(Adc[idx].pin, 2);
+float AdcGetPh(uint32_t channel) {
+ int adc = AdcRead(Adc[channel].pin, 2);
- float y1 = (float)Adc[idx].param1 / ANALOG_PH_DECIMAL_MULTIPLIER;
- int32_t x1 = Adc[idx].param2;
- float y2 = (float)Adc[idx].param3 / ANALOG_PH_DECIMAL_MULTIPLIER;
- int32_t x2 = Adc[idx].param4;
+ float y1 = (float)Adc[channel].param[0] / ANALOG_PH_DECIMAL_MULTIPLIER;
+ int32_t x1 = Adc[channel].param[1];
+ float y2 = (float)Adc[channel].param[2] / ANALOG_PH_DECIMAL_MULTIPLIER;
+ int32_t x2 = Adc[channel].param[3];
float m = (y2 - y1) / (float)(x2 - x1);
float ph = m * (float)(adc - x1) + y1;
@@ -485,30 +669,30 @@ float AdcGetPh(uint32_t idx) {
return ph;
}
-float AdcGetRange(uint32_t idx) {
+float AdcGetRange(uint32_t channel) {
// formula for calibration: value, fromLow, fromHigh, toLow, toHigh
// Example: 514, 632, 236, 0, 100
// int( (( - ) / ( - ) ) * ( - ) ) + )
- int adc = AdcRead(Adc[idx].pin, 5);
- double adcrange = ( ((double)Adc[idx].param2 - (double)adc) / ( ((double)Adc[idx].param2 - (double)Adc[idx].param1)) * ((double)Adc[idx].param3 - (double)Adc[idx].param4) + (double)Adc[idx].param4 );
- return (float)adcrange;
+ int adc = AdcRead(Adc[channel].pin, 5);
+ float adcrange = ( ((float)Adc[channel].param[1] - (float)adc) / ( ((float)Adc[channel].param[1] - (float)Adc[channel].param[0])) * ((float)Adc[channel].param[2] - (float)Adc[channel].param[3]) + (float)Adc[channel].param[3] );
+ return adcrange;
}
-void AdcGetCurrentPower(uint8_t idx, uint8_t factor) {
+void AdcGetCurrentPower(uint32_t channel, uint32_t factor) {
// factor 1 = 2 samples
// factor 2 = 4 samples
// factor 3 = 8 samples
// factor 4 = 16 samples
// factor 5 = 32 samples
- uint8_t samples = 1 << factor;
- uint16_t analog = 0;
- uint16_t analog_min = ANALOG_RANGE;
- uint16_t analog_max = 0;
+ uint32_t samples = 1 << factor;
+ uint32_t analog = 0;
+ uint32_t analog_min = ANALOG_RANGE;
+ uint32_t analog_max = 0;
- if (0 == Adc[idx].param1) {
- unsigned long tstart=millis();
+ if (0 == Adc[channel].param[0]) {
+ uint32_t tstart = millis();
while (millis()-tstart < 35) {
- analog = analogRead(Adc[idx].pin);
+ analog = AdcRead1(Adc[channel].pin);
if (analog < analog_min) {
analog_min = analog;
}
@@ -517,62 +701,71 @@ void AdcGetCurrentPower(uint8_t idx, uint8_t factor) {
}
}
//AddLog(0, PSTR("min: %u, max:%u, dif:%u"), analog_min, analog_max, analog_max-analog_min);
- Adc[idx].current = (float)(analog_max-analog_min) * ((float)(Adc[idx].param2) / 100000);
- if (Adc[idx].current < (((float)Adc[idx].param4) / 10000.0))
- Adc[idx].current = 0.0;
- }
- else {
- analog = AdcRead(Adc[idx].pin, 5);
- if (analog > Adc[idx].param1) {
- Adc[idx].current = ((float)(analog) - (float)Adc[idx].param1) * ((float)(Adc[idx].param2) / 100000);
+ Adc[channel].current = (float)(analog_max-analog_min) * ((float)(Adc[channel].param[1]) / 100000);
+ if (Adc[channel].current < (((float)Adc[channel].param[3]) / 10000.0)) {
+ Adc[channel].current = 0.0;
}
- else {
- Adc[idx].current = 0;
+ } else {
+ analog = AdcRead(Adc[channel].pin, 5);
+ if (analog > Adc[channel].param[0]) {
+ Adc[channel].current = ((float)(analog) - (float)Adc[channel].param[0]) * ((float)(Adc[channel].param[1]) / 100000);
+ } else {
+ Adc[channel].current = 0;
}
}
- float power = Adc[idx].current * (float)(Adc[idx].param3) / 10;
+ float power = Adc[channel].current * (float)(Adc[channel].param[2]) / 10;
uint32_t current_millis = millis();
- Adc[idx].energy = Adc[idx].energy + ((power * (current_millis - Adc[idx].previous_millis)) / 3600000000);
- Adc[idx].previous_millis = current_millis;
+ Adc[channel].energy = Adc[channel].energy + ((power * (current_millis - Adc[channel].previous_millis)) / 3600000000);
+ Adc[channel].previous_millis = current_millis;
}
void AdcEverySecond(void) {
- for (uint32_t idx = 0; idx < Adcs.present; idx++) {
- if (ADC_TEMP == Adc[idx].type) {
- int adc = AdcRead(Adc[idx].pin, 2);
+ for (uint32_t channel = 0; channel < Adcs.present; channel++) {
+ uint32_t type_index = Adc[channel].index;
+ uint32_t adc_type = Adc[channel].type;
+ int param0 = Adc[channel].param[0];
+ int param1 = Adc[channel].param[1];
+ int param2 = Adc[channel].param[2];
+ int param3 = Adc[channel].param[3];
+ if (GPIO_ADC_TEMP == adc_type) {
+ int adc = AdcRead(Adc[channel].pin, 2);
// Steinhart-Hart equation for thermistor as temperature sensor:
- // double Rt = (adc * Adc[idx].param1 * MAX_ADC_V) / (ANALOG_RANGE * ANALOG_V33 - (double)adc * MAX_ADC_V);
+ // float Rt = (adc * Adc[channel].param[0] * MAX_ADC_V) / (ANALOG_RANGE * ANALOG_V33 - (float)adc * MAX_ADC_V);
// MAX_ADC_V in ESP8266 is 1
// MAX_ADC_V in ESP32 is 3.3
- double Rt;
+ float Rt;
#ifdef ESP8266
- if (Adc[idx].param4) { // Alternate mode
- Rt = (double)Adc[idx].param1 * (ANALOG_RANGE * ANALOG_V33 - (double)adc) / (double)adc;
+ if (param3) { // Alternate mode
+ Rt = (float)param0 * (ANALOG_RANGE * ANALOG_V33 - (float)adc) / (float)adc;
} else {
- Rt = (double)Adc[idx].param1 * (double)adc / (ANALOG_RANGE * ANALOG_V33 - (double)adc);
+ Rt = (float)param0 * (float)adc / (ANALOG_RANGE * ANALOG_V33 - (float)adc);
}
#else
- if (Adc[idx].param4) { // Alternate mode
- Rt = (double)Adc[idx].param1 * (ANALOG_RANGE - (double)adc) / (double)adc;
+ if (param3) { // Alternate mode
+ Rt = (float)param0 * (ANALOG_RANGE - (float)adc) / (float)adc;
} else {
- Rt = (double)Adc[idx].param1 * (double)adc / (ANALOG_RANGE - (double)adc);
+ Rt = (float)param0 * (float)adc / (ANALOG_RANGE - (float)adc);
}
#endif
- double BC = (double)Adc[idx].param3 / 10000; // Shelly param3 = 3350 (ANALOG_NTC_B_COEFFICIENT)
- double T = BC / (BC / ANALOG_T0 + TaylorLog(Rt / (double)Adc[idx].param2)); // Shelly param2 = 10000 (ANALOG_NTC_RESISTANCE)
- Adc[idx].temperature = ConvertTemp(TO_CELSIUS(T));
+ float BC = (float)param2; // Shelly param3 = 3350 (ANALOG_NTC_B_COEFFICIENT)
+ float T = BC / (BC / ANALOG_T0 + TaylorLog(Rt / (float)param1)); // Shelly param2 = 10000 (ANALOG_NTC_RESISTANCE)
+ Adc[channel].temperature = ConvertTemp(TO_CELSIUS(T));
}
- else if (ADC_CT_POWER == Adc[idx].type) {
- AdcGetCurrentPower(idx, 5);
+ else if (GPIO_ADC_CT_POWER == adc_type) {
+ AdcGetCurrentPower(channel, 5);
}
- else if (ADC_MQ == Adc[idx].type) {
- AddSampleMq(idx);
- AdcGetMq(idx);
+ else if (GPIO_ADC_MQ == adc_type) {
+ AddSampleMq(channel);
+ AdcGetMq(channel);
}
}
}
+/*********************************************************************************************\
+ * Presentation
+\*********************************************************************************************/
+
void AdcShowContinuation(bool *jsonflg) {
if (*jsonflg) {
ResponseAppend_P(PSTR(","));
@@ -582,60 +775,68 @@ void AdcShowContinuation(bool *jsonflg) {
}
}
+enum DomoFlagsAdc { ADC_TEMP, ADC_LIGHT, ADC_CT_POWER, ADC_END };
+
void AdcShow(bool json) {
bool domo_flag[ADC_END] = { false };
char adc_name[10] = { 0 }; // ANALOG8
- char adc_idx[3] = { 0 };
+ char adc_channel[3] = { 0 };
uint32_t offset = 0;
bool jsonflg = false;
- for (uint32_t idx = 0; idx < Adcs.present; idx++) {
+ for (uint32_t channel = 0; channel < Adcs.present; channel++) {
+ uint32_t type_index = Adc[channel].index;
#ifdef ESP32
- snprintf_P(adc_name, sizeof(adc_name), PSTR("Analog%d"), idx +1);
- snprintf_P(adc_idx, sizeof(adc_idx), PSTR("%d"), idx +1);
+ snprintf_P(adc_name, sizeof(adc_name), PSTR("ADC%d"), type_index +1);
+ snprintf_P(adc_channel, sizeof(adc_channel), PSTR("%d"), type_index +1);
offset = 1;
#endif
-
- switch (Adc[idx].type) {
- case ADC_INPUT: {
- uint16_t analog = AdcRead(Adc[idx].pin, 5);
-
- if (json) {
- AdcShowContinuation(&jsonflg);
- ResponseAppend_P(PSTR("\"A%d\":%d"), idx + offset, analog);
+ uint32_t adc_type = Adc[channel].type;
+ switch (adc_type) {
+ case GPIO_ADC_INPUT: {
+#ifdef USE_LIGHT
+ if (0 == Adc[channel].param[3]) { // Default (0) or Direct mode (1)
+#endif // USE_LIGHT
+ uint16_t analog = AdcRead(Adc[channel].pin, 5);
+ if (json) {
+ AdcShowContinuation(&jsonflg);
+ ResponseAppend_P(PSTR("\"A%d\":%d"), type_index + offset, analog);
#ifdef USE_WEBSERVER
- } else {
- WSContentSend_PD(HTTP_SNS_ANALOG, "", idx + offset, analog);
+ } else {
+ WSContentSend_PD(HTTP_SNS_ANALOG, "", type_index + offset, analog);
#endif // USE_WEBSERVER
+ }
+#ifdef USE_LIGHT
}
+#endif // USE_LIGHT
break;
}
- case ADC_TEMP: {
+ case GPIO_ADC_TEMP: {
if (json) {
AdcShowContinuation(&jsonflg);
- ResponseAppend_P(PSTR("\"" D_JSON_TEMPERATURE "%s\":%*_f"), adc_idx, Settings->flag2.temperature_resolution, &Adc[idx].temperature);
+ ResponseAppend_P(PSTR("\"" D_JSON_TEMPERATURE "%s\":%*_f"), adc_channel, Settings->flag2.temperature_resolution, &Adc[channel].temperature);
if ((0 == TasmotaGlobal.tele_period) && (!domo_flag[ADC_TEMP])) {
#ifdef USE_DOMOTICZ
- DomoticzFloatSensor(DZ_TEMP, Adc[idx].temperature);
+ DomoticzFloatSensor(DZ_TEMP, Adc[channel].temperature);
domo_flag[ADC_TEMP] = true;
#endif // USE_DOMOTICZ
#ifdef USE_KNX
- KnxSensor(KNX_TEMPERATURE, Adc[idx].temperature);
+ KnxSensor(KNX_TEMPERATURE, Adc[channel].temperature);
#endif // USE_KNX
}
#ifdef USE_WEBSERVER
} else {
- WSContentSend_Temp(adc_name, Adc[idx].temperature);
+ WSContentSend_Temp(adc_name, Adc[channel].temperature);
#endif // USE_WEBSERVER
}
break;
}
- case ADC_LIGHT: {
- uint16_t adc_light = AdcGetLux(idx);
+ case GPIO_ADC_LIGHT: {
+ uint32_t adc_light = AdcGetLux(channel);
if (json) {
AdcShowContinuation(&jsonflg);
- ResponseAppend_P(PSTR("\"" D_JSON_ILLUMINANCE "%s\":%d"), adc_idx, adc_light);
+ ResponseAppend_P(PSTR("\"" D_JSON_ILLUMINANCE "%s\":%d"), adc_channel, adc_light);
#ifdef USE_DOMOTICZ
if ((0 == TasmotaGlobal.tele_period) && (!domo_flag[ADC_LIGHT])) {
DomoticzSensor(DZ_ILLUMINANCE, adc_light);
@@ -649,14 +850,14 @@ void AdcShow(bool json) {
}
break;
}
- case ADC_RANGE: {
- float adc_range = AdcGetRange(idx);
+ case GPIO_ADC_RANGE: {
+ float adc_range = AdcGetRange(channel);
char range_chr[FLOATSZ];
dtostrfd(adc_range, Settings->flag2.frequency_resolution, range_chr);
if (json) {
AdcShowContinuation(&jsonflg);
- ResponseAppend_P(PSTR("\"" D_JSON_RANGE "%s\":%s"), adc_idx, range_chr);
+ ResponseAppend_P(PSTR("\"" D_JSON_RANGE "%s\":%s"), adc_channel, range_chr);
#ifdef USE_WEBSERVER
} else {
WSContentSend_PD(HTTP_SNS_RANGE_CHR, adc_name, range_chr);
@@ -664,23 +865,23 @@ void AdcShow(bool json) {
}
break;
}
- case ADC_CT_POWER: {
- AdcGetCurrentPower(idx, 5);
+ case GPIO_ADC_CT_POWER: {
+ AdcGetCurrentPower(channel, 5);
- float voltage = (float)(Adc[idx].param3) / 10;
+ float voltage = (float)(Adc[channel].param[2]) / 10;
char voltage_chr[FLOATSZ];
dtostrfd(voltage, Settings->flag2.voltage_resolution, voltage_chr);
char current_chr[FLOATSZ];
- dtostrfd(Adc[idx].current, Settings->flag2.current_resolution, current_chr);
+ dtostrfd(Adc[channel].current, Settings->flag2.current_resolution, current_chr);
char power_chr[FLOATSZ];
- dtostrfd(voltage * Adc[idx].current, Settings->flag2.wattage_resolution, power_chr);
+ dtostrfd(voltage * Adc[channel].current, Settings->flag2.wattage_resolution, power_chr);
char energy_chr[FLOATSZ];
- dtostrfd(Adc[idx].energy, Settings->flag2.energy_resolution, energy_chr);
+ dtostrfd(Adc[channel].energy, Settings->flag2.energy_resolution, energy_chr);
if (json) {
AdcShowContinuation(&jsonflg);
ResponseAppend_P(PSTR("\"CTEnergy%s\":{\"" D_JSON_ENERGY "\":%s,\"" D_JSON_POWERUSAGE "\":%s,\"" D_JSON_VOLTAGE "\":%s,\"" D_JSON_CURRENT "\":%s}"),
- adc_idx, energy_chr, power_chr, voltage_chr, current_chr);
+ adc_channel, energy_chr, power_chr, voltage_chr, current_chr);
#ifdef USE_DOMOTICZ
if ((0 == TasmotaGlobal.tele_period) && (!domo_flag[ADC_CT_POWER])) {
DomoticzSensor(DZ_POWER_ENERGY, power_chr);
@@ -699,49 +900,78 @@ void AdcShow(bool json) {
}
break;
}
- case ADC_JOY: {
- uint16_t new_value = AdcRead(Adc[idx].pin, 1);
- uint16_t value = new_value / Adc[idx].param1;
+ case GPIO_ADC_JOY: {
+ uint16_t new_value = AdcRead(Adc[channel].pin, 1);
+ uint16_t value = new_value / Adc[channel].param[0];
if (json) {
AdcShowContinuation(&jsonflg);
- ResponseAppend_P(PSTR("\"Joy%s\":%d"), adc_idx, value);
+ ResponseAppend_P(PSTR("\"Joy%s\":%d"), adc_channel, value);
}
break;
}
- case ADC_PH: {
- float ph = AdcGetPh(idx);
+ case GPIO_ADC_PH: {
+ float ph = AdcGetPh(channel);
char ph_chr[FLOATSZ];
dtostrfd(ph, 2, ph_chr);
if (json) {
AdcShowContinuation(&jsonflg);
- ResponseAppend_P(PSTR("\"pH%d\":%s"), idx + offset, ph_chr);
- #ifdef USE_WEBSERVER
+ ResponseAppend_P(PSTR("\"pH%s\":%s"), adc_channel, ph_chr);
+#ifdef USE_WEBSERVER
} else {
WSContentSend_PD(HTTP_SNS_PH, "", ph_chr);
- #endif // USE_WEBSERVER
+#endif // USE_WEBSERVER
}
break;
}
- case ADC_MQ: {
- float mq = AdcGetMq(idx);
+ case GPIO_ADC_MQ: {
+ float mq = AdcGetMq(channel);
char mq_chr[FLOATSZ];
dtostrfd(mq, 2, mq_chr);
- float mqnumber =Adc[idx].param1;
+ float mqnumber =Adc[channel].param[0];
char mqnumber_chr[FLOATSZ];
dtostrfd(mqnumber, 0, mqnumber_chr);
if (json) {
AdcShowContinuation(&jsonflg);
- ResponseAppend_P(PSTR("\"MQ%d_%d\":%s"), Adc[idx].param1, idx + offset, mq_chr);
- #ifdef USE_WEBSERVER
+ ResponseAppend_P(PSTR("\"MQ%d_%d\":%s"), Adc[channel].param[0], type_index + offset, mq_chr);
+#ifdef USE_WEBSERVER
} else {
WSContentSend_PD(HTTP_SNS_MQ, mqnumber_chr, mq_chr);
- #endif // USE_WEBSERVER
+#endif // USE_WEBSERVER
}
break;
}
+ case GPIO_ADC_VOLTAGE:
+ if (TasmotaGlobal.energy_driver != XNRG_33) {
+ float value = AdcGetRange(channel) / 10000; // Volt
+ if (value < 0.0f) { value = 0.0f; } // Disregard negative values
+ if (json) {
+ AdcShowContinuation(&jsonflg);
+ ResponseAppend_P(PSTR("\"" D_JSON_VOLTAGE "%s\":%*_f"), adc_channel, Settings->flag2.voltage_resolution, &value);
+#ifdef USE_WEBSERVER
+ } else {
+// WSContentSend_Voltage(adc_name, value);
+ WSContentSend_PD(HTTP_SNS_F_VOLTAGE, adc_name, Settings->flag2.voltage_resolution, &value);
+#endif // USE_WEBSERVER
+ }
+ }
+ break;
+ case GPIO_ADC_CURRENT:
+ if (TasmotaGlobal.energy_driver != XNRG_33) {
+ float value = AdcGetRange(channel) / 10000; // Ampere
+ if (value < 0.0f) { value = 0.0f; } // Disregard negative values
+ if (json) {
+ AdcShowContinuation(&jsonflg);
+ ResponseAppend_P(PSTR("\"" D_JSON_CURRENT "%s\":%*_f"), adc_channel, Settings->flag2.current_resolution, &value);
+#ifdef USE_WEBSERVER
+ } else {
+ WSContentSend_PD(HTTP_SNS_F_CURRENT, adc_name, Settings->flag2.current_resolution, &value);
+#endif // USE_WEBSERVER
+ }
+ }
+ break;
}
}
if (jsonflg) {
@@ -753,141 +983,241 @@ void AdcShow(bool json) {
* Commands
\*********************************************************************************************/
-const char kAdcCommands[] PROGMEM = "|" // No prefix
- D_CMND_ADCPARAM;
+const char kAdcCommands[] PROGMEM = "Adc|" // No prefix
+ D_CMND_ADCPARAM "|" D_CMND_ADCGPIO;
void (* const AdcCommand[])(void) PROGMEM = {
- &CmndAdcParam };
+ &CmndAdcParam, &CmndAdcGpio };
+
+uint32_t Decimals(int value) {
+ uint32_t decimals;
+ for (decimals = 4; decimals > 0; decimals--) {
+ if (value % 10) { break; }
+ value /= 10;
+ }
+ return decimals;
+}
+
+void CmndAdcGpio(void) {
+ // AdcGpio33 1 Set to default
+ // AdcGpio33 32000, 10000, 3350 ADC_TEMP Shelly mode
+ for (uint32_t channel = 0; channel < Adcs.present; channel++) {
+#ifdef ESP8266
+ // AdcGpio 32000, 10000, 3350 ADC_TEMP Shelly mode
+ XdrvMailbox.index = Adc[channel].pin;
+#endif
+ if (XdrvMailbox.index == Adc[channel].pin) {
+ XdrvMailbox.index = channel +1;
+ if (XdrvMailbox.data_len) {
+ char data[64];
+ snprintf_P(data, sizeof(data), PSTR("1,%s"), XdrvMailbox.data);
+ XdrvMailbox.data = data;
+ XdrvMailbox.data_len = strlen(data);
+ }
+ CmndAdcParam();
+ break;
+ }
+ }
+}
void CmndAdcParam(void) {
+ // AdcParam 1, 0, ANALOG_RANGE, 0 ADC_INPUT rule | dimmer
+ // AdcParam 1, 32000, 10000, 3350 ADC_TEMP Shelly mode
+ // AdcParam 1, 32000, 10000, 3350, 1 ADC_TEMP Alternate mode
+ // AdcParam 1, 10000, 12518931, -1.405
+ // AdcParam 1, 128, 0, 0
+ // AdcParam 1, 128, 0, 0
+ // AdcParam 1, 0, ANALOG_RANGE, 0, 100 ADC_RANGE
+ // AdcParam 1, 0, 2146, 0.23
+ // AdcParam 1, 1000, 0, 0
+ // AdcParam 1, ADC_PH
+ // AdcParam 1, ADC_MQ
+ // AdcParam 1, 0, ANALOG_RANGE, 0, 3.3 ADC_VOLTAGE
+ // AdcParam 1, 0, ANALOG_RANGE, 0, 3.3 ADC_CURRENT
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= MAX_ADCS)) {
- uint8_t idx = XdrvMailbox.index -1;
+ uint8_t channel = XdrvMailbox.index -1;
+ uint32_t adc_type = Adc[channel].type;
if (XdrvMailbox.data_len) {
- if (XdrvMailbox.payload > ADC_INPUT) {
- AdcGetSettings(idx);
- if (ArgC() > 3) { // Process parameter entry
- char argument[XdrvMailbox.data_len];
- // AdcParam 2, 32000, 10000, 3350 ADC_TEMP Shelly mode
- // AdcParam 2, 32000, 10000, 3350, 1 ADC_TEMP Alternate mode
- // AdcParam 3, 10000, 12518931, -1.405
- // AdcParam 4, 128, 0, 0
- // AdcParam 5, 128, 0, 0
- // AdcParam 6, 0, ANALOG_RANGE, 0, 100
- // AdcParam 7, 0, 2146, 0.23
- // AdcParam 8, 1000, 0, 0
- Adc[idx].type = XdrvMailbox.payload;
- Adc[idx].param1 = strtol(ArgV(argument, 2), nullptr, 10);
- Adc[idx].param2 = strtol(ArgV(argument, 3), nullptr, 10);
- if (ADC_RANGE == XdrvMailbox.payload) {
- Adc[idx].param3 = abs(strtol(ArgV(argument, 4), nullptr, 10));
- Adc[idx].param4 = abs(strtol(ArgV(argument, 5), nullptr, 10));
+ AdcGetSettings(channel);
+ if (ArgC() > 2) { // Process parameter entry
+ char argument[XdrvMailbox.data_len];
+ Adc[channel].param[0] = strtol(ArgV(argument, 2), nullptr, 10); // param1 = int
+ Adc[channel].param[1] = strtol(ArgV(argument, 3), nullptr, 10); // param2 = int
+ if ((GPIO_ADC_INPUT == adc_type) ||
+ (GPIO_ADC_TEMP == adc_type) ||
+ (GPIO_ADC_RANGE == adc_type)) {
+ Adc[channel].param[2] = abs(strtol(ArgV(argument, 4), nullptr, 10)); // param3 = abs(int)
+ Adc[channel].param[3] = abs(strtol(ArgV(argument, 5), nullptr, 10)); // param4 = abs(int)
+ } else {
+ Adc[channel].param[2] = (int)(CharToFloat(ArgV(argument, 4)) * 10000); // param3 = float
+ if (ArgC() > 4) {
+ Adc[channel].param[3] = (int)(CharToFloat(ArgV(argument, 5)) * 10000); // param4 = float
} else {
- Adc[idx].param3 = (int)(CharToFloat(ArgV(argument, 4)) * 10000);
- if (ArgC() > 4) {
- Adc[idx].param4 = (int)(CharToFloat(ArgV(argument, 5)) * 10000);
- }
- else{
- Adc[idx].param4 = 0;
- }
+ Adc[channel].param[3] = 0; // param4 = fixed 0
}
- if (ADC_PH == XdrvMailbox.payload) {
- float phLow = CharToFloat(ArgV(argument, 2));
- float phHigh = CharToFloat(ArgV(argument, 4));
- Adc[idx].param1 = phLow * ANALOG_PH_DECIMAL_MULTIPLIER;
- Adc[idx].param2 = strtol(ArgV(argument, 3), nullptr, 10);
- Adc[idx].param3 = phHigh * ANALOG_PH_DECIMAL_MULTIPLIER;
- Adc[idx].param4 = strtol(ArgV(argument, 5), nullptr, 10);
-
-// AddLog(LOG_LEVEL_INFO, PSTR("ADC: Analog pH probe calibrated. cal-low(pH=ADC) %2_f = %d, cal-high(pH=ADC) %2_f = %d"), &phLow, Adc[idx].param2, &phHigh, Adc[idx].param4);
- }
- if (ADC_CT_POWER == XdrvMailbox.payload) {
- if (((1 == Adc[idx].param1) & CT_FLAG_ENERGY_RESET) > 0) {
- for (uint32_t idx = 0; idx < MAX_ADCS; idx++) {
- Adc[idx].energy = 0;
- }
- Adc[idx].param1 ^= CT_FLAG_ENERGY_RESET; // Cancel energy reset flag
- }
- }
- if (ADC_MQ == XdrvMailbox.payload) {
- float a = CharToFloat(ArgV(argument, 3));
- float b = CharToFloat(ArgV(argument, 4));
- float ratioMQCleanAir = CharToFloat(ArgV(argument, 5));
- if (a==0 && b==0 && ratioMQCleanAir==0)
- {
- if (Adc[idx].param1==2)
- {
- a=574.25;
- b=-2.222;
- ratioMQCleanAir=9.83;
- }
- if (Adc[idx].param1==4)
- {
- a=1012.7;
- b=-2.786;
- ratioMQCleanAir=4.4;
- }
- if (Adc[idx].param1==7)
- {
- a=99.042;
- b=-1.518;
- ratioMQCleanAir=27.5;
- }
- if (Adc[idx].param1==131)
- {
- a=23.943;
- b=-1.11;
- ratioMQCleanAir=15;
- }
- }
- Adc[idx].param2 = (int)(a * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression
- Adc[idx].param3 = (int)(b * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression
- Adc[idx].param4 = (int)(ratioMQCleanAir * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression
-
-// AddLog(LOG_LEVEL_INFO, PSTR("ADC: MQ reset mq%d, a = %2_f, b = %2_f, ratioMQCleanAir = %2_f"), Adc[idx].param1, &a, &b, &ratioMQCleanAir);
- }
- } else { // Set default values based on current adc type
- // AdcParam 2
- // AdcParam 3
- // AdcParam 4
- // AdcParam 5
- // AdcParam 6
- // AdcParam 7
- // AdcParam 8
- Adcs.type = 0;
- AdcInitParams(idx);
}
- AdcSaveSettings(idx);
+ if (GPIO_ADC_PH == adc_type) {
+ float phLow = CharToFloat(ArgV(argument, 2));
+ Adc[channel].param[0] = phLow * ANALOG_PH_DECIMAL_MULTIPLIER; // param1 = float
+// Adc[channel].param[1] = strtol(ArgV(argument, 3), nullptr, 10); // param2 = int
+ float phHigh = CharToFloat(ArgV(argument, 4));
+ Adc[channel].param[2] = phHigh * ANALOG_PH_DECIMAL_MULTIPLIER; // param3 = float
+ Adc[channel].param[3] = strtol(ArgV(argument, 5), nullptr, 10); // param4 = int
+
+// AddLog(LOG_LEVEL_INFO, PSTR("ADC: Analog pH probe calibrated. cal-low(pH=ADC) %2_f = %d, cal-high(pH=ADC) %2_f = %d"), &phLow, Adc[channel].param[1], &phHigh, Adc[channel].param[3]);
+ }
+ if (GPIO_ADC_CT_POWER == adc_type) {
+ if (((1 == Adc[channel].param[0]) & CT_FLAG_ENERGY_RESET) > 0) { // param1 = int
+ for (uint32_t i = 0; i < Adcs.present; i++) {
+ Adc[i].energy = 0;
+ }
+ Adc[channel].param[0] ^= CT_FLAG_ENERGY_RESET; // Cancel energy reset flag
+ }
+ }
+ if (GPIO_ADC_MQ == adc_type) {
+ float a = CharToFloat(ArgV(argument, 3)); // param2 = float
+ float b = CharToFloat(ArgV(argument, 4)); // param3 = float
+ float ratioMQCleanAir = CharToFloat(ArgV(argument, 5)); // param4 = float
+ if ((0 == a) && (0 == b) && (0 == ratioMQCleanAir)) {
+ if (2 == Adc[channel].param[0]) { // param1 = int
+ a = 574.25;
+ b = -2.222;
+ ratioMQCleanAir = 9.83;
+ }
+ else if (4 == Adc[channel].param[0]) {
+ a = 1012.7;
+ b = -2.786;
+ ratioMQCleanAir = 4.4;
+ }
+ else if (7 == Adc[channel].param[0]) {
+ a = 99.042;
+ b = -1.518;
+ ratioMQCleanAir = 27.5;
+ }
+ if (131 == Adc[channel].param[0]) {
+ a = 23.943;
+ b = -1.11;
+ ratioMQCleanAir = 15;
+ }
+ }
+ Adc[channel].param[1] = (int)(a * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression
+ Adc[channel].param[2] = (int)(b * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression
+ Adc[channel].param[3] = (int)(ratioMQCleanAir * ANALOG_MQ_DECIMAL_MULTIPLIER); // Exponential regression
+
+// AddLog(LOG_LEVEL_INFO, PSTR("ADC: MQ reset mq%d, a = %2_f, b = %2_f, ratioMQCleanAir = %2_f"), Adc[channel].param[0], &a, &b, &ratioMQCleanAir);
+ }
+ } else { // Set default values based on current adc type
+ // AdcParam 1
+ AdcInitParams(channel);
}
+ AdcSaveSettings(channel);
}
- // AdcParam
- AdcGetSettings(idx);
- Response_P(PSTR("{\"" D_CMND_ADCPARAM "%d\":[%d,%d,%d"), idx +1, Adcs.type, Adc[idx].param1, Adc[idx].param2);
- if ((ADC_RANGE == Adc[idx].type) || (ADC_MQ == Adc[idx].type)){
- ResponseAppend_P(PSTR(",%d,%d"), Adc[idx].param3, Adc[idx].param4);
+ // AdcParam / AdcGpio
+ AdcGetSettings(channel);
+ Response_P(PSTR("{\"%s"), XdrvMailbox.command); // {"AdcParam or {"AdcGpio
+ if (strstr_P(XdrvMailbox.command, PSTR(D_CMND_ADCGPIO))) {
+#ifdef ESP8266
+ ResponseAppend_P(PSTR("\":["));
+#else
+ ResponseAppend_P(PSTR("%d\":["), Adc[channel].pin);
+#endif
} else {
- int value = Adc[idx].param3;
- uint8_t precision;
- for (precision = 4; precision > 0; precision--) {
- if (value % 10) { break; }
- value /= 10;
- }
- char param3[FLOATSZ];
- dtostrfd(((double)Adc[idx].param3)/10000, precision, param3);
- if (ADC_CT_POWER == Adc[idx].type) {
- char param4[FLOATSZ];
- dtostrfd(((double)Adc[idx].param4)/10000, 3, param4);
- ResponseAppend_P(PSTR(",%s,%s"), param3, param4);
+ ResponseAppend_P(PSTR("%d\":[%d,"), channel +1, Adc[channel].pin);
+ }
+ ResponseAppend_P(PSTR("%d,%d"), Adc[channel].param[0], Adc[channel].param[1]);
+ if ((GPIO_ADC_INPUT == adc_type) ||
+ (GPIO_ADC_TEMP == adc_type) ||
+ (GPIO_ADC_RANGE == adc_type) ||
+ (GPIO_ADC_MQ == adc_type)) {
+ ResponseAppend_P(PSTR(",%d,%d"), Adc[channel].param[2], Adc[channel].param[3]); // param3 = int, param4 = int
+ }
+ else {
+ float param = (float)Adc[channel].param[2] / 10000;
+ ResponseAppend_P(PSTR(",%*_f"), Decimals(Adc[channel].param[2]), ¶m); // param3 = float
+ if ((GPIO_ADC_CT_POWER == adc_type) ||
+ (GPIO_ADC_VOLTAGE == adc_type) ||
+ (GPIO_ADC_CURRENT == adc_type)) {
+ param = (float)Adc[channel].param[3] / 10000;
+ ResponseAppend_P(PSTR(",%*_f"), Decimals(Adc[channel].param[3]), ¶m); // param4 = float
} else {
- ResponseAppend_P(PSTR(",%s,%d"), param3, Adc[idx].param4);
- }
+ ResponseAppend_P(PSTR(",%d"), Adc[channel].param[3]); // param4 = int
+ }
}
ResponseAppend_P(PSTR("]}"));
}
}
/*********************************************************************************************\
- * Interface
+ * Energy Interface
+\*********************************************************************************************/
+
+#ifdef USE_ENERGY_SENSOR
+void AdcEnergyEverySecond(void) {
+ uint32_t voltage_count = 0;
+ uint32_t current_count = 0;
+ for (uint32_t channel = 0; channel < Adcs.present; channel++) {
+ uint32_t type_index = Adc[channel].index;
+ uint32_t adc_type = Adc[channel].type;
+ if (GPIO_ADC_VOLTAGE == adc_type) {
+ Energy->voltage_available = true;
+ float value = AdcGetRange(channel) / 10000; // Volt
+ Energy->voltage[type_index] = (value < 0.0f) ? 0.0f : value; // Disregard negative values
+ voltage_count++;
+ }
+ else if (GPIO_ADC_CURRENT == adc_type) {
+ Energy->current_available = true;
+ float value = AdcGetRange(channel) / 10000; // Ampere
+ Energy->current[type_index] = (value < 0.0f) ? 0.0f : value; // Disregard negative values
+ current_count++;
+ }
+ }
+ for (uint32_t phase = 0; phase < Energy->phase_count; phase++) {
+ uint32_t voltage_phase = (voltage_count == current_count) ? phase : 0;
+ Energy->active_power[phase] = Energy->voltage[voltage_phase] * Energy->current[phase]; // Watt
+ Energy->kWhtoday_delta[phase] += (uint32_t)(Energy->active_power[phase] * 1000) / 36; // deca_microWh
+ Energy->data_valid[phase] = 0;
+ }
+
+// float delta = (float)Energy->kWhtoday_delta[0] / 100;
+// AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("ADC: %3_fV, %3_fA, %3_fW, %2_fmWh"), &Energy->voltage[0], &Energy->current[0], &Energy->active_power[0], &delta);
+
+ EnergyUpdateToday();
+}
+
+bool Xnrg33(uint32_t function) {
+ bool result = false;
+
+ switch (function) {
+ case FUNC_ENERGY_EVERY_SECOND:
+ AdcEnergyEverySecond();
+ break;
+ case FUNC_PRE_INIT: {
+ uint32_t voltage_count = 0;
+ uint32_t current_count = 0;
+ for (uint32_t channel = 0; channel < Adcs.present; channel++) {
+ uint32_t adc_type = Adc[channel].type;
+ if (GPIO_ADC_VOLTAGE == adc_type) { voltage_count++; }
+ if (GPIO_ADC_CURRENT == adc_type) { current_count++; }
+ }
+ if (voltage_count && current_count) {
+ Energy->type_dc = true;
+ Energy->voltage_common = (1 == voltage_count);
+ Energy->phase_count = (voltage_count > current_count) ? voltage_count : current_count;
+ Energy->voltage_available = false;
+ Energy->current_available = false;
+ Energy->use_overtemp = true; // Use global temperature for overtemp detection
+ TasmotaGlobal.energy_driver = XNRG_33;
+ }
+ }
+ break;
+ }
+ return result;
+}
+#endif // USE_ENERGY_SENSOR
+
+/*********************************************************************************************\
+ * Sensor Interface
\*********************************************************************************************/
bool Xsns02(uint32_t function) {
@@ -903,11 +1233,9 @@ bool Xsns02(uint32_t function) {
default:
if (Adcs.present) {
switch (function) {
-#ifdef USE_RULES
case FUNC_EVERY_250_MSECOND:
AdcEvery250ms();
break;
-#endif // USE_RULES
case FUNC_EVERY_SECOND:
AdcEverySecond();
break;
diff --git a/tasmota/tasmota_xsns_sensor/xsns_115_wooliis.ino b/tasmota/tasmota_xsns_sensor/xsns_115_wooliis.ino
new file mode 100644
index 000000000..a3890d177
--- /dev/null
+++ b/tasmota/tasmota_xsns_sensor/xsns_115_wooliis.ino
@@ -0,0 +1,210 @@
+/*
+ xsns_115_wooliis.ino - Wooliis Hall Effect Coulometer (Battery capacity monitor) support for Tasmota
+
+ Copyright (C) 2024 Luca Melette
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+*/
+
+#ifdef USE_WOOLIIS
+/*********************************************************************************************\
+ * Wooliis Hall Effect Coulometer (Battery capacity monitor) with LCD
+ * Model variants: WLS-PVA050 WLS-PVA100 WLS-PVA200 WLS-PVA400 (current ratings 50A, 100A, 200A, 400A)
+ * Similar models: WLS-MVAxxx, WLS-TVAxxx, WLS-HVAxxx (not investigated)
+ *
+ * Manufacturer links:
+ * (Chinese) http://www.wooliis.com/products_view.aspx?ID=75
+ * (English) http://www.wooliis.com/Enproducts_view.aspx?ID=75
+ *
+ * Alternative branding: Drok (Ebay), AiLi (Amazon)
+ *
+ * Inside the case, on the PCB, there is an active serial port with labels Gnd/TX/RX/Vcc.
+ * In some product variants, it might be connected to a Bluetooth module for remote operation.
+ * On the TX pin, meter readings are sent out every 5 secs using 9600 8N1
+ *
+ * Values in binary messages can be mapped as follows:
+ *
+ * magic % Ah V A Wh_in Wh_out status ck
+ * b55b0101 64 03e8 0088 001d 00032b 0002b6 0000a8 6b
+ * 0 1 2 3 4 5 6 7 8 910 111213 141516 171819 20
+ *
+ * And decoded as:
+ * - Charge = 100 %
+ * - Remaining capacity = 100 Ah
+ * - Voltage = 13.6V
+ * - Current = 2.9 A
+ * - Energy IN = 81.1 Wh
+ * - Energy OUT = 69.4 Wh
+ * - Status = charging
+ *
+ * Hardware Serial will be selected if GPIO3 = [Wooliis RX]
+\*********************************************************************************************/
+
+#define XSNS_115 115
+
+#define D_WOOLIIS "Wooliis"
+
+#include
+
+TasmotaSerial *WooliisSerial = nullptr;
+
+typedef struct wooliis_data_t {
+ float remaining_capacity;
+ float voltage;
+ float current;
+ float energy_in;
+ float energy_out;
+ uint8_t status;
+ uint8_t valid = 0;
+ uint8_t charge_percent;
+} wooliis_data_t;
+
+wooliis_data_t *Wooliis = nullptr;
+
+/*********************************************************************************************/
+
+void WooliisReadData() // process the data sent by Wooliis battery capacity monitors every second
+{
+ while (WooliisSerial->available() && WooliisSerial->peek() != 0xb5) {
+ WooliisSerial->read();
+ }
+ if (WooliisSerial->available() < 21) {
+ return;
+ }
+ uint8_t buffer[21];
+ WooliisSerial->readBytes(buffer, 21);
+ if (buffer[0] != 0xb5 && buffer[1] != 0x5b && buffer[2] == 0x01 && buffer[3] == 0x01) {
+ AddLog(LOG_LEVEL_DEBUG, PSTR("WLS: Flush %21_H"), buffer);
+ WooliisSerial->flush(); // Out of sync or wrong sensor connected
+ return;
+ }
+
+ uint8_t checksum = 0;
+ for (uint32_t i = 0; i < 20; i++) {
+ checksum += buffer[i];
+ }
+ checksum = 255 - checksum;
+ if (checksum != buffer[20]) {
+ AddLog(LOG_LEVEL_DEBUG, PSTR("WLS: " D_CHECKSUM_FAILURE));
+ return;
+ }
+
+ AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("WLS: Rcvd %21_H"), buffer);
+
+ Wooliis->charge_percent = buffer[4];
+ Wooliis->remaining_capacity = 0.1f * ((uint16_t)buffer[5]<<8 | buffer[6]);
+ Wooliis->voltage = 0.1f * ((uint16_t)buffer[7]<<8 | buffer[8]);
+ Wooliis->current = (buffer[19] ? -0.1f : 0.1f) * ((uint16_t)buffer[9]<<8 | buffer[10]);
+ Wooliis->energy_in = 0.1f * ((uint32_t)buffer[11]<<16 | (uint16_t)buffer[12]<<8 | buffer[13]);
+ Wooliis->energy_out = 0.1f * ((uint32_t)buffer[14]<<16 | (uint16_t)buffer[15]<<8 | buffer[16]);
+ Wooliis->status = buffer[19];
+
+ Wooliis->valid = 1;
+}
+
+/*********************************************************************************************/
+
+void WooliisInit(void) {
+ if (PinUsed(GPIO_WOOLIIS_RX)) {
+ WooliisSerial = new TasmotaSerial(Pin(GPIO_WOOLIIS_RX), -1, 1);
+ if (WooliisSerial->begin(9600)) {
+ if (WooliisSerial->hardwareSerial()) { ClaimSerial(); }
+ WooliisSerial->flush(); // Clear serial buffer
+ Wooliis = (wooliis_data_t*)calloc(sizeof(wooliis_data_t), 1);
+ if (nullptr == Wooliis) { return; }
+ AddLog(LOG_LEVEL_DEBUG, PSTR("WLS: Serial ready"));
+ }
+ }
+}
+
+#ifdef USE_WEBSERVER
+const char HTTP_SNS_WOOLIIS_BCP[] = "{s}" D_BATTERY " " D_BATTERY_CHARGE "{m}%d " D_UNIT_PERCENT "{e}";
+const char HTTP_SNS_WOOLIIS_CAP[] = "{s}" D_BATTERY " " D_CAPACITY "{m}%*_f " D_UNIT_CHARGE "{e}";
+const char HTTP_SNS_WOOLIIS_CHG[] = "{s}" D_BATTERY " " D_CHARGING "{m}%s{e}";
+const char HTTP_SNS_WOOLIIS_VOL[] = "{s}" D_BATTERY " " D_VOLTAGE "{m}%*_f " D_UNIT_VOLT "{e}";
+const char HTTP_SNS_WOOLIIS_CUR[] = "{s}" D_BATTERY " " D_CURRENT "{m}%*_f " D_UNIT_AMPERE "{e}";
+const char HTTP_SNS_WOOLIIS_POW[] = "{s}" D_BATTERY " " D_POWERUSAGE "{m}%*_f " D_UNIT_WATT "{e}";
+const char HTTP_SNS_WOOLIIS_IMP[] = "{s}" D_BATTERY " " D_IMPORT "{m}%*_f " D_UNIT_WATTHOUR "{e}";
+const char HTTP_SNS_WOOLIIS_EXP[] = "{s}" D_BATTERY " " D_EXPORT "{m}%*_f " D_UNIT_WATTHOUR "{e}";
+#endif // USE_WEBSERVER
+
+void WooliisShow(bool json) {
+ if (Wooliis->valid) {
+ float power = Wooliis->voltage*Wooliis->current;
+ if (json) {
+ ResponseAppend_P(PSTR(",\"" D_WOOLIIS "\":{"));
+ ResponseAppend_P(PSTR("\"" D_JSON_CAPACITY "\":%*_f,"), Settings->flag2.energy_resolution, &Wooliis->remaining_capacity);
+ ResponseAppend_P(PSTR("\"" D_JSON_CHARGING "\":%d,"), (Wooliis->status ? 1 : 0));
+ ResponseAppend_P(PSTR("\"" D_JSON_VOLTAGE "\":%*_f,"), Settings->flag2.voltage_resolution, &Wooliis->voltage);
+ ResponseAppend_P(PSTR("\"" D_JSON_CURRENT "\":%*_f,"), Settings->flag2.current_resolution, &Wooliis->current);
+ ResponseAppend_P(PSTR("\"" D_JSON_POWERUSAGE "\":%*_f,"), Settings->flag2.wattage_resolution, &power);
+ ResponseAppend_P(PSTR("\"" D_JSON_IMPORT "\":%*_f,"), Settings->flag2.energy_resolution, &Wooliis->energy_in);
+ ResponseAppend_P(PSTR("\"" D_JSON_EXPORT "\":%*_f"), Settings->flag2.energy_resolution, &Wooliis->energy_out);
+ ResponseJsonEnd();
+#ifdef USE_DOMOTICZ
+ if (0 == TasmotaGlobal.tele_period) {
+ char pe[16];
+ snprintf_P(pe, sizeof(pe), PSTR("%d;%d"), Wooliis->voltage*Wooliis->current, Wooliis->energy_out);
+ DomoticzSensor(DZ_COUNT, Wooliis->charge_percent);
+ DomoticzSensor(DZ_VOLTAGE, Wooliis->voltage);
+ DomoticzSensor(DZ_CURRENT, Wooliis->current);
+ DomoticzSensor(DZ_POWER_ENERGY, pe);
+ }
+#endif // USE_DOMOTICZ
+ } // if json
+#ifdef USE_WEBSERVER
+ else {
+ WSContentSend_PD(HTTP_SNS_WOOLIIS_BCP, Wooliis->charge_percent);
+ WSContentSend_PD(HTTP_SNS_WOOLIIS_CAP, Settings->flag2.energy_resolution, &Wooliis->remaining_capacity);
+ WSContentSend_PD(HTTP_SNS_WOOLIIS_CHG, (Wooliis->status ? D_TRUE : D_FALSE));
+ WSContentSend_PD(HTTP_SNS_WOOLIIS_VOL, Settings->flag2.voltage_resolution, &Wooliis->voltage);
+ WSContentSend_PD(HTTP_SNS_WOOLIIS_CUR, Settings->flag2.current_resolution, &Wooliis->current);
+ WSContentSend_PD(HTTP_SNS_WOOLIIS_POW, Settings->flag2.wattage_resolution, &power);
+ WSContentSend_PD(HTTP_SNS_WOOLIIS_IMP, Settings->flag2.energy_resolution, &Wooliis->energy_in);
+ WSContentSend_PD(HTTP_SNS_WOOLIIS_EXP, Settings->flag2.energy_resolution, &Wooliis->energy_out);
+ }
+#endif // USE_WEBSERVER
+ }
+}
+
+/*********************************************************************************************\
+ * Interface
+\*********************************************************************************************/
+
+bool Xsns115(uint32_t function)
+{
+ bool result = false;
+
+ if (FUNC_INIT == function) {
+ WooliisInit();
+ }
+ else if (Wooliis) {
+ switch (function) {
+ case FUNC_EVERY_SECOND:
+ WooliisReadData();
+ break;
+ case FUNC_JSON_APPEND:
+ WooliisShow(1);
+ break;
+#ifdef USE_WEBSERVER
+ case FUNC_WEB_SENSOR:
+ WooliisShow(0);
+ break;
+#endif // USE_WEBSERVER
+ }
+ }
+ return result;
+}
+
+#endif // USE_WOOLIIS
diff --git a/tasmota/tasmota_xsns_sensor/xsns_14_sht3x.ino b/tasmota/tasmota_xsns_sensor/xsns_14_sht3x.ino
index daf1b5a1f..7aca6e288 100644
--- a/tasmota/tasmota_xsns_sensor/xsns_14_sht3x.ino
+++ b/tasmota/tasmota_xsns_sensor/xsns_14_sht3x.ino
@@ -1,7 +1,7 @@
/*
xsns_14_sht3x.ino - SHT3X, SHT4X and SHTCX temperature and humidity sensor support for Tasmota
- Copyright (C) 2022 Theo Arends, Stefan Tibus
+ Copyright (C) 2024 Theo Arends, Stefan Tibus, Jan-David Förster
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -25,22 +25,25 @@
* This driver supports the following sensors:
* - SHT3x series: SHT30, SHT31, SHT35 (addresses: A: 0x44, B: 0x45)
* - SHTC series: SHTC1, SHTC3 (address: 0x70)
- * - SHT4x series: SHT40, SHT41, SHT45 (addresses: A: 0x44, B: 0x45)
+ * - SHT4x series: SHT40, SHT41, SHT45 (addresses: A: 0x44, B: 0x45, C: 0x46)
\*********************************************************************************************/
#define XSNS_14 14
#define XI2C_15 15 // See I2CDEVICES.md
#define SHT3X_TYPES 3 // SHT3X, SHTCX and SHT4X
-#define SHT3X_ADDRESSES 3 // 0x44, 0x45 and 0x70
+#define SHT3X_ADDRESSES 4 // 0x44, 0x45, 0x46 and 0x70
enum SHT3X_Types { SHT3X_TYPE_SHT3X, SHT3X_TYPE_SHTCX, SHT3X_TYPE_SHT4X };
const char kSht3xTypes[] PROGMEM = "SHT3X|SHTC3|SHT4X";
-uint8_t sht3x_addresses[] = { 0x44, 0x45, 0x70 };
+uint8_t sht3x_addresses[] = { 0x44, 0x45, 0x46, 0x70 };
uint8_t sht3x_count = 0;
struct SHT3XSTRUCT {
+ float humi = NAN;
+ float temp = NAN;
+ uint8_t valid = 0;
uint8_t type; // Sensor type
uint8_t address; // I2C bus address
uint8_t bus;
@@ -64,9 +67,8 @@ uint8_t Sht3xComputeCrc(uint8_t data[], uint8_t len) {
return crc;
}
-bool Sht3xRead(uint32_t sensor, float &t, float &h) {
- t = NAN;
- h = NAN;
+bool Sht3xRead(uint32_t sensor) {
+ if (sht3x_sensors[sensor].valid) { sht3x_sensors[sensor].valid--; }
TwoWire& myWire = I2cGetWire(sht3x_sensors[sensor].bus);
if (&myWire == nullptr) { return false; } // No valid I2c bus
@@ -95,7 +97,7 @@ bool Sht3xRead(uint32_t sensor, float &t, float &h) {
if (myWire.endTransmission() != 0) { // Stop I2C transmission
return false;
}
- delay(30); // Timing verified with logic analyzer (10 is to short)
+ delay(30); // Timing verified with logic analyzer (10 is too short)
uint8_t data[6];
myWire.requestFrom(i2c_address, (uint8_t)6); // Request 6 bytes of data
for (uint32_t i = 0; i < 6; i++) {
@@ -104,29 +106,31 @@ bool Sht3xRead(uint32_t sensor, float &t, float &h) {
if ((Sht3xComputeCrc(&data[0], 2) != data[2]) || (Sht3xComputeCrc(&data[3], 2) != data[5])) {
return false;
}
- t = ((float)(((data[0] << 8) | data[1]) * 175) / 65535.0) - 45.0;
+ int32_t t_100 = ((((data[0] << 8) | data[1]) * 17500) >> 16) - 4500;
+ int32_t h_100;
if (type == SHT3X_TYPE_SHT4X) {
- h = ((float)(((data[3] << 8) | data[4]) * 125) / 65535.0) - 6.0;
+ h_100 = ((((data[3] << 8) | data[4]) * 12500) >> 16) - 600;
} else {
- h = ((float)(((data[3] << 8) | data[4]) * 100) / 65535.0);
+ h_100 = ((((data[3] << 8) | data[4]) * 10000) >> 16);
}
- return (!isnan(t) && !isnan(h));
+ sht3x_sensors[sensor].temp = ConvertTemp(t_100/100.0f);
+ sht3x_sensors[sensor].humi = ConvertHumidity(h_100/100.0f);
+ if (isnan(sht3x_sensors[sensor].temp) || isnan(sht3x_sensors[sensor].humi)) { return false; }
+ sht3x_sensors[sensor].valid = SENSOR_MAX_MISS;
+ return true;
}
/********************************************************************************************/
void Sht3xDetect(void) {
- float t;
- float h;
-
for (uint32_t bus = 0; bus < 2; bus++) {
for (uint32_t k = 0; k < SHT3X_TYPES; k++) {
- sht3x_sensors[sht3x_count].type = k;
for (uint32_t i = 0; i < SHT3X_ADDRESSES; i++) {
if (!I2cSetDevice(sht3x_addresses[i], bus)) { continue; }
+ sht3x_sensors[sht3x_count].type = k;
sht3x_sensors[sht3x_count].address = sht3x_addresses[i];
sht3x_sensors[sht3x_count].bus = bus;
- if (Sht3xRead(sht3x_count, t, h)) {
+ if (Sht3xRead(sht3x_count)) {
GetTextIndexed(sht3x_sensors[sht3x_count].types, sizeof(sht3x_sensors[sht3x_count].types), sht3x_sensors[sht3x_count].type, kSht3xTypes);
I2cSetActiveFound(sht3x_sensors[sht3x_count].address, sht3x_sensors[sht3x_count].types, sht3x_sensors[sht3x_count].bus);
sht3x_count++;
@@ -139,20 +143,35 @@ void Sht3xDetect(void) {
}
}
+
+void Sht3xUpdate(void) {
+ for (uint32_t idx = 0; idx < sht3x_count; idx++) {
+ if (!Sht3xRead(idx)) {
+ AddLogMissed(sht3x_sensors[idx].types, sht3x_sensors[idx].valid);
+ }
+ }
+}
+
void Sht3xShow(bool json) {
- float t;
- float h;
char types[11];
- for (uint32_t i = 0; i < sht3x_count; i++) {
- if (Sht3xRead(i, t, h)) {
- t = ConvertTemp(t);
- h = ConvertHumidity(h);
- strlcpy(types, sht3x_sensors[i].types, sizeof(types));
+ for (uint32_t idx = 0; idx < sht3x_count; idx++) {
+ if (sht3x_sensors[idx].valid) {
+ strlcpy(types, sht3x_sensors[idx].types, sizeof(types));
if (sht3x_count > 1) {
- snprintf_P(types, sizeof(types), PSTR("%s%c%02X"), sht3x_sensors[i].types, IndexSeparator(), sht3x_sensors[i].address); // "SHT3X-0xXX"
+ snprintf_P(types, sizeof(types), PSTR("%s%c%02X"), types, IndexSeparator(), sht3x_sensors[idx].address); // "SHT3X-0xXX"
+#ifdef ESP32
+ if (TasmotaGlobal.i2c_enabled_2) {
+ for (uint32_t i = 1; i < sht3x_count; i++) {
+ if (sht3x_sensors[0].bus != sht3x_sensors[i].bus) {
+ snprintf_P(types, sizeof(types), PSTR("%s%c%d"), types, IndexSeparator(), sht3x_sensors[idx].bus + 1); // "SHT3X-0xXX-X"
+ break;
+ }
+ }
+ }
+#endif
}
- TempHumDewShow(json, ((0 == TasmotaGlobal.tele_period) && (0 == i)), types, t, h);
+ TempHumDewShow(json, ((0 == TasmotaGlobal.tele_period) && (0 == idx)), types, sht3x_sensors[idx].temp, sht3x_sensors[idx].humi);
}
}
}
@@ -171,6 +190,9 @@ bool Xsns14(uint32_t function) {
}
else if (sht3x_count) {
switch (function) {
+ case FUNC_EVERY_SECOND:
+ Sht3xUpdate();
+ break;
case FUNC_JSON_APPEND:
Sht3xShow(1);
break;
diff --git a/tasmota/tasmota_xsns_sensor/xsns_28_qmp6988.ino b/tasmota/tasmota_xsns_sensor/xsns_28_qmp6988.ino
new file mode 100644
index 000000000..c4e0fdddc
--- /dev/null
+++ b/tasmota/tasmota_xsns_sensor/xsns_28_qmp6988.ino
@@ -0,0 +1,450 @@
+/*
+ xsns_28_qmp6988->ino - QMP6988 temperature and pressure sensor support for Tasmota
+
+ SPDX-FileCopyrightText: 2024 Theo Arends
+
+ SPDX-License-Identifier: GPL-3.0-only
+*/
+
+#ifdef USE_I2C
+#ifdef USE_QMP6988
+/*********************************************************************************************\
+ * QMP6988 Temperature and Pressure sensor
+ *
+ * Source: M5Stack lib M5Unit-ENV, file QMP6988.cpp
+ *
+ * I2C Address: 0x56 or 0x70
+\*********************************************************************************************/
+
+#define XSNS_28 28
+#define XI2C_88 88 // See I2CDEVICES.md
+
+#define QMP6988_ADDRESS_L 0x70
+#define QMP6988_ADDRESS_H 0x56
+
+#define QMP6988_CHIP_ID 0x5C
+
+#define QMP6988_CHIP_ID_REG 0xD1
+#define QMP6988_RESET_REG 0xE0 // Device reset register
+#define QMP6988_DEVICE_STAT_REG 0xF3 // Device state register
+#define QMP6988_CTRLMEAS_REG 0xF4 // Measurement Condition Control Register
+// Data
+#define QMP6988_PRESSURE_MSB_REG 0xF7 // Pressure MSB Register
+
+// Compensation calculation
+#define QMP6988_CALIBRATION_DATA_START 0xA0 // QMP6988 compensation coefficients
+#define QMP6988_CALIBRATION_DATA_LENGTH 25
+
+// Power mode
+#define QMP6988_SLEEP_MODE 0x00
+#define QMP6988_FORCED_MODE 0x01
+#define QMP6988_NORMAL_MODE 0x03
+
+#define QMP6988_CTRLMEAS_REG_MODE__POS 0
+#define QMP6988_CTRLMEAS_REG_MODE__MSK 0x03
+#define QMP6988_CTRLMEAS_REG_MODE__LEN 2
+
+// Oversampling
+#define QMP6988_OVERSAMPLING_SKIPPED 0x00
+#define QMP6988_OVERSAMPLING_1X 0x01
+#define QMP6988_OVERSAMPLING_2X 0x02
+#define QMP6988_OVERSAMPLING_4X 0x03
+#define QMP6988_OVERSAMPLING_8X 0x04
+#define QMP6988_OVERSAMPLING_16X 0x05
+#define QMP6988_OVERSAMPLING_32X 0x06
+#define QMP6988_OVERSAMPLING_64X 0x07
+
+#define QMP6988_CTRLMEAS_REG_OSRST__POS 5
+#define QMP6988_CTRLMEAS_REG_OSRST__MSK 0xE0
+#define QMP6988_CTRLMEAS_REG_OSRST__LEN 3
+
+#define QMP6988_CTRLMEAS_REG_OSRSP__POS 2
+#define QMP6988_CTRLMEAS_REG_OSRSP__MSK 0x1C
+#define QMP6988_CTRLMEAS_REG_OSRSP__LEN 3
+
+// filter
+#define QMP6988_FILTERCOEFF_OFF 0x00
+#define QMP6988_FILTERCOEFF_2 0x01
+#define QMP6988_FILTERCOEFF_4 0x02
+#define QMP6988_FILTERCOEFF_8 0x03
+#define QMP6988_FILTERCOEFF_16 0x04
+#define QMP6988_FILTERCOEFF_32 0x05
+
+#define QMP6988_CONFIG_REG 0xF1 // IIR filter co-efficient setting Register
+#define QMP6988_CONFIG_REG_FILTER__POS 0
+#define QMP6988_CONFIG_REG_FILTER__MSK 0x07
+#define QMP6988_CONFIG_REG_FILTER__LEN 3
+
+#define SUBTRACTOR 8388608 // pow(2,23)
+
+typedef struct qmp6988_cali_data_t {
+ int COE_a0;
+ int16_t COE_a1;
+ int16_t COE_a2;
+ int COE_b00;
+ int16_t COE_bt1;
+ int16_t COE_bt2;
+ int16_t COE_bp1;
+ int16_t COE_b11;
+ int16_t COE_bp2;
+ int16_t COE_b12;
+ int16_t COE_b21;
+ int16_t COE_bp3;
+} qmp6988_cali_data_t;
+
+typedef struct qmp6988_ik_data_t {
+ int a0;
+ int b00;
+ int a1;
+ int a2;
+ int64_t bt1;
+ int64_t bt2;
+ int64_t bp1;
+ int64_t b11;
+ int64_t bp2;
+ int64_t b12;
+ int64_t b21;
+ int64_t bp3;
+} qmp6988_ik_data_t;
+
+typedef struct qmp6988_data_t {
+ qmp6988_cali_data_t qmp6988_cali;
+ qmp6988_ik_data_t ik;
+ float temperature;
+ float pressure;
+ float altitude;
+ uint8_t slave;
+ uint8_t chip_id;
+ uint8_t power_mode;
+ uint8_t address;
+ uint8_t bus;
+} qmp6988_data_t;
+
+qmp6988_data_t *Qmp6988 = nullptr;
+
+/*********************************************************************************************/
+
+bool QMP6988I2cReadBuffer(uint8_t reg, uint8_t *reg_data, uint16_t len) {
+ bool ret = !I2cReadBuffer(Qmp6988->address, reg, reg_data, len, Qmp6988->bus);
+
+// AddLog(LOG_LEVEL_DEBUG, PSTR("QMP: Rd %02X '%*_H', Rslt %d"), reg, len, reg_data, ret);
+
+ return ret;
+}
+
+bool QMP6988I2cWrite(uint8_t reg, uint32_t val) {
+ bool ret = I2cWrite8(Qmp6988->address, reg, val, Qmp6988->bus);
+
+// AddLog(LOG_LEVEL_DEBUG, PSTR("QMP: Wr %02X '%02X', Rslt %d"), reg, val, ret);
+
+ delay(20);
+ return ret;
+}
+
+/*********************************************************************************************/
+
+// DISABLE LOG
+#define QMP6988_LOG(format...)
+#define QMP6988_ERR(format...)
+
+// ENABLE LOG
+// #define QMP6988_LOG Serial.printf
+// #define QMP6988_ERR Serial.printf
+
+int QMP6988GetCalibrationData(void) {
+ int status = 0;
+ // BITFIELDS temp_COE;
+ uint8_t a_data_uint8_tr[QMP6988_CALIBRATION_DATA_LENGTH] = {0};
+ int len;
+
+ for (len = 0; len < QMP6988_CALIBRATION_DATA_LENGTH; len += 1) {
+ status = QMP6988I2cReadBuffer(QMP6988_CALIBRATION_DATA_START + len, &a_data_uint8_tr[len], 1);
+ if (status == 0) {
+ QMP6988_LOG("qmp6988 read 0xA0 error!");
+ return status;
+ }
+ }
+
+ Qmp6988->qmp6988_cali.COE_a0 = (int)(((a_data_uint8_tr[18] << 12) | (a_data_uint8_tr[19] << 4) | (a_data_uint8_tr[24] & 0x0f)) << 12);
+ Qmp6988->qmp6988_cali.COE_a0 = Qmp6988->qmp6988_cali.COE_a0 >> 12;
+
+ Qmp6988->qmp6988_cali.COE_a1 = (int16_t)(((a_data_uint8_tr[20]) << 8) | a_data_uint8_tr[21]);
+ Qmp6988->qmp6988_cali.COE_a2 = (int16_t)(((a_data_uint8_tr[22]) << 8) | a_data_uint8_tr[23]);
+
+ Qmp6988->qmp6988_cali.COE_b00 = (int)(((a_data_uint8_tr[0] << 12) | (a_data_uint8_tr[1] << 4) | ((a_data_uint8_tr[24] & 0xf0) >> 4)) << 12);
+ Qmp6988->qmp6988_cali.COE_b00 = Qmp6988->qmp6988_cali.COE_b00 >> 12;
+
+ Qmp6988->qmp6988_cali.COE_bt1 = (int16_t)(((a_data_uint8_tr[2]) << 8) | a_data_uint8_tr[3]);
+ Qmp6988->qmp6988_cali.COE_bt2 = (int16_t)(((a_data_uint8_tr[4]) << 8) | a_data_uint8_tr[5]);
+ Qmp6988->qmp6988_cali.COE_bp1 = (int16_t)(((a_data_uint8_tr[6]) << 8) | a_data_uint8_tr[7]);
+ Qmp6988->qmp6988_cali.COE_b11 = (int16_t)(((a_data_uint8_tr[8]) << 8) | a_data_uint8_tr[9]);
+ Qmp6988->qmp6988_cali.COE_bp2 = (int16_t)(((a_data_uint8_tr[10]) << 8) | a_data_uint8_tr[11]);
+ Qmp6988->qmp6988_cali.COE_b12 = (int16_t)(((a_data_uint8_tr[12]) << 8) | a_data_uint8_tr[13]);
+ Qmp6988->qmp6988_cali.COE_b21 = (int16_t)(((a_data_uint8_tr[14]) << 8) | a_data_uint8_tr[15]);
+ Qmp6988->qmp6988_cali.COE_bp3 = (int16_t)(((a_data_uint8_tr[16]) << 8) | a_data_uint8_tr[17]);
+
+ QMP6988_LOG("<-----------calibration data-------------->\r\n");
+ QMP6988_LOG("COE_a0[%d] COE_a1[%d] COE_a2[%d] COE_b00[%d]\r\n",
+ Qmp6988->qmp6988_cali.COE_a0, Qmp6988->qmp6988_cali.COE_a1,
+ Qmp6988->qmp6988_cali.COE_a2, Qmp6988->qmp6988_cali.COE_b00);
+ QMP6988_LOG("COE_bt1[%d] COE_bt2[%d] COE_bp1[%d] COE_b11[%d]\r\n",
+ Qmp6988->qmp6988_cali.COE_bt1, Qmp6988->qmp6988_cali.COE_bt2,
+ Qmp6988->qmp6988_cali.COE_bp1, Qmp6988->qmp6988_cali.COE_b11);
+ QMP6988_LOG("COE_bp2[%d] COE_b12[%d] COE_b21[%d] COE_bp3[%d]\r\n",
+ Qmp6988->qmp6988_cali.COE_bp2, Qmp6988->qmp6988_cali.COE_b12,
+ Qmp6988->qmp6988_cali.COE_b21, Qmp6988->qmp6988_cali.COE_bp3);
+ QMP6988_LOG("<-----------calibration data-------------->\r\n");
+
+ Qmp6988->ik.a0 = Qmp6988->qmp6988_cali.COE_a0; // 20Q4
+ Qmp6988->ik.b00 = Qmp6988->qmp6988_cali.COE_b00; // 20Q4
+
+ Qmp6988->ik.a1 = 3608L * (int)Qmp6988->qmp6988_cali.COE_a1 - 1731677965L; // 31Q23
+ Qmp6988->ik.a2 = 16889L * (int)Qmp6988->qmp6988_cali.COE_a2 - 87619360L; // 30Q47
+
+ Qmp6988->ik.bt1 = 2982L * (int64_t)Qmp6988->qmp6988_cali.COE_bt1 + 107370906L; // 28Q15
+ Qmp6988->ik.bt2 = 329854L * (int64_t)Qmp6988->qmp6988_cali.COE_bt2 + 108083093L; // 34Q38
+ Qmp6988->ik.bp1 = 19923L * (int64_t)Qmp6988->qmp6988_cali.COE_bp1 + 1133836764L; // 31Q20
+ Qmp6988->ik.b11 = 2406L * (int64_t)Qmp6988->qmp6988_cali.COE_b11 + 118215883L; // 28Q34
+ Qmp6988->ik.bp2 = 3079L * (int64_t)Qmp6988->qmp6988_cali.COE_bp2 - 181579595L; // 29Q43
+ Qmp6988->ik.b12 = 6846L * (int64_t)Qmp6988->qmp6988_cali.COE_b12 + 85590281L; // 29Q53
+ Qmp6988->ik.b21 = 13836L * (int64_t)Qmp6988->qmp6988_cali.COE_b21 + 79333336L; // 29Q60
+ Qmp6988->ik.bp3 = 2915L * (int64_t)Qmp6988->qmp6988_cali.COE_bp3 + 157155561L; // 28Q65
+
+ QMP6988_LOG("<----------- int calibration data -------------->\r\n");
+ QMP6988_LOG("a0[%d] a1[%d] a2[%d] b00[%d]\r\n", Qmp6988->ik.a0,
+ Qmp6988->ik.a1, Qmp6988->ik.a2, Qmp6988->ik.b00);
+ QMP6988_LOG("bt1[%lld] bt2[%lld] bp1[%lld] b11[%lld]\r\n",
+ Qmp6988->ik.bt1, Qmp6988->ik.bt2, Qmp6988->ik.bp1, Qmp6988->ik.b11);
+ QMP6988_LOG("bp2[%lld] b12[%lld] b21[%lld] bp3[%lld]\r\n",
+ Qmp6988->ik.bp2, Qmp6988->ik.b12, Qmp6988->ik.b21, Qmp6988->ik.bp3);
+ QMP6988_LOG("<----------- int calibration data -------------->\r\n");
+
+ return 1;
+}
+
+int16_t QMP6988ConvTx02e(qmp6988_ik_data_t* ik, int dt);
+int16_t QMP6988ConvTx02e(qmp6988_ik_data_t* ik, int dt) {
+ int16_t ret;
+ int64_t wk1, wk2;
+
+ // wk1: 60Q4 // bit size
+ wk1 = ((int64_t)ik->a1 * (int64_t)dt); // 31Q23+24-1=54 (54Q23)
+ wk2 = ((int64_t)ik->a2 * (int64_t)dt) >> 14; // 30Q47+24-1=53 (39Q33)
+ wk2 = (wk2 * (int64_t)dt) >> 10; // 39Q33+24-1=62 (52Q23)
+ wk2 = ((wk1 + wk2) / 32767) >> 19; // 54,52->55Q23 (20Q04)
+ ret = (int16_t)((ik->a0 + wk2) >> 4); // 21Q4 -> 17Q0
+ return ret;
+}
+
+int QMP6988GetPressure02e(qmp6988_ik_data_t* ik, int dp, int16_t tx);
+int QMP6988GetPressure02e(qmp6988_ik_data_t* ik, int dp, int16_t tx) {
+ int ret;
+ int64_t wk1, wk2, wk3;
+
+ // wk1 = 48Q16 // bit size
+ wk1 = ((int64_t)ik->bt1 * (int64_t)tx); // 28Q15+16-1=43 (43Q15)
+ wk2 = ((int64_t)ik->bp1 * (int64_t)dp) >> 5; // 31Q20+24-1=54 (49Q15)
+ wk1 += wk2; // 43,49->50Q15
+ wk2 = ((int64_t)ik->bt2 * (int64_t)tx) >> 1; // 34Q38+16-1=49 (48Q37)
+ wk2 = (wk2 * (int64_t)tx) >> 8; // 48Q37+16-1=63 (55Q29)
+ wk3 = wk2; // 55Q29
+ wk2 = ((int64_t)ik->b11 * (int64_t)tx) >> 4; // 28Q34+16-1=43 (39Q30)
+ wk2 = (wk2 * (int64_t)dp) >> 1; // 39Q30+24-1=62 (61Q29)
+ wk3 += wk2; // 55,61->62Q29
+ wk2 = ((int64_t)ik->bp2 * (int64_t)dp) >> 13; // 29Q43+24-1=52 (39Q30)
+ wk2 = (wk2 * (int64_t)dp) >> 1; // 39Q30+24-1=62 (61Q29)
+ wk3 += wk2; // 62,61->63Q29
+ wk1 += wk3 >> 14; // Q29 >> 14 -> Q15
+ wk2 = ((int64_t)ik->b12 * (int64_t)tx); // 29Q53+16-1=45 (45Q53)
+ wk2 = (wk2 * (int64_t)tx) >> 22; // 45Q53+16-1=61 (39Q31)
+ wk2 = (wk2 * (int64_t)dp) >> 1; // 39Q31+24-1=62 (61Q30)
+ wk3 = wk2; // 61Q30
+ wk2 = ((int64_t)ik->b21 * (int64_t)tx) >> 6; // 29Q60+16-1=45 (39Q54)
+ wk2 = (wk2 * (int64_t)dp) >> 23; // 39Q54+24-1=62 (39Q31)
+ wk2 = (wk2 * (int64_t)dp) >> 1; // 39Q31+24-1=62 (61Q20)
+ wk3 += wk2; // 61,61->62Q30
+ wk2 = ((int64_t)ik->bp3 * (int64_t)dp) >> 12; // 28Q65+24-1=51 (39Q53)
+ wk2 = (wk2 * (int64_t)dp) >> 23; // 39Q53+24-1=62 (39Q30)
+ wk2 = (wk2 * (int64_t)dp); // 39Q30+24-1=62 (62Q30)
+ wk3 += wk2; // 62,62->63Q30
+ wk1 += wk3 >> 15; // Q30 >> 15 = Q15
+ wk1 /= 32767L;
+ wk1 >>= 11; // Q15 >> 7 = Q4
+ wk1 += ik->b00; // Q4 + 20Q4
+ // wk1 >>= 4; // 28Q4 -> 24Q0
+ ret = (int)wk1;
+ return ret;
+}
+
+void QMP6988Reset(void) {
+ uint8_t ret = QMP6988I2cWrite(QMP6988_RESET_REG, 0xe6);
+ if (0 == ret) {
+ QMP6988_LOG("reset fail!!! \r\n");
+ }
+ QMP6988I2cWrite(QMP6988_RESET_REG, 0x00);
+}
+
+void QMP6988SetpPowermode(int power_mode) {
+
+ QMP6988_LOG("qmp_set_powermode %d \r\n", power_mode);
+
+ Qmp6988->power_mode = power_mode;
+ uint8_t data;
+ QMP6988I2cReadBuffer(QMP6988_CTRLMEAS_REG, &data, 1);
+ data = data & 0xfc;
+ if (power_mode == QMP6988_SLEEP_MODE) {
+ data |= 0x00;
+ } else if (power_mode == QMP6988_FORCED_MODE) {
+ data |= 0x01;
+ } else if (power_mode == QMP6988_NORMAL_MODE) {
+ data |= 0x03;
+ }
+ QMP6988I2cWrite(QMP6988_CTRLMEAS_REG, data);
+
+ QMP6988_LOG("qmp_set_powermode 0xf4=0x%x \r\n", data);
+}
+
+void QMP6988SetFilter(unsigned char filter) {
+ uint8_t data = (filter & 0x03);
+ QMP6988I2cWrite(QMP6988_CONFIG_REG, data);
+}
+
+void QMP6988SetOversamplingP(unsigned char oversampling_p) {
+ uint8_t data;
+ QMP6988I2cReadBuffer(QMP6988_CTRLMEAS_REG, &data, 1);
+ data &= 0xe3;
+ data |= (oversampling_p << 2);
+ QMP6988I2cWrite(QMP6988_CTRLMEAS_REG, data);
+}
+
+void QMP6988SetOversamplingT(unsigned char oversampling_t) {
+ uint8_t data;
+ QMP6988I2cReadBuffer(QMP6988_CTRLMEAS_REG, &data, 1);
+ data &= 0x1f;
+ data |= (oversampling_t << 5);
+ QMP6988I2cWrite(QMP6988_CTRLMEAS_REG, data);
+}
+
+bool QMP6988ValidChip(void) {
+ uint8_t data;
+ QMP6988I2cReadBuffer(QMP6988_CHIP_ID_REG, &data, 1);
+
+ QMP6988_LOG("chip id=0x%x \r\n", data);
+
+ return (QMP6988_CHIP_ID == data);
+}
+
+/*********************************************************************************************/
+
+void QMP6988CalcPressureAndTemperature(void) {
+ uint8_t a_data_uint8_tr[6] = {0};
+ uint8_t err = QMP6988I2cReadBuffer(QMP6988_PRESSURE_MSB_REG, a_data_uint8_tr, 6);
+ if (err == 0) {
+ QMP6988_LOG("qmp6988 read press raw error! \r\n");
+ return;
+ }
+ uint32_t T_read = (uint32_t)((((uint32_t)(a_data_uint8_tr[3])) << 16) | (((uint16_t)(a_data_uint8_tr[4])) << 8) | (a_data_uint8_tr[5]));
+ int T_raw = (int)(T_read - SUBTRACTOR);
+ int T_int = QMP6988ConvTx02e(&(Qmp6988->ik), T_raw);
+
+ uint32_t P_read = (uint32_t)((((uint32_t)(a_data_uint8_tr[0])) << 16) | (((uint16_t)(a_data_uint8_tr[1])) << 8) | (a_data_uint8_tr[2]));
+ int P_raw = (int)(P_read - SUBTRACTOR);
+ int P_int = QMP6988GetPressure02e(&(Qmp6988->ik), P_raw, T_int);
+
+ Qmp6988->temperature = (float)T_int / 256.0f;
+ Qmp6988->pressure = (float)P_int / 1600.0f;
+}
+
+void Qmp6988Detect(void) {
+ Qmp6988 = (qmp6988_data_t*)calloc(sizeof(qmp6988_data_t), 1); // Need calloc to reset registers to 0/false
+ if (nullptr == Qmp6988) { return; }
+
+ const uint8_t addresses[2] = { QMP6988_ADDRESS_L, QMP6988_ADDRESS_H };
+ for (uint32_t bus = 0; bus < 2; bus++) {
+ for (uint32_t i = 0; i < sizeof(addresses); i++) {
+ if (!I2cSetDevice(addresses[i], bus)) { continue; }
+ Qmp6988->address = addresses[i];
+ Qmp6988->bus = bus;
+ if (QMP6988ValidChip()) {
+ QMP6988Reset();
+ QMP6988GetCalibrationData();
+ QMP6988SetpPowermode(QMP6988_NORMAL_MODE);
+ QMP6988SetFilter(QMP6988_FILTERCOEFF_4);
+ QMP6988SetOversamplingP(QMP6988_OVERSAMPLING_8X);
+ QMP6988SetOversamplingT(QMP6988_OVERSAMPLING_1X);
+ I2cSetActiveFound(Qmp6988->address, "QMP6988", Qmp6988->bus);
+ return;
+ }
+ }
+ }
+
+ free(Qmp6988);
+ Qmp6988 = nullptr;
+}
+
+void Qmp6988Show(bool json) {
+ float qmp_temperature = ConvertTemp(Qmp6988->temperature);
+ float qmp_pressure = ConvertPressure(Qmp6988->pressure);
+ float qmp_sealevel = ConvertPressureForSeaLevel(Qmp6988->pressure);
+
+ char pressure[33];
+ dtostrfd(qmp_pressure, Settings->flag2.pressure_resolution, pressure);
+ char sea_pressure[33];
+ dtostrfd(qmp_sealevel, Settings->flag2.pressure_resolution, sea_pressure);
+
+ if (json) {
+ ResponseAppend_P(PSTR(",\"QMP6988\":{\"" D_JSON_TEMPERATURE "\":%*_f,\"" D_JSON_PRESSURE "\":%s"),
+ Settings->flag2.temperature_resolution, &qmp_temperature, pressure);
+ if (Settings->altitude != 0) {
+ ResponseAppend_P(PSTR(",\"" D_JSON_PRESSUREATSEALEVEL "\":%s"), sea_pressure);
+ }
+ ResponseJsonEnd();
+#ifdef USE_DOMOTICZ
+ // Domoticz and knx only support one temp sensor
+ if ((0 == TasmotaGlobal.tele_period)) {
+ DomoticzFloatSensor(DZ_TEMP, qmp_temperature);
+ }
+#endif // USE_DOMOTICZ
+#ifdef USE_WEBSERVER
+ } else {
+ WSContentSend_Temp("QMP6988", qmp_temperature);
+ WSContentSend_PD(HTTP_SNS_PRESSURE, "QMP6988", pressure, PressureUnit().c_str());
+ if (Settings->altitude != 0) {
+ WSContentSend_PD(HTTP_SNS_SEAPRESSURE, "QMP6988", sea_pressure, PressureUnit().c_str());
+ }
+#endif // USE_WEBSERVER
+ }
+}
+
+/*********************************************************************************************\
+ * Interface
+\*********************************************************************************************/
+
+bool Xsns28(uint32_t function) {
+ if (!I2cEnabled(XI2C_88)) { return false; }
+
+ bool result = false;
+
+ if (FUNC_INIT == function) {
+ Qmp6988Detect();
+ }
+ else if (Qmp6988) {
+ switch (function) {
+ case FUNC_EVERY_SECOND:
+ QMP6988CalcPressureAndTemperature();
+ break;
+ case FUNC_JSON_APPEND:
+ Qmp6988Show(1);
+ break;
+#ifdef USE_WEBSERVER
+ case FUNC_WEB_SENSOR:
+ Qmp6988Show(0);
+ break;
+#endif // USE_WEBSERVER
+ }
+ }
+ return result;
+}
+
+#endif // USE_QMP6988
+#endif // USE_I2C
diff --git a/tasmota/tasmota_xsns_sensor/xsns_53_sml.ino b/tasmota/tasmota_xsns_sensor/xsns_53_sml.ino
index af3120d62..433af4462 100755
--- a/tasmota/tasmota_xsns_sensor/xsns_53_sml.ino
+++ b/tasmota/tasmota_xsns_sensor/xsns_53_sml.ino
@@ -3125,7 +3125,7 @@ void SML_Init(void) {
uint16_t memory = 0;
#ifdef ESP32
- uint32_t uart_index = SOC_UART_NUM - 1;
+ uint32_t uart_index = SOC_UART_HP_NUM - 1;
#endif
sml_globs.sml_send_blocks = 0;
@@ -3156,28 +3156,38 @@ void SML_Init(void) {
// add descriptor +1,1,c,0,10,H20
//toLogEOL(">>",lp);
lp++;
- index = *lp & 7;
- lp += 2;
+ char *lp1;
+#ifdef SML_REPLACE_VARS
+ char dstbuf[SML_SRCBSIZE*2];
+ Replace_Cmd_Vars(lp, 1, dstbuf, sizeof(dstbuf));
+ lp += SML_getlinelen(lp);
+ lp1 = dstbuf;
+#else
+ lp1 = lp;
+ lp += SML_getlinelen(lp);
+#endif
+ index = *lp1 & 7;
+ lp1 += 2;
if (index < 1 || index > sml_globs.meters_used) {
AddLog(LOG_LEVEL_INFO, PSTR("illegal meter number!"));
goto next_line;
}
index--;
mmp = &meter_desc[index];
- if (*lp == '[') {
+ if (*lp1 == '[') {
// sign TCP mode
srcpin = TCP_MODE_FLG;
- lp++;
+ lp1++;
char str[32];
uint8_t cnt;
for (cnt = 0; cnt < sizeof(str) - 1; cnt++) {
- if (!*lp || *lp == '\n' || *lp == ']') {
+ if (!*lp1 || *lp1 == '\n' || *lp1 == ']') {
break;
}
- str[cnt] = *lp++;
+ str[cnt] = *lp1++;
}
str[cnt] = 0;
- lp++;
+ lp1++;
#ifdef USE_SML_TCP
#ifdef USE_SML_TCP_IP_STR
strcpy(mmp->ip_addr, str);
@@ -3186,7 +3196,7 @@ void SML_Init(void) {
#endif
#endif
} else {
- srcpin = strtol(lp, &lp, 10);
+ srcpin = strtol(lp1, &lp1, 10);
if (Gpio_used(abs(srcpin))) {
AddLog(LOG_LEVEL_INFO, PSTR("SML: Error: Duplicate GPIO %d defined. Not usable for RX in meter number %d"), abs(srcpin), index + 1);
dddef_exit:
@@ -3196,53 +3206,53 @@ dddef_exit:
}
}
mmp->srcpin = srcpin;
- if (*lp != ',') goto next_line;
- lp++;
- mmp->type = *lp;
- lp++;
- if (*lp != ',') {
- switch (*lp) {
+ if (*lp1 != ',') goto next_line;
+ lp1++;
+ mmp->type = *lp1;
+ lp1++;
+ if (*lp1 != ',') {
+ switch (*lp1) {
case 'N':
- lp++;
- mmp->sopt = 0x10 | (*lp & 3);
- lp++;
+ lp1++;
+ mmp->sopt = 0x10 | (*lp1 & 3);
+ lp1++;
break;
case 'E':
- lp++;
- mmp->sopt = 0x20 | (*lp & 3);
- lp++;
+ lp1++;
+ mmp->sopt = 0x20 | (*lp1 & 3);
+ lp1++;
break;
case 'O':
- lp++;
- mmp->sopt = 0x30 | (*lp & 3);
- lp++;
+ lp1++;
+ mmp->sopt = 0x30 | (*lp1 & 3);
+ lp1++;
break;
default:
- mmp->sopt = *lp&7;
- lp++;
+ mmp->sopt = *lp1&7;
+ lp1++;
}
} else {
mmp->sopt = 0;
}
- lp++;
- mmp->flag = strtol(lp, &lp, 10);
- if (*lp != ',') goto next_line;
- lp++;
- mmp->params = strtol(lp, &lp, 10);
- if (*lp != ',') goto next_line;
- lp++;
+ lp1++;
+ mmp->flag = strtol(lp1, &lp1, 10);
+ if (*lp1 != ',') goto next_line;
+ lp1++;
+ mmp->params = strtol(lp1, &lp1, 10);
+ if (*lp1 != ',') goto next_line;
+ lp1++;
mmp->prefix[SML_PREFIX_SIZE - 1] = 0;
for (uint32_t cnt = 0; cnt < SML_PREFIX_SIZE; cnt++) {
- if (*lp == SCRIPT_EOL || *lp == ',') {
+ if (*lp1 == SCRIPT_EOL || *lp1 == ',') {
mmp->prefix[cnt] = 0;
break;
}
- mmp->prefix[cnt] = *lp++;
+ mmp->prefix[cnt] = *lp1++;
}
- if (*lp == ',') {
- lp++;
+ if (*lp1 == ',') {
+ lp1++;
// get TRX pin
- mmp->trxpin = strtol(lp, &lp, 10);
+ mmp->trxpin = strtol(lp1, &lp1, 10);
if (mmp->srcpin != TCP_MODE_FLG) {
if (Gpio_used(mmp->trxpin)) {
AddLog(LOG_LEVEL_INFO, PSTR("SML: Error: Duplicate GPIO %d defined. Not usable for TX in meter number %d"), meter_desc[index].trxpin, index + 1);
@@ -3250,19 +3260,19 @@ dddef_exit:
}
}
// optional transmit enable pin
- if (*lp == '(') {
- lp++;
- if (*lp == 'i') {
- lp++;
+ if (*lp1 == '(') {
+ lp1++;
+ if (*lp1 == 'i') {
+ lp1++;
mmp->trx_en.trxenpol = 1;
} else {
mmp->trx_en.trxenpol = 0;
}
- mmp->trx_en.trxenpin = strtol(lp, &lp, 10);
- if (*lp != ')') {
+ mmp->trx_en.trxenpin = strtol(lp1, &lp1, 10);
+ if (*lp1 != ')') {
goto dddef_exit;
}
- lp++;
+ lp1++;
if (Gpio_used(mmp->trx_en.trxenpin)) {
AddLog(LOG_LEVEL_INFO, PSTR("SML: Error: Duplicate GPIO %d defined. Not usable for TX enable in meter number %d"), meter_desc[index].trx_en.trxenpin, index + 1);
goto dddef_exit;
@@ -3273,15 +3283,15 @@ dddef_exit:
} else {
mmp->trx_en.trxen = 0;
}
- if (*lp != ',') goto next_line;
- lp++;
- mmp->tsecs = strtol(lp, &lp, 10);
- if (*lp == ',') {
- lp++;
+ if (*lp1 != ',') goto next_line;
+ lp1++;
+ mmp->tsecs = strtol(lp1, &lp1, 10);
+ if (*lp1 == ',') {
+ lp1++;
// look ahead
uint16_t txlen = 0;
uint16_t tx_entries = 1;
- char *txp = lp;
+ char *txp = lp1;
while (*txp) {
if (*txp == ',') tx_entries++;
if (*txp == SCRIPT_EOL) {
@@ -3303,7 +3313,7 @@ dddef_exit:
memory += txlen + 2;
if (mmp->txmem) {
// now copy send blocks
- char *txp = lp;
+ char *txp = lp1;
uint16_t tind = 0;
for (uint32_t cnt = 0; cnt < txlen; cnt++) {
if (*txp == SCRIPT_EOL) {
@@ -3318,11 +3328,11 @@ dddef_exit:
mmp->index = 0;
mmp->max_index = tx_entries;
sml_globs.sml_send_blocks++;
- lp += txlen;
+ lp1 += txlen;
}
}
}
- if (*lp == SCRIPT_EOL) lp--;
+ if (*lp1 == SCRIPT_EOL) lp1--;
goto next_line;
}
char *lp1;
diff --git a/tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino b/tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino
index d37e4cf0c..31f3a26a7 100644
--- a/tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino
+++ b/tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino
@@ -18,10 +18,6 @@
*/
#ifdef USE_GPS
-#if defined(ESP32) && defined(USE_FLOG)
- #undef USE_FLOG
- #warning FLOG deactivated on ESP32
-#endif //ESP32
/*********************************************************************************************\
--------------------------------------------------------------------------------------------
Version Date Action Description
@@ -156,7 +152,7 @@ const char UBLOX_INIT[] PROGMEM = {
0xB5,0x62,0x06,0x01,0x08,0x00,0x01,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x92, //NAV-TIMEUTC off
#ifdef USE_GPS_VELOCITY
0xB5,0x62,0x06,0x01,0x08,0x00,0x01,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x29, //NAV-VELNED off
-#endif
+#endif // USE_GPS_VELOCITY
// Enable UBX
// 0xB5,0x62,0x06,0x01,0x08,0x00,0x01,0x07,0x00,0x01,0x00,0x00,0x00,0x00,0x18,0xE1, //NAV-PVT on
@@ -165,7 +161,7 @@ const char UBLOX_INIT[] PROGMEM = {
0xB5,0x62,0x06,0x01,0x08,0x00,0x01,0x21,0x00,0x01,0x00,0x00,0x00,0x00,0x32,0x97, //NAV-TIMEUTC on
#ifdef USE_GPS_VELOCITY
0xB5,0x62,0x06,0x01,0x08,0x00,0x01,0x12,0x00,0x01,0x00,0x00,0x00,0x00,0x23,0x2E, //NAV-VELNED on
-#endif
+#endif // USE_GPS_VELOCITY
// Rate - we will not reset it for the moment after restart
// 0xB5,0x62,0x06,0x08,0x06,0x00,0x64,0x00,0x01,0x00,0x01,0x00,0x7A,0x12, //(10Hz)
// 0xB5,0x62,0x06,0x08,0x06,0x00,0xC8,0x00,0x01,0x00,0x01,0x00,0xDE,0x6A, //(5Hz)
@@ -181,19 +177,22 @@ struct UBX_t {
const char NAV_STATUS_HEADER[2] = { 0x01, 0x03 };
const char NAV_TIME_HEADER[2] = { 0x01, 0x21 };
#ifdef USE_GPS_VELOCITY
- const char NAV_VEL_HEADER[2] = { 0x01, 0x12 };
-#endif
+ const char NAV_VEL_HEADER[2] = { 0x01, 0x12 };
+#endif // USE_GPS_VELOCITY
+
+ int32_t lat;
+ int32_t lon;
struct entry_t {
- int32_t lat; //raw sensor value
- int32_t lon; //raw sensor value
- uint32_t time; //local time from system (maybe provided by the sensor)
- };
+ int32_t lat; // raw sensor value
+ int32_t lon; // raw sensor value
+ uint32_t time; // local time from system (maybe provided by the sensor)
+ };
union {
entry_t values;
uint8_t bytes[sizeof(entry_t)];
- } rec_buffer;
+ } rec_buffer;
struct POLL_MSG {
uint8_t cls;
@@ -202,76 +201,78 @@ struct UBX_t {
};
struct NAV_POSLLH {
- uint8_t cls;
- uint8_t id;
- uint16_t len;
- uint32_t iTOW;
- int32_t lon;
- int32_t lat;
- int32_t alt;
- int32_t hMSL;
- uint32_t hAcc;
- uint32_t vAcc;
- };
+ uint8_t cls; // 0x01
+ uint8_t id; // 0x02
+ uint16_t len; // 28 bytes
+ uint32_t iTOW; // ms
+ int32_t lon; // 1e-7, degree
+ int32_t lat; // 1e-7, degree
+ int32_t alt; // mm
+ int32_t hMSL; // mm
+ uint32_t hAcc; // mm
+ uint32_t vAcc; // mm
+ };
struct NAV_STATUS {
- uint8_t cls;
- uint8_t id;
- uint16_t len;
- uint32_t iTOW;
- uint8_t gpsFix;
- uint8_t flags; //bit 0 - gpsfix valid
- uint8_t fixStat;
- uint8_t flags2;
- uint32_t ttff;
- uint32_t msss;
- };
+ uint8_t cls; // 0x01
+ uint8_t id; // 0x03
+ uint16_t len; // 16 bytes
+ uint32_t iTOW; // ms
+ uint8_t gpsFix; //
+ uint8_t flags; // bit 0 - gpsfix valid
+ uint8_t fixStat; //
+ uint8_t flags2; //
+ uint32_t ttff; // ms
+ uint32_t msss; // ms
+ };
struct NAV_TIME_UTC {
- uint8_t cls;
- uint8_t id;
- uint16_t len;
- uint32_t iTOW;
- uint32_t tAcc;
- int32_t nano; // Nanoseconds of second, range -1e9 .. 1e9 (UTC)
- uint16_t year;
- uint8_t month;
- uint8_t day;
- uint8_t hour;
- uint8_t min;
- uint8_t sec;
+ uint8_t cls; // 0x01
+ uint8_t id; // 0x21
+ uint16_t len; // 20 bytes
+ uint32_t iTOW; // ms
+ uint32_t tAcc; // ns
+ int32_t nano; // Nanoseconds of second, range -1e9 .. 1e9 (UTC)
+ uint16_t year; // y
+ uint8_t month; // month
+ uint8_t day; // d
+ uint8_t hour; // h
+ uint8_t min; // min
+ uint8_t sec; // s
struct {
uint8_t UTC:1;
- uint8_t WKN:1; // week number
- uint8_t TOW:1; // time of week
+ uint8_t WKN:1; // week number
+ uint8_t TOW:1; // time of week
uint8_t padding:5;
- } valid;
- };
+ } valid;
+ };
+
#ifdef USE_GPS_VELOCITY
struct NAV_VEL {
- uint8_t cls;
- uint8_t id;
- uint16_t len;
- uint32_t iTOW;
- int32_t velN;
- int32_t velE; //bit 0 - gpsfix valid
- int32_t velD;
- uint32_t speed;
- uint32_t gSpeed;
- int32_t heading;
- uint32_t sAcc;
- uint32_t cAcc;
- };
-#endif
+ uint8_t cls; // 0x01
+ uint8_t id; // 0x12
+ uint16_t len; // 36 bytes
+ uint32_t iTOW; // ms
+ int32_t velN; // cm/s
+ int32_t velE; // cm/s
+ int32_t velD; // cm/s
+ uint32_t speed; // cm/s
+ uint32_t gSpeed; // cm/s
+ int32_t heading; // 1e-5, degree
+ uint32_t sAcc; // cm/s
+ uint32_t cAcc; // 1e-5, degree
+ };
+#endif // USE_GPS_VELOCITY
+
struct CFG_RATE {
- uint8_t cls; //0x06
- uint8_t id; //0x08
- uint16_t len; // 6 bytes
- uint16_t measRate; // in every ms -> 1 Hz = 1000 ms; 10 Hz = 100 ms -> x = 1000 ms / Hz
- uint16_t navRate; // x measurements for 1 navigation event
- uint16_t timeRef; // align to time system: 0= UTC, 1 = GPS, 2 = GLONASS, ...
- char CK[2]; // checksum
- };
+ uint8_t cls; // 0x06
+ uint8_t id; // 0x08
+ uint16_t len; // 6 bytes
+ uint16_t measRate; // in every ms -> 1 Hz = 1000 ms; 10 Hz = 100 ms -> x = 1000 ms / Hz
+ uint16_t navRate; // x measurements for 1 navigation event
+ uint16_t timeRef; // align to time system: 0= UTC, 1 = GPS, 2 = GLONASS, ...
+ char CK[2]; // checksum
+ };
struct {
uint32_t last_iTOW;
@@ -287,7 +288,7 @@ struct UBX_t {
struct {
uint32_t init:1;
uint32_t filter_noise:1;
- uint32_t send_when_new:1; // no teleinterval
+ uint32_t send_when_new:1; // no teleinterval
uint32_t send_UI_only:1;
uint32_t runningNTP:1;
// uint32_t blockedNTP:1;
@@ -302,10 +303,10 @@ struct UBX_t {
NAV_TIME_UTC navTime;
#ifdef USE_GPS_VELOCITY
NAV_VEL navVel;
-#endif
+#endif // USE_GPS_VELOCITY
POLL_MSG pollMsg;
CFG_RATE cfgRate;
- } Message;
+ } Message;
uint32_t utc_time;
@@ -320,13 +321,13 @@ enum UBXMsgType {
MT_NAV_TIME,
#ifdef USE_GPS_VELOCITY
MT_NAV_VEL,
-#endif
+#endif // USE_GPS_VELOCITY
MT_POLL
};
#ifdef USE_FLOG
FLOG *Flog = nullptr;
-#endif //USE_FLOG
+#endif // USE_FLOG
TasmotaSerial *UBXSerial;
NtpServer timeServer(PortUdp);
@@ -400,7 +401,7 @@ void UBXDetect(void)
Flog = new FLOG; // init Flash Log
Flog->init();
}
-#endif // USE_FLOG
+#endif // USE_FLOG
UBX.state.log_interval = 10; // 1 second
UBX.mode.send_UI_only = true; // send UI data ...
@@ -465,7 +466,7 @@ uint32_t UBXprocessGPS()
payloadSize = sizeof(UBX_t::NAV_VEL);
DEBUG_SENSOR_LOG(PSTR("UBX: got NAV_VEL"));
}
-#endif
+#endif // USE_GPS_VELOCITY
else {
// unknown message type, bail
fpos = 0;
@@ -558,7 +559,7 @@ void UBXsendFile(void)
if (!HttpCheckPriviledgedAccess()) { return; }
Flog->startDownload(sizeof(UBX.rec_buffer),UBXsendHeader,UBXsendRecord,UBXsendFooter);
}
-#endif //USE_FLOG
+#endif // USE_FLOG
/********************************************************************************************/
@@ -616,7 +617,7 @@ void UBXSelectMode(uint16_t mode)
}
AddLog(LOG_LEVEL_INFO, PSTR("UBX: stop recording"));
break;
-#endif //USE_FLOG
+#endif // USE_FLOG
case 7:
UBX.mode.send_when_new = 1; // send mqtt on new postion + TELE -> consider to set TELE to a very high value
break;
@@ -634,11 +635,10 @@ void UBXSelectMode(uint16_t mode)
UBXsendCFGLine(11); //NAV-POSLLH on
UBXsendCFGLine(12); //NAV-STATUS on
UBXsendCFGLine(14); //NAV-VELNED on
-#endif
-#ifndef USE_GPS_VELOCITY
+#else
UBXsendCFGLine(10); //NAV-POSLLH on
UBXsendCFGLine(11); //NAV-STATUS on
-#endif
+#endif // USE_GPS_VELOCITY
break;
case 11:
UBX.mode.forceUTCupdate = true;
@@ -691,11 +691,11 @@ bool UBXHandlePOSLLH()
MqttPublishTeleperiodSensor();
}
if (UBX.mode.runningNTP){ // after receiving pos-data at least once -> go to pure NTP-mode
- UBXsendCFGLine(7); //NAV-POSLLH off
- UBXsendCFGLine(8); //NAV-STATUS off
+ UBXsendCFGLine(7); // NAV-POSLLH off
+ UBXsendCFGLine(8); // NAV-STATUS off
#ifdef USE_GPS_VELOCITY
- UBXsendCFGLine(10); //NAV-VELNED off
-#endif
+ UBXsendCFGLine(10); // NAV-VELNED off
+#endif // USE_GPS_VELOCITY
}
//UBX_LAT_LON_THRESHOLD = 20 * UBX.Message.navPosllh.hAcc;
return true; // new position
@@ -717,7 +717,7 @@ void UBXHandleVEL()
}
}
-#endif
+#endif // USE_GPS_VELOCITY
void UBXHandleSTATUS()
{
@@ -813,7 +813,7 @@ void UBXLoop(void)
case MT_NAV_VEL:
UBXHandleVEL();
break;
-#endif
+#endif // USE_GPS_VELOCITY
default:
UBXHandleOther();
break;
@@ -827,7 +827,7 @@ void UBXLoop(void)
counter = 0;
}
}
-#endif // USE_FLOG
+#endif // USE_FLOG
counter++;
}
@@ -836,124 +836,121 @@ void UBXLoop(void)
// normaly in i18n.h
#ifdef USE_WEBSERVER
- // {s} = , {m} = , {e} =
+// {s} = , {m} = , {e} =
#ifdef USE_FLOG
#ifdef DEBUG_TASMOTA_SENSOR
- const char HTTP_SNS_FLOGVER[] PROGMEM = "{s} {m} {e}{s} FLOG with %u sectors: {m}%u bytes{e}"
- "{s} FLOG next sector for REC: {m} %u {e}"
- "{s} %u sector(s) with data at sector: {m} %u {e}";
- const char HTTP_SNS_FLOGREC[] PROGMEM = "{s} RECORDING (bytes in buffer) {m}%u{e}";
+const char HTTP_SNS_FLOGVER[] PROGMEM = "{s}FLOG with %u sectors:{m}%u bytes{e}"
+ "{s}FLOG next sector for REC:{m} %u {e}"
+ "{s}%u sector(s) with data at sector:{m}%u{e}";
+const char HTTP_SNS_FLOGREC[] PROGMEM = "{s}RECORDING (bytes in buffer){m}%u{e}";
#endif // DEBUG_TASMOTA_SENSOR
- const char HTTP_SNS_FLOG[] PROGMEM = "{s} {m} {e}{s} Flash-Log {m} %s{e}";
- const char kFLOG_STATE0[] PROGMEM = "ready";
- const char kFLOG_STATE1[] PROGMEM = "recording";
- const char * kFLOG_STATE[] ={kFLOG_STATE0, kFLOG_STATE1};
+const char HTTP_SNS_FLOG[] PROGMEM = "{s}GPS Logging{m}%s{e}";
+const char kFLOGstate[] PROGMEM = "Ready|Recording";
+const char HTTP_BTN_FLOG_DL[] PROGMEM = "Download GPX-File ";
+#endif // USE_FLOG
- const char HTTP_BTN_FLOG_DL[] PROGMEM = "Download GPX-File ";
+const char HTTP_SNS_NTPSERVER[] PROGMEM = "{s}GPS NTP server{m}Active{e}";
-#endif //USE_FLOG
- const char HTTP_SNS_NTPSERVER[] PROGMEM = "{s} NTP server {m}active{e}";
-
- const char HTTP_SNS_GPS[] PROGMEM = "{s} GPS latitude {m}%s{e}"
- "{s} GPS longitude {m}%s{e}"
- "{s} GPS altitude {m}%s m{e}"
- "{s} GPS hor. Accuracy {m}%s m{e}"
- "{s} GPS vert. Accuracy {m}%s m{e}"
- "{s} GPS sat-fix status {m}%s{e}"
+const char HTTP_SNS_GPS[] PROGMEM = "{s}GPS " D_SAT_FIX "{m}%s{e}"
+ "{s}GPS " D_LATITUDE "{m}%s{e}"
+ "{s}GPS " D_LONGITUDE "{m}%s{e}"
+ "{s}GPS " D_HORIZONTAL_ACCURACY "{m}%3_f " D_UNIT_METER "{e}"
+ "{s}GPS " D_ALTITUDE "{m}%3_f " D_UNIT_METER "{e}"
+ "{s}GPS " D_VERTICAL_ACCURACY "{m}%3_f " D_UNIT_METER "{e}";
#ifdef USE_GPS_VELOCITY
- "{s} GPS Speed {m}%s{e}"
- "{s} GPS Heading {m}%s{e}"
- "{s} GPS Heading Acc {m}%s{e}"
- "{s} GPS Speed Acc {m}%s{e}"
-#endif
- ;
-
- const char kGPSFix0[] PROGMEM = "no fix";
- const char kGPSFix1[] PROGMEM = "dead reckoning only";
- const char kGPSFix2[] PROGMEM = "2D-fix";
- const char kGPSFix3[] PROGMEM = "3D-fix";
- const char kGPSFix4[] PROGMEM = "GPS + dead reckoning combined";
- const char kGPSFix5[] PROGMEM = "Time only fix";
- const char * kGPSFix[] PROGMEM ={kGPSFix0, kGPSFix1, kGPSFix2, kGPSFix3, kGPSFix4, kGPSFix5};
-
-// const char UBX_GOOGLE_MAPS[] ="";
+const char HTTP_SNS_GPS2[] PROGMEM = "{s}GPS " D_SPEED "{m}%2_f " D_UNIT_KILOMETER_PER_HOUR "{e}"
+ "{s}GPS " D_SPEED_ACCURACY "{m}%2_f " D_UNIT_KILOMETER_PER_HOUR "{e}"
+ "{s}GPS " D_HEADING "{m}%1_f{e}"
+ "{s}GPS " D_HEADING_ACCURACY "{m}%1_f{e}";
+#endif // USE_GPS_VELOCITY
+#ifdef USE_GPS_MAPS
+const char UBX_GOOGLE_MAPS[] ="";
+#endif // USE_GPS_MAPS
#endif // USE_WEBSERVER
+const char kGPSFix[] PROGMEM = D_SAT_FIX_NO_FIX "|" D_SAT_FIX_DEAD_RECK "|" D_SAT_FIX_2D "|" D_SAT_FIX_3D "|" D_SAT_FIX_GPS_DEAD "|" D_SAT_FIX_TIME;
+
/********************************************************************************************/
-void UBXShow(bool json)
-{
+void UBXShow(bool json) {
+ char fix[32];
+ GetTextIndexed(fix, sizeof(fix), UBX.state.gpsFix, kGPSFix);
char lat[12];
+ dtostrfd((double)UBX.rec_buffer.values.lat / 10000000.0f, 7, lat); // degrees
char lon[12];
- char alt[12];
- char hAcc[12];
- char vAcc[12];
- #ifdef USE_GPS_VELOCITY
- char spd[12];
- char hdng[12];
- char cAcc[12];
- char sAcc[12];
- #endif
- dtostrfd((double)UBX.rec_buffer.values.lat/10000000.0f,7,lat);
- dtostrfd((double)UBX.rec_buffer.values.lon/10000000.0f,7,lon);
- dtostrfd((double)UBX.state.last_alt/1000.0f,3,alt);
- dtostrfd((double)UBX.state.last_vAcc/1000.0f,3,hAcc);
- dtostrfd((double)UBX.state.last_hAcc/1000.0f,3,vAcc);
- #ifdef USE_GPS_VELOCITY
- dtostrfd((double)UBX.Message.navVel.gSpeed/27.778f,1,spd);
- dtostrfd((double)UBX.Message.navVel.heading/100000.0f,1,hdng);
- dtostrfd((double)UBX.Message.navVel.cAcc/100000.0f,2,cAcc);
- dtostrfd((double)UBX.Message.navVel.sAcc/100000.0f,2,sAcc);
- #endif
+ dtostrfd((double)UBX.rec_buffer.values.lon / 10000000.0f, 7, lon); // degrees
+ float hAcc = (float)UBX.state.last_vAcc / 1000.0f; // mm -> meters
+ float alt = (float)UBX.state.last_alt / 1000.0f; // mm -> meters
+ float vAcc = (float)UBX.state.last_hAcc / 1000.0f; // mm -> meters
+#ifdef USE_GPS_VELOCITY
+ float spd = (float)UBX.Message.navVel.gSpeed / 27.778f; // cm/s -> km/h
+ float sAcc = (float)UBX.Message.navVel.sAcc / 27.778f; // cm/s -> km/h
+ float hdng = (float)UBX.Message.navVel.heading / 100000.0f; // degrees
+ float cAcc = (float)UBX.Message.navVel.cAcc / 100000.0f; // degrees
+ if (cAcc > 360) { cAcc = 0; }
+#endif // USE_GPS_VELOCITY
if (json) {
ResponseAppend_P(PSTR(",\"GPS\":{"));
if (UBX.mode.send_UI_only) {
uint32_t i = UBX.state.log_interval / 10;
- ResponseAppend_P(PSTR("\"fil\":%u,\"int\":%u}"), UBX.mode.filter_noise, i);
+ ResponseAppend_P(PSTR("\"Fil\":%u,\"Int\":%u}"), UBX.mode.filter_noise, i);
} else {
- ResponseAppend_P(PSTR("\"lat\":%s,\"lon\":%s,\"alt\":%s,\"hAcc\":%s,\"vAcc\":%s,\"fix\":\"%s\""), lat, lon, alt, hAcc, vAcc, kGPSFix[UBX.state.gpsFix]);
+ ResponseAppend_P(PSTR("\"Lat\":%s,\"Lon\":%s,\"Alt\":%3_f,\"hAcc\":%3_f,\"vAcc\":%3_f,\"Fix\":\"%s\""),
+ lat, lon, &alt, &hAcc, &vAcc, fix);
#ifdef USE_GPS_VELOCITY
- ResponseAppend_P(PSTR(,\"spd\":%s,\"hdng\":%s,\"cAcc\":%s,\"sAcc\":%s"), spd, hdng, cAcc, sAcc);
-#endif
+ ResponseAppend_P(PSTR(",\"Spd\":%2_f,\"Hdng\":%1_f,\"sAcc\":%2_f,\"cAcc\":%1_f"),
+ &spd, &hdng, &sAcc, &cAcc);
+#endif // USE_GPS_VELOCITY
ResponseAppend_P(PSTR("}"));
}
#ifdef USE_FLOG
- ResponseAppend_P(PSTR(",\"FLOG\":{\"rec\":%u,\"mode\":%u,\"sec\":%u}"), Flog->recording, Flog->mode, Flog->sectors_left);
-#endif //USE_FLOG
+ ResponseAppend_P(PSTR(",\"FLOG\":{\"Rec\":%u,\"Mode\":%u,\"Sec\":%u}"), Flog->recording, Flog->mode, Flog->sectors_left);
+#endif // USE_FLOG
UBX.mode.send_UI_only = false;
#ifdef USE_WEBSERVER
} else {
+ WSContentSend_PD(HTTP_SNS_GPS, fix, lat, lon, &hAcc, &alt, &vAcc);
#ifdef USE_GPS_VELOCITY
- WSContentSend_PD(HTTP_SNS_GPS, lat, lon, alt, hAcc, vAcc, kGPSFix[UBX.state.gpsFix], spd, hdng, cAcc, sAcc);
-#endif
-#ifndef USE_GPS_VELOCITY
- WSContentSend_PD(HTTP_SNS_GPS, lat, lon, alt, hAcc, vAcc, kGPSFix[UBX.state.gpsFix]);
-#endif
- //WSContentSend_P(UBX_GOOGLE_MAPS, lat, lon);
-#ifdef DEBUG_TASMOTA_SENSOR
+ WSContentSend_PD(HTTP_SNS_GPS2, &spd, &sAcc, &hdng, &cAcc);
+#endif // USE_GPS_VELOCITY
+
+#ifdef USE_GPS_MAPS
+ int32_t lat_diff = UBX.rec_buffer.values.lat - UBX.lat;
+ int32_t lon_diff = UBX.rec_buffer.values.lon - UBX.lon;
+ if ((lat_diff > 1000) || (lon_diff > 1000)) {
+ UBX.lat = UBX.rec_buffer.values.lat;
+ UBX.lon = UBX.rec_buffer.values.lon;
+ WSContentSend_P(UBX_GOOGLE_MAPS, lat, lon);
+ }
+#endif // USE_GPS_MAPS
+
#ifdef USE_FLOG
+ WSContentSeparator(0);
+#ifdef DEBUG_TASMOTA_SENSOR
WSContentSend_PD(HTTP_SNS_FLOGVER, Flog->num_sectors, Flog->size, Flog->current_sector, Flog->sectors_left, Flog->sector.header.physical_start_sector);
if (Flog->recording) {
WSContentSend_PD(HTTP_SNS_FLOGREC, Flog->sector.header.buf_pointer - 8);
}
-#endif //USE_FLOG
-#endif // DEBUG_TASMOTA_SENSOR
-#ifdef USE_FLOG
+#endif // DEBUG_TASMOTA_SENSOR
if (Flog->ready) {
- WSContentSend_P(HTTP_SNS_FLOG,kFLOG_STATE[Flog->recording]);
+ char flog_state[32];
+ WSContentSend_P(HTTP_SNS_FLOG, GetTextIndexed(flog_state, sizeof(flog_state), Flog->recording, kFLOGstate));
}
if (!Flog->recording && Flog->found_saved_data) {
WSContentSend_P(HTTP_BTN_FLOG_DL);
}
-#endif //USE_FLOG
+#endif // USE_FLOG
+
if (UBX.mode.runningNTP) {
+ WSContentSeparator(0);
WSContentSend_P(HTTP_SNS_NTPSERVER);
}
+
#endif // USE_WEBSERVER
}
}
@@ -997,7 +994,7 @@ bool Xsns60(uint32_t function)
case FUNC_EVERY_100_MSECOND:
#ifdef USE_FLOG
if (!Flog->running_download)
-#endif //USE_FLOG
+#endif // USE_FLOG
{
UBXLoop();
}
@@ -1006,7 +1003,7 @@ bool Xsns60(uint32_t function)
case FUNC_WEB_ADD_HANDLER:
WebServer_on(PSTR("/UBX"), UBXsendFile);
break;
-#endif //USE_FLOG
+#endif // USE_FLOG
case FUNC_JSON_APPEND:
UBXShow(1);
break;
@@ -1014,7 +1011,7 @@ bool Xsns60(uint32_t function)
case FUNC_WEB_SENSOR:
#ifdef USE_FLOG
if (!Flog->running_download)
-#endif //USE_FLOG
+#endif // USE_FLOG
{
UBXShow(0);
}
diff --git a/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi.ino b/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi.ino
index 924267e55..c894b8796 100644
--- a/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi.ino
+++ b/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi.ino
@@ -69,6 +69,7 @@
void MI32notifyCB(NimBLERemoteCharacteristic* pRemoteCharacteristic, uint8_t* pData, size_t length, bool isNotify);
void MI32AddKey(mi_bindKey_t keyMAC);
+void MI32HandleEveryDevice(NimBLEAdvertisedDevice* advertisedDevice, uint8_t addr[6], int RSSI);
std::vector MIBLEsensors;
RingbufHandle_t BLERingBufferQueue = nullptr;
@@ -128,6 +129,9 @@ class MI32AdvCallbacks: public NimBLEScanCallbacks {
}
if (advertisedDevice->getServiceDataCount() == 0) {
+ if(MI32.option.handleEveryDevice == 1) {
+ MI32HandleEveryDevice(advertisedDevice, addr, RSSI);
+ }
_mutex = false;
return;
}
@@ -148,6 +152,9 @@ class MI32AdvCallbacks: public NimBLEScanCallbacks {
else if(UUID==0x181a) { //ATC and PVVX - deprecated, change FW setting of these devices to BTHome V2
MI32ParseATCPacket((char*)advertisedDevice->getServiceData(0).data(),ServiceDataLength, addr, RSSI);
}
+ else if(MI32.option.handleEveryDevice == 1) {
+ MI32HandleEveryDevice(advertisedDevice, addr, RSSI);
+ }
_mutex = false;
};
};
@@ -451,6 +458,7 @@ uint32_t MIBLEgetSensorSlot(uint8_t * _MAC, uint16_t _type, uint8_t counter){
for(uint32_t i=0; i 31){ // web UI is currently limited to 32
DEBUG_SENSOR_LOG(PSTR("M32: ignore new sensor, because of loaded config"));
return 0xff; //discard the data
}
DEBUG_SENSOR_LOG(PSTR("%s: found new sensor"),D_CMND_MI32);
- mi_sensor_t _newSensor;
+ mi_sensor_t _newSensor{};
memcpy(_newSensor.MAC,_MAC, 6);
_newSensor.PID = _pid;
_newSensor.type = _type;
@@ -478,6 +486,7 @@ uint32_t MIBLEgetSensorSlot(uint8_t * _MAC, uint16_t _type, uint8_t counter){
_newSensor.RSSI=0;
_newSensor.lux = 0x00ffffff;
_newSensor.key = nullptr;
+ _newSensor.lastTime = Rtc.local_time;
switch (_type)
{
case UNKNOWN_MI: case BTHOME:
@@ -548,16 +557,7 @@ uint32_t MIBLEgetSensorSlot(uint8_t * _MAC, uint16_t _type, uint8_t counter){
*/
void MI32triggerTele(void){
MI32.mode.triggeredTele = 1;
- MqttPublishTeleperiodSensor();
-}
-
-/**
- * @brief Is called after every finding of new BLE sensor
- *
- */
-void MI32StatusInfo() {
- MI32.mode.shallShowStatusInfo = 0;
- Response_P(PSTR("{\"M32\":{\"found\":%u}}"), MIBLEsensors.size());
+ MqttPublishSensor();
XdrvRulesProcess(0);
}
@@ -584,6 +584,13 @@ void MI32addHistory(uint8_t history[24], float value, const uint32_t type){
history[_hour] = (((value/5.0f) + 1) + 0b10000000); //lux
// AddLog(LOG_LEVEL_DEBUG,PSTR("M32: history lux: %u in hour:%u"),history[_hour], _hour);
break;
+ case 3: //BLE device sighting
+ uint16_t sightings = history[_hour] & 0b01111111;
+ if(sightings<20){
+ history[_hour] = (sightings | 0b10000000) + 1;
+ // AddLog(LOG_LEVEL_DEBUG,PSTR("M32: history sighting: %u in hour:%u"),history[_hour], _hour);
+ }
+ break;
#ifdef USE_MI_ESP32_ENERGY
case 100: // energy
if(value == 0.0f) value = 1.0f;
@@ -620,7 +627,7 @@ void Mi32invalidateOldHistory(){
return;
}
uint32_t _nextHour = (_hour>22)?0:_hour+1;
- for(auto _sensor:MIBLEsensors){
+ for(auto &_sensor:MIBLEsensors){
if(_sensor.feature.temp == 1){
bitClear(_sensor.temp_history[_nextHour],7);
}
@@ -630,6 +637,9 @@ void Mi32invalidateOldHistory(){
if(_sensor.feature.lux == 1){
bitClear(_sensor.lux_history[_nextHour],7);
}
+ if(_sensor.feature.payload == 1){
+ bitClear(_sensor.temp_history[_nextHour],7);
+ }
}
_lastInvalidatedHour = _hour;
}
@@ -646,9 +656,9 @@ void MI32PreInit(void) {
//test section for options
MI32.option.allwaysAggregate = 1;
MI32.option.noSummary = 0;
- MI32.option.minimalSummary = 0;
MI32.option.directBridgeMode = 0;
MI32.option.ignoreBogusBattery = 1; // from advertisements
+ MI32.option.handleEveryDevice = 0; // scan for every BLE device with a public address
MI32loadCfg();
if(MIBLEsensors.size()>0){
@@ -878,7 +888,11 @@ extern "C" {
}
static char _name[12];
if( MIBLEsensors[slot].type == UNKNOWN_MI){
- snprintf_P(_name,8,PSTR("MI_%04X"),MIBLEsensors[slot].PID);
+ if(MIBLEsensors[slot].PID == 0){
+ snprintf_P(_name,8,PSTR("BLE_%02u"),slot);
+ } else {
+ snprintf_P(_name,8,PSTR("MI_%04X"),MIBLEsensors[slot].PID);
+ }
}
else{
GetTextIndexed(_name, sizeof(_name), MIBLEsensors[slot].type-1, kMI32DeviceType);
@@ -994,7 +1008,7 @@ void MI32saveConfig(){
else{
_name_feat[0] = 0;
}
- uint32_t _inc = snprintf_P(_filebuf+_pos,200,PSTR("{\"MAC\":\"%s\",\"PID\":\"%04x\",\"key\":\"%s\"%s},"),_MAC,kMI32DeviceID[_sensor.type - 1],_key,_name_feat);
+ uint32_t _inc = snprintf_P(_filebuf+_pos,200,PSTR("{\"MAC\":\"%s\",\"PID\":\"%04x\",\"key\":\"%s\"%s},"),_MAC,_sensor.PID,_key,_name_feat);
_pos += _inc;
}
_filebuf[_pos-1] = ']';
@@ -1654,7 +1668,7 @@ if(_beacon->frame.isEncrypted){
}
else{
uint32_t _offset = (_beacon->frame.includesCapability)?0:1;
- uint32_t _payloadSize = (_beacon->frame.includesCapability)?_beacon->payload.size:_beacon->payload.ten;
+ size_t _payloadSize = *(uint8_t*)(&_beacon->payload.size - _offset);
if(_beacon->frame.includesMAC && _beacon->frame.includesObj) {
// AddLog(LOG_LEVEL_DEBUG,PSTR("M32: offset %u, size: %u"),_offset,_payloadSize);
memcpy((uint8_t*)&_payload,(uint8_t*)(&_beacon->payload)-_offset, _payloadSize + 3);
@@ -1662,15 +1676,17 @@ else{
}
}
if(decryptRet!=0){
- AddLog(LOG_LEVEL_DEBUG,PSTR("M32: Decryption failed with error: %d"),decryptRet);
+ AddLog(LOG_LEVEL_DEBUG,PSTR("M32: Decryption failed with error: %d for %u"),decryptRet, _slot);
if (decryptRet == -1) MIBLEsensors[_slot].status.hasWrongKey = 1;
return;
}
// AddLog(LOG_LEVEL_DEBUG,PSTR("%s at slot %u with payload type: %02x"), MI32getDeviceName(_slot),_slot,_payload.type);
- MIBLEsensors[_slot].lastTime = millis();
switch(_payload.type){
- case 0x01:
+ case 0x0002:
+ AddLog(LOG_LEVEL_DEBUG_MORE,PSTR("M32: obj id to pair: %02x"),_payload.objID); // pretty pointless for Tasmota
+ break;
+ case 0x1001:
MIBLEsensors[_slot].feature.Btn = 1;
if(_payload.Btn.type == 4){ //dimmer knob rotation
MIBLEsensors[_slot].eventType.knob = 1;
@@ -1703,7 +1719,7 @@ if(decryptRet!=0){
MI32.mode.shallTriggerTele = 1;
// AddLog(LOG_LEVEL_DEBUG,PSTR("Mode 1: U16: %u Button"), MIBLEsensors[_slot].Btn );
break;
- case 0x04:
+ case 0x1004:
MIBLEsensors[_slot].feature.temp = 1;
_tempFloat=(float)(_payload.temp)/10.0f;
if(_tempFloat<60){
@@ -1716,7 +1732,7 @@ if(decryptRet!=0){
#endif //USE_MI_EXT_GUI
// AddLog(LOG_LEVEL_DEBUG,PSTR("Mode 4: U16: %u Temp"), _payload.temp );
break;
- case 0x06:
+ case 0x1006:
MIBLEsensors[_slot].feature.hum = 1;
_tempFloat=(float)(_payload.hum)/10.0f;
if(_tempFloat<101){
@@ -1729,7 +1745,7 @@ if(decryptRet!=0){
#endif //USE_MI_EXT_GUI
// AddLog(LOG_LEVEL_DEBUG,PSTR("Mode 6: U16: %u Hum"), _payload.hum);
break;
- case 0x07:
+ case 0x1007:
MIBLEsensors[_slot].feature.lux = 1;
MIBLEsensors[_slot].lux=_payload.lux & 0x00ffffff;
if(MIBLEsensors[_slot].type==MJYD2S){
@@ -1741,21 +1757,21 @@ if(decryptRet!=0){
#endif //USE_MI_EXT_GUI
// AddLog(LOG_LEVEL_DEBUG,PSTR("Mode 7: U24: %u Lux"), _payload.lux & 0x00ffffff);
break;
- case 0x08:
+ case 0x1008:
MIBLEsensors[_slot].feature.moist = 1;
MIBLEsensors[_slot].moisture=_payload.moist;
MIBLEsensors[_slot].eventType.moist = 1;
DEBUG_SENSOR_LOG(PSTR("Mode 8: moisture updated"));
// AddLog(LOG_LEVEL_DEBUG,PSTR("Mode 8: U8: %u Moisture"), _payload.moist);
break;
- case 0x09:
+ case 0x1009:
MIBLEsensors[_slot].feature.fert = 1;
MIBLEsensors[_slot].fertility=_payload.fert;
MIBLEsensors[_slot].eventType.fert = 1;
DEBUG_SENSOR_LOG(PSTR("Mode 9: fertility updated"));
// AddLog(LOG_LEVEL_DEBUG,PSTR("Mode 9: U16: %u Fertility"), _payload.fert);
break;
- case 0x0a:
+ case 0x100a: case 0x4803:
MIBLEsensors[_slot].feature.bat = 1;
if(MI32.option.ignoreBogusBattery){
if(MIBLEsensors[_slot].type==LYWSD03MMC || MIBLEsensors[_slot].type==MHOC401){
@@ -1769,7 +1785,7 @@ if(decryptRet!=0){
}
// AddLog(LOG_LEVEL_DEBUG,PSTR("Mode a: U8: %u %%"), _payload.bat);
break;
- case 0x0d:
+ case 0x100d:
_tempFloat=(float)(_payload.HT.temp)/10.0f;
if(_tempFloat<60){
MIBLEsensors[_slot].temp = _tempFloat;
@@ -1784,8 +1800,8 @@ if(decryptRet!=0){
// AddLog(LOG_LEVEL_DEBUG,PSTR("Mode d: U16: %x Temp U16: %x Hum"), _payload.HT.temp, _payload.HT.hum);
break;
- case 0x0f:
- if (_payload.ten!=0) break;
+ case 0x000f:
+ // if (_payload.ten!=0) break;
MIBLEsensors[_slot].feature.motion = 1;
MIBLEsensors[_slot].feature.NMT = 1; //only driver based
MIBLEsensors[_slot].eventType.motion = 1;
@@ -1799,20 +1815,20 @@ if(decryptRet!=0){
#endif //USE_MI_EXT_GUI
// AddLog(LOG_LEVEL_DEBUG,PSTR("motion: primary"),MIBLEsensors[_slot].lux );
break;
- case 0x14:
+ case 0x1014:
MIBLEsensors[_slot].feature.leak = 1;
MIBLEsensors[_slot].leak = _payload.leak;
MIBLEsensors[_slot].eventType.leak = 1;
if(_payload.leak>0) MI32.mode.shallTriggerTele = 1;
break;
- case 0x17:
+ case 0x1017:
MIBLEsensors[_slot].feature.NMT = 1;
MIBLEsensors[_slot].NMT = _payload.NMT;
MIBLEsensors[_slot].eventType.NMT = 1;
MI32.mode.shallTriggerTele = 1;
// AddLog(LOG_LEVEL_DEBUG,PSTR("Mode 17: NMT: %u seconds"), _payload.NMT);
break;
- case 0x19:
+ case 0x1019:
MIBLEsensors[_slot].feature.door = 1;
MIBLEsensors[_slot].door = _payload.door;
MIBLEsensors[_slot].eventType.door = 1;
@@ -1820,7 +1836,27 @@ if(decryptRet!=0){
MI32.mode.shallTriggerTele = 1;
// AddLog(LOG_LEVEL_DEBUG,PSTR("Mode 19: %u"), _payload.door);
break;
-
+ case 0x4e0c:
+ MIBLEsensors[_slot].feature.Btn = 1;
+ MIBLEsensors[_slot].Btn = _payload.size; // a guess, makes sense for the XMWXKG01LM
+ MIBLEsensors[_slot].BtnType = 0;
+ MIBLEsensors[_slot].eventType.Btn = 1;
+ MI32.mode.shallTriggerTele = 1;
+ break;
+ case 0x4e0d:
+ MIBLEsensors[_slot].feature.Btn = 1;
+ MIBLEsensors[_slot].Btn = _payload.size;
+ MIBLEsensors[_slot].BtnType = 1;
+ MIBLEsensors[_slot].eventType.Btn = 1;
+ MI32.mode.shallTriggerTele = 1;
+ break;
+ case 0x4e0e:
+ MIBLEsensors[_slot].feature.Btn = 1;
+ MIBLEsensors[_slot].Btn = _payload.size;
+ MIBLEsensors[_slot].BtnType = 2;
+ MIBLEsensors[_slot].eventType.Btn = 1;
+ MI32.mode.shallTriggerTele = 1;
+ break;
default:
if (MIBLEsensors[_slot].type==NLIGHT){
MIBLEsensors[_slot].eventType.motion = 1; //motion
@@ -1831,57 +1867,60 @@ if(decryptRet!=0){
else{
//unknown payload
AddLogBuffer(LOG_LEVEL_DEBUG,(uint8_t*)_buf,_bufSize);
+ AddLogBuffer(LOG_LEVEL_DEBUG,(uint8_t*)&_payload,_payload.size + 2);
}
break;
}
if(MIBLEsensors[_slot].eventType.raw == 0) return;
MIBLEsensors[_slot].shallSendMQTT = 1;
- if(MI32.option.directBridgeMode) MI32.mode.shallTriggerTele = 1;
+ if(MI32.option.directBridgeMode == 1) MI32.mode.shallTriggerTele = 1;
}
void MI32parseBTHomePacket(char * _buf, uint32_t length, uint8_t addr[6], int RSSI, const char* optionalName){
const uint32_t _slot = MIBLEgetSensorSlot(addr, 0xb770, 0); // fake ID, constant fake counter
if(_slot==0xff) return;
+ auto &_sensor = MIBLEsensors[_slot];
if (optionalName[0] != '\0'){
- AddLog(LOG_LEVEL_DEBUG,PSTR("%s at slot %u"), optionalName,_slot);
+ if(_sensor.name == nullptr){
+ _sensor.name = new char[strlen(optionalName) + 1];
+ strcpy(_sensor.name, optionalName);
+ }
}
- const auto _sensor = &MIBLEsensors[_slot];
- _sensor->RSSI = RSSI;
- _sensor->lastTime = millis();
+ _sensor.RSSI = RSSI;
BTHome_info_t info;
info.byte_value = _buf[0];
- _sensor->feature.needsKey = info.encrypted;
+ _sensor.feature.needsKey = info.encrypted;
uint32_t idx = 1;
while(idx < length - 1){
switch(_buf[idx]){
case 0x00:
- if(_buf[idx+1] == _sensor->lastCnt){
+ if(_buf[idx+1] == _sensor.lastCnt){
return; // known packet
}
- _sensor->lastCnt = _buf[idx+1];
+ _sensor.lastCnt = _buf[idx+1];
idx += 2;
break;
case 0x01:
- _sensor->bat = _buf[idx+1];
- _sensor->eventType.bat = 1;
- _sensor->feature.bat = 1;
+ _sensor.bat = _buf[idx+1];
+ _sensor.eventType.bat = 1;
+ _sensor.feature.bat = 1;
idx += 2;
break;
case 0x02:
- _sensor->temp = (int16_t)(_buf[idx+1]|_buf[idx+2] << 8)/100.0f;
- _sensor->eventType.temp = 1;
- _sensor->feature.temp = 1;
- MI32addHistory(_sensor->temp_history, _sensor->temp, 0);
+ _sensor.temp = (int16_t)(_buf[idx+1]|_buf[idx+2] << 8)/100.0f;
+ _sensor.eventType.temp = 1;
+ _sensor.feature.temp = 1;
+ MI32addHistory(_sensor.temp_history, _sensor.temp, 0);
idx += 3;
break;
case 0x03:
- _sensor->hum = (uint16_t)(_buf[idx+1]|_buf[idx+2] << 8)/100.0f;
- _sensor->eventType.hum = 1;
- _sensor->feature.hum = 1;
- MI32addHistory(_sensor->hum_history, _sensor->hum, 1);
+ _sensor.hum = (uint16_t)(_buf[idx+1]|_buf[idx+2] << 8)/100.0f;
+ _sensor.eventType.hum = 1;
+ _sensor.feature.hum = 1;
+ MI32addHistory(_sensor.hum_history, _sensor.hum, 1);
idx += 3;
break;
case 0x0b:
@@ -1906,8 +1945,8 @@ void MI32parseBTHomePacket(char * _buf, uint32_t length, uint8_t addr[6], int RS
#ifdef USE_MI_EXT_GUI
bitSet(MI32.widgetSlot,_slot);
#endif //USE_MI_EXT_GUI
- _sensor->shallSendMQTT = 1;
- if(MI32.option.directBridgeMode) MI32.mode.shallTriggerTele = 1;
+ _sensor.shallSendMQTT = 1;
+ if(MI32.option.directBridgeMode == 1) MI32.mode.shallTriggerTele = 1;
}
void MI32ParseATCPacket(char * _buf, uint32_t length, uint8_t addr[6], int RSSI){
@@ -1923,7 +1962,7 @@ void MI32ParseATCPacket(char * _buf, uint32_t length, uint8_t addr[6], int RSSI)
// AddLog(LOG_LEVEL_DEBUG,PSTR("%s at slot %u"), MI32getDeviceName(_slot),_slot);
MIBLEsensors[_slot].RSSI=RSSI;
- MIBLEsensors[_slot].lastTime = millis();
+ // MIBLEsensors[_slot].lastTime = Rtc.local_time;
if(isATC){
MIBLEsensors[_slot].temp = (float)(int16_t(__builtin_bswap16(_packet->A.temp)))/10.0f;
MIBLEsensors[_slot].hum = (float)_packet->A.hum;
@@ -1943,7 +1982,7 @@ void MI32ParseATCPacket(char * _buf, uint32_t length, uint8_t addr[6], int RSSI)
MI32addHistory(MIBLEsensors[_slot].hum_history, (float)MIBLEsensors[_slot].hum, 1);
#endif //USE_MI_EXT_GUI
MIBLEsensors[_slot].shallSendMQTT = 1;
- if(MI32.option.directBridgeMode) MI32.mode.shallTriggerTele = 1;
+ if(MI32.option.directBridgeMode == 1) MI32.mode.shallTriggerTele = 1;
}
void MI32parseCGD1Packet(char * _buf, uint32_t length, uint8_t addr[6], int RSSI){ // no MiBeacon
@@ -1953,7 +1992,7 @@ void MI32parseCGD1Packet(char * _buf, uint32_t length, uint8_t addr[6], int RSSI
if(_slot==0xff) return;
// AddLog(LOG_LEVEL_DEBUG,PSTR("%s at slot %u"), MI32getDeviceName(_slot),_slot);
MIBLEsensors[_slot].RSSI=RSSI;
- MIBLEsensors[_slot].lastTime = millis();
+ // MIBLEsensors[_slot].lastTime = Rtc.local_time;
cg_packet_t _packet;
memcpy((char*)&_packet,_buf,sizeof(_packet));
switch (_packet.mode){
@@ -1991,7 +2030,7 @@ void MI32parseCGD1Packet(char * _buf, uint32_t length, uint8_t addr[6], int RSSI
}
if(MIBLEsensors[_slot].eventType.raw == 0) return;
MIBLEsensors[_slot].shallSendMQTT = 1;
- if(MI32.option.directBridgeMode) MI32.mode.shallTriggerTele = 1;
+ if(MI32.option.directBridgeMode == 1) MI32.mode.shallTriggerTele = 1;
#ifdef USE_MI_EXT_GUI
bitSet(MI32.widgetSlot,_slot);
#endif //USE_MI_EXT_GUI
@@ -2003,15 +2042,47 @@ void MI32ParseResponse(char *buf, uint16_t bufsize, uint8_t addr[6], int RSSI) {
}
uint16_t _type= buf[3]*256 + buf[2];
// AddLog(LOG_LEVEL_INFO, PSTR("%02x %02x %02x %02x"),(uint8_t)buf[0], (uint8_t)buf[1],(uint8_t)buf[2],(uint8_t)buf[3]);
- uint8_t _addr[6];
- memcpy(_addr,addr,6);
- uint16_t _slot = MIBLEgetSensorSlot(_addr, _type, buf[4]);
+ uint16_t _slot = MIBLEgetSensorSlot(addr, _type, buf[4]);
if(_slot!=0xff) {
MIBLEsensors[_slot].RSSI=RSSI;
MI32parseMiBeacon(buf,_slot,bufsize);
}
}
+void MI32HandleEveryDevice(NimBLEAdvertisedDevice* advertisedDevice, uint8_t addr[6], int RSSI) {
+ if(advertisedDevice->getAddressType() != BLE_ADDR_PUBLIC) {
+ return;
+ }
+ uint16_t _slot = MIBLEgetSensorSlot(addr, 0, 0);
+ if(_slot==0xff) {
+ return;
+ }
+ auto &_sensor = MIBLEsensors[_slot];
+ if (advertisedDevice->haveName()){
+ if(_sensor.name == nullptr){
+ std::string name = advertisedDevice->getName();
+ _sensor.name = new char[name.length() + 1];
+ strcpy(_sensor.name, name.c_str());
+ }
+ }
+ if(_sensor.payload == nullptr) {
+ _sensor.payload = new uint8_t[64]();
+ }
+ if(_sensor.payload != nullptr) {
+ memcpy(_sensor.payload, advertisedDevice->getPayload(), advertisedDevice->getPayloadLength());
+ _sensor.payload_len = advertisedDevice->getPayloadLength();
+ bitSet(MI32.widgetSlot,_slot);
+ MI32addHistory(_sensor.temp_history, 0.0f, 3); // reuse temp_history as sighting history
+ _sensor.RSSI=RSSI;
+ _sensor.feature.payload = 1;
+ _sensor.eventType.payload = 1;
+ if(MI32.option.directBridgeMode == 1){
+ MI32.mode.shallTriggerTele = 1;
+ _sensor.shallSendMQTT = 1;
+ }
+ }
+}
+
/**
* Called automatically every 50 milliseconds or can be triggered from Berry with BLE.loop() - useful from fast_loop
*/
@@ -2106,7 +2177,7 @@ void MI32BLELoop()
*/
void MI32Every50mSecond(){
- if(MI32.mode.shallTriggerTele){
+ if(MI32.mode.shallTriggerTele == 1){
MI32.mode.shallTriggerTele = 0;
MI32triggerTele();
}
@@ -2128,7 +2199,7 @@ void MI32EverySecond(bool restart){
// should not be needed with a stable BLE stack
if(MI32.role == 1 && MI32.mode.runningScan == 0){
- AddLog(LOG_LEVEL_INFO,PSTR("BLE: probably controller error ... restart scan"));
+ AddLog(LOG_LEVEL_INFO,PSTR("BLE: restart scan"));
MI32StartTask(MI32_TASK_SCAN);
}
}
@@ -2226,6 +2297,14 @@ void CmndMi32Option(void){
onOff = MI32.option.activeScan;
}
break;
+ case 5:
+ if(XdrvMailbox.data_len>0){
+ MI32.option.handleEveryDevice = onOff;
+ }
+ else{
+ onOff = MI32.option.handleEveryDevice;
+ }
+ break;
#ifdef CONFIG_BT_NIMBLE_NVS_PERSIST
case 99: // TODO: should be moved to some reset command, i.e. "reset 6"
NimBLEDevice::deleteAllBonds();
@@ -2302,6 +2381,7 @@ void MI32sendEnergyWidget(){
#endif //USE_MI_ESP32_ENERGY
#ifdef USE_WEBCAM
void MI32sendCamWidget(){
+#ifndef USE_BERRY_CAM
if (Wc.CamServer && Wc.up) {
WSContentSend_P(PSTR("
"),
(uint32_t)WiFi.localIP());
}
+#endif //USE_BERRY_CAM
}
#endif //USE_WEBCAM
@@ -2349,7 +2430,7 @@ void MI32sendWidget(uint32_t slot){
if (_sensor.bat == 0) _bat[9] = 0;
WSContentSend_P(HTTP_MI32_WIDGET,slot+1,_opacity,_MAC,_sensor.RSSI,_bat,_key,MI32getDeviceName(slot));
- if(_sensor.feature.temp && _sensor.feature.hum){
+ if(_sensor.feature.temp == 1 && _sensor.feature.hum == 1){
if(!isnan(_sensor.temp)){
char _polyline[176];
MI32createPolyline(_polyline,_sensor.temp_history);
@@ -2368,7 +2449,7 @@ void MI32sendWidget(uint32_t slot){
WSContentSend_P(PSTR("" D_JSON_DEWPOINT ": %.1f °C"),CalcTempHumToDew(_sensor.temp,_sensor.hum));
}
}
- else if(_sensor.feature.temp){
+ else if(_sensor.feature.temp == 1){
if(!isnan(_sensor.temp)){
char _polyline[176];
MI32createPolyline(_polyline,_sensor.temp_history);
@@ -2377,7 +2458,7 @@ void MI32sendWidget(uint32_t slot){
WSContentSend_P(PSTR(""));
}
}
- if(_sensor.feature.lux){
+ if(_sensor.feature.lux == 1){
if(_sensor.lux!=0x00ffffff){
char _polyline[176];
MI32createPolyline(_polyline,_sensor.lux_history);
@@ -2386,7 +2467,7 @@ void MI32sendWidget(uint32_t slot){
WSContentSend_P(PSTR(""));
}
}
- if(_sensor.feature.knob){
+ if(_sensor.feature.knob == 1){
if(_sensor.pressed == 0) {
WSContentSend_P(PSTR("Dimmer Steps: %d
"),_sensor.dimmer);
}
@@ -2395,16 +2476,16 @@ void MI32sendWidget(uint32_t slot){
}
WSContentSend_P(PSTR("Hold: %u
"),_sensor.longpress);
}
- if(_sensor.feature.Btn){
+ if(_sensor.feature.Btn == 1){
char _message[16];
GetTextIndexed(_message, sizeof(_message), _sensor.BtnType, kMI32_ButtonMsg);
if(_sensor.Btn<12) WSContentSend_P(PSTR("Button%u: %s
"),_sensor.Btn,_message);
}
- if(_sensor.feature.motion){
+ if(_sensor.feature.motion == 1){
WSContentSend_P(PSTR("Events: %u
"),_sensor.events);
WSContentSend_P(PSTR("No motion for > %u seconds
"),_sensor.NMT);
}
- if(_sensor.feature.door){
+ if(_sensor.feature.door == 1){
if(_sensor.door!=255){
if(_sensor.door==1){
WSContentSend_P(PSTR("Contact open
"));
@@ -2415,7 +2496,7 @@ void MI32sendWidget(uint32_t slot){
WSContentSend_P(PSTR("Events: %u
"),_sensor.events);
}
}
- if(_sensor.feature.leak){
+ if(_sensor.feature.leak == 1){
if(_sensor.leak==1){
WSContentSend_P(PSTR("Leak !!!
"));
}
@@ -2423,6 +2504,18 @@ void MI32sendWidget(uint32_t slot){
WSContentSend_P(PSTR("No leak
"));
}
}
+ if(_sensor.feature.payload == 1){
+ if(_sensor.payload != nullptr){
+ char _payload[128];
+ char _polyline[176];
+ ToHex_P((const unsigned char*)_sensor.payload,_sensor.payload_len,_payload, (_sensor.payload_len * 2) + 1);
+ MI32createPolyline(_polyline,_sensor.temp_history);
+ WSContentSend_P(PSTR("Payload:"));
+ WSContentSend_P(HTTP_MI32_GRAPH,_polyline,60,240,176,_polyline,4);
+ WSContentSend_P(PSTR("
%s"),_payload);
+ }
+ }
+ WSContentSend_P(PSTR("Timestamp: %s
"),GetDT(_sensor.lastTime).c_str());
WSContentSend_P(PSTR(" "));
}
@@ -2435,6 +2528,7 @@ void MI32InitGUI(void){
WSContentSend_P(HTTP_MI32_STYLE_SVG,1,185,124,124,185,124,124);
WSContentSend_P(HTTP_MI32_STYLE_SVG,2,151,190,216,151,190,216);
WSContentSend_P(HTTP_MI32_STYLE_SVG,3,242,240,176,242,240,176);
+ WSContentSend_P(HTTP_MI32_STYLE_SVG,4,60,240,176,60,240,176);
char _role[16];
GetTextIndexed(_role, sizeof(_role), MI32.role, HTTP_MI32_PARENT_BLE_ROLE);
@@ -2508,10 +2602,10 @@ void MI32Show(bool json)
MI32getDeviceName(i));
}
- if((MI32.mode.triggeredTele == 1 && MI32.option.minimalSummary == 0)||MI32.mode.triggeredTele == 1){
+ if(MI32.mode.triggeredTele == 1){
bool tempHumSended = false;
- if(MIBLEsensors[i].feature.tempHum){
- if(MIBLEsensors[i].eventType.tempHum || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1){
+ if(MIBLEsensors[i].feature.tempHum == 1){
+ if(MIBLEsensors[i].eventType.tempHum == 1 || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1){
if (!isnan(MIBLEsensors[i].hum) && !isnan(MIBLEsensors[i].temp)) {
MI32ShowContinuation(&commaflg);
ResponseAppendTHD(MIBLEsensors[i].temp, MIBLEsensors[i].hum);
@@ -2519,8 +2613,8 @@ void MI32Show(bool json)
}
}
}
- if(MIBLEsensors[i].feature.temp && !tempHumSended){
- if(MIBLEsensors[i].eventType.temp || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1) {
+ if(MIBLEsensors[i].feature.temp == 1 && !tempHumSended){
+ if(MIBLEsensors[i].eventType.temp == 1 || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1) {
if (!isnan(MIBLEsensors[i].temp)) {
MI32ShowContinuation(&commaflg);
ResponseAppend_P(PSTR("\"" D_JSON_TEMPERATURE "\":%*_f"),
@@ -2528,8 +2622,8 @@ void MI32Show(bool json)
}
}
}
- if(MIBLEsensors[i].feature.hum && !tempHumSended){
- if(MIBLEsensors[i].eventType.hum || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1) {
+ if(MIBLEsensors[i].feature.hum == 1 && !tempHumSended){
+ if(MIBLEsensors[i].eventType.hum == 1 || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1) {
if (!isnan(MIBLEsensors[i].hum)) {
char hum[FLOATSZ];
dtostrfd(MIBLEsensors[i].hum, Settings->flag2.humidity_resolution, hum);
@@ -2538,16 +2632,16 @@ void MI32Show(bool json)
}
}
}
- if (MIBLEsensors[i].feature.lux){
- if(MIBLEsensors[i].eventType.lux || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1){
+ if (MIBLEsensors[i].feature.lux == 1){
+ if(MIBLEsensors[i].eventType.lux == 1 || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1){
if ((MIBLEsensors[i].lux != 0x0ffffff)) { // this is the error code -> no lux
MI32ShowContinuation(&commaflg);
ResponseAppend_P(PSTR("\"" D_JSON_ILLUMINANCE "\":%u"), MIBLEsensors[i].lux);
}
}
}
- if (MIBLEsensors[i].feature.moist){
- if(MIBLEsensors[i].eventType.moist || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1){
+ if (MIBLEsensors[i].feature.moist == 1){
+ if(MIBLEsensors[i].eventType.moist == 1 || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1){
if ((MIBLEsensors[i].moisture != 0xff)) {
MI32ShowContinuation(&commaflg);
ResponseAppend_P(PSTR("\"" D_JSON_MOISTURE "\":%u"), MIBLEsensors[i].moisture);
@@ -2562,14 +2656,14 @@ void MI32Show(bool json)
}
}
}
- if (MIBLEsensors[i].feature.Btn){
- if(MIBLEsensors[i].eventType.Btn){
+ if (MIBLEsensors[i].feature.Btn == 1){
+ if(MIBLEsensors[i].eventType.Btn == 1){
MI32ShowContinuation(&commaflg);
ResponseAppend_P(PSTR("\"Button%u\":%u"),MIBLEsensors[i].Btn,MIBLEsensors[i].BtnType + 1); //internal type is Xiaomi/Homekit 0,1,2 -> Tasmota 1,2,3
}
}
- if (MIBLEsensors[i].feature.knob){
- if(MIBLEsensors[i].eventType.knob){
+ if (MIBLEsensors[i].feature.knob == 1){
+ if(MIBLEsensors[i].eventType.knob == 1){
MI32ShowContinuation(&commaflg);
char _pressed[3] = {'_','P',0};
if (MIBLEsensors[i].pressed == 0){
@@ -2577,15 +2671,15 @@ void MI32Show(bool json)
}
ResponseAppend_P(PSTR("\"Dimmer%s\":%d"),_pressed, MIBLEsensors[i].dimmer);
}
- if(MIBLEsensors[i].eventType.longpress){
+ if(MIBLEsensors[i].eventType.longpress == 1){
MI32ShowContinuation(&commaflg);
ResponseAppend_P(PSTR("\"Hold\":%d"), MIBLEsensors[i].longpress);
}
}
} // minimal summary
- if (MIBLEsensors[i].feature.motion){
- if(MIBLEsensors[i].eventType.motion || MI32.mode.triggeredTele == 0){
- if(MI32.mode.triggeredTele) {
+ if (MIBLEsensors[i].feature.motion == 1){
+ if(MIBLEsensors[i].eventType.motion == 1 || MI32.mode.triggeredTele == 0){
+ if(MI32.mode.triggeredTele == 1) {
MI32ShowContinuation(&commaflg);
ResponseAppend_P(PSTR("\"Motion\":1")); // only real-time
}
@@ -2598,9 +2692,9 @@ void MI32Show(bool json)
}
}
- if (MIBLEsensors[i].feature.door){
- if(MIBLEsensors[i].eventType.door || MI32.mode.triggeredTele == 0){
- if(MI32.mode.triggeredTele) {
+ if (MIBLEsensors[i].feature.door == 1){
+ if(MIBLEsensors[i].eventType.door == 1 || MI32.mode.triggeredTele == 0){
+ if(MI32.mode.triggeredTele == 1) {
MI32ShowContinuation(&commaflg);
ResponseAppend_P(PSTR("\"Door\":%u"),MIBLEsensors[i].door);
}
@@ -2616,22 +2710,35 @@ void MI32Show(bool json)
}
}
- if (MIBLEsensors[i].feature.NMT || MI32.mode.triggeredTele == 0){
- if(MIBLEsensors[i].eventType.NMT){
+ if (MIBLEsensors[i].feature.NMT == 1|| MI32.mode.triggeredTele == 0){
+ if(MIBLEsensors[i].eventType.NMT == 1){
MI32ShowContinuation(&commaflg);
ResponseAppend_P(PSTR("\"NMT\":%u"), MIBLEsensors[i].NMT);
}
}
- if (MIBLEsensors[i].feature.bat){
- if(MIBLEsensors[i].eventType.bat || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1){
+ if (MIBLEsensors[i].feature.bat == 1){
+ if(MIBLEsensors[i].eventType.bat == 1 || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1){
if ((MIBLEsensors[i].bat != 0x00)) {
MI32ShowContinuation(&commaflg);
ResponseAppend_P(PSTR("\"Battery\":%u"), MIBLEsensors[i].bat);
}
}
}
+ if (MIBLEsensors[i].feature.payload == 1){
+ if(MIBLEsensors[i].eventType.payload == 1 || MI32.mode.triggeredTele == 0 || MI32.option.allwaysAggregate == 1){
+ if ((MIBLEsensors[i].payload != nullptr)) {
+ MI32ShowContinuation(&commaflg);
+ char _payload[128];
+ ToHex_P((const unsigned char*)MIBLEsensors[i].payload,MIBLEsensors[i].payload_len,_payload, (MIBLEsensors[i].payload_len * 2) + 1);
+ ResponseAppend_P(PSTR("\"Payload\":\"%s\""),_payload);
+ }
+ }
+ }
MI32ShowContinuation(&commaflg);
ResponseAppend_P(PSTR("\"RSSI\":%d,"), MIBLEsensors[i].RSSI);
+ if(MI32.mode.triggeredTele == 0){
+ ResponseAppend_P(PSTR("\"Time\":%d,"), MIBLEsensors[i].lastTime);
+ }
ResponseAppend_P(PSTR("\"MAC\":\"%02X%02X%02X%02X%02X%02X\""),MIBLEsensors[i].MAC[0],MIBLEsensors[i].MAC[1],MIBLEsensors[i].MAC[2],MIBLEsensors[i].MAC[3],MIBLEsensors[i].MAC[4],MIBLEsensors[i].MAC[5]);
ResponseJsonEnd();
@@ -2679,11 +2786,11 @@ void MI32Show(bool json)
WSContentSend_THD(_sensorName, MIBLEsensors[i].temp, MIBLEsensors[i].hum);
}
}
- if (MIBLEsensors[i].feature.needsKey) {
+ if (MIBLEsensors[i].feature.needsKey == 1) {
if(MIBLEsensors[i].key == nullptr){
WSContentSend_PD(PSTR("{s}No known Key!!{m} can not decrypt messages{e}"));
}
- else if(MIBLEsensors[i].status.hasWrongKey){
+ else if(MIBLEsensors[i].status.hasWrongKey == 1){
WSContentSend_PD(PSTR("{s}Wrong Key!!{m} can not decrypt messages{e}"));
}
}
diff --git a/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi_ble.ino b/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi_ble.ino
index 73a1acaba..5cb582616 100644
--- a/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi_ble.ino
+++ b/tasmota/tasmota_xsns_sensor/xsns_62_esp32_mi_ble.ino
@@ -78,7 +78,7 @@
#ifdef USE_BLE_ESP32
#ifdef ESP32 // ESP32 family only. Use define USE_HM10 for ESP8266 support
-#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32S3
+#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32S3
#ifdef USE_MI_ESP32
diff --git a/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino b/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino
index 88e1d00f3..93e252b9a 100644
--- a/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino
+++ b/tasmota/tasmota_xsns_sensor/xsns_83_neopool.ino
@@ -18,8 +18,9 @@
*/
#ifdef USE_NEOPOOL
-/*********************************************************************************************\
- * Sugar Valley NeoPool electronic pool control and water treatment system, also known as brand
+/****************************************************************************\
+ * Sugar Valley NeoPool electronic pool control and water treatment system,
+ * also known as brand:
* Hidrolife (yellow case)
* Aquascenic (blue case)
* Oxilife (green case)
@@ -31,24 +32,36 @@
* Bayrol
* Hay
*
- * Sugar Valley RS485 connector inside (DISPLAY/WIFI/EXTERN) pins (from top to bottom):
+ * Sugar Valley RS485 connector inside (DISPLAY/WIFI/EXTERN) pins
+ * (from top to bottom):
* ___
- * 1 |* |- +12V (internal power supply)
- * 2 |* |- (not connected)
+ * 1 |* |- +12V (from internal power supply)
+ * 2 |* |- NC (not connected)
* 3 |* |- Modbus A+
* 4 |* |- Modbus B-
* 5 |*__|- Modbus GND
*
* Parameter: 19200 Baud / 1 Stopbit / Parity None
- * Protocol: Modbus RTU
- * NeoPool controller is Modbus server (formerly known as slave)
- * Tasmota is Modbus client (formerly known as master)
+ * Protocol: Modbus RTU
*
- * Connector DISPLAY is useless as long as the internal display is also connected to the
- * second DISPLAY connector. Use WIFI or EXTERN.
+ * Plug connector:
+ * The NeoPool device is a Modbus server (formerly known as a slave),
+ * Tasmota is a Modbus client (formerly known as a master).
+ * Only one Modbus client (master) can be connected to the Modbus connector
+ * of the same name. It is not possible to operate several clients on
+ * connectors with the same name.
*
- * Hardware serial will be selected if GPIO1 = [NeoPool Rx] and GPIO3 = [NeoPool Tx]
-\*********************************************************************************************/
+ * The differently labelled Modbus connectors are completely independent
+ * physical Modbus interfaces. Data traffic on one of the connector is
+ * invisible on the other connectors. One exception is the DISPLAY connector,
+ * which is present twice and is normally occupied by the built-in LCD.
+ * Since only one Modbus client can operate one Modbus server at a time, the
+ * DISPLAY connector is useless for our purposes as long as the internal LCD
+ * is connected to one of the two DISPLAY connectors at the same time.
+ *
+ * Conclusion:
+ * Use the WIFI or EXTERNAL connector only.
+\****************************************************************************/
#define XSNS_83 83
@@ -61,29 +74,60 @@
#endif
+#ifndef NEOPOOL_READ_REGISTER
#define NEOPOOL_READ_REGISTER 0x04 // Function code used to read register
+#endif
+#ifndef NEOPOOL_WRITE_REGISTER
#define NEOPOOL_WRITE_REGISTER 0x10 // Function code used to write register
+#endif
+#ifndef NEOPOOL_READ_TIMEOUT
#define NEOPOOL_READ_TIMEOUT 25 // read data timeout in ms
+#endif
+#ifndef NEOPOOL_CACHE_INVALID_TIME
#define NEOPOOL_CACHE_INVALID_TIME 30 // data cache invalidation time in s
+#endif
// Pool LED RGB lights with different programs, the individual programs can be selected
// by switching them off and on again for a defined time when the LED is switched on.
// Default timings for LED light program step sequence (NPLight 3)
-#define NEOPOOL_LIGHT_PRG_WAIT 30 // delay before start prg light if light was off (in ms)
-#define NEOPOOL_LIGHT_PRG_DELAY 15 // default next light prg delay (in ms)
-#define NEOPOOL_LIGHT_PRG_DELAY_MIN 5 // next light prg delay min (in ms)
-#define NEOPOOL_LIGHT_PRG_DELAY_MAX 100 // next light prg delay max (in ms)
+#ifndef NEOPOOL_LIGHT_PRG_WAIT
+#define NEOPOOL_LIGHT_PRG_WAIT 30 // delay before start prg light if light was off (in 1/10 s)
+#endif
+#ifndef NEOPOOL_LIGHT_PRG_DELAY
+#define NEOPOOL_LIGHT_PRG_DELAY 15 // default next light prg delay (in 1/10 s)
+#endif
+#ifndef NEOPOOL_LIGHT_PRG_DELAY_MIN
+#define NEOPOOL_LIGHT_PRG_DELAY_MIN 5 // next light prg delay min (in 1/10 s)
+#endif
+#ifndef NEOPOOL_LIGHT_PRG_DELAY_MAX
+#define NEOPOOL_LIGHT_PRG_DELAY_MAX 100 // next light prg delay max (in 1/10 s)
+#endif
+#ifdef ESP32 // Defaults for ESP32 only
+ #ifndef NEOPOOL_RANGE_CHECKS
+ #define NEOPOOL_RANGE_CHECKS // Compile with value range checks
+ #endif
+#endif
+#ifdef NEOPOOL_RANGE_CHECKS
+ #ifndef NEOPOOL_CONNSTAT
+ #define NEOPOOL_CONNSTAT // Compile with connection statistics
+ #endif
+#endif
-/*********************************************************************************************\
- * Sugar Valley Modbus Register (addresses marked with * are queried with each polling cycle)
- * (see https://downloads.vodnici.net/uploads/wpforo/attachments/69/171-Modbus-registers.pdf)
-\*********************************************************************************************/
+/****************************************************************************\
+ * Sugar Valley Modbus Register
+ * (addresses marked with * are queried with each polling cycle)
+ * see https://downloads.vodnici.net/uploads/wpforo/attachments/69/171-Modbus-registers.pdf
+ *
+ * Register desribed with ‘!’ means the register is officially undocumented,
+ * the function was determined by reverse-engineering
+\****************************************************************************/
enum NeoPoolRegister {
- // addr Unit Description - "!" indicates register is not officially documented
+ // addr Unit Description
// ------ ------ ------------------------------------------------------------
- // MODBUS page (0x00xx) - Manages general configuration of the box. This page is reserved for internal purposes
+ // MODBUS page (0x00xx)
+ // Manages general configuration of the box. This page is reserved for internal purposes
MBF_POWER_MODULE_VERSION = 0x0002, // 0x0002 ! Power module version (MSB=Major, LSB=Minor)
MBF_POWER_MODULE_NODEID = 0x0004, // 0x0004 ! Power module Node ID (6 register 0x0004 - 0x0009)
MBF_POWER_MODULE_REGISTER = 0x000C, // 0x000C ! Writing an address in this register causes the power module register address to be read out into MBF_POWER_MODULE_DATA, see MBF_POWER_MODULE_REG_*
@@ -93,7 +137,8 @@ enum NeoPoolRegister {
MBF_VOLT_5 = 0x006A, // 0x006A* ! 5V line in mV / 0,62069
MBF_AMP_4_20_MICRO = 0x0072, // 0x0072* ! 2-40mA line in µA * 10 (1=0,01mA)
- // MEASURE page (0x01xx) - Contains the different measurement information including hydrolysis current, pH level, redox level, etc.
+ // MEASURE page (0x01xx)
+ // Contains the different measurement information including hydrolysis current, pH level, redox level, etc.
MBF_ION_CURRENT = 0x0100, // 0x0100* Ionization level measured
MBF_HIDRO_CURRENT, // 0x0101* Hydrolysis intensity level
MBF_MEASURE_PH, // 0x0102* ph pH level measured in 1/100 (700 = 7.00)
@@ -112,7 +157,8 @@ enum NeoPoolRegister {
MBF_NOTIFICATION, // 0x0110* mask Bit field that informs whether a property page has changed since the last time it was queried. (see MBMSK_NOTIF_*). This register makes it possible to refresh the content of the registers maintained by a modbus master in an optimized way, without the need to reread all registers periodically, but only those on a page that has been changed.
MBF_HIDRO_VOLTAGE, // 0x0111 The voltage applied to the hydrolysis cell. This register, together with that of MBF_HIDRO_CURRENT allows extrapolation of water salinity.
- // GLOBAL page (0x02xx) - Contains global information, such as the amount of time that each power unit has been working.
+ // GLOBAL page (0x02xx)
+ // Contains global information, such as the amount of time that each power unit has been working.
MBF_CELL_RUNTIME_LOW = 0x0206, // 0x0206* ! Cell runtime (32 bit value - low word)
MBF_CELL_RUNTIME_HIGH, // 0x0207* ! Cell runtime (32 bit value - high word)
MBF_CELL_RUNTIME_PART_LOW, // 0x0208* ! Cell part runtime (32 bit value - low word)
@@ -133,7 +179,8 @@ enum NeoPoolRegister {
MBF_SAVE_TO_EEPROM = 0x02F0, // 0x02F0 A write operation to this register immediately starts a EEPROM storage operation. During the EEPROM storage procedure, the system may be unresponsive to MODBUS requests. The operation will last always less than 1 second.
MBF_EXEC = 0x02F5, // 0x02F5 ! A write operation to this register immediately take over settings of the previous written data
- // FACTORY page (0x03xx) - Contains factory data such as calibration parameters for the different power units.
+ // FACTORY page (0x03xx)
+ // Contains factory data such as calibration parameters for the different power units.
MBF_PAR_VERSION = 0x0300, // 0x0300* Software version of the PowerBox
MBF_PAR_MODEL, // 0x0301* mask System model options
MBF_PAR_SERNUM, // 0x0302* Serial number of the PowerBox
@@ -147,7 +194,9 @@ enum NeoPoolRegister {
MBF_PAR_HIDRO_MAX_PWM_STEP_UP, // 0x0324 This register sets the PWM ramp up of the hydrolysis in pulses per duty cycle. This register makes it possible to adjust the rate at which the power delivered to the cell increases, allowing a gradual rise in power so that the operation of the switching source of the equipment is not saturated. Default 150
MBF_PAR_HIDRO_MAX_PWM_STEP_DOWN, // 0x0325 This register sets the PWM down ramp of the hydrolysis in pulses per duty cycle. This register allows adjusting the rate at which the power delivered to the cell decreases, allowing a gradual drop in power so that the switched source of the equipment is not disconnected due to lack of consumption. This gradual fall must be in accordance with the type of cell used, since said cell stores charge once the current stimulus has ceased. Default 20
- // INSTALLER page (0x04xx) - Contains a set of configuration registers related to the equipment installation, such as the relays used for each function, the amount of time that each pump must operate, etc.
+ // INSTALLER page (0x04xx)
+ // Contains a set of configuration registers related to the equipment installation,#
+ // such as the relays used for each function, the amount of time that each pump must operate, etc.
MBF_PAR_ION_POL0 = 0x0400, // 0x0400 Time in minutes that the equipment must remain working in positive polarization in the copper-silver ionization.
MBF_PAR_ION_POL1, // 0x0401 Time in minutes that the equipment must remain working in negative polarization in the copper-silver ionization.
MBF_PAR_ION_POL2, // 0x0402 Time in minutes that the equipment must remain working in dead time (without delivering power) in the copper-silver ionization.
@@ -223,7 +272,9 @@ enum NeoPoolRegister {
MBF_PAR_FILTVALVE_REMAINING, // 0x04EF Time remaining for the current cleaning action in seconds. If this register is 0, it means that there is no cleaning function running. When a cleanup function is started, the contents of the MBF_PAR_FILTVALVE_INTERVAL register are copied to this register, then decremented once per second. The display uses this log to track the progress of the cleaning function.
MBF_ACTION_COPY_TO_RTC, // 0x04F0 A write (any value) forces the writing of the RTC time registers MBF_PAR_TIME_LOW (0x0408) and MBF_PAR_TIME_HIGH (0x0409) into the RTC internal microcontroller clock management registers.
- // USER page (0x05xx) - Contains user configuration registers, such as the production level for the ionization and the hydrolysis, or the set points for the pH, redox, or chlorine regulation loops.
+ // USER page (0x05xx)
+ // Contains user configuration registers, such as the production level
+ // for the ionization and the hydrolysis, or the set points for the pH, redox, or chlorine regulation loops.
MBF_PAR_ION = 0x0500, // 0x0500* Ionization target production level. The value adjusted in this register must not exceed the value set in the MBF_PAR_ION_NOM factory register.
MBF_PAR_ION_PR, // 0x0501* Amount of time in minutes that the ionization must be activated each time that the filtration starts.
MBF_PAR_HIDRO, // 0x0502* Hydrolisis target production level. When the hydrolysis production is to be set in percent values, this value will contain the percent of production. If the hydrolysis module is set to work in g/h production, this module will contain the desired amount of production in g/h units. The value adjusted in this register must not exceed the value set in the MBF_PAR_HIDRO_NOM factory register.
@@ -235,7 +286,8 @@ enum NeoPoolRegister {
MBF_PAR_FILTRATION_SPEED_FUNC = 0x0513, // 0x0513 ! filtration speed function control
MBF_PAR_FUNCTION_DEPENDENCY = 0x051B, // 0x051B mask Specification for the dependency of different functions, such as heating, from external events like FL1 (see MBMSK_FCTDEP_HEATING/MBMSK_DEPENDENCY_*)
- // MISC page (0x06xx) - Contains the configuration parameters for the screen controllers (language, colours, sound, etc).
+ // MISC page (0x06xx)
+ // Contains the configuration parameters for the screen controllers (language, colours, sound, etc).
MBF_PAR_UICFG_MACHINE = 0x0600, // 0x0600* Machine type (see MBV_PAR_MACH_* and kNeoPoolMachineNames[])
MBF_PAR_UICFG_LANGUAGE, // 0x0601* Selected language (see MBV_PAR_LANG_*)
MBF_PAR_UICFG_BACKLIGHT, // 0x0602* Display backlight function (see MBV_PAR_BACKLIGHT_*)
@@ -256,7 +308,7 @@ enum NeoPoolRegister {
enum NeoPoolConstAndBitMask {
// MBF_PH_STATUS
MBMSK_PH_STATUS_ALARM = 0x000F, // PH alarm. The possible alarm values are depending on the regulation model:
- // Valid alarm values for pH regulation with acid and base:
+ // Valid alarm values for pH regulation with acid and base:
MBV_PH_ACID_BASE_ALARM0 = 0, // no alarm
MBV_PH_ACID_BASE_ALARM1 = 1, // pH too high; the pH value is 0.8 points higher than the setpoint (PH1 on acid systems, PH2 on base systems, PH1 on acid+base systems)
MBV_PH_ACID_BASE_ALARM2 = 2, // pH too low: the pH value is 0.8 points lower than the set point value set in (PH1 on acid systems, PH2 on base systems, PH2 on acid+base systems)
@@ -632,15 +684,15 @@ const uint16_t NeoPoolRegCheck[] PROGMEM = {
// MBF_CELL_RUNTIME_POL_CHANGES_HIGH,
// measured values delayed (set bit 15 to indicate often value changes)
- MBF_ION_CURRENT | 0x8000,
- MBF_MEASURE_CL | 0x8000,
- MBF_MEASURE_CONDUCTIVITY | 0x8000,
- MBF_MEASURE_PH | 0x8000,
- MBF_MEASURE_RX | 0x8000,
MBF_MEASURE_TEMPERATURE | 0x8000,
- MBF_HIDRO_CURRENT | 0x8000,
// undelayed measured values
+ MBF_MEASURE_CL,
+ MBF_MEASURE_CONDUCTIVITY,
+ MBF_MEASURE_PH,
+ MBF_MEASURE_RX,
+ MBF_ION_CURRENT,
+ MBF_HIDRO_CURRENT,
MBF_HIDRO_STATUS,
MBF_PH_STATUS,
MBF_RELAY_STATE,
@@ -691,7 +743,36 @@ enum NeoPoolModbusCode {
NEOPOOL_MODBUS_ERROR_DEADLOCK
};
+#ifdef NEOPOOL_RANGE_CHECKS
+#define NEOPOOL_UNDEF_UINT16 0xFFFF
+ typedef struct {
+ uint16_t addr; // Modbus register addr
+ uint16_t min; // min valid value (or UNDEFined)
+ uint16_t max; // max valid value (or UNDEFined)
+ uint16_t prev; // previous read value
+ } TNeoPoolRangeCheck;
+ TNeoPoolRangeCheck NeoPoolRangeCheck[] = {
+ {MBF_ION_CURRENT, 0, 100, NEOPOOL_UNDEF_UINT16}, // Ionization level measured
+ {MBF_HIDRO_CURRENT, 0, NEOPOOL_UNDEF_UINT16, NEOPOOL_UNDEF_UINT16}, // Hydrolysis intensity level
+ {MBF_MEASURE_PH, 0, 1400, NEOPOOL_UNDEF_UINT16}, // pH level measured
+ {MBF_MEASURE_RX, 0, 1000, NEOPOOL_UNDEF_UINT16}, // Redox level measured
+ {MBF_MEASURE_CL, 0, 1000, NEOPOOL_UNDEF_UINT16}, // Chlorine level measured
+ {MBF_MEASURE_CONDUCTIVITY, 0, 100, NEOPOOL_UNDEF_UINT16}, // Conductivity level measured
+ {MBF_MEASURE_TEMPERATURE, 0, 6500, NEOPOOL_UNDEF_UINT16} // Temperature sensor measured
+ };
+#endif
+#ifdef NEOPOOL_CONNSTAT
+ #define NEOPOOL_TASMOTAMODBUS_ERROR_NUM_MAX 15 // 0-14 - see TasmotaModbus.h class TasmotaModbus highest error #
+ // counting modbus and data error
+ struct {
+ uint32_t time; // time where counting started
+ uint32_t mb_requests; // request count
+ // result count:
+ uint32_t mb_results[NEOPOOL_TASMOTAMODBUS_ERROR_NUM_MAX + 1];
+ uint32_t value_out_of_range; // value out of range count
+ } NeoPoolStats;
+#endif
// NPResult possible values
enum NeoPoolResult {
@@ -708,18 +789,30 @@ enum NeoPoolResult {
#define NEOPOOL_DEFAULT_RESULT NEOPOOL_RESULT_HEX
#define NEOPOOL_DEFAULT_NPTELEPERIOD 0
-// NeoPool value resolutions
-typedef struct {
- uint16_t ph : 2;
- uint16_t cl : 2;
- uint16_t ion : 2;
-} NeoPoolResMBitfield;
+typedef union {
+ uint16_t data; // Allow bit manipulation
+ struct {
+ uint16_t ph : 2; // bit 0,1 - pH value resolution
+ uint16_t cl : 2; // bit 2,3 - CL value resolution
+ uint16_t ion : 2; // bit 4,5 - ION value resolution
+ uint16_t range_check : 1; // bit 6 - enable data validation and repair
+ uint16_t conn_stat : 1; // bit 7 - enable connection statistic
+ uint16_t spare08 : 1; // bit 8
+ uint16_t spare09 : 1; // bit 9
+ uint16_t spare10 : 1; // bit 10
+ uint16_t spare11 : 1; // bit 11
+ uint16_t spare12 : 1; // bit 12
+ uint16_t spare13 : 1; // bit 13
+ uint16_t spare14 : 1; // bit 14
+ uint16_t spare15 : 1; // bit 15
+ };
+} NeoPoolBitfield;;
// Global structure containing sensor saved variables
struct {
uint32_t crc32;
uint16_t version;
- NeoPoolResMBitfield resolution;
+ NeoPoolBitfield flags;
uint8_t result;
uint16_t npteleperiod;
} NeoPoolSettings;
@@ -780,6 +873,48 @@ struct {
#define D_NEOPOOL_JSON_BIT "Bit"
#define D_NEOPOOL_JSON_NODE_ID "NodeID"
+#ifdef NEOPOOL_CONNSTAT
+#define D_NEOPOOL_JSON_CONNSTAT "Connection"
+#define D_NEOPOOL_JSON_CONNSTAT_MB_REQUESTS "MBRequests"
+#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_0 "MBNoError"
+#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_1 "MBIllegalFunc"
+#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_2 "MBIllegalDataAddr"
+#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_3 "MBIllegalDataValue"
+#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_4 "MBSlaveError"
+#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_5 "MBAck"
+#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_6 "MBSlaveBusy"
+#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_7 "MBNotEnoughData"
+#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_8 "MBMemParityErr"
+#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_9 "MBCRCErr"
+#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_10 "MBGWPath"
+#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_11 "MBGWTarget"
+#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_12 "MBRegErr"
+#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_13 "MBRegData"
+#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_14 "MBTooManyReg"
+#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_15 "MBUnknownErr"
+#define D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS "MBNoResponse"
+#define D_NEOPOOL_JSON_CONNSTAT_DATA_OOR "DataOutOfRange"
+
+const char kNeoPoolMBResults[] PROGMEM =
+ D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_0 "|"
+ D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_1 "|"
+ D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_2 "|"
+ D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_3 "|"
+ D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_4 "|"
+ D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_5 "|"
+ D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_6 "|"
+ D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_7 "|"
+ D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_8 "|"
+ D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_9 "|"
+ D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_10 "|"
+ D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_11 "|"
+ D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_12 "|"
+ D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_13 "|"
+ D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_14 "|"
+ D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS_15
+ ;
+#endif
+
const char kNeoPoolMachineNames[] PROGMEM =
D_NEOPOOL_MACH_NONE "|"
D_NEOPOOL_MACH_HIDROLIFE "|"
@@ -875,20 +1010,23 @@ const char HTTP_SNS_NEOPOOL_STATUS_INACTIVE[] PROGMEM = "filter:opacity(0.15)";
const char HTTP_SNS_NEOPOOL_STATUS_ACTIVE[] PROGMEM = "filter:invert(1)";
-/*********************************************************************************************\
+/****************************************************************************\
* Commands
*
* NPFiltration {
{speed}}
* get/set manual filtration (state = 0..2, speed = 1..3)
- * get filtration state if is omitted, otherwise set new state
+ * get filtration state if is omitted,
+ * otherwise set new state
* 0 - switch filtration pump off
* 1 - switch filtration pump on
* 2 - toggle filtration pump
- * for non-standard filtration types additional speed control is possible
+ * additional speed control is possible for non-standardised
+ * filter types
*
* NPFiltrationMode {}
* get/set filtration mode (mode = 0..4|13)
- * get mode if is omitted, otherwise set new mode according:
+ * get mode if is omitted,
+ * otherwise set new mode according:
* 0 - Manual
* 1 - Auto
* 2 - Heating
@@ -899,35 +1037,40 @@ const char HTTP_SNS_NEOPOOL_STATUS_ACTIVE[] PROGMEM = "filter:invert(1)";
* NPFiltrationSpeed {}
* (only available for non-standard filtration types)
* get/set manual filtration speed (speed = 1..3)
- * get filtration speed if is omitted, otherwise set new speed
+ * get filtration speed if is omitted,
+ * otherwise set new speed:
* 1 - low
* 2 - mid
* 3 - high
*
* NPBoost {}
* get/set hydrolysis/electrolysis boost mode (mode = 0..2)
- * get mode if is omitted, otherwise set new mode according:
+ * get mode if is omitted,
+ * otherwise set new mode according:
* 0|OFF - boost off
* 1|ON - boost on
* 2|REDOX - boost on with redox control
*
* NPTime {}
* get/set system time
- * get current time if is omitted, otherwise set time according:
+ * get current time if is omitted,
+ * otherwise set time according:
* 0 - sync with Tasmota local time
* 1 - sync with Tasmota utc time
* any other value of will set time as epoch
*
* NPLight { {delay}}
- * get/set light (state = 0|1|2|3|4)
+ * get/set light (state = 0|1|2|3|4, delay = 5..100)
* get light state if is omitted, otherwise set new state
* 0 - switch light manual off
* 1 - switch light manual on
* 2 - toggle light
* 3 - switch light to auto mode
- * 4 - switch to next program (for RGB-LED lights) (delay = 5..100)
- * prg change by switch light of for delay time then switch on
- * delay in ms from 0.5 - 10 sec
+ * 4 - switch to next program for RGB-LED lights using in
+ * 1/10 sec (5 = 0.5 sec, 100 = 10 sec)
+ * Change LED program by switching light relay OFF for
+ * time, then switch light relay ON. If the light was
+ * originally OFF, it is switched ON first.
*
* NPpHMin {}
* (only available if pH module is installed)
@@ -953,13 +1096,17 @@ const char HTTP_SNS_NEOPOOL_STATUS_ACTIVE[] PROGMEM = "filter:invert(1)";
* (only available if hydrolysis/electrolysis control is present)
* get/set hydrolysis/electrolysis level
* get current level if is omitted, otherwise set:
- * 0..100 in % for NeoPool systems configured to %
- * 0.. in g/h for NeoPool systems configured for g/h ( depends by M_PAR_HIDRO_NOM register value)
- * can specified in % on all NeoPool systems by appending the % sign to the value
+ * 0..100 in % for NeoPool systems configured to %
+ * 0.. in g/h for NeoPool systems configured for g/h
+ * ( depends by M_PAR_HIDRO_NOM register value)
+ * can specified in % on all NeoPool systems by appending
+ * the % sign to the value
*
* NPIonization {}
* (only available if ionization control is present)
- * get/set ionization target production level (level = 0..x, the upper limit of the range may vary depending on the MBF_PAR_ION_NOM register)
+ * get/set ionization target production level
+ * (level = 0..x, the upper limit of the range may vary depending
+ * on the MBF_PAR_ION_NOM register)
* get current level if is omitted, otherwise set
*
* NPChlorine {}
@@ -971,10 +1118,16 @@ const char HTTP_SNS_NEOPOOL_STATUS_ACTIVE[] PROGMEM = "filter:invert(1)";
* Show information about system controls
*
* NPTelePeriod {time}
- * enables/disables auto telemetry SENSOR message when NeoPool values change (time = 0 or 5..3600):
- * 0 disable this function off (default), SENSOR message are only reported depending on TelePeriod setting
- * 5..3600 set the minimum of seconds between two SENSOR messages for NeoPool measured (sensor) values (Status changes for relays and settings trigger the SENSOR messages immediately, regardless of this time)
- * If is set higher than TelePeriod, only status changes for relays and settings will trigger SENSOR message.
+ * enables/disables auto telemetry SENSOR message when NeoPool
+ * values change (time = 0 or 5..3600):
+ * 0 disable this function off (default), SENSOR messages are
+ * only reported depending on TelePeriod setting
+ * 5..3600 set the minimum of seconds between two SENSOR messages
+ * for NeoPool measured (sensor) values
+ * (status changes for relays and settings trigger the
+ * SENSOR messages immediately, regardless of this time)
+ * If is set higher than TelePeriod, only status changes for
+ * relays and settings will trigger SENSOR message.
*
* NPSave
* write data permanently into EEPROM
@@ -986,13 +1139,15 @@ const char HTTP_SNS_NEOPOOL_STATUS_ACTIVE[] PROGMEM = "filter:invert(1)";
* clears possible errors (like pump exceeded time etc.)
*
* NPResult {}
- * get/set addr/data result format read/write commands (format = 0|1):
+ * get/set addr/data result format read/write commands
+ * (format = 0|1)
* get output format if is omitted, otherwise
* 0 - output as decimal numbers
* 1 - output as hexadecimal strings (default)
*
* NPOnError {}
- * get/set auto-repeat Modbus read/write commands on error (repeat = 0..10):
+ * get/set auto-repeat Modbus read/write commands on error
+ * (repeat = 0..10)
* get auto-repeat setting if is omitted, otherwise
* 0 - disable auto-repeat on read/write error
* 1..10 - repeat commands n times until ok
@@ -1002,6 +1157,14 @@ const char HTTP_SNS_NEOPOOL_STATUS_ACTIVE[] PROGMEM = "filter:invert(1)";
* NPIonRes {}
* get/set number of digits in results for PH, CL and ION values
*
+ * NPSetOption0 {0|1}
+ * (only available on ESP32 or if NEOPOOL_RANGE_CHECKS is defined)
+ * Disable(0)/enable(1) sensor data min/max validation and
+ * correction
+ *
+ * NPSetOption1 {0|1}
+ * (only available on ESP32 or if NEOPOOL_CONNSTAT is defined)
+ * Disable(0)/enable(1) modbus connection statistics
*
* NPRead {}
* NPReadL {}
@@ -1011,15 +1174,26 @@ const char HTTP_SNS_NEOPOOL_STATUS_ACTIVE[] PROGMEM = "filter:invert(1)";
*
* NPWrite {...}
* NPWriteL {...}
- * NPWrite write 16-bit register (data = 0..65535), max 10 times
- * NPWriteL write 32-bit register (data = 0..4294967295), max 10 times
+ * NPWrite write 16-bit register (data = 0..65535)
+ * NPWriteL write 32-bit register (data = 0..4294967295)
+ * The max. number of parameters is 10
*
* NPBit {}
* NPBitL {}
* read/write register bit (bit = 0..15, data = 0|1)
* read if is omitted, otherwise set to new
*
- * Examples:
+ *
+ * Note:
+ * The setttings changed by commands NPPHRes, NPCLRes, NPIonRes,
+ * NPSetOption0 and NPSetOption1 are permanently stored only if firmware was
+ * compiled with USE_UFILESYS (default enabled on ESP32 and disabled on
+ * ESP82xx). Without USE_UFILESYS (default on ESP82xx), you can alternatively
+ * use a rule to set your defaults during system start, e. g.:
+ * Rule1 ON System#Init DO Backlog NPPHRes 1;NPCLRes 1;NPIonRes 1;NPSetOption0 1;NPSetOption1 0
+ *
+ *
+ * Command examples:
*
* Get/Set filtration mode
* NPFiltrationMode
@@ -1041,12 +1215,14 @@ const char HTTP_SNS_NEOPOOL_STATUS_ACTIVE[] PROGMEM = "filter:invert(1)";
* RESULT = {"NPResult":0}
* RESULT = {"NPReadL":{"Address":1032,"Data":1612124540}}
*
- * Enable temperature module by setting MBF_PAR_TEMPERATURE_ACTIVE and set it permanently into EEPROM
+ * Enable temperature module by setting MBF_PAR_TEMPERATURE_ACTIVE
+ * and set it permanently into EEPROM
* Backlog NPWrite 0x40F,1;NPSave
* RESULT = {"NPWrite":{"Address":"0x040F","Data":"0x0001"}}
* RESULT = {"NPSave":"Done"}
*
- * Hide auxiliary relay display from main menu by setting bit 3 of MBF_PAR_UICFG_VISUAL_OPTIONS
+ * Hide auxiliary relay display from main menu
+ * by setting bit 3 of MBF_PAR_UICFG_VISUAL_OPTIONS
* NPBit 0x605,3,1
* RESULT = {"NPBit":{"Address":"0x0605","Data":"0x08C8"}}
*
@@ -1060,11 +1236,12 @@ const char HTTP_SNS_NEOPOOL_STATUS_ACTIVE[] PROGMEM = "filter:invert(1)";
* RESULT = {"NPRead":{"Address":1106,"Data":1}}
* RESULT = {"NPReadL":{"Address":1107,"Data":[0,0,86400,0,0,1,0]}} *
*
- * Set filtration interval 1 to daily 9:00 - 12:30 (9:00: 3600 * 9 ≙ 32400 / 12:30 ≙ 3,5h = 12600)
+ * Set filtration interval 1 to daily 9:00 - 12:30
+ * (9:00: 3600 * 9 ≙ 32400 / 12:30 ≙ 3,5h = 12600)
* NPWriteL 0x435,32400 0 86400 12600
* RESULT = {"NPWriteL":{"Address":1077,"Data":[32400,0,86400,12600]}}
*
- *********************************************************************************************/
+ ****************************************************************************/
#define D_PRFX_NEOPOOL "NP"
#define D_CMND_NP_RESULT "Result"
@@ -1096,6 +1273,8 @@ const char HTTP_SNS_NEOPOOL_STATUS_ACTIVE[] PROGMEM = "filter:invert(1)";
#define D_CMND_NP_PHRES "PHRes"
#define D_CMND_NP_CLRES "CLRes"
#define D_CMND_NP_IONRES "IONRes"
+#define D_CMND_NP_SETOPTION "SetOption"
+#define D_CMND_NP_SO "SO"
#ifdef NEOPOOL_EMULATE_GPERH
#define D_CMND_NP_GPERH "gPerh"
#endif
@@ -1129,7 +1308,9 @@ const char kNPCommands[] PROGMEM = D_PRFX_NEOPOOL "|" // Prefix
D_CMND_NP_ONERROR "|"
D_CMND_NP_PHRES "|"
D_CMND_NP_CLRES "|"
- D_CMND_NP_IONRES
+ D_CMND_NP_IONRES "|"
+ D_CMND_NP_SETOPTION "|"
+ D_CMND_NP_SO
#ifdef NEOPOOL_EMULATE_GPERH
"|" D_CMND_NP_GPERH
#endif
@@ -1164,7 +1345,9 @@ void (* const NPCommand[])(void) PROGMEM = {
&CmndNeopoolOnError,
&CmndNeopoolPHRes,
&CmndNeopoolCLRes,
- &CmndNeopoolIONRes
+ &CmndNeopoolIONRes,
+ &CmndNeopoolSetOption,
+ &CmndNeopoolSetOption
#ifdef NEOPOOL_EMULATE_GPERH
,&CmndNeopoolgPerh
#endif
@@ -1172,10 +1355,11 @@ void (* const NPCommand[])(void) PROGMEM = {
-/*********************************************************************************************/
+/****************************************************************************/
void NeoPoolPoll(void) // Poll modbus register
{
+ // called every 250 ms
if (!neopool_poll) {
return;
};
@@ -1196,7 +1380,9 @@ void NeoPoolPoll(void) // Poll modbus register
if (nullptr != buffer) {
uint8_t error = NeoPoolModbus->ReceiveBuffer(buffer, NeoPoolReg[neopool_read_state].cnt); // cnt x 16bit register
-
+#ifdef NEOPOOL_CONNSTAT
+ NeoPoolModbusErrorCount(error);
+#endif
if (0 == error) {
neopool_failed_count = 0;
neopool_error = false;
@@ -1227,6 +1413,9 @@ void NeoPoolPoll(void) // Poll modbus register
AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("NEO: modbus send(%d, %d, 0x%04X, %d)"), NEOPOOL_MODBUS_ADDRESS, NEOPOOL_READ_REGISTER, NeoPoolReg[neopool_read_state].addr, NeoPoolReg[neopool_read_state].cnt);
#endif // DEBUG_TASMOTA_SENSOR
NeoPoolModbus->Send(NEOPOOL_MODBUS_ADDRESS, NEOPOOL_READ_REGISTER, NeoPoolReg[neopool_read_state].addr, NeoPoolReg[neopool_read_state].cnt);
+#ifdef NEOPOOL_CONNSTAT
+ NeoPoolStats.mb_requests++;
+#endif
} else {
if (1 == neopool_send_retry) {
neopool_failed_count++;
@@ -1243,7 +1432,7 @@ void NeoPoolPoll(void) // Poll modbus register
-/*********************************************************************************************/
+/****************************************************************************/
void NeoPoolInit(void) {
NeoPoolSettingsLoad(false);
@@ -1280,6 +1469,9 @@ bool NeoPoolInitData(void)
neopool_error = true;
neopool_power_module_version = 0;
+#ifdef NEOPOOL_CONNSTAT
+ memset(&NeoPoolStats, 0, sizeof(NeoPoolStats));
+#endif
memset(neopool_power_module_nodeid, 0, sizeof(neopool_power_module_nodeid));
for (uint32_t i = 0; i < nitems(NeoPoolReg); i++) {
@@ -1312,7 +1504,7 @@ bool NeoPoolInitData(void)
-/*********************************************************************************************/
+/****************************************************************************/
#ifdef DEBUG_TASMOTA_SENSOR
void NeoPoolLogRW(const char *name, uint16_t addr, uint16_t *data, uint16_t cnt)
@@ -1346,6 +1538,19 @@ void NeoPool250msSetStatus(bool status)
}
}
+#ifdef NEOPOOL_CONNSTAT
+void NeoPoolModbusErrorCount(uint8_t error)
+{
+ if (NeoPoolStats.time < 86400L) {
+ NeoPoolStats.time = Rtc.local_time;
+ }
+ if (error < nitems(NeoPoolStats.mb_results) - 1) {
+ NeoPoolStats.mb_results[error]++;
+ } else {
+ NeoPoolStats.mb_results[nitems(NeoPoolStats.mb_results) - 1]++;
+ }
+}
+#endif
uint8_t NeoPoolReadRegisterData(uint16_t addr, uint16_t *data, uint16_t cnt)
{
@@ -1357,12 +1562,18 @@ uint8_t NeoPoolReadRegisterData(uint16_t addr, uint16_t *data, uint16_t cnt)
*data = 0;
NeoPoolModbus->Send(NEOPOOL_MODBUS_ADDRESS, NEOPOOL_READ_REGISTER, addr, cnt);
+#ifdef NEOPOOL_CONNSTAT
+ NeoPoolStats.mb_requests++;
+#endif
timeoutMS = millis() + cnt * NEOPOOL_READ_TIMEOUT; // Max delay before we timeout
while (!(data_ready = NeoPoolModbus->ReceiveReady()) && millis() < timeoutMS) { delay(1); }
if (data_ready) {
uint8_t *buffer = (uint8_t*)malloc(5+cnt*2);
if (buffer != nullptr) {
uint8_t error = NeoPoolModbus->ReceiveBuffer(buffer, cnt);
+#ifdef NEOPOOL_CONNSTAT
+ NeoPoolModbusErrorCount(error);
+#endif
if (error) {
#ifdef DEBUG_TASMOTA_SENSOR
AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("NEO: addr 0x%04X read data error %d"), addr, error);
@@ -1439,6 +1650,9 @@ uint8_t NeoPoolWriteRegisterData(uint16_t addr, uint16_t *data, uint16_t cnt)
NeoPoolModbus->flush();
NeoPoolModbus->write(frame, numbytes+2);
+#ifdef NEOPOOL_CONNSTAT
+ NeoPoolStats.mb_requests++;
+#endif
timeoutMS = millis() + 1 * NEOPOOL_READ_TIMEOUT; // Max delay before we timeout
while (!(data_ready = NeoPoolModbus->ReceiveReady()) && millis() < timeoutMS) { delay(1); }
@@ -1446,6 +1660,9 @@ uint8_t NeoPoolWriteRegisterData(uint16_t addr, uint16_t *data, uint16_t cnt)
if (data_ready) {
uint8_t buffer[9];
uint8_t error = NeoPoolModbus->ReceiveBuffer(buffer, 1);
+#ifdef NEOPOOL_CONNSTAT
+ NeoPoolModbusErrorCount(error);
+#endif
if (0 != error && 9 != error) { // ReceiveBuffer can't handle 0x10 code result
#ifdef DEBUG_TASMOTA_SENSOR
AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("NEO: addr 0x%04X write data response error %d"), addr, error);
@@ -1523,7 +1740,7 @@ uint8_t NeoPoolWriteRegisterWord(uint16_t addr, uint16_t data)
uint16_t NeoPoolGetCacheData(uint16_t addr, int32_t timeout)
{
- uint16_t data;
+ uint16_t data = 0;
bool datavalid = false;
uint16_t i;
@@ -1583,7 +1800,57 @@ uint16_t NeoPoolGetCacheData(uint16_t addr, int32_t timeout)
uint16_t NeoPoolGetData(uint16_t addr)
{
- return NeoPoolGetCacheData(addr, -1);
+ uint16_t data = NeoPoolGetCacheData(addr, -1);
+
+#ifdef NEOPOOL_RANGE_CHECKS
+ if (NeoPoolSettings.flags.range_check) {
+ for (uint16_t i = 0; i < nitems(NeoPoolRangeCheck); i++) {
+ if (MBF_HIDRO_CURRENT == NeoPoolRangeCheck[i].addr && NEOPOOL_UNDEF_UINT16 == NeoPoolRangeCheck[i].max) {
+ // get hydrolsysis max value
+ uint16_t max = NeoPoolGetCacheData(MBF_PAR_HIDRO_NOM, -1);
+ if (0 != max) {
+ NeoPoolRangeCheck[i].max = max;
+ #ifdef DEBUG_TASMOTA_SENSOR
+ AddLog(LOG_LEVEL_DEBUG, PSTR("NEO: ConnStat - use hydrolysis max = %d"), NeoPoolRangeCheck[i].max);
+ #endif
+ }
+ }
+ if (NeoPoolRangeCheck[i].addr == addr) {
+ uint16_t prev_data = data;
+ // check out of range
+ if (data < NeoPoolRangeCheck[i].min || data > NeoPoolRangeCheck[i].max) {
+ #ifdef NEOPOOL_CONNSTAT
+ NeoPoolStats.value_out_of_range++;
+ #endif
+ // use previous value if defined
+ if (NEOPOOL_UNDEF_UINT16 != NeoPoolRangeCheck[i].prev) {
+ data = NeoPoolRangeCheck[i].prev;
+ } else {
+ // limit to min/max as long as no valid previous value is present
+ if (data < NeoPoolRangeCheck[i].min) {
+ data = NeoPoolRangeCheck[i].min;
+ } else {
+ data = NeoPoolRangeCheck[i].max;
+ }
+ }
+ #ifdef DEBUG_TASMOTA_SENSOR
+ AddLog(LOG_LEVEL_DEBUG, PSTR("NEO: ConnStat - Addr 0x%04X data out of range [%d-%d]: received %d, corrected using %d"),
+ NeoPoolRangeCheck[i].addr,
+ NeoPoolRangeCheck[i].min,
+ NeoPoolRangeCheck[i].max,
+ prev_data,
+ data);
+ #endif
+ }
+ else {
+ // remeber origin value
+ NeoPoolRangeCheck[i].prev = data;
+ }
+ }
+ }
+ }
+#endif // NEOPOOL_RANGE_CHECKS
+ return data;
}
@@ -1711,7 +1978,7 @@ bool NeoPoolIsIonization(void)
}
-/*********************************************************************************************/
+/****************************************************************************/
void NeoPoolAppendModules(void)
{
ResponseAppend_P(PSTR("\"" D_NEOPOOL_JSON_MODULES "\":"));
@@ -1798,13 +2065,13 @@ void NeoPoolShow(bool json)
// pH
if (NeoPoolIspHModule()) {
fvalue = (float)NeoPoolGetData(MBF_MEASURE_PH)/100;
- ResponseAppend_P(PSTR(",\"" D_PH "\":{\"" D_JSON_DATA "\":" NEOPOOL_FMT_PH), NeoPoolSettings.resolution.ph, &fvalue);
+ ResponseAppend_P(PSTR(",\"" D_PH "\":{\"" D_JSON_DATA "\":" NEOPOOL_FMT_PH), NeoPoolSettings.flags.ph, &fvalue);
// S1
float fphmin = (float)NeoPoolGetData(MBF_PAR_PH2)/100;
- ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_MIN "\":" NEOPOOL_FMT_PH), NeoPoolSettings.resolution.ph, &fphmin);
+ ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_MIN "\":" NEOPOOL_FMT_PH), NeoPoolSettings.flags.ph, &fphmin);
float fphmax = (float)NeoPoolGetData(MBF_PAR_PH1)/100;
- ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_MAX "\":" NEOPOOL_FMT_PH), NeoPoolSettings.resolution.ph, &fphmax);
+ ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_MAX "\":" NEOPOOL_FMT_PH), NeoPoolSettings.flags.ph, &fphmax);
// S2
ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_STATE "\":%d"), (NeoPoolGetData(MBF_PH_STATUS) & MBMSK_PH_STATUS_ALARM));
@@ -1840,9 +2107,9 @@ void NeoPoolShow(bool json)
if (NeoPoolIsChlorine()) {
ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_CHLORINE "\":{"));
fvalue = (float)NeoPoolGetData(MBF_MEASURE_CL)/100;
- ResponseAppend_P(PSTR("\"" D_JSON_DATA "\":" NEOPOOL_FMT_CL), NeoPoolSettings.resolution.cl, &fvalue);
+ ResponseAppend_P(PSTR("\"" D_JSON_DATA "\":" NEOPOOL_FMT_CL), NeoPoolSettings.flags.cl, &fvalue);
fvalue = (float)NeoPoolGetData(MBF_PAR_CL1)/100;
- ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_SETPOINT "\":" NEOPOOL_FMT_CL), NeoPoolSettings.resolution.cl, &fvalue);
+ ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_SETPOINT "\":" NEOPOOL_FMT_CL), NeoPoolSettings.flags.cl, &fvalue);
ResponseJsonEnd();
}
@@ -1855,11 +2122,11 @@ void NeoPoolShow(bool json)
if (NeoPoolIsIonization()) {
ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_IONIZATION "\":{"));
fvalue = (float)NeoPoolGetData(MBF_ION_CURRENT);
- ResponseAppend_P(PSTR("\"" D_JSON_DATA "\":" NEOPOOL_FMT_ION), NeoPoolSettings.resolution.ion, &fvalue);
+ ResponseAppend_P(PSTR("\"" D_JSON_DATA "\":" NEOPOOL_FMT_ION), NeoPoolSettings.flags.ion, &fvalue);
fvalue = (float)NeoPoolGetData(MBF_PAR_ION);
- ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_SETPOINT "\":" NEOPOOL_FMT_ION), NeoPoolSettings.resolution.ion, &fvalue);
+ ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_SETPOINT "\":" NEOPOOL_FMT_ION), NeoPoolSettings.flags.ion, &fvalue);
fvalue = (float)NeoPoolGetData(MBF_PAR_ION_NOM);
- ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_MAX "\":" NEOPOOL_FMT_ION), NeoPoolSettings.resolution.ion, &fvalue);
+ ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_MAX "\":" NEOPOOL_FMT_ION), NeoPoolSettings.flags.ion, &fvalue);
ResponseJsonEnd();
}
@@ -1959,19 +2226,38 @@ void NeoPoolShow(bool json)
ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_CL "\":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> (NeoPoolGetData(MBF_PAR_CL_RELAY_GPIO)-1)) & 1);
}
if (0 != NeoPoolGetData(MBF_PAR_CD_RELAY_GPIO)) {
- ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_CD " \":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> NeoPoolGetData(MBF_PAR_CD_RELAY_GPIO)) & 1);
+ ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_CD "\":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> (NeoPoolGetData(MBF_PAR_CD_RELAY_GPIO)-1)) & 1);
}
if (0 != NeoPoolGetData(MBF_PAR_HEATING_GPIO)) {
- ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_HEATING " \":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> NeoPoolGetData(MBF_PAR_HEATING_GPIO)) & 1);
+ ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_HEATING "\":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> (NeoPoolGetData(MBF_PAR_HEATING_GPIO)-1)) & 1);
}
if (0 != NeoPoolGetData(MBF_PAR_UV_RELAY_GPIO)) {
- ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_UV " \":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> NeoPoolGetData(MBF_PAR_UV_RELAY_GPIO)) & 1);
+ ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_UV "\":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> (NeoPoolGetData(MBF_PAR_UV_RELAY_GPIO)-1)) & 1);
}
if (0 != NeoPoolGetData(MBF_PAR_FILTVALVE_GPIO)) {
- ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_FILTVALVE " \":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> NeoPoolGetData(MBF_PAR_FILTVALVE_GPIO)) & 1);
+ ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_RELAY_FILTVALVE "\":%d"), (NeoPoolGetData(MBF_RELAY_STATE) >> (NeoPoolGetData(MBF_PAR_FILTVALVE_GPIO)-1)) & 1);
}
+ ResponseJsonEnd();
- ResponseJsonEndEnd();
+#ifdef NEOPOOL_CONNSTAT
+ if (NeoPoolSettings.flags.conn_stat) {
+ ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_CONNSTAT "\":{"));
+ ResponseAppend_P(PSTR( "\"" D_JSON_TIME "\":\"%s\""), GetDT(NeoPoolStats.time).c_str());
+ ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_CONNSTAT_MB_REQUESTS "\":%d"), NeoPoolStats.mb_requests);
+ uint32_t mb_sum = 0;
+ for(uint16_t i = 0; i < nitems(NeoPoolStats.mb_results); i++) {
+ char mbresult[32];
+ GetTextIndexed(mbresult, sizeof(mbresult), i, kNeoPoolMBResults);
+ ResponseAppend_P(PSTR(",\"%s\":%d"), mbresult,NeoPoolStats.mb_results[i]);
+ mb_sum += NeoPoolStats.mb_results[i];
+ }
+ ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_CONNSTAT_MB_RESULTS "\":%d"), NeoPoolStats.mb_requests - mb_sum);
+ ResponseAppend_P(PSTR(",\"" D_NEOPOOL_JSON_CONNSTAT_DATA_OOR "\":%d"), NeoPoolStats.value_out_of_range);
+ ResponseJsonEnd();
+ }
+#endif
+
+ ResponseJsonEnd();
#ifdef USE_WEBSERVER
} else {
@@ -2063,11 +2349,11 @@ void NeoPoolShow(bool json)
if (NeoPoolIspHModule()) {
// Data
fvalue = (float)NeoPoolGetData(MBF_MEASURE_PH)/100;
- WSContentSend_PD(HTTP_SNS_NEOPOOL_PH, neopool_type, NeoPoolSettings.resolution.ph, &fvalue);
+ WSContentSend_PD(HTTP_SNS_NEOPOOL_PH, neopool_type, NeoPoolSettings.flags.ph, &fvalue);
WSContentSend_PD(PSTR(" "));
// S1
float fphmax = (float)NeoPoolGetData(MBF_PAR_PH1)/100;
- ext_snprintf_P(stemp, sizeof(stemp), PSTR(NEOPOOL_FMT_PH), NeoPoolSettings.resolution.ph, &fphmax);
+ ext_snprintf_P(stemp, sizeof(stemp), PSTR(NEOPOOL_FMT_PH), NeoPoolSettings.flags.ph, &fphmax);
WSContentSend_PD(HTTP_SNS_NEOPOOL_STATUS, bg_color,
(((uint16_t)(fvalue*10) > (uint16_t)(fphmax*10)) ? HTTP_SNS_NEOPOOL_STATUS_ACTIVE : HTTP_SNS_NEOPOOL_STATUS_INACTIVE), stemp);
WSContentSend_PD(PSTR(" "));
@@ -2117,7 +2403,7 @@ void NeoPoolShow(bool json)
// Chlorine
if (NeoPoolIsChlorine()) {
fvalue = (float)NeoPoolGetData(MBF_MEASURE_CL)/100;
- WSContentSend_PD(HTTP_SNS_NEOPOOL_PPM_CHLORINE, neopool_type, NeoPoolSettings.resolution.ph, &fvalue);
+ WSContentSend_PD(HTTP_SNS_NEOPOOL_PPM_CHLORINE, neopool_type, NeoPoolSettings.flags.ph, &fvalue);
}
// Conductivity
@@ -2136,7 +2422,7 @@ void NeoPoolShow(bool json)
);
fvalue = (float)NeoPoolGetData(MBF_ION_CURRENT);
WSContentSend_PD(HTTP_SNS_NEOPOOL_IONIZATION, neopool_type,
- NeoPoolSettings.resolution.ion, &fvalue,
+ NeoPoolSettings.flags.ion, &fvalue,
stemp,
NeoPoolGetData(MBF_ION_STATUS) & MBMSK_ION_STATUS_LOW ? PSTR(" " D_NEOPOOL_LOW) : PSTR("")
);
@@ -2209,9 +2495,9 @@ void NeoPoolShow(bool json)
-/*********************************************************************************************\
+/****************************************************************************\
* Command implementation
-\*********************************************************************************************/
+\****************************************************************************/
void NeopoolReadWriteResponse(uint16_t addr, uint16_t *data, uint16_t cnt, bool fbits32, int16_t bit)
{
@@ -2607,7 +2893,7 @@ void CmndNeopoolLight(void)
if (POWER_TOGGLE == timer_val[XdrvMailbox.payload]) {
XdrvMailbox.payload = ((data >>= (neopool_light_relay - 1)) & 1) ? POWER_OFF : POWER_ON;
}
- NeoPoolWriteRegisterWord(MBF_PAR_TIMER_BLOCK_LIGHT_INT + MBV_TIMER_OFFMB_TIMER_ENABLE, timer_val[XdrvMailbox.payload]);
+ NeoPoolWriteRegisterWord((uint16_t)MBF_PAR_TIMER_BLOCK_LIGHT_INT + (uint16_t)MBV_TIMER_OFFMB_TIMER_ENABLE, timer_val[XdrvMailbox.payload]);
NeoPoolWriteRegisterWord(MBF_EXEC, 1);
// data >>= (neopool_light_relay - 1);
ResponseCmndStateText(XdrvMailbox.payload);
@@ -2677,7 +2963,7 @@ void CmndNeopoolLightPrgEnd(void)
// exit manual ctrl
NeoPoolWriteRegisterWord(MBF_SET_MANUAL_CTRL, 0);
// switch light on to finish prg sequence
- NeoPoolWriteRegisterWord(MBF_PAR_TIMER_BLOCK_LIGHT_INT + MBV_TIMER_OFFMB_TIMER_ENABLE, MBV_PAR_CTIMER_ALWAYS_ON);
+ NeoPoolWriteRegisterWord((uint16_t)MBF_PAR_TIMER_BLOCK_LIGHT_INT + (uint16_t)MBV_TIMER_OFFMB_TIMER_ENABLE, MBV_PAR_CTIMER_ALWAYS_ON);
NeoPoolWriteRegisterWord(MBF_EXEC, 1);
}
@@ -2746,7 +3032,7 @@ void CmndNeopoolpHMin(void)
return;
}
if (CmndNeopoolSetParam(MBF_PAR_PH2, 100, 0, (float)data/100)) {
- CmndNeopoolGetParam(MBF_PAR_PH2, 100, NeoPoolSettings.resolution.ph);
+ CmndNeopoolGetParam(MBF_PAR_PH2, 100, NeoPoolSettings.flags.ph);
}
} else {
NeopoolCmndError();
@@ -2764,7 +3050,7 @@ void CmndNeopoolpHMax(void)
return;
}
if (CmndNeopoolSetParam(MBF_PAR_PH1, 100, (float)data/100, 14)) {
- CmndNeopoolGetParam(MBF_PAR_PH1, 100, NeoPoolSettings.resolution.ph);
+ CmndNeopoolGetParam(MBF_PAR_PH1, 100, NeoPoolSettings.flags.ph);
}
} else {
NeopoolCmndError();
@@ -2870,7 +3156,7 @@ void CmndNeopoolIonization(void)
return;
}
if (CmndNeopoolSetParam(MBF_PAR_ION, 1, 0, (float)data)) {
- CmndNeopoolGetParam(MBF_PAR_ION, 1, NeoPoolSettings.resolution.ion);
+ CmndNeopoolGetParam(MBF_PAR_ION, 1, NeoPoolSettings.flags.ion);
}
} else {
NeopoolCmndError();
@@ -2882,7 +3168,7 @@ void CmndNeopoolChlorine(void)
{
if (NeoPoolIsChlorine()) {
if (CmndNeopoolSetParam(MBF_PAR_CL1, 100, 0, 10)) {
- CmndNeopoolGetParam(MBF_PAR_CL1, 100, NeoPoolSettings.resolution.cl);
+ CmndNeopoolGetParam(MBF_PAR_CL1, 100, NeoPoolSettings.flags.cl);
}
} else {
NeopoolCmndError();
@@ -2959,27 +3245,38 @@ void CmndNeopoolOnError(void)
void CmndNeopoolPHRes(void)
{
if (XdrvMailbox.data_len && XdrvMailbox.payload >= 0 && XdrvMailbox.payload <= 3) {
- NeoPoolSettings.resolution.ph = XdrvMailbox.payload;
+ NeoPoolSettings.flags.ph = XdrvMailbox.payload;
}
- ResponseCmndNumber(NeoPoolSettings.resolution.ph);
+ ResponseCmndNumber(NeoPoolSettings.flags.ph);
}
void CmndNeopoolCLRes(void)
{
if (XdrvMailbox.data_len && XdrvMailbox.payload >= 0 && XdrvMailbox.payload <= 3) {
- NeoPoolSettings.resolution.cl = XdrvMailbox.payload;
+ NeoPoolSettings.flags.cl = XdrvMailbox.payload;
}
- ResponseCmndNumber(NeoPoolSettings.resolution.cl);
+ ResponseCmndNumber(NeoPoolSettings.flags.cl);
}
void CmndNeopoolIONRes(void)
{
if (XdrvMailbox.data_len && XdrvMailbox.payload >= 0 && XdrvMailbox.payload <= 3) {
- NeoPoolSettings.resolution.ion = XdrvMailbox.payload;
+ NeoPoolSettings.flags.ion = XdrvMailbox.payload;
+ }
+ ResponseCmndNumber(NeoPoolSettings.flags.ion);
+}
+
+
+void CmndNeopoolSetOption(void)
+{
+ if (XdrvMailbox.index >= 0 && XdrvMailbox.index <= 1) {
+ if (XdrvMailbox.data_len && XdrvMailbox.payload >= 0 && XdrvMailbox.payload <= 1) {
+ bitWrite(NeoPoolSettings.flags.data, XdrvMailbox.index + 6, XdrvMailbox.payload);
+ }
+ ResponseCmndIdxChar(GetStateText(bitRead(NeoPoolSettings.flags.data, XdrvMailbox.index + 6)));
}
- ResponseCmndNumber(NeoPoolSettings.resolution.ion);
}
@@ -3059,9 +3356,11 @@ void NeoPoolSettingsLoad(bool erase) {
memset(&NeoPoolSettings, 0x00, sizeof(NeoPoolSettings));
NeoPoolSettings.crc32 = GetCfgCrc32((uint8_t*)&NeoPoolSettings +4, sizeof(NeoPoolSettings) -4);
NeoPoolSettings.version = NEOPOOL_SETTING_VERSION;
- NeoPoolSettings.resolution.ph = NEOPOOL_DEFAULT_PHRES;
- NeoPoolSettings.resolution.cl = NEOPOOL_DEFAULT_CLRES;
- NeoPoolSettings.resolution.ion = NEOPOOL_DEFAULT_IONRES;
+ NeoPoolSettings.flags.ph = NEOPOOL_DEFAULT_PHRES;
+ NeoPoolSettings.flags.cl = NEOPOOL_DEFAULT_CLRES;
+ NeoPoolSettings.flags.ion = NEOPOOL_DEFAULT_IONRES;
+ NeoPoolSettings.flags.range_check = 1;
+ NeoPoolSettings.flags.conn_stat = 1;
NeoPoolSettings.result = NEOPOOL_DEFAULT_RESULT;
NeoPoolSettings.npteleperiod = NEOPOOL_DEFAULT_NPTELEPERIOD;
@@ -3110,9 +3409,9 @@ void NeoPoolSettingsSave(void) {
#endif // USE_UFILESYS
}
-/*********************************************************************************************\
+/****************************************************************************\
* Interface
-\*********************************************************************************************/
+\****************************************************************************/
bool Xsns83(uint32_t function)
{
diff --git a/tasmota/tasmota_xx2c_global/xdrv_interface.ino b/tasmota/tasmota_xx2c_global/xdrv_interface.ino
index 464a345ae..b68c53c8e 100644
--- a/tasmota/tasmota_xx2c_global/xdrv_interface.ino
+++ b/tasmota/tasmota_xx2c_global/xdrv_interface.ino
@@ -1065,6 +1065,10 @@ const uint8_t kXdrvList[] = {
uint32_t Xdrv_active[4] = { 0 };
+bool XdrvActive(uint32_t drv_index) {
+ return bitRead(Xdrv_active[drv_index / 32], drv_index % 32);
+}
+
void XsnsDriverState(void) {
ResponseAppend_P(PSTR(",\"Drivers\":\"")); // Use string for future enable/disable signal
for (uint32_t i = 0; i < sizeof(kXdrvList); i++) {
@@ -1073,7 +1077,7 @@ void XsnsDriverState(void) {
#else
uint32_t driverid = kXdrvList[i];
#endif
- ResponseAppend_P(PSTR("%s%s%d"), (i) ? "," : "", (!bitRead(Xdrv_active[i / 32], i % 32)) ? "!" : "", driverid);
+ ResponseAppend_P(PSTR("%s%s%d"), (i) ? "," : "", (!XdrvActive(i)) ? "!" : "", driverid);
}
ResponseAppend_P(PSTR("\""));
}
@@ -1130,6 +1134,20 @@ bool XdrvCallDriver(uint32_t driver, uint32_t function) {
* Function call to all xdrv
\*********************************************************************************************/
+bool XdrvCallNextJsonAppend(void) {
+ static int xdrv_index = -1;
+
+ do {
+ xdrv_index++;
+ if (xdrv_index == xdrv_present) {
+ xdrv_index = -1;
+ return false;
+ }
+ } while (!XdrvActive(xdrv_index));
+ xdrv_func_ptr[xdrv_index](FUNC_JSON_APPEND);
+ return true;
+}
+
bool XdrvCall(uint32_t function) {
bool result = false;
diff --git a/tasmota/tasmota_xx2c_global/xnrg_interface.ino b/tasmota/tasmota_xx2c_global/xnrg_interface.ino
index 60c45a5d1..769096686 100644
--- a/tasmota/tasmota_xx2c_global/xnrg_interface.ino
+++ b/tasmota/tasmota_xx2c_global/xnrg_interface.ino
@@ -150,7 +150,11 @@ bool (* const xnrg_func_ptr[])(uint32_t) = { // Energy driver Function Pointer
#endif
#ifdef XNRG_32 // Reserved for use by xdrv_16_tuyamcu.ino
- &Xnrg32
+ &Xnrg32,
+#endif
+
+#ifdef XNRG_33 // Reserved for use by xsns_02_analog.ino
+ &Xnrg33
#endif
};
diff --git a/tasmota/tasmota_xx2c_global/xsns_interface.ino b/tasmota/tasmota_xx2c_global/xsns_interface.ino
index 3c01b39c6..ed2ed0a27 100644
--- a/tasmota/tasmota_xx2c_global/xsns_interface.ino
+++ b/tasmota/tasmota_xx2c_global/xsns_interface.ino
@@ -1094,21 +1094,18 @@ void XsnsSensorState(uint32_t sensor_list) {
* Function call to all xsns
\*********************************************************************************************/
-bool XsnsNextCall(uint32_t function, uint8_t &xsns_index) {
- if (0 == xsns_present) {
- xsns_index = 0;
- return false;
- }
+bool XsnsCallNextJsonAppend(void) {
+ static int xsns_index = -1;
- xsns_index++;
- if (xsns_index == xsns_present) { xsns_index = 0; }
- uint32_t max_disabled = xsns_present;
- while ((!XsnsEnabled(0, xsns_index) || ((FUNC_WEB_SENSOR == function) && !XsnsEnabled(1, xsns_index))) && max_disabled--) { // Perform at least one sensor
+ do {
xsns_index++;
- if (xsns_index == xsns_present) { xsns_index = 0; }
- }
-
- return xsns_func_ptr[xsns_index](function);
+ if (xsns_index == xsns_present) {
+ xsns_index = -1;
+ return false;
+ }
+ } while (!XsnsEnabled(0, xsns_index));
+ xsns_func_ptr[xsns_index](FUNC_JSON_APPEND);
+ return true;
}
bool XsnsCall(uint32_t function) {
diff --git a/tools/decode-status.py b/tools/decode-status.py
index 2b000d999..0f55bfbe3 100755
--- a/tools/decode-status.py
+++ b/tools/decode-status.py
@@ -305,7 +305,7 @@ a_features = [[
"USE_HC8","USE_HDMI_CEC","USE_BLE_ESP32","USE_MATTER_DEVICE"
],[
"USE_MAGIC_SWITCH","USE_PIPSOLAR","USE_GPIO_VIEWER","USE_AMSX915",
- "USE_SPI_LORA","USE_SPL06_007","","",
+ "USE_SPI_LORA","USE_SPL06_007","USE_QMP6988","USE_WOOLIIS",
"","","","",
"","","","",
"","","","",
@@ -339,7 +339,7 @@ else:
obj = json.load(fp)
def StartDecode():
- print ("\n*** decode-status.py v13.4.0.1 by Theo Arends and Jacek Ziolkowski ***")
+ print ("\n*** decode-status.py v14.1.0.1 by Theo Arends and Jacek Ziolkowski ***")
# print("Decoding\n{}".format(obj))
diff --git a/tools/lv_gpio/lv_gpio_enum.h b/tools/lv_gpio/lv_gpio_enum.h
index ba2c64497..ad7df0fb7 100644
--- a/tools/lv_gpio/lv_gpio_enum.h
+++ b/tools/lv_gpio/lv_gpio_enum.h
@@ -365,5 +365,6 @@ RN2XX3_TX = GPIO_RN2XX3_TX
RN2XX3_RX = GPIO_RN2XX3_RX
RN2XX3_RST = GPIO_RN2XX3_RST
+WOOLIIS_RX = GPIO_WOOLIIS_RX
SENSOR_END = GPIO_SENSOR_END